Ricks MK1 Boss Playing Speculation.
2D Kombat Klassics
Pages: 1
Ricks MK1 Boss Playing Speculation.
0
posted02/15/2006 04:12 PM (UTC)by

Member Since
03/09/2003 07:11 PM (UTC)
Oldbie here once again.
Be warned, much geekery is involved here, as well as some speculation. You've been warned. =P
Now anyway, I wanted to turn my attention to investigating Mortal Komabt 1 for seeing how the bosses work. I found a character modifier code for the SNES version, and I thought I'd give it a try with that. I was able to play as both Goro and Shang Tsung...but with very disappointing results.
Goro turned out to have some graphical garbage about him when played. Understandably, he was never meant to be played in the first place, but I'm not really sure as to why he's all garbled instead of being crystal clear like when the computer plays as him. Sadly, the only thing you can do with goro is move forward and block. Attacking, ducking, jumping, or moving backwards only results in the game crashing.
Shang Tsung was worse. He's the most unplayable character I've seen that's never meant to be played. The only thing you can do with him is move forward...and then he just kinda moves backward in a quick and rather trippy manner. He doesn't do anything but that.
I wish I knew exactly how they get the computer to pull off all the moves. It would probably make a great lead as to how to get these characters actually playable instead of glitching like they do all the time.
However, I've had some interestingness with the Genesis version of MK1. I believe some of you, if you've looked around enough, has found a code to make it so when you do Sub-Zero's slide, he morphs into another character like Shang Tsung does.
(If you wanna try the code for yourself, the Game Genie code is 4WXA-AC32.)
Now, while this code is fun, and it's always fun to morph into Goro and laugh like a madman as you see Sub-Zero morph into Goro and the computer takes control of Player 2, who's nearly crapped himself...but that's besides the point. XD
Anyhoo, looking into the code further, I speculate that move effects are actually done by some kind of "pointer". What the pointer does in programming is it tells the game to do a certain effect when a button or series of buttons are pressed. I believe that all the effect pointers are held in a variable or two as well. When I say "variable", if you've used a Gameshark for N64 for example, the "address" of the code is the first eight digits, and the "variable" is the last four digits of the code. For example...
80123456 ABCD
The first part is the address, where a particular effect is stored. The second is the variable tells it how many, or which effect, to do. And the code is in Hexidecimal (0-F). For example, if you wanted to have five lives in a game instead of 3, assuming that when you have 0 lives, it's game over, then you would put "0005" in the variable.
Sometimes the variable also holds particular effects. For example, changing the variable creates entirely different effects, which is best represented in a list. For example...
0000 - Do nothing
0001 - Jump
0002 - Duck
0003 - Explode
Now getting back to Sub-Zero, the address of the code points to his slide, but there's a change in the variable that tells the game "when you hold back and press both kick buttons, then you morph into a different character" instead of "you perform the slide attack". This leads me to believe that Shang Tsung's morph move is a near fully-implemented move, aside of the computer taking control of you at first. And if you turn into Goro, in the next round you will be in a bizarre version of the level you were in with the Goro's Lair music. Apparantly whenever you're Goro, the game assumes you're in Goro's Lair, but can't load the background mid-match.
So what does all this mumbo-jumbo mean? With the right hacking, you could get ANYONE to do just about ANYTHING. You want Sonya to do Scorpion's teleport? You can do it. You want Sub-Zero to do Johnny Cage's fireball? You can do that. You want Liu Kang to morph instead of doing his flying kick? You can do that. While the sprites probably won't be there for such an occasion, it could be done.
It also leads me to believe that implimenting a fully-playable Shang Tsung, and a fully-playable Goro would be easy enough to do for a good hacker. Heck, even a playable Reptile could be done! There's a glitch that leads me to believe it too.
You remember the "Secret Sonya" glitch in which you get to Reptile on an endurance match? What happens is the game tries to load in the second character as Reptile, but botches some of it. That's why Sonya seems to do weird moves, but successfully performs the same moves that Reptile does.
For now, I've found a character modifier code for the Genesis MK1, but I have yet to try out Goro or Shang Tsung. The only experience I've had playing with Goro is using the above code and morphing into him, which actually seems to happen quite freqently. Once I play around with the character modifier code, I'll post my findings on them both.
So far what I've been able to experience, Goro can move forward, backwards, and can jump, but he freezes the game when he lands. This is a big step up from the SNES version of the game. I leave you with that.
What do you think? I'd love to hear some speculation or some comments. Questions are OK too, as I'm sure that I'm the only one who likes to study glitches and how things are programmed, and this is a lot to absorb.
Be warned, much geekery is involved here, as well as some speculation. You've been warned. =P
Now anyway, I wanted to turn my attention to investigating Mortal Komabt 1 for seeing how the bosses work. I found a character modifier code for the SNES version, and I thought I'd give it a try with that. I was able to play as both Goro and Shang Tsung...but with very disappointing results.
Goro turned out to have some graphical garbage about him when played. Understandably, he was never meant to be played in the first place, but I'm not really sure as to why he's all garbled instead of being crystal clear like when the computer plays as him. Sadly, the only thing you can do with goro is move forward and block. Attacking, ducking, jumping, or moving backwards only results in the game crashing.
Shang Tsung was worse. He's the most unplayable character I've seen that's never meant to be played. The only thing you can do with him is move forward...and then he just kinda moves backward in a quick and rather trippy manner. He doesn't do anything but that.
I wish I knew exactly how they get the computer to pull off all the moves. It would probably make a great lead as to how to get these characters actually playable instead of glitching like they do all the time.
However, I've had some interestingness with the Genesis version of MK1. I believe some of you, if you've looked around enough, has found a code to make it so when you do Sub-Zero's slide, he morphs into another character like Shang Tsung does.
(If you wanna try the code for yourself, the Game Genie code is 4WXA-AC32.)
Now, while this code is fun, and it's always fun to morph into Goro and laugh like a madman as you see Sub-Zero morph into Goro and the computer takes control of Player 2, who's nearly crapped himself...but that's besides the point. XD
Anyhoo, looking into the code further, I speculate that move effects are actually done by some kind of "pointer". What the pointer does in programming is it tells the game to do a certain effect when a button or series of buttons are pressed. I believe that all the effect pointers are held in a variable or two as well. When I say "variable", if you've used a Gameshark for N64 for example, the "address" of the code is the first eight digits, and the "variable" is the last four digits of the code. For example...
80123456 ABCD
The first part is the address, where a particular effect is stored. The second is the variable tells it how many, or which effect, to do. And the code is in Hexidecimal (0-F). For example, if you wanted to have five lives in a game instead of 3, assuming that when you have 0 lives, it's game over, then you would put "0005" in the variable.
Sometimes the variable also holds particular effects. For example, changing the variable creates entirely different effects, which is best represented in a list. For example...
0000 - Do nothing
0001 - Jump
0002 - Duck
0003 - Explode
Now getting back to Sub-Zero, the address of the code points to his slide, but there's a change in the variable that tells the game "when you hold back and press both kick buttons, then you morph into a different character" instead of "you perform the slide attack". This leads me to believe that Shang Tsung's morph move is a near fully-implemented move, aside of the computer taking control of you at first. And if you turn into Goro, in the next round you will be in a bizarre version of the level you were in with the Goro's Lair music. Apparantly whenever you're Goro, the game assumes you're in Goro's Lair, but can't load the background mid-match.
So what does all this mumbo-jumbo mean? With the right hacking, you could get ANYONE to do just about ANYTHING. You want Sonya to do Scorpion's teleport? You can do it. You want Sub-Zero to do Johnny Cage's fireball? You can do that. You want Liu Kang to morph instead of doing his flying kick? You can do that. While the sprites probably won't be there for such an occasion, it could be done.
It also leads me to believe that implimenting a fully-playable Shang Tsung, and a fully-playable Goro would be easy enough to do for a good hacker. Heck, even a playable Reptile could be done! There's a glitch that leads me to believe it too.
You remember the "Secret Sonya" glitch in which you get to Reptile on an endurance match? What happens is the game tries to load in the second character as Reptile, but botches some of it. That's why Sonya seems to do weird moves, but successfully performs the same moves that Reptile does.
For now, I've found a character modifier code for the Genesis MK1, but I have yet to try out Goro or Shang Tsung. The only experience I've had playing with Goro is using the above code and morphing into him, which actually seems to happen quite freqently. Once I play around with the character modifier code, I'll post my findings on them both.
So far what I've been able to experience, Goro can move forward, backwards, and can jump, but he freezes the game when he lands. This is a big step up from the SNES version of the game. I leave you with that.
What do you think? I'd love to hear some speculation or some comments. Questions are OK too, as I'm sure that I'm the only one who likes to study glitches and how things are programmed, and this is a lot to absorb.


About Me
TheProphet, GGs my friend. Give'em Hell.
0
You are not the only one, lol.
I don't observe the glitches so much as the gameplay though (i.e. why are character graphics the last thing updated on the screen in MK2, MK3, UMK3, why do special move triggers register between hit box collisions, and stuff like that).
One thing thats a bit misleading about what you said was referring to variables. A variable would usually be a pointer to a memory address. They don't use variables in these old games, they just use the memory addresses, so its more like there is an address where a bit of info is stored.
My guess as far as the special moves is that each special move is a line of instructions starting at a particular memory address and when you trigger a special move, depending on what the special move is, the computer is directed to a different memory address to figure out the code to make that happen. So, as you said, if you can find a way to change what section of memory the special move points to, you could theoretically change what actions are triggered by a move.
But, I don't think being able to do this would necessarily be enough to make a completely playable version of Shang or Goro. Doing anything in the game changes the state your character is in. What state the character returns to is determined by the code describing the state they are in. It could be the case that the state a computer character is in by default (the standing there do nothing type state) is entirely different from the default state of a human character. If that were the case, if you added the memory address for goro's punch to the correct spot of the code and the punch was triggered, it'd be possible that when the punch is done it would try to return to the wrong default state.
An example of this in action would be MKT for PSX. It is possible to screw up the game to load the wrong character's graphics. I have caused this glitch and ended up with a Sub Zero that the computer thinks is Shang Tsung. He has no sound effects (probably because sounds are loaded per round in PSX so it was calling for sounds not loaded into memory), and no special moves worked. When I tried to do one of sub zero's moves, sub zero would go into a super fast stance that he could not get out of without his opponent hitting him. That's a case where it tried to change a state, but it wasn't a state that character should have been able to enter and so it freaked out and ended up continuing the animation sequence it was in, while losing the timing and ability to input because those things would be associated with the state itself. Weird stuff.
I don't observe the glitches so much as the gameplay though (i.e. why are character graphics the last thing updated on the screen in MK2, MK3, UMK3, why do special move triggers register between hit box collisions, and stuff like that).
One thing thats a bit misleading about what you said was referring to variables. A variable would usually be a pointer to a memory address. They don't use variables in these old games, they just use the memory addresses, so its more like there is an address where a bit of info is stored.
My guess as far as the special moves is that each special move is a line of instructions starting at a particular memory address and when you trigger a special move, depending on what the special move is, the computer is directed to a different memory address to figure out the code to make that happen. So, as you said, if you can find a way to change what section of memory the special move points to, you could theoretically change what actions are triggered by a move.
But, I don't think being able to do this would necessarily be enough to make a completely playable version of Shang or Goro. Doing anything in the game changes the state your character is in. What state the character returns to is determined by the code describing the state they are in. It could be the case that the state a computer character is in by default (the standing there do nothing type state) is entirely different from the default state of a human character. If that were the case, if you added the memory address for goro's punch to the correct spot of the code and the punch was triggered, it'd be possible that when the punch is done it would try to return to the wrong default state.
An example of this in action would be MKT for PSX. It is possible to screw up the game to load the wrong character's graphics. I have caused this glitch and ended up with a Sub Zero that the computer thinks is Shang Tsung. He has no sound effects (probably because sounds are loaded per round in PSX so it was calling for sounds not loaded into memory), and no special moves worked. When I tried to do one of sub zero's moves, sub zero would go into a super fast stance that he could not get out of without his opponent hitting him. That's a case where it tried to change a state, but it wasn't a state that character should have been able to enter and so it freaked out and ended up continuing the animation sequence it was in, while losing the timing and ability to input because those things would be associated with the state itself. Weird stuff.

