summaryrefslogtreecommitdiff
path: root/engine/gamefreak.asm
diff options
context:
space:
mode:
Diffstat (limited to 'engine/gamefreak.asm')
-rwxr-xr-xengine/gamefreak.asm110
1 files changed, 64 insertions, 46 deletions
diff --git a/engine/gamefreak.asm b/engine/gamefreak.asm
index fa8faebc..c2011535 100755
--- a/engine/gamefreak.asm
+++ b/engine/gamefreak.asm
@@ -2,12 +2,14 @@ LoadShootingStarGraphics: ; 70000 (1c:4000)
ld a, $f9
ld [rOBP0], a
ld a, $a4
- ld [rOBP1], a
- ld de, AnimationTileset2 + $30 ; star tile (top left quadrant)
+ ld [rOBP1], a ; $ff49
+ call Func_3040
+ call Func_3061
+ ld de, AnimationTileset2 ; $4757 ; star tile (top left quadrant)
ld hl, vChars1 + $200
lb bc, BANK(AnimationTileset2), $01
call CopyVideoData
- ld de, AnimationTileset2 + $130 ; star tile (bottom left quadrant)
+ ld de, AnimationTileset2 + $100 ; $481e ; star tile (bottom left quadrant)
ld hl, vChars1 + $210
lb bc, BANK(AnimationTileset2), $01
call CopyVideoData
@@ -24,9 +26,9 @@ LoadShootingStarGraphics: ; 70000 (1c:4000)
ld bc, GameFreakShootingStarOAMDataEnd - GameFreakShootingStarOAMData
jp CopyData
-AnimateShootingStar: ; 70044 (1c:4044)
+AnimateShootingStar: ; 7004a (1c:404a)
call LoadShootingStarGraphics
- ld a, SFX_SHOOTING_STAR
+ ld a, $c2 ; (SFX_1f_67 - SFX_Headers_1f) / 3
call PlaySound
; Move the big star down and left across the screen.
@@ -37,7 +39,7 @@ AnimateShootingStar: ; 70044 (1c:4044)
push bc
.bigStarInnerLoop
ld a, [hl] ; Y
- add 4
+ add 4y
ld [hli], a
ld a, [hl] ; X
add -4
@@ -58,46 +60,46 @@ AnimateShootingStar: ; 70044 (1c:4044)
.next
cp b
jr nz, .bigStarLoop
-
-; Clear big star OAM.
ld hl, wOAMBuffer
ld c, 4
ld de, 4
+
+; Clear big star OAM.
.clearOAMLoop
ld [hl], 160
add hl, de
dec c
jr nz, .clearOAMLoop
-
+
; Make Gamefreak logo flash.
ld b, 3
.flashLogoLoop
- ld hl, rOBP0
+ ld hl, rOBP0 ; $ff48
rrc [hl]
rrc [hl]
+ call Func_3040
ld c, 10
call CheckForUserInterruption
ret c
dec b
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, 24
.initSmallStarsOAMLoop
push af
- ld hl, SmallStarsOAM
+ ld hl, SmallStarsOAM ; $40ee
ld bc, SmallStarsOAMEnd - SmallStarsOAM
call CopyData
pop af
dec a
jr nz, .initSmallStarsOAMLoop
-
+
; Animate the small stars falling from the Gamefreak logo.
xor a
- ld [wMoveDownSmallStarsOAMCount], a
- ld hl, SmallStarsWaveCoordsPointerTable
+ ld [wMoveDownSmallStarsOAMCount], a ; wWhichTrade
+ ld hl, SmallStarsWaveCoordsPointerTable ; 1c:4105
ld c, 6
.smallStarsLoop
ld a, [hli]
@@ -118,6 +120,15 @@ AnimateShootingStar: ; 70044 (1c:4044)
ld [hli], a ; X
inc de
inc hl
+ push bc
+ ld a, [de]
+ ld b,a
+ ld a, [hl]
+ and $f0
+ or b
+ ld [hl], a
+ inc de
+ pop bc
inc hl
dec c
jr nz, .smallStarsInnerLoop
@@ -145,11 +156,11 @@ AnimateShootingStar: ; 70044 (1c:4044)
and a
ret
-SmallStarsOAM: ; 700ee (1c:40ee)
+SmallStarsOAM: ; 70101 (1c:4101)
db $00,$00,$A2,$90
SmallStarsOAMEnd:
-SmallStarsWaveCoordsPointerTable: ; 700f2 (1c:40f2)
+SmallStarsWaveCoordsPointerTable: ; 70105 (1c:4105)
dw SmallStarsWave1Coords
dw SmallStarsWave2Coords
dw SmallStarsWave3Coords
@@ -160,34 +171,42 @@ SmallStarsWaveCoordsPointerTable: ; 700f2 (1c:40f2)
; 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)
+SmallStarsWave1Coords: ; 70111 (1c:4111)
db $68,$30
- db $68,$40
+ db $05,$68
+ db $40,$05
db $68,$58
- db $68,$78
+ db $04,$68
+ db $78,$07
-SmallStarsWave2Coords: ; 70106 (1c:4106)
+SmallStarsWave2Coords: ; 7011d (1c:411d)
db $68,$38
- db $68,$48
+ db $05,$68
+ db $48,$06
db $68,$60
- db $68,$70
+ db $04,$68
+ db $70,$07
-SmallStarsWave3Coords: ; 7010e (1c:410e)
+SmallStarsWave3Coords: ; 70129 (1c:4129)
db $68,$34
- db $68,$4C
+ db $05,$68
+ db $4c,$06
db $68,$54
- db $68,$64
+ db $06,$68
+ db $64,$07
-SmallStarsWave4Coords: ; 70116 (1c:4116)
- db $68,$3C
- db $68,$5C
- db $68,$6C
- db $68,$74
+SmallStarsWave4Coords: ; 70135 (1c:4135)
+ db $68,$3c
+ db $05,$68
+ db $5c,$04
+ db $68,$6c
+ db $07,$68
+ db $74,$07
-SmallStarsEmptyWave: ; 7011e (1c:411e)
+SmallStarsEmptyWave: ; 70141 (1c:4141)
db $FF
-MoveDownSmallStars: ; 7011f (1c:411f)
+MoveDownSmallStars: ; 70142 (1c:4142)
ld b, 8
.loop
ld hl, wOAMBuffer + $5c
@@ -195,17 +214,16 @@ MoveDownSmallStars: ; 7011f (1c:411f)
ld de, -4
ld c, a
.innerLoop
- inc [hl] ; Y
+ inc [hl]
add hl, de
dec c
jr nz, .innerLoop
-
; Toggle the palette so that the lower star in the small stars tile blinks in
; and out.
- ld a, [rOBP1]
- xor %10100000
- ld [rOBP1], a
-
+ ld a, [rOBP1] ; $ff49
+ xor $10100000
+ ld [rOBP1], a ; $ff49
+ call Func_3061
ld c, 3
call CheckForUserInterruption
ret c
@@ -213,7 +231,7 @@ MoveDownSmallStars: ; 7011f (1c:411f)
jr nz, .loop
ret
-GameFreakLogoOAMData: ; 70140 (1c:4140)
+GameFreakLogoOAMData: ; 70166 (1c:4166)
db $48,$50,$8D,$00
db $48,$58,$8E,$00
db $50,$50,$8F,$00
@@ -232,13 +250,13 @@ GameFreakLogoOAMData: ; 70140 (1c:4140)
db $60,$78,$86,$00
GameFreakLogoOAMDataEnd:
-GameFreakShootingStarOAMData: ; 70180 (1c:4180)
- db $00,$A0,$A0,$10
- db $00,$A8,$A0,$30
- db $08,$A0,$A1,$10
- db $08,$A8,$A1,$30
+GameFreakShootingStarOAMData: ; 701a6 (1c:41a6)
+ db $00,$A0,$A0,$14
+ db $00,$A8,$A0,$34
+ db $08,$A0,$A1,$14
+ db $08,$A8,$A1,$34
GameFreakShootingStarOAMDataEnd:
-FallingStar: ; 70190 (1c:4190)
+FallingStar: ; 701b6 (1c:41b6)
INCBIN "gfx/falling_star.2bpp"
FallingStarEnd: