mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2024-09-09 09:51:34 -07:00
267 lines
3.8 KiB
NASM
267 lines
3.8 KiB
NASM
|
HealMachineAnim: ; 12324
|
||
|
; If you have no Pokemon, don't change the buffer. This can lead to some glitchy effects if you have no Pokemon.
|
||
|
ld a, [PartyCount]
|
||
|
and a
|
||
|
ret z
|
||
|
; The location of the healing machine relative to the player is stored in ScriptVar.
|
||
|
; 0: Up and left (Pokemon Center)
|
||
|
; 1: Left (Elm's Lab)
|
||
|
; 2: Up (Hall of Fame)
|
||
|
ld a, [ScriptVar]
|
||
|
ld [Buffer1], a
|
||
|
ld a, [rOBP1]
|
||
|
ld [Buffer2], a
|
||
|
call .DoJumptableFunctions
|
||
|
ld a, [Buffer2]
|
||
|
call Functiond24
|
||
|
ret
|
||
|
; 1233e
|
||
|
|
||
|
.DoJumptableFunctions: ; 1233e
|
||
|
xor a
|
||
|
ld [wd1ec], a
|
||
|
.jumpable_loop
|
||
|
ld a, [Buffer1]
|
||
|
ld e, a
|
||
|
ld d, 0
|
||
|
ld hl, .Pointers
|
||
|
rept 2
|
||
|
add hl, de
|
||
|
endr
|
||
|
ld a, [hli]
|
||
|
ld h, [hl]
|
||
|
ld l, a
|
||
|
ld a, [wd1ec]
|
||
|
ld e, a
|
||
|
inc a
|
||
|
ld [wd1ec], a
|
||
|
add hl, de
|
||
|
ld a, [hl]
|
||
|
cp 5
|
||
|
jr z, .finish
|
||
|
ld hl, .Jumptable
|
||
|
rst JumpTable
|
||
|
jr .jumpable_loop
|
||
|
|
||
|
.finish
|
||
|
ret
|
||
|
; 12365
|
||
|
|
||
|
.Pointers: ; 12365
|
||
|
dw .Pokecenter
|
||
|
dw .ElmLab
|
||
|
dw .HallOfFame
|
||
|
; 1236b
|
||
|
|
||
|
.Pokecenter: ; 1236b
|
||
|
db 0, 1, 3, 5
|
||
|
.ElmLab: ; 1236f
|
||
|
db 0, 1, 3, 5
|
||
|
.HallOfFame: ; 12373
|
||
|
db 0, 2, 4, 5
|
||
|
; 12377
|
||
|
|
||
|
.Jumptable: ; 12377
|
||
|
dw .LoadGFX
|
||
|
dw .PC_LoadBallsOntoMachine
|
||
|
dw .HOF_LoadBallsOntoMachine
|
||
|
dw .PlayHealMusic
|
||
|
dw .HOF_PlaySFX
|
||
|
dw .dummy_5 ; never encountered
|
||
|
; 12383
|
||
|
|
||
|
.LoadGFX: ; 12383
|
||
|
call .LoadPalettes
|
||
|
ld de, .HealMachineGFX
|
||
|
ld hl, VTiles0 tile $7c
|
||
|
lb bc, BANK(.HealMachineGFX), $2
|
||
|
call Request2bpp
|
||
|
ret
|
||
|
; 12393
|
||
|
|
||
|
.PC_LoadBallsOntoMachine: ; 12393
|
||
|
ld hl, Sprites + $80
|
||
|
ld de, .PC_ElmsLab_TileMap
|
||
|
call .PlaceHealingMachineTile
|
||
|
call .PlaceHealingMachineTile
|
||
|
jr .LoadBallsOntoMachine
|
||
|
|
||
|
.HOF_LoadBallsOntoMachine: ; 123a1
|
||
|
ld hl, Sprites + $80
|
||
|
ld de, .HOF_TileMap
|
||
|
|
||
|
.LoadBallsOntoMachine: ; 123a7
|
||
|
ld a, [PartyCount]
|
||
|
ld b, a
|
||
|
.party_loop
|
||
|
call .PlaceHealingMachineTile
|
||
|
push de
|
||
|
ld de, SFX_SECOND_PART_OF_ITEMFINDER
|
||
|
call PlaySFX
|
||
|
pop de
|
||
|
ld c, 30
|
||
|
call DelayFrames
|
||
|
dec b
|
||
|
jr nz, .party_loop
|
||
|
ret
|
||
|
; 123bf
|
||
|
|
||
|
.PlayHealMusic: ; 123bf
|
||
|
ld de, MUSIC_HEAL
|
||
|
call PlayMusic
|
||
|
jp .FlashPalettes8Times
|
||
|
; 123c8
|
||
|
|
||
|
.HOF_PlaySFX: ; 123c8
|
||
|
ld de, SFX_GAME_FREAK_LOGO_GS
|
||
|
call PlaySFX
|
||
|
call .FlashPalettes8Times
|
||
|
call WaitSFX
|
||
|
ld de, SFX_BOOT_PC
|
||
|
call PlaySFX
|
||
|
ret
|
||
|
; 123db
|
||
|
|
||
|
.dummy_5: ; 123db
|
||
|
ret
|
||
|
; 123dc
|
||
|
|
||
|
.PC_ElmsLab_TileMap: ; 123dc
|
||
|
db $20, $22, $7c, $16
|
||
|
db $20, $26, $7c, $16
|
||
|
db $26, $20, $7d, $16
|
||
|
db $26, $28, $7d, $36
|
||
|
db $2b, $20, $7d, $16
|
||
|
db $2b, $28, $7d, $36
|
||
|
db $30, $20, $7d, $16
|
||
|
db $30, $28, $7d, $36
|
||
|
; 123fc
|
||
|
|
||
|
.HealMachineGFX: ; 123fc
|
||
|
INCBIN "gfx/unknown/0123fc.2bpp"
|
||
|
; 1241c
|
||
|
|
||
|
.HOF_TileMap: ; 1241c
|
||
|
db $3c, $51, $7d, $16
|
||
|
db $3c, $56, $7d, $16
|
||
|
db $3b, $4d, $7d, $16
|
||
|
db $3b, $5a, $7d, $16
|
||
|
db $39, $49, $7d, $16
|
||
|
db $39, $5d, $7d, $16
|
||
|
; 12434
|
||
|
|
||
|
.LoadPalettes: ; 12434
|
||
|
call IsCGB
|
||
|
jr nz, .cgb
|
||
|
ld a, %11100000
|
||
|
ld [rOBP1], a
|
||
|
ret
|
||
|
|
||
|
.cgb
|
||
|
ld hl, .palettes
|
||
|
ld de, OBPals + 8 * 6
|
||
|
ld bc, 8
|
||
|
ld a, $5
|
||
|
call FarCopyWRAM
|
||
|
ld a, $1
|
||
|
ld [hCGBPalUpdate], a
|
||
|
ret
|
||
|
; 12451
|
||
|
|
||
|
.palettes: ; 12451
|
||
|
RGB 31, 31, 31
|
||
|
RGB 31, 19, 10
|
||
|
RGB 31, 07, 01
|
||
|
RGB 00, 00, 00
|
||
|
; 12459
|
||
|
|
||
|
.FlashPalettes8Times: ; 12459
|
||
|
ld c, $8
|
||
|
.palette_loop
|
||
|
push bc
|
||
|
call .FlashPalettes
|
||
|
ld c, 10
|
||
|
call DelayFrames
|
||
|
pop bc
|
||
|
dec c
|
||
|
jr nz, .palette_loop
|
||
|
ret
|
||
|
; 12469
|
||
|
|
||
|
.FlashPalettes: ; 12469
|
||
|
call IsCGB
|
||
|
jr nz, .go
|
||
|
ld a, [rOBP1]
|
||
|
xor %00101000
|
||
|
ld [rOBP1], a
|
||
|
ret
|
||
|
|
||
|
.go
|
||
|
ld a, [rSVBK]
|
||
|
push af
|
||
|
ld a, $5
|
||
|
ld [rSVBK], a
|
||
|
|
||
|
ld hl, OBPals + 8 * 6
|
||
|
ld a, [hli]
|
||
|
ld e, a
|
||
|
ld a, [hli]
|
||
|
ld d, a
|
||
|
push de
|
||
|
ld c, $3
|
||
|
.palette_loop_2
|
||
|
ld a, [hli]
|
||
|
ld e, a
|
||
|
ld a, [hld]
|
||
|
ld d, a
|
||
|
dec hl
|
||
|
ld a, d
|
||
|
ld [hld], a
|
||
|
ld a, e
|
||
|
ld [hli], a
|
||
|
rept 3
|
||
|
inc hl
|
||
|
endr
|
||
|
dec c
|
||
|
jr nz, .palette_loop_2
|
||
|
pop de
|
||
|
dec hl
|
||
|
ld a, d
|
||
|
ld [hld], a
|
||
|
ld a, e
|
||
|
ld [hl], a
|
||
|
|
||
|
pop af
|
||
|
ld [rSVBK], a
|
||
|
ld a, $1
|
||
|
ld [hCGBPalUpdate], a
|
||
|
ret
|
||
|
; 124a3
|
||
|
|
||
|
.PlaceHealingMachineTile: ; 124a3
|
||
|
push bc
|
||
|
ld a, [Buffer1]
|
||
|
lb bc, $10, $20
|
||
|
cp $1 ; ElmsLab
|
||
|
jr z, .okay
|
||
|
lb bc, $00, $00
|
||
|
|
||
|
.okay
|
||
|
ld a, [de]
|
||
|
add c
|
||
|
inc de
|
||
|
ld [hli], a
|
||
|
ld a, [de]
|
||
|
add b
|
||
|
inc de
|
||
|
ld [hli], a
|
||
|
ld a, [de]
|
||
|
inc de
|
||
|
ld [hli], a
|
||
|
ld a, [de]
|
||
|
inc de
|
||
|
ld [hli], a
|
||
|
pop bc
|
||
|
ret
|
||
|
; 124c1
|