mirror of
https://github.com/pret/pokeyellow.git
synced 2025-02-17 08:20:10 +00:00
163 lines
3.1 KiB
NASM
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:
|