# Difference between revisions of "Super Pitfall:ROM map"

## Graphics

```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	8	Harry various positions
01	8
02	8
03	8
04	8
05	4
06	6
07	6	Unused
08	6	Unused
09	5	Unused
0A	7	Unused
0B	7
0C	16
0D	1C
0E	E
0F	D
10	8	Vine 1
11	8	Vine 2
12	8	Vine 3
13	8	Vine 4
14	8	Vine 5
15	8	Vine 6
16	8	Vine 7
17	8	Vine 8
18	4
19	7	Unused
1A	D	Unused
1B	10
1C	C
1D	B
1E	12
1F		HUD
20	6
21	2
22	2
23	2	Key
24	8	Unused
25	9
26	5
27	8
28	8
29	E	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.

Value	Note
----	----
0F	Rest
12	A#3
22	???
32	C-4
42	C#4
52	D-4
62	D#4
91	F#3
A1	G-3
B1	G#3
C1	A-3
F6	REST
```

### Sound Effects

```0x19B1C to 0x19B26 = Extra life
0x19B50 to 0x19B5A = Grab item
0x19B74 to 0x19B7E = Shot sound
0x19B9C to 0x19BA6 = Jump sound
```

### Tracks

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

#### Ballon Music

```0x19BF4 to 0x19CBC = Balloon music
```

#### Main Music

```0x19CBD to 0x19CBF = Triangle Channel Data
0x19CC1 to 0x19D34 = Triangle Channel Notes
0x19D40 to 0x19D85 = Noise Channel
```
(Source: nesrocks & FCandChill)

Internal Data for Super Pitfall