<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.lmhack.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=ThePlayerRolo</id>
	<title>LMHack - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.lmhack.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=ThePlayerRolo"/>
	<link rel="alternate" type="text/html" href="https://www.lmhack.net/Special:Contributions/ThePlayerRolo"/>
	<updated>2026-11-06T03:27:58Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://www.lmhack.net/index.php?title=Scenes&amp;diff=1386</id>
		<title>Scenes</title>
		<link rel="alternate" type="text/html" href="https://www.lmhack.net/index.php?title=Scenes&amp;diff=1386"/>
		<updated>2026-07-24T13:09:14Z</updated>

		<summary type="html">&lt;p&gt;ThePlayerRolo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Description ==&lt;br /&gt;
This page has documentation on the &amp;quot;Scene&amp;quot; system seen in Luigi&#039;s Mansion, which handles the most basic game states (Title Screen, Boot, Main Game, etc).&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Scene Structure&lt;br /&gt;
! Member Name&lt;br /&gt;
! Member Type&lt;br /&gt;
! Member Offset&lt;br /&gt;
! Member Description&lt;br /&gt;
|-&lt;br /&gt;
| mName&lt;br /&gt;
| &amp;lt;code&amp;gt;char[16]&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x00&amp;lt;/code&amp;gt;&lt;br /&gt;
| The name of the scene.&lt;br /&gt;
|-&lt;br /&gt;
| _10&lt;br /&gt;
| &amp;lt;code&amp;gt;s16 (signed short)&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x10&amp;lt;/code&amp;gt;&lt;br /&gt;
| Currently unknown, but could be some sort of id.&lt;br /&gt;
|-&lt;br /&gt;
| mInitFn&lt;br /&gt;
| &amp;lt;code&amp;gt;void (*SceneInitFunc)()&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x14&amp;lt;/code&amp;gt;&lt;br /&gt;
| A pointer to the scene&#039;s function used for initializing the scene.&lt;br /&gt;
|-&lt;br /&gt;
| mUpdateFn&lt;br /&gt;
| &amp;lt;code&amp;gt;u32 (*SceneUpdateFunc)()&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x18&amp;lt;/code&amp;gt;&lt;br /&gt;
| A pointer to the scene&#039;s function used for updating the scene every frame.&lt;br /&gt;
|-&lt;br /&gt;
| mDrawFn&lt;br /&gt;
| &amp;lt;code&amp;gt;void (*SceneDrawFunc)()&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x1C&amp;lt;/code&amp;gt;&lt;br /&gt;
| A pointer to the scene&#039;s function used for drawing the scene every frame.&lt;br /&gt;
|-&lt;br /&gt;
| mDestroyFn&lt;br /&gt;
| &amp;lt;code&amp;gt;void (*SceneDestroyFunc)()&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x20&amp;lt;/code&amp;gt;&lt;br /&gt;
| A pointer to the scene&#039;s function used for destroying the scene and it&#039;s resources.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ SceneID Enum&lt;br /&gt;
|-&lt;br /&gt;
! ID !! Enum Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; || SCENE_BOOT || Scene when booting up the game.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; || SCENE_TITLE || Title screen Scene.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; || SCENE_MAIN_GAME || Scene for the main game.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; || SCENE_SELECT || File select scene.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; || SCENE_OPENING || The scene for the opening that plays when idling on the title screen.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; || SCENE_STUFF_ROLL|| Staff roll scene.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt; || SCENE_ENDING || Ending scene.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt; || SCENE_MOVIE || Scene used for the Pikmin movie.&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|+ External variables&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Type !! Address (USA) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| sCurScene || Scene* || 0x804CFF98 || A pointer to the current scene loaded into memory.&lt;br /&gt;
|-&lt;br /&gt;
| sCurSceneId || SceneID || 0x804D80A0 || The current scene&#039;s id, mainly used for indexing sSceneTable.&lt;br /&gt;
|-&lt;br /&gt;
| sSceneTable || Scene*[8] || 0x8021DB20 || A table consisting of all of the scenes, with the indexes corresponding to SceneID.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
[https://github.com/ThePlayerRolo/lm-decomp Luigi&#039;s Mansion Decompilation]&lt;/div&gt;</summary>
		<author><name>ThePlayerRolo</name></author>
	</entry>
	<entry>
		<id>https://www.lmhack.net/index.php?title=Game_Knowledge&amp;diff=1385</id>
		<title>Game Knowledge</title>
		<link rel="alternate" type="text/html" href="https://www.lmhack.net/index.php?title=Game_Knowledge&amp;diff=1385"/>
		<updated>2026-07-16T19:14:57Z</updated>

		<summary type="html">&lt;p&gt;ThePlayerRolo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Original Author(s) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;opeyx&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;This page should (hopefully) provide you with some knowledge about how certain stuff in Luigi&#039;s Mansions works.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;We will continue add new content here as we get a better understanding for how different parts of the game works.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;This page should be considered a work in progress at all times, we will do our best to always provide the most accurate information however.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
This list provides context for various terms used in Luigi&#039;s Mansion modding efforts.&lt;br /&gt;
&lt;br /&gt;
=== Event ===&lt;br /&gt;
An &#039;&#039;&#039;event&#039;&#039;&#039; is a function that can be defined using an event script, which uses its own language (see [[Script Tags]]) to perform actions such as showing text boxes, disabling player control over Luigi, and more.&lt;br /&gt;
==== See also ====&lt;br /&gt;
* [[Event List]]&lt;br /&gt;
* [[Eventor]]&lt;br /&gt;
&lt;br /&gt;
=== Flag ===&lt;br /&gt;
A &#039;&#039;&#039;flag&#039;&#039;&#039; is a boolean value (true or false) that are primarily used as &amp;quot;checkpoints&amp;quot; for the player, however can be used for any purpose. Flags can either be permanent (saved to the memory card), room-exclusive (value lost when exiting the current room), or map-exclusive (value lost when exiting the current map).&lt;br /&gt;
==== See also ====&lt;br /&gt;
* [[Flags]]&lt;br /&gt;
&lt;br /&gt;
=== Observer ===&lt;br /&gt;
Observers are essentially &amp;quot;mini-programs&amp;quot; that constantly asks the game questions about what the current state of the game is (&amp;quot;Are all of the ghosts in this wave captured yet?&amp;quot;, &amp;quot;Is flag 23 turned on?&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Think of them like an invisible eye that consistently monitors what &#039;&#039;condition&#039;&#039; needs to be met so that something can be &#039;&#039;done&#039;&#039;.&lt;br /&gt;
==== See also ====&lt;br /&gt;
* [[Observerinfo / Teidenobserverinfo]]&lt;br /&gt;
* [[Cond Types]]&lt;br /&gt;
* [[Do Types]]&lt;br /&gt;
&lt;br /&gt;
=== Viewport ===&lt;br /&gt;
A &#039;&#039;&#039;viewport&#039;&#039;&#039; is a rectangular window in which other rooms are rendered. These are most notably used in the 1F and 2F hallways, which are broken into multiple rooms; viewports allow these rooms to be stitched together seamlessly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== JMP ==&lt;br /&gt;
&lt;br /&gt;
=== Observers ===&lt;br /&gt;
&lt;br /&gt;
One of the things that people seem to have the most trouble understanding is Observers, so here is a small rundown:&lt;br /&gt;
&lt;br /&gt;
Observers are essentially &amp;quot;mini-programs&amp;quot; that constantly asks the game questions about what the current state of the game is. (&amp;quot;Are all of the ghosts in this wave captured yet?&amp;quot;, &amp;quot;Is flag 23 turned on?&amp;quot;). Think of them like an invisible eye that consistently monitors what &#039;&#039;condition&#039;&#039; needs to be met so that something can be &#039;&#039;done.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
They are used for everything from making ghosts spawn to making the lights turn on when you&#039;ve captured all the ghosts in a room.&lt;br /&gt;
&lt;br /&gt;
Lets give you an example:&lt;br /&gt;
&lt;br /&gt;
# The observer will ask the game a &amp;quot;question&amp;quot; (Eg: &amp;quot;Have all of the candles in this room been blown out?&amp;quot;) - In programming terms these &amp;quot;questions&amp;quot; are known as Conditions.&lt;br /&gt;
# The game itself will reply with an &amp;quot;answer&amp;quot; of either True (Yes) or False (No). - In programming terms these &amp;quot;answers&amp;quot; are known as bool&#039;s / Booleans.&lt;br /&gt;
# If the reply from the game is True (Yes) then the observer will do &#039;&#039;something&#039;&#039; - More accurately, it will do whatever is specified in the observer&#039;s do_type field.&lt;br /&gt;
&lt;br /&gt;
By using the &#039;&#039;cond_string_arg0&#039;&#039; and &#039;&#039;string_arg0&#039;&#039; fields in the observers you can link a multiple observers to activate after just one observer activates,&lt;br /&gt;
&lt;br /&gt;
this will allow you to do more than just one thing after a ghost wave has been defeated for example.&lt;br /&gt;
&lt;br /&gt;
You could however also create a &amp;quot;observer chain&amp;quot; to do this; &amp;quot;Is all the ghosts in this wave captured yet?&amp;quot; (True) -&amp;gt; Light Up The Room (True) -&amp;gt; Unlock The Doors (True) -&amp;gt; Spawn Chest (True)&lt;br /&gt;
&lt;br /&gt;
&amp;quot;There&#039;s multiple ways to Rome&amp;quot; - You can get similar results with different approaches, we recommend you choose one that you find the most understandable / easy to use.&lt;br /&gt;
&lt;br /&gt;
And that is essentially how all observers in the game work.&lt;br /&gt;
&lt;br /&gt;
Now go experiment! - That&#039;s the best way of learning! :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== RAM ==&lt;br /&gt;
&lt;br /&gt;
=== Change which door triggers the Foyer Gold Ghost Laugh and in return sets flag 3 ===&lt;br /&gt;
&lt;br /&gt;
8001bec0 386000xx &amp;lt;br /&amp;gt; xx - Door ID&lt;br /&gt;
&lt;br /&gt;
(Credits - CyrusLoS)&lt;br /&gt;
&lt;br /&gt;
== DOL ==&lt;br /&gt;
&lt;br /&gt;
=== Force Portrait Ghosts to use params for HP ===&lt;br /&gt;
&lt;br /&gt;
At offset 0xBDED0, paste/write 4800002c.&lt;br /&gt;
&lt;br /&gt;
(Credits - CyrusLoS)&lt;br /&gt;
&lt;br /&gt;
=== Add treasure drops to regular ghosts ===&lt;br /&gt;
&lt;br /&gt;
Change the address listed at 0x358718 to 800d59ac. &amp;lt;br /&amp;gt; Add a entry for the ghost in question into iyapootable along with what you want it to drop. &amp;lt;br /&amp;gt; (Credits - LMFinish)&lt;br /&gt;
&lt;br /&gt;
=== Reverse Kieru (spawn animation) for regular ghosts ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Model Archive&lt;br /&gt;
|-&lt;br /&gt;
| 0x33DD5E&lt;br /&gt;
| obake01.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33DF5E&lt;br /&gt;
| obake02.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33E17E&lt;br /&gt;
| obake03.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33E3BE&lt;br /&gt;
| obake04.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33E3BE&lt;br /&gt;
| topoo.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33E3BE&lt;br /&gt;
| skul.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33EBBA&lt;br /&gt;
| heypo.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33F8C2&lt;br /&gt;
| tenjyo.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33FA02&lt;br /&gt;
| banaoba.szp&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Change the value at any of the offsets to &#039;&#039;&#039;0E 52&#039;&#039;&#039; to reverse the ghosts&#039; spawn-in animation. &amp;lt;br /&amp;gt; (Credits - weirdboo)&lt;br /&gt;
&lt;br /&gt;
=== Beta Spinning Coins by Ralf (upside-down bug fix by 0wen) ===&lt;br /&gt;
&lt;br /&gt;
At offset 0xD50, paste/write 3C608000C0033D6CC03D0024EC21002AD03D0024A87C00A64815427C41700000 &amp;lt;br /&amp;gt; At offset 0x15402C, paste/write 3800BC00B01E005E &amp;lt;br /&amp;gt; At offset 0x154D40, paste/write 4BEABD70 &amp;lt;br /&amp;gt; (Credits - weirdboo, 0wen)&lt;br /&gt;
&lt;br /&gt;
=== Various RAM Addresses ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Address&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 80340D48&lt;br /&gt;
| Yapoo Appear Type&lt;br /&gt;
|-&lt;br /&gt;
| 80340F48&lt;br /&gt;
| Mapoo Appear Type&lt;br /&gt;
|-&lt;br /&gt;
| 804D2BE4&lt;br /&gt;
| Flashlight Cone Size Modifier&lt;br /&gt;
|-&lt;br /&gt;
| 804D2BEC&lt;br /&gt;
| Flashlight RGB&lt;br /&gt;
|-&lt;br /&gt;
| 800D0E94&lt;br /&gt;
| I&#039;m 99% Sure This Is Luigi&#039;s Reaction To The Poison Mushroom&lt;br /&gt;
|-&lt;br /&gt;
| 800466F4&lt;br /&gt;
| Draws The OOB Coin&lt;br /&gt;
|-&lt;br /&gt;
| 804D2BB8&lt;br /&gt;
| Luigi&#039;s Walking Speed&lt;br /&gt;
|-&lt;br /&gt;
| 8003D6F0&lt;br /&gt;
| Radar State I think (To make it so the radar is always on, NOP this address.)&lt;br /&gt;
|-&lt;br /&gt;
| 801E1EA0&lt;br /&gt;
| Coin Physics (If this address is nopped/zero&#039;d out it will give you spinning coins, however, it spins periodically and not consistently.)&lt;br /&gt;
|-&lt;br /&gt;
| 800BCAF0&lt;br /&gt;
| treasuretable JMP Loading (Same goes for the address below)&lt;br /&gt;
|-&lt;br /&gt;
| 800BCAF4&lt;br /&gt;
| treasuretable JMP Loading&lt;br /&gt;
|-&lt;br /&gt;
| 804D9A0C&lt;br /&gt;
| Nintendo Logo Color&lt;br /&gt;
|-&lt;br /&gt;
| 800B3B6C&lt;br /&gt;
| Flashlight On And Off Function (If you nop this the flashlight will not turn off)&lt;br /&gt;
|-&lt;br /&gt;
| 804D8597&lt;br /&gt;
| This Address Is How Many Ghosts Luigi Has And The Current Value Of The Ghost Counter&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
(Credits - ScaredLuigiCrawling)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Static Data Offsets ===&lt;br /&gt;
USA version documentation originally by &#039;&#039;&#039;weirdboo&#039;&#039;&#039;, and JPN version documentation by ThePlayerRolo. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Starting offset (USA): &lt;br /&gt;
0x21B000&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN): &lt;br /&gt;
0x210240&lt;br /&gt;
&lt;br /&gt;
Length (USA):&lt;br /&gt;
DD380&lt;br /&gt;
&lt;br /&gt;
Length (JPN):&lt;br /&gt;
E0E60&lt;br /&gt;
&lt;br /&gt;
========&lt;br /&gt;
gameboy.szp&lt;br /&gt;
========&lt;br /&gt;
Starting offset (USA):&lt;br /&gt;
0x21B1A0&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN):&lt;br /&gt;
0x2103E0&lt;br /&gt;
&lt;br /&gt;
Length:&lt;br /&gt;
162E0&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
The GameBoy Horror zoom-in cutscene that plays when you press Y or Z.&lt;br /&gt;
&lt;br /&gt;
========&lt;br /&gt;
guidemap.szp&lt;br /&gt;
========&lt;br /&gt;
Starting offset (USA):&lt;br /&gt;
0x231480&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN):&lt;br /&gt;
0x2266C0&lt;br /&gt;
&lt;br /&gt;
Length:&lt;br /&gt;
409C0&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
The Mansion map that appears when you press Y.&lt;br /&gt;
&lt;br /&gt;
========&lt;br /&gt;
ninlogo.pcm&lt;br /&gt;
========&lt;br /&gt;
Starting offset (USA):&lt;br /&gt;
0x271E40&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN):&lt;br /&gt;
0x267080&lt;br /&gt;
&lt;br /&gt;
Length:&lt;br /&gt;
1F2C0&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
The deep-voiced &amp;quot;Nintendo&amp;quot; sound effect that plays when you boot up the game.&lt;br /&gt;
&lt;br /&gt;
========&lt;br /&gt;
nintendo.szp&lt;br /&gt;
========&lt;br /&gt;
Starting offset (USA):&lt;br /&gt;
0x291100&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN):&lt;br /&gt;
0x286340&lt;br /&gt;
&lt;br /&gt;
Length:&lt;br /&gt;
33C0&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
The Nintendo logo that appears when you boot up the game.&lt;br /&gt;
Note: this file can only be extracted/compressed with Yay0Enc; use the -d switch for decompression. Do **not** use ArcExtract.&lt;br /&gt;
&lt;br /&gt;
========&lt;br /&gt;
res_list.szp&lt;br /&gt;
========&lt;br /&gt;
Starting offset (USA):&lt;br /&gt;
0x2944C0&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN):&lt;br /&gt;
0x289700&lt;br /&gt;
&lt;br /&gt;
Length (USA):&lt;br /&gt;
1C060&lt;br /&gt;
&lt;br /&gt;
Length (JPN):&lt;br /&gt;
1C180&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
The status screen that shows treasure, portrait ghosts, mario items, and medals that appears when you press Z.&lt;br /&gt;
&lt;br /&gt;
========&lt;br /&gt;
res_paus.szp&lt;br /&gt;
========&lt;br /&gt;
Starting offset (USA):&lt;br /&gt;
0x2B0520&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN):&lt;br /&gt;
0x2A5880&lt;br /&gt;
&lt;br /&gt;
Length (USA):&lt;br /&gt;
1DEA0&lt;br /&gt;
&lt;br /&gt;
Length (JPN):&lt;br /&gt;
1DCA0&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
The pause menu.&lt;br /&gt;
&lt;br /&gt;
========&lt;br /&gt;
res_titl.szp&lt;br /&gt;
========&lt;br /&gt;
Starting offset (USA):&lt;br /&gt;
0x2CE3C0&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN):&lt;br /&gt;
0x2C3520&lt;br /&gt;
&lt;br /&gt;
Length (USA):&lt;br /&gt;
29FC0&lt;br /&gt;
&lt;br /&gt;
Length (JPN):&lt;br /&gt;
2DB80&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
The title screen with the Luigi&#039;s Mansion logo, background, copyright text, and &amp;quot;Press Start&amp;quot;.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
* [[Scenes|Scene Documentation]]&lt;/div&gt;</summary>
		<author><name>ThePlayerRolo</name></author>
	</entry>
	<entry>
		<id>https://www.lmhack.net/index.php?title=Game_Knowledge&amp;diff=1384</id>
		<title>Game Knowledge</title>
		<link rel="alternate" type="text/html" href="https://www.lmhack.net/index.php?title=Game_Knowledge&amp;diff=1384"/>
		<updated>2026-07-16T19:14:36Z</updated>

		<summary type="html">&lt;p&gt;ThePlayerRolo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Original Author(s) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;opeyx&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;This page should (hopefully) provide you with some knowledge about how certain stuff in Luigi&#039;s Mansions works.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;We will continue add new content here as we get a better understanding for how different parts of the game works.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;This page should be considered a work in progress at all times, we will do our best to always provide the most accurate information however.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
