If you are still using the old URL (datacrystal.romhacking.net), please update your bookmarks! The old URL may stop working soon.
The current URL is datacrystal.tcrf.net.
The current URL is datacrystal.tcrf.net.
Mega Man: Dr. Wily's Revenge/ROM map: Difference between revisions
Jump to navigation
Jump to search
m (Hawk moved page Mega Man in Dr. Wily's Revenge/ROM map to Mega Man: Dr. Wily's Revenge/ROM map) |
|||
(7 intermediate revisions by 4 users not shown) | |||
Line 37: | Line 37: | ||
The initial value of lives is 9. You have more lives. | The initial value of lives is 9. You have more lives. | ||
</pre> | </pre> | ||
*157F-15B8: Joypad subroutine | |||
*15D4-15E1: Put OAM DMA Transfer subroutine in internal RAM: $FF80-$FF89 | |||
<pre> | |||
00:15D4 0E 80 ld c,$80 (c=$80) | |||
00:15D6 06 0A ld b,$0A (b=$0A=10=Size of OAM DMA Transfer Subroutine) | |||
00:15D8 21 E2 15 ld hl,$15E2 (Put in hl the address $00:15E2 where is the OAM DMA Transfer subroutine in ROM) | |||
00:15DB 2A ldi a,[hl] (Put in A the value in address given in hl=Subroutine OAM DMA Transfer in ROM and increases hl) | |||
00:15DC E2 ld [$FF00+c],a (Put the value of A in the Address $FF00+c=Internal RAM) | |||
00:15DD 0C inc c (Increases c) | |||
00:15DE 05 dec b (Decrease b=Bytes to be written in Internal RAM of the OAM DMA Transfer Subroutine) | |||
00:15DF 20 FA jr nz,$15DB (If not zero then jump to address $00:15DB to write other byte of the subroutine in the internal RAM) | |||
00:15E1 C9 ret (Return of the subroutine) | |||
</pre> | |||
*15E2-15EB: OAM DMA Tranfer subrotuine | |||
*20E1-2108: Name enemies | |||
*0x 3979- 3FFF Unused | *0x 3979- 3FFF Unused | ||
==Bank 1: Unknown== | ==Bank 1: Unknown== | ||
*0x 4000- | *0x 4000-5765 ??? | ||
*0x | *0x 5766-5772: Increases the lives | ||
<pre> | |||
01:5766 21 08 C1 ld hl,$C108 (Put in hl the address $C108=Lives) | |||
01:5769 7E ld a,[hl] (Put in A the value in address $C108=Lives) | |||
01:576A 3C inc a (Increases a) | |||
01:576B FE 0A cp a,$0A (Compare the value of A=Lives with $0A=10 decimal=Maximum value of lives?) | |||
01:576D 38 02 jr c,$5771 (Jump if carry to address $01:5771) | |||
01:576F 3E 0A ld a,$0A (Put in A the value $0A=10 decimal) | |||
01:5771 77 ld [hl],a (Put the value $0A=10 decimal in the address $C108=Lives) | |||
01:5772 C9 ret (Return of the subroutine) | |||
</pre> | |||
*0x 5773-615F: Put data of triangle tile that represents the menu icon: | |||
<pre> | |||
01:6160 1E 60 ld e,$60 (Put in E the value $60=Y coordinate for choice "GAME START") | |||
01:6162 28 02 jr z,$6166 (Jump if is zero to address $01:6166) | |||
01:6164 1E 68 ld e,$68 (Put in E the value $68=Y coordinate for choice "PASS WORD") | |||
01:6166 21 00 C0 ld hl,$C000 (Put in hl the Addres $C000=RAM=Y Coordinate=Copy of OAM) | |||
01:6169 73 ld [hl],e (Put the value $68 in the address in hl=$C000=Coordinate Y) | |||
01:616A 2C inc l (Increases l=$00+$01=$01. hl=$C001) | |||
01:616B 36 30 ld [hl],$30 (Put the value $30 in the address in hl=$C001=Coordinate X) | |||
01:616D 2C inc l (Increases l=$01+$01=$02. hl=$C002) | |||
01:616E 36 00 ld [hl],$00 (Put the value $00=Triangle tile that represents the menu icon in the address $C002) | |||
01:6170 2C inc l (Increases l=$02+$01=$03. hl=$C003) | |||
01:6171 36 00 ld [hl],$00 (Put the value $00 in the address $C003=Attribute of the tile) | |||
01:6173 C9 ret (Return of the subroutine) | |||
Note: | |||
Each tile needs 4 bytes: Y-coord (1 byte), X-coord (1 byte), Tile (1 byte), Attribute (1 byte) | |||
</pre> | |||
*0x 6174-6528 ??? | |||
*0x6529-6548: X and Y coordinates of points in the box at the level selection screen | |||
<pre> | |||
CUTEMAN: | |||
01:6529 18 18 (Y-loc, X-loc) -> Upper left corner | |||
01:652B 18 40 (Y-loc, X-loc) -> Top right corner | |||
01:652D 40 18 (Y-loc, X-loc) -> Lower left corner | |||
01:652F 40 40 (Y-loc, X-loc) -> Lower right corner | |||
ICEMAN: | |||
01:6531 18 68 (Y-loc, X-loc) -> Upper left corner | |||
01:6533 18 90 (Y-loc, X-loc) -> Top right corner | |||
01:6535 40 68 (Y-loc, X-loc) -> Lower left corner | |||
01:6537 40 90 (Y-loc, X-loc) -> Lower right corner | |||
ELECMAN: | |||
01:6539 68 18 (Y-loc, X-loc) -> Upper left corner | |||
01:653B 68 40 (Y-loc, X-loc) -> Top right corner | |||
01:653D 90 18 (Y-loc, X-loc) -> Lower left corner | |||
01:653F 90 40 (Y-loc, X-loc) -> Lower right corner | |||
FIREMAN: | |||
01:6541 68 68 (Y-loc, X-loc) -> Upper left corner | |||
01:6543 68 90 (Y-loc, X-loc) -> Top right corner | |||
01:6545 90 68 (Y-loc, X-loc) -> Lower left corner | |||
01:6547 90 90 (Y-loc, X-loc) -> Lower right corner | |||
</pre> | |||
*0x6549-73AA ??? | |||
*0x73AB-7FFF Unused | |||
==Bank 2: Unknown (Music?)== | ==Bank 2: Unknown (Music?)== | ||
Line 106: | Line 175: | ||
==Bank F: Unused== | ==Bank F: Unused== | ||
*0x3C000-3FFFF Unused | *0x3C000-3FFFF Unused | ||
{{Internal Data|game=Mega Man in Dr. Wily's Revenge}} | |||
Latest revision as of 19:59, 25 January 2024
The following article is a ROM map for Mega Man: Dr. Wily's Revenge.
Bank 0: Unknown
- 0x 0000- 3978 ???
- 420- 5BF Alphabet gfx??
- 857-85B Put initial Weapon in RAM Address: DFA1
00:0857 3E 01 ld a,$01 (a=$01=Initial Weapon="P") 00:0859 EA A1 DF ld [$DFA1],a (Put the value $01="P" in $DFA1=Weapon)
- B26-B2A Put initial Energy value in RAM Address: DFA3
00:0B26 3D 98 ld a,$98 (a=$98=Initial energy) 00:0B28 EA A3 DF ld [$DFA3],a (Put the value $98 in $DFA3=Energy)
- BCA-BCF Decrease lives
00:0BCA 21 08 C1 ld hl,$C108 (Load in hl the Address $C108=Lives) 00:0BCD 34 dec [hl] (Decrease the value into the Address $C108=Lives) 00:0BCE 28 23 jr z,$0BF3 (Jump if is zero to the Address 00:0BF3) Note: If you change the instruction in 00:0BC4 you can have infinite lives. 00:0BCD 00 nop (NOt Operation) The value of lives don´t decrease.
- CCE-CD2 Put initial lives of the game
00:0CCE 3E 03 ld a,$03 (a=$03=Initial lives of the game) 00:0CD0 EA 08 C1 ld [$C108],a (Put the value $03 in the Addres $C108=Lives) Notes: You can have mor lives if you change the instruction in 00:0CCE. For example: 00:0CCE 3E 09 ld a,$09 The initial value of lives is 9. You have more lives.
- 157F-15B8: Joypad subroutine
- 15D4-15E1: Put OAM DMA Transfer subroutine in internal RAM: $FF80-$FF89
00:15D4 0E 80 ld c,$80 (c=$80) 00:15D6 06 0A ld b,$0A (b=$0A=10=Size of OAM DMA Transfer Subroutine) 00:15D8 21 E2 15 ld hl,$15E2 (Put in hl the address $00:15E2 where is the OAM DMA Transfer subroutine in ROM) 00:15DB 2A ldi a,[hl] (Put in A the value in address given in hl=Subroutine OAM DMA Transfer in ROM and increases hl) 00:15DC E2 ld [$FF00+c],a (Put the value of A in the Address $FF00+c=Internal RAM) 00:15DD 0C inc c (Increases c) 00:15DE 05 dec b (Decrease b=Bytes to be written in Internal RAM of the OAM DMA Transfer Subroutine) 00:15DF 20 FA jr nz,$15DB (If not zero then jump to address $00:15DB to write other byte of the subroutine in the internal RAM) 00:15E1 C9 ret (Return of the subroutine)
- 15E2-15EB: OAM DMA Tranfer subrotuine
- 20E1-2108: Name enemies
- 0x 3979- 3FFF Unused
Bank 1: Unknown
- 0x 4000-5765 ???
- 0x 5766-5772: Increases the lives
01:5766 21 08 C1 ld hl,$C108 (Put in hl the address $C108=Lives) 01:5769 7E ld a,[hl] (Put in A the value in address $C108=Lives) 01:576A 3C inc a (Increases a) 01:576B FE 0A cp a,$0A (Compare the value of A=Lives with $0A=10 decimal=Maximum value of lives?) 01:576D 38 02 jr c,$5771 (Jump if carry to address $01:5771) 01:576F 3E 0A ld a,$0A (Put in A the value $0A=10 decimal) 01:5771 77 ld [hl],a (Put the value $0A=10 decimal in the address $C108=Lives) 01:5772 C9 ret (Return of the subroutine)
- 0x 5773-615F: Put data of triangle tile that represents the menu icon:
01:6160 1E 60 ld e,$60 (Put in E the value $60=Y coordinate for choice "GAME START") 01:6162 28 02 jr z,$6166 (Jump if is zero to address $01:6166) 01:6164 1E 68 ld e,$68 (Put in E the value $68=Y coordinate for choice "PASS WORD") 01:6166 21 00 C0 ld hl,$C000 (Put in hl the Addres $C000=RAM=Y Coordinate=Copy of OAM) 01:6169 73 ld [hl],e (Put the value $68 in the address in hl=$C000=Coordinate Y) 01:616A 2C inc l (Increases l=$00+$01=$01. hl=$C001) 01:616B 36 30 ld [hl],$30 (Put the value $30 in the address in hl=$C001=Coordinate X) 01:616D 2C inc l (Increases l=$01+$01=$02. hl=$C002) 01:616E 36 00 ld [hl],$00 (Put the value $00=Triangle tile that represents the menu icon in the address $C002) 01:6170 2C inc l (Increases l=$02+$01=$03. hl=$C003) 01:6171 36 00 ld [hl],$00 (Put the value $00 in the address $C003=Attribute of the tile) 01:6173 C9 ret (Return of the subroutine) Note: Each tile needs 4 bytes: Y-coord (1 byte), X-coord (1 byte), Tile (1 byte), Attribute (1 byte)
- 0x 6174-6528 ???
- 0x6529-6548: X and Y coordinates of points in the box at the level selection screen
CUTEMAN: 01:6529 18 18 (Y-loc, X-loc) -> Upper left corner 01:652B 18 40 (Y-loc, X-loc) -> Top right corner 01:652D 40 18 (Y-loc, X-loc) -> Lower left corner 01:652F 40 40 (Y-loc, X-loc) -> Lower right corner ICEMAN: 01:6531 18 68 (Y-loc, X-loc) -> Upper left corner 01:6533 18 90 (Y-loc, X-loc) -> Top right corner 01:6535 40 68 (Y-loc, X-loc) -> Lower left corner 01:6537 40 90 (Y-loc, X-loc) -> Lower right corner ELECMAN: 01:6539 68 18 (Y-loc, X-loc) -> Upper left corner 01:653B 68 40 (Y-loc, X-loc) -> Top right corner 01:653D 90 18 (Y-loc, X-loc) -> Lower left corner 01:653F 90 40 (Y-loc, X-loc) -> Lower right corner FIREMAN: 01:6541 68 68 (Y-loc, X-loc) -> Upper left corner 01:6543 68 90 (Y-loc, X-loc) -> Top right corner 01:6545 90 68 (Y-loc, X-loc) -> Lower left corner 01:6547 90 90 (Y-loc, X-loc) -> Lower right corner
- 0x6549-73AA ???
- 0x73AB-7FFF Unused
Bank 2: Unknown (Music?)
- 0x 8000- BCA1
- 0x BCA2- BFFF Unused
Bank 3: Unknown
- 0x C000- FBE4 ???
- 0x FBE5- FFFF Unused
Bank 4: Main Sprite Graphics
- 10060-123FF Graphics (Mega Man, Status Bar, Enemies)
- 0x12FE0-13FFF Unused
Bank 5: Robot Master Level Data
- 0x14000-14007 - Pointer List
- 0x14008-1492E - Cut Man
- 0x1492F-15259 - Ice Man
- 0x1525A-15F71 - Fire Man
- 0x15F72-16AAC - Elec Man
- 0x16AAD-17FFF - Unused
- 0x17000-17FFF Unused
Bank 6: Static Screen Data
- 0x18000-1BBB6 ??? GFX: Static Screen Data
- 0x1803C-18148 - Menu texts
- 0x1814B-18226 - Title screen data
- 0x1BBB7-1BFFF Unused
Bank 7: Robot Master Graphics
- 0x1C000-1F812 ??? Boss GFX (Cu,Ic,El,Fi,En,Bu,Fl,He,Qu,Wily)
- 0x1F813-20000 Unused
Bank 8: Wily 1 Data
- 0x20001-23828 Wily 1 Level Data?
- 0x2134A-21809 Teleporter area gfx
- 0x23829-23FFF Unused
Bank 9: Unknown
- 0x24000-27D31 ???
- 0x27D32-27FFF Unused
Bank A: Unknown
- 0x28000-2B20C ???
- 0x2B20D-2BFFF Unused
Bank B: Unknown
- 0x2C000-2D5CF ???
- 0x2D5D0-2FFFF Unused
Bank C: Level Graphics
- 0x30000-33395 Level GFX
- 0x33396-33FFF Unused
Bank D: Unknown
- 0x34000-36310 ???
- 0x36311-37FFF Unused
Bank E: Ending Data
- 0x38000-3BBAF ???
- ~39000 Ending GFX
- 0x3BBB0-3BFFF Unused
Bank F: Unused
- 0x3C000-3FFFF Unused
Internal Data for Mega Man in Dr. Wily's Revenge
| |
---|---|