diff options
-rw-r--r-- | constants/sprite_constants.asm | 2 | ||||
-rwxr-xr-x | data/sprite_engine.asm | 176 | ||||
-rwxr-xr-x | engine/breeding/egg.asm | 2 | ||||
-rwxr-xr-x | engine/compose_mail.asm | 4 | ||||
-rwxr-xr-x | engine/crystal_intro.asm | 8 | ||||
-rwxr-xr-x | engine/mon_icons.asm | 4 | ||||
-rwxr-xr-x | engine/namingscreen.asm | 6 | ||||
-rwxr-xr-x | engine/slot_machine.asm | 2 | ||||
-rwxr-xr-x | engine/sprite_anims.asm | 12 | ||||
-rwxr-xr-x | engine/sprites.asm | 78 | ||||
-rwxr-xr-x | event/celebi.asm | 206 | ||||
-rwxr-xr-x | event/field_moves.asm | 10 | ||||
-rw-r--r-- | home.asm | 6 | ||||
-rwxr-xr-x | misc/fixed_words.asm | 16 | ||||
-rwxr-xr-x | misc/mobile_46.asm | 2 | ||||
-rw-r--r-- | wram.asm | 10 |
16 files changed, 286 insertions, 258 deletions
diff --git a/constants/sprite_constants.asm b/constants/sprite_constants.asm index 13070d89a..e44eec9cf 100644 --- a/constants/sprite_constants.asm +++ b/constants/sprite_constants.asm @@ -350,7 +350,7 @@ MAX_OUTDOOR_SPRITES EQU 23 const_def const SPRITEANIMSTRUCT_INDEX - const SPRITEANIMSTRUCT_01 + const SPRITEANIMSTRUCT_FRAMESET_ID const SPRITEANIMSTRUCT_ANIM_SEQ_ID const SPRITEANIMSTRUCT_TILE_ID const SPRITEANIMSTRUCT_XCOORD diff --git a/data/sprite_engine.asm b/data/sprite_engine.asm index ba7528905..07775182d 100755 --- a/data/sprite_engine.asm +++ b/data/sprite_engine.asm @@ -1,4 +1,4 @@ -Unknown_8d6e6: ; 8d6e6 +SpriteAnimFrameData: ; 8d6e6 dw Unknown_8d76a ; 00 dw Unknown_8d76d ; 01 dw Unknown_8d772 ; 02 @@ -63,54 +63,54 @@ Unknown_8d6e6: ; 8d6e6 dw Unknown_8d932 ; 3d dw Unknown_8d93d ; 3e dw Unknown_8d940 ; 3f - dw Unknown_8d943 ; 40 - dw Unknown_8d948 ; 41 + dw Unknown_8d943 ; 40 celebi on the left + dw Unknown_8d948 ; 41 celebi on the right ; 8d76a - -Unknown_8d76a: db $00, $20 ; lowest 6 bits of second byte are duration, upper two bits are flags - db -1 + ; OAM idx (see SpriteAnimOAMData), flip flags/duration +Unknown_8d76a: db $00, $20 + db -1 Unknown_8d76d: db $00, $08 db $01, $08 - db -2 + db -2 Unknown_8d772: db $3d, $08 db $3e, $08 - db -2 + db -2 Unknown_8d777: db $3f, $08 db $40, $08 - db -2 + db -2 Unknown_8d77c: db $00, $04 db $01, $04 - db -2 + db -2 Unknown_8d781: db $3d, $04 db $3e, $04 - db -2 + db -2 Unknown_8d786: db $3f, $04 db $40, $04 - db -2 + db -2 Unknown_8d78b: db $00, $08 db $01, $08 db $00, $08 db $01, $48 - db -2 + db -2 Unknown_8d794: db $63, $08 db $64, $08 db $63, $08 db $64, $48 - db -2 + db -2 Unknown_8d79d: db $65, $08 db $66, $08 db $65, $08 db $66, $48 - db -2 + db -2 Unknown_8d7a6: db $1e, $01 db $1f, $01 - db -2 + db -2 Unknown_8d7ab: db $20, $01 - db $fd, $01 - db -2 + db -3, $01 + db -2 Unknown_8d7b0: db $21, $01 - db $fd, $01 - db -2 + db -3, $01 + db -2 Unknown_8d7b5: db $81, $0c db $82, $01 db $83, $01 @@ -126,137 +126,137 @@ Unknown_8d7b5: db $81, $0c db $89, $04 db $8a, $0a db $8b, $07 - db -1 + db -1 Unknown_8d7d4: db $23, $03 db $23, $83 - db -2 + db -2 Unknown_8d7d9: db $24, $02 db $25, $02 db $26, $02 db $25, $02 - db -2 + db -2 Unknown_8d7e2: db $27, $07 db $28, $07 db $27, $87 db $28, $47 - db -2 + db -2 Unknown_8d7eb: db $29, $07 db $2a, $07 db $29, $07 db $2b, $07 - db -2 + db -2 Unknown_8d7f4: db $29, $07 db $2c, $07 db $2d, $07 db $2c, $07 db $29, $07 - db -1 + db -1 Unknown_8d7ff: db $2e, $14 - db -1 + db -1 Unknown_8d802: db $2f, $20 - db -1 + db -1 Unknown_8d805: db $30, $20 - db -1 + db -1 Unknown_8d808: db $30, $03 db $31, $03 db $30, $03 db $31, $43 - db -2 + db -2 Unknown_8d811: db $32, $04 db $33, $04 db $34, $04 - db -4 + db -4 Unknown_8d818: db $35, $03 db $36, $03 - db -2 + db -2 Unknown_8d81d: db $37, $07 db $38, $07 - db -2 + db -2 Unknown_8d822: db $39, $20 - db -1 + db -1 Unknown_8d825: db $3b, $02 db $3a, $02 db $3b, $02 - db -1 + db -1 Unknown_8d82c: db $3c, $20 - db -1 + db -1 Unknown_8d82f: db $41, $08 db $42, $08 db $41, $08 db $42, $48 - db -2 + db -2 db $43, $08 db $44, $08 - db -2 + db -2 db $45, $08 db $46, $08 - db -2 + db -2 db $47, $08 db $48, $08 - db -2 + db -2 db $49, $01 db $49, $41 db $49, $c1 db $49, $81 - db -2 + db -2 db $4a, $20 - db -1 + db -1 db $4b, $20 - db -1 + db -1 db $4c, $20 - db -1 + db -1 db $4d, $20 - db -1 + db -1 db $4e, $03 - db $fd, $03 - db -2 -Unknown_8d861: db $fd, $20 - db -1 + db -3, $03 + db -2 +Unknown_8d861: db -3, $20 + db -1 Unknown_8d864: db $4f, $20 - db -1 + db -1 Unknown_8d867: db $50, $02 db $51, $10 - db $fd, $01 + db -3, $01 db $52, $01 - db $fd, $01 + db -3, $01 db $53, $01 - db -4 + db -4 Unknown_8d874: db $54, $20 - db -1 + db -1 Unknown_8d877: db $55, $20 - db -1 + db -1 Unknown_8d87a: db $55, $60 - db -1 + db -1 Unknown_8d87d: db $55, $a0 - db -1 + db -1 Unknown_8d880: db $55, $e0 - db -1 + db -1 Unknown_8d883: db $56, $0a db $57, $09 db $58, $0a db $59, $0a db $58, $09 db $5a, $0a - db -2 + db -2 Unknown_8d890: db $50, $02 db $5b, $02 db $50, $02 db $5b, $42 - db -2 + db -2 Unknown_8d899: db $5c, $02 - db -1 + db -1 Unknown_8d89c: db $5d, $02 - db -1 + db -1 Unknown_8d89f: db $5e, $02 - db -1 + db -1 Unknown_8d8a2: db $5f, $02 - db -1 + db -1 Unknown_8d8a5: db $60, $02 - db -1 + db -1 Unknown_8d8a8: db $61, $02 - db -1 + db -1 Unknown_8d8ab: db $62, $02 - db -1 + db -1 Unknown_8d8ae: db $32, $03 db $33, $03 db $34, $03 @@ -272,7 +272,7 @@ Unknown_8d8ae: db $32, $03 db $31, $03 db $30, $03 db $31, $43 - db -1 + db -1 Unknown_8d8cd: db $30, $03 db $31, $03 db $30, $03 @@ -288,67 +288,67 @@ Unknown_8d8cd: db $30, $03 db $32, $03 db $33, $03 db $34, $03 - db -4 + db -4 Unknown_8d8ec: db $67, $03 db $68, $03 - db -2 + db -2 Unknown_8d8f1: db $6c, $03 - db -1 + db -1 Unknown_8d8f4: db $6d, $03 - db -1 + db -1 Unknown_8d8f7: db $69, $02 db $6a, $02 db $6b, $02 - db -4 + db -4 Unknown_8d8fe: db $6e, $03 db $6f, $03 db $70, $03 db $71, $03 - db -2 + db -2 Unknown_8d907: db $71, $03 db $6e, $07 - db -1 + db -1 Unknown_8d90c: db $72, $20 db $73, $07 db $74, $07 - db -1 + db -1 Unknown_8d913: db $75, $03 - db -1 + db -1 Unknown_8d916: db $76, $03 db $77, $03 db $78, $07 - db -4 + db -4 Unknown_8d91d: db $76, $43 db $77, $43 db $78, $47 - db -4 + db -4 Unknown_8d924: db $76, $83 db $77, $83 db $78, $87 - db -4 + db -4 Unknown_8d92b: db $76, $c3 db $77, $c3 db $78, $c7 - db -4 + db -4 Unknown_8d932: db $79, $03 db $7a, $03 db $7b, $03 db $7c, $07 db $7d, $07 - db -1 + db -1 Unknown_8d93d: db $7e, $03 - db -1 -Unknown_8d940: db $fd, $00 - db -1 + db -1 +Unknown_8d940: db -3, $00 + db -1 Unknown_8d943: db $7f, $08 db $80, $08 - db -1 + db -1 Unknown_8d948: db $7f, $48 db $80, $48 - db -1 + db -1 ; 8d94d -Unknown_8d94d: ; 8d94d +SpriteAnimOAMData: ; 8d94d ; vtile offset, pointer dbw $00, Unknown_8dd8a ; 00 dbw $04, Unknown_8dd8a ; 01 diff --git a/engine/breeding/egg.asm b/engine/breeding/egg.asm index 3f962af37..60c5f2f20 100755 --- a/engine/breeding/egg.asm +++ b/engine/breeding/egg.asm @@ -829,7 +829,7 @@ Function173b3: ; 173b3 (5:73b3) ld [hl], $0 pop de ld a, e - ld hl, SPRITEANIMSTRUCT_01 + ld hl, SPRITEANIMSTRUCT_FRAMESET_ID add hl, bc add [hl] ld [hl], a diff --git a/engine/compose_mail.asm b/engine/compose_mail.asm index 1e6318a3e..0f67377b0 100755 --- a/engine/compose_mail.asm +++ b/engine/compose_mail.asm @@ -182,7 +182,7 @@ endr ld [wc6d5], a ld a, b ld [wc6d6], a - ld hl, SPRITEANIMSTRUCT_01 + ld hl, SPRITEANIMSTRUCT_FRAMESET_ID add hl, bc ld a, [hl] ld hl, SPRITEANIMSTRUCT_0E @@ -298,7 +298,7 @@ Function120c1: ; 120c1 (4:60c1) ld hl, SPRITEANIMSTRUCT_0E add hl, bc add [hl] - ld hl, SPRITEANIMSTRUCT_01 + ld hl, SPRITEANIMSTRUCT_FRAMESET_ID add hl, bc ld [hl], a ld hl, SPRITEANIMSTRUCT_0C diff --git a/engine/crystal_intro.asm b/engine/crystal_intro.asm index c82d0544b..645d88177 100755 --- a/engine/crystal_intro.asm +++ b/engine/crystal_intro.asm @@ -1627,7 +1627,7 @@ CrystalIntro_InitUnownAnim: ; e51dc (39:51dc) add hl, bc ld [hl], $8 ld a, $3c - call Function3b3c + call ReinitSpriteAnimFrame pop de push de @@ -1637,7 +1637,7 @@ CrystalIntro_InitUnownAnim: ; e51dc (39:51dc) add hl, bc ld [hl], $18 ld a, $3b - call Function3b3c + call ReinitSpriteAnimFrame pop de push de @@ -1647,7 +1647,7 @@ CrystalIntro_InitUnownAnim: ; e51dc (39:51dc) add hl, bc ld [hl], $28 ld a, $39 - call Function3b3c + call ReinitSpriteAnimFrame pop de ld a, SPRITE_ANIM_INDEX_29 @@ -1656,7 +1656,7 @@ CrystalIntro_InitUnownAnim: ; e51dc (39:51dc) add hl, bc ld [hl], $38 ld a, $3a - call Function3b3c + call ReinitSpriteAnimFrame ret CrystalIntro_UnownFade: ; e5223 (39:5223) diff --git a/engine/mon_icons.asm b/engine/mon_icons.asm index 79924cba2..ebab47750 100755 --- a/engine/mon_icons.asm +++ b/engine/mon_icons.asm @@ -79,7 +79,7 @@ Function8e86c: ; 8e86c (23:686c) .asm_8e890 ld a, $4 .asm_8e892 - ld hl, SPRITEANIMSTRUCT_01 + ld hl, SPRITEANIMSTRUCT_FRAMESET_ID add hl, bc ld [hl], a ret @@ -150,7 +150,7 @@ Function8e8d5: ; 8e8d5 (23:68d5) .mail ld a, $2 .okay - ld hl, SPRITEANIMSTRUCT_01 + ld hl, SPRITEANIMSTRUCT_FRAMESET_ID add hl, bc ld [hl], a ret diff --git a/engine/namingscreen.asm b/engine/namingscreen.asm index c0e416c79..554d5dfbf 100755 --- a/engine/namingscreen.asm +++ b/engine/namingscreen.asm @@ -176,7 +176,7 @@ Function117f5: ; 117f5 (4:57f5) depixel 4, 4, 4, 0 ld a, SPRITE_ANIM_INDEX_0A call _InitSpriteAnimStruct - ld hl, SPRITEANIMSTRUCT_01 + ld hl, SPRITEANIMSTRUCT_FRAMESET_ID add hl, bc ld [hl], $0 hlcoord 5, 2 @@ -411,7 +411,7 @@ Function1197b: ; 1197b (4:597b) ld [wc6d5], a ld a, b ld [wc6d6], a - ld hl, SPRITEANIMSTRUCT_01 + ld hl, SPRITEANIMSTRUCT_FRAMESET_ID add hl, bc ld a, [hl] ld hl, SPRITEANIMSTRUCT_0E @@ -553,7 +553,7 @@ Function11a3b: ; 11a3b (4:5a3b) ld hl, SPRITEANIMSTRUCT_0E add hl, bc add [hl] - ld hl, SPRITEANIMSTRUCT_01 + ld hl, SPRITEANIMSTRUCT_FRAMESET_ID add hl, bc ld [hl], a ld hl, SPRITEANIMSTRUCT_0C diff --git a/engine/slot_machine.asm b/engine/slot_machine.asm index 24af53357..b3341192f 100755 --- a/engine/slot_machine.asm +++ b/engine/slot_machine.asm @@ -100,7 +100,7 @@ Function927af: ; 927af (24:67af) call Function92844 call Function92b0f xor a - ld [wOAMRetentionSize], a + ld [wCurrSpriteOAMAddr], a callab DoNextFrameForFirst16Sprites call Function927f8 call Function927d3 diff --git a/engine/sprite_anims.asm b/engine/sprite_anims.asm index 93e77192d..25015d645 100755 --- a/engine/sprite_anims.asm +++ b/engine/sprite_anims.asm @@ -36,7 +36,7 @@ endr dw .eighteen dw .nineteen ; finish egg hatching animation dw .twenty ; radio tuning knob - dw .twentyone + dw .twentyone ; cut grass leaves dw .twentytwo ; flying sprite dw .twentythree ; flying leaves dw .twentyfour @@ -370,7 +370,7 @@ endr ret nz ld [hl], $3 ld a, $f - call Function8d120 + call _ReinitSpriteAnimFrame ret .eleven: ; 8d43e (23:543e) @@ -434,7 +434,7 @@ endr .sixteen_zero: ; 8d493 ld a, $14 - call Function8d120 + call _ReinitSpriteAnimFrame ld hl, SPRITEANIMSTRUCT_0B add hl, bc @@ -786,7 +786,7 @@ endr add hl, bc ld [hl], a ld a, $36 - call Function8d120 + call _ReinitSpriteAnimFrame ret .thirty: ; 8d666 (23:5666) @@ -840,7 +840,7 @@ endr cp $40 ret nz ld a, $3d - call Function8d120 + call _ReinitSpriteAnimFrame ret .thirtyfour: ; 8d6ae (23:56ae) @@ -856,7 +856,7 @@ endr ret .thirtyone: ; 8d6be (23:56be) - callba Function49aa2 + callba UpdateCelebiPosition ret .anonymous_jumptable: ; 8d6c5 (23:56c5) diff --git a/engine/sprites.asm b/engine/sprites.asm index 7953cb433..e5d55ebfb 100755 --- a/engine/sprites.asm +++ b/engine/sprites.asm @@ -24,7 +24,7 @@ PlaySpriteAnimations: ; 8cf69 push af ld a, 0 * 4 - ld [wOAMRetentionSize], a + ld [wCurrSpriteOAMAddr], a call DoNextFrameForAllSprites pop af @@ -47,7 +47,7 @@ DoNextFrameForAllSprites: ; 8cf7a push hl push de call DoAnimFrame ; Uses a massive jumptable - call Function8d04c + call UpdateAnimFrame pop de pop hl jr c, .done @@ -58,11 +58,11 @@ DoNextFrameForAllSprites: ; 8cf7a dec e jr nz, .loop - ld a, [wOAMRetentionSize] + ld a, [wCurrSpriteOAMAddr] ld l, a ld h, Sprites / $0100 -.loop2 ; Clear (Sprites + [wOAMRetentionSize] --> SpritesEnd) +.loop2 ; Clear (Sprites + [wCurrSpriteOAMAddr] --> SpritesEnd) ld a, l cp SpritesEnd % $100 jr nc, .done @@ -87,7 +87,7 @@ DoNextFrameForFirst16Sprites: ; 8cfa8 (23:4fa8) push hl push de call DoAnimFrame ; Uses a massive jumptable - call Function8d04c + call UpdateAnimFrame pop de pop hl jr c, .done @@ -98,11 +98,11 @@ DoNextFrameForFirst16Sprites: ; 8cfa8 (23:4fa8) dec e jr nz, .loop - ld a, [wOAMRetentionSize] + ld a, [wCurrSpriteOAMAddr] ld l, a ld h, (Sprites + $40) / $100 -.loop2 ; Clear (Sprites + [wOAMRetentionSize] --> Sprites + $40) +.loop2 ; Clear (Sprites + [wCurrSpriteOAMAddr] --> Sprites + $40) ld a, l cp (Sprites + 16 * 4) % $100 jr nc, .done @@ -149,11 +149,11 @@ InitSpriteAnimStruct:: ; 8cfd6 inc [hl] .initialized -; Get row a of Unknown_8d1c4, copy the pointer into de +; Get row a of SpriteAnimSeqData, copy the pointer into de pop af ld e, a ld d, 0 - ld hl, Unknown_8d1c4 + ld hl, SpriteAnimSeqData rept 3 add hl, de endr @@ -235,14 +235,14 @@ DeinitializeAllSprites: ; 8d03d (23:503d) ret -Function8d04c: ; 8d04c +UpdateAnimFrame: ; 8d04c call InitSpriteAnimBuffer ; init WRAM - call Function8d132 ; read from a memory array + call GetSpriteAnimFrame ; read from a memory array cp -3 jr z, .done cp -4 jr z, .delete - call Function8d1a2 ; OAM? + call GetFrameOAMPointer ; add byte to [wCurrAnimVTile] ld a, [wCurrAnimVTile] add [hl] @@ -253,7 +253,7 @@ Function8d04c: ; 8d04c ld h, [hl] ld l, a push bc - ld a, [wOAMRetentionSize] + ld a, [wCurrSpriteOAMAddr] ld e, a ld d, Sprites / $100 ld a, [hli] @@ -297,13 +297,13 @@ Function8d04c: ; 8d04c inc hl inc de ; fourth byte: attributes - ; [de] = Function8d0de([hl]) - call Function8d0de + ; [de] = GetSpriteOAMAttr([hl]) + call GetSpriteOAMAttr ld [de], a inc hl inc de ld a, e - ld [wOAMRetentionSize], a + ld [wCurrSpriteOAMAddr], a cp SpritesEnd % $100 jr nc, .reached_the_end dec c @@ -356,7 +356,7 @@ AddOrSubtractX: ; 8d0ce ret ; 8d0de -Function8d0de: ; 8d0de +GetSpriteOAMAttr: ; 8d0de ld a, [wCurrSpriteAddSubFlags] ld b, a ld a, [hl] @@ -414,8 +414,8 @@ GetSpriteAnimVTile: ; 8d109 ret ; 8d120 -Function8d120:: ; 8d120 - ld hl, SPRITEANIMSTRUCT_01 +_ReinitSpriteAnimFrame:: ; 8d120 + ld hl, SPRITEANIMSTRUCT_FRAMESET_ID add hl, bc ld [hl], a ld hl, SPRITEANIMSTRUCT_DURATION @@ -428,7 +428,7 @@ Function8d120:: ; 8d120 ; 8d132 -Function8d132: ; 8d132 +GetSpriteAnimFrame: ; 8d132 .loop ld hl, SPRITEANIMSTRUCT_DURATION add hl, bc @@ -436,7 +436,7 @@ Function8d132: ; 8d132 and a jr z, .next_frame ; finished the current sequence dec [hl] - call Function8d189 ; load pointer from Unknown_8d6e6 + call GetSpriteFrameDataPointer ; load pointer from SpriteAnimFrameData ld a, [hli] push af jr .okay @@ -445,12 +445,12 @@ Function8d132: ; 8d132 ld hl, SPRITEANIMSTRUCT_FRAME add hl, bc inc [hl] - call Function8d189 ; load pointer from Unknown_8d6e6 + call GetSpriteFrameDataPointer ; load pointer from SpriteAnimFrameData ld a, [hli] cp -2 - jr z, .minus_2 + jr z, .restart cp -1 - jr z, .minus_1 + jr z, .repeat_last push af ld a, [hl] @@ -471,7 +471,7 @@ Function8d132: ; 8d132 pop af ret -.minus_1 +.repeat_last xor a ld hl, SPRITEANIMSTRUCT_DURATION add hl, bc @@ -484,7 +484,7 @@ rept 2 endr jr .loop -.minus_2 +.restart xor a ld hl, SPRITEANIMSTRUCT_DURATION add hl, bc @@ -497,15 +497,15 @@ endr jr .loop ; 8d189 -Function8d189: ; 8d189 +GetSpriteFrameDataPointer: ; 8d189 ; Get the data for the current frame for the current animation sequence - ; Unknown_8d6e6[SpriteAnim[SPRITEANIMSTRUCT_01]][SpriteAnim[SPRITEANIMSTRUCT_FRAME]] - ld hl, SPRITEANIMSTRUCT_01 + ; SpriteAnimFrameData[SpriteAnim[SPRITEANIMSTRUCT_FRAMESET_ID]][SpriteAnim[SPRITEANIMSTRUCT_FRAME]] + ld hl, SPRITEANIMSTRUCT_FRAMESET_ID add hl, bc ld e, [hl] ld d, 0 - ld hl, Unknown_8d6e6 + ld hl, SpriteAnimFrameData rept 2 add hl, de endr @@ -521,11 +521,11 @@ endr ret ; 8d1a2 -Function8d1a2: ; 8d1a2 +GetFrameOAMPointer: ; 8d1a2 ; Load OAM data pointer ld e, a ld d, 0 - ld hl, Unknown_8d94d + ld hl, SpriteAnimOAMData rept 3 add hl, de endr @@ -555,7 +555,7 @@ endr ret ; 8d1c4 -Unknown_8d1c4: ; 8d1c4 +SpriteAnimSeqData: ; 8d1c4 ; ??, sequence, tile db $01, SPRITE_ANIM_SEQ_01, $00 ; 00 db $07, SPRITE_ANIM_SEQ_04, $00 ; 01 @@ -579,7 +579,7 @@ Unknown_8d1c4: ; 8d1c4 db $19, SPRITE_ANIM_SEQ_13, $00 ; 13 db $1a, SPRITE_ANIM_SEQ_14, $00 ; 14 radio tuning knob db $1b, SPRITE_ANIM_SEQ_00, $00 ; 15 - db $1d, SPRITE_ANIM_SEQ_15, $00 ; 16 + db $1d, SPRITE_ANIM_SEQ_15, $00 ; 16 leaves when cutting down a tree db $1e, SPRITE_ANIM_SEQ_00, $00 ; 17 db $1d, SPRITE_ANIM_SEQ_17, $00 ; 18 flying leaves db $1f, SPRITE_ANIM_SEQ_00, $00 ; 19 @@ -607,12 +607,13 @@ Unknown_8d1c4: ; 8d1c4 INCLUDE "engine/sprite_anims.asm" ; DoAnimFrame INCLUDE "data/sprite_engine.asm" -; Unknown_8d6e6 -; Unknown_8d94d +; SpriteAnimFrameData +; SpriteAnimOAMData Sprites_Cosine: ; 8e72a add $10 Sprites_Sine: ; 8e72c +; floor(d * sin(a * pi/32)) and $3f cp $20 jr nc, .negative @@ -669,8 +670,8 @@ AnimateEndOfExpBar: ; 8e79d ld hl, VTiles0 tile $00 lb bc, BANK(EndOfExpBarGFX), 1 call Request2bpp - ld c, $8 - ld d, $0 + ld c, 8 + ld d, 0 .loop push bc call .AnimateFrame @@ -694,6 +695,7 @@ endr ret z dec c ld a, c +; multiply by 8 sla a sla a sla a diff --git a/event/celebi.asm b/event/celebi.asm index df31e0776..8388caa20 100755 --- a/event/celebi.asm +++ b/event/celebi.asm @@ -8,17 +8,17 @@ Special_CelebiShrineEvent: ; 4989a depixel 0, 10, 7, 0 ld a, SPRITE_ANIM_INDEX_2C call _InitSpriteAnimStruct - ld hl, $3 + ld hl, SPRITEANIMSTRUCT_TILE_ID add hl, bc ld [hl], $84 - ld hl, $2 + ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID add hl, bc - ld [hl], $1f - ld hl, $f + ld [hl], SPRITE_ANIM_SEQ_1F + ld hl, SPRITEANIMSTRUCT_0F add hl, bc ld a, $80 ld [hl], a - ld a, $a0 + ld a, 160 ; frame count ld [wcf64], a ld d, $0 .loop @@ -26,44 +26,47 @@ Special_CelebiShrineEvent: ; 4989a bit 7, a jr nz, .done push bc - call Function49bae + call GetCelebiSpriteTile inc d push de ld a, $90 - ld [wOAMRetentionSize], a + ld [wCurrSpriteOAMAddr], a callba DoNextFrameForAllSprites - call Function49935 + call CelebiEvent_CountDown ld c, 2 call DelayFrames pop de pop bc jr .loop + .done pop af ld [VramState], a - call Function498f9 - call Function49bf3 + call .RefreshPlayerSprite_ClearAllOthers + call CelebiEvent_SetBattleType ret + ; 498f9 -Function498f9: ; 498f9 +.RefreshPlayerSprite_ClearAllOthers: ; 498f9 ld hl, Sprites + 2 xor a ld c, $4 -.loop +.OAMloop ld [hli], a rept 3 inc hl endr inc a dec c - jr nz, .loop + jr nz, .OAMloop ld hl, Sprites + $10 ld bc, $90 xor a call ByteFill ret + ; 49912 LoadCelebiGFX: ; 49912 @@ -79,23 +82,27 @@ LoadCelebiGFX: ; 49912 xor a ld [wJumptableIndex], a ret + ; 49935 -Function49935: ; 49935 +CelebiEvent_CountDown: ; 49935 ld hl, wcf64 ld a, [hl] and a - jr z, .asm_4993e + jr z, .done dec [hl] ret -.asm_4993e + +.done ld hl, wJumptableIndex set 7, [hl] ret + ; 49944 -Function49944: ; 49944 +CelebiEvent_SpawnLeaf: ; 49944 +; unused ld hl, wcf65 ld a, [hl] inc [hl] @@ -109,10 +116,11 @@ Function49944: ; 49944 ld e, $0 ld a, SPRITE_ANIM_INDEX_18 ; fly land call _InitSpriteAnimStruct - ld hl, $3 + ld hl, SPRITEANIMSTRUCT_TILE_ID add hl, bc ld [hl], $80 ret + ; 49962 SpecialCelebiLeafGFX: ; 49962 @@ -124,105 +132,110 @@ INCBIN "gfx/special/celebi/3.2bpp" INCBIN "gfx/special/celebi/4.2bpp" -Function49aa2: ; 49aa2 (12:5aa2) - ld hl, $6 +UpdateCelebiPosition: ; 49aa2 (12:5aa2) + ld hl, SPRITEANIMSTRUCT_XOFFSET add hl, bc ld a, [hl] push af - ld hl, $5 + ld hl, SPRITEANIMSTRUCT_YCOORD add hl, bc ld a, [hl] - cp $52 - jp nc, Function49b30 - ld hl, $5 + cp 8 * 10 + 2 + jp nc, .FreezeCelebiPosition + ld hl, SPRITEANIMSTRUCT_YCOORD add hl, bc inc [hl] - ld hl, $f + ld hl, SPRITEANIMSTRUCT_0F add hl, bc ld a, [hl] ld d, a cp $3a - jr c, .asm_49ac6 - jr z, .asm_49ac6 + jr c, .skip + jr z, .skip sub $3 ld [hl], a -.asm_49ac6 - ld hl, $e +.skip + ld hl, SPRITEANIMSTRUCT_0E add hl, bc ld a, [hl] inc [hl] call CelebiEvent_Cosine - ld hl, $6 + ld hl, SPRITEANIMSTRUCT_XOFFSET add hl, bc ld [hl], a ld d, a - ld hl, $4 + ld hl, SPRITEANIMSTRUCT_XCOORD add hl, bc add [hl] - cp $5c - jr nc, .asm_49ae2 - cp $44 - jr nc, .asm_49b0d -.asm_49ae2 + cp 8 * 11 + 4 + jr nc, .ShiftY + cp 8 * 8 + 4 + jr nc, .ReinitSpriteAnimFrame +.ShiftY pop af push af cp d - jr nc, .asm_49af2 - ld hl, $4 + jr nc, .moving_left + ld hl, SPRITEANIMSTRUCT_XCOORD add hl, bc add [hl] - cp $50 - jr c, .asm_49b05 - jr .asm_49afb -.asm_49af2 - ld hl, $4 + cp 8 * 10 + jr c, .float_up + jr .float_down + +.moving_left + ld hl, SPRITEANIMSTRUCT_XCOORD add hl, bc add [hl] - cp $50 - jr nc, .asm_49b05 -.asm_49afb - ld hl, $5 + cp 8 * 10 + jr nc, .float_up +.float_down + ld hl, SPRITEANIMSTRUCT_YCOORD add hl, bc ld a, [hl] sub $2 ld [hl], a - jr .asm_49b0d -.asm_49b05 - ld hl, $5 + jr .ReinitSpriteAnimFrame + +.float_up + ld hl, SPRITEANIMSTRUCT_YCOORD add hl, bc ld a, [hl] add $1 ld [hl], a -.asm_49b0d +.ReinitSpriteAnimFrame pop af - ld hl, $4 + ld hl, SPRITEANIMSTRUCT_XCOORD add hl, bc add [hl] - cp $50 - jr c, .asm_49b26 - cp $e6 - jr nc, .asm_49b26 - ld hl, $1 + cp 8 * 10 + jr c, .left + cp -(8 * 3 + 2) + jr nc, .left + ld hl, SPRITEANIMSTRUCT_FRAMESET_ID add hl, bc ld a, $41 - call Function3b3c - jr .asm_49b2f -.asm_49b26 - ld hl, $1 + call ReinitSpriteAnimFrame + jr .done + +.left + ld hl, SPRITEANIMSTRUCT_FRAMESET_ID add hl, bc ld a, $40 - call Function3b3c -.asm_49b2f + call ReinitSpriteAnimFrame +.done ret -Function49b30: ; 49b30 (12:5b30) + +.FreezeCelebiPosition: ; 49b30 (12:5b30) pop af - ld hl, $1 + ld hl, SPRITEANIMSTRUCT_FRAMESET_ID add hl, bc ld a, $40 - call Function3b3c + call ReinitSpriteAnimFrame ret + CelebiEvent_Cosine: ; 49b3b (12:5b3b) add $10 and $3f @@ -231,6 +244,7 @@ CelebiEvent_Cosine: ; 49b3b (12:5b3b) call .SineFunction ld a, h ret + .asm_49b48 and $1f call .SineFunction @@ -239,6 +253,7 @@ CelebiEvent_Cosine: ; 49b3b (12:5b3b) inc a ret + .SineFunction: ; 49b52 (12:5b52) ld e, a ld a, d @@ -261,13 +276,14 @@ endr and a jr nz, .multiply ret + ; 49b6e (12:5b6e) .sinewave: ; 49b6e sine_wave $100 ; 49bae -Function49bae: ; 49bae +GetCelebiSpriteTile: ; 49bae push hl push bc push de @@ -275,66 +291,74 @@ Function49bae: ; 49bae ld d, $3 ld e, d cp $0 - jr z, .asm_49bd0 + jr z, .Frame1 cp d - jr z, .asm_49bd4 - call Function49bed + jr z, .Frame2 + call .AddE cp d - jr z, .asm_49bd8 - call Function49bed + jr z, .Frame3 + call .AddE cp d - jr z, .asm_49bdc - call Function49bed + jr z, .Frame4 + call .AddE cp d - jr c, .asm_49be9 - jr .asm_49be5 + jr c, .done + jr .restart + -.asm_49bd0 +.Frame1 ld a, $84 - jr .asm_49bde + jr .load_tile -.asm_49bd4 + +.Frame2 ld a, $88 - jr .asm_49bde + jr .load_tile + -.asm_49bd8 +.Frame3 ld a, $8c - jr .asm_49bde + jr .load_tile -.asm_49bdc + +.Frame4 ld a, $90 -.asm_49bde - ld hl, $3 +.load_tile + ld hl, SPRITEANIMSTRUCT_TILE_ID add hl, bc ld [hl], a - jr .asm_49be9 + jr .done -.asm_49be5 + +.restart pop de ld d, $ff push de -.asm_49be9 +.done pop de pop bc pop hl ret + ; 49bed -Function49bed: ; 49bed +.AddE: ; 49bed push af ld a, d add e ld d, a pop af ret + ; 49bf3 -Function49bf3: ; 49bf3 +CelebiEvent_SetBattleType: ; 49bf3 ld a, BATTLETYPE_CELEBI ld [BattleType], a ret + ; 49bf9 CheckCaughtCelebi: ; 49bf9 @@ -345,10 +369,12 @@ CheckCaughtCelebi: ; 49bf9 ld [ScriptVar], a jr .done + .false xor a ld [ScriptVar], a .done ret + ; 49c0c diff --git a/event/field_moves.asm b/event/field_moves.asm index 398636451..d1635078e 100755 --- a/event/field_moves.asm +++ b/event/field_moves.asm @@ -36,7 +36,7 @@ ShakeHeadbuttTree: ; 8c80a add hl, bc ld [hl], $84 ld a, 36 * 4 - ld [wOAMRetentionSize], a + ld [wCurrSpriteOAMAddr], a callba DoNextFrameForAllSprites call GetHeadbuttTreeRelativeLocation ld a, $20 @@ -51,7 +51,7 @@ ShakeHeadbuttTree: ; 8c80a jr z, .done dec [hl] ld a, 36 * 4 - ld [wOAMRetentionSize], a + ld [wCurrSpriteOAMAddr], a callba DoNextFrameForAllSprites call DelayFrame jr .loop @@ -125,7 +125,7 @@ OWCutAnimation: ; 8c940 bit 7, a jr nz, .finish ld a, 36 * 4 - ld [wOAMRetentionSize], a + ld [wCurrSpriteOAMAddr], a callab DoNextFrameForAllSprites call OWCutJumptable call DelayFrame @@ -342,7 +342,7 @@ FlyFromAnim: ; 8caed bit 7, a jr nz, .exit ld a, 0 * 4 - ld [wOAMRetentionSize], a + ld [wCurrSpriteOAMAddr], a callab DoNextFrameForAllSprites call Function8cbc8 call DelayFrame @@ -380,7 +380,7 @@ FlyToAnim: ; 8cb33 bit 7, a jr nz, .exit ld a, 0 * 4 - ld [wOAMRetentionSize], a + ld [wCurrSpriteOAMAddr], a callab DoNextFrameForAllSprites call Function8cbc8 call DelayFrame @@ -2036,17 +2036,17 @@ _InitSpriteAnimStruct:: ; 3b2a ; 3b3c -Function3b3c:: ; 3b3c +ReinitSpriteAnimFrame:: ; 3b3c ld [wSpriteAnimIDBuffer], a ld a, [hROMBank] push af - ld a, BANK(Function8d120) + ld a, BANK(_ReinitSpriteAnimFrame) rst Bankswitch ld a, [wSpriteAnimIDBuffer] - call Function8d120 + call _ReinitSpriteAnimFrame pop af rst Bankswitch diff --git a/misc/fixed_words.asm b/misc/fixed_words.asm index 3c3e18237..e1f1caa30 100755 --- a/misc/fixed_words.asm +++ b/misc/fixed_words.asm @@ -2478,7 +2478,7 @@ Function11d0f5: ; 11d0f5 (47:50f5) ld d, $0 add hl, de ld a, [hl] - call Function3b3c + call ReinitSpriteAnimFrame ld a, [CreditsTimer] sla a ld hl, Unknown_11d23e @@ -2487,7 +2487,7 @@ Function11d0f5: ; 11d0f5 (47:50f5) Function11d10f: ; 11d10f (47:510f) ld a, $27 - call Function3b3c + call ReinitSpriteAnimFrame ld a, [wcd25] sla a ld hl, Unknown_11d29e @@ -2514,7 +2514,7 @@ asm_11d11e: ; 11d11e (47:511e) Function11d134: ; 11d134 (47:5134) ld a, $27 - call Function3b3c + call ReinitSpriteAnimFrame ld a, [wcd2a] sla a ld hl, Unknown_11d2b6 @@ -2523,7 +2523,7 @@ Function11d134: ; 11d134 (47:5134) Function11d145: ; 11d145 (47:5145) ld a, $27 - call Function3b3c + call ReinitSpriteAnimFrame ld a, [wcd2c] sla a ld hl, Unknown_11d2ba @@ -2532,7 +2532,7 @@ Function11d145: ; 11d145 (47:5145) Function11d156: ; 11d156 (47:5156) ld a, $2a - call Function3b3c + call ReinitSpriteAnimFrame ld a, [wcd4a] sla a sla a @@ -2557,7 +2557,7 @@ Function11d175: ; 11d175 (47:5175) .asm_11d180 ld a, $26 .asm_11d182 - call Function3b3c + call ReinitSpriteAnimFrame ld a, [wcd4d] cp $4 jr z, .asm_11d1b1 @@ -2611,7 +2611,7 @@ Function11d1d7: ; 11d1d7 (47:51d7) asm_11d1db: ; 11d1db (47:51db) push de - call Function3b3c + call ReinitSpriteAnimFrame ld a, [wcd4a] sla a sla a @@ -2632,7 +2632,7 @@ asm_11d1db: ; 11d1db (47:51db) Function11d1fc: ; 11d1fc (47:51fc) ld a, $26 - call Function3b3c + call ReinitSpriteAnimFrame ld a, $8 ld e, a call Function11d2ee diff --git a/misc/mobile_46.asm b/misc/mobile_46.asm index c48c87c8e..dc69277d8 100755 --- a/misc/mobile_46.asm +++ b/misc/mobile_46.asm @@ -5885,7 +5885,7 @@ Function11ac51: ; 11ac51 call Function11acb7 call Function11ad6e ld a, 30 * 4 - ld [wOAMRetentionSize], a + ld [wCurrSpriteOAMAddr], a callba DoNextFrameForAllSprites callba ReloadMapPart jr .asm_11ac82 @@ -395,7 +395,7 @@ TilePermissions:: ; c2fe SECTION "wSpriteAnims", WRAM0 [$c300] ; wc300 - wc313 is a 10x2 dictionary. -; keys: taken from third column of Unknown_8d1c4 +; keys: taken from third column of SpriteAnimSeqData ; values: VTiles wSpriteAnimDict:: ds 10 * 2 ds wSpriteAnimDict - @ @@ -429,8 +429,8 @@ sprite_anim_struct: MACRO \1YCoord:: ds 1 ; 5 \1XOffset:: ds 1 ; 6 \1YOffset:: ds 1 ; 7 -\1FrameTimer:: ds 1 ; 8 -\1Sprite09:: ds 1 ; 9 +\1Duration:: ds 1 ; 8 +\1DurationOffset:: ds 1 ; 9 \1FrameIndex:: ds 1 ; a \1Sprite0b:: ds 1 \1Sprite0c:: ds 1 @@ -440,7 +440,7 @@ sprite_anim_struct: MACRO ENDM ; Field 0: Index -; Fields 1-3: Loaded from Unknown_8d1c4 +; Fields 1-3: Loaded from SpriteAnimSeqData wc314:: SpriteAnim1:: sprite_anim_struct SpriteAnim1 wc324:: @@ -466,7 +466,7 @@ wSpriteAnimationStructsEnd:: wc3ac:: ds 8 ; c3ac wSpriteAnimCount:: wc3b4:: ds 1 -wOAMRetentionSize:: ds 1 +wCurrSpriteOAMAddr:: ds 1 CurIcon:: ; c3b6 ds 1 |