Released: MK1 for Wolf Unit boards

Asure

Grand Master
Joined
Jul 24, 2015
Messages
814
Reaction score
1,145
Location
Netherlands
Please download the 5.1 at the bottom, then the 5.x update latest below!

Revision 5.5 - 16 mar 2026 (Latest!!)
==========================
- Fixed Sub-Zero slide not working. Tested for both P1 and P2. (Creeping1, Sub-Scorpion)
- Fixed Sonya's leg grab not working. Tested for both P1 and P2. (Creeping1, Sub-Scorpion)

Here:
https://drive.google.com/file/d/1R2qWvs0AIVnqhI7iyLDZWWPE0pDvVMOI/view?usp=drive_link

Revision 5.4 - 4 mar 2026
=========================
- Fixed a nasty bug on real hardware. (Thanks: JNE, Subscorpion)
- Sub-Zero head rip PAL fix. Now proper colors on Reptile/Scorp/Subz-alt heads when doing a fatality.
- Test menu can now be entered with the proper dip switch on real hardware. (SW1 - 8)
- Reptile Klue restored. (Bug on production release. Thanks: Abystus)

Known issues:
- Several sound priorities are cancelling out sounds. In-progress
- DIAG cpu board testing (ram/rom/checksums etc.) will crash on real hardware. Don't do it.
- Test menu should only be used for adjustments at this point.
- You can use the Jamma TEST button to adjust DCS volume.
- Proper restore of DCS volume upon boot will be added in the future.

Revision 5.1 - 6 feb 2026
=========================
This is Mortal Kombat 1 - For WOLF Unit pcb's. We're in BETA, it's 99% done!

MK3.ZIP -> For MAME
PCB.ZIP -> For Real game board. * see below for updated version!

DIAG/Test button (F2 on Mame) enters DCS volume settings. (T-Unit MK1 has a true on/off switch, not a button.)
Make sure SKIP POWERUP TEST (dip 2 - sw2) is off on a real PCB!

A lot of work went into this, and it's a true ROM hack with lots and lots of patches to code.

What's new:
- 159 Patches to the main game system so it interfaces with Wolf hardware.
- 25 Patches to things like sound code, bootup, init, video timing and inputs.
- 10+ new routines with new code for things like volume control, diag menus, Wolf unit switch handling.
- 2 Patches dedicated to security
- Some fixes like the missing Reptile Klue bug (Thanks Abystus!)
- DCS Sound system, using original tools, 254 from scratch sound calls (Thanks Creeping1!)
- Using 44Khz music source from Maestro Draven's excellent remastered soundtrack!

Todo:
- Some sounds have wrong priority:channel mapping. (known issue, P2 uppercut hit sound for example.)

Patch itself will be released when it's 100%.
- Yes, the patch works on MK Plus.
- Yes, works on Turbo Ninja T-Unit too. (With one more patch for the 'protection' in that hack.)

Credits & Thanks:
- Asure: Code & patching
- JNE: Real hardware testing.
- Creeping1: Reverse engineering work on MK1 code, DCS PLBuild implementing.
- Maestro Draven: Enhanced Soundtrack (Used with permission.)

================
!!DIPSWITCH WARNING!!
================
The port uses the following MK3 dip switches:
DIP1, SW1: Test mode on/off (so you can enter the menu and make adjustments.)
DIP2, SW2: Skip powerup test on/off (Should be ON for real hardware pcb!)


Download:
https://drive.google.com/file/d/16sNzOKqBKF7VqMBle5nttEND_dnPj-Ve/view?usp=drive_link

Feeling joy? Let me feel it too so i can continue work on projects like these!
 
Last edited:
Reserved for future updates/revision history:

Revision 5.5 - 16 mar 2026
==========================
- Fixed Sub-Zero slide kick not working. Tested for both P1 and P2. (Creeping1, Sub-Scorpion)
- Sonya's leg grab is under investigation.

Revision 5.4 - 4 mar 2026
=========================
- Fixed a nasty bug on real hardware. (Thanks: JNE, Subscorpion)
- Sub-Zero head rip PAL fix. Now proper colors on Reptile/Scorp/Subz-alt heads when doing a fatality.
- Test menu can now be entered with the proper dip switch on real hardware. (SW1 - 8)
- Reptile Klue restored. (Bug on production release. Thanks: Abystus)

