diff --git a/LTTP_RND_GeneralBugfixes.asm b/LTTP_RND_GeneralBugfixes.asm index 3dc7894..38c2f24 100644 --- a/LTTP_RND_GeneralBugfixes.asm +++ b/LTTP_RND_GeneralBugfixes.asm @@ -114,8 +114,12 @@ 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" +!FLAG_OW_MIXED = $04 +!FLAG_OW_CROSSED = $02 + incsrc hooks.asm incsrc treekid.asm incsrc spriteswap.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/entrances.asm b/entrances.asm index 4abb65d..0a0d37c 100644 --- a/entrances.asm +++ b/entrances.asm @@ -216,7 +216,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 : 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 ac4bea9..354b1d2 100644 --- a/flute.asm +++ b/flute.asm @@ -61,8 +61,8 @@ FluteBoy: JML.l FluteBoy_Continue ;-------------------------------------------------------------------------------- FreeDuckCheck: - LDA.l OWMode+1 : CMP.b #$01 : BEQ .skipInvertedCheck - LDA.l InvertedMode : BEQ .done + LDA.l OWMode+1 : AND.b #!FLAG_OW_MIXED : BNE .skipInvertedCheck + LDA.l InvertedMode : BEQ .done .skipInvertedCheck LDA $7EF34C : CMP.b #$03 : BEQ .done ; flute is already active diff --git a/hooks.asm b/hooks.asm index 23c9afe..b67c923 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/hudadditions.asm b/hudadditions.asm index eb223e3..b21fa78 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.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/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 } diff --git a/msu.asm b/msu.asm index 16108a6..b559830 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 + diff --git a/music.asm b/music.asm index e0e71e9..0d8a1dc 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,15 @@ Overworld_FinishMirrorWarp: ;-------------------------------------------------------------------------------- BirdTravel_LoadTargetAreaMusic: - JSL Overworld_DetermineMusicSFX + JSL Overworld_DetermineAmbientSFX + JSL Overworld_DetermineMusic + STZ $04C8 ; Clear peg puzzle count 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 +93,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 +114,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 +127,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 diff --git a/newitems.asm b/newitems.asm index 0994cd7..ea4db59 100755 --- a/newitems.asm +++ b/newitems.asm @@ -468,6 +468,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 diff --git a/overrides.asm b/overrides.asm index caf860a..d48f907 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 diff --git a/owrando.asm b/owrando.asm index b3f9af8..a739ca9 100644 --- a/owrando.asm +++ b/owrando.asm @@ -338,23 +338,27 @@ 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 - ldx $05 : lda.l OWTileWorldAssoc,x : sta.l $7ef3ca ; change world + LDA.l OWMode+1 : AND.b #!FLAG_OW_CROSSED : beq .return + 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 $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 #$17 : beq .return - lda #$17 : sta $5d - lda #$01 : sta $02e0 - bra .return - .nobunny - lda $5d : cmp #$17 : bne .return - stz $5d : stz $2e0 + ; 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 .return lda $05 : sta $8a 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