Lagoon (SNES)/ROM map: Difference between revisions

From Data Crystal
Jump to navigation Jump to search
(added audio offset)
m (Hawk moved page Lagoon/ROM map to Lagoon (SNES)/ROM map)
 
(19 intermediate revisions by 5 users not shown)
Line 2: Line 2:


Keep in mind that two-byte numbers are in reverse order in the file.
Keep in mind that two-byte numbers are in reverse order in the file.
This offsets differ by 0x8000 in a file versus memory.
Example: 0x0013 in a rom file is 0x8013 in memory.
ROM offsets are noted in brackets for illustrative purposes.


ROM File offsets:
ROM File offsets:
Line 7: Line 11:
==ASM Code Bank==
==ASM Code Bank==
  0x00:0013          Reset Vector
  0x00:0013          Reset Vector
    [8013]
0x00:0013-00af      First code block (initializations)
    [8013-80af]
0x00:00b3          Main game subroutine
0x00:00b9          Game intro subroutine
0x00:00e6          Game intro subroutine
0x00:0112          Subroutine
0x00:0120          Subroutine
0x00:04e9-06e5      Subroutine
0x00:1304-1366      Program loop, calls the game intro subroutine and the main game subroutine
    [9304-9366]
0x00:9220  (000003) Substract hitpoints for both Nasir and monsters
  0x00:94f7  (000037) Str increase subroutine
  0x00:94f7  (000037) Str increase subroutine
  0x00:952f  (00004f) Def increase subroutine
  0x00:952f  (00004f) Def increase subroutine
  0x00:d05a  (000002) Shortsword price (atland)
 
  0x00:d05c  (000002) Bandit armor price
0x00:cd95  (000003) checks event byte 7e04e2
  0x00:d05e  (000002) Iron shield price
      cd9f  (000003) checks bit using bit masks in 00:d3d9
 
Chests and Shops Bit Toggling Subroutine
0x00:cda3  (000001) beginning of subroutine
0x00:cda8  (000003) reads item/equipment byte
0x00:cdab  (000003) toggles bit using OR with a bit mask found 00:d3d9
0x00:cdae  (000003) writes item/equipment byte
0x00:cdb3  (000001) subroutine ends
---
0x00:cde6  (000001) beginning of subroutine
0x00:cdeb  (000003) reads item/equipment to see if Nasir already has it
0x00:cdee  (000003)
0x00:cdf5  (000001) end of subroutine
 
Atland Weapon Shop Inventory Data
0x00:d057  (000001) First item sold at the Atland weapon shop (default:  0x51 = shortsword)
0x00:d058  (000001) Second item sold at the Atland weapon shop (default: 0x56 = bandit armor)
0x00:d059  (000001) Third item sold at the Atland weapon shop (default:  0x5b = iron shield)
  0x00:d05a  (000002) Shortsword price (Atland)
  0x00:d05c  (000002) Bandit armor price (Atland)
  0x00:d05e  (000002) Iron shield price (Atland)
 
0x00:d06a          Shop prices
 
0x00:d07a          Weapon shop prices for Voloh
 
0x00:d08a          Weapon shop prices for Denegal: sonic armor, great shield
 
0x00:d3cd-d3d8      Subroutine called at cda5 and cde8
 
0x00:d3d9  (000008) Bit masks


==Leveling Data Tables==
==Leveling Data Tables==
Line 20: Line 75:


==More ASM==
==More ASM==
  0x01:05f6  (000028) Routine reads dialogue text into RAM
0x01:5640          Call opening animation
  [02:d64c]
 
