Please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Mortal Kombat: Deception

From The Cutting Room Floor
Jump to navigation Jump to search

Title Screen

Mortal Kombat: Deception

Developer: Midway Games
Publisher: Midway Games
Platforms: PlayStation 2, Xbox, GameCube
Released in US: October 4, 2004 (PS2/Xbox), February 28, 2005 (Gamecube)
Released in EU: November 19, 2004 (PS2/Xbox), March 1, 2005 (Gamecube)


CharacterIcon.png This game has unused playable characters.
DevTextIcon.png This game has hidden development-related text.
GraphicsIcon.png This game has unused graphics.
SoundIcon.png This game has unused sounds.
TextIcon.png This game has unused text.
DebugIcon.png This game has debugging material.
Carts.png This game has revisional differences.


PrereleaseIcon.png This game has a prerelease article

Hmmm...
To do:
  • According to the linker map, the debug functions display_debug_damage and trial_debug_mission_list appear to be still in the GameCube release. Create an Action Replay code for them and document.
  • pfx_debug.ssf is present in all releases of the game. Find out what it goes to.

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.

Unused Characters

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.

Character AR code
Drahmin 003AE747 0000002B
Frost 003AE747 00000029
Kitana 003AE747 0000002A
Nitara 003AE747 00000027

Unused Graphics

Locked Character Icons

Dairou, Kabal, and Kobra have unused locked icons despite being unlocked by default.

MKD head dairou locked.pngMKD head kabal locked.pngMKD head kobra locked.png

E3 End Screen

attract.ssf has a leftover end screen from the E3 demo.

MKD endscreen.png

Video Placeholders

Most of the unlockable videos from the Krypt have placeholder images present in krypt_art.ssf.

Konquest Items

key_jade

key_jade is an image of a jade colored key that was meant to be found during Konquest mode.

MKD sec key jade.png

icon_chicken

icon_cbicken is an icon of a chicken leg. It may have been used for a scrapped mission.

MKD icon chicken.png
(Source: MattJ155)

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.

Mkd screen engine 000006c6.png

Mkd screen engine 000006c4.png Mkd screen engine 000006ae.png

Unused Sounds

Endings

Smoke

Before Noob and Smoke were merged into one character, Smoke was given his own ending. Only the narration remains.

Onaga

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.

Announcer Dialogue

Audio Transcription Usage
"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.

Apep Dialogue

Audio Transcription Usage
"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

Audio Transcription Usage
"One moment, it seems we have a visitorǃ I am master Bo' Rai Choǃ And who might you be? " There was originally more dialogue before the first lesson with Bo' Rai Cho.
"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

Audio Transcription Usage
"Good job." You might have been able to train as yourself in Konquest mode at one point.
"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.

Menu Sounds

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.

Debug Functions

Game Version

Hmmm...
To do:
Document the version numbers from the international releases.
MKDeception PS2VersionNumber.png

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.

Release Version Number
Xbox (USA) 0.098
GameCube (USA) 0.142_gc
PlayStation 2 (USA) 0.098

Unused Text

Internal Names

Once again, some files and code refer to debuting characters and arenas with their internal names.

Internal name Actual name
cassius Darrius
freak Monster
kollapsing_kliffs Falling Cliffs
monk Shujinko
netherbelly Nethership Interior
skab Havik

Konquest

Scrapped Items

Descrptions of several 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.
(Source: MattJ155)

Placeholder Text

konquest_common.ssf
NIS NEEDED
NIS NEEDED (ermac and ashrah fight discover netherrealm kamidugu)
kq_er2_fight.ssf
NEED TEXT. STANDARD FIGHT.
generic fighting mission - intro text
generic straight fight
generic straight fight - failure
kq_cr1_fight.ssf
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.


Miscellaneous

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!

Repository Log

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 $

Build Date

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.

ACIDBATH

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

MK6BANKS.mmb

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 one 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

Development Leftovers

ELF executable

Just like the previous game, an executable with debug symbols named mk6gc_release.elf is present in the root of the GameCube release.

Linker Map

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.png Download Mortal Kombatː Deception Linker Map
File: MKDeception_LinkerMap.zip (629KB) (info)

Revisional Differences

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.
Xbox GameCube
  • 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.