add rom map

This commit is contained in:
Michael Miceli 2023-12-29 22:19:05 -05:00
parent 352e6ff15c
commit 7a751b3215
2 changed files with 104 additions and 13 deletions

View File

@ -77,21 +77,25 @@ YouTube called
Supplemental materials have been added that help explain interesting features of
the code. Below are some of the more important documents.
* `docs/Aim Documentation.md` - documentation on how enemy aiming works
* `docs/Bugs.md` - bugs identified while disassembling
* `docs/Contra Control Flow.md` - detailed look at the game routine and level
routine flows.
* `docs/Enemy Glossary.md` - documentation on every enemy type in the game
* `docs/Enemy Routines.md` - documentation on level enemy configuration and
random soldier generation.
* `docs/Graphics Documentation.md` - documentation on pattern tables,
nametables, palettes, palette cycling, super-tiles, background collision, and
compression.
* `docs/Sound Documentation.md` - documentation on the audio engine used as well
as information on all sounds from the game.
* [docs/Aim Documentation.md](./docs/Aim%20Documentation.md) - documentation on
how enemy aiming works
* [docs/Bugs.md](./docs/Bugs.md) - bugs identified while disassembling
* [docs/Contra Control Flow.md](./docs/Contra%20Control%20Flow.md) - detailed
look at the game routine and level routine flows.
* [docs/Enemy Glossary.md](./docs/Enemy%20Glossary.md) - documentation on every
enemy type in the game
* [docs/Enemy Routines.md](./docs/Enemy%20Routines.md) - documentation on level
enemy configuration and random soldier generation.
* [docs/Graphics Documentation.md](./docs/Graphics%20Documentation.md) -
documentation on pattern tables, nametables, palettes, palette cycling,
super-tiles, background collision, and compression.
* [docs/ROM Map.md](./docs/ROM%20Map.md) - detailed description of ROM file
contents
* [docs/Sound Documentation.md](./docs/Sound%20Documentation.md) - documentation
on the audio engine used as well as information on all sounds from the game.
All sprites were captured and labeled for easy reference in
`docs/sprite_library/README.md`
[docs/sprite_library/README.md](./docs/sprite_library/README.md)
### Getting Started

87
docs/Rom Map.md Normal file
View File

@ -0,0 +1,87 @@
Below is a detailed overview of the layout of the Contra ROM file's contents.
In summary, the ROM contains the following things
| Type | Percentage |
|-------------------------|------------|
| Compressed Graphic Data | 49.177% |
| Code | 29.721% |
| Compressed Audio | 8.108% |
| Unused | 5.578% |
| Configuration Data | 4.024% |
| Sprite Data | 2.676% |
| Text Data | .695% |
# ROM Map
* Header
* `$00000-$0000F` - iNES ROM Header Data
* Bank 0
* `$00010-$03D7A` - Enemy Logic
* `$03D7B-$0400F` - Unused
* Bank 1
* `$04010-$048F7` - Sound Engine Code
* `$048F8-$06EAC` - Encoded Sound Data
* `$06EAD-$0703F` - Code to Draw Sprites
* `$07040-$07DF4` - Encoded Sprite Data
* `$07DF5-$0800F` - Unused
* Bank 2
* `$08010-$090A7` - Level Supertile Screen Assignments
* `$090A8-$0B001` - Compressed Graphic Data
* `$0B002-$0B328` - Player State Logic
* `$0B329-$0B428` - Level Header Data
* `$0B429-$0BD4B` - Enemy Generation Logic
* `$0BD4C-$0C00F` - Unused
* Bank 3
* `$0C010-$0FE09` - Supertile and Palette Data
* `$0FE0A-$0FFBE` - End Level Routine Logic
* `$0FFBF-$1000F` - Unused
* Bank 4
* `$10010-$138C8` - Compressed Graphic Data
* `$138C9-$13BA4` - Game End Routine Logic
* `$13BA5-$13DD0` - Ending Credits Data
* `$13DD1-$1400F` - Unused
* Bank 5
* `$14010-$1736D` - Compressed Graphic Data
* `$1736E-$17643` - Automated Demo Input
* `$17644-$1800F` - Unused
* Bank 6
* `$18010-$1B271` - Compressed Graphic Data
* `$1B272-$1B3D6` - Text Data
* `$1B3D7-$1BD35` - Weapon Logic
* `$1BD36-$1C00F` - Unused
* Bank 7
* `$1C010-$1F621` - Game Engine Logic
* `$1F622-$1FC0F` - Unused
* `$1FC10-$1FFDF` - Differential Pulse Code Modulation (DPCM) Data
* `$1FFE0-$2000F` - NES Undocumented Footer
## Visual Rom Map
```
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCUUUUU
CCCCCCCCCCCCCCCCCCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAACCCSSSSSSSSSSSSSSSSSSSSSSSSSSSUUUUD
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGCCCCCCDDCCCCCCCCCCCCCCCCCCUUUUUUG
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGCCCUG
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGCCCCCCTTTTUUUUGG
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGDDDDDDUUUUUUUUUUUUUUUUUUUUG
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGTTTCCCCCCCCCCCCCCCCCCCUUUUUU
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCUUUUUUUUUUUUAAAAAAAA
```
Legend
* G = Compressed Graphic Data
* C = Code
* A = Compressed Audio
* U = Unused
* D = Configuration Data
* S = Sprite Data
* T = Text Data