SNES Classic

A single board computer that runs a customised Linux Kernel armv71 3.4.110 (3.4.113 ?), on an ARM-based system-on-a-chip (SOC).

The SOC used on the SNES Classic is from the Sunxi family of SOCs, from Allwinnner, specifically the Allwinner R16 (previously called A33) SOC.

It contains a non-volatile flash memory of 512 MiB, and a volatile DDR3 memory of 256 MiB. It was developed by Nintendo European Research and Development (N.E.R.D.), an Europe-based subsidiary of Nintendo.

It seems that Clover was the internal codename of both the NES and the SNES Classic while in-developement at N.E.R.D.. That's where the CLV letters from the identification codes come from.

When connected to a PC (via a standard USB to microUSB cable), the SNES Classic will be recognized as either  (when in normal operation state), or   (when in FEL mode, and with the approppriate driver installed).

Stock games
All stock games with the exception of Earthbound and Super Mario RPG (what about star fox 2?) are exactly the same versions released previously on the Wii U's Virtual Console.

Cheats and codes.

Files structure
Stock games are located in /var/squashfs

Custom added games are saved in /var/lib/hakchi/games (or inside a .storage folder if the option linked-sync is active). They can also be in /usr/share/games (?).

Save games are saved onto: /var/lib/clover/profiles/0

Autoplay
It allows for a recorded session to be automatically displayed after a while of inactibity on the menu.

How to create:

Autoplay database: Share yours! https://github.com/smitchell6879/hakchi_classic_demos

Autoplay automatic creator: https://www.reddit.com/r/miniSNESmods/comments/7wxvv2/autoplay_generator_game_for_snescesuper_famicom/

Epilepsy protection
The SNES Classic has a epilepsy protection feature. Instead of rapidly blinking lights, there will be usually only one longer blink.

User interface overview
The SNES Classic menu works best with a minimun of 12 "itens" (games, folders etc). With less than that, there will be small graphical glitches, like the menu will appear to "jump", or the items appear and dissapear at the sides.

Image options
CRT, an image with aspect ratio of exactly 4 by 3, plus an image processing trying to replicate the look of a CRT TV.

4:3, an image with aspect ratio of exactly 4 by 3.

Pixel-perfect, called what could be translated as "original resolution" in the system's other laguages.

Factory reset
It will delete save data of all games, as well as custom settings like language. It also makes Star Fox 2 unavailable again.

Games' manuals
The manuals for he games are available on the Nintendo website in pdf files, except for Star Fox 2, that is actually disponible as a online web manual?

Borders
The SNES Classic comes with 12? borders. It is possible to add others through Hakchi2 CE. They are properly for the SNES aspect ratio.

Canoe
Canoe is the stock SNES emulator developed by Nintendo European Research and Development (N.E.R.D.).

sfrom file format
Technically, Canoe runs modified versions of SNES games. An unmodified SNES game will not run on Canoe, and a Canoe game will not run on a SNES. It could be argued that therefore the SNES Classic is not a SNES emulator, rather a new platform.

SNES games usually are files with the .sfc extension (other older extensions exist as well, such as .smc). SNES Classic games, on the other hand, have the .sfrom file extension. Such extension is also used on the Wii U Virtual Console, on the 3DS Virtual Console.

Sfroms have a header of 48 (0x30) bytes. This header is different from the internal header of .sfc games. Because of this sfrom header, the internal header of sfroms is offset by 48 (0x30) bytes in comparison with the internal header of .sfc files. So, instead of addresses 7FC0 for LoRom, and FFC0 for HiROM games, the internal header for sfroms is located at adressess 7FF0 for LoROM, and FFF0 for HiROM games.

sfrom files also contain a footer ?

Saves
The save file created by Canoe is different from that created by other emulators. Canoe saves have a .sram file extension, while most emulators use a .srm file extension.

Common .srm files can be converted to Canoe .sram save files by adding to the end of the .srm file the SHA-1 checksum of the unaltered .srm file, then renaming it accordingly to cartridge.sram. It can be done in a hex editor like HxD. This method seems to not always work. SFROM Tool also can do this.

Whatsmore, some emulators like Snes9x on Windows may still accept Canoe saves, given that the saves in question are named accordingly.

Canoe save files can be converted to common .srm files by removing the last 20 bytes of the .sram file,what can be done with a hex editor like HxD, and renaming it accordingly. SFROM Tool also has this feature built-in.

Preset ids
Preset ids are codes (numbers) that identify a certain game. Based on this number, Canoe will enable or disable some settings (i.e., Canoe will run the game differently, with possible more or less optimisations). Hakchi2 CE detectes and applies automatically preset ids in some cases. Using SFROM Tool is another way to set a specific preset id for a game.

DarkAkuma studied the subject and tested preset ids for various games. He maintains a spreadsheet with the information gathered.

On Hakchi2 CE, press Ctrl+Alt+E to show up a game informations, where the user can change the preset id for that game.