Known issues:
- Several sound priorities are cancelling out sounds. In-progress
- DIAG cpu board testing (ram/rom/checksums etc.) will crash on real hardware with a boot loop. Don't do it. Set DIP2 SW2 -> ON!!
- Test menu should only be used for adjustments at this point. Don't do hardware diag!
- You can use the Jamma TEST button to enter a new menu and adjust the DCS volume.
- Proper restore of DCS volume upon boot will be added in the future.
 
Last edited:
Yeeeeeeeaaaaahhhhh!

May I humbly suggest t2 next?
 
Last edited:
Yeeeeeeeaaaaahhhhh!

May I humbly suggest t2 next?
Unfortunately that's Y-unit based and has substantial differences since they use the older DMA1 chip. Dredd would be classed as low hanging fruit since its also t-unit but I don't think there is much game there.

I am working on getting the older Y-unit games running on the DMA2 gfx engine but that's gonna be another big milestone to achieve. (NARC, Carnage, Smash TV)
 
Dredd would be awesome to have, especially for a future multi.
Wolf unit is the way to go, especially if you can get the dma1 games working on it.
 
so I played again, there's actually a lot of player 2 sounds that cut out. Scorpion's spear sound doesn't always work but the GET OVER HERE! I think works pretty consistent. I'm guessing it's some kind of priority issue with DCS sound. also the bonus stage doesn't have the "win" music and I don't think the break sounds worked. I got to Goro but playing with PS2 controller after reacclimating to arcade controls the last 17 years is a bit of a challenge for me.

also I was messing around in test mode and accidentally chose CPU board test and it had some ram faults that killed the DCS sound which I think is totally expected. so I wound up quitting and now I'm making this post.

this is a very cool project because Mortal Kombat is strangely my favorite game from the series. the MK1 cabinet at work is running UMK3, maybe this is an excuse to get MK1 working in it again. ;)

I'm fascinated with how you adapted the old sound to DCS. is it very complicated?

thank you @Asure
 
so I played again, there's actually a lot of player 2 sounds that cut out. Scorpion's spear sound doesn't always work but the GET OVER HERE! I think works pretty consistent. I'm guessing it's some kind of priority issue with DCS sound. also the bonus stage doesn't have the "win" music and I don't think the break sounds worked. I got to Goro but playing with PS2 controller after reacclimating to arcade controls the last 17 years is a bit of a challenge for me.

also I was messing around in test mode and accidentally chose CPU board test and it had some ram faults that killed the DCS sound which I think is totally expected. so I wound up quitting and now I'm making this post.

this is a very cool project because Mortal Kombat is strangely my favorite game from the series. the MK1 cabinet at work is running UMK3, maybe this is an excuse to get MK1 working in it again. ;)

I'm fascinated with how you adapted the old sound to DCS. is it very complicated?

thank you @Asure
I didn't update the CPU Board tests, it would be a lot more work, and it doesn't improve playing the game or help get it running.

The DCS Sound priority is a known issue. The way the DCS is built would mean i can release a U2 only update to fix that at a later point.

Getting the DCS system running like it does, involves adding all the sound calls, sound data (best source available) and then compressing it with the tools needed.
Then you need to write a playlist and check if everything does what it's supposed to do, and if not, rinse & rebuild. And rebuild, and maybe re-sample missing sounds, or cut up long soundtracks into shorter loops to save size, so you can use less compression and get better qualit, and so on and so forth.

We were able to get many sounds in good quality, and use the remastered soundtrack which was a 44Khz source
View: https://www.youtube.com/watch?v=c9pej9xOO_s

For single sounds like a hit or a grunt, the process is semi-automated, but the music is a different story.

For the Game Over it looks like this, just three samples.

Code:
    playlist    514, 0, 'Game over - DCS Enhanced'
    0    setvol    0, 115
    0    play    0, '202a', 1
    952    play    0, '202b', 1
    2305    play    0, '202b', 1
    1000    rampvol 0, 0, 1302
    1302    end
    end

But when you get to the more complicated music you end up with something like this:

Code:
    playlist    532, 0, 'Goro Lives Loop - DCS Enhanced'
    0    setvol    0, 115
    0    play    0, '214i', 1    ;intro
    2137     loopstart    4
    0    play    0, '214m', 1    ;main part
    1217    play    0, '214a', 1    ;loop1a
    260    play    0, '214b', 1    ;loop1b
    349    play    0, '214a', 1    ;loop1a
    260    play    0, '214c', 1    ;transition to loop2
    359    play    0, '214d', 1    ;loop2
    609    play    0, '214d', 1    ;loop2
    609    play    0, '214e', 1    ;loop3a
    448    play    0, '214f', 1    ;loop3b
    160    play    0, '214e', 1    ;loop3a
    448    play    0, '214f', 1    ;loop3b
    160    loopend            ;back to main part.
    0    end
    end

