pokeyellow/engine/movie/intro.asm
dannye 6cb885a9f6
Some checks failed
CI / build (push) Has been cancelled
Merge branch 'master' of https://github.com/pret/pokered
2025-01-30 21:40:19 -06:00

163 lines
3.1 KiB
NASM

const_def -1
const MOVE_NIDORINO_RIGHT
const MOVE_GENGAR_RIGHT
const MOVE_GENGAR_LEFT
DEF ANIMATION_END EQU 80
PlayIntro:
xor a
ldh [hJoyHeld], a
inc a
ldh [hAutoBGTransferEnabled], a
call PlayShootingStar
callfar PlayIntroScene
xor a
ldh [hSCX], a
ldh [hAutoBGTransferEnabled], a
call ClearSprites
call DelayFrame
ret
InitIntroNidorinoOAM:
ld hl, wShadowOAM
ld d, 0
.loop
push bc
ld a, [wBaseCoordY]
ld e, a
.innerLoop
ld a, e
add 8
ld e, a
ld [hli], a ; Y
ld a, [wBaseCoordX]
ld [hli], a ; X
ld a, d
ld [hli], a ; tile
ld a, OAM_BEHIND_BG
ld [hli], a ; attributes
inc d
dec c
jr nz, .innerLoop
ld a, [wBaseCoordX]
add 8
ld [wBaseCoordX], a
pop bc
dec b
jr nz, .loop
ret
IntroClearScreen:
ld hl, vBGMap1
ld bc, BG_MAP_WIDTH * SCREEN_HEIGHT
jr IntroClearCommon
IntroClearMiddleOfScreen:
; clear the area of the tile map between the black bars on the top and bottom
hlcoord 0, 4
ld bc, SCREEN_WIDTH * 10
IntroClearCommon:
ld [hl], 0
inc hl
dec bc
ld a, b
or c
jr nz, IntroClearCommon
ret
IntroPlaceBlackTiles:
ld a, 1
.loop
ld [hli], a
dec c
jr nz, .loop
ret
CopyTileIDsFromList_ZeroBaseTileID:
ld c, 0
predef_jump CopyTileIDsFromList
PlayShootingStar:
ld b, SET_PAL_GAME_FREAK_INTRO
call RunPaletteCommand
farcall LoadCopyrightAndTextBoxTiles
ldpal a, SHADE_BLACK, SHADE_DARK, SHADE_LIGHT, SHADE_WHITE
ldh [rBGP], a
call UpdateCGBPal_BGP
ld c, 180
call DelayFrames
call ClearScreen
call DisableLCD
xor a
ld [wCurOpponent], a
call IntroDrawBlackBars
; write the black and white tiles
ld hl, vChars2
ld bc, $10
xor a
call FillMemory
ld hl, vChars2 + $10
ld bc, $10
ld a, $ff
call FillMemory
; copy gamefreak logo and others
ld hl, GameFreakIntro
ld de, vChars2 + $600
ld bc, GameFreakIntroEnd - GameFreakIntro
ld a, BANK(GameFreakIntro)
call FarCopyData
ld hl, GameFreakIntro
ld de, vChars1
ld bc, GameFreakIntroEnd - GameFreakIntro
ld a, BANK(GameFreakIntro)
call FarCopyData
call EnableLCD
ld hl, rLCDC
res rLCDC_WINDOW_ENABLE, [hl]
set rLCDC_BG_TILEMAP, [hl]
ld c, 64
call DelayFrames
farcall AnimateShootingStar
push af
; A `call LoadPresentsGraphic` here was removed in localization
pop af
jr c, .next ; skip the delay if the user interrupted the animation
ld c, 40
call DelayFrames
.next
call IntroClearMiddleOfScreen
call ClearSprites
jp Delay3
IntroDrawBlackBars:
; clear the screen and draw black bars on the top and bottom
call IntroClearScreen
hlcoord 0, 0
ld c, SCREEN_WIDTH * 4
call IntroPlaceBlackTiles
hlcoord 0, 14
ld c, SCREEN_WIDTH * 4
call IntroPlaceBlackTiles
ld hl, vBGMap1
ld c, BG_MAP_WIDTH * 4
call IntroPlaceBlackTiles
hlbgcoord 0, 14, vBGMap1
ld c, BG_MAP_WIDTH * 4
jp IntroPlaceBlackTiles
LoadPresentsGraphic: ; unreferenced
; This routine loaded the "PRESENTS" text graphic (tiles
; $67, $68, $69, $6A, $6B, and $6C from gamefreak_presents.2bpp)
; at coordinates (11, 7) in the Japanese versions.
; It was dummied out in the English localization.
ret
GameFreakIntro:
INCBIN "gfx/splash/gamefreak_presents.2bpp"
INCBIN "gfx/splash/gamefreak_logo.2bpp"
ds 16, $00 ; blank tile
GameFreakIntroEnd: