Mortal Kombat: Deception
|Mortal Kombat: Deception|
This game has unused playable characters.
This game has a prototype article
This game has a prerelease article
Mortal Kombat: Deception is the second installment of the Mortal Kombat series on sixth generation consoles and has a far darker tone than the previous game.
- 1 Unused Characters
- 2 Unused Graphics
- 3 Unused Sounds
- 4 Debug Functions
- 5 Unused Text
- 5.1 Internal Names
- 5.2 Konquest
- 5.3 Repository Log
- 5.4 Build Date
- 5.5 Acid Bath Reference
- 5.6 Placeholder Move List
- 5.7 Partial Script Output
- 5.8 MK6BANKS.mmb
- 6 Development Leftovers
- 7 Revisional Differences
The characters Drahmin, Frost, Kitana, and Nitara are present in the game files, yet they are not utilized in fights. It is likely that they were planned to be in Konquest missions but ended up being unused. The Action Replay codes for replacing Player 1 with these characters in the GameCube release have been provided below.
Locked Character Icons
Dairou, Kabal, and Kobra have unused locked icons despite being unlocked by default.
E3 End Screen
attract.ssf has a leftover end screen from the E3 demo.
Most of the unlockable videos from the Krypt have placeholder images present in krypt_art.ssf.
key_jade is an image of a jade colored key that was meant to be found during Konquest mode.
icon_cbicken is an icon of a chicken leg. It may have been intended for a scrapped mission.
Old Menu Textures
Three menu textures can be found in screen_engine.ssf which were used before they were replaced with gameplay of the respective game modes.
Before Noob and Smoke were merged into one character, Smoke was given his own ending. Only the narration remains.
Onaga was intended to be an unlockable character at some point and was going to have an ending. While the stills for it can be unlocked in the Krypt, the narration was left unused.
|"My goodnessǃ"||Unknown. Either a sound test or a scrapped soundbyte for Konquest mode.|
|"Fierceǃ"||Unknown. Either a sound test or a scrapped soundbyte for Konquest mode.|
|"Fabulousǃ"||Unknown. Either a sound test or a scrapped soundbyte for Konquest mode.|
|"Yummyǃ"||Unknown. Either a sound test or a scrapped soundbyte for Konquest mode.|
|"Toastyǃ"||Unknown. Either a sound test or a scrapped soundbyte for Konquest mode.|
|"Wonderfulǃ"||Unknown. Either a sound test or a scrapped soundbyte for Konquest mode.|
|"Hari-kiri"||An alternate take of the losing player finisher soundbyte, which features a different spelling of Hara-Kiri.|
|"Suicide"||Another alternate take of the losing player finisher soundbyte.|
|"Noob"||A leftover character selection soundbyte from when Noob was a separate character.|
|"Smoke"||A leftover character selection soundbyte from when Smoke was a separate character.|
|"Smoke Wins"||Another leftover soundbyte from when Smoke was a separate character.|
|"Smoke-Noob"||An alternate name for the Noob and Smoke tag team.|
|"Smoke-Noob Win"||A soundbyte that addresses Smoke-Noob as plural.|
|"Smoke-Noob Wins"||A soundbyte that addresses Smoke-Noob as singular, like the rest of the characters.|
|"Noob-Smoke Win"||The developers were also planning on referring to the final name of the Noob and Smoke tag team as plural.|
|"The Dragon King Wins"||A soundbyte that was used before they gave The Dragon King a proper name.|
|"The bridge is blocked off, so you will have to break the boards if you want cross."||One of Shujinko's tasks while at the Earthrealm village was to break some boards to progress to the next lesson.|
|"What you waiting for? Smash the boards."||More dialogue that was intended to be used for this scrapped task.|
|"This wayǃ Hurry upǃ"||Apep originally urged the player to follow him if they strayed from his path.|
|"Hurry upǃ"||Same as above.|
|"Come onǃ"||Same as above.|
|"Let's goǃ"||Same as above.|
Konquest Mission Dialogue
|"One moment, it seems we have a visitorǃ I am master Bo' Rai Choǃ And who might you be? "||There was originally a cutscene where Shujinko meets Bo' Rai Cho before their first lesson.|
|"My name is Shujinko. I did not mean to interrupt."||Same as above.|
|"Nonsenseǃ Would you like to train in the art of kombat?"||Same as above.|
|"You mean... you can teach me martial arts?"||Same as above.|
|"Of courseǃ I always have room for newer studentsǃ"||Same as above.|
|"I'm not sure. It looks like fun, but I doubt I can ever be good at it."||Same as above.|
|"Hahahaǃ Then you underestimate... my skills as a teacher."||Same as above.|
|"Why don't you visit each one of my classrooms. If you like what you see, I will take you on as my student."||Same as above.|
|"Okay, I will give it a try."||Same as above.|
|"Just wait outside and I will send someone to help you. Goodbyeǃ"||Same as above.|
|"Goodbyeǃ"||Same as above.|
Kid Shujinko Dialogue
|"Good job."||You might have been able to train as yourself in Konquest mode at some point in development.|
|"You learn quickly."||Same as above.|
|"That was easy."||Same as above.|
|"You were great."||Same as above.|
|"Success."||Same as above.|
|"Try again."||Same as above.|
|"You have failed."||Same as above.|
|"No, that was wrong."||Same as above.|
|"Unsuccessful."||Same as above.|
|"Better luck next time."||Same as above.|
|shell_0||A leftover soundbyte from Mortal Kombatː Deadly Alliance.|
|shell_1||A leftover soundbyte from Mortal Kombatː Deadly Alliance.|
|shell_2||A leftover soundbyte from Mortal Kombatː Deadly Alliance.|
|shell_3||A leftover soundbyte from Mortal Kombatː Deadly Alliance.|
Document the version numbers from the international releases.
In order to enable this debug function, you need to go to game options and select the gameplay menu. Hold L+Attack 1 for about six seconds and then it should display which game version you have. It appears to only work for the Xbox and PlayStation 2, as the function would later be disabled in the GameCube release, though the version number is still referenced in its executable.
|PlayStation 2 (USA)||0.098|
Once again, some files and code refer to debuting characters and arenas with their internal names.
|Internal name||Actual name|
Descriptions of three scrapped items are referenced in konquest_common.ssf.
Artifact Hmmm.... very mysterious...
Cyborg CPU A prototype technology to turn warriors into cyborgs.
Treasure Note Treasure is located between the prison and the ruins.
NIS NEEDED NIS NEEDED (ermac and ashrah fight discover netherrealm kamidugu)
NEED TEXT. STANDARD FIGHT. generic fighting mission - intro text generic straight fight generic straight fight - failure
The WEAPON1 is an elegant weapon. I will teach you to train your body and your mind to harness it's power. Finally, the WEAPON1 basic low attacks. Finally, I will teach you these devastating WEAPON1 power and pop-up attacks. Finally, show me you can handle WEAPON1 basic combos. Next you will practice WEAPON1 advanced combos.
The scrapped Earthrealm village objective is also referenced in text.
Press } to break the boards
The scrapped cutscene where Bo' Rai Cho meets Shujinko is referenced in text as well.
One moment -- it seems we have a visitor! I am Master Bo' Rai Cho. And who might you be? Nonsense! Would you like to train in the art of kombat? Of course! I always have room for new students. Ha ha! Then you underestimate my skills as a teacher! Why don't you visit each one of my classrooms? If you like what you see, I will take you on as my student. Just wait outside and I will send someone to help you. Goodbye. My name is Shujinko. I did not mean to interrupt. You mean... you can teach me martial arts? I'm not sure. It looks like fun, but I doubt I could ever be good at it. OK, I will give it a try. Goodbye!
Starting at 0x39D7C0 and scattered throughout the Xbox executable are fragments of a log pulled from a Renderware SDK source code repository.
@@@@(#)$Id: //RenderWare/RW36Active/rwsdk/plugin/hanim/rphanim.c#1 $ @@@@(#)$Id: //RenderWare/RW36Active/rwsdk/plugin/hanim/stdkey.c#1 $ @@@@(#)$Id: //RenderWare/RW36Active/rwsdk/plugin/matfx/rpmatfx.c#1 $ @@@@(#)$Id: //RenderWare/RW36Active/rwsdk/plugin/matfx/xbox/effectPipesXbox.c#2 $ @@@@(#)$Id: //RenderWare/RW36Active/rwsdk/plugin/matfx/xbox/multitexxbox.c#1 $ @@@@(#)$Id: //RenderWare/RW36Active/rwsdk/plugin/matfx/multiTex.c#1 $ @@@@(#)$Id: //RenderWare/RW36Active/rwsdk/plugin/matfx/multiTexEffect.c#1 $ @@(#)$Id: //RenderWare/RW36Active/rwsdk/src/batextur.c#2 $ @@(#)$Id: //RenderWare/RW36Active/rwsdk/src/plcore/bastream.c#1 $ wb ab @@(#)$Id: //RenderWare/RW36Active/rwsdk/src/plcore/babinary.c#1 $ @@@@(#)$Id: //RenderWare/RW36Active/rwsdk/src/baraster.c#1 $ @@(#)$Id: //RenderWare/RW36Active/rwsdk/src/bacamera.c#2 $ @@@@(#)$Id: //RenderWare/RW36Active/rwsdk/src/baimage.c#1 $ @@(#)$Id: //RenderWare/RW36Active/rwsdk/src/baframe.c#1 $ @@(#)$Id: //RenderWare/RW36Active/rwsdk/src/plcore/bamatrix.c#1 $ @@(#)$Id: //RenderWare/RW36Active/rwsdk/src/badevice.c#2 $ @@(#)$Id: //RenderWare/RW36Active/rwsdk/src/batypehf.c#1 $ @@(#)$Id: //RenderWare/RW36Active/rwsdk/src/pipe/p2/baim3d.c#1 $ @@(#)$Id: //RenderWare/RW36Active/rwsdk/src/plcore/bafsys.c#1 $ @@(#)$Id: //RenderWare/RW36Active/rwsdk/src/baimras.c#1 $ @@(#)$Id: //RenderWare/RW36Active/rwsdk/src/plcore/batkbin.c#1 $ @@(#)$Id: //RenderWare/RW36Active/rwsdk/src/babinfrm.c#1 $ @@(#)$Id: //RenderWare/RW36Active/rwsdk/src/plcore/baerr.c#1 $ @@(#)$Id: //RenderWare/RW36Active/rwsdk/src/plcore/batkreg.c#2 $ @@(#)$Id: //RenderWare/RW36Active/rwsdk/src/plcore/baresour.c#1 $ @@@@(#)$Id: //RenderWare/RW36Active/rwsdk/driver/xbox/xbcache.c#1 $ @@@@(#)$Id: //RenderWare/RW36Active/rwsdk/driver/xbox/xbrendst.c#1 $ @@(#)$Id: //RenderWare/RW36Active/rwsdk/src/plcore/bavector.c#1 $ @@(#)$Id: //RenderWare/RW36Active/rwsdk/src/plcore/bamemory.c#2 $ @@(#)$Id: //RenderWare/RW36Active/rwsdk/src/pipe/p2/p2core.c#1 $ @@@@(#)$Id: //RenderWare/RW36Active/rwsdk/driver/xbox/xbdevice.c#1 $ @@@@(#)$Id: //RenderWare/RW36Active/rwsdk/driver/xbox/xbmemory.c#1 $ @@@@(#)$Id: //RenderWare/RW36Active/rwsdk/driver/xbox/xbraster.c#1 $ @@(#)$Id: //RenderWare/RW36Active/rwsdk/src/pipe/p2/bapipe.c#1 $ @@(#)$Id: //RenderWare/RW36Active/rwsdk/src/babintex.c#1 $ @@(#)$Id: //RenderWare/RW36Active/rwsdk/src/baresamp.c#1 $ @@(#)$Id: //RenderWare/RW36Active/rwsdk/src/plcore/rwstring.c#1 $ @@(#)$Id: //RenderWare/RW36Active/rwsdk/src/babbox.c#1 $ @@(#)$Id: //RenderWare/RW36Active/rwsdk/src/basync.c#1 $ @@(#)$Id: //RenderWare/RW36Active/rwsdk/os/xbox/osintf.c#1 $ @@(#)$Id: //RenderWare/RW36Active/rwsdk/src/plcore/bacolor.c#1 $ @@(#)$Id: //RenderWare/RW36Active/rwsdk/src/pipe/p2/p2heap.c#1 $ @@@@(#)$Id: //RenderWare/RW36Active/rwsdk/src/pipe/p2/xbox/im3dpipe.c#1 $ @@@@(#)$Id: //RenderWare/RW36Active/rwsdk/src/plcore/resmem.c#1 $ @@(#)$Id: //RenderWare/RW36Active/rwsdk/src/pipe/p2/p2dep.c#1 $ @@(#)$Id: //RenderWare/RW36Active/rwsdk/src/pipe/p2/p2renderstate.c#1 $ @@@@(#)$Id: //RenderWare/RW36Active/rwsdk/driver/xbox/xb2drend.c#2 $ @@@@(#)$Id: //RenderWare/RW36Active/rwsdk/driver/xbox/xbtexdic.c#1 $ @@@@(#)$Id: //RenderWare/RW36Active/rwsdk/driver/xbox/xbsprite.c#1 $ @@@@(#)$Id: //RenderWare/RW36Active/rwsdk/driver/xbox/xbconvrt.c#1 $ @@@@(#)$Id: //RenderWare/RW36Active/rwsdk/src/pipe/p2/xbox/nodeXBoxSubmitNoLight.c#1 $ @@(#)$Id: //RenderWare/RW36Active/rwsdk/src/pipe/p2/p2resort.c#1 $ @@(#)$Id: //RenderWare/RW36Active/rwsdk/driver/common/palquant.c#1 $ @@(#)$Id: //RenderWare/RW36Active/rwsdk/world/baclump.c#1 $ @@(#)$Id: //RenderWare/RW36Active/rwsdk/world/balight.c#1 $ @@(#)$Id: //RenderWare/RW36Active/rwsdk/world/baworobj.c#1 $ @@(#)$Id: //RenderWare/RW36Active/rwsdk/world/bageomet.c#1 $ @@(#)$Id: //RenderWare/RW36Active/rwsdk/world/baworld.c#2 $ @@(#)$Id: //RenderWare/RW36Active/rwsdk/world/bamatlst.c#1 $ @@@@(#)$Id: //RenderWare/RW36Active/rwsdk/world/pipe/p2/xbox/xblights.c#1 $ @@(#)$Id: //RenderWare/RW36Active/rwsdk/world/bamateri.c#1 $ @@@@(#)$Id: //RenderWare/RW36Active/rwsdk/world/pipe/p2/xbox/xbpipe.c#1 $ @@@@(#)$Id: //RenderWare/RW36Active/rwsdk/world/pipe/p2/xbox/nodeXBoxAtomicAllInOne.c#1 $ @@@@(#)$Id: //RenderWare/RW36Active/rwsdk/world/pipe/p2/xbox/xbvtxfmt.c#1 $ @@@@(#)$Id: //RenderWare/RW36Active/rwsdk/world/pipe/p2/xbox/xbpixelshader.c#1 $ @@@@(#)$Id: //RenderWare/RW36Active/rwsdk/world/pipe/p2/xbox/nodeXBoxWorldSectorAllInOne.c#1 $ @@(#)$Id: //RenderWare/RW36Active/rwsdk/world/bamesh.c#1 $ @@@@(#)$Id: //RenderWare/RW36Active/rwsdk/world/pipe/p2/xbox/native.c#1 $ @@(#)$Id: //RenderWare/RW36Active/rwsdk/world/pipe/p2/bapipew.c#2 $ @@(#)$Id: //RenderWare/RW36Active/rwsdk/world/babinwor.c#2 $ @@(#)$Id: //RenderWare/RW36Active/rwsdk/world/basector.c#1 $ @@@@(#)$Id: //RenderWare/RW36Active/rwsdk/world/pipe/p2/xbox/wrldpipe.c#1 $ @@@@(#)$Id: //RenderWare/RW36Active/rwsdk/plugin/skin2/rpskin.c#1 $ @@@@(#)$Id: //RenderWare/RW36Active/rwsdk/plugin/skin2/xbox/skinxboxrender.c#1 $ @@@@(#)$Id: //RenderWare/RW36Active/rwsdk/plugin/skin2/xbox/skinxboxconstantmode.c#1 $ @@@@(#)$Id: //RenderWare/RW36Active/rwsdk/plugin/skin2/xbox/skinxboxformat.c#1 $ @@(#)$Id: //RenderWare/RW36Active/rwsdk/plugin/skin2/xbox/skinxbox.c#1 $ @@@@(#)$Id: //RenderWare/RW36Active/rwsdk/plugin/skin2/xbox/skinxboxinstance.c#1 $ @@@@(#)$Id: //RenderWare/RW36Active/rwsdk/plugin/skin2/bsplit.c#1 $ @@@@(#)$Id: //RenderWare/RW36Active/rwsdk/plugin/skin2/xbox/skinplatform.c#1 $ @@@@(#)$Id: //RenderWare/RW36Active/rwsdk/plugin/skin2/xbox/skinxboxplain.c#1 $ @@(#)$Id: //RenderWare/RW36Active/rwsdk/tool/quat/rtquat.c#1 $ @@@@(#)$Id: //RenderWare/RW36Active/rwsdk/plugin/anisot/rpanisot.c#1 $ @@@@(#)$Id: //RenderWare/RW36Active/rwsdk/tool/anim/rtanim.c#2 $ @@(#)$Id: //RenderWare/RW36Active/rwsdk/src/babincam.c#1 $
Present at 0x39DDE0 in the Xbox executable is a build date for RenderWare.
Core built at May 31 2004 18:49:12
Acid Bath Reference
permanent_strings.ssf has a reference to Acid Bath, an arena from the previous game. Considering that it is not unlockable, it might have been used as a placeholder until the other stages were finished or it ended up getting cut early in development.
Placeholder Move List
The move list will display some placeholder text when you play as a NPC.
STYLE ONE ATTACK ONE STYLE ONE COMBO ONE STYLE TWO ATTACK ONE STYLE TWO COMBO ONE STYLE THREE ATTACK ONE STYLE THREE COMBO ONE SPECIAL MOVES NAME
Partial Script Output
Most of the characters in the GameCube release have some leftover text that seems to have been from a script that generates art assets.
isc\menu\buttons\gc\eng\buttonc�ncel.tga not found isc\menu\buttons\gc\eng\buttont�yagain.tga not found isc\konquest\eng\outstanding.tg� not found�ound
A file that lists sound assets from an early build of the game is present only in the Xbox release. It also provides further evidence that the Acid Bath arena was present in the game at some point.
announcr.msb announcr_names.msb bg_acid_bath.msb bg_beetle_lair.msb c_jax.msb c_scorpion.msb chess.msb fighter_eb.msb fighter_jax.msb fightfx1.msb fs_concrete.msb fs_dirt.msb fs_marble.msb konq_lipsynch_test.msb konquest_intro.msb konquest_mk6.msb mk5tune1.msb music_fatality.msb pf_fat_crusher.msb pf_fat_grinder.msb pf_fat_weight.msb pf_fightfx1.msb pf_jax.msb pf_scorpion.msb puzzle.msb shell.msb
Just like the previous game, an executable with debug symbols named mk6gc_release.elf is present in the root of the GameCube release.
Additionally, a linker map for the ELF executable named mk6gc_release.MAP is present only in the GameCube release. It lists all of the game's functions, including many that ended up unused.
|Download Mortal Kombatː Deception Linker Map
File: MKDeception_LinkerMap.zip (629KB) (info)
The GameCube port has a few revisional differences due to coming out several months after the game's initial release.
- Goro and Shao Kahn were included as exclusive playable characters.
- Hotaru, Havik, Jade, Kira, Li Mei, and Noob-Smoke were unlocked by default, unlike in other releases.
- The Xbox port has a variation of konquest.sfd with footage from an unfinshed version of Konquest mode. Old Shujinko was not implemented yet, so Kid Shujinko's model was being used as a placeholder. This video was later replaced with gameplay of the retail version.