From dbcd5075b036cdd700cdff2b863e9884037ddfca Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Sun, 7 Jan 2018 01:47:42 +0100 Subject: Split battle_anim_81258BC.s and decompile unused --- src/battle/anim/sfx.c | 2 + src/unused/unused_8124F94.c | 126 ++++++++++++++++++++++++++++++++++++++++++++ src/unused/unused_81258BC.c | 36 +++++++++++++ src/unused_8124F94.c | 126 -------------------------------------------- 4 files changed, 164 insertions(+), 126 deletions(-) create mode 100644 src/battle/anim/sfx.c create mode 100644 src/unused/unused_8124F94.c create mode 100644 src/unused/unused_81258BC.c delete mode 100644 src/unused_8124F94.c (limited to 'src') diff --git a/src/battle/anim/sfx.c b/src/battle/anim/sfx.c new file mode 100644 index 000000000..265271ac5 --- /dev/null +++ b/src/battle/anim/sfx.c @@ -0,0 +1,2 @@ +#include "global.h" + diff --git a/src/unused/unused_8124F94.c b/src/unused/unused_8124F94.c new file mode 100644 index 000000000..5f76fa92e --- /dev/null +++ b/src/unused/unused_8124F94.c @@ -0,0 +1,126 @@ +#include "global.h" +#include "decompress.h" +#include "palette.h" + +struct UnknownStruct2 +{ + void *src; + u8 unk4; + u8 unk5; + u8 unk6; + u16 unk8; +}; + +struct UnknownStruct3 +{ + u16 *paletteSrc; + u8 unk4; + u8 paletteCount; +}; + +struct UnknownStruct1 +{ + u8 paletteNum; + u8 unk1; + u16 unk2; + u8 *dest; + struct UnknownStruct3 unk8[16]; + struct UnknownStruct2 unk88[32]; +}; + +void unref_sub_8124F94(struct UnknownStruct1 *a) +{ + a->unk1 = 0; + a->paletteNum = 0; + a->unk2 = 0; + a->dest = (void *)VRAM; + DmaFill16(3, 0, a->unk8, sizeof(a->unk8)); + DmaFill16(3, 0, a->unk88, sizeof(a->unk88)); +} + +u8 unref_sub_8124FD8(struct UnknownStruct1 *a, const struct UnknownStruct2 *b) +{ + while (1) + { + s32 r6; + s32 temp; + + // Couldn't get it to match any other way + if (a->unk1 < 32 && b->src == NULL) + return 0; + if (a->unk1 >= 32) + break; + + a->unk88[a->unk1].src = b->src; + a->unk88[a->unk1].unk6 = b->unk6; + a->unk88[a->unk1].unk4 = b->unk4; + a->unk88[a->unk1].unk5 = b->unk5; + r6 = b->unk4 * b->unk5; + if (a->unk2 + r6 > 0x400) + return 2; + if (b->unk8 == 0) + { + DmaCopy16(3, b->src, a->dest + a->unk2 * 64, r6 * 32); + } + else + { + LZDecompressWram(b->src, a->dest + a->unk2 * 64); + } + a->unk88[a->unk1].unk8 = a->unk2; + temp = r6 + a->unk2; + a->unk2 = temp; + a->unk1++; + b++; + } + return 1; +} + +u8 unref_sub_81250A4(struct UnknownStruct1 *a, struct UnknownStruct3 *b) +{ + while (1) + { + // Couldn't get it to match any other way + if (a->paletteNum < 16 && b->paletteSrc == NULL) + return 0; + if (a->paletteNum >= 16) + break; + + a->unk8[a->paletteNum].paletteSrc = b->paletteSrc; + a->unk8[a->paletteNum].unk4 = b->unk4; + if (b->paletteCount == 0) + { + LoadPalette(b->paletteSrc, a->paletteNum * 16, 32); + } + else + { + u16 palette[16]; + + LZDecompressWram(b->paletteSrc, palette); + LoadPalette(palette, a->paletteNum * 16, 32); + } + a->unk8[a->paletteNum].paletteCount = a->paletteNum; + a->paletteNum = a->paletteNum + 1; + b++; + } + return 1; +} + +u8 unref_sub_8125118(struct UnknownStruct1 *a, struct UnknownStruct3 *b) +{ + u16 palettes[16][16] = {0}; + u8 r7 = b->paletteCount; + u8 i; + + LZDecompressWram(b->paletteSrc, palettes); + for (i = a->paletteNum; i < r7; i++) + { + if (a->paletteNum + i >= 16) + return 1; + a->unk8[i].paletteSrc = b->paletteSrc; + a->unk8[i].unk4 = b->unk4 + i; + a->unk8[i].paletteCount = a->paletteNum; + LoadPalette(palettes[i], a->paletteNum * 16, sizeof(palettes[i])); + a->paletteNum++; + } + return 0; +} diff --git a/src/unused/unused_81258BC.c b/src/unused/unused_81258BC.c new file mode 100644 index 000000000..c509ea4c9 --- /dev/null +++ b/src/unused/unused_81258BC.c @@ -0,0 +1,36 @@ +#include "constants/songs.h" +#include "global.h" +#include "menu.h" +#include "mystery_event_script.h" +#include "sound.h" +#include "text.h" + +void sub_812AF10(void); + +bool8 unref_sub_812AECC(u8 *script) +{ + u8 result = RunMysteryEventScript(script); + switch (result) + { + case 0: + return FALSE; + case 1: + PlaySE(SE_BOO); + return TRUE; + case 2: + sub_812AF10(); + return FALSE; + case 3: + PlaySE(SE_BOO); + sub_812AF10(); + return TRUE; + default: + return FALSE; + } +} + +void sub_812AF10(void) +{ + MenuDrawTextWindow(2, 14, 27, 19); + MenuPrint(gStringVar4, 3, 15); +} \ No newline at end of file diff --git a/src/unused_8124F94.c b/src/unused_8124F94.c deleted file mode 100644 index 5f76fa92e..000000000 --- a/src/unused_8124F94.c +++ /dev/null @@ -1,126 +0,0 @@ -#include "global.h" -#include "decompress.h" -#include "palette.h" - -struct UnknownStruct2 -{ - void *src; - u8 unk4; - u8 unk5; - u8 unk6; - u16 unk8; -}; - -struct UnknownStruct3 -{ - u16 *paletteSrc; - u8 unk4; - u8 paletteCount; -}; - -struct UnknownStruct1 -{ - u8 paletteNum; - u8 unk1; - u16 unk2; - u8 *dest; - struct UnknownStruct3 unk8[16]; - struct UnknownStruct2 unk88[32]; -}; - -void unref_sub_8124F94(struct UnknownStruct1 *a) -{ - a->unk1 = 0; - a->paletteNum = 0; - a->unk2 = 0; - a->dest = (void *)VRAM; - DmaFill16(3, 0, a->unk8, sizeof(a->unk8)); - DmaFill16(3, 0, a->unk88, sizeof(a->unk88)); -} - -u8 unref_sub_8124FD8(struct UnknownStruct1 *a, const struct UnknownStruct2 *b) -{ - while (1) - { - s32 r6; - s32 temp; - - // Couldn't get it to match any other way - if (a->unk1 < 32 && b->src == NULL) - return 0; - if (a->unk1 >= 32) - break; - - a->unk88[a->unk1].src = b->src; - a->unk88[a->unk1].unk6 = b->unk6; - a->unk88[a->unk1].unk4 = b->unk4; - a->unk88[a->unk1].unk5 = b->unk5; - r6 = b->unk4 * b->unk5; - if (a->unk2 + r6 > 0x400) - return 2; - if (b->unk8 == 0) - { - DmaCopy16(3, b->src, a->dest + a->unk2 * 64, r6 * 32); - } - else - { - LZDecompressWram(b->src, a->dest + a->unk2 * 64); - } - a->unk88[a->unk1].unk8 = a->unk2; - temp = r6 + a->unk2; - a->unk2 = temp; - a->unk1++; - b++; - } - return 1; -} - -u8 unref_sub_81250A4(struct UnknownStruct1 *a, struct UnknownStruct3 *b) -{ - while (1) - { - // Couldn't get it to match any other way - if (a->paletteNum < 16 && b->paletteSrc == NULL) - return 0; - if (a->paletteNum >= 16) - break; - - a->unk8[a->paletteNum].paletteSrc = b->paletteSrc; - a->unk8[a->paletteNum].unk4 = b->unk4; - if (b->paletteCount == 0) - { - LoadPalette(b->paletteSrc, a->paletteNum * 16, 32); - } - else - { - u16 palette[16]; - - LZDecompressWram(b->paletteSrc, palette); - LoadPalette(palette, a->paletteNum * 16, 32); - } - a->unk8[a->paletteNum].paletteCount = a->paletteNum; - a->paletteNum = a->paletteNum + 1; - b++; - } - return 1; -} - -u8 unref_sub_8125118(struct UnknownStruct1 *a, struct UnknownStruct3 *b) -{ - u16 palettes[16][16] = {0}; - u8 r7 = b->paletteCount; - u8 i; - - LZDecompressWram(b->paletteSrc, palettes); - for (i = a->paletteNum; i < r7; i++) - { - if (a->paletteNum + i >= 16) - return 1; - a->unk8[i].paletteSrc = b->paletteSrc; - a->unk8[i].unk4 = b->unk4 + i; - a->unk8[i].paletteCount = a->paletteNum; - LoadPalette(palettes[i], a->paletteNum * 16, sizeof(palettes[i])); - a->paletteNum++; - } - return 0; -} -- cgit v1.2.3 From 39810d713630fbadbd16f00862deca1f12d3a91d Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Sun, 7 Jan 2018 15:05:49 +0100 Subject: Started decompiling move animation sfx --- src/battle/anim/sfx.c | 113 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) (limited to 'src') diff --git a/src/battle/anim/sfx.c b/src/battle/anim/sfx.c index 265271ac5..a66a15371 100644 --- a/src/battle/anim/sfx.c +++ b/src/battle/anim/sfx.c @@ -1,2 +1,115 @@ #include "global.h" +#include "battle_anim.h" +#include "sound.h" +#include "task.h" + +extern s16 gBattleAnimArgs[]; + +void sub_812AF98(u8 taskId); +void sub_812B004(u8 taskId); +void sub_812B004(u8 taskId); + +void sub_812AF30(u8 taskId) +{ + s8 sourcePan, targetPan, incrementPan; + + TASK.data[0] = gBattleAnimArgs[0]; + TASK.data[1] = gBattleAnimArgs[1]; + + sourcePan = BattleAnimAdjustPanning(-64); + targetPan = BattleAnimAdjustPanning(63); + incrementPan = CalculatePanIncrement(sourcePan, targetPan, 2); + + TASK.data[2] = sourcePan; + TASK.data[3] = targetPan; + TASK.data[4] = incrementPan; + TASK.data[10] = 10; + + TASK.func = sub_812AF98; +} + +#ifdef NONMATCHING +void sub_812AF98(u8 taskId) // r4 := TASK +{ + s16 pan = TASK.data[2]; // r5 + s8 var0 = TASK.data[4]; // r6 + + if (++TASK.data[11] == 111) + { + TASK.data[10] = 5; + TASK.data[11] = 0; + TASK.func = sub_812B004; + } + else + { + if (++TASK.data[10] == 11) + { + TASK.data[10] = 0; + PlaySE12WithPanning(TASK.data[0], pan); + } + TASK.data[2] = sub_8077104(var0 + pan); + } +} +#else +__attribute__((naked)) +void sub_812AF98(u8 taskId) +{ + asm(".syntax unified\n\ + push {r4-r6,lr}\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + ldr r2, _0812AFC8 @ =gTasks\n\ + lsls r1, r0, 2\n\ + adds r1, r0\n\ + lsls r1, 3\n\ + adds r4, r1, r2\n\ + ldrh r5, [r4, 0xC]\n\ + ldrb r6, [r4, 0x10]\n\ + ldrh r0, [r4, 0x1E]\n\ + adds r0, 0x1\n\ + movs r1, 0\n\ + strh r0, [r4, 0x1E]\n\ + lsls r0, 16\n\ + asrs r0, 16\n\ + cmp r0, 0x6F\n\ + bne _0812AFD0\n\ + movs r0, 0x5\n\ + strh r0, [r4, 0x1C]\n\ + strh r1, [r4, 0x1E]\n\ + ldr r0, _0812AFCC @ =sub_812B004\n\ + str r0, [r4]\n\ + b _0812AFFE\n\ + .align 2, 0\n\ +_0812AFC8: .4byte gTasks\n\ +_0812AFCC: .4byte sub_812B004\n\ +_0812AFD0:\n\ + ldrh r0, [r4, 0x1C]\n\ + adds r0, 0x1\n\ + strh r0, [r4, 0x1C]\n\ + lsls r0, 16\n\ + asrs r0, 16\n\ + cmp r0, 0xB\n\ + bne _0812AFEA\n\ + strh r1, [r4, 0x1C]\n\ + ldrh r0, [r4, 0x8]\n\ + lsls r1, r5, 24\n\ + asrs r1, 24\n\ + bl PlaySE12WithPanning\n\ +_0812AFEA:\n\ + lsls r1, r6, 24\n\ + asrs r1, 24\n\ + lsls r0, r5, 16\n\ + asrs r0, 16\n\ + adds r0, r1\n\ + lsls r0, 16\n\ + asrs r0, 16\n\ + bl sub_8077104\n\ + strh r0, [r4, 0xC]\n\ +_0812AFFE:\n\ + pop {r4-r6}\n\ + pop {r0}\n\ + bx r0\n\ + .syntax divided\n"); +} +#endif // NONMATCHING -- cgit v1.2.3 From 589df520baf710078abf2756d35662bda944861c Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Sun, 7 Jan 2018 16:20:21 +0100 Subject: sub_812B004 - sub_812B058 --- src/battle/anim/sfx.c | 138 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 138 insertions(+) (limited to 'src') diff --git a/src/battle/anim/sfx.c b/src/battle/anim/sfx.c index a66a15371..e7e3c867e 100644 --- a/src/battle/anim/sfx.c +++ b/src/battle/anim/sfx.c @@ -8,6 +8,7 @@ extern s16 gBattleAnimArgs[]; void sub_812AF98(u8 taskId); void sub_812B004(u8 taskId); void sub_812B004(u8 taskId); +void sub_812B108(u8 taskId); void sub_812AF30(u8 taskId) { @@ -113,3 +114,140 @@ _0812AFFE:\n\ } #endif // NONMATCHING +void sub_812B004(u8 taskId) +{ + s8 pan; + + if (++TASK.data[10] == 6) + { + TASK.data[10] = 0; + + pan = BattleAnimAdjustPanning(0x3f); + PlaySE12WithPanning(TASK.data[1], pan); + + if (++TASK.data[11] == 2) + { + DestroyAnimSoundTask(taskId); + } + } +} + +#ifdef NONMATCHING +void sub_812B058(u8 taskId) +{ + s16 sp, r10, r7, r9; + s8 r5, r6, r4, r0; + + sp = gBattleAnimArgs[0]; + r5 = gBattleAnimArgs[2]; + r6 = gBattleAnimArgs[3]; + r10 = gBattleAnimArgs[4]; + r7 = gBattleAnimArgs[5]; + r9 = gBattleAnimArgs[6]; + r4 = BattleAnimAdjustPanning(gBattleAnimArgs[1]); + r5 = BattleAnimAdjustPanning(r5); + r0 = CalculatePanIncrement(r4, r5, r6); + + TASK.data[0] = sp; + TASK.data[1] = r4; + TASK.data[2] = r5; + TASK.data[3] = r0; + TASK.data[4] = r10; + TASK.data[5] = r7; + TASK.data[6] = r9; + TASK.data[10] = 0; + TASK.data[11] = r4; + TASK.data[12] = r9; + + TASK.func = sub_812B108; + sub_812B108(taskId); +} +#else +__attribute__((naked)) +void sub_812B058(u8 taskId) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x4\n\ + mov r8, r0\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r8, r0\n\ + ldr r0, _0812B0FC @ =gBattleAnimArgs\n\ + ldrh r1, [r0]\n\ + str r1, [sp]\n\ + ldrb r5, [r0, 0x4]\n\ + ldrb r6, [r0, 0x6]\n\ + ldrb r3, [r0, 0x8]\n\ + mov r10, r3\n\ + ldrb r7, [r0, 0xA]\n\ + ldrb r1, [r0, 0xC]\n\ + mov r9, r1\n\ + ldrb r0, [r0, 0x2]\n\ + lsls r0, 24\n\ + asrs r0, 24\n\ + bl BattleAnimAdjustPanning\n\ + adds r4, r0, 0\n\ + lsls r4, 24\n\ + lsrs r4, 24\n\ + lsls r5, 24\n\ + asrs r5, 24\n\ + adds r0, r5, 0\n\ + bl BattleAnimAdjustPanning\n\ + adds r5, r0, 0\n\ + lsls r4, 24\n\ + asrs r4, 24\n\ + lsls r5, 24\n\ + asrs r5, 24\n\ + lsls r6, 24\n\ + asrs r6, 24\n\ + adds r0, r4, 0\n\ + adds r1, r5, 0\n\ + adds r2, r6, 0\n\ + bl CalculatePanIncrement\n\ + ldr r2, _0812B100 @ =gTasks\n\ + mov r3, r8\n\ + lsls r1, r3, 2\n\ + add r1, r8\n\ + lsls r1, 3\n\ + adds r1, r2\n\ + movs r2, 0\n\ + mov r6, sp\n\ + ldrh r6, [r6]\n\ + strh r6, [r1, 0x8]\n\ + strh r4, [r1, 0xA]\n\ + strh r5, [r1, 0xC]\n\ + lsls r0, 24\n\ + asrs r0, 24\n\ + strh r0, [r1, 0xE]\n\ + mov r0, r10\n\ + strh r0, [r1, 0x10]\n\ + strh r7, [r1, 0x12]\n\ + mov r3, r9\n\ + strh r3, [r1, 0x14]\n\ + strh r2, [r1, 0x1C]\n\ + strh r4, [r1, 0x1E]\n\ + strh r3, [r1, 0x20]\n\ + ldr r2, _0812B104 @ =sub_812B108\n\ + str r2, [r1]\n\ + mov r0, r8\n\ + bl _call_via_r2\n\ + add sp, 0x4\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_0812B0FC: .4byte gBattleAnimArgs\n\ +_0812B100: .4byte gTasks\n\ +_0812B104: .4byte sub_812B108\n\ + .syntax divided\n"); +} +#endif // NONMATCHING -- cgit v1.2.3 From e99816d2082d009457105a5e74524f97b80661c0 Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Sun, 7 Jan 2018 23:12:28 +0100 Subject: Decompiled sub_812B108 --- src/battle/anim/sfx.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src') diff --git a/src/battle/anim/sfx.c b/src/battle/anim/sfx.c index e7e3c867e..981022f1e 100644 --- a/src/battle/anim/sfx.c +++ b/src/battle/anim/sfx.c @@ -251,3 +251,25 @@ _0812B104: .4byte sub_812B108\n\ .syntax divided\n"); } #endif // NONMATCHING + +void sub_812B108(u8 taskId) +{ + if (TASK.data[12]++ == TASK.data[6]) + { + TASK.data[12] = 0; + PlaySE12WithPanning(TASK.data[0], TASK.data[11]); + + if (--TASK.data[4] == 0) + { + DestroyAnimSoundTask(taskId); + return; + } + } + + if (TASK.data[10]++ == TASK.data[5]) + { + TASK.data[10] = 0; + TASK.data[11] += TASK.data[3]; + TASK.data[11] = sub_8077104(TASK.data[11]); + } +} -- cgit v1.2.3 From 376e2470e9e4f5a0a7cc94b9d7677ea6f7601dfa Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Mon, 8 Jan 2018 01:49:16 +0100 Subject: Matched sub_812AF98 --- src/battle/anim/sfx.c | 72 ++++----------------------------------------------- 1 file changed, 5 insertions(+), 67 deletions(-) (limited to 'src') diff --git a/src/battle/anim/sfx.c b/src/battle/anim/sfx.c index 981022f1e..99f050dcb 100644 --- a/src/battle/anim/sfx.c +++ b/src/battle/anim/sfx.c @@ -29,11 +29,10 @@ void sub_812AF30(u8 taskId) TASK.func = sub_812AF98; } -#ifdef NONMATCHING -void sub_812AF98(u8 taskId) // r4 := TASK +void sub_812AF98(u8 taskId) { - s16 pan = TASK.data[2]; // r5 - s8 var0 = TASK.data[4]; // r6 + s16 pan = TASK.data[2]; + s8 var0 = TASK.data[4]; if (++TASK.data[11] == 111) { @@ -48,71 +47,10 @@ void sub_812AF98(u8 taskId) // r4 := TASK TASK.data[10] = 0; PlaySE12WithPanning(TASK.data[0], pan); } - TASK.data[2] = sub_8077104(var0 + pan); + pan += var0; + TASK.data[2] = sub_8077104(pan); } } -#else -__attribute__((naked)) -void sub_812AF98(u8 taskId) -{ - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - ldr r2, _0812AFC8 @ =gTasks\n\ - lsls r1, r0, 2\n\ - adds r1, r0\n\ - lsls r1, 3\n\ - adds r4, r1, r2\n\ - ldrh r5, [r4, 0xC]\n\ - ldrb r6, [r4, 0x10]\n\ - ldrh r0, [r4, 0x1E]\n\ - adds r0, 0x1\n\ - movs r1, 0\n\ - strh r0, [r4, 0x1E]\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - cmp r0, 0x6F\n\ - bne _0812AFD0\n\ - movs r0, 0x5\n\ - strh r0, [r4, 0x1C]\n\ - strh r1, [r4, 0x1E]\n\ - ldr r0, _0812AFCC @ =sub_812B004\n\ - str r0, [r4]\n\ - b _0812AFFE\n\ - .align 2, 0\n\ -_0812AFC8: .4byte gTasks\n\ -_0812AFCC: .4byte sub_812B004\n\ -_0812AFD0:\n\ - ldrh r0, [r4, 0x1C]\n\ - adds r0, 0x1\n\ - strh r0, [r4, 0x1C]\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - cmp r0, 0xB\n\ - bne _0812AFEA\n\ - strh r1, [r4, 0x1C]\n\ - ldrh r0, [r4, 0x8]\n\ - lsls r1, r5, 24\n\ - asrs r1, 24\n\ - bl PlaySE12WithPanning\n\ -_0812AFEA:\n\ - lsls r1, r6, 24\n\ - asrs r1, 24\n\ - lsls r0, r5, 16\n\ - asrs r0, 16\n\ - adds r0, r1\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - bl sub_8077104\n\ - strh r0, [r4, 0xC]\n\ -_0812AFFE:\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ - .syntax divided\n"); -} -#endif // NONMATCHING void sub_812B004(u8 taskId) { -- cgit v1.2.3 From 7f3eb30bcb9da4a3a651f1aca7a8fd6b7980491a Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Mon, 8 Jan 2018 16:03:33 +0100 Subject: Matched sub_812B058 --- src/battle/anim/sfx.c | 95 ++------------------------------------------------- 1 file changed, 3 insertions(+), 92 deletions(-) (limited to 'src') diff --git a/src/battle/anim/sfx.c b/src/battle/anim/sfx.c index 99f050dcb..484548d4d 100644 --- a/src/battle/anim/sfx.c +++ b/src/battle/anim/sfx.c @@ -70,16 +70,16 @@ void sub_812B004(u8 taskId) } } -#ifdef NONMATCHING void sub_812B058(u8 taskId) { - s16 sp, r10, r7, r9; + s16 sp; + u8 r10, r7, r9; s8 r5, r6, r4, r0; sp = gBattleAnimArgs[0]; r5 = gBattleAnimArgs[2]; r6 = gBattleAnimArgs[3]; - r10 = gBattleAnimArgs[4]; + r10 = gBattleAnimArgs[4]; r7 = gBattleAnimArgs[5]; r9 = gBattleAnimArgs[6]; r4 = BattleAnimAdjustPanning(gBattleAnimArgs[1]); @@ -100,95 +100,6 @@ void sub_812B058(u8 taskId) TASK.func = sub_812B108; sub_812B108(taskId); } -#else -__attribute__((naked)) -void sub_812B058(u8 taskId) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x4\n\ - mov r8, r0\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r8, r0\n\ - ldr r0, _0812B0FC @ =gBattleAnimArgs\n\ - ldrh r1, [r0]\n\ - str r1, [sp]\n\ - ldrb r5, [r0, 0x4]\n\ - ldrb r6, [r0, 0x6]\n\ - ldrb r3, [r0, 0x8]\n\ - mov r10, r3\n\ - ldrb r7, [r0, 0xA]\n\ - ldrb r1, [r0, 0xC]\n\ - mov r9, r1\n\ - ldrb r0, [r0, 0x2]\n\ - lsls r0, 24\n\ - asrs r0, 24\n\ - bl BattleAnimAdjustPanning\n\ - adds r4, r0, 0\n\ - lsls r4, 24\n\ - lsrs r4, 24\n\ - lsls r5, 24\n\ - asrs r5, 24\n\ - adds r0, r5, 0\n\ - bl BattleAnimAdjustPanning\n\ - adds r5, r0, 0\n\ - lsls r4, 24\n\ - asrs r4, 24\n\ - lsls r5, 24\n\ - asrs r5, 24\n\ - lsls r6, 24\n\ - asrs r6, 24\n\ - adds r0, r4, 0\n\ - adds r1, r5, 0\n\ - adds r2, r6, 0\n\ - bl CalculatePanIncrement\n\ - ldr r2, _0812B100 @ =gTasks\n\ - mov r3, r8\n\ - lsls r1, r3, 2\n\ - add r1, r8\n\ - lsls r1, 3\n\ - adds r1, r2\n\ - movs r2, 0\n\ - mov r6, sp\n\ - ldrh r6, [r6]\n\ - strh r6, [r1, 0x8]\n\ - strh r4, [r1, 0xA]\n\ - strh r5, [r1, 0xC]\n\ - lsls r0, 24\n\ - asrs r0, 24\n\ - strh r0, [r1, 0xE]\n\ - mov r0, r10\n\ - strh r0, [r1, 0x10]\n\ - strh r7, [r1, 0x12]\n\ - mov r3, r9\n\ - strh r3, [r1, 0x14]\n\ - strh r2, [r1, 0x1C]\n\ - strh r4, [r1, 0x1E]\n\ - strh r3, [r1, 0x20]\n\ - ldr r2, _0812B104 @ =sub_812B108\n\ - str r2, [r1]\n\ - mov r0, r8\n\ - bl _call_via_r2\n\ - add sp, 0x4\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_0812B0FC: .4byte gBattleAnimArgs\n\ -_0812B100: .4byte gTasks\n\ -_0812B104: .4byte sub_812B108\n\ - .syntax divided\n"); -} -#endif // NONMATCHING void sub_812B108(u8 taskId) { -- cgit v1.2.3 From 4bdab579016705c6dc914e3d2af2d608eb256a9b Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Mon, 8 Jan 2018 18:40:57 +0100 Subject: Decompiled sub_812B18C --- src/battle/anim/sfx.c | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) (limited to 'src') diff --git a/src/battle/anim/sfx.c b/src/battle/anim/sfx.c index 484548d4d..cb61a566f 100644 --- a/src/battle/anim/sfx.c +++ b/src/battle/anim/sfx.c @@ -1,9 +1,15 @@ #include "global.h" #include "battle_anim.h" +#include "contest.h" +#include "ewram.h" +#include "rom_8077ABC.h" #include "sound.h" #include "task.h" extern s16 gBattleAnimArgs[]; +extern u8 gAnimBankAttacker; +extern u8 gAnimBankTarget; +extern u16 gBattlePartyID[]; void sub_812AF98(u8 taskId); void sub_812B004(u8 taskId); @@ -122,3 +128,57 @@ void sub_812B108(u8 taskId) TASK.data[11] = sub_8077104(TASK.data[11]); } } + +// #define shared19348 (*(struct UnknownContestStruct8 *)(gSharedMem + 0x19348)) +// #define EWRAM_19348 (*(u16 *)(gSharedMem + 0x19348)) + +void sub_812B18C(u8 taskId) +{ + u16 species = 0; + s8 pan = BattleAnimAdjustPanning(-64); + + if (IsContest()) + { + if (!gBattleAnimArgs[0]) + species = shared19348.unk0; + else + DestroyAnimVisualTask(taskId); + } + else + { + u8 bank; + if (gBattleAnimArgs[0] == 0) + bank = gAnimBankAttacker; + else if (gBattleAnimArgs[0] == 1) + bank = gAnimBankTarget; + else if (gBattleAnimArgs[0] == 2) + bank = gAnimBankAttacker ^ 0x2; + else + bank = gAnimBankTarget ^ 0x2; + + if (gBattleAnimArgs[0] == 1 || gBattleAnimArgs[0] == 3) + { + if (!IsAnimBankSpriteVisible(bank)) + { + DestroyAnimVisualTask(taskId); + return; + } + } + + if (GetBankSide(bank)) + species = GetMonData(&gEnemyParty[gBattlePartyID[bank]], 0xB); + else + species = GetMonData(&gPlayerParty[gBattlePartyID[bank]], 0xB); + } + + if (species != 0) + { + s16 mode = gBattleAnimArgs[1]; + if (mode == 0xFF) + PlayCry1(species, pan); + else + PlayCry3(species, pan, mode); + } + + DestroyAnimVisualTask(taskId); +} \ No newline at end of file -- cgit v1.2.3 From 353a083d97be81cbc612ecb8de46b62a0e523362 Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Tue, 9 Jan 2018 02:38:57 +0100 Subject: Finished decompiling battle_anim_sfx --- src/battle/anim/sfx.c | 149 ++++++++++++++++++++++++++++++++++++++--------- src/battle/battle_anim.c | 6 +- 2 files changed, 126 insertions(+), 29 deletions(-) (limited to 'src') diff --git a/src/battle/anim/sfx.c b/src/battle/anim/sfx.c index cb61a566f..470fea3cc 100644 --- a/src/battle/anim/sfx.c +++ b/src/battle/anim/sfx.c @@ -10,26 +10,31 @@ extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; extern u16 gBattlePartyID[]; +extern u16 gAnimSpeciesByBanks[]; +extern u8 gUnknown_0202F7D2; void sub_812AF98(u8 taskId); void sub_812B004(u8 taskId); void sub_812B004(u8 taskId); void sub_812B108(u8 taskId); +void sub_812B404(u8 taskId); +// used in 1 move: +// Move_FIRE_BLAST void sub_812AF30(u8 taskId) { - s8 sourcePan, targetPan, incrementPan; + s8 sourcePan, targetPan, panIncrement; TASK.data[0] = gBattleAnimArgs[0]; TASK.data[1] = gBattleAnimArgs[1]; sourcePan = BattleAnimAdjustPanning(-64); targetPan = BattleAnimAdjustPanning(63); - incrementPan = CalculatePanIncrement(sourcePan, targetPan, 2); + panIncrement = CalculatePanIncrement(sourcePan, targetPan, 2); TASK.data[2] = sourcePan; TASK.data[3] = targetPan; - TASK.data[4] = incrementPan; + TASK.data[4] = panIncrement; TASK.data[10] = 10; TASK.func = sub_812AF98; @@ -38,7 +43,7 @@ void sub_812AF30(u8 taskId) void sub_812AF98(u8 taskId) { s16 pan = TASK.data[2]; - s8 var0 = TASK.data[4]; + s8 dPan = TASK.data[4]; if (++TASK.data[11] == 111) { @@ -53,8 +58,8 @@ void sub_812AF98(u8 taskId) TASK.data[10] = 0; PlaySE12WithPanning(TASK.data[0], pan); } - pan += var0; - TASK.data[2] = sub_8077104(pan); + pan += dPan; + TASK.data[2] = sub_8077104(pan, dPan); } } @@ -66,7 +71,7 @@ void sub_812B004(u8 taskId) { TASK.data[10] = 0; - pan = BattleAnimAdjustPanning(0x3f); + pan = BattleAnimAdjustPanning(63); PlaySE12WithPanning(TASK.data[1], pan); if (++TASK.data[11] == 2) @@ -76,31 +81,32 @@ void sub_812B004(u8 taskId) } } +// used in 7 moves: +// Move_ICE_BEAM, Move_AURORA_BEAM, Move_PSYBEAM, +// Move_PSYWAVE, Move_SHADOW_BALL, Move_TRI_ATTACK, +// Move_HYPER_BEAM void sub_812B058(u8 taskId) { - s16 sp; - u8 r10, r7, r9; - s8 r5, r6, r4, r0; - - sp = gBattleAnimArgs[0]; - r5 = gBattleAnimArgs[2]; - r6 = gBattleAnimArgs[3]; - r10 = gBattleAnimArgs[4]; - r7 = gBattleAnimArgs[5]; - r9 = gBattleAnimArgs[6]; - r4 = BattleAnimAdjustPanning(gBattleAnimArgs[1]); - r5 = BattleAnimAdjustPanning(r5); - r0 = CalculatePanIncrement(r4, r5, r6); + s16 sp = gBattleAnimArgs[0]; + s8 r5 = gBattleAnimArgs[2]; + s8 panIncrement = gBattleAnimArgs[3]; + u8 r10 = gBattleAnimArgs[4]; // number of times the sound must be played + u8 r7 = gBattleAnimArgs[5]; + u8 r9 = gBattleAnimArgs[6]; + + s8 pan1 = BattleAnimAdjustPanning(gBattleAnimArgs[1]); + s8 pan2 = BattleAnimAdjustPanning(r5); + panIncrement = CalculatePanIncrement(pan1, pan2, panIncrement); TASK.data[0] = sp; - TASK.data[1] = r4; - TASK.data[2] = r5; - TASK.data[3] = r0; + TASK.data[1] = pan1; + TASK.data[2] = pan2; + TASK.data[3] = panIncrement; TASK.data[4] = r10; TASK.data[5] = r7; TASK.data[6] = r9; TASK.data[10] = 0; - TASK.data[11] = r4; + TASK.data[11] = pan1; TASK.data[12] = r9; TASK.func = sub_812B108; @@ -123,15 +129,20 @@ void sub_812B108(u8 taskId) if (TASK.data[10]++ == TASK.data[5]) { + u16 dPan, oldPan; TASK.data[10] = 0; - TASK.data[11] += TASK.data[3]; - TASK.data[11] = sub_8077104(TASK.data[11]); + dPan = TASK.data[3]; + oldPan = TASK.data[11]; + TASK.data[11] = dPan + oldPan; + TASK.data[11] = sub_8077104(TASK.data[11], oldPan); } } // #define shared19348 (*(struct UnknownContestStruct8 *)(gSharedMem + 0x19348)) // #define EWRAM_19348 (*(u16 *)(gSharedMem + 0x19348)) +// used in 3 moves: +// Move_HOWL, Move_ROAR, Move_GROWL void sub_812B18C(u8 taskId) { u16 species = 0; @@ -181,4 +192,90 @@ void sub_812B18C(u8 taskId) } DestroyAnimVisualTask(taskId); +} + +// used in Move_HYPER_VOICE +void sub_812B2B8(u8 taskId) +{ + u16 species; + s8 pan = BattleAnimAdjustPanning(-64); + + if (IsContest()) + species = shared19348.unk0; + else + species = gAnimSpeciesByBanks[gAnimBankAttacker]; + + if (species != 0) + PlayCry3(species, pan, 4); + + DestroyAnimVisualTask(taskId); +} + +// used in 6 moves: +// Move_SKY_ATTACK, Move_LUSTER_PURGE, Move_FLATTER, +// Move_DRAGON_CLAW, Move_RETURN, Move_COSMIC_POWER, +void sub_812B30C(u8 taskId) +{ + u16 songNum = gBattleAnimArgs[0]; + s8 pan = BattleAnimAdjustPanning(gBattleAnimArgs[1]); + PlaySE1WithPanning(songNum, pan); + + DestroyAnimVisualTask(taskId); +} + +// used in 6 moves: +// Move_SKY_ATTACK, Move_SUPERPOWER, Move_ENCORE, +// Move_FLATTER, Move_RETURN, Move_COSMIC_POWER +void sub_812B340(u8 taskId) +{ + u16 songNum = gBattleAnimArgs[0]; + s8 pan = BattleAnimAdjustPanning(gBattleAnimArgs[1]); + PlaySE2WithPanning(songNum, pan); + + DestroyAnimVisualTask(taskId); +} + +// used in 2 moves: +// Move_CONFUSE_RAY, Move_WILL_O_WISP +void sub_812B374(u8 taskId) +{ + u8 r5 = gBattleAnimArgs[1]; + s8 panIncrement = gBattleAnimArgs[2]; + s16 r9 = gBattleAnimArgs[3]; + s8 r1 = gBattleAnimArgs[0]; + + s8 sourcePan = BattleAnimAdjustPanning(r1); + s8 targetPan = BattleAnimAdjustPanning(r5); + panIncrement = CalculatePanIncrement(sourcePan, targetPan, panIncrement); + + TASK.data[1] = sourcePan; + TASK.data[2] = targetPan; + TASK.data[3] = panIncrement; + TASK.data[5] = r9; + TASK.data[10] = 0; + TASK.data[11] = sourcePan; + + TASK.func = sub_812B404; + sub_812B404(taskId); +} + +void sub_812B404(u8 taskId) +{ + u16 dPan = TASK.data[3]; + + if (TASK.data[10]++ == TASK.data[5]) + { + u16 oldPan; + TASK.data[10] = 0; + oldPan = TASK.data[11]; + TASK.data[11] = dPan + oldPan; + TASK.data[11] = sub_8077104(TASK.data[11], oldPan); + } + + gUnknown_0202F7D2 = TASK.data[11]; + + if (TASK.data[11] == TASK.data[2]) + { + DestroyAnimVisualTask(taskId); + } } \ No newline at end of file diff --git a/src/battle/battle_anim.c b/src/battle/battle_anim.c index 8242a1ddd..a0c74be1d 100644 --- a/src/battle/battle_anim.c +++ b/src/battle/battle_anim.c @@ -43,7 +43,7 @@ EWRAM_DATA u16 sAnimMoveIndex = 0; // set but unused. EWRAM_DATA u8 gAnimBankAttacker = 0; EWRAM_DATA u8 gAnimBankTarget = 0; EWRAM_DATA u16 gAnimSpeciesByBanks[4] = {0}; -EWRAM_DATA u8 gUnknown_0202F7D2 = 0; +EWRAM_DATA u8 gUnknown_0202F7D2 = 0; // some global pan variable extern u16 gBattle_BG1_Y; extern u16 gBattle_WIN1H; extern u16 gBattle_WIN0V; @@ -1489,9 +1489,9 @@ s8 BattleAnimAdjustPanning2(s8 pan) return pan; } -s16 sub_8077104(s16 a) +s16 sub_8077104(s16 newPan, int oldPan) { - s16 var = a; + s16 var = newPan; if (var > 63) var = 63; -- cgit v1.2.3 From 84118e6fed04b1533458b891bcd0317683fe38c2 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Mon, 8 Jan 2018 19:23:43 -0800 Subject: Move unused files back to src/ level --- src/battle/anim/sfx.c | 21 ++++---- src/unused/unused_8124F94.c | 126 -------------------------------------------- src/unused/unused_81258BC.c | 36 ------------- src/unused_8124F94.c | 126 ++++++++++++++++++++++++++++++++++++++++++++ src/unused_81258BC.c | 36 +++++++++++++ 5 files changed, 172 insertions(+), 173 deletions(-) delete mode 100644 src/unused/unused_8124F94.c delete mode 100644 src/unused/unused_81258BC.c create mode 100644 src/unused_8124F94.c create mode 100644 src/unused_81258BC.c (limited to 'src') diff --git a/src/battle/anim/sfx.c b/src/battle/anim/sfx.c index 470fea3cc..10ef1681e 100644 --- a/src/battle/anim/sfx.c +++ b/src/battle/anim/sfx.c @@ -13,11 +13,10 @@ extern u16 gBattlePartyID[]; extern u16 gAnimSpeciesByBanks[]; extern u8 gUnknown_0202F7D2; -void sub_812AF98(u8 taskId); -void sub_812B004(u8 taskId); -void sub_812B004(u8 taskId); -void sub_812B108(u8 taskId); -void sub_812B404(u8 taskId); +static void sub_812AF98(u8 taskId); +static void sub_812B004(u8 taskId); +static void sub_812B108(u8 taskId); +static void sub_812B404(u8 taskId); // used in 1 move: // Move_FIRE_BLAST @@ -40,7 +39,7 @@ void sub_812AF30(u8 taskId) TASK.func = sub_812AF98; } -void sub_812AF98(u8 taskId) +static void sub_812AF98(u8 taskId) { s16 pan = TASK.data[2]; s8 dPan = TASK.data[4]; @@ -63,7 +62,7 @@ void sub_812AF98(u8 taskId) } } -void sub_812B004(u8 taskId) +static void sub_812B004(u8 taskId) { s8 pan; @@ -110,10 +109,10 @@ void sub_812B058(u8 taskId) TASK.data[12] = r9; TASK.func = sub_812B108; - sub_812B108(taskId); + TASK.func(taskId); } -void sub_812B108(u8 taskId) +static void sub_812B108(u8 taskId) { if (TASK.data[12]++ == TASK.data[6]) { @@ -256,10 +255,10 @@ void sub_812B374(u8 taskId) TASK.data[11] = sourcePan; TASK.func = sub_812B404; - sub_812B404(taskId); + TASK.func(taskId); } -void sub_812B404(u8 taskId) +static void sub_812B404(u8 taskId) { u16 dPan = TASK.data[3]; diff --git a/src/unused/unused_8124F94.c b/src/unused/unused_8124F94.c deleted file mode 100644 index 5f76fa92e..000000000 --- a/src/unused/unused_8124F94.c +++ /dev/null @@ -1,126 +0,0 @@ -#include "global.h" -#include "decompress.h" -#include "palette.h" - -struct UnknownStruct2 -{ - void *src; - u8 unk4; - u8 unk5; - u8 unk6; - u16 unk8; -}; - -struct UnknownStruct3 -{ - u16 *paletteSrc; - u8 unk4; - u8 paletteCount; -}; - -struct UnknownStruct1 -{ - u8 paletteNum; - u8 unk1; - u16 unk2; - u8 *dest; - struct UnknownStruct3 unk8[16]; - struct UnknownStruct2 unk88[32]; -}; - -void unref_sub_8124F94(struct UnknownStruct1 *a) -{ - a->unk1 = 0; - a->paletteNum = 0; - a->unk2 = 0; - a->dest = (void *)VRAM; - DmaFill16(3, 0, a->unk8, sizeof(a->unk8)); - DmaFill16(3, 0, a->unk88, sizeof(a->unk88)); -} - -u8 unref_sub_8124FD8(struct UnknownStruct1 *a, const struct UnknownStruct2 *b) -{ - while (1) - { - s32 r6; - s32 temp; - - // Couldn't get it to match any other way - if (a->unk1 < 32 && b->src == NULL) - return 0; - if (a->unk1 >= 32) - break; - - a->unk88[a->unk1].src = b->src; - a->unk88[a->unk1].unk6 = b->unk6; - a->unk88[a->unk1].unk4 = b->unk4; - a->unk88[a->unk1].unk5 = b->unk5; - r6 = b->unk4 * b->unk5; - if (a->unk2 + r6 > 0x400) - return 2; - if (b->unk8 == 0) - { - DmaCopy16(3, b->src, a->dest + a->unk2 * 64, r6 * 32); - } - else - { - LZDecompressWram(b->src, a->dest + a->unk2 * 64); - } - a->unk88[a->unk1].unk8 = a->unk2; - temp = r6 + a->unk2; - a->unk2 = temp; - a->unk1++; - b++; - } - return 1; -} - -u8 unref_sub_81250A4(struct UnknownStruct1 *a, struct UnknownStruct3 *b) -{ - while (1) - { - // Couldn't get it to match any other way - if (a->paletteNum < 16 && b->paletteSrc == NULL) - return 0; - if (a->paletteNum >= 16) - break; - - a->unk8[a->paletteNum].paletteSrc = b->paletteSrc; - a->unk8[a->paletteNum].unk4 = b->unk4; - if (b->paletteCount == 0) - { - LoadPalette(b->paletteSrc, a->paletteNum * 16, 32); - } - else - { - u16 palette[16]; - - LZDecompressWram(b->paletteSrc, palette); - LoadPalette(palette, a->paletteNum * 16, 32); - } - a->unk8[a->paletteNum].paletteCount = a->paletteNum; - a->paletteNum = a->paletteNum + 1; - b++; - } - return 1; -} - -u8 unref_sub_8125118(struct UnknownStruct1 *a, struct UnknownStruct3 *b) -{ - u16 palettes[16][16] = {0}; - u8 r7 = b->paletteCount; - u8 i; - - LZDecompressWram(b->paletteSrc, palettes); - for (i = a->paletteNum; i < r7; i++) - { - if (a->paletteNum + i >= 16) - return 1; - a->unk8[i].paletteSrc = b->paletteSrc; - a->unk8[i].unk4 = b->unk4 + i; - a->unk8[i].paletteCount = a->paletteNum; - LoadPalette(palettes[i], a->paletteNum * 16, sizeof(palettes[i])); - a->paletteNum++; - } - return 0; -} diff --git a/src/unused/unused_81258BC.c b/src/unused/unused_81258BC.c deleted file mode 100644 index c509ea4c9..000000000 --- a/src/unused/unused_81258BC.c +++ /dev/null @@ -1,36 +0,0 @@ -#include "constants/songs.h" -#include "global.h" -#include "menu.h" -#include "mystery_event_script.h" -#include "sound.h" -#include "text.h" - -void sub_812AF10(void); - -bool8 unref_sub_812AECC(u8 *script) -{ - u8 result = RunMysteryEventScript(script); - switch (result) - { - case 0: - return FALSE; - case 1: - PlaySE(SE_BOO); - return TRUE; - case 2: - sub_812AF10(); - return FALSE; - case 3: - PlaySE(SE_BOO); - sub_812AF10(); - return TRUE; - default: - return FALSE; - } -} - -void sub_812AF10(void) -{ - MenuDrawTextWindow(2, 14, 27, 19); - MenuPrint(gStringVar4, 3, 15); -} \ No newline at end of file diff --git a/src/unused_8124F94.c b/src/unused_8124F94.c new file mode 100644 index 000000000..5f76fa92e --- /dev/null +++ b/src/unused_8124F94.c @@ -0,0 +1,126 @@ +#include "global.h" +#include "decompress.h" +#include "palette.h" + +struct UnknownStruct2 +{ + void *src; + u8 unk4; + u8 unk5; + u8 unk6; + u16 unk8; +}; + +struct UnknownStruct3 +{ + u16 *paletteSrc; + u8 unk4; + u8 paletteCount; +}; + +struct UnknownStruct1 +{ + u8 paletteNum; + u8 unk1; + u16 unk2; + u8 *dest; + struct UnknownStruct3 unk8[16]; + struct UnknownStruct2 unk88[32]; +}; + +void unref_sub_8124F94(struct UnknownStruct1 *a) +{ + a->unk1 = 0; + a->paletteNum = 0; + a->unk2 = 0; + a->dest = (void *)VRAM; + DmaFill16(3, 0, a->unk8, sizeof(a->unk8)); + DmaFill16(3, 0, a->unk88, sizeof(a->unk88)); +} + +u8 unref_sub_8124FD8(struct UnknownStruct1 *a, const struct UnknownStruct2 *b) +{ + while (1) + { + s32 r6; + s32 temp; + + // Couldn't get it to match any other way + if (a->unk1 < 32 && b->src == NULL) + return 0; + if (a->unk1 >= 32) + break; + + a->unk88[a->unk1].src = b->src; + a->unk88[a->unk1].unk6 = b->unk6; + a->unk88[a->unk1].unk4 = b->unk4; + a->unk88[a->unk1].unk5 = b->unk5; + r6 = b->unk4 * b->unk5; + if (a->unk2 + r6 > 0x400) + return 2; + if (b->unk8 == 0) + { + DmaCopy16(3, b->src, a->dest + a->unk2 * 64, r6 * 32); + } + else + { + LZDecompressWram(b->src, a->dest + a->unk2 * 64); + } + a->unk88[a->unk1].unk8 = a->unk2; + temp = r6 + a->unk2; + a->unk2 = temp; + a->unk1++; + b++; + } + return 1; +} + +u8 unref_sub_81250A4(struct UnknownStruct1 *a, struct UnknownStruct3 *b) +{ + while (1) + { + // Couldn't get it to match any other way + if (a->paletteNum < 16 && b->paletteSrc == NULL) + return 0; + if (a->paletteNum >= 16) + break; + + a->unk8[a->paletteNum].paletteSrc = b->paletteSrc; + a->unk8[a->paletteNum].unk4 = b->unk4; + if (b->paletteCount == 0) + { + LoadPalette(b->paletteSrc, a->paletteNum * 16, 32); + } + else + { + u16 palette[16]; + + LZDecompressWram(b->paletteSrc, palette); + LoadPalette(palette, a->paletteNum * 16, 32); + } + a->unk8[a->paletteNum].paletteCount = a->paletteNum; + a->paletteNum = a->paletteNum + 1; + b++; + } + return 1; +} + +u8 unref_sub_8125118(struct UnknownStruct1 *a, struct UnknownStruct3 *b) +{ + u16 palettes[16][16] = {0}; + u8 r7 = b->paletteCount; + u8 i; + + LZDecompressWram(b->paletteSrc, palettes); + for (i = a->paletteNum; i < r7; i++) + { + if (a->paletteNum + i >= 16) + return 1; + a->unk8[i].paletteSrc = b->paletteSrc; + a->unk8[i].unk4 = b->unk4 + i; + a->unk8[i].paletteCount = a->paletteNum; + LoadPalette(palettes[i], a->paletteNum * 16, sizeof(palettes[i])); + a->paletteNum++; + } + return 0; +} diff --git a/src/unused_81258BC.c b/src/unused_81258BC.c new file mode 100644 index 000000000..c509ea4c9 --- /dev/null +++ b/src/unused_81258BC.c @@ -0,0 +1,36 @@ +#include "constants/songs.h" +#include "global.h" +#include "menu.h" +#include "mystery_event_script.h" +#include "sound.h" +#include "text.h" + +void sub_812AF10(void); + +bool8 unref_sub_812AECC(u8 *script) +{ + u8 result = RunMysteryEventScript(script); + switch (result) + { + case 0: + return FALSE; + case 1: + PlaySE(SE_BOO); + return TRUE; + case 2: + sub_812AF10(); + return FALSE; + case 3: + PlaySE(SE_BOO); + sub_812AF10(); + return TRUE; + default: + return FALSE; + } +} + +void sub_812AF10(void) +{ + MenuDrawTextWindow(2, 14, 27, 19); + MenuPrint(gStringVar4, 3, 15); +} \ No newline at end of file -- cgit v1.2.3