Romhacking.net

Romhacking => ROM Hacking Discussion => Topic started by: ShadowOne333 on February 26, 2019, 02:24:38 pm

Title: Uncensoring Mortal Kombat 1 (SNES)?
Post by: ShadowOne333 on February 26, 2019, 02:24:38 pm
Good day, RomHacking community.

Most of us are familiar with the story about the ESRB rating, and what went down in the early 90s with the whole violence and sex themes in videogames starting to gain trend.

Three of the most notorious games that were talked about during this event were Doom, Night Trap and, of course, Mortal Kombat.

The game went on to become a huge hit in arcades, and we all know every good arcade game used to get a port of some sort to game consoles in the 90s.

With that said, Mortal Kombat saw to ports to home consoles.
One for the Sega Genesis, and another for the SNES.

The Sega Genesis version lacks good graphics and audio quality to make it faithful to the arcade version.
However, the SNES port would be the superior home console port of Mortal Kombat 1 if it weren't for one obvious thing...

Censorship.

(https://upload.wikimedia.org/wikipedia/en/thumb/f/f3/MK1_SNES_vs_MD.png/220px-MK1_SNES_vs_MD.png)

Nintendo was still pretty tight about censorship in their console, and the one thing that they wanted to make a port of Mortal Kombat possible on the SNES was to censor all traces of blood and fatalities out of the SNES port.

Thankfully, Mortal Kombat 2 and 3 got out by the time the ESRB was already a thing, so those two stand as the most faithful ports from the arcade as possible, but Mortal Kombat 1 still got the short end of the stick.

I know that Mortal Kombat 1 tends to get overlook by hackers a lot.
Being a game made by Konami during the SNES era, it is well known that Konami used special compression routines for their games, which is the reason why most Konami games from SNES tend to not have as many hacks available for them.
One clear example is Super Castlevania IV, which only after @redguy got the hang of the decompression routines, hacking it became a viability for most, including the Uncensored patch which got made by yours truly right after that.


So with that said, is there any interest in perhaps hacking Mortal Kombat 1 for the SNES to uncensor it and make it the best home console port it could have been?
Getting access to the GFX is the first thing that comes to mind, and that would require knowing what the game does for compressing/decompressing the graphics, and after that it would be a matter of seeing if the graphics for the fatalities were simply modified, or to make some ASM hacking to restore the fatalities that are missing.


What are your thoughts on this?
Is anyone else interested in hacking this game?
I for sure would love to see this game restored to its arcade counterpart levels. I used to play it a lot when I was a kid and would love to see it in its 100% uncensored form.
Title: Re: Uncensoring Mortal Kombat 1 (SNES)?
Post by: Rodimus Primal on February 26, 2019, 02:47:49 pm
If I had the technical know how, I'd LOVE to see this done.
Title: Re: Uncensoring Mortal Kombat 1 (SNES)?
Post by: Jorpho on February 27, 2019, 01:13:37 am
Well... I can appreciate the reasoning, but surely anyone who wants to play MK1 nowadays can easily access a legally-purchased emulated version of the arcade original? Would the SNES version be worth playing even if it was uncensored?
Title: Re: Uncensoring Mortal Kombat 1 (SNES)?
Post by: Psyklax on February 27, 2019, 04:27:03 am
Well... I can appreciate the reasoning, but surely anyone who wants to play MK1 nowadays can easily access a legally-purchased emulated version of the arcade original? Would the SNES version be worth playing even if it was uncensored?

I was going to state the obvious too, but I decided against it. But now that you've mentioned it...

While the SNES version might be the best console port, it's not the best home port: the DOS version was extremely close to the arcade. More recently, an arcade port was included on MK Deception for PS2 and Xbox and you can now get it on Steam and the consoles as a download. Not to mention that you've been able to play the original for over 20 years on MAME, but we'd never do that, heaven forbid.

Ironically enough, I actually think the changes to the SNES version are what makes the game interesting, since you can just play the arcade original if you want. Johnny Cage dealing the Foot of Death to opponents just makes this version funnier. :)
Title: Re: Uncensoring Mortal Kombat 1 (SNES)?
Post by: ShadowOne333 on February 27, 2019, 10:35:46 am
If we are just going by that logic, then why not simply download MAME and get the straight Mortal Kombat ROM for it?
That's the thing though, any subsequent release of the game was an emulated version of the arcade one.
Modern consoles go for that stuff a lot, emulating the straight arcade game, but that goes completely outside the scope of what I'm trying to say.

