Compare commits
6 Commits
overworld_
...
overworld_
| Author | SHA1 | Date | |
|---|---|---|---|
| e5420fc651 | |||
| 9f441108e0 | |||
| e3afa34088 | |||
| 5139f6d857 | |||
| e55af7e610 | |||
| e11ac2c130 |
@@ -227,6 +227,7 @@ org $A28000 ; contrib area
|
||||
incsrc contrib.asm
|
||||
incsrc special_weapons.asm
|
||||
incsrc variable_ganon_vulnerability.asm
|
||||
incsrc trolls.asm
|
||||
warnpc $A38000
|
||||
|
||||
org $A38000
|
||||
|
||||
@@ -23,7 +23,11 @@ CuccoStorm:
|
||||
|
||||
SEP #$30 ; set 8-bit accumulator index registers
|
||||
LDA.l !CUCCO_STORM : BEQ + ; only if storm is on
|
||||
LDA.b $10 : CMP.b #$09 : BNE + ; only if outdoors
|
||||
LDA.b $10 : CMP.b #$09 : BEQ .check ; only if outdoors
|
||||
.indoors
|
||||
LDA.b #$00 : STA.l !CUCCO_STORM ; turn off cucco storm if indoors
|
||||
BRA +
|
||||
.check
|
||||
LDA.l LoopFrames : AND.b #$7F : BNE + ; check every 128 frames
|
||||
|
||||
-
|
||||
|
||||
BIN
damage_table.bin
BIN
damage_table.bin
Binary file not shown.
80
hooks.asm
80
hooks.asm
@@ -2397,11 +2397,11 @@ org $02EC2E ;<- 016C2E
|
||||
JSL.l Overworld_LoadNewTiles
|
||||
NOP #$02
|
||||
;================================================================================
|
||||
org $07A3E2 ;<- 3A3E2 Bank07.asm:5764 (LDA.b #$80 : STA $03F0)
|
||||
JSL.l FreeDuckCheck : BEQ +
|
||||
NOP
|
||||
skip 3 ; a JSR we need to keep
|
||||
+
|
||||
; org $07A3E2 ;<- 3A3E2 Bank07.asm:5764 (LDA.b #$80 : STA $03F0)
|
||||
; JSL.l FreeDuckCheck : BEQ +
|
||||
; NOP
|
||||
; skip 3 ; a JSR we need to keep
|
||||
; +
|
||||
;================================================================================
|
||||
org $07A9AC ; <- 3A9AC - Bank07.asm:6628 (LDA $0C : ORA $0E : STA $00 : AND.b #$0C : BEQ BRANCH_BETA)
|
||||
JML MirrorBonk
|
||||
@@ -2776,11 +2776,9 @@ org $07839E ; bunny BAGE check
|
||||
BunnyRead:
|
||||
JSR.w $07B5A9 ; check A button
|
||||
BCC .noA
|
||||
JSR.w CheckIfReading
|
||||
BNE .noread
|
||||
JSR.w $07B4DB
|
||||
NOP
|
||||
.noread
|
||||
JSL BunnyThrowPot
|
||||
BRA .noA
|
||||
NOP #3
|
||||
.noA
|
||||
|
||||
org $07FFF4
|
||||
@@ -3071,3 +3069,65 @@ NOP
|
||||
|
||||
org $02D7D2 ; BEQ .face_up
|
||||
NOP #2 ; this fixes Link's direction after mirroring and falling after entering through back of tavern
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
; Various nonsense
|
||||
;--------------------------------------------------------------------------------
|
||||
org $0780B9 ; LDA.b #$3A : STA.w $031F
|
||||
JSL CalcIFrames
|
||||
NOP
|
||||
|
||||
org $09814E ; LDA.w Bomb_timer : STA.w $039F, X
|
||||
JSL SetBombTimer
|
||||
NOP #2
|
||||
|
||||
org $07B282 ; LDA.b #$1D : STA.w $0374
|
||||
JSL SetDashTimer
|
||||
NOP
|
||||
|
||||
org $07A3E7 ; LDA.b #$13 : JSR PlaySFX_Set2 : ...
|
||||
JSL ProcessFlute
|
||||
BCS +
|
||||
RTS
|
||||
NOP #14 : +
|
||||
|
||||
org $08E073 ; LDA.b #$0E : STA.b $10
|
||||
JSL FluteMap
|
||||
|
||||
org $07A329
|
||||
JSL UseShovel
|
||||
BCS +
|
||||
RTS
|
||||
NOP #4 : +
|
||||
|
||||
org $079D11
|
||||
JSL SwordSwingDelay : NOP
|
||||
org $079DAB
|
||||
JSL SwordSwingDelay : NOP
|
||||
org $079DEE
|
||||
JSL SwordSwingDelay : NOP
|
||||
|
||||
org $088E4A
|
||||
JSL MaybeRecoil
|
||||
BRA + : NOP #6 : +
|
||||
|
||||
org $06EC4D
|
||||
JSL MaybeRecoil2
|
||||
BRA + : NOP #10 : +
|
||||
|
||||
; make moldorm check head for hitbox instead of tail
|
||||
org $1DDADD
|
||||
; BRA + : NOP #22 : +
|
||||
BRA + : NOP #26 : +
|
||||
org $1DDAF9
|
||||
BRA + : NOP : +
|
||||
org $1DDB01
|
||||
BRA + : NOP #3 : +
|
||||
|
||||
; make moldorm repel sword when not stunned
|
||||
org $06F354
|
||||
JSL CheckMoldormRepel
|
||||
BCC .not_moldorm
|
||||
NOP
|
||||
skip 17
|
||||
.not_moldorm
|
||||
|
||||
@@ -126,6 +126,8 @@ Utility_CheckAncillaOverlapWithSprite:
|
||||
RTL
|
||||
.giant_moldorm
|
||||
LDA $0E10, Y : BNE .ignore_collision ; Moldy can have little a I-Frames, as a treat
|
||||
LDA $0C4A, X : CMP #$1F : BEQ .check_collision_moldorm ; hookshot
|
||||
CMP #$05 : BEQ .check_collision_moldorm ; boomerang
|
||||
LDA.l SpecialWeapons : CMP #$01 : BNE ++
|
||||
LDA $0C4A, X : CMP #$07 : BEQ .check_collision_moldorm
|
||||
BRA .ignore_collision ; don't collide with non-bombs
|
||||
@@ -274,25 +276,29 @@ Utility_CheckHammerHelmasaurKingMask:
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
Utility_CheckImpervious:
|
||||
LDA $0E20, X : CMP.b #$CB : BNE .normal
|
||||
LDA.w $0E20, X : CMP.b #$CE : BEQ .blind
|
||||
CMP.b #$CB : BNE .normal
|
||||
.trinexx
|
||||
LDA SpecialWeapons : CMP #$01 : BEQ +
|
||||
LDA.l SpecialWeapons : CMP #$01 : BEQ +
|
||||
CMP #$03 : BEQ +
|
||||
CMP #$04 : BEQ +
|
||||
CMP #$05 : BEQ +
|
||||
CMP #$06 : BEQ .check_sidenexx
|
||||
BRA .normal
|
||||
.blind
|
||||
LDA.w $0301 : AND.b #$0A : BNE .impervious ; impervious to hammer
|
||||
BRA .normal
|
||||
+
|
||||
LDA $0301 : AND.b #$0A : BNE .impervious ; impervious to hammer
|
||||
LDA.w $0301 : AND.b #$0A : BNE .impervious ; impervious to hammer
|
||||
.check_sidenexx
|
||||
LDA.w $0DD1 : ORA.w $0DD2 : BNE .impervious ; at least one sidenexx alive
|
||||
LDA.w $0D80, X : CMP.b #$02 : BCS .impervious ; at least one sidenexx alive
|
||||
BRA .not_impervious
|
||||
.normal
|
||||
LDA $0E60, X : AND.b #$40 : BNE .impervious
|
||||
LDA $0CF2 : CMP #$FF : BEQ .impervious ; special "always-impervious" class
|
||||
LDA $0E20, X : CMP.b #$CC : BEQ .sidenexx : CMP.b #$CD : BEQ .sidenexx
|
||||
LDA $0301 : AND.b #$0A : BEQ .not_impervious ; normal behavior if not hammer
|
||||
LDA.w $0E60, X : AND.b #$40 : BNE .impervious
|
||||
LDA.w $0CF2 : CMP.b #$FF : BEQ .impervious ; special "always-impervious" class
|
||||
LDA.w $0E20, X : CMP.b #$CC : BEQ .sidenexx : CMP.b #$CD : BEQ .sidenexx
|
||||
LDA.w $0301 : AND.b #$0A : BEQ .not_impervious ; normal behavior if not hammer
|
||||
JSL Ganon_CheckHammerVulnerability : BCS .not_impervious
|
||||
LDA SpecialWeapons : CMP #$01 : BEQ +
|
||||
CMP #$03 : BEQ +
|
||||
@@ -300,7 +306,7 @@ Utility_CheckImpervious:
|
||||
CMP #$05 : BEQ +
|
||||
BRA .not_impervious
|
||||
+
|
||||
LDA $0E20, X : CMP.b #$1E : BEQ .not_impervious ; crystal switch
|
||||
LDA.w $0E20, X : CMP.b #$1E : BEQ .not_impervious ; crystal switch
|
||||
CMP.b #$40 : BEQ .not_impervious ; aga barrier
|
||||
BRA .impervious
|
||||
.not_impervious
|
||||
@@ -332,12 +338,6 @@ Utility_CheckImpervious:
|
||||
; start with X = sprite index
|
||||
;--------------------------------------------------------------------------------
|
||||
AllowBombingMoldorm:
|
||||
LDA SpecialWeapons : CMP #$01 : BEQ .no_disable_projectiles
|
||||
CMP #$03 : BEQ .no_disable_projectiles
|
||||
CMP #$04 : BEQ .no_disable_projectiles
|
||||
CMP #$05 : BEQ .no_disable_projectiles
|
||||
CMP #$06 : BEQ .no_disable_projectiles
|
||||
INC $0BA0, X
|
||||
.no_disable_projectiles
|
||||
JSL !SPRITE_INITIALIZED_SEGMENTED
|
||||
RTL
|
||||
|
||||
@@ -36,6 +36,10 @@ LoadSwordForDamage:
|
||||
CMP.b #$04 : !BLT + : DEC : + ; if it's gold sword, change it to tempered
|
||||
RTL
|
||||
.notMoth
|
||||
CMP.b #$CE : BNE .notBlind
|
||||
LDA.b #$01
|
||||
RTL
|
||||
.notBlind
|
||||
JSR.w LoadModifiedSwordLevel ; load normal sword value
|
||||
RTL
|
||||
;================================================================================
|
||||
@@ -115,8 +119,10 @@ LoadModifiedIceFloorValue:
|
||||
LDA $5D : CMP #$01 : BEQ + : CMP #$17 : BEQ + : CMP #$1C : BEQ +
|
||||
LDA $5E : CMP #$02 : BEQ +
|
||||
LDA $5B : BNE +
|
||||
LDA.w $0308 : BIT #$80 : BNE .yes
|
||||
LDA.l $30802D : BIT #$01 : BEQ ++
|
||||
LDA $A0 : CMP #$16 : BEQ ++ ; swamp supertile with current -- fine for temporary physics but impossible without boots for permanent
|
||||
.yes
|
||||
LDA.w $0348 : ORA $7F50C7 : ORA #$10 : RTS
|
||||
++ : LDA.w $0348 : ORA $7F50C7 : RTS
|
||||
+ : LDA.w $0348
|
||||
|
||||
165
trolls.asm
Normal file
165
trolls.asm
Normal file
@@ -0,0 +1,165 @@
|
||||
IFrameData:
|
||||
db $00, $14, $28
|
||||
CalcIFrames:
|
||||
LDA.l ArmorEquipment
|
||||
PHX : TAX
|
||||
LDA.l MaximumHealth : LSR #3
|
||||
CLC : ADC.l IFrameData, X
|
||||
EOR.b #$FF
|
||||
CLC : ADC.b #$3E
|
||||
PLX
|
||||
STA.w $031F
|
||||
RTL
|
||||
|
||||
SetBombTimer:
|
||||
JSL GetRandomInt
|
||||
STA.w $039F, X
|
||||
RTL
|
||||
|
||||
SetDashTimer:
|
||||
JSL GetRandomInt
|
||||
AND.b #$3F
|
||||
STA.w $0374
|
||||
RTL
|
||||
|
||||
ProcessFlute:
|
||||
LDA.b $1B
|
||||
BNE .play_and_leave ; indoors
|
||||
LDA.b $10
|
||||
CMP.b #$0B
|
||||
BEQ .play_and_leave ; special overworld
|
||||
JSL GetRandomInt
|
||||
BIT #$08
|
||||
BNE .cucco
|
||||
.normal
|
||||
LDA.b $8A
|
||||
AND.b #$40
|
||||
BNE .play_and_leave ; dark world
|
||||
JSR PlayDuck
|
||||
SEC : RTL ; light world; play duck sound and resume normal behavior
|
||||
.cucco
|
||||
JSR PlayCluck ; outdoors; play cucco sound
|
||||
LDA.b #$01
|
||||
STA.l $7F50C5 ; turn on cucco storm
|
||||
CLC : RTL ; do not summon duck
|
||||
.play_and_leave
|
||||
JSR PlayDuck
|
||||
CLC : RTL
|
||||
|
||||
PlayDuck:
|
||||
LDA.b #$13
|
||||
STA.w $0CF8
|
||||
JSL Sound_SetSfxPanWithPlayerCoords
|
||||
ORA.w $0CF8
|
||||
STA.w $012E
|
||||
RTS
|
||||
|
||||
PlayCluck:
|
||||
LDA.b #$30
|
||||
STA.w $0CF8
|
||||
JSL Sound_SetSfxPanWithPlayerCoords
|
||||
ORA.w $0CF8
|
||||
STA.w $012E
|
||||
RTS
|
||||
|
||||
FluteMap:
|
||||
LDA.b #$00
|
||||
STA.l $7F50C5 ; turn off cuccos
|
||||
LDA.b #$0E
|
||||
STA.b $10
|
||||
RTL
|
||||
|
||||
UseShovel:
|
||||
LDA.b $1B
|
||||
BEQ .normal
|
||||
.indoors
|
||||
REP #$20
|
||||
LDA.w #$0200
|
||||
STA.w $03F5
|
||||
SEP #$20
|
||||
CLC
|
||||
RTL
|
||||
.normal
|
||||
LDA.l $07A310
|
||||
STA.b $3D
|
||||
STZ.w $030D
|
||||
STZ.w $0300
|
||||
SEC
|
||||
RTL
|
||||
|
||||
BunnyThrowPot:
|
||||
LDA.b #$02
|
||||
JSL $068156
|
||||
LDA.b $3B
|
||||
AND.b #$7F
|
||||
STA.b $3B
|
||||
RTL
|
||||
|
||||
SwordSwingDelay:
|
||||
LDA.l SwordEquipment : CMP.b #$02 : !BLT .normal
|
||||
CMP.b #$FF : BEQ .normal
|
||||
CPX.b #$04 : BEQ .section_4
|
||||
CPX.b #$05 : BEQ .section_5
|
||||
CPX.b #$06 : BNE .normal
|
||||
.section_6
|
||||
LDA.l SwordEquipment : CMP.b #$04 : !BGE .normal
|
||||
BRA .add_one
|
||||
.section_5
|
||||
LDA.l SwordEquipment : CMP.b #$02 : !BGE .normal
|
||||
BRA .add_one
|
||||
.section_4
|
||||
LDA.l SwordEquipment : CMP.b #$03 : !BGE .normal
|
||||
.add_one
|
||||
LDA.l $079CAF, X
|
||||
STA.b $3D
|
||||
INC
|
||||
RTL
|
||||
.normal
|
||||
LDA.l $079CAF, X
|
||||
STA.b $3D
|
||||
RTL
|
||||
|
||||
MaybeRecoil:
|
||||
LDA.w $0E20, Y
|
||||
CMP.b #$09 ; skip recoil on the giant 'dorm
|
||||
BEQ .done
|
||||
LDA.l $088E75, X
|
||||
STA.w $0F40, Y
|
||||
LDA.l $088E79, X
|
||||
STA.w $0F30, Y
|
||||
.done
|
||||
RTL
|
||||
|
||||
MaybeRecoil2:
|
||||
LDA.w $0E20, X
|
||||
CMP.b #$09
|
||||
BEQ .moldorm
|
||||
LDA.b $00
|
||||
EOR.b #$FF
|
||||
INC
|
||||
STA.w $0F30, X
|
||||
LDA.b $01
|
||||
EOR.b #$FF
|
||||
INC
|
||||
STA.w $0F40, X
|
||||
RTL
|
||||
.moldorm ; skip recoil on the giant 'dorm and unstun
|
||||
STZ.w $0B58, X
|
||||
STZ.w $0D90, X
|
||||
RTL
|
||||
|
||||
CheckMoldormRepel:
|
||||
CMP.b #$09
|
||||
BNE .not_moldorm
|
||||
LDA.w $0D90, X
|
||||
BEQ .repel
|
||||
LDA.w $0B58, X
|
||||
BEQ .repel
|
||||
.no_repel
|
||||
LDA.b #$01
|
||||
SEC : RTL
|
||||
.repel
|
||||
LDA.b #$00
|
||||
SEC : RTL
|
||||
.not_moldorm
|
||||
CLC : RTL
|
||||
Reference in New Issue
Block a user