summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engine/gfx/color.asm2
-rw-r--r--engine/movie/gs_intro.asm615
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)