diff options
author | PikalaxALT <PikalaxALT@gmail.com> | 2015-12-04 08:46:11 -0500 |
---|---|---|
committer | PikalaxALT <PikalaxALT@gmail.com> | 2015-12-04 08:46:11 -0500 |
commit | 5b94d54a6c81d7ea09497dfc3d1477a7ed3bd954 (patch) | |
tree | c2b9a32ed9f102f6fe0956760fc59c4490ba38d4 | |
parent | 2f14f3a669afd51ab98d9f2dea5857e5b548a8d7 (diff) |
More work on animations
-rw-r--r-- | battle/core.asm | 8 | ||||
-rw-r--r-- | constants/sprite_constants.asm | 2 | ||||
-rwxr-xr-x | data/sprite_engine.asm | 3 | ||||
-rwxr-xr-x | engine/compose_mail.asm | 65 | ||||
-rwxr-xr-x | engine/crystal_intro.asm | 40 | ||||
-rwxr-xr-x | engine/intro_menu.asm | 6 | ||||
-rwxr-xr-x | engine/learn.asm | 2 | ||||
-rwxr-xr-x | engine/mon_icons.asm | 450 | ||||
-rwxr-xr-x | engine/namingscreen.asm | 46 | ||||
-rwxr-xr-x | engine/overworld.asm | 2 | ||||
-rwxr-xr-x | engine/pokegear.asm | 5 | ||||
-rw-r--r-- | engine/predef.asm | 2 | ||||
-rwxr-xr-x | engine/sprite_anims.asm | 345 | ||||
-rwxr-xr-x | engine/sprites.asm | 527 | ||||
-rwxr-xr-x | engine/startmenu.asm | 40 | ||||
-rwxr-xr-x | engine/stats_screen.asm | 2 | ||||
-rwxr-xr-x | event/field_moves.asm | 10 | ||||
-rw-r--r-- | event/move_deleter.asm | 2 | ||||
-rw-r--r-- | home.asm | 8 | ||||
-rw-r--r-- | main.asm | 64 | ||||
-rw-r--r-- | misc/mobile_40.asm | 34 | ||||
-rw-r--r-- | misc/mobile_42.asm | 18 | ||||
-rwxr-xr-x | misc/mobile_46.asm | 4 | ||||
-rw-r--r-- | wram.asm | 18 |
24 files changed, 908 insertions, 795 deletions
diff --git a/battle/core.asm b/battle/core.asm index e50537dfd..1822acc47 100644 --- a/battle/core.asm +++ b/battle/core.asm @@ -5339,7 +5339,7 @@ BattleMenuPKMN_Loop: call Function3d329 jr c, .Cancel .loop - callba Function8ea4a + callba FreezeMonIcons call .GetMenu jr c, .PressedB call Function1bee @@ -5674,7 +5674,7 @@ MoveSelectionScreen: ; 3e4bc ld [MenuSelection2], a ld a, $1 ld [wcfaa], a - ld a, [wd0eb] + ld a, [wNumMoves] inc a ld [wcfa3], a ld a, $1 @@ -5812,7 +5812,7 @@ MoveSelectionScreen: ; 3e4bc ld a, [MenuSelection2] and a jp nz, .menu_loop - ld a, [wd0eb] + ld a, [wNumMoves] inc a ld [MenuSelection2], a jp .menu_loop @@ -5821,7 +5821,7 @@ MoveSelectionScreen: ; 3e4bc .pressed_down ; 3e62e ld a, [MenuSelection2] ld b, a - ld a, [wd0eb] + ld a, [wNumMoves] rept 2 inc a endr diff --git a/constants/sprite_constants.asm b/constants/sprite_constants.asm index b87ef330a..13070d89a 100644 --- a/constants/sprite_constants.asm +++ b/constants/sprite_constants.asm @@ -358,7 +358,7 @@ MAX_OUTDOOR_SPRITES EQU 23 const SPRITEANIMSTRUCT_XOFFSET const SPRITEANIMSTRUCT_YOFFSET const SPRITEANIMSTRUCT_DURATION - const SPRITEANIMSTRUCT_09 + const SPRITEANIMSTRUCT_DURATIONOFFSET const SPRITEANIMSTRUCT_FRAME const SPRITEANIMSTRUCT_0B const SPRITEANIMSTRUCT_0C diff --git a/data/sprite_engine.asm b/data/sprite_engine.asm index a2024808a..3a6c13d4f 100755 --- a/data/sprite_engine.asm +++ b/data/sprite_engine.asm @@ -67,7 +67,7 @@ Unknown_8d6e6: ; 8d6e6 dw Unknown_8d948 ; 41 ; 8d76a -Unknown_8d76a: db $00, $20 +Unknown_8d76a: db $00, $20 ; lowest 6 bits of second byte are duration, upper two bits are flags db -1 Unknown_8d76d: db $00, $08 db $01, $08 @@ -1569,3 +1569,4 @@ Unknown_8e706: ; Broken 2bpp pointers dbbw $10, $39, $672a ; 16-tile 2bpp at 39:672a (empty data) dbbw $10, $24, $672a ; 16-tile 2bpp at 24:672a (inside Function926f7) dbbw $10, $21, $672a ; 16-tile 2bpp at 21:672a (inside Function8671c) +; 8e72a (23:672a) diff --git a/engine/compose_mail.asm b/engine/compose_mail.asm index e02feb2a1..1e6318a3e 100755 --- a/engine/compose_mail.asm +++ b/engine/compose_mail.asm @@ -34,7 +34,7 @@ _ComposeMailMessage: ; 11e75 (mail?) ld a, BANK(.MailIcon) call FarCopyBytes xor a - ld hl, wc300 + ld hl, wSpriteAnimDict ld [hli], a ld [hl], a @@ -43,7 +43,7 @@ _ComposeMailMessage: ; 11e75 (mail?) ld a, SPRITE_ANIM_INDEX_00 call _InitSpriteAnimStruct - ld hl, $2 + ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID add hl, bc ld [hl], $0 call .InitCharset @@ -67,6 +67,7 @@ _ComposeMailMessage: ; 11e75 (mail?) add hl, de ld [hl], $4e ret + ; 11ef4 (4:5ef4) .MailIcon: ; 11ef4 @@ -77,6 +78,7 @@ INCBIN "gfx/icon/mail2.2bpp" ld a, $21 ld [wc6d3], a ret + ; 11f7a (4:5f7a) .Dummy: ; dummied out @@ -128,6 +130,7 @@ INCBIN "gfx/icon/mail2.2bpp" call DelayFrame and a ret + .exit_mail callab ClearSpriteAnims call ClearSprites @@ -179,10 +182,10 @@ endr ld [wc6d5], a ld a, b ld [wc6d6], a - ld hl, $1 + ld hl, SPRITEANIMSTRUCT_01 add hl, bc ld a, [hl] - ld hl, $e + ld hl, SPRITEANIMSTRUCT_0E add hl, bc ld [hl], a ld hl, wJumptableIndex @@ -232,10 +235,10 @@ endr ld c, [hl] inc hl ld b, [hl] - ld hl, $c + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld [hl], $9 - ld hl, $d + ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld [hl], $5 ret @@ -268,44 +271,47 @@ endr ld de, MailEntry_Uppercase call .PlaceMailCharset ret + .switch_to_lowercase ld de, MailEntry_Lowercase call .PlaceMailCharset ret +; called from engine/sprite_anims.asm Function120c1: ; 120c1 (4:60c1) call Function1210c - ld hl, SpriteAnim1Sprite0d - SpriteAnim1 + ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld a, [hl] ld e, a swap e - ld hl, SpriteAnim1YOffset - SpriteAnim1 + ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc ld [hl], e cp $5 ld de, Unknown_120f8 - ld a, $0 + ld a, 0 jr nz, .asm_120df ld de, Unknown_12102 - ld a, $1 + ld a, 1 .asm_120df - ld hl, SpriteAnim1Sprite0e - SpriteAnim1 + ld hl, SPRITEANIMSTRUCT_0E add hl, bc add [hl] - ld hl, SpriteAnim1Sprite01 - SpriteAnim1 + ld hl, SPRITEANIMSTRUCT_01 add hl, bc ld [hl], a - ld hl, SpriteAnim1Sprite0c - SpriteAnim1 + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld l, [hl] - ld h, SpriteAnim1Index - SpriteAnim1 + ld h, 0 add hl, de ld a, [hl] - ld hl, SpriteAnim1XOffset - SpriteAnim1 + ld hl, SPRITEANIMSTRUCT_XOFFSET add hl, bc ld [hl], a ret + ; 120f8 (4:60f8) Unknown_120f8: ; 120f8 @@ -329,20 +335,23 @@ Function1210c: ; 1210c (4:610c) and D_RIGHT jr nz, .right ret + .right call Function1218b and a jr nz, .asm_12138 - ld hl, $c + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hl] cp $9 jr nc, .asm_12135 inc [hl] ret + .asm_12135 ld [hl], $0 ret + .asm_12138 cp $3 jr nz, .asm_1213d @@ -351,24 +360,27 @@ Function1210c: ; 1210c (4:610c) ld e, a add a add e - ld hl, $c + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld [hl], a ret + .left call Function1218b and a jr nz, .asm_12159 - ld hl, $c + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hl] and a jr z, .asm_12156 dec [hl] ret + .asm_12156 ld [hl], $9 ret + .asm_12159 cp $1 jr nz, .asm_1215f @@ -380,29 +392,33 @@ endr ld e, a add a add e - ld hl, $c + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld [hl], a ret + .down - ld hl, $d + ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld a, [hl] cp $5 jr nc, .asm_12175 inc [hl] ret + .asm_12175 ld [hl], $0 ret + .up - ld hl, $d + ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld a, [hl] and a jr z, .asm_12182 dec [hl] ret + .asm_12182 ld [hl], $5 ret @@ -414,12 +430,12 @@ Function12185: ; 12185 (4:6185) ld b, [hl] Function1218b: ; 1218b (4:618b) - ld hl, $d + ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld a, [hl] cp $5 jr nz, .asm_121aa - ld hl, $c + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hl] cp $3 @@ -428,12 +444,15 @@ Function1218b: ; 1218b (4:618b) jr c, .asm_121a7 ld a, $3 ret + .asm_121a4 ld a, $1 ret + .asm_121a7 ld a, $2 ret + .asm_121aa xor a ret diff --git a/engine/crystal_intro.asm b/engine/crystal_intro.asm index 0738464b4..c82d0544b 100755 --- a/engine/crystal_intro.asm +++ b/engine/crystal_intro.asm @@ -213,7 +213,7 @@ PlaceGameFreakPresents_3: ; e46dd GameFreakLogoJumper: ; e46ed (39:46ed) - ld hl, $b + ld hl, SPRITEANIMSTRUCT_0B add hl, bc ld e, [hl] ld d, 0 @@ -234,19 +234,19 @@ GameFreakLogoScenes: ; e46fd (39:46fd) dw GameFreakLogoScene5 GameFreakLogoScene1: ; e4707 (39:4707) - ld hl, $b + ld hl, SPRITEANIMSTRUCT_0B add hl, bc inc [hl] ret GameFreakLogoScene2: ; e470d (39:470d) - ld hl, $c + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hl] and a jr z, .asm_e4747 ld d, a - ld hl, $d + ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld a, [hl] and $3f @@ -256,16 +256,16 @@ GameFreakLogoScene2: ; e470d (39:470d) .asm_e4723 ld e, a callba Functionce765 - ld hl, $7 + ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc ld [hl], e - ld hl, $d + ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld a, [hl] dec [hl] and $1f ret nz - ld hl, $c + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hl] sub $30 @@ -273,11 +273,12 @@ GameFreakLogoScene2: ; e470d (39:470d) ld de, SFX_DITTO_BOUNCE call PlaySFX ret + .asm_e4747 - ld hl, $b + ld hl, SPRITEANIMSTRUCT_0B add hl, bc inc [hl] - ld hl, $d + ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld [hl], $0 ld de, SFX_DITTO_POP_UP @@ -285,18 +286,19 @@ GameFreakLogoScene2: ; e470d (39:470d) ret GameFreakLogoScene3: ; e4759 (39:4759) - ld hl, $d + ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld a, [hl] cp $20 jr nc, .asm_e4764 inc [hl] ret + .asm_e4764 - ld hl, $b + ld hl, SPRITEANIMSTRUCT_0B add hl, bc inc [hl] - ld hl, $d + ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld [hl], $0 ld de, SFX_DITTO_TRANSFORM @@ -304,7 +306,7 @@ GameFreakLogoScene3: ; e4759 (39:4759) ret GameFreakLogoScene4: ; e4776 (39:4776) - ld hl, $d + ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld a, [hl] cp $40 @@ -331,12 +333,12 @@ endr ld a, $1 ld [hCGBPalUpdate], a ret + .asm_e47a3 - ld hl, $b + ld hl, SPRITEANIMSTRUCT_0B add hl, bc inc [hl] call PlaceGameFreakPresents_AdvanceIndex - GameFreakLogoScene5: ; e47ab (39:47ab) ret ; e47ac (39:47ac) @@ -810,7 +812,7 @@ IntroScene8: ; e4bd3 (39:4bd3) .finish ld de, SFX_INTRO_SUICUNE_2 call PlaySFX - callba Function8d03d + callba DeinitializeAllSprites call NextIntroScene ret @@ -1101,7 +1103,7 @@ IntroScene14: ; e4dfa (39:4dfa) ret .asm_e4e2c - callba Function8d03d + callba DeinitializeAllSprites ret .asm_e4e33 @@ -1313,7 +1315,7 @@ IntroScene19: ; e4f7e (39:4f7e) ld a, $90 ld [hWY], a callba ClearSpriteAnims - ld hl, wc300 + ld hl, wSpriteAnimDict xor a ld [hli], a ld [hl], $7f @@ -1394,7 +1396,7 @@ IntroScene22: ; e5072 (39:5072) jr nc, .done ret .done - callba Function8d03d + callba DeinitializeAllSprites call NextIntroScene ret diff --git a/engine/intro_menu.asm b/engine/intro_menu.asm index 9423b13c1..140233288 100755 --- a/engine/intro_menu.asm +++ b/engine/intro_menu.asm @@ -450,9 +450,9 @@ ConfirmContinue: ; 5e34 call DelayFrame call GetJoypad ld hl, hJoyPressed - bit 0, [hl] + bit A_BUTTON_F, [hl] jr nz, .PressA - bit 1, [hl] + bit B_BUTTON_F, [hl] jr z, .loop scf ret @@ -1336,7 +1336,7 @@ Function639b: ; unreferenced and $3 ret nz ld bc, SpriteAnim10 - ld hl, SpriteAnim10FrameIndex - SpriteAnim10 + ld hl, SPRITEANIMSTRUCT_FRAME add hl, bc ; over-the-top compicated way to load wc3ae into hl ld l, [hl] ld h, 0 diff --git a/engine/learn.asm b/engine/learn.asm index 260d50052..f6df570e7 100755 --- a/engine/learn.asm +++ b/engine/learn.asm @@ -150,7 +150,7 @@ ForgetMove: ; 65d3 ld [wcfa1], a ld a, $6 ld [wcfa2], a - ld a, [wd0eb] + ld a, [wNumMoves] inc a ld [wcfa3], a ld a, $1 diff --git a/engine/mon_icons.asm b/engine/mon_icons.asm new file mode 100755 index 000000000..79924cba2 --- /dev/null +++ b/engine/mon_icons.asm @@ -0,0 +1,450 @@ +LoadOverworldMonIcon: ; 8e82b + ld a, e + call ReadMonMenuIcon + ld l, a + ld h, 0 + add hl, hl + ld de, IconPointers + add hl, de + ld a, [hli] + ld e, a + ld d, [hl] + ld b, BANK(Icons) + ld c, 8 + ret +; 8e83f + +Function8e83f: ; 8e83f + push hl + push de + push bc + call Function8e849 + pop bc + pop de + pop hl + ret +; 8e849 + +Function8e849: ; 8e849 + ld d, 0 + ld hl, .jumptable +rept 2 + add hl, de +endr + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] +; 8e854 + + +.jumptable: ; 8e854 (23:6854) + dw Function8e8d5 ; init + dw Function8e961 + dw Function8e97d + dw Function8e99a + dw Function8e898 + dw Function8e8b1 + dw Function8e862 + + +Function8e862: ; 8e862 (23:6862) + call InitPartyMenuIcon + call Function8e86c + call SetPartyMonIconAnimSpeed + ret + +Function8e86c: ; 8e86c (23:686c) + push bc + ld a, [hObjectStructIndexBuffer] + ld hl, PartyMon1Item + ld bc, PARTYMON_STRUCT_LENGTH + call AddNTimes + pop bc + ld a, [hl] + and a + jr z, .asm_8e890 + push hl + push bc + ld d, a + callab ItemIsMail + pop bc + pop hl + jr c, .asm_8e88e + ld a, $6 + jr .asm_8e892 +.asm_8e88e + ld a, $5 + ; jr .asm_8e892 +.asm_8e890 + ld a, $4 +.asm_8e892 + ld hl, SPRITEANIMSTRUCT_01 + add hl, bc + ld [hl], a + ret + +Function8e898: ; 8e898 (23:6898) + call Function8e8d5 + ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID + add hl, bc + ld a, $0 + ld [hl], a + ld hl, SPRITEANIMSTRUCT_XCOORD + add hl, bc + ld a, 9 * 8 + ld [hl], a + ld hl, SPRITEANIMSTRUCT_YCOORD + add hl, bc + ld a, 9 * 8 + ld [hl], a + ret + +Function8e8b1: ; 8e8b1 (23:68b1) + call InitPartyMenuIcon + call SetPartyMonIconAnimSpeed + ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID + add hl, bc + ld a, $0 + ld [hl], a + ld hl, SPRITEANIMSTRUCT_XCOORD + add hl, bc + ld a, 3 * 8 + ld [hl], a + ld hl, SPRITEANIMSTRUCT_YCOORD + add hl, bc + ld a, 12 * 8 + ld [hl], a + ld a, c + ld [wc608], a + ld a, b + ld [wc608 + 1], a + ret + +Function8e8d5: ; 8e8d5 (23:68d5) + call InitPartyMenuIcon + call .SpawnItemIcon + call SetPartyMonIconAnimSpeed + ret + +.SpawnItemIcon: ; 8e8df (23:68df) + push bc + ld a, [hObjectStructIndexBuffer] + ld hl, PartyMon1Item + ld bc, PARTYMON_STRUCT_LENGTH + call AddNTimes + pop bc + ld a, [hl] + and a + ret z + push hl + push bc + ld d, a + callab ItemIsMail + pop bc + pop hl + jr c, .mail + ld a, $3 + jr .okay + +.mail + ld a, $2 +.okay + ld hl, SPRITEANIMSTRUCT_01 + add hl, bc + ld [hl], a + ret + +InitPartyMenuIcon: ; 8e908 (23:6908) + ld a, [wCurIconTile] + push af + ld a, [hObjectStructIndexBuffer] + ld hl, PartySpecies + ld e, a + ld d, $0 + add hl, de + ld a, [hl] + call ReadMonMenuIcon + ld [CurIcon], a + call GetMemIconGFX + ld a, [hObjectStructIndexBuffer] +; y coord +rept 4 + add a +endr + add $1c + ld d, a +; x coord + ld e, $10 +; type is partymon icon + ld a, SPRITE_ANIM_INDEX_00 + call InitSpriteAnimStruct + pop af + ld hl, SPRITEANIMSTRUCT_TILE_ID + add hl, bc + ld [hl], a + ret + +SetPartyMonIconAnimSpeed: ; 8e936 (23:6936) + push bc + ld a, [hObjectStructIndexBuffer] + ld b, a + call .getspeed + ld a, b + pop bc + ld hl, SPRITEANIMSTRUCT_DURATIONOFFSET + add hl, bc + ld [hl], a + rlca + rlca + ld hl, SPRITEANIMSTRUCT_0D + add hl, bc + ld [hl], a + ret + +.getspeed: ; 8e94c (23:694c) + callba PlacePartymonHPBar + call GetHPPal + ld e, d + ld d, 0 + ld hl, .speeds + add hl, de + ld b, [hl] + ret +; 8e95e (23:695e) + +.speeds: ; 8e95e + db $00, $40, $80 +; 8e961 + +Function8e961: ; 8e961 (23:6961) + ld a, [wd265] + call ReadMonMenuIcon + ld [CurIcon], a + xor a + call GetIconGFX + depixel 4, 4, 4, 0 + ld a, SPRITE_ANIM_INDEX_00 + call InitSpriteAnimStruct + ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID + add hl, bc + ld [hl], $0 + ret + +Function8e97d: ; 8e97d (23:697d) + ld a, [wd265] + call ReadMonMenuIcon + ld [CurIcon], a + xor a + call GetIconGFX + ld d, 3 * 8 + 2 + ld e, 4 * 8 + 4 + ld a, SPRITE_ANIM_INDEX_00 + call InitSpriteAnimStruct + ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID + add hl, bc + ld [hl], SPRITE_ANIM_SEQ_00 + ret + +Function8e99a: ; 8e99a (23:699a) + ld a, [wd265] + call ReadMonMenuIcon + ld [CurIcon], a + ld a, $62 + ld [wCurIconTile], a + call GetMemIconGFX + ret + +GetSpeciesIcon: ; 8e9ac +; Load species icon into VRAM at tile a + push de + ld a, [wd265] + call ReadMonMenuIcon + ld [CurIcon], a + pop de + ld a, e + call GetIconGFX + ret +; 8e9bc + + +FlyFunction_GetMonIcon: ; 8e9bc (23:69bc) + push de + ld a, [wd265] + call ReadMonMenuIcon + ld [CurIcon], a + pop de + ld a, e + call GetIcon_a + ret +; 8e9cc (23:69cc) + +GetMonIcon2: ; 8e9cc +; unreferenced + push de + ld a, [wd265] + call ReadMonMenuIcon + ld [CurIcon], a + pop de + call GetIcon_de + ret +; 8e9db + +GetMemIconGFX: ; 8e9db (23:69db) + ld a, [wCurIconTile] +GetIconGFX: ; 8e9de + call GetIcon_a + ld de, $80 ; 8 tiles + add hl, de + ld de, HeldItemIcons + lb bc, BANK(HeldItemIcons), 2 + call GetGFXUnlessMobile + ld a, [wCurIconTile] + add 10 + ld [wCurIconTile], a + ret + +HeldItemIcons: +INCBIN "gfx/icon/mail.2bpp" +INCBIN "gfx/icon/item.2bpp" +; 8ea17 + +GetIcon_de: ; 8ea17 +; Load icon graphics into VRAM starting from tile de. + ld l, e + ld h, d + jr GetIcon + +GetIcon_a: ; 8ea1b +; Load icon graphics into VRAM starting from tile a. + ld l, a + ld h, 0 + +GetIcon: ; 8ea1e +; Load icon graphics into VRAM starting from tile hl. + +; One tile is 16 bytes long. +rept 4 + add hl, hl +endr + + ld de, VTiles0 + add hl, de + push hl + +; The icons are contiguous, in order and of the same +; size, so the pointer table is somewhat redundant. + ld a, [CurIcon] + push hl + ld l, a + ld h, 0 + add hl, hl + ld de, IconPointers + add hl, de + ld a, [hli] + ld e, a + ld d, [hl] + pop hl + + lb bc, BANK(Icons), 8 + call GetGFXUnlessMobile + + pop hl + ret +; 8ea3f + +GetGFXUnlessMobile: ; 8ea3f + ld a, [wLinkMode] + cp LINK_MOBILE + jp nz, Request2bpp + jp Get2bpp_2 +; 8ea4a + +FreezeMonIcons: ; 8ea4a + ld hl, wSpriteAnimationStructs + ld e, PARTY_LENGTH + ld a, [MenuSelection2] + ld d, a +.loop + ld a, [hl] + and a + jr z, .next + cp d + jr z, .loadwithtwo + ld a, SPRITE_ANIM_SEQ_00 + jr .ok + +.loadwithtwo + ld a, SPRITE_ANIM_SEQ_02 + +.ok + push hl + ld c, l + ld b, h + ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID + add hl, bc + ld [hl], a + pop hl + +.next + ld bc, $10 + add hl, bc + dec e + jr nz, .loop + ret +; 8ea71 + +UnfreezeMonIcons: ; 8ea71 + ld hl, wSpriteAnimationStructs + ld e, PARTY_LENGTH +.loop + ld a, [hl] + and a + jr z, .next + push hl + ld c, l + ld b, h + ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID + add hl, bc + ld [hl], SPRITE_ANIM_SEQ_01 + pop hl +.next + ld bc, $10 + add hl, bc + dec e + jr nz, .loop + ret +; 8ea8c (23:6a8c) + +HoldSwitchmonIcon: ; 8ea8c + ld hl, wSpriteAnimationStructs + ld e, PARTY_LENGTH + ld a, [wSwitchMon] + ld d, a +.loop + ld a, [hl] + and a + jr z, .next + cp d + jr z, .is_switchmon + ld a, SPRITE_ANIM_SEQ_03 + jr .join_back + +.is_switchmon + ld a, SPRITE_ANIM_SEQ_02 +.join_back + push hl + ld c, l + ld b, h + ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID + add hl, bc + ld [hl], a + pop hl +.next + ld bc, $10 + add hl, bc + dec e + jr nz, .loop + ret + +INCLUDE "menu/mon_icons.asm" diff --git a/engine/namingscreen.asm b/engine/namingscreen.asm index 8e3db5aea..c0e416c79 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, $1 + ld hl, SPRITEANIMSTRUCT_01 add hl, bc ld [hl], $0 hlcoord 5, 2 @@ -411,10 +411,10 @@ Function1197b: ; 1197b (4:597b) ld [wc6d5], a ld a, b ld [wc6d6], a - ld hl, $1 + ld hl, SPRITEANIMSTRUCT_01 add hl, bc ld a, [hl] - ld hl, $e + ld hl, SPRITEANIMSTRUCT_0E add hl, bc ld [hl], a ld hl, wJumptableIndex @@ -454,10 +454,10 @@ Function119a1: ; 119a1 (4:59a1) ld c, [hl] inc hl ld b, [hl] - ld hl, $c + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld [hl], $8 - ld hl, $d + ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld [hl], $4 call Function1189c @@ -497,7 +497,7 @@ Function11a0b: ; 11a0b (4:5a0b) ld b, [hl] Function11a11: ; 11a11 (4:5a11) - ld hl, $d + ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld a, [hl] push bc @@ -509,7 +509,7 @@ Function11a11: ; 11a11 (4:5a11) cp b pop bc jr nz, .asm_11a39 - ld hl, $c + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hl] cp $3 @@ -530,12 +530,12 @@ Function11a11: ; 11a11 (4:5a11) Function11a3b: ; 11a3b (4:5a3b) call Function11a8b - ld hl, $d + ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld a, [hl] ld e, a swap e - ld hl, $7 + ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc ld [hl], e ld d, $4 @@ -550,19 +550,19 @@ Function11a3b: ; 11a3b (4:5a3b) ld de, Unknown_11a82 ld a, $1 .asm_11a60 - ld hl, $e + ld hl, SPRITEANIMSTRUCT_0E add hl, bc add [hl] - ld hl, $1 + ld hl, SPRITEANIMSTRUCT_01 add hl, bc ld [hl], a - ld hl, $c + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld l, [hl] ld h, $0 add hl, de ld a, [hl] - ld hl, $6 + ld hl, SPRITEANIMSTRUCT_XOFFSET add hl, bc ld [hl], a ret @@ -593,7 +593,7 @@ Function11a8b: ; 11a8b (4:5a8b) call Function11a11 and a jr nz, .asm_11ab7 - ld hl, $c + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hl] cp $8 @@ -611,7 +611,7 @@ Function11a8b: ; 11a8b (4:5a8b) ld e, a add a add e - ld hl, $c + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld [hl], a ret @@ -619,7 +619,7 @@ Function11a8b: ; 11a8b (4:5a8b) call Function11a11 and a jr nz, .asm_11ad8 - ld hl, $c + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hl] and a @@ -640,12 +640,12 @@ endr ld e, a add a add e - ld hl, $c + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld [hl], a ret .down - ld hl, $d + ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld a, [hl] call Function1189c @@ -663,7 +663,7 @@ endr ld [hl], $0 ret .up - ld hl, $d + ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld a, [hl] and a @@ -826,10 +826,10 @@ Function11c11: ; 11c11 (4:5c11) ld c, [hl] inc hl ld b, [hl] - ld hl, $6 + ld hl, SPRITEANIMSTRUCT_XOFFSET add hl, bc ld a, [hl] - ld hl, $4 + ld hl, SPRITEANIMSTRUCT_XCOORD add hl, bc add [hl] sub $8 @@ -837,10 +837,10 @@ Function11c11: ; 11c11 (4:5c11) srl a srl a ld e, a - ld hl, $7 + ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc ld a, [hl] - ld hl, $5 + ld hl, SPRITEANIMSTRUCT_YCOORD add hl, bc add [hl] sub $10 diff --git a/engine/overworld.asm b/engine/overworld.asm index fa4d02e7c..748ab4649 100755 --- a/engine/overworld.asm +++ b/engine/overworld.asm @@ -266,7 +266,7 @@ GetMonSprite: ; 14259 and a jr z, .NoBreedmon - callba Function8e82b + callba LoadOverworldMonIcon ld l, 1 ld h, 0 diff --git a/engine/pokegear.asm b/engine/pokegear.asm index 319640961..8eda1d9b8 100755 --- a/engine/pokegear.asm +++ b/engine/pokegear.asm @@ -1425,12 +1425,13 @@ INCBIN "gfx/unknown/0915db.tilemap.rle" _UpdateRadioStation: ; 9163e (24:563e) jr UpdateRadioStation -Function91640: ; 91640 (24:5640) +; called from engine/sprite_anims.asm +AnimateTuningKnob: ; 91640 (24:5640) push bc call .TuningKnob pop bc ld a, [wRadioTuningKnob] - ld hl, $6 + ld hl, SPRITEANIMSTRUCT_XOFFSET add hl, bc ld [hl], a ret diff --git a/engine/predef.asm b/engine/predef.asm index 51c057e4e..fcc347fa6 100644 --- a/engine/predef.asm +++ b/engine/predef.asm @@ -65,7 +65,7 @@ PredefPointers:: ; 856b add_predef ListMoves ; $20 add_predef PlaceNonFaintStatus add_predef Function50cdb - add_predef Function50c50 + add_predef ListMovePP add_predef GetGender add_predef StatsScreenInit add_predef DrawPlayerHP diff --git a/engine/sprite_anims.asm b/engine/sprite_anims.asm index f93f43c58..3f6187275 100755 --- a/engine/sprite_anims.asm +++ b/engine/sprite_anims.asm @@ -35,7 +35,7 @@ endr dw .seventeen dw .eighteen dw .nineteen ; finish egg hatching animation - dw .twenty + dw .twenty ; radio tuning knob dw .twentyone dw .twentytwo ; flying sprite dw .twentythree ; flying leaves @@ -57,33 +57,39 @@ endr .one: ; 8d2a2 (23:52a2) ld a, [MenuSelection2] - ld hl, 0 + + ld hl, SPRITEANIMSTRUCT_INDEX add hl, bc cp [hl] jr z, .two - ld hl, $4 + + ld hl, SPRITEANIMSTRUCT_XCOORD add hl, bc ld [hl], $10 - ld hl, $7 + + ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc ld [hl], $0 ret .two: ; 8d2b9 (23:52b9) - ld hl, $4 + ld hl, SPRITEANIMSTRUCT_XCOORD add hl, bc ld [hl], $18 - ld hl, $c + + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hl] ld d, a inc [hl] and $f ret nz - ld hl, $d + + ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld e, [hl] - ld hl, $7 + + ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc ld a, d and $10 ; bit 4 @@ -97,10 +103,12 @@ endr xor a ld [hl], a ret + .asm_8d2e2 ld a, $ff ld [hl], a ret + .asm_8d2e6 ld a, $fe ld [hl], a @@ -108,16 +116,19 @@ endr .three: ; 8d2ea (23:52ea) ld a, [MenuSelection2] - ld hl, 0 + + ld hl, SPRITEANIMSTRUCT_INDEX add hl, bc cp [hl] jr z, .asm_8d2fb - ld hl, $4 + + ld hl, SPRITEANIMSTRUCT_XCOORD add hl, bc ld [hl], $10 ret + .asm_8d2fb - ld hl, $4 + ld hl, SPRITEANIMSTRUCT_XCOORD add hl, bc ld [hl], $18 ret @@ -133,66 +144,76 @@ endr ; 8d30a .four_zero: ; 8d30a - call .asm_8d6d8 - ld hl, 0 + call .IncrementSpriteAnimStruct0B + + ld hl, SPRITEANIMSTRUCT_INDEX add hl, bc ld a, [hl] - ld hl, $d + + ld hl, SPRITEANIMSTRUCT_0D add hl, bc and $3 ld [hl], a inc [hl] swap a - ld hl, $c + + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld [hl], a .four_one: ; 8d321 - ld hl, $4 + ld hl, SPRITEANIMSTRUCT_XCOORD add hl, bc ld a, [hl] cp $a4 jr nc, .asm_8d356 - ld hl, $d + + ld hl, SPRITEANIMSTRUCT_0D add hl, bc add $4 - ld hl, $4 + + ld hl, SPRITEANIMSTRUCT_XCOORD add hl, bc ld [hl], a - ld hl, $5 + + ld hl, SPRITEANIMSTRUCT_YCOORD add hl, bc inc [hl] - ld hl, $d + + ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld a, [hl] sla a sla a ld d, $2 - ld hl, $c + + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hl] add $3 ld [hl], a - call .ApplyYOffset - ld hl, $7 + call .ApplySineWaveY + + ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc ld [hl], a ret .asm_8d356 - call Function8d036 + call DeinitializeSprite ret ; 8d35a .twentyfive: ; 8d35a (23:535a) - ld hl, $c + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hl] inc a ld [hl], a ld d, $2 - call .ApplyYOffset - ld hl, $7 + call .ApplySineWaveY + + ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc ld [hl], a ret @@ -210,7 +231,7 @@ endr ret .seven: ; 8d381 (23:5381) - ld hl, $c + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hl] and a @@ -221,69 +242,81 @@ endr ld d, a and $1f jr nz, .asm_8d395 - ld hl, $d + + ld hl, SPRITEANIMSTRUCT_0D add hl, bc dec [hl] .asm_8d395 - ld hl, $b + ld hl, SPRITEANIMSTRUCT_0B add hl, bc ld a, [hl] push af push de - call .ApplyYOffset - ld hl, $7 + call .ApplySineWaveY + + ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc ld [hl], a pop de pop af - call .ApplyXOffset - ld hl, $6 + call .ApplySineWaveX + + ld hl, SPRITEANIMSTRUCT_XOFFSET add hl, bc ld [hl], a - ld hl, $d + + ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld a, [hl] - ld hl, $b + + ld hl, SPRITEANIMSTRUCT_0B add hl, bc add [hl] ld [hl], a ret + .asm_8d3ba ld a, $1 ld [wcf64], a - call Function8d036 + call DeinitializeSprite ret .eight: ; 8d3c3 (23:53c3) - ld hl, $c + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hli] or [hl] jr z, .asm_8d41e - ld hl, $f + + ld hl, SPRITEANIMSTRUCT_0F add hl, bc ld d, [hl] - ld hl, $b + + ld hl, SPRITEANIMSTRUCT_0B add hl, bc ld a, [hl] push af push de - call .ApplyYOffset - ld hl, $7 + call .ApplySineWaveY + + ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc ld [hl], a pop de pop af - call .ApplyXOffset - ld hl, $6 + call .ApplySineWaveX + + ld hl, SPRITEANIMSTRUCT_XOFFSET add hl, bc ld [hl], a - ld hl, $c + + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld e, [hl] inc hl ld d, [hl] - ld hl, $e + + ld hl, SPRITEANIMSTRUCT_0E add hl, bc ld a, [hli] ld h, [hl] @@ -291,12 +324,14 @@ endr add hl, de ld e, l ld d, h - ld hl, $e + + ld hl, SPRITEANIMSTRUCT_0E add hl, bc ld [hl], e inc hl ld [hl], d - ld hl, $c + + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hli] ld h, [hl] @@ -305,19 +340,22 @@ endr add hl, de ld e, l ld d, h - ld hl, $c + + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld [hl], e inc hl ld [hl], d - ld hl, $b + + ld hl, SPRITEANIMSTRUCT_0B add hl, bc ld a, [hl] xor $20 ld [hl], a ret + .asm_8d41e - call Function8d036 + call DeinitializeSprite ret .nine: ; 8d422 (23:5422) @@ -336,31 +374,34 @@ endr ret .eleven: ; 8d43e (23:543e) - ld hl, $b + ld hl, SPRITEANIMSTRUCT_0B add hl, bc ld a, [hl] dec [hl] ld e, a and $1 jr z, .asm_8d462 - ld hl, $4 + + ld hl, SPRITEANIMSTRUCT_XCOORD add hl, bc ld a, [hl] cp $78 jr c, .asm_8d461 - call Function8d036 + call DeinitializeSprite ld a, $4 ld [wcf64], a ld de, SFX_PLACE_PUZZLE_PIECE_DOWN call PlaySFX ret + .asm_8d461 inc [hl] .asm_8d462 ld a, e ld d, $20 - call .ApplyYOffset - ld hl, $7 + call .ApplySineWaveY + + ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc ld [hl], a ret @@ -394,17 +435,19 @@ endr .sixteen_zero: ; 8d493 ld a, $14 call Function8d120 - ld hl, $b + + ld hl, SPRITEANIMSTRUCT_0B add hl, bc ld [hl], $2 - ld hl, $c + + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld [hl], $20 ret ; 8d4a5 .sixteen_two: ; 8d4a5 - ld hl, $c + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hl] and a @@ -413,21 +456,23 @@ endr ret .asm_8d4af - call .asm_8d6d8 - ld hl, $c + call .IncrementSpriteAnimStruct0B + + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld [hl], $40 .sixteen_three: ; 8d4b8 - ld hl, $c + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hl] cp $30 jr c, .asm_8d4cd dec [hl] ld d, $28 - call .ApplyYOffset - ld hl, $7 + call .ApplySineWaveY + + ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc ld [hl], a ret @@ -439,42 +484,49 @@ endr ; 8d4d5 .sixteen_one: ; 8d4d5 - ld hl, $b + ld hl, SPRITEANIMSTRUCT_0B add hl, bc ld [hl], $4 - ld hl, $c + + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld [hl], $30 - ld hl, $d + + ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld [hl], $24 ret ; 8d4e8 .sixteen_four: ; 8d4e8 - ld hl, $d + ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld a, [hl] and a jr z, .asm_8d51c ld d, a - ld hl, $c + + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hl] - call ApplyYOffset - ld hl, $7 + call ApplySineWaveY + + ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc ld [hl], a - ld hl, $c + + ld hl, SPRITEANIMSTRUCT_0C add hl, bc inc [hl] ld a, [hl] and $3f ret nz - ld hl, $c + + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld [hl], $20 - ld hl, $d + + ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld a, [hl] sub $c @@ -485,19 +537,20 @@ endr .asm_8d51c xor a - ld hl, $7 + + ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc ld [hl], a - call .asm_8d6d8 + call .IncrementSpriteAnimStruct0B ret .sixteen_five: ; 8d526 - call Function8d036 + call DeinitializeSprite ret ; 8d52a .seventeen: ; 8d52a (23:552a) - ld hl, $4 + ld hl, SPRITEANIMSTRUCT_XCOORD add hl, bc ld a, [hl] rept 2 @@ -512,7 +565,7 @@ endr ret .asm_8d53f - call Function8d036 + call DeinitializeSprite ret .eighteen: ; 8d543 (23:5543) @@ -520,7 +573,7 @@ endr ret .nineteen: ; 8d54a (23:554a) - ld hl, SpriteAnim1Sprite0c - SpriteAnim1 + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hl] cp $80 @@ -528,7 +581,8 @@ endr ld d, a add $8 ld [hl], a - ld hl, SpriteAnim1Sprite0b - SpriteAnim1 + + ld hl, SPRITEANIMSTRUCT_0B add hl, bc ld a, [hl] xor $20 @@ -536,29 +590,31 @@ endr push af push de - call .ApplyYOffset - ld hl, SpriteAnim1YOffset - SpriteAnim1 + call .ApplySineWaveY + + ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc ld [hl], a pop de pop af - call .ApplyXOffset - ld hl, SpriteAnim1XOffset - SpriteAnim1 + call .ApplySineWaveX + + ld hl, SPRITEANIMSTRUCT_XOFFSET add hl, bc ld [hl], a ret .finish_nineteen - call Function8d036 + call DeinitializeSprite ret .twenty: ; 8d578 (23:5578) - callab Function91640 + callab AnimateTuningKnob ret .twentyone: ; 8d57f (23:557f) - ld hl, $d + ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld e, [hl] inc hl @@ -567,12 +623,14 @@ endr add hl, de ld e, l ld d, h - ld hl, $d + + ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld [hl], e inc hl ld [hl], d - ld hl, $c + + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hl] rept 3 @@ -580,36 +638,41 @@ rept 3 endr push af push de - call .ApplyYOffset - ld hl, $7 + call .ApplySineWaveY + + ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc ld [hl], a pop de pop af - call .ApplyXOffset - ld hl, $6 + call .ApplySineWaveX + + ld hl, SPRITEANIMSTRUCT_XOFFSET add hl, bc ld [hl], a ret .twentytwo: ; 8d5b0 (23:55b0) - ld hl, $5 + ld hl, SPRITEANIMSTRUCT_YCOORD add hl, bc ld a, [hl] and a ret z - ld hl, $d + + ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld a, [hl] inc [hl] cp $40 ret c - ld hl, $5 + + ld hl, SPRITEANIMSTRUCT_YCOORD add hl, bc rept 2 dec [hl] endr - ld hl, $f + + ld hl, SPRITEANIMSTRUCT_0F add hl, bc ld a, [hl] ld d, a @@ -618,18 +681,19 @@ endr add $8 ld [hl], a .asm_8d5d3 - ld hl, $e + ld hl, SPRITEANIMSTRUCT_0E add hl, bc ld a, [hl] inc [hl] - call .ApplyXOffset - ld hl, $6 + call .ApplySineWaveX + + ld hl, SPRITEANIMSTRUCT_XOFFSET add hl, bc ld [hl], a ret .twentythree: ; 8d5e2 (23:55e2) - ld hl, $4 + ld hl, SPRITEANIMSTRUCT_XCOORD add hl, bc ld a, [hl] cp $b8 @@ -637,35 +701,40 @@ endr rept 2 inc [hl] endr - ld hl, $5 + + ld hl, SPRITEANIMSTRUCT_YCOORD add hl, bc dec [hl] ld d, $40 - ld hl, $c + + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hl] inc [hl] - call .ApplyXOffset - ld hl, $6 + call .ApplySineWaveX + + ld hl, SPRITEANIMSTRUCT_XOFFSET add hl, bc ld [hl], a ret .asm_8d603 - call Function8d036 + call DeinitializeSprite ret .twentyfour: ; 8d607 (23:5607) - ld hl, $5 + ld hl, SPRITEANIMSTRUCT_YCOORD add hl, bc ld a, [hl] cp $54 ret z - ld hl, $5 + + ld hl, SPRITEANIMSTRUCT_YCOORD add hl, bc rept 2 inc [hl] endr - ld hl, $f + + ld hl, SPRITEANIMSTRUCT_0F add hl, bc ld a, [hl] ld d, a @@ -674,12 +743,13 @@ endr sub $2 ld [hl], a .asm_8d621 - ld hl, $e + ld hl, SPRITEANIMSTRUCT_0E add hl, bc ld a, [hl] inc [hl] - call .ApplyXOffset - ld hl, $6 + call .ApplySineWaveX + + ld hl, SPRITEANIMSTRUCT_XOFFSET add hl, bc ld [hl], a ret @@ -698,10 +768,11 @@ endr jr nz, .asm_8d645 ret .asm_8d645 - ld hl, $7 + ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc ld [hl], $0 - ld hl, $d + + ld hl, SPRITEANIMSTRUCT_0D add hl, bc ld a, [hl] add $2 @@ -709,8 +780,9 @@ endr xor $ff inc a ld d, $20 - call .ApplyYOffset - ld hl, $7 + call .ApplySineWaveY + + ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc ld [hl], a ld a, $36 @@ -718,7 +790,7 @@ endr ret .thirty: ; 8d666 (23:5666) - ld hl, $c + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hl] cp $14 @@ -728,33 +800,37 @@ endr xor $ff inc a ld d, $20 - call .ApplyYOffset - ld hl, $7 + call .ApplySineWaveY + + ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc ld [hl], a .asm_8d67f ret .thirtytwo: ; 8d680 (23:5680) - ld hl, $b + ld hl, SPRITEANIMSTRUCT_0B add hl, bc ld d, [hl] rept 3 inc [hl] endr - ld hl, $c + + ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hl] push af push de - call .ApplyYOffset - ld hl, $7 + call .ApplySineWaveY + + ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc ld [hl], a pop de pop af - call .ApplyXOffset - ld hl, $6 + call .ApplySineWaveX + + ld hl, SPRITEANIMSTRUCT_XOFFSET add hl, bc ld [hl], a ret @@ -768,7 +844,7 @@ endr ret .thirtyfour: ; 8d6ae (23:56ae) - ld hl, $5 + ld hl, SPRITEANIMSTRUCT_YCOORD add hl, bc ld a, [hl] add $10 @@ -789,7 +865,8 @@ endr inc hl ld d, [hl] inc de - ld hl, $b + + ld hl, SPRITEANIMSTRUCT_0B add hl, bc ld l, [hl] ld h, $0 @@ -801,18 +878,18 @@ endr ret ; 8d6d8 (23:56d8) -.asm_8d6d8: ; 8d6d8 - ld hl, $b +.IncrementSpriteAnimStruct0B: ; 8d6d8 + ld hl, SPRITEANIMSTRUCT_0B add hl, bc inc [hl] ret ; 8d6de -.ApplyYOffset: ; 8d6de (23:56de) - call ApplyYOffset +.ApplySineWaveY: ; 8d6de (23:56de) + call ApplySineWaveY ret -.ApplyXOffset: ; 8d6e2 (23:56e2) - call ApplyXOffset +.ApplySineWaveX: ; 8d6e2 (23:56e2) + call ApplySineWaveX ret ; 8d6e6 (23:56e6) diff --git a/engine/sprites.asm b/engine/sprites.asm index e71fc5686..c00d1e9fc 100755 --- a/engine/sprites.asm +++ b/engine/sprites.asm @@ -114,6 +114,7 @@ DoNextFrameForFirst16Sprites: ; 8cfa8 (23:4fa8) ret InitSpriteAnimStruct:: ; 8cfd6 +; Initialize animation a at pixel x=e, y=d ; Find if there's any room in the wSpriteAnimationStructs array, which is 10x16 push de push af @@ -159,7 +160,7 @@ endr ld e, l ld d, h ; Set hl to the first field (field 0) in the current structure. - ld hl, 0 + ld hl, SPRITEANIMSTRUCT_INDEX add hl, bc ; Load the index. ld a, [wc3b4] @@ -174,11 +175,11 @@ endr ; Look up the third field from the table in the wc300 array (10x2). ; Take the value and load it in ld a, [de] - call LookUpInwSpriteAnimDict + call GetSpriteAnimVTile ld [hli], a pop de -; Set hl to field 4. Kinda pointless, because we're presumably already here. - ld hl, $4 +; Set hl to field 4 (X coordinate). Kinda pointless, because we're presumably already here. + ld hl, SPRITEANIMSTRUCT_XCOORD add hl, bc ; Load the original value of de into here. ld a, e @@ -203,15 +204,15 @@ rept 4 ld [hli], a endr ld [hl], a -; back up the address of the first field to wc3b8 +; back up the address of the first field to wSpriteAnimAddrBackup ld a, c - ld [wc3b8], a + ld [wSpriteAnimAddrBackup], a ld a, b - ld [wc3b8 + 1], a + ld [wSpriteAnimAddrBackup + 1], a ret ; 8d036 -Function8d036: ; 8d036 +DeinitializeSprite: ; 8d036 ; Clear the index field of the struct in bc. ld hl, SPRITEANIMSTRUCT_INDEX add hl, bc @@ -220,7 +221,7 @@ Function8d036: ; 8d036 ; 8d03d -Function8d03d: ; 8d03d (23:503d) +DeinitializeAllSprites: ; 8d03d (23:503d) ; Clear the index field of every struct in the wSpriteAnimationStructs array. ld hl, wSpriteAnimationStructs ld bc, $10 @@ -235,7 +236,7 @@ Function8d03d: ; 8d03d (23:503d) Function8d04c: ; 8d04c - call Function8d0ec ; init WRAM + call InitSpriteAnimBuffer ; init WRAM call Function8d132 ; read from a memory array cp -3 jr z, .done @@ -259,7 +260,7 @@ Function8d04c: ; 8d04c ld c, a ; number of objects .loop ; first byte: y (px) - ; [de] = [wCurrAnimYCoord] + [wCurrAnimYOffset] + [wGlobalAnimYOffset] + Function8d0be([hl]) + ; [de] = [wCurrAnimYCoord] + [wCurrAnimYOffset] + [wGlobalAnimYOffset] + AddOrSubtractY([hl]) ld a, [wCurrAnimYCoord] ld b, a ld a, [wCurrAnimYOffset] @@ -268,13 +269,13 @@ Function8d04c: ; 8d04c ld a, [wGlobalAnimYOffset] add b ld b, a - call Function8d0be + call AddOrSubtractY add b ld [de], a inc hl inc de ; second byte: x (px) - ; [de] = [wCurrAnimXCoord] + [wCurrAnimXOffset] + [wGlobalAnimXOffset] + Function8d0ce([hl]) + ; [de] = [wCurrAnimXCoord] + [wCurrAnimXOffset] + [wGlobalAnimXOffset] + AddOrSubtractX([hl]) ld a, [wCurrAnimXCoord] ld b, a ld a, [wCurrAnimXOffset] @@ -283,7 +284,7 @@ Function8d04c: ; 8d04c ld a, [wGlobalAnimXOffset] add b ld b, a - call Function8d0ce + call AddOrSubtractX add b ld [de], a inc hl @@ -311,7 +312,7 @@ Function8d04c: ; 8d04c jr .done .delete - call Function8d036 + call DeinitializeSprite .done and a @@ -323,12 +324,13 @@ Function8d04c: ; 8d04c ret ; 8d0be -Function8d0be: ; 8d0be +AddOrSubtractY: ; 8d0be push hl ld a, [hl] - ld hl, wc3b8 + ld hl, wCurrSpriteAddSubFlags bit 6, [hl] jr z, .ok + ; 8 - a add $8 xor $ff inc a @@ -338,12 +340,13 @@ Function8d0be: ; 8d0be ret ; 8d0ce -Function8d0ce: ; 8d0ce +AddOrSubtractX: ; 8d0ce push hl ld a, [hl] - ld hl, wc3b8 + ld hl, wCurrSpriteAddSubFlags bit 5, [hl] jr z, .ok + ; 8 - a add $8 xor $ff inc a @@ -354,7 +357,7 @@ Function8d0ce: ; 8d0ce ; 8d0de Function8d0de: ; 8d0de - ld a, [wc3b8] + ld a, [wCurrSpriteAddSubFlags] ld b, a ld a, [hl] xor b @@ -366,9 +369,9 @@ Function8d0de: ; 8d0de ret ; 8d0ec -Function8d0ec: ; 8d0ec +InitSpriteAnimBuffer: ; 8d0ec xor a - ld [wc3b8], a + ld [wCurrSpriteAddSubFlags], a ld hl, SPRITEANIMSTRUCT_TILE_ID add hl, bc ld a, [hli] @@ -384,8 +387,9 @@ Function8d0ec: ; 8d0ec ret ; 8d109 -LookUpInwSpriteAnimDict: ; 8d109 +GetSpriteAnimVTile: ; 8d109 ; a = wSpriteAnimDict[a] if a in wSpriteAnimDict else 0 +; VTiles offset push hl push bc ld hl, wSpriteAnimDict @@ -452,7 +456,7 @@ Function8d132: ; 8d132 ld a, [hl] push hl and $3f - ld hl, SPRITEANIMSTRUCT_09 + ld hl, SPRITEANIMSTRUCT_DURATIONOFFSET add hl, bc add [hl] ld hl, SPRITEANIMSTRUCT_DURATION @@ -463,7 +467,7 @@ Function8d132: ; 8d132 ld a, [hl] and $c0 srl a - ld [wc3b8], a + ld [wCurrSpriteAddSubFlags], a pop af ret @@ -552,6 +556,7 @@ endr ; 8d1c4 Unknown_8d1c4: ; 8d1c4 + ; ??, sequence, tile db $01, SPRITE_ANIM_SEQ_01, $00 ; 00 db $07, SPRITE_ANIM_SEQ_04, $00 ; 01 db $08, SPRITE_ANIM_SEQ_05, $05 ; 02 @@ -562,7 +567,7 @@ Unknown_8d1c4: ; 8d1c4 db $0e, SPRITE_ANIM_SEQ_0A, $07 ; 07 db $10, SPRITE_ANIM_SEQ_0B, $07 ; 08 db $08, SPRITE_ANIM_SEQ_0C, $05 ; 09 - db $11, SPRITE_ANIM_SEQ_00, $00 ; 0a + db $11, SPRITE_ANIM_SEQ_00, $00 ; 0a flying sprite db $12, SPRITE_ANIM_SEQ_0D, $08 ; 0b db $12, SPRITE_ANIM_SEQ_0E, $08 ; 0c db $12, SPRITE_ANIM_SEQ_0F, $08 ; 0d @@ -572,11 +577,11 @@ Unknown_8d1c4: ; 8d1c4 db $17, SPRITE_ANIM_SEQ_12, $00 ; 11 db $18, SPRITE_ANIM_SEQ_12, $00 ; 12 db $19, SPRITE_ANIM_SEQ_13, $00 ; 13 - db $1a, SPRITE_ANIM_SEQ_14, $00 ; 14 + 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 $1e, SPRITE_ANIM_SEQ_00, $00 ; 17 - db $1d, SPRITE_ANIM_SEQ_17, $00 ; 18 + db $1d, SPRITE_ANIM_SEQ_17, $00 ; 18 flying leaves db $1f, SPRITE_ANIM_SEQ_00, $00 ; 19 db $24, SPRITE_ANIM_SEQ_19, $00 ; 1a db $25, SPRITE_ANIM_SEQ_00, $00 ; 1b @@ -605,26 +610,26 @@ INCLUDE "data/sprite_engine.asm" ; Unknown_8d6e6 ; Unknown_8d94d -ApplyXOffset: ; 8e72a +ApplySineWaveX: ; 8e72a add $10 -ApplyYOffset: ; 8e72c +ApplySineWaveY: ; 8e72c and $3f cp $20 - jr nc, .xflip - call Function8e741 + jr nc, .flip + call .ApplyOffset ld a, h ret -.xflip +.flip and $1f - call Function8e741 + call .ApplyOffset ld a, h xor $ff ; cpl inc a ret ; 8e741 -Function8e741: ; 8e741 +.ApplyOffset: ; 8e741 ld e, a ld a, d ld d, 0 @@ -696,7 +701,7 @@ endr push de push hl - call ApplyYOffset + call ApplySineWaveY pop hl pop de add 13 * 8 @@ -705,7 +710,7 @@ endr pop af push de push hl - call ApplyXOffset + call ApplySineWaveX pop hl pop de add 10 * 8 + 4 @@ -743,451 +748,3 @@ ClearSpriteAnims2: ; 8e814 pop hl ret ; 8e82b - -Function8e82b: ; 8e82b - ld a, e - call ReadMonMenuIcon - ld l, a - ld h, 0 - add hl, hl - ld de, IconPointers - add hl, de - ld a, [hli] - ld e, a - ld d, [hl] - ld b, BANK(Icons) - ld c, 8 - ret -; 8e83f - -Function8e83f: ; 8e83f - push hl - push de - push bc - call Function8e849 - pop bc - pop de - pop hl - ret -; 8e849 - -Function8e849: ; 8e849 - ld d, 0 - ld hl, Jumptable_8e854 -rept 2 - add hl, de -endr - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] -; 8e854 - - -Jumptable_8e854: ; 8e854 (23:6854) - dw Function8e8d5 - dw Function8e961 - dw Function8e97d - dw Function8e99a - dw Function8e898 - dw Function8e8b1 - dw Function8e862 - - -Function8e862: ; 8e862 (23:6862) - call Function8e908 - call Function8e86c - call Function8e936 - ret - -Function8e86c: ; 8e86c (23:686c) - push bc - ld a, [hObjectStructIndexBuffer] - ld hl, PartyMon1Item - ld bc, PARTYMON_STRUCT_LENGTH - call AddNTimes - pop bc - ld a, [hl] - and a - jr z, .asm_8e890 - push hl - push bc - ld d, a - callab ItemIsMail - pop bc - pop hl - jr c, .asm_8e88e - ld a, $6 - jr .asm_8e892 -.asm_8e88e - ld a, $5 -.asm_8e890 - ld a, $4 -.asm_8e892 - ld hl, $1 - add hl, bc - ld [hl], a - ret - -Function8e898: ; 8e898 (23:6898) - call Function8e8d5 - ld hl, $2 - add hl, bc - ld a, $0 - ld [hl], a - ld hl, $4 - add hl, bc - ld a, $48 - ld [hl], a - ld hl, $5 - add hl, bc - ld a, $48 - ld [hl], a - ret - -Function8e8b1: ; 8e8b1 (23:68b1) - call Function8e908 - call Function8e936 - ld hl, $2 - add hl, bc - ld a, $0 - ld [hl], a - ld hl, $4 - add hl, bc - ld a, $18 - ld [hl], a - ld hl, $5 - add hl, bc - ld a, $60 - ld [hl], a - ld a, c - ld [wc608], a - ld a, b - ld [wc608 + 1], a - ret - -Function8e8d5: ; 8e8d5 (23:68d5) - call Function8e908 - call Function8e8df - call Function8e936 - ret - -Function8e8df: ; 8e8df (23:68df) - push bc - ld a, [hObjectStructIndexBuffer] - ld hl, PartyMon1Item - ld bc, $30 - call AddNTimes - pop bc - ld a, [hl] - and a - ret z - push hl - push bc - ld d, a - callab ItemIsMail - pop bc - pop hl - jr c, .asm_8e900 - ld a, $3 - jr .asm_8e902 -.asm_8e900 - ld a, $2 -.asm_8e902 - ld hl, $1 - add hl, bc - ld [hl], a - ret - -Function8e908: ; 8e908 (23:6908) - ld a, [wc3b7] - push af - ld a, [hObjectStructIndexBuffer] - ld hl, PartySpecies - ld e, a - ld d, $0 - add hl, de - ld a, [hl] - call ReadMonMenuIcon - ld [CurIcon], a - call Function8e9db - ld a, [hObjectStructIndexBuffer] -; y coord -rept 4 - add a -endr - add $1c - ld d, a -; x coord - ld e, $10 -; type is partymon icon - ld a, SPRITE_ANIM_INDEX_00 - call InitSpriteAnimStruct - pop af - ld hl, $3 - add hl, bc - ld [hl], a - ret - -Function8e936: ; 8e936 (23:6936) - push bc - ld a, [hObjectStructIndexBuffer] - ld b, a - call Function8e94c - ld a, b - pop bc - ld hl, $9 - add hl, bc - ld [hl], a - rlca - rlca - ld hl, $d - add hl, bc - ld [hl], a - ret - -Function8e94c: ; 8e94c (23:694c) - callba PlacePartymonHPBar - call GetHPPal - ld e, d - ld d, 0 - ld hl, Unknown_8e95e - add hl, de - ld b, [hl] - ret -; 8e95e (23:695e) - -Unknown_8e95e: ; 8e95e - db $00, $40, $80 -; 8e961 - -Function8e961: ; 8e961 (23:6961) - ld a, [wd265] - call ReadMonMenuIcon - ld [CurIcon], a - xor a - call GetIconGFX - lb de, $24, $20 - ld a, SPRITE_ANIM_INDEX_00 - call InitSpriteAnimStruct - ld hl, $2 - add hl, bc - ld [hl], $0 - ret - -Function8e97d: ; 8e97d (23:697d) - ld a, [wd265] - call ReadMonMenuIcon - ld [CurIcon], a - xor a - call GetIconGFX - ld d, $1a - ld e, $24 - ld a, SPRITE_ANIM_INDEX_00 - call InitSpriteAnimStruct - ld hl, $2 - add hl, bc - ld [hl], $0 - ret - -Function8e99a: ; 8e99a (23:699a) - ld a, [wd265] - call ReadMonMenuIcon - ld [CurIcon], a - ld a, $62 - ld [wc3b7], a - call Function8e9db - ret - -GetSpeciesIcon: ; 8e9ac -; Load species icon into VRAM at tile a - push de - ld a, [wd265] - call ReadMonMenuIcon - ld [CurIcon], a - pop de - ld a, e - call GetIconGFX - ret -; 8e9bc - - -Function8e9bc: ; 8e9bc (23:69bc) - push de - ld a, [wd265] - call ReadMonMenuIcon - ld [CurIcon], a - pop de - ld a, e - call GetIcon_a - ret -; 8e9cc (23:69cc) - -Function8e9cc: ; 8e9cc - push de - ld a, [wd265] - call ReadMonMenuIcon - ld [CurIcon], a - pop de - call GetIcon_de - ret -; 8e9db - -Function8e9db: ; 8e9db (23:69db) - ld a, [wc3b7] - -GetIconGFX: ; 8e9de - call GetIcon_a - ld de, $80 ; 8 tiles - add hl, de - ld de, HeldItemIcons - lb bc, BANK(HeldItemIcons), 2 - call GetGFXUnlessMobile - ld a, [wc3b7] - add 10 - ld [wc3b7], a - ret - -HeldItemIcons: -INCBIN "gfx/icon/mail.2bpp" -INCBIN "gfx/icon/item.2bpp" -; 8ea17 - -GetIcon_de: ; 8ea17 -; Load icon graphics into VRAM starting from tile de. - ld l, e - ld h, d - jr GetIcon - -GetIcon_a: ; 8ea1b -; Load icon graphics into VRAM starting from tile a. - ld l, a - ld h, 0 - -GetIcon: ; 8ea1e -; Load icon graphics into VRAM starting from tile hl. - -; One tile is 16 bytes long. -rept 4 - add hl, hl -endr - - ld de, VTiles0 - add hl, de - push hl - -; The icons are contiguous, in order and of the same -; size, so the pointer table is somewhat redundant. - ld a, [CurIcon] - push hl - ld l, a - ld h, 0 - add hl, hl - ld de, IconPointers - add hl, de - ld a, [hli] - ld e, a - ld d, [hl] - pop hl - - lb bc, BANK(Icons), 8 - call GetGFXUnlessMobile - - pop hl - ret -; 8ea3f - -GetGFXUnlessMobile: ; 8ea3f - ld a, [wLinkMode] - cp LINK_MOBILE - jp nz, Request2bpp - jp Get2bpp_2 -; 8ea4a - -Function8ea4a: ; 8ea4a - ld hl, wSpriteAnimationStructs - ld e, $6 - ld a, [MenuSelection2] - ld d, a -.loop - ld a, [hl] - and a - jr z, .next - cp d - jr z, .loadwithtwo - ld a, $0 - jr .ok - -.loadwithtwo - ld a, $2 - -.ok - push hl - ld c, l - ld b, h - ld hl, $2 - add hl, bc - ld [hl], a - pop hl - -.next - ld bc, $10 - add hl, bc - dec e - jr nz, .loop - ret -; 8ea71 - -Function8ea71: ; 8ea71 - ld hl, wSpriteAnimationStructs - ld e, $6 -.loop - ld a, [hl] - and a - jr z, .zero - push hl - ld c, l - ld b, h - ld hl, $2 - add hl, bc - ld [hl], $1 - pop hl -.zero - ld bc, $10 - add hl, bc - dec e - jr nz, .loop - ret -; 8ea8c (23:6a8c) - -Function8ea8c: ; 8ea8c - ld hl, wSpriteAnimationStructs - ld e, $6 - ld a, [wd0e3] - ld d, a -.asm_8ea95 - ld a, [hl] - and a - jr z, .asm_8eaab - cp d - jr z, .asm_8eaa0 - ld a, $3 - jr .asm_8eaa2 -.asm_8eaa0 - ld a, $2 -.asm_8eaa2 - push hl - ld c, l - ld b, h - ld hl, $2 - add hl, bc - ld [hl], a - pop hl -.asm_8eaab - ld bc, $10 - add hl, bc - dec e - jr nz, .asm_8ea95 - ret - -INCLUDE "menu/mon_icons.asm" diff --git a/engine/startmenu.asm b/engine/startmenu.asm index 1a8f605ae..861389f9c 100755 --- a/engine/startmenu.asm +++ b/engine/startmenu.asm @@ -685,7 +685,7 @@ PartyMonItemName: ; 12a6c CancelPokemonAction: ; 12a79 callba InitPartyMenuWithCancel - callba Function8ea71 + callba UnfreezeMonIcons ld a, 1 ret ; 12a88 @@ -748,7 +748,7 @@ SwitchPartyMons: ; 12aec inc a ld [wSwitchMon], a - callba Function8ea8c + callba HoldSwitchmonIcon callba InitPartyMenuNoCancel ld a, 4 @@ -1457,13 +1457,13 @@ MonMenu_SweetScent: ; 12f50 ret ; 12f5b -Function12f5b: ; 12f5b +ChooseMoveToDelete: ; 12f5b ld hl, Options ld a, [hl] push af set NO_TEXT_SCROLL, [hl] call LoadFontsBattleExtra - call Function12f73 + call .asm_12f73 pop bc ld a, b ld [Options], a @@ -1473,36 +1473,36 @@ Function12f5b: ; 12f5b ret ; 12f73 -Function12f73: ; 12f73 +.asm_12f73: ; 12f73 call SetUpMoveScreenBG ld de, Unknown_12fb2 call InitMenu3 - call Function131ef + call SetUpMoveList ld hl, wcfa5 set 6, [hl] - jr Function12f93 + jr .asm_12f93 -Function12f86: ; 12f86 +.asm_12f86: ; 12f86 call Function1bd3 bit 1, a - jp nz, Function12f9f + jp nz, .asm_12f9f bit 0, a - jp nz, Function12f9c + jp nz, .asm_12f9c -Function12f93: ; 12f93 +.asm_12f93: ; 12f93 call PrepareToPlaceMoveData call PlaceMoveData - jp Function12f86 + jp .asm_12f86 ; 12f9c -Function12f9c: ; 12f9c +.asm_12f9c: ; 12f9c and a - jr Function12fa0 + jr .asm_12fa0 -Function12f9f: ; 12f9f +.asm_12f9f: ; 12f9f scf -Function12fa0: ; 12fa0 +.asm_12fa0: ; 12fa0 push af xor a ld [wSwitchMon], a @@ -1545,7 +1545,7 @@ MoveScreenLoop: ; 12fd5 ld de, Unknown_13163 call InitMenu3 .loop - call Function131ef + call SetUpMoveList ld hl, wcfa5 set 6, [hl] jr .skip_joy @@ -1802,7 +1802,7 @@ SetUpMoveScreenBG: ; 13172 jp ClearBox ; 131ef -Function131ef: ; 131ef +SetUpMoveList: ; 131ef xor a ld [hBGMapMode], a ld [wMoveSwapBuffer], a @@ -1817,10 +1817,10 @@ Function131ef: ; 131ef hlcoord 2, 3 predef ListMoves hlcoord 10, 4 - predef Function50c50 + predef ListMovePP call WaitBGMap call SetPalettes - ld a, [wd0eb] + ld a, [wNumMoves] inc a ld [wcfa3], a hlcoord 0, 11 diff --git a/engine/stats_screen.asm b/engine/stats_screen.asm index 766e05fe7..e0faa54a3 100755 --- a/engine/stats_screen.asm +++ b/engine/stats_screen.asm @@ -697,7 +697,7 @@ Function4e147: ; 4e147 (13:6147) hlcoord 12, 11 ld a, $28 ld [Buffer1], a - predef Function50c50 + predef ListMovePP ret Function4e189: ; 4e189 (13:6189) diff --git a/event/field_moves.asm b/event/field_moves.asm index 1322c4eae..398636451 100755 --- a/event/field_moves.asm +++ b/event/field_moves.asm @@ -325,7 +325,7 @@ FlyFromAnim: ; 8caed push af xor a ld [VramState], a - call Function8cb9b + call FlyFunction_InitGFX depixel 10, 10, 4, 0 ld a, SPRITE_ANIM_INDEX_0A call _InitSpriteAnimStruct @@ -334,7 +334,7 @@ FlyFromAnim: ; 8caed ld [hl], $84 ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID add hl, bc - ld [hl], $16 + ld [hl], SPRITE_ANIM_SEQ_16 ld a, $80 ld [wcf64], a .loop @@ -360,7 +360,7 @@ FlyToAnim: ; 8cb33 push af xor a ld [VramState], a - call Function8cb9b + call FlyFunction_InitGFX depixel 31, 10, 4, 0 ld a, SPRITE_ANIM_INDEX_0A call _InitSpriteAnimStruct @@ -410,7 +410,7 @@ endr call ByteFill ret -Function8cb9b: ; 8cb9b (23:4b9b) +FlyFunction_InitGFX: ; 8cb9b (23:4b9b) callab ClearSpriteAnims ld de, CutGrassGFX ld hl, VTiles1 tile $00 @@ -424,7 +424,7 @@ Function8cb9b: ; 8cb9b (23:4b9b) ld a, [hl] ld [wd265], a ld e, $84 - callba Function8e9bc + callba FlyFunction_GetMonIcon xor a ld [wJumptableIndex], a ret diff --git a/event/move_deleter.asm b/event/move_deleter.asm index 617e3b86d..44226cca8 100644 --- a/event/move_deleter.asm +++ b/event/move_deleter.asm @@ -20,7 +20,7 @@ MoveDeletion: ld hl, UnknownText_0x2c5ea call PrintText call LoadStandardMenuDataHeader - callba Function12f5b + callba ChooseMoveToDelete push af call Function2b74 pop af @@ -2019,13 +2019,13 @@ Function3b0c:: ; 3b0c _InitSpriteAnimStruct:: ; 3b2a - ld [wc3b8], a + ld [wSpriteAnimIDBuffer], a ld a, [hROMBank] push af ld a, BANK(InitSpriteAnimStruct) rst Bankswitch - ld a, [wc3b8] + ld a, [wSpriteAnimIDBuffer] call InitSpriteAnimStruct @@ -2038,13 +2038,13 @@ _InitSpriteAnimStruct:: ; 3b2a Function3b3c:: ; 3b3c - ld [wc3b8], a + ld [wSpriteAnimIDBuffer], a ld a, [hROMBank] push af ld a, BANK(Function8d120) rst Bankswitch - ld a, [wc3b8] + ld a, [wSpriteAnimIDBuffer] call Function8d120 @@ -10731,7 +10731,7 @@ MonSubmenu: ; 24d19 xor a ld [hBGMapMode], a call GetMonSubmenuItems - callba Function8ea4a + callba FreezeMonIcons ld hl, .MenuDataHeader call LoadMenuDataHeader call .GetTopCoord @@ -15428,13 +15428,13 @@ MobileCheckOwnMonAnywhere: ; 4a843 ld hl, PartyMon1Species ld bc, PartyMonOT .asm_4a851 - call Function4a8dc + call .CheckMatch ret c push bc ld bc, PARTYMON_STRUCT_LENGTH add hl, bc pop bc - call Function4a91e + call .CopyName dec d jr nz, .asm_4a851 ld a, BANK(sBoxCount) @@ -15446,7 +15446,7 @@ MobileCheckOwnMonAnywhere: ; 4a843 ld hl, sBoxMon1Species ld bc, sBoxMonOT .asm_4a873 - call Function4a8dc + call .CheckMatch jr nc, .asm_4a87c call CloseSRAM ret @@ -15456,7 +15456,7 @@ MobileCheckOwnMonAnywhere: ; 4a843 ld bc, BOXMON_STRUCT_LENGTH add hl, bc pop bc - call Function4a91e + call .CopyName dec d jr nz, .asm_4a873 @@ -15468,7 +15468,7 @@ MobileCheckOwnMonAnywhere: ; 4a843 and $f cp c jr z, .asm_4a8d1 - ld hl, BoxAddressTable2 + ld hl, .BoxAddrs ld b, 0 rept 3 add hl, bc @@ -15496,7 +15496,7 @@ endr pop hl ld d, a .asm_4a8ba - call Function4a8dc + call .CheckMatch jr nc, .asm_4a8c4 pop bc call CloseSRAM @@ -15507,7 +15507,7 @@ endr ld bc, BOXMON_STRUCT_LENGTH add hl, bc pop bc - call Function4a91e + call .CopyName dec d jr nz, .asm_4a8ba pop bc @@ -15522,7 +15522,7 @@ endr ret ; 4a8dc -Function4a8dc: ; 4a8dc +.CheckMatch: ; 4a8dc push bc push hl push de @@ -15549,7 +15549,7 @@ Function4a8dc: ; 4a8dc ret ; 4a8f4 -BoxAddressTable2: ; 4a8f4 +.BoxAddrs: ; 4a8f4 dba sBox1 dba sBox2 dba sBox3 @@ -15566,7 +15566,7 @@ BoxAddressTable2: ; 4a8f4 dba sBox14 ; 4a91e -Function4a91e: ; 4a91e +.CopyName: ; 4a91e push hl ld hl, NAME_LENGTH add hl, bc @@ -15600,6 +15600,7 @@ FindItemInPCOrBag: ; 4a927 ret ; 4a94e +; mobile battle selection Function4a94e: ; 4a94e call FadeToMenu ld a, -1 @@ -16102,7 +16103,7 @@ Function4ac58: ; 4ac58 lb bc, 2, 18 hlcoord 1, 15 call ClearBox - callba Function8ea4a + callba FreezeMonIcons ld hl, MenuDataHeader_0x4aca2 call LoadMenuDataHeader ld hl, wd019 @@ -16422,7 +16423,7 @@ SECTION "bank13", ROMX, BANK[$13] SwapTextboxPalettes:: ; 4c000 hlcoord 0, 0 decoord 0, 0, AttrMap - ld b, $12 + ld b, SCREEN_HEIGHT .loop push bc ld c, SCREEN_WIDTH @@ -18868,27 +18869,27 @@ GetGender: ; 50bdd ret ; 50c50 -Function50c50: ; 50c50 - ld a, [wd0eb] +ListMovePP: ; 50c50 + ld a, [wNumMoves] inc a ld c, a - ld a, $4 + ld a, NUM_MOVES sub c ld b, a push hl ld a, [Buffer1] ld e, a ld d, $0 - ld a, $3e - call Function50cc9 + ld a, $3e ; P + call .load_loop ld a, b and a - jr z, .asm_50c6f + jr z, .skip ld c, a - ld a, $e3 - call Function50cc9 + ld a, "-" + call .load_loop -.asm_50c6f +.skip pop hl rept 3 inc hl @@ -18897,10 +18898,10 @@ endr ld e, l ld hl, TempMonMoves ld b, 0 -.asm_50c7a +.loop ld a, [hli] and a - jr z, .asm_50cc8 + jr z, .done push bc push hl push de @@ -18927,7 +18928,7 @@ endr ld de, StringBuffer1 + 4 lb bc, 1, 2 call PrintNum - ld a, $f3 + ld a, "/" ld [hli], a ld de, wd265 lb bc, 1, 2 @@ -18944,19 +18945,18 @@ endr inc b ld a, b cp NUM_MOVES - jr nz, .asm_50c7a + jr nz, .loop -.asm_50cc8 +.done ret ; 50cc9 -Function50cc9: ; 50cc9 -.asm_50cc9 +.load_loop: ; 50cc9 ld [hli], a ld [hld], a add hl, de dec c - jr nz, .asm_50cc9 + jr nz, .load_loop ret ; 50cd0 @@ -19097,7 +19097,7 @@ ListMoves: ; 50d6f call PlaceString pop bc ld a, b - ld [wd0eb], a + ld [wNumMoves], a inc b pop hl push bc @@ -21435,9 +21435,9 @@ Function8cf4f: ; 8cf4f ret ; 8cf53 - INCLUDE "engine/sprites.asm" +INCLUDE "engine/mon_icons.asm" SECTION "bank24", ROMX, BANK[$24] diff --git a/misc/mobile_40.asm b/misc/mobile_40.asm index 62d6f0d4f..251b2abd4 100644 --- a/misc/mobile_40.asm +++ b/misc/mobile_40.asm @@ -1901,7 +1901,7 @@ Function100bc2: ; 100bc2 ld a, [MenuSelection2] and a jp nz, .asm_100bcb - ld a, [wd0eb] + ld a, [wNumMoves] inc a ld [MenuSelection2], a jp .asm_100bcb @@ -1909,7 +1909,7 @@ Function100bc2: ; 100bc2 .asm_100c10 ld a, [MenuSelection2] ld b, a - ld a, [wd0eb] + ld a, [wNumMoves] rept 2 inc a endr @@ -1989,7 +1989,7 @@ Function100c74: ; 100c74 Function100c98: ; 100c98 ld de, Unknown_100cad call InitMenu3 - ld a, [wd0eb] + ld a, [wNumMoves] inc a ld [wcfa3], a ld a, [CurMoveNum] @@ -2553,10 +2553,10 @@ Unknown_10102c: ; 10102c Function101050: ; 101050 call Function10107d ld a, [OTPartyCount] -rept 2 +rept 2 ; ??? ld hl, wc608 endr - ld bc, $01b3 + ld bc, wc7bb - wc608 call Function1010de ld hl, wc7bb ld [hl], e @@ -2566,7 +2566,7 @@ endr call GetSRAMBank ld hl, wc608 ld de, $a001 - ld bc, $01b5 + ld bc, wc7bd - wc608 call CopyBytes call CloseSRAM ret @@ -2575,11 +2575,11 @@ endr Function10107d: ; 10107d xor a ld hl, wc608 - ld bc, $01b5 + ld bc, wc7bd - wc608 call ByteFill ld hl, wd26b ld de, wc608 - ld bc, $000b + ld bc, NAME_LENGTH call CopyBytes ld hl, wd271 ld a, [hli] @@ -2588,16 +2588,16 @@ Function10107d: ; 10107d ld [wc608 + 12], a ld hl, OTPartyMonNicknames ld de, wc608 + 13 - ld bc, $000b - call Function1010cd + ld bc, NAME_LENGTH + call .CopyAllFromOT ld hl, OTPartyMonOT ld de, wc656 + 1 - ld bc, $000b - call Function1010cd + ld bc, NAME_LENGTH + call .CopyAllFromOT ld hl, OTPartyMon1Species ld de, wc68a + 15 - ld bc, $0030 - call Function1010cd + ld bc, PARTYMON_STRUCT_LENGTH + call .CopyAllFromOT ld a, $50 ld [wc7b9], a ld a, $33 @@ -2605,7 +2605,7 @@ Function10107d: ; 10107d ret ; 1010cd -Function1010cd: ; 1010cd +.CopyAllFromOT: ; 1010cd push hl ld hl, 0 ld a, [OTPartyCount] @@ -2621,7 +2621,7 @@ Function1010de: ; 1010de push hl push bc ld de, 0 -.asm_1010e3 +.loop ld a, [hli] add e ld e, a @@ -2631,7 +2631,7 @@ Function1010de: ; 1010de dec bc ld a, b or c - jr nz, .asm_1010e3 + jr nz, .loop pop bc pop hl ret diff --git a/misc/mobile_42.asm b/misc/mobile_42.asm index d559b9419..1ae6a04ae 100644 --- a/misc/mobile_42.asm +++ b/misc/mobile_42.asm @@ -519,7 +519,7 @@ Function10839b: ; 10839b ld de, VTiles2 call Function108201 call EnableLCD - callba Function8d03d + callba DeinitializeAllSprites xor a ld [hSCX], a ld [hSCY], a @@ -654,7 +654,7 @@ Function1084d7: ; 1084d7 ld de, VTiles2 call Function108201 call EnableLCD - callba Function8d03d + callba DeinitializeAllSprites call DelayFrame ld de, TradeBallGFX ld hl, VTiles0 @@ -723,7 +723,7 @@ Function108589: ; 108589 ld de, VTiles2 call Function108201 call EnableLCD - callba Function8d03d + callba DeinitializeAllSprites call DelayFrame ld de, TradeBallGFX ld hl, VTiles0 @@ -780,7 +780,7 @@ Function108589: ; 108589 ; 108638 Function108638: ; 108638 - callba Function8d03d + callba DeinitializeAllSprites call ClearBGPalettes call ClearSprites call ClearTileMap @@ -816,7 +816,7 @@ Function108638: ; 108638 ; 108689 Function108689: ; 108689 - callba Function8d03d + callba DeinitializeAllSprites call ClearBGPalettes call ClearSprites call ClearTileMap @@ -1067,7 +1067,7 @@ Function108863: ; 108863 jr .asm_108868 .asm_108879 - callba Function8d03d + callba DeinitializeAllSprites depixel 9, 10, 2, 0 ld a, SPRITE_ANIM_INDEX_25 call _InitSpriteAnimStruct @@ -1161,7 +1161,7 @@ Function10890a: ; 10890a Function108919: ; 108919 ld c, $28 call Function1082cc - callba Function8d03d + callba DeinitializeAllSprites call ClearBGPalettes call ClearSprites call ClearTileMap @@ -1546,7 +1546,7 @@ Function108b98: ; 108b98 ; 108bbd Function108bbd: ; 108bbd - callba Function8d03d + callba DeinitializeAllSprites call ClearSprites ret ; 108bc7 @@ -1564,7 +1564,7 @@ Function108bc7: ; 108bc7 (42:4bc7) ld [hl], a ret .asm_108bd9 - callba Function8d036 + callba DeinitializeSprite ret Function108be0: ; 108be0 (42:4be0) diff --git a/misc/mobile_46.asm b/misc/mobile_46.asm index 367465030..c48c87c8e 100755 --- a/misc/mobile_46.asm +++ b/misc/mobile_46.asm @@ -5965,7 +5965,7 @@ Function11ad1b: ; 11ad1b dec a ld [hObjectStructIndexBuffer], a ld a, $10 - ld [wc3b7], a + ld [wCurIconTile], a ld hl, Function8e83f ld a, BANK(Function8e83f) ld e, $4 @@ -6884,7 +6884,7 @@ Function11b295: ; 11b295 ld hl, $0003 add hl, bc ld e, [hl] - callba Function8e9bc + callba FlyFunction_GetMonIcon hlcoord 4, 14 push hl call GetPokemonName @@ -392,8 +392,10 @@ TilePermissions:: ; c2fe ds 1 -SECTION "c300", WRAM0 [$c300] +SECTION "wSpriteAnims", WRAM0 [$c300] ; wc300 - wc313 is a 10x2 dictionary. +; keys: taken from third column of Unknown_8d1c4 +; values: VTiles wSpriteAnimDict:: ds 10 * 2 ds wSpriteAnimDict - @ wc300:: ds 1 @@ -469,8 +471,11 @@ CurIcon:: ; c3b6 ds 1 -wc3b7:: ds 1 -wc3b8:: ds 2 +wCurIconTile:: ds 1 +wSpriteAnimAddrBackup:: +wSpriteAnimIDBuffer:: +wCurrSpriteAddSubFlags:: + ds 2 wCurrAnimVTile:: ds 1 wCurrAnimXCoord:: ds 1 wCurrAnimYCoord:: ds 1 @@ -1000,10 +1005,10 @@ wc74d:: ds 1 wc74e:: ds 107 wc7b9:: ds 1 wc7ba:: ds 1 -wc7bb:: ds 15 -wc7ca:: ds 6 +wc7bb:: ds 2 +wc7bd:: + ds wc6d0 - @ - ds -$100 wPokedexDataStart:: wPokedexOrder:: ds NUM_POKEMON +- 1 wPokedexOrderEnd:: ds 6 @@ -1767,6 +1772,7 @@ wd0e3:: ds 1 wMenuScrollPosition:: ds 4 wQueuedScriptBank:: ds 1 wQueuedScriptAddr:: ds 2 +wNumMoves:: wd0eb:: ds 1 wFieldMoveSucceeded:: wPlayerAction:: |