MEGAMAN 1 NES ROM TECH DOC version 0.14 You can get the latest version of this doc at : http://worldofwarcraftbeta.0catch.com/nes/megm1rom.txt I noticed that Bisqwit perfected the disassembly part, you can now get it from his site at : http://bisqwit.iki.fi/jutut/megamansource These days, many Megaman/Rockman 1 level editors exist, so to get some more infos on this ROM (the what and the where), it may be a good idea to edit it and verify what changed with an hex editor comparator VS the original ROM. :-) UPDATE 2010-03 : Simplified this doc (years later, lol). UPDATE 2001-12 : Received some more infos about this ROM from Ninja SuperK, mainly disassembly stuff. UPDATE 2001-10 : Received some more infos about this ROM from Vagla (below) May be I received some more infos, but it was not an e-mail account I used often, so sorry if you sent me anything else or if I did'nt reply. I don't have time to maintain this doc anyways, so goodluck with your finds! ******************************************************************************************** --Note : The address below are without an INES HEADER MEGAMAN1.ROM BEGIN - 0000-0k - 0000 to 03BF = tiles squaroid assembler(make tiles with 4 other tiles) - 03C0 to 08BF = Cutman MAP - 08BF to 0BFF = Dr.Wily MAP # 1 - 0C00 to 0C2F = Cutman map room order - 0C30 to 0C9F = Cutman has something to do with maporder + objects - 0CA0 to 0CBF = Cutman stage palette start - 0CC0 to 0CFF = 2 unknown palettes - OD00 to 0DFF = select what sprites to use for objects Cutman stage - 0E00 to 0EFF = ??? unknown objects definition Cutman stage ? - 0F00 to 4000 = GFX sprites + gfx fonts + some tiles 4000-16k | - 4000 to 43BF = Dr.Wily #2 map stuff - 43C0 to 47FF = Iceman MAP - 4CA0 to 4CBF = Iceman stage palette start - 4CC0 to 4EFF = Dr.Wily MAP #2 map stuff - 4F00 to 7F50 (4F00 to 8000?) = GFX tiles 8000-32k | - 83C0 to 877F = Bomberman MAP - 8CA0 to 8CBF = Bomberman stage palette start - 8F00 to BF00 (8F00 to c000?) = GFX sprites + gfx score C000-48k | - C3C0 to C83F = Fireman MAP - CCA0 to CCBF = Fireman stage palette start - CEC0 to FEE0 (CEC0 to 10000?) = GFX sprites + tiles + title screen 10000-64k | - 103C0 to 107BF = Electricman MAP - 10CA0 to 10CBF = Electricman stage palette start - 10CD0 to 10CEF = palette intro screen - 11000 to 14000 = all music 14000-80k | - 143C0 to 147BF = Gutman MAP - 14CA0 to 14CBF = Gutman stage palette start - 14CBF to 15FFF = refuse to boot - 16000 to 169FF = bug - 169FF to 17FFF = bug with ennemies 18000-96k | - 18000 to 181FF = sprites used - 18200 to 182FF = cuboid sprites - 18300 to 183FF = sprites used - 18400 to 184FF = ??? - 184FF to 1861F = some sprites affection - 18630 to 1863F = wind on Megaman at different speed - 18640 to 1864F = walking speed of Megaman - 18650 to 18FFF = some sprites affection - 19000 to 19FFF = cuboid sprites - 1A000 to 1B000 = animations, monsters kind/position/acting, flash - 1AECD to 1B0DE = text - 1BDAB to 1BDCA = stage select screen palette 1C000-112k | - Code and others things 128k | - MEGAMAN1.ROM END -------------------------------------------------------------------------------------------- Enemies data (Credits Vagla) - These are the starting locations of all of the enemies data. The format is screen #, x coordinate, y coordinate, enemy ID : Cut Man- 1A478 Ice Man- 1A539 Bomb Man- 1A5DE Fire Man- 1A678 Elec Man- 1A764 Guts Man- 1A851 Wily 1- 1A8D6 Wily 2- 1A92B Wily 3- 1A9DC Wily 4- 1AA35 indicators : 00- Bunby Heri 01- Metall (aka Hard Hat) 02- Flea 03- Gabyoall 04- Suzy (Vertical moving) 05- Screw Driver (On floor) 06- Watcher 08- Wave Bullet 09- Big Eye 0A- Shell Gun 0B- Wall Gun? (On right wall?) 0C- Electricity A (Elec Man's stage) 14- Crazy Razy 16- Screw Driver (On ceiling) 17- Wall Gun? (On left wall?) 1C- Cutter 21- Suzy (Horizontal moving) 22- Wall Gun? (On right wall?) 24- Electricity B (Elec Man's stage) 3D- Small Weapon Capsule? 40- Large Energy Capsule 41- 1up? 42- Magnet Beam Adapter 3E- Capsule? 3F- Capsule? ? = not verified -------------------------------------------------------------------------------------------- INES Header info PRG 8 x 16 kb CHR 0 x 8 kb Mapper #2 Mapper Name Simple 16KB PRG Switch Vertical Mirroring -------------------------------------------------------------------------------------------- 2. Mapper #2, Konami (Credits some well known docs) This is a quite simple mapper used in most Konami (Life Force, Castlevania, Metal Gear) and some other cartridges. It only switches the ROM. All cartridges with this mapper have 8kB VRAM at $0000 (i.e. no VROM). The mapper has a single 8bit register which can be written via locations $8000-$FFFF. It contains a number of 16kB ROM page at $8000. The page at $C000 is always hardwired to the last ROM page in the cartridge. The cartridge starts with page 0 at $8000. There is one more thing to note about this mapper: although any address in the $8000-$FFFF range can be used to access the mapper, most games prefer to use the address with the last digit equal to the value they write out. Thus, $07 can be written to $9FF7, $05 to $9FF5, and so forth. The reason for this is unknown. This mapper is used on many older U.S. and Japanese games, such as Castlevania, MegaMan, Ghosts & Goblins, and Amagon. $8000 - $FFFF ----------- PPPPPPPP | | | -------- Select 16K ROM bank at $8000 Notes: - When the cart is first started, the first 16K ROM bank in the cart is loaded into $8000, and the LAST 16K ROM bank is loaded into $C000. This last 16K bank is permanently "hard-wired" to $C000, and it cannot be swapped. - This mapper has no provisions for VROM; therefore, all carts using it have 8K of VRAM at PPU $0000. - Most carts with this mapper are 128K. A few, mostly Japanese carts, such as Final Fantasy 2 and Dragon Quest 3, are 256K. - Overall, this is one of the easiest mappers to implement in a NES emulator. ******************************************************************************************** AlphaBeta