For those that love retro gaming, without a doubt many would argue that the SNES Mortal Kombat version would be the best one if it wasn't censored, which is why I wanted to bring it up.

This is RomHacking.net after all, we are here to attempt hacking games and bring up QoL stuff that some people didn't like about them, or do something unique with them.
We can all play the original version, that's a fact, but there is a charm to retro gaming and hacking old games, and I feel like Mortal Kombat 1 on the SNES could really reach a new-found interest, since it's the closest port to 16-bit consoles from the arcade one.
Title: Re: Uncensoring Mortal Kombat 1 (SNES)?
Post by: Vanya on February 28, 2019, 04:58:31 am
I agree.
But here's a thought... Instead of replacing the unique censored fatalities with the original ones, add them in alongside the censored ones as well as new ones for characters with minimal or no censorship.
That would make for a more accurate port while preserving the unique content of that version.

Code: [Select]
Name__________Currently In-game__________Additions
Johnny Cage : Keep Censored Fatality     Restore Head-bopper
Kano        : Uncensor Kali-ma           New Tame Fatality
Liu Kang    : No Change Needed           New Lethal Fatality
Rayden      : Keep Censored Fatality     Restore Head-popper
Scorpion    : No Change Needed           New Tame Fatality
Sonya Blade : No Change Needed           New Tame Fatality
Sub-zero    : Keep Censored Fatality     Restore Spinal-tap

It would be a lot of work, but it would be pretty epic.
Title: Re: Uncensoring Mortal Kombat 1 (SNES)?
Post by: ShadowOne333 on February 28, 2019, 10:35:01 am
That's an interesting idea.
Perhaps a different button combo for the censored fatalities would be a nice addition, but keeping the proper button combo for the uncensored fatalities should be the priority.

It's a good idea for sure :)
Title: Re: Uncensoring Mortal Kombat 1 (SNES)?
Post by: # on February 28, 2019, 11:01:02 am
That's an interesting idea.
Perhaps a different button combo for the censored fatalities would be a nice addition, but keeping the proper button combo for the uncensored fatalities should be the priority.

It's a good idea for sure :)
You could add an option at the character select menu to choose between censored, explicit or combined, like the speed and energy bar options in many other fighters.
Title: Re: Uncensoring Mortal Kombat 1 (SNES)?
Post by: Rodimus Primal on March 03, 2019, 11:37:13 am
That's an interesting idea.
Perhaps a different button combo for the censored fatalities would be a nice addition, but keeping the proper button combo for the uncensored fatalities should be the priority.

It's a good idea for sure :)

I definitely like the idea of having two fatalities for each character with one censored as a different button input.

Also, the other thing changed to home ports was the bottom of the Pit. If that could be changed to its gory counterpart, that would be awesome. Even include the blood when one lands there from an uppercut or Liu Kang's fatality.
Title: Re: Uncensoring Mortal Kombat 1 (SNES)?
Post by: ShadowOne333 on March 03, 2019, 11:38:59 am
I definitely like the idea of having two fatalities for each character with one censored as a different button input.

Also, the other thing changed to home ports was the bottom of the Pit. If that could be changed to its gory counterpart, that would be awesome. Even include the blood when one lands there from an uppercut or Liu Kang's fatality.

