summaryrefslogtreecommitdiff
path: root/src/berry_tag_screen.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/berry_tag_screen.c')
-rw-r--r--src/berry_tag_screen.c1074
1 files changed, 387 insertions, 687 deletions
diff --git a/src/berry_tag_screen.c b/src/berry_tag_screen.c
index e7ef9ca76..116ca2cca 100644
--- a/src/berry_tag_screen.c
+++ b/src/berry_tag_screen.c
@@ -1,45 +1,46 @@
#include "global.h"
#include "berry_tag_screen.h"
-#include "asm.h"
#include "berry.h"
#include "decompress.h"
+#include "field_map_obj.h"
+#include "item_menu.h"
+#include "items.h"
#include "main.h"
#include "menu.h"
+#include "menu_helpers.h"
#include "palette.h"
#include "rom4.h"
#include "songs.h"
#include "sound.h"
#include "sprite.h"
#include "string_util.h"
+#include "strings.h"
#include "task.h"
#include "text.h"
#define OFFSET_7B (123)
-#define FIRST_BERRY (0x85) // ITEM_CHERI_BERRY
+#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];
};
extern struct Struct2000000 unk_2000000;
-extern u16 gBGTilemapBuffers[4][0x400];
extern u8 gUnknown_0203932C;
extern struct BerryTagStatus gUnknown_0203932E;
extern u16 gScriptItemId;
extern u16 gUnknown_030041B4;
-extern const struct SpriteSheet gUnknown_083C1F74;
-extern const struct SpritePalette gUnknown_083C1F7C;
+extern const struct CompressedSpriteSheet gUnknown_083C1F74;
+extern const struct CompressedSpritePalette gUnknown_083C1F7C;
-extern u8 gOtherText_ThreeQuestions2[];
-extern u8 gOtherText_Size[];
-extern u8 gOtherText_Firm[];
-extern u8 gContestStatsText_Unknown1[];
extern u8 *gUnknown_0841192C[];
extern u8 gBerryCheck_Gfx[];
@@ -58,19 +59,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_8146810(s8 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;
@@ -79,794 +82,491 @@ 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;
+ 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 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;
+ unk_2000000.var_1FFFF = 0;
+ gMain.state += 1;
+ break;
+ case 6:
+ if (!sub_81462B8())
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_OBJ_ON | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_1D_MAP;
- gMain.state += 1;
- 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) {
- REG_BG1CNT = 0x502;
- REG_BG2CNT = 0x600;
- REG_BG3CNT = 0x703;
+static void sub_8146288(void)
+{
+ REG_BG1CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(5) | BGCNT_16COLOR | BGCNT_TXT256x256;
+ REG_BG2CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(6) | BGCNT_16COLOR | BGCNT_TXT256x256;
+ REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(7) | BGCNT_16COLOR | BGCNT_TXT256x256;
gUnknown_030041B4 = 0;
}
-#ifdef NONMATCHING
-bool8 sub_81462B8(void) {
+bool8 sub_81462B8(void)
+{
u16 i;
-
- 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;
- }
- }
- 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;
+ void *addr;
+
+ 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;
}
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) {
- struct Berry *berryInfo;
+static void sub_81464E4(void)
+{
+ const struct Berry *berryInfo;
+#ifdef UNITS_IMPERIAL
u32 size;
s32 sizeMajor;
s32 sizeMinor;
+#endif
+#if GERMAN
+ u8 buffer[16];
+#endif
berryInfo = GetBerryInfo(gScriptItemId + OFFSET_7B + 1);
ConvertIntToDecimalStringN(gStringVar1, gScriptItemId - FIRST_BERRY + 1, STR_CONV_MODE_LEADING_ZEROS, 2);
MenuPrint(gStringVar1, 12, 4);
+#if ENGLISH
MenuPrint(berryInfo->name, 14, 4);
+#elif GERMAN
+ StringCopy(buffer, berryInfo->name);
+ StringAppend(buffer, gOtherText_Berry2);
+ MenuPrint(buffer, 14, 4);
+#endif
+
MenuPrint(berryInfo->description1, 4, 14);
MenuPrint(berryInfo->description2, 4, 16);
+#ifdef UNITS_IMPERIAL
size = (berryInfo->size * 1000) / 254;
- if (size % 10 >= 5) {
+ if (size % 10 >= 5)
size += 10;
- }
sizeMinor = (size % 100) / 10;
sizeMajor = size / 100;
+#endif
MenuPrint(gOtherText_Size, 11, 7);
- if (berryInfo->size != 0) {
+ if (berryInfo->size != 0)
+ {
+#ifdef UNITS_IMPERIAL
ConvertIntToDecimalStringN(gStringVar1, sizeMajor, STR_CONV_MODE_LEFT_ALIGN, 2);
ConvertIntToDecimalStringN(gStringVar2, sizeMinor, STR_CONV_MODE_LEFT_ALIGN, 2);
+#else
+ ConvertIntToDecimalStringN(gStringVar1, berryInfo->size / 10, STR_CONV_MODE_LEFT_ALIGN, 2);
+ ConvertIntToDecimalStringN(gStringVar2, berryInfo->size % 10, STR_CONV_MODE_LEFT_ALIGN, 2);
+#endif
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) {
- struct Berry *berryInfo;
+static void sub_8146600(u8 berry)
+{
+ const struct Berry *berryInfo;
u16 i;
- berryInfo = GetBerryInfo(berry +1);
-
- for (i = 0; i < 5; i++) {
- gUnknown_0203932E.circles[i] |= 0xFFFF;
- }
+ berryInfo = GetBerryInfo(berry + 1);
+ for (i = 0; i < 5; i++)
+ gUnknown_0203932E.circles[i] = (u16)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\
- 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();