Difference between revisions of "The Little Mermaid:ROM map"
Jump to navigation
Jump to search
Line 1: | Line 1: | ||
{{rommap|game=The Little Mermaid}} | {{rommap|game=The Little Mermaid}} | ||
− | Page 06 (0x8000-0xBFFF) | + | ==Page 06 (0x8000-0xBFFF)== |
− | |||
Address in ROM: 0x18010-0x1C00F | Address in ROM: 0x18010-0x1C00F | ||
+ | ===0x8000=== | ||
+ | Runs the action scripts of every object slot from lowest to highest and checks for collisions each frame. | ||
− | |||
− | |||
06:8000:A5 B1 LDA $00B1 ; Check Ariel's health | 06:8000:A5 B1 LDA $00B1 ; Check Ariel's health | ||
06:8002:F0 3A BEQ $803E ; Exit if zero | 06:8002:F0 3A BEQ $803E ; Exit if zero | ||
Line 20: | Line 19: | ||
06:8016:BC 10 03 LDY $0310,X | 06:8016:BC 10 03 LDY $0310,X | ||
− | 06:8019:B9 20 85 LDA $8520,Y ; Obtain address of action script | + | 06:8019:B9 20 85 LDA [[$8520|$8520]],Y ; Obtain address of action script |
− | 06:801C:85 00 STA $0000 ; from jump table | + | 06:801C:85 00 STA $0000 ; from jump table |
− | 06:801E:B9 80 85 LDA $8580,Y ; | + | 06:801E:B9 80 85 LDA [[$8580|$8580]],Y ; |
06:8021:85 01 STA $0001 | 06:8021:85 01 STA $0001 | ||
06:8023:A9 80 LDA #$80 ; Set return address | 06:8023:A9 80 LDA #$80 ; Set return address | ||
Line 41: | Line 40: | ||
06:803E:60 RTS ----------------------------------------- | 06:803E:60 RTS ----------------------------------------- | ||
− | Page 07 (0xC000-0xFFFF) | + | ===0x8520=== |
+ | Jump table for object action functions | ||
+ | |||
+ | {| border="1" cellpadding="1" | ||
+ | |'''Action #'''||'''Address'''||'''Description''' | ||
+ | |- | ||
+ | |0x00||0x85E0||Blank | ||
+ | |- | ||
+ | |0x01||0x85E1||Thrown objects | ||
+ | |- | ||
+ | |0x02||0x888F||Enemy in bubble | ||
+ | |- | ||
+ | |0x03||0x8A14||Fish, Type 1 | ||
+ | |- | ||
+ | |0x04||0x867A|| | ||
+ | |- | ||
+ | |0x05||0x8A65||Seahorse | ||
+ | |- | ||
+ | |0x06||0x8A9B|| | ||
+ | |- | ||
+ | |0x07||0x8BDC|| | ||
+ | |- | ||
+ | |0x08||0x8BE2||Spitting fish | ||
+ | |- | ||
+ | |0x09||0x8CA3|| | ||
+ | |- | ||
+ | |0x0A||0x8CBA||Octopus | ||
+ | |- | ||
+ | |0x0B||0x8DC5||Octopus' rock | ||
+ | |- | ||
+ | |0x0C||0x9BA7||Stage 1 Boss (Shark): Sending Fish | ||
+ | |- | ||
+ | |0x0D||0x9CC4||Stage 1 Boss (Shark): Dashing | ||
+ | |- | ||
+ | |0x0E||0x9D37||Fish (Stage 1 Boss fight) | ||
+ | |- | ||
+ | |0x0F||0xA3B3||Cannon (Stage 4 Boss fight) | ||
+ | |- | ||
+ | |0x10||0x8F89|| | ||
+ | |- | ||
+ | |0x11||0x8FC7|| | ||
+ | |- | ||
+ | |0x12||0x9046||Fish, Type 2 | ||
+ | |- | ||
+ | |0x13||0xAF50|| | ||
+ | |- | ||
+ | |0x14||0xAF50|| | ||
+ | |- | ||
+ | |0x15||0x908F||Crab (Stage 2 Boss fight) | ||
+ | |- | ||
+ | |0x16||0x91D9||Tiny fish (following Ariel) | ||
+ | |- | ||
+ | |0x17||0x913F|| | ||
+ | |- | ||
+ | |0x18||0x913F|| | ||
+ | |- | ||
+ | |0x19||0x913F|| | ||
+ | |- | ||
+ | |0x1A||0x913F|| | ||
+ | |- | ||
+ | |0x1B||0x913F|| | ||
+ | |- | ||
+ | |0x1C||0x92A9||Sleeper fish | ||
+ | |- | ||
+ | |0x1D||0x9229||Tiny fish (default action) | ||
+ | |- | ||
+ | |0x1E||0x9367|| | ||
+ | |- | ||
+ | |0x1F||0x9274||Tiny fish (quad pattern) | ||
+ | |- | ||
+ | |0x20||0x940C||Shrimp | ||
+ | |- | ||
+ | |0x21||0x9460||Poor Unfortunate Soul (Stage 5) | ||
+ | |- | ||
+ | |0x22||0x9461||Starfish spawner | ||
+ | |- | ||
+ | |0x23||0x954F||Starfish (shooting upward) | ||
+ | |- | ||
+ | |0x24||0x9604||Frozen fish | ||
+ | |- | ||
+ | |0x25||0x908F||Helmet crab | ||
+ | |- | ||
+ | |0x26||0x869D||Crab (walking) | ||
+ | |- | ||
+ | |0x27||0x86C1||Crab (ducking/falling) | ||
+ | |- | ||
+ | |0x28||0x86F1|| | ||
+ | |- | ||
+ | |0x29||0x8715|| | ||
+ | |- | ||
+ | |0x2A||0x9D3A||Stage 3 Boss (Walrus): Default | ||
+ | |- | ||
+ | |0x2B||0x9EC7||Stage 3 Boss (Walrus): Dropping item | ||
+ | |- | ||
+ | |0x2C||0x9F60||Stage 2 Boss (Eel) #1 | ||
+ | |- | ||
+ | |0x2D||0x9F60||Stage 2 Boss (Eel) #2 | ||
+ | |- | ||
+ | |0x2E||0xA1CF||Stage 4 Boss (Seahorse) | ||
+ | |- | ||
+ | |0x2F||0xA324||Fish (Stage 4 Boss fight) | ||
+ | |- | ||
+ | |0x30||0x986D||Carried item | ||
+ | |- | ||
+ | |0x31||0x97D5|| | ||
+ | |- | ||
+ | |0x32||0x97D5|| | ||
+ | |- | ||
+ | |0x33||0x97D5|| | ||
+ | |- | ||
+ | |0x34||0x9A36|| | ||
+ | |- | ||
+ | |0x35||0x9A36|| | ||
+ | |- | ||
+ | |0x36||0x9A11|| | ||
+ | |- | ||
+ | |0x37||0x87EE|| | ||
+ | |- | ||
+ | |0x38||0x998B||Red Orb | ||
+ | |- | ||
+ | |0x39||0x998B||Green Orb | ||
+ | |- | ||
+ | |0x3A||0x9A69|| | ||
+ | |- | ||
+ | |0x3B||0x9A69|| | ||
+ | |- | ||
+ | |0x3C||0x8DCB||Volcano | ||
+ | |- | ||
+ | |0x3D||0x878B|| | ||
+ | |- | ||
+ | |0x3E||0xA63D|| | ||
+ | |- | ||
+ | |0x3F||0x888E|| | ||
+ | |- | ||
+ | |0x40||0x888E||Water splash | ||
+ | |- | ||
+ | |0x41||0x8EE3|| | ||
+ | |- | ||
+ | |0x42||0x877D||End-of-stage jar | ||
+ | |- | ||
+ | |0x43||0x8DCB||Upside-down volcano | ||
+ | |- | ||
+ | |0x44||0x8E8C||Volcanic rock | ||
+ | |- | ||
+ | |0x45||0x9654|| | ||
+ | |- | ||
+ | |0x46||0x96E1|| | ||
+ | |- | ||
+ | |0x47||0xA3D9||Stage 5 Boss (Ursula 1) | ||
+ | |- | ||
+ | |0x48||0xA54F||Enemy Spawn 1 (Stage 5 Boss fight) | ||
+ | |- | ||
+ | |0x49||0xA5F0||Enemy Spawn 2 (Stage 5 Boss fight) | ||
+ | |- | ||
+ | |0x4A||0xA5F6||Orb (Stage 5 Boss fight) | ||
+ | |- | ||
+ | |0x4B||0x8F6E|| | ||
+ | |- | ||
+ | |0x4C||0x876B|| | ||
+ | |- | ||
+ | |0x4D||0x9AA1||Hidden item (?) | ||
+ | |- | ||
+ | |0x4E||0x9AA1||Hidden item (?) | ||
+ | |- | ||
+ | |0x4F||0x9AA1||Hidden item (?) | ||
+ | |- | ||
+ | |0x50||0x9AA1||Hidden item (?) | ||
+ | |- | ||
+ | |0x51||0x9AA1||Hidden item (?) | ||
+ | |- | ||
+ | |0x52||0x9B0A||Flounder | ||
+ | |- | ||
+ | |0x53||0x9B0A|| | ||
+ | |- | ||
+ | |0x54||0x9B0A|| | ||
+ | |- | ||
+ | |0x55||0x9B0A|| | ||
+ | |- | ||
+ | |0x56||0x9B0A|| | ||
+ | |- | ||
+ | |0x57||0xA692||Stage 6 Boss (Ursula 2) | ||
+ | |- | ||
+ | |0x58||0xA83E||Fish (Stage 6 Boss fight) | ||
+ | |- | ||
+ | |0x59||0xA879|| | ||
+ | |- | ||
+ | |0x5A||0xA0D8||Crab spawner (Stage 2 Boss fight) | ||
+ | |- | ||
+ | |0x5B||0xA324|| | ||
+ | |- | ||
+ | |0x5C||0x8821|| | ||
+ | |- | ||
+ | |0x5D||0x8872|| | ||
+ | |- | ||
+ | |0x5E||0x887F|| | ||
+ | |- | ||
+ | |0x5F||0x888E||Urchin (Stage 4 Boss fight) | ||
+ | |} | ||
+ | |||
+ | ==Page 07 (0xC000-0xFFFF)== | ||
Location in ROM: 0x1C010-0x2000F | Location in ROM: 0x1C010-0x2000F |
Revision as of 18:43, 27 December 2018
The following article is a ROM map for The Little Mermaid.
Page 06 (0x8000-0xBFFF)
Address in ROM: 0x18010-0x1C00F
0x8000
Runs the action scripts of every object slot from lowest to highest and checks for collisions each frame.
06:8000:A5 B1 LDA $00B1 ; Check Ariel's health 06:8002:F0 3A BEQ $803E ; Exit if zero 06:8004:A2 01 LDX #$01 06:8006:86 EF STX $00EF ; Current slot # 06:8008:A9 06 LDA #$06 06:800A:85 99 STA $0099 ; ? 06:800C:BD 00 03 LDA $0300,X 06:800F:10 25 BPL $8036 ; Skip ahead if slot is empty 06:8011:BD A0 04 LDA $04A0,X ; Check if object is stunned 06:8014:D0 16 BNE $802C ; If so, skip action script 06:8016:BC 10 03 LDY $0310,X 06:8019:B9 20 85 LDA $8520,Y ; Obtain address of action script 06:801C:85 00 STA $0000 ; from jump table 06:801E:B9 80 85 LDA $8580,Y ; 06:8021:85 01 STA $0001 06:8023:A9 80 LDA #$80 ; Set return address 06:8025:48 PHA 06:8026:A9 2B LDA #$2B 06:8028:48 PHA 06:8029:6C 00 00 JMP ($0000) ; Run object's action script 06:802C:E0 03 CPX #$03 ; Check if object is a bubble 06:802E:90 06 BCC $8036 ; Jump ahead if so 06:8030:20 3F 80 JSR $803F ; Run action if object is colliding with Ariel 06:8033:20 FF 80 JSR $80FF ; Run action if object is colliding with a bubble 06:8036:E6 EF INC $00EF ; Tick up to next object slot 06:8038:A6 EF LDX $00EF 06:803A:E0 10 CPX #$10 ; Loop until all slots examined 06:803C:D0 CA BNE $8008 06:803E:60 RTS -----------------------------------------
0x8520
Jump table for object action functions
Action # | Address | Description |
0x00 | 0x85E0 | Blank |
0x01 | 0x85E1 | Thrown objects |
0x02 | 0x888F | Enemy in bubble |
0x03 | 0x8A14 | Fish, Type 1 |
0x04 | 0x867A | |
0x05 | 0x8A65 | Seahorse |
0x06 | 0x8A9B | |
0x07 | 0x8BDC | |
0x08 | 0x8BE2 | Spitting fish |
0x09 | 0x8CA3 | |
0x0A | 0x8CBA | Octopus |
0x0B | 0x8DC5 | Octopus' rock |
0x0C | 0x9BA7 | Stage 1 Boss (Shark): Sending Fish |
0x0D | 0x9CC4 | Stage 1 Boss (Shark): Dashing |
0x0E | 0x9D37 | Fish (Stage 1 Boss fight) |
0x0F | 0xA3B3 | Cannon (Stage 4 Boss fight) |
0x10 | 0x8F89 | |
0x11 | 0x8FC7 | |
0x12 | 0x9046 | Fish, Type 2 |
0x13 | 0xAF50 | |
0x14 | 0xAF50 | |
0x15 | 0x908F | Crab (Stage 2 Boss fight) |
0x16 | 0x91D9 | Tiny fish (following Ariel) |
0x17 | 0x913F | |
0x18 | 0x913F | |
0x19 | 0x913F | |
0x1A | 0x913F | |
0x1B | 0x913F | |
0x1C | 0x92A9 | Sleeper fish |
0x1D | 0x9229 | Tiny fish (default action) |
0x1E | 0x9367 | |
0x1F | 0x9274 | Tiny fish (quad pattern) |
0x20 | 0x940C | Shrimp |
0x21 | 0x9460 | Poor Unfortunate Soul (Stage 5) |
0x22 | 0x9461 | Starfish spawner |
0x23 | 0x954F | Starfish (shooting upward) |
0x24 | 0x9604 | Frozen fish |
0x25 | 0x908F | Helmet crab |
0x26 | 0x869D | Crab (walking) |
0x27 | 0x86C1 | Crab (ducking/falling) |
0x28 | 0x86F1 | |
0x29 | 0x8715 | |
0x2A | 0x9D3A | Stage 3 Boss (Walrus): Default |
0x2B | 0x9EC7 | Stage 3 Boss (Walrus): Dropping item |
0x2C | 0x9F60 | Stage 2 Boss (Eel) #1 |
0x2D | 0x9F60 | Stage 2 Boss (Eel) #2 |
0x2E | 0xA1CF | Stage 4 Boss (Seahorse) |
0x2F | 0xA324 | Fish (Stage 4 Boss fight) |
0x30 | 0x986D | Carried item |
0x31 | 0x97D5 | |
0x32 | 0x97D5 | |
0x33 | 0x97D5 | |
0x34 | 0x9A36 | |
0x35 | 0x9A36 | |
0x36 | 0x9A11 | |
0x37 | 0x87EE | |
0x38 | 0x998B | Red Orb |
0x39 | 0x998B | Green Orb |
0x3A | 0x9A69 | |
0x3B | 0x9A69 | |
0x3C | 0x8DCB | Volcano |
0x3D | 0x878B | |
0x3E | 0xA63D | |
0x3F | 0x888E | |
0x40 | 0x888E | Water splash |
0x41 | 0x8EE3 | |
0x42 | 0x877D | End-of-stage jar |
0x43 | 0x8DCB | Upside-down volcano |
0x44 | 0x8E8C | Volcanic rock |
0x45 | 0x9654 | |
0x46 | 0x96E1 | |
0x47 | 0xA3D9 | Stage 5 Boss (Ursula 1) |
0x48 | 0xA54F | Enemy Spawn 1 (Stage 5 Boss fight) |
0x49 | 0xA5F0 | Enemy Spawn 2 (Stage 5 Boss fight) |
0x4A | 0xA5F6 | Orb (Stage 5 Boss fight) |
0x4B | 0x8F6E | |
0x4C | 0x876B | |
0x4D | 0x9AA1 | Hidden item (?) |
0x4E | 0x9AA1 | Hidden item (?) |
0x4F | 0x9AA1 | Hidden item (?) |
0x50 | 0x9AA1 | Hidden item (?) |
0x51 | 0x9AA1 | Hidden item (?) |
0x52 | 0x9B0A | Flounder |
0x53 | 0x9B0A | |
0x54 | 0x9B0A | |
0x55 | 0x9B0A | |
0x56 | 0x9B0A | |
0x57 | 0xA692 | Stage 6 Boss (Ursula 2) |
0x58 | 0xA83E | Fish (Stage 6 Boss fight) |
0x59 | 0xA879 | |
0x5A | 0xA0D8 | Crab spawner (Stage 2 Boss fight) |
0x5B | 0xA324 | |
0x5C | 0x8821 | |
0x5D | 0x8872 | |
0x5E | 0x887F | |
0x5F | 0x888E | Urchin (Stage 4 Boss fight) |
Page 07 (0xC000-0xFFFF)
Location in ROM: 0x1C010-0x2000F
0xC250 Advance random number generator each frame 07:C250:A2 00 LDX #$00 07:C252:A0 04 LDY #$04 07:C254:B5 E4 LDA $E4,X 07:C256:29 02 AND #$02 07:C258:85 00 STA $0000 07:C25A:B5 E5 LDA $E5,X 07:C25C:29 02 AND #$02 07:C25E:45 00 EOR $0000 ; If 0x02 bits of 0xE4 and 0xE5 07:C260:18 CLC ; are the same, highest bit of 07:C261:F0 01 BEQ $C264 ; new RNG value will be zero. 07:C263:38 SEC ; Otherwise, it will be one. 07:C264:76 E4 ROR $E4,X ; Then shift all previous bits right. 07:C266:E8 INX 07:C267:88 DEY 07:C268:D0 FA BNE $C264 07:C26A:60 RTS -----------------------------------------