Organize the engine/ directory, take 3

Renamed `title` to `movies`.
Moved some functions from `engine/routines/` to their fitting
directories, and cleaned up the base `engine/` directory.
Moved `engine/pokemon/tmhm.asm` back to `engine/items/`.

Made a new subdirectory:
* engine/tilesets: Contains all map-related graphics routines.
This commit is contained in:
mid-kid
2018-03-25 16:18:33 +02:00
parent 60e21a8663
commit 0d9241889f
36 changed files with 648 additions and 648 deletions

621
engine/movie/credits.asm Normal file

File diff suppressed because it is too large Load Diff

2199
engine/movie/crystal_intro.asm Executable file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,368 @@
EvolutionAnimation: ; 4e5e1
push hl
push de
push bc
ld a, [wCurSpecies]
push af
ld a, [rOBP0]
push af
ld a, [wBaseDexNo]
push af
call .EvolutionAnimation
pop af
ld [wBaseDexNo], a
pop af
ld [rOBP0], a
pop af
ld [wCurSpecies], a
pop bc
pop de
pop hl
ld a, [wEvolutionCanceled]
and a
ret z
scf
ret
; 4e607
.EvolutionAnimation: ; 4e607
ld a, %11100100
ld [rOBP0], a
ld de, MUSIC_NONE
call PlayMusic
farcall ClearSpriteAnims
ld de, .GFX
ld hl, vTiles0
lb bc, BANK(.GFX), 8
call Request2bpp
xor a
ld [wLowHealthAlarm], a
call WaitBGMap
xor a
ld [hBGMapMode], a
ld a, [wEvolutionOldSpecies]
ld [wPlayerHPPal], a
ld c, $0
call .GetSGBLayout
ld a, [wEvolutionOldSpecies]
ld [wCurPartySpecies], a
ld [wCurSpecies], a
call .PlaceFrontpic
ld de, vTiles2
ld hl, vTiles2 tile $31
ld bc, 7 * 7
call Request2bpp
ld a, 7 * 7
ld [wEvolutionPicOffset], a
call .ReplaceFrontpic
ld a, [wEvolutionNewSpecies]
ld [wCurPartySpecies], a
ld [wCurSpecies], a
call .LoadFrontpic
ld a, [wEvolutionOldSpecies]
ld [wCurPartySpecies], a
ld [wCurSpecies], a
ld a, $1
ld [hBGMapMode], a
call .check_statused
jr c, .skip_cry
ld a, [wEvolutionOldSpecies]
call PlayMonCry
.skip_cry
ld de, MUSIC_EVOLUTION
call PlayMusic
ld c, 80
call DelayFrames
ld c, $1
call .GetSGBLayout
call .AnimationSequence
jr c, .cancel_evo
ld a, -7 * 7
ld [wEvolutionPicOffset], a
call .ReplaceFrontpic
xor a
ld [wEvolutionCanceled], a
ld a, [wEvolutionNewSpecies]
ld [wPlayerHPPal], a
ld c, $0
call .GetSGBLayout
call .PlayEvolvedSFX
farcall ClearSpriteAnims
call .check_statused
jr c, .no_anim
ld a, [wBoxAlignment]
push af
ld a, $1
ld [wBoxAlignment], a
ld a, [wCurPartySpecies]
push af
ld a, [wPlayerHPPal]
ld [wCurPartySpecies], a
hlcoord 7, 2
ld d, $0
ld e, ANIM_MON_EVOLVE
predef AnimateFrontpic
pop af
ld [wCurPartySpecies], a
pop af
ld [wBoxAlignment], a
ret
.no_anim
ret
.cancel_evo
ld a, $1
ld [wEvolutionCanceled], a
ld a, [wEvolutionOldSpecies]
ld [wPlayerHPPal], a
ld c, $0
call .GetSGBLayout
call .PlayEvolvedSFX
farcall ClearSpriteAnims
call .check_statused
ret c
ld a, [wPlayerHPPal]
call PlayMonCry
ret
; 4e703
.GetSGBLayout: ; 4e703
ld b, SCGB_EVOLUTION
jp GetSGBLayout
; 4e708
.PlaceFrontpic: ; 4e708
call GetBaseData
hlcoord 7, 2
jp PrepMonFrontpic
; 4e711
.LoadFrontpic: ; 4e711
call GetBaseData
ld a, $1
ld [wBoxAlignment], a
ld de, vTiles2
predef GetAnimatedFrontpic
xor a
ld [wBoxAlignment], a
ret
; 4e726
.AnimationSequence: ; 4e726
call ClearJoypad
lb bc, 1, 2 * 7 ; flash b times, wait c frames in between
.loop
push bc
call .WaitFrames_CheckPressedB
pop bc
jr c, .exit_sequence
push bc
call .Flash
pop bc
inc b
dec c
dec c
jr nz, .loop
and a
ret
.exit_sequence
scf
ret
; 4e741
.Flash: ; 4e741
ld a, -7 * 7 ; new stage
ld [wEvolutionPicOffset], a
call .ReplaceFrontpic
ld a, 7 * 7 ; previous stage
ld [wEvolutionPicOffset], a
call .ReplaceFrontpic
dec b
jr nz, .Flash
ret
; 4e755
.ReplaceFrontpic: ; 4e755
push bc
xor a
ld [hBGMapMode], a
hlcoord 7, 2
lb bc, 7, 7
ld de, SCREEN_WIDTH - 7
.loop1
push bc
.loop2
ld a, [wEvolutionPicOffset]
add [hl]
ld [hli], a
dec c
jr nz, .loop2
pop bc
add hl, de
dec b
jr nz, .loop1
ld a, $1
ld [hBGMapMode], a
call WaitBGMap
pop bc
ret
; 4e779
.WaitFrames_CheckPressedB: ; 4e779
call DelayFrame
push bc
call JoyTextDelay
ld a, [hJoyDown]
pop bc
and B_BUTTON
jr nz, .pressed_b
.loop3
dec c
jr nz, .WaitFrames_CheckPressedB
and a
ret
.pressed_b
ld a, [wForceEvolution]
and a
jr nz, .loop3
scf
ret
; 4e794
.check_statused ; 4e794
ld a, [wCurPartyMon]
ld hl, wPartyMon1Species
call GetPartyLocation
ld b, h
ld c, l
farcall CheckFaintedFrzSlp
ret
; 4e7a6
.PlayEvolvedSFX: ; 4e7a6
ld a, [wEvolutionCanceled]
and a
ret nz
ld de, SFX_EVOLVED
call PlaySFX
ld hl, wJumptableIndex
ld a, [hl]
push af
ld [hl], $0
.loop4
call .balls_of_light
jr nc, .done
call .AnimateBallsOfLight
jr .loop4
.done
ld c, 32
.loop5
call .AnimateBallsOfLight
dec c
jr nz, .loop5
pop af
ld [wJumptableIndex], a
ret
; 4e7cf
.balls_of_light ; 4e7cf
ld hl, wJumptableIndex
ld a, [hl]
cp 32
ret nc
ld d, a
inc [hl]
and $1
jr nz, .done_balls
ld e, $0
call .GenerateBallOfLight
ld e, $10
call .GenerateBallOfLight
.done_balls
scf
ret
; 4e7e8
.GenerateBallOfLight: ; 4e7e8
push de
depixel 9, 11
ld a, SPRITE_ANIM_INDEX_EVOLUTION_BALL_OF_LIGHT
call _InitSpriteAnimStruct
ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
add hl, bc
ld a, [wJumptableIndex]
and %1110
sla a
pop de
add e
ld [hl], a
ld hl, SPRITEANIMSTRUCT_TILE_ID
add hl, bc
ld [hl], $0
ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld [hl], $10
ret
; 4e80c
.AnimateBallsOfLight: ; 4e80c
push bc
callfar PlaySpriteAnimations
; a = (([hVBlankCounter] + 4) / 2) % NUM_PALETTES
ld a, [hVBlankCounter]
and %1110
srl a
inc a
inc a
and $7
ld b, a
ld hl, wVirtualOAMSprite00Attributes
ld c, NUM_SPRITE_OAM_STRUCTS
.loop6
ld a, [hl]
or b
ld [hli], a ; attributes
rept SPRITEOAMSTRUCT_LENGTH + -1
inc hl
endr
dec c
jr nz, .loop6
pop bc
call DelayFrame
ret
; 4e831
.GFX:
INCBIN "gfx/evo/bubble_large.2bpp"
INCBIN "gfx/evo/bubble.2bpp"

