From fe66c67d0704a2dd8c63330a8dc09c78ed95d760 Mon Sep 17 00:00:00 2001 From: aerinon Date: Tue, 15 Feb 2022 12:12:42 -0700 Subject: [PATCH] Fixing up the hud to indicate Pendant/Crystal etc --- LTTP_RND_GeneralBugfixes.asm | 1 + contrib.asm | 2 ++ framehook.asm | 61 ++++++++++++++++------------------- hooks.asm | 8 +++++ hudadditions.asm | 30 ++++++++++++++++- menu/hudalpha.asm | 23 +++++++++++++ menu/menuonly.2bpp | Bin 0 -> 1792 bytes multiworld.asm | 4 +-- pendantcrystalhud.asm | 7 ++-- tables.asm | 22 ++++++++++++- 10 files changed, 119 insertions(+), 39 deletions(-) create mode 100644 menu/hudalpha.asm create mode 100644 menu/menuonly.2bpp diff --git a/LTTP_RND_GeneralBugfixes.asm b/LTTP_RND_GeneralBugfixes.asm index c324714..33521e9 100644 --- a/LTTP_RND_GeneralBugfixes.asm +++ b/LTTP_RND_GeneralBugfixes.asm @@ -242,6 +242,7 @@ warnpc $A58000 ;org $228000 ; contrib area org $A28000 ; contrib area incsrc contrib.asm +warnpc $A38000 org $A38000 incsrc stats/main.asm diff --git a/contrib.asm b/contrib.asm index 0fbf354..bcc6ca0 100644 --- a/contrib.asm +++ b/contrib.asm @@ -181,3 +181,5 @@ Sprite_ShowSolicitedMessageIfPlayerFacing_PreserveMessage: RTL } ;================================================================ + +incsrc menu/hudalpha.asm diff --git a/framehook.asm b/framehook.asm index 92cc458..c6c8f0b 100644 --- a/framehook.asm +++ b/framehook.asm @@ -44,28 +44,23 @@ FrameHookAction: ++ REP #$30 : PLA : PLP RTL + +!NMI_MW = "$7F5047" ;-------------------------------------------------------------------------------- NMIHookAction: PHA : PHX : PHY : PHD ; thing we wrote over, push stuff - LDA !NMI_AUX : BEQ ++ + LDA !NMI_MW : BEQ ++ PHP SEP #$30 - LDA #$00 : STA !NMI_AUX + LDA #$00 : STA !NMI_MW ; Multiworld text - LDA !NMI_AUX+1 : BEQ + - LDA #$00 : STA !NMI_AUX+1 + LDA !NMI_MW+1 : BEQ + + LDA #$00 : STA !NMI_MW+1 JSL.l WriteText + - - ; Shops - LDA !NMI_AUX+2 : BEQ + - LDA #$00 : STA !NMI_AUX+2 - JSL.l Shopkeeper_UploadVRAMTilesLong - + - PLP ++ @@ -78,27 +73,27 @@ NMIHookAction: JML.l NMIHookReturn ;-------------------------------------------------------------------------------- !NMI_AUX = "$7F5044" + PostNMIHookAction: - LDA !NMI_AUX : BEQ + - LDA $00 : PHA ; preserve DP ram - LDA $01 : PHA - LDA $02 : PHA - - LDA !NMI_AUX+2 : STA $02 ; set up jump pointer - LDA !NMI_AUX+1 : STA $01 - LDA !NMI_AUX+0 : STA $00 - - PHK : PER .return-1 ; push stack for RTL return - JMP [$0000] - - .return - LDA.b #$00 : STA !NMI_AUX ; zero bank byte of NMI hook pointer - - PLA : STA $02 - PLA : STA $01 - PLA : STA $00 - + - - LDA $13 : STA $2100 ; thing we wrote over, turn screen back on -JML.l PostNMIHookReturn + LDA.l !NMI_AUX+2 : BEQ .return + + PHK + PEA .return-1 + + PHA + + LDA.b #$00 : STA.l !NMI_AUX+2 + + REP #$20 + LDA.l !NMI_AUX+0 : DEC : PHA + SEP #$20 + + RTL + +.return + LDA.b $13 : STA.w $2100 + + JML.l PostNMIHookReturn + + ;-------------------------------------------------------------------------------- \ No newline at end of file diff --git a/hooks.asm b/hooks.asm index 5faa6f5..bb331b2 100755 --- a/hooks.asm +++ b/hooks.asm @@ -2808,6 +2808,14 @@ org $01C536 : JSL FixJingleGlitch org $01C592 : JSL FixJingleGlitch org $01C65F : JSL FixJingleGlitch +;================================================================================ +; Hooks for when submenu opens +;-------------------------------------------------------------------------------- +org $028818 + JSL OnMenuLoad +org $02A463 + JSL OnMenuLoad + ;================================================================================ ; Terrorpin AI fix ;-------------------------------------------------------------------------------- diff --git a/hudadditions.asm b/hudadditions.asm index 7f9eb34..607993d 100644 --- a/hudadditions.asm +++ b/hudadditions.asm @@ -141,7 +141,7 @@ DrHudDungeonItemsAdditions: iny #2 lda.w #$24f5 : sta $1644, y ; blank out map spot lda $7ef368 : and.l $0098c0, x : beq + ; must have map - lda #$2826 : sta $1644, y ; check mark + JSR MapIndicatorShort : STA $1644, Y + iny #2 cpx #$001a : bne + tya : !add #$003c : tay @@ -164,6 +164,34 @@ DrHudDungeonItemsAdditions: plp : ply : plx : rtl } +MapIndicatorLong: + PHX + LDA.l OldHudToNewHudTable, X : TAX + JSR MapIndicator + PLX +RTL + +MapIndicatorShort: + PHX + TXA : LSR : TAX + JSR MapIndicator + PLX +RTS + +OldHudToNewHudTable: + dw 1, 2, 3, 10, 4, 6, 5, 8, 11, 9, 7, 12, 13 + +IndicatorCharacters: + ; check G P R C + dw $2426, $2590, $2599, $259B, $258C + +MapIndicator: + LDA.l CrystalPendantFlags_3, X : AND #$00FF + PHX + ASL : TAX : LDA.l IndicatorCharacters, X + PLX +RTS + BkStatus: lda $7ef366 : and.l $0098c0, x : bne +++ ; has the bk already lda.l BigKeyStatus, x : bne ++ diff --git a/menu/hudalpha.asm b/menu/hudalpha.asm new file mode 100644 index 0000000..c24b758 --- /dev/null +++ b/menu/hudalpha.asm @@ -0,0 +1,23 @@ +OnMenuLoad: + LDA.b #UploadMenuOnlyIcons>>0 : STA !NMI_AUX + LDA.b #UploadMenuOnlyIcons>>8 : STA !NMI_AUX+1 + LDA.b #UploadMenuOnlyIcons>>16 : STA !NMI_AUX+2 + LDA.b #$0E : STA.b $10 ; what we overwrote +RTL + +UploadMenuOnlyIcons: + REP #$20 + LDA.w #MenuOnlyIcons : STA.w $4342 + LDA.w #$1801 : STA.w $4340 + LDA.w #$0240 : STA.w $4345 + LDA.w #$0F800>>1 : STA.w $2116 + + SEP #$20 + LDA.b #MenuOnlyIcons>>16 : STA.w $4344 + LDA.b #$80 : STA.w $2118 + LDA.b #$10 : STA.w $420B + + RTL + +MenuOnlyIcons: +incbin "menuonly.2bpp" \ No newline at end of file diff --git a/menu/menuonly.2bpp b/menu/menuonly.2bpp new file mode 100644 index 0000000000000000000000000000000000000000..f9be7f66ea065b1355f7070e4e3635bc49975515 GIT binary patch literal 1792 zcmeHEs}h4i5bM9MK=J|ofQm{4;sgSLsHm(&Rw5CIbhEkZG5v$i+-6{IZyyN(SdcOn zFnVkm7I}vQZ>*S5bMw0cUDP!_#|^_Ph%Q?bqy%-B}pqw^LnuxKI0wKK3xU zix1xn)+a~u6GOFHryf2zp4{|0xO%p bwZG)6^N9b5f47F-ON-_}bD%l!rw)7o)cgd$ literal 0 HcmV?d00001 diff --git a/multiworld.asm b/multiworld.asm index f1f6990..aeb3d65 100644 --- a/multiworld.asm +++ b/multiworld.asm @@ -37,7 +37,7 @@ PHX : PHY : PHP ++ SEP #$20 - LDA #$01 : STA !NMI_AUX+1 : STA !NMI_AUX + LDA #$01 : STA !NMI_MW+1 : STA !NMI_MW LDA !MULTIWORLD_HUD_DELAY STA !MULTIWORLD_HUD_TIMER .textdone @@ -113,7 +113,7 @@ GetMultiworldItem: BRA - ++ PLP - LDA #$01 : STA !NMI_AUX+1 : STA !NMI_AUX + LDA #$01 : STA !NMI_MW+1 : STA !NMI_MW .textend LDA $5D diff --git a/pendantcrystalhud.asm b/pendantcrystalhud.asm index 3b11aaa..d807f51 100644 --- a/pendantcrystalhud.asm +++ b/pendantcrystalhud.asm @@ -397,10 +397,13 @@ DrawHUDDungeonItems: .next_map BIT.w .dungeon_bitmasks,X - BEQ ..skip_map + BNE ..draw_map + ; MapMode indicates if maps are needed for the info + LDA.l MapMode : AND #$00FF : BNE ..skip_map +..draw_map LDY.w .dungeon_positions,X - LDA.w #$2826 + JSL MapIndicatorLong STA.w $1686,Y ; reload diff --git a/tables.asm b/tables.asm index 2b70345..d4bf266 100644 --- a/tables.asm +++ b/tables.asm @@ -1511,7 +1511,8 @@ dw #9999 ; Rupee Limit ; $7F5042 - Tile Upload Offset Override (Low) ; $7F5043 - Tile Upload Offset Override (High) ; $7F5044 - $7F5046 - NMI Auxiliary Function -; $7F5047 - $7F504E - Unused +; $7F5047 - $7F5048 - Multiworld NMI Flags +; $7F5049 - $7F504E - Unused ; $7F504F - $7F506F - Shop Block ; $7F5070 - Reserved for OneMind ; $7F5071 - Reserved for OneMind @@ -1893,6 +1894,25 @@ db #$00, #$00, #$00, #$00, #$00, #$00, #$00, #$00, #$00, #$00, #$00, #$00, #$00, ; 0x186380 - 187FFF (unused) ;-------------------------------------------------------------------------------- +org $30EFE0 ; PC 0x186FE0-0x186FEF +CrystalPendantFlags_3: + db $00 ; Sewers + db $00 ; Hyrule Castle + db $01 ; Eastern Palace + db $02 ; Desert Palace + db $00 ; Agahnim's Tower + db $04 ; Swamp Palace + db $04 ; Palace of Darkness + db $03 ; Misery Mire + db $04 ; Skull Woods + db $03 ; Ice Palace + db $02 ; Tower of Hera + db $04 ; Thieves' Town + db $04 ; Turtle Rock + db $00 ; Ganons Tower +; 00 - No Prize. 01 - Green Pendant. 02 - Other Pendant, 03 - Special Crystal, 04 - Other Crystal + + org $30EFFF ; PC 0x186FFF BallNChainDungeon: db #$02