Metal Slader Glory/ROM map: Difference between revisions

From Data Crystal
Jump to navigation Jump to search
(Created page with "{{rommap|game=Metal Slader Glory}} ==ROM== {{note|1= * Size = EntryNumber * 3 - 1 }} <pre> * 0x001CC5 to 0x003D5B (02096) = Primary pointer table for the entire game's dialo...")
 
(→‎ROM: replaced: {{x}} → x)
 
(16 intermediate revisions by 2 users not shown)
Line 2: Line 2:


==ROM==
==ROM==
{{note|1=
{{note|1=Byte size = EntryNumber x 3 - 1}}
* Size = EntryNumber * 3 - 1
<pre>* 0x001CC5 to 0x003D5B (02096) = Primary pointer table for the entire game's dialogue. Pointer entries are three bytes each. Text is scattered around the ROM haphazardly. Length bits in the address pointer are zeroed out for every entry. The byte 00 is used as a delimeter.
}}
 
<pre>
* 0x001CC5 to 0x003D5B (02096) = Primary pointer table for the entire game's dialogue. Pointer entries are three bytes each. Text is scattered around the ROM haphazardly. Length bits in the address pointer are zeroed out for every entry. The byte 00 is used as a delimeter.
* 0x003D5C to 0x005F57 (021FB) = Primary pointer table for dictionary. Pointer entries are three bytes each. Text is scattered around the ROM in small patches.  
* 0x003D5C to 0x005F57 (021FB) = Primary pointer table for dictionary. Pointer entries are three bytes each. Text is scattered around the ROM in small patches.  
* 0x05485C to 0x07400E (-----) = Dialogue region.
* 0x05485C to 0x07400E (-----) = Dialogue region.</pre>
</pre>


