moved floor indicator, fixed hud tile bug
This commit is contained in:
@@ -1,5 +1,10 @@
|
|||||||
; =============================================================================
|
; =============================================================================
|
||||||
; headsup display
|
; Menu - Headsup Display
|
||||||
|
; =============================================================================
|
||||||
|
|
||||||
|
|
||||||
|
; ==============================================================================
|
||||||
|
; Vanilla HUD Hijack
|
||||||
|
|
||||||
org $0DFB91
|
org $0DFB91
|
||||||
JSL HUD_Update
|
JSL HUD_Update
|
||||||
@@ -16,6 +21,9 @@ org $0DF1BC
|
|||||||
JSL HUD_AnimateHeartRefill
|
JSL HUD_AnimateHeartRefill
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
|
; ==============================================================================
|
||||||
|
; Main HUD Update Loop
|
||||||
|
|
||||||
org $268000
|
org $268000
|
||||||
HUD_Update:
|
HUD_Update:
|
||||||
{
|
{
|
||||||
@@ -87,13 +95,13 @@ HUD_Update:
|
|||||||
|
|
||||||
; check player magic (ranges from 0 to 0x7F)
|
; check player magic (ranges from 0 to 0x7F)
|
||||||
; X = ((MP & 0xFF)) + 7) & 0xFFF8)
|
; X = ((MP & 0xFF)) + 7) & 0xFFF8)
|
||||||
; LDA $7EF36E : AND.w #$00FF : CLC : ADC #$0007 : AND.w #$FFF8 : TAX
|
LDA $7EF36E : AND.w #$00FF : CLC : ADC #$0007 : AND.w #$FFF8 : TAX
|
||||||
|
|
||||||
; these four writes draw the magic power bar based on how much MP you have
|
; these four writes draw the magic power bar based on how much MP you have
|
||||||
; LDA MagicTilemap+0, X : STA $7EC746
|
LDA MagicTilemap+0, X : STA $7EC76C
|
||||||
; LDA MagicTilemap+2, X : STA $7EC786
|
LDA MagicTilemap+2, X : STA $7EC76D
|
||||||
; LDA MagicTilemap+4, X : STA $7EC7C6
|
LDA MagicTilemap+4, X : STA $7EC76E
|
||||||
; LDA MagicTilemap+6, X : STA $7EC806
|
LDA MagicTilemap+6, X : STA $7EC76F
|
||||||
|
|
||||||
; Load how many rupees the player has
|
; Load how many rupees the player has
|
||||||
LDA $7EF362
|
LDA $7EF362
|
||||||
@@ -139,27 +147,18 @@ HUD_Update:
|
|||||||
; LDA $05 : AND.w #$00FF : ORA.w #$2400 : STA $7EC760
|
; LDA $05 : AND.w #$00FF : ORA.w #$2400 : STA $7EC760
|
||||||
|
|
||||||
; LDA.w #$007F : STA $05
|
; LDA.w #$007F : STA $05
|
||||||
|
|
||||||
; ; Load number of Keys Link has
|
; ; Load number of Keys Link has
|
||||||
; LDA $7EF36F : AND.w #$00FF : CMP.w #$00FF : BEQ .noKeys
|
; LDA $7EF36F : AND.w #$00FF : CMP.w #$00FF : BEQ .noKeys
|
||||||
|
|
||||||
; JSR HexToDecimal
|
; JSR HexToDecimal
|
||||||
|
|
||||||
; .noKeys
|
; .noKeys
|
||||||
|
|
||||||
; REP #$30
|
; REP #$30
|
||||||
|
|
||||||
; ; The key digit, which is optionally drawn.
|
; ; The key digit, which is optionally drawn.
|
||||||
; ; Also check to see if the key spot is blank
|
; ; Also check to see if the key spot is blank
|
||||||
; LDA $05 : AND.w #$00FF : ORA.w #$2400 : STA $7EC764
|
; LDA $05 : AND.w #$00FF : ORA.w #$2400 : STA $7EC764
|
||||||
|
|
||||||
; CMP.w #$247F : BNE .dontBlankKeyIcon
|
; CMP.w #$247F : BNE .dontBlankKeyIcon
|
||||||
|
|
||||||
; ; If the key digit is blank, also blank out the key icon.
|
; ; If the key digit is blank, also blank out the key icon.
|
||||||
; STA $7EC724
|
; STA $7EC724
|
||||||
|
|
||||||
; .dontBlankKeyIcon
|
; .dontBlankKeyIcon
|
||||||
|
|
||||||
; SEP #$30
|
; SEP #$30
|
||||||
|
|
||||||
RTL
|
RTL
|
||||||
@@ -170,6 +169,41 @@ HUD_Update:
|
|||||||
|
|
||||||
HUD_RefillLogic:
|
HUD_RefillLogic:
|
||||||
{
|
{
|
||||||
|
; check the refill magic indicator
|
||||||
|
LDA $7EF373
|
||||||
|
|
||||||
|
BEQ .doneWithMagicRefill
|
||||||
|
|
||||||
|
; Check the current magic power level we have.
|
||||||
|
; Is it full?
|
||||||
|
LDA $7EF36E : CMP.b #$80
|
||||||
|
|
||||||
|
BCC .magicNotFull
|
||||||
|
|
||||||
|
; If it is full, freeze it at 128 magic pts.
|
||||||
|
; And stop this refilling nonsense.
|
||||||
|
LDA.b #$80 : STA $7EF36E
|
||||||
|
LDA.b #$00 : STA $7EF373
|
||||||
|
|
||||||
|
BRA .doneWithMagicRefill
|
||||||
|
|
||||||
|
.magicNotFull
|
||||||
|
|
||||||
|
LDA $7EF373 : DEC A : STA $7EF373
|
||||||
|
LDA $7EF36E : INC A : STA $7EF36E
|
||||||
|
|
||||||
|
; if((frame_counter % 4) != 0) don't refill this frame
|
||||||
|
LDA $1A : AND.b #$03 : BNE .doneWithMagicRefill
|
||||||
|
|
||||||
|
; Is this sound channel in use?
|
||||||
|
LDA $012E : BNE .doneWithMagicRefill
|
||||||
|
|
||||||
|
; Play the magic refill sound effect
|
||||||
|
LDA.b #$2D : STA $012E
|
||||||
|
|
||||||
|
.doneWithMagicRefill
|
||||||
|
|
||||||
|
REP #$30
|
||||||
; Check current rupees (362) against goal rupees (360)
|
; Check current rupees (362) against goal rupees (360)
|
||||||
; goal refers to how many we really have and current refers to the
|
; goal refers to how many we really have and current refers to the
|
||||||
; number currently being displayed. When you buy something,
|
; number currently being displayed. When you buy something,
|
||||||
@@ -709,3 +743,121 @@ HUD_Tilemap:
|
|||||||
dw $207F, $207F, $207F, $207F, $207F, $207F, $207F, $207F
|
dw $207F, $207F, $207F, $207F, $207F, $207F, $207F, $207F
|
||||||
dw $207F
|
dw $207F
|
||||||
}
|
}
|
||||||
|
|
||||||
|
; ==============================================================================
|
||||||
|
|
||||||
|
; $57CE0 DATA
|
||||||
|
org $0AFCE0
|
||||||
|
FloorIndicatorNumberHigh:
|
||||||
|
{
|
||||||
|
dw $2508, $2509, $2509, $250A, $250B, $250C, $250D, $251D
|
||||||
|
dw $E51C, $250E, $007F
|
||||||
|
}
|
||||||
|
|
||||||
|
; $57CF6 DATA
|
||||||
|
org $0AFCF6
|
||||||
|
FloorIndicatorNumberLow:
|
||||||
|
{
|
||||||
|
dw $2518, $2519, $A509, $251A, $251B, $251C, $2518, $A51D
|
||||||
|
dw $E50C, $A50E, $007F
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
; *$57D0C-$57DA7 JUMP LOCATION (LONG)
|
||||||
|
org $0AFD0C
|
||||||
|
FloorIndicator:
|
||||||
|
{
|
||||||
|
; Handles display of the Floor indicator on BG3 (1F, B1, etc)
|
||||||
|
|
||||||
|
REP #$30
|
||||||
|
|
||||||
|
LDA $04A0 : AND.w #$00FF : BEQ .hideIndicator
|
||||||
|
|
||||||
|
INC A : CMP.w #$00C0 : BNE .dontDisable
|
||||||
|
|
||||||
|
; if the count up timer reaches 0x00BF frames, disable the floor indicator during the next frame.
|
||||||
|
LDA.w #$0000
|
||||||
|
|
||||||
|
.dontDisable
|
||||||
|
|
||||||
|
STA $04A0
|
||||||
|
|
||||||
|
PHB : PHK : PLB
|
||||||
|
|
||||||
|
LDA.w #$251E : STA $7EC7F0
|
||||||
|
INC A : STA $7EC832
|
||||||
|
INC A : STA $7EC830
|
||||||
|
|
||||||
|
LDA.w #$250F : STA $7EC7F2
|
||||||
|
|
||||||
|
LDX.w #$0000
|
||||||
|
|
||||||
|
; this confused me at first, but it's actually looking at whether $A4[1]
|
||||||
|
; has a negative value $A3 has nothing to do with $A4
|
||||||
|
LDA $A3 : BMI .basementFloor
|
||||||
|
|
||||||
|
; check which floor Link is on.
|
||||||
|
LDA $A4 : BNE .notFloor1F
|
||||||
|
|
||||||
|
LDA $A0 : CMP.w #$0002 : BEQ .sanctuaryRatRoom
|
||||||
|
|
||||||
|
SEP #$20
|
||||||
|
|
||||||
|
; Check the world state
|
||||||
|
LDA $7EF3C5 : CMP.b #$02 : BCS .noRainSound
|
||||||
|
|
||||||
|
; cause the ambient rain sound to occur (indoor version)
|
||||||
|
LDA.b #$03 : STA $012D
|
||||||
|
|
||||||
|
.noRainSound
|
||||||
|
|
||||||
|
REP #$20
|
||||||
|
|
||||||
|
.notFloor1F
|
||||||
|
.sanctuaryRatRoom
|
||||||
|
|
||||||
|
LDA $A4 : AND.w #$00FF
|
||||||
|
|
||||||
|
BRA .setFloorIndicatorNumber
|
||||||
|
|
||||||
|
.basementFloor
|
||||||
|
|
||||||
|
SEP #$20
|
||||||
|
|
||||||
|
; turn off any ambient sound effects
|
||||||
|
LDA.b #$05 : STA $012D
|
||||||
|
|
||||||
|
REP #$20
|
||||||
|
|
||||||
|
INX #2
|
||||||
|
|
||||||
|
LDA $A4 : ORA.w #$FF00 : EOR.w #$FFFF
|
||||||
|
|
||||||
|
.setFloorIndicatorNumber
|
||||||
|
|
||||||
|
ASL A : TAY
|
||||||
|
|
||||||
|
LDA FloorIndicatorNumberHigh, Y : STA $7EC7F0, X
|
||||||
|
LDA FloorIndicatorNumberLow, Y : STA $7EC830, X
|
||||||
|
|
||||||
|
SEP #$30
|
||||||
|
|
||||||
|
PLB
|
||||||
|
|
||||||
|
; send a signal indicating that bg3 needs updating
|
||||||
|
INC $16
|
||||||
|
|
||||||
|
RTL
|
||||||
|
|
||||||
|
; *$57D90 ALTERNATE ENTRY POINT
|
||||||
|
.hideIndicator
|
||||||
|
|
||||||
|
REP #$20
|
||||||
|
|
||||||
|
; disable the display of the floor indicator.
|
||||||
|
LDA.w #$007F : STA $7EC7F0 : STA $7EC830 : STA $7EC7F2 : STA $7EC832
|
||||||
|
|
||||||
|
SEP #$30
|
||||||
|
|
||||||
|
RTL
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user