diff --git a/Overworld/world_map.asm b/Overworld/world_map.asm new file mode 100644 index 0000000..a616b50 --- /dev/null +++ b/Overworld/world_map.asm @@ -0,0 +1,423 @@ +; 0x0C4000 to 0x0C8000 for the map gfx so you patch a new rom with your map data/gfx and you create a new bin file out of these bytes +; OverworldMap.asm you can copy everything from start to line 214 i think +; and 264 to 272 if you want palettes in asm too + +; 0AC727 (pc: 054727) +; to 0AD726 (pc: 055726) +; it should be 0x1000 bytes big +; ============================================================================== +; LW OVERWORLD MAP +; ============================================================================== + +org $008E54 ;STZ $2115 + JSL DMAOwMap + RTS + +org $00E399 + JSL DMAOwMapGfx + RTL + +; ============================================================================== +; DW OVERWORLD MAP +; ============================================================================== +org $008FF3 + RTS ; do not do anything during the DW update we'll handle it in the LW routine + +org $3D8000 + LWWorldMap_Tiles: + incbin world_map/LWMapTileset.bin + + LWWorldMap_Gfx: + incbin world_map/LWMapGfx.bin + +org $3E8000 + DWWorldMap_Tiles: + incbin world_map/DwMapTileset.bin + + DWWorldMap_Gfx: + incbin world_map/DWMapGfx.bin + +DMAOwMap: +{ + LDA $8A : AND #$40 : BEQ .LWMAP + JMP .DWMAP + + .LWMAP + + STZ.w $2115 + + LDA.b #LWWorldMap_Tiles>>16 + STA.w $4304 + + REP #$20 + + LDA.w #$1800 + STA.w $4300 + + STZ.b $04 + STZ.b $02 + + LDY.b #$01 + LDX.b #$00 + + .next_quadrant + + LDA.w #$0020 + STA.b $06 + + LDA.l .vram_offset,X + STA.b $00 + + .next_row + + LDA.b $00 + STA.w $2116 + + CLC + ADC.w #$0080 + STA.b $00 + + LDA.b $02 + CLC + ADC.w #LWWorldMap_Tiles + STA.w $4302 + + LDA.w #$0020 + STA.w $4305 + + STY.w $420B + + CLC + ADC.b $02 + STA.b $02 + + DEC.b $06 + BNE .next_row + + INC.b $04 + INC.b $04 + + LDX.b $04 + CPX.b #$08 + BNE .next_quadrant + + SEP #$20 + + RTL + + .vram_offset + dw $0000, $0020, $1000, $1020 + + .DWMAP + + STZ.w $2115 + + LDA.b #DWWorldMap_Tiles>>16 + STA.w $4304 + + REP #$20 + + LDA.w #$1800 + STA.w $4300 + + STZ.b $04 + STZ.b $02 + + LDY.b #$01 + LDX.b #$00 + + .next_quadrant2 + + LDA.w #$0020 + STA.b $06 + + LDA.l .vram_offset,X + STA.b $00 + + .next_row2 + + LDA.b $00 + STA.w $2116 + + CLC + ADC.w #$0080 + STA.b $00 + + LDA.b $02 + CLC + ADC.w #DWWorldMap_Tiles + STA.w $4302 + + LDA.w #$0020 + STA.w $4305 + + STY.w $420B + + CLC + ADC.b $02 + STA.b $02 + + DEC.b $06 + BNE .next_row2 + + INC.b $04 + INC.b $04 + + LDX.b $04 + CPX.b #$08 + BNE .next_quadrant2 + + SEP #$20 + + RTL +} + + +DMAOwMapGfx: +{ + LDA $8A : AND #$40 : BNE .DWMAP + LDA.b #LWWorldMap_Gfx>>16 : STA $02 + + LDA.b #$80 : STA $2115 + + STZ $2116 : STZ $2117 + + REP #$10 + + LDY.w #LWWorldMap_Gfx : STY $00 + + LDY.w #$0000 + + .writeChr + + LDA [$00], Y : STA $2119 : INY + LDA [$00], Y : STA $2119 : INY + LDA [$00], Y : STA $2119 : INY + LDA [$00], Y : STA $2119 : INY + CPY.w #$4000 : BNE .writeChr + + SEP #$10 + + RTL + + .DWMAP + + LDA.b #DWWorldMap_Gfx>>16 : STA $02 + + LDA.b #$80 : STA $2115 + + STZ $2116 : STZ $2117 + + REP #$10 + + LDY.w #DWWorldMap_Gfx : STY $00 + + LDY.w #$0000 + + .writeChr2 + + LDA [$00], Y : STA $2119 : INY + LDA [$00], Y : STA $2119 : INY + LDA [$00], Y : STA $2119 : INY + LDA [$00], Y : STA $2119 : INY + CPY.w #$4000 : BNE .writeChr2 + + SEP #$10 + + RTL +} + +org $0ADC27 + DWPalettes: + incbin world_map/dw_palette.bin + +org $0AC589 + WorldMapIcon_AdjustCoordinate: + +org $0AC51C + WorldMap_HandleSpriteBlink: + +org $0ABF90 +MapIconDraw: +{ + ; .dont_draw_link + LDA.l $7EC108 + PHA + + LDA.l $7EC109 + PHA + + LDA.l $7EC10A + PHA + + LDA.l $7EC10B + PHA + +;Removed mirror portal draw code + +;Removed pyramid open code? + +;--------------------------------------------------------------------------------------------------- + + .draw_prizes + LDA.b $8A : AND.b #$40 : BEQ .lwprizes + ; X position + LDA.b #$00 : STA.l $7EC10B + LDA.b #$89 : STA.l $7EC10A ; Upper nybble control Zoomed low X pos + ; Y position + LDA.b #$00 : STA.l $7EC109 + LDA.b #$E4 : STA.l $7EC108 ; Upper nybble control Zoomed low Y pos + ; Tile GFX + LDA.b #$66 : STA.b $0D + LDA.b #$34 : STA.b $0C + ; Tile Size + LDA.b #$02 : STA.b $0B ; 02 = 16x16, 00 = 8x8 + LDA.b #$0E : STA.l $7EC025 ; OAM Slot used + + JSR HandleMapDrawIcon + + JMP restore_coords_and_exit + + .lwprizes + + ; Draw Amulet 1 + LDA.l $7EF374 : AND #$04 : BNE .skip_draw_0 + ; X position + LDA.b #$0E : STA.l $7EC10B + LDA.b #$3E : STA.l $7EC10A + ; Y position + LDA.b #$04 : STA.l $7EC109 + LDA.b #$68 : STA.l $7EC108 + ; Tile GFX + LDA.b #$60 : STA.b $0D + LDA.b #$38 : STA.b $0C + ; Tile Size + LDA.b #$02 : STA.b $0B ; 02 = 16x16, 00 = 8x8 + LDA.b #$0E : STA.l $7EC025 ; OAM Slot used + JSR HandleMapDrawIcon + + .skip_draw_0 + + + ; Draw Amulet 2 + LDA.l $7EF374 : AND #$02 : BNE .skip_draw_1 + ; X position + LDA.b #$0D : STA.l $7EC10B + LDA.b #$05 : STA.l $7EC10A + ; Y position + LDA.b #$0D : STA.l $7EC109 + LDA.b #$09 : STA.l $7EC108 + + LDA.b #$60 : STA.b $0D + LDA.b #$34 : STA.b $0C ; Tile GFX + + LDA.b #$02 : STA.b $0B ; 02 = 16x16, 00 = 8x8 + LDA.b #$0D : STA.l $7EC025 + + JSR HandleMapDrawIcon + + .skip_draw_1 + + ; Draw Amulet 3 + LDA.l $7EF374 : AND #$01 : BNE .skip_draw_2 + ; X position + LDA.b #$09 : STA.l $7EC10B + LDA.b #$34 : STA.l $7EC10A + ; Y position + LDA.b #$00 : STA.l $7EC109 + LDA.b #$0E : STA.l $7EC108 + + LDA.b #$60 : STA.b $0D + LDA.b #$32 : STA.b $0C ; Tile GFX + + LDA.b #$02 : STA.b $0B ; 02 = 16x16, 00 = 8x8 + LDA.b #$0C : STA.l $7EC025 + + JSR HandleMapDrawIcon + + .skip_draw_2 + + + ; Draw Amulet 4 + ; LDA.l $7EF37A : AND #$01 : BNE .skip_draw_3 + ; ; X position + ; LDA.b #$00 : STA.l $7EC10B + ; LDA.b #$87 : STA.l $7EC10A + ; ; Y position + ; LDA.b #$06 : STA.l $7EC109 + ; LDA.b #$01 : STA.l $7EC108 + + ; LDA.b #$60 : STA.b $0D + ; LDA.b #$3C : STA.b $0C ; Tile GFX + + ; LDA.b #$02 : STA.b $0B ; 02 = 16x16, 00 = 8x8 + ; LDA.b #$0B : STA.l $7EC025 + + ; JSR HandleMapDrawIcon + + ; .skip_draw_3 + + ; ; Draw Flute X + ; LDA.l $7EF34C : CMP #$01 : BNE .skip_draw_flute + ; ; X position + ; LDA.b #$09 : STA.l $7EC10B + ; LDA.b #$00 : STA.l $7EC10A + ; ; Y position + ; LDA.b #$02 : STA.l $7EC109 + ; LDA.b #$74 : STA.l $7EC108 + + ; LDA.b #$68 : STA.b $0D + ; LDA.b #$3C : STA.b $0C ; Tile GFX + + ; LDA.b #$00 : STA.b $0B ; 02 = 16x16, 00 = 8x8 + ; LDA.b #$0A : STA.l $7EC025 + + ; JSR HandleMapDrawIcon_noflash + + ; .skip_draw_flute + + JMP restore_coords_and_exit +} + +HandleMapDrawIcon: +{ + LDA.b $1A + AND.b #$10 + BNE .skip_draw ; Timer to make it flash + .noflash ; ALTERNATE ENTRY POINT + + JSR WorldMapIcon_AdjustCoordinate + LDA.l $7EC025 : TAX + JSR WorldMap_CalculateOAMCoordinates + + BCC .skip_draw + LDA.l $7EC025 : TAX + LDA.b #$02 + JSR WorldMap_HandleSpriteBlink + + .skip_draw + + RTS +} + +warnpc $0AC387 + +org $0AC38A +{ + restore_coords_and_exit: + PLA + STA.l $7EC10B + + PLA + STA.l $7EC10A + + PLA + STA.l $7EC109 + + PLA + STA.l $7EC108 + + RTS +} + +WorldMap_CalculateOAMCoordinates: \ No newline at end of file diff --git a/Overworld/world_map/DwMapGfx.bin b/Overworld/world_map/DwMapGfx.bin new file mode 100644 index 0000000..4da659b --- /dev/null +++ b/Overworld/world_map/DwMapGfx.bin @@ -0,0 +1 @@ +AAAAAAAAAAAAAAAAA''''A''''A'''''AAAAAAAAAAAAAAAAAAAAAAAA'''''''''''''''''''''AAAAAAAAAAAAAAAAAAAAA'''''AA'''''''A''''''A••••••••••••-••-•••••--•••••-••-•••••--••-••--••-•••••$$••$$••••$$•$$•$•$$••••$$$•••$$$$$•••$$$••$$•$$•••••$$••••$$$•$$$$$$•DDDDDDDD8888888D8D8D8D8D8D8D8D8D8D8D8D8D8D8DGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGA'''''A'''''A''''A''''A'''''A''''A'''''A''''''''''''''''''''''''•'•''''•'•••'''•••••'''''•'''''•••'''''''''''''A'''''''A'''''''A''''''A'''''''A''''''A''''''A'''''''A••••••-•••--••••-•••-•••••----••--••••-•••-•••••••-•••-•••••-•••-----ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ•$$$$$•••$$$•••••$•$••$•$$$••••$$$••$$$$$$$$•$$$$••••••••••••$•$$$•$••••$•••$$$$$DDDDDDDDD8888888D8D8D8D8D8D88D8D8D8D8D8D8888888DDDDDDDDDD8D8D8D8D8D8D8D8DDDDDDDD88888888A'''''A'''''A''''A'''''A''''A'''AAAA''''''''''''''''''''''''''''''''''''''''''''AAAAAAAA'''''''A'''''''A''''''A'''''''A''''''A''''''AAAAAAA•••••-••-•---••••••D8D8D8D8D8D8D8888888DDDDDDDD88888888DDDDDDDDGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA••••••---•••••••••••••••••••››››•››››•››››••››››•››››•••••›››››•›››››•›››››•›››››••›››››•AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA•››››••››››•••••••›••••••••••••›››››•›››››•••••••••›••••••••••••••AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA•••••›•••••›••››•••••••••••AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA•••••''''•''''•''''••''''•''''•••••'''''•'''''•'''''•'''''••'''''••••••----•----•----••----•----••••-----•-----•-----•-----••-----•AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA•''''••''''•••••••'••••••••••••'''''•'''''•••••••••'•••••••••••••••----••----•••••••-••••••••••••-----•-----•••••••••-••••••••••••••AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA''''A'''''A''''A''''A'''''AAAAAAAAAAAAAAAAAAAAAAAA'''''''''''''''''''''''''''''''''''''AAAAAAAAAAAAAAAAAAAAAAAA'''''A'''''A''''''A'''''A''''''AAAAAAAAAAAAAAAAAAAAAAA''AAAAAA••••••---••••••••••••••A'''''A'''''A''''A'''''A''''A'''AAAA''''''''''''''''''''''''''''''''''''''''''''AAAAAAAA''''''A'''''''A''''''A'''''''A''''''A''''''AAAAAAA••••••---••••••••••••••A'AA'AA'AA'AA'AA'AAAA'AAAA'''''AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\AAAAA\A\AAAAAAAAAAAAAA\AAAAAAAAAAAAA\AA\\\\\AAAAAAAAA\\\AAAAAAAAAAAAAAA\\\AAAAAA\AAAAAAA\AAAAAAAAAAAAAAAAAAAAAAAAAAA\\A\\AA\AAA\AA\AAA\AA\\\\\AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\A\\\A\AAAA\AAAAAAA\AAAA\\\\\\\AAA\\AAAAAA\\AAAAAAAAAAAAAAA\\AAA\\AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\\\\AAA\\\\\AAA\\\\\AAA\\\\\AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\AA\\\\AA\\\\AAAAAA\AAAAAAAAAAA\\\\\AAAAAA\AAAAAAA\AAAAAAA\AAA\\\AAAAAAAAAAAAAAAA\AAA\AAA\AAAAAAA\AAAAAA\\AAAAAA\\AAAAAA\\AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\AAAAA\AAAAAA\AAAA\AAAAAAAAAAAA\\AAAA\\AAAAAA\\AAAA\\\\AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\\\AAAA\\\\AAAA\\\\A\\\\\\\'''''A'''''AA''''AA'''''AA''''''A'''''A'''''A'''''AAAAA'''A'''''A''''A''''AAAAAAAAAAAAAAAA//////€€//////€€////€€€€////€€€€//€€€€//AAAA////€€////€€////€€€€//AAAAAAAAAAAAA\AAAAAA\AAAAAA\AƒƒƒA\\\ƒƒƒA\\\AAAA\\\\\\\\\\AAAAAAAAAAAAAAAAAAAAAAAAAA\AAAA\\\AAAA\A\AAAA\A\\\\\\AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAƒƒƒƒƒƒƒAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAƒƒƒƒƒƒƒAAAAAAAAAAAAAA\AA\A\AA\A\AAAAA\AAAAAAAAAA\\\AA\\\AAAAAAAAAA\\\AƒA\A\\AAƒAAA\\AƒƒƒƒAAAAƒƒƒƒAƒƒƒƒƒƒƒAƒƒƒƒƒƒƒAƒƒƒƒƒƒƒAAAAAAAAA\\\AƒƒAAAAAAƒƒAƒƒƒƒƒƒƒAƒƒƒƒƒƒƒAƒƒƒƒƒƒƒAƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ'''''A'''''A''''AA'''''AAA''''''AA''''''A'''''''''''''''A''''AA'''''AAA'''''AA''''A'''''''''''''''''''''//€€€€////€€//////€€//////€€//////€€////////////////////€€€€////€€////€€////€€////€€//////////////AAAAAAAAAAAAAAAAAAAA\\AAA\\A\\AAA\\AAAAAAAAA\AA\AAAAAAAAAAA\\\AAAAA\\\AAAA\\\AAAAAAAAAAAAAA\A\AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\\\\AA\\\\\AA\\\\\AA\\\\\\AA\\\\\AAAAAAAAAAAAA\\AAAAAA\\AA\\\\\\A\\\\\\\A\\\\\\A\\\\\\AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\AAAA\AAAA\\AAAAAA\\AAA\\\\AAAAAAAAAAAAAAAAAAAAAAAAA\AAAA\AAAAAAAAAAAAAAAAA\\AAAAAA\\AAAAA\\\\\AAA\\\\\AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''AAAAAAAAAAAAƒƒAAAAƒƒAAƒƒƒƒAAƒƒƒƒAAAAAAAAAAAAAAAAƒƒAAAAAAƒƒAAAAAAƒƒƒƒAAAAƒƒƒƒAAAAAAƒƒƒƒAAAAƒƒƒƒAAAAAAAAA\A\AAAAAAAAAAA\A\AAAAAAAA\AA\A\A\AAAAAAAAA\A\AAAAAA\AA\AAAAAA\AA\AAAAAA\AA\AAAAAA\AA\AAAAAAAA\A\AAAAAAAAA\A\AAAAAAAAAAA\A\AA\AAAAAA\A\A\AAAAAAA\AA\AAAAAA\\\AA\\\\\\AAA\AAAAAA\AAAAAAAAA\\\AAA\\\\\AA\\\\\AAA\\\\\AAA\\\\\AA\\\\\AA\\\\\\AA\\\\\AA\\\\\\AAAAAAAAAAAAAAAAAAAAAAAA\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\AAAAAAAAAA\\\\\A\A\\\\\A\\\AAAA\\\\AA\\AAAA\\AAA\AAAAAAAAAAAA\\\AA\\\AA\\AAA\\AAA\\AAA\\AAAAAAAAAAA\AA\\\\A\AA\\\\AAAAAA\\AAAAAA\\AAAAAA\\AAAAAA\\AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA''''''AAƒƒAAAAƒƒAAAAƒƒAAAAƒƒAAAAAAAAAAAAAAAAAAƒƒAAAAAAƒƒAAAAAAƒƒAAAAAAƒƒAAAAAAAAAAAAAAAAAAAAAAAAAAA\AA\AAAAAA\AA\AAAAAAAAAAAAAAAAAAAAA\\\\\\A›››››››A›A››››\A›››››››\›››››››››››››››››\››››››››››\›››AA\\\\\AAA››››››AA\›››››\\›››››››››››››››››››››››\››››››››››\›››››››››››››››››››››››››››››››››››\\’›››’\›››A›››››››››\››››››››››AAAAAAAAAAAAAAAAAAAAAAAAAA›’\’›A\\’›››’\›››A›››››››››\››››››››››AAAAAAAAAAAAAAAAAAAAAAAAAA›’\’›A\\’›››’\›››››››››\››››››››››\›››p \ No newline at end of file diff --git a/Overworld/world_map/DwMapTileset.bin b/Overworld/world_map/DwMapTileset.bin new file mode 100644 index 0000000..683f4a1 Binary files /dev/null and b/Overworld/world_map/DwMapTileset.bin differ diff --git a/Overworld/world_map/LwMapGfx.bin b/Overworld/world_map/LwMapGfx.bin new file mode 100644 index 0000000..1499b47 Binary files /dev/null and b/Overworld/world_map/LwMapGfx.bin differ diff --git a/Overworld/world_map/LwMapTileset.bin b/Overworld/world_map/LwMapTileset.bin new file mode 100755 index 0000000..17fbc8d Binary files /dev/null and b/Overworld/world_map/LwMapTileset.bin differ