{{note|There's for pointers before {{0x|0x001CC5}}. Some are for the title screen graphics, some are used for the credits, screen adjustment screen dialogue, etc. The screen adjustment text is uncompressed.}}
==Pointer structure==
==Pointer structure==
Although typically for SNES games, this game uses three byte pointers; however, this game adopts a space saving measure by storing a dialogue entry's length within a pointer. The dialogue's pointers have the length bits zeroed out because it uses a delimeter. The dictionary's pointers use the bit, because 00 is a valid CHR tile value.
Although typically for SNES games, this game uses three byte pointers; however, this game adopts a space saving measure by storing a dialogue entry's length within a pointer. The dialogue's pointers have the length bits zeroed out because it uses a delimeter. The dictionary's pointers use these bits because {{0x|00}} is used for control codes.
 
{{note|The Stardust translation violates this pointer structure. A handful pointers for the dialogue menu options use the dictionary pointer structure.}}


===Address layout (in bits)===
===Address layout (in bits)===
  {{Color text|blue|a, b    }}= length bytes
There's two separate pointer processing routines for the dictionary and dialogue. Both are very similar, however, the dialogue pointer routine supports pointers for a 1 MB PRG mapper. It accomplishes this by using a bit used for the dictionary length. The final release uses a 0.5 MB PRG mapper and could have used one pointer reading routine.  
{{Color text|green|x, y, z  }}= Address bytes
<pre>
a, b    = length bytes
{{Color text|blue|a1 a2 }}{{Color text|green|x1 x2 x3 x4 x5 x6      y1 y2 y3 y4 y5 y6 y7 y8    }}{{Color text|blue|b1 b2 b3 }}{{Color text|green|z1 z2 z3 z4 z5}}
x, y, z  = Address bytes
 
length   = {{Color text|blue|-  -  - a1 a2 b1 b2 b3}}
a1 a2 x1 x2 x3 x4 x5 x6      y1 y2 y3 y4 y5 y6 y7 y8    b1 b2 b3 z1 z2 z3 z4 z5
address =  
 
      cccccccc = {{Color text|black| 0  0  1  0 }}{{Color text|green|x1 x2 x3 x4}}
Length   = -  -  - a1 a2 b1 b2 b3
      dddddddd = {{Color text|black| 1 }}{{Color text|green|x5 x6 z1 z2 z3 z4 z5}}
Address =  
      eeeeeeee = {{Color text|green|y1 y2 y3 y4 y5 y6 y7 y8}}
      
      
      Final address = cccccccc dddddddd eeeeeeee
    Dictionary:
    cccccccc =  0  0  0  0  0 x1 x2 x3
    dddddddd = x4 x5 x6 z1 z2 z3 z4 z5
    eeeeeeee = y1 y2 y3 y4 y5 y6 y7 y8
   
    Dialogue:
    cccccccc =  0  0  0  0 a2 x1 x2 x3
    dddddddd = x4 x5 x6 z1 z2 z3 z4 z5
    eeeeeeee = y1 y2 y3 y4 y5 y6 y7 y8
   
    Final PC address = cccccccc dddddddd eeeeeeee
</pre>
 
==Dictionary==
{{subpage|Dictionary|text=How the dictionary is stored in the NES and SNES version.}}


{{Internal Data|game=Metal Slader Glory}}
{{Internal Data|game=Metal Slader Glory}}

Latest revision as of 18:11, 28 January 2024

Chip tiny.png The following article is a ROM map for Metal Slader Glory.

ROM

Note for template.png
Note:
Byte size = EntryNumber x 3 - 1
* 0x001CC5 to 0x003D5B (02096) = Primary pointer table for the entire game's dialogue. Pointer entries are three bytes each. Text is scattered around the ROM haphazardly. Length bits in the address pointer are zeroed out for every entry. The byte 00 is used as a delimeter.
* 0x003D5C to 0x005F57 (021FB) = Primary pointer table for dictionary. Pointer entries are three bytes each. Text is scattered around the ROM in small patches. 
* 0x05485C to 0x07400E (-----) = Dialogue region.
Note for template.png
Note:
There's for pointers before 0x0x001CC5. Some are for the title screen graphics, some are used for the credits, screen adjustment screen dialogue, etc. The screen adjustment text is uncompressed.

Pointer structure

Although typically for SNES games, this game uses three byte pointers; however, this game adopts a space saving measure by storing a dialogue entry's length within a pointer. The dialogue's pointers have the length bits zeroed out because it uses a delimeter. The dictionary's pointers use these bits because 0x00 is used for control codes.

Note for template.png
Note:
The Stardust translation violates this pointer structure. A handful pointers for the dialogue menu options use the dictionary pointer structure.


Address layout (in bits)

There's two separate pointer processing routines for the dictionary and dialogue. Both are very similar, however, the dialogue pointer routine supports pointers for a 1 MB PRG mapper. It accomplishes this by using a bit used for the dictionary length. The final release uses a 0.5 MB PRG mapper and could have used one pointer reading routine.

a, b     = length bytes
x, y, z  = Address bytes

a1 a2 x1 x2 x3 x4 x5 x6      y1 y2 y3 y4 y5 y6 y7 y8     b1 b2 b3 z1 z2 z3 z4 z5

Length   = 		-  -  - a1 a2 b1 b2 b3
Address  = 
     
     Dictionary:
     cccccccc =  0  0  0  0  0 x1 x2 x3
     dddddddd = x4 x5 x6 z1 z2 z3 z4 z5
     eeeeeeee = y1 y2 y3 y4 y5 y6 y7 y8
     
     Dialogue:
     cccccccc =  0  0  0  0 a2 x1 x2 x3
     dddddddd = x4 x5 x6 z1 z2 z3 z4 z5
     eeeeeeee = y1 y2 y3 y4 y5 y6 y7 y8
    
     Final PC address = cccccccc dddddddd eeeeeeee

Dictionary

SubpageIcon.png
Dictionary
How the dictionary is stored in the NES and SNES version.