Problems
Some problems are known. The stock emultor on the SNES Classic, Canoe, has issues with many games. One of the most talked about issues is a glitch in Super Mario World 2 - Yoshi's Island on the level 1-7 Touch Fuzzy Get Dizzy, that when touching a fuzzy a background layer will disappear for a brief moment.

Compatibility spreadsheets
In order to know which games are compatible with Canoe, and which games present issues (and what these issues are), as well as for research purposes, individuals compiled different compatibility spreadsheets.

Compatibility list maintained by Demi (?). Includes licensed and some unlicensed games. It contains links for the required patches, alongside further instructions to get the game running, when necessary. Also includes metadata information for most games.

Compatibility list maintaned by Robin64, this list separates games by region, and includes rom hacks and original unlicensed titles. It assumes the use of sfrom Tool, and Robin64's patch pack (see Notes tab on the link for more information).

Soft reset
By pressing and holding down the buttons select, start, L, and R at the same time for a couple instants will "soft reset" the game, i.e., the game will restart from its beginning, like if it was just loaded (the SNES Classic is not taken to the main menu, the same game is continuosly kept loaded, only resetted).

FEL mode

 * external link: http://linux-sunxi.org/Nintendo_NES_Classic_Edition

FEL mode is a subroutine of Sunxi SOCs. No one knows what FEL stands for.

Kernel
A kernel is the core of an operating system. The SNES Classic runs a customised Linux kernel. As such, it is almost entirely open software, however, it contains a decription key for NANDb, what makes debatable if it is legal or not to distribute the SNES CLassic kernel.

These are the known Super Famicom / Super Nintendo Classic (Mini) kernels:

kernel-dp-shvc-release-v2.0.12-0-gbff4fb3.img

kernel-dp-shvc-release-v2.0.14-0-gd8b65c6.img

kernel-dp-sneseur-release-v2.0.13-0-g9dca6c5.img

kernel-dp-sneseur-release-v2.0.14-0-gd8b65c6.img

kernel-dp-sneseur-release-v2.0.7-0-geb2b275.img

kernel-dp-snesusa-release-v2.0.13-0-g9dca6c5.img

kernel-dp-snesusa-release-v2.0.14-0-gd8b65c6.img

kernel-dp-snesusa-release-v2.0.7-0-geb2b275.img

shvc = Japan

sneseur = Europe

snesusa = US

It is not known the differences between each revisions for a same region. Apparently ll systems from a certain region can run any kernel of said region without a problem.

Nintendo
The SNES Classic comes with 2 gamepads styled on a layout based on the original SNES gamepad. Their development codename is clovercon, and they utilize I2C protocol of communication. It differs from the late gamepad revision that it doesn't have depth etching of the Nintendo logo. It is very similar to the gamepad offered to subscribers of Club Nintendo on the 2010's.
 * Gamepads

The SNES Classic is also compatible (and has additional features(or only one?)) with the Wii's Classic Controller (and Classic Controller Pro?)

a book with interviews, licensed by Nintendo and placeholder
 * Prima Games's book

https://primagames.com/games/nintendo-snes-classics/guides/playing-with-super-power-nintendo-snes-classics-eguide

Third-party
Peripherals not made nor licensed by Nintendo.

Nincade are bluetooth boards for the (S)NES Classic. They allow for the connection of bluetooth gamepads. They maintain the exterior aspect of the SNES Classic intact.
 * Nincade

The drivers/firmware seem to have been recently updated? Retro Receivers (receivers with the Wii-style connector) can be plugged to an OTG adapter by means of an USB to microUSB cable.
 * 8bitdo

Instructions on how to properly set up an 8bitdo gamepad for usage on the SNES Classic:
 * Full Compatibility of analog sticks and L1 R1 L2 R2
 * correct setup for near full usage on a NES mini / SNES mini
 * Any idea how to get right analog to work for N64 games?
 * L2 and R2 buttons won't work

Inateck was a solid option, but since 2019 newer versions are not compatible with the SNES Classic. It is possible to use a simple OTG adapter together with a USB hub for additional ports, instead of an OTG hub.
 * USB OTG adapters and hubs

3D printable: https://www.thingiverse.com/thing:2560225
 * Miniaturized placeholder cartridges

designed for retroflag ? https://pt.aliexpress.com/item/4000150842134.html?spm

Hidden message
There is a hidden message on the SNES Classic, in, not accessible by normal usage. It was speculated that this message was intended for hackers, or even an invite for the hacking of the SNES Classic. It is possible that the message (in English) was left in the spirit of omamori.

Amplified image
By connecting a keyborad through an OTG adapter, and pressing S while on the main menu, the image will be zoomed into. It is not known what this characteristic is for.

Cooling modification
It is possible to improve the SNES Classic's cooling capabilities as outlined here: https://www.reddit.com/r/miniSNESmods/comments/e5tzoh/heat_sink_modification_to_help_with_temps_while/

Thermal pads can be substituted by thermal paste.