Skip to content
Alexey 'Cluster' Avdyukhin edited this page Mar 4, 2018 · 56 revisions

Q: What is it?

A: This application can add more games to your Nintendo Classic Mini console: NES, Famicom, SNES or Super Famicom. All you need is to connect it to PC via microUSB cable. No soldering, no disassembling.

Q: So you were the first to hack the NES Classic Mini?

A: No! It was my Russian сomrade, madmonkey, who first published a successful hack of the the NES Classic Mini. He created the original “hakchi” tool. However, it was not very user-friendly, so I decided to create a tool which is simple to use by anyone--not only Linux users. I named it “hakchi2” because I don’t like to come up with names. So my first version was a 2.0 release :)

Q: How do I use the tool?

A: Basically you just need to run this application, press “Add more games”, select some game ROMs and press “Synchronize”. The application will guide you through this process.

Q: How is it working?

A: You don’t need to worry about it. But if you really want to know it’s using FEL mode. FEL is a low-level subroutine contained in the BootROM on Allwinner devices. It is used for initial programming and recovery of devices using USB. So we can upload some code into RAM and execute it. In this way we can read Linux kernel (yes, NES Mini runs on Linux), write kernel or execute kernel from memory without writing it to flash. So we can dump kernel image of NES Mini, unpack it, add some games and script which will copy them to flash, repack, upload and execute. But games directory is on read only partition. So we need also to create and flash custom kernel with special script that creates sandbox folder on writable partition and mounts it over original games folder. So your original files are safe. You can’t delete or harm original files in any way. For kernel patching my application just executing other applications, that’s why there is “tools” folder.

Also you can watch video about hakchi2 creation: https://www.youtube.com/watch?v=ApHI_hPv2z4 (enable English subtitles). Second video: https://www.youtube.com/watch?v=ZJRx289keQ4 (also with English subtitles).

Q: Where can I get games?

A: Dump them from cartridges you bought :) Or use Google. It's not legit to share games.

Q: My PC can't detect my NES/SNES Mini! Why?

A: First of all, check Device Manager and find you console there. If you can't find it, it's hardware problem, try other cable/port. Otherwise make sure that driver is installed and working correctly. If it's not installed, try to disable Windows driver signature check or try to install driver using Zadig util: http://zadig.akeo.ie/

If it was detected before but can't be detected now, make sure that you are NOT holding reset button when hakchi2 doesn't asks to do it. You need to hold reset only to flash kernel.

Q: Which games are supported on SNES/Super Famicom?

A: SNES Mini uses it's own ROM format for SNES games, so usual .sfc/.smc ROMs must be converted first, hakchi2 will do it automatically. But only ~75% of games will work correctly because SNES Mini's internal emulator was made to run only 21 games. For problem games you can install and use 3rd party emulator (see below).

Q: Which games are supported on NES/Famicom?

A: If you just want to enable support for near all games, read the next question. But if you want to satisfy your curiosity and thirst for knowledge... First of all, it depends on game's mapper. Mapper is hardware stored inside game cartridge, so emulator must emulate not only NES/Famicom hardware but mapper (cartridge's hardware) too. But there are hundreds of different mappers, many pirate/unlicensed mappers are not discovered ant documented at all. But NES Mini's emulator can emulate most popular mappers. My hakchi2 detects unsupported mapper automatically and will warn you. It still can add unsupported ROMs but the games likely will not work without additional modding.

At this time, it is confirmed that the NES Mini's emulator can run these mappers:

  • 0 (NROM) - very simple games like Ice Climber, Pac-Man, etc.
  • 1 (MMC1) - many good games, this is the second most popular mapper.
  • 2 (UxROM - UNROM/UOROM) - games like Castlevania, Contra, Duck Tales, etc.
  • 3 (CNROM) - mostly simple games but with heavy graphics like Adventure Island, Friday The 13th, etc.
  • 4 (MMC3) - most popular mapper, used by a huge bunch of great games.
  • 5 (MMC5) - very complex and the most powerful mapper on NES, used only by Castlevania 3 and a few Japanese games. Is there at least one default game using it? I’m surprised that NES Mini can emulate it.
  • 7 (AxROM - ANROM/AMROM/etc.) - simple mapper used by games like Battletoads.
  • 9 (MMC2) - used only by Punch Out!!
  • 10 (MMC4) - used by a few Japanese games.
  • 86 - some Japanese games.
  • 87 - some Japanese games.
  • 184 - some... games
  • Famicom Disk System images - Japanese ROMs with .fds extension, like original Super Mario Bros. 2, Doki Doki Panic, Japanese version of Metroid, etc.

