17 Commits
25 changed files with 606 additions and 51 deletions
+1
View File
@@ -213,6 +213,7 @@ incsrc gk/variable_ganon_vulnerability.asm
incsrc gk/pseudoflute.asm incsrc gk/pseudoflute.asm
incsrc gk/fast_junk.asm incsrc gk/fast_junk.asm
incsrc gk/dungeon_maps.asm incsrc gk/dungeon_maps.asm
incsrc gk/dungeon_indicator.asm
print "End of B9: ", pc print "End of B9: ", pc
warnpc $B9EE00 warnpc $B9EE00
+1 -1
View File
@@ -246,7 +246,7 @@ FixSwimBump:
.normal .normal
LDA.b LinkJumping : BNE .continue ; what we wrote over LDA.b LinkJumping : BNE .continue ; what we wrote over
.not_diving .not_diving
PLA : PLA : PEA.w $87964E ; skip ahead, not diving PLA : PLA : PEA.w $87964D ; skip ahead, not diving
.continue .continue
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
+2 -2
View File
@@ -599,7 +599,7 @@ skip $10
BigKeyStatus: ;27f040 (status 2 indicate BnC guard) BigKeyStatus: ;27f040 (status 2 indicate BnC guard)
dw $0002, $0002, $0001, $0001, $0000, $0001, $0001, $0001, $0001, $0001, $0001, $0001, $0001, $0001, $0000, $0000 dw $0002, $0002, $0001, $0001, $0000, $0001, $0001, $0001, $0001, $0001, $0001, $0001, $0001, $0001, $0000, $0000
DungeonReminderTable: ;27f060 DungeonReminderTable: ;27f060
dw $2D50, $2D50, $2D51, $2D52, $2D54, $2D56, $2D55, $2D5A, $2D57, $2D59, $2D53, $2D58, $2D5B, $2D5C, $0000, $0000 dw $2DA4, $2DA4, $2DA5, $2DA6, $2DA8, $2DAA, $2DA9, $2DAE, $2DAB, $2DAD, $2DA7, $2DAC, $2DAF, $2DB0, $0000, $0000
TotalLocationsLow: ;27f080 TotalLocationsLow: ;27f080
db $08, $08, $06, $06, $02, $00, $04, $08, $08, $08, $06, $08, $02, $07, $00, $00 db $08, $08, $06, $06, $02, $00, $04, $08, $08, $08, $06, $08, $02, $07, $00, $00
TotalLocationsHigh: ;27f090 TotalLocationsHigh: ;27f090
@@ -696,4 +696,4 @@ dw $ffff
OldManDarkWorld: OldManDarkWorld:
dw $ffff dw $ffff
OldManRetrievalWorld: OldManRetrievalWorld:
dw $0000 dw $0000
+37 -16
View File
@@ -1,10 +1,11 @@
!BlankTile = $207F !BlankTile = $207F
!SlashTile = $2830 !SlashTile = $2830
!PlusTile = $2404
!HyphenTile = $2405 !HyphenTile = $2405
!LTile = $2D68 !LTile = $2D68
!DTile = $2D60 !DTile = $2D60
!RedSquare = $345E
!BlueSquare = $2C5E !BlueSquare = $2C5E
!BossIcon = $253C
DrHudOverride: DrHudOverride:
PHB PHB
@@ -46,7 +47,7 @@ DRHUD_BossIndicator:
SEP #$20 SEP #$20
BEQ .draw_indicator BEQ .draw_indicator
LDA.l CompassBossIndicator, x : CMP.b RoomIndex : BNE .draw_indicator LDA.l CompassBossIndicator, x : CMP.b RoomIndex : BNE .draw_indicator
LDY.w #!RedSquare LDY.w #!BossIcon
.draw_indicator .draw_indicator
STY.w HUDMultiIndicator STY.w HUDMultiIndicator
BRA DRHUD_DrawCurrentDungeonIndicator BRA DRHUD_DrawCurrentDungeonIndicator
@@ -71,13 +72,12 @@ DRHUD_DrawCurrentDungeonIndicator: ; mX
CMP.b #$06 : BEQ .draw_indicator CMP.b #$06 : BEQ .draw_indicator
.get_indicator .get_indicator
REP #$20 : LDA.l DungeonReminderTable,X : TAY LDY.w #$2C28
SEP #$20
.draw_indicator .draw_indicator
STY.w HUDCurrentDungeonWorld STY.w HUDCurrentDungeonWorld
DRHUD_DrawKeyCounter: DRHUD_DrawKeyCounter:
LDA.l DRFlags : AND.b #$04 : BEQ DRHUD_Finished LDA.l DRFlags : AND.b #$04 : BEQ .to_finished
LDA.l CompassMode : BIT.b #$03 : BEQ DRHUD_Finished LDA.l CompassMode : BIT.b #$03 : BEQ DRHUD_Finished
REP #$20 REP #$20
BIT.w #$0002 : BNE .skip_map_check BIT.w #$0002 : BNE .skip_map_check
@@ -90,8 +90,17 @@ DRHUD_DrawKeyCounter:
LDA.l GenericKeys : LSR : BCS .total_only LDA.l GenericKeys : LSR : BCS .total_only
LDA.w DungeonCollectedKeys, X : JSR ConvertToDisplay : STA.w HUDKeysObtained LDA.w DungeonCollectedKeys, X : JSR ConvertToDisplay : STA.w HUDKeysObtained
LDA.w #!SlashTile : STA.w HUDKeysSlash LDA.w #!SlashTile : STA.w HUDKeysSlash
LDA.l ExtraChestKeys, X : AND.w #$00FF : BEQ .total_only
JSR ConvertToDisplay : STA.w HUDKeysExtraCount
LDA.w #!PlusTile : STA.w HUDKeysExtraPlus
.total_only .total_only
LDA.l ChestKeys, x : JSR ConvertToDisplay : STA.w HUDKeysTotal SEP #$20
LDA.l ChestKeys, X : SEC : SBC.l ExtraChestKeys, X
REP #$20
JSR ConvertToDisplay : STA.w HUDKeysTotal
.to_finished
JMP DRHUD_Finished JMP DRHUD_Finished
OWRHUD_DrawWorldIndicator: OWRHUD_DrawWorldIndicator:
@@ -292,17 +301,29 @@ BossStatus:
; default palette 3 - white ; default palette 3 - white
LDA.l DungeonReminderTable, X : RTS LDA.l DungeonReminderTable, X : RTS
ConvertToDisplay: ConvertToDisplay: ; transparent background
and.w #$00ff : cmp.w #$000a : !BLT + AND.w #$00FF
!ADD.w #$2519 : rts CMP.w #$000A : BCC .under10
+ !ADD.w #$2490 : rts CMP.w #$000C : BCC .under12
.over11
CLC : ADC.w #$2553 : RTS
.under12
CLC : ADC.w #$2519 : RTS
.under10
CLC : ADC.w #$2490 : RTS
ConvertToDisplay2: ConvertToDisplay2: ; solid background
and.w #$00ff : beq ++ AND.w #$00FF : BEQ .zero
cmp.w #$000a : !BLT + CMP.w #$000A : BCC .under10
!ADD.w #$2517 : rts ; 2580 with 258A as "A" for non transparent digits CMP.w #$000C : BCC .under12
+ !ADD.w #$2816 : rts .over11
++ lda.w #$2827 : rts ; 0/O for 0 or placeholder digit ;2483 CLC : ADC.w #$2580 : RTS
.under12
CLC : ADC.w #$2517 : RTS
.under10
CLC : ADC.w #$2816 : RTS
.zero
LDA.w #$2827 : RTS
CountAbsorbedKeys: CountAbsorbedKeys:
JML IncrementSmallKeysNoPrimary JML IncrementSmallKeysNoPrimary
+1
View File
@@ -857,6 +857,7 @@ RTL
Kiki_DontScareTheMonke: Kiki_DontScareTheMonke:
LDA.b LinkJumping : BEQ .return LDA.b LinkJumping : BEQ .return
CMP.b #$02 : BEQ .no_spook ; needed for quake usage CMP.b #$02 : BEQ .no_spook ; needed for quake usage
LDA.b GameMode : CMP.b #$0F : BEQ .no_spook ; needed for entrance transitions
LDA.w NoDamage : BNE .no_spook LDA.w NoDamage : BNE .no_spook
LDA.w LinkThud : BNE .no_spook LDA.w LinkThud : BNE .no_spook
.spook .spook
+21 -13
View File
@@ -17,7 +17,7 @@ CheckLoot:
STA.b $0E STA.b $0E
LDA.b $CA LDA.b $CA
AND.w #$00FF AND.w #$01FF
ASL A ASL A
TAX TAX
@@ -31,6 +31,10 @@ CheckLoot:
STA.b $0E STA.b $0E
+ LDA.w DungeonID + LDA.w DungeonID
AND.w #$00FF
CMP.w #$00FF
BEQ .skip_dungeon_checks
TAX TAX
LDA.l MapField LDA.l MapField
@@ -52,6 +56,8 @@ CheckLoot:
STA.b $0E STA.b $0E
+ +
.skip_dungeon_checks
LDA.l ItemSources : BIT.w #$0001 : BEQ + LDA.l ItemSources : BIT.w #$0001 : BEQ +
JSR CheckChests JSR CheckChests
+ +
@@ -82,7 +88,7 @@ CheckLoot:
CheckChests: CheckChests:
LDA.b $CA LDA.b $CA
AND.w #$00FF AND.w #$01FF
STA.b $00 STA.b $00
ASL A ASL A
TAX TAX
@@ -141,7 +147,7 @@ CheckBoss:
+ +
LDA.b $CA LDA.b $CA
AND.w #$00FF AND.w #$01FF
STA.b $04 STA.b $04
LDX.w #$FFFA LDX.w #$FFFA
@@ -196,7 +202,7 @@ CheckBoss:
CheckPrize: CheckPrize:
LDA.b $CA LDA.b $CA
AND.w #$00FF AND.w #$01FF
STA.b $04 STA.b $04
LDX.w #$FFFD LDX.w #$FFFD
@@ -232,7 +238,7 @@ CheckPrize:
CheckPots: CheckPots:
LDA.b $CA LDA.b $CA
AND.w #$00FF AND.w #$01FF
ASL A ASL A
TAX TAX
@@ -298,7 +304,7 @@ CheckPots:
+ +
LDA.b $CA LDA.b $CA
AND.w #$00FF AND.w #$01FF
ASL A ASL A
TAX TAX
if !FEATURE_FIX_BASEROM if !FEATURE_FIX_BASEROM
@@ -336,7 +342,7 @@ CheckJunkPot:
+ +
LDA.b $CA LDA.b $CA
AND.w #$00FF AND.w #$01FF
ASL A ASL A
TAX TAX
LDA.l PotCollectionRateTable, X LDA.l PotCollectionRateTable, X
@@ -364,7 +370,7 @@ endif
CheckEnemies: CheckEnemies:
LDA.b $CA LDA.b $CA
AND.w #$00FF AND.w #$01FF
ASL A ASL A
TAX TAX
@@ -454,7 +460,7 @@ CheckEnemies:
+ +
LDA.b $CA LDA.b $CA
AND.w #$00FF AND.w #$01FF
ASL A ASL A
TAX TAX
@@ -484,7 +490,9 @@ GetLootClass:
CMP.w #$0080 : BNE .not_compass CMP.w #$0080 : BNE .not_compass
.compass .compass
LDA.l AlwaysShowCompass : BNE .check_value LDA.l AlwaysShowCompass
AND.w #$00FF
BNE .check_value
.not_compass .not_compass
LDA.b $0E LDA.b $0E
@@ -532,7 +540,7 @@ macro DefineGetFooSection(type, offset)
Get<type>Section: Get<type>Section:
PHX PHX
LDA.b $CA LDA.b $CA
AND.w #$00FF AND.w #$01FF
ASL A ASL A
TAX TAX
LDA.l SplitRooms, X LDA.l SplitRooms, X
@@ -580,13 +588,13 @@ Check<type>Section:
STA.b $CC STA.b $CC
LDA.b $CB LDA.b $CB
AND.w #$00FF AND.w #$00F0
BEQ .yes BEQ .yes
JSR Get<type>Section JSR Get<type>Section
LDA.b $CB LDA.b $CB
AND.w #$00FF AND.w #$00F0
LSR A : LSR A : LSR A : LSR A LSR A : LSR A : LSR A : LSR A
DEC A DEC A
CMP.b $CE CMP.b $CE
+342 -2
View File
@@ -61,7 +61,24 @@ SplitRooms:
%d(.no) : %d(.d1) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.d6) : %d(.no) %d(.no) : %d(.d1) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.d6) : %d(.no)
%d(.no) : %d(.no) : %d(.no) : %d(.db) : %d(.no) : %d(.no) : %d(.no) : %d(.no) %d(.no) : %d(.no) : %d(.no) : %d(.db) : %d(.no) : %d(.no) : %d(.no) : %d(.no)
%d(.no) ; E0
%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no)
%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no)
; F0
%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no)
%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no)
; 100
%d(.no) : %d(.101) : %d(.no) : %d(.103) : %d(.no) : %d(.no) : %d(.106) : %d(.107)
%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.10c) : %d(.no) : %d(.10e) : %d(.no)
; 110
%d(.no) : %d(.no) : %d(.112) : %d(.no) : %d(.114) : %d(.115) : %d(.no) : %d(.no)
%d(.no) : %d(.no) : %d(.no) : %d(.11b) : %d(.11c) : %d(.no) : %d(.11e) : %d(.11f)
; 120
%d(.120) : %d(.no) : %d(.122) : %d(.no) : %d(.124) : %d(.125) : %d(.126) : %d(.no)
.no .no
db $00 db $00
@@ -435,7 +452,7 @@ db $01
%d(..areas) : %d(..doors) : %d(.no_items) : %d(.no_items) : %d(.no_items) : %d(.no_items) %d(..areas) : %d(..doors) : %d(.no_items) : %d(.no_items) : %d(.no_items) : %d(.no_items)
..areas ..areas
db $02, $00, $80, $00, $FF db $02, $00, $80, $00, $FF
db $01, $34, $D4, $B8, $FF db $01, $34, $44, $B4, $FF
db $FF db $FF
..doors ..doors
db $03, $06 db $03, $06
@@ -569,3 +586,326 @@ db $FF
..chests ..chests
db $01 db $01
db $FF db $FF
.101 ; East Snitch House (2) // West Snitch House (1)
db $01
%sq($00)
%d(..areas) : %d(..doors) : %d(.no_items)
%d(.no_items) : %d(..pots) : %d(..enemies)
..areas
db $03, $00, $7F, $00, $FF
db $FF
..doors
db $06
db $FF
..pots
db $00
db $FF
..enemies
db $00
db $FF
.103 ; Man With Beds (3) // Front of Tavern (2) // Back of Tavern (1)
db $02
%sq($00)
%d(..areas3) : %d(..doors3) : %d(.no_items)
%d(.no_items) : %d(.no_items) : %d(..enemies3)
%sq($00)
%d(..areas2) : %d(..doors2) : %d(.no_items)
%d(.no_items) : %d(..pots2) : %d(..enemies2)
..areas3
db $03, $80, $FF, $00, $FF
db $FF
..doors3
db $08
db $FF
..enemies3
db $02
db $FF
..areas2
db $03, $00, $7F, $50, $FF
db $FF
..doors2
db $06
db $FF
..pots2
db $02
db $FF
..enemies2
db $00
db $01
db $FF
.106 ; VoO Chest Game (2) // Brewery (1)
db $01
%sq($00)
%d(..areas) : %d(..doors) : %d(.no_items)
%d(.no_items) : %d(.no_items) : %d(..enemies)
..areas
db $03, $00, $7F, $00, $FF
db $FF
..doors
db $06
db $FF
..enemies
db $00
db $FF
.107 ; Library (2) // Bomb Refill Hut (1)
db $01
%sq($00)
%d(..areas) : %d(..doors) : %d(.no_items)
%d(.no_items) : %d(.no_items) : %d(.no_items)
..areas
db $03, $00, $7F, $00, $FF
db $FF
..doors
db $06
db $FF
.10c ; Mimic Cave (2) // Hookshot Fairy Pot (1)
db $01
%sq($00)
%d(..areas) : %d(..doors) : %d(.no_items)
%d(..chests) : %d(.no_items) : %d(..enemies)
..areas
db $03, $00, $7F, $00, $FF
db $FF
..doors
db $06
db $FF
..chests
db $00
db $FF
..enemies
db $04
db $05
db $06
db $07
db $FF
.10e ; Storyteller (2) // Storyteller (1)
db $01
%sq($00)
%d(..areas) : %d(..doors) : %d(.no_items)
%d(.no_items) : %d(.no_items) : %d(..enemies)
..areas
db $03, $00, $7F, $00, $FF
db $FF
..doors
db $06
db $FF
..chests
db $FF
..pots
db $FF
..enemies
db $00
db $FF
.112 ; Dark Chapel (2) // Store (1)
db $01
%sq($00)
%d(..areas) : %d(..doors) : %d(.no_items)
%d(.no_items) : %d(.no_items) : %d(..enemies)
..areas
db $03, $00, $7F, $00, $FF
db $FF
..doors
db $06
db $FF
..enemies
db $00
db $FF
.114 ; Waterfall Fairy (2) // Hint NPC (1)
db $01
%sq($00)
%d(..areas) : %d(..doors) : %d(.no_items)
%d(..chests) : %d(.no_items) : %d(..enemies)
..areas
db $03, $00, $7F, $00, $FF
db $FF
..doors
db $06
db $FF
..chests
db $00
db $01
db $FF
..enemies
db $00
db $FF
.115 ; Capacity Fairy (1) // Healing Fairy (2)
db $01
%sq($00)
%d(..areas) : %d(..doors) : %d(.no_items)
%d(.no_items) : %d(.no_items) : %d(..enemies)
..areas
db $03, $80, $FF, $80, $FF
db $FF
..doors
db $08
db $FF
..enemies
db $00
db $FF
.11b ; Cave 45 (2) // Graveyard Ledge (1)
db $01
%sq($00)
%d(..areas) : %d(..doors) : %d(.no_items)
%d(.no_items) : %d(..pots) : %d(..enemies)
..areas
db $03, $00, $7F, $00, $FF
db $FF
..doors
db $06
db $FF
..pots
db $00
db $01
db $02
db $03
db $04
db $05
db $FF
..enemies
db $01
db $FF
.11c ; Bomb Shop (2) // C-Shaped House (1)
db $01
%sq($00)
%d(..areas) : %d(..doors) : %d(.no_items)
%d(.no_items) : %d(.no_items) : %d(..enemies)
..areas
db $03, $00, $7F, $00, $FF
db $FF
..doors
db $06
db $FF
..enemies
db $00
db $FF
.11e ; Long Fairy Cave (2) // Hype Cave (1)
db $01
%sq($00)
%d(..areas) : %d(..doors) : %d(.no_items)
%d(.no_items) : %d(.no_items) : %d(..enemies)
..areas
db $03, $00, $7F, $00, $FF
db $FF
..doors
db $06
db $FF
..enemies
db $00
db $01
db $02
db $03
db $FF
.11f ; Lumberjack House (1) // Store (2)
db $01
%sq($00)
%d(..areas) : %d(..doors) : %d(.no_items)
%d(.no_items) : %d(.no_items) : %d(..enemies)
..areas
db $03, $80, $FF, $00, $FF
db $FF
..doors
db $08
db $FF
..enemies
db $00
db $FF
.120 ; Ice Rod Cave (1) // Cool Bee Cave (2)
db $01
%sq($00)
%d(..areas) : %d(..doors) : %d(.no_items)
%d(.no_items) : %d(.no_items) : %d(..enemies)
..areas
db $03, $80, $FF, $00, $FF
db $03, $80, $FF, $00, $FF
db $FF
..doors
db $08
db $FF
..enemies
db $00
db $01
db $02
db $FF
.122 ; Fortune Teller (2) // Other Fortune Teller (1)
db $01
%sq($00)
%d(..areas) : %d(..doors) : %d(.no_items)
%d(.no_items) : %d(.no_items) : %d(..enemies)
..areas
db $03, $00, $7F, $00, $FF
db $FF
..doors
db $06
db $FF
..enemies
db $00
db $FF
.124 ; 50-Rupee Cave (1) // Bonk Rocks (2)
db $01
%sq($00)
%d(..areas) : %d(..doors) : %d(.no_items)
%d(..chests) : %d(.no_items) : %d(.no_items)
..areas
db $03, $80, $FF, $00, $FF
db $FF
..doors
db $08
db $FF
..chests
db $00
db $FF
.125 ; 20-Rupee Cave (2) // Spiky Hint Cave (1)
db $01
%sq($00)
%d(..areas) : %d(..doors) : %d(.no_items)
%d(.no_items) : %d(..pots) : %d(..enemies)
..areas
db $03, $00, $7F, $00, $FF
db $FF
..doors
db $06
db $FF
..pots
db $00
db $01
db $02
db $03
db $FF
..enemies
db $00
db $FF
.126 ; Bonk Fairy Pool (2) // Checkerboard Cave (1)
db $01
%sq($00)
%d(..areas) : %d(..doors) : %d(.no_items)
%d(.no_items) : %d(.no_items) : %d(..enemies)
..areas
db $03, $00, $7F, $00, $FF
db $FF
..doors
db $06
db $FF
..enemies
db $01
db $02
db $03
db $04
db $FF
+15
View File
@@ -172,6 +172,7 @@ DrawSingleRoomLoot:
STA.w GFXStripes+$0C, Y STA.w GFXStripes+$0C, Y
LDA.b $CA LDA.b $CA
AND.w #$F0FF
JSL CheckLoot JSL CheckLoot
ASL A : ASL A : ASL A ASL A : ASL A : ASL A
@@ -687,6 +688,13 @@ GetSpecificRoomVisibility:
STA.b $0A STA.b $0A
+ +
SEP #$20
LDA.b $0A
CMP.b $0B
BCC +
STA.b $0B
+
REP #$20 REP #$20
LDA.b $CA LDA.b $CA
AND.w #$00FF AND.w #$00FF
@@ -2105,6 +2113,13 @@ DrawDoorsStairs:
DetectLinksSection: DetectLinksSection:
LDA.b RoomIndex LDA.b RoomIndex
CMP.w #$0128
BCC +
LDA.w #$0000
RTL
+
ASL A ASL A
TAX TAX
LDA.l SplitRooms, X LDA.l SplitRooms, X
+50
View File
@@ -0,0 +1,50 @@
LoadDungeonIndicator:
; what we wrote over
JSL InitializeTilesets
LDA.w DungeonID
CMP.b #DungeonIndicatorMap_end-DungeonIndicatorMap : BCS .done
TAX
LDA.l DungeonIndicatorMap, X
TAX
LDA.b #$80
STA.w $2115
REP #$20
LDA.w #$7140
STA.w $2116
LDY.b #$10
- LDA.l DungeonIndicatorGfx, X
STA.w $2118
INX #2
DEY #2
BNE -
SEP #$20
.done
RTL
DungeonIndicatorMap:
dw $0000
dw $0000
dw $0010
dw $0020
dw $0040
dw $0060
dw $0050
dw $00A0
dw $0070
dw $0090
dw $0030
dw $0080
dw $00B0
dw $00C0
.end
DungeonIndicatorGfx:
incbin "menu/dr_dungeon_indicators.2bpp"
.end
+1
View File
@@ -34,6 +34,7 @@ incsrc map_bg3.asm
incsrc dungeon_switch.asm incsrc dungeon_switch.asm
incsrc draw_loot.asm incsrc draw_loot.asm
incsrc check_loot.asm incsrc check_loot.asm
incsrc loot_hud.asm
incsrc blink_loot.asm incsrc blink_loot.asm
incsrc data/doors_display.asm incsrc data/doors_display.asm
incsrc data/spiral_stairs.asm incsrc data/spiral_stairs.asm
+76
View File
@@ -0,0 +1,76 @@
UpdateLootHUD:
PHP
REP #$30
PHX : PHY
SEP #$30
LDA.l ShowLootInHUD : BEQ .setting_off
LDA.b IndoorsFlag : BEQ .done
REP #$30
LDA.b $00 : PHA
LDA.b $02 : PHA
LDA.b $04 : PHA
LDA.b $06 : PHA
LDA.b $08 : PHA
LDA.b $0E : PHA
; if if door rando, check for section of supertile
LDA.l DRMode
BNE +
; if not in door rando, check for section of supertile if we're not in a dungeon
LDA.w DungeonID
AND.w #$00FF
CMP.w #$00FF
BEQ +
; just load the room id, we don't care about sections
LDA.b RoomIndex
BRA .check
+ ; figure out section before checking
JSL DetectLinksSection
INC A
XBA
ASL A : ASL A : ASL A : ASL A
ORA.b RoomIndex
.check
JSL CheckLoot
SEP #$30
CMP.l ShowItems_hud_cap
BCC +
LDA.l ShowItems_hud_cap
+
LDX.w DungeonID
CPX.b #$FF
BNE +
CMP.l ShowItems_cave_cap
BCC +
LDA.l ShowItems_cave_cap
+
REP #$30
ASL A : TAX
LDA.l HUDLootTypeIcons, X
STA.w EnemyDropIndicator
PLA : STA.b $0E
PLA : STA.b $08
PLA : STA.b $06
PLA : STA.b $04
PLA : STA.b $02
PLA : STA.b $00
BRA .done
.setting_off
JSL SetupEnemyDropIndicator
.done
REP #$30
PLY : PLX
PLP
RTL
+28 -1
View File
@@ -146,6 +146,25 @@ dw $25A4, $25A4 ; Reserved
dw $25A4, $25A4 ; Reserved dw $25A4, $25A4 ; Reserved
; $B9FB40 ; $B9FB40
HUDLootTypeIcons:
dw $287F ; 00 - nothing
dw $295C ; 01 - unknown - dot
dw $2954 ; 02 - junk - pot
dw $2950 ; 03 - small key
dw $2952 ; 04 - triforce piece
dw $2955 ; 05 - safety - plus
dw $2953 ; 06 - less important item - small chest
dw $2957 ; 07 - map
dw $2D56 ; 08 - compass
dw $2950 ; 09 - small key
dw $2951 ; 0A - big key
dw $295A ; 0B - important inventory item - big chest
dw $2D58 ; 0C - pendant
dw $2D59 ; 0D - crystal
dw $2952 ; 0E - triforce piece
dw $295B ; 0F - triforce
; $B9FB60
warnpc $B9FE00 warnpc $B9FE00
org $B9FE00 org $B9FE00
@@ -190,7 +209,11 @@ ShowItems:
.visited_tile .visited_tile
db $01 db $01
.reserved .reserved
skip 4 skip 2
.hud_cap
db $FF
.cave_cap
db $01
warnpc $B9FF10 warnpc $B9FF10
org $B9FF10 org $B9FF10
@@ -206,3 +229,7 @@ ItemSources:
; $B9FF11 ; $B9FF11
AlwaysShowCompass: AlwaysShowCompass:
db $01 db $01
; $B9FF12
ShowLootInHUD:
db $01
+2 -1
View File
@@ -13,7 +13,8 @@ GKRomVersion:
; $01 = Dungeon Maps ; $01 = Dungeon Maps
; .., $01 = Dark rooms don't show on map from visition ; .., $01 = Dark rooms don't show on map from visition
; .., $02 = OW Fog and Grid modes ; .., $02 = OW Fog and Grid modes
db $01, $02, $00 ; .., $03 = Loot level of current supertile in HUD
db $01, $03, $00
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
;================================================================================ ;================================================================================
+7
View File
@@ -2758,6 +2758,13 @@ JSL MimicDirection
org $828068 org $828068
JSL AdjustDefaultGraphics JSL AdjustDefaultGraphics
;================================================================================
;--------------------------------------------------------------------------------
; Dungeon Indicator VRAM overwrite
;--------------------------------------------------------------------------------
org $828190
JSL LoadDungeonIndicator
;================================================================================ ;================================================================================
; Special Weapons Modes ; Special Weapons Modes
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
+1
View File
@@ -165,6 +165,7 @@ AddInventory:
LDA.l !MULTIWORLD_RECEIVING_ITEM : BNE .done LDA.l !MULTIWORLD_RECEIVING_ITEM : BNE .done
REP #$30 REP #$30
LDA.l TotalItemCounter : INC : TAY LDA.l TotalItemCounter : INC : TAY
JSL UpdateLootHUD
LDA.l BootsEquipment : AND.w #$00FF : BNE + LDA.l BootsEquipment : AND.w #$00FF : BNE +
TYA : STA.l PreBootsLocations TYA : STA.l PreBootsLocations
+ +
+8 -5
View File
@@ -221,7 +221,8 @@ RevealPotItem:
STZ.w SpawnedItemIsMultiWorld STZ.w SpawnedItemIsMultiWorld
BIT.b Scrap08 BIT.b Scrap08
BVS LoadMultiWorldPotItem BVS LoadMultiWorldPotItem
BMI LoadMajorPotItem BPL .normal_secret
JMP LoadMajorPotItem
.normal_secret .normal_secret
STA.b Scrap08 STA.b Scrap08
@@ -242,6 +243,7 @@ RevealPotItem:
; Could increment GT Tower Pre Big Key but we aren't showing that stat right now ; Could increment GT Tower Pre Big Key but we aren't showing that stat right now
+ REP #$10 + REP #$10
LDA.l TotalItemCounter : INC : STA.l TotalItemCounter ; Increment Item Total LDA.l TotalItemCounter : INC : STA.l TotalItemCounter ; Increment Item Total
JSL UpdateLootHUD
LDA.w #$0001 : STA.l UpdateHUDFlag LDA.w #$0001 : STA.l UpdateHUDFlag
.obtained .obtained
PLY : PLX PLY : PLX
@@ -341,6 +343,7 @@ IncrementCountsForSubstitute:
; Could increment GT Tower Pre Big Key but we aren't showing that stat right now ; Could increment GT Tower Pre Big Key but we aren't showing that stat right now
+ +
LDA.l TotalItemCounter : INC : STA.l TotalItemCounter ; Increment Item Total LDA.l TotalItemCounter : INC : STA.l TotalItemCounter ; Increment Item Total
JSL UpdateLootHUD
LDA.w #$0001 : STA.l UpdateHUDFlag LDA.w #$0001 : STA.l UpdateHUDFlag
.obtained .obtained
SEP #$30 : PLX SEP #$30 : PLX
@@ -357,7 +360,7 @@ ClearSpriteData:
STZ.w SprSourceItemId, X : STZ.w SprItemReceipt, X : STZ.w SprItemMWPlayer, X STZ.w SprSourceItemId, X : STZ.w SprItemReceipt, X : STZ.w SprItemMWPlayer, X
STZ.w SprRedrawFlag, X STZ.w SprRedrawFlag, X
DEX : BPL .loop DEX : BPL .loop
JSR SetupEnemyDropIndicator JSL UpdateLootHUD
PLX PLX
RTL RTL
@@ -404,7 +407,7 @@ SetupEnemyDropIndicator:
.done .done
SEP #$20 SEP #$20
RTS RTL
; Runs during sprite load of the room ; Runs during sprite load of the room
@@ -571,7 +574,7 @@ IncrementCountForMinor:
LDA.l SpriteDropData, X : BIT.b Scrap0A : BNE .obtained LDA.l SpriteDropData, X : BIT.b Scrap0A : BNE .obtained
ORA.b Scrap0A : STA.l SpriteDropData, X ORA.b Scrap0A : STA.l SpriteDropData, X
SEP #$10 SEP #$10
JSR SetupEnemyDropIndicator JSL UpdateLootHUD
REP #$20 REP #$20
LDX.w DungeonID : CPX.b #$FF : BEQ + LDX.w DungeonID : CPX.b #$FF : BEQ +
CPX.b #$00 : BNE ++ CPX.b #$00 : BNE ++
@@ -627,10 +630,10 @@ MarkSRAMForItem:
TYX TYX
LDA.w SpawnedItemFlag : CMP.w #$0001 : BEQ + LDA.w SpawnedItemFlag : CMP.w #$0001 : BEQ +
LDA.l SpriteDropData, X : ORA.b Scrap00 : STA.l SpriteDropData, X LDA.l SpriteDropData, X : ORA.b Scrap00 : STA.l SpriteDropData, X
SEP #$10 : JSR SetupEnemyDropIndicator
BRA .end BRA .end
+ LDA.l RoomPotData, X : ORA.b Scrap00 : STA.l RoomPotData, X + LDA.l RoomPotData, X : ORA.b Scrap00 : STA.l RoomPotData, X
.end .end
JSL UpdateLootHUD
SEP #$30 : PLY : PLX SEP #$30 : PLY : PLX
LDA.w RoomItemsTaken LDA.w RoomItemsTaken
RTL RTL
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
+2 -2
View File
@@ -9,7 +9,7 @@ UploadMenuOnlyIcons:
REP #$20 REP #$20
LDA.w #MenuOnlyIcons : STA.w $4342 LDA.w #MenuOnlyIcons : STA.w $4342
LDA.w #$1801 : STA.w $4340 LDA.w #$1801 : STA.w $4340
LDA.w #$0240 : STA.w $4345 LDA.w #$0310 : STA.w $4345
LDA.w #$0F800>>1 : STA.w $2116 LDA.w #$0F800>>1 : STA.w $2116
SEP #$20 SEP #$20
@@ -20,4 +20,4 @@ UploadMenuOnlyIcons:
RTL RTL
MenuOnlyIcons: MenuOnlyIcons:
incbin "drfont.2bpp" incbin "drfont.2bpp"
+1
View File
@@ -386,6 +386,7 @@ RTS
;================================================================================ ;================================================================================
DrawMapCounts: DrawMapCounts:
LDA.l MapHUDMode : BEQ .done LDA.l MapHUDMode : BEQ .done
LDA.l GenericKeys : BNE .done ; generator don't have an accurrate count of key doors in this case
; no map needed if this bit is set ; no map needed if this bit is set
BIT.b #$02 : BNE .draw_map_count BIT.b #$02 : BNE .draw_map_count
+4 -4
View File
@@ -291,10 +291,10 @@ RTL
REP #$30 REP #$30
;------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------
; dungeon names ; dungeon names
LDA.w #$2D50 LDA.w #$2DA4
LDY.w #00 LDY.w #00
.next_dungeon_name .next_dungeon_name
LDX.w .dungeon_positions,Y LDX.w .dungeon_positions,Y
STA.w GFXStripes+$0646,X STA.w GFXStripes+$0646,X
INC INC
@@ -310,10 +310,10 @@ RTL
STA.w GFXStripes+$0706,X STA.w GFXStripes+$0706,X
DEX : DEX DEX : DEX
BPL -- BPL --
LDA.l HudFlag : AND.w #$0020 : BEQ + LDA.l HudFlag : AND.w #$0020 : BEQ +
JMP .maps_and_compasses JMP .maps_and_compasses
;------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------
+ +
LDA.l HUDDungeonItems : AND.w #$0001 : BNE + LDA.l HUDDungeonItems : AND.w #$0001 : BNE +
+2
View File
@@ -597,6 +597,8 @@ HUDMultiIndicator = $7EC790 ;
HUDKeysObtained = $7EC7A2 ; HUDKeysObtained = $7EC7A2 ;
HUDKeysSlash = $7EC7A4 ; HUDKeysSlash = $7EC7A4 ;
HUDKeysTotal = $7EC7A6 ; HUDKeysTotal = $7EC7A6 ;
HUDKeysExtraPlus = $7EC7E4 ;
HUDKeysExtraCount = $7EC7E6 ;
; ;
BigRAM = $7EC900 ; Big buffer of free ram (0x1F00) BigRAM = $7EC900 ; Big buffer of free ram (0x1F00)
ItemGFXStack = $7ECB00 ; Pointers to source of decompressed item tiles deferred to NMI loading. ItemGFXStack = $7ECB00 ; Pointers to source of decompressed item tiles deferred to NMI loading.
+4 -4
View File
@@ -1532,7 +1532,7 @@ db $19,$1A,$1B,$1C,$1D,$1E,$1F,$20
db $21,$22,$11,$11,$10,$16,$16,$16 db $21,$22,$11,$11,$10,$16,$16,$16
db $16,$16,$11,$16,$16,$16,$15,$15 db $16,$16,$11,$16,$16,$16,$15,$15
db $15,$15,$15,$15,$15,$15,$15,$15 db $15,$15,$15,$15,$15,$15,$15,$15
db $15,$15,$16,$02,$09,$00,$00,$00 db $15,$15,$2E,$02,$09,$00,$00,$00
MusicShuffleTable: MusicShuffleTable:
db $01,$02,$03,$04,$05,$06,$07,$08 db $01,$02,$03,$04,$05,$06,$07,$08
@@ -2686,9 +2686,9 @@ org $B0EFFF ; PC 0x186FFF
BallNChainDungeon: ; Dungeon ID where ball n chain guard is located. Write BallNChainDungeon: ; Dungeon ID where ball n chain guard is located. Write
db $02 ; $FF to count ball and chain item for collection stats. db $02 ; $FF to count ball and chain item for collection stats.
;-------------------------------------------------------------------------------- org $B0F000
; 0x187000 - 18700F (unused) ExtraChestKeys: ; PC 0x187000-0x18700F
;-------------------------------------------------------------------------------- db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
org $B0F010 org $B0F010
ChestKeys: ; PC 0x187010-0x18701F ChestKeys: ; PC 0x187010-0x18701F