Merge branch 'main' into kara
This commit is contained in:
@@ -27,6 +27,15 @@ db #$00 ; expand file to 2mb
|
|||||||
org $1FFFF8 ; <- FFFF8 timestamp rom
|
org $1FFFF8 ; <- FFFF8 timestamp rom
|
||||||
db #$20, #$19, #$08, #$31 ; year/month/day
|
db #$20, #$19, #$08, #$31 ; year/month/day
|
||||||
|
|
||||||
|
;================================================================================
|
||||||
|
!ROM_VERSION_LOW ?= 1 ; ROM version (two 16-bit integers)
|
||||||
|
!ROM_VERSION_HIGH ?= 1 ;
|
||||||
|
|
||||||
|
org $00FFE0 ; Unused hardware vector
|
||||||
|
RomVersion:
|
||||||
|
dw !ROM_VERSION_LOW
|
||||||
|
dw !ROM_VERSION_HIGH
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
|
||||||
!ADD = "CLC : ADC"
|
!ADD = "CLC : ADC"
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -178,7 +178,7 @@ RTL
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
OnLinkDamaged:
|
OnLinkDamaged:
|
||||||
JSL.l IncrementDamageTakenCounter_Arb
|
JSL.l IncrementDamageTakenCounter_Arb
|
||||||
JSL.l FlipperKill
|
;JSL.l FlipperKill
|
||||||
JML.l OHKOTimer
|
JML.l OHKOTimer
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -68,3 +68,70 @@ MysteryWaterFunction: ; *$3AE54 ALTERNATE ENTRY POINT
|
|||||||
STZ $0360
|
STZ $0360
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
;===================================================================================================
|
||||||
|
; More elegant solution
|
||||||
|
;===================================================================================================
|
||||||
|
|
||||||
|
protectff:
|
||||||
|
LDA.l AllowAccidentalMajorGlitch
|
||||||
|
BEQ .yes_protect
|
||||||
|
|
||||||
|
RTL
|
||||||
|
|
||||||
|
.yes_protect
|
||||||
|
REP #$30
|
||||||
|
|
||||||
|
LDA.b $20
|
||||||
|
AND.w #$1E00
|
||||||
|
ASL
|
||||||
|
ASL
|
||||||
|
ASL
|
||||||
|
STA.b $06
|
||||||
|
|
||||||
|
LDA.b $22
|
||||||
|
AND.w #$1E00
|
||||||
|
ORA.b $06
|
||||||
|
|
||||||
|
XBA
|
||||||
|
LSR
|
||||||
|
TAX
|
||||||
|
|
||||||
|
SEP #$30
|
||||||
|
|
||||||
|
; Remove dark world bit
|
||||||
|
; in game table that converts coordinates to actual screen ID
|
||||||
|
; special case for other areas
|
||||||
|
LDA.b $8A
|
||||||
|
BMI .special_overworld
|
||||||
|
|
||||||
|
AND.b #$3F
|
||||||
|
CMP.l $02A4E3,X
|
||||||
|
BEQ ++
|
||||||
|
|
||||||
|
.protect
|
||||||
|
LDA.b #$15
|
||||||
|
STA.b $5D
|
||||||
|
|
||||||
|
STZ.b $2E
|
||||||
|
STZ.b $67
|
||||||
|
|
||||||
|
LDA.b #$02
|
||||||
|
STA.b $2F
|
||||||
|
|
||||||
|
STZ.w $0112
|
||||||
|
STZ.w $02E4
|
||||||
|
STZ.w $0FFC
|
||||||
|
|
||||||
|
++ RTL
|
||||||
|
|
||||||
|
.special_overworld
|
||||||
|
CMP.l .spow,X
|
||||||
|
BNE .protect
|
||||||
|
|
||||||
|
RTL
|
||||||
|
|
||||||
|
.spow
|
||||||
|
db $80, $81, $81, $FF, $FF, $FF, $FF, $FF
|
||||||
|
db $FF, $81, $81, $FF, $FF, $FF, $FF, $FF
|
||||||
|
|||||||
18
hooks.asm
18
hooks.asm
@@ -2253,8 +2253,18 @@ JSL.l OnLinkDamagedFromPitOutdoors
|
|||||||
org $078F27 ; <- 38F27
|
org $078F27 ; <- 38F27
|
||||||
JSL.l FlipperReset
|
JSL.l FlipperReset
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $09F40B ; <- 4F40B - module_death.asm:222 (LDX.b #$00)
|
org $02B468
|
||||||
JSL.l IgnoreFairyCheck
|
dw FakeFlipperProtection
|
||||||
|
|
||||||
|
org $02FFC7
|
||||||
|
FakeFlipperProtection:
|
||||||
|
JSR.w $029485
|
||||||
|
JSL protectff
|
||||||
|
RTS
|
||||||
|
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
;org $09F40B ; <- 4F40B - module_death.asm:222 (LDX.b #$00)
|
||||||
|
;JSL.l IgnoreFairyCheck
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $078F51 ; <- 38F51 - Bank07.asm:2444 (JSR $AE54 ; $3AE54 IN ROM)
|
org $078F51 ; <- 38F51 - Bank07.asm:2444 (JSR $AE54 ; $3AE54 IN ROM)
|
||||||
JSL.l OnEnterWater : NOP
|
JSL.l OnEnterWater : NOP
|
||||||
@@ -2517,13 +2527,13 @@ org $0DA9C8 ; <- 06A9C8 - player_oam.asm: 1663 (AND.w #$00FF : CMP.w #$00F8 : BC
|
|||||||
LDA $02 ; always zero! (this replaces the BCC)
|
LDA $02 ; always zero! (this replaces the BCC)
|
||||||
ADC.w #0000 ; put the carry bit into the accumulator instead of a hardcoded 1.
|
ADC.w #0000 ; put the carry bit into the accumulator instead of a hardcoded 1.
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
org $02fd6f ; <- 017d6f - bank0E.asm: 3694 (LoadActualGearPalettes:) Note: Overflow of bank02 moved to 0e in US Rom
|
org $02FD6F ; <- 017d6f - bank0E.asm: 3694 (LoadActualGearPalettes:) Note: Overflow of bank02 moved to 0e in US Rom
|
||||||
JSL LoadActualGearPalettesWithGloves
|
JSL LoadActualGearPalettesWithGloves
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; Bunny Palette/Overworld Map Bugfix
|
; Bunny Palette/Overworld Map Bugfix
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $02fdf0 ; <- 017df0 - bank0E (LDA [$00] : STA $7EC300, X : STA $7EC500, X)
|
org $02FDF0 ; <- 017df0 - bank0E (LDA [$00] : STA $7EC300, X : STA $7EC500, X)
|
||||||
JSL LoadGearPalette_safe_for_bunny
|
JSL LoadGearPalette_safe_for_bunny
|
||||||
RTS
|
RTS
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
|||||||
7
init.asm
7
init.asm
@@ -1,3 +1,5 @@
|
|||||||
|
RomVersionSRAM = $701FFC
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; Init_Primary
|
; Init_Primary
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -39,6 +41,11 @@ Init_Primary:
|
|||||||
LDA $00FFC0, X : STA $702000, X
|
LDA $00FFC0, X : STA $702000, X
|
||||||
INX
|
INX
|
||||||
CPX #$15 : !BLT -
|
CPX #$15 : !BLT -
|
||||||
|
LDX #$00
|
||||||
|
-
|
||||||
|
LDA RomVersion, X : STA RomVersionSRAM, X
|
||||||
|
INX
|
||||||
|
CPX #$04 : !BLT -
|
||||||
.done
|
.done
|
||||||
|
|
||||||
REP #$20
|
REP #$20
|
||||||
|
|||||||
159
spc.asm
159
spc.asm
@@ -1,107 +1,74 @@
|
|||||||
; 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
|
|
||||||
!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 $0A4A,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
|
; Change track 15 (unused) to point to 13 (Death Mountain) so dark woods can be track 15
|
||||||
; Bank 1
|
; Bank 1
|
||||||
org $1A9F15 ; PC 0x0D1F15 ; SPC $D01C
|
org $1A9F15 ; PC 0x0D1F15 ; SPC $D01C
|
||||||
dw #$2B00 ; Set track 15 pointer to track 13's data
|
dw $2B00 ; Set track 15 pointer to track 13's data
|
||||||
|
|
||||||
; Bank 2
|
pullpc
|
||||||
org $359F6E ; PC 0x1A9F6E ; SPC $D01C
|
|
||||||
dw #$2B00 ; Set track 15 pointer to track 13's data
|
;---------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
arch spc700
|
arch spc700
|
||||||
org $34FE9A ; PC 0x1A7E9A ; SPC $0A73
|
|
||||||
JMP !SPCCodeStart : NOP
|
;@ pushpc
|
||||||
|
;@ pushbase
|
||||||
|
org $19FE41 ; SPC 0A73
|
||||||
|
JMP MSUCode
|
||||||
|
|
||||||
|
; Hijack unreachable SFX data for globally available code
|
||||||
|
org $1A9B2E
|
||||||
|
base MSUCode
|
||||||
|
|
||||||
|
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 $0A4A,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
|
||||||
|
|
||||||
|
warnpc $1A9B91
|
||||||
|
|
||||||
|
;@ pullbase
|
||||||
|
;@ pullpc
|
||||||
|
|
||||||
arch 65816
|
arch 65816
|
||||||
|
|||||||
@@ -1765,6 +1765,7 @@ dw $0000
|
|||||||
; STAIRS3
|
; STAIRS3
|
||||||
; STAIRS4
|
; STAIRS4
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
RoomHeaders:
|
||||||
org $30DA00 : RoomHeader_0000: ; pc 0x185A00
|
org $30DA00 : RoomHeader_0000: ; pc 0x185A00
|
||||||
db $41, $21, $13, $22, $07, $3D, $00, $00, $00, $10, $C0, $00, $00, $04
|
db $41, $21, $13, $22, $07, $3D, $00, $00, $00, $10, $C0, $00, $00, $04
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user