mirror of
https://github.com/thornAvery/kep-hack.git
synced 2025-09-16 18:30:50 +12:00
intro stuff
This commit is contained in:
parent
fb559f1f4e
commit
9fbd9e9a1f
|
@ -28,67 +28,78 @@ AnimateShootingStar: ; 70044 (1c:4044)
|
|||
call LoadShootingStarGraphics
|
||||
ld a, (SFX_1f_67 - SFX_Headers_1f) / 3
|
||||
call PlaySound
|
||||
|
||||
; Move the big star down and left across the screen.
|
||||
ld hl, wOAMBuffer
|
||||
ld bc, $a004
|
||||
.asm_70052
|
||||
.bigStarLoop
|
||||
push hl
|
||||
push bc
|
||||
.asm_70054
|
||||
ld a, [hl]
|
||||
add $4
|
||||
.bigStarInnerLoop
|
||||
ld a, [hl] ; Y
|
||||
add 4
|
||||
ld [hli], a
|
||||
ld a, [hl]
|
||||
add $fc
|
||||
ld a, [hl] ; X
|
||||
add -4
|
||||
ld [hli], a
|
||||
inc hl
|
||||
inc hl
|
||||
dec c
|
||||
jr nz, .asm_70054
|
||||
ld c, $1
|
||||
jr nz, .bigStarInnerLoop
|
||||
ld c, 1
|
||||
call CheckForUserInterruption
|
||||
pop bc
|
||||
pop hl
|
||||
ret c
|
||||
ld a, [hl]
|
||||
cp $50
|
||||
jr nz, .asm_70070
|
||||
jr .asm_70052
|
||||
.asm_70070
|
||||
cp 80
|
||||
jr nz, .next
|
||||
jr .bigStarLoop
|
||||
.next
|
||||
cp b
|
||||
jr nz, .asm_70052
|
||||
jr nz, .bigStarLoop
|
||||
|
||||
; Clear big star OAM.
|
||||
ld hl, wOAMBuffer
|
||||
ld c, $4
|
||||
ld de, $4
|
||||
.asm_7007b
|
||||
ld [hl], $a0
|
||||
ld c, 4
|
||||
ld de, 4
|
||||
.clearOAMLoop
|
||||
ld [hl], 160
|
||||
add hl, de
|
||||
dec c
|
||||
jr nz, .asm_7007b
|
||||
ld b, $3
|
||||
.asm_70083
|
||||
jr nz, .clearOAMLoop
|
||||
|
||||
; Make Gamefreak logo flash.
|
||||
ld b, 3
|
||||
.flashLogoLoop
|
||||
ld hl, rOBP0
|
||||
rrc [hl]
|
||||
rrc [hl]
|
||||
ld c, $a
|
||||
ld c, 10
|
||||
call CheckForUserInterruption
|
||||
ret c
|
||||
dec b
|
||||
jr nz, .asm_70083
|
||||
jr nz, .flashLogoLoop
|
||||
|
||||
; Copy 24 instances of the small stars OAM data.
|
||||
; Note that their coordinates put them off-screen.
|
||||
ld de, wOAMBuffer
|
||||
ld a, $18
|
||||
.asm_70098
|
||||
ld a, 24
|
||||
.initSmallStarsOAMLoop
|
||||
push af
|
||||
ld hl, OAMData_700ee
|
||||
ld bc, $4
|
||||
ld hl, SmallStarsOAM
|
||||
ld bc, 4
|
||||
call CopyData
|
||||
pop af
|
||||
dec a
|
||||
jr nz, .asm_70098
|
||||
jr nz, .initSmallStarsOAMLoop
|
||||
|
||||
; Animate the small stars falling from the Gamefreak logo.
|
||||
xor a
|
||||
ld [wWhichTrade], a
|
||||
ld hl, PointerTable_700f2
|
||||
ld c, $6
|
||||
.asm_700af
|
||||
ld [wMoveDownSmallStarsOAMCount], a
|
||||
ld hl, SmallStarsWaveCoordsPointerTable
|
||||
ld c, 6
|
||||
.smallStarsLoop
|
||||
ld a, [hli]
|
||||
ld e, a
|
||||
ld a, [hli]
|
||||
|
@ -96,100 +107,109 @@ AnimateShootingStar: ; 70044 (1c:4044)
|
|||
push bc
|
||||
push hl
|
||||
ld hl, wOAMBuffer + $50
|
||||
ld c, $4
|
||||
.asm_700ba
|
||||
ld c, 4
|
||||
.smallStarsInnerLoop ; introduce new wave of 4 small stars OAM entries
|
||||
ld a, [de]
|
||||
cp $ff
|
||||
jr z, .asm_700d5
|
||||
ld [hli], a
|
||||
jr z, .next2
|
||||
ld [hli], a ; Y
|
||||
inc de
|
||||
ld a, [de]
|
||||
ld [hli], a
|
||||
ld [hli], a ; X
|
||||
inc de
|
||||
inc hl
|
||||
inc hl
|
||||
dec c
|
||||
jr nz, .asm_700ba
|
||||
ld a, [wWhichTrade]
|
||||
cp $18
|
||||
jr z, .asm_700d5
|
||||
add $6
|
||||
ld [wWhichTrade], a
|
||||
.asm_700d5
|
||||
call Func_7011f
|
||||
jr nz, .smallStarsInnerLoop
|
||||
ld a, [wMoveDownSmallStarsOAMCount]
|
||||
cp 24
|
||||
jr z, .next2
|
||||
add 6 ; should be 4, but the extra 2 aren't visible on screen
|
||||
ld [wMoveDownSmallStarsOAMCount], a
|
||||
.next2
|
||||
call MoveDownSmallStars
|
||||
push af
|
||||
|
||||
; shift the existing OAM entries down to make room for the next wave
|
||||
ld hl, wOAMBuffer + $10
|
||||
ld de, wOAMBuffer
|
||||
ld bc, $50
|
||||
call CopyData
|
||||
|
||||
pop af
|
||||
pop hl
|
||||
pop bc
|
||||
ret c
|
||||
dec c
|
||||
jr nz, .asm_700af
|
||||
jr nz, .smallStarsLoop
|
||||
and a
|
||||
ret
|
||||
|
||||
OAMData_700ee: ; 700ee (1c:40ee)
|
||||
SmallStarsOAM: ; 700ee (1c:40ee)
|
||||
db $00,$00,$A2,$90
|
||||
|
||||
PointerTable_700f2: ; 700f2 (1c:40f2)
|
||||
dw OAMData_700fe
|
||||
dw OAMData_70106
|
||||
dw OAMData_7010e
|
||||
dw OAMData_70116
|
||||
dw OAMData_7011e
|
||||
dw OAMData_7011e
|
||||
SmallStarsWaveCoordsPointerTable: ; 700f2 (1c:40f2)
|
||||
dw SmallStarsWave1Coords
|
||||
dw SmallStarsWave2Coords
|
||||
dw SmallStarsWave3Coords
|
||||
dw SmallStarsWave4Coords
|
||||
dw SmallStarsEmptyWave
|
||||
dw SmallStarsEmptyWave
|
||||
|
||||
; each entry is only half of an OAM tile
|
||||
OAMData_700fe: ; 700fe (1c:40fe)
|
||||
; The stars that fall from the Gamefreak logo come in 4 waves of 4 OAM entries.
|
||||
; These arrays contain the Y and X coordinates of each OAM entry.
|
||||
|
||||
SmallStarsWave1Coords: ; 700fe (1c:40fe)
|
||||
db $68,$30
|
||||
db $68,$40
|
||||
db $68,$58
|
||||
db $68,$78
|
||||
|
||||
OAMData_70106: ; 70106 (1c:4106)
|
||||
SmallStarsWave2Coords: ; 70106 (1c:4106)
|
||||
db $68,$38
|
||||
db $68,$48
|
||||
db $68,$60
|
||||
db $68,$70
|
||||
|
||||
OAMData_7010e: ; 7010e (1c:410e)
|
||||
SmallStarsWave3Coords: ; 7010e (1c:410e)
|
||||
db $68,$34
|
||||
db $68,$4C
|
||||
db $68,$54
|
||||
db $68,$64
|
||||
|
||||
OAMData_70116: ; 70116 (1c:4116)
|
||||
SmallStarsWave4Coords: ; 70116 (1c:4116)
|
||||
db $68,$3C
|
||||
db $68,$5C
|
||||
db $68,$6C
|
||||
db $68,$74
|
||||
|
||||
OAMData_7011e: ; 7011e (1c:411e)
|
||||
SmallStarsEmptyWave: ; 7011e (1c:411e)
|
||||
db $FF
|
||||
|
||||
Func_7011f: ; 7011f (1c:411f)
|
||||
ld b, $8
|
||||
.asm_70121
|
||||
MoveDownSmallStars: ; 7011f (1c:411f)
|
||||
ld b, 8
|
||||
.loop
|
||||
ld hl, wOAMBuffer + $5c
|
||||
ld a, [wWhichTrade]
|
||||
ld de, $fffc
|
||||
ld a, [wMoveDownSmallStarsOAMCount]
|
||||
ld de, -4
|
||||
ld c, a
|
||||
.asm_7012b
|
||||
inc [hl]
|
||||
.innerLoop
|
||||
inc [hl] ; Y
|
||||
add hl, de
|
||||
dec c
|
||||
jr nz, .asm_7012b
|
||||
jr nz, .innerLoop
|
||||
|
||||
; Toggle the palette so that the lower star in the small stars tile blinks in
|
||||
; and out.
|
||||
ld a, [rOBP1]
|
||||
xor $a0
|
||||
xor %10100000
|
||||
ld [rOBP1], a
|
||||
ld c, $3
|
||||
|
||||
ld c, 3
|
||||
call CheckForUserInterruption
|
||||
ret c
|
||||
dec b
|
||||
jr nz, .asm_70121
|
||||
jr nz, .loop
|
||||
ret
|
||||
|
||||
GameFreakLogoOAMData: ; 70140 (1c:4140)
|
||||
|
|
143
engine/intro.asm
143
engine/intro.asm
|
@ -22,16 +22,16 @@ PlayIntroScene: ; 4169d (10:569d)
|
|||
ld [rOBP1], a
|
||||
xor a
|
||||
ld [hSCX], a
|
||||
ld b, $3
|
||||
call Func_4183f
|
||||
ld b, $3 ; Gengar tiles
|
||||
call IntroCopyTiles
|
||||
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
|
||||
call InitIntroNidorinoOAM
|
||||
ld de, $28ff ; move Nidorino right by 80 pixels
|
||||
call IntroMoveMon
|
||||
ret c
|
||||
|
||||
; hip
|
||||
|
@ -66,22 +66,22 @@ PlayIntroScene: ; 4169d (10:569d)
|
|||
|
||||
; raise
|
||||
ld b, $4
|
||||
call Func_4183f
|
||||
call IntroCopyTiles
|
||||
ld a, (SFX_1f_61 - SFX_Headers_1f) / 3
|
||||
call PlaySound
|
||||
ld de, $401
|
||||
call Func_4180e
|
||||
ld de, $401 ; move Gengar left by 8 pixels
|
||||
call IntroMoveMon
|
||||
ld c, $1e
|
||||
call CheckForUserInterruption
|
||||
ret c
|
||||
|
||||
; slash
|
||||
ld b, $5
|
||||
call Func_4183f
|
||||
call IntroCopyTiles
|
||||
ld a, (SFX_1f_62 - SFX_Headers_1f) / 3
|
||||
call PlaySound
|
||||
ld de, $800
|
||||
call Func_4180e
|
||||
ld de, $800 ; move Gengar right by 16 pixels
|
||||
call IntroMoveMon
|
||||
; hip
|
||||
ld a, (SFX_1f_5f - SFX_Headers_1f) / 3
|
||||
call PlaySound
|
||||
|
@ -93,10 +93,10 @@ PlayIntroScene: ; 4169d (10:569d)
|
|||
call CheckForUserInterruption
|
||||
ret c
|
||||
|
||||
ld de, $401
|
||||
call Func_4180e
|
||||
ld de, $401 ; move Gengar left by 8 pixels
|
||||
call IntroMoveMon
|
||||
ld b, $3
|
||||
call Func_4183f
|
||||
call IntroCopyTiles
|
||||
ld c, $3c
|
||||
call CheckForUserInterruption
|
||||
ret c
|
||||
|
@ -142,19 +142,19 @@ AnimateIntroNidorino: ; 41793 (10:5793)
|
|||
ld a, [de]
|
||||
ld [W_BASECOORDX], a
|
||||
push de
|
||||
ld c, $24
|
||||
call Func_417ae
|
||||
ld c, 6 * 6
|
||||
call UpdateIntroNidorinoOAM
|
||||
ld c, 5
|
||||
call DelayFrames
|
||||
pop de
|
||||
inc de
|
||||
jr AnimateIntroNidorino
|
||||
|
||||
Func_417ae: ; 417ae (10:57ae)
|
||||
UpdateIntroNidorinoOAM: ; 417ae (10:57ae)
|
||||
ld hl, wOAMBuffer
|
||||
ld a, [wd09f]
|
||||
ld d, a
|
||||
.asm_417b5
|
||||
.loop
|
||||
ld a, [W_BASECOORDY]
|
||||
add [hl]
|
||||
ld [hli], a
|
||||
|
@ -166,105 +166,111 @@ Func_417ae: ; 417ae (10:57ae)
|
|||
inc hl
|
||||
inc d
|
||||
dec c
|
||||
jr nz, .asm_417b5
|
||||
jr nz, .loop
|
||||
ret
|
||||
|
||||
Func_417c7: ; 417c7 (10:57c7)
|
||||
InitIntroNidorinoOAM: ; 417c7 (10:57c7)
|
||||
ld hl, wOAMBuffer
|
||||
ld d, $0
|
||||
.asm_417cc
|
||||
ld d, 0
|
||||
.loop
|
||||
push bc
|
||||
ld a, [W_BASECOORDY]
|
||||
ld e, a
|
||||
.asm_417d1
|
||||
.innerLoop
|
||||
ld a, e
|
||||
add $8
|
||||
add 8
|
||||
ld e, a
|
||||
ld [hli], a
|
||||
ld [hli], a ; Y
|
||||
ld a, [W_BASECOORDX]
|
||||
ld [hli], a
|
||||
ld [hli], a ; X
|
||||
ld a, d
|
||||
ld [hli], a
|
||||
ld [hli], a ; tile
|
||||
ld a, $80
|
||||
ld [hli], a
|
||||
ld [hli], a ; attributes
|
||||
inc d
|
||||
dec c
|
||||
jr nz, .asm_417d1
|
||||
jr nz, .innerLoop
|
||||
ld a, [W_BASECOORDX]
|
||||
add $8
|
||||
add 8
|
||||
ld [W_BASECOORDX], a
|
||||
pop bc
|
||||
dec b
|
||||
jr nz, .asm_417cc
|
||||
jr nz, .loop
|
||||
ret
|
||||
|
||||
Func_417f0: ; 417f0 (10:57f0)
|
||||
IntroClearScreen: ; 417f0 (10:57f0)
|
||||
ld hl, vBGMap1
|
||||
ld bc, $240
|
||||
jr asm_417fe
|
||||
jr IntroClearCommon
|
||||
|
||||
Func_417f8: ; 417f8 (10:57f8)
|
||||
IntroClearMiddleOfScreen: ; 417f8 (10:57f8)
|
||||
; clear the area of the tile map between the black bars on the top and bottom
|
||||
hlCoord 0, 4
|
||||
ld bc, $c8
|
||||
asm_417fe: ; 417fe (10:57fe)
|
||||
ld bc, SCREEN_WIDTH * 10
|
||||
|
||||
IntroClearCommon: ; 417fe (10:57fe)
|
||||
ld [hl], $0
|
||||
inc hl
|
||||
dec bc
|
||||
ld a, b
|
||||
or c
|
||||
jr nz, asm_417fe
|
||||
jr nz, IntroClearCommon
|
||||
ret
|
||||
|
||||
Func_41807: ; 41807 (10:5807)
|
||||
IntroPlaceBlackTiles: ; 41807 (10:5807)
|
||||
ld a, $1
|
||||
.asm_41809
|
||||
.loop
|
||||
ld [hli], a
|
||||
dec c
|
||||
jr nz, .asm_41809
|
||||
jr nz, .loop
|
||||
ret
|
||||
|
||||
Func_4180e: ; 4180e (10:580e)
|
||||
IntroMoveMon: ; 4180e (10:580e)
|
||||
; d = number of times to move the mon (2 pixels each time)
|
||||
; e: $00 = move Gengar right, $01 = move Gengar left, $ff = move Nidorino right
|
||||
ld a, e
|
||||
cp $ff
|
||||
jr z, .asm_4181d
|
||||
jr z, .moveNidorinoRight
|
||||
cp $1
|
||||
jr z, .asm_4182d
|
||||
jr z, .moveGengarLeft
|
||||
; move Gengar right
|
||||
ld a, [hSCX]
|
||||
dec a
|
||||
dec a
|
||||
jr .asm_41831
|
||||
.asm_4181d
|
||||
jr .next
|
||||
.moveNidorinoRight
|
||||
push de
|
||||
ld a, $2
|
||||
ld a, 2
|
||||
ld [W_BASECOORDX], a
|
||||
xor a
|
||||
ld [W_BASECOORDY], a
|
||||
ld c, $24
|
||||
call Func_417ae
|
||||
ld c, 6 * 6
|
||||
call UpdateIntroNidorinoOAM
|
||||
pop de
|
||||
.asm_4182d
|
||||
.moveGengarLeft
|
||||
ld a, [hSCX]
|
||||
inc a
|
||||
inc a
|
||||
.asm_41831
|
||||
.next
|
||||
ld [hSCX], a
|
||||
push de
|
||||
ld c, $2
|
||||
ld c, 2
|
||||
call CheckForUserInterruption
|
||||
pop de
|
||||
ret c
|
||||
dec d
|
||||
jr nz, Func_4180e
|
||||
jr nz, IntroMoveMon
|
||||
ret
|
||||
|
||||
Func_4183f: ; 4183f (10:583f)
|
||||
IntroCopyTiles: ; 4183f (10:583f)
|
||||
hlCoord 13, 7
|
||||
|
||||
CopyTileIDsFromList_ZeroBaseTileID: ; 41842 (10:5842)
|
||||
ld c, $0
|
||||
ld c, 0
|
||||
predef_jump CopyTileIDsFromList
|
||||
|
||||
Func_41849: ; 41849 (10:5849)
|
||||
PlayMoveSoundB: ; 41849 (10:5849)
|
||||
; unused
|
||||
predef GetMoveSoundB
|
||||
ld a, b
|
||||
jp PlaySound
|
||||
|
@ -303,7 +309,7 @@ PlayShootingStar: ; 4188a (10:588a)
|
|||
call DisableLCD
|
||||
xor a
|
||||
ld [W_CUROPPONENT], a
|
||||
call Func_418e9
|
||||
call IntroDrawBlackBars
|
||||
call LoadIntroGraphics
|
||||
call EnableLCD
|
||||
ld hl, rLCDC
|
||||
|
@ -314,36 +320,37 @@ PlayShootingStar: ; 4188a (10:588a)
|
|||
callba AnimateShootingStar
|
||||
push af
|
||||
pop af
|
||||
jr c, .asm_418d0
|
||||
jr c, .next ; skip the delay if the user interrupted the animation
|
||||
ld c, 40
|
||||
call DelayFrames
|
||||
.asm_418d0
|
||||
.next
|
||||
ld a, BANK(Music_IntroBattle)
|
||||
ld [wc0ef], a
|
||||
ld [wc0f0], a
|
||||
ld a, MUSIC_INTRO_BATTLE
|
||||
ld [wc0ee], a
|
||||
call PlaySound
|
||||
call Func_417f8
|
||||
call IntroClearMiddleOfScreen
|
||||
call ClearSprites
|
||||
jp Delay3
|
||||
|
||||
Func_418e9: ; 418e9 (10:58e9)
|
||||
call Func_417f0
|
||||
IntroDrawBlackBars: ; 418e9 (10:58e9)
|
||||
; clear the screen and draw black bars on the top and bottom
|
||||
call IntroClearScreen
|
||||
hlCoord 0, 0
|
||||
ld c, $50
|
||||
call Func_41807
|
||||
ld c, SCREEN_WIDTH * 4
|
||||
call IntroPlaceBlackTiles
|
||||
hlCoord 0, 14
|
||||
ld c, $50
|
||||
call Func_41807
|
||||
ld c, SCREEN_WIDTH * 4
|
||||
call IntroPlaceBlackTiles
|
||||
ld hl, vBGMap1
|
||||
ld c, $80
|
||||
call Func_41807
|
||||
call IntroPlaceBlackTiles
|
||||
ld hl, vBGMap1 + $1c0
|
||||
ld c, $80
|
||||
jp Func_41807
|
||||
jp IntroPlaceBlackTiles
|
||||
|
||||
Func_4190c: ; 4190c (10:590c)
|
||||
EmptyFunc4: ; 4190c (10:590c)
|
||||
ret
|
||||
|
||||
IntroNidorinoAnimation0: ; 4190d (10:590d)
|
||||
|
|
|
@ -74,7 +74,7 @@ PalletMovementScript_OakMoveLeft: ; 1a44c (6:644c)
|
|||
jr .done
|
||||
; The player is on the left tile of the northern path out of Pallet Town and
|
||||
; Prof. Oak is below.
|
||||
; Prof. Oak is already on the right tile.
|
||||
; Prof. Oak is already where he needs to be.
|
||||
.playerOnLeftTile
|
||||
ld a, $3
|
||||
ld [wNPCMovementScriptFunctionNum], a
|
||||
|
|
Loading…
Reference in a new issue