Trolls
This commit is contained in:
@@ -227,6 +227,7 @@ org $A28000 ; contrib area
|
|||||||
incsrc contrib.asm
|
incsrc contrib.asm
|
||||||
incsrc special_weapons.asm
|
incsrc special_weapons.asm
|
||||||
incsrc variable_ganon_vulnerability.asm
|
incsrc variable_ganon_vulnerability.asm
|
||||||
|
incsrc trolls.asm
|
||||||
warnpc $A38000
|
warnpc $A38000
|
||||||
|
|
||||||
org $A38000
|
org $A38000
|
||||||
|
|||||||
@@ -4,9 +4,13 @@
|
|||||||
!BOOTS_MODIFIER = "$7F50CE"
|
!BOOTS_MODIFIER = "$7F50CE"
|
||||||
ModifyBoots:
|
ModifyBoots:
|
||||||
PHA
|
PHA
|
||||||
|
LDA.b $A0 : CMP.b #$06 : BNE +
|
||||||
|
LDA.b $A1 : CMP.b #$00 : BEQ .no_boots
|
||||||
|
+
|
||||||
LDA !BOOTS_MODIFIER : CMP.b #$01 : BNE +
|
LDA !BOOTS_MODIFIER : CMP.b #$01 : BNE +
|
||||||
PLA : AND AbilityFlags : ORA.b #$04 : RTL ; yes boots
|
PLA : AND AbilityFlags : ORA.b #$04 : RTL ; yes boots
|
||||||
+ : CMP.b #$02 : BNE +
|
+ : CMP.b #$02 : BNE +
|
||||||
|
.no_boots
|
||||||
PLA : AND AbilityFlags : AND.b #$FB : RTL ; no boots
|
PLA : AND AbilityFlags : AND.b #$FB : RTL ; no boots
|
||||||
+ : LDA FakeBoots : CMP.b #$01 : BNE +
|
+ : LDA FakeBoots : CMP.b #$01 : BNE +
|
||||||
LDA $5B : BEQ ++ : LDA $59 : BNE + ; hover check
|
LDA $5B : BEQ ++ : LDA $59 : BNE + ; hover check
|
||||||
|
|||||||
@@ -79,7 +79,10 @@ InvertDPad:
|
|||||||
|
|
||||||
.crowd_control
|
.crowd_control
|
||||||
LDA !INVERT_DPAD : BNE +
|
LDA !INVERT_DPAD : BNE +
|
||||||
|
LDA.b $A0 : CMP.b #$DE : BNE .off
|
||||||
|
LDA.b #$01 : BRA +
|
||||||
|
|
||||||
|
.off
|
||||||
LDA $4218 : STA $00
|
LDA $4218 : STA $00
|
||||||
LDA $4219 : STA $01
|
LDA $4219 : STA $01
|
||||||
JML.l InvertDPadReturn
|
JML.l InvertDPadReturn
|
||||||
|
|||||||
@@ -23,7 +23,11 @@ CuccoStorm:
|
|||||||
|
|
||||||
SEP #$30 ; set 8-bit accumulator index registers
|
SEP #$30 ; set 8-bit accumulator index registers
|
||||||
LDA.l !CUCCO_STORM : BEQ + ; only if storm is on
|
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
|
||||||
|
BRA +
|
||||||
|
.check
|
||||||
LDA.l LoopFrames : AND.b #$7F : BNE + ; check every 128 frames
|
LDA.l LoopFrames : AND.b #$7F : BNE + ; check every 128 frames
|
||||||
|
|
||||||
-
|
-
|
||||||
|
|||||||
BIN
damage_table.bin
BIN
damage_table.bin
Binary file not shown.
@@ -284,7 +284,10 @@ DialogGanon1:
|
|||||||
REP #$20
|
REP #$20
|
||||||
LDA.w #$018C
|
LDA.w #$018C
|
||||||
BCC +
|
BCC +
|
||||||
|
JSL CheckMushroom
|
||||||
LDA.w #$016D
|
LDA.w #$016D
|
||||||
|
BCC +
|
||||||
|
LDA.w #$0197
|
||||||
+ STA $1CF0
|
+ STA $1CF0
|
||||||
SEP #$20
|
SEP #$20
|
||||||
JSL.l Sprite_ShowMessageMinimal_Alt
|
JSL.l Sprite_ShowMessageMinimal_Alt
|
||||||
@@ -304,6 +307,10 @@ DialogGanon2:
|
|||||||
REP #$20
|
REP #$20
|
||||||
BCS +
|
BCS +
|
||||||
LDA.w #$018D : JMP .done
|
LDA.w #$018D : JMP .done
|
||||||
|
+
|
||||||
|
JSL CheckMushroom
|
||||||
|
BCC +
|
||||||
|
LDA.w #$0198 : JMP .done
|
||||||
+
|
+
|
||||||
LDA.l GanonVulnerabilityItem : AND #$00FF : BNE .special_item
|
LDA.l GanonVulnerabilityItem : AND #$00FF : BNE .special_item
|
||||||
LDA.l SpecialWeapons : AND.w #$00FF
|
LDA.l SpecialWeapons : AND.w #$00FF
|
||||||
|
|||||||
@@ -7,8 +7,11 @@
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
GoalItemGanonCheck:
|
GoalItemGanonCheck:
|
||||||
LDA $0E20, X : CMP.b #$D6 : BNE .success ; skip if not ganon
|
LDA $0E20, X : CMP.b #$D6 : BNE .success ; skip if not ganon
|
||||||
|
LDA.w $0D80, X : CMP.b #$12 : BEQ .fail
|
||||||
JSL.l CheckGanonVulnerability
|
JSL.l CheckGanonVulnerability
|
||||||
BCS .success
|
BCC .fail
|
||||||
|
JSL CheckMushroom
|
||||||
|
BCC .success
|
||||||
|
|
||||||
.fail
|
.fail
|
||||||
LDA $0D80, X : CMP.b #17 : !BLT .success ; decmial 17 because Acmlm's chart is decimal
|
LDA $0D80, X : CMP.b #17 : !BLT .success ; decmial 17 because Acmlm's chart is decimal
|
||||||
|
|||||||
122
hooks.asm
122
hooks.asm
@@ -2397,11 +2397,11 @@ org $02EC2E ;<- 016C2E
|
|||||||
JSL.l Overworld_LoadNewTiles
|
JSL.l Overworld_LoadNewTiles
|
||||||
NOP #$02
|
NOP #$02
|
||||||
;================================================================================
|
;================================================================================
|
||||||
org $07A3E2 ;<- 3A3E2 Bank07.asm:5764 (LDA.b #$80 : STA $03F0)
|
; org $07A3E2 ;<- 3A3E2 Bank07.asm:5764 (LDA.b #$80 : STA $03F0)
|
||||||
JSL.l FreeDuckCheck : BEQ +
|
; JSL.l FreeDuckCheck : BEQ +
|
||||||
NOP
|
; NOP
|
||||||
skip 3 ; a JSR we need to keep
|
; 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)
|
org $07A9AC ; <- 3A9AC - Bank07.asm:6628 (LDA $0C : ORA $0E : STA $00 : AND.b #$0C : BEQ BRANCH_BETA)
|
||||||
JML MirrorBonk
|
JML MirrorBonk
|
||||||
@@ -2776,11 +2776,9 @@ org $07839E ; bunny BAGE check
|
|||||||
BunnyRead:
|
BunnyRead:
|
||||||
JSR.w $07B5A9 ; check A button
|
JSR.w $07B5A9 ; check A button
|
||||||
BCC .noA
|
BCC .noA
|
||||||
JSR.w CheckIfReading
|
JSL BunnyThrowPot
|
||||||
BNE .noread
|
BRA .noA
|
||||||
JSR.w $07B4DB
|
NOP #3
|
||||||
NOP
|
|
||||||
.noread
|
|
||||||
.noA
|
.noA
|
||||||
|
|
||||||
org $07FFF4
|
org $07FFF4
|
||||||
@@ -3071,3 +3069,107 @@ NOP
|
|||||||
|
|
||||||
org $02D7D2 ; BEQ .face_up
|
org $02D7D2 ; BEQ .face_up
|
||||||
NOP #2 ; this fixes Link's direction after mirroring and falling after entering through back of tavern
|
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
|
||||||
|
|
||||||
|
; make mini moldorms faster
|
||||||
|
org $0697DF
|
||||||
|
db $30, $2C, $22, $12, $00, $EE, $DE, $D4
|
||||||
|
db $D0, $D4, $DE, $EE, $00, $12, $22, $2C
|
||||||
|
db $00, $12, $22, $2C, $30, $2C, $22, $12
|
||||||
|
db $00, $EE, $DE, $D4, $D0, $D4, $DE, $EE
|
||||||
|
|
||||||
|
; make lanmolas faster
|
||||||
|
org $05A4B7
|
||||||
|
LDA.b #$18
|
||||||
|
|
||||||
|
; ganon - silvers just don't work like they used to
|
||||||
|
org $0DB93D
|
||||||
|
db $08
|
||||||
|
|
||||||
|
; ganon - randomize vulnerability when stunned
|
||||||
|
org $1D9010
|
||||||
|
JSL StunGanon : NOP
|
||||||
|
|
||||||
|
; agahnim - pattern? we don't need no steenken pattern!
|
||||||
|
org $1ED637
|
||||||
|
JSL AgaDecision : NOP
|
||||||
|
|
||||||
|
; agahnim - no guaranteed normal balls
|
||||||
|
org $1ED6ED
|
||||||
|
NOP #2
|
||||||
|
|
||||||
|
; helmie's mask is brittle
|
||||||
|
org $1E8112
|
||||||
|
db $03, $03, $03, $03, $00
|
||||||
|
|
||||||
|
; vitreous - bombs work a bit better
|
||||||
|
org $0DB938
|
||||||
|
db $0C
|
||||||
|
|
||||||
|
; tile rooms - make them a bit faster
|
||||||
|
org $09BA20
|
||||||
|
LDA.b #$B8
|
||||||
|
|
||||||
|
org $1EBC56
|
||||||
|
LDA.b #$28
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ NewDrawHud:
|
|||||||
!BOMBCOUNT_DRAW_ADDRESS = "$7EC75A"
|
!BOMBCOUNT_DRAW_ADDRESS = "$7EC75A"
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
|
||||||
LDA InfiniteBombsModifier : BNE .infinite_bombs
|
JSL CheckInfiniteBombs : BNE .infinite_bombs
|
||||||
.finite_bombs
|
.finite_bombs
|
||||||
LDA.l SpecialWeapons : CMP #$01 : BNE .normal
|
LDA.l SpecialWeapons : CMP #$01 : BNE .normal
|
||||||
LDA.l SpecialWeaponLevel : BEQ .no_bombs
|
LDA.l SpecialWeaponLevel : BEQ .no_bombs
|
||||||
|
|||||||
10
retro.asm
10
retro.asm
@@ -1,5 +1,5 @@
|
|||||||
IsItemAvailable:
|
IsItemAvailable:
|
||||||
LDA InfiniteBombsModifier : BEQ .finite
|
JSL CheckInfiniteBombs : BEQ .finite
|
||||||
.infinite
|
.infinite
|
||||||
CPX.b #$04 : BNE .finite
|
CPX.b #$04 : BNE .finite
|
||||||
LDA.b #$01 : RTL
|
LDA.b #$01 : RTL
|
||||||
@@ -7,27 +7,27 @@ IsItemAvailable:
|
|||||||
LDA EquipmentWRAM-1, X
|
LDA EquipmentWRAM-1, X
|
||||||
RTL
|
RTL
|
||||||
LoadBombCount:
|
LoadBombCount:
|
||||||
LDA InfiniteBombsModifier : BNE .infinite
|
JSL CheckInfiniteBombs : BNE .infinite
|
||||||
.finite
|
.finite
|
||||||
LDA BombsEquipment
|
LDA BombsEquipment
|
||||||
.infinite
|
.infinite
|
||||||
RTL
|
RTL
|
||||||
LoadBombCount16:
|
LoadBombCount16:
|
||||||
LDA InfiniteBombsModifier : AND.w #$00FF : BNE .infinite
|
JSL CheckInfiniteBombs16 : BNE .infinite
|
||||||
.finite
|
.finite
|
||||||
LDA BombsEquipment
|
LDA BombsEquipment
|
||||||
.infinite
|
.infinite
|
||||||
RTL
|
RTL
|
||||||
StoreBombCount:
|
StoreBombCount:
|
||||||
JSL IncrementBombsPlacedCounter
|
JSL IncrementBombsPlacedCounter
|
||||||
PHA : LDA InfiniteBombsModifier : BEQ .finite
|
PHA : JSL CheckInfiniteBombs : BEQ .finite
|
||||||
.infinite
|
.infinite
|
||||||
PLA : LDA.b #$01 : RTL
|
PLA : LDA.b #$01 : RTL
|
||||||
.finite
|
.finite
|
||||||
PLA : STA BombsEquipment
|
PLA : STA BombsEquipment
|
||||||
RTL
|
RTL
|
||||||
SearchForEquippedItem:
|
SearchForEquippedItem:
|
||||||
LDA InfiniteBombsModifier : BEQ +
|
JSL CheckInfiniteBombs : BEQ +
|
||||||
LDA.b #$01 : LDX.b #$00 : RTL
|
LDA.b #$01 : LDX.b #$00 : RTL
|
||||||
+
|
+
|
||||||
LDA BowEquipment ; thing we wrote over
|
LDA BowEquipment ; thing we wrote over
|
||||||
|
|||||||
@@ -126,6 +126,8 @@ Utility_CheckAncillaOverlapWithSprite:
|
|||||||
RTL
|
RTL
|
||||||
.giant_moldorm
|
.giant_moldorm
|
||||||
LDA $0E10, Y : BNE .ignore_collision ; Moldy can have little a I-Frames, as a treat
|
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.l SpecialWeapons : CMP #$01 : BNE ++
|
||||||
LDA $0C4A, X : CMP #$07 : BEQ .check_collision_moldorm
|
LDA $0C4A, X : CMP #$07 : BEQ .check_collision_moldorm
|
||||||
BRA .ignore_collision ; don't collide with non-bombs
|
BRA .ignore_collision ; don't collide with non-bombs
|
||||||
@@ -274,7 +276,8 @@ Utility_CheckHammerHelmasaurKingMask:
|
|||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
Utility_CheckImpervious:
|
Utility_CheckImpervious:
|
||||||
LDA $0E20, X : CMP.b #$CB : BNE .normal
|
LDA $0E20, X : CMP.b #$CE : BEQ .blind
|
||||||
|
CMP.b #$CB : BNE .normal
|
||||||
.trinexx
|
.trinexx
|
||||||
LDA SpecialWeapons : CMP #$01 : BEQ +
|
LDA SpecialWeapons : CMP #$01 : BEQ +
|
||||||
CMP #$03 : BEQ +
|
CMP #$03 : BEQ +
|
||||||
@@ -282,6 +285,9 @@ Utility_CheckImpervious:
|
|||||||
CMP #$05 : BEQ +
|
CMP #$05 : BEQ +
|
||||||
CMP #$06 : BEQ .check_sidenexx
|
CMP #$06 : BEQ .check_sidenexx
|
||||||
BRA .normal
|
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 $0301 : AND.b #$0A : BNE .impervious ; impervious to hammer
|
||||||
.check_sidenexx
|
.check_sidenexx
|
||||||
@@ -332,12 +338,6 @@ Utility_CheckImpervious:
|
|||||||
; start with X = sprite index
|
; start with X = sprite index
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
AllowBombingMoldorm:
|
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
|
.no_disable_projectiles
|
||||||
JSL !SPRITE_INITIALIZED_SEGMENTED
|
JSL !SPRITE_INITIALIZED_SEGMENTED
|
||||||
RTL
|
RTL
|
||||||
|
|||||||
1
sram.asm
1
sram.asm
@@ -392,6 +392,7 @@ InvertDPadModifier: skip 1
|
|||||||
TemporaryOHKO: skip 1
|
TemporaryOHKO: skip 1
|
||||||
SpriteSwapper: skip 1
|
SpriteSwapper: skip 1
|
||||||
BootsModifier: skip 1 ; (0=Off, 1=Always, 2=Never)
|
BootsModifier: skip 1 ; (0=Off, 1=Always, 2=Never)
|
||||||
|
GanonVulnerabilityItem: skip 1 ; item ganon is vulnerable to while stunned
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; Expanded SRAM ($7F6000 - $7F6FFF)
|
; Expanded SRAM ($7F6000 - $7F6FFF)
|
||||||
|
|||||||
@@ -36,6 +36,10 @@ LoadSwordForDamage:
|
|||||||
CMP.b #$04 : !BLT + : DEC : + ; if it's gold sword, change it to tempered
|
CMP.b #$04 : !BLT + : DEC : + ; if it's gold sword, change it to tempered
|
||||||
RTL
|
RTL
|
||||||
.notMoth
|
.notMoth
|
||||||
|
CMP.b #$CE : BNE .notBlind
|
||||||
|
LDA.b #$01
|
||||||
|
RTL
|
||||||
|
.notBlind
|
||||||
JSR.w LoadModifiedSwordLevel ; load normal sword value
|
JSR.w LoadModifiedSwordLevel ; load normal sword value
|
||||||
RTL
|
RTL
|
||||||
;================================================================================
|
;================================================================================
|
||||||
@@ -115,8 +119,11 @@ LoadModifiedIceFloorValue:
|
|||||||
LDA $5D : CMP #$01 : BEQ + : CMP #$17 : BEQ + : CMP #$1C : BEQ +
|
LDA $5D : CMP #$01 : BEQ + : CMP #$17 : BEQ + : CMP #$1C : BEQ +
|
||||||
LDA $5E : CMP #$02 : BEQ +
|
LDA $5E : CMP #$02 : BEQ +
|
||||||
LDA $5B : BNE +
|
LDA $5B : BNE +
|
||||||
|
LDA.b $A0 : CMP.b #$29 : BEQ .yes
|
||||||
|
LDA.w $0308 : BIT #$80 : BNE .yes
|
||||||
LDA.l $30802D : BIT #$01 : BEQ ++
|
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
|
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 : ORA #$10 : RTS
|
||||||
++ : LDA.w $0348 : ORA $7F50C7 : RTS
|
++ : LDA.w $0348 : ORA $7F50C7 : RTS
|
||||||
+ : LDA.w $0348
|
+ : LDA.w $0348
|
||||||
|
|||||||
@@ -107,7 +107,7 @@ ChallengeModes:
|
|||||||
db #$00 ; #$00 = Default behavior;
|
db #$00 ; #$00 = Default behavior;
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $30802E ; PC 0x18003E
|
org $30802E ; PC 0x18003E
|
||||||
GanonVulnerabilityItem:
|
DONOTUSE__GanonVulnerabilityItem:
|
||||||
db #$00 ; #$00 = Default behavior (silver arrows)
|
db #$00 ; #$00 = Default behavior (silver arrows)
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $30802F ; PC 0x18003F
|
org $30802F ; PC 0x18003F
|
||||||
|
|||||||
@@ -122,8 +122,10 @@ dw #$FFFF, #$7FFF
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!TEMPORARY_OHKO = "$7F50CC"
|
!TEMPORARY_OHKO = "$7F50CC"
|
||||||
DrawChallengeTimer:
|
DrawChallengeTimer:
|
||||||
|
LDA.b $A0 : AND.w #$00FF : CMP.w #$00C8 : BEQ .is_ohko
|
||||||
LDA !TEMPORARY_OHKO : AND.w #$00FF : BEQ +
|
LDA !TEMPORARY_OHKO : AND.w #$00FF : BEQ +
|
||||||
LDA.w #$2807 : STA $7EC790
|
.is_ohko
|
||||||
|
LDA.w #$2807 : STA $7EC790
|
||||||
LDA.w #$280A : STA $7EC792
|
LDA.w #$280A : STA $7EC792
|
||||||
LDA.w #$280B : STA $7EC794
|
LDA.w #$280B : STA $7EC794
|
||||||
LDA.w #$280C : STA $7EC796
|
LDA.w #$280C : STA $7EC796
|
||||||
@@ -175,6 +177,7 @@ DrawChallengeTimer:
|
|||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
OHKOTimer:
|
OHKOTimer:
|
||||||
|
LDA.b $A0 : CMP.b #$C8 : BEQ .kill
|
||||||
LDA TemporaryOHKO : BNE .kill
|
LDA TemporaryOHKO : BNE .kill
|
||||||
LDA.l TimeoutBehavior : CMP #$02 : BNE +
|
LDA.l TimeoutBehavior : CMP #$02 : BNE +
|
||||||
LDA !Status : AND.b #$02 : BEQ +
|
LDA !Status : AND.b #$02 : BEQ +
|
||||||
|
|||||||
220
trolls.asm
Normal file
220
trolls.asm
Normal file
@@ -0,0 +1,220 @@
|
|||||||
|
IFrameData:
|
||||||
|
db $00, $10, $20
|
||||||
|
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 #$1F
|
||||||
|
STA.w $0374
|
||||||
|
JSL GetRandomInt
|
||||||
|
AND.b #$0F
|
||||||
|
CLC : ADC.w $0374
|
||||||
|
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 !CUCCO_STORM ; 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 !CUCCO_STORM ; 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 $A0 : CMP.b #$0D : BNE .throw
|
||||||
|
LDA.b $A1 : CMP.b #$00 : BEQ .no_throw
|
||||||
|
.throw
|
||||||
|
LDA.b #$02
|
||||||
|
JSL $068156
|
||||||
|
LDA.b $3B
|
||||||
|
AND.b #$7F
|
||||||
|
STA.b $3B
|
||||||
|
.no_throw
|
||||||
|
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
|
||||||
|
|
||||||
|
CheckMushroom:
|
||||||
|
PHP
|
||||||
|
SEP #$20
|
||||||
|
LDA.l InventoryTracking
|
||||||
|
AND.b #$20
|
||||||
|
BEQ +
|
||||||
|
PLP : SEC : RTL
|
||||||
|
+ PLP : CLC : RTL
|
||||||
|
|
||||||
|
AgaDecision:
|
||||||
|
LDA.b $A0
|
||||||
|
CMP.b #$20
|
||||||
|
BNE .aga2
|
||||||
|
JSL RNG_Agahnim1
|
||||||
|
AND.b #$04
|
||||||
|
STA.w $0E30, X
|
||||||
|
CMP.b #$04
|
||||||
|
RTL
|
||||||
|
.aga2
|
||||||
|
STZ.w $0E30, X
|
||||||
|
CMP.b #$04
|
||||||
|
RTL
|
||||||
|
|
||||||
|
CheckInfiniteBombs:
|
||||||
|
LDA.l InfiniteBombsModifier : BNE .yes
|
||||||
|
LDA.b $A0
|
||||||
|
CMP.b #$90
|
||||||
|
BEQ .yes
|
||||||
|
.no
|
||||||
|
LDA.b #$00
|
||||||
|
RTL
|
||||||
|
.yes
|
||||||
|
LDA.b #$01
|
||||||
|
RTL
|
||||||
|
|
||||||
|
CheckInfiniteBombs16:
|
||||||
|
LDA.l InfiniteBombsModifier : AND.w #$00FF : BNE .yes
|
||||||
|
LDA.b $A0 : AND.w #$00FF
|
||||||
|
CMP.w #$0090
|
||||||
|
BEQ .yes
|
||||||
|
.no
|
||||||
|
LDA.w #$0000
|
||||||
|
RTL
|
||||||
|
.yes
|
||||||
|
LDA.w #$0001
|
||||||
|
RTL
|
||||||
@@ -126,6 +126,53 @@ CheckBeeBoss:
|
|||||||
RTL
|
RTL
|
||||||
; return non-zero A if entity is a boss (and bee should not attack)
|
; return non-zero A if entity is a boss (and bee should not attack)
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
StunGanon:
|
||||||
|
JSL RNG_Ganon
|
||||||
|
BIT.b #$30
|
||||||
|
BEQ .non_magic
|
||||||
|
.magic
|
||||||
|
AND.b #$0E
|
||||||
|
LSR
|
||||||
|
BRA .chosen
|
||||||
|
.non_magic
|
||||||
|
AND.b #$0C
|
||||||
|
LSR #2
|
||||||
|
ORA.b #$08
|
||||||
|
.chosen
|
||||||
|
PHX
|
||||||
|
TAX
|
||||||
|
LDA.l Ganon_RandomizeItem, X
|
||||||
|
STA.l GanonVulnerabilityItem
|
||||||
|
PLX
|
||||||
|
JSL DialogItem
|
||||||
|
LDA.b #$D7
|
||||||
|
STA.w $0E20, X
|
||||||
|
RTL
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
DialogItem:
|
||||||
|
PHX : PHY
|
||||||
|
LDA.l GanonVulnerabilityItem
|
||||||
|
ASL
|
||||||
|
TAX
|
||||||
|
LDA.l Ganon_TextBox+1, X
|
||||||
|
TAY
|
||||||
|
LDA.l Ganon_TextBox, X
|
||||||
|
JSL Sprite_ShowMessageUnconditional
|
||||||
|
PLY : PLX
|
||||||
|
RTL
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
Ganon_RandomizeItem:
|
||||||
|
db #$05, #$06, #$07, #$08
|
||||||
|
db #$09, #$0A, #$11, #$12
|
||||||
|
db #$01, #$02, #$03, #$0C
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
Ganon_TextBox:
|
||||||
|
dw #$0000 ; default behavior--assume silvers
|
||||||
|
dw #$0199, #$019A, #$019B, #$019C, #$019D
|
||||||
|
dw #$019E, #$019F, #$01A0, #$01A1, #$01A2
|
||||||
|
dw #$0000, #$01A3, #$0000, #$0000, #$0000
|
||||||
|
dw #$01A4, #$01A5, #$01A6, #$0000, #$0000
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
Ganon_CheckByAncilla:
|
Ganon_CheckByAncilla:
|
||||||
db #$00 ; default behavior--we shouldn't be checking the table here anyway
|
db #$00 ; default behavior--we shouldn't be checking the table here anyway
|
||||||
db #$00, #$05, #$1F, #$07, #$00
|
db #$00, #$05, #$1F, #$07, #$00
|
||||||
|
|||||||
Reference in New Issue
Block a user