summaryrefslogtreecommitdiff
path: root/engine/intro.asm
diff options
context:
space:
mode:
authorU-Fish-PC\Daniel <corrnondacqb@yahoo.com>2014-05-22 18:13:20 -0400
committerU-Fish-PC\Daniel <corrnondacqb@yahoo.com>2014-05-22 18:13:20 -0400
commit15427f532085846ab6b51719be687951a094cb6c (patch)
treeedea9b189e91641a12dd521756894df84aeeace7 /engine/intro.asm
parentea3ba4cde3706b7c77efb705555ec0c86321cbe2 (diff)
Pull a lot of engine out of main.asm
Diffstat (limited to 'engine/intro.asm')
-rwxr-xr-xengine/intro.asm448
1 files changed, 448 insertions, 0 deletions
diff --git a/engine/intro.asm b/engine/intro.asm
new file mode 100755
index 00000000..89c344db
--- /dev/null
+++ b/engine/intro.asm
@@ -0,0 +1,448 @@
+PlayIntro: ; 41682 (10:5682)
+ xor a
+ ld [H_CURRENTPRESSEDBUTTONS], a
+ inc a
+ ld [H_AUTOBGTRANSFERENABLED], a
+ call PlayShootingStar
+ call PlayIntroScene
+ call GBFadeOut2
+ xor a
+ ld [$ffae], a
+ ld [H_AUTOBGTRANSFERENABLED], a
+ call CleanLCD_OAM
+ call DelayFrame
+ ret
+
+PlayIntroScene: ; 4169d (10:569d)
+ ld b, $7
+ call GoPAL_SET
+ ld a, %11100100
+ ld [rBGP], a
+ ld [rOBP0], a
+ ld [rOBP1], a
+ xor a
+ ld [$ffae], a
+ ld b, $3
+ call Func_4183f
+ ld a, 0
+ ld [W_BASECOORDX], a
+ ld a, 80
+ ld [W_BASECOORDY], a
+ ld bc, $606
+ call Func_417c7
+ ld de, $28ff
+ call Func_4180e
+ ret c
+
+; hip
+ ld a, (SFX_1f_5f - SFX_Headers_1f) / 3
+ call PlaySound
+ xor a
+ ld [$d09f], a
+ ld de, IntroNidorinoAnimation1
+ call AnimateIntroNidorino
+; hop
+ ld a, (SFX_1f_60 - SFX_Headers_1f) / 3
+ call PlaySound
+ ld de, IntroNidorinoAnimation2
+ call AnimateIntroNidorino
+ ld c, $a
+ call CheckForUserInterruption
+ ret c
+
+; hip
+ ld a, (SFX_1f_5f - SFX_Headers_1f) / 3
+ call PlaySound
+ ld de, IntroNidorinoAnimation1
+ call AnimateIntroNidorino
+; hop
+ ld a, (SFX_1f_60 - SFX_Headers_1f) / 3
+ call PlaySound
+ ld de, IntroNidorinoAnimation2
+ call AnimateIntroNidorino
+ ld c, $1e
+ call CheckForUserInterruption
+ ret c
+
+; raise
+ ld b, $4
+ call Func_4183f
+ ld a, (SFX_1f_61 - SFX_Headers_1f) / 3
+ call PlaySound
+ ld de, $401
+ call Func_4180e
+ ld c, $1e
+ call CheckForUserInterruption
+ ret c
+
+; slash
+ ld b, $5
+ call Func_4183f
+ ld a, (SFX_1f_62 - SFX_Headers_1f) / 3
+ call PlaySound
+ ld de, $800
+ call Func_4180e
+; hip
+ ld a, (SFX_1f_5f - SFX_Headers_1f) / 3
+ call PlaySound
+ ld a, $24
+ ld [$d09f], a
+ ld de, IntroNidorinoAnimation3
+ call AnimateIntroNidorino
+ ld c, $1e
+ call CheckForUserInterruption
+ ret c
+
+ ld de, $401
+ call Func_4180e
+ ld b, $3
+ call Func_4183f
+ ld c, $3c
+ call CheckForUserInterruption
+ ret c
+
+; hip
+ ld a, (SFX_1f_5f - SFX_Headers_1f) / 3
+ call PlaySound
+ xor a
+ ld [$d09f], a
+ ld de, IntroNidorinoAnimation4 ; $5931
+ call AnimateIntroNidorino
+; hop
+ ld a, (SFX_1f_60 - SFX_Headers_1f) / 3
+ call PlaySound
+ ld de, IntroNidorinoAnimation5 ; $593c
+ call AnimateIntroNidorino
+ ld c, $14
+ call CheckForUserInterruption
+ ret c
+
+ ld a, $24
+ ld [$d09f], a
+ ld de, IntroNidorinoAnimation6 ; $5947
+ call AnimateIntroNidorino
+ ld c, $1e
+ call CheckForUserInterruption
+ ret c
+
+; lunge
+ ld a, (SFX_1f_5e - SFX_Headers_1f) / 3
+ call PlaySound
+ ld a, $48
+ ld [$d09f], a
+ ld de, IntroNidorinoAnimation7 ; $5950
+ jp AnimateIntroNidorino
+
+AnimateIntroNidorino: ; 41793 (10:5793)
+ ld a, [de]
+ cp $50
+ ret z
+ ld [W_BASECOORDY], a ; $d082
+ inc de
+ ld a, [de]
+ ld [W_BASECOORDX], a ; $d081
+ push de
+ ld c, $24
+ call Func_417ae
+ ld c, 5
+ call DelayFrames
+ pop de
+ inc de
+ jr AnimateIntroNidorino
+
+Func_417ae: ; 417ae (10:57ae)
+ ld hl, wOAMBuffer
+ ld a, [$d09f]
+ ld d, a
+.asm_417b5
+ ld a, [W_BASECOORDY] ; $d082
+ add [hl]
+ ld [hli], a
+ ld a, [W_BASECOORDX] ; $d081
+ add [hl]
+ ld [hli], a
+ ld a, d
+ ld [hli], a
+ inc hl
+ inc d
+ dec c
+ jr nz, .asm_417b5
+ ret
+
+Func_417c7: ; 417c7 (10:57c7)
+ ld hl, wOAMBuffer
+ ld d, $0
+.asm_417cc
+ push bc
+ ld a, [W_BASECOORDY] ; $d082
+ ld e, a
+.asm_417d1
+ ld a, e
+ add $8
+ ld e, a
+ ld [hli], a
+ ld a, [W_BASECOORDX] ; $d081
+ ld [hli], a
+ ld a, d
+ ld [hli], a
+ ld a, $80
+ ld [hli], a
+ inc d
+ dec c
+ jr nz, .asm_417d1
+ ld a, [W_BASECOORDX] ; $d081
+ add $8
+ ld [W_BASECOORDX], a ; $d081
+ pop bc
+ dec b
+ jr nz, .asm_417cc
+ ret
+
+Func_417f0: ; 417f0 (10:57f0)
+ ld hl, $9c00
+ ld bc, $240
+ jr asm_417fe
+
+Func_417f8: ; 417f8 (10:57f8)
+ FuncCoord 0, 4 ; $c3f0
+ ld hl, Coord
+ ld bc, $c8
+asm_417fe: ; 417fe (10:57fe)
+ ld [hl], $0
+ inc hl
+ dec bc
+ ld a, b
+ or c
+ jr nz, asm_417fe
+ ret
+
+Func_41807: ; 41807 (10:5807)
+ ld a, $1
+.asm_41809
+ ld [hli], a
+ dec c
+ jr nz, .asm_41809
+ ret
+
+Func_4180e: ; 4180e (10:580e)
+ ld a, e
+ cp $ff
+ jr z, .asm_4181d
+ cp $1
+ jr z, .asm_4182d
+ ld a, [$ffae]
+ dec a
+ dec a
+ jr .asm_41831
+.asm_4181d
+ push de
+ ld a, $2
+ ld [W_BASECOORDX], a ; $d081
+ xor a
+ ld [W_BASECOORDY], a ; $d082
+ ld c, $24
+ call Func_417ae
+ pop de
+.asm_4182d
+ ld a, [$ffae]
+ inc a
+ inc a
+.asm_41831
+ ld [$ffae], a
+ push de
+ ld c, $2
+ call CheckForUserInterruption
+ pop de
+ ret c
+ dec d
+ jr nz, Func_4180e
+ ret
+
+Func_4183f: ; 4183f (10:583f)
+ FuncCoord 13, 7 ; $c439
+ ld hl, Coord
+
+Func_41842: ; 41842 (10:5842)
+ ld c, $0
+ ld a, $31
+ jp Predef ; indirect jump to Func_79dda
+
+Func_41849: ; 41849 (10:5849)
+ ld a, $33
+ call Predef ; indirect jump to Func_79869
+ ld a, b
+ jp PlaySound
+
+LoadIntroGraphics: ; 41852 (10:5852)
+ ld hl, FightIntroBackMon ; $5a99
+ ld de, $9000
+ ld bc, $600
+ ld a, BANK(FightIntroBackMon)
+ call FarCopyData2
+ ld hl, GameFreakIntro ; $5959
+ ld de, $9600
+ ld bc, $140
+ ld a, BANK(GameFreakIntro)
+ call FarCopyData2
+ ld hl, GameFreakIntro ; $5959
+ ld de, $8800
+ ld bc, $140
+ ld a, BANK(GameFreakIntro)
+ call FarCopyData2
+ ld hl, FightIntroFrontMon ; $6099
+ ld de, $8000
+ ld bc, $6c0
+ ld a, BANK(FightIntroFrontMon)
+ jp FarCopyData2
+
+PlayShootingStar: ; 4188a (10:588a)
+ ld b, $c
+ call GoPAL_SET
+ callba LoadCopyrightAndTextBoxTiles
+ ld a, $e4
+ ld [rBGP], a ; $ff47
+ ld c, $b4
+ call DelayFrames
+ call ClearScreen
+ call DisableLCD
+ xor a
+ ld [W_CUROPPONENT], a ; $d059
+ call Func_418e9
+ call LoadIntroGraphics
+ call EnableLCD
+ ld hl, rLCDC ; $ff40
+ res 5, [hl]
+ set 3, [hl]
+ ld c, $40
+ call DelayFrames
+ callba AnimateShootingStar
+ push af
+ pop af
+ jr c, .asm_418d0
+ ld c, $28
+ call DelayFrames
+.asm_418d0
+ ld a, Bank(Func_7d8ea)
+ ld [$c0ef], a
+ ld [$c0f0], a
+ ld a, MUSIC_INTRO_BATTLE
+ ld [$c0ee], a
+ call PlaySound
+ call Func_417f8
+ call CleanLCD_OAM
+ jp Delay3
+
+Func_418e9: ; 418e9 (10:58e9)
+ call Func_417f0
+ ld hl, wTileMap
+ ld c, $50
+ call Func_41807
+ FuncCoord 0, 14 ; $c4b8
+ ld hl, Coord
+ ld c, $50
+ call Func_41807
+ ld hl, $9c00
+ ld c, $80
+ call Func_41807
+ ld hl, $9dc0
+ ld c, $80
+ jp Func_41807
+
+Func_4190c: ; 4190c (10:590c)
+ ret
+
+IntroNidorinoAnimation0: ; 4190d (10:590d)
+ db 0, 0
+ db $50
+
+IntroNidorinoAnimation1: ; 41910 (10:5910)
+; This is a sequence of pixel movements for part of the Nidorino animation. This
+; list describes how Nidorino should hop.
+; First byte is y movement, second byte is x movement
+ db 0, 0
+ db -2, 2
+ db -1, 2
+ db 1, 2
+ db 2, 2
+ db $50 ; list terminator
+
+IntroNidorinoAnimation2: ; 4191b (10:591b)
+; This is a sequence of pixel movements for part of the Nidorino animation.
+; First byte is y movement, second byte is x movement
+ db 0, 0
+ db -2, -2
+ db -1, -2
+ db 1, -2
+ db 2, -2
+ db $50 ; list terminator
+
+IntroNidorinoAnimation3: ; 41926 (10:5926)
+; This is a sequence of pixel movements for part of the Nidorino animation.
+; First byte is y movement, second byte is x movement
+ db 0, 0
+ db -12, 6
+ db -8, 6
+ db 8, 6
+ db 12, 6
+ db $50 ; list terminator
+
+IntroNidorinoAnimation4: ; 41931 (10:5931)
+; This is a sequence of pixel movements for part of the Nidorino animation.
+; First byte is y movement, second byte is x movement
+ db 0, 0
+ db -8, -4
+ db -4, -4
+ db 4, -4
+ db 8, -4
+ db $50 ; list terminator
+
+IntroNidorinoAnimation5: ; 4193c (10:593c)
+; This is a sequence of pixel movements for part of the Nidorino animation.
+; First byte is y movement, second byte is x movement
+ db 0, 0
+ db -8, 4
+ db -4, 4
+ db 4, 4
+ db 8, 4
+ db $50 ; list terminator
+
+IntroNidorinoAnimation6: ; 41947 (10:5947)
+; This is a sequence of pixel movements for part of the Nidorino animation.
+; First byte is y movement, second byte is x movement
+ db 0, 0
+ db 2, 0
+ db 2, 0
+ db 0, 0
+ db $50 ; list terminator
+
+IntroNidorinoAnimation7: ; 41950 (10:5950)
+; This is a sequence of pixel movements for part of the Nidorino animation.
+; First byte is y movement, second byte is x movement
+ db -8, -16
+ db -7, -14
+ db -6, -12
+ db -4, -10
+ db $50 ; list terminator
+
+GameFreakIntro: ; 41959 (10:5959)
+ INCBIN "gfx/gamefreak_intro.h8.2bpp"
+ INCBIN "gfx/gamefreak_logo.2bpp"
+ ds $10 ; blank tile
+
+FightIntroBackMon: ; 41a99 (10:5a99)
+ INCBIN "gfx/intro_fight.2bpp"
+
+FightIntroFrontMon: ; 42099 (10:6099)
+
+IF _RED
+ INCBIN "gfx/red/intro_nido_1.6x6.2bpp"
+ INCBIN "gfx/red/intro_nido_2.6x6.2bpp"
+ INCBIN "gfx/red/intro_nido_3.6x6.2bpp"
+ ds $10 ; blank tile
+ENDC
+IF _BLUE
+ INCBIN "gfx/blue/intro_purin_1.6x6.2bpp"
+ INCBIN "gfx/blue/intro_purin_2.6x6.2bpp"
+ INCBIN "gfx/blue/intro_purin_3.6x6.2bpp"
+ ds $10 ; blank tile
+ENDC