Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- _AnimateTileset:: ; fc000
- ; Iterate over a given pointer array of
- ; animation functions (one per frame).
- ; Typically in wra1, vra0
- ld a, [TilesetAnim]
- ld e, a
- ld a, [TilesetAnim + 1]
- ld d, a
- ld a, [hTileAnimFrame]
- ld l, a
- inc a
- ld [hTileAnimFrame], a
- ld h, 0
- rept 2
- add hl, hl
- endr
- add hl, de
- ; 2-byte parameter
- ; All functions take input de.
- ld e, [hl]
- inc hl
- ld d, [hl]
- inc hl
- ; Function address
- ld a, [hli]
- ld h, [hl]
- ld l, a
- jp [hl]
- ; fc01b
- Tileset00Anim: ; 0xfc01b
- Tileset02Anim: ; 0xfc01b
- Tileset03Anim: ; 0xfc01b
- dw VTiles2 tile $14, AnimateWaterTile
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, TileAnimationPalette
- dw NULL, WaitTileAnimation
- dw NULL, AnimateFlowerTile
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, StandingTileFrame8
- dw NULL, DoneTileAnimation
- ; 0xfc047
- Tileset25Anim: ; 0xfc047
- dw VTiles2 tile $14, AnimateWaterTile
- dw NULL, WaitTileAnimation
- dw VTiles2 tile $5f, AnimateFountain
- dw NULL, WaitTileAnimation
- dw NULL, TileAnimationPalette
- dw NULL, WaitTileAnimation
- dw NULL, AnimateFlowerTile
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, StandingTileFrame8
- dw NULL, DoneTileAnimation
- ; 0xfc073
- Tileset31Anim: ; 0xfc073
- dw NULL, ForestTreeLeftAnimation
- dw NULL, ForestTreeRightAnimation
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, ForestTreeLeftAnimation2
- dw NULL, ForestTreeRightAnimation2
- dw NULL, AnimateFlowerTile
- dw VTiles2 tile $14, AnimateWaterTile
- dw NULL, TileAnimationPalette
- dw NULL, StandingTileFrame8
- dw NULL, DoneTileAnimation
- ; 0xfc0a3
- Tileset01Anim: ; 0xfc0a3
- dw VTiles2 tile $14, AnimateWaterTile
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, TileAnimationPalette
- dw NULL, WaitTileAnimation
- dw NULL, AnimateFlowerTile
- dw WhirlpoolFrames1, AnimateWhirlpoolTile
- dw WhirlpoolFrames2, AnimateWhirlpoolTile
- dw WhirlpoolFrames3, AnimateWhirlpoolTile
- dw WhirlpoolFrames4, AnimateWhirlpoolTile
- dw NULL, WaitTileAnimation
- dw NULL, StandingTileFrame8
- dw NULL, DoneTileAnimation
- ; 0xfc0d7
- TilesetAnimfc0d7: ; 0xfc0d7
- dw VTiles2 tile $03, WriteTileToBuffer
- dw wTileAnimBuffer, ScrollTileRightLeft
- dw VTiles2 tile $03, WriteTileFromBuffer
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, AnimateFlowerTile
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, DoneTileAnimation
- ; 0xfc103
- TilesetAnimfc103: ; 0xfc103
- dw VTiles2 tile $14, WriteTileToBuffer
- dw wTileAnimBuffer, ScrollTileRightLeft
- dw VTiles2 tile $14, WriteTileFromBuffer
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, DoneTileAnimation
- ; 0xfc12f
- Tileset09Anim: ; 0xfc12f
- dw VTiles2 tile $14, AnimateWaterTile
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, TileAnimationPalette
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, StandingTileFrame8
- dw NULL, DoneTileAnimation
- ; 0xfc15f
- Tileset15Anim: ; 0xfc15f
- dw NULL, SafariFountainAnim2
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, SafariFountainAnim1
- dw NULL, WaitTileAnimation
- dw NULL, StandingTileFrame8
- dw NULL, DoneTileAnimation
- ; 0xfc17f
- TilesetAnimfc17f: ; 0xfc17f
- dw VTiles2 tile $53, WriteTileToBuffer
- dw wTileAnimBuffer, ScrollTileDown
- dw wTileAnimBuffer, ScrollTileDown
- dw VTiles2 tile $53, WriteTileFromBuffer
- dw VTiles2 tile $03, WriteTileToBuffer
- dw wTileAnimBuffer, ScrollTileRightLeft
- dw VTiles2 tile $03, WriteTileFromBuffer
- dw VTiles2 tile $53, WriteTileToBuffer
- dw wTileAnimBuffer, ScrollTileDown
- dw wTileAnimBuffer, ScrollTileDown
- dw VTiles2 tile $53, WriteTileFromBuffer
- dw NULL, DoneTileAnimation
- ; 0xfc1af
- TilesetAnimfc1af: ; 0xfc1af
- dw VTiles2 tile $54, WriteTileToBuffer
- dw wTileAnimBuffer, ScrollTileDown
- dw wTileAnimBuffer, ScrollTileDown
- dw VTiles2 tile $54, WriteTileFromBuffer
- dw NULL, WaitTileAnimation
- dw VTiles2 tile $03, WriteTileToBuffer
- dw wTileAnimBuffer, ScrollTileRightLeft
- dw VTiles2 tile $03, WriteTileFromBuffer
- dw NULL, WaitTileAnimation
- dw VTiles2 tile $54, WriteTileToBuffer
- dw wTileAnimBuffer, ScrollTileDown
- dw wTileAnimBuffer, ScrollTileDown
- dw VTiles2 tile $54, WriteTileFromBuffer
- dw NULL, DoneTileAnimation
- ; 0xfc1e7
- Tileset24Anim: ; 0xfc1e7
- Tileset30Anim: ; 0xfc1e7
- dw VTiles2 tile $14, WriteTileToBuffer
- dw NULL, FlickeringCaveEntrancePalette
- dw wTileAnimBuffer, ScrollTileRightLeft
- dw NULL, FlickeringCaveEntrancePalette
- dw VTiles2 tile $14, WriteTileFromBuffer
- dw NULL, FlickeringCaveEntrancePalette
- dw NULL, TileAnimationPalette
- dw NULL, FlickeringCaveEntrancePalette
- dw VTiles2 tile $40, WriteTileToBuffer
- dw NULL, FlickeringCaveEntrancePalette
- dw wTileAnimBuffer, ScrollTileDown
- dw NULL, FlickeringCaveEntrancePalette
- dw wTileAnimBuffer, ScrollTileDown
- dw NULL, FlickeringCaveEntrancePalette
- dw wTileAnimBuffer, ScrollTileDown
- dw NULL, FlickeringCaveEntrancePalette
- dw VTiles2 tile $40, WriteTileFromBuffer
- dw NULL, FlickeringCaveEntrancePalette
- dw NULL, DoneTileAnimation
- ; 0xfc233
- Tileset29Anim: ; 0xfc233
- dw VTiles2 tile $35, WriteTileToBuffer
- dw NULL, FlickeringCaveEntrancePalette
- dw wTileAnimBuffer, ScrollTileRightLeft
- dw NULL, FlickeringCaveEntrancePalette
- dw VTiles2 tile $35, WriteTileFromBuffer
- dw NULL, FlickeringCaveEntrancePalette
- dw NULL, TileAnimationPalette
- dw NULL, FlickeringCaveEntrancePalette
- dw VTiles2 tile $31, WriteTileToBuffer
- dw NULL, FlickeringCaveEntrancePalette
- dw wTileAnimBuffer, ScrollTileDown
- dw NULL, FlickeringCaveEntrancePalette
- dw wTileAnimBuffer, ScrollTileDown
- dw NULL, FlickeringCaveEntrancePalette
- dw wTileAnimBuffer, ScrollTileDown
- dw NULL, FlickeringCaveEntrancePalette
- dw VTiles2 tile $31, WriteTileFromBuffer
- dw NULL, FlickeringCaveEntrancePalette
- dw NULL, DoneTileAnimation
- ; 0xfc27f
- Tileset23Anim: ; 0xfc27f
- dw SproutPillarTilePointer9, AnimateSproutPillarTile
- dw SproutPillarTilePointer10, AnimateSproutPillarTile
- dw SproutPillarTilePointer7, AnimateSproutPillarTile
- dw SproutPillarTilePointer8, AnimateSproutPillarTile
- dw SproutPillarTilePointer5, AnimateSproutPillarTile
- dw SproutPillarTilePointer6, AnimateSproutPillarTile
- dw SproutPillarTilePointer3, AnimateSproutPillarTile
- dw SproutPillarTilePointer4, AnimateSproutPillarTile
- dw SproutPillarTilePointer1, AnimateSproutPillarTile
- dw SproutPillarTilePointer2, AnimateSproutPillarTile
- dw NULL, StandingTileFrame
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, DoneTileAnimation
- ; 0xfc2bf
- TilesetAnimfc2bf: ; 0xfc2bf
- dw VTiles2 tile $4f, WriteTileToBuffer
- dw wTileAnimBuffer, ScrollTileRightLeft
- dw VTiles2 tile $4f, WriteTileFromBuffer
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, DoneTileAnimation
- ; 0xfc2e7
- Tileset04Anim: ; 0xfc2e7
- Tileset05Anim: ; 0xfc2e7
- Tileset06Anim: ; 0xfc2e7
- Tileset07Anim: ; 0xfc2e7
- Tileset08Anim: ; 0xfc2e7
- Tileset10Anim: ; 0xfc2e7
- Tileset11Anim: ; 0xfc2e7
- Tileset12Anim: ; 0xfc2e7
- Tileset13Anim: ; 0xfc2e7
- Tileset14Anim: ; 0xfc2e7
- Tileset16Anim: ; 0xfc2e7
- Tileset17Anim: ; 0xfc2e7
- Tileset18Anim: ; 0xfc2e7
- Tileset19Anim: ; 0xfc2e7
- Tileset20Anim: ; 0xfc2e7
- Tileset21Anim: ; 0xfc2e7
- Tileset22Anim: ; 0xfc2e7
- Tileset26Anim: ; 0xfc2e7
- Tileset27Anim: ; 0xfc2e7
- Tileset28Anim: ; 0xfc2e7
- Tileset32Anim: ; 0xfc2e7
- Tileset33Anim: ; 0xfc2e7
- Tileset34Anim: ; 0xfc2e7
- Tileset35Anim: ; 0xfc2e7
- Tileset36Anim: ; 0xfc2e7 ; NEW STUFF HERE
- dw NULL, SafariFountainAnim2b
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, WaitTileAnimation
- dw NULL, SafariFountainAnim1b
- dw NULL, WaitTileAnimation
- dw NULL, StandingTileFrame
- dw NULL, DoneTileAnimation
- ; 0xfc2fb
- DoneTileAnimation: ; fc2fb
- ; Reset the animation command loop.
- xor a
- ld [hTileAnimFrame], a
- WaitTileAnimation: ; fc2fe
- ; Do nothing this frame.
- ret
- ; fc2ff
- StandingTileFrame8: ; fc2ff
- ld a, [TileAnimationTimer]
- inc a
- and a, 7
- ld [TileAnimationTimer], a
- ret
- ; fc309
- ScrollTileRightLeft: ; fc309
- ; Scroll right for 4 ticks, then left for 4 ticks.
- ld a, [TileAnimationTimer]
- inc a
- and 7
- ld [TileAnimationTimer], a
- and 4
- jr nz, ScrollTileLeft
- jr ScrollTileRight
- ; fc318
- ScrollTileUpDown: ; fc318
- ; Scroll up for 4 ticks, then down for 4 ticks.
- ld a, [TileAnimationTimer]
- inc a
- and 7
- ld [TileAnimationTimer], a
- and 4
- jr nz, ScrollTileDown
- jr ScrollTileUp
- ; fc327
- ScrollTileLeft: ; fc327
- ld h, d
- ld l, e
- ld c, 4
- .loop
- rept 4
- ld a, [hl]
- rlca
- ld [hli], a
- endr
- dec c
- jr nz, .loop
- ret
- ; fc33b
- ScrollTileRight: ; fc33b
- ld h, d
- ld l, e
- ld c, 4
- .loop
- rept 4
- ld a, [hl]
- rrca
- ld [hli], a
- endr
- dec c
- jr nz, .loop
- ret
- ; fc34f
- ScrollTileUp: ; fc34f
- ld h, d
- ld l, e
- ld d, [hl]
- inc hl
- ld e, [hl]
- ld bc, $e
- add hl, bc
- ld a, 4
- .loop
- ld c, [hl]
- ld [hl], e
- dec hl
- ld b, [hl]
- ld [hl], d
- dec hl
- ld e, [hl]
- ld [hl], c
- dec hl
- ld d, [hl]
- ld [hl], b
- dec hl
- dec a
- jr nz, .loop
- ret
- ; fc36a
- ScrollTileDown: ; fc36a
- ld h, d
- ld l, e
- ld de, $e
- push hl
- add hl, de
- ld d, [hl]
- inc hl
- ld e, [hl]
- pop hl
- ld a, 4
- .loop
- ld b, [hl]
- ld [hl], d
- inc hl
- ld c, [hl]
- ld [hl], e
- inc hl
- ld d, [hl]
- ld [hl], b
- inc hl
- ld e, [hl]
- ld [hl], c
- inc hl
- dec a
- jr nz, .loop
- ret
- ; fc387
- AnimateFountain: ; fc387
- ld hl, [sp+0]
- ld b, h
- ld c, l
- ld hl, .frames
- ld a, [TileAnimationTimer]
- and 7
- add a
- add l
- ld l, a
- jr nc, .okay
- inc h
- .okay
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld sp, hl
- ld l, e
- ld h, d
- jp WriteTile
- .frames
- dw .frame1
- dw .frame2
- dw .frame3
- dw .frame4
- dw .frame3
- dw .frame4
- dw .frame5
- dw .frame1
- .frame1 INCBIN "gfx/tilesets/fountain/1.2bpp"
- .frame2 INCBIN "gfx/tilesets/fountain/2.2bpp"
- .frame3 INCBIN "gfx/tilesets/fountain/3.2bpp"
- .frame4 INCBIN "gfx/tilesets/fountain/4.2bpp"
- .frame5 INCBIN "gfx/tilesets/fountain/5.2bpp"
- ; fc402
- AnimateWaterTile: ; fc402
- ; Draw a water tile for the current frame in VRAM tile at de.
- ; Save sp in bc (see WriteTile).
- ld hl, [sp+0]
- ld b, h
- ld c, l
- ld a, [TileAnimationTimer]
- ; 4 tile graphics, updated every other frame.
- and 3 << 1
- ; 2 x 8 = 16 bytes per tile
- rept 3
- add a
- endr
- add WaterTileFrames % $100
- ld l, a
- ld a, 0
- adc WaterTileFrames / $100
- ld h, a
- ; Stack now points to the start of the tile for this frame.
- ld sp, hl
- ld l, e
- ld h, d
- jp WriteTile
- ; fc41c
- WaterTileFrames: ; fc41c
- INCBIN "gfx/tilesets/water.2bpp"
- ; fc45c
- ForestTreeLeftAnimation: ; fc45c
- ld hl, [sp+0]
- ld b, h
- ld c, l
- ; Only during the Celebi event.
- ld a, [wCelebiEvent]
- bit 2, a
- jr nz, .asm_fc46c
- ld hl, ForestTreeLeftFrames
- jr .asm_fc47d
- .asm_fc46c
- ld a, [TileAnimationTimer]
- call GetForestTreeFrame
- rept 3
- add a
- endr
- add ForestTreeLeftFrames % $100
- ld l, a
- ld a, 0
- adc ForestTreeLeftFrames / $100
- ld h, a
- .asm_fc47d
- ld sp, hl
- ld hl, VTiles2 tile $0c
- jp WriteTile
- ; fc484
- ForestTreeLeftFrames: ; fc484
- INCBIN "gfx/tilesets/forest-tree/1.2bpp"
- INCBIN "gfx/tilesets/forest-tree/2.2bpp"
- ; fc4a4
- ForestTreeRightFrames: ; fc4a4
- INCBIN "gfx/tilesets/forest-tree/3.2bpp"
- INCBIN "gfx/tilesets/forest-tree/4.2bpp"
- ; fc4c4
- ForestTreeRightAnimation: ; fc4c4
- ld hl, [sp+0]
- ld b, h
- ld c, l
- ; Only during the Celebi event.
- ld a, [wCelebiEvent]
- bit 2, a
- jr nz, .asm_fc4d4
- ld hl, ForestTreeRightFrames
- jr .asm_fc4eb
- .asm_fc4d4
- ld a, [TileAnimationTimer]
- call GetForestTreeFrame
- rept 3
- add a
- endr
- add ForestTreeLeftFrames % $100
- ld l, a
- ld a, 0
- adc ForestTreeLeftFrames / $100
- ld h, a
- push bc
- ld bc, ForestTreeRightFrames - ForestTreeLeftFrames
- add hl, bc
- pop bc
- .asm_fc4eb
- ld sp, hl
- ld hl, VTiles2 tile $0f
- jp WriteTile
- ; fc4f2
- ForestTreeLeftAnimation2: ; fc4f2
- ld hl, [sp+0]
- ld b, h
- ld c, l
- ; Only during the Celebi event.
- ld a, [wCelebiEvent]
- bit 2, a
- jr nz, .asm_fc502
- ld hl, ForestTreeLeftFrames
- jr .asm_fc515
- .asm_fc502
- ld a, [TileAnimationTimer]
- call GetForestTreeFrame
- xor 2
- rept 3
- add a
- endr
- add ForestTreeLeftFrames % $100
- ld l, a
- ld a, 0
- adc ForestTreeLeftFrames / $100
- ld h, a
- .asm_fc515
- ld sp, hl
- ld hl, VTiles2 tile $0c
- jp WriteTile
- ; fc51c
- ForestTreeRightAnimation2: ; fc51c
- ld hl, [sp+0]
- ld b, h
- ld c, l
- ; Only during the Celebi event.
- ld a, [wCelebiEvent]
- bit 2, a
- jr nz, .asm_fc52c
- ld hl, ForestTreeRightFrames
- jr .asm_fc545
- .asm_fc52c
- ld a, [TileAnimationTimer]
- call GetForestTreeFrame
- xor 2
- rept 3
- add a
- endr
- add ForestTreeLeftFrames % $100
- ld l, a
- ld a, 0
- adc ForestTreeLeftFrames / $100
- ld h, a
- push bc
- ld bc, ForestTreeRightFrames - ForestTreeLeftFrames
- add hl, bc
- pop bc
- .asm_fc545
- ld sp, hl
- ld hl, VTiles2 tile $0f
- jp WriteTile
- ; fc54c
- GetForestTreeFrame: ; fc54c
- ; Return 0 if a is even, or 2 if odd.
- and a
- jr z, .even
- cp 1
- jr z, .odd
- cp 2
- jr z, .even
- cp 3
- jr z, .odd
- cp 4
- jr z, .even
- cp 5
- jr z, .odd
- cp 6
- jr z, .even
- .odd
- ld a, 2
- scf
- ret
- .even
- xor a
- ret
- ; fc56d
- AnimateFlowerTile: ; fc56d
- ; No parameters.
- ; Save sp in bc (see WriteTile).
- ld hl, [sp+0]
- ld b, h
- ld c, l
- ; Alternate tile graphic every other frame
- ld a, [TileAnimationTimer]
- and 1 << 1
- ld e, a
- ; CGB has different color mappings for flowers.
- ld a, [hCGB]
- and 1
- add e
- swap a ; << 4 (16 bytes)
- ld e, a
- ld d, 0
- ld hl, FlowerTileFrames
- add hl, de
- ld sp, hl
- ld hl, VTiles2 + $30 ; tile 4
- jp WriteTile
- ; fc58c
- FlowerTileFrames: ; fc58c
- INCBIN "gfx/tilesets/flower/dmg_1.2bpp"
- INCBIN "gfx/tilesets/flower/cgb_1.2bpp"
- INCBIN "gfx/tilesets/flower/dmg_2.2bpp"
- INCBIN "gfx/tilesets/flower/cgb_2.2bpp"
- ; fc5cc
- SafariFountainAnim1: ; fc5cc
- ; Splash in the bottom-right corner of the fountain.
- ld hl, [sp+0]
- ld b, h
- ld c, l
- ld a, [TileAnimationTimer]
- and 6
- srl a
- rept 2
- inc a
- endr
- and 3
- swap a
- ld e, a
- ld d, 0
- ld hl, SafariFountainFrames
- add hl, de
- ld sp, hl
- ld hl, VTiles2 tile $5b
- jp WriteTile
- ; fc5eb
- SafariFountainAnim2: ; fc5eb
- ; Splash in the top-left corner of the fountain.
- ld hl, [sp+0]
- ld b, h
- ld c, l
- ld a, [TileAnimationTimer]
- and 6
- rept 3
- add a
- endr
- ld e, a
- ld d, 0
- ld hl, SafariFountainFrames
- add hl, de
- ld sp, hl
- ld hl, VTiles2 tile $38
- jp WriteTile
- ; fc605
- SafariFountainAnim1b: ; fc5cc
- ; Splash in the bottom-right corner of the fountain.
- ld hl, [sp+0]
- ld b, h
- ld c, l
- ld a, [TileAnimationTimer]
- and 6
- srl a
- rept 2
- inc a
- endr
- and 3
- swap a
- ld e, a
- ld d, 0
- ld hl, SafariFountainFrames
- add hl, de
- ld sp, hl
- ld hl, VTiles2 tile $6
- jp WriteTile
- ; fc5eb
- SafariFountainAnim2b: ; fc5eb ; NEW STUFF HERE
- ; Splash in the top-left corner of the fountain.
- ld hl, [sp+0]
- ld b, h
- ld c, l
- ld a, [TileAnimationTimer]
- and 6
- rept 3
- add a
- endr
- ld e, a
- ld d, 0
- ld hl, SafariFountainFrames
- add hl, de
- ld sp, hl
- ld hl, VTiles2 tile $38
- jp WriteTile
- SafariFountainFrames: ; fc605
- INCBIN "gfx/tilesets/safari/1.2bpp"
- INCBIN "gfx/tilesets/safari/2.2bpp"
- INCBIN "gfx/tilesets/safari/3.2bpp"
- INCBIN "gfx/tilesets/safari/4.2bpp"
- ; fc645
- AnimateSproutPillarTile: ; fc645
- ; Read from struct at de:
- ; Destination (VRAM)
- ; Address of the first tile in the frame array
- ld hl, [sp+0]
- ld b, h
- ld c, l
- ld a, [TileAnimationTimer]
- and 7
- ; Get frame index a
- ld hl, .frames
- add l
- ld l, a
- ld a, 0
- adc h
- ld h, a
- ld a, [hl]
- ; Destination
- ld l, e
- ld h, d
- ld e, [hl]
- inc hl
- ld d, [hl]
- inc hl
- ; Add the frame index to the starting address
- add [hl]
- inc hl
- ld h, [hl]
- ld l, a
- ld a, 0
- adc h
- ld h, a
- ld sp, hl
- ld l, e
- ld h, d
- jr WriteTile
- .frames
- db $00, $10, $20, $30, $40, $30, $20, $10
- ; fc673
- StandingTileFrame: ; fc673
- ld hl, TileAnimationTimer
- inc [hl]
- ret
- ; fc678
- AnimateWhirlpoolTile: ; fc678
- ; Update whirlpool tile using struct at de.
- ; Struct:
- ; VRAM address
- ; Address of the first tile
- ; Only does one of 4 tiles at a time.
- ; Save sp in bc (see WriteTile).
- ld hl, [sp+0]
- ld b, h
- ld c, l
- ; de = VRAM address
- ld l, e
- ld h, d
- ld e, [hl]
- inc hl
- ld d, [hl]
- inc hl
- ; Tile address is now at hl.
- ; Get the tile for this frame.
- ld a, [TileAnimationTimer]
- and %11 ; 4 frames x2
- swap a ; * 16 bytes per tile
- add [hl]
- inc hl
- ld h, [hl]
- ld l, a
- ld a, 0
- adc h
- ld h, a
- ; Stack now points to the desired frame.
- ld sp, hl
- ld l, e
- ld h, d
- jr WriteTile
- ; fc696
- WriteTileFromBuffer: ; fc696
- ; Write tiledata at wTileAnimBuffer to de.
- ; wTileAnimBuffer is loaded to sp for WriteTile.
- ld hl, [sp+0]
- ld b, h
- ld c, l
- ld hl, wTileAnimBuffer
- ld sp, hl
- ld h, d
- ld l, e
- jr WriteTile
- ; fc6a2
- WriteTileToBuffer: ; fc6a2
- ; Write tiledata de to wTileAnimBuffer.
- ; de is loaded to sp for WriteTile.
- ld hl, [sp+0]
- ld b, h
- ld c, l
- ld h, d
- ld l, e
- ld sp, hl
- ld hl, wTileAnimBuffer
- ; fallthrough
- WriteTile: ; fc6ac
- ; Write one 8x8 tile ($10 bytes) from sp to hl.
- ; Warning: sp is saved in bc so we can abuse pop.
- ; sp is restored to address bc. Save sp in bc before calling.
- pop de
- ld [hl], e
- inc hl
- ld [hl], d
- rept 7
- pop de
- inc hl
- ld [hl], e
- inc hl
- ld [hl], d
- endr
- ; restore sp
- ld h, b
- ld l, c
- ld sp, hl
- ret
- ; fc6d7
- TileAnimationPalette: ; fc6d7
- ; Transition between color values 0-2 for color 0 in palette 3.
- ; No palette changes on DMG.
- ld a, [hCGB]
- and a
- ret z
- ; We don't want to mess with non-standard palettes.
- ld a, [rBGP] ; BGP
- cp %11100100
- ret nz
- ; Only update on even frames.
- ld a, [TileAnimationTimer]
- ld l, a
- and 1 ; odd
- ret nz
- ; Ready for BGPD input...
- ld a, %10011000 ; auto increment, index $18 (pal 3 color 0)
- ld [rBGPI], a
- ld a, [rSVBK]
- push af
- ld a, 5 ; wra5: gfx
- ld [rSVBK], a
- ; Update color 0 in order 0 1 2 1
- ld a, l
- and %110 ; frames 0 2 4 6
- jr z, .color0
- cp 4
- jr z, .color2
- .color1
- ld hl, UnknBGPals + $1a ; pal 3 color 1
- ld a, [hli]
- ld [rBGPD], a
- ld a, [hli]
- ld [rBGPD], a
- jr .end
- .color0
- ld hl, UnknBGPals + $18 ; pal 3 color 0
- ld a, [hli]
- ld [rBGPD], a
- ld a, [hli]
- ld [rBGPD], a
- jr .end
- .color2
- ld hl, UnknBGPals + $1c ; pal 3 color 2
- ld a, [hli]
- ld [rBGPD], a
- ld a, [hli]
- ld [rBGPD], a
- .end
- pop af
- ld [rSVBK], a
- ret
- ; fc71e
- FlickeringCaveEntrancePalette: ; fc71e
- ; No palette changes on DMG.
- ld a, [hCGB]
- and a
- ret z
- ; We don't want to mess with non-standard palettes.
- ld a, [rBGP]
- cp %11100100
- ret nz
- ; We only want to be here if we're in a dark cave.
- ld a, [wTimeOfDayPalset]
- cp $ff ; 3,3,3,3
- ret nz
- ld a, [rSVBK]
- push af
- ld a, 5 ; wra5: gfx
- ld [rSVBK], a
- ; Ready for BGPD input...
- ld a, %10100000 ; auto-increment, index $20 (pal 4 color 0)
- ld [rBGPI], a
- ld a, [hVBlankCounter]
- and %00000010
- jr nz, .bit1set
- ld hl, UnknBGPals + $20 ; pal 4 color 0
- jr .okay
- .bit1set
- ld hl, UnknBGPals + $22 ; pal 4 color 2
- .okay
- ld a, [hli]
- ld [rBGPD], a
- ld a, [hli]
- ld [rBGPD], a
- pop af
- ld [rSVBK], a
- ret
- ; fc750
- SproutPillarTilePointer1: dw VTiles2 tile $2d, SproutPillarTile1
- SproutPillarTilePointer2: dw VTiles2 tile $2f, SproutPillarTile2
- SproutPillarTilePointer3: dw VTiles2 tile $3d, SproutPillarTile3
- SproutPillarTilePointer4: dw VTiles2 tile $3f, SproutPillarTile4
- SproutPillarTilePointer5: dw VTiles2 tile $3c, SproutPillarTile5
- SproutPillarTilePointer6: dw VTiles2 tile $2c, SproutPillarTile6
- SproutPillarTilePointer7: dw VTiles2 tile $4d, SproutPillarTile7
- SproutPillarTilePointer8: dw VTiles2 tile $4f, SproutPillarTile8
- SproutPillarTilePointer9: dw VTiles2 tile $5d, SproutPillarTile9
- SproutPillarTilePointer10: dw VTiles2 tile $5f, SproutPillarTile10
- SproutPillarTile1: INCBIN "gfx/tilesets/sprout-pillar/1.2bpp"
- SproutPillarTile2: INCBIN "gfx/tilesets/sprout-pillar/2.2bpp"
- SproutPillarTile3: INCBIN "gfx/tilesets/sprout-pillar/3.2bpp"
- SproutPillarTile4: INCBIN "gfx/tilesets/sprout-pillar/4.2bpp"
- SproutPillarTile5: INCBIN "gfx/tilesets/sprout-pillar/5.2bpp"
- SproutPillarTile6: INCBIN "gfx/tilesets/sprout-pillar/6.2bpp"
- SproutPillarTile7: INCBIN "gfx/tilesets/sprout-pillar/7.2bpp"
- SproutPillarTile8: INCBIN "gfx/tilesets/sprout-pillar/8.2bpp"
- SproutPillarTile9: INCBIN "gfx/tilesets/sprout-pillar/9.2bpp"
- SproutPillarTile10: INCBIN "gfx/tilesets/sprout-pillar/10.2bpp"
- ; fca98
- WhirlpoolFrames1: dw VTiles2 tile $32, WhirlpoolTiles1
- WhirlpoolFrames2: dw VTiles2 tile $33, WhirlpoolTiles2
- WhirlpoolFrames3: dw VTiles2 tile $42, WhirlpoolTiles3
- WhirlpoolFrames4: dw VTiles2 tile $43, WhirlpoolTiles4
- ; fcaa8
- WhirlpoolTiles1: INCBIN "gfx/tilesets/whirlpool/1.2bpp"
- WhirlpoolTiles2: INCBIN "gfx/tilesets/whirlpool/2.2bpp"
- WhirlpoolTiles3: INCBIN "gfx/tilesets/whirlpool/3.2bpp"
- WhirlpoolTiles4: INCBIN "gfx/tilesets/whirlpool/4.2bpp"
- ; fcba8
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement