diff options
-rw-r--r-- | engine/gfx/color.asm | 2 | ||||
-rw-r--r-- | engine/movie/gs_intro.asm | 615 |
2 files changed, 599 insertions, 18 deletions
diff --git a/engine/gfx/color.asm b/engine/gfx/color.asm index f806a0c8..714c76f8 100644 --- a/engine/gfx/color.asm +++ b/engine/gfx/color.asm @@ -172,7 +172,7 @@ Function9102: RGB 08, 16, 28 RGB 00, 00, 00 -Unreferenced_Function9136: +Function9136: call CheckCGB ret nz ldh a, [hSGB] diff --git a/engine/movie/gs_intro.asm b/engine/movie/gs_intro.asm index f6c691a1..4cace4d7 100644 --- a/engine/movie/gs_intro.asm +++ b/engine/movie/gs_intro.asm @@ -511,38 +511,605 @@ endr GFX_e5015: dr ($e5015 - BANK39_OFFSET), ($e5095 - BANK39_OFFSET) + Functione5095: - dr ($e5095 - BANK39_OFFSET), ($e50af - BANK39_OFFSET) + ld bc, $c7a0 ; ? + ld a, $90 ; ? + ld de, $0400 ; ? + +.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 + Functione50af: - dr ($e50af - BANK39_OFFSET), ($e50d8 - BANK39_OFFSET) + ld bc, $c700 ; ? + ld e, $10 ; ? + +.loop1 + ldh a, [hSCY] + ld [bc], a + inc bc + dec e + jr nz, .loop1 + + ld hl, $c7a0 ; ? + ld de, $c7a1 ; ? + 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: - dr ($e50d8 - BANK39_OFFSET), ($e5156 - BANK39_OFFSET) + ld hl, wIntroJumptableIndex + inc [hl] + call DisableLCD + callfar ClearSpriteAnims + call Functione54dd + ld de, vTiles2 + ld hl, GFX_e6058 + call Decompress + ld a, LOW(GFX_e6338) + ld [wcb15 + 0], a + ld a, HIGH(GFX_e6338) + ld [wcb15 + 1], a + ld hl, vBGMap0 + ld a, l + ld [wcb11 + 0], a + ld a, h + ld [wcb11 + 1], a + ld de, GFX_e6238 + ld a, e + ld [wcb13 + 0], a + ld a, d + ld [wcb13 + 1], a + call Functione5498 + ld de, vTiles0 + ld hl, GFX_e63a8 + call Decompress + ld hl, $c508 ; ? + ld a, $01 + 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 [wcb18], 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 Functione51ef + xor a + ld [wcb19], a + ret + IntroScene7: - dr ($e5156 - BANK39_OFFSET), ($e517b - BANK39_OFFSET) + call Functione51cc + ld hl, wcb18 + ld a, [hl] + inc [hl] + and $03 + ret z + ld hl, hSCX + ld a, [hl] + and a + jr z, .asm_e516e + dec [hl] + ld hl, wGlobalAnimXOffset + inc [hl] + ret + +.asm_e516e + ld a, -1 + ld [wcb17], a + call Functione51f8 + ld hl, wIntroJumptableIndex + inc [hl] + ret + IntroScene8: - dr ($e517b - BANK39_OFFSET), ($e519a - BANK39_OFFSET) + ld hl, wcb17 + ld a, [hl] + and a + jr z, .asm_e518b + dec [hl] + call Functione51cc + ld hl, wcb18 + inc [hl] + ret + +.asm_e518b: + xor a + ld [wcb17], a + ld hl, wIntroJumptableIndex + inc [hl] + callfar Function9136 + ret + IntroScene9: - dr ($e519a - BANK39_OFFSET), ($e5209 - BANK39_OFFSET) + ld hl, wcb17 + ld a, [hl] + inc [hl] + srl a + srl a + srl a + ld e, a + ld d, 0 + ld hl, .pals + add hl, de + ld a, [hl] + cp -1 + jr z, .done + call DmgToCgbBGPals + ld hl, hSCY + inc [hl] + ld hl, wGlobalAnimYOffset + dec [hl] + ret + +.done + ld hl, wIntroJumptableIndex + inc [hl] + ret + +.pals + db %11100100, %11100100, %11100100, %11100100 + db %11100100, %10010000, %01000000, %00000000 + db -1 + + ret ; unused + +Functione51cc: + ld a, [wcb19] + and a + ret nz + ld hl, wcb18 + ld a, [hl] + and $3f + ret nz + ld a, [hl] + and $7f + jr z, .asm_e51e6 + depixel 11, 6, 4, 0 + ld a, SPRITE_ANIM_INDEX_GS_INTRO_NOTE + call InitSpriteAnimStruct + ret + +.asm_e51e6: + depixel 10, 6, 4, 0 + ld a, SPRITE_ANIM_INDEX_GS_INTRO_INVISIBLE_NOTE + call InitSpriteAnimStruct + ret + +Functione51ef: + depixel 14, 6 + ld a, SPRITE_ANIM_INDEX_GS_INTRO_JIGGLYPUFF + call InitSpriteAnimStruct + ret + +Functione51f8: + 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: - dr ($e5209 - BANK39_OFFSET), ($e529f - BANK39_OFFSET) + ld hl, wIntroJumptableIndex + inc [hl] + call DisableLCD + callfar ClearSpriteAnims + call Functione54dd + call Functione5361 + ld de, vTiles2 + ld hl, GFX_e6908 + call Decompress + ld de, vTiles1 + ld hl, GFX_e6e48 + call Decompress + ld de, vTiles0 + ld hl, GFX_e71c8 + ld bc, vTiles1 - vTiles0 + call Decompress + ld c, CHIKORITA + ld de, vTiles0 tile $10 + farcall Function1587f + ld c, CYNDAQUIL + ld de, vTiles0 tile $29 + farcall Function1587f + ld c, TOTODILE + ld de, vTiles0 tile $42 + farcall Function1587f + ld hl, $c508 ; ? + ld a, $01 + ld [hli], a + ld a, $00 + ld [hli], a + call EnableLCD + ld a, LOW(vTiles0) + call Functione5422 + ld a, HIGH(vTiles0) + ldh [hSCY], a + xor a + ldh [hSCX], a + ld [wGlobalAnimYOffset], a + ld [wGlobalAnimXOffset], a + xor a + ld [wcb18], a + ld b, SCGB_GS_INTRO + ld c, $02 + 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: - dr ($e529f - BANK39_OFFSET), ($e52bb - BANK39_OFFSET) + ld hl, wcb18 + ld a, [hl] + inc [hl] + and $01 + ret z + call Functione5376 + ld hl, hSCY + ld a, [hl] + and a + jr z, .asm_e52b3 + inc [hl] + ret + +.asm_e52b3 + ld hl, wIntroJumptableIndex + inc [hl] + xor a + ld [wcb17], a +; fall through IntroScene12: - dr ($e52bb - BANK39_OFFSET), ($e52e8 - BANK39_OFFSET) + ld hl, wcb17 + ld a, [hl] + inc [hl] + srl a + srl a + and $03 + ld e, a + ld d, 0 + ld hl, .pals + add hl, de + ld a, [hl] + and a + jr z, .asm_e52da + call DmgToCgbBGPals + ld e, a + ld d, a + call DmgToCgbObjPals + ret + +.asm_e52da + ld hl, wIntroJumptableIndex + inc [hl] + ld a, $80 ; ? + ld [wcb17], a + ret + +.pals + db %01101010, %10100101, %11100100, %00000000 + IntroScene13: - dr ($e52e8 - BANK39_OFFSET), ($e5300 - BANK39_OFFSET) + ld hl, wcb17 + ld a, [hl] + and a + jr z, .asm_e52f1 + dec [hl] + ret + +.asm_e52f1 + ld hl, wIntroJumptableIndex + inc [hl] + ld a, $01 + call Functione5422 + ld a, $04 + ld [wcb17], a + ret + IntroScene14: - dr ($e5300 - BANK39_OFFSET), ($e5321 - BANK39_OFFSET) + ld hl, wcb17 + ld a, [hl] + and a + jr z, .asm_e5309 + dec [hl] + ret + +.asm_e5309 + ld hl, wIntroJumptableIndex + inc [hl] + ld a, $02 + call Functione5422 + ld a, $40 + ld [wcb17], a + xor a + ld [wcb18], a + ld de, SFX_GS_INTRO_CHARIZARD_FIREBALL + call PlaySFX +; fall through IntroScene15: - dr ($e5321 - BANK39_OFFSET), ($e5336 - BANK39_OFFSET) + call Functione5473 + ld hl, wcb17 + ld a, [hl] + and a + jr z, .asm_e532d + dec [hl] + ret + +.asm_e532d: + ld hl, wIntroJumptableIndex + inc [hl] + xor a + ld [wcb17], a + ret + IntroScene16: - dr ($e5336 - BANK39_OFFSET), ($e5498 - BANK39_OFFSET) + call Functione5473 + ld hl, wcb17 + ld a, [hl] + inc [hl] + swap a + and $07 + ld e, a + ld d, 0 + ld hl, .pals + add hl, de + ld a, [hl] + cp -1 + jr z, .asm_e5357 + call DmgToCgbBGPals + ld e, a + ld d, a + call DmgToCgbObjPals + ret + +.asm_e5357: + ld hl, wIntroJumptableIndex + inc [hl] + ret + +.pals + db %11100100, %10010000, %01000000, %00000000 + db -1 + +Functione5361: + hlcoord 0, 0 + ld bc, wTilemapEnd - wTilemap + xor a + call ByteFill + ld hl, vBGMap0 + ld bc, vBGMap1 - vBGMap0 + xor a + call ByteFill + ret + +Functione5376: + ldh a, [hSCY] + ld c, a + ld hl, .unknown_e538b + +.asm_e537c: + ld a, [hli] + cp -1 + ret z + cp c + jr z, .asm_e5387 + inc hl + inc hl + jr .asm_e537c + +.asm_e5387: + ld a, [hli] + ld h, [hl] + ld l, a + jp hl + +.unknown_e538b + dr ($e538b - BANK39_OFFSET), ($e5422 - BANK39_OFFSET) + +Functione5422: + push af + hlcoord 0, 6 + ld c, $a0 + xor a +.loop1 + ld [hli], a + dec c + jr nz, .loop1 + + pop af + ld e, a + ld d, 0 + ld hl, .unknown_e5464 +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, $0014 + 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 + +.unknown_e5464 + db $00, $08, $08, $22, $c4 + db $40, $09, $08, $21, $c4 + db $88, $09, $08, $20, $c4 + +Functione5473: + ld hl, wcb18 + ld a, [hl] + inc [hl] + and $03 + 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 + +Functione548c: + ld bc, $0800 +.loop + ld a, [de] + inc de + ld [hli], a + dec bc + ld a, c + or b + jr nz, .loop + ret + Functione5498: - dr ($e5498 - BANK39_OFFSET), ($e54ae - BANK39_OFFSET) + ld b, $10 +.loop_outer + push hl + ld c, $10 +.loop_inner + call Functione54ae + dec c + jr nz, .loop_inner + pop hl + push bc + ld bc, $0040 + add hl, bc + pop bc + dec b + jr nz, .loop_outer + ret + Functione54ae: - dr ($e54ae - BANK39_OFFSET), ($e54dd - BANK39_OFFSET) + push bc + push de + push hl + push hl + push hl + ld a, [de] + ld l, a + ld h, $00 + ld a, [wcb15 + 0] + ld e, a + ld a, [wcb15 + 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, $0020 + 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 + Functione54dd: - dr ($e54dd - BANK39_OFFSET), ($e54e8 - BANK39_OFFSET) + ld hl, $c700 ; ? + xor a + ld c, $a0 +.loop + ld [hli], a + dec c + jr nz, .loop + ret + GFX_e54e8: dr ($e54e8 - BANK39_OFFSET), ($e5ab8 - BANK39_OFFSET) GFX_e5ab8: @@ -550,4 +1117,18 @@ GFX_e5ab8: GFX_e5bc8: dr ($e5bc8 - BANK39_OFFSET), ($e5cd8 - BANK39_OFFSET) GFX_e5cd8: - dr ($e5cd8 - BANK39_OFFSET), ($e7678 - BANK39_OFFSET) + dr ($e5cd8 - BANK39_OFFSET), ($e6058 - BANK39_OFFSET) +GFX_e6058: + dr ($e6058 - BANK39_OFFSET), ($e6238 - BANK39_OFFSET) +GFX_e6238: + dr ($e6238 - BANK39_OFFSET), ($e6338 - BANK39_OFFSET) +GFX_e6338: + dr ($e6338 - BANK39_OFFSET), ($e63a8 - BANK39_OFFSET) +GFX_e63a8: + dr ($e63a8 - BANK39_OFFSET), ($e6908 - BANK39_OFFSET) +GFX_e6908: + dr ($e6908 - BANK39_OFFSET), ($e6e48 - BANK39_OFFSET) +GFX_e6e48: + dr ($e6e48 - BANK39_OFFSET), ($e71c8 - BANK39_OFFSET) +GFX_e71c8: + dr ($e71c8 - BANK39_OFFSET), ($e7678 - BANK39_OFFSET) |