This list provides context for various terms used in Luigi&#039;s Mansion modding efforts.&lt;br /&gt;
&lt;br /&gt;
=== Event ===&lt;br /&gt;
An &#039;&#039;&#039;event&#039;&#039;&#039; is a function that can be defined using an event script, which uses its own language (see [[Script Tags]]) to perform actions such as showing text boxes, disabling player control over Luigi, and more.&lt;br /&gt;
==== See also ====&lt;br /&gt;
* [[Event List]]&lt;br /&gt;
* [[Eventor]]&lt;br /&gt;
&lt;br /&gt;
=== Flag ===&lt;br /&gt;
A &#039;&#039;&#039;flag&#039;&#039;&#039; is a boolean value (true or false) that are primarily used as &amp;quot;checkpoints&amp;quot; for the player, however can be used for any purpose. Flags can either be permanent (saved to the memory card), room-exclusive (value lost when exiting the current room), or map-exclusive (value lost when exiting the current map).&lt;br /&gt;
==== See also ====&lt;br /&gt;
* [[Flags]]&lt;br /&gt;
&lt;br /&gt;
=== Observer ===&lt;br /&gt;
Observers are essentially &amp;quot;mini-programs&amp;quot; that constantly asks the game questions about what the current state of the game is (&amp;quot;Are all of the ghosts in this wave captured yet?&amp;quot;, &amp;quot;Is flag 23 turned on?&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Think of them like an invisible eye that consistently monitors what &#039;&#039;condition&#039;&#039; needs to be met so that something can be &#039;&#039;done&#039;&#039;.&lt;br /&gt;
==== See also ====&lt;br /&gt;
* [[Observerinfo / Teidenobserverinfo]]&lt;br /&gt;
* [[Cond Types]]&lt;br /&gt;
* [[Do Types]]&lt;br /&gt;
&lt;br /&gt;
=== Viewport ===&lt;br /&gt;
A &#039;&#039;&#039;viewport&#039;&#039;&#039; is a rectangular window in which other rooms are rendered. These are most notably used in the 1F and 2F hallways, which are broken into multiple rooms; viewports allow these rooms to be stitched together seamlessly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== JMP ==&lt;br /&gt;
&lt;br /&gt;
=== Observers ===&lt;br /&gt;
&lt;br /&gt;
One of the things that people seem to have the most trouble understanding is Observers, so here is a small rundown:&lt;br /&gt;
&lt;br /&gt;
Observers are essentially &amp;quot;mini-programs&amp;quot; that constantly asks the game questions about what the current state of the game is. (&amp;quot;Are all of the ghosts in this wave captured yet?&amp;quot;, &amp;quot;Is flag 23 turned on?&amp;quot;). Think of them like an invisible eye that consistently monitors what &#039;&#039;condition&#039;&#039; needs to be met so that something can be &#039;&#039;done.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
They are used for everything from making ghosts spawn to making the lights turn on when you&#039;ve captured all the ghosts in a room.&lt;br /&gt;
&lt;br /&gt;
Lets give you an example:&lt;br /&gt;
&lt;br /&gt;
# The observer will ask the game a &amp;quot;question&amp;quot; (Eg: &amp;quot;Have all of the candles in this room been blown out?&amp;quot;) - In programming terms these &amp;quot;questions&amp;quot; are known as Conditions.&lt;br /&gt;
# The game itself will reply with an &amp;quot;answer&amp;quot; of either True (Yes) or False (No). - In programming terms these &amp;quot;answers&amp;quot; are known as bool&#039;s / Booleans.&lt;br /&gt;
# If the reply from the game is True (Yes) then the observer will do &#039;&#039;something&#039;&#039; - More accurately, it will do whatever is specified in the observer&#039;s do_type field.&lt;br /&gt;
&lt;br /&gt;
By using the &#039;&#039;cond_string_arg0&#039;&#039; and &#039;&#039;string_arg0&#039;&#039; fields in the observers you can link a multiple observers to activate after just one observer activates,&lt;br /&gt;
&lt;br /&gt;
this will allow you to do more than just one thing after a ghost wave has been defeated for example.&lt;br /&gt;
&lt;br /&gt;
You could however also create a &amp;quot;observer chain&amp;quot; to do this; &amp;quot;Is all the ghosts in this wave captured yet?&amp;quot; (True) -&amp;gt; Light Up The Room (True) -&amp;gt; Unlock The Doors (True) -&amp;gt; Spawn Chest (True)&lt;br /&gt;
&lt;br /&gt;
&amp;quot;There&#039;s multiple ways to Rome&amp;quot; - You can get similar results with different approaches, we recommend you choose one that you find the most understandable / easy to use.&lt;br /&gt;
&lt;br /&gt;
And that is essentially how all observers in the game work.&lt;br /&gt;
&lt;br /&gt;
Now go experiment! - That&#039;s the best way of learning! :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== RAM ==&lt;br /&gt;
&lt;br /&gt;
=== Change which door triggers the Foyer Gold Ghost Laugh and in return sets flag 3 ===&lt;br /&gt;
&lt;br /&gt;
8001bec0 386000xx &amp;lt;br /&amp;gt; xx - Door ID&lt;br /&gt;
&lt;br /&gt;
(Credits - CyrusLoS)&lt;br /&gt;
&lt;br /&gt;
== DOL ==&lt;br /&gt;
&lt;br /&gt;
=== Force Portrait Ghosts to use params for HP ===&lt;br /&gt;
&lt;br /&gt;
At offset 0xBDED0, paste/write 4800002c.&lt;br /&gt;
&lt;br /&gt;
(Credits - CyrusLoS)&lt;br /&gt;
&lt;br /&gt;
=== Add treasure drops to regular ghosts ===&lt;br /&gt;
&lt;br /&gt;
Change the address listed at 0x358718 to 800d59ac. &amp;lt;br /&amp;gt; Add a entry for the ghost in question into iyapootable along with what you want it to drop. &amp;lt;br /&amp;gt; (Credits - LMFinish)&lt;br /&gt;
&lt;br /&gt;
=== Reverse Kieru (spawn animation) for regular ghosts ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Model Archive&lt;br /&gt;
|-&lt;br /&gt;
| 0x33DD5E&lt;br /&gt;
| obake01.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33DF5E&lt;br /&gt;
| obake02.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33E17E&lt;br /&gt;
| obake03.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33E3BE&lt;br /&gt;
| obake04.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33E3BE&lt;br /&gt;
| topoo.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33E3BE&lt;br /&gt;
| skul.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33EBBA&lt;br /&gt;
| heypo.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33F8C2&lt;br /&gt;
| tenjyo.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33FA02&lt;br /&gt;
| banaoba.szp&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Change the value at any of the offsets to &#039;&#039;&#039;0E 52&#039;&#039;&#039; to reverse the ghosts&#039; spawn-in animation. &amp;lt;br /&amp;gt; (Credits - weirdboo)&lt;br /&gt;
&lt;br /&gt;
=== Beta Spinning Coins by Ralf (upside-down bug fix by 0wen) ===&lt;br /&gt;
&lt;br /&gt;
At offset 0xD50, paste/write 3C608000C0033D6CC03D0024EC21002AD03D0024A87C00A64815427C41700000 &amp;lt;br /&amp;gt; At offset 0x15402C, paste/write 3800BC00B01E005E &amp;lt;br /&amp;gt; At offset 0x154D40, paste/write 4BEABD70 &amp;lt;br /&amp;gt; (Credits - weirdboo, 0wen)&lt;br /&gt;
&lt;br /&gt;
=== Various RAM Addresses ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Address&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 80340D48&lt;br /&gt;
| Yapoo Appear Type&lt;br /&gt;
|-&lt;br /&gt;
| 80340F48&lt;br /&gt;
| Mapoo Appear Type&lt;br /&gt;
|-&lt;br /&gt;
| 804D2BE4&lt;br /&gt;
| Flashlight Cone Size Modifier&lt;br /&gt;
|-&lt;br /&gt;
| 804D2BEC&lt;br /&gt;
| Flashlight RGB&lt;br /&gt;
|-&lt;br /&gt;
| 800D0E94&lt;br /&gt;
| I&#039;m 99% Sure This Is Luigi&#039;s Reaction To The Poison Mushroom&lt;br /&gt;
|-&lt;br /&gt;
| 800466F4&lt;br /&gt;
| Draws The OOB Coin&lt;br /&gt;
|-&lt;br /&gt;
| 804D2BB8&lt;br /&gt;
| Luigi&#039;s Walking Speed&lt;br /&gt;
|-&lt;br /&gt;
| 8003D6F0&lt;br /&gt;
| Radar State I think (To make it so the radar is always on, NOP this address.)&lt;br /&gt;
|-&lt;br /&gt;
| 801E1EA0&lt;br /&gt;
| Coin Physics (If this address is nopped/zero&#039;d out it will give you spinning coins, however, it spins periodically and not consistently.)&lt;br /&gt;
|-&lt;br /&gt;
| 800BCAF0&lt;br /&gt;
| treasuretable JMP Loading (Same goes for the address below)&lt;br /&gt;
|-&lt;br /&gt;
| 800BCAF4&lt;br /&gt;
| treasuretable JMP Loading&lt;br /&gt;
|-&lt;br /&gt;
| 804D9A0C&lt;br /&gt;
| Nintendo Logo Color&lt;br /&gt;
|-&lt;br /&gt;
| 800B3B6C&lt;br /&gt;
| Flashlight On And Off Function (If you nop this the flashlight will not turn off)&lt;br /&gt;
|-&lt;br /&gt;
| 804D8597&lt;br /&gt;
| This Address Is How Many Ghosts Luigi Has And The Current Value Of The Ghost Counter&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
(Credits - ScaredLuigiCrawling)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Static Data Offsets ===&lt;br /&gt;
USA version documentation originally by &#039;&#039;&#039;weirdboo&#039;&#039;&#039;, and JPN version documentation by ThePlayerRolo. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Starting offset (USA): &lt;br /&gt;
0x21B000&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN): &lt;br /&gt;
0x210240&lt;br /&gt;
&lt;br /&gt;
Length (USA):&lt;br /&gt;
DD380&lt;br /&gt;
&lt;br /&gt;
Length (JPN):&lt;br /&gt;
E0E60&lt;br /&gt;
&lt;br /&gt;
========&lt;br /&gt;
gameboy.szp&lt;br /&gt;
========&lt;br /&gt;
Starting offset (USA):&lt;br /&gt;
0x21B1A0&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN):&lt;br /&gt;
0x2103E0&lt;br /&gt;
&lt;br /&gt;
Length:&lt;br /&gt;
162E0&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
The GameBoy Horror zoom-in cutscene that plays when you press Y or Z.&lt;br /&gt;
&lt;br /&gt;
========&lt;br /&gt;
guidemap.szp&lt;br /&gt;
========&lt;br /&gt;
Starting offset (USA):&lt;br /&gt;
0x231480&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN):&lt;br /&gt;
0x2266C0&lt;br /&gt;
&lt;br /&gt;
Length:&lt;br /&gt;
409C0&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
The Mansion map that appears when you press Y.&lt;br /&gt;
&lt;br /&gt;
========&lt;br /&gt;
ninlogo.pcm&lt;br /&gt;
========&lt;br /&gt;
Starting offset (USA):&lt;br /&gt;
0x271E40&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN):&lt;br /&gt;
0x267080&lt;br /&gt;
&lt;br /&gt;
Length:&lt;br /&gt;
1F2C0&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
The deep-voiced &amp;quot;Nintendo&amp;quot; sound effect that plays when you boot up the game.&lt;br /&gt;
&lt;br /&gt;
========&lt;br /&gt;
nintendo.szp&lt;br /&gt;
========&lt;br /&gt;
Starting offset (USA):&lt;br /&gt;
0x291100&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN):&lt;br /&gt;
0x286340&lt;br /&gt;
&lt;br /&gt;
Length:&lt;br /&gt;
33C0&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
The Nintendo logo that appears when you boot up the game.&lt;br /&gt;
Note: this file can only be extracted/compressed with Yay0Enc; use the -d switch for decompression. Do **not** use ArcExtract.&lt;br /&gt;
&lt;br /&gt;
========&lt;br /&gt;
res_list.szp&lt;br /&gt;
========&lt;br /&gt;
Starting offset (USA):&lt;br /&gt;
0x2944C0&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN):&lt;br /&gt;
0x289700&lt;br /&gt;
&lt;br /&gt;
Length (USA):&lt;br /&gt;
1C060&lt;br /&gt;
&lt;br /&gt;
Length (JPN):&lt;br /&gt;
1C180&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
The status screen that shows treasure, portrait ghosts, mario items, and medals that appears when you press Z.&lt;br /&gt;
&lt;br /&gt;
========&lt;br /&gt;
res_paus.szp&lt;br /&gt;
========&lt;br /&gt;
Starting offset (USA):&lt;br /&gt;
0x2B0520&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN):&lt;br /&gt;
0x2A5880&lt;br /&gt;
&lt;br /&gt;
Length (USA):&lt;br /&gt;
1DEA0&lt;br /&gt;
&lt;br /&gt;
Length (JPN):&lt;br /&gt;
1DCA0&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
The pause menu.&lt;br /&gt;
&lt;br /&gt;
========&lt;br /&gt;
res_titl.szp&lt;br /&gt;
========&lt;br /&gt;
Starting offset (USA):&lt;br /&gt;
0x2CE3C0&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN):&lt;br /&gt;
0x2C3520&lt;br /&gt;
&lt;br /&gt;
Length (USA):&lt;br /&gt;
29FC0&lt;br /&gt;
&lt;br /&gt;
Length (JPN):&lt;br /&gt;
2DB80&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
The title screen with the Luigi&#039;s Mansion logo, background, copyright text, and &amp;quot;Press Start&amp;quot;.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
[[Scenes|Scene Documentation]]&lt;/div&gt;</summary>
		<author><name>ThePlayerRolo</name></author>
	</entry>
	<entry>
		<id>https://www.lmhack.net/index.php?title=Game_Knowledge&amp;diff=1383</id>
		<title>Game Knowledge</title>
		<link rel="alternate" type="text/html" href="https://www.lmhack.net/index.php?title=Game_Knowledge&amp;diff=1383"/>
		<updated>2026-07-16T19:14:06Z</updated>

		<summary type="html">&lt;p&gt;ThePlayerRolo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Original Author(s) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;opeyx&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;This page should (hopefully) provide you with some knowledge about how certain stuff in Luigi&#039;s Mansions works.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;We will continue add new content here as we get a better understanding for how different parts of the game works.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;This page should be considered a work in progress at all times, we will do our best to always provide the most accurate information however.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
This list provides context for various terms used in Luigi&#039;s Mansion modding efforts.&lt;br /&gt;
&lt;br /&gt;
=== Event ===&lt;br /&gt;
An &#039;&#039;&#039;event&#039;&#039;&#039; is a function that can be defined using an event script, which uses its own language (see [[Script Tags]]) to perform actions such as showing text boxes, disabling player control over Luigi, and more.&lt;br /&gt;
==== See also ====&lt;br /&gt;
* [[Event List]]&lt;br /&gt;
* [[Eventor]]&lt;br /&gt;
&lt;br /&gt;
=== Flag ===&lt;br /&gt;
A &#039;&#039;&#039;flag&#039;&#039;&#039; is a boolean value (true or false) that are primarily used as &amp;quot;checkpoints&amp;quot; for the player, however can be used for any purpose. Flags can either be permanent (saved to the memory card), room-exclusive (value lost when exiting the current room), or map-exclusive (value lost when exiting the current map).&lt;br /&gt;
==== See also ====&lt;br /&gt;
* [[Flags]]&lt;br /&gt;
&lt;br /&gt;
=== Observer ===&lt;br /&gt;
Observers are essentially &amp;quot;mini-programs&amp;quot; that constantly asks the game questions about what the current state of the game is (&amp;quot;Are all of the ghosts in this wave captured yet?&amp;quot;, &amp;quot;Is flag 23 turned on?&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Think of them like an invisible eye that consistently monitors what &#039;&#039;condition&#039;&#039; needs to be met so that something can be &#039;&#039;done&#039;&#039;.&lt;br /&gt;
==== See also ====&lt;br /&gt;
* [[Observerinfo / Teidenobserverinfo]]&lt;br /&gt;
* [[Cond Types]]&lt;br /&gt;
* [[Do Types]]&lt;br /&gt;
&lt;br /&gt;
=== Viewport ===&lt;br /&gt;
A &#039;&#039;&#039;viewport&#039;&#039;&#039; is a rectangular window in which other rooms are rendered. These are most notably used in the 1F and 2F hallways, which are broken into multiple rooms; viewports allow these rooms to be stitched together seamlessly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== JMP ==&lt;br /&gt;
&lt;br /&gt;
=== Observers ===&lt;br /&gt;
&lt;br /&gt;
One of the things that people seem to have the most trouble understanding is Observers, so here is a small rundown:&lt;br /&gt;
&lt;br /&gt;
Observers are essentially &amp;quot;mini-programs&amp;quot; that constantly asks the game questions about what the current state of the game is. (&amp;quot;Are all of the ghosts in this wave captured yet?&amp;quot;, &amp;quot;Is flag 23 turned on?&amp;quot;). Think of them like an invisible eye that consistently monitors what &#039;&#039;condition&#039;&#039; needs to be met so that something can be &#039;&#039;done.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
They are used for everything from making ghosts spawn to making the lights turn on when you&#039;ve captured all the ghosts in a room.&lt;br /&gt;
&lt;br /&gt;
Lets give you an example:&lt;br /&gt;
&lt;br /&gt;
# The observer will ask the game a &amp;quot;question&amp;quot; (Eg: &amp;quot;Have all of the candles in this room been blown out?&amp;quot;) - In programming terms these &amp;quot;questions&amp;quot; are known as Conditions.&lt;br /&gt;
# The game itself will reply with an &amp;quot;answer&amp;quot; of either True (Yes) or False (No). - In programming terms these &amp;quot;answers&amp;quot; are known as bool&#039;s / Booleans.&lt;br /&gt;
# If the reply from the game is True (Yes) then the observer will do &#039;&#039;something&#039;&#039; - More accurately, it will do whatever is specified in the observer&#039;s do_type field.&lt;br /&gt;
&lt;br /&gt;
By using the &#039;&#039;cond_string_arg0&#039;&#039; and &#039;&#039;string_arg0&#039;&#039; fields in the observers you can link a multiple observers to activate after just one observer activates,&lt;br /&gt;
&lt;br /&gt;
this will allow you to do more than just one thing after a ghost wave has been defeated for example.&lt;br /&gt;
&lt;br /&gt;
You could however also create a &amp;quot;observer chain&amp;quot; to do this; &amp;quot;Is all the ghosts in this wave captured yet?&amp;quot; (True) -&amp;gt; Light Up The Room (True) -&amp;gt; Unlock The Doors (True) -&amp;gt; Spawn Chest (True)&lt;br /&gt;
&lt;br /&gt;
&amp;quot;There&#039;s multiple ways to Rome&amp;quot; - You can get similar results with different approaches, we recommend you choose one that you find the most understandable / easy to use.&lt;br /&gt;
&lt;br /&gt;
And that is essentially how all observers in the game work.&lt;br /&gt;
&lt;br /&gt;
Now go experiment! - That&#039;s the best way of learning! :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== RAM ==&lt;br /&gt;
&lt;br /&gt;
=== Change which door triggers the Foyer Gold Ghost Laugh and in return sets flag 3 ===&lt;br /&gt;
&lt;br /&gt;
8001bec0 386000xx &amp;lt;br /&amp;gt; xx - Door ID&lt;br /&gt;
&lt;br /&gt;
(Credits - CyrusLoS)&lt;br /&gt;
&lt;br /&gt;
== DOL ==&lt;br /&gt;
&lt;br /&gt;
=== Force Portrait Ghosts to use params for HP ===&lt;br /&gt;
&lt;br /&gt;
At offset 0xBDED0, paste/write 4800002c.&lt;br /&gt;
&lt;br /&gt;
(Credits - CyrusLoS)&lt;br /&gt;
&lt;br /&gt;
=== Add treasure drops to regular ghosts ===&lt;br /&gt;
&lt;br /&gt;
Change the address listed at 0x358718 to 800d59ac. &amp;lt;br /&amp;gt; Add a entry for the ghost in question into iyapootable along with what you want it to drop. &amp;lt;br /&amp;gt; (Credits - LMFinish)&lt;br /&gt;
&lt;br /&gt;
=== Reverse Kieru (spawn animation) for regular ghosts ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Model Archive&lt;br /&gt;
|-&lt;br /&gt;
| 0x33DD5E&lt;br /&gt;
| obake01.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33DF5E&lt;br /&gt;
| obake02.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33E17E&lt;br /&gt;
| obake03.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33E3BE&lt;br /&gt;
| obake04.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33E3BE&lt;br /&gt;
| topoo.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33E3BE&lt;br /&gt;
| skul.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33EBBA&lt;br /&gt;
| heypo.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33F8C2&lt;br /&gt;
| tenjyo.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33FA02&lt;br /&gt;
| banaoba.szp&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Change the value at any of the offsets to &#039;&#039;&#039;0E 52&#039;&#039;&#039; to reverse the ghosts&#039; spawn-in animation. &amp;lt;br /&amp;gt; (Credits - weirdboo)&lt;br /&gt;
&lt;br /&gt;
=== Beta Spinning Coins by Ralf (upside-down bug fix by 0wen) ===&lt;br /&gt;
&lt;br /&gt;
At offset 0xD50, paste/write 3C608000C0033D6CC03D0024EC21002AD03D0024A87C00A64815427C41700000 &amp;lt;br /&amp;gt; At offset 0x15402C, paste/write 3800BC00B01E005E &amp;lt;br /&amp;gt; At offset 0x154D40, paste/write 4BEABD70 &amp;lt;br /&amp;gt; (Credits - weirdboo, 0wen)&lt;br /&gt;
&lt;br /&gt;
=== Various RAM Addresses ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Address&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 80340D48&lt;br /&gt;
| Yapoo Appear Type&lt;br /&gt;
|-&lt;br /&gt;
| 80340F48&lt;br /&gt;
| Mapoo Appear Type&lt;br /&gt;
|-&lt;br /&gt;
| 804D2BE4&lt;br /&gt;
| Flashlight Cone Size Modifier&lt;br /&gt;
|-&lt;br /&gt;
| 804D2BEC&lt;br /&gt;
| Flashlight RGB&lt;br /&gt;
|-&lt;br /&gt;
| 800D0E94&lt;br /&gt;
| I&#039;m 99% Sure This Is Luigi&#039;s Reaction To The Poison Mushroom&lt;br /&gt;
|-&lt;br /&gt;
| 800466F4&lt;br /&gt;
| Draws The OOB Coin&lt;br /&gt;
|-&lt;br /&gt;
| 804D2BB8&lt;br /&gt;
| Luigi&#039;s Walking Speed&lt;br /&gt;
|-&lt;br /&gt;
| 8003D6F0&lt;br /&gt;
| Radar State I think (To make it so the radar is always on, NOP this address.)&lt;br /&gt;
|-&lt;br /&gt;
| 801E1EA0&lt;br /&gt;
| Coin Physics (If this address is nopped/zero&#039;d out it will give you spinning coins, however, it spins periodically and not consistently.)&lt;br /&gt;
|-&lt;br /&gt;
| 800BCAF0&lt;br /&gt;
| treasuretable JMP Loading (Same goes for the address below)&lt;br /&gt;
|-&lt;br /&gt;
| 800BCAF4&lt;br /&gt;
| treasuretable JMP Loading&lt;br /&gt;
|-&lt;br /&gt;
| 804D9A0C&lt;br /&gt;
| Nintendo Logo Color&lt;br /&gt;
|-&lt;br /&gt;
| 800B3B6C&lt;br /&gt;
| Flashlight On And Off Function (If you nop this the flashlight will not turn off)&lt;br /&gt;
|-&lt;br /&gt;
| 804D8597&lt;br /&gt;
| This Address Is How Many Ghosts Luigi Has And The Current Value Of The Ghost Counter&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
(Credits - ScaredLuigiCrawling)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Static Data Offsets ===&lt;br /&gt;
USA version documentation originally by &#039;&#039;&#039;weirdboo&#039;&#039;&#039;, and JPN version documentation by ThePlayerRolo. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Starting offset (USA): &lt;br /&gt;
0x21B000&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN): &lt;br /&gt;
0x210240&lt;br /&gt;
&lt;br /&gt;
Length (USA):&lt;br /&gt;
DD380&lt;br /&gt;
&lt;br /&gt;
Length (JPN):&lt;br /&gt;
E0E60&lt;br /&gt;
&lt;br /&gt;
========&lt;br /&gt;
gameboy.szp&lt;br /&gt;
========&lt;br /&gt;
Starting offset (USA):&lt;br /&gt;
0x21B1A0&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN):&lt;br /&gt;
0x2103E0&lt;br /&gt;
&lt;br /&gt;
Length:&lt;br /&gt;
162E0&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
The GameBoy Horror zoom-in cutscene that plays when you press Y or Z.&lt;br /&gt;
&lt;br /&gt;
========&lt;br /&gt;
guidemap.szp&lt;br /&gt;
========&lt;br /&gt;
Starting offset (USA):&lt;br /&gt;
0x231480&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN):&lt;br /&gt;
0x2266C0&lt;br /&gt;
&lt;br /&gt;
Length:&lt;br /&gt;
409C0&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
The Mansion map that appears when you press Y.&lt;br /&gt;
&lt;br /&gt;
========&lt;br /&gt;
ninlogo.pcm&lt;br /&gt;
========&lt;br /&gt;
Starting offset (USA):&lt;br /&gt;
0x271E40&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN):&lt;br /&gt;
0x267080&lt;br /&gt;
&lt;br /&gt;
Length:&lt;br /&gt;
1F2C0&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
The deep-voiced &amp;quot;Nintendo&amp;quot; sound effect that plays when you boot up the game.&lt;br /&gt;
&lt;br /&gt;
========&lt;br /&gt;
nintendo.szp&lt;br /&gt;
========&lt;br /&gt;
Starting offset (USA):&lt;br /&gt;
0x291100&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN):&lt;br /&gt;
0x286340&lt;br /&gt;
&lt;br /&gt;
Length:&lt;br /&gt;
33C0&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
The Nintendo logo that appears when you boot up the game.&lt;br /&gt;
Note: this file can only be extracted/compressed with Yay0Enc; use the -d switch for decompression. Do **not** use ArcExtract.&lt;br /&gt;
&lt;br /&gt;
========&lt;br /&gt;
res_list.szp&lt;br /&gt;
========&lt;br /&gt;
Starting offset (USA):&lt;br /&gt;
0x2944C0&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN):&lt;br /&gt;
0x289700&lt;br /&gt;
&lt;br /&gt;
Length (USA):&lt;br /&gt;
1C060&lt;br /&gt;
&lt;br /&gt;
Length (JPN):&lt;br /&gt;
1C180&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
The status screen that shows treasure, portrait ghosts, mario items, and medals that appears when you press Z.&lt;br /&gt;
&lt;br /&gt;
========&lt;br /&gt;
res_paus.szp&lt;br /&gt;
========&lt;br /&gt;
Starting offset (USA):&lt;br /&gt;
0x2B0520&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN):&lt;br /&gt;
0x2A5880&lt;br /&gt;
&lt;br /&gt;
Length (USA):&lt;br /&gt;
1DEA0&lt;br /&gt;
&lt;br /&gt;
Length (JPN):&lt;br /&gt;
1DCA0&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
The pause menu.&lt;br /&gt;
&lt;br /&gt;
========&lt;br /&gt;
res_titl.szp&lt;br /&gt;
========&lt;br /&gt;
Starting offset (USA):&lt;br /&gt;
0x2CE3C0&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN):&lt;br /&gt;
0x2C3520&lt;br /&gt;
&lt;br /&gt;
Length (USA):&lt;br /&gt;
29FC0&lt;br /&gt;
&lt;br /&gt;
Length (JPN):&lt;br /&gt;
2DB80&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
The title screen with the Luigi&#039;s Mansion logo, background, copyright text, and &amp;quot;Press Start&amp;quot;.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
[[Scene Documentation]]&lt;/div&gt;</summary>
		<author><name>ThePlayerRolo</name></author>
	</entry>
	<entry>
		<id>https://www.lmhack.net/index.php?title=Game_Knowledge&amp;diff=1382</id>
		<title>Game Knowledge</title>
		<link rel="alternate" type="text/html" href="https://www.lmhack.net/index.php?title=Game_Knowledge&amp;diff=1382"/>
		<updated>2026-07-16T19:13:46Z</updated>

		<summary type="html">&lt;p&gt;ThePlayerRolo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Original Author(s) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;opeyx&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;This page should (hopefully) provide you with some knowledge about how certain stuff in Luigi&#039;s Mansions works.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;We will continue add new content here as we get a better understanding for how different parts of the game works.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;This page should be considered a work in progress at all times, we will do our best to always provide the most accurate information however.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