Also, if you patch unsupported game with a mapper hack/patch/conversion, this should work. There are many MMC3 patches over the Internet.

But even when a mapper is supported, some games are not working well without patches. The emulator in the NES Mini was tested only on default 30 games and actually sucks. Known problem games:

  • Battletoads - crashed on second level. Patch available: http://www.romhacking.net/hacks/2528/
  • Robocop 3 - it should work but not working at all. MMC3 port is working fine. There is quite a bit of weird code in this game. I created my own patch.
  • Snow Bros. - When the CPU writes to the serial port on consecutive cycles, the MMC1 ignores all writes but the first. This happens when the 6502 executes read-modify-write (RMW) instructions, such as DEC and ROR, by writing back the old value and then writing the new value on the next cycle. It's very easy to fix. I created my own patch.
  • Bill & Ted's Excellent Adventure - same as Snow Bros. My patch .
  • Startropics II - actually, it uses the MMC6 mapper which is very similar to MMC3. The only difference is PRG protection. It's very easy to create a patch. This is mine: (http://clusterrr.com/roms/nes-patches/Startropics%20II%20-%20Zoda's%20Revenge%20(U)%20[!]_MMC3.ips)[patch].

Those games will be automatically patched since version 2.09. Please feel free to send me your patches.

Also it's possible to install 3rd-party emulator (see below).

Q: Hey! I know that NES/SNES Mini can run those unsupported games. Also I know that it can run games for other consoles like GBA, Genesis and ever N64!

A: It's true. Since version 2.09 it's possible to install user mods and other emulators. There is our project with RetroArch emulator module: https://github.com/ClusterM/retroarch-clover/releases

Just download "retroarch_with_cores.zip", drag and drop it on hakchi2's window and follow instructions. You can find more info on RetroArch's repo: https://github.com/ClusterM/retroarch-clover/

Q: I want to run game on RetroArch instead of original emulator, how to do it?

A: Select game and edit "command line", just append "--retroarch" to the end of it, after space, without quotes.

Q: Where can I find a list of games with mappers for NES?

A: http://bootgod.dyndns.org:7777 and http://tuxnes.sourceforge.net/nesmapper.txt

Q: Can I play European/PAL games?

A: NES/SNES Mini's default emulator can emulate only NTSC NES. All European NES/SNES Minis actually the same as USA versions, so they are running NTSC versions of games. So you many PAL games will not work correctly. It's highly recommended to use “(U)” and “(J)” ROMs if possible. But of course 3rd-party emulators can emulate PAL.

Q: How many games can be uploaded to NES/SNES Mini?

