From d312ee301b03580bbe47add77441b671af70f8ac Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 11 Jan 2017 00:49:29 -0600 Subject: start decompiling battle_anim.c --- src/battle_anim.c | 217 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 217 insertions(+) create mode 100644 src/battle_anim.c (limited to 'src/battle_anim.c') diff --git a/src/battle_anim.c b/src/battle_anim.c new file mode 100644 index 000000000..1313b69ca --- /dev/null +++ b/src/battle_anim.c @@ -0,0 +1,217 @@ +#include "global.h" +#include "asm.h" +#include "gba/m4a_internal.h" +#include "sprite.h" +#include "task.h" + +extern u16 gUnknown_02024A6A[4]; +extern u8 gUnknown_02024C07; +extern u8 gUnknown_02024C08; +extern const u8 *gUnknown_0202F7A4; +extern void (*gUnknown_0202F7AC)(void); +extern s8 gUnknown_0202F7B0; +extern u8 gUnknown_0202F7B1; +extern u8 gUnknown_0202F7B2; +extern u8 gUnknown_0202F7B3; +extern u32 gUnknown_0202F7B4; +extern u32 gUnknown_0202F7B8; +extern u16 gUnknown_0202F7BC; +extern u8 gUnknown_0202F7BE; +extern u8 gUnknown_0202F7C2[]; +extern u8 gUnknown_0202F7C4; +extern u8 gUnknown_0202F7C5; +extern u16 gUnknown_0202F7C6; +extern u8 gUnknown_0202F7C8; +extern u8 gUnknown_0202F7C9; +extern u16 gUnknown_0202F7CA[4]; +extern u8 gUnknown_0202F7D2; +extern u16 gUnknown_03004200; +extern u16 gUnknown_03004240; +extern u16 gUnknown_03004244; +extern u16 gUnknown_030042C4; +extern u16 gUnknown_03004B10[8]; +extern u16 gBattleAnimArgs[8]; +extern struct MusicPlayerInfo gMPlay_BGM; + +extern const u16 gUnknown_081C7160[]; +extern void (*gUnknown_0837F4B8[])(void); +extern const u8 *const gBattleAnims_Moves[]; + +extern u8 unk_2000000[]; + +#define EWRAM_19348 (*(u16 *)(unk_2000000 + 0x19348)) + +void sub_8075624(void) +{ + s32 i; + + gUnknown_0202F7B0 = 0; + gUnknown_0202F7B1 = 0; + gUnknown_0202F7B2 = 0; + gUnknown_0202F7B3 = 0; + gUnknown_0202F7B4 = 0; + gUnknown_0202F7B8 = 0; + gUnknown_0202F7BC = 0; + gUnknown_0202F7BE = 0; + for (i = 0; i < 8; i++) + gUnknown_03004B10[i] |= 0xFFFF; + for (i = 0; i < 8; i++) + gBattleAnimArgs[i] = 0; + gUnknown_0202F7C2[0] = 0xFF; + gUnknown_0202F7C2[1] = -1; + gUnknown_0202F7C4 = 0; + gUnknown_0202F7C5 = 0; + gUnknown_0202F7C6 = 0; + gUnknown_0202F7C8 = 0; + gUnknown_0202F7C9 = 0; + gUnknown_0202F7D2 = 0; +} + +extern void move_something(const u8 *const moveAnims[], u16 b, u8 c); + +void move_anim_start_t1(u16 a) +{ + gUnknown_0202F7C8 = gUnknown_02024C07; + gUnknown_0202F7C9 = gUnknown_02024C08; + move_something(gBattleAnims_Moves, a, 1); +} + +extern u8 sub_8076BE0(); +extern void sub_8079E24(); +extern void sub_8043EB4(); +extern void sub_80759D0(void); + +void move_something(const u8 *const moveAnims[], u16 b, u8 c) +{ + s32 i; + + if (sub_8076BE0() == 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); + else + gUnknown_0202F7CA[i] = GetMonData(&gPlayerParty[gUnknown_02024A6A[i]], 11); + } + } + else + { + for (i = 0; i < 4; i++) + gUnknown_0202F7CA[i] = EWRAM_19348; + } + if (c == 0) + gUnknown_0202F7C6 = 0; + else + gUnknown_0202F7C6 = b; + for (i = 0; i < 8; i++) + gBattleAnimArgs[i] = 0; + gUnknown_0202F7C2[0] = 0xFF; + gUnknown_0202F7C2[1] = -1; + gUnknown_0202F7A4 = moveAnims[b]; + gUnknown_0202F7B1 = 1; + gUnknown_0202F7B0 = 0; + gUnknown_0202F7AC = sub_80759D0; + for (i = 0; i < 8; i++) + gUnknown_03004B10[i] |= 0xFFFF; + if (c != 0) + { + i = 0; + while (1) + { + if (gUnknown_081C7160[i] == 0xFFFF) + break; + if (b == gUnknown_081C7160[i]) + { + m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 128); + break; + } + i++; + } + } + gUnknown_030042C4 = 0; + gUnknown_03004240 = 0; + gUnknown_03004200 = 0; + gUnknown_03004244 = 0; +} + +void move_anim_8072740(struct Sprite *sprite) +{ + FreeSpriteOamMatrix(sprite); + DestroySprite(sprite); + gUnknown_0202F7B2--; +} + +void move_anim_task_del(u8 taskId) +{ + DestroyTask(taskId); + gUnknown_0202F7B2--; +} + +void move_anim_related_task_del(u8 taskId) +{ + DestroyTask(taskId); + gUnknown_0202F7B3--; +} + +void sub_8075940(u16 a) +{ + s32 i; + + for (i = 0; i < 8; i++) + { + if (gUnknown_03004B10[i] == 0xFFFF) + { + gUnknown_03004B10[i] = a; + return; + } + } +} + +void sub_8075970(u16 a) +{ + s32 i; + + for (i = 0; i < 8; i++) + { + if (gUnknown_03004B10[i] == a) + { + gUnknown_03004B10[i] |= 0xFFFF; + return; + } + } +} + +void move_anim_waiter(void) +{ + if (gUnknown_0202F7B0 <= 0) + { + gUnknown_0202F7AC = sub_80759D0; + gUnknown_0202F7B0 = 0; + } + else + { + gUnknown_0202F7B0--; + } +} + +void sub_80759D0(void) +{ + do + { + gUnknown_0837F4B8[*gUnknown_0202F7A4](); + } while (gUnknown_0202F7B0 == 0 && gUnknown_0202F7B1 != 0); +} + +/* +void ma00_load_graphics(void) +{ + u8 r4 = *(gUnknown_0202F7A4++); + u8 temp = *gUnknown_0202F7A4; + + r4 |= temp << 8; + LoadCompressedObjectPic() +} +*/ -- cgit v1.2.3 From 7fe19fc60d9cf03fac46db2e629b7610df219fbe Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sat, 14 Jan 2017 17:21:22 -0600 Subject: decompile up to sub_8076034 --- src/battle_anim.c | 654 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 646 insertions(+), 8 deletions(-) (limited to 'src/battle_anim.c') diff --git a/src/battle_anim.c b/src/battle_anim.c index 1313b69ca..914c94b6c 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -1,10 +1,19 @@ #include "global.h" #include "asm.h" -#include "gba/m4a_internal.h" +#include "decompress.h" +#include "m4a.h" +#include "palette.h" +#include "sound.h" #include "sprite.h" #include "task.h" +struct UnknownStruct1 +{ + u8 unk0; +}; + extern u16 gUnknown_02024A6A[4]; +extern u8 gUnknown_02024BE0[]; extern u8 gUnknown_02024C07; extern u8 gUnknown_02024C08; extern const u8 *gUnknown_0202F7A4; @@ -25,20 +34,30 @@ extern u8 gUnknown_0202F7C8; extern u8 gUnknown_0202F7C9; extern u16 gUnknown_0202F7CA[4]; extern u8 gUnknown_0202F7D2; +extern u16 gUnknown_030041B4; extern u16 gUnknown_03004200; extern u16 gUnknown_03004240; extern u16 gUnknown_03004244; +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 gBattleAnimArgs[8]; extern struct MusicPlayerInfo gMPlay_BGM; +extern struct MusicPlayerInfo gMPlay_SE1; +extern struct MusicPlayerInfo gMPlay_SE2; extern const u16 gUnknown_081C7160[]; extern void (*gUnknown_0837F4B8[])(void); extern const u8 *const gBattleAnims_Moves[]; +extern const struct SpriteSheet gBattleAnimPicTable[]; +extern const struct SpritePalette gBattleAnimPaletteTable[]; extern u8 unk_2000000[]; +#define EWRAM_17800 ((struct UnknownStruct1 *)(unk_2000000 + 0x17800)) #define EWRAM_19348 (*(u16 *)(unk_2000000 + 0x19348)) void sub_8075624(void) @@ -76,7 +95,7 @@ void move_anim_start_t1(u16 a) move_something(gBattleAnims_Moves, a, 1); } -extern u8 sub_8076BE0(); +extern u8 sub_8076BE0(void); extern void sub_8079E24(); extern void sub_8043EB4(); extern void sub_80759D0(void); @@ -205,13 +224,632 @@ void sub_80759D0(void) } while (gUnknown_0202F7B0 == 0 && gUnknown_0202F7B1 != 0); } -/* void ma00_load_graphics(void) { - u8 r4 = *(gUnknown_0202F7A4++); - u8 temp = *gUnknown_0202F7A4; + const u8 *ptr = gUnknown_0202F7A4; + u32 r4; + + gUnknown_0202F7A4++; + r4 = ptr[1] | (gUnknown_0202F7A4[1] << 8); + LoadCompressedObjectPic(&gBattleAnimPicTable[r4 - 10000]); + LoadCompressedObjectPalette(&gBattleAnimPaletteTable[r4 - 10000]); + gUnknown_0202F7A4 += 2; + sub_8075940(r4 - 10000); + gUnknown_0202F7B0 = 1; + gUnknown_0202F7AC = move_anim_waiter; +} + +void ma01_080728D0(void) +{ + const u8 *ptr = gUnknown_0202F7A4; + u32 r4; + + gUnknown_0202F7A4++; + r4 = ptr[1] | (gUnknown_0202F7A4[1] << 8); + FreeSpriteTilesByTag(gBattleAnimPicTable[r4 - 10000].tag); + FreeSpritePaletteByTag(gBattleAnimPicTable[r4 - 10000].tag); + gUnknown_0202F7A4 += 2; + sub_8075970(r4 - 10000); +} + +extern u8 sub_8079E90(); +extern u8 sub_8077ABC(); + +#ifdef NONMATCHING +void ma02_instanciate_template(void) +{ + s32 i; + struct SpriteTemplate *r7; + const u8 *ptr = gUnknown_0202F7A4; + s8 r4; + u8 r0; + s8 _r0; + s16 r6; + u8 r2; + + gUnknown_0202F7A4++; + r7 = (struct SpriteTemplate *)(*(ptr + 1) + (*(gUnknown_0202F7A4 + 1) << 8) + (*(gUnknown_0202F7A4 + 2) << 16) + (*(gUnknown_0202F7A4 + 3) << 24)); + gUnknown_0202F7A4 = ptr + 5; + r4 = *(ptr + 5); + gUnknown_0202F7A4 = ptr + 6; + r0 = *(ptr + 6); + gUnknown_0202F7A4 = ptr + 7; + for (i = 0; i < r0; i++) + { + gBattleAnimArgs[i] = *(gUnknown_0202F7A4) | (*(gUnknown_0202F7A4 + 1) << 8); + gUnknown_0202F7A4 += 2; + } + if (r4 & 0x80) + { + if ((r4 ^ 0x80) > 0x3F) + r4 -= 0x40; + else + r4 = -r4; + _r0 = sub_8079E90(gUnknown_0202F7C9); + } + else + { + //_08075B44 + if (r4 > 0x3F) + r4 -= 0x40; + else + r4 = -r4; + _r0 = sub_8079E90(gUnknown_0202F7C8); + } + r6 = _r0 + r4; + if (r6 < 3) + r6 = 3; + r4 = sub_8077ABC(gUnknown_0202F7C9, 2); + r2 = sub_8077ABC(gUnknown_0202F7C9, 3); + CreateSpriteAndAnimate(r7, r4, r2, r6); + gUnknown_0202F7B2++; +} +#else +__attribute__((naked)) +void ma02_instanciate_template(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + ldr r5, _08075B2C @ =gUnknown_0202F7A4\n\ + ldr r1, [r5]\n\ + adds r3, r1, 0x1\n\ + str r3, [r5]\n\ + ldrb r2, [r1, 0x1]\n\ + ldrb r0, [r3, 0x1]\n\ + lsls r0, 8\n\ + adds r2, r0\n\ + ldrb r0, [r3, 0x2]\n\ + lsls r0, 16\n\ + adds r2, r0\n\ + ldrb r0, [r3, 0x3]\n\ + lsls r0, 24\n\ + adds r7, r2, r0\n\ + adds r0, r1, 0x5\n\ + str r0, [r5]\n\ + ldrb r4, [r1, 0x5]\n\ + adds r0, r1, 0x6\n\ + str r0, [r5]\n\ + ldrb r0, [r1, 0x6]\n\ + adds r1, 0x7\n\ + str r1, [r5]\n\ + cmp r0, 0\n\ + beq _08075B14\n\ + adds r6, r5, 0\n\ + ldr r5, _08075B30 @ =gBattleAnimArgs\n\ + adds r3, r0, 0\n\ +_08075AFC:\n\ + ldr r2, [r6]\n\ + ldrb r1, [r2]\n\ + ldrb r0, [r2, 0x1]\n\ + lsls r0, 8\n\ + orrs r1, r0\n\ + strh r1, [r5]\n\ + adds r2, 0x2\n\ + str r2, [r6]\n\ + adds r5, 0x2\n\ + subs r3, 0x1\n\ + cmp r3, 0\n\ + bne _08075AFC\n\ +_08075B14:\n\ + movs r0, 0x80\n\ + ands r0, r4\n\ + cmp r0, 0\n\ + beq _08075B44\n\ + movs r0, 0x80\n\ + eors r4, r0\n\ + cmp r4, 0x3F\n\ + bls _08075B34\n\ + adds r0, r4, 0\n\ + subs r0, 0x40\n\ + b _08075B36\n\ + .align 2, 0\n\ +_08075B2C: .4byte gUnknown_0202F7A4\n\ +_08075B30: .4byte gBattleAnimArgs\n\ +_08075B34:\n\ + negs r0, r4\n\ +_08075B36:\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + ldr r0, _08075B40 @ =gUnknown_0202F7C9\n\ + b _08075B56\n\ + .align 2, 0\n\ +_08075B40: .4byte gUnknown_0202F7C9\n\ +_08075B44:\n\ + cmp r4, 0x3F\n\ + bls _08075B4E\n\ + adds r0, r4, 0\n\ + subs r0, 0x40\n\ + b _08075B50\n\ +_08075B4E:\n\ + negs r0, r4\n\ +_08075B50:\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + ldr r0, _08075BAC @ =gUnknown_0202F7C8\n\ +_08075B56:\n\ + ldrb r0, [r0]\n\ + bl sub_8079E90\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + lsls r1, r4, 24\n\ + asrs r1, 24\n\ + adds r0, r1\n\ + lsls r0, 16\n\ + lsrs r6, r0, 16\n\ + lsls r0, r6, 16\n\ + asrs r0, 16\n\ + cmp r0, 0x2\n\ + bgt _08075B74\n\ + movs r6, 0x3\n\ +_08075B74:\n\ + ldr r5, _08075BB0 @ =gUnknown_0202F7C9\n\ + ldrb r0, [r5]\n\ + movs r1, 0x2\n\ + bl sub_8077ABC\n\ + adds r4, r0, 0\n\ + lsls r4, 24\n\ + lsrs r4, 24\n\ + ldrb r0, [r5]\n\ + movs r1, 0x3\n\ + bl sub_8077ABC\n\ + adds r2, r0, 0\n\ + lsls r2, 24\n\ + lsrs r2, 24\n\ + lsls r3, r6, 24\n\ + lsrs r3, 24\n\ + adds r0, r7, 0\n\ + adds r1, r4, 0\n\ + bl CreateSpriteAndAnimate\n\ + ldr r1, _08075BB4 @ =gUnknown_0202F7B2\n\ + ldrb r0, [r1]\n\ + adds r0, 0x1\n\ + strb r0, [r1]\n\ + pop {r4-r7}\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\ + .syntax divided\n"); +} +#endif + +void sub_8075BB8(void) +{ + const u8 *ptr = gUnknown_0202F7A4; + TaskFunc taskFunc; + u8 taskPriority; + u8 taskId; + u8 r0; + s32 i; + + gUnknown_0202F7A4++; + taskFunc = (TaskFunc)(ptr[1] + (gUnknown_0202F7A4[1] << 8) + (gUnknown_0202F7A4[2] << 16) + (gUnknown_0202F7A4[3] << 24)); + gUnknown_0202F7A4 = ptr + 5; + taskPriority = ptr[5]; + gUnknown_0202F7A4 = ptr + 6; + r0 = ptr[6]; + gUnknown_0202F7A4 = ptr + 7; + for (i = 0; i < r0; i++) + { + gBattleAnimArgs[i] = gUnknown_0202F7A4[0] | (gUnknown_0202F7A4[1] << 8); + gUnknown_0202F7A4 += 2; + } + taskId = CreateTask(taskFunc, taskPriority); + taskFunc(taskId); + gUnknown_0202F7B2++; +} + +void ma04_wait_countdown(void) +{ + const u8 *ptr = gUnknown_0202F7A4; + + gUnknown_0202F7A4++; + gUnknown_0202F7B0 = ptr[1]; + if (gUnknown_0202F7B0 == 0) + gUnknown_0202F7B0 = -1; + gUnknown_0202F7A4++; + gUnknown_0202F7AC = move_anim_waiter; +} + +void sub_8075C74(void) +{ + if (gUnknown_0202F7B2 == 0) + { + gUnknown_0202F7A4++; + gUnknown_0202F7B0 = 0; + } + else + { + gUnknown_0202F7B0 = 1; + } +} + +void nullsub_53(void) +{ +} + +void nullsub_88(void) +{ +} + +void sub_8075CB0(void) +{ + s32 i; + int zero = 0; + + if (gUnknown_0202F7B2 != 0 || gUnknown_0202F7B3 != 0 + || gUnknown_0202F7C2[0] != 0xFF || gUnknown_0202F7C2[1] != 0xFF) + { + gUnknown_03004AF0 = 0; + gUnknown_0202F7B0 = 1; + return; + } + + if (IsSEPlaying()) + { + gUnknown_03004AF0++; + if (gUnknown_03004AF0 <= 0x5A) + { + gUnknown_0202F7B0 = 1; + return; + } + else + { + m4aMPlayStop(&gMPlay_SE1); + m4aMPlayStop(&gMPlay_SE2); + } + } + gUnknown_03004AF0 = 0; + for (i = 0; i < 8; i++) + { + if (gUnknown_03004B10[i] != 0xFFFF) + { + FreeSpriteTilesByTag(gBattleAnimPicTable[gUnknown_03004B10[i]].tag); + FreeSpritePaletteByTag(gBattleAnimPicTable[gUnknown_03004B10[i]].tag); + gUnknown_03004B10[i] |= 0xFFFF; + } + } + if (zero == 0) + { + m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 256); + if (sub_8076BE0() == 0) + { + sub_8079E24(); + sub_8043EB4(1); + } + gUnknown_0202F7B1 = 0; + } +} + +void ma09_play_sound(void) +{ + const u8 *ptr = gUnknown_0202F7A4; + + gUnknown_0202F7A4++; + PlaySE(ptr[1] | (gUnknown_0202F7A4[1] << 8)); + gUnknown_0202F7A4 += 2; +} + +extern void task_pA_ma0A_obj_to_bg_pal(u8); +extern bool8 b_side_obj__get_some_boolean(u8); +extern void sub_8076034(u8, u8); + +void sub_8075DE0(void) +{ + const u8 *ptr = gUnknown_0202F7A4; + u8 r6; + u8 r5; + u8 r0; + u8 r7; + u16 r4; + u8 taskId; - r4 |= temp << 8; - LoadCompressedObjectPic() + gUnknown_0202F7A4++; + r6 = ptr[1]; + if (r6 == 0) + r6 = 2; + else if (r6 == 1) + r6 = 3; + if (r6 == 0 || r6 == 2) + r5 = gUnknown_0202F7C8; + else + r5 = gUnknown_0202F7C9; + if (b_side_obj__get_some_boolean(r5)) + { + r0 = battle_get_per_side_status(r5); + r0 += 0xFF; + if (r0 <= 1 || sub_8076BE0() != 0) + r7 = 0; + else + r7 = 1; + sub_8076034(r5, r7); + r4 = gUnknown_02024BE0[r5]; + taskId = CreateTask(task_pA_ma0A_obj_to_bg_pal, 10); + gTasks[taskId].data[0] = r4; + gTasks[taskId].data[1] = gSprites[r4].pos1.x + gSprites[r4].pos2.x; + gTasks[taskId].data[2] = gSprites[r4].pos1.y + gSprites[r4].pos2.y; + if (r7 == 0) + { + gTasks[taskId].data[3] = gUnknown_030042C0; + gTasks[taskId].data[4] = gUnknown_030041B4; + } + else + { + gTasks[taskId].data[3] = gUnknown_03004288; + gTasks[taskId].data[4] = gUnknown_03004280; + } + gTasks[taskId].data[5] = r7; + gTasks[taskId].data[6] = r5; + gUnknown_0202F7C2[0] = taskId; + + } + r5 ^= 2; + if (r6 > 1 && b_side_obj__get_some_boolean(r5)) + { + r0 = battle_get_per_side_status(r5); + r0 += 0xFF; + if (r0 <= 1 || sub_8076BE0() != 0) + r7 = 0; + else + r7 = 1; + sub_8076034(r5, r7); + r4 = gUnknown_02024BE0[r5]; + taskId = CreateTask(task_pA_ma0A_obj_to_bg_pal, 10); + gTasks[taskId].data[0] = r4; + gTasks[taskId].data[1] = gSprites[r4].pos1.x + gSprites[r4].pos2.x; + gTasks[taskId].data[2] = gSprites[r4].pos1.y + gSprites[r4].pos2.y; + if (r7 == 0) + { + gTasks[taskId].data[3] = gUnknown_030042C0; + gTasks[taskId].data[4] = gUnknown_030041B4; + } + else + { + gTasks[taskId].data[3] = gUnknown_03004288; + gTasks[taskId].data[4] = gUnknown_03004280; + } + gTasks[taskId].data[5] = r7; + gTasks[taskId].data[6] = r5; + gUnknown_0202F7C2[1] = taskId; + } + gUnknown_0202F7A4++; +} + +extern u8 sub_8078874(u8); + +#ifdef NONMATCHING +bool8 b_side_obj__get_some_boolean(u8 a) +{ + if (sub_8076BE0() != 0) + { + if (a == gUnknown_0202F7C8) + return TRUE; + else + return FALSE; + } + if (sub_8078874(a) == 0) + return FALSE; + if (sub_8076BE0() != 0) + return TRUE; + if ((EWRAM_17800[a].unk0 & 1) == 0) + return TRUE; + if (gSprites[gUnknown_02024BE0[a]].invisible) + return FALSE; + return TRUE; +} +#else +__attribute__((naked)) +bool8 b_side_obj__get_some_boolean(u8 a) +{ + asm(".syntax unified\n\ + push {r4,r5,lr}\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + adds r5, r4, 0\n\ + bl sub_8076BE0\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _08075FDC\n\ + ldr r0, _08075FD8 @ =gUnknown_0202F7C8\n\ + ldrb r0, [r0]\n\ + cmp r4, r0\n\ + beq _0807601C\n\ + b _0807602C\n\ + .align 2, 0\n\ +_08075FD8: .4byte gUnknown_0202F7C8\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\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _0807601C\n\ + lsls r0, r5, 2\n\ + ldr r1, _08076020 @ =0x02017800\n\ + adds r0, r1\n\ + ldrb r1, [r0]\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0807601C\n\ + ldr r2, _08076024 @ =gSprites\n\ + ldr r0, _08076028 @ =gUnknown_02024BE0\n\ + adds r0, r5, r0\n\ + ldrb r1, [r0]\n\ + lsls r0, r1, 4\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r2\n\ + adds r0, 0x3E\n\ + ldrb r0, [r0]\n\ + lsls r0, 29\n\ + cmp r0, 0\n\ + blt _0807602C\n\ +_0807601C:\n\ + movs r0, 0x1\n\ + b _0807602E\n\ + .align 2, 0\n\ +_08076020: .4byte 0x02017800\n\ +_08076024: .4byte gSprites\n\ +_08076028: .4byte gUnknown_02024BE0\n\ +_0807602C:\n\ + movs r0, 0\n\ +_0807602E:\n\ + pop {r4,r5}\n\ + pop {r1}\n\ + bx r1\n\ + .syntax divided\n"); +} +#endif + +struct UnknownStruct2 +{ + void *unk10; + void *unk14; + u8 unk18; +}; + +struct BGCntrlBitfield +{ + volatile u16 priority:2; + volatile u16 charBaseBlock:2; + volatile u16 field_0_2:4; + volatile u16 field_1_0:5; + volatile u16 areaOverflowMode:1; + volatile u16 screenSize:2; +}; + +#define REG_BGCNT_BITFIELD(n) (*(struct BGCntrlBitfield *)REG_ADDR_BG##n##CNT) + +extern void sub_8078914(); +extern u8 sub_80AEB1C(); +extern void sub_8076380(); +extern void sub_80E4EF8(int, int, int, int, u16, u8, int); + +void sub_8076034(u8 a, u8 b) +{ + volatile u8 pointlessZero; + u16 *addr2; + u8 spriteId; + + if (b == 0) + { + struct UnknownStruct2 s; + u8 *addr; + u32 size; + u8 r2; + u16 *addr3; + + sub_8078914(&s); + addr = s.unk10; + size = 0x2000; + while (1) + { + DmaFill32(3, 0, addr, 0x1000); + addr += 0x1000; + size -= 0x1000; + if (size <= 0x1000) + { + DmaFill32(3, 0, addr, size); + break; + } + } + pointlessZero = 0; + pointlessZero = 0; + addr2 = (void *)s.unk14; + DmaFill16(3, 0xFF, addr2, 0x1000); + + REG_BGCNT_BITFIELD(1).priority = 2; + REG_BGCNT_BITFIELD(1).screenSize = 1; + REG_BGCNT_BITFIELD(1).areaOverflowMode = 0; + + spriteId = gUnknown_02024BE0[a]; + gUnknown_030042C0 = -(gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x) + 32; + if (sub_8076BE0() != 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; + + REG_BG1HOFS = gUnknown_030042C0; + REG_BG1VOFS = gUnknown_030041B4; + + LoadPalette(gPlttBufferUnfaded + 0x100 + a * 16, s.unk18 * 16, 32); + addr3 = (u16 *)PLTT + s.unk18 * 16; + DmaCopy32(3, gPlttBufferUnfaded + 0x100 + a * 16, addr3, 32); + + if (sub_8076BE0() != 0) + r2 = 0; + else + r2 = battle_get_per_side_status(a); + sub_80E4EF8(0, 0, r2, s.unk18, (u32)s.unk10, (((s32)s.unk14 - VRAM) / 2048), REG_BGCNT_BITFIELD(1).charBaseBlock); + if (sub_8076BE0() != 0) + sub_8076380(); + } + else + { + u8 *addr; + u32 size; + u16 *addr3; + + addr = (void *)(VRAM + 0x6000); + size = 0x2000; + while (1) + { + DmaFill32(3, 0, addr, 0x1000); + addr += 0x1000; + size -= 0x1000; + if (size <= 0x1000) + { + DmaFill32(3, 0, addr, size); + break; + } + } + pointlessZero = 0; + pointlessZero = 0; + addr2 = (void *)(VRAM + 0xF000); + DmaFill32(3, 0, addr2, 0x800); + + REG_BGCNT_BITFIELD(2).priority = 2; + REG_BGCNT_BITFIELD(2).screenSize = 1; + REG_BGCNT_BITFIELD(2).areaOverflowMode = 0; + + spriteId = gUnknown_02024BE0[a]; + gUnknown_03004288 = -(gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x) + 32; + gUnknown_03004280 = -(gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y) + 32; + gSprites[gUnknown_02024BE0[a]].invisible = TRUE; + + REG_BG2HOFS = gUnknown_03004288; + REG_BG2VOFS = gUnknown_03004280; + + LoadPalette(gPlttBufferUnfaded + 0x100 + a * 16, 0x90, 32); + addr3 = (void *)(PLTT + 0x120); + DmaCopy32(3, gPlttBufferUnfaded + 0x100 + a * 16, addr3, 32); + + sub_80E4EF8(0, 0, battle_get_per_side_status(a), 9, 0x6000, 0x1E, REG_BGCNT_BITFIELD(2).charBaseBlock); + } } -*/ -- cgit v1.2.3 From aa14526b2e7c2899c78e2b2516d5fb7952c4ccf2 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sun, 15 Jan 2017 00:18:56 -0600 Subject: decompile up to ma18_load_background_probably --- src/battle_anim.c | 680 ++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 638 insertions(+), 42 deletions(-) (limited to 'src/battle_anim.c') diff --git a/src/battle_anim.c b/src/battle_anim.c index 914c94b6c..3fffe5dd6 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -12,11 +12,18 @@ struct UnknownStruct1 u8 unk0; }; +struct UnknownStruct3 +{ + u8 unk0; + u8 filler1[0xB]; +}; + extern u16 gUnknown_02024A6A[4]; extern u8 gUnknown_02024BE0[]; extern u8 gUnknown_02024C07; extern u8 gUnknown_02024C08; extern const u8 *gUnknown_0202F7A4; +extern const u8 *gUnknown_0202F7A8; extern void (*gUnknown_0202F7AC)(void); extern s8 gUnknown_0202F7B0; extern u8 gUnknown_0202F7B1; @@ -57,7 +64,10 @@ extern const struct SpritePalette gBattleAnimPaletteTable[]; extern u8 unk_2000000[]; +#define EWRAM_14800 ((u16 *)(unk_2000000 + 0x14800)) #define EWRAM_17800 ((struct UnknownStruct1 *)(unk_2000000 + 0x17800)) +#define EWRAM_17810 ((struct UnknownStruct3 *)(unk_2000000 + 0x17810)) +#define EWRAM_18000 ((u16 *)(unk_2000000 + 0x18000)) #define EWRAM_19348 (*(u16 *)(unk_2000000 + 0x19348)) void sub_8075624(void) @@ -226,11 +236,11 @@ void sub_80759D0(void) void ma00_load_graphics(void) { - const u8 *ptr = gUnknown_0202F7A4; u32 r4; + //TODO: Clean this up gUnknown_0202F7A4++; - r4 = ptr[1] | (gUnknown_0202F7A4[1] << 8); + r4 = gUnknown_0202F7A4[0] | (gUnknown_0202F7A4[1] << 8); LoadCompressedObjectPic(&gBattleAnimPicTable[r4 - 10000]); LoadCompressedObjectPalette(&gBattleAnimPaletteTable[r4 - 10000]); gUnknown_0202F7A4 += 2; @@ -241,11 +251,10 @@ void ma00_load_graphics(void) void ma01_080728D0(void) { - const u8 *ptr = gUnknown_0202F7A4; u32 r4; gUnknown_0202F7A4++; - r4 = ptr[1] | (gUnknown_0202F7A4[1] << 8); + r4 = gUnknown_0202F7A4[0] | (gUnknown_0202F7A4[1] << 8); FreeSpriteTilesByTag(gBattleAnimPicTable[r4 - 10000].tag); FreeSpritePaletteByTag(gBattleAnimPicTable[r4 - 10000].tag); gUnknown_0202F7A4 += 2; @@ -260,32 +269,35 @@ void ma02_instanciate_template(void) { s32 i; struct SpriteTemplate *r7; - const u8 *ptr = gUnknown_0202F7A4; - s8 r4; + u8 r4; u8 r0; - s8 _r0; - s16 r6; + u8 _r0; + u16 r6; u8 r2; + s8 r1; gUnknown_0202F7A4++; - r7 = (struct SpriteTemplate *)(*(ptr + 1) + (*(gUnknown_0202F7A4 + 1) << 8) + (*(gUnknown_0202F7A4 + 2) << 16) + (*(gUnknown_0202F7A4 + 3) << 24)); - gUnknown_0202F7A4 = ptr + 5; - r4 = *(ptr + 5); - gUnknown_0202F7A4 = ptr + 6; - r0 = *(ptr + 6); - gUnknown_0202F7A4 = ptr + 7; + r7 = (struct SpriteTemplate *)(gUnknown_0202F7A4[0] + (gUnknown_0202F7A4[1] << 8) + (gUnknown_0202F7A4[2] << 16) + (gUnknown_0202F7A4[3] << 24)); + gUnknown_0202F7A4 += 4; + r4 = *gUnknown_0202F7A4; + gUnknown_0202F7A4++; + r0 = *gUnknown_0202F7A4; + gUnknown_0202F7A4++; for (i = 0; i < r0; i++) { - gBattleAnimArgs[i] = *(gUnknown_0202F7A4) | (*(gUnknown_0202F7A4 + 1) << 8); + gBattleAnimArgs[i] = gUnknown_0202F7A4[0] | (gUnknown_0202F7A4[1] << 8); gUnknown_0202F7A4 += 2; } if (r4 & 0x80) { - if ((r4 ^ 0x80) > 0x3F) + r4 ^= 0x80; + if (r4 > 0x3F) r4 -= 0x40; else r4 = -r4; _r0 = sub_8079E90(gUnknown_0202F7C9); + r1 = r4; + } else { @@ -295,10 +307,12 @@ void ma02_instanciate_template(void) else r4 = -r4; _r0 = sub_8079E90(gUnknown_0202F7C8); + r1 = r4; } - r6 = _r0 + r4; - if (r6 < 3) + r6 = _r0 + r1; + if ((s16)r6 < 3) r6 = 3; + r4 = sub_8077ABC(gUnknown_0202F7C9, 2); r2 = sub_8077ABC(gUnknown_0202F7C9, 3); CreateSpriteAndAnimate(r7, r4, r2, r6); @@ -437,7 +451,6 @@ _08075BB4: .4byte gUnknown_0202F7B2\n\ void sub_8075BB8(void) { - const u8 *ptr = gUnknown_0202F7A4; TaskFunc taskFunc; u8 taskPriority; u8 taskId; @@ -445,12 +458,12 @@ void sub_8075BB8(void) s32 i; gUnknown_0202F7A4++; - taskFunc = (TaskFunc)(ptr[1] + (gUnknown_0202F7A4[1] << 8) + (gUnknown_0202F7A4[2] << 16) + (gUnknown_0202F7A4[3] << 24)); - gUnknown_0202F7A4 = ptr + 5; - taskPriority = ptr[5]; - gUnknown_0202F7A4 = ptr + 6; - r0 = ptr[6]; - gUnknown_0202F7A4 = ptr + 7; + taskFunc = (TaskFunc)(gUnknown_0202F7A4[0] + (gUnknown_0202F7A4[1] << 8) + (gUnknown_0202F7A4[2] << 16) + (gUnknown_0202F7A4[3] << 24)); + gUnknown_0202F7A4 += 4; + taskPriority = *gUnknown_0202F7A4; + gUnknown_0202F7A4++; + r0 = *gUnknown_0202F7A4; + gUnknown_0202F7A4++; for (i = 0; i < r0; i++) { gBattleAnimArgs[i] = gUnknown_0202F7A4[0] | (gUnknown_0202F7A4[1] << 8); @@ -463,10 +476,8 @@ void sub_8075BB8(void) void ma04_wait_countdown(void) { - const u8 *ptr = gUnknown_0202F7A4; - gUnknown_0202F7A4++; - gUnknown_0202F7B0 = ptr[1]; + gUnknown_0202F7B0 = *gUnknown_0202F7A4; if (gUnknown_0202F7B0 == 0) gUnknown_0202F7B0 = -1; gUnknown_0202F7A4++; @@ -545,10 +556,8 @@ void sub_8075CB0(void) void ma09_play_sound(void) { - const u8 *ptr = gUnknown_0202F7A4; - gUnknown_0202F7A4++; - PlaySE(ptr[1] | (gUnknown_0202F7A4[1] << 8)); + PlaySE(gUnknown_0202F7A4[0] | (gUnknown_0202F7A4[1] << 8)); gUnknown_0202F7A4 += 2; } @@ -558,7 +567,6 @@ extern void sub_8076034(u8, u8); void sub_8075DE0(void) { - const u8 *ptr = gUnknown_0202F7A4; u8 r6; u8 r5; u8 r0; @@ -567,7 +575,7 @@ void sub_8075DE0(void) u8 taskId; gUnknown_0202F7A4++; - r6 = ptr[1]; + r6 = *gUnknown_0202F7A4; if (r6 == 0) r6 = 2; else if (r6 == 1) @@ -729,9 +737,9 @@ _0807602E:\n\ struct UnknownStruct2 { - void *unk10; - void *unk14; - u8 unk18; + void *unk0; + u16 *unk4; + u8 unk8; }; struct BGCntrlBitfield @@ -748,7 +756,7 @@ struct BGCntrlBitfield extern void sub_8078914(); extern u8 sub_80AEB1C(); -extern void sub_8076380(); +extern void sub_8076380(void); extern void sub_80E4EF8(int, int, int, int, u16, u8, int); void sub_8076034(u8 a, u8 b) @@ -766,7 +774,7 @@ void sub_8076034(u8 a, u8 b) u16 *addr3; sub_8078914(&s); - addr = s.unk10; + addr = s.unk0; size = 0x2000; while (1) { @@ -781,7 +789,7 @@ void sub_8076034(u8 a, u8 b) } pointlessZero = 0; pointlessZero = 0; - addr2 = (void *)s.unk14; + addr2 = (void *)s.unk4; DmaFill16(3, 0xFF, addr2, 0x1000); REG_BGCNT_BITFIELD(1).priority = 2; @@ -798,15 +806,15 @@ void sub_8076034(u8 a, u8 b) REG_BG1HOFS = gUnknown_030042C0; REG_BG1VOFS = gUnknown_030041B4; - LoadPalette(gPlttBufferUnfaded + 0x100 + a * 16, s.unk18 * 16, 32); - addr3 = (u16 *)PLTT + s.unk18 * 16; + LoadPalette(gPlttBufferUnfaded + 0x100 + a * 16, s.unk8 * 16, 32); + addr3 = (u16 *)PLTT + s.unk8 * 16; DmaCopy32(3, gPlttBufferUnfaded + 0x100 + a * 16, addr3, 32); if (sub_8076BE0() != 0) r2 = 0; else r2 = battle_get_per_side_status(a); - sub_80E4EF8(0, 0, r2, s.unk18, (u32)s.unk10, (((s32)s.unk14 - VRAM) / 2048), REG_BGCNT_BITFIELD(1).charBaseBlock); + sub_80E4EF8(0, 0, r2, s.unk8, (u32)s.unk0, (((s32)s.unk4 - VRAM) / 2048), REG_BGCNT_BITFIELD(1).charBaseBlock); if (sub_8076BE0() != 0) sub_8076380(); } @@ -853,3 +861,591 @@ void sub_8076034(u8 a, u8 b) sub_80E4EF8(0, 0, battle_get_per_side_status(a), 9, 0x6000, 0x1E, REG_BGCNT_BITFIELD(2).charBaseBlock); } } + +void sub_8076380(void) +{ + int i; + int j; + struct UnknownStruct2 s; + u16 *ptr; + + if (sub_80AEB1C(EWRAM_19348) != 0) + { + sub_8078914(&s); + ptr = s.unk4; + for (i = 0; i < 8; i++) + { + for (j = 0; j < 4; j++) + { + u16 temp = ptr[j + i * 32]; + + ptr[j + i * 32] = ptr[7 - j + i * 32]; + ptr[7 - j + i * 32] = temp; + } + } + for (i = 0; i < 8; i++) + { + for (j = 0; j < 8; j++) + ptr[j + i * 32] ^= 0x400; + } + } +} + +void sub_80763FC(u16 a, u16 *b, u32 c, u8 d) +{ + u8 i; + u8 j; + u32 r9; + + if (d == 0) + r9 = 32; + else + r9 = 64; + a <<= 12; + for (i = 0; i < r9; i++) + { + for (j = 0; j < 32; j++) + b[j + i * 32] = ((b[j + i * 32] & 0xFFF) | a) + c; + } +} + +void sub_8076464(u8 a) +{ + u8 *addr; + u32 size; + volatile u8 pointlessZero; + struct UnknownStruct2 s; + + sub_8078914(&s); + if (a == 0 || sub_8076BE0() != 0) + { + u16 *addr2; + + addr = s.unk0; + size = 0x2000; + while (1) + { + DmaFill32(3, 0, addr, 0x1000); + addr += 0x1000; + size -= 0x1000; + if (size <= 0x1000) + { + DmaFill32(3, 0, addr, size); + break; + } + } + pointlessZero = 0; + pointlessZero = 0; + addr2 = s.unk4; + DmaFill32(3, 0, addr2, 0x800); + gUnknown_030042C0 = 0; + gUnknown_030041B4 = 0; + } + else + { + u16 *addr2; + + addr = (void *)(VRAM + 0x6000); + size = 0x2000; + while (1) + { + DmaFill32(3, 0, addr, 0x1000); + addr += 0x1000; + size -= 0x1000; + if (size <= 0x1000) + { + DmaFill32(3, 0, addr, size); + break; + } + } + pointlessZero = 0; + pointlessZero = 0; + addr2 = (void *)(VRAM + 0xF000); + DmaFill32(3, 0, addr2, 0x800); + gUnknown_03004288 = 0; + gUnknown_03004280 = 0; + } +} + +void task_pA_ma0A_obj_to_bg_pal(u8 taskId) +{ + u8 r4; + u8 r6; + s16 r3; + s16 r2; + struct UnknownStruct2 s; + + r4 = gTasks[taskId].data[0]; + r6 = gTasks[taskId].data[6]; + sub_8078914(&s); + r3 = gTasks[taskId].data[1] - (gSprites[r4].pos1.x + gSprites[r4].pos2.x); + r2 = gTasks[taskId].data[2] - (gSprites[r4].pos1.y + gSprites[r4].pos2.y); + if (gTasks[taskId].data[5] == 0) + { + u16 *src; + u16 *dst; + + gUnknown_030042C0 = r3 + gTasks[taskId].data[3]; + gUnknown_030041B4 = r2 + gTasks[taskId].data[4]; + src = gPlttBufferFaded + 0x100 + r6 * 16; + dst = gPlttBufferFaded + 0x100 + s.unk8 * 16 - 256; + DmaCopy32(3, src, dst, 32); + } + else + { + u16 *src; + u16 *dst; + + gUnknown_03004288 = r3 + gTasks[taskId].data[3]; + gUnknown_03004280 = r2 + gTasks[taskId].data[4]; + src = gPlttBufferFaded + 0x100 + r6 * 16; + dst = gPlttBufferFaded + 0x100 - 112; + DmaCopy32(3, src, dst, 32); + } +} + +extern void sub_807672C(u8); + +void ma0B_0807324C(void) +{ + u8 r4; + u8 r5; + u8 taskId; + + gUnknown_0202F7A4++; + r4 = *gUnknown_0202F7A4; + if (r4 == 0) + r4 = 2; + else if (r4 == 1) + r4 = 3; + if (r4 == 0 || r4 == 2) + r5 = gUnknown_0202F7C8; + else + r5 = gUnknown_0202F7C9; + if (gUnknown_0202F7C2[0] != 0xFF) + gSprites[gUnknown_02024BE0[r5]].invisible = FALSE; + if (r4 > 1 && gUnknown_0202F7C2[1] != 0xFF) + gSprites[gUnknown_02024BE0[r5 ^ 2]].invisible = FALSE; + else + r4 = 0; + taskId = CreateTask(sub_807672C, 5); + gTasks[taskId].data[0] = r4; + gTasks[taskId].data[2] = r5; + gUnknown_0202F7A4++; +} + +void sub_807672C(u8 taskId) +{ + u8 var; + u8 r4; + + gTasks[taskId].data[1]++; + if (gTasks[taskId].data[1] != 1) + { + var = battle_get_per_side_status(gTasks[taskId].data[2]); + var += 0xFF; + if (var <= 1 || sub_8076BE0() != 0) + r4 = 0; + else + r4 = 1; + if (gUnknown_0202F7C2[0] != 0xFF) + { + sub_8076464(r4); + DestroyTask(gUnknown_0202F7C2[0]); + gUnknown_0202F7C2[0] = 0xFF; + } + if (gTasks[taskId].data[0] > 1) + { + sub_8076464(r4 ^ 1); + DestroyTask(gUnknown_0202F7C2[1]); + gUnknown_0202F7C2[1] = 0xFF; + } + DestroyTask(taskId); + } +} + +void sub_80767C4(void) +{ + u8 r5; + u8 r4; + u8 r0; + u8 r1; + + gUnknown_0202F7A4++; + r5 = *gUnknown_0202F7A4; + if (r5 == 0) + r5 = 2; + else if (r5 == 1) + r5 = 3; + if (r5 == 0 || r5 == 2) + r4 = gUnknown_0202F7C8; + else + r4 = gUnknown_0202F7C9; + if (b_side_obj__get_some_boolean(r4)) + { + r0 = battle_get_per_side_status(r4); + r0 += 0xFF; + if (r0 <= 1 || sub_8076BE0() != 0) + r1 = 0; + else + r1 = 1; + sub_8076034(r4, r1); + gSprites[gUnknown_02024BE0[r4]].invisible = FALSE; + } + r4 ^= 2; + if (r5 > 1 && b_side_obj__get_some_boolean(r4)) + { + r0 = battle_get_per_side_status(r4); + r0 += 0xFF; + if (r0 <= 1 || sub_8076BE0() != 0) + r1 = 0; + else + r1 = 1; + sub_8076034(r4, r1); + gSprites[gUnknown_02024BE0[r4]].invisible = FALSE; + } + gUnknown_0202F7A4++; +} + +extern void sub_80769A4(u8); + +void ma23_8073484(void) +{ + u8 r5; + u8 r6; + u8 taskId; + + gUnknown_0202F7A4++; + r5 = *gUnknown_0202F7A4; + if (r5 == 0) + r5 = 2; + else if (r5 == 1) + r5 = 3; + if (r5 == 0 || r5 == 2) + r6 = gUnknown_0202F7C8; + else + r6 = gUnknown_0202F7C9; + 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)) + gSprites[gUnknown_02024BE0[r6 ^ 2]].invisible = FALSE; + else + r5 = 0; + taskId = CreateTask(sub_80769A4, 5); + gTasks[taskId].data[0] = r5; + gTasks[taskId].data[2] = r6; + gUnknown_0202F7A4++; +} + +void sub_80769A4(u8 taskId) +{ + u8 r0; + u8 r4; + u8 r5; + + gTasks[taskId].data[1]++; + if (gTasks[taskId].data[1] != 1) + { + r4 = gTasks[taskId].data[2]; + r0 = battle_get_per_side_status(r4); + r0 += 0xFF; + if (r0 <= 1 || sub_8076BE0() != 0) + r5 = 0; + else + r5 = 1; + if (b_side_obj__get_some_boolean(r4)) + sub_8076464(r5); + if (gTasks[taskId].data[0] > 1 && b_side_obj__get_some_boolean(r4 ^ 2)) + sub_8076464(r5 ^ 1); + DestroyTask(taskId); + } +} + +void sub_8076A3C(void) +{ + u16 r3; + u16 r1; + + gUnknown_0202F7A4++; + r3 = *(gUnknown_0202F7A4++); + r1 = *(gUnknown_0202F7A4++) << 8; + REG_BLDCNT = 0x3F40; + REG_BLDALPHA = r3 | r1; +} + +void sub_8076A78(void) +{ + u16 r3; + u16 r1; + + gUnknown_0202F7A4++; + r3 = *(gUnknown_0202F7A4++); + r1 = *(gUnknown_0202F7A4++) << 8; + REG_BLDCNT = r3 | r1; +} + +void sub_8076AA0(void) +{ + gUnknown_0202F7A4++; + REG_BLDCNT = 0; + REG_BLDALPHA = 0; +} + +void ma0E_call(void) +{ + u32 addr; + + gUnknown_0202F7A4++; + gUnknown_0202F7A8 = gUnknown_0202F7A4 + 4; //store return address + addr = gUnknown_0202F7A4[0] + (gUnknown_0202F7A4[1] << 8) + (gUnknown_0202F7A4[2] << 16) + (gUnknown_0202F7A4[3] << 24); + gUnknown_0202F7A4 = (u8 *)addr; +} + +//script return +void sub_8076AF0(void) +{ + gUnknown_0202F7A4 = gUnknown_0202F7A8; +} + +void ma10_080736AC(void) +{ + const u8 *addr = gUnknown_0202F7A4; + u16 r4; + u8 r2; + + gUnknown_0202F7A4++; + r2 = *(gUnknown_0202F7A4++); + r4 = gUnknown_0202F7A4[0] | (gUnknown_0202F7A4[1] << 8); + gUnknown_0202F7A4 = addr + 4; + gBattleAnimArgs[r2] = r4; +} + +void ma11_if_else(void) +{ + u32 addr; + + gUnknown_0202F7A4++; + if (gUnknown_0202F7C4 & 1) + gUnknown_0202F7A4 += 4; + addr = gUnknown_0202F7A4[0] + (gUnknown_0202F7A4[1] << 8) + (gUnknown_0202F7A4[2] << 16) + (gUnknown_0202F7A4[3] << 24); + gUnknown_0202F7A4 = (u8 *)addr; +} + +void ma12_cond_if(void) +{ + const u8 *r4 = gUnknown_0202F7A4; + u8 r1; + u32 addr; + + gUnknown_0202F7A4++; + r1 = *gUnknown_0202F7A4; + gUnknown_0202F7A4++; + if (r1 == gUnknown_0202F7C4) + { + addr = gUnknown_0202F7A4[0] + (gUnknown_0202F7A4[1] << 8) + (gUnknown_0202F7A4[2] << 16) + (gUnknown_0202F7A4[3] << 24); + gUnknown_0202F7A4 = (u8 *)addr; + } + else + { + gUnknown_0202F7A4 = r4 + 6; + } +} + +//script goto +void sub_8076BBC(void) +{ + u32 addr; + + gUnknown_0202F7A4++; + addr = gUnknown_0202F7A4[0] + (gUnknown_0202F7A4[1] << 8) + (gUnknown_0202F7A4[2] << 16) + (gUnknown_0202F7A4[3] << 24); + gUnknown_0202F7A4 = (u8 *)addr; +} + +u8 sub_8076BE0(void) +{ + if (!gMain.inBattle) + return TRUE; + else + return FALSE; +} + +extern void task_p5_load_battle_screen_elements(u8); + +void ma14_load_background(void) +{ + u8 r4; + u8 taskId; + + gUnknown_0202F7A4++; + r4 = *(gUnknown_0202F7A4++); + taskId = CreateTask(task_p5_load_battle_screen_elements, 5); + gTasks[taskId].data[0] = r4; + gUnknown_0202F7C5 = 1; +} + +void sub_8076C4C(void) +{ + u8 r8; + u8 r7; + u8 r6; + u8 taskId; + + gUnknown_0202F7A4++; + r8 = gUnknown_0202F7A4[0]; + r7 = gUnknown_0202F7A4[1]; + r6 = gUnknown_0202F7A4[2]; + gUnknown_0202F7A4 += 3; + taskId = CreateTask(task_p5_load_battle_screen_elements, 5); + if (sub_8076BE0() != 0) + gTasks[taskId].data[0] = r6; + else if (battle_side_get_owner(gUnknown_0202F7C9) == 0) + gTasks[taskId].data[0] = r7; + else + gTasks[taskId].data[0] = r8; + gUnknown_0202F7C5 = 1; +} + +extern void sub_8076DB8(u16); +extern void dp01t_11_3_message_for_player_only(void); + +void task_p5_load_battle_screen_elements(u8 taskId) +{ + if (gTasks[taskId].data[10] == 0) + { + BeginHardwarePaletteFade(0xE8, 0, 0, 16, 0); + gTasks[taskId].data[10]++; + return; + } + if (gPaletteFade.active) + return; + if (gTasks[taskId].data[10] == 1) + { + gTasks[taskId].data[10]++; + gUnknown_0202F7C5 = 2; + } + else if (gTasks[taskId].data[10] == 2) + { + s16 data0 = (u16)gTasks[taskId].data[0]; + + if (data0 == -1) + dp01t_11_3_message_for_player_only(); + else + sub_8076DB8(data0); + BeginHardwarePaletteFade(0xE8, 0, 16, 0, 1); + gTasks[taskId].data[10]++; + return; + } + if (gPaletteFade.active) + return; + if (gTasks[taskId].data[10] == 3) + { + DestroyTask(taskId); + gUnknown_0202F7C5 = 0; + } +} + +struct BattleAnimBackground +{ + void *image; + void *palette; + void *tilemap; +}; + +extern const struct BattleAnimBackground gBattleAnimBackgroundTable[]; + +extern void sub_800D238(); +extern u8 sub_80789BC(); + +void sub_8076DB8(u16 a) +{ + if (sub_8076BE0()) + { + 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; + dmaDest = (void *)(VRAM + 0xD000); + DmaCopy32(3, dmaSrc, dmaDest, 0x800); + LZDecompressVram(gBattleAnimBackgroundTable[a].image, (void *)(VRAM + 0x2000)); + LoadCompressedPalette(gBattleAnimBackgroundTable[a].palette, sub_80789BC() * 16, 32); + } + else + { + LZDecompressVram(gBattleAnimBackgroundTable[a].tilemap, (void *)(VRAM + 0xD000)); + LZDecompressVram(gBattleAnimBackgroundTable[a].image, (void *)(VRAM + 0x8000)); + LoadCompressedPalette(gBattleAnimBackgroundTable[a].palette, 32, 32); + } +} + +extern void sub_80AB2AC(void); +extern void sub_800D7B8(void); + +void dp01t_11_3_message_for_player_only(void) +{ + if (sub_8076BE0()) + sub_80AB2AC(); + else + sub_800D7B8(); +} + +void ma15_load_battle_screen_elements(void) +{ + u8 taskId; + + gUnknown_0202F7A4++; + taskId = CreateTask(task_p5_load_battle_screen_elements, 5); + gTasks[taskId].data[0] = 0xFFFF; + gUnknown_0202F7C5 = 1; +} + +void ma16_wait_for_battle_screen_elements_s2(void) +{ + if (gUnknown_0202F7C5 == 2) + { + gUnknown_0202F7A4++; + gUnknown_0202F7B0 = 0; + } + else + { + gUnknown_0202F7B0 = 1; + } +} + +void sub_8076F44(void) +{ + if (gUnknown_0202F7C5 == 0) + { + gUnknown_0202F7A4++; + gUnknown_0202F7B0 = 0; + } + else + { + gUnknown_0202F7B0 = 1; + } +} + +void ma18_load_background_probably(void) +{ + gUnknown_0202F7A4++; + sub_8076DB8(*gUnknown_0202F7A4); + gUnknown_0202F7A4++; +} + +/* +void sub_8076F98(u8 a) +{ + if (!sub_8076BE0() && (EWRAM_17810[gUnknown_0202F7C8].unk0 & 0x10)) + { + battle_side_get_owner(gUnknown_0202F7C8); + } + //_08076FDC + else + { + + } + //_0807706E +} +*/ -- cgit v1.2.3 From 256f15f60cfe735406d7b266c207aeaab4115f61 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sun, 15 Jan 2017 11:26:24 -0600 Subject: add some data to C file and clean up --- src/battle_anim.c | 547 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 318 insertions(+), 229 deletions(-) (limited to 'src/battle_anim.c') diff --git a/src/battle_anim.c b/src/battle_anim.c index 3fffe5dd6..75c9cbf05 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -7,40 +7,78 @@ #include "sprite.h" #include "task.h" +#define SCRIPT_READ_8(ptr) ((ptr)[0]) +#define SCRIPT_READ_16(ptr) ((ptr)[0] | ((ptr)[1] << 8)) +#define SCRIPT_READ_32(ptr) ((ptr)[0] + ((ptr)[1] << 8) + ((ptr)[2] << 16) + ((ptr)[3] << 24)) + +#define REG_BGCNT_BITFIELD(n) (*(struct BGCntrlBitfield *)REG_ADDR_BG##n##CNT) + +#define EWRAM_14800 ((u16 *)(unk_2000000 + 0x14800)) +#define EWRAM_17800 ((struct UnknownStruct1 *)(unk_2000000 + 0x17800)) +#define EWRAM_17810 ((struct UnknownStruct3 *)(unk_2000000 + 0x17810)) +#define EWRAM_18000 ((u16 *)(unk_2000000 + 0x18000)) +#define EWRAM_19348 (*(u16 *)(unk_2000000 + 0x19348)) + +struct BGCntrlBitfield +{ + volatile u16 priority:2; + volatile u16 charBaseBlock:2; + volatile u16 field_0_2:4; + volatile u16 field_1_0:5; + volatile u16 areaOverflowMode:1; + volatile u16 screenSize:2; +}; + +struct BattleAnimBackground +{ + void *image; + void *palette; + void *tilemap; +}; + struct UnknownStruct1 { u8 unk0; }; +struct UnknownStruct2 +{ + void *unk0; + u16 *unk4; + u8 unk8; +}; + struct UnknownStruct3 { u8 unk0; u8 filler1[0xB]; }; +extern u8 unk_2000000[]; extern u16 gUnknown_02024A6A[4]; extern u8 gUnknown_02024BE0[]; extern u8 gUnknown_02024C07; extern u8 gUnknown_02024C08; -extern const u8 *gUnknown_0202F7A4; -extern const u8 *gUnknown_0202F7A8; -extern void (*gUnknown_0202F7AC)(void); -extern s8 gUnknown_0202F7B0; -extern u8 gUnknown_0202F7B1; -extern u8 gUnknown_0202F7B2; -extern u8 gUnknown_0202F7B3; -extern u32 gUnknown_0202F7B4; -extern u32 gUnknown_0202F7B8; -extern u16 gUnknown_0202F7BC; -extern u8 gUnknown_0202F7BE; -extern u8 gUnknown_0202F7C2[]; -extern u8 gUnknown_0202F7C4; -extern u8 gUnknown_0202F7C5; -extern u16 gUnknown_0202F7C6; -extern u8 gUnknown_0202F7C8; -extern u8 gUnknown_0202F7C9; -extern u16 gUnknown_0202F7CA[4]; -extern u8 gUnknown_0202F7D2; +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 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 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 gUnknown_0202F7CA[4] = {0}; +EWRAM_DATA u8 gUnknown_0202F7D2 = 0; extern u16 gUnknown_030041B4; extern u16 gUnknown_03004200; extern u16 gUnknown_03004240; @@ -57,18 +95,135 @@ extern struct MusicPlayerInfo gMPlay_SE1; extern struct MusicPlayerInfo gMPlay_SE2; extern const u16 gUnknown_081C7160[]; -extern void (*gUnknown_0837F4B8[])(void); extern const u8 *const gBattleAnims_Moves[]; extern const struct SpriteSheet gBattleAnimPicTable[]; extern const struct SpritePalette gBattleAnimPaletteTable[]; +extern const struct BattleAnimBackground gBattleAnimBackgroundTable[]; -extern u8 unk_2000000[]; +extern void sub_8079E24(); +extern void sub_8043EB4(); +extern u8 sub_8079E90(); +extern u8 sub_8077ABC(); +extern u8 sub_8078874(u8); +extern void sub_8078914(); +extern u8 sub_80AEB1C(); +extern void sub_80E4EF8(int, int, int, int, u16, u8, int); +extern void sub_800D238(); +extern u8 sub_80789BC(); +extern void sub_80AB2AC(void); +extern void sub_800D7B8(void); -#define EWRAM_14800 ((u16 *)(unk_2000000 + 0x14800)) -#define EWRAM_17800 ((struct UnknownStruct1 *)(unk_2000000 + 0x17800)) -#define EWRAM_17810 ((struct UnknownStruct3 *)(unk_2000000 + 0x17810)) -#define EWRAM_18000 ((u16 *)(unk_2000000 + 0x18000)) -#define EWRAM_19348 (*(u16 *)(unk_2000000 + 0x19348)) +void move_something(const u8 *const moveAnims[], u16 b, u8 c); +static void sub_80759D0(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_hang1(void); +static void ScriptCmd_hang2(void); +static void ScriptCmd_end(void); +static void ScriptCmd_playse(void); +static void ScriptCmd_monbg(void); +bool8 b_side_obj__get_some_boolean(u8 a); +void sub_8076034(u8, u8); +static void sub_8076380(void); +static void task_pA_ma0A_obj_to_bg_pal(u8); +static void ScriptCmd_clearmonbg(void); +static void sub_807672C(u8); +static void sub_80767C4(void); +static void ma23_8073484(void); +static void sub_80769A4(u8); +static void ScriptCmd_setalpha(void); +static void sub_8076A78(void); +static void ScriptCmd_blendoff(void); +static void ScriptCmd_call(void); +static void ScriptCmd_return(void); +static void ScriptCmd_setvar(void); +static void ScriptCmd_ifelse(void); +static void ScriptCmd_jumpif(void); +static void ScriptCmd_jump(void); +u8 sub_8076BE0(void); +static void ScriptCmd_fadetobg(void); +static void sub_8076C4C(void); +static void task_p5_load_battle_screen_elements(u8); +static void sub_8076DB8(u16); +static void dp01t_11_3_message_for_player_only(void); +static void ScriptCmd_restorebg(void); +static void ScriptCmd_waitbgfadeout(void); +static void ScriptCmd_waitbgfadein(void); +static void ScriptCmd_changebg(void); +void ma19_08073BC8(void); +void ma1A_8073C00(void); +void ma1B_8073C2C(void); +void ma1C_8073ED0(void); +void ma1D_08073FB4(void); +void sub_8077610(void); +void ma20_wait_for_something(void); +void ma21_08074164(void); +void sub_807775C(void); +void sub_8077320(void); +void sub_80773B4(void); +void sub_807779C(void); +void sub_8077808(void); +void sub_807784C(void); +void ma2B_make_side_invisible(void); +void ma2C_make_side_visible(void); +void sub_807794C(void); +void sub_80779FC(void); +void ma2F_stop_music(void); + +static void (*const sScriptCmdTable[])(void) = { + ScriptCmd_loadsprite, + ScriptCmd_unloadsprite, + ScriptCmd_sprite, + ScriptCmd_createtask, + ScriptCmd_delay, + ScriptCmd_wait, + ScriptCmd_hang1, + ScriptCmd_hang2, + ScriptCmd_end, + ScriptCmd_playse, + ScriptCmd_monbg, + ScriptCmd_clearmonbg, + ScriptCmd_setalpha, + ScriptCmd_blendoff, + ScriptCmd_call, + ScriptCmd_return, + ScriptCmd_setvar, + ScriptCmd_ifelse, + ScriptCmd_jumpif, + ScriptCmd_jump, + ScriptCmd_fadetobg, + ScriptCmd_restorebg, + ScriptCmd_waitbgfadeout, + ScriptCmd_waitbgfadein, + ScriptCmd_changebg, + ma19_08073BC8, + ma1A_8073C00, + ma1B_8073C2C, + ma1C_8073ED0, + ma1D_08073FB4, + sub_8076A78, + sub_8077610, + ma20_wait_for_something, + ma21_08074164, + sub_80767C4, + ma23_8073484, + sub_807775C, + sub_8076C4C, + sub_8077320, + sub_80773B4, + sub_807779C, + sub_8077808, + sub_807784C, + ma2B_make_side_invisible, + ma2C_make_side_visible, + sub_807794C, + sub_80779FC, + ma2F_stop_music, +}; void sub_8075624(void) { @@ -96,8 +251,6 @@ void sub_8075624(void) gUnknown_0202F7D2 = 0; } -extern void move_something(const u8 *const moveAnims[], u16 b, u8 c); - void move_anim_start_t1(u16 a) { gUnknown_0202F7C8 = gUnknown_02024C07; @@ -105,11 +258,6 @@ void move_anim_start_t1(u16 a) move_something(gBattleAnims_Moves, a, 1); } -extern u8 sub_8076BE0(void); -extern void sub_8079E24(); -extern void sub_8043EB4(); -extern void sub_80759D0(void); - void move_something(const u8 *const moveAnims[], u16 b, u8 c) { s32 i; @@ -139,7 +287,7 @@ void move_something(const u8 *const moveAnims[], u16 b, u8 c) gBattleAnimArgs[i] = 0; gUnknown_0202F7C2[0] = 0xFF; gUnknown_0202F7C2[1] = -1; - gUnknown_0202F7A4 = moveAnims[b]; + gBattleAnimScriptPtr = moveAnims[b]; gUnknown_0202F7B1 = 1; gUnknown_0202F7B0 = 0; gUnknown_0202F7AC = sub_80759D0; @@ -185,7 +333,7 @@ void move_anim_related_task_del(u8 taskId) gUnknown_0202F7B3--; } -void sub_8075940(u16 a) +static void sub_8075940(u16 a) { s32 i; @@ -199,7 +347,7 @@ void sub_8075940(u16 a) } } -void sub_8075970(u16 a) +static void sub_8075970(u16 a) { s32 i; @@ -213,7 +361,7 @@ void sub_8075970(u16 a) } } -void move_anim_waiter(void) +static void move_anim_waiter(void) { if (gUnknown_0202F7B0 <= 0) { @@ -226,46 +374,42 @@ void move_anim_waiter(void) } } -void sub_80759D0(void) +static void sub_80759D0(void) { do { - gUnknown_0837F4B8[*gUnknown_0202F7A4](); + sScriptCmdTable[SCRIPT_READ_8(gBattleAnimScriptPtr)](); } while (gUnknown_0202F7B0 == 0 && gUnknown_0202F7B1 != 0); } -void ma00_load_graphics(void) +static void ScriptCmd_loadsprite(void) { - u32 r4; + u16 r4; - //TODO: Clean this up - gUnknown_0202F7A4++; - r4 = gUnknown_0202F7A4[0] | (gUnknown_0202F7A4[1] << 8); + gBattleAnimScriptPtr++; + r4 = SCRIPT_READ_16(gBattleAnimScriptPtr); LoadCompressedObjectPic(&gBattleAnimPicTable[r4 - 10000]); LoadCompressedObjectPalette(&gBattleAnimPaletteTable[r4 - 10000]); - gUnknown_0202F7A4 += 2; + gBattleAnimScriptPtr += 2; sub_8075940(r4 - 10000); gUnknown_0202F7B0 = 1; gUnknown_0202F7AC = move_anim_waiter; } -void ma01_080728D0(void) +static void ScriptCmd_unloadsprite(void) { - u32 r4; + u16 r4; - gUnknown_0202F7A4++; - r4 = gUnknown_0202F7A4[0] | (gUnknown_0202F7A4[1] << 8); + gBattleAnimScriptPtr++; + r4 = SCRIPT_READ_16(gBattleAnimScriptPtr); FreeSpriteTilesByTag(gBattleAnimPicTable[r4 - 10000].tag); FreeSpritePaletteByTag(gBattleAnimPicTable[r4 - 10000].tag); - gUnknown_0202F7A4 += 2; + gBattleAnimScriptPtr += 2; sub_8075970(r4 - 10000); } -extern u8 sub_8079E90(); -extern u8 sub_8077ABC(); - #ifdef NONMATCHING -void ma02_instanciate_template(void) +static void ScriptCmd_sprite(void) { s32 i; struct SpriteTemplate *r7; @@ -276,17 +420,17 @@ void ma02_instanciate_template(void) u8 r2; s8 r1; - gUnknown_0202F7A4++; - r7 = (struct SpriteTemplate *)(gUnknown_0202F7A4[0] + (gUnknown_0202F7A4[1] << 8) + (gUnknown_0202F7A4[2] << 16) + (gUnknown_0202F7A4[3] << 24)); - gUnknown_0202F7A4 += 4; - r4 = *gUnknown_0202F7A4; - gUnknown_0202F7A4++; - r0 = *gUnknown_0202F7A4; - gUnknown_0202F7A4++; + gBattleAnimScriptPtr++; + r7 = (struct SpriteTemplate *)(SCRIPT_READ_32(gBattleAnimScriptPtr)); + gBattleAnimScriptPtr += 4; + r4 = SCRIPT_READ_8(gBattleAnimScriptPtr); + gBattleAnimScriptPtr++; + r0 = SCRIPT_READ_8(gBattleAnimScriptPtr); + gBattleAnimScriptPtr++; for (i = 0; i < r0; i++) { - gBattleAnimArgs[i] = gUnknown_0202F7A4[0] | (gUnknown_0202F7A4[1] << 8); - gUnknown_0202F7A4 += 2; + gBattleAnimArgs[i] = SCRIPT_READ_16(gBattleAnimScriptPtr); + gBattleAnimScriptPtr += 2; } if (r4 & 0x80) { @@ -320,11 +464,11 @@ void ma02_instanciate_template(void) } #else __attribute__((naked)) -void ma02_instanciate_template(void) +static void ScriptCmd_sprite(void) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ - ldr r5, _08075B2C @ =gUnknown_0202F7A4\n\ + ldr r5, _08075B2C @ =gBattleAnimScriptPtr\n\ ldr r1, [r5]\n\ adds r3, r1, 0x1\n\ str r3, [r5]\n\ @@ -377,7 +521,7 @@ _08075B14:\n\ subs r0, 0x40\n\ b _08075B36\n\ .align 2, 0\n\ -_08075B2C: .4byte gUnknown_0202F7A4\n\ +_08075B2C: .4byte gBattleAnimScriptPtr\n\ _08075B30: .4byte gBattleAnimArgs\n\ _08075B34:\n\ negs r0, r4\n\ @@ -449,46 +593,46 @@ _08075BB4: .4byte gUnknown_0202F7B2\n\ } #endif -void sub_8075BB8(void) +static void ScriptCmd_createtask(void) { TaskFunc taskFunc; u8 taskPriority; u8 taskId; - u8 r0; + u8 numArgs; s32 i; - gUnknown_0202F7A4++; - taskFunc = (TaskFunc)(gUnknown_0202F7A4[0] + (gUnknown_0202F7A4[1] << 8) + (gUnknown_0202F7A4[2] << 16) + (gUnknown_0202F7A4[3] << 24)); - gUnknown_0202F7A4 += 4; - taskPriority = *gUnknown_0202F7A4; - gUnknown_0202F7A4++; - r0 = *gUnknown_0202F7A4; - gUnknown_0202F7A4++; - for (i = 0; i < r0; i++) + gBattleAnimScriptPtr++; + taskFunc = (TaskFunc)SCRIPT_READ_32(gBattleAnimScriptPtr); + gBattleAnimScriptPtr += 4; + taskPriority = SCRIPT_READ_8(gBattleAnimScriptPtr); + gBattleAnimScriptPtr++; + numArgs = SCRIPT_READ_8(gBattleAnimScriptPtr); + gBattleAnimScriptPtr++; + for (i = 0; i < numArgs; i++) { - gBattleAnimArgs[i] = gUnknown_0202F7A4[0] | (gUnknown_0202F7A4[1] << 8); - gUnknown_0202F7A4 += 2; + gBattleAnimArgs[i] = SCRIPT_READ_16(gBattleAnimScriptPtr); + gBattleAnimScriptPtr += 2; } taskId = CreateTask(taskFunc, taskPriority); taskFunc(taskId); gUnknown_0202F7B2++; } -void ma04_wait_countdown(void) +static void ScriptCmd_delay(void) { - gUnknown_0202F7A4++; - gUnknown_0202F7B0 = *gUnknown_0202F7A4; + gBattleAnimScriptPtr++; + gUnknown_0202F7B0 = SCRIPT_READ_8(gBattleAnimScriptPtr); if (gUnknown_0202F7B0 == 0) gUnknown_0202F7B0 = -1; - gUnknown_0202F7A4++; + gBattleAnimScriptPtr++; gUnknown_0202F7AC = move_anim_waiter; } -void sub_8075C74(void) +static void ScriptCmd_wait(void) { if (gUnknown_0202F7B2 == 0) { - gUnknown_0202F7A4++; + gBattleAnimScriptPtr++; gUnknown_0202F7B0 = 0; } else @@ -497,15 +641,15 @@ void sub_8075C74(void) } } -void nullsub_53(void) +static void ScriptCmd_hang1(void) { } -void nullsub_88(void) +static void ScriptCmd_hang2(void) { } -void sub_8075CB0(void) +static void ScriptCmd_end(void) { s32 i; int zero = 0; @@ -554,18 +698,14 @@ void sub_8075CB0(void) } } -void ma09_play_sound(void) +static void ScriptCmd_playse(void) { - gUnknown_0202F7A4++; - PlaySE(gUnknown_0202F7A4[0] | (gUnknown_0202F7A4[1] << 8)); - gUnknown_0202F7A4 += 2; + gBattleAnimScriptPtr++; + PlaySE(SCRIPT_READ_16(gBattleAnimScriptPtr)); + gBattleAnimScriptPtr += 2; } -extern void task_pA_ma0A_obj_to_bg_pal(u8); -extern bool8 b_side_obj__get_some_boolean(u8); -extern void sub_8076034(u8, u8); - -void sub_8075DE0(void) +static void ScriptCmd_monbg(void) { u8 r6; u8 r5; @@ -574,8 +714,8 @@ void sub_8075DE0(void) u16 r4; u8 taskId; - gUnknown_0202F7A4++; - r6 = *gUnknown_0202F7A4; + gBattleAnimScriptPtr++; + r6 = SCRIPT_READ_8(gBattleAnimScriptPtr); if (r6 == 0) r6 = 2; else if (r6 == 1) @@ -642,11 +782,9 @@ void sub_8075DE0(void) gTasks[taskId].data[6] = r5; gUnknown_0202F7C2[1] = taskId; } - gUnknown_0202F7A4++; + gBattleAnimScriptPtr++; } -extern u8 sub_8078874(u8); - #ifdef NONMATCHING bool8 b_side_obj__get_some_boolean(u8 a) { @@ -735,30 +873,6 @@ _0807602E:\n\ } #endif -struct UnknownStruct2 -{ - void *unk0; - u16 *unk4; - u8 unk8; -}; - -struct BGCntrlBitfield -{ - volatile u16 priority:2; - volatile u16 charBaseBlock:2; - volatile u16 field_0_2:4; - volatile u16 field_1_0:5; - volatile u16 areaOverflowMode:1; - volatile u16 screenSize:2; -}; - -#define REG_BGCNT_BITFIELD(n) (*(struct BGCntrlBitfield *)REG_ADDR_BG##n##CNT) - -extern void sub_8078914(); -extern u8 sub_80AEB1C(); -extern void sub_8076380(void); -extern void sub_80E4EF8(int, int, int, int, u16, u8, int); - void sub_8076034(u8 a, u8 b) { volatile u8 pointlessZero; @@ -862,7 +976,7 @@ void sub_8076034(u8 a, u8 b) } } -void sub_8076380(void) +static void sub_8076380(void) { int i; int j; @@ -967,7 +1081,7 @@ void sub_8076464(u8 a) } } -void task_pA_ma0A_obj_to_bg_pal(u8 taskId) +static void task_pA_ma0A_obj_to_bg_pal(u8 taskId) { u8 r4; u8 r6; @@ -1004,16 +1118,14 @@ void task_pA_ma0A_obj_to_bg_pal(u8 taskId) } } -extern void sub_807672C(u8); - -void ma0B_0807324C(void) +static void ScriptCmd_clearmonbg(void) { u8 r4; u8 r5; u8 taskId; - gUnknown_0202F7A4++; - r4 = *gUnknown_0202F7A4; + gBattleAnimScriptPtr++; + r4 = SCRIPT_READ_8(gBattleAnimScriptPtr); if (r4 == 0) r4 = 2; else if (r4 == 1) @@ -1031,10 +1143,10 @@ void ma0B_0807324C(void) taskId = CreateTask(sub_807672C, 5); gTasks[taskId].data[0] = r4; gTasks[taskId].data[2] = r5; - gUnknown_0202F7A4++; + gBattleAnimScriptPtr++; } -void sub_807672C(u8 taskId) +static void sub_807672C(u8 taskId) { u8 var; u8 r4; @@ -1064,15 +1176,15 @@ void sub_807672C(u8 taskId) } } -void sub_80767C4(void) +static void sub_80767C4(void) { u8 r5; u8 r4; u8 r0; u8 r1; - gUnknown_0202F7A4++; - r5 = *gUnknown_0202F7A4; + gBattleAnimScriptPtr++; + r5 = SCRIPT_READ_8(gBattleAnimScriptPtr); if (r5 == 0) r5 = 2; else if (r5 == 1) @@ -1104,19 +1216,17 @@ void sub_80767C4(void) sub_8076034(r4, r1); gSprites[gUnknown_02024BE0[r4]].invisible = FALSE; } - gUnknown_0202F7A4++; + gBattleAnimScriptPtr++; } -extern void sub_80769A4(u8); - -void ma23_8073484(void) +static void ma23_8073484(void) { u8 r5; u8 r6; u8 taskId; - gUnknown_0202F7A4++; - r5 = *gUnknown_0202F7A4; + gBattleAnimScriptPtr++; + r5 = SCRIPT_READ_8(gBattleAnimScriptPtr); if (r5 == 0) r5 = 2; else if (r5 == 1) @@ -1134,10 +1244,10 @@ void ma23_8073484(void) taskId = CreateTask(sub_80769A4, 5); gTasks[taskId].data[0] = r5; gTasks[taskId].data[2] = r6; - gUnknown_0202F7A4++; + gBattleAnimScriptPtr++; } -void sub_80769A4(u8 taskId) +static void sub_80769A4(u8 taskId) { u8 r0; u8 r4; @@ -1161,104 +1271,102 @@ void sub_80769A4(u8 taskId) } } -void sub_8076A3C(void) +static void ScriptCmd_setalpha(void) { u16 r3; u16 r1; - gUnknown_0202F7A4++; - r3 = *(gUnknown_0202F7A4++); - r1 = *(gUnknown_0202F7A4++) << 8; + gBattleAnimScriptPtr++; + r3 = *(gBattleAnimScriptPtr++); + r1 = *(gBattleAnimScriptPtr++) << 8; REG_BLDCNT = 0x3F40; REG_BLDALPHA = r3 | r1; } -void sub_8076A78(void) +static void sub_8076A78(void) { u16 r3; u16 r1; - gUnknown_0202F7A4++; - r3 = *(gUnknown_0202F7A4++); - r1 = *(gUnknown_0202F7A4++) << 8; + gBattleAnimScriptPtr++; + r3 = *(gBattleAnimScriptPtr++); + r1 = *(gBattleAnimScriptPtr++) << 8; REG_BLDCNT = r3 | r1; } -void sub_8076AA0(void) +static void ScriptCmd_blendoff(void) { - gUnknown_0202F7A4++; + gBattleAnimScriptPtr++; REG_BLDCNT = 0; REG_BLDALPHA = 0; } -void ma0E_call(void) +static void ScriptCmd_call(void) { u32 addr; - gUnknown_0202F7A4++; - gUnknown_0202F7A8 = gUnknown_0202F7A4 + 4; //store return address - addr = gUnknown_0202F7A4[0] + (gUnknown_0202F7A4[1] << 8) + (gUnknown_0202F7A4[2] << 16) + (gUnknown_0202F7A4[3] << 24); - gUnknown_0202F7A4 = (u8 *)addr; + gBattleAnimScriptPtr++; + gBattleAnimScriptRetAddr = gBattleAnimScriptPtr + 4; + addr = SCRIPT_READ_32(gBattleAnimScriptPtr); + gBattleAnimScriptPtr = (u8 *)addr; } -//script return -void sub_8076AF0(void) +static void ScriptCmd_return(void) { - gUnknown_0202F7A4 = gUnknown_0202F7A8; + gBattleAnimScriptPtr = gBattleAnimScriptRetAddr; } -void ma10_080736AC(void) +static void ScriptCmd_setvar(void) { - const u8 *addr = gUnknown_0202F7A4; + const u8 *addr = gBattleAnimScriptPtr; u16 r4; u8 r2; - gUnknown_0202F7A4++; - r2 = *(gUnknown_0202F7A4++); - r4 = gUnknown_0202F7A4[0] | (gUnknown_0202F7A4[1] << 8); - gUnknown_0202F7A4 = addr + 4; + gBattleAnimScriptPtr++; + r2 = SCRIPT_READ_8(gBattleAnimScriptPtr); + gBattleAnimScriptPtr++; + r4 = SCRIPT_READ_16(gBattleAnimScriptPtr); + gBattleAnimScriptPtr = addr + 4; gBattleAnimArgs[r2] = r4; } -void ma11_if_else(void) +static void ScriptCmd_ifelse(void) { u32 addr; - gUnknown_0202F7A4++; + gBattleAnimScriptPtr++; if (gUnknown_0202F7C4 & 1) - gUnknown_0202F7A4 += 4; - addr = gUnknown_0202F7A4[0] + (gUnknown_0202F7A4[1] << 8) + (gUnknown_0202F7A4[2] << 16) + (gUnknown_0202F7A4[3] << 24); - gUnknown_0202F7A4 = (u8 *)addr; + gBattleAnimScriptPtr += 4; + addr = SCRIPT_READ_32(gBattleAnimScriptPtr); + gBattleAnimScriptPtr = (u8 *)addr; } -void ma12_cond_if(void) +static void ScriptCmd_jumpif(void) { - const u8 *r4 = gUnknown_0202F7A4; u8 r1; u32 addr; - gUnknown_0202F7A4++; - r1 = *gUnknown_0202F7A4; - gUnknown_0202F7A4++; + gBattleAnimScriptPtr++; + r1 = SCRIPT_READ_8(gBattleAnimScriptPtr); + gBattleAnimScriptPtr++; if (r1 == gUnknown_0202F7C4) { - addr = gUnknown_0202F7A4[0] + (gUnknown_0202F7A4[1] << 8) + (gUnknown_0202F7A4[2] << 16) + (gUnknown_0202F7A4[3] << 24); - gUnknown_0202F7A4 = (u8 *)addr; + addr = SCRIPT_READ_32(gBattleAnimScriptPtr); + gBattleAnimScriptPtr = (u8 *)addr; } else { - gUnknown_0202F7A4 = r4 + 6; + gBattleAnimScriptPtr += 4; } } -//script goto -void sub_8076BBC(void) +static void ScriptCmd_jump(void) { u32 addr; - gUnknown_0202F7A4++; - addr = gUnknown_0202F7A4[0] + (gUnknown_0202F7A4[1] << 8) + (gUnknown_0202F7A4[2] << 16) + (gUnknown_0202F7A4[3] << 24); - gUnknown_0202F7A4 = (u8 *)addr; + gBattleAnimScriptPtr++; + addr = SCRIPT_READ_32(gBattleAnimScriptPtr); + gBattleAnimScriptPtr = (u8 *)addr; } u8 sub_8076BE0(void) @@ -1269,32 +1377,31 @@ u8 sub_8076BE0(void) return FALSE; } -extern void task_p5_load_battle_screen_elements(u8); - -void ma14_load_background(void) +static void ScriptCmd_fadetobg(void) { u8 r4; u8 taskId; - gUnknown_0202F7A4++; - r4 = *(gUnknown_0202F7A4++); + gBattleAnimScriptPtr++; + r4 = SCRIPT_READ_8(gBattleAnimScriptPtr); + gBattleAnimScriptPtr++; taskId = CreateTask(task_p5_load_battle_screen_elements, 5); gTasks[taskId].data[0] = r4; gUnknown_0202F7C5 = 1; } -void sub_8076C4C(void) +static void sub_8076C4C(void) { u8 r8; u8 r7; u8 r6; u8 taskId; - gUnknown_0202F7A4++; - r8 = gUnknown_0202F7A4[0]; - r7 = gUnknown_0202F7A4[1]; - r6 = gUnknown_0202F7A4[2]; - gUnknown_0202F7A4 += 3; + gBattleAnimScriptPtr++; + r8 = gBattleAnimScriptPtr[0]; + r7 = gBattleAnimScriptPtr[1]; + r6 = gBattleAnimScriptPtr[2]; + gBattleAnimScriptPtr += 3; taskId = CreateTask(task_p5_load_battle_screen_elements, 5); if (sub_8076BE0() != 0) gTasks[taskId].data[0] = r6; @@ -1305,10 +1412,7 @@ void sub_8076C4C(void) gUnknown_0202F7C5 = 1; } -extern void sub_8076DB8(u16); -extern void dp01t_11_3_message_for_player_only(void); - -void task_p5_load_battle_screen_elements(u8 taskId) +static void task_p5_load_battle_screen_elements(u8 taskId) { if (gTasks[taskId].data[10] == 0) { @@ -1344,19 +1448,7 @@ void task_p5_load_battle_screen_elements(u8 taskId) } } -struct BattleAnimBackground -{ - void *image; - void *palette; - void *tilemap; -}; - -extern const struct BattleAnimBackground gBattleAnimBackgroundTable[]; - -extern void sub_800D238(); -extern u8 sub_80789BC(); - -void sub_8076DB8(u16 a) +static void sub_8076DB8(u16 a) { if (sub_8076BE0()) { @@ -1380,10 +1472,7 @@ void sub_8076DB8(u16 a) } } -extern void sub_80AB2AC(void); -extern void sub_800D7B8(void); - -void dp01t_11_3_message_for_player_only(void) +static void dp01t_11_3_message_for_player_only(void) { if (sub_8076BE0()) sub_80AB2AC(); @@ -1391,21 +1480,21 @@ void dp01t_11_3_message_for_player_only(void) sub_800D7B8(); } -void ma15_load_battle_screen_elements(void) +static void ScriptCmd_restorebg(void) { u8 taskId; - gUnknown_0202F7A4++; + gBattleAnimScriptPtr++; taskId = CreateTask(task_p5_load_battle_screen_elements, 5); gTasks[taskId].data[0] = 0xFFFF; gUnknown_0202F7C5 = 1; } -void ma16_wait_for_battle_screen_elements_s2(void) +static void ScriptCmd_waitbgfadeout(void) { if (gUnknown_0202F7C5 == 2) { - gUnknown_0202F7A4++; + gBattleAnimScriptPtr++; gUnknown_0202F7B0 = 0; } else @@ -1414,11 +1503,11 @@ void ma16_wait_for_battle_screen_elements_s2(void) } } -void sub_8076F44(void) +static void ScriptCmd_waitbgfadein(void) { if (gUnknown_0202F7C5 == 0) { - gUnknown_0202F7A4++; + gBattleAnimScriptPtr++; gUnknown_0202F7B0 = 0; } else @@ -1427,11 +1516,11 @@ void sub_8076F44(void) } } -void ma18_load_background_probably(void) +static void ScriptCmd_changebg(void) { - gUnknown_0202F7A4++; - sub_8076DB8(*gUnknown_0202F7A4); - gUnknown_0202F7A4++; + gBattleAnimScriptPtr++; + sub_8076DB8(SCRIPT_READ_8(gBattleAnimScriptPtr)); + gBattleAnimScriptPtr++; } /* -- cgit v1.2.3 From 4c3cf9f22e82e8a87abdd64878b8668d52b5c8a7 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Mon, 16 Jan 2017 18:10:23 -0600 Subject: finish decompiling battle_anim.c --- src/battle_anim.c | 847 +++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 808 insertions(+), 39 deletions(-) (limited to 'src/battle_anim.c') diff --git a/src/battle_anim.c b/src/battle_anim.c index 75c9cbf05..13d7a6012 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -11,7 +11,9 @@ #define SCRIPT_READ_16(ptr) ((ptr)[0] | ((ptr)[1] << 8)) #define SCRIPT_READ_32(ptr) ((ptr)[0] + ((ptr)[1] << 8) + ((ptr)[2] << 16) + ((ptr)[3] << 24)) -#define REG_BGCNT_BITFIELD(n) (*(struct BGCntrlBitfield *)REG_ADDR_BG##n##CNT) +#define REG_BGnCNT_BITFIELD(n) (*(struct BGCntrlBitfield *)REG_ADDR_BG##n##CNT) +#define REG_BG1CNT_BITFIELD REG_BGnCNT_BITFIELD(1) +#define REG_BG2CNT_BITFIELD REG_BGnCNT_BITFIELD(2) #define EWRAM_14800 ((u16 *)(unk_2000000 + 0x14800)) #define EWRAM_17800 ((struct UnknownStruct1 *)(unk_2000000 + 0x17800)) @@ -89,7 +91,7 @@ extern u16 gUnknown_030042C0; extern u16 gUnknown_030042C4; extern u16 gUnknown_03004AF0; extern u16 gUnknown_03004B10[8]; -extern u16 gBattleAnimArgs[8]; +extern s16 gBattleAnimArgs[8]; extern struct MusicPlayerInfo gMPlay_BGM; extern struct MusicPlayerInfo gMPlay_SE1; extern struct MusicPlayerInfo gMPlay_SE2; @@ -112,6 +114,8 @@ extern void sub_800D238(); extern u8 sub_80789BC(); extern void sub_80AB2AC(void); extern void sub_800D7B8(void); +extern u8 obj_id_for_side_relative_to_move(); +extern u8 battle_get_per_side_status_permutated(); void move_something(const u8 *const moveAnims[], u16 b, u8 c); static void sub_80759D0(void); @@ -144,7 +148,7 @@ static void ScriptCmd_setvar(void); static void ScriptCmd_ifelse(void); static void ScriptCmd_jumpif(void); static void ScriptCmd_jump(void); -u8 sub_8076BE0(void); +bool8 sub_8076BE0(void); static void ScriptCmd_fadetobg(void); static void sub_8076C4C(void); static void task_p5_load_battle_screen_elements(u8); @@ -154,25 +158,28 @@ static void ScriptCmd_restorebg(void); static void ScriptCmd_waitbgfadeout(void); static void ScriptCmd_waitbgfadein(void); static void ScriptCmd_changebg(void); -void ma19_08073BC8(void); -void ma1A_8073C00(void); -void ma1B_8073C2C(void); -void ma1C_8073ED0(void); -void ma1D_08073FB4(void); -void sub_8077610(void); -void ma20_wait_for_something(void); -void ma21_08074164(void); -void sub_807775C(void); -void sub_8077320(void); -void sub_80773B4(void); -void sub_807779C(void); -void sub_8077808(void); -void sub_807784C(void); -void ma2B_make_side_invisible(void); -void ma2C_make_side_visible(void); -void sub_807794C(void); -void sub_80779FC(void); -void ma2F_stop_music(void); +static void ma19_08073BC8(void); +static void ma1A_8073C00(void); +static void ma1B_8073C2C(void); +static void c3_08073CEC(u8); +static void sub_8077320(void); +static void sub_80773B4(void); +static void ma1C_8073ED0(void); +static void sub_80774FC(u8); +static void ma1D_08073FB4(void); +static void sub_80775CC(u8); +static void sub_8077610(void); +static void ma20_wait_for_something(void); +static void ma21_08074164(void); +static void sub_807775C(void); +static void sub_807779C(void); +static void sub_8077808(void); +static void sub_807784C(void); +static void ma2B_make_side_invisible(void); +static void ma2C_make_side_visible(void); +static void sub_807794C(void); +static void sub_80779FC(void); +static void ma2F_stop_music(void); static void (*const sScriptCmdTable[])(void) = { ScriptCmd_loadsprite, @@ -295,17 +302,13 @@ void move_something(const u8 *const moveAnims[], u16 b, u8 c) gUnknown_03004B10[i] |= 0xFFFF; if (c != 0) { - i = 0; - while (1) + for (i = 0; gUnknown_081C7160[i] != 0xFFFF; i++) { - if (gUnknown_081C7160[i] == 0xFFFF) - break; if (b == gUnknown_081C7160[i]) { m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 128); break; } - i++; } } gUnknown_030042C4 = 0; @@ -906,9 +909,9 @@ void sub_8076034(u8 a, u8 b) addr2 = (void *)s.unk4; DmaFill16(3, 0xFF, addr2, 0x1000); - REG_BGCNT_BITFIELD(1).priority = 2; - REG_BGCNT_BITFIELD(1).screenSize = 1; - REG_BGCNT_BITFIELD(1).areaOverflowMode = 0; + REG_BG1CNT_BITFIELD.priority = 2; + REG_BG1CNT_BITFIELD.screenSize = 1; + REG_BG1CNT_BITFIELD.areaOverflowMode = 0; spriteId = gUnknown_02024BE0[a]; gUnknown_030042C0 = -(gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x) + 32; @@ -928,7 +931,7 @@ void sub_8076034(u8 a, u8 b) 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_BGCNT_BITFIELD(1).charBaseBlock); + sub_80E4EF8(0, 0, r2, s.unk8, (u32)s.unk0, (((s32)s.unk4 - VRAM) / 2048), REG_BG1CNT_BITFIELD.charBaseBlock); if (sub_8076BE0() != 0) sub_8076380(); } @@ -956,9 +959,9 @@ void sub_8076034(u8 a, u8 b) addr2 = (void *)(VRAM + 0xF000); DmaFill32(3, 0, addr2, 0x800); - REG_BGCNT_BITFIELD(2).priority = 2; - REG_BGCNT_BITFIELD(2).screenSize = 1; - REG_BGCNT_BITFIELD(2).areaOverflowMode = 0; + REG_BG2CNT_BITFIELD.priority = 2; + REG_BG2CNT_BITFIELD.screenSize = 1; + REG_BG2CNT_BITFIELD.areaOverflowMode = 0; spriteId = gUnknown_02024BE0[a]; gUnknown_03004288 = -(gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x) + 32; @@ -972,7 +975,7 @@ void sub_8076034(u8 a, u8 b) addr3 = (void *)(PLTT + 0x120); DmaCopy32(3, gPlttBufferUnfaded + 0x100 + a * 16, addr3, 32); - sub_80E4EF8(0, 0, battle_get_per_side_status(a), 9, 0x6000, 0x1E, REG_BGCNT_BITFIELD(2).charBaseBlock); + sub_80E4EF8(0, 0, battle_get_per_side_status(a), 9, 0x6000, 0x1E, REG_BG2CNT_BITFIELD.charBaseBlock); } } @@ -1369,7 +1372,8 @@ static void ScriptCmd_jump(void) gBattleAnimScriptPtr = (u8 *)addr; } -u8 sub_8076BE0(void) +//IsContest, maybe +bool8 sub_8076BE0(void) { if (!gMain.inBattle) return TRUE; @@ -1523,18 +1527,783 @@ static void ScriptCmd_changebg(void) gBattleAnimScriptPtr++; } +//Weird control flow /* -void sub_8076F98(u8 a) +s8 sub_8076F98(s8 a) { if (!sub_8076BE0() && (EWRAM_17810[gUnknown_0202F7C8].unk0 & 0x10)) { - battle_side_get_owner(gUnknown_0202F7C8); + a = battle_side_get_owner(gUnknown_0202F7C8) ? 0xC0 : 0x3F; } //_08076FDC else { - + if (sub_8076BE0()) + { + if (gUnknown_0202F7C8 == gUnknown_0202F7C9 && gUnknown_0202F7C8 == 2 + && a == 0x3F) + { + //jump to _0807707A + if (a < -0x40) + a = 0xC0; + return a; + } + } + //_08077004 + else + { + if (battle_side_get_owner(gUnknown_0202F7C8) == 0) + { + if (battle_side_get_owner(gUnknown_0202F7C9) == 0) + } + //_08077042 + else + { + + } + //_0807706C + } } //_0807706E } */ +__attribute__((naked)) +s8 sub_8076F98(s8 a) +{ + asm(".syntax unified\n\ + push {r4,lr}\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + bl sub_8076BE0\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _08076FDC\n\ + ldr r0, _08076FD4 @ =gUnknown_0202F7C8\n\ + ldrb r2, [r0]\n\ + lsls r0, r2, 1\n\ + adds r0, r2\n\ + lsls r0, 2\n\ + ldr r1, _08076FD8 @ =0x02017810\n\ + adds r0, r1\n\ + ldrb r1, [r0]\n\ + movs r0, 0x10\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _08076FDC\n\ + adds r0, r2, 0\n\ + bl battle_side_get_owner\n\ + lsls r0, 24\n\ + movs r4, 0xC0\n\ + cmp r0, 0\n\ + beq _0807706E\n\ + movs r4, 0x3F\n\ + b _0807706E\n\ + .align 2, 0\n\ +_08076FD4: .4byte gUnknown_0202F7C8\n\ +_08076FD8: .4byte 0x02017810\n\ +_08076FDC:\n\ + bl sub_8076BE0\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _08077004\n\ + ldr r0, _08076FFC @ =gUnknown_0202F7C8\n\ + ldr r1, _08077000 @ =gUnknown_0202F7C9\n\ + ldrb r0, [r0]\n\ + ldrb r1, [r1]\n\ + cmp r0, r1\n\ + bne _08077068\n\ + cmp r0, 0x2\n\ + bne _08077068\n\ + cmp r4, 0x3F\n\ + beq _0807707A\n\ + b _08077068\n\ + .align 2, 0\n\ +_08076FFC: .4byte gUnknown_0202F7C8\n\ +_08077000: .4byte gUnknown_0202F7C9\n\ +_08077004:\n\ + ldr r0, _0807702C @ =gUnknown_0202F7C8\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\ + ldrb r0, [r0]\n\ + bl battle_side_get_owner\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _0807706E\n\ + lsls r0, r4, 24\n\ + asrs r1, r0, 24\n\ + cmp r1, 0x3F\n\ + bne _08077034\n\ + movs r4, 0xC0\n\ + b _0807706E\n\ + .align 2, 0\n\ +_0807702C: .4byte gUnknown_0202F7C8\n\ +_08077030: .4byte gUnknown_0202F7C9\n\ +_08077034:\n\ + movs r0, 0x40\n\ + negs r0, r0\n\ + cmp r1, r0\n\ + beq _0807706E\n\ + negs r0, r1\n\ + lsls r0, 24\n\ + b _0807706C\n\ +_08077042:\n\ + ldr r0, _08077064 @ =gUnknown_0202F7C9\n\ + ldrb r0, [r0]\n\ + bl battle_side_get_owner\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x1\n\ + bne _08077068\n\ + lsls r0, r4, 24\n\ + asrs r0, 24\n\ + movs r1, 0x40\n\ + negs r1, r1\n\ + cmp r0, r1\n\ + bne _0807706E\n\ + movs r4, 0x3F\n\ + b _0807706E\n\ + .align 2, 0\n\ +_08077064: .4byte gUnknown_0202F7C9\n\ +_08077068:\n\ + lsls r0, r4, 24\n\ + negs r0, r0\n\ +_0807706C:\n\ + lsrs r4, r0, 24\n\ +_0807706E:\n\ + lsls r0, r4, 24\n\ + asrs r0, 24\n\ + cmp r0, 0x3F\n\ + ble _0807707A\n\ + movs r4, 0x3F\n\ + b _08077088\n\ +_0807707A:\n\ + lsls r0, r4, 24\n\ + asrs r0, 24\n\ + movs r1, 0x40\n\ + negs r1, r1\n\ + cmp r0, r1\n\ + bge _08077088\n\ + movs r4, 0xC0\n\ +_08077088:\n\ + lsls r0, r4, 24\n\ + asrs r0, 24\n\ + pop {r4}\n\ + pop {r1}\n\ + bx r1\n\ + .syntax divided\n"); +} + +s8 sub_8077094(s8 a) +{ + if (!sub_8076BE0() && (EWRAM_17810[gUnknown_0202F7C8].unk0 & 0x10)) + { + if (battle_side_get_owner(gUnknown_0202F7C8) != 0) + a = 0x3F; + else + a = 0xC0; + } + else + { + if (battle_side_get_owner(gUnknown_0202F7C8) != 0 || sub_8076BE0() != 0) + a = -a; + } + return a; +} + +s16 sub_8077104(s16 a) +{ + s16 var = a; + + if (var > 63) + var = 63; + else if (var < -64) + var = -64; + return var; +} + +s16 sub_807712C(s16 a, s16 b, s16 c) +{ + u16 var; + + if (a < b) + var = ((c < 0) ? -c : c); + else if (a > b) + var = -((c < 0) ? -c : c); + else + var = 0; + return var; +} + +static void ma19_08073BC8(void) +{ + u16 r4; + s8 r0; + + gBattleAnimScriptPtr++; + r4 = SCRIPT_READ_16(gBattleAnimScriptPtr); + r0 = SCRIPT_READ_8(gBattleAnimScriptPtr + 2); + PlaySE12WithPanning(r4, sub_8076F98(r0)); + gBattleAnimScriptPtr += 3; +} + +static void ma1A_8073C00(void) +{ + s8 r0; + + gBattleAnimScriptPtr++; + r0 = SCRIPT_READ_8(gBattleAnimScriptPtr); + SE12PanpotControl(sub_8076F98(r0)); + gBattleAnimScriptPtr++; +} + +static void ma1B_8073C2C(void) +{ + u16 songNum; + s8 r0; + s8 r4; + s8 r6; + u8 r7; + s8 panning; + s8 r8; + u8 taskId; + + gBattleAnimScriptPtr++; + songNum = SCRIPT_READ_16(gBattleAnimScriptPtr); + r0 = SCRIPT_READ_8(gBattleAnimScriptPtr + 2); + r4 = SCRIPT_READ_8(gBattleAnimScriptPtr + 3); + r6 = SCRIPT_READ_8(gBattleAnimScriptPtr + 4); + r7 = SCRIPT_READ_8(gBattleAnimScriptPtr + 5); + panning = sub_8076F98(r0); + r8 = sub_8076F98(r4); + r4 = sub_807712C(panning, r8, r6); + taskId = CreateTask(c3_08073CEC, 1); + gTasks[taskId].data[0] = panning; + gTasks[taskId].data[1] = r8; + gTasks[taskId].data[2] = r4; + gTasks[taskId].data[3] = r7; + gTasks[taskId].data[4] = panning; + PlaySE12WithPanning(songNum, panning); + gUnknown_0202F7B3++; + gBattleAnimScriptPtr += 6; +} + +#ifdef NONMATCHING +static void c3_08073CEC(u8 taskId) +{ + u16 r7 = 0; + s16 r0; + s16 r6; + s16 r3; + s16 r4; + int foo; + + r0 = gTasks[taskId].data[8]; + gTasks[taskId].data[8]++; + if (r0 >= gTasks[taskId].data[3]) + { + gTasks[taskId].data[8] = r7; + r6 = gTasks[taskId].data[0]; + r3 = gTasks[taskId].data[1]; + foo = gTasks[taskId].data[4] + gTasks[taskId].data[2]; + r4 = foo; + gTasks[taskId].data[4] = r4; + if (gTasks[taskId].data[2] == 0) + { + r4 = r3; + DestroyTask(taskId); + gUnknown_0202F7B3--; + } + //_080772D8 + else + { + if (r6 < r3) + { + if (r4 < r3) + goto check; + DestroyTask(taskId); + gUnknown_0202F7B3--; + } + else + { + if (r4 <= r3) + r7 = 1; + check: + if (r7 != 0) + { + DestroyTask(taskId); + gUnknown_0202F7B3--; + } + } + } + //_080772F8 + SE12PanpotControl(r4); + } + //_08077314 +} +#else +__attribute__((naked)) +static void c3_08073CEC(u8 taskId) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + movs r7, 0\n\ + ldr r1, _080772D4 @ =gTasks\n\ + lsls r0, r5, 2\n\ + adds r0, r5\n\ + lsls r0, 3\n\ + adds r2, r0, r1\n\ + ldrh r0, [r2, 0x18]\n\ + adds r1, r0, 0x1\n\ + strh r1, [r2, 0x18]\n\ + lsls r0, 16\n\ + asrs r0, 16\n\ + movs r3, 0xE\n\ + ldrsh r1, [r2, r3]\n\ + cmp r0, r1\n\ + blt _08077314\n\ + strh r7, [r2, 0x18]\n\ + ldrh r6, [r2, 0x8]\n\ + ldrh r3, [r2, 0xA]\n\ + movs r4, 0x10\n\ + ldrsh r0, [r2, r4]\n\ + movs r4, 0xC\n\ + ldrsh r1, [r2, r4]\n\ + adds r0, r1\n\ + lsls r0, 16\n\ + lsrs r4, r0, 16\n\ + strh r4, [r2, 0x10]\n\ + cmp r1, 0\n\ + bne _080772D8\n\ + lsls r2, r3, 16\n\ + b _080772FC\n\ + .align 2, 0\n\ +_080772D4: .4byte gTasks\n\ +_080772D8:\n\ + lsls r1, r6, 16\n\ + lsls r0, r3, 16\n\ + asrs r3, r0, 16\n\ + adds r2, r0, 0\n\ + cmp r1, r2\n\ + bge _080772EE\n\ + lsls r0, r4, 16\n\ + asrs r0, 16\n\ + cmp r0, r3\n\ + blt _080772F8\n\ + b _080772FC\n\ +_080772EE:\n\ + lsls r0, r4, 16\n\ + asrs r0, 16\n\ + cmp r0, r3\n\ + bgt _080772F8\n\ + movs r7, 0x1\n\ +_080772F8:\n\ + cmp r7, 0\n\ + beq _0807730C\n\ +_080772FC:\n\ + lsrs r4, r2, 16\n\ + adds r0, r5, 0\n\ + bl DestroyTask\n\ + ldr r1, _0807731C @ =gUnknown_0202F7B3\n\ + ldrb r0, [r1]\n\ + subs r0, 0x1\n\ + strb r0, [r1]\n\ +_0807730C:\n\ + lsls r0, r4, 24\n\ + asrs r0, 24\n\ + bl SE12PanpotControl\n\ +_08077314:\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_0807731C: .4byte gUnknown_0202F7B3\n\ + .syntax divided\n"); +} +#endif + +static void sub_8077320(void) +{ + u16 r8; + s8 r4; + s8 r5; + s8 r6; + u8 r10; + u8 taskId; + + gBattleAnimScriptPtr++; + r8 = SCRIPT_READ_16(gBattleAnimScriptPtr); + r4 = SCRIPT_READ_8(gBattleAnimScriptPtr + 2); + r5 = SCRIPT_READ_8(gBattleAnimScriptPtr + 3); + r6 = SCRIPT_READ_8(gBattleAnimScriptPtr + 4); + r10 = SCRIPT_READ_8(gBattleAnimScriptPtr + 5); + taskId = CreateTask(c3_08073CEC, 1); + gTasks[taskId].data[0] = r4; + gTasks[taskId].data[1] = r5; + gTasks[taskId].data[2] = r6; + gTasks[taskId].data[3] = r10; + gTasks[taskId].data[4] = r4; + PlaySE12WithPanning(r8, r4); + gUnknown_0202F7B3++; + gBattleAnimScriptPtr += 6; +} + +static void sub_80773B4(void) +{ + u16 r9; + u8 r4; + u8 r8; + u8 r7; + u8 r0; + s8 r6; + s8 r5; + s8 r4_2; + u8 taskId; + + gBattleAnimScriptPtr++; + r9 = SCRIPT_READ_16(gBattleAnimScriptPtr); + r0 = SCRIPT_READ_8(gBattleAnimScriptPtr + 2); + r4 = SCRIPT_READ_8(gBattleAnimScriptPtr + 3); + r8 = SCRIPT_READ_8(gBattleAnimScriptPtr + 4); + r7 = SCRIPT_READ_8(gBattleAnimScriptPtr + 5); + r6 = sub_8077094(r0); + r5 = sub_8077094(r4); + r4_2 = sub_8077094(r8); + taskId = CreateTask(c3_08073CEC, 1); + gTasks[taskId].data[0] = r6; + gTasks[taskId].data[1] = r5; + gTasks[taskId].data[2] = r4_2; + gTasks[taskId].data[3] = r7; + gTasks[taskId].data[4] = r6; + PlaySE12WithPanning(r9, r6); + gUnknown_0202F7B3++; + gBattleAnimScriptPtr += 6; +} + +static void ma1C_8073ED0(void) +{ + u16 r5; + u8 r0; + u8 r8; + u8 r9; + s8 r4; + u8 taskId; + + gBattleAnimScriptPtr++; + r5 = SCRIPT_READ_16(gBattleAnimScriptPtr); + r0 = SCRIPT_READ_8(gBattleAnimScriptPtr + 2); + r8 = SCRIPT_READ_8(gBattleAnimScriptPtr + 3); + r9 = SCRIPT_READ_8(gBattleAnimScriptPtr + 4); + r4 = sub_8076F98(r0); + taskId = CreateTask(sub_80774FC, 1); + gTasks[taskId].data[0] = r5; + gTasks[taskId].data[1] = r4; + gTasks[taskId].data[2] = r8; + gTasks[taskId].data[3] = r9; + gTasks[taskId].data[8] = r8; + gTasks[taskId].func(taskId); + gUnknown_0202F7B3++; + gBattleAnimScriptPtr += 5; +} + +static void sub_80774FC(u8 taskId) +{ + s16 data8; + u16 r0; + s8 r1; + u8 r4; + + data8 = gTasks[taskId].data[8]; + gTasks[taskId].data[8]++; + if (data8 >= gTasks[taskId].data[2]) + { + gTasks[taskId].data[8] = 0; + r0 = gTasks[taskId].data[0]; + r1 = gTasks[taskId].data[1]; + gTasks[taskId].data[3]--; + r4 = gTasks[taskId].data[3]; + PlaySE12WithPanning(r0, r1); + if (r4 == 0) + { + DestroyTask(taskId); + gUnknown_0202F7B3--; + } + } +} + +static void ma1D_08073FB4(void) +{ + u16 r5; + u8 r0; + u8 r8; + s8 r4; + u8 taskId; + + gBattleAnimScriptPtr++; + r5 = SCRIPT_READ_16(gBattleAnimScriptPtr); + r0 = SCRIPT_READ_8(gBattleAnimScriptPtr + 2); + r8 = SCRIPT_READ_8(gBattleAnimScriptPtr + 3); + r4 = sub_8076F98(r0); + taskId = CreateTask(sub_80775CC, 1); + gTasks[taskId].data[0] = r5; + gTasks[taskId].data[1] = r4; + gTasks[taskId].data[2] = r8; + gUnknown_0202F7B3++; + gBattleAnimScriptPtr += 4; +} + +static void sub_80775CC(u8 taskId) +{ + s16 r0; + + r0 = gTasks[taskId].data[2]; + gTasks[taskId].data[2]--; + if (r0 <= 0) + { + PlaySE12WithPanning(gTasks[taskId].data[0], gTasks[taskId].data[1]); + DestroyTask(taskId); + gUnknown_0202F7B3--; + } +} + +static void sub_8077610(void) +{ + TaskFunc func; + u8 numArgs; + int i; + u8 taskId; + + gBattleAnimScriptPtr++; + func = (TaskFunc)SCRIPT_READ_32(gBattleAnimScriptPtr); + gBattleAnimScriptPtr += 4; + numArgs = SCRIPT_READ_8(gBattleAnimScriptPtr); + gBattleAnimScriptPtr++; + for (i = 0; i < numArgs; i++) + { + gBattleAnimArgs[i] = SCRIPT_READ_16(gBattleAnimScriptPtr); + gBattleAnimScriptPtr += 2; + } + taskId = CreateTask(func, 1); + func(taskId); + gUnknown_0202F7B3++; +} + +static void ma20_wait_for_something(void) +{ + if (gUnknown_0202F7B3 != 0) + { + gUnknown_03004AF0 = 0; + gUnknown_0202F7B0 = 1; + } + else if (IsSEPlaying()) + { + gUnknown_03004AF0++; + if (gUnknown_03004AF0 > 0x5A) + { + m4aMPlayStop(&gMPlay_SE1); + m4aMPlayStop(&gMPlay_SE2); + gUnknown_03004AF0 = 0; + } + else + { + gUnknown_0202F7B0 = 1; + } + } + else + { + gUnknown_03004AF0 = 0; + gBattleAnimScriptPtr++; + gUnknown_0202F7B0 = 0; + } +} + +static void ma21_08074164(void) +{ + u8 r2; + s16 r1; + u8 *addr; + + gBattleAnimScriptPtr++; + r2 = SCRIPT_READ_8(gBattleAnimScriptPtr); + r1 = SCRIPT_READ_16(gBattleAnimScriptPtr + 1); + if (r1 == gBattleAnimArgs[r2]) + { + addr = (u8 *)SCRIPT_READ_32(gBattleAnimScriptPtr + 3); + gBattleAnimScriptPtr = addr; + } + else + { + gBattleAnimScriptPtr += 7; + } +} + +static void sub_807775C(void) +{ + u8 *addr; + + gBattleAnimScriptPtr++; + if (sub_8076BE0()) + { + addr = (u8 *)SCRIPT_READ_32(gBattleAnimScriptPtr); + gBattleAnimScriptPtr = addr; + } + else + { + gBattleAnimScriptPtr += 4; + } +} + +static void sub_807779C(void) +{ + u8 r2; + u8 r0; + u8 r4; + + r2 = SCRIPT_READ_8(gBattleAnimScriptPtr + 1); + gBattleAnimScriptPtr += 2; + if (r2 != 0) + r0 = gUnknown_0202F7C9; + else + r0 = gUnknown_0202F7C8; + r4 = battle_get_per_side_status(r0); + if (!sub_8076BE0() && (r4 == 0 || r4 == 3)) + { + REG_BG1CNT_BITFIELD.priority = 1; + REG_BG2CNT_BITFIELD.priority = 2; + } +} + +static void sub_8077808(void) +{ + gBattleAnimScriptPtr++; + if (!sub_8076BE0()) + { + REG_BG1CNT_BITFIELD.priority = 1; + REG_BG2CNT_BITFIELD.priority = 2; + } +} + +static void sub_807784C(void) +{ + u8 r6; + u8 r4; + u8 r0; + + r6 = SCRIPT_READ_8(gBattleAnimScriptPtr + 1); + gBattleAnimScriptPtr += 2; + if (battle_side_get_owner(gUnknown_0202F7C8) != battle_side_get_owner(gUnknown_0202F7C9)) + { + if (r6 != 0) + r0 = gUnknown_0202F7C9; + else + r0 = gUnknown_0202F7C8; + r4 = battle_get_per_side_status(r0); + if (!sub_8076BE0() && (r4 == 0 || r4 == 3)) + { + REG_BG1CNT_BITFIELD.priority = 1; + REG_BG2CNT_BITFIELD.priority = 2; + } + } +} + +static void ma2B_make_side_invisible(void) +{ + u8 r0; + u8 spriteId; + + r0 = SCRIPT_READ_8(gBattleAnimScriptPtr + 1); + spriteId = obj_id_for_side_relative_to_move(r0); + if (spriteId != 0xFF) + { + gSprites[spriteId].invisible = TRUE; + } + gBattleAnimScriptPtr += 2; +} + +static void ma2C_make_side_visible(void) +{ + u8 r0; + u8 spriteId; + + r0 = SCRIPT_READ_8(gBattleAnimScriptPtr + 1); + spriteId = obj_id_for_side_relative_to_move(r0); + if (spriteId != 0xFF) + { + gSprites[spriteId].invisible = FALSE; + } + gBattleAnimScriptPtr += 2; +} + +static void sub_807794C(void) +{ + u8 r7; + u8 r4; + u8 spriteId; + + 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 (r7 == 0) + { + r4 = battle_get_per_side_status_permutated(gUnknown_0202F7C8); + spriteId = obj_id_for_side_relative_to_move(0); + } + else + { + r4 = battle_get_per_side_status_permutated(gUnknown_0202F7C9); + spriteId = obj_id_for_side_relative_to_move(1); + } + if (spriteId != 0xFF) + { + gSprites[spriteId].invisible = FALSE; + if (r4 == 2) + gSprites[spriteId].oam.priority = 3; + if (r4 == 1) + sub_8076464(0); + else + sub_8076464(1); + } + } +} + +static void sub_80779FC(void) +{ + u8 r7; + u8 r4; + u8 spriteId; + + 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 (r7 == 0) + { + r4 = battle_get_per_side_status_permutated(gUnknown_0202F7C8); + spriteId = obj_id_for_side_relative_to_move(0); + } + else + { + r4 = battle_get_per_side_status_permutated(gUnknown_0202F7C9); + spriteId = obj_id_for_side_relative_to_move(1); + } + if (spriteId != 0xFF && r4 == 2) + { + gSprites[spriteId].oam.priority = 2; + } + } +} + +static void ma2F_stop_music(void) +{ + m4aMPlayStop(&gMPlay_SE1); + m4aMPlayStop(&gMPlay_SE2); + gBattleAnimScriptPtr++; +} -- cgit v1.2.3 From 099d1487fcb368144a18b008a9e6d39374885c30 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Mon, 16 Jan 2017 18:19:57 -0600 Subject: name battle anim command functions --- src/battle_anim.c | 138 +++++++++++++++++++++++++++--------------------------- 1 file changed, 69 insertions(+), 69 deletions(-) (limited to 'src/battle_anim.c') diff --git a/src/battle_anim.c b/src/battle_anim.c index 13d7a6012..9464b4949 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -136,11 +136,11 @@ static void sub_8076380(void); static void task_pA_ma0A_obj_to_bg_pal(u8); static void ScriptCmd_clearmonbg(void); static void sub_807672C(u8); -static void sub_80767C4(void); -static void ma23_8073484(void); +static void ScriptCmd_monbg_22(void); +static void ScriptCmd_clearmonbg_23(void); static void sub_80769A4(u8); static void ScriptCmd_setalpha(void); -static void sub_8076A78(void); +static void ScriptCmd_setbldcnt(void); static void ScriptCmd_blendoff(void); static void ScriptCmd_call(void); static void ScriptCmd_return(void); @@ -150,7 +150,7 @@ static void ScriptCmd_jumpif(void); static void ScriptCmd_jump(void); bool8 sub_8076BE0(void); static void ScriptCmd_fadetobg(void); -static void sub_8076C4C(void); +static void ScriptCmd_fadetobg_25(void); static void task_p5_load_battle_screen_elements(u8); static void sub_8076DB8(u16); static void dp01t_11_3_message_for_player_only(void); @@ -158,28 +158,28 @@ static void ScriptCmd_restorebg(void); static void ScriptCmd_waitbgfadeout(void); static void ScriptCmd_waitbgfadein(void); static void ScriptCmd_changebg(void); -static void ma19_08073BC8(void); -static void ma1A_8073C00(void); -static void ma1B_8073C2C(void); +static void ScriptCmd_panse_19(void); +static void ScriptCmd_setpan(void); +static void ScriptCmd_panse_1B(void); static void c3_08073CEC(u8); -static void sub_8077320(void); -static void sub_80773B4(void); -static void ma1C_8073ED0(void); +static void ScriptCmd_panse_26(void); +static void ScriptCmd_panse_27(void); +static void ScriptCmd_panse_1C(void); static void sub_80774FC(u8); -static void ma1D_08073FB4(void); +static void ScriptCmd_panse_1D(void); static void sub_80775CC(u8); -static void sub_8077610(void); -static void ma20_wait_for_something(void); -static void ma21_08074164(void); -static void sub_807775C(void); -static void sub_807779C(void); -static void sub_8077808(void); -static void sub_807784C(void); -static void ma2B_make_side_invisible(void); -static void ma2C_make_side_visible(void); -static void sub_807794C(void); -static void sub_80779FC(void); -static void ma2F_stop_music(void); +static void ScriptCmd_createtask_1F(void); +static void ScriptCmd_waitsound(void); +static void ScriptCmd_jumpvareq(void); +static void ScriptCmd_jumpunkcond(void); +static void ScriptCmd_monbgprio_28(void); +static void ScriptCmd_monbgprio_29(void); +static void ScriptCmd_monbgprio_2A(void); +static void ScriptCmd_invisible(void); +static void ScriptCmd_visible(void); +static void ScriptCmd_doublebattle_2D(void); +static void ScriptCmd_doublebattle_2E(void); +static void ScriptCmd_stopsound(void); static void (*const sScriptCmdTable[])(void) = { ScriptCmd_loadsprite, @@ -207,29 +207,29 @@ static void (*const sScriptCmdTable[])(void) = { ScriptCmd_waitbgfadeout, ScriptCmd_waitbgfadein, ScriptCmd_changebg, - ma19_08073BC8, - ma1A_8073C00, - ma1B_8073C2C, - ma1C_8073ED0, - ma1D_08073FB4, - sub_8076A78, - sub_8077610, - ma20_wait_for_something, - ma21_08074164, - sub_80767C4, - ma23_8073484, - sub_807775C, - sub_8076C4C, - sub_8077320, - sub_80773B4, - sub_807779C, - sub_8077808, - sub_807784C, - ma2B_make_side_invisible, - ma2C_make_side_visible, - sub_807794C, - sub_80779FC, - ma2F_stop_music, + ScriptCmd_panse_19, + ScriptCmd_setpan, + ScriptCmd_panse_1B, + ScriptCmd_panse_1C, + ScriptCmd_panse_1D, + ScriptCmd_setbldcnt, + ScriptCmd_createtask_1F, + ScriptCmd_waitsound, + ScriptCmd_jumpvareq, + ScriptCmd_monbg_22, + ScriptCmd_clearmonbg_23, + ScriptCmd_jumpunkcond, + ScriptCmd_fadetobg_25, + ScriptCmd_panse_26, + ScriptCmd_panse_27, + ScriptCmd_monbgprio_28, + ScriptCmd_monbgprio_29, + ScriptCmd_monbgprio_2A, + ScriptCmd_invisible, + ScriptCmd_visible, + ScriptCmd_doublebattle_2D, + ScriptCmd_doublebattle_2E, + ScriptCmd_stopsound, }; void sub_8075624(void) @@ -1179,7 +1179,7 @@ static void sub_807672C(u8 taskId) } } -static void sub_80767C4(void) +static void ScriptCmd_monbg_22(void) { u8 r5; u8 r4; @@ -1222,7 +1222,7 @@ static void sub_80767C4(void) gBattleAnimScriptPtr++; } -static void ma23_8073484(void) +static void ScriptCmd_clearmonbg_23(void) { u8 r5; u8 r6; @@ -1286,7 +1286,7 @@ static void ScriptCmd_setalpha(void) REG_BLDALPHA = r3 | r1; } -static void sub_8076A78(void) +static void ScriptCmd_setbldcnt(void) { u16 r3; u16 r1; @@ -1394,7 +1394,7 @@ static void ScriptCmd_fadetobg(void) gUnknown_0202F7C5 = 1; } -static void sub_8076C4C(void) +static void ScriptCmd_fadetobg_25(void) { u8 r8; u8 r7; @@ -1738,7 +1738,7 @@ s16 sub_807712C(s16 a, s16 b, s16 c) return var; } -static void ma19_08073BC8(void) +static void ScriptCmd_panse_19(void) { u16 r4; s8 r0; @@ -1750,7 +1750,7 @@ static void ma19_08073BC8(void) gBattleAnimScriptPtr += 3; } -static void ma1A_8073C00(void) +static void ScriptCmd_setpan(void) { s8 r0; @@ -1760,7 +1760,7 @@ static void ma1A_8073C00(void) gBattleAnimScriptPtr++; } -static void ma1B_8073C2C(void) +static void ScriptCmd_panse_1B(void) { u16 songNum; s8 r0; @@ -1927,7 +1927,7 @@ _0807731C: .4byte gUnknown_0202F7B3\n\ } #endif -static void sub_8077320(void) +static void ScriptCmd_panse_26(void) { u16 r8; s8 r4; @@ -1953,7 +1953,7 @@ static void sub_8077320(void) gBattleAnimScriptPtr += 6; } -static void sub_80773B4(void) +static void ScriptCmd_panse_27(void) { u16 r9; u8 r4; @@ -1985,7 +1985,7 @@ static void sub_80773B4(void) gBattleAnimScriptPtr += 6; } -static void ma1C_8073ED0(void) +static void ScriptCmd_panse_1C(void) { u16 r5; u8 r0; @@ -2036,7 +2036,7 @@ static void sub_80774FC(u8 taskId) } } -static void ma1D_08073FB4(void) +static void ScriptCmd_panse_1D(void) { u16 r5; u8 r0; @@ -2071,7 +2071,7 @@ static void sub_80775CC(u8 taskId) } } -static void sub_8077610(void) +static void ScriptCmd_createtask_1F(void) { TaskFunc func; u8 numArgs; @@ -2093,7 +2093,7 @@ static void sub_8077610(void) gUnknown_0202F7B3++; } -static void ma20_wait_for_something(void) +static void ScriptCmd_waitsound(void) { if (gUnknown_0202F7B3 != 0) { @@ -2122,7 +2122,7 @@ static void ma20_wait_for_something(void) } } -static void ma21_08074164(void) +static void ScriptCmd_jumpvareq(void) { u8 r2; s16 r1; @@ -2142,7 +2142,7 @@ static void ma21_08074164(void) } } -static void sub_807775C(void) +static void ScriptCmd_jumpunkcond(void) { u8 *addr; @@ -2158,7 +2158,7 @@ static void sub_807775C(void) } } -static void sub_807779C(void) +static void ScriptCmd_monbgprio_28(void) { u8 r2; u8 r0; @@ -2178,7 +2178,7 @@ static void sub_807779C(void) } } -static void sub_8077808(void) +static void ScriptCmd_monbgprio_29(void) { gBattleAnimScriptPtr++; if (!sub_8076BE0()) @@ -2188,7 +2188,7 @@ static void sub_8077808(void) } } -static void sub_807784C(void) +static void ScriptCmd_monbgprio_2A(void) { u8 r6; u8 r4; @@ -2211,7 +2211,7 @@ static void sub_807784C(void) } } -static void ma2B_make_side_invisible(void) +static void ScriptCmd_invisible(void) { u8 r0; u8 spriteId; @@ -2225,7 +2225,7 @@ static void ma2B_make_side_invisible(void) gBattleAnimScriptPtr += 2; } -static void ma2C_make_side_visible(void) +static void ScriptCmd_visible(void) { u8 r0; u8 spriteId; @@ -2239,7 +2239,7 @@ static void ma2C_make_side_visible(void) gBattleAnimScriptPtr += 2; } -static void sub_807794C(void) +static void ScriptCmd_doublebattle_2D(void) { u8 r7; u8 r4; @@ -2273,7 +2273,7 @@ static void sub_807794C(void) } } -static void sub_80779FC(void) +static void ScriptCmd_doublebattle_2E(void) { u8 r7; u8 r4; @@ -2301,7 +2301,7 @@ static void sub_80779FC(void) } } -static void ma2F_stop_music(void) +static void ScriptCmd_stopsound(void) { m4aMPlayStop(&gMPlay_SE1); m4aMPlayStop(&gMPlay_SE2); -- cgit v1.2.3 From 801877553db80267a62c0c3c0b2805b6716d1ef9 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Tue, 17 Jan 2017 14:38:44 +0100 Subject: Remove trailing whitespace --- src/battle_anim.c | 152 +++++++++++++++++++++++++++--------------------------- 1 file changed, 76 insertions(+), 76 deletions(-) (limited to 'src/battle_anim.c') diff --git a/src/battle_anim.c b/src/battle_anim.c index 9464b4949..90a53a412 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -235,7 +235,7 @@ static void (*const sScriptCmdTable[])(void) = { void sub_8075624(void) { s32 i; - + gUnknown_0202F7B0 = 0; gUnknown_0202F7B1 = 0; gUnknown_0202F7B2 = 0; @@ -268,7 +268,7 @@ void move_anim_start_t1(u16 a) void move_something(const u8 *const moveAnims[], u16 b, u8 c) { s32 i; - + if (sub_8076BE0() == 0) { sub_8079E24(); @@ -339,7 +339,7 @@ void move_anim_related_task_del(u8 taskId) static void sub_8075940(u16 a) { s32 i; - + for (i = 0; i < 8; i++) { if (gUnknown_03004B10[i] == 0xFFFF) @@ -353,7 +353,7 @@ static void sub_8075940(u16 a) static void sub_8075970(u16 a) { s32 i; - + for (i = 0; i < 8; i++) { if (gUnknown_03004B10[i] == a) @@ -388,7 +388,7 @@ static void sub_80759D0(void) static void ScriptCmd_loadsprite(void) { u16 r4; - + gBattleAnimScriptPtr++; r4 = SCRIPT_READ_16(gBattleAnimScriptPtr); LoadCompressedObjectPic(&gBattleAnimPicTable[r4 - 10000]); @@ -402,7 +402,7 @@ static void ScriptCmd_loadsprite(void) static void ScriptCmd_unloadsprite(void) { u16 r4; - + gBattleAnimScriptPtr++; r4 = SCRIPT_READ_16(gBattleAnimScriptPtr); FreeSpriteTilesByTag(gBattleAnimPicTable[r4 - 10000].tag); @@ -422,7 +422,7 @@ static void ScriptCmd_sprite(void) u16 r6; u8 r2; s8 r1; - + gBattleAnimScriptPtr++; r7 = (struct SpriteTemplate *)(SCRIPT_READ_32(gBattleAnimScriptPtr)); gBattleAnimScriptPtr += 4; @@ -444,7 +444,7 @@ static void ScriptCmd_sprite(void) r4 = -r4; _r0 = sub_8079E90(gUnknown_0202F7C9); r1 = r4; - + } else { @@ -459,7 +459,7 @@ static void ScriptCmd_sprite(void) r6 = _r0 + r1; if ((s16)r6 < 3) r6 = 3; - + r4 = sub_8077ABC(gUnknown_0202F7C9, 2); r2 = sub_8077ABC(gUnknown_0202F7C9, 3); CreateSpriteAndAnimate(r7, r4, r2, r6); @@ -603,7 +603,7 @@ static void ScriptCmd_createtask(void) u8 taskId; u8 numArgs; s32 i; - + gBattleAnimScriptPtr++; taskFunc = (TaskFunc)SCRIPT_READ_32(gBattleAnimScriptPtr); gBattleAnimScriptPtr += 4; @@ -656,7 +656,7 @@ static void ScriptCmd_end(void) { s32 i; int zero = 0; - + if (gUnknown_0202F7B2 != 0 || gUnknown_0202F7B3 != 0 || gUnknown_0202F7C2[0] != 0xFF || gUnknown_0202F7C2[1] != 0xFF) { @@ -664,7 +664,7 @@ static void ScriptCmd_end(void) gUnknown_0202F7B0 = 1; return; } - + if (IsSEPlaying()) { gUnknown_03004AF0++; @@ -716,7 +716,7 @@ static void ScriptCmd_monbg(void) u8 r7; u16 r4; u8 taskId; - + gBattleAnimScriptPtr++; r6 = SCRIPT_READ_8(gBattleAnimScriptPtr); if (r6 == 0) @@ -754,7 +754,7 @@ static void ScriptCmd_monbg(void) gTasks[taskId].data[5] = r7; gTasks[taskId].data[6] = r5; gUnknown_0202F7C2[0] = taskId; - + } r5 ^= 2; if (r6 > 1 && b_side_obj__get_some_boolean(r5)) @@ -881,7 +881,7 @@ void sub_8076034(u8 a, u8 b) volatile u8 pointlessZero; u16 *addr2; u8 spriteId; - + if (b == 0) { struct UnknownStruct2 s; @@ -889,7 +889,7 @@ void sub_8076034(u8 a, u8 b) u32 size; u8 r2; u16 *addr3; - + sub_8078914(&s); addr = s.unk0; size = 0x2000; @@ -908,25 +908,25 @@ void sub_8076034(u8 a, u8 b) pointlessZero = 0; addr2 = (void *)s.unk4; DmaFill16(3, 0xFF, addr2, 0x1000); - + REG_BG1CNT_BITFIELD.priority = 2; REG_BG1CNT_BITFIELD.screenSize = 1; REG_BG1CNT_BITFIELD.areaOverflowMode = 0; - + spriteId = gUnknown_02024BE0[a]; gUnknown_030042C0 = -(gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x) + 32; if (sub_8076BE0() != 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; - + REG_BG1HOFS = gUnknown_030042C0; REG_BG1VOFS = gUnknown_030041B4; - + LoadPalette(gPlttBufferUnfaded + 0x100 + a * 16, s.unk8 * 16, 32); addr3 = (u16 *)PLTT + s.unk8 * 16; DmaCopy32(3, gPlttBufferUnfaded + 0x100 + a * 16, addr3, 32); - + if (sub_8076BE0() != 0) r2 = 0; else @@ -940,7 +940,7 @@ void sub_8076034(u8 a, u8 b) u8 *addr; u32 size; u16 *addr3; - + addr = (void *)(VRAM + 0x6000); size = 0x2000; while (1) @@ -958,23 +958,23 @@ void sub_8076034(u8 a, u8 b) pointlessZero = 0; addr2 = (void *)(VRAM + 0xF000); DmaFill32(3, 0, addr2, 0x800); - + REG_BG2CNT_BITFIELD.priority = 2; REG_BG2CNT_BITFIELD.screenSize = 1; REG_BG2CNT_BITFIELD.areaOverflowMode = 0; - + spriteId = gUnknown_02024BE0[a]; gUnknown_03004288 = -(gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x) + 32; gUnknown_03004280 = -(gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y) + 32; gSprites[gUnknown_02024BE0[a]].invisible = TRUE; - + REG_BG2HOFS = gUnknown_03004288; REG_BG2VOFS = gUnknown_03004280; - + LoadPalette(gPlttBufferUnfaded + 0x100 + a * 16, 0x90, 32); addr3 = (void *)(PLTT + 0x120); DmaCopy32(3, gPlttBufferUnfaded + 0x100 + a * 16, addr3, 32); - + sub_80E4EF8(0, 0, battle_get_per_side_status(a), 9, 0x6000, 0x1E, REG_BG2CNT_BITFIELD.charBaseBlock); } } @@ -985,7 +985,7 @@ static void sub_8076380(void) int j; struct UnknownStruct2 s; u16 *ptr; - + if (sub_80AEB1C(EWRAM_19348) != 0) { sub_8078914(&s); @@ -995,7 +995,7 @@ static void sub_8076380(void) for (j = 0; j < 4; j++) { u16 temp = ptr[j + i * 32]; - + ptr[j + i * 32] = ptr[7 - j + i * 32]; ptr[7 - j + i * 32] = temp; } @@ -1013,7 +1013,7 @@ void sub_80763FC(u16 a, u16 *b, u32 c, u8 d) u8 i; u8 j; u32 r9; - + if (d == 0) r9 = 32; else @@ -1032,12 +1032,12 @@ void sub_8076464(u8 a) u32 size; volatile u8 pointlessZero; struct UnknownStruct2 s; - + sub_8078914(&s); if (a == 0 || sub_8076BE0() != 0) { u16 *addr2; - + addr = s.unk0; size = 0x2000; while (1) @@ -1061,7 +1061,7 @@ void sub_8076464(u8 a) else { u16 *addr2; - + addr = (void *)(VRAM + 0x6000); size = 0x2000; while (1) @@ -1091,7 +1091,7 @@ static void task_pA_ma0A_obj_to_bg_pal(u8 taskId) s16 r3; s16 r2; struct UnknownStruct2 s; - + r4 = gTasks[taskId].data[0]; r6 = gTasks[taskId].data[6]; sub_8078914(&s); @@ -1101,7 +1101,7 @@ static void task_pA_ma0A_obj_to_bg_pal(u8 taskId) { u16 *src; u16 *dst; - + gUnknown_030042C0 = r3 + gTasks[taskId].data[3]; gUnknown_030041B4 = r2 + gTasks[taskId].data[4]; src = gPlttBufferFaded + 0x100 + r6 * 16; @@ -1112,7 +1112,7 @@ static void task_pA_ma0A_obj_to_bg_pal(u8 taskId) { u16 *src; u16 *dst; - + gUnknown_03004288 = r3 + gTasks[taskId].data[3]; gUnknown_03004280 = r2 + gTasks[taskId].data[4]; src = gPlttBufferFaded + 0x100 + r6 * 16; @@ -1126,7 +1126,7 @@ static void ScriptCmd_clearmonbg(void) u8 r4; u8 r5; u8 taskId; - + gBattleAnimScriptPtr++; r4 = SCRIPT_READ_8(gBattleAnimScriptPtr); if (r4 == 0) @@ -1153,7 +1153,7 @@ static void sub_807672C(u8 taskId) { u8 var; u8 r4; - + gTasks[taskId].data[1]++; if (gTasks[taskId].data[1] != 1) { @@ -1185,7 +1185,7 @@ static void ScriptCmd_monbg_22(void) u8 r4; u8 r0; u8 r1; - + gBattleAnimScriptPtr++; r5 = SCRIPT_READ_8(gBattleAnimScriptPtr); if (r5 == 0) @@ -1227,7 +1227,7 @@ static void ScriptCmd_clearmonbg_23(void) u8 r5; u8 r6; u8 taskId; - + gBattleAnimScriptPtr++; r5 = SCRIPT_READ_8(gBattleAnimScriptPtr); if (r5 == 0) @@ -1255,7 +1255,7 @@ static void sub_80769A4(u8 taskId) u8 r0; u8 r4; u8 r5; - + gTasks[taskId].data[1]++; if (gTasks[taskId].data[1] != 1) { @@ -1278,7 +1278,7 @@ static void ScriptCmd_setalpha(void) { u16 r3; u16 r1; - + gBattleAnimScriptPtr++; r3 = *(gBattleAnimScriptPtr++); r1 = *(gBattleAnimScriptPtr++) << 8; @@ -1290,7 +1290,7 @@ static void ScriptCmd_setbldcnt(void) { u16 r3; u16 r1; - + gBattleAnimScriptPtr++; r3 = *(gBattleAnimScriptPtr++); r1 = *(gBattleAnimScriptPtr++) << 8; @@ -1307,7 +1307,7 @@ static void ScriptCmd_blendoff(void) static void ScriptCmd_call(void) { u32 addr; - + gBattleAnimScriptPtr++; gBattleAnimScriptRetAddr = gBattleAnimScriptPtr + 4; addr = SCRIPT_READ_32(gBattleAnimScriptPtr); @@ -1324,7 +1324,7 @@ static void ScriptCmd_setvar(void) const u8 *addr = gBattleAnimScriptPtr; u16 r4; u8 r2; - + gBattleAnimScriptPtr++; r2 = SCRIPT_READ_8(gBattleAnimScriptPtr); gBattleAnimScriptPtr++; @@ -1336,7 +1336,7 @@ static void ScriptCmd_setvar(void) static void ScriptCmd_ifelse(void) { u32 addr; - + gBattleAnimScriptPtr++; if (gUnknown_0202F7C4 & 1) gBattleAnimScriptPtr += 4; @@ -1348,7 +1348,7 @@ static void ScriptCmd_jumpif(void) { u8 r1; u32 addr; - + gBattleAnimScriptPtr++; r1 = SCRIPT_READ_8(gBattleAnimScriptPtr); gBattleAnimScriptPtr++; @@ -1366,7 +1366,7 @@ static void ScriptCmd_jumpif(void) static void ScriptCmd_jump(void) { u32 addr; - + gBattleAnimScriptPtr++; addr = SCRIPT_READ_32(gBattleAnimScriptPtr); gBattleAnimScriptPtr = (u8 *)addr; @@ -1385,7 +1385,7 @@ static void ScriptCmd_fadetobg(void) { u8 r4; u8 taskId; - + gBattleAnimScriptPtr++; r4 = SCRIPT_READ_8(gBattleAnimScriptPtr); gBattleAnimScriptPtr++; @@ -1400,7 +1400,7 @@ static void ScriptCmd_fadetobg_25(void) u8 r7; u8 r6; u8 taskId; - + gBattleAnimScriptPtr++; r8 = gBattleAnimScriptPtr[0]; r7 = gBattleAnimScriptPtr[1]; @@ -1434,7 +1434,7 @@ static void task_p5_load_battle_screen_elements(u8 taskId) else if (gTasks[taskId].data[10] == 2) { s16 data0 = (u16)gTasks[taskId].data[0]; - + if (data0 == -1) dp01t_11_3_message_for_player_only(); else @@ -1459,7 +1459,7 @@ static void sub_8076DB8(u16 a) 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; @@ -1487,7 +1487,7 @@ static void dp01t_11_3_message_for_player_only(void) static void ScriptCmd_restorebg(void) { u8 taskId; - + gBattleAnimScriptPtr++; taskId = CreateTask(task_p5_load_battle_screen_elements, 5); gTasks[taskId].data[0] = 0xFFFF; @@ -1547,7 +1547,7 @@ s8 sub_8076F98(s8 a) if (a < -0x40) a = 0xC0; return a; - } + } } //_08077004 else @@ -1559,7 +1559,7 @@ s8 sub_8076F98(s8 a) //_08077042 else { - + } //_0807706C } @@ -1717,7 +1717,7 @@ s8 sub_8077094(s8 a) s16 sub_8077104(s16 a) { s16 var = a; - + if (var > 63) var = 63; else if (var < -64) @@ -1728,7 +1728,7 @@ s16 sub_8077104(s16 a) s16 sub_807712C(s16 a, s16 b, s16 c) { u16 var; - + if (a < b) var = ((c < 0) ? -c : c); else if (a > b) @@ -1742,7 +1742,7 @@ static void ScriptCmd_panse_19(void) { u16 r4; s8 r0; - + gBattleAnimScriptPtr++; r4 = SCRIPT_READ_16(gBattleAnimScriptPtr); r0 = SCRIPT_READ_8(gBattleAnimScriptPtr + 2); @@ -1753,7 +1753,7 @@ static void ScriptCmd_panse_19(void) static void ScriptCmd_setpan(void) { s8 r0; - + gBattleAnimScriptPtr++; r0 = SCRIPT_READ_8(gBattleAnimScriptPtr); SE12PanpotControl(sub_8076F98(r0)); @@ -1770,7 +1770,7 @@ static void ScriptCmd_panse_1B(void) s8 panning; s8 r8; u8 taskId; - + gBattleAnimScriptPtr++; songNum = SCRIPT_READ_16(gBattleAnimScriptPtr); r0 = SCRIPT_READ_8(gBattleAnimScriptPtr + 2); @@ -1800,7 +1800,7 @@ static void c3_08073CEC(u8 taskId) s16 r3; s16 r4; int foo; - + r0 = gTasks[taskId].data[8]; gTasks[taskId].data[8]++; if (r0 >= gTasks[taskId].data[3]) @@ -1935,7 +1935,7 @@ static void ScriptCmd_panse_26(void) s8 r6; u8 r10; u8 taskId; - + gBattleAnimScriptPtr++; r8 = SCRIPT_READ_16(gBattleAnimScriptPtr); r4 = SCRIPT_READ_8(gBattleAnimScriptPtr + 2); @@ -1964,7 +1964,7 @@ static void ScriptCmd_panse_27(void) s8 r5; s8 r4_2; u8 taskId; - + gBattleAnimScriptPtr++; r9 = SCRIPT_READ_16(gBattleAnimScriptPtr); r0 = SCRIPT_READ_8(gBattleAnimScriptPtr + 2); @@ -1993,7 +1993,7 @@ static void ScriptCmd_panse_1C(void) u8 r9; s8 r4; u8 taskId; - + gBattleAnimScriptPtr++; r5 = SCRIPT_READ_16(gBattleAnimScriptPtr); r0 = SCRIPT_READ_8(gBattleAnimScriptPtr + 2); @@ -2017,7 +2017,7 @@ static void sub_80774FC(u8 taskId) u16 r0; s8 r1; u8 r4; - + data8 = gTasks[taskId].data[8]; gTasks[taskId].data[8]++; if (data8 >= gTasks[taskId].data[2]) @@ -2043,7 +2043,7 @@ static void ScriptCmd_panse_1D(void) u8 r8; s8 r4; u8 taskId; - + gBattleAnimScriptPtr++; r5 = SCRIPT_READ_16(gBattleAnimScriptPtr); r0 = SCRIPT_READ_8(gBattleAnimScriptPtr + 2); @@ -2060,7 +2060,7 @@ static void ScriptCmd_panse_1D(void) static void sub_80775CC(u8 taskId) { s16 r0; - + r0 = gTasks[taskId].data[2]; gTasks[taskId].data[2]--; if (r0 <= 0) @@ -2077,7 +2077,7 @@ static void ScriptCmd_createtask_1F(void) u8 numArgs; int i; u8 taskId; - + gBattleAnimScriptPtr++; func = (TaskFunc)SCRIPT_READ_32(gBattleAnimScriptPtr); gBattleAnimScriptPtr += 4; @@ -2127,7 +2127,7 @@ static void ScriptCmd_jumpvareq(void) u8 r2; s16 r1; u8 *addr; - + gBattleAnimScriptPtr++; r2 = SCRIPT_READ_8(gBattleAnimScriptPtr); r1 = SCRIPT_READ_16(gBattleAnimScriptPtr + 1); @@ -2145,7 +2145,7 @@ static void ScriptCmd_jumpvareq(void) static void ScriptCmd_jumpunkcond(void) { u8 *addr; - + gBattleAnimScriptPtr++; if (sub_8076BE0()) { @@ -2163,7 +2163,7 @@ static void ScriptCmd_monbgprio_28(void) u8 r2; u8 r0; u8 r4; - + r2 = SCRIPT_READ_8(gBattleAnimScriptPtr + 1); gBattleAnimScriptPtr += 2; if (r2 != 0) @@ -2193,7 +2193,7 @@ static void ScriptCmd_monbgprio_2A(void) u8 r6; u8 r4; u8 r0; - + r6 = SCRIPT_READ_8(gBattleAnimScriptPtr + 1); gBattleAnimScriptPtr += 2; if (battle_side_get_owner(gUnknown_0202F7C8) != battle_side_get_owner(gUnknown_0202F7C9)) @@ -2215,7 +2215,7 @@ static void ScriptCmd_invisible(void) { u8 r0; u8 spriteId; - + r0 = SCRIPT_READ_8(gBattleAnimScriptPtr + 1); spriteId = obj_id_for_side_relative_to_move(r0); if (spriteId != 0xFF) @@ -2229,7 +2229,7 @@ static void ScriptCmd_visible(void) { u8 r0; u8 spriteId; - + r0 = SCRIPT_READ_8(gBattleAnimScriptPtr + 1); spriteId = obj_id_for_side_relative_to_move(r0); if (spriteId != 0xFF) @@ -2244,7 +2244,7 @@ static void ScriptCmd_doublebattle_2D(void) u8 r7; u8 r4; u8 spriteId; - + r7 = SCRIPT_READ_8(gBattleAnimScriptPtr + 1); gBattleAnimScriptPtr += 2; if (!sub_8076BE0() && IsDoubleBattle() @@ -2278,7 +2278,7 @@ static void ScriptCmd_doublebattle_2E(void) u8 r7; u8 r4; u8 spriteId; - + r7 = SCRIPT_READ_8(gBattleAnimScriptPtr + 1); gBattleAnimScriptPtr += 2; if (!sub_8076BE0() && IsDoubleBattle() -- cgit v1.2.3 From 56f432fca2d552d8f0cda1a7fbab8aeb7d926fa2 Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Wed, 18 Jan 2017 16:35:34 -0600 Subject: start decompiling rom3 (#198) * start decompiling rom3 * newline * decompile sub_800BA78 --- src/battle_anim.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/battle_anim.c') diff --git a/src/battle_anim.c b/src/battle_anim.c index 90a53a412..264a1dd9e 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -232,7 +232,7 @@ static void (*const sScriptCmdTable[])(void) = { ScriptCmd_stopsound, }; -void sub_8075624(void) +void battle_anim_clear_some_data(void) { s32 i; -- cgit v1.2.3 From c22eb152ced1fe3bc8f9f0342a47d429bfa4c5a0 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Thu, 2 Feb 2017 00:50:47 -0500 Subject: label, document, reorganize, and clean up battle_ai.c (#228) label, document, reorganize, and clean up battle_ai.c --- src/battle_anim.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/battle_anim.c') diff --git a/src/battle_anim.c b/src/battle_anim.c index 264a1dd9e..4cc337a0c 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -59,8 +59,8 @@ struct UnknownStruct3 extern u8 unk_2000000[]; extern u16 gUnknown_02024A6A[4]; extern u8 gUnknown_02024BE0[]; -extern u8 gUnknown_02024C07; -extern u8 gUnknown_02024C08; +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; @@ -260,8 +260,8 @@ void battle_anim_clear_some_data(void) void move_anim_start_t1(u16 a) { - gUnknown_0202F7C8 = gUnknown_02024C07; - gUnknown_0202F7C9 = gUnknown_02024C08; + gUnknown_0202F7C8 = gPlayerMonIndex; + gUnknown_0202F7C9 = gEnemyMonIndex; move_something(gBattleAnims_Moves, a, 1); } -- cgit v1.2.3 From 3463dadfe0c6a945c6fcc9d7b3379a5185e71cfa Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Thu, 2 Mar 2017 00:00:56 +0000 Subject: fix weird cases of ROM not matching --- src/battle_anim.c | 1 + 1 file changed, 1 insertion(+) (limited to 'src/battle_anim.c') diff --git a/src/battle_anim.c b/src/battle_anim.c index 4cc337a0c..f0536d7ea 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -81,6 +81,7 @@ EWRAM_DATA u8 gUnknown_0202F7C8 = 0; EWRAM_DATA u8 gUnknown_0202F7C9 = 0; EWRAM_DATA u16 gUnknown_0202F7CA[4] = {0}; EWRAM_DATA u8 gUnknown_0202F7D2 = 0; +EWRAM_DATA u8 gUnknown_0202F7D3 = 0; // not used, but needed to match some rare instances of ROM not matching due to missing u8 value. extern u16 gUnknown_030041B4; extern u16 gUnknown_03004200; extern u16 gUnknown_03004240; -- cgit v1.2.3 From 4cd4e80ce9583a69af27084bb521c68a913ce692 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sun, 5 Mar 2017 04:47:39 +0000 Subject: replace phantom variable fix with proper fix. --- src/battle_anim.c | 1 - 1 file changed, 1 deletion(-) (limited to 'src/battle_anim.c') diff --git a/src/battle_anim.c b/src/battle_anim.c index f0536d7ea..4cc337a0c 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -81,7 +81,6 @@ EWRAM_DATA u8 gUnknown_0202F7C8 = 0; EWRAM_DATA u8 gUnknown_0202F7C9 = 0; EWRAM_DATA u16 gUnknown_0202F7CA[4] = {0}; EWRAM_DATA u8 gUnknown_0202F7D2 = 0; -EWRAM_DATA u8 gUnknown_0202F7D3 = 0; // not used, but needed to match some rare instances of ROM not matching due to missing u8 value. extern u16 gUnknown_030041B4; extern u16 gUnknown_03004200; extern u16 gUnknown_03004240; -- cgit v1.2.3 From 6035511c139549a0291b6b3d43b9b080f792b2b6 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sat, 18 Mar 2017 04:00:15 +0100 Subject: reorganize and add new headers for many files --- src/battle_anim.c | 54 +----------------------------------------------------- 1 file changed, 1 insertion(+), 53 deletions(-) (limited to 'src/battle_anim.c') diff --git a/src/battle_anim.c b/src/battle_anim.c index 4cc337a0c..c381f4f87 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -6,55 +6,7 @@ #include "sound.h" #include "sprite.h" #include "task.h" - -#define SCRIPT_READ_8(ptr) ((ptr)[0]) -#define SCRIPT_READ_16(ptr) ((ptr)[0] | ((ptr)[1] << 8)) -#define SCRIPT_READ_32(ptr) ((ptr)[0] + ((ptr)[1] << 8) + ((ptr)[2] << 16) + ((ptr)[3] << 24)) - -#define REG_BGnCNT_BITFIELD(n) (*(struct BGCntrlBitfield *)REG_ADDR_BG##n##CNT) -#define REG_BG1CNT_BITFIELD REG_BGnCNT_BITFIELD(1) -#define REG_BG2CNT_BITFIELD REG_BGnCNT_BITFIELD(2) - -#define EWRAM_14800 ((u16 *)(unk_2000000 + 0x14800)) -#define EWRAM_17800 ((struct UnknownStruct1 *)(unk_2000000 + 0x17800)) -#define EWRAM_17810 ((struct UnknownStruct3 *)(unk_2000000 + 0x17810)) -#define EWRAM_18000 ((u16 *)(unk_2000000 + 0x18000)) -#define EWRAM_19348 (*(u16 *)(unk_2000000 + 0x19348)) - -struct BGCntrlBitfield -{ - volatile u16 priority:2; - volatile u16 charBaseBlock:2; - volatile u16 field_0_2:4; - volatile u16 field_1_0:5; - volatile u16 areaOverflowMode:1; - volatile u16 screenSize:2; -}; - -struct BattleAnimBackground -{ - void *image; - void *palette; - void *tilemap; -}; - -struct UnknownStruct1 -{ - u8 unk0; -}; - -struct UnknownStruct2 -{ - void *unk0; - u16 *unk4; - u8 unk8; -}; - -struct UnknownStruct3 -{ - u8 unk0; - u8 filler1[0xB]; -}; +#include "battle_anim.h" extern u8 unk_2000000[]; extern u16 gUnknown_02024A6A[4]; @@ -117,7 +69,6 @@ extern void sub_800D7B8(void); extern u8 obj_id_for_side_relative_to_move(); extern u8 battle_get_per_side_status_permutated(); -void move_something(const u8 *const moveAnims[], u16 b, u8 c); static void sub_80759D0(void); static void ScriptCmd_loadsprite(void); static void ScriptCmd_unloadsprite(void); @@ -130,8 +81,6 @@ static void ScriptCmd_hang2(void); static void ScriptCmd_end(void); static void ScriptCmd_playse(void); static void ScriptCmd_monbg(void); -bool8 b_side_obj__get_some_boolean(u8 a); -void sub_8076034(u8, u8); static void sub_8076380(void); static void task_pA_ma0A_obj_to_bg_pal(u8); static void ScriptCmd_clearmonbg(void); @@ -148,7 +97,6 @@ static void ScriptCmd_setvar(void); static void ScriptCmd_ifelse(void); static void ScriptCmd_jumpif(void); static void ScriptCmd_jump(void); -bool8 sub_8076BE0(void); static void ScriptCmd_fadetobg(void); static void ScriptCmd_fadetobg_25(void); static void task_p5_load_battle_screen_elements(u8); -- cgit v1.2.3 From ddc846fa6a0d9a13cfba6f52488a66f6f4562a2d Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Thu, 27 Apr 2017 15:43:31 +0200 Subject: Sort includes --- src/battle_anim.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/battle_anim.c') diff --git a/src/battle_anim.c b/src/battle_anim.c index c381f4f87..a18453fa1 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -1,4 +1,5 @@ #include "global.h" +#include "battle_anim.h" #include "asm.h" #include "decompress.h" #include "m4a.h" @@ -6,7 +7,6 @@ #include "sound.h" #include "sprite.h" #include "task.h" -#include "battle_anim.h" extern u8 unk_2000000[]; extern u16 gUnknown_02024A6A[4]; -- cgit v1.2.3 From 7f03ba4951c5045274dab3f2a3de8e8d498b8df3 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Thu, 4 May 2017 00:37:07 +0000 Subject: 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 --- src/battle_anim.c | 461 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 241 insertions(+), 220 deletions(-) (limited to 'src/battle_anim.c') 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) -- cgit v1.2.3 From c26ecaec0fbb5f322fd7f08dbf4e96082a33371e Mon Sep 17 00:00:00 2001 From: YamaArashi Date: Wed, 3 May 2017 18:16:31 -0700 Subject: clean up whitespace --- src/battle_anim.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/battle_anim.c') diff --git a/src/battle_anim.c b/src/battle_anim.c index 89798019c..b9aa5b898 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -645,7 +645,7 @@ static void ScriptCmd_end(void) m4aMPlayStop(&gMPlay_SE2); } } - + // the SE has halted, so set the SE Frame Counter to 0 and continue. gSoundAnimFramesToWait = 0; -- cgit v1.2.3 From 53a02e080f973071a92c141c031eb912f6ad119d Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Tue, 9 May 2017 18:50:48 +0200 Subject: Decompile some slot_machine functions --- src/battle_anim.c | 1 - 1 file changed, 1 deletion(-) (limited to 'src/battle_anim.c') diff --git a/src/battle_anim.c b/src/battle_anim.c index b9aa5b898..bdb34365f 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -65,7 +65,6 @@ extern u8 sub_8078874(u8); extern void sub_8078914(); extern u8 sub_80AEB1C(); extern void sub_80E4EF8(int, int, int, int, u16, u8, int); -extern void sub_800D238(); extern u8 sub_80789BC(); extern void sub_80AB2AC(void); extern void sub_800D7B8(void); -- cgit v1.2.3 From 4d2b22a899c11dfcacfec6889968ab01655a3fe3 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Fri, 26 May 2017 14:53:51 +0200 Subject: Add headers --- src/battle_anim.c | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) (limited to 'src/battle_anim.c') diff --git a/src/battle_anim.c b/src/battle_anim.c index bdb34365f..ee9bc003d 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -1,6 +1,11 @@ +#include "rom_8077ABC.h" +#include "battle_interface.h" +#include "battle_anim_80CA710.h" +#include "contest.h" +#include "main.h" +#include "battle.h" #include "global.h" #include "battle_anim.h" -#include "asm.h" #include "decompress.h" #include "m4a.h" #include "palette.h" @@ -57,20 +62,6 @@ extern const struct SpriteSheet gBattleAnimPicTable[]; extern const struct SpritePalette gBattleAnimPaletteTable[]; extern const struct BattleAnimBackground gBattleAnimBackgroundTable[]; -extern void sub_8079E24(); -extern void sub_8043EB4(); -extern u8 sub_8079E90(); -extern u8 sub_8077ABC(); -extern u8 sub_8078874(u8); -extern void sub_8078914(); -extern u8 sub_80AEB1C(); -extern void sub_80E4EF8(int, int, int, int, u16, u8, int); -extern u8 sub_80789BC(); -extern void sub_80AB2AC(void); -extern void sub_800D7B8(void); -extern u8 obj_id_for_side_relative_to_move(); -extern u8 battle_get_per_side_status_permutated(); - static void RunAnimScriptCommand(void); static void ScriptCmd_loadsprite(void); static void ScriptCmd_unloadsprite(void); -- cgit v1.2.3 From f26daa3d6954d2db3a7c44b79d319a7a084462c2 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Fri, 26 May 2017 15:01:42 +0200 Subject: Sort includes --- src/battle_anim.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src/battle_anim.c') diff --git a/src/battle_anim.c b/src/battle_anim.c index ee9bc003d..90e5c97c3 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -1,14 +1,14 @@ -#include "rom_8077ABC.h" -#include "battle_interface.h" -#include "battle_anim_80CA710.h" -#include "contest.h" -#include "main.h" -#include "battle.h" #include "global.h" #include "battle_anim.h" +#include "battle.h" +#include "battle_anim_80CA710.h" +#include "battle_interface.h" +#include "contest.h" #include "decompress.h" #include "m4a.h" +#include "main.h" #include "palette.h" +#include "rom_8077ABC.h" #include "sound.h" #include "sprite.h" #include "task.h" -- cgit v1.2.3 From 102f5b1e15e7295e30a3cebfbbad3c8af4cc1d37 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Tue, 20 Jun 2017 05:46:48 +0200 Subject: Battle labels named (#333) * Changed battle labels --- src/battle_anim.c | 120 +++++++++++++++++++++++++++--------------------------- 1 file changed, 60 insertions(+), 60 deletions(-) (limited to 'src/battle_anim.c') diff --git a/src/battle_anim.c b/src/battle_anim.c index 90e5c97c3..cc856d5cd 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -17,10 +17,10 @@ #define GET_TRUE_SPRITE_INDEX(i) (i - 10000) extern u8 unk_2000000[]; -extern u16 gUnknown_02024A6A[4]; -extern u8 gUnknown_02024BE0[]; -extern u8 gPlayerMonIndex; -extern u8 gEnemyMonIndex; +extern u16 gBattlePartyID[4]; +extern u8 gObjectBankIDs[]; +extern u8 gBankAttacker; +extern u8 gBankTarget; EWRAM_DATA const u8 *gBattleAnimScriptPtr = NULL; EWRAM_DATA const u8 *gBattleAnimScriptRetAddr = NULL; EWRAM_DATA void (*gAnimScriptCallback)(void) = NULL; @@ -28,11 +28,11 @@ 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 u32 gDisableStructMoveAnim = 0; +EWRAM_DATA u32 gMoveDmgMoveAnim = 0; +EWRAM_DATA u16 gMovePowerMoveAnim = 0; +EWRAM_DATA u8 gHappinessMoveAnim = 0; +EWRAM_DATA u16 gWeatherMoveAnim = 0; EWRAM_DATA u8 gMonAnimTaskIdArray[2] = {0}; EWRAM_DATA u8 gUnknown_0202F7C4 = 0; EWRAM_DATA u8 gUnknown_0202F7C5 = 0; @@ -181,10 +181,10 @@ void battle_anim_clear_some_data(void) gAnimScriptActive = FALSE; gAnimVisualTaskCount = 0; gAnimSoundTaskCount = 0; - gUnknown_0202F7B4 = 0; - gUnknown_0202F7B8 = 0; - gUnknown_0202F7BC = 0; - gUnknown_0202F7BE = 0; + gDisableStructMoveAnim = 0; + gMoveDmgMoveAnim = 0; + gMovePowerMoveAnim = 0; + gHappinessMoveAnim = 0; // clear index array. for (i = 0; i < 8; i++) @@ -206,8 +206,8 @@ void battle_anim_clear_some_data(void) void ExecuteMoveAnim(u16 move) { - gBattleAnimPlayerMonIndex = gPlayerMonIndex; - gBattleAnimEnemyMonIndex = gEnemyMonIndex; + gBattleAnimPlayerMonIndex = gBankAttacker; + gBattleAnimEnemyMonIndex = gBankTarget; DoMoveAnim(gBattleAnims_Moves, move, 1); } @@ -221,10 +221,10 @@ void DoMoveAnim(const u8 *const moveAnims[], u16 move, u8 c) sub_8043EB4(0); for (i = 0; i < 4; i++) { - if (battle_side_get_owner(i) != 0) - gUnknown_0202F7CA[i] = GetMonData(&gEnemyParty[gUnknown_02024A6A[i]], MON_DATA_SPECIES); + if (GetBankSide(i) != 0) + gUnknown_0202F7CA[i] = GetMonData(&gEnemyParty[gBattlePartyID[i]], MON_DATA_SPECIES); else - gUnknown_0202F7CA[i] = GetMonData(&gPlayerParty[gUnknown_02024A6A[i]], MON_DATA_SPECIES); + gUnknown_0202F7CA[i] = GetMonData(&gPlayerParty[gBattlePartyID[i]], MON_DATA_SPECIES); } } else @@ -689,14 +689,14 @@ static void ScriptCmd_monbg(void) r5 = gBattleAnimEnemyMonIndex; if (b_side_obj__get_some_boolean(r5)) { - r0 = battle_get_per_side_status(r5); + r0 = GetBankIdentity(r5); r0 += 0xFF; if (r0 <= 1 || IsContest() != 0) r7 = 0; else r7 = 1; sub_8076034(r5, r7); - r4 = gUnknown_02024BE0[r5]; + r4 = gObjectBankIDs[r5]; taskId = CreateTask(task_pA_ma0A_obj_to_bg_pal, 10); gTasks[taskId].data[0] = r4; gTasks[taskId].data[1] = gSprites[r4].pos1.x + gSprites[r4].pos2.x; @@ -719,14 +719,14 @@ static void ScriptCmd_monbg(void) r5 ^= 2; if (r6 > 1 && b_side_obj__get_some_boolean(r5)) { - r0 = battle_get_per_side_status(r5); + r0 = GetBankIdentity(r5); r0 += 0xFF; if (r0 <= 1 || IsContest() != 0) r7 = 0; else r7 = 1; sub_8076034(r5, r7); - r4 = gUnknown_02024BE0[r5]; + r4 = gObjectBankIDs[r5]; taskId = CreateTask(task_pA_ma0A_obj_to_bg_pal, 10); gTasks[taskId].data[0] = r4; gTasks[taskId].data[1] = gSprites[r4].pos1.x + gSprites[r4].pos2.x; @@ -764,7 +764,7 @@ bool8 b_side_obj__get_some_boolean(u8 a) return TRUE; // this line wont ever be reached. if ((EWRAM_17800[a].unk0 & 1) == 0) return TRUE; - if (gSprites[gUnknown_02024BE0[a]].invisible) + if (gSprites[gObjectBankIDs[a]].invisible) return FALSE; return TRUE; } @@ -807,7 +807,7 @@ _08075FDC:\n\ cmp r0, 0\n\ beq _0807601C\n\ ldr r2, _08076024 @ =gSprites\n\ - ldr r0, _08076028 @ =gUnknown_02024BE0\n\ + ldr r0, _08076028 @ =gObjectBankIDs\n\ adds r0, r5, r0\n\ ldrb r1, [r0]\n\ lsls r0, r1, 4\n\ @@ -825,7 +825,7 @@ _0807601C:\n\ .align 2, 0\n\ _08076020: .4byte 0x02017800\n\ _08076024: .4byte gSprites\n\ -_08076028: .4byte gUnknown_02024BE0\n\ +_08076028: .4byte gObjectBankIDs\n\ _0807602C:\n\ movs r0, 0\n\ _0807602E:\n\ @@ -873,12 +873,12 @@ void sub_8076034(u8 a, u8 b) REG_BG1CNT_BITFIELD.screenSize = 1; REG_BG1CNT_BITFIELD.areaOverflowMode = 0; - spriteId = gUnknown_02024BE0[a]; + spriteId = gObjectBankIDs[a]; gUnknown_030042C0 = -(gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x) + 32; 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; + gSprites[gObjectBankIDs[a]].invisible = TRUE; REG_BG1HOFS = gUnknown_030042C0; REG_BG1VOFS = gUnknown_030041B4; @@ -890,7 +890,7 @@ void sub_8076034(u8 a, u8 b) if (IsContest() != 0) r2 = 0; else - r2 = battle_get_per_side_status(a); + r2 = GetBankIdentity(a); sub_80E4EF8(0, 0, r2, s.unk8, (u32)s.unk0, (((s32)s.unk4 - VRAM) / 2048), REG_BG1CNT_BITFIELD.charBaseBlock); if (IsContest() != 0) sub_8076380(); @@ -923,10 +923,10 @@ void sub_8076034(u8 a, u8 b) REG_BG2CNT_BITFIELD.screenSize = 1; REG_BG2CNT_BITFIELD.areaOverflowMode = 0; - spriteId = gUnknown_02024BE0[a]; + spriteId = gObjectBankIDs[a]; gUnknown_03004288 = -(gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x) + 32; gUnknown_03004280 = -(gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y) + 32; - gSprites[gUnknown_02024BE0[a]].invisible = TRUE; + gSprites[gObjectBankIDs[a]].invisible = TRUE; REG_BG2HOFS = gUnknown_03004288; REG_BG2VOFS = gUnknown_03004280; @@ -935,7 +935,7 @@ void sub_8076034(u8 a, u8 b) addr3 = (void *)(PLTT + 0x120); DmaCopy32(3, gPlttBufferUnfaded + 0x100 + a * 16, addr3, 32); - sub_80E4EF8(0, 0, battle_get_per_side_status(a), 9, 0x6000, 0x1E, REG_BG2CNT_BITFIELD.charBaseBlock); + sub_80E4EF8(0, 0, GetBankIdentity(a), 9, 0x6000, 0x1E, REG_BG2CNT_BITFIELD.charBaseBlock); } } @@ -1098,9 +1098,9 @@ static void ScriptCmd_clearmonbg(void) else r5 = gBattleAnimEnemyMonIndex; if (gMonAnimTaskIdArray[0] != 0xFF) - gSprites[gUnknown_02024BE0[r5]].invisible = FALSE; + gSprites[gObjectBankIDs[r5]].invisible = FALSE; if (r4 > 1 && gMonAnimTaskIdArray[1] != 0xFF) - gSprites[gUnknown_02024BE0[r5 ^ 2]].invisible = FALSE; + gSprites[gObjectBankIDs[r5 ^ 2]].invisible = FALSE; else r4 = 0; taskId = CreateTask(sub_807672C, 5); @@ -1117,7 +1117,7 @@ static void sub_807672C(u8 taskId) gTasks[taskId].data[1]++; if (gTasks[taskId].data[1] != 1) { - var = battle_get_per_side_status(gTasks[taskId].data[2]); + var = GetBankIdentity(gTasks[taskId].data[2]); var += 0xFF; if (var <= 1 || IsContest() != 0) r4 = 0; @@ -1158,26 +1158,26 @@ static void ScriptCmd_monbg_22(void) r4 = gBattleAnimEnemyMonIndex; if (b_side_obj__get_some_boolean(r4)) { - r0 = battle_get_per_side_status(r4); + r0 = GetBankIdentity(r4); r0 += 0xFF; if (r0 <= 1 || IsContest() != 0) r1 = 0; else r1 = 1; sub_8076034(r4, r1); - gSprites[gUnknown_02024BE0[r4]].invisible = FALSE; + gSprites[gObjectBankIDs[r4]].invisible = FALSE; } r4 ^= 2; if (r5 > 1 && b_side_obj__get_some_boolean(r4)) { - r0 = battle_get_per_side_status(r4); + r0 = GetBankIdentity(r4); r0 += 0xFF; if (r0 <= 1 || IsContest() != 0) r1 = 0; else r1 = 1; sub_8076034(r4, r1); - gSprites[gUnknown_02024BE0[r4]].invisible = FALSE; + gSprites[gObjectBankIDs[r4]].invisible = FALSE; } gBattleAnimScriptPtr++; } @@ -1199,9 +1199,9 @@ static void ScriptCmd_clearmonbg_23(void) else r6 = gBattleAnimEnemyMonIndex; if (b_side_obj__get_some_boolean(r6)) - gSprites[gUnknown_02024BE0[r6]].invisible = FALSE; + gSprites[gObjectBankIDs[r6]].invisible = FALSE; if (r5 > 1 && b_side_obj__get_some_boolean(r6 ^ 2)) - gSprites[gUnknown_02024BE0[r6 ^ 2]].invisible = FALSE; + gSprites[gObjectBankIDs[r6 ^ 2]].invisible = FALSE; else r5 = 0; taskId = CreateTask(sub_80769A4, 5); @@ -1220,7 +1220,7 @@ static void sub_80769A4(u8 taskId) if (gTasks[taskId].data[1] != 1) { r4 = gTasks[taskId].data[2]; - r0 = battle_get_per_side_status(r4); + r0 = GetBankIdentity(r4); r0 += 0xFF; if (r0 <= 1 || IsContest() != 0) r5 = 0; @@ -1369,7 +1369,7 @@ static void ScriptCmd_fadetobg_25(void) taskId = CreateTask(task_p5_load_battle_screen_elements, 5); if (IsContest() != 0) gTasks[taskId].data[0] = r6; - else if (battle_side_get_owner(gBattleAnimEnemyMonIndex) == 0) + else if (GetBankSide(gBattleAnimEnemyMonIndex) == 0) gTasks[taskId].data[0] = r7; else gTasks[taskId].data[0] = r8; @@ -1493,7 +1493,7 @@ s8 sub_8076F98(s8 a) { if (!IsContest() && (EWRAM_17810[gBattleAnimPlayerMonIndex].unk0 & 0x10)) { - a = battle_side_get_owner(gBattleAnimPlayerMonIndex) ? 0xC0 : 0x3F; + a = GetBankSide(gBattleAnimPlayerMonIndex) ? 0xC0 : 0x3F; } //_08076FDC else @@ -1512,9 +1512,9 @@ s8 sub_8076F98(s8 a) //_08077004 else { - if (battle_side_get_owner(gBattleAnimPlayerMonIndex) == 0) + if (GetBankSide(gBattleAnimPlayerMonIndex) == 0) { - if (battle_side_get_owner(gBattleAnimEnemyMonIndex) == 0) + if (GetBankSide(gBattleAnimEnemyMonIndex) == 0) } //_08077042 else @@ -1551,7 +1551,7 @@ s8 sub_8076F98(s8 a) cmp r0, 0\n\ beq _08076FDC\n\ adds r0, r2, 0\n\ - bl battle_side_get_owner\n\ + bl GetBankSide\n\ lsls r0, 24\n\ movs r4, 0xC0\n\ cmp r0, 0\n\ @@ -1583,13 +1583,13 @@ _08077000: .4byte gBattleAnimEnemyMonIndex\n\ _08077004:\n\ ldr r0, _0807702C @ =gBattleAnimPlayerMonIndex\n\ ldrb r0, [r0]\n\ - bl battle_side_get_owner\n\ + bl GetBankSide\n\ lsls r0, 24\n\ cmp r0, 0\n\ bne _08077042\n\ ldr r0, _08077030 @ =gBattleAnimEnemyMonIndex\n\ ldrb r0, [r0]\n\ - bl battle_side_get_owner\n\ + bl GetBankSide\n\ lsls r0, 24\n\ cmp r0, 0\n\ bne _0807706E\n\ @@ -1613,7 +1613,7 @@ _08077034:\n\ _08077042:\n\ ldr r0, _08077064 @ =gBattleAnimEnemyMonIndex\n\ ldrb r0, [r0]\n\ - bl battle_side_get_owner\n\ + bl GetBankSide\n\ lsls r0, 24\n\ lsrs r0, 24\n\ cmp r0, 0x1\n\ @@ -1661,14 +1661,14 @@ s8 sub_8077094(s8 a) { if (!IsContest() && (EWRAM_17810[gBattleAnimPlayerMonIndex].unk0 & 0x10)) { - if (battle_side_get_owner(gBattleAnimPlayerMonIndex) != 0) + if (GetBankSide(gBattleAnimPlayerMonIndex) != 0) a = 0x3F; else a = 0xC0; } else { - if (battle_side_get_owner(gBattleAnimPlayerMonIndex) != 0 || IsContest() != 0) + if (GetBankSide(gBattleAnimPlayerMonIndex) != 0 || IsContest() != 0) a = -a; } return a; @@ -2129,7 +2129,7 @@ static void ScriptCmd_monbgprio_28(void) r0 = gBattleAnimEnemyMonIndex; else r0 = gBattleAnimPlayerMonIndex; - r4 = battle_get_per_side_status(r0); + r4 = GetBankIdentity(r0); if (!IsContest() && (r4 == 0 || r4 == 3)) { REG_BG1CNT_BITFIELD.priority = 1; @@ -2155,13 +2155,13 @@ static void ScriptCmd_monbgprio_2A(void) r6 = SCRIPT_READ_8(gBattleAnimScriptPtr + 1); gBattleAnimScriptPtr += 2; - if (battle_side_get_owner(gBattleAnimPlayerMonIndex) != battle_side_get_owner(gBattleAnimEnemyMonIndex)) + if (GetBankSide(gBattleAnimPlayerMonIndex) != GetBankSide(gBattleAnimEnemyMonIndex)) { if (r6 != 0) r0 = gBattleAnimEnemyMonIndex; else r0 = gBattleAnimPlayerMonIndex; - r4 = battle_get_per_side_status(r0); + r4 = GetBankIdentity(r0); if (!IsContest() && (r4 == 0 || r4 == 3)) { REG_BG1CNT_BITFIELD.priority = 1; @@ -2207,16 +2207,16 @@ static void ScriptCmd_doublebattle_2D(void) r7 = SCRIPT_READ_8(gBattleAnimScriptPtr + 1); gBattleAnimScriptPtr += 2; if (!IsContest() && IsDoubleBattle() - && battle_side_get_owner(gBattleAnimPlayerMonIndex) == battle_side_get_owner(gBattleAnimEnemyMonIndex)) + && GetBankSide(gBattleAnimPlayerMonIndex) == GetBankSide(gBattleAnimEnemyMonIndex)) { if (r7 == 0) { - r4 = battle_get_per_side_status_permutated(gBattleAnimPlayerMonIndex); + r4 = GetBankIdentity_permutated(gBattleAnimPlayerMonIndex); spriteId = obj_id_for_side_relative_to_move(0); } else { - r4 = battle_get_per_side_status_permutated(gBattleAnimEnemyMonIndex); + r4 = GetBankIdentity_permutated(gBattleAnimEnemyMonIndex); spriteId = obj_id_for_side_relative_to_move(1); } if (spriteId != 0xFF) @@ -2241,16 +2241,16 @@ static void ScriptCmd_doublebattle_2E(void) r7 = SCRIPT_READ_8(gBattleAnimScriptPtr + 1); gBattleAnimScriptPtr += 2; if (!IsContest() && IsDoubleBattle() - && battle_side_get_owner(gBattleAnimPlayerMonIndex) == battle_side_get_owner(gBattleAnimEnemyMonIndex)) + && GetBankSide(gBattleAnimPlayerMonIndex) == GetBankSide(gBattleAnimEnemyMonIndex)) { if (r7 == 0) { - r4 = battle_get_per_side_status_permutated(gBattleAnimPlayerMonIndex); + r4 = GetBankIdentity_permutated(gBattleAnimPlayerMonIndex); spriteId = obj_id_for_side_relative_to_move(0); } else { - r4 = battle_get_per_side_status_permutated(gBattleAnimEnemyMonIndex); + r4 = GetBankIdentity_permutated(gBattleAnimEnemyMonIndex); spriteId = obj_id_for_side_relative_to_move(1); } if (spriteId != 0xFF && r4 == 2) -- cgit v1.2.3 From e072ddd6fbae8b303de546d0e9bd5ace2ecb20a1 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Mon, 19 Jun 2017 13:34:32 -0500 Subject: move data to C and introduce CompressedSpriteSheet and CompressedSpritePalette --- src/battle_anim.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/battle_anim.c') diff --git a/src/battle_anim.c b/src/battle_anim.c index cc856d5cd..55ede1788 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -58,8 +58,8 @@ extern struct MusicPlayerInfo gMPlay_SE2; extern const u16 gUnknown_081C7160[]; extern const u8 *const gBattleAnims_Moves[]; -extern const struct SpriteSheet gBattleAnimPicTable[]; -extern const struct SpritePalette gBattleAnimPaletteTable[]; +extern const struct CompressedSpriteSheet gBattleAnimPicTable[]; +extern const struct CompressedSpritePalette gBattleAnimPaletteTable[]; extern const struct BattleAnimBackground gBattleAnimBackgroundTable[]; static void RunAnimScriptCommand(void); -- cgit v1.2.3