All addresses are in hexadecimal.
| Address | C definition | Description |
|---|---|---|
| 0 | Switch lookup table for function 81C4 (8 words) | |
| 64 | Switch lookup table for function 11ED0 (9 words) | |
| 88 | Other switch lookup tables | |
| 168 | Start of nothing | |
| 8000 | Start of code | |
| 1B248 | Start of nothing | |
| 40000 | s16 kColumnTable[] | Column table for both screens (512 bytes) |
| 40600 | Accessed by function 95B2 | |
| 40610 | WAM data | |
| 40798 | tyROMDemoData kDemoData[] | DEMO playback data; see below |
| 40958 | End of DEMO playback data | |
| 40968 | WAM data for ending A | |
| 412DC | Accessed by function C66E | |
| 41324 | tyNextLevel kNextLevel[] | Next level data; see below |
| 415C0 | char kPassword[] | Passwords; see InsmEdit readme (ASCII characters) |
| 4167C | Used for intermission; charset or BGMap? | |
| 41978 | Pointed to by pointer at 419B8 | |
| 419B8 | A list of pointers accessed by function DA1A | |
| 41AFA | Accessed by DA1A | |
| 41B1C | s16 kMonsterKind[] | Monster kinds; see InsmEdit readme |
| 41B78 | Pointers to charsets for each monster kind (4 words) | |
| 41C58 | Monster lists; see InsmEdit readme | |
| 42450 | tyROMMonster* kMonsters[] | Pointers to monster lists (sorted by password index) |
| 4D0A0 | Monster data? | |
| 4D0E0 | Monster data? Accessed by function F3A2 | |
| 4D1D8 | Accessed by function 118C8 | |
| 4D2F8 | Charset: I'MAX logo | |
| 4E2F8 | BGMap: I'MAX | |
| 4F0F8 | Charset for mansion exterior etc. | |
| 510F8 | Charset for mansion exterior and clouds | |
| 528F8 | BGMap of trees and high fog; charset 0 is 4F0F8 | |
| 53CF8 | BGMap of mansion exterior; charset 0 is 4F0F8 | |
| 54CF8 | BGMap of clouds? | |
| 57CF8 | Charset: close-up of mansion door | |
| 59CF8 | Charset: close-up of mansion door | |
| 5BCF8 | BGMap: close-up of mansion door; charset 0 and 1 are 57CF8 | |
| 5CAF8 | BGMap: close-up of mansion door; charset 0 and 1 are 57CF8 | |
| 5E8F8 | Charset: monster face close-up - face | |
| 608F8 | Charset: monster face close-up - eyes and teeth | |
| 618F8 | BGMap for monster face close-up; charset 0 is 5E8F8, 1 is 608F8 | |
| 758C8 | Charset: moon? | |
| 779F8 | BGMap: moon? | |
| 857F8 | Charset for title screen: title, circle, "NEW GAME"/"PASSWORD" | |
| 877F8 | Charset for title screen: background, copyright | |
| 88DF8 | BGMap for title screen; charset 0 is 857F8, 1 is 877F8 | |
| 8ADF8 | BGMap for title screen; spinning creature; charset 0 is 857F8 | |
| 8B5F8 | Charset for intermission, password entry, death-by-monster game over | |
| 8D5F8 | Charset for password entry; letters and some of the background | |
| 8E5F8 | BGMap for password entry; charset 0 is 8B5F8, 1 is 8D5F8 | |
| 8F3F8 | BGMap for password entry; charset 0 is 8B5F8, 1 is 8D5F8 | |
| 905F8 | Charset for intermission (large password letters etc.) | |
| 915F8 | BGMap for intermission; charset 0 is 8B5F8 | |
| 945F8 | Charset for monster game over? | |
| 955F8 | BGMap for monster game over? | |
| 9A8F8 | Charset for monsters of kind 0 (1024 characters) | |
| 9E0F8 | Charset for monsters of kind 1 (1024 characters) | |
| A20F8 | Charset for monsters of kind 2 (1024 characters) | |
| A60F8 | Charset for monsters of kind 3 (1024 characters) | |
| AA0F8 | Charset for floor, ceiling, walls (256 characters) | |
| AB0F8 | Charset for floor, ceiling, walls, "moving parts" | |
| AC0F8 | Charset for floor, ceiling, walls | |
| AD0F8 | Charset for automap | |
| AE0F8 | Charset for timer numbers, orbs, hearts, ammo, key, lights, etc. | |
| AF0F8 | Charset for precaution screen | |
| B00F8 | Font charset: 8x8 hiragana, 8x8 katakana, 8x8 Latin, "AUTO PAUSE", large kanji | |
| B10F8 | Charset for credits roll | |
| B3BF8 | Charset for picture at credits roll | |
| B40F8 | Charset for credits roll | |
| B70F8 | Charset for intermission map screen | |
| B80F8 | Charset for level names on intermission map screen (each name has 4 characters, so 64 bytes) | |
| B90F8 | First person view BGMap; charset 0 is AA0F8, others unknown | |
| BB0F8 | Same as previous BGMap but for other eye | |
| BD0F8 | BGMaps for doors, charset 0 is AA0F8, others unknown | |
| BF0F8 | Same as previous BGMap but for other eye | |
| C10F8 | Unknown BGMap | |
| C30F8 | Same as previous BGMap but for other eye | |
| C50F8 | Unknown BGMap | |
| C70F8 | Same as previous BGMap but for other eye | |
| C90F8 | BGMap for automap; charset 0 is AD0F8 | |
| CB0F8 | Automatic pause BGMap; charset 0 is B00F8, charset 3 unknown | |
| CD0F8 | Credits roll BGMap | |
| CF0F8 | Credits roll BGMap | |
| D10F8 | BGMap for intermission map (top and bottom); charset 0 is B70F8 | |
| D30F8 | BGMap for intermission map (diagram & names); charset 0 is B70F8 | |
| D51B0 | Player starting positions; see InsmEdit readme | |
| D520D | Player starting directions; halfwords, values as in WRAM | |
| D5268 | Layouts; see InsmEdit readme | |
| DB7A8 | Not a layout but accessed by function 1237C | |
| DBC28 | End of layouts, pointers to layouts, sorted by password index | |
| DBCE0 | tyLvProps kLvProps[] | End of layout pointers, level properties; see InsmEdit readme |
| DBDF4 | End of level properties, this somehow affects rendering and the HUD | |
| ? | Incomplete Latin/hiragana font for precaution screen | |
| DCDE8 | Accessed by function 12F7C - first halfwords of world properties? | |
| DCDF0 | Halfword - accessed by function 17526 | |
| DCDF4 | Charset for alignment screen | |
| E0DF4 | BGMap for precaution screen | |
| E1BF4 | BGMap for adjustment screen (left); charset 0 is DCDF4 | |
| E29F4 | BGMap for adjustment screen (right); charset 0 is DCDF4 | |
| E37F4 | BGMap for automatic pause option screen | |
| E61F4 | Another 8x8 Latin font, monkey sprites, Nintendo logo (from Sample Soft for VUE Programming) | |
| EA230 | WAM data | |
| EA260 | WAM data for credits roll | |
| EB318 | Something related to waveforms | |
| EC2C9 | Start of SFX pointers? (Non-contiguous?) | |
| ECF5B | "Three-part sawtooth" waveform | |
| ECFDB | Sawtooth waveform: starts with 0, ends with 31 | |
| ED05B | Sawtooth waveform: starts with 0, ends with 7 | |
| ED0DB | "Two-part sawtooth" waveform | |
| ED15B | Square waveform (min 0, max 49) | |
| ED1DB | "All silence" waveform, constantly 49 | |
| ED2E0 | Nothing more except ROM footer |
Specifies the possible next levels for each level by password index. The array is sorted by password index. Values 0xF0 to 0xF3 specify endings.
typedef struct
{
s16 UpperLevel;
s16 LowerLevel;
} tyNextLevel;
Specifies which kind of monsters appears in each level. The array is sorted by password index. Possible values:
| Value | Kind |
|---|---|
| 0 | Big-mouthed, small-eyed monsters |
| 1 | Big-eyed monsters |
| 2 | Monkey-faced (as in ROPE) |
| 3 | Faceless (as in HYDE) |
Other values turn the monsters into garbage.
typedef struct
{
s16 Unknown; // A value of 0xFF terminates the array.
s16 Direction; // Camera direction
s16 Position; // Camera coordinates
} tyROMDemoData;
There are two additional padding bytes, so the whole structure is 8 bytes long.