149
engine/movie/gbc_only.asm Normal file
View File

@@ -0,0 +1,149 @@
GBCOnlyScreen: ; 4ea82
ld a, [hCGB]
and a
ret nz
ld de, MUSIC_NONE
call PlayMusic
call ClearTileMap
ld hl, GBCOnlyGFX
ld de, wGBCOnlyDecompressBuffer
ld a, [rSVBK]
push af
ld a, 0 ; this has the same effect as selecting bank 1
ld [rSVBK], a
call Decompress
pop af
ld [rSVBK], a
ld de, wGBCOnlyDecompressBuffer
ld hl, vTiles2
lb bc, BANK(GBCOnlyGFX), 84
call Get2bpp
ld de, Font
ld hl, vTiles1
lb bc, BANK(Font), $80
call Get1bpp
call DrawGBCOnlyScreen
call WaitBGMap
; better luck next time
.loop
call DelayFrame
jr .loop
; 4eac5
DrawGBCOnlyScreen: ; 4eac5
call DrawGBCOnlyBorder
; Pokemon
hlcoord 3, 2
ld b, 14
ld c, 4
ld a, $8
call DrawGBCOnlyGraphic
; Crystal
hlcoord 5, 6
ld b, 10
ld c, 2
ld a, $40
call DrawGBCOnlyGraphic
ld de, GBCOnlyString
hlcoord 1, 10
call PlaceString
ret
; 4eaea
DrawGBCOnlyBorder: ; 4eaea
hlcoord 0, 0
ld [hl], 0 ; top-left
inc hl
ld a, 1 ; top
call .FillRow
ld [hl], 2 ; top-right
hlcoord 0, 1
ld a, 3 ; left
call .FillColumn
hlcoord 19, 1
ld a, 4 ; right
call .FillColumn
hlcoord 0, 17
ld [hl], 5 ; bottom-left
inc hl
ld a, 6 ; bottom
call .FillRow
ld [hl], 7 ; bottom-right
ret
; 4eb15
.FillRow: ; 4eb15
ld c, SCREEN_WIDTH - 2
.next_column
ld [hli], a
dec c
jr nz, .next_column
ret
; 4eb1c
.FillColumn: ; 4eb1c
ld de, SCREEN_WIDTH
ld c, SCREEN_HEIGHT - 2
.next_row
ld [hl], a
add hl, de
dec c
jr nz, .next_row
ret
; 4eb27
DrawGBCOnlyGraphic: ; 4eb27
ld de, SCREEN_WIDTH
.y
push bc
push hl
.x
ld [hli], a
inc a
dec b
jr nz, .x
pop hl
add hl, de
pop bc
dec c
jr nz, .y
ret
; 4eb38
GBCOnlyString: ; 4eb38
db "This Game Pak is"
next "designed only for"
next "use on the"
next "Game Boy Color.@"
; 4eb76
GBCOnlyGFX: ; 4eb76
INCBIN "gfx/sgb/gbc_only.2bpp.lz"
; 4f0bc

