If sanc if in a DW dungeon because of crossed+ ER, then you start in bunny form Mirroring from sanc to the portal is now in logic Another fix for animated tiles (fairy fountains) GT Big Key stat changed on credits Some standard logic fixes for lobbies (more outstanding)
182 lines
4.6 KiB
NASM
182 lines
4.6 KiB
NASM
org $06926e ; <- 3126e - sprite_prep.asm : 2664 (LDA $0B9B : STA $0CBA, X)
|
|
jsl SpriteKeyPrep : nop #2
|
|
|
|
org $06d049 ; <- 35049 sprite_absorbable : 31-32 (JSL Sprite_DrawRippleIfInWater : JSR Sprite_DrawAbsorbable)
|
|
jsl SpriteKeyDrawGFX : bra + : nop : +
|
|
|
|
org $06d180
|
|
jsl BigKeyGet : bcs $07 : nop #5
|
|
|
|
org $06d18d ; <- 3518D - sprite_absorbable.asm : 274 (LDA $7EF36F : INC A : STA $7EF36F)
|
|
jsl KeyGet
|
|
|
|
org $06f9f3 ; bank06.asm : 6732 (JSL Sprite_LoadProperties)
|
|
jsl LoadProperties_PreserveItemMaybe
|
|
|
|
|
|
|
|
|
|
org $06d23a
|
|
Sprite_DrawAbsorbable:
|
|
org $1eff81
|
|
Sprite_DrawRippleIfInWater:
|
|
org $0db818
|
|
Sprite_LoadProperties:
|
|
|
|
org $288000 ;140000
|
|
ShuffleKeyDrops:
|
|
db 0
|
|
ShuffleKeyDropsReserved:
|
|
db 0
|
|
|
|
LootTable: ;PC: 140002
|
|
db $0e, $00, $24 ;; ice jelly key
|
|
db $13, $00, $24 ;; pokey 2
|
|
db $16, $00, $24 ;; swamp waterway pot
|
|
db $21, $00, $24 ;; key rat
|
|
db $35, $00, $24 ;; swamp trench 2 pot
|
|
db $36, $00, $24 ;; hookshot pot
|
|
db $37, $00, $24 ;; trench 1 pot
|
|
db $38, $00, $24 ;; pot row pot
|
|
db $39, $00, $24 ;; skull gibdo
|
|
db $3d, $00, $24 ;; gt minihelma
|
|
db $3e, $00, $24 ;; ice conveyor
|
|
db $3f, $00, $24 ;; ice hammer block ??? is this a dungeon secret?
|
|
db $43, $00, $24 ;; tiles 2 pot
|
|
db $53, $00, $24 ;; beamos hall pot
|
|
db $56, $00, $24 ;; skull west lobby pot
|
|
db $63, $00, $24 ;; desert tiles 1 pot
|
|
db $71, $00, $24 ;; boomerang guard
|
|
db $72, $00, $24 ;; hc map guard
|
|
db $7b, $00, $24 ;; gt star pits pot
|
|
db $80, $00, $32 ;; a big key (for the current dungeon)
|
|
db $8b, $00, $24 ;; gt conv cross block
|
|
db $9b, $00, $24 ;; gt dlb switch pot
|
|
db $9f, $00, $24 ;; ice many pots
|
|
db $99, $00, $24 ;; eastern eyegore
|
|
db $a1, $00, $24 ;; mire fishbone pot
|
|
db $ab, $00, $24 ;; tt spike switch pot
|
|
db $b0, $00, $24 ;; tower circle of pots usain
|
|
db $b3, $00, $24 ;; mire spikes pot
|
|
db $b6, $00, $24 ;; pokey 1
|
|
db $ba, $00, $24 ;; eastern dark pot
|
|
db $bc, $00, $24 ;; tt hallway pot
|
|
db $c0, $00, $24 ;; tower dark archer
|
|
db $c1, $00, $24 ;; mire glitchy jelly
|
|
db $ff, $00, $ff
|
|
;140068
|
|
|
|
KeyTable:
|
|
db $a0, $a0, $a2, $a3, $a4, $a5, $a6, $a7, $a8, $a9, $aa, $ab, $ac, $ad
|
|
|
|
SpriteKeyPrep:
|
|
{
|
|
lda $0b9b : sta $0cba, x ; what we wrote over
|
|
pha
|
|
lda.l ShuffleKeyDrops : beq +
|
|
phx
|
|
ldx #$fd
|
|
- inx #3 : lda.l LootTable, x : cmp #$ff : beq ++ : cmp $a0 : bne -
|
|
inx : lda.l LootTable, x : sta !MULTIWORLD_SPRITEITEM_PLAYER_ID
|
|
inx : lda.l LootTable, x
|
|
plx : sta $0e80, x
|
|
cmp #$24 : bne +++
|
|
lda $a0 : cmp #$80 : bne + : lda #$24
|
|
+++ jsl PrepDynamicTile : bra +
|
|
++ plx : lda #$24 : sta $0e80, x
|
|
+ pla
|
|
rtl
|
|
}
|
|
|
|
SpriteKeyDrawGFX:
|
|
{
|
|
jsl Sprite_DrawRippleIfInWater
|
|
pha
|
|
lda.l ShuffleKeyDrops : bne +
|
|
- pla
|
|
phk : pea.w .jslrtsreturn-1
|
|
pea.w $068014 ; an rtl address - 1 in Bank06
|
|
jml Sprite_DrawAbsorbable
|
|
.jslrtsreturn
|
|
rtl
|
|
+ lda $0e80, x
|
|
cmp #$24 : bne +
|
|
lda $a0 : cmp #$80 : bne - : lda #$24
|
|
+ jsl DrawDynamicTile ; see DrawHeartPieceGFX if problems
|
|
cmp #$03 : bne +
|
|
pha : lda $0e60, x : ora.b #$20 : sta $0E60, x : pla
|
|
+
|
|
jsl.l Sprite_DrawShadowLong
|
|
|
|
pla : rtl
|
|
}
|
|
|
|
KeyGet:
|
|
{
|
|
lda $7ef36f ; what we wrote over
|
|
pha
|
|
lda.l ShuffleKeyDrops : bne +
|
|
- pla : rtl
|
|
+ ldy $0e80, x
|
|
lda $a0 : cmp #$87 : bne +
|
|
jsr ShouldKeyBeCountedForDungeon : bcc -
|
|
jsl CountChestKeyLong : bra -
|
|
+ sty $00
|
|
jsr KeyGetPlayer : sta !MULTIWORLD_ITEM_PLAYER_ID
|
|
lda !MULTIWORLD_ITEM_PLAYER_ID : bne .receive
|
|
phx
|
|
lda $040c : lsr : tax
|
|
lda $00 : cmp KeyTable, x : bne +
|
|
- plx : pla : rtl
|
|
+ cmp #$af : beq - ; universal key
|
|
cmp #$24 : beq - ; small key for this dungeon
|
|
plx
|
|
.receive
|
|
jsl.l $0791b3 ; Player_HaltDashAttackLong
|
|
jsl.l Link_ReceiveItem
|
|
pla : dec : rtl
|
|
}
|
|
|
|
; Input Y - the item type
|
|
ShouldKeyBeCountedForDungeon:
|
|
{
|
|
phx
|
|
lda $040c : lsr : tax
|
|
tya : cmp KeyTable, x : bne +
|
|
- plx : sec : rts
|
|
+ cmp #$24 : beq -
|
|
plx : clc : rts
|
|
}
|
|
|
|
BigKeyGet:
|
|
{
|
|
lda.l ShuffleKeyDrops : bne +
|
|
- stz $02e9 : ldy.b #$32 ; what we wrote over
|
|
phx : jsl Link_ReceiveItem : plx ; what we wrote over
|
|
clc : rtl
|
|
+
|
|
ldy $0e80, x
|
|
cpy #$32 : beq -
|
|
+ sec : rtl
|
|
}
|
|
|
|
KeyGetPlayer:
|
|
{
|
|
phx
|
|
ldx #$fd
|
|
- inx #3 : lda.l LootTable, x : cmp #$ff : beq ++ : cmp $a0 : bne -
|
|
++ inx : lda.l LootTable, x
|
|
plx
|
|
rts
|
|
}
|
|
|
|
LoadProperties_PreserveItemMaybe:
|
|
{
|
|
lda.l ShuffleKeyDrops : bne +
|
|
jsl Sprite_LoadProperties : rtl
|
|
+ lda $0e80, x : pha
|
|
jsl Sprite_LoadProperties
|
|
pla : sta $0e80, x
|
|
rtl
|
|
}
|