You've already forked pokecrystal-board
mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2025-04-09 05:44:44 -07:00
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:
621
engine/movie/credits.asm
Normal file
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
2199
engine/movie/crystal_intro.asm
Executable file
File diff suppressed because it is too large
Load Diff
368
engine/movie/evolution_animation.asm
Executable file
368
engine/movie/evolution_animation.asm
Executable 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
149
engine/movie/gbc_only.asm
Normal 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
|
79
engine/movie/init_hof_credits.asm
Normal file
79
engine/movie/init_hof_credits.asm
Normal 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
402
engine/movie/title.asm
Normal 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
1646
engine/movie/trade_animation.asm
Executable file
File diff suppressed because it is too large
Load Diff
178
engine/movie/unused_title.asm
Normal file
178
engine/movie/unused_title.asm
Normal 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
|
Reference in New Issue
Block a user