This list provides context for various terms used in Luigi&#039;s Mansion modding efforts.&lt;br /&gt;
&lt;br /&gt;
=== Event ===&lt;br /&gt;
An &#039;&#039;&#039;event&#039;&#039;&#039; is a function that can be defined using an event script, which uses its own language (see [[Script Tags]]) to perform actions such as showing text boxes, disabling player control over Luigi, and more.&lt;br /&gt;
==== See also ====&lt;br /&gt;
* [[Event List]]&lt;br /&gt;
* [[Eventor]]&lt;br /&gt;
&lt;br /&gt;
=== Flag ===&lt;br /&gt;
A &#039;&#039;&#039;flag&#039;&#039;&#039; is a boolean value (true or false) that are primarily used as &amp;quot;checkpoints&amp;quot; for the player, however can be used for any purpose. Flags can either be permanent (saved to the memory card), room-exclusive (value lost when exiting the current room), or map-exclusive (value lost when exiting the current map).&lt;br /&gt;
==== See also ====&lt;br /&gt;
* [[Flags]]&lt;br /&gt;
&lt;br /&gt;
=== Observer ===&lt;br /&gt;
Observers are essentially &amp;quot;mini-programs&amp;quot; that constantly asks the game questions about what the current state of the game is (&amp;quot;Are all of the ghosts in this wave captured yet?&amp;quot;, &amp;quot;Is flag 23 turned on?&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Think of them like an invisible eye that consistently monitors what &#039;&#039;condition&#039;&#039; needs to be met so that something can be &#039;&#039;done&#039;&#039;.&lt;br /&gt;
==== See also ====&lt;br /&gt;
* [[Observerinfo / Teidenobserverinfo]]&lt;br /&gt;
* [[Cond Types]]&lt;br /&gt;
* [[Do Types]]&lt;br /&gt;
&lt;br /&gt;
=== Viewport ===&lt;br /&gt;
A &#039;&#039;&#039;viewport&#039;&#039;&#039; is a rectangular window in which other rooms are rendered. These are most notably used in the 1F and 2F hallways, which are broken into multiple rooms; viewports allow these rooms to be stitched together seamlessly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== JMP ==&lt;br /&gt;
&lt;br /&gt;
=== Observers ===&lt;br /&gt;
&lt;br /&gt;
One of the things that people seem to have the most trouble understanding is Observers, so here is a small rundown:&lt;br /&gt;
&lt;br /&gt;
Observers are essentially &amp;quot;mini-programs&amp;quot; that constantly asks the game questions about what the current state of the game is. (&amp;quot;Are all of the ghosts in this wave captured yet?&amp;quot;, &amp;quot;Is flag 23 turned on?&amp;quot;). Think of them like an invisible eye that consistently monitors what &#039;&#039;condition&#039;&#039; needs to be met so that something can be &#039;&#039;done.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
They are used for everything from making ghosts spawn to making the lights turn on when you&#039;ve captured all the ghosts in a room.&lt;br /&gt;
&lt;br /&gt;
Lets give you an example:&lt;br /&gt;
&lt;br /&gt;
# The observer will ask the game a &amp;quot;question&amp;quot; (Eg: &amp;quot;Have all of the candles in this room been blown out?&amp;quot;) - In programming terms these &amp;quot;questions&amp;quot; are known as Conditions.&lt;br /&gt;
# The game itself will reply with an &amp;quot;answer&amp;quot; of either True (Yes) or False (No). - In programming terms these &amp;quot;answers&amp;quot; are known as bool&#039;s / Booleans.&lt;br /&gt;
# If the reply from the game is True (Yes) then the observer will do &#039;&#039;something&#039;&#039; - More accurately, it will do whatever is specified in the observer&#039;s do_type field.&lt;br /&gt;
&lt;br /&gt;
By using the &#039;&#039;cond_string_arg0&#039;&#039; and &#039;&#039;string_arg0&#039;&#039; fields in the observers you can link a multiple observers to activate after just one observer activates,&lt;br /&gt;
&lt;br /&gt;
this will allow you to do more than just one thing after a ghost wave has been defeated for example.&lt;br /&gt;
&lt;br /&gt;
You could however also create a &amp;quot;observer chain&amp;quot; to do this; &amp;quot;Is all the ghosts in this wave captured yet?&amp;quot; (True) -&amp;gt; Light Up The Room (True) -&amp;gt; Unlock The Doors (True) -&amp;gt; Spawn Chest (True)&lt;br /&gt;
&lt;br /&gt;
&amp;quot;There&#039;s multiple ways to Rome&amp;quot; - You can get similar results with different approaches, we recommend you choose one that you find the most understandable / easy to use.&lt;br /&gt;
&lt;br /&gt;
And that is essentially how all observers in the game work.&lt;br /&gt;
&lt;br /&gt;
Now go experiment! - That&#039;s the best way of learning! :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== RAM ==&lt;br /&gt;
&lt;br /&gt;
=== Change which door triggers the Foyer Gold Ghost Laugh and in return sets flag 3 ===&lt;br /&gt;
&lt;br /&gt;
8001bec0 386000xx &amp;lt;br /&amp;gt; xx - Door ID&lt;br /&gt;
&lt;br /&gt;
(Credits - CyrusLoS)&lt;br /&gt;
&lt;br /&gt;
== DOL ==&lt;br /&gt;
&lt;br /&gt;
=== Force Portrait Ghosts to use params for HP ===&lt;br /&gt;
&lt;br /&gt;
At offset 0xBDED0, paste/write 4800002c.&lt;br /&gt;
&lt;br /&gt;
(Credits - CyrusLoS)&lt;br /&gt;
&lt;br /&gt;
=== Add treasure drops to regular ghosts ===&lt;br /&gt;
&lt;br /&gt;
Change the address listed at 0x358718 to 800d59ac. &amp;lt;br /&amp;gt; Add a entry for the ghost in question into iyapootable along with what you want it to drop. &amp;lt;br /&amp;gt; (Credits - LMFinish)&lt;br /&gt;
&lt;br /&gt;
=== Reverse Kieru (spawn animation) for regular ghosts ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Model Archive&lt;br /&gt;
|-&lt;br /&gt;
| 0x33DD5E&lt;br /&gt;
| obake01.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33DF5E&lt;br /&gt;
| obake02.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33E17E&lt;br /&gt;
| obake03.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33E3BE&lt;br /&gt;
| obake04.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33E3BE&lt;br /&gt;
| topoo.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33E3BE&lt;br /&gt;
| skul.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33EBBA&lt;br /&gt;
| heypo.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33F8C2&lt;br /&gt;
| tenjyo.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33FA02&lt;br /&gt;
| banaoba.szp&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Change the value at any of the offsets to &#039;&#039;&#039;0E 52&#039;&#039;&#039; to reverse the ghosts&#039; spawn-in animation. &amp;lt;br /&amp;gt; (Credits - weirdboo)&lt;br /&gt;
&lt;br /&gt;
=== Beta Spinning Coins by Ralf (upside-down bug fix by 0wen) ===&lt;br /&gt;
&lt;br /&gt;
At offset 0xD50, paste/write 3C608000C0033D6CC03D0024EC21002AD03D0024A87C00A64815427C41700000 &amp;lt;br /&amp;gt; At offset 0x15402C, paste/write 3800BC00B01E005E &amp;lt;br /&amp;gt; At offset 0x154D40, paste/write 4BEABD70 &amp;lt;br /&amp;gt; (Credits - weirdboo, 0wen)&lt;br /&gt;
&lt;br /&gt;
=== Various RAM Addresses ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Address&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 80340D48&lt;br /&gt;
| Yapoo Appear Type&lt;br /&gt;
|-&lt;br /&gt;
| 80340F48&lt;br /&gt;
| Mapoo Appear Type&lt;br /&gt;
|-&lt;br /&gt;
| 804D2BE4&lt;br /&gt;
| Flashlight Cone Size Modifier&lt;br /&gt;
|-&lt;br /&gt;
| 804D2BEC&lt;br /&gt;
| Flashlight RGB&lt;br /&gt;
|-&lt;br /&gt;
| 800D0E94&lt;br /&gt;
| I&#039;m 99% Sure This Is Luigi&#039;s Reaction To The Poison Mushroom&lt;br /&gt;
|-&lt;br /&gt;
| 800466F4&lt;br /&gt;
| Draws The OOB Coin&lt;br /&gt;
|-&lt;br /&gt;
| 804D2BB8&lt;br /&gt;
| Luigi&#039;s Walking Speed&lt;br /&gt;
|-&lt;br /&gt;
| 8003D6F0&lt;br /&gt;
| Radar State I think (To make it so the radar is always on, NOP this address.)&lt;br /&gt;
|-&lt;br /&gt;
| 801E1EA0&lt;br /&gt;
| Coin Physics (If this address is nopped/zero&#039;d out it will give you spinning coins, however, it spins periodically and not consistently.)&lt;br /&gt;
|-&lt;br /&gt;
| 800BCAF0&lt;br /&gt;
| treasuretable JMP Loading (Same goes for the address below)&lt;br /&gt;
|-&lt;br /&gt;
| 800BCAF4&lt;br /&gt;
| treasuretable JMP Loading&lt;br /&gt;
|-&lt;br /&gt;
| 804D9A0C&lt;br /&gt;
| Nintendo Logo Color&lt;br /&gt;
|-&lt;br /&gt;
| 800B3B6C&lt;br /&gt;
| Flashlight On And Off Function (If you nop this the flashlight will not turn off)&lt;br /&gt;
|-&lt;br /&gt;
| 804D8597&lt;br /&gt;
| This Address Is How Many Ghosts Luigi Has And The Current Value Of The Ghost Counter&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
(Credits - ScaredLuigiCrawling)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Static Data Offsets ===&lt;br /&gt;
USA version documentation originally by &#039;&#039;&#039;weirdboo&#039;&#039;&#039;, and JPN version documentation by ThePlayerRolo. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Starting offset (USA): &lt;br /&gt;
0x21B000&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN): &lt;br /&gt;
0x210240&lt;br /&gt;
&lt;br /&gt;
Length (USA):&lt;br /&gt;
DD380&lt;br /&gt;
&lt;br /&gt;
Length (JPN):&lt;br /&gt;
E0E60&lt;br /&gt;
&lt;br /&gt;
========&lt;br /&gt;
gameboy.szp&lt;br /&gt;
========&lt;br /&gt;
Starting offset (USA):&lt;br /&gt;
0x21B1A0&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN):&lt;br /&gt;
0x2103E0&lt;br /&gt;
&lt;br /&gt;
Length:&lt;br /&gt;
162E0&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
The GameBoy Horror zoom-in cutscene that plays when you press Y or Z.&lt;br /&gt;
&lt;br /&gt;
========&lt;br /&gt;
guidemap.szp&lt;br /&gt;
========&lt;br /&gt;
Starting offset (USA):&lt;br /&gt;
0x231480&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN):&lt;br /&gt;
0x2266C0&lt;br /&gt;
&lt;br /&gt;
Length:&lt;br /&gt;
409C0&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
The Mansion map that appears when you press Y.&lt;br /&gt;
&lt;br /&gt;
========&lt;br /&gt;
ninlogo.pcm&lt;br /&gt;
========&lt;br /&gt;
Starting offset (USA):&lt;br /&gt;
0x271E40&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN):&lt;br /&gt;
0x267080&lt;br /&gt;
&lt;br /&gt;
Length:&lt;br /&gt;
1F2C0&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
The deep-voiced &amp;quot;Nintendo&amp;quot; sound effect that plays when you boot up the game.&lt;br /&gt;
&lt;br /&gt;
========&lt;br /&gt;
nintendo.szp&lt;br /&gt;
========&lt;br /&gt;
Starting offset (USA):&lt;br /&gt;
0x291100&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN):&lt;br /&gt;
0x286340&lt;br /&gt;
&lt;br /&gt;
Length:&lt;br /&gt;
33C0&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
The Nintendo logo that appears when you boot up the game.&lt;br /&gt;
Note: this file can only be extracted/compressed with Yay0Enc; use the -d switch for decompression. Do **not** use ArcExtract.&lt;br /&gt;
&lt;br /&gt;
========&lt;br /&gt;
res_list.szp&lt;br /&gt;
========&lt;br /&gt;
Starting offset (USA):&lt;br /&gt;
0x2944C0&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN):&lt;br /&gt;
0x289700&lt;br /&gt;
&lt;br /&gt;
Length (USA):&lt;br /&gt;
1C060&lt;br /&gt;
&lt;br /&gt;
Length (JPN):&lt;br /&gt;
1C180&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
The status screen that shows treasure, portrait ghosts, mario items, and medals that appears when you press Z.&lt;br /&gt;
&lt;br /&gt;
========&lt;br /&gt;
res_paus.szp&lt;br /&gt;
========&lt;br /&gt;
Starting offset (USA):&lt;br /&gt;
0x2B0520&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN):&lt;br /&gt;
0x2A5880&lt;br /&gt;
&lt;br /&gt;
Length (USA):&lt;br /&gt;
1DEA0&lt;br /&gt;
&lt;br /&gt;
Length (JPN):&lt;br /&gt;
1DCA0&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
The pause menu.&lt;br /&gt;
&lt;br /&gt;
========&lt;br /&gt;
res_titl.szp&lt;br /&gt;
========&lt;br /&gt;
Starting offset (USA):&lt;br /&gt;
0x2CE3C0&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN):&lt;br /&gt;
0x2C3520&lt;br /&gt;
&lt;br /&gt;
Length (USA):&lt;br /&gt;
29FC0&lt;br /&gt;
&lt;br /&gt;
Length (JPN):&lt;br /&gt;
2DB80&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
The title screen with the Luigi&#039;s Mansion logo, background, copyright text, and &amp;quot;Press Start&amp;quot;.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
[[Scenes]]&lt;/div&gt;</summary>
		<author><name>ThePlayerRolo</name></author>
	</entry>
	<entry>
		<id>https://www.lmhack.net/index.php?title=Scenes&amp;diff=1381</id>
		<title>Scenes</title>
		<link rel="alternate" type="text/html" href="https://www.lmhack.net/index.php?title=Scenes&amp;diff=1381"/>
		<updated>2026-07-16T00:55:33Z</updated>

		<summary type="html">&lt;p&gt;ThePlayerRolo: puncuation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Description ==&lt;br /&gt;
