GoldSilverIntro: call .Init .Loop: call .PlayFrame jr nc, .Loop ret .Init: farcall ClearSpriteAnims xor a ld [wIntroJumptableIndex], a ldh [hBGMapMode], a ret .PlayFrame: call JoyTextDelay ldh a, [hJoyLast] and BUTTONS jr nz, .Finish ; check done flag ld a, [wIntroJumptableIndex] bit 7, a jr nz, .Finish farcall PlaySpriteAnimations call IntroSceneJumper call DelayFrame and a ret .Finish: callfar ClearSpriteAnims call ClearSprites call DelayFrame xor a ldh [hSCX], a ldh [hSCY], a ldh [hLCDCPointer], a ldh [hLYOverrideStart], a ldh [hLYOverrideEnd], a ld a, %11100100 call DmgToCgbBGPals depixel 28, 28, 4, 4 call DmgToCgbObjPals scf ret IntroSceneJumper: jumptable .scenes, wIntroJumptableIndex .scenes dw IntroScene1 dw IntroScene2 dw IntroScene3 dw IntroScene4 dw IntroScene5 dw IntroScene6 dw IntroScene7 dw IntroScene8 dw IntroScene9 dw IntroScene10 dw IntroScene11 dw IntroScene12 dw IntroScene13 dw IntroScene14 dw IntroScene15 dw IntroScene16 dw IntroScene17 IntroScene1: ; Set up water cutscene (Shellders/Magikarp/Lapras) call ClearBGPalettes call ClearTilemap ld hl, wIntroJumptableIndex inc [hl] ; only run once call DisableLCD xor a ldh [hBGMapMode], a callfar ClearSpriteAnims ld a, 1 ldh [rVBK], a hlbgcoord 0, 0, vBGMap2 lb bc, 4, 0 xor a call ByteFill ld a, 0 ldh [rVBK], a call Intro_ResetLYOverrides ld de, vTiles2 tile $00 ld hl, Intro_WaterGFX1 call Decompress ld a, LOW(Intro_WaterMeta) ld [wIntroTilesPointer + 0], a ld a, HIGH(Intro_WaterMeta) ld [wIntroTilesPointer + 1], a hlbgcoord 0, 0, vBGMap2 ld a, l ld [wIntroBGMapPointer + 0], a ld a, h ld [wIntroBGMapPointer + 1], a ld de, Intro_WaterTilemap + 15 tiles ld a, e ld [wIntroTilemapPointer + 0], a ld a, d ld [wIntroTilemapPointer + 1], a call Intro_DrawBackground ld de, vTiles0 tile $00 ld hl, Intro_WaterGFX2 call Decompress ld hl, wSpriteAnimDict ld a, SPRITE_ANIM_DICT_DEFAULT ld [hli], a ld a, $00 ld [hli], a xor a ldh [hSCY], a ld [wGlobalAnimYOffset], a ld [wGlobalAnimXOffset], a ld a, $58 ldh [hSCX], a xor a ld [wIntroFrameCounter2], a ld a, $80 ld [wIntroFrameCounter1], a ld a, $42 ldh [hLCDCPointer], a call Intro_InitSineLYOverrides xor a ; FALSE ld [wIntroSpriteStateFlag], a call EnableLCD call DelayFrame ld b, SCGB_GS_INTRO ld c, 0 call GetSGBLayout ld a, %11100100 call DmgToCgbBGPals depixel 28, 28 call DmgToCgbObjPals call Intro_InitShellders ld de, MUSIC_GS_OPENING call PlayMusic ret IntroScene2: ; shellders underwater call Intro_UpdateLYOverrides ld hl, wIntroFrameCounter1 ld a, [hl] and a jr z, .skip_intro dec [hl] call Intro_InitBubble ret .skip_intro ld [hl], $10 ld hl, wIntroJumptableIndex inc [hl] IntroScene3: ; rise towards the surface call IntroScene3_Jumper call IntroScene3_ScrollToSurface ret nc ; next scene if carry flag is set call Intro_ResetLYOverrides ld hl, hSCY inc [hl] ld hl, wIntroJumptableIndex inc [hl] IntroScene4: ; at surface; Lapras surfs to left of screen ld a, [wIntroSpriteStateFlag] and a jr nz, .next ld hl, wIntroFrameCounter2 inc [hl] ld a, [hl] and $f jr nz, .skip_move_left ld hl, hSCX dec [hl] dec [hl] .skip_move_left call Intro_AnimateOceanWaves ret .next ld hl, wIntroJumptableIndex inc [hl] xor a ld [wIntroFrameCounter1], a IntroScene5: ; fade out ld hl, wIntroFrameCounter1 ld a, [hl] inc [hl] swap a and $f ld e, a ld d, 0 ld hl, .palettes add hl, de ld a, [hl] cp -1 jr z, .next call DmgToCgbBGPals call Intro_AnimateOceanWaves ld hl, hSCX dec [hl] dec [hl] ret .next ld hl, wIntroJumptableIndex inc [hl] ret .palettes: db %11100100 db %11100100 db %10010000 db %01000000 db %00000000 db -1 IntroScene17: ; delay a bit before leading into the title screen ld c, 64 .loop call DelayFrame dec c jr nz, .loop ; set done flag ld hl, wIntroJumptableIndex set 7, [hl] ret IntroScene3_ScrollToSurface: ld hl, wIntroFrameCounter2 inc [hl] ld a, [hl] and 3 jr nz, .skip_move_left ld hl, hSCX dec [hl] .skip_move_left and 1 jr nz, .no_carry ld hl, wGlobalAnimYOffset inc [hl] ld hl, hSCY ld a, [hl] dec [hl] and $f call z, Intro_UpdateTilemapAndBGMap ld a, [wIntroFrameCounter1] and a jr z, .carry .no_carry and a ret .carry scf ret IntroScene3_Jumper: jumptable .dw, wIntroFrameCounter1 .dw dw .scene3_2 dw .scene3_2 dw .scene3_2 dw .scene3_1 dw .scene3_2 dw .scene3_2 dw .scene3_3 dw .scene3_3 dw .scene3_3 dw .scene3_4 dw .scene3_5 dw .scene3_6 dw .scene3_6 dw .scene3_6 dw .scene3_6 dw .scene3_6 dw .scene3_6 .scene3_1: call Intro_InitLapras depixel 28, 28, 4, 4 call DmgToCgbObjPals ; fallthrough .scene3_2: call Intro_AnimateOceanWaves ret .scene3_3: call Intro_InitMagikarps call Intro_AnimateOceanWaves ret .scene3_4: ld hl, wIntroFrameCounter2 ld a, [hl] and %00011111 jr z, .load_palettes call Intro_InitMagikarps ret .load_palettes callfar Intro_LoadMagikarpPalettes ret .scene3_5: xor a ldh [hLCDCPointer], a ret .scene3_6: call Intro_UpdateLYOverrides ret Intro_InitBubble: ld hl, wIntroFrameCounter1 ld a, [hl] and $f ret nz ld a, [hl] and $70 swap a ld e, a ld d, 0 ld hl, .pixel_table add hl, de add hl, de ld e, [hl] inc hl ld d, [hl] ld a, SPRITE_ANIM_INDEX_GS_INTRO_BUBBLE call InitSpriteAnimStruct ret .pixel_table db 6 * 8, 14 * 8 + 4 db 14 * 8, 18 * 8 + 4 db 10 * 8, 16 * 8 + 4 db 12 * 8, 15 * 8 db 4 * 8, 13 * 8 db 8 * 8, 17 * 8 Intro_InitMagikarps: depixel 8, 7, 0, 7 ldh a, [hSGB] and a jr z, .ok depixel 4, 3, 0, 7 .ok ld hl, wIntroFrameCounter2 ld a, [hl] and e ret nz ld a, [hl] and d jr nz, .alternate_frame depixel 29, 28 call .InitAnim depixel 26, 0 call .InitAnim depixel 0, 24 call .InitAnim ret .alternate_frame depixel 28, 30 call .InitAnim depixel 31, 24 call .InitAnim depixel 2, 28 call .InitAnim ret .InitAnim: ld a, SPRITE_ANIM_INDEX_GS_INTRO_MAGIKARP call InitSpriteAnimStruct ret Intro_InitShellders: depixel 18, 7 call .InitAnim depixel 14, 10 call .InitAnim depixel 16, 15 .InitAnim: ld a, SPRITE_ANIM_INDEX_GS_INTRO_SHELLDER call InitSpriteAnimStruct ret Intro_InitLapras: ld a, [wIntroFrameCounter2] and %00011111 ret nz depixel 16, 24 ld a, SPRITE_ANIM_INDEX_GS_INTRO_LAPRAS call InitSpriteAnimStruct ret Intro_UnusedInitAerodactyl: ; unreferenced depixel 2, 0 ld a, SPRITE_ANIM_INDEX_UNUSED_INTRO_AERODACTYL call InitSpriteAnimStruct ret Intro_UpdateTilemapAndBGMap: ; add new tiles to top as water scene scrolls up to surface push hl push de ld a, [wIntroTilemapPointer + 0] ld e, a ld a, [wIntroTilemapPointer + 1] ld d, a ld hl, -$10 add hl, de ld a, l ld e, l ld [wIntroTilemapPointer + 0], a ld a, h ld d, h ld [wIntroTilemapPointer + 1], a hlcoord 0, 0 ld c, BG_MAP_WIDTH / 2 .loop call Intro_Draw2x2Tiles dec c jr nz, .loop ld a, [wIntroBGMapPointer + 0] ld e, a ld a, [wIntroBGMapPointer + 1] ld d, a ld hl, hCurSpriteYCoord add hl, de ld a, l ld [wIntroBGMapPointer + 0], a ld [wRequested2bppDest + 0], a ld a, h and %11111011 or %00001000 ld [wIntroBGMapPointer + 1], a ld [wRequested2bppDest + 1], a ld a, LOW(wTilemap) ld [wRequested2bppSource + 0], a ld a, HIGH(wTilemap) ld [wRequested2bppSource + 1], a ld a, 4 ld [wRequested2bppSize], a ld hl, wIntroFrameCounter1 dec [hl] pop de pop hl ret Intro_AnimateOceanWaves: ; uses a 2bpp request to copy tile IDs to the BG map ld hl, wIntroFrameCounter2 ld a, [hl] and 3 cp 3 ret z ld a, [wRequested2bppSize] and a ret nz ld a, [hl] and $30 swap a ld l, a ld h, 0 rept 5 add hl, hl endr ld de, .wave_tiles add hl, de ld a, l ld [wRequested2bppSource + 0], a ld a, h ld [wRequested2bppSource + 1], a ld a, LOW(vBGMap0 tile $1e) ld [wRequested2bppDest + 0], a ld a, HIGH(vBGMap0 tile $1e) ld [wRequested2bppDest + 1], a ld a, 2 ld [wRequested2bppSize], a ret .wave_tiles: rept 8 db $70, $71, $72, $73 endr rept 8 db $74, $75, $76, $77 endr rept 8 db $78, $79, $7a, $7b endr rept 8 db $7c, $7d, $7e, $7f endr Intro_InitSineLYOverrides: ld bc, wLYOverrides2 ld a, wLYOverrides2End - wLYOverrides2 ld de, vBGMap1 - vBGMap0 .loop push af push de farcall BattleAnim_Sine_e ld a, e ld [bc], a inc bc pop de inc e pop af dec a jr nz, .loop ret Intro_UpdateLYOverrides: ld bc, wLYOverrides ld e, $10 .loop1 ldh a, [hSCY] ld [bc], a inc bc dec e jr nz, .loop1 ld hl, wLYOverrides2 ld de, wLYOverrides2 + 1 ld a, [hl] push af ld a, $80 .loop2 push af ld a, [de] inc de ld [hli], a push hl ld hl, hSCY add [hl] ld [bc], a inc bc pop hl pop af dec a jr nz, .loop2 pop af ld [hl], a ret IntroScene6: ; Set up grass cutscene (Pikachu/Jigglypuff) ld hl, wIntroJumptableIndex inc [hl] ; only run once call DisableLCD callfar ClearSpriteAnims call Intro_ResetLYOverrides ld de, vTiles2 ld hl, Intro_GrassGFX1 call Decompress ld a, LOW(Intro_GrassMeta) ld [wIntroTilesPointer + 0], a ld a, HIGH(Intro_GrassMeta) ld [wIntroTilesPointer + 1], a hlbgcoord 0, 0 ld a, l ld [wIntroBGMapPointer + 0], a ld a, h ld [wIntroBGMapPointer + 1], a ld de, Intro_GrassTilemap ld a, e ld [wIntroTilemapPointer + 0], a ld a, d ld [wIntroTilemapPointer + 1], a call Intro_DrawBackground ld de, vTiles0 ld hl, Intro_GrassGFX2 call Decompress ld hl, wSpriteAnimDict ld a, SPRITE_ANIM_DICT_GS_INTRO ld [hli], a ld a, $00 ld [hli], a xor a ldh [hSCY], a ld [wGlobalAnimYOffset], a ld a, $60 ldh [hSCX], a ld a, $a0 ld [wGlobalAnimXOffset], a xor a ld [wIntroFrameCounter2], a call EnableLCD ld b, SCGB_GS_INTRO ld c, 1 call GetSGBLayout ld a, %11100100 call DmgToCgbBGPals depixel 28, 28, 4, 4 call DmgToCgbObjPals call Intro_InitJigglypuff xor a ; FALSE ld [wIntroSpriteStateFlag], a ret IntroScene7: ; scroll left to Jigglypuff call Intro_InitNote ld hl, wIntroFrameCounter2 ld a, [hl] inc [hl] and 3 ret z ld hl, hSCX ld a, [hl] and a jr z, .next dec [hl] ld hl, wGlobalAnimXOffset inc [hl] ret .next ld a, -1 ld [wIntroFrameCounter1], a call Intro_InitPikachu ld hl, wIntroJumptableIndex inc [hl] ret IntroScene8: ; stop scrolling, Pikachu attacks ld hl, wIntroFrameCounter1 ld a, [hl] and a jr z, .next dec [hl] call Intro_InitNote ld hl, wIntroFrameCounter2 inc [hl] ret .next xor a ld [wIntroFrameCounter1], a ld hl, wIntroJumptableIndex inc [hl] callfar Intro_LoadAllPal0 ret IntroScene9: ; scroll down and fade out ld hl, wIntroFrameCounter1 ld a, [hl] inc [hl] srl a srl a srl a ld e, a ld d, 0 ld hl, .palettes add hl, de ld a, [hl] cp -1 jr z, .next call DmgToCgbBGPals ld hl, hSCY inc [hl] ld hl, wGlobalAnimYOffset dec [hl] ret .next ld hl, wIntroJumptableIndex inc [hl] ret .palettes: db %11100100 db %11100100 db %11100100 db %11100100 db %11100100 db %10010000 db %01000000 db %00000000 db -1 Intro_DummyFunction: ; unreferenced ret Intro_InitNote: ld a, [wIntroSpriteStateFlag] and a ret nz ld hl, wIntroFrameCounter2 ld a, [hl] and %00111111 ret nz ld a, [hl] and %01111111 jr z, .invisible depixel 11, 6, 4, 0 ld a, SPRITE_ANIM_INDEX_GS_INTRO_NOTE call InitSpriteAnimStruct ret .invisible depixel 10, 6, 4, 0 ld a, SPRITE_ANIM_INDEX_GS_INTRO_INVISIBLE_NOTE call InitSpriteAnimStruct ret Intro_InitJigglypuff: depixel 14, 6 ld a, SPRITE_ANIM_INDEX_GS_INTRO_JIGGLYPUFF call InitSpriteAnimStruct ret Intro_InitPikachu: depixel 14, 24 ld a, SPRITE_ANIM_INDEX_GS_INTRO_PIKACHU call InitSpriteAnimStruct depixel 14, 24 ld a, SPRITE_ANIM_INDEX_GS_INTRO_PIKACHU_TAIL call InitSpriteAnimStruct ret IntroScene10: ; Set up fireball cutscene (Charizard, Johto starters) ld hl, wIntroJumptableIndex inc [hl] ; only run once call DisableLCD callfar ClearSpriteAnims call Intro_ResetLYOverrides call Intro_BlankTilemapAndBGMap ld de, vTiles2 ld hl, Intro_FireGFX1 call Decompress ld de, vTiles1 ld hl, Intro_FireGFX2 call Decompress ld de, vTiles0 ld hl, Intro_FireGFX3 ld bc, vTiles1 - vTiles0 call Decompress ld c, CHIKORITA ld de, vTiles0 tile $10 farcall Intro_GetMonFrontpic ld c, CYNDAQUIL ld de, vTiles0 tile $29 farcall Intro_GetMonFrontpic ld c, TOTODILE ld de, vTiles0 tile $42 farcall Intro_GetMonFrontpic ld hl, wSpriteAnimDict ld a, SPRITE_ANIM_DICT_GS_INTRO ld [hli], a ld a, $00 ld [hli], a call EnableLCD ld a, 0 call DrawIntroCharizardGraphic ld a, $80 ldh [hSCY], a xor a ldh [hSCX], a ld [wGlobalAnimYOffset], a ld [wGlobalAnimXOffset], a xor a ld [wIntroFrameCounter2], a ld b, SCGB_GS_INTRO ld c, 2 call GetSGBLayout ld a, %00111111 call DmgToCgbBGPals lb de, %11111111, %11111111 call DmgToCgbObjPals ld de, MUSIC_NONE call PlayMusic call DelayFrame ld de, MUSIC_GS_OPENING_2 call PlayMusic ret IntroScene11: ; scroll up to Charizard silhoutte, flash Johto starters ld hl, wIntroFrameCounter2 ld a, [hl] inc [hl] and 1 ret z call Intro_CheckSCYEvent ld hl, hSCY ld a, [hl] and a jr z, .next inc [hl] ret .next ld hl, wIntroJumptableIndex inc [hl] xor a ld [wIntroFrameCounter1], a ; fallthrough IntroScene12: ; load Charizard palettes ld hl, wIntroFrameCounter1 ld a, [hl] inc [hl] srl a srl a and 3 ld e, a ld d, 0 ld hl, .palettes add hl, de ld a, [hl] and a jr z, .next call DmgToCgbBGPals ld e, a ld d, a call DmgToCgbObjPals ret .next ld hl, wIntroJumptableIndex inc [hl] ld a, $80 ld [wIntroFrameCounter1], a ret .palettes: db %01101010 db %10100101 db %11100100 db %00000000 IntroScene13: ; Charizard mouth open ld hl, wIntroFrameCounter1 ld a, [hl] and a jr z, .next dec [hl] ret .next ld hl, wIntroJumptableIndex inc [hl] ld a, 1 call DrawIntroCharizardGraphic ld a, 4 ld [wIntroFrameCounter1], a ret IntroScene14: ; Charizard breathing fire ld hl, wIntroFrameCounter1 ld a, [hl] and a jr z, .next dec [hl] ret .next ld hl, wIntroJumptableIndex inc [hl] ld a, 2 call DrawIntroCharizardGraphic ld a, 64 ld [wIntroFrameCounter1], a xor a ld [wIntroFrameCounter2], a ld de, SFX_GS_INTRO_CHARIZARD_FIREBALL call PlaySFX ; fallthrough IntroScene15: ; Charizard mouth wide open / fireball starts call Intro_AnimateFireball ld hl, wIntroFrameCounter1 ld a, [hl] and a jr z, .next dec [hl] ret .next ld hl, wIntroJumptableIndex inc [hl] xor a ld [wIntroFrameCounter1], a ret IntroScene16: ; continue fireball / fade out palettes call Intro_AnimateFireball ld hl, wIntroFrameCounter1 ld a, [hl] inc [hl] swap a and 7 ld e, a ld d, 0 ld hl, .palettes add hl, de ld a, [hl] cp -1 jr z, .next call DmgToCgbBGPals ld e, a ld d, a call DmgToCgbObjPals ret .next ld hl, wIntroJumptableIndex inc [hl] ret .palettes: db %11100100 db %10010000 db %01000000 db %00000000 db -1 Intro_BlankTilemapAndBGMap: hlcoord 0, 0 ld bc, wTilemapEnd - wTilemap xor a call ByteFill hlbgcoord 0, 0 ld bc, vBGMap1 - vBGMap0 xor a call ByteFill ret Intro_CheckSCYEvent: ldh a, [hSCY] ld c, a ld hl, .scy_jumptable .loop ld a, [hli] cp -1 ret z cp c jr z, .value_found inc hl inc hl jr .loop .value_found ld a, [hli] ld h, [hl] ld l, a jp hl .scy_jumptable dbw $86, Intro_LoadChikoritaPalette dbw $87, Intro_ChikoritaAppears dbw $88, Intro_FlashMonPalette dbw $98, Intro_FlashSilhouette dbw $99, Intro_LoadCyndaquilPalette dbw $af, Intro_CyndaquilAppears dbw $b0, Intro_FlashMonPalette dbw $c0, Intro_FlashSilhouette dbw $c1, Intro_LoadTotodilePalette dbw $d7, Intro_TotodileAppears dbw $d8, Intro_FlashMonPalette dbw $e8, Intro_FlashSilhouette dbw $e9, Intro_LoadCharizardPalette db -1 Intro_ChikoritaAppears: ld de, SFX_GS_INTRO_POKEMON_APPEARS call PlaySFX depixel 22, 1 ld a, SPRITE_ANIM_INDEX_GS_INTRO_CHIKORITA call InitSpriteAnimStruct ret Intro_CyndaquilAppears: ld de, SFX_GS_INTRO_POKEMON_APPEARS call PlaySFX depixel 22, 20 ld a, SPRITE_ANIM_INDEX_GS_INTRO_CYNDAQUIL call InitSpriteAnimStruct ret Intro_TotodileAppears: ld de, SFX_GS_INTRO_POKEMON_APPEARS call PlaySFX depixel 22, 1 ld a, SPRITE_ANIM_INDEX_GS_INTRO_TOTODILE call InitSpriteAnimStruct ret Intro_FlashMonPalette: lb de, %11100100, %11100100 call DmgToCgbObjPals xor a call DmgToCgbBGPals ret Intro_FlashSilhouette: lb de, %11111111, %11111111 call DmgToCgbObjPals ld a, %00111111 call DmgToCgbBGPals ret Intro_LoadChikoritaPalette: ld c, CHIKORITA farcall Intro_LoadMonPalette ret Intro_LoadCyndaquilPalette: ld c, CYNDAQUIL farcall Intro_LoadMonPalette ret Intro_LoadTotodilePalette: ld c, TOTODILE farcall Intro_LoadMonPalette ret Intro_LoadCharizardPalette: ldh a, [hCGB] and a ld c, CYNDAQUIL jr nz, .got_mon ld c, CHARIZARD .got_mon farcall Intro_LoadMonPalette ret DrawIntroCharizardGraphic: push af hlcoord 0, 6 ld c, SCREEN_WIDTH * 8 xor a .loop1 ld [hli], a dec c jr nz, .loop1 pop af ld e, a ld d, 0 ld hl, .charizard_data rept 5 add hl, de endr ld e, [hl] inc hl ld c, [hl] inc hl ld b, [hl] inc hl ld a, [hli] ld h, [hl] ld l, a ld a, e .loop2_outer push bc push hl .loop2_inner ld [hli], a inc a dec c jr nz, .loop2_inner pop hl ld bc, SCREEN_WIDTH add hl, bc pop bc dec b jr nz, .loop2_outer ld a, 1 ldh [hBGMapMode], a call DelayFrame call DelayFrame call DelayFrame xor a ldh [hBGMapMode], a ret .charizard_data ; db vtile offset, width, height; dwcoord x, y ; mouth closed db $00, 8, 8 dwcoord 10, 6 ; mouth open db $40, 9, 8 dwcoord 9, 6 ; breathing fire db $88, 9, 8 dwcoord 8, 6 Intro_AnimateFireball: ld hl, wIntroFrameCounter2 ld a, [hl] inc [hl] and 3 ret nz depixel 12, 10, 4, 4 ld a, SPRITE_ANIM_INDEX_GS_INTRO_FIREBALL call InitSpriteAnimStruct ld hl, hSCX dec [hl] ld hl, wGlobalAnimXOffset inc [hl] ret Copy128Tiles: ; unreferenced ld bc, 128 tiles .loop ld a, [de] inc de ld [hli], a dec bc ld a, c or b jr nz, .loop ret Intro_DrawBackground: ld b, BG_MAP_WIDTH / 2 .outer_loop push hl ld c, BG_MAP_HEIGHT / 2 .inner_loop call Intro_Draw2x2Tiles dec c jr nz, .inner_loop pop hl push bc ld bc, 2 * BG_MAP_WIDTH add hl, bc pop bc dec b jr nz, .outer_loop ret Intro_Draw2x2Tiles: ; load tile data into a 2x2 section of the bgmap or tilemap push bc push de push hl push hl push hl ld a, [de] ld l, a ld h, 0 ld a, [wIntroTilesPointer + 0] ld e, a ld a, [wIntroTilesPointer + 1] ld d, a add hl, hl add hl, hl add hl, de ld e, l ld d, h pop hl ld a, [de] inc de ld [hli], a ld a, [de] inc de ld [hli], a pop hl ld bc, BG_MAP_WIDTH add hl, bc ld a, [de] inc de ld [hli], a ld a, [de] inc de ld [hli], a pop hl inc hl inc hl pop de inc de pop bc ret Intro_ResetLYOverrides: ld hl, wLYOverrides xor a ld c, wLYOverrides2 - wLYOverrides .loop ld [hli], a dec c jr nz, .loop ret Intro_WaterGFX1: INCBIN "gfx/intro/water1.2bpp.lz" Intro_WaterTilemap: INCBIN "gfx/intro/water.tilemap" Intro_WaterMeta: INCBIN "gfx/intro/water.bin" Intro_WaterGFX2: INCBIN "gfx/intro/water2.2bpp.lz" Intro_GrassGFX1: INCBIN "gfx/intro/grass1.2bpp.lz" Intro_GrassTilemap: INCBIN "gfx/intro/grass.tilemap" Intro_GrassMeta: INCBIN "gfx/intro/grass.bin" Intro_GrassGFX2: INCBIN "gfx/intro/grass2.2bpp.lz" Intro_FireGFX1: INCBIN "gfx/intro/fire1.2bpp.lz" Intro_FireGFX2: INCBIN "gfx/intro/fire2.2bpp.lz" Intro_FireGFX3: INCBIN "gfx/intro/fire3.2bpp.lz"