Luigi's Mansion (GameCube)/Unused Code
This is a sub-page of Luigi's Mansion (GameCube).
Please elaborate. Having more detail is always a good thing. |
This page or section has one or more broken YouTube links. Please find an archived version of the video(s) or a suitable replacement. Specifically: Unused Screen Settings video has been set to Private |
Contents
- 1 Unused Multiplayer Mode
- 2 Unused Poisoned State
- 3 Unused Luigi Fear States
- 4 Vacuum Overheat Shake & Skipped Meter Write
- 5 Unused EnFrighten Appear Type
- 6 Unused Screen Settings
- 7 Unused Speedy Spirits
- 8 Riding Poltergust in American and Japanese builds
- 9 Game Boy Horror Ghost Tracker
- 10 Unused/Leftover Script Tags
- 11 Unused CTP Parameter Fields
- 12 Unused Sheet Behaviors
- 13 Unused Conditions
Unused Multiplayer Mode
An unused two-player splitscreen can be activated with a simple Action Replay code. When the code is activated, a second Luigi will spawn and it will bind the second controller port to it. When both Luigi are near each other, only the first player's camera is shown; moving further away causes the game to go into splitscreen mode. The second Luigi may act a little broken, since you can't properly stun ghosts as well as enter rooms that the first Luigi isn't in. Doors will take a while for the second Luigi to enter through, and captured ghosts by the second Luigi won't actually count.
Unused Multiplayer Mode:
Version | Encrypted | Decrypted |
---|---|---|
Europe (Revision 2) | B2Y9-GX8A-MRZZ0 0WMY-12C3-ZG2YC 975R-DH4Y-UZ21P T51C-YTEZ-B5C5Y 178B-T03H-9E0EE X54D-33F7-60HFD E7Y8-UN0P-BGYQF T12K-K3FF-DCP91 TZY3-U7UR-7K667 AY42-JJMM-RPJJT F0UA-4NAK-XJ8Y4 AZB7-1X81-Z5KB4 U202-DDDR-J87KG 758N-H8XU-VQ1C0 KHE9-WEC6-93ZEC UJDE-4A76-W4W0H Y80K-NP48-VBE5X FQ2E-VCHF-H4PTD |
044C5770 00000001 040058FC 483739E4 043792E0 7C0802A6 043792E4 90010004 043792E8 9421FFF0 043792EC 38600098 043792F0 4BE589D5 043792F4 38800001 043792F8 906D011C 043792FC 4BE61695 04379300 38210010 04379304 80010004 04379308 7C0803A6 0437930C 4E800020 04075560 800D011C 0400CA40 60000000 0400CAA0 60000000 0403FE58 60000000 |
USA | NRP6-DBEB-UUCR5 DUNR-1FY6-U1Q35 2W9B-ANPE-7Z5VQ 84KV-ZC6P-9MW55 U8V6-M47X-HXB7A UGC3-N4XX-K9Z4N QZPX-E9E6-VNV83 A3KF-V4YF-BPJR9 CWZG-U5PK-ET3JF 9YBU-PH33-2UVJW QVUT-7PZ3-WMENY WEYJ-Y1AX-1A4QU F753-Q4QC-AQE2J 8XZU-AYV6-HKWQE 6DX2-UABH-R7CQ1 X3N4-TJN7-H999U AVQZ-8FJQ-Q3AX3 RDNM-ACC0-ZG9H6 726G-GGVR-G7MMZ GRTM-3V95-Z847Y T6KR-5JQE-FU6FM HVM3-A3DW-J6RAX |
044D80B0 00000001 04005894 483829CC 04388260 7C0802A6 04388264 90010004 04388268 9421FFF0 0438826C 38600098 04388270 4BE46495 04388274 38800001 04388278 906D011C 0438827C 4BE4F01D 04388280 38210010 04388284 80010004 04388288 7C0803A6 0438828C 4E800020 040726D8 800D011C 04079EB4 60000000 04079E6C 48000010 040B943C 3003FFFE 0400BBC4 60000000 0400BC24 60000000 0403E7D8 60000000 04079574 60000000 |
Unused Poisoned State
Luigi has an unused "poisoned" state in which he moans, loses health (and coins), expels purple heart particles, plays a wobbling sound, and uses an unused animation called DOKU_LP (POISON_LOOP) in which he dances between each foot and holds himself while choking. In the animation he also uses the otherwise-unused sad eyes texture and puffs his cheeks out. At the end of the animations he slaps his face.
To activate it, enter one of the following Action Replay codes and then press B + D-Pad Up:
Version | Encrypted | Decrypted |
---|---|---|
USA | CYZJ-HD1Q-DVHH3 J3U2-9UWV-YBCPR UE09-PJ70-E6U18 UTKZ-60UJ-4PAB0 |
00BA32FB 08000000 4A4CAFD0 00000208 323A2B84 00008050 423A2B84 09A44320 |
Europe | F5HC-5TPP-9FXCD KHWK-6VN2-KMZ4J ZU4Y-G8FC-CV1U8 RWW2-RV33-5BYXF |
00725BE5 18000000 4A4B8590 00000208 3238FDE4 00008050 4238FDE4 09A44320 |
Europe Demo | 4B7D-244B-9R563 420U-FF3R-QEQR9 V7WB-NKKZ-9TU68 W0T0-NJJU-CDNVX |
00724C0A 18000000 CA4BA890 00000208 323920E4 00008050 423920E4 09A44320 |
Unused Luigi Fear States
The game holds three more unused modes for Luigi, which consist of a near-identical replica of the crawl sequence used when the unused purple ghosts scare him in the E3 2001 demo, the pink ghost scare attack from the Nintendo Difference build, and an otherwise-unseen "alert" mode.
The first has Luigi's health limit capped to its half, 50 HP, while he crawls uncontrollably across the room he's in, in a very similar fashion to E3 2001. It should be noted that, despite the similarity to the earlier build's crawl sequence, this routine seems to have been updated with a couple of features such as a sweat particle effect which is used in Toad's crying animation on the retail build, and the way he crawls automatically - control stick input only changing his direction - and much faster in comparison. There are unused ghost animations associated with this.
The second routine caps his health to 70 HP, as happens with the pink ghost's scare seen on Nintendo Difference. However, Luigi's movement speed is lowered and his head is locked to a looking-down position; although that's apparently the maximum extent of this state, the game is actually attempting to make him play an animation that is not defined properly, so it defaults to 00 (Wait/Standstill) instead.
The third, interestingly, only seems to trigger on lit rooms. When in this state, Luigi enters a frightened/scared state, which plays in place of his normal idle animation, and the engine plays one of his "uneasy" voice clips. He also tiptoes instead of walking during movement.
Start crawl routine upon damage:
Version | Encrypted | Decrypted |
---|---|---|
Japan | CW4N-ZM38-VR30T A49B-7WVE-YUKKY |
040B4990 38000064 040B7A88 38800000 |
USA | CXB3-W1KK-W6N3N NHTV-WKGT-1BJA5 |
040B6220 38000064 040B9314 38800000 |
Europe | YG1T-EE88-MQE6Q AMDT-V9QH-BKY8K |
040B95AC 38000064 040BC72C 38800000 |
Vacuum Overheat Shake & Skipped Meter Write
At 800B8660, there's code which sets up a shake effect for the Poltergust. Such effect appears to be very similar, or identical, to the shaking seen while the vacuum was overheating at E3 2001 and earlier builds of the game. The intensity of the effect always reads zero, so it's never seen, even when sucking up an explosive Spark ghost. The Action Replay code below sets its intensity to 1. When it's active, a boxing explosion-like sound is heard constantly. Additionally, on the same area at 800B8654, there's some never-accessed code which writes directly to the unseen Ghost Counter's number. It originally writes 10 (0x0A), but it can be changed to other values. This segment of code could have been from when the meter kept track of heat level and reached its maximum.
Version | Activate shake | Set Ghost Counter to 10 |
---|---|---|
USA | 040B8678 C0029C98 | 040B8650 60000000 |
Europe | 040BBA78 C00DBA38 | 040BBA50 60000000 |
Unused EnFrighten Appear Type
On creation, ordinary ghosts have a pointer to EnFrighten, an unused behavior resembling the purple ghost's jumpscare attack seen in the E3 2001 demo. This pointer is unused due to ghosts using value 2 for the appear_type property in the enemy JMP listing, which runs the usual ghost appearance EnAppear. Changing a ghost's appear_type to 1 restores EnFrighten in place of their usual appearance, however it crashes during its range check due to an invalid pointer read/function call starting at 800D4C10. What this was meant to do is unclear.
The codes below fix the crash and force ghosts to use this behavior; however, the way it's set up makes the ghosts uncatchable due to the code which enables stunning never running.
Version | Gecko | Action Replay |
---|---|---|
USA | 040c9284 38a3030c 040d4bd8 c00d53c0 040d4c14 60000000 040d4c18 60000000 040d4c1c 60000000 040d4c20 60000000 |
92MV-Q4XV-98KHX 17WZ-DY7T-RU2DH VRRG-YG92-3TZ5W 77QH-PWW0-74EUZ 95D5-DH9P-0G3GK W2EU-ZTZA-GMYMH M641-CCNY-Y2AHX |
Europe | 040cc72c 38a3030c 040d8018 c00d54d8 040d8054 60000000 040d8058 60000000 040d805c 60000000 040d8060 60000000 |
29ZK-DVD4-KHVKX 1H0C-K125-YNPYC HX98-WNW2-Z2QEJ DCR2-XCGZ-CFUGQ TQ7Y-WHE1-3JFR7 41JY-K210-E6HK1 1V35-DUDQ-PP6CF |
Japan | 040c798c 38a3030c 040d3338 c00d5310 040d3374 60000000 040d3378 60000000 040d337c 60000000 040d3380 60000000 |
BN9H-H412-Z904U 9VQK-PHG7-HVK1M JYZZ-09JD-DQGMT MWQ6-XGY6-KNR4T 4KCA-BR4T-46TC2 213A-NWPV-VT2YZ PRA1-WVKE-2M03Q |
Unused Screen Settings
This page or section has one or more broken YouTube links. Please find an archived version of the video(s) or a suitable replacement. |
The function 80010F20 manages screen scale and positioning. The code used for the default screen and the GBH camera viewport is found here, but skipped code exists at 800110AC which changes the viewport's size to 560x430 and the XY offsets to 40 and 30 respectively. The resulting size and positioning look very similar to those of a zoom mechanic seen in pre-release footage. The graphic that would wrap around it was seemingly removed, but graphics with a border of the same style can be seen in the Pause and File Select screens. The Action Replay codes below force this setting in-game.
NA | EU |
---|---|
04010FD4 48000010 | 04011BB4 48000010 |
Unused Speedy Spirits
Luigi's Mansion used to have 25 Speedy Spirits, though only 15 Speedy Spirits are used. Speedy Spirits 16 - 20 still have their dependencies to appear in-game and function (if they're given properties like behavior, money count, etc.) However, Speedy Spirits 21 - 25 had most of their data deleted, aside from leftover parameter files hinting at their existence.
Riding Poltergust in American and Japanese builds
Exclusively in the European version of the Hidden Mansion, Luigi rides the Poltergust 3000 during the Boolossus battle. Despite this, the implementation for the riding state had already been complete for the North American and Japanese builds, but is never triggered.
The Gecko codes below make Luigi always start in the riding Poltergust state:
NA | JP |
---|---|
040ADF20 90DD134C
040ADF24 981D134C |
040AC8A0 90DD134C
040AC8A4 981D134C |
The European version of the game has the camera zoom in and out after the riding state is triggered that had not yet been implemented for North America and Japan. Additionally, the Luigi player object has a new float property (0x134c) just before the byte that sets the riding state in Europe but is missing from North America and Japan which is used to count frames before the riding state is activated.
Game Boy Horror Ghost Tracker
The function 8004463C (US) handles alpha effects and coloring for the unused Game Boy Horror timer's colon. Within it, a comparison against general-purpose register 0 at 80044730 controls the execution of complex operations directly responsible for the timer's border's actor tracking functionality, which had been originally seen in the trailer promoting the game's presence at E3 2001 and became absent by the time of playable demo builds. Its code never runs due to developers intentionally setting the register to 0.
Two versions of this mechanic still exist: mode 1, featuring swaying and smoother motion, and mode 2, which trades animations for more accurate tracking (enabled at 0:16 in the video). Those two modes would automatically switch between each other when far from or near ghosts, respectively, but it is unknown whether code for this still exists. As is, it will only track objects detected by the Boo Radar and not any ordinary or portrait ghosts, presumably indicating they share the same target actor data and/or code.
The code below can force these states:
NA |
---|
0404472C 3800000x |
where x: 0 = default animation; 1 = far-distance mode; 2 = close-distance mode; 3 and above = also default animation.
Unused/Leftover Script Tags
Event script tags that no longer have any purpose or are just plain unused.
Tag Name | Description |
---|---|
<SAY> | Displays the rest of the text on the line in a dialogue window. New lines can be made by typing the \n escape sequence. |
<HPMAX> | Sets Luigi's maximum HP value. It also changes the size and speed of the light pink heart (behind the main red heart) on the HUD. Luigi will be unable to gain any more health than this new value until the effects are reversed back to default with <HPMAX>(100); the effects of the tag will be saved. If <HPMAX>(0) is used, a game over will occur. |
<CAMERAWAIT> | Works the same way as <WAIT> but only while a CMN camera file is currently playing. |
<KEYUNLOCK> | Unlocks a door. |
<LIGHT> | Changes all lighting in the current map to the alpha lighting seen in early screenshots and videos of Luigi's Mansion, mostly around 2000 to early 2001. This lighting could've been used to create the picture quality desired for magazines and websites at the time, or it could've simply been temporary lighting. |
<PATHLIGHT> | Tells the game to load a lighting animation file, which must be inside of the same event folder as the event itself. <GPATHLIGHT> is used instead. |
<BODYON> | Enables visibility of the MDL model for the actor. If Luigi was previously made invisible, this tag will make him visible again, but his equipment (GBH, flashlight, and Poltergust) will stay invisible. |
<BEAMON> | Runs no-op (NOP) code. Does nothing. |
<BEAMOFF> | Runs no-op (NOP) code. Does nothing. |
<PATHLIGHTEND> | Disables the lighting effects that were loaded with <GPATHLIGHT> or <PATHLIGHT>. |
<REPLACE> | Seems to be a leftover tag for switching portraits out via event during the Portrificationizer Room cutscenes. If used during that event, the cutscene will desync and portraits will no longer come out correctly. At this point, if the <ACCOUNT> tag is activated, the game will crash. |
<TITLE> | Warps to the title screen without saving any progress. |
<LUIGELTOFF> | Reverses the effects of <LUIGELTON>, which disables the lighting effect on Luigi. |
<TIMESTOP> | Stops the GameBoy Horror timer. This tag is called in several event files, but it doesn't normally affect anything since the clock system was cut. |
<TIMEACTIVE> | Resumes the GameBoy Horror timer. This tag is called in several event files, but it doesn't normally affect anything since the clock system was cut. |
Unused CTP Parameter Fields
Unused or leftover fields that can be found within CTP parameter files.
Field Name | Description |
---|---|
mSpeed | Effects the speed which ghosts pull when using TsuriType 5 (EnBasicTsuri). Since type 5 isn't used, neither is this field. |
mFrightenLevel | Does nothing. Possibly related to EnFrighten? |
mAttackPattern2 | Does nothing. |
mHasCoin | Does nothing. Per E3 footage, regular ghosts originally dropped coins when vacuumed, which is likely what this field was for. Leftover in the parameters for elemental spirits, as well as the Foyer cutscene's Gold Ghost. |
mKiryuCount | Unknown. This and the two below are located in the parameters for Ghost Guy's mask, as well as the Clockwork Soldiers' wind up handle. |
mNumGround | Unknown. Can be found in the parameters for Ghost Guy's mask. |
mFlag | Unknown. Can be found in the parameters for Ghost Guy's mask. |
Unused Sheet Behaviors
Sheets are 2D textures that get turned into furniture (tablecloths, posters, bedsheets, etc.). There are a few that aren't used anywhere.
No. | Description |
---|---|
7 | Cloth that hangs over the left side of the furniture's scanbox. |
8 | Cloth that hangs over the back side of the furniture's scanbox. |
10 | Poster that hangs over the right side of the furniture's scanbox. |
11 | Poster that hangs over the left side of the furniture's scanbox. |
12 | Poster that hangs over the back side of the furniture's scanbox. |
14 | Bed sheets with two layers. The bottom layer hangs off the left and right side, and the top layer is flat like a poster. |
25 | Cloth that flutters with strange sound effects. It hangs off the left and right sides and flutters off the back side of the furniture's scanbox. |
Unused Conditions
These unused conditions are meant for the cond_type field found in various JMP files.
No. | Condition Name | Description |
---|---|---|
4 | SaEnCheckTime | Checks the arg values in observerinfo, and compares them against the GameBoy Horror timer. arg1 is the lower bound of the hour value while arg3 is the upper bound. arg2 is the lower bound of the minute value while arg4 is the upper bound. |
5 | CondAlwaysTrue | No condition. Duplicate of 0 and 2. |
7 | EnFindPlayerNear | Gives a ghost a small spawn range, meaning Luigi can only activate the ghost if he's close to it. |
12 | CondWaterAllOff | Checks if all the water generators in the room have been turned OFF. Luigi can freeze a water generator by spraying it with ice element. |
19 | CondEventFlagOff | Checks if the flag listed in cond_arg0 is off. |