Difference between revisions of "Super Pitfall:ROM map"

From Data Crystal
Jump to navigation Jump to search
(Created page with "{{rommap|game=Super Pitfall}} ==Graphics== <pre> sprite manipulation parameters 00 = nothing 40 = flip H 80 = flip V C0 = rotate 180 0x193E8 to 0x193EF = harry's attributes ...")
 
 
(14 intermediate revisions by 2 users not shown)
Line 2: Line 2:
  
 
==Graphics==
 
==Graphics==
 +
===Adresses===
 
<pre>
 
<pre>
sprite manipulation parameters
+
Sprite manipulation parameters
00 = nothing
+
00 = nothing
40 = flip H
+
40 = flip H
80 = flip V
+
80 = flip V
C0 = rotate 180
+
C0 = rotate 180
  
0x193E8 to 0x193EF = harry's attributes
+
0x193E8 to 0x193EF = Harry's attributes
  
0x1842E to 0x18453 = harry standing right
+
0x1842E to 0x18453 = Harry standing right
0x18454 to 0x18465 = harry walking right 1
+
0x18454 to 0x18465 = Harry walking right 1
0x18466 to 0x18477 = harry walking right 2
+
0x18466 to 0x18477 = Harry walking right 2
0x18478 to 0x18489 = harry walking right 3
+
0x18478 to 0x18489 = Harry walking right 3
0x1848A to 0x1849B = harry walking right 4
+
0x1848A to 0x1849B = Harry walking right 4
0x1849C to 0x184AD = harry walking left 1
+
0x1849C to 0x184AD = Harry walking left 1
0x184AE to 0x184BF = harry walking left 2
+
0x184AE to 0x184BF = Harry walking left 2
0x184C0 to 0x184D1 = harry walking left 3
+
0x184C0 to 0x184D1 = Harry walking left 3
0x184D2 to 0x184E3 = harry walking left 4
+
0x184D2 to 0x184E3 = Harry walking left 4
0x18506 to 0x18515 = jumping right
+
0x18506 to 0x18515 = Jumping right
0x18516 to 0x18527 = jumping left
+
0x18516 to 0x18527 = Jumping left
  
0x1854A to 0x18559 = swimming right 1
+
0x1854A to 0x18559 = Swimming right 1
0x1855A to 0x18569 = swimming right 2
+
0x1855A to 0x18569 = Swimming right 2
0x1856A to 0x18579 = swimming right 3
+
0x1856A to 0x18579 = Swimming right 3
0x1857A to 0x1858B = swimming right 4
+
0x1857A to 0x1858B = Swimming right 4
  
0x1858C to 0x1859D = swimming left 1
+
0x1858C to 0x1859D = Swimming left 1
0x1859E to 0x185AF = swimming left 2
+
0x1859E to 0x185AF = Swimming left 2
0x185B0 to 0x185C1 = swimming left 3 (185BF change to 40 to fix the tile)
+
0x185B0 to 0x185C1 = Swimming left 3 (185BF change to 40 to fix the tile)
0x185C2 to 0x185D3 = swimming left 4
+
0x185C2 to 0x185D3 = Swimming left 4
  
0x185D4 to 0x185E5 = ladder 1
+
0x185D4 to 0x185E5 = Ladder 1
0x185E6 to 0x185F7 = ladder 2
+
0x185E6 to 0x185F7 = Ladder 2
0x185F8 to 0x18609 = ladder 3
+
0x185F8 to 0x18609 = Ladder 3
0x1860A to 0x1861B = ladder 4
+
0x1860A to 0x1861B = Ladder 4
  
0x1861C to 0x1862D = ducking
+
0x1861C to 0x1862D = Ducking
  
0x18B3C to 0x----- = bullet right amount of tiles
+
Bullet when shooting to the right:
0x18B3D to 0x----- = bullet right vertical position (originally 18. change to 23 [does not affect its hit box though]. 0F shoots from the foot)
+
0x18B3C to 0x----- = Amount of tiles
0x18B3E to 0x----- = bullet right tile
+
0x18B3D to 0x----- = Position
0x18B3F to 0x----- = bullet right transform and color
+
0x18B3E to 0x----- = Graphic (tile)
0x18B40 to 0x----- = bullet left
+
0x18B3F to 0x----- = Attribute
  
