CURRENT PRICING: $225 with eproms / $205 with no eproms
Yes, the glorious M72 hardware, host of many great and sought after games like R-Type, X-Multiply, Ninja Spirit, etc. to name few.
As you may have seen my projects are always a mix of software hack and hardware design, I repeated the process once again.
There are 10 know games on this hardware:
- Air Duel
- Battle Chopper/Mr.Heli
- Dragon Breed (Japanese version)
- Gallop
- Daiku No Gensan (Japanese version of Hammerin' Harry)
- Image Fight
- Legend Of Hero Tonma
- Ninja Spirit/ Saigo No Nindou
- R-Type
- X-Multiply (Japanese version)
[EDIT]
Two more games added to the list:
- R-Type II (World version, converted from M84)
- Lightning Swords (known in Japan as Kengo, converted from encrypted V35 M84)
[EDIT 2]
One more game added to the list:
- Pound For Pound (World version, converted from M85, hacked controls to use joysticks instead of trackballs)
Hardware is identical between games except for R-Type which uses a simpler romboard with no samples capability.
Also the top board contains a different PAL chip between games and a protection chip (again, except R-Type which has no protection).
This PAL has 2 functions:
- work RAM offset
- program ROMs mapping
I probed it and discovered it was very simple in the way it works: address lines on one side, multiplexed /CE lines on the other side.
I chose to handcraft an "universal" PAL mapping RAM @ 0xA0000 (7 games out of 10 use that) and 4 consecutive banks of 128kB for program ROMs.
Then I patched the 3 games not using RAM @ 0xA0000: Dragon Breed, R-Type and X-Multiply.
And by arranging program ROMs correctly I could run all the games BUT...
There comes the protection: the MCU (i8751) used for protection does 2 things:
- boot up protection (prevent the game from running by throwing a RAM error on boot up)
- samples playing
I patched all games to boot without any MCU installed. This was a good start but games played without any sample now.
Thing is the sample playing mechanism isn't understood in MAME and instead is simulated.
I spent a good saturday afternoon trying to fully figuring it out. It's not that often I can find so much time to work on my projects (i.e. 3 or 4 hours consecutilvely) so I had to succeed.
In fact when the game wants to play a sample it sends a command to the MCU which in turn sends a command to the sound CPU. I thought I could simply fork data to be sent directly to the sound CPU, bypassing the MCU, but on real hardware the needed port isn't accessible by the main CPU. It also thought of writting diretly to the sound RAM but I was worried about synchronisation (were samples going to be played fully and at the right pitch without any cuts?) and it was probably a lot of work patching all games.
I ended up handcrafting an universal MCU for samples playing! Yes the same MCU code supporting all the games for the sample part.
Only problematic game I could foresee was Gallop as MAME states the MCU isn't used for protection at all but only for samples playing. I have the feeling things are going to be different for this game.
Anyway, this means a lot of great things:
- games with a faulty MCU can now be revived
- any game (except R-Type due to the specific romboard) can be converted to any other game (including R-Type)
So now you're asking yourself "Why not making a universal MCU for the protection part too?". Beacause internal ROM of the MCU is 4kB only. Of course I could use external ROM but:
- then my code would be visible
- I would have to design an additional daughter board for the MCU, external ROM and at least one LS373 in between to latch lower address lines as the 8751/8951 MCUs use the same port for lower address lines (A0~7) and data lines (D0~7).
So now that I have found a solution for each problem it was time for testing:
Known issues:
- Gallop: no samples at all => Fixed
- None ATM
Not bad I'd say!
Important information:
Games aren't preloaded in the multi, users must download romsets by themselves then generate appropriate rom files with the tool (for Windows) provided here in attachment:
View attachment M72_V2_ROM_GEN.zip
Steps:
1) Unzip all romsets at the same place
2) Unzip the M72_V2_ROM_GEN file attached, it contains:
- bps files for ROMs 01, 02 and 06
- M72_V2_ROM_GEN command file
- interleave.exe
- flips.exe
3) Simply run the M72_V2_ROM_GEN command file. It will generate ready to burn files for ROMs 01 to 10 (it's normal 03 doesn't exist):
Before burning any chip please check all files are exactly 4096kb in size except for 06 where it should be 2048kb.
Universal GAL file on the motherboard:
View attachment M72_motherboard_PAL.zip
Multi GAL file for V1 kits not modified for Pound For Pound:
View attachment MULTI_M72_V1_GAL16V8.zip
Instructions to modify V1 kits:
Irem M72 multi kit installation & support
Multi GAL file for V1 kits modified for Pound For Pound and ALL V2 kits:
View attachment MULTI_M72_V2_GAL16V8.zip
Installation of the kit is solderless.
Kit is composed of two boards, one fit on the bottom board (background tiles) and the other one on the top board (main CPU code, sprites, samples), one 4 pin jumper cable, one universal GAL chip, one universal MCU chip and 6 PCB spacers.
1) Separate top board and bottom board from the middle board. On my boardset I had to separate the bottom board first by unclipping the two flat cables on one side , the small 4 pin power connector on the other side (JAMMA side) and then unclipping the spacer. Then I could access the 4 screws holding the top board.
2) Remove all ROMs/mask ROMs from the bottom boards (8 of them) and move jumpers as follow:
J2 = B
J3 = B
J4 = B
J5 = B
3) Install the smaller board from the kit, be careful no pin is bent or broken and check the position and alignment from the pictures below. The yellow arrow shows how the pins must be aligned with the socket underneath:
4) Connect the jumper cable to the square pins on the left.
5) Remove all ROMs/mask ROMs from the top board, so as the PAL chip and the MCU chip and move jumpers as follow:
J1 = A
J2 = A
J3 = B
J4 = A
J5 = B
J6 = B
J7 = A
J8 = empty
J9 = A
J10 = A
J11 = B
J12 = A
6) Install the bigger (really big!) board, be careful no pin is bent or broken and check the position and alignment from the pictures below. The yellow arrow shows how the pins must be aligned with the socket underneath:
7) Install the universal GAL chip and MCU chip (in the yellow rectangles on the picture above). Check notches match the silkscreen/original positioning.
8 ) Replace the spacers between the middle and the bottom board. 6 longer spacers are provided in the kit as few more millimetres clearance is needed once the kit in place:
9) Reassemble the stack and connect the jumpers cable to the square pins of the top board of the kit. Wires must be flat (bottom pin connected to bottom pin on the other board, etc.)
Game selection:
game ---- dip1/2/3/4
Yes, the glorious M72 hardware, host of many great and sought after games like R-Type, X-Multiply, Ninja Spirit, etc. to name few.
As you may have seen my projects are always a mix of software hack and hardware design, I repeated the process once again.
There are 10 know games on this hardware:
- Air Duel
- Battle Chopper/Mr.Heli
- Dragon Breed (Japanese version)
- Gallop
- Daiku No Gensan (Japanese version of Hammerin' Harry)
- Image Fight
- Legend Of Hero Tonma
- Ninja Spirit/ Saigo No Nindou
- R-Type
- X-Multiply (Japanese version)
[EDIT]
Two more games added to the list:
- R-Type II (World version, converted from M84)
- Lightning Swords (known in Japan as Kengo, converted from encrypted V35 M84)
[EDIT 2]
One more game added to the list:
- Pound For Pound (World version, converted from M85, hacked controls to use joysticks instead of trackballs)
Hardware is identical between games except for R-Type which uses a simpler romboard with no samples capability.
Also the top board contains a different PAL chip between games and a protection chip (again, except R-Type which has no protection).
This PAL has 2 functions:
- work RAM offset
- program ROMs mapping
I probed it and discovered it was very simple in the way it works: address lines on one side, multiplexed /CE lines on the other side.
I chose to handcraft an "universal" PAL mapping RAM @ 0xA0000 (7 games out of 10 use that) and 4 consecutive banks of 128kB for program ROMs.
Then I patched the 3 games not using RAM @ 0xA0000: Dragon Breed, R-Type and X-Multiply.
And by arranging program ROMs correctly I could run all the games BUT...
There comes the protection: the MCU (i8751) used for protection does 2 things:
- boot up protection (prevent the game from running by throwing a RAM error on boot up)
- samples playing
I patched all games to boot without any MCU installed. This was a good start but games played without any sample now.
Thing is the sample playing mechanism isn't understood in MAME and instead is simulated.
I spent a good saturday afternoon trying to fully figuring it out. It's not that often I can find so much time to work on my projects (i.e. 3 or 4 hours consecutilvely) so I had to succeed.
In fact when the game wants to play a sample it sends a command to the MCU which in turn sends a command to the sound CPU. I thought I could simply fork data to be sent directly to the sound CPU, bypassing the MCU, but on real hardware the needed port isn't accessible by the main CPU. It also thought of writting diretly to the sound RAM but I was worried about synchronisation (were samples going to be played fully and at the right pitch without any cuts?) and it was probably a lot of work patching all games.
I ended up handcrafting an universal MCU for samples playing! Yes the same MCU code supporting all the games for the sample part.
Only problematic game I could foresee was Gallop as MAME states the MCU isn't used for protection at all but only for samples playing. I have the feeling things are going to be different for this game.
Anyway, this means a lot of great things:
- games with a faulty MCU can now be revived
- any game (except R-Type due to the specific romboard) can be converted to any other game (including R-Type)
So now you're asking yourself "Why not making a universal MCU for the protection part too?". Beacause internal ROM of the MCU is 4kB only. Of course I could use external ROM but:
- then my code would be visible
- I would have to design an additional daughter board for the MCU, external ROM and at least one LS373 in between to latch lower address lines as the 8751/8951 MCUs use the same port for lower address lines (A0~7) and data lines (D0~7).
So now that I have found a solution for each problem it was time for testing:
Known issues:
- None ATM
Not bad I'd say!
Important information:
Games aren't preloaded in the multi, users must download romsets by themselves then generate appropriate rom files with the tool (for Windows) provided here in attachment:
View attachment M72_V2_ROM_GEN.zip
Steps:
1) Unzip all romsets at the same place
2) Unzip the M72_V2_ROM_GEN file attached, it contains:
- bps files for ROMs 01, 02 and 06
- M72_V2_ROM_GEN command file
- interleave.exe
- flips.exe
3) Simply run the M72_V2_ROM_GEN command file. It will generate ready to burn files for ROMs 01 to 10 (it's normal 03 doesn't exist):
Before burning any chip please check all files are exactly 4096kb in size except for 06 where it should be 2048kb.
Universal GAL file on the motherboard:
View attachment M72_motherboard_PAL.zip
Multi GAL file for V1 kits not modified for Pound For Pound:
View attachment MULTI_M72_V1_GAL16V8.zip
Instructions to modify V1 kits:
Irem M72 multi kit installation & support
Multi GAL file for V1 kits modified for Pound For Pound and ALL V2 kits:
View attachment MULTI_M72_V2_GAL16V8.zip
Installation of the kit is solderless.
Kit is composed of two boards, one fit on the bottom board (background tiles) and the other one on the top board (main CPU code, sprites, samples), one 4 pin jumper cable, one universal GAL chip, one universal MCU chip and 6 PCB spacers.
1) Separate top board and bottom board from the middle board. On my boardset I had to separate the bottom board first by unclipping the two flat cables on one side , the small 4 pin power connector on the other side (JAMMA side) and then unclipping the spacer. Then I could access the 4 screws holding the top board.
2) Remove all ROMs/mask ROMs from the bottom boards (8 of them) and move jumpers as follow:
J2 = B
J3 = B
J4 = B
J5 = B
3) Install the smaller board from the kit, be careful no pin is bent or broken and check the position and alignment from the pictures below. The yellow arrow shows how the pins must be aligned with the socket underneath:
4) Connect the jumper cable to the square pins on the left.
5) Remove all ROMs/mask ROMs from the top board, so as the PAL chip and the MCU chip and move jumpers as follow:
J1 = A
J2 = A
J3 = B
J4 = A
J5 = B
J6 = B
J7 = A
J8 = empty
J9 = A
J10 = A
J11 = B
J12 = A
6) Install the bigger (really big!) board, be careful no pin is bent or broken and check the position and alignment from the pictures below. The yellow arrow shows how the pins must be aligned with the socket underneath:
7) Install the universal GAL chip and MCU chip (in the yellow rectangles on the picture above). Check notches match the silkscreen/original positioning.
8 ) Replace the spacers between the middle and the bottom board. 6 longer spacers are provided in the kit as few more millimetres clearance is needed once the kit in place:
9) Reassemble the stack and connect the jumpers cable to the square pins of the top board of the kit. Wires must be flat (bottom pin connected to bottom pin on the other board, etc.)
Game selection:
game ---- dip1/2/3/4
Air Duel | 0 | 0 | 0 | 0 |
Battle Chopper (Mr Heli) | 1 | 0 | 0 | 0 |
Dragon Breed | 0 | 1 | 0 | 0 |
Gallop (Cosmic Cop) | 1 | 1 | 0 | 0 |
Daiku no gensan (Hamerrin' Harry) | 0 | 0 | 1 | 0 |
Image Fight | 1 | 0 | 1 | 0 |
Legend of Hero Tonma | 0 | 1 | 1 | 0 |
Ninja Spirit | 1 | 1 | 1 | 0 |
R-Type | 0 | 0 | 0 | 1 |
R-Type II | 1 | 0 | 0 | 1 |
X-Multiply | 0 | 1 | 0 | 1 |
Lightning Swords | 0 | 0 | 1 | 1 |
Pound For Pound | 0 | 1 | 1 | 1 |
Last edited: