diff --git a/README.md b/README.md index 25747f0..e18f4b0 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/docs/Rom Map.md b/docs/Rom Map.md new file mode 100644 index 0000000..8d4d721 --- /dev/null +++ b/docs/Rom Map.md @@ -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 \ No newline at end of file