0
Right. I apologize for the variables thing. I was trying to explain it the best I could. Sometimes my words just don't come out right, but I know what I'm trying to say. n_n;
As for changing what moves they do, I think it could work. My theory is that when a button is pressed, the reason why the game glitches are mainly due, if it isn't a lack of sprites that's the problem, is because it points to some strange data in the game that makes the computer confused as to what to do and just shuts down. I think if that's edited, then it would make them playable.
Though in some cases, it may actually be the button press itself, which I'll explain later in a MK2 thread of the same nature as this.
Glad someone shares my passion for game study! n_n
As for changing what moves they do, I think it could work. My theory is that when a button is pressed, the reason why the game glitches are mainly due, if it isn't a lack of sprites that's the problem, is because it points to some strange data in the game that makes the computer confused as to what to do and just shuts down. I think if that's edited, then it would make them playable.
Though in some cases, it may actually be the button press itself, which I'll explain later in a MK2 thread of the same nature as this.
Glad someone shares my passion for game study! n_n


About Me
TheProphet, GGs my friend. Give'em Hell.
0
Yeah I don't think it is just a matter of missing graphics either. I think its probably more like a boss move has more complicated triggers then a regular move. Kind of like how in Mame a number of the more complicated cheats to enable hidden characters (like playing as noob saibot in UMK3) require more then one bit of memory be accessed.
Have you ever tried out Noob in UMK3? Its pretty cool. They obviously put some work into making him playable but just didn't get it done in time or something. And then in Wavenet they made him playable.
Have you ever tried out Noob in UMK3? Its pretty cool. They obviously put some work into making him playable but just didn't get it done in time or something. And then in Wavenet they made him playable.

