Merge pull request #152 from spannerisms/master

Bug Fix and MSU
This commit is contained in:
Lexi Rose
2021-12-16 04:40:15 -06:00
committed by GitHub
3 changed files with 71 additions and 98 deletions

View File

@@ -14,7 +14,13 @@ endmacro
DrawDungeonCompassCounts: DrawDungeonCompassCounts:
LDX $1B : BNE + : RTL : + ; Skip if outdoors LDX $1B : BNE + : RTL : + ; Skip if outdoors
LDX $040C : CPX.b #$FF : BEQ .done ; Skip if not in a dungeon
; extra hard safeties for getting dungeon ID to prevent crashes
PHA
LDA.w $040C : AND.w #$00FE : TAX ; force dungeon ID to be multiple of 2
PLA
CPX.b #$1B : BCS .done ; Skip if not in a valid dungeon ID
CMP.w #$0002 : BEQ ++ ; if CompassMode==2, we don't check for the compass CMP.w #$0002 : BEQ ++ ; if CompassMode==2, we don't check for the compass
LDA $7EF364 : AND.l DungeonItemMasks, X ; Load compass values to A, mask with dungeon item masks LDA $7EF364 : AND.l DungeonItemMasks, X ; Load compass values to A, mask with dungeon item masks

115
spc.asm
View File

@@ -1,50 +1,35 @@
; WARNING: THIS CODE IS EXTREMELY FRAGILE MSUCode = $00277E
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 ;@ 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 ; Change track 15 (unused) to point to 13 (Death Mountain) so dark woods can be track 15
!SPCCodeStart = $07A7 ; Bank 1
org $1A9F15 ; PC 0x0D1F15 ; SPC $D01C
dw $2B00 ; Set track 15 pointer to track 13's data
dw ($0F9E+(!SPCEngineStart-!SPCCodeStart)) pullpc
dw !SPCCodeStart
;---------------------------------------------------------------------------------------------------
arch spc700
;@ pushpc ;@ pushpc
;@ pushbase ;@ pushbase
org $19FE41 ; SPC 0A73
JMP MSUCode
arch spc700 ; Hijack unreachable SFX data for globally available code
base !SPCCodeStart org $1A9B2E
org $34FBCE;-(!SPCEngineStart-!SPCCodeStart) base MSUCode
NewSPCCode:
SpecialCommand_Mute: SpecialCommand_Mute:
CMP A,#$F0 ; The thing we overwrote CMP A,#$F0 ; The thing we overwrote
BNE + BNE +
JMP $0A81 ; SilenceSong JMP $0A81 ; SilenceSong
+ +
CMP A,#$FA ; New mute command $FA CMP A,#$FA ; New mute command $FA
BNE + BNE +
MOV $F4,A MOV $F4,A
MOV A,#$00 MOV A,#$00
MOV $0A4A,A ; $0A49: MOV A,#$70 -> MOV A,#$00 MOV $0A4A,A ; $0A49: MOV A,#$70 -> MOV A,#$00
@@ -56,52 +41,34 @@ BNE +
MOV A,#$58 MOV A,#$58
MOV $0D1A,A MOV $0D1A,A
BRA +++ BRA +++
+ +
CMP A,#$FB ; New unmute command $FB CMP A,#$FB ; New unmute command $FB
BEQ + BEQ +
JMP $0A9D ; NewSongInput JMP $0A9D ; NewSongInput
+ +
MOV $F4,A MOV $F4,A
MOV A,#$70 MOV A,#$70
MOV $0A4A,A ; $0A49: MOV A,#$70 MOV $0A4A,A ; $0A49: MOV A,#$70
MOV A,#$C0 MOV A,#$C0
MOV $0AF3,A ; $0AF2: MOV $059,#$C0 MOV $0AF3,A ; $0AF2: MOV $059,#$C0
MOV A,#$DA MOV A,#$DA
MOV $0C32,A ; $0C32: MOVW $058,YA MOV $0C32,A ; $0C32: MOVW $058,YA
MOV $0D19,A ; $0D19: MOVW $058,YA MOV $0D19,A ; $0D19: MOVW $058,YA
MOV A,#$58 MOV A,#$58
MOV $0C33,A MOV $0C33,A
MOV $0D1A,A MOV $0D1A,A
+++ +++
CALL $0A81 ; SilenceSong CALL $0A81 ; SilenceSong
- : MOV A,$F4 - MOV A,$F4
BNE - BNE -
CMP A,$F4 CMP A,$F4
BNE - BNE -
MOV $F4,$00 MOV $F4,$00
RET RET
org !SPCEngineStart warnpc $1A9B91
arch 65816
SPCEngineStart:
;@ pullbase ;@ pullbase
;@ pullpc ;@ 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
; Bank 1
org $1A9F15 ; PC 0x0D1F15 ; SPC $D01C
dw #$2B00 ; Set track 15 pointer to track 13's data
; Bank 2
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 arch 65816