Merge in dungeon map changes #1
@@ -209,7 +209,11 @@ incsrc gloom.asm
|
||||
incsrc special_weapons.asm
|
||||
incsrc variable_ganon_vulnerability.asm
|
||||
incsrc pseudoflute.asm
|
||||
warnpc $BA8000
|
||||
incsrc dungeon_map/main.asm
|
||||
warnpc $B9F000
|
||||
|
||||
org $B9F000
|
||||
incsrc dungeon_map/settings.asm
|
||||
|
||||
org $A38000
|
||||
incsrc stats/credits.asm ; Statically mapped
|
||||
@@ -253,7 +257,7 @@ warnpc $B1A000
|
||||
|
||||
org $B1A000
|
||||
GFX_HUD_Items:
|
||||
incbin "menu/drsheetdc.2bppc"
|
||||
incbin "menu/dr_sheet_dc.2bppc"
|
||||
warnpc $B1A800
|
||||
|
||||
org $B1A800
|
||||
@@ -306,6 +310,14 @@ NewFontInverted:
|
||||
incbin "data/newfont_inverted.bin"
|
||||
SmallCharacters:
|
||||
incbin "data/smallchars.2bpp"
|
||||
|
||||
DungeonMapIcons1:
|
||||
incbin "menu/map_icons_1.3bppc"
|
||||
DungeonMapIcons2:
|
||||
incbin "menu/map_icons_2.3bppc"
|
||||
MapSheetD4:
|
||||
incbin "menu/map_sheet_d4.3bppc"
|
||||
|
||||
org $8CD7DF
|
||||
incsrc data/playernamecharmap.asm
|
||||
org $8CE73D
|
||||
|
||||
@@ -0,0 +1,99 @@
|
||||
; we want the icons indicating what is left in a room to blink
|
||||
; but we don't want to redraw to BG1 every few frames
|
||||
; so we duplicate the left side of BG1 to a lower portion and just toggle vertical scroll
|
||||
|
||||
BlinkLoot:
|
||||
; do not show icons if we're scrolling
|
||||
LDA.w $0210
|
||||
BNE .hide
|
||||
|
||||
LDA.b FrameCounter
|
||||
AND.b #$10
|
||||
BEQ .show
|
||||
.hide
|
||||
LDA.b #$01
|
||||
.show
|
||||
STZ.b $E6
|
||||
STA.w $E7
|
||||
JSL $8AE96B
|
||||
RTL
|
||||
|
||||
StartDoubleWrite:
|
||||
; what we wrote over
|
||||
REP #$30
|
||||
STZ.w GFXStripes
|
||||
|
||||
STZ.w $021B
|
||||
RTL
|
||||
|
||||
CheckDoubleWrite:
|
||||
LDA.w $021C
|
||||
BNE .done
|
||||
|
||||
LDA.b #$08
|
||||
STA.w $021C
|
||||
REP #$30
|
||||
JML $8AE20B
|
||||
|
||||
.done
|
||||
; what we wrote over
|
||||
REP #$10
|
||||
LDY.w GFXStripes
|
||||
LDA.b #$FF
|
||||
JML $8AE2E7
|
||||
|
||||
DrawMountain:
|
||||
LDX.w GFXStripes
|
||||
PHX
|
||||
LDY.w #$0000
|
||||
.next_word
|
||||
LDA.w $8AEFEF, Y
|
||||
STA.w GFXStripes+2, X
|
||||
INX : INX
|
||||
INY : INY
|
||||
CPY.w #$002A
|
||||
BCC .next_word
|
||||
|
||||
PLY
|
||||
LDA.w $021B
|
||||
BEQ .done
|
||||
|
||||
; if second copy of mountain, adjust VRAM addresses
|
||||
SEP #$20
|
||||
LDA.w GFXStripes+$02, Y
|
||||
ORA.w $021C
|
||||
STA.w GFXStripes+$02, Y
|
||||
|
||||
LDA.w GFXStripes+$08, Y
|
||||
ORA.w $021C
|
||||
STA.w GFXStripes+$08, Y
|
||||
|
||||
LDA.w GFXStripes+$10, Y
|
||||
ORA.w $021C
|
||||
STA.w GFXStripes+$10, Y
|
||||
|
||||
LDA.w GFXStripes+$20, Y
|
||||
ORA.w $021C
|
||||
STA.w GFXStripes+$20, Y
|
||||
|
||||
LDA.w GFXStripes+$26, Y
|
||||
ORA.w $021C
|
||||
STA.w GFXStripes+$26, Y
|
||||
REP #$20
|
||||
|
||||
.done
|
||||
RTL
|
||||
|
||||
WriteBigEndianAddressX:
|
||||
ORA.w $021B
|
||||
XBA
|
||||
STA.w GFXStripes+2, X
|
||||
AND.w #$FFF7
|
||||
RTL
|
||||
|
||||
WriteBigEndianAddressY:
|
||||
ORA.w $021B
|
||||
XBA
|
||||
STA.w GFXStripes+2, Y
|
||||
AND.w #$FFF7
|
||||
RTL
|
||||
@@ -0,0 +1,251 @@
|
||||
; A = room_id
|
||||
; out A = level of loot
|
||||
CheckLoot:
|
||||
PHP
|
||||
REP #$30
|
||||
PHB : PHX : PHY
|
||||
|
||||
STA.b $00
|
||||
ASL A
|
||||
TAX
|
||||
|
||||
LDA.b $06 : PHA
|
||||
|
||||
STZ.b $02 ; best item class found
|
||||
|
||||
JSR CheckChests
|
||||
JSR CheckBoss
|
||||
JSR CheckPots
|
||||
JSR CheckEnemies
|
||||
|
||||
PLA : STA.b $06
|
||||
PLY : PLX : PLB
|
||||
PLP
|
||||
LDA.b $02
|
||||
RTL
|
||||
|
||||
CheckChests:
|
||||
LDA.w #($81<<8)
|
||||
PHA
|
||||
PLB : PLB
|
||||
|
||||
LDA.w #$0008
|
||||
STA.b $04
|
||||
|
||||
LDY.w #$FFFD
|
||||
.increment_mask
|
||||
LDA.b $04
|
||||
ASL A
|
||||
STA.b $04
|
||||
.next_chest
|
||||
INY #3
|
||||
CPY.w #$01F8
|
||||
BCS .done
|
||||
|
||||
LDA.w RoomData_ChestItems, Y
|
||||
AND.w #$7FFF
|
||||
CMP.b $00
|
||||
BNE .next_chest
|
||||
|
||||
LDA.l SaveDataWRAM, X
|
||||
AND.b $04
|
||||
BNE .increment_mask ; already got item
|
||||
|
||||
LDA.w RoomData_ChestItems+2, Y
|
||||
AND.w #$00FF
|
||||
JSR GetLootClass
|
||||
BRA .increment_mask
|
||||
|
||||
.done
|
||||
RTS
|
||||
|
||||
CheckBoss:
|
||||
LDX.w #$FFFA
|
||||
.next_boss
|
||||
INX #6
|
||||
LDA.l MiscLocations, X
|
||||
BPL .check
|
||||
RTS
|
||||
|
||||
.check
|
||||
CMP.b $00
|
||||
BNE .next_boss
|
||||
|
||||
TXY
|
||||
CMP.b RoomIndex
|
||||
BEQ .current_room
|
||||
|
||||
ASL A
|
||||
TAX
|
||||
LDA.l SaveDataWRAM, X
|
||||
BRA .continue
|
||||
|
||||
.current_room
|
||||
LDA.w RoomItemsTaken ; if checking our current room, $0403 has fresher flags
|
||||
ASL #4
|
||||
|
||||
.continue
|
||||
STA.b $04
|
||||
|
||||
TYX
|
||||
LDA.l MiscLocations+2, X ; get bit of room data to check
|
||||
AND.w #$00FF
|
||||
ASL A
|
||||
TAX
|
||||
LDA.l DungeonMask, X
|
||||
|
||||
TYX
|
||||
BIT.b $04
|
||||
BNE .next_boss ; continue checking if we already got the item
|
||||
|
||||
LDA.l MiscLocations+4, X
|
||||
STA.b $05
|
||||
|
||||
LDA.l MiscLocations+3, X
|
||||
STA.b $04
|
||||
|
||||
LDA.b [$04]
|
||||
AND.w #$00FF
|
||||
JSR GetLootClass
|
||||
|
||||
BRA .next_boss
|
||||
|
||||
CheckPots:
|
||||
LDA.b $00
|
||||
ASL A
|
||||
TAX
|
||||
|
||||
LDA.l UWPotsPointers, X
|
||||
STA.b $04
|
||||
LDA.w #bank(UWPotsData)
|
||||
STA.b $06
|
||||
|
||||
LDY.w #$0000
|
||||
LDX.w #$FFFF
|
||||
.next_pot
|
||||
LDA.b [$04], Y
|
||||
CMP.w #$FFFF : BEQ .done
|
||||
INX : INY : INY
|
||||
BIT.w #$8000 : BNE .we_care ; marked as major item
|
||||
LDA.b [$04], Y
|
||||
AND.w #$00FF
|
||||
CMP.w #$0008 : BEQ .small_key
|
||||
INY
|
||||
BRA .next_pot
|
||||
|
||||
.small_key
|
||||
LDA.w #$0024
|
||||
.we_care
|
||||
INY
|
||||
PHA
|
||||
PHX
|
||||
TXA : ASL A
|
||||
EOR.w #$FFFF
|
||||
CLC : ADC.w #$001F ; bit mask table is in opposite order of what we want
|
||||
TAX
|
||||
LDA.l DungeonMask, X : STA.b $08
|
||||
|
||||
LDA.b $00 : ASL A : TAX
|
||||
LDA.l RoomPotData, X
|
||||
PLX
|
||||
AND.b $08
|
||||
BEQ .not_obtained
|
||||
PLA
|
||||
BRA .next_pot
|
||||
|
||||
.not_obtained
|
||||
PLA
|
||||
AND.w #$00FF
|
||||
JSR GetLootClass
|
||||
BRA .next_pot
|
||||
|
||||
.done
|
||||
RTS
|
||||
|
||||
CheckEnemies:
|
||||
LDA.b $00
|
||||
ASL A
|
||||
TAX
|
||||
|
||||
LDA.l UWSpritesPointers, X
|
||||
INC A ; skip the layered/unlayered indicator
|
||||
STA.b $04
|
||||
LDA.w #bank(UWSpritesData)
|
||||
STA.b $06
|
||||
|
||||
LDY.w #$0000
|
||||
LDX.w #$FFFF
|
||||
.next_enemy
|
||||
LDA.b [$04], Y
|
||||
AND.w #$00FF
|
||||
CMP.w #$00FF : BEQ .done
|
||||
INY : INY
|
||||
LDA.b [$04], Y
|
||||
AND.w #$00FF
|
||||
CMP.w #$00F8 : BEQ .major ; major item
|
||||
CMP.w #$00F9 : BEQ .major ; major item in other world
|
||||
CMP.w #$00E4 : BEQ .vanilla_key
|
||||
INY
|
||||
BRA .next_enemy
|
||||
|
||||
.vanilla_key
|
||||
DEY : DEY
|
||||
LDA.b [$04], Y
|
||||
AND.w #$00FF
|
||||
CMP.w #$00FD ; big key
|
||||
BEQ .big_key
|
||||
CMP.w #$00FE ; small key
|
||||
BEQ .small_key
|
||||
INY #3 ; false alarm -- probably hera basement key
|
||||
BRA .next_enemy
|
||||
.small_key
|
||||
LDA.w #$0024
|
||||
BRA .proceed
|
||||
.big_key
|
||||
LDA.w #$0032
|
||||
BRA .proceed
|
||||
|
||||
.major
|
||||
DEY : DEY
|
||||
LDA.b [$04], Y
|
||||
AND.w #$00FF
|
||||
|
||||
.proceed
|
||||
INX
|
||||
INY : INY : INY
|
||||
|
||||
PHA
|
||||
PHX
|
||||
TXA : ASL A
|
||||
TAX
|
||||
LDA.l DungeonMask, X : STA.b $08
|
||||
|
||||
LDA.b $00 : ASL A : TAX
|
||||
LDA.l SpriteDropData, X
|
||||
PLX
|
||||
AND.b $08
|
||||
BEQ .not_obtained
|
||||
PLA
|
||||
BRA .next_enemy
|
||||
|
||||
.not_obtained
|
||||
PLA
|
||||
AND.w #$00FF
|
||||
JSR GetLootClass
|
||||
BRA .next_enemy
|
||||
|
||||
.done
|
||||
RTS
|
||||
|
||||
; A = item id
|
||||
; updates "best loot" value if better
|
||||
GetLootClass:
|
||||
PHX
|
||||
TAX
|
||||
LDA.l LootTypeMapping, X
|
||||
AND.w #$00FF
|
||||
CMP.b $02
|
||||
BCC +
|
||||
STA.b $02
|
||||
+ PLX
|
||||
RTS
|
||||
@@ -0,0 +1,261 @@
|
||||
db $0A ; 00 - Fighter Sword and Shield
|
||||
db $0A ; 01 - Master Sword
|
||||
db $0A ; 02 - Tempered Sword
|
||||
db $0A ; 03 - Butter Sword
|
||||
db $05 ; 04 - Fighter Shield
|
||||
db $05 ; 05 - Fire Shield
|
||||
db $05 ; 06 - Mirror Shield
|
||||
db $0A ; 07 - Fire Rod
|
||||
db $0A ; 08 - Ice Rod
|
||||
db $0A ; 09 - Hammer
|
||||
db $0A ; 0A - Hookshot
|
||||
db $0A ; 0B - Bow
|
||||
db $0A ; 0C - Boomerang
|
||||
db $0A ; 0D - Powder
|
||||
db $02 ; 0E - Bottle Refill (bee)
|
||||
db $0A ; 0F - Bombos
|
||||
db $0A ; 10 - Ether
|
||||
db $0A ; 11 - Quake
|
||||
db $0A ; 12 - Lamp
|
||||
db $0A ; 13 - Shovel
|
||||
db $0A ; 14 - Flute
|
||||
db $0A ; 15 - Somaria
|
||||
db $0A ; 16 - Bottle
|
||||
db $05 ; 17 - Heartpiece
|
||||
db $0A ; 18 - Byrna
|
||||
db $0A ; 19 - Cape
|
||||
db $0A ; 1A - Mirror
|
||||
db $0A ; 1B - Glove
|
||||
db $0A ; 1C - Mitts
|
||||
db $0A ; 1D - Book
|
||||
db $0A ; 1E - Flippers
|
||||
db $0A ; 1F - Pearl
|
||||
db $0C ; 20 - Crystal
|
||||
db $0A ; 21 - Net
|
||||
db $05 ; 22 - Blue Mail
|
||||
db $05 ; 23 - Red Mail
|
||||
db $03 ; 24 - Small Key
|
||||
db $06 ; 25 - Compass
|
||||
db $05 ; 26 - Heart Container from 4/4
|
||||
db $02 ; 27 - Bomb
|
||||
db $02 ; 28 - 3 bombs
|
||||
db $0A ; 29 - Mushroom
|
||||
db $0A ; 2A - Red boomerang
|
||||
db $0A ; 2B - Full bottle (red)
|
||||
db $0A ; 2C - Full bottle (green)
|
||||
db $0A ; 2D - Full bottle (blue)
|
||||
db $05 ; 2E - Potion refill (red)
|
||||
db $05 ; 2F - Potion refill (green)
|
||||
db $05 ; 30 - Potion refill (blue)
|
||||
db $02 ; 31 - 10 bombs
|
||||
db $08 ; 32 - Big key
|
||||
db $02 ; 33 - Map
|
||||
db $02 ; 34 - 1 rupee
|
||||
db $02 ; 35 - 5 rupees
|
||||
db $02 ; 36 - 20 rupees
|
||||
db $09 ; 37 - Green pendant
|
||||
db $09 ; 38 - Blue pendant
|
||||
db $09 ; 39 - Red pendant
|
||||
db $0A ; 3A - Tossed bow
|
||||
db $0A ; 3B - Silvers
|
||||
db $0A ; 3C - Full bottle (bee)
|
||||
db $0A ; 3D - Full bottle (fairy)
|
||||
db $05 ; 3E - Boss heart
|
||||
db $05 ; 3F - Sanc heart
|
||||
db $02 ; 40 - 100 rupees
|
||||
db $02 ; 41 - 50 rupees
|
||||
db $02 ; 42 - Heart
|
||||
db $02 ; 43 - Arrow
|
||||
db $02 ; 44 - 10 arrows
|
||||
db $02 ; 45 - Small magic
|
||||
db $02 ; 46 - 300 rupees
|
||||
db $02 ; 47 - 20 rupees green
|
||||
db $0A ; 48 - Full bottle (good bee)
|
||||
db $0A ; 49 - Tossed fighter sword
|
||||
db $0A ; 4A - Active Flute
|
||||
db $0A ; 4B - Boots
|
||||
|
||||
db $05 ; 4C - Bomb capacity (50)
|
||||
db $05 ; 4D - Arrow capacity (70)
|
||||
db $0A ; 4E - 1/2 magic
|
||||
db $0A ; 4F - 1/4 magic
|
||||
db $0A ; 50 - Safe master sword
|
||||
db $05 ; 51 - Bomb capacity (+5)
|
||||
db $05 ; 52 - Bomb capacity (+10)
|
||||
db $05 ; 53 - Arrow capacity (+5)
|
||||
db $05 ; 54 - Arrow capacity (+10)
|
||||
db $02 ; 55 - Programmable item 1
|
||||
db $02 ; 56 - Programmable item 2
|
||||
db $02 ; 57 - Programmable item 3
|
||||
db $0A ; 58 - Upgrade-only silver arrows
|
||||
db $02 ; 59 - Rupoor
|
||||
db $02 ; 5A - Nothing
|
||||
db $02 ; 5B - Red clock
|
||||
db $02 ; 5C - Blue clock
|
||||
db $02 ; 5D - Green clock
|
||||
db $0A ; 5E - Progressive sword
|
||||
db $05 ; 5F - Progressive shield
|
||||
db $05 ; 60 - Progressive armor
|
||||
db $0A ; 61 - Progressive glove
|
||||
db $02 ; 62 - RNG pool item (single)
|
||||
db $02 ; 63 - RNG pool item (multi)
|
||||
db $0A ; 64 - Progressive bow
|
||||
db $0A ; 65 - Progressive bow
|
||||
db $02 ; 66 -
|
||||
db $02 ; 67 -
|
||||
db $02 ; 68 -
|
||||
db $02 ; 69 -
|
||||
db $0E ; 6A - Triforce
|
||||
db $0D ; 6B - Power star
|
||||
db $0D ; 6C - Triforce Piece
|
||||
db $02 ; 6D - Server request item
|
||||
db $02 ; 6E - Server request item (dungeon drop)
|
||||
db $02 ; 6F -
|
||||
|
||||
db $02 ; 70 - Map of Light World
|
||||
db $02 ; 71 - Map of Dark World
|
||||
db $02 ; 72 - Map of Ganon's Tower
|
||||
db $02 ; 73 - Map of Turtle Rock
|
||||
db $02 ; 74 - Map of Thieves' Town
|
||||
db $02 ; 75 - Map of Tower of Hera
|
||||
db $02 ; 76 - Map of Ice Palace
|
||||
db $02 ; 77 - Map of Skull Woods
|
||||
db $02 ; 78 - Map of Misery Mire
|
||||
db $02 ; 79 - Map of Dark Palace
|
||||
db $02 ; 7A - Map of Swamp Palace
|
||||
db $02 ; 7B - Map of Agahnim's Tower
|
||||
db $02 ; 7C - Map of Desert Palace
|
||||
db $02 ; 7D - Map of Eastern Palace
|
||||
db $02 ; 7E - Map of Hyrule Castle
|
||||
db $02 ; 7F - Map of Sewers
|
||||
|
||||
db $06 ; 80 - Compass of Light World
|
||||
db $06 ; 81 - Compass of Dark World
|
||||
db $06 ; 82 - Compass of Ganon's Tower
|
||||
db $06 ; 83 - Compass of Turtle Rock
|
||||
db $06 ; 84 - Compass of Thieves' Town
|
||||
db $06 ; 85 - Compass of Tower of Hera
|
||||
db $06 ; 86 - Compass of Ice Palace
|
||||
db $06 ; 87 - Compass of Skull Woods
|
||||
db $06 ; 88 - Compass of Misery Mire
|
||||
db $06 ; 89 - Compass of Dark Palace
|
||||
db $06 ; 8A - Compass of Swamp Palace
|
||||
db $06 ; 8B - Compass of Agahnim's Tower
|
||||
db $06 ; 8C - Compass of Desert Palace
|
||||
db $06 ; 8D - Compass of Eastern Palace
|
||||
db $06 ; 8E - Compass of Hyrule Castle
|
||||
db $06 ; 8F - Compass of Sewers
|
||||
|
||||
db $08 ; 90 - Skull key
|
||||
db $08 ; 91 - Reserved
|
||||
db $08 ; 92 - Big key of Ganon's Tower
|
||||
db $08 ; 93 - Big key of Turtle Rock
|
||||
db $08 ; 94 - Big key of Thieves' Town
|
||||
db $08 ; 95 - Big key of Tower of Hera
|
||||
db $08 ; 96 - Big key of Ice Palace
|
||||
db $08 ; 97 - Big key of Skull Woods
|
||||
db $08 ; 98 - Big key of Misery Mire
|
||||
db $08 ; 99 - Big key of Dark Palace
|
||||
db $08 ; 9A - Big key of Swamp Palace
|
||||
db $08 ; 9B - Big key of Agahnim's Tower
|
||||
db $08 ; 9C - Big key of Desert Palace
|
||||
db $08 ; 9D - Big key of Eastern Palace
|
||||
db $08 ; 9E - Big key of Hyrule Castle
|
||||
db $08 ; 9F - Big key of Sewers
|
||||
|
||||
db $07 ; A0 - Small key of Sewers
|
||||
db $07 ; A1 - Small key of Hyrule Castle
|
||||
db $07 ; A2 - Small key of Eastern Palace
|
||||
db $07 ; A3 - Small key of Desert Palace
|
||||
db $07 ; A4 - Small key of Agahnim's Tower
|
||||
db $07 ; A5 - Small key of Swamp Palace
|
||||
db $07 ; A6 - Small key of Dark Palace
|
||||
db $07 ; A7 - Small key of Misery Mire
|
||||
db $07 ; A8 - Small key of Skull Woods
|
||||
db $07 ; A9 - Small key of Ice Palace
|
||||
db $07 ; AA - Small key of Tower of Hera
|
||||
db $07 ; AB - Small key of Thieves' Town
|
||||
db $07 ; AC - Small key of Turtle Rock
|
||||
db $07 ; AD - Small key of Ganon's Tower
|
||||
db $02 ; AE - Reserved
|
||||
db $03 ; AF - Generic small key
|
||||
db $0C ; B0 - Crystal 6
|
||||
db $0C ; B1 - Crystal 1
|
||||
db $0C ; B2 - Crystal 5
|
||||
db $0C ; B3 - Crystal 7
|
||||
db $0C ; B4 - Crystal 2
|
||||
db $0C ; B5 - Crystal 4
|
||||
db $0C ; B6 - Crystal 3
|
||||
db $02 ; B7 - Reserved
|
||||
db $02 ; B8 -
|
||||
db $02 ; B9 -
|
||||
db $02 ; BA -
|
||||
db $02 ; BB -
|
||||
db $02 ; BC -
|
||||
db $02 ; BD -
|
||||
db $02 ; BE -
|
||||
db $02 ; BF -
|
||||
db $02 ; C0 -
|
||||
db $02 ; C1 -
|
||||
db $02 ; C2 -
|
||||
db $02 ; C3 -
|
||||
db $02 ; C4 -
|
||||
db $02 ; C5 -
|
||||
db $02 ; C6 -
|
||||
db $02 ; C7 -
|
||||
db $02 ; C8 -
|
||||
db $02 ; C9 -
|
||||
db $02 ; CA -
|
||||
db $02 ; CB -
|
||||
db $02 ; CC -
|
||||
db $02 ; CD -
|
||||
db $02 ; CE -
|
||||
db $02 ; CF -
|
||||
db $02 ; D0 - Bee trap
|
||||
db $02 ; D1 - Apples
|
||||
db $02 ; D2 - Fairy
|
||||
db $02 ; D3 - Chicken
|
||||
db $02 ; D4 - Big Magic
|
||||
db $02 ; D5 - 5 Arrows
|
||||
db $02 ; D6 - Good Bee
|
||||
db $02 ; D7 -
|
||||
db $02 ; D8 -
|
||||
db $02 ; D9 -
|
||||
db $02 ; DA -
|
||||
db $02 ; DB -
|
||||
db $02 ; DC -
|
||||
db $02 ; DD -
|
||||
db $02 ; DE -
|
||||
db $02 ; DF -
|
||||
db $02 ; E0 -
|
||||
db $02 ; E1 -
|
||||
db $02 ; E2 -
|
||||
db $02 ; E3 -
|
||||
db $02 ; E4 -
|
||||
db $02 ; E5 -
|
||||
db $02 ; E6 -
|
||||
db $02 ; E7 -
|
||||
db $02 ; E8 -
|
||||
db $02 ; E9 -
|
||||
db $02 ; EA -
|
||||
db $02 ; EB -
|
||||
db $02 ; EC -
|
||||
db $02 ; ED -
|
||||
db $02 ; EE -
|
||||
db $02 ; EF -
|
||||
db $02 ; F0 -
|
||||
db $02 ; F1 -
|
||||
db $02 ; F2 -
|
||||
db $02 ; F3 -
|
||||
db $02 ; F4 -
|
||||
db $02 ; F5 -
|
||||
db $02 ; F6 -
|
||||
db $02 ; F7 -
|
||||
db $02 ; F8 -
|
||||
db $02 ; F9 -
|
||||
db $02 ; FA -
|
||||
db $02 ; FB -
|
||||
db $02 ; FC -
|
||||
db $02 ; FD -
|
||||
db $02 ; FE - Server request (async)
|
||||
db $02 ; FF -
|
||||
@@ -0,0 +1,256 @@
|
||||
db $0F, $00, $1F, $0E ; 00
|
||||
db $46, $46, $0E, $0E
|
||||
db $00, $30, $14, $14
|
||||
db $0E, $1F, $20, $0F
|
||||
db $65, $74, $2D, $2E ; 04
|
||||
db $FF, $FF, $FF, $FF ; 05 - unused
|
||||
db $FF, $FF, $4F, $FF
|
||||
db $00, $40, $00, $00 ; 07
|
||||
db $0E, $0E, $10, $20 ; 08 - useless fairy entrance
|
||||
db $66, $66, $FF, $FF
|
||||
db $44, $44, $0E, $0E
|
||||
db $2E, $67, $2E, $70 ; 0B
|
||||
db $31, $31, $24, $24 ; 0C
|
||||
db $FF, $FF, $4F, $FF ; 0D
|
||||
db $FF, $FF, $57, $5F ; 0E
|
||||
db $FF, $FF, $FF, $FF ; 0F - unused and should never be, treated as non-id
|
||||
db $00, $00, $20, $00 ; 10
|
||||
db $00, $30, $00, $10
|
||||
db $14, $14, $24, $24
|
||||
db $FF, $77, $FF, $77 ; 13
|
||||
db $11, $01, $11, $11
|
||||
db $34, $00, $01, $00
|
||||
db $75, $65, $2E, $2E ; 16
|
||||
db $40, $40, $00, $00
|
||||
db $10, $0F, $00, $0F ; 18 - useless fairy drop
|
||||
db $0F, $03, $0F, $02
|
||||
db $6E, $6F, $6D, $75 ; 1A
|
||||
db $2E, $67, $75, $FF
|
||||
db $74, $74, $3E, $2E ; 1C
|
||||
db $72, $67, $FF, $FF
|
||||
db $FF, $68, $57, $4B
|
||||
db $FF, $FF, $71, $57 ; 1F
|
||||
db $FF, $FF, $4F, $FF ; 20
|
||||
db $00, $10, $00, $01
|
||||
db $0E, $0E, $15, $14
|
||||
db $FF, $FF, $FF, $6B
|
||||
db $10, $10, $01, $20 ; 24
|
||||
db $FF, $FF, $FF, $FF ; 25 - unused
|
||||
db $00, $3C, $14, $42 ; 26
|
||||
db $40, $40, $00, $00
|
||||
db $30, $1E, $24, $24 ; 28
|
||||
db $1F, $0E, $0F, $00
|
||||
db $10, $12, $10, $5E
|
||||
db $12, $1E, $36, $00
|
||||
db $00, $00, $10, $10 ; 2C - hookshot cave fairies
|
||||
db $FF, $FF, $FF, $FF ; 2D - unused
|
||||
db $FF, $4F, $FF, $FF ; 2E
|
||||
db $00, $1E, $00, $20 ; 2F - kakariko well
|
||||
db $75, $FF, $65, $FF ; 30
|
||||
db $2E, $57, $2E, $57 ; 31
|
||||
db $14, $14, $44, $44
|
||||
db $FF, $FF, $4F, $FF ; 33
|
||||
db $00, $01, $40, $01
|
||||
db $4D, $77, $71, $3D ; 35
|
||||
db $15, $15, $15, $15
|
||||
db $77, $4D, $3D, $71 ; 37
|
||||
db $6C, $FF, $77, $FF ; 38
|
||||
db $FF, $FF, $72, $69 ; 39
|
||||
db $64, $64, $14, $14
|
||||
db $65, $FF, $75, $FF
|
||||
db $00, $10, $00, $20 ; 3C - hookshot cave
|
||||
db $2E, $2E, $75, $65 ; 3D
|
||||
db $FF, $74, $72, $2E ; 3E
|
||||
db $FF, $FF, $57, $57
|
||||
db $65, $FF, $2E, $57 ; 40
|
||||
db $00, $30, $14, $14
|
||||
db $44, $31, $0E, $0E
|
||||
db $72, $2E, $FF, $75
|
||||
db $70, $3D, $70, $3D
|
||||
db $6C, $74, $3D, $2E ; 45
|
||||
db $14, $14, $00, $00
|
||||
db $FF, $FF, $FF, $FF ; 47 - unused
|
||||
db $FF, $FF, $FF, $FF ; 48 - unused
|
||||
db $72, $2E, $72, $2E ; 49
|
||||
db $61, $61, $24, $24
|
||||
db $75, $74, $2E, $2E
|
||||
db $FF, $65, $FF, $77 ; 4C
|
||||
db $10, $30, $01, $00
|
||||
db $72, $57, $FF, $FF ; 4E
|
||||
db $1E, $00, $01, $1E
|
||||
db $FF, $77, $FF, $75 ; 50
|
||||
db $14, $14, $44, $44
|
||||
db $01, $1E, $04, $14
|
||||
db $65, $75, $2E, $2E
|
||||
db $50, $50, $40, $00 ; 54
|
||||
db $00, $00, $20, $00
|
||||
db $74, $74, $2B, $3D
|
||||
db $2E, $70, $63, $5B
|
||||
db $00, $00, $21, $10 ; 58 - split
|
||||
db $10, $00, $20, $00
|
||||
db $FF, $FF, $FF, $4F
|
||||
db $FF, $77, $FF, $75 ; 5B
|
||||
db $71, $6A, $FF, $74 ; 5C
|
||||
db $2E, $67, $75, $FF ; 5D
|
||||
db $FF, $68, $57, $4B ; 5E
|
||||
db $FF, $FF, $7B, $FF
|
||||
db $0F, $13, $0F, $22 ; 60
|
||||
db $47, $45, $26, $26
|
||||
db $06, $14, $22, $00
|
||||
db $65, $FF, $76, $FF ; 63
|
||||
db $FF, $FF, $57, $71
|
||||
db $FF, $FF, $71, $69
|
||||
db $00, $30, $10, $00
|
||||
db $00, $10, $00, $01
|
||||
db $00, $10, $01, $00 ; 68
|
||||
db $00, $00, $00, $00
|
||||
db $FF, $4C, $FF, $74 ; 6A
|
||||
db $65, $75, $2E, $2E
|
||||
db $65, $FF, $2E, $71 ; 6C
|
||||
db $75, $FF, $77, $FF ; 6D
|
||||
db $FF, $4E, $FF, $FF ; 6E
|
||||
db $00, $00, $00, $00
|
||||
db $7A, $FF, $FF, $FF ; 70
|
||||
db $65, $FF, $2D, $70 ; 71
|
||||
db $44, $44, $04, $14 ; 72 - slight cheating I guess...
|
||||
db $74, $74, $2E, $4B ; 73
|
||||
db $00, $00, $05, $05
|
||||
db $74, $74, $4A, $75 ; 75
|
||||
db $2D, $7C, $2E, $57 ; 76
|
||||
db $30, $00, $60, $60
|
||||
db $00, $00, $00, $00 ; 78
|
||||
db $00, $00, $00, $00
|
||||
db $00, $00, $00, $00
|
||||
db $70, $71, $4F, $4D
|
||||
db $77, $74, $77, $77
|
||||
db $2E, $70, $77, $4F ; 7D
|
||||
db $FF, $77, $53, $2D ; 7E
|
||||
db $77, $FF, $55, $FF
|
||||
db $67, $70, $FF, $FF ; 80
|
||||
db $10, $01, $00, $01
|
||||
db $5D, $14, $01, $00
|
||||
db $74, $75, $2B, $2E ; 83
|
||||
db $04, $05, $24, $24
|
||||
db $4B, $72, $2E, $5F ; 85
|
||||
db $00, $00, $00, $00
|
||||
db $67, $2E, $54, $74
|
||||
db $00, $00, $00, $00 ; 88
|
||||
db $00, $00, $0E, $0E
|
||||
db $00, $00, $00, $00
|
||||
db $2D, $71, $2D, $70
|
||||
db $7E, $7F, $7D, $78 ; 8C
|
||||
db $71, $2D, $70, $2D ; 8D
|
||||
db $FF, $4E, $FF, $FF
|
||||
db $00, $00, $00, $00
|
||||
db $FF, $FF, $4F, $FF ; 90
|
||||
db $FF, $65, $FF, $77
|
||||
db $00, $00, $01, $01 ; 92 - should it be split? idk
|
||||
db $2C, $2C, $77, $74 ; 93
|
||||
db $00, $00, $00, $00
|
||||
db $FF, $77, $FF, $75 ; 95
|
||||
db $77, $FF, $2E, $57
|
||||
db $65, $74, $2E, $2F ; 97
|
||||
db $0E, $0E, $20, $40 ; 98
|
||||
db $1E, $00, $42, $14
|
||||
db $00, $00, $00, $00
|
||||
db $72, $70, $70, $71
|
||||
db $10, $10, $01, $01
|
||||
db $70, $72, $71, $70
|
||||
db $1E, $30, $00, $52
|
||||
db $0E, $1F, $11, $0F
|
||||
db $72, $57, $FF, $FF ; A0
|
||||
db $00, $02, $1E, $12
|
||||
db $45, $45, $16, $06
|
||||
db $02, $0F, $12, $0F
|
||||
db $FF, $FF, $4E, $FF ; A4
|
||||
db $65, $75, $2E, $2E
|
||||
db $00, $30, $00, $00
|
||||
db $00, $0F, $0E, $1F
|
||||
db $00, $03, $00, $12 ; A8
|
||||
db $17, $17, $16, $16
|
||||
db $03, $00, $12, $00
|
||||
db $FF, $FF, $5A, $FF
|
||||
db $FF, $FF, $FF, $4F ; AC
|
||||
db $00, $00, $00, $00
|
||||
db $0F, $34, $1F, $0E
|
||||
db $11, $0F, $0E, $1F
|
||||
db $2E, $67, $2E, $57 ; B0
|
||||
db $74, $75, $2E, $2D
|
||||
db $14, $05, $10, $11 ; B2 - split this monster somehow?
|
||||
db $4A, $FF, $4A, $FF
|
||||
db $10, $00, $44, $44
|
||||
db $30, $00, $10, $00
|
||||
db $65, $74, $75, $75
|
||||
db $74, $FF, $75, $FF
|
||||
db $FF, $4A, $FF, $74 ; B8
|
||||
db $15, $15, $14, $14
|
||||
db $73, $70, $FF, $FF
|
||||
db $10, $01, $00, $01
|
||||
db $34, $10, $11, $10
|
||||
db $00, $00, $00, $00
|
||||
db $FF, $65, $FF, $4A
|
||||
db $FF, $FF, $4D, $FF
|
||||
db $2E, $67, $2E, $57 ; C0
|
||||
db $2E, $73, $2D, $73
|
||||
db $11, $13, $01, $13
|
||||
db $13, $00, $03, $00
|
||||
db $44, $44, $00, $01 ; C4
|
||||
db $75, $FF, $4A, $FF
|
||||
db $10, $11, $10, $11
|
||||
db $11, $00, $01, $00
|
||||
db $FF, $FF, $FF, $4F ; C8
|
||||
db $14, $14, $24, $24
|
||||
db $00, $00, $00, $00
|
||||
db $00, $03, $14, $07
|
||||
db $13, $10, $07, $14 ; CC
|
||||
db $00, $00, $00, $00
|
||||
db $FF, $78, $FF, $FF
|
||||
db $00, $00, $00, $00
|
||||
db $2E, $67, $2E, $57 ; D0
|
||||
db $4E, $4F, $70, $70
|
||||
db $FF, $75, $FF, $55
|
||||
db $FF, $FF, $FF, $FF ; D3 - unused
|
||||
db $FF, $FF, $FF, $FF ; D4 - unused
|
||||
db $75, $FF, $76, $FF
|
||||
db $75, $75, $74, $76
|
||||
db $00, $00, $00, $00
|
||||
db $FF, $75, $FF, $77 ; D8
|
||||
db $FF, $FF, $71, $71
|
||||
db $FF, $FF, $5C, $FF
|
||||
db $14, $06, $24, $3F
|
||||
db $06, $14, $03, $00 ; DC
|
||||
db $00, $00, $00, $00
|
||||
db $0F, $00, $1F, $0E
|
||||
db $0E, $0E, $24, $24
|
||||
db $2E, $67, $76, $FF ; E0
|
||||
db $00, $00, $20, $00
|
||||
db $00, $1E, $00, $20
|
||||
db $1E, $00, $20, $00
|
||||
db $00, $02, $20, $02
|
||||
db $02, $00, $26, $24
|
||||
db $00, $01, $10, $00
|
||||
db $01, $00, $00, $20
|
||||
db $30, $30, $40, $20 ; E8 more cheating
|
||||
db $00, $00, $00, $00
|
||||
db $30, $0F, $20, $0F
|
||||
db $0F, $30, $0F, $20
|
||||
db $00, $00, $00, $00
|
||||
db $30, $30, $00, $20
|
||||
db $00, $00, $00, $20
|
||||
db $1E, $00, $60, $60
|
||||
db $00, $02, $20, $02 ; F0
|
||||
db $02, $02, $00, $20
|
||||
db $1F, $0E, $0F, $20
|
||||
db $0E, $1F, $20, $0F
|
||||
db $1F, $0E, $0F, $20
|
||||
db $0E, $1F, $20, $0F
|
||||
db $00, $00, $00, $00
|
||||
db $00, $00, $00, $00
|
||||
db $30, $30, $60, $24 ; F8
|
||||
db $00, $01, $20, $00
|
||||
db $34, $00, $20, $00
|
||||
db $1E, $30, $24, $24
|
||||
db $00, $00, $00, $00
|
||||
db $30, $30, $24, $24
|
||||
db $0F, $0F, $00, $20
|
||||
db $00, $00, $00, $20
|
||||
@@ -0,0 +1,130 @@
|
||||
RedrawLoot:
|
||||
JSL DrawLoot
|
||||
|
||||
; what we wrote over
|
||||
SEP #$20
|
||||
STZ.w $0210
|
||||
RTL
|
||||
|
||||
FirstDrawLoot:
|
||||
; what we wrote over
|
||||
LDA.b #$08
|
||||
STA.b $17
|
||||
|
||||
DrawLoot:
|
||||
LDA.b $07
|
||||
STA.w $021B
|
||||
|
||||
REP #$30
|
||||
PHX : PHY
|
||||
|
||||
STZ.b $0E
|
||||
|
||||
LDX.w DungeonID
|
||||
LDA.l $8AF615, X
|
||||
STA.b $0C
|
||||
|
||||
SEP #$20
|
||||
LDA.l $8AF5E9, X
|
||||
AND.b #$0F
|
||||
CLC : ADC.w $020E
|
||||
PHA
|
||||
|
||||
JSR DrawSingleFloorLoot
|
||||
|
||||
INC.b $0F
|
||||
LDA.b #$80
|
||||
STA.b $0E
|
||||
PLA : DEC A
|
||||
JSR DrawSingleFloorLoot
|
||||
|
||||
LDX.w GFXStripes
|
||||
LDA.b #$FF
|
||||
STA.w GFXStripes+2, X
|
||||
|
||||
LDA.b #$01
|
||||
STA.b NMISTRIPES
|
||||
|
||||
PLY : PLX
|
||||
LDA.b #$00
|
||||
RTL
|
||||
|
||||
DrawSingleFloorLoot:
|
||||
REP #$20
|
||||
AND.w #$00FF
|
||||
ASL A
|
||||
TAX
|
||||
|
||||
LDA.l $8AF605, X
|
||||
TAY
|
||||
STZ.b $06
|
||||
|
||||
.next_row
|
||||
REP #$20
|
||||
LDA.w GFXStripes
|
||||
TAX
|
||||
CLC : ADC.w #$0030
|
||||
STA.w GFXStripes
|
||||
|
||||
LDA.b $07
|
||||
AND.w #$00FF
|
||||
XBA
|
||||
LSR A : LSR A
|
||||
CLC : ADC.w #$1092
|
||||
ADC.b $0E
|
||||
XBA
|
||||
STA.w GFXStripes+2, X
|
||||
CLC : ADC.w #$2000
|
||||
STA.w GFXStripes+$1A, X
|
||||
|
||||
LDA.w #$1300
|
||||
STA.w GFXStripes+$04, X
|
||||
STA.w GFXStripes+$1C, X
|
||||
|
||||
.next_room
|
||||
REP #$20
|
||||
LDA.b ($0C), Y ; get room id
|
||||
PHY
|
||||
|
||||
AND.w #$00FF
|
||||
CMP.w #$000F ; $0F = empty room
|
||||
|
||||
BNE .valid_room
|
||||
LDA.w #$0000
|
||||
BRA +
|
||||
.valid_room
|
||||
JSL CheckLoot
|
||||
+
|
||||
ASL A : ASL A : ASL A
|
||||
|
||||
TXY
|
||||
TAX
|
||||
|
||||
LDA.l LootTypeIcons+0, X
|
||||
STA.w GFXStripes+$06, Y
|
||||
LDA.l LootTypeIcons+2, X
|
||||
STA.w GFXStripes+$08, Y
|
||||
LDA.l LootTypeIcons+4, X
|
||||
STA.w GFXStripes+$1E, Y
|
||||
LDA.l LootTypeIcons+6, X
|
||||
STA.w GFXStripes+$20, Y
|
||||
|
||||
TYX
|
||||
PLY
|
||||
INY : INX #4
|
||||
|
||||
SEP #$20
|
||||
INC.b $06
|
||||
LDA.b $06
|
||||
CMP.b #$05
|
||||
BCC .next_room
|
||||
|
||||
STZ.b $06
|
||||
INC.b $07
|
||||
LDA.b $07
|
||||
CMP.b #$05
|
||||
BCS .done
|
||||
JMP .next_row
|
||||
|
||||
.done
|
||||
RTS
|
||||
@@ -0,0 +1,84 @@
|
||||
; $CA has room_id
|
||||
DrawDungeonMapRoom:
|
||||
PHB : PHK : PLB ; need to keep this in same bank as data, or else specify bank
|
||||
|
||||
; base no-info palette
|
||||
LDA.w #$0C00
|
||||
STA.b $0C
|
||||
|
||||
PHX
|
||||
LDX.w DungeonID
|
||||
LDA.l MapField
|
||||
AND.l DungeonMask, X
|
||||
BEQ +
|
||||
LDA.w #$1400
|
||||
STA.b $0C
|
||||
LDA.b $0E
|
||||
ORA.w #$8000
|
||||
STA.b $0E
|
||||
+
|
||||
|
||||
LDA.l CompassField
|
||||
AND.l DungeonMask, X
|
||||
BEQ +
|
||||
LDA.b $0E
|
||||
ORA.w #$4000
|
||||
STA.b $0E
|
||||
+
|
||||
PLX
|
||||
|
||||
LDA.b $0E
|
||||
BNE +
|
||||
; we haven't seen the supertile at all and don't have map or compass
|
||||
LDA.w #$0F7B
|
||||
STA.l $7F0042, X
|
||||
ORA.w #$4000
|
||||
STA.l $7F0040, X
|
||||
ORA.w #$8000
|
||||
STA.l $7F0000, X
|
||||
AND.w #$BFFF
|
||||
STA.l $7F0002, X
|
||||
JMP .done
|
||||
+
|
||||
|
||||
AND.w #$000F
|
||||
BEQ +
|
||||
LDA.w #$1400
|
||||
STA.b $0C
|
||||
+
|
||||
|
||||
LDA.b $CA
|
||||
AND.w #$00FF
|
||||
ASL A : ASL A
|
||||
TAY
|
||||
|
||||
macro DrawQuadrant(quadrant, writeOffset)
|
||||
?DrawQuadrant:
|
||||
LDA.w SupertileRoomShapes+<quadrant>, Y
|
||||
AND.w #$00FF
|
||||
CMP.w #$00FF : BEQ ?.empty
|
||||
CLC : ADC.w #$0340
|
||||
ORA.w #(3-<quadrant>)<<14
|
||||
PHA
|
||||
LDA.b $0E
|
||||
AND.w #1<<(3-<quadrant>)
|
||||
BNE ?.visited
|
||||
PLA
|
||||
ORA.b $0C
|
||||
BRA ?.write
|
||||
?.visited
|
||||
PLA
|
||||
ORA.w #$0800
|
||||
?.write
|
||||
STA.l $7F0000+<writeOffset>, X
|
||||
?.empty
|
||||
endmacro
|
||||
|
||||
%DrawQuadrant(0, $00)
|
||||
%DrawQuadrant(1, $02)
|
||||
%DrawQuadrant(2, $40)
|
||||
%DrawQuadrant(3, $42)
|
||||
|
||||
.done
|
||||
PLB
|
||||
RTL
|
||||
@@ -0,0 +1,101 @@
|
||||
CheckSwitchMap:
|
||||
SEP #$20
|
||||
LDA.b $F6
|
||||
AND.b #$30
|
||||
BNE +
|
||||
|
||||
; what we wrote over
|
||||
REP #$20
|
||||
LDA.w $8AF5E9, X
|
||||
AND.w #$000F
|
||||
CLC : ADC.b $00
|
||||
RTL
|
||||
|
||||
+ PHA
|
||||
TXA
|
||||
ASL A
|
||||
TAX
|
||||
PLA
|
||||
BIT.b #$20
|
||||
BNE +
|
||||
INX
|
||||
+ LDA.l DungeonMapData.prev, X
|
||||
STA.w DungeonID
|
||||
|
||||
LDA.b #$04
|
||||
STA.w $0200
|
||||
REP #$20
|
||||
LDA.w #$0000
|
||||
RTL
|
||||
|
||||
DungeonMapSwitch_Submodule:
|
||||
; LDA.b $9B
|
||||
; STA.l $7EC229
|
||||
|
||||
JSL $80893D
|
||||
JSL $80833F
|
||||
; LDA.l $7EC229
|
||||
; STA.b $9B
|
||||
|
||||
LDA.b #$09
|
||||
STA.b $14
|
||||
STA.w $0710
|
||||
|
||||
LDA.b #$01
|
||||
STA.w $0200
|
||||
STA.w $020D
|
||||
STZ.w $021B
|
||||
STZ.w $021C
|
||||
STZ.b $06
|
||||
STZ.b $07
|
||||
|
||||
LDA.w DungeonID
|
||||
ASL A
|
||||
TAX
|
||||
LDA.l DungeonMapData.floor, X
|
||||
STA.b $A4
|
||||
|
||||
REP #$20
|
||||
JML $98BC8A
|
||||
|
||||
SkipMapSprites:
|
||||
STZ.b $00
|
||||
STZ.b $0E
|
||||
|
||||
LDA.w $0200
|
||||
CMP.b #$04
|
||||
BNE +
|
||||
JML $8AEAFC
|
||||
+ LDA.l $7EC22A
|
||||
CMP.w DungeonID
|
||||
BEQ +
|
||||
JML $8AEAF3
|
||||
+ JML $8AEADE
|
||||
|
||||
CacheCurrentDungeon:
|
||||
STA.l $7EC206
|
||||
SEP #$20
|
||||
LDA.w DungeonID
|
||||
STA.l $7EC22A
|
||||
LDA.b $A4
|
||||
STA.l $7EC22B
|
||||
REP #$20
|
||||
RTL
|
||||
|
||||
RestoreCurrentDungeon:
|
||||
LDA.b #$F3
|
||||
STA.w $012C ; what we wrote over
|
||||
LDA.l $7EC22A
|
||||
STA.w DungeonID
|
||||
LDA.l $7EC22B
|
||||
STA.b $4A
|
||||
RTL
|
||||
|
||||
RestoreDungeonMapFloorIndex:
|
||||
STZ.w $020F
|
||||
LDA.w $021B
|
||||
STA.b $07
|
||||
STZ.b $06
|
||||
LDA.b $0A
|
||||
AND.b #$08
|
||||
RTL
|
||||
@@ -0,0 +1,105 @@
|
||||
; move aga boss icon to correct room
|
||||
org $8AEE75
|
||||
db $08
|
||||
|
||||
; change dungeon map subsheet gfx in TR
|
||||
org $80DDC9
|
||||
db $57
|
||||
|
||||
; Dungeon Map Palettes 2-5 left half
|
||||
org $9BE544
|
||||
dw $0000, $71E7, $7FFF, $3B5F, $0000, $0000, $7EB5, $1CE7
|
||||
|
||||
org $9BE564
|
||||
dw $0000, $34E0, $7FFF, $34E0, $34E0, $0000, $7EB5, $1CE7
|
||||
|
||||
org $9BE584
|
||||
dw $0000, $71E7, $2DFF, $3B5F, $7FFF, $0000, $0018, $1CE7
|
||||
|
||||
org $9BE5A4
|
||||
dw $0000, $34E0, $7FFF, $2656, $34E0, $0000, $7EB5, $1CE7
|
||||
|
||||
; move BG1 to main screen in dungeon map screen
|
||||
org $8AE130
|
||||
LDA.b #$17 : STA.b $1C
|
||||
LDA.b #$00 : STA.b $1D
|
||||
|
||||
; make skull icon blink opposite our loot icons
|
||||
org $8AEE2B
|
||||
AND.b #$10
|
||||
NOP #2
|
||||
db $F0 ; BEQ to replace BCS
|
||||
|
||||
;================================================================================
|
||||
; Overhaul of Dungeon Map Screen
|
||||
;--------------------------------------------------------------------------------
|
||||
org $8AE64F
|
||||
PLX
|
||||
JSL DrawDungeonMapRoom
|
||||
JMP.w $8AE7F2
|
||||
|
||||
org $8AE152
|
||||
JSL LoadLastHUDPalette
|
||||
|
||||
;================================================================================
|
||||
; Swapping Dungeon in Dungeon Map Screen (L/R)
|
||||
;--------------------------------------------------------------------------------
|
||||
org $8AE9A7
|
||||
JSL CheckSwitchMap
|
||||
BRA + : NOP #3 : +
|
||||
|
||||
org $8AEF06
|
||||
DEC.b $13
|
||||
BNE +
|
||||
JML DungeonMapSwitch_Submodule
|
||||
+ RTL
|
||||
warnpc $8AEF29
|
||||
|
||||
org $8AEADA
|
||||
JML SkipMapSprites
|
||||
|
||||
org $8AE9C7
|
||||
JSL RestoreDungeonMapFloorIndex
|
||||
NOP
|
||||
|
||||
org $98BC86
|
||||
JSL CacheCurrentDungeon
|
||||
|
||||
org $8AEFC5
|
||||
JSL RestoreCurrentDungeon
|
||||
NOP
|
||||
|
||||
;================================================================================
|
||||
; Show indicators of what is left in each room
|
||||
;--------------------------------------------------------------------------------
|
||||
org $8AEABA
|
||||
JSL RedrawLoot
|
||||
NOP
|
||||
|
||||
org $8AE42B
|
||||
JSL FirstDrawLoot
|
||||
|
||||
;================================================================================
|
||||
; Blink indicators of what is left in each room
|
||||
;--------------------------------------------------------------------------------
|
||||
org $8AE964
|
||||
JSL BlinkLoot
|
||||
|
||||
org $8AE235
|
||||
JSL WriteBigEndianAddressX
|
||||
org $8AE290
|
||||
JSL WriteBigEndianAddressY
|
||||
org $8AE350
|
||||
JSL WriteBigEndianAddressY
|
||||
|
||||
org $8AE206
|
||||
JSL StartDoubleWrite
|
||||
NOP
|
||||
|
||||
org $8AE2E0
|
||||
JML CheckDoubleWrite
|
||||
NOP
|
||||
|
||||
org $8AE21C
|
||||
JSL DrawMountain
|
||||
BRA + : NOP #9 : +
|
||||
@@ -0,0 +1,33 @@
|
||||
pushpc
|
||||
incsrc hooks.asm
|
||||
|
||||
macro WriteGFXSheetPointer(sheet, location)
|
||||
pushpc
|
||||
org $80CFC0+<sheet>
|
||||
db <location>>>16
|
||||
|
||||
org $80D09F+<sheet>
|
||||
db <location>>>8
|
||||
|
||||
org $80D17E+<sheet>
|
||||
db <location>>>0
|
||||
|
||||
pullpc
|
||||
endmacro
|
||||
|
||||
%WriteGFXSheetPointer($C9, DungeonMapIcons1)
|
||||
%WriteGFXSheetPointer($CA, DungeonMapIcons2)
|
||||
|
||||
%WriteGFXSheetPointer($D5, DungeonMapIcons1)
|
||||
%WriteGFXSheetPointer($D6, DungeonMapIcons2)
|
||||
|
||||
%WriteGFXSheetPointer($D4, MapSheetD4)
|
||||
|
||||
pullpc
|
||||
|
||||
incsrc draw_rooms.asm
|
||||
incsrc map_bg3.asm
|
||||
incsrc dungeon_switch.asm
|
||||
incsrc draw_loot.asm
|
||||
incsrc check_loot.asm
|
||||
incsrc blink_loot.asm
|
||||
@@ -0,0 +1,96 @@
|
||||
pushpc
|
||||
org $809383
|
||||
db BG3DungeonMapStripes>>0
|
||||
|
||||
org $80938C
|
||||
db BG3DungeonMapStripes>>8
|
||||
|
||||
org $809395
|
||||
db BG3DungeonMapStripes>>16
|
||||
pullpc
|
||||
|
||||
LoadLastHUDPalette:
|
||||
; what we wrote over
|
||||
JSL $9BEE52
|
||||
|
||||
REP #$20
|
||||
LDA.l MapHUDPalette
|
||||
STA.l PaletteBuffer+$3A
|
||||
LDA.l MapHUDPalette+2
|
||||
STA.l PaletteBuffer+$3C
|
||||
LDA.l MapHUDPalette+4
|
||||
STA.l PaletteBuffer+$3E
|
||||
SEP #$20
|
||||
RTL
|
||||
|
||||
BG3DungeonMapStripes:
|
||||
; boring stuff from vanilla
|
||||
dw $4260, $0100, $2100
|
||||
dw $4360, $0E40, $2101
|
||||
dw $4B60, $0100, $6100
|
||||
dw $6260, $2EC0, $2110
|
||||
dw $6B60, $2EC0, $6110
|
||||
dw $6263, $0100, $A100
|
||||
dw $6363, $0E40, $A101
|
||||
dw $6B63, $0100, $E100
|
||||
dw $8460, $0B00, $2102, $2103, $2104, $2105, $2106, $2107
|
||||
dw $A460, $0B00, $2112, $2113, $2114, $2115, $2116, $2117
|
||||
dw $4E60, $0100, $2100
|
||||
dw $4F60, $1A40, $2101
|
||||
dw $5D60, $0100, $6100
|
||||
dw $6E60, $2EC0, $2110
|
||||
dw $7D60, $2EC0, $6110
|
||||
dw $6E63, $0100, $A100
|
||||
dw $6F63, $1A40, $A101
|
||||
dw $7D63, $0100, $E100
|
||||
dw $0060, $7E40, $2111
|
||||
dw $8063, $3E41, $2111
|
||||
dw $0060, $3EC0, $2111
|
||||
dw $0160, $3EC0, $2111
|
||||
dw $0C60, $3EC0, $2111
|
||||
dw $0D60, $3EC0, $2111
|
||||
dw $1E60, $3EC0, $2111
|
||||
dw $1F60, $3EC0, $2111
|
||||
|
||||
; new stuff here:
|
||||
; horizontal borders
|
||||
dw $7260, $1340, $1D11
|
||||
dw $D261, $1340, $1D11
|
||||
dw $F261, $1340, $1D11
|
||||
dw $5263, $1340, $1D11
|
||||
|
||||
; vertical borders
|
||||
dw $7160, $2FC0, $1D11
|
||||
dw $7C60, $2FC0, $1D11
|
||||
|
||||
macro TopOfSquares(start)
|
||||
; silly Big Endian
|
||||
db <start>>>8, <start>, $00, $13
|
||||
dw $5D4C, $1D4C, $5D4C, $1D4C, $5D4C, $1D4C, $5D4C, $1D4C, $5D4C, $1D4C
|
||||
endmacro
|
||||
|
||||
macro BottomOfSquares(start)
|
||||
; silly Big Endian
|
||||
db <start>>>8, <start>, $00, $13
|
||||
dw $DD4C, $9D4C, $DD4C, $9D4C, $DD4C, $9D4C, $DD4C, $9D4C, $DD4C, $9D4C
|
||||
endmacro
|
||||
|
||||
macro FullRow(start)
|
||||
%TopOfSquares(<start>)
|
||||
%BottomOfSquares(<start>+$20)
|
||||
endmacro
|
||||
|
||||
; top grid
|
||||
%FullRow($6092)
|
||||
%FullRow($60D2)
|
||||
%FullRow($6112)
|
||||
%FullRow($6152)
|
||||
%FullRow($6192)
|
||||
|
||||
%FullRow($6212)
|
||||
%FullRow($6252)
|
||||
%FullRow($6292)
|
||||
%FullRow($62D2)
|
||||
%FullRow($6312)
|
||||
|
||||
db $FF
|
||||
@@ -0,0 +1,83 @@
|
||||
; $B9F000
|
||||
SupertileRoomShapes:
|
||||
incsrc data/supertile_shapes.asm
|
||||
warnpc $B9F400
|
||||
|
||||
org $B9F400
|
||||
DungeonMapData:
|
||||
db $02, $04, $00, $00 ; Sewers
|
||||
db $1A, $00, $00, $00 ; Hyrule Castle
|
||||
db $00, $06, $00, $00 ; Eastern Palace
|
||||
db $04, $14, $00, $00 ; Desert Palace
|
||||
db $14, $0C, $01, $00 ; Castle Tower
|
||||
db $0C, $10, $00, $00 ; Swamp Palace
|
||||
db $08, $0A, $00, $00 ; Palace of Darkness
|
||||
db $12, $18, $00, $00 ; Misery Mire
|
||||
db $0A, $16, $FF, $00 ; Skull Woods
|
||||
db $16, $0E, $00, $00 ; Ice Palace
|
||||
db $06, $08, $01, $00 ; Tower of Hera
|
||||
db $10, $12, $00, $00 ; Thieves Town
|
||||
db $0E, $1A, $00, $00 ; Turtle Rock
|
||||
db $18, $02, $01, $00 ; Ganon's Tower
|
||||
db $1A, $02, $00, $00 ; Extra
|
||||
db $1A, $02, $00, $00 ; Extra
|
||||
|
||||
struct DungeonMapData DungeonMapData
|
||||
.prev: skip 1
|
||||
.next: skip 1
|
||||
.floor: skip 1
|
||||
.unused: skip 1
|
||||
endstruct
|
||||
|
||||
; $B9F480
|
||||
LootTypeIcons:
|
||||
dw $1300, $1300, $1300, $1300 ; 00 - nothing
|
||||
dw $334D, $734D, $335D, $735D ; 01 - unknown - basic chest
|
||||
dw $330D, $730D, $333D, $733D ; 02 - junk - pot
|
||||
dw $3307, $3308, $3317, $3318 ; 03 - small key
|
||||
dw $330A, $730A, $333A, $733A ; 04 - triforce piece
|
||||
dw $330C, $730C, $333C, $733C ; 05 - safety - heart
|
||||
dw $330E, $730E, $333E, $733E ; 06 - compass
|
||||
dw $3307, $3308, $3317, $3318 ; 07 - small key
|
||||
dw $3305, $7305, $3315, $3316 ; 08 - big key
|
||||
dw $3309, $7309, $3339, $7339 ; 09 - pendant
|
||||
dw $330F, $730F, $333F, $733F ; 0A - inventory item - big chest
|
||||
dw $3309, $7309, $3339, $7339 ; 0B - also pendant
|
||||
dw $3303, $7303, $B303, $F303 ; 0C - crystal
|
||||
dw $330A, $730A, $333A, $733A ; 0D - triforce piece
|
||||
dw $330B, $730B, $333B, $733B ; 0E - triforce
|
||||
dw $1300, $1300, $1300, $1300 ; 0F - empty (reserved)
|
||||
|
||||
; $B9F500
|
||||
LootTypeMapping:
|
||||
incsrc data/item_mapping.asm
|
||||
|
||||
; $B9F600
|
||||
; Room ID mappings to bit to check for presence and address of item drop
|
||||
MiscLocations:
|
||||
dw $00C8 : db $04 : dl HeartContainer_ArmosKnights
|
||||
dw $0033 : db $04 : dl HeartContainer_Lanmolas
|
||||
dw $0007 : db $04 : dl HeartContainer_Moldorm
|
||||
|
||||
dw $005A : db $04 : dl HeartContainer_HelmasaurKing
|
||||
dw $0006 : db $04 : dl HeartContainer_Arrghus
|
||||
dw $0029 : db $04 : dl HeartContainer_Mothula
|
||||
dw $00AC : db $04 : dl HeartContainer_Blind
|
||||
dw $00DE : db $04 : dl HeartContainer_Kholdstare
|
||||
dw $0090 : db $04 : dl HeartContainer_Vitreous
|
||||
dw $00A4 : db $04 : dl HeartContainer_Trinexx
|
||||
|
||||
dw $0073 : db $05 : dl BonkKey_Desert ; torch
|
||||
dw $008C : db $05 : dl BonkKey_GTower ; torch
|
||||
dw $0087 : db $05 : dl StandingKey_Hera
|
||||
|
||||
dw $FFFF : db $FF : dl $FFFFFF ; Placeholders
|
||||
dw $FFFF : db $FF : dl $FFFFFF
|
||||
dw $FFFF : db $FF : dl $FFFFFF
|
||||
dw $FFFF
|
||||
|
||||
; $B9F682
|
||||
MapHUDPalette:
|
||||
dw $0000, $3ED8, $2E54
|
||||
|
||||
; $B9F688
|
||||
@@ -1,10 +1,6 @@
|
||||
LoadUnderworldSprites:
|
||||
STA.b Scrap00 ; part one of what we replaced
|
||||
if !FEATURE_FIX_BASEROM
|
||||
LDA.w #$89
|
||||
else
|
||||
LDA.w #UWSpritesData>>16 ; set the bank to 28 for now
|
||||
endif
|
||||
LDA.w #UWSpritesData>>16 ; set the bank to 28 for now
|
||||
STA.b Scrap02
|
||||
LDA.w $048E
|
||||
RTL
|
||||
|
||||
@@ -98,10 +98,18 @@ else
|
||||
endif
|
||||
UWPotsPointers: ; 0x250 bytes for 0x128 rooms' 16-bit pointers
|
||||
|
||||
org $89DACE
|
||||
if !FEATURE_FIX_BASEROM
|
||||
org $01DDE7
|
||||
else
|
||||
org $89DACE
|
||||
endif
|
||||
UWPotsData: ; variable number of bytes (max 0x11D1) for all pots data
|
||||
|
||||
org $A88000
|
||||
if !FEATURE_FIX_BASEROM
|
||||
org $89D92E
|
||||
else
|
||||
org $A88000
|
||||
endif
|
||||
UWSpritesData: ; variable number of bytes (max 0x2800) for all sprites and sprite drop data
|
||||
; First $2800 bytes of this bank (28) is reserved for the sprite tables
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -274,6 +274,7 @@ GFXSheetPointers_background_bank = $80CFC0
|
||||
GFXSheetPointers_background_high = $80D09F
|
||||
GFXSheetPointers_background_low = $80D17E
|
||||
LayerOfDestination = $81C31F
|
||||
RoomData_ChestItems = $81E96C
|
||||
AnimatedTileSheets = $82802E
|
||||
Module1B_SpawnSelect_spawns = $828481
|
||||
Overworld_ActualScreenID = $82A4E3
|
||||
|
||||
Reference in New Issue
Block a user