diff --git a/LTTP_RND_GeneralBugfixes.asm b/LTTP_RND_GeneralBugfixes.asm index 2ad0946..3ce9b93 100644 --- a/LTTP_RND_GeneralBugfixes.asm +++ b/LTTP_RND_GeneralBugfixes.asm @@ -26,7 +26,7 @@ org $3FFFFF ; <- 1FFFFF db #$00 ; expand file to 2mb org $1FFFF8 ; <- FFFF8 timestamp rom -db #$20, #$18, #$02, #$04 ; year/month/day +db #$20, #$18, #$02, #$06 ; year/month/day ;================================================================================ @@ -351,6 +351,9 @@ Dungeon_SaveRoomData_justKeys: org $02B861 Dungeon_SaveRoomQuadrantData: +org $02FD8A ; 17D8A - Bank07.asm: 3732 Note: Different bank +LoadGearPalettes_bunny: + org $05A51D Sprite_SpawnFallingItem: diff --git a/bugfixes.asm b/bugfixes.asm index c5fbf59..2c5bc4f 100644 --- a/bugfixes.asm +++ b/bugfixes.asm @@ -24,7 +24,7 @@ RTL ;1 = Don't Reset Music MSMusicReset: LDA $8A : CMP.b #$80 : BNE + - LDA $23 + LDA $23 + RTL ;-------------------------------------------------------------------------------- @@ -42,4 +42,39 @@ RTL ; CPX.b #$1B : BNE + : LDA.b #$01 : RTL : + ; LDA $7EF340, X ;RTL -;-------------------------------------------------------------------------------- \ No newline at end of file +;-------------------------------------------------------------------------------- + +;-------------------------------------------------------------------------------- +FixBunnyOnExitToLightWorld: + JSL.l FakeWorldFix + LDA.w $02E0 : BEQ + + JMP.w DecideIfBunny + + + LDA $7EF357; thing we overwrote +RTL +;-------------------------------------------------------------------------------- + +;-------------------------------------------------------------------------------- +; fix issue where if a player beats aga1 without moon pearl, they don't turn into +; bunny on the pyramid +FixAga2Bunny: + LDA.l FixFakeWorld : BEQ + ; Only use this fix is fakeworld fix is in use + JSL DecideIfBunny : BNE + + JSR MakeBunny + LDA.b #$04 : STA.w $012C ; play bunny music + BRA .done + + + LDA.b #$09 : STA.w $012C ; what we wrote over + .done +RTL +;-------------------------------------------------------------------------------- + +;-------------------------------------------------------------------------------- +MakeBunny: + PHX : PHY + LDA.b #$17 : STA $5D ; set player mode to permabunny + LDA.b #$01 : STA $02E0 : STA $56 ; make player look like bunny + JSL LoadGearPalettes_bunny + PLY : PLX +RTS +;-------------------------------------------------------------------------------- diff --git a/hooks.asm b/hooks.asm index 3bb2506..841024c 100644 --- a/hooks.asm +++ b/hooks.asm @@ -1066,6 +1066,9 @@ spc_nmi: JML msu_main NOP spc_continue: + +org $0EE6EC ; <- E220 A922 - Bank0E.asm:2892 (SEP #$20) +JSL.l ending_wait ;-------------------------------------------------------------------------------- ;================================================================================ @@ -1091,7 +1094,17 @@ JSL.l LoadModifiedTileBufferAddress : NOP #2 ; Permabunny Fix ;-------------------------------------------------------------------------------- org $078F32 ; <- 38F32 - Bank07.asm:2420 - (LDA $7EF357) -JSL.l DecideIfBunny +JSL.l DecideIfBunny ; for bunny beams +;-------------------------------------------------------------------------------- +org $028468 ; <- 10468 Bank02.asm:911 - (LDA $7EF357) +JSL.l FixBunnyOnExitToLightWorld ; for cross-world connections +;-------------------------------------------------------------------------------- + +;================================================================================ +; Other bunny Fixes +;-------------------------------------------------------------------------------- +org $029E7C; <- 11E7C - module_ganon_emerges.asm:127 - (LDA.b #$09 : STA $012C) +JSL.l FixAga2Bunny : NOP ;-------------------------------------------------------------------------------- ;================================================================================ @@ -2018,4 +2031,3 @@ org $00DF62 ; <- Bank00.asm:4672 (LDX.w #$0000 : LDY.w #$0040) org $00DF6E ; <- A few instructions later, right after JSR Do3To4High16Bit ReloadingFloorsCancel: ;================================================================================ - diff --git a/inventory.asm b/inventory.asm index 34e66ad..60abf0e 100644 --- a/inventory.asm +++ b/inventory.asm @@ -830,7 +830,6 @@ RTL ;-------------------------------------------------------------------------------- ClearOWKeys: PHA - JSL.l FakeWorldFix LDA.l GenericKeys : BEQ + PLA : LDA $7EF38B : STA $7EF36F RTL diff --git a/msu.asm b/msu.asm index c2ff499..9430755 100644 --- a/msu.asm +++ b/msu.asm @@ -3,7 +3,7 @@ ; MSU-1 Enhanced Audio Patch ; Zelda no Densetsu - Kamigami no Triforce ; Modified for VT Randomizer -; +; ; Author: qwertymodo ; ; Free space used: 0x77DDD-0x77F8A @@ -58,6 +58,7 @@ !REG_MUSIC_CONTROL = $012C !REG_CURRENT_TRACK = $0130 !REG_CURRENT_COMMAND = $0133 +!REG_MSU_LOAD_FLAG = $7F509B !REG_SPC_CONTROL = $2140 !REG_NMI_FLAGS = $4210 @@ -93,7 +94,36 @@ msu_main: SEP #$30 LDX !REG_MUSIC_CONTROL BNE command_ff - + LDA !REG_MSU_LOAD_FLAG + BEQ do_fade + +msu_check_busy: + LDA !REG_MSU_STATUS + BIT !FLAG_MSU_STATUS_AUDIO_BUSY + BEQ .ready + JML spc_continue +.ready + LDA !REG_MSU_STATUS + BIT !FLAG_MSU_STATUS_TRACK_MISSING + BNE spc_fallback + LDA !VAL_VOLUME_FULL + STA !REG_TARGET_VOLUME + STA !REG_CURRENT_VOLUME + STA !REG_MSU_VOLUME + LDA !REG_MSU_LOAD_FLAG + STA !REG_MSU_CONTROL + LDA #$00 + STA !REG_MSU_LOAD_FLAG + JML spc_continue + +spc_fallback: + STZ !REG_MSU_CONTROL + STZ !REG_CURRENT_MSU_TRACK + STZ !REG_TARGET_VOLUME + STZ !REG_CURRENT_VOLUME + STZ !REG_MSU_VOLUME + JML spc_continue + do_fade: LDA !REG_CURRENT_VOLUME CMP !REG_TARGET_VOLUME @@ -156,28 +186,29 @@ load_track: STX !REG_MSU_TRACK_LO STZ !REG_MSU_TRACK_HI STZ !REG_MSU_CONTROL - LDA !VAL_VOLUME_FULL - STA !REG_TARGET_VOLUME - STA !REG_CURRENT_VOLUME - STA !REG_MSU_VOLUME - -msu_check_busy: - LDA !REG_MSU_STATUS - BIT !FLAG_MSU_STATUS_AUDIO_BUSY - BNE msu_check_busy - BIT !FLAG_MSU_STATUS_TRACK_MISSING - BEQ msu_play - -spc_fallback: - STZ !REG_MSU_CONTROL - STZ !REG_CURRENT_MSU_TRACK - STZ !REG_TARGET_VOLUME - STZ !REG_CURRENT_VOLUME - STZ !REG_MSU_VOLUME + LDA.l MSUTrackList,x + STA !REG_MSU_LOAD_FLAG + STX !REG_CURRENT_MSU_TRACK JML spc_continue -msu_play: - LDA.l MSUTrackList, X - STA !REG_MSU_CONTROL - STX !REG_CURRENT_MSU_TRACK - JML spc_continue \ No newline at end of file + +ending_wait: + rep #$20 + lda !REG_MSU_ID_01 + cmp !VAL_MSU_ID_01 + bne .done + lda !REG_MSU_ID_23 + cmp !VAL_MSU_ID_23 + bne .done + lda !REG_MSU_ID_45 + cmp !VAL_MSU_ID_45 + bne .done + sep #$20 +.wait + lda !REG_MSU_STATUS + bit !FLAG_MSU_STATUS_AUDIO_PLAYING + bne .wait +.done + sep #$20 + lda #$22 + rtl diff --git a/tables.asm b/tables.asm index 035029b..c481480 100644 --- a/tables.asm +++ b/tables.asm @@ -1374,22 +1374,22 @@ dw $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000 dw $0000, $0AA8, $07AA, $0000, $0000, $0000, $0000, $0000 dw $0000, $0000, $0000, $0000, $0000, $0000 EntranceAltDoorFrameTable: -dw $0000, $01aa, $8124, $87be, $8158, $0000, $0000, $0000, -dw $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000, -dw $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000, -dw $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000, -dw $0000, $0000, $0000, $82be, $0000, $0000, $0000, $0000, -dw $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000, -dw $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000, -dw $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000, -dw $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000, -dw $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000, -dw $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000, -dw $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000, -dw $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000, -dw $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000, -dw $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000, -dw $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000, +dw $0000, $01aa, $8124, $87be, $8158, $0000, $0000, $0000 +dw $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000 +dw $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000 +dw $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000 +dw $0000, $0000, $0000, $82be, $0000, $0000, $0000, $0000 +dw $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000 +dw $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000 +dw $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000 +dw $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000 +dw $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000 +dw $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000 +dw $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000 +dw $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000 +dw $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000 +dw $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000 +dw $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000 dw $0000 ;=============================================================================== org $30B000 ; PC 0x183000 - 0x183054 @@ -1410,10 +1410,11 @@ db $FF, $FF, $FF, $FF ;shop_config - t--- --qq ; t - 0=Shop - 1=TakeAny ; qq - # of items for sale -org $30C800 ; PC 0x184800 - 0x184FFF +org $30C800 ; PC 0x184800 - 0x18487F - max 16 shops ShopTable: ;db [id][roomID-low][roomID-high][doorID][zero][shop_config][pad][pad] db $FF, $FF, $FF, $FF, $00, $03, $00, $00 +org $30C880 ; PC 0x184880 - 0x184FFF - max 240 entries ShopContentsTable: ;db [id][item][price-low][price-high][max][repl_id][repl_price-low][repl_price-high] db $FF, $AF, $50, $00, $00, $FF, $00, $00