diff options
author | yenatch <yenatch@gmail.com> | 2017-03-22 18:34:29 -0400 |
---|---|---|
committer | yenatch <yenatch@gmail.com> | 2017-03-22 18:34:29 -0400 |
commit | 7acbfe40778bfbd03b0e2d357efef9ee9b0a34e9 (patch) | |
tree | 90c0b95146f3d768b536658eac6a63ff9adcaaec /src/berry_tag_screen.c | |
parent | c0a27d5455014bfe54f7ea73e8a38ce0ed8da6da (diff) | |
parent | e3c26e52ae6ab881ade913ca1fad2cd9629bbcb1 (diff) |
Merge remote-tracking branch 'origin/master'
Conflicts:
Makefile
Diffstat (limited to 'src/berry_tag_screen.c')
-rw-r--r-- | src/berry_tag_screen.c | 480 |
1 files changed, 218 insertions, 262 deletions
diff --git a/src/berry_tag_screen.c b/src/berry_tag_screen.c index 164e2cfc2..103f0a85e 100644 --- a/src/berry_tag_screen.c +++ b/src/berry_tag_screen.c @@ -3,6 +3,7 @@ #include "asm.h" #include "berry.h" #include "decompress.h" +#include "items.h" #include "main.h" #include "menu.h" #include "palette.h" @@ -13,7 +14,6 @@ #include "string_util.h" #include "task.h" #include "text.h" -#include "items.h" #define OFFSET_7B (123) #define FIRST_BERRY ITEM_CHERI_BERRY @@ -30,7 +30,6 @@ struct BerryTagStatus }; extern struct Struct2000000 unk_2000000; -extern u16 gBGTilemapBuffers[4][0x400]; extern u8 gUnknown_0203932C; extern struct BerryTagStatus gUnknown_0203932E; extern u16 gScriptItemId; @@ -63,8 +62,8 @@ static void sub_8146600(u8 berry); // static void sub_81466A0(void); static void sub_81466E8(u8 taskId, s8 direction); // static void sub_8146798(u8 berry); -// static void sub_8146810(u8 berry); -// static void sub_81468BC(void); +static void sub_8146810(s8 berry); +static void sub_81468BC(void); static void sub_8146014(void) { @@ -192,42 +191,42 @@ bool8 sub_81462B8(void) switch (unk_2000000.var_1FFFF) { - case 0: - LZDecompressVram(gBerryCheck_Gfx, (void *) VRAM); - unk_2000000.var_1FFFF += 1; - break; - case 1: - LZDecompressVram(gUnknown_08E788E4, (void *) VRAM + 0x2800); - unk_2000000.var_1FFFF += 1; - break; - case 2: - LZDecompressVram(gUnknown_08E78A84, (void *) VRAM + 0x3000); - unk_2000000.var_1FFFF += 1; - break; - case 3: - for (i = 0; i < 0x400; i++) - { - if (gSaveBlock2.playerGender == MALE) - gBGTilemapBuffers[2][i] = 0x4042; - else - gBGTilemapBuffers[2][i] = 0x5042; - } - addr = (void *)(VRAM + 0x3800); - DmaCopy16(3, gBGTilemapBuffers[2], addr, 0x800); - unk_2000000.var_1FFFF += 1; - break; - case 4: - LoadCompressedPalette(gBerryCheck_Pal, 0, 96 * 2); - unk_2000000.var_1FFFF += 1; - break; - case 5: - LoadCompressedObjectPic(&gUnknown_083C1F74); - unk_2000000.var_1FFFF += 1; - break; - case 6: - LoadCompressedObjectPalette(&gUnknown_083C1F7C); - unk_2000000.var_1FFFF = 0; - return TRUE; + case 0: + LZDecompressVram(gBerryCheck_Gfx, (void *)VRAM); + unk_2000000.var_1FFFF += 1; + break; + case 1: + LZDecompressVram(gUnknown_08E788E4, (void *)VRAM + 0x2800); + unk_2000000.var_1FFFF += 1; + break; + case 2: + LZDecompressVram(gUnknown_08E78A84, (void *)VRAM + 0x3000); + unk_2000000.var_1FFFF += 1; + break; + case 3: + for (i = 0; i < 0x400; i++) + { + if (gSaveBlock2.playerGender == MALE) + gBGTilemapBuffers[2][i] = 0x4042; + else + gBGTilemapBuffers[2][i] = 0x5042; + } + addr = (void *)(VRAM + 0x3800); + DmaCopy16(3, gBGTilemapBuffers[2], addr, 0x800); + unk_2000000.var_1FFFF += 1; + break; + case 4: + LoadCompressedPalette(gBerryCheck_Pal, 0, 96 * 2); + unk_2000000.var_1FFFF += 1; + break; + case 5: + LoadCompressedObjectPic(&gUnknown_083C1F74); + unk_2000000.var_1FFFF += 1; + break; + case 6: + LoadCompressedObjectPalette(&gUnknown_083C1F7C); + unk_2000000.var_1FFFF = 0; + return TRUE; } return FALSE; @@ -266,7 +265,7 @@ static void sub_8146480(u8 taskid) static void sub_81464E4(void) { - struct Berry *berryInfo; + const struct Berry *berryInfo; u32 size; s32 sizeMajor; s32 sizeMinor; @@ -307,10 +306,10 @@ static void sub_81464E4(void) static void sub_8146600(u8 berry) { - struct Berry *berryInfo; + const struct Berry *berryInfo; u16 i; - berryInfo = GetBerryInfo(berry +1); + berryInfo = GetBerryInfo(berry + 1); for (i = 0; i < 5; i++) gUnknown_0203932E.circles[i] = (u16)gUnknown_0203932E.circles[i] | 0xFFFF; @@ -342,257 +341,214 @@ void sub_81466A0(void) } __attribute__((naked)) -static void sub_81466E8(u8 taskId, s8 direction) { +static void sub_81466E8(u8 taskId, s8 direction) +{ asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r8\n\ - push {r7}\n\ - lsls r0, 24\n\ - lsrs r7, r0, 24\n\ - lsls r1, 24\n\ - lsrs r2, r1, 24\n\ - lsls r0, r7, 2\n\ - adds r0, r7\n\ - lsls r0, 3\n\ - ldr r1, _08146748 @ =gTasks + 0x8\n\ - adds r6, r0, r1\n\ - ldr r4, _0814674C @ =gUnknown_03005D10\n\ - movs r0, 0xC\n\ - adds r0, r4\n\ - mov r8, r0\n\ - ldrb r1, [r0, 0x1]\n\ - ldrb r0, [r4, 0xC]\n\ - adds r1, r0\n\ - cmp r1, 0\n\ - bne _08146718\n\ - lsls r0, r2, 24\n\ - cmp r0, 0\n\ - blt _0814678C\n\ + push {r4-r7,lr}\n\ + mov r7, r8\n\ + push {r7}\n\ + lsls r0, 24\n\ + lsrs r7, r0, 24\n\ + lsls r1, 24\n\ + lsrs r2, r1, 24\n\ + lsls r0, r7, 2\n\ + adds r0, r7\n\ + lsls r0, 3\n\ + ldr r1, _08146748 @ =gTasks + 0x8\n\ + adds r6, r0, r1\n\ + ldr r4, _0814674C @ =gUnknown_03005D10\n\ + movs r0, 0xC\n\ + adds r0, r4\n\ + mov r8, r0\n\ + ldrb r1, [r0, 0x1]\n\ + ldrb r0, [r4, 0xC]\n\ + adds r1, r0\n\ + cmp r1, 0\n\ + bne _08146718\n\ + lsls r0, r2, 24\n\ + cmp r0, 0\n\ + blt _0814678C\n\ _08146718:\n\ - adds r0, r1, 0x1\n\ - lsls r5, r2, 24\n\ - mov r1, r8\n\ - ldrb r1, [r1, 0x2]\n\ - cmp r0, r1\n\ - bne _08146728\n\ - cmp r5, 0\n\ - bgt _0814678C\n\ + adds r0, r1, 0x1\n\ + lsls r5, r2, 24\n\ + mov r1, r8\n\ + ldrb r1, [r1, 0x2]\n\ + cmp r0, r1\n\ + bne _08146728\n\ + cmp r5, 0\n\ + bgt _0814678C\n\ _08146728:\n\ - movs r0, 0x5\n\ - bl PlaySE\n\ - mov r2, r8\n\ - ldrb r3, [r2, 0x1]\n\ - ldrb r4, [r4, 0xC]\n\ - mov r12, r4\n\ - adds r0, r3, r4\n\ - asrs r2, r5, 24\n\ - adds r1, r0, r2\n\ - cmp r1, 0\n\ - bge _08146750\n\ - negs r0, r0\n\ - strh r0, [r6, 0x2]\n\ - b _08146766\n\ - .align 2, 0\n\ + movs r0, 0x5\n\ + bl PlaySE\n\ + mov r2, r8\n\ + ldrb r3, [r2, 0x1]\n\ + ldrb r4, [r4, 0xC]\n\ + mov r12, r4\n\ + adds r0, r3, r4\n\ + asrs r2, r5, 24\n\ + adds r1, r0, r2\n\ + cmp r1, 0\n\ + bge _08146750\n\ + negs r0, r0\n\ + strh r0, [r6, 0x2]\n\ + b _08146766\n\ + .align 2, 0\n\ _08146748: .4byte gTasks + 0x8\n\ _0814674C: .4byte gUnknown_03005D10\n\ _08146750:\n\ - mov r4, r8\n\ - ldrb r0, [r4, 0x2]\n\ - cmp r1, r0\n\ - blt _08146764\n\ - subs r0, r3\n\ - mov r1, r12\n\ - subs r0, r1\n\ - subs r0, 0x1\n\ - strh r0, [r6, 0x2]\n\ - b _08146766\n\ + mov r4, r8\n\ + ldrb r0, [r4, 0x2]\n\ + cmp r1, r0\n\ + blt _08146764\n\ + subs r0, r3\n\ + mov r1, r12\n\ + subs r0, r1\n\ + subs r0, 0x1\n\ + strh r0, [r6, 0x2]\n\ + b _08146766\n\ _08146764:\n\ - strh r2, [r6, 0x2]\n\ + strh r2, [r6, 0x2]\n\ _08146766:\n\ - ldr r0, _08146780 @ =gTasks\n\ - lsls r1, r7, 2\n\ - adds r1, r7\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - ldr r0, _08146784 @ =sub_8146798\n\ - str r0, [r1]\n\ - cmp r5, 0\n\ - bge _08146788\n\ - movs r2, 0x10\n\ - negs r2, r2\n\ - adds r0, r2, 0\n\ - b _0814678A\n\ - .align 2, 0\n\ + ldr r0, _08146780 @ =gTasks\n\ + lsls r1, r7, 2\n\ + adds r1, r7\n\ + lsls r1, 3\n\ + adds r1, r0\n\ + ldr r0, _08146784 @ =sub_8146798\n\ + str r0, [r1]\n\ + cmp r5, 0\n\ + bge _08146788\n\ + movs r2, 0x10\n\ + negs r2, r2\n\ + adds r0, r2, 0\n\ + b _0814678A\n\ + .align 2, 0\n\ _08146780: .4byte gTasks\n\ _08146784: .4byte sub_8146798\n\ _08146788:\n\ - movs r0, 0x10\n\ + movs r0, 0x10\n\ _0814678A:\n\ - strh r0, [r6]\n\ + strh r0, [r6]\n\ _0814678C:\n\ - pop {r3}\n\ - mov r8, r3\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .syntax divided\n"); + pop {r3}\n\ + mov r8, r3\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .syntax divided\n"); } -__attribute__((naked)) -void sub_8146798(u8 berry) { - asm(".syntax unified\n\ - push {r4,r5,lr}\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - lsls r0, r4, 2\n\ - adds r0, r4\n\ - lsls r0, 3\n\ - ldr r1, _08146800 @ =gTasks + 0x8\n\ - adds r0, r1\n\ - ldr r2, _08146804 @ =gUnknown_030041B4\n\ - ldrh r1, [r0]\n\ - ldrh r5, [r2]\n\ - adds r3, r1, r5\n\ - movs r1, 0xFF\n\ - ands r3, r1\n\ - strh r3, [r2]\n\ - movs r1, 0\n\ - ldrsh r0, [r0, r1]\n\ - cmp r0, 0\n\ - ble _081467C2\n\ - cmp r3, 0x90\n\ - beq _081467CA\n\ -_081467C2:\n\ - cmp r0, 0\n\ - bge _081467E0\n\ - cmp r3, 0x70\n\ - bne _081467E0\n\ -_081467CA:\n\ - ldr r0, _08146808 @ =gTasks\n\ - lsls r1, r4, 2\n\ - adds r1, r4\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - movs r0, 0xA\n\ - ldrsb r0, [r1, r0]\n\ - bl sub_8146810\n\ - bl sub_81468BC\n\ -_081467E0:\n\ - ldr r0, _08146804 @ =gUnknown_030041B4\n\ - ldrh r2, [r0]\n\ - cmp r2, 0\n\ - bne _081467FA\n\ - ldr r0, _08146808 @ =gTasks\n\ - lsls r1, r4, 2\n\ - adds r1, r4\n\ - lsls r1, 3\n\ - adds r1, r0\n\ - strh r2, [r1, 0x8]\n\ - strh r2, [r1, 0xA]\n\ - ldr r0, _0814680C @ =sub_8146480\n\ - str r0, [r1]\n\ -_081467FA:\n\ - pop {r4,r5}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_08146800: .4byte gTasks + 0x8\n\ -_08146804: .4byte gUnknown_030041B4\n\ -_08146808: .4byte gTasks\n\ -_0814680C: .4byte sub_8146480\n\ - .syntax divided\n"); +void sub_8146798(u8 taskId) +{ + s16 *taskData = gTasks[taskId].data; + + gUnknown_030041B4 = (gUnknown_030041B4 + taskData[0]) & 0xFF; + if ((taskData[0] > 0 && gUnknown_030041B4 == 144) + || (taskData[0] < 0 && gUnknown_030041B4 == 112)) + { + sub_8146810(gTasks[taskId].data[1]); + sub_81468BC(); + } + if (gUnknown_030041B4 == 0) + { + gTasks[taskId].data[0] = gUnknown_030041B4; + gTasks[taskId].data[1] = gUnknown_030041B4; + gTasks[taskId].func = sub_8146480; + } } __attribute__((naked)) -void sub_8146810(u8 berry) { +static void sub_8146810(s8 berry) +{ asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - lsls r0, 24\n\ - lsrs r3, r0, 24\n\ - adds r4, r3, 0\n\ - lsls r0, r3, 24\n\ - asrs r1, r0, 24\n\ - cmp r1, 0\n\ - ble _08146848\n\ - ldr r0, _08146840 @ =gUnknown_03005D10\n\ - adds r4, r0, 0\n\ - adds r4, 0xC\n\ - ldrb r2, [r0, 0xC]\n\ - adds r1, r2, r1\n\ - adds r6, r0, 0\n\ - cmp r1, 0x7\n\ - ble _08146844\n\ - adds r0, r3, 0\n\ - adds r0, 0xF9\n\ - adds r0, r2, r0\n\ - ldrb r1, [r4, 0x1]\n\ - adds r0, r1\n\ - strb r0, [r4, 0x1]\n\ - movs r0, 0x7\n\ - b _0814686E\n\ - .align 2, 0\n\ + push {r4-r6,lr}\n\ + lsls r0, 24\n\ + lsrs r3, r0, 24\n\ + adds r4, r3, 0\n\ + lsls r0, r3, 24\n\ + asrs r1, r0, 24\n\ + cmp r1, 0\n\ + ble _08146848\n\ + ldr r0, _08146840 @ =gUnknown_03005D10\n\ + adds r4, r0, 0\n\ + adds r4, 0xC\n\ + ldrb r2, [r0, 0xC]\n\ + adds r1, r2, r1\n\ + adds r6, r0, 0\n\ + cmp r1, 0x7\n\ + ble _08146844\n\ + adds r0, r3, 0\n\ + adds r0, 0xF9\n\ + adds r0, r2, r0\n\ + ldrb r1, [r4, 0x1]\n\ + adds r0, r1\n\ + strb r0, [r4, 0x1]\n\ + movs r0, 0x7\n\ + b _0814686E\n\ + .align 2, 0\n\ _08146840: .4byte gUnknown_03005D10\n\ _08146844:\n\ - adds r0, r2, r3\n\ - b _0814686E\n\ + adds r0, r2, r3\n\ + b _0814686E\n\ _08146848:\n\ - ldr r0, _08146868 @ =gUnknown_03005D10\n\ - adds r5, r0, 0\n\ - adds r5, 0xC\n\ - ldrb r2, [r0, 0xC]\n\ - adds r1, r2, r1\n\ - adds r6, r0, 0\n\ - cmp r1, 0\n\ - bge _0814686C\n\ - adds r0, r2, r3\n\ - ldrb r1, [r5, 0x1]\n\ - adds r0, r1\n\ - movs r1, 0\n\ - strb r0, [r5, 0x1]\n\ - strb r1, [r6, 0xC]\n\ - b _08146870\n\ - .align 2, 0\n\ + ldr r0, _08146868 @ =gUnknown_03005D10\n\ + adds r5, r0, 0\n\ + adds r5, 0xC\n\ + ldrb r2, [r0, 0xC]\n\ + adds r1, r2, r1\n\ + adds r6, r0, 0\n\ + cmp r1, 0\n\ + bge _0814686C\n\ + adds r0, r2, r3\n\ + ldrb r1, [r5, 0x1]\n\ + adds r0, r1\n\ + movs r1, 0\n\ + strb r0, [r5, 0x1]\n\ + strb r1, [r6, 0xC]\n\ + b _08146870\n\ + .align 2, 0\n\ _08146868: .4byte gUnknown_03005D10\n\ _0814686C:\n\ - adds r0, r2, r4\n\ + adds r0, r2, r4\n\ _0814686E:\n\ - strb r0, [r6, 0xC]\n\ + strb r0, [r6, 0xC]\n\ _08146870:\n\ - ldr r2, _081468AC @ =gScriptItemId\n\ - movs r0, 0x3\n\ - lsls r0, 2\n\ - adds r0, r6\n\ - ldrb r1, [r0, 0x1]\n\ - ldrb r0, [r0]\n\ - adds r1, r0\n\ - ldr r0, _081468B0 @ =gUnknown_03005D24\n\ - ldr r0, [r0]\n\ - lsls r1, 2\n\ - adds r1, r0\n\ - ldrh r0, [r1]\n\ - strh r0, [r2]\n\ - ldr r0, _081468B4 @ =gUnknown_0203932C\n\ - ldrb r1, [r0]\n\ - lsls r0, r1, 4\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - ldr r1, _081468B8 @ =gSprites\n\ - adds r0, r1\n\ - bl DestroySprite\n\ - bl sub_81466A0\n\ - bl sub_80A7DD4\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ + ldr r2, _081468AC @ =gScriptItemId\n\ + movs r0, 0x3\n\ + lsls r0, 2\n\ + adds r0, r6\n\ + ldrb r1, [r0, 0x1]\n\ + ldrb r0, [r0]\n\ + adds r1, r0\n\ + ldr r0, _081468B0 @ =gUnknown_03005D24\n\ + ldr r0, [r0]\n\ + lsls r1, 2\n\ + adds r1, r0\n\ + ldrh r0, [r1]\n\ + strh r0, [r2]\n\ + ldr r0, _081468B4 @ =gUnknown_0203932C\n\ + ldrb r1, [r0]\n\ + lsls r0, r1, 4\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + ldr r1, _081468B8 @ =gSprites\n\ + adds r0, r1\n\ + bl DestroySprite\n\ + bl sub_81466A0\n\ + bl sub_80A7DD4\n\ + pop {r4-r6}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ _081468AC: .4byte gScriptItemId\n\ _081468B0: .4byte gUnknown_03005D24\n\ _081468B4: .4byte gUnknown_0203932C\n\ _081468B8: .4byte gSprites\n\ - .syntax divided\n"); + .syntax divided\n"); } -void sub_81468BC(void) { +static void sub_81468BC(void) +{ MenuZeroFillWindowRect(0, 4, 29, 19); sub_81464E4(); |