REQUIREMENTS
You'll need a standard SD card since the one in the board is unmodifiable. Check the label to make sure it's not an SDHC card since the board can't read them. A standard SD card is 2GB or less, but some 2GB cards are SDHC so you'll need to verify.
Download
taito-tools.zip by taitocracker up above. (Thanks man!)
For many of the possible games, you will also need a hex editor. The one I used is
Notepad++ v5.9 with its
hex editor plugin. Supposedly newer versions of Notepad++ don't support the plugin, so keep that in mind if you want to use the same tool I did. When you download the plugin, place the .dll file from the download into the 'plugins' folder where you installed Notepad++.
If you don't already have the Neo Geo 6 game image, you can
visit this thread by mattosborn on KLOV about the modded image he made. He put in UniBIOS, different single-frame animations for faster booting, new menu graphics, and swapped out two of the games.
Metal Slug 2 is swapped with
Blazing Star and
King of the Monsters is swapped with
Neo Mr. Do! I will explain shortly why these particular swaps were made.
DECRYPTING THE IMAGE
As described in the readme.txt that came with taito-tools, use tunzip.exe on the .img file. You don't have to do it from the command line; if you put tunzip.exe in the same folder as your .img, you can drag the .img file onto tunzip.exe and it will work its magic.
You will see all the files that make up the image. The game ROMs are all .bin files, the menu sound effects are .wav, all the graphics are .bmp, animations as .avi, and the executables are 'app.img' and 'syscheck.img'.
The .bin files are the same ones you would find in a MAME ROM .zip from a ROM site. The board just can't handle zip decompression so the files are stored inside the image uncompressed. All Neo Geo games have a number associated with them, and their ROM files are labeled accordingly. For the games that are included on the standard 6 game image, you have:
King of Fighters '95 (084),
King of the Monsters (016),
League Bowling (019),
Metal Slug 2 (241),
Samurai Shodown (045), and
Top Player's Golf (003).
SWAPPING GAMES
mattosborn swapped
Metal Slug 2 and
King of the Monsters for
Blazing Star and
Neo Mr. Do! These are actually the only games possible to switch out without hex editing. The board only allows you to swap games that use identical ROM chip layouts. If you look at the MAME ROMs for all four of these games, they are structured the same way: ###-c1.bin, ###-c2.bin, ###-c3.bin, ###-c4.bin, ###-m1.bin, ###-p1.bin, ###-p2.bin, ###-s1.bin, ###-v1.bin, ###-v2.bin, ###-v3.bin.
To change one game into another, take note of the original game's number ('241' in
Metal Slug 2's case), delete all the .bin files that start with that number, paste the new game's .bin files into that folder, then rename all the new game's .bin files with the original game's number.
For example, to swap
Metal Slug 2 with
Blazing Star, delete all the .bin files starting with '241' in your folder, paste in the .bin files from your
Blazing Star ROM .zip, and then rename them all from '239' to '241' (i.e., '239-c1.bin' becomes '241-c1.bin').
Without doing any hex editing, your only game swap options are:
- Replace King of the Monsters with Alpha Mission II, Fatal Fury, Neo Mr. Do!, or Sengoku.
- Replace Metal Slug 2 with Blazing Star, or any of the following games but they will all be buggy: Alpha Mission II, Fatal Fury, Fight Fever, King of the Monsters, Neo Mr. Do!, or Sengoku.
To open the maximum potential of the unit, you will need to hex edit the board executable.
HEX EDITING THE EXECUTABLE
Open app.img in your hex editor. If you are using Notepad++, after you open the file, go to the menu: Plugins > HEX-Editor > View in HEX.
Use the Find tool to locate the first instance of 'kof95'. In Notepad++'s menu, go to Search > Find. Switch the Data type to 'ANSI String' and then in the Find type text input, type in 'kof95' without the quotes.
Your first result will be this string:
Code:
6b 6f 66 39 35 00 00 00 6b 6f 74 64 00 00 00 00 kof95...kotm....
6c 62 6f 77 6c 69 6e 67 00 00 00 00 6d 73 6c 75 lbowling....mslu
67 32 00 00 73 61 6d 73 68 6f 00 00 74 70 67 6f g2..samsho..tpgo
6c 66 00 00 lf..
This is the part of the program that determines which games get loaded and in which order. Aside from lbowling, each game gets exactly 8 bits for its name; lbowling appears to have 12 bits.
Code:
[b]1 2 3 4 5 6 7 8[/b]
k o f 9 5 . . .
k o t m . . . .
l b o w l i n g . . . .
m s l u g 2 . .
s a m s h o . .
t p g o l f . .
Notice that names that are shorter than 8 characters have periods spacing them out to 8 characters.
This is important! These characters are not periods, they just appear to be on the right side. On the left side, you can see that they are null characters; the hexadecimal counterpart to each '.' is '00'. I don't know how to input a null on the right side, so I go back to the left and type '00' each time I need a null. Below are two lines showing the difference between null characters and periods. On the right side they appear to be the same, but on the left, you can see that the periods have a hex value of '2e' and not '00' so the executable will process them differently.
Code:
[b]CORRECT:[/b] 6b 6f 66 39 35 [b]00 00 00[/b] 6b 6f 74 64 [b]00 00 00 00[/b] kof95[b]...[/b]kotm[b]....[/b]
[b]INCORRECT:[/b] 6b 6f 66 39 35 [b]2e 2e 2e[/b] 6b 6f 74 64 [b]2e 2e 2e 2e[/b] kof95[b]...[/b]kotm[b]....[/b]
These names, kof95, lbowling, etc., are used as references lower down in the program. If you search for 'kof95' again, you will be in the middle of a lookup table for 20 different game names and all the associated .bin files that go with those games. The reason you can only swap games that use the exact same ROM chip structure is because when this executable is told to run a game, it accesses this lookup table to see which .bin files it is supposed to load.
Here is the list of all of the games that are in the table:
- Alpha Mission II (alpham2)
- Art of Fighting (aof)
- Baseball Stars (bstars)
- Baseball Stars 2 (bstars2)
- Cyber-Lip (cyberlip)
- Fatal Fury Special (fatfursp)
- Ghost Pilots (gpilots)
- King of Fighters '95 (kof95)
- King of the Monsters (kotm)
- Last Resort (lresort)
- League Bowling (lbowling)
- NAM-1975 (nam1975)
- Metal Slug 2 (mslug2)
- Riding Hero (ridhero)
- Robo Army (roboarmy)
- Samurai Shodown (samsho)
- Sengoku (sengoku)
- Super Sidekicks (ssideki)
- The Super Spy (superspy)
- Top Player's Golf (tpgolf)
Without doing any .bin renaming, you can change one of the game names in the menu string to one of these, drop its ROM files into the folder, re-encrypt the image, and they will run properly. For example, you could change the menu to this:
Code:
alpham2.aof.....
fatfursp....gpil
ots.lresort.seng
oku.
I couldn't verify that
Baseball Stars,
NAM-1975,
Riding Hero, or
The Super Spy actually work. The ROMs I have of those games have different structures than is expected by the lookup table, so they didn't load for me. I assume I need older versions of these ROMs but I didn't have the motivation to find them.
CANNIBALIZING GAMES
In order to run the wider selection of possible games, you are going to have to sacrifice at least one of those 20 games for each game you want to add.
There is a set of four games on that list that have identical ROM chip layouts. I call these the 'common' games:
- Alpha Mission II (alpham2)
- King of the Monsters (kotm)
- Metal Slug 2 (mslug2)
- Sengoku (sengoku)
The next two match the most extra games:
- Last Resort (lresort)
- Robo Army (roboarmy)
The next handful match small numbers of games themselves, but in practice the only new thing you'll get out of any of them is
Puzzle De Pon!:
- Baseball Stars 2 (bstars2)
- Fatal Fury Special (fatfursp)
- King of Fighters '95 (kof95)
- Super Sidekicks (ssideki)
Not all games with matching layouts will work with each other unfortunately, and it feels kind of arbitrary which ones will work and which won't. I think the compatibility issues are because the Hanaho designers have added extra instructions for each game at the end of their entries in the lookup table, probably starting addresses when booting each game. I think this address is set at a different location in each game, and when you try to boot into a game with a save state that doesn't line up very well, strange things or crashes will happen.
For instance, if you place the .bin files for
Neo Mr. Do! in all four common game spots, it will crash during loading for
Alpha Mission II, and
Metal Slug 2 will have graphic and sound glitches.
King of the Monsters and
Sengoku will both work correctly, however they start at slightly different points with
KotM's animation starting a fraction of a section later then in
Sengoku's.
PUTTING IT ALL TOGETHER
At this point, just repeat the game swapping and hex editing instructions as described earlier with the games of your choice. Pick out each desired compatible game and pay attention to any required swaps in the lists in the next post.
The game list I tried out on my machine is:
Blazing Star,
Puzzle De Pon!,
Alpha Mission II,
Last Resort,
Ghost Pilots, and
Neo Mr. Do!. I have a two-button standup Taito cabinet and no woodworking skills so my game options are pretty limited, but I love shmups.
Here's how my modified game string appears:
Code:
mslug2..ssideki.
alpham2.....lres
ort.gpilots.kotm
....
If you wanted to do a full fighter menu, you could do:
Code:
aof.....sengoku. = Art of Fighting, Fatal Fury (swapping Sengoku)
fatfursp....kof9 = Fatal Fury Special, King of Fighters '95
5...kotm....sams = King of the Monsters, Samurai Shodown
ho..
After you've modified app.img and placed in all the new .bin files, you will need to use tzip.exe from taito-tools to re-encrypt the image. I place tzip.exe in the same folder that I assemble the game in, then create the image file in the directory above it. Open cmd.exe from the Start menu, change directory to the folder where you are assembling your new image, then type:
This tells tzip.exe to create an image file, named master.img, in the directory above the one you are currently in, and to put in it all the files in the folder. I haven't tried it, but I assume if you try to create the image file in the same directory, tzip.exe will try to insert master.img into itself and cause a problem.
Your image file needs to be named 'master.img' and be put in the top folder on your SD card for the board to be able to find it.