If this would have been a simple 1m32 sound file, it's too much to fit that in 4x DCS Eprom.

(As a fun exercise imagine doing a DCS conversion for NBA Jam SE.. Yes, that's a lot of samples with player names and pass speech. Yes i was doing that. My fingers still hurt and it's on hold.)

If we went the MK3 route, it would have been even worse. MK3 uses everything cut into chunks, so they can cleanly switch to a 'pending fatality input' music and from there to a 'finished' music. I.e. they can switch music on whatever count they cut the track at like 4/8/16 beats so to say, and it sounds 'cleaner' when you do it that way. The 'old' MK1 way is to just smash in the finishing music and play the ender track (usually a single beat or chord hit) when it's done.

I also had to adapt the sound code sender to add +100h when 'extended' sound codes are sent, as the old sound board had a bank switch method for sounds >254(0feh) and sent an extra call to switch to bank 2. DCS has nearly unlimited calls and you can just send "0514h" as a single code to the sound board.

I forget about the priority system. The old OKI based soundboard has not enough channels for the music with it drum track, and P1/P2 fighting noises. The game uses an internal engine with sound codes having the prio, channel and sound number to play on encoded in them. When a sound call is made, it keeps track of everything in RAM to make sure it gives prio to a certain fight sound call over the drums in the music track. It's very cleverly done, and hard to notice if they do this. In older games like NARC it's much more evident if they cut off the drum track.

In short, if a sound doesn't play for an action, it means it's cut short due to something else that started playing in the DCS on the same track, and the game thinking it can safely play it. Perhaps a blood spatter stops the get-over-here, we had similar issues with the uppercut-hit-ooooooah!-crowd noise. Still looking into this.

Also the imput system is sorta clunky compared to MK2/MK3, but this is due to the way the game reads inputs. The way they do it also allows for the combo tricks like jump-into-flying Lui Kang kick. It wasn't intended to be like this but they kept it as a happy accident.
It may be the reason your Subzero slide doesn't work, because the same thing also caused me unable to do Scorpion's teleport at first. Muscle memory was tuned to later MK games ;)
 
(As a fun exercise imagine doing a DCS conversion for NBA Jam SE.. Yes, that's a lot of samples with player names and pass speech. Yes i was doing that. My fingers still hurt and it's on hold.)
That's crazy! You've really done a great work.
 
I didn't update the CPU Board tests, it would be a lot more work, and it doesn't improve playing the game or help get it running.

The DCS Sound priority is a known issue. The way the DCS is built would mean i can release a U2 only update to fix that at a later point.

Getting the DCS system running like it does, involves adding all the sound calls, sound data (best source available) and then compressing it with the tools needed.
Then you need to write a playlist and check if everything does what it's supposed to do, and if not, rinse & rebuild. And rebuild, and maybe re-sample missing sounds, or cut up long soundtracks into shorter loops to save size, so you can use less compression and get better qualit, and so on and so forth.

We were able to get many sounds in good quality, and use the remastered soundtrack which was a 44Khz source
View: https://www.youtube.com/watch?v=c9pej9xOO_s

For single sounds like a hit or a grunt, the process is semi-automated, but the music is a different story.

For the Game Over it looks like this, just three samples.

Code:
    playlist    514, 0, 'Game over - DCS Enhanced'
    0    setvol    0, 115
    0    play    0, '202a', 1
    952    play    0, '202b', 1
    2305    play    0, '202b', 1
    1000    rampvol 0, 0, 1302
    1302    end
    end

But when you get to the more complicated music you end up with something like this:

Code:
    playlist    532, 0, 'Goro Lives Loop - DCS Enhanced'
    0    setvol    0, 115
    0    play    0, '214i', 1    ;intro
    2137     loopstart    4
    0    play    0, '214m', 1    ;main part
    1217    play    0, '214a', 1    ;loop1a
    260    play    0, '214b', 1    ;loop1b
    349    play    0, '214a', 1    ;loop1a
    260    play    0, '214c', 1    ;transition to loop2
    359    play    0, '214d', 1    ;loop2
    609    play    0, '214d', 1    ;loop2
    609    play    0, '214e', 1    ;loop3a
    448    play    0, '214f', 1    ;loop3b
    160    play    0, '214e', 1    ;loop3a
    448    play    0, '214f', 1    ;loop3b
    160    loopend            ;back to main part.
    0    end
    end

