Welcome to Data Crystal's new home! Data Crystal is now part of the TCRF family (sort of).
The wiki has recently moved; please report any issues in Discord. Pardon the dust.

Mega Man: Dr. Wily's Revenge/ROM map: Difference between revisions

From Data Crystal
Jump to navigation Jump to search
mNo edit summary
 
(One intermediate revision by one other user not shown)
(No difference)

Latest revision as of 19:59, 25 January 2024

Chip tiny.png 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