diff options
Diffstat (limited to 'main.asm')
-rw-r--r-- | main.asm | 474 |
1 files changed, 1 insertions, 473 deletions
@@ -79205,480 +79205,8 @@ SECTION "bank43",ROMX,BANK[$43] 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] |