diff options
author | ProjectRevoTPP <projectrevotpp@hotmail.com> | 2017-05-04 00:37:07 +0000 |
---|---|---|
committer | YamaArashi <YamaArashi@users.noreply.github.com> | 2017-05-03 17:37:07 -0700 |
commit | 7f03ba4951c5045274dab3f2a3de8e8d498b8df3 (patch) | |
tree | eea2b7a29e0eccff7057d6f4cb5eef42f5cd124c /src | |
parent | f2eb51932811b66b083ab0c6a7663d846f274888 (diff) |
decompile a little more of player_pc.c and dump half of battle_anim data incbins (#254)
* matching sub_813A280 and sub_813A4B4
* move data to item_use.c
* slightly less ugly NewGameInitPCItems
* more less ugly NewGameInitPCItems - Game Freak doesn't know how to use structs
* decompile HandleQuantityRolling and sub_813A6FC
* partially label and comment battle_anim.c
* decompile sub_813A794 and sub_813A83C
* minor comments on battle_anim.c
* decompile up to GF shenanigans #14390
* up to GF shenanigans #38571
* dump half of battle_anim_80CA710.s incbins
* dump most incbins from battle_anim_812C144.s
* obj_rot_scal fixes
* subsprite
* i cant even identify byte arrays
Diffstat (limited to 'src')
-rw-r--r-- | src/battle_anim.c | 461 | ||||
-rw-r--r-- | src/battle_anim_80A7E7C.c | 92 | ||||
-rw-r--r-- | src/item_use.c | 43 | ||||
-rw-r--r-- | src/player_pc.c | 898 | ||||
-rw-r--r-- | src/rom_8077ABC.c | 192 |
5 files changed, 852 insertions, 834 deletions
diff --git a/src/battle_anim.c b/src/battle_anim.c index a18453fa1..89798019c 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -8,6 +8,9 @@ #include "sprite.h" #include "task.h" +// sprites start at 10000 and thus must be subtracted of 10000 to account for the true index. +#define GET_TRUE_SPRITE_INDEX(i) (i - 10000) + extern u8 unk_2000000[]; extern u16 gUnknown_02024A6A[4]; extern u8 gUnknown_02024BE0[]; @@ -15,22 +18,22 @@ extern u8 gPlayerMonIndex; extern u8 gEnemyMonIndex; EWRAM_DATA const u8 *gBattleAnimScriptPtr = NULL; EWRAM_DATA const u8 *gBattleAnimScriptRetAddr = NULL; -EWRAM_DATA void (*gUnknown_0202F7AC)(void) = NULL; -EWRAM_DATA s8 gUnknown_0202F7B0 = 0; -EWRAM_DATA u8 gUnknown_0202F7B1 = 0; -EWRAM_DATA u8 gUnknown_0202F7B2 = 0; -EWRAM_DATA u8 gUnknown_0202F7B3 = 0; +EWRAM_DATA void (*gAnimScriptCallback)(void) = NULL; +EWRAM_DATA s8 gAnimFramesToWait = 0; +EWRAM_DATA u8 gAnimScriptActive = FALSE; +EWRAM_DATA u8 gAnimVisualTaskCount = 0; +EWRAM_DATA u8 gAnimSoundTaskCount = 0; EWRAM_DATA u32 gUnknown_0202F7B4 = 0; EWRAM_DATA u32 gUnknown_0202F7B8 = 0; EWRAM_DATA u16 gUnknown_0202F7BC = 0; EWRAM_DATA u8 gUnknown_0202F7BE = 0; EWRAM_DATA u16 gUnknown_0202F7C0 = 0; -EWRAM_DATA u8 gUnknown_0202F7C2[2] = {0}; +EWRAM_DATA u8 gMonAnimTaskIdArray[2] = {0}; EWRAM_DATA u8 gUnknown_0202F7C4 = 0; EWRAM_DATA u8 gUnknown_0202F7C5 = 0; -EWRAM_DATA u16 gUnknown_0202F7C6 = 0; -EWRAM_DATA u8 gUnknown_0202F7C8 = 0; -EWRAM_DATA u8 gUnknown_0202F7C9 = 0; +EWRAM_DATA u16 gAnimMoveIndex = 0; // set but unused. +EWRAM_DATA u8 gBattleAnimPlayerMonIndex = 0; +EWRAM_DATA u8 gBattleAnimEnemyMonIndex = 0; EWRAM_DATA u16 gUnknown_0202F7CA[4] = {0}; EWRAM_DATA u8 gUnknown_0202F7D2 = 0; extern u16 gUnknown_030041B4; @@ -41,8 +44,8 @@ extern u16 gUnknown_03004280; extern u16 gUnknown_03004288; extern u16 gUnknown_030042C0; extern u16 gUnknown_030042C4; -extern u16 gUnknown_03004AF0; -extern u16 gUnknown_03004B10[8]; +extern u16 gSoundAnimFramesToWait; +extern u16 gAnimSpriteIndexArray[8]; extern s16 gBattleAnimArgs[8]; extern struct MusicPlayerInfo gMPlay_BGM; extern struct MusicPlayerInfo gMPlay_SE1; @@ -69,13 +72,13 @@ extern void sub_800D7B8(void); extern u8 obj_id_for_side_relative_to_move(); extern u8 battle_get_per_side_status_permutated(); -static void sub_80759D0(void); +static void RunAnimScriptCommand(void); static void ScriptCmd_loadsprite(void); static void ScriptCmd_unloadsprite(void); static void ScriptCmd_sprite(void); static void ScriptCmd_createtask(void); static void ScriptCmd_delay(void); -static void ScriptCmd_wait(void); +static void ScriptCmd_waitforvisualfinish(void); static void ScriptCmd_hang1(void); static void ScriptCmd_hang2(void); static void ScriptCmd_end(void); @@ -135,7 +138,7 @@ static void (*const sScriptCmdTable[])(void) = { ScriptCmd_sprite, ScriptCmd_createtask, ScriptCmd_delay, - ScriptCmd_wait, + ScriptCmd_waitforvisualfinish, ScriptCmd_hang1, ScriptCmd_hang2, ScriptCmd_end, @@ -184,49 +187,54 @@ void battle_anim_clear_some_data(void) { s32 i; - gUnknown_0202F7B0 = 0; - gUnknown_0202F7B1 = 0; - gUnknown_0202F7B2 = 0; - gUnknown_0202F7B3 = 0; + gAnimFramesToWait = 0; + gAnimScriptActive = FALSE; + gAnimVisualTaskCount = 0; + gAnimSoundTaskCount = 0; gUnknown_0202F7B4 = 0; gUnknown_0202F7B8 = 0; gUnknown_0202F7BC = 0; gUnknown_0202F7BE = 0; + + // clear index array. for (i = 0; i < 8; i++) - gUnknown_03004B10[i] |= 0xFFFF; + gAnimSpriteIndexArray[i] |= 0xFFFF; + + // clear anim args. for (i = 0; i < 8; i++) gBattleAnimArgs[i] = 0; - gUnknown_0202F7C2[0] = 0xFF; - gUnknown_0202F7C2[1] = -1; + + gMonAnimTaskIdArray[0] = 0xFF; + gMonAnimTaskIdArray[1] = 0xFF; gUnknown_0202F7C4 = 0; gUnknown_0202F7C5 = 0; - gUnknown_0202F7C6 = 0; - gUnknown_0202F7C8 = 0; - gUnknown_0202F7C9 = 0; + gAnimMoveIndex = 0; + gBattleAnimPlayerMonIndex = 0; + gBattleAnimEnemyMonIndex = 0; gUnknown_0202F7D2 = 0; } -void move_anim_start_t1(u16 a) +void ExecuteMoveAnim(u16 move) { - gUnknown_0202F7C8 = gPlayerMonIndex; - gUnknown_0202F7C9 = gEnemyMonIndex; - move_something(gBattleAnims_Moves, a, 1); + gBattleAnimPlayerMonIndex = gPlayerMonIndex; + gBattleAnimEnemyMonIndex = gEnemyMonIndex; + DoMoveAnim(gBattleAnims_Moves, move, 1); } -void move_something(const u8 *const moveAnims[], u16 b, u8 c) +void DoMoveAnim(const u8 *const moveAnims[], u16 move, u8 c) { s32 i; - if (sub_8076BE0() == 0) + if (IsContest() == 0) { sub_8079E24(); sub_8043EB4(0); for (i = 0; i < 4; i++) { if (battle_side_get_owner(i) != 0) - gUnknown_0202F7CA[i] = GetMonData(&gEnemyParty[gUnknown_02024A6A[i]], 11); + gUnknown_0202F7CA[i] = GetMonData(&gEnemyParty[gUnknown_02024A6A[i]], MON_DATA_SPECIES); else - gUnknown_0202F7CA[i] = GetMonData(&gPlayerParty[gUnknown_02024A6A[i]], 11); + gUnknown_0202F7CA[i] = GetMonData(&gPlayerParty[gUnknown_02024A6A[i]], MON_DATA_SPECIES); } } else @@ -234,31 +242,37 @@ void move_something(const u8 *const moveAnims[], u16 b, u8 c) for (i = 0; i < 4; i++) gUnknown_0202F7CA[i] = EWRAM_19348; } + if (c == 0) - gUnknown_0202F7C6 = 0; + gAnimMoveIndex = 0; else - gUnknown_0202F7C6 = b; + gAnimMoveIndex = move; + for (i = 0; i < 8; i++) gBattleAnimArgs[i] = 0; - gUnknown_0202F7C2[0] = 0xFF; - gUnknown_0202F7C2[1] = -1; - gBattleAnimScriptPtr = moveAnims[b]; - gUnknown_0202F7B1 = 1; - gUnknown_0202F7B0 = 0; - gUnknown_0202F7AC = sub_80759D0; + + gMonAnimTaskIdArray[0] = 0xFF; + gMonAnimTaskIdArray[1] = 0xFF; + gBattleAnimScriptPtr = moveAnims[move]; + gAnimScriptActive = TRUE; + gAnimFramesToWait = 0; + gAnimScriptCallback = RunAnimScriptCommand; + for (i = 0; i < 8; i++) - gUnknown_03004B10[i] |= 0xFFFF; + gAnimSpriteIndexArray[i] |= 0xFFFF; + if (c != 0) { for (i = 0; gUnknown_081C7160[i] != 0xFFFF; i++) { - if (b == gUnknown_081C7160[i]) + if (move == gUnknown_081C7160[i]) { m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 128); break; } } } + gUnknown_030042C4 = 0; gUnknown_03004240 = 0; gUnknown_03004200 = 0; @@ -269,94 +283,94 @@ void move_anim_8072740(struct Sprite *sprite) { FreeSpriteOamMatrix(sprite); DestroySprite(sprite); - gUnknown_0202F7B2--; + gAnimVisualTaskCount--; } -void move_anim_task_del(u8 taskId) +void DestroyAnimVisualTask(u8 taskId) { DestroyTask(taskId); - gUnknown_0202F7B2--; + gAnimVisualTaskCount--; } -void move_anim_related_task_del(u8 taskId) +void DestroyAnimSoundTask(u8 taskId) { DestroyTask(taskId); - gUnknown_0202F7B3--; + gAnimSoundTaskCount--; } -static void sub_8075940(u16 a) +static void AddSpriteIndex(u16 index) { s32 i; for (i = 0; i < 8; i++) { - if (gUnknown_03004B10[i] == 0xFFFF) + if (gAnimSpriteIndexArray[i] == 0xFFFF) { - gUnknown_03004B10[i] = a; + gAnimSpriteIndexArray[i] = index; return; } } } -static void sub_8075970(u16 a) +static void ClearSpriteIndex(u16 index) { s32 i; for (i = 0; i < 8; i++) { - if (gUnknown_03004B10[i] == a) + if (gAnimSpriteIndexArray[i] == index) { - gUnknown_03004B10[i] |= 0xFFFF; + gAnimSpriteIndexArray[i] |= 0xFFFF; return; } } } -static void move_anim_waiter(void) +static void WaitAnimFrameCount(void) { - if (gUnknown_0202F7B0 <= 0) + if (gAnimFramesToWait <= 0) { - gUnknown_0202F7AC = sub_80759D0; - gUnknown_0202F7B0 = 0; + gAnimScriptCallback = RunAnimScriptCommand; + gAnimFramesToWait = 0; } else { - gUnknown_0202F7B0--; + gAnimFramesToWait--; } } -static void sub_80759D0(void) +static void RunAnimScriptCommand(void) { do { sScriptCmdTable[SCRIPT_READ_8(gBattleAnimScriptPtr)](); - } while (gUnknown_0202F7B0 == 0 && gUnknown_0202F7B1 != 0); + } while (gAnimFramesToWait == 0 && gAnimScriptActive != FALSE); } static void ScriptCmd_loadsprite(void) { - u16 r4; + u16 index; gBattleAnimScriptPtr++; - r4 = SCRIPT_READ_16(gBattleAnimScriptPtr); - LoadCompressedObjectPic(&gBattleAnimPicTable[r4 - 10000]); - LoadCompressedObjectPalette(&gBattleAnimPaletteTable[r4 - 10000]); + index = SCRIPT_READ_16(gBattleAnimScriptPtr); + LoadCompressedObjectPic(&gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(index)]); + LoadCompressedObjectPalette(&gBattleAnimPaletteTable[GET_TRUE_SPRITE_INDEX(index)]); gBattleAnimScriptPtr += 2; - sub_8075940(r4 - 10000); - gUnknown_0202F7B0 = 1; - gUnknown_0202F7AC = move_anim_waiter; + AddSpriteIndex(GET_TRUE_SPRITE_INDEX(index)); + gAnimFramesToWait = 1; + gAnimScriptCallback = WaitAnimFrameCount; } static void ScriptCmd_unloadsprite(void) { - u16 r4; + u16 index; gBattleAnimScriptPtr++; - r4 = SCRIPT_READ_16(gBattleAnimScriptPtr); - FreeSpriteTilesByTag(gBattleAnimPicTable[r4 - 10000].tag); - FreeSpritePaletteByTag(gBattleAnimPicTable[r4 - 10000].tag); + index = SCRIPT_READ_16(gBattleAnimScriptPtr); + FreeSpriteTilesByTag(gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(index)].tag); + FreeSpritePaletteByTag(gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(index)].tag); gBattleAnimScriptPtr += 2; - sub_8075970(r4 - 10000); + ClearSpriteIndex(GET_TRUE_SPRITE_INDEX(index)); } #ifdef NONMATCHING @@ -390,7 +404,7 @@ static void ScriptCmd_sprite(void) r4 -= 0x40; else r4 = -r4; - _r0 = sub_8079E90(gUnknown_0202F7C9); + _r0 = sub_8079E90(gBattleAnimEnemyMonIndex); r1 = r4; } @@ -401,17 +415,17 @@ static void ScriptCmd_sprite(void) r4 -= 0x40; else r4 = -r4; - _r0 = sub_8079E90(gUnknown_0202F7C8); + _r0 = sub_8079E90(gBattleAnimPlayerMonIndex); r1 = r4; } r6 = _r0 + r1; if ((s16)r6 < 3) r6 = 3; - r4 = sub_8077ABC(gUnknown_0202F7C9, 2); - r2 = sub_8077ABC(gUnknown_0202F7C9, 3); + r4 = sub_8077ABC(gBattleAnimEnemyMonIndex, 2); + r2 = sub_8077ABC(gBattleAnimEnemyMonIndex, 3); CreateSpriteAndAnimate(r7, r4, r2, r6); - gUnknown_0202F7B2++; + gAnimVisualTaskCount++; } #else __attribute__((naked)) @@ -479,10 +493,10 @@ _08075B34:\n\ _08075B36:\n\ lsls r0, 24\n\ lsrs r4, r0, 24\n\ - ldr r0, _08075B40 @ =gUnknown_0202F7C9\n\ + ldr r0, _08075B40 @ =gBattleAnimEnemyMonIndex\n\ b _08075B56\n\ .align 2, 0\n\ -_08075B40: .4byte gUnknown_0202F7C9\n\ +_08075B40: .4byte gBattleAnimEnemyMonIndex\n\ _08075B44:\n\ cmp r4, 0x3F\n\ bls _08075B4E\n\ @@ -494,7 +508,7 @@ _08075B4E:\n\ _08075B50:\n\ lsls r0, 24\n\ lsrs r4, r0, 24\n\ - ldr r0, _08075BAC @ =gUnknown_0202F7C8\n\ + ldr r0, _08075BAC @ =gBattleAnimPlayerMonIndex\n\ _08075B56:\n\ ldrb r0, [r0]\n\ bl sub_8079E90\n\ @@ -511,7 +525,7 @@ _08075B56:\n\ bgt _08075B74\n\ movs r6, 0x3\n\ _08075B74:\n\ - ldr r5, _08075BB0 @ =gUnknown_0202F7C9\n\ + ldr r5, _08075BB0 @ =gBattleAnimEnemyMonIndex\n\ ldrb r0, [r5]\n\ movs r1, 0x2\n\ bl sub_8077ABC\n\ @@ -529,7 +543,7 @@ _08075B74:\n\ adds r0, r7, 0\n\ adds r1, r4, 0\n\ bl CreateSpriteAndAnimate\n\ - ldr r1, _08075BB4 @ =gUnknown_0202F7B2\n\ + ldr r1, _08075BB4 @ =gAnimVisualTaskCount\n\ ldrb r0, [r1]\n\ adds r0, 0x1\n\ strb r0, [r1]\n\ @@ -537,9 +551,9 @@ _08075B74:\n\ pop {r0}\n\ bx r0\n\ .align 2, 0\n\ -_08075BAC: .4byte gUnknown_0202F7C8\n\ -_08075BB0: .4byte gUnknown_0202F7C9\n\ -_08075BB4: .4byte gUnknown_0202F7B2\n\ +_08075BAC: .4byte gBattleAnimPlayerMonIndex\n\ +_08075BB0: .4byte gBattleAnimEnemyMonIndex\n\ +_08075BB4: .4byte gAnimVisualTaskCount\n\ .syntax divided\n"); } #endif @@ -559,36 +573,39 @@ static void ScriptCmd_createtask(void) gBattleAnimScriptPtr++; numArgs = SCRIPT_READ_8(gBattleAnimScriptPtr); gBattleAnimScriptPtr++; + for (i = 0; i < numArgs; i++) { gBattleAnimArgs[i] = SCRIPT_READ_16(gBattleAnimScriptPtr); gBattleAnimScriptPtr += 2; } + taskId = CreateTask(taskFunc, taskPriority); taskFunc(taskId); - gUnknown_0202F7B2++; + gAnimVisualTaskCount++; } static void ScriptCmd_delay(void) { gBattleAnimScriptPtr++; - gUnknown_0202F7B0 = SCRIPT_READ_8(gBattleAnimScriptPtr); - if (gUnknown_0202F7B0 == 0) - gUnknown_0202F7B0 = -1; + gAnimFramesToWait = SCRIPT_READ_8(gBattleAnimScriptPtr); + if (gAnimFramesToWait == 0) + gAnimFramesToWait = -1; gBattleAnimScriptPtr++; - gUnknown_0202F7AC = move_anim_waiter; + gAnimScriptCallback = WaitAnimFrameCount; } -static void ScriptCmd_wait(void) +// wait for visual tasks to finish. +static void ScriptCmd_waitforvisualfinish(void) { - if (gUnknown_0202F7B2 == 0) + if (gAnimVisualTaskCount == 0) { gBattleAnimScriptPtr++; - gUnknown_0202F7B0 = 0; + gAnimFramesToWait = 0; } else { - gUnknown_0202F7B0 = 1; + gAnimFramesToWait = 1; } } @@ -603,22 +620,23 @@ static void ScriptCmd_hang2(void) static void ScriptCmd_end(void) { s32 i; - int zero = 0; + bool32 continuousAnim = FALSE; - if (gUnknown_0202F7B2 != 0 || gUnknown_0202F7B3 != 0 - || gUnknown_0202F7C2[0] != 0xFF || gUnknown_0202F7C2[1] != 0xFF) + // keep waiting as long as there is animations to be done. + if (gAnimVisualTaskCount != 0 || gAnimSoundTaskCount != 0 + || gMonAnimTaskIdArray[0] != 0xFF || gMonAnimTaskIdArray[1] != 0xFF) { - gUnknown_03004AF0 = 0; - gUnknown_0202F7B0 = 1; + gSoundAnimFramesToWait = 0; + gAnimFramesToWait = 1; return; } + // finish the sound effects. if (IsSEPlaying()) { - gUnknown_03004AF0++; - if (gUnknown_03004AF0 <= 0x5A) + if (++gSoundAnimFramesToWait <= 90) // wait 90 frames, then halt the sound effect. { - gUnknown_0202F7B0 = 1; + gAnimFramesToWait = 1; return; } else @@ -627,25 +645,29 @@ static void ScriptCmd_end(void) m4aMPlayStop(&gMPlay_SE2); } } - gUnknown_03004AF0 = 0; + + // the SE has halted, so set the SE Frame Counter to 0 and continue. + gSoundAnimFramesToWait = 0; + for (i = 0; i < 8; i++) { - if (gUnknown_03004B10[i] != 0xFFFF) + if (gAnimSpriteIndexArray[i] != 0xFFFF) { - FreeSpriteTilesByTag(gBattleAnimPicTable[gUnknown_03004B10[i]].tag); - FreeSpritePaletteByTag(gBattleAnimPicTable[gUnknown_03004B10[i]].tag); - gUnknown_03004B10[i] |= 0xFFFF; + FreeSpriteTilesByTag(gBattleAnimPicTable[gAnimSpriteIndexArray[i]].tag); + FreeSpritePaletteByTag(gBattleAnimPicTable[gAnimSpriteIndexArray[i]].tag); + gAnimSpriteIndexArray[i] |= 0xFFFF; // set terminator. } } - if (zero == 0) + + if (continuousAnim == FALSE) // may have been used for debug? { m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 256); - if (sub_8076BE0() == 0) + if (IsContest() == 0) { sub_8079E24(); sub_8043EB4(1); } - gUnknown_0202F7B1 = 0; + gAnimScriptActive = FALSE; } } @@ -672,14 +694,14 @@ static void ScriptCmd_monbg(void) else if (r6 == 1) r6 = 3; if (r6 == 0 || r6 == 2) - r5 = gUnknown_0202F7C8; + r5 = gBattleAnimPlayerMonIndex; else - r5 = gUnknown_0202F7C9; + r5 = gBattleAnimEnemyMonIndex; if (b_side_obj__get_some_boolean(r5)) { r0 = battle_get_per_side_status(r5); r0 += 0xFF; - if (r0 <= 1 || sub_8076BE0() != 0) + if (r0 <= 1 || IsContest() != 0) r7 = 0; else r7 = 1; @@ -701,7 +723,7 @@ static void ScriptCmd_monbg(void) } gTasks[taskId].data[5] = r7; gTasks[taskId].data[6] = r5; - gUnknown_0202F7C2[0] = taskId; + gMonAnimTaskIdArray[0] = taskId; } r5 ^= 2; @@ -709,7 +731,7 @@ static void ScriptCmd_monbg(void) { r0 = battle_get_per_side_status(r5); r0 += 0xFF; - if (r0 <= 1 || sub_8076BE0() != 0) + if (r0 <= 1 || IsContest() != 0) r7 = 0; else r7 = 1; @@ -731,7 +753,7 @@ static void ScriptCmd_monbg(void) } gTasks[taskId].data[5] = r7; gTasks[taskId].data[6] = r5; - gUnknown_0202F7C2[1] = taskId; + gMonAnimTaskIdArray[1] = taskId; } gBattleAnimScriptPtr++; } @@ -739,17 +761,17 @@ static void ScriptCmd_monbg(void) #ifdef NONMATCHING bool8 b_side_obj__get_some_boolean(u8 a) { - if (sub_8076BE0() != 0) + if (IsContest() != 0) { - if (a == gUnknown_0202F7C8) + if (a == gBattleAnimPlayerMonIndex) return TRUE; else return FALSE; } if (sub_8078874(a) == 0) return FALSE; - if (sub_8076BE0() != 0) - return TRUE; + if (IsContest() != 0) + return TRUE; // this line wont ever be reached. if ((EWRAM_17800[a].unk0 & 1) == 0) return TRUE; if (gSprites[gUnknown_02024BE0[a]].invisible) @@ -765,24 +787,24 @@ bool8 b_side_obj__get_some_boolean(u8 a) lsls r0, 24\n\ lsrs r4, r0, 24\n\ adds r5, r4, 0\n\ - bl sub_8076BE0\n\ + bl IsContest\n\ lsls r0, 24\n\ cmp r0, 0\n\ beq _08075FDC\n\ - ldr r0, _08075FD8 @ =gUnknown_0202F7C8\n\ + ldr r0, _08075FD8 @ =gBattleAnimPlayerMonIndex\n\ ldrb r0, [r0]\n\ cmp r4, r0\n\ beq _0807601C\n\ b _0807602C\n\ .align 2, 0\n\ -_08075FD8: .4byte gUnknown_0202F7C8\n\ +_08075FD8: .4byte gBattleAnimPlayerMonIndex\n\ _08075FDC:\n\ adds r0, r4, 0\n\ bl sub_8078874\n\ lsls r0, 24\n\ cmp r0, 0\n\ beq _0807602C\n\ - bl sub_8076BE0\n\ + bl IsContest\n\ lsls r0, 24\n\ cmp r0, 0\n\ bne _0807601C\n\ @@ -863,7 +885,7 @@ void sub_8076034(u8 a, u8 b) spriteId = gUnknown_02024BE0[a]; gUnknown_030042C0 = -(gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x) + 32; - if (sub_8076BE0() != 0 && sub_80AEB1C(EWRAM_19348) != 0) + if (IsContest() != 0 && sub_80AEB1C(EWRAM_19348) != 0) gUnknown_030042C0--; gUnknown_030041B4 = -(gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y) + 32; gSprites[gUnknown_02024BE0[a]].invisible = TRUE; @@ -875,12 +897,12 @@ void sub_8076034(u8 a, u8 b) addr3 = (u16 *)PLTT + s.unk8 * 16; DmaCopy32(3, gPlttBufferUnfaded + 0x100 + a * 16, addr3, 32); - if (sub_8076BE0() != 0) + if (IsContest() != 0) r2 = 0; else r2 = battle_get_per_side_status(a); sub_80E4EF8(0, 0, r2, s.unk8, (u32)s.unk0, (((s32)s.unk4 - VRAM) / 2048), REG_BG1CNT_BITFIELD.charBaseBlock); - if (sub_8076BE0() != 0) + if (IsContest() != 0) sub_8076380(); } else @@ -982,7 +1004,7 @@ void sub_8076464(u8 a) struct UnknownStruct2 s; sub_8078914(&s); - if (a == 0 || sub_8076BE0() != 0) + if (a == 0 || IsContest() != 0) { u16 *addr2; @@ -1082,12 +1104,12 @@ static void ScriptCmd_clearmonbg(void) else if (r4 == 1) r4 = 3; if (r4 == 0 || r4 == 2) - r5 = gUnknown_0202F7C8; + r5 = gBattleAnimPlayerMonIndex; else - r5 = gUnknown_0202F7C9; - if (gUnknown_0202F7C2[0] != 0xFF) + r5 = gBattleAnimEnemyMonIndex; + if (gMonAnimTaskIdArray[0] != 0xFF) gSprites[gUnknown_02024BE0[r5]].invisible = FALSE; - if (r4 > 1 && gUnknown_0202F7C2[1] != 0xFF) + if (r4 > 1 && gMonAnimTaskIdArray[1] != 0xFF) gSprites[gUnknown_02024BE0[r5 ^ 2]].invisible = FALSE; else r4 = 0; @@ -1107,21 +1129,21 @@ static void sub_807672C(u8 taskId) { var = battle_get_per_side_status(gTasks[taskId].data[2]); var += 0xFF; - if (var <= 1 || sub_8076BE0() != 0) + if (var <= 1 || IsContest() != 0) r4 = 0; else r4 = 1; - if (gUnknown_0202F7C2[0] != 0xFF) + if (gMonAnimTaskIdArray[0] != 0xFF) { sub_8076464(r4); - DestroyTask(gUnknown_0202F7C2[0]); - gUnknown_0202F7C2[0] = 0xFF; + DestroyTask(gMonAnimTaskIdArray[0]); + gMonAnimTaskIdArray[0] = 0xFF; } if (gTasks[taskId].data[0] > 1) { sub_8076464(r4 ^ 1); - DestroyTask(gUnknown_0202F7C2[1]); - gUnknown_0202F7C2[1] = 0xFF; + DestroyTask(gMonAnimTaskIdArray[1]); + gMonAnimTaskIdArray[1] = 0xFF; } DestroyTask(taskId); } @@ -1141,14 +1163,14 @@ static void ScriptCmd_monbg_22(void) else if (r5 == 1) r5 = 3; if (r5 == 0 || r5 == 2) - r4 = gUnknown_0202F7C8; + r4 = gBattleAnimPlayerMonIndex; else - r4 = gUnknown_0202F7C9; + r4 = gBattleAnimEnemyMonIndex; if (b_side_obj__get_some_boolean(r4)) { r0 = battle_get_per_side_status(r4); r0 += 0xFF; - if (r0 <= 1 || sub_8076BE0() != 0) + if (r0 <= 1 || IsContest() != 0) r1 = 0; else r1 = 1; @@ -1160,7 +1182,7 @@ static void ScriptCmd_monbg_22(void) { r0 = battle_get_per_side_status(r4); r0 += 0xFF; - if (r0 <= 1 || sub_8076BE0() != 0) + if (r0 <= 1 || IsContest() != 0) r1 = 0; else r1 = 1; @@ -1183,9 +1205,9 @@ static void ScriptCmd_clearmonbg_23(void) else if (r5 == 1) r5 = 3; if (r5 == 0 || r5 == 2) - r6 = gUnknown_0202F7C8; + r6 = gBattleAnimPlayerMonIndex; else - r6 = gUnknown_0202F7C9; + r6 = gBattleAnimEnemyMonIndex; if (b_side_obj__get_some_boolean(r6)) gSprites[gUnknown_02024BE0[r6]].invisible = FALSE; if (r5 > 1 && b_side_obj__get_some_boolean(r6 ^ 2)) @@ -1210,7 +1232,7 @@ static void sub_80769A4(u8 taskId) r4 = gTasks[taskId].data[2]; r0 = battle_get_per_side_status(r4); r0 += 0xFF; - if (r0 <= 1 || sub_8076BE0() != 0) + if (r0 <= 1 || IsContest() != 0) r5 = 0; else r5 = 1; @@ -1320,8 +1342,8 @@ static void ScriptCmd_jump(void) gBattleAnimScriptPtr = (u8 *)addr; } -//IsContest, maybe -bool8 sub_8076BE0(void) +// Uses of this function that rely on a TRUE return are expecting inBattle to not be ticked as defined in contest behavior. As a result, if misused, this function cannot reliably discern between field and contest status and could result in undefined behavior. +bool8 IsContest(void) { if (!gMain.inBattle) return TRUE; @@ -1355,9 +1377,9 @@ static void ScriptCmd_fadetobg_25(void) r6 = gBattleAnimScriptPtr[2]; gBattleAnimScriptPtr += 3; taskId = CreateTask(task_p5_load_battle_screen_elements, 5); - if (sub_8076BE0() != 0) + if (IsContest() != 0) gTasks[taskId].data[0] = r6; - else if (battle_side_get_owner(gUnknown_0202F7C9) == 0) + else if (battle_side_get_owner(gBattleAnimEnemyMonIndex) == 0) gTasks[taskId].data[0] = r7; else gTasks[taskId].data[0] = r8; @@ -1402,15 +1424,15 @@ static void task_p5_load_battle_screen_elements(u8 taskId) static void sub_8076DB8(u16 a) { - if (sub_8076BE0()) + if (IsContest()) { void *tilemap = gBattleAnimBackgroundTable[a].tilemap; void *dmaSrc; void *dmaDest; - sub_800D238(tilemap, sub_8076BE0() ? EWRAM_14800 : EWRAM_18000); - sub_80763FC(sub_80789BC(), sub_8076BE0() ? EWRAM_14800 : EWRAM_18000, 0x100, 0); - dmaSrc = sub_8076BE0() ? EWRAM_14800 : EWRAM_18000; + sub_800D238(tilemap, IsContest() ? EWRAM_14800 : EWRAM_18000); + sub_80763FC(sub_80789BC(), IsContest() ? EWRAM_14800 : EWRAM_18000, 0x100, 0); + dmaSrc = IsContest() ? EWRAM_14800 : EWRAM_18000; dmaDest = (void *)(VRAM + 0xD000); DmaCopy32(3, dmaSrc, dmaDest, 0x800); LZDecompressVram(gBattleAnimBackgroundTable[a].image, (void *)(VRAM + 0x2000)); @@ -1426,7 +1448,7 @@ static void sub_8076DB8(u16 a) static void dp01t_11_3_message_for_player_only(void) { - if (sub_8076BE0()) + if (IsContest()) sub_80AB2AC(); else sub_800D7B8(); @@ -1447,11 +1469,11 @@ static void ScriptCmd_waitbgfadeout(void) if (gUnknown_0202F7C5 == 2) { gBattleAnimScriptPtr++; - gUnknown_0202F7B0 = 0; + gAnimFramesToWait = 0; } else { - gUnknown_0202F7B0 = 1; + gAnimFramesToWait = 1; } } @@ -1460,11 +1482,11 @@ static void ScriptCmd_waitbgfadein(void) if (gUnknown_0202F7C5 == 0) { gBattleAnimScriptPtr++; - gUnknown_0202F7B0 = 0; + gAnimFramesToWait = 0; } else { - gUnknown_0202F7B0 = 1; + gAnimFramesToWait = 1; } } @@ -1479,16 +1501,16 @@ static void ScriptCmd_changebg(void) /* s8 sub_8076F98(s8 a) { - if (!sub_8076BE0() && (EWRAM_17810[gUnknown_0202F7C8].unk0 & 0x10)) + if (!IsContest() && (EWRAM_17810[gBattleAnimPlayerMonIndex].unk0 & 0x10)) { - a = battle_side_get_owner(gUnknown_0202F7C8) ? 0xC0 : 0x3F; + a = battle_side_get_owner(gBattleAnimPlayerMonIndex) ? 0xC0 : 0x3F; } //_08076FDC else { - if (sub_8076BE0()) + if (IsContest()) { - if (gUnknown_0202F7C8 == gUnknown_0202F7C9 && gUnknown_0202F7C8 == 2 + if (gBattleAnimPlayerMonIndex == gBattleAnimEnemyMonIndex && gBattleAnimPlayerMonIndex == 2 && a == 0x3F) { //jump to _0807707A @@ -1500,9 +1522,9 @@ s8 sub_8076F98(s8 a) //_08077004 else { - if (battle_side_get_owner(gUnknown_0202F7C8) == 0) + if (battle_side_get_owner(gBattleAnimPlayerMonIndex) == 0) { - if (battle_side_get_owner(gUnknown_0202F7C9) == 0) + if (battle_side_get_owner(gBattleAnimEnemyMonIndex) == 0) } //_08077042 else @@ -1522,11 +1544,11 @@ s8 sub_8076F98(s8 a) push {r4,lr}\n\ lsls r0, 24\n\ lsrs r4, r0, 24\n\ - bl sub_8076BE0\n\ + bl IsContest\n\ lsls r0, 24\n\ cmp r0, 0\n\ bne _08076FDC\n\ - ldr r0, _08076FD4 @ =gUnknown_0202F7C8\n\ + ldr r0, _08076FD4 @ =gBattleAnimPlayerMonIndex\n\ ldrb r2, [r0]\n\ lsls r0, r2, 1\n\ adds r0, r2\n\ @@ -1547,15 +1569,15 @@ s8 sub_8076F98(s8 a) movs r4, 0x3F\n\ b _0807706E\n\ .align 2, 0\n\ -_08076FD4: .4byte gUnknown_0202F7C8\n\ +_08076FD4: .4byte gBattleAnimPlayerMonIndex\n\ _08076FD8: .4byte 0x02017810\n\ _08076FDC:\n\ - bl sub_8076BE0\n\ + bl IsContest\n\ lsls r0, 24\n\ cmp r0, 0\n\ beq _08077004\n\ - ldr r0, _08076FFC @ =gUnknown_0202F7C8\n\ - ldr r1, _08077000 @ =gUnknown_0202F7C9\n\ + ldr r0, _08076FFC @ =gBattleAnimPlayerMonIndex\n\ + ldr r1, _08077000 @ =gBattleAnimEnemyMonIndex\n\ ldrb r0, [r0]\n\ ldrb r1, [r1]\n\ cmp r0, r1\n\ @@ -1566,16 +1588,16 @@ _08076FDC:\n\ beq _0807707A\n\ b _08077068\n\ .align 2, 0\n\ -_08076FFC: .4byte gUnknown_0202F7C8\n\ -_08077000: .4byte gUnknown_0202F7C9\n\ +_08076FFC: .4byte gBattleAnimPlayerMonIndex\n\ +_08077000: .4byte gBattleAnimEnemyMonIndex\n\ _08077004:\n\ - ldr r0, _0807702C @ =gUnknown_0202F7C8\n\ + ldr r0, _0807702C @ =gBattleAnimPlayerMonIndex\n\ ldrb r0, [r0]\n\ bl battle_side_get_owner\n\ lsls r0, 24\n\ cmp r0, 0\n\ bne _08077042\n\ - ldr r0, _08077030 @ =gUnknown_0202F7C9\n\ + ldr r0, _08077030 @ =gBattleAnimEnemyMonIndex\n\ ldrb r0, [r0]\n\ bl battle_side_get_owner\n\ lsls r0, 24\n\ @@ -1588,8 +1610,8 @@ _08077004:\n\ movs r4, 0xC0\n\ b _0807706E\n\ .align 2, 0\n\ -_0807702C: .4byte gUnknown_0202F7C8\n\ -_08077030: .4byte gUnknown_0202F7C9\n\ +_0807702C: .4byte gBattleAnimPlayerMonIndex\n\ +_08077030: .4byte gBattleAnimEnemyMonIndex\n\ _08077034:\n\ movs r0, 0x40\n\ negs r0, r0\n\ @@ -1599,7 +1621,7 @@ _08077034:\n\ lsls r0, 24\n\ b _0807706C\n\ _08077042:\n\ - ldr r0, _08077064 @ =gUnknown_0202F7C9\n\ + ldr r0, _08077064 @ =gBattleAnimEnemyMonIndex\n\ ldrb r0, [r0]\n\ bl battle_side_get_owner\n\ lsls r0, 24\n\ @@ -1615,7 +1637,7 @@ _08077042:\n\ movs r4, 0x3F\n\ b _0807706E\n\ .align 2, 0\n\ -_08077064: .4byte gUnknown_0202F7C9\n\ +_08077064: .4byte gBattleAnimEnemyMonIndex\n\ _08077068:\n\ lsls r0, r4, 24\n\ negs r0, r0\n\ @@ -1647,16 +1669,16 @@ _08077088:\n\ s8 sub_8077094(s8 a) { - if (!sub_8076BE0() && (EWRAM_17810[gUnknown_0202F7C8].unk0 & 0x10)) + if (!IsContest() && (EWRAM_17810[gBattleAnimPlayerMonIndex].unk0 & 0x10)) { - if (battle_side_get_owner(gUnknown_0202F7C8) != 0) + if (battle_side_get_owner(gBattleAnimPlayerMonIndex) != 0) a = 0x3F; else a = 0xC0; } else { - if (battle_side_get_owner(gUnknown_0202F7C8) != 0 || sub_8076BE0() != 0) + if (battle_side_get_owner(gBattleAnimPlayerMonIndex) != 0 || IsContest() != 0) a = -a; } return a; @@ -1735,7 +1757,7 @@ static void ScriptCmd_panse_1B(void) gTasks[taskId].data[3] = r7; gTasks[taskId].data[4] = panning; PlaySE12WithPanning(songNum, panning); - gUnknown_0202F7B3++; + gAnimSoundTaskCount++; gBattleAnimScriptPtr += 6; } @@ -1763,7 +1785,7 @@ static void c3_08073CEC(u8 taskId) { r4 = r3; DestroyTask(taskId); - gUnknown_0202F7B3--; + gAnimSoundTaskCount--; } //_080772D8 else @@ -1773,7 +1795,7 @@ static void c3_08073CEC(u8 taskId) if (r4 < r3) goto check; DestroyTask(taskId); - gUnknown_0202F7B3--; + gAnimSoundTaskCount--; } else { @@ -1783,7 +1805,7 @@ static void c3_08073CEC(u8 taskId) if (r7 != 0) { DestroyTask(taskId); - gUnknown_0202F7B3--; + gAnimSoundTaskCount--; } } } @@ -1857,7 +1879,7 @@ _080772FC:\n\ lsrs r4, r2, 16\n\ adds r0, r5, 0\n\ bl DestroyTask\n\ - ldr r1, _0807731C @ =gUnknown_0202F7B3\n\ + ldr r1, _0807731C @ =gAnimSoundTaskCount\n\ ldrb r0, [r1]\n\ subs r0, 0x1\n\ strb r0, [r1]\n\ @@ -1870,7 +1892,7 @@ _08077314:\n\ pop {r0}\n\ bx r0\n\ .align 2, 0\n\ -_0807731C: .4byte gUnknown_0202F7B3\n\ +_0807731C: .4byte gAnimSoundTaskCount\n\ .syntax divided\n"); } #endif @@ -1897,7 +1919,7 @@ static void ScriptCmd_panse_26(void) gTasks[taskId].data[3] = r10; gTasks[taskId].data[4] = r4; PlaySE12WithPanning(r8, r4); - gUnknown_0202F7B3++; + gAnimSoundTaskCount++; gBattleAnimScriptPtr += 6; } @@ -1929,7 +1951,7 @@ static void ScriptCmd_panse_27(void) gTasks[taskId].data[3] = r7; gTasks[taskId].data[4] = r6; PlaySE12WithPanning(r9, r6); - gUnknown_0202F7B3++; + gAnimSoundTaskCount++; gBattleAnimScriptPtr += 6; } @@ -1955,7 +1977,7 @@ static void ScriptCmd_panse_1C(void) gTasks[taskId].data[3] = r9; gTasks[taskId].data[8] = r8; gTasks[taskId].func(taskId); - gUnknown_0202F7B3++; + gAnimSoundTaskCount++; gBattleAnimScriptPtr += 5; } @@ -1979,7 +2001,7 @@ static void sub_80774FC(u8 taskId) if (r4 == 0) { DestroyTask(taskId); - gUnknown_0202F7B3--; + gAnimSoundTaskCount--; } } } @@ -2001,7 +2023,7 @@ static void ScriptCmd_panse_1D(void) gTasks[taskId].data[0] = r5; gTasks[taskId].data[1] = r4; gTasks[taskId].data[2] = r8; - gUnknown_0202F7B3++; + gAnimSoundTaskCount++; gBattleAnimScriptPtr += 4; } @@ -2015,7 +2037,7 @@ static void sub_80775CC(u8 taskId) { PlaySE12WithPanning(gTasks[taskId].data[0], gTasks[taskId].data[1]); DestroyTask(taskId); - gUnknown_0202F7B3--; + gAnimSoundTaskCount--; } } @@ -2038,35 +2060,34 @@ static void ScriptCmd_createtask_1F(void) } taskId = CreateTask(func, 1); func(taskId); - gUnknown_0202F7B3++; + gAnimSoundTaskCount++; } static void ScriptCmd_waitsound(void) { - if (gUnknown_0202F7B3 != 0) + if (gAnimSoundTaskCount != 0) { - gUnknown_03004AF0 = 0; - gUnknown_0202F7B0 = 1; + gSoundAnimFramesToWait = 0; + gAnimFramesToWait = 1; } else if (IsSEPlaying()) { - gUnknown_03004AF0++; - if (gUnknown_03004AF0 > 0x5A) + if (++gSoundAnimFramesToWait > 90) { m4aMPlayStop(&gMPlay_SE1); m4aMPlayStop(&gMPlay_SE2); - gUnknown_03004AF0 = 0; + gSoundAnimFramesToWait = 0; } else { - gUnknown_0202F7B0 = 1; + gAnimFramesToWait = 1; } } else { - gUnknown_03004AF0 = 0; + gSoundAnimFramesToWait = 0; gBattleAnimScriptPtr++; - gUnknown_0202F7B0 = 0; + gAnimFramesToWait = 0; } } @@ -2095,7 +2116,7 @@ static void ScriptCmd_jumpunkcond(void) u8 *addr; gBattleAnimScriptPtr++; - if (sub_8076BE0()) + if (IsContest()) { addr = (u8 *)SCRIPT_READ_32(gBattleAnimScriptPtr); gBattleAnimScriptPtr = addr; @@ -2115,11 +2136,11 @@ static void ScriptCmd_monbgprio_28(void) r2 = SCRIPT_READ_8(gBattleAnimScriptPtr + 1); gBattleAnimScriptPtr += 2; if (r2 != 0) - r0 = gUnknown_0202F7C9; + r0 = gBattleAnimEnemyMonIndex; else - r0 = gUnknown_0202F7C8; + r0 = gBattleAnimPlayerMonIndex; r4 = battle_get_per_side_status(r0); - if (!sub_8076BE0() && (r4 == 0 || r4 == 3)) + if (!IsContest() && (r4 == 0 || r4 == 3)) { REG_BG1CNT_BITFIELD.priority = 1; REG_BG2CNT_BITFIELD.priority = 2; @@ -2129,7 +2150,7 @@ static void ScriptCmd_monbgprio_28(void) static void ScriptCmd_monbgprio_29(void) { gBattleAnimScriptPtr++; - if (!sub_8076BE0()) + if (!IsContest()) { REG_BG1CNT_BITFIELD.priority = 1; REG_BG2CNT_BITFIELD.priority = 2; @@ -2144,14 +2165,14 @@ static void ScriptCmd_monbgprio_2A(void) r6 = SCRIPT_READ_8(gBattleAnimScriptPtr + 1); gBattleAnimScriptPtr += 2; - if (battle_side_get_owner(gUnknown_0202F7C8) != battle_side_get_owner(gUnknown_0202F7C9)) + if (battle_side_get_owner(gBattleAnimPlayerMonIndex) != battle_side_get_owner(gBattleAnimEnemyMonIndex)) { if (r6 != 0) - r0 = gUnknown_0202F7C9; + r0 = gBattleAnimEnemyMonIndex; else - r0 = gUnknown_0202F7C8; + r0 = gBattleAnimPlayerMonIndex; r4 = battle_get_per_side_status(r0); - if (!sub_8076BE0() && (r4 == 0 || r4 == 3)) + if (!IsContest() && (r4 == 0 || r4 == 3)) { REG_BG1CNT_BITFIELD.priority = 1; REG_BG2CNT_BITFIELD.priority = 2; @@ -2195,17 +2216,17 @@ static void ScriptCmd_doublebattle_2D(void) r7 = SCRIPT_READ_8(gBattleAnimScriptPtr + 1); gBattleAnimScriptPtr += 2; - if (!sub_8076BE0() && IsDoubleBattle() - && battle_side_get_owner(gUnknown_0202F7C8) == battle_side_get_owner(gUnknown_0202F7C9)) + if (!IsContest() && IsDoubleBattle() + && battle_side_get_owner(gBattleAnimPlayerMonIndex) == battle_side_get_owner(gBattleAnimEnemyMonIndex)) { if (r7 == 0) { - r4 = battle_get_per_side_status_permutated(gUnknown_0202F7C8); + r4 = battle_get_per_side_status_permutated(gBattleAnimPlayerMonIndex); spriteId = obj_id_for_side_relative_to_move(0); } else { - r4 = battle_get_per_side_status_permutated(gUnknown_0202F7C9); + r4 = battle_get_per_side_status_permutated(gBattleAnimEnemyMonIndex); spriteId = obj_id_for_side_relative_to_move(1); } if (spriteId != 0xFF) @@ -2229,17 +2250,17 @@ static void ScriptCmd_doublebattle_2E(void) r7 = SCRIPT_READ_8(gBattleAnimScriptPtr + 1); gBattleAnimScriptPtr += 2; - if (!sub_8076BE0() && IsDoubleBattle() - && battle_side_get_owner(gUnknown_0202F7C8) == battle_side_get_owner(gUnknown_0202F7C9)) + if (!IsContest() && IsDoubleBattle() + && battle_side_get_owner(gBattleAnimPlayerMonIndex) == battle_side_get_owner(gBattleAnimEnemyMonIndex)) { if (r7 == 0) { - r4 = battle_get_per_side_status_permutated(gUnknown_0202F7C8); + r4 = battle_get_per_side_status_permutated(gBattleAnimPlayerMonIndex); spriteId = obj_id_for_side_relative_to_move(0); } else { - r4 = battle_get_per_side_status_permutated(gUnknown_0202F7C9); + r4 = battle_get_per_side_status_permutated(gBattleAnimEnemyMonIndex); spriteId = obj_id_for_side_relative_to_move(1); } if (spriteId != 0xFF && r4 == 2) diff --git a/src/battle_anim_80A7E7C.c b/src/battle_anim_80A7E7C.c index 931b923b7..285a782f3 100644 --- a/src/battle_anim_80A7E7C.c +++ b/src/battle_anim_80A7E7C.c @@ -12,11 +12,11 @@ extern s16 gBattleAnimArgs[8]; extern u8 gUnknown_02024BE0[]; extern s32 gUnknown_0202F7B8; extern u16 gUnknown_0202F7BC; -extern u8 gUnknown_0202F7C8; -extern u8 gUnknown_0202F7C9; +extern u8 gBattleAnimPlayerMonIndex; +extern u8 gBattleAnimEnemyMonIndex; extern u8 obj_id_for_side_relative_to_move(u8 side); -extern void move_anim_task_del(u8 task); +extern void DestroyAnimVisualTask(u8 task); extern u8 battle_get_side_with_given_state(u8 state); extern u8 battle_side_get_owner(u8 side); extern void oamt_set_x3A_32(struct Sprite *sprite, void(*callback)(struct Sprite*)); @@ -51,7 +51,7 @@ void sub_80A7E7C(u8 task) sprite = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]); if (sprite == 0xff) { - move_anim_task_del(task); + DestroyAnimVisualTask(task); return; } gSprites[sprite].pos2.x = gBattleAnimArgs[1]; @@ -91,7 +91,7 @@ static void sub_80A7EF0(u8 task) { SPRITE.pos2.x = 0; SPRITE.pos2.y = 0; - move_anim_task_del(task); + DestroyAnimVisualTask(task); return; } } @@ -113,7 +113,7 @@ void sub_80A7FA0(u8 task) sprite = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]); if (sprite == 0xff) { - move_anim_task_del(task); + DestroyAnimVisualTask(task); return; } } @@ -143,11 +143,11 @@ void sub_80A7FA0(u8 task) } else { - sprite = gUnknown_02024BE0[gUnknown_0202F7C8]; + sprite = gUnknown_02024BE0[gBattleAnimPlayerMonIndex]; } if (r6) { - move_anim_task_del(task); + DestroyAnimVisualTask(task); return; } gSprites[sprite].pos2.x = gBattleAnimArgs[1]; @@ -187,7 +187,7 @@ static void sub_80A808C(u8 task) { SPRITE.pos2.x = 0; SPRITE.pos2.y = 0; - move_anim_task_del(task); + DestroyAnimVisualTask(task); return; } } @@ -203,7 +203,7 @@ void sub_80A8154(u8 task) sprite = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]); if (sprite == 0xff) { - move_anim_task_del(task); + DestroyAnimVisualTask(task); return; } gSprites[sprite].pos2.x += gBattleAnimArgs[1]; @@ -246,7 +246,7 @@ static void sub_80A81D8(u8 task) SPRITE.pos2.x -= TASK.data[5] / 2; SPRITE.pos2.y -= TASK.data[6] / 2; } - move_anim_task_del(task); + DestroyAnimVisualTask(task); return; } } @@ -289,7 +289,7 @@ static void sub_80A8374(u8 task) gSprites[sprite].pos2.y = TASK.data[9] >> 8; if (--TASK.data[4] == 0) { - move_anim_task_del(task); + DestroyAnimVisualTask(task); return; } } @@ -335,14 +335,14 @@ static void sub_80A8488(u8 task) { gSprites[sprite].pos2.x = 0; gSprites[sprite].pos2.y = 0; - move_anim_task_del(task); + DestroyAnimVisualTask(task); return; } } void sub_80A8500(u8 task) { - if (battle_side_get_owner(gUnknown_0202F7C8)) + if (battle_side_get_owner(gBattleAnimPlayerMonIndex)) { gBattleAnimArgs[1] = -gBattleAnimArgs[1]; } @@ -352,7 +352,7 @@ void sub_80A8500(u8 task) void sub_80A8530(struct Sprite *sprite) { sprite->invisible = TRUE; - if (battle_side_get_owner(gUnknown_0202F7C8)) + if (battle_side_get_owner(gBattleAnimPlayerMonIndex)) { sprite->data1 = -gBattleAnimArgs[1]; } @@ -362,7 +362,7 @@ void sub_80A8530(struct Sprite *sprite) } sprite->data0 = gBattleAnimArgs[0]; sprite->data2 = 0; - sprite->data3 = gUnknown_02024BE0[gUnknown_0202F7C8]; + sprite->data3 = gUnknown_02024BE0[gBattleAnimPlayerMonIndex]; sprite->data4 = gBattleAnimArgs[0]; oamt_set_x3A_32(sprite, sub_80A85A4); sprite->callback = sub_8078458; @@ -404,11 +404,11 @@ void sub_80A8638(struct Sprite *sprite) int spriteId; if (!gBattleAnimArgs[0]) { - spriteId = gUnknown_02024BE0[gUnknown_0202F7C8]; + spriteId = gUnknown_02024BE0[gBattleAnimPlayerMonIndex]; } else { - spriteId = gUnknown_02024BE0[gUnknown_0202F7C9]; + spriteId = gUnknown_02024BE0[gBattleAnimEnemyMonIndex]; } sprite->data0 = gBattleAnimArgs[2]; sprite->data1 = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x; @@ -471,11 +471,11 @@ void sub_80A8764(struct Sprite *sprite) u8 spriteId; if (!gBattleAnimArgs[0]) { - v1 = gUnknown_0202F7C8; + v1 = gBattleAnimPlayerMonIndex; } else { - v1 = gUnknown_0202F7C9; + v1 = gBattleAnimEnemyMonIndex; } spriteId = gUnknown_02024BE0[v1]; if (battle_side_get_owner(v1)) @@ -507,11 +507,11 @@ void sub_80A8818(struct Sprite *sprite) sprite->invisible = TRUE; if (!gBattleAnimArgs[0]) { - v1 = gUnknown_0202F7C8; + v1 = gBattleAnimPlayerMonIndex; } else { - v1 = gUnknown_0202F7C9; + v1 = gBattleAnimEnemyMonIndex; } spriteId = gUnknown_02024BE0[v1]; if (battle_side_get_owner(v1)) @@ -555,7 +555,7 @@ void sub_80A8920(u8 task) { s16 r7; r7 = 0x8000 / gBattleAnimArgs[3]; - if (battle_side_get_owner(gUnknown_0202F7C8)) + if (battle_side_get_owner(gBattleAnimPlayerMonIndex)) { gBattleAnimArgs[1] = -gBattleAnimArgs[1]; gBattleAnimArgs[5] = -gBattleAnimArgs[5]; @@ -599,7 +599,7 @@ static void sub_80A8A18(u8 task) gSprites[spriteId].pos2.x = (TASK.data[12] >> 8) + (TASK.data[11] >> 8); if (--TASK.data[6] == 0) { - move_anim_task_del(task); + DestroyAnimVisualTask(task); return; } } @@ -617,27 +617,27 @@ void sub_80A8A80(u8 task) spriteId = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]); break; case 2: - if (!b_side_obj__get_some_boolean(gUnknown_0202F7C8 ^ 2)) + if (!b_side_obj__get_some_boolean(gBattleAnimPlayerMonIndex ^ 2)) { - move_anim_task_del(task); + DestroyAnimVisualTask(task); return; } - spriteId = gUnknown_02024BE0[gUnknown_0202F7C8 ^ 2]; + spriteId = gUnknown_02024BE0[gBattleAnimPlayerMonIndex ^ 2]; break; case 3: - if (!b_side_obj__get_some_boolean(gUnknown_0202F7C9 ^ 2)) + if (!b_side_obj__get_some_boolean(gBattleAnimEnemyMonIndex ^ 2)) { - move_anim_task_del(task); + DestroyAnimVisualTask(task); return; } - spriteId = gUnknown_02024BE0[gUnknown_0202F7C9 ^ 2]; + spriteId = gUnknown_02024BE0[gBattleAnimEnemyMonIndex ^ 2]; break; default: - move_anim_task_del(task); + DestroyAnimVisualTask(task); return; } TASK.data[0] = spriteId; - if (battle_side_get_owner(gUnknown_0202F7C9)) + if (battle_side_get_owner(gBattleAnimEnemyMonIndex)) { TASK.data[1] = gBattleAnimArgs[1]; } @@ -654,7 +654,7 @@ static void sub_80A8B3C(u8 task) gSprites[spriteId].pos2.x += TASK.data[1]; if (gSprites[spriteId].pos2.x + gSprites[spriteId].pos1.x + 0x20 > 0x130u) { - move_anim_task_del(task); + DestroyAnimVisualTask(task); return; } } @@ -662,7 +662,7 @@ static void sub_80A8B3C(u8 task) void sub_80A8B88(u8 task) { u8 spriteId; - if (battle_side_get_owner(gUnknown_0202F7C8)) + if (battle_side_get_owner(gBattleAnimPlayerMonIndex)) { gBattleAnimArgs[1] = -gBattleAnimArgs[1]; } @@ -674,11 +674,11 @@ void sub_80A8B88(u8 task) TASK.data[4] = spriteId; if (gBattleAnimArgs[4] == 0) { - TASK.data[5] = gUnknown_0202F7C8; + TASK.data[5] = gBattleAnimPlayerMonIndex; } else { - TASK.data[5] = gUnknown_0202F7C9; + TASK.data[5] = gBattleAnimEnemyMonIndex; } TASK.data[12] = 1; TASK.func = sub_80A8C0C; @@ -719,7 +719,7 @@ static void sub_80A8C0C(u8 task) { gSprites[spriteId].pos2.x = 0; gSprites[spriteId].pos2.y = 0; - move_anim_task_del(task); + DestroyAnimVisualTask(task); return; } } @@ -759,7 +759,7 @@ static void sub_80A8D8C(u8 task) else { sub_8078F40(spriteId); - move_anim_task_del(task); + DestroyAnimVisualTask(task); return; } } @@ -783,7 +783,7 @@ void sub_80A8E04(u8 task) TASK.data[4] = gBattleAnimArgs[1]; TASK.data[5] = spriteId; TASK.data[6] = gBattleAnimArgs[3]; - if (sub_8076BE0()) + if (IsContest()) { TASK.data[7] = 1; } @@ -791,16 +791,16 @@ void sub_80A8E04(u8 task) { if (gBattleAnimArgs[2] == 0) { - TASK.data[7] = !battle_side_get_owner(gUnknown_0202F7C8); + TASK.data[7] = !battle_side_get_owner(gBattleAnimPlayerMonIndex); } else { - TASK.data[7] = !battle_side_get_owner(gUnknown_0202F7C9); + TASK.data[7] = !battle_side_get_owner(gBattleAnimEnemyMonIndex); } } if (TASK.data[7]) { - if (!sub_8076BE0()) + if (!IsContest()) { TASK.data[3] *= -1; TASK.data[4] *= -1; @@ -818,14 +818,14 @@ void sub_80A8EFC(u8 task) TASK.data[2] = gBattleAnimArgs[0]; if (gBattleAnimArgs[2] == 0) { - if (battle_side_get_owner(gUnknown_0202F7C8)) + if (battle_side_get_owner(gBattleAnimPlayerMonIndex)) { gBattleAnimArgs[1] = -gBattleAnimArgs[1]; } } else { - if (battle_side_get_owner(gUnknown_0202F7C9)) + if (battle_side_get_owner(gBattleAnimEnemyMonIndex)) { gBattleAnimArgs[1] = -gBattleAnimArgs[1]; } @@ -863,7 +863,7 @@ void sub_80A8FD8(u8 task) sub_8078F40(TASK.data[5]); case 0: default: - move_anim_task_del(task); + DestroyAnimVisualTask(task); return; case 2: TASK.data[1] = 0; @@ -947,7 +947,7 @@ static void sub_80A913C(u8 taskId) { gSprites[task->data[7]].pos2.x = 0; gSprites[task->data[7]].pos2.y = 0; - move_anim_task_del(taskId); + DestroyAnimVisualTask(taskId); return; } } diff --git a/src/item_use.c b/src/item_use.c index 5c485bb11..923957c6b 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -112,36 +112,29 @@ void ItemUseOutOfBattle_TMHM(u8); void ItemUseOutOfBattle_EvolutionStone(u8); void ItemUseOutOfBattle_CannotUse(u8); -static const u8 Unknown_83D619C[] = _( - "この チケットで ふねに のりほうだい\n" - "はやく のってみたいな" -); +const u8 gSSTidalBetaString[] = _("この チケットで ふねに のりほうだい\nはやく のってみたいな"); +const u8 gSSTidalBetaString2[] = _("この チケットで ふねに のりほうだい\nはやく のってみたいな"); -static const u8 Unknown_83D61BC[] = _( - "この チケットで ふねに のりほうだい\n" - "はやく のってみたいな" -); - -static const u8 *const gUnknown_083D61DC[] = +const struct TextStruct gUnknown_083D61DC[2] = { - Unknown_83D619C, - Unknown_83D61BC, + gSSTidalBetaString, + gSSTidalBetaString2, }; -static void (* const gExitToOverworldFuncList[])(void) = +const struct FuncStruct gExitToOverworldFuncList[3] = { - sub_808B020, - c2_exit_to_overworld_2_switch, - sub_810B96C, + sub_808B020, + c2_exit_to_overworld_2_switch, + sub_810B96C, }; -static const u8 gItemFinderDirections[] = { DIR_NORTH, DIR_EAST, DIR_SOUTH, DIR_WEST }; +const u8 gItemFinderDirections[] = { DIR_NORTH, DIR_EAST, DIR_SOUTH, DIR_WEST }; -static void (* const gUnknown_083D61F4[])(u8) = +const struct FuncStruct gUnknown_083D61F4[2] = { - sub_80C9FC0, - CleanUpItemMenuMessage, -}; + sub_80C9FC0, + CleanUpItemMenuMessage, +}; void ExecuteSwitchToOverworldFromItemUse(u8 taskId) { @@ -152,8 +145,8 @@ void ExecuteSwitchToOverworldFromItemUse(u8 taskId) else taskData = ItemId_GetType(gScriptItemId) - 1; - gTasks[taskId].data[8] = (u32)gExitToOverworldFuncList[taskData] >> 16; - gTasks[taskId].data[9] = (u32)gExitToOverworldFuncList[taskData]; + gTasks[taskId].data[8] = (u32)(gExitToOverworldFuncList[taskData].func) >> 16; + gTasks[taskId].data[9] = (u32)(gExitToOverworldFuncList[taskData].func); gTasks[taskId].func = HandleItemMenuPaletteFade; } @@ -835,11 +828,11 @@ void ItemUseOutOfBattle_SSTicket(u8 taskId) if(gTasks[taskId].data[2] == 0) { MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); - DisplayItemMessageOnField(taskId, gUnknown_083D61DC[ItemId_GetSecondaryId(gScriptItemId)], sub_80C9BB8, 1); + DisplayItemMessageOnField(taskId, (u8 *)gUnknown_083D61DC[ItemId_GetSecondaryId(gScriptItemId)].text, sub_80C9BB8, 1); } else { - DisplayItemMessageOnField(taskId, gUnknown_083D61DC[ItemId_GetSecondaryId(gScriptItemId)], sub_80C9BD8, 0); + DisplayItemMessageOnField(taskId, (u8 *)gUnknown_083D61DC[ItemId_GetSecondaryId(gScriptItemId)].text, sub_80C9BD8, 0); } } diff --git a/src/player_pc.c b/src/player_pc.c index fa0c39a19..cd69357d5 100644 --- a/src/player_pc.c +++ b/src/player_pc.c @@ -2,6 +2,7 @@ #include "asm.h" #include "field_screeneffect.h" #include "item.h" +#include "items.h" #include "main.h" #include "menu.h" #include "palette.h" @@ -10,27 +11,34 @@ #include "string_util.h" #include "task.h" +#define NEW_GAME_PC_ITEMS(i, type) ((u16)(gNewGamePCItems + type)[i * 2]) + +// type as in define above +enum +{ + ITEM_ID, + QUANTITY, +}; + extern void DisplayItemMessageOnField(u8, u8*, TaskFunc, u16); -extern void ItemStorageMenuProcessInput(u8); extern void DoPlayerPCDecoration(u8); extern void BuyMenuFreeMemory(void); extern void DestroyVerticalScrollIndicator(u8); extern u8 sub_813AF3C(void); extern void sub_813AF78(void); -extern void sub_813A240(u8); extern void sub_813B108(u8); extern void sub_813B174(u8); extern void sub_80A6A30(void); extern u8 sub_807D770(void); -extern void sub_813A280(u8); extern void sub_813AE6C(u8, u8); -extern void sub_813A240(u8); extern void sub_813AD58(u16); extern void sub_813AE0C(u8); -extern void sub_813ABE8(u8); -extern void sub_813AA30(u8, u8); -extern void sub_813A4B4(u8); -extern void sub_813A468(u8); +extern void sub_80F996C(u8); +extern void sub_80A418C(u16, enum StringConvertMode, int, int, int); +extern void sub_80F98DC(int); +extern void sub_80F914C(u8, void const *); +extern void sub_80A4164(u8 *, u16, enum StringConvertMode, u8); +extern void CreateVerticalScrollIndicators(u32, u32, u32); // unknown args extern u8 gOtherText_NoItems[]; @@ -41,8 +49,16 @@ extern u8 gOtherText_NoMailHere[]; extern u8 *gUnknown_02039314; extern struct MenuAction gUnknown_08406298[]; + extern u8 gUnknown_084062B8[]; extern u8 gUnknown_084062BC[]; +extern u8 gUnknown_0840632A[]; +extern u8 gUnknown_08406327[]; +extern u8 gUnknown_08406330[]; +extern u8 gUnknown_0840631E[]; +extern u8 gUnknown_08406318[]; +extern u8 gOtherText_CancelNoTerminator[]; + extern u8 gUnknown_030007B4; extern u8 unk_201FE00[]; @@ -51,24 +67,34 @@ extern u8 gUnknown_08152C75; extern u32 gUnknown_08406288[]; extern const struct MenuAction gUnknown_084062C0[]; +extern const struct FuncStruct gUnknown_084062E0[]; void InitPlayerPCMenu(u8 taskId); void PlayerPCProcessMenuInput(u8 taskId); void InitItemStorageMenu(u8); void ItemStorageMenuPrint(u8 *); +void ItemStorageMenuProcessInput(u8); +void sub_813A280(u8); +void sub_813A240(u8); +void sub_813A4B4(u8); +void sub_813A468(u8); +void HandleQuantityRolling(u8); +void sub_813A6FC(u8); +void sub_813A794(u8); +void sub_813A8F0(u8); +void sub_813A984(u8); +void sub_813A9EC(u8); +void sub_813AA30(u8, u8); +void sub_813ABE8(u8); void NewGameInitPCItems(void) { - u8 i = 0; - - ClearItemSlots(gSaveBlock1.pcItems, 0x32); + u8 i; - while (gNewGamePCItems[i * 2] && (gNewGamePCItems + 1)[i * 2]) - { - if (AddPCItem(gNewGamePCItems[i * 2], (gNewGamePCItems + 1)[i * 2]) != 1) - break; - i++; - } + // because Game Freak don't know how to use a struct or a 2d array + for(i = 0, ClearItemSlots(gSaveBlock1.pcItems, ARRAY_COUNT(gSaveBlock1.pcItems)); NEW_GAME_PC_ITEMS(i, ITEM_ID) && NEW_GAME_PC_ITEMS(i, QUANTITY) && + AddPCItem(NEW_GAME_PC_ITEMS(i, ITEM_ID), NEW_GAME_PC_ITEMS(i, QUANTITY)) == TRUE; i++) + ; } void BedroomPC(void) @@ -318,354 +344,124 @@ void sub_813A240(u8 taskId) unk_201FE00[1] = unk_201FE00[3] + 1; } -#ifdef NONMATCHING void sub_813A280(u8 taskId) { s16 *data = gTasks[taskId].data; - - if (gMain.newAndRepeatedKeys & 0x40) + s16 var; + + if (gMain.newAndRepeatedKeys & DPAD_UP) { - if (data[0]) + if(data[0]) { PlaySE(5); data[0] = MoveMenuCursor(-1); + var = data[1] + data[0]; if (!data[9]) { - if (data[1] + data[0] == data[2]) + if (var == data[2]) { sub_813AD58(0xFFFF); - return; } - sub_813AD58(gSaveBlock1.pcItems[data[1] + data[0]].itemId); + else + { + sub_813AD58(gSaveBlock1.pcItems[var].itemId); + } } - return; } - if (!data[1]) - return; - PlaySE(5); - sub_813AE0C(taskId); - if (data[9]) - MoveMenuCursor(0); - return; - } - if (!(gMain.newAndRepeatedKeys & 0x80)) - { - if (gMain.newKeys & 0x4) + else // _0813A2E4 { - if (!data[9]) - { - if (data[0] + data[1] != data[2]) - { - PlaySE(5); - data[9] = 1; - data[8] = data[0] + data[1]; - sub_813AD58(0xFFF7); - } - sub_813ABE8(taskId); + if (!data[1]) return; - } PlaySE(5); - sub_813AA30(taskId, 0); + data[1]--; sub_813AE0C(taskId); - return; + // probably further down + if (data[9]) + MoveMenuCursor(0); } - if (gMain.newKeys & 0x1) + } + else if(gMain.newAndRepeatedKeys & DPAD_DOWN) // _0813A306 + { + if(data[0] != data[4] - 1) { PlaySE(5); - if (data[9]) - { - sub_813AA30(taskId, 0); - sub_813AE0C(taskId); - return; - } - if (data[1] + data[0] != data[2]) - { - sub_813A4B4(taskId); + data[0] = MoveMenuCursor(1); + var = data[1] + data[0]; + + if(data[9]) return; - } + + if (var == data[2]) + sub_813AD58(0xFFFF); // probably further down + else + sub_813AD58(gSaveBlock1.pcItems[var].itemId); } - else + else if(data[1] + data[0] != data[2]) { - if (!(gMain.newKeys & 0x2)) - return; PlaySE(5); + data[1]++; + sub_813AE0C(taskId); + if (data[9]) + MoveMenuCursor(0); + } + } + else if(gMain.newKeys & SELECT_BUTTON) // _0813A3A0 + { + if (!data[9]) + { + if (data[0] + data[1] != data[2]) { - sub_813AA30(taskId, 1); - sub_813AE0C(taskId); - return; + PlaySE(5); + data[9] = 1; + data[8] = data[1] + data[0]; + sub_813AD58(0xFFF7); } - sub_8072DEC(); + // _0813A3DC + sub_813ABE8(taskId); + } + else // _0813A3E8 + { + PlaySE(5); // merging? + sub_813AA30(taskId, 0); + sub_813AE0C(taskId); } - sub_813A468(taskId); - return; } - if (data[0] == data[4] - 1) + else if(gMain.newKeys & A_BUTTON) { - if (data[1] + data[0] == data[2]) - return; PlaySE(5); - data[1]++; - sub_813AE0C(taskId); - if (data[9]) - MoveMenuCursor(0); - return; + if(!data[9]) + { + if(data[1] + data[0] != data[2]) + { + sub_813A4B4(taskId); + } + else + { + sub_813A468(taskId); + } + } + else + { + sub_813AA30(taskId, 0); + sub_813AE0C(taskId); + } } - PlaySE(5); - data[0] = MoveMenuCursor(1); - if (!data[9]) + else if(gMain.newKeys & B_BUTTON) { - if (data[1] + data[0] != data[2]) + PlaySE(5); + if(!data[9]) { - sub_813AD58(gSaveBlock1.pcItems[data[1] + data[0]].itemId); - return; + sub_8072DEC(); + sub_813A468(taskId); + } + else + { + sub_813AA30(taskId, 1); + sub_813AE0C(taskId); } - sub_813AD58(0xFFFF); } } -#else -__attribute__((naked)) -void sub_813A280(u8 taskId) -{ - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - adds r6, r5, 0\n\ - lsls r0, r5, 2\n\ - adds r0, r5\n\ - lsls r0, 3\n\ - ldr r1, _0813A2DC @ =gTasks + 0x8\n\ - adds r4, r0, r1\n\ - ldr r2, _0813A2E0 @ =gMain\n\ - ldrh r1, [r2, 0x30]\n\ - movs r0, 0x40\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0813A306\n\ - movs r1, 0\n\ - ldrsh r0, [r4, r1]\n\ - cmp r0, 0\n\ - beq _0813A2E4\n\ - movs r0, 0x5\n\ - bl PlaySE\n\ - movs r0, 0x1\n\ - negs r0, r0\n\ - bl MoveMenuCursor\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - strh r0, [r4]\n\ - ldrh r1, [r4, 0x2]\n\ - adds r1, r0\n\ - lsls r1, 16\n\ - lsrs r1, 16\n\ - movs r2, 0x12\n\ - ldrsh r0, [r4, r2]\n\ - cmp r0, 0\n\ - beq _0813A2CC\n\ - b _0813A460\n\ -_0813A2CC:\n\ - lsls r0, r1, 16\n\ - asrs r1, r0, 16\n\ - movs r2, 0x4\n\ - ldrsh r0, [r4, r2]\n\ - cmp r1, r0\n\ - beq _0813A34C\n\ - b _0813A358\n\ - .align 2, 0\n\ -_0813A2DC: .4byte gTasks + 0x8\n\ -_0813A2E0: .4byte gMain\n\ -_0813A2E4:\n\ - movs r1, 0x2\n\ - ldrsh r0, [r4, r1]\n\ - cmp r0, 0\n\ - bne _0813A2EE\n\ - b _0813A460\n\ -_0813A2EE:\n\ - movs r0, 0x5\n\ - bl PlaySE\n\ - ldrh r0, [r4, 0x2]\n\ - subs r0, 0x1\n\ - strh r0, [r4, 0x2]\n\ - adds r0, r5, 0\n\ - bl sub_813AE0C\n\ - movs r2, 0x12\n\ - ldrsh r0, [r4, r2]\n\ - b _0813A394\n\ -_0813A306:\n\ - movs r0, 0x80\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0813A3A0\n\ - movs r0, 0\n\ - ldrsh r1, [r4, r0]\n\ - movs r2, 0x8\n\ - ldrsh r0, [r4, r2]\n\ - subs r0, 0x1\n\ - cmp r1, r0\n\ - beq _0813A370\n\ - movs r0, 0x5\n\ - bl PlaySE\n\ - movs r0, 0x1\n\ - bl MoveMenuCursor\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - strh r0, [r4]\n\ - ldrh r1, [r4, 0x2]\n\ - adds r1, r0\n\ - lsls r1, 16\n\ - lsrs r1, 16\n\ - movs r2, 0x12\n\ - ldrsh r0, [r4, r2]\n\ - cmp r0, 0\n\ - beq _0813A340\n\ - b _0813A460\n\ -_0813A340:\n\ - lsls r0, r1, 16\n\ - asrs r1, r0, 16\n\ - movs r2, 0x4\n\ - ldrsh r0, [r4, r2]\n\ - cmp r1, r0\n\ - bne _0813A358\n\ -_0813A34C:\n\ - ldr r0, _0813A354 @ =0x0000ffff\n\ - bl sub_813AD58\n\ - b _0813A460\n\ - .align 2, 0\n\ -_0813A354: .4byte 0x0000ffff\n\ -_0813A358:\n\ - ldr r0, _0813A36C @ =gSaveBlock1\n\ - lsls r1, 2\n\ - adds r1, r0\n\ - movs r0, 0x93\n\ - lsls r0, 3\n\ - adds r1, r0\n\ - ldrh r0, [r1]\n\ - bl sub_813AD58\n\ - b _0813A460\n\ - .align 2, 0\n\ -_0813A36C: .4byte gSaveBlock1\n\ -_0813A370:\n\ - movs r2, 0x2\n\ - ldrsh r0, [r4, r2]\n\ - adds r0, r1\n\ - movs r2, 0x4\n\ - ldrsh r1, [r4, r2]\n\ - cmp r0, r1\n\ - beq _0813A460\n\ - movs r0, 0x5\n\ - bl PlaySE\n\ - ldrh r0, [r4, 0x2]\n\ - adds r0, 0x1\n\ - strh r0, [r4, 0x2]\n\ - adds r0, r5, 0\n\ - bl sub_813AE0C\n\ - movs r1, 0x12\n\ - ldrsh r0, [r4, r1]\n\ -_0813A394:\n\ - cmp r0, 0\n\ - beq _0813A460\n\ - movs r0, 0\n\ - bl MoveMenuCursor\n\ - b _0813A460\n\ -_0813A3A0:\n\ - ldrh r1, [r2, 0x2E]\n\ - movs r0, 0x4\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0813A3F0\n\ - movs r2, 0x12\n\ - ldrsh r0, [r4, r2]\n\ - cmp r0, 0\n\ - bne _0813A3E8\n\ - movs r1, 0\n\ - ldrsh r0, [r4, r1]\n\ - movs r2, 0x2\n\ - ldrsh r1, [r4, r2]\n\ - adds r0, r1\n\ - movs r2, 0x4\n\ - ldrsh r1, [r4, r2]\n\ - cmp r0, r1\n\ - beq _0813A3DC\n\ - movs r0, 0x5\n\ - bl PlaySE\n\ - movs r0, 0x1\n\ - strh r0, [r4, 0x12]\n\ - ldrh r0, [r4]\n\ - ldrh r1, [r4, 0x2]\n\ - adds r0, r1\n\ - strh r0, [r4, 0x10]\n\ - ldr r0, _0813A3E4 @ =0x0000fff7\n\ - bl sub_813AD58\n\ -_0813A3DC:\n\ - adds r0, r5, 0\n\ - bl sub_813ABE8\n\ - b _0813A460\n\ - .align 2, 0\n\ -_0813A3E4: .4byte 0x0000fff7\n\ -_0813A3E8:\n\ - movs r0, 0x5\n\ - bl PlaySE\n\ - b _0813A420\n\ -_0813A3F0:\n\ - movs r0, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0813A430\n\ - movs r0, 0x5\n\ - bl PlaySE\n\ - movs r2, 0x12\n\ - ldrsh r0, [r4, r2]\n\ - cmp r0, 0\n\ - bne _0813A420\n\ - movs r1, 0x2\n\ - ldrsh r0, [r4, r1]\n\ - movs r2, 0\n\ - ldrsh r1, [r4, r2]\n\ - adds r0, r1\n\ - movs r2, 0x4\n\ - ldrsh r1, [r4, r2]\n\ - cmp r0, r1\n\ - beq _0813A44A\n\ - adds r0, r5, 0\n\ - bl sub_813A4B4\n\ - b _0813A460\n\ -_0813A420:\n\ - adds r0, r5, 0\n\ - movs r1, 0\n\ - bl sub_813AA30\n\ - adds r0, r5, 0\n\ - bl sub_813AE0C\n\ - b _0813A460\n\ -_0813A430:\n\ - movs r0, 0x2\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0813A460\n\ - movs r0, 0x5\n\ - bl PlaySE\n\ - movs r1, 0x12\n\ - ldrsh r0, [r4, r1]\n\ - cmp r0, 0\n\ - bne _0813A452\n\ - bl sub_8072DEC\n\ -_0813A44A:\n\ - adds r0, r5, 0\n\ - bl sub_813A468\n\ - b _0813A460\n\ -_0813A452:\n\ - adds r0, r6, 0\n\ - movs r1, 0x1\n\ - bl sub_813AA30\n\ - adds r0, r6, 0\n\ - bl sub_813AE0C\n\ -_0813A460:\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ - .syntax divided"); -} -#endif void sub_813A468(u8 taskId) { @@ -678,141 +474,349 @@ void sub_813A468(u8 taskId) gTasks[taskId].func = ItemStorageMenuProcessInput; } -#ifdef NONMATCHING void sub_813A4B4(u8 taskId) { - u16 *data = gTasks[taskId].data; - u16 var = data[2] + data[0]; + s16 *data = gTasks[taskId].data; + u8 var = data[0] + data[1]; sub_80F996C(0); sub_80F996C(1); - - if (data[6]) + + if(!data[6]) { - if (gSaveBlock1.pcItems[var].itemId == 1) + if(gSaveBlock1.pcItems[var].quantity == 1) { data[3] = 1; - sub_813A794(taskId); + sub_813A6FC(taskId); return; } - sub_813AD58(0xFFF7); - data[3] = 1; - MenuDrawTextWindow(6, 8, 13, 11); - sub_80A418C(data[3], STR_CONV_MODE_RIGHT_ALIGN, 8, 9, 3); - gTasks[taskId].func = sub_813A584; - return; + else // _0813A50C + { + sub_813AD58(0xFFFE); + } } - if (gSaveBlock1.pcItems[var].itemId != 1) + else if(gSaveBlock1.pcItems[var].quantity == 1) // _0813A518 { - sub_813AD58(0xFFF7); data[3] = 1; - MenuDrawTextWindow(6, 8, 13, 11); - sub_80A418C(data[3], STR_CONV_MODE_RIGHT_ALIGN, 8, 9, 3); - gTasks[taskId].func = sub_813A584; + sub_813A794(taskId); return; } + else + { + sub_813AD58(0xFFFC); + } data[3] = 1; - sub_813A6FC(taskId); + MenuDrawTextWindow(6, 8, 13, 11); + sub_80A418C(data[3], STR_CONV_MODE_RIGHT_ALIGN, 8, 9, 3); + gTasks[taskId].func = HandleQuantityRolling; } -#else -__attribute__((naked)) -void sub_813A4B4(u8 taskId) + +void HandleQuantityRolling(u8 taskId) { - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - sub sp, 0x4\n\ - lsls r0, 24\n\ - lsrs r6, r0, 24\n\ - lsls r0, r6, 2\n\ - adds r0, r6\n\ - lsls r0, 3\n\ - ldr r1, _0813A500 @ =gTasks + 0x8\n\ - adds r4, r0, r1\n\ - ldrb r0, [r4, 0x2]\n\ - ldrb r1, [r4]\n\ - adds r0, r1\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - movs r0, 0\n\ - bl sub_80F996C\n\ - movs r0, 0x1\n\ - bl sub_80F996C\n\ - movs r1, 0xC\n\ - ldrsh r0, [r4, r1]\n\ - cmp r0, 0\n\ - bne _0813A518\n\ - ldr r1, _0813A504 @ =gSaveBlock1\n\ - lsls r0, r5, 2\n\ - adds r0, r1\n\ - ldr r1, _0813A508 @ =0x0000049a\n\ - adds r0, r1\n\ - ldrh r0, [r0]\n\ - cmp r0, 0x1\n\ - bne _0813A50C\n\ - strh r0, [r4, 0x6]\n\ - adds r0, r6, 0\n\ - bl sub_813A6FC\n\ - b _0813A570\n\ - .align 2, 0\n\ -_0813A500: .4byte gTasks + 0x8\n\ -_0813A504: .4byte gSaveBlock1\n\ -_0813A508: .4byte 0x0000049a\n\ -_0813A50C:\n\ - ldr r0, _0813A514 @ =0x0000fffe\n\ - bl sub_813AD58\n\ - b _0813A542\n\ - .align 2, 0\n\ -_0813A514: .4byte 0x0000fffe\n\ -_0813A518:\n\ - ldr r1, _0813A534 @ =gSaveBlock1\n\ - lsls r0, r5, 2\n\ - adds r0, r1\n\ - ldr r1, _0813A538 @ =0x0000049a\n\ - adds r0, r1\n\ - ldrh r0, [r0]\n\ - cmp r0, 0x1\n\ - bne _0813A53C\n\ - strh r0, [r4, 0x6]\n\ - adds r0, r6, 0\n\ - bl sub_813A794\n\ - b _0813A570\n\ - .align 2, 0\n\ -_0813A534: .4byte gSaveBlock1\n\ -_0813A538: .4byte 0x0000049a\n\ -_0813A53C:\n\ - ldr r0, _0813A578 @ =0x0000fffc\n\ - bl sub_813AD58\n\ -_0813A542:\n\ - movs r0, 0x1\n\ - strh r0, [r4, 0x6]\n\ - movs r0, 0x6\n\ - movs r1, 0x8\n\ - movs r2, 0xD\n\ - movs r3, 0xB\n\ - bl MenuDrawTextWindow\n\ - ldrh r0, [r4, 0x6]\n\ - movs r1, 0x3\n\ - str r1, [sp]\n\ - movs r1, 0x1\n\ - movs r2, 0x8\n\ - movs r3, 0x9\n\ - bl sub_80A418C\n\ - ldr r1, _0813A57C @ =gTasks\n\ - lsls r0, r6, 2\n\ - adds r0, r6\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - ldr r1, _0813A580 @ =sub_813A584\n\ - str r1, [r0]\n\ -_0813A570:\n\ - add sp, 0x4\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_0813A578: .4byte 0x0000fffc\n\ -_0813A57C: .4byte gTasks\n\ -_0813A580: .4byte sub_813A584\n\ - .syntax divided"); -} -#endif + s16 *data = gTasks[taskId].data; + u8 var = data[0] + data[1]; + + if(gMain.newAndRepeatedKeys & DPAD_UP) + { + if(data[3] != gSaveBlock1.pcItems[var].quantity) + data[3]++; + else + data[3] = 1; // you are at the max amount of items you have when you press Up, set your quantity back to 1. + + sub_80A418C(data[3], STR_CONV_MODE_RIGHT_ALIGN, 8, 9, 3); // print quantity? + } + else if(gMain.newAndRepeatedKeys & DPAD_DOWN) + { + if(data[3] != 1) + data[3]--; + else + data[3] = gSaveBlock1.pcItems[var].quantity; // you are at 0 when you press down, set your quantity to the amount you have. + + sub_80A418C(data[3], STR_CONV_MODE_RIGHT_ALIGN, 8, 9, 3); // print quantity? + } + else if(gMain.newAndRepeatedKeys & DPAD_LEFT) // reduce by 10. + { + data[3] -= 10; + + if(data[3] <= 0) + data[3] = 1; // dont underflow or allow 0! + + sub_80A418C(data[3], STR_CONV_MODE_RIGHT_ALIGN, 8, 9, 3); // print quantity? + } + else if(gMain.newAndRepeatedKeys & DPAD_RIGHT) // add 10. + { + data[3] += 10; + + if(data[3] > gSaveBlock1.pcItems[var].quantity) + data[3] = gSaveBlock1.pcItems[var].quantity; // dont overflow! + + sub_80A418C(data[3], STR_CONV_MODE_RIGHT_ALIGN, 8, 9, 3); // print quantity? + } + else if(gMain.newKeys & A_BUTTON) // confirm quantity. + { + PlaySE(5); + MenuZeroFillWindowRect(6, 6, 0xD, 0xB); + + if(!data[6]) + sub_813A6FC(taskId); + else + sub_813A794(taskId); + } + else if(gMain.newKeys & B_BUTTON) // cancel quantity. + { + PlaySE(5); + MenuZeroFillWindowRect(6, 6, 0xD, 0xB); + sub_80F98DC(0); + sub_80F98DC(1); + sub_813AD58(gSaveBlock1.pcItems[data[1] + data[0]].itemId); // why not use var? + gTasks[taskId].func = sub_813A280; + } +} + +void sub_813A6FC(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + u8 var = data[0] + data[1]; + + if(AddBagItem(gSaveBlock1.pcItems[var].itemId, data[3]) == TRUE) // add item works. + { + CopyItemName(gSaveBlock1.pcItems[var].itemId, gStringVar1); + ConvertIntToDecimalStringN(gStringVar2, data[3], 0, 3); + sub_813AD58(0xFFFD); + gTasks[taskId].func = sub_813A8F0; + } + else // cannot add item. inventory full? + { + data[3] = 0; + sub_813AD58(0xFFFA); + gTasks[taskId].func = sub_813A984; + } +} + +void sub_813A794(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + u8 var = data[0] + data[1]; + + if(ItemId_GetImportance(gSaveBlock1.pcItems[var].itemId) == FALSE) + { + CopyItemName(gSaveBlock1.pcItems[var].itemId, gStringVar1); + ConvertIntToDecimalStringN(gStringVar2, data[3], 0, 3); + sub_813AD58(65528); + DisplayYesNoMenu(7, 6, 1); + sub_80F914C(taskId, gUnknown_084062E0); + } + else + { + data[3] = 0; + sub_813AD58(65529); + gTasks[taskId].func = sub_813A8F0; + } +} + +void sub_813A83C(u8 taskId) +{ + MenuZeroFillWindowRect(0x6, 0x6, 0xD, 0xB); + sub_813AD58(0xFFFB); + gTasks[taskId].func = sub_813A8F0; +} + +void sub_813A878(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + MenuZeroFillWindowRect(0x6, 0x6, 0xD, 0xB); + InitMenu(0, 16, 2, data[4], data[0], 0xD); + sub_80F98DC(0); + sub_80F98DC(1); + sub_813AD58(gSaveBlock1.pcItems[data[1] + data[0]].itemId); + gTasks[taskId].func = sub_813A280; +} + +void sub_813A8F0(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + u16 var; + u8 usedItemSlots; + + if(gMain.newKeys & 0x1 || gMain.newKeys == 0x2) + { + RemovePCItem(data[0] + data[1], data[3]); + var = data[2]; + usedItemSlots = CountUsedPCItemSlots(); + data[2] = usedItemSlots; + + if((s16)var != usedItemSlots && (s16)var < data[4] + data[1] && data[1] != 0) + data[1]--; + + sub_813A240(taskId); + sub_813A9EC(taskId); + InitMenu(0, 16, 2, data[4], data[0], 0xD); + } +} + +void sub_813A984(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + if(gMain.newKeys & 0x1 || gMain.newKeys == 2) + { + sub_813AD58(gSaveBlock1.pcItems[data[1] + data[0]].itemId); + sub_80F98DC(0); + sub_80F98DC(1); + gTasks[taskId].func = sub_813A280; + } +} + +void sub_813A9EC(u8 taskId) +{ + MenuZeroFillWindowRect(0x6, 0x6, 0xD, 0xB); + sub_80F98DC(0); + sub_80F98DC(1); + sub_813AE0C(taskId); + gTasks[taskId].func = sub_813A280; +} + +// seems like it was meant to return data[8] - data[1], but doesn't. +void sub_813AA30(u8 taskId, u8 arg) +{ + s16 *data = gTasks[taskId].data; + u8 var = data[1] + data[0]; + + data[9] = 0; + + if((u8)data[2] > var && (u8)data[8] != var && arg == 0) + { + struct ItemSlot itemSlot = gSaveBlock1.pcItems[data[8]]; // backup the itemSlot before swapping the two. + + gSaveBlock1.pcItems[data[8]] = gSaveBlock1.pcItems[var]; + gSaveBlock1.pcItems[var] = itemSlot; + return; + } + else if(var == data[2]) + { + sub_813AD58(0xFFFF); + } + else + { + sub_813AD58(gSaveBlock1.pcItems[var].itemId); + } + + // dead code not getting optimized out what the fuck??? + { + register int data8 asm("r1") = data[8]; + register int data1 asm("r0") = data[1]; + asm(""::"r"(data8 - data1)); + } +} + +void sub_813AAC4(u16 arg1, enum StringConvertMode arg2, u8 arg3, u8 arg4, int arg5) +{ + sub_80A4164(gStringVar1, arg1, arg2, arg4); + + if(arg5) + MenuPrint(gUnknown_0840632A, 0x1A, arg3); + else + MenuPrint(gUnknown_08406327, 0x1A, arg3); +} + +void sub_813AB10(u8 var) +{ + MenuPrint(gUnknown_08406330, 0x19, var); +} + +void sub_813AB28(struct ItemSlot *itemSlot, u8 var, int var2) +{ + CopyItemName(itemSlot->itemId, gStringVar1); + + if(var2) + MenuPrint(gUnknown_0840631E, 16, var); + else + MenuPrint(gUnknown_08406318, 16, var); +} + +void sub_813AB64(struct ItemSlot *itemSlot, u8 var, int var2) +{ + sub_813AB28(itemSlot, var, var2); + sub_813AAC4(itemSlot->quantity, STR_CONV_MODE_RIGHT_ALIGN, var, 3, var2); +} + +void sub_813AB90(struct ItemSlot *itemSlot, u8 var, int var2) +{ + sub_813AB28(itemSlot, var, var2); + sub_813AB10(var); +} + +void sub_813ABAC(struct ItemSlot *itemSlot, u8 var, int var2) +{ + sub_813AB28(itemSlot, var, var2); + + if(itemSlot->itemId < ITEM_HM01) + sub_813AAC4(itemSlot->quantity, STR_CONV_MODE_RIGHT_ALIGN, var, 3, var2); + else + sub_813AB10(var); // key items do not have a quantity. +} + +void sub_813ABE8(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + u16 i; + int tempArg; + u16 j = 0; + + // r5 is i and is unsigned 16-bit. + + for(i = data[1]; i < data[1] + data[4]; i++) + { + j = (i - data[1]) * 2; + + if(i != data[2]) + { + tempArg = 0; + + if(data[9] != 0 && i == data[8]) + tempArg = 1; + + switch(GetPocketByItemId(gSaveBlock1.pcItems[i].itemId) - 1) + { + case 0: + case 1: + case 3: + sub_813AB64((struct ItemSlot *)&gSaveBlock1.pcItems[i], j + 2, tempArg); + break; + case 4: + sub_813AB90((struct ItemSlot *)&gSaveBlock1.pcItems[i], j + 2, tempArg); + break; + case 2: + sub_813ABAC((struct ItemSlot *)&gSaveBlock1.pcItems[i], j + 2, tempArg); + break; + } + } + else + { + goto weirdCase; // what??? + } + } + +beforeLabel: + if(i - data[1] < 8) + MenuFillWindowRectWithBlankTile(16, j + 4, 0x1C, 0x12); + + switch(data[1]) + { + default: + CreateVerticalScrollIndicators(0, 0xB8, 8); + break; +weirdCase: + sub_8072A18(gOtherText_CancelNoTerminator, 0x80, (j + 2) * 8, 0x68, 1); + goto beforeLabel; + case 0: + DestroyVerticalScrollIndicator(0); + break; + } + + if(data[1] + data[4] <= data[2]) + CreateVerticalScrollIndicators(1, 0xB8, 0x98); + else + DestroyVerticalScrollIndicator(1); +} diff --git a/src/rom_8077ABC.c b/src/rom_8077ABC.c index 5dd90ce28..472221b50 100644 --- a/src/rom_8077ABC.c +++ b/src/rom_8077ABC.c @@ -117,8 +117,8 @@ extern u8 gBattleMonForms[NUM_BATTLE_SLOTS]; extern u8 gEnemyMonElevation[]; extern u16 gUnknown_0202F7CA[]; extern u8 gBattleMonSprites[NUM_BATTLE_SLOTS]; -extern u8 gUnknown_0202F7C8; -extern u8 gUnknown_0202F7C9; +extern u8 gBattleAnimPlayerMonIndex; +extern u8 gBattleAnimEnemyMonIndex; extern s16 gBattleAnimArgs[8]; extern u8 gUnknown_02024A72[NUM_BATTLE_SLOTS]; extern u8 gUnknown_02024A68; // gNumBattleMons? @@ -129,7 +129,7 @@ extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E7C18; extern struct SpriteSheet gMonFrontPicTable[]; extern struct SpriteSheet gMonBackPicTable[]; -extern u8 sub_8076BE0(); +extern u8 IsContest(); extern bool8 sub_8078874(u8); extern bool8 b_side_obj__get_some_boolean(u8); extern void UpdateMonIconFrame(struct Sprite *sprite); @@ -137,7 +137,7 @@ extern void CalcCenterToCornerVec(struct Sprite *sprite, u8 shape, u8 size, u8 a extern void *species_and_otid_get_pal(u32, u32, u32); extern void FreeSpriteOamMatrix(struct Sprite *sprite); extern void ResetPaletteStructByUid(u16); -extern void move_anim_task_del(u8 task); +extern void DestroyAnimVisualTask(u8 task); extern u8 CreateInvisibleSpriteWithCallback(void (*callback)(struct Sprite *)); u8 sub_8077E44(u8 slot, u16 species, u8 a3); @@ -242,7 +242,7 @@ u8 sub_8077ABC(u8 slot, u8 a2) { u16 species; struct TransformStatus *transform; - if (sub_8076BE0()) { + if (IsContest()) { if (a2 == 3 && slot == 3) { a2 = 1; } @@ -258,7 +258,7 @@ u8 sub_8077ABC(u8 slot, u8 a2) { case 3: case 4: default: - if (sub_8076BE0()) { + if (IsContest()) { if (unk_2019348.field_4 & 1) { species = unk_2019348.field_2; } else { @@ -298,9 +298,9 @@ u8 sub_8077BFC(u8 slot, u16 species) { u8 ret; u16 var; - if (!battle_side_get_owner(slot) || sub_8076BE0()) { + if (!battle_side_get_owner(slot) || IsContest()) { if (species == SPECIES_UNOWN) { - if (sub_8076BE0()) { + if (IsContest()) { if (unk_2019348.field_4 & 1) { personality = unk_2019348.field_10; } else { @@ -357,7 +357,7 @@ u8 sub_8077BFC(u8 slot, u16 species) { u8 sub_8077DD8(u8 slot, u16 species) { u8 ret = 0; if (battle_side_get_owner(slot) == 1) { - if (!sub_8076BE0()) { + if (!IsContest()) { if (species == SPECIES_CASTFORM) { ret = gCastformElevations[gBattleMonForms[slot]]; } else if (species > NUM_SPECIES) { @@ -373,7 +373,7 @@ u8 sub_8077DD8(u8 slot, u16 species) { u8 sub_8077E44(u8 slot, u16 species, u8 a3) { u16 offset; u8 y; - if (battle_side_get_owner(slot) == 0 || sub_8076BE0()) { + if (battle_side_get_owner(slot) == 0 || IsContest()) { offset = sub_8077BFC(slot, species); } else { offset = sub_8077BFC(slot, species); @@ -393,7 +393,7 @@ u8 sub_8077EE4(u8 slot, u8 a2) { u16 species; struct TransformStatus *transform; if (a2 == 3 || a2 == 4) { - if (sub_8076BE0()) { + if (IsContest()) { if (unk_2019348.field_4 & 1) { species = unk_2019348.field_2; } else { @@ -436,7 +436,7 @@ u8 sub_8077FC0(u8 slot) { u8 r6; struct TransformStatus *transform; r6 = sub_8077ABC(slot, 1); - if (!sub_8076BE0()) { + if (!IsContest()) { if (battle_side_get_owner(slot)) { transform = &gTransformStatuses[slot]; if (!transform->species) { @@ -462,28 +462,28 @@ u8 sub_8077FC0(u8 slot) { u8 obj_id_for_side_relative_to_move(u8 a1) { u8 *sprites; if (a1 == 0) { - if (sub_8078874(gUnknown_0202F7C8)) { + if (sub_8078874(gBattleAnimPlayerMonIndex)) { sprites = gBattleMonSprites; - return sprites[gUnknown_0202F7C8]; + return sprites[gBattleAnimPlayerMonIndex]; } else { return 0xff; } } else if (a1 == 1) { - if (sub_8078874(gUnknown_0202F7C9)) { + if (sub_8078874(gBattleAnimEnemyMonIndex)) { sprites = gBattleMonSprites; - return sprites[gUnknown_0202F7C9]; + return sprites[gBattleAnimEnemyMonIndex]; } else { return 0xff; } } else if (a1 == 2) { - if (!b_side_obj__get_some_boolean(gUnknown_0202F7C8 ^ 2)) { + if (!b_side_obj__get_some_boolean(gBattleAnimPlayerMonIndex ^ 2)) { return 0xff; } else { - return gBattleMonSprites[gUnknown_0202F7C8 ^ 2]; + return gBattleMonSprites[gBattleAnimPlayerMonIndex ^ 2]; } } else { - if (b_side_obj__get_some_boolean(gUnknown_0202F7C9 ^ 2)) { - return gBattleMonSprites[gUnknown_0202F7C9 ^ 2]; + if (b_side_obj__get_some_boolean(gBattleAnimEnemyMonIndex ^ 2)) { + return gBattleMonSprites[gBattleAnimEnemyMonIndex ^ 2]; } else { return 0xff; } @@ -636,8 +636,8 @@ void sub_80783D0(struct Sprite *sprite) { void unref_sub_8078414(struct Sprite *sprite) { sprite->data1 = sprite->pos1.x + sprite->pos2.x; sprite->data3 = sprite->pos1.y + sprite->pos2.y; - sprite->data2 = sub_8077ABC(gUnknown_0202F7C9, 2); - sprite->data4 = sub_8077ABC(gUnknown_0202F7C9, 3); + sprite->data2 = sub_8077ABC(gBattleAnimEnemyMonIndex, 2); + sprite->data4 = sub_8077ABC(gBattleAnimEnemyMonIndex, 3); sprite->callback = sub_80782F8; } @@ -688,8 +688,8 @@ void move_anim_8074EE0(struct Sprite *sprite) { void unref_sub_8078588(struct Sprite *sprite) { sprite->data1 = sprite->pos1.x + sprite->pos2.x; sprite->data3 = sprite->pos1.y + sprite->pos2.y; - sprite->data2 = sub_8077ABC(gUnknown_0202F7C8, 2); - sprite->data4 = sub_8077ABC(gUnknown_0202F7C8, 3); + sprite->data2 = sub_8077ABC(gBattleAnimPlayerMonIndex, 2); + sprite->data4 = sub_8077ABC(gBattleAnimPlayerMonIndex, 3); sprite->callback = sub_80782F8; } @@ -719,23 +719,23 @@ void sub_807861C(struct Sprite *sprite) { void sub_8078634(u8 task) { REG_BLDCNT = 0; REG_BLDALPHA = 0; - move_anim_task_del(task); + DestroyAnimVisualTask(task); } void sub_8078650(struct Sprite *sprite) { - sprite->pos1.x = sub_8077ABC(gUnknown_0202F7C8, 2); - sprite->pos1.y = sub_8077ABC(gUnknown_0202F7C8, 3); + sprite->pos1.x = sub_8077ABC(gBattleAnimPlayerMonIndex, 2); + sprite->pos1.y = sub_8077ABC(gBattleAnimPlayerMonIndex, 3); } void sub_807867C(struct Sprite *sprite, s16 a2) { - u16 v1 = sub_8077ABC(gUnknown_0202F7C8, 0); - u16 v2 = sub_8077ABC(gUnknown_0202F7C9, 0); + u16 v1 = sub_8077ABC(gBattleAnimPlayerMonIndex, 0); + u16 v2 = sub_8077ABC(gBattleAnimEnemyMonIndex, 0); if (v1 > v2) { sprite->pos1.x -= a2; } else if (v1 < v2) { sprite->pos1.x += a2; } else { - if (battle_side_get_owner(gUnknown_0202F7C8)) { + if (battle_side_get_owner(gBattleAnimPlayerMonIndex)) { sprite->pos1.x -= a2; } else { sprite->pos1.x += a2; @@ -769,8 +769,8 @@ void oamt_add_pos2_onto_pos1(struct Sprite *sprite) { void sub_8078764(struct Sprite *sprite, u8 a2) { if (!a2) { - sprite->pos1.x = sub_8077EE4(gUnknown_0202F7C9, 0); - sprite->pos1.y = sub_8077EE4(gUnknown_0202F7C9, 1); + sprite->pos1.x = sub_8077EE4(gBattleAnimEnemyMonIndex, 0); + sprite->pos1.y = sub_8077EE4(gBattleAnimEnemyMonIndex, 1); } sub_807867C(sprite, gBattleAnimArgs[0]); sprite->pos1.y += gBattleAnimArgs[1]; @@ -778,11 +778,11 @@ void sub_8078764(struct Sprite *sprite, u8 a2) { void sub_80787B0(struct Sprite *sprite, u8 a2) { if (!a2) { - sprite->pos1.x = sub_8077EE4(gUnknown_0202F7C8, 0); - sprite->pos1.y = sub_8077EE4(gUnknown_0202F7C8, 1); + sprite->pos1.x = sub_8077EE4(gBattleAnimPlayerMonIndex, 0); + sprite->pos1.y = sub_8077EE4(gBattleAnimPlayerMonIndex, 1); } else { - sprite->pos1.x = sub_8077EE4(gUnknown_0202F7C8, 2); - sprite->pos1.y = sub_8077EE4(gUnknown_0202F7C8, 3); + sprite->pos1.x = sub_8077EE4(gBattleAnimPlayerMonIndex, 2); + sprite->pos1.y = sub_8077EE4(gBattleAnimPlayerMonIndex, 3); } sub_807867C(sprite, gBattleAnimArgs[0]); sprite->pos1.y += gBattleAnimArgs[1]; @@ -807,11 +807,11 @@ u8 battle_get_side_with_given_state(u8 slot) { } bool8 sub_8078874(u8 slot) { - if (sub_8076BE0()) { - if (gUnknown_0202F7C8 == slot) { + if (IsContest()) { + if (gBattleAnimPlayerMonIndex == slot) { return TRUE; } - if (gUnknown_0202F7C9 == slot) { + if (gBattleAnimEnemyMonIndex == slot) { return TRUE; } return FALSE; @@ -837,7 +837,7 @@ bool8 IsDoubleBattle() { } void sub_8078914(struct Struct_sub_8078914 *unk) { - if (sub_8076BE0()) { + if (IsContest()) { unk->field_0 = (u8 *)0x6008000; unk->field_4 = (u8 *)0x600f000; unk->field_8 = 0xe; @@ -849,11 +849,11 @@ void sub_8078914(struct Struct_sub_8078914 *unk) { } void sub_8078954(struct Struct_sub_8078914 *unk) { - if (sub_8076BE0()) { + if (IsContest()) { unk->field_0 = (u8 *)0x6008000; unk->field_4 = (u8 *)0x600f000; unk->field_8 = 0xe; - } else if (battle_get_per_side_status_permutated(gUnknown_0202F7C8) == 1) { + } else if (battle_get_per_side_status_permutated(gBattleAnimPlayerMonIndex) == 1) { unk->field_0 = (u8 *)0x6004000; unk->field_4 = (u8 *)0x600e000; unk->field_8 = 0x8; @@ -865,7 +865,7 @@ void sub_8078954(struct Struct_sub_8078914 *unk) { } u8 sub_80789BC() { - if (sub_8076BE0()) { + if (IsContest()) { return 1; } return 2; @@ -875,7 +875,7 @@ void sub_80789D4(bool8 a1) { if (!a1) { BG3CNT.size = 0; BG3CNT.overflow = 1; - } else if (sub_8076BE0()) { + } else if (IsContest()) { BG3CNT.size = 0; BG3CNT.overflow = 1; } else { @@ -1080,7 +1080,7 @@ void obj_id_set_rotscale(u8 sprite, s16 xScale, s16 yScale, u16 rotation) { } bool8 sub_8078E38() { - if (sub_8076BE0()) { + if (IsContest()) { if (gSprites[obj_id_for_side_relative_to_move(0)].data2 == 0xc9 /* XXX SPECIES_UNOWN? */) { return FALSE; } @@ -1092,12 +1092,12 @@ bool8 sub_8078E38() { void sub_8078E70(u8 sprite, u8 a2) { struct Struct_2017810 *unk; u8 r7 = gSprites[sprite].data0; - if (sub_8076BE0() || b_side_obj__get_some_boolean(r7)) { + if (IsContest() || b_side_obj__get_some_boolean(r7)) { gSprites[sprite].invisible = FALSE; } gSprites[sprite].oam.objMode = a2; gSprites[sprite].affineAnimPaused = TRUE; - if (!sub_8076BE0() && !gSprites[sprite].oam.affineMode) { + if (!IsContest() && !gSprites[sprite].oam.affineMode) { unk = &unk_2017810[r7]; gSprites[sprite].oam.matrixNum = unk->field_6; } @@ -1190,41 +1190,41 @@ u32 sub_80791A8(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7) { u32 var = 0; u32 shift; if (a1) { - if (!sub_8076BE0()) { + if (!IsContest()) { var = 0xe; } else { var = 1 << sub_80789BC(); } } if (a2) { - shift = gUnknown_0202F7C8 + 16; + shift = gBattleAnimPlayerMonIndex + 16; var |= 1 << shift; } if (a3) { - shift = gUnknown_0202F7C9 + 16; + shift = gBattleAnimEnemyMonIndex + 16; var |= 1 << shift; } if (a4) { - if (b_side_obj__get_some_boolean(gUnknown_0202F7C8 ^ 2)) { - shift = (gUnknown_0202F7C8 ^ 2) + 16; + if (b_side_obj__get_some_boolean(gBattleAnimPlayerMonIndex ^ 2)) { + shift = (gBattleAnimPlayerMonIndex ^ 2) + 16; var |= 1 << shift; } } if (a5) { - if (b_side_obj__get_some_boolean(gUnknown_0202F7C9 ^ 2)) { - shift = (gUnknown_0202F7C9 ^ 2) + 16; + if (b_side_obj__get_some_boolean(gBattleAnimEnemyMonIndex ^ 2)) { + shift = (gBattleAnimEnemyMonIndex ^ 2) + 16; var |= 1 << shift; } } if (a6) { - if (!sub_8076BE0()) { + if (!IsContest()) { var |= 0x100; } else { var |= 0x4000; } } if (a7) { - if (!sub_8076BE0()) { + if (!IsContest()) { var |= 0x200; } } @@ -1234,7 +1234,7 @@ u32 sub_80791A8(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7) { u32 sub_80792C0(u8 a1, u8 a2, u8 a3, u8 a4) { u32 var = 0; u32 shift; - if (sub_8076BE0()) { + if (IsContest()) { if (a1) { var |= 1 << 18; return var; @@ -1309,24 +1309,24 @@ void sub_807941C(struct Sprite *sprite) { v2 = 1; } sub_80787B0(sprite, v1); - if (battle_side_get_owner(gUnknown_0202F7C8)) { + if (battle_side_get_owner(gBattleAnimPlayerMonIndex)) { gBattleAnimArgs[2] = -gBattleAnimArgs[2]; } sprite->data0 = gBattleAnimArgs[4]; - sprite->data2 = sub_8077ABC(gUnknown_0202F7C9, 2) + gBattleAnimArgs[2]; - sprite->data4 = sub_8077ABC(gUnknown_0202F7C9, v2) + gBattleAnimArgs[3]; + sprite->data2 = sub_8077ABC(gBattleAnimEnemyMonIndex, 2) + gBattleAnimArgs[2]; + sprite->data4 = sub_8077ABC(gBattleAnimEnemyMonIndex, v2) + gBattleAnimArgs[3]; sprite->callback = sub_8078B34; oamt_set_x3A_32(sprite, move_anim_8072740); } void sub_80794A8(struct Sprite *sprite) { sub_80787B0(sprite, 1); - if (battle_side_get_owner(gUnknown_0202F7C8)) { + if (battle_side_get_owner(gBattleAnimPlayerMonIndex)) { gBattleAnimArgs[2] = -gBattleAnimArgs[2]; } sprite->data0 = gBattleAnimArgs[4]; - sprite->data2 = sub_8077ABC(gUnknown_0202F7C9, 2) + gBattleAnimArgs[2]; - sprite->data4 = sub_8077ABC(gUnknown_0202F7C9, 3) + gBattleAnimArgs[3]; + sprite->data2 = sub_8077ABC(gBattleAnimEnemyMonIndex, 2) + gBattleAnimArgs[2]; + sprite->data4 = sub_8077ABC(gBattleAnimEnemyMonIndex, 3) + gBattleAnimArgs[3]; sprite->data5 = gBattleAnimArgs[5]; sub_80786EC(sprite); sprite->callback = sub_8079518; @@ -1349,12 +1349,12 @@ void sub_8079534(struct Sprite *sprite) { } if (!gBattleAnimArgs[5]) { sub_80787B0(sprite, r4); - slot = gUnknown_0202F7C8; + slot = gBattleAnimPlayerMonIndex; } else { sub_8078764(sprite, r4); - slot = gUnknown_0202F7C9; + slot = gBattleAnimEnemyMonIndex; } - if (battle_side_get_owner(gUnknown_0202F7C8)) { + if (battle_side_get_owner(gBattleAnimPlayerMonIndex)) { gBattleAnimArgs[2] = -gBattleAnimArgs[2]; } sub_8078764(sprite, r4); @@ -1430,7 +1430,7 @@ void sub_80796F8(u8 taskId) { } REG_BLDALPHA = (task->data[4] << 8) | task->data[3]; if (task->data[3] == task->data[7] && task->data[4] == task->data[8]) { - move_anim_task_del(taskId); + DestroyAnimVisualTask(taskId); return; } } @@ -1439,7 +1439,7 @@ void sub_80796F8(u8 taskId) { void sub_8079790(u8 task) { u8 sprite = obj_id_for_side_relative_to_move(gBattleAnimArgs[0]); if (sprite == 0xff) { - move_anim_task_del(task); + DestroyAnimVisualTask(task); return; } gTasks[task].data[0] = (gSprites[sprite].oam.paletteNum * 0x10) + 0x101; @@ -1475,7 +1475,7 @@ void sub_8079814(u8 taskId) { task->data[4] = 0; task->data[6] = 0; } else { - move_anim_task_del(taskId); + DestroyAnimVisualTask(taskId); return; } } @@ -1486,7 +1486,7 @@ void sub_8079814(u8 taskId) { void sub_80798AC(u8 task) { u8 palette = IndexOfSpritePaletteTag(gBattleAnimArgs[0]); if (palette == 0xff) { - move_anim_task_del(task); + DestroyAnimVisualTask(task); return; } gTasks[task].data[0] = (palette * 0x10) + 0x101; @@ -1595,7 +1595,7 @@ u16 sub_8079B10(u8 sprite) { u16 i; for (i = 0; i < (sizeof(gBattleMonSprites) / sizeof(u8)); i++) { if (gBattleMonSprites[i] == sprite) { - if (sub_8076BE0()) { + if (IsContest()) { species = unk_2019348.field_0; return gMonBackPicCoords[species].y_offset; } else { @@ -1677,21 +1677,21 @@ void sub_8079CEC(u8 task) { v1 = 3; } gBattleAnimArgs[7] = v1; - move_anim_task_del(task); + DestroyAnimVisualTask(task); } void unref_sub_8079D20(u8 priority) { - if (b_side_obj__get_some_boolean(gUnknown_0202F7C9)) { - gSprites[gBattleMonSprites[gUnknown_0202F7C9]].oam.priority = priority; + if (b_side_obj__get_some_boolean(gBattleAnimEnemyMonIndex)) { + gSprites[gBattleMonSprites[gBattleAnimEnemyMonIndex]].oam.priority = priority; } - if (b_side_obj__get_some_boolean(gUnknown_0202F7C8)) { - gSprites[gBattleMonSprites[gUnknown_0202F7C8]].oam.priority = priority; + if (b_side_obj__get_some_boolean(gBattleAnimPlayerMonIndex)) { + gSprites[gBattleMonSprites[gBattleAnimPlayerMonIndex]].oam.priority = priority; } - if (b_side_obj__get_some_boolean(gUnknown_0202F7C9 ^ 2)) { - gSprites[gBattleMonSprites[gUnknown_0202F7C9 ^ 2]].oam.priority = priority; + if (b_side_obj__get_some_boolean(gBattleAnimEnemyMonIndex ^ 2)) { + gSprites[gBattleMonSprites[gBattleAnimEnemyMonIndex ^ 2]].oam.priority = priority; } - if (b_side_obj__get_some_boolean(gUnknown_0202F7C8 ^ 2)) { - gSprites[gBattleMonSprites[gUnknown_0202F7C8 ^ 2]].oam.priority = priority; + if (b_side_obj__get_some_boolean(gBattleAnimPlayerMonIndex ^ 2)) { + gSprites[gBattleMonSprites[gBattleAnimPlayerMonIndex ^ 2]].oam.priority = priority; } } @@ -1708,7 +1708,7 @@ void sub_8079E24() { u8 sub_8079E90(u8 slot) { u8 status; u8 ret; - if (sub_8076BE0()) { + if (IsContest()) { if (slot == 2) { return 30; } else { @@ -1731,7 +1731,7 @@ u8 sub_8079E90(u8 slot) { u8 sub_8079ED4(u8 slot) { u8 status = battle_get_per_side_status(slot); - if (sub_8076BE0()) { + if (IsContest()) { return 2; } if (status == 0 || status == 3) { @@ -1743,7 +1743,7 @@ u8 sub_8079ED4(u8 slot) { u8 battle_get_per_side_status_permutated(u8 slot) { u8 status; - if (!sub_8076BE0()) { + if (!IsContest()) { status = battle_get_per_side_status(slot); if (status == 0 || status == 3) { return 2; @@ -1799,7 +1799,7 @@ u8 sub_8079F44(u16 species, u8 isBackpic, u8 a3, s16 a4, s16 a5, u8 a6, u32 a7, } else { sprite = CreateSprite(&gSpriteTemplate_837F5B0[a3], a4, a5 + gMonBackPicCoords[species].y_offset, a6); } - if (sub_8076BE0()) { + if (IsContest()) { gSprites[sprite].affineAnims = &gSpriteAffineAnimTable_81E7C18; StartSpriteAffineAnim(&gSprites[sprite], 0); } @@ -1818,7 +1818,7 @@ int sub_807A100(u8 slot, u8 a2) { int ret; const struct MonCoords *coords; struct TransformStatus *transform; - if (sub_8076BE0()) { + if (IsContest()) { if (unk_2019348.field_4 & 1) { species = unk_2019348.field_2; personality = unk_2019348.field_10; @@ -1925,7 +1925,7 @@ void sub_807A3FC(u8 slot, u8 a2, s16 *a3, s16 *a4) { } v3 = sub_8077ABC(slot, v1); v4 = sub_8077ABC(slot, v2); - if (IsDoubleBattle() && !sub_8076BE0()) { + if (IsDoubleBattle() && !IsContest()) { v5 = sub_8077ABC(slot ^ 2, v1); v6 = sub_8077ABC(slot ^ 2, v2); } else { @@ -1949,7 +1949,7 @@ u8 sub_807A4A0(int a1, u8 sprite, int a3) { void sub_807A544(struct Sprite *sprite) { sub_8078650(sprite); - if (battle_side_get_owner(gUnknown_0202F7C8)) { + if (battle_side_get_owner(gBattleAnimPlayerMonIndex)) { sprite->pos1.x -= gBattleAnimArgs[0]; gBattleAnimArgs[3] = -gBattleAnimArgs[3]; sprite->hFlip = TRUE; @@ -1966,7 +1966,7 @@ void sub_807A544(struct Sprite *sprite) { } void sub_807A5C4(struct Sprite *sprite) { - if (battle_side_get_owner(gUnknown_0202F7C8)) { + if (battle_side_get_owner(gBattleAnimPlayerMonIndex)) { sprite->pos1.x -= gBattleAnimArgs[0]; gBattleAnimArgs[3] *= -1; } else { @@ -1984,7 +1984,7 @@ void sub_807A5C4(struct Sprite *sprite) { void sub_807A63C(struct Sprite *sprite) { sub_8078650(sprite); - if (battle_side_get_owner(gUnknown_0202F7C8)) { + if (battle_side_get_owner(gBattleAnimPlayerMonIndex)) { sprite->pos1.x -= gBattleAnimArgs[0]; } else { sprite->pos1.x += gBattleAnimArgs[0]; @@ -1999,7 +1999,7 @@ void sub_807A69C(u8 taskId) { u16 dest; struct Task *task = &gTasks[taskId]; task->data[0] = obj_id_for_side_relative_to_move(0); - task->data[1] = (battle_side_get_owner(gUnknown_0202F7C8)) ? -8 : 8; + task->data[1] = (battle_side_get_owner(gBattleAnimPlayerMonIndex)) ? -8 : 8; task->data[2] = 0; task->data[3] = 0; gSprites[task->data[0]].pos2.x -= task->data[0]; @@ -2008,7 +2008,7 @@ void sub_807A69C(u8 taskId) { dest = (task->data[4] + 0x10) * 0x10; src = (gSprites[task->data[0]].oam.paletteNum + 0x10) * 0x10; - task->data[6] = sub_8079E90(gUnknown_0202F7C8); + task->data[6] = sub_8079E90(gBattleAnimPlayerMonIndex); if (task->data[6] == 20 || task->data[6] == 40) { task->data[6] = 2; } else { @@ -2041,7 +2041,7 @@ void sub_807A784(u8 taskId) { case 2: if (!task->data[5]) { FreeSpritePaletteByTag(10097); - move_anim_task_del(taskId); + DestroyAnimVisualTask(taskId); } break; } @@ -2069,9 +2069,9 @@ void sub_807A8D4(struct Sprite *sprite) { } void sub_807A908(struct Sprite *sprite) { - sprite->pos1.x = sub_8077ABC(gUnknown_0202F7C8, 2); - sprite->pos1.y = sub_8077ABC(gUnknown_0202F7C8, 3); - if (!battle_side_get_owner(gUnknown_0202F7C8)) { + sprite->pos1.x = sub_8077ABC(gBattleAnimPlayerMonIndex, 2); + sprite->pos1.y = sub_8077ABC(gBattleAnimPlayerMonIndex, 3); + if (!battle_side_get_owner(gBattleAnimPlayerMonIndex)) { sprite->data0 = 5; } else { sprite->data0 = -10; @@ -2098,7 +2098,7 @@ void sub_807A9BC(struct Sprite *sprite) { sprite->data0 = gBattleAnimArgs[2]; sprite->data2 = sprite->pos1.x + gBattleAnimArgs[4]; sprite->data4 = sprite->pos1.y + gBattleAnimArgs[5]; - if (!battle_side_get_owner(gUnknown_0202F7C9)) { + if (!battle_side_get_owner(gBattleAnimEnemyMonIndex)) { x = (u16)gBattleAnimArgs[4] + 30; sprite->pos1.x += x; sprite->pos1.y = gBattleAnimArgs[5] - 20; |