Hi. I developed ROM-management tool for NES Mini. It's very-very simple to use. Current version: 2.17d Download link: https://github.com/ClusterM/hakchi2/releases/tag/2.17d Requirements: Windows XP+, .NET Framework 3.5 Also working on Wine. Some features: Allows to change any game settings including command line arguments Fills all game data automatically using included database Automatically checks for supported games Allows to automatically search for box art using Google Images Game Genie support Can automatically patch problem games, patches for some popular games included in the package Allows to upload hundreds of games at once Allows to exit to menu using button combination instead if reset button Allows to enable autofire Allows to simulate start button on second controller for Famicom Mini Allows to disable epilepsy protection Mods with emulators, themes and more... FAQ Q: What is it? A: This application can add more games to your Nintendo Classic Mini. 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 unpack it somewhere on your hard-drive (installation is not required), run it, 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: (enable English subtitles). Q: Which games are supported? 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. Q: Hey! I know that NES Mini can run those unsupported games with other mappers. Also I know that it can run games for other consoles like SNES, GBA 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: Where can I find a list of games with mappers? A: http://bootgod.dyndns.org:7777 and http://tuxnes.sourceforge.net/nesmapper.txt Q: Can I play European/PAL games? A: NES Mini's default emulator can emulate only NTSC NES. There is a command line argument to enable PAL emulation, but it’s not working for some reason. All European NES Minis actually the same as USA versions, so they are running NTSC versions of games. So you can not play all PAL games, and NTSC games will run faster. 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 Mini? A: Writable partition of NES Mini is 384 megabytes in size. 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 10MB] Don't be very greedy - leave some free space for save-states and mods, that's why hakchi2 requires to leave at least 10MB free. 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 but it can't allocate enough RAM to show game covers and save-state screenshots. So more games on screen means less save-states. 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. Q: How does the folder feature work? A: Since version 2.12 you can create any custom folder structure using Folder Manager. It's possible to edit folder names, images, etc. But it's recommended to limit games to 30 per page/folder if you want to keep save-state feature fully functional. **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: Will it work with the Famicom Mini too? A: Yes. You can select the console type in the menu. It will be autodetected since version 2.14. Q: I can’t install the driver! A: If you are using Windows Vista, 7, 8 or 10, disable driver signature verification (Google it) and try again. Also try to use Zadig driver installer: http://zadig.akeo.ie/ Q: What about non-Windows users? A: Mac users can use Parallels for virtualization. Linux users can use Wine. Q: I got a weird error message, what I need to do? A: First of all, try to disable antivirus software. If you are still receiving a error message, follow this guide: https://github.com/ClusterM/hakchi2/wiki/If-you-have-any-problems Q: It says that the MD5 checksum is unknown! What I need to do? A: There are two possible reasons: You have some unique unknown revision of NES Mini. Please send me your MD5 checksum is this case. You can continue flashing custom kernel on your own risk. You are not using hakchi2 for the first time with this NES Mini (for example, you used it on another PC) and your kernel is already patched. Therefore it will have an unknown MD5. It’s safe to continue in this case. In any case it’s best not to lose the kernel image. It is stored in the “dump” folder. Back it up somewhere. But don’t worry if you still lost it. This kernel image is near the same for all NES Minis. 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: 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 it 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? And vice-versa? A: Yes, but you need firmware of this console. You can find it on torrent trackers too. Q: Some games are displayed with an incorrect name; some characters are missing. Why? A: The NES 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. 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: If you are using a portable version of hakchi2, the safest way is to extract hakchi2 to a second separate folder, and run hakchi2 from there. Doing so should allow you to backup kernel, and add games to a second NES Mini without needing to reinstall the driver. 99% safe way: just flash the custom kernel and sync games in same application. This shouldn't break anything, but I can't 100% guarantee it. Q: How do I delete a game? A: If you want to delete game from the NES 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: 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: I just got a black screen. My NES 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: Where I can find a list of all command line arguments for original emulator? 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 Q: How do I disable this weird epilepsy protection? 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: 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 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 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. Also there is guide how to make good bugreport: you Q: Have you planned some other cool features? A: I want to do only one more thing - totally rework interface. I want to combine main window and Folder Manager, allow to select multiple games for some group operations, filter/sort games by platform. Actually I'm not so good at GUI design and I need some help. 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: email@example.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. Changelog 2.00: It's first version actually 2.01: Added type of two players selection. Bugfixes. 2.02: Many bugfixes. 2.03: Another bugfixes. Added MD5 for Famicom Mini kernel. 2.04: Some fixes for dinosaurs with Windows XP. Kernel size check. 2.05: FDS support. Settings moved to config.ini file. Automatic driver installer removed due to annoying false virus reports. 2.06: Finally 'pipe read' problem solved! Some fool-protection. Now you can't run two copies of app accidentally. 2.07 Driver installer added again. Now you can hide selected default games. Font fix with all missed characters. 2.08: Fixed unhandled exception bug when game with unsupported mapper selected. Fixed bug when NES Mini is not detected on some computers. Select all/unselect all feature, just right click on games list. Uninstall feature just in case you want to remove all hakchi traces. Four-screen check (it's not supported by NES Mini). Mapper #71 games automatically patched to mapper #2 , so you can play Camerica/Codemasters games: Micro Machines, Bee 52, Dizzy series, etc. One exception: Fire Hawk. Fix for Google search (thanks to Bin4ry!). This feature should work for all now. Added Drag&Drop support. You can just drag&drop .nes file to list of games. Help menu with links to FAQ and GitHub. 2.09: 'Can't repack ramdisk' error on some systems should be gone now. Device detection bug fixed (thanks to David Winter!) Automatic file attributes fix (e.g. "WinRAR" bug fixed). Game selection presets. Now you can create presets for favorite games, party games, etc. It's useful since NES Mini don't like huge amount of games at once. Search by first letters of game, just press Ctrl+F. Much better PNG compression for covers, x4 more disk space. NES carts database with release dates, publishers, etc. Just add game and all fields will be filled automatically if it exists in database. Automatic IPS patches. Now you don't need other application to patch problem games. Patch files stored in "patch" folder. Problem game will be detected automatically by CRC32 checksum. Release already contains patches for "Battletoads", "Robocop 3", "Snow Bros.", "Bill & Ted's Excellent Video Game Adventure" and "Startropics II". You can add and your own patches too. Game Genie support. Just enter your codes (comma/spaces/semicolon separated) in special field and sync. Cheats will be activated automatically. Mapper #87 added to list of confirmed mappers. Epilepsy protection settings - you can disable epilepsy protection for original 30 games or for all games at once. Clovercon hack! Now you can exit to menu using "Down+Select" combination. All you need now is controller cable extension... Some interface improvements - you can delete games using del key, etc. Many minor bugfixes. 2.10: Press Shift+F5 to update all your ROMs library info using database. Extended font working on Famicom Mini again. Now you can select button combination for reset. Some FDS improvements: correct cover size, automatic header fix, "--fds-auto-disk-side-switch-on-keypress" argument by default. 8bit PNG compression is optional now since image quality is not so good. Now you can remove thumbnails at the bottom of screen (via settings menu). 2.11: Folders/pages support! No more games limit. hakchi2 will automatically create folders and sort games alphabetically. Tested with 600+ ROMs. Everything working fine including save-states. You can select maximum games per page/folder but it's recommended to limit it to 30-35. Multistep uploading. NES Mini can't handle huge kernel with hundreds of ROMs. So hakchi2 will split it up and upload in sequence. Just follow onscreen instructions. Mass cover downloading. You can download covers for all games at once using first image on Google. You can find this feature in "File" menu. IPS patcher can enlarge ROMs now ("index out of bounds" bug fixed). New patches for problem games. New confirmed mapper - 86. Also games with mappers 88, 95 and 206 will be patched automatically. Global command line arguments. You can add some argument(s) for all games at once, including original ones. For example: add "--ppu-palette=2" to make all games black and white. Support for ZIP, 7z and RAR archives. You don't need unpack every ROM now. Support for some bad ROMs with invalid size. Full Famicom Mini support: Japanese font and customizable original games list (thanks to xsnake!) Autofire! Enable it via menu, hold Select+A/B for a second to enable autofire on A/B. Also X/Y buttons on classic controller will act as autofire A/B. Start button simulation for second controller. Hold Up+A+B to press Start. It's workaround for some USA games on Famicom Mini. Don't forget to enable it via menu. Option to disable menu music. Minor design fixes. Other minor improvements. 2.12: Mods! Total folder control. You can use folder tree constructor now to create folders, select images, rename and move everything as you want. Or just select predefined automatic algorithm. Thanks to NeoRame for images! Autofire feature updated a bit, since X and Y will be used often now. Optimization for large amount of games. Box art images will be load automatically if PNG or JPEG file with same name is available. English font updated, many characters added, so games like "720°" or "Alien³" will be shown without problems. Japanese font updated too, thanks to snakex! Game Genie database (thanks to Nhakin!), hakchi2 already contains database with many GG codes and you can import more from Nestopia. Box art images are with correct aspect ration now. Asiansteev fixed my terrible English Thanks! Many other improvements. Many fixes. 2.13: Finally hakchi2 shows size of all selected games in main window. Why I have not done it before? One font to rule them all. New font contains HUGE amount of characters now. Including Latin supplement, Cyrillic, Hiragana, Katakana, etc. So NES Mini and Famicom Mini uses the same font now and you can create folders with very unusual characters (in Russian, for example). The main idea to separate hakchi2 from non-NES games failed, so it's optimized for 3rd path emulators now (i.e. RetroArch). Added presets for Sega 32x and Game Gear games, without images yet. "/bin/path-to-your-app" replaced by "/bin/ext" for unknown extensions. Compression support! Since RetroArch can run games directly from archives it's possible now to compress non-NES games using 7-Zip. This feature enabled by default but you can disable it in the settings menu. Also you can add the whole archive (required by MAME games). Fixed huge bug in folder manager when new folders were missed after first sync. Some minor bugfixes. 2.14: Main modification - new transfer method. It's very fast. You can upload 300 MBytes of games in ~1.5-2 minutes. Also you don't need to hold reset and switch your NES Mini on/off. Just connect it to PC and turn on as usual. It's possible to change settings without re-uploading games. New driver installer should work on all Windows versions since XP. Please report me about any problems. Also better compatibility with Windows XP. You can drag'n'drop box art to main window now. Also it's possible to drag'n'drop module files. Automatic NES Mini/Famicom Mini detection. New hacked clovercon driver allows to use most (or all?) 3rd party classic controllers now. Autofire working for X/Y buttons too now (enable in menu and hold select+X or select+Y for a second). USB library changed to LibWinUsb, it's more portable. New game consoles, new images (thanks to NeoRame!) Many minor bugfixes and improvements. 2.15: Using internal games packing instead of external "tar" util, it will fix "Can't pack games" error. RAM memory usage optimizations, hakchi2 should work fine on x86 systems now. Possible memory leak fix during folder navigation (testing required). Free flash memory space automatic check and basic memory usage statistics when not enough flash memory available. clovercon driver creates /dev/clovercon1 and /dev/clovercon2 now, you can read current buttons state from it, it's useful for some scripts. Translations to German, Greek, Spain, Italian and Polish languages. Write if you want to help with translation. 2.16: Save-State Manager. It will help you to transfer save-states from NES Mini to PC and vice-versa as well as delete unwanted save-states. Remember that save-states will be remained in the system ever after game is deleted, so this tool is very usefull to cleanup your NES Mini and free some space. FTP Server! It will be helpfull for advanced users, this tool allows to transfer any files from/to NES Mini using any FTP client. So you can easyly dump original games from NES Mini, edit some configs, etc. And it will help you to cleanup system. Telnet Server. It provides access to NES Mini's command line interface. Basic Linux knowledge required. 2.17: FTP server is much more compatible and stable now (chown, MLSD, MLST, MFMT commands) Sorting feature for Save Manager Support for ultra shitty cheap Classic Controller clones (custom kernel re-installation required), but hardware modification is required (pull-up resistors) New mods included as examples for modders (checkout my mods guide: https://github.com/ClusterM/hakchi2/wiki/Modifications-and-modules-guide) Finally installer and auto update, lol Screenshot tool More translations to different languages Other fixes Also I made videos about hakchi2 development: It's in Russian but you can enable English subtitles. I hope that you'll enjoy it. Please send to me any bugreports and suggestions.