0x01:5dd7          Opening logo subroutine
  [02:ddd7
 
  0x01:05f6  (000028) Routine reads dialogue text into RAM (7e5000)
 
0x01:0810          Reads name/place strings into RAM.  (7e5000)
 
  0x01:59d9          Starting level
  0x01:59d9          Starting level
  0x01:59ec          Starting strength
  0x01:59ec          Starting strength
  0x01:59fb          Starting defense
  0x01:59fb          Starting defense
  0x01:5a01  (000002) Starting gold
  0x01:5a01  (000002) Starting gold
0x01:5f2c          Display opening logo
  [02:df2c]
0x01:5f4e          Subroutine call
  [02:df4e]


==Text Bank==
==Text Bank==
Line 33: Line 102:


==Monster Data Bank==
==Monster Data Bank==
  0x02:91f0          Monster data follows this offset
  0x02:91f9            Monster data table starts here
  0x02:946b (000002) Samson gold
                      Table width is 0x0f bytes
  0x02:946d (000002) Samson exp
Examples
  0x02:947a (000002) Natela gold
0x02:91fa-0b (000002) gold cave demon hp
  0x02:947c (000002) Natela exp
0x02:9202-03 (000002) gold cave demon gold
  0x02:9489 (000002) Eardon gold
0x02:9204-05 (000002) gold cave demon exp
  0x02:948b (000002) Eardon exp
0x02:9209-0a (000002) slime hp
  0x02:9498 (000002) Duma gold
0x02:9211-12 (000002) slime gold
  0x02:949a (000002) Duma exp
0x02:9213-14 (000002) slime exp
  0x02:94c5 (000002) Thimale gold
0x02:9218-19 (000002) skeleton hp
  0x02:94c7 (000002) Thimale exp
0x02:9220-21 (000002) skeleton gold
  0x02:94d4 (000002) Battler gold
0x02:9222-23 (000002) skeleton exp
  0x02:94d6 (000002) Battler exp
0x02:9227-28 (000002) beetle hp
  0x02:953d (000002) Ella gold
0x02:922f-30 (000002) beetle gold
  0x02:953f (000002) Ella exp
0x02:9231-32 (000002) beetle exp
 
Boss Data Table (table width is 0x0f)
  0x02:946b-6c (000002) Samson gold
  0x02:946d-6e (000002) Samson exp
  0x02:947a-7b (000002) Natela gold
  0x02:947c-7d (000002) Natela exp
  0x02:9489-8a (000002) Eardon gold
  0x02:948b   (000002) Eardon exp
  0x02:9498   (000002) Duma gold
  0x02:949a   (000002) Duma exp
  0x02:94c5   (000002) Thimale gold
  0x02:94c7   (000002) Thimale exp
  0x02:94d4   (000002) Battler gold
  0x02:94d6   (000002) Battler exp
  0x02:953d   (000002) Ella gold
  0x02:953f   (000002) Ella exp


==Misc==
==Misc==
  0x02:ca81  (000002) Gold gift from Atland Mayor
  0x02:ca81  (000002) Gold gift from Atland Mayor
==More Asm==
0x04:ff3d    Load data into audio memory
  [0c:ff3d]


==Audio==
==Audio==
Line 66: Line 155:
==Unused==
==Unused==
  0x0f:fca0-ffd0      Unused
  0x0f:fca0-ffd0      Unused
{{Internal Data}}

Latest revision as of 20:51, 28 January 2024

Chip tiny.png The following article is a ROM map for Lagoon (SNES).

Keep in mind that two-byte numbers are in reverse order in the file.

This offsets differ by 0x8000 in a file versus memory. Example: 0x0013 in a rom file is 0x8013 in memory. ROM offsets are noted in brackets for illustrative purposes.

ROM File offsets:

ASM Code Bank

0x00:0013           Reset Vector
    [8013]
0x00:0013-00af      First code block (initializations)
    [8013-80af]
0x00:00b3           Main game subroutine
0x00:00b9           Game intro subroutine
0x00:00e6           Game intro subroutine
0x00:0112           Subroutine
0x00:0120           Subroutine
0x00:04e9-06e5      Subroutine
0x00:1304-1366      Program loop, calls the game intro subroutine and the main game subroutine
    [9304-9366]
0x00:9220  (000003) Substract hitpoints for both Nasir and monsters
0x00:94f7  (000037) Str increase subroutine
0x00:952f  (00004f) Def increase subroutine
0x00:cd95  (000003) checks event byte 7e04e2
     cd9f  (000003) checks bit using bit masks in 00:d3d9
Chests and Shops Bit Toggling Subroutine
0x00:cda3  (000001) beginning of subroutine
0x00:cda8  (000003) reads item/equipment byte
0x00:cdab  (000003) toggles bit using OR with a bit mask found 00:d3d9
0x00:cdae  (000003) writes item/equipment byte
0x00:cdb3  (000001) subroutine ends
---
0x00:cde6  (000001) beginning of subroutine
0x00:cdeb  (000003) reads item/equipment to see if Nasir already has it
0x00:cdee  (000003) 
0x00:cdf5  (000001) end of subroutine
Atland Weapon Shop Inventory Data
0x00:d057  (000001) First item sold at the Atland weapon shop (default:  0x51 = shortsword)
0x00:d058  (000001) Second item sold at the Atland weapon shop (default: 0x56 = bandit armor)
0x00:d059  (000001) Third item sold at the Atland weapon shop (default:  0x5b = iron shield)
0x00:d05a  (000002) Shortsword price (Atland)
0x00:d05c  (000002) Bandit armor price (Atland)
0x00:d05e  (000002) Iron shield price (Atland)
0x00:d06a           Shop prices
0x00:d07a           Weapon shop prices for Voloh
0x00:d08a           Weapon shop prices for Denegal: sonic armor, great shield
0x00:d3cd-d3d8      Subroutine called at cda5 and cde8
0x00:d3d9  (000008) Bit masks

Leveling Data Tables

0x00:e0b0  (000047) Base str table
0x00:e0f8  (000047) Base def table
0x00:e140  (000023) HP table
0x00:e164  (000023) MP table

More ASM

0x01:5640           Call opening animation
 [02:d64c]
0x01:5dd7           Opening logo subroutine
 [02:ddd7
0x01:05f6  (000028) Routine reads dialogue text into RAM (7e5000)
0x01:0810           Reads name/place strings into RAM.  (7e5000)
0x01:59d9           Starting level
0x01:59ec           Starting strength
0x01:59fb           Starting defense
0x01:5a01  (000002) Starting gold
0x01:5f2c           Display opening logo
 [02:df2c]
0x01:5f4e           Subroutine call
 [02:df4e]

Text Bank

0x02:0200-0670      Text
0x02:0870-5010      Text
0x02:5210-6680      Text
0x02:6790-77d0      Text

Monster Data Bank

0x02:91f9             Monster data table starts here
                      Table width is 0x0f bytes
Examples
0x02:91fa-0b (000002) gold cave demon hp
0x02:9202-03 (000002) gold cave demon gold
0x02:9204-05 (000002) gold cave demon exp
0x02:9209-0a (000002) slime hp
0x02:9211-12 (000002) slime gold
0x02:9213-14 (000002) slime exp
0x02:9218-19 (000002) skeleton hp
0x02:9220-21 (000002) skeleton gold
0x02:9222-23 (000002) skeleton exp
0x02:9227-28 (000002) beetle hp
0x02:922f-30 (000002) beetle gold
0x02:9231-32 (000002) beetle exp
Boss Data Table (table width is 0x0f)
0x02:946b-6c (000002) Samson gold
0x02:946d-6e (000002) Samson exp
0x02:947a-7b (000002) Natela gold
0x02:947c-7d (000002) Natela exp
0x02:9489-8a (000002) Eardon gold
0x02:948b    (000002) Eardon exp
0x02:9498    (000002) Duma gold
0x02:949a    (000002) Duma exp
0x02:94c5    (000002) Thimale gold
0x02:94c7    (000002) Thimale exp
0x02:94d4    (000002) Battler gold
0x02:94d6    (000002) Battler exp
0x02:953d    (000002) Ella gold
0x02:953f    (000002) Ella exp

Misc

0x02:ca81  (000002) Gold gift from Atland Mayor

More Asm

0x04:ff3d    Load data into audio memory
 [0c:ff3d]

Audio

0x06:80a8  (000c9c) Audio code/data

Graphics

0x08:8000-b600      Nasir Graphics (uncompressed)
0x08:b600-be00      Shield graphics (uncompressed)
0x0b:8e00-a800      Item graphics (uncompressed)

Compressed Graphics

0x0e:e47a-e54f      Logo graphic compression dictionary
0x0e:e54f           Logo graphic starting byte (compressed)

Unused

0x0f:fca0-ffd0      Unused