Merge branch 'master' of https://github.com/KatDevsGames/z3randomizer into darkrooms
This commit is contained in:
@@ -208,6 +208,9 @@ incsrc stats/main.asm
|
||||
org $308000 ; bank #$30
|
||||
incsrc tables.asm
|
||||
|
||||
org $348000
|
||||
incsrc spc.asm
|
||||
|
||||
; uncomment for inverted adjustments
|
||||
;incsrc sandbox.asm
|
||||
|
||||
|
||||
22
hooks.asm
22
hooks.asm
@@ -1449,8 +1449,8 @@ JSL.l GetMagicBatItem
|
||||
; MSU Music
|
||||
;--------------------------------------------------------------------------------
|
||||
org $0080D7 ; <- D7 - Bank00.asm:172 (SEP #$30)
|
||||
JML msu_main : NOP
|
||||
spc_continue:
|
||||
JML MSUMain : NOP
|
||||
SPCContinue:
|
||||
|
||||
org $028B7A ; <- C220 A5A0 - Bank02.asm:2225 (REP #$20 : LDA $A0)
|
||||
JSL SpiralStairsPreCheck
|
||||
@@ -1462,30 +1462,30 @@ org $02D6E8 ; <- 9C0A01 - Bank02.asm:10811 (STZ $010A)
|
||||
NOP #3
|
||||
|
||||
org $08C421 ; <- AD4021 F005 - ancilla_receive_item.asm:108 (LDA $2140 : BEQ .wait_for_music)
|
||||
JML pendant_fanfare : NOP
|
||||
pendant_continue:
|
||||
JML PendantFanfareWait : NOP
|
||||
PendantFanfareContinue:
|
||||
|
||||
org $08C42B
|
||||
pendant_done:
|
||||
PendantFanfareDone:
|
||||
|
||||
org $08C62A ; <- AD4021 D008 - ancilla_receive_item.asm:442 (LDA $2140 : BNE .waitForSilence)
|
||||
JML crystal_fanfare : NOP
|
||||
crystal_done:
|
||||
JML CrystalFanfareWait : NOP
|
||||
CrystalFanfareDone:
|
||||
|
||||
org $08C637
|
||||
crystal_continue:
|
||||
CrystalFanfareContinue:
|
||||
|
||||
org $0988A0 ; <- 8D2C01 8009 - ancilla_init.asm:1179 (STA $012C : BRA .doneWithSoundEffects)
|
||||
JML fanfare_preload : NOP
|
||||
JML FanfarePreload : NOP
|
||||
|
||||
org $09F2A7 ; <- 8F27C27E - module_death.asm:56 (STA $7EC227)
|
||||
JSL.l StoreMusicOnDeath
|
||||
|
||||
org $0CC100 ; <- A511 C904 - Bank0C.asm:07 (LDA $11 : CMP.b #$04)
|
||||
JSL.l startup_wait
|
||||
;JSL.l StartupWait
|
||||
|
||||
org $0EE6EC ; <- E220 A922 - Bank0E.asm:2892 (SEP #$20 : LDA.b #$22 : STA $012C)
|
||||
JSL.l ending_wait
|
||||
JSL.l EndingMusicWait
|
||||
|
||||
; Process music commands in NMI from new location after muting is processed
|
||||
org $0080DD
|
||||
|
||||
2
init.asm
2
init.asm
@@ -55,6 +55,6 @@ RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
Init_PostRAMClear:
|
||||
|
||||
JSL msu_init
|
||||
JSL MSUInit
|
||||
|
||||
JML $00D463 ; The original target of the jump table that we hijacked
|
||||
156
msu.asm
156
msu.asm
@@ -145,6 +145,9 @@
|
||||
!VAL_VOLUME_HALF = #$80
|
||||
!VAL_VOLUME_FULL = #$FF
|
||||
|
||||
;================================================================================
|
||||
; Extended OST/SPC fallback, decide which track to actually play
|
||||
;--------------------------------------------------------------------------------
|
||||
CheckMusicLoadRequest:
|
||||
PHP : REP #$10 : PHA : PHX : PHY
|
||||
LDA !REG_MUSIC_CONTROL_REQUEST : BEQ .skip+3 : BMI .skip+3
|
||||
@@ -176,7 +179,7 @@ CheckMusicLoadRequest:
|
||||
BRA +++
|
||||
+ : LDA !REG_MSU_PACK_CURRENT : STA !REG_MSU_PACK_REQUEST
|
||||
++ : STA !REG_MSU_PACK_CURRENT
|
||||
JSL msu_init_check_fallback
|
||||
JSL MSUInit_check_fallback
|
||||
+++
|
||||
|
||||
LDA !REG_MUSIC_CONTROL_REQUEST : CMP #$08 : BEQ ++ ; Mirror SFX is not affected by NoBGM or pack $FE
|
||||
@@ -325,7 +328,11 @@ CheckMusicLoadRequest:
|
||||
PLY : PLX : PLA : PLP
|
||||
LDA.b #$05 : STA $012D
|
||||
JML Module_PreDungeon_setAmbientSfx
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;================================================================================
|
||||
; Fade out music if we're changing tracks on a stair transition
|
||||
;--------------------------------------------------------------------------------
|
||||
SpiralStairsPreCheck:
|
||||
REP #$20 ; thing we wrote over
|
||||
LDA $A0
|
||||
@@ -351,7 +358,11 @@ SpiralStairsPreCheck:
|
||||
.done
|
||||
LDA $A0 ; thing we wrote over
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;================================================================================
|
||||
; Change music on stair transition (ToH/GT)
|
||||
;--------------------------------------------------------------------------------
|
||||
SpiralStairsPostCheck:
|
||||
LDA $A0
|
||||
CMP.w #$000C : BNE +
|
||||
@@ -372,29 +383,25 @@ SpiralStairsPostCheck:
|
||||
.done
|
||||
LDX.b #$1C : LDA $A0 ; thing we wrote over
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;================================================================================
|
||||
; Make sure expanded OST tracks load properly after death/fairy revival
|
||||
;--------------------------------------------------------------------------------
|
||||
StoreMusicOnDeath:
|
||||
STA.l $7EC227 ; thing we wrote over
|
||||
LDA !REG_MSU_STATUS : BIT !FLAG_MSU_STATUS_AUDIO_PLAYING : BEQ .done
|
||||
LDA !REG_CURRENT_MSU_TRACK : STA.l $7EC227
|
||||
.done
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
msu_init:
|
||||
;================================================================================
|
||||
; Check if MSU-1 is enabled and scan for missing tracks
|
||||
;--------------------------------------------------------------------------------
|
||||
MSUInit:
|
||||
PHP
|
||||
|
||||
STZ $4200
|
||||
|
||||
LDA.b #$FF : STA $2140
|
||||
|
||||
LDA.b #SPCEngineNewCode : STA.b $00
|
||||
LDA.b #SPCEngineNewCode>>8 : STA.b $01
|
||||
LDA.b #SPCEngineNewCode>>16
|
||||
|
||||
JSL Sound_LoadLightWorldSongBank_do_load
|
||||
|
||||
LDA.b #$81 : STA $4200
|
||||
|
||||
LDA NoBGM : BNE .done
|
||||
|
||||
REP #$20
|
||||
@@ -456,29 +463,34 @@ msu_init:
|
||||
PLA : DEC
|
||||
BRA .check_track
|
||||
|
||||
msu_main:
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;================================================================================
|
||||
; Play MSU-1 audio track
|
||||
;--------------------------------------------------------------------------------
|
||||
MSUMain:
|
||||
SEP #$20 ; set 8-BIT accumulator
|
||||
LDA $4210 ; thing we wrote over
|
||||
REP #$20 ; set 16-BIT accumulator
|
||||
LDA !REG_MSU_ID_01 : CMP !VAL_MSU_ID_01 : BEQ .continue
|
||||
.nomsu
|
||||
SEP #$30
|
||||
JML spc_continue
|
||||
JML SPCContinue
|
||||
.continue
|
||||
LDA !REG_MSU_ID_23 : CMP !VAL_MSU_ID_23 : BNE .nomsu
|
||||
LDA !REG_MSU_ID_45 : CMP !VAL_MSU_ID_45 : BNE .nomsu
|
||||
SEP #$30
|
||||
LDX !REG_MUSIC_CONTROL : BEQ +
|
||||
BRL command_ff
|
||||
BRL .command_ff
|
||||
+
|
||||
LDA !REG_MSU_DELAYED_COMMAND : BEQ do_fade
|
||||
LDA !REG_MSU_DELAYED_COMMAND : BEQ .do_fade
|
||||
|
||||
msu_check_busy:
|
||||
.check_busy
|
||||
LDA !REG_MSU_STATUS : BIT !FLAG_MSU_STATUS_AUDIO_BUSY : BEQ .ready
|
||||
JML spc_continue
|
||||
JML SPCContinue
|
||||
.ready
|
||||
LDA !REG_MSU_STATUS : BIT !FLAG_MSU_STATUS_TRACK_MISSING : BEQ .start
|
||||
JML spc_continue
|
||||
JML SPCContinue
|
||||
.start
|
||||
LDA !VAL_VOLUME_FULL
|
||||
STA !REG_TARGET_VOLUME
|
||||
@@ -498,60 +510,61 @@ msu_check_busy:
|
||||
+++ : STA !REG_MSU_CONTROL
|
||||
LDA.b #$00
|
||||
STA !REG_MSU_DELAYED_COMMAND
|
||||
JML spc_continue
|
||||
JML SPCContinue
|
||||
|
||||
do_fade:
|
||||
LDA !REG_CURRENT_VOLUME : CMP !REG_TARGET_VOLUME : BNE .continue
|
||||
JML spc_continue
|
||||
.continue
|
||||
BCC .increment
|
||||
.do_fade:
|
||||
LDA !REG_CURRENT_VOLUME : CMP !REG_TARGET_VOLUME : BNE +
|
||||
JML SPCContinue
|
||||
+ : BCC .increment
|
||||
.decrement
|
||||
SBC !VAL_VOLUME_DECREMENT : BCS .set
|
||||
SBC !VAL_VOLUME_DECREMENT : BCC .mute
|
||||
CMP !REG_TARGET_VOLUME : !BGE .set
|
||||
LDA !REG_TARGET_VOLUME : BRA .set
|
||||
.mute
|
||||
STZ !REG_CURRENT_VOLUME
|
||||
STZ !REG_MSU_CONTROL
|
||||
BRA .set
|
||||
.increment
|
||||
ADC !VAL_VOLUME_INCREMENT : BCC .set
|
||||
ADC !VAL_VOLUME_INCREMENT : BCS .max
|
||||
CMP !REG_TARGET_VOLUME : !BLT .set
|
||||
LDA !REG_TARGET_VOLUME : BRA .set
|
||||
.max
|
||||
LDA !VAL_VOLUME_FULL
|
||||
.set
|
||||
STA !REG_CURRENT_VOLUME
|
||||
STA !REG_MSU_VOLUME
|
||||
JML spc_continue
|
||||
JML SPCContinue
|
||||
|
||||
command_ff:
|
||||
CPX !VAL_COMMAND_LOAD_NEW_BANK : BNE command_f3
|
||||
JML spc_continue
|
||||
.command_ff:
|
||||
CPX !VAL_COMMAND_LOAD_NEW_BANK : BNE .command_f3
|
||||
JML SPCContinue
|
||||
|
||||
command_f3:
|
||||
CPX !VAL_COMMAND_FULL_VOLUME : BNE command_f2
|
||||
STX !REG_SPC_CONTROL
|
||||
.command_f3:
|
||||
CPX !VAL_COMMAND_FULL_VOLUME : BNE .command_f2
|
||||
LDA !VAL_VOLUME_FULL
|
||||
STA !REG_TARGET_VOLUME
|
||||
JML spc_continue
|
||||
JML SPCContinue
|
||||
|
||||
command_f2:
|
||||
CPX !VAL_COMMAND_FADE_HALF : BNE command_f1
|
||||
STX !REG_SPC_CONTROL
|
||||
.command_f2:
|
||||
CPX !VAL_COMMAND_FADE_HALF : BNE .command_f1
|
||||
LDA !VAL_VOLUME_HALF
|
||||
STA !REG_TARGET_VOLUME
|
||||
JML spc_continue
|
||||
JML SPCContinue
|
||||
|
||||
command_f1:
|
||||
CPX !VAL_COMMAND_FADE_OUT : BNE command_f0
|
||||
STX !REG_SPC_CONTROL
|
||||
.command_f1:
|
||||
CPX !VAL_COMMAND_FADE_OUT : BNE .command_f0
|
||||
STZ !REG_TARGET_VOLUME
|
||||
STZ !REG_CURRENT_MSU_TRACK
|
||||
JML spc_continue
|
||||
JML SPCContinue
|
||||
|
||||
command_f0:
|
||||
CPX !VAL_COMMAND_STOP_PLAYBACK : !BLT load_track
|
||||
.command_f0:
|
||||
CPX !VAL_COMMAND_STOP_PLAYBACK : !BLT .load_track
|
||||
CPX !VAL_COMMAND_MUTE_SPC : BEQ + ; Don't allow executing the mute/umute
|
||||
CPX !VAL_COMMAND_UNMUTE_SPC : BNE ++ ; commands during NMI like this
|
||||
+ : LDA.b #$00 : STA !REG_MUSIC_CONTROL
|
||||
++ : JML spc_continue
|
||||
++ : JML SPCContinue
|
||||
|
||||
load_track:
|
||||
.load_track:
|
||||
CPX !REG_CURRENT_MSU_TRACK : BNE +
|
||||
- : CPX #27 : BEQ +
|
||||
TXA
|
||||
@@ -602,9 +615,14 @@ load_track:
|
||||
LDA MSUExtendedFallbackList-1,X : BRA -
|
||||
+
|
||||
STA !REG_MUSIC_CONTROL
|
||||
JML spc_continue
|
||||
JML SPCContinue
|
||||
|
||||
fanfare_preload:
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;================================================================================
|
||||
; Wait for the fanfare music to start, or else it can get skipped entirely
|
||||
;--------------------------------------------------------------------------------
|
||||
FanfarePreload:
|
||||
STA !REG_MUSIC_CONTROL_REQUEST ; thing we wrote over
|
||||
PHA
|
||||
JSL CheckMusicLoadRequest
|
||||
@@ -612,8 +630,12 @@ fanfare_preload:
|
||||
PLA
|
||||
- : CMP !REG_SPC_CONTROL : BNE -
|
||||
JML AddReceivedItem_doneWithSoundEffects
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
pendant_fanfare:
|
||||
;================================================================================
|
||||
; Wait for pendant fanfare to finish
|
||||
;--------------------------------------------------------------------------------
|
||||
PendantFanfareWait:
|
||||
LDA TournamentSeed : BNE .spc
|
||||
LDA FastFanfare : BNE .done
|
||||
REP #$20
|
||||
@@ -626,15 +648,18 @@ pendant_fanfare:
|
||||
LDA !REG_MSU_DELAYED_COMMAND : BNE .continue
|
||||
LDA !REG_MSU_STATUS : BIT !FLAG_MSU_STATUS_AUDIO_PLAYING : BEQ .done
|
||||
.continue
|
||||
jml pendant_continue
|
||||
jml PendantFanfareContinue
|
||||
.spc
|
||||
SEP #$20
|
||||
LDA !REG_SPC_CONTROL : BNE .continue
|
||||
.done
|
||||
jml pendant_done
|
||||
jml PendantFanfareDone
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
|
||||
crystal_fanfare:
|
||||
;================================================================================
|
||||
; Wait for crystal fanfare to finish
|
||||
;--------------------------------------------------------------------------------
|
||||
CrystalFanfareWait:
|
||||
LDA TournamentSeed : BNE .spc
|
||||
LDA FastFanfare : BNE .done
|
||||
REP #$20
|
||||
@@ -647,24 +672,30 @@ crystal_fanfare:
|
||||
LDA !REG_MSU_DELAYED_COMMAND : BNE .continue
|
||||
LDA !REG_MSU_STATUS : BIT !FLAG_MSU_STATUS_AUDIO_PLAYING : BEQ .done
|
||||
.continue
|
||||
jml crystal_continue
|
||||
jml CrystalFanfareContinue
|
||||
.spc
|
||||
SEP #$20
|
||||
LDA !REG_SPC_CONTROL : BNE .continue
|
||||
.done
|
||||
jml crystal_done
|
||||
jml CrystalFanfareDone
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
|
||||
startup_wait:
|
||||
;================================================================================
|
||||
; Delay input scanning on startup/S&Q to avoid hard-lock from button mashing
|
||||
;--------------------------------------------------------------------------------
|
||||
StartupWait:
|
||||
LDA $11 : CMP.b #$04 : BCC .done ; thing we wrote over
|
||||
LDA !REG_SPC_CONTROL : BEQ .done-1
|
||||
CMP.b #$01 : BEQ .done
|
||||
CLC
|
||||
.done
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
|
||||
ending_wait:
|
||||
;================================================================================
|
||||
; Wait for ending credits music to finish
|
||||
;--------------------------------------------------------------------------------
|
||||
EndingMusicWait:
|
||||
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
|
||||
@@ -676,3 +707,4 @@ ending_wait:
|
||||
SEP #$20
|
||||
LDA.b #$22
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
41
music.asm
41
music.asm
@@ -179,7 +179,8 @@ Overworld_FinishMirrorWarp:
|
||||
;--------------------------------------------------------------------------------
|
||||
BirdTravel_LoadTargetAreaMusic:
|
||||
; Skip village and lost woods checks if entering dark world or a special area
|
||||
LDA $8A : CMP.b #$40 : !BGE .notVillageOrWoods
|
||||
LDA $8A : CMP.b #$43 : BEQ .endOfLightWorldChecks
|
||||
CMP.b #$40 : !BGE .notVillageOrWoods
|
||||
|
||||
LDX.b #$07 ; Default village theme
|
||||
|
||||
@@ -192,12 +193,12 @@ BirdTravel_LoadTargetAreaMusic:
|
||||
LDA $8A : CMP.b #$18 : BEQ .endOfLightWorldChecks
|
||||
; For NA release would we also branch on indexes #$22 #$28 #$29
|
||||
|
||||
LDX.b #$05 ; Lost woods theme
|
||||
;LDX.b #$05 ; Lost woods theme
|
||||
|
||||
; check if we've pulled from the master sword pedestal
|
||||
LDA $7EF300 : AND.b #$40 : BEQ +
|
||||
LDX.b #$02 ; Default light world theme
|
||||
+
|
||||
;LDA $7EF300 : AND.b #$40 : BEQ +
|
||||
; LDX.b #$02 ; Default light world theme
|
||||
;+
|
||||
|
||||
; check if we are entering lost woods
|
||||
LDA $8A : BEQ .endOfLightWorldChecks
|
||||
@@ -228,13 +229,16 @@ BirdTravel_LoadTargetAreaMusic:
|
||||
++
|
||||
|
||||
; This music is used in dark death mountain
|
||||
CMP.b #$43 : BEQ + : CMP.b #$45 : BEQ + : CMP.b #$47 : BEQ +
|
||||
CMP.b #$43 : BEQ .darkMountain
|
||||
; CMP.b #$45 : BEQ .darkMountain
|
||||
; CMP.b #$47 : BEQ .darkMountain
|
||||
LDA.b #$05 : STA $012D
|
||||
BRA .checkInverted
|
||||
+
|
||||
|
||||
LDX.b #$0D ; dark death mountain theme
|
||||
LDA.b #$09 : STA $012D
|
||||
.darkMountain
|
||||
LDA $7EF37A : CMP.b #$7F : BEQ +
|
||||
LDX.b #$0D ; dark death mountain theme
|
||||
+ : LDA.b #$09 : STA $012D
|
||||
|
||||
; if not inverted and light world, or inverted and dark world, skip moon pearl check
|
||||
.checkInverted
|
||||
@@ -279,22 +283,3 @@ Overworld_MosaicDarkWorldChecks:
|
||||
.done
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
!SPCFreeSpace = $0700
|
||||
|
||||
SPCEngineNewCode:
|
||||
dw .end-.start
|
||||
dw !SPCFreeSpace
|
||||
.start
|
||||
incsrc spc.asm
|
||||
.end
|
||||
|
||||
dw $0004
|
||||
dw $0A73 ; $0A73: CMP A,#$F0
|
||||
db $5F ; JMP SPCFreeSpace
|
||||
dw !SPCFreeSpace
|
||||
db $00 ; NOP
|
||||
|
||||
dw $0000, $0000
|
||||
;--------------------------------------------------------------------------------
|
||||
149
spc.asm
149
spc.asm
@@ -1,47 +1,102 @@
|
||||
;=======================================
|
||||
; SPC engine changes
|
||||
;
|
||||
; Free space at $040F-07FF (probably)
|
||||
;
|
||||
; If we ever switch to ASAR we can rewrite
|
||||
; this as actual SPC asm instead of this
|
||||
; db jank.
|
||||
|
||||
; seek($0700)
|
||||
db $68, $F0 ; CMP A,#$F0 ; the thing we overwrote
|
||||
db $D0, $03 ; BNE +
|
||||
db $5F, $81, $0A ; JMP SilenceSong ; ($0A81)
|
||||
db $68, $FA ; + : CMP A,#$FA ; new mute command $FA
|
||||
db $D0, $1C ; BNE +
|
||||
db $C4, $F4 ; MOV $F4,A
|
||||
db $E8, $00 ; MOV A,#$00
|
||||
db $C5, $4A, $0A ; MOV $0A4A,A ; $0A49: MOV A,#$70 -> MOV A,#$00
|
||||
db $C5, $F3, $0A ; MOV $0AF3,A ; $0AF2: MOV $059,#$C0 -> MOV $059,#$00
|
||||
db $C5, $32, $0C ; MOV $0C32,A ; $0C32: MOVW $058,YA -> NOP #2
|
||||
db $C5, $33, $0C ; MOV $0C33,A
|
||||
db $E8, $C4 ; MOV A,#$C4 ; $0D19: MOVW $058,YA -> MOV $058,A
|
||||
db $C5, $19, $0D ; MOV $0D19,A
|
||||
db $E8, $58 ; MOV A,#$58
|
||||
db $C5, $1A, $0D ; MOV $0D1A,A
|
||||
db $2F, $23 ; BRA ++
|
||||
db $68, $FB ; + : CMP A,#$FB ; new unmute command $FB
|
||||
db $F0, $03 ; BEQ +
|
||||
db $5F, $9D, $0A ; JMP NewSongInput ; ($0A9D)
|
||||
db $C4, $F4 ; + : MOV $F4,A
|
||||
db $E8, $70 ; MOV A,#$70
|
||||
db $C5, $4A, $0A ; MOV $0A4A,A ; $0A49: MOV A,#$70
|
||||
db $E8, $C0 ; MOV A,#$C0
|
||||
db $C5, $F3, $0A ; MOV $0AF3,A ; $0AF2: MOV $059,#$C0
|
||||
db $E8, $DA ; MOV A,#$DA
|
||||
db $C5, $32, $0C ; MOV $0C32,A ; $0C32: MOVW $058,YA
|
||||
db $C5, $19, $0D ; MOV $0D19,A ; $0D19: MOVW $058,YA
|
||||
db $E8, $58 ; MOV A,#$58
|
||||
db $C5, $33, $0C ; MOV $0C33,A
|
||||
db $C5, $1A, $0D ; MOV $0D1A,A
|
||||
db $3F, $81, $0A ; ++ : CALL SilenceSong ; ($0A81)
|
||||
db $E4, $F4 ; - : MOV A,$F4
|
||||
db $D0, $FC ; BNE -
|
||||
db $64, $F4 ; CMP A,$F4
|
||||
db $D0, $F8 ; BNE -
|
||||
db $FA, $00, $F4 ; MOV $F4,#$00
|
||||
db $6F ; RET
|
||||
; WARNING: THIS CODE IS EXTREMELY FRAGILE
|
||||
|
||||
macro copybin(source, length)
|
||||
!copycount #= 0
|
||||
while !copycount+3 < <length>
|
||||
dd read4(pctosnes(<source>+!copycount))
|
||||
!copycount #= !copycount+4
|
||||
endif
|
||||
|
||||
while !copycount < <length>
|
||||
db read1(pctosnes(<source>+!copycount))
|
||||
!copycount #= !copycount+1
|
||||
endif
|
||||
endmacro
|
||||
|
||||
;@ pushpc
|
||||
org $008901
|
||||
LDA.b #SPCData : STA $00
|
||||
LDA.b #SPCData>>8 : STA $01
|
||||
LDA.b #SPCData>>16 : STA $02
|
||||
;@ pullpc
|
||||
|
||||
SPCData:
|
||||
;@ check bankcross off
|
||||
%copybin($0C8000, $7BCA)
|
||||
|
||||
!SPCEngineStart = $0800
|
||||
!SPCCodeStart = $07A7
|
||||
|
||||
dw ($0F9E+(!SPCEngineStart-!SPCCodeStart))
|
||||
dw !SPCCodeStart
|
||||
|
||||
;@ pushpc
|
||||
;@ pushbase
|
||||
|
||||
arch spc700
|
||||
base !SPCCodeStart
|
||||
org $34FBCE;-(!SPCEngineStart-!SPCCodeStart)
|
||||
NewSPCCode:
|
||||
|
||||
SpecialCommand_Mute:
|
||||
CMP A,#$F0 ; The thing we overwrote
|
||||
BNE +
|
||||
JMP $0A81 ; SilenceSong
|
||||
+
|
||||
CMP A,#$FA ; New mute command $FA
|
||||
BNE +
|
||||
MOV $F4,A
|
||||
MOV A,#$00
|
||||
MOV $0A4A,A ; $0A49: MOV A,#$70 -> MOV A,#$00
|
||||
MOV $0AF3,A ; $0AF2: MOV $059,#$C0 -> MOV $059,#$00
|
||||
MOV $0C32,A ; $0C32: MOVW $058,YA -> NOP #2
|
||||
MOV $0C33,A
|
||||
MOV A,#$C4 ; $0D19: MOVW $058,YA -> MOV A,$058
|
||||
MOV $0D19,A
|
||||
MOV A,#$58
|
||||
MOV $0D1A,A
|
||||
BRA +++
|
||||
+
|
||||
CMP A,#$FB ; New unmute command $FB
|
||||
BEQ +
|
||||
JMP $0A9D ; NewSongInput
|
||||
+
|
||||
MOV $F4,A
|
||||
MOV A,#$70
|
||||
MOV $0A49,A ; $0A49: MOV A,#$70
|
||||
MOV A,#$C0
|
||||
MOV $0AF3,A ; $0AF2: MOV $059,#$C0
|
||||
MOV A,#$DA
|
||||
MOV $0C32,A ; $0C32: MOVW $058,YA
|
||||
MOV $0D19,A ; $0D19: MOVW $058,YA
|
||||
MOV A,#$58
|
||||
MOV $0C33,A
|
||||
MOV $0D1A,A
|
||||
+++
|
||||
CALL $0A81 ; SilenceSong
|
||||
- : MOV A,$F4
|
||||
BNE -
|
||||
CMP A,$F4
|
||||
BNE -
|
||||
MOV $F4,$00
|
||||
RET
|
||||
|
||||
org !SPCEngineStart
|
||||
|
||||
arch 65816
|
||||
SPCEngineStart:
|
||||
;@ pullbase
|
||||
;@ pullpc
|
||||
skip !SPCEngineStart-!SPCCodeStart
|
||||
%copybin($0CFBCE, $57B2)
|
||||
SPCEngineEnd:
|
||||
;@ check bankcross on
|
||||
|
||||
; Change track 15 (unused) to point to 13 (Death Mountain) so dark woods can be track 15
|
||||
org $359F6E ; PC 0x1A9F6E ; SPC $D01C
|
||||
dw #$2B00 ; Set track 15 pointer to track 13's data
|
||||
|
||||
arch spc700
|
||||
org $34FE9A ; PC 0x1A7E9A ; SPC $0A73
|
||||
JMP !SPCCodeStart : NOP
|
||||
arch 65816
|
||||
|
||||
46
tables.asm
46
tables.asm
@@ -731,10 +731,6 @@ org $06C93B ; PC 0x3493B
|
||||
PyramidPotion:
|
||||
db #$2C ; #$2C = Green Potion
|
||||
;--------------------------------------------------------------------------------
|
||||
; Change track 15 (unused) to point to 13 (Death Mountain) so dark woods can be track 15
|
||||
org $1A9F15 ; PC 0xD1F15
|
||||
dw #$2B00 ; Set track 15 pointer to track 13's data
|
||||
;--------------------------------------------------------------------------------
|
||||
org $308140 ; PC 0x180140 - 0x18014A [encrypted]
|
||||
HeartPieceOutdoorValues:
|
||||
HeartPiece_Spectacle:
|
||||
@@ -1634,48 +1630,6 @@ db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
|
||||
|
||||
;================================================================================
|
||||
org $30D800 ; PC 0x185800 - 0x18591F
|
||||
SPCMutePayload:
|
||||
dw $0001 ; Transfer size
|
||||
dw $0A4A ; Transfer destination
|
||||
db $00 ; mov a,#$70 -> mov a,#$00
|
||||
|
||||
dw $0001 ; Transfer size
|
||||
dw $0AF3 ; Transfer destination
|
||||
db $00 ; mov $059,#$c0 -> mov $059,#$00
|
||||
|
||||
dw $0002 ; Transfer size
|
||||
dw $0C32 ; Transfer destination
|
||||
db $00, $00 ; movw $058,ya -> nop #2
|
||||
|
||||
dw $0001 ; Transfer size
|
||||
dw $0D19 ; Transfer destination
|
||||
db $34 ; movw $058,ya -> mov $058,a
|
||||
|
||||
dw $0000 ; Transfer size (end of transfer)
|
||||
dw $FFFF ; Dummy destination
|
||||
db $FF, $FF, $FF, $FF, $FF, $FF, $FF ; Padding
|
||||
|
||||
SPCUnmutePayload:
|
||||
dw $0001 ; Transfer size
|
||||
dw $0A4A ; Transfer destination
|
||||
db $70 ; mov a,#$70
|
||||
|
||||
dw $0001 ; Transfer size
|
||||
dw $0AF3 ; Transfer destination
|
||||
db $C0 ; mov $059,#$c0
|
||||
|
||||
dw $0002 ; Transfer size
|
||||
dw $0C32 ; Transfer destination
|
||||
db $da, $58 ; movw $058,ya
|
||||
|
||||
dw $0001 ; Transfer size
|
||||
dw $0D19 ; Transfer destination
|
||||
db $34 ; movw $058,ya
|
||||
|
||||
dw $0000 ; Transfer size (end of transfer)
|
||||
dw $FFFF ; Dummy destination
|
||||
db $FF, $FF, $FF, $FF, $FF, $FF, $FF ; Padding
|
||||
|
||||
MSUTrackList:
|
||||
db $01,$03,$03,$03,$03,$03,$03,$01
|
||||
db $03,$01,$03,$03,$03,$03,$03,$03
|
||||
|
||||
Reference in New Issue
Block a user