If this would have been a simple 1m32 sound file, it's too much to fit that in 4x DCS Eprom.

(As a fun exercise imagine doing a DCS conversion for NBA Jam SE.. Yes, that's a lot of samples with player names and pass speech. Yes i was doing that. My fingers still hurt and it's on hold.)

If we went the MK3 route, it would have been even worse. MK3 uses everything cut into chunks, so they can cleanly switch to a 'pending fatality input' music and from there to a 'finished' music. I.e. they can switch music on whatever count they cut the track at like 4/8/16 beats so to say, and it sounds 'cleaner' when you do it that way. The 'old' MK1 way is to just smash in the finishing music and play the ender track (usually a single beat or chord hit) when it's done.

I also had to adapt the sound code sender to add +100h when 'extended' sound codes are sent, as the old sound board had a bank switch method for sounds >254(0feh) and sent an extra call to switch to bank 2. DCS has nearly unlimited calls and you can just send "0514h" as a single code to the sound board.

I forget about the priority system. The old OKI based soundboard has not enough channels for the music with it drum track, and P1/P2 fighting noises. The game uses an internal engine with sound codes having the prio, channel and sound number to play on encoded in them. When a sound call is made, it keeps track of everything in RAM to make sure it gives prio to a certain fight sound call over the drums in the music track. It's very cleverly done, and hard to notice if they do this. In older games like NARC it's much more evident if they cut off the drum track.

In short, if a sound doesn't play for an action, it means it's cut short due to something else that started playing in the DCS on the same track, and the game thinking it can safely play it. Perhaps a blood spatter stops the get-over-here, we had similar issues with the uppercut-hit-ooooooah!-crowd noise. Still looking into this.

Also the imput system is sorta clunky compared to MK2/MK3, but this is due to the way the game reads inputs. The way they do it also allows for the combo tricks like jump-into-flying Lui Kang kick. It wasn't intended to be like this but they kept it as a happy accident.
It may be the reason your Subzero slide doesn't work, because the same thing also caused me unable to do Scorpion's teleport at first. Muscle memory was tuned to later MK games ;)
yeah the drums or like the up close punch sounds were DAC, the Oki ADPCM I'm actually uncertain how many samples it can play at once. music is FM, all those musical notes are programmed like play the instrument, this length, this pitch. had to be a nightmare for them to program. but converting it all to DCS should alleviate much, shoehorning new homebrew stuff in requires a bit of work.

my YouTube channel is a lot of VGM, this is a topic I find highly fascinating. lol what you're doing here is something I only could have dreamed of ever happening.

if you require any specialized testing I can do it in MAME or probably scavenge one of my MK3s to use as a testbed.
 
@Asure thanks for doing this. Added to next HBmame, using the PCB set.

Initially I thought there was no sound until I pressed F2 and noticed the volume was almost at 0. Pushing it to max fixed it. Excellent work!
 
@Asure , so Is this not playable on real hardware yet publicly? I burned all the roms in the PCB zip and the board just boots to a blank screen. I noticed the read me says:
"UG12 and UJ12 unused but patched version goes into -> U54,U63" and the release notes in the original post says:
"Patch itself will be released when it's 100%"
So do the 2 program roms require a patch that you haven't released yet for it to work on hardware? Just making sure I'm not doing something wrong.
 
Burn included U54 and U63
I did that. Twice just to make sure they burned correctly. The board acts dead when powered on. No leds, no sound, no picture, nothing. That's why I was wondering if they needed to be patched or something. When I repopulate with the roms that were originally on the board, it boots right up. So it's definitely an issue with the roms.
 
The game was tested on real hw You don;t get any led, bong or whatever? Swap them around? Try different eproms?
What brand/speed/etc are you using? How are the dips set?
 
The game was tested on real hw You don;t get any led, bong or whatever? Swap them around? Try different eproms?
What brand/speed/etc are you using? How are the dips set?
I reburned them a third time and this time I at least get the single led. No bong, no other activity whatsoever. I used M27c4001-10F1, same as I did for the other 2 wolf unit ports and they worked perfectly fine. The dips were left untouched from what I had them for umk3 (which is the board in using to test this out), bank 1, 5,6,7 on, bank 2, 2 on. I even burned u54/63 from the mame set to see if it would work and no dice.
 
Back
Top