View File

@@ -0,0 +1,79 @@
InitDisplayForHallOfFame: ; 4e881
call ClearBGPalettes
call ClearTileMap
call ClearSprites
call DisableLCD
call LoadStandardFont
call LoadFontsBattleExtra
hlbgcoord 0, 0
ld bc, vBGMap1 - vBGMap0
ld a, " "
call ByteFill
hlcoord 0, 0, wAttrMap
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
xor a
call ByteFill
xor a
ld [hSCY], a
ld [hSCX], a
call EnableLCD
ld hl, .SavingRecordDontTurnOff
call PrintText
call WaitBGMap2
call SetPalettes
ret
.SavingRecordDontTurnOff: ; 0x4e8bd
; SAVING RECORD… DON'T TURN OFF!
text_jump UnknownText_0x1bd39e
db "@"
InitDisplayForRedCredits: ; 4e8c2
call ClearBGPalettes
call ClearTileMap
call ClearSprites
call DisableLCD
call LoadStandardFont
call LoadFontsBattleExtra
hlbgcoord 0, 0
ld bc, vBGMap1 - vBGMap0
ld a, " "
call ByteFill
hlcoord 0, 0, wAttrMap
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
xor a
call ByteFill
ld hl, wBGPals1
ld c, 4 tiles
.load_white_palettes
ld a, LOW(PALRGB_WHITE)
ld [hli], a
ld a, HIGH(PALRGB_WHITE)
ld [hli], a
dec c
jr nz, .load_white_palettes
xor a
ld [hSCY], a
ld [hSCX], a
call EnableLCD
call WaitBGMap2
call SetPalettes
ret
ResetDisplayBetweenHallOfFameMons: ; 4e906
ld a, [rSVBK]
push af
ld a, BANK(wDecompressScratch)
ld [rSVBK], a
ld hl, wDecompressScratch
ld bc, wScratchAttrMap - wDecompressScratch
ld a, " "
call ByteFill
hlbgcoord 0, 0
ld de, wDecompressScratch
ld b, 0
ld c, 4 tiles
call Request2bpp
pop af
ld [rSVBK], a
ret