A: Writable partition of NES Mini is 384 megabytes in size, writable partition of SNES Mini is 290MB. It contains save-states, settings and all data installed using hakchi. So max free space varies and depends on many factors. Version 2.15 introduces memory calculator. It can show real available memory space using this formula: [current free space] + [size of installed games] - [reserved]. [reserved] space is 10MB on NES mini and 30MB on SNES Mini (because SNES Mini's save-states are huge). Don't be very greedy - leave some free space for save-states. Also you can install "extra_space" mod on SNES Mini to move your save-states to other unused 50MB partition, it will decrease [reserved] space to 5MB.

But the shell is designed to show only 30 games and there are some issues with other numbers of games:

  • The thumbnail bar at the bottom of screen can show only ~45 covers. Other covers will be drawn beyond bounds of the screen.
  • The shell can show up to ~90 games on NES Mini and only ~50 games on SNES Mini without glitches, otherwise you'll get some C8 errors.
  • Having too few games causes problems, too. There are should be at least 12 games in the menu to show them without glitches. Version 2.11 introduces a folder feature to avoid those problems. It's recommended to split you games in folders to show only 30-40 games per screen.

Q: Why I get error C8 whey trying to power off console?

A: Seems like previous questions contains answer.

Q: Can I extend memory somehow?

A: Yes, you can use external USB storage, check this guide: https://github.com/ClusterM/hakchi2/wiki/USB-storage-guide

Q: Why my NES Mini lost some space available for games? I used to install X megabytes of games early but I can't know!

A: Writable partition can be filled not only with games. First of all, check save-states using Save-States manager. Remove unwanted ones. Then check for installed mods. If you still can't find flash memory leak, use FTP Server (available since version 2.16) and check /var/lib folder - it contains all writable data. Maybe there are some unused large file. But think twice before deleting something. Remove them on your own risk. You can't brick your NES Mini that way but you can brick some settings or save-states.

Q: It says that the MD5 checksum is unknown when I'm trying to flash custom kenel! What I need to do?

A: There are two possible reasons:

  • You have some unique unknown revision of NES Mini, please send your kernel dump in this case.
  • Some custom kernel already flashed.

It's safe to continue in both cases.

Q: How does the folder feature work? I want other folders structure!

A: By default hakchi2 using "Original games -> custom games in subfolders" scheme. It will use best way to sort games automatically. But you can select other folders scheme in Settings menu. Since version 2.12 you can create any custom folder structure using Folder Manager. It's possible to edit folder names, images, etc. It will be shown every time before games uploading if enabled.

Q: How to use multiple console at once?

A: If you have different type consoles (NES/SNES/Famicom/Super Famicom), you can select it via Settings menu, hakchi2 stores separate profiles for different consoles, so you can easily keep different games and settings for different console. Also hakchi2 tries to detect console automatically on connect.

Q: How to download box art for multiple games at once?

A: Select multiple games (you can hold Ctrl to select individual games), do right click and select "Download box art". It will first image on Google.

Q: How to compress/decompress multiple games at once?

A: Same here. Select multiple games (you can hold Ctrl to select individual games), do right click.

Q: How do I delete a game?

A: If you want to delete game from the NES/SNES Mini, uncheck it in the list of games. If you want to delete it from the hakchi2 list, right click on the game and select "Delete".

Q: What about non-Windows users?

A: Mac users can use Parallels for virtualization. Linux users can use Wine, but as of writing USB passthrough is not supported in Wine, thus actual connection to the Mini Classics is not possible.

Q: I got "USB read/write error" or "exec timeout" error. What I need to do?

A: Just try other USB port/cable.

Q: Can I brick my NES Mini?

A: It’s pretty hard to brick it. You can always flash the original kernel back (via the menu). Even if your flashing process was terminated for some reason you just can do it again. But flash memory can typically handle only 100,000 erase cycles for any sector.

Q: I just got a black screen. My NES/SNES Mini is not working anymore! Can you help me?

A: Don't panic. Just flash the original kernel back. Everything should work again. Try to unpack the application and do everything again. Make sure that all files in place and not corrupted.

Q: How can I update hakchi2 to a new version? I don’t want to lose my games, kernel image and settings.

A: For portable version (distributed as .zip file) simply copy all files of the new version into the folder of the old version with replacement. Or just copy folders “dump”, “games” and "config" from the old version to the new version folder.

For non-portable version (distributed as .exe file - web installer) update process is fully automatic. You will be asked to install new version when it's released.

Q: Where non-portable version stores files?

A: Non-portable version (distributed as .exe file - web installer) stores all files (kernel dump, configs, games, etc.) in the "My documents\hakchi2" folder.

Q: How to migrate from portable version to non-portable version without losing settings and games? I want auto-update feature.

A: Install non-portable version and copy "dump", "config" and "games" folders to the "My documents\hakchi2" folder.

Q: I missed my original kernel image :( Where I can find it?

A: You can easily find it on torrent trackers.

Q: Can I turn my NES Mini into Famicom Mini? Or ever SNES Mini? And vice-versa?

A: Yes, there is guide: https://github.com/ClusterM/hakchi2/wiki/Multiboot-guide

Q: Some games are displayed with an incorrect name; some characters are missing. Why?

A: The NES/SNES Mini doesn’t contain some characters in its font, but I created my own font. Don’t forget to enable it in the “Settings” menu (enabled by default).

Q: Can you modify emulator so the combination of buttons on gamepad will trigger reset?

A: I̶t̶ ̶i̶s̶ ̶p̶o̶s̶s̶i̶b̶l̶e̶ ̶i̶n̶ ̶t̶h̶e̶o̶r̶y̶ ̶b̶u̶t̶ ̶n̶e̶e̶d̶ ̶t̶o̶ ̶d̶i̶s̶a̶s̶s̶e̶m̶b̶l̶e̶ ̶b̶i̶n̶a̶r̶y̶ ̶o̶f̶ ̶e̶m̶u̶l̶a̶t̶o̶r̶.̶ ̶I̶ ̶h̶a̶v̶e̶ ̶n̶o̶t̶ ̶s̶o̶ ̶m̶u̶c̶h̶ ̶s̶k̶i̶l̶l̶.̶ I made it. Just enable this hack in the menu, you can select any button combination.

Q: Can I use save-states on added games?

A: Yes, you can. Battery backed games can use their internal saves too. Note that saves are stored on a writable partition along with other save-states. When you delete a game, all save-states remains in the memory. You can delete them using Save-State Manager since version 2.16.

Q: I want to upload games to my brother's/sister's/mother's/father's NES Mini on the same computer as the one I used to flash my NES. How can I do this?

A: 99% safe way: just flash the custom kernel and sync games in the same application. This shouldn't break anything, but I can't 100% guarantee it.

Q: Stop... You are uploading to NES Mini .nes files in iNES format which was developed by authors of the first NES emulators... So Nintendo is officially using stuff developed by pirates?

A: Yes. And probably they are using pirated copies of their own games %)

Q: Where I can find a list of all command line arguments for original emulator of NES Mini?

A: The internal emulator (it's named "kachikachi") of the NES Mini has many command line arguments. Seems like some of them are not working, but there is a full listing of "--help" output: https://github.com/ClusterM/hakchi2/wiki/Command-line-arguments-(NES-Mini)

Q: Where I can find a list of all command line arguments for original emulator of SNES Mini?

A: https://github.com/ClusterM/hakchi2/wiki/Command-line-arguments-(SNES-Mini)

Q: How do I disable this weird epilepsy protection on NES Mini?

A: I think that it looks cool! But you can disable it. Just remove "--enable-armet" command line argument. Or you can disable it via the menu since version 2.09.

Q: What about other features? Music replacement? Custom skins?

A: hakchi/hakchi2 uses mod system. You can download and install "hmod" files as additional modules. Some modules are preinstalled, check "Modules" menu.

Q: How to create my own "hmod" modules?

A: I wrote a guide: https://github.com/ClusterM/hakchi2/wiki/Modifications-and-modules-guide

Q: Can I access NES/SNES Mini's internal file system and command line? It will help me create some cool mods!

A: Yes, I created clovershell-client for it: https://github.com/ClusterM/clovershell-client/releases

It requires clovershell-daemon module to be installed but it's already installed if you are using hakchi2 v2.14 or newer. Since version 2.16 all this functions are built in hakchi2, just check "Tools" menu.

Q: What is "clover"? You are using this word everywhere!

A: It's internal code name for NES/SNES Classic Mini. That's why NES Mini's model no. is "CLV-001". And controller is actually called "clovercon".

Q: How do I uninstall it?

A: There is an uninstall feature since version 2.08.

Q: I found a bug! How can I help you to fix it?

A: Create an issue on GitHub: https://github.com/ClusterM/hakchi2/issues

Of course you can ask about it on some forums. But I can't read them all. Please use the link above if you want to let me know about this bug. Please do not report me about emulation bugs, hakchi2 is not emulator. Do not forget to say version number (internal, you can find it into about box). Do not report me about "some error" messages, please say me exact error text. You can use Ctrl+C to copy it.

Also there is guide how to make good bugreport: https://github.com/ClusterM/hakchi2/wiki/If-you-have-any-problems

Q: Your English is awful! Can we do something about it?

A: hakchi2 is opensource: https://github.com/ClusterM/hakchi2 So you can clone it, fix, upload and make pull requests. Or just send me list of fixes. Also you can help to translate hakchi2 to your language. We are using Google Sheets for it: https://docs.google.com/spreadsheets/d/1yrXH-6g61klKmuXTVf3f0ah8DCQObu-9YEJRoWTeuik/

Contact me and I'll give you access.

Q: How can I donate to you?

A: My PayPal: clusterrr@clusterrr.com

And thank you! This really helps me a lot. I have many ideas in my head but I have not so much time because I'm busy with commercial projects. Remember that it's just hobby for me, I'm doing it for fun :)

Also try to send some donation to madmonkey. He declines to receive any money, but he made great work and really deserves this.