0
From what I can remember, weren't the old MKs programmed with C++ or Pascal? Anyways, i believe that in most programming languages, except for BASIC, if you create a variable, and don't set its value at the beginning of a function, like in C++ for example, that variable will be whatever is in the memory of the computer. In most cases, it's something like 26000 or something like that. Now, I don't know if variables have the same properties as memory addresses or not, but possibly is this what is happening? That a memory address is altered from its original value to whatever is stored in the computer? I'm just guessing, I don't know alot about memory addresses, as of this moment I'm learning C++, and moving on to Java. Does any of my stuff make sense?
Later


Later

0
Maybe it's just me, but I never did find it in two cheat files to play as Noob in UMK3. I don't know how to go about hacking those in MAME either so it's been an impossibility as of late. Perhaps you could send me a link to where I could find this? I'm very much interested in seeing that since I do have MAME.
And you are right with missing sprites not being too much of a cause, I just figured it might be a small problem. I would honestly love to see, even though it would probably be a novelty anyway, someone do a ROM hack where the bosses are playable.
And you are right with missing sprites not being too much of a cause, I just figured it might be a small problem. I would honestly love to see, even though it would probably be a novelty anyway, someone do a ROM hack where the bosses are playable.


About Me
TheProphet, GGs my friend. Give'em Hell.
0
KungLaoGlitch86 Wrote:
That a memory address is altered from its original value to whatever is stored in the computer?
Later


That a memory address is altered from its original value to whatever is stored in the computer?
Later
That does not make a whole lot of sense. Programs use memory for storage. Even the variables you are describing are just memory addresses. For instance, if you do:
int number;
in C++, you are creating a variable that points to a memory address and you reserve the memory for it to point to. And yes, it will usually have whatever garbage is in memory until you give it a value, the resident garbage can be anything.
You can see in C++ the difference between the memory address itself and the variable because you can make just a pointer and then give it the memory address. For instance if I make a class called Character I can do this:
Character *P1; // creates a pointer to a Character object
P1 = new Character; // reserves part of the memory for a new Character object and then returns the memory address of it to P1 for later access.
In this case P1 now stores a memory address, not the value found at that memory address. You can see the memory address any variable is stored at. If you have a variable called number, &number will show you its memory address (I think, its been a while so I could be mistaken).
But these are all characteristics of high level languages like C, Pascal, etc.
When we look at the code of the 2D MK games, we are looking at the assembly code that the game is made up of. In the case of the 2D arcade and cart games, there is no on the fly creation of new places in memory for storage. Everything is pretty much planned out in advance. That's why gameshark and MAME codes work. They pick a spot in the system's memory and change the value. They work every time we run the game because memory addresses are always used in the same way.
A different system would be something like Dreamcast. Games for this are often programmed in higher level code, so that games made for the Naomi and Naomi 2 arcade system could be altered a certain amount and recompiled for the Dreamcast instead (since they use the same processor architecture, but different amounts of resources). We can see the more dynamic nature of the Dreamcast's memory when people try to create things like Netplay for the dreamcast emulators. When I've spoken to people working on this, one of the problems that comes up is to do it effectively they would need to keep all the memory synced up across the net, because values are stored differently every time it runs.

0
RickL Wrote:
Maybe it's just me, but I never did find it in two cheat files to play as Noob in UMK3. I don't know how to go about hacking those in MAME either so it's been an impossibility as of late. Perhaps you could send me a link to where I could find this? I'm very much interested in seeing that since I do have MAME.
And you are right with missing sprites not being too much of a cause, I just figured it might be a small problem. I would honestly love to see, even though it would probably be a novelty anyway, someone do a ROM hack where the bosses are playable.
Maybe it's just me, but I never did find it in two cheat files to play as Noob in UMK3. I don't know how to go about hacking those in MAME either so it's been an impossibility as of late. Perhaps you could send me a link to where I could find this? I'm very much interested in seeing that since I do have MAME.
And you are right with missing sprites not being too much of a cause, I just figured it might be a small problem. I would honestly love to see, even though it would probably be a novelty anyway, someone do a ROM hack where the bosses are playable.
Check this out
Click here to watch 'umk3noob'




0
Nice screenshots, bud, but no offense, I really don't believe it until I see something like that Noob video there you posted. Screenshots are easily edited. Unless that IS a hack, Shang Tsung will just make the game crash hard, same with Goro. I've tried it before.
Pages: 1
© 1998-2025 Shadow Knight Media, LLC. All rights reserved. Mortal Kombat, the dragon logo and all character names are trademarks and copyright of Warner Bros. Entertainment Inc.