You've already forked pokecrystal-board
mirror of
https://gitlab.com/xCrystal/pokecrystal-board.git
synced 2025-04-09 05:44:44 -07:00
split title screen functions into engine/title.asm
This commit is contained in:
475
engine/title.asm
Normal file
475
engine/title.asm
Normal file
@@ -0,0 +1,475 @@
|
|||||||
|
_TitleScreen: ; 10ed67
|
||||||
|
|
||||||
|
call WhiteBGMap
|
||||||
|
call ClearSprites
|
||||||
|
call ClearTileMap
|
||||||
|
|
||||||
|
; Turn BG Map update off
|
||||||
|
xor a
|
||||||
|
ld [hBGMapMode], a
|
||||||
|
|
||||||
|
; Reset timing variables
|
||||||
|
ld hl, $cf63
|
||||||
|
ld [hli], a ; cf63 ; Scene?
|
||||||
|
ld [hli], a ; cf64
|
||||||
|
ld [hli], a ; cf65 ; Timer lo
|
||||||
|
ld [hl], a ; cf66 ; Timer hi
|
||||||
|
|
||||||
|
; 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
|
||||||
|
ld hl, VBGMap0
|
||||||
|
ld bc, $0280
|
||||||
|
xor a
|
||||||
|
call ByteFill
|
||||||
|
|
||||||
|
|
||||||
|
; Fill tile palettes:
|
||||||
|
|
||||||
|
; BG Map 1:
|
||||||
|
|
||||||
|
; line 0 (copyright)
|
||||||
|
ld hl, VBGMap1
|
||||||
|
ld bc, $0020 ; one row
|
||||||
|
ld a, 7 ; palette
|
||||||
|
call ByteFill
|
||||||
|
|
||||||
|
|
||||||
|
; BG Map 0:
|
||||||
|
|
||||||
|
; Apply logo gradient:
|
||||||
|
|
||||||
|
; lines 3-4
|
||||||
|
ld hl, $9860 ; (0,3)
|
||||||
|
ld bc, $0040 ; 2 rows
|
||||||
|
ld a, 2
|
||||||
|
call ByteFill
|
||||||
|
; line 5
|
||||||
|
ld hl, $98a0 ; (0,5)
|
||||||
|
ld bc, $0020 ; 1 row
|
||||||
|
ld a, 3
|
||||||
|
call ByteFill
|
||||||
|
; line 6
|
||||||
|
ld hl, $98c0 ; (0,6)
|
||||||
|
ld bc, $0020 ; 1 row
|
||||||
|
ld a, 4
|
||||||
|
call ByteFill
|
||||||
|
; line 7
|
||||||
|
ld hl, $98e0 ; (0,7)
|
||||||
|
ld bc, $0020 ; 1 row
|
||||||
|
ld a, 5
|
||||||
|
call ByteFill
|
||||||
|
; lines 8-9
|
||||||
|
ld hl, $9900 ; (0,8)
|
||||||
|
ld bc, $0040 ; 2 rows
|
||||||
|
ld a, 6
|
||||||
|
call ByteFill
|
||||||
|
|
||||||
|
|
||||||
|
; 'CRYSTAL VERSION'
|
||||||
|
ld hl, $9925 ; (5,9)
|
||||||
|
ld bc, $000b ; length of version text
|
||||||
|
ld a, 1
|
||||||
|
call ByteFill
|
||||||
|
|
||||||
|
; Suicune gfx
|
||||||
|
ld hl, $9980 ; (0,12)
|
||||||
|
ld bc, $00c0 ; the rest of the screen
|
||||||
|
ld a, 8
|
||||||
|
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
|
||||||
|
ld hl, VBGMap0
|
||||||
|
ld bc, $0800
|
||||||
|
ld a, $7f
|
||||||
|
call ByteFill
|
||||||
|
|
||||||
|
; Draw Pokemon logo
|
||||||
|
ld hl, $c4dc ; TileMap(0,3)
|
||||||
|
ld bc, $0714 ; 20x7
|
||||||
|
ld d, $80
|
||||||
|
ld e, $14
|
||||||
|
call DrawGraphic
|
||||||
|
|
||||||
|
; Draw copyright text
|
||||||
|
ld hl, $9c03 ; BGMap1(3,0)
|
||||||
|
ld bc, $010d ; 13x1
|
||||||
|
ld d, $c
|
||||||
|
ld e, $10
|
||||||
|
call DrawGraphic
|
||||||
|
|
||||||
|
; Initialize running Suicune?
|
||||||
|
ld d, $0
|
||||||
|
call Function10eed2
|
||||||
|
|
||||||
|
; Initialize background crystal
|
||||||
|
call Function10ef06
|
||||||
|
|
||||||
|
; Save WRAM bank
|
||||||
|
ld a, [rSVBK]
|
||||||
|
push af
|
||||||
|
; WRAM bank 5
|
||||||
|
ld a, 5
|
||||||
|
ld [rSVBK], a
|
||||||
|
|
||||||
|
; Update palette colors
|
||||||
|
ld hl, TitleScreenPalettes
|
||||||
|
ld de, $d000
|
||||||
|
ld bc, $0080
|
||||||
|
call CopyBytes
|
||||||
|
|
||||||
|
ld hl, TitleScreenPalettes
|
||||||
|
ld de, $d080
|
||||||
|
ld bc, $0080
|
||||||
|
call CopyBytes
|
||||||
|
|
||||||
|
; Restore WRAM bank
|
||||||
|
pop af
|
||||||
|
ld [rSVBK], a
|
||||||
|
|
||||||
|
|
||||||
|
; LY/SCX trickery starts here
|
||||||
|
|
||||||
|
ld a, [rSVBK]
|
||||||
|
push af
|
||||||
|
ld a, 5 ; BANK(LYOverrides)
|
||||||
|
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, LYOverrides
|
||||||
|
.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, LYOverrides + 80
|
||||||
|
xor a
|
||||||
|
ld bc, LYOverridesEnd - (LYOverrides + 80)
|
||||||
|
call ByteFill
|
||||||
|
|
||||||
|
; Let LCD Stat know we're messing around with SCX
|
||||||
|
ld a, rSCX - rJOYP
|
||||||
|
ld [hLCDStatCustom], a
|
||||||
|
|
||||||
|
pop af
|
||||||
|
ld [rSVBK], a
|
||||||
|
|
||||||
|
|
||||||
|
; Reset audio
|
||||||
|
call ChannelsOff
|
||||||
|
call EnableLCD
|
||||||
|
|
||||||
|
; Set sprite size to 8x16
|
||||||
|
ld a, [rLCDC]
|
||||||
|
set 2, 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 [DefaultFlypoint], a
|
||||||
|
|
||||||
|
; Play starting sound effect
|
||||||
|
call SFXChannelsOff
|
||||||
|
ld de, SFX_TITLE_SCREEN_ENTRANCE
|
||||||
|
call StartSFX
|
||||||
|
|
||||||
|
ret
|
||||||
|
; 10eea7
|
||||||
|
|
||||||
|
Function10eea7: ; 10eea7
|
||||||
|
ld hl, DefaultFlypoint
|
||||||
|
ld a, [hl]
|
||||||
|
ld c, a
|
||||||
|
inc [hl]
|
||||||
|
and $7
|
||||||
|
ret nz
|
||||||
|
ld a, c
|
||||||
|
and $18
|
||||||
|
sla a
|
||||||
|
swap a
|
||||||
|
ld e, a
|
||||||
|
ld d, $0
|
||||||
|
ld hl, $6ece
|
||||||
|
add hl, de
|
||||||
|
ld d, [hl]
|
||||||
|
xor a
|
||||||
|
ld [hBGMapMode], a
|
||||||
|
call Function10eed2
|
||||||
|
ld a, $1
|
||||||
|
ld [hBGMapMode], a
|
||||||
|
ld a, $3
|
||||||
|
ld [hBGMapThird], a
|
||||||
|
ret
|
||||||
|
; 10eece
|
||||||
|
|
||||||
|
INCBIN "baserom.gbc", $10eece, $10eed2 - $10eece
|
||||||
|
|
||||||
|
|
||||||
|
Function10eed2: ; 10eed2
|
||||||
|
ld hl, $c596
|
||||||
|
ld b, $6
|
||||||
|
.asm_10eed7
|
||||||
|
ld c, $8
|
||||||
|
.asm_10eed9
|
||||||
|
ld a, d
|
||||||
|
ld [hli], a
|
||||||
|
inc d
|
||||||
|
dec c
|
||||||
|
jr nz, .asm_10eed9
|
||||||
|
ld a, $c
|
||||||
|
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, .asm_10eed7
|
||||||
|
ret
|
||||||
|
; 10eeef
|
||||||
|
|
||||||
|
Function10eeef: ; 10eeef
|
||||||
|
.asm_10eeef
|
||||||
|
push de
|
||||||
|
push bc
|
||||||
|
push hl
|
||||||
|
.asm_10eef2
|
||||||
|
ld a, d
|
||||||
|
ld [hli], a
|
||||||
|
inc d
|
||||||
|
dec c
|
||||||
|
jr nz, .asm_10eef2
|
||||||
|
pop hl
|
||||||
|
ld bc, $0014
|
||||||
|
add hl, bc
|
||||||
|
pop bc
|
||||||
|
pop de
|
||||||
|
ld a, e
|
||||||
|
add d
|
||||||
|
ld d, a
|
||||||
|
dec b
|
||||||
|
jr nz, .asm_10eeef
|
||||||
|
ret
|
||||||
|
; 10ef06
|
||||||
|
|
||||||
|
Function10ef06: ; 10ef06
|
||||||
|
ld hl, Sprites
|
||||||
|
ld d, $de
|
||||||
|
ld e, $0
|
||||||
|
ld c, $5
|
||||||
|
.asm_10ef0f
|
||||||
|
push bc
|
||||||
|
call Function10ef1c
|
||||||
|
pop bc
|
||||||
|
ld a, $10
|
||||||
|
add d
|
||||||
|
ld d, a
|
||||||
|
dec c
|
||||||
|
jr nz, .asm_10ef0f
|
||||||
|
ret
|
||||||
|
; 10ef1c
|
||||||
|
|
||||||
|
Function10ef1c: ; 10ef1c
|
||||||
|
ld c, $6
|
||||||
|
ld b, $40
|
||||||
|
.asm_10ef20
|
||||||
|
ld a, d
|
||||||
|
ld [hli], a
|
||||||
|
ld a, b
|
||||||
|
ld [hli], a
|
||||||
|
add $8
|
||||||
|
ld b, a
|
||||||
|
ld a, e
|
||||||
|
ld [hli], a
|
||||||
|
inc e
|
||||||
|
inc e
|
||||||
|
ld a, $80
|
||||||
|
ld [hli], a
|
||||||
|
dec c
|
||||||
|
jr nz, .asm_10ef20
|
||||||
|
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, Sprites
|
||||||
|
ld a, [hl]
|
||||||
|
cp 6 + 16
|
||||||
|
ret z
|
||||||
|
|
||||||
|
; Move all 30 parts of the crystal down by 2
|
||||||
|
ld c, 30
|
||||||
|
.loop
|
||||||
|
ld a, [hl]
|
||||||
|
add 2
|
||||||
|
ld [hli], a
|
||||||
|
inc hl
|
||||||
|
inc hl
|
||||||
|
inc hl
|
||||||
|
dec c
|
||||||
|
jr nz, .loop
|
||||||
|
|
||||||
|
ret
|
||||||
|
; 10ef46
|
||||||
|
|
||||||
|
TitleSuicuneGFX: ; 10ef46
|
||||||
|
INCBIN "gfx/title/suicune.lz"
|
||||||
|
; 10f31b
|
||||||
|
|
||||||
|
INCBIN "baserom.gbc", $10f31b, $10f326 - $10f31b
|
||||||
|
|
||||||
|
TitleLogoGFX: ; 10f326
|
||||||
|
INCBIN "gfx/title/logo.lz"
|
||||||
|
; 10fced
|
||||||
|
|
||||||
|
INCBIN "baserom.gbc", $10fced, $10fcee - $10fced
|
||||||
|
|
||||||
|
TitleCrystalGFX: ; 10fcee
|
||||||
|
INCBIN "gfx/title/crystal.lz"
|
||||||
|
; 10fed7
|
||||||
|
|
||||||
|
INCBIN "baserom.gbc", $10fed7, $10fede - $10fed7
|
||||||
|
|
||||||
|
TitleScreenPalettes:
|
||||||
|
; BG
|
||||||
|
RGB 00, 00, 00
|
||||||
|
RGB 19, 00, 00
|
||||||
|
RGB 15, 08, 31
|
||||||
|
RGB 15, 08, 31
|
||||||
|
|
||||||
|
RGB 00, 00, 00
|
||||||
|
RGB 31, 31, 31
|
||||||
|
RGB 15, 16, 31
|
||||||
|
RGB 31, 01, 13
|
||||||
|
|
||||||
|
RGB 00, 00, 00
|
||||||
|
RGB 07, 07, 07
|
||||||
|
RGB 31, 31, 31
|
||||||
|
RGB 02, 03, 30
|
||||||
|
|
||||||
|
RGB 00, 00, 00
|
||||||
|
RGB 13, 13, 13
|
||||||
|
RGB 31, 31, 18
|
||||||
|
RGB 02, 03, 30
|
||||||
|
|
||||||
|
RGB 00, 00, 00
|
||||||
|
RGB 19, 19, 19
|
||||||
|
RGB 29, 28, 12
|
||||||
|
RGB 02, 03, 30
|
||||||
|
|
||||||
|
RGB 00, 00, 00
|
||||||
|
RGB 25, 25, 25
|
||||||
|
RGB 28, 25, 06
|
||||||
|
RGB 02, 03, 30
|
||||||
|
|
||||||
|
RGB 00, 00, 00
|
||||||
|
RGB 31, 31, 31
|
||||||
|
RGB 26, 21, 00
|
||||||
|
RGB 02, 03, 30
|
||||||
|
|
||||||
|
RGB 00, 00, 00
|
||||||
|
RGB 11, 11, 19
|
||||||
|
RGB 31, 31, 31
|
||||||
|
RGB 00, 00, 00
|
||||||
|
|
||||||
|
; OBJ
|
||||||
|
RGB 00, 00, 00
|
||||||
|
RGB 10, 00, 15
|
||||||
|
RGB 17, 05, 22
|
||||||
|
RGB 19, 09, 31
|
||||||
|
|
||||||
|
RGB 31, 31, 31
|
||||||
|
RGB 00, 00, 00
|
||||||
|
RGB 00, 00, 00
|
||||||
|
RGB 00, 00, 00
|
||||||
|
|
||||||
|
RGB 31, 31, 31
|
||||||
|
RGB 00, 00, 00
|
||||||
|
RGB 00, 00, 00
|
||||||
|
RGB 00, 00, 00
|
||||||
|
|
||||||
|
RGB 31, 31, 31
|
||||||
|
RGB 00, 00, 00
|
||||||
|
RGB 00, 00, 00
|
||||||
|
RGB 00, 00, 00
|
||||||
|
|
||||||
|
RGB 31, 31, 31
|
||||||
|
RGB 00, 00, 00
|
||||||
|
RGB 00, 00, 00
|
||||||
|
RGB 00, 00, 00
|
||||||
|
|
||||||
|
RGB 31, 31, 31
|
||||||
|
RGB 00, 00, 00
|
||||||
|
RGB 00, 00, 00
|
||||||
|
RGB 00, 00, 00
|
||||||
|
|
||||||
|
RGB 31, 31, 31
|
||||||
|
RGB 00, 00, 00
|
||||||
|
RGB 00, 00, 00
|
||||||
|
RGB 00, 00, 00
|
||||||
|
|
||||||
|
RGB 31, 31, 31
|
||||||
|
RGB 00, 00, 00
|
||||||
|
RGB 00, 00, 00
|
||||||
|
RGB 00, 00, 00
|
||||||
|
|
474
main.asm
474
main.asm
@@ -79205,480 +79205,8 @@ SECTION "bank43",ROMX,BANK[$43]
|
|||||||
|
|
||||||
INCBIN "baserom.gbc", $10c000, $10ed67 - $10c000
|
INCBIN "baserom.gbc", $10c000, $10ed67 - $10c000
|
||||||
|
|
||||||
_TitleScreen: ; 10ed67
|
INCLUDE "engine/title.asm"
|
||||||
|
|
||||||
call WhiteBGMap
|
|
||||||
call ClearSprites
|
|
||||||
call ClearTileMap
|
|
||||||
|
|
||||||
; Turn BG Map update off
|
|
||||||
xor a
|
|
||||||
ld [hBGMapMode], a
|
|
||||||
|
|
||||||
; Reset timing variables
|
|
||||||
ld hl, $cf63
|
|
||||||
ld [hli], a ; cf63 ; Scene?
|
|
||||||
ld [hli], a ; cf64
|
|
||||||
ld [hli], a ; cf65 ; Timer lo
|
|
||||||
ld [hl], a ; cf66 ; Timer hi
|
|
||||||
|
|
||||||
; 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
|
|
||||||
ld hl, VBGMap0
|
|
||||||
ld bc, $0280
|
|
||||||
xor a
|
|
||||||
call ByteFill
|
|
||||||
|
|
||||||
|
|
||||||
; Fill tile palettes:
|
|
||||||
|
|
||||||
; BG Map 1:
|
|
||||||
|
|
||||||
; line 0 (copyright)
|
|
||||||
ld hl, VBGMap1
|
|
||||||
ld bc, $0020 ; one row
|
|
||||||
ld a, 7 ; palette
|
|
||||||
call ByteFill
|
|
||||||
|
|
||||||
|
|
||||||
; BG Map 0:
|
|
||||||
|
|
||||||
; Apply logo gradient:
|
|
||||||
|
|
||||||
; lines 3-4
|
|
||||||
ld hl, $9860 ; (0,3)
|
|
||||||
ld bc, $0040 ; 2 rows
|
|
||||||
ld a, 2
|
|
||||||
call ByteFill
|
|
||||||
; line 5
|
|
||||||
ld hl, $98a0 ; (0,5)
|
|
||||||
ld bc, $0020 ; 1 row
|
|
||||||
ld a, 3
|
|
||||||
call ByteFill
|
|
||||||
; line 6
|
|
||||||
ld hl, $98c0 ; (0,6)
|
|
||||||
ld bc, $0020 ; 1 row
|
|
||||||
ld a, 4
|
|
||||||
call ByteFill
|
|
||||||
; line 7
|
|
||||||
ld hl, $98e0 ; (0,7)
|
|
||||||
ld bc, $0020 ; 1 row
|
|
||||||
ld a, 5
|
|
||||||
call ByteFill
|
|
||||||
; lines 8-9
|
|
||||||
ld hl, $9900 ; (0,8)
|
|
||||||
ld bc, $0040 ; 2 rows
|
|
||||||
ld a, 6
|
|
||||||
call ByteFill
|
|
||||||
|
|
||||||
|
|
||||||
; 'CRYSTAL VERSION'
|
|
||||||
ld hl, $9925 ; (5,9)
|
|
||||||
ld bc, $000b ; length of version text
|
|
||||||
ld a, 1
|
|
||||||
call ByteFill
|
|
||||||
|
|
||||||
; Suicune gfx
|
|
||||||
ld hl, $9980 ; (0,12)
|
|
||||||
ld bc, $00c0 ; the rest of the screen
|
|
||||||
ld a, 8
|
|
||||||
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
|
|
||||||
ld hl, VBGMap0
|
|
||||||
ld bc, $0800
|
|
||||||
ld a, $7f
|
|
||||||
call ByteFill
|
|
||||||
|
|
||||||
; Draw Pokemon logo
|
|
||||||
ld hl, $c4dc ; TileMap(0,3)
|
|
||||||
ld bc, $0714 ; 20x7
|
|
||||||
ld d, $80
|
|
||||||
ld e, $14
|
|
||||||
call DrawGraphic
|
|
||||||
|
|
||||||
; Draw copyright text
|
|
||||||
ld hl, $9c03 ; BGMap1(3,0)
|
|
||||||
ld bc, $010d ; 13x1
|
|
||||||
ld d, $c
|
|
||||||
ld e, $10
|
|
||||||
call DrawGraphic
|
|
||||||
|
|
||||||
; Initialize running Suicune?
|
|
||||||
ld d, $0
|
|
||||||
call Function10eed2
|
|
||||||
|
|
||||||
; Initialize background crystal
|
|
||||||
call Function10ef06
|
|
||||||
|
|
||||||
; Save WRAM bank
|
|
||||||
ld a, [rSVBK]
|
|
||||||
push af
|
|
||||||
; WRAM bank 5
|
|
||||||
ld a, 5
|
|
||||||
ld [rSVBK], a
|
|
||||||
|
|
||||||
; Update palette colors
|
|
||||||
ld hl, TitleScreenPalettes
|
|
||||||
ld de, $d000
|
|
||||||
ld bc, $0080
|
|
||||||
call CopyBytes
|
|
||||||
|
|
||||||
ld hl, TitleScreenPalettes
|
|
||||||
ld de, $d080
|
|
||||||
ld bc, $0080
|
|
||||||
call CopyBytes
|
|
||||||
|
|
||||||
; Restore WRAM bank
|
|
||||||
pop af
|
|
||||||
ld [rSVBK], a
|
|
||||||
|
|
||||||
|
|
||||||
; LY/SCX trickery starts here
|
|
||||||
|
|
||||||
ld a, [rSVBK]
|
|
||||||
push af
|
|
||||||
ld a, 5 ; BANK(LYOverrides)
|
|
||||||
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, LYOverrides
|
|
||||||
.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, LYOverrides + 80
|
|
||||||
xor a
|
|
||||||
ld bc, LYOverridesEnd - (LYOverrides + 80)
|
|
||||||
call ByteFill
|
|
||||||
|
|
||||||
; Let LCD Stat know we're messing around with SCX
|
|
||||||
ld a, rSCX - rJOYP
|
|
||||||
ld [hLCDStatCustom], a
|
|
||||||
|
|
||||||
pop af
|
|
||||||
ld [rSVBK], a
|
|
||||||
|
|
||||||
|
|
||||||
; Reset audio
|
|
||||||
call ChannelsOff
|
|
||||||
call EnableLCD
|
|
||||||
|
|
||||||
; Set sprite size to 8x16
|
|
||||||
ld a, [rLCDC]
|
|
||||||
set 2, 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 [DefaultFlypoint], a
|
|
||||||
|
|
||||||
; Play starting sound effect
|
|
||||||
call SFXChannelsOff
|
|
||||||
ld de, SFX_TITLE_SCREEN_ENTRANCE
|
|
||||||
call StartSFX
|
|
||||||
|
|
||||||
ret
|
|
||||||
; 10eea7
|
|
||||||
|
|
||||||
Function10eea7: ; 10eea7
|
|
||||||
ld hl, DefaultFlypoint
|
|
||||||
ld a, [hl]
|
|
||||||
ld c, a
|
|
||||||
inc [hl]
|
|
||||||
and $7
|
|
||||||
ret nz
|
|
||||||
ld a, c
|
|
||||||
and $18
|
|
||||||
sla a
|
|
||||||
swap a
|
|
||||||
ld e, a
|
|
||||||
ld d, $0
|
|
||||||
ld hl, $6ece
|
|
||||||
add hl, de
|
|
||||||
ld d, [hl]
|
|
||||||
xor a
|
|
||||||
ld [hBGMapMode], a
|
|
||||||
call Function10eed2
|
|
||||||
ld a, $1
|
|
||||||
ld [hBGMapMode], a
|
|
||||||
ld a, $3
|
|
||||||
ld [hBGMapThird], a
|
|
||||||
ret
|
|
||||||
; 10eece
|
|
||||||
|
|
||||||
INCBIN "baserom.gbc", $10eece, $10eed2 - $10eece
|
|
||||||
|
|
||||||
|
|
||||||
Function10eed2: ; 10eed2
|
|
||||||
ld hl, $c596
|
|
||||||
ld b, $6
|
|
||||||
.asm_10eed7
|
|
||||||
ld c, $8
|
|
||||||
.asm_10eed9
|
|
||||||
ld a, d
|
|
||||||
ld [hli], a
|
|
||||||
inc d
|
|
||||||
dec c
|
|
||||||
jr nz, .asm_10eed9
|
|
||||||
ld a, $c
|
|
||||||
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, .asm_10eed7
|
|
||||||
ret
|
|
||||||
; 10eeef
|
|
||||||
|
|
||||||
Function10eeef: ; 10eeef
|
|
||||||
.asm_10eeef
|
|
||||||
push de
|
|
||||||
push bc
|
|
||||||
push hl
|
|
||||||
.asm_10eef2
|
|
||||||
ld a, d
|
|
||||||
ld [hli], a
|
|
||||||
inc d
|
|
||||||
dec c
|
|
||||||
jr nz, .asm_10eef2
|
|
||||||
pop hl
|
|
||||||
ld bc, $0014
|
|
||||||
add hl, bc
|
|
||||||
pop bc
|
|
||||||
pop de
|
|
||||||
ld a, e
|
|
||||||
add d
|
|
||||||
ld d, a
|
|
||||||
dec b
|
|
||||||
jr nz, .asm_10eeef
|
|
||||||
ret
|
|
||||||
; 10ef06
|
|
||||||
|
|
||||||
Function10ef06: ; 10ef06
|
|
||||||
ld hl, Sprites
|
|
||||||
ld d, $de
|
|
||||||
ld e, $0
|
|
||||||
ld c, $5
|
|
||||||
.asm_10ef0f
|
|
||||||
push bc
|
|
||||||
call Function10ef1c
|
|
||||||
pop bc
|
|
||||||
ld a, $10
|
|
||||||
add d
|
|
||||||
ld d, a
|
|
||||||
dec c
|
|
||||||
jr nz, .asm_10ef0f
|
|
||||||
ret
|
|
||||||
; 10ef1c
|
|
||||||
|
|
||||||
Function10ef1c: ; 10ef1c
|
|
||||||
ld c, $6
|
|
||||||
ld b, $40
|
|
||||||
.asm_10ef20
|
|
||||||
ld a, d
|
|
||||||
ld [hli], a
|
|
||||||
ld a, b
|
|
||||||
ld [hli], a
|
|
||||||
add $8
|
|
||||||
ld b, a
|
|
||||||
ld a, e
|
|
||||||
ld [hli], a
|
|
||||||
inc e
|
|
||||||
inc e
|
|
||||||
ld a, $80
|
|
||||||
ld [hli], a
|
|
||||||
dec c
|
|
||||||
jr nz, .asm_10ef20
|
|
||||||
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, Sprites
|
|
||||||
ld a, [hl]
|
|
||||||
cp 6 + 16
|
|
||||||
ret z
|
|
||||||
|
|
||||||
; Move all 30 parts of the crystal down by 2
|
|
||||||
ld c, 30
|
|
||||||
.loop
|
|
||||||
ld a, [hl]
|
|
||||||
add 2
|
|
||||||
ld [hli], a
|
|
||||||
inc hl
|
|
||||||
inc hl
|
|
||||||
inc hl
|
|
||||||
dec c
|
|
||||||
jr nz, .loop
|
|
||||||
|
|
||||||
ret
|
|
||||||
; 10ef46
|
|
||||||
|
|
||||||
TitleSuicuneGFX: ; 10ef46
|
|
||||||
INCBIN "gfx/title/suicune.lz"
|
|
||||||
; 10f31b
|
|
||||||
|
|
||||||
INCBIN "baserom.gbc", $10f31b, $10f326 - $10f31b
|
|
||||||
|
|
||||||
TitleLogoGFX: ; 10f326
|
|
||||||
INCBIN "gfx/title/logo.lz"
|
|
||||||
; 10fced
|
|
||||||
|
|
||||||
INCBIN "baserom.gbc", $10fced, $10fcee - $10fced
|
|
||||||
|
|
||||||
TitleCrystalGFX: ; 10fcee
|
|
||||||
INCBIN "gfx/title/crystal.lz"
|
|
||||||
; 10fed7
|
|
||||||
|
|
||||||
INCBIN "baserom.gbc", $10fed7, $10fede - $10fed7
|
|
||||||
|
|
||||||
TitleScreenPalettes:
|
|
||||||
; BG
|
|
||||||
RGB 00, 00, 00
|
|
||||||
RGB 19, 00, 00
|
|
||||||
RGB 15, 08, 31
|
|
||||||
RGB 15, 08, 31
|
|
||||||
|
|
||||||
RGB 00, 00, 00
|
|
||||||
RGB 31, 31, 31
|
|
||||||
RGB 15, 16, 31
|
|
||||||
RGB 31, 01, 13
|
|
||||||
|
|
||||||
RGB 00, 00, 00
|
|
||||||
RGB 07, 07, 07
|
|
||||||
RGB 31, 31, 31
|
|
||||||
RGB 02, 03, 30
|
|
||||||
|
|
||||||
RGB 00, 00, 00
|
|
||||||
RGB 13, 13, 13
|
|
||||||
RGB 31, 31, 18
|
|
||||||
RGB 02, 03, 30
|
|
||||||
|
|
||||||
RGB 00, 00, 00
|
|
||||||
RGB 19, 19, 19
|
|
||||||
RGB 29, 28, 12
|
|
||||||
RGB 02, 03, 30
|
|
||||||
|
|
||||||
RGB 00, 00, 00
|
|
||||||
RGB 25, 25, 25
|
|
||||||
RGB 28, 25, 06
|
|
||||||
RGB 02, 03, 30
|
|
||||||
|
|
||||||
RGB 00, 00, 00
|
|
||||||
RGB 31, 31, 31
|
|
||||||
RGB 26, 21, 00
|
|
||||||
RGB 02, 03, 30
|
|
||||||
|
|
||||||
RGB 00, 00, 00
|
|
||||||
RGB 11, 11, 19
|
|
||||||
RGB 31, 31, 31
|
|
||||||
RGB 00, 00, 00
|
|
||||||
|
|
||||||
; OBJ
|
|
||||||
RGB 00, 00, 00
|
|
||||||
RGB 10, 00, 15
|
|
||||||
RGB 17, 05, 22
|
|
||||||
RGB 19, 09, 31
|
|
||||||
|
|
||||||
RGB 31, 31, 31
|
|
||||||
RGB 00, 00, 00
|
|
||||||
RGB 00, 00, 00
|
|
||||||
RGB 00, 00, 00
|
|
||||||
|
|
||||||
RGB 31, 31, 31
|
|
||||||
RGB 00, 00, 00
|
|
||||||
RGB 00, 00, 00
|
|
||||||
RGB 00, 00, 00
|
|
||||||
|
|
||||||
RGB 31, 31, 31
|
|
||||||
RGB 00, 00, 00
|
|
||||||
RGB 00, 00, 00
|
|
||||||
RGB 00, 00, 00
|
|
||||||
|
|
||||||
RGB 31, 31, 31
|
|
||||||
RGB 00, 00, 00
|
|
||||||
RGB 00, 00, 00
|
|
||||||
RGB 00, 00, 00
|
|
||||||
|
|
||||||
RGB 31, 31, 31
|
|
||||||
RGB 00, 00, 00
|
|
||||||
RGB 00, 00, 00
|
|
||||||
RGB 00, 00, 00
|
|
||||||
|
|
||||||
RGB 31, 31, 31
|
|
||||||
RGB 00, 00, 00
|
|
||||||
RGB 00, 00, 00
|
|
||||||
RGB 00, 00, 00
|
|
||||||
|
|
||||||
RGB 31, 31, 31
|
|
||||||
RGB 00, 00, 00
|
|
||||||
RGB 00, 00, 00
|
|
||||||
RGB 00, 00, 00
|
|
||||||
|
|
||||||
SECTION "bank44",ROMX,BANK[$44]
|
SECTION "bank44",ROMX,BANK[$44]
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user