the cutting room mirror

Mortal Kombat: Deception

This article has a talk page!
view on tcrf.net

Mortal Kombat: Deception is the second installment of the Mortal Kombat series on the PS2, Xbox, and GameCube. It has a far darker tone than the previous game.

Sub-Pages#

Unused Arenas#

Katakombs#

MKD_Katakombs.png

Katakombs.ssf is an ice-themed arena that is normally inaccessible given that the executable is missing the file table needed to load the level. It can be patched back in by using Ermaccer's MKDHook.

(Source: ermaccer)

pfx_debug#

MKD_pfx_debug.png

A test arena with a checkerboard floor and a green cube at the center. It does not appear to be playable, as the startup script referenced in the level's ssf file seems empty.

Unused Characters#

The characters Drahmin, Frost, Kitana, and Nitara are present in the game's 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

Action Replay code

Drahmin

003AE747 0000002B

Frost

003AE747 00000029

Kitana

003AE747 0000002A

Nitara

003AE747 00000027

Kitana and Frost would later become playable in Mortal Kombat Unchained, a PSP port of Deception.

Unused Graphics#

Locked Character Icons#

Dairou, Kabal, and Kobra have unused locked icons. They're unlocked by default in the final game, suggesting a different set of available characters were available at one point in development.

MKD_head_dairou_locked.png MKD_head_kabal_locked.png MKD_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_chicken is an icon of a chicken leg. It may have been intended for a scrapped mission. MKD_icon_chicken.png

(Source: MattJ155)

Unused Sounds#

Endings#

Smoke#

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

Smoke had been reprogrammed to serve Noob Saibot, who had brought him to the Netherrealm. Noob believed that Smoke had no soul. Smoke still had a small amount of good left in him, however, which made his presence in Hell incapacitating. Smoke was immobilized by the input his sensors translated as pain.

To protect Smoke from harm, his nanotech systems worked furiously to counter the evil forces that were unleashed upon his body. When they were finally brought into balance, Smoke became much more than a mere cyborg ninja...

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. Possibly a scrapped soundbyte for Konquest mode or one of the mini-games.

"Fierceǃ"

"Fabulousǃ"

"Yummyǃ"

"Toastyǃ"

"Wonderfulǃ"

"Hari-kiri"

An alternate soundbyte for Hara-Kiri, featuring a mispronunciation of the term.

"Suicide"

Another alternate and very blunt soundbyte for Hara-Kiri.

"Noob"

A leftover character selection soundbyte from when Noob was a separate character. He's notably addressed as just "Noob" rather than his full name of "Noob Saibot."

"Smoke"

A leftover character selection soundbyte from when Smoke was a separate character.

"Smoke-Noob"

An alternate name for Noob-Smoke, with Smoke at the forefront.

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

A soundbyte that addresses Noob-Smoke as plural.

"The Dragon King Wins"

A soundbyte that was used before Onaga was given 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ǃ"

"Come onǃ"

"Let's goǃ"

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 a cutscene where Shujinko meets Bo' Rai Cho before their first lesson.

"My name is Shujinko. I did not mean to interrupt."

"Nonsenseǃ Would you like to train in the art of kombat?"

"You mean... you can teach me martial arts?"

"Of courseǃ I always have room for newer students."

"I'm not sure. It looks like fun, but I doubt I can ever be good at it."

"Hahahaǃ 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."

"Okay, I will give it a try."

"Just wait outside and I will send someone to help you. Goodbyeǃ"

"Goodbyeǃ"

Kid Shujinko Dialogue#

Audio

Transcription

Usage

"Good job."

You might have been able to train as yourself in Konquest mode at some point in development.

"You learn quickly."

"That was easy."

"You were great."

"Success."

"Try again."

"You have failed."

"No, that was wrong."

"Unsuccessful."

"Better luck next time."

shell_1

Leftover sounds from Mortal Kombatː Deadly Alliance.

shell_2

shell_3

Debug Functions#

Game Version#

To do:
Document the version numbers from the international releases.

MKDeception_PS2VersionNumber.png

The game version can be displayed by going to game options and selecting the gameplay menu. Hold L+Attack 1 for about six seconds and it should appear on the bottom-right corner. This functionality is disabled by default in the GameCube port, though it can toggled back on with an AR code.

Release

Version Number

Xbox (USA)

0.098

GameCube (USA)

0.142_gc

PlayStation 2 (USA)

0.098

Release

Action Replay code

GameCube (USA)

041AD0C0 41820048

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#

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.

(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#

permanent_strings.ssf has a reference to Acid Bath, an arena from the previous game. Considering that it is not unlockable, it might have ended up getting cut in favor of bringing back Dead Pool from Mortal Kombat II.

ACIDBATH

Placeholder Move List#

The move list will display some placeholder text when you play as an 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 Acid Bath was a playable arena at some point during development.

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 inside the root folder from the GameCube release.

Linker Map#

Additionally, a linker map for the ELF executable named mk6gc_release.MAP is present only in the GameCube release.

Download Mortal Kombatː Deception Linker Map

File: MKDeception_LinkerMap.zip (629KB) (info)

Regional Differences#

In France, the game is sold under the title of Mortal Kombat: Mystification, as the word "DÉCEPTION" in French translates to "disappointment." A game called Mortal Kombat: Disappointment would be a rather hard sell indeed.

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 are included as exclusive playable characters as a sort of apology for the lack of online play.
  • Hotaru, Havik, Jade, Kira, Li Mei, and Noob-Smoke are unlocked by default, unlike in other releases.

Xbox

GameCube

MKD_KONQUEST.sfd_original.mp4
MKD_KONQUEST.sfd_fixed.mp4
  • 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 final version.

Bonus Disc#

To do:
Describe the extra content better. Check if anything on this disc is unused.

The Premium Pack (PS2) / Kollector's Edition (Xbox) adds a second disc containing an emulated arcade version of Mortal Kombat and bonus videos.