That counts towards a full uncensored version of the game too :p
Although, I think the Pit was the only affected stage on this regard, or is there another?
Title: Re: Uncensoring Mortal Kombat 1 (SNES)?
Post by: SCD on March 03, 2019, 12:24:33 pm
Goro's Lair had blood on the walls in the arcade version, but not in the SNES port:
(https://orig00.deviantart.net/eacd/f/2018/168/8/c/goro_s_lair__1__by_rodrigo6620-dceo5pp.gif)
Title: Re: Uncensoring Mortal Kombat 1 (SNES)?
Post by: Zanemato on April 07, 2019, 07:00:12 pm
It sounds like an amazing project, it'll be much better than the blood hack from before, which only replaced the "grey spit" of the characters by "red spit"
Title: Re: Uncensoring Mortal Kombat 1 (SNES)?
Post by: ShadowOne333 on April 08, 2019, 10:36:14 am
I agree.
But here's a thought... Instead of replacing the unique censored fatalities with the original ones, add them in alongside the censored ones as well as new ones for characters with minimal or no censorship.
That would make for a more accurate port while preserving the unique content of that version.

Code: [Select]
Name__________Currently In-game__________Additions
Johnny Cage : Keep Censored Fatality     Restore Head-bopper
Kano        : Uncensor Kali-ma           New Tame Fatality
Liu Kang    : No Change Needed           New Lethal Fatality
Rayden      : Keep Censored Fatality     Restore Head-popper
Scorpion    : No Change Needed           New Tame Fatality
Sonya Blade : No Change Needed           New Tame Fatality
Sub-zero    : Keep Censored Fatality     Restore Spinal-tap

It would be a lot of work, but it would be pretty epic.
I was wondering, what characters did specifically had their fatalities censored?
And also, did they have more than 1 fatality in MK1? I can't recall at the moment.

From what I've seen, I think Kano's fatality might be the easiest to restore?
It seems like all it's lacking is the heart sprite pumping in his hand, and the sweat from the victim character seems to have blood changed to sweat.
From the rest, I think I like Rayden's new SNES fatality more than the original, makes more sense since electricity burns out instead of popping certain parts of your body :P
But the rest I would for sure like to see restored. (Kano, SubZero and Cage's)
Title: Re: Uncensoring Mortal Kombat 1 (SNES)?
Post by: Graphicus on April 08, 2019, 12:55:16 pm
The table is accurate. Only Liu Kang, Scorpion, and Sonya's fatalities remain uncensored.

And yes, only 1 fatality per character in MK1 (unless you count Reptile, who can perform any of the two Ninjas' Fatalities because he can perform any of their moves).
Title: Re: Uncensoring Mortal Kombat 1 (SNES)?
Post by: Zanemato on April 08, 2019, 04:05:17 pm
Ultimate Mortal Kombat Trilogy Genesis Hack ported on Snes would also be an amazing port, no need to uncensor MK1 game, because Ultimate Mortal Kombat Trilogy already has every MK character from every version and with every stage, plus exclusive fatalities and more.

Anway, I'm looking forward to any MK Project on Snes  :)
Title: Re: Uncensoring Mortal Kombat 1 (SNES)?
Post by: acediez on April 08, 2019, 09:31:44 pm
I was wondering, what characters did specifically had their fatalities censored?

https://www.youtube.com/watch?v=P7NnM8GcJhU
Title: Re: Uncensoring Mortal Kombat 1 (SNES)?
Post by: ShadowOne333 on April 08, 2019, 10:09:56 pm
https://www.youtube.com/watch?v=P7NnM8GcJhU
Oh so Johnny Cage, Sub-Zero, Kano and Raiden's fatalities were modified.
As for stages, The Pit and Goro's Lair were the only ones censored?
Title: Re: Uncensoring Mortal Kombat 1 (SNES)?
Post by: Vanya on April 08, 2019, 11:21:30 pm
Also note that the pit "fatality" itself is also censored in that when the character lands on the spikes there is no blood.
Title: Re: Uncensoring Mortal Kombat 1 (SNES)?
Post by: darkmoon2321 on April 11, 2019, 10:33:50 am
Has anybody worked out the graphics compression/decompression algorithm for this game?  I know somebody who was working on his own hack for this game and he was editing sprites that were compressed to create new blood spatter patterns.  I think he was trying to do it the hard way though, changing bytes here and there and noting the effect on graphics.  I might take a look and see if I can figure it out, just want to make sure I wouldn't be repeating anybody else's work.
Title: Re: Uncensoring Mortal Kombat 1 (SNES)?
Post by: ShadowOne333 on April 11, 2019, 10:39:22 am
Also note that the pit "fatality" itself is also censored in that when the character lands on the spikes there is no blood.
Yeah I did mention The Pit as one of the censored stages :P
Goro's Lair I believe was censored too,  but I can't recall if there were more censored stages outside those 2.
Oh so Johnny Cage, Sub-Zero, Kano and Raiden's fatalities were modified.
As for stages, The Pit and Goro's Lair were the only ones censored?

Has anybody worked out the graphics compression/decompression algorithm for this game?  I know somebody who was working on his own hack for this game and he was editing sprites that were compressed to create new blood spatter patterns.  I think he was trying to do it the hard way though, changing bytes here and there and noting the effect on graphics.  I might take a look and see if I can figure it out, just want to make sure I wouldn't be repeating anybody else's work.
As far as I know, no one has been able to figure out the de/compression routine of Mortal Kombat 1 on SNES at the moment... Or no one has attempted too.
I am not sure, but nothing has come out to the public regarding a way to decompress and compress back the graphics for MK1 SNES.
Title: Re: Uncensoring Mortal Kombat 1 (SNES)?
Post by: darkmoon2321 on April 12, 2019, 02:37:43 pm
Graphics compression for the sprites appears to be very simple.  All they are basically doing is compressing those bytes of tile data that are 00.  A good number of the sprite tiles in the ROM are not compressed at all.  For those that are, there is a 4 byte header with decompression control information.  Each nybble in that header controls a single segment of 4 bytes of tile data.  The control operations for each type of nybble are as follows:

0:0,0,0,0
1:0,0,0,copy
2:0,0,copy,0
3:0,0,copy,copy
4:0,copy,0,0
5:0,copy,0,copy
6:0,copy,copy,0
7:0,copy,copy,copy
8:copy,0,0,0
9:copy,0,0,copy
A:copy,0,copy,0
B:copy,0,copy,copy
C:copy,copy,0,0
D:copy,copy,0,copy
E:copy,copy,copy,0
F:copy,copy,copy,copy

A zero indicates that the next byte of tile data is zero, and "copy" copies a byte of ROM data into the tile instead.  Actual tile data starts immediately after the 4 byte header.  So making a decompression/compression algorithm for these tiles is pretty straightforward.  The other part is then locating all the actual pointers to compressed tile data, and then editing those pointers from within a character's animation frames themselves.

April 14, 2019, 11:13:38 am - (Auto Merged - Double Posts are not allowed before 7 days.)
I can see why this game hasn't had much hacking attention before.  It's not that the compression routine for sprites itself is difficult, but rather the structure of the data and the pointers.  This game basically REQUIRES you to use a tool to make edits, as doing it by hand is incredibly impractical.  For each character, all of their compressed tiles are stored together, and MUST be ordered by their compressed size.  Rather than having a list of pointers to each tile, pointers are automatically generated based on these compressed sizes and a table in ROM that lists how many tiles of each size there are.  So if you change the size of a single tile:
1. The compressed tile list needs to be re-ordered
2. The table holding the # of compressed tiles of each size needs to be updated
3. EVERY animation frame for that character needs to be rewritten.
Title: Re: Uncensoring Mortal Kombat 1 (SNES)?
Post by: Vanya on April 16, 2019, 02:08:21 am
Can the rom be expanded to allow for the use of uncompressed graphics?
Title: Re: Uncensoring Mortal Kombat 1 (SNES)?
Post by: darkmoon2321 on April 17, 2019, 09:05:37 pm
Can the rom be expanded to allow for the use of uncompressed graphics?

It can, but since doing so would still require updating every animation frame, I'd still rather just make a tool for it.  I'm working on it now, I've already made some progress loading in the tile data.  Hopefully I'll at least have it functioning as a sprite viewer in a couple days, then I can work on editing/saving.
Title: Re: Uncensoring Mortal Kombat 1 (SNES)?
Post by: ShadowOne333 on April 18, 2019, 01:32:13 am
Oh that sounds great!
Can't wait to see what you come up with :)
The frame thing does sound painful, but it's quite interesting that they did it that way.
Title: Re: Uncensoring Mortal Kombat 1 (SNES)?
Post by: RealGaea on April 19, 2019, 01:14:03 pm
Another thing has to be fixed. The music adresses.

Every stage has its correct music except two stages.

Goro's Lair, regular cycle (has Palace Gates instead of Warrior Shrine)
The Pit Bottom, Reptile Battle (has also Palace Gates instead of The Throne)
Tried to do it myself, almost went nuts in doing so.

I would add a layer of Blood/Recolored sweat in opponent's chest during Cage's censored Fatality.

Remove the "Finishing Bonus" and replace it with "Fatality".

Ah, if possible make the patch for all three Regions.
Title: Re: Uncensoring Mortal Kombat 1 (SNES)?
Post by: darkmoon2321 on April 27, 2019, 05:05:30 pm
Ok, took longer than a few days, but finally got it viewing (at least some) sprites correctly:

(https://i.imgur.com/XFgS8kh.png)

Debugging is taking a lot longer than the code itself, and it's still really buggy.  Most of the buttons are just placeholders at the moment, so I'll work on filling those out too.  I uploaded the code for the project here:

https://github.com/darkmoon2321/mk-character-edit (https://github.com/darkmoon2321/mk-character-edit)
Title: Re: Uncensoring Mortal Kombat 1 (SNES)?
Post by: Vanya on April 27, 2019, 08:29:39 pm
Nice!
That is a great first step.