402
engine/movie/title.asm Normal file
View File

@@ -0,0 +1,402 @@
_TitleScreen: ; 10ed67
call ClearBGPalettes
call ClearSprites
call ClearTileMap
; Turn BG Map update off
xor a
ld [hBGMapMode], a
; Reset timing variables
ld hl, wJumptableIndex
ld [hli], a ; wJumptableIndex
ld [hli], a ; wIntroSceneFrameCounter
ld [hli], a ; wTitleScreenTimer
ld [hl], a ; wTitleScreenTimer + 1
; Turn LCD off
call DisableLCD
; VRAM bank 1
ld a, 1
ld [rVBK], a
; Decompress running Suicune gfx
ld hl, TitleSuicuneGFX
ld de, vTiles1
call Decompress
; Clear screen palettes
hlbgcoord 0, 0
ld bc, 20 * BG_MAP_WIDTH
xor a
call ByteFill
; Fill tile palettes:
; BG Map 1:
; line 0 (copyright)
hlbgcoord 0, 0, vBGMap1
ld bc, BG_MAP_WIDTH
ld a, 7 ; palette
call ByteFill
; BG Map 0:
; Apply logo gradient:
; lines 3-4
hlbgcoord 0, 3
ld bc, 2 * BG_MAP_WIDTH
ld a, 2
call ByteFill
; line 5
hlbgcoord 0, 5
ld bc, BG_MAP_WIDTH
ld a, 3
call ByteFill
; line 6
hlbgcoord 0, 6
ld bc, BG_MAP_WIDTH
ld a, 4
call ByteFill
; line 7
hlbgcoord 0, 7
ld bc, BG_MAP_WIDTH
ld a, 5
call ByteFill
; lines 8-9
hlbgcoord 0, 8
ld bc, 2 * BG_MAP_WIDTH
ld a, 6
call ByteFill
; 'CRYSTAL VERSION'
hlbgcoord 5, 9
ld bc, NAME_LENGTH ; length of version text
ld a, 1
call ByteFill
; Suicune gfx
hlbgcoord 0, 12
ld bc, 6 * BG_MAP_WIDTH ; the rest of the screen
ld a, 0 | VRAM_BANK_1
call ByteFill
; Back to VRAM bank 0
ld a, $0
ld [rVBK], a
; Decompress logo
ld hl, TitleLogoGFX
ld de, vTiles1
call Decompress
; Decompress background crystal
ld hl, TitleCrystalGFX
ld de, vTiles0
call Decompress
; Clear screen tiles
hlbgcoord 0, 0
ld bc, 64 * BG_MAP_WIDTH
ld a, " "
call ByteFill
; Draw Pokemon logo
hlcoord 0, 3
lb bc, 7, 20
ld d, $80
ld e, $14
call DrawTitleGraphic
; Draw copyright text
hlbgcoord 3, 0, vBGMap1
lb bc, 1, 13
ld d, $c
ld e, $10
call DrawTitleGraphic
; Initialize running Suicune?
ld d, $0
call LoadSuicuneFrame
; Initialize background crystal
call InitializeBackground
; Save WRAM bank
ld a, [rSVBK]
push af
; WRAM bank 5
ld a, BANK(wBGPals1)
ld [rSVBK], a
; Update palette colors
ld hl, TitleScreenPalettes
ld de, wBGPals1
ld bc, 16 palettes
call CopyBytes
ld hl, TitleScreenPalettes
ld de, wBGPals2
ld bc, 16 palettes
call CopyBytes
; Restore WRAM bank
pop af
ld [rSVBK], a
; LY/SCX trickery starts here
ld a, [rSVBK]
push af
ld a, BANK(wLYOverrides)
ld [rSVBK], a
; Make alternating lines come in from opposite sides
; (This part is actually totally pointless, you can't
; see anything until these values are overwritten!)
ld b, 80 / 2 ; alternate for 80 lines
ld hl, wLYOverrides
.loop
; $00 is the middle position
ld [hl], +112 ; coming from the left
inc hl
ld [hl], -112 ; coming from the right
inc hl
dec b
jr nz, .loop
; Make sure the rest of the buffer is empty
ld hl, wLYOverrides + 80
xor a
ld bc, wLYOverridesEnd - (wLYOverrides + 80)
call ByteFill
; Let LCD Stat know we're messing around with SCX
ld a, rSCX - $ff00
ld [hLCDCPointer], a
pop af
ld [rSVBK], a
; Reset audio
call ChannelsOff
call EnableLCD
; Set sprite size to 8x16
ld a, [rLCDC]
set rLCDC_SPRITE_SIZE, a
ld [rLCDC], a
ld a, +112
ld [hSCX], a
ld a, 8
ld [hSCY], a
ld a, 7
ld [hWX], a
ld a, -112
ld [hWY], a
ld a, $1
ld [hCGBPalUpdate], a
; Update BG Map 0 (bank 0)
ld [hBGMapMode], a
xor a
ld [wBGPals1 + 2], a
; Play starting sound effect
call SFXChannelsOff
ld de, SFX_TITLE_SCREEN_ENTRANCE
call PlaySFX
ret
; 10eea7
SuicuneFrameIterator: ; 10eea7
ld hl, wBGPals1 + 2
ld a, [hl]
ld c, a
inc [hl]
; Only do this once every eight frames
and %111
ret nz
ld a, c
and %11000
sla a
swap a
ld e, a
ld d, $0
ld hl, .Frames
add hl, de
ld d, [hl]
xor a
ld [hBGMapMode], a
call LoadSuicuneFrame
ld a, $1
ld [hBGMapMode], a
ld a, $3
ld [hBGMapThird], a
ret
; 10eece
.Frames: ; 10eece
db $80 ; vTiles4 tile $00
db $88 ; vTiles4 tile $08
db $00 ; vTiles5 tile $00
db $08 ; vTiles5 tile $08
; 10eed2
LoadSuicuneFrame: ; 10eed2
hlcoord 6, 12
ld b, 6
.bgrows
ld c, 8
.col
ld a, d
ld [hli], a
inc d
dec c
jr nz, .col
ld a, SCREEN_WIDTH - 8
add l
ld l, a
ld a, 0
adc h
ld h, a
ld a, 8
add d
ld d, a
dec b
jr nz, .bgrows
ret
; 10eeef
DrawTitleGraphic: ; 10eeef
; input:
; hl: draw location
; b: height
; c: width
; d: tile to start drawing from
; e: number of tiles to advance for each bgrows
.bgrows
push de
push bc
push hl
.col
ld a, d
ld [hli], a
inc d
dec c
jr nz, .col
pop hl
ld bc, SCREEN_WIDTH
add hl, bc
pop bc
pop de
ld a, e
add d
ld d, a
dec b
jr nz, .bgrows
ret
; 10ef06
InitializeBackground: ; 10ef06
ld hl, wVirtualOAMSprite00
ld d, -$22
ld e, $0
ld c, 5
.loop
push bc
call .InitColumn
pop bc
ld a, $10
add d
ld d, a
dec c
jr nz, .loop
ret
; 10ef1c
.InitColumn: ; 10ef1c
ld c, $6
ld b, $40
.loop2
ld a, d
ld [hli], a ; y
ld a, b
ld [hli], a ; x
add $8
ld b, a
ld a, e
ld [hli], a ; tile id
inc e
inc e
ld a, 0 | PRIORITY
ld [hli], a ; attributes
dec c
jr nz, .loop2
ret
; 10ef32
AnimateTitleCrystal: ; 10ef32
; Move the title screen crystal downward until it's fully visible
; Stop at y=6
; y is really from the bottom of the sprite, which is two tiles high
ld hl, wVirtualOAMSprite00YCoord
ld a, [hl]
cp 6 + 2 * TILE_WIDTH
ret z
; Move all 30 parts of the crystal down by 2
ld c, 30
.loop
ld a, [hl]
add 2
ld [hli], a ; y
rept SPRITEOAMSTRUCT_LENGTH + -1
inc hl
endr
dec c
jr nz, .loop
ret
; 10ef46
TitleSuicuneGFX: ; 10ef46
INCBIN "gfx/title/suicune.2bpp.lz"
; 10f326
TitleLogoGFX: ; 10f326
INCBIN "gfx/title/logo.2bpp.lz"
; 10fcee
TitleCrystalGFX: ; 10fcee
INCBIN "gfx/title/crystal.2bpp.lz"
; 10fede
TitleScreenPalettes:
INCLUDE "gfx/title/title.pal"

