cleanup world map module
This commit is contained in:
@@ -1,13 +1,276 @@
|
||||
; 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
|
||||
; =========================================================
|
||||
; World Map Module
|
||||
|
||||
org $0AC589
|
||||
WorldMapIcon_AdjustCoordinate:
|
||||
|
||||
org $0AC51C
|
||||
WorldMap_HandleSpriteBlink:
|
||||
|
||||
; Map icon
|
||||
; 0x00 - Red X on castle | Save zelda
|
||||
; 0x01 - Red X on Kakariko | Talk to villagers about elders
|
||||
; 0x02 - Red X on Eastern | Talk to Sahasrahla
|
||||
; 0x03 - Pendants and MS | Obtain the master sword
|
||||
; 0x04 - Master sword on LW | Grab the master sword
|
||||
; 0x05 - Skull on castle | Kill Agahnim
|
||||
; 0x06 - Crystal on POD | Get the first crystal
|
||||
; 0x07 - Crystals | Get all 7 crystals
|
||||
; 0x08 - Skull on GT | Climb Ganon's Tower
|
||||
MAPICON = $7EF3C7
|
||||
|
||||
; Removed mirror portal draw and pyramid open code
|
||||
org $0ABF90
|
||||
MapIconDraw:
|
||||
{
|
||||
; .dont_draw_link
|
||||
LDA.l $7EC108
|
||||
PHA
|
||||
|
||||
LDA.l $7EC109
|
||||
PHA
|
||||
|
||||
LDA.l $7EC10A
|
||||
PHA
|
||||
|
||||
LDA.l $7EC10B
|
||||
PHA
|
||||
|
||||
;-----------------------------------
|
||||
|
||||
.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 Crystal 1
|
||||
LDA.l $7EF37A : AND #$02 : BNE .skip_draw_0
|
||||
; X position
|
||||
LDA.b #$00 : STA.l $7EC10B
|
||||
LDA.b #$87 : STA.l $7EC10A
|
||||
; Y position
|
||||
LDA.b #$04 : STA.l $7EC109
|
||||
LDA.b #$01 : STA.l $7EC108
|
||||
; Tile GFX
|
||||
LDA.b #$64 : 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 Crystal 2
|
||||
LDA.l $7EF37A : AND #$10 : BNE .skip_draw_1
|
||||
; X position (2)
|
||||
LDA.b #$1E : STA.l $7EC10B
|
||||
LDA.b #$A0 : STA.l $7EC10A
|
||||
; Y position (2)
|
||||
LDA.b #$09 : STA.l $7EC109
|
||||
LDA.b #$74 : STA.l $7EC108
|
||||
|
||||
LDA.b #$64 : STA.b $0D
|
||||
LDA.b #$34 : STA.b $0C ; Tile GFX
|
||||
|
||||
LDA.b #$02 : STA.b $0B ; 02 = 16x16, 00 = 8x8
|
||||
LDA.b #$08 : STA.l $7EC025
|
||||
|
||||
JSR HandleMapDrawIcon
|
||||
|
||||
.skip_draw_1
|
||||
|
||||
; Draw Crystal 3
|
||||
LDA.l $7EF37A : AND #$40 : BNE .skip_draw_2
|
||||
; X position
|
||||
LDA.b #$08 : STA.l $7EC10B
|
||||
LDA.b #$10 : STA.l $7EC10A
|
||||
; Y position
|
||||
LDA.b #$04 : STA.l $7EC109
|
||||
LDA.b #$0E : STA.l $7EC108
|
||||
|
||||
LDA.b #$64 : 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_2
|
||||
|
||||
|
||||
; Draw Crystal 4
|
||||
LDA.l $7EF37A : AND #$01 : BNE .skip_draw_3
|
||||
; X position
|
||||
LDA.b #$0E : STA.l $7EC10B
|
||||
LDA.b #$5E : STA.l $7EC10A
|
||||
; Y position
|
||||
LDA.b #$06 : STA.l $7EC109
|
||||
LDA.b #$68 : STA.l $7EC108
|
||||
|
||||
LDA.b #$64 : 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 Crystal 5
|
||||
LDA.l $7EF37A : AND #$20 : BNE .skip_draw_4
|
||||
; X position
|
||||
LDA.b #$0C : 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 #$64 : STA.b $0D
|
||||
LDA.b #$34 : STA.b $0C ; Tile GFX
|
||||
|
||||
LDA.b #$02 : STA.b $0B ; 02 = 16x16, 00 = 8x8
|
||||
LDA.b #$09 : STA.l $7EC025
|
||||
|
||||
JSR HandleMapDrawIcon
|
||||
|
||||
.skip_draw_4
|
||||
|
||||
; Draw Crystal 6
|
||||
LDA.l $7EF37A : AND #$04 : BNE .skip_draw_5
|
||||
; X position (6)
|
||||
LDA.b #$0D : STA.l $7EC10B
|
||||
LDA.b #$05 : STA.l $7EC10A
|
||||
; Y position (6)
|
||||
LDA.b #$0D : STA.l $7EC109
|
||||
LDA.b #$09 : STA.l $7EC108
|
||||
|
||||
LDA.b #$64 : STA.b $0D
|
||||
LDA.b #$32 : STA.b $0C ; Tile GFX
|
||||
|
||||
LDA.b #$02 : STA.b $0B ; 02 = 16x16, 00 = 8x8
|
||||
LDA.b #$0A : STA.l $7EC025
|
||||
|
||||
JSR HandleMapDrawIcon
|
||||
.skip_draw_5
|
||||
|
||||
; Draw Crystal 7
|
||||
LDA.l $7EF37A : AND #$08 : BNE .skip_draw_6
|
||||
; X position
|
||||
LDA.b #$00 : STA.l $7EC10B
|
||||
LDA.b #$F4 : STA.l $7EC10A
|
||||
; Y position
|
||||
LDA.b #$0D : STA.l $7EC109
|
||||
LDA.b #$0E : STA.l $7EC108
|
||||
|
||||
LDA.b #$64 : 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_6
|
||||
|
||||
; ; Hall of Secrets X
|
||||
; LDA.l $7EF37A : AND #$20 : BNE .skip_draw_x
|
||||
; ; X position
|
||||
; LDA.b #$0D : STA.l $7EC10B
|
||||
; LDA.b #$00 : STA.l $7EC10A
|
||||
; ; Y position
|
||||
; LDA.b #$03 : STA.l $7EC109
|
||||
; LDA.b #$54 : STA.l $7EC108
|
||||
|
||||
; LDA.b #$68 : STA.b $0D
|
||||
; LDA.b #$34 : STA.b $0C ; Tile GFX
|
||||
|
||||
; LDA.b #$00 : STA.b $0B ; 02 = 16x16, 00 = 8x8
|
||||
; LDA.b #$07 : STA.l $7EC025
|
||||
|
||||
; JSR HandleMapDrawIcon_noflash
|
||||
; .skip_draw_x
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
FixMaskPaletteOnExit:
|
||||
{
|
||||
JSL Palette_ArmorAndGloves
|
||||
LDA.l $7EC229
|
||||
RTL
|
||||
}
|
||||
|
||||
org $0ABC76
|
||||
JSL FixMaskPaletteOnExit
|
||||
|
||||
org $0AC589
|
||||
RTS
|
||||
|
||||
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:
|
||||
|
||||
; =========================================================
|
||||
; Gfx Notes
|
||||
|
||||
; 0x0C4000 to 0x0C8000 for the map gfx
|
||||
; patch a new rom with your map data/gfx
|
||||
; create a new bin file out of these bytes
|
||||
; OverworldMap.asm you can copy everything from start to line 214
|
||||
; and 264 to 272 if you want palettes in asm too
|
||||
|
||||
; 0AC727 (pc: 054727)
|
||||
; to 0AD726 (pc: 055726)
|
||||
; it should be 0x1000 bytes big
|
||||
; ==============================================================================
|
||||
; 0AC727 (pc: 054727) to 0AD726 (pc: 055726) 0x1000 bytes
|
||||
|
||||
; =========================================================
|
||||
; LW OVERWORLD MAP
|
||||
; ==============================================================================
|
||||
; =========================================================
|
||||
|
||||
org $008E54 ;STZ $2115
|
||||
JSL DMAOwMap
|
||||
@@ -17,9 +280,9 @@ 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
|
||||
|
||||
@@ -231,260 +494,3 @@ DMAOwMapGfx:
|
||||
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 Crystal 1
|
||||
LDA.l $7EF37A : AND #$02 : BNE .skip_draw_0
|
||||
; X position
|
||||
LDA.b #$00 : STA.l $7EC10B
|
||||
LDA.b #$87 : STA.l $7EC10A
|
||||
; Y position
|
||||
LDA.b #$04 : STA.l $7EC109
|
||||
LDA.b #$01 : STA.l $7EC108
|
||||
; Tile GFX
|
||||
LDA.b #$64 : 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 Crystal 2
|
||||
LDA.l $7EF37A : AND #$10 : BNE .skip_draw_1
|
||||
; X position (2)
|
||||
LDA.b #$1E : STA.l $7EC10B
|
||||
LDA.b #$A0 : STA.l $7EC10A
|
||||
; Y position (2)
|
||||
LDA.b #$09 : STA.l $7EC109
|
||||
LDA.b #$74 : STA.l $7EC108
|
||||
|
||||
LDA.b #$64 : STA.b $0D
|
||||
LDA.b #$34 : STA.b $0C ; Tile GFX
|
||||
|
||||
LDA.b #$02 : STA.b $0B ; 02 = 16x16, 00 = 8x8
|
||||
LDA.b #$08 : STA.l $7EC025
|
||||
|
||||
JSR HandleMapDrawIcon
|
||||
|
||||
.skip_draw_1
|
||||
|
||||
; Draw Crystal 3
|
||||
LDA.l $7EF37A : AND #$40 : BNE .skip_draw_2
|
||||
; X position
|
||||
LDA.b #$08 : STA.l $7EC10B
|
||||
LDA.b #$10 : STA.l $7EC10A
|
||||
; Y position
|
||||
LDA.b #$04 : STA.l $7EC109
|
||||
LDA.b #$0E : STA.l $7EC108
|
||||
|
||||
LDA.b #$64 : 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_2
|
||||
|
||||
|
||||
; Draw Crystal 4
|
||||
LDA.l $7EF37A : AND #$01 : BNE .skip_draw_3
|
||||
; X position
|
||||
LDA.b #$0E : STA.l $7EC10B
|
||||
LDA.b #$5E : STA.l $7EC10A
|
||||
; Y position
|
||||
LDA.b #$06 : STA.l $7EC109
|
||||
LDA.b #$68 : STA.l $7EC108
|
||||
|
||||
LDA.b #$64 : 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 Crystal 5
|
||||
LDA.l $7EF37A : AND #$20 : BNE .skip_draw_4
|
||||
; X position
|
||||
LDA.b #$0C : 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 #$64 : STA.b $0D
|
||||
LDA.b #$34 : STA.b $0C ; Tile GFX
|
||||
|
||||
LDA.b #$02 : STA.b $0B ; 02 = 16x16, 00 = 8x8
|
||||
LDA.b #$09 : STA.l $7EC025
|
||||
|
||||
JSR HandleMapDrawIcon
|
||||
|
||||
.skip_draw_4
|
||||
|
||||
; Draw Crystal 6
|
||||
LDA.l $7EF37A : AND #$04 : BNE .skip_draw_5
|
||||
; X position (6)
|
||||
LDA.b #$0D : STA.l $7EC10B
|
||||
LDA.b #$05 : STA.l $7EC10A
|
||||
; Y position (6)
|
||||
LDA.b #$0D : STA.l $7EC109
|
||||
LDA.b #$09 : STA.l $7EC108
|
||||
|
||||
LDA.b #$64 : STA.b $0D
|
||||
LDA.b #$32 : STA.b $0C ; Tile GFX
|
||||
|
||||
LDA.b #$02 : STA.b $0B ; 02 = 16x16, 00 = 8x8
|
||||
LDA.b #$0A : STA.l $7EC025
|
||||
|
||||
JSR HandleMapDrawIcon
|
||||
.skip_draw_5
|
||||
|
||||
; Draw Crystal 7
|
||||
LDA.l $7EF37A : AND #$08 : BNE .skip_draw_6
|
||||
; X position
|
||||
LDA.b #$00 : STA.l $7EC10B
|
||||
LDA.b #$F4 : STA.l $7EC10A
|
||||
; Y position
|
||||
LDA.b #$0D : STA.l $7EC109
|
||||
LDA.b #$0E : STA.l $7EC108
|
||||
|
||||
LDA.b #$64 : 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_6
|
||||
|
||||
; ; Hall of Secrets X
|
||||
; LDA.l $7EF37A : AND #$20 : BNE .skip_draw_x
|
||||
; ; X position
|
||||
; LDA.b #$0D : STA.l $7EC10B
|
||||
; LDA.b #$00 : STA.l $7EC10A
|
||||
; ; Y position
|
||||
; LDA.b #$03 : STA.l $7EC109
|
||||
; LDA.b #$54 : STA.l $7EC108
|
||||
|
||||
; LDA.b #$68 : STA.b $0D
|
||||
; LDA.b #$34 : STA.b $0C ; Tile GFX
|
||||
|
||||
; LDA.b #$00 : STA.b $0B ; 02 = 16x16, 00 = 8x8
|
||||
; LDA.b #$07 : STA.l $7EC025
|
||||
|
||||
; JSR HandleMapDrawIcon_noflash
|
||||
; .skip_draw_x
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
FixMaskPaletteOnExit:
|
||||
{
|
||||
JSL Palette_ArmorAndGloves
|
||||
LDA.l $7EC229
|
||||
RTL
|
||||
}
|
||||
|
||||
org $0ABC76
|
||||
JSL FixMaskPaletteOnExit
|
||||
|
||||
; warnpc $0AC387
|
||||
|
||||
org $0AC589
|
||||
RTS
|
||||
|
||||
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:
|
||||
Reference in New Issue
Block a user