Difference between revisions of "Mega Man in Dr. Wily's Revenge:ROM map"

From Data Crystal
Jump to navigation Jump to search
Line 55: Line 55:
  
 
==Bank 1: Unknown==
 
==Bank 1: Unknown==
*0x 4000- 738C ???
+
*0x 4000-5765 ???
*0x 738D- 7FFF Unused
+
*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- 7FFF Unused
  
 
==Bank 2: Unknown (Music?)==
 
==Bank 2: Unknown (Music?)==

Revision as of 13:56, 18 November 2010

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- 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