1646
engine/movie/trade_animation.asm Executable file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,178 @@
UnusedTitleScreen: ; 10c000
call ClearBGPalettes
call ClearTileMap
call DisableLCD
; Turn BG Map update off
xor a
ld [hBGMapMode], a
; Reset timing variables
ld hl, wJumptableIndex
ld [hli], a ; wJumptableIndex
ld [hli], a ; wIntroSceneFrameCounter
ld [hli], a ; wTitleScreenTimer
ld [hl], a ; wTitleScreenTimer + 1
ld hl, UnusedTitleBG_GFX
ld de, vTiles2
ld bc, vBGMap0 - vTiles2
call CopyBytes
ld hl, UnusedTitleBG_GFX + $80 tiles
ld de, vTiles1
ld bc, vTiles2 - vTiles1
call CopyBytes
ld hl, UnusedTitleFG_GFX
ld de, vTiles0
ld bc, vTiles1 - vTiles0
call CopyBytes
ld hl, UnusedTitleBG_Tilemap
debgcoord 0, 0
ld bc, BG_MAP_WIDTH * BG_MAP_HEIGHT
.copy
ld a, 0
ld [rVBK], a
ld a, [hli]
ld [de], a
ld a, 1
ld [rVBK], a
ld a, [hli]
ld [de], a
inc de
dec bc
ld a, b
or c
jr nz, .copy
ld hl, UnusedTitleFG_OAM
ld de, wVirtualOAMSprite00
ld bc, SPRITEOAMSTRUCT_LENGTH * NUM_SPRITE_OAM_STRUCTS
call CopyBytes
call EnableLCD
ld a, [rLCDC]
set rLCDC_SPRITES_ENABLE, a
set rLCDC_SPRITE_SIZE, a
ld [rLCDC], a
call DelayFrame
ld a, [rSVBK]
push af
ld a, BANK(wBGPals1)
ld [rSVBK], a
ld hl, UnusedTitleBG_Palettes
ld de, wBGPals1
ld bc, 8 palettes
call CopyBytes
ld hl, UnusedTitleFG_Palettes
ld de, wOBPals1
ld bc, 8 palettes
call CopyBytes
ld hl, UnusedTitleBG_Palettes
ld de, wBGPals2
ld bc, 8 palettes
call CopyBytes
ld hl, UnusedTitleFG_Palettes
ld de, wOBPals2
ld bc, 8 palettes
call CopyBytes
pop af
ld [rSVBK], a
ld a, $1
ld [hCGBPalUpdate], a
ld de, MUSIC_TITLE
call PlayMusic
ret
; 10c0b1
UnusedTitleBG_GFX: ; 10c0b1
INCBIN "gfx/title/old_bg.2bpp"
; 10d0b1
UnusedTitleBG_Tilemap: ; 10d0b1
; 32x32 (alternating tiles and attributes)
INCBIN "gfx/title/old_bg.tilemap"
; 10d8b1
UnusedTitleBG_Palettes: ; 10d8b1
INCLUDE "gfx/title/old_bg.pal"
; 10dab1
UnusedTitleFG_GFX: ; 10dab1
INCBIN "gfx/title/old_fg.2bpp"
; 10eab1
UnusedTitleFG_Palettes: ; 10eab1
INCLUDE "gfx/title/old_fg.pal"
; 10ecb1
UnusedTitleFG_OAM: ; 10ecb1
dsprite 3, 0, 7, 0, $00, 1
dsprite 3, 0, 8, 0, $02, 1
dsprite 3, 0, 9, 0, $04, 1
dsprite 3, 0, 10, 0, $06, 1
dsprite 3, 0, 11, 0, $08, 1
dsprite 3, 0, 12, 0, $0a, 1
dsprite 3, 0, 13, 0, $0c, 1
dsprite 3, 0, 14, 0, $0e, 1
dsprite 5, 0, 7, 0, $10, 0
dsprite 5, 0, 8, 0, $12, 0
dsprite 5, 0, 9, 0, $14, 0
dsprite 5, 0, 10, 0, $16, 0
dsprite 5, 0, 11, 0, $18, 0
dsprite 5, 0, 12, 0, $1a, 0
dsprite 5, 0, 13, 0, $1c, 0
dsprite 5, 0, 14, 0, $1e, 0
dsprite 7, 0, 7, 0, $20, 0
dsprite 7, 0, 8, 0, $22, 0
dsprite 7, 0, 9, 0, $24, 0
dsprite 7, 0, 10, 0, $26, 0
dsprite 7, 0, 11, 0, $28, 0
dsprite 7, 0, 12, 0, $2a, 0
dsprite 7, 0, 13, 0, $2c, 0
dsprite 7, 0, 14, 0, $2e, 0
dsprite 9, 0, 7, 0, $30, 2
dsprite 9, 0, 8, 0, $32, 2
dsprite 9, 0, 9, 0, $34, 2
dsprite 9, 0, 10, 0, $36, 2
dsprite 9, 0, 11, 0, $38, 2
dsprite 9, 0, 12, 0, $3a, 2
dsprite 9, 0, 13, 0, $3c, 2
dsprite 9, 0, 14, 0, $3e, 2
dsprite 11, 0, 7, 0, $40, 1
dsprite 11, 0, 8, 0, $42, 1
dsprite 11, 0, 9, 0, $44, 1
dsprite 11, 0, 10, 0, $46, 1
dsprite 11, 0, 11, 0, $48, 1
dsprite 11, 0, 12, 0, $4a, 1
dsprite 11, 0, 13, 0, $4c, 1
dsprite 11, 0, 14, 0, $4e, 1
; 10ed51
Function10ed51: ; 10ed51
call _TitleScreen
.loop
call JoyTextDelay
ld a, [hJoyLast]
ld b, a
and 1
jr nz, .done
call SuicuneFrameIterator
call DelayFrame
jr .loop
.done
ret
; 10ed67