From c399f8c77b1f078701ba3bd6501d3ca5461fbab7 Mon Sep 17 00:00:00 2001 From: codemann8 Date: Wed, 11 Aug 2021 05:53:27 -0500 Subject: [PATCH 01/16] Separated ambient SFX from music track selection Fixes issue with ambient SFX stopping and starting --- hooks.asm | 2 +- music.asm | 50 ++++++++++++++++++++++++++++++++++++-------------- 2 files changed, 37 insertions(+), 15 deletions(-) diff --git a/hooks.asm b/hooks.asm index b04b3c9..7d921f0 100755 --- a/hooks.asm +++ b/hooks.asm @@ -2486,7 +2486,7 @@ JSL BirdTravel_LoadTargetAreaMusic BRA + : NOP #14 : + ;-------------------------------------------------------------------------------- org $02B027 ; <- Bank02.asm:7535-7541 -JSL Overworld_DetermineMusicSFX +JSL Overworld_DetermineMusic BRA + : NOP #42 : + ;================================================================================ diff --git a/music.asm b/music.asm index e0e71e9..bf19bb0 100644 --- a/music.asm +++ b/music.asm @@ -16,7 +16,7 @@ PreOverworld_LoadProperties_ChooseMusic: ; if we are in the light world go ahead and set chosen selection ;LDA $7EF3CA : BEQ .checkInverted+4 - + JSL Overworld_DetermineMusicSFX + + JSL Overworld_DetermineMusic .lastCheck LDA $0132 : CMP.b #$F2 : BNE + @@ -57,7 +57,8 @@ Overworld_FinishMirrorWarp: LDA.b #$80 : STA $9B - JSL Overworld_DetermineMusicSFX + JSL Overworld_DetermineAmbientSFX + JSL Overworld_DetermineMusic .done STX $012C @@ -74,14 +75,14 @@ Overworld_FinishMirrorWarp: ;-------------------------------------------------------------------------------- BirdTravel_LoadTargetAreaMusic: - JSL Overworld_DetermineMusicSFX + JSL Overworld_DetermineAmbientSFX + JSL Overworld_DetermineMusic RTL ;-------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------- ;X to be set to music track to load -;$012D to be set to any ambient SFX for the area -Overworld_DetermineMusicSFX: +Overworld_DetermineMusic: LDA $7EF3C5 : CMP.b #$02 : !BGE + LDX.b #$03 ; If phase < 2, play the rain music BRA .done @@ -91,7 +92,6 @@ Overworld_DetermineMusicSFX: CMP.b #$47 : BEQ .darkMountain LDX.b #$02 ; hyrule field theme - LDA.b #$05 : STA $012D LDA $7EF3CA : BEQ + LDX.b #$09 ; default dark world theme @@ -113,15 +113,7 @@ Overworld_DetermineMusicSFX: LDX #$0F ; dark woods theme BRA .bunny - ; Misery Mire rain SFX - + CMP.b #$70 : BNE .bunny - LDA $7EF2F0 : AND.b #$20 : BNE .bunny - LDA.b #$01 : CMP $0131 : BEQ + - STA $012D : BRA .bunny - + STZ $012D : BRA .bunny - .darkMountain - LDA.b #$09 : STA $012D ; set storm ambient SFX LDX.b #$0D ; dark mountain theme .bunny @@ -134,6 +126,36 @@ Overworld_DetermineMusicSFX: RTL ;-------------------------------------------------------------------------------- +;-------------------------------------------------------------------------------- +;$012D to be set to any ambient SFX for the area +Overworld_DetermineAmbientSFX: + LDA $7EF3C5 : CMP.b #$02 : !BGE + + BRA .done ; rain state sfx handled elsewhere + + + LDA $8A : CMP.b #$43 : BEQ .darkMountain + CMP.b #$45 : BEQ .darkMountain + CMP.b #$47 : BEQ .darkMountain + + CMP.b #$70 : BEQ .mire + + LDA.b #$05 : BRA .setSfx ; silence + +.mire + LDA $7EF2F0 : AND.b #$20 : BNE .done + LDA.b #$01 : BRA .setSfx ; Misery Mire rain SFX + +.darkMountain + LDA.b #$09 : BRA .setSfx ; set storm ambient SFX + +.setSfx + CMP $0131 : BEQ + + STA $012D + + STZ $012D + +.done + RTL +;-------------------------------------------------------------------------------- + ;-------------------------------------------------------------------------------- ;0 = Is Kakariko Overworld ;1 = Not Kakariko Overworld From 1210264294afe9acf6fa840c03cd86c86e28c07f Mon Sep 17 00:00:00 2001 From: codemann8 Date: Wed, 11 Aug 2021 06:04:09 -0500 Subject: [PATCH 02/16] Changed LW2 track in MSU-1 to play after Aga1 kill instead of ped pull --- msu.asm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/msu.asm b/msu.asm index 41ccf74..34fce32 100644 --- a/msu.asm +++ b/msu.asm @@ -76,7 +76,7 @@ ; ; Additional tracks ; -; 60 - Light World OW (after ped pull) +; 60 - Light World OW (after aga kill) ; 61 - Dark World OW (with all crystals) ; ;======================================= @@ -250,7 +250,8 @@ CheckMusicLoadRequest: BRA .check_fallback-3 .lightworld PHA - LDA $7EF300 : AND.b #$40 : BEQ + + ;LDA $7EF300 : AND.b #$40 : BEQ + ; ped pull + LDA $7EF3C5 : CMP.b #03 : BNE + ; aga1 killed PLA LDA.b #60 : BRA .check_fallback-3 + From ad8c4e8e70519f636c1645dbb5ad6c616e10bec3 Mon Sep 17 00:00:00 2001 From: codemann8 Date: Mon, 16 Aug 2021 22:52:04 -0500 Subject: [PATCH 03/16] ROM changes to support Crossed OW changes --- hudadditions.asm | 2 +- owrando.asm | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/hudadditions.asm b/hudadditions.asm index eb223e3..3927130 100644 --- a/hudadditions.asm +++ b/hudadditions.asm @@ -26,7 +26,7 @@ HudAdditions: ++ LDX $1B : BNE + ; if outdoors - lda.l OWMode : and #$0300 : bne ++ : rts ; Skip if vanilla ow rando + lda.l OWMode : and #$06ff : bne ++ : rts ; Skip if vanilla ow rando ++ lda $7ef36d : and #$00ff : beq ++ lda $7ef3ca : and #$00ff : beq +++ lda #$2d60 : bra .owdisplay diff --git a/owrando.asm b/owrando.asm index b3f9af8..1b4f133 100644 --- a/owrando.asm +++ b/owrando.asm @@ -338,7 +338,7 @@ OWNewDestination: sep #$30 : lda OWOppSlotOffset,y : !add $04 : asl : and #$7f : sta $700 ; crossed OW shuffle - lda.l OWMode+1 : and #$ff : cmp #$02 : bne .return + lda.l OWMode+1 : and.b #$02 : beq .return ldx $05 : lda.l OWTileWorldAssoc,x : sta.l $7ef3ca ; change world ; toggle bunny mode @@ -350,7 +350,7 @@ OWNewDestination: ; turn into bunny lda $5d : cmp #$17 : beq .return lda #$17 : sta $5d - lda #$01 : sta $02e0 + lda #$01 : sta $2e0 bra .return .nobunny lda $5d : cmp #$17 : bne .return From 94a987f23fede5e2fc48486502743d89440ca36f Mon Sep 17 00:00:00 2001 From: codemann8 Date: Thu, 19 Aug 2021 18:47:29 -0500 Subject: [PATCH 04/16] Fixed missing OW flag check changes --- entrances.asm | 2 +- flute.asm | 2 +- invertedmaps.asm | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/entrances.asm b/entrances.asm index 72c6d24..33afb05 100644 --- a/entrances.asm +++ b/entrances.asm @@ -204,7 +204,7 @@ RTL AnimatedEntranceFix: ;when an entrance animation tries to start PHA : PHX LDA.l InvertedMode : BEQ + ;If we are in inverted mode - LDA.l OWMode+1 : CMP #$01 : BEQ + ;If we are in Mixed OW shuffle mode + LDA.l OWMode+1 : CMP #$04 : BEQ + ;If we are in Mixed OW shuffle mode LDA $8A : AND #$40 : BNE + ;and in the light world PLX : PLA STZ $04C6 ; skip it. diff --git a/flute.asm b/flute.asm index ac4bea9..79f2a2f 100644 --- a/flute.asm +++ b/flute.asm @@ -61,7 +61,7 @@ FluteBoy: JML.l FluteBoy_Continue ;-------------------------------------------------------------------------------- FreeDuckCheck: - LDA.l OWMode+1 : CMP.b #$01 : BEQ .skipInvertedCheck + LDA.l OWMode+1 : CMP.b #$04 : BEQ .skipInvertedCheck LDA.l InvertedMode : BEQ .done .skipInvertedCheck diff --git a/invertedmaps.asm b/invertedmaps.asm index 1a89e3f..683b87d 100644 --- a/invertedmaps.asm +++ b/invertedmaps.asm @@ -93,8 +93,8 @@ LDA.l OWTileMapAlt+3 : AND #$0001 : BEQ .notInverted LDA #$0034 : STA $2BE0 .notInverted LDA.l OWTileMapAlt+3 : AND #$0002 : BEQ .return -LDA.l OWMode : AND #$00FF : BEQ .return - LDA $2BE0 : STA $38B4 ;adding convenient WDM portal in OW Shuffle + LDA.l OWMode : AND #$00FF : BEQ .return + LDA $2BE0 : STA $38B4 ;adding convenient WDM portal in OW Shuffle .return RTS } @@ -969,8 +969,8 @@ LDA.l OWTileMapAlt+$43 : AND #$0001 : BEQ .owshuffle LDA #$0212 : STA $2BE0 ; portal .owshuffle LDA.l OWTileMapAlt+$43 : AND #$0002 : BEQ .return -LDA.l OWMode : AND #$00FF : BEQ .return - LDA $2BE0 : STA $38B4 ; adding convenient WDM portal in OW Shuffle + LDA.l OWMode : AND #$00FF : BEQ .return + LDA $2BE0 : STA $38B4 ; adding convenient WDM portal in OW Shuffle .return RTS } From 58bf92ba0429ee4a789cc52c2844b9fc312e2fc4 Mon Sep 17 00:00:00 2001 From: codemann8 Date: Thu, 19 Aug 2021 20:01:48 -0500 Subject: [PATCH 05/16] Moved OW flag checks to global variable --- LTTP_RND_GeneralBugfixes.asm | 3 +++ entrances.asm | 12 ++++++------ flute.asm | 4 ++-- hudadditions.asm | 2 +- owrando.asm | 2 +- 5 files changed, 13 insertions(+), 10 deletions(-) diff --git a/LTTP_RND_GeneralBugfixes.asm b/LTTP_RND_GeneralBugfixes.asm index abb444e..7ef0e13 100644 --- a/LTTP_RND_GeneralBugfixes.asm +++ b/LTTP_RND_GeneralBugfixes.asm @@ -114,6 +114,9 @@ function hexto555(h) = ((((h&$FF)/8)<<10)|(((h>>8&$FF)/8)<<5)|(((h>>16&$FF)/8)<< !MULTIWORLD_HUD_DELAY = "#120" !Dungeon_ChestData = "$01E96C" +!FLAG_OW_MIXED = $04 +!FLAG_OW_CROSSED = $02 + incsrc hooks.asm incsrc treekid.asm incsrc spriteswap.asm diff --git a/entrances.asm b/entrances.asm index 33afb05..78d77a8 100644 --- a/entrances.asm +++ b/entrances.asm @@ -204,12 +204,12 @@ RTL AnimatedEntranceFix: ;when an entrance animation tries to start PHA : PHX LDA.l InvertedMode : BEQ + ;If we are in inverted mode - LDA.l OWMode+1 : CMP #$04 : BEQ + ;If we are in Mixed OW shuffle mode - LDA $8A : AND #$40 : BNE + ;and in the light world - PLX : PLA - STZ $04C6 ; skip it. - LDA #$00 - RTL + LDA.l OWMode+1 : AND.b #!FLAG_OW_MIXED : BEQ + ;If we are in Mixed OW shuffle mode + LDA $8A : AND #$40 : BNE + ;and in the light world + PLX : PLA + STZ $04C6 ; skip it. + LDA #$00 + RTL + PLX : PLA STA $02E4 ;what we wrote over diff --git a/flute.asm b/flute.asm index 79f2a2f..325d2bd 100644 --- a/flute.asm +++ b/flute.asm @@ -61,8 +61,8 @@ FluteBoy: JML.l FluteBoy_Continue ;-------------------------------------------------------------------------------- FreeDuckCheck: - LDA.l OWMode+1 : CMP.b #$04 : BEQ .skipInvertedCheck - LDA.l InvertedMode : BEQ .done + LDA.l OWMode+1 : AND.b #!FLAG_OW_MIXED : BEQ .skipInvertedCheck + LDA.l InvertedMode : BEQ .done .skipInvertedCheck LDA $7EF34C : CMP.b #$03 : BEQ .done ; flute is already active diff --git a/hudadditions.asm b/hudadditions.asm index 3927130..b21fa78 100644 --- a/hudadditions.asm +++ b/hudadditions.asm @@ -26,7 +26,7 @@ HudAdditions: ++ LDX $1B : BNE + ; if outdoors - lda.l OWMode : and #$06ff : bne ++ : rts ; Skip if vanilla ow rando + lda.l OWMode : and.w #((!FLAG_OW_CROSSED+!FLAG_OW_MIXED)<<8)+$ff : bne ++ : rts ; Skip if vanilla ow rando ++ lda $7ef36d : and #$00ff : beq ++ lda $7ef3ca : and #$00ff : beq +++ lda #$2d60 : bra .owdisplay diff --git a/owrando.asm b/owrando.asm index 1b4f133..33699c6 100644 --- a/owrando.asm +++ b/owrando.asm @@ -338,7 +338,7 @@ OWNewDestination: sep #$30 : lda OWOppSlotOffset,y : !add $04 : asl : and #$7f : sta $700 ; crossed OW shuffle - lda.l OWMode+1 : and.b #$02 : beq .return + LDA.l OWMode+1 : AND.b #!FLAG_OW_CROSSED : beq .return ldx $05 : lda.l OWTileWorldAssoc,x : sta.l $7ef3ca ; change world ; toggle bunny mode From a8e119285ed97a982f4b8fbdb92fe2b7e3bf4881 Mon Sep 17 00:00:00 2001 From: codemann8 Date: Thu, 19 Aug 2021 21:53:26 -0500 Subject: [PATCH 06/16] Actually fixed Mixed flag problems --- entrances.asm | 2 +- flute.asm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/entrances.asm b/entrances.asm index 78d77a8..b4c1b22 100644 --- a/entrances.asm +++ b/entrances.asm @@ -204,7 +204,7 @@ RTL AnimatedEntranceFix: ;when an entrance animation tries to start PHA : PHX LDA.l InvertedMode : BEQ + ;If we are in inverted mode - LDA.l OWMode+1 : AND.b #!FLAG_OW_MIXED : BEQ + ;If we are in Mixed OW shuffle mode + LDA.l OWMode+1 : AND.b #!FLAG_OW_MIXED : BNE + ;If we are in Mixed OW shuffle mode LDA $8A : AND #$40 : BNE + ;and in the light world PLX : PLA STZ $04C6 ; skip it. diff --git a/flute.asm b/flute.asm index 325d2bd..6bb0062 100644 --- a/flute.asm +++ b/flute.asm @@ -61,7 +61,7 @@ FluteBoy: JML.l FluteBoy_Continue ;-------------------------------------------------------------------------------- FreeDuckCheck: - LDA.l OWMode+1 : AND.b #!FLAG_OW_MIXED : BEQ .skipInvertedCheck + LDA.l OWMode+1 : AND.w #!FLAG_OW_MIXED : BNE .skipInvertedCheck LDA.l InvertedMode : BEQ .done .skipInvertedCheck From f7525866c7da4aebcf5b7df4a8163d1b248627e6 Mon Sep 17 00:00:00 2001 From: codemann8 Date: Fri, 20 Aug 2021 20:43:48 -0500 Subject: [PATCH 07/16] Fixed Flute crash --- flute.asm | 2 +- owrando.asm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/flute.asm b/flute.asm index 6bb0062..354b1d2 100644 --- a/flute.asm +++ b/flute.asm @@ -61,7 +61,7 @@ FluteBoy: JML.l FluteBoy_Continue ;-------------------------------------------------------------------------------- FreeDuckCheck: - LDA.l OWMode+1 : AND.w #!FLAG_OW_MIXED : BNE .skipInvertedCheck + LDA.l OWMode+1 : AND.b #!FLAG_OW_MIXED : BNE .skipInvertedCheck LDA.l InvertedMode : BEQ .done .skipInvertedCheck diff --git a/owrando.asm b/owrando.asm index 33699c6..d275ddc 100644 --- a/owrando.asm +++ b/owrando.asm @@ -350,7 +350,7 @@ OWNewDestination: ; turn into bunny lda $5d : cmp #$17 : beq .return lda #$17 : sta $5d - lda #$01 : sta $2e0 + lda #$01 : sta $02e0 bra .return .nobunny lda $5d : cmp #$17 : bne .return From 11be05c65a0b481b979c5439b61bb465bd1423b8 Mon Sep 17 00:00:00 2001 From: codemann8 Date: Fri, 20 Aug 2021 22:47:17 -0500 Subject: [PATCH 08/16] Fix Bunny/Lonk issues in Crossed OW --- owrando.asm | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/owrando.asm b/owrando.asm index d275ddc..adb23ff 100644 --- a/owrando.asm +++ b/owrando.asm @@ -348,13 +348,12 @@ OWNewDestination: .inverted lda $7ef3ca : and.b #$40 : eor #$40 + cmp #$40 : bne .nobunny ; turn into bunny - lda $5d : cmp #$17 : beq .return lda #$17 : sta $5d - lda #$01 : sta $02e0 + lda #$01 : sta $02e0 : sta $56 bra .return + .nobunny - lda $5d : cmp #$17 : bne .return - stz $5d : stz $2e0 + stz $5d : stz $02e0 : stz $56 .return lda $05 : sta $8a From aed1506114a91ede4c65af4e2895eaf9655be570 Mon Sep 17 00:00:00 2001 From: codemann8 Date: Sat, 21 Aug 2021 15:16:21 -0500 Subject: [PATCH 09/16] Fixed issue with waterwalking in Crossed --- owrando.asm | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/owrando.asm b/owrando.asm index adb23ff..71a835d 100644 --- a/owrando.asm +++ b/owrando.asm @@ -348,12 +348,15 @@ OWNewDestination: .inverted lda $7ef3ca : and.b #$40 : eor #$40 + cmp #$40 : bne .nobunny ; turn into bunny - lda #$17 : sta $5d - lda #$01 : sta $02e0 : sta $56 + lda $5d : cmp #$04 : beq + ; if swimming, continue + lda #$17 : sta $5d + + lda #$01 : sta $02e0 : sta $56 bra .return .nobunny - stz $5d : stz $02e0 : stz $56 + lda $5d : cmp #$04 : beq + ; if swimming, continue + stz $5d + + stz $02e0 : stz $56 .return lda $05 : sta $8a From 9b48a88df6a706f2627ea814ad74e3956b673400 Mon Sep 17 00:00:00 2001 From: codemann8 Date: Sat, 21 Aug 2021 18:02:59 -0500 Subject: [PATCH 10/16] Retain Link state on transition unless bunny in Crossed OW --- owrando.asm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/owrando.asm b/owrando.asm index 71a835d..c258f1e 100644 --- a/owrando.asm +++ b/owrando.asm @@ -354,7 +354,7 @@ OWNewDestination: bra .return .nobunny - lda $5d : cmp #$04 : beq + ; if swimming, continue + lda $5d : cmp #$17 : bne + ; retain current state unless bunny stz $5d + stz $02e0 : stz $56 From fe24f6f865bad9fc41f50f6e158db06d37a4abff Mon Sep 17 00:00:00 2001 From: codemann8 Date: Wed, 25 Aug 2021 02:21:56 -0500 Subject: [PATCH 11/16] Play SFX on crossworld transition in Crossed OW --- owrando.asm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/owrando.asm b/owrando.asm index c258f1e..74b3f24 100644 --- a/owrando.asm +++ b/owrando.asm @@ -339,10 +339,11 @@ OWNewDestination: ; crossed OW shuffle LDA.l OWMode+1 : AND.b #!FLAG_OW_CROSSED : beq .return - ldx $05 : lda.l OWTileWorldAssoc,x : sta.l $7ef3ca ; change world + ldx $05 : lda.l OWTileWorldAssoc,x : cmp.l $7ef3ca : beq + + sta.l $7ef3ca ; change world + lda #$38 : sta $012f ; play sfx - #$3b is an alternative ; toggle bunny mode - lda $7ef357 : bne .nobunny lda.l InvertedMode : bne .inverted lda $7ef3ca : and.b #$40 : bra + .inverted lda $7ef3ca : and.b #$40 : eor #$40 From 5d6d509bd9104302dac637c78f46e182dac4e339 Mon Sep 17 00:00:00 2001 From: codemann8 Date: Thu, 26 Aug 2021 00:51:41 -0500 Subject: [PATCH 12/16] Update Crossed OW to only perform Link/Bunny state changes when world changes --- owrando.asm | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/owrando.asm b/owrando.asm index 74b3f24..a739ca9 100644 --- a/owrando.asm +++ b/owrando.asm @@ -339,25 +339,26 @@ OWNewDestination: ; crossed OW shuffle LDA.l OWMode+1 : AND.b #!FLAG_OW_CROSSED : beq .return - ldx $05 : lda.l OWTileWorldAssoc,x : cmp.l $7ef3ca : beq + + ldx $05 : lda.l OWTileWorldAssoc,x : cmp.l $7ef3ca : beq .return sta.l $7ef3ca ; change world lda #$38 : sta $012f ; play sfx - #$3b is an alternative - ; toggle bunny mode - lda.l InvertedMode : bne .inverted - lda $7ef3ca : and.b #$40 : bra + - .inverted lda $7ef3ca : and.b #$40 : eor #$40 - + cmp #$40 : bne .nobunny - ; turn into bunny - lda $5d : cmp #$04 : beq + ; if swimming, continue - lda #$17 : sta $5d - + lda #$01 : sta $02e0 : sta $56 - bra .return + ; toggle bunny mode + + lda $7ef357 : bne .nobunny + lda.l InvertedMode : bne .inverted + lda $7ef3ca : and.b #$40 : bra + + .inverted lda $7ef3ca : and.b #$40 : eor #$40 + + cmp #$40 : bne .nobunny + ; turn into bunny + lda $5d : cmp #$04 : beq + ; if swimming, continue + lda #$17 : sta $5d + + lda #$01 : sta $02e0 : sta $56 + bra .return - .nobunny - lda $5d : cmp #$17 : bne + ; retain current state unless bunny - stz $5d - + stz $02e0 : stz $56 + .nobunny + lda $5d : cmp #$17 : bne + ; retain current state unless bunny + stz $5d + + stz $02e0 : stz $56 .return lda $05 : sta $8a From 53dd7ba8205541fb1aee3183fbcc93d5f419b312 Mon Sep 17 00:00:00 2001 From: codemann8 Date: Thu, 26 Aug 2021 00:53:02 -0500 Subject: [PATCH 13/16] Fix for TR Pegs issue when fluting direct to TR from a screen with hammerpegs --- music.asm | 1 + 1 file changed, 1 insertion(+) diff --git a/music.asm b/music.asm index bf19bb0..0d8a1dc 100644 --- a/music.asm +++ b/music.asm @@ -77,6 +77,7 @@ Overworld_FinishMirrorWarp: BirdTravel_LoadTargetAreaMusic: JSL Overworld_DetermineAmbientSFX JSL Overworld_DetermineMusic + STZ $04C8 ; Clear peg puzzle count RTL ;-------------------------------------------------------------------------------- From 07a3a9ad032011da062b4616b685874bcece9eab Mon Sep 17 00:00:00 2001 From: aerinon Date: Tue, 31 Aug 2021 15:35:19 -0600 Subject: [PATCH 14/16] Catobat map fix Cutoff table updated Mutliworld mem location added for item ids --- LTTP_RND_GeneralBugfixes.asm | 1 + doortables.asm | 2 + newhud.asm | 619 +++++++++++++++++------------------ newitems.asm | 1 + 4 files changed, 313 insertions(+), 310 deletions(-) diff --git a/LTTP_RND_GeneralBugfixes.asm b/LTTP_RND_GeneralBugfixes.asm index abb444e..5341811 100644 --- a/LTTP_RND_GeneralBugfixes.asm +++ b/LTTP_RND_GeneralBugfixes.asm @@ -112,6 +112,7 @@ function hexto555(h) = ((((h&$FF)/8)<<10)|(((h>>8&$FF)/8)<<5)|(((h>>16&$FF)/8)<< !MULTIWORLD_SPRITEITEM_PLAYER_ID = "$7EC099" !MULTIWORLD_HUD_TIMER = "$7EC09A" !MULTIWORLD_HUD_DELAY = "#120" +!MULTIWORLD_ITEM_ID = "$7EC09B" ; for lua scripts? !Dungeon_ChestData = "$01E96C" incsrc hooks.asm diff --git a/doortables.asm b/doortables.asm index 8ee0dd6..eae1643 100644 --- a/doortables.asm +++ b/doortables.asm @@ -582,6 +582,8 @@ dw $00bc, $00a2, $00a3, $00c2, $001a, $0049, $0014, $008c dw $009f, $0066, $005d, $00a8, $00a9, $00aa, $00b9, $0052 ; HC West Hall, TR Dash Bridge, TR Hub, Pod Arena, GT Petting Zoo, Ice Spike Cross dw $0050, $00c5, $00c6, $0009, $0003, $002a, $007d, $005e +; Sewer Drop, Mire Cross, GT Crystal Circles +dw $0011, $00b2, $003d dw $ffff ; dungeon tables diff --git a/newhud.asm b/newhud.asm index a8d0e3c..9c36f2d 100644 --- a/newhud.asm +++ b/newhud.asm @@ -1,310 +1,309 @@ -NewDrawHud: -SEP #$30 -;================================================================================ -; Draw bomb count -!BOMBCOUNT_DRAW_ADDRESS = "$7EC75A" -!INFINITE_BOMBS = "$7F50C9" -;================================================================================ - - LDA !INFINITE_BOMBS : BNE .infinite_bombs - .finite_bombs - LDA.l $7EF343 ; bombs - JSR HudHexToDec2Digit ;requires 8 bit registers! - REP #$20 - LDX.b $06 : TXA : ORA.w #$2400 : STA !BOMBCOUNT_DRAW_ADDRESS ; Draw bombs 10 digit - LDX.b $07 : TXA : ORA.w #$2400 : STA !BOMBCOUNT_DRAW_ADDRESS+2 ; Draw bombs 1 digit - BRA + - - .infinite_bombs - REP #$20 - LDA.w #$2431 : STA !BOMBCOUNT_DRAW_ADDRESS ; infinity (left half) - INC A : STA !BOMBCOUNT_DRAW_ADDRESS+2 ; infinity (right half) - + - -;================================================================================ -; Draw rupee counter -!RUPEE_DRAW_ADDRESS = "$7EC750" -;================================================================================ - - LDA.l $7EF362 ; Drawing bombs (above) always ends with 16-bit A, so, no need to REP here - JSR HudHexToDec4Digit - LDX.b $04 : TXA : ORA.w #$2400 : STA !RUPEE_DRAW_ADDRESS ; 1000s - LDX.b $05 : TXA : ORA.w #$2400 : STA !RUPEE_DRAW_ADDRESS+2 ; 100s - LDX.b $06 : TXA : ORA.w #$2400 : STA !RUPEE_DRAW_ADDRESS+4 ; 10s - LDX.b $07 : TXA : ORA.w #$2400 : STA !RUPEE_DRAW_ADDRESS+6 ; 1s - -;================================================================================ -; Draw arrow count -!ARROWCOUNT_DRAW_ADDRESS = "$7EC760" -!INFINITE_ARROWS = "$7F50C8" -;================================================================================ - - SEP #$20 - LDA.l ArrowMode : BNE + - LDA !INFINITE_ARROWS : BNE .infinite_arrows - .finite_arrows - LDA.l $7EF377 ; arrows - JSR HudHexToDec2Digit - REP #$20 - LDX.b $06 : TXA : ORA.w #$2400 : STA !ARROWCOUNT_DRAW_ADDRESS ; Draw arrows 10 digit - LDX.b $07 : TXA : ORA.w #$2400 : STA !ARROWCOUNT_DRAW_ADDRESS+2 ; Draw arrows 1 digit - BRA + - - .infinite_arrows - REP #$20 - LDA.w #$2431 : STA !ARROWCOUNT_DRAW_ADDRESS ; infinity (left half) - INC A : STA !ARROWCOUNT_DRAW_ADDRESS+2 ; infinity (right half) - + - -;================================================================================ -; Draw Goal Item Indicator -!GOAL_COUNTER = "$7EF418" -!GOAL_DRAW_ADDRESS = "$7EC72A" -;================================================================================ - - SEP #$20 - LDA.l GoalItemRequirement : BNE + : JMP .done : + ; Star Meter - - LDA.l !GOAL_COUNTER - JSR HudHexToDec3Digit - REP #$20 - - LDA.l GoalItemIcon : STA !GOAL_DRAW_ADDRESS ; draw star icon - - LDX.b $05 : TXA : ORA.w #$2400 : STA !GOAL_DRAW_ADDRESS+2 ; draw 100's digit - LDX.b $06 : TXA : ORA.w #$2400 : STA !GOAL_DRAW_ADDRESS+4 ; draw 10's digit - LDX.b $07 : TXA : ORA.w #$2400 : STA !GOAL_DRAW_ADDRESS+6 ; draw 1's digit - - SEP #$20 - LDA.l GoalItemRequirement : CMP.b #$FF : BEQ .skip - - LDA.l GoalItemRequirement - JSR HudHexToDec3Digit - REP #$20 - LDA.w #$2830 : STA !GOAL_DRAW_ADDRESS+8 ; draw slash - LDX.b $05 : TXA : ORA.w #$2400 : STA !GOAL_DRAW_ADDRESS+10 ; draw 100's digit - LDX.b $06 : TXA : ORA.w #$2400 : STA !GOAL_DRAW_ADDRESS+12 ; draw 10's digit - LDX.b $07 : TXA : ORA.w #$2400 : STA !GOAL_DRAW_ADDRESS+14 ; draw 1's digit - BRA .done - .skip - REP #$20 - LDA.w #$207F ; transparent tile - STA !GOAL_DRAW_ADDRESS+8 - STA !GOAL_DRAW_ADDRESS+10 - STA !GOAL_DRAW_ADDRESS+12 - .done - -;================================================================================ -; Draw Dungeon Compass Counts -;================================================================================ - REP #$20 - LDA.l CompassMode : AND #$00FF : BEQ + ; skip if CompassMode is 0. - JSL.l DrawDungeonCompassCounts ; compasses.asm - + - -;================================================================================ -; Draw key count -!KEYS = "$7EF36F" -!KEY_DIGITS_ADDRESS = "$7EC764" -!KEY_ICON_ADDRESS = "$7EC726" -;================================================================================ - SEP #$20 - LDA.l !KEYS : CMP.b #$FF : BEQ .not_in_dungeon - .in_dungeon - JSR HudHexToDec2Digit : REP #$20 - - ; if 10s digit is 0, draw transparent tile instead of 0 - LDX.b $06 : TXA : CPX.b #$90 : BNE + - LDA.w #$007F - + - ORA.w #$2400 : STA !KEY_DIGITS_ADDRESS - - ; 1s digit - LDX.b $07 : TXA : ORA.w #$2400 : STA !KEY_DIGITS_ADDRESS+2 - BRA .done_keys - - .not_in_dungeon - REP #$20 - - ;in the overworld, draw transparent tiles instead of key count - LDA.w #$247F : STA !KEY_DIGITS_ADDRESS : STA !KEY_DIGITS_ADDRESS+2 - STA !KEY_ICON_ADDRESS - - .done_keys - - - - -;-------------------------------------------------------------------------------- -; Draw pendant/crystal icon -;-------------------------------------------------------------------------------- -!PRIZE_ICON = $7EC742 -!P_ICON = $296C -!C_ICON = $295F - - SEP #$20 - LDA.b $1B : BEQ .noprize - - LDX.w $040C - CPX #$1A : !BGE .noprize - CPX #$04 : !BLT .noprize - CPX #$08 : BEQ .noprize - - LDA $10 : CMP #$12 : BEQ .noprize - - REP #$20 - - LDA.l MapMode - BEQ .drawprize - - LDA.l $7EF368 - AND.l DungeonItemMasks,X - BEQ .noprize - -.drawprize - TXA : LSR : TAX - LDA.l CrystalPendantFlags_2, X - AND.w #$0040 : BNE .is_crystal - - LDA.w #!P_ICON - BRA .doneprize - -.is_crystal - LDA.w #!C_ICON - BRA .doneprize - -.noprize - REP #$20 - LDA.w #$207F - -.doneprize - STA.l !PRIZE_ICON - -;-------------------------------------------------------------------------------- -; Draw Magic Meter -!INFINITE_MAGIC = "$7F50CA" -!DrawMagicMeter_mp_tilemap = "$0DFE0F" -;-------------------------------------------------------------------------------- - LDA $7EF36E : AND #$00FF ; crap we wrote over when placing the hook for OnDrawHud - !ADD #$0007 - AND #$FFF8 - TAX ; end of crap - - LDA !INFINITE_MAGIC : AND.w #$00FF : BNE + : JMP .green : + - SEP #$20 : LDA.b #$80 : STA $7EF36E : REP #$30 ; set magic to max - LDX.w #$0080 ; load full magic meter graphics - LDA $1A : AND.w #$000C : LSR #2 - BEQ .red - CMP.w #0001 : BEQ .yellow - CMP.w #0002 : BNE + : JMP .green : + - .blue - LDA !DrawMagicMeter_mp_tilemap+0, X : AND.w #$EFFF : STA $7EC746 - LDA !DrawMagicMeter_mp_tilemap+2, X : AND.w #$EFFF : STA $7EC786 - LDA !DrawMagicMeter_mp_tilemap+4, X : AND.w #$EFFF : STA $7EC7C6 - LDA !DrawMagicMeter_mp_tilemap+6, X : AND.w #$EFFF : STA $7EC806 - RTL - .red - LDA !DrawMagicMeter_mp_tilemap+0, X : AND.w #$E7FF : STA $7EC746 - LDA !DrawMagicMeter_mp_tilemap+2, X : AND.w #$E7FF : STA $7EC786 - LDA !DrawMagicMeter_mp_tilemap+4, X : AND.w #$E7FF : STA $7EC7C6 - LDA !DrawMagicMeter_mp_tilemap+6, X : AND.w #$E7FF : STA $7EC806 - RTL - .yellow - LDA !DrawMagicMeter_mp_tilemap+0, X : AND.w #$EBFF : STA $7EC746 - LDA !DrawMagicMeter_mp_tilemap+2, X : AND.w #$EBFF : STA $7EC786 - LDA !DrawMagicMeter_mp_tilemap+4, X : AND.w #$EBFF : STA $7EC7C6 - LDA !DrawMagicMeter_mp_tilemap+6, X : AND.w #$EBFF : STA $7EC806 - RTL - .orange - LDA !DrawMagicMeter_mp_tilemap+0, X : AND.w #$E3FF : STA $7EC746 - LDA !DrawMagicMeter_mp_tilemap+2, X : AND.w #$E3FF : STA $7EC786 - LDA !DrawMagicMeter_mp_tilemap+4, X : AND.w #$E3FF : STA $7EC7C6 - LDA !DrawMagicMeter_mp_tilemap+6, X : AND.w #$E3FF : STA $7EC806 - RTL - .green - LDA !DrawMagicMeter_mp_tilemap+0, X : STA $7EC746 - LDA !DrawMagicMeter_mp_tilemap+2, X : STA $7EC786 - LDA !DrawMagicMeter_mp_tilemap+4, X : STA $7EC7C6 - LDA !DrawMagicMeter_mp_tilemap+6, X : STA $7EC806 -RTL - -;================================================================================ -; 16-bit A, 8-bit X -; in: A(b) - Byte to Convert -; out: $04 - $07 (high - low) -;================================================================================ -HudHexToDec4Digit: - LDY.b #$90 - - - CMP.w #1000 : !BLT + - INY - SBC.w #1000 : BRA - - + - STY $04 : LDY #$90 ; Store 1000s digit & reset Y - - - CMP.w #100 : !BLT + - INY - SBC.w #100 : BRA - - + - STY $05 : LDY #$90 ; Store 100s digit & reset Y - - - CMP.w #10 : !BLT + - INY - SBC.w #10 : BRA - - + - STY $06 : LDY #$90 ; Store 10s digit & reset Y - CMP.w #1 : !BLT + - - - INY - DEC : BNE - - + - STY $07 ; Store 1s digit -RTS - -;================================================================================ -; 8-bit registers -; in: A(b) - Byte to Convert -; out: $05 - $07 (high - low) -;================================================================================ -HudHexToDec3Digit: ; this may be overkill, could have used the 4 digit one... - LDY.b #$90 - - - CMP.b #100 : !BLT + - INY - SBC.b #100 : BRA - - + - STY $05 : LDY.b #$90 ; Store 100s digit and reset Y - - - CMP.b #10 : !BLT + - INY - SBC.b #10 : BRA - - + - STY $06 : LDY #$90 ; Store 10s digit and reset Y - CMP.b #1 : !BLT + - - - INY - DEC : BNE - - + - STY $07 ; Store 1s digit -RTS - -;================================================================================ -; 8-bit registers -; in: A(b) - Byte to Convert -; out: $06 - $07 (high - low) -;================================================================================ -HudHexToDec2Digit: - LDY.b #$90 - - - CMP.b #10 : !BLT + - INY - SBC.b #10 : BRA - - + - STY $06 : LDY #$90 ; Store 10s digit and reset Y - CMP.b #1 : !BLT + - - - INY - DEC : BNE - - + - STY $07 ; Store 1s digit -RTS +NewDrawHud: +SEP #$30 +;================================================================================ +; Draw bomb count +!BOMBCOUNT_DRAW_ADDRESS = "$7EC75A" +!INFINITE_BOMBS = "$7F50C9" +;================================================================================ + + LDA !INFINITE_BOMBS : BNE .infinite_bombs + .finite_bombs + LDA.l $7EF343 ; bombs + JSR HudHexToDec2Digit ;requires 8 bit registers! + REP #$20 + LDX.b $06 : TXA : ORA.w #$2400 : STA !BOMBCOUNT_DRAW_ADDRESS ; Draw bombs 10 digit + LDX.b $07 : TXA : ORA.w #$2400 : STA !BOMBCOUNT_DRAW_ADDRESS+2 ; Draw bombs 1 digit + BRA + + + .infinite_bombs + REP #$20 + LDA.w #$2431 : STA !BOMBCOUNT_DRAW_ADDRESS ; infinity (left half) + INC A : STA !BOMBCOUNT_DRAW_ADDRESS+2 ; infinity (right half) + + + +;================================================================================ +; Draw rupee counter +!RUPEE_DRAW_ADDRESS = "$7EC750" +;================================================================================ + + LDA.l $7EF362 ; Drawing bombs (above) always ends with 16-bit A, so, no need to REP here + JSR HudHexToDec4Digit + LDX.b $04 : TXA : ORA.w #$2400 : STA !RUPEE_DRAW_ADDRESS ; 1000s + LDX.b $05 : TXA : ORA.w #$2400 : STA !RUPEE_DRAW_ADDRESS+2 ; 100s + LDX.b $06 : TXA : ORA.w #$2400 : STA !RUPEE_DRAW_ADDRESS+4 ; 10s + LDX.b $07 : TXA : ORA.w #$2400 : STA !RUPEE_DRAW_ADDRESS+6 ; 1s + +;================================================================================ +; Draw arrow count +!ARROWCOUNT_DRAW_ADDRESS = "$7EC760" +!INFINITE_ARROWS = "$7F50C8" +;================================================================================ + + SEP #$20 + LDA.l ArrowMode : BNE + + LDA !INFINITE_ARROWS : BNE .infinite_arrows + .finite_arrows + LDA.l $7EF377 ; arrows + JSR HudHexToDec2Digit + REP #$20 + LDX.b $06 : TXA : ORA.w #$2400 : STA !ARROWCOUNT_DRAW_ADDRESS ; Draw arrows 10 digit + LDX.b $07 : TXA : ORA.w #$2400 : STA !ARROWCOUNT_DRAW_ADDRESS+2 ; Draw arrows 1 digit + BRA + + + .infinite_arrows + REP #$20 + LDA.w #$2431 : STA !ARROWCOUNT_DRAW_ADDRESS ; infinity (left half) + INC A : STA !ARROWCOUNT_DRAW_ADDRESS+2 ; infinity (right half) + + + +;================================================================================ +; Draw Goal Item Indicator +!GOAL_COUNTER = "$7EF418" +!GOAL_DRAW_ADDRESS = "$7EC72A" +;================================================================================ + + SEP #$20 + LDA.l GoalItemRequirement : BNE + : JMP .done : + ; Star Meter + + LDA.l !GOAL_COUNTER + JSR HudHexToDec3Digit + REP #$20 + + LDA.l GoalItemIcon : STA !GOAL_DRAW_ADDRESS ; draw star icon + + LDX.b $05 : TXA : ORA.w #$2400 : STA !GOAL_DRAW_ADDRESS+2 ; draw 100's digit + LDX.b $06 : TXA : ORA.w #$2400 : STA !GOAL_DRAW_ADDRESS+4 ; draw 10's digit + LDX.b $07 : TXA : ORA.w #$2400 : STA !GOAL_DRAW_ADDRESS+6 ; draw 1's digit + + SEP #$20 + LDA.l GoalItemRequirement : CMP.b #$FF : BEQ .skip + + LDA.l GoalItemRequirement + JSR HudHexToDec3Digit + REP #$20 + LDA.w #$2830 : STA !GOAL_DRAW_ADDRESS+8 ; draw slash + LDX.b $05 : TXA : ORA.w #$2400 : STA !GOAL_DRAW_ADDRESS+10 ; draw 100's digit + LDX.b $06 : TXA : ORA.w #$2400 : STA !GOAL_DRAW_ADDRESS+12 ; draw 10's digit + LDX.b $07 : TXA : ORA.w #$2400 : STA !GOAL_DRAW_ADDRESS+14 ; draw 1's digit + BRA .done + .skip + REP #$20 + LDA.w #$207F ; transparent tile + STA !GOAL_DRAW_ADDRESS+8 + STA !GOAL_DRAW_ADDRESS+10 + STA !GOAL_DRAW_ADDRESS+12 + .done + +;================================================================================ +; Draw Dungeon Compass Counts +;================================================================================ + REP #$20 + LDA.l CompassMode : AND #$00FF : BEQ + ; skip if CompassMode is 0. + JSL.l DrawDungeonCompassCounts ; compasses.asm + + + +;================================================================================ +; Draw key count +!KEYS = "$7EF36F" +!KEY_DIGITS_ADDRESS = "$7EC764" +!KEY_ICON_ADDRESS = "$7EC726" +;================================================================================ + SEP #$20 + LDA.l !KEYS : CMP.b #$FF : BEQ .not_in_dungeon + .in_dungeon + JSR HudHexToDec2Digit : REP #$20 + + ; if 10s digit is 0, draw transparent tile instead of 0 + LDX.b $06 : TXA : CPX.b #$90 : BNE + + LDA.w #$007F + + + ORA.w #$2400 : STA !KEY_DIGITS_ADDRESS + + ; 1s digit + LDX.b $07 : TXA : ORA.w #$2400 : STA !KEY_DIGITS_ADDRESS+2 + BRA .done_keys + + .not_in_dungeon + REP #$20 + + ;in the overworld, draw transparent tiles instead of key count + LDA.w #$247F : STA !KEY_DIGITS_ADDRESS : STA !KEY_DIGITS_ADDRESS+2 + STA !KEY_ICON_ADDRESS + + .done_keys + + + + +;-------------------------------------------------------------------------------- +; Draw pendant/crystal icon +;-------------------------------------------------------------------------------- +!PRIZE_ICON = $7EC742 +!P_ICON = $296C +!C_ICON = $295F + + SEP #$20 + LDA.b $1B : BEQ .noprize + + LDX.w $040C + CPX #$1A : !BGE .noprize + CPX #$04 : !BLT .noprize + CPX #$08 : BEQ .noprize + + LDA $10 : CMP #$12 : BEQ .noprize + + LDA.l MapMode + REP #$20 + BEQ .drawprize + + LDA.l $7EF368 + AND.l DungeonItemMasks,X + BEQ .noprize + +.drawprize + TXA : LSR : TAX + LDA.l CrystalPendantFlags_2, X + AND.w #$0040 : BNE .is_crystal + + LDA.w #!P_ICON + BRA .doneprize + +.is_crystal + LDA.w #!C_ICON + BRA .doneprize + +.noprize + REP #$20 + LDA.w #$207F + +.doneprize + STA.l !PRIZE_ICON + +;-------------------------------------------------------------------------------- +; Draw Magic Meter +!INFINITE_MAGIC = "$7F50CA" +!DrawMagicMeter_mp_tilemap = "$0DFE0F" +;-------------------------------------------------------------------------------- + LDA $7EF36E : AND #$00FF ; crap we wrote over when placing the hook for OnDrawHud + !ADD #$0007 + AND #$FFF8 + TAX ; end of crap + + LDA !INFINITE_MAGIC : AND.w #$00FF : BNE + : JMP .green : + + SEP #$20 : LDA.b #$80 : STA $7EF36E : REP #$30 ; set magic to max + LDX.w #$0080 ; load full magic meter graphics + LDA $1A : AND.w #$000C : LSR #2 + BEQ .red + CMP.w #0001 : BEQ .yellow + CMP.w #0002 : BNE + : JMP .green : + + .blue + LDA !DrawMagicMeter_mp_tilemap+0, X : AND.w #$EFFF : STA $7EC746 + LDA !DrawMagicMeter_mp_tilemap+2, X : AND.w #$EFFF : STA $7EC786 + LDA !DrawMagicMeter_mp_tilemap+4, X : AND.w #$EFFF : STA $7EC7C6 + LDA !DrawMagicMeter_mp_tilemap+6, X : AND.w #$EFFF : STA $7EC806 + RTL + .red + LDA !DrawMagicMeter_mp_tilemap+0, X : AND.w #$E7FF : STA $7EC746 + LDA !DrawMagicMeter_mp_tilemap+2, X : AND.w #$E7FF : STA $7EC786 + LDA !DrawMagicMeter_mp_tilemap+4, X : AND.w #$E7FF : STA $7EC7C6 + LDA !DrawMagicMeter_mp_tilemap+6, X : AND.w #$E7FF : STA $7EC806 + RTL + .yellow + LDA !DrawMagicMeter_mp_tilemap+0, X : AND.w #$EBFF : STA $7EC746 + LDA !DrawMagicMeter_mp_tilemap+2, X : AND.w #$EBFF : STA $7EC786 + LDA !DrawMagicMeter_mp_tilemap+4, X : AND.w #$EBFF : STA $7EC7C6 + LDA !DrawMagicMeter_mp_tilemap+6, X : AND.w #$EBFF : STA $7EC806 + RTL + .orange + LDA !DrawMagicMeter_mp_tilemap+0, X : AND.w #$E3FF : STA $7EC746 + LDA !DrawMagicMeter_mp_tilemap+2, X : AND.w #$E3FF : STA $7EC786 + LDA !DrawMagicMeter_mp_tilemap+4, X : AND.w #$E3FF : STA $7EC7C6 + LDA !DrawMagicMeter_mp_tilemap+6, X : AND.w #$E3FF : STA $7EC806 + RTL + .green + LDA !DrawMagicMeter_mp_tilemap+0, X : STA $7EC746 + LDA !DrawMagicMeter_mp_tilemap+2, X : STA $7EC786 + LDA !DrawMagicMeter_mp_tilemap+4, X : STA $7EC7C6 + LDA !DrawMagicMeter_mp_tilemap+6, X : STA $7EC806 +RTL + +;================================================================================ +; 16-bit A, 8-bit X +; in: A(b) - Byte to Convert +; out: $04 - $07 (high - low) +;================================================================================ +HudHexToDec4Digit: + LDY.b #$90 + - + CMP.w #1000 : !BLT + + INY + SBC.w #1000 : BRA - + + + STY $04 : LDY #$90 ; Store 1000s digit & reset Y + - + CMP.w #100 : !BLT + + INY + SBC.w #100 : BRA - + + + STY $05 : LDY #$90 ; Store 100s digit & reset Y + - + CMP.w #10 : !BLT + + INY + SBC.w #10 : BRA - + + + STY $06 : LDY #$90 ; Store 10s digit & reset Y + CMP.w #1 : !BLT + + - + INY + DEC : BNE - + + + STY $07 ; Store 1s digit +RTS + +;================================================================================ +; 8-bit registers +; in: A(b) - Byte to Convert +; out: $05 - $07 (high - low) +;================================================================================ +HudHexToDec3Digit: ; this may be overkill, could have used the 4 digit one... + LDY.b #$90 + - + CMP.b #100 : !BLT + + INY + SBC.b #100 : BRA - + + + STY $05 : LDY.b #$90 ; Store 100s digit and reset Y + - + CMP.b #10 : !BLT + + INY + SBC.b #10 : BRA - + + + STY $06 : LDY #$90 ; Store 10s digit and reset Y + CMP.b #1 : !BLT + + - + INY + DEC : BNE - + + + STY $07 ; Store 1s digit +RTS + +;================================================================================ +; 8-bit registers +; in: A(b) - Byte to Convert +; out: $06 - $07 (high - low) +;================================================================================ +HudHexToDec2Digit: + LDY.b #$90 + - + CMP.b #10 : !BLT + + INY + SBC.b #10 : BRA - + + + STY $06 : LDY #$90 ; Store 10s digit and reset Y + CMP.b #1 : !BLT + + - + INY + DEC : BNE - + + + STY $07 ; Store 1s digit +RTS diff --git a/newitems.asm b/newitems.asm index c7d275a..e87f890 100755 --- a/newitems.asm +++ b/newitems.asm @@ -456,6 +456,7 @@ AddReceivedItemExpanded: JSR IncrementItemCounters + LDA $02D8 ; Item Value + STA !MULTIWORLD_ITEM_ID CMP.b #$16 : BEQ .bottle ; Bottle CMP.b #$2B : BEQ .bottle ; Red Potion w/bottle From f9e3bec5cbc4103f30113b57f938d26b90f9c6e3 Mon Sep 17 00:00:00 2001 From: aerinon Date: Tue, 7 Sep 2021 16:24:18 -0600 Subject: [PATCH 15/16] Removed rails using a dynamic flag --- roomloading.asm | 136 ++---------------------------------------------- 1 file changed, 3 insertions(+), 133 deletions(-) diff --git a/roomloading.asm b/roomloading.asm index 55fbfc9..9a77437 100644 --- a/roomloading.asm +++ b/roomloading.asm @@ -15,9 +15,6 @@ LoadRoomHook: dl IcePalaceBombosNE ; 03 dl CastleEastEntrance ; 04 dl CastleWestEntrance ; 05 - dl PoDFallingBridge ; 06 - dl PoDArena ; 07 - dl MireBKPond ; 08 NoCallback: RTL @@ -92,138 +89,11 @@ CastleEastEntrance: ; new solution (see Rain Prevention) CastleWestEntrance: ; new solution (see Rain Prevention) RTL -PoDFallingBridge: - LDA.l DRFlags : AND #$10 : BNE + : RTL : + - - REP #$20 ; 16 A - LDA.w #$08e1 ; square peg - %writeTileAt(5,7,0,1) - %writeTileAt(11,7,0,1) - INC ;horizontal rail - %writeTileAt(6,7,0,1) - %writeTileAt(7,7,0,1) - %writeTileAt(8,7,0,1) - %writeTileAt(9,7,0,1) - %writeTileAt(10,7,0,1) - SEP #$20 ; 8 A - - REP #$20 ; 16 A - LDA.w #$08e0 ; corner top left - %writeTileAt(5,6,0,1) - %writeTileAt(10,6,0,1) - LDA.w #$48e0 ; corner top right - %writeTileAt(6,6,0,1) - %writeTileAt(11,6,0,1) - LDA.w #$08f4 ; top mid - %writeTileAt(7,6,0,1) - %writeTileAt(8,6,0,1) - %writeTileAt(9,6,0,1) - - LDA.w #$08f1 ; corner mid left - %writeTileAt(5,7,0,1) - %writeTileAt(10,7,0,1) - LDA.w #$48f1 ; corner mid right - %writeTileAt(6,7,0,1) - %writeTileAt(11,7,0,1) - LDA.w #$08f2 ; mid mid - %writeTileAt(7,7,0,1) - %writeTileAt(8,7,0,1) - %writeTileAt(9,7,0,1) - - LDA.w #$08e4 ; corner lower left - %writeTileAt(5,8,0,1) - %writeTileAt(10,8,0,1) - LDA.w #$48e4 ; corner lower right - %writeTileAt(6,8,0,1) - %writeTileAt(11,8,0,1) - LDA.w #$08e5 ; lower mid - %writeTileAt(7,8,0,1) - %writeTileAt(8,8,0,1) - %writeTileAt(9,8,0,1) - SEP #$20 ; 8 A - RTL - -;08e0 48e0 08f4 08f4 08e0 48e0 -;08f1 48f1 08f2 08f2 08f1 48f1 -;08e4 48e4 08e5 08e5 08e4 48e4 -; -;(54,42) 22,10,1,1 42 85 2720 2742 156C -;(54,43) 22,11,1,1 43 87 2784 2806 15EC -;(54,44) 22,12,1,1 44 89 2848 2870 166C -PoDArena: - LDA.l DRFlags : AND #$10 : BNE + : RTL : + - - REP #$20 ; 16 A - LDA.w #$08e0 ; corner top left - %writeTileAt(22,10,1,1) - %writeTileAt(25,10,1,1) - LDA.w #$48e0 ; corner top right - %writeTileAt(23,10,1,1) - %writeTileAt(26,10,1,1) - LDA.w #$08f4 ; top mid - %writeTileAt(24,10,1,1) - - LDA.w #$08f1 ; corner mid left - %writeTileAt(22,11,1,1) - %writeTileAt(25,11,1,1) - LDA.w #$48f1 ; corner mid right - %writeTileAt(23,11,1,1) - %writeTileAt(26,11,1,1) - LDA.w #$08f2 ; mid mid - %writeTileAt(24,11,1,1) - - LDA.w #$08e4 ; corner lower left - %writeTileAt(22,12,1,1) - %writeTileAt(25,12,1,1) - LDA.w #$48e4 ; corner lower right - %writeTileAt(23,12,1,1) - %writeTileAt(26,12,1,1) - LDA.w #$08e5 ; lower mid - %writeTileAt(24,12,1,1) - SEP #$20 ; 8 A - RTL - -MireBKPond: - LDA.l DRFlags : AND #$10 : BNE + : RTL : + - - REP #$20 ; 16 A - LDA.w #$08e0 ; corner top left - %writeTileAt(13,11,1,1) - %writeTileAt(17,11,1,1) - LDA.w #$48e0 ; corner top right - %writeTileAt(14,11,1,1) - %writeTileAt(18,11,1,1) - LDA.w #$08f4 ; top mid - %writeTileAt(15,11,1,1) - %writeTileAt(16,11,1,1) - - LDA.w #$08f1 ; corner mid left - %writeTileAt(13,12,1,1) - %writeTileAt(17,12,1,1) - LDA.w #$48f1 ; corner mid right - %writeTileAt(14,12,1,1) - %writeTileAt(18,12,1,1) - LDA.w #$08f2 ; mid mid - %writeTileAt(15,12,1,1) - %writeTileAt(16,12,1,1) - - LDA.w #$08e4 ; corner lower left - %writeTileAt(13,13,1,1) - %writeTileAt(17,13,1,1) - LDA.w #$48e4 ; corner lower right - %writeTileAt(14,13,1,1) - %writeTileAt(18,13,1,1) - LDA.w #$08e5 ; lower mid - %writeTileAt(15,13,1,1) - %writeTileAt(16,13,1,1) - SEP #$20 ; 8 A - RTL - RoomCallbackTable: ; 0 1 2 3 4 5 6 7 8 9 A B C D E F db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $01, $00 ; 00x - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $06, $00, $00, $00, $00, $00 ; 01x - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $07, $00, $00, $00, $00, $00 ; 02x + db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 01x + db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 02x db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 03x db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 04x db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 05x @@ -234,7 +104,7 @@ RoomCallbackTable: db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 0Ax db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 0Bx db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 0Cx - db $00, $08, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $03, $00 ; 0Dx + db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $03, $00 ; 0Dx db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 0Ex db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 0Fx db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 0Fx From cc502c7524b8fa048ba335944c2ba2073a687eae Mon Sep 17 00:00:00 2001 From: aerinon Date: Thu, 16 Sep 2021 16:01:51 -0600 Subject: [PATCH 16/16] Removed stonewall pre-opens --- overrides.asm | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/overrides.asm b/overrides.asm index f984286..a041ae3 100644 --- a/overrides.asm +++ b/overrides.asm @@ -35,11 +35,7 @@ rtl OnFileLoadOverride: jsl OnFileLoad ; what I wrote over - lda.l DRFlags : and #$80 : beq + ;flag is off - lda $7ef086 : ora #$80 : sta $7ef086 - + lda.l DRFlags : and #$40 : beq + ;flag is off - lda $7ef036 : ora #$80 : sta $7ef036 - + lda.l DRFlags : and #$02 : beq + + + lda.l DRFlags : and #$02 : beq + ; Mirror Scroll lda $7ef353 : bne + lda #$01 : sta $7ef353 + rtl