Files
dockipelago/worlds/tloz_ooa/patching/asm/triggers.yaml
Jonathan Tinney 7971961166
Some checks failed
Analyze modified files / flake8 (push) Failing after 2m28s
Build / build-win (push) Has been cancelled
Build / build-ubuntu2204 (push) Has been cancelled
ctest / Test C++ ubuntu-latest (push) Has been cancelled
ctest / Test C++ windows-latest (push) Has been cancelled
Analyze modified files / mypy (push) Has been cancelled
Build and Publish Docker Images / Push Docker image to Docker Hub (push) Successful in 5m4s
Native Code Static Analysis / scan-build (push) Failing after 5m2s
type check / pyright (push) Successful in 1m7s
unittests / Test Python 3.11.2 ubuntu-latest (push) Failing after 16m23s
unittests / Test Python 3.12 ubuntu-latest (push) Failing after 28m19s
unittests / Test Python 3.13 ubuntu-latest (push) Failing after 14m49s
unittests / Test hosting with 3.13 on ubuntu-latest (push) Successful in 5m0s
unittests / Test Python 3.13 macos-latest (push) Has been cancelled
unittests / Test Python 3.11 windows-latest (push) Has been cancelled
unittests / Test Python 3.13 windows-latest (push) Has been cancelled
add schedule I, sonic 1/frontiers/heroes, spirit island
2026-04-02 23:46:36 -07:00

171 lines
4.1 KiB
YAML

# this file is for removal of triggers that would arbitrarily restrict the
# game, and in some cases even cause softlocks. essences are the biggest
# culprit, but there are some other weird things, like not/having a certain
# item or not/having a certain global flag set (that wouldn't logically cause
# whatever event that it causes).
# only increment the maku tree's state if on the maku tree screen, or if
# all essences are obtained, set it to the value it would normally have at
# that point in the game. this allows getting the maku tree's item as long
# as you haven't collected all essences.
00//checkMakuState: |
ld a,(wActiveGroup)
cp $02
jr nc,@notAtMakuTree
ld a,(wActiveRoom)
cp $38
jr nz,@notAtMakuTree
ld a,(wMakuTreeState)
inc a
cp $11
ret
@notAtMakuTree:
ld a,($c738)
and $20
jp z,@notAllEssences
ld a,(wEssencesObtained)
call getNumSetBits
cp option.requiredEssences
jr c,@notAllEssences
scf
ld a,$0e
ret
@notAllEssences:
scf
ld a,(wMakuTreeState)
ret
00/3e56/: call checkMakuState
# make ricky appear if you have his gloves, even if rafton doesn't have rope.
0a//checkShouldRickyAppear: |
call checkGlobalFlag
ret nz
ld a,($c6a3) # byte in wObtainedTreasureFlags
bit 0,a
ret nz
ld a,(wRickyState)
or a
ret
0a/4bb8/: call checkShouldRickyAppear
# require giving rafton rope before the island chart.
0a//checkRaftonHasRope: |
call checkTreasureObtained
ret nc
ld a,$15
call checkGlobalFlag
ret z
scf
ret
0a/4d5f/: call checkRaftonHasRope
# initiate all these events without requiring essences:
04/6a44/: nop # clear rubble from rolling ridge base present
04/6a35/: nop # open "new" rolling ridge present tunnel
09/5815/: jr z,$00 # dimitri
0a/4bb2/: jr z,$00 # ^
09/51f8/: |
xor a
ret # open palace
09/6567/: nop # move impa out of the way to nayru's house
0a/4d7a/: jr $01 # rafton
15/6261/: jr c,$00 # comedian (TODO : Check this if comedian doesn't work properly)
# moosh (and ghinis) should appear in the graveyard without:
05/78b8/: |
xor a
xor a
xor a # not having cheval rope
0a/4b92/: |
xor a
xor a
xor a # ^
0a/4ba3/: |
xor a
xor a
xor a # ^
0a/4b85/: or $01 # essences
0a/5943/: or $01 # ^
0a/5dd5/: or $01 # ^
0a/4b8c/: or $01 # talking to cheval
0a/594b/: or $01 # ^
0a/5ddc/: or $01 # ^
# sell 150 rupee item from lynna city shop from the start
# TODO : Shop !
09/4333/: |
nop
nop
# saving nayru without having saved the maku tree leads to weirdness, so just
# save the maku tree along with nayru.
0a//saveMakuTreeWithNayru: |
call setGlobalFlag
ld a,(wMakuTreeState)
cp $0e
jr z,@next
ld a,$02
@next:
dec a
ld (wMakuTreeState),a
ld a,$0c
call setGlobalFlag
ld a,$12
call setGlobalFlag
ld a,$3f
call setGlobalFlag
push hl
ld hl,$c738
res 0,(hl)
inc h
set 7,(hl)
ld l,$48
set 0,(hl)
pop hl
ret
0a/5541/: call saveMakuTreeWithNayru
# skip essence checks for goron elder event.
0c/6b1d/: |
db jumpifmemoryset
dw $cddb
db $00
0c/6b83/: |
db jumpifmemoryset
dw $cddb
db $00
15/735d/: |
db jumpifmemoryset
dw $cddb
db $00
# keep black tower in initial state until the player gets the item from the
# worker.
10//checkBlackTowerState: |
ld hl,$7927
ret z
ld a,($c9e1)
and $20
ret
10/7914/: call checkBlackTowerState
# change symmetry city wives' state based on brother's item obtained, not
# global flag (fool's ore is used as a "dummy" item id set by the brothers.
15/784f/: db jumpifglobalflagset,GLOBALFLAG_GOT_TUNINUT_FROM_BROTHER
# don't change symmetry city brothers' state if the tuni nut has been placed.
15/78e5/: db jumpifroomflagset,$02
# Ignore the fact that the player has already the tuni nut
15/78f5/: db jumpifglobalflagset,GLOBALFLAG_GOT_TUNINUT_FROM_BROTHER
# Rewrite symmetryNpc_getTuniNutState
15/77ef/: |
ld a,GLOBALFLAG_GOT_TUNINUT_FROM_BROTHER
call checkGlobalFlag
ld b,$00
jr z,@notTaken
inc b
@notTaken:
ld a,b
ld ($cfc1),a
ret