WIP
This commit is contained in:
@@ -183,6 +183,7 @@ incsrc multiworld.asm
|
|||||||
incsrc textrenderer.asm
|
incsrc textrenderer.asm
|
||||||
incsrc crystalswitchbook.asm
|
incsrc crystalswitchbook.asm
|
||||||
incsrc mimicdash.asm
|
incsrc mimicdash.asm
|
||||||
|
incsrc souls.asm
|
||||||
warnpc $A58000
|
warnpc $A58000
|
||||||
|
|
||||||
org $A28000
|
org $A28000
|
||||||
|
|||||||
@@ -14,4 +14,4 @@ incsrc hooks/damage_hooks.asm
|
|||||||
|
|
||||||
incsrc hooks/overworld_sprite_hooks.asm
|
incsrc hooks/overworld_sprite_hooks.asm
|
||||||
|
|
||||||
incsrc hooks/underworld_sprite_hooks.asm
|
incsrc hooks/underworld_sprite_hooks.asm
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ SpritePrep_Eyegore_become_mimic:
|
|||||||
;JSL resetSprite_Mimic : NOP
|
;JSL resetSprite_Mimic : NOP
|
||||||
|
|
||||||
org $86ED9E ; Sprite_ApplyCalculatedDamage, skip high sprite id early exit
|
org $86ED9E ; Sprite_ApplyCalculatedDamage, skip high sprite id early exit
|
||||||
JSL IsItReallyAMimic : NOP
|
; JSL IsItReallyAMimic : NOP ; now hooked into from souls.asm
|
||||||
|
|
||||||
org $86EDA6 ; Sprite_ApplyCalculatedDamage .not_absorbable
|
org $86EDA6 ; Sprite_ApplyCalculatedDamage .not_absorbable
|
||||||
JSL notItemSprite_Mimic
|
JSL notItemSprite_Mimic
|
||||||
@@ -108,4 +108,4 @@ notItemSprite_Mimic:
|
|||||||
.continue
|
.continue
|
||||||
; restore code
|
; restore code
|
||||||
REP #$20 : ASL #2
|
REP #$20 : ASL #2
|
||||||
RTL
|
RTL
|
||||||
|
|||||||
28
hooks.asm
28
hooks.asm
@@ -2747,3 +2747,31 @@ LDA.b #$30
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $9EC7BE
|
org $9EC7BE
|
||||||
JSL MimicDirection
|
JSL MimicDirection
|
||||||
|
|
||||||
|
;===================================================================================================
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
; Boss souls changes
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $8DB866
|
||||||
|
JSL CheckBossSoul : BRA + : NOP #2 : +
|
||||||
|
|
||||||
|
org $86ED9E
|
||||||
|
JSL CheckInvincibleFlag : NOP
|
||||||
|
|
||||||
|
org $85DFFE
|
||||||
|
JSL SoulPaletteSet : BRA + : NOP #5 : +
|
||||||
|
|
||||||
|
org $85DFB7
|
||||||
|
JSL SoulPaletteApply : NOP #2
|
||||||
|
|
||||||
|
org $9E8086
|
||||||
|
JSL HelmasaurPaletteFix : BRA + : NOP #2 : +
|
||||||
|
|
||||||
|
org $9E838C
|
||||||
|
JSL HelmasaurHammerFix : NOP
|
||||||
|
|
||||||
|
org $9DD884
|
||||||
|
JSL MoldormPaletteFix_b : NOP
|
||||||
|
|
||||||
|
org $9DDB2E
|
||||||
|
JSL MoldormPaletteFix_d : NOP
|
||||||
|
|||||||
@@ -1818,4 +1818,4 @@ db $18, $0A, $D8 ; yx:{ 0x180, 0x0A0 }
|
|||||||
db $18, $0F, $45 ; yx:{ 0x180, 0x0F0 }
|
db $18, $0F, $45 ; yx:{ 0x180, 0x0F0 }
|
||||||
db $FF ; END
|
db $FF ; END
|
||||||
org $89CA55
|
org $89CA55
|
||||||
dw Overworld_Sprites_Screen1A_2&$FFFF
|
dw Overworld_Sprites_Screen1A_2&$FFFF
|
||||||
|
|||||||
3
ram.asm
3
ram.asm
@@ -687,7 +687,8 @@ MapTotalsWRAM: skip $10 ; / on boot for tracking.
|
|||||||
skip $20 ; Reserved for general dungeon tracking data. May have over
|
skip $20 ; Reserved for general dungeon tracking data. May have over
|
||||||
; allocated here. Feel free to reassign.
|
; allocated here. Feel free to reassign.
|
||||||
MapCompassFlag: skip 2 ; Used to flag overworld map drawing.
|
MapCompassFlag: skip 2 ; Used to flag overworld map drawing.
|
||||||
skip $3E ; Unused
|
SpriteInvincibilityFlag: skip $10 ; Used for boss soul shuffle
|
||||||
|
skip $2E ; Unused
|
||||||
skip $260 ; Unused
|
skip $260 ; Unused
|
||||||
DialogBuffer: skip $100 ; Dialog Buffer
|
DialogBuffer: skip $100 ; Dialog Buffer
|
||||||
;
|
;
|
||||||
|
|||||||
152
souls.asm
Normal file
152
souls.asm
Normal file
@@ -0,0 +1,152 @@
|
|||||||
|
;================================================================================
|
||||||
|
; Boss Souls
|
||||||
|
;================================================================================
|
||||||
|
SoulPaletteSet:
|
||||||
|
LDA.l SpriteInvincibilityFlag, X
|
||||||
|
BEQ .normal
|
||||||
|
LDA.b #$FF
|
||||||
|
STA.w $0CFE
|
||||||
|
RTL
|
||||||
|
.normal
|
||||||
|
CMP.b #$08
|
||||||
|
BNE +
|
||||||
|
LDA.l $7FFA3C, X
|
||||||
|
STA.w $0CFE
|
||||||
|
+
|
||||||
|
RTL
|
||||||
|
;================================================================================
|
||||||
|
SoulPaletteApply:
|
||||||
|
AND.w #$F1FF
|
||||||
|
PHA
|
||||||
|
LDA.w $0CFE
|
||||||
|
AND.w #$00FF
|
||||||
|
CMP.w #$00FF
|
||||||
|
BEQ .blackout
|
||||||
|
.ice
|
||||||
|
PLA
|
||||||
|
ORA.w #$0400
|
||||||
|
RTL
|
||||||
|
.blackout
|
||||||
|
PLA
|
||||||
|
ORA.w #$0600
|
||||||
|
RTL
|
||||||
|
;================================================================================
|
||||||
|
HelmasaurPaletteFix:
|
||||||
|
LDA.w $0B89, X
|
||||||
|
AND.b #$F1
|
||||||
|
PHA
|
||||||
|
LDA.l SpriteInvincibilityFlag, X
|
||||||
|
BEQ .normal
|
||||||
|
.blackout
|
||||||
|
PLA
|
||||||
|
ORA.b #$0A
|
||||||
|
STA.w $0B89, X
|
||||||
|
RTL
|
||||||
|
.normal
|
||||||
|
PLA
|
||||||
|
STA.w $0B89, X
|
||||||
|
RTL
|
||||||
|
;================================================================================
|
||||||
|
HelmasaurHammerFix:
|
||||||
|
LDA.l SpriteInvincibilityFlag, X
|
||||||
|
BEQ .normal
|
||||||
|
LDA.b #$00
|
||||||
|
RTL
|
||||||
|
.normal
|
||||||
|
LDA.w $0301
|
||||||
|
AND.b #$0A
|
||||||
|
RTL
|
||||||
|
;================================================================================
|
||||||
|
MoldormPaletteFix:
|
||||||
|
.b
|
||||||
|
LDA.b #$0B
|
||||||
|
BRA .apply
|
||||||
|
.d
|
||||||
|
LDA.b #$0D
|
||||||
|
.apply
|
||||||
|
PHA
|
||||||
|
LDA.l SpriteInvincibilityFlag, X
|
||||||
|
BEQ .normal
|
||||||
|
PLA
|
||||||
|
LDA.b #$07
|
||||||
|
BRA .write
|
||||||
|
.normal
|
||||||
|
PLA
|
||||||
|
.write
|
||||||
|
STA.w $0F50, X
|
||||||
|
RTL
|
||||||
|
;================================================================================
|
||||||
|
CheckInvincibleFlag:
|
||||||
|
LDA.l SpriteInvincibilityFlag, X
|
||||||
|
BEQ .normal
|
||||||
|
LDA.w $0E20, X
|
||||||
|
SEC
|
||||||
|
RTL
|
||||||
|
.normal
|
||||||
|
JML.l IsItReallyAMimic
|
||||||
|
;================================================================================
|
||||||
|
CheckBossSoul:
|
||||||
|
PHA : PHX
|
||||||
|
LDA.b #$00
|
||||||
|
STA.l SpriteInvincibilityFlag, X
|
||||||
|
; check if boss id
|
||||||
|
LDX.b #.boss_ids_end-.boss_ids-1
|
||||||
|
TYA
|
||||||
|
|
||||||
|
- CMP.l .boss_ids, X
|
||||||
|
BEQ .match
|
||||||
|
|
||||||
|
DEX
|
||||||
|
BPL -
|
||||||
|
|
||||||
|
.normal
|
||||||
|
PLX : PLA
|
||||||
|
STA.w $0E60, X
|
||||||
|
AND.b #$0F
|
||||||
|
STA.w $0F50, X
|
||||||
|
RTL
|
||||||
|
|
||||||
|
.match
|
||||||
|
; X is boss index
|
||||||
|
|
||||||
|
; make palette black
|
||||||
|
LDA.b #$00
|
||||||
|
LDX.b #$1D
|
||||||
|
- STA.l $7EC462, X
|
||||||
|
STA.l $7EC662, X
|
||||||
|
DEX
|
||||||
|
BPL -
|
||||||
|
LDA.b #$01
|
||||||
|
STA.b $15 ; update palette
|
||||||
|
|
||||||
|
PLX
|
||||||
|
LDA.b #$01
|
||||||
|
STA.l SpriteInvincibilityFlag, X
|
||||||
|
|
||||||
|
PLA
|
||||||
|
|
||||||
|
ORA.b #$40
|
||||||
|
STA.w $06E0, X
|
||||||
|
AND.b #$01
|
||||||
|
ORA.b #$06
|
||||||
|
STA.w $0F50, X
|
||||||
|
RTL
|
||||||
|
|
||||||
|
.boss_ids:
|
||||||
|
db $53 ; armos
|
||||||
|
db $54 ; lanmolas
|
||||||
|
db $09 ; moldorm
|
||||||
|
db $92 ; helma king
|
||||||
|
db $8C ; arrghus
|
||||||
|
db $8D ; arrghus puff
|
||||||
|
db $88 ; mothula
|
||||||
|
db $CE ; blind
|
||||||
|
db $A2 ; khold
|
||||||
|
db $A3 ; khold shell
|
||||||
|
db $BD ; vitreous big eye
|
||||||
|
db $BE ; vitreous small eye
|
||||||
|
db $CB ; trinexx
|
||||||
|
db $CC ; trinexx
|
||||||
|
db $CD ; trinexx
|
||||||
|
db $7A ; agahnim
|
||||||
|
..end
|
||||||
4
sram.asm
4
sram.asm
@@ -237,7 +237,9 @@ CompassCountDisplay: skip 2 ; Compass count display flags (bitfield)
|
|||||||
; High Byte: x c e d a s p m
|
; High Byte: x c e d a s p m
|
||||||
; x = Sewers | c = Hyrule Castle | e = Eastern Palace | d = Desert Palace
|
; x = Sewers | c = Hyrule Castle | e = Eastern Palace | d = Desert Palace
|
||||||
; a = Castle Tower | s = Swamp Palace | p = PoD | m = Mire
|
; a = Castle Tower | s = Swamp Palace | p = PoD | m = Mire
|
||||||
skip 10 ;
|
BossSoulMissing: skip 2 ; bitfield for boss soul acquisition
|
||||||
|
; 0 = has soul, 1 = soul missing
|
||||||
|
skip 8 ;
|
||||||
Aga2Duck: skip 1 ; Used in lieu of pyramid hole for checking if the duck should come
|
Aga2Duck: skip 1 ; Used in lieu of pyramid hole for checking if the duck should come
|
||||||
; 0 = Haven't called post-Aga 2 bird | 1 = Have called post-Aga 2 bird
|
; 0 = Haven't called post-Aga 2 bird | 1 = Have called post-Aga 2 bird
|
||||||
NpcFlags: skip 2 ; l - c s t k z o (bitfield)
|
NpcFlags: skip 2 ; l - c s t k z o (bitfield)
|
||||||
|
|||||||
Reference in New Issue
Block a user