diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/berry_tag_screen.c | 571 |
1 files changed, 148 insertions, 423 deletions
diff --git a/src/berry_tag_screen.c b/src/berry_tag_screen.c index 1b432fe70..164e2cfc2 100644 --- a/src/berry_tag_screen.c +++ b/src/berry_tag_screen.c @@ -18,12 +18,14 @@ #define OFFSET_7B (123) #define FIRST_BERRY ITEM_CHERI_BERRY -struct Struct2000000 { +struct Struct2000000 +{ /*0x00*/ u8 filler_0[0x1FFFF]; - /*0x1FFFF*/ bool8 var_1FFFF; + /*0x1FFFF*/ u8 var_1FFFF; }; -struct BerryTagStatus { +struct BerryTagStatus +{ s16 circles[5]; }; @@ -59,19 +61,21 @@ static void sub_8146480(u8 taskid); static void sub_81464E4(void); static void sub_8146600(u8 berry); // static void sub_81466A0(void); -static void sub_81466E8(u8 taskId, s32 direction); +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_8146014(void) { +static void sub_8146014(void) +{ AnimateSprites(); BuildOamBuffer(); RunTasks(); UpdatePaletteFade(); } -static void sub_814602C(void) { +static void sub_814602C(void) +{ REG_BG0VOFS = gUnknown_030041B4; REG_BG1VOFS = gUnknown_030041B4; @@ -80,162 +84,146 @@ static void sub_814602C(void) { TransferPlttBuffer(); } -static bool8 sub_8146058(void) { +static bool8 sub_8146058(void) +{ u8 berry; u16 backup; - switch (gMain.state) { - case 0: - sub_80F9438(); - sub_80F9368(); - sub_8146288(); - REG_BLDCNT = 0; - gMain.state += 1; - break; - - case 1: - ResetPaletteFade(); - gPaletteFade.bufferTransferDisabled = 1; - gMain.state += 1; - break; - - case 2: - ResetSpriteData(); - gMain.state += 1; - break; - - case 3: - SetUpWindowConfig(&gWindowConfig_81E6E18); - gMain.state += 1; - break; - - case 4: - MultistepInitMenuWindowBegin(&gWindowConfig_81E6E18); - gMain.state += 1; - break; - - case 5: - if (!MultistepInitMenuWindowContinue()) { - return FALSE; - } - unk_2000000.var_1FFFF = 0; - gMain.state += 1; - break; - - case 6: - if (!sub_81462B8()) { - break; - } - - unk_2000000.var_1FFFF = 0; - gMain.state += 1; - break; - - case 7: - sub_81464E4(); - gMain.state += 1; - break; - - case 8: - berry = gScriptItemId + OFFSET_7B; - gUnknown_0203932C = sub_80A7D8C(berry, 56, 64); - gMain.state += 1; - break; - - case 9: - sub_8146600(gScriptItemId + OFFSET_7B); - gMain.state += 1; + switch (gMain.state) + { + case 0: + sub_80F9438(); + sub_80F9368(); + sub_8146288(); + REG_BLDCNT = 0; + gMain.state += 1; + break; + case 1: + ResetPaletteFade(); + gPaletteFade.bufferTransferDisabled = 1; + gMain.state += 1; + break; + case 2: + ResetSpriteData(); + gMain.state += 1; + break; + case 3: + SetUpWindowConfig(&gWindowConfig_81E6E18); + gMain.state += 1; + break; + case 4: + MultistepInitMenuWindowBegin(&gWindowConfig_81E6E18); + gMain.state += 1; + break; + case 5: + if (!MultistepInitMenuWindowContinue()) break; - - case 10: - backup = REG_IME; - REG_IME = 0; - REG_IE |= INTR_FLAG_VBLANK; - REG_IME = backup; - - REG_DISPSTAT |= DISPSTAT_VBLANK_INTR; - SetVBlankCallback(sub_814602C); - REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_1D_MAP; - gMain.state += 1; + unk_2000000.var_1FFFF = 0; + gMain.state += 1; + break; + case 6: + if (!sub_81462B8()) break; - - case 11: - if (sub_8055870() == TRUE) { - break; - } - gMain.state += 1; + unk_2000000.var_1FFFF = 0; + gMain.state += 1; + break; + case 7: + sub_81464E4(); + gMain.state += 1; + break; + case 8: + berry = gScriptItemId + OFFSET_7B; + gUnknown_0203932C = sub_80A7D8C(berry, 56, 64); + gMain.state += 1; + break; + case 9: + sub_8146600(gScriptItemId + OFFSET_7B); + gMain.state += 1; + break; + case 10: + backup = REG_IME; + REG_IME = 0; + REG_IE |= INTR_FLAG_VBLANK; + REG_IME = backup; + REG_DISPSTAT |= DISPSTAT_VBLANK_INTR; + SetVBlankCallback(sub_814602C); + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_ON | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_1D_MAP; + gMain.state += 1; + break; + case 11: + if (sub_8055870() == TRUE) break; - - case 12: - BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); - gPaletteFade.bufferTransferDisabled = 0; - SetMainCallback2(sub_8146014); - return TRUE; - + gMain.state += 1; + break; + case 12: + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + gPaletteFade.bufferTransferDisabled = 0; + SetMainCallback2(sub_8146014); + return TRUE; } return FALSE; } -void BerryTagScreen_814625C(u8 taskId) { - do { - if (sub_8146058() == TRUE) { +void BerryTagScreen_814625C(u8 taskId) +{ + do + { + if (sub_8146058() == TRUE) + { CreateTask(sub_8146480, 0); return; } - } while (sub_80F9344() != TRUE); } -static void sub_8146288(void) { +static void sub_8146288(void) +{ REG_BG1CNT = 0x502; REG_BG2CNT = 0x600; REG_BG3CNT = 0x703; gUnknown_030041B4 = 0; } -#ifdef NONMATCHING -bool8 sub_81462B8(void) { +bool8 sub_81462B8(void) +{ u16 i; + void *addr; - switch (unk_2000000.var_1FFFF) { + 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++) { - u16 (*buffer)[0x400] = &gBGTilemapBuffers[3]; - if (gSaveBlock2.playerGender == MALE) { - (*buffer)[i] = 0x4042; - } else { - (*buffer)[i] = 0x5042; - } + 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; @@ -244,208 +232,40 @@ bool8 sub_81462B8(void) { return FALSE; } -#else -__attribute__((naked)) -static bool8 sub_81462B8(void) { - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - ldr r1, _081462D4 @ =0x02000000\n\ - ldr r2, _081462D8 @ =0x0001ffff\n\ - adds r0, r1, r2\n\ - ldrb r0, [r0]\n\ - mov r12, r1\n\ - cmp r0, 0x6\n\ - bls _081462CA\n\ - b _08146404\n\ -_081462CA:\n\ - lsls r0, 2\n\ - ldr r1, _081462DC @ =_081462E0\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ -_081462D4: .4byte 0x02000000\n\ -_081462D8: .4byte 0x0001ffff\n\ -_081462DC: .4byte _081462E0\n\ - .align 2, 0\n\ -_081462E0:\n\ - .4byte _081462FC\n\ - .4byte _0814630C\n\ - .4byte _0814632C\n\ - .4byte _08146340\n\ - .4byte _081463A4\n\ - .4byte _081463C4\n\ - .4byte _081463E4\n\ -_081462FC:\n\ - ldr r0, _08146308 @ =gBerryCheck_Gfx\n\ - movs r1, 0xC0\n\ - lsls r1, 19\n\ - bl LZDecompressVram\n\ - b _081463CA\n\ - .align 2, 0\n\ -_08146308: .4byte gBerryCheck_Gfx\n\ -_0814630C:\n\ - ldr r0, _0814631C @ =gUnknown_08E788E4\n\ - ldr r1, _08146320 @ =0x06002800\n\ - bl LZDecompressVram\n\ - ldr r1, _08146324 @ =0x02000000\n\ - ldr r2, _08146328 @ =0x0001ffff\n\ - adds r1, r2\n\ - b _081463D0\n\ - .align 2, 0\n\ -_0814631C: .4byte gUnknown_08E788E4\n\ -_08146320: .4byte 0x06002800\n\ -_08146324: .4byte 0x02000000\n\ -_08146328: .4byte 0x0001ffff\n\ -_0814632C:\n\ - ldr r0, _08146338 @ =gUnknown_08E78A84\n\ - ldr r1, _0814633C @ =0x06003000\n\ - bl LZDecompressVram\n\ - b _081463CA\n\ - .align 2, 0\n\ -_08146338: .4byte gUnknown_08E78A84\n\ -_0814633C: .4byte 0x06003000\n\ -_08146340:\n\ - movs r1, 0\n\ - ldr r7, _0814635C @ =gBGTilemapBuffers + 0x1000\n\ - adds r2, r7, 0\n\ - ldr r6, _08146360 @ =0x00004042\n\ - ldr r5, _08146364 @ =gSaveBlock2\n\ - ldr r4, _08146368 @ =0x00005042\n\ - ldr r3, _0814636C @ =0x000003ff\n\ -_0814634E:\n\ - ldrb r0, [r5, 0x8]\n\ - cmp r0, 0\n\ - bne _08146370\n\ - lsls r0, r1, 1\n\ - adds r0, r2\n\ - strh r6, [r0]\n\ - b _08146376\n\ - .align 2, 0\n\ -_0814635C: .4byte gBGTilemapBuffers + 0x1000\n\ -_08146360: .4byte 0x00004042\n\ -_08146364: .4byte gSaveBlock2\n\ -_08146368: .4byte 0x00005042\n\ -_0814636C: .4byte 0x000003ff\n\ -_08146370:\n\ - lsls r0, r1, 1\n\ - adds r0, r2\n\ - strh r4, [r0]\n\ -_08146376:\n\ - adds r0, r1, 0x1\n\ - lsls r0, 16\n\ - lsrs r1, r0, 16\n\ - cmp r1, r3\n\ - bls _0814634E\n\ - ldr r1, _08146394 @ =0x06003800\n\ - ldr r0, _08146398 @ =0x040000d4\n\ - str r7, [r0]\n\ - str r1, [r0, 0x4]\n\ - ldr r1, _0814639C @ =0x80000400\n\ - str r1, [r0, 0x8]\n\ - ldr r0, [r0, 0x8]\n\ - ldr r1, _081463A0 @ =0x0001ffff\n\ - add r1, r12\n\ - b _081463D0\n\ - .align 2, 0\n\ -_08146394: .4byte 0x06003800\n\ -_08146398: .4byte 0x040000d4\n\ -_0814639C: .4byte 0x80000400\n\ -_081463A0: .4byte 0x0001ffff\n\ -_081463A4:\n\ - ldr r0, _081463B8 @ =gBerryCheck_Pal\n\ - movs r1, 0\n\ - movs r2, 0xC0\n\ - bl LoadCompressedPalette\n\ - ldr r1, _081463BC @ =0x02000000\n\ - ldr r2, _081463C0 @ =0x0001ffff\n\ - adds r1, r2\n\ - b _081463D0\n\ - .align 2, 0\n\ -_081463B8: .4byte gBerryCheck_Pal\n\ -_081463BC: .4byte 0x02000000\n\ -_081463C0: .4byte 0x0001ffff\n\ -_081463C4:\n\ - ldr r0, _081463D8 @ =gUnknown_083C1F74\n\ - bl LoadCompressedObjectPic\n\ -_081463CA:\n\ - ldr r1, _081463DC @ =0x02000000\n\ - ldr r0, _081463E0 @ =0x0001ffff\n\ - adds r1, r0\n\ -_081463D0:\n\ - ldrb r0, [r1]\n\ - adds r0, 0x1\n\ - strb r0, [r1]\n\ - b _08146404\n\ - .align 2, 0\n\ -_081463D8: .4byte gUnknown_083C1F74\n\ -_081463DC: .4byte 0x02000000\n\ -_081463E0: .4byte 0x0001ffff\n\ -_081463E4:\n\ - ldr r0, _081463F8 @ =gUnknown_083C1F7C\n\ - bl LoadCompressedObjectPalette\n\ - ldr r0, _081463FC @ =0x02000000\n\ - ldr r1, _08146400 @ =0x0001ffff\n\ - adds r0, r1\n\ - movs r1, 0\n\ - strb r1, [r0]\n\ - movs r0, 0x1\n\ - b _08146406\n\ - .align 2, 0\n\ -_081463F8: .4byte gUnknown_083C1F7C\n\ -_081463FC: .4byte 0x02000000\n\ -_08146400: .4byte 0x0001ffff\n\ -_08146404:\n\ - movs r0, 0\n\ -_08146406:\n\ - pop {r4-r7}\n\ - pop {r1}\n\ - bx r1\n\ - .syntax divided\n"); -} -#endif -static void sub_814640C(u8 taskId) { - if (gPaletteFade.active) { - return; +static void sub_814640C(u8 taskId) +{ + if (!gPaletteFade.active) + { + SetMainCallback2(sub_80A5B40); + sub_80A7DD4(); + gpu_pal_allocator_reset__manage_upper_four(); + DestroyTask(taskId); } - - SetMainCallback2(sub_80A5B40); - sub_80A7DD4(); - gpu_pal_allocator_reset__manage_upper_four(); - DestroyTask(taskId); } -static void sub_8146440(u8 taskId) { +static void sub_8146440(u8 taskId) +{ PlaySE(SE_SELECT); BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); - gTasks[taskId].func = sub_814640C; } -static void sub_8146480(u8 taskid) { - register u16 keys asm("r1"); - - if (gPaletteFade.active) { - return; - } - - keys = gMain.newAndRepeatedKeys & (DPAD_RIGHT | DPAD_LEFT | DPAD_UP | DPAD_DOWN); - if (keys == DPAD_UP) { - sub_81466E8(taskid, -1); - } - - keys = gMain.newAndRepeatedKeys & (DPAD_RIGHT | DPAD_LEFT | DPAD_UP | DPAD_DOWN); - if (keys == DPAD_DOWN) { - sub_81466E8(taskid, 1); - } - - if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) { - sub_8146440(taskid); +static void sub_8146480(u8 taskid) +{ + if (!gPaletteFade.active) + { + if ((gMain.newAndRepeatedKeys & (DPAD_RIGHT | DPAD_LEFT | DPAD_UP | DPAD_DOWN)) == DPAD_UP) + sub_81466E8(taskid, -1); + if ((gMain.newAndRepeatedKeys & (DPAD_RIGHT | DPAD_LEFT | DPAD_UP | DPAD_DOWN)) == DPAD_DOWN) + sub_81466E8(taskid, 1); + if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) + sub_8146440(taskid); } } -static void sub_81464E4(void) { +static void sub_81464E4(void) +{ struct Berry *berryInfo; u32 size; s32 sizeMajor; @@ -461,163 +281,68 @@ static void sub_81464E4(void) { MenuPrint(berryInfo->description2, 4, 16); size = (berryInfo->size * 1000) / 254; - if (size % 10 >= 5) { + if (size % 10 >= 5) size += 10; - } sizeMinor = (size % 100) / 10; sizeMajor = size / 100; MenuPrint(gOtherText_Size, 11, 7); - if (berryInfo->size != 0) { + if (berryInfo->size != 0) + { ConvertIntToDecimalStringN(gStringVar1, sizeMajor, STR_CONV_MODE_LEFT_ALIGN, 2); ConvertIntToDecimalStringN(gStringVar2, sizeMinor, STR_CONV_MODE_LEFT_ALIGN, 2); MenuPrint(gContestStatsText_Unknown1, 16, 7); - } else { + } + else + { MenuPrint(gOtherText_ThreeQuestions2, 16, 7); } MenuPrint(gOtherText_Firm, 11, 9); - if (berryInfo->firmness != 0) { + if (berryInfo->firmness != 0) MenuPrint(gUnknown_0841192C[berryInfo->firmness - 1], 16, 9); - } else { + else MenuPrint(gOtherText_ThreeQuestions2, 16, 9); - } } -#ifdef NONMATCHING -static void sub_8146600(u8 berry) { +static void sub_8146600(u8 berry) +{ struct Berry *berryInfo; u16 i; berryInfo = GetBerryInfo(berry +1); + for (i = 0; i < 5; i++) + gUnknown_0203932E.circles[i] = (u16)gUnknown_0203932E.circles[i] | 0xFFFF; - for (i = 0; i < 5; i++) { - gUnknown_0203932E.circles[i] |= 0xFFFF; - } - - if (berryInfo->spicy) { - // argument is the center of the circle + // argument is the center of the circle + if (berryInfo->spicy) gUnknown_0203932E.circles[0] = sub_80A7E5C(48); - } - - if (berryInfo->dry) { + if (berryInfo->dry) gUnknown_0203932E.circles[1] = sub_80A7E5C(88); - } - - if (berryInfo->sweet) { + if (berryInfo->sweet) gUnknown_0203932E.circles[2] = sub_80A7E5C(128); - } - - if (berryInfo->bitter) { + if (berryInfo->bitter) gUnknown_0203932E.circles[3] = sub_80A7E5C(168); - } - - if (berryInfo->sour) { + if (berryInfo->sour) gUnknown_0203932E.circles[4] = sub_80A7E5C(208); - } } -#else -__attribute__((naked)) -static void sub_8146600(u8 berry) { - asm(".syntax unified\n\ - push {r4,r5,lr}\n\ - lsls r0, 24\n\ - movs r1, 0x80\n\ - lsls r1, 17\n\ - adds r0, r1\n\ - lsrs r0, 24\n\ - bl GetBerryInfo\n\ - adds r4, r0, 0\n\ - movs r2, 0\n\ - ldr r5, _08146698 @ =gUnknown_0203932E\n\ - ldr r0, _0814669C @ =0x0000ffff\n\ - adds r3, r0, 0\n\ -_0814661A:\n\ - lsls r0, r2, 1\n\ - adds r0, r5\n\ - ldrh r1, [r0]\n\ - orrs r1, r3\n\ - strh r1, [r0]\n\ - adds r0, r2, 0x1\n\ - lsls r0, 16\n\ - lsrs r2, r0, 16\n\ - cmp r2, 0x4\n\ - bls _0814661A\n\ - ldrb r0, [r4, 0x15]\n\ - cmp r0, 0\n\ - beq _08146642\n\ - movs r0, 0x30\n\ - bl sub_80A7E5C\n\ - ldr r1, _08146698 @ =gUnknown_0203932E\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - strh r0, [r1]\n\ -_08146642:\n\ - ldrb r0, [r4, 0x16]\n\ - cmp r0, 0\n\ - beq _08146656\n\ - movs r0, 0x58\n\ - bl sub_80A7E5C\n\ - ldr r1, _08146698 @ =gUnknown_0203932E\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - strh r0, [r1, 0x2]\n\ -_08146656:\n\ - ldrb r0, [r4, 0x17]\n\ - cmp r0, 0\n\ - beq _0814666A\n\ - movs r0, 0x80\n\ - bl sub_80A7E5C\n\ - ldr r1, _08146698 @ =gUnknown_0203932E\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - strh r0, [r1, 0x4]\n\ -_0814666A:\n\ - ldrb r0, [r4, 0x18]\n\ - cmp r0, 0\n\ - beq _0814667E\n\ - movs r0, 0xA8\n\ - bl sub_80A7E5C\n\ - ldr r1, _08146698 @ =gUnknown_0203932E\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - strh r0, [r1, 0x6]\n\ -_0814667E:\n\ - ldrb r0, [r4, 0x19]\n\ - cmp r0, 0\n\ - beq _08146692\n\ - movs r0, 0xD0\n\ - bl sub_80A7E5C\n\ - ldr r1, _08146698 @ =gUnknown_0203932E\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - strh r0, [r1, 0x8]\n\ -_08146692:\n\ - pop {r4,r5}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_08146698: .4byte gUnknown_0203932E\n\ -_0814669C: .4byte 0x0000ffff\n\ - .syntax divided\n"); -} -#endif - -void sub_81466A0(void) { +void sub_81466A0(void) +{ u16 i; - for (i = 0; i < 5; i++) { - if (gUnknown_0203932E.circles[i] != -1) { + for (i = 0; i < 5; i++) + { + if (gUnknown_0203932E.circles[i] != -1) + { DestroySprite(&gSprites[gUnknown_0203932E.circles[i]]); gUnknown_0203932E.circles[i] = -1; } } } - __attribute__((naked)) -static void sub_81466E8(u8 taskId, s32 direction) { +static void sub_81466E8(u8 taskId, s8 direction) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ mov r7, r8\n\ |