This page has documentation on the &amp;quot;Scene&amp;quot; system seen in Luigi&#039;s Mansion, which handles the most basic game states (Title Screen, Boot, Main Game, etc).&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Scene Structure&lt;br /&gt;
! Member Name&lt;br /&gt;
! Member Type&lt;br /&gt;
! Member Offset&lt;br /&gt;
! Member Description&lt;br /&gt;
|-&lt;br /&gt;
| mName&lt;br /&gt;
| &amp;lt;code&amp;gt;char[16]&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x00&amp;lt;/code&amp;gt;&lt;br /&gt;
| The name of the scene.&lt;br /&gt;
|-&lt;br /&gt;
| _10&lt;br /&gt;
| &amp;lt;code&amp;gt;s16 (signed short)&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x10&amp;lt;/code&amp;gt;&lt;br /&gt;
| Currently unknown, but could be some sort of id.&lt;br /&gt;
|-&lt;br /&gt;
| mInitFn&lt;br /&gt;
| &amp;lt;code&amp;gt;void (*SceneInitFunc)()&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x14&amp;lt;/code&amp;gt;&lt;br /&gt;
| A pointer to the scene&#039;s function used for initializing the scene.&lt;br /&gt;
|-&lt;br /&gt;
| mUpdateFn&lt;br /&gt;
| &amp;lt;code&amp;gt;u32 (*SceneUpdateFunc)()&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x18&amp;lt;/code&amp;gt;&lt;br /&gt;
| A pointer to the scene&#039;s function used for updating the scene every frame.&lt;br /&gt;
|-&lt;br /&gt;
| mDrawFn&lt;br /&gt;
| &amp;lt;code&amp;gt;void (*SceneDrawFunc)()&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x1C&amp;lt;/code&amp;gt;&lt;br /&gt;
| A pointer to the scene&#039;s function used for drawing the scene every frame.&lt;br /&gt;
|-&lt;br /&gt;
| mDestroyFn&lt;br /&gt;
| &amp;lt;code&amp;gt;void (*SceneDestroyFunc)()&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x20&amp;lt;/code&amp;gt;&lt;br /&gt;
| A pointer to the scene&#039;s function used for destroying the scene and it&#039;s resources.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ SceneID Enum&lt;br /&gt;
|-&lt;br /&gt;
! ID !! Enum Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; || SCENE_BOOT || Scene when booting up the game.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; || SCENE_TITLE || Title screen Scene.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; || SCENE_MAIN_GAME || Scene for the main game.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; || SCENE_SELECT || File select scene.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; || SCENE_OPENING || The scene for the opening that plays when idling on the title screen.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; || SCENE_STUFF_ROLL (Staff Roll) || Staff roll scene.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt; || SCENE_ENDING || Ending scene.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt; || SCENE_MOVIE || Scene used for the Pikmin movie.&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|+ External variables&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Type !! Address (USA) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| sCurScene || Scene* || 0x804CFF98 || A pointer to the current scene loaded into memory.&lt;br /&gt;
|-&lt;br /&gt;
| sCurSceneId || SceneID || 0x804D80A0 || The current scene&#039;s id, mainly used for indexing sSceneTable.&lt;br /&gt;
|-&lt;br /&gt;
| sSceneTable || Scene*[8] || 0x8021DB20 || A table consisting of all of the scenes, with the indexes corresponding to SceneID.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
[https://github.com/ThePlayerRolo/lm-decomp Luigi&#039;s Mansion Decompilation]&lt;/div&gt;</summary>
		<author><name>ThePlayerRolo</name></author>
	</entry>
	<entry>
		<id>https://www.lmhack.net/index.php?title=Scenes&amp;diff=1380</id>
		<title>Scenes</title>
		<link rel="alternate" type="text/html" href="https://www.lmhack.net/index.php?title=Scenes&amp;diff=1380"/>
		<updated>2026-07-16T00:55:02Z</updated>

		<summary type="html">&lt;p&gt;ThePlayerRolo: messed something up&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Description ==&lt;br /&gt;
This page has documentation on the &amp;quot;Scene&amp;quot; system seen in Luigi&#039;s Mansion, which handles the most basic game states (Title Screen, Boot, Main Game, etc).&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Scene Structure&lt;br /&gt;
! Member Name&lt;br /&gt;
! Member Type&lt;br /&gt;
! Member Offset&lt;br /&gt;
! Member Description&lt;br /&gt;
|-&lt;br /&gt;
| mName&lt;br /&gt;
| &amp;lt;code&amp;gt;char[16]&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x00&amp;lt;/code&amp;gt;&lt;br /&gt;
| The name of the scene.&lt;br /&gt;
|-&lt;br /&gt;
| _10&lt;br /&gt;
| &amp;lt;code&amp;gt;s16 (signed short)&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x10&amp;lt;/code&amp;gt;&lt;br /&gt;
| Currently unknown, but could be some sort of id.&lt;br /&gt;
|-&lt;br /&gt;
| mInitFn&lt;br /&gt;
| &amp;lt;code&amp;gt;void (*SceneInitFunc)()&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x14&amp;lt;/code&amp;gt;&lt;br /&gt;
| A pointer to the scene&#039;s function used for initializing the scene.&lt;br /&gt;
|-&lt;br /&gt;
| mUpdateFn&lt;br /&gt;
| &amp;lt;code&amp;gt;u32 (*SceneUpdateFunc)()&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x18&amp;lt;/code&amp;gt;&lt;br /&gt;
| A pointer to the scene&#039;s function used for updating the scene every frame.&lt;br /&gt;
|-&lt;br /&gt;
| mDrawFn&lt;br /&gt;
| &amp;lt;code&amp;gt;void (*SceneDrawFunc)()&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x1C&amp;lt;/code&amp;gt;&lt;br /&gt;
| A pointer to the scene&#039;s function used for drawing the scene every frame.&lt;br /&gt;
|-&lt;br /&gt;
| mDestroyFn&lt;br /&gt;
| &amp;lt;code&amp;gt;void (*SceneDestroyFunc)()&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x20&amp;lt;/code&amp;gt;&lt;br /&gt;
| A pointer to the scene&#039;s function used for destroying the scene and it&#039;s resources.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ SceneID Enum&lt;br /&gt;
|-&lt;br /&gt;
! ID !! Enum Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; || SCENE_BOOT || Scene when booting up the game.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; || SCENE_TITLE || Title screen Scene.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; || SCENE_MAIN_GAME || Scene for the main game.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; || SCENE_SELECT || File select scene.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; || SCENE_OPENING || The scene for the opening that plays when idling on the title screen.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; || SCENE_STUFF_ROLL (Staff Roll) || Staff roll scene&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt; || SCENE_ENDING || Ending scene.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt; || SCENE_MOVIE || Scene used for the Pikmin movie.&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|+ External variables&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Type !! Address (USA) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| sCurScene || Scene* || 0x804CFF98 || A pointer to the current scene loaded into memory.&lt;br /&gt;
|-&lt;br /&gt;
| sCurSceneId || SceneID || 0x804D80A0 || The current scene&#039;s id, mainly used for indexing sSceneTable.&lt;br /&gt;
|-&lt;br /&gt;
| sSceneTable || Scene*[8] || 0x8021DB20 || A table consisting of all of the scenes, with the indexes corresponding to SceneID.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
[https://github.com/ThePlayerRolo/lm-decomp Luigi&#039;s Mansion Decompilation]&lt;/div&gt;</summary>
		<author><name>ThePlayerRolo</name></author>
	</entry>
	<entry>
		<id>https://www.lmhack.net/index.php?title=Scenes&amp;diff=1379</id>
		<title>Scenes</title>
		<link rel="alternate" type="text/html" href="https://www.lmhack.net/index.php?title=Scenes&amp;diff=1379"/>
		<updated>2026-07-16T00:54:23Z</updated>

		<summary type="html">&lt;p&gt;ThePlayerRolo: More documentation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Description ==&lt;br /&gt;
This page has documentation on the &amp;quot;Scene&amp;quot; system seen in Luigi&#039;s Mansion, which handles the most basic game states (Title Screen, Boot, Main Game, etc).&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Scene Structure&lt;br /&gt;
! Member Name&lt;br /&gt;
! Member Type&lt;br /&gt;
! Member Offset&lt;br /&gt;
! Member Description&lt;br /&gt;
|-&lt;br /&gt;
| mName&lt;br /&gt;
| &amp;lt;code&amp;gt;char[16]&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x00&amp;lt;/code&amp;gt;&lt;br /&gt;
| The name of the scene.&lt;br /&gt;
|-&lt;br /&gt;
| _10&lt;br /&gt;
| &amp;lt;code&amp;gt;s16 (signed short)&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x10&amp;lt;/code&amp;gt;&lt;br /&gt;
| Currently unknown, but could be some sort of id.&lt;br /&gt;
|-&lt;br /&gt;
| mInitFn&lt;br /&gt;
| &amp;lt;code&amp;gt;void (*SceneInitFunc)()&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x14&amp;lt;/code&amp;gt;&lt;br /&gt;
| A pointer to the scene&#039;s function used for initializing the scene.&lt;br /&gt;
|-&lt;br /&gt;
| mUpdateFn&lt;br /&gt;
| &amp;lt;code&amp;gt;u32 (*SceneUpdateFunc)()&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x18&amp;lt;/code&amp;gt;&lt;br /&gt;
| A pointer to the scene&#039;s function used for updating the scene every frame.&lt;br /&gt;
|-&lt;br /&gt;
| mDrawFn&lt;br /&gt;
| &amp;lt;code&amp;gt;void (*SceneDrawFunc)()&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x1C&amp;lt;/code&amp;gt;&lt;br /&gt;
| A pointer to the scene&#039;s function used for drawing the scene every frame.&lt;br /&gt;
|-&lt;br /&gt;
| mDestroyFn&lt;br /&gt;
| &amp;lt;code&amp;gt;void (*SceneDestroyFunc)()&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x20&amp;lt;/code&amp;gt;&lt;br /&gt;
| A pointer to the scene&#039;s function used for destroying the scene and it&#039;s resources.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ SceneID Enum&lt;br /&gt;
|-&lt;br /&gt;
! ID !! Enum Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; || SCENE_BOOT !! Scene when booting up the game.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; || SCENE_TITLE !! Title screen Scene.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; || SCENE_MAIN_GAME !! Scene for the main game.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; || SCENE_SELECT !! File select scene.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; || SCENE_OPENING !! The scene for the opening that plays when idling on the title screen.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; || SCENE_STUFF_ROLL (Staff Roll) !! Staff roll scene&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt; || SCENE_ENDING !! Ending scene.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt; || SCENE_MOVIE !! Scene used for the Pikmin movie.&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|+ External variables&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Type !! Address (USA) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| sCurScene || Scene* || 0x804CFF98 || A pointer to the current scene loaded into memory.&lt;br /&gt;
|-&lt;br /&gt;
| sCurSceneId || SceneID || 0x804D80A0 || The current scene&#039;s id, mainly used for indexing sSceneTable.&lt;br /&gt;
|-&lt;br /&gt;
| sSceneTable || Scene*[8] || 0x8021DB20 || A table consisting of all of the scenes, with the indexes corresponding to SceneID.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
[https://github.com/ThePlayerRolo/lm-decomp Luigi&#039;s Mansion Decompilation]&lt;/div&gt;</summary>
		<author><name>ThePlayerRolo</name></author>
	</entry>
	<entry>
		<id>https://www.lmhack.net/index.php?title=Scenes&amp;diff=1378</id>
		<title>Scenes</title>
		<link rel="alternate" type="text/html" href="https://www.lmhack.net/index.php?title=Scenes&amp;diff=1378"/>
		<updated>2026-07-16T00:33:13Z</updated>

		<summary type="html">&lt;p&gt;ThePlayerRolo: Add Scene ID docs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Description ==&lt;br /&gt;
This page has documentation on the &amp;quot;Scene&amp;quot; system seen in Luigi&#039;s Mansion, which handles the most basic game states (Title Screen, Boot, Main Game, etc).&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Scene Structure&lt;br /&gt;
! Member Name&lt;br /&gt;
! Member Type&lt;br /&gt;
! Member Offset&lt;br /&gt;
! Member Description&lt;br /&gt;
|-&lt;br /&gt;
| mName&lt;br /&gt;
| &amp;lt;code&amp;gt;char[16]&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x00&amp;lt;/code&amp;gt;&lt;br /&gt;
| The name of the scene.&lt;br /&gt;
|-&lt;br /&gt;
| _10&lt;br /&gt;
| &amp;lt;code&amp;gt;s16 (signed 16-bit integer)&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x10&amp;lt;/code&amp;gt;&lt;br /&gt;
| Currently unknown, but could be some sort of id.&lt;br /&gt;
|-&lt;br /&gt;
| mInitFn&lt;br /&gt;
| &amp;lt;code&amp;gt;void (*SceneInitFunc)()&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x14&amp;lt;/code&amp;gt;&lt;br /&gt;
| A pointer to the scene&#039;s function used for initializing the scene.&lt;br /&gt;
|-&lt;br /&gt;
| mUpdateFn&lt;br /&gt;
| &amp;lt;code&amp;gt;u32 (*SceneUpdateFunc)()&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x18&amp;lt;/code&amp;gt;&lt;br /&gt;
| A pointer to the scene&#039;s function used for updating the scene every frame.&lt;br /&gt;
|-&lt;br /&gt;
| mDrawFn&lt;br /&gt;
| &amp;lt;code&amp;gt;void (*SceneDrawFunc)()&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x1C&amp;lt;/code&amp;gt;&lt;br /&gt;
| A pointer to the scene&#039;s function used for drawing the scene every frame.&lt;br /&gt;
|-&lt;br /&gt;
| mDestroyFn&lt;br /&gt;
| &amp;lt;code&amp;gt;void (*SceneDestroyFunc)()&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x20&amp;lt;/code&amp;gt;&lt;br /&gt;
| A pointer to the scene&#039;s function used for destroying the scene and it&#039;s resources.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Scene IDs&lt;br /&gt;
|-&lt;br /&gt;
! ID !! Enum Name&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; || SCENE_BOOT&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; || SCENE_TITLE&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; || SCENE_MAIN_GAME&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; || SCENE_SELECT&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; || SCENE_OPENING&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; || SCENE_STUFF_ROLL (Staff Roll)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;6&amp;lt;/code&amp;gt; || SCENE_ENDING&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt; || SCENE_MOVIE&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
[https://github.com/ThePlayerRolo/lm-decomp/blob/main/include/Unsorted/Scene.hpp Luigi&#039;s Mansion Decompilation]&lt;/div&gt;</summary>
		<author><name>ThePlayerRolo</name></author>
	</entry>
	<entry>
		<id>https://www.lmhack.net/index.php?title=Scenes&amp;diff=1377</id>
		<title>Scenes</title>
		<link rel="alternate" type="text/html" href="https://www.lmhack.net/index.php?title=Scenes&amp;diff=1377"/>
		<updated>2026-07-16T00:17:20Z</updated>

		<summary type="html">&lt;p&gt;ThePlayerRolo: create basic scenes page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Description ==&lt;br /&gt;
This page has documentation on the &amp;quot;Scene&amp;quot; system seen in Luigi&#039;s Mansion, which handles the most basic game states (Title Screen, Boot, Main Game, etc).&lt;br /&gt;
&lt;br /&gt;
== Definitions ==&lt;br /&gt;
==== Scene Structure ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Member Name&lt;br /&gt;
! Member Type&lt;br /&gt;
! Member Offset&lt;br /&gt;
! Member Description&lt;br /&gt;
|-&lt;br /&gt;
| mName&lt;br /&gt;
| &amp;lt;code&amp;gt;char[16]&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x00&amp;lt;/code&amp;gt;&lt;br /&gt;
| The name of the scene.&lt;br /&gt;
|-&lt;br /&gt;
| _10&lt;br /&gt;
| &amp;lt;code&amp;gt;s16 (signed 16-bit integer)&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x10&amp;lt;/code&amp;gt;&lt;br /&gt;
| Currently unknown, but could be some sort of id.&lt;br /&gt;
|-&lt;br /&gt;
| mInitFn&lt;br /&gt;
| &amp;lt;code&amp;gt;void (*SceneInitFunc)()&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x14&amp;lt;/code&amp;gt;&lt;br /&gt;
| A pointer to the scene&#039;s function used for initializing the scene.&lt;br /&gt;
|-&lt;br /&gt;
| mUpdateFn&lt;br /&gt;
| &amp;lt;code&amp;gt;u32 (*SceneUpdateFunc)()&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x18&amp;lt;/code&amp;gt;&lt;br /&gt;
| A pointer to the scene&#039;s function used for updating the scene every frame.&lt;br /&gt;
|-&lt;br /&gt;
| mDrawFn&lt;br /&gt;
| &amp;lt;code&amp;gt;void (*SceneDrawFunc)()&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x1C&amp;lt;/code&amp;gt;&lt;br /&gt;
| A pointer to the scene&#039;s function used for drawing the scene every frame.&lt;br /&gt;
|-&lt;br /&gt;
| mDestroyFn&lt;br /&gt;
| &amp;lt;code&amp;gt;void (*SceneDestroyFunc)()&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;0x20&amp;lt;/code&amp;gt;&lt;br /&gt;
| A pointer to the scene&#039;s function used for destroying the scene and it&#039;s resources.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
[https://github.com/ThePlayerRolo/lm-decomp/blob/main/include/Unsorted/Scene.hpp Luigi&#039;s Mansion Decompilation]&lt;/div&gt;</summary>
		<author><name>ThePlayerRolo</name></author>
	</entry>
	<entry>
		<id>https://www.lmhack.net/index.php?title=Game_Knowledge&amp;diff=1375</id>
		<title>Game Knowledge</title>
		<link rel="alternate" type="text/html" href="https://www.lmhack.net/index.php?title=Game_Knowledge&amp;diff=1375"/>
		<updated>2026-05-20T22:22:10Z</updated>

		<summary type="html">&lt;p&gt;ThePlayerRolo: /* Static Data Offsets */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Original Author(s) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;opeyx&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;This page should (hopefully) provide you with some knowledge about how certain stuff in Luigi&#039;s Mansions works.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;We will continue add new content here as we get a better understanding for how different parts of the game works.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;This page should be considered a work in progress at all times, we will do our best to always provide the most accurate information however.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
This list provides context for various terms used in Luigi&#039;s Mansion modding efforts.&lt;br /&gt;
&lt;br /&gt;
=== Event ===&lt;br /&gt;
An &#039;&#039;&#039;event&#039;&#039;&#039; is a function that can be defined using an event script, which uses its own language (see [[Script Tags]]) to perform actions such as showing text boxes, disabling player control over Luigi, and more.&lt;br /&gt;
==== See also ====&lt;br /&gt;
* [[Event List]]&lt;br /&gt;
* [[Eventor]]&lt;br /&gt;
&lt;br /&gt;
=== Flag ===&lt;br /&gt;
A &#039;&#039;&#039;flag&#039;&#039;&#039; is a boolean value (true or false) that are primarily used as &amp;quot;checkpoints&amp;quot; for the player, however can be used for any purpose. Flags can either be permanent (saved to the memory card), room-exclusive (value lost when exiting the current room), or map-exclusive (value lost when exiting the current map).&lt;br /&gt;
==== See also ====&lt;br /&gt;
* [[Flags]]&lt;br /&gt;
&lt;br /&gt;
=== Observer ===&lt;br /&gt;
Observers are essentially &amp;quot;mini-programs&amp;quot; that constantly asks the game questions about what the current state of the game is (&amp;quot;Are all of the ghosts in this wave captured yet?&amp;quot;, &amp;quot;Is flag 23 turned on?&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Think of them like an invisible eye that consistently monitors what &#039;&#039;condition&#039;&#039; needs to be met so that something can be &#039;&#039;done&#039;&#039;.&lt;br /&gt;
==== See also ====&lt;br /&gt;
* [[Observerinfo / Teidenobserverinfo]]&lt;br /&gt;
* [[Cond Types]]&lt;br /&gt;
* [[Do Types]]&lt;br /&gt;
&lt;br /&gt;
=== Viewport ===&lt;br /&gt;
A &#039;&#039;&#039;viewport&#039;&#039;&#039; is a rectangular window in which other rooms are rendered. These are most notably used in the 1F and 2F hallways, which are broken into multiple rooms; viewports allow these rooms to be stitched together seamlessly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== JMP ==&lt;br /&gt;
&lt;br /&gt;
=== Observers ===&lt;br /&gt;
&lt;br /&gt;
One of the things that people seem to have the most trouble understanding is Observers, so here is a small rundown:&lt;br /&gt;
&lt;br /&gt;
Observers are essentially &amp;quot;mini-programs&amp;quot; that constantly asks the game questions about what the current state of the game is. (&amp;quot;Are all of the ghosts in this wave captured yet?&amp;quot;, &amp;quot;Is flag 23 turned on?&amp;quot;). Think of them like an invisible eye that consistently monitors what &#039;&#039;condition&#039;&#039; needs to be met so that something can be &#039;&#039;done.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
They are used for everything from making ghosts spawn to making the lights turn on when you&#039;ve captured all the ghosts in a room.&lt;br /&gt;
&lt;br /&gt;
Lets give you an example:&lt;br /&gt;
&lt;br /&gt;
# The observer will ask the game a &amp;quot;question&amp;quot; (Eg: &amp;quot;Have all of the candles in this room been blown out?&amp;quot;) - In programming terms these &amp;quot;questions&amp;quot; are known as Conditions.&lt;br /&gt;
# The game itself will reply with an &amp;quot;answer&amp;quot; of either True (Yes) or False (No). - In programming terms these &amp;quot;answers&amp;quot; are known as bool&#039;s / Booleans.&lt;br /&gt;
# If the reply from the game is True (Yes) then the observer will do &#039;&#039;something&#039;&#039; - More accurately, it will do whatever is specified in the observer&#039;s do_type field.&lt;br /&gt;
&lt;br /&gt;
By using the &#039;&#039;cond_string_arg0&#039;&#039; and &#039;&#039;string_arg0&#039;&#039; fields in the observers you can link a multiple observers to activate after just one observer activates,&lt;br /&gt;
&lt;br /&gt;
this will allow you to do more than just one thing after a ghost wave has been defeated for example.&lt;br /&gt;
&lt;br /&gt;
You could however also create a &amp;quot;observer chain&amp;quot; to do this; &amp;quot;Is all the ghosts in this wave captured yet?&amp;quot; (True) -&amp;gt; Light Up The Room (True) -&amp;gt; Unlock The Doors (True) -&amp;gt; Spawn Chest (True)&lt;br /&gt;
&lt;br /&gt;
&amp;quot;There&#039;s multiple ways to Rome&amp;quot; - You can get similar results with different approaches, we recommend you choose one that you find the most understandable / easy to use.&lt;br /&gt;
&lt;br /&gt;
And that is essentially how all observers in the game work.&lt;br /&gt;
&lt;br /&gt;
Now go experiment! - That&#039;s the best way of learning! :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== RAM ==&lt;br /&gt;
&lt;br /&gt;
=== Change which door triggers the Foyer Gold Ghost Laugh and in return sets flag 3 ===&lt;br /&gt;
&lt;br /&gt;
8001bec0 386000xx &amp;lt;br /&amp;gt; xx - Door ID&lt;br /&gt;
&lt;br /&gt;
(Credits - CyrusLoS)&lt;br /&gt;
&lt;br /&gt;
== DOL ==&lt;br /&gt;
&lt;br /&gt;
=== Force Portrait Ghosts to use params for HP ===&lt;br /&gt;
&lt;br /&gt;
At offset 0xBDED0, paste/write 4800002c.&lt;br /&gt;
&lt;br /&gt;
(Credits - CyrusLoS)&lt;br /&gt;
&lt;br /&gt;
=== Add treasure drops to regular ghosts ===&lt;br /&gt;
&lt;br /&gt;
Change the address listed at 0x358718 to 800d59ac. &amp;lt;br /&amp;gt; Add a entry for the ghost in question into iyapootable along with what you want it to drop. &amp;lt;br /&amp;gt; (Credits - LMFinish)&lt;br /&gt;
&lt;br /&gt;
=== Reverse Kieru (spawn animation) for regular ghosts ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Model Archive&lt;br /&gt;
|-&lt;br /&gt;
| 0x33DD5E&lt;br /&gt;
| obake01.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33DF5E&lt;br /&gt;
| obake02.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33E17E&lt;br /&gt;
| obake03.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33E3BE&lt;br /&gt;
| obake04.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33E3BE&lt;br /&gt;
| topoo.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33E3BE&lt;br /&gt;
| skul.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33EBBA&lt;br /&gt;
| heypo.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33F8C2&lt;br /&gt;
| tenjyo.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33FA02&lt;br /&gt;
| banaoba.szp&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Change the value at any of the offsets to &#039;&#039;&#039;0E 52&#039;&#039;&#039; to reverse the ghosts&#039; spawn-in animation. &amp;lt;br /&amp;gt; (Credits - weirdboo)&lt;br /&gt;
&lt;br /&gt;
=== Beta Spinning Coins by Ralf (upside-down bug fix by 0wen) ===&lt;br /&gt;
&lt;br /&gt;
At offset 0xD50, paste/write 3C608000C0033D6CC03D0024EC21002AD03D0024A87C00A64815427C41700000 &amp;lt;br /&amp;gt; At offset 0x15402C, paste/write 3800BC00B01E005E &amp;lt;br /&amp;gt; At offset 0x154D40, paste/write 4BEABD70 &amp;lt;br /&amp;gt; (Credits - weirdboo, 0wen)&lt;br /&gt;
&lt;br /&gt;
=== Various RAM Addresses ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Address&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 80340D48&lt;br /&gt;
| Yapoo Appear Type&lt;br /&gt;
|-&lt;br /&gt;
| 80340F48&lt;br /&gt;
| Mapoo Appear Type&lt;br /&gt;
|-&lt;br /&gt;
| 804D2BE4&lt;br /&gt;
| Flashlight Cone Size Modifier&lt;br /&gt;
|-&lt;br /&gt;
| 804D2BEC&lt;br /&gt;
| Flashlight RGB&lt;br /&gt;
|-&lt;br /&gt;
| 800D0E94&lt;br /&gt;
| I&#039;m 99% Sure This Is Luigi&#039;s Reaction To The Poison Mushroom&lt;br /&gt;
|-&lt;br /&gt;
| 800466F4&lt;br /&gt;
| Draws The OOB Coin&lt;br /&gt;
|-&lt;br /&gt;
| 804D2BB8&lt;br /&gt;
| Luigi&#039;s Walking Speed&lt;br /&gt;
|-&lt;br /&gt;
| 8003D6F0&lt;br /&gt;
| Radar State I think (To make it so the radar is always on, NOP this address.)&lt;br /&gt;
|-&lt;br /&gt;
| 801E1EA0&lt;br /&gt;
| Coin Physics (If this address is nopped/zero&#039;d out it will give you spinning coins, however, it spins periodically and not consistently.)&lt;br /&gt;
|-&lt;br /&gt;
| 800BCAF0&lt;br /&gt;
| treasuretable JMP Loading (Same goes for the address below)&lt;br /&gt;
|-&lt;br /&gt;
| 800BCAF4&lt;br /&gt;
| treasuretable JMP Loading&lt;br /&gt;
|-&lt;br /&gt;
| 804D9A0C&lt;br /&gt;
| Nintendo Logo Color&lt;br /&gt;
|-&lt;br /&gt;
| 800B3B6C&lt;br /&gt;
| Flashlight On And Off Function (If you nop this the flashlight will not turn off)&lt;br /&gt;
|-&lt;br /&gt;
| 804D8597&lt;br /&gt;
| This Address Is How Many Ghosts Luigi Has And The Current Value Of The Ghost Counter&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
(Credits - ScaredLuigiCrawling)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Static Data Offsets ===&lt;br /&gt;
USA version documentation originally by &#039;&#039;&#039;weirdboo&#039;&#039;&#039;, and JPN version documentation by ThePlayerRolo. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Starting offset (USA): &lt;br /&gt;
0x21B000&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN): &lt;br /&gt;
0x210240&lt;br /&gt;
&lt;br /&gt;
Length (USA):&lt;br /&gt;
DD380&lt;br /&gt;
&lt;br /&gt;
Length (JPN):&lt;br /&gt;
E0E60&lt;br /&gt;
&lt;br /&gt;
========&lt;br /&gt;
gameboy.szp&lt;br /&gt;
========&lt;br /&gt;
Starting offset (USA):&lt;br /&gt;
0x21B1A0&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN):&lt;br /&gt;
0x2103E0&lt;br /&gt;
&lt;br /&gt;
Length:&lt;br /&gt;
162E0&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
The GameBoy Horror zoom-in cutscene that plays when you press Y or Z.&lt;br /&gt;
&lt;br /&gt;
========&lt;br /&gt;
guidemap.szp&lt;br /&gt;
========&lt;br /&gt;
Starting offset (USA):&lt;br /&gt;
0x231480&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN):&lt;br /&gt;
0x2266C0&lt;br /&gt;
&lt;br /&gt;
Length:&lt;br /&gt;
409C0&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
The Mansion map that appears when you press Y.&lt;br /&gt;
&lt;br /&gt;
========&lt;br /&gt;
ninlogo.pcm&lt;br /&gt;
========&lt;br /&gt;
Starting offset (USA):&lt;br /&gt;
0x271E40&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN):&lt;br /&gt;
0x267080&lt;br /&gt;
&lt;br /&gt;
Length:&lt;br /&gt;
1F2C0&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
The deep-voiced &amp;quot;Nintendo&amp;quot; sound effect that plays when you boot up the game.&lt;br /&gt;
&lt;br /&gt;
========&lt;br /&gt;
nintendo.szp&lt;br /&gt;
========&lt;br /&gt;
Starting offset (USA):&lt;br /&gt;
0x291100&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN):&lt;br /&gt;
0x286340&lt;br /&gt;
&lt;br /&gt;
Length:&lt;br /&gt;
33C0&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
The Nintendo logo that appears when you boot up the game.&lt;br /&gt;
Note: this file can only be extracted/compressed with Yay0Enc; use the -d switch for decompression. Do **not** use ArcExtract.&lt;br /&gt;
&lt;br /&gt;
========&lt;br /&gt;
res_list.szp&lt;br /&gt;
========&lt;br /&gt;
Starting offset (USA):&lt;br /&gt;
0x2944C0&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN):&lt;br /&gt;
0x289700&lt;br /&gt;
&lt;br /&gt;
Length (USA):&lt;br /&gt;
1C060&lt;br /&gt;
&lt;br /&gt;
Length (JPN):&lt;br /&gt;
1C180&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
The status screen that shows treasure, portrait ghosts, mario items, and medals that appears when you press Z.&lt;br /&gt;
&lt;br /&gt;
========&lt;br /&gt;
res_paus.szp&lt;br /&gt;
========&lt;br /&gt;
Starting offset (USA):&lt;br /&gt;
0x2B0520&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN):&lt;br /&gt;
0x2A5880&lt;br /&gt;
&lt;br /&gt;
Length (USA):&lt;br /&gt;
1DEA0&lt;br /&gt;
&lt;br /&gt;
Length (JPN):&lt;br /&gt;
1DCA0&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
The pause menu.&lt;br /&gt;
&lt;br /&gt;
========&lt;br /&gt;
res_titl.szp&lt;br /&gt;
========&lt;br /&gt;
Starting offset (USA):&lt;br /&gt;
0x2CE3C0&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN):&lt;br /&gt;
0x2C3520&lt;br /&gt;
&lt;br /&gt;
Length (USA):&lt;br /&gt;
29FC0&lt;br /&gt;
&lt;br /&gt;
Length (JPN):&lt;br /&gt;
2DB80&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
The title screen with the Luigi&#039;s Mansion logo, background, copyright text, and &amp;quot;Press Start&amp;quot;.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>ThePlayerRolo</name></author>
	</entry>
	<entry>
		<id>https://www.lmhack.net/index.php?title=Game_Knowledge&amp;diff=1374</id>
		<title>Game Knowledge</title>
		<link rel="alternate" type="text/html" href="https://www.lmhack.net/index.php?title=Game_Knowledge&amp;diff=1374"/>
		<updated>2026-05-20T22:21:42Z</updated>

		<summary type="html">&lt;p&gt;ThePlayerRolo: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Original Author(s) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;opeyx&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;This page should (hopefully) provide you with some knowledge about how certain stuff in Luigi&#039;s Mansions works.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;We will continue add new content here as we get a better understanding for how different parts of the game works.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;This page should be considered a work in progress at all times, we will do our best to always provide the most accurate information however.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
