ref: 6e257bc7cdab3249cc8fbdf4c808f0ebc442022e
dir: /engine/healmachineanim.asm/
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 DmgToCgbObjPal1 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