Fix SPC crash with the new mute/unmute engine commands and the mirror warp track

This commit is contained in:
qwertymodo
2019-09-25 16:26:11 -07:00
parent 5c942377dd
commit ff25bbccd3
2 changed files with 47 additions and 42 deletions

View File

@@ -132,6 +132,7 @@
!REG_SPC_CONTROL = $2140 !REG_SPC_CONTROL = $2140
!REG_NMI_FLAGS = $4210 !REG_NMI_FLAGS = $4210
!VAL_COMMAND_STOP_PLAYBACK = #$F0
!VAL_COMMAND_FADE_OUT = #$F1 !VAL_COMMAND_FADE_OUT = #$F1
!VAL_COMMAND_FADE_HALF = #$F2 !VAL_COMMAND_FADE_HALF = #$F2
!VAL_COMMAND_FULL_VOLUME = #$F3 !VAL_COMMAND_FULL_VOLUME = #$F3
@@ -513,12 +514,16 @@ command_f2:
JML spc_continue JML spc_continue
command_f1: command_f1:
CPX !VAL_COMMAND_FADE_OUT : BNE load_track CPX !VAL_COMMAND_FADE_OUT : BNE command_f0
STX !REG_SPC_CONTROL STX !REG_SPC_CONTROL
STZ !REG_TARGET_VOLUME STZ !REG_TARGET_VOLUME
STZ !REG_CURRENT_MSU_TRACK STZ !REG_CURRENT_MSU_TRACK
JML spc_continue JML spc_continue
command_f0:
CPX !VAL_COMMAND_STOP_PLAYBACK : !BLT load_track
JML spc_continue
load_track: load_track:
CPX !REG_CURRENT_MSU_TRACK : BNE + CPX !REG_CURRENT_MSU_TRACK : BNE +
- : CPX #27 : BEQ + - : CPX #27 : BEQ +

10
spc.asm
View File

@@ -12,7 +12,7 @@ db $68, $F0 ; CMP A,#$F0 ; the thing we overwrote
db $D0, $03 ; BNE + db $D0, $03 ; BNE +
db $5F, $81, $0A ; JMP SilenceSong ; ($0A81) db $5F, $81, $0A ; JMP SilenceSong ; ($0A81)
db $68, $FA ; + : CMP A,#$FA ; new mute command $FA db $68, $FA ; + : CMP A,#$FA ; new mute command $FA
db $D0, $21 ; BNE + db $D0, $1A ; BNE +
db $E8, $00 ; MOV A,#$00 db $E8, $00 ; MOV A,#$00
db $C5, $4A, $0A ; MOV $0A4A,A ; $0A49: MOV A,#$70 -> 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, $F3, $0A ; MOV $0AF3,A ; $0AF2: MOV $059,#$C0 -> MOV $059,#$00
@@ -22,9 +22,7 @@ db $E8, $C4 ; MOV A,#$C4 ; $0D19: MOVW $058,YA -> MOV $058,A
db $C5, $19, $0D ; MOV $0D19,A db $C5, $19, $0D ; MOV $0D19,A
db $E8, $58 ; MOV A,#$58 db $E8, $58 ; MOV A,#$58
db $C5, $1A, $0D ; MOV $0D1A,A db $C5, $1A, $0D ; MOV $0D1A,A
db $3F, $81, $0A ; - : CALL SilenceSong ; ($0A81) db $2F, $21 ; BRA ++
db $FA, $00, $04 ; MOV $04, $00
db $5F, $00, $0B ; JMP No_New_Song ; ($0B00)
db $68, $FB ; + : CMP A,#$FB ; new unmute command $FB db $68, $FB ; + : CMP A,#$FB ; new unmute command $FB
db $F0, $03 ; BEQ + db $F0, $03 ; BEQ +
db $5F, $9D, $0A ; JMP NewSongInput ; ($0A9D) db $5F, $9D, $0A ; JMP NewSongInput ; ($0A9D)
@@ -38,4 +36,6 @@ db $C5, $19, $0D ; MOV $0D19,A ; $0D19: MOVW $058,YA
db $E8, $58 ; MOV A,#$58 db $E8, $58 ; MOV A,#$58
db $C5, $33, $0C ; MOV $0C33,A db $C5, $33, $0C ; MOV $0C33,A
db $C5, $1A, $0D ; MOV $0D1A,A db $C5, $1A, $0D ; MOV $0D1A,A
db $2F, $D4 ; BRA - db $3F, $81, $0A ; ++ : CALL SilenceSong ; ($0A81)
db $FA, $00, $04 ; MOV $04, $00
db $6F ; RET