Files
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

156 lines
4.1 KiB
YAML

# Most of the code here has to do with interactions other than
# the id $60 "treasure" interaction that must use treasure interaction
# graphics.
# set hl = the address of the sprite for treasure with ID b and subID c.
3f//lookupItemSprite_body: |
ld e,$16
ld hl,getTreasureDataSprite
call interBankCall
ld a,e
ld hl,$66db ; interaction60SubidData
add a,a
rst 10
ld a,e
rst 10
ret
# red soldier sprite data for deku forest soldier check.
3f//soldierSpriteData: |
db 4d,00,22
3f//customSpriteJumpTableNotItem: |
dwbe 4000,soldierSpriteData
db ff
# format (ID, subID, jump address). these functions *must* pop af as the last
# instruction before returning.
3f//customSpriteJumpTable: |
dwbe 4700, locations.hiddenShop1
dwbe 4702, locations.hiddenShop2
dwbe 4705, locations.hiddenShop3
dwbe 4704, locations.lynnaShop1
dwbe 4703, locations.lynnaShop2
dwbe 4701, locations.lynnaShop3
dwbe 470e, locations.advanceShop1
dwbe 470f, locations.advanceShop2
dwbe 4710, locations.advanceShop3
dwbe 4709, locations.syrupShop2
dwbe 470a, locations.syrupShop3
dwbe 470b, locations.syrupShop1
dwbe 6314, locations.hiddenTokayCave
dwbe 6315, locations.hiddenTokayCave
dwbe 633e, locations.wildTokayGame
dwbe 6b0b, locations.chevalInvention
dwbe 6b0c, locations.chevalTest
dwbe 7731, locations.d8Stalfos
dwbe 8007, locations.libraryPast
dwbe 8008, locations.libraryPresent
dwbe 8100, locations.tokayMarket1
dwbe 8101, locations.tokayMarket2
db ff
# overrides the sprite data loaded for certain interactions. this is mostly
# used for "non-item" interactions that depict items, like the ones in shops.
3f//checkLoadCustomSprite: |
call $4437 ; _interactionGetData
push af
push hl
push bc
ld e,$41
ld a,(de)
ld b,a
inc e
ld a,(de)
ld c,a
ld e,$02
ld hl,customSpriteJumpTable
call searchDoubleKey
jr c,@customSprite
; Same stuff with not item sprite
ld hl,customSpriteJumpTableNotItem
call searchDoubleKey
jr c,@customSpriteNotItem
pop bc
pop hl
pop af
ret
@customSprite:
pop bc
ldi a,(hl)
ld b,a
ld c,(hl)
pop hl
call lookupItemSprite_body
pop af
ret
@customSpriteNotItem:
pop bc
ldi a,(hl)
ld b,a
ld c,(hl)
pop hl
ld h,b
ld l,c
pop af
ret
3f/4356/: call checkLoadCustomSprite
## Some treasure don't actually use the treasure animation, this fix it.
3f//interactionGetIDForAnimationTable_body: |
push bc
ld e,$41 ; Interaction.id
ld a,(de)
ld b,a
inc e
ld a,(de)
ld c,a
ld e,$02
ld hl,customSpriteJumpTable
call searchDoubleKey
jr nc,@normal
; It's a special case; use the animation table for INTERACID_TREASURE
ld a,INTERACID_TREASURE
ld e,a
jr @ret
@normal:
; It's not a special case; return the unmodified interaction ID
ld e,b
@ret:
pop bc
ret
00//interactionGetIDForAnimationTable: |
ld e,$3f
ld hl,interactionGetIDForAnimationTable_body
call interBankCall
ld a,e
ret
00/263c/: call interactionGetIDForAnimationTable
00/2663/: call interactionGetIDForAnimationTable
# Inject the "Archipelago Item" sprite in subrosian sprite sheet in place of the rosa bow (which shouldn't be used because no linked game)
1a/6620/: |
db $03,$03,$07,$04,$0F,$08,$3F,$3C,$7E,$43,$F9,$87,$FD,$BF,$FA,$C6
db $FB,$87,$F7,$8C,$EF,$98,$8F,$F8,$4F,$78,$38,$3F,$04,$07,$03,$03
db $C0,$C0,$E0,$20,$90,$70,$3C,$FC,$7E,$C2,$F9,$87,$FD,$BF,$7F,$43
db $F9,$C7,$F1,$2F,$D1,$3F,$91,$7F,$12,$FE,$1C,$FC,$20,$E0,$C0,$C0
# Use that custom sprite with a blue palette inside GFX#5a (will be used for regular remote items)
3f/67e9/: db $65,$14,$43
# Use that custom sprite with a red palette inside GFX#59 (will be used for progression remote items)
3f/67e6/: db $65,$14,$53
# King Zora Potion
3f/67f5/: db $79,$01,$13
# give items that don't normally appear as treasure interactions entries in
# the treasure graphics table.
3f/676b/: db $79,$01,$23 # potion