diff options
Diffstat (limited to 'engine/gamefreak.asm')
-rwxr-xr-x | engine/gamefreak.asm | 110 |
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: |