0x190B0 to 0x190BD = dying 1
+
0x18B40 to 0x----- = Bullet left
0x190BE to 0x190CB = dying 2
 
  
0x19144 to 0x19153 = standing position fine tuning (change to F8 E6 00 E6 F8 EE 00 EE F8 F6 00 F6 F8 FE 00 FE so the standing pose doesn't enter the floor by 2 pixels)
+
0x190B0 to 0x190BD = Dying 1
0x1EC22 to 0x----- = change to 0A so standing position is correct when exiting ladder to the left
+
0x190BE to 0x190CB = Dying 2
0x1EC42 to 0x----- = change to 0A so standing position is correct when exiting ladder to the right
 
0x020B5 to 0x----- = change to 0A so standing position is correct when standing on moving platforms
 
0x01F96 to 0x----- = change to 0A so standing position is correct when standing on falling platforms
 
  
0x1870C to 0x18743 = spider walking
+
0x19144 to 0x19153 = Standing position fine tuning
0x1877C to 0x1878F = beta spider
 
  
0x18934 to 0x----- = change to D5 to fix waterfall
+
0x1EC22 to 0x----- = Change to 0A so standing position is correct
0x1895A to 0x----- = change to D5 to fix waterfall
+
    when exiting ladder to the left
 +
0x1EC42 to 0x----- = Change to 0A so standing position is correct
 +
    when exiting ladder to the right
 +
0x020B5 to 0x----- = Change to 0A so standing position is correct
 +
    when standing on moving platforms
 +
0x01F96 to 0x----- = Change to 0A so standing position is correct
 +
    when standing on falling platforms
  
0x188C2 to 0x----- = change to FF to fix moai
+
0x1870C to 0x18743 = Spider walking
0x188F6 to 0x----- = change to FF to fix moai
+
0x1877C to 0x1878F = Unused spider
  
0x189A2 to 0x----- = the balloon metatile 1
+
0x18934 to 0x----- = Change to D5 to fix the waterfall's wrong tile
0x189C0 to 0x----- = the balloon metatile 2
+
0x1895A to 0x----- = Change to D5 to fix the waterfall's wrong tile
 +
 
 +
0x188C2 to 0x----- = Change to FF to fix the moai's wrong tile
 +
0x188F6 to 0x----- = Change to FF to fix the moai's wrong tile
 +
 
 +
0x189A2 to 0x----- = The balloon metatile 1
 +
0x189C0 to 0x----- = The balloon metatile 2
  
 
dynamic (uses background bank):
 
dynamic (uses background bank):
0x01008 to 0x----- = wide spikes chain
+
0x01008 to 0x----- = Wide spikes chain
0x01018 to 0x----- = moving spikes background
+
0x01018 to 0x----- = Moving spikes background
0x0102C to 0x----- = narrow spikes chain
+
0x0102C to 0x----- = Narrow spikes chain
0x02133 to 0x----- = lava top
+
0x02133 to 0x----- = Lava top
0x0219E to 0x----- = water top
+
0x0219E to 0x----- = Water top
0x0246A to 0x02479 = crystal balls
+
0x0246A to 0x02479 = Crystal balls
0x0247A to 0x----- = locks
+
0x0247A to 0x----- = Locks
0x02492 to 0x----- = diamond
+
0x02492 to 0x----- = Diamond
0x024A6 to 0x----- = lion
+
0x024A6 to 0x----- = Lion
0x205FF to 0x----- = niece cursed
+
0x205FF to 0x----- = Niece cursed
 +
 
 +
0x02905 to 0x----- = Width and height of replaced graphics
 +
 
 +
0x02327 to 0x----- = crystal balls
 +
 
 +
0x02587 to 0x----- = Niece  (AB40)
 +
0x026A9 to 0x----- = Lion
 +
0x02786 to 0x----- = Raj
 +
0x02841 to 0x----- = Small gold
 +
0x0284A to 0x----- = Width and height of replaced small gold
 +
0x02877 to 0x----- = Small gold width and height
 +
0x028FC to 0x----- = Medium gold
 +
0x02932 to 0x----- = Medium gold width and height
 +
0x029B7 to 0x----- = Big gold
 +
0x029C0 to 0x----- = Width and height of replaced big gold
 +
0x029ED to 0x----- = Big gold width and height
 +
 
 +
0x1D637 to 0x----- = Around that, intermission headers
 +
 
 +
0x01E8D to 0x----- = Color of the big moving platform
 +
0x0201B to 0x----- = Color of the small moving platform
 +
 
 +
0x0261A to 0x----- = Which sprite to load for the lion cage
 +
0x0261F to 0x----- = Which palette to use for the lion cage sprite
 +
0x026EC to 0x----- = Lion cage's vertical hitbox
 +
0x026F0 to 0x----- = Lion cage's horizontal hitbox
 +
0x025DC to 0x----- = Niece's vertical hitbox
 +
0x025E0 to 0x----- = Niece's horizontal hitbox
 +
 
 +
0x18D6A to 0x18D6D = Imp's shot right
 +
0x18D6E to 0x18D71 = Imp's shot left
 +
 
 +
0x1936C to 0x19377 = Fix imp's metasprite positions
 +
0x19194 to 0x1919B = Fix lobster's metasprite positions
 +
0x192F6 to 0x19349 = Cavemen metasprites
 +
</pre>
 +
 
 +
{{source|1=nesrocks}}
 +
 
 +
===Metasprite Types===
 +
<pre>
 +
max
 +
length 
 +
type (EST.) used by
 +
---- ------ -------
 +
00 08 Harry various positions
 +
01 08
 +
02 08
 +
03 08
 +
04 08
 +
05 04
 +
06 06
 +
07 06 Unused
 +
08 06 Unused
 +
09 05 Unused
 +
0A 07 Unused
 +
0B 07
 +
0C 16
 +
0D 1C
 +
0E 0E
 +
0F 0D
 +
10 08 Vine 1
 +
11 08 Vine 2
 +
12 08 Vine 3
 +
13 08 Vine 4
 +
14 08 Vine 5
 +
15 08 Vine 6
 +
16 08 Vine 7
 +
17 08 Vine 8
 +
18 04
 +
19 07 Unused
 +
1A 0D Unused
 +
1B 10
 +
1C 0C
 +
1D 0B
 +
1E 12
 +
1F HUD
 +
20 06
 +
21 02
 +
22 02
 +
23 02 Key
 +
24 08 Unused
 +
25 09
 +
26 05
 +
27 08
 +
28 08
 +
29 0E Unused
 +
</pre>
 +
 
 +
{{source|1=nesrocks}}
 +
==Maps==
 +
<pre>
 +
0x04020 to 0x040EF = Overworld room ID map
 +
0x040F0 to 0x07BFF = Start of each room mapping in 2x2 metatiles.
 +
    Each room is 15x16 (240) bytes long.
  
0x02905 to 0x----- = width and height of replaced graphics
+
0x0C020 to 0x0C0EF = Darkworld room ID map
temporary graphic pointers = new pointer
+
0x0C0F0 to 0x0E0CF = Darkworld metatile map
0x02327 to 0x----- = crystal balls (AB48) (2B58) (change to from A9 BA 48 85 22 A8 A4 to A9 48 85 22 A9 AB)
 
0x02587 to 0x----- = niece  (AB40)
 
0x026A9 to 0x----- = lion
 
0x02786 to 0x----- = raj
 
0x02841 to 0x----- = small gold
 
0x0284A to 0x----- = width and height of replaced small gold
 
0x02877 to 0x----- = small gold width and height
 
0x028FC to 0x----- = medium gold
 
0x02932 to 0x----- = medium gold width and height
 
0x029B7 to 0x----- = big gold
 
0x029C0 to 0x----- = width and height of replaced big gold
 
0x029ED to 0x----- = big gold width and height
 
  
0x1D637 to 0x----- = around that, intermission headers
+
0x10020 to 0x100EF = Hidden areas room ID map
 +
0x100F0 to 0x13A1F = The hidden areas rooms
  
0x1E1DB to 0x----- = change to FF to solve the lives problem
+
0x13920 to 0x13A1F = An unused test room with gold and ladders
  
0x1E118 to 0x----- = change to EA EA to fix the demo crashing
+
0x14000 to 0x1421F = Object list mapping for overworld quest 1.
0x1E124 to 0x----- = change to EA EA to fix the demo crashing
+
    They are read 1 by 1 depending on coordinates
 +
    on the map (1 for each room). These are simple
 +
    pointers to the object list bellow. Objects are
 +
    read from that point onward untill they hit a FF
 +
    and that means no more loading objects for that
 +
    room. an object list can have any number of objects,
 +
    just make sure pointers point to the right places
 +
    after FF
 +
</pre>
 +
{{source|1=nesrocks}}
 +
===Room's Object List===
 +
Rooms can reutilize object lists.
  
0x17090 to 0x----- = new FF setter for the hud's 4 digits
+
<pre>
0x17050 to 0x----- = where it breaks to the new FF setter
+
0x14220 to 0x147F6 = Object list for overworld quest 1. Each item takes 3 bytes.
 +
    First byte is type, second is horizontal position
 +
    and third is vertical position. Some items take 4
 +
    bytes, so the second is a parameter, and the last
 +
    two are the position
  
0x01E8D to 0x----- = color or the big moving platform
+
0x14A9F to 0x14C60 = Object list for darkworld
0x0201B to 0x----- = color or the small moving platform
 
  
0x0261A to 0x----- = which sprite to load for the lion cage
+
0x14E60 to 0x14FB8 = Object list for big warpzone
0x0261F to 0x----- = which palette to use for the lion cage sprite
+
0x14FB9 to 0x15015 = Object list for medium warpzone
0x026EC to 0x----- = lion cage's vertical hitbox
+
0x15016 to 0x15046 = Object list for small warpzone
0x026F0 to 0x----- = lion cage's horizontal hitbox
 
0x025DC to 0x----- = niece's vertical hitbox
 
0x025E0 to 0x----- = niece's horizontal hitbox
 
  
0x18D6A to 0x18D6D = imp's shot right
+
0x1F71A to 0x----- = Spawn point list. This is just the screen coordinates
0x18D6E to 0x18D71 = imp's shot left
+
    where to position harry when spawning on room. It doesn't
 +
    know which room it is on.
 +
</pre>
  
0x1936C to 0x19377 = fix imp's metasprite positions
+
{{source|1=nesrocks}}
0x19194 to 0x1919B = fix lobster's metasprite positions
+
==Random Stuff==
0x192F6 to 0x19349 = cavemen metasprites
+
<pre>
 +
0x142dc to 0x----- = Where the first gun is stored
 +
0x142dd to 0x----- = Item parameter. it's used on warps for example
 +
    (01 to 0x08 are preset warp destinations)
 +
0x142de to 0x----- = Gun horizontal position
 +
0x142df to 0x----- = Gun vertical position
 +
 
 +
0x142b1 to 0x----- = The warp to the darkworld
 +
0x1dc44 to 0x----- = Warp list pointer
 +
0x1dc66 to 0x----- = Warp list location. each warp is 4 bytes long.
 +
    (map, room, hor pos, vert pos).
 +
    map:
 +
0 = main
 +
1 = underworld
 +
2 = alternate
 +
 
 +
0x144ED to 0x----- = Where one of the diamonds are stored (13).
 +
 
 +
0x1DBE6 to 0x1DC25 = The button sequence for the demo
 +
</pre>
 +
 
 +
{{source|1=nesrocks}}
 +
==Music==
 +
===Note Values===
 +
Increase a note by a halfstep by adding 15 to the hexidecimal value.
 +
To raise it by an octave, increase the hexidecimal value by one.
 +
 
 +
====Square and Triangle====
 +
<pre>
 +
Value Note
 +
---- ----
 +
0F REST
 +
00 A-1
 +
01 A-2
 +
02 A-3
 +
10 A#1
 +
11 A#2
 +
12 A#3
 +
20 B-1
 +
21 B-2
 +
22 B-3
 +
30 C-2
 +
31 C-3
 +
32 C-4
 +
40 C#2
 +
41 C#3
 +
42 C#4
 +
50 D-2
 +
51 D-3
 +
52 D-4
 +
60 D#2
 +
61 D#3
 +
62 D#4
 +
70 E-2
 +
71 E-3
 +
72 E-4
 +
80 F-2
 +
81 F-3
 +
82 F-4
 +
90 F#2
 +
91 F#3
 +
92 F#4
 +
A0 G-2
 +
A1 G-3
 +
A2 G-4
 +
B0 G#2
 +
B1 G#3
 +
B2 G#4
 +
F0 REPEAT
 +
FF STOP
 +
</pre>
 +
 
 +
====Noise====
 +
<pre>
 +
Value Note
 +
---- ----
 +
00 F-#
 +
01 E-#
 +
02 D-#
 +
03 C-#
 +
04 B-#
 +
05 A-#
 +
06 9-#
 +
07 8-#
 +
08 7-#
 +
09 6-#
 +
0A 5-#
 +
0B 4-#
 +
0C 3-#
 +
0D 2-#
 +
0E 1-#
 +
0F 0-#
 +
</pre>
 +
 
 +
{{source|1=FCandChill, nesrocks}}
 +
 
 +
===Music and Sound Data Structure===
 +
<pre>
 +
A sound or music channel sequence is comprised of a 4 bytes header, followed by notes, until an end byte is reached.
 +
 
 +
The header's first byte accepts the following values:
 +
01: Square 1 channel
 +
02: Square 2 channel
 +
03: Triangle Channel
 +
04: Noise channel
 +
 
 +
The header's three other bytes are channel settings and effects.
 +
 
 +
A note is represented by two bytes:
 +
Byte 1: Note letter and octave
 +
Byte 2: Time until next note.
 +
 
 +
An end byte is recognized by being one of two possible values:
 +
F0: Loop
 +
FF: Stop
 +
</pre>
 +
 
 +
{{source|1=FCandChill, nesrocks}}
 +
 
 +
===All the Sound Data===
 +
<pre>
 +
20 AC FE the sub routine call to play the previously loaded ID (A9 ID) (sometimes 4C AC FE)
 +
 
 +
ID       Address Size Type Description
 +
-- ------------------ ---- ----- ----------------
 +
00 0x19926 to 0x1992A 004
 +
01 0x1992F to 0x19933 004
 +
02 0x19938 to 0x1993C 004
 +
03 0x19941 to 0x19955 014 SFX Pause
 +
04 0x1995A to 0x199D6 07C Music Balloon theme square
 +
05 0x199D7 to 0x10A0D 036 Music Main theme square
 +
06 0x19A0E to 0x19A2B Music Cutscene theme square stops on 28
 +
07 0x19A2D to 0x19A79 Music Darkworld theme square
 +
08 0x19A7A to 0x19A92 Music Invincibilty square
 +
09 0x19A93 to 0x19ABF Music Game over theme square
 +
0A 0x19AC0 to 0x19AEA Music Game over theme square 2
 +
0B 0x19AEB to 0x19B15 Music Game over theme triangle
 +
0C 0x19B1C to 0x19B26 SFX Extra life
 +
0D 0x19B27 to 0x19B31 SFX Death
 +
0E 0x19B32 to 0x19B42 SFX Kill an enemy
 +
0F 0x19B43 to 0x19B4F SFX Take a warp
 +
10 0x19B50 to 0x19B5A SFX Get an item
 +
11 0x19B50 to 0x19B5A SFX Get an item (duplicate pointer)
 +
12 0x19B5B to 0x19B61 SFX Get an item higher pitch (gold I think)
 +
13 0x19B62 to 0x19B6A SFX Enemy shoots
 +
14 0x19B6B to 0x19B73 SFX Damage an enemy (without killing it)
 +
15 0x19B74 to 0x19B7E SFX Firing a bullet
 +
16 0x19B7F to 0x19B87 SFX Object hitting the ground
 +
17 0x19B88 to 0x19B92 SFX Falling ceiling
 +
18 0x19B93 to 0x19B9B SFX Jump low pitch
 +
19 0x19B9C to 0x19BA6 SFX Jump (maybe it's this address. check)
 +
1A 0x19BA7 to 0x19BB5 SFX Imp / big cavemen shooting
 +
1B 0x19BB6 to 0x19BC0 SFX Moving spikes
 +
1C 0x19BC1 to 0x19BCD SFX ??????
 +
1D 0x19BCE to 0x19BD8 SFX Waterfall
 +
1E 0x19BD9 to 0x19BDF SFX Harry landing on the ground
 +
1F 0x19BE0 to 0x19BEC SFX ??????
 +
20 0x19BE0 to 0x19BEC SFX ?????? (duplicate pointer)
 +
21 0x19BED to 0x19BF3 SFX Sounds like harry landing on the ground
 +
22 0x19BF4 to 0x19C98 Music Ballon theme triangle
 +
23 0x19CA4 to 0x19CBC Music Ballon theme noise (I think, needs testing)
 +
24 0x19CBD to 0x19D3B Music Main theme triangle
 +
25 0x19D3C to 0x19D8A Music Main theme noise (I think, needs testing)
 +
26 0x19D8B to 0x19DA8 Music Cutscene theme triangle (stops on 28)
 +
27 0x19DAA to 0x19DB0 Music Cutscene theme noise (it's empty)
 +
28 0x19DB1 to 0x19DC3 Music Darkworld theme triangle
 +
29 0x19DC4 to 0x19DE8 Music Darkworld theme noise
 +
2A 0x19DE9 to 0x19E7D Music Invincibilty theme square 2
 +
2B 0x19E7E to 0x19EB8 Music Invincibility theme noise
 +
2C 0x19EB9 to 0x19F1D Music Ending theme square
 +
2D 0x19F1E to 0x19F7C Music Ending theme square 2
 +
2E 0x19F7D to 0x19FCF Music Ending theme triangle
 +
 
 +
0x19C99 to 0x19CA3 unused data
 +
</pre>
 +
 
 +
{{source|1=nesrocks}}
 +
====Size of Music====
 +
<pre>
 +
  total
 +
byte size
 +
(base 15) Description
 +
--------- ------------
 +
045 Cutscene
 +
084 Game over
 +
086 Darkworld
 +
0EB Invincibility / Overworld 2
 +
105 Main theme
 +
116 Ending
 +
11F Balloon
 
</pre>
 
</pre>
  

Latest revision as of 02:08, 23 August 2016

Graphics

Adresses

Sprite manipulation parameters
	00 = nothing
	40 = flip H
	80 = flip V
	C0 = rotate 180

0x193E8 to 0x193EF = Harry's attributes

0x1842E to 0x18453 = Harry standing right
0x18454 to 0x18465 = Harry walking right 1
0x18466 to 0x18477 = Harry walking right 2
0x18478 to 0x18489 = Harry walking right 3
0x1848A to 0x1849B = Harry walking right 4
0x1849C to 0x184AD = Harry walking left 1
0x184AE to 0x184BF = Harry walking left 2
0x184C0 to 0x184D1 = Harry walking left 3
0x184D2 to 0x184E3 = Harry walking left 4
0x18506 to 0x18515 = Jumping right
0x18516 to 0x18527 = Jumping left

0x1854A to 0x18559 = Swimming right 1
0x1855A to 0x18569 = Swimming right 2
0x1856A to 0x18579 = Swimming right 3
0x1857A to 0x1858B = Swimming right 4

0x1858C to 0x1859D = Swimming left 1
0x1859E to 0x185AF = Swimming left 2
0x185B0 to 0x185C1 = Swimming left 3 (185BF change to 40 to fix the tile)
0x185C2 to 0x185D3 = Swimming left 4

0x185D4 to 0x185E5 = Ladder 1
0x185E6 to 0x185F7 = Ladder 2
0x185F8 to 0x18609 = Ladder 3
0x1860A to 0x1861B = Ladder 4

0x1861C to 0x1862D = Ducking

Bullet when shooting to the right:
0x18B3C to 0x----- = Amount of tiles
0x18B3D to 0x----- = Position
0x18B3E to 0x----- = Graphic (tile)
0x18B3F to 0x----- = Attribute

0x18B40 to 0x----- = Bullet left

0x190B0 to 0x190BD = Dying 1
0x190BE to 0x190CB = Dying 2

0x19144 to 0x19153 = Standing position fine tuning

0x1EC22 to 0x----- = Change to 0A so standing position is correct
		     when exiting ladder to the left 
0x1EC42 to 0x----- = Change to 0A so standing position is correct
		     when exiting ladder to the right
0x020B5 to 0x----- = Change to 0A so standing position is correct
		     when standing on moving platforms
0x01F96 to 0x----- = Change to 0A so standing position is correct
		     when standing on falling platforms

0x1870C to 0x18743 = Spider walking
0x1877C to 0x1878F = Unused spider

0x18934 to 0x----- = Change to D5 to fix the waterfall's wrong tile
0x1895A to 0x----- = Change to D5 to fix the waterfall's wrong tile

0x188C2 to 0x----- = Change to FF to fix the moai's wrong tile
0x188F6 to 0x----- = Change to FF to fix the moai's wrong tile

0x189A2 to 0x----- = The balloon metatile 1
0x189C0 to 0x----- = The balloon metatile 2

dynamic (uses background bank):
0x01008 to 0x----- = Wide spikes chain
0x01018 to 0x----- = Moving spikes background
0x0102C to 0x----- = Narrow spikes chain
0x02133 to 0x----- = Lava top
0x0219E to 0x----- = Water top
0x0246A to 0x02479 = Crystal balls
0x0247A to 0x----- = Locks
0x02492 to 0x----- = Diamond
0x024A6 to 0x----- = Lion
0x205FF to 0x----- = Niece cursed

0x02905 to 0x----- = Width and height of replaced graphics

0x02327 to 0x----- = crystal balls

0x02587 to 0x----- = Niece  (AB40)
0x026A9 to 0x----- = Lion
0x02786 to 0x----- = Raj
0x02841 to 0x----- = Small gold
0x0284A to 0x----- = Width and height of replaced small gold
0x02877 to 0x----- = Small gold width and height
0x028FC to 0x----- = Medium gold
0x02932 to 0x----- = Medium gold width and height
0x029B7 to 0x----- = Big gold
0x029C0 to 0x----- = Width and height of replaced big gold
0x029ED to 0x----- = Big gold width and height

0x1D637 to 0x----- = Around that, intermission headers

0x01E8D to 0x----- = Color of the big moving platform
0x0201B to 0x----- = Color of the small moving platform

0x0261A to 0x----- = Which sprite to load for the lion cage
0x0261F to 0x----- = Which palette to use for the lion cage sprite
0x026EC to 0x----- = Lion cage's vertical hitbox
0x026F0 to 0x----- = Lion cage's horizontal hitbox
0x025DC to 0x----- = Niece's vertical hitbox
0x025E0 to 0x----- = Niece's horizontal hitbox

0x18D6A to 0x18D6D = Imp's shot right
0x18D6E to 0x18D71 = Imp's shot left

0x1936C to 0x19377 = Fix imp's metasprite positions
0x19194 to 0x1919B = Fix lobster's metasprite positions
0x192F6 to 0x19349 = Cavemen metasprites
(Source: nesrocks)

Metasprite Types

	max
	length   
type	(EST.)	used by
----	------	-------
00	08	Harry various positions
01	08	
02	08	
03	08	
04	08	
05	04	
06	06	
07	06	Unused
08	06	Unused
09	05	Unused
0A	07	Unused
0B	07	
0C	16	
0D	1C	
0E	0E	
0F	0D	
10	08	Vine 1
11	08	Vine 2
12	08	Vine 3
13	08	Vine 4
14	08	Vine 5
15	08	Vine 6
16	08	Vine 7
17	08	Vine 8
18	04	
19	07	Unused
1A	0D	Unused
1B	10	
1C	0C	
1D	0B	
1E	12	
1F		HUD
20	06	
21	02	
22	02	
23	02	Key
24	08	Unused
25	09	
26	05	
27	08	
28	08	
29	0E	Unused
(Source: nesrocks)

Maps

0x04020 to 0x040EF = Overworld room ID map
0x040F0 to 0x07BFF = Start of each room mapping in 2x2 metatiles.
		     Each room is 15x16 (240) bytes long.

0x0C020 to 0x0C0EF = Darkworld room ID map
0x0C0F0 to 0x0E0CF = Darkworld metatile map

0x10020 to 0x100EF = Hidden areas room ID map
0x100F0 to 0x13A1F = The hidden areas rooms

0x13920 to 0x13A1F = An unused test room with gold and ladders

0x14000 to 0x1421F = Object list mapping for overworld quest 1.
		     They are read 1 by 1 depending on coordinates
		     on the map (1 for each room). These are simple
		     pointers to the object list bellow. Objects are
		     read from that point onward untill they hit a FF
		     and that means no more loading objects for that
		     room. an object list can have any number of objects,
		     just make sure pointers point to the right places
		     after FF 
(Source: nesrocks)

Room's Object List

Rooms can reutilize object lists.

0x14220 to 0x147F6 = Object list for overworld quest 1. Each item takes 3 bytes.
		     First byte is type, second is horizontal position
		     and third is vertical position. Some items take 4
		     bytes, so the second is a parameter, and the last
		     two are the position

0x14A9F to 0x14C60 = Object list for darkworld

0x14E60 to 0x14FB8 = Object list for big warpzone
0x14FB9 to 0x15015 = Object list for medium warpzone
0x15016 to 0x15046 = Object list for small warpzone

0x1F71A to 0x----- = Spawn point list. This is just the screen coordinates
		     where to position harry when spawning on room. It doesn't
		     know which room it is on.
(Source: nesrocks)

Random Stuff

0x142dc to 0x----- = Where the first gun is stored
0x142dd to 0x----- = Item parameter. it's used on warps for example
		     (01 to 0x08 are preset warp destinations)
0x142de to 0x----- = Gun horizontal position
0x142df to 0x----- = Gun vertical position

0x142b1 to 0x----- = The warp to the darkworld
0x1dc44 to 0x----- = Warp list pointer
0x1dc66 to 0x----- = Warp list location. each warp is 4 bytes long.
		     (map, room, hor pos, vert pos).
    map: 
	0 = main
	1 = underworld
	2 = alternate

0x144ED to 0x----- = Where one of the diamonds are stored (13).

0x1DBE6 to 0x1DC25 = The button sequence for the demo
(Source: nesrocks)

Music

Note Values

Increase a note by a halfstep by adding 15 to the hexidecimal value. To raise it by an octave, increase the hexidecimal value by one.

Square and Triangle

Value	Note
----	----
0F	REST
00	A-1
01	A-2
02	A-3
10	A#1
11	A#2
12	A#3
20	B-1
21	B-2
22	B-3
30	C-2
31	C-3
32	C-4
40	C#2
41	C#3
42	C#4
50	D-2
51	D-3
52	D-4
60	D#2
61	D#3
62	D#4
70	E-2
71	E-3
72	E-4
80	F-2
81	F-3
82	F-4
90	F#2
91	F#3
92	F#4
A0	G-2
A1	G-3
A2	G-4
B0	G#2
B1	G#3
B2	G#4
F0	REPEAT
FF	STOP

Noise

Value	Note
----	----
00	F-#
01	E-#
02	D-#
03	C-#
04	B-#
05	A-#
06	9-#
07	8-#
08	7-#
09	6-#
0A	5-#
0B	4-#
0C	3-#
0D	2-#
0E	1-#
0F	0-#
(Source: FCandChill, nesrocks)

Music and Sound Data Structure

A sound or music channel sequence is comprised of a 4 bytes header, followed by notes, until an end byte is reached.

The header's first byte accepts the following values:
	01: Square 1 channel
	02: Square 2 channel
	03: Triangle Channel
	04: Noise channel

The header's three other bytes are channel settings and effects.

A note is represented by two bytes:
	Byte 1: Note letter and octave
	Byte 2: Time until next note.

An end byte is recognized by being one of two possible values:
	F0: Loop
	FF: Stop
(Source: FCandChill, nesrocks)

All the Sound Data

20 AC FE the sub routine call to play the previously loaded ID (A9 ID) (sometimes 4C AC FE)

ID	      Address		Size	Type	Description
--	------------------	----	-----	----------------
00	0x19926 to 0x1992A	004
01	0x1992F to 0x19933	004
02	0x19938 to 0x1993C	004
03	0x19941 to 0x19955	014	SFX	Pause
04	0x1995A to 0x199D6	07C	Music	Balloon theme square
05	0x199D7 to 0x10A0D	036	Music	Main theme square
06	0x19A0E to 0x19A2B		Music	Cutscene theme square stops on 28
07	0x19A2D to 0x19A79		Music	Darkworld theme square
08	0x19A7A to 0x19A92		Music	Invincibilty square
09	0x19A93 to 0x19ABF		Music	Game over theme square
0A	0x19AC0 to 0x19AEA		Music	Game over theme square 2
0B	0x19AEB to 0x19B15		Music	Game over theme triangle
0C	0x19B1C to 0x19B26		SFX	Extra life
0D	0x19B27 to 0x19B31		SFX	Death
0E	0x19B32 to 0x19B42		SFX	Kill an enemy
0F	0x19B43 to 0x19B4F		SFX	Take a warp
10	0x19B50 to 0x19B5A		SFX	Get an item
11	0x19B50 to 0x19B5A		SFX	Get an item (duplicate pointer)
12	0x19B5B to 0x19B61		SFX	Get an item higher pitch (gold I think)
13	0x19B62 to 0x19B6A		SFX	Enemy shoots
14	0x19B6B to 0x19B73		SFX	Damage an enemy (without killing it)
15	0x19B74 to 0x19B7E		SFX	Firing a bullet
16	0x19B7F to 0x19B87		SFX	Object hitting the ground
17	0x19B88 to 0x19B92		SFX	Falling ceiling
18	0x19B93 to 0x19B9B		SFX	Jump low pitch
19	0x19B9C to 0x19BA6		SFX	Jump (maybe it's this address. check)
1A	0x19BA7 to 0x19BB5		SFX	Imp / big cavemen shooting
1B	0x19BB6 to 0x19BC0		SFX	Moving spikes
1C	0x19BC1 to 0x19BCD		SFX	??????
1D	0x19BCE to 0x19BD8		SFX	Waterfall
1E	0x19BD9 to 0x19BDF		SFX	Harry landing on the ground
1F	0x19BE0 to 0x19BEC		SFX	??????
20	0x19BE0 to 0x19BEC		SFX	?????? (duplicate pointer)
21	0x19BED to 0x19BF3		SFX	Sounds like harry landing on the ground
22	0x19BF4 to 0x19C98		Music	Ballon theme triangle
23	0x19CA4 to 0x19CBC		Music	Ballon theme noise (I think, needs testing)
24	0x19CBD to 0x19D3B		Music	Main theme triangle
25	0x19D3C to 0x19D8A		Music	Main theme noise (I think, needs testing)
26	0x19D8B to 0x19DA8		Music	Cutscene theme triangle (stops on 28)
27	0x19DAA to 0x19DB0		Music	Cutscene theme noise (it's empty)
28	0x19DB1 to 0x19DC3		Music	Darkworld theme triangle
29	0x19DC4 to 0x19DE8		Music	Darkworld theme noise
2A	0x19DE9 to 0x19E7D		Music	Invincibilty theme square 2
2B	0x19E7E to 0x19EB8		Music	Invincibility theme noise
2C	0x19EB9 to 0x19F1D		Music	Ending theme square
2D	0x19F1E to 0x19F7C		Music	Ending theme square 2
2E	0x19F7D to 0x19FCF		Music	Ending theme triangle

	0x19C99 to 0x19CA3	unused data
(Source: nesrocks)

Size of Music

  total
byte size
(base 15)	Description
---------	------------
045		Cutscene
084		Game over
086		Darkworld
0EB		Invincibility / Overworld 2
105		Main theme
116		Ending
11F		Balloon
(Source: nesrocks)


Internal Data for Super Pitfall

ROM MapRAM MapText TableNotesTutorials