This list provides context for various terms used in Luigi&#039;s Mansion modding efforts.&lt;br /&gt;
&lt;br /&gt;
=== Event ===&lt;br /&gt;
An &#039;&#039;&#039;event&#039;&#039;&#039; is a function that can be defined using an event script, which uses its own language (see [[Script Tags]]) to perform actions such as showing text boxes, disabling player control over Luigi, and more.&lt;br /&gt;
==== See also ====&lt;br /&gt;
* [[Event List]]&lt;br /&gt;
* [[Eventor]]&lt;br /&gt;
&lt;br /&gt;
=== Flag ===&lt;br /&gt;
A &#039;&#039;&#039;flag&#039;&#039;&#039; is a boolean value (true or false) that are primarily used as &amp;quot;checkpoints&amp;quot; for the player, however can be used for any purpose. Flags can either be permanent (saved to the memory card), room-exclusive (value lost when exiting the current room), or map-exclusive (value lost when exiting the current map).&lt;br /&gt;
==== See also ====&lt;br /&gt;
* [[Flags]]&lt;br /&gt;
&lt;br /&gt;
=== Observer ===&lt;br /&gt;
Observers are essentially &amp;quot;mini-programs&amp;quot; that constantly asks the game questions about what the current state of the game is (&amp;quot;Are all of the ghosts in this wave captured yet?&amp;quot;, &amp;quot;Is flag 23 turned on?&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Think of them like an invisible eye that consistently monitors what &#039;&#039;condition&#039;&#039; needs to be met so that something can be &#039;&#039;done&#039;&#039;.&lt;br /&gt;
==== See also ====&lt;br /&gt;
* [[Observerinfo / Teidenobserverinfo]]&lt;br /&gt;
* [[Cond Types]]&lt;br /&gt;
* [[Do Types]]&lt;br /&gt;
&lt;br /&gt;
=== Viewport ===&lt;br /&gt;
A &#039;&#039;&#039;viewport&#039;&#039;&#039; is a rectangular window in which other rooms are rendered. These are most notably used in the 1F and 2F hallways, which are broken into multiple rooms; viewports allow these rooms to be stitched together seamlessly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== JMP ==&lt;br /&gt;
&lt;br /&gt;
=== Observers ===&lt;br /&gt;
&lt;br /&gt;
One of the things that people seem to have the most trouble understanding is Observers, so here is a small rundown:&lt;br /&gt;
&lt;br /&gt;
Observers are essentially &amp;quot;mini-programs&amp;quot; that constantly asks the game questions about what the current state of the game is. (&amp;quot;Are all of the ghosts in this wave captured yet?&amp;quot;, &amp;quot;Is flag 23 turned on?&amp;quot;). Think of them like an invisible eye that consistently monitors what &#039;&#039;condition&#039;&#039; needs to be met so that something can be &#039;&#039;done.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
They are used for everything from making ghosts spawn to making the lights turn on when you&#039;ve captured all the ghosts in a room.&lt;br /&gt;
&lt;br /&gt;
Lets give you an example:&lt;br /&gt;
&lt;br /&gt;
# The observer will ask the game a &amp;quot;question&amp;quot; (Eg: &amp;quot;Have all of the candles in this room been blown out?&amp;quot;) - In programming terms these &amp;quot;questions&amp;quot; are known as Conditions.&lt;br /&gt;
# The game itself will reply with an &amp;quot;answer&amp;quot; of either True (Yes) or False (No). - In programming terms these &amp;quot;answers&amp;quot; are known as bool&#039;s / Booleans.&lt;br /&gt;
# If the reply from the game is True (Yes) then the observer will do &#039;&#039;something&#039;&#039; - More accurately, it will do whatever is specified in the observer&#039;s do_type field.&lt;br /&gt;
&lt;br /&gt;
By using the &#039;&#039;cond_string_arg0&#039;&#039; and &#039;&#039;string_arg0&#039;&#039; fields in the observers you can link a multiple observers to activate after just one observer activates,&lt;br /&gt;
&lt;br /&gt;
this will allow you to do more than just one thing after a ghost wave has been defeated for example.&lt;br /&gt;
&lt;br /&gt;
You could however also create a &amp;quot;observer chain&amp;quot; to do this; &amp;quot;Is all the ghosts in this wave captured yet?&amp;quot; (True) -&amp;gt; Light Up The Room (True) -&amp;gt; Unlock The Doors (True) -&amp;gt; Spawn Chest (True)&lt;br /&gt;
&lt;br /&gt;
&amp;quot;There&#039;s multiple ways to Rome&amp;quot; - You can get similar results with different approaches, we recommend you choose one that you find the most understandable / easy to use.&lt;br /&gt;
&lt;br /&gt;
And that is essentially how all observers in the game work.&lt;br /&gt;
&lt;br /&gt;
Now go experiment! - That&#039;s the best way of learning! :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== RAM ==&lt;br /&gt;
&lt;br /&gt;
=== Change which door triggers the Foyer Gold Ghost Laugh and in return sets flag 3 ===&lt;br /&gt;
&lt;br /&gt;
8001bec0 386000xx &amp;lt;br /&amp;gt; xx - Door ID&lt;br /&gt;
&lt;br /&gt;
(Credits - CyrusLoS)&lt;br /&gt;
&lt;br /&gt;
== DOL ==&lt;br /&gt;
&lt;br /&gt;
=== Force Portrait Ghosts to use params for HP ===&lt;br /&gt;
&lt;br /&gt;
At offset 0xBDED0, paste/write 4800002c.&lt;br /&gt;
&lt;br /&gt;
(Credits - CyrusLoS)&lt;br /&gt;
&lt;br /&gt;
=== Add treasure drops to regular ghosts ===&lt;br /&gt;
&lt;br /&gt;
Change the address listed at 0x358718 to 800d59ac. &amp;lt;br /&amp;gt; Add a entry for the ghost in question into iyapootable along with what you want it to drop. &amp;lt;br /&amp;gt; (Credits - LMFinish)&lt;br /&gt;
&lt;br /&gt;
=== Reverse Kieru (spawn animation) for regular ghosts ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Offset&lt;br /&gt;
! Model Archive&lt;br /&gt;
|-&lt;br /&gt;
| 0x33DD5E&lt;br /&gt;
| obake01.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33DF5E&lt;br /&gt;
| obake02.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33E17E&lt;br /&gt;
| obake03.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33E3BE&lt;br /&gt;
| obake04.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33E3BE&lt;br /&gt;
| topoo.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33E3BE&lt;br /&gt;
| skul.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33EBBA&lt;br /&gt;
| heypo.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33F8C2&lt;br /&gt;
| tenjyo.szp&lt;br /&gt;
|-&lt;br /&gt;
| 0x33FA02&lt;br /&gt;
| banaoba.szp&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Change the value at any of the offsets to &#039;&#039;&#039;0E 52&#039;&#039;&#039; to reverse the ghosts&#039; spawn-in animation. &amp;lt;br /&amp;gt; (Credits - weirdboo)&lt;br /&gt;
&lt;br /&gt;
=== Beta Spinning Coins by Ralf (upside-down bug fix by 0wen) ===&lt;br /&gt;
&lt;br /&gt;
At offset 0xD50, paste/write 3C608000C0033D6CC03D0024EC21002AD03D0024A87C00A64815427C41700000 &amp;lt;br /&amp;gt; At offset 0x15402C, paste/write 3800BC00B01E005E &amp;lt;br /&amp;gt; At offset 0x154D40, paste/write 4BEABD70 &amp;lt;br /&amp;gt; (Credits - weirdboo, 0wen)&lt;br /&gt;
&lt;br /&gt;
=== Various RAM Addresses ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Address&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| 80340D48&lt;br /&gt;
| Yapoo Appear Type&lt;br /&gt;
|-&lt;br /&gt;
| 80340F48&lt;br /&gt;
| Mapoo Appear Type&lt;br /&gt;
|-&lt;br /&gt;
| 804D2BE4&lt;br /&gt;
| Flashlight Cone Size Modifier&lt;br /&gt;
|-&lt;br /&gt;
| 804D2BEC&lt;br /&gt;
| Flashlight RGB&lt;br /&gt;
|-&lt;br /&gt;
| 800D0E94&lt;br /&gt;
| I&#039;m 99% Sure This Is Luigi&#039;s Reaction To The Poison Mushroom&lt;br /&gt;
|-&lt;br /&gt;
| 800466F4&lt;br /&gt;
| Draws The OOB Coin&lt;br /&gt;
|-&lt;br /&gt;
| 804D2BB8&lt;br /&gt;
| Luigi&#039;s Walking Speed&lt;br /&gt;
|-&lt;br /&gt;
| 8003D6F0&lt;br /&gt;
| Radar State I think (To make it so the radar is always on, NOP this address.)&lt;br /&gt;
|-&lt;br /&gt;
| 801E1EA0&lt;br /&gt;
| Coin Physics (If this address is nopped/zero&#039;d out it will give you spinning coins, however, it spins periodically and not consistently.)&lt;br /&gt;
|-&lt;br /&gt;
| 800BCAF0&lt;br /&gt;
| treasuretable JMP Loading (Same goes for the address below)&lt;br /&gt;
|-&lt;br /&gt;
| 800BCAF4&lt;br /&gt;
| treasuretable JMP Loading&lt;br /&gt;
|-&lt;br /&gt;
| 804D9A0C&lt;br /&gt;
| Nintendo Logo Color&lt;br /&gt;
|-&lt;br /&gt;
| 800B3B6C&lt;br /&gt;
| Flashlight On And Off Function (If you nop this the flashlight will not turn off)&lt;br /&gt;
|-&lt;br /&gt;
| 804D8597&lt;br /&gt;
| This Address Is How Many Ghosts Luigi Has And The Current Value Of The Ghost Counter&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
(Credits - ScaredLuigiCrawling)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Static Data Offsets ===&lt;br /&gt;
USA Documentation originally by &#039;&#039;&#039;weirdboo&#039;&#039;&#039;, and Japan Documentation by ThePlayerRolo. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Starting offset (USA): &lt;br /&gt;
0x21B000&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN): &lt;br /&gt;
0x210240&lt;br /&gt;
&lt;br /&gt;
Length (USA):&lt;br /&gt;
DD380&lt;br /&gt;
&lt;br /&gt;
Length (JPN):&lt;br /&gt;
E0E60&lt;br /&gt;
&lt;br /&gt;
========&lt;br /&gt;
gameboy.szp&lt;br /&gt;
========&lt;br /&gt;
Starting offset (USA):&lt;br /&gt;
0x21B1A0&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN):&lt;br /&gt;
0x2103E0&lt;br /&gt;
&lt;br /&gt;
Length:&lt;br /&gt;
162E0&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
The GameBoy Horror zoom-in cutscene that plays when you press Y or Z.&lt;br /&gt;
&lt;br /&gt;
========&lt;br /&gt;
guidemap.szp&lt;br /&gt;
========&lt;br /&gt;
Starting offset (USA):&lt;br /&gt;
0x231480&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN):&lt;br /&gt;
0x2266C0&lt;br /&gt;
&lt;br /&gt;
Length:&lt;br /&gt;
409C0&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
The Mansion map that appears when you press Y.&lt;br /&gt;
&lt;br /&gt;
========&lt;br /&gt;
ninlogo.pcm&lt;br /&gt;
========&lt;br /&gt;
Starting offset (USA):&lt;br /&gt;
0x271E40&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN):&lt;br /&gt;
0x267080&lt;br /&gt;
&lt;br /&gt;
Length:&lt;br /&gt;
1F2C0&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
The deep-voiced &amp;quot;Nintendo&amp;quot; sound effect that plays when you boot up the game.&lt;br /&gt;
&lt;br /&gt;
========&lt;br /&gt;
nintendo.szp&lt;br /&gt;
========&lt;br /&gt;
Starting offset (USA):&lt;br /&gt;
0x291100&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN):&lt;br /&gt;
0x286340&lt;br /&gt;
&lt;br /&gt;
Length:&lt;br /&gt;
33C0&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
The Nintendo logo that appears when you boot up the game.&lt;br /&gt;
Note: this file can only be extracted/compressed with Yay0Enc; use the -d switch for decompression. Do **not** use ArcExtract.&lt;br /&gt;
&lt;br /&gt;
========&lt;br /&gt;
res_list.szp&lt;br /&gt;
========&lt;br /&gt;
Starting offset (USA):&lt;br /&gt;
0x2944C0&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN):&lt;br /&gt;
0x289700&lt;br /&gt;
&lt;br /&gt;
Length (USA):&lt;br /&gt;
1C060&lt;br /&gt;
&lt;br /&gt;
Length (JPN):&lt;br /&gt;
1C180&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
The status screen that shows treasure, portrait ghosts, mario items, and medals that appears when you press Z.&lt;br /&gt;
&lt;br /&gt;
========&lt;br /&gt;
res_paus.szp&lt;br /&gt;
========&lt;br /&gt;
Starting offset (USA):&lt;br /&gt;
0x2B0520&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN):&lt;br /&gt;
0x2A5880&lt;br /&gt;
&lt;br /&gt;
Length (USA):&lt;br /&gt;
1DEA0&lt;br /&gt;
&lt;br /&gt;
Length (JPN):&lt;br /&gt;
1DCA0&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
The pause menu.&lt;br /&gt;
&lt;br /&gt;
========&lt;br /&gt;
res_titl.szp&lt;br /&gt;
========&lt;br /&gt;
Starting offset (USA):&lt;br /&gt;
0x2CE3C0&lt;br /&gt;
&lt;br /&gt;
Starting offset (JPN):&lt;br /&gt;
0x2C3520&lt;br /&gt;
&lt;br /&gt;
Length (USA):&lt;br /&gt;
29FC0&lt;br /&gt;
&lt;br /&gt;
Length (JPN):&lt;br /&gt;
2DB80&lt;br /&gt;
&lt;br /&gt;
Description:&lt;br /&gt;
The title screen with the Luigi&#039;s Mansion logo, background, copyright text, and &amp;quot;Press Start&amp;quot;.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>ThePlayerRolo</name></author>
	</entry>
</feed>