From fcd62bf39372bbb26e21f3dfb67ccf1782954834 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Sun, 15 Oct 2017 14:36:53 -0700 Subject: Start decomp on rest of secret_base --- src/field/secret_base.c | 684 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 671 insertions(+), 13 deletions(-) (limited to 'src/field') diff --git a/src/field/secret_base.c b/src/field/secret_base.c index f221d7f16..d60938d1b 100644 --- a/src/field/secret_base.c +++ b/src/field/secret_base.c @@ -11,17 +11,31 @@ #include "map_constants.h" #include "map_name_popup.h" #include "menu.h" +#include "menu_helpers.h" #include "metatile_behavior.h" #include "palette.h" #include "pokemon.h" #include "overworld.h" #include "script.h" +#include "sound.h" #include "string_util.h" #include "strings.h" #include "task.h" #include "text.h" #include "vars.h" +extern void sub_80BCBF8(u8 taskId); +extern void sub_80BCC54(u8 taskId); +extern void sub_80BC824(u8 taskId); +extern void sub_80BC7D8(u8 taskId); +static void sub_80BCAEC(u8 taskId); +static void sub_80BC980(u8 taskId); +static void sub_80BC9E4(u8 taskId); +static u8 sub_80BC948(u8 a); +static void Task_SecretBasePC_Registry(u8 taskId); + +extern struct YesNoFuncTable gUnknown_083D13E4; +extern struct MenuAction gUnknown_083D13D4[]; extern u8 gUnknown_020387DC; extern u16 gSpecialVar_0x8004; extern u16 gSpecialVar_0x8005; @@ -36,14 +50,26 @@ extern const struct extern const u8 gUnknown_083D1374[4 * 16]; extern void *gUnknown_0300485C; extern const u8 gUnknown_083D13EC[12]; +extern u8 gUnknown_0815F399[]; +extern u8 gUnknown_0815F49A[]; extern u8 gUnknown_081A2E14[]; +extern u8 UnknownString_81A1BB2[]; +extern u8 UnknownString_81A1F67[]; +extern u8 UnknownString_81A2254[]; +extern u8 UnknownString_81A25C3[]; +extern u8 UnknownString_81A2925[]; +extern u8 UnknownString_81A1D74[]; +extern u8 UnknownString_81A20C9[]; +extern u8 UnknownString_81A2439[]; +extern u8 UnknownString_81A2B2A[]; +extern u8 UnknownString_81A2754[]; void sub_80BB4AC(struct SecretBaseRecord *record) // 080bb4ac { u16 i; u16 j; - record->sbr_field_0 = 0; + record->secretBaseId = 0; for (i=0; i<7; i++) record->sbr_field_2[i] = 0xff; for (i=0; i<4; i++) @@ -93,7 +119,7 @@ void sub_80BB5E4(void) // 80bb5e4 u16 idx; gScriptResult = 0; for (idx=0; idx<20; idx++) { - if (gUnknown_020387DC != gSaveBlock1.secretBases[idx].sbr_field_0) + if (gUnknown_020387DC != gSaveBlock1.secretBases[idx].secretBaseId) continue; gScriptResult = 1; VarSet(VAR_0x4054, idx); @@ -103,7 +129,7 @@ void sub_80BB5E4(void) // 80bb5e4 void sub_80BB63C(void) // 80bb63c { - if (gSaveBlock1.secretBases[0].sbr_field_0) + if (gSaveBlock1.secretBases[0].secretBaseId) gScriptResult = 1; else gScriptResult = 0; @@ -196,7 +222,7 @@ void sub_80BB8CC(void) { u8 nameLength; u16 idx; - gSaveBlock1.secretBases[0].sbr_field_0 = gUnknown_020387DC; + gSaveBlock1.secretBases[0].secretBaseId = gUnknown_020387DC; for (idx=0; idx<4; idx++) { gSaveBlock1.secretBases[0].trainerId[idx] = gSaveBlock2.playerTrainerId[idx]; } @@ -215,7 +241,7 @@ void sub_80BB970(struct MapEvents *events) for (bgevidx=0; bgevidxbgEventCount; bgevidx++) { if (events->bgEvents[bgevidx].kind == 8) { for (jdx=0; jdx<20; jdx++) { - if (gSaveBlock1.secretBases[jdx].sbr_field_0 == events->bgEvents[bgevidx].bgUnion.secretBaseId) { + if (gSaveBlock1.secretBases[jdx].secretBaseId == events->bgEvents[bgevidx].bgUnion.secretBaseId) { tile_id = MapGridGetMetatileIdAt(events->bgEvents[bgevidx].x + 7, events->bgEvents[bgevidx].y + 7); for (idx=0; idx<7; idx++) { if (gUnknown_083D1358[idx].unk_083D1358_0 == tile_id) { @@ -811,7 +837,7 @@ void sub_80BC0F8(void) { } void sub_80BC114(void) { - if (gSaveBlock1.secretBases[0].sbr_field_0 != gUnknown_020387DC) + if (gSaveBlock1.secretBases[0].secretBaseId != gUnknown_020387DC) gScriptResult = 1; else gScriptResult = 0; @@ -821,7 +847,7 @@ u8 sub_80BC14C(u8 sbid) { s16 idx; for (idx=0; idx<20; idx++) { - if (gSaveBlock1.secretBases[idx].sbr_field_0 == sbid) + if (gSaveBlock1.secretBases[idx].secretBaseId == sbid) return idx; } return 0; @@ -844,7 +870,7 @@ u8 *sub_80BC190(u8 *dest, u8 arg1) { // 80bc190 } u8 *GetSecretBaseMapName(u8 *dest) { - gUnknown_020387DC = gSaveBlock1.secretBases[VarGet(VAR_0x4054)].sbr_field_0; + gUnknown_020387DC = gSaveBlock1.secretBases[VarGet(VAR_0x4054)].secretBaseId; return sub_80BC190(dest, VarGet(VAR_0x4054)); } @@ -856,10 +882,10 @@ void sub_80BC224(void) { *var3 = EOS; } -u8 sub_80BC268(u8 foo) { // 80bc268 - if (gSaveBlock1.secretBases[foo].sbr_field_1_6) - return 1; - return 0; +bool8 sub_80BC268(u8 i) { // 80bc268 + if (gSaveBlock1.secretBases[i].sbr_field_1_6) + return TRUE; + return FALSE; } u8 sub_80BC298(struct Pokemon *mon) { // 80bc298 @@ -1070,6 +1096,638 @@ void sub_80BC440(void) void SecretBasePC_PackUp(void) { - IncrementGameStat(20); + IncrementGameStat(GAME_STAT_MOVED_SECRET_BASE); sub_80BC440(); } + +void sub_80BC474(void) +{ + u16 eventId; + struct MapEvents *mapEvents = gMapHeader.events; + for (eventId = 0; eventId < mapEvents->bgEventCount; eventId++) + { + if (mapEvents->bgEvents[eventId].kind == 8 + && gSaveBlock1.secretBases[0].secretBaseId == mapEvents->bgEvents[eventId].bgUnion.secretBaseId) + { + u16 i; + s16 tileId = MapGridGetMetatileIdAt(mapEvents->bgEvents[eventId].x + 7, mapEvents->bgEvents[eventId].y + 7); + + for (i = 0; i < 7; i++) + { + if (gUnknown_083D1358[i].unk_083D1358_1 == tileId) + { + MapGridSetMetatileIdAt( + mapEvents->bgEvents[eventId].x + 7, + mapEvents->bgEvents[eventId].y + 7, + gUnknown_083D1358[i].unk_083D1358_0 | 0xc00); + break; + } + } + + DrawWholeMapView(); + break; + } + } +} + +void sub_80BC50C(void) +{ + u16 backupValue; + sub_80BC474(); + IncrementGameStat(GAME_STAT_MOVED_SECRET_BASE); + + backupValue = gSaveBlock1.secretBases[0].sbr_field_e; + ResetSecretBase(0); + gSaveBlock1.secretBases[0].sbr_field_e = backupValue; +} + +u8 sub_80BC538(void) +{ + s16 secretBaseIndex; + u8 retVal = 0; + + for (secretBaseIndex = 1; secretBaseIndex < 20; secretBaseIndex++) + { + if (sub_80BC268(secretBaseIndex) == TRUE) + { + retVal++; + } + } + + return retVal; +} + +void sub_80BC56C(void) +{ + u8 secretBaseIndex = sub_80BC14C(gUnknown_020387DC); + if (sub_80BC268(secretBaseIndex) == TRUE) + { + gScriptResult = 1; + } + else if (sub_80BC538() > 9) + { + gScriptResult = 2; + } + else + { + gScriptResult = 0; + } +} + +void sub_80BC5BC(void) +{ + gSaveBlock1.secretBases[sub_80BC14C(gUnknown_020387DC)].sbr_field_1_6 ^= 1; + FlagSet(0x10C); +} + +void SecretBasePC_Decoration(void) +{ + CreateTask(Task_SecretBasePC_Decoration, 0); +} + +void SecretBasePC_Registry(void) +{ + CreateTask(Task_SecretBasePC_Registry, 0); +} + +void Task_SecretBasePC_Registry(u8 taskId) +{ + s16 *taskData; + + ScriptContext2_Enable(); + sub_80F944C(); + LoadScrollIndicatorPalette(); + + taskData = &gTasks[taskId].data[0]; + taskData[0] = sub_80BC538(); + if (taskData[0] != 0) + { + if (taskData[0] > 7) { + taskData[3] = 7; + } + else + { + taskData[3] = taskData[0]; + } + + taskData[1] = 0; + taskData[2] = 0; + + MenuZeroFillWindowRect(0, 0, 29, 19); + sub_80BC7D8(taskId); + + gTasks[taskId].func = sub_80BC824; + } + else + { + DisplayItemMessageOnField(taskId, gSecretBaseText_NoRegistry, sub_80BCC54, 0); + } +} + +#ifdef NONMATCHING +void sub_80BC6B0(u8 taskId) +{ + s16 *taskData = gTasks[taskId].data; + u8 count = 0; + u8 var1 = 0; + u8 i = 1; + + if (var1 == taskData[2]) + { + count = 1; + } + else + { + while (1) + { + if (sub_80BC268(i) == TRUE) + { + count++; + } + + i++; + if (i > 19) + { + break; + } + + if (count == taskData[2]) + { + count = i; + break; + } + } + } + + while (count < 20) + { + if (sub_80BC268(count) == TRUE) + { + sub_80BC190(gStringVar1, count); + MenuFillWindowRectWithBlankTile(18, var1 * 2 + 2, 28, var1 * 2 + 3); + MenuPrint(gStringVar1, 18, var1 * 2 + 2); + + var1++; + if (var1 == 8) + { + break; + } + } + + count++; + } + + if (var1 < 8) + { + MenuFillWindowRectWithBlankTile(18, var1 * 2 + 2, 28, var1 * 2 + 3); + MenuPrint(gUnknownText_Exit, 18, var1 * 2 + 2); + DestroyVerticalScrollIndicator(1); + + if (var1 != 7) + { + MenuFillWindowRectWithBlankTile(18, (((var1 << 25) + 0x4000000)) >> 24, 28, 18); + } + } + else + { + CreateVerticalScrollIndicators(1, 188, 152); + } + + if (taskData[2] == 0) + { + DestroyVerticalScrollIndicator(0); + } + else + { + CreateVerticalScrollIndicators(0, 188, 8); + } +} +#else +__attribute__((naked)) +void sub_80BC6B0(u8 taskId) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r8\n\ + push {r7}\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + lsls r1, r0, 2\n\ + adds r1, r0\n\ + lsls r1, 3\n\ + ldr r0, _080BC6D8 @ =gTasks + 0x8\n\ + adds r1, r0\n\ + mov r8, r1\n\ + movs r4, 0\n\ + movs r6, 0\n\ + movs r5, 0x1\n\ + movs r2, 0x4\n\ + ldrsh r0, [r1, r2]\n\ + cmp r6, r0\n\ + bne _080BC6DC\n\ + movs r4, 0x1\n\ + b _080BC706\n\ + .align 2, 0\n\ +_080BC6D8: .4byte gTasks + 0x8\n\ +_080BC6DC:\n\ + adds r0, r5, 0\n\ + bl sub_80BC268\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x1\n\ + bne _080BC6F0\n\ + adds r0, r4, 0x1\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ +_080BC6F0:\n\ + adds r0, r5, 0x1\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + cmp r5, 0x13\n\ + bhi _080BC706\n\ + mov r1, r8\n\ + movs r2, 0x4\n\ + ldrsh r0, [r1, r2]\n\ + cmp r4, r0\n\ + bne _080BC6DC\n\ + adds r4, r5, 0\n\ +_080BC706:\n\ + adds r5, r4, 0\n\ + cmp r5, 0x13\n\ + bhi _080BC75A\n\ + ldr r7, _080BC7A0 @ =gStringVar1\n\ +_080BC70E:\n\ + adds r0, r5, 0\n\ + bl sub_80BC268\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x1\n\ + bne _080BC750\n\ + adds r0, r7, 0\n\ + adds r1, r5, 0\n\ + bl sub_80BC190\n\ + lsls r3, r6, 1\n\ + adds r4, r3, 0x2\n\ + lsls r4, 24\n\ + lsrs r4, 24\n\ + adds r3, 0x3\n\ + lsls r3, 24\n\ + lsrs r3, 24\n\ + movs r0, 0x12\n\ + adds r1, r4, 0\n\ + movs r2, 0x1C\n\ + bl MenuFillWindowRectWithBlankTile\n\ + adds r0, r7, 0\n\ + movs r1, 0x12\n\ + adds r2, r4, 0\n\ + bl MenuPrint\n\ + adds r0, r6, 0x1\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ + cmp r6, 0x8\n\ + beq _080BC75A\n\ +_080BC750:\n\ + adds r0, r5, 0x1\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + cmp r5, 0x13\n\ + bls _080BC70E\n\ +_080BC75A:\n\ + cmp r6, 0x7\n\ + bhi _080BC7A8\n\ + lsls r3, r6, 1\n\ + adds r4, r3, 0x2\n\ + lsls r4, 24\n\ + lsrs r4, 24\n\ + adds r3, 0x3\n\ + lsls r3, 24\n\ + lsrs r3, 24\n\ + movs r0, 0x12\n\ + adds r1, r4, 0\n\ + movs r2, 0x1C\n\ + bl MenuFillWindowRectWithBlankTile\n\ + ldr r0, _080BC7A4 @ =gUnknownText_Exit\n\ + movs r1, 0x12\n\ + adds r2, r4, 0\n\ + bl MenuPrint\n\ + movs r0, 0x1\n\ + bl DestroyVerticalScrollIndicator\n\ + cmp r6, 0x7\n\ + beq _080BC7B2\n\ + lsls r1, r6, 25\n\ + movs r0, 0x80\n\ + lsls r0, 19\n\ + adds r1, r0\n\ + lsrs r1, 24\n\ + movs r0, 0x12\n\ + movs r2, 0x1C\n\ + movs r3, 0x12\n\ + bl MenuFillWindowRectWithBlankTile\n\ + b _080BC7B2\n\ + .align 2, 0\n\ +_080BC7A0: .4byte gStringVar1\n\ +_080BC7A4: .4byte gUnknownText_Exit\n\ +_080BC7A8:\n\ + movs r0, 0x1\n\ + movs r1, 0xBC\n\ + movs r2, 0x98\n\ + bl CreateVerticalScrollIndicators\n\ +_080BC7B2:\n\ + mov r1, r8\n\ + movs r2, 0x4\n\ + ldrsh r0, [r1, r2]\n\ + cmp r0, 0\n\ + bne _080BC7C4\n\ + movs r0, 0\n\ + bl DestroyVerticalScrollIndicator\n\ + b _080BC7CE\n\ +_080BC7C4:\n\ + movs r0, 0\n\ + movs r1, 0xBC\n\ + movs r2, 0x8\n\ + bl CreateVerticalScrollIndicators\n\ +_080BC7CE:\n\ + pop {r3}\n\ + mov r8, r3\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .syntax divided\n"); +} +#endif + +void sub_80BC7D8(u8 taskId) +{ + u16 *taskData = &gTasks[taskId].data[0]; + MenuDrawTextWindow(17, 0, 29, 19); + InitMenu(0, 18, 2, taskData[3] + 1, taskData[1], 11); + sub_80BC6B0(taskId); +} + +void sub_80BC824(u8 taskId) +{ + s16 *taskData = gTasks[taskId].data; + + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + if (taskData[1]) + { + PlaySE(5); + taskData[1] = MoveMenuCursor(-1); + } + else if (taskData[2]) + { + PlaySE(5); + taskData[2]--; + sub_80BC6B0(taskId); + } + else + { + return; + } + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + if (taskData[1] == taskData[3]) + { + if (taskData[2] + taskData[1] != taskData[0]) + { + PlaySE(5); + taskData[2]++; + sub_80BC6B0(taskId); + } + } + else + { + PlaySE(5); + taskData[1] = MoveMenuCursor(1); + } + } + else if (gMain.newKeys & A_BUTTON) + { + PlaySE(5); + if (taskData[1] + taskData[2] == taskData[0]) + { + HandleDestroyMenuCursors(); + MenuZeroFillWindowRect(0, 0, 29, 19); + sub_80BCC54(taskId); + } + else + { + HandleDestroyMenuCursors(); + taskData[4] = sub_80BC948(taskData[1] + taskData[2]); + sub_80BC980(taskId); + } + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(5); + HandleDestroyMenuCursors(); + MenuZeroFillWindowRect(0, 0, 29, 19); + sub_80BCC54(taskId); + } +} + +u8 sub_80BC948(u8 a) +{ + u8 secretBaseIndex; + u8 count = 0; + + for (secretBaseIndex = 1; secretBaseIndex < 20; secretBaseIndex++) + { + if (sub_80BC268(secretBaseIndex) == TRUE) + { + if (a == count) + { + return secretBaseIndex; + } + else + { + count++; + } + } + } + + return 0; +} + +void sub_80BC980(u8 taskId) +{ + PauseVerticalScrollIndicator(0); + PauseVerticalScrollIndicator(1); + MenuDrawTextWindow(1, 0, 12, 5); + PrintMenuItems(2, 1, 2, gUnknown_083D13D4); + InitMenu(0, 2, 1, 2, 0, 10); + gTasks[taskId].func = sub_80BC9E4; +} + +void sub_80BC9E4(u8 taskId) +{ + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + if (GetMenuCursorPos()) + { + PlaySE(5); + MoveMenuCursor(-1); + } + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + if (GetMenuCursorPos() != 1) + { + PlaySE(5); + MoveMenuCursor(1); + } + } + else if (gMain.newKeys & A_BUTTON) + { + PlaySE(5); + gUnknown_083D13D4[GetMenuCursorPos()].func(taskId); + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(5); + sub_80BCBF8(taskId); + } +} + +void sub_80BCA84(u8 taskId) +{ + s16 *taskData = gTasks[taskId].data; + + DestroyVerticalScrollIndicator(0); + DestroyVerticalScrollIndicator(1); + HandleDestroyMenuCursors(); + MenuZeroFillWindowRect(0, 0, 29, 19); + + sub_80BC190(gStringVar1, taskData[4]); + StringExpandPlaceholders(gStringVar4, gOtherText_OkayToDeleteFromRegistry); + DisplayItemMessageOnField(taskId, gStringVar4, sub_80BCAEC, 0); +} + +void sub_80BCAEC(u8 taskId) +{ + DisplayYesNoMenu(20, 8, 1); + DoYesNoFuncWithChoice(taskId, &gUnknown_083D13E4); +} + +void sub_80BCB10(u8 taskId) +{ + s16 *taskData = gTasks[taskId].data; + + MenuZeroFillWindowRect(0, 0, 29, 19); + + gSaveBlock1.secretBases[taskData[4]].sbr_field_1_6 = 0; + taskData[0]--; + + if (taskData[2] > 0) + { + taskData[2]--; + } + + if (taskData[0] < 8) + { + taskData[3]--; + } + + sub_80BC7D8(taskId); + gTasks[taskId].func = sub_80BC824; +} + +void sub_80BCB90(u8 taskId) +{ + MenuZeroFillWindowRect(20, 8, 26, 13); + DisplayItemMessageOnField(taskId, gOtherText_RegisteredDataDeleted, sub_80BCB10, 0); +} + +void sub_80BCBC0(u8 taskId) +{ + MenuZeroFillWindowRect(0, 0, 29, 19); + + sub_80BC7D8(taskId); + gTasks[taskId].func = sub_80BC824; +} + +void sub_80BCBF8(u8 taskId) +{ + s16 *taskData = gTasks[taskId].data; + + InitMenu(0, 18, 2, taskData[3] + 1, taskData[1], 11); + MenuZeroFillWindowRect(1, 0, 12, 5); + StartVerticalScrollIndicators(0); + StartVerticalScrollIndicators(1); + + gTasks[taskId].func = sub_80BC824; +} + +void sub_80BCC54(u8 taskId) +{ + u16 curBaseIndex = VarGet(VAR_0x4054); + + BuyMenuFreeMemory(); + DestroyVerticalScrollIndicator(0); + DestroyVerticalScrollIndicator(1); + + if (curBaseIndex == 0) + { + ScriptContext1_SetupScript(gUnknown_0815F399); + } + else + { + ScriptContext1_SetupScript(gUnknown_0815F49A); + } + + DestroyTask(taskId); +} + +u8 sub_80BCCA4(u8 secretBaseIndex) +{ + return (gSaveBlock1.secretBases[secretBaseIndex].sbr_field_2[7] % 5) + + gSaveBlock1.secretBases[secretBaseIndex].gender * 5; +} + +u8 *sub_80BCCE8(void) +{ + u8 var1 = sub_80BCCA4(VarGet(VAR_0x4054)); + + if (var1 == 0) + { + return UnknownString_81A1BB2; + } + else if (var1 == 1) + { + return UnknownString_81A1F67; + } + else if (var1 == 2) + { + return UnknownString_81A2254; + } + else if (var1 == 3) + { + return UnknownString_81A25C3; + } + else if (var1 == 4) + { + return UnknownString_81A2925; + } + else if (var1 == 5) + { + return UnknownString_81A1D74; + } + else if (var1 == 6) + { + return UnknownString_81A20C9; + } + else if (var1 == 7) + { + return UnknownString_81A2439; + } + else if (var1 == 8) + { + return UnknownString_81A2754; + } + else + { + return UnknownString_81A2B2A; + } +} -- cgit v1.2.3 From b29c65b176bc7441ac38002e2ea9e38f8e4e9ce6 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Sun, 15 Oct 2017 19:25:32 -0700 Subject: Continue decomp of secret_base --- src/field/secret_base.c | 195 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 195 insertions(+) (limited to 'src/field') diff --git a/src/field/secret_base.c b/src/field/secret_base.c index d60938d1b..339b8a104 100644 --- a/src/field/secret_base.c +++ b/src/field/secret_base.c @@ -3,8 +3,10 @@ #include "decoration.h" #include "event_data.h" #include "field_camera.h" +#include "field_effect.h" #include "field_fadetransition.h" #include "field_player_avatar.h" +#include "field_specials.h" #include "field_weather.h" #include "fieldmap.h" #include "main.h" @@ -18,12 +20,18 @@ #include "overworld.h" #include "script.h" #include "sound.h" +#include "species.h" #include "string_util.h" #include "strings.h" #include "task.h" #include "text.h" #include "vars.h" + +extern void DoDecorationSoundEffect(s16 metatileId); +extern void sub_80C6A54(s16 x, s16 y); +extern void sub_80C68A4(s16 metatileId, s16 x, s16 y); +extern void DoYellowCave4Sparkle(void); extern void sub_80BCBF8(u8 taskId); extern void sub_80BCC54(u8 taskId); extern void sub_80BC824(u8 taskId); @@ -1731,3 +1739,190 @@ u8 *sub_80BCCE8(void) return UnknownString_81A2B2A; } } + +// Debugging function to test secret base battles. +void unref_sub_80BCD7C(u8 secretBaseIndex) +{ + u16 i; + for (i = 0; i == 0; i++) + { + gSaveBlock1.secretBases[secretBaseIndex].partyPersonality[i] = i + 1; + gSaveBlock1.secretBases[secretBaseIndex].partyMoves[i * 4] = i + 1; + gSaveBlock1.secretBases[secretBaseIndex].partySpecies[i] = SPECIES_TREECKO; + gSaveBlock1.secretBases[secretBaseIndex].partyHeldItems[i] = i + 1; + gSaveBlock1.secretBases[secretBaseIndex].partyLevels[i] = i + 5; + gSaveBlock1.secretBases[secretBaseIndex].partyEVs[i] = i * 5; + } +} + +void sub_80BCE1C(void) +{ + u16 curBaseIndex = VarGet(VAR_0x4054); + sub_810FB10(1); + + CreateSecretBaseEnemyParty(&gSaveBlock1.secretBases[curBaseIndex]); +} + +void sub_80BCE4C() +{ + gSaveBlock1.secretBases[VarGet(VAR_0x4054)].sbr_field_1_5 = gScriptResult; +} + +void sub_80BCE90() +{ + u16 curBaseIndex = VarGet(VAR_0x4054); + + if (!FlagGet(0x8C2)) + { + u8 i; + + for (i = 0; i < 20; i++) + { + gSaveBlock1.secretBases[i].sbr_field_1_5 = 0; + } + + FlagSet(0x8C2); + } + + gSpecialVar_0x8004 = sub_80BCCA4(curBaseIndex); + gScriptResult = gSaveBlock1.secretBases[curBaseIndex].sbr_field_1_5; +} + +void sub_80BCF1C(u8 taskId) +{ + s16 x, y; + u32 behavior; + s16 *taskData = gTasks[taskId].data; + + switch (taskData[1]) + { + case 0: + PlayerGetDestCoords(&taskData[2], &taskData[3]); + taskData[1] = 1; + break; + case 1: + PlayerGetDestCoords(&x, &y); + if (x != taskData[2] || y != taskData[3]) + { + taskData[2] = x; + taskData[3] = y; + + behavior = MapGridGetMetatileBehaviorAt(x, y); + if (sub_8057350(behavior) == TRUE) + { + DoYellowCave4Sparkle(); + } + else if (sub_8057314(behavior) == TRUE) + { + sub_80C68A4(MapGridGetMetatileIdAt(x, y), x, y); + } + else if (sub_8057328(behavior) == TRUE) + { + sub_80C6A54(x, y); + } + else if (sub_805733C(behavior) == TRUE) + { + DoDecorationSoundEffect(MapGridGetMetatileIdAt(x, y)); + } + } + break; + case 2: + if (!FieldEffectActiveListContains(taskData[4])) + { + taskData[1] = 1; + } + break; + } +} + +void sub_80BD034(u8 i, struct SecretBaseRecord *secretBase) +{ + gSaveBlock1.secretBases[i] = *secretBase; + gSaveBlock1.secretBases[i].sbr_field_1_6 = 2; +} + +bool8 sub_80BD070(struct SecretBaseRecord *baseA, struct SecretBaseRecord *baseB) +{ + u8 i; + + for (i = 0; i < 4; i++) + { + if (baseA->trainerId[i] != baseB->trainerId[i]) + { + return FALSE; + } + } + + return TRUE; +} + +bool8 sub_80BD0A0(struct SecretBaseRecord *baseA, struct SecretBaseRecord *baseB) +{ + u8 i; + + for (i = 0; i < 7 && (baseA->sbr_field_2[i] != 0xFF || baseB->sbr_field_2[i] != 0xFF); i++) + { + if (baseA->sbr_field_2[i] != baseB->sbr_field_2[i]) + { + return FALSE; + } + } + + return TRUE; +} + +bool8 sub_80BD0EC(struct SecretBaseRecord *baseA, struct SecretBaseRecord *baseB) +{ + if (baseA->gender == baseB->gender && sub_80BD070(baseA, baseB) && sub_80BD0A0(baseA, baseB)) + { + return TRUE; + } + + + return FALSE; +} + +s16 sub_80BD12C(u8 secretBaseId) +{ + s16 i; + + for (i = 0; i < 20; i++) + { + if (gSaveBlock1.secretBases[i].secretBaseId == secretBaseId) + { + return i; + } + } + + return -1; +} + +u8 sub_80BD170(void) +{ + s16 i; + + for (i = 1; i < 20; i++) + { + if (gSaveBlock1.secretBases[i].secretBaseId == 0) + { + return i; + } + } + + return 0; +} + +u8 sub_80BD1B0(void) +{ + s16 i; + + for (i = 1; i < 20; i++) + { + if (gSaveBlock1.secretBases[i].sbr_field_1_6 == 0 && gSaveBlock1.secretBases[i].sbr_field_1_0 == 0) + { + return i; + } + } + + return 0; +} -- cgit v1.2.3 From 687fee8891816c7d9b21670ba326edde8b15dce1 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Mon, 16 Oct 2017 14:38:52 -0700 Subject: Finish secret_base decomp --- src/field/secret_base.c | 484 +++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 433 insertions(+), 51 deletions(-) (limited to 'src/field') diff --git a/src/field/secret_base.c b/src/field/secret_base.c index be73f04bf..f2ed6adb6 100644 --- a/src/field/secret_base.c +++ b/src/field/secret_base.c @@ -12,6 +12,7 @@ #include "field_specials.h" #include "field_weather.h" #include "fieldmap.h" +#include "link.h" #include "main.h" #include "sound.h" #include "songs.h" @@ -33,29 +34,27 @@ #include "vars.h" +static void sub_80BC7D8(u8 taskId); +static void sub_80BC824(u8 taskId); static u8 sub_80BC948(u8 a); - -extern u8 gUnknown_0815F399[]; -extern u8 gUnknown_0815F49A[]; +static void sub_80BC980(u8 taskId); +static void sub_80BC9E4(u8 taskId); +static void sub_80BCA84(u8); +static void sub_80BCAEC(u8 taskId); +static void sub_80BCB90(u8); +static void sub_80BCBC0(u8); +static void sub_80BCBF8(u8 taskId); +static void sub_80BCC54(u8 taskId); +static void Task_SecretBasePC_Registry(u8 taskId); extern void DoDecorationSoundEffect(s16 metatileId); extern void sub_80C6A54(s16 x, s16 y); extern void sub_80C68A4(s16 metatileId, s16 x, s16 y); extern void DoYellowCave4Sparkle(void); -void sub_80BCA84(u8); -void sub_80BCBF8(u8 taskId); -void sub_80BCB90(u8); -void sub_80BCBC0(u8); - -void Task_SecretBasePC_Registry(u8 taskId); -void sub_80BC7D8(u8 taskId); -void sub_80BC824(u8 taskId); -void sub_80BCC54(u8 taskId); -void sub_80BC980(u8 taskId); -void sub_80BC9E4(u8 taskId); -void sub_80BCAEC(u8 taskId); -u8 sub_80BCCA4(u8); +extern u8 gUnknown_0815F399[]; +extern u8 gUnknown_0815F49A[]; +extern u8 gUnknown_020387DC; const struct { @@ -71,7 +70,6 @@ const struct {0x271, 0x278} }; -extern u8 gUnknown_020387DC; const u8 gUnknown_083D1374[] = { MAP_ID_SECRET_BASE_RED_CAVE1, 0, @@ -152,13 +150,13 @@ extern u8 UnknownString_81A2B2A[]; extern u8 UnknownString_81A2754[]; -void sub_80BB4AC(struct SecretBaseRecord *record) // 080bb4ac +void ClearSecretBase(struct SecretBaseRecord *record) { u16 i; u16 j; record->secretBaseId = 0; - for (i=0; i<7; i++) - record->sbr_field_2[i] = 0xff; + for (i=0; iplayerName[i] = 0xff; for (i=0; i<4; i++) record->trainerId[i] = 0x00; record->sbr_field_e = 0; @@ -184,32 +182,32 @@ void sub_80BB4AC(struct SecretBaseRecord *record) // 080bb4ac } } -void ResetSecretBase(u8 idx) // 80bb594 +void ResetSecretBase(u8 idx) { - sub_80BB4AC(&(gSaveBlock1.secretBases[idx])); + ClearSecretBase(&gSaveBlock1.secretBases[idx]); } -void ResetSecretBases(void) // 080bb5b4 +void ResetSecretBases(void) { u16 i; - for (i=0; i<20; i++) + for (i = 0; i < MAX_SECRET_BASES; i++) ResetSecretBase(i); } -void sub_80BB5D0(void) // 080bb5d0 +void sub_80BB5D0(void) { gUnknown_020387DC = gSpecialVar_0x8004; } -void sub_80BB5E4(void) // 80bb5e4 +void sub_80BB5E4(void) { - u16 idx; + u16 i; gScriptResult = 0; - for (idx=0; idx<20; idx++) { - if (gUnknown_020387DC != gSaveBlock1.secretBases[idx].secretBaseId) + for (i = 0; i < MAX_SECRET_BASES; i++) { + if (gUnknown_020387DC != gSaveBlock1.secretBases[i].secretBaseId) continue; gScriptResult = 1; - VarSet(VAR_0x4054, idx); + VarSet(VAR_0x4054, i); break; } } @@ -315,8 +313,8 @@ void sub_80BB8CC(void) } VarSet(VAR_0x4054, 0); nameLength = sub_80BB8A8(gSaveBlock2.playerName); - memset(gSaveBlock1.secretBases[0].sbr_field_2, 0xFF, 7); - StringCopyN(gSaveBlock1.secretBases[0].sbr_field_2, gSaveBlock2.playerName, nameLength); + memset(gSaveBlock1.secretBases[0].playerName, 0xFF, OT_NAME_LENGTH); + StringCopyN(gSaveBlock1.secretBases[0].playerName, gSaveBlock2.playerName, nameLength); gSaveBlock1.secretBases[0].gender = gSaveBlock2.playerGender; VarSet(VAR_SECRET_BASE_MAP, gMapHeader.regionMapSectionId); } @@ -327,7 +325,7 @@ void sub_80BB970(struct MapEvents *events) s16 tile_id; for (bgevidx=0; bgevidxbgEventCount; bgevidx++) { if (events->bgEvents[bgevidx].kind == 8) { - for (jdx=0; jdx<20; jdx++) { + for (jdx=0; jdxbgEvents[bgevidx].bgUnion.secretBaseId) { tile_id = MapGridGetMetatileIdAt(events->bgEvents[bgevidx].x + 7, events->bgEvents[bgevidx].y + 7); for (idx=0; idx<7; idx++) { @@ -364,7 +362,7 @@ void sub_80BBA48(u8 taskid) case 2: curbaseid = VarGet(VAR_0x4054); if (gSaveBlock1.secretBases[curbaseid].sbr_field_10 < 0xff) - gSaveBlock1.secretBases[curbaseid].sbr_field_10 ++; + gSaveBlock1.secretBases[curbaseid].sbr_field_10++; sub_80BBA14(); warp_in(); gFieldCallback = sub_8080990; @@ -503,7 +501,6 @@ void sub_80BBDD0(void) } } } - #else __attribute__((naked)) void sub_80BBDD0(void) @@ -808,7 +805,7 @@ void sub_80BC114(void) { u8 sub_80BC14C(u8 sbid) { s16 idx; - for (idx=0; idx<20; idx++) { + for (idx=0; idxsbr_field_2[i] != 0xFF || baseB->sbr_field_2[i] != 0xFF); i++) + for (i = 0; i < OT_NAME_LENGTH && (baseA->playerName[i] != 0xFF || baseB->playerName[i] != 0xFF); i++) { - if (baseA->sbr_field_2[i] != baseB->sbr_field_2[i]) + if (baseA->playerName[i] != baseB->playerName[i]) { return FALSE; } @@ -1619,7 +1616,7 @@ s16 sub_80BD12C(u8 secretBaseId) { s16 i; - for (i = 0; i < 20; i++) + for (i = 0; i < MAX_SECRET_BASES; i++) { if (gSaveBlock1.secretBases[i].secretBaseId == secretBaseId) { @@ -1634,7 +1631,7 @@ u8 sub_80BD170(void) { s16 i; - for (i = 1; i < 20; i++) + for (i = 1; i < MAX_SECRET_BASES; i++) { if (gSaveBlock1.secretBases[i].secretBaseId == 0) { @@ -1649,7 +1646,7 @@ u8 sub_80BD1B0(void) { s16 i; - for (i = 1; i < 20; i++) + for (i = 1; i < MAX_SECRET_BASES; i++) { if (gSaveBlock1.secretBases[i].sbr_field_1_6 == 0 && gSaveBlock1.secretBases[i].sbr_field_1_0 == 0) { @@ -1659,3 +1656,388 @@ u8 sub_80BD1B0(void) return 0; } + +#ifdef NONMATCHING +u8 sub_80BD1FC(struct SecretBaseRecord *secretBase) +{ + s16 secretBaseIndex; + + if (!secretBase->secretBaseId) + { + return 0; + } + + secretBaseIndex = sub_80BD12C(secretBase->secretBaseId); + if (secretBaseIndex) + { + if (secretBaseIndex != -1) + { + if (gSaveBlock1.secretBases[secretBaseIndex].sbr_field_1_0 != 1) + { + if (gSaveBlock1.secretBases[secretBaseIndex].sbr_field_1_6 != 2 + || secretBase->sbr_field_1_0 == 1) + { + sub_80BD034(secretBaseIndex, secretBase); + return secretBaseIndex; + } + } + } + else + { + secretBaseIndex = sub_80BD170(); + if (secretBaseIndex == 0) + { + secretBaseIndex = sub_80BD1B0(); + if (secretBaseIndex) + { + sub_80BD034(secretBaseIndex, secretBase); + return secretBaseIndex; + } + } + else + { + sub_80BD034(secretBaseIndex, secretBase); + return secretBaseIndex; + } + } + } + + return 0; +} +#else +__attribute__((naked)) +u8 sub_80BD1FC(struct SecretBaseRecord *secretBase) +{ + asm(".syntax unified\n\ + push {r4,r5,lr}\n\ + adds r5, r0, 0\n\ + ldrb r0, [r5]\n\ + cmp r0, 0\n\ + beq _080BD278\n\ + ldrb r0, [r5]\n\ + bl sub_80BD12C\n\ + lsls r0, 16\n\ + lsrs r4, r0, 16\n\ + asrs r2, r0, 16\n\ + cmp r2, 0\n\ + beq _080BD278\n\ + movs r0, 0x1\n\ + negs r0, r0\n\ + cmp r2, r0\n\ + beq _080BD254\n\ + ldr r0, _080BD24C @ =gSaveBlock1\n\ + lsls r1, r2, 2\n\ + adds r1, r2\n\ + lsls r1, 5\n\ + adds r1, r0\n\ + ldr r0, _080BD250 @ =0x00001a09\n\ + adds r1, r0\n\ + ldrb r1, [r1]\n\ + lsls r0, r1, 28\n\ + lsrs r0, 28\n\ + cmp r0, 0x1\n\ + beq _080BD278\n\ + lsrs r0, r1, 6\n\ + cmp r0, 0x2\n\ + bne _080BD246\n\ + ldrb r1, [r5, 0x1]\n\ + movs r0, 0xF\n\ + ands r0, r1\n\ + cmp r0, 0x1\n\ + bne _080BD278\n\ +_080BD246:\n\ + lsls r4, 24\n\ + lsrs r4, 24\n\ + b _080BD26C\n\ + .align 2, 0\n\ +_080BD24C: .4byte gSaveBlock1\n\ +_080BD250: .4byte 0x00001a09\n\ +_080BD254:\n\ + bl sub_80BD170\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + cmp r4, 0\n\ + bne _080BD26C\n\ + bl sub_80BD1B0\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + cmp r4, 0\n\ + beq _080BD278\n\ +_080BD26C:\n\ + adds r0, r4, 0\n\ + adds r1, r5, 0\n\ + bl sub_80BD034\n\ + adds r0, r4, 0\n\ + b _080BD27A\n\ +_080BD278:\n\ + movs r0, 0\n\ +_080BD27A:\n\ + pop {r4,r5}\n\ + pop {r1}\n\ + bx r1\n\ +.syntax divided\n"); +} +#endif + +void sub_80BD280(void) +{ + u8 i; + u8 j; + struct SecretBaseRecord temp; + struct SecretBaseRecord *secretBases = gSaveBlock1.secretBases; + + for (i = 1; i < MAX_SECRET_BASES - 1; i++) + { + for (j = i + 1; j < MAX_SECRET_BASES; j++) + { + if ((!secretBases[i].sbr_field_1_6 && secretBases[j].sbr_field_1_6 == 1) + || (secretBases[i].sbr_field_1_6 == 2 && secretBases[j].sbr_field_1_6 != 2)) + { + temp = secretBases[i]; + secretBases[i] = secretBases[j]; + secretBases[j] = temp; + } + } + } +} + +void sub_80BD328(struct SecretBaseRecord *secretBases, u8 b) +{ + u16 i; + + for (i = 1; i < MAX_SECRET_BASES; i++) + { + if (secretBases[i].sbr_field_1_6 == b) + { + sub_80BD1FC(&secretBases[i]); + } + } +} + +bool8 sub_80BD358(struct SecretBaseRecord *secretBase) +{ + u8 i; + + if (!secretBase->secretBaseId) + return FALSE; + + if (secretBase->secretBaseId && secretBase->gender != gSaveBlock2.playerGender) + return FALSE; + + // Check if the player's trainer Id matches the secret base's id. + for (i = 0; i < 4; i++) + { + if (secretBase->trainerId[i] != gSaveBlock2.playerTrainerId[i]) + return FALSE; + } + + for (i = 0; i < OT_NAME_LENGTH && (secretBase->playerName[i] != 0xFF || gSaveBlock2.playerName[i] != 0xFF); i++) + { + if (secretBase->playerName[i] != gSaveBlock2.playerName[i]) + return FALSE; + } + + return TRUE; +} + +void sub_80BD3DC(struct SecretBaseRecord *basesA, struct SecretBaseRecord *basesB, struct SecretBaseRecord *basesC) +{ + u8 i; + u8 var1 = 0; + + for (i = 0; i < MAX_SECRET_BASES; i++) + { + if ((var1 & 1) == 0) + { + if (sub_80BD358(&basesA[i]) == TRUE) + { + ClearSecretBase(&basesA[i]); + var1 |= 1; + } + } + + if ((var1 & 2) == 0) + { + if (sub_80BD358(&basesB[i]) == TRUE) + { + ClearSecretBase(&basesB[i]); + var1 |= 2; + } + } + + if ((var1 & 4) == 0) + { + if (sub_80BD358(&basesC[i]) == TRUE) + { + ClearSecretBase(&basesC[i]); + var1 |= 4; + } + } + + if (var1 == 7) + { + break; + } + } +} + +bool8 sub_80BD494(struct SecretBaseRecord *base, struct SecretBaseRecord *secretBases, u8 c) +{ + u8 i; + + for (i = 0; i < MAX_SECRET_BASES; i++) + { + if (secretBases[i].secretBaseId) + { + if (sub_80BD0EC(base, &secretBases[i]) == TRUE) + { + if (c == 0) + { + ClearSecretBase(&secretBases[i]); + return FALSE; + } + + if (base->sbr_field_e > secretBases[i].sbr_field_e) + { + ClearSecretBase(&secretBases[i]); + return FALSE; + } + + secretBases[i].sbr_field_1_0 = base->sbr_field_1_0; + + ClearSecretBase(base); + return TRUE; + } + } + } + + return FALSE; +} + +void sub_80BD514(struct SecretBaseRecord *basesA, struct SecretBaseRecord *basesB, struct SecretBaseRecord *basesC, struct SecretBaseRecord *basesD) +{ + u8 i; + + for (i = 1; i < MAX_SECRET_BASES; i++) + { + if (basesA[i].secretBaseId) + { + if (basesA[i].sbr_field_1_6 == 1) + { + basesA[i].sbr_field_1_0 = 1; + } + + if (!sub_80BD494(&basesA[i], basesB, i)) + { + if (!sub_80BD494(&basesA[i], basesC, i)) + { + sub_80BD494(&basesA[i], basesD, i); + } + } + } + } + + for (i = 0; i < MAX_SECRET_BASES; i++) + { + if (basesB[i].secretBaseId) + { + basesB[i].sbr_field_1_5 = 0; + + if (!sub_80BD494(&basesB[i], basesC, i)) + { + sub_80BD494(&basesB[i], basesD, i); + } + } + } + + for (i = 0; i < MAX_SECRET_BASES; i++) + { + if (basesC[i].secretBaseId) + { + basesC[i].sbr_field_1_5 = 0; + sub_80BD494(&basesC[i], basesD, i); + } + + if (basesD[i].secretBaseId) + { + basesD[i].sbr_field_1_5 = 0; + } + } +} + +void sub_80BD610(struct SecretBaseRecord *basesA, struct SecretBaseRecord *basesB, struct SecretBaseRecord *basesC) +{ + sub_80BD3DC(basesA, basesB, basesC); + sub_80BD514(gSaveBlock1.secretBases, basesA, basesB, basesC); + + sub_80BD1FC(basesA); + sub_80BD1FC(basesB); + sub_80BD1FC(basesC); + + sub_80BD328(basesA, 1); + sub_80BD328(basesB, 1); + sub_80BD328(basesC, 1); + + sub_80BD328(basesA, 0); + sub_80BD328(basesB, 0); + sub_80BD328(basesC, 0); +} + +void sub_80BD674(void *playerRecords, u32 size, u8 c) +{ + if (FlagGet(0x60)) + { + u16 i; + u8 numLinkedPlayers = GetLinkPlayerCount(); + switch (numLinkedPlayers) + { + case 2: + memset(playerRecords + size * 2, 0, size); + memset(playerRecords + size * 3, 0, size); + break; + case 3: + memset(playerRecords + size * 3, 0, size); + break; + } + + switch (c) + { + case 0: + sub_80BD610(playerRecords + size, playerRecords + size * 2, playerRecords + size * 3); + break; + case 1: + sub_80BD610(playerRecords + size * 2, playerRecords + size * 3, playerRecords); + break; + case 2: + sub_80BD610(playerRecords + size * 3, playerRecords, playerRecords + size); + break; + case 3: + sub_80BD610(playerRecords, playerRecords + size, playerRecords + size * 2); + break; + } + + for (i = 1; i < MAX_SECRET_BASES; i++) + { + if (gSaveBlock1.secretBases[i].sbr_field_1_0 == 1) + { + gSaveBlock1.secretBases[i].sbr_field_1_6 = 1; + gSaveBlock1.secretBases[i].sbr_field_1_0 = 0; + } + } + + sub_80BD280(); + + for (i = 1; i < MAX_SECRET_BASES; i++) + { + if (gSaveBlock1.secretBases[i].sbr_field_1_6 == 2) + { + gSaveBlock1.secretBases[i].sbr_field_1_6 = 0; + } + } + + if (gSaveBlock1.secretBases[0].sbr_field_e != 0xFFFF) + { + gSaveBlock1.secretBases[0].sbr_field_e++; + } + } +} -- cgit v1.2.3 From 9f523630fcfd25896561f66495a3b4f6bd8c0487 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Tue, 17 Oct 2017 18:13:05 -0400 Subject: Fix Task_Truck1. --- src/field/field_special_scene.c | 82 +++++++++++++++++++++++++++++------------ 1 file changed, 58 insertions(+), 24 deletions(-) (limited to 'src/field') diff --git a/src/field/field_special_scene.c b/src/field/field_special_scene.c index d4b59c8a2..255b1d42b 100644 --- a/src/field/field_special_scene.c +++ b/src/field/field_special_scene.c @@ -18,6 +18,52 @@ #define SECONDS(value) ((signed) (60.0 * value + 0.5)) +// TODO: Move somewhere else +enum +{ + STEP_17 = 0x17, + STEP_18, + STEP_END = 0xFE, +}; + +const u32 gMapObjectPic_MovingBox[] = INCBIN_U32("graphics/map_objects/pics/misc/moving_box.4bpp"); +const u16 gMapObjectPalette19[] = INCBIN_U16("graphics/map_objects/palettes/19.gbapal"); + +static const s8 gTruckCamera_HorizontalTable[] = +{ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + -1, + -1, + -1, + 0, +}; + +const u8 gUnknown_083D295F[] = +{ + STEP_18, + STEP_END, +}; + +const u8 gUnknown_083D2961[] = +{ + STEP_17, + STEP_END, +}; + // porthole states enum { @@ -27,12 +73,7 @@ enum EXIT_PORTHOLE, }; -extern s8 gTruckCamera_HorizontalTable[]; - -extern u8 gUnknown_083D295F[]; -extern u8 gUnknown_083D2961[]; - -s32 GetTruckCameraBobbingY(int a1) +s16 GetTruckCameraBobbingY(int a1) { if (!(a1 % 120)) return -1; @@ -42,7 +83,7 @@ s32 GetTruckCameraBobbingY(int a1) return 0; } -s32 GetTruckBoxMovement(int a1) // for the box movement? +s16 GetTruckBoxMovement(int a1) // for the box movement? { if (!((a1 + 120) % 180)) return -1; @@ -54,27 +95,22 @@ void Task_Truck1(u8 taskId) { s16 *data = gTasks[taskId].data; s16 cameraYpan; - s16 box1 = 0; - s16 box2 = 0; - s16 box3 = 0; - u8 mapNum, mapGroup; - register s16 zero asm("r4"); + s16 cameraXpan = 0; + s16 box1, box2, box3; box1 = GetTruckBoxMovement(data[0] + 30) * 4; // top box. - sub_805BD90(1, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, 3, box1 + 3); + sub_805BD90(1, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, 3 - cameraXpan, box1 + 3); box2 = GetTruckBoxMovement(data[0]) * 2; // bottom left box. - sub_805BD90(2, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, 0, box2 - 3); + sub_805BD90(2, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, -cameraXpan, box2 - 3); box3 = GetTruckBoxMovement(data[0]) * 4; // bottom right box. - mapNum = gSaveBlock1.location.mapNum; - mapGroup = gSaveBlock1.location.mapGroup; - zero = 0; - sub_805BD90(3, mapNum, mapGroup, -3, box3); + sub_805BD90(3, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, -3 - cameraXpan, box3); if (++data[0] == SECONDS(500)) // this will never run - data[0] = zero; // reset the timer if it gets stuck. + data[0] = 0; // reset the timer if it gets stuck. + // this also matches with directly calling GetTruckCameraBobbingY within SetCameraPanning, but this is consistent with a later function that requires a temp variable. cameraYpan = GetTruckCameraBobbingY(data[0]); - SetCameraPanning(0, cameraYpan); + SetCameraPanning(cameraXpan, cameraYpan); } void Task_Truck2(u8 taskId) @@ -82,9 +118,7 @@ void Task_Truck2(u8 taskId) s16 *data = gTasks[taskId].data; s16 cameraYpan; s16 cameraXpan; - s16 box1; - s16 box2; - s16 box3; + s16 box1, box2, box3; data[0]++; data[2]++; @@ -137,7 +171,7 @@ void Task_Truck3(u8 taskId) { cameraXpan = gTruckCamera_HorizontalTable[data[1]]; cameraYpan = 0; - SetCameraPanning(cameraXpan, 0); + SetCameraPanning(cameraXpan, cameraYpan); sub_805BD90(1, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, 3 - cameraXpan, cameraYpan + 3); sub_805BD90(2, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, -cameraXpan, cameraYpan - 3); sub_805BD90(3, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, -3 - cameraXpan, cameraYpan); -- cgit v1.2.3 From 8d80e1c9465d67dc848969a1615560331f12bc7a Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Tue, 17 Oct 2017 18:13:49 -0400 Subject: update script movement to use constant movement lists. --- src/field/script_movement.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'src/field') diff --git a/src/field/script_movement.c b/src/field/script_movement.c index 30e10b451..c7ce55171 100644 --- a/src/field/script_movement.c +++ b/src/field/script_movement.c @@ -5,19 +5,19 @@ #include "task.h" #include "util.h" -static EWRAM_DATA u8 *gUnknown_020384F8[16] = {0}; +static EWRAM_DATA const u8 *gUnknown_020384F8[16] = {0}; static void sub_80A2198(u8); static u8 sub_80A21E0(void); -static bool8 sub_80A21F4(u8, u8, u8 *); +static bool8 sub_80A21F4(u8, u8, const u8 *); static u8 sub_80A2260(u8, u8); static bool8 sub_80A2370(u8, u8); -static void sub_80A23C8(u8, u8, u8, u8 *); +static void sub_80A23C8(u8, u8, u8, const u8 *); static void UnfreezeObjects(u8); static void Task_80A244C(u8); -static void sub_80A2490(u8, u8, u8, u8 *); +static void sub_80A2490(u8, u8, u8, const u8 *); -bool8 ScriptMovement_StartObjectMovementScript(u8 localId, u8 mapNum, u8 mapGroup, u8 *movementScript) +bool8 ScriptMovement_StartObjectMovementScript(u8 localId, u8 mapNum, u8 mapGroup, const u8 *movementScript) { u8 mapObjId; @@ -70,7 +70,7 @@ static u8 sub_80A21E0(void) return FindTaskIdByFunc(Task_80A244C); } -static bool8 sub_80A21F4(u8 taskId, u8 mapObjId, u8 *movementScript) +static bool8 sub_80A21F4(u8 taskId, u8 mapObjId, const u8 *movementScript) { u8 r4; @@ -160,17 +160,17 @@ static bool8 sub_80A2370(u8 taskId, u8 b) return FALSE; } -static void npc_obj_offscreen_culling_and_flag_update(u8 a, u8 *movementScript) +static void npc_obj_offscreen_culling_and_flag_update(u8 a, const u8 *movementScript) { gUnknown_020384F8[a] = movementScript; } -static u8 *sub_80A23B8(u8 a) +static const u8 *sub_80A23B8(u8 a) { return gUnknown_020384F8[a]; } -static void sub_80A23C8(u8 taskId, u8 b, u8 mapObjId, u8 *movementScript) +static void sub_80A23C8(u8 taskId, u8 b, u8 mapObjId, const u8 *movementScript) { sub_80A2318(taskId, b); npc_obj_offscreen_culling_and_flag_update(b, movementScript); @@ -203,7 +203,7 @@ static void Task_80A244C(u8 taskId) } } -static void sub_80A2490(u8 taskId, u8 b, u8 mapObjId, u8 *d) +static void sub_80A2490(u8 taskId, u8 b, u8 mapObjId, const u8 *d) { u8 var; -- cgit v1.2.3 From fbbe7c5e4c42f6c4a25c40216e4eda1d1b1fb89e Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Wed, 18 Oct 2017 02:58:11 -0400 Subject: document bike.c. --- src/field/bike.c | 530 ++++++++++++++++++++------------------- src/field/field_camera.c | 7 +- src/field/field_control_avatar.c | 4 +- src/field/field_effect.c | 28 +-- src/field/field_map_obj.c | 4 +- src/field/field_player_avatar.c | 202 ++++++++------- src/field/field_specials.c | 24 +- src/field/map_obj_lock.c | 2 +- 8 files changed, 415 insertions(+), 386 deletions(-) (limited to 'src/field') diff --git a/src/field/bike.c b/src/field/bike.c index 8df901b40..58359e97f 100644 --- a/src/field/bike.c +++ b/src/field/bike.c @@ -10,16 +10,16 @@ #include "songs.h" #include "sound.h" -extern u8 gUnknown_02039250; -extern u8 gUnknown_02039251; -extern u8 gUnknown_0202E854; +extern bool8 gBikeCyclingChallenge; +extern u8 gBikeCollisions; +extern u8 gUnusedBikeCameraAheadPanback; static void MovePlayerOnMachBike(u8, u16, u16); static u8 GetMachBikeTransition(u8 *); static void MachBikeTransition_FaceDirection(u8); -static void MachBikeTransition_80E517C(u8); -static void MachBikeTransition_80E51C4(u8); -static void MachBikeTransition_80E5270(u8); +static void MachBikeTransition_TurnFrame(u8); +static void MachBikeTransition_TrySpeedUp(u8); +static void MachBikeTransition_TrySlowDown(u8); static void MovePlayerOnAcroBike(u8, u16, u16); static u8 CheckMovementInputAcroBike(u8 *, u16, u16); static u8 AcroBikeHandleInputNormal(u8 *, u16, u16); @@ -27,64 +27,65 @@ static u8 AcroBikeHandleInputTurning(u8 *, u16, u16); static u8 AcroBikeHandleInputWheelieStanding(u8 *, u16, u16); static u8 AcroBikeHandleInputBunnyHop(u8 *, u16, u16); static u8 AcroBikeHandleInputWheelieMoving(u8 *, u16, u16); -static u8 AcroBikeHandleInputState5(u8 *, u16, u16); -static u8 AcroBikeHandleInputState6(u8 *, u16, u16); +static u8 AcroBikeHandleInputSidewaysJump(u8 *, u16, u16); +static u8 AcroBikeHandleInputTurnJump(u8 *, u16, u16); static void AcroBikeTransition_FaceDirection(u8); -static void AcroBikeTransition_80E5708(u8); -static void AcroBikeTransition_80E5744(u8); +static void AcroBikeTransition_TurnDirection(u8); +static void AcroBikeTransition_Moving(u8); static void AcroBikeTransition_NormalToWheelie(u8); -static void AcroBikeTransition_80E57F8(u8); -static void AcroBikeTransition_80E5834(u8); -static void AcroBikeTransition_80E5870(u8); -static void AcroBikeTransition_80E58AC(u8); -static void AcroBikeTransition_80E5920(u8); -static void AcroBikeTransition_80E5990(u8); -static void AcroBikeTransition_80E59A0(u8); -static void AcroBikeTransition_80E5A30(u8); -static void AcroBikeTransition_80E5AC0(u8); -static void sub_80E5B60(u16, u16); -static u8 sub_80E5C2C(void); -static void sub_80E5C7C(u8); -static void sub_80E5CB8(u8); -static u8 sub_80E5CF4(u16); +static void AcroBikeTransition_WheelieToNormal(u8); +static void AcroBikeTransition_WheelieIdle(u8); +static void AcroBikeTransition_WheelieHoppingStanding(u8); +static void AcroBikeTransition_WheelieHoppingMoving(u8); +static void AcroBikeTransition_SideJump(u8); +static void AcroBikeTransition_TurnJump(u8); +static void AcroBikeTransition_WheelieMoving(u8); +static void AcroBikeTransition_WheelieRisingMoving(u8); +static void AcroBikeTransition_WheelieLoweringMoving(u8); +static void AcroBike_TryHistoryUpdate(u16, u16); +static u8 AcroBike_GetJumpDirection(void); +static void Bike_UpdateDirTimerHistory(u8); +static void Bike_UpdateABStartSelectHistory(u8); +static u8 Bike_DPadToDirection(u16); static u8 get_some_collision(u8); -static u8 sub_80E5DA0(struct MapObject *, s16, s16, u8, u8); +static u8 Bike_CheckCollisionTryAdvanceCollisionCount(struct MapObject *, s16, s16, u8, u8); static bool8 IsRunningDisallowedByMetatile(u8); -static void sub_80E5E4C(); +static void Bike_TryAdvanceCyclingRoadCollisions(); static u8 CanBikeFaceDirOnMetatile(u8, u8); -static bool8 sub_80E5EC0(u8, u8); -static void sub_80E6024(void); +static bool8 WillPlayerCollideWithCollision(u8, u8); +static void Bike_SetBikeStill(void); static void (*const sMachBikeTransitions[])(u8) = { - MachBikeTransition_FaceDirection, - MachBikeTransition_80E517C, - MachBikeTransition_80E51C4, - MachBikeTransition_80E5270, + MachBikeTransition_FaceDirection, // the difference between this and turn frame is that face direction has no turn anim while turn frame does. + MachBikeTransition_TurnFrame, + MachBikeTransition_TrySpeedUp, + MachBikeTransition_TrySlowDown, }; -static void (*const gUnknown_083DB5A4[])(u8) = +// bikeFrameCounter is input which is represented by gMachBikeSpeeds in order: 0 is normal speed (1 speed), 1 is fast speed (2 speed), 2 is fastest speed (4 speed) +static void (*const sMachBikeSpeedCallbacks[])(u8) = { - PlayerGoSpeed0, - sub_80593C4, - sub_80593F4, + PlayerGoSpeed1, // normal speed (1 speed) + PlayerGoSpeed2, // fast speed (2 speed) + PlayerGoSpeed4, // fastest speed (4 speed) }; static void (*const sAcroBikeTransitions[])(u8) = { AcroBikeTransition_FaceDirection, - AcroBikeTransition_80E5708, - AcroBikeTransition_80E5744, + AcroBikeTransition_TurnDirection, + AcroBikeTransition_Moving, AcroBikeTransition_NormalToWheelie, - AcroBikeTransition_80E57F8, - AcroBikeTransition_80E5834, - AcroBikeTransition_80E5870, - AcroBikeTransition_80E58AC, - AcroBikeTransition_80E5920, - AcroBikeTransition_80E5990, - AcroBikeTransition_80E59A0, - AcroBikeTransition_80E5A30, - AcroBikeTransition_80E5AC0, + AcroBikeTransition_WheelieToNormal, + AcroBikeTransition_WheelieIdle, + AcroBikeTransition_WheelieHoppingStanding, + AcroBikeTransition_WheelieHoppingMoving, + AcroBikeTransition_SideJump, + AcroBikeTransition_TurnJump, + AcroBikeTransition_WheelieMoving, + AcroBikeTransition_WheelieRisingMoving, + AcroBikeTransition_WheelieLoweringMoving, }; static u8 (*const sAcroBikeInputHandlers[])(u8 *, u16, u16) = @@ -94,19 +95,24 @@ static u8 (*const sAcroBikeInputHandlers[])(u8 *, u16, u16) = AcroBikeHandleInputWheelieStanding, AcroBikeHandleInputBunnyHop, AcroBikeHandleInputWheelieMoving, - AcroBikeHandleInputState5, - AcroBikeHandleInputState6, + AcroBikeHandleInputSidewaysJump, + AcroBikeHandleInputTurnJump, }; +// used with bikeFrameCounter from mach bike const u16 gMachBikeSpeeds[] = {SPEED_NORMAL, SPEED_FAST, SPEED_FASTEST}; -static const u8 Unknown_3DB606[] = {4, 0}; -static const struct UnknownStruct1 gUnknown_083DB608[] = +// this is a list of timers to compare against later, terminated with 0. the only timer being compared against is 4 frames in this list. +static const u8 BikeTimerList[] = {4, 0}; + +// this is a list of history inputs to do in order to do the check to retrieve a jump direction for acro bike. +static const struct BikeHistoryInputInfo gAcroBikeJumpInputList[] = { - {1, 2, 15, 15, Unknown_3DB606, Unknown_3DB606, 1}, - {2, 2, 15, 15, Unknown_3DB606, Unknown_3DB606, 2}, - {3, 2, 15, 15, Unknown_3DB606, Unknown_3DB606, 3}, - {4, 2, 15, 15, Unknown_3DB606, Unknown_3DB606, 4}, + // the 0xF is a mask performed with each byte of the array in order to perform the check on only the last entry of the history list, otherwise the check wouldnt work as there can be 0xF0 as opposed to 0x0F. + {DIR_SOUTH, B_BUTTON, 0xF, 0xF, BikeTimerList, BikeTimerList, DIR_SOUTH}, + {DIR_NORTH, B_BUTTON, 0xF, 0xF, BikeTimerList, BikeTimerList, DIR_NORTH}, + {DIR_WEST, B_BUTTON, 0xF, 0xF, BikeTimerList, BikeTimerList, DIR_WEST}, + {DIR_EAST, B_BUTTON, 0xF, 0xF, BikeTimerList, BikeTimerList, DIR_EAST}, }; void MovePlayerOnBike(u8 direction, u16 newKeys, u16 heldKeys) @@ -122,54 +128,60 @@ static void MovePlayerOnMachBike(u8 direction, u16 newKeys, u16 heldKeys) sMachBikeTransitions[GetMachBikeTransition(&direction)](direction); } -static u8 GetMachBikeTransition(u8 *ptr) +// dirTraveling is a variable that is 0 when the player is standing still. +static u8 GetMachBikeTransition(u8 *dirTraveling) { + // if the dir updated before this function, get the relevent new direction to check later. u8 direction = player_get_direction_upper_nybble(); - if (*ptr == 0) + // is the player standing still? + if (*dirTraveling == 0) { - *ptr = direction; - if (gPlayerAvatar.unkB == 0) + *dirTraveling = direction; // update the direction, since below we either faced a direction or we started moving. + if (gPlayerAvatar.bikeSpeed == SPEED_STANDING) { - gPlayerAvatar.running2 = 0; - return 0; + gPlayerAvatar.runningState = NOT_MOVING; + return MBT_FACE_DIRECTION; } - gPlayerAvatar.running2 = 2; - return 3; + gPlayerAvatar.runningState = MOVING; + return MBT_START_MOVING; } - if (*ptr != direction && gPlayerAvatar.running2 != 2) + // we need to check if the last traveled direction changed from the new direction as well as ensuring that we dont update the state while the player is moving: see the else check. + if (*dirTraveling != direction && gPlayerAvatar.runningState != MOVING) { - if (gPlayerAvatar.unkB != 0) + if (gPlayerAvatar.bikeSpeed != SPEED_STANDING) { - *ptr = direction; - gPlayerAvatar.running2 = 2; - return 3; + *dirTraveling = direction; // implement the new direction + gPlayerAvatar.runningState = MOVING; + return MBT_START_MOVING; } - gPlayerAvatar.running2 = 1; - return 1; + // if you didnt start moving but your dir was different, do a turn frame instead. + gPlayerAvatar.runningState = TURN_FRAME; + return MBT_TURN_FRAME; } - else + else // the player is either going in the current direction and hasnt changed or their state is currently moving. { - gPlayerAvatar.running2 = 2; - return 2; + gPlayerAvatar.runningState = MOVING; + return MBT_KEEP_MOVING; } } +// the difference between face direction and turn frame is that one changes direction while the other does the animation of turning as well as changing direction. static void MachBikeTransition_FaceDirection(u8 direction) { PlayerFaceDirection(direction); - sub_80E6024(); + Bike_SetBikeStill(); } -static void MachBikeTransition_80E517C(u8 direction) +static void MachBikeTransition_TurnFrame(u8 direction) { struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId]; if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E)) { PlayerTurnInPlace(direction); - sub_80E6024(); + Bike_SetBikeStill(); } else { @@ -177,15 +189,16 @@ static void MachBikeTransition_80E517C(u8 direction) } } -static void MachBikeTransition_80E51C4(u8 direction) +static void MachBikeTransition_TrySpeedUp(u8 direction) { struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId]; u8 collision; - if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0) + if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == FALSE) { - if (gPlayerAvatar.unkB) - MachBikeTransition_80E5270(playerMapObj->placeholder18); + // we cannot go forward, so either slow down or, if we are stopped, idle face direction. + if (gPlayerAvatar.bikeSpeed) + MachBikeTransition_TrySlowDown(playerMapObj->placeholder18); else MachBikeTransition_FaceDirection(playerMapObj->placeholder18); } @@ -194,33 +207,36 @@ static void MachBikeTransition_80E51C4(u8 direction) collision = get_some_collision(direction); if (collision > 0 && collision < 12) { + // we hit a solid object, but check to see if its a ledge and then jump. if (collision == COLLISION_LEDGE_JUMP) { PlayerJumpLedge(direction); } else { - sub_80E6024(); + // we hit a solid object that is not a ledge, so perform the collision. + Bike_SetBikeStill(); if (collision < 5 || collision > 8) PlayerOnBikeCollide(direction); } } else { - gUnknown_083DB5A4[gPlayerAvatar.bikeFrameCounter](direction); - gPlayerAvatar.unkB = gPlayerAvatar.bikeFrameCounter + (gPlayerAvatar.bikeFrameCounter >> 1); // same as dividing by 2, but compiler is insistent on >> 1 + // we did not hit anything that can slow us down, so perform the advancement callback depending on the bikeFrameCounter and try to increase the mach bike's speed. + sMachBikeSpeedCallbacks[gPlayerAvatar.bikeFrameCounter](direction); + gPlayerAvatar.bikeSpeed = gPlayerAvatar.bikeFrameCounter + (gPlayerAvatar.bikeFrameCounter >> 1); // same as dividing by 2, but compiler is insistent on >> 1 if (gPlayerAvatar.bikeFrameCounter < 2) // do not go faster than the last element in the mach bike array gPlayerAvatar.bikeFrameCounter++; } } } -static void MachBikeTransition_80E5270(u8 var) +static void MachBikeTransition_TrySlowDown(u8 var) { u8 collision; - if (gPlayerAvatar.unkB != 0) - gPlayerAvatar.bikeFrameCounter = --gPlayerAvatar.unkB; + if (gPlayerAvatar.bikeSpeed != SPEED_STANDING) + gPlayerAvatar.bikeFrameCounter = --gPlayerAvatar.bikeSpeed; collision = get_some_collision(var); @@ -232,14 +248,14 @@ static void MachBikeTransition_80E5270(u8 var) } else { - sub_80E6024(); + Bike_SetBikeStill(); if (collision < 5 || collision > 8) PlayerOnBikeCollide(var); } } else { - gUnknown_083DB5A4[gPlayerAvatar.bikeFrameCounter](var); + sMachBikeSpeedCallbacks[gPlayerAvatar.bikeFrameCounter](var); } } @@ -265,68 +281,71 @@ static u8 AcroBikeHandleInputNormal(u8 *newDirection, u16 newKeys, u16 heldKeys) //We're standing still with the B button held. //Do a wheelie. *newDirection = direction; - gPlayerAvatar.running2 = 0; + gPlayerAvatar.runningState = NOT_MOVING; gPlayerAvatar.acroBikeState = ACRO_STATE_WHEELIE_STANDING; return ACRO_TRANS_NORMAL_TO_WHEELIE; } else { *newDirection = direction; - gPlayerAvatar.running2 = 0; + gPlayerAvatar.runningState = NOT_MOVING; return ACRO_TRANS_FACE_DIRECTION; } } - if (*newDirection == direction && (heldKeys & B_BUTTON) && gPlayerAvatar.unkB == 0) + if (*newDirection == direction && (heldKeys & B_BUTTON) && gPlayerAvatar.bikeSpeed == SPEED_STANDING) { - gPlayerAvatar.unkB++; + gPlayerAvatar.bikeSpeed++; gPlayerAvatar.acroBikeState = ACRO_STATE_WHEELIE_MOVING; - return 11; + return ACRO_TRANS_WHEELIE_RISING_MOVING; } - if (*newDirection != direction && gPlayerAvatar.running2 != 2) + if (*newDirection != direction && gPlayerAvatar.runningState != MOVING) { gPlayerAvatar.acroBikeState = ACRO_STATE_TURNING; - gPlayerAvatar.unk9 = *newDirection; - gPlayerAvatar.running2 = 0; + gPlayerAvatar.newDirBackup = *newDirection; + gPlayerAvatar.runningState = NOT_MOVING; return CheckMovementInputAcroBike(newDirection, newKeys, heldKeys); } - gPlayerAvatar.running2 = 2; - return 2; + gPlayerAvatar.runningState = MOVING; + return ACRO_TRANS_MOVING; } static u8 AcroBikeHandleInputTurning(u8 *newDirection, u16 newKeys, u16 heldKeys) { u8 direction; - *newDirection = gPlayerAvatar.unk9; + *newDirection = gPlayerAvatar.newDirBackup; gPlayerAvatar.bikeFrameCounter++; //Wait 6 frames before actually changing direction - if (gPlayerAvatar.bikeFrameCounter > 6) + if (gPlayerAvatar.bikeFrameCounter > 6) // ... because it takes 6 frames to advance 1 tile. { - gPlayerAvatar.running2 = 1; + gPlayerAvatar.runningState = TURN_FRAME; gPlayerAvatar.acroBikeState = ACRO_STATE_NORMAL; - sub_80E6024(); - return 1; + Bike_SetBikeStill(); + return ACRO_TRANS_TURN_DIRECTION; } direction = player_get_direction_upper_nybble(); - if (*newDirection == sub_80E5C2C()) + if (*newDirection == AcroBike_GetJumpDirection()) { - sub_80E6024(); - gPlayerAvatar.unkB = 1; + Bike_SetBikeStill(); // Bike_SetBikeStill sets speed to standing, but the next line immediately overrides it. could have just reset acroBikeState to 0 here instead of wasting a jump. + gPlayerAvatar.bikeSpeed = SPEED_NORMAL; if (*newDirection == GetOppositeDirection(direction)) { - gPlayerAvatar.acroBikeState = ACRO_STATE_6; - return 9; + // do a turn jump. + // no need to update runningState, didnt move. + gPlayerAvatar.acroBikeState = ACRO_STATE_TURN_JUMP; + return ACRO_TRANS_TURN_JUMP; } else { - gPlayerAvatar.running2 = 2; - gPlayerAvatar.acroBikeState = ACRO_STATE_5; - return 8; + // do a sideways jump. + gPlayerAvatar.runningState = MOVING; // we need to move, set state to moving. + gPlayerAvatar.acroBikeState = ACRO_STATE_SIDE_JUMP; + return ACRO_TRANS_SIDE_JUMP; } } *newDirection = direction; - return 0; + return ACRO_TRANS_FACE_DIRECTION; } static u8 AcroBikeHandleInputWheelieStanding(u8 *ptr, u16 newKeys, u16 heldKeys) @@ -336,7 +355,7 @@ static u8 AcroBikeHandleInputWheelieStanding(u8 *ptr, u16 newKeys, u16 heldKeys) direction = player_get_direction_upper_nybble(); playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId]; - gPlayerAvatar.running2 = 0; + gPlayerAvatar.runningState = NOT_MOVING; if (heldKeys & B_BUTTON) gPlayerAvatar.bikeFrameCounter++; @@ -349,31 +368,31 @@ static u8 AcroBikeHandleInputWheelieStanding(u8 *ptr, u16 newKeys, u16 heldKeys) //Go back to normal on flat ground *ptr = direction; gPlayerAvatar.acroBikeState = ACRO_STATE_NORMAL; - sub_80E6024(); - return 4; + Bike_SetBikeStill(); + return ACRO_TRANS_WHEELIE_TO_NORMAL; } } if (gPlayerAvatar.bikeFrameCounter >= 40) { *ptr = direction; gPlayerAvatar.acroBikeState = ACRO_STATE_BUNNY_HOP; - sub_80E6024(); - return 6; + Bike_SetBikeStill(); + return ACRO_TRANS_WHEELIE_HOPPING_STANDING; } if (*ptr == direction) { - gPlayerAvatar.running2 = 2; + gPlayerAvatar.runningState = MOVING; gPlayerAvatar.acroBikeState = ACRO_STATE_WHEELIE_MOVING; - sub_80E6024(); - return 10; + Bike_SetBikeStill(); + return ACRO_TRANS_WHEELIE_MOVING; } if (*ptr == 0) { *ptr = direction; - return 5; + return ACRO_TRANS_WHEELIE_IDLE; } - gPlayerAvatar.running2 = 1; - return 5; + gPlayerAvatar.runningState = TURN_FRAME; + return ACRO_TRANS_WHEELIE_IDLE; } static u8 AcroBikeHandleInputBunnyHop(u8 *ptr, u16 newKeys, u16 heldKeys) @@ -386,7 +405,7 @@ static u8 AcroBikeHandleInputBunnyHop(u8 *ptr, u16 newKeys, u16 heldKeys) if (!(heldKeys & B_BUTTON)) { //B button was released - sub_80E6024(); + Bike_SetBikeStill(); if (MetatileBehavior_IsBumpySlope(playerMapObj->mapobj_unk_1E)) { //Do a standing wheelie on a bumpy slope @@ -397,9 +416,9 @@ static u8 AcroBikeHandleInputBunnyHop(u8 *ptr, u16 newKeys, u16 heldKeys) { //Go back to normal on flat ground *ptr = direction; - gPlayerAvatar.running2 = 0; + gPlayerAvatar.runningState = NOT_MOVING; gPlayerAvatar.acroBikeState = ACRO_STATE_NORMAL; - return 4; + return ACRO_TRANS_WHEELIE_TO_NORMAL; } } @@ -408,16 +427,16 @@ static u8 AcroBikeHandleInputBunnyHop(u8 *ptr, u16 newKeys, u16 heldKeys) if (*ptr == DIR_NONE) { *ptr = direction; - gPlayerAvatar.running2 = 0; - return 6; + gPlayerAvatar.runningState = NOT_MOVING; + return ACRO_TRANS_WHEELIE_HOPPING_STANDING; } - if (*ptr != direction && gPlayerAvatar.running2 != 2) + if (*ptr != direction && gPlayerAvatar.runningState != MOVING) { - gPlayerAvatar.running2 = 1; - return 6; + gPlayerAvatar.runningState = TURN_FRAME; + return ACRO_TRANS_WHEELIE_HOPPING_STANDING; } - gPlayerAvatar.running2 = 2; - return 7; + gPlayerAvatar.runningState = MOVING; + return ACRO_TRANS_WHEELIE_HOPPING_MOVING; } static u8 AcroBikeHandleInputWheelieMoving(u8 *ptr, u16 newKeys, u16 heldKeys) @@ -429,23 +448,23 @@ static u8 AcroBikeHandleInputWheelieMoving(u8 *ptr, u16 newKeys, u16 heldKeys) playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId]; if (!(heldKeys & B_BUTTON)) { - sub_80E6024(); + Bike_SetBikeStill(); if (!MetatileBehavior_IsBumpySlope(playerMapObj->mapobj_unk_1E)) { gPlayerAvatar.acroBikeState = ACRO_STATE_NORMAL; if (*ptr == 0) { *ptr = direction; - gPlayerAvatar.running2 = 0; - return 4; + gPlayerAvatar.runningState = NOT_MOVING; + return ACRO_TRANS_WHEELIE_TO_NORMAL; } - if (*ptr != direction && gPlayerAvatar.running2 != 2) + if (*ptr != direction && gPlayerAvatar.runningState != MOVING) { - gPlayerAvatar.running2 = 0; - return 4; + gPlayerAvatar.runningState = NOT_MOVING; + return ACRO_TRANS_WHEELIE_TO_NORMAL; } - gPlayerAvatar.running2 = 2; - return 12; + gPlayerAvatar.runningState = MOVING; + return ACRO_TRANS_WHEELIE_LOWERING_MOVING; } gPlayerAvatar.acroBikeState = ACRO_STATE_WHEELIE_STANDING; return CheckMovementInputAcroBike(ptr, newKeys, heldKeys); @@ -454,20 +473,20 @@ static u8 AcroBikeHandleInputWheelieMoving(u8 *ptr, u16 newKeys, u16 heldKeys) { *ptr = direction; gPlayerAvatar.acroBikeState = ACRO_STATE_WHEELIE_STANDING; - gPlayerAvatar.running2 = 0; - sub_80E6024(); - return 5; + gPlayerAvatar.runningState = NOT_MOVING; + Bike_SetBikeStill(); + return ACRO_TRANS_WHEELIE_IDLE; } - if (direction != *ptr && gPlayerAvatar.running2 != 2) + if (direction != *ptr && gPlayerAvatar.runningState != MOVING) { - gPlayerAvatar.running2 = 0; - return 5; + gPlayerAvatar.runningState = NOT_MOVING; + return ACRO_TRANS_WHEELIE_IDLE; } - gPlayerAvatar.running2 = 2; - return 10; + gPlayerAvatar.runningState = MOVING; + return ACRO_TRANS_WHEELIE_MOVING; } -static u8 AcroBikeHandleInputState5(u8 *ptr, u16 newKeys, u16 heldKeys) +static u8 AcroBikeHandleInputSidewaysJump(u8 *ptr, u16 newKeys, u16 heldKeys) { struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId]; @@ -477,18 +496,19 @@ static u8 AcroBikeHandleInputState5(u8 *ptr, u16 newKeys, u16 heldKeys) return CheckMovementInputAcroBike(ptr, newKeys, heldKeys); } -static u8 AcroBikeHandleInputState6(u8 *ptr, u16 newKeys, u16 heldKeys) +static u8 AcroBikeHandleInputTurnJump(u8 *ptr, u16 newKeys, u16 heldKeys) { gPlayerAvatar.acroBikeState = ACRO_STATE_NORMAL; return CheckMovementInputAcroBike(ptr, newKeys, heldKeys); } +// Face vs Turn: Face has no anim while Turn does. Turn checks for collision because if you turn right as opposed to face right, if there is a wall there, turn will make a bonk sound effect while face will not. static void AcroBikeTransition_FaceDirection(u8 direction) { PlayerFaceDirection(direction); } -static void AcroBikeTransition_80E5708(u8 direction) +static void AcroBikeTransition_TurnDirection(u8 direction) { struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId]; @@ -497,7 +517,7 @@ static void AcroBikeTransition_80E5708(u8 direction) PlayerFaceDirection(direction); } -static void AcroBikeTransition_80E5744(u8 direction) +static void AcroBikeTransition_Moving(u8 direction) { u8 collision; struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId]; @@ -530,41 +550,41 @@ static void AcroBikeTransition_NormalToWheelie(u8 direction) PlayerStartWheelie(direction); } -static void AcroBikeTransition_80E57F8(u8 direction) +static void AcroBikeTransition_WheelieToNormal(u8 direction) { struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId]; if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0) direction = playerMapObj->placeholder18; - sub_8059534(direction); + PlayerEndWheelie(direction); } -static void AcroBikeTransition_80E5834(u8 direction) +static void AcroBikeTransition_WheelieIdle(u8 direction) { struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId]; if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0) direction = playerMapObj->placeholder18; - sub_8059504(direction); + PlayerIdleWheelie(direction); } -static void AcroBikeTransition_80E5870(u8 direction) +static void AcroBikeTransition_WheelieHoppingStanding(u8 direction) { struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId]; if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0) direction = playerMapObj->placeholder18; - sub_805954C(direction); + PlayerStandingHoppingWheelie(direction); } -static void AcroBikeTransition_80E58AC(u8 direction) +static void AcroBikeTransition_WheelieHoppingMoving(u8 direction) { u8 var; struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId]; if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0) { - AcroBikeTransition_80E5870(playerMapObj->placeholder18); + AcroBikeTransition_WheelieHoppingStanding(playerMapObj->placeholder18); return; } var = get_some_collision(direction); @@ -575,23 +595,23 @@ static void AcroBikeTransition_80E58AC(u8 direction) } else if (var == 6) { - sub_8059594(direction); + PlayerLedgeHoppingWheelie(direction); } else if (var < 5 || var > 8) { if (var <= 11) { - AcroBikeTransition_80E5870(direction); + AcroBikeTransition_WheelieHoppingStanding(direction); } else { derp: - sub_8059570(direction); + PlayerMovingHoppingWheelie(direction); } } } -static void AcroBikeTransition_80E5920(u8 direction) +static void AcroBikeTransition_SideJump(u8 direction) { u8 var; struct MapObject *playerMapObj; @@ -603,12 +623,12 @@ static void AcroBikeTransition_80E5920(u8 direction) return; if (var < 10) { - AcroBikeTransition_80E5708(direction); + AcroBikeTransition_TurnDirection(direction); return; } - if (sub_80E5EC0(var, direction) == 0) + if (WillPlayerCollideWithCollision(var, direction) == FALSE) { - AcroBikeTransition_80E5708(direction); + AcroBikeTransition_TurnDirection(direction); return; } } @@ -618,19 +638,19 @@ static void AcroBikeTransition_80E5920(u8 direction) PlayerSetAnimId(sub_80608A4(direction), 2); } -static void AcroBikeTransition_80E5990(u8 direction) +static void AcroBikeTransition_TurnJump(u8 direction) { - sub_80595B8(direction); + PlayerAcroTurnJump(direction); } -static void AcroBikeTransition_80E59A0(u8 direction) +static void AcroBikeTransition_WheelieMoving(u8 direction) { u8 var; struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId]; if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0) { - sub_8059504(playerMapObj->placeholder18); + PlayerIdleWheelie(playerMapObj->placeholder18); return; } var = get_some_collision(direction); @@ -638,26 +658,26 @@ static void AcroBikeTransition_80E59A0(u8 direction) { if (var == 6) { - sub_8059594(direction); + PlayerLedgeHoppingWheelie(direction); } else if (var == 9) { - sub_8059504(direction); + PlayerIdleWheelie(direction); } else if (var <= 4) { if (MetatileBehavior_IsBumpySlope(playerMapObj->mapobj_unk_1E)) - sub_8059504(direction); + PlayerIdleWheelie(direction); else sub_80595DC(direction); //hit wall? } return; } sub_8059618(direction); - gPlayerAvatar.running2 = 2; + gPlayerAvatar.runningState = MOVING; } -static void AcroBikeTransition_80E5A30(u8 direction) +static void AcroBikeTransition_WheelieRisingMoving(u8 direction) { u8 var; struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId]; @@ -672,33 +692,33 @@ static void AcroBikeTransition_80E5A30(u8 direction) { if (var == 6) { - sub_8059594(direction); + PlayerLedgeHoppingWheelie(direction); } else if (var == 9) { - sub_8059504(direction); + PlayerIdleWheelie(direction); } else if (var <= 4) { if (MetatileBehavior_IsBumpySlope(playerMapObj->mapobj_unk_1E)) - sub_8059504(direction); + PlayerIdleWheelie(direction); else sub_80595DC(direction); //hit wall? } return; } sub_8059600(direction); - gPlayerAvatar.running2 = 2; + gPlayerAvatar.runningState = MOVING; } -static void AcroBikeTransition_80E5AC0(u8 direction) +static void AcroBikeTransition_WheelieLoweringMoving(u8 direction) { u8 var; struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId]; if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0) { - sub_8059534(playerMapObj->placeholder18); + PlayerEndWheelie(playerMapObj->placeholder18); return; } var = get_some_collision(direction); @@ -707,115 +727,115 @@ static void AcroBikeTransition_80E5AC0(u8 direction) if (var == 6) PlayerJumpLedge(direction); else if (var < 5 || var > 8) - sub_8059534(direction); + PlayerEndWheelie(direction); return; } sub_8059630(direction); } -void sub_80E5B38(u16 a, u16 b) +void Bike_TryAcroBikeHistoryUpdate(u16 newKeys, u16 heldKeys) { if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_ACRO_BIKE) - sub_80E5B60(a, b); + AcroBike_TryHistoryUpdate(newKeys, heldKeys); } -static void sub_80E5B60(u16 unused, u16 b) +static void AcroBike_TryHistoryUpdate(u16 newKeys, u16 heldKeys) // newKeys is unused { - u8 var; + u8 direction = Bike_DPadToDirection(heldKeys); - var = sub_80E5CF4(b); - if (var == (gPlayerAvatar.unkC & 0xF)) + if (direction == (gPlayerAvatar.directionHistory & 0xF)) { - if (gPlayerAvatar.unk14[0] < 0xFF) - gPlayerAvatar.unk14[0]++; + // increment the timer for direction history since last input. + if (gPlayerAvatar.dirTimerHistory[0] < 0xFF) + gPlayerAvatar.dirTimerHistory[0]++; } else { - sub_80E5C7C(var); - gPlayerAvatar.unkB = 0; + Bike_UpdateDirTimerHistory(direction); + gPlayerAvatar.bikeSpeed = SPEED_STANDING; } - var = b & 0xF; - if (var == (gPlayerAvatar.unk10 & 0xF)) + direction = heldKeys & (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON); // directions is reused for some reason. + if (direction == (gPlayerAvatar.abStartSelectHistory & 0xF)) { - if (gPlayerAvatar.unk1C[0] < 0xFF) - gPlayerAvatar.unk1C[0]++; + if (gPlayerAvatar.abStartSelectTimerHistory[0] < 0xFF) + gPlayerAvatar.abStartSelectTimerHistory[0]++; } else { - sub_80E5CB8(var); - gPlayerAvatar.unkB = 0; + Bike_UpdateABStartSelectHistory(direction); + gPlayerAvatar.bikeSpeed = SPEED_STANDING; } } -static bool8 sub_80E5BC8(const u8 *a, const u8 *b) +static bool8 HasPlayerInputTakenLongerThanList(const u8 *dirTimerList, const u8 *abStartSelectTimerList) { u8 i; - for (i = 0; a[i] != 0; i++) + for (i = 0; dirTimerList[i] != 0; i++) { - if (gPlayerAvatar.unk14[i] > a[i]) + if (gPlayerAvatar.dirTimerHistory[i] > dirTimerList[i]) return FALSE; } - for (i = 0; b[i] != 0; i++) + for (i = 0; abStartSelectTimerList[i] != 0; i++) { - if (gPlayerAvatar.unk1C[i] > b[i]) + if (gPlayerAvatar.abStartSelectTimerHistory[i] > abStartSelectTimerList[i]) return FALSE; } return TRUE; } -static u8 sub_80E5C2C(void) +static u8 AcroBike_GetJumpDirection(void) { u32 i; for (i = 0; i < 4; i++) { - const struct UnknownStruct1 *s = &gUnknown_083DB608[i]; - u32 r1 = gPlayerAvatar.unkC; - u32 r2 = gPlayerAvatar.unk10; - - r1 &= s->unk8; - r2 &= s->unkC; - if (r1 == s->unk0 && r2 == s->unk4 && sub_80E5BC8(s->unk10, s->unk14)) - return s->unk18; + const struct BikeHistoryInputInfo *historyInputInfo = &gAcroBikeJumpInputList[i]; + u32 dirHistory = gPlayerAvatar.directionHistory; + u32 abStartSelectHistory = gPlayerAvatar.abStartSelectHistory; + + dirHistory &= historyInputInfo->dirHistoryMask; + abStartSelectHistory &= historyInputInfo->abStartSelectHistoryMask; + if (dirHistory == historyInputInfo->dirHistoryMatch && abStartSelectHistory == historyInputInfo->abStartSelectHistoryMatch && HasPlayerInputTakenLongerThanList(historyInputInfo->dirTimerHistoryList, historyInputInfo->abStartSelectHistoryList)) + return historyInputInfo->direction; } return 0; } -static void sub_80E5C7C(u8 a) +static void Bike_UpdateDirTimerHistory(u8 dir) { u8 i; - gPlayerAvatar.unkC = (gPlayerAvatar.unkC << 4) | (a & 0xF); + gPlayerAvatar.directionHistory = (gPlayerAvatar.directionHistory << 4) | (dir & 0xF); for (i = 7; i != 0; i--) - gPlayerAvatar.unk14[i] = gPlayerAvatar.unk14[i - 1]; - gPlayerAvatar.unk14[0] = 1; + gPlayerAvatar.dirTimerHistory[i] = gPlayerAvatar.dirTimerHistory[i - 1]; + gPlayerAvatar.dirTimerHistory[0] = 1; } -static void sub_80E5CB8(u8 a) +static void Bike_UpdateABStartSelectHistory(u8 input) { u8 i; - gPlayerAvatar.unk10 = (gPlayerAvatar.unk10 << 4) | (a & 0xF); + gPlayerAvatar.abStartSelectHistory = (gPlayerAvatar.abStartSelectHistory << 4) | (input & 0xF); for (i = 7; i != 0; i--) - gPlayerAvatar.unk1C[i] = gPlayerAvatar.unk1C[i - 1]; - gPlayerAvatar.unk1C[0] = 1; + gPlayerAvatar.abStartSelectTimerHistory[i] = gPlayerAvatar.abStartSelectTimerHistory[i - 1]; + gPlayerAvatar.abStartSelectTimerHistory[0] = 1; } -static u8 sub_80E5CF4(u16 a) +static u8 Bike_DPadToDirection(u16 heldKeys) { - if (a & 0x40) - return 2; - if (a & 0x80) - return 1; - if (a & 0x20) - return 3; - if (a & 0x10) - return 4; - return 0; + if (heldKeys & DPAD_UP) + return DIR_NORTH; + if (heldKeys & DPAD_DOWN) + return DIR_SOUTH; + if (heldKeys & DPAD_LEFT) + return DIR_WEST; + if (heldKeys & DPAD_RIGHT) + return DIR_EAST; + return DIR_NONE; } static u8 get_some_collision(u8 direction) @@ -829,10 +849,10 @@ static u8 get_some_collision(u8 direction) y = playerMapObj->coords2.y; MoveCoords(direction, &x, &y); metatitleBehavior = MapGridGetMetatileBehaviorAt(x, y); - return sub_80E5DA0(playerMapObj, x, y, direction, metatitleBehavior); + return Bike_CheckCollisionTryAdvanceCollisionCount(playerMapObj, x, y, direction, metatitleBehavior); } -static u8 sub_80E5DA0(struct MapObject *mapObject, s16 x, s16 y, u8 direction, u8 metatitleBehavior) +static u8 Bike_CheckCollisionTryAdvanceCollisionCount(struct MapObject *mapObject, s16 x, s16 y, u8 direction, u8 metatitleBehavior) { u8 collision = CheckForFieldObjectCollision(mapObject, x, y, direction, metatitleBehavior); @@ -843,7 +863,7 @@ static u8 sub_80E5DA0(struct MapObject *mapObject, s16 x, s16 y, u8 direction, u collision = 2; if (collision) - sub_80E5E4C(); + Bike_TryAdvanceCyclingRoadCollisions(); return collision; } @@ -865,10 +885,10 @@ static bool8 IsRunningDisallowedByMetatile(u8 tile) return FALSE; } -static void sub_80E5E4C(void) +static void Bike_TryAdvanceCyclingRoadCollisions(void) { - if (gUnknown_02039250 != 0 && gUnknown_02039251 < 100) - gUnknown_02039251++; + if (gBikeCyclingChallenge != FALSE && gBikeCollisions < 100) + gBikeCollisions++; } static bool8 CanBikeFaceDirOnMetatile(u8 direction, u8 tile) @@ -890,14 +910,14 @@ static bool8 CanBikeFaceDirOnMetatile(u8 direction, u8 tile) return TRUE; } -static bool8 sub_80E5EC0(u8 var1, u8 direction) +static bool8 WillPlayerCollideWithCollision(u8 newTileCollision, u8 direction) { if (direction == DIR_NORTH || direction == DIR_SOUTH) { - if (var1 == 10 || var1 == 12) + if (newTileCollision == 10 || newTileCollision == 12) return FALSE; } - else if (var1 == 11 || var1 == 13) + else if (newTileCollision == 11 || newTileCollision == 13) { return FALSE; } @@ -930,7 +950,7 @@ bool8 player_should_look_direction_be_enforced_upon_movement(void) void GetOnOffBike(u8 var) { - gUnknown_0202E854 = 0; + gUnusedBikeCameraAheadPanback = FALSE; if (gPlayerAvatar.flags & (PLAYER_AVATAR_FLAG_MACH_BIKE | PLAYER_AVATAR_FLAG_ACRO_BIKE)) { @@ -946,34 +966,34 @@ void GetOnOffBike(u8 var) } } -void BikeClearState(int var1, int var2) +void BikeClearState(int newDirHistory, int newAbStartHistory) { u8 i; gPlayerAvatar.acroBikeState = ACRO_STATE_NORMAL; - gPlayerAvatar.unk9 = 0; + gPlayerAvatar.newDirBackup = DIR_NONE; gPlayerAvatar.bikeFrameCounter = 0; - gPlayerAvatar.unkB = 0; - gPlayerAvatar.unkC = var1; - gPlayerAvatar.unk10 = var2; + gPlayerAvatar.bikeSpeed = SPEED_STANDING; + gPlayerAvatar.directionHistory = newDirHistory; + gPlayerAvatar.abStartSelectHistory = newAbStartHistory; for (i = 0; i < 8; i++) - gPlayerAvatar.unk14[i] = 0; + gPlayerAvatar.dirTimerHistory[i] = 0; for (i = 0; i < 8; i++) - gPlayerAvatar.unk1C[i] = 0; + gPlayerAvatar.abStartSelectTimerHistory[i] = 0; } -void sub_80E6010(u8 var) +void Bike_UpdateBikeCounterSpeed(u8 counter) { - gPlayerAvatar.bikeFrameCounter = var; - gPlayerAvatar.unkB = gPlayerAvatar.bikeFrameCounter + (gPlayerAvatar.bikeFrameCounter >> 1); // lazy way of multiplying by 1.5. + gPlayerAvatar.bikeFrameCounter = counter; + gPlayerAvatar.bikeSpeed = gPlayerAvatar.bikeFrameCounter + (gPlayerAvatar.bikeFrameCounter >> 1); // lazy way of multiplying by 1.5. } -static void sub_80E6024(void) +static void Bike_SetBikeStill(void) { gPlayerAvatar.bikeFrameCounter = 0; - gPlayerAvatar.unkB = 0; + gPlayerAvatar.bikeSpeed = SPEED_STANDING; } s16 GetPlayerSpeed(void) @@ -993,7 +1013,7 @@ s16 GetPlayerSpeed(void) return SPEED_NORMAL; } -void sub_80E6084(void) +void Bike_HandleBumpySlopeJump(void) { s16 x, y; u8 tileBehavior; diff --git a/src/field/field_camera.c b/src/field/field_camera.c index db51cf054..a29f4c49f 100644 --- a/src/field/field_camera.c +++ b/src/field/field_camera.c @@ -7,7 +7,7 @@ #include "sprite.h" #include "text.h" -EWRAM_DATA u8 gUnknown_0202E854 = 0; +EWRAM_DATA bool8 gUnusedBikeCameraAheadPanback = FALSE; struct UnknownStruct { @@ -455,13 +455,14 @@ static void CameraPanningCB_PanAhead(void) { u8 var; - if (gUnknown_0202E854 == 0) + if (gUnusedBikeCameraAheadPanback == FALSE) { InstallCameraPanAheadCallback(); } else { - if (gPlayerAvatar.running1 == 1) + // this code is never reached. + if (gPlayerAvatar.tileTransitionState == T_TILE_TRANSITION) { gUnknown_0300059C ^= 1; if (gUnknown_0300059C == 0) diff --git a/src/field/field_control_avatar.c b/src/field/field_control_avatar.c index ff8e8504c..65357ac83 100644 --- a/src/field/field_control_avatar.c +++ b/src/field/field_control_avatar.c @@ -124,8 +124,8 @@ void FieldClearPlayerInput(struct FieldInput *input) void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys) { - u8 r6 = gPlayerAvatar.running1; - u8 r9 = gPlayerAvatar.running2; + u8 r6 = gPlayerAvatar.tileTransitionState; + u8 r9 = gPlayerAvatar.runningState; bool8 forcedMove = MetatileBehavior_IsMoveTile(cur_mapdata_block_role_at_player_pos(r9)); if ((r6 == 2 && forcedMove == FALSE) || r6 == 0) diff --git a/src/field/field_effect.c b/src/field/field_effect.c index afe020ac7..d86d6e5cd 100644 --- a/src/field/field_effect.c +++ b/src/field/field_effect.c @@ -1287,7 +1287,7 @@ bool8 sub_80867AC(struct Task *task) // gUnknown_0839F2CC[0] playerSprite = &gSprites[gPlayerAvatar.spriteId]; CameraObjectReset2(); gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_13 = 1; - gPlayerAvatar.unk6 = 1; + gPlayerAvatar.preventStep = TRUE; FieldObjectSetSpecialAnim(playerObject, GetFaceDirectionAnimId(player_get_direction_lower_nybble())); task->data[4] = playerSprite->subspriteMode; playerObject->mapobj_bit_26 = 1; @@ -1382,7 +1382,7 @@ bool8 sub_80869B8(struct Task *task) bool8 sub_80869F8(struct Task *task) { - gPlayerAvatar.unk6 = 0; + gPlayerAvatar.preventStep = FALSE; ScriptContext2_Disable(); CameraObjectReset1(); UnfreezeMapObjects(); @@ -1678,7 +1678,7 @@ void sub_8086F64(u8 taskId) bool8 sub_8086FB0(struct Task *task, struct MapObject *mapObject) { ScriptContext2_Enable(); - gPlayerAvatar.unk6 = 1; + gPlayerAvatar.preventStep = TRUE; task->data[0]++; return FALSE; } @@ -1725,7 +1725,7 @@ bool8 sub_8087058(struct Task *task, struct MapObject *mapObject) return TRUE; } ScriptContext2_Disable(); - gPlayerAvatar.unk6 = 0; + gPlayerAvatar.preventStep = FALSE; DestroyTask(FindTaskIdByFunc(sub_8086F64)); FieldEffectActiveListRemove(FLDEFF_USE_WATERFALL); return FALSE; @@ -1751,7 +1751,7 @@ void Task_Dive(u8 taskId) bool8 sub_8087124(struct Task *task) { - gPlayerAvatar.unk6 = 1; + gPlayerAvatar.preventStep = TRUE; task->data[0]++; return FALSE; } @@ -1796,7 +1796,7 @@ bool8 sub_808722C(struct Task *task, struct MapObject *mapObject, struct Sprite FreezeMapObjects(); CameraObjectReset2(); SetCameraPanningCallback(NULL); - gPlayerAvatar.unk6 = 1; + gPlayerAvatar.preventStep = TRUE; mapObject->mapobj_bit_26 = 1; task->data[1] = 1; task->data[0]++; @@ -1913,7 +1913,7 @@ bool8 sub_80874CC(struct Task *task, struct MapObject *mapObject, struct Sprite { CameraObjectReset2(); FreezeMapObjects(); - gPlayerAvatar.unk6 = 1; + gPlayerAvatar.preventStep = TRUE; mapObject->mapobj_bit_13 = 1; task->data[0]++; return FALSE; @@ -1951,7 +1951,7 @@ bool8 sub_808759C(struct Task *task, struct MapObject *mapObject, struct Sprite { if (FieldObjectClearAnimIfSpecialAnimFinished(mapObject)) { - gPlayerAvatar.unk6 = 0; + gPlayerAvatar.preventStep = FALSE; ScriptContext2_Disable(); UnfreezeMapObjects(); DestroyTask(FindTaskIdByFunc(sub_8087470)); @@ -1996,7 +1996,7 @@ bool8 sub_80876C8(struct Task *task, struct MapObject *mapObject, struct Sprite { FreezeMapObjects(); CameraObjectReset2(); - gPlayerAvatar.unk6 = 1; + gPlayerAvatar.preventStep = TRUE; mapObject->mapobj_bit_26 = 1; task->data[0]++; return FALSE; @@ -2893,7 +2893,7 @@ void sub_8088984(struct Task *task) { ScriptContext2_Enable(); FreezeMapObjects(); - gPlayerAvatar.unk6 = 1; + gPlayerAvatar.preventStep = TRUE; SetPlayerAvatarStateMask(8); PlayerGetDestCoords(&task->data[1], &task->data[2]); MoveCoords(gMapObjects[gPlayerAvatar.mapObjectId].placeholder18, &task->data[1], &task->data[2]); @@ -2947,7 +2947,7 @@ void sub_8088AF4(struct Task *task) mapObject = &gMapObjects[gPlayerAvatar.mapObjectId]; if (FieldObjectClearAnimIfSpecialAnimFinished(mapObject)) { - gPlayerAvatar.unk6 = 0; + gPlayerAvatar.preventStep = FALSE; gPlayerAvatar.flags &= 0xdf; FieldObjectSetSpecialAnim(mapObject, GetFaceDirectionAnimId(mapObject->placeholder18)); sub_8127ED0(mapObject->mapobj_unk_1A, 1); @@ -3024,7 +3024,7 @@ void sub_8088CA0(struct Task *task) if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(mapObject) || FieldObjectClearAnimIfSpecialAnimFinished(mapObject)) { task->data[15] = gPlayerAvatar.flags; - gPlayerAvatar.unk6 = 0x01; + gPlayerAvatar.preventStep = TRUE; SetPlayerAvatarStateMask(1); sub_8059BF4(); FieldObjectSetSpecialAnim(mapObject, 0x39); @@ -3296,7 +3296,7 @@ void sub_80892A0(struct Task *task) task->data[0]++; task->data[2] = 17; task->data[15] = gPlayerAvatar.flags; - gPlayerAvatar.unk6 = 1; + gPlayerAvatar.preventStep = TRUE; SetPlayerAvatarStateMask(0x01); if (task->data[15] & 0x08) { @@ -3398,7 +3398,7 @@ void fishE(struct Task *task) sub_805B980(mapObject, GetPlayerAvatarGraphicsIdByStateId(state)); FieldObjectTurn(mapObject, DIR_SOUTH); gPlayerAvatar.flags = task->data[15]; - gPlayerAvatar.unk6 = 0; + gPlayerAvatar.preventStep = FALSE; FieldEffectActiveListRemove(FLDEFF_FLY_IN); DestroyTask(FindTaskIdByFunc(sub_8089270)); } diff --git a/src/field/field_map_obj.c b/src/field/field_map_obj.c index 0cba448a9..9d37d90ad 100644 --- a/src/field/field_map_obj.c +++ b/src/field/field_map_obj.c @@ -5010,7 +5010,7 @@ u8 mss_npc_reset_oampriv3_1_unk2_unk3(struct MapObject *mapObject, struct Sprite u8 sub_805F364(struct MapObject *mapObject, struct Sprite *sprite) { - if (gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1C == 0xFF || gPlayerAvatar.running1 == 2) + if (gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1C == 0xFF || gPlayerAvatar.tileTransitionState == T_TILE_CENTER) { return 0; } @@ -5172,7 +5172,7 @@ fieldmap_object_cb(sub_805F8E0, sub_805F904, gUnknown_083755C0); u8 mss_08062EA4(struct MapObject *mapObject, struct Sprite *sprite) { - if (gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1C == 0xFF || gPlayerAvatar.running1 == 2) + if (gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1C == 0xFF || gPlayerAvatar.tileTransitionState == T_TILE_CENTER) { return 0; } diff --git a/src/field/field_player_avatar.c b/src/field/field_player_avatar.c index 6c1c9123a..563550f07 100644 --- a/src/field/field_player_avatar.c +++ b/src/field/field_player_avatar.c @@ -31,7 +31,7 @@ static bool8 sub_8058854(struct MapObject *, u8); static void npc_clear_strange_bits(struct MapObject *a); static void MovePlayerAvatarUsingKeypadInput(u8 a, u16 b, u16 c); static void PlayerAllowForcedMovementIfMovingSameDirection(void); -static u8 TryDoMetatileBehaviorForcedMovement(void); +static bool8 TryDoMetatileBehaviorForcedMovement(void); static u8 GetForcedMovementByMetatileBehavior(void); static void MovePlayerNotOnBike(u8 a, u16 b); static u8 CheckMovementInputNotOnBike(u8 a); @@ -49,7 +49,7 @@ static void PlayerNotOnBikeCollide(u8 a); static void PlayCollisionSoundIfNotFacingWarp(u8 a); static void sub_8059D60(struct MapObject *a); static void StartStrengthAnim(u8 a, u8 b); -static void sub_8059F94(void); +static void DoPlayerMatJump(void); static void sub_805A06C(void); static bool8 (*const gUnknown_0830FB58[])(u8) = @@ -73,7 +73,7 @@ static bool8 (*const gUnknown_0830FB58[])(u8) = MetatileBehavior_0xBC, MetatileBehavior_IsMuddySlope, }; -static u8 (*const gUnknown_0830FBA0[])(void) = +static bool8 (*const gUnknown_0830FBA0[])(void) = { ForcedMovement_None, ForcedMovement_Slip, @@ -91,7 +91,7 @@ static u8 (*const gUnknown_0830FBA0[])(void) = ForcedMovement_SlideWest, ForcedMovement_SlideEast, sub_8058B0C, - sub_8058C04, + ForcedMovement_MatJump, sub_8058C10, ForcedMovement_MuddySlope, }; @@ -182,9 +182,9 @@ static u8 (*const gUnknown_0830FC88[])(struct Task *, struct MapObject *, struct sub_8059EA4, sub_8059F40, }; -static u8 (*const gUnknown_0830FC94[])(struct Task *, struct MapObject *) = +static u8 (*const sPlayerAvatarSecretBaseMatJump[])(struct Task *, struct MapObject *) = { - sub_805A000, + PlayerAvatar_DoSecretBaseMatJump, }; static u8 (*const gUnknown_0830FC98[])(struct Task *, struct MapObject *) = { @@ -201,9 +201,9 @@ void player_step(u8 direction, u16 newKeys, u16 heldKeys) struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId]; sub_8059D60(playerMapObj); - if (gPlayerAvatar.unk6 == 0) + if (gPlayerAvatar.preventStep == FALSE) { - sub_80E5B38(newKeys, heldKeys); + Bike_TryAcroBikeHistoryUpdate(newKeys, heldKeys); if (!sub_8058854(playerMapObj, direction)) { npc_clear_strange_bits(playerMapObj); @@ -256,11 +256,11 @@ static void MovePlayerAvatarUsingKeypadInput(u8 direction, u16 newKeys, u16 held static void PlayerAllowForcedMovementIfMovingSameDirection(void) { - if (gPlayerAvatar.running2 == 2) + if (gPlayerAvatar.runningState == MOVING) gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_5; } -static u8 TryDoMetatileBehaviorForcedMovement(void) +static bool8 TryDoMetatileBehaviorForcedMovement(void) { return gUnknown_0830FBA0[GetForcedMovementByMetatileBehavior()](); } @@ -282,7 +282,7 @@ static u8 GetForcedMovementByMetatileBehavior(void) return 0; } -u8 ForcedMovement_None(void) +bool8 ForcedMovement_None(void) { if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_6) { @@ -293,7 +293,7 @@ u8 ForcedMovement_None(void) FieldObjectSetDirection(playerMapObj, playerMapObj->mapobj_unk_18); gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_6; } - return 0; + return FALSE; } static u8 DoForcedMovement(u8 direction, void (*b)(u8)) @@ -314,13 +314,13 @@ static u8 DoForcedMovement(u8 direction, void (*b)(u8)) if (collisionType == COLLISION_LEDGE_JUMP) PlayerJumpLedge(direction); playerAvatar->flags |= PLAYER_AVATAR_FLAG_6; - playerAvatar->running2 = 2; + playerAvatar->runningState = MOVING; return 1; } } else { - playerAvatar->running2 = 2; + playerAvatar->runningState = MOVING; b(direction); return 1; } @@ -334,47 +334,47 @@ static u8 DoForcedMovementInCurrentDirection(void (*a)(u8)) return DoForcedMovement(playerMapObj->placeholder18, a); } -u8 ForcedMovement_Slip(void) +bool8 ForcedMovement_Slip(void) { - return DoForcedMovementInCurrentDirection(sub_80593C4); + return DoForcedMovementInCurrentDirection(PlayerGoSpeed2); } -u8 sub_8058AAC(void) +bool8 sub_8058AAC(void) { - return DoForcedMovement(1, PlayerGoSpeed0); + return DoForcedMovement(1, PlayerGoSpeed1); } -u8 sub_8058AC4(void) +bool8 sub_8058AC4(void) { - return DoForcedMovement(2, PlayerGoSpeed0); + return DoForcedMovement(2, PlayerGoSpeed1); } -u8 sub_8058ADC(void) +bool8 sub_8058ADC(void) { - return DoForcedMovement(3, PlayerGoSpeed0); + return DoForcedMovement(3, PlayerGoSpeed1); } -u8 sub_8058AF4(void) +bool8 sub_8058AF4(void) { - return DoForcedMovement(4, PlayerGoSpeed0); + return DoForcedMovement(4, PlayerGoSpeed1); } -u8 sub_8058B0C(void) +bool8 sub_8058B0C(void) { return DoForcedMovement(1, npc_use_some_d2s); } -u8 sub_8058B24(void) +bool8 sub_8058B24(void) { return DoForcedMovement(2, npc_use_some_d2s); } -u8 sub_8058B3C(void) +bool8 sub_8058B3C(void) { return DoForcedMovement(3, npc_use_some_d2s); } -u8 sub_8058B54(void) +bool8 sub_8058B54(void) { return DoForcedMovement(4, npc_use_some_d2s); } @@ -388,51 +388,51 @@ static u8 ForcedMovement_Slide(u8 direction, void (*b)(u8)) return DoForcedMovement(direction, b); } -u8 ForcedMovement_SlideSouth(void) +bool8 ForcedMovement_SlideSouth(void) { - return ForcedMovement_Slide(1, sub_80593C4); + return ForcedMovement_Slide(1, PlayerGoSpeed2); } -u8 ForcedMovement_SlideNorth(void) +bool8 ForcedMovement_SlideNorth(void) { - return ForcedMovement_Slide(2, sub_80593C4); + return ForcedMovement_Slide(2, PlayerGoSpeed2); } -u8 ForcedMovement_SlideWest(void) +bool8 ForcedMovement_SlideWest(void) { - return ForcedMovement_Slide(3, sub_80593C4); + return ForcedMovement_Slide(3, PlayerGoSpeed2); } -u8 ForcedMovement_SlideEast(void) +bool8 ForcedMovement_SlideEast(void) { - return ForcedMovement_Slide(4, sub_80593C4); + return ForcedMovement_Slide(4, PlayerGoSpeed2); } -u8 sub_8058C04(void) +bool8 ForcedMovement_MatJump(void) { - sub_8059F94(); - return 1; + DoPlayerMatJump(); + return TRUE; } -u8 sub_8058C10(void) +bool8 sub_8058C10(void) { sub_805A06C(); - return 1; + return TRUE; } -u8 ForcedMovement_MuddySlope(void) +bool8 ForcedMovement_MuddySlope(void) { struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId]; if (playerMapObj->placeholder18 != 2 || GetPlayerSpeed() <= 3) { - sub_80E6010(0); + Bike_UpdateBikeCounterSpeed(0); playerMapObj->mapobj_bit_9 = 1; - return DoForcedMovement(1, sub_80593C4); + return DoForcedMovement(1, PlayerGoSpeed2); } else { - return 0; + return FALSE; } } @@ -445,17 +445,17 @@ static u8 CheckMovementInputNotOnBike(u8 direction) { if (direction == DIR_NONE) { - gPlayerAvatar.running2 = 0; + gPlayerAvatar.runningState = NOT_MOVING; return 0; } - else if (direction != player_get_direction_upper_nybble() && gPlayerAvatar.running2 != 2) + else if (direction != player_get_direction_upper_nybble() && gPlayerAvatar.runningState != MOVING) { - gPlayerAvatar.running2 = 1; + gPlayerAvatar.runningState = TURN_FRAME; return 1; } else { - gPlayerAvatar.running2 = 2; + gPlayerAvatar.runningState = MOVING; return 2; } } @@ -486,7 +486,8 @@ void sub_8058D0C(u8 direction, u16 heldKeys) case 0: if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING) { - sub_80593C4(direction); + // speed 2 is fast, same speed as running + PlayerGoSpeed2(direction); return; } if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_4) && (heldKeys & B_BUTTON) && FlagGet(SYS_B_DASH) @@ -497,7 +498,7 @@ void sub_8058D0C(u8 direction, u16 heldKeys) } else { - PlayerGoSpeed0(direction); + PlayerGoSpeed1(direction); } } } @@ -601,14 +602,14 @@ static void check_acro_bike_metatile(int unused1, int unused2, u8 c, u8 *d) void SetPlayerAvatarTransitionFlags(u16 a) { - gPlayerAvatar.bike |= a; + gPlayerAvatar.unk1 |= a; DoPlayerAvatarTransition(); } static void DoPlayerAvatarTransition(void) { u8 i; - u32 flags = gPlayerAvatar.bike; + u32 flags = gPlayerAvatar.unk1; if (flags != 0) { @@ -627,7 +628,7 @@ static void DoPlayerAvatarTransition(void) } #endif } - gPlayerAvatar.bike = 0; + gPlayerAvatar.unk1 = 0; } } @@ -656,7 +657,7 @@ void PlayerAvatarTransition_AcroBike(struct MapObject *a) FieldObjectTurn(a, a->placeholder18); SetPlayerAvatarStateMask(4); BikeClearState(0, 0); - sub_80E6084(); + Bike_HandleBumpySlopeJump(); } void PlayerAvatarTransition_Surfing(struct MapObject *a) @@ -689,18 +690,18 @@ void sub_80591F4(struct MapObject *a) void sub_8059204(void) { - gPlayerAvatar.running1 = 0; + gPlayerAvatar.tileTransitionState = T_NOT_MOVING; if (PlayerIsAnimActive()) { if (!PlayerCheckIfAnimFinishedOrInactive()) { if (!player_is_anim_in_certain_ranges()) - gPlayerAvatar.running1 = 1; + gPlayerAvatar.tileTransitionState = T_TILE_TRANSITION; } else { if (!sub_80592A4()) - gPlayerAvatar.running1 = 2; + gPlayerAvatar.tileTransitionState = T_TILE_CENTER; } } } @@ -721,7 +722,7 @@ static bool8 player_is_anim_in_certain_ranges(void) static bool8 sub_80592A4(void) { - if (player_is_anim_in_certain_ranges() && gPlayerAvatar.running2 != 1) + if (player_is_anim_in_certain_ranges() && gPlayerAvatar.runningState != TURN_FRAME) return TRUE; else return FALSE; @@ -761,12 +762,14 @@ void PlayerSetAnimId(u8 animId, u8 b) } } -void PlayerGoSpeed0(u8 a) +// normal speed (1 speed) +void PlayerGoSpeed1(u8 a) { PlayerSetAnimId(GetGoSpeed0AnimId(a), 2); } -void sub_80593C4(u8 a) +// fast speed (2 speed) +void PlayerGoSpeed2(u8 a) { PlayerSetAnimId(sub_8060744(a), 2); } @@ -776,7 +779,8 @@ void npc_use_some_d2s(u8 a) PlayerSetAnimId(d2s_08064034(a), 2); } -void sub_80593F4(u8 a) +// fastest speed (4 speed) +void PlayerGoSpeed4(u8 a) { PlayerSetAnimId(sub_806079C(a), 2); } @@ -816,48 +820,54 @@ void PlayerJumpLedge(u8 direction) void sub_80594C0(void) { - if (gPlayerAvatar.running1 == 2 || gPlayerAvatar.running1 == 0) + if (gPlayerAvatar.tileTransitionState == T_TILE_CENTER || gPlayerAvatar.tileTransitionState == T_NOT_MOVING) { if (player_should_look_direction_be_enforced_upon_movement()) sub_8059348(GetFaceDirectionAnimId(gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_18)); } } -void sub_8059504(u8 a) +// wheelie idle +void PlayerIdleWheelie(u8 a) { PlayerSetAnimId(sub_80609D8(a), 1); } -//normal to wheelie +// normal to wheelie void PlayerStartWheelie(u8 a) { PlayerSetAnimId(sub_8060A04(a), 1); } -void sub_8059534(u8 a) +// wheelie to normal +void PlayerEndWheelie(u8 a) { PlayerSetAnimId(sub_8060A30(a), 1); } -void sub_805954C(u8 a) +// wheelie hopping standing +void PlayerStandingHoppingWheelie(u8 a) { PlaySE(SE_JITE_PYOKO); PlayerSetAnimId(sub_8060A5C(a), 1); } -void sub_8059570(u8 a) +// wheelie hopping moving +void PlayerMovingHoppingWheelie(u8 a) { PlaySE(SE_JITE_PYOKO); PlayerSetAnimId(sub_8060A88(a), 2); } -void sub_8059594(u8 a) +// wheelie hopping ledge +void PlayerLedgeHoppingWheelie(u8 a) { PlaySE(SE_JITE_PYOKO); PlayerSetAnimId(sub_8060AB4(a), 8); } -void sub_80595B8(u8 direction) +// acro turn jump +void PlayerAcroTurnJump(u8 direction) { PlaySE(SE_JITE_PYOKO); PlayerSetAnimId(sub_8060878(direction), 1); @@ -963,8 +973,8 @@ void sub_80597F4(void) FieldObjectSetDirection(playerMapObj, playerMapObj->mapobj_unk_18); if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_MACH_BIKE | PLAYER_AVATAR_FLAG_ACRO_BIKE)) { - sub_80E6084(); - sub_80E6010(0); + Bike_HandleBumpySlopeJump(); + Bike_UpdateBikeCounterSpeed(0); } } @@ -1060,7 +1070,6 @@ bool8 IsPlayerFacingSurfableFishableWater(void) void ClearPlayerAvatarInfo(void) { - //TODO: 0x24 should be the size of gPlayerAvatar memset(&gPlayerAvatar, 0, sizeof(struct PlayerAvatar)); } @@ -1099,7 +1108,7 @@ void SetPlayerAvatarExtraStateTransition(u8 a, u8 b) { u8 unk = GetPlayerAvatarStateTransitionByGraphicsId(a, gPlayerAvatar.gender); - gPlayerAvatar.bike |= unk | b; + gPlayerAvatar.unk1 |= unk | b; DoPlayerAvatarTransition(); } @@ -1127,8 +1136,8 @@ void InitPlayerAvatar(s16 x, s16 y, u8 direction, u8 gender) mapObject->mapobj_unk_1B = sub_8126B54(); FieldObjectTurn(mapObject, direction); ClearPlayerAvatarInfo(); - gPlayerAvatar.running2 = 0; - gPlayerAvatar.running1 = 0; + gPlayerAvatar.runningState = NOT_MOVING; + gPlayerAvatar.tileTransitionState = T_NOT_MOVING; gPlayerAvatar.mapObjectId = mapObjectId; gPlayerAvatar.spriteId = mapObject->spriteId; gPlayerAvatar.gender = gender; @@ -1212,7 +1221,7 @@ static void sub_8059E2C(u8 taskId) u8 sub_8059E84(struct Task *task, struct MapObject *b, struct MapObject *c) { ScriptContext2_Enable(); - gPlayerAvatar.unk6 = 1; + gPlayerAvatar.preventStep = TRUE; task->data[0]++; return 0; } @@ -1244,7 +1253,7 @@ u8 sub_8059F40(struct Task *task, struct MapObject *b, struct MapObject *c) { FieldObjectClearAnimIfSpecialAnimFinished(b); FieldObjectClearAnimIfSpecialAnimFinished(c); - gPlayerAvatar.unk6 = 0; + gPlayerAvatar.preventStep = FALSE; ScriptContext2_Disable(); DestroyTask(FindTaskIdByFunc(sub_8059E2C)); } @@ -1253,24 +1262,23 @@ u8 sub_8059F40(struct Task *task, struct MapObject *b, struct MapObject *c) /* Some field effect */ -static void sub_8059FB4(u8 taskId); +static void DoPlayerAvatarSecretBaseMatJump(u8 taskId); -static void sub_8059F94(void) +static void DoPlayerMatJump(void) { - u8 taskId = CreateTask(sub_8059FB4, 0xFF); - - sub_8059FB4(taskId); + DoPlayerAvatarSecretBaseMatJump(CreateTask(DoPlayerAvatarSecretBaseMatJump, 0xFF)); } -static void sub_8059FB4(u8 taskId) +static void DoPlayerAvatarSecretBaseMatJump(u8 taskId) { - while (gUnknown_0830FC94[gTasks[taskId].data[0]](&gTasks[taskId], &gMapObjects[gPlayerAvatar.mapObjectId])) + while (sPlayerAvatarSecretBaseMatJump[gTasks[taskId].data[0]](&gTasks[taskId], &gMapObjects[gPlayerAvatar.mapObjectId])) ; } -u8 sub_805A000(struct Task *task, struct MapObject *mapObject) +// because data[0] is used to call this, it can be inferred that there may have been multiple mat jump functions at one point, so the name for these groups of functions is appropriate in assuming the sole use of mat jump. +u8 PlayerAvatar_DoSecretBaseMatJump(struct Task *task, struct MapObject *mapObject) { - gPlayerAvatar.unk6 = 1; + gPlayerAvatar.preventStep = TRUE; if (FieldObjectClearAnimIfSpecialAnimFinished(mapObject)) { PlaySE(SE_DANSA); @@ -1278,9 +1286,9 @@ u8 sub_805A000(struct Task *task, struct MapObject *mapObject) task->data[1]++; if (task->data[1] > 1) { - gPlayerAvatar.unk6 = 0; - gPlayerAvatar.bike |= 0x20; - DestroyTask(FindTaskIdByFunc(sub_8059FB4)); + gPlayerAvatar.preventStep = FALSE; + gPlayerAvatar.unk1 |= 0x20; + DestroyTask(FindTaskIdByFunc(DoPlayerAvatarSecretBaseMatJump)); } } return 0; @@ -1307,7 +1315,7 @@ u8 sub_805A0D8(struct Task *task, struct MapObject *mapObject) { task->data[0]++; task->data[1] = mapObject->placeholder18; - gPlayerAvatar.unk6 = 1; + gPlayerAvatar.preventStep = TRUE; ScriptContext2_Enable(); PlaySE(SE_TK_WARPIN); return 1; @@ -1349,7 +1357,7 @@ u8 sub_805A1B8(struct Task *task, struct MapObject *mapObject) { FieldObjectSetSpecialAnim(mapObject, GetSimpleGoAnimId(GetOppositeDirection(task->data[1]))); ScriptContext2_Disable(); - gPlayerAvatar.unk6 = 0; + gPlayerAvatar.preventStep = FALSE; DestroyTask(FindTaskIdByFunc(sub_805A08C)); } return 0; @@ -1369,7 +1377,7 @@ void sub_805A20C(u8 a) Overworld_ChangeMusicToDefault(); gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_SURFING; gPlayerAvatar.flags |= PLAYER_AVATAR_FLAG_ON_FOOT; - gPlayerAvatar.unk6 = 1; + gPlayerAvatar.preventStep = TRUE; taskId = CreateTask(taskFF_0805D1D4, 0xFF); gTasks[taskId].data[0] = a; taskFF_0805D1D4(taskId); @@ -1397,7 +1405,7 @@ static void sub_805A2D0(u8 taskId) { sub_805B980(playerMapObj, GetPlayerAvatarGraphicsIdByStateId(0)); FieldObjectSetSpecialAnim(playerMapObj, GetFaceDirectionAnimId(playerMapObj->mapobj_unk_18)); - gPlayerAvatar.unk6 = 0; + gPlayerAvatar.preventStep = FALSE; ScriptContext2_Disable(); DestroySprite(&gSprites[playerMapObj->mapobj_unk_1A]); DestroyTask(taskId); @@ -1462,7 +1470,7 @@ static void Task_Fishing(u8 taskId) u8 Fishing1(struct Task *task) { ScriptContext2_Enable(); - gPlayerAvatar.unk6 = 1; + gPlayerAvatar.preventStep = TRUE; task->tStep++; return 0; } @@ -1647,7 +1655,7 @@ u8 Fishing11(struct Task *task) if (task->tFrameCounter != 0) { - gPlayerAvatar.unk6 = 0; + gPlayerAvatar.preventStep = FALSE; ScriptContext2_Disable(); FishingWildEncounter(task->tFishingRod); sub_80BE97C(1); @@ -1707,7 +1715,7 @@ u8 Fishing16(struct Task *task) { if (MenuUpdateWindowText()) { - gPlayerAvatar.unk6 = 0; + gPlayerAvatar.preventStep = FALSE; ScriptContext2_Disable(); UnfreezeMapObjects(); MenuZeroFillScreen(); diff --git a/src/field/field_specials.c b/src/field/field_specials.c index 36362d098..899905429 100644 --- a/src/field/field_specials.c +++ b/src/field/field_specials.c @@ -48,9 +48,9 @@ extern u16 gSpecialVar_0x8004; extern u16 gSpecialVar_0x8005; extern u16 gScriptResult; -EWRAM_DATA u8 gUnknown_02039250 = 0; -EWRAM_DATA u8 gUnknown_02039251 = 0; -EWRAM_DATA u32 gUnknown_02039254 = 0; +EWRAM_DATA bool8 gBikeCyclingChallenge = FALSE; +EWRAM_DATA u8 gBikeCollisions = 0; +EWRAM_DATA u32 gBikeCyclingTimer = 0; EWRAM_DATA u8 gUnknown_02039258 = 0; EWRAM_DATA u8 gUnknown_02039259 = 0; EWRAM_DATA u8 gUnknown_0203925A = 0; @@ -76,16 +76,16 @@ void ScrSpecial_ViewWallClock(void) void ResetCyclingRoadChallengeData(void) { - gUnknown_02039250 = 0; - gUnknown_02039251 = 0; - gUnknown_02039254 = 0; + gBikeCyclingChallenge = FALSE; + gBikeCollisions = 0; + gBikeCyclingTimer = 0; } void ScrSpecial_BeginCyclingRoadChallenge(void) { - gUnknown_02039250 = 1; - gUnknown_02039251 = 0; - gUnknown_02039254 = gMain.vblankCounter1; + gBikeCyclingChallenge = TRUE; + gBikeCollisions = 0; + gBikeCyclingTimer = gMain.vblankCounter1; } u16 GetPlayerAvatarBike(void) @@ -171,10 +171,10 @@ static void DetermineCyclingRoadResults(u32 arg0, u8 arg1) } void FinishCyclingRoadChallenge(void) { - const u32 time = gMain.vblankCounter1 - gUnknown_02039254; + const u32 time = gMain.vblankCounter1 - gBikeCyclingTimer; - DetermineCyclingRoadResults(time, gUnknown_02039251); - RecordCyclingRoadResults(time, gUnknown_02039251); + DetermineCyclingRoadResults(time, gBikeCollisions); + RecordCyclingRoadResults(time, gBikeCollisions); } static void RecordCyclingRoadResults(u32 arg0, u8 arg1) { diff --git a/src/field/map_obj_lock.c b/src/field/map_obj_lock.c index 2856320b8..91feaf177 100644 --- a/src/field/map_obj_lock.c +++ b/src/field/map_obj_lock.c @@ -10,7 +10,7 @@ extern u16 gScriptFacing; bool8 walkrun_is_standing_still(void) { - if (gPlayerAvatar.running1 == 1) + if (gPlayerAvatar.tileTransitionState == T_TILE_TRANSITION) return FALSE; else return TRUE; -- cgit v1.2.3 From 17bb6dc21f3b5ab3cf1a694bb966928d1c24482f Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Wed, 18 Oct 2017 14:21:43 -0400 Subject: mbt to mach trans and additional comments --- src/field/bike.c | 122 +++++++++++++++++++++++----------------- src/field/field_player_avatar.c | 4 +- 2 files changed, 73 insertions(+), 53 deletions(-) (limited to 'src/field') diff --git a/src/field/bike.c b/src/field/bike.c index 58359e97f..e36ae1798 100644 --- a/src/field/bike.c +++ b/src/field/bike.c @@ -17,7 +17,7 @@ extern u8 gUnusedBikeCameraAheadPanback; static void MovePlayerOnMachBike(u8, u16, u16); static u8 GetMachBikeTransition(u8 *); static void MachBikeTransition_FaceDirection(u8); -static void MachBikeTransition_TurnFrame(u8); +static void MachBikeTransition_TurnDirection(u8); static void MachBikeTransition_TrySpeedUp(u8); static void MachBikeTransition_TrySlowDown(u8); static void MovePlayerOnAcroBike(u8, u16, u16); @@ -55,10 +55,19 @@ static u8 CanBikeFaceDirOnMetatile(u8, u8); static bool8 WillPlayerCollideWithCollision(u8, u8); static void Bike_SetBikeStill(void); +/* + A bike transition is a type of callback for the bike that actually + modifies the bicycle's direction or momentum or otherwise movement. + Alternatively, a bike may also have input handlers which process the + bike transition to call: the acro bike has input handlers while the mach + bike does not. This is because the Acro needs to know the button inputs + for its complex tricks and actions. +*/ + static void (*const sMachBikeTransitions[])(u8) = { - MachBikeTransition_FaceDirection, // the difference between this and turn frame is that face direction has no turn anim while turn frame does. - MachBikeTransition_TurnFrame, + MachBikeTransition_FaceDirection, // Face vs Turn: Face has no anim while Turn does. Turn checks for collision because if you turn right as opposed to face right, if there is a wall there, turn will make a bonk sound effect while face will not. + MachBikeTransition_TurnDirection, MachBikeTransition_TrySpeedUp, MachBikeTransition_TrySlowDown, }; @@ -103,16 +112,16 @@ static u8 (*const sAcroBikeInputHandlers[])(u8 *, u16, u16) = const u16 gMachBikeSpeeds[] = {SPEED_NORMAL, SPEED_FAST, SPEED_FASTEST}; // this is a list of timers to compare against later, terminated with 0. the only timer being compared against is 4 frames in this list. -static const u8 BikeTimerList[] = {4, 0}; +static const u8 AcroBikeJumpTimerList[] = {4, 0}; -// this is a list of history inputs to do in order to do the check to retrieve a jump direction for acro bike. -static const struct BikeHistoryInputInfo gAcroBikeJumpInputList[] = +// this is a list of history inputs to do in order to do the check to retrieve a jump direction for acro bike. it seems to be an extensible list, so its possible that Game Freak may have intended for the Acro Bike to have more complex tricks at some point. The final list only has the acro jump. +static const struct BikeHistoryInputInfo gAcroBikeTricksList[] = { // the 0xF is a mask performed with each byte of the array in order to perform the check on only the last entry of the history list, otherwise the check wouldnt work as there can be 0xF0 as opposed to 0x0F. - {DIR_SOUTH, B_BUTTON, 0xF, 0xF, BikeTimerList, BikeTimerList, DIR_SOUTH}, - {DIR_NORTH, B_BUTTON, 0xF, 0xF, BikeTimerList, BikeTimerList, DIR_NORTH}, - {DIR_WEST, B_BUTTON, 0xF, 0xF, BikeTimerList, BikeTimerList, DIR_WEST}, - {DIR_EAST, B_BUTTON, 0xF, 0xF, BikeTimerList, BikeTimerList, DIR_EAST}, + {DIR_SOUTH, B_BUTTON, 0xF, 0xF, AcroBikeJumpTimerList, AcroBikeJumpTimerList, DIR_SOUTH}, + {DIR_NORTH, B_BUTTON, 0xF, 0xF, AcroBikeJumpTimerList, AcroBikeJumpTimerList, DIR_NORTH}, + {DIR_WEST, B_BUTTON, 0xF, 0xF, AcroBikeJumpTimerList, AcroBikeJumpTimerList, DIR_WEST}, + {DIR_EAST, B_BUTTON, 0xF, 0xF, AcroBikeJumpTimerList, AcroBikeJumpTimerList, DIR_EAST}, }; void MovePlayerOnBike(u8 direction, u16 newKeys, u16 heldKeys) @@ -141,10 +150,10 @@ static u8 GetMachBikeTransition(u8 *dirTraveling) if (gPlayerAvatar.bikeSpeed == SPEED_STANDING) { gPlayerAvatar.runningState = NOT_MOVING; - return MBT_FACE_DIRECTION; + return MACH_TRANS_FACE_DIRECTION; } gPlayerAvatar.runningState = MOVING; - return MBT_START_MOVING; + return MACH_TRANS_START_MOVING; } // we need to check if the last traveled direction changed from the new direction as well as ensuring that we dont update the state while the player is moving: see the else check. @@ -154,27 +163,27 @@ static u8 GetMachBikeTransition(u8 *dirTraveling) { *dirTraveling = direction; // implement the new direction gPlayerAvatar.runningState = MOVING; - return MBT_START_MOVING; + return MACH_TRANS_START_MOVING; } - // if you didnt start moving but your dir was different, do a turn frame instead. - gPlayerAvatar.runningState = TURN_FRAME; - return MBT_TURN_FRAME; + // if you didnt start moving but your dir was different, do a turn direction instead. + gPlayerAvatar.runningState = TURN_DIRECTION; + return MACH_TRANS_TURN_DIRECTION; } else // the player is either going in the current direction and hasnt changed or their state is currently moving. { gPlayerAvatar.runningState = MOVING; - return MBT_KEEP_MOVING; + return MACH_TRANS_KEEP_MOVING; } } -// the difference between face direction and turn frame is that one changes direction while the other does the animation of turning as well as changing direction. +// the difference between face direction and turn direction is that one changes direction while the other does the animation of turning as well as changing direction. static void MachBikeTransition_FaceDirection(u8 direction) { PlayerFaceDirection(direction); Bike_SetBikeStill(); } -static void MachBikeTransition_TurnFrame(u8 direction) +static void MachBikeTransition_TurnDirection(u8 direction) { struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId]; @@ -259,6 +268,7 @@ static void MachBikeTransition_TrySlowDown(u8 var) } } +// the acro bike requires the input handler to be executed before the transition can. static void MovePlayerOnAcroBike(u8 newDirection, u16 newKeys, u16 heldKeys) { sAcroBikeTransitions[CheckMovementInputAcroBike(&newDirection, newKeys, heldKeys)](newDirection); @@ -316,10 +326,10 @@ static u8 AcroBikeHandleInputTurning(u8 *newDirection, u16 newKeys, u16 heldKeys *newDirection = gPlayerAvatar.newDirBackup; gPlayerAvatar.bikeFrameCounter++; - //Wait 6 frames before actually changing direction + // Wait 6 frames before actually changing direction if (gPlayerAvatar.bikeFrameCounter > 6) // ... because it takes 6 frames to advance 1 tile. { - gPlayerAvatar.runningState = TURN_FRAME; + gPlayerAvatar.runningState = TURN_DIRECTION; gPlayerAvatar.acroBikeState = ACRO_STATE_NORMAL; Bike_SetBikeStill(); return ACRO_TRANS_TURN_DIRECTION; @@ -348,7 +358,7 @@ static u8 AcroBikeHandleInputTurning(u8 *newDirection, u16 newKeys, u16 heldKeys return ACRO_TRANS_FACE_DIRECTION; } -static u8 AcroBikeHandleInputWheelieStanding(u8 *ptr, u16 newKeys, u16 heldKeys) +static u8 AcroBikeHandleInputWheelieStanding(u8 *newDirection, u16 newKeys, u16 heldKeys) { u8 direction; struct MapObject *playerMapObj; @@ -361,12 +371,12 @@ static u8 AcroBikeHandleInputWheelieStanding(u8 *ptr, u16 newKeys, u16 heldKeys) gPlayerAvatar.bikeFrameCounter++; else { - //B button was released. + // B button was released. gPlayerAvatar.bikeFrameCounter = 0; if (!MetatileBehavior_IsBumpySlope(playerMapObj->mapobj_unk_1E)) { - //Go back to normal on flat ground - *ptr = direction; + // Go back to normal on flat ground + *newDirection = direction; gPlayerAvatar.acroBikeState = ACRO_STATE_NORMAL; Bike_SetBikeStill(); return ACRO_TRANS_WHEELIE_TO_NORMAL; @@ -374,28 +384,28 @@ static u8 AcroBikeHandleInputWheelieStanding(u8 *ptr, u16 newKeys, u16 heldKeys) } if (gPlayerAvatar.bikeFrameCounter >= 40) { - *ptr = direction; + *newDirection = direction; gPlayerAvatar.acroBikeState = ACRO_STATE_BUNNY_HOP; Bike_SetBikeStill(); return ACRO_TRANS_WHEELIE_HOPPING_STANDING; } - if (*ptr == direction) + if (*newDirection == direction) { gPlayerAvatar.runningState = MOVING; gPlayerAvatar.acroBikeState = ACRO_STATE_WHEELIE_MOVING; Bike_SetBikeStill(); return ACRO_TRANS_WHEELIE_MOVING; } - if (*ptr == 0) + if (*newDirection == 0) { - *ptr = direction; + *newDirection = direction; return ACRO_TRANS_WHEELIE_IDLE; } - gPlayerAvatar.runningState = TURN_FRAME; + gPlayerAvatar.runningState = TURN_DIRECTION; return ACRO_TRANS_WHEELIE_IDLE; } -static u8 AcroBikeHandleInputBunnyHop(u8 *ptr, u16 newKeys, u16 heldKeys) +static u8 AcroBikeHandleInputBunnyHop(u8 *newDirection, u16 newKeys, u16 heldKeys) { u8 direction; struct MapObject *playerMapObj; @@ -404,42 +414,45 @@ static u8 AcroBikeHandleInputBunnyHop(u8 *ptr, u16 newKeys, u16 heldKeys) playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId]; if (!(heldKeys & B_BUTTON)) { - //B button was released + // B button was released Bike_SetBikeStill(); if (MetatileBehavior_IsBumpySlope(playerMapObj->mapobj_unk_1E)) { - //Do a standing wheelie on a bumpy slope + // even though B was released, dont undo the wheelie on the bumpy slope. gPlayerAvatar.acroBikeState = ACRO_STATE_WHEELIE_STANDING; - return CheckMovementInputAcroBike(ptr, newKeys, heldKeys); + return CheckMovementInputAcroBike(newDirection, newKeys, heldKeys); } else { - //Go back to normal on flat ground - *ptr = direction; + // .. otherwise, go back to normal on flat ground + *newDirection = direction; gPlayerAvatar.runningState = NOT_MOVING; gPlayerAvatar.acroBikeState = ACRO_STATE_NORMAL; return ACRO_TRANS_WHEELIE_TO_NORMAL; } } - //B Button is still held + // B Button is still held - if (*ptr == DIR_NONE) + if (*newDirection == DIR_NONE) { - *ptr = direction; + // we did not move, so keep hopping in place without moving. + *newDirection = direction; gPlayerAvatar.runningState = NOT_MOVING; return ACRO_TRANS_WHEELIE_HOPPING_STANDING; } - if (*ptr != direction && gPlayerAvatar.runningState != MOVING) + if (*newDirection != direction && gPlayerAvatar.runningState != MOVING) { - gPlayerAvatar.runningState = TURN_FRAME; + // we changed direction, so turn but do not move hop. + gPlayerAvatar.runningState = TURN_DIRECTION; return ACRO_TRANS_WHEELIE_HOPPING_STANDING; } + // otherwise, we started moving while hopping gPlayerAvatar.runningState = MOVING; return ACRO_TRANS_WHEELIE_HOPPING_MOVING; } -static u8 AcroBikeHandleInputWheelieMoving(u8 *ptr, u16 newKeys, u16 heldKeys) +static u8 AcroBikeHandleInputWheelieMoving(u8 *newDirection, u16 newKeys, u16 heldKeys) { u8 direction; struct MapObject *playerMapObj; @@ -448,36 +461,44 @@ static u8 AcroBikeHandleInputWheelieMoving(u8 *ptr, u16 newKeys, u16 heldKeys) playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId]; if (!(heldKeys & B_BUTTON)) { + // we were moving on a wheelie, but we let go while moving. reset bike still status Bike_SetBikeStill(); if (!MetatileBehavior_IsBumpySlope(playerMapObj->mapobj_unk_1E)) { + // we let go of B and arent on a bumpy slope, set state to normal because now we need to handle this gPlayerAvatar.acroBikeState = ACRO_STATE_NORMAL; - if (*ptr == 0) + if (*newDirection == DIR_NONE) { - *ptr = direction; + // we stopped moving but are turning, still try to lower the wheelie in place. + *newDirection = direction; gPlayerAvatar.runningState = NOT_MOVING; return ACRO_TRANS_WHEELIE_TO_NORMAL; } - if (*ptr != direction && gPlayerAvatar.runningState != MOVING) + if (*newDirection != direction && gPlayerAvatar.runningState != MOVING) { + // we did not turn while lowering wheelie, so do so without turning. gPlayerAvatar.runningState = NOT_MOVING; return ACRO_TRANS_WHEELIE_TO_NORMAL; } + // if we are moving while lowering wheelie, put the acro into a lowering state while moving. gPlayerAvatar.runningState = MOVING; return ACRO_TRANS_WHEELIE_LOWERING_MOVING; } + // please do not undo the wheelie on a bumpy slope gPlayerAvatar.acroBikeState = ACRO_STATE_WHEELIE_STANDING; - return CheckMovementInputAcroBike(ptr, newKeys, heldKeys); + return CheckMovementInputAcroBike(newDirection, newKeys, heldKeys); } - if (*ptr == 0) + // we are still holding B. + if (*newDirection == DIR_NONE) { - *ptr = direction; + // idle the wheelie in place because we're holding B without moving. + *newDirection = direction; gPlayerAvatar.acroBikeState = ACRO_STATE_WHEELIE_STANDING; gPlayerAvatar.runningState = NOT_MOVING; Bike_SetBikeStill(); return ACRO_TRANS_WHEELIE_IDLE; } - if (direction != *ptr && gPlayerAvatar.runningState != MOVING) + if (direction != *newDirection && gPlayerAvatar.runningState != MOVING) { gPlayerAvatar.runningState = NOT_MOVING; return ACRO_TRANS_WHEELIE_IDLE; @@ -502,7 +523,6 @@ static u8 AcroBikeHandleInputTurnJump(u8 *ptr, u16 newKeys, u16 heldKeys) return CheckMovementInputAcroBike(ptr, newKeys, heldKeys); } -// Face vs Turn: Face has no anim while Turn does. Turn checks for collision because if you turn right as opposed to face right, if there is a wall there, turn will make a bonk sound effect while face will not. static void AcroBikeTransition_FaceDirection(u8 direction) { PlayerFaceDirection(direction); @@ -791,7 +811,7 @@ static u8 AcroBike_GetJumpDirection(void) for (i = 0; i < 4; i++) { - const struct BikeHistoryInputInfo *historyInputInfo = &gAcroBikeJumpInputList[i]; + const struct BikeHistoryInputInfo *historyInputInfo = &gAcroBikeTricksList[i]; u32 dirHistory = gPlayerAvatar.directionHistory; u32 abStartSelectHistory = gPlayerAvatar.abStartSelectHistory; diff --git a/src/field/field_player_avatar.c b/src/field/field_player_avatar.c index 563550f07..e7da9b1b7 100644 --- a/src/field/field_player_avatar.c +++ b/src/field/field_player_avatar.c @@ -450,7 +450,7 @@ static u8 CheckMovementInputNotOnBike(u8 direction) } else if (direction != player_get_direction_upper_nybble() && gPlayerAvatar.runningState != MOVING) { - gPlayerAvatar.runningState = TURN_FRAME; + gPlayerAvatar.runningState = TURN_DIRECTION; return 1; } else @@ -722,7 +722,7 @@ static bool8 player_is_anim_in_certain_ranges(void) static bool8 sub_80592A4(void) { - if (player_is_anim_in_certain_ranges() && gPlayerAvatar.runningState != TURN_FRAME) + if (player_is_anim_in_certain_ranges() && gPlayerAvatar.runningState != TURN_DIRECTION) return TRUE; else return FALSE; -- cgit v1.2.3 From 13c196eda57ebbdb3c7e14bebd2985f1edceae34 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Sat, 21 Oct 2017 19:51:28 -0700 Subject: More battle_tower work --- src/field/choose_party.c | 2 +- src/field/tv.c | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) (limited to 'src/field') diff --git a/src/field/choose_party.c b/src/field/choose_party.c index f35dcdf56..879139aa4 100644 --- a/src/field/choose_party.c +++ b/src/field/choose_party.c @@ -176,7 +176,7 @@ static bool8 IsMonAllowedInBattleTower(struct Pokemon *pkmn) return TRUE; } - if ((gSaveBlock2.filler_A8.var_4AC & 1) == 0 + if ((gSaveBlock2.filler_A8.battleTowerLevelType) == 0 && GetMonData(pkmn, MON_DATA_LEVEL) > 50) return FALSE; diff --git a/src/field/tv.c b/src/field/tv.c index e9b5e850d..89e978d00 100644 --- a/src/field/tv.c +++ b/src/field/tv.c @@ -675,11 +675,11 @@ void sub_80BE320(void) bravoTrainerTower->var01 = 1; StringCopy(bravoTrainerTower->trainerName, gSaveBlock2.playerName); StringCopy(bravoTrainerTower->pokemonName, gSaveBlock2.filler_A8.filler_3DC); - bravoTrainerTower->species = gSaveBlock2.filler_A8.var_480; - bravoTrainerTower->defeatedSpecies = gSaveBlock2.filler_A8.var_482; - bravoTrainerTower->var16 = sub_8135D3C(gSaveBlock2.filler_A8.var_4D0); + bravoTrainerTower->species = gSaveBlock2.filler_A8.firstMonSpecies; + bravoTrainerTower->defeatedSpecies = gSaveBlock2.filler_A8.defeatedBySpecies; + bravoTrainerTower->var16 = sub_8135D3C(gSaveBlock2.filler_A8.lastStreakLevelType); bravoTrainerTower->var1c = gSaveBlock2.filler_A8.var_4AD; - if (gSaveBlock2.filler_A8.var_4D0 == 0) + if (gSaveBlock2.filler_A8.lastStreakLevelType == 0) bravoTrainerTower->btLevel = 50; else bravoTrainerTower->btLevel = 100; -- cgit v1.2.3 From b4f9d6d92ea3bf2ce0227324e85311aaa0f828f0 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Mon, 23 Oct 2017 19:09:35 -0400 Subject: document berry.c. --- src/field/berry.c | 499 +++++++++++++++++++++------------------ src/field/field_control_avatar.c | 3 +- src/field/field_map_obj.c | 13 +- src/field/field_special_scene.c | 3 +- src/field/item_use.c | 2 +- 5 files changed, 277 insertions(+), 243 deletions(-) (limited to 'src/field') diff --git a/src/field/berry.c b/src/field/berry.c index d82eab2a6..5127a3a4f 100644 --- a/src/field/berry.c +++ b/src/field/berry.c @@ -12,10 +12,16 @@ #include "text.h" #define BERRY_NAME_LENGTH 6 +#define BERRY_REGROW_LIMIT 10 +#define MAX_BERRY_TREES 128 +#define BERRY_NONE 0 #define FIRST_BERRY ITEM_CHERI_BERRY #define LAST_BERRY ITEM_ENIGMA_BERRY +#define GETBERRYID(berry) ((berry - FIRST_BERRY) + 1) +#define GETITEMID(berry) ((berry + FIRST_BERRY) - 1) + #ifdef ENGLISH #define NAME_CHERI_BERRY _("CHERI") #define NAME_CHESTO_BERRY _("CHESTO") @@ -61,92 +67,92 @@ #define NAME_STARF_BERRY _("STARF") #define NAME_ENIGMA_BERRY _("ENIGMA") -const u8 gBerryDescriptionPart1_Cheri[] = _("Blooms with delicate pretty flowers."); -const u8 gBerryDescriptionPart2_Cheri[] = _("The bright red BERRY is very spicy."); -const u8 gBerryDescriptionPart1_Chesto[] = _("The BERRY’s thick skin and fruit are"); -const u8 gBerryDescriptionPart2_Chesto[] = _("very tough. It is dry-tasting all over."); -const u8 gBerryDescriptionPart1_Pecha[] = _("Very sweet and delicious."); -const u8 gBerryDescriptionPart2_Pecha[] = _("Also very tender - handle with care."); -const u8 gBerryDescriptionPart1_Rawst[] = _("If the leaves grow long and curly,"); -const u8 gBerryDescriptionPart2_Rawst[] = _("the BERRY seems to grow very bitter."); -const u8 gBerryDescriptionPart1_Aspear[] = _("The hard BERRY is dense with a rich"); -const u8 gBerryDescriptionPart2_Aspear[] = _("juice. It is quite sour."); -const u8 gBerryDescriptionPart1_Leppa[] = _("Grows slower than CHERI and others."); -const u8 gBerryDescriptionPart2_Leppa[] = _("The smaller the BERRY, the tastier."); -const u8 gBerryDescriptionPart1_Oran[] = _("A peculiar BERRY with a mix of flavors."); -const u8 gBerryDescriptionPart2_Oran[] = _("BERRIES grow in half a day."); -const u8 gBerryDescriptionPart1_Persim[] = _("Loves sunlight. The BERRY’s color"); -const u8 gBerryDescriptionPart2_Persim[] = _("grows vivid when exposed to the sun."); -const u8 gBerryDescriptionPart1_Lum[] = _("Slow to grow. If raised with loving"); -const u8 gBerryDescriptionPart2_Lum[] = _("care, it may grow two BERRIES."); -const u8 gBerryDescriptionPart1_Sitrus[] = _("Closely related to ORAN. The large"); -const u8 gBerryDescriptionPart2_Sitrus[] = _("BERRY has a well-rounded flavor."); -const u8 gBerryDescriptionPart1_Figy[] = _("The BERRY, which looks chewed up,"); -const u8 gBerryDescriptionPart2_Figy[] = _("brims with spicy substances."); -const u8 gBerryDescriptionPart1_Wiki[] = _("The BERRY is said to have grown lumpy"); -const u8 gBerryDescriptionPart2_Wiki[] = _("to help POKéMON grip it."); -const u8 gBerryDescriptionPart1_Mago[] = _("The BERRY turns curvy as it grows."); -const u8 gBerryDescriptionPart2_Mago[] = _("The curvier, the sweeter and tastier."); -const u8 gBerryDescriptionPart1_Aguav[] = _("The flower is dainty. It is rare in its"); -const u8 gBerryDescriptionPart2_Aguav[] = _("ability to grow without light."); -const u8 gBerryDescriptionPart1_Iapapa[] = _("The BERRY is very big and sour."); -const u8 gBerryDescriptionPart2_Iapapa[] = _("It takes at least a day to grow."); -const u8 gBerryDescriptionPart1_Razz[] = _("The red BERRY tastes slightly spicy."); -const u8 gBerryDescriptionPart2_Razz[] = _("It grows quickly in just four hours."); -const u8 gBerryDescriptionPart1_Bluk[] = _("The BERRY is blue on the outside, but"); -const u8 gBerryDescriptionPart2_Bluk[] = _("it blackens the mouth when eaten."); -const u8 gBerryDescriptionPart1_Nanab[] = _("This BERRY was the seventh"); -const u8 gBerryDescriptionPart2_Nanab[] = _("discovered in the world. It is sweet."); -const u8 gBerryDescriptionPart1_Wepear[] = _("The flower is small and white. It has a"); -const u8 gBerryDescriptionPart2_Wepear[] = _("delicate balance of bitter and sour."); -const u8 gBerryDescriptionPart1_Pinap[] = _("Weak against wind and cold."); -const u8 gBerryDescriptionPart2_Pinap[] = _("The fruit is spicy and the skin, sour."); -const u8 gBerryDescriptionPart1_Pomeg[] = _("However much it is watered,"); -const u8 gBerryDescriptionPart2_Pomeg[] = _("it only grows up to six BERRIES."); -const u8 gBerryDescriptionPart1_Kelpsy[] = _("A rare variety shaped like a root."); -const u8 gBerryDescriptionPart2_Kelpsy[] = _("Grows a very large flower."); -const u8 gBerryDescriptionPart1_Qualot[] = _("Loves water. Grows strong even in"); -const u8 gBerryDescriptionPart2_Qualot[] = _("locations with constant rainfall."); -const u8 gBerryDescriptionPart1_Hondew[] = _("A BERRY that is very valuable and"); -const u8 gBerryDescriptionPart2_Hondew[] = _("rarely seen. It is very delicious."); -const u8 gBerryDescriptionPart1_Grepa[] = _("Despite its tenderness and round"); -const u8 gBerryDescriptionPart2_Grepa[] = _("shape, the BERRY is unimaginably sour."); -const u8 gBerryDescriptionPart1_Tamato[] = _("The BERRY is lip-bendingly spicy."); -const u8 gBerryDescriptionPart2_Tamato[] = _("It takes time to grow."); -const u8 gBerryDescriptionPart1_Cornn[] = _("A BERRY from an ancient era. May not"); -const u8 gBerryDescriptionPart2_Cornn[] = _("grow unless planted in quantity."); -const u8 gBerryDescriptionPart1_Magost[] = _("A BERRY that is widely said to have"); -const u8 gBerryDescriptionPart2_Magost[] = _("a finely balanced flavor."); -const u8 gBerryDescriptionPart1_Rabuta[] = _("A rare variety that is overgrown with"); -const u8 gBerryDescriptionPart2_Rabuta[] = _("hair. It is quite bitter."); -const u8 gBerryDescriptionPart1_Nomel[] = _("Quite sour. Just one bite makes it"); -const u8 gBerryDescriptionPart2_Nomel[] = _("impossible to taste for three days."); -const u8 gBerryDescriptionPart1_Spelon[] = _("The vividly red BERRY is very spicy."); -const u8 gBerryDescriptionPart2_Spelon[] = _("Its warts secrete a spicy substance."); -const u8 gBerryDescriptionPart1_Pamtre[] = _("Drifts on the sea from somewhere."); -const u8 gBerryDescriptionPart2_Pamtre[] = _("It is thought to grow elsewhere."); -const u8 gBerryDescriptionPart1_Watmel[] = _("A huge BERRY, with some over 20"); -const u8 gBerryDescriptionPart2_Watmel[] = _("inches discovered. Exceedingly sweet."); -const u8 gBerryDescriptionPart1_Durin[] = _("Bitter to even look at. It is so"); -const u8 gBerryDescriptionPart2_Durin[] = _("bitter, no one has ever eaten it as is."); -const u8 gBerryDescriptionPart1_Belue[] = _("It is glossy and looks delicious, but"); -const u8 gBerryDescriptionPart2_Belue[] = _("it is awfully sour. Takes time to grow."); -const u8 gBerryDescriptionPart1_Liechi[] = _("A mysterious BERRY. It is rumored to"); -const u8 gBerryDescriptionPart2_Liechi[] = _("contain the power of the sea."); -const u8 gBerryDescriptionPart1_Ganlon[] = _("A mysterious BERRY. It is rumored to"); -const u8 gBerryDescriptionPart2_Ganlon[] = _("contain the power of the land."); -const u8 gBerryDescriptionPart1_Salac[] = _("A mysterious BERRY. It is rumored to"); -const u8 gBerryDescriptionPart2_Salac[] = _("contain the power of the sky."); -const u8 gBerryDescriptionPart1_Petaya[] = _("A mysterious BERRY. It is rumored to"); -const u8 gBerryDescriptionPart2_Petaya[] = _("contain the power of all living things."); -const u8 gBerryDescriptionPart1_Apicot[] = _("A very mystifying BERRY. No telling"); -const u8 gBerryDescriptionPart2_Apicot[] = _("what may happen or how it can be used."); -const u8 gBerryDescriptionPart1_Lansat[] = _("Said to be a legendary BERRY."); -const u8 gBerryDescriptionPart2_Lansat[] = _("Holding it supposedly brings joy."); -const u8 gBerryDescriptionPart1_Starf[] = _("So strong, it was abandoned at the"); -const u8 gBerryDescriptionPart2_Starf[] = _("world’s edge. Considered a mirage."); -const u8 gBerryDescriptionPart1_Enigma[] = _("A completely enigmatic BERRY."); -const u8 gBerryDescriptionPart2_Enigma[] = _("Appears to have the power of stars."); +static const u8 gBerryDescriptionPart1_Cheri[] = _("Blooms with delicate pretty flowers."); +static const u8 gBerryDescriptionPart2_Cheri[] = _("The bright red BERRY is very spicy."); +static const u8 gBerryDescriptionPart1_Chesto[] = _("The BERRY’s thick skin and fruit are"); +static const u8 gBerryDescriptionPart2_Chesto[] = _("very tough. It is dry-tasting all over."); +static const u8 gBerryDescriptionPart1_Pecha[] = _("Very sweet and delicious."); +static const u8 gBerryDescriptionPart2_Pecha[] = _("Also very tender - handle with care."); +static const u8 gBerryDescriptionPart1_Rawst[] = _("If the leaves grow long and curly,"); +static const u8 gBerryDescriptionPart2_Rawst[] = _("the BERRY seems to grow very bitter."); +static const u8 gBerryDescriptionPart1_Aspear[] = _("The hard BERRY is dense with a rich"); +static const u8 gBerryDescriptionPart2_Aspear[] = _("juice. It is quite sour."); +static const u8 gBerryDescriptionPart1_Leppa[] = _("Grows slower than CHERI and others."); +static const u8 gBerryDescriptionPart2_Leppa[] = _("The smaller the BERRY, the tastier."); +static const u8 gBerryDescriptionPart1_Oran[] = _("A peculiar BERRY with a mix of flavors."); +static const u8 gBerryDescriptionPart2_Oran[] = _("BERRIES grow in half a day."); +static const u8 gBerryDescriptionPart1_Persim[] = _("Loves sunlight. The BERRY’s color"); +static const u8 gBerryDescriptionPart2_Persim[] = _("grows vivid when exposed to the sun."); +static const u8 gBerryDescriptionPart1_Lum[] = _("Slow to grow. If raised with loving"); +static const u8 gBerryDescriptionPart2_Lum[] = _("care, it may grow two BERRIES."); +static const u8 gBerryDescriptionPart1_Sitrus[] = _("Closely related to ORAN. The large"); +static const u8 gBerryDescriptionPart2_Sitrus[] = _("BERRY has a well-rounded flavor."); +static const u8 gBerryDescriptionPart1_Figy[] = _("The BERRY, which looks chewed up,"); +static const u8 gBerryDescriptionPart2_Figy[] = _("brims with spicy substances."); +static const u8 gBerryDescriptionPart1_Wiki[] = _("The BERRY is said to have grown lumpy"); +static const u8 gBerryDescriptionPart2_Wiki[] = _("to help POKéMON grip it."); +static const u8 gBerryDescriptionPart1_Mago[] = _("The BERRY turns curvy as it grows."); +static const u8 gBerryDescriptionPart2_Mago[] = _("The curvier, the sweeter and tastier."); +static const u8 gBerryDescriptionPart1_Aguav[] = _("The flower is dainty. It is rare in its"); +static const u8 gBerryDescriptionPart2_Aguav[] = _("ability to grow without light."); +static const u8 gBerryDescriptionPart1_Iapapa[] = _("The BERRY is very big and sour."); +static const u8 gBerryDescriptionPart2_Iapapa[] = _("It takes at least a day to grow."); +static const u8 gBerryDescriptionPart1_Razz[] = _("The red BERRY tastes slightly spicy."); +static const u8 gBerryDescriptionPart2_Razz[] = _("It grows quickly in just four hours."); +static const u8 gBerryDescriptionPart1_Bluk[] = _("The BERRY is blue on the outside, but"); +static const u8 gBerryDescriptionPart2_Bluk[] = _("it blackens the mouth when eaten."); +static const u8 gBerryDescriptionPart1_Nanab[] = _("This BERRY was the seventh"); +static const u8 gBerryDescriptionPart2_Nanab[] = _("discovered in the world. It is sweet."); +static const u8 gBerryDescriptionPart1_Wepear[] = _("The flower is small and white. It has a"); +static const u8 gBerryDescriptionPart2_Wepear[] = _("delicate balance of bitter and sour."); +static const u8 gBerryDescriptionPart1_Pinap[] = _("Weak against wind and cold."); +static const u8 gBerryDescriptionPart2_Pinap[] = _("The fruit is spicy and the skin, sour."); +static const u8 gBerryDescriptionPart1_Pomeg[] = _("However much it is watered,"); +static const u8 gBerryDescriptionPart2_Pomeg[] = _("it only grows up to six BERRIES."); +static const u8 gBerryDescriptionPart1_Kelpsy[] = _("A rare variety shaped like a root."); +static const u8 gBerryDescriptionPart2_Kelpsy[] = _("Grows a very large flower."); +static const u8 gBerryDescriptionPart1_Qualot[] = _("Loves water. Grows strong even in"); +static const u8 gBerryDescriptionPart2_Qualot[] = _("locations with constant rainfall."); +static const u8 gBerryDescriptionPart1_Hondew[] = _("A BERRY that is very valuable and"); +static const u8 gBerryDescriptionPart2_Hondew[] = _("rarely seen. It is very delicious."); +static const u8 gBerryDescriptionPart1_Grepa[] = _("Despite its tenderness and round"); +static const u8 gBerryDescriptionPart2_Grepa[] = _("shape, the BERRY is unimaginably sour."); +static const u8 gBerryDescriptionPart1_Tamato[] = _("The BERRY is lip-bendingly spicy."); +static const u8 gBerryDescriptionPart2_Tamato[] = _("It takes time to grow."); +static const u8 gBerryDescriptionPart1_Cornn[] = _("A BERRY from an ancient era. May not"); +static const u8 gBerryDescriptionPart2_Cornn[] = _("grow unless planted in quantity."); +static const u8 gBerryDescriptionPart1_Magost[] = _("A BERRY that is widely said to have"); +static const u8 gBerryDescriptionPart2_Magost[] = _("a finely balanced flavor."); +static const u8 gBerryDescriptionPart1_Rabuta[] = _("A rare variety that is overgrown with"); +static const u8 gBerryDescriptionPart2_Rabuta[] = _("hair. It is quite bitter."); +static const u8 gBerryDescriptionPart1_Nomel[] = _("Quite sour. Just one bite makes it"); +static const u8 gBerryDescriptionPart2_Nomel[] = _("impossible to taste for three days."); +static const u8 gBerryDescriptionPart1_Spelon[] = _("The vividly red BERRY is very spicy."); +static const u8 gBerryDescriptionPart2_Spelon[] = _("Its warts secrete a spicy substance."); +static const u8 gBerryDescriptionPart1_Pamtre[] = _("Drifts on the sea from somewhere."); +static const u8 gBerryDescriptionPart2_Pamtre[] = _("It is thought to grow elsewhere."); +static const u8 gBerryDescriptionPart1_Watmel[] = _("A huge BERRY, with some over 20"); +static const u8 gBerryDescriptionPart2_Watmel[] = _("inches discovered. Exceedingly sweet."); +static const u8 gBerryDescriptionPart1_Durin[] = _("Bitter to even look at. It is so"); +static const u8 gBerryDescriptionPart2_Durin[] = _("bitter, no one has ever eaten it as is."); +static const u8 gBerryDescriptionPart1_Belue[] = _("It is glossy and looks delicious, but"); +static const u8 gBerryDescriptionPart2_Belue[] = _("it is awfully sour. Takes time to grow."); +static const u8 gBerryDescriptionPart1_Liechi[] = _("A mysterious BERRY. It is rumored to"); +static const u8 gBerryDescriptionPart2_Liechi[] = _("contain the power of the sea."); +static const u8 gBerryDescriptionPart1_Ganlon[] = _("A mysterious BERRY. It is rumored to"); +static const u8 gBerryDescriptionPart2_Ganlon[] = _("contain the power of the land."); +static const u8 gBerryDescriptionPart1_Salac[] = _("A mysterious BERRY. It is rumored to"); +static const u8 gBerryDescriptionPart2_Salac[] = _("contain the power of the sky."); +static const u8 gBerryDescriptionPart1_Petaya[] = _("A mysterious BERRY. It is rumored to"); +static const u8 gBerryDescriptionPart2_Petaya[] = _("contain the power of all living things."); +static const u8 gBerryDescriptionPart1_Apicot[] = _("A very mystifying BERRY. No telling"); +static const u8 gBerryDescriptionPart2_Apicot[] = _("what may happen or how it can be used."); +static const u8 gBerryDescriptionPart1_Lansat[] = _("Said to be a legendary BERRY."); +static const u8 gBerryDescriptionPart2_Lansat[] = _("Holding it supposedly brings joy."); +static const u8 gBerryDescriptionPart1_Starf[] = _("So strong, it was abandoned at the"); +static const u8 gBerryDescriptionPart2_Starf[] = _("world’s edge. Considered a mirage."); +static const u8 gBerryDescriptionPart1_Enigma[] = _("A completely enigmatic BERRY."); +static const u8 gBerryDescriptionPart2_Enigma[] = _("Appears to have the power of stars."); #elif defined(GERMAN) #define NAME_CHERI_BERRY _("AMRENA") #define NAME_CHESTO_BERRY _("MARON") @@ -192,92 +198,92 @@ const u8 gBerryDescriptionPart2_Enigma[] = _("Appears to have the power of stars #define NAME_STARF_BERRY _("KRAMBO") #define NAME_ENIGMA_BERRY _("ENIGMA") -const u8 gBerryDescriptionPart1_Cheri[] = _("Erblüht mit hübschen, zarten Blumen."); -const u8 gBerryDescriptionPart2_Cheri[] = _("Diese knallrote BEERE ist sehr scharf."); -const u8 gBerryDescriptionPart1_Chesto[] = _("Diese BEERE hat eine dicke Haut und"); -const u8 gBerryDescriptionPart2_Chesto[] = _("hartes Fruchtfleisch. Trocken!"); -const u8 gBerryDescriptionPart1_Pecha[] = _("Sehr süß und delikat."); -const u8 gBerryDescriptionPart2_Pecha[] = _("Sehr zart. Vorsichtig anfassen!"); -const u8 gBerryDescriptionPart1_Rawst[] = _("Wenn die Blätter lang und wellig sind,"); -const u8 gBerryDescriptionPart2_Rawst[] = _("wird die BEERE sehr bitter."); -const u8 gBerryDescriptionPart1_Aspear[] = _("Diese harte BEERE ist sehr"); -const u8 gBerryDescriptionPart2_Aspear[] = _("saftig und sauer im Geschmack!"); -const u8 gBerryDescriptionPart1_Leppa[] = _("Wächst langsamer als AMRENA und"); -const u8 gBerryDescriptionPart2_Leppa[] = _("andere. Je kleiner, desto delikater."); -const u8 gBerryDescriptionPart1_Oran[] = _("Eine BEERE unterschiedlichsten Ge-"); -const u8 gBerryDescriptionPart2_Oran[] = _("schmacks. Wächst an einem halben Tag."); -const u8 gBerryDescriptionPart1_Persim[] = _("Liebt Sonnenlicht. Die BEERE"); -const u8 gBerryDescriptionPart2_Persim[] = _("wächst im Sonnenlicht sehr schnell."); -const u8 gBerryDescriptionPart1_Lum[] = _("Langsamer Wuchs. Wird sie liebevoll ge-"); -const u8 gBerryDescriptionPart2_Lum[] = _("pflegt, kann sie 2 BEEREN tragen."); -const u8 gBerryDescriptionPart1_Sitrus[] = _("Eng verwandt mit SINEL. Diese große"); -const u8 gBerryDescriptionPart2_Sitrus[] = _("BEERE ist von rundem Geschmack."); -const u8 gBerryDescriptionPart1_Figy[] = _("Die BEERE sieht angekaut aus. Sie ist"); -const u8 gBerryDescriptionPart2_Figy[] = _("voller scharfer Substanzen."); -const u8 gBerryDescriptionPart1_Wiki[] = _("Die BEERE wächst unförmig,"); -const u8 gBerryDescriptionPart2_Wiki[] = _("damit PKMN sie besser greifen können."); -const u8 gBerryDescriptionPart1_Mago[] = _("Die BEERE hat Ausbeulungen. Je mehr"); -const u8 gBerryDescriptionPart2_Mago[] = _("Beulen, desto schmackhafter ist sie."); -const u8 gBerryDescriptionPart1_Aguav[] = _("Die Blume ist zart. Sie ist fähig,"); -const u8 gBerryDescriptionPart2_Aguav[] = _("ohne Licht wachsen zu können."); -const u8 gBerryDescriptionPart1_Iapapa[] = _("Die BEERE ist groß und sauer."); -const u8 gBerryDescriptionPart2_Iapapa[] = _("Sie braucht einen Tag zum Wachsen."); -const u8 gBerryDescriptionPart1_Razz[] = _("Diese rote BEERE schmeckt etwas"); -const u8 gBerryDescriptionPart2_Razz[] = _("scharf. Sie wächst in nur 4 Stunden."); -const u8 gBerryDescriptionPart1_Bluk[] = _("Die BEERE ist außen blau, verfärbt"); -const u8 gBerryDescriptionPart2_Bluk[] = _("sich im Mund aber schwarz."); -const u8 gBerryDescriptionPart1_Nanab[] = _("Diese BEERE war die 7., die auf der"); -const u8 gBerryDescriptionPart2_Nanab[] = _("Welt entdeckt wurde. Sie ist süß."); -const u8 gBerryDescriptionPart1_Wepear[] = _("Die Blume ist klein und weiß. Angenehm"); -const u8 gBerryDescriptionPart2_Wepear[] = _("bitter und sauer zugleich."); -const u8 gBerryDescriptionPart1_Pinap[] = _("Wind und Kälte verträgt sie nicht."); -const u8 gBerryDescriptionPart2_Pinap[] = _("Fruchtfleisch: Scharf. Haut: Sauer."); -const u8 gBerryDescriptionPart1_Pomeg[] = _("Egal wie viel Wasser sie bekommt, sie"); -const u8 gBerryDescriptionPart2_Pomeg[] = _("trägt immer bis zu 6 BEEREN."); -const u8 gBerryDescriptionPart1_Kelpsy[] = _("Eine Seltenheit. Geformt wie eine"); -const u8 gBerryDescriptionPart2_Kelpsy[] = _("Wurzel. Hat eine große Blume."); -const u8 gBerryDescriptionPart1_Qualot[] = _("Liebt das Wasser. Wächst besonders"); -const u8 gBerryDescriptionPart2_Qualot[] = _("gut in regenreichen Gegenden."); -const u8 gBerryDescriptionPart1_Hondew[] = _("Eine wertvolle und seltene BEERE."); -const u8 gBerryDescriptionPart2_Hondew[] = _("Sie ist sehr schmackhaft."); -const u8 gBerryDescriptionPart1_Grepa[] = _("Die BEERE ist zart und von runder"); -const u8 gBerryDescriptionPart2_Grepa[] = _("Form. Aber sie ist unglaublich sauer!"); -const u8 gBerryDescriptionPart1_Tamato[] = _("Die Schärfe der BEERE verbrennt die"); -const u8 gBerryDescriptionPart2_Tamato[] = _("Lippen. Sie braucht Zeit zum Wachsen."); -const u8 gBerryDescriptionPart1_Cornn[] = _("Eine BEERE aus alten Zeiten. Wächst"); -const u8 gBerryDescriptionPart2_Cornn[] = _("nur, wenn in großen Mengen gepflanzt."); -const u8 gBerryDescriptionPart1_Magost[] = _("Eine BEERE, die für ihren feinen, aus-"); -const u8 gBerryDescriptionPart2_Magost[] = _("gewogenen Geschmack bekannt ist."); -const u8 gBerryDescriptionPart1_Rabuta[] = _("Eine Seltenheit, die über und über mit"); -const u8 gBerryDescriptionPart2_Rabuta[] = _("Haaren bewachsen ist. Sehr bitter!"); -const u8 gBerryDescriptionPart1_Nomel[] = _("Sehr sauer. Ein Biss betäubt die"); -const u8 gBerryDescriptionPart2_Nomel[] = _("Geschmacksnerven für 3 Tage!"); -const u8 gBerryDescriptionPart1_Spelon[] = _("Die leuchtend rote BEERE ist sehr"); -const u8 gBerryDescriptionPart2_Spelon[] = _("scharf. Gibt scharfe Substanzen ab!"); -const u8 gBerryDescriptionPart1_Pamtre[] = _("Wird vom Meer angespült. Sie wächst"); -const u8 gBerryDescriptionPart2_Pamtre[] = _("an einem anderen Ort."); -const u8 gBerryDescriptionPart1_Watmel[] = _("Eine große BEERE, 25 cm groß."); -const u8 gBerryDescriptionPart2_Watmel[] = _("Außergewöhnlich süß."); -const u8 gBerryDescriptionPart1_Durin[] = _("Bitter schon ihr Anblick! Sie ist so"); -const u8 gBerryDescriptionPart2_Durin[] = _("bitter, dass niemand sie pur isst."); -const u8 gBerryDescriptionPart1_Belue[] = _("Sie glänzt, sieht zart aus, ist extrem"); -const u8 gBerryDescriptionPart2_Belue[] = _("sauer und braucht Zeit zum Wachsen."); -const u8 gBerryDescriptionPart1_Liechi[] = _("Eine geheimnisvolle BEERE. Man sagt,"); -const u8 gBerryDescriptionPart2_Liechi[] = _("sie enthalte die Kraft des Meeres."); -const u8 gBerryDescriptionPart1_Ganlon[] = _("Eine geheimnisvolle BEERE. Man sagt,"); -const u8 gBerryDescriptionPart2_Ganlon[] = _("sie enthalte die Kraft des Landes."); -const u8 gBerryDescriptionPart1_Salac[] = _("Eine geheimnisvolle BEERE. Man sagt,"); -const u8 gBerryDescriptionPart2_Salac[] = _("sie enthalte die Kraft des Himmels."); -const u8 gBerryDescriptionPart1_Petaya[] = _("Eine geheimnisvolle BEERE. Man sagt,"); -const u8 gBerryDescriptionPart2_Petaya[] = _("sie enthalte die Kraft allen Lebens."); -const u8 gBerryDescriptionPart1_Apicot[] = _("Eine rätselhafte BEERE. Man kann"); -const u8 gBerryDescriptionPart2_Apicot[] = _("nicht sagen, wie und was sie ist."); -const u8 gBerryDescriptionPart1_Lansat[] = _("Eine legendäre BEERE. Sie zu"); -const u8 gBerryDescriptionPart2_Lansat[] = _("tragen bringt Freude."); -const u8 gBerryDescriptionPart1_Starf[] = _("So stark, dass sie an den Rand der"); -const u8 gBerryDescriptionPart2_Starf[] = _("Welt verbannt wurde. Ein Märchen?"); -const u8 gBerryDescriptionPart1_Enigma[] = _("Eine enigmatische BEERE. Sie scheint"); -const u8 gBerryDescriptionPart2_Enigma[] = _("die Macht der Sterne zu besitzen."); +static const u8 gBerryDescriptionPart1_Cheri[] = _("Erblüht mit hübschen, zarten Blumen."); +static const u8 gBerryDescriptionPart2_Cheri[] = _("Diese knallrote BEERE ist sehr scharf."); +static const u8 gBerryDescriptionPart1_Chesto[] = _("Diese BEERE hat eine dicke Haut und"); +static const u8 gBerryDescriptionPart2_Chesto[] = _("hartes Fruchtfleisch. Trocken!"); +static const u8 gBerryDescriptionPart1_Pecha[] = _("Sehr süß und delikat."); +static const u8 gBerryDescriptionPart2_Pecha[] = _("Sehr zart. Vorsichtig anfassen!"); +static const u8 gBerryDescriptionPart1_Rawst[] = _("Wenn die Blätter lang und wellig sind,"); +static const u8 gBerryDescriptionPart2_Rawst[] = _("wird die BEERE sehr bitter."); +static const u8 gBerryDescriptionPart1_Aspear[] = _("Diese harte BEERE ist sehr"); +static const u8 gBerryDescriptionPart2_Aspear[] = _("saftig und sauer im Geschmack!"); +static const u8 gBerryDescriptionPart1_Leppa[] = _("Wächst langsamer als AMRENA und"); +static const u8 gBerryDescriptionPart2_Leppa[] = _("andere. Je kleiner, desto delikater."); +static const u8 gBerryDescriptionPart1_Oran[] = _("Eine BEERE unterschiedlichsten Ge-"); +static const u8 gBerryDescriptionPart2_Oran[] = _("schmacks. Wächst an einem halben Tag."); +static const u8 gBerryDescriptionPart1_Persim[] = _("Liebt Sonnenlicht. Die BEERE"); +static const u8 gBerryDescriptionPart2_Persim[] = _("wächst im Sonnenlicht sehr schnell."); +static const u8 gBerryDescriptionPart1_Lum[] = _("Langsamer Wuchs. Wird sie liebevoll ge-"); +static const u8 gBerryDescriptionPart2_Lum[] = _("pflegt, kann sie 2 BEEREN tragen."); +static const u8 gBerryDescriptionPart1_Sitrus[] = _("Eng verwandt mit SINEL. Diese große"); +static const u8 gBerryDescriptionPart2_Sitrus[] = _("BEERE ist von rundem Geschmack."); +static const u8 gBerryDescriptionPart1_Figy[] = _("Die BEERE sieht angekaut aus. Sie ist"); +static const u8 gBerryDescriptionPart2_Figy[] = _("voller scharfer Substanzen."); +static const u8 gBerryDescriptionPart1_Wiki[] = _("Die BEERE wächst unförmig,"); +static const u8 gBerryDescriptionPart2_Wiki[] = _("damit PKMN sie besser greifen können."); +static const u8 gBerryDescriptionPart1_Mago[] = _("Die BEERE hat Ausbeulungen. Je mehr"); +static const u8 gBerryDescriptionPart2_Mago[] = _("Beulen, desto schmackhafter ist sie."); +static const u8 gBerryDescriptionPart1_Aguav[] = _("Die Blume ist zart. Sie ist fähig,"); +static const u8 gBerryDescriptionPart2_Aguav[] = _("ohne Licht wachsen zu können."); +static const u8 gBerryDescriptionPart1_Iapapa[] = _("Die BEERE ist groß und sauer."); +static const u8 gBerryDescriptionPart2_Iapapa[] = _("Sie braucht einen Tag zum Wachsen."); +static const u8 gBerryDescriptionPart1_Razz[] = _("Diese rote BEERE schmeckt etwas"); +static const u8 gBerryDescriptionPart2_Razz[] = _("scharf. Sie wächst in nur 4 Stunden."); +static const u8 gBerryDescriptionPart1_Bluk[] = _("Die BEERE ist außen blau, verfärbt"); +static const u8 gBerryDescriptionPart2_Bluk[] = _("sich im Mund aber schwarz."); +static const u8 gBerryDescriptionPart1_Nanab[] = _("Diese BEERE war die 7., die auf der"); +static const u8 gBerryDescriptionPart2_Nanab[] = _("Welt entdeckt wurde. Sie ist süß."); +static const u8 gBerryDescriptionPart1_Wepear[] = _("Die Blume ist klein und weiß. Angenehm"); +static const u8 gBerryDescriptionPart2_Wepear[] = _("bitter und sauer zugleich."); +static const u8 gBerryDescriptionPart1_Pinap[] = _("Wind und Kälte verträgt sie nicht."); +static const u8 gBerryDescriptionPart2_Pinap[] = _("Fruchtfleisch: Scharf. Haut: Sauer."); +static const u8 gBerryDescriptionPart1_Pomeg[] = _("Egal wie viel Wasser sie bekommt, sie"); +static const u8 gBerryDescriptionPart2_Pomeg[] = _("trägt immer bis zu 6 BEEREN."); +static const u8 gBerryDescriptionPart1_Kelpsy[] = _("Eine Seltenheit. Geformt wie eine"); +static const u8 gBerryDescriptionPart2_Kelpsy[] = _("Wurzel. Hat eine große Blume."); +static const u8 gBerryDescriptionPart1_Qualot[] = _("Liebt das Wasser. Wächst besonders"); +static const u8 gBerryDescriptionPart2_Qualot[] = _("gut in regenreichen Gegenden."); +static const u8 gBerryDescriptionPart1_Hondew[] = _("Eine wertvolle und seltene BEERE."); +static const u8 gBerryDescriptionPart2_Hondew[] = _("Sie ist sehr schmackhaft."); +static const u8 gBerryDescriptionPart1_Grepa[] = _("Die BEERE ist zart und von runder"); +static const u8 gBerryDescriptionPart2_Grepa[] = _("Form. Aber sie ist unglaublich sauer!"); +static const u8 gBerryDescriptionPart1_Tamato[] = _("Die Schärfe der BEERE verbrennt die"); +static const u8 gBerryDescriptionPart2_Tamato[] = _("Lippen. Sie braucht Zeit zum Wachsen."); +static const u8 gBerryDescriptionPart1_Cornn[] = _("Eine BEERE aus alten Zeiten. Wächst"); +static const u8 gBerryDescriptionPart2_Cornn[] = _("nur, wenn in großen Mengen gepflanzt."); +static const u8 gBerryDescriptionPart1_Magost[] = _("Eine BEERE, die für ihren feinen, aus-"); +static const u8 gBerryDescriptionPart2_Magost[] = _("gewogenen Geschmack bekannt ist."); +static const u8 gBerryDescriptionPart1_Rabuta[] = _("Eine Seltenheit, die über und über mit"); +static const u8 gBerryDescriptionPart2_Rabuta[] = _("Haaren bewachsen ist. Sehr bitter!"); +static const u8 gBerryDescriptionPart1_Nomel[] = _("Sehr sauer. Ein Biss betäubt die"); +static const u8 gBerryDescriptionPart2_Nomel[] = _("Geschmacksnerven für 3 Tage!"); +static const u8 gBerryDescriptionPart1_Spelon[] = _("Die leuchtend rote BEERE ist sehr"); +static const u8 gBerryDescriptionPart2_Spelon[] = _("scharf. Gibt scharfe Substanzen ab!"); +static const u8 gBerryDescriptionPart1_Pamtre[] = _("Wird vom Meer angespült. Sie wächst"); +static const u8 gBerryDescriptionPart2_Pamtre[] = _("an einem anderen Ort."); +static const u8 gBerryDescriptionPart1_Watmel[] = _("Eine große BEERE, 25 cm groß."); +static const u8 gBerryDescriptionPart2_Watmel[] = _("Außergewöhnlich süß."); +static const u8 gBerryDescriptionPart1_Durin[] = _("Bitter schon ihr Anblick! Sie ist so"); +static const u8 gBerryDescriptionPart2_Durin[] = _("bitter, dass niemand sie pur isst."); +static const u8 gBerryDescriptionPart1_Belue[] = _("Sie glänzt, sieht zart aus, ist extrem"); +static const u8 gBerryDescriptionPart2_Belue[] = _("sauer und braucht Zeit zum Wachsen."); +static const u8 gBerryDescriptionPart1_Liechi[] = _("Eine geheimnisvolle BEERE. Man sagt,"); +static const u8 gBerryDescriptionPart2_Liechi[] = _("sie enthalte die Kraft des Meeres."); +static const u8 gBerryDescriptionPart1_Ganlon[] = _("Eine geheimnisvolle BEERE. Man sagt,"); +static const u8 gBerryDescriptionPart2_Ganlon[] = _("sie enthalte die Kraft des Landes."); +static const u8 gBerryDescriptionPart1_Salac[] = _("Eine geheimnisvolle BEERE. Man sagt,"); +static const u8 gBerryDescriptionPart2_Salac[] = _("sie enthalte die Kraft des Himmels."); +static const u8 gBerryDescriptionPart1_Petaya[] = _("Eine geheimnisvolle BEERE. Man sagt,"); +static const u8 gBerryDescriptionPart2_Petaya[] = _("sie enthalte die Kraft allen Lebens."); +static const u8 gBerryDescriptionPart1_Apicot[] = _("Eine rätselhafte BEERE. Man kann"); +static const u8 gBerryDescriptionPart2_Apicot[] = _("nicht sagen, wie und was sie ist."); +static const u8 gBerryDescriptionPart1_Lansat[] = _("Eine legendäre BEERE. Sie zu"); +static const u8 gBerryDescriptionPart2_Lansat[] = _("tragen bringt Freude."); +static const u8 gBerryDescriptionPart1_Starf[] = _("So stark, dass sie an den Rand der"); +static const u8 gBerryDescriptionPart2_Starf[] = _("Welt verbannt wurde. Ein Märchen?"); +static const u8 gBerryDescriptionPart1_Enigma[] = _("Eine enigmatische BEERE. Sie scheint"); +static const u8 gBerryDescriptionPart2_Enigma[] = _("die Macht der Sterne zu besitzen."); #endif const struct Berry gBerries[] = @@ -972,7 +978,7 @@ const struct Berry gBerries[] = }, }; -const struct BerryTree gBlankBerryTree = {0}; +static const struct BerryTree gBlankBerryTree = {0}; extern u8 S_BerryTree[]; extern u16 gScriptLastTalked; @@ -980,7 +986,18 @@ extern u16 gSpecialVar_0x8004; extern u16 gSpecialVar_0x8005; extern u16 gSpecialVar_0x8006; +/* + An enigma berry is a type of berry which functions + as though it is a custom berry. Because it behaves + like its a custom berry, it doesn't hold an identity + represented in its icons or descriptions, leaving its + information to be decided by the e-reader cards + which were intended to deliver these custom + berries. +*/ + // unused +// this could be static, but making it so causes a compile-time warning. void ClearEnigmaBerries(void) { CpuFill16(0, &gSaveBlock1.enigmaBerry, sizeof(gSaveBlock1.enigmaBerry)); @@ -988,17 +1005,19 @@ void ClearEnigmaBerries(void) void SetEnigmaBerry(u8 *src) { + // initialize the enigma berry by copying the data from the script. u32 i; u8 *dest = (u8*)&gSaveBlock1.enigmaBerry; for (i = 0; i < sizeof(gSaveBlock1.enigmaBerry); i++) dest[i] = src[i]; + // at this point, the description pointer is not yet initialized. we need to initialize it since we dont know where in memory this is going to be. set the berry desc pointers to the EnigmaBerry struct's description arrays since these are where the descriptions are stored. gSaveBlock1.enigmaBerry.berry.description1 = gSaveBlock1.enigmaBerry.description1; gSaveBlock1.enigmaBerry.berry.description2 = gSaveBlock1.enigmaBerry.description2; } -u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry) +static u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry) { const u8 *description1; const u8 *description2; @@ -1006,10 +1025,11 @@ u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry) u32 checksum; u8 *dest; + // the description pointers could be pointing to anywhere in memory. we do not want these pointers to factor into the checksum as it will produce a different result every time: so back the pointers up and set them to null so the checksum is safe to calculate. description1 = gSaveBlock1.enigmaBerry.berry.description1; description2 = gSaveBlock1.enigmaBerry.berry.description2; - gSaveBlock1.enigmaBerry.berry.description1 = 0; - gSaveBlock1.enigmaBerry.berry.description2 = 0; + gSaveBlock1.enigmaBerry.berry.description1 = NULL; + gSaveBlock1.enigmaBerry.berry.description2 = NULL; dest = (u8*)enigmaBerry; checksum = 0; @@ -1018,17 +1038,19 @@ u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry) checksum += dest[i]; } + // the checksum is calculated: the descriptions are safe to restore now. gSaveBlock1.enigmaBerry.berry.description1 = description1; gSaveBlock1.enigmaBerry.berry.description2 = description2; return checksum; } +// due to e-reader scans being particularly volatile to failure, it is a requirement to check for their integrity here due to scans possibly failing to produce the correct result. bool32 IsEnigmaBerryValid(void) { - if (!gSaveBlock1.enigmaBerry.berry.stageDuration) + if (gSaveBlock1.enigmaBerry.berry.stageDuration == 0) return FALSE; - if (!gSaveBlock1.enigmaBerry.berry.maxYield) + if (gSaveBlock1.enigmaBerry.berry.maxYield == 0) return FALSE; if (GetEnigmaBerryChecksum(&gSaveBlock1.enigmaBerry) != gSaveBlock1.enigmaBerry.checksum) return FALSE; @@ -1037,37 +1059,42 @@ bool32 IsEnigmaBerryValid(void) const struct Berry *GetBerryInfo(u8 berry) { - if (berry == 0x2B && IsEnigmaBerryValid()) + // when getting the pointer to the berry info, enigma berries are handled differently. if your berry is an Enigma Berry and its checksum is valid, fetch the pointer to its information in the save block. + if (berry == GETBERRYID(ITEM_ENIGMA_BERRY) && IsEnigmaBerryValid()) return &gSaveBlock1.enigmaBerry.berry; else { - if (berry == 0 || berry > 0x2B) - berry = 1; + // invalid berries will be flattened into a cheri berry. Interestingly, if your berry was an enigma berry whos checksum failed, the game will use the Enigma Berry information for this: meaning if you see the Enigma Berry information, its actually because the checksum failed. + if (berry == BERRY_NONE || berry > GETBERRYID(LAST_BERRY)) + berry = GETBERRYID(FIRST_BERRY); return &gBerries[berry - 1]; } } -struct BerryTree *GetBerryTreeInfo(u8 id) +// the save file can handle up to a number of 128 berry trees as indicated by its definition in global.h. Interestingly, this function does not check that limit of 128. +static struct BerryTree *GetBerryTreeInfo(u8 id) { return &gSaveBlock1.berryTrees[id]; } +// this was called because the berry script was successful: meaning the player chose to water the tree. We need to check for the current tree stage and set the appropriate water flag to true. bool32 FieldObjectInteractionWaterBerryTree(void) { + // GetBerryTreeInfo does not sanitize the tree retrieved, but there are no known instances where this can cause problems. struct BerryTree *tree = GetBerryTreeInfo(FieldObjectGetBerryTreeId(gSelectedMapObject)); switch (tree->stage) { - case 1: + case BERRY_STAGE_PLANTED: tree->watered1 = TRUE; break; - case 2: + case BERRY_STAGE_SPROUTED: tree->watered2 = TRUE; break; - case 3: + case BERRY_STAGE_TALLER: tree->watered3 = TRUE; break; - case 4: + case BERRY_STAGE_FLOWERING: tree->watered4 = TRUE; break; default: @@ -1076,10 +1103,10 @@ bool32 FieldObjectInteractionWaterBerryTree(void) return TRUE; } -bool8 IsPlayerFacingPlantedBerryTree(void) +bool8 IsPlayerFacingUnplantedSoil(void) { - if (GetFieldObjectScriptPointerForComparison() == S_BerryTree - && GetStageByBerryTreeId(FieldObjectGetBerryTreeId(gSelectedMapObject)) == 0) + if (GetFieldObjectScriptPointerPlayerFacing() == S_BerryTree + && GetStageByBerryTreeId(FieldObjectGetBerryTreeId(gSelectedMapObject)) == BERRY_STAGE_NO_BERRY) return TRUE; else return FALSE; @@ -1087,7 +1114,7 @@ bool8 IsPlayerFacingPlantedBerryTree(void) bool8 TryToWaterBerryTree(void) { - if (GetFieldObjectScriptPointerForComparison() != S_BerryTree) + if (GetFieldObjectScriptPointerPlayerFacing() != S_BerryTree) return FALSE; else return FieldObjectInteractionWaterBerryTree(); @@ -1099,70 +1126,75 @@ void ClearBerryTrees(void) struct SaveBlock1 *saveBlock1 = &gSaveBlock1; struct BerryTree berryTree = gBlankBerryTree; - for (i = 0; i < (u8)ARRAY_COUNT(saveBlock1->berryTrees); i++) // casting to u8 fixes a mismatched signed compare. what + for (i = 0; i < MAX_BERRY_TREES; i++) saveBlock1->berryTrees[i] = berryTree; } -bool32 BerryTreeGrow(struct BerryTree *tree) +// when the player does not interact with the tree for a period of time, this is called to advance the grow state. +static bool32 BerryTreeGrow(struct BerryTree *tree) { - if (tree->growthSparkle) + if (tree->growthSparkle != FALSE) return FALSE; switch (tree->stage) { - case 0: + case BERRY_STAGE_NO_BERRY: return FALSE; - case 4: + case BERRY_STAGE_FLOWERING: tree->berryYield = CalcBerryYield(tree); - case 1: - case 2: - case 3: + case BERRY_STAGE_PLANTED: + case BERRY_STAGE_SPROUTED: + case BERRY_STAGE_TALLER: tree->stage++; break; - case 5: + case BERRY_STAGE_BERRIES: tree->watered1 = 0; tree->watered2 = 0; tree->watered3 = 0; tree->watered4 = 0; tree->berryYield = 0; - tree->stage = 2; - if (++tree->regrowthCount == 10) + tree->stage = BERRY_STAGE_SPROUTED; + if (++tree->regrowthCount == BERRY_REGROW_LIMIT) *tree = gBlankBerryTree; break; } return TRUE; } -void BerryTreeTimeUpdate(s32 minutes) +// totalMinutes is how long its been since the last berry tree update. +void BerryTreeTimeUpdate(s32 totalMinutes) { int i; struct BerryTree *tree; - for (i = 0; i < (u8)ARRAY_COUNT(gSaveBlock1.berryTrees); i++) + for (i = 0; i < MAX_BERRY_TREES; i++) { tree = &gSaveBlock1.berryTrees[i]; - if (tree->berry && tree->stage && !tree->growthSparkle) + if (tree->berry != BERRY_NONE && tree->stage != BERRY_STAGE_NO_BERRY && tree->growthSparkle == FALSE) { - if (minutes >= GetStageDurationByBerryType(tree->berry) * 71) + // the player has waited too long to water the berry. Reset the tree. This is because if the berry state is not in the unwatered state, the tree will grow anyway despite this check, which means BerryTreeGrow will handle the regrow process for this, removing the need for this check. This only handles the unwatered soil state. + if (totalMinutes >= GetStageDurationByBerryType(tree->berry) * 71) { *tree = gBlankBerryTree; } else { - s32 time = minutes; + // not sure why Game Freak thought a temporary variable was necessary. because time is altered below, perhaps they thought it was unsafe to change it, even though that is not how passed arguments behave. + s32 time = totalMinutes; while (time != 0) { if (tree->minutesUntilNextStage > time) { - tree->minutesUntilNextStage -= time; + tree->minutesUntilNextStage -= time; // its been X minutes since the last berry update, so update minutesUntilNextStage appropriately to match the time offset that has passed since the update. break; } + // perform the subtraction the other way around to get the number of minutes since the inferred stage update that occured, since minutesUntilNextStage is <= time. we may need this variable to simulate multiple berry cycles in the while loop. time -= tree->minutesUntilNextStage; - tree->minutesUntilNextStage = GetStageDurationByBerryType(tree->berry); - if (!BerryTreeGrow(tree)) + tree->minutesUntilNextStage = GetStageDurationByBerryType(tree->berry); // since the tree was inferred to update, set the new minutesUntilNextStage. + if (BerryTreeGrow(tree) == FALSE) break; - if (tree->stage == 5) + if (tree->stage == BERRY_STAGE_BERRIES) tree->minutesUntilNextStage *= 4; } } @@ -1170,7 +1202,7 @@ void BerryTreeTimeUpdate(s32 minutes) } } -void PlantBerryTree(u8 id, u8 berry, u8 stage, bool8 sparkle) +void PlantBerryTree(u8 id, u8 berry, u8 stage, bool8 noSparkle) { struct BerryTree *tree = GetBerryTreeInfo(id); @@ -1178,12 +1210,12 @@ void PlantBerryTree(u8 id, u8 berry, u8 stage, bool8 sparkle) tree->berry = berry; tree->minutesUntilNextStage = GetStageDurationByBerryType(berry); tree->stage = stage; - if (stage == 5) + if (stage == BERRY_STAGE_BERRIES) { tree->berryYield = CalcBerryYield(tree); tree->minutesUntilNextStage *= 4; } - if (!sparkle) + if (noSparkle == FALSE) { tree->growthSparkle = TRUE; } @@ -1209,19 +1241,19 @@ u8 ItemIdToBerryType(u16 item) u16 berry = item - FIRST_BERRY; if (berry > LAST_BERRY - FIRST_BERRY) - return 1; + return GETBERRYID(FIRST_BERRY); else - return item - FIRST_BERRY + 1; + return GETBERRYID(item); } -u16 BerryTypeToItemId(u16 berry) +static u16 BerryTypeToItemId(u16 berry) { u16 item = berry - 1; if (item > LAST_BERRY - FIRST_BERRY) return FIRST_BERRY; else - return berry + FIRST_BERRY - 1; + return GETITEMID(berry); } void GetBerryNameByBerryType(u8 berry, u8 *string) @@ -1232,10 +1264,10 @@ void GetBerryNameByBerryType(u8 berry, u8 *string) void ResetBerryTreeSparkleFlag(u8 id) { - GetBerryTreeInfo(id)->growthSparkle = 0; + GetBerryTreeInfo(id)->growthSparkle = FALSE; } -u8 BerryTreeGetNumStagesWatered(struct BerryTree *tree) +static u8 BerryTreeGetNumStagesWatered(struct BerryTree *tree) { u8 count = 0; @@ -1250,18 +1282,20 @@ u8 BerryTreeGetNumStagesWatered(struct BerryTree *tree) return count; } -u8 GetNumStagesWateredByBerryTreeId(u8 id) +static u8 GetNumStagesWateredByBerryTreeId(u8 id) { return BerryTreeGetNumStagesWatered(GetBerryTreeInfo(id)); } -u8 CalcBerryYieldInternal(u16 max, u16 min, u8 water) +static u8 CalcBerryYieldInternal(u16 max, u16 min, u8 water) { u32 randMin; u32 randMax; u32 rand; u32 extraYield; + // depending on if the player gave the tree plenty of water, berry yield will be affected proportionally. + if (water == 0) return min; else @@ -1270,7 +1304,7 @@ u8 CalcBerryYieldInternal(u16 max, u16 min, u8 water) randMax = (max - min) * (water); rand = randMin + Random() % (randMax - randMin + 1); - if ((rand & 3) > 1) + if ((rand % 4) > 1) extraYield = rand / 4 + 1; else extraYield = rand / 4; @@ -1278,7 +1312,7 @@ u8 CalcBerryYieldInternal(u16 max, u16 min, u8 water) } } -u8 CalcBerryYield(struct BerryTree *tree) +static u8 CalcBerryYield(struct BerryTree *tree) { const struct Berry *berry = GetBerryInfo(tree->berry); u8 min = berry->minYield; @@ -1287,12 +1321,12 @@ u8 CalcBerryYield(struct BerryTree *tree) return CalcBerryYieldInternal(max, min, BerryTreeGetNumStagesWatered(tree)); } -u8 GetBerryCountByBerryTreeId(u8 id) +static u8 GetBerryCountByBerryTreeId(u8 id) { return gSaveBlock1.berryTrees[id].berryYield; } -u16 GetStageDurationByBerryType(u8 berry) +static u16 GetStageDurationByBerryType(u8 berry) { return GetBerryInfo(berry)->stageDuration * 60; } @@ -1301,18 +1335,18 @@ void FieldObjectInteractionGetBerryTreeData(void) { u8 id; u8 berry; - u8 unk; + u8 localId; u8 group; u8 num; id = FieldObjectGetBerryTreeId(gSelectedMapObject); berry = GetBerryTypeByBerryTreeId(id); ResetBerryTreeSparkleFlag(id); - unk = gScriptLastTalked; + localId = gScriptLastTalked; num = gSaveBlock1.location.mapNum; group = gSaveBlock1.location.mapGroup; - if (sub_8060234(unk, num, group)) - gSpecialVar_0x8004 = 0xFF; + if (IsBerryTreeSparkling(localId, num, group)) + gSpecialVar_0x8004 = BERRY_STAGE_SPARKLING; // we cannot allow the player to grow/interact with the tree while the tree is undergoing the sparkling effect, so set the special var to the sparkling state and let the event script process the flag. else gSpecialVar_0x8004 = GetStageByBerryTreeId(id); gSpecialVar_0x8005 = GetNumStagesWateredByBerryTreeId(id); @@ -1320,7 +1354,7 @@ void FieldObjectInteractionGetBerryTreeData(void) GetBerryNameByBerryType(berry, gStringVar1); } -void sub_80B4EE4(void) +void Berry_FadeAndGoToBerryBagMenu(void) { SetMainCallback2(sub_80A68CC); } @@ -1347,11 +1381,12 @@ void FieldObjectInteractionRemoveBerryTree(void) sub_8060288(gScriptLastTalked, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); } -u8 PlayerHasBerries(void) +bool8 PlayerHasBerries(void) { return IsBagPocketNonEmpty(BAG_BERRIES); } +// whenever the player is not within view of the berry tree during its sparkle state, the sparkle state will be reset. void ResetBerryTreeSparkleFlags(void) { s16 cam_left; @@ -1369,7 +1404,7 @@ void ResetBerryTreeSparkleFlags(void) bottom = top + 8; for (i = 0; i < (u8)ARRAY_COUNT(gSaveBlock1.mapObjects); i++) { - if (gMapObjects[i].active && gMapObjects[i].animPattern == 12) + if (gMapObjects[i].active && gMapObjects[i].animPattern == 12) // is the object an active berry tree? { cam_left = gMapObjects[i].coords2.x; cam_top = gMapObjects[i].coords2.y; diff --git a/src/field/field_control_avatar.c b/src/field/field_control_avatar.c index 65357ac83..397523b07 100644 --- a/src/field/field_control_avatar.c +++ b/src/field/field_control_avatar.c @@ -856,7 +856,8 @@ u8 sub_8068F18(void) return 0; } -u8 *GetFieldObjectScriptPointerForComparison(void) +// GetFieldObjectScriptPointerPlayerFacing +u8 *GetFieldObjectScriptPointerPlayerFacing(void) { u8 r4; struct MapPosition position; diff --git a/src/field/field_map_obj.c b/src/field/field_map_obj.c index 9d37d90ad..0e1ce2a31 100644 --- a/src/field/field_map_obj.c +++ b/src/field/field_map_obj.c @@ -5549,17 +5549,16 @@ static bool8 DoesObjectCollideWithObjectAt(struct MapObject *mapObject, s16 x, s return 0; } -bool8 sub_8060234(u8 localId, u8 mapNum, u8 mapGroup) +// this function is only used in berry.c, but its unknown whether its intended context is the berry tree check or if its checking for the flickering. +bool8 IsBerryTreeSparkling(u8 localId, u8 mapNum, u8 mapGroup) { u8 mapObjectId; + if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId)) - { if (gSprites[gMapObjects[mapObjectId].spriteId].data7 & 2) - { - return 1; - } - } - return 0; + return TRUE; + + return FALSE; } void sub_8060288(u8 localId, u8 mapNum, u8 mapGroup) diff --git a/src/field/field_special_scene.c b/src/field/field_special_scene.c index 255b1d42b..5758929b6 100644 --- a/src/field/field_special_scene.c +++ b/src/field/field_special_scene.c @@ -94,8 +94,7 @@ s16 GetTruckBoxMovement(int a1) // for the box movement? void Task_Truck1(u8 taskId) { s16 *data = gTasks[taskId].data; - s16 cameraYpan; - s16 cameraXpan = 0; + s16 cameraYpan, cameraXpan = 0; s16 box1, box2, box3; box1 = GetTruckBoxMovement(data[0] + 30) * 4; // top box. diff --git a/src/field/item_use.c b/src/field/item_use.c index 68da27fdb..14b13ca3b 100644 --- a/src/field/item_use.c +++ b/src/field/item_use.c @@ -780,7 +780,7 @@ void ItemUseOutOfBattle_SSTicket(u8 taskId) void sub_80C9C7C(u8 taskId) { - if (IsPlayerFacingPlantedBerryTree() == TRUE) + if (IsPlayerFacingUnplantedSoil() == TRUE) { gFieldItemUseCallback = sub_80C9D00; gFieldCallback = ExecuteItemUseFromBlackPalette; -- cgit v1.2.3 From e509322468b8b780fbfb81ed871de065ec3df8aa Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Mon, 23 Oct 2017 19:48:17 -0400 Subject: fixes --- src/field/berry.c | 3 +++ src/field/field_control_avatar.c | 1 - 2 files changed, 3 insertions(+), 1 deletion(-) (limited to 'src/field') diff --git a/src/field/berry.c b/src/field/berry.c index 5127a3a4f..7482c3f4d 100644 --- a/src/field/berry.c +++ b/src/field/berry.c @@ -996,6 +996,9 @@ extern u16 gSpecialVar_0x8006; berries. */ +static u8 CalcBerryYield(struct BerryTree *tree); +static u16 GetStageDurationByBerryType(u8 berry); + // unused // this could be static, but making it so causes a compile-time warning. void ClearEnigmaBerries(void) diff --git a/src/field/field_control_avatar.c b/src/field/field_control_avatar.c index 397523b07..e9dd0e9a6 100644 --- a/src/field/field_control_avatar.c +++ b/src/field/field_control_avatar.c @@ -856,7 +856,6 @@ u8 sub_8068F18(void) return 0; } -// GetFieldObjectScriptPointerPlayerFacing u8 *GetFieldObjectScriptPointerPlayerFacing(void) { u8 r4; -- cgit v1.2.3 From 4f575c8dc4779d1756486322fc1e7bcf0875506e Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Mon, 23 Oct 2017 19:48:59 -0400 Subject: oops --- src/field/berry.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/field') diff --git a/src/field/berry.c b/src/field/berry.c index 7482c3f4d..64e2905a8 100644 --- a/src/field/berry.c +++ b/src/field/berry.c @@ -1136,7 +1136,7 @@ void ClearBerryTrees(void) // when the player does not interact with the tree for a period of time, this is called to advance the grow state. static bool32 BerryTreeGrow(struct BerryTree *tree) { - if (tree->growthSparkle != FALSE) + if (tree->growthSparkle) return FALSE; switch (tree->stage) { -- cgit v1.2.3 From cc7ee35fe3cb3cd4135c1c2fbd4e275018cff27a Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Mon, 23 Oct 2017 20:03:34 -0400 Subject: edit temp var comment. --- src/field/berry.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/field') diff --git a/src/field/berry.c b/src/field/berry.c index 64e2905a8..16a4d2762 100644 --- a/src/field/berry.c +++ b/src/field/berry.c @@ -1182,7 +1182,7 @@ void BerryTreeTimeUpdate(s32 totalMinutes) } else { - // not sure why Game Freak thought a temporary variable was necessary. because time is altered below, perhaps they thought it was unsafe to change it, even though that is not how passed arguments behave. + // because time is altered below, perhaps they thought it was unsafe to change it, even though that is not how passed arguments behave. s32 time = totalMinutes; while (time != 0) -- cgit v1.2.3 From e28049651fb7f9f5aa6cbb70961d18e54f9e1721 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Mon, 23 Oct 2017 20:13:31 -0400 Subject: fix bad label --- src/field/berry.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'src/field') diff --git a/src/field/berry.c b/src/field/berry.c index 16a4d2762..bbb643b10 100644 --- a/src/field/berry.c +++ b/src/field/berry.c @@ -1163,8 +1163,7 @@ static bool32 BerryTreeGrow(struct BerryTree *tree) return TRUE; } -// totalMinutes is how long its been since the last berry tree update. -void BerryTreeTimeUpdate(s32 totalMinutes) +void BerryTreeTimeUpdate(s32 minutesPassed) { int i; struct BerryTree *tree; @@ -1176,14 +1175,14 @@ void BerryTreeTimeUpdate(s32 totalMinutes) if (tree->berry != BERRY_NONE && tree->stage != BERRY_STAGE_NO_BERRY && tree->growthSparkle == FALSE) { // the player has waited too long to water the berry. Reset the tree. This is because if the berry state is not in the unwatered state, the tree will grow anyway despite this check, which means BerryTreeGrow will handle the regrow process for this, removing the need for this check. This only handles the unwatered soil state. - if (totalMinutes >= GetStageDurationByBerryType(tree->berry) * 71) + if (minutesPassed >= GetStageDurationByBerryType(tree->berry) * 71) { *tree = gBlankBerryTree; } else { // because time is altered below, perhaps they thought it was unsafe to change it, even though that is not how passed arguments behave. - s32 time = totalMinutes; + s32 time = minutesPassed; while (time != 0) { -- cgit v1.2.3 From c5241d9e80582b746d050ac4424393ccc1636d4b Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Mon, 23 Oct 2017 20:25:57 -0400 Subject: format comments --- src/field/berry.c | 60 +++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 45 insertions(+), 15 deletions(-) (limited to 'src/field') diff --git a/src/field/berry.c b/src/field/berry.c index bbb643b10..cd1fc5c94 100644 --- a/src/field/berry.c +++ b/src/field/berry.c @@ -1015,7 +1015,9 @@ void SetEnigmaBerry(u8 *src) for (i = 0; i < sizeof(gSaveBlock1.enigmaBerry); i++) dest[i] = src[i]; - // at this point, the description pointer is not yet initialized. we need to initialize it since we dont know where in memory this is going to be. set the berry desc pointers to the EnigmaBerry struct's description arrays since these are where the descriptions are stored. + // at this point, the description pointer is not yet initialized. we need to initialize it since + // we dont know where in memory this is going to be. set the berry desc pointers to the + // EnigmaBerry struct's description arrays since these are where the descriptions are stored. gSaveBlock1.enigmaBerry.berry.description1 = gSaveBlock1.enigmaBerry.description1; gSaveBlock1.enigmaBerry.berry.description2 = gSaveBlock1.enigmaBerry.description2; } @@ -1028,7 +1030,9 @@ static u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry) u32 checksum; u8 *dest; - // the description pointers could be pointing to anywhere in memory. we do not want these pointers to factor into the checksum as it will produce a different result every time: so back the pointers up and set them to null so the checksum is safe to calculate. + // the description pointers could be pointing to anywhere in memory. we do not want these + // pointers to factor into the checksum as it will produce a different result every time: so + // back the pointers up and set them to null so the checksum is safe to calculate. description1 = gSaveBlock1.enigmaBerry.berry.description1; description2 = gSaveBlock1.enigmaBerry.berry.description2; gSaveBlock1.enigmaBerry.berry.description1 = NULL; @@ -1048,7 +1052,8 @@ static u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry) return checksum; } -// due to e-reader scans being particularly volatile to failure, it is a requirement to check for their integrity here due to scans possibly failing to produce the correct result. +// due to e-reader scans being particularly volatile to failure, it is a requirement to check for +// their integrity here due to scans possibly failing to produce the correct result. bool32 IsEnigmaBerryValid(void) { if (gSaveBlock1.enigmaBerry.berry.stageDuration == 0) @@ -1062,28 +1067,37 @@ bool32 IsEnigmaBerryValid(void) const struct Berry *GetBerryInfo(u8 berry) { - // when getting the pointer to the berry info, enigma berries are handled differently. if your berry is an Enigma Berry and its checksum is valid, fetch the pointer to its information in the save block. + // when getting the pointer to the berry info, enigma berries are handled differently. if your + // berry is an Enigma Berry and its checksum is valid, fetch the pointer to its information in + // the save block. if (berry == GETBERRYID(ITEM_ENIGMA_BERRY) && IsEnigmaBerryValid()) return &gSaveBlock1.enigmaBerry.berry; else { - // invalid berries will be flattened into a cheri berry. Interestingly, if your berry was an enigma berry whos checksum failed, the game will use the Enigma Berry information for this: meaning if you see the Enigma Berry information, its actually because the checksum failed. + // invalid berries will be flattened into a cheri berry. Interestingly, if your berry was + // an enigma berry whos checksum failed, the game will use the Enigma Berry information + // for this: meaning if you see the Enigma Berry information, its actually because the + // checksum failed. if (berry == BERRY_NONE || berry > GETBERRYID(LAST_BERRY)) berry = GETBERRYID(FIRST_BERRY); return &gBerries[berry - 1]; } } -// the save file can handle up to a number of 128 berry trees as indicated by its definition in global.h. Interestingly, this function does not check that limit of 128. +// the save file can handle up to a number of 128 berry trees as indicated by its definition +// in global.h. Interestingly, this function does not check that limit of 128. static struct BerryTree *GetBerryTreeInfo(u8 id) { return &gSaveBlock1.berryTrees[id]; } -// this was called because the berry script was successful: meaning the player chose to water the tree. We need to check for the current tree stage and set the appropriate water flag to true. +// this was called because the berry script was successful: meaning the player chose to +// water the tree. We need to check for the current tree stage and set the appropriate +// water flag to true. bool32 FieldObjectInteractionWaterBerryTree(void) { - // GetBerryTreeInfo does not sanitize the tree retrieved, but there are no known instances where this can cause problems. + // GetBerryTreeInfo does not sanitize the tree retrieved, but there are no known + // instances where this can cause problems. struct BerryTree *tree = GetBerryTreeInfo(FieldObjectGetBerryTreeId(gSelectedMapObject)); switch (tree->stage) @@ -1133,7 +1147,8 @@ void ClearBerryTrees(void) saveBlock1->berryTrees[i] = berryTree; } -// when the player does not interact with the tree for a period of time, this is called to advance the grow state. +// when the player does not interact with the tree for a period of time, this is called +// to advance the grow state. static bool32 BerryTreeGrow(struct BerryTree *tree) { if (tree->growthSparkle) @@ -1174,24 +1189,33 @@ void BerryTreeTimeUpdate(s32 minutesPassed) if (tree->berry != BERRY_NONE && tree->stage != BERRY_STAGE_NO_BERRY && tree->growthSparkle == FALSE) { - // the player has waited too long to water the berry. Reset the tree. This is because if the berry state is not in the unwatered state, the tree will grow anyway despite this check, which means BerryTreeGrow will handle the regrow process for this, removing the need for this check. This only handles the unwatered soil state. + // the player has waited too long to water the berry. Reset the tree. This is because + // if the berry state is not in the unwatered state, the tree will grow anyway despite this + // check, which means BerryTreeGrow will handle the regrow process for this, removing the + // need for this check. This only handles the unwatered soil state. if (minutesPassed >= GetStageDurationByBerryType(tree->berry) * 71) { *tree = gBlankBerryTree; } else { - // because time is altered below, perhaps they thought it was unsafe to change it, even though that is not how passed arguments behave. + // because time is altered below, perhaps they thought it was unsafe to change it, even + // though that is not how passed arguments behave. s32 time = minutesPassed; while (time != 0) { if (tree->minutesUntilNextStage > time) { - tree->minutesUntilNextStage -= time; // its been X minutes since the last berry update, so update minutesUntilNextStage appropriately to match the time offset that has passed since the update. + // its been X minutes since the last berry update, so update + // minutesUntilNextStage appropriately to match the time offset + // that has passed since the update. + tree->minutesUntilNextStage -= time; break; } - // perform the subtraction the other way around to get the number of minutes since the inferred stage update that occured, since minutesUntilNextStage is <= time. we may need this variable to simulate multiple berry cycles in the while loop. + // perform the subtraction the other way around to get the number of minutes since + // the inferred stage update that occured, since minutesUntilNextStage is <= time. + // we may need this variable to simulate multiple berry cycles in the while loop. time -= tree->minutesUntilNextStage; tree->minutesUntilNextStage = GetStageDurationByBerryType(tree->berry); // since the tree was inferred to update, set the new minutesUntilNextStage. if (BerryTreeGrow(tree) == FALSE) @@ -1348,7 +1372,12 @@ void FieldObjectInteractionGetBerryTreeData(void) num = gSaveBlock1.location.mapNum; group = gSaveBlock1.location.mapGroup; if (IsBerryTreeSparkling(localId, num, group)) - gSpecialVar_0x8004 = BERRY_STAGE_SPARKLING; // we cannot allow the player to grow/interact with the tree while the tree is undergoing the sparkling effect, so set the special var to the sparkling state and let the event script process the flag. + { + // we cannot allow the player to grow/interact with the tree while the tree + // is undergoing the sparkling effect, so set the special var to the sparkling + // state and let the event script process the flag. + gSpecialVar_0x8004 = BERRY_STAGE_SPARKLING; + } else gSpecialVar_0x8004 = GetStageByBerryTreeId(id); gSpecialVar_0x8005 = GetNumStagesWateredByBerryTreeId(id); @@ -1388,7 +1417,8 @@ bool8 PlayerHasBerries(void) return IsBagPocketNonEmpty(BAG_BERRIES); } -// whenever the player is not within view of the berry tree during its sparkle state, the sparkle state will be reset. +// whenever the player is not within view of the berry tree during its sparkle state, the +// sparkle state will be reset. void ResetBerryTreeSparkleFlags(void) { s16 cam_left; -- cgit v1.2.3 From fd69fc936729c288720a7e5251314efa121e9ac3 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Mon, 23 Oct 2017 20:34:28 -0500 Subject: use SPEED instead of SPD in mon data constants --- src/field/daycare.c | 4 ++-- src/field/party_menu.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'src/field') diff --git a/src/field/daycare.c b/src/field/daycare.c index 60cc61e40..9c5808a0e 100644 --- a/src/field/daycare.c +++ b/src/field/daycare.c @@ -388,8 +388,8 @@ static void InheritIVs(struct Pokemon *egg, struct DayCareData *dayCareData) SetMonData(egg, MON_DATA_DEF_IV, &iv); break; case 3: - iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_SPD_IV); - SetMonData(egg, MON_DATA_SPD_IV, &iv); + iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_SPEED_IV); + SetMonData(egg, MON_DATA_SPEED_IV, &iv); break; case 4: iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_SPATK_IV); diff --git a/src/field/party_menu.c b/src/field/party_menu.c index 86ad9ecc9..a4c66d891 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -460,7 +460,7 @@ static const u8 StatDataTypes[] = { MON_DATA_DEF, MON_DATA_SPATK, MON_DATA_SPDEF, - MON_DATA_SPD, + MON_DATA_SPEED, }; struct Unk201C000 -- cgit v1.2.3 From 13bd14feabf17e16b180d176b488979708391927 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Mon, 23 Oct 2017 23:33:13 -0400 Subject: recast fixes for SetMonData and SetBoxMonData. --- src/field/daycare.c | 10 +++++----- src/field/field_poison.c | 2 +- src/field/field_specials.c | 10 +++++----- src/field/party_menu.c | 4 ++-- src/field/roamer.c | 14 +++++++------- 5 files changed, 20 insertions(+), 20 deletions(-) (limited to 'src/field') diff --git a/src/field/daycare.c b/src/field/daycare.c index 9c5808a0e..97765e676 100644 --- a/src/field/daycare.c +++ b/src/field/daycare.c @@ -188,7 +188,7 @@ static u16 sub_8041570(struct DayCareData * daycare_data, u8 slot) if (GetMonData(&pokemon, MON_DATA_LEVEL) != MAX_LEVEL) { experience = GetMonData(&pokemon, MON_DATA_EXP) + daycare_data->misc.countersEtc.steps[slot]; - SetMonData(&pokemon, MON_DATA_EXP, (u8 *)&experience); + SetMonData(&pokemon, MON_DATA_EXP, &experience); DayCare_LevelUpMoves(&pokemon); } gPlayerParty[PARTY_SIZE - 1] = pokemon; @@ -213,7 +213,7 @@ u16 sub_8041648() u8 Daycare_GetLevelAfterSteps(struct BoxPokemon * mon, u32 steps){ struct BoxPokemon temp = *mon; u32 new_exp = GetBoxMonData(mon, MON_DATA_EXP) + steps; - SetBoxMonData(&temp, MON_DATA_EXP, (u8 *) &new_exp); + SetBoxMonData(&temp, MON_DATA_EXP, &new_exp); return GetLevelFromBoxMonExp(&temp); } @@ -960,7 +960,7 @@ void sub_8042044(struct Pokemon *mon, u16 species, u8 overwriteMetLocation) // s metLevel = 0; ball = ITEM_POKE_BALL; language = LANGUAGE_JAPANESE; - SetMonData(mon, MON_DATA_POKEBALL, (u8 *)&ball); + SetMonData(mon, MON_DATA_POKEBALL, &ball); SetMonData(mon, MON_DATA_NICKNAME, gUnknown_08209AD4); SetMonData(mon, MON_DATA_FRIENDSHIP, &gBaseStats[species].eggCycles); SetMonData(mon, MON_DATA_MET_LEVEL, &metLevel); @@ -985,7 +985,7 @@ static void sub_80420FC(struct Pokemon *mon, u16 species, struct DayCareData *da metLevel = 0; ball = ITEM_POKE_BALL; language = LANGUAGE_JAPANESE; - SetMonData(mon, MON_DATA_POKEBALL, (u8 *)&ball); + SetMonData(mon, MON_DATA_POKEBALL, &ball); SetMonData(mon, MON_DATA_NICKNAME, gUnknown_08209AD4); SetMonData(mon, MON_DATA_FRIENDSHIP, &gBaseStats[species].eggCycles); SetMonData(mon, MON_DATA_MET_LEVEL, &metLevel); @@ -1030,7 +1030,7 @@ static bool8 sub_80421B0(struct DayCareData *dayCareData) return TRUE; } steps--; - SetMonData(&gPlayerParty[i], MON_DATA_FRIENDSHIP, (u8 *)&steps); + SetMonData(&gPlayerParty[i], MON_DATA_FRIENDSHIP, &steps); } } } diff --git a/src/field/field_poison.c b/src/field/field_poison.c index 1244b9c62..b6ff12ff9 100644 --- a/src/field/field_poison.c +++ b/src/field/field_poison.c @@ -128,7 +128,7 @@ s32 DoPoisonFieldEffect(void) hp--; if (hp == 0) numFainting++; //Pokemon will now faint due to poison - SetMonData(pkmn, MON_DATA_HP, (u8 *)&hp); + SetMonData(pkmn, MON_DATA_HP, &hp); numPoisoned++; } pkmn++; diff --git a/src/field/field_specials.c b/src/field/field_specials.c index 899905429..b328ecb1b 100644 --- a/src/field/field_specials.c +++ b/src/field/field_specials.c @@ -1905,13 +1905,13 @@ void PutZigzagoonInPlayerParty(void) u16 monData; CreateMon(&gPlayerParty[0], SPECIES_ZIGZAGOON, 7, 0x20, FALSE, 0, FALSE, 0); monData = TRUE; - SetMonData(&gPlayerParty[0], MON_DATA_ALT_ABILITY, (u8 *)&monData); + SetMonData(&gPlayerParty[0], MON_DATA_ALT_ABILITY, &monData); monData = MOVE_TACKLE; - SetMonData(&gPlayerParty[0], MON_DATA_MOVE1, (u8 *)&monData); + SetMonData(&gPlayerParty[0], MON_DATA_MOVE1, &monData); monData = MOVE_NONE; - SetMonData(&gPlayerParty[0], MON_DATA_MOVE2, (u8 *)&monData); - SetMonData(&gPlayerParty[0], MON_DATA_MOVE3, (u8 *)&monData); - SetMonData(&gPlayerParty[0], MON_DATA_MOVE4, (u8 *)&monData); + SetMonData(&gPlayerParty[0], MON_DATA_MOVE2, &monData); + SetMonData(&gPlayerParty[0], MON_DATA_MOVE3, &monData); + SetMonData(&gPlayerParty[0], MON_DATA_MOVE4, &monData); } bool8 IsStarterInParty(void) diff --git a/src/field/party_menu.c b/src/field/party_menu.c index a4c66d891..a8c57b86d 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -4457,7 +4457,7 @@ void sub_806F8AC(u8 taskId) ewram1B000.unk261 = 2; sub_806E834(gStringVar4, 1); sp14 += sp0.unk4; - SetMonData(ewram1C000.pokemon, MON_DATA_HP, (u8 *)&sp14); + SetMonData(ewram1C000.pokemon, MON_DATA_HP, &sp14); RemoveBagItem(ewram1C000.unk6, 1); sub_8032638(); gTasks[taskId].func = sub_806FB44; @@ -4478,7 +4478,7 @@ void sub_806FA18(u8 taskId) PlaySE(SE_KAIFUKU); ewram1C000.unkC = 0; gTasks[taskId].data[11] -= gTasks[taskId].data[12]; - SetMonData(ewram1C000.pokemon, MON_DATA_HP, (u8 *)&gTasks[taskId].data[11]); + SetMonData(ewram1C000.pokemon, MON_DATA_HP, &gTasks[taskId].data[11]); SetMonIconAnim(GetMonIconSpriteId(ewram1C000.unk4, ewram01000.unk1), ewram1C000.pokemon); ewram1C000.unk5 = gSprites[ewram01000.unk2].data0; ewram1C000.pokemon = &gPlayerParty[ewram1C000.unk5]; diff --git a/src/field/roamer.c b/src/field/roamer.c index 948828d5e..c45c87601 100644 --- a/src/field/roamer.c +++ b/src/field/roamer.c @@ -173,13 +173,13 @@ void CreateRoamerMonInstance(void) struct Pokemon *mon = &gEnemyParty[0]; struct Roamer *roamer = &gSaveBlock1.roamer; CreateMonWithIVsPersonality(mon, roamer->species, roamer->level, roamer->ivs, roamer->personality); - SetMonData(mon, MON_DATA_STATUS, (u8 *)&roamer->status); - SetMonData(mon, MON_DATA_HP, (u8 *)&roamer->hp); - SetMonData(mon, MON_DATA_COOL, (u8 *)&roamer->cool); - SetMonData(mon, MON_DATA_BEAUTY, (u8 *)&roamer->beauty); - SetMonData(mon, MON_DATA_CUTE, (u8 *)&roamer->cute); - SetMonData(mon, MON_DATA_SMART, (u8 *)&roamer->smart); - SetMonData(mon, MON_DATA_TOUGH, (u8 *)&roamer->tough); + SetMonData(mon, MON_DATA_STATUS, &roamer->status); + SetMonData(mon, MON_DATA_HP, &roamer->hp); + SetMonData(mon, MON_DATA_COOL, &roamer->cool); + SetMonData(mon, MON_DATA_BEAUTY, &roamer->beauty); + SetMonData(mon, MON_DATA_CUTE, &roamer->cute); + SetMonData(mon, MON_DATA_SMART, &roamer->smart); + SetMonData(mon, MON_DATA_TOUGH, &roamer->tough); } bool8 TryStartRoamerEncounter(void) -- cgit v1.2.3 From 4fb48ddb53d9782538c447a795099d368d1b361d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 24 Oct 2017 21:51:57 -0400 Subject: Fix data layout in gUnknown_083D1374 --- src/field/secret_base.c | 72 +++++++++++++++++-------------------------------- 1 file changed, 24 insertions(+), 48 deletions(-) (limited to 'src/field') diff --git a/src/field/secret_base.c b/src/field/secret_base.c index f2ed6adb6..d7c4f5917 100644 --- a/src/field/secret_base.c +++ b/src/field/secret_base.c @@ -72,54 +72,30 @@ const struct const u8 gUnknown_083D1374[] = { - MAP_ID_SECRET_BASE_RED_CAVE1, 0, - MAP_ID_SECRET_BASE_BROWN_CAVE1, 3, - MAP_ID_SECRET_BASE_RED_CAVE2, 0, - MAP_ID_SECRET_BASE_SHRUB1, 9, - MAP_ID_SECRET_BASE_RED_CAVE3, 0, - MAP_ID_SECRET_BASE_BROWN_CAVE1, 3, - MAP_ID_SECRET_BASE_RED_CAVE4, 0, - MAP_ID_SECRET_BASE_BROWN_CAVE2, 13, - MAP_ID_SECRET_BASE_BROWN_CAVE1, 0, - MAP_ID_SECRET_BASE_BLUE_CAVE1, 3, - MAP_ID_SECRET_BASE_BROWN_CAVE2, 0, - MAP_ID_SECRET_BASE_YELLOW_CAVE2, 2, - MAP_ID_SECRET_BASE_BROWN_CAVE3, 0, - MAP_ID_SECRET_BASE_BROWN_CAVE3, 4, - MAP_ID_SECRET_BASE_BROWN_CAVE4, 0, - MAP_ID_SECRET_BASE_BROWN_CAVE1, 2, - MAP_ID_SECRET_BASE_BLUE_CAVE1, 0, - MAP_ID_SECRET_BASE_BROWN_CAVE1, 3, - MAP_ID_SECRET_BASE_BLUE_CAVE2, 0, - MAP_ID_SECRET_BASE_BROWN_CAVE1, 2, - MAP_ID_SECRET_BASE_BLUE_CAVE3, 0, - MAP_ID_SECRET_BASE_YELLOW_CAVE1, 15, - MAP_ID_SECRET_BASE_BLUE_CAVE4, 0, - MAP_ID_SECRET_BASE_YELLOW_CAVE1, 14, - MAP_ID_SECRET_BASE_YELLOW_CAVE1, 0, - MAP_ID_SECRET_BASE_YELLOW_CAVE2, 3, - MAP_ID_SECRET_BASE_YELLOW_CAVE2, 0, - MAP_ID_SECRET_BASE_BLUE_CAVE2, 7, - MAP_ID_SECRET_BASE_YELLOW_CAVE3, 0, - MAP_ID_SECRET_BASE_YELLOW_CAVE1, 6, - MAP_ID_SECRET_BASE_YELLOW_CAVE4, 0, - MAP_ID_SECRET_BASE_SHRUB1, 9, - MAP_ID_SECRET_BASE_TREE1, 0, - MAP_ID_SECRET_BASE_BLUE_CAVE1, 3, - MAP_ID_SECRET_BASE_TREE2, 0, - MAP_ID_SECRET_BASE_SHRUB1, 6, - MAP_ID_SECRET_BASE_TREE3, 0, - MAP_ID_SECRET_BASE_YELLOW_CAVE3, 3, - MAP_ID_SECRET_BASE_TREE4, 0, - MAP_ID_SECRET_BASE_TREE1, 10, - MAP_ID_SECRET_BASE_SHRUB1, 0, - MAP_ID_SECRET_BASE_YELLOW_CAVE1, 3, - MAP_ID_SECRET_BASE_SHRUB2, 0, - MAP_ID_SECRET_BASE_BROWN_CAVE1, 2, - MAP_ID_SECRET_BASE_SHRUB3, 0, - MAP_ID_SECRET_BASE_BROWN_CAVE2, 8, - MAP_ID_SECRET_BASE_SHRUB4, 0, - MAP_ID_SECRET_BASE_YELLOW_CAVE2, 6 + MAP_ID_SECRET_BASE_RED_CAVE1, 0, 1, 3, + MAP_ID_SECRET_BASE_RED_CAVE2, 0, 5, 9, + MAP_ID_SECRET_BASE_RED_CAVE3, 0, 1, 3, + MAP_ID_SECRET_BASE_RED_CAVE4, 0, 7, 13, + MAP_ID_SECRET_BASE_BROWN_CAVE1, 0, 2, 3, + MAP_ID_SECRET_BASE_BROWN_CAVE2, 0, 9, 2, + MAP_ID_SECRET_BASE_BROWN_CAVE3, 0, 13, 4, + MAP_ID_SECRET_BASE_BROWN_CAVE4, 0, 1, 2, + MAP_ID_SECRET_BASE_BLUE_CAVE1, 0, 1, 3, + MAP_ID_SECRET_BASE_BLUE_CAVE2, 0, 1, 2, + MAP_ID_SECRET_BASE_BLUE_CAVE3, 0, 3, 15, + MAP_ID_SECRET_BASE_BLUE_CAVE4, 0, 3, 14, + MAP_ID_SECRET_BASE_YELLOW_CAVE1, 0, 9, 3, + MAP_ID_SECRET_BASE_YELLOW_CAVE2, 0, 8, 7, + MAP_ID_SECRET_BASE_YELLOW_CAVE3, 0, 3, 6, + MAP_ID_SECRET_BASE_YELLOW_CAVE4, 0, 5, 9, + MAP_ID_SECRET_BASE_TREE1, 0, 2, 3, + MAP_ID_SECRET_BASE_TREE2, 0, 5, 6, + MAP_ID_SECRET_BASE_TREE3, 0, 15, 3, + MAP_ID_SECRET_BASE_TREE4, 0, 4, 10, + MAP_ID_SECRET_BASE_SHRUB1, 0, 3, 3, + MAP_ID_SECRET_BASE_SHRUB2, 0, 1, 2, + MAP_ID_SECRET_BASE_SHRUB3, 0, 7, 8, + MAP_ID_SECRET_BASE_SHRUB4, 0, 9, 6 }; const struct MenuAction2 gUnknown_083D13D4[] = { -- cgit v1.2.3 From d411d3b4d4b9787dd510e746449dc838950d1720 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 24 Oct 2017 22:40:34 -0400 Subject: match sub_80BBDD0 --- src/field/secret_base.c | 281 +++++------------------------------------------- 1 file changed, 25 insertions(+), 256 deletions(-) (limited to 'src/field') diff --git a/src/field/secret_base.c b/src/field/secret_base.c index d7c4f5917..4c749c4c7 100644 --- a/src/field/secret_base.c +++ b/src/field/secret_base.c @@ -431,17 +431,15 @@ void sub_80BBCCC(u8 flagIn) } } -#ifdef NONMATCHING -// The only nonmatching property of this function is that the implicit variables &gSaveBlock1 and &roomdecor[decidx] -// are stored in the wrong registers. void sub_80BBDD0(void) { u8 *roomdecor; u8 *roomdecorpos; - u8 ndecor; u8 decidx; u8 objid = 0; u8 metatile; + u8 permission; + u8 ndecor; u16 curBase = VarGet(VAR_0x4054); if (!CurrentMapIsSecretBase()) { roomdecor = gSaveBlock1.playerRoomDecor; @@ -453,262 +451,33 @@ void sub_80BBDD0(void) ndecor = 16; } for (decidx=0; decidxmapObjectCount; objid++) { - if (gMapHeader.events->mapObjects[objid].flagId == gSpecialVar_0x8004 + 0xAE) - break; - } - if (objid == gMapHeader.events->mapObjectCount) - continue; - gSpecialVar_0x8006 = roomdecorpos[decidx] >> 4; - gSpecialVar_0x8007 = roomdecorpos[decidx] & 0xF; - metatile = MapGridGetMetatileBehaviorAt(gSpecialVar_0x8006 + 7, gSpecialVar_0x8007 + 7); - if (sub_80572D8(metatile) == TRUE || sub_80572EC(metatile) == TRUE) { - gScriptResult = gMapHeader.events->mapObjects[objid].graphicsId + VAR_0x3F20; - VarSet(gScriptResult, gDecorations[roomdecor[decidx]].tiles[0]); - gScriptResult = gMapHeader.events->mapObjects[objid].localId; - FlagClear(gSpecialVar_0x8004 + 0xAE); - show_sprite(gScriptResult, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); - sub_805C0F8(gScriptResult, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, gSpecialVar_0x8006, gSpecialVar_0x8007); - sub_805C78C(gScriptResult, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); - gSpecialVar_0x8004 ++; + if (roomdecor[decidx] != DECOR_NONE) { + permission = gDecorations[roomdecor[decidx]].permission; + if (permission == DECORPERM_SOLID_MAT) + { + for (objid=0; objidmapObjectCount; objid++) { + if (gMapHeader.events->mapObjects[objid].flagId == gSpecialVar_0x8004 + 0xAE) + break; + } + if (objid == gMapHeader.events->mapObjectCount) + continue; + gSpecialVar_0x8006 = roomdecorpos[decidx] >> 4; + gSpecialVar_0x8007 = roomdecorpos[decidx] & 0xF; + metatile = MapGridGetMetatileBehaviorAt(gSpecialVar_0x8006 + 7, gSpecialVar_0x8007 + 7); + if (sub_80572D8(metatile) == TRUE || sub_80572EC(metatile) == TRUE) { + gScriptResult = gMapHeader.events->mapObjects[objid].graphicsId + VAR_0x3F20; + VarSet(gScriptResult, gDecorations[roomdecor[decidx]].tiles[0]); + gScriptResult = gMapHeader.events->mapObjects[objid].localId; + FlagClear(gSpecialVar_0x8004 + 0xAE); + show_sprite(gScriptResult, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); + sub_805C0F8(gScriptResult, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, gSpecialVar_0x8006, gSpecialVar_0x8007); + sub_805C78C(gScriptResult, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); + gSpecialVar_0x8004 ++; + } } } } } -#else -__attribute__((naked)) -void sub_80BBDD0(void) -{ - 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, 0x14\n\ - ldr r0, _080BBE00 @ =0x00004054\n\ - bl VarGet\n\ - lsls r0, 16\n\ - lsrs r4, r0, 16\n\ - bl CurrentMapIsSecretBase\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _080BBE08\n\ - ldr r0, _080BBE04 @ =gSaveBlock1 + 0x2688\n\ - str r0, [sp, 0x4]\n\ - adds r0, 0xC\n\ - str r0, [sp, 0x8]\n\ - movs r1, 0xC\n\ - str r1, [sp, 0xC]\n\ - b _080BBE1E\n\ - .align 2, 0\n\ -_080BBE00: .4byte 0x00004054\n\ -_080BBE04: .4byte gSaveBlock1 + 0x2688\n\ -_080BBE08:\n\ - lsls r1, r4, 2\n\ - adds r1, r4\n\ - lsls r1, 5\n\ - ldr r0, _080BBF7C @ =gSaveBlock1 + 0x1A1A\n\ - adds r2, r1, r0\n\ - str r2, [sp, 0x4]\n\ - adds r0, 0x10\n\ - adds r1, r0\n\ - str r1, [sp, 0x8]\n\ - movs r3, 0x10\n\ - str r3, [sp, 0xC]\n\ -_080BBE1E:\n\ - movs r6, 0\n\ - ldr r4, [sp, 0xC]\n\ - cmp r6, r4\n\ - bcc _080BBE28\n\ - b _080BBF6C\n\ -_080BBE28:\n\ - ldr r5, _080BBF80 @ =gSaveBlock1\n\ - mov r10, r5\n\ -_080BBE2C:\n\ - ldr r1, [sp, 0x4]\n\ - adds r0, r1, r6\n\ - ldrb r1, [r0]\n\ - mov r9, r0\n\ - adds r2, r6, 0x1\n\ - str r2, [sp, 0x10]\n\ - cmp r1, 0\n\ - bne _080BBE3E\n\ - b _080BBF5E\n\ -_080BBE3E:\n\ - ldrb r0, [r0]\n\ - lsls r0, 5\n\ - ldr r3, _080BBF84 @ =gDecorations\n\ - adds r0, r3\n\ - ldrb r0, [r0, 0x11]\n\ - cmp r0, 0x4\n\ - beq _080BBE4E\n\ - b _080BBF5E\n\ -_080BBE4E:\n\ - movs r5, 0\n\ - ldr r0, _080BBF88 @ =gMapHeader\n\ - ldr r2, [r0, 0x4]\n\ - ldrb r3, [r2]\n\ - mov r8, r0\n\ - cmp r5, r3\n\ - bcs _080BBE8E\n\ - ldr r0, [r2, 0x4]\n\ - ldrh r1, [r0, 0x14]\n\ - ldr r4, _080BBF8C @ =gSpecialVar_0x8004\n\ - ldrh r0, [r4]\n\ - adds r0, 0xAE\n\ - adds r7, r4, 0\n\ - cmp r1, r0\n\ - beq _080BBE8E\n\ - adds r4, r2, 0\n\ - adds r2, r3, 0\n\ -_080BBE70:\n\ - adds r0, r5, 0x1\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - cmp r5, r2\n\ - bcs _080BBE8E\n\ - ldr r1, [r4, 0x4]\n\ - lsls r0, r5, 1\n\ - adds r0, r5\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - ldrh r1, [r0, 0x14]\n\ - ldrh r0, [r7]\n\ - adds r0, 0xAE\n\ - cmp r1, r0\n\ - bne _080BBE70\n\ -_080BBE8E:\n\ - mov r1, r8\n\ - ldr r0, [r1, 0x4]\n\ - ldrb r0, [r0]\n\ - cmp r5, r0\n\ - beq _080BBF5E\n\ - ldr r7, _080BBF90 @ =gSpecialVar_0x8006\n\ - ldr r2, [sp, 0x8]\n\ - adds r1, r2, r6\n\ - ldrb r0, [r1]\n\ - lsrs r0, 4\n\ - strh r0, [r7]\n\ - ldr r6, _080BBF94 @ =gSpecialVar_0x8007\n\ - ldrb r1, [r1]\n\ - movs r0, 0xF\n\ - ands r0, r1\n\ - strh r0, [r6]\n\ - ldrh r0, [r7]\n\ - adds r0, 0x7\n\ - ldrh r1, [r6]\n\ - adds r1, 0x7\n\ - bl MapGridGetMetatileBehaviorAt\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - adds r0, r4, 0\n\ - bl sub_80572D8\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0x1\n\ - beq _080BBEDA\n\ - adds r0, r4, 0\n\ - bl sub_80572EC\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0x1\n\ - bne _080BBF5E\n\ -_080BBEDA:\n\ - mov r3, r8\n\ - ldr r0, [r3, 0x4]\n\ - ldr r1, [r0, 0x4]\n\ - lsls r4, r5, 1\n\ - adds r4, r5\n\ - lsls r4, 3\n\ - adds r1, r4, r1\n\ - ldr r5, _080BBF98 @ =0x00003f20\n\ - adds r0, r5, 0\n\ - ldrb r1, [r1, 0x1]\n\ - adds r0, r1\n\ - ldr r1, _080BBF9C @ =gScriptResult\n\ - strh r0, [r1]\n\ - ldrh r0, [r1]\n\ - mov r2, r9\n\ - ldrb r1, [r2]\n\ - lsls r1, 5\n\ - ldr r3, _080BBFA0 @ =gDecorations + 0x1C\n\ - adds r1, r3\n\ - ldr r1, [r1]\n\ - ldrh r1, [r1]\n\ - bl VarSet\n\ - mov r5, r8\n\ - ldr r0, [r5, 0x4]\n\ - ldr r0, [r0, 0x4]\n\ - adds r4, r0\n\ - ldrb r0, [r4]\n\ - ldr r1, _080BBF9C @ =gScriptResult\n\ - strh r0, [r1]\n\ - ldr r2, _080BBF8C @ =gSpecialVar_0x8004\n\ - ldrh r0, [r2]\n\ - adds r0, 0xAE\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - bl FlagClear\n\ - ldr r3, _080BBF9C @ =gScriptResult\n\ - ldrb r0, [r3]\n\ - mov r4, r10\n\ - ldrb r1, [r4, 0x5]\n\ - ldrb r2, [r4, 0x4]\n\ - bl show_sprite\n\ - ldr r5, _080BBF9C @ =gScriptResult\n\ - ldrb r0, [r5]\n\ - ldrb r1, [r4, 0x5]\n\ - ldrb r2, [r4, 0x4]\n\ - movs r4, 0\n\ - ldrsh r3, [r7, r4]\n\ - movs r5, 0\n\ - ldrsh r4, [r6, r5]\n\ - str r4, [sp]\n\ - bl sub_805C0F8\n\ - ldr r1, _080BBF9C @ =gScriptResult\n\ - ldrb r0, [r1]\n\ - mov r2, r10\n\ - ldrb r1, [r2, 0x5]\n\ - ldrb r2, [r2, 0x4]\n\ - bl sub_805C78C\n\ - ldr r3, _080BBF8C @ =gSpecialVar_0x8004\n\ - ldrh r0, [r3]\n\ - adds r0, 0x1\n\ - strh r0, [r3]\n\ -_080BBF5E:\n\ - ldr r4, [sp, 0x10]\n\ - lsls r0, r4, 24\n\ - lsrs r6, r0, 24\n\ - ldr r5, [sp, 0xC]\n\ - cmp r6, r5\n\ - bcs _080BBF6C\n\ - b _080BBE2C\n\ -_080BBF6C:\n\ - add sp, 0x14\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\ -_080BBF7C: .4byte gSaveBlock1 + 0x1A1A\n\ -_080BBF80: .4byte gSaveBlock1\n\ -_080BBF84: .4byte gDecorations\n\ -_080BBF88: .4byte gMapHeader\n\ -_080BBF8C: .4byte gSpecialVar_0x8004\n\ -_080BBF90: .4byte gSpecialVar_0x8006\n\ -_080BBF94: .4byte gSpecialVar_0x8007\n\ -_080BBF98: .4byte 0x00003f20\n\ -_080BBF9C: .4byte gScriptResult\n\ -_080BBFA0: .4byte gDecorations + 0x1C\n\ -.syntax divided\n"); -} -#endif void sub_80BBFA4(void) { -- cgit v1.2.3 From 91f6d8118788d18b258873a062da1318569eaf0f Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Thu, 26 Oct 2017 13:43:08 -0500 Subject: also fix ambiguous MON_DATA_SPD_EV and MON_DATA_SPD2 constants --- src/field/secret_base.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/field') diff --git a/src/field/secret_base.c b/src/field/secret_base.c index 4c749c4c7..2bc94f118 100644 --- a/src/field/secret_base.c +++ b/src/field/secret_base.c @@ -596,7 +596,7 @@ u8 sub_80BC298(struct Pokemon *mon) { // 80bc298 u16 evsum = GetMonData(mon, MON_DATA_HP_EV); evsum += GetMonData(mon, MON_DATA_ATK_EV); evsum += GetMonData(mon, MON_DATA_DEF_EV); - evsum += GetMonData(mon, MON_DATA_SPD_EV); + evsum += GetMonData(mon, MON_DATA_SPEED_EV); evsum += GetMonData(mon, MON_DATA_SPATK_EV); evsum += GetMonData(mon, MON_DATA_SPDEF_EV); return (u8)(evsum / 6); -- cgit v1.2.3 From d783f420001b67c19f8d81bbc94d266af98e89ad Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Thu, 26 Oct 2017 14:34:50 -0500 Subject: put all C data headers in src/ --- src/field/daycare.c | 3 ++- src/field/field_map_obj.c | 22 +++++++++++----------- 2 files changed, 13 insertions(+), 12 deletions(-) (limited to 'src/field') diff --git a/src/field/daycare.c b/src/field/daycare.c index 9c5808a0e..d182e121b 100644 --- a/src/field/daycare.c +++ b/src/field/daycare.c @@ -13,7 +13,6 @@ #include "moves.h" #include "trade.h" #include "strings2.h" -#include "data/pokemon/egg_moves.h" #include "party_menu.h" #include "field_effect.h" #include "main.h" @@ -33,6 +32,8 @@ static void sub_80417F4(struct DayCareMail *); static void sub_80420FC(struct Pokemon *, u16, struct DayCareData *); static u8 daycare_relationship_score(struct DayCareData *); +#include "../data/pokemon/egg_moves.h" + const u8 *const gUnknown_08209AC4[] = { DaycareText_GetAlongVeryWell, DaycareText_GetAlong, diff --git a/src/field/field_map_obj.c b/src/field/field_map_obj.c index 0e1ce2a31..094e70107 100644 --- a/src/field/field_map_obj.c +++ b/src/field/field_map_obj.c @@ -1578,13 +1578,13 @@ void (*const gUnknown_0836DA88[])(struct Sprite *) = const u8 gUnknown_0836DBBC[] = {0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; const u8 gUnknown_0836DC09[] = {DIR_SOUTH, DIR_SOUTH, DIR_SOUTH, DIR_NORTH, DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_SOUTH, DIR_SOUTH, DIR_SOUTH, DIR_WEST, DIR_NORTH, DIR_NORTH, DIR_SOUTH, DIR_SOUTH, DIR_SOUTH, DIR_SOUTH, DIR_NORTH, DIR_SOUTH, DIR_SOUTH, DIR_SOUTH, DIR_NORTH, DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH, DIR_EAST, DIR_SOUTH, DIR_WEST, DIR_NORTH, DIR_WEST, DIR_SOUTH, DIR_EAST, DIR_WEST, DIR_NORTH, DIR_EAST, DIR_SOUTH, DIR_EAST, DIR_NORTH, DIR_WEST, DIR_SOUTH, DIR_NORTH, DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_SOUTH, DIR_SOUTH, DIR_NORTH, DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_SOUTH, DIR_SOUTH, DIR_NORTH, DIR_WEST, DIR_EAST, DIR_SOUTH, DIR_NORTH, DIR_WEST, DIR_EAST, DIR_SOUTH, DIR_NORTH, DIR_WEST, DIR_EAST, DIR_SOUTH}; -#include "data/field_map_obj/map_object_graphics_info_pointers.h" -#include "data/field_map_obj/field_effect_object_template_pointers.h" -#include "data/field_map_obj/map_object_pic_tables.h" -#include "data/field_map_obj/map_object_anims.h" -#include "data/field_map_obj/base_oam.h" -#include "data/field_map_obj/map_object_subsprites.h" -#include "data/field_map_obj/map_object_graphics_info.h" +#include "../data/field_map_obj/map_object_graphics_info_pointers.h" +#include "../data/field_map_obj/field_effect_object_template_pointers.h" +#include "../data/field_map_obj/map_object_pic_tables.h" +#include "../data/field_map_obj/map_object_anims.h" +#include "../data/field_map_obj/base_oam.h" +#include "../data/field_map_obj/map_object_subsprites.h" +#include "../data/field_map_obj/map_object_graphics_info.h" const struct SpritePalette gUnknown_0837377C[] = { {gMapObjectPalette0, 0x1103}, @@ -1790,14 +1790,14 @@ const u16 *const gUnknown_0837399C[] = { Unknown_8373988 }; -#include "data/field_map_obj/berry_tree_graphics_tables.h" -#include "data/field_map_obj/field_effect_objects.h" +#include "../data/field_map_obj/berry_tree_graphics_tables.h" +#include "../data/field_map_obj/field_effect_objects.h" const s16 gUnknown_0837520C[] = {0x20, 0x40, 0x60, 0x80}; const s16 gUnknown_08375204[] = {0x20, 0x40, 0x80, 0xc0}; const s16 gUnknown_0837521C[] = {0x20, 0x30, 0x40, 0x50}; -#include "data/field_map_obj/callback_subroutine_pointers.h" +#include "../data/field_map_obj/callback_subroutine_pointers.h" const u8 gUnknown_083755F4[] = {0x00, 0x00, 0x01, 0x02, 0x03, 0x00, 0x00, 0x01, 0x01}; const u8 gUnknown_083755FD[] = {0x04, 0x04, 0x05, 0x06, 0x07, 0x04, 0x04, 0x05, 0x05}; @@ -1886,7 +1886,7 @@ const u8 gUnknown_08375767[][4] = { {3, 4, 2, 1} }; -#include "data/field_map_obj/anim_func_ptrs.h" +#include "../data/field_map_obj/anim_func_ptrs.h" // text -- cgit v1.2.3 From 1c2a815d7b31bc9f43c26e4ea0bf346487b958ac Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 27 Oct 2017 20:36:43 -0400 Subject: Match sub_80BD1FC --- src/field/secret_base.c | 105 +++++++----------------------------------------- 1 file changed, 14 insertions(+), 91 deletions(-) (limited to 'src/field') diff --git a/src/field/secret_base.c b/src/field/secret_base.c index 4c749c4c7..708bd7fe1 100644 --- a/src/field/secret_base.c +++ b/src/field/secret_base.c @@ -1402,44 +1402,41 @@ u8 sub_80BD1B0(void) return 0; } -#ifdef NONMATCHING u8 sub_80BD1FC(struct SecretBaseRecord *secretBase) { s16 secretBaseIndex; - if (!secretBase->secretBaseId) + if (secretBase->secretBaseId == 0) { return 0; } secretBaseIndex = sub_80BD12C(secretBase->secretBaseId); - if (secretBaseIndex) + if (secretBaseIndex != 0) { if (secretBaseIndex != -1) { - if (gSaveBlock1.secretBases[secretBaseIndex].sbr_field_1_0 != 1) + if (gSaveBlock1.secretBases[secretBaseIndex].sbr_field_1_0 == 1) { - if (gSaveBlock1.secretBases[secretBaseIndex].sbr_field_1_6 != 2 + return 0; + } + if (gSaveBlock1.secretBases[secretBaseIndex].sbr_field_1_6 != 2 || secretBase->sbr_field_1_0 == 1) - { - sub_80BD034(secretBaseIndex, secretBase); - return secretBaseIndex; - } + { + sub_80BD034(secretBaseIndex, secretBase); + return secretBaseIndex; } } else { secretBaseIndex = sub_80BD170(); - if (secretBaseIndex == 0) + if (secretBaseIndex != 0) { - secretBaseIndex = sub_80BD1B0(); - if (secretBaseIndex) - { - sub_80BD034(secretBaseIndex, secretBase); - return secretBaseIndex; - } + sub_80BD034(secretBaseIndex, secretBase); + return secretBaseIndex; } - else + secretBaseIndex = sub_80BD1B0(); + if (secretBaseIndex) { sub_80BD034(secretBaseIndex, secretBase); return secretBaseIndex; @@ -1449,80 +1446,6 @@ u8 sub_80BD1FC(struct SecretBaseRecord *secretBase) return 0; } -#else -__attribute__((naked)) -u8 sub_80BD1FC(struct SecretBaseRecord *secretBase) -{ - asm(".syntax unified\n\ - push {r4,r5,lr}\n\ - adds r5, r0, 0\n\ - ldrb r0, [r5]\n\ - cmp r0, 0\n\ - beq _080BD278\n\ - ldrb r0, [r5]\n\ - bl sub_80BD12C\n\ - lsls r0, 16\n\ - lsrs r4, r0, 16\n\ - asrs r2, r0, 16\n\ - cmp r2, 0\n\ - beq _080BD278\n\ - movs r0, 0x1\n\ - negs r0, r0\n\ - cmp r2, r0\n\ - beq _080BD254\n\ - ldr r0, _080BD24C @ =gSaveBlock1\n\ - lsls r1, r2, 2\n\ - adds r1, r2\n\ - lsls r1, 5\n\ - adds r1, r0\n\ - ldr r0, _080BD250 @ =0x00001a09\n\ - adds r1, r0\n\ - ldrb r1, [r1]\n\ - lsls r0, r1, 28\n\ - lsrs r0, 28\n\ - cmp r0, 0x1\n\ - beq _080BD278\n\ - lsrs r0, r1, 6\n\ - cmp r0, 0x2\n\ - bne _080BD246\n\ - ldrb r1, [r5, 0x1]\n\ - movs r0, 0xF\n\ - ands r0, r1\n\ - cmp r0, 0x1\n\ - bne _080BD278\n\ -_080BD246:\n\ - lsls r4, 24\n\ - lsrs r4, 24\n\ - b _080BD26C\n\ - .align 2, 0\n\ -_080BD24C: .4byte gSaveBlock1\n\ -_080BD250: .4byte 0x00001a09\n\ -_080BD254:\n\ - bl sub_80BD170\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - cmp r4, 0\n\ - bne _080BD26C\n\ - bl sub_80BD1B0\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - cmp r4, 0\n\ - beq _080BD278\n\ -_080BD26C:\n\ - adds r0, r4, 0\n\ - adds r1, r5, 0\n\ - bl sub_80BD034\n\ - adds r0, r4, 0\n\ - b _080BD27A\n\ -_080BD278:\n\ - movs r0, 0\n\ -_080BD27A:\n\ - pop {r4,r5}\n\ - pop {r1}\n\ - bx r1\n\ -.syntax divided\n"); -} -#endif void sub_80BD280(void) { -- cgit v1.2.3 From 978ca50dad8de72a3940b5423fd5c3b87c13eb46 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Sat, 28 Oct 2017 17:35:37 -0700 Subject: Even more battle tower decompilation --- src/field/easy_chat.c | 10 +++++----- src/field/tv.c | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) (limited to 'src/field') diff --git a/src/field/easy_chat.c b/src/field/easy_chat.c index 6014b3d14..2668b57dd 100644 --- a/src/field/easy_chat.c +++ b/src/field/easy_chat.c @@ -278,13 +278,13 @@ void sub_80EB7C4(void) switch (gSpecialVar_0x8004) { case 0: - words = gSaveBlock1.unk2B1C; + words = gSaveBlock1.easyChats.unk2B1C; arg1 = 2; arg2 = 2; break; case 1: - words = gSaveBlock1.unk2B28; - if (sub_80EB680(gSaveBlock1.unk2B28, 3, 2, 20)) + words = gSaveBlock1.easyChats.unk2B28; + if (sub_80EB680(gSaveBlock1.easyChats.unk2B28, 3, 2, 20)) { arg1 = 2; arg2 = 3; @@ -296,12 +296,12 @@ void sub_80EB7C4(void) } break; case 2: - words = gSaveBlock1.unk2B34; + words = gSaveBlock1.easyChats.unk2B34; arg1 = 3; arg2 = 2; break; case 3: - words = gSaveBlock1.unk2B40; + words = gSaveBlock1.easyChats.unk2B40; arg1 = 3; arg2 = 2; break; diff --git a/src/field/tv.c b/src/field/tv.c index 89e978d00..1e38e79e0 100644 --- a/src/field/tv.c +++ b/src/field/tv.c @@ -674,7 +674,7 @@ void sub_80BE320(void) bravoTrainerTower->var00 = TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE; bravoTrainerTower->var01 = 1; StringCopy(bravoTrainerTower->trainerName, gSaveBlock2.playerName); - StringCopy(bravoTrainerTower->pokemonName, gSaveBlock2.filler_A8.filler_3DC); + StringCopy(bravoTrainerTower->pokemonName, gSaveBlock2.filler_A8.defeatedByTrainerName); bravoTrainerTower->species = gSaveBlock2.filler_A8.firstMonSpecies; bravoTrainerTower->defeatedSpecies = gSaveBlock2.filler_A8.defeatedBySpecies; bravoTrainerTower->var16 = sub_8135D3C(gSaveBlock2.filler_A8.lastStreakLevelType); -- cgit v1.2.3 From b9252e4f2803fe14bd7dd8385da595931b82c8d6 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Sat, 28 Oct 2017 22:59:19 -0700 Subject: Give more descriptive names for battle tower structs --- src/field/choose_party.c | 2 +- src/field/tv.c | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) (limited to 'src/field') diff --git a/src/field/choose_party.c b/src/field/choose_party.c index 879139aa4..fd90a9199 100644 --- a/src/field/choose_party.c +++ b/src/field/choose_party.c @@ -176,7 +176,7 @@ static bool8 IsMonAllowedInBattleTower(struct Pokemon *pkmn) return TRUE; } - if ((gSaveBlock2.filler_A8.battleTowerLevelType) == 0 + if ((gSaveBlock2.battleTower.battleTowerLevelType) == 0 && GetMonData(pkmn, MON_DATA_LEVEL) > 50) return FALSE; diff --git a/src/field/tv.c b/src/field/tv.c index 1e38e79e0..fcbd734a9 100644 --- a/src/field/tv.c +++ b/src/field/tv.c @@ -674,12 +674,12 @@ void sub_80BE320(void) bravoTrainerTower->var00 = TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE; bravoTrainerTower->var01 = 1; StringCopy(bravoTrainerTower->trainerName, gSaveBlock2.playerName); - StringCopy(bravoTrainerTower->pokemonName, gSaveBlock2.filler_A8.defeatedByTrainerName); - bravoTrainerTower->species = gSaveBlock2.filler_A8.firstMonSpecies; - bravoTrainerTower->defeatedSpecies = gSaveBlock2.filler_A8.defeatedBySpecies; - bravoTrainerTower->var16 = sub_8135D3C(gSaveBlock2.filler_A8.lastStreakLevelType); - bravoTrainerTower->var1c = gSaveBlock2.filler_A8.var_4AD; - if (gSaveBlock2.filler_A8.lastStreakLevelType == 0) + StringCopy(bravoTrainerTower->pokemonName, gSaveBlock2.battleTower.defeatedByTrainerName); + bravoTrainerTower->species = gSaveBlock2.battleTower.firstMonSpecies; + bravoTrainerTower->defeatedSpecies = gSaveBlock2.battleTower.defeatedBySpecies; + bravoTrainerTower->var16 = sub_8135D3C(gSaveBlock2.battleTower.lastStreakLevelType); + bravoTrainerTower->var1c = gSaveBlock2.battleTower.battleOutcome; + if (gSaveBlock2.battleTower.lastStreakLevelType == 0) bravoTrainerTower->btLevel = 50; else bravoTrainerTower->btLevel = 100; -- cgit v1.2.3 From c5cda9f16442780794852af54635f6526c4c031a Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Wed, 1 Nov 2017 23:52:26 -0700 Subject: Use descriptive variable and function names for battle_tower code --- src/field/choose_party.c | 6 +++--- src/field/field_specials.c | 2 +- src/field/tv.c | 3 +-- 3 files changed, 5 insertions(+), 6 deletions(-) (limited to 'src/field') diff --git a/src/field/choose_party.c b/src/field/choose_party.c index fd90a9199..adb210e7b 100644 --- a/src/field/choose_party.c +++ b/src/field/choose_party.c @@ -24,7 +24,7 @@ extern u8 gUnknown_020384F0; extern struct UnknownPokemonStruct2 gUnknown_02023A00[]; extern u8 gUnknown_0202E8F6; extern struct Pokemon gUnknown_030042FC[]; -extern const u16 gBattleTowerBanlist[]; +extern const u16 gBattleTowerBannedSpecies[]; EWRAM_DATA u8 gSelectedOrderFromParty[3] = {0}; @@ -182,9 +182,9 @@ static bool8 IsMonAllowedInBattleTower(struct Pokemon *pkmn) // Check if the pkmn is in the ban list species = GetMonData(pkmn, MON_DATA_SPECIES); - while (gBattleTowerBanlist[i] != 0xFFFF) + while (gBattleTowerBannedSpecies[i] != 0xFFFF) { - if (gBattleTowerBanlist[i] == species) + if (gBattleTowerBannedSpecies[i] == species) return FALSE; i++; } diff --git a/src/field/field_specials.c b/src/field/field_specials.c index 36362d098..ea0c2bd6a 100644 --- a/src/field/field_specials.c +++ b/src/field/field_specials.c @@ -1789,7 +1789,7 @@ u16 sub_810F404(void) void sub_810F414(void) { - sub_8135FF4(gStringVar1); + SetEReaderTrainerName(gStringVar1); } const u8 gUnknown_083F83E0[] = {12, 2, 4, 5, 1, 8, 7, 11, 3, 10, 9, 6}; diff --git a/src/field/tv.c b/src/field/tv.c index fcbd734a9..87fc03065 100644 --- a/src/field/tv.c +++ b/src/field/tv.c @@ -123,7 +123,6 @@ void ClearTVShowData(void) bool8 sub_80BF1B4(u8); void sub_80BF20C(void); -extern u16 sub_8135D3C(u8); extern u8 gScriptContestCategory; extern u8 gScriptContestRank; extern u8 gUnknown_03004316[11]; @@ -677,7 +676,7 @@ void sub_80BE320(void) StringCopy(bravoTrainerTower->pokemonName, gSaveBlock2.battleTower.defeatedByTrainerName); bravoTrainerTower->species = gSaveBlock2.battleTower.firstMonSpecies; bravoTrainerTower->defeatedSpecies = gSaveBlock2.battleTower.defeatedBySpecies; - bravoTrainerTower->var16 = sub_8135D3C(gSaveBlock2.battleTower.lastStreakLevelType); + bravoTrainerTower->var16 = GetCurrentBattleTowerWinStreak(gSaveBlock2.battleTower.lastStreakLevelType); bravoTrainerTower->var1c = gSaveBlock2.battleTower.battleOutcome; if (gSaveBlock2.battleTower.lastStreakLevelType == 0) bravoTrainerTower->btLevel = 50; -- cgit v1.2.3 From 5b8afc1ed70969fc93bce6aa43ded9929e5a2636 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Thu, 2 Nov 2017 18:02:40 -0700 Subject: Move battle_tower.c to src/field/ --- src/field/battle_tower.c | 2375 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 2375 insertions(+) create mode 100644 src/field/battle_tower.c (limited to 'src/field') diff --git a/src/field/battle_tower.c b/src/field/battle_tower.c new file mode 100644 index 000000000..90ecc457a --- /dev/null +++ b/src/field/battle_tower.c @@ -0,0 +1,2375 @@ +#include "global.h" +#include "battle.h" +#include "battle_setup.h" +#include "battle_tower.h" +#include "battle_transition.h" +#include "data2.h" +#include "easy_chat.h" +#include "event_data.h" +#include "item.h" +#include "items.h" +#include "main.h" +#include "map_object_constants.h" +#include "moves.h" +#include "new_game.h" +#include "overworld.h" +#include "pokedex.h" +#include "rng.h" +#include "save.h" +#include "script_pokemon_80C4.h" +#include "species.h" +#include "string_util.h" +#include "task.h" +#include "text.h" +#include "trainer.h" +#include "tv.h" +#include "vars.h" + +#if ENGLISH +#include "../data/battle_tower/trainers.h" +#elif GERMAN +#include "../data/battle_tower/trainers_de.h" +#endif + +static const u16 sBattleTowerHeldItems[] = { + ITEM_NONE, + ITEM_KINGS_ROCK, + ITEM_SITRUS_BERRY, + ITEM_ORAN_BERRY, + ITEM_CHESTO_BERRY, + ITEM_HARD_STONE, + ITEM_FOCUS_BAND, + ITEM_PERSIM_BERRY, + ITEM_MIRACLE_SEED, + ITEM_BERRY_JUICE, + ITEM_MACHO_BRACE, + ITEM_SILVER_POWDER, + ITEM_CHERI_BERRY, + ITEM_BLACK_GLASSES, + ITEM_BLACK_BELT, + ITEM_SOUL_DEW, + ITEM_CHOICE_BAND, + ITEM_MAGNET, + ITEM_SILK_SCARF, + ITEM_WHITE_HERB, + ITEM_DEEP_SEA_SCALE, + ITEM_DEEP_SEA_TOOTH, + ITEM_MYSTIC_WATER, + ITEM_SHARP_BEAK, + ITEM_QUICK_CLAW, + ITEM_LEFTOVERS, + ITEM_RAWST_BERRY, + ITEM_LIGHT_BALL, + ITEM_POISON_BARB, + ITEM_NEVER_MELT_ICE, + ITEM_ASPEAR_BERRY, + ITEM_SPELL_TAG, + ITEM_BRIGHT_POWDER, + ITEM_LEPPA_BERRY, + ITEM_SCOPE_LENS, + ITEM_TWISTED_SPOON, + ITEM_METAL_COAT, + ITEM_MENTAL_HERB, + ITEM_CHARCOAL, + ITEM_PECHA_BERRY, + ITEM_SOFT_SAND, + ITEM_LUM_BERRY, + ITEM_DRAGON_SCALE, + ITEM_DRAGON_FANG, + ITEM_IAPAPA_BERRY, + ITEM_WIKI_BERRY, + ITEM_SEA_INCENSE, + ITEM_SHELL_BELL, + ITEM_SALAC_BERRY, + ITEM_LANSAT_BERRY, + ITEM_APICOT_BERRY, + ITEM_STARF_BERRY, + ITEM_LIECHI_BERRY, + ITEM_STICK, + ITEM_LAX_INCENSE, + ITEM_AGUAV_BERRY, + ITEM_FIGY_BERRY, + ITEM_THICK_CLUB, + ITEM_MAGO_BERRY, + ITEM_METAL_POWDER, + ITEM_PETAYA_BERRY, + ITEM_LUCKY_PUNCH, + ITEM_GANLON_BERRY, +}; + +#include "../data/battle_tower/level_50_mons.h" +#include "../data/battle_tower/level_100_mons.h" + +static const u8 sMaleTrainerClasses[] = { + TRAINER_CLASS_RUIN_MANIAC, + TRAINER_CLASS_TUBER_M, + TRAINER_CLASS_COOL_TRAINER_M, + TRAINER_CLASS_RICH_BOY, + TRAINER_CLASS_POKEMANIAC, + TRAINER_CLASS_SWIMMER_M, + TRAINER_CLASS_BLACK_BELT, + TRAINER_CLASS_GUITARIST, + TRAINER_CLASS_KINDLER, + TRAINER_CLASS_CAMPER, + TRAINER_CLASS_BUG_MANIAC, + TRAINER_CLASS_PSYCHIC_M, + TRAINER_CLASS_GENTLEMAN, + TRAINER_CLASS_SCHOOL_KID_M, + TRAINER_CLASS_POKEFAN_M, + TRAINER_CLASS_EXPERT_M, + TRAINER_CLASS_YOUNGSTER, + TRAINER_CLASS_FISHERMAN, + TRAINER_CLASS_CYCLING_TRIATHLETE_M, + TRAINER_CLASS_RUNNING_TRIATHLETE_M, + TRAINER_CLASS_SWIMMING_TRIATHLETE_M, + TRAINER_CLASS_DRAGON_TAMER, + TRAINER_CLASS_BIRD_KEEPER, + TRAINER_CLASS_NINJA_BOY, + TRAINER_CLASS_SAILOR, + TRAINER_CLASS_COLLECTOR, + TRAINER_CLASS_POKEMON_BREEDER_M, + TRAINER_CLASS_POKEMON_RANGER_M, + TRAINER_CLASS_BUG_CATCHER, + TRAINER_CLASS_HIKER, +}; + +static const u8 sFemaleTrainerClasses[] = { + TRAINER_CLASS_AROMA_LADY, + TRAINER_CLASS_TUBER_F, + TRAINER_CLASS_COOL_TRAINER_F, + TRAINER_CLASS_HEX_MANIAC, + TRAINER_CLASS_LADY, + TRAINER_CLASS_BEAUTY, + TRAINER_CLASS_PSYCHIC_F, + TRAINER_CLASS_SCHOOL_KID_F, + TRAINER_CLASS_POKEFAN_F, + TRAINER_CLASS_EXPERT_F, + TRAINER_CLASS_CYCLING_TRIATHLETE_F, + TRAINER_CLASS_RUNNING_TRIATHLETE_F, + TRAINER_CLASS_SWIMMING_TRIATHLETE_F, + TRAINER_CLASS_BATTLE_GIRL, + TRAINER_CLASS_PARASOL_LADY, + TRAINER_CLASS_SWIMMER_F, + TRAINER_CLASS_PICNICKER, + TRAINER_CLASS_POKEMON_BREEDER_F, + TRAINER_CLASS_POKEMON_RANGER_F, + TRAINER_CLASS_LASS, +}; + +static const u8 sMaleTrainerGfxIds[] = { + MAP_OBJ_GFX_HIKER, + MAP_OBJ_GFX_TUBER_M, + MAP_OBJ_GFX_MAN_4, + MAP_OBJ_GFX_BOY_4, + MAP_OBJ_GFX_MANIAC, + MAP_OBJ_GFX_RUNNING_TRIATHLETE_M, + MAP_OBJ_GFX_BLACK_BELT, + MAP_OBJ_GFX_MAN_6, + MAP_OBJ_GFX_MAN_6, + MAP_OBJ_GFX_CAMPER, + MAP_OBJ_GFX_MANIAC, + MAP_OBJ_GFX_PSYCHIC_M, + MAP_OBJ_GFX_GENTLEMAN, + MAP_OBJ_GFX_SCHOOL_KID_M, + MAP_OBJ_GFX_MAN_3, + MAP_OBJ_GFX_OLD_MAN_1, + MAP_OBJ_GFX_YOUNGSTER, + MAP_OBJ_GFX_FISHERMAN, + MAP_OBJ_GFX_CYCLING_TRIATHLETE_M, + MAP_OBJ_GFX_RUNNING_TRIATHLETE_M, + MAP_OBJ_GFX_RUNNING_TRIATHLETE_M, + MAP_OBJ_GFX_MAN_4, + MAP_OBJ_GFX_MAN_6, + MAP_OBJ_GFX_LITTLE_BOY_1, + MAP_OBJ_GFX_SAILOR, + MAP_OBJ_GFX_MANIAC, + MAP_OBJ_GFX_MAN_5, + MAP_OBJ_GFX_CAMPER, + MAP_OBJ_GFX_BUG_CATCHER, + MAP_OBJ_GFX_HIKER, +}; + +static const u8 sFemaleTrainerGfxIds[] = { + MAP_OBJ_GFX_WOMAN_3, + MAP_OBJ_GFX_TUBER_F, + MAP_OBJ_GFX_WOMAN_7, + MAP_OBJ_GFX_WOMAN_1, + MAP_OBJ_GFX_WOMAN_3, + MAP_OBJ_GFX_BEAUTY, + MAP_OBJ_GFX_LASS, + MAP_OBJ_GFX_GIRL_3, + MAP_OBJ_GFX_WOMAN_2, + MAP_OBJ_GFX_OLD_WOMAN_1, + MAP_OBJ_GFX_CYCLING_TRIATHLETE_F, + MAP_OBJ_GFX_RUNNING_TRIATHLETE_F, + MAP_OBJ_GFX_RUNNING_TRIATHLETE_F, + MAP_OBJ_GFX_GIRL_3, + MAP_OBJ_GFX_WOMAN_7, + MAP_OBJ_GFX_RUNNING_TRIATHLETE_F, + MAP_OBJ_GFX_PICNICKER, + MAP_OBJ_GFX_WOMAN_3, + MAP_OBJ_GFX_PICNICKER, + MAP_OBJ_GFX_LASS, +}; + +const u16 gBattleTowerBannedSpecies[] = { + SPECIES_MEW, + SPECIES_MEWTWO, + SPECIES_HO_OH, + SPECIES_LUGIA, + SPECIES_CELEBI, + SPECIES_KYOGRE, + SPECIES_GROUDON, + SPECIES_RAYQUAZA, + SPECIES_JIRACHI, + SPECIES_DEOXYS, + 0xFFFF, +}; + +// Item prizes for battle tower streaks of 5 or fewer sets. +/*static*/ const u16 sShortStreakPrizes[] = { + ITEM_HP_UP, + ITEM_PROTEIN, + ITEM_IRON, + ITEM_CALCIUM, + ITEM_CARBOS, + ITEM_ZINC, +}; + +// Item prizes for battle tower streaks of greater than 5 sets. +/*static*/ const u16 sLongStreakPrizes[] = { + ITEM_BRIGHT_POWDER, + ITEM_WHITE_HERB, + ITEM_QUICK_CLAW, + ITEM_LEFTOVERS, + ITEM_MENTAL_HERB, + ITEM_KINGS_ROCK, + ITEM_FOCUS_BAND, + ITEM_SCOPE_LENS, + ITEM_CHOICE_BAND, +}; + +static void ResetBattleTowerStreak(u8 levelType); +static void ValidateBattleTowerRecordChecksums(void); +static void PrintEReaderTrainerFarewellMessage(void); +extern void SetBattleTowerTrainerGfxId(u8); +extern void sub_8135A3C(void); +static void sub_8135CFC(void); +static void CheckMonBattleTowerBanlist(u16, u16, u16, u8, u8, u16 *, u16 *, u8 *); +static void ClearEReaderTrainer(struct BattleTowerEReaderTrainer *); +static void SetEReaderTrainerChecksum(struct BattleTowerEReaderTrainer *ereaderTrainer); +static void SetBattleTowerRecordChecksum(struct BattleTowerRecord *); +static void ClearBattleTowerRecord(struct BattleTowerRecord *); + +extern const u8 gUnknown_08400E23[]; +extern const u8 gUnknown_08400E29[]; +extern const u8 gUnknown_08400E2C[]; +extern const u8 gUnknown_08400E2E[]; +extern const u8 gUnknown_08400E30[]; +extern const u8 gUnknown_08400E32[]; +extern const u8 gUnknown_08400E36[]; +extern u16 gSpecialVar_0x8004; +extern u8 gTrainerClassToPicIndex[]; +extern u8 gTrainerClassToNameIndex[]; +extern u16 gTrainerBattleOpponent; +extern u16 gBattleTypeFlags; +extern u8 gSelectedOrderFromParty[]; +extern u8 gBattleOutcome; +extern struct Pokemon gUnknown_030042FC[]; +extern struct BattlePokemon gBattleMons[]; + +#define ewram160FB (ewram[0x160FB]) + + +void sub_8134548(void) +{ + u8 var1 = 0; + s32 levelType; + + for (levelType = 0; levelType < 2; levelType++) + { + switch (gSaveBlock2.battleTower.var_4AE[levelType]) + { + case 0: + default: + ResetBattleTowerStreak(levelType); + if (!var1) + { + VarSet(VAR_0x4000, 5); + } + break; + case 1: + ResetBattleTowerStreak(levelType); + VarSet(VAR_0x4000, 1); + var1++; + break; + case 4: + VarSet(VAR_0x4000, 2); + var1++; + break; + case 5: + VarSet(VAR_0x4000, 3); + var1++; + break; + case 2: + VarSet(VAR_0x4000, 4); + var1++; + break; + case 3: + case 6: + break; + } + } + + if ((gSaveBlock2.battleTower.var_4AE[0] == 3 || gSaveBlock2.battleTower.var_4AE[0] == 6) + && (gSaveBlock2.battleTower.var_4AE[1] == 3 || gSaveBlock2.battleTower.var_4AE[1] == 6)) + { + VarSet(VAR_0x4000, 5); + } + + ValidateBattleTowerRecordChecksums(); +} + +void ResetBattleTowerStreak(u8 levelType) +{ + gSaveBlock2.battleTower.var_4AE[levelType] = 0; + gSaveBlock2.battleTower.curChallengeBattleNum[levelType] = 1; + gSaveBlock2.battleTower.curStreakChallengesNum[levelType] = 1; +} + +// Checks if the next trainer in Battle Tower should be the E-Reader trainer. +bool8 ShouldBattleEReaderTrainer(u8 levelType, u16 winStreak) +{ + u8 trainerTeamLevel; + u8 monLevel; + s32 i; + u16 validPartySpecies[6]; + u16 validPartyHeldItems[6]; + u8 numValid; + + numValid = 0; + + ValidateEReaderTrainer(); + + if (gScriptResult != 0 || gSaveBlock2.battleTower.ereaderTrainer.winStreak != winStreak) + { + return FALSE; + } + + trainerTeamLevel = 50; + if (levelType != 0) + { + trainerTeamLevel = 100; + } + + for (i = 0; i < 3; i++) + { + monLevel = gSaveBlock2.battleTower.ereaderTrainer.party[i].level; + if (gSaveBlock2.battleTower.ereaderTrainer.party[i].level != trainerTeamLevel) + { + return FALSE; + } + + CheckMonBattleTowerBanlist( + gSaveBlock2.battleTower.ereaderTrainer.party[i].species, + gSaveBlock2.battleTower.ereaderTrainer.party[i].heldItem, + 1, + levelType, + monLevel, + validPartySpecies, + validPartyHeldItems, + &numValid); + } + + return numValid == 3; +} + +bool8 sub_81346F4(void) +{ + s32 recordIndex, i; + u8 battleTowerLevelType; + u16 winStreak; + bool8 retVal; + s32 numCandidates; + u32 trainerIds[5]; + + numCandidates = 0; + battleTowerLevelType = gSaveBlock2.battleTower.battleTowerLevelType; + + winStreak = GetCurrentBattleTowerWinStreak(battleTowerLevelType); + if (ShouldBattleEReaderTrainer(battleTowerLevelType, winStreak)) + { + gSaveBlock2.battleTower.battleTowerTrainerId = BATTLE_TOWER_EREADER_TRAINER_ID; + retVal = TRUE; + } + else + { + // Check if one of the battle tower trainers from record mixing should be the next trainer. + for (recordIndex = 0; recordIndex < 5; recordIndex++) + { + struct BattleTowerRecord *record = &gSaveBlock2.battleTower.records[recordIndex]; + u32 recordHasData = 0; + u32 checksum = 0; + for (i = 0; i < sizeof(struct BattleTowerRecord) / sizeof(u32) - 1; i++) + { + recordHasData |= ((u32 *)record)[i]; + checksum += ((u32 *)record)[i]; + } + + if (gSaveBlock2.battleTower.records[recordIndex].winStreak == winStreak + && gSaveBlock2.battleTower.records[recordIndex].battleTowerLevelType == battleTowerLevelType + && recordHasData + && gSaveBlock2.battleTower.records[recordIndex].checksum == checksum) + { + trainerIds[numCandidates] = recordIndex; + numCandidates++; + } + } + + if (numCandidates == 0) + { + retVal = FALSE; + } + else + { + gSaveBlock2.battleTower.battleTowerTrainerId = trainerIds[Random() % numCandidates] + BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID; + retVal = TRUE; + } + } + + return retVal; +} + +// void sub_81347F8(void) +// { +// bool8 levelType = gSaveBlock2.battleTower.battleTowerLevelType; +// if (sub_81346F4()) +// { +// SetBattleTowerTrainerGfxId(gSaveBlock2.battleTower.battleTowerTrainerId); +// gSaveBlock2.battleTower.var_4C1[gSaveBlock2.battleTower.curChallengeBattleNum[levelType]] = gSaveBlock2.battleTower.battleTowerTrainerId; +// } +// else +// { +// u16 var1; + +// if (gSaveBlock2.battleTower.curStreakChallengesNum[levelType] > 7) +// { +// while (1) +// { +// s32 i; +// u32 temp = ((Random() & 0xFF) * 30) >> 8; +// var1 = temp + 70; +// for (i = 0; i < gSaveBlock2.battleTower.curChallengeBattleNum[levelType] - 1 && var1 != gSaveBlock2.battleTower.var_4C1[i]; i++) // TODO: [i + 1]??? +// { } + +// if (i == gSaveBlock2.battleTower.curChallengeBattleNum[levelType] - 1) +// { +// break; +// } +// } +// } +// else +// { +// if (gSaveBlock2.battleTower.curChallengeBattleNum[levelType] == 7) +// { +// while (1) +// { +// s32 i; +// u32 temp = ((Random() & 0xFF) * 5); +// u32 temp2 = (((gSaveBlock2.battleTower.curStreakChallengesNum[levelType] - 1) * 10) + 20); +// var1 = temp / 128 + temp2; +// for (i = 0; i < gSaveBlock2.battleTower.curChallengeBattleNum[levelType] - 1 && gSaveBlock2.battleTower.var_4C1[i] != var1; i++) // TODO: [i + 1]???? +// { } + +// if (i == gSaveBlock2.battleTower.curChallengeBattleNum[levelType] - 1) +// { +// break; +// } +// } +// } +// else +// { +// while (1) +// { +// s32 i; +// u32 temp = ((Random() & 0xFF) * 320); +// u32 temp2 = ((gSaveBlock2.battleTower.curStreakChallengesNum[levelType] - 1) * 10); +// var1 = temp + temp2; +// for (i = 0; i < gSaveBlock2.battleTower.curChallengeBattleNum[levelType] - 1 && gSaveBlock2.battleTower.var_4C1[i] != var1; i++) +// { } + +// if (i == gSaveBlock2.battleTower.curChallengeBattleNum[levelType] - 1) +// { +// break; +// } +// } +// } +// } + +// gSaveBlock2.battleTower.battleTowerTrainerId = var1; +// SetBattleTowerTrainerGfxId(gSaveBlock2.battleTower.battleTowerTrainerId); + +// if (gSaveBlock2.battleTower.curChallengeBattleNum[levelType] < 7) +// { +// gSaveBlock2.battleTower.var_4C1[gSaveBlock2.battleTower.curChallengeBattleNum[levelType]] = gSaveBlock2.battleTower.battleTowerTrainerId; +// } +// } +// } + +__attribute__((naked)) +void sub_81347F8(void) +{ + 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\ + ldr r5, _08134838 @ =gSaveBlock2\n\ + ldr r1, _0813483C @ =0x00000554\n\ + adds r0, r5, r1\n\ + ldrb r0, [r0]\n\ + lsls r0, 31\n\ + lsrs r6, r0, 31\n\ + bl sub_81346F4\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _08134848\n\ + ldr r2, _08134840 @ =0x00000564\n\ + adds r4, r5, r2\n\ + ldrb r0, [r4]\n\ + bl SetBattleTowerTrainerGfxId\n\ + lsls r0, r6, 1\n\ + movs r3, 0xAB\n\ + lsls r3, 3\n\ + adds r1, r5, r3\n\ + adds r0, r1\n\ + ldrh r0, [r0]\n\ + adds r0, r5, r0\n\ + ldr r1, _08134844 @ =0x00000569\n\ + adds r0, r1\n\ + ldrb r1, [r4]\n\ + b _081349DC\n\ + .align 2, 0\n\ +_08134838: .4byte gSaveBlock2\n\ +_0813483C: .4byte 0x00000554\n\ +_08134840: .4byte 0x00000564\n\ +_08134844: .4byte 0x00000569\n\ +_08134848:\n\ + lsls r0, r6, 1\n\ + ldr r2, _081348D8 @ =0x0000055c\n\ + adds r1, r5, r2\n\ + adds r1, r0, r1\n\ + ldrh r1, [r1]\n\ + adds r7, r0, 0\n\ + cmp r1, 0x7\n\ + bls _0813485A\n\ + b _0813495C\n\ +_0813485A:\n\ + movs r3, 0xAB\n\ + lsls r3, 3\n\ + adds r0, r5, r3\n\ + adds r1, r7, r0\n\ + ldrh r0, [r1]\n\ + cmp r0, 0x7\n\ + bne _081348E4\n\ + adds r6, r5, 0\n\ + mov r9, r7\n\ + adds r5, r1, 0\n\ + ldr r0, _081348DC @ =0x0000056a\n\ + adds r0, r6\n\ + mov r10, r0\n\ + mov r8, r5\n\ +_08134876:\n\ + bl Random\n\ + movs r1, 0xFF\n\ + ands r1, r0\n\ + lsls r2, r1, 2\n\ + adds r2, r1\n\ + ldr r1, _081348D8 @ =0x0000055c\n\ + adds r4, r6, r1\n\ + mov r3, r9\n\ + adds r0, r3, r4\n\ + ldrh r1, [r0]\n\ + subs r1, 0x1\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r0, 1\n\ + adds r0, 0x14\n\ + lsrs r2, 7\n\ + adds r2, r0\n\ + lsls r2, 16\n\ + lsrs r2, 16\n\ + movs r1, 0\n\ + ldrh r0, [r5]\n\ + subs r0, 0x1\n\ + cmp r1, r0\n\ + bge _081348C8\n\ + mov r3, r10\n\ + ldrb r0, [r3]\n\ + cmp r0, r2\n\ + beq _081348C8\n\ + subs r0, r4, 0x4\n\ + adds r0, r7, r0\n\ + ldrh r0, [r0]\n\ + subs r3, r0, 0x1\n\ + adds r4, 0xE\n\ +_081348BA:\n\ + adds r1, 0x1\n\ + cmp r1, r3\n\ + bge _081348C8\n\ + adds r0, r1, r4\n\ + ldrb r0, [r0]\n\ + cmp r0, r2\n\ + bne _081348BA\n\ +_081348C8:\n\ + mov r3, r8\n\ + ldrh r0, [r3]\n\ + subs r0, 0x1\n\ + ldr r4, _081348E0 @ =gSaveBlock2\n\ + cmp r1, r0\n\ + bne _08134876\n\ + b _081349B6\n\ + .align 2, 0\n\ +_081348D8: .4byte 0x0000055c\n\ +_081348DC: .4byte 0x0000056a\n\ +_081348E0: .4byte gSaveBlock2\n\ +_081348E4:\n\ + adds r6, r5, 0\n\ + mov r9, r7\n\ + adds r5, r1, 0\n\ + ldr r2, _08134950 @ =0x0000056a\n\ + adds r2, r6\n\ + mov r10, r2\n\ + mov r8, r5\n\ +_081348F2:\n\ + bl Random\n\ + movs r1, 0xFF\n\ + ands r1, r0\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsrs r2, r0, 6\n\ + ldr r3, _08134954 @ =0x0000055c\n\ + adds r4, r6, r3\n\ + mov r1, r9\n\ + adds r0, r1, r4\n\ + ldrh r1, [r0]\n\ + subs r1, 0x1\n\ + lsls r0, r1, 2\n\ + adds r0, r1\n\ + lsls r0, 1\n\ + adds r0, r2, r0\n\ + lsls r0, 16\n\ + lsrs r2, r0, 16\n\ + movs r1, 0\n\ + ldrh r0, [r5]\n\ + subs r0, 0x1\n\ + cmp r1, r0\n\ + bge _08134942\n\ + mov r3, r10\n\ + ldrb r0, [r3]\n\ + cmp r0, r2\n\ + beq _08134942\n\ + subs r0, r4, 0x4\n\ + adds r0, r7, r0\n\ + ldrh r0, [r0]\n\ + subs r3, r0, 0x1\n\ + adds r4, 0xE\n\ +_08134934:\n\ + adds r1, 0x1\n\ + cmp r1, r3\n\ + bge _08134942\n\ + adds r0, r1, r4\n\ + ldrb r0, [r0]\n\ + cmp r0, r2\n\ + bne _08134934\n\ +_08134942:\n\ + mov r3, r8\n\ + ldrh r0, [r3]\n\ + subs r0, 0x1\n\ + ldr r4, _08134958 @ =gSaveBlock2\n\ + cmp r1, r0\n\ + bne _081348F2\n\ + b _081349B6\n\ + .align 2, 0\n\ +_08134950: .4byte 0x0000056a\n\ +_08134954: .4byte 0x0000055c\n\ +_08134958: .4byte gSaveBlock2\n\ +_0813495C:\n\ + movs r2, 0xAB\n\ + lsls r2, 3\n\ + adds r0, r5, r2\n\ + adds r6, r7, r0\n\ + ldr r3, _081349EC @ =0x0000056a\n\ + adds r3, r5\n\ + mov r8, r3\n\ + adds r5, r6, 0\n\ +_0813496C:\n\ + bl Random\n\ + movs r1, 0xFF\n\ + ands r1, r0\n\ + lsls r0, r1, 4\n\ + subs r0, r1\n\ + lsls r0, 1\n\ + asrs r0, 8\n\ + adds r0, 0x46\n\ + lsls r0, 16\n\ + lsrs r2, r0, 16\n\ + movs r1, 0\n\ + ldrh r0, [r6]\n\ + subs r0, 0x1\n\ + cmp r1, r0\n\ + bge _081349AC\n\ + mov r3, r8\n\ + ldrb r0, [r3]\n\ + ldr r4, _081349F0 @ =gSaveBlock2\n\ + cmp r0, r2\n\ + beq _081349AC\n\ + ldrh r0, [r5]\n\ + subs r3, r0, 0x1\n\ + ldr r0, _081349EC @ =0x0000056a\n\ + adds r4, r0\n\ +_0813499E:\n\ + adds r1, 0x1\n\ + cmp r1, r3\n\ + bge _081349AC\n\ + adds r0, r1, r4\n\ + ldrb r0, [r0]\n\ + cmp r0, r2\n\ + bne _0813499E\n\ +_081349AC:\n\ + ldrh r0, [r6]\n\ + subs r0, 0x1\n\ + ldr r4, _081349F0 @ =gSaveBlock2\n\ + cmp r1, r0\n\ + bne _0813496C\n\ +_081349B6:\n\ + ldr r1, _081349F4 @ =0x00000564\n\ + adds r0, r4, r1\n\ + strb r2, [r0]\n\ + ldr r2, _081349F4 @ =0x00000564\n\ + adds r5, r4, r2\n\ + ldrb r0, [r5]\n\ + bl SetBattleTowerTrainerGfxId\n\ + movs r3, 0xAB\n\ + lsls r3, 3\n\ + adds r0, r4, r3\n\ + adds r1, r7, r0\n\ + ldrh r0, [r1]\n\ + cmp r0, 0x6\n\ + bhi _081349DE\n\ + adds r0, r4, r0\n\ + ldr r1, _081349F8 @ =0x00000569\n\ + adds r0, r1\n\ + ldrb r1, [r5]\n\ +_081349DC:\n\ + strb r1, [r0]\n\ +_081349DE:\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\ +_081349EC: .4byte 0x0000056a\n\ +_081349F0: .4byte gSaveBlock2\n\ +_081349F4: .4byte 0x00000564\n\ +_081349F8: .4byte 0x00000569\n\ +.syntax divided\n"); +} + +void SetBattleTowerTrainerGfxId(u8 trainerIndex) +{ + u32 i; + u8 trainerClass; + + if (trainerIndex < BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID) + { + trainerClass = gBattleTowerTrainers[trainerIndex].trainerClass; + } + else if (trainerIndex < BATTLE_TOWER_EREADER_TRAINER_ID) + { + trainerClass = gSaveBlock2.battleTower.records[trainerIndex - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].trainerClass; + } + else + { + trainerClass = gSaveBlock2.battleTower.ereaderTrainer.trainerClass; + } + + for (i = 0; i < 30 && sMaleTrainerClasses[i] != trainerClass; i++); + if (i != 30) + { + u8 trainerObjectGfxId = sMaleTrainerGfxIds[i]; + VarSet(0x4010, trainerObjectGfxId); + return; + } + + for (i = 0; i < 20 && sFemaleTrainerClasses[i] != trainerClass; i++); + if (i != 20) + { + u8 trainerObjectGfxId = sFemaleTrainerGfxIds[i]; + VarSet(0x4010, trainerObjectGfxId); + return; + } + + VarSet(0x4010, MAP_OBJ_GFX_BOY_1); +} + +void SetEReaderTrainerGfxId() +{ + SetBattleTowerTrainerGfxId(BATTLE_TOWER_EREADER_TRAINER_ID); +} + +// void sub_8134AC0(struct BattleTowerRecord *record) +// { +// u16 var1[6]; +// u16 var2[6]; +// s32 i, j, k; +// s16 l = 0; + +// for (i = 0; i < 5; i++) +// { +// k = 0; +// for (j = 0; j < 4 && gSaveBlock2.battleTower.records[i].trainerId[j] == record->trainerId[j]; j++); +// if (j == 4) +// { +// for (; k < 7 && gSaveBlock2.battleTower.records[i].name[4] == record->name[4]; k++) +// { +// if (record->name[4] == 0xFF) +// { +// k = 7; +// break; +// } +// } +// } + +// if (k == 7) +// { +// break; +// } +// } + +// if (i < 5) +// { +// gSaveBlock2.battleTower.records[i] = *record; +// return; +// } + +// i = 0; +// while (i < 5) +// { +// if (gSaveBlock2.battleTower.records[i].winStreak == 0) +// { +// if (i > 4) +// { +// break; +// } + +// gSaveBlock2.battleTower.records[i] = *record; +// return; +// } + +// i++; +// } + +// var1[0] = gSaveBlock2.battleTower.records[0].winStreak; +// var2[0] = 0; +// l++; + +// for (i = 1; i < 5; i++) +// { +// j = 0; +// if (j < l) +// { +// for (; gSaveBlock2.battleTower.records[i].winStreak <= var1[j]; j++) +// { +// if (gSaveBlock2.battleTower.records[i].winStreak < var1[j]) +// { +// j = 0; +// l = 1; +// var1[0] = gSaveBlock2.battleTower.records[i].winStreak; +// var2[0] = i; +// break; +// } +// } +// } + +// if (j == l) +// { +// var1[l] = gSaveBlock2.battleTower.records[i].winStreak; +// var2[l] = i; +// l++; +// } +// } + +// gSaveBlock2.battleTower.records[var2[(Random() % l)]] = *record; +// } +__attribute__((naked)) +void sub_8134AC0(struct BattleTowerRecord *record) +{ + 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, 0x1C\n\ + movs r7, 0\n\ + mov r8, r0\n\ + movs r5, 0\n\ + ldr r0, _08134B3C @ =gSaveBlock2\n\ + mov r12, r0\n\ + mov r1, r8\n\ + ldrb r1, [r1, 0xC]\n\ + str r1, [sp, 0x18]\n\ + movs r2, 0xAA\n\ + lsls r2, 1\n\ + add r2, r12\n\ + mov r10, r2\n\ + mov r9, r5\n\ +_08134AE6:\n\ + movs r6, 0\n\ + movs r3, 0\n\ + ldr r0, _08134B40 @ =gSaveBlock2 + 0x158\n\ + add r0, r9\n\ + ldrb r0, [r0]\n\ + ldr r1, [sp, 0x18]\n\ + cmp r0, r1\n\ + bne _08134B14\n\ + movs r0, 0xA4\n\ + muls r0, r5\n\ + ldr r1, _08134B40 @ =gSaveBlock2 + 0x158\n\ + adds r2, r0, r1\n\ + mov r4, r8\n\ + adds r4, 0xC\n\ +_08134B02:\n\ + adds r2, 0x1\n\ + adds r3, 0x1\n\ + cmp r3, 0x3\n\ + bgt _08134B14\n\ + adds r1, r4, r3\n\ + ldrb r0, [r2]\n\ + ldrb r1, [r1]\n\ + cmp r0, r1\n\ + beq _08134B02\n\ +_08134B14:\n\ + cmp r3, 0x4\n\ + bne _08134B54\n\ + movs r6, 0\n\ + mov r2, r10\n\ + ldrb r0, [r2]\n\ + mov r3, r8\n\ + ldrb r3, [r3, 0x8]\n\ + cmp r0, r3\n\ + bne _08134B54\n\ + adds r1, r0, 0\n\ + movs r0, 0xA4\n\ + muls r0, r5\n\ + adds r0, 0x4\n\ + ldr r3, _08134B44 @ =gSaveBlock2 + 0x150\n\ + adds r2, r0, r3\n\ +_08134B32:\n\ + cmp r1, 0xFF\n\ + bne _08134B48\n\ + movs r6, 0x7\n\ + b _08134B54\n\ + .align 2, 0\n\ +_08134B3C: .4byte gSaveBlock2\n\ +_08134B40: .4byte gSaveBlock2 + 0x158\n\ +_08134B44: .4byte gSaveBlock2 + 0x150\n\ +_08134B48:\n\ + adds r6, 0x1\n\ + cmp r6, 0x6\n\ + bgt _08134B54\n\ + ldrb r0, [r2]\n\ + cmp r0, r1\n\ + beq _08134B32\n\ +_08134B54:\n\ + cmp r6, 0x7\n\ + beq _08134B64\n\ + movs r0, 0xA4\n\ + add r10, r0\n\ + add r9, r0\n\ + adds r5, 0x1\n\ + cmp r5, 0x4\n\ + ble _08134AE6\n\ +\n\ +_08134B64:\n\ + cmp r5, 0x4\n\ + bgt _08134B76\n\ + movs r0, 0xA4\n\ + muls r0, r5\n\ + add r0, r12\n\ + movs r1, 0xA6\n\ + lsls r1, 1\n\ + adds r0, r1\n\ + b _08134B9E\n\ +_08134B76:\n\ + movs r5, 0\n\ + movs r1, 0xA7\n\ + lsls r1, 1\n\ + add r1, r12\n\ + b _08134B88\n\ +_08134B80:\n\ + adds r1, 0xA4\n\ + adds r5, 0x1\n\ + cmp r5, 0x4\n\ + bgt _08134BA8\n\ +_08134B88:\n\ + ldrh r0, [r1]\n\ + cmp r0, 0\n\ + bne _08134B80\n\ + cmp r5, 0x4\n\ + bgt _08134BA8\n\ + movs r0, 0xA4\n\ + muls r0, r5\n\ + add r0, r12\n\ + movs r2, 0xA6\n\ + lsls r2, 1\n\ + adds r0, r2\n\ +_08134B9E:\n\ + mov r1, r8\n\ + movs r2, 0xA4\n\ + bl memcpy\n\ + b _08134C5E\n\ +\n\ +_08134BA8:\n\ + mov r2, sp\n\ + movs r3, 0xA7\n\ + lsls r3, 1\n\ + mov r1, r12\n\ + adds r0, r1, r3\n\ + ldrh r0, [r0]\n\ + movs r1, 0\n\ + strh r0, [r2]\n\ + add r0, sp, 0xC\n\ + strh r1, [r0]\n\ + adds r7, 0x1\n\ + movs r5, 0x1\n\ + add r2, sp, 0xC @var2 = r2\n\ + mov r9, r2\n\ + mov r10, r3\n\ +_08134BC6:\n\ + movs r3, 0\n\ + adds r0, r5, 0x1\n\ + mov r12, r0\n\ + cmp r3, r7\n\ + bge _08134C0A @ j < l\n\ + movs r1, 0xA4\n\ + adds r0, r5, 0\n\ + muls r0, r1\n\ + ldr r2, _08134BFC @ =gSaveBlock2\n\ + adds r0, r2\n\ + mov r1, r10\n\ + adds r4, r0, r1\n\ + mov r6, sp\n\ +_08134BE0:\n\ + lsls r0, r3, 1\n\ + add r0, sp\n\ + ldrh r2, [r4]\n\ + adds r1, r2, 0\n\ + ldrh r0, [r0]\n\ + cmp r1, r0\n\ + bcs _08134C00\n\ + movs r3, 0\n\ + movs r7, 0x1\n\ + strh r2, [r6]\n\ + mov r2, r9\n\ + strh r5, [r2]\n\ + b _08134C0A\n\ + .align 2, 0\n\ +_08134BFC: .4byte gSaveBlock2\n\ +_08134C00:\n\ + cmp r1, r0\n\ + bhi _08134C0A\n\ + adds r3, 0x1\n\ + cmp r3, r7\n\ + blt _08134BE0\n\ +_08134C0A:\n\ + cmp r3, r7\n\ + bne _08134C2A\n\ + lsls r1, r7, 1\n\ + mov r3, sp\n\ + adds r2, r3, r1\n\ + movs r3, 0xA4\n\ + adds r0, r5, 0\n\ + muls r0, r3\n\ + ldr r3, _08134C70 @ =gSaveBlock2\n\ + adds r0, r3\n\ + add r0, r10\n\ + ldrh r0, [r0]\n\ + strh r0, [r2]\n\ + add r1, r9\n\ + strh r5, [r1]\n\ + adds r7, 0x1\n\ +_08134C2A:\n\ + mov r5, r12\n\ + cmp r5, 0x4\n\ + ble _08134BC6\n\ + bl Random\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + adds r1, r7, 0\n\ + bl __modsi3\n\ + adds r5, r0, 0\n\ + ldr r2, _08134C70 @ =gSaveBlock2\n\ + lsls r0, r5, 1\n\ + add r0, sp\n\ + adds r0, 0xC\n\ + ldrh r1, [r0]\n\ + movs r0, 0xA4\n\ + muls r0, r1\n\ + adds r0, r2\n\ + movs r1, 0xA6\n\ + lsls r1, 1\n\ + adds r0, r1\n\ + mov r1, r8\n\ + movs r2, 0xA4\n\ + bl memcpy\n\ +_08134C5E:\n\ + add sp, 0x1C\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\ +_08134C70: .4byte gSaveBlock2\n\ + .syntax divided\n"); +} + +u8 get_trainer_class_pic_index(void) +{ + if (gSaveBlock2.battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID) + { + return gTrainerClassToPicIndex[gSaveBlock2.battleTower.ereaderTrainer.trainerClass]; + } + else if (gSaveBlock2.battleTower.battleTowerTrainerId < BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID) + { + return gTrainerClassToPicIndex[gBattleTowerTrainers[gSaveBlock2.battleTower.battleTowerTrainerId].trainerClass]; + } + else + { + return gTrainerClassToPicIndex[gSaveBlock2.battleTower.records[gSaveBlock2.battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].trainerClass]; + } +} + +u8 get_trainer_class_name_index(void) +{ + if (gSaveBlock2.battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID) + { + return gTrainerClassToNameIndex[gSaveBlock2.battleTower.ereaderTrainer.trainerClass]; + } + else if (gSaveBlock2.battleTower.battleTowerTrainerId >= BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID) + { + return gTrainerClassToNameIndex[gSaveBlock2.battleTower.records[gSaveBlock2.battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].trainerClass]; + } + else + { + return gTrainerClassToNameIndex[gBattleTowerTrainers[gSaveBlock2.battleTower.battleTowerTrainerId].trainerClass]; + } +} + +void get_trainer_name(u8* dest) +{ + s32 i; + + if (gSaveBlock2.battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID) + { + for (i = 0; i < 7; i++) + { + dest[i] = gSaveBlock2.battleTower.ereaderTrainer.name[i]; + } + } + else if (gSaveBlock2.battleTower.battleTowerTrainerId < BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID) + { + for (i = 0; i < 7; i++) + { + dest[i] = gBattleTowerTrainers[gSaveBlock2.battleTower.battleTowerTrainerId].name[i]; + } + } + else + { + for (i = 0; i < 7; i++) + { + dest[i] = gSaveBlock2.battleTower.records[gSaveBlock2.battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].name[i]; + } + } + + dest[i] = 0xFF; +} + +void FillBattleTowerTrainerParty(void) +{ + s32 partyIndex, i; + u16 chosenMonIndices[3]; + u8 friendship; + u8 level; + u8 fixedIV; + u8 battleMonsOffset; + u8 monPoolSize; + u8 teamFlags; + const struct BattleTowerPokemon *battleTowerMons; + + battleMonsOffset = 0; + monPoolSize = 60; + friendship = 255; + + ZeroEnemyPartyMons(); + + // Different trainers have access to different sets of pokemon to use in battle. + // The pokemon later in gBattleTowerLevel100Mons or gBattleTowerLevel50Mons are + // stronger. Additionally, the later trainers' pokemon are granted higher IVs. + if (gSaveBlock2.battleTower.battleTowerTrainerId < 20) + { + fixedIV = 6; + } + else if (gSaveBlock2.battleTower.battleTowerTrainerId < 30) + { + fixedIV = 9; + battleMonsOffset = 30; + } + else if (gSaveBlock2.battleTower.battleTowerTrainerId < 40) + { + fixedIV = 12; + battleMonsOffset = 60; + } + else if (gSaveBlock2.battleTower.battleTowerTrainerId < 50) + { + fixedIV = 15; + battleMonsOffset = 90; + } + else if (gSaveBlock2.battleTower.battleTowerTrainerId < 60) + { + fixedIV = 18; + battleMonsOffset = 120; + } + else if (gSaveBlock2.battleTower.battleTowerTrainerId < 70) + { + fixedIV = 21; + battleMonsOffset = 150; + } + else if (gSaveBlock2.battleTower.battleTowerTrainerId < 80) + { + fixedIV = 31; + battleMonsOffset = 180; + } + else if (gSaveBlock2.battleTower.battleTowerTrainerId < BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID) + { + fixedIV = 31; + battleMonsOffset = 200; + monPoolSize = 100; + } + else if (gSaveBlock2.battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID) + { + // Load E-Reader trainer's party. + for (partyIndex = 0; partyIndex < 3; partyIndex++) + { + sub_803ADE8(&gEnemyParty[partyIndex], &gSaveBlock2.battleTower.ereaderTrainer.party[partyIndex]); + } + + return; + } + else + { + // Load a battle tower record's party. (From record mixing) + for (partyIndex = 0; partyIndex < 3; partyIndex++) + { + sub_803ADE8( + &gEnemyParty[partyIndex], + &gSaveBlock2.battleTower.records[gSaveBlock2.battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].party[partyIndex]); + } + + return; + } + + // Use the appropriate list of pokemon and level depending on the + // current challenge type. (level 50 or level 100 challenge) + if (gSaveBlock2.battleTower.battleTowerLevelType != 0) + { + battleTowerMons = gBattleTowerLevel100Mons; + level = 100; + } + else + { + battleTowerMons = gBattleTowerLevel50Mons; + level = 50; + } + + teamFlags = gBattleTowerTrainers[gSaveBlock2.battleTower.battleTowerTrainerId].teamFlags; + + // Attempt to fill the trainer's party with random Pokemon until 3 have been + // successfully chosen. The trainer's party may not have duplicate pokemon species + // or duplicate held items. Each pokemon must have all of the trainer's team flags + // set, as well. If any of those conditions are not met, then the loop starts over + // and another pokemon is chosen at random. + partyIndex = 0; + while (partyIndex != 3) + { + // Pick a random pokemon index based on the number of pokemon available to choose from + // and the starting offset in the battle tower pokemon array. + s32 battleMonIndex = ((Random() & 0xFF) * monPoolSize) / 256 + battleMonsOffset; + + // Ensure the chosen pokemon has compatible team flags with the trainer. + if (teamFlags == 0 || (battleTowerMons[battleMonIndex].teamFlags & teamFlags) == teamFlags) + { + // Ensure this pokemon species isn't a duplicate. + for (i = 0; i < partyIndex; i++) + { + if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES, NULL) == battleTowerMons[battleMonIndex].species) + break; + } + + if (i != partyIndex) + continue; + + // Ensure this pokemon's held item isn't a duplicate. + for (i = 0; i < partyIndex; i++) + { + if (GetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, NULL) != 0 + && GetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, NULL) == sBattleTowerHeldItems[battleTowerMons[battleMonIndex].heldItem]) + { + break; + } + } + + if (i != partyIndex) + continue; + + // Ensure this exact pokemon index isn't a duplicate. This check doesn't seem necessary + // because the species and held items were already checked directly above. Perhaps this + // is leftover code before the logic for duplicate species and held items was added. + for (i = 0; i < partyIndex && chosenMonIndices[i] != battleMonIndex; i++); + + if (i != partyIndex) + continue; + + chosenMonIndices[partyIndex] = battleMonIndex; + + // Place the chosen pokemon into the trainer's party. + CreateMonWithEVSpread( + &gEnemyParty[partyIndex], + battleTowerMons[battleMonIndex].species, + level, + fixedIV, + battleTowerMons[battleMonIndex].evSpread); + + // Give the chosen pokemon its specified moves. + for (i = 0; i < 4; i++) + { + SetMonMoveSlot(&gEnemyParty[partyIndex], battleTowerMons[battleMonIndex].moves[i], i); + if (battleTowerMons[battleMonIndex].moves[i] == MOVE_FRUSTRATION) + { + // MOVE_FRUSTRATION is more powerful the lower the pokemon's friendship is. + friendship = 0; + } + } + + SetMonData(&gEnemyParty[partyIndex], MON_DATA_FRIENDSHIP, &friendship); + SetMonData(&gEnemyParty[partyIndex], MON_DATA_HELD_ITEM, (u8 *)&sBattleTowerHeldItems[battleTowerMons[battleMonIndex].heldItem]); + + // The pokemon was successfully added to the trainer's party, so it's safe to move on to + // the next party slot. + partyIndex++; + } + } + +} + +u32 CountBattleTowerBanlistCaught() +{ + s32 i; + u32 numCaught = 0; + + for (i = 0; gBattleTowerBannedSpecies[i] != 0xFFFF; i++) + { + if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleTowerBannedSpecies[i]), FLAG_GET_CAUGHT)) + { + numCaught++; + } + } + + return numCaught; +} + +u8 AppendBattleTowerBannedSpeciesName(u16 species, u8 curIndexToAppend, s32 numToAppend) +{ + if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_CAUGHT)) + { + curIndexToAppend++; + + switch (curIndexToAppend - 1) + { + case 0: + case 2: + case 4: + case 6: + case 8: + case 10: + if (numToAppend == curIndexToAppend) + { + StringAppend(gStringVar1, gUnknown_08400E23); + } + else if (numToAppend > curIndexToAppend) + { + StringAppend(gStringVar1, gUnknown_08400E29); + } + break; + case 1: + if (curIndexToAppend == numToAppend) + { + StringAppend(gStringVar1, gUnknown_08400E23); + } + else + { + StringAppend(gStringVar1, gUnknown_08400E29); + } + + StringAppend(gStringVar1, gUnknown_08400E30); + break; + case 3: + case 5: + case 7: + case 9: + default: + if (curIndexToAppend == numToAppend) + { + StringAppend(gStringVar1, gUnknown_08400E23); + } + else + { + StringAppend(gStringVar1, gUnknown_08400E29); + } + + StringAppend(gStringVar1, gUnknown_08400E2E); + break; + } + + StringAppend(gStringVar1, gSpeciesNames[species]); + } + + return curIndexToAppend; +} + +void CheckMonBattleTowerBanlist(u16 species, u16 heldItem, u16 hp, u8 battleTowerLevelType, u8 monLevel, u16 *validPartySpecies, u16 *validPartyHeldItems, u8 *numValid) +{ + s32 i; + u32 counter = 0; + + if (species == SPECIES_EGG || species == SPECIES_NONE) + return; + + while (1) + { + if (gBattleTowerBannedSpecies[counter] == 0xFFFF) + goto EXIT2; // Couldn't get the code to match without this GOTO + + if (gBattleTowerBannedSpecies[counter] == species) + break; + + counter++; + } + + if (gBattleTowerBannedSpecies[counter] != 0xFFFF) + return; + + EXIT2: + if (battleTowerLevelType == 0 && monLevel > 50) + return; + + for (i = 0; i < *numValid && validPartySpecies[i] != species ; i++); + if (i != *numValid) + return; + + if (heldItem != 0) + { + for (i = 0; i < *numValid && validPartyHeldItems[i] != heldItem ; i++); + if (i != *numValid) + return; + } + + validPartySpecies[*numValid] = species; + validPartyHeldItems[*numValid] = heldItem; + *numValid = *numValid + 1; +} + +void CheckPartyBattleTowerBanlist(void) +{ + s32 i; + u16 species2; + u16 heldItem; + u8 level; + u16 hp; + u32 numBanlistCaught; + u16 validPartySpecies[6]; + u16 validPartyHeldItems[6]; + u8 counter; + + counter = 0; + + for (i = 0; i < PARTY_SIZE; i++) + { + species2 = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2); + heldItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM); + level = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL); + hp = GetMonData(&gPlayerParty[i], MON_DATA_HP); + + CheckMonBattleTowerBanlist(species2, heldItem, hp, gScriptResult, level, validPartySpecies, validPartyHeldItems, &counter); + } + + if (counter < 3) + { + gStringVar1[0] = 0xFF; + gSpecialVar_0x8004 = 1; + counter = 0; + + numBanlistCaught = CountBattleTowerBanlistCaught(); + + for (i = 0; gBattleTowerBannedSpecies[i] != 0xFFFF; i++) + { + counter = AppendBattleTowerBannedSpeciesName(gBattleTowerBannedSpecies[i], counter, numBanlistCaught); + } + + if (counter == 0) + { + StringAppend(gStringVar1, gUnknown_08400E2C); + StringAppend(gStringVar1, gUnknown_08400E32); + return; + } + + if (1 & counter) + StringAppend(gStringVar1, gUnknown_08400E2E); + else + StringAppend(gStringVar1, gUnknown_08400E2C); + + StringAppend(gStringVar1, gUnknown_08400E36); + } + else + { + gSpecialVar_0x8004 = 0; + gSaveBlock2.battleTower.battleTowerLevelType = gScriptResult; + } +} + +void PrintBattleTowerTrainerMessage(u16 *easyChat) +{ + sub_80EB544(gStringVar4, easyChat, 2, 3); +} + +void PrintBattleTowerTrainerGreeting(void) +{ + if (gSaveBlock2.battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID) + { + PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.ereaderTrainer.greeting.easyChat); + } + else if (gSaveBlock2.battleTower.battleTowerTrainerId < BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID) + { + PrintBattleTowerTrainerMessage((u16 *)gBattleTowerTrainers[gSaveBlock2.battleTower.battleTowerTrainerId].greeting.easyChat); + } + else + { + PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.records[gSaveBlock2.battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].greeting.easyChat); + } +} + +void sub_81354CC(void) +{ + s32 i; + u16 heldItem; + + switch (gSpecialVar_0x8004) + { + case 0: + break; + case 1: + for (i = 0; i < PARTY_SIZE; i++) + { + heldItem = GetMonData(&gSaveBlock1.playerParty[i], MON_DATA_HELD_ITEM); + SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, (u8 *)&heldItem); + } + break; + case 2: + PrintEReaderTrainerFarewellMessage(); + break; + } + + SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); +} + +void sub_8135534(u8 taskId) +{ + if (IsBattleTransitionDone() == TRUE) + { + gMain.savedCallback = sub_81354CC; + SetMainCallback2(sub_800E7C4); + DestroyTask(taskId); + } +} + +void sub_813556C(void) +{ + s32 i; + u16 heldItem; + u8 transition; + + switch (gSpecialVar_0x8004) + { + case 0: + gBattleTypeFlags = (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_TRAINER); + gTrainerBattleOpponent = 0; + + FillBattleTowerTrainerParty(); + + CreateTask(sub_8135534, 1); + current_map_music_set__default_for_battle(0); + transition = BattleSetup_GetBattleTowerBattleTransition(); + BattleTransition_StartOnField(transition); + break; + case 1: + for (i = 0; i < PARTY_SIZE; i++) + { + heldItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM); + SetMonData(&gSaveBlock1.playerParty[i], MON_DATA_HELD_ITEM, (u8 *)&heldItem); + } + + CreateTask(sub_8135534, 1); + current_map_music_set__default_for_battle(0); + transition = BattleSetup_GetBattleTowerBattleTransition(); + BattleTransition_StartOnField(transition); + break; + case 2: + ZeroEnemyPartyMons(); + + for (i = 0; i < 3; i++) + { + sub_803ADE8(&gEnemyParty[i], &gSaveBlock2.battleTower.ereaderTrainer.party[i]); + } + + gBattleTypeFlags = (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_TRAINER); + gTrainerBattleOpponent = 0; + + CreateTask(sub_8135534, 1); + current_map_music_set__default_for_battle(0); + transition = BattleSetup_GetBattleTowerBattleTransition(); + BattleTransition_StartOnField(transition); + break; + } +} + +void sub_8135668(void) +{ + s32 i; + u8 battleTowerLevelType = gSaveBlock2.battleTower.battleTowerLevelType; + + switch (gSpecialVar_0x8004) + { + case 0: + ewram160FB = gSaveBlock2.battleTower.var_4AE[battleTowerLevelType]; + gSaveBlock2.battleTower.var_4AE[battleTowerLevelType] = gSpecialVar_0x8005; + break; + case 1: + gSaveBlock2.battleTower.battleTowerLevelType = gSpecialVar_0x8005; + break; + case 2: + gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType] = gSpecialVar_0x8005; + break; + case 3: + gSaveBlock2.battleTower.curStreakChallengesNum[battleTowerLevelType] = gSpecialVar_0x8005; + break; + case 4: + gSaveBlock2.battleTower.battleTowerTrainerId = gSpecialVar_0x8005; + break; + case 5: + for (i = 0; i < 3; i++) + { + gSaveBlock2.battleTower.selectedPartyMons[i] = gSelectedOrderFromParty[i]; + } + break; + case 6: + if (gSaveBlock2.battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID) + { + ClearEReaderTrainer(&gSaveBlock2.battleTower.ereaderTrainer); + } + + if (gSaveBlock2.battleTower.totalBattleTowerWins < 9999) + { + gSaveBlock2.battleTower.totalBattleTowerWins++; + } + + gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType]++; + sub_8135A3C(); + gScriptResult = gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType]; + + gStringVar1[0] = gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType] + 0xA1; + gStringVar1[1] = 0xFF; + break; + case 7: + if (gSaveBlock2.battleTower.curStreakChallengesNum[battleTowerLevelType] < 1430) + { + gSaveBlock2.battleTower.curStreakChallengesNum[battleTowerLevelType]++; + } + + sub_8135A3C(); + gScriptResult = gSaveBlock2.battleTower.curStreakChallengesNum[battleTowerLevelType]; + break; + case 8: + gSaveBlock2.battleTower.unk_554 = gSpecialVar_0x8005; + break; + case 9: + break; + case 10: + SetGameStat(GAME_STAT_BATTLE_TOWER_BEST_STREAK, gSaveBlock2.battleTower.bestBattleTowerWinStreak); + break; + case 11: + if (gSaveBlock2.battleTower.var_4AE[battleTowerLevelType] != 3) + { + ResetBattleTowerStreak(battleTowerLevelType); + } + break; + case 12: + gSaveBlock2.battleTower.var_4AE[battleTowerLevelType] = ewram160FB; + break; + case 13: + gSaveBlock2.battleTower.currentWinStreaks[battleTowerLevelType] = GetCurrentBattleTowerWinStreak(battleTowerLevelType); + break; + case 14: + gSaveBlock2.battleTower.lastStreakLevelType = gSaveBlock2.battleTower.battleTowerLevelType; + break; + } +} + +void sub_81358A4(void) +{ + u8 battleTowerLevelType = gSaveBlock2.battleTower.battleTowerLevelType; + + switch (gSpecialVar_0x8004) + { + case 0: + gScriptResult = gSaveBlock2.battleTower.var_4AE[battleTowerLevelType]; + break; + case 1: + gScriptResult = gSaveBlock2.battleTower.battleTowerLevelType; + break; + case 2: + gScriptResult = gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType]; + break; + case 3: + gScriptResult = gSaveBlock2.battleTower.curStreakChallengesNum[battleTowerLevelType]; + break; + case 4: + gScriptResult = gSaveBlock2.battleTower.battleTowerTrainerId; + break; + case 5: + case 6: + case 7: + break; + case 8: + gScriptResult = gSaveBlock2.battleTower.unk_554; + break; + case 9: + gScriptResult = GetCurrentBattleTowerWinStreak(battleTowerLevelType); + break; + case 10: + SetGameStat(GAME_STAT_BATTLE_TOWER_BEST_STREAK, gSaveBlock2.battleTower.bestBattleTowerWinStreak); + break; + case 11: + ResetBattleTowerStreak(battleTowerLevelType); + break; + case 12: + gSaveBlock2.battleTower.var_4AE[battleTowerLevelType] = ewram160FB; + break; + case 13: + gSaveBlock2.battleTower.currentWinStreaks[battleTowerLevelType] = GetCurrentBattleTowerWinStreak(battleTowerLevelType); + break; + case 14: + gSaveBlock2.battleTower.lastStreakLevelType = gSaveBlock2.battleTower.battleTowerLevelType; + break; + } +} + +void sub_8135A14(void) +{ + s32 i; + + for (i = 0; i < 3; i++) + { + gSelectedOrderFromParty[i] = gSaveBlock2.battleTower.selectedPartyMons[i]; + } + + ReducePlayerPartyToThree(); +} + +#ifdef NONMATCHING +void sub_8135A3C(void) +{ + u8 battleTowerLevelType = gSaveBlock2.battleTower.battleTowerLevelType; + u16 winStreak = GetCurrentBattleTowerWinStreak(battleTowerLevelType); + + if (gSaveBlock2.battleTower.recordWinStreaks[battleTowerLevelType] < winStreak) + { + gSaveBlock2.battleTower.recordWinStreaks[battleTowerLevelType] = winStreak; + } + + if (gSaveBlock2.battleTower.recordWinStreaks[0] > gSaveBlock2.battleTower.recordWinStreaks[1]) + { + u16 streak = gSaveBlock2.battleTower.recordWinStreaks[0]; + SetGameStat(GAME_STAT_BATTLE_TOWER_BEST_STREAK, streak); + if (streak > 9999) + { + gSaveBlock2.battleTower.bestBattleTowerWinStreak = 9999; + } + else + { + gSaveBlock2.battleTower.bestBattleTowerWinStreak = streak; + } + } + else + { + u16 streak = gSaveBlock2.battleTower.recordWinStreaks[1]; + SetGameStat(GAME_STAT_BATTLE_TOWER_BEST_STREAK, streak); + if (streak > 9999) + { + gSaveBlock2.battleTower.bestBattleTowerWinStreak = 9999; + } + else + { + gSaveBlock2.battleTower.bestBattleTowerWinStreak = streak; + } + } +} +#else +__attribute__((naked)) +void sub_8135A3C(void) +{ + asm(".syntax unified\n\ + push {r4-r6,lr}\n\ + ldr r6, _08135A84 @ =gSaveBlock2\n\ + ldr r1, _08135A88 @ =0x00000554\n\ + adds r0, r6, r1\n\ + ldrb r4, [r0]\n\ + lsls r4, 31\n\ + lsrs r4, 31\n\ + adds r0, r4, 0\n\ + bl GetCurrentBattleTowerWinStreak\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ + lsls r4, 1\n\ + movs r3, 0xAC\n\ + lsls r3, 3\n\ + adds r2, r6, r3\n\ + adds r4, r2\n\ + ldrh r0, [r4]\n\ + cmp r0, r5\n\ + bcs _08135A66\n\ + strh r5, [r4]\n\ +_08135A66:\n\ + ldr r0, _08135A8C @ =0x00000562\n\ + adds r1, r6, r0\n\ + ldrh r0, [r2]\n\ + ldrh r3, [r1]\n\ + cmp r0, r3\n\ + bls _08135A94\n\ + adds r5, r0, 0\n\ + movs r0, 0x20\n\ + adds r1, r5, 0\n\ + bl SetGameStat\n\ + ldr r1, _08135A90 @ =0x0000270f\n\ + cmp r5, r1\n\ + bhi _08135AA4\n\ + b _08135AB4\n\ + .align 2, 0\n\ +_08135A84: .4byte gSaveBlock2\n\ +_08135A88: .4byte 0x00000554\n\ +_08135A8C: .4byte 0x00000562\n\ +_08135A90: .4byte 0x0000270f\n\ +_08135A94:\n\ + ldrh r5, [r1]\n\ + movs r0, 0x20\n\ + adds r1, r5, 0\n\ + bl SetGameStat\n\ + ldr r1, _08135AAC @ =0x0000270f\n\ + cmp r5, r1\n\ + bls _08135AB4\n\ +_08135AA4:\n\ + ldr r2, _08135AB0 @ =0x00000572\n\ + adds r0, r6, r2\n\ + strh r1, [r0]\n\ + b _08135ABA\n\ + .align 2, 0\n\ +_08135AAC: .4byte 0x0000270f\n\ +_08135AB0: .4byte 0x00000572\n\ +_08135AB4:\n\ + ldr r3, _08135AC0 @ =0x00000572\n\ + adds r0, r6, r3\n\ + strh r5, [r0]\n\ +_08135ABA:\n\ + pop {r4-r6}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_08135AC0: .4byte 0x00000572\n\ + .syntax divided\n"); +} +#endif // NONMATCHING + +void sub_8135AC4(void) +{ + s32 i; + u8 trainerClass; + struct BattleTowerRecord *playerRecord = &gSaveBlock2.battleTower.playerRecord; + u8 battleTowerLevelType = gSaveBlock2.battleTower.battleTowerLevelType; + + if (gSaveBlock2.playerGender != MALE) + { + trainerClass = sFemaleTrainerClasses[(gSaveBlock2.playerTrainerId[0] + gSaveBlock2.playerTrainerId[1] + + gSaveBlock2.playerTrainerId[2] + gSaveBlock2.playerTrainerId[3]) % 20u]; + } + else + { + trainerClass = sMaleTrainerClasses[(gSaveBlock2.playerTrainerId[0] + gSaveBlock2.playerTrainerId[1] + + gSaveBlock2.playerTrainerId[2] + gSaveBlock2.playerTrainerId[3]) % 30u]; + } + + playerRecord->battleTowerLevelType = battleTowerLevelType; + playerRecord->trainerClass = trainerClass; + + copy_word_to_mem(playerRecord->trainerId, gSaveBlock2.playerTrainerId); + StringCopy8(playerRecord->name, gSaveBlock2.playerName); + + playerRecord->winStreak = GetCurrentBattleTowerWinStreak(battleTowerLevelType); + + for (i = 0; i < 6; i++) + { + playerRecord->greeting.easyChat[i] = gSaveBlock1.easyChats.unk2B28[i]; + } + + for (i = 0; i < 3; i++) + { + sub_803AF78(&gUnknown_030042FC[gSaveBlock2.battleTower.selectedPartyMons[i]], &playerRecord->party[i]); + } + + SetBattleTowerRecordChecksum(&gSaveBlock2.battleTower.playerRecord); + sub_8135A3C(); +} + +void sub_8135BA0(void) +{ + u8 battleTowerLevelType = gSaveBlock2.battleTower.battleTowerLevelType; + + if (gSpecialVar_0x8004 == 3 || gSpecialVar_0x8004 == 0) + { + if (gSaveBlock2.battleTower.curStreakChallengesNum[battleTowerLevelType] > 1 + || gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType] > 1) + { + sub_8135AC4(); + } + } + + sub_8135CFC(); + + gSaveBlock2.battleTower.battleOutcome = gBattleOutcome; + + if (gSpecialVar_0x8004 != 3) + { + gSaveBlock2.battleTower.var_4AE[battleTowerLevelType] = gSpecialVar_0x8004; + } + + VarSet(VAR_0x4000, 0); + gSaveBlock2.battleTower.unk_554 = 1; + TrySavingData(EREADER_SAVE); +} + +void BattleTower_SoftReset(void) +{ + DoSoftReset(); +} + +void ValidateBattleTowerRecordChecksums(void) +{ + u32 i; + s32 recordIndex; + struct BattleTowerRecord *record; + u32 checksum; + + checksum = 0; + for (i = 0; i < (sizeof(struct BattleTowerRecord) / sizeof(u32)) - 1; i++) + { + checksum += ((u32 *)&gSaveBlock2.battleTower.playerRecord)[i]; + } + + if (gSaveBlock2.battleTower.playerRecord.checksum != checksum) + { + ClearBattleTowerRecord(&gSaveBlock2.battleTower.playerRecord); + } + + for (recordIndex = 0; recordIndex < 5; recordIndex++) + { + record = &gSaveBlock2.battleTower.records[recordIndex]; + checksum = 0; + for (i = 0; i < (sizeof(struct BattleTowerRecord) / sizeof(u32)) - 1; i++) + { + checksum += ((u32 *)record)[i]; + } + + if (gSaveBlock2.battleTower.records[recordIndex].checksum != checksum) + { + ClearBattleTowerRecord(&gSaveBlock2.battleTower.records[recordIndex]); + } + } +} + +void SetBattleTowerRecordChecksum(struct BattleTowerRecord *record) +{ + u32 i; + + record->checksum = 0; + for (i = 0; i < (sizeof(struct BattleTowerRecord) / sizeof(u32)) - 1; i++) + { + record->checksum += ((u32 *)record)[i]; + } +} + +void ClearBattleTowerRecord(struct BattleTowerRecord *record) +{ + u32 i; + + for (i = 0; i < sizeof(struct BattleTowerRecord) / sizeof(u32); i++) + { + ((u32 *)record)[i] = 0; + } +} + +void sub_8135CFC(void) +{ + s32 i; + + get_trainer_name(gSaveBlock2.battleTower.defeatedByTrainerName); + gSaveBlock2.battleTower.defeatedBySpecies = gBattleMons[1].species; + gSaveBlock2.battleTower.firstMonSpecies = gBattleMons[0].species; + + for (i = 0; i < POKEMON_NAME_LENGTH; i++) + { + gSaveBlock2.battleTower.firstMonNickname[i] = gBattleMons[0].nickname[i]; + } +} + +u16 GetCurrentBattleTowerWinStreak(u8 battleTowerLevelType) +{ + u16 winStreak = ((gSaveBlock2.battleTower.curStreakChallengesNum[battleTowerLevelType] - 1) * 7 - 1) + + gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType]; + + if (winStreak > 9999) + { + return 9999; + } + + return winStreak; +} + +#ifdef NONMATCHING +void DetermineBattleTowerPrize(void) +{ + u16 prizeItem; + struct SaveBlock2 *saveBlock = &gSaveBlock2; + u8 battleTowerLevelType = saveBlock->battleTower.battleTowerLevelType; + + if (saveBlock->battleTower.curStreakChallengesNum[battleTowerLevelType] - 1 > 5) + { + prizeItem = sLongStreakPrizes[Random() % ARRAY_COUNT(sLongStreakPrizes)]; + } + else + { + prizeItem = sShortStreakPrizes[Random() % ARRAY_COUNT(sShortStreakPrizes)]; + } + + saveBlock->battleTower.prizeItem = prizeItem; +} +#else +__attribute__((naked)) +void DetermineBattleTowerPrize(void) +{ + asm(".syntax unified\n\ + push {r4,r5,lr}\n\ + ldr r5, _08135DB0 @ =gSaveBlock2\n\ + ldr r1, _08135DB4 @ =0x00000554\n\ + adds r0, r5, r1\n\ + ldrb r0, [r0]\n\ + lsls r0, 31\n\ + lsrs r0, 31\n\ + lsls r0, 1\n\ + ldr r2, _08135DB8 @ =0x0000055c\n\ + adds r1, r5, r2\n\ + adds r0, r1\n\ + ldrh r0, [r0]\n\ + subs r0, 0x1\n\ + cmp r0, 0x5\n\ + ble _08135DC0\n\ + bl Random\n\ + ldr r4, _08135DBC @ =sLongStreakPrizes\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0x9\n\ + b _08135DCC\n\ + .align 2, 0\n\ +_08135DB0: .4byte gSaveBlock2\n\ +_08135DB4: .4byte 0x00000554\n\ +_08135DB8: .4byte 0x0000055c\n\ +_08135DBC: .4byte sLongStreakPrizes\n\ +_08135DC0:\n\ + bl Random\n\ + ldr r4, _08135DE8 @ =sShortStreakPrizes\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0x6\n\ +_08135DCC:\n\ + bl __umodsi3\n\ + lsls r0, 16\n\ + lsrs r0, 15\n\ + adds r0, r4\n\ + ldrh r1, [r0]\n\ + movs r2, 0xAD\n\ + lsls r2, 3\n\ + adds r0, r5, r2\n\ + strh r1, [r0]\n\ + pop {r4,r5}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_08135DE8: .4byte sShortStreakPrizes\n\ + .syntax divided\n"); +} +#endif // NONMATCHING + +void GiveBattleTowerPrize(void) +{ + u8 battleTowerLevelType = gSaveBlock2.battleTower.battleTowerLevelType; + + if (AddBagItem(gSaveBlock2.battleTower.prizeItem, 1) == TRUE) + { + CopyItemName(gSaveBlock2.battleTower.prizeItem, gStringVar1); + gScriptResult = 1; + } + else + { + gScriptResult = 0; + gSaveBlock2.battleTower.var_4AE[battleTowerLevelType] = 6; + } +} + +void AwardBattleTowerRibbons() +{ + s32 i; + u32 partyIndex; + struct Pokemon *pokemon; + u8 ribbonType; + u8 battleTowerLevelType = gSaveBlock2.battleTower.battleTowerLevelType; + + ribbonType = MON_DATA_WINNING_RIBBON; + if (battleTowerLevelType != 0) + { + ribbonType = MON_DATA_VICTORY_RIBBON; + } + + gScriptResult = 0; + + if (GetCurrentBattleTowerWinStreak(battleTowerLevelType) > 55) + { + for (i = 0; i < 3; i++) + { + partyIndex = gSaveBlock2.battleTower.selectedPartyMons[i] - 1; + pokemon = &gPlayerParty[partyIndex]; + if (!GetMonData(pokemon, ribbonType)) + { + gScriptResult = 1; + SetMonData(pokemon, ribbonType, (u8 *)&gScriptResult); + } + } + } + + if (gScriptResult != 0) + { + IncrementGameStat(GAME_STAT_RECEIVED_RIBBONS); + } +} + +// This is a leftover debugging function that is used to populate the E-Reader +// trainer with the player's current data. +void Debug_FillEReaderTrainerWithPlayerData(void) +{ + struct BattleTowerEReaderTrainer *ereaderTrainer; + s32 i; + s32 j; + + ereaderTrainer = &gSaveBlock2.battleTower.ereaderTrainer; + + if (gSaveBlock2.playerGender != MALE) + { + ereaderTrainer->trainerClass = sFemaleTrainerClasses[(gSaveBlock2.playerTrainerId[0] + gSaveBlock2.playerTrainerId[1] + + gSaveBlock2.playerTrainerId[2] + gSaveBlock2.playerTrainerId[3]) % 20u]; + } + else + { + ereaderTrainer->trainerClass = sMaleTrainerClasses[(gSaveBlock2.playerTrainerId[0] + gSaveBlock2.playerTrainerId[1] + + gSaveBlock2.playerTrainerId[2] + gSaveBlock2.playerTrainerId[3]) % 30u]; + } + + copy_word_to_mem(ereaderTrainer->trainerId, gSaveBlock2.playerTrainerId); + StringCopy8(ereaderTrainer->name, gSaveBlock2.playerName); + + ereaderTrainer->winStreak = 1; + + j = 7; + for (i = 0; i < 6; i++) + { + ereaderTrainer->greeting.easyChat[i] = gSaveBlock1.easyChats.unk2B28[i]; + ereaderTrainer->farewellPlayerLost.easyChat[i] = j; + ereaderTrainer->farewellPlayerWon.easyChat[i] = j + 6; + j++; + } + + for (i = 0; i < 3; i++) + { + sub_803AF78(&gPlayerParty[i], &ereaderTrainer->party[i]); + } + + SetEReaderTrainerChecksum(ereaderTrainer); +} + +u8 GetEReaderTrainerPicIndex(void) +{ + return gTrainerClassToPicIndex[gSaveBlock2.battleTower.ereaderTrainer.trainerClass]; +} + +u8 GetEReaderTrainerClassNameIndex(void) +{ + return gTrainerClassToNameIndex[gSaveBlock2.battleTower.ereaderTrainer.trainerClass]; +} + +void SetEReaderTrainerName(u8 *trainerName) +{ + s32 i; + + for (i = 0; i < 7; i++) + { + trainerName[i] = gSaveBlock2.battleTower.ereaderTrainer.name[i]; + } + + trainerName[i] = 0xFF; +} + +// Checks if the saved E-Reader trainer is valid. +void ValidateEReaderTrainer(void) +{ + u32 i; + u32 checksum; + struct BattleTowerEReaderTrainer *ereaderTrainer; + + gScriptResult = 0; + ereaderTrainer = &gSaveBlock2.battleTower.ereaderTrainer; + + checksum = 0; + for (i = 0; i < sizeof(struct BattleTowerEReaderTrainer) / sizeof(u32) - 1; i++) + { + checksum |= ((u32 *)ereaderTrainer)[i]; + } + + if (checksum == 0) + { + gScriptResult = 1; + return; + } + + checksum = 0; + for (i = 0; i < sizeof(struct BattleTowerEReaderTrainer) / sizeof(u32) - 1; i++) + { + checksum += ((u32 *)ereaderTrainer)[i]; + } + + if (gSaveBlock2.battleTower.ereaderTrainer.checksum != checksum) + { + ClearEReaderTrainer(&gSaveBlock2.battleTower.ereaderTrainer); + gScriptResult = 1; + } +} + +void SetEReaderTrainerChecksum(struct BattleTowerEReaderTrainer *ereaderTrainer) +{ + s32 i; + + ereaderTrainer->checksum = 0; + for (i = 0; i < sizeof(struct BattleTowerEReaderTrainer) / sizeof(u32) - 1; i++) + { + ereaderTrainer->checksum += ((u32 *)ereaderTrainer)[i]; + } +} + +void ClearEReaderTrainer(struct BattleTowerEReaderTrainer *ereaderTrainer) +{ + u32 i; + + for (i = 0; i < sizeof(struct BattleTowerEReaderTrainer) / sizeof(u32); i++) + { + ((u32 *)ereaderTrainer)[i] = 0; + } +} + +void PrintEReaderTrainerGreeting(void) +{ + PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.ereaderTrainer.greeting.easyChat); +} + +void PrintEReaderTrainerFarewellMessage(void) +{ + if (gBattleOutcome == BATTLE_DREW) + { + gStringVar4[0] = 0xFF; + } + else if (gBattleOutcome == BATTLE_WON) + { + PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.ereaderTrainer.farewellPlayerWon.easyChat); + } + else + { + PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.ereaderTrainer.farewellPlayerLost.easyChat); + } +} + +void sub_813610C(void) +{ + s32 i; + + for (i = 0; i < 2; i++) + { + if (gSaveBlock2.battleTower.var_4AE[i] == 1) + { + sub_80BFD20(); + } + } +} + +#if GERMAN +u8 de_sub_81364AC(void) +{ + if (gSaveBlock2.battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID) + { + return gSaveBlock2.battleTower.ereaderTrainer.trainerClass; + } + else if (gSaveBlock2.battleTower.battleTowerTrainerId >= BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID) + { + return gSaveBlock2.battleTower.records[gSaveBlock2.battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].trainerClass; + } + else + { + return gBattleTowerTrainers[gSaveBlock2.battleTower.battleTowerTrainerId].trainerClass; + } +} + +u8 de_sub_81364F8(void) +{ + return gSaveBlock2.battleTower.ereaderTrainer.trainerClass; +} +#endif -- cgit v1.2.3 From 24b1dee67f5d91272f432cd2aee4ee92125fcbcb Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Thu, 2 Nov 2017 19:42:01 -0700 Subject: Use void for functions that have no args --- src/field/battle_tower.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/field') diff --git a/src/field/battle_tower.c b/src/field/battle_tower.c index 90ecc457a..06d692eae 100644 --- a/src/field/battle_tower.c +++ b/src/field/battle_tower.c @@ -817,7 +817,7 @@ void SetBattleTowerTrainerGfxId(u8 trainerIndex) VarSet(0x4010, MAP_OBJ_GFX_BOY_1); } -void SetEReaderTrainerGfxId() +void SetEReaderTrainerGfxId(void) { SetBattleTowerTrainerGfxId(BATTLE_TOWER_EREADER_TRAINER_ID); } @@ -1380,7 +1380,7 @@ void FillBattleTowerTrainerParty(void) } -u32 CountBattleTowerBanlistCaught() +u32 CountBattleTowerBanlistCaught(void) { s32 i; u32 numCaught = 0; @@ -2160,7 +2160,7 @@ void GiveBattleTowerPrize(void) } } -void AwardBattleTowerRibbons() +void AwardBattleTowerRibbons(void) { s32 i; u32 partyIndex; -- cgit v1.2.3 From 67ea254871134d850e013ee72bd4275b40e8091b Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Fri, 3 Nov 2017 19:09:40 -0400 Subject: BG_CHAR_ADDR and BG_SCREEN_ADDR recast fixes --- src/field/pokeblock.c | 2 +- src/field/slot_machine.c | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) (limited to 'src/field') diff --git a/src/field/pokeblock.c b/src/field/pokeblock.c index 34f4ffa35..2ee1a23ae 100644 --- a/src/field/pokeblock.c +++ b/src/field/pokeblock.c @@ -374,7 +374,7 @@ static bool8 sub_810B998(void) switch (ewram[0x1ffff]) { case 0: - LZDecompressVram(gMenuPokeblock_Gfx, (u8 *)BG_CHAR_ADDR(2)); + LZDecompressVram(gMenuPokeblock_Gfx, BG_CHAR_ADDR(2)); ewram[0x1ffff]++; break; case 1: diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index e8e4f271b..153970337 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -94,7 +94,7 @@ void sub_8106448(void) { } void sub_81064B8(void) { - CpuCopy16(gUnknown_08E95AB8, (void *) BG_SCREEN_ADDR(29), 20 * 32 * 2); + CpuCopy16(gUnknown_08E95AB8, BG_SCREEN_ADDR(29), 20 * 32 * 2); LoadSlotMachineWheelOverlay(); } @@ -102,7 +102,7 @@ static void LoadSlotMachineWheelOverlay(void) { s16 x, y, dx; u16 *screen; - screen = (u16 *) BG_SCREEN_ADDR(30); + screen = BG_SCREEN_ADDR(30); for (x = 4; x < 18; x += 5) { @@ -125,7 +125,7 @@ static void LoadSlotMachineWheelOverlay(void) { } void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4) { - u16 *vram = (u16 *) BG_SCREEN_ADDR(29); + u16 *vram = BG_SCREEN_ADDR(29); vram[15 * 32 + arg0] = arg1; vram[15 * 32 + 1 + arg0] = arg2; @@ -137,9 +137,9 @@ void sub_81065DC(void) { s16 y, x; u16 *screen; - CpuCopy16(gUnknown_08E95FB8, (void *) BG_SCREEN_ADDR(29), 20 * 32 * 2); + CpuCopy16(gUnknown_08E95FB8, BG_SCREEN_ADDR(29), 20 * 32 * 2); - screen = (u16 *) BG_SCREEN_ADDR(30); + screen = BG_SCREEN_ADDR(30); for (y = 0; y < 20; y++) { for (x = 0; x < 30; x++) -- cgit v1.2.3 From a5754b95e8a1803c87641e5bc485a3690fbcaef7 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Fri, 3 Nov 2017 22:35:38 -0700 Subject: Fix non-matching sub_80EEF34 and start more decomp --- src/field/use_pokeblock.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/field') diff --git a/src/field/use_pokeblock.c b/src/field/use_pokeblock.c index e946a9cfc..bac231856 100644 --- a/src/field/use_pokeblock.c +++ b/src/field/use_pokeblock.c @@ -244,7 +244,7 @@ static void sub_8136294(void) case 6: gUnknown_083DFEC4->unk76AA = 0; gUnknown_083DFEC4->unk87E0 = NULL; - gUnknown_083DFEC4->unk030C = 0x20; + gUnknown_083DFEC4->unk030C.val = 0x20; gUnknown_02039304->unk50++; break; case 7: -- cgit v1.2.3 From 581bab1360d5544101b52c0b7616e7fb16ed8a5d Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sat, 4 Nov 2017 20:24:50 -0400 Subject: more fixes --- src/field/party_menu.c | 10 +++++----- src/field/use_pokeblock.c | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) (limited to 'src/field') diff --git a/src/field/party_menu.c b/src/field/party_menu.c index a8c57b86d..7a519d737 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -2855,7 +2855,7 @@ void sub_806D5B8(u8 monIndex) ZeroFillWindowRect(&gUnknown_03004210, left, top, right, bottom); var1 = 0; - CpuFastSet(&var1, (void *)(OBJ_VRAM1 + monIndex * 0x400), 0x1000100); + CpuFastSet(&var1, OBJ_VRAM1 + monIndex * 0x400, 0x1000100); } void sub_806D668(u8 monIndex) @@ -2869,7 +2869,7 @@ void sub_806D668(u8 monIndex) ZeroFillWindowRect(&gUnknown_03004210, left, top, right, bottom); var1 = 0; - CpuFastSet(&var1, (void *)(OBJ_VRAM1 + 0x300 + monIndex * 0x400), 0x1000040); + CpuFastSet(&var1, OBJ_VRAM1 + 0x300 + monIndex * 0x400, 0x1000040); } bool8 LoadPartyMenuGraphics(u8 a) @@ -3460,7 +3460,7 @@ void PartyMenuDoPrintMonNickname(u8 monIndex, int b, const u8 *nameBuffer) u32 var1 = 0; CpuFastSet(&var1, gTileBuffer, 0x1000100); sub_8004E3C((struct WindowConfig *)&gWindowConfig_81E6CAC, gTileBuffer, nameBuffer); - CpuFastSet(gTileBuffer, (void *)(OBJ_VRAM1 + (monIndex * 0x400)), 128); + CpuFastSet(gTileBuffer, OBJ_VRAM1 + (monIndex * 0x400), 128); } void PrintPartyMenuMonNickname(u8 monIndex, u8 b, struct Pokemon *pokemon) @@ -3570,7 +3570,7 @@ void PartyMenuDoPrintLevel(u8 monIndex, u8 menuLayout, u8 level) var1 = 0; CpuFastSet(&var1, gUnknown_02039460, 0x1000020); sub_8004E3C((struct WindowConfig *)&gWindowConfig_81E6CAC, gUnknown_02039460 - 0x100 /*gTileBuffer*/, gStringVar1); - CpuFastSet(gUnknown_02039460, (void *)(OBJ_VRAM1 + 0x200 + (monIndex * 0x400)), 32); + CpuFastSet(gUnknown_02039460, OBJ_VRAM1 + 0x200 + (monIndex * 0x400), 32); } void PartyMenuPrintLevel(u8 monIndex, u8 menuLayout, struct Pokemon *pokemon) @@ -3664,7 +3664,7 @@ void PartyMenuDoPrintHP(u8 monIndex, u8 b, u16 currentHP, u16 maxHP) CpuFastSet(&var, gUnknown_02039460, 0x1000040); sub_8004E3C((struct WindowConfig *)&gWindowConfig_81E6CAC, gUnknown_02039460 - 0x100 /*gTileBuffer*/, gStringVar1); - CpuFastSet(gUnknown_02039460, (void *)(OBJ_VRAM1 + 0x300 + (monIndex * 0x400)), 64); + CpuFastSet(gUnknown_02039460, OBJ_VRAM1 + 0x300 + (monIndex * 0x400), 64); } void PartyMenuPrintHP(u8 monIndex, u8 b, struct Pokemon *pokemon) diff --git a/src/field/use_pokeblock.c b/src/field/use_pokeblock.c index e946a9cfc..5fbecec0d 100644 --- a/src/field/use_pokeblock.c +++ b/src/field/use_pokeblock.c @@ -22,10 +22,10 @@ #ifdef GERMAN extern const u16 ConditionUpDownPalette[16]; -extern const u32 ConditionUpDownTiles[0x80]; +extern const u8 ConditionUpDownTiles[0x200]; #else const u16 ConditionUpDownPalette[] = INCBIN_U16("graphics/misc/condition_up_down.gbapal"); -const u32 ConditionUpDownTiles[] = INCBIN_U32("graphics/misc/condition_up_down.4bpp"); +const u8 ConditionUpDownTiles[] = INCBIN_U8("graphics/misc/condition_up_down.4bpp"); #endif static const u32 sContestStatsMonData[] = { @@ -49,7 +49,7 @@ static const u8 *const sContextStatNames[] = { }; static const struct SpriteSheet gSpriteSheet_ConditionUpDown = { - (u8 *)ConditionUpDownTiles, + ConditionUpDownTiles, sizeof ConditionUpDownTiles, GFX_TAG_CONDITIONUPDOWN }; -- cgit v1.2.3 From 003d16e7a178e440c41f2bca365bf8f8f2a60b0e Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sat, 4 Nov 2017 21:44:50 -0400 Subject: finish first wave of fixes --- src/field/battle_tower.c | 8 ++++---- src/field/decoration.c | 2 +- src/field/decoration_inventory.c | 2 +- src/field/easy_chat.c | 2 +- src/field/field_effect.c | 4 ++-- src/field/field_ground_effect.c | 38 +++++++------------------------------- src/field/field_map_obj.c | 18 +++++++++--------- src/field/field_map_obj_helpers.c | 2 +- src/field/player_pc.c | 8 ++++---- src/field/trainer_see.c | 2 +- 10 files changed, 31 insertions(+), 55 deletions(-) (limited to 'src/field') diff --git a/src/field/battle_tower.c b/src/field/battle_tower.c index 06d692eae..1b5759f49 100644 --- a/src/field/battle_tower.c +++ b/src/field/battle_tower.c @@ -1370,7 +1370,7 @@ void FillBattleTowerTrainerParty(void) } SetMonData(&gEnemyParty[partyIndex], MON_DATA_FRIENDSHIP, &friendship); - SetMonData(&gEnemyParty[partyIndex], MON_DATA_HELD_ITEM, (u8 *)&sBattleTowerHeldItems[battleTowerMons[battleMonIndex].heldItem]); + SetMonData(&gEnemyParty[partyIndex], MON_DATA_HELD_ITEM, &sBattleTowerHeldItems[battleTowerMons[battleMonIndex].heldItem]); // The pokemon was successfully added to the trainer's party, so it's safe to move on to // the next party slot. @@ -1589,7 +1589,7 @@ void sub_81354CC(void) for (i = 0; i < PARTY_SIZE; i++) { heldItem = GetMonData(&gSaveBlock1.playerParty[i], MON_DATA_HELD_ITEM); - SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, (u8 *)&heldItem); + SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &heldItem); } break; case 2: @@ -1633,7 +1633,7 @@ void sub_813556C(void) for (i = 0; i < PARTY_SIZE; i++) { heldItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM); - SetMonData(&gSaveBlock1.playerParty[i], MON_DATA_HELD_ITEM, (u8 *)&heldItem); + SetMonData(&gSaveBlock1.playerParty[i], MON_DATA_HELD_ITEM, &heldItem); } CreateTask(sub_8135534, 1); @@ -2185,7 +2185,7 @@ void AwardBattleTowerRibbons(void) if (!GetMonData(pokemon, ribbonType)) { gScriptResult = 1; - SetMonData(pokemon, ribbonType, (u8 *)&gScriptResult); + SetMonData(pokemon, ribbonType, &gScriptResult); } } } diff --git a/src/field/decoration.c b/src/field/decoration.c index e067191e9..59c19c20a 100644 --- a/src/field/decoration.c +++ b/src/field/decoration.c @@ -1494,7 +1494,7 @@ const union AnimCmd *const gSpriteAnimTable_83EC930[] = { }; const struct SpriteFrameImage gSpriteImageTable_83EC934[] = { - {.data = (u8 *)&gUnknown_02038900.image, .size = sizeof gUnknown_02038900.image} + {.data = gUnknown_02038900.image, .size = sizeof(gUnknown_02038900.image)} }; const struct SpriteTemplate gSpriteTemplate_83EC93C = { diff --git a/src/field/decoration_inventory.c b/src/field/decoration_inventory.c index 083cb260c..687589373 100644 --- a/src/field/decoration_inventory.c +++ b/src/field/decoration_inventory.c @@ -8,7 +8,7 @@ #include "decoration.h" #include "decoration_inventory.h" -#define DECOR_INV(ptr) {.items = (u8 *)&ptr, .size = sizeof ptr} +#define DECOR_INV(ptr) {.items = ptr, .size = sizeof ptr} struct DecorationInventory const gDecorationInventories[] = { DECOR_INV(gSaveBlock1.decorDesk), diff --git a/src/field/easy_chat.c b/src/field/easy_chat.c index 2668b57dd..8e7413516 100644 --- a/src/field/easy_chat.c +++ b/src/field/easy_chat.c @@ -161,7 +161,7 @@ u16 unref_sub_80EB5E0(u16 arg0) { case EC_GROUP_POKEMON: // 0 case EC_GROUP_POKEMON_2: // 21 - chars = (u8 *) gSpeciesNames[word]; + chars = gSpeciesNames[word]; break; case EC_GROUP_MOVE_1: // 18 case EC_GROUP_MOVE_2: // 19 diff --git a/src/field/field_effect.c b/src/field/field_effect.c index d86d6e5cd..bd78fb632 100644 --- a/src/field/field_effect.c +++ b/src/field/field_effect.c @@ -37,7 +37,7 @@ const u16 gFieldEffectObjectPalette4[16] = INCBIN_U16("graphics/field_effect_obj const u32 gSpriteImage_839E474[] = INCBIN_U32("graphics/misc/pokecenter_monitor/0.4bpp"); const u32 gSpriteImage_839E534[] = INCBIN_U32("graphics/misc/pokecenter_monitor/1.4bpp"); const u32 gSpriteImage_839E5F4[] = INCBIN_U32("graphics/misc/big_hof_monitor.4bpp"); -const u32 gSpriteImage_839E7F4[] = INCBIN_U32("graphics/misc/small_hof_monitor.4bpp"); +const u8 gSpriteImage_839E7F4[] = INCBIN_U8("graphics/misc/small_hof_monitor.4bpp"); const u16 gFieldEffectObjectPalette5[16] = INCBIN_U16("graphics/field_effect_objects/palettes/05.gbapal"); // Graphics for the lights streaking past your Pokemon when it uses a field move. @@ -110,7 +110,7 @@ const struct SpriteFrameImage gSpriteImageTable_839F170[] = { }; const struct SpriteFrameImage gSpriteImageTable_839F178[] = { - {.data = (u8 *)gSpriteImage_839E7F4, .size = 0x200} // the macro breaks down here + {.data = gSpriteImage_839E7F4, .size = 0x200} // the macro breaks down here }; const struct Subsprite Unknown_39F180[] = { diff --git a/src/field/field_ground_effect.c b/src/field/field_ground_effect.c index 5af8ea3e3..25b678ff9 100644 --- a/src/field/field_ground_effect.c +++ b/src/field/field_ground_effect.c @@ -458,76 +458,52 @@ bool8 AreZCoordsCompatible(u8 a, u8 b) void GroundEffect_SpawnOnTallGrass(struct MapObject *mapObj, struct Sprite *sprite) { - u8 *ptr; - gFieldEffectArguments[0] = mapObj->coords2.x; gFieldEffectArguments[1] = mapObj->coords2.y; gFieldEffectArguments[2] = mapObj->elevation; gFieldEffectArguments[3] = 2; - gFieldEffectArguments[4] = (mapObj->localId << 8) | mapObj->mapNum; + gFieldEffectArguments[4] = mapObj->localId << 8 | mapObj->mapNum; gFieldEffectArguments[5] = mapObj->mapGroup; - - ptr = (u8 *)&gSaveBlock1; - gFieldEffectArguments[6] = ((u8)gSaveBlock1.location.mapNum << 8) - | (u8)gSaveBlock1.location.mapGroup; - + gFieldEffectArguments[6] = (u8)gSaveBlock1.location.mapNum << 8 | (u8)gSaveBlock1.location.mapGroup; gFieldEffectArguments[7] = 1; FieldEffectStart(FLDEFF_TALL_GRASS); } void sub_8063E94(struct MapObject *mapObj, struct Sprite *sprite) { - u8 *ptr; - gFieldEffectArguments[0] = mapObj->coords2.x; gFieldEffectArguments[1] = mapObj->coords2.y; gFieldEffectArguments[2] = mapObj->elevation; gFieldEffectArguments[3] = 2; - gFieldEffectArguments[4] = (mapObj->localId << 8) | mapObj->mapNum; + gFieldEffectArguments[4] = mapObj->localId << 8 | mapObj->mapNum; gFieldEffectArguments[5] = mapObj->mapGroup; - - ptr = (u8 *)&gSaveBlock1; - gFieldEffectArguments[6] = ((u8)gSaveBlock1.location.mapNum << 8) - | (u8)gSaveBlock1.location.mapGroup; - + gFieldEffectArguments[6] = (u8)gSaveBlock1.location.mapNum << 8 | (u8)gSaveBlock1.location.mapGroup; gFieldEffectArguments[7] = 0; FieldEffectStart(FLDEFF_TALL_GRASS); } void sub_8063EE0(struct MapObject *mapObj, struct Sprite *sprite) { - u8 *ptr; - gFieldEffectArguments[0] = mapObj->coords2.x; gFieldEffectArguments[1] = mapObj->coords2.y; gFieldEffectArguments[2] = mapObj->elevation; gFieldEffectArguments[3] = 2; - gFieldEffectArguments[4] = (mapObj->localId << 8) | mapObj->mapNum; + gFieldEffectArguments[4] = mapObj->localId << 8 | mapObj->mapNum; gFieldEffectArguments[5] = mapObj->mapGroup; - - ptr = (u8 *)&gSaveBlock1; - gFieldEffectArguments[6] = ((u8)gSaveBlock1.location.mapNum << 8) - | (u8)gSaveBlock1.location.mapGroup; - + gFieldEffectArguments[6] = (u8)gSaveBlock1.location.mapNum << 8 | (u8)gSaveBlock1.location.mapGroup; gFieldEffectArguments[7] = 1; FieldEffectStart(FLDEFF_LONG_GRASS); } void sub_8063F2C(struct MapObject *mapObj, struct Sprite *sprite) { - u8 *ptr; - gFieldEffectArguments[0] = mapObj->coords2.x; gFieldEffectArguments[1] = mapObj->coords2.y; gFieldEffectArguments[2] = mapObj->elevation; gFieldEffectArguments[3] = 2; gFieldEffectArguments[4] = (mapObj->localId << 8) | mapObj->mapNum; gFieldEffectArguments[5] = mapObj->mapGroup; - - ptr = (u8 *)&gSaveBlock1; - gFieldEffectArguments[6] = ((u8)gSaveBlock1.location.mapNum << 8) - | (u8)gSaveBlock1.location.mapGroup; - + gFieldEffectArguments[6] = (u8)gSaveBlock1.location.mapNum << 8 | (u8)gSaveBlock1.location.mapGroup; gFieldEffectArguments[7] = 0; FieldEffectStart(FLDEFF_LONG_GRASS); } diff --git a/src/field/field_map_obj.c b/src/field/field_map_obj.c index 094e70107..74ef3b7fe 100644 --- a/src/field/field_map_obj.c +++ b/src/field/field_map_obj.c @@ -2775,11 +2775,11 @@ void npc_by_local_id_and_map_set_field_1_bit_x20(u8 localId, u8 mapNum, u8 mapGr gMapObjects[mapObjectId].mapobj_bit_13 = d; } -void FieldObjectGetLocalIdAndMap(struct MapObject *mapObject, u8 *localId, u8 *mapNum, u8 *mapGroup) +void FieldObjectGetLocalIdAndMap(struct MapObject *mapObject, void *localId, void *mapNum, void *mapGroup) { - *localId = mapObject->localId; - *mapNum = mapObject->mapNum; - *mapGroup = mapObject->mapGroup; + *(u8 *)localId = mapObject->localId; + *(u8 *)mapNum = mapObject->mapNum; + *(u8 *)mapGroup = mapObject->mapGroup; } void sub_805BCC0(s16 x, s16 y) @@ -5187,7 +5187,7 @@ void FieldObjectCB_TreeDisguise(struct Sprite *sprite) mapObject = &gMapObjects[sprite->data0]; if (mapObject->mapobj_unk_21 == 0 || (mapObject->mapobj_unk_21 == 1 && sprite->data7 == 0)) { - FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]); + FieldObjectGetLocalIdAndMap(mapObject, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]); mapObject->mapobj_unk_1A = FieldEffectStart(FLDEFF_TREE_DISGUISE); mapObject->mapobj_unk_21 = 1; sprite->data7 ++; @@ -5207,7 +5207,7 @@ void FieldObjectCB_MountainDisguise(struct Sprite *sprite) mapObject = &gMapObjects[sprite->data0]; if (mapObject->mapobj_unk_21 == 0 || (mapObject->mapobj_unk_21 == 1 && sprite->data7 == 0)) { - FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]); + FieldObjectGetLocalIdAndMap(mapObject, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]); mapObject->mapobj_unk_1A = FieldEffectStart(FLDEFF_MOUNTAIN_DISGUISE); mapObject->mapobj_unk_21 = 1; sprite->data7 ++; @@ -7371,7 +7371,7 @@ bool8 sub_8062644(struct MapObject *mapObject, struct Sprite *sprite) bool8 do_exclamation_mark_bubble_1(struct MapObject *mapObject, struct Sprite *sprite) { - FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]); + FieldObjectGetLocalIdAndMap(mapObject, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]); FieldEffectStart(FLDEFF_EXCLAMATION_MARK_ICON_1); sprite->data2 = 1; return TRUE; @@ -7379,7 +7379,7 @@ bool8 do_exclamation_mark_bubble_1(struct MapObject *mapObject, struct Sprite *s bool8 do_exclamation_mark_bubble_2(struct MapObject *mapObject, struct Sprite *sprite) { - FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]); + FieldObjectGetLocalIdAndMap(mapObject, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]); FieldEffectStart(FLDEFF_EXCLAMATION_MARK_ICON_2); sprite->data2 = 1; return TRUE; @@ -7387,7 +7387,7 @@ bool8 do_exclamation_mark_bubble_2(struct MapObject *mapObject, struct Sprite *s bool8 do_heart_bubble(struct MapObject *mapObject, struct Sprite *sprite) { - FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]); + FieldObjectGetLocalIdAndMap(mapObject, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]); FieldEffectStart(FLDEFF_HEART_ICON); sprite->data2 = 1; return TRUE; diff --git a/src/field/field_map_obj_helpers.c b/src/field/field_map_obj_helpers.c index b453d3794..59e857aae 100644 --- a/src/field/field_map_obj_helpers.c +++ b/src/field/field_map_obj_helpers.c @@ -294,7 +294,7 @@ void sub_8064990(u8 a1, u8 dir) u32 oe_exec_and_other_stuff(u8 fieldEffectId, struct MapObject *mapObject) { - FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]); + FieldObjectGetLocalIdAndMap(mapObject, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]); return FieldEffectStart(fieldEffectId); } diff --git a/src/field/player_pc.c b/src/field/player_pc.c index 83e6dd221..d01829266 100644 --- a/src/field/player_pc.c +++ b/src/field/player_pc.c @@ -32,7 +32,7 @@ extern u8 sub_807D770(void); extern void sub_808B020(void); extern void sub_80F944C(void); -static EWRAM_DATA u8 *gPcItemMenuOptionOrder = NULL; +static EWRAM_DATA const u8 *gPcItemMenuOptionOrder = NULL; static u8 gPcItemMenuOptionsNum; @@ -211,14 +211,14 @@ void NewGameInitPCItems(void) void BedroomPC(void) { - gPcItemMenuOptionOrder = (u8 *)gBedroomPC_OptionOrder; + gPcItemMenuOptionOrder = gBedroomPC_OptionOrder; gPcItemMenuOptionsNum = 4; DisplayItemMessageOnField(CreateTask(TaskDummy, 0), gOtherText_WhatWillYouDo, InitPlayerPCMenu, 0); } void PlayerPC(void) { - gPcItemMenuOptionOrder = (u8 *)gPlayerPC_OptionOrder; + gPcItemMenuOptionOrder = gPlayerPC_OptionOrder; gPcItemMenuOptionsNum = 3; DisplayItemMessageOnField(CreateTask(TaskDummy, 0), gOtherText_WhatWillYouDo, InitPlayerPCMenu, 0); } @@ -1064,7 +1064,7 @@ static void Mailbox_DrawMailList(u8 taskId) // taskId is unused if(i != mailbox->count) { - StringCopy(gStringVar1, (u8 *)gSaveBlock1.mail[i + 6].playerName); + StringCopy(gStringVar1, gSaveBlock1.mail[i + 6].playerName); SanitizeNameString(gStringVar1); MenuPrint(gStringVar1, 0x15, yCoord + 2); } diff --git a/src/field/trainer_see.c b/src/field/trainer_see.c index 5a8ebbafc..85bd7ad0b 100644 --- a/src/field/trainer_see.c +++ b/src/field/trainer_see.c @@ -257,7 +257,7 @@ static bool8 sub_8084398(u8 taskId, struct Task *task, struct MapObject *trainer { u8 direction; - FieldObjectGetLocalIdAndMap(trainerObj, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]); + FieldObjectGetLocalIdAndMap(trainerObj, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]); FieldEffectStart(FLDEFF_EXCLAMATION_MARK_ICON_1); direction = GetFaceDirectionAnimId(trainerObj->mapobj_unk_18); FieldObjectSetSpecialAnim(trainerObj, direction); -- cgit v1.2.3 From 4cf701c5871a17f0bc580019e8d294bc1c84ebf3 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sun, 5 Nov 2017 01:34:52 -0400 Subject: move ewram defines to ewram.h. --- src/field/battle_tower.c | 4 +--- src/field/dewford_trend.c | 2 +- src/field/field_region_map.c | 4 +--- src/field/field_tasks.c | 4 ---- src/field/fldeff_softboiled.c | 7 +----- src/field/item_menu.c | 8 +------ src/field/party_menu.c | 6 ++--- src/field/pokeblock.c | 4 +--- src/field/region_map.c | 51 +++++++++++++++++++------------------------ src/field/shop.c | 7 ++---- src/field/tv.c | 4 +--- 11 files changed, 34 insertions(+), 67 deletions(-) (limited to 'src/field') diff --git a/src/field/battle_tower.c b/src/field/battle_tower.c index 1b5759f49..3e60d3a9a 100644 --- a/src/field/battle_tower.c +++ b/src/field/battle_tower.c @@ -24,6 +24,7 @@ #include "trainer.h" #include "tv.h" #include "vars.h" +#include "ewram.h" #if ENGLISH #include "../data/battle_tower/trainers.h" @@ -278,9 +279,6 @@ extern u8 gBattleOutcome; extern struct Pokemon gUnknown_030042FC[]; extern struct BattlePokemon gBattleMons[]; -#define ewram160FB (ewram[0x160FB]) - - void sub_8134548(void) { u8 var1 = 0; diff --git a/src/field/dewford_trend.c b/src/field/dewford_trend.c index aaf4dd66a..f47dbba08 100644 --- a/src/field/dewford_trend.c +++ b/src/field/dewford_trend.c @@ -6,7 +6,7 @@ #include "rng.h" #include "text.h" -extern u8 unk_2000000[]; +extern u8 ewram[]; extern u16 gScriptResult; extern u16 gSpecialVar_0x8004; diff --git a/src/field/field_region_map.c b/src/field/field_region_map.c index 7cb22e5df..e189fcf2c 100644 --- a/src/field/field_region_map.c +++ b/src/field/field_region_map.c @@ -7,6 +7,7 @@ #include "sprite.h" #include "strings2.h" #include "text.h" +#include "ewram.h" struct RegionMapStruct { @@ -24,9 +25,6 @@ struct UnkStruct u16 unk888; }; -extern u8 ewram[]; -#define unk_2000000 (*(struct UnkStruct *)(ewram)) - void FieldInitRegionMap(MainCallback callback) { SetVBlankCallback(NULL); diff --git a/src/field/field_tasks.c b/src/field/field_tasks.c index da6f162c2..767753da2 100644 --- a/src/field/field_tasks.c +++ b/src/field/field_tasks.c @@ -1,7 +1,3 @@ -// - -// - #include "global.h" #include "task.h" #include "main.h" diff --git a/src/field/fldeff_softboiled.c b/src/field/fldeff_softboiled.c index 22f9c13f5..b2c3d9bd1 100644 --- a/src/field/fldeff_softboiled.c +++ b/src/field/fldeff_softboiled.c @@ -9,6 +9,7 @@ #include "sprite.h" #include "strings.h" #include "task.h" +#include "ewram.h" struct Struct2001000 { u8 unk0; @@ -38,15 +39,9 @@ struct Struct201C000 { #define WINDOW_RIGHT 29 #endif -#define EWRAM_1000 (*(struct Struct2001000 *)(unk_2000000 + 0x1000)) -#define EWRAM_1B000_2 (*(struct Struct201B000 *)(unk_2000000 + 0x1B000)) -#define EWRAM_1C000 (*(struct Struct201C000 *)(unk_2000000 + 0x1C000)) - // extern extern u8 gUnknown_0202E8F6; extern u8 gLastFieldPokeMenuOpened; - -extern u8 unk_2000000[]; extern u8 gUnknown_0202E8F4; // Static diff --git a/src/field/item_menu.c b/src/field/item_menu.c index c508bcacf..09542cc6d 100644 --- a/src/field/item_menu.c +++ b/src/field/item_menu.c @@ -34,9 +34,9 @@ #include "task.h" #include "text.h" #include "unknown_task.h" +#include "ewram.h" // External stuff -extern u8 ewram[]; extern void gpu_pal_allocator_reset__manage_upper_four(void); extern void sub_80F9020(void); extern void sub_80F9988(); @@ -158,12 +158,6 @@ extern struct PocketScrollState gBagPocketScrollStates[]; extern struct ItemSlot *gCurrentBagPocketItemSlots; // selected pocket item slots extern const u8 Event_NoRegisteredItem[]; -#define ewramBerryPic (ewram + 0) -#define ewramBerryPicTemp (ewram + 0x1000) -#define ewramSavedItemsPocket ((struct ItemSlot *)(ewram + 0x1E000)) // saved items pocket (for Wally battle) -#define ewramSavedPokeballsPocket ((struct ItemSlot *)(ewram + 0x1F000)) // saved Pokeballs pocket (for Wally battle) -#define ewramBagSetupStep (ewram[0x1FFFF]) - extern const struct CompressedSpriteSheet sMaleBagSpriteSheet; extern const struct CompressedSpriteSheet sFemaleBagSpriteSheet; extern const struct CompressedSpritePalette sBagSpritePalette; diff --git a/src/field/party_menu.c b/src/field/party_menu.c index 7a519d737..25fd63463 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -25,7 +25,6 @@ #include "pokemon_summary_screen.h" #include "rom_8077ABC.h" #include "rom_8094928.h" -#include "script_pokemon_80F9.h" #include "songs.h" #include "sound.h" #include "species.h" @@ -35,6 +34,8 @@ #include "task.h" #include "unknown_task.h" #include "util.h" +#include "script_pokemon_80F9.h" +#include "ewram.h" struct Coords8 { @@ -483,9 +484,6 @@ struct Unk201FE00 u8 unkE02; }; -#define ewram1C000 (*(struct Unk201C000 *)(ewram + 0x1C000)) -#define ewram1FE00 (*(struct Unk201FE00 *)(ewram + 0x1FE00)) - extern u16 gBattleTypeFlags; extern u8 gTileBuffer[]; extern u8 gUnknown_0202E8F4; diff --git a/src/field/pokeblock.c b/src/field/pokeblock.c index 2ee1a23ae..e5084da18 100644 --- a/src/field/pokeblock.c +++ b/src/field/pokeblock.c @@ -27,6 +27,7 @@ #include "safari_zone.h" #include "event_data.h" #include "pokeblock.h" +#include "ewram.h" struct UnkPokeblockStruct { @@ -36,9 +37,6 @@ struct UnkPokeblockStruct u8 unk3; }; -extern u8 ewram[]; - - static EWRAM_DATA u8 gUnknown_02039244 = 0; static EWRAM_DATA struct UnkPokeblockStruct gUnknown_02039248 = {0}; static EWRAM_DATA u8 gUnknown_0203924C = 0; diff --git a/src/field/region_map.c b/src/field/region_map.c index bfd2729c2..b5a3de563 100644 --- a/src/field/region_map.c +++ b/src/field/region_map.c @@ -17,6 +17,7 @@ #include "string_util.h" #include "text.h" #include "trig.h" +#include "ewram.h" // Map Section IDs #define MAPSEC_LITTLEROOT_TOWN 0 @@ -1350,12 +1351,6 @@ struct UnknownStruct3 struct RegionMap regionMap; }; -extern u8 ewram[]; -#define ewram0 (*(struct UnknownStruct3 *)(ewram + 0)) -#define ewram888 (ewram + 0x888) -#define ewramA6E (ewram[0xA6E]) -#define ewramBlankMapName (ewram + 0xA48) - static const u16 sFlyRegionMapFrame_Pal[] = INCBIN_U16("graphics/pokenav/map_frame.gbapal"); static const u8 sFlyRegionMapFrame_ImageLZ[] = INCBIN_U8("graphics/pokenav/map_frame.4bpp.lz"); static const u8 sFlyRegionMapFrame_TilemapLZ[] = INCBIN_U8("graphics/pokenav/map_frame.bin.lz"); @@ -1552,10 +1547,10 @@ void CB2_InitFlyRegionMap(void) MenuZeroFillScreen(); break; case 3: - InitRegionMap(&ewram0.regionMap, 0); + InitRegionMap(&ewram0_3.regionMap, 0); CreateRegionMapCursor(0, 0); CreateRegionMapPlayerIcon(1, 1); - ewram0.unk6 = ewram0.regionMap.mapSecId; + ewram0_3.unk6 = ewram0_3.regionMap.mapSecId; StringFill(ewramBlankMapName, CHAR_SPACE, 12); PrintFlyTargetName(); break; @@ -1598,20 +1593,20 @@ static void VBlankCB_FlyRegionMap(void) static void CB2_FlyRegionMap(void) { - ewram0.unk0(); + ewram0_3.unk0(); AnimateSprites(); BuildOamBuffer(); } static void sub_80FC244(void (*func)(void)) { - ewram0.unk0 = func; - ewram0.unk4 = 0; + ewram0_3.unk0 = func; + ewram0_3.unk4 = 0; } static void PrintFlyTargetName(void) { - if (ewram0.regionMap.unk16 == 2 || ewram0.regionMap.unk16 == 4) + if (ewram0_3.regionMap.unk16 == 2 || ewram0_3.regionMap.unk16 == 4) { u16 i = 0; int zero; @@ -1620,13 +1615,13 @@ static void PrintFlyTargetName(void) { const struct UnknownStruct4 *r4 = &sUnknown_083E79C0[i]; - if (ewram0.regionMap.mapSecId == r4->mapSecId) + if (ewram0_3.regionMap.mapSecId == r4->mapSecId) { if (FlagGet(r4->flag)) { MenuDrawTextWindow(16, 14, 29, 19); - MenuPrint(ewram0.regionMap.mapSecName, 17, 15); - MenuPrint_RightAligned(r4->unk0[ewram0.regionMap.everGrandeCityArea], 29, 17); + MenuPrint(ewram0_3.regionMap.mapSecName, 17, 15); + MenuPrint_RightAligned(r4->unk0[ewram0_3.regionMap.everGrandeCityArea], 29, 17); return; } break; @@ -1637,7 +1632,7 @@ static void PrintFlyTargetName(void) if (zero == 0) { MenuDrawTextWindow(16, 16, 29, 19); - MenuPrint(ewram0.regionMap.mapSecName, 17, 17); + MenuPrint(ewram0_3.regionMap.mapSecName, 17, 17); MenuZeroFillWindowRect(16, 14, 29, 15); } } @@ -1738,7 +1733,7 @@ static void CreateSpecialAreaFlyTargetIcons(void) static void SpriteCB_FlyTargetIcons(struct Sprite *sprite) { // Blink if our mapSecId is the one selected on the map - if (ewram0.regionMap.mapSecId == sprite->data0) + if (ewram0_3.regionMap.mapSecId == sprite->data0) { // Toggle visibility every 16 frames sprite->data1++; @@ -1757,11 +1752,11 @@ static void SpriteCB_FlyTargetIcons(struct Sprite *sprite) static void sub_80FC5B4(void) { - switch (ewram0.unk4) + switch (ewram0_3.unk4) { case 0: BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); - ewram0.unk4++; + ewram0_3.unk4++; break; case 1: if (UpdatePaletteFade() != 0) @@ -1773,7 +1768,7 @@ static void sub_80FC5B4(void) static void sub_80FC600(void) { - if (ewram0.unk4 == 0) + if (ewram0_3.unk4 == 0) { switch (sub_80FAB60()) { @@ -1785,7 +1780,7 @@ static void sub_80FC600(void) PrintFlyTargetName(); break; case INPUT_EVENT_A_BUTTON: - if (ewram0.regionMap.unk16 == 2 || ewram0.regionMap.unk16 == 4) + if (ewram0_3.regionMap.unk16 == 2 || ewram0_3.regionMap.unk16 == 4) { m4aSongNumStart(SE_SELECT); ewramA6E = 1; @@ -1803,11 +1798,11 @@ static void sub_80FC600(void) static void sub_80FC69C(void) { - switch (ewram0.unk4) + switch (ewram0_3.unk4) { case 0: BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); - ewram0.unk4++; + ewram0_3.unk4++; break; case 1: if (UpdatePaletteFade() != 0) @@ -1815,7 +1810,7 @@ static void sub_80FC69C(void) FreeRegionMapIconResources(); if (ewramA6E != 0) { - switch (ewram0.regionMap.mapSecId) + switch (ewram0_3.regionMap.mapSecId) { case MAPSEC_SOUTHERN_ISLAND: sub_8053538(22); @@ -1827,13 +1822,13 @@ static void sub_80FC69C(void) sub_8053538((gSaveBlock2.playerGender == MALE) ? 12 : 13); break; case MAPSEC_EVER_GRANDE_CITY: - sub_8053538((FlagGet(0x854) && ewram0.regionMap.everGrandeCityArea == 0) ? 20 : 11); + sub_8053538((FlagGet(0x854) && ewram0_3.regionMap.everGrandeCityArea == 0) ? 20 : 11); break; default: - if (sUnknown_083E7920[ewram0.regionMap.mapSecId][2] != 0) - sub_8053538(sUnknown_083E7920[ewram0.regionMap.mapSecId][2]); + if (sUnknown_083E7920[ewram0_3.regionMap.mapSecId][2] != 0) + sub_8053538(sUnknown_083E7920[ewram0_3.regionMap.mapSecId][2]); else - warp1_set_2(sUnknown_083E7920[ewram0.regionMap.mapSecId][0], sUnknown_083E7920[ewram0.regionMap.mapSecId][1], -1); + warp1_set_2(sUnknown_083E7920[ewram0_3.regionMap.mapSecId][0], sUnknown_083E7920[ewram0_3.regionMap.mapSecId][1], -1); break; } sub_80865BC(); diff --git a/src/field/shop.c b/src/field/shop.c index 375205935..67e9b006e 100644 --- a/src/field/shop.c +++ b/src/field/shop.c @@ -26,13 +26,10 @@ #include "overworld.h" #include "decoration_inventory.h" #include "field_camera.h" - -#define ewram18000 ((u16 *)(ewram + 0x18000)) -#define ewram18300 ((u16 *)(ewram + 0x18300)) +#include "ewram.h" extern bool8 sub_80A52C4(u8, u8); -extern u8 ewram[]; extern u8 gBuyMenuFrame_Gfx[]; extern u16 gBuyMenuFrame_Tilemap[]; extern u16 gMenuMoneyPal[16]; @@ -54,7 +51,7 @@ static struct MartInfo gMartInfo; // ewram EWRAM_DATA u32 gMartTotalCost = 0; -EWRAM_DATA s16 gUnknown_020386A4[16][4] = {0}; // game freak barely uses 2d arrays wtf? +EWRAM_DATA s16 gUnknown_020386A4[16][4] = {0}; EWRAM_DATA struct ItemSlot gUnknown_02038724[3] = {0}; // tv.c uses this, so it cant be static EWRAM_DATA u8 gUnknown_02038730 = 0; EWRAM_DATA u8 gUnknown_02038731 = 0; diff --git a/src/field/tv.c b/src/field/tv.c index 87fc03065..a0287e7df 100644 --- a/src/field/tv.c +++ b/src/field/tv.c @@ -38,6 +38,7 @@ #include "string_util.h" #include "strings.h" #include "text.h" +#include "ewram.h" struct UnkTvStruct { @@ -95,9 +96,6 @@ extern u8 gBattleOutcome; extern u16 gLastUsedItem; -extern u8 ewram[]; -#define gUnknown_02007000 (*(ewramStruct_02007000 *)(ewram + 0x7000)) - static EWRAM_DATA u16 gUnknown_020387E0 = 0; static EWRAM_DATA u16 gUnknown_020387E2 = 0; static EWRAM_DATA u8 gUnknown_020387E4 = 0; -- cgit v1.2.3 From 5fc9a151463ade7d260ce5f105674908d6e4449d Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sun, 5 Nov 2017 12:55:45 -0500 Subject: move ewram.h includes in include/ to src files. --- src/field/choose_party.c | 3 ++- src/field/decoration.c | 1 + src/field/dewford_trend.c | 1 + src/field/field_region_map.c | 22 +++++++++++----------- 4 files changed, 15 insertions(+), 12 deletions(-) (limited to 'src/field') diff --git a/src/field/choose_party.c b/src/field/choose_party.c index adb210e7b..891ee48b8 100644 --- a/src/field/choose_party.c +++ b/src/field/choose_party.c @@ -17,6 +17,7 @@ #include "string_util.h" #include "task.h" #include "text.h" +#include "ewram.h" extern u8 gPlayerPartyCount; extern u8 gLastFieldPokeMenuOpened; @@ -34,7 +35,7 @@ extern void sub_806BC3C(u8, u8); extern void ShowPokemonSummaryScreen(struct Pokemon *, u8, u8, void (*)(void), int); extern u8 GetMonStatusAndPokerus(); extern void PartyMenuPrintHP(); -extern bool8 sub_80F9344(void); +extern bool8 sub_80F9344(void); static void ClearPartySelection(void); static bool8 IsMonAllowedInBattleTower(struct Pokemon *); diff --git a/src/field/decoration.c b/src/field/decoration.c index 59c19c20a..924c94b59 100644 --- a/src/field/decoration.c +++ b/src/field/decoration.c @@ -18,6 +18,7 @@ #include "event_data.h" #include "field_weather.h" #include "decoration.h" +#include "ewram.h" EWRAM_DATA u8 *gUnknown_020388D0 = NULL; EWRAM_DATA u8 gUnknown_020388D4 = 0; diff --git a/src/field/dewford_trend.c b/src/field/dewford_trend.c index f47dbba08..5f4d5abfe 100644 --- a/src/field/dewford_trend.c +++ b/src/field/dewford_trend.c @@ -5,6 +5,7 @@ #include "link.h" #include "rng.h" #include "text.h" +#include "ewram.h" extern u8 ewram[]; diff --git a/src/field/field_region_map.c b/src/field/field_region_map.c index e189fcf2c..73e101d8f 100644 --- a/src/field/field_region_map.c +++ b/src/field/field_region_map.c @@ -28,8 +28,8 @@ struct UnkStruct void FieldInitRegionMap(MainCallback callback) { SetVBlankCallback(NULL); - unk_2000000.unk888 = 0; - unk_2000000.callback = callback; + ewram0_5.unk888 = 0; + ewram0_5.callback = callback; SetMainCallback2(CB2_FieldInitRegionMap); } @@ -47,7 +47,7 @@ void CB2_FieldInitRegionMap(void) ResetSpriteData(); FreeAllSpritePalettes(); // TODO: remove this cast - InitRegionMap((void *)&unk_2000000.unk8, 0); + InitRegionMap((void *)&ewram0_5.unk8, 0); CreateRegionMapPlayerIcon(0, 0); CreateRegionMapCursor(1, 1); SetUpWindowConfig(&gWindowConfig_81E709C); @@ -80,15 +80,15 @@ void CB2_FieldRegionMap(void) void sub_813EFDC(void) { - switch (unk_2000000.unk888) + switch (ewram0_5.unk888) { case 0: REG_DISPCNT = DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON; - unk_2000000.unk888++; + ewram0_5.unk888++; break; case 1: if (!gPaletteFade.active) - unk_2000000.unk888++; + ewram0_5.unk888++; break; case 2: switch (sub_80FAB60()) @@ -98,18 +98,18 @@ void sub_813EFDC(void) break; case 4: case 5: - unk_2000000.unk888++; + ewram0_5.unk888++; } break; case 3: BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0); - unk_2000000.unk888++; + ewram0_5.unk888++; break; case 4: if (!gPaletteFade.active) { FreeRegionMapIconResources(); - SetMainCallback2(unk_2000000.callback); + SetMainCallback2(ewram0_5.callback); } break; } @@ -118,6 +118,6 @@ void sub_813EFDC(void) void sub_813F0C8(void) { MenuFillWindowRectWithBlankTile(17, 17, 28, 18); - if (unk_2000000.unk8.unk16) - MenuPrint(unk_2000000.unk8.str, 17, 17); + if (ewram0_5.unk8.unk16) + MenuPrint(ewram0_5.unk8.str, 17, 17); } -- cgit v1.2.3 From 618240c62639bc4da73d400965b6df67b2c3619e Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sun, 5 Nov 2017 23:07:39 -0500 Subject: move src/engine/ direct ewram calls to ewram.h. --- src/field/berry_tag_screen.c | 22 +++++++++++----------- src/field/slot_machine.c | 4 ++-- 2 files changed, 13 insertions(+), 13 deletions(-) (limited to 'src/field') diff --git a/src/field/berry_tag_screen.c b/src/field/berry_tag_screen.c index 1413a02ca..8241fe657 100644 --- a/src/field/berry_tag_screen.c +++ b/src/field/berry_tag_screen.c @@ -28,7 +28,7 @@ struct Struct2000000 /*0x1FFFF*/ u8 var_1FFFF; }; -extern struct Struct2000000 unk_2000000; +extern struct Struct2000000 ewram; extern u16 gUnknown_030041B4; static EWRAM_DATA u8 gUnknown_0203932C = 0; @@ -119,13 +119,13 @@ static bool8 sub_8146058(void) case 5: if (!MultistepInitMenuWindowContinue()) break; - unk_2000000.var_1FFFF = 0; + ewram.var_1FFFF = 0; gMain.state += 1; break; case 6: if (!sub_81462B8()) break; - unk_2000000.var_1FFFF = 0; + ewram.var_1FFFF = 0; gMain.state += 1; break; case 7: @@ -191,19 +191,19 @@ bool8 sub_81462B8(void) u16 i; void *addr; - switch (unk_2000000.var_1FFFF) + switch (ewram.var_1FFFF) { case 0: LZDecompressVram(gBerryCheck_Gfx, (void *)VRAM); - unk_2000000.var_1FFFF += 1; + ewram.var_1FFFF += 1; break; case 1: LZDecompressVram(gUnknown_08E788E4, (void *)VRAM + 0x2800); - unk_2000000.var_1FFFF += 1; + ewram.var_1FFFF += 1; break; case 2: LZDecompressVram(gUnknown_08E78A84, (void *)VRAM + 0x3000); - unk_2000000.var_1FFFF += 1; + ewram.var_1FFFF += 1; break; case 3: for (i = 0; i < 0x400; i++) @@ -215,19 +215,19 @@ bool8 sub_81462B8(void) } addr = (void *)(VRAM + 0x3800); DmaCopy16(3, gBGTilemapBuffers[2], addr, 0x800); - unk_2000000.var_1FFFF += 1; + ewram.var_1FFFF += 1; break; case 4: LoadCompressedPalette(gBerryCheck_Pal, 0, 96 * 2); - unk_2000000.var_1FFFF += 1; + ewram.var_1FFFF += 1; break; case 5: LoadCompressedObjectPic(&gUnknown_083C1F74); - unk_2000000.var_1FFFF += 1; + ewram.var_1FFFF += 1; break; case 6: LoadCompressedObjectPalette(&gUnknown_083C1F7C); - unk_2000000.var_1FFFF = 0; + ewram.var_1FFFF = 0; return TRUE; } diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 153970337..4d97ccb51 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -15,7 +15,7 @@ struct UnkStruct1 { /*0x02*/ s16 unk02; }; -extern struct UnkStruct2000000 unk_2000000; +extern struct UnkStruct2000000 ewram; extern struct UnkStruct1 *gUnknown_083ED048[]; extern const u16 gPalette_83EDE24[]; @@ -40,7 +40,7 @@ void sub_8104CAC(u8 arg0) { sub_8104DA4(); - task = &gTasks[unk_2000000.unk3D]; + task = &gTasks[ewram.unk3D]; task->data[1] = arg0; i = 0; -- cgit v1.2.3 From 5711615c6067e49c3254f9568be55dc6ed3d5c2f Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Mon, 6 Nov 2017 03:46:09 -0500 Subject: finish refactoring ewram defines into ewram.h. --- src/field/dewford_trend.c | 2 -- src/field/pokeblock.c | 18 +++++++++--------- 2 files changed, 9 insertions(+), 11 deletions(-) (limited to 'src/field') diff --git a/src/field/dewford_trend.c b/src/field/dewford_trend.c index 5f4d5abfe..102784066 100644 --- a/src/field/dewford_trend.c +++ b/src/field/dewford_trend.c @@ -7,8 +7,6 @@ #include "text.h" #include "ewram.h" -extern u8 ewram[]; - extern u16 gScriptResult; extern u16 gSpecialVar_0x8004; diff --git a/src/field/pokeblock.c b/src/field/pokeblock.c index e5084da18..a4497295f 100644 --- a/src/field/pokeblock.c +++ b/src/field/pokeblock.c @@ -299,7 +299,7 @@ static bool8 sub_810B6C0(void) case 10: if (MultistepInitMenuWindowContinue()) { - ewram[0x1ffff] = 0; + ewram1FFFF = 0; gMain.state++; } break; @@ -317,7 +317,7 @@ static bool8 sub_810B6C0(void) gMain.state++; break; case 13: - ewram[0x1fffe] = sub_810BA50(0x38, 0x40, 0); + ewram1FFFE = sub_810BA50(0x38, 0x40, 0); gMain.state++; break; case 14: @@ -369,27 +369,27 @@ void sub_810B96C(void) static bool8 sub_810B998(void) { - switch (ewram[0x1ffff]) + switch (ewram1FFFF) { case 0: LZDecompressVram(gMenuPokeblock_Gfx, BG_CHAR_ADDR(2)); - ewram[0x1ffff]++; + ewram1FFFF++; break; case 1: LZDecompressWram(gMenuPokeblock_Tilemap, gBGTilemapBuffers[2]); - ewram[0x1ffff]++; + ewram1FFFF++; break; case 2: LoadCompressedPalette(gMenuPokeblock_Pal, 0, 0xc0); - ewram[0x1ffff]++; + ewram1FFFF++; break; case 3: LoadCompressedObjectPic(&gUnknown_083F7F74); - ewram[0x1ffff]++; + ewram1FFFF++; break; case 4: LoadCompressedObjectPalette(&gUnknown_083F7F7C); - ewram[0x1ffff] = 0; + ewram1FFFF = 0; return TRUE; } return FALSE; @@ -611,7 +611,7 @@ static void sub_810BDAC(bool8 flag) static void sub_810BF38(bool8 flag) { PlaySE(SE_SELECT); - gSprites[ewram[0x1fffe]].callback = sub_810C8D4; + gSprites[ewram1FFFE].callback = sub_810C8D4; sub_810BDAC(flag); } -- cgit v1.2.3 From eecafbaec17ba0721d091d1a12ac20fa71da352a Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Thu, 9 Nov 2017 03:13:09 -0500 Subject: depreciate use of shared_syms --- src/field/fldeff_cut.c | 11 ++++----- src/field/player_pc.c | 65 +++++++++++++++++++++++++------------------------- 2 files changed, 38 insertions(+), 38 deletions(-) (limited to 'src/field') diff --git a/src/field/fldeff_cut.c b/src/field/fldeff_cut.c index 00643a979..00cabe5c0 100644 --- a/src/field/fldeff_cut.c +++ b/src/field/fldeff_cut.c @@ -16,8 +16,7 @@ #include "sprite.h" #include "task.h" #include "trig.h" - -extern u8 gCutGrassSpriteArray[8]; // seems to be an array of 8 sprite IDs +#include "ewram.h" extern void (*gFieldCallback)(void); extern void (*gUnknown_03005CE4)(void); @@ -135,9 +134,9 @@ bool8 FldEff_CutGrass(void) // populate sprite ID array for(i = 0; i < 8; i++) { - gCutGrassSpriteArray[i] = CreateSprite((struct SpriteTemplate *)&gSpriteTemplate_CutGrass, + eCutGrassSpriteArray[i] = CreateSprite((struct SpriteTemplate *)&gSpriteTemplate_CutGrass, gSprites[gPlayerAvatar.spriteId].oam.x + 8, gSprites[gPlayerAvatar.spriteId].oam.y + 20, 0); - gSprites[gCutGrassSpriteArray[i]].data2 = 32 * i; + gSprites[eCutGrassSpriteArray[i]].data2 = 32 * i; } return 0; } @@ -273,8 +272,8 @@ void sub_80A2AB8(void) u8 i; for (i = 1; i < 8; i++) - DestroySprite(&gSprites[gCutGrassSpriteArray[i]]); - FieldEffectStop(&gSprites[gCutGrassSpriteArray[0]], FLDEFF_CUT_GRASS); + DestroySprite(&gSprites[eCutGrassSpriteArray[i]]); + FieldEffectStop(&gSprites[eCutGrassSpriteArray[0]], FLDEFF_CUT_GRASS); sub_8064E2C(); ScriptContext2_Disable(); } diff --git a/src/field/player_pc.c b/src/field/player_pc.c index d01829266..ce78a88d8 100644 --- a/src/field/player_pc.c +++ b/src/field/player_pc.c @@ -20,6 +20,7 @@ #include "mail.h" #include "overworld.h" #include "player_pc.h" +#include "ewram.h" extern void DisplayItemMessageOnField(u8, const u8*, TaskFunc, u16); extern void DoPlayerPCDecoration(u8); @@ -271,14 +272,14 @@ static void PlayerPC_ItemStorage(u8 taskId) static void PlayerPC_Mailbox(u8 taskId) { MenuZeroFillWindowRect(0, 0, 10, 9); - gMailboxInfo.count = GetMailboxMailCount(); + eMailboxInfo.count = GetMailboxMailCount(); - if (gMailboxInfo.count == 0) + if (eMailboxInfo.count == 0) DisplayItemMessageOnField(taskId, gOtherText_NoMailHere, ReshowPlayerPC, 0); else { - gMailboxInfo.cursorPos = 0; - gMailboxInfo.itemsAbove = 0; + eMailboxInfo.cursorPos = 0; + eMailboxInfo.itemsAbove = 0; Mailbox_UpdateMailList(); ItemStorage_SetItemAndMailCount(taskId); Mailbox_DrawMailboxMenu(taskId); @@ -442,10 +443,10 @@ static void ItemStorage_SetItemAndMailCount(u8 taskId) else NUM_PAGE_ITEMS = NUM_ITEMS + 1; // there are not enough items to fill a full page; take the # of items and add 1 for the cancel button. - if (gMailboxInfo.count > 7) - gMailboxInfo.pageItems = 8; + if (eMailboxInfo.count > 7) + eMailboxInfo.pageItems = 8; else - gMailboxInfo.pageItems = gMailboxInfo.count + 1; + eMailboxInfo.pageItems = eMailboxInfo.count + 1; } static void ItemStorage_ProcessInput(u8 taskId) @@ -1048,8 +1049,8 @@ static void Mailbox_UpdateMailList(void) static void Mailbox_DrawMailList(u8 taskId) // taskId is unused { u16 yCoord = 0; - u16 i = gMailboxInfo.itemsAbove; - register struct MailboxStruct *tempMailbox asm("r1") = &gMailboxInfo; + u16 i = eMailboxInfo.itemsAbove; + register struct MailboxStruct *tempMailbox asm("r1") = &eMailboxInfo; register struct MailboxStruct *mailbox asm("r6"); if(i < i + tempMailbox->pageItems) @@ -1076,10 +1077,10 @@ static void Mailbox_DrawMailList(u8 taskId) // taskId is unused } beforeLabel: - if(i - gMailboxInfo.itemsAbove != 8) + if(i - eMailboxInfo.itemsAbove != 8) MenuFillWindowRectWithBlankTile(0x15, yCoord + 4, 0x1C, 0x12); - switch(gMailboxInfo.itemsAbove) + switch(eMailboxInfo.itemsAbove) { default: CreateVerticalScrollIndicators(0, 0xC8, 8); @@ -1092,7 +1093,7 @@ weirdCase: break; } - if(gMailboxInfo.itemsAbove + gMailboxInfo.pageItems <= gMailboxInfo.count) + if(eMailboxInfo.itemsAbove + eMailboxInfo.pageItems <= eMailboxInfo.count) CreateVerticalScrollIndicators(1, 0xC8, 0x98); else DestroyVerticalScrollIndicator(1); @@ -1107,7 +1108,7 @@ static void Mailbox_DrawMailboxMenu(u8 taskId) MenuPrint(gPCText_Mailbox, 1, 1); MenuDrawTextWindow(0x14, 0, 0x1D, 0x13); Mailbox_DrawMailList(taskId); - InitMenu(0, 0x15, 2, gMailboxInfo.pageItems, gMailboxInfo.cursorPos, 8); + InitMenu(0, 0x15, 2, eMailboxInfo.pageItems, eMailboxInfo.cursorPos, 8); } // Mailbox_ProcessInput @@ -1117,29 +1118,29 @@ static void Mailbox_ProcessInput(u8 taskId) { if(gMain.newAndRepeatedKeys & DPAD_UP) { - if(gMailboxInfo.cursorPos != 0) + if(eMailboxInfo.cursorPos != 0) { PlaySE(SE_SELECT); - gMailboxInfo.cursorPos = MoveMenuCursor(-1); + eMailboxInfo.cursorPos = MoveMenuCursor(-1); } - else if(gMailboxInfo.itemsAbove != 0) + else if(eMailboxInfo.itemsAbove != 0) { PlaySE(SE_SELECT); - gMailboxInfo.itemsAbove--; + eMailboxInfo.itemsAbove--; Mailbox_DrawMailList(taskId); } } else if(gMain.newAndRepeatedKeys & DPAD_DOWN) { - if(gMailboxInfo.cursorPos != gMailboxInfo.pageItems - 1) + if(eMailboxInfo.cursorPos != eMailboxInfo.pageItems - 1) { PlaySE(SE_SELECT); - gMailboxInfo.cursorPos = MoveMenuCursor(1); + eMailboxInfo.cursorPos = MoveMenuCursor(1); } - else if(gMailboxInfo.itemsAbove + gMailboxInfo.cursorPos != gMailboxInfo.count) + else if(eMailboxInfo.itemsAbove + eMailboxInfo.cursorPos != eMailboxInfo.count) { PlaySE(SE_SELECT); - gMailboxInfo.itemsAbove++; + eMailboxInfo.itemsAbove++; Mailbox_DrawMailList(taskId); } } @@ -1148,7 +1149,7 @@ static void Mailbox_ProcessInput(u8 taskId) HandleDestroyMenuCursors(); PlaySE(SE_SELECT); - if(gMailboxInfo.itemsAbove + gMailboxInfo.cursorPos == gMailboxInfo.count) + if(eMailboxInfo.itemsAbove + eMailboxInfo.cursorPos == eMailboxInfo.count) { Mailbox_TurnOff(taskId); } @@ -1177,7 +1178,7 @@ static void Mailbox_CloseScrollIndicators(void) static void Mailbox_PrintWhatToDoWithPlayerMailText(u8 taskId) { MenuZeroFillWindowRect(0, 0, 0x1D, 0x13); - StringCopy(gStringVar1, gSaveBlock1.mail[gMailboxInfo.itemsAbove + 6 + gMailboxInfo.cursorPos].playerName); + StringCopy(gStringVar1, gSaveBlock1.mail[eMailboxInfo.itemsAbove + 6 + eMailboxInfo.cursorPos].playerName); SanitizeNameString(gStringVar1); StringExpandPlaceholders(gStringVar4, gOtherText_WhatWillYouDoMail); DisplayItemMessageOnField(taskId, gStringVar4, Mailbox_PrintMailOptions, 0); @@ -1237,7 +1238,7 @@ static void Mailbox_FadeAndReadMail(u8 taskId) { if(!gPaletteFade.active) { - HandleReadMail(&gSaveBlock1.mail[gMailboxInfo.itemsAbove + 6 + gMailboxInfo.cursorPos], Mailbox_ReturnToFieldFromReadMail, 1); + HandleReadMail(&gSaveBlock1.mail[eMailboxInfo.itemsAbove + 6 + eMailboxInfo.cursorPos], Mailbox_ReturnToFieldFromReadMail, 1); DestroyTask(taskId); } } @@ -1276,7 +1277,7 @@ static void Mailbox_DrawYesNoBeforeMove(u8 taskId) static void Mailbox_DoMailMoveToBag(u8 taskId) { - struct MailStruct *mail = &gSaveBlock1.mail[gMailboxInfo.itemsAbove + 6 + gMailboxInfo.cursorPos]; + struct MailStruct *mail = &gSaveBlock1.mail[eMailboxInfo.itemsAbove + 6 + eMailboxInfo.cursorPos]; MenuZeroFillWindowRect(0x14, 8, 0x1A, 0xD); @@ -1290,10 +1291,10 @@ static void Mailbox_DoMailMoveToBag(u8 taskId) ClearMailStruct(mail); Mailbox_UpdateMailList(); - gMailboxInfo.count--; + eMailboxInfo.count--; - if(gMailboxInfo.count < gMailboxInfo.pageItems + gMailboxInfo.itemsAbove && gMailboxInfo.itemsAbove != 0) - gMailboxInfo.itemsAbove--; + if(eMailboxInfo.count < eMailboxInfo.pageItems + eMailboxInfo.itemsAbove && eMailboxInfo.itemsAbove != 0) + eMailboxInfo.itemsAbove--; ItemStorage_SetItemAndMailCount(taskId); } @@ -1329,13 +1330,13 @@ static void Mailbox_DoGiveMailPokeMenu(u8 taskId) // Mailbox_DoGiveMailPokeMenu static void Mailbox_UpdateMailListAfterDeposit(void) { u8 taskId = CreateTask(Mailbox_HandleReturnToProcessInput, 0); - u8 oldCount = gMailboxInfo.count; + u8 oldCount = eMailboxInfo.count; - gMailboxInfo.count = GetMailboxMailCount(); + eMailboxInfo.count = GetMailboxMailCount(); Mailbox_UpdateMailList(); - if(oldCount != gMailboxInfo.count && gMailboxInfo.count < gMailboxInfo.pageItems + gMailboxInfo.itemsAbove && gMailboxInfo.itemsAbove != 0) // did the count update? - gMailboxInfo.itemsAbove--; + if(oldCount != eMailboxInfo.count && eMailboxInfo.count < eMailboxInfo.pageItems + eMailboxInfo.itemsAbove && eMailboxInfo.itemsAbove != 0) // did the count update? + eMailboxInfo.itemsAbove--; ItemStorage_SetItemAndMailCount(taskId); Mailbox_DrawMailboxMenu(taskId); -- cgit v1.2.3 From 0343a1bcd728d813a38fc3486535e962e681c094 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Thu, 9 Nov 2017 20:54:49 -0500 Subject: remove shared_syms --- src/field/berry_tag_screen.c | 22 +++++++++++----------- src/field/decoration.c | 2 +- src/field/region_map.c | 2 +- src/field/slot_machine.c | 4 ++-- 4 files changed, 15 insertions(+), 15 deletions(-) (limited to 'src/field') diff --git a/src/field/berry_tag_screen.c b/src/field/berry_tag_screen.c index 8241fe657..55405138d 100644 --- a/src/field/berry_tag_screen.c +++ b/src/field/berry_tag_screen.c @@ -28,7 +28,7 @@ struct Struct2000000 /*0x1FFFF*/ u8 var_1FFFF; }; -extern struct Struct2000000 ewram; +extern struct Struct2000000 gSharedMem; extern u16 gUnknown_030041B4; static EWRAM_DATA u8 gUnknown_0203932C = 0; @@ -119,13 +119,13 @@ static bool8 sub_8146058(void) case 5: if (!MultistepInitMenuWindowContinue()) break; - ewram.var_1FFFF = 0; + gSharedMem.var_1FFFF = 0; gMain.state += 1; break; case 6: if (!sub_81462B8()) break; - ewram.var_1FFFF = 0; + gSharedMem.var_1FFFF = 0; gMain.state += 1; break; case 7: @@ -191,19 +191,19 @@ bool8 sub_81462B8(void) u16 i; void *addr; - switch (ewram.var_1FFFF) + switch (gSharedMem.var_1FFFF) { case 0: LZDecompressVram(gBerryCheck_Gfx, (void *)VRAM); - ewram.var_1FFFF += 1; + gSharedMem.var_1FFFF += 1; break; case 1: LZDecompressVram(gUnknown_08E788E4, (void *)VRAM + 0x2800); - ewram.var_1FFFF += 1; + gSharedMem.var_1FFFF += 1; break; case 2: LZDecompressVram(gUnknown_08E78A84, (void *)VRAM + 0x3000); - ewram.var_1FFFF += 1; + gSharedMem.var_1FFFF += 1; break; case 3: for (i = 0; i < 0x400; i++) @@ -215,19 +215,19 @@ bool8 sub_81462B8(void) } addr = (void *)(VRAM + 0x3800); DmaCopy16(3, gBGTilemapBuffers[2], addr, 0x800); - ewram.var_1FFFF += 1; + gSharedMem.var_1FFFF += 1; break; case 4: LoadCompressedPalette(gBerryCheck_Pal, 0, 96 * 2); - ewram.var_1FFFF += 1; + gSharedMem.var_1FFFF += 1; break; case 5: LoadCompressedObjectPic(&gUnknown_083C1F74); - ewram.var_1FFFF += 1; + gSharedMem.var_1FFFF += 1; break; case 6: LoadCompressedObjectPalette(&gUnknown_083C1F7C); - ewram.var_1FFFF = 0; + gSharedMem.var_1FFFF = 0; return TRUE; } diff --git a/src/field/decoration.c b/src/field/decoration.c index 924c94b59..bdeaaf91d 100644 --- a/src/field/decoration.c +++ b/src/field/decoration.c @@ -1556,7 +1556,7 @@ const struct SpriteTemplate gSpriteTemplate_83ECA88 = { const struct YesNoFuncTable gUnknown_083ECAA0 = {.yesFunc = sub_8101848, .noFunc = sub_80FED3C}; -u8 *const unref_label_083ECAA8[] = {ewram}; +u8 *const unref_label_083ECAA8[] = {gSharedMem}; // text diff --git a/src/field/region_map.c b/src/field/region_map.c index b5a3de563..d643c373d 100644 --- a/src/field/region_map.c +++ b/src/field/region_map.c @@ -1426,7 +1426,7 @@ static const struct UnknownStruct4 sUnknown_083E79C0[1] = }; // XXX: what is this? -static u8 *const ewram_ = ewram; +static u8 *const ewram_ = gSharedMem; static const struct SpritePalette sFlyTargetIconSpritePalette = {sFlyTargetIcons_Pal, 2}; diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index 4d97ccb51..d6b20feaa 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -15,7 +15,7 @@ struct UnkStruct1 { /*0x02*/ s16 unk02; }; -extern struct UnkStruct2000000 ewram; +extern struct UnkStruct2000000 gSharedMem; extern struct UnkStruct1 *gUnknown_083ED048[]; extern const u16 gPalette_83EDE24[]; @@ -40,7 +40,7 @@ void sub_8104CAC(u8 arg0) { sub_8104DA4(); - task = &gTasks[ewram.unk3D]; + task = &gTasks[gSharedMem.unk3D]; task->data[1] = arg0; i = 0; -- cgit v1.2.3 From 955c5a8e90c9afba35114c583628f74f849a0da4 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Mon, 6 Nov 2017 22:30:13 -0800 Subject: More pokenav decomp --- src/field/region_map.c | 168 ++++++++++++++++++++++++------------------------- 1 file changed, 84 insertions(+), 84 deletions(-) (limited to 'src/field') diff --git a/src/field/region_map.c b/src/field/region_map.c index bfd2729c2..daf0501f7 100644 --- a/src/field/region_map.c +++ b/src/field/region_map.c @@ -336,9 +336,9 @@ bool8 sub_80FA940(void) InitializeCursorPosition(); gRegionMap->unk74 = gRegionMap->cursorPosX; gRegionMap->unk76 = gRegionMap->cursorPosY; - gRegionMap->unk16 = sub_80FB758(gRegionMap->mapSecId); - gRegionMap->mapSecId = sub_80FB9C0(gRegionMap->mapSecId); - GetMapSectionName(gRegionMap->mapSecName, gRegionMap->mapSecId, 16); + gRegionMap->unk16 = sub_80FB758(gRegionMap->mapSectionId); + gRegionMap->mapSectionId = sub_80FB9C0(gRegionMap->mapSectionId); + GetMapSectionName(gRegionMap->mapSectionName, gRegionMap->mapSectionId, 16); break; case 6: if (gRegionMap->zoomed == FALSE) @@ -433,7 +433,7 @@ static u8 sub_80FAB78(void) static u8 _swiopen(void) { - u16 mapSecId; + u16 mapSectionId; if (gRegionMap->unk7A != 0) return INPUT_EVENT_2; @@ -450,12 +450,12 @@ static u8 _swiopen(void) if (gRegionMap->cursorDeltaY < 0) gRegionMap->cursorPosY--; - mapSecId = GetRegionMapSectionAt(gRegionMap->cursorPosX, gRegionMap->cursorPosY); - gRegionMap->unk16 = sub_80FB758(mapSecId); - if (mapSecId != gRegionMap->mapSecId) + mapSectionId = GetRegionMapSectionAt(gRegionMap->cursorPosX, gRegionMap->cursorPosY); + gRegionMap->unk16 = sub_80FB758(mapSectionId); + if (mapSectionId != gRegionMap->mapSectionId) { - gRegionMap->mapSecId = mapSecId; - GetMapSectionName(gRegionMap->mapSecName, gRegionMap->mapSecId, 16); + gRegionMap->mapSectionId = mapSectionId; + GetMapSectionName(gRegionMap->mapSectionName, gRegionMap->mapSectionId, 16); } sub_80FBA18(); gRegionMap->inputCallback = sub_80FAB78; @@ -515,16 +515,16 @@ static u8 sub_80FADE4(void) if (r3 != gRegionMap->unk64 || r1 != gRegionMap->unk66) { - u16 mapSecId; + u16 mapSectionId; gRegionMap->unk64 = r3; gRegionMap->unk66 = r1; - mapSecId = GetRegionMapSectionAt(r3, r1); - gRegionMap->unk16 = sub_80FB758(mapSecId); - if (mapSecId != gRegionMap->mapSecId) + mapSectionId = GetRegionMapSectionAt(r3, r1); + gRegionMap->unk16 = sub_80FB758(mapSectionId); + if (mapSectionId != gRegionMap->mapSectionId) { - gRegionMap->mapSecId = mapSecId; - GetMapSectionName(gRegionMap->mapSecName, gRegionMap->mapSecId, 16); + gRegionMap->mapSectionId = mapSectionId; + GetMapSectionName(gRegionMap->mapSectionName, gRegionMap->mapSectionId, 16); } sub_80FBA18(); } @@ -722,19 +722,19 @@ static void InitializeCursorPosition(void) case 2: case 4: case 5: - gRegionMap->mapSecId = gMapHeader.regionMapSectionId; + gRegionMap->mapSectionId = gMapHeader.regionMapSectionId; gRegionMap->playerIsInCave = FALSE; mapWidth = gMapHeader.mapData->width; mapHeight = gMapHeader.mapData->height; x = gSaveBlock1.pos.x; y = gSaveBlock1.pos.y; - if (gRegionMap->mapSecId == MAPSEC_UNDERWATER6) + if (gRegionMap->mapSectionId == MAPSEC_UNDERWATER6) gRegionMap->playerIsInCave = TRUE; break; case 3: case 6: mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1.warp4.mapGroup, gSaveBlock1.warp4.mapNum); - gRegionMap->mapSecId = mapHeader->regionMapSectionId; + gRegionMap->mapSectionId = mapHeader->regionMapSectionId; gRegionMap->playerIsInCave = TRUE; mapWidth = mapHeader->mapData->width; mapHeight = mapHeader->mapData->height; @@ -743,7 +743,7 @@ static void InitializeCursorPosition(void) break; case 8: mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1.warp2.mapGroup, gSaveBlock1.warp2.mapNum); - gRegionMap->mapSecId = mapHeader->regionMapSectionId; + gRegionMap->mapSectionId = mapHeader->regionMapSectionId; gRegionMap->playerIsInCave = TRUE; mapWidth = mapHeader->mapData->width; mapHeight = mapHeader->mapData->height; @@ -754,8 +754,8 @@ static void InitializeCursorPosition(void) { struct WarpData *r4; - gRegionMap->mapSecId = gMapHeader.regionMapSectionId; - if (gRegionMap->mapSecId != MAPSEC_UNK_0x57) + gRegionMap->mapSectionId = gMapHeader.regionMapSectionId; + if (gRegionMap->mapSectionId != MAPSEC_UNK_0x57) { r4 = &gSaveBlock1.warp4; mapHeader = Overworld_GetMapHeaderByGroupAndId(r4->mapGroup, r4->mapNum); @@ -764,7 +764,7 @@ static void InitializeCursorPosition(void) { r4 = &gSaveBlock1.warp2; mapHeader = Overworld_GetMapHeaderByGroupAndId(r4->mapGroup, r4->mapNum); - gRegionMap->mapSecId = mapHeader->regionMapSectionId; + gRegionMap->mapSectionId = mapHeader->regionMapSectionId; } gRegionMap->playerIsInCave = FALSE; mapWidth = mapHeader->mapData->width; @@ -777,21 +777,21 @@ static void InitializeCursorPosition(void) r9 = x; - r1 = mapWidth / gRegionMapLocations[gRegionMap->mapSecId].width; + r1 = mapWidth / gRegionMapLocations[gRegionMap->mapSectionId].width; if (r1 == 0) r1 = 1; x /= r1; - if (x >= gRegionMapLocations[gRegionMap->mapSecId].width) - x = gRegionMapLocations[gRegionMap->mapSecId].width - 1; + if (x >= gRegionMapLocations[gRegionMap->mapSectionId].width) + x = gRegionMapLocations[gRegionMap->mapSectionId].width - 1; - r1 = mapHeight / gRegionMapLocations[gRegionMap->mapSecId].height; + r1 = mapHeight / gRegionMapLocations[gRegionMap->mapSectionId].height; if (r1 == 0) r1 = 1; y /= r1; - if (y >= gRegionMapLocations[gRegionMap->mapSecId].height) - y = gRegionMapLocations[gRegionMap->mapSecId].height - 1; + if (y >= gRegionMapLocations[gRegionMap->mapSectionId].height) + y = gRegionMapLocations[gRegionMap->mapSectionId].height - 1; - switch (gRegionMap->mapSecId) + switch (gRegionMap->mapSectionId) { case MAPSEC_ROUTE_114: if (y != 0) @@ -820,8 +820,8 @@ static void InitializeCursorPosition(void) x++; break; } - gRegionMap->cursorPosX = gRegionMapLocations[gRegionMap->mapSecId].x + x + MAPCURSOR_X_MIN; - gRegionMap->cursorPosY = gRegionMapLocations[gRegionMap->mapSecId].y + y + MAPCURSOR_Y_MIN; + gRegionMap->cursorPosX = gRegionMapLocations[gRegionMap->mapSectionId].x + x + MAPCURSOR_X_MIN; + gRegionMap->cursorPosY = gRegionMapLocations[gRegionMap->mapSectionId].y + y + MAPCURSOR_Y_MIN; } static void sub_80FB600(void) @@ -836,16 +836,16 @@ static void sub_80FB600(void) switch (GetSSTidalLocation(&mapGroup, &mapNum, &sp2, &sp4)) { case 1: - gRegionMap->mapSecId = MAPSEC_SLATEPORT_CITY; + gRegionMap->mapSectionId = MAPSEC_SLATEPORT_CITY; break; case 2: - gRegionMap->mapSecId = MAPSEC_LILYCOVE_CITY; + gRegionMap->mapSectionId = MAPSEC_LILYCOVE_CITY; break; case 3: - gRegionMap->mapSecId = MAPSEC_ROUTE_124; + gRegionMap->mapSectionId = MAPSEC_ROUTE_124; break; case 4: - gRegionMap->mapSecId = MAPSEC_ROUTE_131; + gRegionMap->mapSectionId = MAPSEC_ROUTE_131; break; default: case 0: @@ -853,31 +853,31 @@ static void sub_80FB600(void) struct MapHeader *mapHeader = Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum); u16 r1; - gRegionMap->mapSecId = mapHeader->regionMapSectionId; - r1 = mapHeader->mapData->width / gRegionMapLocations[gRegionMap->mapSecId].width; + gRegionMap->mapSectionId = mapHeader->regionMapSectionId; + r1 = mapHeader->mapData->width / gRegionMapLocations[gRegionMap->mapSectionId].width; if (r1 == 0) r1 = 1; x = sp2 / r1; - if (x >= gRegionMapLocations[gRegionMap->mapSecId].width) - x = gRegionMapLocations[gRegionMap->mapSecId].width - 1; + if (x >= gRegionMapLocations[gRegionMap->mapSectionId].width) + x = gRegionMapLocations[gRegionMap->mapSectionId].width - 1; - r1 = mapHeader->mapData->height / gRegionMapLocations[gRegionMap->mapSecId].height; + r1 = mapHeader->mapData->height / gRegionMapLocations[gRegionMap->mapSectionId].height; if (r1 == 0) r1 = 1; y = sp4 / r1; - if (y >= gRegionMapLocations[gRegionMap->mapSecId].height) - y = gRegionMapLocations[gRegionMap->mapSecId].height - 1; + if (y >= gRegionMapLocations[gRegionMap->mapSectionId].height) + y = gRegionMapLocations[gRegionMap->mapSectionId].height - 1; } break; } gRegionMap->playerIsInCave = FALSE; - gRegionMap->cursorPosX = gRegionMapLocations[gRegionMap->mapSecId].x + x + MAPCURSOR_X_MIN; - gRegionMap->cursorPosY = gRegionMapLocations[gRegionMap->mapSecId].y + y + MAPCURSOR_Y_MIN; + gRegionMap->cursorPosX = gRegionMapLocations[gRegionMap->mapSectionId].x + x + MAPCURSOR_X_MIN; + gRegionMap->cursorPosY = gRegionMapLocations[gRegionMap->mapSectionId].y + y + MAPCURSOR_Y_MIN; } -static u16 sub_80FB758(u16 mapSecId) +static u16 sub_80FB758(u16 mapSectionId) { - switch (mapSecId) + switch (mapSectionId) { case MAPSEC_NONE: return 0; @@ -928,21 +928,21 @@ u16 GetRegionMapSectionAt_(u16 x, u16 y) return GetRegionMapSectionAt(x, y); } -static u16 sub_80FB9C0(u16 mapSecId) +static u16 sub_80FB9C0(u16 mapSectionId) { u16 i; for (i = 0; gUnknown_083E7684[i][0] != MAPSEC_NONE; i++) { - if (gUnknown_083E7684[i][0] == mapSecId) + if (gUnknown_083E7684[i][0] == mapSectionId) return gUnknown_083E7684[i][1]; } - return mapSecId; + return mapSectionId; } -u16 sub_80FBA04(u16 mapSecId) +u16 sub_80FBA04(u16 mapSectionId) { - return sub_80FB9C0(mapSecId); + return sub_80FB9C0(mapSectionId); } static void sub_80FBA18(void) @@ -951,7 +951,7 @@ static void sub_80FBA18(void) u16 y; u16 i; - if (gRegionMap->mapSecId == MAPSEC_NONE) + if (gRegionMap->mapSectionId == MAPSEC_NONE) { gRegionMap->everGrandeCityArea = 0; return; @@ -986,7 +986,7 @@ static void sub_80FBA18(void) else { x--; - if (GetRegionMapSectionAt(x, y) == gRegionMap->mapSecId) + if (GetRegionMapSectionAt(x, y) == gRegionMap->mapSectionId) i++; } } @@ -1005,7 +1005,7 @@ static bool8 sub_80FBAA0(u16 a) for (x = MAPCURSOR_X_MIN; x <= MAPCURSOR_X_MAX; x++) { - if (GetRegionMapSectionAt(x, y) == gRegionMap->mapSecId) + if (GetRegionMapSectionAt(x, y) == gRegionMap->mapSectionId) return TRUE; } return FALSE; @@ -1302,44 +1302,44 @@ void sub_80FBF94(void) gRegionMap->blinkPlayerIcon = TRUE; } -const u8 *GetMapSectionName(u8 *dest, u16 mapSecId, u16 length) +const u8 *GetMapSectionName(u8 *dest, u16 mapSectionId, u16 length) { - if (mapSecId == MAPSEC_SECRET_BASE) + if (mapSectionId == MAPSEC_SECRET_BASE) return GetSecretBaseMapName(dest); - if (mapSecId < MAPSEC_NONE) - return StringCopy(dest, gRegionMapLocations[mapSecId].regionMapSectionId); + if (mapSectionId < MAPSEC_NONE) + return StringCopy(dest, gRegionMapLocations[mapSectionId].regionMapSectionId); if (length == 0) length = 18; return StringFill(dest, CHAR_SPACE, length); } -const u8 *CopyMapName(u8 *dest, u16 mapSecId) +const u8 *CopyMapName(u8 *dest, u16 mapSectionId) { - switch (mapSecId) + switch (mapSectionId) { case MAPSEC_UNK_0x57: return StringCopy(dest, gOtherText_Ferry); case MAPSEC_SECRET_BASE: return StringCopy(dest, gOtherText_SecretBase); default: - return GetMapSectionName(dest, mapSecId, 0); + return GetMapSectionName(dest, mapSectionId, 0); } } -const u8 *CopyLocationName(u8 *dest, u16 mapSecId) +const u8 *CopyLocationName(u8 *dest, u16 mapSectionId) { - if (mapSecId == MAPSEC_EVIL_TEAM_HIDEOUT) + if (mapSectionId == MAPSEC_EVIL_TEAM_HIDEOUT) return StringCopy(dest, gOtherText_Hideout); else - return CopyMapName(dest, mapSecId); + return CopyMapName(dest, mapSectionId); } -static void GetRegionMapLocationPosition(u16 mapSecId, u16 *x, u16 *y, u16 *width, u16 *height) +static void GetRegionMapLocationPosition(u16 mapSectionId, u16 *x, u16 *y, u16 *width, u16 *height) { - *x = gRegionMapLocations[mapSecId].x; - *y = gRegionMapLocations[mapSecId].y; - *width = gRegionMapLocations[mapSecId].width; - *height = gRegionMapLocations[mapSecId].height; + *x = gRegionMapLocations[mapSectionId].x; + *y = gRegionMapLocations[mapSectionId].y; + *width = gRegionMapLocations[mapSectionId].width; + *height = gRegionMapLocations[mapSectionId].height; } struct UnknownStruct3 @@ -1419,7 +1419,7 @@ static const u8 sUnknown_083E7920[][3] = struct UnknownStruct4 { const u8 *const *unk0; - u16 mapSecId; + u16 mapSectionId; u16 flag; }; @@ -1438,7 +1438,7 @@ static const struct SpritePalette sFlyTargetIconSpritePalette = {sFlyTargetIcons // Fly targets that are not cities or towns static const u16 sSpecialFlyAreas[][2] = { - // flag, mapSecId + // flag, mapSectionId {0x848, MAPSEC_BATTLE_TOWER}, {0xFFFF, MAPSEC_NONE}, }; @@ -1555,7 +1555,7 @@ void CB2_InitFlyRegionMap(void) InitRegionMap(&ewram0.regionMap, 0); CreateRegionMapCursor(0, 0); CreateRegionMapPlayerIcon(1, 1); - ewram0.unk6 = ewram0.regionMap.mapSecId; + ewram0.unk6 = ewram0.regionMap.mapSectionId; StringFill(ewramBlankMapName, CHAR_SPACE, 12); PrintFlyTargetName(); break; @@ -1620,12 +1620,12 @@ static void PrintFlyTargetName(void) { const struct UnknownStruct4 *r4 = &sUnknown_083E79C0[i]; - if (ewram0.regionMap.mapSecId == r4->mapSecId) + if (ewram0.regionMap.mapSectionId == r4->mapSectionId) { if (FlagGet(r4->flag)) { MenuDrawTextWindow(16, 14, 29, 19); - MenuPrint(ewram0.regionMap.mapSecName, 17, 15); + MenuPrint(ewram0.regionMap.mapSectionName, 17, 15); MenuPrint_RightAligned(r4->unk0[ewram0.regionMap.everGrandeCityArea], 29, 17); return; } @@ -1637,7 +1637,7 @@ static void PrintFlyTargetName(void) if (zero == 0) { MenuDrawTextWindow(16, 16, 29, 19); - MenuPrint(ewram0.regionMap.mapSecName, 17, 17); + MenuPrint(ewram0.regionMap.mapSectionName, 17, 17); MenuZeroFillWindowRect(16, 14, 29, 15); } } @@ -1717,10 +1717,10 @@ static void CreateSpecialAreaFlyTargetIcons(void) if (FlagGet(sSpecialFlyAreas[i][0])) { - u16 mapSecId = sSpecialFlyAreas[i][1]; + u16 mapSectionId = sSpecialFlyAreas[i][1]; u8 spriteId; - GetRegionMapLocationPosition(mapSecId, &x, &y, &width, &height); + GetRegionMapLocationPosition(mapSectionId, &x, &y, &width, &height); x = (x + 1) * 8; y = (y + 2) * 8; spriteId = CreateSprite(&gFlyTargetSpriteTemplate, x, y, 10); @@ -1729,7 +1729,7 @@ static void CreateSpecialAreaFlyTargetIcons(void) gSprites[spriteId].oam.size = 1; gSprites[spriteId].callback = SpriteCB_FlyTargetIcons; StartSpriteAnim(&gSprites[spriteId], 6); - gSprites[spriteId].data0 = mapSecId; + gSprites[spriteId].data0 = mapSectionId; } } } @@ -1737,8 +1737,8 @@ static void CreateSpecialAreaFlyTargetIcons(void) static void SpriteCB_FlyTargetIcons(struct Sprite *sprite) { - // Blink if our mapSecId is the one selected on the map - if (ewram0.regionMap.mapSecId == sprite->data0) + // Blink if our mapSectionId is the one selected on the map + if (ewram0.regionMap.mapSectionId == sprite->data0) { // Toggle visibility every 16 frames sprite->data1++; @@ -1815,7 +1815,7 @@ static void sub_80FC69C(void) FreeRegionMapIconResources(); if (ewramA6E != 0) { - switch (ewram0.regionMap.mapSecId) + switch (ewram0.regionMap.mapSectionId) { case MAPSEC_SOUTHERN_ISLAND: sub_8053538(22); @@ -1830,10 +1830,10 @@ static void sub_80FC69C(void) sub_8053538((FlagGet(0x854) && ewram0.regionMap.everGrandeCityArea == 0) ? 20 : 11); break; default: - if (sUnknown_083E7920[ewram0.regionMap.mapSecId][2] != 0) - sub_8053538(sUnknown_083E7920[ewram0.regionMap.mapSecId][2]); + if (sUnknown_083E7920[ewram0.regionMap.mapSectionId][2] != 0) + sub_8053538(sUnknown_083E7920[ewram0.regionMap.mapSectionId][2]); else - warp1_set_2(sUnknown_083E7920[ewram0.regionMap.mapSecId][0], sUnknown_083E7920[ewram0.regionMap.mapSecId][1], -1); + warp1_set_2(sUnknown_083E7920[ewram0.regionMap.mapSectionId][0], sUnknown_083E7920[ewram0.regionMap.mapSectionId][1], -1); break; } sub_80865BC(); -- cgit v1.2.3 From 9974fd77611d0321ebe51750427e1ec273c1c7af Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sat, 11 Nov 2017 15:32:38 -0500 Subject: eliminate remaining RAM pointers in src/ --- src/field/party_menu.c | 16 ++++++++-------- src/field/shop.c | 2 +- src/field/slot_machine.c | 9 ++++----- 3 files changed, 13 insertions(+), 14 deletions(-) (limited to 'src/field') diff --git a/src/field/party_menu.c b/src/field/party_menu.c index 25fd63463..42bb66f6f 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -1109,7 +1109,7 @@ _0806B980:\n\ movs r3, 0x3\n\ bl sub_806BA94\n\ _0806B98C:\n\ - ldr r0, _0806B99C @ =0x0201b000\n\ + ldr r0, _0806B99C @ =gSharedMem + 0x1B000\n\ ldr r1, _0806B9A0 @ =0x00000261\n\ adds r0, r1\n\ movs r1, 0x2\n\ @@ -1118,7 +1118,7 @@ _0806B98C:\n\ pop {r0}\n\ bx r0\n\ .align 2, 0\n\ -_0806B99C: .4byte 0x0201b000\n\ +_0806B99C: .4byte gSharedMem + 0x1B000\n\ _0806B9A0: .4byte 0x00000261\n\ .syntax divided\n"); } @@ -2548,7 +2548,7 @@ void sub_806CF04(void) { asm(".syntax unified\n\ push {r4,r5,lr}\n\ - ldr r4, _0806CF94 @ =0x02001000\n\ + ldr r4, _0806CF94 @ =gSharedMem + 0x1000\n\ ldrb r1, [r4, 0x3]\n\ lsls r0, r1, 4\n\ adds r0, r1\n\ @@ -2616,7 +2616,7 @@ void sub_806CF04(void) pop {r0}\n\ bx r0\n\ .align 2, 0\n\ -_0806CF94: .4byte 0x02001000\n\ +_0806CF94: .4byte gSharedMem + 0x1000\n\ _0806CF98: .4byte gSprites + 0x20\n\ _0806CF9C: .4byte SpriteCB_sub_806D37C\n\ .syntax divided\n"); @@ -5033,7 +5033,7 @@ void PrintStatGrowthsInLevelUpWindow(u8 taskId) { movs r2, 0x13\n\ mov r8, r2\n\ _0807086C:\n\ - ldr r1, _08070930 @ =0x0201c000\n\ + ldr r1, _08070930 @ =gSharedMem + 0x1C000\n\ ldr r0, [r1]\n\ ldr r1, _08070934 @ =StatDataTypes\n\ adds r1, r7, r1\n\ @@ -5041,7 +5041,7 @@ _0807086C:\n\ bl GetMonData\n\ adds r1, r7, 0x6\n\ lsls r1, 1\n\ - ldr r2, _08070938 @ =0x0201b264\n\ + ldr r2, _08070938 @ =gSharedMem + 0x1B264\n\ adds r1, r2, r1\n\ strh r0, [r1]\n\ lsls r6, r7, 1\n\ @@ -5123,9 +5123,9 @@ _0807086C:\n\ bx r0\n\ .align 2, 0\n\ _0807092C: .4byte gStringVar1\n\ -_08070930: .4byte 0x0201c000\n\ +_08070930: .4byte gSharedMem + 0x1C000\n\ _08070934: .4byte StatDataTypes\n\ -_08070938: .4byte 0x0201b264\n\ +_08070938: .4byte gSharedMem + 0x1B264\n\ _0807093C: .4byte StatNames\n\ _08070940: .4byte gOtherText_TallPlusAndRightArrow\n\ .syntax divided\n"); diff --git a/src/field/shop.c b/src/field/shop.c index 67e9b006e..493d8c748 100644 --- a/src/field/shop.c +++ b/src/field/shop.c @@ -279,7 +279,7 @@ void BuyMenuDrawGraphics(void) register const u32 zero asm("r6") = 0; DmaFill32(3, zero, addr, OAM_SIZE); LZDecompressVram(gBuyMenuFrame_Gfx, (void*)(VRAM + 0x7C00)); - LZDecompressWram(gBuyMenuFrame_Tilemap, (void *)0x02018000); + LZDecompressWram(gBuyMenuFrame_Tilemap, ewram18000_2); LoadCompressedPalette(gMenuMoneyPal, 0xC0, sizeof(gMenuMoneyPal)); FreeAllSpritePalettes(); ResetPaletteFade(); diff --git a/src/field/slot_machine.c b/src/field/slot_machine.c index d6b20feaa..89ec68b0a 100644 --- a/src/field/slot_machine.c +++ b/src/field/slot_machine.c @@ -3,6 +3,7 @@ #include "decompress.h" #include "palette.h" #include "task.h" +#include "ewram.h" struct UnkStruct2000000 { /*0x00*/ u8 filler00[61]; @@ -15,8 +16,6 @@ struct UnkStruct1 { /*0x02*/ s16 unk02; }; -extern struct UnkStruct2000000 gSharedMem; - extern struct UnkStruct1 *gUnknown_083ED048[]; extern const u16 gPalette_83EDE24[]; @@ -40,7 +39,7 @@ void sub_8104CAC(u8 arg0) { sub_8104DA4(); - task = &gTasks[gSharedMem.unk3D]; + task = &gTasks[ewram0_8->unk3D]; task->data[1] = arg0; i = 0; @@ -71,9 +70,9 @@ void sub_8106448(void) { u32 offsetRead, offsetWrite; u32 size; - LZDecompressWram(gSlotMachine_Gfx, (void *) 0x02010000); + LZDecompressWram(gSlotMachine_Gfx, ewram10000_2); - offsetRead = 0x02010000; + offsetRead = (u32)ewram10000_2; offsetWrite = BG_VRAM; size = SLOTMACHINE_GFX_TILES * 32; while (TRUE) -- cgit v1.2.3 From ed8c51dd404287c6355ba75dc4b9e2944d80e1d9 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sat, 11 Nov 2017 14:45:05 -0600 Subject: fix build after ewram changes --- src/field/field_weather.c | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) (limited to 'src/field') diff --git a/src/field/field_weather.c b/src/field/field_weather.c index a2abf7623..042655644 100644 --- a/src/field/field_weather.c +++ b/src/field/field_weather.c @@ -10,6 +10,7 @@ #include "sprite.h" #include "task.h" #include "trig.h" +#include "ewram.h" #define MACRO1(a) ((((a) >> 1) & 0xF) | (((a) >> 2) & 0xF0) | (((a) >> 3) & 0xF00)) @@ -20,7 +21,7 @@ struct RGBColor u16 b:5; }; -struct Struct2000000 +struct WeatherPaletteData { u16 data[0][0x1000]; // unknown length }; @@ -107,10 +108,6 @@ struct Weather u8 unknown_74E; }; -extern u8 ewram[]; - -#define ewram0 (*(struct Struct2000000 *)ewram) - #define gWeather gUnknown_0202F7E8 extern struct Weather gUnknown_0202F7E8; extern u8 gUnknown_0202FF38[]; @@ -151,7 +148,7 @@ const u8 *const gUnknown_08396FA8[] = DroughtPaletteData_3, DroughtPaletteData_4, DroughtPaletteData_5, - ewram, + gSharedMem, }; void sub_807C828(void) @@ -522,7 +519,7 @@ void sub_807CEBC(u8 a, u8 b, s8 c) for (i = 0; i < 16; i++) { if (gPlttBufferUnfaded[palOffset] != 0x2D9F) - gPlttBufferFaded[palOffset] = ewram0.data[c][MACRO1(gPlttBufferUnfaded[palOffset])]; + gPlttBufferFaded[palOffset] = eWeatherPaletteData.data[c][MACRO1(gPlttBufferUnfaded[palOffset])]; palOffset++; } } @@ -530,7 +527,7 @@ void sub_807CEBC(u8 a, u8 b, s8 c) { for (i = 0; i < 16; i++) { - gPlttBufferFaded[palOffset] = ewram0.data[c][MACRO1(gPlttBufferUnfaded[palOffset])]; + gPlttBufferFaded[palOffset] = eWeatherPaletteData.data[c][MACRO1(gPlttBufferUnfaded[palOffset])]; palOffset++; } } @@ -630,7 +627,7 @@ void sub_807D304(s8 a, u8 arg2, u16 c) b1 = color1.b; offset = ((b1 & 0x1E) << 7) | ((g1 & 0x1E) << 3) | ((r1 & 0x1E) >> 1); - color2 = *(struct RGBColor *)&ewram0.data[a][offset]; + color2 = *(struct RGBColor *)&eWeatherPaletteData.data[a][offset]; r2 = color2.r; g2 = color2.g; b2 = color2.b; @@ -873,17 +870,17 @@ void sub_807D8F0(u8 *a, u8 *b) if (r4 < 7) { r4--; - LZ77UnCompWram(gUnknown_08396FA8[r4], ewram0.data[r4]); + LZ77UnCompWram(gUnknown_08396FA8[r4], eWeatherPaletteData.data[r4]); if (r4 == 0) { - ewram0.data[r4][0] = 0x421; + eWeatherPaletteData.data[r4][0] = 0x421; for (i = 1; i < 0x1000; i++) - ewram0.data[r4][i] += ewram0.data[r4][i - 1]; + eWeatherPaletteData.data[r4][i] += eWeatherPaletteData.data[r4][i - 1]; } else { for (i = 0; i < 0x1000; i++) - ewram0.data[r4][i] += ewram0.data[r4 - 1][i]; + eWeatherPaletteData.data[r4][i] += eWeatherPaletteData.data[r4 - 1][i]; } (*a)++; if (*a == 7) -- cgit v1.2.3 From 2e4c7d675cc25181996edcfb879ed9c6e41d0bcc Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Sun, 12 Nov 2017 10:35:06 -0800 Subject: Use spaces instead of tabs in battle_tower --- src/field/battle_tower.c | 2829 +++++++++++++++++++++++----------------------- 1 file changed, 1414 insertions(+), 1415 deletions(-) (limited to 'src/field') diff --git a/src/field/battle_tower.c b/src/field/battle_tower.c index 3e60d3a9a..7a9c043b0 100644 --- a/src/field/battle_tower.c +++ b/src/field/battle_tower.c @@ -33,221 +33,221 @@ #endif static const u16 sBattleTowerHeldItems[] = { - ITEM_NONE, - ITEM_KINGS_ROCK, - ITEM_SITRUS_BERRY, - ITEM_ORAN_BERRY, - ITEM_CHESTO_BERRY, - ITEM_HARD_STONE, - ITEM_FOCUS_BAND, - ITEM_PERSIM_BERRY, - ITEM_MIRACLE_SEED, - ITEM_BERRY_JUICE, - ITEM_MACHO_BRACE, - ITEM_SILVER_POWDER, - ITEM_CHERI_BERRY, - ITEM_BLACK_GLASSES, - ITEM_BLACK_BELT, - ITEM_SOUL_DEW, - ITEM_CHOICE_BAND, - ITEM_MAGNET, - ITEM_SILK_SCARF, - ITEM_WHITE_HERB, - ITEM_DEEP_SEA_SCALE, - ITEM_DEEP_SEA_TOOTH, - ITEM_MYSTIC_WATER, - ITEM_SHARP_BEAK, - ITEM_QUICK_CLAW, - ITEM_LEFTOVERS, - ITEM_RAWST_BERRY, - ITEM_LIGHT_BALL, - ITEM_POISON_BARB, - ITEM_NEVER_MELT_ICE, - ITEM_ASPEAR_BERRY, - ITEM_SPELL_TAG, - ITEM_BRIGHT_POWDER, - ITEM_LEPPA_BERRY, - ITEM_SCOPE_LENS, - ITEM_TWISTED_SPOON, - ITEM_METAL_COAT, - ITEM_MENTAL_HERB, - ITEM_CHARCOAL, - ITEM_PECHA_BERRY, - ITEM_SOFT_SAND, - ITEM_LUM_BERRY, - ITEM_DRAGON_SCALE, - ITEM_DRAGON_FANG, - ITEM_IAPAPA_BERRY, - ITEM_WIKI_BERRY, - ITEM_SEA_INCENSE, - ITEM_SHELL_BELL, - ITEM_SALAC_BERRY, - ITEM_LANSAT_BERRY, - ITEM_APICOT_BERRY, - ITEM_STARF_BERRY, - ITEM_LIECHI_BERRY, - ITEM_STICK, - ITEM_LAX_INCENSE, - ITEM_AGUAV_BERRY, - ITEM_FIGY_BERRY, - ITEM_THICK_CLUB, - ITEM_MAGO_BERRY, - ITEM_METAL_POWDER, - ITEM_PETAYA_BERRY, - ITEM_LUCKY_PUNCH, - ITEM_GANLON_BERRY, + ITEM_NONE, + ITEM_KINGS_ROCK, + ITEM_SITRUS_BERRY, + ITEM_ORAN_BERRY, + ITEM_CHESTO_BERRY, + ITEM_HARD_STONE, + ITEM_FOCUS_BAND, + ITEM_PERSIM_BERRY, + ITEM_MIRACLE_SEED, + ITEM_BERRY_JUICE, + ITEM_MACHO_BRACE, + ITEM_SILVER_POWDER, + ITEM_CHERI_BERRY, + ITEM_BLACK_GLASSES, + ITEM_BLACK_BELT, + ITEM_SOUL_DEW, + ITEM_CHOICE_BAND, + ITEM_MAGNET, + ITEM_SILK_SCARF, + ITEM_WHITE_HERB, + ITEM_DEEP_SEA_SCALE, + ITEM_DEEP_SEA_TOOTH, + ITEM_MYSTIC_WATER, + ITEM_SHARP_BEAK, + ITEM_QUICK_CLAW, + ITEM_LEFTOVERS, + ITEM_RAWST_BERRY, + ITEM_LIGHT_BALL, + ITEM_POISON_BARB, + ITEM_NEVER_MELT_ICE, + ITEM_ASPEAR_BERRY, + ITEM_SPELL_TAG, + ITEM_BRIGHT_POWDER, + ITEM_LEPPA_BERRY, + ITEM_SCOPE_LENS, + ITEM_TWISTED_SPOON, + ITEM_METAL_COAT, + ITEM_MENTAL_HERB, + ITEM_CHARCOAL, + ITEM_PECHA_BERRY, + ITEM_SOFT_SAND, + ITEM_LUM_BERRY, + ITEM_DRAGON_SCALE, + ITEM_DRAGON_FANG, + ITEM_IAPAPA_BERRY, + ITEM_WIKI_BERRY, + ITEM_SEA_INCENSE, + ITEM_SHELL_BELL, + ITEM_SALAC_BERRY, + ITEM_LANSAT_BERRY, + ITEM_APICOT_BERRY, + ITEM_STARF_BERRY, + ITEM_LIECHI_BERRY, + ITEM_STICK, + ITEM_LAX_INCENSE, + ITEM_AGUAV_BERRY, + ITEM_FIGY_BERRY, + ITEM_THICK_CLUB, + ITEM_MAGO_BERRY, + ITEM_METAL_POWDER, + ITEM_PETAYA_BERRY, + ITEM_LUCKY_PUNCH, + ITEM_GANLON_BERRY, }; #include "../data/battle_tower/level_50_mons.h" #include "../data/battle_tower/level_100_mons.h" static const u8 sMaleTrainerClasses[] = { - TRAINER_CLASS_RUIN_MANIAC, - TRAINER_CLASS_TUBER_M, - TRAINER_CLASS_COOL_TRAINER_M, - TRAINER_CLASS_RICH_BOY, - TRAINER_CLASS_POKEMANIAC, - TRAINER_CLASS_SWIMMER_M, - TRAINER_CLASS_BLACK_BELT, - TRAINER_CLASS_GUITARIST, - TRAINER_CLASS_KINDLER, - TRAINER_CLASS_CAMPER, - TRAINER_CLASS_BUG_MANIAC, - TRAINER_CLASS_PSYCHIC_M, - TRAINER_CLASS_GENTLEMAN, - TRAINER_CLASS_SCHOOL_KID_M, - TRAINER_CLASS_POKEFAN_M, - TRAINER_CLASS_EXPERT_M, - TRAINER_CLASS_YOUNGSTER, - TRAINER_CLASS_FISHERMAN, - TRAINER_CLASS_CYCLING_TRIATHLETE_M, - TRAINER_CLASS_RUNNING_TRIATHLETE_M, - TRAINER_CLASS_SWIMMING_TRIATHLETE_M, - TRAINER_CLASS_DRAGON_TAMER, - TRAINER_CLASS_BIRD_KEEPER, - TRAINER_CLASS_NINJA_BOY, - TRAINER_CLASS_SAILOR, - TRAINER_CLASS_COLLECTOR, - TRAINER_CLASS_POKEMON_BREEDER_M, - TRAINER_CLASS_POKEMON_RANGER_M, - TRAINER_CLASS_BUG_CATCHER, - TRAINER_CLASS_HIKER, + TRAINER_CLASS_RUIN_MANIAC, + TRAINER_CLASS_TUBER_M, + TRAINER_CLASS_COOL_TRAINER_M, + TRAINER_CLASS_RICH_BOY, + TRAINER_CLASS_POKEMANIAC, + TRAINER_CLASS_SWIMMER_M, + TRAINER_CLASS_BLACK_BELT, + TRAINER_CLASS_GUITARIST, + TRAINER_CLASS_KINDLER, + TRAINER_CLASS_CAMPER, + TRAINER_CLASS_BUG_MANIAC, + TRAINER_CLASS_PSYCHIC_M, + TRAINER_CLASS_GENTLEMAN, + TRAINER_CLASS_SCHOOL_KID_M, + TRAINER_CLASS_POKEFAN_M, + TRAINER_CLASS_EXPERT_M, + TRAINER_CLASS_YOUNGSTER, + TRAINER_CLASS_FISHERMAN, + TRAINER_CLASS_CYCLING_TRIATHLETE_M, + TRAINER_CLASS_RUNNING_TRIATHLETE_M, + TRAINER_CLASS_SWIMMING_TRIATHLETE_M, + TRAINER_CLASS_DRAGON_TAMER, + TRAINER_CLASS_BIRD_KEEPER, + TRAINER_CLASS_NINJA_BOY, + TRAINER_CLASS_SAILOR, + TRAINER_CLASS_COLLECTOR, + TRAINER_CLASS_POKEMON_BREEDER_M, + TRAINER_CLASS_POKEMON_RANGER_M, + TRAINER_CLASS_BUG_CATCHER, + TRAINER_CLASS_HIKER, }; static const u8 sFemaleTrainerClasses[] = { - TRAINER_CLASS_AROMA_LADY, - TRAINER_CLASS_TUBER_F, - TRAINER_CLASS_COOL_TRAINER_F, - TRAINER_CLASS_HEX_MANIAC, - TRAINER_CLASS_LADY, - TRAINER_CLASS_BEAUTY, - TRAINER_CLASS_PSYCHIC_F, - TRAINER_CLASS_SCHOOL_KID_F, - TRAINER_CLASS_POKEFAN_F, - TRAINER_CLASS_EXPERT_F, - TRAINER_CLASS_CYCLING_TRIATHLETE_F, - TRAINER_CLASS_RUNNING_TRIATHLETE_F, - TRAINER_CLASS_SWIMMING_TRIATHLETE_F, - TRAINER_CLASS_BATTLE_GIRL, - TRAINER_CLASS_PARASOL_LADY, - TRAINER_CLASS_SWIMMER_F, - TRAINER_CLASS_PICNICKER, - TRAINER_CLASS_POKEMON_BREEDER_F, - TRAINER_CLASS_POKEMON_RANGER_F, - TRAINER_CLASS_LASS, + TRAINER_CLASS_AROMA_LADY, + TRAINER_CLASS_TUBER_F, + TRAINER_CLASS_COOL_TRAINER_F, + TRAINER_CLASS_HEX_MANIAC, + TRAINER_CLASS_LADY, + TRAINER_CLASS_BEAUTY, + TRAINER_CLASS_PSYCHIC_F, + TRAINER_CLASS_SCHOOL_KID_F, + TRAINER_CLASS_POKEFAN_F, + TRAINER_CLASS_EXPERT_F, + TRAINER_CLASS_CYCLING_TRIATHLETE_F, + TRAINER_CLASS_RUNNING_TRIATHLETE_F, + TRAINER_CLASS_SWIMMING_TRIATHLETE_F, + TRAINER_CLASS_BATTLE_GIRL, + TRAINER_CLASS_PARASOL_LADY, + TRAINER_CLASS_SWIMMER_F, + TRAINER_CLASS_PICNICKER, + TRAINER_CLASS_POKEMON_BREEDER_F, + TRAINER_CLASS_POKEMON_RANGER_F, + TRAINER_CLASS_LASS, }; static const u8 sMaleTrainerGfxIds[] = { - MAP_OBJ_GFX_HIKER, - MAP_OBJ_GFX_TUBER_M, - MAP_OBJ_GFX_MAN_4, - MAP_OBJ_GFX_BOY_4, - MAP_OBJ_GFX_MANIAC, - MAP_OBJ_GFX_RUNNING_TRIATHLETE_M, - MAP_OBJ_GFX_BLACK_BELT, - MAP_OBJ_GFX_MAN_6, - MAP_OBJ_GFX_MAN_6, - MAP_OBJ_GFX_CAMPER, - MAP_OBJ_GFX_MANIAC, - MAP_OBJ_GFX_PSYCHIC_M, - MAP_OBJ_GFX_GENTLEMAN, - MAP_OBJ_GFX_SCHOOL_KID_M, - MAP_OBJ_GFX_MAN_3, - MAP_OBJ_GFX_OLD_MAN_1, - MAP_OBJ_GFX_YOUNGSTER, - MAP_OBJ_GFX_FISHERMAN, - MAP_OBJ_GFX_CYCLING_TRIATHLETE_M, - MAP_OBJ_GFX_RUNNING_TRIATHLETE_M, - MAP_OBJ_GFX_RUNNING_TRIATHLETE_M, - MAP_OBJ_GFX_MAN_4, - MAP_OBJ_GFX_MAN_6, - MAP_OBJ_GFX_LITTLE_BOY_1, - MAP_OBJ_GFX_SAILOR, - MAP_OBJ_GFX_MANIAC, - MAP_OBJ_GFX_MAN_5, - MAP_OBJ_GFX_CAMPER, - MAP_OBJ_GFX_BUG_CATCHER, - MAP_OBJ_GFX_HIKER, + MAP_OBJ_GFX_HIKER, + MAP_OBJ_GFX_TUBER_M, + MAP_OBJ_GFX_MAN_4, + MAP_OBJ_GFX_BOY_4, + MAP_OBJ_GFX_MANIAC, + MAP_OBJ_GFX_RUNNING_TRIATHLETE_M, + MAP_OBJ_GFX_BLACK_BELT, + MAP_OBJ_GFX_MAN_6, + MAP_OBJ_GFX_MAN_6, + MAP_OBJ_GFX_CAMPER, + MAP_OBJ_GFX_MANIAC, + MAP_OBJ_GFX_PSYCHIC_M, + MAP_OBJ_GFX_GENTLEMAN, + MAP_OBJ_GFX_SCHOOL_KID_M, + MAP_OBJ_GFX_MAN_3, + MAP_OBJ_GFX_OLD_MAN_1, + MAP_OBJ_GFX_YOUNGSTER, + MAP_OBJ_GFX_FISHERMAN, + MAP_OBJ_GFX_CYCLING_TRIATHLETE_M, + MAP_OBJ_GFX_RUNNING_TRIATHLETE_M, + MAP_OBJ_GFX_RUNNING_TRIATHLETE_M, + MAP_OBJ_GFX_MAN_4, + MAP_OBJ_GFX_MAN_6, + MAP_OBJ_GFX_LITTLE_BOY_1, + MAP_OBJ_GFX_SAILOR, + MAP_OBJ_GFX_MANIAC, + MAP_OBJ_GFX_MAN_5, + MAP_OBJ_GFX_CAMPER, + MAP_OBJ_GFX_BUG_CATCHER, + MAP_OBJ_GFX_HIKER, }; static const u8 sFemaleTrainerGfxIds[] = { - MAP_OBJ_GFX_WOMAN_3, - MAP_OBJ_GFX_TUBER_F, - MAP_OBJ_GFX_WOMAN_7, - MAP_OBJ_GFX_WOMAN_1, - MAP_OBJ_GFX_WOMAN_3, - MAP_OBJ_GFX_BEAUTY, - MAP_OBJ_GFX_LASS, - MAP_OBJ_GFX_GIRL_3, - MAP_OBJ_GFX_WOMAN_2, - MAP_OBJ_GFX_OLD_WOMAN_1, - MAP_OBJ_GFX_CYCLING_TRIATHLETE_F, - MAP_OBJ_GFX_RUNNING_TRIATHLETE_F, - MAP_OBJ_GFX_RUNNING_TRIATHLETE_F, - MAP_OBJ_GFX_GIRL_3, - MAP_OBJ_GFX_WOMAN_7, - MAP_OBJ_GFX_RUNNING_TRIATHLETE_F, - MAP_OBJ_GFX_PICNICKER, - MAP_OBJ_GFX_WOMAN_3, - MAP_OBJ_GFX_PICNICKER, - MAP_OBJ_GFX_LASS, + MAP_OBJ_GFX_WOMAN_3, + MAP_OBJ_GFX_TUBER_F, + MAP_OBJ_GFX_WOMAN_7, + MAP_OBJ_GFX_WOMAN_1, + MAP_OBJ_GFX_WOMAN_3, + MAP_OBJ_GFX_BEAUTY, + MAP_OBJ_GFX_LASS, + MAP_OBJ_GFX_GIRL_3, + MAP_OBJ_GFX_WOMAN_2, + MAP_OBJ_GFX_OLD_WOMAN_1, + MAP_OBJ_GFX_CYCLING_TRIATHLETE_F, + MAP_OBJ_GFX_RUNNING_TRIATHLETE_F, + MAP_OBJ_GFX_RUNNING_TRIATHLETE_F, + MAP_OBJ_GFX_GIRL_3, + MAP_OBJ_GFX_WOMAN_7, + MAP_OBJ_GFX_RUNNING_TRIATHLETE_F, + MAP_OBJ_GFX_PICNICKER, + MAP_OBJ_GFX_WOMAN_3, + MAP_OBJ_GFX_PICNICKER, + MAP_OBJ_GFX_LASS, }; const u16 gBattleTowerBannedSpecies[] = { - SPECIES_MEW, - SPECIES_MEWTWO, - SPECIES_HO_OH, - SPECIES_LUGIA, - SPECIES_CELEBI, - SPECIES_KYOGRE, - SPECIES_GROUDON, - SPECIES_RAYQUAZA, - SPECIES_JIRACHI, - SPECIES_DEOXYS, - 0xFFFF, + SPECIES_MEW, + SPECIES_MEWTWO, + SPECIES_HO_OH, + SPECIES_LUGIA, + SPECIES_CELEBI, + SPECIES_KYOGRE, + SPECIES_GROUDON, + SPECIES_RAYQUAZA, + SPECIES_JIRACHI, + SPECIES_DEOXYS, + 0xFFFF, }; // Item prizes for battle tower streaks of 5 or fewer sets. /*static*/ const u16 sShortStreakPrizes[] = { - ITEM_HP_UP, - ITEM_PROTEIN, - ITEM_IRON, - ITEM_CALCIUM, - ITEM_CARBOS, - ITEM_ZINC, + ITEM_HP_UP, + ITEM_PROTEIN, + ITEM_IRON, + ITEM_CALCIUM, + ITEM_CARBOS, + ITEM_ZINC, }; // Item prizes for battle tower streaks of greater than 5 sets. /*static*/ const u16 sLongStreakPrizes[] = { - ITEM_BRIGHT_POWDER, - ITEM_WHITE_HERB, - ITEM_QUICK_CLAW, - ITEM_LEFTOVERS, - ITEM_MENTAL_HERB, - ITEM_KINGS_ROCK, - ITEM_FOCUS_BAND, - ITEM_SCOPE_LENS, - ITEM_CHOICE_BAND, + ITEM_BRIGHT_POWDER, + ITEM_WHITE_HERB, + ITEM_QUICK_CLAW, + ITEM_LEFTOVERS, + ITEM_MENTAL_HERB, + ITEM_KINGS_ROCK, + ITEM_FOCUS_BAND, + ITEM_SCOPE_LENS, + ITEM_CHOICE_BAND, }; static void ResetBattleTowerStreak(u8 levelType); @@ -281,243 +281,243 @@ extern struct BattlePokemon gBattleMons[]; void sub_8134548(void) { - u8 var1 = 0; - s32 levelType; - - for (levelType = 0; levelType < 2; levelType++) - { - switch (gSaveBlock2.battleTower.var_4AE[levelType]) - { - case 0: - default: - ResetBattleTowerStreak(levelType); - if (!var1) - { - VarSet(VAR_0x4000, 5); - } - break; - case 1: - ResetBattleTowerStreak(levelType); - VarSet(VAR_0x4000, 1); - var1++; - break; - case 4: - VarSet(VAR_0x4000, 2); - var1++; - break; - case 5: - VarSet(VAR_0x4000, 3); - var1++; - break; - case 2: - VarSet(VAR_0x4000, 4); - var1++; - break; - case 3: - case 6: - break; - } - } - - if ((gSaveBlock2.battleTower.var_4AE[0] == 3 || gSaveBlock2.battleTower.var_4AE[0] == 6) - && (gSaveBlock2.battleTower.var_4AE[1] == 3 || gSaveBlock2.battleTower.var_4AE[1] == 6)) - { - VarSet(VAR_0x4000, 5); - } - - ValidateBattleTowerRecordChecksums(); + u8 var1 = 0; + s32 levelType; + + for (levelType = 0; levelType < 2; levelType++) + { + switch (gSaveBlock2.battleTower.var_4AE[levelType]) + { + case 0: + default: + ResetBattleTowerStreak(levelType); + if (!var1) + { + VarSet(VAR_0x4000, 5); + } + break; + case 1: + ResetBattleTowerStreak(levelType); + VarSet(VAR_0x4000, 1); + var1++; + break; + case 4: + VarSet(VAR_0x4000, 2); + var1++; + break; + case 5: + VarSet(VAR_0x4000, 3); + var1++; + break; + case 2: + VarSet(VAR_0x4000, 4); + var1++; + break; + case 3: + case 6: + break; + } + } + + if ((gSaveBlock2.battleTower.var_4AE[0] == 3 || gSaveBlock2.battleTower.var_4AE[0] == 6) + && (gSaveBlock2.battleTower.var_4AE[1] == 3 || gSaveBlock2.battleTower.var_4AE[1] == 6)) + { + VarSet(VAR_0x4000, 5); + } + + ValidateBattleTowerRecordChecksums(); } void ResetBattleTowerStreak(u8 levelType) { - gSaveBlock2.battleTower.var_4AE[levelType] = 0; - gSaveBlock2.battleTower.curChallengeBattleNum[levelType] = 1; - gSaveBlock2.battleTower.curStreakChallengesNum[levelType] = 1; + gSaveBlock2.battleTower.var_4AE[levelType] = 0; + gSaveBlock2.battleTower.curChallengeBattleNum[levelType] = 1; + gSaveBlock2.battleTower.curStreakChallengesNum[levelType] = 1; } // Checks if the next trainer in Battle Tower should be the E-Reader trainer. bool8 ShouldBattleEReaderTrainer(u8 levelType, u16 winStreak) { - u8 trainerTeamLevel; - u8 monLevel; - s32 i; - u16 validPartySpecies[6]; - u16 validPartyHeldItems[6]; - u8 numValid; - - numValid = 0; - - ValidateEReaderTrainer(); - - if (gScriptResult != 0 || gSaveBlock2.battleTower.ereaderTrainer.winStreak != winStreak) - { - return FALSE; - } - - trainerTeamLevel = 50; - if (levelType != 0) - { - trainerTeamLevel = 100; - } - - for (i = 0; i < 3; i++) - { - monLevel = gSaveBlock2.battleTower.ereaderTrainer.party[i].level; - if (gSaveBlock2.battleTower.ereaderTrainer.party[i].level != trainerTeamLevel) - { - return FALSE; - } - - CheckMonBattleTowerBanlist( - gSaveBlock2.battleTower.ereaderTrainer.party[i].species, - gSaveBlock2.battleTower.ereaderTrainer.party[i].heldItem, - 1, - levelType, - monLevel, - validPartySpecies, - validPartyHeldItems, - &numValid); - } - - return numValid == 3; + u8 trainerTeamLevel; + u8 monLevel; + s32 i; + u16 validPartySpecies[6]; + u16 validPartyHeldItems[6]; + u8 numValid; + + numValid = 0; + + ValidateEReaderTrainer(); + + if (gScriptResult != 0 || gSaveBlock2.battleTower.ereaderTrainer.winStreak != winStreak) + { + return FALSE; + } + + trainerTeamLevel = 50; + if (levelType != 0) + { + trainerTeamLevel = 100; + } + + for (i = 0; i < 3; i++) + { + monLevel = gSaveBlock2.battleTower.ereaderTrainer.party[i].level; + if (gSaveBlock2.battleTower.ereaderTrainer.party[i].level != trainerTeamLevel) + { + return FALSE; + } + + CheckMonBattleTowerBanlist( + gSaveBlock2.battleTower.ereaderTrainer.party[i].species, + gSaveBlock2.battleTower.ereaderTrainer.party[i].heldItem, + 1, + levelType, + monLevel, + validPartySpecies, + validPartyHeldItems, + &numValid); + } + + return numValid == 3; } bool8 sub_81346F4(void) { - s32 recordIndex, i; - u8 battleTowerLevelType; - u16 winStreak; - bool8 retVal; - s32 numCandidates; - u32 trainerIds[5]; - - numCandidates = 0; - battleTowerLevelType = gSaveBlock2.battleTower.battleTowerLevelType; - - winStreak = GetCurrentBattleTowerWinStreak(battleTowerLevelType); - if (ShouldBattleEReaderTrainer(battleTowerLevelType, winStreak)) - { - gSaveBlock2.battleTower.battleTowerTrainerId = BATTLE_TOWER_EREADER_TRAINER_ID; - retVal = TRUE; - } - else - { - // Check if one of the battle tower trainers from record mixing should be the next trainer. - for (recordIndex = 0; recordIndex < 5; recordIndex++) - { - struct BattleTowerRecord *record = &gSaveBlock2.battleTower.records[recordIndex]; - u32 recordHasData = 0; - u32 checksum = 0; - for (i = 0; i < sizeof(struct BattleTowerRecord) / sizeof(u32) - 1; i++) - { - recordHasData |= ((u32 *)record)[i]; - checksum += ((u32 *)record)[i]; - } - - if (gSaveBlock2.battleTower.records[recordIndex].winStreak == winStreak - && gSaveBlock2.battleTower.records[recordIndex].battleTowerLevelType == battleTowerLevelType - && recordHasData - && gSaveBlock2.battleTower.records[recordIndex].checksum == checksum) - { - trainerIds[numCandidates] = recordIndex; - numCandidates++; - } - } - - if (numCandidates == 0) - { - retVal = FALSE; - } - else - { - gSaveBlock2.battleTower.battleTowerTrainerId = trainerIds[Random() % numCandidates] + BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID; - retVal = TRUE; - } - } - - return retVal; + s32 recordIndex, i; + u8 battleTowerLevelType; + u16 winStreak; + bool8 retVal; + s32 numCandidates; + u32 trainerIds[5]; + + numCandidates = 0; + battleTowerLevelType = gSaveBlock2.battleTower.battleTowerLevelType; + + winStreak = GetCurrentBattleTowerWinStreak(battleTowerLevelType); + if (ShouldBattleEReaderTrainer(battleTowerLevelType, winStreak)) + { + gSaveBlock2.battleTower.battleTowerTrainerId = BATTLE_TOWER_EREADER_TRAINER_ID; + retVal = TRUE; + } + else + { + // Check if one of the battle tower trainers from record mixing should be the next trainer. + for (recordIndex = 0; recordIndex < 5; recordIndex++) + { + struct BattleTowerRecord *record = &gSaveBlock2.battleTower.records[recordIndex]; + u32 recordHasData = 0; + u32 checksum = 0; + for (i = 0; i < sizeof(struct BattleTowerRecord) / sizeof(u32) - 1; i++) + { + recordHasData |= ((u32 *)record)[i]; + checksum += ((u32 *)record)[i]; + } + + if (gSaveBlock2.battleTower.records[recordIndex].winStreak == winStreak + && gSaveBlock2.battleTower.records[recordIndex].battleTowerLevelType == battleTowerLevelType + && recordHasData + && gSaveBlock2.battleTower.records[recordIndex].checksum == checksum) + { + trainerIds[numCandidates] = recordIndex; + numCandidates++; + } + } + + if (numCandidates == 0) + { + retVal = FALSE; + } + else + { + gSaveBlock2.battleTower.battleTowerTrainerId = trainerIds[Random() % numCandidates] + BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID; + retVal = TRUE; + } + } + + return retVal; } // void sub_81347F8(void) // { -// bool8 levelType = gSaveBlock2.battleTower.battleTowerLevelType; -// if (sub_81346F4()) -// { -// SetBattleTowerTrainerGfxId(gSaveBlock2.battleTower.battleTowerTrainerId); -// gSaveBlock2.battleTower.var_4C1[gSaveBlock2.battleTower.curChallengeBattleNum[levelType]] = gSaveBlock2.battleTower.battleTowerTrainerId; -// } -// else -// { -// u16 var1; - -// if (gSaveBlock2.battleTower.curStreakChallengesNum[levelType] > 7) -// { -// while (1) -// { -// s32 i; -// u32 temp = ((Random() & 0xFF) * 30) >> 8; -// var1 = temp + 70; -// for (i = 0; i < gSaveBlock2.battleTower.curChallengeBattleNum[levelType] - 1 && var1 != gSaveBlock2.battleTower.var_4C1[i]; i++) // TODO: [i + 1]??? -// { } - -// if (i == gSaveBlock2.battleTower.curChallengeBattleNum[levelType] - 1) -// { -// break; -// } -// } -// } -// else -// { -// if (gSaveBlock2.battleTower.curChallengeBattleNum[levelType] == 7) -// { -// while (1) -// { -// s32 i; -// u32 temp = ((Random() & 0xFF) * 5); -// u32 temp2 = (((gSaveBlock2.battleTower.curStreakChallengesNum[levelType] - 1) * 10) + 20); -// var1 = temp / 128 + temp2; -// for (i = 0; i < gSaveBlock2.battleTower.curChallengeBattleNum[levelType] - 1 && gSaveBlock2.battleTower.var_4C1[i] != var1; i++) // TODO: [i + 1]???? -// { } - -// if (i == gSaveBlock2.battleTower.curChallengeBattleNum[levelType] - 1) -// { -// break; -// } -// } -// } -// else -// { -// while (1) -// { -// s32 i; -// u32 temp = ((Random() & 0xFF) * 320); -// u32 temp2 = ((gSaveBlock2.battleTower.curStreakChallengesNum[levelType] - 1) * 10); -// var1 = temp + temp2; -// for (i = 0; i < gSaveBlock2.battleTower.curChallengeBattleNum[levelType] - 1 && gSaveBlock2.battleTower.var_4C1[i] != var1; i++) -// { } - -// if (i == gSaveBlock2.battleTower.curChallengeBattleNum[levelType] - 1) -// { -// break; -// } -// } -// } -// } - -// gSaveBlock2.battleTower.battleTowerTrainerId = var1; -// SetBattleTowerTrainerGfxId(gSaveBlock2.battleTower.battleTowerTrainerId); - -// if (gSaveBlock2.battleTower.curChallengeBattleNum[levelType] < 7) -// { -// gSaveBlock2.battleTower.var_4C1[gSaveBlock2.battleTower.curChallengeBattleNum[levelType]] = gSaveBlock2.battleTower.battleTowerTrainerId; -// } -// } +// bool8 levelType = gSaveBlock2.battleTower.battleTowerLevelType; +// if (sub_81346F4()) +// { +// SetBattleTowerTrainerGfxId(gSaveBlock2.battleTower.battleTowerTrainerId); +// gSaveBlock2.battleTower.var_4C1[gSaveBlock2.battleTower.curChallengeBattleNum[levelType]] = gSaveBlock2.battleTower.battleTowerTrainerId; +// } +// else +// { +// u16 var1; + +// if (gSaveBlock2.battleTower.curStreakChallengesNum[levelType] > 7) +// { +// while (1) +// { +// s32 i; +// u32 temp = ((Random() & 0xFF) * 30) >> 8; +// var1 = temp + 70; +// for (i = 0; i < gSaveBlock2.battleTower.curChallengeBattleNum[levelType] - 1 && var1 != gSaveBlock2.battleTower.var_4C1[i]; i++) // TODO: [i + 1]??? +// { } + +// if (i == gSaveBlock2.battleTower.curChallengeBattleNum[levelType] - 1) +// { +// break; +// } +// } +// } +// else +// { +// if (gSaveBlock2.battleTower.curChallengeBattleNum[levelType] == 7) +// { +// while (1) +// { +// s32 i; +// u32 temp = ((Random() & 0xFF) * 5); +// u32 temp2 = (((gSaveBlock2.battleTower.curStreakChallengesNum[levelType] - 1) * 10) + 20); +// var1 = temp / 128 + temp2; +// for (i = 0; i < gSaveBlock2.battleTower.curChallengeBattleNum[levelType] - 1 && gSaveBlock2.battleTower.var_4C1[i] != var1; i++) // TODO: [i + 1]???? +// { } + +// if (i == gSaveBlock2.battleTower.curChallengeBattleNum[levelType] - 1) +// { +// break; +// } +// } +// } +// else +// { +// while (1) +// { +// s32 i; +// u32 temp = ((Random() & 0xFF) * 320); +// u32 temp2 = ((gSaveBlock2.battleTower.curStreakChallengesNum[levelType] - 1) * 10); +// var1 = temp + temp2; +// for (i = 0; i < gSaveBlock2.battleTower.curChallengeBattleNum[levelType] - 1 && gSaveBlock2.battleTower.var_4C1[i] != var1; i++) +// { } + +// if (i == gSaveBlock2.battleTower.curChallengeBattleNum[levelType] - 1) +// { +// break; +// } +// } +// } +// } + +// gSaveBlock2.battleTower.battleTowerTrainerId = var1; +// SetBattleTowerTrainerGfxId(gSaveBlock2.battleTower.battleTowerTrainerId); + +// if (gSaveBlock2.battleTower.curChallengeBattleNum[levelType] < 7) +// { +// gSaveBlock2.battleTower.var_4C1[gSaveBlock2.battleTower.curChallengeBattleNum[levelType]] = gSaveBlock2.battleTower.battleTowerTrainerId; +// } +// } // } __attribute__((naked)) void sub_81347F8(void) { - asm(".syntax unified\n\ + asm(".syntax unified\n\ push {r4-r7,lr}\n\ mov r7, r10\n\ mov r6, r9\n\ @@ -780,129 +780,129 @@ _081349F8: .4byte 0x00000569\n\ void SetBattleTowerTrainerGfxId(u8 trainerIndex) { - u32 i; - u8 trainerClass; - - if (trainerIndex < BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID) - { - trainerClass = gBattleTowerTrainers[trainerIndex].trainerClass; - } - else if (trainerIndex < BATTLE_TOWER_EREADER_TRAINER_ID) - { - trainerClass = gSaveBlock2.battleTower.records[trainerIndex - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].trainerClass; - } - else - { - trainerClass = gSaveBlock2.battleTower.ereaderTrainer.trainerClass; - } - - for (i = 0; i < 30 && sMaleTrainerClasses[i] != trainerClass; i++); - if (i != 30) - { - u8 trainerObjectGfxId = sMaleTrainerGfxIds[i]; - VarSet(0x4010, trainerObjectGfxId); - return; - } - - for (i = 0; i < 20 && sFemaleTrainerClasses[i] != trainerClass; i++); - if (i != 20) - { - u8 trainerObjectGfxId = sFemaleTrainerGfxIds[i]; - VarSet(0x4010, trainerObjectGfxId); - return; - } - - VarSet(0x4010, MAP_OBJ_GFX_BOY_1); + u32 i; + u8 trainerClass; + + if (trainerIndex < BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID) + { + trainerClass = gBattleTowerTrainers[trainerIndex].trainerClass; + } + else if (trainerIndex < BATTLE_TOWER_EREADER_TRAINER_ID) + { + trainerClass = gSaveBlock2.battleTower.records[trainerIndex - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].trainerClass; + } + else + { + trainerClass = gSaveBlock2.battleTower.ereaderTrainer.trainerClass; + } + + for (i = 0; i < 30 && sMaleTrainerClasses[i] != trainerClass; i++); + if (i != 30) + { + u8 trainerObjectGfxId = sMaleTrainerGfxIds[i]; + VarSet(0x4010, trainerObjectGfxId); + return; + } + + for (i = 0; i < 20 && sFemaleTrainerClasses[i] != trainerClass; i++); + if (i != 20) + { + u8 trainerObjectGfxId = sFemaleTrainerGfxIds[i]; + VarSet(0x4010, trainerObjectGfxId); + return; + } + + VarSet(0x4010, MAP_OBJ_GFX_BOY_1); } void SetEReaderTrainerGfxId(void) { - SetBattleTowerTrainerGfxId(BATTLE_TOWER_EREADER_TRAINER_ID); + SetBattleTowerTrainerGfxId(BATTLE_TOWER_EREADER_TRAINER_ID); } // void sub_8134AC0(struct BattleTowerRecord *record) // { -// u16 var1[6]; -// u16 var2[6]; -// s32 i, j, k; -// s16 l = 0; - -// for (i = 0; i < 5; i++) -// { -// k = 0; -// for (j = 0; j < 4 && gSaveBlock2.battleTower.records[i].trainerId[j] == record->trainerId[j]; j++); -// if (j == 4) -// { -// for (; k < 7 && gSaveBlock2.battleTower.records[i].name[4] == record->name[4]; k++) -// { -// if (record->name[4] == 0xFF) -// { -// k = 7; -// break; -// } -// } -// } - -// if (k == 7) -// { -// break; -// } -// } - -// if (i < 5) -// { -// gSaveBlock2.battleTower.records[i] = *record; -// return; -// } - -// i = 0; -// while (i < 5) -// { -// if (gSaveBlock2.battleTower.records[i].winStreak == 0) -// { -// if (i > 4) -// { -// break; -// } - -// gSaveBlock2.battleTower.records[i] = *record; -// return; -// } - -// i++; -// } - -// var1[0] = gSaveBlock2.battleTower.records[0].winStreak; -// var2[0] = 0; -// l++; - -// for (i = 1; i < 5; i++) -// { -// j = 0; -// if (j < l) -// { -// for (; gSaveBlock2.battleTower.records[i].winStreak <= var1[j]; j++) -// { -// if (gSaveBlock2.battleTower.records[i].winStreak < var1[j]) -// { -// j = 0; -// l = 1; -// var1[0] = gSaveBlock2.battleTower.records[i].winStreak; -// var2[0] = i; -// break; -// } -// } -// } - -// if (j == l) -// { -// var1[l] = gSaveBlock2.battleTower.records[i].winStreak; -// var2[l] = i; -// l++; -// } -// } - -// gSaveBlock2.battleTower.records[var2[(Random() % l)]] = *record; +// u16 var1[6]; +// u16 var2[6]; +// s32 i, j, k; +// s16 l = 0; + +// for (i = 0; i < 5; i++) +// { +// k = 0; +// for (j = 0; j < 4 && gSaveBlock2.battleTower.records[i].trainerId[j] == record->trainerId[j]; j++); +// if (j == 4) +// { +// for (; k < 7 && gSaveBlock2.battleTower.records[i].name[4] == record->name[4]; k++) +// { +// if (record->name[4] == 0xFF) +// { +// k = 7; +// break; +// } +// } +// } + +// if (k == 7) +// { +// break; +// } +// } + +// if (i < 5) +// { +// gSaveBlock2.battleTower.records[i] = *record; +// return; +// } + +// i = 0; +// while (i < 5) +// { +// if (gSaveBlock2.battleTower.records[i].winStreak == 0) +// { +// if (i > 4) +// { +// break; +// } + +// gSaveBlock2.battleTower.records[i] = *record; +// return; +// } + +// i++; +// } + +// var1[0] = gSaveBlock2.battleTower.records[0].winStreak; +// var2[0] = 0; +// l++; + +// for (i = 1; i < 5; i++) +// { +// j = 0; +// if (j < l) +// { +// for (; gSaveBlock2.battleTower.records[i].winStreak <= var1[j]; j++) +// { +// if (gSaveBlock2.battleTower.records[i].winStreak < var1[j]) +// { +// j = 0; +// l = 1; +// var1[0] = gSaveBlock2.battleTower.records[i].winStreak; +// var2[0] = i; +// break; +// } +// } +// } + +// if (j == l) +// { +// var1[l] = gSaveBlock2.battleTower.records[i].winStreak; +// var2[l] = i; +// l++; +// } +// } + +// gSaveBlock2.battleTower.records[var2[(Random() % l)]] = *record; // } __attribute__((naked)) void sub_8134AC0(struct BattleTowerRecord *record) @@ -1137,707 +1137,706 @@ _08134C5E:\n\ bx r0\n\ .align 2, 0\n\ _08134C70: .4byte gSaveBlock2\n\ - .syntax divided\n"); + .syntax divided\n"); } u8 get_trainer_class_pic_index(void) { - if (gSaveBlock2.battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID) - { - return gTrainerClassToPicIndex[gSaveBlock2.battleTower.ereaderTrainer.trainerClass]; - } - else if (gSaveBlock2.battleTower.battleTowerTrainerId < BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID) - { - return gTrainerClassToPicIndex[gBattleTowerTrainers[gSaveBlock2.battleTower.battleTowerTrainerId].trainerClass]; - } - else - { - return gTrainerClassToPicIndex[gSaveBlock2.battleTower.records[gSaveBlock2.battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].trainerClass]; - } + if (gSaveBlock2.battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID) + { + return gTrainerClassToPicIndex[gSaveBlock2.battleTower.ereaderTrainer.trainerClass]; + } + else if (gSaveBlock2.battleTower.battleTowerTrainerId < BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID) + { + return gTrainerClassToPicIndex[gBattleTowerTrainers[gSaveBlock2.battleTower.battleTowerTrainerId].trainerClass]; + } + else + { + return gTrainerClassToPicIndex[gSaveBlock2.battleTower.records[gSaveBlock2.battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].trainerClass]; + } } u8 get_trainer_class_name_index(void) { - if (gSaveBlock2.battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID) - { - return gTrainerClassToNameIndex[gSaveBlock2.battleTower.ereaderTrainer.trainerClass]; - } - else if (gSaveBlock2.battleTower.battleTowerTrainerId >= BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID) - { - return gTrainerClassToNameIndex[gSaveBlock2.battleTower.records[gSaveBlock2.battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].trainerClass]; - } - else - { - return gTrainerClassToNameIndex[gBattleTowerTrainers[gSaveBlock2.battleTower.battleTowerTrainerId].trainerClass]; - } + if (gSaveBlock2.battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID) + { + return gTrainerClassToNameIndex[gSaveBlock2.battleTower.ereaderTrainer.trainerClass]; + } + else if (gSaveBlock2.battleTower.battleTowerTrainerId >= BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID) + { + return gTrainerClassToNameIndex[gSaveBlock2.battleTower.records[gSaveBlock2.battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].trainerClass]; + } + else + { + return gTrainerClassToNameIndex[gBattleTowerTrainers[gSaveBlock2.battleTower.battleTowerTrainerId].trainerClass]; + } } void get_trainer_name(u8* dest) { - s32 i; - - if (gSaveBlock2.battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID) - { - for (i = 0; i < 7; i++) - { - dest[i] = gSaveBlock2.battleTower.ereaderTrainer.name[i]; - } - } - else if (gSaveBlock2.battleTower.battleTowerTrainerId < BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID) - { - for (i = 0; i < 7; i++) - { - dest[i] = gBattleTowerTrainers[gSaveBlock2.battleTower.battleTowerTrainerId].name[i]; - } - } - else - { - for (i = 0; i < 7; i++) - { - dest[i] = gSaveBlock2.battleTower.records[gSaveBlock2.battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].name[i]; - } - } - - dest[i] = 0xFF; + s32 i; + + if (gSaveBlock2.battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID) + { + for (i = 0; i < 7; i++) + { + dest[i] = gSaveBlock2.battleTower.ereaderTrainer.name[i]; + } + } + else if (gSaveBlock2.battleTower.battleTowerTrainerId < BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID) + { + for (i = 0; i < 7; i++) + { + dest[i] = gBattleTowerTrainers[gSaveBlock2.battleTower.battleTowerTrainerId].name[i]; + } + } + else + { + for (i = 0; i < 7; i++) + { + dest[i] = gSaveBlock2.battleTower.records[gSaveBlock2.battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].name[i]; + } + } + + dest[i] = 0xFF; } void FillBattleTowerTrainerParty(void) { - s32 partyIndex, i; - u16 chosenMonIndices[3]; - u8 friendship; - u8 level; - u8 fixedIV; - u8 battleMonsOffset; - u8 monPoolSize; - u8 teamFlags; - const struct BattleTowerPokemon *battleTowerMons; - - battleMonsOffset = 0; - monPoolSize = 60; - friendship = 255; - - ZeroEnemyPartyMons(); - - // Different trainers have access to different sets of pokemon to use in battle. - // The pokemon later in gBattleTowerLevel100Mons or gBattleTowerLevel50Mons are - // stronger. Additionally, the later trainers' pokemon are granted higher IVs. - if (gSaveBlock2.battleTower.battleTowerTrainerId < 20) - { - fixedIV = 6; - } - else if (gSaveBlock2.battleTower.battleTowerTrainerId < 30) - { - fixedIV = 9; - battleMonsOffset = 30; - } - else if (gSaveBlock2.battleTower.battleTowerTrainerId < 40) - { - fixedIV = 12; - battleMonsOffset = 60; - } - else if (gSaveBlock2.battleTower.battleTowerTrainerId < 50) - { - fixedIV = 15; - battleMonsOffset = 90; - } - else if (gSaveBlock2.battleTower.battleTowerTrainerId < 60) - { - fixedIV = 18; - battleMonsOffset = 120; - } - else if (gSaveBlock2.battleTower.battleTowerTrainerId < 70) - { - fixedIV = 21; - battleMonsOffset = 150; - } - else if (gSaveBlock2.battleTower.battleTowerTrainerId < 80) - { - fixedIV = 31; - battleMonsOffset = 180; - } - else if (gSaveBlock2.battleTower.battleTowerTrainerId < BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID) - { - fixedIV = 31; - battleMonsOffset = 200; - monPoolSize = 100; - } - else if (gSaveBlock2.battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID) - { - // Load E-Reader trainer's party. - for (partyIndex = 0; partyIndex < 3; partyIndex++) - { - sub_803ADE8(&gEnemyParty[partyIndex], &gSaveBlock2.battleTower.ereaderTrainer.party[partyIndex]); - } - - return; - } - else - { - // Load a battle tower record's party. (From record mixing) - for (partyIndex = 0; partyIndex < 3; partyIndex++) - { - sub_803ADE8( - &gEnemyParty[partyIndex], - &gSaveBlock2.battleTower.records[gSaveBlock2.battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].party[partyIndex]); - } - - return; - } - - // Use the appropriate list of pokemon and level depending on the - // current challenge type. (level 50 or level 100 challenge) - if (gSaveBlock2.battleTower.battleTowerLevelType != 0) - { - battleTowerMons = gBattleTowerLevel100Mons; - level = 100; - } - else - { - battleTowerMons = gBattleTowerLevel50Mons; - level = 50; - } - - teamFlags = gBattleTowerTrainers[gSaveBlock2.battleTower.battleTowerTrainerId].teamFlags; - - // Attempt to fill the trainer's party with random Pokemon until 3 have been - // successfully chosen. The trainer's party may not have duplicate pokemon species - // or duplicate held items. Each pokemon must have all of the trainer's team flags - // set, as well. If any of those conditions are not met, then the loop starts over - // and another pokemon is chosen at random. - partyIndex = 0; - while (partyIndex != 3) - { - // Pick a random pokemon index based on the number of pokemon available to choose from - // and the starting offset in the battle tower pokemon array. - s32 battleMonIndex = ((Random() & 0xFF) * monPoolSize) / 256 + battleMonsOffset; - - // Ensure the chosen pokemon has compatible team flags with the trainer. - if (teamFlags == 0 || (battleTowerMons[battleMonIndex].teamFlags & teamFlags) == teamFlags) - { - // Ensure this pokemon species isn't a duplicate. - for (i = 0; i < partyIndex; i++) - { - if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES, NULL) == battleTowerMons[battleMonIndex].species) - break; - } - - if (i != partyIndex) - continue; - - // Ensure this pokemon's held item isn't a duplicate. - for (i = 0; i < partyIndex; i++) - { - if (GetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, NULL) != 0 - && GetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, NULL) == sBattleTowerHeldItems[battleTowerMons[battleMonIndex].heldItem]) - { - break; - } - } - - if (i != partyIndex) - continue; - - // Ensure this exact pokemon index isn't a duplicate. This check doesn't seem necessary - // because the species and held items were already checked directly above. Perhaps this - // is leftover code before the logic for duplicate species and held items was added. - for (i = 0; i < partyIndex && chosenMonIndices[i] != battleMonIndex; i++); - - if (i != partyIndex) - continue; - - chosenMonIndices[partyIndex] = battleMonIndex; - - // Place the chosen pokemon into the trainer's party. - CreateMonWithEVSpread( - &gEnemyParty[partyIndex], - battleTowerMons[battleMonIndex].species, - level, - fixedIV, - battleTowerMons[battleMonIndex].evSpread); - - // Give the chosen pokemon its specified moves. - for (i = 0; i < 4; i++) - { - SetMonMoveSlot(&gEnemyParty[partyIndex], battleTowerMons[battleMonIndex].moves[i], i); - if (battleTowerMons[battleMonIndex].moves[i] == MOVE_FRUSTRATION) - { - // MOVE_FRUSTRATION is more powerful the lower the pokemon's friendship is. - friendship = 0; - } - } - - SetMonData(&gEnemyParty[partyIndex], MON_DATA_FRIENDSHIP, &friendship); - SetMonData(&gEnemyParty[partyIndex], MON_DATA_HELD_ITEM, &sBattleTowerHeldItems[battleTowerMons[battleMonIndex].heldItem]); - - // The pokemon was successfully added to the trainer's party, so it's safe to move on to - // the next party slot. - partyIndex++; - } - } + s32 partyIndex, i; + u16 chosenMonIndices[3]; + u8 friendship; + u8 level; + u8 fixedIV; + u8 battleMonsOffset; + u8 monPoolSize; + u8 teamFlags; + const struct BattleTowerPokemon *battleTowerMons; + + battleMonsOffset = 0; + monPoolSize = 60; + friendship = 255; + + ZeroEnemyPartyMons(); + + // Different trainers have access to different sets of pokemon to use in battle. + // The pokemon later in gBattleTowerLevel100Mons or gBattleTowerLevel50Mons are + // stronger. Additionally, the later trainers' pokemon are granted higher IVs. + if (gSaveBlock2.battleTower.battleTowerTrainerId < 20) + { + fixedIV = 6; + } + else if (gSaveBlock2.battleTower.battleTowerTrainerId < 30) + { + fixedIV = 9; + battleMonsOffset = 30; + } + else if (gSaveBlock2.battleTower.battleTowerTrainerId < 40) + { + fixedIV = 12; + battleMonsOffset = 60; + } + else if (gSaveBlock2.battleTower.battleTowerTrainerId < 50) + { + fixedIV = 15; + battleMonsOffset = 90; + } + else if (gSaveBlock2.battleTower.battleTowerTrainerId < 60) + { + fixedIV = 18; + battleMonsOffset = 120; + } + else if (gSaveBlock2.battleTower.battleTowerTrainerId < 70) + { + fixedIV = 21; + battleMonsOffset = 150; + } + else if (gSaveBlock2.battleTower.battleTowerTrainerId < 80) + { + fixedIV = 31; + battleMonsOffset = 180; + } + else if (gSaveBlock2.battleTower.battleTowerTrainerId < BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID) + { + fixedIV = 31; + battleMonsOffset = 200; + monPoolSize = 100; + } + else if (gSaveBlock2.battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID) + { + // Load E-Reader trainer's party. + for (partyIndex = 0; partyIndex < 3; partyIndex++) + { + sub_803ADE8(&gEnemyParty[partyIndex], &gSaveBlock2.battleTower.ereaderTrainer.party[partyIndex]); + } + + return; + } + else + { + // Load a battle tower record's party. (From record mixing) + for (partyIndex = 0; partyIndex < 3; partyIndex++) + { + sub_803ADE8( + &gEnemyParty[partyIndex], + &gSaveBlock2.battleTower.records[gSaveBlock2.battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].party[partyIndex]); + } + + return; + } + + // Use the appropriate list of pokemon and level depending on the + // current challenge type. (level 50 or level 100 challenge) + if (gSaveBlock2.battleTower.battleTowerLevelType != 0) + { + battleTowerMons = gBattleTowerLevel100Mons; + level = 100; + } + else + { + battleTowerMons = gBattleTowerLevel50Mons; + level = 50; + } + + teamFlags = gBattleTowerTrainers[gSaveBlock2.battleTower.battleTowerTrainerId].teamFlags; + // Attempt to fill the trainer's party with random Pokemon until 3 have been + // successfully chosen. The trainer's party may not have duplicate pokemon species + // or duplicate held items. Each pokemon must have all of the trainer's team flags + // set, as well. If any of those conditions are not met, then the loop starts over + // and another pokemon is chosen at random. + partyIndex = 0; + while (partyIndex != 3) + { + // Pick a random pokemon index based on the number of pokemon available to choose from + // and the starting offset in the battle tower pokemon array. + s32 battleMonIndex = ((Random() & 0xFF) * monPoolSize) / 256 + battleMonsOffset; + + // Ensure the chosen pokemon has compatible team flags with the trainer. + if (teamFlags == 0 || (battleTowerMons[battleMonIndex].teamFlags & teamFlags) == teamFlags) + { + // Ensure this pokemon species isn't a duplicate. + for (i = 0; i < partyIndex; i++) + { + if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES, NULL) == battleTowerMons[battleMonIndex].species) + break; + } + + if (i != partyIndex) + continue; + + // Ensure this pokemon's held item isn't a duplicate. + for (i = 0; i < partyIndex; i++) + { + if (GetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, NULL) != 0 + && GetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, NULL) == sBattleTowerHeldItems[battleTowerMons[battleMonIndex].heldItem]) + { + break; + } + } + + if (i != partyIndex) + continue; + + // Ensure this exact pokemon index isn't a duplicate. This check doesn't seem necessary + // because the species and held items were already checked directly above. Perhaps this + // is leftover code before the logic for duplicate species and held items was added. + for (i = 0; i < partyIndex && chosenMonIndices[i] != battleMonIndex; i++); + + if (i != partyIndex) + continue; + + chosenMonIndices[partyIndex] = battleMonIndex; + + // Place the chosen pokemon into the trainer's party. + CreateMonWithEVSpread( + &gEnemyParty[partyIndex], + battleTowerMons[battleMonIndex].species, + level, + fixedIV, + battleTowerMons[battleMonIndex].evSpread); + + // Give the chosen pokemon its specified moves. + for (i = 0; i < 4; i++) + { + SetMonMoveSlot(&gEnemyParty[partyIndex], battleTowerMons[battleMonIndex].moves[i], i); + if (battleTowerMons[battleMonIndex].moves[i] == MOVE_FRUSTRATION) + { + // MOVE_FRUSTRATION is more powerful the lower the pokemon's friendship is. + friendship = 0; + } + } + + SetMonData(&gEnemyParty[partyIndex], MON_DATA_FRIENDSHIP, &friendship); + SetMonData(&gEnemyParty[partyIndex], MON_DATA_HELD_ITEM, &sBattleTowerHeldItems[battleTowerMons[battleMonIndex].heldItem]); + + // The pokemon was successfully added to the trainer's party, so it's safe to move on to + // the next party slot. + partyIndex++; + } + } } u32 CountBattleTowerBanlistCaught(void) { - s32 i; - u32 numCaught = 0; - - for (i = 0; gBattleTowerBannedSpecies[i] != 0xFFFF; i++) - { - if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleTowerBannedSpecies[i]), FLAG_GET_CAUGHT)) - { - numCaught++; - } - } - - return numCaught; + s32 i; + u32 numCaught = 0; + + for (i = 0; gBattleTowerBannedSpecies[i] != 0xFFFF; i++) + { + if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleTowerBannedSpecies[i]), FLAG_GET_CAUGHT)) + { + numCaught++; + } + } + + return numCaught; } u8 AppendBattleTowerBannedSpeciesName(u16 species, u8 curIndexToAppend, s32 numToAppend) { - if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_CAUGHT)) - { - curIndexToAppend++; - - switch (curIndexToAppend - 1) - { - case 0: - case 2: - case 4: - case 6: - case 8: - case 10: - if (numToAppend == curIndexToAppend) - { - StringAppend(gStringVar1, gUnknown_08400E23); - } - else if (numToAppend > curIndexToAppend) - { - StringAppend(gStringVar1, gUnknown_08400E29); - } - break; - case 1: - if (curIndexToAppend == numToAppend) - { - StringAppend(gStringVar1, gUnknown_08400E23); - } - else - { - StringAppend(gStringVar1, gUnknown_08400E29); - } - - StringAppend(gStringVar1, gUnknown_08400E30); - break; - case 3: - case 5: - case 7: - case 9: - default: - if (curIndexToAppend == numToAppend) - { - StringAppend(gStringVar1, gUnknown_08400E23); - } - else - { - StringAppend(gStringVar1, gUnknown_08400E29); - } - - StringAppend(gStringVar1, gUnknown_08400E2E); - break; - } - - StringAppend(gStringVar1, gSpeciesNames[species]); - } - - return curIndexToAppend; + if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_CAUGHT)) + { + curIndexToAppend++; + + switch (curIndexToAppend - 1) + { + case 0: + case 2: + case 4: + case 6: + case 8: + case 10: + if (numToAppend == curIndexToAppend) + { + StringAppend(gStringVar1, gUnknown_08400E23); + } + else if (numToAppend > curIndexToAppend) + { + StringAppend(gStringVar1, gUnknown_08400E29); + } + break; + case 1: + if (curIndexToAppend == numToAppend) + { + StringAppend(gStringVar1, gUnknown_08400E23); + } + else + { + StringAppend(gStringVar1, gUnknown_08400E29); + } + + StringAppend(gStringVar1, gUnknown_08400E30); + break; + case 3: + case 5: + case 7: + case 9: + default: + if (curIndexToAppend == numToAppend) + { + StringAppend(gStringVar1, gUnknown_08400E23); + } + else + { + StringAppend(gStringVar1, gUnknown_08400E29); + } + + StringAppend(gStringVar1, gUnknown_08400E2E); + break; + } + + StringAppend(gStringVar1, gSpeciesNames[species]); + } + + return curIndexToAppend; } void CheckMonBattleTowerBanlist(u16 species, u16 heldItem, u16 hp, u8 battleTowerLevelType, u8 monLevel, u16 *validPartySpecies, u16 *validPartyHeldItems, u8 *numValid) { - s32 i; - u32 counter = 0; + s32 i; + u32 counter = 0; - if (species == SPECIES_EGG || species == SPECIES_NONE) - return; + if (species == SPECIES_EGG || species == SPECIES_NONE) + return; - while (1) - { - if (gBattleTowerBannedSpecies[counter] == 0xFFFF) - goto EXIT2; // Couldn't get the code to match without this GOTO + while (1) + { + if (gBattleTowerBannedSpecies[counter] == 0xFFFF) + goto EXIT2; // Couldn't get the code to match without this GOTO - if (gBattleTowerBannedSpecies[counter] == species) - break; + if (gBattleTowerBannedSpecies[counter] == species) + break; - counter++; - } + counter++; + } - if (gBattleTowerBannedSpecies[counter] != 0xFFFF) - return; + if (gBattleTowerBannedSpecies[counter] != 0xFFFF) + return; - EXIT2: - if (battleTowerLevelType == 0 && monLevel > 50) - return; + EXIT2: + if (battleTowerLevelType == 0 && monLevel > 50) + return; - for (i = 0; i < *numValid && validPartySpecies[i] != species ; i++); - if (i != *numValid) - return; + for (i = 0; i < *numValid && validPartySpecies[i] != species ; i++); + if (i != *numValid) + return; - if (heldItem != 0) - { - for (i = 0; i < *numValid && validPartyHeldItems[i] != heldItem ; i++); - if (i != *numValid) - return; - } + if (heldItem != 0) + { + for (i = 0; i < *numValid && validPartyHeldItems[i] != heldItem ; i++); + if (i != *numValid) + return; + } - validPartySpecies[*numValid] = species; - validPartyHeldItems[*numValid] = heldItem; - *numValid = *numValid + 1; + validPartySpecies[*numValid] = species; + validPartyHeldItems[*numValid] = heldItem; + *numValid = *numValid + 1; } void CheckPartyBattleTowerBanlist(void) { - s32 i; - u16 species2; - u16 heldItem; - u8 level; - u16 hp; - u32 numBanlistCaught; - u16 validPartySpecies[6]; - u16 validPartyHeldItems[6]; - u8 counter; - - counter = 0; - - for (i = 0; i < PARTY_SIZE; i++) - { - species2 = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2); - heldItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM); - level = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL); - hp = GetMonData(&gPlayerParty[i], MON_DATA_HP); - - CheckMonBattleTowerBanlist(species2, heldItem, hp, gScriptResult, level, validPartySpecies, validPartyHeldItems, &counter); - } - - if (counter < 3) - { - gStringVar1[0] = 0xFF; - gSpecialVar_0x8004 = 1; - counter = 0; - - numBanlistCaught = CountBattleTowerBanlistCaught(); - - for (i = 0; gBattleTowerBannedSpecies[i] != 0xFFFF; i++) - { - counter = AppendBattleTowerBannedSpeciesName(gBattleTowerBannedSpecies[i], counter, numBanlistCaught); - } - - if (counter == 0) - { - StringAppend(gStringVar1, gUnknown_08400E2C); - StringAppend(gStringVar1, gUnknown_08400E32); - return; - } - - if (1 & counter) - StringAppend(gStringVar1, gUnknown_08400E2E); - else - StringAppend(gStringVar1, gUnknown_08400E2C); - - StringAppend(gStringVar1, gUnknown_08400E36); - } - else - { - gSpecialVar_0x8004 = 0; - gSaveBlock2.battleTower.battleTowerLevelType = gScriptResult; - } + s32 i; + u16 species2; + u16 heldItem; + u8 level; + u16 hp; + u32 numBanlistCaught; + u16 validPartySpecies[6]; + u16 validPartyHeldItems[6]; + u8 counter; + + counter = 0; + + for (i = 0; i < PARTY_SIZE; i++) + { + species2 = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2); + heldItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM); + level = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL); + hp = GetMonData(&gPlayerParty[i], MON_DATA_HP); + + CheckMonBattleTowerBanlist(species2, heldItem, hp, gScriptResult, level, validPartySpecies, validPartyHeldItems, &counter); + } + + if (counter < 3) + { + gStringVar1[0] = 0xFF; + gSpecialVar_0x8004 = 1; + counter = 0; + + numBanlistCaught = CountBattleTowerBanlistCaught(); + + for (i = 0; gBattleTowerBannedSpecies[i] != 0xFFFF; i++) + { + counter = AppendBattleTowerBannedSpeciesName(gBattleTowerBannedSpecies[i], counter, numBanlistCaught); + } + + if (counter == 0) + { + StringAppend(gStringVar1, gUnknown_08400E2C); + StringAppend(gStringVar1, gUnknown_08400E32); + return; + } + + if (1 & counter) + StringAppend(gStringVar1, gUnknown_08400E2E); + else + StringAppend(gStringVar1, gUnknown_08400E2C); + + StringAppend(gStringVar1, gUnknown_08400E36); + } + else + { + gSpecialVar_0x8004 = 0; + gSaveBlock2.battleTower.battleTowerLevelType = gScriptResult; + } } void PrintBattleTowerTrainerMessage(u16 *easyChat) { - sub_80EB544(gStringVar4, easyChat, 2, 3); + sub_80EB544(gStringVar4, easyChat, 2, 3); } void PrintBattleTowerTrainerGreeting(void) { - if (gSaveBlock2.battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID) - { - PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.ereaderTrainer.greeting.easyChat); - } - else if (gSaveBlock2.battleTower.battleTowerTrainerId < BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID) - { - PrintBattleTowerTrainerMessage((u16 *)gBattleTowerTrainers[gSaveBlock2.battleTower.battleTowerTrainerId].greeting.easyChat); - } - else - { - PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.records[gSaveBlock2.battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].greeting.easyChat); - } + if (gSaveBlock2.battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID) + { + PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.ereaderTrainer.greeting.easyChat); + } + else if (gSaveBlock2.battleTower.battleTowerTrainerId < BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID) + { + PrintBattleTowerTrainerMessage((u16 *)gBattleTowerTrainers[gSaveBlock2.battleTower.battleTowerTrainerId].greeting.easyChat); + } + else + { + PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.records[gSaveBlock2.battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].greeting.easyChat); + } } void sub_81354CC(void) { - s32 i; - u16 heldItem; - - switch (gSpecialVar_0x8004) - { - case 0: - break; - case 1: - for (i = 0; i < PARTY_SIZE; i++) - { - heldItem = GetMonData(&gSaveBlock1.playerParty[i], MON_DATA_HELD_ITEM); - SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &heldItem); - } - break; - case 2: - PrintEReaderTrainerFarewellMessage(); - break; - } - - SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); + s32 i; + u16 heldItem; + + switch (gSpecialVar_0x8004) + { + case 0: + break; + case 1: + for (i = 0; i < PARTY_SIZE; i++) + { + heldItem = GetMonData(&gSaveBlock1.playerParty[i], MON_DATA_HELD_ITEM); + SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &heldItem); + } + break; + case 2: + PrintEReaderTrainerFarewellMessage(); + break; + } + + SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); } void sub_8135534(u8 taskId) { - if (IsBattleTransitionDone() == TRUE) - { - gMain.savedCallback = sub_81354CC; - SetMainCallback2(sub_800E7C4); - DestroyTask(taskId); - } + if (IsBattleTransitionDone() == TRUE) + { + gMain.savedCallback = sub_81354CC; + SetMainCallback2(sub_800E7C4); + DestroyTask(taskId); + } } void sub_813556C(void) { - s32 i; - u16 heldItem; - u8 transition; - - switch (gSpecialVar_0x8004) - { - case 0: - gBattleTypeFlags = (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_TRAINER); - gTrainerBattleOpponent = 0; - - FillBattleTowerTrainerParty(); - - CreateTask(sub_8135534, 1); - current_map_music_set__default_for_battle(0); - transition = BattleSetup_GetBattleTowerBattleTransition(); - BattleTransition_StartOnField(transition); - break; - case 1: - for (i = 0; i < PARTY_SIZE; i++) - { - heldItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM); - SetMonData(&gSaveBlock1.playerParty[i], MON_DATA_HELD_ITEM, &heldItem); - } - - CreateTask(sub_8135534, 1); - current_map_music_set__default_for_battle(0); - transition = BattleSetup_GetBattleTowerBattleTransition(); - BattleTransition_StartOnField(transition); - break; - case 2: - ZeroEnemyPartyMons(); - - for (i = 0; i < 3; i++) - { - sub_803ADE8(&gEnemyParty[i], &gSaveBlock2.battleTower.ereaderTrainer.party[i]); - } - - gBattleTypeFlags = (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_TRAINER); - gTrainerBattleOpponent = 0; - - CreateTask(sub_8135534, 1); - current_map_music_set__default_for_battle(0); - transition = BattleSetup_GetBattleTowerBattleTransition(); - BattleTransition_StartOnField(transition); - break; - } + s32 i; + u16 heldItem; + u8 transition; + + switch (gSpecialVar_0x8004) + { + case 0: + gBattleTypeFlags = (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_TRAINER); + gTrainerBattleOpponent = 0; + + FillBattleTowerTrainerParty(); + + CreateTask(sub_8135534, 1); + current_map_music_set__default_for_battle(0); + transition = BattleSetup_GetBattleTowerBattleTransition(); + BattleTransition_StartOnField(transition); + break; + case 1: + for (i = 0; i < PARTY_SIZE; i++) + { + heldItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM); + SetMonData(&gSaveBlock1.playerParty[i], MON_DATA_HELD_ITEM, &heldItem); + } + + CreateTask(sub_8135534, 1); + current_map_music_set__default_for_battle(0); + transition = BattleSetup_GetBattleTowerBattleTransition(); + BattleTransition_StartOnField(transition); + break; + case 2: + ZeroEnemyPartyMons(); + + for (i = 0; i < 3; i++) + { + sub_803ADE8(&gEnemyParty[i], &gSaveBlock2.battleTower.ereaderTrainer.party[i]); + } + + gBattleTypeFlags = (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_TRAINER); + gTrainerBattleOpponent = 0; + + CreateTask(sub_8135534, 1); + current_map_music_set__default_for_battle(0); + transition = BattleSetup_GetBattleTowerBattleTransition(); + BattleTransition_StartOnField(transition); + break; + } } void sub_8135668(void) { - s32 i; - u8 battleTowerLevelType = gSaveBlock2.battleTower.battleTowerLevelType; - - switch (gSpecialVar_0x8004) - { - case 0: - ewram160FB = gSaveBlock2.battleTower.var_4AE[battleTowerLevelType]; - gSaveBlock2.battleTower.var_4AE[battleTowerLevelType] = gSpecialVar_0x8005; - break; - case 1: - gSaveBlock2.battleTower.battleTowerLevelType = gSpecialVar_0x8005; - break; - case 2: - gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType] = gSpecialVar_0x8005; - break; - case 3: - gSaveBlock2.battleTower.curStreakChallengesNum[battleTowerLevelType] = gSpecialVar_0x8005; - break; - case 4: - gSaveBlock2.battleTower.battleTowerTrainerId = gSpecialVar_0x8005; - break; - case 5: - for (i = 0; i < 3; i++) - { - gSaveBlock2.battleTower.selectedPartyMons[i] = gSelectedOrderFromParty[i]; - } - break; - case 6: - if (gSaveBlock2.battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID) - { - ClearEReaderTrainer(&gSaveBlock2.battleTower.ereaderTrainer); - } - - if (gSaveBlock2.battleTower.totalBattleTowerWins < 9999) - { - gSaveBlock2.battleTower.totalBattleTowerWins++; - } - - gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType]++; - sub_8135A3C(); - gScriptResult = gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType]; - - gStringVar1[0] = gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType] + 0xA1; - gStringVar1[1] = 0xFF; - break; - case 7: - if (gSaveBlock2.battleTower.curStreakChallengesNum[battleTowerLevelType] < 1430) - { - gSaveBlock2.battleTower.curStreakChallengesNum[battleTowerLevelType]++; - } - - sub_8135A3C(); - gScriptResult = gSaveBlock2.battleTower.curStreakChallengesNum[battleTowerLevelType]; - break; - case 8: - gSaveBlock2.battleTower.unk_554 = gSpecialVar_0x8005; - break; - case 9: - break; - case 10: - SetGameStat(GAME_STAT_BATTLE_TOWER_BEST_STREAK, gSaveBlock2.battleTower.bestBattleTowerWinStreak); - break; - case 11: - if (gSaveBlock2.battleTower.var_4AE[battleTowerLevelType] != 3) - { - ResetBattleTowerStreak(battleTowerLevelType); - } - break; - case 12: - gSaveBlock2.battleTower.var_4AE[battleTowerLevelType] = ewram160FB; - break; - case 13: - gSaveBlock2.battleTower.currentWinStreaks[battleTowerLevelType] = GetCurrentBattleTowerWinStreak(battleTowerLevelType); - break; - case 14: - gSaveBlock2.battleTower.lastStreakLevelType = gSaveBlock2.battleTower.battleTowerLevelType; - break; - } + s32 i; + u8 battleTowerLevelType = gSaveBlock2.battleTower.battleTowerLevelType; + + switch (gSpecialVar_0x8004) + { + case 0: + ewram160FB = gSaveBlock2.battleTower.var_4AE[battleTowerLevelType]; + gSaveBlock2.battleTower.var_4AE[battleTowerLevelType] = gSpecialVar_0x8005; + break; + case 1: + gSaveBlock2.battleTower.battleTowerLevelType = gSpecialVar_0x8005; + break; + case 2: + gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType] = gSpecialVar_0x8005; + break; + case 3: + gSaveBlock2.battleTower.curStreakChallengesNum[battleTowerLevelType] = gSpecialVar_0x8005; + break; + case 4: + gSaveBlock2.battleTower.battleTowerTrainerId = gSpecialVar_0x8005; + break; + case 5: + for (i = 0; i < 3; i++) + { + gSaveBlock2.battleTower.selectedPartyMons[i] = gSelectedOrderFromParty[i]; + } + break; + case 6: + if (gSaveBlock2.battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID) + { + ClearEReaderTrainer(&gSaveBlock2.battleTower.ereaderTrainer); + } + + if (gSaveBlock2.battleTower.totalBattleTowerWins < 9999) + { + gSaveBlock2.battleTower.totalBattleTowerWins++; + } + + gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType]++; + sub_8135A3C(); + gScriptResult = gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType]; + + gStringVar1[0] = gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType] + 0xA1; + gStringVar1[1] = 0xFF; + break; + case 7: + if (gSaveBlock2.battleTower.curStreakChallengesNum[battleTowerLevelType] < 1430) + { + gSaveBlock2.battleTower.curStreakChallengesNum[battleTowerLevelType]++; + } + + sub_8135A3C(); + gScriptResult = gSaveBlock2.battleTower.curStreakChallengesNum[battleTowerLevelType]; + break; + case 8: + gSaveBlock2.battleTower.unk_554 = gSpecialVar_0x8005; + break; + case 9: + break; + case 10: + SetGameStat(GAME_STAT_BATTLE_TOWER_BEST_STREAK, gSaveBlock2.battleTower.bestBattleTowerWinStreak); + break; + case 11: + if (gSaveBlock2.battleTower.var_4AE[battleTowerLevelType] != 3) + { + ResetBattleTowerStreak(battleTowerLevelType); + } + break; + case 12: + gSaveBlock2.battleTower.var_4AE[battleTowerLevelType] = ewram160FB; + break; + case 13: + gSaveBlock2.battleTower.currentWinStreaks[battleTowerLevelType] = GetCurrentBattleTowerWinStreak(battleTowerLevelType); + break; + case 14: + gSaveBlock2.battleTower.lastStreakLevelType = gSaveBlock2.battleTower.battleTowerLevelType; + break; + } } void sub_81358A4(void) { - u8 battleTowerLevelType = gSaveBlock2.battleTower.battleTowerLevelType; - - switch (gSpecialVar_0x8004) - { - case 0: - gScriptResult = gSaveBlock2.battleTower.var_4AE[battleTowerLevelType]; - break; - case 1: - gScriptResult = gSaveBlock2.battleTower.battleTowerLevelType; - break; - case 2: - gScriptResult = gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType]; - break; - case 3: - gScriptResult = gSaveBlock2.battleTower.curStreakChallengesNum[battleTowerLevelType]; - break; - case 4: - gScriptResult = gSaveBlock2.battleTower.battleTowerTrainerId; - break; - case 5: - case 6: - case 7: - break; - case 8: - gScriptResult = gSaveBlock2.battleTower.unk_554; - break; - case 9: - gScriptResult = GetCurrentBattleTowerWinStreak(battleTowerLevelType); - break; - case 10: - SetGameStat(GAME_STAT_BATTLE_TOWER_BEST_STREAK, gSaveBlock2.battleTower.bestBattleTowerWinStreak); - break; - case 11: - ResetBattleTowerStreak(battleTowerLevelType); - break; - case 12: - gSaveBlock2.battleTower.var_4AE[battleTowerLevelType] = ewram160FB; - break; - case 13: - gSaveBlock2.battleTower.currentWinStreaks[battleTowerLevelType] = GetCurrentBattleTowerWinStreak(battleTowerLevelType); - break; - case 14: - gSaveBlock2.battleTower.lastStreakLevelType = gSaveBlock2.battleTower.battleTowerLevelType; - break; - } + u8 battleTowerLevelType = gSaveBlock2.battleTower.battleTowerLevelType; + + switch (gSpecialVar_0x8004) + { + case 0: + gScriptResult = gSaveBlock2.battleTower.var_4AE[battleTowerLevelType]; + break; + case 1: + gScriptResult = gSaveBlock2.battleTower.battleTowerLevelType; + break; + case 2: + gScriptResult = gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType]; + break; + case 3: + gScriptResult = gSaveBlock2.battleTower.curStreakChallengesNum[battleTowerLevelType]; + break; + case 4: + gScriptResult = gSaveBlock2.battleTower.battleTowerTrainerId; + break; + case 5: + case 6: + case 7: + break; + case 8: + gScriptResult = gSaveBlock2.battleTower.unk_554; + break; + case 9: + gScriptResult = GetCurrentBattleTowerWinStreak(battleTowerLevelType); + break; + case 10: + SetGameStat(GAME_STAT_BATTLE_TOWER_BEST_STREAK, gSaveBlock2.battleTower.bestBattleTowerWinStreak); + break; + case 11: + ResetBattleTowerStreak(battleTowerLevelType); + break; + case 12: + gSaveBlock2.battleTower.var_4AE[battleTowerLevelType] = ewram160FB; + break; + case 13: + gSaveBlock2.battleTower.currentWinStreaks[battleTowerLevelType] = GetCurrentBattleTowerWinStreak(battleTowerLevelType); + break; + case 14: + gSaveBlock2.battleTower.lastStreakLevelType = gSaveBlock2.battleTower.battleTowerLevelType; + break; + } } void sub_8135A14(void) { - s32 i; + s32 i; - for (i = 0; i < 3; i++) - { - gSelectedOrderFromParty[i] = gSaveBlock2.battleTower.selectedPartyMons[i]; - } + for (i = 0; i < 3; i++) + { + gSelectedOrderFromParty[i] = gSaveBlock2.battleTower.selectedPartyMons[i]; + } - ReducePlayerPartyToThree(); + ReducePlayerPartyToThree(); } #ifdef NONMATCHING void sub_8135A3C(void) { - u8 battleTowerLevelType = gSaveBlock2.battleTower.battleTowerLevelType; - u16 winStreak = GetCurrentBattleTowerWinStreak(battleTowerLevelType); - - if (gSaveBlock2.battleTower.recordWinStreaks[battleTowerLevelType] < winStreak) - { - gSaveBlock2.battleTower.recordWinStreaks[battleTowerLevelType] = winStreak; - } - - if (gSaveBlock2.battleTower.recordWinStreaks[0] > gSaveBlock2.battleTower.recordWinStreaks[1]) - { - u16 streak = gSaveBlock2.battleTower.recordWinStreaks[0]; - SetGameStat(GAME_STAT_BATTLE_TOWER_BEST_STREAK, streak); - if (streak > 9999) - { - gSaveBlock2.battleTower.bestBattleTowerWinStreak = 9999; - } - else - { - gSaveBlock2.battleTower.bestBattleTowerWinStreak = streak; - } - } - else - { - u16 streak = gSaveBlock2.battleTower.recordWinStreaks[1]; - SetGameStat(GAME_STAT_BATTLE_TOWER_BEST_STREAK, streak); - if (streak > 9999) - { - gSaveBlock2.battleTower.bestBattleTowerWinStreak = 9999; - } - else - { - gSaveBlock2.battleTower.bestBattleTowerWinStreak = streak; - } - } + u8 battleTowerLevelType = gSaveBlock2.battleTower.battleTowerLevelType; + u16 winStreak = GetCurrentBattleTowerWinStreak(battleTowerLevelType); + + if (gSaveBlock2.battleTower.recordWinStreaks[battleTowerLevelType] < winStreak) + { + gSaveBlock2.battleTower.recordWinStreaks[battleTowerLevelType] = winStreak; + } + + if (gSaveBlock2.battleTower.recordWinStreaks[0] > gSaveBlock2.battleTower.recordWinStreaks[1]) + { + u16 streak = gSaveBlock2.battleTower.recordWinStreaks[0]; + SetGameStat(GAME_STAT_BATTLE_TOWER_BEST_STREAK, streak); + if (streak > 9999) + { + gSaveBlock2.battleTower.bestBattleTowerWinStreak = 9999; + } + else + { + gSaveBlock2.battleTower.bestBattleTowerWinStreak = streak; + } + } + else + { + u16 streak = gSaveBlock2.battleTower.recordWinStreaks[1]; + SetGameStat(GAME_STAT_BATTLE_TOWER_BEST_STREAK, streak); + if (streak > 9999) + { + gSaveBlock2.battleTower.bestBattleTowerWinStreak = 9999; + } + else + { + gSaveBlock2.battleTower.bestBattleTowerWinStreak = streak; + } + } } #else __attribute__((naked)) @@ -1916,156 +1915,156 @@ _08135AC0: .4byte 0x00000572\n\ void sub_8135AC4(void) { - s32 i; - u8 trainerClass; - struct BattleTowerRecord *playerRecord = &gSaveBlock2.battleTower.playerRecord; - u8 battleTowerLevelType = gSaveBlock2.battleTower.battleTowerLevelType; - - if (gSaveBlock2.playerGender != MALE) - { - trainerClass = sFemaleTrainerClasses[(gSaveBlock2.playerTrainerId[0] + gSaveBlock2.playerTrainerId[1] - + gSaveBlock2.playerTrainerId[2] + gSaveBlock2.playerTrainerId[3]) % 20u]; - } - else - { - trainerClass = sMaleTrainerClasses[(gSaveBlock2.playerTrainerId[0] + gSaveBlock2.playerTrainerId[1] - + gSaveBlock2.playerTrainerId[2] + gSaveBlock2.playerTrainerId[3]) % 30u]; - } - - playerRecord->battleTowerLevelType = battleTowerLevelType; - playerRecord->trainerClass = trainerClass; - - copy_word_to_mem(playerRecord->trainerId, gSaveBlock2.playerTrainerId); - StringCopy8(playerRecord->name, gSaveBlock2.playerName); - - playerRecord->winStreak = GetCurrentBattleTowerWinStreak(battleTowerLevelType); - - for (i = 0; i < 6; i++) - { - playerRecord->greeting.easyChat[i] = gSaveBlock1.easyChats.unk2B28[i]; - } - - for (i = 0; i < 3; i++) - { - sub_803AF78(&gUnknown_030042FC[gSaveBlock2.battleTower.selectedPartyMons[i]], &playerRecord->party[i]); - } - - SetBattleTowerRecordChecksum(&gSaveBlock2.battleTower.playerRecord); - sub_8135A3C(); + s32 i; + u8 trainerClass; + struct BattleTowerRecord *playerRecord = &gSaveBlock2.battleTower.playerRecord; + u8 battleTowerLevelType = gSaveBlock2.battleTower.battleTowerLevelType; + + if (gSaveBlock2.playerGender != MALE) + { + trainerClass = sFemaleTrainerClasses[(gSaveBlock2.playerTrainerId[0] + gSaveBlock2.playerTrainerId[1] + + gSaveBlock2.playerTrainerId[2] + gSaveBlock2.playerTrainerId[3]) % 20u]; + } + else + { + trainerClass = sMaleTrainerClasses[(gSaveBlock2.playerTrainerId[0] + gSaveBlock2.playerTrainerId[1] + + gSaveBlock2.playerTrainerId[2] + gSaveBlock2.playerTrainerId[3]) % 30u]; + } + + playerRecord->battleTowerLevelType = battleTowerLevelType; + playerRecord->trainerClass = trainerClass; + + copy_word_to_mem(playerRecord->trainerId, gSaveBlock2.playerTrainerId); + StringCopy8(playerRecord->name, gSaveBlock2.playerName); + + playerRecord->winStreak = GetCurrentBattleTowerWinStreak(battleTowerLevelType); + + for (i = 0; i < 6; i++) + { + playerRecord->greeting.easyChat[i] = gSaveBlock1.easyChats.unk2B28[i]; + } + + for (i = 0; i < 3; i++) + { + sub_803AF78(&gUnknown_030042FC[gSaveBlock2.battleTower.selectedPartyMons[i]], &playerRecord->party[i]); + } + + SetBattleTowerRecordChecksum(&gSaveBlock2.battleTower.playerRecord); + sub_8135A3C(); } void sub_8135BA0(void) { - u8 battleTowerLevelType = gSaveBlock2.battleTower.battleTowerLevelType; + u8 battleTowerLevelType = gSaveBlock2.battleTower.battleTowerLevelType; - if (gSpecialVar_0x8004 == 3 || gSpecialVar_0x8004 == 0) - { - if (gSaveBlock2.battleTower.curStreakChallengesNum[battleTowerLevelType] > 1 - || gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType] > 1) - { - sub_8135AC4(); - } - } + if (gSpecialVar_0x8004 == 3 || gSpecialVar_0x8004 == 0) + { + if (gSaveBlock2.battleTower.curStreakChallengesNum[battleTowerLevelType] > 1 + || gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType] > 1) + { + sub_8135AC4(); + } + } - sub_8135CFC(); + sub_8135CFC(); - gSaveBlock2.battleTower.battleOutcome = gBattleOutcome; + gSaveBlock2.battleTower.battleOutcome = gBattleOutcome; - if (gSpecialVar_0x8004 != 3) - { - gSaveBlock2.battleTower.var_4AE[battleTowerLevelType] = gSpecialVar_0x8004; - } + if (gSpecialVar_0x8004 != 3) + { + gSaveBlock2.battleTower.var_4AE[battleTowerLevelType] = gSpecialVar_0x8004; + } - VarSet(VAR_0x4000, 0); - gSaveBlock2.battleTower.unk_554 = 1; - TrySavingData(EREADER_SAVE); + VarSet(VAR_0x4000, 0); + gSaveBlock2.battleTower.unk_554 = 1; + TrySavingData(EREADER_SAVE); } void BattleTower_SoftReset(void) { - DoSoftReset(); + DoSoftReset(); } void ValidateBattleTowerRecordChecksums(void) { - u32 i; - s32 recordIndex; - struct BattleTowerRecord *record; - u32 checksum; - - checksum = 0; - for (i = 0; i < (sizeof(struct BattleTowerRecord) / sizeof(u32)) - 1; i++) - { - checksum += ((u32 *)&gSaveBlock2.battleTower.playerRecord)[i]; - } - - if (gSaveBlock2.battleTower.playerRecord.checksum != checksum) - { - ClearBattleTowerRecord(&gSaveBlock2.battleTower.playerRecord); - } - - for (recordIndex = 0; recordIndex < 5; recordIndex++) - { - record = &gSaveBlock2.battleTower.records[recordIndex]; - checksum = 0; - for (i = 0; i < (sizeof(struct BattleTowerRecord) / sizeof(u32)) - 1; i++) - { - checksum += ((u32 *)record)[i]; - } - - if (gSaveBlock2.battleTower.records[recordIndex].checksum != checksum) - { - ClearBattleTowerRecord(&gSaveBlock2.battleTower.records[recordIndex]); - } - } + u32 i; + s32 recordIndex; + struct BattleTowerRecord *record; + u32 checksum; + + checksum = 0; + for (i = 0; i < (sizeof(struct BattleTowerRecord) / sizeof(u32)) - 1; i++) + { + checksum += ((u32 *)&gSaveBlock2.battleTower.playerRecord)[i]; + } + + if (gSaveBlock2.battleTower.playerRecord.checksum != checksum) + { + ClearBattleTowerRecord(&gSaveBlock2.battleTower.playerRecord); + } + + for (recordIndex = 0; recordIndex < 5; recordIndex++) + { + record = &gSaveBlock2.battleTower.records[recordIndex]; + checksum = 0; + for (i = 0; i < (sizeof(struct BattleTowerRecord) / sizeof(u32)) - 1; i++) + { + checksum += ((u32 *)record)[i]; + } + + if (gSaveBlock2.battleTower.records[recordIndex].checksum != checksum) + { + ClearBattleTowerRecord(&gSaveBlock2.battleTower.records[recordIndex]); + } + } } void SetBattleTowerRecordChecksum(struct BattleTowerRecord *record) { - u32 i; + u32 i; - record->checksum = 0; - for (i = 0; i < (sizeof(struct BattleTowerRecord) / sizeof(u32)) - 1; i++) - { - record->checksum += ((u32 *)record)[i]; - } + record->checksum = 0; + for (i = 0; i < (sizeof(struct BattleTowerRecord) / sizeof(u32)) - 1; i++) + { + record->checksum += ((u32 *)record)[i]; + } } void ClearBattleTowerRecord(struct BattleTowerRecord *record) { - u32 i; + u32 i; - for (i = 0; i < sizeof(struct BattleTowerRecord) / sizeof(u32); i++) - { - ((u32 *)record)[i] = 0; - } + for (i = 0; i < sizeof(struct BattleTowerRecord) / sizeof(u32); i++) + { + ((u32 *)record)[i] = 0; + } } void sub_8135CFC(void) { - s32 i; + s32 i; - get_trainer_name(gSaveBlock2.battleTower.defeatedByTrainerName); - gSaveBlock2.battleTower.defeatedBySpecies = gBattleMons[1].species; - gSaveBlock2.battleTower.firstMonSpecies = gBattleMons[0].species; + get_trainer_name(gSaveBlock2.battleTower.defeatedByTrainerName); + gSaveBlock2.battleTower.defeatedBySpecies = gBattleMons[1].species; + gSaveBlock2.battleTower.firstMonSpecies = gBattleMons[0].species; - for (i = 0; i < POKEMON_NAME_LENGTH; i++) - { - gSaveBlock2.battleTower.firstMonNickname[i] = gBattleMons[0].nickname[i]; - } + for (i = 0; i < POKEMON_NAME_LENGTH; i++) + { + gSaveBlock2.battleTower.firstMonNickname[i] = gBattleMons[0].nickname[i]; + } } u16 GetCurrentBattleTowerWinStreak(u8 battleTowerLevelType) { - u16 winStreak = ((gSaveBlock2.battleTower.curStreakChallengesNum[battleTowerLevelType] - 1) * 7 - 1) - + gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType]; + u16 winStreak = ((gSaveBlock2.battleTower.curStreakChallengesNum[battleTowerLevelType] - 1) * 7 - 1) + + gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType]; - if (winStreak > 9999) - { - return 9999; - } + if (winStreak > 9999) + { + return 9999; + } - return winStreak; + return winStreak; } #ifdef NONMATCHING @@ -2144,230 +2143,230 @@ _08135DE8: .4byte sShortStreakPrizes\n\ void GiveBattleTowerPrize(void) { - u8 battleTowerLevelType = gSaveBlock2.battleTower.battleTowerLevelType; - - if (AddBagItem(gSaveBlock2.battleTower.prizeItem, 1) == TRUE) - { - CopyItemName(gSaveBlock2.battleTower.prizeItem, gStringVar1); - gScriptResult = 1; - } - else - { - gScriptResult = 0; - gSaveBlock2.battleTower.var_4AE[battleTowerLevelType] = 6; - } + u8 battleTowerLevelType = gSaveBlock2.battleTower.battleTowerLevelType; + + if (AddBagItem(gSaveBlock2.battleTower.prizeItem, 1) == TRUE) + { + CopyItemName(gSaveBlock2.battleTower.prizeItem, gStringVar1); + gScriptResult = 1; + } + else + { + gScriptResult = 0; + gSaveBlock2.battleTower.var_4AE[battleTowerLevelType] = 6; + } } void AwardBattleTowerRibbons(void) { - s32 i; - u32 partyIndex; - struct Pokemon *pokemon; - u8 ribbonType; - u8 battleTowerLevelType = gSaveBlock2.battleTower.battleTowerLevelType; - - ribbonType = MON_DATA_WINNING_RIBBON; - if (battleTowerLevelType != 0) - { - ribbonType = MON_DATA_VICTORY_RIBBON; - } - - gScriptResult = 0; - - if (GetCurrentBattleTowerWinStreak(battleTowerLevelType) > 55) - { - for (i = 0; i < 3; i++) - { - partyIndex = gSaveBlock2.battleTower.selectedPartyMons[i] - 1; - pokemon = &gPlayerParty[partyIndex]; - if (!GetMonData(pokemon, ribbonType)) - { - gScriptResult = 1; - SetMonData(pokemon, ribbonType, &gScriptResult); - } - } - } - - if (gScriptResult != 0) - { - IncrementGameStat(GAME_STAT_RECEIVED_RIBBONS); - } + s32 i; + u32 partyIndex; + struct Pokemon *pokemon; + u8 ribbonType; + u8 battleTowerLevelType = gSaveBlock2.battleTower.battleTowerLevelType; + + ribbonType = MON_DATA_WINNING_RIBBON; + if (battleTowerLevelType != 0) + { + ribbonType = MON_DATA_VICTORY_RIBBON; + } + + gScriptResult = 0; + + if (GetCurrentBattleTowerWinStreak(battleTowerLevelType) > 55) + { + for (i = 0; i < 3; i++) + { + partyIndex = gSaveBlock2.battleTower.selectedPartyMons[i] - 1; + pokemon = &gPlayerParty[partyIndex]; + if (!GetMonData(pokemon, ribbonType)) + { + gScriptResult = 1; + SetMonData(pokemon, ribbonType, &gScriptResult); + } + } + } + + if (gScriptResult != 0) + { + IncrementGameStat(GAME_STAT_RECEIVED_RIBBONS); + } } // This is a leftover debugging function that is used to populate the E-Reader // trainer with the player's current data. void Debug_FillEReaderTrainerWithPlayerData(void) { - struct BattleTowerEReaderTrainer *ereaderTrainer; - s32 i; - s32 j; - - ereaderTrainer = &gSaveBlock2.battleTower.ereaderTrainer; - - if (gSaveBlock2.playerGender != MALE) - { - ereaderTrainer->trainerClass = sFemaleTrainerClasses[(gSaveBlock2.playerTrainerId[0] + gSaveBlock2.playerTrainerId[1] - + gSaveBlock2.playerTrainerId[2] + gSaveBlock2.playerTrainerId[3]) % 20u]; - } - else - { - ereaderTrainer->trainerClass = sMaleTrainerClasses[(gSaveBlock2.playerTrainerId[0] + gSaveBlock2.playerTrainerId[1] - + gSaveBlock2.playerTrainerId[2] + gSaveBlock2.playerTrainerId[3]) % 30u]; - } - - copy_word_to_mem(ereaderTrainer->trainerId, gSaveBlock2.playerTrainerId); - StringCopy8(ereaderTrainer->name, gSaveBlock2.playerName); - - ereaderTrainer->winStreak = 1; - - j = 7; - for (i = 0; i < 6; i++) - { - ereaderTrainer->greeting.easyChat[i] = gSaveBlock1.easyChats.unk2B28[i]; - ereaderTrainer->farewellPlayerLost.easyChat[i] = j; - ereaderTrainer->farewellPlayerWon.easyChat[i] = j + 6; - j++; - } - - for (i = 0; i < 3; i++) - { - sub_803AF78(&gPlayerParty[i], &ereaderTrainer->party[i]); - } - - SetEReaderTrainerChecksum(ereaderTrainer); + struct BattleTowerEReaderTrainer *ereaderTrainer; + s32 i; + s32 j; + + ereaderTrainer = &gSaveBlock2.battleTower.ereaderTrainer; + + if (gSaveBlock2.playerGender != MALE) + { + ereaderTrainer->trainerClass = sFemaleTrainerClasses[(gSaveBlock2.playerTrainerId[0] + gSaveBlock2.playerTrainerId[1] + + gSaveBlock2.playerTrainerId[2] + gSaveBlock2.playerTrainerId[3]) % 20u]; + } + else + { + ereaderTrainer->trainerClass = sMaleTrainerClasses[(gSaveBlock2.playerTrainerId[0] + gSaveBlock2.playerTrainerId[1] + + gSaveBlock2.playerTrainerId[2] + gSaveBlock2.playerTrainerId[3]) % 30u]; + } + + copy_word_to_mem(ereaderTrainer->trainerId, gSaveBlock2.playerTrainerId); + StringCopy8(ereaderTrainer->name, gSaveBlock2.playerName); + + ereaderTrainer->winStreak = 1; + + j = 7; + for (i = 0; i < 6; i++) + { + ereaderTrainer->greeting.easyChat[i] = gSaveBlock1.easyChats.unk2B28[i]; + ereaderTrainer->farewellPlayerLost.easyChat[i] = j; + ereaderTrainer->farewellPlayerWon.easyChat[i] = j + 6; + j++; + } + + for (i = 0; i < 3; i++) + { + sub_803AF78(&gPlayerParty[i], &ereaderTrainer->party[i]); + } + + SetEReaderTrainerChecksum(ereaderTrainer); } u8 GetEReaderTrainerPicIndex(void) { - return gTrainerClassToPicIndex[gSaveBlock2.battleTower.ereaderTrainer.trainerClass]; + return gTrainerClassToPicIndex[gSaveBlock2.battleTower.ereaderTrainer.trainerClass]; } u8 GetEReaderTrainerClassNameIndex(void) { - return gTrainerClassToNameIndex[gSaveBlock2.battleTower.ereaderTrainer.trainerClass]; + return gTrainerClassToNameIndex[gSaveBlock2.battleTower.ereaderTrainer.trainerClass]; } void SetEReaderTrainerName(u8 *trainerName) { - s32 i; + s32 i; - for (i = 0; i < 7; i++) - { - trainerName[i] = gSaveBlock2.battleTower.ereaderTrainer.name[i]; - } + for (i = 0; i < 7; i++) + { + trainerName[i] = gSaveBlock2.battleTower.ereaderTrainer.name[i]; + } - trainerName[i] = 0xFF; + trainerName[i] = 0xFF; } // Checks if the saved E-Reader trainer is valid. void ValidateEReaderTrainer(void) { - u32 i; - u32 checksum; - struct BattleTowerEReaderTrainer *ereaderTrainer; - - gScriptResult = 0; - ereaderTrainer = &gSaveBlock2.battleTower.ereaderTrainer; - - checksum = 0; - for (i = 0; i < sizeof(struct BattleTowerEReaderTrainer) / sizeof(u32) - 1; i++) - { - checksum |= ((u32 *)ereaderTrainer)[i]; - } - - if (checksum == 0) - { - gScriptResult = 1; - return; - } - - checksum = 0; - for (i = 0; i < sizeof(struct BattleTowerEReaderTrainer) / sizeof(u32) - 1; i++) - { - checksum += ((u32 *)ereaderTrainer)[i]; - } - - if (gSaveBlock2.battleTower.ereaderTrainer.checksum != checksum) - { - ClearEReaderTrainer(&gSaveBlock2.battleTower.ereaderTrainer); - gScriptResult = 1; - } + u32 i; + u32 checksum; + struct BattleTowerEReaderTrainer *ereaderTrainer; + + gScriptResult = 0; + ereaderTrainer = &gSaveBlock2.battleTower.ereaderTrainer; + + checksum = 0; + for (i = 0; i < sizeof(struct BattleTowerEReaderTrainer) / sizeof(u32) - 1; i++) + { + checksum |= ((u32 *)ereaderTrainer)[i]; + } + + if (checksum == 0) + { + gScriptResult = 1; + return; + } + + checksum = 0; + for (i = 0; i < sizeof(struct BattleTowerEReaderTrainer) / sizeof(u32) - 1; i++) + { + checksum += ((u32 *)ereaderTrainer)[i]; + } + + if (gSaveBlock2.battleTower.ereaderTrainer.checksum != checksum) + { + ClearEReaderTrainer(&gSaveBlock2.battleTower.ereaderTrainer); + gScriptResult = 1; + } } void SetEReaderTrainerChecksum(struct BattleTowerEReaderTrainer *ereaderTrainer) { - s32 i; + s32 i; - ereaderTrainer->checksum = 0; - for (i = 0; i < sizeof(struct BattleTowerEReaderTrainer) / sizeof(u32) - 1; i++) - { - ereaderTrainer->checksum += ((u32 *)ereaderTrainer)[i]; - } + ereaderTrainer->checksum = 0; + for (i = 0; i < sizeof(struct BattleTowerEReaderTrainer) / sizeof(u32) - 1; i++) + { + ereaderTrainer->checksum += ((u32 *)ereaderTrainer)[i]; + } } void ClearEReaderTrainer(struct BattleTowerEReaderTrainer *ereaderTrainer) { - u32 i; + u32 i; - for (i = 0; i < sizeof(struct BattleTowerEReaderTrainer) / sizeof(u32); i++) - { - ((u32 *)ereaderTrainer)[i] = 0; - } + for (i = 0; i < sizeof(struct BattleTowerEReaderTrainer) / sizeof(u32); i++) + { + ((u32 *)ereaderTrainer)[i] = 0; + } } void PrintEReaderTrainerGreeting(void) { - PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.ereaderTrainer.greeting.easyChat); + PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.ereaderTrainer.greeting.easyChat); } void PrintEReaderTrainerFarewellMessage(void) { - if (gBattleOutcome == BATTLE_DREW) - { - gStringVar4[0] = 0xFF; - } - else if (gBattleOutcome == BATTLE_WON) - { - PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.ereaderTrainer.farewellPlayerWon.easyChat); - } - else - { - PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.ereaderTrainer.farewellPlayerLost.easyChat); - } + if (gBattleOutcome == BATTLE_DREW) + { + gStringVar4[0] = 0xFF; + } + else if (gBattleOutcome == BATTLE_WON) + { + PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.ereaderTrainer.farewellPlayerWon.easyChat); + } + else + { + PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.ereaderTrainer.farewellPlayerLost.easyChat); + } } void sub_813610C(void) { - s32 i; - - for (i = 0; i < 2; i++) - { - if (gSaveBlock2.battleTower.var_4AE[i] == 1) - { - sub_80BFD20(); - } - } + s32 i; + + for (i = 0; i < 2; i++) + { + if (gSaveBlock2.battleTower.var_4AE[i] == 1) + { + sub_80BFD20(); + } + } } #if GERMAN u8 de_sub_81364AC(void) { - if (gSaveBlock2.battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID) - { - return gSaveBlock2.battleTower.ereaderTrainer.trainerClass; - } - else if (gSaveBlock2.battleTower.battleTowerTrainerId >= BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID) - { - return gSaveBlock2.battleTower.records[gSaveBlock2.battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].trainerClass; - } - else - { - return gBattleTowerTrainers[gSaveBlock2.battleTower.battleTowerTrainerId].trainerClass; - } + if (gSaveBlock2.battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID) + { + return gSaveBlock2.battleTower.ereaderTrainer.trainerClass; + } + else if (gSaveBlock2.battleTower.battleTowerTrainerId >= BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID) + { + return gSaveBlock2.battleTower.records[gSaveBlock2.battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].trainerClass; + } + else + { + return gBattleTowerTrainers[gSaveBlock2.battleTower.battleTowerTrainerId].trainerClass; + } } u8 de_sub_81364F8(void) { - return gSaveBlock2.battleTower.ereaderTrainer.trainerClass; + return gSaveBlock2.battleTower.ereaderTrainer.trainerClass; } #endif -- cgit v1.2.3 From fbdf867ce7bce6239c34c53beaabbcd555302a4f Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Sun, 12 Nov 2017 16:40:04 -0800 Subject: Cleanup and document daycare.c --- src/field/daycare.c | 795 ++++++++++++++++++++++----------------- src/field/field_control_avatar.c | 4 +- 2 files changed, 450 insertions(+), 349 deletions(-) (limited to 'src/field') diff --git a/src/field/daycare.c b/src/field/daycare.c index dd74f59e0..2b58a0d5d 100644 --- a/src/field/daycare.c +++ b/src/field/daycare.c @@ -1,47 +1,50 @@ #include "global.h" #include "daycare.h" -#include "pokemon.h" #include "event_data.h" -#include "species.h" +#include "field_effect.h" #include "items.h" -#include "text.h" -#include "string_util.h" #include "mail_data.h" +#include "main.h" +#include "menu.h" +#include "moves.h" #include "name_string_util.h" +#include "overworld.h" +#include "party_menu.h" +#include "pokemon.h" #include "pokemon_storage_system.h" #include "rng.h" -#include "moves.h" -#include "trade.h" -#include "strings2.h" -#include "party_menu.h" -#include "field_effect.h" -#include "main.h" -#include "menu.h" -#include "sound.h" -#include "songs.h" #include "script.h" -#include "overworld.h" +#include "songs.h" +#include "sound.h" +#include "species.h" +#include "string_util.h" +#include "strings2.h" +#include "text.h" +#include "trade.h" -IWRAM_DATA u16 gUnknown_03000470[52]; -IWRAM_DATA u16 gUnknown_030004D8[4]; -IWRAM_DATA u16 gUnknown_030004E0[4]; -IWRAM_DATA u16 gUnknown_030004E8[12]; -IWRAM_DATA u16 gUnknown_03000500[4]; +// RAM buffers used to assist with BuildEggMoveset() +IWRAM_DATA u16 gHatchedEggLevelUpMoves[52]; +IWRAM_DATA u16 gHatchedEggFatherMoves[4]; +IWRAM_DATA u16 gHatchedEggFinalMoves[4]; +IWRAM_DATA u16 gHatchedEggEggMoves[12]; +IWRAM_DATA u16 gHatchedEggMotherMoves[4]; -static void sub_80417F4(struct DayCareMail *); -static void sub_80420FC(struct Pokemon *, u16, struct DayCareData *); -static u8 daycare_relationship_score(struct DayCareData *); +extern u16 gMoveToLearn; + +static void ClearDaycareMail(struct DayCareMail *); +static void SetInitialEggData(struct Pokemon *, u16, struct DayCare *); +static u8 GetDaycareCompatibilityScore(struct DayCare *); #include "../data/pokemon/egg_moves.h" -const u8 *const gUnknown_08209AC4[] = { +static const u8 *const sCompatibilityMessages[] = { DaycareText_GetAlongVeryWell, DaycareText_GetAlong, DaycareText_DontLikeOther, DaycareText_PlayOther }; -const u8 gUnknown_08209AD4[] = _("タマゴ"); +const u8 sJapaneseEggNickname[] = _("タマゴ"); u8 *GetMonNick(struct Pokemon *mon, u8 *dest) { @@ -59,251 +62,284 @@ u8 *GetBoxMonNick(struct BoxPokemon *mon, u8 *dest) return StringCopy10(dest, nickname); } -u8 Daycare_CountPokemon(struct DayCareData *daycare_data) +u8 CountPokemonInDaycare(struct DayCare *daycare) { u8 i, count; count = 0; - for(i = 0;i <= 1;i++) - if(GetBoxMonData(&daycare_data->mons[i], MON_DATA_SPECIES) != 0) + for (i = 0; i < 2; i++) + { + if (GetBoxMonData(&daycare->mons[i], MON_DATA_SPECIES) != 0) count++; + } return count; } -void sub_8041324(struct BoxPokemon * box_pokemon, struct RecordMixingDayCareMail * daycareMailEtc) +void InitDaycareMailRecordMixing(struct BoxPokemon * daycareMons, struct RecordMixingDayCareMail * daycareMail) { u8 i; - u8 specCount; - specCount = 0; - for (i=0; i<2; i++) + u8 numDaycareMons = 0; + + for (i = 0; i < 2; i++) { - if (GetBoxMonData(&box_pokemon[i], MON_DATA_SPECIES) != SPECIES_NONE) + if (GetBoxMonData(&daycareMons[i], MON_DATA_SPECIES) != SPECIES_NONE) { - specCount ++; - if (GetBoxMonData(&box_pokemon[i], MON_DATA_HELD_ITEM) == ITEM_NONE) + numDaycareMons++; + if (GetBoxMonData(&daycareMons[i], MON_DATA_HELD_ITEM) == ITEM_NONE) { - daycareMailEtc->unk74[i] = 0; - } else + daycareMail->itemsHeld[i] = 0; + } + else { - daycareMailEtc->unk74[i] = 1; + daycareMail->itemsHeld[i] = 1; } - } else + } + else { - daycareMailEtc->unk74[i] = 1; + daycareMail->itemsHeld[i] = 1; } } - daycareMailEtc->unk70 = specCount; + + daycareMail->numDaycareMons = numDaycareMons; } -static s8 Daycare_FindEmptySpot(struct BoxPokemon * daycare_data) +static s8 Daycare_FindEmptySpot(struct BoxPokemon * daycareMons) { u8 i; - for(i = 0;i <= 1;i++) - if(GetBoxMonData(daycare_data + i, MON_DATA_SPECIES) == 0) + for (i = 0; i < 2; i++) + { + if (GetBoxMonData(&daycareMons[i], MON_DATA_SPECIES) == 0) return i; + } return -1; } -static void Daycare_SendPokemon(struct Pokemon * mon, struct DayCareData * daycare_data) +static void StorePokemonInDaycare(struct Pokemon * mon, struct DayCare * daycare) { - s8 empty_slot; + s8 emptySlot; u8 mail; u8 *names; - empty_slot = Daycare_FindEmptySpot(daycare_data->mons); - if(MonHasMail(mon)) { - StringCopy((names = daycare_data->misc.mail[empty_slot].names), gSaveBlock2.playerName); + emptySlot = Daycare_FindEmptySpot(daycare->mons); + if (MonHasMail(mon)) + { + StringCopy((names = daycare->misc.mail[emptySlot].names), gSaveBlock2.playerName); PadNameString(names, 0xFC); names += 8; GetMonNick(mon, names); mail = GetMonData(mon, MON_DATA_MAIL); - daycare_data->misc.mail[empty_slot].message = gSaveBlock1.mail[mail]; + daycare->misc.mail[emptySlot].message = gSaveBlock1.mail[mail]; TakeMailFromMon(mon); } - daycare_data->mons[empty_slot] = mon->box; - BoxMonRestorePP(&daycare_data->mons[empty_slot]); - daycare_data->misc.countersEtc.steps[empty_slot] = 0; + + daycare->mons[emptySlot] = mon->box; + BoxMonRestorePP(&daycare->mons[emptySlot]); + daycare->misc.countersEtc.steps[emptySlot] = 0; ZeroMonData(mon); party_compaction(); CalculatePlayerPartyCount(); } -void Daycare_SendPokemon_Special() +void StoreSelectedPokemonInDaycare(void) { - Daycare_SendPokemon(gPlayerParty + gLastFieldPokeMenuOpened, &gSaveBlock1.daycareData); + StorePokemonInDaycare(&gPlayerParty[gLastFieldPokeMenuOpened], &gSaveBlock1.daycare); } -static void sub_80414C0(struct DayCareData * daycare_data) +// Shifts the second daycare pokemon slot into the first slot. +static void ShiftDaycareSlots(struct DayCare * daycare) { - if((GetBoxMonData(&daycare_data->mons[1], MON_DATA_SPECIES) != 0) && GetBoxMonData(&daycare_data->mons[0], MON_DATA_SPECIES) == 0) + // This condition is only satisfied when the player takes out the first pokemon from the daycare. + if (GetBoxMonData(&daycare->mons[1], MON_DATA_SPECIES) != 0 && GetBoxMonData(&daycare->mons[0], MON_DATA_SPECIES) == 0) { - daycare_data->mons[0] = daycare_data->mons[1]; - ZeroBoxMonData(&daycare_data->mons[1]); - daycare_data->misc.mail[0] = daycare_data->misc.mail[1]; - daycare_data->misc.countersEtc.steps[0] = daycare_data->misc.countersEtc.steps[1]; - daycare_data->misc.countersEtc.steps[1] = 0; - sub_80417F4(&daycare_data->misc.mail[1]); + daycare->mons[0] = daycare->mons[1]; + ZeroBoxMonData(&daycare->mons[1]); + + daycare->misc.mail[0] = daycare->misc.mail[1]; + daycare->misc.countersEtc.steps[0] = daycare->misc.countersEtc.steps[1]; + daycare->misc.countersEtc.steps[1] = 0; + ClearDaycareMail(&daycare->misc.mail[1]); } } -u8 TryIncrementMonLevel(struct Pokemon *); -extern u16 gMoveToLearn; - -static void DayCare_LevelUpMoves(struct Pokemon * mon) +static void ApplyDaycareExperience(struct Pokemon * mon) { s32 i; - u8 r6; - u16 temp; + bool8 firstMove; + u16 learnedMove; for (i = 0; i < MAX_LEVEL; i++) { + // Add the mon's gained daycare experience level by level until it can't level up anymore. if (TryIncrementMonLevel(mon)) { - r6 = 1; - while ((temp = MonTryLearningNewMove(mon, r6)) != 0) + // Teach the mon new moves it learned while in the daycare. + firstMove = TRUE; + while ((learnedMove = MonTryLearningNewMove(mon, firstMove)) != 0) { - r6 = 0; - if (temp == 0xffff) + firstMove = FALSE; + if (learnedMove == 0xffff) + { + // Mon already knows 4 moves. DeleteFirstMoveAndGiveMoveToMon(mon, gMoveToLearn); + } } } else + { break; + } } + // Re-calculate the mons stats at its new level. CalculateMonStats(mon); } -static u16 sub_8041570(struct DayCareData * daycare_data, u8 slot) +static u16 TakeSelectedPokemonFromDaycare(struct DayCare * daycare, u8 slot) { u16 species; u32 experience; struct Pokemon pokemon; - GetBoxMonNick(&daycare_data->mons[slot], gStringVar1); - species = GetBoxMonData(&daycare_data->mons[slot], MON_DATA_SPECIES); - sub_803B4B4(&daycare_data->mons[slot], &pokemon); + GetBoxMonNick(&daycare->mons[slot], gStringVar1); + species = GetBoxMonData(&daycare->mons[slot], MON_DATA_SPECIES); + sub_803B4B4(&daycare->mons[slot], &pokemon); + if (GetMonData(&pokemon, MON_DATA_LEVEL) != MAX_LEVEL) { - experience = GetMonData(&pokemon, MON_DATA_EXP) + daycare_data->misc.countersEtc.steps[slot]; + experience = GetMonData(&pokemon, MON_DATA_EXP) + daycare->misc.countersEtc.steps[slot]; SetMonData(&pokemon, MON_DATA_EXP, &experience); - DayCare_LevelUpMoves(&pokemon); + ApplyDaycareExperience(&pokemon); } + gPlayerParty[PARTY_SIZE - 1] = pokemon; - if (daycare_data->misc.mail[slot].message.itemId) + if (daycare->misc.mail[slot].message.itemId) { - GiveMailToMon2(&gPlayerParty[PARTY_SIZE - 1], &daycare_data->misc.mail[slot].message); - sub_80417F4(&daycare_data->misc.mail[slot]); + GiveMailToMon2(&gPlayerParty[PARTY_SIZE - 1], &daycare->misc.mail[slot].message); + ClearDaycareMail(&daycare->misc.mail[slot]); } + party_compaction(); - ZeroBoxMonData(&daycare_data->mons[slot]); - daycare_data->misc.countersEtc.steps[slot] = 0; - sub_80414C0(daycare_data); + ZeroBoxMonData(&daycare->mons[slot]); + daycare->misc.countersEtc.steps[slot] = 0; + ShiftDaycareSlots(daycare); CalculatePlayerPartyCount(); return species; } -u16 sub_8041648() +u16 TakePokemonFromDaycare(void) { - return sub_8041570(&gSaveBlock1.daycareData, gSpecialVar_0x8004); + return TakeSelectedPokemonFromDaycare(&gSaveBlock1.daycare, gSpecialVar_0x8004); } -u8 Daycare_GetLevelAfterSteps(struct BoxPokemon * mon, u32 steps){ - struct BoxPokemon temp = *mon; - u32 new_exp = GetBoxMonData(mon, MON_DATA_EXP) + steps; - SetBoxMonData(&temp, MON_DATA_EXP, &new_exp); - return GetLevelFromBoxMonExp(&temp); +static u8 GetLevelAfterDaycareSteps(struct BoxPokemon * mon, u32 steps) +{ + struct BoxPokemon tempMon = *mon; + + u32 experience = GetBoxMonData(mon, MON_DATA_EXP) + steps; + SetBoxMonData(&tempMon, MON_DATA_EXP, &experience); + return GetLevelFromBoxMonExp(&tempMon); } -static u8 sub_80416A0(struct DayCareData *daycareData, u8 slot) +static u8 GetNumLevelsGainedFromSteps(struct DayCare *daycare, u8 slot) { u8 levelBefore; u8 levelAfter; - levelBefore = GetLevelFromBoxMonExp(&daycareData->mons[slot]); - levelAfter = Daycare_GetLevelAfterSteps(&daycareData->mons[slot], daycareData->misc.countersEtc.steps[slot]); + levelBefore = GetLevelFromBoxMonExp(&daycare->mons[slot]); + levelAfter = GetLevelAfterDaycareSteps(&daycare->mons[slot], daycare->misc.countersEtc.steps[slot]); return levelAfter - levelBefore; } -static u8 sub_80416E8(struct DayCareData *dayCareData, u8 slot) +static u8 GetNumLevelsGainedForDaycareSlot(struct DayCare *daycare, u8 slot) { - u8 levelDelta = sub_80416A0(dayCareData, slot); - GetBoxMonNick(&dayCareData->mons[slot], gStringVar1); - ConvertIntToDecimalStringN(gStringVar2, levelDelta, STR_CONV_MODE_LEFT_ALIGN, 2); - return levelDelta; + u8 numLevelsGained = GetNumLevelsGainedFromSteps(daycare, slot); + GetBoxMonNick(&daycare->mons[slot], gStringVar1); + ConvertIntToDecimalStringN(gStringVar2, numLevelsGained, STR_CONV_MODE_LEFT_ALIGN, 2); + return numLevelsGained; } -static u16 sub_8041728(struct DayCareData *dayCareData, u8 slot) +static u16 GetDaycareCostForSelectedMon(struct DayCare *daycare, u8 slot) { u16 cost; - u8 levelDelta = sub_80416A0(dayCareData, slot); - GetBoxMonNick(&dayCareData->mons[slot], gStringVar1); - cost = 100 + 100 * levelDelta; + u8 numLevelsGained = GetNumLevelsGainedFromSteps(daycare, slot); + GetBoxMonNick(&daycare->mons[slot], gStringVar1); + cost = 100 + 100 * numLevelsGained; ConvertIntToDecimalStringN(gStringVar2, cost, STR_CONV_MODE_LEFT_ALIGN, 5); return cost; } -void sub_8041770(void) +void GetDaycareCost(void) { - gSpecialVar_0x8005 = sub_8041728(&gSaveBlock1.daycareData, gSpecialVar_0x8004); + gSpecialVar_0x8005 = GetDaycareCostForSelectedMon(&gSaveBlock1.daycare, gSpecialVar_0x8004); } -void sub_8041790(u16 i) +void Debug_AddDaycareSteps(u16 numSteps) { - gSaveBlock1.daycareData.misc.countersEtc.steps[0] += i; - gSaveBlock1.daycareData.misc.countersEtc.steps[1] += i; + gSaveBlock1.daycare.misc.countersEtc.steps[0] += numSteps; + gSaveBlock1.daycare.misc.countersEtc.steps[1] += numSteps; } -u8 sub_80417B8(void) +u8 GetNumLevelsGainedFromDaycare(void) { - if (GetBoxMonData(&gSaveBlock1.daycareData.mons[gSpecialVar_0x8004], MON_DATA_SPECIES) != 0) - return sub_80416E8(&gSaveBlock1.daycareData, gSpecialVar_0x8004); + if (GetBoxMonData(&gSaveBlock1.daycare.mons[gSpecialVar_0x8004], MON_DATA_SPECIES) != 0) + return GetNumLevelsGainedForDaycareSlot(&gSaveBlock1.daycare, gSpecialVar_0x8004); + return 0; } -static void sub_80417F4(struct DayCareMail *mail) +static void ClearDaycareMail(struct DayCareMail *mail) { - u8 zero; u8 *names; u8 *names2; - int i; - zero = 0; - for (i = 7, names = mail->names + 7; i >= 0; i --) + s32 i; + u8 zero = 0; + + for (i = 7, names = &mail->names[7]; i >= 0; i--) + { *names-- = zero; - names2 = mail->names + 8; + } + + names2 = &mail->names[8]; zero = 0; - names = mail->names + 18; - do *names-- = zero; while ((int)names >= (int)names2); + names = &mail->names[18]; + do *names-- = zero; while ((s32)names >= (s32)names2); ClearMailStruct(&mail->message); } -void unref_sub_8041824(struct DayCareData *dayCareData) +void unref_sub_8041824(struct DayCare *daycare) { u8 slot; - for (slot = 0; slot < ARRAY_COUNT(dayCareData->mons); slot ++) + for (slot = 0; slot < ARRAY_COUNT(daycare->mons); slot++) { - ZeroBoxMonData(&dayCareData->mons[slot]); - dayCareData->misc.countersEtc.steps[slot] = 0; - sub_80417F4(&dayCareData->misc.mail[slot]); + ZeroBoxMonData(&daycare->mons[slot]); + daycare->misc.countersEtc.steps[slot] = 0; + ClearDaycareMail(&daycare->misc.mail[slot]); } - dayCareData->misc.countersEtc.personalityLo = 0; - dayCareData->misc.countersEtc.unk_11a = 0; + + daycare->misc.countersEtc.pendingEggPersonality = 0; + daycare->misc.countersEtc.eggCycleStepsRemaining = 0; } -u16 sub_8041870(u16 species) +// Determines what the species of an Egg would be based on the given species. +// It determines this by working backwards through the evolution chain of the +// given species. +u16 GetEggSpecies(u16 species) { int i, j, k; bool8 found; - for (i = 0; i < 5; i ++) + + // Working backwards up to 5 times seems arbitrary, since the maximum number + // of times would only be 3 for 3-stage evolutions. + for (i = 0; i < 5; i++) { found = FALSE; - for (j = 1; j < NUM_SPECIES; j ++) + for (j = 1; j < NUM_SPECIES; j++) { - for (k = 0; k < 5; k ++) + for (k = 0; k < 5; k++) { if (gEvolutionTable[j].evolutions[k].targetSpecies == species) { @@ -312,92 +348,118 @@ u16 sub_8041870(u16 species) break; } } + if (found) break; } - if (j == 412) + + if (j == NUM_SPECIES) break; } + return species; } -static void sub_80418F0(struct DayCareData *dayCareData) +static void _TriggerPendingDaycareEgg(struct DayCare *daycare) { - dayCareData->misc.countersEtc.personalityLo = (Random() % 0xfffe) + 1; - FlagSet(0x86); + daycare->misc.countersEtc.pendingEggPersonality = (Random() % 0xfffe) + 1; + FlagSet(FLAG_PENDING_DAYCARE_EGG); } -static void sub_804191C(struct DayCareData *dayCareData) +static void _TriggerPendingDaycareMaleEgg(struct DayCare *daycare) { - dayCareData->misc.countersEtc.personalityLo = Random() | 0x8000; - FlagSet(0x86); + daycare->misc.countersEtc.pendingEggPersonality = Random() | 0x8000; + FlagSet(FLAG_PENDING_DAYCARE_EGG); } -void sub_8041940(void) +void TriggerPendingDaycareEgg(void) { - sub_80418F0(&gSaveBlock1.daycareData); + _TriggerPendingDaycareEgg(&gSaveBlock1.daycare); } -void sub_8041950(void) +void TriggerPendingDaycareMaleEgg(void) { - sub_804191C(&gSaveBlock1.daycareData); + _TriggerPendingDaycareMaleEgg(&gSaveBlock1.daycare); } -static void sub_8041960(u8 *data, u8 idx) +// Removes the selected index from the given IV list and shifts the remaining +// elements to the left. +static void RemoveIVIndexFromList(u8 *ivs, u8 selectedIv) { - int i, j; - u8 temp[6]; - data[idx] = 0xff; - for (i = 0; i < 6; i ++) - temp[i] = data[i]; + s32 i, j; + u8 temp[NUM_STATS]; + + ivs[selectedIv] = 0xff; + for (i = 0; i < NUM_STATS; i++) + { + temp[i] = ivs[i]; + } + j = 0; - for (i = 0; i < 6; i ++) + for (i = 0; i < NUM_STATS; i++) + { if (temp[i] != 0xff) - data[j++] = temp[i]; + ivs[j++] = temp[i]; + } } -static void InheritIVs(struct Pokemon *egg, struct DayCareData *dayCareData) +static void InheritIVs(struct Pokemon *egg, struct DayCare *daycare) { u8 i; u8 selectedIvs[3]; - u8 allIvs[6]; - u8 whichParent[3]; + u8 availableIVs[NUM_STATS]; + u8 whichParent[ARRAY_COUNT(selectedIvs)]; u8 iv; - for (i = 0; i < 6; i ++) - allIvs[i] = i; - for (i = 0; i < 3; i ++) + + // Initialize a list of IV indices. + for (i = 0; i < NUM_STATS; i++) { - selectedIvs[i] = allIvs[Random() % (6 - i)]; - sub_8041960(allIvs, selectedIvs[i]); + availableIVs[i] = i; } - for (i = 0; i < 3; i ++) + + // Select the 3 IVs that will be inherited. + for (i = 0; i < ARRAY_COUNT(selectedIvs); i++) + { + // Randomly pick an IV from the available list. + selectedIvs[i] = availableIVs[Random() % (NUM_STATS - i)]; + + // Remove the selected IV index from the available IV indicies. + RemoveIVIndexFromList(availableIVs, selectedIvs[i]); + } + + // Determine which parent each of the selected IVs should inherit from. + for (i = 0; i < ARRAY_COUNT(selectedIvs); i++) + { whichParent[i] = Random() % 2; - for (i = 0; i < 3; i ++) + } + + // Set each of inherited IVs on the egg mon. + for (i = 0; i < ARRAY_COUNT(selectedIvs); i++) { switch (selectedIvs[i]) { case 0: - iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_HP_IV); + iv = GetBoxMonData(&daycare->mons[whichParent[i]], MON_DATA_HP_IV); SetMonData(egg, MON_DATA_HP_IV, &iv); break; case 1: - iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_ATK_IV); + iv = GetBoxMonData(&daycare->mons[whichParent[i]], MON_DATA_ATK_IV); SetMonData(egg, MON_DATA_ATK_IV, &iv); break; case 2: - iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_DEF_IV); + iv = GetBoxMonData(&daycare->mons[whichParent[i]], MON_DATA_DEF_IV); SetMonData(egg, MON_DATA_DEF_IV, &iv); break; case 3: - iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_SPEED_IV); + iv = GetBoxMonData(&daycare->mons[whichParent[i]], MON_DATA_SPEED_IV); SetMonData(egg, MON_DATA_SPEED_IV, &iv); break; case 4: - iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_SPATK_IV); + iv = GetBoxMonData(&daycare->mons[whichParent[i]], MON_DATA_SPATK_IV); SetMonData(egg, MON_DATA_SPATK_IV, &iv); break; case 5: - iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_SPDEF_IV); + iv = GetBoxMonData(&daycare->mons[whichParent[i]], MON_DATA_SPDEF_IV); SetMonData(egg, MON_DATA_SPDEF_IV, &iv); break; } @@ -407,17 +469,19 @@ static void InheritIVs(struct Pokemon *egg, struct DayCareData *dayCareData) #ifdef NONMATCHING static #endif -u8 pokemon_get_eggmoves(struct Pokemon *pokemon, u16 *eggMoves) +// Counts the number of egg moves a pokemon learns and stores the moves in +// the given array. +u8 GetEggMoves(struct Pokemon *pokemon, u16 *eggMoves) { u16 eggMoveIdx; - u16 numMovesFound; + u16 numEggMoves; u16 species; u16 i; - numMovesFound = 0; + numEggMoves = 0; eggMoveIdx = 0; species = GetMonData(pokemon, MON_DATA_SPECIES); - for (i = 0; i < ARRAY_COUNT(gEggMoves) - 1; i ++) + for (i = 0; i < ARRAY_COUNT(gEggMoves) - 1; i++) { if (gEggMoves[i] == species + EGG_MOVES_SPECIES_OFFSET) { @@ -425,57 +489,61 @@ u8 pokemon_get_eggmoves(struct Pokemon *pokemon, u16 *eggMoves) break; } } - for (i = 0; i < 10; i ++) + + for (i = 0; i < 10; i++) { if (gEggMoves[eggMoveIdx + i] > EGG_MOVES_SPECIES_OFFSET) { + // TODO: the curly braces around this if statement are required for a matching build. break; } + eggMoves[i] = gEggMoves[eggMoveIdx + i]; - numMovesFound++; + numEggMoves++; } - return numMovesFound; + + return numEggMoves; } #ifdef NONMATCHING - -void daycare_build_child_moveset(struct Pokemon *egg, struct BoxPokemon *dad, struct BoxPokemon *mom) +void BuildEggMoveset(struct Pokemon *egg, struct BoxPokemon *father, struct BoxPokemon *mother) { u16 numSharedParentMoves; u8 numLevelUpMoves; - u8 numEggMoves; + u16 numEggMoves; u16 i, j; numSharedParentMoves = 0; - for (i = 0; i < 4; i ++) + for (i = 0; i < 4; i++) { - gUnknown_03000500[i] = 0; - gUnknown_030004D8[i] = 0; - gUnknown_030004E0[i] = 0; + gHatchedEggMotherMoves[i] = 0; + gHatchedEggFatherMoves[i] = 0; + gHatchedEggFinalMoves[i] = 0; } - for (i = 0; i < 10; i ++) - gUnknown_030004E8[i] = 0; - for (i = 0; i < 50; i ++) - gUnknown_03000470[i] = 0; + for (i = 0; i < 10; i++) + gHatchedEggEggMoves[i] = 0; + for (i = 0; i < 50; i++) + gHatchedEggLevelUpMoves[i] = 0; - numLevelUpMoves = GetLevelUpMovesBySpecies(GetMonData(egg, MON_DATA_SPECIES), gUnknown_03000470); - for (i = 0; i < 4; i ++) + numLevelUpMoves = GetLevelUpMovesBySpecies(GetMonData(egg, MON_DATA_SPECIES), gHatchedEggLevelUpMoves); + for (i = 0; i < 4; i++) { - gUnknown_030004D8[i] = GetBoxMonData(dad, MON_DATA_MOVE1 + i); - gUnknown_03000500[i] = GetBoxMonData(mom, MON_DATA_MOVE1 + i); + gHatchedEggFatherMoves[i] = GetBoxMonData(father, MON_DATA_MOVE1 + i); + gHatchedEggMotherMoves[i] = GetBoxMonData(mother, MON_DATA_MOVE1 + i); } - numEggMoves = pokemon_get_eggmoves(egg, gUnknown_030004E8); - for (i = 0; i < 4; i ++) + numEggMoves = GetEggMoves(egg, gHatchedEggEggMoves); + + for (i = 0; i < 4; i++) { - if (gUnknown_030004D8[i] != MOVE_NONE) + if (gHatchedEggFatherMoves[i] != MOVE_NONE) { - for (j = 0; j < numEggMoves; j ++) + for (j = 0; j < (u32)numEggMoves; j++) { - if (gUnknown_030004D8[i] == gUnknown_030004E8[j]) + if (gHatchedEggFatherMoves[i] == gHatchedEggEggMoves[j]) { - if (GiveMoveToMon(egg, gUnknown_030004D8[i]) == 0xffff) - DeleteFirstMoveAndGiveMoveToMon(egg, gUnknown_030004D8[i]); + if (GiveMoveToMon(egg, gHatchedEggFatherMoves[i]) == 0xffff) + DeleteFirstMoveAndGiveMoveToMon(egg, gHatchedEggFatherMoves[i]); break; } } @@ -483,40 +551,41 @@ void daycare_build_child_moveset(struct Pokemon *egg, struct BoxPokemon *dad, st else break; } - for (i = 0; i < 4; i ++) + for (i = 0; i < 4; i++) { - if (gUnknown_030004D8[i] != MOVE_NONE) + if (gHatchedEggFatherMoves[i] != MOVE_NONE) { - for (j = 0; j < 50 + 8; j ++) + for (j = 0; j < NUM_TECHNICAL_MACHINES + NUM_HIDDEN_MACHINES; j++) { - if (gUnknown_030004D8[i] == ItemIdToBattleMoveId(ITEM_TM01 + j) && CanMonLearnTMHM(egg, j)) + if (gHatchedEggFatherMoves[i] == ItemIdToBattleMoveId(ITEM_TM01 + j) && CanMonLearnTMHM(egg, j)) { - if (GiveMoveToMon(egg, gUnknown_030004D8[i]) == 0xffff) - DeleteFirstMoveAndGiveMoveToMon(egg, gUnknown_030004D8[i]); + if (GiveMoveToMon(egg, gHatchedEggFatherMoves[i]) == 0xffff) + DeleteFirstMoveAndGiveMoveToMon(egg, gHatchedEggFatherMoves[i]); } } } } - for (i = 0; i < 4; i ++) + for (i = 0; i < 4; i++) { - if (gUnknown_030004D8[i] == MOVE_NONE) + if (gHatchedEggFatherMoves[i] == MOVE_NONE) break; - for (j = 0; j < 4; j ++) + for (j = 0; j < 4; j++) { - if (gUnknown_030004D8[i] == gUnknown_03000500[j] && gUnknown_030004D8[i] != MOVE_NONE) - gUnknown_030004E0[numSharedParentMoves++] = gUnknown_030004D8[i]; + if (gHatchedEggFatherMoves[i] == gHatchedEggMotherMoves[j] && gHatchedEggFatherMoves[i] != MOVE_NONE) + gHatchedEggFinalMoves[numSharedParentMoves++] = gHatchedEggFatherMoves[i]; } } - for (i = 0; i < 4; i ++) + + for (i = 0; i < 4; i++) { - if (gUnknown_030004E0[i] == MOVE_NONE) + if (gHatchedEggFinalMoves[i] == MOVE_NONE) break; - for (j = 0; j < numLevelUpMoves; j ++) + for (j = 0; j < numLevelUpMoves; j++) { - if (gUnknown_03000470[j] != MOVE_NONE && gUnknown_030004E0[i] == gUnknown_03000470[j]) + if (gHatchedEggLevelUpMoves[j] != MOVE_NONE && gHatchedEggFinalMoves[i] == gHatchedEggLevelUpMoves[j]) { - if (GiveMoveToMon(egg, gUnknown_030004E0[i]) == 0xffff) - DeleteFirstMoveAndGiveMoveToMon(egg, gUnknown_030004E0[i]); + if (GiveMoveToMon(egg, gHatchedEggFinalMoves[i]) == 0xffff) + DeleteFirstMoveAndGiveMoveToMon(egg, gHatchedEggFinalMoves[i]); break; } } @@ -524,7 +593,7 @@ void daycare_build_child_moveset(struct Pokemon *egg, struct BoxPokemon *dad, st } #else __attribute__((naked)) -void daycare_build_child_moveset(struct Pokemon *egg, struct BoxPokemon *dad, struct BoxPokemon *mom) +void BuildEggMoveset(struct Pokemon *egg, struct BoxPokemon *father, struct BoxPokemon *mother) { asm_unified("\tpush {r4-r7,lr}\n" "\tmov r7, r10\n" @@ -538,10 +607,10 @@ void daycare_build_child_moveset(struct Pokemon *egg, struct BoxPokemon *dad, st "\tmovs r0, 0\n" "\tstr r0, [sp]\n" "\tmovs r6, 0\n" - "\tldr r5, _08041CC8 @ =gUnknown_03000500\n" + "\tldr r5, _08041CC8 @ =gHatchedEggMotherMoves\n" "\tmovs r2, 0\n" - "\tldr r4, _08041CCC @ =gUnknown_030004D8\n" - "\tldr r3, _08041CD0 @ =gUnknown_030004E0\n" + "\tldr r4, _08041CCC @ =gHatchedEggFatherMoves\n" + "\tldr r3, _08041CD0 @ =gHatchedEggFinalMoves\n" "_08041BE4:\n" "\tlsls r1, r6, 1\n" "\tadds r0, r1, r5\n" @@ -556,7 +625,7 @@ void daycare_build_child_moveset(struct Pokemon *egg, struct BoxPokemon *dad, st "\tcmp r6, 0x3\n" "\tbls _08041BE4\n" "\tmovs r6, 0\n" - "\tldr r2, _08041CD4 @ =gUnknown_030004E8\n" + "\tldr r2, _08041CD4 @ =gHatchedEggEggMoves\n" "\tmovs r1, 0\n" "_08041C02:\n" "\tlsls r0, r6, 1\n" @@ -568,7 +637,7 @@ void daycare_build_child_moveset(struct Pokemon *egg, struct BoxPokemon *dad, st "\tcmp r6, 0x9\n" "\tbls _08041C02\n" "\tmovs r6, 0\n" - "\tldr r2, _08041CD8 @ =gUnknown_03000470\n" + "\tldr r2, _08041CD8 @ =gHatchedEggLevelUpMoves\n" "\tmovs r1, 0\n" "_08041C18:\n" "\tlsls r0, r6, 1\n" @@ -584,13 +653,13 @@ void daycare_build_child_moveset(struct Pokemon *egg, struct BoxPokemon *dad, st "\tbl GetMonData\n" "\tlsls r0, 16\n" "\tlsrs r0, 16\n" - "\tldr r1, _08041CD8 @ =gUnknown_03000470\n" + "\tldr r1, _08041CD8 @ =gHatchedEggLevelUpMoves\n" "\tbl GetLevelUpMovesBySpecies\n" "\tlsls r0, 24\n" "\tlsrs r0, 24\n" "\tstr r0, [sp, 0x4]\n" "\tmovs r6, 0\n" - "\tldr r1, _08041CCC @ =gUnknown_030004D8\n" + "\tldr r1, _08041CCC @ =gHatchedEggFatherMoves\n" "\tmov r8, r1\n" "_08041C46:\n" "\tadds r5, r6, 0\n" @@ -605,7 +674,7 @@ void daycare_build_child_moveset(struct Pokemon *egg, struct BoxPokemon *dad, st "\tmov r0, r9\n" "\tadds r1, r5, 0\n" "\tbl GetBoxMonData\n" - "\tldr r1, _08041CC8 @ =gUnknown_03000500\n" + "\tldr r1, _08041CC8 @ =gHatchedEggMotherMoves\n" "\tadds r4, r1\n" "\tstrh r0, [r4]\n" "\tadds r0, r6, 0x1\n" @@ -613,15 +682,15 @@ void daycare_build_child_moveset(struct Pokemon *egg, struct BoxPokemon *dad, st "\tlsrs r6, r0, 16\n" "\tcmp r6, 0x3\n" "\tbls _08041C46\n" - "\tldr r1, _08041CD4 @ =gUnknown_030004E8\n" + "\tldr r1, _08041CD4 @ =gHatchedEggEggMoves\n" "\tadds r0, r7, 0\n" - "\tbl pokemon_get_eggmoves\n" + "\tbl GetEggMoves\n" "\tlsls r0, 24\n" "\tlsrs r0, 24\n" "\tmov r8, r0\n" "\tmovs r6, 0\n" "_08041C82:\n" - "\tldr r0, _08041CCC @ =gUnknown_030004D8\n" + "\tldr r0, _08041CCC @ =gHatchedEggFatherMoves\n" "\tlsls r1, r6, 1\n" "\tadds r2, r1, r0\n" "\tldrh r1, [r2]\n" @@ -634,7 +703,7 @@ void daycare_build_child_moveset(struct Pokemon *egg, struct BoxPokemon *dad, st "\tadds r4, r2, 0\n" "\tldr r2, _08041CDC @ =0x0000ffff\n" "_08041C9A:\n" - "\tldr r0, _08041CD4 @ =gUnknown_030004E8\n" + "\tldr r0, _08041CD4 @ =gHatchedEggEggMoves\n" "\tlsls r1, r5, 1\n" "\tadds r1, r0\n" "\tldrh r0, [r4]\n" @@ -655,11 +724,11 @@ void daycare_build_child_moveset(struct Pokemon *egg, struct BoxPokemon *dad, st "\tbl DeleteFirstMoveAndGiveMoveToMon\n" "\tb _08041CEA\n" "\t.align 2, 0\n" - "_08041CC8: .4byte gUnknown_03000500\n" - "_08041CCC: .4byte gUnknown_030004D8\n" - "_08041CD0: .4byte gUnknown_030004E0\n" - "_08041CD4: .4byte gUnknown_030004E8\n" - "_08041CD8: .4byte gUnknown_03000470\n" + "_08041CC8: .4byte gHatchedEggMotherMoves\n" + "_08041CCC: .4byte gHatchedEggFatherMoves\n" + "_08041CD0: .4byte gHatchedEggFinalMoves\n" + "_08041CD4: .4byte gHatchedEggEggMoves\n" + "_08041CD8: .4byte gHatchedEggLevelUpMoves\n" "_08041CDC: .4byte 0x0000ffff\n" "_08041CE0:\n" "\tadds r0, r5, 0x1\n" @@ -671,7 +740,7 @@ void daycare_build_child_moveset(struct Pokemon *egg, struct BoxPokemon *dad, st "\tadds r0, r6, 0x1\n" "\tlsls r0, 16\n" "\tlsrs r6, r0, 16\n" - "\tldr r3, _08041E14 @ =gUnknown_030004D8\n" + "\tldr r3, _08041E14 @ =gHatchedEggFatherMoves\n" "\tmov r9, r3\n" "\tcmp r6, 0x3\n" "\tbls _08041C82\n" @@ -688,7 +757,7 @@ void daycare_build_child_moveset(struct Pokemon *egg, struct BoxPokemon *dad, st "\tcmp r1, 0\n" "\tbeq _08041D5C\n" "\tmovs r5, 0\n" - "\tldr r0, _08041E14 @ =gUnknown_030004D8\n" + "\tldr r0, _08041E14 @ =gHatchedEggFatherMoves\n" "\tadds r4, r2, r0\n" "\tldr r6, _08041E18 @ =0x0000ffff\n" "\tmov r9, r0\n" @@ -734,12 +803,12 @@ void daycare_build_child_moveset(struct Pokemon *egg, struct BoxPokemon *dad, st "\tmovs r6, 0\n" "\tmov r2, r9\n" "\tldrh r0, [r2]\n" - "\tldr r3, _08041E20 @ =gUnknown_030004E0\n" + "\tldr r3, _08041E20 @ =gHatchedEggFinalMoves\n" "\tmov r10, r3\n" "\tcmp r0, 0\n" "\tbeq _08041DC6\n" "\tmov r4, r9\n" - "\tldr r0, _08041E24 @ =gUnknown_03000500\n" + "\tldr r0, _08041E24 @ =gHatchedEggMotherMoves\n" "\tmov r9, r0\n" "\tmov r12, r10\n" "_08041D7C:\n" @@ -797,7 +866,7 @@ void daycare_build_child_moveset(struct Pokemon *egg, struct BoxPokemon *dad, st "\tbcs _08041E38\n" "\tldr r2, _08041E18 @ =0x0000ffff\n" "_08041DDE:\n" - "\tldr r1, _08041E28 @ =gUnknown_03000470\n" + "\tldr r1, _08041E28 @ =gHatchedEggLevelUpMoves\n" "\tlsls r0, r5, 1\n" "\tadds r0, r1\n" "\tldrh r1, [r0]\n" @@ -823,12 +892,12 @@ void daycare_build_child_moveset(struct Pokemon *egg, struct BoxPokemon *dad, st "\tbl DeleteFirstMoveAndGiveMoveToMon\n" "\tb _08041E38\n" "\t.align 2, 0\n" - "_08041E14: .4byte gUnknown_030004D8\n" + "_08041E14: .4byte gHatchedEggFatherMoves\n" "_08041E18: .4byte 0x0000ffff\n" "_08041E1C: .4byte 0x00000121\n" - "_08041E20: .4byte gUnknown_030004E0\n" - "_08041E24: .4byte gUnknown_03000500\n" - "_08041E28: .4byte gUnknown_03000470\n" + "_08041E20: .4byte gHatchedEggFinalMoves\n" + "_08041E24: .4byte gHatchedEggMotherMoves\n" + "_08041E28: .4byte gHatchedEggLevelUpMoves\n" "_08041E2C:\n" "\tadds r0, r5, 0x1\n" "\tlsls r0, 16\n" @@ -842,7 +911,7 @@ void daycare_build_child_moveset(struct Pokemon *egg, struct BoxPokemon *dad, st "\tlsrs r6, r0, 16\n" "\tcmp r6, 0x3\n" "\tbhi _08041E50\n" - "\tldr r0, _08041E60 @ =gUnknown_030004E0\n" + "\tldr r0, _08041E60 @ =gHatchedEggFinalMoves\n" "\tlsls r1, r6, 1\n" "\tadds r1, r0\n" "\tldrh r1, [r1]\n" @@ -859,166 +928,178 @@ void daycare_build_child_moveset(struct Pokemon *egg, struct BoxPokemon *dad, st "\tpop {r0}\n" "\tbx r0\n" "\t.align 2, 0\n" - "_08041E60: .4byte gUnknown_030004E0"); + "_08041E60: .4byte gHatchedEggFinalMoves"); } #endif -static void RemoveEggFromDayCare(struct DayCareData *dayCareData) +static void RemoveEggFromDayCare(struct DayCare *daycare) { - dayCareData->misc.countersEtc.personalityLo = 0; - dayCareData->misc.countersEtc.unk_11a = 0; + daycare->misc.countersEtc.pendingEggPersonality = 0; + daycare->misc.countersEtc.eggCycleStepsRemaining = 0; } -void sub_8041E7C(void) +void RejectEggFromDayCare(void) { - RemoveEggFromDayCare(&gSaveBlock1.daycareData); + RemoveEggFromDayCare(&gSaveBlock1.daycare); } -static void incense_effects(u16 *species, struct DayCareData *dayCareData) +static void AlterEggSpeciesWithIncenseItem(u16 *species, struct DayCare *daycare) { - u16 momItem, dadItem; + u16 motherItem, fatherItem; if (*species == SPECIES_WYNAUT || *species == SPECIES_AZURILL) { - momItem = GetBoxMonData(&dayCareData->mons[0], MON_DATA_HELD_ITEM); - dadItem = GetBoxMonData(&dayCareData->mons[1], MON_DATA_HELD_ITEM); - if (*species == SPECIES_WYNAUT && momItem != ITEM_LAX_INCENSE && dadItem != ITEM_LAX_INCENSE) + motherItem = GetBoxMonData(&daycare->mons[0], MON_DATA_HELD_ITEM); + fatherItem = GetBoxMonData(&daycare->mons[1], MON_DATA_HELD_ITEM); + if (*species == SPECIES_WYNAUT && motherItem != ITEM_LAX_INCENSE && fatherItem != ITEM_LAX_INCENSE) { *species = SPECIES_WOBBUFFET; } - if (*species == SPECIES_AZURILL && momItem != ITEM_SEA_INCENSE && dadItem != ITEM_SEA_INCENSE) + + if (*species == SPECIES_AZURILL && motherItem != ITEM_SEA_INCENSE && fatherItem != ITEM_SEA_INCENSE) { *species = SPECIES_MARILL; } } } -static u16 sub_8041EEC(struct DayCareData *dayCareData, u8 *a1) // inherit_species_from_mom +static u16 DetermineEggSpeciesAndParentSlots(struct DayCare *daycare, u8 *parentSlots) { u16 i; u16 species[2]; u16 eggSpecies; - u8 buffer; - for (i=0; i<2; i++) + + // Determine which of the daycare mons is the mother and father of the egg. + // The 0th index of the parentSlots array is considered the mother slot, and the + // 1st index is the father slot. + for (i = 0; i < 2; i++) { - species[i] = GetBoxMonData(&dayCareData->mons[i], MON_DATA_SPECIES); + species[i] = GetBoxMonData(&daycare->mons[i], MON_DATA_SPECIES); if (species[i] == SPECIES_DITTO) { - a1[0] = i ^ 1; - a1[1] = i; + parentSlots[0] = i ^ 1; + parentSlots[1] = i; } - else if (GetBoxMonGender(&dayCareData->mons[i]) == MON_FEMALE) + else if (GetBoxMonGender(&daycare->mons[i]) == MON_FEMALE) { - a1[0] = i; - a1[1] = i ^ 1; + parentSlots[0] = i; + parentSlots[1] = i ^ 1; } } - eggSpecies = sub_8041870(species[a1[0]]); - if (eggSpecies == SPECIES_NIDORAN_F && dayCareData->misc.countersEtc.personalityLo & 0x8000) + + eggSpecies = GetEggSpecies(species[parentSlots[0]]); + if (eggSpecies == SPECIES_NIDORAN_F && daycare->misc.countersEtc.pendingEggPersonality & 0x8000) { eggSpecies = SPECIES_NIDORAN_M; } - if (eggSpecies == SPECIES_ILLUMISE && dayCareData->misc.countersEtc.personalityLo & 0x8000) + if (eggSpecies == SPECIES_ILLUMISE && daycare->misc.countersEtc.pendingEggPersonality & 0x8000) { eggSpecies = SPECIES_VOLBEAT; } - if (species[a1[1]] == SPECIES_DITTO && GetBoxMonGender(&dayCareData->mons[a1[0]]) != MON_FEMALE) + + // Make Ditto the "mother" slot if the other daycare mon is male. + if (species[parentSlots[1]] == SPECIES_DITTO && GetBoxMonGender(&daycare->mons[parentSlots[0]]) != MON_FEMALE) { - buffer = a1[1]; - a1[1] = a1[0]; - a1[0] = buffer; + u8 temp = parentSlots[1]; + parentSlots[1] = parentSlots[0]; + parentSlots[0] = temp; } + return eggSpecies; } -static void sub_8041FC4(struct DayCareData *dayCareData) // give_egg +static void _GiveEggFromDaycare(struct DayCare *daycare) // give_egg { struct Pokemon egg; u16 species; - u8 parents[2]; + u8 parentSlots[2]; // 0th index is "mother" daycare slot, 1st is "father" u8 isEgg; - species = sub_8041EEC(dayCareData, parents); - incense_effects(&species, dayCareData); - sub_80420FC(&egg, species, dayCareData); - InheritIVs(&egg, dayCareData); - daycare_build_child_moveset(&egg, &dayCareData->mons[parents[1]], &dayCareData->mons[parents[0]]); + + species = DetermineEggSpeciesAndParentSlots(daycare, parentSlots); + AlterEggSpeciesWithIncenseItem(&species, daycare); + SetInitialEggData(&egg, species, daycare); + InheritIVs(&egg, daycare); + BuildEggMoveset(&egg, &daycare->mons[parentSlots[1]], &daycare->mons[parentSlots[0]]); isEgg = TRUE; SetMonData(&egg, MON_DATA_IS_EGG, &isEgg); gPlayerParty[5] = egg; party_compaction(); CalculatePlayerPartyCount(); - RemoveEggFromDayCare(dayCareData); + RemoveEggFromDayCare(daycare); } -void sub_8042044(struct Pokemon *mon, u16 species, u8 overwriteMetLocation) // scr_create_egg +void CreateEgg(struct Pokemon *mon, u16 species, bool8 setMetLocation) { u8 metLevel; u16 ball; u8 language; u8 metLocation; u8 isEgg; + CreateMon(mon, species, 5, 0x20, FALSE, 0, FALSE, 0); metLevel = 0; ball = ITEM_POKE_BALL; language = LANGUAGE_JAPANESE; SetMonData(mon, MON_DATA_POKEBALL, &ball); - SetMonData(mon, MON_DATA_NICKNAME, gUnknown_08209AD4); + SetMonData(mon, MON_DATA_NICKNAME, sJapaneseEggNickname); SetMonData(mon, MON_DATA_FRIENDSHIP, &gBaseStats[species].eggCycles); SetMonData(mon, MON_DATA_MET_LEVEL, &metLevel); SetMonData(mon, MON_DATA_LANGUAGE, &language); - if (overwriteMetLocation) + if (setMetLocation) { - metLocation = 0xfd; + metLocation = 253; // hot springs; see PokemonSummaryScreen_PrintEggTrainerMemo SetMonData(mon, MON_DATA_MET_LOCATION, &metLocation); } + isEgg = TRUE; SetMonData(mon, MON_DATA_IS_EGG, &isEgg); } -static void sub_80420FC(struct Pokemon *mon, u16 species, struct DayCareData *dayCareData) +static void SetInitialEggData(struct Pokemon *mon, u16 species, struct DayCare *daycare) { u32 personality; u16 ball; u8 metLevel; u8 language; - personality = dayCareData->misc.countersEtc.personalityLo | (Random() << 16); + + personality = daycare->misc.countersEtc.pendingEggPersonality | (Random() << 16); CreateMon(mon, species, 5, 0x20, TRUE, personality, FALSE, 0); metLevel = 0; ball = ITEM_POKE_BALL; language = LANGUAGE_JAPANESE; SetMonData(mon, MON_DATA_POKEBALL, &ball); - SetMonData(mon, MON_DATA_NICKNAME, gUnknown_08209AD4); + SetMonData(mon, MON_DATA_NICKNAME, sJapaneseEggNickname); SetMonData(mon, MON_DATA_FRIENDSHIP, &gBaseStats[species].eggCycles); SetMonData(mon, MON_DATA_MET_LEVEL, &metLevel); SetMonData(mon, MON_DATA_LANGUAGE, &language); } -void sp0B8_daycare(void) +void GiveEggFromDaycare(void) { - sub_8041FC4(&gSaveBlock1.daycareData); + _GiveEggFromDaycare(&gSaveBlock1.daycare); } #ifdef NONMATCHING -static bool8 sub_80421B0(struct DayCareData *dayCareData) +static bool8 _ShouldEggHatch(struct DayCare *daycare) { struct BoxPokemon *parent; u32 i; int v0; int steps; v0 = 0; - for (i=0, parent=&dayCareData->mons[0]; i<2; parent++, i++) + for (i=0, parent=&daycare->mons[0]; i<2; parent++, i++) { if (GetBoxMonData(parent, MON_DATA_SANITY_BIT2, v0)) { - dayCareData->misc.countersEtc.steps[i]++; + daycare->misc.countersEtc.steps[i]++; v0++; } } - if (dayCareData->misc.countersEtc.personalityLo == 0 && v0 == 2 && dayCareData->misc.extra.misc[4] == 0xff && daycare_relationship_score(dayCareData) > (u32)((u32)(Random() * 100) / 0xffff)) + if (daycare->misc.countersEtc.pendingEggPersonality == 0 && v0 == 2 && daycare->misc.extra.misc[4] == 0xff && GetDaycareCompatibilityScore(daycare) > (u32)((u32)(Random() * 100) / 0xffff)) { - sub_8041940(); + TriggerPendingDaycareEgg(); } - if ((++dayCareData->misc.countersEtc.unk_11a) == 0xff) + if ((++daycare->misc.countersEtc.eggCycleStepsRemaining) == 0xff) { for (i=0; imisc.countersEtc.personalityLo) | dayCareData->misc.countersEtc.personalityLo) >> 31; + return (u32)((-daycare->misc.countersEtc.pendingEggPersonality) | daycare->misc.countersEtc.pendingEggPersonality) >> 31; } -static void sub_80422C4(struct DayCareData *dayCareData) +static void _GetDaycareMonNicknames(struct DayCare *daycare) { u8 language; - if (GetBoxMonData(&dayCareData->mons[0], MON_DATA_SPECIES) != 0) + if (GetBoxMonData(&daycare->mons[0], MON_DATA_SPECIES) != 0) { - GetBoxMonNick(&dayCareData->mons[0], gStringVar1); - language = GetBoxMonData(&dayCareData->mons[0], MON_DATA_LANGUAGE); - GetBoxMonData(&dayCareData->mons[0], MON_DATA_OT_NAME, gStringVar3); + GetBoxMonNick(&daycare->mons[0], gStringVar1); + language = GetBoxMonData(&daycare->mons[0], MON_DATA_LANGUAGE); + GetBoxMonData(&daycare->mons[0], MON_DATA_OT_NAME, gStringVar3); ConvertInternationalString(gStringVar3, language); } - if (GetBoxMonData(&dayCareData->mons[1], MON_DATA_SPECIES) != 0) + + if (GetBoxMonData(&daycare->mons[1], MON_DATA_SPECIES) != 0) { - GetBoxMonNick(&dayCareData->mons[1], gStringVar2); + GetBoxMonNick(&daycare->mons[1], gStringVar2); } } -u16 sub_8042328(void) +u16 GetSelectedDaycareMonNickname(void) { GetBoxMonNick(&gPlayerParty[gLastFieldPokeMenuOpened].box, gStringVar1); return GetBoxMonData(&gPlayerParty[gLastFieldPokeMenuOpened].box, MON_DATA_SPECIES); } -void sp0B5_daycare(void) +void GetDaycareMonNicknames(void) { - sub_80422C4(&gSaveBlock1.daycareData); + _GetDaycareMonNicknames(&gSaveBlock1.daycare); } -u8 sp0B6_daycare(void) +u8 GetDaycareState(void) { - u8 monCount; - if (sub_80422B4(&gSaveBlock1.daycareData)) + // The daycare can be in 4 possible states: + // 0: default state--no deposited mons, no egg + // 1: there is an egg waiting for the player to pick it up + // 2: there is a single pokemon in the daycare + // 3: there are two pokemon in the daycare, no egg + + u8 numMons; + if (IsEggPending(&gSaveBlock1.daycare)) { + // There is an Egg waiting for the player. return 1; } - monCount = Daycare_CountPokemon(&gSaveBlock1.daycareData); - if (monCount != 0) + + numMons = CountPokemonInDaycare(&gSaveBlock1.daycare); + if (numMons != 0) { - return monCount + 1; + return numMons + 1; } + return 0; } #ifdef NONMATCHING static #endif -bool8 sub_80423A8(u16 *a, u16 *b) +bool8 EggGroupsOverlap(u16 *eggGroups1, u16 *eggGroups2) { - int i, j; + // Determine if the two given egg group lists contain any of the + // same egg groups. + s32 i, j; u16 *v0, *v1, v2; - for (i=0, v0=a; i<2; v0++, i++) + + for (i = 0, v0 = eggGroups1; i < 2; v0++, i++) { - for (j=0, v2=*v0, v1=b; j<2; v1++, j++) + for (j = 0, v2 = *v0, v1 = eggGroups2; j < 2; v1++, j++) { if (v2 == *v1) { @@ -1231,11 +1325,12 @@ bool8 sub_80423A8(u16 *a, u16 *b) } } } + return FALSE; } #ifdef NONMATCHING -static u8 daycare_relationship_score(struct DayCareData *dayCareData) +static u8 GetDaycareCompatibilityScore(struct DayCare *daycare) { u16 species[2]; u32 otIds[2]; @@ -1248,7 +1343,8 @@ static u8 daycare_relationship_score(struct DayCareData *dayCareData) u16 *egg1; u16 *egg2; struct BoxPokemon *parent; - for (i=0, parent=&dayCareData->mons[0], spc=species, ids=otIds, gnd=genders, egg1=&eggGroups[0][0], egg2=&eggGroups[0][1]; i<2; spc++, egg1+=2, egg2+=2, parent++, i++) + + for (i=0, parent=&daycare->mons[0], spc=species, ids=otIds, gnd=genders, egg1=&eggGroups[0][0], egg2=&eggGroups[0][1]; i<2; spc++, egg1+=2, egg2+=2, parent++, i++) { *spc = GetBoxMonData(parent, MON_DATA_SPECIES); *ids++ = GetBoxMonData(parent, MON_DATA_OT_ID); @@ -1280,7 +1376,7 @@ static u8 daycare_relationship_score(struct DayCareData *dayCareData) { return 0; } - if (!sub_80423A8(eggGroups[0], eggGroups[1])) + if (!EggGroupsOverlap(eggGroups[0], eggGroups[1])) { return 0; } @@ -1303,7 +1399,7 @@ static u8 daycare_relationship_score(struct DayCareData *dayCareData) } #else __attribute__((naked)) -static u8 daycare_relationship_score(struct DayCareData *dayCareData) +static u8 GetDaycareCompatibilityScore(struct DayCare *daycare) { asm_unified("\tpush {r4-r7,lr}\n" "\tmov r7, r10\n" @@ -1415,7 +1511,7 @@ static u8 daycare_relationship_score(struct DayCareData *dayCareData) "\tbeq _08042484\n" "\tadd r1, sp, 0x4\n" "\tmov r0, sp\n" - "\tbl sub_80423A8\n" + "\tbl EggGroupsOverlap\n" "\tlsls r0, 24\n" "\tcmp r0, 0\n" "\tbeq _08042484\n" @@ -1454,17 +1550,17 @@ static u8 daycare_relationship_score(struct DayCareData *dayCareData) } #endif -u8 daycare_relationship_score_from_savegame(void) +u8 GetDaycareCompatibilityScoreFromSave(void) { - return daycare_relationship_score(&gSaveBlock1.daycareData); + return GetDaycareCompatibilityScore(&gSaveBlock1.daycare); } -void sp0B9_daycare_relationship_comment(void) +void SetDaycareCompatibilityString(void) { u8 whichString; u8 relationshipScore; - relationshipScore = daycare_relationship_score_from_savegame(); + relationshipScore = GetDaycareCompatibilityScoreFromSave(); whichString = 0; if (relationshipScore == 0) whichString = 3; @@ -1474,7 +1570,8 @@ void sp0B9_daycare_relationship_comment(void) whichString = 1; if (relationshipScore == 70) whichString = 0; - StringCopy(gStringVar4, gUnknown_08209AC4[whichString]); + + StringCopy(gStringVar4, sCompatibilityMessages[whichString]); } #ifdef NONMATCHING @@ -1486,12 +1583,12 @@ bool8 NameHasGenderSymbol(const u8 *name, u8 genderRatio) // This portion is nonmatching flags[1] = 0; flags[0] = 0; - for (i = 0; name[i] != EOS; i ++) + for (i = 0; name[i] != EOS; i++) // End nonmatching portion { - if (name[i] == CHAR_MALE) flags[0] ++; - if (name[i] == CHAR_FEMALE) flags[1] ++; + if (name[i] == CHAR_MALE) flags[0]++; + if (name[i] == CHAR_FEMALE) flags[1]++; } if (genderRatio == MON_MALE && flags[0] && !flags[1]) return TRUE; if (genderRatio == MON_FEMALE && flags[1] && !flags[0]) return TRUE; @@ -1581,45 +1678,48 @@ static u8 *AppendGenderSymbol(u8 *name, u8 gender) if (!NameHasGenderSymbol(name, MON_MALE)) return StringAppend(name, gOtherText_MaleSymbol3); } - else if (gender == MON_FEMALE) { if (!NameHasGenderSymbol(name, MON_FEMALE)) return StringAppend(name, gOtherText_FemaleSymbol3); } + return StringAppend(name, gOtherText_GenderlessSymbol); } -static u8 *MonAppendGenderSymbol(u8 *name, struct BoxPokemon *boxMon) +static u8 *AppendMonGenderSymbol(u8 *name, struct BoxPokemon *boxMon) { return AppendGenderSymbol(name, GetBoxMonGender(boxMon)); } -static void DaycareLevelMenuGetText(struct DayCareData *dayCareData, u8 *dest) +static void GetDaycareLevelMenuText(struct DayCare *daycare, u8 *dest) { - u8 buffers[2][20]; + u8 monNames[2][20]; u8 i; + *dest = EOS; - for (i = 0; i < 2; i ++) + for (i = 0; i < 2; i++) { - GetBoxMonNick(&dayCareData->mons[i], buffers[i]); - MonAppendGenderSymbol(buffers[i], &dayCareData->mons[i]); + GetBoxMonNick(&daycare->mons[i], monNames[i]); + AppendMonGenderSymbol(monNames[i], &daycare->mons[i]); } - StringCopy(dest, buffers[0]); + + StringCopy(dest, monNames[0]); StringAppend(dest, gOtherText_NewLine2); - StringAppend(dest, buffers[1]); + StringAppend(dest, monNames[1]); StringAppend(dest, gOtherText_NewLine2); StringAppend(dest, gOtherText_CancelAndLv); } -static void DaycareLevelMenuGetLevelText(struct DayCareData *dayCareData, u8 *dest) +static void GetDaycareLevelMenuLevelText(struct DayCare *daycare, u8 *dest) { u8 i; u8 level; + *dest = EOS; - for (i = 0; i < 2; i ++) + for (i = 0; i < 2; i++) { - level = Daycare_GetLevelAfterSteps(&dayCareData->mons[i], dayCareData->misc.countersEtc.steps[i]); + level = GetLevelAfterDaycareSteps(&daycare->mons[i], daycare->misc.countersEtc.steps[i]); dest[0] = 0x34; dest[1] = 0xFC; dest[2] = 0x14; @@ -1630,10 +1730,11 @@ static void DaycareLevelMenuGetLevelText(struct DayCareData *dayCareData, u8 *de dest[2] = 0x00; dest = StringCopy(dest + 3, gOtherText_NewLine2); } + *dest = EOS; } -static void DaycareLevelMenuProcessKeyInput(u8 taskId) +static void HandleDaycareLevelMenuInput(u8 taskId) { if (gMain.newKeys & DPAD_UP) { @@ -1648,7 +1749,7 @@ static void DaycareLevelMenuProcessKeyInput(u8 taskId) { if (gTasks[taskId].data[0] != 2) { - gTasks[taskId].data[0] ++; + gTasks[taskId].data[0]++; MoveMenuCursor(+1); PlaySE(SE_SELECT); } @@ -1676,12 +1777,12 @@ void ShowDaycareLevelMenu(void) { u8 buffer[100]; MenuDrawTextWindow(15, 6, 29, 13); - DaycareLevelMenuGetText(&gSaveBlock1.daycareData, buffer); + GetDaycareLevelMenuText(&gSaveBlock1.daycare, buffer); MenuPrint(buffer, 16, 7); - DaycareLevelMenuGetLevelText(&gSaveBlock1.daycareData, buffer); + GetDaycareLevelMenuLevelText(&gSaveBlock1.daycare, buffer); MenuPrint_PixelCoords(buffer, 0xce, 0x38, TRUE); InitMenu(0, 16, 7, 3, 0, 13); - CreateTask(DaycareLevelMenuProcessKeyInput, 3); + CreateTask(HandleDaycareLevelMenuInput, 3); } void ChooseSendDaycareMon(void) diff --git a/src/field/field_control_avatar.c b/src/field/field_control_avatar.c index e9dd0e9a6..c7b4861d5 100644 --- a/src/field/field_control_avatar.c +++ b/src/field/field_control_avatar.c @@ -500,9 +500,9 @@ bool8 sub_8068894(void) ScriptContext1_SetupScript(gUnknown_081A14B8); return TRUE; } - if (sub_80422A0()) + if (ShouldEggHatch()) { - IncrementGameStat(13); + IncrementGameStat(GAME_STAT_HATCHED_EGGS); ScriptContext1_SetupScript(S_EggHatch); return TRUE; } -- cgit v1.2.3 From 92d37c52fd3be7c3382d9a2e51a81afd843816fa Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Mon, 13 Nov 2017 04:37:00 -0500 Subject: migrate battle_message data to src (TODO, german) --- src/field/battle_tower.c | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) (limited to 'src/field') diff --git a/src/field/battle_tower.c b/src/field/battle_tower.c index 7a9c043b0..d6271643c 100644 --- a/src/field/battle_tower.c +++ b/src/field/battle_tower.c @@ -262,13 +262,13 @@ static void SetEReaderTrainerChecksum(struct BattleTowerEReaderTrainer *ereaderT static void SetBattleTowerRecordChecksum(struct BattleTowerRecord *); static void ClearBattleTowerRecord(struct BattleTowerRecord *); -extern const u8 gUnknown_08400E23[]; -extern const u8 gUnknown_08400E29[]; -extern const u8 gUnknown_08400E2C[]; -extern const u8 gUnknown_08400E2E[]; -extern const u8 gUnknown_08400E30[]; -extern const u8 gUnknown_08400E32[]; -extern const u8 gUnknown_08400E36[]; +extern const u8 BattleText_Format3[]; +extern const u8 BattleText_Format4[]; +extern const u8 BattleText_Format5[]; +extern const u8 BattleText_Format6[]; +extern const u8 BattleText_Format7[]; +extern const u8 BattleText_Format8[]; +extern const u8 BattleText_Format9[]; extern u16 gSpecialVar_0x8004; extern u8 gTrainerClassToPicIndex[]; extern u8 gTrainerClassToNameIndex[]; @@ -1409,24 +1409,24 @@ u8 AppendBattleTowerBannedSpeciesName(u16 species, u8 curIndexToAppend, s32 numT case 10: if (numToAppend == curIndexToAppend) { - StringAppend(gStringVar1, gUnknown_08400E23); + StringAppend(gStringVar1, BattleText_Format3); } else if (numToAppend > curIndexToAppend) { - StringAppend(gStringVar1, gUnknown_08400E29); + StringAppend(gStringVar1, BattleText_Format4); } break; case 1: if (curIndexToAppend == numToAppend) { - StringAppend(gStringVar1, gUnknown_08400E23); + StringAppend(gStringVar1, BattleText_Format3); } else { - StringAppend(gStringVar1, gUnknown_08400E29); + StringAppend(gStringVar1, BattleText_Format4); } - StringAppend(gStringVar1, gUnknown_08400E30); + StringAppend(gStringVar1, BattleText_Format7); break; case 3: case 5: @@ -1435,14 +1435,14 @@ u8 AppendBattleTowerBannedSpeciesName(u16 species, u8 curIndexToAppend, s32 numT default: if (curIndexToAppend == numToAppend) { - StringAppend(gStringVar1, gUnknown_08400E23); + StringAppend(gStringVar1, BattleText_Format3); } else { - StringAppend(gStringVar1, gUnknown_08400E29); + StringAppend(gStringVar1, BattleText_Format4); } - StringAppend(gStringVar1, gUnknown_08400E2E); + StringAppend(gStringVar1, BattleText_Format6); break; } @@ -1533,17 +1533,17 @@ void CheckPartyBattleTowerBanlist(void) if (counter == 0) { - StringAppend(gStringVar1, gUnknown_08400E2C); - StringAppend(gStringVar1, gUnknown_08400E32); + StringAppend(gStringVar1, BattleText_Format5); + StringAppend(gStringVar1, BattleText_Format8); return; } if (1 & counter) - StringAppend(gStringVar1, gUnknown_08400E2E); + StringAppend(gStringVar1, BattleText_Format6); else - StringAppend(gStringVar1, gUnknown_08400E2C); + StringAppend(gStringVar1, BattleText_Format5); - StringAppend(gStringVar1, gUnknown_08400E36); + StringAppend(gStringVar1, BattleText_Format9); } else { -- cgit v1.2.3 From f4562d618ccae091f6ca3cfff15b4b22db334d50 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Mon, 13 Nov 2017 17:34:34 -0500 Subject: migrate tv data to src --- src/field/field_specials.c | 2 + src/field/tv.c | 379 ++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 361 insertions(+), 20 deletions(-) (limited to 'src/field') diff --git a/src/field/field_specials.c b/src/field/field_specials.c index 46061febf..48e9b44aa 100644 --- a/src/field/field_specials.c +++ b/src/field/field_specials.c @@ -48,6 +48,8 @@ extern u16 gSpecialVar_0x8004; extern u16 gSpecialVar_0x8005; extern u16 gScriptResult; +extern u8 *const gUnknown_083D1464[3]; + EWRAM_DATA bool8 gBikeCyclingChallenge = FALSE; EWRAM_DATA u8 gBikeCollisions = 0; EWRAM_DATA u32 gBikeCyclingTimer = 0; diff --git a/src/field/tv.c b/src/field/tv.c index a0287e7df..ac9f4a0f0 100644 --- a/src/field/tv.c +++ b/src/field/tv.c @@ -39,6 +39,8 @@ #include "strings.h" #include "text.h" #include "ewram.h" +#include "moves.h" +#include "region_map_sections.h" struct UnkTvStruct { @@ -66,26 +68,18 @@ extern struct TVSaleItem gUnknown_02038724[3]; struct UnkTvStruct gUnknown_03005D38; -extern u8 *gTVBravoTrainerTextGroup[]; -extern u8 *gTVBravoTrainerBattleTowerTextGroup[]; -extern u8 *gTVSmartShopperTextGroup[]; -extern u8 *gTVNameRaterTextGroup[]; -extern u8 *gTVPokemonTodayTextGroup[]; -extern u8 *gTVPokemonTodayFailedCaptureTextGroup[]; -extern u8 *gTVFanClubTextGroup[]; -extern u8 *gTVRecentHappeningsTextGroup[]; -extern u8 *gTVFanClubOpinionsTextGroup[]; -extern u8 *gTVPokemonOutbreakTextGroup[]; -extern u8 *gTVGabbyAndTyTextGroup[]; -extern u8 *gTVFishingGuruAdviceTextGroup[]; -extern u8 *gTVWorldOfMastersTextGroup[]; -extern struct OutbreakPokemon gPokeOutbreakSpeciesList[5]; - - - -extern const u8 *gTVNewsTextGroup1[]; -extern const u8 *gTVNewsTextGroup2[]; -extern const u8 *gTVNewsTextGroup3[]; +//extern u8 *gTVBravoTrainerTextGroup[]; +//extern u8 *gTVBravoTrainerBattleTowerTextGroup[]; +//extern u8 *gTVSmartShopperTextGroup[]; +//extern u8 *gTVNameRaterTextGroup[]; +//extern u8 *gTVPokemonTodayTextGroup[]; +//extern u8 *gTVPokemonTodayFailedCaptureTextGroup[]; +//extern u8 *gTVRecentHappeningsTextGroup[]; +//extern u8 *gTVFanClubOpinionsTextGroup[]; +//extern u8 *gTVPokemonOutbreakTextGroup[]; +//extern u8 *gTVGabbyAndTyTextGroup[]; +//extern u8 *gTVFishingGuruAdviceTextGroup[]; +//extern u8 *gTVWorldOfMastersTextGroup[]; extern u16 gScriptLastTalked; @@ -105,6 +99,351 @@ static u8 gUnknown_03000720; static u8 gUnknown_03000721; static s8 gUnknown_03000722; +const struct OutbreakPokemon gPokeOutbreakSpeciesList[5] = +{ + { + .species = SPECIES_SURSKIT, + .moves = {MOVE_BUBBLE, MOVE_QUICK_ATTACK, MOVE_NONE, MOVE_NONE}, + .level = 3, + .location = MAPSEC_Route102, + }, + { + .species = SPECIES_SURSKIT, + .moves = {MOVE_BUBBLE, MOVE_QUICK_ATTACK, MOVE_NONE, MOVE_NONE}, + .level = 15, + .location = MAPSEC_Route114, + }, + { + .species = SPECIES_SURSKIT, + .moves = {MOVE_BUBBLE, MOVE_QUICK_ATTACK, MOVE_NONE, MOVE_NONE}, + .level = 15, + .location = MAPSEC_Route117, + }, + { + .species = SPECIES_SURSKIT, + .moves = {MOVE_BUBBLE, MOVE_QUICK_ATTACK, MOVE_NONE, MOVE_NONE}, + .level = 28, + .location = MAPSEC_Route120, + }, + { + .species = SPECIES_SKITTY, + .moves = {MOVE_GROWL, MOVE_TACKLE, MOVE_NONE, MOVE_NONE}, + .level = 15, + .location = MAPSEC_Route116, + }, +}; + +extern const u8 gTVNewsText_EnergyGuru1[]; +extern const u8 gTVNewsText_GameCorner1[]; +extern const u8 gTVNewsText_LilycoveDepartment1[]; +extern const u8 gTVNewsText_EnergyGuru2[]; +extern const u8 gTVNewsText_GameCorner2[]; +extern const u8 gTVNewsText_LilycoveDepartment2[]; +extern const u8 gTVNewsText_EnergyGuru3[]; +extern const u8 gTVNewsText_GameCorner3[]; +extern const u8 gTVNewsText_LilycoveDepartment3[]; +extern const u8 gTVFanClubText1[]; +extern const u8 gTVFanClubText2[]; +extern const u8 gTVFanClubText3[]; +extern const u8 gTVFanClubText4[]; +extern const u8 gTVFanClubText5[]; +extern const u8 gTVFanClubText6[]; +extern const u8 gTVFanClubText7[]; +extern const u8 gTVFanClubText8[]; +extern const u8 gTVRecentHappeningsText1[]; +extern const u8 gTVRecentHappeningsText2[]; +extern const u8 gTVRecentHappeningsText3[]; +extern const u8 gTVRecentHappeningsText4[]; +extern const u8 gTVRecentHappeningsText5[]; +extern const u8 gTVRecentHappeningsText6[]; +extern const u8 gTVFanClubOpinionsText1[]; +extern const u8 gTVFanClubOpinionsText2[]; +extern const u8 gTVFanClubOpinionsText3[]; +extern const u8 gTVFanClubOpinionsText4[]; +extern const u8 gTVFanClubOpinionsText5[]; +extern const u8 gTVPokemonOutbreakText[]; +extern const u8 gTVPokemonTodayText1[]; +extern const u8 gTVPokemonTodayText2[]; +extern const u8 gTVPokemonTodayText3[]; +extern const u8 gTVPokemonTodayText4[]; +extern const u8 gTVPokemonTodayText5[]; +extern const u8 gTVPokemonTodayText6[]; +extern const u8 gTVPokemonTodayText7[]; +extern const u8 gTVPokemonTodayText8[]; +extern const u8 gTVPokemonTodayText9[]; +extern const u8 gTVPokemonTodayText10[]; +extern const u8 gTVPokemonTodayText11[]; +extern const u8 gTVPokemonTodayText12[]; +extern const u8 gTVSmartShopperText1[]; +extern const u8 gTVSmartShopperText2[]; +extern const u8 gTVSmartShopperText3[]; +extern const u8 gTVSmartShopperText4[]; +extern const u8 gTVSmartShopperText5[]; +extern const u8 gTVSmartShopperText6[]; +extern const u8 gTVSmartShopperText7[]; +extern const u8 gTVSmartShopperText8[]; +extern const u8 gTVSmartShopperText9[]; +extern const u8 gTVSmartShopperText10[]; +extern const u8 gTVSmartShopperText11[]; +extern const u8 gTVSmartShopperText12[]; +extern const u8 gTVSmartShopperText13[]; +extern const u8 gTVBravoTrainerText1[]; +extern const u8 gTVBravoTrainerText2[]; +extern const u8 gTVBravoTrainerText3[]; +extern const u8 gTVBravoTrainerText4[]; +extern const u8 gTVBravoTrainerText5[]; +extern const u8 gTVBravoTrainerText6[]; +extern const u8 gTVBravoTrainerText7[]; +extern const u8 gTVBravoTrainerText8[]; +extern const u8 gTVBravoTrainerText9[]; +extern const u8 gTVBravoTrainerBattleTowerText1[]; +extern const u8 gTVBravoTrainerBattleTowerText2[]; +extern const u8 gTVBravoTrainerBattleTowerText3[]; +extern const u8 gTVBravoTrainerBattleTowerText4[]; +extern const u8 gTVBravoTrainerBattleTowerText5[]; +extern const u8 gTVBravoTrainerBattleTowerText6[]; +extern const u8 gTVBravoTrainerBattleTowerText7[]; +extern const u8 gTVBravoTrainerBattleTowerText8[]; +extern const u8 gTVBravoTrainerBattleTowerText9[]; +extern const u8 gTVBravoTrainerBattleTowerText10[]; +extern const u8 gTVBravoTrainerBattleTowerText11[]; +extern const u8 gTVBravoTrainerBattleTowerText12[]; +extern const u8 gTVBravoTrainerBattleTowerText13[]; +extern const u8 gTVBravoTrainerBattleTowerText14[]; +extern const u8 gTVBravoTrainerBattleTowerText15[]; +extern const u8 gTVNameRaterText1[]; +extern const u8 gTVNameRaterText2[]; +extern const u8 gTVNameRaterText3[]; +extern const u8 gTVNameRaterText4[]; +extern const u8 gTVNameRaterText5[]; +extern const u8 gTVNameRaterText6[]; +extern const u8 gTVNameRaterText7[]; +extern const u8 gTVNameRaterText8[]; +extern const u8 gTVNameRaterText9[]; +extern const u8 gTVNameRaterText10[]; +extern const u8 gTVNameRaterText11[]; +extern const u8 gTVNameRaterText12[]; +extern const u8 gTVNameRaterText13[]; +extern const u8 gTVNameRaterText14[]; +extern const u8 gTVNameRaterText15[]; +extern const u8 gTVNameRaterText16[]; +extern const u8 gTVNameRaterText17[]; +extern const u8 gTVNameRaterText18[]; +extern const u8 gTVNameRaterText19[]; +extern const u8 gTVPokemonTodayFailedCaptureText1[]; +extern const u8 gTVPokemonTodayFailedCaptureText2[]; +extern const u8 gTVPokemonTodayFailedCaptureText3[]; +extern const u8 gTVPokemonTodayFailedCaptureText4[]; +extern const u8 gTVPokemonTodayFailedCaptureText5[]; +extern const u8 gTVPokemonTodayFailedCaptureText6[]; +extern const u8 gTVPokemonTodayFailedCaptureText7[]; +extern const u8 gTVFishingGuruAdviceText1[]; +extern const u8 gTVFishingGuruAdviceText2[]; +extern const u8 gTVWorldOfMastersText1[]; +extern const u8 gTVWorldOfMastersText2[]; +extern const u8 gTVWorldOfMastersText3[]; +extern const u8 gTVGabbyAndTyText1[]; +extern const u8 gTVGabbyAndTyText2[]; +extern const u8 gTVGabbyAndTyText3[]; +extern const u8 gTVGabbyAndTyText4[]; +extern const u8 gTVGabbyAndTyText5[]; +extern const u8 gTVGabbyAndTyText6[]; +extern const u8 gTVGabbyAndTyText7[]; +extern const u8 gTVGabbyAndTyText8[]; +extern const u8 gTVGabbyAndTyText9[]; + +const u8 *const gTVNewsTextGroup1[] = +{ + NULL, + gTVNewsText_EnergyGuru1, + gTVNewsText_GameCorner1, + gTVNewsText_LilycoveDepartment1, +}; + +const u8 *const gTVNewsTextGroup2[] = +{ + NULL, + gTVNewsText_EnergyGuru2, + gTVNewsText_GameCorner2, + gTVNewsText_LilycoveDepartment2, +}; + +const u8 *const gTVNewsTextGroup3[] = +{ + NULL, + gTVNewsText_EnergyGuru3, + gTVNewsText_GameCorner3, + gTVNewsText_LilycoveDepartment3, +}; + +u8 *const gUnknown_083D1464[] = +{ + gStringVar1, + gStringVar2, + gStringVar3, +}; + +const u8 *const gTVFanClubTextGroup[] = +{ + gTVFanClubText1, + gTVFanClubText2, + gTVFanClubText3, + gTVFanClubText4, + gTVFanClubText5, + gTVFanClubText6, + gTVFanClubText7, + gTVFanClubText8, +}; + +const u8 *const gTVRecentHappeningsTextGroup[] = +{ + gTVRecentHappeningsText1, + gTVRecentHappeningsText2, + gTVRecentHappeningsText3, + gTVRecentHappeningsText4, + gTVRecentHappeningsText5, + gTVRecentHappeningsText6, +}; + +const u8 *const gTVFanClubOpinionsTextGroup[] = +{ + gTVFanClubOpinionsText1, + gTVFanClubOpinionsText2, + gTVFanClubOpinionsText3, + gTVFanClubOpinionsText4, + gTVFanClubOpinionsText5, +}; + +const u8 *const gTVPokemonOutbreakTextGroup[] = +{ + gTVPokemonOutbreakText, +}; + +const u8 *const gTVPokemonTodayTextGroup[] = +{ + gTVPokemonTodayText1, + gTVPokemonTodayText2, + gTVPokemonTodayText3, + gTVPokemonTodayText4, + gTVPokemonTodayText5, + gTVPokemonTodayText6, + gTVPokemonTodayText7, + gTVPokemonTodayText8, + gTVPokemonTodayText9, + gTVPokemonTodayText10, + gTVPokemonTodayText11, + gTVPokemonTodayText12, +}; + +const u8 *const gTVSmartShopperTextGroup[] = +{ + gTVSmartShopperText1, + gTVSmartShopperText2, + gTVSmartShopperText3, + gTVSmartShopperText4, + gTVSmartShopperText5, + gTVSmartShopperText6, + gTVSmartShopperText7, + gTVSmartShopperText8, + gTVSmartShopperText9, + gTVSmartShopperText10, + gTVSmartShopperText11, + gTVSmartShopperText12, + gTVSmartShopperText13, +}; + +const u8 *const gTVBravoTrainerTextGroup[] = +{ + gTVBravoTrainerText1, + gTVBravoTrainerText2, + gTVBravoTrainerText3, + gTVBravoTrainerText4, + gTVBravoTrainerText5, + gTVBravoTrainerText6, + gTVBravoTrainerText7, + gTVBravoTrainerText8, + gTVBravoTrainerText9, +}; + +const u8 *const gTVBravoTrainerBattleTowerTextGroup[] = +{ + gTVBravoTrainerBattleTowerText1, + gTVBravoTrainerBattleTowerText2, + gTVBravoTrainerBattleTowerText3, + gTVBravoTrainerBattleTowerText4, + gTVBravoTrainerBattleTowerText5, + gTVBravoTrainerBattleTowerText6, + gTVBravoTrainerBattleTowerText7, + gTVBravoTrainerBattleTowerText8, + gTVBravoTrainerBattleTowerText9, + gTVBravoTrainerBattleTowerText10, + gTVBravoTrainerBattleTowerText11, + gTVBravoTrainerBattleTowerText12, + gTVBravoTrainerBattleTowerText13, + gTVBravoTrainerBattleTowerText14, + gTVBravoTrainerBattleTowerText15, +}; + +const u8 *const gTVNameRaterTextGroup[] = +{ + gTVNameRaterText1, + gTVNameRaterText2, + gTVNameRaterText3, + gTVNameRaterText4, + gTVNameRaterText5, + gTVNameRaterText6, + gTVNameRaterText7, + gTVNameRaterText8, + gTVNameRaterText9, + gTVNameRaterText10, + gTVNameRaterText11, + gTVNameRaterText12, + gTVNameRaterText13, + gTVNameRaterText14, + gTVNameRaterText15, + gTVNameRaterText16, + gTVNameRaterText17, + gTVNameRaterText18, + gTVNameRaterText19, +}; + +const u8 *const gTVPokemonTodayFailedCaptureTextGroup[] = +{ + gTVPokemonTodayFailedCaptureText1, + gTVPokemonTodayFailedCaptureText2, + gTVPokemonTodayFailedCaptureText3, + gTVPokemonTodayFailedCaptureText4, + gTVPokemonTodayFailedCaptureText5, + gTVPokemonTodayFailedCaptureText6, + gTVPokemonTodayFailedCaptureText7, +}; + +const u8 *const gTVFishingGuruAdviceTextGroup[] = +{ + gTVFishingGuruAdviceText1, + gTVFishingGuruAdviceText2, +}; + +const u8 *const gTVWorldOfMastersTextGroup[] = +{ + gTVWorldOfMastersText1, + gTVWorldOfMastersText2, + gTVWorldOfMastersText3, +}; + +const u8 *const gTVGabbyAndTyTextGroup[] = +{ + gTVGabbyAndTyText1, + gTVGabbyAndTyText2, + gTVGabbyAndTyText3, + gTVGabbyAndTyText4, + gTVGabbyAndTyText5, + gTVGabbyAndTyText6, + gTVGabbyAndTyText7, + gTVGabbyAndTyText8, + gTVGabbyAndTyText9, +}; + void ClearTVShowData(void) { u8 showidx; -- cgit v1.2.3 From 25b90f99dd5005748b9cd4cf895cdbdfb2c7c2e9 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Mon, 13 Nov 2017 17:37:22 -0500 Subject: remove tv extern comments --- src/field/tv.c | 13 ------------- 1 file changed, 13 deletions(-) (limited to 'src/field') diff --git a/src/field/tv.c b/src/field/tv.c index ac9f4a0f0..29d012f28 100644 --- a/src/field/tv.c +++ b/src/field/tv.c @@ -68,19 +68,6 @@ extern struct TVSaleItem gUnknown_02038724[3]; struct UnkTvStruct gUnknown_03005D38; -//extern u8 *gTVBravoTrainerTextGroup[]; -//extern u8 *gTVBravoTrainerBattleTowerTextGroup[]; -//extern u8 *gTVSmartShopperTextGroup[]; -//extern u8 *gTVNameRaterTextGroup[]; -//extern u8 *gTVPokemonTodayTextGroup[]; -//extern u8 *gTVPokemonTodayFailedCaptureTextGroup[]; -//extern u8 *gTVRecentHappeningsTextGroup[]; -//extern u8 *gTVFanClubOpinionsTextGroup[]; -//extern u8 *gTVPokemonOutbreakTextGroup[]; -//extern u8 *gTVGabbyAndTyTextGroup[]; -//extern u8 *gTVFishingGuruAdviceTextGroup[]; -//extern u8 *gTVWorldOfMastersTextGroup[]; - extern u16 gScriptLastTalked; extern u8 gScriptContestCategory; -- cgit v1.2.3 From 542e1cac5520175949098cb6311faaba42bc2f37 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Wed, 15 Nov 2017 15:35:15 -0500 Subject: migrate field_door data to src --- src/field/field_door.c | 411 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 396 insertions(+), 15 deletions(-) (limited to 'src/field') diff --git a/src/field/field_door.c b/src/field/field_door.c index ab46f0696..ef349bca7 100644 --- a/src/field/field_door.c +++ b/src/field/field_door.c @@ -6,16 +6,397 @@ #include "songs.h" #include "task.h" -extern struct DoorAnimFrame gDoorOpenAnimFrames[]; -extern struct DoorAnimFrame gDoorCloseAnimFrames[]; -extern struct DoorGraphics gDoorAnimGraphicsTable[]; +const u8 DoorAnimTiles_04[][0x100] = +{ + INCBIN_U8("graphics/door_anims/04/0.4bpp"), + INCBIN_U8("graphics/door_anims/04/1.4bpp"), + INCBIN_U8("graphics/door_anims/04/2.4bpp"), +}; + +// TODO: Make these blank palette includes? +asm(".space 32"); + +const u8 DoorAnimTiles_05[][0x100] = +{ + INCBIN_U8("graphics/door_anims/05/0.4bpp"), + INCBIN_U8("graphics/door_anims/05/1.4bpp"), + INCBIN_U8("graphics/door_anims/05/2.4bpp"), +}; + +const u8 DoorAnimTiles_08[][0x100] = +{ + INCBIN_U8("graphics/door_anims/08/0.4bpp"), + INCBIN_U8("graphics/door_anims/08/1.4bpp"), + INCBIN_U8("graphics/door_anims/08/2.4bpp"), +}; + +asm(".space 32"); + +const u8 DoorAnimTiles_15[][0x100] = +{ + INCBIN_U8("graphics/door_anims/15/0.4bpp"), + INCBIN_U8("graphics/door_anims/15/1.4bpp"), + INCBIN_U8("graphics/door_anims/15/2.4bpp"), +}; + +asm(".space 32"); + +const u8 DoorAnimTiles_16[][0x100] = +{ + INCBIN_U8("graphics/door_anims/16/0.4bpp"), + INCBIN_U8("graphics/door_anims/16/1.4bpp"), + INCBIN_U8("graphics/door_anims/16/2.4bpp"), +}; + +asm(".space 32"); + +const u8 DoorAnimTiles_00[][0x100] = +{ + INCBIN_U8("graphics/door_anims/00/0.4bpp"), + INCBIN_U8("graphics/door_anims/00/1.4bpp"), + INCBIN_U8("graphics/door_anims/00/2.4bpp"), +}; + +const u8 DoorAnimTiles_01[][0x100] = +{ + INCBIN_U8("graphics/door_anims/01/0.4bpp"), + INCBIN_U8("graphics/door_anims/01/1.4bpp"), + INCBIN_U8("graphics/door_anims/01/2.4bpp"), +}; + +const u8 DoorAnimTiles_02[][0x100] = +{ + INCBIN_U8("graphics/door_anims/02/0.4bpp"), + INCBIN_U8("graphics/door_anims/02/1.4bpp"), + INCBIN_U8("graphics/door_anims/02/2.4bpp"), +}; + +const u8 DoorAnimTiles_03[][0x100] = +{ + INCBIN_U8("graphics/door_anims/03/0.4bpp"), + INCBIN_U8("graphics/door_anims/03/1.4bpp"), + INCBIN_U8("graphics/door_anims/03/2.4bpp"), +}; + +const u8 DoorAnimTiles_06[][0x100] = +{ + INCBIN_U8("graphics/door_anims/06/0.4bpp"), + INCBIN_U8("graphics/door_anims/06/1.4bpp"), + INCBIN_U8("graphics/door_anims/06/2.4bpp"), +}; + +const u8 DoorAnimTiles_07[][0x100] = +{ + INCBIN_U8("graphics/door_anims/07/0.4bpp"), + INCBIN_U8("graphics/door_anims/07/1.4bpp"), + INCBIN_U8("graphics/door_anims/07/2.4bpp"), +}; + +const u8 DoorAnimTiles_09[][0x100] = +{ + INCBIN_U8("graphics/door_anims/09/0.4bpp"), + INCBIN_U8("graphics/door_anims/09/1.4bpp"), + INCBIN_U8("graphics/door_anims/09/2.4bpp"), +}; + +asm(".space 32"); + +const u8 DoorAnimTiles_10[][0x100] = +{ + INCBIN_U8("graphics/door_anims/10/0.4bpp"), + INCBIN_U8("graphics/door_anims/10/1.4bpp"), + INCBIN_U8("graphics/door_anims/10/2.4bpp"), +}; + +asm(".space 32"); + +const u8 DoorAnimTiles_11[][0x100] = +{ + INCBIN_U8("graphics/door_anims/11/0.4bpp"), + INCBIN_U8("graphics/door_anims/11/1.4bpp"), + INCBIN_U8("graphics/door_anims/11/2.4bpp"), +}; + +asm(".space 32"); + +const u8 DoorAnimTiles_12[][0x100] = +{ + INCBIN_U8("graphics/door_anims/12/0.4bpp"), + INCBIN_U8("graphics/door_anims/12/1.4bpp"), + INCBIN_U8("graphics/door_anims/12/2.4bpp"), +}; + +asm(".space 32"); + +const u8 DoorAnimTiles_13[][0x100] = +{ + INCBIN_U8("graphics/door_anims/13/0.4bpp"), + INCBIN_U8("graphics/door_anims/13/1.4bpp"), + INCBIN_U8("graphics/door_anims/13/2.4bpp"), +}; + +asm(".space 32"); + +const u8 DoorAnimTiles_14[][0x100] = +{ + INCBIN_U8("graphics/door_anims/14/0.4bpp"), + INCBIN_U8("graphics/door_anims/14/1.4bpp"), + INCBIN_U8("graphics/door_anims/14/2.4bpp"), +}; + +asm(".space 32"); + +const u8 DoorAnimTiles_17[][0x100] = +{ + INCBIN_U8("graphics/door_anims/17/0.4bpp"), + INCBIN_U8("graphics/door_anims/17/1.4bpp"), + INCBIN_U8("graphics/door_anims/17/2.4bpp"), +}; + +asm(".space 32"); + +const u8 DoorAnimTiles_18[][0x100] = +{ + INCBIN_U8("graphics/door_anims/18/0.4bpp"), + INCBIN_U8("graphics/door_anims/18/1.4bpp"), + INCBIN_U8("graphics/door_anims/18/2.4bpp"), +}; + +asm(".space 32"); + +const u8 DoorAnimTiles_19[][0x100] = +{ + INCBIN_U8("graphics/door_anims/19/0.4bpp"), + INCBIN_U8("graphics/door_anims/19/1.4bpp"), + INCBIN_U8("graphics/door_anims/19/2.4bpp"), +}; + +asm(".space 32"); + +const u8 DoorAnimTiles_20[][0x100] = +{ + INCBIN_U8("graphics/door_anims/20/0.4bpp"), + INCBIN_U8("graphics/door_anims/20/1.4bpp"), + INCBIN_U8("graphics/door_anims/20/2.4bpp"), +}; + +asm(".space 32"); + +const u8 DoorAnimTiles_21[][0x100] = +{ + INCBIN_U8("graphics/door_anims/21/0.4bpp"), + INCBIN_U8("graphics/door_anims/21/1.4bpp"), + INCBIN_U8("graphics/door_anims/21/2.4bpp"), +}; + +asm(".space 32"); + +const u8 DoorAnimTiles_22[][0x100] = +{ + INCBIN_U8("graphics/door_anims/22/0.4bpp"), + INCBIN_U8("graphics/door_anims/22/1.4bpp"), + INCBIN_U8("graphics/door_anims/22/2.4bpp"), +}; + +asm(".space 32"); + +const u8 DoorAnimTiles_23[][0x100] = +{ + INCBIN_U8("graphics/door_anims/23/0.4bpp"), + INCBIN_U8("graphics/door_anims/23/1.4bpp"), + INCBIN_U8("graphics/door_anims/23/2.4bpp"), +}; + +asm(".space 32"); + +const u8 DoorAnimTiles_24[][0x100] = +{ + INCBIN_U8("graphics/door_anims/24/0.4bpp"), + INCBIN_U8("graphics/door_anims/24/1.4bpp"), + INCBIN_U8("graphics/door_anims/24/2.4bpp"), +}; + +asm(".space 32"); + +const u8 DoorAnimTiles_25[][0x100] = +{ + INCBIN_U8("graphics/door_anims/25/0.4bpp"), + INCBIN_U8("graphics/door_anims/25/1.4bpp"), + INCBIN_U8("graphics/door_anims/25/2.4bpp"), +}; + +asm(".space 32"); + +const u8 DoorAnimTiles_26[][0x100] = +{ + INCBIN_U8("graphics/door_anims/26/0.4bpp"), + INCBIN_U8("graphics/door_anims/26/1.4bpp"), + INCBIN_U8("graphics/door_anims/26/2.4bpp"), +}; + +asm(".space 32"); + +const u8 DoorAnimTiles_27[][0x100] = +{ + INCBIN_U8("graphics/door_anims/27/0.4bpp"), + INCBIN_U8("graphics/door_anims/27/1.4bpp"), + INCBIN_U8("graphics/door_anims/27/2.4bpp"), +}; + +asm(".space 32"); + +const u8 DoorAnimTiles_28[][0x100] = +{ + INCBIN_U8("graphics/door_anims/28/0.4bpp"), + INCBIN_U8("graphics/door_anims/28/1.4bpp"), + INCBIN_U8("graphics/door_anims/28/2.4bpp"), +}; + +asm(".space 32"); + +const u8 DoorAnimTiles_29[][0x100] = +{ + INCBIN_U8("graphics/door_anims/29/0.4bpp"), + INCBIN_U8("graphics/door_anims/29/1.4bpp"), + INCBIN_U8("graphics/door_anims/29/2.4bpp"), +}; + +asm(".space 32"); + +const u8 DoorAnimTiles_30[][0x100] = +{ + INCBIN_U8("graphics/door_anims/30/0.4bpp"), + INCBIN_U8("graphics/door_anims/30/1.4bpp"), + INCBIN_U8("graphics/door_anims/30/2.4bpp"), +}; + +asm(".space 32"); + +const u8 DoorAnimTiles_31[][0x100] = +{ + INCBIN_U8("graphics/door_anims/31/0.4bpp"), + INCBIN_U8("graphics/door_anims/31/1.4bpp"), + INCBIN_U8("graphics/door_anims/31/2.4bpp"), +}; + +asm(".space 32"); + +const u8 DoorAnimTiles_32[][0x100] = +{ + INCBIN_U8("graphics/door_anims/32/0.4bpp"), + INCBIN_U8("graphics/door_anims/32/1.4bpp"), + INCBIN_U8("graphics/door_anims/32/2.4bpp"), +}; + +asm(".space 32"); + +const u8 DoorAnimTiles_33[][0x100] = +{ + INCBIN_U8("graphics/door_anims/33/0.4bpp"), + INCBIN_U8("graphics/door_anims/33/1.4bpp"), + INCBIN_U8("graphics/door_anims/33/2.4bpp"), +}; + +asm(".space 32"); + +static const struct DoorAnimFrame gDoorOpenAnimFrames[] = +{ + {4, -1}, + {4, 0}, + {4, 0x100}, + {4, 0x200}, + {0, 0}, +}; + +static const struct DoorAnimFrame gDoorCloseAnimFrames[] = +{ + {4, 0x200}, + {4, 0x100}, + {4, 0}, + {4, -1}, + {0, 0}, +}; + +const u8 DoorAnimPalettes_830F8A4[] = {1, 1, 1, 1, 1, 1, 1, 1}; // door 00 +const u8 DoorAnimPalettes_830F8AC[] = {1, 1, 1, 1, 1, 1, 1, 1}; // door 01 +const u8 DoorAnimPalettes_830F8B4[] = {5, 5, 5, 5, 5, 5, 5, 5}; // door 02 +const u8 DoorAnimPalettes_830F8BC[] = {0, 0, 1, 1, 1, 1, 1, 1}; // door 03 +const u8 DoorAnimPalettes_830F8C4[] = {6, 6, 6, 6, 6, 6, 6, 6}; // door 04 +const u8 DoorAnimPalettes_830F8CC[] = {8, 8, 8, 8, 8, 8, 8, 8}; // door 05 +const u8 DoorAnimPalettes_830F8D4[] = {11, 11, 11, 11, 11, 11, 11, 11}; // door 06 +const u8 DoorAnimPalettes_830F8DC[] = {10, 10, 10, 10, 10, 10, 10, 10}; // door 07 +const u8 DoorAnimPalettes_830F8E4[] = {7, 7, 7, 7, 7, 7, 7, 7}; // door 08 +const u8 DoorAnimPalettes_830F8EC[] = {8, 8, 8, 8, 8, 8, 8, 8}; // door 09 +const u8 DoorAnimPalettes_830F8F4[] = {9, 9, 9, 9, 9, 9, 9, 9}; // door 10 +const u8 DoorAnimPalettes_830F8FC[] = {9, 9, 1, 1, 1, 1, 1, 1}; // door 11 +const u8 DoorAnimPalettes_830F904[] = {8, 8, 8, 8, 8, 8, 8, 8}; // door 12 +const u8 DoorAnimPalettes_830F90C[] = {9, 9, 9, 9, 9, 9, 9, 9}; // door 13 +const u8 DoorAnimPalettes_830F914[] = {6, 6, 6, 6, 6, 6, 6, 6}; // door 14 +const u8 DoorAnimPalettes_830F91C[] = {6, 6, 6, 6, 6, 6, 6, 6}; // door 15 +const u8 DoorAnimPalettes_830F924[] = {0, 0, 5, 5, 5, 5, 5, 5}; // door 16 +const u8 DoorAnimPalettes_830F92C[] = {6, 6, 1, 1, 1, 1, 1, 1}; // door 17 +const u8 DoorAnimPalettes_830F934[] = {7, 7, 7, 7, 7, 7, 7, 7}; // door 18 +const u8 DoorAnimPalettes_830F93C[] = {6, 6, 5, 5, 5, 5, 5, 5}; // door 19 +const u8 DoorAnimPalettes_830F944[] = {5, 5, 5, 5, 5, 5, 5, 5}; // door 20 +const u8 DoorAnimPalettes_830F94C[] = {1, 1, 1, 1, 1, 1, 1, 1}; // door 21 +const u8 DoorAnimPalettes_830F954[] = {6, 6, 7, 7, 7, 7, 7, 7}; // door 22 +const u8 DoorAnimPalettes_830F95C[] = {7, 7, 7, 7, 7, 7, 7, 7}; // door 23 +const u8 DoorAnimPalettes_830F964[] = {5, 5, 5, 5, 5, 5, 5, 5}; // door 24 +const u8 DoorAnimPalettes_830F96C[] = {9, 9, 9, 9, 9, 9, 9, 9}; // door 25 +const u8 DoorAnimPalettes_830F974[] = {8, 8, 8, 8, 8, 8, 8, 8}; // door 26 +const u8 DoorAnimPalettes_830F97C[] = {6, 6, 6, 6, 6, 6, 6, 6}; // door 27 +const u8 DoorAnimPalettes_830F984[] = {7, 7, 7, 7, 7, 7, 7, 7}; // door 28 +const u8 DoorAnimPalettes_830F98C[] = {11, 11, 7, 7, 7, 7, 7, 7}; // door 29 +const u8 DoorAnimPalettes_830F994[] = {7, 7, 7, 7, 7, 7, 7, 7}; // door 30 +const u8 DoorAnimPalettes_830F99C[] = {6, 6, 7, 7, 7, 7, 7, 7}; // door 31 +const u8 DoorAnimPalettes_830F9A4[] = {9, 9, 9, 9, 9, 9, 9, 9}; // door 32 +const u8 DoorAnimPalettes_830F9AC[] = {7, 7, 7, 7, 7, 7, 7, 7}; // door 33 + +static const struct DoorGraphics gDoorAnimGraphicsTable[] = +{ + {0x021, 0, DoorAnimTiles_00, DoorAnimPalettes_830F8A4}, // door 00 + {0x061, 1, DoorAnimTiles_01, DoorAnimPalettes_830F8AC}, // door 01 + {0x1CD, 1, DoorAnimTiles_02, DoorAnimPalettes_830F8B4}, // door 02 + {0x041, 1, DoorAnimTiles_03, DoorAnimPalettes_830F8BC}, // door 03 + {0x248, 0, DoorAnimTiles_04, DoorAnimPalettes_830F8C4}, // door 04 + {0x249, 0, DoorAnimTiles_05, DoorAnimPalettes_830F8CC}, // door 05 + {0x22F, 0, DoorAnimTiles_06, DoorAnimPalettes_830F8D4}, // door 06 + {0x21F, 0, DoorAnimTiles_07, DoorAnimPalettes_830F8DC}, // door 07 + {0x2A5, 0, DoorAnimTiles_08, DoorAnimPalettes_830F8E4}, // door 08 + {0x287, 0, DoorAnimTiles_09, DoorAnimPalettes_830F8F4}, // door 09 + {0x2AC, 0, DoorAnimTiles_10, DoorAnimPalettes_830F934}, // door 10 + {0x3A1, 0, DoorAnimTiles_11, DoorAnimPalettes_830F93C}, // door 11 + {0x2DC, 0, DoorAnimTiles_12, DoorAnimPalettes_830F92C}, // door 12 + {0x225, 0, DoorAnimTiles_13, DoorAnimPalettes_830F924}, // door 13 + {0x1DB, 1, DoorAnimTiles_14, DoorAnimPalettes_830F94C}, // door 14 + {0x246, 0, DoorAnimTiles_15, DoorAnimPalettes_830F8EC}, // door 15 + {0x28E, 0, DoorAnimTiles_16, DoorAnimPalettes_830F944}, // door 16 + {0x2A1, 0, DoorAnimTiles_17, DoorAnimPalettes_830F8FC}, // door 17 + {0x21C, 0, DoorAnimTiles_18, DoorAnimPalettes_830F914}, // door 18 + {0x21E, 0, DoorAnimTiles_19, DoorAnimPalettes_830F91C}, // door 19 + {0x21D, 1, DoorAnimTiles_20, DoorAnimPalettes_830F904}, // door 20 + {0x21A, 0, DoorAnimTiles_21, DoorAnimPalettes_830F90C}, // door 21 + {0x224, 0, DoorAnimTiles_22, DoorAnimPalettes_830F954}, // door 22 + {0x289, 0, DoorAnimTiles_23, DoorAnimPalettes_830F95C}, // door 23 + {0x30C, 1, DoorAnimTiles_24, DoorAnimPalettes_830F964}, // door 24 + {0x32D, 1, DoorAnimTiles_25, DoorAnimPalettes_830F96C}, // door 25 + {0x2ED, 1, DoorAnimTiles_26, DoorAnimPalettes_830F974}, // door 26 + {0x264, 1, DoorAnimTiles_27, DoorAnimPalettes_830F97C}, // door 27 + {0x22B, 0, DoorAnimTiles_28, DoorAnimPalettes_830F984}, // door 28 + {0x2F7, 0, DoorAnimTiles_29, DoorAnimPalettes_830F98C}, // door 29 + {0x297, 0, DoorAnimTiles_30, DoorAnimPalettes_830F994}, // door 30 + {0x285, 1, DoorAnimTiles_31, DoorAnimPalettes_830F99C}, // door 31 + {0x25D, 1, DoorAnimTiles_32, DoorAnimPalettes_830F9A4}, // door 32 + {0x20E, 1, DoorAnimTiles_33, DoorAnimPalettes_830F9AC}, // door 33 + {0, 0, NULL, NULL}, +}; -static void CopyDoorTilesToVram(void *src) +static void CopyDoorTilesToVram(const void *src) { CpuFastSet(src, (void *)(VRAM + 0x7F00), 0x40); } -static void door_build_blockdef(u16 *a, u16 b, u8 *c) +static void door_build_blockdef(u16 *a, u16 b, const u8 *c) { int i; u16 unk; @@ -32,7 +413,7 @@ static void door_build_blockdef(u16 *a, u16 b, u8 *c) } } -static void DrawCurrentDoorAnimFrame(u32 x, u32 y, u8 *c) +static void DrawCurrentDoorAnimFrame(u32 x, u32 y, const u8 *c) { u16 arr[8]; @@ -48,7 +429,7 @@ static void DrawClosedDoorTiles(u32 x, u32 y) CurrentMapDrawMetatileAt(x, y); } -static void DrawDoor(struct DoorGraphics *gfx, struct DoorAnimFrame *frame, u32 x, u32 y) +static void DrawDoor(const struct DoorGraphics *gfx, const struct DoorAnimFrame *frame, u32 x, u32 y) { if (frame->offset == 0xFFFF) DrawClosedDoorTiles(x, y); @@ -96,14 +477,14 @@ static void Task_AnimateDoor(u8 taskId) DestroyTask(taskId); } -static struct DoorAnimFrame *GetLastDoorFrame(struct DoorAnimFrame *frame, void *unused) +static const struct DoorAnimFrame *GetLastDoorFrame(const struct DoorAnimFrame *frame, const void *unused) { while (frame->time != 0) frame++; return frame - 1; } -static struct DoorGraphics *GetDoorGraphics(struct DoorGraphics *gfx, u16 metatileNum) +static const struct DoorGraphics *GetDoorGraphics(const struct DoorGraphics *gfx, u16 metatileNum) { while (gfx->tiles != NULL) { @@ -114,7 +495,7 @@ static struct DoorGraphics *GetDoorGraphics(struct DoorGraphics *gfx, u16 metati return NULL; } -static s8 StartDoorAnimationTask(struct DoorGraphics *gfx, struct DoorAnimFrame *frames, u32 x, u32 y) +static s8 StartDoorAnimationTask(const struct DoorGraphics *gfx, const struct DoorAnimFrame *frames, u32 x, u32 y) { if (FuncIsActiveTask(Task_AnimateDoor) == TRUE) return -1; @@ -136,19 +517,19 @@ static s8 StartDoorAnimationTask(struct DoorGraphics *gfx, struct DoorAnimFrame } } -static void DrawClosedDoor(struct DoorGraphics *unused, u32 x, u32 y) +static void DrawClosedDoor(const struct DoorGraphics *unused, u32 x, u32 y) { DrawClosedDoorTiles(x, y); } -static void DrawOpenedDoor(struct DoorGraphics *gfx, u32 x, u32 y) +static void DrawOpenedDoor(const struct DoorGraphics *gfx, u32 x, u32 y) { gfx = GetDoorGraphics(gfx, MapGridGetMetatileIdAt(x, y)); if (gfx != NULL) DrawDoor(gfx, GetLastDoorFrame(gDoorOpenAnimFrames, gDoorOpenAnimFrames), x, y); } -static s8 StartDoorOpenAnimation(struct DoorGraphics *gfx, u32 x, u32 y) +static s8 StartDoorOpenAnimation(const struct DoorGraphics *gfx, u32 x, u32 y) { gfx = GetDoorGraphics(gfx, MapGridGetMetatileIdAt(x, y)); if (gfx == NULL) @@ -157,7 +538,7 @@ static s8 StartDoorOpenAnimation(struct DoorGraphics *gfx, u32 x, u32 y) return StartDoorAnimationTask(gfx, gDoorOpenAnimFrames, x, y); } -static s8 StartDoorCloseAnimation(struct DoorGraphics *gfx, u32 x, u32 y) +static s8 StartDoorCloseAnimation(const struct DoorGraphics *gfx, u32 x, u32 y) { gfx = GetDoorGraphics(gfx, MapGridGetMetatileIdAt(x, y)); if (gfx == NULL) @@ -166,7 +547,7 @@ static s8 StartDoorCloseAnimation(struct DoorGraphics *gfx, u32 x, u32 y) return StartDoorAnimationTask(gfx, gDoorCloseAnimFrames, x, y); } -static s8 cur_mapdata_get_door_x2_at(struct DoorGraphics *gfx, u32 x, u32 y) +static s8 cur_mapdata_get_door_x2_at(const struct DoorGraphics *gfx, u32 x, u32 y) { gfx = GetDoorGraphics(gfx, MapGridGetMetatileIdAt(x, y)); if (gfx == NULL) -- cgit v1.2.3 From 9bf23faf9d73d4dbe9ba160e89a0cfd4508a2692 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Thu, 16 Nov 2017 00:22:33 -0500 Subject: migrate fldeff_flash and money data to src --- src/field/fldeff_flash.c | 40 +++++++++++++++++++++++++++++++-------- src/field/money.c | 49 +++++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 76 insertions(+), 13 deletions(-) (limited to 'src/field') diff --git a/src/field/fldeff_flash.c b/src/field/fldeff_flash.c index 1ee8a8f05..30423a3f9 100644 --- a/src/field/fldeff_flash.c +++ b/src/field/fldeff_flash.c @@ -21,14 +21,6 @@ struct FlashStruct void (*func)(void); }; -extern struct FlashStruct gUnknown_083F7FC4[]; -extern u16 gCaveTransitionPalette_White[]; -extern u16 gCaveTransitionPalette_Black[]; -extern u16 gUnknown_083F808C[]; -extern u16 gUnknown_083F809C[]; -extern u16 gCaveTransitionTilemap[]; -extern u8 gCaveTransitionTiles[]; - extern u8 gLastFieldPokeMenuOpened; extern void (*gUnknown_03005CE4)(void); @@ -46,6 +38,38 @@ void sub_810D00C(u8); void sub_810D028(u8); void sub_810D0C4(u8); void sub_810D128(u8); +void sub_810CFF8(void); +void sub_810CE48(void); + +static const struct FlashStruct gUnknown_083F7FC4[] = +{ + {1, 4, 1, 0, sub_810CFF8}, + {2, 4, 1, 0, sub_810CFF8}, + {3, 4, 1, 0, sub_810CFF8}, + {5, 4, 1, 0, sub_810CFF8}, + {6, 4, 1, 0, sub_810CFF8}, + {7, 4, 1, 0, sub_810CFF8}, + {8, 4, 1, 0, sub_810CFF8}, + {9, 4, 1, 0, sub_810CFF8}, + {4, 1, 0, 1, sub_810CE48}, + {4, 2, 0, 1, sub_810CE48}, + {4, 3, 0, 1, sub_810CE48}, + {4, 5, 0, 1, sub_810CE48}, + {4, 6, 0, 1, sub_810CE48}, + {4, 7, 0, 1, sub_810CE48}, + {4, 8, 0, 1, sub_810CE48}, + {4, 9, 0, 1, sub_810CE48}, + {0, 0, 0, 0, NULL}, +}; + +// TODO: Make these extracted palettes? +static const u16 gCaveTransitionPalette_White[] = {0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF}; +static const u16 gCaveTransitionPalette_Black[] = {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}; + +static const u16 gUnknown_083F808C[] = INCBIN_U16("graphics/misc/83F808C.gbapal"); +static const u16 gUnknown_083F809C[] = INCBIN_U16("graphics/misc/83F809C.gbapal"); +static const u16 gCaveTransitionTilemap[] = INCBIN_U16("graphics/misc/cave_transition_map.bin.lz"); +static const u8 gCaveTransitionTiles[] = INCBIN_U8("graphics/misc/cave_transition.4bpp.lz"); bool8 SetUpFieldMove_Flash(void) { diff --git a/src/field/money.c b/src/field/money.c index 5d0f0ae8d..f277ac905 100644 --- a/src/field/money.c +++ b/src/field/money.c @@ -4,6 +4,7 @@ #include "menu.h" #include "sprite.h" #include "string_util.h" +#include "graphics.h" #define SPRITE_TAG_MONEY (0x2722) @@ -11,9 +12,47 @@ extern u16 gSpecialVar_0x8005; static EWRAM_DATA u8 gUnknown_02038734 = 0; -extern const struct CompressedSpriteSheet gUnknown_083CF584; -extern const struct CompressedSpritePalette gUnknown_083CF58C; -extern const struct SpriteTemplate gSpriteTemplate_83CF56C; +static const struct OamData gOamData_83CF558 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0, +}; + +const union AnimCmd gSpriteAnim_83CF560[] = +{ + ANIMCMD_FRAME(0, 0), + ANIMCMD_END +}; + +const union AnimCmd *const gSpriteAnimTable_83CF568[] = +{ + gSpriteAnim_83CF560, +}; + +const struct SpriteTemplate gSpriteTemplate_83CF56C = +{ + .tileTag = 10018, + .paletteTag = 10018, + .oam = &gOamData_83CF558, + .anims = gSpriteAnimTable_83CF568, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, +}; + +const struct CompressedSpriteSheet gUnknown_083CF584[] = {gMenuMoneyGfx, 256, SPRITE_TAG_MONEY}; +const struct CompressedSpritePalette gUnknown_083CF58C[] = {gMenuMoneyPal, SPRITE_TAG_MONEY}; bool8 IsEnoughMoney(u32 budget, u32 cost) { @@ -239,8 +278,8 @@ void OpenMoneyWindow(u32 amount, u8 x, u8 y) MenuDrawTextWindow(x, y, x + 13, y + 3); UpdateMoneyWindow(amount, x, y); - LoadCompressedObjectPic(&gUnknown_083CF584); - LoadCompressedObjectPalette(&gUnknown_083CF58C); + LoadCompressedObjectPic(gUnknown_083CF584); + LoadCompressedObjectPalette(gUnknown_083CF58C); gUnknown_02038734 = CreateSprite(&gSpriteTemplate_83CF56C, x * 8 + 19, y * 8 + 11, 0); } -- cgit v1.2.3 From be716ef9f841589c67f152a90ce5c7c29f7211d8 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sat, 18 Nov 2017 20:24:39 -0500 Subject: change Sprite struct to use a data array instead of manual declares. --- src/field/choose_party.c | 4 +- src/field/decoration.c | 66 ++--- src/field/field_camera.c | 4 +- src/field/field_effect.c | 242 ++++++++-------- src/field/field_effect_helpers.c | 364 +++++++++++------------ src/field/field_map_obj.c | 592 +++++++++++++++++++------------------- src/field/field_map_obj_helpers.c | 72 ++--- src/field/field_tasks.c | 6 +- src/field/field_weather.c | 126 ++++---- src/field/fldeff_cut.c | 22 +- src/field/fldeff_softboiled.c | 8 +- src/field/item_menu.c | 74 ++--- src/field/menu_helpers.c | 48 ++-- src/field/overworld.c | 8 +- src/field/party_menu.c | 274 +++++++++--------- src/field/pokeblock.c | 16 +- src/field/region_map.c | 42 +-- src/field/rotating_gate.c | 12 +- src/field/starter_choose.c | 24 +- src/field/trainer_see.c | 24 +- src/field/use_pokeblock.c | 6 +- src/field/wallclock.c | 72 ++--- 22 files changed, 1053 insertions(+), 1053 deletions(-) (limited to 'src/field') diff --git a/src/field/choose_party.c b/src/field/choose_party.c index 891ee48b8..c3845e48b 100644 --- a/src/field/choose_party.c +++ b/src/field/choose_party.c @@ -430,7 +430,7 @@ static void sub_81225D4(u8 taskId) { if (!gPaletteFade.active) { - u8 r4 = gSprites[gTasks[taskId].data[3] >> 8].data0; + u8 r4 = gSprites[gTasks[taskId].data[3] >> 8].data[0]; DestroyTask(taskId); ewram1B000.unk262 = 1; @@ -880,7 +880,7 @@ static void sub_8123034(u8 taskId) { if (!gPaletteFade.active) { - u8 r4 = gSprites[gTasks[taskId].data[3] >> 8].data0; + u8 r4 = gSprites[gTasks[taskId].data[3] >> 8].data[0]; DestroyTask(taskId); ewram1B000.unk262 = 1; diff --git a/src/field/decoration.c b/src/field/decoration.c index bdeaaf91d..8e6276a2f 100644 --- a/src/field/decoration.c +++ b/src/field/decoration.c @@ -2439,11 +2439,11 @@ void AddDecorationIconObjectFromFieldObject(struct UnkStruct_02038900 * unk_0203 sub_8100874(unk_02038900); sub_810070C(unk_02038900->palette, ((u16 *)gMapHeader.mapData->secondaryTileset->metatiles + 8 * unk_02038900->decoration->tiles[0])[7] >> 12); LoadSpritePalette(&gUnknown_083EC954); - gUnknown_020391A8 = gSprites[gUnknown_03004880.unk4].data0; + gUnknown_020391A8 = gSprites[gUnknown_03004880.unk4].data[0]; gUnknown_03004880.unk4 = CreateSprite(&gSpriteTemplate_83EC93C, gUnknown_083EC900[unk_02038900->decoration->shape].x, gUnknown_083EC900[unk_02038900->decoration->shape].y, 0); } else { - gUnknown_020391A8 = gSprites[gUnknown_03004880.unk4].data0; + gUnknown_020391A8 = gSprites[gUnknown_03004880.unk4].data[0]; gUnknown_03004880.unk4 = AddPseudoFieldObject(unk_02038900->decoration->tiles[0], sub_81009A8, gUnknown_083EC900[unk_02038900->decoration->shape].x, gUnknown_083EC900[unk_02038900->decoration->shape].y, 1); gSprites[gUnknown_03004880.unk4].oam.priority = 1; } @@ -2520,8 +2520,8 @@ void sub_80FF960(u8 taskId) void sub_80FFAB0(u8 taskId) { gTasks[taskId].data[10] = 0; - gSprites[gUnknown_020391A8].data7 = 1; - gSprites[gUnknown_020391A9].data7 = 1; + gSprites[gUnknown_020391A8].data[7] = 1; + gSprites[gUnknown_020391A9].data[7] = 1; sub_810045C(); sub_8100038(taskId); } @@ -2529,8 +2529,8 @@ void sub_80FFAB0(u8 taskId) void sub_80FFB08(u8 taskId) { gTasks[taskId].data[10] = 0; - gSprites[gUnknown_020391A8].data7 = 1; - gSprites[gUnknown_020391A9].data7 = 1; + gSprites[gUnknown_020391A8].data[7] = 1; + gSprites[gUnknown_020391A9].data[7] = 1; sub_810045C(); DisplayItemMessageOnField(taskId, gSecretBaseText_CancelDecorating, sub_8100248, 0); } @@ -3400,13 +3400,13 @@ bool8 sub_8100430(void) void sub_810045C(void) { gUnknown_020391AA = 0; - gSprites[gUnknown_020391A8].data2 = 0; - gSprites[gUnknown_020391A8].data3 = 0; + gSprites[gUnknown_020391A8].data[2] = 0; + gSprites[gUnknown_020391A8].data[3] = 0; } void sub_8100494(u8 taskId) { - if (!gSprites[gUnknown_020391A8].data4) + if (!gSprites[gUnknown_020391A8].data[4]) { if (gTasks[taskId].data[10] == 1) { @@ -3420,29 +3420,29 @@ void sub_8100494(u8 taskId) if ((gMain.heldKeys & DPAD_ANY) == DPAD_UP) { gUnknown_020391AA = DIR_SOUTH; - gSprites[gUnknown_020391A8].data2 = 0; - gSprites[gUnknown_020391A8].data3 = -2; + gSprites[gUnknown_020391A8].data[2] = 0; + gSprites[gUnknown_020391A8].data[3] = -2; gTasks[taskId].data[1]--; } if ((gMain.heldKeys & DPAD_ANY) == DPAD_DOWN) { gUnknown_020391AA = DIR_NORTH; - gSprites[gUnknown_020391A8].data2 = 0; - gSprites[gUnknown_020391A8].data3 = 2; + gSprites[gUnknown_020391A8].data[2] = 0; + gSprites[gUnknown_020391A8].data[3] = 2; gTasks[taskId].data[1]++; } if ((gMain.heldKeys & DPAD_ANY) == DPAD_LEFT) { gUnknown_020391AA = DIR_WEST; - gSprites[gUnknown_020391A8].data2 = -2; - gSprites[gUnknown_020391A8].data3 = 0; + gSprites[gUnknown_020391A8].data[2] = -2; + gSprites[gUnknown_020391A8].data[3] = 0; gTasks[taskId].data[0]--; } if ((gMain.heldKeys & DPAD_ANY) == DPAD_RIGHT) { gUnknown_020391AA = DIR_EAST; - gSprites[gUnknown_020391A8].data2 = 2; - gSprites[gUnknown_020391A8].data3 = 0; + gSprites[gUnknown_020391A8].data[2] = 2; + gSprites[gUnknown_020391A8].data[3] = 0; gTasks[taskId].data[0]++; } if (!sub_8100430() || !sub_810038C(taskId)) @@ -3452,8 +3452,8 @@ void sub_8100494(u8 taskId) } if (gUnknown_020391AA) { - gSprites[gUnknown_020391A8].data4++; - gSprites[gUnknown_020391A8].data4 &= 7; + gSprites[gUnknown_020391A8].data[4]++; + gSprites[gUnknown_020391A8].data[4] &= 7; } if (!gTasks[taskId].data[10]) { @@ -3471,7 +3471,7 @@ void sub_8100494(u8 taskId) void sub_810065C(u8 taskId) { MenuZeroFillWindowRect(0, 0, 29, 19); - gSprites[gUnknown_020391A8].data7 = 0; + gSprites[gUnknown_020391A8].data[7] = 0; gTasks[taskId].data[10] = 0; gTasks[taskId].func = sub_8100494; } @@ -3596,27 +3596,27 @@ void sub_8100930(u8 decoShape) void sub_81009A8(struct Sprite *sprite) { - sprite->data2 = 0; - sprite->data3 = 0; - sprite->data4 = 0; - sprite->data5 = 0; - sprite->data6 = 0; - sprite->data7 = 0; + sprite->data[2] = 0; + sprite->data[3] = 0; + sprite->data[4] = 0; + sprite->data[5] = 0; + sprite->data[6] = 0; + sprite->data[7] = 0; sprite->callback = sub_81009C0; } void sub_81009C0(struct Sprite *sprite) { - if (sprite->data7 == 0) + if (sprite->data[7] == 0) { - if (sprite->data6 < 15) + if (sprite->data[6] < 15) { sprite->invisible = 0; } else { sprite->invisible = 1; } - sprite->data6 = (sprite->data6 + 1) & 0x1f; + sprite->data[6] = (sprite->data[6] + 1) & 0x1f; } else { sprite->invisible = 0; @@ -3760,7 +3760,7 @@ void SetUpPuttingAwayDecorationPlayerAvatar(void) { player_get_direction_lower_nybble(); MenuZeroFillWindowRect(0, 0, 29, 19); - gUnknown_020391A8 = gSprites[gUnknown_03004880.unk4].data0; + gUnknown_020391A8 = gSprites[gUnknown_03004880.unk4].data[0]; sub_81016C8(); gUnknown_03004880.unk4 = CreateSprite(&gSpriteTemplate_83ECA88, 0x78, 0x50, 0); if (gSaveBlock2.playerGender == MALE) @@ -3810,7 +3810,7 @@ void sub_8100E70(u8 taskId) void sub_8100EEC(u8 taskId) { MenuZeroFillWindowRect(0, 0, 29, 19); - gSprites[gUnknown_020391A8].data7 = 0; + gSprites[gUnknown_020391A8].data[7] = 0; gSprites[gUnknown_020391A8].invisible = 0; gSprites[gUnknown_020391A8].callback = sub_8101698; gSprites[gUnknown_020391A9].pos1.x = 0x88; @@ -4198,8 +4198,8 @@ void sub_8101678(void) void sub_8101698(struct Sprite *sprite) { - sprite->data0 = (sprite->data0 + 1) & 0x1f; - if (sprite->data0 >= 16) + sprite->data[0] = (sprite->data[0] + 1) & 0x1f; + if (sprite->data[0] >= 16) { sprite->invisible = TRUE; } else diff --git a/src/field/field_camera.c b/src/field/field_camera.c index a29f4c49f..8384ad8d1 100644 --- a/src/field/field_camera.c +++ b/src/field/field_camera.c @@ -322,8 +322,8 @@ static void CameraUpdateCallback(struct CameraSomething *a) { if (a->unk4 != 0) { - a->unk8 = gSprites[a->unk4].data2; - a->unkC = gSprites[a->unk4].data3; + a->unk8 = gSprites[a->unk4].data[2]; + a->unkC = gSprites[a->unk4].data[3]; } } diff --git a/src/field/field_effect.c b/src/field/field_effect.c index bd78fb632..e15dc906f 100644 --- a/src/field/field_effect.c +++ b/src/field/field_effect.c @@ -886,16 +886,16 @@ void PokecenterHealEffect_0(struct Task *task) void PokecenterHealEffect_1(struct Task *task) { - if (gSprites[task->data[6]].data0 > 1) + if (gSprites[task->data[6]].data[0] > 1) { - gSprites[task->data[7]].data0++; + gSprites[task->data[7]].data[0]++; task->data[0]++; } } void PokecenterHealEffect_2(struct Task *task) { - if (gSprites[task->data[6]].data0 > 4) + if (gSprites[task->data[6]].data[0] > 4) { task->data[0]++; } @@ -903,7 +903,7 @@ void PokecenterHealEffect_2(struct Task *task) void PokecenterHealEffect_3(struct Task *task) { - if (gSprites[task->data[6]].data0 > 6) + if (gSprites[task->data[6]].data[0] > 6) { DestroySprite(&gSprites[task->data[6]]); FieldEffectActiveListRemove(FLDEFF_POKECENTER_HEAL); @@ -949,7 +949,7 @@ void HallOfFameRecordEffect_0(struct Task *task) void HallOfFameRecordEffect_1(struct Task *task) { - if (gSprites[task->data[6]].data0 > 1) + if (gSprites[task->data[6]].data[0] > 1) { task->data[15]++; // was this ever initialized? is this ever used? task->data[0]++; @@ -958,7 +958,7 @@ void HallOfFameRecordEffect_1(struct Task *task) void HallOfFameRecordEffect_2(struct Task *task) { - if (gSprites[task->data[6]].data0 > 4) + if (gSprites[task->data[6]].data[0] > 4) { task->data[0]++; } @@ -966,7 +966,7 @@ void HallOfFameRecordEffect_2(struct Task *task) void HallOfFameRecordEffect_3(struct Task *task) { - if (gSprites[task->data[6]].data0 > 6) + if (gSprites[task->data[6]].data[0] > 6) { DestroySprite(&gSprites[task->data[6]]); FieldEffectActiveListRemove(FLDEFF_HALL_OF_FAME_RECORD); @@ -984,46 +984,46 @@ u8 CreatePokeballGlowSprite(s16 data6, s16 x, s16 y, u16 data5) sprite = &gSprites[spriteId]; sprite->pos2.x = x; sprite->pos2.y = y; - sprite->data5 = data5; - sprite->data6 = data6; - sprite->data7 = spriteId; + sprite->data[5] = data5; + sprite->data[6] = data6; + sprite->data[7] = spriteId; return spriteId; } void SpriteCB_PokeballGlowEffect(struct Sprite *sprite) { - gUnknown_0839F288[sprite->data0](sprite); + gUnknown_0839F288[sprite->data[0]](sprite); } void PokeballGlowEffect_0(struct Sprite *sprite) { u8 endSpriteId; - if (sprite->data1 == 0 || (--sprite->data1) == 0) + if (sprite->data[1] == 0 || (--sprite->data[1]) == 0) { - sprite->data1 = 25; - endSpriteId = CreateSpriteAtEnd(&gSpriteTemplate_839F208, gUnknown_0839F2A8[sprite->data2].x + sprite->pos2.x, gUnknown_0839F2A8[sprite->data2].y + sprite->pos2.y, 0); + sprite->data[1] = 25; + endSpriteId = CreateSpriteAtEnd(&gSpriteTemplate_839F208, gUnknown_0839F2A8[sprite->data[2]].x + sprite->pos2.x, gUnknown_0839F2A8[sprite->data[2]].y + sprite->pos2.y, 0); gSprites[endSpriteId].oam.priority = 2; - gSprites[endSpriteId].data0 = sprite->data7; - sprite->data2++; - sprite->data6--; + gSprites[endSpriteId].data[0] = sprite->data[7]; + sprite->data[2]++; + sprite->data[6]--; PlaySE(SE_BOWA); } - if (sprite->data6 == 0) + if (sprite->data[6] == 0) { - sprite->data1 = 32; - sprite->data0++; + sprite->data[1] = 32; + sprite->data[0]++; } } void PokeballGlowEffect_1(struct Sprite *sprite) { - if ((--sprite->data1) == 0) + if ((--sprite->data[1]) == 0) { - sprite->data0++; - sprite->data1 = 8; - sprite->data2 = 0; - sprite->data3 = 0; - if (sprite->data5) + sprite->data[0]++; + sprite->data[1] = 8; + sprite->data[2] = 0; + sprite->data[3] = 0; + if (sprite->data[5]) { PlayFanfare(BGM_ME_ASA); } @@ -1033,48 +1033,48 @@ void PokeballGlowEffect_1(struct Sprite *sprite) void PokeballGlowEffect_2(struct Sprite *sprite) { u8 phase; - if ((--sprite->data1) == 0) + if ((--sprite->data[1]) == 0) { - sprite->data1 = 8; - sprite->data2++; - sprite->data2 &= 3; - if (sprite->data2 == 0) + sprite->data[1] = 8; + sprite->data[2]++; + sprite->data[2] &= 3; + if (sprite->data[2] == 0) { - sprite->data3++; + sprite->data[3]++; } } - phase = (sprite->data2 + 3) & 3; + phase = (sprite->data[2] + 3) & 3; MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(0x1007) << 4) + 0x108, gUnknown_0839F2C0[phase], gUnknown_0839F2C4[phase], gUnknown_0839F2C8[phase]); - phase = (sprite->data2 + 2) & 3; + phase = (sprite->data[2] + 2) & 3; MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(0x1007) << 4) + 0x106, gUnknown_0839F2C0[phase], gUnknown_0839F2C4[phase], gUnknown_0839F2C8[phase]); - phase = (sprite->data2 + 1) & 3; + phase = (sprite->data[2] + 1) & 3; MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(0x1007) << 4) + 0x102, gUnknown_0839F2C0[phase], gUnknown_0839F2C4[phase], gUnknown_0839F2C8[phase]); - phase = sprite->data2; + phase = sprite->data[2]; MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(0x1007) << 4) + 0x105, gUnknown_0839F2C0[phase], gUnknown_0839F2C4[phase], gUnknown_0839F2C8[phase]); MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(0x1007) << 4) + 0x103, gUnknown_0839F2C0[phase], gUnknown_0839F2C4[phase], gUnknown_0839F2C8[phase]); - if (sprite->data3 > 2) + if (sprite->data[3] > 2) { - sprite->data0++; - sprite->data1 = 8; - sprite->data2 = 0; + sprite->data[0]++; + sprite->data[1] = 8; + sprite->data[2] = 0; } } void PokeballGlowEffect_3(struct Sprite *sprite) { u8 phase; - if ((--sprite->data1) == 0) + if ((--sprite->data[1]) == 0) { - sprite->data1 = 8; - sprite->data2++; - sprite->data2 &= 3; - if (sprite->data2 == 3) + sprite->data[1] = 8; + sprite->data[2]++; + sprite->data[2] &= 3; + if (sprite->data[2] == 3) { - sprite->data0++; - sprite->data1 = 30; + sprite->data[0]++; + sprite->data[1] = 30; } } - phase = sprite->data2; + phase = sprite->data[2]; MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(0x1007) << 4) + 0x108, gUnknown_0839F2C0[phase], gUnknown_0839F2C4[phase], gUnknown_0839F2C8[phase]); MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(0x1007) << 4) + 0x106, gUnknown_0839F2C0[phase], gUnknown_0839F2C4[phase], gUnknown_0839F2C8[phase]); MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(0x1007) << 4) + 0x102, gUnknown_0839F2C0[phase], gUnknown_0839F2C4[phase], gUnknown_0839F2C8[phase]); @@ -1084,22 +1084,22 @@ void PokeballGlowEffect_3(struct Sprite *sprite) void PokeballGlowEffect_4(struct Sprite *sprite) { - if ((--sprite->data1) == 0) + if ((--sprite->data[1]) == 0) { - sprite->data0++; + sprite->data[0]++; } } void PokeballGlowEffect_5(struct Sprite *sprite) { - sprite->data0++; + sprite->data[0]++; } void PokeballGlowEffect_6(struct Sprite *sprite) { - if (sprite->data5 == 0 || IsFanfareTaskInactive()) + if (sprite->data[5] == 0 || IsFanfareTaskInactive()) { - sprite->data0++; + sprite->data[0]++; } } @@ -1109,7 +1109,7 @@ void PokeballGlowEffect_7(struct Sprite *sprite) void SpriteCB_PokeballGlow(struct Sprite *sprite) { - if (gSprites[sprite->data0].data0 > 4) + if (gSprites[sprite->data[0]].data[0] > 4) { FieldEffectFreeGraphicsResources(sprite); } @@ -1129,9 +1129,9 @@ u8 PokecenterHealEffectHelper(s16 x, s16 y) void SpriteCB_PokecenterMonitor(struct Sprite *sprite) { - if (sprite->data0 != 0) + if (sprite->data[0] != 0) { - sprite->data0 = 0; + sprite->data[0] = 0; sprite->invisible = 0; StartSpriteAnim(sprite, 1); } @@ -1153,21 +1153,21 @@ void HallOfFameRecordEffectHelper(s16 a0, s16 a1, s16 a2, u8 a3) spriteIdAtEnd = CreateSpriteAtEnd(&gSpriteTemplate_839F250, a1, a2, 0); } gSprites[spriteIdAtEnd].invisible = 1; - gSprites[spriteIdAtEnd].data0 = a0; + gSprites[spriteIdAtEnd].data[0] = a0; } void SpriteCB_HallOfFameMonitor(struct Sprite *sprite) { - if (gTasks[sprite->data0].data[15]) + if (gTasks[sprite->data[0]].data[15]) { - if (sprite->data1 == 0 || (--sprite->data1) == 0) + if (sprite->data[1] == 0 || (--sprite->data[1]) == 0) { - sprite->data1 = 16; + sprite->data[1] = 16; sprite->invisible ^= 1; } - sprite->data2++; + sprite->data[2]++; } - if (sprite->data2 > 127) + if (sprite->data[2] > 127) { FieldEffectFreeGraphicsResources(sprite); } @@ -2480,7 +2480,7 @@ void sub_8088228(struct Task *task) void sub_80882B4(struct Task *task) { task->data[5] -= 16; - if (gSprites[task->data[15]].data7) + if (gSprites[task->data[15]].data[7]) { task->data[0]++; } @@ -2607,7 +2607,7 @@ void sub_8088554(struct Task *task) void sub_80885A8(struct Task *task) { sub_80886F8(task); - if (gSprites[task->data[15]].data7) + if (gSprites[task->data[15]].data[7]) { task->data[0]++; } @@ -2827,8 +2827,8 @@ u8 sub_8088830(u32 a0, u32 a1, u32 a2) sprite = &gSprites[monSprite]; sprite->callback = SpriteCallbackDummy; sprite->oam.priority = 0; - sprite->data0 = a0; - sprite->data6 = v0; + sprite->data[0] = a0; + sprite->data[6] = v0; return monSprite; } @@ -2839,14 +2839,14 @@ void sub_8088890(struct Sprite *sprite) if ((sprite->pos1.x -= 20) <= 0x78) { sprite->pos1.x = 0x78; - sprite->data1 = 30; + sprite->data[1] = 30; sprite->callback = sub_80888D4; - if (sprite->data6) + if (sprite->data[6]) { - PlayCry2(sprite->data0, 0, 0x7d, 0xa); + PlayCry2(sprite->data[0], 0, 0x7d, 0xa); } else { - PlayCry1(sprite->data0, 0); + PlayCry1(sprite->data[0], 0); } } } @@ -2855,7 +2855,7 @@ void sub_80888F0(struct Sprite *); void sub_80888D4(struct Sprite *sprite) { - if ((--sprite->data1) == 0) + if ((--sprite->data[1]) == 0) { sprite->callback = sub_80888F0; } @@ -2865,7 +2865,7 @@ void sub_80888F0(struct Sprite *sprite) { if (sprite->pos1.x < -0x40) { - sprite->data7 = 1; + sprite->data[7] = 1; } else { sprite->pos1.x -= 20; @@ -2969,7 +2969,7 @@ u8 FldEff_NPCFlyOut(void) sprite->oam.paletteNum = 0; sprite->oam.priority = 1; sprite->callback = sub_8088BC4; - sprite->data1 = gFieldEffectArguments[0]; + sprite->data[1] = gFieldEffectArguments[0]; PlaySE(SE_W019); return spriteId; } @@ -2977,19 +2977,19 @@ u8 FldEff_NPCFlyOut(void) void sub_8088BC4(struct Sprite *sprite) { struct Sprite *npcSprite; - sprite->pos2.x = Cos(sprite->data2, 0x8c); - sprite->pos2.y = Sin(sprite->data2, 0x48); - sprite->data2 = (sprite->data2 + 4) & 0xff; - if (sprite->data0) + sprite->pos2.x = Cos(sprite->data[2], 0x8c); + sprite->pos2.y = Sin(sprite->data[2], 0x48); + sprite->data[2] = (sprite->data[2] + 4) & 0xff; + if (sprite->data[0]) { - npcSprite = &gSprites[sprite->data1]; + npcSprite = &gSprites[sprite->data[1]]; npcSprite->coordOffsetEnabled = 0; npcSprite->pos1.x = sprite->pos1.x + sprite->pos2.x; npcSprite->pos1.y = sprite->pos1.y + sprite->pos2.y - 8; npcSprite->pos2.x = 0; npcSprite->pos2.y = 0; } - if (sprite->data2 >= 0x80) + if (sprite->data[2] >= 0x80) { FieldEffectStop(sprite, FLDEFF_NPCFLY_OUT); } @@ -3149,7 +3149,7 @@ u8 sub_8088F60(void) u8 sub_8088FA4(u8 spriteId) { - return gSprites[spriteId].data7; + return gSprites[spriteId].data[7]; } void sub_8088FC0(u8 spriteId) @@ -3161,20 +3161,20 @@ void sub_8088FC0(u8 spriteId) sprite->pos1.y = 0x00; sprite->pos2.x = 0; sprite->pos2.y = 0; - memset(&sprite->data0, 0, 8 * sizeof(u16) /* zero all data cells */); - sprite->data6 = 0x40; + memset(&sprite->data[0], 0, 8 * sizeof(u16) /* zero all data cells */); + sprite->data[6] = 0x40; } void sub_8088FFC(u8 a0, u8 a1) { - gSprites[a0].data6 = a1; + gSprites[a0].data[6] = a1; } void sub_8089018(struct Sprite *sprite) { - if (sprite->data7 == 0) + if (sprite->data[7] == 0) { - if (sprite->data0 == 0) + if (sprite->data[0] == 0) { sprite->oam.affineMode = 3; sprite->affineAnims = gSpriteAffineAnimTable_0839F44C; @@ -3182,20 +3182,20 @@ void sub_8089018(struct Sprite *sprite) StartSpriteAffineAnim(sprite, 0); sprite->pos1.x = 0x76; sprite->pos1.y = -0x30; - sprite->data0++; - sprite->data1 = 0x40; - sprite->data2 = 0x100; + sprite->data[0]++; + sprite->data[1] = 0x40; + sprite->data[2] = 0x100; } - sprite->data1 += (sprite->data2 >> 8); - sprite->pos2.x = Cos(sprite->data1, 0x78); - sprite->pos2.y = Sin(sprite->data1, 0x78); - if (sprite->data2 < 0x800) + sprite->data[1] += (sprite->data[2] >> 8); + sprite->pos2.x = Cos(sprite->data[1], 0x78); + sprite->pos2.y = Sin(sprite->data[1], 0x78); + if (sprite->data[2] < 0x800) { - sprite->data2 += 0x60; + sprite->data[2] += 0x60; } - if (sprite->data1 > 0x81) + if (sprite->data[1] > 0x81) { - sprite->data7++; + sprite->data[7]++; sprite->oam.affineMode = 0; FreeOamMatrix(sprite->oam.matrixNum); CalcCenterToCornerVec(sprite, sprite->oam.shape, sprite->oam.size, 0); @@ -3206,29 +3206,29 @@ void sub_8089018(struct Sprite *sprite) void sub_80890D8(struct Sprite *sprite) { struct Sprite *sprite1; - sprite->pos2.x = Cos(sprite->data2, 0x8c); - sprite->pos2.y = Sin(sprite->data2, 0x48); - sprite->data2 = (sprite->data2 + 4) & 0xff; - if (sprite->data6 != 0x40) + sprite->pos2.x = Cos(sprite->data[2], 0x8c); + sprite->pos2.y = Sin(sprite->data[2], 0x48); + sprite->data[2] = (sprite->data[2] + 4) & 0xff; + if (sprite->data[6] != 0x40) { - sprite1 = &gSprites[sprite->data6]; + sprite1 = &gSprites[sprite->data[6]]; sprite1->coordOffsetEnabled = 0; sprite1->pos1.x = sprite->pos1.x + sprite->pos2.x; sprite1->pos1.y = sprite->pos1.y + sprite->pos2.y - 8; sprite1->pos2.x = 0; sprite1->pos2.y = 0; } - if (sprite->data2 >= 0x80) + if (sprite->data[2] >= 0x80) { - sprite->data7 = 1; + sprite->data[7] = 1; } } void sub_808914C(struct Sprite *sprite) { - if (sprite->data7 == 0) + if (sprite->data[7] == 0) { - if (sprite->data0 == 0) + if (sprite->data[0] == 0) { sprite->oam.affineMode = 3; sprite->affineAnims = gSpriteAffineAnimTable_0839F44C; @@ -3236,31 +3236,31 @@ void sub_808914C(struct Sprite *sprite) StartSpriteAffineAnim(sprite, 1); sprite->pos1.x = 0x5e; sprite->pos1.y = -0x20; - sprite->data0++; - sprite->data1 = 0xf0; - sprite->data2 = 0x800; - sprite->data4 = 0x80; + sprite->data[0]++; + sprite->data[1] = 0xf0; + sprite->data[2] = 0x800; + sprite->data[4] = 0x80; } - sprite->data1 += sprite->data2 >> 8; - sprite->data3 += sprite->data2 >> 8; - sprite->data1 &= 0xff; - sprite->pos2.x = Cos(sprite->data1, 0x20); - sprite->pos2.y = Sin(sprite->data1, 0x78); - if (sprite->data2 > 0x100) + sprite->data[1] += sprite->data[2] >> 8; + sprite->data[3] += sprite->data[2] >> 8; + sprite->data[1] &= 0xff; + sprite->pos2.x = Cos(sprite->data[1], 0x20); + sprite->pos2.y = Sin(sprite->data[1], 0x78); + if (sprite->data[2] > 0x100) { - sprite->data2 -= sprite->data4; + sprite->data[2] -= sprite->data[4]; } - if (sprite->data4 < 0x100) + if (sprite->data[4] < 0x100) { - sprite->data4 += 24; + sprite->data[4] += 24; } - if (sprite->data2 < 0x100) + if (sprite->data[2] < 0x100) { - sprite->data2 = 0x100; + sprite->data[2] = 0x100; } - if (sprite->data3 >= 60) + if (sprite->data[3] >= 60) { - sprite->data7++; + sprite->data[7]++; sprite->oam.affineMode = 0; FreeOamMatrix(sprite->oam.matrixNum); sprite->invisible = 1; diff --git a/src/field/field_effect_helpers.c b/src/field/field_effect_helpers.c index 2ad8bdce3..c5b67fd9d 100644 --- a/src/field/field_effect_helpers.c +++ b/src/field/field_effect_helpers.c @@ -89,9 +89,9 @@ void SetUpReflection(struct MapObject *mapObject, struct Sprite *sprite, bool8 f newSprite->affineAnims = gDummySpriteAffineAnimTable; newSprite->affineAnimBeginning = TRUE; newSprite->subspriteMode = 0; - newSprite->data0 = sprite->data0; - newSprite->data1 = mapObject->localId; - newSprite->data7 = flag; + newSprite->data[0] = sprite->data[0]; + newSprite->data[1] = mapObject->localId; + newSprite->data[7] = flag; npc_pal_op(mapObject, newSprite); if (!flag) { @@ -110,10 +110,10 @@ static void npc_pal_op(struct MapObject *mapObject, struct Sprite *sprite) u16 unk_8041e2c[ARRAY_COUNT(gUnknown_08401E2C)]; memcpy(unk_8041e2c, gUnknown_08401E2C, sizeof gUnknown_08401E2C); - sprite->data2 = 0; + sprite->data[2] = 0; if (!GetFieldObjectGraphicsInfo(mapObject->graphicsId)->disableReflectionPaletteLoad && ((whichElement = sub_8057450(mapObject->mapobj_unk_1F)) || (whichElement = sub_8057450(mapObject->mapobj_unk_1E)))) { - sprite->data2 = unk_8041e2c[whichElement - 1]; + sprite->data[2] = unk_8041e2c[whichElement - 1]; npc_pal_op_A(mapObject, sprite->oam.paletteNum); } else @@ -162,9 +162,9 @@ static void sub_81269E0(struct Sprite *sprite) struct MapObject *mapObject; struct Sprite *oldSprite; - mapObject = &gMapObjects[sprite->data0]; + mapObject = &gMapObjects[sprite->data[0]]; oldSprite = &gSprites[mapObject->spriteId]; - if (!mapObject->active || !mapObject->mapobj_bit_17 || mapObject->localId != sprite->data1) + if (!mapObject->active || !mapObject->mapobj_bit_17 || mapObject->localId != sprite->data[1]) { sprite->inUse = FALSE; } @@ -179,13 +179,13 @@ static void sub_81269E0(struct Sprite *sprite) sprite->subspriteTableNum = oldSprite->subspriteTableNum; sprite->invisible = oldSprite->invisible; sprite->pos1.x = oldSprite->pos1.x; - sprite->pos1.y = oldSprite->pos1.y + sub_81268D0(mapObject) + sprite->data2; + sprite->pos1.y = oldSprite->pos1.y + sub_81268D0(mapObject) + sprite->data[2]; sprite->centerToCornerVecX = oldSprite->centerToCornerVecX; sprite->centerToCornerVecY = oldSprite->centerToCornerVecY; sprite->pos2.x = oldSprite->pos2.x; sprite->pos2.y = -oldSprite->pos2.y; sprite->coordOffsetEnabled = oldSprite->coordOffsetEnabled; - if (sprite->data7 == FALSE) + if (sprite->data[7] == FALSE) { sprite->oam.matrixNum = 0; if (oldSprite->oam.matrixNum & 0x8) @@ -224,15 +224,15 @@ void sub_8126BC4(u8 spriteId, u8 animNum, s16 x, s16 y) struct Sprite *sprite; sprite = &gSprites[spriteId]; - if (sprite->invisible || sprite->data0 != x || sprite->data1 != y) + if (sprite->invisible || sprite->data[0] != x || sprite->data[1] != y) { sub_80603CC(x, y, &x2, &y2); sprite = &gSprites[spriteId]; sprite->pos1.x = x2 + 8; sprite->pos1.y = y2 + 8; sprite->invisible = FALSE; - sprite->data0 = x; - sprite->data1 = y; + sprite->data[0] = x; + sprite->data[1] = y; StartSpriteAnim(sprite, animNum - 1); } } @@ -249,10 +249,10 @@ u32 FldEff_Shadow(void) if (spriteId != MAX_SPRITES) { gSprites[spriteId].coordOffsetEnabled = TRUE; - gSprites[spriteId].data0 = gFieldEffectArguments[0]; - gSprites[spriteId].data1 = gFieldEffectArguments[1]; - gSprites[spriteId].data2 = gFieldEffectArguments[2]; - gSprites[spriteId].data3 = (graphicsInfo->height >> 1) - gUnknown_08401E36[graphicsInfo->shadowSize]; + gSprites[spriteId].data[0] = gFieldEffectArguments[0]; + gSprites[spriteId].data[1] = gFieldEffectArguments[1]; + gSprites[spriteId].data[2] = gFieldEffectArguments[2]; + gSprites[spriteId].data[3] = (graphicsInfo->height >> 1) - gUnknown_08401E36[graphicsInfo->shadowSize]; } return 0; } @@ -263,7 +263,7 @@ void oamc_shadow(struct Sprite *sprite) struct MapObject *mapObject; struct Sprite *linkedSprite; - if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId)) + if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &mapObjectId)) { FieldEffectStop(sprite, FLDEFF_SHADOW); } @@ -273,7 +273,7 @@ void oamc_shadow(struct Sprite *sprite) linkedSprite = &gSprites[mapObject->spriteId]; sprite->oam.priority = linkedSprite->oam.priority; sprite->pos1.x = linkedSprite->pos1.x; - sprite->pos1.y = linkedSprite->pos1.y + sprite->data3; + sprite->pos1.y = linkedSprite->pos1.y + sprite->data[3]; if (!mapObject->active || !mapObject->mapobj_bit_22 || MetatileBehavior_IsPokeGrass(mapObject->mapobj_unk_1E) || MetatileBehavior_IsSurfableWaterOrUnderwater(mapObject->mapobj_unk_1E) || MetatileBehavior_IsSurfableWaterOrUnderwater(mapObject->mapobj_unk_1F) || MetatileBehavior_IsReflective(mapObject->mapobj_unk_1E) || MetatileBehavior_IsReflective(mapObject->mapobj_unk_1F)) { FieldEffectStop(sprite, FLDEFF_SHADOW); @@ -297,12 +297,12 @@ u32 FldEff_TallGrass(void) sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data0 = gFieldEffectArguments[2]; - sprite->data1 = gFieldEffectArguments[0]; - sprite->data2 = gFieldEffectArguments[1]; - sprite->data3 = gFieldEffectArguments[4]; - sprite->data4 = gFieldEffectArguments[5]; - sprite->data5 = gFieldEffectArguments[6]; + sprite->data[0] = gFieldEffectArguments[2]; + sprite->data[1] = gFieldEffectArguments[0]; + sprite->data[2] = gFieldEffectArguments[1]; + sprite->data[3] = gFieldEffectArguments[4]; + sprite->data[4] = gFieldEffectArguments[5]; + sprite->data[5] = gFieldEffectArguments[6]; if (gFieldEffectArguments[7]) { SeekSpriteAnim(sprite, 4); @@ -320,28 +320,28 @@ void unc_grass_normal(struct Sprite *sprite) u8 mapObjectId; struct MapObject *mapObject; - mapNum = sprite->data5 >> 8; - mapGroup = sprite->data5; + mapNum = sprite->data[5] >> 8; + mapGroup = sprite->data[5]; if (gCamera.field_0 && (gSaveBlock1.location.mapNum != mapNum || gSaveBlock1.location.mapGroup != mapGroup)) { - sprite->data1 -= gCamera.x; - sprite->data2 -= gCamera.y; - sprite->data5 = ((u8)gSaveBlock1.location.mapNum << 8) | (u8)gSaveBlock1.location.mapGroup; + sprite->data[1] -= gCamera.x; + sprite->data[2] -= gCamera.y; + sprite->data[5] = ((u8)gSaveBlock1.location.mapNum << 8) | (u8)gSaveBlock1.location.mapGroup; } - localId = sprite->data3 >> 8; - mapNum = sprite->data3; - mapGroup = sprite->data4; - metatileBehavior = MapGridGetMetatileBehaviorAt(sprite->data1, sprite->data2); - if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId) || !MetatileBehavior_IsTallGrass(metatileBehavior) || (sprite->data7 && sprite->animEnded)) + localId = sprite->data[3] >> 8; + mapNum = sprite->data[3]; + mapGroup = sprite->data[4]; + metatileBehavior = MapGridGetMetatileBehaviorAt(sprite->data[1], sprite->data[2]); + if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId) || !MetatileBehavior_IsTallGrass(metatileBehavior) || (sprite->data[7] && sprite->animEnded)) { FieldEffectStop(sprite, FLDEFF_TALL_GRASS); } else { mapObject = &gMapObjects[mapObjectId]; - if ((mapObject->coords2.x != sprite->data1 || mapObject->coords2.y != sprite->data2) && (mapObject->coords3.x != sprite->data1 || mapObject->coords3.y != sprite->data2)) + if ((mapObject->coords2.x != sprite->data[1] || mapObject->coords2.y != sprite->data[2]) && (mapObject->coords3.x != sprite->data[1] || mapObject->coords3.y != sprite->data[2])) { - sprite->data7 = TRUE; + sprite->data[7] = TRUE; } metatileBehavior = 0; if (sprite->animCmdIndex == 0) @@ -349,7 +349,7 @@ void unc_grass_normal(struct Sprite *sprite) metatileBehavior = 4; } sub_806487C(sprite, 0); - sub_812882C(sprite, sprite->data0, metatileBehavior); + sub_812882C(sprite, sprite->data[0], metatileBehavior); } } @@ -365,8 +365,8 @@ u32 FldEff_JumpTallGrass(void) sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data0 = gFieldEffectArguments[2]; - sprite->data1 = 12; + sprite->data[0] = gFieldEffectArguments[2]; + sprite->data[1] = 12; } return 0; } @@ -381,7 +381,7 @@ u8 sub_8126FF0(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y) if (gSprites[i].inUse) { sprite = &gSprites[i]; - if (sprite->callback == unc_grass_normal && (x == sprite->data1 && y == sprite->data2) && (localId == (u8)(sprite->data3 >> 8) && mapNum == (sprite->data3 & 0xFF) && mapGroup == sprite->data4)) + if (sprite->callback == unc_grass_normal && (x == sprite->data[1] && y == sprite->data[2]) && (localId == (u8)(sprite->data[3] >> 8) && mapNum == (sprite->data[3] & 0xFF) && mapGroup == sprite->data[4])) { return i; } @@ -406,12 +406,12 @@ u32 FldEff_LongGrass(void) sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = ZCoordToPriority(gFieldEffectArguments[2]); - sprite->data0 = gFieldEffectArguments[2]; - sprite->data1 = gFieldEffectArguments[0]; - sprite->data2 = gFieldEffectArguments[1]; - sprite->data3 = gFieldEffectArguments[4]; - sprite->data4 = gFieldEffectArguments[5]; - sprite->data5 = gFieldEffectArguments[6]; + sprite->data[0] = gFieldEffectArguments[2]; + sprite->data[1] = gFieldEffectArguments[0]; + sprite->data[2] = gFieldEffectArguments[1]; + sprite->data[3] = gFieldEffectArguments[4]; + sprite->data[4] = gFieldEffectArguments[5]; + sprite->data[5] = gFieldEffectArguments[6]; if (gFieldEffectArguments[7]) { SeekSpriteAnim(sprite, 6); @@ -429,31 +429,31 @@ void unc_grass_tall(struct Sprite *sprite) u8 mapObjectId; struct MapObject *mapObject; - mapNum = sprite->data5 >> 8; - mapGroup = sprite->data5; + mapNum = sprite->data[5] >> 8; + mapGroup = sprite->data[5]; if (gCamera.field_0 && (gSaveBlock1.location.mapNum != mapNum || gSaveBlock1.location.mapGroup != mapGroup)) { - sprite->data1 -= gCamera.x; - sprite->data2 -= gCamera.y; - sprite->data5 = ((u8)gSaveBlock1.location.mapNum << 8) | (u8)gSaveBlock1.location.mapGroup; + sprite->data[1] -= gCamera.x; + sprite->data[2] -= gCamera.y; + sprite->data[5] = ((u8)gSaveBlock1.location.mapNum << 8) | (u8)gSaveBlock1.location.mapGroup; } - localId = sprite->data3 >> 8; - mapNum = sprite->data3; - mapGroup = sprite->data4; - metatileBehavior = MapGridGetMetatileBehaviorAt(sprite->data1, sprite->data2); - if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId) || !MetatileBehavior_IsLongGrass(metatileBehavior) || (sprite->data7 && sprite->animEnded)) + localId = sprite->data[3] >> 8; + mapNum = sprite->data[3]; + mapGroup = sprite->data[4]; + metatileBehavior = MapGridGetMetatileBehaviorAt(sprite->data[1], sprite->data[2]); + if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId) || !MetatileBehavior_IsLongGrass(metatileBehavior) || (sprite->data[7] && sprite->animEnded)) { FieldEffectStop(sprite, FLDEFF_LONG_GRASS); } else { mapObject = &gMapObjects[mapObjectId]; - if ((mapObject->coords2.x != sprite->data1 || mapObject->coords2.y != sprite->data2) && (mapObject->coords3.x != sprite->data1 || mapObject->coords3.y != sprite->data2)) + if ((mapObject->coords2.x != sprite->data[1] || mapObject->coords2.y != sprite->data[2]) && (mapObject->coords3.x != sprite->data[1] || mapObject->coords3.y != sprite->data[2])) { - sprite->data7 = TRUE; + sprite->data[7] = TRUE; } sub_806487C(sprite, 0); - sub_812882C(sprite, sprite->data0, 0); + sub_812882C(sprite, sprite->data[0], 0); } } @@ -469,8 +469,8 @@ u32 FldEff_JumpLongGrass(void) sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data0 = gFieldEffectArguments[2]; - sprite->data1 = 18; + sprite->data[0] = gFieldEffectArguments[2]; + sprite->data[1] = 18; } return 0; } @@ -490,11 +490,11 @@ u32 FldEff_ShortGrass(void) sprite = &(gSprites[spriteId]); sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gSprites[mapObject->spriteId].oam.priority; - sprite->data0 = gFieldEffectArguments[0]; - sprite->data1 = gFieldEffectArguments[1]; - sprite->data2 = gFieldEffectArguments[2]; - sprite->data3 = gSprites[mapObject->spriteId].pos1.x; - sprite->data4 = gSprites[mapObject->spriteId].pos1.y; + sprite->data[0] = gFieldEffectArguments[0]; + sprite->data[1] = gFieldEffectArguments[1]; + sprite->data[2] = gFieldEffectArguments[2]; + sprite->data[3] = gSprites[mapObject->spriteId].pos1.x; + sprite->data[4] = gSprites[mapObject->spriteId].pos1.y; } return 0; } @@ -507,7 +507,7 @@ void sub_8127334(struct Sprite *sprite) const struct MapObjectGraphicsInfo *graphicsInfo; struct Sprite *linkedSprite; - if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId) || !gMapObjects[mapObjectId].mapobj_bit_18) + if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &mapObjectId) || !gMapObjects[mapObjectId].mapobj_bit_18) { FieldEffectStop(sprite, FLDEFF_SHORT_GRASS); } @@ -517,10 +517,10 @@ void sub_8127334(struct Sprite *sprite) linkedSprite = &gSprites[gMapObjects[mapObjectId].spriteId]; y = linkedSprite->pos1.y; x = linkedSprite->pos1.x; - if (x != sprite->data3 || y != sprite->data4) + if (x != sprite->data[3] || y != sprite->data[4]) { - sprite->data3 = x; - sprite->data4 = y; + sprite->data[3] = x; + sprite->data[4] = y; if (sprite->animEnded) { StartSpriteAnim(sprite, 0); @@ -547,7 +547,7 @@ u32 FldEff_SandFootprints(void) sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data7 = FLDEFF_SAND_FOOTPRINTS; + sprite->data[7] = FLDEFF_SAND_FOOTPRINTS; StartSpriteAnim(sprite, gFieldEffectArguments[4]); } return 0; @@ -565,7 +565,7 @@ u32 FldEff_DeepSandFootprints(void) sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data7 = FLDEFF_DEEP_SAND_FOOTPRINTS; + sprite->data[7] = FLDEFF_DEEP_SAND_FOOTPRINTS; StartSpriteAnim(sprite, gFieldEffectArguments[4]); } return spriteId; @@ -583,7 +583,7 @@ u32 FldEff_BikeTireTracks(void) sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data7 = FLDEFF_BIKE_TIRE_TRACKS; + sprite->data[7] = FLDEFF_BIKE_TIRE_TRACKS; StartSpriteAnim(sprite, gFieldEffectArguments[4]); } return spriteId; @@ -591,14 +591,14 @@ u32 FldEff_BikeTireTracks(void) void sub_8127584(struct Sprite *sprite) { - gUnknown_08401E40[sprite->data0](sprite); + gUnknown_08401E40[sprite->data[0]](sprite); } static void sub_81275A0(struct Sprite *sprite) { - if (++sprite->data1 > 40) + if (++sprite->data[1] > 40) { - sprite->data0 = 1; + sprite->data[0] = 1; } sub_806487C(sprite, FALSE); } @@ -606,11 +606,11 @@ static void sub_81275A0(struct Sprite *sprite) static void sub_81275C4(struct Sprite *sprite) { sprite->invisible ^= 1; - sprite->data1 ++; + sprite->data[1] ++; sub_806487C(sprite, sprite->invisible); - if (sprite->data1 > 56) + if (sprite->data[1] > 56) { - FieldEffectStop(sprite, sprite->data7); + FieldEffectStop(sprite, sprite->data[7]); } } @@ -633,9 +633,9 @@ u32 FldEff_Splash(void) sprite->coordOffsetEnabled = TRUE; linkedSprite = &gSprites[mapObject->spriteId]; sprite->oam.priority = linkedSprite->oam.priority; - sprite->data0 = gFieldEffectArguments[0]; - sprite->data1 = gFieldEffectArguments[1]; - sprite->data2 = gFieldEffectArguments[2]; + sprite->data[0] = gFieldEffectArguments[0]; + sprite->data[1] = gFieldEffectArguments[1]; + sprite->data[2] = gFieldEffectArguments[2]; sprite->pos2.y = (graphicsInfo->height >> 1) - 4; PlaySE(SE_MIZU); } @@ -646,7 +646,7 @@ void sub_81276B4(struct Sprite *sprite) { u8 mapObjectId; - if (sprite->animEnded || TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId)) + if (sprite->animEnded || TryGetFieldObjectIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &mapObjectId)) { FieldEffectStop(sprite, FLDEFF_SPLASH); } @@ -670,8 +670,8 @@ u32 FldEff_JumpSmallSplash(void) sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data0 = gFieldEffectArguments[2]; - sprite->data1 = FLDEFF_JUMP_SMALL_SPLASH; + sprite->data[0] = gFieldEffectArguments[2]; + sprite->data[1] = FLDEFF_JUMP_SMALL_SPLASH; } return 0; } @@ -688,8 +688,8 @@ u32 FldEff_JumpBigSplash(void) sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data0 = gFieldEffectArguments[2]; - sprite->data1 = FLDEFF_JUMP_BIG_SPLASH; + sprite->data[0] = gFieldEffectArguments[2]; + sprite->data[1] = FLDEFF_JUMP_BIG_SPLASH; } return 0; } @@ -712,11 +712,11 @@ u32 FldEff_FeetInFlowingWater(void) sprite->callback = sub_81278D8; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gSprites[mapObject->spriteId].oam.priority; - sprite->data0 = gFieldEffectArguments[0]; - sprite->data1 = gFieldEffectArguments[1]; - sprite->data2 = gFieldEffectArguments[2]; - sprite->data3 = -1; - sprite->data4 = -1; + sprite->data[0] = gFieldEffectArguments[0]; + sprite->data[1] = gFieldEffectArguments[1]; + sprite->data[2] = gFieldEffectArguments[2]; + sprite->data[3] = -1; + sprite->data[4] = -1; sprite->pos2.y = (graphicsInfo->height >> 1) - 4; StartSpriteAnim(sprite, 1); } @@ -729,7 +729,7 @@ static void sub_81278D8(struct Sprite *sprite) struct Sprite *linkedSprite; struct MapObject *mapObject; - if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId) || !gMapObjects[mapObjectId].mapobj_bit_19) + if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &mapObjectId) || !gMapObjects[mapObjectId].mapobj_bit_19) { FieldEffectStop(sprite, FLDEFF_FEET_IN_FLOWING_WATER); } @@ -741,10 +741,10 @@ static void sub_81278D8(struct Sprite *sprite) sprite->pos1.y = linkedSprite->pos1.y; sprite->subpriority = linkedSprite->subpriority; sub_806487C(sprite, FALSE); - if (mapObject->coords2.x != sprite->data3 || mapObject->coords2.y != sprite->data4) + if (mapObject->coords2.x != sprite->data[3] || mapObject->coords2.y != sprite->data[4]) { - sprite->data3 = mapObject->coords2.x; - sprite->data4 = mapObject->coords2.y; + sprite->data[3] = mapObject->coords2.x; + sprite->data[4] = mapObject->coords2.y; if (!sprite->invisible) { PlaySE(SE_MIZU); @@ -764,7 +764,7 @@ u32 FldEff_Ripple(void) sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data0 = FLDEFF_RIPPLE; + sprite->data[0] = FLDEFF_RIPPLE; } return 0; } @@ -784,11 +784,11 @@ u32 FldEff_HotSpringsWater(void) sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gSprites[mapObject->spriteId].oam.priority; - sprite->data0 = gFieldEffectArguments[0]; - sprite->data1 = gFieldEffectArguments[1]; - sprite->data2 = gFieldEffectArguments[2]; - sprite->data3 = gSprites[mapObject->spriteId].pos1.x; - sprite->data4 = gSprites[mapObject->spriteId].pos1.y; + sprite->data[0] = gFieldEffectArguments[0]; + sprite->data[1] = gFieldEffectArguments[1]; + sprite->data[2] = gFieldEffectArguments[2]; + sprite->data[3] = gSprites[mapObject->spriteId].pos1.x; + sprite->data[4] = gSprites[mapObject->spriteId].pos1.y; } return 0; } @@ -799,7 +799,7 @@ void sub_8127A7C(struct Sprite *sprite) const struct MapObjectGraphicsInfo *graphicsInfo; struct Sprite *linkedSprite; - if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId) || !gMapObjects[mapObjectId].mapobj_bit_21) + if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &mapObjectId) || !gMapObjects[mapObjectId].mapobj_bit_21) { FieldEffectStop(sprite, FLDEFF_HOT_SPRINGS_WATER); } @@ -826,7 +826,7 @@ u32 FldEff_Unknown19(void) sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data0 = FLDEFF_UNKNOWN_19; + sprite->data[0] = FLDEFF_UNKNOWN_19; } return 0; } @@ -843,7 +843,7 @@ u32 FldEff_Unknown20(void) sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data0 = FLDEFF_UNKNOWN_20; + sprite->data[0] = FLDEFF_UNKNOWN_20; } return 0; } @@ -860,7 +860,7 @@ u32 FldEff_Unknown21(void) sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data0 = FLDEFF_UNKNOWN_21; + sprite->data[0] = FLDEFF_UNKNOWN_21; } return 0; } @@ -877,7 +877,7 @@ u32 FldEff_Unknown22(void) sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data0 = FLDEFF_UNKNOWN_22; + sprite->data[0] = FLDEFF_UNKNOWN_22; } return 0; } @@ -909,26 +909,26 @@ u32 FldEff_Ash(void) sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data1 = gFieldEffectArguments[0]; - sprite->data2 = gFieldEffectArguments[1]; - sprite->data3 = gFieldEffectArguments[4]; - sprite->data4 = gFieldEffectArguments[5]; + sprite->data[1] = gFieldEffectArguments[0]; + sprite->data[2] = gFieldEffectArguments[1]; + sprite->data[3] = gFieldEffectArguments[4]; + sprite->data[4] = gFieldEffectArguments[5]; } return 0; } void sub_8127D84(struct Sprite *sprite) { - gUnknown_08401E48[sprite->data0](sprite); + gUnknown_08401E48[sprite->data[0]](sprite); } static void sub_8127DA0(struct Sprite *sprite) { sprite->invisible = TRUE; sprite->animPaused = TRUE; - if (--sprite->data4 == 0) + if (--sprite->data[4] == 0) { - sprite->data0 = 1; + sprite->data[0] = 1; } } @@ -936,10 +936,10 @@ static void sub_8127DD0(struct Sprite *sprite) { sprite->invisible = FALSE; sprite->animPaused = FALSE; - MapGridSetMetatileIdAt(sprite->data1, sprite->data2, sprite->data3); - CurrentMapDrawMetatileAt(sprite->data1, sprite->data2); + MapGridSetMetatileIdAt(sprite->data[1], sprite->data[2], sprite->data[3]); + CurrentMapDrawMetatileAt(sprite->data[1], sprite->data[2]); gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_2 = TRUE; - sprite->data0 = 2; + sprite->data[0] = 2; } static void sub_8127E30(struct Sprite *sprite) @@ -963,10 +963,10 @@ u32 FldEff_SurfBlob(void) sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.paletteNum = 0; - sprite->data2 = gFieldEffectArguments[2]; - sprite->data3 = -1; - sprite->data6 = -1; - sprite->data7 = -1; + sprite->data[2] = gFieldEffectArguments[2]; + sprite->data[3] = -1; + sprite->data[6] = -1; + sprite->data[7] = -1; } FieldEffectActiveListRemove(FLDEFF_SURF_BLOB); return spriteId; @@ -974,33 +974,33 @@ u32 FldEff_SurfBlob(void) void sub_8127ED0(u8 spriteId, u8 value) { - gSprites[spriteId].data0 = (gSprites[spriteId].data0 & ~0xF) | (value & 0xF); + gSprites[spriteId].data[0] = (gSprites[spriteId].data[0] & ~0xF) | (value & 0xF); } void sub_8127EFC(u8 spriteId, u8 value) { - gSprites[spriteId].data0 = (gSprites[spriteId].data0 & ~0xF0) | ((value & 0xF) << 4); + gSprites[spriteId].data[0] = (gSprites[spriteId].data[0] & ~0xF0) | ((value & 0xF) << 4); } void sub_8127F28(u8 spriteId, u8 value, s16 data1) { - gSprites[spriteId].data0 = (gSprites[spriteId].data0 & ~0xF00) | ((value & 0xF) << 8); - gSprites[spriteId].data1 = data1; + gSprites[spriteId].data[0] = (gSprites[spriteId].data[0] & ~0xF00) | ((value & 0xF) << 8); + gSprites[spriteId].data[1] = data1; } static u8 sub_8127F5C(struct Sprite *sprite) { - return sprite->data0 & 0xF; + return sprite->data[0] & 0xF; } static u8 sub_8127F64(struct Sprite *sprite) { - return (sprite->data0 & 0xF0) >> 4; + return (sprite->data[0] & 0xF0) >> 4; } static u8 sub_8127F70(struct Sprite *sprite) { - return (sprite->data0 & 0xF00) >> 8; + return (sprite->data[0] & 0xF00) >> 8; } void sub_8127F7C(struct Sprite *sprite) @@ -1008,7 +1008,7 @@ void sub_8127F7C(struct Sprite *sprite) struct MapObject *mapObject; struct Sprite *linkedSprite; - mapObject = &gMapObjects[sprite->data2]; + mapObject = &gMapObjects[sprite->data[2]]; linkedSprite = &gSprites[mapObject->spriteId]; sub_8127FD4(mapObject, sprite); sub_812800C(mapObject, sprite); @@ -1036,15 +1036,15 @@ static void sub_812800C(struct MapObject *mapObject, struct Sprite *sprite) x = mapObject->coords2.x; y = mapObject->coords2.y; - if (sprite->pos2.y == 0 && (x != sprite->data6 || y != sprite->data7)) + if (sprite->pos2.y == 0 && (x != sprite->data[6] || y != sprite->data[7])) { - sprite->data5 = sprite->pos2.y; - for (sprite->data6 = x, sprite->data7 = y, i = DIR_SOUTH; i <= DIR_EAST; i ++, x = sprite->data6, y = sprite->data7) + sprite->data[5] = sprite->pos2.y; + for (sprite->data[6] = x, sprite->data[7] = y, i = DIR_SOUTH; i <= DIR_EAST; i ++, x = sprite->data[6], y = sprite->data[7]) { MoveCoords(i, &x, &y); if (MapGridGetZCoordAt(x, y) == 3) { - sprite->data5 ++; + sprite->data[5] ++; break; } } @@ -1141,13 +1141,13 @@ static void sub_81280A0(struct MapObject *mapObject, struct Sprite *linkedSprite v0 = sub_8127F5C(sprite); if (v0 != 0) { - if (((u16)(++ sprite->data4) & unk_8401E5A[sprite->data5]) == 0) + if (((u16)(++ sprite->data[4]) & unk_8401E5A[sprite->data[5]]) == 0) { - sprite->pos2.y += sprite->data3; + sprite->pos2.y += sprite->data[3]; } - if ((sprite->data4 & 0x0F) == 0) + if ((sprite->data[4] & 0x0F) == 0) { - sprite->data3 = -sprite->data3; + sprite->data[3] = -sprite->data[3]; } if (v0 != 2) { @@ -1157,7 +1157,7 @@ static void sub_81280A0(struct MapObject *mapObject, struct Sprite *linkedSprite } else { - linkedSprite->pos2.y = sprite->data1 + sprite->pos2.y; + linkedSprite->pos2.y = sprite->data[1] + sprite->pos2.y; } sprite->pos1.x = linkedSprite->pos1.x; sprite->pos1.y = linkedSprite->pos1.y + 8; @@ -1174,8 +1174,8 @@ u8 sub_8128124(u8 oldSpriteId) sprite = &gSprites[spriteId]; sprite->callback = sub_8128174; sprite->invisible = TRUE; - sprite->data0 = oldSpriteId; - sprite->data1 = 1; + sprite->data[0] = oldSpriteId; + sprite->data[1] = 1; return spriteId; } @@ -1183,14 +1183,14 @@ static void sub_8128174(struct Sprite *sprite) { struct Sprite *oldSprite; - oldSprite = &gSprites[sprite->data0]; - if (((sprite->data2++) & 0x03) == 0) + oldSprite = &gSprites[sprite->data[0]]; + if (((sprite->data[2]++) & 0x03) == 0) { - oldSprite->pos2.y += sprite->data1; + oldSprite->pos2.y += sprite->data[1]; } - if ((sprite->data2 & 0x0F) == 0) + if ((sprite->data[2] & 0x0F) == 0) { - sprite->data1 = -sprite->data1; + sprite->data[1] = -sprite->data[1]; } } @@ -1206,8 +1206,8 @@ u32 FldEff_Dust(void) sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; - sprite->data0 = gFieldEffectArguments[2]; - sprite->data1 = 10; + sprite->data[0] = gFieldEffectArguments[2]; + sprite->data[1] = 10; } return 0; } @@ -1229,11 +1229,11 @@ u32 FldEff_SandPile(void) sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gSprites[mapObject->spriteId].oam.priority; - sprite->data0 = gFieldEffectArguments[0]; - sprite->data1 = gFieldEffectArguments[1]; - sprite->data2 = gFieldEffectArguments[2]; - sprite->data3 = gSprites[mapObject->spriteId].pos1.x; - sprite->data4 = gSprites[mapObject->spriteId].pos1.y; + sprite->data[0] = gFieldEffectArguments[0]; + sprite->data[1] = gFieldEffectArguments[1]; + sprite->data[2] = gFieldEffectArguments[2]; + sprite->data[3] = gSprites[mapObject->spriteId].pos1.x; + sprite->data[4] = gSprites[mapObject->spriteId].pos1.y; sprite->pos2.y = (graphicsInfo->height >> 1) - 2; SeekSpriteAnim(sprite, 2); } @@ -1246,7 +1246,7 @@ void sub_81282E0(struct Sprite *sprite) s16 x; s16 y; - if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId) || !gMapObjects[mapObjectId].mapobj_bit_20) + if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &mapObjectId) || !gMapObjects[mapObjectId].mapobj_bit_20) { FieldEffectStop(sprite, FLDEFF_SAND_PILE); } @@ -1254,10 +1254,10 @@ void sub_81282E0(struct Sprite *sprite) { y = gSprites[gMapObjects[mapObjectId].spriteId].pos1.y; x = gSprites[gMapObjects[mapObjectId].spriteId].pos1.x; - if (x != sprite->data3 || y != sprite->data4) + if (x != sprite->data[3] || y != sprite->data[4]) { - sprite->data3 = x; - sprite->data4 = y; + sprite->data[3] = x; + sprite->data[4] = y; if (sprite->animEnded) { StartSpriteAnim(sprite, 0); @@ -1288,9 +1288,9 @@ u32 FldEff_Bubbles(void) void sub_8128410(struct Sprite *sprite) { - sprite->data0 += 0x80; - sprite->data0 &= 0x100; - sprite->pos1.y -= sprite->data0 >> 8; + sprite->data[0] += 0x80; + sprite->data[0] &= 0x100; + sprite->pos1.y -= sprite->data[0] >> 8; sub_806487C(sprite, FALSE); if (sprite->invisible || sprite->animEnded) { @@ -1311,7 +1311,7 @@ u32 FldEff_BerryTreeGrowthSparkle(void) sprite->coordOffsetEnabled = TRUE; sprite->oam.priority = gFieldEffectArguments[3]; sprite->oam.paletteNum = 5; - sprite->data0 = FLDEFF_BERRY_TREE_GROWTH_SPARKLE; + sprite->data[0] = FLDEFF_BERRY_TREE_GROWTH_SPARKLE; } return 0; } @@ -1349,10 +1349,10 @@ static u32 ShowDisguiseFieldEffect(u8 fldEff, u8 templateIdx, u8 paletteNum) sprite = &gSprites[spriteId]; sprite->coordOffsetEnabled ++; sprite->oam.paletteNum = paletteNum; - sprite->data1 = fldEff; - sprite->data2 = gFieldEffectArguments[0]; - sprite->data3 = gFieldEffectArguments[1]; - sprite->data4 = gFieldEffectArguments[2]; + sprite->data[1] = fldEff; + sprite->data[2] = gFieldEffectArguments[0]; + sprite->data[3] = gFieldEffectArguments[1]; + sprite->data[4] = gFieldEffectArguments[2]; } return spriteId; } @@ -1363,9 +1363,9 @@ void sub_81285AC(struct Sprite *sprite) const struct MapObjectGraphicsInfo *graphicsInfo; struct Sprite *linkedSprite; - if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data2, sprite->data3, sprite->data4, &mapObjectId)) + if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data[2], sprite->data[3], sprite->data[4], &mapObjectId)) { - FieldEffectStop(sprite, sprite->data1); + FieldEffectStop(sprite, sprite->data[1]); } // else { graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[mapObjectId].graphicsId); @@ -1374,18 +1374,18 @@ void sub_81285AC(struct Sprite *sprite) sprite->pos1.x = linkedSprite->pos1.x; sprite->pos1.y = (graphicsInfo->height >> 1) + linkedSprite->pos1.y - 16; sprite->subpriority = linkedSprite->subpriority - 1; - if (sprite->data0 == 1) + if (sprite->data[0] == 1) { - sprite->data0 ++; + sprite->data[0] ++; StartSpriteAnim(sprite, 1); } - if (sprite->data0 == 2 && sprite->animEnded) + if (sprite->data[0] == 2 && sprite->animEnded) { - sprite->data7 = 1; + sprite->data[7] = 1; } - if (sprite->data0 == 3) + if (sprite->data[0] == 3) { - FieldEffectStop(sprite, sprite->data1); + FieldEffectStop(sprite, sprite->data[1]); } // } } @@ -1394,7 +1394,7 @@ void sub_812869C(struct MapObject *mapObject) { if (mapObject->mapobj_unk_21 == 1) { - gSprites[mapObject->mapobj_unk_1A].data0 ++; + gSprites[mapObject->mapobj_unk_1A].data[0] ++; } } @@ -1411,10 +1411,10 @@ bool8 sub_81286C4(struct MapObject *mapObject) return TRUE; } sprite = &gSprites[mapObject->mapobj_unk_1A]; - if (sprite->data7) + if (sprite->data[7]) { mapObject->mapobj_unk_21 = 2; - sprite->data0 ++; + sprite->data[0] ++; return TRUE; } return FALSE; @@ -1438,19 +1438,19 @@ u32 FldEff_Sparkle(void) void sub_8128774(struct Sprite *sprite) { - if (sprite->data0 == 0) + if (sprite->data[0] == 0) { if (sprite->animEnded) { sprite->invisible = TRUE; - sprite->data0 ++; + sprite->data[0] ++; } - if (sprite->data0 == 0) + if (sprite->data[0] == 0) { return; } } - if (++ sprite->data1 >= 35) + if (++ sprite->data[1] >= 35) { FieldEffectStop(sprite, FLDEFF_SPARKLE); } @@ -1460,12 +1460,12 @@ void sub_81287C4(struct Sprite *sprite) { if (sprite->animEnded) { - FieldEffectStop(sprite, sprite->data1); + FieldEffectStop(sprite, sprite->data[1]); } else { sub_806487C(sprite, FALSE); - SetObjectSubpriorityByZCoord(sprite->data0, sprite, 0); + SetObjectSubpriorityByZCoord(sprite->data[0], sprite, 0); } } @@ -1473,7 +1473,7 @@ void sub_8128800(struct Sprite *sprite) { if (sprite->animEnded) { - FieldEffectStop(sprite, sprite->data0); + FieldEffectStop(sprite, sprite->data[0]); } else { diff --git a/src/field/field_map_obj.c b/src/field/field_map_obj.c index 74ef3b7fe..98f6fedab 100644 --- a/src/field/field_map_obj.c +++ b/src/field/field_map_obj.c @@ -2343,7 +2343,7 @@ u8 sub_805AFCC(struct MapObjectTemplate *mapObjTemplate, struct SpriteTemplate * sprite->pos1.y += 16 + sprite->centerToCornerVecY; sprite->oam.paletteNum = gfxInfo->paletteSlot; sprite->coordOffsetEnabled = TRUE; - sprite->data0 = mapObjectId; + sprite->data[0] = mapObjectId; mapObject->spriteId = spriteId; mapObject->mapobj_bit_12 = gfxInfo->inanimate; if (!mapObject->mapobj_bit_12) @@ -2489,8 +2489,8 @@ u8 sub_805B410(u8 graphicsId, u8 b, s16 x, s16 y, u8 elevation, u8 direction) sprite->pos1.y += sprite->centerToCornerVecY; sprite->oam.paletteNum = gfxInfo->paletteSlot; sprite->coordOffsetEnabled = TRUE; - sprite->data0 = b; - sprite->data1 = elevation; + sprite->data[0] = b; + sprite->data[1] = elevation; if (gfxInfo->paletteSlot == 10) npc_load_two_palettes__and_record(gfxInfo->paletteTag1, gfxInfo->paletteSlot); if (subspriteTables != NULL) @@ -2640,7 +2640,7 @@ void sub_805B75C(u8 a, s16 b, s16 c) SetSubspriteTables(sprite, subspriteTables); sprite->oam.paletteNum = gfxInfo->paletteSlot; sprite->coordOffsetEnabled = TRUE; - sprite->data0 = a; + sprite->data[0] = a; mapObject->spriteId = spriteId; if (!mapObject->mapobj_bit_12 && mapObject->animPattern != 11) StartSpriteAnim(sprite, FieldObjectDirectionToImageAnimId(mapObject->mapobj_unk_18)); @@ -3042,7 +3042,7 @@ u8 AddCameraObject(u8 a) u8 spriteId = CreateSprite(&gSpriteTemplate_830FD24, 0, 0, 4); gSprites[spriteId].invisible = TRUE; - gSprites[spriteId].data0 = a; + gSprites[spriteId].data[0] = a; return spriteId; } @@ -3050,35 +3050,35 @@ void ObjectCB_CameraObject(struct Sprite *sprite) { void (*cameraObjectFuncs[3])(struct Sprite *); memcpy(cameraObjectFuncs, gCameraObjectFuncs, sizeof gCameraObjectFuncs); - cameraObjectFuncs[sprite->data1](sprite); + cameraObjectFuncs[sprite->data[1]](sprite); } void CameraObject_0(struct Sprite *sprite) { - sprite->pos1.x = gSprites[sprite->data0].pos1.x; - sprite->pos1.y = gSprites[sprite->data0].pos1.y; + sprite->pos1.x = gSprites[sprite->data[0]].pos1.x; + sprite->pos1.y = gSprites[sprite->data[0]].pos1.y; sprite->invisible = TRUE; - sprite->data1 = 1; + sprite->data[1] = 1; CameraObject_1(sprite); } void CameraObject_1(struct Sprite *sprite) { - s16 x = gSprites[sprite->data0].pos1.x; - s16 y = gSprites[sprite->data0].pos1.y; + s16 x = gSprites[sprite->data[0]].pos1.x; + s16 y = gSprites[sprite->data[0]].pos1.y; - sprite->data2 = x - sprite->pos1.x; - sprite->data3 = y - sprite->pos1.y; + sprite->data[2] = x - sprite->pos1.x; + sprite->data[3] = y - sprite->pos1.y; sprite->pos1.x = x; sprite->pos1.y = y; } void CameraObject_2(struct Sprite *sprite) { - sprite->pos1.x = gSprites[sprite->data0].pos1.x; - sprite->pos1.y = gSprites[sprite->data0].pos1.y; - sprite->data2 = 0; - sprite->data3 = 0; + sprite->pos1.x = gSprites[sprite->data[0]].pos1.x; + sprite->pos1.y = gSprites[sprite->data[0]].pos1.y; + sprite->data[2] = 0; + sprite->data[3] = 0; } struct Sprite *FindCameraObject(void) @@ -3099,7 +3099,7 @@ void CameraObjectReset1(void) if (cameraSprite != NULL) { - cameraSprite->data1 = 0; + cameraSprite->data[1] = 0; cameraSprite->callback(cameraSprite); } } @@ -3110,7 +3110,7 @@ void CameraObjectSetFollowedObjectId(u8 spriteId) if (cameraSprite != NULL) { - cameraSprite->data0 = spriteId; + cameraSprite->data[0] = spriteId; CameraObjectReset1(); } } @@ -3122,14 +3122,14 @@ u8 CameraObjectGetFollowedObjectId(void) if (cameraSprite == NULL) return 64; else - return cameraSprite->data0; + return cameraSprite->data[0]; } void CameraObjectReset2(void) { struct Sprite *cameraSprite = FindCameraObject(); - cameraSprite->data1 = 2; + cameraSprite->data[1] = 2; } u8 unref_sub_805C43C(struct Sprite *src, s16 x, s16 y, u8 subpriority) @@ -3333,7 +3333,7 @@ fieldmap_object_cb(sub_805C8AC, sub_805C8D0, gUnknown_08375224); u8 sub_805C8F0(struct MapObject *mapObject, struct Sprite *sprite) { npc_reset(mapObject, sprite); - sprite->data1 = 1; + sprite->data[1] = 1; return 1; } @@ -3342,7 +3342,7 @@ extern void FieldObjectSetRegularAnim(struct MapObject *, struct Sprite *, u8); u8 sub_805C904(struct MapObject *mapObject, struct Sprite *sprite) { FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); - sprite->data1 = 2; + sprite->data[1] = 2; return 1; } @@ -3356,7 +3356,7 @@ u8 sub_805C930(struct MapObject *mapObject, struct Sprite *sprite) return 0; } sub_8064820(sprite, gUnknown_0837520C[Random() & 3]); - sprite->data1 = 3; + sprite->data[1] = 3; return 1; } @@ -3366,7 +3366,7 @@ u8 sub_805C96C(struct MapObject *mapObject, struct Sprite *sprite) { if (sub_8064824(sprite) != 0) { - sprite->data1 = 4; + sprite->data[1] = 4; return 1; } return 0; @@ -3381,10 +3381,10 @@ u8 sub_805C98C(struct MapObject *mapObject, struct Sprite *sprite) memcpy(directions, gUnknown_08375240, 4); direction = directions[Random() & 3]; FieldObjectSetDirection(mapObject, direction); - sprite->data1 = 5; + sprite->data[1] = 5; if (sub_805FF20(mapObject, direction) != 0) { - sprite->data1 = 1; + sprite->data[1] = 1; } return 1; } @@ -3393,7 +3393,7 @@ u8 sub_805C9D8(struct MapObject *mapObject, struct Sprite *sprite) { FieldObjectSetRegularAnim(mapObject, sprite, GetGoSpeed0AnimId(mapObject->placeholder18)); mapObject->mapobj_bit_1 = 1; - sprite->data1 = 6; + sprite->data[1] = 6; return 1; } @@ -3402,7 +3402,7 @@ u8 sub_805CA08(struct MapObject *mapObject, struct Sprite *sprite) if (FieldObjectExecRegularAnim(mapObject, sprite) != 0) { mapObject->mapobj_bit_1 = 0; - sprite->data1 = 1; + sprite->data[1] = 1; } return 0; } @@ -3649,14 +3649,14 @@ fieldmap_object_cb(sub_805CDE8, sub_805CE0c, gUnknown_08375270); u8 sub_805CE2C(struct MapObject *mapObject, struct Sprite *sprite) { npc_reset(mapObject, sprite); - sprite->data1 = 1; + sprite->data[1] = 1; return 1; } u8 sub_805CE40(struct MapObject *mapObject, struct Sprite *sprite) { FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); - sprite->data1 = 2; + sprite->data[1] = 2; return 1; } @@ -3666,7 +3666,7 @@ u8 sub_805CE6C(struct MapObject *mapObject, struct Sprite *sprite) { sub_8064820(sprite, gUnknown_0837520C[Random() & 3]); mapObject->mapobj_bit_1 = 0; - sprite->data1 = 3; + sprite->data[1] = 3; } return 0; } @@ -3675,7 +3675,7 @@ u8 sub_805CEB0(struct MapObject *mapObject, struct Sprite *sprite) { if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) { - sprite->data1 = 4; + sprite->data[1] = 4; return 1; } return 0; @@ -3692,7 +3692,7 @@ u8 sub_805CEE0(struct MapObject *mapObject, struct Sprite *sprite) direction = directions[Random() & 3]; } FieldObjectSetDirection(mapObject, direction); - sprite->data1 = 1; + sprite->data[1] = 1; return 1; } @@ -3701,14 +3701,14 @@ fieldmap_object_cb(sub_805CF28, sub_805CF4C, gUnknown_08375284); u8 sub_805CF6C(struct MapObject *mapObject, struct Sprite *sprite) { npc_reset(mapObject, sprite); - sprite->data1 = 1; + sprite->data[1] = 1; return 1; } u8 sub_805CF80(struct MapObject *mapObject, struct Sprite *sprite) { FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); - sprite->data1 = 2; + sprite->data[1] = 2; return 1; } @@ -3719,7 +3719,7 @@ u8 sub_805CFAC(struct MapObject *mapObject, struct Sprite *sprite) return 0; } sub_8064820(sprite, gUnknown_0837520C[Random() & 3]); - sprite->data1 = 3; + sprite->data[1] = 3; return 1; } @@ -3727,7 +3727,7 @@ u8 sub_805CFE8(struct MapObject *mapObject, struct Sprite *sprite) { if (sub_8064824(sprite) != 0) { - sprite->data1 = 4; + sprite->data[1] = 4; return 1; } return 0; @@ -3740,10 +3740,10 @@ u8 sub_805D008(struct MapObject *mapObject, struct Sprite *sprite) memcpy(directions, gUnknown_083752A0, 2); direction = directions[Random() & 1]; FieldObjectSetDirection(mapObject, direction); - sprite->data1 = 5; + sprite->data[1] = 5; if (sub_805FF20(mapObject, direction) != 0) { - sprite->data1 = 1; + sprite->data[1] = 1; } return 1; } @@ -3752,7 +3752,7 @@ u8 sub_805D054(struct MapObject *mapObject, struct Sprite *sprite) { FieldObjectSetRegularAnim(mapObject, sprite, GetGoSpeed0AnimId(mapObject->placeholder18)); mapObject->mapobj_bit_1 = 1; - sprite->data1 = 6; + sprite->data[1] = 6; return 1; } @@ -3761,7 +3761,7 @@ u8 sub_805D084(struct MapObject *mapObject, struct Sprite *sprite) if (FieldObjectExecRegularAnim(mapObject, sprite) != 0) { mapObject->mapobj_bit_1 = 0; - sprite->data1 = 1; + sprite->data[1] = 1; } return 0; } @@ -3771,14 +3771,14 @@ fieldmap_object_cb(sub_805D0AC, sub_805D0D0, gUnknown_083752A4); u8 sub_805D0F0(struct MapObject *mapObject, struct Sprite *sprite) { npc_reset(mapObject, sprite); - sprite->data1 = 1; + sprite->data[1] = 1; return 1; } u8 sub_805D104(struct MapObject *mapObject, struct Sprite *sprite) { FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); - sprite->data1 = 2; + sprite->data[1] = 2; return 1; } @@ -3789,7 +3789,7 @@ u8 sub_805D130(struct MapObject *mapObject, struct Sprite *sprite) return 0; } sub_8064820(sprite, gUnknown_0837520C[Random() & 3]); - sprite->data1 = 3; + sprite->data[1] = 3; return 1; } @@ -3797,7 +3797,7 @@ u8 sub_805D16C(struct MapObject *mapObject, struct Sprite *sprite) { if (sub_8064824(sprite) != 0) { - sprite->data1 = 4; + sprite->data[1] = 4; return 1; } return 0; @@ -3810,10 +3810,10 @@ u8 sub_805D18C(struct MapObject *mapObject, struct Sprite *sprite) memcpy(directions, gUnknown_083752C0, 2); direction = directions[Random() & 1]; FieldObjectSetDirection(mapObject, direction); - sprite->data1 = 5; + sprite->data[1] = 5; if (sub_805FF20(mapObject, direction) != 0) { - sprite->data1 = 1; + sprite->data[1] = 1; } return 1; } @@ -3822,7 +3822,7 @@ u8 sub_805D1D8(struct MapObject *mapObject, struct Sprite *sprite) { FieldObjectSetRegularAnim(mapObject, sprite, GetGoSpeed0AnimId(mapObject->placeholder18)); mapObject->mapobj_bit_1 = 1; - sprite->data1 = 6; + sprite->data[1] = 6; return 1; } @@ -3831,7 +3831,7 @@ u8 sub_805D208(struct MapObject *mapObject, struct Sprite *sprite) if (FieldObjectExecRegularAnim(mapObject, sprite) != 0) { mapObject->mapobj_bit_1 = 0; - sprite->data1 = 1; + sprite->data[1] = 1; } return 0; } @@ -3842,7 +3842,7 @@ u8 sub_805D274(struct MapObject *mapObject, struct Sprite *sprite) { npc_reset(mapObject, sprite); FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); - sprite->data1 = 1; + sprite->data[1] = 1; return 1; } @@ -3850,7 +3850,7 @@ u8 sub_805D2A0(struct MapObject *mapObject, struct Sprite *sprite) { if (FieldObjectExecRegularAnim(mapObject, sprite) != 0) { - sprite->data1 = 2; + sprite->data[1] = 2; return 1; } return 0; @@ -3867,18 +3867,18 @@ u8 sub_805D314(struct MapObject *mapObject, struct Sprite *sprite); void FieldObjectCB_BerryTree(struct Sprite *sprite) { struct MapObject *mapObject; - mapObject = &gMapObjects[sprite->data0]; - if (!(sprite->data7 & 1)) + mapObject = &gMapObjects[sprite->data[0]]; + if (!(sprite->data[7] & 1)) { get_berry_tree_graphics(mapObject, sprite); - sprite->data7 |= 1; + sprite->data[7] |= 1; } meta_step(mapObject, sprite, sub_805D314); } u8 sub_805D314(struct MapObject *mapObject, struct Sprite *sprite) { - return gUnknown_083752D0[sprite->data1](mapObject, sprite); + return gUnknown_083752D0[sprite->data[1]](mapObject, sprite); } u8 do_berry_tree_growth_sparkle_1(struct MapObject *mapObject, struct Sprite *sprite) @@ -3890,7 +3890,7 @@ u8 do_berry_tree_growth_sparkle_1(struct MapObject *mapObject, struct Sprite *sp berryTreeStage = GetStageByBerryTreeId(mapObject->trainerRange_berryTreeId); if (!berryTreeStage) { - if (!(sprite->data7 & 4) && sprite->animNum == 4) + if (!(sprite->data[7] & 4) && sprite->animNum == 4) { gFieldEffectArguments[0] = mapObject->coords2.x; gFieldEffectArguments[1] = mapObject->coords2.y; @@ -3906,12 +3906,12 @@ u8 do_berry_tree_growth_sparkle_1(struct MapObject *mapObject, struct Sprite *sp berryTreeStage--; if (sprite->animNum != berryTreeStage) { - sprite->data1 = 2; + sprite->data[1] = 2; return 1; } get_berry_tree_graphics(mapObject, sprite); FieldObjectSetRegularAnim(mapObject, sprite, 0x39); - sprite->data1 = 1; + sprite->data[1] = 1; return 1; } @@ -3919,7 +3919,7 @@ u8 sub_805D3EC(struct MapObject *mapObject, struct Sprite *sprite) { if (FieldObjectExecRegularAnim(mapObject, sprite)) { - sprite->data1 = 0; + sprite->data[1] = 0; return 1; } return 0; @@ -3928,9 +3928,9 @@ u8 sub_805D3EC(struct MapObject *mapObject, struct Sprite *sprite) u8 do_berry_tree_growth_sparkle_2(struct MapObject *mapObject, struct Sprite *sprite) { mapObject->mapobj_bit_1 = 1; - sprite->data1 = 3; - sprite->data2 = 0; - sprite->data7 |= 2; + sprite->data[1] = 3; + sprite->data[2] = 0; + sprite->data[7] |= 2; gFieldEffectArguments[0] = mapObject->coords2.x; gFieldEffectArguments[1] = mapObject->coords2.y; gFieldEffectArguments[2] = sprite->subpriority - 1; @@ -3941,14 +3941,14 @@ u8 do_berry_tree_growth_sparkle_2(struct MapObject *mapObject, struct Sprite *sp u8 sub_805D458(struct MapObject *mapObject, struct Sprite *sprite) { - sprite->data2++; - mapObject->mapobj_bit_13 = ((sprite->data2 & 0x2) >> 1); + sprite->data[2]++; + mapObject->mapobj_bit_13 = ((sprite->data[2] & 0x2) >> 1); sprite->animPaused = 1; - if (sprite->data2 > 64) + if (sprite->data[2] > 64) { get_berry_tree_graphics(mapObject, sprite); - sprite->data1 = 4; - sprite->data2 = 0; + sprite->data[1] = 4; + sprite->data[2] = 0; return 1; } return 0; @@ -3956,13 +3956,13 @@ u8 sub_805D458(struct MapObject *mapObject, struct Sprite *sprite) u8 sub_805D4A8(struct MapObject *mapObject, struct Sprite *sprite) { - sprite->data2++; - mapObject->mapobj_bit_13 = ((sprite->data2 & 0x2) >> 1); + sprite->data[2]++; + mapObject->mapobj_bit_13 = ((sprite->data[2] & 0x2) >> 1); sprite->animPaused = 1; - if (sprite->data2 > 64) + if (sprite->data[2] > 64) { - sprite->data1 = 0; - sprite->data7 &= (-3); + sprite->data[1] = 0; + sprite->data[7] &= (-3); return 1; } return 0; @@ -3973,14 +3973,14 @@ fieldmap_object_cb(sub_805D4F4, sub_805D518, gUnknown_083752E4); u8 sub_805D538(struct MapObject *mapObject, struct Sprite *sprite) { npc_reset(mapObject, sprite); - sprite->data1 = 1; + sprite->data[1] = 1; return 1; } u8 sub_805D54C(struct MapObject *mapObject, struct Sprite *sprite) { FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); - sprite->data1 = 2; + sprite->data[1] = 2; return 1; } @@ -3990,7 +3990,7 @@ u8 sub_805D578(struct MapObject *mapObject, struct Sprite *sprite) { sub_8064820(sprite, gUnknown_0837520C[Random() & 3]); mapObject->mapobj_bit_1 = 0; - sprite->data1 = 3; + sprite->data[1] = 3; } return 0; } @@ -3999,7 +3999,7 @@ u8 sub_805D5BC(struct MapObject *mapObject, struct Sprite *sprite) { if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) { - sprite->data1 = 4; + sprite->data[1] = 4; return 1; } return 0; @@ -4016,7 +4016,7 @@ u8 sub_805D5EC(struct MapObject *mapObject, struct Sprite *sprite) direction = directions[Random() & 1]; } FieldObjectSetDirection(mapObject, direction); - sprite->data1 = 1; + sprite->data[1] = 1; return 1; } @@ -4025,14 +4025,14 @@ fieldmap_object_cb(sub_805D634, sub_805D658, gUnknown_083752F8); u8 sub_805D678(struct MapObject *mapObject, struct Sprite *sprite) { npc_reset(mapObject, sprite); - sprite->data1 = 1; + sprite->data[1] = 1; return 1; } u8 sub_805D68C(struct MapObject *mapObject, struct Sprite *sprite) { FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); - sprite->data1 = 2; + sprite->data[1] = 2; return 1; } @@ -4042,7 +4042,7 @@ u8 sub_805D6B8(struct MapObject *mapObject, struct Sprite *sprite) { sub_8064820(sprite, gUnknown_0837520C[Random() & 3]); mapObject->mapobj_bit_1 = 0; - sprite->data1 = 3; + sprite->data[1] = 3; } return 0; } @@ -4051,7 +4051,7 @@ u8 sub_805D6FC(struct MapObject *mapObject, struct Sprite *sprite) { if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) { - sprite->data1 = 4; + sprite->data[1] = 4; return 1; } return 0; @@ -4068,7 +4068,7 @@ u8 sub_805D72C(struct MapObject *mapObject, struct Sprite *sprite) direction = directions[Random() & 1]; } FieldObjectSetDirection(mapObject, direction); - sprite->data1 = 1; + sprite->data[1] = 1; return 1; } @@ -4077,14 +4077,14 @@ fieldmap_object_cb(sub_805D774, sub_805D798, gUnknown_0837530C); u8 sub_805D7B8(struct MapObject *mapObject, struct Sprite *sprite) { npc_reset(mapObject, sprite); - sprite->data1 = 1; + sprite->data[1] = 1; return 1; } u8 sub_805D7CC(struct MapObject *mapObject, struct Sprite *sprite) { FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); - sprite->data1 = 2; + sprite->data[1] = 2; return 1; } @@ -4094,7 +4094,7 @@ u8 sub_805D7F8(struct MapObject *mapObject, struct Sprite *sprite) { sub_8064820(sprite, gUnknown_0837521C[Random() & 3]); mapObject->mapobj_bit_1 = 0; - sprite->data1 = 3; + sprite->data[1] = 3; } return 0; } @@ -4103,7 +4103,7 @@ u8 sub_805D83C(struct MapObject *mapObject, struct Sprite *sprite) { if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) { - sprite->data1 = 4; + sprite->data[1] = 4; return 1; } return 0; @@ -4120,7 +4120,7 @@ u8 sub_805D86C(struct MapObject *mapObject, struct Sprite *sprite) direction = directions[Random() & 1]; } FieldObjectSetDirection(mapObject, direction); - sprite->data1 = 1; + sprite->data[1] = 1; return 1; } @@ -4129,14 +4129,14 @@ fieldmap_object_cb(sub_805D8B4, sub_805D8D8, gUnknown_08375324); u8 sub_805D8F8(struct MapObject *mapObject, struct Sprite *sprite) { npc_reset(mapObject, sprite); - sprite->data1 = 1; + sprite->data[1] = 1; return 1; } u8 sub_805D90C(struct MapObject *mapObject, struct Sprite *sprite) { FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); - sprite->data1 = 2; + sprite->data[1] = 2; return 1; } @@ -4146,7 +4146,7 @@ u8 sub_805D938(struct MapObject *mapObject, struct Sprite *sprite) { sub_8064820(sprite, gUnknown_0837521C[Random() & 3]); mapObject->mapobj_bit_1 = 0; - sprite->data1 = 3; + sprite->data[1] = 3; } return 0; } @@ -4155,7 +4155,7 @@ u8 sub_805D97C(struct MapObject *mapObject, struct Sprite *sprite) { if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) { - sprite->data1 = 4; + sprite->data[1] = 4; return 1; } return 0; @@ -4172,7 +4172,7 @@ u8 sub_805D9AC(struct MapObject *mapObject, struct Sprite *sprite) direction = directions[Random() & 1]; } FieldObjectSetDirection(mapObject, direction); - sprite->data1 = 1; + sprite->data[1] = 1; return 1; } @@ -4181,14 +4181,14 @@ fieldmap_object_cb(sub_805D9F4, sub_805DA18, gUnknown_0837533C); u8 sub_805DA38(struct MapObject *mapObject, struct Sprite *sprite) { npc_reset(mapObject, sprite); - sprite->data1 = 1; + sprite->data[1] = 1; return 1; } u8 sub_805DA4C(struct MapObject *mapObject, struct Sprite *sprite) { FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); - sprite->data1 = 2; + sprite->data[1] = 2; return 1; } @@ -4198,7 +4198,7 @@ u8 sub_805DA78(struct MapObject *mapObject, struct Sprite *sprite) { sub_8064820(sprite, gUnknown_0837521C[Random() & 3]); mapObject->mapobj_bit_1 = 0; - sprite->data1 = 3; + sprite->data[1] = 3; } return 0; } @@ -4207,7 +4207,7 @@ u8 sub_805DABC(struct MapObject *mapObject, struct Sprite *sprite) { if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) { - sprite->data1 = 4; + sprite->data[1] = 4; return 1; } return 0; @@ -4224,7 +4224,7 @@ u8 sub_805DAEC(struct MapObject *mapObject, struct Sprite *sprite) direction = directions[Random() & 1]; } FieldObjectSetDirection(mapObject, direction); - sprite->data1 = 1; + sprite->data[1] = 1; return 1; } @@ -4233,14 +4233,14 @@ fieldmap_object_cb(sub_805DB34, sub_805DB58, gUnknown_08375354); u8 sub_805DB78(struct MapObject *mapObject, struct Sprite *sprite) { npc_reset(mapObject, sprite); - sprite->data1 = 1; + sprite->data[1] = 1; return 1; } u8 sub_805DB8C(struct MapObject *mapObject, struct Sprite *sprite) { FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); - sprite->data1 = 2; + sprite->data[1] = 2; return 1; } @@ -4250,7 +4250,7 @@ u8 sub_805DBB8(struct MapObject *mapObject, struct Sprite *sprite) { sub_8064820(sprite, gUnknown_0837521C[Random() & 3]); mapObject->mapobj_bit_1 = 0; - sprite->data1 = 3; + sprite->data[1] = 3; } return 0; } @@ -4259,7 +4259,7 @@ u8 sub_805DBFC(struct MapObject *mapObject, struct Sprite *sprite) { if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) { - sprite->data1 = 4; + sprite->data[1] = 4; return 1; } return 0; @@ -4276,7 +4276,7 @@ u8 sub_805DC2C(struct MapObject *mapObject, struct Sprite *sprite) direction = directions[Random() & 1]; } FieldObjectSetDirection(mapObject, direction); - sprite->data1 = 1; + sprite->data[1] = 1; return 1; } @@ -4285,14 +4285,14 @@ fieldmap_object_cb(sub_805DC74, sub_805DC98, gUnknown_0837536C); u8 sub_805DCB8(struct MapObject *mapObject, struct Sprite *sprite) { npc_reset(mapObject, sprite); - sprite->data1 = 1; + sprite->data[1] = 1; return 1; } u8 sub_805DCCC(struct MapObject *mapObject, struct Sprite *sprite) { FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); - sprite->data1 = 2; + sprite->data[1] = 2; return 1; } @@ -4302,7 +4302,7 @@ u8 sub_805DCF8(struct MapObject *mapObject, struct Sprite *sprite) { sub_8064820(sprite, gUnknown_0837521C[Random() & 3]); mapObject->mapobj_bit_1 = 0; - sprite->data1 = 3; + sprite->data[1] = 3; } return 0; } @@ -4311,7 +4311,7 @@ u8 sub_805DD3C(struct MapObject *mapObject, struct Sprite *sprite) { if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) { - sprite->data1 = 4; + sprite->data[1] = 4; return 1; } return 0; @@ -4328,7 +4328,7 @@ u8 sub_805DD6C(struct MapObject *mapObject, struct Sprite *sprite) direction = directions[Random() & 3]; } FieldObjectSetDirection(mapObject, direction); - sprite->data1 = 1; + sprite->data[1] = 1; return 1; } @@ -4337,14 +4337,14 @@ fieldmap_object_cb(sub_805DDB4, sub_805DDD8, gUnknown_08375384); u8 sub_805DDF8(struct MapObject *mapObject, struct Sprite *sprite) { npc_reset(mapObject, sprite); - sprite->data1 = 1; + sprite->data[1] = 1; return 1; } u8 sub_805DE0C(struct MapObject *mapObject, struct Sprite *sprite) { FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); - sprite->data1 = 2; + sprite->data[1] = 2; return 1; } @@ -4354,7 +4354,7 @@ u8 sub_805DE38(struct MapObject *mapObject, struct Sprite *sprite) { sub_8064820(sprite, gUnknown_0837521C[Random() & 3]); mapObject->mapobj_bit_1 = 0; - sprite->data1 = 3; + sprite->data[1] = 3; } return 0; } @@ -4363,7 +4363,7 @@ u8 sub_805DE7C(struct MapObject *mapObject, struct Sprite *sprite) { if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) { - sprite->data1 = 4; + sprite->data[1] = 4; return 1; } return 0; @@ -4380,7 +4380,7 @@ u8 sub_805DEAC(struct MapObject *mapObject, struct Sprite *sprite) direction = directions[Random() & 3]; } FieldObjectSetDirection(mapObject, direction); - sprite->data1 = 1; + sprite->data[1] = 1; return 1; } @@ -4389,14 +4389,14 @@ fieldmap_object_cb(sub_805DEF4, sub_805DF18, gUnknown_0837539C); u8 sub_805DF38(struct MapObject *mapObject, struct Sprite *sprite) { npc_reset(mapObject, sprite); - sprite->data1 = 1; + sprite->data[1] = 1; return 1; } u8 sub_805DF4C(struct MapObject *mapObject, struct Sprite *sprite) { FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); - sprite->data1 = 2; + sprite->data[1] = 2; return 1; } @@ -4406,7 +4406,7 @@ u8 sub_805DF78(struct MapObject *mapObject, struct Sprite *sprite) { sub_8064820(sprite, gUnknown_0837521C[Random() & 3]); mapObject->mapobj_bit_1 = 0; - sprite->data1 = 3; + sprite->data[1] = 3; } return 0; } @@ -4415,7 +4415,7 @@ u8 sub_805DFBC(struct MapObject *mapObject, struct Sprite *sprite) { if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) { - sprite->data1 = 4; + sprite->data[1] = 4; return 1; } return 0; @@ -4432,7 +4432,7 @@ u8 sub_805DFEC(struct MapObject *mapObject, struct Sprite *sprite) direction = directions[Random() & 3]; } FieldObjectSetDirection(mapObject, direction); - sprite->data1 = 1; + sprite->data[1] = 1; return 1; } @@ -4441,14 +4441,14 @@ fieldmap_object_cb(sub_805E034, sub_805E058, gUnknown_083753B4); u8 sub_805E078(struct MapObject *mapObject, struct Sprite *sprite) { npc_reset(mapObject, sprite); - sprite->data1 = 1; + sprite->data[1] = 1; return 1; } u8 sub_805E08C(struct MapObject *mapObject, struct Sprite *sprite) { FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); - sprite->data1 = 2; + sprite->data[1] = 2; return 1; } @@ -4458,7 +4458,7 @@ u8 sub_805E0B8(struct MapObject *mapObject, struct Sprite *sprite) { sub_8064820(sprite, gUnknown_0837521C[Random() & 3]); mapObject->mapobj_bit_1 = 0; - sprite->data1 = 3; + sprite->data[1] = 3; } return 0; } @@ -4467,7 +4467,7 @@ u8 sub_805E0FC(struct MapObject *mapObject, struct Sprite *sprite) { if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) { - sprite->data1 = 4; + sprite->data[1] = 4; return 1; } return 0; @@ -4484,7 +4484,7 @@ u8 sub_805E12C(struct MapObject *mapObject, struct Sprite *sprite) direction = directions[Random() & 3]; } FieldObjectSetDirection(mapObject, direction); - sprite->data1 = 1; + sprite->data[1] = 1; return 1; } @@ -4494,7 +4494,7 @@ u8 sub_805E1B8(struct MapObject *mapObject, struct Sprite *sprite) { npc_reset(mapObject, sprite); FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); - sprite->data1 = 1; + sprite->data[1] = 1; return 1; } @@ -4503,7 +4503,7 @@ u8 sub_805E1E4(struct MapObject *mapObject, struct Sprite *sprite) if (FieldObjectExecRegularAnim(mapObject, sprite)) { sub_8064820(sprite, 0x30); - sprite->data1 = 2; + sprite->data[1] = 2; } return 0; } @@ -4512,7 +4512,7 @@ u8 sub_805E208(struct MapObject *mapObject, struct Sprite *sprite) { if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) { - sprite->data1 = 3; + sprite->data[1] = 3; } return 0; } @@ -4528,7 +4528,7 @@ u8 sub_805E234(struct MapObject *mapObject, struct Sprite *sprite) direction = directions[mapObject->mapobj_unk_18]; } FieldObjectSetDirection(mapObject, direction); - sprite->data1 = 0; + sprite->data[1] = 0; return 1; } @@ -4538,7 +4538,7 @@ u8 sub_805E2BC(struct MapObject *mapObject, struct Sprite *sprite) { npc_reset(mapObject, sprite); FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); - sprite->data1 = 1; + sprite->data[1] = 1; return 1; } @@ -4547,7 +4547,7 @@ u8 sub_805E2E8(struct MapObject *mapObject, struct Sprite *sprite) if (FieldObjectExecRegularAnim(mapObject, sprite)) { sub_8064820(sprite, 0x30); - sprite->data1 = 2; + sprite->data[1] = 2; } return 0; } @@ -4556,7 +4556,7 @@ u8 sub_805E30C(struct MapObject *mapObject, struct Sprite *sprite) { if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) { - sprite->data1 = 3; + sprite->data[1] = 3; } return 0; } @@ -4572,7 +4572,7 @@ u8 sub_805E338(struct MapObject *mapObject, struct Sprite *sprite) direction = directions[mapObject->mapobj_unk_18]; } FieldObjectSetDirection(mapObject, direction); - sprite->data1 = 0; + sprite->data[1] = 0; return 1; } @@ -4581,7 +4581,7 @@ fieldmap_object_cb(sub_805E37C, sub_805E3A0, gUnknown_083753FC); u8 sub_805E3C0(struct MapObject *mapObject, struct Sprite *sprite) { npc_reset(mapObject, sprite); - sprite->data1 = 1; + sprite->data[1] = 1; return 1; } @@ -4594,7 +4594,7 @@ u8 sub_805E3D4(struct MapObject *mapObject, struct Sprite *sprite) direction = GetOppositeDirection(direction); } FieldObjectSetDirection(mapObject, direction); - sprite->data1 = 2; + sprite->data[1] = 2; return 1; } @@ -4622,7 +4622,7 @@ u8 sub_805E40C(struct MapObject *mapObject, struct Sprite *sprite) } FieldObjectSetRegularAnim(mapObject, sprite, goSpeed0AnimId); mapObject->mapobj_bit_1 = 1; - sprite->data1 = 3; + sprite->data[1] = 3; return 1; } @@ -4631,7 +4631,7 @@ u8 sub_805E4C4(struct MapObject *mapObject, struct Sprite *sprite) if (FieldObjectExecRegularAnim(mapObject, sprite)) { mapObject->mapobj_bit_1 = 0; - sprite->data1 = 1; + sprite->data[1] = 1; } return 0; } @@ -4639,7 +4639,7 @@ u8 sub_805E4C4(struct MapObject *mapObject, struct Sprite *sprite) u8 sub_805E4EC(struct MapObject *mapObject, struct Sprite *sprite) { npc_reset(mapObject, sprite); - sprite->data1 = 1; + sprite->data[1] = 1; return 1; } @@ -4667,7 +4667,7 @@ u8 MoveFieldObjectInNextDirectionInSequence(struct MapObject *mapObject, struct } FieldObjectSetRegularAnim(mapObject, sprite, goSpeed0AnimId); mapObject->mapobj_bit_1 = 1; - sprite->data1 = 2; + sprite->data[1] = 2; return 1; } @@ -4676,7 +4676,7 @@ u8 sub_805E5B4(struct MapObject *mapObject, struct Sprite *sprite) if (FieldObjectExecRegularAnim(mapObject, sprite)) { mapObject->mapobj_bit_1 = 0; - sprite->data1 = 1; + sprite->data[1] = 1; } return 0; } @@ -5004,7 +5004,7 @@ u8 mss_npc_reset_oampriv3_1_unk2_unk3(struct MapObject *mapObject, struct Sprite { mapObject->mapobj_unk_21 = player_get_direction_lower_nybble(); } - sprite->data1 = 1; + sprite->data[1] = 1; return 1; } @@ -5022,7 +5022,7 @@ u8 sub_805F3C4(struct MapObject *mapObject, struct Sprite *sprite) if (FieldObjectExecRegularAnim(mapObject, sprite)) { mapObject->mapobj_bit_1 = 0; - sprite->data1 = 1; + sprite->data[1] = 1; } return 0; } @@ -5036,7 +5036,7 @@ bool8 sub_805F3F0(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, boo { FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, a2))); mapObject->mapobj_bit_1 = 1; - sprite->data1 = 2; + sprite->data[1] = 2; return 1; } @@ -5055,7 +5055,7 @@ bool8 sub_805F438(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, boo FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction)); } mapObject->mapobj_bit_1 = 1; - sprite->data1 = 2; + sprite->data[1] = 2; return 1; } @@ -5074,7 +5074,7 @@ bool8 sub_805F4F0(struct MapObject *mapObject, struct Sprite *sprite, u8 playerD FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction)); } mapObject->mapobj_bit_1 = TRUE; - sprite->data1 = 2; + sprite->data[1] = 2; return TRUE; } @@ -5093,7 +5093,7 @@ bool8 sub_805F5A8(struct MapObject *mapObject, struct Sprite *sprite, u8 playerD FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction)); } mapObject->mapobj_bit_1 = TRUE; - sprite->data1 = 2; + sprite->data[1] = 2; return TRUE; } @@ -5112,7 +5112,7 @@ bool8 sub_805F660(struct MapObject *mapObject, struct Sprite *sprite, u8 playerD FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction)); } mapObject->mapobj_bit_1 = TRUE; - sprite->data1 = 2; + sprite->data[1] = 2; return TRUE; } @@ -5124,7 +5124,7 @@ bool8 cph_IM_DIFFERENT(struct MapObject *mapObject, struct Sprite *sprite, u8 pl direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, direction); FieldObjectSetRegularAnim(mapObject, sprite, sub_806084C(direction)); mapObject->mapobj_bit_1 = TRUE; - sprite->data1 = 2; + sprite->data[1] = 2; return TRUE; } @@ -5143,7 +5143,7 @@ bool8 sub_805F760(struct MapObject *mapObject, struct Sprite *sprite, u8 playerD FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction)); } mapObject->mapobj_bit_1 = TRUE; - sprite->data1 = 2; + sprite->data[1] = 2; return TRUE; } @@ -5164,7 +5164,7 @@ bool8 oac_hopping(struct MapObject *mapObject, struct Sprite *sprite, u8 playerD FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction)); } mapObject->mapobj_bit_1 = TRUE; - sprite->data1 = 2; + sprite->data[1] = 2; return TRUE; } @@ -5184,15 +5184,15 @@ u8 sub_805F9F8(struct MapObject *, struct Sprite *); void FieldObjectCB_TreeDisguise(struct Sprite *sprite) { struct MapObject *mapObject; - mapObject = &gMapObjects[sprite->data0]; - if (mapObject->mapobj_unk_21 == 0 || (mapObject->mapobj_unk_21 == 1 && sprite->data7 == 0)) + mapObject = &gMapObjects[sprite->data[0]]; + if (mapObject->mapobj_unk_21 == 0 || (mapObject->mapobj_unk_21 == 1 && sprite->data[7] == 0)) { FieldObjectGetLocalIdAndMap(mapObject, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]); mapObject->mapobj_unk_1A = FieldEffectStart(FLDEFF_TREE_DISGUISE); mapObject->mapobj_unk_21 = 1; - sprite->data7 ++; + sprite->data[7] ++; } - meta_step(&gMapObjects[sprite->data0], sprite, sub_805F9F8); + meta_step(&gMapObjects[sprite->data[0]], sprite, sub_805F9F8); } u8 sub_805F9F8(struct MapObject *mapObject, struct Sprite *sprite) @@ -5204,34 +5204,34 @@ u8 sub_805F9F8(struct MapObject *mapObject, struct Sprite *sprite) void FieldObjectCB_MountainDisguise(struct Sprite *sprite) { struct MapObject *mapObject; - mapObject = &gMapObjects[sprite->data0]; - if (mapObject->mapobj_unk_21 == 0 || (mapObject->mapobj_unk_21 == 1 && sprite->data7 == 0)) + mapObject = &gMapObjects[sprite->data[0]]; + if (mapObject->mapobj_unk_21 == 0 || (mapObject->mapobj_unk_21 == 1 && sprite->data[7] == 0)) { FieldObjectGetLocalIdAndMap(mapObject, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]); mapObject->mapobj_unk_1A = FieldEffectStart(FLDEFF_MOUNTAIN_DISGUISE); mapObject->mapobj_unk_21 = 1; - sprite->data7 ++; + sprite->data[7] ++; } - meta_step(&gMapObjects[sprite->data0], sprite, sub_805F9F8); + meta_step(&gMapObjects[sprite->data[0]], sprite, sub_805F9F8); } u8 sub_805FAD8(struct MapObject *mapObject, struct Sprite *sprite); void FieldObjectCB_Hidden1(struct Sprite *sprite) { - if (sprite->data7 == 0) + if (sprite->data[7] == 0) { - gMapObjects[sprite->data0].mapobj_bit_26 = 1; + gMapObjects[sprite->data[0]].mapobj_bit_26 = 1; sprite->subspriteMode = 2; sprite->oam.priority = 3; - sprite->data7 ++; + sprite->data[7] ++; } - meta_step(&gMapObjects[sprite->data0], sprite, sub_805FAD8); + meta_step(&gMapObjects[sprite->data[0]], sprite, sub_805FAD8); } u8 sub_805FAD8(struct MapObject *mapObject, struct Sprite *sprite) { - return gUnknown_083755CC[sprite->data1](mapObject, sprite); + return gUnknown_083755CC[sprite->data[1]](mapObject, sprite); } u8 sub_805FAF8(struct MapObject *mapObject, struct Sprite *sprite) @@ -5244,7 +5244,7 @@ u8 sub_805FB04(struct MapObject *mapObject, struct Sprite *sprite) { if (FieldObjectExecRegularAnim(mapObject, sprite)) { - sprite->data1 = 0; + sprite->data[1] = 0; } return 0; } @@ -5255,7 +5255,7 @@ u8 sub_805FB64(struct MapObject *mapObject, struct Sprite *sprite) { npc_reset(mapObject, sprite); FieldObjectSetRegularAnim(mapObject, sprite, GetStepInPlaceDelay16AnimId(mapObject->mapobj_unk_18)); - sprite->data1 = 1; + sprite->data[1] = 1; return 1; } @@ -5265,7 +5265,7 @@ u8 sub_805FBD4(struct MapObject *mapObject, struct Sprite *sprite) { npc_reset(mapObject, sprite); FieldObjectSetRegularAnim(mapObject, sprite, GetStepInPlaceDelay8AnimId(mapObject->mapobj_unk_18)); - sprite->data1 = 1; + sprite->data[1] = 1; return 1; } @@ -5275,7 +5275,7 @@ u8 sub_805FC44(struct MapObject *mapObject, struct Sprite *sprite) { npc_reset(mapObject, sprite); FieldObjectSetRegularAnim(mapObject, sprite, GetStepInPlaceDelay4AnimId(mapObject->mapobj_unk_18)); - sprite->data1 = 1; + sprite->data[1] = 1; return 1; } @@ -5286,7 +5286,7 @@ u8 sub_805FCB4(struct MapObject *mapObject, struct Sprite *sprite) npc_reset(mapObject, sprite); FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); mapObject->mapobj_bit_13 = 1; - sprite->data1 = 1; + sprite->data[1] = 1; return 1; } @@ -5294,7 +5294,7 @@ u8 sub_805FCE8(struct MapObject *mapObject, struct Sprite *sprite) { if (FieldObjectExecRegularAnim(mapObject, sprite)) { - sprite->data1 = 2; + sprite->data[1] = 2; return 1; } return 0; @@ -5314,7 +5314,7 @@ void npc_reset(struct MapObject *mapObject, struct Sprite *sprite) mapObject->mapobj_bit_6 = 0; mapObject->mapobj_bit_7 = 0; mapObject->mapobj_unk_1C = 0xff; - sprite->data1 = 0; + sprite->data[1] = 0; } u8 FieldObjectDirectionToImageAnimId(u8 direction) @@ -5446,7 +5446,7 @@ void npc_set_running_behaviour_etc(struct MapObject *mapObject, u8 animPattern) mapObject->mapobj_unk_21 = 0; mapObject->animId = 0; gSprites[mapObject->spriteId].callback = gUnknown_0836DA88[animPattern]; - gSprites[mapObject->spriteId].data1 = 0; + gSprites[mapObject->spriteId].data[1] = 0; } u8 npc_running_behaviour_by_direction(u8 direction) @@ -5555,7 +5555,7 @@ bool8 IsBerryTreeSparkling(u8 localId, u8 mapNum, u8 mapGroup) u8 mapObjectId; if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId)) - if (gSprites[gMapObjects[mapObjectId].spriteId].data7 & 2) + if (gSprites[gMapObjects[mapObjectId].spriteId].data[7] & 2) return TRUE; return FALSE; @@ -5566,7 +5566,7 @@ void sub_8060288(u8 localId, u8 mapNum, u8 mapGroup) u8 mapObjectId; if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId)) { - gSprites[gMapObjects[mapObjectId].spriteId].data7 |= 4; + gSprites[gMapObjects[mapObjectId].spriteId].data[7] |= 4; } } @@ -5704,7 +5704,7 @@ bool8 FieldObjectSetSpecialAnim(struct MapObject *mapObject, u8 specialAnimId) mapObject->mapobj_unk_1C = specialAnimId; mapObject->mapobj_bit_6 = 1; mapObject->mapobj_bit_7 = 0; - gSprites[mapObject->spriteId].data2 = 0; + gSprites[mapObject->spriteId].data[2] = 0; return FALSE; } @@ -5727,8 +5727,8 @@ void FieldObjectClearAnim(struct MapObject *mapObject) mapObject->mapobj_unk_1C = 0xFF; mapObject->mapobj_bit_6 = 0; mapObject->mapobj_bit_7 = 0; - gSprites[mapObject->spriteId].data1 = 0; - gSprites[mapObject->spriteId].data2 = 0; + gSprites[mapObject->spriteId].data[1] = 0; + gSprites[mapObject->spriteId].data[2] = 0; } bool8 FieldObjectCheckIfSpecialAnimFinishedOrInactive(struct MapObject *mapObject) @@ -5962,7 +5962,7 @@ u32 state_to_direction(u8 a0, u32 a1, u32 a2) void FieldObjectExecSpecialAnim(struct MapObject *mapObject, struct Sprite *sprite) { - if (gUnknown_08375778[mapObject->mapobj_unk_1C][sprite->data2](mapObject, sprite)) + if (gUnknown_08375778[mapObject->mapobj_unk_1C][sprite->data[2]](mapObject, sprite)) { mapObject->mapobj_bit_7 = 1; } @@ -5970,10 +5970,10 @@ void FieldObjectExecSpecialAnim(struct MapObject *mapObject, struct Sprite *spri bool8 FieldObjectExecRegularAnim(struct MapObject *mapObject, struct Sprite *sprite) { - if (gUnknown_08375778[mapObject->mapobj_unk_1C][sprite->data2](mapObject, sprite)) + if (gUnknown_08375778[mapObject->mapobj_unk_1C][sprite->data[2]](mapObject, sprite)) { mapObject->mapobj_unk_1C = 0xFF; - sprite->data2 = 0; + sprite->data[2] = 0; return 1; } return 0; @@ -5982,7 +5982,7 @@ bool8 FieldObjectExecRegularAnim(struct MapObject *mapObject, struct Sprite *spr void FieldObjectSetRegularAnim(struct MapObject *mapObject, struct Sprite *sprite, u8 animId) { mapObject->mapobj_unk_1C = animId; - sprite->data2 = 0; + sprite->data[2] = 0; } void an_look_any(struct MapObject *mapObject, struct Sprite *sprite, u8 direction) @@ -5991,7 +5991,7 @@ void an_look_any(struct MapObject *mapObject, struct Sprite *sprite, u8 directio npc_coords_shift_still(mapObject); sub_805FE64(mapObject, sprite, get_go_image_anim_num(mapObject->mapobj_unk_18)); sprite->animPaused = 1; - sprite->data2 = 1; + sprite->data[2] = 1; } u8 sub_8060CE0(struct MapObject *mapObject, struct Sprite *sprite) @@ -6030,7 +6030,7 @@ void sub_8060D20(struct MapObject *mapObject, struct Sprite *sprite, u8 directio oamt_npc_ministep_reset(sprite, direction, a3); sprite->animPaused = 0; mapObject->mapobj_bit_2 = 1; - sprite->data2 = 1; + sprite->data[2] = 1; } extern u8 (*const gUnknown_083759C0[5])(u8); @@ -6075,7 +6075,7 @@ void sub_8060E68(struct MapObject *mapObject, struct Sprite *sprite, u8 directio sub_806467C(sprite, direction); sprite->animPaused = 0; mapObject->mapobj_bit_2 = 1; - sprite->data2 = 1; + sprite->data[2] = 1; } void sub_8060ED8(struct MapObject *mapObject, struct Sprite *sprite, u8 direction) @@ -6108,7 +6108,7 @@ bool8 sub_8060F5C(struct MapObject *mapObject, struct Sprite *sprite) { if (an_walk_any_2(mapObject, sprite)) { - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -6126,7 +6126,7 @@ bool8 sub_8060F9C(struct MapObject *mapObject, struct Sprite *sprite) { if (an_walk_any_2(mapObject, sprite)) { - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -6144,7 +6144,7 @@ bool8 sub_8060FDC(struct MapObject *mapObject, struct Sprite *sprite) { if (an_walk_any_2(mapObject, sprite)) { - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -6162,7 +6162,7 @@ bool8 sub_806101C(struct MapObject *mapObject, struct Sprite *sprite) { if (an_walk_any_2(mapObject, sprite)) { - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -6180,7 +6180,7 @@ bool8 sub_806105C(struct MapObject *mapObject, struct Sprite *sprite) { if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) { - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -6198,7 +6198,7 @@ bool8 sub_806109C(struct MapObject *mapObject, struct Sprite *sprite) { if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) { - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -6216,7 +6216,7 @@ bool8 sub_80610DC(struct MapObject *mapObject, struct Sprite *sprite) { if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) { - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -6234,7 +6234,7 @@ bool8 sub_806111C(struct MapObject *mapObject, struct Sprite *sprite) { if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) { - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -6252,7 +6252,7 @@ void sub_806113C(struct MapObject *mapObject, struct Sprite *sprite, u8 directio sub_8060320(direction, &x, &y, vSPp4[a4], vSPp4[a4]); npc_coords_shift(mapObject, mapObject->coords2.x + x, mapObject->coords2.y + y); sub_80646E4(sprite, direction, a4, a5); - sprite->data2 = 1; + sprite->data[2] = 1; sprite->animPaused = 0; mapObject->mapobj_bit_2 = 1; mapObject->mapobj_bit_4 = 1; @@ -6273,11 +6273,11 @@ u8 sub_806123C(struct MapObject *mapObject, struct Sprite *sprite, u8 (*const ca u8 retval; memcpy(vSPp4, gUnknown_08375A3A, sizeof gUnknown_08375A3A); retval = callback(sprite); - if (retval == 1 && vSPp4[sprite->data4] != 0) + if (retval == 1 && vSPp4[sprite->data[4]] != 0) { x = 0; y = 0; - sub_8060320(mapObject->placeholder18, &x, &y, vSPp4[sprite->data4], vSPp4[sprite->data4]); + sub_8060320(mapObject->placeholder18, &x, &y, vSPp4[sprite->data[4]], vSPp4[sprite->data[4]]); npc_coords_shift(mapObject, mapObject->coords2.x + x, mapObject->coords2.y + y); mapObject->mapobj_bit_2 = 1; mapObject->mapobj_bit_4 = 1; @@ -6353,7 +6353,7 @@ bool8 sub_80613D4(struct MapObject *mapObject, struct Sprite *sprite) if (sub_8061328(mapObject, sprite)) { mapObject->mapobj_bit_22 = 0; - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -6370,7 +6370,7 @@ bool8 sub_806142C(struct MapObject *mapObject, struct Sprite *sprite) if (sub_8061328(mapObject, sprite)) { mapObject->mapobj_bit_22 = 0; - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -6387,7 +6387,7 @@ bool8 sub_8061484(struct MapObject *mapObject, struct Sprite *sprite) if (sub_8061328(mapObject, sprite)) { mapObject->mapobj_bit_22 = 0; - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -6404,7 +6404,7 @@ bool8 sub_80614DC(struct MapObject *mapObject, struct Sprite *sprite) if (sub_8061328(mapObject, sprite)) { mapObject->mapobj_bit_22 = 0; - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -6412,16 +6412,16 @@ bool8 sub_80614DC(struct MapObject *mapObject, struct Sprite *sprite) void sub_8061508(struct Sprite *sprite, u16 duration) { - sprite->data2 = 1; - sprite->data3 = duration; + sprite->data[2] = 1; + sprite->data[3] = duration; } bool8 sub_8061510(struct MapObject *mapObject, struct Sprite *sprite) { - sprite->data3--; - if (!sprite->data3) + sprite->data[3]--; + if (!sprite->data[3]) { - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -6472,7 +6472,7 @@ bool8 sub_80615EC(struct MapObject *mapObject, struct Sprite *sprite) { if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) { - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -6487,7 +6487,7 @@ bool8 sub_806162C(struct MapObject *mapObject, struct Sprite *sprite) { if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) { - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -6502,7 +6502,7 @@ bool8 sub_806166C(struct MapObject *mapObject, struct Sprite *sprite) { if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) { - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -6517,7 +6517,7 @@ bool8 sub_80616AC(struct MapObject *mapObject, struct Sprite *sprite) { if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) { - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -6528,16 +6528,16 @@ void sub_80616CC(struct MapObject *mapObject, struct Sprite *sprite, u8 directio FieldObjectSetDirection(mapObject, direction); sub_805FE28(mapObject, sprite, animId); sprite->animPaused = 0; - sprite->data2 = 1; - sprite->data3 = duration; + sprite->data[2] = 1; + sprite->data[3] = duration; } bool8 sub_8061714(struct MapObject *mapObject, struct Sprite *sprite) { - sprite->data3--; - if (sprite->data3 == 0) + sprite->data[3]--; + if (sprite->data[3] == 0) { - sprite->data2 = 2; + sprite->data[2] = 2; sprite->animPaused = 1; return TRUE; } @@ -6546,7 +6546,7 @@ bool8 sub_8061714(struct MapObject *mapObject, struct Sprite *sprite) bool8 sub_806173C(struct MapObject *mapObject, struct Sprite *sprite) { - if (sprite->data3 & 1) + if (sprite->data[3] & 1) { sprite->animDelayCounter++; } @@ -6661,7 +6661,7 @@ bool8 sub_8061B18(struct MapObject *mapObject, struct Sprite *sprite) { if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) { - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -6680,7 +6680,7 @@ bool8 sub_8061B58(struct MapObject *mapObject, struct Sprite *sprite) { if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) { - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -6699,7 +6699,7 @@ bool8 sub_8061B98(struct MapObject *mapObject, struct Sprite *sprite) { if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) { - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -6718,7 +6718,7 @@ bool8 sub_8061BD8(struct MapObject *mapObject, struct Sprite *sprite) { if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) { - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -6736,7 +6736,7 @@ bool8 sub_8061C18(struct MapObject *mapObject, struct Sprite *sprite) { if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) { - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -6754,7 +6754,7 @@ bool8 sub_8061C58(struct MapObject *mapObject, struct Sprite *sprite) { if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) { - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -6773,7 +6773,7 @@ bool8 sub_8061C98(struct MapObject *mapObject, struct Sprite *sprite) { if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) { - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -6792,7 +6792,7 @@ bool8 sub_8061CD8(struct MapObject *mapObject, struct Sprite *sprite) { if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) { - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -6810,7 +6810,7 @@ bool8 sub_8061D18(struct MapObject *mapObject, struct Sprite *sprite) { if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) { - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -6828,7 +6828,7 @@ bool8 sub_8061D58(struct MapObject *mapObject, struct Sprite *sprite) { if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) { - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -6847,7 +6847,7 @@ bool8 sub_8061D98(struct MapObject *mapObject, struct Sprite *sprite) { if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) { - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -6866,7 +6866,7 @@ bool8 sub_8061DD8(struct MapObject *mapObject, struct Sprite *sprite) { if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) { - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -6884,7 +6884,7 @@ bool8 sub_8061E18(struct MapObject *mapObject, struct Sprite *sprite) { if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) { - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -6902,7 +6902,7 @@ bool8 sub_8061E58(struct MapObject *mapObject, struct Sprite *sprite) { if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) { - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -6920,7 +6920,7 @@ bool8 sub_8061E98(struct MapObject *mapObject, struct Sprite *sprite) { if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) { - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -6938,7 +6938,7 @@ bool8 sub_8061ED8(struct MapObject *mapObject, struct Sprite *sprite) { if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) { - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -6948,7 +6948,7 @@ void npc_set_direction_and_anim__an_proceed(struct MapObject *mapObject, struct { obj_anim_image_set_and_seek(sprite, animNum, 0); FieldObjectSetDirection(mapObject, direction); - sprite->data2 = 1; + sprite->data[2] = 1; } bool8 sub_8061F24(struct MapObject *mapObject, struct Sprite *sprite) @@ -6963,7 +6963,7 @@ bool8 sub_8061F3C(struct MapObject *mapObject, struct Sprite *sprite) { if (sub_8064864(sprite)) { - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -6987,7 +6987,7 @@ bool8 sub_8061FB0(struct MapObject *mapObject, struct Sprite *sprite) { if (sub_8061340(mapObject, sprite)) { - sprite->data2 = 2; + sprite->data[2] = 2; mapObject->mapobj_bit_5 = 0; return TRUE; } @@ -7006,7 +7006,7 @@ bool8 sub_8061FF8(struct MapObject *mapObject, struct Sprite *sprite) { if (sub_8061340(mapObject, sprite)) { - sprite->data2 = 2; + sprite->data[2] = 2; mapObject->mapobj_bit_5 = 0; return TRUE; } @@ -7025,7 +7025,7 @@ bool8 sub_8062040(struct MapObject *mapObject, struct Sprite *sprite) { if (sub_8061340(mapObject, sprite)) { - sprite->data2 = 2; + sprite->data[2] = 2; mapObject->mapobj_bit_5 = 0; return TRUE; } @@ -7044,7 +7044,7 @@ bool8 sub_8062088(struct MapObject *mapObject, struct Sprite *sprite) { if (sub_8061340(mapObject, sprite)) { - sprite->data2 = 2; + sprite->data[2] = 2; mapObject->mapobj_bit_5 = 0; return TRUE; } @@ -7058,7 +7058,7 @@ bool8 sub_80620B0(struct MapObject *mapObject, struct Sprite *sprite) { an_look_any(mapObject, sprite, sub_805FE90(mapObject->coords2.x, mapObject->coords2.y, gMapObjects[objectId].coords2.x, gMapObjects[objectId].coords2.y)); } - sprite->data2 = 1; + sprite->data[2] = 1; return TRUE; } @@ -7069,21 +7069,21 @@ bool8 sub_806210C(struct MapObject *mapObject, struct Sprite *sprite) { an_look_any(mapObject, sprite, GetOppositeDirection(sub_805FE90(mapObject->coords2.x, mapObject->coords2.y, gMapObjects[objectId].coords2.x, gMapObjects[objectId].coords2.y))); } - sprite->data2 = 1; + sprite->data[2] = 1; return TRUE; } bool8 sub_8062170(struct MapObject *mapObject, struct Sprite *sprite) { mapObject->mapobj_bit_9 = 1; - sprite->data2 = 1; + sprite->data[2] = 1; return TRUE; } bool8 sub_8062180(struct MapObject *mapObject, struct Sprite *sprite) { mapObject->mapobj_bit_9 = 0; - sprite->data2 = 1; + sprite->data[2] = 1; return TRUE; } @@ -7100,7 +7100,7 @@ bool8 sub_80621BC(struct MapObject *mapObject, struct Sprite *sprite) if (sub_8061328(mapObject, sprite)) { mapObject->mapobj_bit_22 = 0; - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -7119,7 +7119,7 @@ bool8 sub_8062214(struct MapObject *mapObject, struct Sprite *sprite) if (sub_8061328(mapObject, sprite)) { mapObject->mapobj_bit_22 = 0; - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -7138,7 +7138,7 @@ bool8 sub_806226C(struct MapObject *mapObject, struct Sprite *sprite) if (sub_8061328(mapObject, sprite)) { mapObject->mapobj_bit_22 = 0; - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -7157,7 +7157,7 @@ bool8 sub_80622C4(struct MapObject *mapObject, struct Sprite *sprite) if (sub_8061328(mapObject, sprite)) { mapObject->mapobj_bit_22 = 0; - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -7176,7 +7176,7 @@ bool8 sub_806231C(struct MapObject *mapObject, struct Sprite *sprite) if (sub_8061328(mapObject, sprite)) { mapObject->mapobj_bit_22 = 0; - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -7195,7 +7195,7 @@ bool8 sub_8062374(struct MapObject *mapObject, struct Sprite *sprite) if (sub_8061328(mapObject, sprite)) { mapObject->mapobj_bit_22 = 0; - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -7214,7 +7214,7 @@ bool8 sub_80623CC(struct MapObject *mapObject, struct Sprite *sprite) if (sub_8061328(mapObject, sprite)) { mapObject->mapobj_bit_22 = 0; - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -7233,7 +7233,7 @@ bool8 sub_8062424(struct MapObject *mapObject, struct Sprite *sprite) if (sub_8061328(mapObject, sprite)) { mapObject->mapobj_bit_22 = 0; - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -7252,7 +7252,7 @@ bool8 sub_806247C(struct MapObject *mapObject, struct Sprite *sprite) if (sub_8061358(mapObject, sprite)) { mapObject->mapobj_bit_22 = 0; - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -7271,7 +7271,7 @@ bool8 sub_80624D4(struct MapObject *mapObject, struct Sprite *sprite) if (sub_8061358(mapObject, sprite)) { mapObject->mapobj_bit_22 = 0; - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -7290,7 +7290,7 @@ bool8 sub_806252C(struct MapObject *mapObject, struct Sprite *sprite) if (sub_8061358(mapObject, sprite)) { mapObject->mapobj_bit_22 = 0; - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -7309,7 +7309,7 @@ bool8 sub_8062584(struct MapObject *mapObject, struct Sprite *sprite) if (sub_8061358(mapObject, sprite)) { mapObject->mapobj_bit_22 = 0; - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -7330,42 +7330,42 @@ bool8 sub_80625C8(struct MapObject *mapObject, struct Sprite *sprite) bool8 sub_80625D8(struct MapObject *mapObject, struct Sprite *sprite) { mapObject->mapobj_bit_25 = 0; - sprite->data2 = 1; + sprite->data[2] = 1; return TRUE; } bool8 sub_80625E8(struct MapObject *mapObject, struct Sprite *sprite) { mapObject->mapobj_bit_25 = 1; - sprite->data2 = 1; + sprite->data[2] = 1; return TRUE; } bool8 sub_80625F8(struct MapObject *mapObject, struct Sprite *sprite) { mapObject->mapobj_bit_12 = 1; - sprite->data2 = 1; + sprite->data[2] = 1; return TRUE; } bool8 sub_8062608(struct MapObject *mapObject, struct Sprite *sprite) { mapObject->mapobj_bit_12 = GetFieldObjectGraphicsInfo(mapObject->graphicsId)->inanimate; - sprite->data2 = 1; + sprite->data[2] = 1; return TRUE; } bool8 sub_8062634(struct MapObject *mapObject, struct Sprite *sprite) { mapObject->mapobj_bit_13 = 1; - sprite->data2 = 1; + sprite->data[2] = 1; return TRUE; } bool8 sub_8062644(struct MapObject *mapObject, struct Sprite *sprite) { mapObject->mapobj_bit_13 = 0; - sprite->data2 = 1; + sprite->data[2] = 1; return TRUE; } @@ -7373,7 +7373,7 @@ bool8 do_exclamation_mark_bubble_1(struct MapObject *mapObject, struct Sprite *s { FieldObjectGetLocalIdAndMap(mapObject, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]); FieldEffectStart(FLDEFF_EXCLAMATION_MARK_ICON_1); - sprite->data2 = 1; + sprite->data[2] = 1; return TRUE; } @@ -7381,7 +7381,7 @@ bool8 do_exclamation_mark_bubble_2(struct MapObject *mapObject, struct Sprite *s { FieldObjectGetLocalIdAndMap(mapObject, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]); FieldEffectStart(FLDEFF_EXCLAMATION_MARK_ICON_2); - sprite->data2 = 1; + sprite->data[2] = 1; return TRUE; } @@ -7389,7 +7389,7 @@ bool8 do_heart_bubble(struct MapObject *mapObject, struct Sprite *sprite) { FieldObjectGetLocalIdAndMap(mapObject, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]); FieldEffectStart(FLDEFF_HEART_ICON); - sprite->data2 = 1; + sprite->data[2] = 1; return TRUE; } @@ -7404,13 +7404,13 @@ bool8 sub_80626C0(struct MapObject *mapObject, struct Sprite *sprite) } else if (mapObject->animPattern != 0x39 && mapObject->animPattern != 0x3A) { - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } else { sub_812869C(mapObject); - sprite->data2 = 1; + sprite->data[2] = 1; return sub_8062704(mapObject, sprite); } } @@ -7419,7 +7419,7 @@ bool8 sub_8062704(struct MapObject *mapObject, struct Sprite *sprite) { if (sub_81286C4(mapObject)) { - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -7428,7 +7428,7 @@ bool8 sub_8062704(struct MapObject *mapObject, struct Sprite *sprite) bool8 sub_8062724(struct MapObject *mapObject, struct Sprite *sprite) { obj_anim_image_set_and_seek(sprite, 1, 0); - sprite->data2 = 1; + sprite->data[2] = 1; return FALSE; } @@ -7437,7 +7437,7 @@ bool8 sub_8062740(struct MapObject *mapObject, struct Sprite *sprite) if (sub_8064864(sprite)) { sub_8064820(sprite, 0x20); - sprite->data2 = 2; + sprite->data[2] = 2; } return FALSE; } @@ -7448,7 +7448,7 @@ bool8 sub_8062764(struct MapObject *mapObject, struct Sprite *sprite) if (sub_8064824(sprite)) { mapObject->mapobj_bit_13 = 1; - sprite->data2 = 3; + sprite->data[2] = 3; } return FALSE; } @@ -7456,7 +7456,7 @@ bool8 sub_8062764(struct MapObject *mapObject, struct Sprite *sprite) bool8 sub_80627A0(struct MapObject *mapObject, struct Sprite *sprite) { obj_anim_image_set_and_seek(sprite, 1, 0); - sprite->data2 = 1; + sprite->data[2] = 1; return FALSE; } @@ -7465,7 +7465,7 @@ bool8 sub_80627BC(struct MapObject *mapObject, struct Sprite *sprite) if (sub_8064864(sprite)) { sub_8064820(sprite, 0x20); - sprite->data2 = 2; + sprite->data[2] = 2; } return FALSE; } @@ -7476,7 +7476,7 @@ bool8 sub_80627E0(struct MapObject *mapObject, struct Sprite *sprite) if (sub_8064824(sprite)) { mapObject->mapobj_bit_13 = 1; - sprite->data2 = 3; + sprite->data[2] = 3; } return FALSE; } @@ -7484,14 +7484,14 @@ bool8 sub_80627E0(struct MapObject *mapObject, struct Sprite *sprite) bool8 sub_806281C(struct MapObject *mapObject, struct Sprite *sprite) { mapObject->mapobj_bit_26 = 1; - sprite->data2 = 1; + sprite->data[2] = 1; return TRUE; } bool8 sub_806282C(struct MapObject *mapObject, struct Sprite *sprite) { mapObject->mapobj_bit_26 = 0; - sprite->data2 = 1; + sprite->data[2] = 1; return TRUE; } @@ -7527,7 +7527,7 @@ bool8 sub_80628D0(struct MapObject *mapObject, struct Sprite *sprite) if (an_walk_any_2(mapObject, sprite)) { sprite->affineAnimPaused = 1; - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -7548,7 +7548,7 @@ bool8 sub_8062930(struct MapObject *mapObject, struct Sprite *sprite) if (an_walk_any_2(mapObject, sprite)) { sprite->affineAnimPaused = 1; - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -7560,7 +7560,7 @@ void sub_806295C(struct MapObject *mapObject, struct Sprite *sprite, u8 directio npc_coords_shift_still(mapObject); sub_805FE64(mapObject, sprite, sub_805FDD8(direction)); sprite->animPaused = 1; - sprite->data2 = 1; + sprite->data[2] = 1; } bool8 sub_806299C(struct MapObject *mapObject, struct Sprite *sprite) @@ -7679,7 +7679,7 @@ bool8 sub_8062BFC(struct MapObject *mapObject, struct Sprite *sprite) if (sub_8061328(mapObject, sprite)) { mapObject->mapobj_bit_22 = 0; - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -7698,7 +7698,7 @@ bool8 sub_8062C54(struct MapObject *mapObject, struct Sprite *sprite) if (sub_8061328(mapObject, sprite)) { mapObject->mapobj_bit_22 = 0; - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -7717,7 +7717,7 @@ bool8 sub_8062CAC(struct MapObject *mapObject, struct Sprite *sprite) if (sub_8061328(mapObject, sprite)) { mapObject->mapobj_bit_22 = 0; - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -7736,7 +7736,7 @@ bool8 sub_8062D04(struct MapObject *mapObject, struct Sprite *sprite) if (sub_8061328(mapObject, sprite)) { mapObject->mapobj_bit_22 = 0; - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -7755,7 +7755,7 @@ bool8 sub_8062D5C(struct MapObject *mapObject, struct Sprite *sprite) if (sub_8061328(mapObject, sprite)) { mapObject->mapobj_bit_22 = 0; - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -7774,7 +7774,7 @@ bool8 sub_8062DB4(struct MapObject *mapObject, struct Sprite *sprite) if (sub_8061328(mapObject, sprite)) { mapObject->mapobj_bit_22 = 0; - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -7793,7 +7793,7 @@ bool8 sub_8062E0C(struct MapObject *mapObject, struct Sprite *sprite) if (sub_8061328(mapObject, sprite)) { mapObject->mapobj_bit_22 = 0; - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -7812,7 +7812,7 @@ bool8 sub_8062E64(struct MapObject *mapObject, struct Sprite *sprite) if (sub_8061328(mapObject, sprite)) { mapObject->mapobj_bit_22 = 0; - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -7831,7 +7831,7 @@ bool8 sub_8062EBC(struct MapObject *mapObject, struct Sprite *sprite) if (sub_8061328(mapObject, sprite)) { mapObject->mapobj_bit_22 = 0; - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -7850,7 +7850,7 @@ bool8 sub_8062F14(struct MapObject *mapObject, struct Sprite *sprite) if (sub_8061328(mapObject, sprite)) { mapObject->mapobj_bit_22 = 0; - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -7869,7 +7869,7 @@ bool8 sub_8062F6C(struct MapObject *mapObject, struct Sprite *sprite) if (sub_8061328(mapObject, sprite)) { mapObject->mapobj_bit_22 = 0; - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -7888,7 +7888,7 @@ bool8 sub_8062FC4(struct MapObject *mapObject, struct Sprite *sprite) if (sub_8061328(mapObject, sprite)) { mapObject->mapobj_bit_22 = 0; - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -7937,7 +7937,7 @@ bool8 sub_8063128(struct MapObject *mapObject, struct Sprite *sprite) { if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) { - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -7955,7 +7955,7 @@ bool8 sub_8063168(struct MapObject *mapObject, struct Sprite *sprite) { if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) { - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -7973,7 +7973,7 @@ bool8 sub_80631A8(struct MapObject *mapObject, struct Sprite *sprite) { if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) { - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -7991,7 +7991,7 @@ bool8 sub_80631E8(struct MapObject *mapObject, struct Sprite *sprite) { if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) { - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -8015,7 +8015,7 @@ bool8 sub_8063258(struct MapObject *mapObject, struct Sprite *sprite) { if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) { - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -8033,7 +8033,7 @@ bool8 sub_8063298(struct MapObject *mapObject, struct Sprite *sprite) { if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) { - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -8051,7 +8051,7 @@ bool8 sub_80632D8(struct MapObject *mapObject, struct Sprite *sprite) { if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) { - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -8069,7 +8069,7 @@ bool8 sub_8063318(struct MapObject *mapObject, struct Sprite *sprite) { if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) { - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -8094,7 +8094,7 @@ bool8 sub_8063390(struct MapObject *mapObject, struct Sprite *sprite) { if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) { - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -8112,7 +8112,7 @@ bool8 sub_80633D0(struct MapObject *mapObject, struct Sprite *sprite) { if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) { - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -8130,7 +8130,7 @@ bool8 sub_8063410(struct MapObject *mapObject, struct Sprite *sprite) { if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) { - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; @@ -8148,7 +8148,7 @@ bool8 sub_8063450(struct MapObject *mapObject, struct Sprite *sprite) { if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) { - sprite->data2 = 2; + sprite->data[2] = 2; return TRUE; } return FALSE; diff --git a/src/field/field_map_obj_helpers.c b/src/field/field_map_obj_helpers.c index 59e857aae..f1a113d44 100644 --- a/src/field/field_map_obj_helpers.c +++ b/src/field/field_map_obj_helpers.c @@ -98,21 +98,21 @@ void Step8(struct Sprite *sprite, u8 dir) void oamt_npc_ministep_reset(struct Sprite *sprite, u8 a2, u8 a3) { - sprite->data3 = a2; - sprite->data4 = a3; - sprite->data5 = 0; + sprite->data[3] = a2; + sprite->data[4] = a3; + sprite->data[5] = 0; } bool8 obj_npc_ministep(struct Sprite *sprite) { - if (sprite->data5 >= gUnknown_08376194[sprite->data4]) + if (sprite->data[5] >= gUnknown_08376194[sprite->data[4]]) return FALSE; - gUnknown_08376180[sprite->data4][sprite->data5](sprite, sprite->data3); + gUnknown_08376180[sprite->data[4]][sprite->data[5]](sprite, sprite->data[3]); - sprite->data5++; + sprite->data[5]++; - if (sprite->data5 < gUnknown_08376194[sprite->data4]) + if (sprite->data[5] < gUnknown_08376194[sprite->data[4]]) return FALSE; return TRUE; @@ -120,22 +120,22 @@ bool8 obj_npc_ministep(struct Sprite *sprite) void sub_806467C(struct Sprite *sprite, u8 a2) { - sprite->data3 = a2; - sprite->data4 = 0; - sprite->data5 = 0; + sprite->data[3] = a2; + sprite->data[4] = 0; + sprite->data[5] = 0; } bool8 sub_806468C(struct Sprite *sprite) { - if (!(sprite->data4 & 1)) + if (!(sprite->data[4] & 1)) { - Step1(sprite, sprite->data3); - sprite->data5++; + Step1(sprite, sprite->data[3]); + sprite->data[5]++; } - sprite->data4++; + sprite->data[4]++; - if (sprite->data5 > 15) + if (sprite->data[5] > 15) return TRUE; else return FALSE; @@ -148,10 +148,10 @@ s16 sub_80646C8(s16 a1, u8 a2) void sub_80646E4(struct Sprite *sprite, u8 a2, u8 a3, u8 a4) { - sprite->data3 = a2; - sprite->data4 = a3; - sprite->data5 = a4; - sprite->data6 = 0; + sprite->data[3] = a2; + sprite->data[4] = a3; + sprite->data[5] = a4; + sprite->data[6] = 0; } u8 sub_8064704(struct Sprite *sprite) @@ -165,17 +165,17 @@ u8 sub_8064704(struct Sprite *sprite) v2 = 0; - if (sprite->data4) - Step1(sprite, sprite->data3); + if (sprite->data[4]) + Step1(sprite, sprite->data[3]); - sprite->pos2.y = sub_80646C8(sprite->data6 >> v6[sprite->data4], sprite->data5); + sprite->pos2.y = sub_80646C8(sprite->data[6] >> v6[sprite->data[4]], sprite->data[5]); - sprite->data6++; + sprite->data[6]++; - if (sprite->data6 == (v5[sprite->data4] >> 1)) + if (sprite->data[6] == (v5[sprite->data[4]] >> 1)) v2 = 1; - if (sprite->data6 >= v5[sprite->data4]) + if (sprite->data[6] >= v5[sprite->data[4]]) { sprite->pos2.y = 0; v2 = -1; @@ -195,17 +195,17 @@ u8 sub_806478C(struct Sprite *sprite) v2 = 0; - if (sprite->data4 && !(sprite->data6 & 1)) - Step1(sprite, sprite->data3); + if (sprite->data[4] && !(sprite->data[6] & 1)) + Step1(sprite, sprite->data[3]); - sprite->pos2.y = sub_80646C8(sprite->data6 >> v6[sprite->data4], sprite->data5); + sprite->pos2.y = sub_80646C8(sprite->data[6] >> v6[sprite->data[4]], sprite->data[5]); - sprite->data6++; + sprite->data[6]++; - if (sprite->data6 == (v5[sprite->data4] >> 1)) + if (sprite->data[6] == (v5[sprite->data[4]] >> 1)) v2 = 1; - if (sprite->data6 >= v5[sprite->data4]) + if (sprite->data[6] >= v5[sprite->data[4]]) { sprite->pos2.y = 0; v2 = -1; @@ -216,14 +216,14 @@ u8 sub_806478C(struct Sprite *sprite) void sub_8064820(struct Sprite *sprite, u16 a2) { - sprite->data3 = a2; + sprite->data[3] = a2; } bool8 sub_8064824(struct Sprite *sprite) { - sprite->data3--; + sprite->data[3]--; - if (sprite->data3 == 0) + if (sprite->data[3] == 0) return TRUE; else return FALSE; @@ -273,7 +273,7 @@ void sub_806487C(struct Sprite *sprite, bool8 invisible) void sub_8064970(struct Sprite *sprite) { - SetObjectSubpriorityByZCoord(sprite->data1, sprite, 1); + SetObjectSubpriorityByZCoord(sprite->data[1], sprite, 1); sub_806487C(sprite, 0); } @@ -283,7 +283,7 @@ void sub_8064990(u8 a1, u8 dir) for (i = 0; i < MAX_SPRITES; i++) { struct Sprite *sprite = &gSprites[i]; - if (sprite->inUse && sprite->callback == sub_8064970 && (u8)sprite->data0 == a1) + if (sprite->inUse && sprite->callback == sub_8064970 && (u8)sprite->data[0] == a1) { u8 animNum = FieldObjectDirectionToImageAnimId(dir); StartSpriteAnim(sprite, animNum); diff --git a/src/field/field_tasks.c b/src/field/field_tasks.c index 767753da2..95b8b749b 100644 --- a/src/field/field_tasks.c +++ b/src/field/field_tasks.c @@ -197,7 +197,7 @@ const struct MetatileOffset *sub_80695E0(const struct MetatileOffset a0[][2], s8 void sub_8069638(const struct MetatileOffset offsets[][2], s16 x, s16 y, bool32 flag) { const struct MetatileOffset *offsetData = sub_80695E0(offsets, MapGridGetMetatileBehaviorAt(x, y)); - const struct MetatileOffset *offsetData2 = offsetData; + const struct MetatileOffset *offsetdata[2] = offsetData; if (offsetData != NULL) { MapGridSetMetatileIdAt(x + offsetData[0].x, y + offsetData[0].y, offsetData[0].tileId); @@ -205,10 +205,10 @@ void sub_8069638(const struct MetatileOffset offsets[][2], s16 x, s16 y, bool32 { CurrentMapDrawMetatileAt(x + offsetData[0].x, y + offsetData[0].y); } - MapGridSetMetatileIdAt(x + offsetData2[1].x, y + offsetData2[1].y, offsetData2[1].tileId); + MapGridSetMetatileIdAt(x + offsetdata[2][1].x, y + offsetdata[2][1].y, offsetdata[2][1].tileId); if (flag) { - CurrentMapDrawMetatileAt(x + offsetData2[1].x, y + offsetData2[1].y); + CurrentMapDrawMetatileAt(x + offsetdata[2][1].x, y + offsetdata[2][1].y); } } } diff --git a/src/field/field_weather.c b/src/field/field_weather.c index 042655644..acd8b81ff 100644 --- a/src/field/field_weather.c +++ b/src/field/field_weather.c @@ -1248,8 +1248,8 @@ void sub_807E0A0(void) void sub_807E0F4(struct Sprite *sprite) { - sprite->data0 = (sprite->data0 + 1) & 1; - if (sprite->data0 != 0) + sprite->data[0] = (sprite->data[0] + 1) & 1; + if (sprite->data[0] != 0) sprite->pos1.x--; } @@ -1468,55 +1468,55 @@ void sub_807E4EC(struct Sprite *sprite) s32 r4; s32 r0; - if (sprite->data1 == 0) - sprite->data1 = 361; - randVal = sprite->data1 * 1103515245 + 12345; - sprite->data1 = ((randVal & 0x7FFF0000) >> 16) % 600; + if (sprite->data[1] == 0) + sprite->data[1] = 361; + randVal = sprite->data[1] * 1103515245 + 12345; + sprite->data[1] = ((randVal & 0x7FFF0000) >> 16) % 600; r6 = gUnknown_0839AAC4[gUnknown_08396FC4->unknown_6DC][0]; - r4 = sprite->data1 % 30; - sprite->data2 = r4 * 8; // useless assignment + r4 = sprite->data[1] % 30; + sprite->data[2] = r4 * 8; // useless assignment - r0 = sprite->data1 / 30; - sprite->data3 = r0 * 8; // useless assignment + r0 = sprite->data[1] / 30; + sprite->data[3] = r0 * 8; // useless assignment - sprite->data2 = r4; - sprite->data2 <<= 7; + sprite->data[2] = r4; + sprite->data[2] <<= 7; - sprite->data3 = r0; - sprite->data3 <<= 7; + sprite->data[3] = r0; + sprite->data[3] <<= 7; - sprite->data2 -= gUnknown_0839AABC[gUnknown_08396FC4->unknown_6DC][0] * r6; - sprite->data3 -= gUnknown_0839AABC[gUnknown_08396FC4->unknown_6DC][1] * r6; + sprite->data[2] -= gUnknown_0839AABC[gUnknown_08396FC4->unknown_6DC][0] * r6; + sprite->data[3] -= gUnknown_0839AABC[gUnknown_08396FC4->unknown_6DC][1] * r6; StartSpriteAnim(sprite, 0); - sprite->data4 = 0; + sprite->data[4] = 0; sprite->coordOffsetEnabled = FALSE; - sprite->data0 = r6; + sprite->data[0] = r6; } void sub_807E5C0(struct Sprite *sprite) { - if (sprite->data4 == 0) + if (sprite->data[4] == 0) { - sprite->data2 += gUnknown_0839AABC[gUnknown_08396FC4->unknown_6DC][0]; - sprite->data3 += gUnknown_0839AABC[gUnknown_08396FC4->unknown_6DC][1]; - sprite->pos1.x = sprite->data2 >> 4; - sprite->pos1.y = sprite->data3 >> 4; + sprite->data[2] += gUnknown_0839AABC[gUnknown_08396FC4->unknown_6DC][0]; + sprite->data[3] += gUnknown_0839AABC[gUnknown_08396FC4->unknown_6DC][1]; + sprite->pos1.x = sprite->data[2] >> 4; + sprite->pos1.y = sprite->data[3] >> 4; - if (sprite->data5 != 0 + if (sprite->data[5] != 0 && (sprite->pos1.x >= -8 && sprite->pos1.x <= 248) && sprite->pos1.y >= -16 && sprite->pos1.y <= 176) sprite->invisible = FALSE; else sprite->invisible = TRUE; - sprite->data0--; - if (sprite->data0 == 0) + sprite->data[0]--; + if (sprite->data[0] == 0) { StartSpriteAnim(sprite, gUnknown_08396FC4->unknown_6DC + 1); - sprite->data4 = 1; + sprite->data[4] = 1; sprite->pos1.x -= gSpriteCoordOffsetX; sprite->pos1.y -= gSpriteCoordOffsetY; sprite->coordOffsetEnabled = TRUE; @@ -1531,14 +1531,14 @@ void sub_807E5C0(struct Sprite *sprite) void sub_807E6C4(struct Sprite *sprite) { - if (sprite->data0 == 0) + if (sprite->data[0] == 0) { sub_807E4EC(sprite); sprite->callback = sub_807E5C0; } else { - sprite->data0--; + sprite->data[0]--; } } @@ -1554,13 +1554,13 @@ void sub_807E6F0(struct Sprite *sprite, u16 b) { while (--r4 != 0xFFFF) sub_807E5C0(sprite); - sprite->data6 = 0; + sprite->data[6] = 0; } else { - sprite->data0 = r4 - r8; + sprite->data[0] = r4 - r8; sprite->invisible = TRUE; - sprite->data6 = 1; + sprite->data[6] = 1; } } @@ -1584,10 +1584,10 @@ bool8 sub_807E7B4(void) gUnknown_0839AA08[r7].x, gUnknown_0839AA08[r7].y, 78); if (spriteId != 64) { - gSprites[spriteId].data5 = 0; - gSprites[spriteId].data1 = r7 * 145; - while (gSprites[spriteId].data1 >= 600) - gSprites[spriteId].data1 -= 600; + gSprites[spriteId].data[5] = 0; + gSprites[spriteId].data[1] = r7 * 145; + while (gSprites[spriteId].data[1] >= 600) + gSprites[spriteId].data[1] -= 600; sub_807E4EC(&gSprites[spriteId]); sub_807E6F0(&gSprites[spriteId], r7 * 9); gSprites[spriteId].invisible = TRUE; @@ -1606,7 +1606,7 @@ bool8 sub_807E7B4(void) { if (gUnknown_08396FC4->unknown_0[i] != NULL) { - if (gUnknown_08396FC4->unknown_0[i]->data6 == 0) + if (gUnknown_08396FC4->unknown_0[i]->data[6] == 0) gUnknown_08396FC4->unknown_0[i]->callback = sub_807E5C0; else gUnknown_08396FC4->unknown_0[i]->callback = sub_807E6C4; @@ -1627,12 +1627,12 @@ bool8 sub_807E8E8(void) gUnknown_08396FC4->unknown_6D6 = 0; if (gUnknown_08396FC4->unknown_6D8 < gUnknown_08396FC4->unknown_6D9) { - gUnknown_08396FC4->unknown_0[gUnknown_08396FC4->unknown_6D8++]->data5 = 1; + gUnknown_08396FC4->unknown_0[gUnknown_08396FC4->unknown_6D8++]->data[5] = 1; } else { gUnknown_08396FC4->unknown_6D8--; - gUnknown_08396FC4->unknown_0[gUnknown_08396FC4->unknown_6D8]->data5 = 0; + gUnknown_08396FC4->unknown_0[gUnknown_08396FC4->unknown_6D8]->data[5] = 0; gUnknown_08396FC4->unknown_0[gUnknown_08396FC4->unknown_6D8]->invisible = TRUE; } } @@ -1739,7 +1739,7 @@ bool8 snowflake_add(void) if (spriteId == 64) return FALSE; - gSprites[spriteId].data4 = gUnknown_08396FC4->unknown_6E4; + gSprites[spriteId].data[4] = gUnknown_08396FC4->unknown_6E4; sub_807EC40(&gSprites[spriteId]); gSprites[spriteId].coordOffsetEnabled = TRUE; gUnknown_08396FC4->unknown_60[gUnknown_08396FC4->unknown_6E4++] = &gSprites[spriteId]; @@ -1758,21 +1758,21 @@ bool8 snowflake_remove(void) void sub_807EC40(struct Sprite *sprite) { - u16 r4 = ((sprite->data4 * 5) & 7) * 30 + (Random() % 30); + u16 r4 = ((sprite->data[4] * 5) & 7) * 30 + (Random() % 30); u16 r6; sprite->pos1.y = -3 - (gSpriteCoordOffsetY + sprite->centerToCornerVecY); sprite->pos1.x = r4 - (gSpriteCoordOffsetX + sprite->centerToCornerVecX); - sprite->data0 = sprite->pos1.y * 128; + sprite->data[0] = sprite->pos1.y * 128; sprite->pos2.x = 0; r6 = Random(); - sprite->data1 = (r6 & 3) * 5 + 64; - sprite->data7 = (r6 & 3) * 5 + 64; + sprite->data[1] = (r6 & 3) * 5 + 64; + sprite->data[7] = (r6 & 3) * 5 + 64; StartSpriteAnim(sprite, (r6 & 1) ? 0 : 1); - sprite->data3 = 0; - sprite->data2 = ((r6 & 3) == 0) ? 2 : 1; - sprite->data6 = (r6 & 0x1F) + 210; - sprite->data5 = 0; + sprite->data[3] = 0; + sprite->data[2] = ((r6 & 3) == 0) ? 2 : 1; + sprite->data[6] = (r6 & 0x1F) + 210; + sprite->data[5] = 0; } void sub_807ECEC(struct Sprite *sprite) @@ -1782,7 +1782,7 @@ void sub_807ECEC(struct Sprite *sprite) sprite->invisible = FALSE; sprite->callback = sub_807ED48; sprite->pos1.y = 0xFA - (gSpriteCoordOffsetY + sprite->centerToCornerVecY); - sprite->data0 = sprite->pos1.y * 128; + sprite->data[0] = sprite->pos1.y * 128; gUnknown_08396FC4->unknown_6E2 = 0; } } @@ -1792,10 +1792,10 @@ void sub_807ED48(struct Sprite *sprite) s16 r3; s16 r2; - sprite->data0 += sprite->data1; - sprite->pos1.y = sprite->data0 >> 7; - sprite->data3 = (sprite->data3 + sprite->data2) & 0xFF; - sprite->pos2.x = gSineTable[sprite->data3] / 64; + sprite->data[0] += sprite->data[1]; + sprite->pos1.y = sprite->data[0] >> 7; + sprite->data[3] = (sprite->data[3] + sprite->data[2]) & 0xFF; + sprite->pos2.x = gSineTable[sprite->data[3]] / 64; r3 = (sprite->pos1.x + sprite->centerToCornerVecX + gSpriteCoordOffsetX) & 0x1FF; if (r3 & 0x100) @@ -1809,22 +1809,22 @@ void sub_807ED48(struct Sprite *sprite) if (r2 > 163 && r2 < 171) { sprite->pos1.y = 250 - (gSpriteCoordOffsetY + sprite->centerToCornerVecY); - sprite->data0 = sprite->pos1.y * 128; - sprite->data5 = 0; - sprite->data6 = 220; + sprite->data[0] = sprite->pos1.y * 128; + sprite->data[5] = 0; + sprite->data[6] = 220; } else if (r2 > 242 && r2 < 250) { sprite->pos1.y = 163; - sprite->data0 = sprite->pos1.y * 128; - sprite->data5 = 0; - sprite->data6 = 220; + sprite->data[0] = sprite->pos1.y * 128; + sprite->data[5] = 0; + sprite->data[6] = 220; sprite->invisible = TRUE; sprite->callback = sub_807ECEC; } - sprite->data5++; - if (sprite->data5 == sprite->data6) + sprite->data[5]++; + if (sprite->data[5] == sprite->data[6]) { sub_807EC40(sprite); sprite->pos1.y = 250; @@ -2135,10 +2135,10 @@ bool8 sub_807F5EC(void) void sub_807F688(struct Sprite *sprite) { sprite->pos2.y = (u8)gSpriteCoordOffsetY; - sprite->pos1.x = gUnknown_08396FC4->unknown_6EE + 32 + sprite->data0 * 64; + sprite->pos1.x = gUnknown_08396FC4->unknown_6EE + 32 + sprite->data[0] * 64; if (sprite->pos1.x > 0x10F) { - sprite->pos1.x = 480 + gUnknown_08396FC4->unknown_6EE - (4 - sprite->data0) * 64; + sprite->pos1.x = 480 + gUnknown_08396FC4->unknown_6EE - (4 - sprite->data[0]) * 64; sprite->pos1.x &= 0x1FF; } } diff --git a/src/field/fldeff_cut.c b/src/field/fldeff_cut.c index 00cabe5c0..6e7f14a8c 100644 --- a/src/field/fldeff_cut.c +++ b/src/field/fldeff_cut.c @@ -136,7 +136,7 @@ bool8 FldEff_CutGrass(void) { eCutGrassSpriteArray[i] = CreateSprite((struct SpriteTemplate *)&gSpriteTemplate_CutGrass, gSprites[gPlayerAvatar.spriteId].oam.x + 8, gSprites[gPlayerAvatar.spriteId].oam.y + 20, 0); - gSprites[eCutGrassSpriteArray[i]].data2 = 32 * i; + gSprites[eCutGrassSpriteArray[i]].data[2] = 32 * i; } return 0; } @@ -242,9 +242,9 @@ void sub_80A28F4(s16 x, s16 y) void sub_80A2A48(struct Sprite *sprite) { - sprite->data0 = 8; - sprite->data1 = 0; - sprite->data3 = 0; + sprite->data[0] = 8; + sprite->data[1] = 0; + sprite->data[3] = 0; sprite->callback = (void *)objc_8097BBC; } @@ -253,16 +253,16 @@ void objc_8097BBC(struct Sprite *sprite) u16 tempdata; u16 tempdata2; - sprite->pos2.x = Sin(sprite->data2, sprite->data0); - sprite->pos2.y = Cos(sprite->data2, sprite->data0); + sprite->pos2.x = Sin(sprite->data[2], sprite->data[0]); + sprite->pos2.y = Cos(sprite->data[2], sprite->data[0]); - sprite->data2 = (sprite->data2 + 8) & 0xFF; - sprite->data0 += ((tempdata2 = sprite->data3) << 16 >> 18) + 1; // what? - sprite->data3 = tempdata2 + 1; + sprite->data[2] = (sprite->data[2] + 8) & 0xFF; + sprite->data[0] += ((tempdata2 = sprite->data[3]) << 16 >> 18) + 1; // what? + sprite->data[3] = tempdata2 + 1; - tempdata = sprite->data1; + tempdata = sprite->data[1]; if((s16)tempdata != 28) // done rotating the grass, execute clean up function - sprite->data1++; + sprite->data[1]++; else sprite->callback = (void *)sub_80A2AB8; } diff --git a/src/field/fldeff_softboiled.c b/src/field/fldeff_softboiled.c index b2c3d9bd1..c2a315233 100644 --- a/src/field/fldeff_softboiled.c +++ b/src/field/fldeff_softboiled.c @@ -82,8 +82,8 @@ static void sub_8133D50(u8 taskId) { struct Sprite *sprites = gSprites; - unk1 = sprites[EWRAM_1000.unk1].data0; - unk2 = sprites[EWRAM_1000.unk2].data0; + unk1 = sprites[EWRAM_1000.unk1].data[0]; + unk2 = sprites[EWRAM_1000.unk2].data[0]; if (unk1 > 5 || unk2 > 5) { @@ -91,7 +91,7 @@ static void sub_8133D50(u8 taskId) { return; } - EWRAM_1C000.unk0 = &gPlayerParty[sprites[EWRAM_1000.unk2].data0]; + EWRAM_1C000.unk0 = &gPlayerParty[sprites[EWRAM_1000.unk2].data[0]]; hp = GetMonData(EWRAM_1C000.unk0, MON_DATA_HP); if (hp == 0 || unk1 == unk2 || GetMonData(EWRAM_1C000.unk0, MON_DATA_MAX_HP) == hp) @@ -102,7 +102,7 @@ static void sub_8133D50(u8 taskId) { PlaySE(SE_KAIFUKU); - EWRAM_1C000.unk5 = gSprites[EWRAM_1000.unk1].data0; + EWRAM_1C000.unk5 = gSprites[EWRAM_1000.unk1].data[0]; pokemon = &gPlayerParty[EWRAM_1C000.unk5]; EWRAM_1C000.unk0 = pokemon; diff --git a/src/field/item_menu.c b/src/field/item_menu.c index 09542cc6d..67362d5f3 100644 --- a/src/field/item_menu.c +++ b/src/field/item_menu.c @@ -4080,11 +4080,11 @@ static const struct CompressedSpritePalette sBagSpritePalette = {gBagPalette, 30 static void sub_80A7998(struct Sprite *sprite) { sprite->animNum = 0; - sprite->data0 = 0; - sprite->data1 = 0; - sprite->data2 = 0; - sprite->data3 = 0; - sprite->data4 = 0; + sprite->data[0] = 0; + sprite->data[1] = 0; + sprite->data[2] = 0; + sprite->data[3] = 0; + sprite->data[4] = 0; sprite->callback = sub_80A79B4; } @@ -4098,7 +4098,7 @@ static void sub_80A79B4(struct Sprite *sprite) static void sub_80A79EC(struct Sprite *sprite) { - switch (sprite->data3) + switch (sprite->data[3]) { case 0: if (gUnknown_0203855B != 6) @@ -4112,26 +4112,26 @@ static void sub_80A79EC(struct Sprite *sprite) sprite->animBeginning = TRUE; sprite->animNum = 0; sprite->pos1.y -= 4; - sprite->data0 = 4; - sprite->data3 = 1; + sprite->data[0] = 4; + sprite->data[3] = 1; sub_80A7AE4(sprite); } break; case 1: - if (sprite->data0 != 0) + if (sprite->data[0] != 0) { - if (sprite->data1 != 0) + if (sprite->data[1] != 0) { sprite->pos1.y++; - sprite->data0--; + sprite->data[0]--; } - sprite->data1 = (sprite->data1 + 1) & 1; + sprite->data[1] = (sprite->data[1] + 1) & 1; } else { gUnknown_0203855B = -1; - sprite->data1 = 0; - sprite->data3 = 0; + sprite->data[1] = 0; + sprite->data[3] = 0; } break; } @@ -4139,17 +4139,17 @@ static void sub_80A79EC(struct Sprite *sprite) static void sub_80A7A94(struct Sprite *sprite) { - switch (sprite->data4) + switch (sprite->data[4]) { case 0: sprite->oam.affineMode = 1; sprite->affineAnims = sBagSpriteAffineAnimTable; InitSpriteAffineAnim(sprite); - sprite->data4 = 1; + sprite->data[4] = 1; break; case 1: - sprite->data2++; - if (sprite->data2 == 12) + sprite->data[2]++; + if (sprite->data[2] == 12) sub_80A7AE4(sprite); break; } @@ -4159,8 +4159,8 @@ static void sub_80A7AE4(struct Sprite *sprite) { gUnknown_0203855C = 0; sprite->oam.affineMode = 0; - sprite->data2 = 0; - sprite->data4 = 0; + sprite->data[2] = 0; + sprite->data[4] = 0; FreeOamMatrix(sprite->oam.matrixNum); } @@ -4228,45 +4228,45 @@ static const struct SpritePalette sPokeballSpritePalette = {gPalette_83C170C, 8} static void sub_80A7B28(struct Sprite *sprite) { - sprite->data3 = 0; - sprite->data0 = 0; + sprite->data[3] = 0; + sprite->data[0] = 0; sub_80A7B6C(sprite); sprite->callback = sub_80A7B6C; } static void sub_80A7B48(struct Sprite *sprite) { - sprite->centerToCornerVecX = sprite->data5 - ((sprite->data0 + 1) & 1); - sprite->centerToCornerVecY = sprite->data6 - ((sprite->data0 + 1) & 1); + sprite->centerToCornerVecX = sprite->data[5] - ((sprite->data[0] + 1) & 1); + sprite->centerToCornerVecY = sprite->data[6] - ((sprite->data[0] + 1) & 1); } static void sub_80A7B6C(struct Sprite *sprite) { - if (sprite->data7 != 0) + if (sprite->data[7] != 0) { - switch (sprite->data3) + switch (sprite->data[3]) { case 0: sprite->oam.affineMode = 1; - if (sprite->data7 == 1) + if (sprite->data[7] == 1) sprite->affineAnims = gSpriteAffineAnimTable_83C1D20; else sprite->affineAnims = gSpriteAffineAnimTable_83C1D20 + 1; InitSpriteAffineAnim(sprite); - sprite->data3 = 1; - sprite->data5 = sprite->centerToCornerVecX; - sprite->data6 = sprite->centerToCornerVecY; + sprite->data[3] = 1; + sprite->data[5] = sprite->centerToCornerVecX; + sprite->data[6] = sprite->centerToCornerVecY; sub_80A7B48(sprite); break; case 1: - sprite->data0++; + sprite->data[0]++; sub_80A7B48(sprite); - if (sprite->data0 == 32) + if (sprite->data[0] == 32) { - sprite->data0 = 0; - sprite->data3 = 0; - sprite->centerToCornerVecX = sprite->data5; - sprite->centerToCornerVecY = sprite->data6; + sprite->data[0] = 0; + sprite->data[3] = 0; + sprite->centerToCornerVecX = sprite->data[5]; + sprite->centerToCornerVecY = sprite->data[6]; FreeOamMatrix(sprite->oam.matrixNum); sprite->oam.affineMode = 0; sprite->callback = SpriteCallbackDummy; @@ -4291,7 +4291,7 @@ static void CreateBagPokeballSprite(u8 a) { LoadSpritePalette(&sPokeballSpritePalette); sPokeballSpriteId = CreateSprite(&sPokeballSpriteTemplate, 16, 88, 0); - gSprites[sPokeballSpriteId].data7 = a; + gSprites[sPokeballSpriteId].data[7] = a; } static void sub_80A7C64(void) diff --git a/src/field/menu_helpers.c b/src/field/menu_helpers.c index 14e823355..8e13e5546 100644 --- a/src/field/menu_helpers.c +++ b/src/field/menu_helpers.c @@ -405,15 +405,15 @@ void CreateVerticalScrollIndicators(u8 id, u16 x, u16 y) if (gUnknown_020388C0[0] == 0xFF) { gUnknown_020388C0[0] = CreateSprite(&gSpriteTemplate_83E59D0, x, y, 0); - gSprites[gUnknown_020388C0[0]].data2 = -1; + gSprites[gUnknown_020388C0[0]].data[2] = -1; if (gUnknown_020388C0[1] != 0xFF) { gSprites[gUnknown_020388C0[0]].pos2.y = gSprites[gUnknown_020388C0[1]].pos2.y * -1; - gSprites[gUnknown_020388C0[0]].data3 = gSprites[gUnknown_020388C0[1]].data3; + gSprites[gUnknown_020388C0[0]].data[3] = gSprites[gUnknown_020388C0[1]].data[3]; } else { - gSprites[gUnknown_020388C0[0]].data3 = 0; + gSprites[gUnknown_020388C0[0]].data[3] = 0; } } break; @@ -422,15 +422,15 @@ void CreateVerticalScrollIndicators(u8 id, u16 x, u16 y) if (gUnknown_020388C0[1] == 0xFF) { gUnknown_020388C0[1] = CreateSprite(&gSpriteTemplate_83E59D0, x, y, 0); - gSprites[gUnknown_020388C0[1]].data2 = 1; + gSprites[gUnknown_020388C0[1]].data[2] = 1; if (gUnknown_020388C0[0] != 0xFF) { gSprites[gUnknown_020388C0[1]].pos2.y = gSprites[gUnknown_020388C0[0]].pos2.y * -1; - gSprites[gUnknown_020388C0[1]].data3 = gSprites[gUnknown_020388C0[0]].data3; + gSprites[gUnknown_020388C0[1]].data[3] = gSprites[gUnknown_020388C0[0]].data[3]; } else { - gSprites[gUnknown_020388C0[1]].data3 = 0; + gSprites[gUnknown_020388C0[1]].data[3] = 0; } } break; @@ -439,15 +439,15 @@ void CreateVerticalScrollIndicators(u8 id, u16 x, u16 y) if (gUnknown_020388C0[2] == 0xFF) { gUnknown_020388C0[2] = CreateSprite(&gSpriteTemplate_83E59E8, x, y, 0); - gSprites[gUnknown_020388C0[2]].data0 = -1; + gSprites[gUnknown_020388C0[2]].data[0] = -1; if (gUnknown_020388C0[3] != 0xFF) { gSprites[gUnknown_020388C0[2]].pos2.x = gSprites[gUnknown_020388C0[3]].pos2.x * -1; - gSprites[gUnknown_020388C0[2]].data1 = gSprites[gUnknown_020388C0[3]].data1; + gSprites[gUnknown_020388C0[2]].data[1] = gSprites[gUnknown_020388C0[3]].data[1]; } else { - gSprites[gUnknown_020388C0[2]].data1 = 0; + gSprites[gUnknown_020388C0[2]].data[1] = 0; } } break; @@ -456,15 +456,15 @@ void CreateVerticalScrollIndicators(u8 id, u16 x, u16 y) if (gUnknown_020388C0[3] == 0xFF) { gUnknown_020388C0[3] = CreateSprite(&gSpriteTemplate_83E59E8, x, y, 0); - gSprites[gUnknown_020388C0[3]].data0 = 1; + gSprites[gUnknown_020388C0[3]].data[0] = 1; if (gUnknown_020388C0[2] != 0xFF) { gSprites[gUnknown_020388C0[3]].pos2.x = gSprites[gUnknown_020388C0[2]].pos2.x * -1; - gSprites[gUnknown_020388C0[3]].data1 = gSprites[gUnknown_020388C0[2]].data1; + gSprites[gUnknown_020388C0[3]].data[1] = gSprites[gUnknown_020388C0[2]].data[1]; } else { - gSprites[gUnknown_020388C0[3]].data1 = 0; + gSprites[gUnknown_020388C0[3]].data[1] = 0; } } break; @@ -502,23 +502,23 @@ void BuyMenuFreeMemory(void) static void sub_80F9834(struct Sprite *sprite) { - if (sprite->data1 == 0) + if (sprite->data[1] == 0) { - sprite->pos2.x += sprite->data0; + sprite->pos2.x += sprite->data[0]; } - if (sprite->data3 == 0) + if (sprite->data[3] == 0) { - sprite->pos2.y += sprite->data2; + sprite->pos2.y += sprite->data[2]; } - sprite->data1++; - sprite->data3++; - if (sprite->data1 > 2) + sprite->data[1]++; + sprite->data[3]++; + if (sprite->data[1] > 2) { - sprite->data1 = 0; + sprite->data[1] = 0; } - if (sprite->data3 > 2) + if (sprite->data[3] > 2) { - sprite->data3 = 0; + sprite->data[3] = 0; } if (sprite->pos2.x == 8 || sprite->pos2.x == -8) { @@ -552,8 +552,8 @@ static void sub_80F9914(u8 id) { gSprites[gUnknown_020388C0[id]].pos2.x = 0; gSprites[gUnknown_020388C0[id]].pos2.y = 0; - gSprites[gUnknown_020388C0[id]].data1 = 0; - gSprites[gUnknown_020388C0[id]].data3 = 0; + gSprites[gUnknown_020388C0[id]].data[1] = 0; + gSprites[gUnknown_020388C0[id]].data[3] = 0; } } diff --git a/src/field/overworld.c b/src/field/overworld.c index d6f255409..59aac5c33 100644 --- a/src/field/overworld.c +++ b/src/field/overworld.c @@ -2648,14 +2648,14 @@ void CreateLinkPlayerSprite(u8 linkPlayerId) mapObj->spriteId = AddPseudoFieldObject(val, SpriteCB_LinkPlayer, 0, 0, 0); sprite = &gSprites[mapObj->spriteId]; sprite->coordOffsetEnabled = TRUE; - sprite->data0 = linkPlayerId; + sprite->data[0] = linkPlayerId; mapObj->mapobj_bit_2 = 0; } } void SpriteCB_LinkPlayer(struct Sprite *sprite) { - struct LinkPlayerMapObject *linkPlayerMapObj = &gLinkPlayerMapObjects[sprite->data0]; + struct LinkPlayerMapObject *linkPlayerMapObj = &gLinkPlayerMapObjects[sprite->data[0]]; struct MapObject *mapObj = &gMapObjects[linkPlayerMapObj->mapObjId]; sprite->pos1.x = mapObj->coords1.x; sprite->pos1.y = mapObj->coords1.y; @@ -2668,7 +2668,7 @@ void SpriteCB_LinkPlayer(struct Sprite *sprite) sub_806487C(sprite, 0); if (mapObj->mapobj_bit_2) { - sprite->invisible = ((sprite->data7 & 4) >> 2); - sprite->data7++; + sprite->invisible = ((sprite->data[7] & 4) >> 2); + sprite->data[7]++; } } diff --git a/src/field/party_menu.c b/src/field/party_menu.c index 42bb66f6f..a8620570b 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -1422,7 +1422,7 @@ u16 HandleDefaultPartyMenuInput(u8 taskId) if (menuDirectionPressed == 0) { - if ((gMain.newKeys & A_BUTTON) && gSprites[sub_806CA00(taskId)].data0 == 7) + if ((gMain.newKeys & A_BUTTON) && gSprites[sub_806CA00(taskId)].data[0] == 7) { // Selected "CANCEL" return B_BUTTON; @@ -1595,7 +1595,7 @@ u16 HandleBattleTowerPartyMenuInput(u8 taskId) { if (gMain.newKeys & A_BUTTON) { - if (gSprites[sub_806CA00(taskId)].data0 == 7) + if (gSprites[sub_806CA00(taskId)].data[0] == 7) { return B_BUTTON; } @@ -1629,7 +1629,7 @@ void ChangePartyMenuSelection(u8 taskId, s8 directionPressed) { bool8 isLinkDoubleBattle; u8 spriteId = sub_806CA00(taskId); - u8 menuIndex = gSprites[spriteId].data0; + u8 menuIndex = gSprites[spriteId].data[0]; UpdateMonIconFrame_806DA44(taskId, menuIndex, 0); @@ -1645,17 +1645,17 @@ void ChangePartyMenuSelection(u8 taskId, s8 directionPressed) ChangeLinkDoubleBattlePartyMenuSelection(spriteId, menuIndex, directionPressed); - if (gSprites[spriteId].data0 == 0 || gSprites[spriteId].data0 == 2 || gSprites[spriteId].data0 == 3) - sub_806BF24(&gUnknown_083769C0[gSprites[spriteId].data0 * 2], gSprites[spriteId].data0, 3, 1); - if (gSprites[spriteId].data0 == 1 || gSprites[spriteId].data0 == 4 || gSprites[spriteId].data0 == 5) - sub_806BF24(&gUnknown_083769C0[gSprites[spriteId].data0 * 2], gSprites[spriteId].data0, 4, 1); - if (gSprites[spriteId].data0 == 7) + if (gSprites[spriteId].data[0] == 0 || gSprites[spriteId].data[0] == 2 || gSprites[spriteId].data[0] == 3) + sub_806BF24(&gUnknown_083769C0[gSprites[spriteId].data[0] * 2], gSprites[spriteId].data[0], 3, 1); + if (gSprites[spriteId].data[0] == 1 || gSprites[spriteId].data[0] == 4 || gSprites[spriteId].data[0] == 5) + sub_806BF24(&gUnknown_083769C0[gSprites[spriteId].data[0] * 2], gSprites[spriteId].data[0], 4, 1); + if (gSprites[spriteId].data[0] == 7) sub_806BBEC(2); ewram1B000.unk261 = 2; - gSprites[spriteId].pos1.x = gUnknown_083768B8[PARTY_MENU_LAYOUT_LINK_DOUBLE_BATTLE][gSprites[spriteId].data0].x; - gSprites[spriteId].pos1.y = gUnknown_083768B8[PARTY_MENU_LAYOUT_LINK_DOUBLE_BATTLE][gSprites[spriteId].data0].y; + gSprites[spriteId].pos1.x = gUnknown_083768B8[PARTY_MENU_LAYOUT_LINK_DOUBLE_BATTLE][gSprites[spriteId].data[0]].x; + gSprites[spriteId].pos1.y = gUnknown_083768B8[PARTY_MENU_LAYOUT_LINK_DOUBLE_BATTLE][gSprites[spriteId].data[0]].y; } else { @@ -1679,9 +1679,9 @@ void ChangePartyMenuSelection(u8 taskId, s8 directionPressed) ChangeDoubleBattlePartyMenuSelection(spriteId, menuIndex, directionPressed); } - if (gSprites[spriteId].data0 < PARTY_SIZE) + if (gSprites[spriteId].data[0] < PARTY_SIZE) { - sub_806BF24(&gUnknown_083769A8[isDoubleBattle * 12 + gSprites[spriteId].data0 * 2], gSprites[spriteId].data0, 3, 1); + sub_806BF24(&gUnknown_083769A8[isDoubleBattle * 12 + gSprites[spriteId].data[0] * 2], gSprites[spriteId].data[0], 3, 1); } else { @@ -1690,13 +1690,13 @@ void ChangePartyMenuSelection(u8 taskId, s8 directionPressed) ewram1B000.unk261 = 2; - gSprites[spriteId].pos1.x = gUnknown_083768B8[isDoubleBattle][gSprites[spriteId].data0].x; - gSprites[spriteId].pos1.y = gUnknown_083768B8[isDoubleBattle][gSprites[spriteId].data0].y; + gSprites[spriteId].pos1.x = gUnknown_083768B8[isDoubleBattle][gSprites[spriteId].data[0]].x; + gSprites[spriteId].pos1.y = gUnknown_083768B8[isDoubleBattle][gSprites[spriteId].data[0]].y; } - UpdateMonIconFrame_806DA44(taskId, gSprites[spriteId].data0, 1); + UpdateMonIconFrame_806DA44(taskId, gSprites[spriteId].data[0], 1); - if (menuIndex != gSprites[spriteId].data0) + if (menuIndex != gSprites[spriteId].data[0]) { PlaySE(5); } @@ -1710,47 +1710,47 @@ void ChangeDefaultPartyMenuSelection(u8 spriteId, u8 menuIndex, s8 directionPres switch (menuMovement) { case 2: // no movement - gSprites[spriteId].data1 = 0; + gSprites[spriteId].data[1] = 0; break; case 1: // moving up if (menuIndex == 0) { - gSprites[spriteId].data0 = 7; + gSprites[spriteId].data[0] = 7; } else if (menuIndex == 7) { - gSprites[spriteId].data0 = gPlayerPartyCount - 1; + gSprites[spriteId].data[0] = gPlayerPartyCount - 1; } else { s8 diff = directionPressed; - gSprites[spriteId].data0 += diff; + gSprites[spriteId].data[0] += diff; } - gSprites[spriteId].data1 = 0; + gSprites[spriteId].data[1] = 0; break; case 3: // moving down if (menuIndex == gPlayerPartyCount - 1) { - gSprites[spriteId].data0 = 7; + gSprites[spriteId].data[0] = 7; } else if (menuIndex == 7) { - gSprites[spriteId].data0 = 0; + gSprites[spriteId].data[0] = 0; } else { s8 diff = directionPressed; - gSprites[spriteId].data0 += diff; + gSprites[spriteId].data[0] += diff; } - gSprites[spriteId].data1 = 0; + gSprites[spriteId].data[1] = 0; break; case 4: // moving right if (gPlayerPartyCount > 1 && menuIndex == 0) { - if (gSprites[spriteId].data1 == 0) - gSprites[spriteId].data1 = 1; + if (gSprites[spriteId].data[1] == 0) + gSprites[spriteId].data[1] = 1; - gSprites[spriteId].data0 = gSprites[spriteId].data1; + gSprites[spriteId].data[0] = gSprites[spriteId].data[1]; } break; case 0: // moving left // Only move the selection to the left side if one of the mons in the right-hand column are currently selected nextIndex = menuIndex - 1; if (nextIndex <= 4) { - gSprites[spriteId].data0 = 0; - gSprites[spriteId].data1 = menuIndex; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].data[1] = menuIndex; } break; } @@ -1764,62 +1764,62 @@ void ChangeDoubleBattlePartyMenuSelection(u8 spriteId, u8 menuIndex, s8 directio switch(menuMovement) { case 2: // no movement - gSprites[spriteId].data1 = 0; + gSprites[spriteId].data[1] = 0; break; case 3: // moving down if (menuIndex == 7) { - gSprites[spriteId].data0 = 0; + gSprites[spriteId].data[0] = 0; } else if (menuIndex == gPlayerPartyCount - 1) { - gSprites[spriteId].data0 = 7; + gSprites[spriteId].data[0] = 7; } else { s8 diff = directionPressed; - gSprites[spriteId].data0 += diff; + gSprites[spriteId].data[0] += diff; } - gSprites[spriteId].data1 = 0; + gSprites[spriteId].data[1] = 0; break; case 1: // moving up if (menuIndex == 0) { - gSprites[spriteId].data0 = 7; + gSprites[spriteId].data[0] = 7; } else if (menuIndex == 7) { - gSprites[spriteId].data0 = gPlayerPartyCount - 1; + gSprites[spriteId].data[0] = gPlayerPartyCount - 1; } else { s8 diff = directionPressed; - gSprites[spriteId].data0 += diff; + gSprites[spriteId].data[0] += diff; } - gSprites[spriteId].data1 = 0; + gSprites[spriteId].data[1] = 0; break; case 4: // moving right if (menuIndex == 0) { if (gPlayerPartyCount > 2) { - u16 var1 = gSprites[spriteId].data1 - 2; + u16 var1 = gSprites[spriteId].data[1] - 2; if (var1 > 1) - gSprites[spriteId].data0 = 2; + gSprites[spriteId].data[0] = 2; else - gSprites[spriteId].data0 = gSprites[spriteId].data1; + gSprites[spriteId].data[0] = gSprites[spriteId].data[1]; } } else if (menuIndex == 1) { if (gPlayerPartyCount > 4) { - u16 var1 = gSprites[spriteId].data1 - 4; + u16 var1 = gSprites[spriteId].data[1] - 4; if (var1 <= 1) - gSprites[spriteId].data0 = gSprites[spriteId].data1; + gSprites[spriteId].data[0] = gSprites[spriteId].data[1]; else - gSprites[spriteId].data0 = 4; + gSprites[spriteId].data[0] = 4; } } break; case 0: // moving left var1 = menuIndex - 2; if (var1 <= 1) { - gSprites[spriteId].data0 = 0; - gSprites[spriteId].data1 = menuIndex; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].data[1] = menuIndex; } else { u8 var2 = menuIndex - 4; if (var2 <= 1) { - gSprites[spriteId].data0 = 1; - gSprites[spriteId].data1 = menuIndex; + gSprites[spriteId].data[0] = 1; + gSprites[spriteId].data[1] = menuIndex; } } break; @@ -1837,62 +1837,62 @@ void ChangeLinkDoubleBattlePartyMenuSelection(u8 spriteId, u8 menuIndex, s8 dire switch (menuMovement) { case 2: // no movement - gSprites[spriteId].data1 = 0; + gSprites[spriteId].data[1] = 0; break; case 3: // moving down if (menuIndex == 7) { - gSprites[spriteId].data0 = 0; + gSprites[spriteId].data[0] = 0; } else { while (menuIndex != PARTY_SIZE - 1) { menuIndex++; if (GetMonData(&gPlayerParty[menuIndex], MON_DATA_SPECIES)) { - gSprites[spriteId].data0 = menuIndex; - gSprites[spriteId].data1 = 0; + gSprites[spriteId].data[0] = menuIndex; + gSprites[spriteId].data[1] = 0; return; } } - gSprites[spriteId].data0 = 7; + gSprites[spriteId].data[0] = 7; } - gSprites[spriteId].data1 = 0; + gSprites[spriteId].data[1] = 0; break; case 1: // moving up while (menuIndex != 0) { menuIndex--; if (menuIndex != PARTY_SIZE && GetMonData(gPlayerParty[menuIndex], MON_DATA_SPECIES)) { - gSprites[spriteId].data0 = menuIndex; - gSprites[spriteId].data1 = 0; + gSprites[spriteId].data[0] = menuIndex; + gSprites[spriteId].data[1] = 0; return; } } - gSprites[spriteId].data0 = 7; - gSprites[spriteId].data1 = 0; + gSprites[spriteId].data[0] = 7; + gSprites[spriteId].data[1] = 0; break; case 4: // moving right if (menuIndex == 0) { - var1 = gSprites[spriteId].data1 - 2; + var1 = gSprites[spriteId].data[1] - 2; if (var1 > 1) { if (GetMonData(&gPlayerParty[2], MON_DATA_SPECIES)) { - gSprites[spriteId].data0 = 2; + gSprites[spriteId].data[0] = 2; } else if (GetMonData(&gPlayerParty[3], MON_DATA_SPECIES)) { - gSprites[spriteId].data0 = 3; + gSprites[spriteId].data[0] = 3; } } else { - gSprites[spriteId].data0 = 1; + gSprites[spriteId].data[0] = 1; } } else if (menuIndex == 1) { - var1 = gSprites[spriteId].data1 - 4; + var1 = gSprites[spriteId].data[1] - 4; if (var1 <= 1) { - gSprites[spriteId].data0 = gSprites[spriteId].data1; + gSprites[spriteId].data[0] = gSprites[spriteId].data[1]; } else { if (GetMonData(&gPlayerParty[4], MON_DATA_SPECIES)) { - gSprites[spriteId].data0 = 4; + gSprites[spriteId].data[0] = 4; } else if (GetMonData(&gPlayerParty[5], MON_DATA_SPECIES)) { - gSprites[spriteId].data0 = 5; + gSprites[spriteId].data[0] = 5; } } } @@ -1900,13 +1900,13 @@ void ChangeLinkDoubleBattlePartyMenuSelection(u8 spriteId, u8 menuIndex, s8 dire case 0: // moving left var2 = menuIndex - 2; if (var2 <= 1) { - gSprites[spriteId].data0 = 0; - gSprites[spriteId].data1 = menuIndex; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].data[1] = menuIndex; } else { var2 = menuIndex - 4; if (var2 <= 1) { - gSprites[spriteId].data0 = 1; - gSprites[spriteId].data1 = menuIndex; + gSprites[spriteId].data[0] = 1; + gSprites[spriteId].data[1] = menuIndex; } } @@ -2165,7 +2165,7 @@ void ChangeBattleTowerPartyMenuSelection(u8 taskId, s8 directionPressed) u8 newMenuIndex3; s8 menuMovement; u8 spriteId = sub_806CA00(taskId); - u8 menuIndex = gSprites[spriteId].data0; + u8 menuIndex = gSprites[spriteId].data[0]; UpdateMonIconFrame_806DA44(taskId, menuIndex, 0); @@ -2187,60 +2187,60 @@ void ChangeBattleTowerPartyMenuSelection(u8 taskId, s8 directionPressed) switch (menuMovement) { case 2: // no movement - gSprites[spriteId].data1 = 0; + gSprites[spriteId].data[1] = 0; break; case 1: // moving up if (menuIndex == 0) { - gSprites[spriteId].data0 = 7; + gSprites[spriteId].data[0] = 7; } else if (menuIndex == PARTY_SIZE) { - gSprites[spriteId].data0 = gPlayerPartyCount - 1; + gSprites[spriteId].data[0] = gPlayerPartyCount - 1; } else { - gSprites[spriteId].data0 += directionPressed; + gSprites[spriteId].data[0] += directionPressed; } - gSprites[spriteId].data1 = 0; + gSprites[spriteId].data[1] = 0; break; case 3: // moving down if (menuIndex == gPlayerPartyCount - 1) { - gSprites[spriteId].data0 = 6; + gSprites[spriteId].data[0] = 6; } else if (menuIndex == 7) { - gSprites[spriteId].data0 = 0; + gSprites[spriteId].data[0] = 0; } else { - gSprites[spriteId].data0 += directionPressed; + gSprites[spriteId].data[0] += directionPressed; } - gSprites[spriteId].data1 = 0; + gSprites[spriteId].data[1] = 0; break; case 4: // moving right if (gPlayerPartyCount > 1 && menuIndex == 0) { - if (gSprites[spriteId].data1 == 0) { - gSprites[spriteId].data1 = 1; + if (gSprites[spriteId].data[1] == 0) { + gSprites[spriteId].data[1] = 1; } - gSprites[spriteId].data0 = gSprites[spriteId].data1; + gSprites[spriteId].data[0] = gSprites[spriteId].data[1]; } break; case 0: // moving left newMenuIndex3 = menuIndex - 1; if (newMenuIndex3 <= 4) { - gSprites[spriteId].data0 = 0; - gSprites[spriteId].data1 = menuIndex; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].data[1] = menuIndex; } break; } - gSprites[spriteId].pos1.x = gUnknown_083768B8[PARTY_MENU_LAYOUT_STANDARD][gSprites[spriteId].data0].x; - gSprites[spriteId].pos1.y = gUnknown_083768B8[PARTY_MENU_LAYOUT_STANDARD][gSprites[spriteId].data0].y; + gSprites[spriteId].pos1.x = gUnknown_083768B8[PARTY_MENU_LAYOUT_STANDARD][gSprites[spriteId].data[0]].x; + gSprites[spriteId].pos1.y = gUnknown_083768B8[PARTY_MENU_LAYOUT_STANDARD][gSprites[spriteId].data[0]].y; - newMenuIndex = gSprites[spriteId].data0; - if (gSprites[spriteId].data0 < PARTY_SIZE) + newMenuIndex = gSprites[spriteId].data[0]; + if (gSprites[spriteId].data[0] < PARTY_SIZE) { - sub_806BF24(&gUnknown_083769A8[gSprites[spriteId].data0 * 2], newMenuIndex, 3, 1); + sub_806BF24(&gUnknown_083769A8[gSprites[spriteId].data[0] * 2], newMenuIndex, 3, 1); } - else if (gSprites[spriteId].data0 == PARTY_SIZE) + else if (gSprites[spriteId].data[0] == PARTY_SIZE) { sub_806BB9C(2); } @@ -2251,10 +2251,10 @@ void ChangeBattleTowerPartyMenuSelection(u8 taskId, s8 directionPressed) ewram1B000.unk261 = 2; - newMenuIndex2 = gSprites[spriteId].data0; + newMenuIndex2 = gSprites[spriteId].data[0]; UpdateMonIconFrame_806DA44(taskId, newMenuIndex2, 1); - if (menuIndex != gSprites[spriteId].data0) + if (menuIndex != gSprites[spriteId].data[0]) { PlaySE(5); } @@ -2265,7 +2265,7 @@ void SelectBattleTowerOKButton(u8 taskId) { u8 spriteId = sub_806CA00(taskId); - u8 menuIndex = gSprites[spriteId].data0; + u8 menuIndex = gSprites[spriteId].data[0]; if (menuIndex != 6) { UpdateMonIconFrame_806DA44(taskId, menuIndex, 0); @@ -2279,8 +2279,8 @@ void SelectBattleTowerOKButton(u8 taskId) sub_806BBEC(1); } - gSprites[spriteId].data1 = 0; - gSprites[spriteId].data0 = 6; + gSprites[spriteId].data[1] = 0; + gSprites[spriteId].data[0] = 6; gSprites[spriteId].pos1.x = gUnknown_083768B8[PARTY_MENU_LAYOUT_STANDARD][6].x; gSprites[spriteId].pos1.y = gUnknown_083768B8[PARTY_MENU_LAYOUT_STANDARD][6].y; @@ -2293,8 +2293,8 @@ void SelectBattleTowerOKButton(u8 taskId) void sub_806C92C(u8 spriteId) { - u8 menuIndex1 = gSprites[spriteId].data0; - u8 menuIndex2 = gSprites[spriteId].data1; + u8 menuIndex1 = gSprites[spriteId].data[0]; + u8 menuIndex2 = gSprites[spriteId].data[1]; if (!IsDoubleBattle()) { @@ -2319,14 +2319,14 @@ void sub_806C92C(u8 spriteId) } } - gSprites[spriteId].data1 = menuIndex2; + gSprites[spriteId].data[1] = menuIndex2; } void sub_806C994(u8 taskId, u8 b) { u8 spriteId = sub_806CA00(taskId); - gSprites[spriteId].data0 = b; + gSprites[spriteId].data[0] = b; sub_806C92C(spriteId); } @@ -2336,7 +2336,7 @@ void sub_806C9C4(u8 taskId, u8 spriteId) gSprites[spriteId].pos1.x = gSprites[spriteId2].pos1.x; gSprites[spriteId].pos1.y = gSprites[spriteId2].pos1.y; - gSprites[spriteId].data0 = gSprites[spriteId2].data0; + gSprites[spriteId].data[0] = gSprites[spriteId2].data[0]; } u8 sub_806CA00(u8 taskId) @@ -2353,7 +2353,7 @@ void sub_806CA18(u8 taskId, u8 b) u8 sub_806CA38(u8 taskId) { u8 spriteId = sub_806CA00(taskId); - return gSprites[spriteId].data0; + return gSprites[spriteId].data[0]; } void SetupDefaultPartyMenuSwitchPokemon(u8 taskId) @@ -2369,7 +2369,7 @@ void SetupDefaultPartyMenuSwitchPokemon(u8 taskId) PrintPartyMenuPromptText(ewram1B000_alt.unk272, 0); - sub_806BF24(&gUnknown_083769A8[gSprites[ewram01000.unk1].data0 * 2], gSprites[ewram01000.unk1].data0, 6, 0); + sub_806BF24(&gUnknown_083769A8[gSprites[ewram01000.unk1].data[0] * 2], gSprites[ewram01000.unk1].data[0], 6, 0); ewram1B000.unk261 = 2; } @@ -2381,13 +2381,13 @@ void ChangePartyMenuSwitchPokemonSelection(u8 taskId, s16 menuDirectionPressed) ChangePartyMenuSelection(taskId, menuDirectionPressed); - if (sprite1->data0 != sprite2->data0) + if (sprite1->data[0] != sprite2->data[0]) { - sub_806BF24(&gUnknown_083769A8[sprite1->data0 * 2], sprite1->data0, 6, 1); + sub_806BF24(&gUnknown_083769A8[sprite1->data[0] * 2], sprite1->data[0], 6, 1); } else { - sub_806BF24(&gUnknown_083769A8[sprite1->data0 * 2], sprite1->data0, 6, 0); + sub_806BF24(&gUnknown_083769A8[sprite1->data[0] * 2], sprite1->data[0], 6, 0); } } @@ -2434,15 +2434,15 @@ void sub_806CC2C(u8 taskId) void sub_806CC74(u8 taskId) { - sub_806BF24(&gUnknown_083769A8[gSprites[ewram01000.unk2].data0 * 2], gSprites[ewram01000.unk2].data0, 3, 1); - sub_806BF24(&gUnknown_083769A8[gSprites[ewram01000.unk1].data0 * 2], gSprites[ewram01000.unk1].data0, 3, 0); + sub_806BF24(&gUnknown_083769A8[gSprites[ewram01000.unk2].data[0] * 2], gSprites[ewram01000.unk2].data[0], 3, 1); + sub_806BF24(&gUnknown_083769A8[gSprites[ewram01000.unk1].data[0] * 2], gSprites[ewram01000.unk1].data[0], 3, 0); sub_806CC2C(taskId); } void sub_806CCE4() { - u8 monIndex1 = gSprites[ewram01000.unk1].data0; - u8 monIndex2 = gSprites[ewram01000.unk2].data0; + u8 monIndex1 = gSprites[ewram01000.unk1].data[0]; + u8 monIndex2 = gSprites[ewram01000.unk2].data[0]; if (monIndex1 <= 5) { @@ -2463,8 +2463,8 @@ void sub_806CD44(u8 taskId) void sub_806CD5C(u8 taskId) { - u8 monIndex1 = gSprites[ewram01000.unk1].data0; - u8 monIndex2 = gSprites[ewram01000.unk2].data0; + u8 monIndex1 = gSprites[ewram01000.unk1].data[0]; + u8 monIndex2 = gSprites[ewram01000.unk2].data[0]; if (monIndex1 == monIndex2 || monIndex1 == 7 || monIndex2 == 7) { @@ -2494,8 +2494,8 @@ void sub_806CD5C(u8 taskId) var1 = ewram01000.unk5; if (!var1) { - gSprites[ewram01000.unk3].data0 = -8; - gSprites[ewram01000.unk3].data2 = -0xA8; + gSprites[ewram01000.unk3].data[0] = -8; + gSprites[ewram01000.unk3].data[2] = -0xA8; ewram01000.unk8 = var1; ewram01000.unkA = 11; @@ -2504,8 +2504,8 @@ void sub_806CD5C(u8 taskId) } else { - gSprites[ewram01000.unk3].data0 = 8; - gSprites[ewram01000.unk3].data2 = 0xA8; + gSprites[ewram01000.unk3].data[0] = 8; + gSprites[ewram01000.unk3].data[2] = 0xA8; ewram01000.unk8 = 11; ewram01000.unkA = 11; @@ -2515,8 +2515,8 @@ void sub_806CD5C(u8 taskId) gSprites[ewram01000.unk3].callback = SpriteCB_sub_806D37C; - gSprites[ewram01000.unk4].data0 = 8; - gSprites[ewram01000.unk4].data2 = 0xA8; + gSprites[ewram01000.unk4].data[0] = 8; + gSprites[ewram01000.unk4].data[2] = 0xA8; gSprites[ewram01000.unk4].callback = SpriteCB_sub_806D37C; gSprites[ewram01000.unk3].callback(&gSprites[ewram01000.unk3]); @@ -2537,7 +2537,7 @@ void sub_806CF04(void) SwapValues_s16(&gSprites[ewram01000.unk3].pos1.x, &gSprites[ewram01000.unk4].pos1.x); SwapValues_s16(&gSprites[ewram01000.unk3].pos1.y, &gSprites[ewram01000.unk4].pos1.y); SwapValues_s16(&gSprites[ewram01000.unk3].pos2.x, &gSprites[ewram01000.unk4].pos2.x); - SwapValues_s16(&gSprites[ewram01000.unk3].data0, &gSprites[ewram01000.unk4].data0); + SwapValues_s16(&gSprites[ewram01000.unk3].data[0], &gSprites[ewram01000.unk4].data[0]); gSprites[ewram01000.unk3].callback = SpriteCB_sub_806D37C; gSprites[ewram01000.unk4].callback = SpriteCB_sub_806D37C; @@ -2729,7 +2729,7 @@ void sub_806D198(u8 taskId) gSprites[ewram01000.unk4].pos2.y = 0; gSprites[ewram01000.unk4].callback = UpdateMonIconFrame_806DA38; - spriteId = GetMonIconSpriteId(ewram01000.unk0, gSprites[ewram01000.unk2].data0); + spriteId = GetMonIconSpriteId(ewram01000.unk0, gSprites[ewram01000.unk2].data[0]); gSprites[spriteId].callback = UpdateMonIconFrame_806DA0C; SwapPokemon(&gPlayerParty[ewram01000.unk5], &gPlayerParty[ewram01000.unk6]); @@ -2752,15 +2752,15 @@ void SpriteCB_sub_806D37C(struct Sprite *sprite) { UpdateMonIconFrame(sprite); - if (sprite->pos2.x == sprite->data2) + if (sprite->pos2.x == sprite->data[2]) { - sprite->data0 *= -1; - sprite->data2 = 0; + sprite->data[0] *= -1; + sprite->data[2] = 0; sprite->callback = UpdateMonIconFrame_806DA38; } else { - sprite->pos2.x += sprite->data0; + sprite->pos2.x += sprite->data[0]; } } @@ -2802,8 +2802,8 @@ void sub_806D4AC(u8 taskId, u16 species, u8 c) u8 monIndex = c + 3; u8 spriteId = GetMonIconSpriteId(taskId, monIndex); - gSprites[spriteId].data0 = -8; - gSprites[spriteId].data2 = gTasks[taskId].data[0] * -8; + gSprites[spriteId].data[0] = -8; + gSprites[spriteId].data[2] = gTasks[taskId].data[0] * -8; gSprites[spriteId].callback = SpriteCB_sub_806D37C; } } @@ -3035,7 +3035,7 @@ void UpdateMonIconFrame_806DA44(u8 taskId, u8 monIndex, u8 c) { spriteId = GetMonIconSpriteId(taskId, monIndex); gSprites[spriteId].pos2.y = 0; - gSprites[spriteId].data0 = 0; + gSprites[spriteId].data[0] = 0; if (!c) { @@ -3057,7 +3057,7 @@ void LoadHeldItemIconGraphics(void) void SpriteCB_HeldItemIcon(struct Sprite *sprite) { - u8 data7 = sprite->data7; + u8 data7 = sprite->data[7]; if (gSprites[data7].invisible) { sprite->invisible = 1; @@ -3081,7 +3081,7 @@ void CreateHeldItemIcon(u8 a, u8 b) gSprites[spriteId].pos2.x = 4; gSprites[spriteId].pos2.y = 10; gSprites[spriteId].callback = SpriteCB_HeldItemIcon; - gSprites[spriteId].data7 = a; + gSprites[spriteId].data[7] = a; StartSpriteAnim(&gSprites[spriteId], b); gSprites[spriteId].callback(&gSprites[spriteId]); @@ -3138,8 +3138,8 @@ void CreateHeldItemIcons_806DC34(u8 taskId) gSprites[heldItemSpriteId].pos2.x = 4; gSprites[heldItemSpriteId].pos2.y = 10; - gSprites[heldItemSpriteId].data7 = monIconSpriteId; - gSprites[monIconSpriteId].data7 = heldItemSpriteId; + gSprites[heldItemSpriteId].data[7] = monIconSpriteId; + gSprites[monIconSpriteId].data[7] = heldItemSpriteId; SetHeldItemIconVisibility(taskId, i); gSprites[heldItemSpriteId].callback(&gSprites[heldItemSpriteId]); @@ -3158,8 +3158,8 @@ void CreateHeldItemIcon_806DCD4(u8 taskId, u8 monIndex, u16 item) gSprites[heldItemSpriteId].pos2.x = 4; gSprites[heldItemSpriteId].pos2.y = 10; - gSprites[heldItemSpriteId].data7 = monIconSpriteId; - gSprites[monIconSpriteId].data7 = heldItemSpriteId; + gSprites[heldItemSpriteId].data[7] = monIconSpriteId; + gSprites[monIconSpriteId].data[7] = heldItemSpriteId; if (!item) { @@ -3274,7 +3274,7 @@ _0806DD78: .4byte gSprites\n\ void SpriteCB_UpdateHeldItemIconPosition(struct Sprite *sprite) { - u8 spriteId = sprite->data7; + u8 spriteId = sprite->data[7]; sprite->pos1.x = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x; sprite->pos1.y = gSprites[spriteId].pos1.y; @@ -3334,7 +3334,7 @@ void SetMonIconSpriteId(u8 taskId, u8 monIndex, u8 spriteId) u16 GetMonHeldItemIconSpriteId(u8 taskId, u8 monIndex) { u8 spriteId = GetMonIconSpriteId(taskId, monIndex); - u8 retVal = gSprites[spriteId].data7; + u8 retVal = gSprites[spriteId].data[7]; return retVal; } @@ -4478,7 +4478,7 @@ void sub_806FA18(u8 taskId) gTasks[taskId].data[11] -= gTasks[taskId].data[12]; SetMonData(ewram1C000.pokemon, MON_DATA_HP, &gTasks[taskId].data[11]); SetMonIconAnim(GetMonIconSpriteId(ewram1C000.unk4, ewram01000.unk1), ewram1C000.pokemon); - ewram1C000.unk5 = gSprites[ewram01000.unk2].data0; + ewram1C000.unk5 = gSprites[ewram01000.unk2].data[0]; ewram1C000.pokemon = &gPlayerParty[ewram1C000.unk5]; gTasks[taskId].data[10] = GetMonData(ewram1C000.pokemon, MON_DATA_MAX_HP); gTasks[taskId].data[11] = GetMonData(ewram1C000.pokemon, MON_DATA_HP); diff --git a/src/field/pokeblock.c b/src/field/pokeblock.c index a4497295f..5aa03ff7a 100644 --- a/src/field/pokeblock.c +++ b/src/field/pokeblock.c @@ -971,25 +971,25 @@ static void sub_810C854(u8 taskId) static void sub_810C8D4(struct Sprite *sprite) { - if (sprite->data0 > 1) + if (sprite->data[0] > 1) { - sprite->data0 = 0; + sprite->data[0] = 0; } - switch (sprite->data0) + switch (sprite->data[0]) { case 0: sprite->oam.affineMode = 1; sprite->affineAnims = gSpriteAffineAnimTable_83F7F70; InitSpriteAffineAnim(sprite); - sprite->data0 = 1; - sprite->data1 = 0; + sprite->data[0] = 1; + sprite->data[1] = 0; break; case 1: - if (++sprite->data1 > 11) + if (++sprite->data[1] > 11) { sprite->oam.affineMode = 0; - sprite->data0 = 0; - sprite->data1 = 0; + sprite->data[0] = 0; + sprite->data[1] = 0; FreeOamMatrix(sprite->oam.matrixNum); sprite->callback = SpriteCallbackDummy; } diff --git a/src/field/region_map.c b/src/field/region_map.c index 973e7decc..241b38bf6 100644 --- a/src/field/region_map.c +++ b/src/field/region_map.c @@ -1121,9 +1121,9 @@ void CreateRegionMapCursor(u16 tileTag, u16 paletteTag) gRegionMap->cursorSprite->pos1.x = gRegionMap->cursorPosX * 8 + 4; gRegionMap->cursorSprite->pos1.y = gRegionMap->cursorPosY * 8 + 4; } - gRegionMap->cursorSprite->data1 = 2; - gRegionMap->cursorSprite->data2 = IndexOfSpritePaletteTag(paletteTag) * 16 + 0x0101; - gRegionMap->cursorSprite->data3 = 1; + gRegionMap->cursorSprite->data[1] = 2; + gRegionMap->cursorSprite->data[2] = IndexOfSpritePaletteTag(paletteTag) * 16 + 0x0101; + gRegionMap->cursorSprite->data[3] = 1; } } @@ -1139,12 +1139,12 @@ static void sub_80FBCA0(void) void unref_sub_80FBCD0(void) { - gRegionMap->cursorSprite->data3 = 1; + gRegionMap->cursorSprite->data[3] = 1; } void unref_sub_80FBCE0(void) { - gRegionMap->cursorSprite->data3 = 0; + gRegionMap->cursorSprite->data[3] = 0; } static const struct OamData sPlayerIconOamData = @@ -1259,16 +1259,16 @@ static void SpriteCB_PlayerIconZoomedIn(struct Sprite *sprite) { sprite->pos2.x = -(gRegionMap->scrollX * 2); sprite->pos2.y = -(gRegionMap->scrollY * 2); - sprite->data0 = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY; - sprite->data1 = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX; + sprite->data[0] = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY; + sprite->data[1] = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX; // Determine if sprite is on screen - if (sprite->data0 < -8 || sprite->data0 > 0xA8 || sprite->data1 < -8 || sprite->data1 > 0xF8) - sprite->data2 = FALSE; + if (sprite->data[0] < -8 || sprite->data[0] > 0xA8 || sprite->data[1] < -8 || sprite->data[1] > 0xF8) + sprite->data[2] = FALSE; else - sprite->data2 = TRUE; + sprite->data[2] = TRUE; - if (sprite->data2 == TRUE) + if (sprite->data[2] == TRUE) UpdateIconBlink(sprite); else sprite->invisible = TRUE; @@ -1284,10 +1284,10 @@ static void UpdateIconBlink(struct Sprite *sprite) if (gRegionMap->blinkPlayerIcon) { // Toggle visibility every 16 frames - sprite->data7++; - if (sprite->data7 > 16) + sprite->data[7]++; + if (sprite->data[7] > 16) { - sprite->data7 = 0; + sprite->data[7] = 0; sprite->invisible = !sprite->invisible; } } @@ -1691,7 +1691,7 @@ static void CreateCityTownFlyTargetIcons(void) else r7 += 3; StartSpriteAnim(&gSprites[spriteId], r7); - gSprites[spriteId].data0 = i; + gSprites[spriteId].data[0] = i; } canFlyFlag++; } @@ -1724,7 +1724,7 @@ static void CreateSpecialAreaFlyTargetIcons(void) gSprites[spriteId].oam.size = 1; gSprites[spriteId].callback = SpriteCB_FlyTargetIcons; StartSpriteAnim(&gSprites[spriteId], 6); - gSprites[spriteId].data0 = mapSectionId; + gSprites[spriteId].data[0] = mapSectionId; } } } @@ -1733,19 +1733,19 @@ static void CreateSpecialAreaFlyTargetIcons(void) static void SpriteCB_FlyTargetIcons(struct Sprite *sprite) { // Blink if our mapSectionId is the one selected on the map - if (ewram0_3.regionMap.mapSectionId == sprite->data0) + if (ewram0_3.regionMap.mapSectionId == sprite->data[0]) { // Toggle visibility every 16 frames - sprite->data1++; - if (sprite->data1 > 16) + sprite->data[1]++; + if (sprite->data[1] > 16) { - sprite->data1 = 0; + sprite->data[1] = 0; sprite->invisible = !sprite->invisible; } } else { - sprite->data1 = 16; + sprite->data[1] = 16; sprite->invisible = FALSE; } } diff --git a/src/field/rotating_gate.c b/src/field/rotating_gate.c index e8ab7e1bf..a672f3489 100644 --- a/src/field/rotating_gate.c +++ b/src/field/rotating_gate.c @@ -762,7 +762,7 @@ static u8 RotatingGate_CreateGate(u8 gateId, s16 deltaX, s16 deltaY) y = gate->y + 7; sprite = &gSprites[spriteId]; - sprite->data0 = gateId; + sprite->data[0] = gateId; sprite->coordOffsetEnabled = 1; sub_8060388(x + deltaX, y + deltaY, &sprite->pos1.x, &sprite->pos1.y); @@ -778,8 +778,8 @@ static void SpriteCallback_RotatingGate(struct Sprite *sprite) u8 orientation; u8 affineAnimation; - rotationDirection = sprite->data1; - orientation = sprite->data2; + rotationDirection = sprite->data[1]; + orientation = sprite->data[2]; RotatingGate_HideGatesOutsideViewport(sprite); @@ -804,7 +804,7 @@ static void SpriteCallback_RotatingGate(struct Sprite *sprite) StartSpriteAffineAnim(sprite, affineAnimation); } - sprite->data1 = ROTATE_NONE; + sprite->data[1] = ROTATE_NONE; } static void RotatingGate_HideGatesOutsideViewport(struct Sprite *sprite) @@ -1065,8 +1065,8 @@ static void RotatingGate_TriggerRotationAnimation(u8 gateId, int rotationDirecti if (gRotatingGate_GateSpriteIds[gateId] != MAX_SPRITES) { sprite = &gSprites[gRotatingGate_GateSpriteIds[gateId]]; - sprite->data1 = rotationDirection; - sprite->data2 = RotatingGate_GetGateOrientation(gateId); + sprite->data[1] = rotationDirection; + sprite->data[2] = RotatingGate_GetGateOrientation(gateId); } } diff --git a/src/field/starter_choose.c b/src/field/starter_choose.c index 2b28df4f0..49590f83a 100644 --- a/src/field/starter_choose.c +++ b/src/field/starter_choose.c @@ -324,24 +324,24 @@ void CB2_ChooseStarter(void) //Create hand sprite spriteId = CreateSprite(&gSpriteTemplate_83F77CC, 120, 56, 2); - gSprites[spriteId].data0 = taskId; + gSprites[spriteId].data[0] = taskId; //Create three Pokeball sprites spriteId = CreateSprite( &gSpriteTemplate_83F77E4, gStarterChoose_PokeballCoords[0][0], gStarterChoose_PokeballCoords[0][1], 2); - gSprites[spriteId].data0 = taskId; - gSprites[spriteId].data1 = 0; + gSprites[spriteId].data[0] = taskId; + gSprites[spriteId].data[1] = 0; spriteId = CreateSprite( &gSpriteTemplate_83F77E4, gStarterChoose_PokeballCoords[1][0], gStarterChoose_PokeballCoords[1][1], 2); - gSprites[spriteId].data0 = taskId; - gSprites[spriteId].data1 = 1; + gSprites[spriteId].data[0] = taskId; + gSprites[spriteId].data[1] = 1; spriteId = CreateSprite( &gSpriteTemplate_83F77E4, gStarterChoose_PokeballCoords[2][0], gStarterChoose_PokeballCoords[2][1], 2); - gSprites[spriteId].data0 = taskId; - gSprites[spriteId].data1 = 2; + gSprites[spriteId].data[0] = taskId; + gSprites[spriteId].data[1] = 2; } static void MainCallback2(void) @@ -727,16 +727,16 @@ static u8 CreatePokemonFrontSprite(u16 species, u8 x, u8 y) //Sprite callback static void sub_810A62C(struct Sprite *sprite) { - sprite->pos1.x = gUnknown_083F76E4[gTasks[sprite->data0].tStarterSelection][0]; - sprite->pos1.y = gUnknown_083F76E4[gTasks[sprite->data0].tStarterSelection][1]; - sprite->pos2.y = Sin(sprite->data1, 8); - sprite->data1 = (u8)sprite->data1 + 4; + sprite->pos1.x = gUnknown_083F76E4[gTasks[sprite->data[0]].tStarterSelection][0]; + sprite->pos1.y = gUnknown_083F76E4[gTasks[sprite->data[0]].tStarterSelection][1]; + sprite->pos2.y = Sin(sprite->data[1], 8); + sprite->data[1] = (u8)sprite->data[1] + 4; } //Sprite callback static void sub_810A68C(struct Sprite *sprite) { - if (gTasks[sprite->data0].tStarterSelection == sprite->data1) + if (gTasks[sprite->data[0]].tStarterSelection == sprite->data[1]) StartSpriteAnimIfDifferent(sprite, 1); else StartSpriteAnimIfDifferent(sprite, 0); diff --git a/src/field/trainer_see.c b/src/field/trainer_see.c index 85bd7ad0b..38bc6971c 100644 --- a/src/field/trainer_see.c +++ b/src/field/trainer_see.c @@ -485,11 +485,11 @@ void sub_8084894(struct Sprite *sprite, u16 a2, u8 a3) sprite->oam.priority = 1; sprite->coordOffsetEnabled = 1; - sprite->data0 = gFieldEffectArguments[0]; - sprite->data1 = gFieldEffectArguments[1]; - sprite->data2 = gFieldEffectArguments[2]; - sprite->data3 = -5; - sprite->data7 = a2; + sprite->data[0] = gFieldEffectArguments[0]; + sprite->data[1] = gFieldEffectArguments[1]; + sprite->data[2] = gFieldEffectArguments[2]; + sprite->data[3] = -5; + sprite->data[7] = a2; StartSpriteAnim(sprite, a3); } @@ -498,22 +498,22 @@ void objc_exclamation_mark_probably(struct Sprite *sprite) { u8 mapObjId; - if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjId) + if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data[0], sprite->data[1], sprite->data[2], &mapObjId) || sprite->animEnded) { - FieldEffectStop(sprite, (u8)sprite->data7); + FieldEffectStop(sprite, (u8)sprite->data[7]); } else { struct Sprite *mapObjSprite = &gSprites[gMapObjects[mapObjId].spriteId]; - sprite->data4 += sprite->data3; + sprite->data[4] += sprite->data[3]; sprite->pos1.x = mapObjSprite->pos1.x; sprite->pos1.y = mapObjSprite->pos1.y - 16; sprite->pos2.x = mapObjSprite->pos2.x; - sprite->pos2.y = mapObjSprite->pos2.y + sprite->data4; - if (sprite->data4) - sprite->data3++; + sprite->pos2.y = mapObjSprite->pos2.y + sprite->data[4]; + if (sprite->data[4]) + sprite->data[3]++; else - sprite->data3 = 0; + sprite->data[3] = 0; } } diff --git a/src/field/use_pokeblock.c b/src/field/use_pokeblock.c index 54ed89ef2..d301d93d6 100644 --- a/src/field/use_pokeblock.c +++ b/src/field/use_pokeblock.c @@ -893,11 +893,11 @@ static void sub_8137138(void) static void sub_81371DC(struct Sprite *sprite) { - if (sprite->data0 <= 5) + if (sprite->data[0] <= 5) sprite->pos2.y -= 2; - else if (sprite->data0 <= 11) + else if (sprite->data[0] <= 11) sprite->pos2.y += 2; - if ((++sprite->data0) > 60) + if ((++sprite->data[0]) > 60) { DestroySprite(sprite); gUnknown_02039304->unk54--; diff --git a/src/field/wallclock.c b/src/field/wallclock.c index 8db13dc2d..d86b1bc95 100644 --- a/src/field/wallclock.c +++ b/src/field/wallclock.c @@ -288,22 +288,22 @@ void CB2_StartWallClock(void) gTasks[taskId].tHourHandAngle = 300; spriteId = CreateSprite(&gSpriteTemplate_83F7AD8, DISPLAY_WIDTH / 2, DISPLAY_HEIGHT / 2, 1); - gSprites[spriteId].data0 = taskId; + gSprites[spriteId].data[0] = taskId; gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; gSprites[spriteId].oam.matrixNum = 0; spriteId = CreateSprite(&gSpriteTemplate_83F7AF0, DISPLAY_WIDTH / 2, DISPLAY_HEIGHT / 2, 0); - gSprites[spriteId].data0 = taskId; + gSprites[spriteId].data[0] = taskId; gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; gSprites[spriteId].oam.matrixNum = 1; spriteId = CreateSprite(&gSpriteTemplate_83F7B28, DISPLAY_WIDTH / 2, DISPLAY_HEIGHT / 2, 2); - gSprites[spriteId].data0 = taskId; - gSprites[spriteId].data1 = 45; + gSprites[spriteId].data[0] = taskId; + gSprites[spriteId].data[1] = 45; spriteId = CreateSprite(&gSpriteTemplate_83F7B40, DISPLAY_WIDTH / 2, DISPLAY_HEIGHT / 2, 2); - gSprites[spriteId].data0 = taskId; - gSprites[spriteId].data1 = 90; + gSprites[spriteId].data[0] = taskId; + gSprites[spriteId].data[1] = 90; WallClockInit(); } @@ -333,22 +333,22 @@ void CB2_ViewWallClock(void) } spriteId = CreateSprite(&gSpriteTemplate_83F7AD8, 120, 80, 1); - gSprites[spriteId].data0 = taskId; + gSprites[spriteId].data[0] = taskId; gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; gSprites[spriteId].oam.matrixNum = 0; spriteId = CreateSprite(&gSpriteTemplate_83F7AF0, 120, 80, 0); - gSprites[spriteId].data0 = taskId; + gSprites[spriteId].data[0] = taskId; gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; gSprites[spriteId].oam.matrixNum = 1; spriteId = CreateSprite(&gSpriteTemplate_83F7B28, 120, 80, 2); - gSprites[spriteId].data0 = taskId; - gSprites[spriteId].data1 = angle1; + gSprites[spriteId].data[0] = taskId; + gSprites[spriteId].data[1] = angle1; spriteId = CreateSprite(&gSpriteTemplate_83F7B40, 120, 80, 2); - gSprites[spriteId].data0 = taskId; - gSprites[spriteId].data1 = angle2; + gSprites[spriteId].data[0] = taskId; + gSprites[spriteId].data[1] = angle2; WallClockInit(); } @@ -968,7 +968,7 @@ static void sub_810B05C(struct Sprite *sprite) u16 x; u16 y; - angle = gTasks[sprite->data0].tMinuteHandAngle; + angle = gTasks[sprite->data[0]].tMinuteHandAngle; sin = Sin2(angle) / 16; cos = Cos2(angle) / 16; SetOamMatrix(0, cos, sin, -sin, cos); @@ -993,7 +993,7 @@ static void sub_810B0F4(struct Sprite *sprite) u16 x; u16 y; - angle = gTasks[sprite->data0].tHourHandAngle; + angle = gTasks[sprite->data[0]].tHourHandAngle; sin = Sin2(angle) / 16; cos = Cos2(angle) / 16; SetOamMatrix(1, cos, sin, -sin, cos); @@ -1015,23 +1015,23 @@ static void sub_810B18C(struct Sprite *sprite) s16 sin; s16 cos; - if (gTasks[sprite->data0].tPeriod != PERIOD_AM) + if (gTasks[sprite->data[0]].tPeriod != PERIOD_AM) { - if (sprite->data1 >= 60 && sprite->data1 < 90) - sprite->data1 += 5; - if (sprite->data1 < 60) - sprite->data1++; + if (sprite->data[1] >= 60 && sprite->data[1] < 90) + sprite->data[1] += 5; + if (sprite->data[1] < 60) + sprite->data[1]++; } else { - if (sprite->data1 > 45 && sprite->data1 <= 75) - sprite->data1 -= 5; - if (sprite->data1 > 75) - sprite->data1--; + if (sprite->data[1] > 45 && sprite->data[1] <= 75) + sprite->data[1] -= 5; + if (sprite->data[1] > 75) + sprite->data[1]--; } - cos = Cos2((u16)sprite->data1); + cos = Cos2((u16)sprite->data[1]); sprite->pos2.x = cos * 30 / 4096; - sin = Sin2((u16)sprite->data1); + sin = Sin2((u16)sprite->data[1]); sprite->pos2.y = sin * 30 / 4096; } @@ -1040,22 +1040,22 @@ static void sub_810B230(struct Sprite *sprite) s16 sin; s16 cos; - if (gTasks[sprite->data0].tPeriod != PERIOD_AM) + if (gTasks[sprite->data[0]].tPeriod != PERIOD_AM) { - if (sprite->data1 >= 105 && sprite->data1 < 135) - sprite->data1 += 5; - if (sprite->data1 < 105) - sprite->data1++; + if (sprite->data[1] >= 105 && sprite->data[1] < 135) + sprite->data[1] += 5; + if (sprite->data[1] < 105) + sprite->data[1]++; } else { - if (sprite->data1 > 90 && sprite->data1 <= 120) - sprite->data1 -= 5; - if (sprite->data1 > 120) - sprite->data1--; + if (sprite->data[1] > 90 && sprite->data[1] <= 120) + sprite->data[1] -= 5; + if (sprite->data[1] > 120) + sprite->data[1]--; } - cos = Cos2((u16)sprite->data1); + cos = Cos2((u16)sprite->data[1]); sprite->pos2.x = cos * 30 / 4096; - sin = Sin2((u16)sprite->data1); + sin = Sin2((u16)sprite->data[1]); sprite->pos2.y = sin * 30 / 4096; } -- cgit v1.2.3 From 79650185e2af1748a9728f6e9209d64f93cdb050 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sat, 18 Nov 2017 22:01:16 -0500 Subject: false positive --- src/field/field_tasks.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/field') diff --git a/src/field/field_tasks.c b/src/field/field_tasks.c index 95b8b749b..e938a57ef 100644 --- a/src/field/field_tasks.c +++ b/src/field/field_tasks.c @@ -197,7 +197,7 @@ const struct MetatileOffset *sub_80695E0(const struct MetatileOffset a0[][2], s8 void sub_8069638(const struct MetatileOffset offsets[][2], s16 x, s16 y, bool32 flag) { const struct MetatileOffset *offsetData = sub_80695E0(offsets, MapGridGetMetatileBehaviorAt(x, y)); - const struct MetatileOffset *offsetdata[2] = offsetData; + const struct MetatileOffset *offsetdata2 = offsetData; if (offsetData != NULL) { MapGridSetMetatileIdAt(x + offsetData[0].x, y + offsetData[0].y, offsetData[0].tileId); @@ -205,10 +205,10 @@ void sub_8069638(const struct MetatileOffset offsets[][2], s16 x, s16 y, bool32 { CurrentMapDrawMetatileAt(x + offsetData[0].x, y + offsetData[0].y); } - MapGridSetMetatileIdAt(x + offsetdata[2][1].x, y + offsetdata[2][1].y, offsetdata[2][1].tileId); + MapGridSetMetatileIdAt(x + offsetdata2[1].x, y + offsetdata2[1].y, offsetdata2[1].tileId); if (flag) { - CurrentMapDrawMetatileAt(x + offsetdata[2][1].x, y + offsetdata[2][1].y); + CurrentMapDrawMetatileAt(x + offsetdata2[1].x, y + offsetdata2[1].y); } } } -- cgit v1.2.3 From 9baa39f7082acfb1eb8b75603e440773504ad206 Mon Sep 17 00:00:00 2001 From: sceptillion <33798691+sceptillion@users.noreply.github.com> Date: Sat, 18 Nov 2017 23:35:08 -0800 Subject: decompile fldeff_recordmixing --- src/field/fldeff_recordmixing.c | 82 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 src/field/fldeff_recordmixing.c (limited to 'src/field') diff --git a/src/field/fldeff_recordmixing.c b/src/field/fldeff_recordmixing.c new file mode 100644 index 000000000..e7a1f20c4 --- /dev/null +++ b/src/field/fldeff_recordmixing.c @@ -0,0 +1,82 @@ +#include "global.h" +#include "field_map_obj.h" +#include "sprite.h" + +extern const struct OamData gFieldOamData_32x8; + +static const u8 sSpriteImage_83D26C0[] = INCBIN_U8("graphics/unknown_sprites/83D2860/0.4bpp"); +static const u8 sSpriteImage_83D2740[] = INCBIN_U8("graphics/unknown_sprites/83D2860/1.4bpp"); +static const u8 sSpriteImage_83D27C0[] = INCBIN_U8("graphics/unknown_sprites/83D2860/2.4bpp"); +static const u16 sPalette_3D2840[] = INCBIN_U16("graphics/unknown/unknown_3D2840.gbapal"); + + +static const struct SpriteFrameImage sSpriteImageTable_83FD950[] = +{ + { sSpriteImage_83D26C0, sizeof(sSpriteImage_83D26C0) }, + { sSpriteImage_83D2740, sizeof(sSpriteImage_83D26C0) }, + { sSpriteImage_83D27C0, sizeof(sSpriteImage_83D26C0) }, +}; + +static const struct SpritePalette sUnknown_083D2878 = { sPalette_3D2840, 0x1000 }; + +static const union AnimCmd sSpriteAnim_83D2880[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_FRAME(1, 30), + ANIMCMD_FRAME(2, 30), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd *const sSpriteAnimTable_83D2890[] = +{ + sSpriteAnim_83D2880, +}; + +static const struct SpriteTemplate sSpriteTemplate_83D2894 = +{ + .tileTag = 0xFFFF, + .paletteTag = 0x1000, + .oam = &gFieldOamData_32x8, + .anims = sSpriteAnimTable_83D2890, + .images = sSpriteImageTable_83FD950, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, +}; + +u8 CreateRecordMixingSprite(void) +{ + u8 spriteId; + + LoadSpritePalette(&sUnknown_083D2878); + + spriteId = CreateSprite(&sSpriteTemplate_83D2894, 0, 0, 82); + + if (spriteId == MAX_SPRITES) + { + return MAX_SPRITES; + } + else + { + struct Sprite *sprite = &gSprites[spriteId]; + sub_8060388(16, 13, &sprite->pos1.x, &sprite->pos1.y); + sprite->coordOffsetEnabled = TRUE; + sprite->pos1.x += 16; + sprite->pos1.y += 2; + } + + return spriteId; +} + +void DestroyRecordMixingSprite(void) +{ + int i; + + for (i = 0; i < MAX_SPRITES; i++) + { + if (gSprites[i].template == &sSpriteTemplate_83D2894) + { + FreeSpritePalette(&gSprites[i]); + DestroySprite(&gSprites[i]); + } + } +} -- cgit v1.2.3 From 557fd1958dca6dfed792e584bd16e47282697963 Mon Sep 17 00:00:00 2001 From: sceptillion <33798691+sceptillion@users.noreply.github.com> Date: Sun, 19 Nov 2017 00:20:19 -0800 Subject: decompile fldeff_poison --- src/field/fldeff_poison.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 src/field/fldeff_poison.c (limited to 'src/field') diff --git a/src/field/fldeff_poison.c b/src/field/fldeff_poison.c new file mode 100644 index 000000000..b751ee564 --- /dev/null +++ b/src/field/fldeff_poison.c @@ -0,0 +1,43 @@ +#include "global.h" +#include "task.h" +#include "songs.h" +#include "sound.h" + +static void Task_FieldPoisonEffect(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + switch (data[0]) + { + case 0: + data[1] += 2; + if (data[1] > 8) + { + data[0]++; + } + break; + case 1: + data[1] -= 2; + if (data[1] == 0) + { + data[0]++; + } + break; + case 2: + DestroyTask(taskId); + return; + } + + REG_MOSAIC = (data[1] << 4) | data[1]; +} + +void DoFieldPoisonEffect() +{ + PlaySE(SE_DOKU); + CreateTask(Task_FieldPoisonEffect, 80); +} + +bool8 FieldPoisonEffectIsRunning(void) +{ + return FuncIsActiveTask(Task_FieldPoisonEffect); +} -- cgit v1.2.3 From 04c85d0e4fa13f08a98d343333d85a8815757705 Mon Sep 17 00:00:00 2001 From: sceptillion <33798691+sceptillion@users.noreply.github.com> Date: Sun, 19 Nov 2017 00:22:01 -0800 Subject: int to s32 --- src/field/fldeff_recordmixing.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/field') diff --git a/src/field/fldeff_recordmixing.c b/src/field/fldeff_recordmixing.c index e7a1f20c4..c0e3cd515 100644 --- a/src/field/fldeff_recordmixing.c +++ b/src/field/fldeff_recordmixing.c @@ -69,7 +69,7 @@ u8 CreateRecordMixingSprite(void) void DestroyRecordMixingSprite(void) { - int i; + s32 i; for (i = 0; i < MAX_SPRITES; i++) { -- cgit v1.2.3 From c65aa069fa1d8b8e4e668f470d502536013c6a1e Mon Sep 17 00:00:00 2001 From: sceptillion <33798691+sceptillion@users.noreply.github.com> Date: Sun, 19 Nov 2017 00:27:51 -0800 Subject: headers for fldeff_poison and fldeff_recordmixing --- src/field/field_poison.c | 2 +- src/field/fldeff_poison.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'src/field') diff --git a/src/field/field_poison.c b/src/field/field_poison.c index b6ff12ff9..74d70cb36 100644 --- a/src/field/field_poison.c +++ b/src/field/field_poison.c @@ -1,7 +1,7 @@ #include "global.h" #include "field_poison.h" #include "field_message_box.h" -#include "fldeff_80C5CD4.h" +#include "fldeff_poison.h" #include "pokemon.h" #include "pokemon_summary_screen.h" #include "script.h" diff --git a/src/field/fldeff_poison.c b/src/field/fldeff_poison.c index b751ee564..8f4edb215 100644 --- a/src/field/fldeff_poison.c +++ b/src/field/fldeff_poison.c @@ -31,13 +31,13 @@ static void Task_FieldPoisonEffect(u8 taskId) REG_MOSAIC = (data[1] << 4) | data[1]; } -void DoFieldPoisonEffect() +void DoFieldPoisonEffect(void) { PlaySE(SE_DOKU); CreateTask(Task_FieldPoisonEffect, 80); } -bool8 FieldPoisonEffectIsRunning(void) +bool32 FieldPoisonEffectIsRunning(void) { return FuncIsActiveTask(Task_FieldPoisonEffect); } -- cgit v1.2.3 From 58614a9a09b7066f37e6ee4715f139c04ad59d5a Mon Sep 17 00:00:00 2001 From: sceptillion <33798691+sceptillion@users.noreply.github.com> Date: Sun, 19 Nov 2017 00:30:55 -0800 Subject: include headers in corresponding source files --- src/field/fldeff_poison.c | 1 + src/field/fldeff_recordmixing.c | 1 + 2 files changed, 2 insertions(+) (limited to 'src/field') diff --git a/src/field/fldeff_poison.c b/src/field/fldeff_poison.c index 8f4edb215..0a0cf5539 100644 --- a/src/field/fldeff_poison.c +++ b/src/field/fldeff_poison.c @@ -1,4 +1,5 @@ #include "global.h" +#include "fldeff_poison.h" #include "task.h" #include "songs.h" #include "sound.h" diff --git a/src/field/fldeff_recordmixing.c b/src/field/fldeff_recordmixing.c index c0e3cd515..88d5a9969 100644 --- a/src/field/fldeff_recordmixing.c +++ b/src/field/fldeff_recordmixing.c @@ -1,5 +1,6 @@ #include "global.h" #include "field_map_obj.h" +#include "fldeff_recordmixing.h" #include "sprite.h" extern const struct OamData gFieldOamData_32x8; -- cgit v1.2.3 From 41c347c815627e03d81625260e55835a9b592c00 Mon Sep 17 00:00:00 2001 From: sceptillion <33798691+sceptillion@users.noreply.github.com> Date: Sun, 19 Nov 2017 00:37:19 -0800 Subject: fix sizeof copy/paste error --- src/field/fldeff_recordmixing.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/field') diff --git a/src/field/fldeff_recordmixing.c b/src/field/fldeff_recordmixing.c index 88d5a9969..16cad58f8 100644 --- a/src/field/fldeff_recordmixing.c +++ b/src/field/fldeff_recordmixing.c @@ -14,8 +14,8 @@ static const u16 sPalette_3D2840[] = INCBIN_U16("graphics/unknown/unknown_3D2840 static const struct SpriteFrameImage sSpriteImageTable_83FD950[] = { { sSpriteImage_83D26C0, sizeof(sSpriteImage_83D26C0) }, - { sSpriteImage_83D2740, sizeof(sSpriteImage_83D26C0) }, - { sSpriteImage_83D27C0, sizeof(sSpriteImage_83D26C0) }, + { sSpriteImage_83D2740, sizeof(sSpriteImage_83D2740) }, + { sSpriteImage_83D27C0, sizeof(sSpriteImage_83D27C0) }, }; static const struct SpritePalette sUnknown_083D2878 = { sPalette_3D2840, 0x1000 }; -- cgit v1.2.3 From e0e5d070fa7a19235c6e8ba9b57b618ff86b8895 Mon Sep 17 00:00:00 2001 From: sceptillion <33798691+sceptillion@users.noreply.github.com> Date: Sun, 19 Nov 2017 01:31:09 -0800 Subject: decompile fldeff_secret_base_pc --- src/field/fldeff_secret_base_pc.c | 69 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 src/field/fldeff_secret_base_pc.c (limited to 'src/field') diff --git a/src/field/fldeff_secret_base_pc.c b/src/field/fldeff_secret_base_pc.c new file mode 100644 index 000000000..ead970b27 --- /dev/null +++ b/src/field/fldeff_secret_base_pc.c @@ -0,0 +1,69 @@ +#include "global.h" +#include "event_data.h" +#include "field_camera.h" +#include "field_effect.h" +#include "field_player_avatar.h" +#include "fieldmap.h" +#include "script.h" +#include "songs.h" +#include "sound.h" +#include "task.h" + +static void Task_SecretBasePCTurnOn(u8); + +u32 FldEff_SecretBasePCTurnOn(void) +{ + s16 x, y; + u8 taskId; + + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); + taskId = CreateTask(Task_SecretBasePCTurnOn, 0); + gTasks[taskId].data[0] = x; + gTasks[taskId].data[1] = y; + gTasks[taskId].data[2] = 0; + + return 0; +} + +static void Task_SecretBasePCTurnOn(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + switch (data[2]) + { + case 4: + case 12: + MapGridSetMetatileIdAt(data[0], data[1], 548); + CurrentMapDrawMetatileAt(data[0], data[1]); + break; + case 8: + case 16: + MapGridSetMetatileIdAt(data[0], data[1], 544); + CurrentMapDrawMetatileAt(data[0], data[1]); + break; + case 20: + MapGridSetMetatileIdAt(data[0], data[1], 548); + CurrentMapDrawMetatileAt(data[0], data[1]); + FieldEffectActiveListRemove(FLDEFF_SECRET_BASE_PC_TURN_ON); + EnableBothScriptContexts(); + DestroyTask(taskId); + return; + } + + data[2]++; +} + +void DoSecretBasePCTurnOffEffect(void) +{ + s16 x, y; + + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); + PlaySE(SE_PC_OFF); + + if (!VarGet(VAR_0x4054)) + MapGridSetMetatileIdAt(x, y, 3616); + else + MapGridSetMetatileIdAt(x, y, 3617); + + CurrentMapDrawMetatileAt(x, y); +} -- cgit v1.2.3 From f3f3af1027ca1c0459e077f4dc98391bbbe821e4 Mon Sep 17 00:00:00 2001 From: sceptillion <33798691+sceptillion@users.noreply.github.com> Date: Sun, 19 Nov 2017 02:21:18 -0800 Subject: decompile fldeff_berrytree --- src/field/fldeff_berrytree.c | 56 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 src/field/fldeff_berrytree.c (limited to 'src/field') diff --git a/src/field/fldeff_berrytree.c b/src/field/fldeff_berrytree.c new file mode 100644 index 000000000..0763c0314 --- /dev/null +++ b/src/field/fldeff_berrytree.c @@ -0,0 +1,56 @@ +#include "global.h" +#include "field_map_obj.h" +#include "field_player_avatar.h" +#include "script.h" + +static void Task_WateringBerryTreeAnim_0(u8); +static void Task_WateringBerryTreeAnim_1(u8); +static void Task_WateringBerryTreeAnim_2(u8); +static void Task_WateringBerryTreeAnim_3(u8); + +static void Task_WateringBerryTreeAnim_0(u8 taskId) +{ + gTasks[taskId].func = Task_WateringBerryTreeAnim_1; +} + +static void Task_WateringBerryTreeAnim_1(u8 taskId) +{ + struct MapObject *mapObject = &gMapObjects[gPlayerAvatar.mapObjectId]; + if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(mapObject) + || FieldObjectClearAnimIfSpecialAnimFinished(mapObject)) + { + sub_8059D08(player_get_direction_lower_nybble()); + FieldObjectSetSpecialAnim(mapObject, GetStepInPlaceDelay16AnimId(player_get_direction_lower_nybble())); + gTasks[taskId].func = Task_WateringBerryTreeAnim_2; + } +} + +static void Task_WateringBerryTreeAnim_2(u8 taskId) +{ + struct MapObject *mapObject = &gMapObjects[gPlayerAvatar.mapObjectId]; + if (FieldObjectClearAnimIfSpecialAnimFinished(mapObject)) + { + s16 value = gTasks[taskId].data[1]++; + + if (value < 10) + { + FieldObjectSetSpecialAnim(mapObject, GetStepInPlaceDelay16AnimId(player_get_direction_lower_nybble())); + } + else + { + gTasks[taskId].func = Task_WateringBerryTreeAnim_3; + } + } +} + +static void Task_WateringBerryTreeAnim_3(u8 taskId) +{ + SetPlayerAvatarTransitionFlags(sub_80597D0()); + DestroyTask(taskId); + EnableBothScriptContexts(); +} + +void DoWateringBerryTreeAnim(void) +{ + CreateTask(Task_WateringBerryTreeAnim_0, 80); +} -- cgit v1.2.3 From f4b39ff81d4387b4a29bad7d9bb0a223721773c9 Mon Sep 17 00:00:00 2001 From: sceptillion <33798691+sceptillion@users.noreply.github.com> Date: Sun, 19 Nov 2017 10:16:42 -0800 Subject: decompile fldeff_secretpower --- src/field/field_effect.c | 2 +- src/field/fldeff_cut.c | 2 - src/field/fldeff_secretpower.c | 304 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 305 insertions(+), 3 deletions(-) create mode 100644 src/field/fldeff_secretpower.c (limited to 'src/field') diff --git a/src/field/field_effect.c b/src/field/field_effect.c index e15dc906f..0ccbb6230 100644 --- a/src/field/field_effect.c +++ b/src/field/field_effect.c @@ -28,7 +28,7 @@ #define subsprite_table(ptr) {.subsprites = ptr, .subspriteCount = (sizeof ptr) / (sizeof(struct Subsprite))} -EWRAM_DATA u32 gFieldEffectArguments[8] = {0}; +EWRAM_DATA s32 gFieldEffectArguments[8] = {0}; const u32 gSpriteImage_839DC14[] = INCBIN_U32("graphics/birch_speech/birch.4bpp"); const u16 gBirchPalette[16] = INCBIN_U16("graphics/birch_speech/birch.gbapal"); diff --git a/src/field/fldeff_cut.c b/src/field/fldeff_cut.c index 6e7f14a8c..599c916a2 100644 --- a/src/field/fldeff_cut.c +++ b/src/field/fldeff_cut.c @@ -23,8 +23,6 @@ extern void (*gUnknown_03005CE4)(void); extern struct SpriteTemplate gSpriteTemplate_CutGrass; -extern struct MapPosition gUnknown_0203923C; - extern u8 gLastFieldPokeMenuOpened; extern u8 S_UseCut[]; diff --git a/src/field/fldeff_secretpower.c b/src/field/fldeff_secretpower.c new file mode 100644 index 000000000..fd1548c46 --- /dev/null +++ b/src/field/fldeff_secretpower.c @@ -0,0 +1,304 @@ +#include "global.h" +#include "event_data.h" +#include "fieldmap.h" +#include "field_effect.h" +#include "field_player_avatar.h" +#include "metatile_behavior.h" +#include "metatile_behaviors.h" +#include "overworld.h" +#include "pokemon_menu.h" +#include "rom6.h" +#include "script.h" +#include "secret_base.h" +#include "songs.h" +#include "sound.h" + +extern u8 gUnknown_081A2CE6[]; +extern u8 gUnknown_081A2D3E[]; +extern u8 gUnknown_081A2D96[]; + +extern struct SpriteTemplate gSpriteTemplate_83D2614; +extern struct SpriteTemplate gSpriteTemplate_83D262C; +extern struct SpriteTemplate gSpriteTemplate_83D2644; + +void sub_80C639C(void); +void sub_80C63E8(void); +void sub_80C6468(struct Sprite *); +void sub_80C6498(struct Sprite *); +void sub_80C64A8(void); +void sub_80C64F4(void); +void sub_80C65C4(struct Sprite *); +void sub_80C65FC(struct Sprite *); +void sub_80C660C(void); +void sub_80C6658(void); +void sub_80C66D8(struct Sprite *sprite); +void sub_80C6708(struct Sprite *sprite); + +void sub_80C6264(void) +{ + sub_80BBFD8(&gUnknown_0203923C, gMapHeader.events); + sub_80BB5E4(); +} + +void sub_80C6280(void) +{ + switch (gFieldEffectArguments[1]) + { + case 1: + gFieldEffectArguments[5] = 8; + gFieldEffectArguments[6] = 40; + break; + case 2: + gFieldEffectArguments[5] = 8; + gFieldEffectArguments[6] = 8; + break; + case 3: + gFieldEffectArguments[5] = -8; + gFieldEffectArguments[6] = 24; + break; + case 4: + gFieldEffectArguments[5] = 24; + gFieldEffectArguments[6] = 24; + break; + } +} + +bool8 SetUpFieldMove_SecretPower(void) +{ + u8 behavior; + + sub_80BB63C(); + + if (gScriptResult == 1 || player_get_direction_lower_nybble() != 2) + return FALSE; + + GetXYCoordsOneStepInFrontOfPlayer(&gUnknown_0203923C.x, &gUnknown_0203923C.y); + behavior = MapGridGetMetatileBehaviorAt(gUnknown_0203923C.x, gUnknown_0203923C.y); + + if (MetatileBehavior_IsSecretBaseCave(behavior) == TRUE) + { + sub_80C6264(); + gFieldCallback = FieldCallback_Teleport; + gUnknown_03005CE4 = sub_80C639C; + return TRUE; + } + + if (MetatileBehavior_IsSecretBaseTree(behavior) == TRUE) + { + sub_80C6264(); + gFieldCallback = FieldCallback_Teleport; + gUnknown_03005CE4 = sub_80C64A8; + return TRUE; + } + + if (MetatileBehavior_IsSecretBaseShrub(behavior) == TRUE) + { + sub_80C6264(); + gFieldCallback = FieldCallback_Teleport; + gUnknown_03005CE4 = sub_80C660C; + return TRUE; + } + + return FALSE; +} + +void sub_80C639C(void) +{ + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; + ScriptContext1_SetupScript(gUnknown_081A2CE6); +} + +bool8 FldEff_UseSecretPowerCave(void) +{ + u8 taskId = oei_task_add(); + + gTasks[taskId].data[8] = (uintptr_t)sub_80C63E8 >> 16; + gTasks[taskId].data[9] = (uintptr_t)sub_80C63E8; + + return FALSE; +} + +void sub_80C63E8(void) +{ + FieldEffectActiveListRemove(FLDEFF_USE_SECRET_POWER_CAVE); + FieldEffectStart(FLDEFF_SECRET_POWER_CAVE); +} + +bool8 FldEff_SecretPowerCave(void) +{ + sub_80C6280(); + CreateSprite( + &gSpriteTemplate_83D2614, + gSprites[gPlayerAvatar.spriteId].oam.x + gFieldEffectArguments[5], + gSprites[gPlayerAvatar.spriteId].oam.y + gFieldEffectArguments[6], + 148); + return FALSE; +} + +void sub_80C644C(struct Sprite *sprite) +{ + PlaySE(SE_W088); + sprite->data[0] = 0; + sprite->callback = sub_80C6468; +} + +void sub_80C6468(struct Sprite *sprite) +{ + if (sprite->data[0] < 40) + { + sprite->data[0]++; + if (sprite->data[0] == 20 ) + sub_80BB800(); + } + else + { + sprite->data[0] = 0; + sprite->callback = sub_80C6498; + } +} + +void sub_80C6498(struct Sprite *sprite) +{ + FieldEffectStop(sprite, FLDEFF_SECRET_POWER_CAVE); + EnableBothScriptContexts(); +} + +void sub_80C64A8(void) +{ + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; + ScriptContext1_SetupScript(gUnknown_081A2D3E); +} + +bool8 FldEff_UseSecretPowerTree(void) +{ + u8 taskId = oei_task_add(); + + gTasks[taskId].data[8] = (uintptr_t)sub_80C64F4 >> 16; + gTasks[taskId].data[9] = (uintptr_t)sub_80C64F4; + + return FALSE; +} + +void sub_80C64F4(void) +{ + FieldEffectActiveListRemove(FLDEFF_USE_SECRET_POWER_TREE); + FieldEffectStart(FLDEFF_SECRET_POWER_TREE); +} + +bool8 FldEff_SecretPowerTree(void) +{ + s16 behavior = MapGridGetMetatileBehaviorAt(gUnknown_0203923C.x, gUnknown_0203923C.y) & 0xFFF; + + if (behavior == MB_SECRET_BASE_SPOT_TREE_1) + { + gFieldEffectArguments[7] = 0; + } + + if (behavior == MB_SECRET_BASE_SPOT_TREE_2) + { + gFieldEffectArguments[7] = 2; + } + + sub_80C6280(); + + CreateSprite( + &gSpriteTemplate_83D262C, + gSprites[gPlayerAvatar.spriteId].oam.x + gFieldEffectArguments[5], + gSprites[gPlayerAvatar.spriteId].oam.y + gFieldEffectArguments[6], + 148); + + if (gFieldEffectArguments[7] == 1 || gFieldEffectArguments[7] == 3) + sub_80BB800(); + + return FALSE; +} + +void sub_80C6598(struct Sprite *sprite) +{ + PlaySE(SE_W010); + sprite->animNum = gFieldEffectArguments[7]; + sprite->data[0] = 0; + sprite->callback = sub_80C65C4; +} + +void sub_80C65C4(struct Sprite *sprite) +{ + sprite->data[0]++; + + if (sprite->data[0] >= 40) + { + if (gFieldEffectArguments[7] == 0 || gFieldEffectArguments[7] == 2) + sub_80BB800(); + sprite->data[0] = 0; + sprite->callback = sub_80C65FC; + } +} + + +void sub_80C65FC(struct Sprite *sprite) +{ + FieldEffectStop(sprite, FLDEFF_SECRET_POWER_TREE); + EnableBothScriptContexts(); +} + +void sub_80C660C(void) +{ + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; + ScriptContext1_SetupScript(gUnknown_081A2D96); +} + +bool8 FldEff_UseSecretPowerShrub(void) +{ + u8 taskId = oei_task_add(); + + gTasks[taskId].data[8] = (uintptr_t)sub_80C6658 >> 16; + gTasks[taskId].data[9] = (uintptr_t)sub_80C6658; + + return FALSE; +} + +void sub_80C6658(void) +{ + FieldEffectActiveListRemove(FLDEFF_USE_SECRET_POWER_SHRUB); + FieldEffectStart(FLDEFF_SECRET_POWER_SHRUB); +} + +bool8 FldEff_SecretPowerShrub(void) +{ + sub_80C6280(); + CreateSprite( + &gSpriteTemplate_83D2644, + gSprites[gPlayerAvatar.spriteId].oam.x + gFieldEffectArguments[5], + gSprites[gPlayerAvatar.spriteId].oam.y + gFieldEffectArguments[6], + 148); + return FALSE; +} + +void sub_80C66BC(struct Sprite *sprite) +{ + PlaySE(SE_W077); + sprite->data[0] = 0; + sprite->callback = sub_80C66D8; +} + +void sub_80C66D8(struct Sprite *sprite) +{ + if (sprite->data[0] < 40) + { + sprite->data[0]++; + if (sprite->data[0] == 20 ) + sub_80BB800(); + } + else + { + sprite->data[0] = 0; + sprite->callback = sub_80C6708; + } +} + + +void sub_80C6708(struct Sprite *sprite) +{ + FieldEffectStop(sprite, FLDEFF_SECRET_POWER_SHRUB); + EnableBothScriptContexts(); +} -- cgit v1.2.3 From 1c89a72946a463abae5d3331174c764f1e9109b5 Mon Sep 17 00:00:00 2001 From: sceptillion <33798691+sceptillion@users.noreply.github.com> Date: Sun, 19 Nov 2017 10:18:06 -0800 Subject: s32 to int --- src/field/fldeff_recordmixing.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/field') diff --git a/src/field/fldeff_recordmixing.c b/src/field/fldeff_recordmixing.c index 16cad58f8..ec72885b5 100644 --- a/src/field/fldeff_recordmixing.c +++ b/src/field/fldeff_recordmixing.c @@ -70,7 +70,7 @@ u8 CreateRecordMixingSprite(void) void DestroyRecordMixingSprite(void) { - s32 i; + int i; for (i = 0; i < MAX_SPRITES; i++) { -- cgit v1.2.3 From 6db242de730e5d6871aa012c9dcfd893fde463d4 Mon Sep 17 00:00:00 2001 From: sceptillion <33798691+sceptillion@users.noreply.github.com> Date: Sun, 19 Nov 2017 14:54:29 -0800 Subject: decompile fldeff_decoration --- src/field/fldeff_decoration.c | 309 ++++++++++++++++++++++++++++++++++++++++++ src/field/secret_base.c | 6 +- 2 files changed, 310 insertions(+), 5 deletions(-) create mode 100644 src/field/fldeff_decoration.c (limited to 'src/field') diff --git a/src/field/fldeff_decoration.c b/src/field/fldeff_decoration.c new file mode 100644 index 000000000..d754aed43 --- /dev/null +++ b/src/field/fldeff_decoration.c @@ -0,0 +1,309 @@ +#include "global.h" +#include "event_data.h" +#include "field_camera.h" +#include "field_effect.h" +#include "field_map_obj.h" +#include "field_player_avatar.h" +#include "fieldmap.h" +#include "script.h" +#include "songs.h" +#include "sound.h" +#include "string_util.h" +#include "strings.h" +#include "task.h" +#include "text.h" + +extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[36]; +extern const struct SpriteTemplate gSpriteTemplate_83D26A0; + +static void sub_80C68EC(u8); +static void DoBalloonSoundEffect(s16); +void SpriteCB_SandPillar_0(struct Sprite *); +void SpriteCB_SandPillar_1(struct Sprite *); +void SpriteCB_SandPillar_2(struct Sprite *); + +void sub_80C68A4(s16 metatileId, s16 x, s16 y) +{ + u8 taskId = CreateTask(sub_80C68EC, 0); + + gTasks[taskId].data[0] = metatileId; + gTasks[taskId].data[1] = x; + gTasks[taskId].data[2] = y; + gTasks[taskId].data[3] = 0; + gTasks[taskId].data[4] = 1; +} + +static void sub_80C68EC(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + if (data[3] == 6) + data[3] = 0; + else + data[3]++; + + if (data[3] == 0) + { + if (data[4] == 2) + DoBalloonSoundEffect(data[0]); + MapGridSetMetatileIdAt(data[1], data[2], data[0] + data[4]); + CurrentMapDrawMetatileAt(data[1], data[2]); + if (data[4] == 3) + DestroyTask(taskId); + else + data[4]++; + } +} + +static void DoBalloonSoundEffect(s16 metatileId) +{ + switch (metatileId) + { + case 824: + PlaySE(SE_FUUSEN1); + break; + case 828: + PlaySE(SE_FUUSEN2); + break; + case 832: + PlaySE(SE_FUUSEN3); + break; + case 552: + PlaySE(SE_TOY_DANGO); + break; + } +} + +bool8 FldEff_Nop47(void) +{ + return FALSE; +} + +bool8 FldEff_Nop48(void) +{ + return FALSE; +} + +static void sub_80C69C4(s16 x, s16 y) +{ + PlaySE(SE_TOY_KABE); + MapGridSetMetatileIdAt(x, y, 630); + MapGridSetMetatileIdAt(x, y - 1, 622); + CurrentMapDrawMetatileAt(x, y); + CurrentMapDrawMetatileAt(x, y - 1); +} + +static void sub_80C6A14(u8 taskId) +{ + if (gTasks[taskId].data[0] == 7) + { + sub_80C69C4(gTasks[taskId].data[1], gTasks[taskId].data[2]); + DestroyTask(taskId); + } + else + { + gTasks[taskId].data[0]++; + } +} + +void sub_80C6A54(s16 x, s16 y) +{ + u8 dir = player_get_direction_lower_nybble(); + if (dir == 1) + { + sub_80C69C4(x, y); + } + else if (dir == 2) + { + u8 taskId = CreateTask(sub_80C6A14, 5); + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = x; + gTasks[taskId].data[2] = y; + } +} + +static void Task_DecorationSoundEffect(u8 taskId) +{ + if (gTasks[taskId].data[1] == 7) + { + switch (gTasks[taskId].data[0]) + { + case 632: + PlaySE(SE_TOY_C); + break; + case 633: + PlaySE(SE_TOY_D); + break; + case 634: + PlaySE(SE_TOY_E); + break; + case 635: + PlaySE(SE_TOY_F); + break; + case 636: + PlaySE(SE_TOY_G); + break; + case 637: + PlaySE(SE_TOY_A); + break; + case 638: + PlaySE(SE_TOY_B); + break; + case 691: + PlaySE(SE_TOY_C1); + break; + } + + DestroyTask(taskId); + } + else + { + gTasks[taskId].data[1]++; + } +} + +void DoDecorationSoundEffect(s16 arg) +{ + u8 taskId = CreateTask(Task_DecorationSoundEffect, 5); + gTasks[taskId].data[0] = arg; + gTasks[taskId].data[1] = 0; +} + +void SpriteCB_YellowCave4Sparkle(struct Sprite *sprite) +{ + sprite->data[0]++; + if (sprite->data[0] == 8) + PlaySE(SE_W215); + if (sprite->data[0] >= 32) + DestroySprite(sprite); +} + +void DoYellowCave4Sparkle(void) +{ + s16 x = gMapObjects[gPlayerAvatar.mapObjectId].coords2.x; + s16 y = gMapObjects[gPlayerAvatar.mapObjectId].coords2.y; + u8 spriteId; + + sub_8060470(&x, &y, 8, 4); + spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[22], x, y, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].coordOffsetEnabled = TRUE; + gSprites[spriteId].oam.priority = 1; + gSprites[spriteId].oam.paletteNum = 5; + gSprites[spriteId].callback = SpriteCB_YellowCave4Sparkle; + gSprites[spriteId].data[0] = 0; + } +} + +bool8 FldEff_SandPillar(void) +{ + s16 x, y; + + ScriptContext2_Enable(); + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); + gFieldEffectArguments[5] = x; + gFieldEffectArguments[6] = y; + + switch (player_get_direction_lower_nybble()) + { + case 1: + CreateSprite( + &gSpriteTemplate_83D26A0, + gSprites[gPlayerAvatar.spriteId].oam.x + 8, + gSprites[gPlayerAvatar.spriteId].oam.y + 32, + 0); + break; + case 2: + CreateSprite( + &gSpriteTemplate_83D26A0, + gSprites[gPlayerAvatar.spriteId].oam.x + 8, + gSprites[gPlayerAvatar.spriteId].oam.y, + 148); + break; + case 3: + CreateSprite( + &gSpriteTemplate_83D26A0, + gSprites[gPlayerAvatar.spriteId].oam.x - 8, + gSprites[gPlayerAvatar.spriteId].oam.y + 16, + 148); + break; + case 4: + CreateSprite( + &gSpriteTemplate_83D26A0, + gSprites[gPlayerAvatar.spriteId].oam.x + 24, + gSprites[gPlayerAvatar.spriteId].oam.y + 16, + 148); + break; + } + + return FALSE; +} + +void SpriteCB_SandPillar_0(struct Sprite *sprite) +{ + PlaySE(SE_W088); + if (MapGridGetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6] - 1) == 646) + MapGridSetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6] - 1, 3586); + else + MapGridSetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6] - 1, 644); + MapGridSetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6], 522); + CurrentMapDrawMetatileAt(gFieldEffectArguments[5], gFieldEffectArguments[6] - 1); + CurrentMapDrawMetatileAt(gFieldEffectArguments[5], gFieldEffectArguments[6]); + sprite->data[0] = 0; + sprite->callback = SpriteCB_SandPillar_1; +} + +void SpriteCB_SandPillar_1(struct Sprite *sprite) +{ + if (sprite->data[0] < 18) + { + sprite->data[0]++; + } + else + { + MapGridSetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6], 3724); + CurrentMapDrawMetatileAt(gFieldEffectArguments[5], gFieldEffectArguments[6]); + sprite->data[0] = 0; + sprite->callback = SpriteCB_SandPillar_2; + } +} + +void SpriteCB_SandPillar_2(struct Sprite *sprite) +{ + FieldEffectStop(sprite, FLDEFF_SAND_PILLAR); + EnableBothScriptContexts(); +} + +void GetShieldToyTVDecorationInfo(void) +{ + s16 x, y; + s32 metatileId; + + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); + + metatileId = MapGridGetMetatileIdAt(x, y); + + switch (metatileId) + { + case 822: + ConvertIntToDecimalStringN(gStringVar1, 100, STR_CONV_MODE_LEFT_ALIGN, 3); + StringCopy(gStringVar2, gSecretBaseText_GoldRank); + gScriptResult = 0; + break; + case 734: + ConvertIntToDecimalStringN(gStringVar1, 50, STR_CONV_MODE_LEFT_ALIGN, 2); + StringCopy(gStringVar2, gSecretBaseText_SilverRank); + gScriptResult = 0; + break; + case 756: + gScriptResult = 1; + break; + case 757: + gScriptResult = 2; + break; + case 758: + gScriptResult = 3; + break; + } +} diff --git a/src/field/secret_base.c b/src/field/secret_base.c index 8c1b7c8c1..34352f39a 100644 --- a/src/field/secret_base.c +++ b/src/field/secret_base.c @@ -12,6 +12,7 @@ #include "field_specials.h" #include "field_weather.h" #include "fieldmap.h" +#include "fldeff_decoration.h" #include "link.h" #include "main.h" #include "sound.h" @@ -47,11 +48,6 @@ static void sub_80BCBF8(u8 taskId); static void sub_80BCC54(u8 taskId); static void Task_SecretBasePC_Registry(u8 taskId); -extern void DoDecorationSoundEffect(s16 metatileId); -extern void sub_80C6A54(s16 x, s16 y); -extern void sub_80C68A4(s16 metatileId, s16 x, s16 y); -extern void DoYellowCave4Sparkle(void); - extern u8 gUnknown_0815F399[]; extern u8 gUnknown_0815F49A[]; extern u8 gUnknown_020387DC; -- cgit v1.2.3 From 71ab629e9e4f29fc502411d41b0fd53064d94e02 Mon Sep 17 00:00:00 2001 From: sceptillion <33798691+sceptillion@users.noreply.github.com> Date: Sun, 19 Nov 2017 19:34:43 -0800 Subject: use direction enums --- src/field/fldeff_decoration.c | 12 ++++++------ src/field/fldeff_secretpower.c | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) (limited to 'src/field') diff --git a/src/field/fldeff_decoration.c b/src/field/fldeff_decoration.c index d754aed43..b0ac30062 100644 --- a/src/field/fldeff_decoration.c +++ b/src/field/fldeff_decoration.c @@ -109,11 +109,11 @@ static void sub_80C6A14(u8 taskId) void sub_80C6A54(s16 x, s16 y) { u8 dir = player_get_direction_lower_nybble(); - if (dir == 1) + if (dir == DIR_SOUTH) { sub_80C69C4(x, y); } - else if (dir == 2) + else if (dir == DIR_NORTH) { u8 taskId = CreateTask(sub_80C6A14, 5); gTasks[taskId].data[0] = 0; @@ -207,28 +207,28 @@ bool8 FldEff_SandPillar(void) switch (player_get_direction_lower_nybble()) { - case 1: + case DIR_SOUTH: CreateSprite( &gSpriteTemplate_83D26A0, gSprites[gPlayerAvatar.spriteId].oam.x + 8, gSprites[gPlayerAvatar.spriteId].oam.y + 32, 0); break; - case 2: + case DIR_NORTH: CreateSprite( &gSpriteTemplate_83D26A0, gSprites[gPlayerAvatar.spriteId].oam.x + 8, gSprites[gPlayerAvatar.spriteId].oam.y, 148); break; - case 3: + case DIR_WEST: CreateSprite( &gSpriteTemplate_83D26A0, gSprites[gPlayerAvatar.spriteId].oam.x - 8, gSprites[gPlayerAvatar.spriteId].oam.y + 16, 148); break; - case 4: + case DIR_EAST: CreateSprite( &gSpriteTemplate_83D26A0, gSprites[gPlayerAvatar.spriteId].oam.x + 24, diff --git a/src/field/fldeff_secretpower.c b/src/field/fldeff_secretpower.c index fd1548c46..5ec4407ae 100644 --- a/src/field/fldeff_secretpower.c +++ b/src/field/fldeff_secretpower.c @@ -69,7 +69,7 @@ bool8 SetUpFieldMove_SecretPower(void) sub_80BB63C(); - if (gScriptResult == 1 || player_get_direction_lower_nybble() != 2) + if (gScriptResult == 1 || player_get_direction_lower_nybble() != DIR_NORTH) return FALSE; GetXYCoordsOneStepInFrontOfPlayer(&gUnknown_0203923C.x, &gUnknown_0203923C.y); -- cgit v1.2.3 From 0f0d652f4d8b0347f086ee6aab899f4b1c461839 Mon Sep 17 00:00:00 2001 From: sceptillion <33798691+sceptillion@users.noreply.github.com> Date: Sun, 19 Nov 2017 22:31:29 -0800 Subject: clean up unknown_task variables --- src/field/field_screen_effect.c | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) (limited to 'src/field') diff --git a/src/field/field_screen_effect.c b/src/field/field_screen_effect.c index 0c76d254d..a18190809 100644 --- a/src/field/field_screen_effect.c +++ b/src/field/field_screen_effect.c @@ -9,16 +9,6 @@ #include "text.h" #include "unknown_task.h" -struct UnknownStruct1 -{ - u8 filler0[0x14]; - u8 unk14; - u8 filler15[0xB]; -}; -extern struct UnknownStruct1 gUnknown_03004DC0; - -extern u16 gUnknown_03004DE0[][0x3C0]; - const static u16 gUnknown_0839ACDC[] = { 0xC8, 0x48, 0x38, 0x28, 0x18, 0x0 }; const s32 gMaxFlashLevel = 4; @@ -74,11 +64,11 @@ static void sub_8081424(u8 taskId) switch (data[0]) { case 0: - sub_8081398(&gUnknown_03004DE0[gUnknown_03004DC0.unk14][0], data[1], data[2], data[3]); + sub_8081398(&gUnknown_03004DE0[gUnknown_03004DC0.srcBank][0], data[1], data[2], data[3]); data[0] = 1; break; case 1: - sub_8081398(&gUnknown_03004DE0[gUnknown_03004DC0.unk14][0], data[1], data[2], data[3]); + sub_8081398(&gUnknown_03004DE0[gUnknown_03004DC0.srcBank][0], data[1], data[2], data[3]); data[0] = 0; data[3] += data[5]; if (data[3] > data[4]) -- cgit v1.2.3 From e404d27e64305859e058d95946547143656b9a50 Mon Sep 17 00:00:00 2001 From: sceptillion <33798691+sceptillion@users.noreply.github.com> Date: Mon, 20 Nov 2017 21:41:42 -0800 Subject: partially decompile pc_screen_effect --- src/field/pc_screen_effect.c | 128 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 src/field/pc_screen_effect.c (limited to 'src/field') diff --git a/src/field/pc_screen_effect.c b/src/field/pc_screen_effect.c new file mode 100644 index 000000000..364fca0aa --- /dev/null +++ b/src/field/pc_screen_effect.c @@ -0,0 +1,128 @@ +#include "global.h" +#include "main.h" +#include "palette.h" +#include "sprite.h" + +struct UnkStruct +{ + /*0x00*/ u16 tileTag; + /*0x02*/ u16 paletteTag; + /*0x04*/ u16 unk04; + /*0x06*/ u16 unk06; + /*0x08*/ u16 unk08; + /*0x0A*/ u16 unk0A; + /*0x0C*/ s16 unk0C; + /*0x10*/ u32 selectedPalettes; +}; + +void sub_80C603C(void); +void sub_80C6078(void); +void sub_80C60CC(struct Sprite *); +void sub_80C6130(struct Sprite *); +void sub_80C61B0(IntrFunc); +void ClearGpuRegBits(void); + +extern const struct OamData gOamData_83D18D8; + +extern const union AnimCmd *const gSpriteAnimTable_83D18E8[]; + +extern const u16 gUnknownPal_083D18EC[16]; + +extern const u8 gUnknownGfx_083D190C[128]; + +extern struct UnkStruct *gUnknown_020387EC; + +const struct SpriteSheet gUnknown_083D1898 = { gUnknownGfx_083D190C, sizeof(gUnknownGfx_083D190C), 0 }; + +const struct SpritePalette gUnknown_083D18A0 = { gUnknownPal_083D18EC, 0 }; + +const struct SpriteTemplate gSpriteTemplate_83D18A8 = +{ + 0, + 0, + &gOamData_83D18D8, + gSpriteAnimTable_83D18E8, + NULL, + gDummySpriteAffineAnimTable, + sub_80C60CC, +}; + +const struct SpriteTemplate gSpriteTemplate_83D18C0 = +{ + 0, + 0, + &gOamData_83D18D8, + gSpriteAnimTable_83D18E8, + NULL, + gDummySpriteAffineAnimTable, + sub_80C6130, +}; + +void sub_80C5CD4(struct UnkStruct *unkStruct) +{ + u16 i; + + struct SpriteSheet sprSheet = gUnknown_083D1898; + struct SpritePalette sprPalette = gUnknown_083D18A0; + struct SpriteTemplate sprTemplate = gSpriteTemplate_83D18A8; + + sprSheet.tag = unkStruct->tileTag; + sprTemplate.tileTag = unkStruct->tileTag; + sprPalette.tag = unkStruct->paletteTag; + sprTemplate.paletteTag = unkStruct->paletteTag; + + LoadSpriteSheet(&sprSheet); + LoadSpritePalette(&sprPalette); + + unkStruct->unk0C = 1; + unkStruct->unk0A = 0; + unkStruct->unk08 = 0; + unkStruct->selectedPalettes = ~(0x10000 << IndexOfSpritePaletteTag(unkStruct->paletteTag)) & 0xFFFF0000; + + if (unkStruct->unk04 == 0) + unkStruct->unk04 = 16; + + if (unkStruct->unk06 == 0) + unkStruct->unk06 = 20; + + gUnknown_020387EC = unkStruct; + + for (i = 0; i < 8; i++) + { + u8 spriteId = CreateSprite(&sprTemplate, 32 * i + 8, 80, 0); + if (spriteId == MAX_SPRITES) + break; + gSprites[spriteId].data[0] = (i < 4) ? -unkStruct->unk04 : unkStruct->unk04; + } + + REG_BLDCNT = 191; + REG_BLDY = 16; +} + +bool8 sub_80C5DCC(void) +{ + if (gUnknown_020387EC->unk08 == 0) + { + BlendPalettes(gUnknown_020387EC->selectedPalettes, 0x10, 0xFFFF); + sub_80C61B0(sub_80C603C); + gUnknown_020387EC->unk08++; + } + + if (gUnknown_020387EC->unk0A < 8) + return FALSE; + + gUnknown_020387EC->unk0C += gUnknown_020387EC->unk06; + + if (gUnknown_020387EC->unk0C >= 80) + { + gUnknown_020387EC->unk0C = 80; + REG_BLDCNT = 0; + REG_BLDY = 0; + ClearGpuRegBits(); + return TRUE; + } + else + { + return FALSE; + } +} -- cgit v1.2.3 From c9a21f43bd074e532c745560b1d7d412f6ea8456 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sat, 25 Nov 2017 13:11:38 -0600 Subject: split field_weather.c and convert more data --- src/field/field_weather.c | 1640 +++++++++---------------------------------- src/field/field_weather_2.c | 1511 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 1838 insertions(+), 1313 deletions(-) create mode 100644 src/field/field_weather_2.c (limited to 'src/field') diff --git a/src/field/field_weather.c b/src/field/field_weather.c index acd8b81ff..2d4711b81 100644 --- a/src/field/field_weather.c +++ b/src/field/field_weather.c @@ -26,110 +26,18 @@ struct WeatherPaletteData u16 data[0][0x1000]; // unknown length }; -struct Weather +struct WeatherCallbacks { - struct Sprite *unknown_0[24]; - struct Sprite *unknown_60[0x65]; // snowflakes? - struct Sprite *unknown_1F4[3]; - u8 unknown_200[2][32]; - u8 filler_240[0x460-0x240]; - u8 unk460[2][32]; - u8 filler4A0[0x6B6-0x4A0]; - s8 unknown_6B6; - u8 filler_6B7[0xC0-0xB7]; - s8 unknown_6C0; - s8 unknown_6C1; - u8 unknown_6C2; - u8 unknown_6C3; - u16 unknown_6C4; - u8 unknown_6C6; - u8 unknown_6C7; - u8 unknown_6C8; - u8 unknown_6C9; - u8 unknown_6CA; - u8 unknown_6CB; - u16 unknown_6CC; - u16 unknown_6CE; - u8 unknown_6D0; - u8 unknown_6D1; - u8 unknown_6D2; - u8 unknown_6D3; - u8 unknown_6D4; - u8 unknown_6D5; - u16 unknown_6D6; - u8 unknown_6D8; - u8 unknown_6D9; - u8 unknown_6DA; - u8 unknown_6DB; - u8 unknown_6DC; - u8 unknown_6DD; - u8 unknown_6DE; - u8 filler_6DF[1]; - u16 unknown_6E0; - u16 unknown_6E2; - u8 unknown_6E4; - u8 unknown_6E5; - u16 unknown_6E6; - u16 unknown_6E8; - u8 unknown_6EA; - u8 unknown_6EB; - u8 unknown_6EC; - u8 unknown_6ED; - u16 unknown_6EE; - u16 unknown_6F0; - u16 unknown_6F2; - u8 unknown_6F4[6]; - u8 unknown_6FA; - u8 unknown_6FB; - u8 filler_6FC[4]; - u8 unknown_700; - u8 filler_701[0x15]; - u8 unknown_716; - u8 unknown_717; - u8 filler_718[0xc]; - u8 unknown_724; - u8 filler_725[9]; - u8 unknown_72E; - u8 filler_72F; - u16 unknown_730; - u16 unknown_732; - u16 unknown_734; - u16 unknown_736; - u8 unknown_738; - u8 unknown_739; - u8 unknown_73A; - u8 filler_73B[0x3C-0x3B]; - s16 unknown_73C; - s16 unknown_73E; - s16 unknown_740; - s16 unknown_742; - u8 filler_744[0xD-4]; - s8 unknown_74D; - u8 unknown_74E; + void (*func0)(void); + void (*func1)(void); + void (*func2)(void); + u8 (*func3)(void); }; -#define gWeather gUnknown_0202F7E8 -extern struct Weather gUnknown_0202F7E8; +extern struct Weather gWeather; extern u8 gUnknown_0202FF38[]; extern u16 gUnknown_0202FF58; -extern u8 *gUnknown_083970E8; -extern u8 (*gUnknown_08396FC8[][4])(void); -extern u8 (*gUnknown_083970B8[])(void); IWRAM_DATA const u8 *gUnknown_030006DC; -extern const u8 gUnknown_083970C8[]; - -// This is a pointer to gWeather. All code sub_807DE78 and below uses this pointer, -// while everything above accesses gWeather directly. -extern struct Weather *const gUnknown_08396FC4; - -extern const struct SpriteSheet gUnknown_0839A9D4; -extern const struct SpriteTemplate gSpriteTemplate_839A9F0; -extern const u16 gUnknown_08397108[]; -//extern const s16 gUnknown_0839A9C8[][2]; -extern const struct Coords16 gUnknown_0839A9C8[]; -extern const struct SpriteSheet gUnknown_0839AACC; -extern const struct SpriteTemplate gSpriteTemplate_839AAA4; -extern const struct SpriteTemplate gSpriteTemplate_839AB04; const u8 DroughtPaletteData_0[] = INCBIN_U8("graphics/weather/drought0.bin.lz"); const u8 DroughtPaletteData_1[] = INCBIN_U8("graphics/weather/drought1.bin.lz"); @@ -151,71 +59,202 @@ const u8 *const gUnknown_08396FA8[] = gSharedMem, }; +// This is a pointer to gWeather. All code in this file accesses gWeather directly, +// while code in other field weather files accesses gWeather through this pointer. +// This is likely the result of compiler optimization, since using the pointer in +// this file produces the same result as accessing gWeather directly. +struct Weather *const gWeatherPtr = &gWeather; + +void sub_807CAE8(void); +void nullsub_38(void); +u8 sub_807CB0C(void); +void sub_807DE78(void); +void sub_807DEF4(void); +void sub_807DEC4(void); +u8 sub_807DF54(void); +void sub_807DF9C(void); +void nullsub_55(void); +void sub_807DFC0(void); +u8 sub_807DFD0(void); +void LightRain_InitVars(void); +void sub_807E400(void); +void sub_807E3D0(void); +u8 sub_807E460(void); +void Snow_InitVars(void); +void snowflakes_progress2(void); +void sub_807EA18(void); +u8 sub_807EAC0(void); +void sub_807EE80(void); +void sub_807EFC0(void); +void sub_807EEF4(void); +u8 sub_807F34C(void); +void sub_807F49C(void); +void sub_807F52C(void); +void sub_807F4FC(void); +u8 sub_807F5EC(void); +void sub_807F7F8(void); +void sub_807F888(void); +void sub_807F858(void); +u8 sub_807F934(void); +void sub_807FE9C(void); +void sub_807FF4C(void); +void sub_807FF1C(void); +u8 sub_807FFC8(void); +void sub_807FB24(void); +void sub_807FBD8(void); +void sub_807FBA8(void); +u8 sub_807FC3C(void); +void sub_807F49C(void); +void sub_807F52C(void); +void sub_807F4FC(void); +u8 sub_807F5EC(void); +void sub_8080430(void); +void nullsub_56(void); +void sub_8080460(void); +u8 sub_8080470(void); +void sub_807E110(void); +void sub_807E174(void); +void sub_807E144(void); +u8 sub_807E258(void); +void sub_807EF24(void); +void sub_807EFC0(void); +void sub_807EF90(void); +u8 sub_807F34C(void); +void sub_8080474(void); +void sub_80804F8(void); +void sub_80804C8(void); +u8 sub_808056C(void); + +const struct WeatherCallbacks gUnknown_08396FC8[] = +{ + {sub_807CAE8, nullsub_38, sub_807CAE8, sub_807CB0C}, + {sub_807DE78, sub_807DEF4, sub_807DEC4, sub_807DF54}, + {sub_807DF9C, nullsub_55, sub_807DFC0, sub_807DFD0}, + {LightRain_InitVars, sub_807E400, sub_807E3D0, sub_807E460}, // light rain + {Snow_InitVars, snowflakes_progress2, sub_807EA18, sub_807EAC0}, // snow + {sub_807EE80, sub_807EFC0, sub_807EEF4, sub_807F34C}, + {sub_807F49C, sub_807F52C, sub_807F4FC, sub_807F5EC}, + {sub_807F7F8, sub_807F888, sub_807F858, sub_807F934}, + {sub_807FE9C, sub_807FF4C, sub_807FF1C, sub_807FFC8}, + {sub_807FB24, sub_807FBD8, sub_807FBA8, sub_807FC3C}, + {sub_807F49C, sub_807F52C, sub_807F4FC, sub_807F5EC}, + {sub_8080430, nullsub_56, sub_8080460, sub_8080470}, + {sub_807E110, sub_807E174, sub_807E144, sub_807E258}, + {sub_807EF24, sub_807EFC0, sub_807EF90, sub_807F34C}, + {sub_8080474, sub_80804F8, sub_80804C8, sub_808056C}, +}; + +void (*const gUnknown_083970B8[])(void) = +{ + sub_807CC24, + sub_807CCAC, + nullsub_39, + nullsub_39, +}; + +const u8 gUnknown_083970C8[] = +{ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0, + 0, + 2, + 1, + 2, + 2, + 2, + 2, + 1, + 1, + 1, + 1, + 2, + 1, + 1, + 1, + 1, + 1, +}; + +const u16 gUnknown_083970E8[] = INCBIN_U16("graphics/weather/0.gbapal"); + void sub_807C828(void) { u8 index; - if (!FuncIsActiveTask(&sub_807CA34)) + if (!FuncIsActiveTask(sub_807CA34)) { index = AllocSpritePalette(0x1200); - CpuCopy32(&gUnknown_083970E8, &gPlttBufferUnfaded[0x100 + index * 16], 32); + CpuCopy32(gUnknown_083970E8, &gPlttBufferUnfaded[0x100 + index * 16], 32); sub_807CB10(); - gWeather.unknown_6D5 = index; - gWeather.unknown_6D4 = AllocSpritePalette(0x1201); - gWeather.unknown_6DA = 0; - gWeather.unknown_6D8 = 0; - gWeather.unknown_6DE = 0; - gWeather.unknown_6E4 = 0; - gWeather.unknown_700 = 0; - gWeather.unknown_6FB = 0; - gWeather.unknown_724 = 0; - gWeather.unknown_716 = 0; - gWeather.unknown_717 = 0; - gWeather.unknown_72E = 0; - gWeather.unknown_6FA = 0; + gWeatherPtr->unknown_6D5 = index; + gWeatherPtr->unknown_6D4 = AllocSpritePalette(0x1201); + gWeatherPtr->unknown_6DA = 0; + gWeatherPtr->unknown_6D8 = 0; + gWeatherPtr->unknown_6DE = 0; + gWeatherPtr->unknown_6E4 = 0; + gWeatherPtr->unknown_700 = 0; + gWeatherPtr->unknown_6FB = 0; + gWeatherPtr->unknown_724 = 0; + gWeatherPtr->unknown_716 = 0; + gWeatherPtr->unknown_717 = 0; + gWeatherPtr->unknown_72E = 0; + gWeatherPtr->unknown_6FA = 0; sub_807DB64(16, 0); - gWeather.unknown_6D0 = 0; - gWeather.unknown_6C6 = 3; - gWeather.unknown_6C8 = 0; - gWeather.unknown_6D3 = 1; - gWeather.unknown_6C9 = CreateTask(sub_807C9E4, 80); + gWeatherPtr->currWeather = 0; + gWeatherPtr->unknown_6C6 = 3; + gWeatherPtr->unknown_6C8 = 0; + gWeatherPtr->unknown_6D3 = 1; + gWeatherPtr->unknown_6C9 = CreateTask(sub_807C9E4, 80); } } void DoWeatherEffect(u8 effect) { - if (effect != 3 && effect != 5 && effect != 13) + if (effect != WEATHER_RAIN_LIGHT && effect != WEATHER_RAIN_MED && effect != WEATHER_RAIN_HEAVY) { PlayRainSoundEffect(); } - if (gWeather.unknown_6D1 != effect && gWeather.unknown_6D0 == effect) + if (gWeatherPtr->unknown_6D1 != effect && gWeatherPtr->currWeather == effect) { - gUnknown_08396FC8[effect][0](); + gUnknown_08396FC8[effect].func0(); } - gWeather.unknown_6D3 = 0; - gWeather.unknown_6D1 = effect; - gWeather.unknown_6CE = 0; + gWeatherPtr->unknown_6D3 = 0; + gWeatherPtr->unknown_6D1 = effect; + gWeatherPtr->unknown_6CE = 0; } void sub_807C988(u8 effect) { PlayRainSoundEffect(); - gWeather.unknown_6D0 = effect; - gWeather.unknown_6D1 = effect; + gWeatherPtr->currWeather = effect; + gWeatherPtr->unknown_6D1 = effect; } void sub_807C9B4(u8 effect) { PlayRainSoundEffect(); - gWeather.unknown_6D0 = effect; - gWeather.unknown_6D1 = effect; - gWeather.unknown_6C8 = 1; + gWeatherPtr->currWeather = effect; + gWeatherPtr->unknown_6D1 = effect; + gWeatherPtr->unknown_6C8 = 1; } void sub_807C9E4(u8 taskId) { - if (gWeather.unknown_6C8) + if (gWeatherPtr->unknown_6C8) { - gUnknown_08396FC8[gWeather.unknown_6D0][2](); + gUnknown_08396FC8[gWeatherPtr->currWeather].func2(); gTasks[taskId].func = sub_807CA34; } } @@ -223,36 +262,36 @@ void sub_807C9E4(u8 taskId) void sub_807CA34(u8 task) { u8 v1; - if (gWeather.unknown_6D0 != gWeather.unknown_6D1) + if (gWeatherPtr->currWeather != gWeatherPtr->unknown_6D1) { - v1 = gUnknown_08396FC8[gWeather.unknown_6D0][3](); + v1 = gUnknown_08396FC8[gWeatherPtr->currWeather].func3(); if (!v1) { - gUnknown_08396FC8[gWeather.unknown_6D1][0](); - gWeather.unknown_6C3 = 0; // compiler reuses v1 - gWeather.unknown_6C6 = 0; // compiler reuses v1 - gWeather.unknown_6D0 = gWeather.unknown_6D1; - gWeather.unknown_6D3 = 1; + gUnknown_08396FC8[gWeatherPtr->unknown_6D1].func0(); + gWeatherPtr->unknown_6C3 = 0; // compiler reuses v1 + gWeatherPtr->unknown_6C6 = 0; // compiler reuses v1 + gWeatherPtr->currWeather = gWeatherPtr->unknown_6D1; + gWeatherPtr->unknown_6D3 = 1; } } else { - gUnknown_08396FC8[gWeather.unknown_6D0][1](); + gUnknown_08396FC8[gWeatherPtr->currWeather].func1(); } - gUnknown_083970B8[gWeather.unknown_6C6](); + gUnknown_083970B8[gWeatherPtr->unknown_6C6](); } void sub_807CAE8(void) { - gWeather.unknown_6C1 = 0; - gWeather.unknown_6C2 = 0; + gWeatherPtr->unknown_6C1 = 0; + gWeatherPtr->unknown_6C2 = 0; } void nullsub_38(void) { } -u32 sub_807CB0C(void) +u8 sub_807CB0C(void) { return 0; } @@ -274,9 +313,9 @@ void sub_807CB10(void) for (v0 = 0; v0 <= 1; v0++) { if (v0 == 0) - v1 = gWeather.unknown_200; + v1 = gWeatherPtr->unknown_200; else - v1 = gWeather.unk460; + v1 = gWeatherPtr->unk460; for (v2 = 0; (u16)v2 <= 0x1f; v2++) { @@ -332,53 +371,53 @@ void sub_807CB10(void) void sub_807CC24(void) { - if (gWeather.unknown_6C0 == gWeather.unknown_6C1) + if (gWeatherPtr->unknown_6C0 == gWeatherPtr->unknown_6C1) { - gWeather.unknown_6C6 = 3; + gWeatherPtr->unknown_6C6 = 3; } else { - if (++gWeather.unknown_6C3 >= gWeather.unknown_6C2) + if (++gWeatherPtr->unknown_6C3 >= gWeatherPtr->unknown_6C2) { - gWeather.unknown_6C3 = 0; - if (gWeather.unknown_6C0 < gWeather.unknown_6C1) - gWeather.unknown_6C0++; + gWeatherPtr->unknown_6C3 = 0; + if (gWeatherPtr->unknown_6C0 < gWeatherPtr->unknown_6C1) + gWeatherPtr->unknown_6C0++; else - gWeather.unknown_6C0--; - sub_807CEBC(0, 0x20, gWeather.unknown_6C0); + gWeatherPtr->unknown_6C0--; + sub_807CEBC(0, 0x20, gWeatherPtr->unknown_6C0); } } } void sub_807CCAC(void) { - if (++gWeather.unknown_6CB > 1) - gWeather.unknown_6CA = 0; - switch (gWeather.unknown_6D0) + if (++gWeatherPtr->unknown_6CB > 1) + gWeatherPtr->unknown_6CA = 0; + switch (gWeatherPtr->currWeather) { - case 3: - case 4: - case 5: + case WEATHER_RAIN_LIGHT: + case WEATHER_RAIN_MED: + case WEATHER_RAIN_HEAVY: + case WEATHER_SNOW: case 11: - case 13: if (sub_807CDC4() == 0) { - gWeather.unknown_6C0 = 3; - gWeather.unknown_6C6 = 3; + gWeatherPtr->unknown_6C0 = 3; + gWeatherPtr->unknown_6C6 = 3; } break; case 12: if (sub_807CE24() == 0) { - gWeather.unknown_6C0 = -6; - gWeather.unknown_6C6 = 3; + gWeatherPtr->unknown_6C0 = -6; + gWeatherPtr->unknown_6C6 = 3; } break; case 6: if (sub_807CE7C() == 0) { - gWeather.unknown_6C0 = 0; - gWeather.unknown_6C6 = 3; + gWeatherPtr->unknown_6C0 = 0; + gWeatherPtr->unknown_6C6 = 3; } break; case 7: @@ -388,8 +427,8 @@ void sub_807CCAC(void) default: if (!gPaletteFade.active) { - gWeather.unknown_6C0 = gWeather.unknown_6C1; - gWeather.unknown_6C6 = 3; + gWeatherPtr->unknown_6C0 = gWeatherPtr->unknown_6C1; + gWeatherPtr->unknown_6C6 = 3; } break; } @@ -397,38 +436,38 @@ void sub_807CCAC(void) u8 sub_807CDC4(void) { - if (gWeather.unknown_6C7 == 0x10) + if (gWeatherPtr->unknown_6C7 == 0x10) return 0; - if (++gWeather.unknown_6C7 >= 0x10) + if (++gWeatherPtr->unknown_6C7 >= 0x10) { sub_807CEBC(0, 0x20, 3); - gWeather.unknown_6C7 = 0x10; + gWeatherPtr->unknown_6C7 = 0x10; return 0; } - sub_807D1BC(0, 0x20, 3, 0x10 - gWeather.unknown_6C7, gWeather.unknown_6C4); + sub_807D1BC(0, 0x20, 3, 0x10 - gWeatherPtr->unknown_6C7, gWeatherPtr->unknown_6C4); return 1; } u8 sub_807CE24(void) { - if (gWeather.unknown_6C7 == 0x10) + if (gWeatherPtr->unknown_6C7 == 0x10) return 0; - if (++gWeather.unknown_6C7 >= 0x10) + if (++gWeatherPtr->unknown_6C7 >= 0x10) { sub_807CEBC(0, 0x20, -6); - gWeather.unknown_6C7 = 0x10; + gWeatherPtr->unknown_6C7 = 0x10; return 0; } - sub_807D304(-6, 0x10 - gWeather.unknown_6C7, gWeather.unknown_6C4); + sub_807D304(-6, 0x10 - gWeatherPtr->unknown_6C7, gWeatherPtr->unknown_6C4); return 1; } u8 sub_807CE7C(void) { - if (gWeather.unknown_6C7 == 0x10) + if (gWeatherPtr->unknown_6C7 == 0x10) return 0; - ++gWeather.unknown_6C7; - sub_807D424(0x10 - gWeather.unknown_6C7, gWeather.unknown_6C4); + ++gWeatherPtr->unknown_6C7; + sub_807D424(0x10 - gWeatherPtr->unknown_6C7, gWeatherPtr->unknown_6C4); return 1; } @@ -460,10 +499,10 @@ void sub_807CEBC(u8 a, u8 b, s8 c) { u8 r, g, b; - if (gUnknown_030006DC[r4] == 2 || r4 - 16 == gWeather.unknown_6D5) - r6 = gWeather.unk460[c]; + if (gUnknown_030006DC[r4] == 2 || r4 - 16 == gWeatherPtr->unknown_6D5) + r6 = gWeatherPtr->unk460[c]; else - r6 = gWeather.unknown_200[c]; + r6 = gWeatherPtr->unknown_200[c]; if (r4 == 16 || r4 > 0x1B) { for (i = 0; i < 16; i++) @@ -567,9 +606,9 @@ void sub_807D1BC(u8 a1, u8 a2, s8 c, u8 d, u16 e) u8 *r5; if (gUnknown_030006DC[r4] == 1) - r5 = gWeather.unknown_200[c]; + r5 = gWeatherPtr->unknown_200[c]; else - r5 = gWeather.unk460[c]; + r5 = gWeatherPtr->unk460[c]; for (i = 0; i < 16; i++) { @@ -695,10 +734,10 @@ void sub_807D424(u8 a, u16 b) void sub_807D540(u8 a) { - if (gWeather.unknown_6FA < 6) + if (gWeatherPtr->unknown_6FA < 6) { - gWeather.unknown_6F4[gWeather.unknown_6FA] = a; - gWeather.unknown_6FA++; + gWeatherPtr->unknown_6F4[gWeatherPtr->unknown_6FA] = a; + gWeatherPtr->unknown_6FA++; } } @@ -706,9 +745,9 @@ bool8 sub_807D574(u8 a) { u16 i; - for (i = 0; i < gWeather.unknown_6FA; i++) + for (i = 0; i < gWeatherPtr->unknown_6FA; i++) { - if (gWeather.unknown_6F4[i] == a) + if (gWeatherPtr->unknown_6F4[i] == a) return TRUE; } return FALSE; @@ -716,22 +755,22 @@ bool8 sub_807D574(u8 a) void sub_807D5BC(s8 a) { - if (gWeather.unknown_6C6 == 3) + if (gWeatherPtr->unknown_6C6 == 3) { sub_807CEBC(0, 32, a); - gWeather.unknown_6C0 = a; + gWeatherPtr->unknown_6C0 = a; } } void sub_807D5F0(u8 a, u8 b, u8 c) { - if (gWeather.unknown_6C6 == 3) + if (gWeatherPtr->unknown_6C6 == 3) { - gWeather.unknown_6C6 = 0; - gWeather.unknown_6C0 = a; - gWeather.unknown_6C1 = b; - gWeather.unknown_6C3 = 0; - gWeather.unknown_6C2 = c; + gWeatherPtr->unknown_6C6 = 0; + gWeatherPtr->unknown_6C0 = a; + gWeatherPtr->unknown_6C1 = b; + gWeatherPtr->unknown_6C3 = 0; + gWeatherPtr->unknown_6C2 = c; sub_807D5BC(a); } } @@ -764,15 +803,15 @@ void fade_screen(u8 a, u8 b) return; } - switch (gWeather.unknown_6D0) + switch (gWeatherPtr->currWeather) { - case 3: - case 4: - case 5: + case WEATHER_RAIN_LIGHT: + case WEATHER_RAIN_MED: + case WEATHER_RAIN_HEAVY: + case WEATHER_SNOW: case 6: case 11: case 12: - case 13: r2 = 1; break; default: @@ -785,26 +824,26 @@ void fade_screen(u8 a, u8 b) if (r2 != 0) CpuFastCopy(gPlttBufferFaded, gPlttBufferUnfaded, 0x400); BeginNormalPaletteFade(0xFFFFFFFF, b, 0, 16, r4); - gWeather.unknown_6C6 = 2; + gWeatherPtr->unknown_6C6 = 2; } else { - gWeather.unknown_6C4 = r4; + gWeatherPtr->unknown_6C4 = r4; if (r2 != 0) - gWeather.unknown_6C7 = 0; + gWeatherPtr->unknown_6C7 = 0; else BeginNormalPaletteFade(0xFFFFFFFF, b, 16, 0, r4); - gWeather.unknown_6C6 = 1; - gWeather.unknown_6CA = 1; - gWeather.unknown_6CB = 0; - sub_807DB64(gWeather.unknown_730, gWeather.unknown_732); - gWeather.unknown_6C8 = 1; + gWeatherPtr->unknown_6C6 = 1; + gWeatherPtr->unknown_6CA = 1; + gWeatherPtr->unknown_6CB = 0; + sub_807DB64(gWeatherPtr->unknown_730, gWeatherPtr->unknown_732); + gWeatherPtr->unknown_6C8 = 1; } } bool8 sub_807D770(void) { - return gWeather.unknown_6C6 ^ 1 ? TRUE : FALSE; + return gWeatherPtr->unknown_6C6 ^ 1 ? TRUE : FALSE; } void sub_807D78C(u8 a) @@ -812,16 +851,16 @@ void sub_807D78C(u8 a) u16 r4 = 16 + a; u16 i; - switch (gWeather.unknown_6C6) + switch (gWeatherPtr->unknown_6C6) { case 1: - if (gWeather.unknown_6CA != 0) + if (gWeatherPtr->unknown_6CA != 0) { - if (gWeather.unknown_6D0 == 6) + if (gWeatherPtr->currWeather == 6) sub_807D540(r4); r4 *= 16; for (i = 0; i < 16; i++) - gPlttBufferFaded[r4 + i] = gWeather.unknown_6C4; + gPlttBufferFaded[r4 + i] = gWeatherPtr->unknown_6C4; } break; case 2: @@ -830,9 +869,9 @@ void sub_807D78C(u8 a) BlendPalette(r4, 16, gPaletteFade.y, gPaletteFade.blendColor); break; default: - if (gWeather.unknown_6D0 != 6) + if (gWeatherPtr->currWeather != 6) { - sub_807CEBC(r4, 1, gWeather.unknown_6C0); + sub_807CEBC(r4, 1, gWeatherPtr->unknown_6C0); } else { @@ -845,21 +884,21 @@ void sub_807D78C(u8 a) void sub_807D874(u8 a) { - sub_807CEBC(a, 1, gWeather.unknown_6C0); + sub_807CEBC(a, 1, gWeatherPtr->unknown_6C0); } u8 unref_sub_807D894(void) { - if (gWeather.unknown_6C6 == 1) - return gWeather.unknown_6CA; + if (gWeatherPtr->unknown_6C6 == 1) + return gWeatherPtr->unknown_6CA; else return 0; } void sub_807D8C0(const u16 *palette) { - LoadPalette(palette, 0x100 + gWeather.unknown_6D4 * 16, 32); - sub_807D78C(gWeather.unknown_6D4); + LoadPalette(palette, 0x100 + gWeatherPtr->unknown_6D4 * 16, 32); + sub_807D78C(gWeatherPtr->unknown_6D4); } void sub_807D8F0(u8 *a, u8 *b) @@ -893,16 +932,16 @@ void sub_807D8F0(u8 *a, u8 *b) void sub_807D9A8(void) { - gWeather.unknown_74D = 1; - gWeather.unknown_74E = 1; + gWeatherPtr->unknown_74D = 1; + gWeatherPtr->unknown_74E = 1; } bool8 sub_807D9C8(void) { - if (gWeather.unknown_74D < 32) + if (gWeatherPtr->unknown_74D < 32) { - sub_807D8F0(&gWeather.unknown_74D, &gWeather.unknown_74E); - if (gWeather.unknown_74D < 32) + sub_807D8F0(&gWeatherPtr->unknown_74D, &gWeatherPtr->unknown_74E); + if (gWeatherPtr->unknown_74D < 32) return TRUE; } return FALSE; @@ -915,44 +954,44 @@ void sub_807DA04(s8 a) void sub_807DA14(void) { - gWeather.unknown_73C = 0; - gWeather.unknown_740 = 0; - gWeather.unknown_742 = 0; - gWeather.unknown_73E = 0; + gWeatherPtr->unknown_73C = 0; + gWeatherPtr->unknown_740 = 0; + gWeatherPtr->unknown_742 = 0; + gWeatherPtr->unknown_73E = 0; gUnknown_0202FF58 = 5; } void sub_807DA4C(void) { - switch (gWeather.unknown_742) + switch (gWeatherPtr->unknown_742) { case 0: - if (++gWeather.unknown_740 > gUnknown_0202FF58) + if (++gWeatherPtr->unknown_740 > gUnknown_0202FF58) { - gWeather.unknown_740 = 0; - sub_807DA04(gWeather.unknown_73C++); - if (gWeather.unknown_73C > 5) + gWeatherPtr->unknown_740 = 0; + sub_807DA04(gWeatherPtr->unknown_73C++); + if (gWeatherPtr->unknown_73C > 5) { - gWeather.unknown_73E = gWeather.unknown_73C; - gWeather.unknown_742 = 1; - gWeather.unknown_740 = 0x3C; + gWeatherPtr->unknown_73E = gWeatherPtr->unknown_73C; + gWeatherPtr->unknown_742 = 1; + gWeatherPtr->unknown_740 = 0x3C; } } break; case 1: - gWeather.unknown_740 = (gWeather.unknown_740 + 3) & 0x7F; - gWeather.unknown_73C = ((gSineTable[gWeather.unknown_740] - 1) >> 6) + 2; - if (gWeather.unknown_73C != gWeather.unknown_73E) - sub_807DA04(gWeather.unknown_73C); - gWeather.unknown_73E = gWeather.unknown_73C; + gWeatherPtr->unknown_740 = (gWeatherPtr->unknown_740 + 3) & 0x7F; + gWeatherPtr->unknown_73C = ((gSineTable[gWeatherPtr->unknown_740] - 1) >> 6) + 2; + if (gWeatherPtr->unknown_73C != gWeatherPtr->unknown_73E) + sub_807DA04(gWeatherPtr->unknown_73C); + gWeatherPtr->unknown_73E = gWeatherPtr->unknown_73C; break; case 2: - if (++gWeather.unknown_740 > gUnknown_0202FF58) + if (++gWeatherPtr->unknown_740 > gUnknown_0202FF58) { - gWeather.unknown_740 = 0; - sub_807DA04(--gWeather.unknown_73C); - if (gWeather.unknown_73C == 3) - gWeather.unknown_742 = 0; + gWeatherPtr->unknown_740 = 0; + sub_807DA04(--gWeatherPtr->unknown_73C); + if (gWeatherPtr->unknown_73C == 3) + gWeatherPtr->unknown_742 = 0; } break; } @@ -960,49 +999,49 @@ void sub_807DA4C(void) void sub_807DB64(u8 a, u8 b) { - gWeather.unknown_730 = a; - gWeather.unknown_732 = b; - gWeather.unknown_734 = a; - gWeather.unknown_736 = b; + gWeatherPtr->unknown_730 = a; + gWeatherPtr->unknown_732 = b; + gWeatherPtr->unknown_734 = a; + gWeatherPtr->unknown_736 = b; REG_BLDALPHA = (b << 8) | a; } void sub_807DBA4(u8 a, u8 b, int c) { - gWeather.unknown_734 = a; - gWeather.unknown_736 = b; - gWeather.unknown_73A = c; - gWeather.unknown_739 = 0; - gWeather.unknown_738 = 0; + gWeatherPtr->unknown_734 = a; + gWeatherPtr->unknown_736 = b; + gWeatherPtr->unknown_73A = c; + gWeatherPtr->unknown_739 = 0; + gWeatherPtr->unknown_738 = 0; } bool8 sub_807DBE8(void) { - if (gWeather.unknown_730 == gWeather.unknown_734 - && gWeather.unknown_732 == gWeather.unknown_736) + if (gWeatherPtr->unknown_730 == gWeatherPtr->unknown_734 + && gWeatherPtr->unknown_732 == gWeatherPtr->unknown_736) return TRUE; - if (++gWeather.unknown_739 > gWeather.unknown_73A) + if (++gWeatherPtr->unknown_739 > gWeatherPtr->unknown_73A) { - gWeather.unknown_739 = 0; - gWeather.unknown_738++; - if (gWeather.unknown_738 & 1) + gWeatherPtr->unknown_739 = 0; + gWeatherPtr->unknown_738++; + if (gWeatherPtr->unknown_738 & 1) { - if (gWeather.unknown_730 < gWeather.unknown_734) - gWeather.unknown_730++; - else if (gWeather.unknown_730 > gWeather.unknown_734) - gWeather.unknown_730--; + if (gWeatherPtr->unknown_730 < gWeatherPtr->unknown_734) + gWeatherPtr->unknown_730++; + else if (gWeatherPtr->unknown_730 > gWeatherPtr->unknown_734) + gWeatherPtr->unknown_730--; } else { - if (gWeather.unknown_732 < gWeather.unknown_736) - gWeather.unknown_732++; - else if (gWeather.unknown_732 > gWeather.unknown_736) - gWeather.unknown_732--; + if (gWeatherPtr->unknown_732 < gWeatherPtr->unknown_736) + gWeatherPtr->unknown_732++; + else if (gWeatherPtr->unknown_732 > gWeatherPtr->unknown_736) + gWeatherPtr->unknown_732--; } } - REG_BLDALPHA = (gWeather.unknown_732 << 8) | gWeather.unknown_730; - if (gWeather.unknown_730 == gWeather.unknown_734 - && gWeather.unknown_732 == gWeather.unknown_736) + REG_BLDALPHA = (gWeatherPtr->unknown_732 << 8) | gWeatherPtr->unknown_730; + if (gWeatherPtr->unknown_730 == gWeatherPtr->unknown_734 + && gWeatherPtr->unknown_732 == gWeatherPtr->unknown_736) return TRUE; return FALSE; } @@ -1046,23 +1085,23 @@ void unref_sub_807DCB4(u8 a) u8 weather_get_current(void) { - return gWeather.unknown_6D0; + return gWeatherPtr->currWeather; } -void sub_807DD5C(u16 sndEff) +void SetRainStrengthFromSoundEffect(u16 sndEff) { - if (gUnknown_0202F7E8.unknown_6C6 != 2) + if (gWeatherPtr->unknown_6C6 != 2) { switch (sndEff) { case SE_T_KOAME: - gUnknown_0202F7E8.unknown_6DD = 0; + gWeatherPtr->rainStrength = 0; break; case SE_T_OOAME: - gUnknown_0202F7E8.unknown_6DD = 1; + gWeatherPtr->rainStrength = 1; break; case SE_T_AME: - gUnknown_0202F7E8.unknown_6DD = 2; + gWeatherPtr->rainStrength = 2; break; default: return; @@ -1075,17 +1114,17 @@ void PlayRainSoundEffect(void) { if (IsSpecialSEPlaying()) { - switch (gUnknown_0202F7E8.unknown_6DD) + switch (gWeatherPtr->rainStrength) { case 0: - PlaySE(0x56); + PlaySE(SE_T_KOAME_E); break; case 1: - PlaySE(0x54); + PlaySE(SE_T_OOAME_E); break; case 2: default: - PlaySE(0x52); + PlaySE(SE_T_AME_E); break; } } @@ -1093,17 +1132,17 @@ void PlayRainSoundEffect(void) u8 sub_807DDFC(void) { - return gUnknown_0202F7E8.unknown_6D3; + return gWeatherPtr->unknown_6D3; } void sub_807DE10(void) { - gUnknown_0202F7E8.unknown_6C6 = 2; + gWeatherPtr->unknown_6C6 = 2; } void unref_sub_807DE24(void) { - gUnknown_0202F7E8.unknown_6C6 = 3; + gWeatherPtr->unknown_6C6 = 3; } void sub_807DE38(u8 a) @@ -1117,1028 +1156,3 @@ void sub_807DE68(void) { gUnknown_030006DC = gUnknown_083970C8; } - -void sub_807DE78(void) -{ - gUnknown_08396FC4->unknown_6C1 = 0; - gUnknown_08396FC4->unknown_6C2 = 20; - gUnknown_08396FC4->unknown_6D2 = 0; - gUnknown_08396FC4->unknown_6CC = 0; - if (gUnknown_08396FC4->unknown_6DE == 0) - sub_807DB64(0, 16); -} - -void sub_807DEF4(void); - -void sub_807DEC4(void) -{ - sub_807DE78(); - while (gUnknown_08396FC4->unknown_6D2 == 0) - sub_807DEF4(); -} - -void sub_807DFD4(void); - -void sub_807DEF4(void) -{ - switch (gUnknown_08396FC4->unknown_6CC) - { - case 0: - sub_807DFD4(); - gUnknown_08396FC4->unknown_6CC++; - break; - case 1: - sub_807DBA4(12, 8, 1); - gUnknown_08396FC4->unknown_6CC++; - break; - case 2: - if (sub_807DBE8()) - { - gUnknown_08396FC4->unknown_6D2 = 1; - gUnknown_08396FC4->unknown_6CC++; - } - break; - } -} - -void sub_807E0A0(void); - -bool8 sub_807DF54(void) -{ - switch (gUnknown_08396FC4->unknown_6CE) - { - case 0: - sub_807DBA4(0, 16, 1); - gUnknown_08396FC4->unknown_6CE++; - return TRUE; - case 1: - if (sub_807DBE8()) - { - sub_807E0A0(); - gUnknown_08396FC4->unknown_6CE++; - } - return TRUE; - } - return FALSE; -} - -void sub_807DF9C(void) -{ - gUnknown_08396FC4->unknown_6C1 = 0; - gUnknown_08396FC4->unknown_6C2 = 20; -} - -void sub_807DFC0(void) -{ - sub_807DF9C(); -} - -void nullsub_55(void) -{ -} - -int sub_807DFD0(void) -{ - return 0; -} - -void sub_807DFD4(void) -{ - u16 i; - - if (gUnknown_08396FC4->unknown_6DE == 1) - return; - LoadSpriteSheet(&gUnknown_0839A9D4); - sub_807D8C0(gUnknown_08397108); - for (i = 0; i < 3; i++) - { - u8 spriteId = CreateSprite(&gSpriteTemplate_839A9F0, 0, 0, 0xFF); - - if (spriteId != 64) - { - struct Sprite *sprite; - - gUnknown_08396FC4->unknown_1F4[i] = &gSprites[spriteId]; - sprite = gUnknown_08396FC4->unknown_1F4[i]; - sub_80603CC(gUnknown_0839A9C8[i].x + 7, gUnknown_0839A9C8[i].y + 7, &sprite->pos1.x, &sprite->pos1.y); - sprite->coordOffsetEnabled = TRUE; - } - else - { - gUnknown_08396FC4->unknown_1F4[i] = NULL; - } - } - gUnknown_08396FC4->unknown_6DE = 1; -} - -void sub_807E0A0(void) -{ - u16 i; - - if (gUnknown_08396FC4->unknown_6DE == 0) - return; - for (i = 0; i < 3; i++) - { - if (gUnknown_08396FC4->unknown_1F4[i] != NULL) - DestroySprite(gUnknown_08396FC4->unknown_1F4[i]); - } - FreeSpriteTilesByTag(0x1200); - gUnknown_08396FC4->unknown_6DE = 0; -} - -void sub_807E0F4(struct Sprite *sprite) -{ - sprite->data[0] = (sprite->data[0] + 1) & 1; - if (sprite->data[0] != 0) - sprite->pos1.x--; -} - -void sub_807E110(void) -{ - gUnknown_08396FC4->unknown_6CC = 0; - gUnknown_08396FC4->unknown_6D2 = 0; - gUnknown_08396FC4->unknown_6C1 = 0; - gUnknown_08396FC4->unknown_6C2 = 0; -} - -void sub_807E174(void); - -void sub_807E144(void) -{ - sub_807E110(); - while (gUnknown_08396FC4->unknown_6D2 == 0) - sub_807E174(); -} - -void sub_807E174(void) -{ - switch (gUnknown_08396FC4->unknown_6CC) - { - case 0: - if (gUnknown_08396FC4->unknown_6C6 != 0) - gUnknown_08396FC4->unknown_6CC++; - break; - case 1: - sub_807D9A8(); - gUnknown_08396FC4->unknown_6CC++; - break; - case 2: - if (sub_807D9C8() == FALSE) - gUnknown_08396FC4->unknown_6CC++; - break; - case 3: - sub_807DA14(); - gUnknown_08396FC4->unknown_6CC++; - break; - case 4: - sub_807DA4C(); - if (gUnknown_08396FC4->unknown_73C == 6) - { - gUnknown_08396FC4->unknown_6D2 = 1; - gUnknown_08396FC4->unknown_6CC++; - } - break; - default: - sub_807DA4C(); - break; - } -} - -int sub_807E258(void) -{ - return 0; -} - -void task50_0807B6D4(u8); - -void sub_807E25C(void) -{ - CreateTask(task50_0807B6D4, 0x50); -} - -#define tState data[0] -#define tBlendY data[1] -#define tBlendDelay data[2] -#define tWinRange data[3] - -void task50_0807B6D4(u8 taskId) -{ - struct Task *task = &gTasks[taskId]; - - switch (task->tState) - { - case 0: - task->tBlendY = 0; - task->tBlendDelay = 0; - task->tWinRange = REG_WININ; - REG_WININ = WIN_RANGE(63, 63); - REG_BLDCNT = 0x9E; - REG_BLDY = 0; - task->tState++; - // fall through - case 1: - task->tBlendY += 3; - if (task->tBlendY > 16) - task->tBlendY = 16; - REG_BLDY = task->tBlendY; - if (task->tBlendY >= 16) - task->tState++; - break; - case 2: - task->tBlendDelay++; - if (task->tBlendDelay > 9) - { - task->tBlendDelay = 0; - task->tBlendY--; - if (task->tBlendY <= 0) - { - task->tBlendY = 0; - task->tState++; - } - REG_BLDY = task->tBlendY; - } - break; - case 3: - REG_BLDCNT = 0; - REG_BLDY = 0; - REG_WININ = task->tWinRange; - task->tState++; - break; - case 4: - EnableBothScriptContexts(); - DestroyTask(taskId); - break; - } -} - -#undef tState -#undef tBlendY -#undef tBlendDelay -#undef tWinRange - -void sub_807E364(void) -{ - gUnknown_08396FC4->unknown_6CC = 0; - gUnknown_08396FC4->unknown_6D2 = 0; - gUnknown_08396FC4->unknown_6D6 = 0; - gUnknown_08396FC4->unknown_6DB = 8; - gUnknown_08396FC4->unknown_6DC = 0; - gUnknown_08396FC4->unknown_6D9 = 10; - gUnknown_08396FC4->unknown_6C1 = 3; - gUnknown_08396FC4->unknown_6C2 = 20; - sub_807DD5C(SE_T_KOAME); -} - -void sub_807E400(void); - -void sub_807E3D0(void) -{ - sub_807E364(); - while (gUnknown_08396FC4->unknown_6D2 == 0) - sub_807E400(); -} - -void sub_807E7A4(void); -u8 sub_807E7B4(void); -u8 sub_807E8E8(void); - -void sub_807E400(void) -{ - switch (gUnknown_08396FC4->unknown_6CC) - { - case 0: - sub_807E7A4(); - gUnknown_08396FC4->unknown_6CC++; - break; - case 1: - if (sub_807E7B4() == 0) - gUnknown_08396FC4->unknown_6CC++; - break; - case 2: - if (sub_807E8E8() == FALSE) - { - gUnknown_08396FC4->unknown_6D2 = 1; - gUnknown_08396FC4->unknown_6CC++; - } - break; - } -} - -void sub_807E974(void); - -bool8 sub_807E460(void) -{ - switch (gUnknown_08396FC4->unknown_6CE) - { - case 0: - if (gUnknown_08396FC4->unknown_6D1 == 3 - || gUnknown_08396FC4->unknown_6D1 == 5 - || gUnknown_08396FC4->unknown_6D1 == 13) - { - gUnknown_08396FC4->unknown_6CE = 0xFF; - return FALSE; - } - else - { - gUnknown_08396FC4->unknown_6D9 = 0; - gUnknown_08396FC4->unknown_6CE++; - } - // fall through - case 1: - if (sub_807E8E8() == FALSE) - { - sub_807E974(); - gUnknown_08396FC4->unknown_6CE++; - return FALSE; - } - return TRUE; - } - return FALSE; -} - -//extern const struct Coords16 gUnknown_0839AAC4[]; -extern const u16 gUnknown_0839AAC4[][2]; -//extern const struct Coords16 gUnknown_0839AABC[]; -extern const s16 gUnknown_0839AABC[][2]; - -void sub_807E4EC(struct Sprite *sprite) -{ - u32 randVal; - u16 r6; - s32 r4; - s32 r0; - - if (sprite->data[1] == 0) - sprite->data[1] = 361; - randVal = sprite->data[1] * 1103515245 + 12345; - sprite->data[1] = ((randVal & 0x7FFF0000) >> 16) % 600; - - r6 = gUnknown_0839AAC4[gUnknown_08396FC4->unknown_6DC][0]; - - r4 = sprite->data[1] % 30; - sprite->data[2] = r4 * 8; // useless assignment - - r0 = sprite->data[1] / 30; - sprite->data[3] = r0 * 8; // useless assignment - - sprite->data[2] = r4; - sprite->data[2] <<= 7; - - sprite->data[3] = r0; - sprite->data[3] <<= 7; - - sprite->data[2] -= gUnknown_0839AABC[gUnknown_08396FC4->unknown_6DC][0] * r6; - sprite->data[3] -= gUnknown_0839AABC[gUnknown_08396FC4->unknown_6DC][1] * r6; - - StartSpriteAnim(sprite, 0); - sprite->data[4] = 0; - sprite->coordOffsetEnabled = FALSE; - sprite->data[0] = r6; -} - -void sub_807E5C0(struct Sprite *sprite) -{ - if (sprite->data[4] == 0) - { - sprite->data[2] += gUnknown_0839AABC[gUnknown_08396FC4->unknown_6DC][0]; - sprite->data[3] += gUnknown_0839AABC[gUnknown_08396FC4->unknown_6DC][1]; - sprite->pos1.x = sprite->data[2] >> 4; - sprite->pos1.y = sprite->data[3] >> 4; - - if (sprite->data[5] != 0 - && (sprite->pos1.x >= -8 && sprite->pos1.x <= 248) - && sprite->pos1.y >= -16 && sprite->pos1.y <= 176) - sprite->invisible = FALSE; - else - sprite->invisible = TRUE; - - sprite->data[0]--; - if (sprite->data[0] == 0) - { - StartSpriteAnim(sprite, gUnknown_08396FC4->unknown_6DC + 1); - sprite->data[4] = 1; - sprite->pos1.x -= gSpriteCoordOffsetX; - sprite->pos1.y -= gSpriteCoordOffsetY; - sprite->coordOffsetEnabled = TRUE; - } - } - else if (sprite->animEnded) - { - sprite->invisible = TRUE; - sub_807E4EC(sprite); - } -} - -void sub_807E6C4(struct Sprite *sprite) -{ - if (sprite->data[0] == 0) - { - sub_807E4EC(sprite); - sprite->callback = sub_807E5C0; - } - else - { - sprite->data[0]--; - } -} - -void sub_807E6F0(struct Sprite *sprite, u16 b) -{ - u16 r8 = gUnknown_0839AAC4[gUnknown_08396FC4->unknown_6DC][0]; - u16 r6 = b / (gUnknown_0839AAC4[gUnknown_08396FC4->unknown_6DC][1] + r8); - u16 r4 = b % (gUnknown_0839AAC4[gUnknown_08396FC4->unknown_6DC][1] + r8); - - while (--r6 != 0xFFFF) - sub_807E4EC(sprite); - if (r4 < r8) - { - while (--r4 != 0xFFFF) - sub_807E5C0(sprite); - sprite->data[6] = 0; - } - else - { - sprite->data[0] = r4 - r8; - sprite->invisible = TRUE; - sprite->data[6] = 1; - } -} - -void sub_807E7A4(void) -{ - LoadSpriteSheet(&gUnknown_0839AACC); -} - -extern const struct Coords16 gUnknown_0839AA08[]; - -bool8 sub_807E7B4(void) -{ - u8 r7; - u8 spriteId; - - if (gUnknown_08396FC4->unknown_6DA == 24) - return FALSE; - - r7 = gUnknown_08396FC4->unknown_6DA; - spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839AAA4, - gUnknown_0839AA08[r7].x, gUnknown_0839AA08[r7].y, 78); - if (spriteId != 64) - { - gSprites[spriteId].data[5] = 0; - gSprites[spriteId].data[1] = r7 * 145; - while (gSprites[spriteId].data[1] >= 600) - gSprites[spriteId].data[1] -= 600; - sub_807E4EC(&gSprites[spriteId]); - sub_807E6F0(&gSprites[spriteId], r7 * 9); - gSprites[spriteId].invisible = TRUE; - gUnknown_08396FC4->unknown_0[r7] = &gSprites[spriteId]; - } - else - { - gUnknown_08396FC4->unknown_0[r7] = NULL; - } - - if (++gUnknown_08396FC4->unknown_6DA == 24) - { - u16 i; - - for (i = 0; i < 24; i++) - { - if (gUnknown_08396FC4->unknown_0[i] != NULL) - { - if (gUnknown_08396FC4->unknown_0[i]->data[6] == 0) - gUnknown_08396FC4->unknown_0[i]->callback = sub_807E5C0; - else - gUnknown_08396FC4->unknown_0[i]->callback = sub_807E6C4; - } - } - return FALSE; - } - return TRUE; -} - -bool8 sub_807E8E8(void) -{ - if (gUnknown_08396FC4->unknown_6D8 == gUnknown_08396FC4->unknown_6D9) - return FALSE; - - if (++gUnknown_08396FC4->unknown_6D6 > gUnknown_08396FC4->unknown_6DB) - { - gUnknown_08396FC4->unknown_6D6 = 0; - if (gUnknown_08396FC4->unknown_6D8 < gUnknown_08396FC4->unknown_6D9) - { - gUnknown_08396FC4->unknown_0[gUnknown_08396FC4->unknown_6D8++]->data[5] = 1; - } - else - { - gUnknown_08396FC4->unknown_6D8--; - gUnknown_08396FC4->unknown_0[gUnknown_08396FC4->unknown_6D8]->data[5] = 0; - gUnknown_08396FC4->unknown_0[gUnknown_08396FC4->unknown_6D8]->invisible = TRUE; - } - } - return TRUE; -} - -void sub_807E974(void) -{ - u16 i; - - for (i = 0; i < gUnknown_08396FC4->unknown_6DA; i++) - { - if (gUnknown_08396FC4->unknown_0[i] != NULL) - DestroySprite(gUnknown_08396FC4->unknown_0[i]); - } - gUnknown_08396FC4->unknown_6DA = 0; - FreeSpriteTilesByTag(0x1206); -} - -void sub_807E9C8(void) -{ - gUnknown_08396FC4->unknown_6CC = 0; - gUnknown_08396FC4->unknown_6D2 = 0; - gUnknown_08396FC4->unknown_6C1 = 3; - gUnknown_08396FC4->unknown_6C2 = 20; - gUnknown_08396FC4->unknown_6E5 = 16; - gUnknown_08396FC4->unknown_6E0 = 0; -} - -void snowflakes_progress2(void); -void sub_807ED48(struct Sprite *); - -void sub_807EA18(void) -{ - sub_807E9C8(); - while (gUnknown_08396FC4->unknown_6D2 == 0) - { - u16 i; - - snowflakes_progress2(); - for (i = 0; i < gUnknown_08396FC4->unknown_6E4; i++) - { - sub_807ED48(gUnknown_08396FC4->unknown_60[i]); - } - } -} - -u8 snowflakes_progress(void); - -void snowflakes_progress2(void) -{ - if (gUnknown_08396FC4->unknown_6CC == 0 && snowflakes_progress() == FALSE) - { - gUnknown_08396FC4->unknown_6D2 = 1; - gUnknown_08396FC4->unknown_6CC++; - } -} - -bool8 sub_807EAC0(void) -{ - switch (gUnknown_08396FC4->unknown_6CE) - { - case 0: - gUnknown_08396FC4->unknown_6E5 = 0; - gUnknown_08396FC4->unknown_6E0 = 0; - gUnknown_08396FC4->unknown_6CE++; - // fall through - case 1: - if (snowflakes_progress() == FALSE) - { - gUnknown_08396FC4->unknown_6CE++; - return FALSE; - } - return TRUE; - } - return FALSE; -} - -bool8 snowflake_add(void); -bool8 snowflake_remove(void); - -bool8 snowflakes_progress(void) -{ - if (gUnknown_08396FC4->unknown_6E4 == gUnknown_08396FC4->unknown_6E5) - return FALSE; - - gUnknown_08396FC4->unknown_6E0++; - if (gUnknown_08396FC4->unknown_6E0 > 36) - { - gUnknown_08396FC4->unknown_6E0 = 0; - if (gUnknown_08396FC4->unknown_6E4 < gUnknown_08396FC4->unknown_6E5) - snowflake_add(); - else - snowflake_remove(); - } - return (gUnknown_08396FC4->unknown_6E4 != gUnknown_08396FC4->unknown_6E5); -} - -void sub_807EC40(struct Sprite *); - -bool8 snowflake_add(void) -{ - u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839AB04, 0, 0, 78); - - if (spriteId == 64) - return FALSE; - gSprites[spriteId].data[4] = gUnknown_08396FC4->unknown_6E4; - sub_807EC40(&gSprites[spriteId]); - gSprites[spriteId].coordOffsetEnabled = TRUE; - gUnknown_08396FC4->unknown_60[gUnknown_08396FC4->unknown_6E4++] = &gSprites[spriteId]; - return TRUE; -} - -bool8 snowflake_remove(void) -{ - if (gUnknown_08396FC4->unknown_6E4 != 0) - { - DestroySprite(gUnknown_08396FC4->unknown_60[--gUnknown_08396FC4->unknown_6E4]); - return TRUE; - } - return FALSE; -} - -void sub_807EC40(struct Sprite *sprite) -{ - u16 r4 = ((sprite->data[4] * 5) & 7) * 30 + (Random() % 30); - u16 r6; - - sprite->pos1.y = -3 - (gSpriteCoordOffsetY + sprite->centerToCornerVecY); - sprite->pos1.x = r4 - (gSpriteCoordOffsetX + sprite->centerToCornerVecX); - sprite->data[0] = sprite->pos1.y * 128; - sprite->pos2.x = 0; - r6 = Random(); - sprite->data[1] = (r6 & 3) * 5 + 64; - sprite->data[7] = (r6 & 3) * 5 + 64; - StartSpriteAnim(sprite, (r6 & 1) ? 0 : 1); - sprite->data[3] = 0; - sprite->data[2] = ((r6 & 3) == 0) ? 2 : 1; - sprite->data[6] = (r6 & 0x1F) + 210; - sprite->data[5] = 0; -} - -void sub_807ECEC(struct Sprite *sprite) -{ - if (gUnknown_08396FC4->unknown_6E2 > 18) - { - sprite->invisible = FALSE; - sprite->callback = sub_807ED48; - sprite->pos1.y = 0xFA - (gSpriteCoordOffsetY + sprite->centerToCornerVecY); - sprite->data[0] = sprite->pos1.y * 128; - gUnknown_08396FC4->unknown_6E2 = 0; - } -} - -void sub_807ED48(struct Sprite *sprite) -{ - s16 r3; - s16 r2; - - sprite->data[0] += sprite->data[1]; - sprite->pos1.y = sprite->data[0] >> 7; - sprite->data[3] = (sprite->data[3] + sprite->data[2]) & 0xFF; - sprite->pos2.x = gSineTable[sprite->data[3]] / 64; - - r3 = (sprite->pos1.x + sprite->centerToCornerVecX + gSpriteCoordOffsetX) & 0x1FF; - if (r3 & 0x100) - r3 = -0x100 | r3; // hmm... what is this? - if (r3 < -3) - sprite->pos1.x = 242 - (gSpriteCoordOffsetX + sprite->centerToCornerVecX); - else if (r3 > 242) - sprite->pos1.x = -3 - (gSpriteCoordOffsetX + sprite->centerToCornerVecX); - - r2 = (sprite->pos1.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY) & 0xFF; - if (r2 > 163 && r2 < 171) - { - sprite->pos1.y = 250 - (gSpriteCoordOffsetY + sprite->centerToCornerVecY); - sprite->data[0] = sprite->pos1.y * 128; - sprite->data[5] = 0; - sprite->data[6] = 220; - } - else if (r2 > 242 && r2 < 250) - { - sprite->pos1.y = 163; - sprite->data[0] = sprite->pos1.y * 128; - sprite->data[5] = 0; - sprite->data[6] = 220; - sprite->invisible = TRUE; - sprite->callback = sub_807ECEC; - } - - sprite->data[5]++; - if (sprite->data[5] == sprite->data[6]) - { - sub_807EC40(sprite); - sprite->pos1.y = 250; - sprite->invisible = TRUE; - sprite->callback = sub_807ECEC; - } -} - -void sub_807EE80(void) -{ - gUnknown_08396FC4->unknown_6CC = 0; - gUnknown_08396FC4->unknown_6D2 = 0; - gUnknown_08396FC4->unknown_6D6 = 0; - gUnknown_08396FC4->unknown_6DB = 4; - gUnknown_08396FC4->unknown_6DC = 0; - gUnknown_08396FC4->unknown_6D9 = 16; - gUnknown_08396FC4->unknown_6C1 = 3; - gUnknown_08396FC4->unknown_6C2 = 20; - gUnknown_08396FC4->unknown_6D2 = 0; // duplicate assignment - gUnknown_08396FC4->unknown_6ED = 0; - sub_807DD5C(0x51); -} - -void sub_807EFC0(void); - -void sub_807EEF4(void) -{ - sub_807EE80(); - while (gUnknown_08396FC4->unknown_6D2 == 0) - sub_807EFC0(); -} - -void sub_807EF24(void) -{ - gUnknown_08396FC4->unknown_6CC = 0; - gUnknown_08396FC4->unknown_6D2 = 0; - gUnknown_08396FC4->unknown_6D6 = 0; - gUnknown_08396FC4->unknown_6DB = 4; - gUnknown_08396FC4->unknown_6DC = 1; - gUnknown_08396FC4->unknown_6D9 = 24; - gUnknown_08396FC4->unknown_6C1 = 3; - gUnknown_08396FC4->unknown_6C2 = 20; - gUnknown_08396FC4->unknown_6D2 = 0; // duplicate assignment - sub_807DD5C(0x53); -} - -void sub_807EF90(void) -{ - sub_807EF24(); - while (gUnknown_08396FC4->unknown_6D2 == 0) - sub_807EFC0(); -} - -void sub_807F434(void); -void sub_807F3F8(u16); - -void sub_807EFC0(void) -{ - sub_807F434(); - switch (gUnknown_08396FC4->unknown_6CC) - { - case 0: - sub_807E7A4(); - gUnknown_08396FC4->unknown_6CC++; - break; - case 1: - if (sub_807E7B4()) - break; - gUnknown_08396FC4->unknown_6CC++; - break; - case 2: - if (sub_807E8E8()) - break; - gUnknown_08396FC4->unknown_6D2 = 1; - gUnknown_08396FC4->unknown_6CC++; - break; - case 3: - if (gUnknown_08396FC4->unknown_6C6 == 0) - break; - gUnknown_08396FC4->unknown_6CC = 6; - break; - case 4: - gUnknown_08396FC4->unknown_6EA = 1; - gUnknown_08396FC4->unknown_6E6 = (Random() % 360) + 360; - gUnknown_08396FC4->unknown_6CC++; - // fall through - case 5: - if (--gUnknown_08396FC4->unknown_6E6 != 0) - break; - gUnknown_08396FC4->unknown_6CC++; - break; - case 6: - gUnknown_08396FC4->unknown_6EA = 1; - gUnknown_08396FC4->unknown_6EB = Random() % 2; - gUnknown_08396FC4->unknown_6CC++; - break; - case 7: - gUnknown_08396FC4->unknown_6EC = (Random() & 1) + 1; - gUnknown_08396FC4->unknown_6CC++; - // fall through - case 8: - sub_807D5BC(19); - if (gUnknown_08396FC4->unknown_6EB == 0 && gUnknown_08396FC4->unknown_6EC == 1) - sub_807F3F8(20); - gUnknown_08396FC4->unknown_6E6 = (Random() % 3) + 6; - gUnknown_08396FC4->unknown_6CC++; - break; - case 9: - if (--gUnknown_08396FC4->unknown_6E6 != 0) - break; - sub_807D5BC(3); - gUnknown_08396FC4->unknown_6EA = 1; - if (--gUnknown_08396FC4->unknown_6EC != 0) - { - gUnknown_08396FC4->unknown_6E6 = (Random() % 16) + 60; - gUnknown_08396FC4->unknown_6CC = 10; - } - else if (gUnknown_08396FC4->unknown_6EB == 0) - { - gUnknown_08396FC4->unknown_6CC = 4; - } - else - { - gUnknown_08396FC4->unknown_6CC = 11; - } - break; - case 10: - if (--gUnknown_08396FC4->unknown_6E6 != 0) - break; - gUnknown_08396FC4->unknown_6CC = 8; - break; - case 11: - gUnknown_08396FC4->unknown_6E6 = (Random() % 16) + 60; - gUnknown_08396FC4->unknown_6CC++; - break; - case 12: - if (--gUnknown_08396FC4->unknown_6E6 != 0) - break; - sub_807F3F8(100); - sub_807D5BC(19); - // Why use "% 16" everywhere else and "& 0xF" here. So dumb. - gUnknown_08396FC4->unknown_6E6 = (Random() & 0xF) + 30; - gUnknown_08396FC4->unknown_6CC++; - break; - case 13: - if (--gUnknown_08396FC4->unknown_6E6 != 0) - break; - sub_807D5F0(19, 3, 5); - gUnknown_08396FC4->unknown_6CC++; - break; - case 14: - if (gUnknown_08396FC4->unknown_6C6 != 3) - break; - gUnknown_08396FC4->unknown_6EA = 1; - gUnknown_08396FC4->unknown_6CC = 4; - break; - } -} - -bool8 sub_807F34C(void) -{ - switch (gUnknown_08396FC4->unknown_6CE) - { - case 0: - gUnknown_08396FC4->unknown_6EA = 0; - gUnknown_08396FC4->unknown_6CE++; - // fall through - case 1: - sub_807EFC0(); - if (gUnknown_08396FC4->unknown_6EA != 0) - { - if (gUnknown_08396FC4->unknown_6D1 == 3 - || gUnknown_08396FC4->unknown_6D1 == 5 - || gUnknown_08396FC4->unknown_6D1 == 13) - return FALSE; - gUnknown_08396FC4->unknown_6D9 = 0; - gUnknown_08396FC4->unknown_6CE++; - } - break; - case 2: - if (sub_807E8E8()) - break; - sub_807E974(); - gUnknown_08396FC4->unknown_6ED = 0; - gUnknown_08396FC4->unknown_6CE++; - return FALSE; - default: - return FALSE; - } - return TRUE; -} - -void sub_807F3F8(u16 a) -{ - if (gUnknown_08396FC4->unknown_6ED == 0) - { - gUnknown_08396FC4->unknown_6E8 = Random() % a; - gUnknown_08396FC4->unknown_6ED = 1; - } -} - -void sub_807F434(void) -{ - if (gUnknown_08396FC4->unknown_6ED == 1) - { - if (gUnknown_08396FC4->unknown_6E8 == 0) - { - if (IsSEPlaying()) - return; - if (Random() & 1) - PlaySE(0x57); - else - PlaySE(0x58); - gUnknown_08396FC4->unknown_6ED = 0; - } - else - { - gUnknown_08396FC4->unknown_6E8--; - } - } -} - -void sub_807F49C(void) -{ - gUnknown_08396FC4->unknown_6CC = 0; - gUnknown_08396FC4->unknown_6D2 = 0; - gUnknown_08396FC4->unknown_6C1 = 0; - gUnknown_08396FC4->unknown_6C2 = 20; - if (gUnknown_08396FC4->unknown_6FB == 0) - { - gUnknown_08396FC4->unknown_6F0 = 0; - gUnknown_08396FC4->unknown_6F2 = 0; - gUnknown_08396FC4->unknown_6EE = 0; - sub_807DB64(0, 16); - } -} - -void sub_807F52C(void); - -void sub_807F4FC(void) -{ - sub_807F49C(); - while (gUnknown_08396FC4->unknown_6D2 == 0) - sub_807F52C(); -} - -void sub_807F6E8(void); - -void sub_807F52C(void) -{ - gUnknown_08396FC4->unknown_6EE = (gSpriteCoordOffsetX - gUnknown_08396FC4->unknown_6F2) & 0xFF; - if (++gUnknown_08396FC4->unknown_6F0 > 3) - { - gUnknown_08396FC4->unknown_6F0 = 0; - gUnknown_08396FC4->unknown_6F2++; - } - switch (gUnknown_08396FC4->unknown_6CC) - { - case 0: - sub_807F6E8(); - if (gUnknown_08396FC4->unknown_6D0 == 6) - sub_807DBA4(12, 8, 3); - else - sub_807DBA4(4, 16, 0); - gUnknown_08396FC4->unknown_6CC++; - break; - case 1: - if (sub_807DBE8()) - { - gUnknown_08396FC4->unknown_6D2 = 1; - gUnknown_08396FC4->unknown_6CC++; - } - break; - } -} - -void sub_807F7A4(void); - -bool8 sub_807F5EC(void) -{ - gUnknown_08396FC4->unknown_6EE = (gSpriteCoordOffsetX - gUnknown_08396FC4->unknown_6F2) & 0xFF; - if (++gUnknown_08396FC4->unknown_6F0 > 3) - { - gUnknown_08396FC4->unknown_6F0 = 0; - gUnknown_08396FC4->unknown_6F2++; - } - switch (gUnknown_08396FC4->unknown_6CE) - { - case 0: - sub_807DBA4(0, 16, 3); - gUnknown_08396FC4->unknown_6CE++; - break; - case 1: - if (!sub_807DBE8()) - break; - gUnknown_08396FC4->unknown_6CE++; - break; - case 2: - sub_807F7A4(); - gUnknown_08396FC4->unknown_6CE++; - break; - default: - return FALSE; - } - return TRUE; -} - -void sub_807F688(struct Sprite *sprite) -{ - sprite->pos2.y = (u8)gSpriteCoordOffsetY; - sprite->pos1.x = gUnknown_08396FC4->unknown_6EE + 32 + sprite->data[0] * 64; - if (sprite->pos1.x > 0x10F) - { - sprite->pos1.x = 480 + gUnknown_08396FC4->unknown_6EE - (4 - sprite->data[0]) * 64; - sprite->pos1.x &= 0x1FF; - } -} diff --git a/src/field/field_weather_2.c b/src/field/field_weather_2.c new file mode 100644 index 000000000..fa97df459 --- /dev/null +++ b/src/field/field_weather_2.c @@ -0,0 +1,1511 @@ +#include "global.h" +#include "field_map_obj.h" +#include "field_weather.h" +#include "rng.h" +#include "script.h" +#include "songs.h" +#include "sound.h" +#include "sprite.h" +#include "task.h" +#include "trig.h" + +extern struct Weather *const gWeatherPtr; + +//extern const s16 gUnknown_0839A9C8[][2]; +extern const struct SpriteSheet gWeatherCloudSpriteSheet; +extern const struct SpriteTemplate gSpriteTemplate_839A9F0; +extern const struct SpriteTemplate gSpriteTemplate_839AAA4; +extern const struct SpriteTemplate gSpriteTemplate_839AB04; + +const u16 gUnknown_08397108[] = INCBIN_U16("graphics/weather/1.gbapal"); +const u16 gUnknown_08397128[] = INCBIN_U16("graphics/weather/2.gbapal"); +const u8 WeatherFog0Tiles[] = INCBIN_U8("graphics/weather/fog0.4bpp"); +const u8 gWeatherFog1Tiles[] = INCBIN_U8("graphics/weather/fog1.4bpp"); +const u8 WeatherCloudTiles[] = INCBIN_U8("graphics/weather/cloud.4bpp"); +const u8 gSpriteImage_8398948[] = INCBIN_U8("graphics/weather/snow0.4bpp"); +const u8 gSpriteImage_8398968[] = INCBIN_U8("graphics/weather/snow1.4bpp"); +const u8 WeatherBubbleTiles[] = INCBIN_U8("graphics/weather/bubble.4bpp"); +const u8 WeatherAshTiles[] = INCBIN_U8("graphics/weather/ash.4bpp"); +const u8 WeatherRainTiles[] = INCBIN_U8("graphics/weather/rain.4bpp"); +const u8 WeatherSandstormTiles[] = INCBIN_U8("graphics/weather/sandstorm.4bpp"); + +const struct Coords16 gUnknown_0839A9C8[] = +{ + { 0, 66}, + { 5, 73}, + {10, 78}, +}; + +const struct SpriteSheet gWeatherCloudSpriteSheet = {WeatherCloudTiles, 0x800, 0x1200}; + +const struct OamData gOamData_839A9DC = +{ + .y = 0, + .affineMode = 0, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 3, + .paletteNum = 0, + .affineParam = 0, +}; + +const union AnimCmd gSpriteAnim_839A9E4[] = +{ + ANIMCMD_FRAME(0, 16), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_839A9EC[] = +{ + gSpriteAnim_839A9E4, +}; + +void sub_807E0F4(struct Sprite *); +const struct SpriteTemplate gSpriteTemplate_839A9F0 = +{ + .tileTag = 4608, + .paletteTag = 4609, + .oam = &gOamData_839A9DC, + .anims = gSpriteAnimTable_839A9EC, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_807E0F4, +}; + +extern void sub_807D5BC(s8 a); +extern void sub_807D8C0(const u16 *palette); +extern void sub_807D9A8(void); +extern bool8 sub_807D9C8(void); +extern void sub_807DA14(void); +extern void sub_807DA4C(void); +extern void sub_807DBA4(u8 a, u8 b, int c); +extern bool8 sub_807DBE8(void); +extern void SetRainStrengthFromSoundEffect(u16 sndEff); +extern void sub_807D5F0(u8 a, u8 b, u8 c); + +//------------------------------------------------------------------------------ +// Clouds +//------------------------------------------------------------------------------ + +void sub_807DE78(void) +{ + gWeatherPtr->unknown_6C1 = 0; + gWeatherPtr->unknown_6C2 = 20; + gWeatherPtr->unknown_6D2 = 0; + gWeatherPtr->unknown_6CC = 0; + if (gWeatherPtr->unknown_6DE == 0) + sub_807DB64(0, 16); +} + +void sub_807DEF4(void); + +void sub_807DEC4(void) +{ + sub_807DE78(); + while (gWeatherPtr->unknown_6D2 == 0) + sub_807DEF4(); +} + +void sub_807DFD4(void); + +void sub_807DEF4(void) +{ + switch (gWeatherPtr->unknown_6CC) + { + case 0: + sub_807DFD4(); + gWeatherPtr->unknown_6CC++; + break; + case 1: + sub_807DBA4(12, 8, 1); + gWeatherPtr->unknown_6CC++; + break; + case 2: + if (sub_807DBE8()) + { + gWeatherPtr->unknown_6D2 = 1; + gWeatherPtr->unknown_6CC++; + } + break; + } +} + +void sub_807E0A0(void); + +bool8 sub_807DF54(void) +{ + switch (gWeatherPtr->unknown_6CE) + { + case 0: + sub_807DBA4(0, 16, 1); + gWeatherPtr->unknown_6CE++; + return TRUE; + case 1: + if (sub_807DBE8()) + { + sub_807E0A0(); + gWeatherPtr->unknown_6CE++; + } + return TRUE; + } + return FALSE; +} + +void sub_807DF9C(void) +{ + gWeatherPtr->unknown_6C1 = 0; + gWeatherPtr->unknown_6C2 = 20; +} + +void sub_807DFC0(void) +{ + sub_807DF9C(); +} + +void nullsub_55(void) +{ +} + +int sub_807DFD0(void) +{ + return 0; +} + +void sub_807DFD4(void) +{ + u16 i; + + if (gWeatherPtr->unknown_6DE == 1) + return; + LoadSpriteSheet(&gWeatherCloudSpriteSheet); + sub_807D8C0(gUnknown_08397108); + for (i = 0; i < 3; i++) + { + u8 spriteId = CreateSprite(&gSpriteTemplate_839A9F0, 0, 0, 0xFF); + + if (spriteId != 64) + { + struct Sprite *sprite; + + gWeatherPtr->cloudSprites[i] = &gSprites[spriteId]; + sprite = gWeatherPtr->cloudSprites[i]; + sub_80603CC(gUnknown_0839A9C8[i].x + 7, gUnknown_0839A9C8[i].y + 7, &sprite->pos1.x, &sprite->pos1.y); + sprite->coordOffsetEnabled = TRUE; + } + else + { + gWeatherPtr->cloudSprites[i] = NULL; + } + } + gWeatherPtr->unknown_6DE = 1; +} + +void sub_807E0A0(void) +{ + u16 i; + + if (gWeatherPtr->unknown_6DE == 0) + return; + for (i = 0; i < 3; i++) + { + if (gWeatherPtr->cloudSprites[i] != NULL) + DestroySprite(gWeatherPtr->cloudSprites[i]); + } + FreeSpriteTilesByTag(0x1200); + gWeatherPtr->unknown_6DE = 0; +} + +void sub_807E0F4(struct Sprite *sprite) +{ + sprite->data[0] = (sprite->data[0] + 1) & 1; + if (sprite->data[0] != 0) + sprite->pos1.x--; +} + +void sub_807E110(void) +{ + gWeatherPtr->unknown_6CC = 0; + gWeatherPtr->unknown_6D2 = 0; + gWeatherPtr->unknown_6C1 = 0; + gWeatherPtr->unknown_6C2 = 0; +} + +void sub_807E174(void); + +void sub_807E144(void) +{ + sub_807E110(); + while (gWeatherPtr->unknown_6D2 == 0) + sub_807E174(); +} + +void sub_807E174(void) +{ + switch (gWeatherPtr->unknown_6CC) + { + case 0: + if (gWeatherPtr->unknown_6C6 != 0) + gWeatherPtr->unknown_6CC++; + break; + case 1: + sub_807D9A8(); + gWeatherPtr->unknown_6CC++; + break; + case 2: + if (sub_807D9C8() == FALSE) + gWeatherPtr->unknown_6CC++; + break; + case 3: + sub_807DA14(); + gWeatherPtr->unknown_6CC++; + break; + case 4: + sub_807DA4C(); + if (gWeatherPtr->unknown_73C == 6) + { + gWeatherPtr->unknown_6D2 = 1; + gWeatherPtr->unknown_6CC++; + } + break; + default: + sub_807DA4C(); + break; + } +} + +int sub_807E258(void) +{ + return 0; +} + +void task50_0807B6D4(u8); + +void sub_807E25C(void) +{ + CreateTask(task50_0807B6D4, 0x50); +} + +#define tState data[0] +#define tBlendY data[1] +#define tBlendDelay data[2] +#define tWinRange data[3] + +void task50_0807B6D4(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->tState) + { + case 0: + task->tBlendY = 0; + task->tBlendDelay = 0; + task->tWinRange = REG_WININ; + REG_WININ = WIN_RANGE(63, 63); + REG_BLDCNT = 0x9E; + REG_BLDY = 0; + task->tState++; + // fall through + case 1: + task->tBlendY += 3; + if (task->tBlendY > 16) + task->tBlendY = 16; + REG_BLDY = task->tBlendY; + if (task->tBlendY >= 16) + task->tState++; + break; + case 2: + task->tBlendDelay++; + if (task->tBlendDelay > 9) + { + task->tBlendDelay = 0; + task->tBlendY--; + if (task->tBlendY <= 0) + { + task->tBlendY = 0; + task->tState++; + } + REG_BLDY = task->tBlendY; + } + break; + case 3: + REG_BLDCNT = 0; + REG_BLDY = 0; + REG_WININ = task->tWinRange; + task->tState++; + break; + case 4: + EnableBothScriptContexts(); + DestroyTask(taskId); + break; + } +} + +#undef tState +#undef tBlendY +#undef tBlendDelay +#undef tWinRange + +//------------------------------------------------------------------------------ +// Light Rain +//------------------------------------------------------------------------------ + +void LightRain_InitVars(void) +{ + gWeatherPtr->unknown_6CC = 0; + gWeatherPtr->unknown_6D2 = 0; + gWeatherPtr->unknown_6D6 = 0; + gWeatherPtr->unknown_6DB = 8; + gWeatherPtr->unknown_6DC = 0; + gWeatherPtr->unknown_6D9 = 10; + gWeatherPtr->unknown_6C1 = 3; + gWeatherPtr->unknown_6C2 = 20; + SetRainStrengthFromSoundEffect(SE_T_KOAME); +} + +void sub_807E400(void); + +void sub_807E3D0(void) +{ + LightRain_InitVars(); + while (gWeatherPtr->unknown_6D2 == 0) + sub_807E400(); +} + +void sub_807E7A4(void); +u8 sub_807E7B4(void); +u8 sub_807E8E8(void); + +void sub_807E400(void) +{ + switch (gWeatherPtr->unknown_6CC) + { + case 0: + sub_807E7A4(); + gWeatherPtr->unknown_6CC++; + break; + case 1: + if (sub_807E7B4() == 0) + gWeatherPtr->unknown_6CC++; + break; + case 2: + if (sub_807E8E8() == FALSE) + { + gWeatherPtr->unknown_6D2 = 1; + gWeatherPtr->unknown_6CC++; + } + break; + } +} + +void sub_807E974(void); + +bool8 sub_807E460(void) +{ + switch (gWeatherPtr->unknown_6CE) + { + case 0: + if (gWeatherPtr->unknown_6D1 == 3 + || gWeatherPtr->unknown_6D1 == 5 + || gWeatherPtr->unknown_6D1 == 13) + { + gWeatherPtr->unknown_6CE = 0xFF; + return FALSE; + } + else + { + gWeatherPtr->unknown_6D9 = 0; + gWeatherPtr->unknown_6CE++; + } + // fall through + case 1: + if (sub_807E8E8() == FALSE) + { + sub_807E974(); + gWeatherPtr->unknown_6CE++; + return FALSE; + } + return TRUE; + } + return FALSE; +} + +// defined below +extern const s16 gUnknown_0839AABC[][2]; +extern const u16 gUnknown_0839AAC4[][2]; + +void sub_807E4EC(struct Sprite *sprite) +{ + u32 randVal; + u16 r6; + s32 r4; + s32 r0; + + if (sprite->data[1] == 0) + sprite->data[1] = 361; + randVal = sprite->data[1] * 1103515245 + 12345; + sprite->data[1] = ((randVal & 0x7FFF0000) >> 16) % 600; + + r6 = gUnknown_0839AAC4[gWeatherPtr->unknown_6DC][0]; + + r4 = sprite->data[1] % 30; + sprite->data[2] = r4 * 8; // useless assignment + + r0 = sprite->data[1] / 30; + sprite->data[3] = r0 * 8; // useless assignment + + sprite->data[2] = r4; + sprite->data[2] <<= 7; + + sprite->data[3] = r0; + sprite->data[3] <<= 7; + + sprite->data[2] -= gUnknown_0839AABC[gWeatherPtr->unknown_6DC][0] * r6; + sprite->data[3] -= gUnknown_0839AABC[gWeatherPtr->unknown_6DC][1] * r6; + + StartSpriteAnim(sprite, 0); + sprite->data[4] = 0; + sprite->coordOffsetEnabled = FALSE; + sprite->data[0] = r6; +} + +void sub_807E5C0(struct Sprite *sprite) +{ + if (sprite->data[4] == 0) + { + sprite->data[2] += gUnknown_0839AABC[gWeatherPtr->unknown_6DC][0]; + sprite->data[3] += gUnknown_0839AABC[gWeatherPtr->unknown_6DC][1]; + sprite->pos1.x = sprite->data[2] >> 4; + sprite->pos1.y = sprite->data[3] >> 4; + + if (sprite->data[5] != 0 + && (sprite->pos1.x >= -8 && sprite->pos1.x <= 248) + && sprite->pos1.y >= -16 && sprite->pos1.y <= 176) + sprite->invisible = FALSE; + else + sprite->invisible = TRUE; + + sprite->data[0]--; + if (sprite->data[0] == 0) + { + StartSpriteAnim(sprite, gWeatherPtr->unknown_6DC + 1); + sprite->data[4] = 1; + sprite->pos1.x -= gSpriteCoordOffsetX; + sprite->pos1.y -= gSpriteCoordOffsetY; + sprite->coordOffsetEnabled = TRUE; + } + } + else if (sprite->animEnded) + { + sprite->invisible = TRUE; + sub_807E4EC(sprite); + } +} + +void sub_807E6C4(struct Sprite *sprite) +{ + if (sprite->data[0] == 0) + { + sub_807E4EC(sprite); + sprite->callback = sub_807E5C0; + } + else + { + sprite->data[0]--; + } +} + +void sub_807E6F0(struct Sprite *sprite, u16 b) +{ + u16 r8 = gUnknown_0839AAC4[gWeatherPtr->unknown_6DC][0]; + u16 r6 = b / (gUnknown_0839AAC4[gWeatherPtr->unknown_6DC][1] + r8); + u16 r4 = b % (gUnknown_0839AAC4[gWeatherPtr->unknown_6DC][1] + r8); + + while (--r6 != 0xFFFF) + sub_807E4EC(sprite); + if (r4 < r8) + { + while (--r4 != 0xFFFF) + sub_807E5C0(sprite); + sprite->data[6] = 0; + } + else + { + sprite->data[0] = r4 - r8; + sprite->invisible = TRUE; + sprite->data[6] = 1; + } +} + +extern const struct SpriteSheet gUnknown_0839AACC; // defined below + +void sub_807E7A4(void) +{ + LoadSpriteSheet(&gUnknown_0839AACC); +} + +const struct Coords16 gUnknown_0839AA08[] = +{ + { 0, 0}, + { 0, 160}, + { 0, 64}, + {144, 224}, + {144, 128}, + { 32, 32}, + { 32, 192}, + { 32, 96}, + { 72, 128}, + { 72, 32}, + { 72, 192}, + {216, 96}, + {216, 0}, + {104, 160}, + {104, 64}, + {104, 224}, + {144, 0}, + {144, 160}, + {144, 64}, + { 32, 224}, + { 32, 128}, + { 72, 32}, + { 72, 192}, + { 48, 96}, +}; + +const struct OamData gOamData_839AA68 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 2, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 1, + .paletteNum = 2, + .affineParam = 0, +}; + +const union AnimCmd gSpriteAnim_839AA70[] = +{ + ANIMCMD_FRAME(0, 16), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd gSpriteAnim_839AA78[] = +{ + ANIMCMD_FRAME(8, 3), + ANIMCMD_FRAME(32, 2), + ANIMCMD_FRAME(40, 2), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_839AA88[] = +{ + ANIMCMD_FRAME(8, 3), + ANIMCMD_FRAME(16, 3), + ANIMCMD_FRAME(24, 4), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_839AA98[] = +{ + gSpriteAnim_839AA70, + gSpriteAnim_839AA78, + gSpriteAnim_839AA88, +}; + +const struct SpriteTemplate gSpriteTemplate_839AAA4 = +{ + .tileTag = 4614, + .paletteTag = 4608, + .oam = &gOamData_839AA68, + .anims = gSpriteAnimTable_839AA98, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_807E5C0, +}; + + +const s16 gUnknown_0839AABC[][2] = +{ + {-104, 208}, + {-160, 320}, +}; + +const u16 gUnknown_0839AAC4[][2] = +{ + {18, 7}, + {12, 10}, +}; + +const struct SpriteSheet gUnknown_0839AACC = {WeatherRainTiles, sizeof(WeatherRainTiles), 0x1206}; + +const struct OamData gOamData_839AAD4 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +const struct SpriteFrameImage gSpriteImageTable_839AADC[] = +{ + {gSpriteImage_8398948, sizeof(gSpriteImage_8398948)}, + {gSpriteImage_8398968, sizeof(gSpriteImage_8398968)}, +}; + +const union AnimCmd gSpriteAnim_839AAEC[] = +{ + ANIMCMD_FRAME(0, 16), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_839AAF4[] = +{ + ANIMCMD_FRAME(1, 16), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_839AAFC[] = +{ + gSpriteAnim_839AAEC, + gSpriteAnim_839AAF4, +}; + +void sub_807ED48(struct Sprite *); +const struct SpriteTemplate gSpriteTemplate_839AB04 = +{ + .tileTag = 0xFFFF, + .paletteTag = 4608, + .oam = &gOamData_839AAD4, + .anims = gSpriteAnimTable_839AAFC, + .images = gSpriteImageTable_839AADC, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_807ED48, +}; + +// unused data +const u16 unusedData_839AB1C[] = {0, 6, 6, 12, 18, 42, 300, 300}; + +const struct OamData gOamData_839AB2C = +{ + .y = 0, + .affineMode = 0, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const union AnimCmd gSpriteAnim_839AB34[] = +{ + ANIMCMD_FRAME(0, 16), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_839AB3C[] = +{ + ANIMCMD_FRAME(32, 16), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_839AB44[] = +{ + ANIMCMD_FRAME(64, 16), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_839AB4C[] = +{ + ANIMCMD_FRAME(96, 16), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_839AB54[] = +{ + ANIMCMD_FRAME(128, 16), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_839AB5C[] = +{ + ANIMCMD_FRAME(160, 16), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_839AB64[] = +{ + gSpriteAnim_839AB34, + gSpriteAnim_839AB3C, + gSpriteAnim_839AB44, + gSpriteAnim_839AB4C, + gSpriteAnim_839AB54, + gSpriteAnim_839AB5C, +}; + +const union AffineAnimCmd gSpriteAffineAnim_839AB7C[] = +{ + AFFINEANIMCMD_FRAME(0x200, 0x200, 0, 0), + AFFINEANIMCMD_END, +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_839AB8C[] = +{ + gSpriteAffineAnim_839AB7C, +}; + +void sub_807F688(struct Sprite *); +const struct SpriteTemplate gSpriteTemplate_839AB90 = +{ + .tileTag = 4609, + .paletteTag = 4608, + .oam = &gOamData_839AB2C, + .anims = gSpriteAnimTable_839AB64, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_839AB8C, + .callback = sub_807F688, +}; + +const struct SpriteSheet gWeatherFog1SpriteSheet = {gWeatherFog1Tiles, sizeof(gWeatherFog1Tiles), 0x1201}; +const struct SpriteSheet gWeatherAshSpriteSheet = {WeatherAshTiles, sizeof(WeatherAshTiles), 0x1202}; + +const struct OamData gOamData_839ABB8 = +{ + .y = 0, + .affineMode = 0, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 1, + .paletteNum = 15, + .affineParam = 0, +}; + +const union AnimCmd gSpriteAnim_839ABC0[] = +{ + ANIMCMD_FRAME(0, 60), + ANIMCMD_FRAME(64, 60), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd *const gSpriteAnimTable_839ABCC[] = +{ + gSpriteAnim_839ABC0, +}; + +void sub_807FAA8(struct Sprite *); +const struct SpriteTemplate gSpriteTemplate_839ABD0 = +{ + .tileTag = 4610, + .paletteTag = 4608, + .oam = &gOamData_839ABB8, + .anims = gSpriteAnimTable_839ABCC, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_807FAA8, +}; + +const struct SpriteSheet gWeatherFog0SpriteSheet = {WeatherFog0Tiles, sizeof(WeatherFog0Tiles), 0x1203}; + +const struct OamData gOamData_839ABF0 = +{ + .y = 0, + .affineMode = 0, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const union AnimCmd gSpriteAnim_839ABF8[] = +{ + ANIMCMD_FRAME(0, 16), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_839AC00[] = +{ + gSpriteAnim_839ABF8, +}; + +void sub_807FE3C(struct Sprite *); +const struct SpriteTemplate gSpriteTemplate_839AC04 = +{ + .tileTag = 4611, + .paletteTag = 4608, + .oam = &gOamData_839ABF0, + .anims = gSpriteAnimTable_839AC00, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_807FE3C, +}; + +const struct OamData gOamData_839AC1C = +{ + .y = 0, + .affineMode = 0, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +const union AnimCmd gSpriteAnim_839AC24[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_839AC2C[] = +{ + ANIMCMD_FRAME(64, 3), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_839AC34[] = +{ + gSpriteAnim_839AC24, + gSpriteAnim_839AC2C, +}; + +void sub_8080338(struct Sprite *); +const struct SpriteTemplate gSpriteTemplate_839AC3C = +{ + .tileTag = 4612, + .paletteTag = 4609, + .oam = &gOamData_839AC1C, + .anims = gSpriteAnimTable_839AC34, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8080338, +}; + +const struct SpriteSheet gWeatherSandstormSpriteSheet = {WeatherSandstormTiles, sizeof(WeatherSandstormTiles), 0x1204}; + +bool8 sub_807E7B4(void) +{ + u8 r7; + u8 spriteId; + + if (gWeatherPtr->unknown_6DA == 24) + return FALSE; + + r7 = gWeatherPtr->unknown_6DA; + spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839AAA4, + gUnknown_0839AA08[r7].x, gUnknown_0839AA08[r7].y, 78); + if (spriteId != 64) + { + gSprites[spriteId].data[5] = 0; + gSprites[spriteId].data[1] = r7 * 145; + while (gSprites[spriteId].data[1] >= 600) + gSprites[spriteId].data[1] -= 600; + sub_807E4EC(&gSprites[spriteId]); + sub_807E6F0(&gSprites[spriteId], r7 * 9); + gSprites[spriteId].invisible = TRUE; + gWeatherPtr->unknown_0[r7] = &gSprites[spriteId]; + } + else + { + gWeatherPtr->unknown_0[r7] = NULL; + } + + if (++gWeatherPtr->unknown_6DA == 24) + { + u16 i; + + for (i = 0; i < 24; i++) + { + if (gWeatherPtr->unknown_0[i] != NULL) + { + if (gWeatherPtr->unknown_0[i]->data[6] == 0) + gWeatherPtr->unknown_0[i]->callback = sub_807E5C0; + else + gWeatherPtr->unknown_0[i]->callback = sub_807E6C4; + } + } + return FALSE; + } + return TRUE; +} + +bool8 sub_807E8E8(void) +{ + if (gWeatherPtr->unknown_6D8 == gWeatherPtr->unknown_6D9) + return FALSE; + + if (++gWeatherPtr->unknown_6D6 > gWeatherPtr->unknown_6DB) + { + gWeatherPtr->unknown_6D6 = 0; + if (gWeatherPtr->unknown_6D8 < gWeatherPtr->unknown_6D9) + { + gWeatherPtr->unknown_0[gWeatherPtr->unknown_6D8++]->data[5] = 1; + } + else + { + gWeatherPtr->unknown_6D8--; + gWeatherPtr->unknown_0[gWeatherPtr->unknown_6D8]->data[5] = 0; + gWeatherPtr->unknown_0[gWeatherPtr->unknown_6D8]->invisible = TRUE; + } + } + return TRUE; +} + +void sub_807E974(void) +{ + u16 i; + + for (i = 0; i < gWeatherPtr->unknown_6DA; i++) + { + if (gWeatherPtr->unknown_0[i] != NULL) + DestroySprite(gWeatherPtr->unknown_0[i]); + } + gWeatherPtr->unknown_6DA = 0; + FreeSpriteTilesByTag(0x1206); +} + +//------------------------------------------------------------------------------ +// Snow +//------------------------------------------------------------------------------ + +void Snow_InitVars(void) +{ + gWeatherPtr->unknown_6CC = 0; + gWeatherPtr->unknown_6D2 = 0; + gWeatherPtr->unknown_6C1 = 3; + gWeatherPtr->unknown_6C2 = 20; + gWeatherPtr->unknown_6E5 = 16; + gWeatherPtr->unknown_6E0 = 0; +} + +void snowflakes_progress2(void); +void sub_807ED48(struct Sprite *); + +void sub_807EA18(void) +{ + Snow_InitVars(); + while (gWeatherPtr->unknown_6D2 == 0) + { + u16 i; + + snowflakes_progress2(); + for (i = 0; i < gWeatherPtr->unknown_6E4; i++) + { + sub_807ED48(gWeatherPtr->snowflakeSprites[i]); + } + } +} + +u8 snowflakes_progress(void); + +void snowflakes_progress2(void) +{ + if (gWeatherPtr->unknown_6CC == 0 && snowflakes_progress() == FALSE) + { + gWeatherPtr->unknown_6D2 = 1; + gWeatherPtr->unknown_6CC++; + } +} + +bool8 sub_807EAC0(void) +{ + switch (gWeatherPtr->unknown_6CE) + { + case 0: + gWeatherPtr->unknown_6E5 = 0; + gWeatherPtr->unknown_6E0 = 0; + gWeatherPtr->unknown_6CE++; + // fall through + case 1: + if (snowflakes_progress() == FALSE) + { + gWeatherPtr->unknown_6CE++; + return FALSE; + } + return TRUE; + } + return FALSE; +} + +bool8 snowflake_add(void); +bool8 snowflake_remove(void); + +bool8 snowflakes_progress(void) +{ + if (gWeatherPtr->unknown_6E4 == gWeatherPtr->unknown_6E5) + return FALSE; + + gWeatherPtr->unknown_6E0++; + if (gWeatherPtr->unknown_6E0 > 36) + { + gWeatherPtr->unknown_6E0 = 0; + if (gWeatherPtr->unknown_6E4 < gWeatherPtr->unknown_6E5) + snowflake_add(); + else + snowflake_remove(); + } + return (gWeatherPtr->unknown_6E4 != gWeatherPtr->unknown_6E5); +} + +void sub_807EC40(struct Sprite *); + +bool8 snowflake_add(void) +{ + u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839AB04, 0, 0, 78); + + if (spriteId == 64) + return FALSE; + gSprites[spriteId].data[4] = gWeatherPtr->unknown_6E4; + sub_807EC40(&gSprites[spriteId]); + gSprites[spriteId].coordOffsetEnabled = TRUE; + gWeatherPtr->snowflakeSprites[gWeatherPtr->unknown_6E4++] = &gSprites[spriteId]; + return TRUE; +} + +bool8 snowflake_remove(void) +{ + if (gWeatherPtr->unknown_6E4 != 0) + { + DestroySprite(gWeatherPtr->snowflakeSprites[--gWeatherPtr->unknown_6E4]); + return TRUE; + } + return FALSE; +} + +void sub_807EC40(struct Sprite *sprite) +{ + u16 r4 = ((sprite->data[4] * 5) & 7) * 30 + (Random() % 30); + u16 r6; + + sprite->pos1.y = -3 - (gSpriteCoordOffsetY + sprite->centerToCornerVecY); + sprite->pos1.x = r4 - (gSpriteCoordOffsetX + sprite->centerToCornerVecX); + sprite->data[0] = sprite->pos1.y * 128; + sprite->pos2.x = 0; + r6 = Random(); + sprite->data[1] = (r6 & 3) * 5 + 64; + sprite->data[7] = (r6 & 3) * 5 + 64; + StartSpriteAnim(sprite, (r6 & 1) ? 0 : 1); + sprite->data[3] = 0; + sprite->data[2] = ((r6 & 3) == 0) ? 2 : 1; + sprite->data[6] = (r6 & 0x1F) + 210; + sprite->data[5] = 0; +} + +void sub_807ECEC(struct Sprite *sprite) +{ + if (gWeatherPtr->unknown_6E2 > 18) + { + sprite->invisible = FALSE; + sprite->callback = sub_807ED48; + sprite->pos1.y = 0xFA - (gSpriteCoordOffsetY + sprite->centerToCornerVecY); + sprite->data[0] = sprite->pos1.y * 128; + gWeatherPtr->unknown_6E2 = 0; + } +} + +void sub_807ED48(struct Sprite *sprite) +{ + s16 r3; + s16 r2; + + sprite->data[0] += sprite->data[1]; + sprite->pos1.y = sprite->data[0] >> 7; + sprite->data[3] = (sprite->data[3] + sprite->data[2]) & 0xFF; + sprite->pos2.x = gSineTable[sprite->data[3]] / 64; + + r3 = (sprite->pos1.x + sprite->centerToCornerVecX + gSpriteCoordOffsetX) & 0x1FF; + if (r3 & 0x100) + r3 = -0x100 | r3; // hmm... what is this? + if (r3 < -3) + sprite->pos1.x = 242 - (gSpriteCoordOffsetX + sprite->centerToCornerVecX); + else if (r3 > 242) + sprite->pos1.x = -3 - (gSpriteCoordOffsetX + sprite->centerToCornerVecX); + + r2 = (sprite->pos1.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY) & 0xFF; + if (r2 > 163 && r2 < 171) + { + sprite->pos1.y = 250 - (gSpriteCoordOffsetY + sprite->centerToCornerVecY); + sprite->data[0] = sprite->pos1.y * 128; + sprite->data[5] = 0; + sprite->data[6] = 220; + } + else if (r2 > 242 && r2 < 250) + { + sprite->pos1.y = 163; + sprite->data[0] = sprite->pos1.y * 128; + sprite->data[5] = 0; + sprite->data[6] = 220; + sprite->invisible = TRUE; + sprite->callback = sub_807ECEC; + } + + sprite->data[5]++; + if (sprite->data[5] == sprite->data[6]) + { + sub_807EC40(sprite); + sprite->pos1.y = 250; + sprite->invisible = TRUE; + sprite->callback = sub_807ECEC; + } +} + +//------------------------------------------------------------------------------ +// Medium Rain +//------------------------------------------------------------------------------ + +void sub_807EE80(void) +{ + gWeatherPtr->unknown_6CC = 0; + gWeatherPtr->unknown_6D2 = 0; + gWeatherPtr->unknown_6D6 = 0; + gWeatherPtr->unknown_6DB = 4; + gWeatherPtr->unknown_6DC = 0; + gWeatherPtr->unknown_6D9 = 16; + gWeatherPtr->unknown_6C1 = 3; + gWeatherPtr->unknown_6C2 = 20; + gWeatherPtr->unknown_6D2 = 0; // duplicate assignment + gWeatherPtr->unknown_6ED = 0; + SetRainStrengthFromSoundEffect(SE_T_AME); +} + +void sub_807EFC0(void); + +void sub_807EEF4(void) +{ + sub_807EE80(); + while (gWeatherPtr->unknown_6D2 == 0) + sub_807EFC0(); +} + +//------------------------------------------------------------------------------ +// Heavy Rain +//------------------------------------------------------------------------------ + +void sub_807EF24(void) +{ + gWeatherPtr->unknown_6CC = 0; + gWeatherPtr->unknown_6D2 = 0; + gWeatherPtr->unknown_6D6 = 0; + gWeatherPtr->unknown_6DB = 4; + gWeatherPtr->unknown_6DC = 1; + gWeatherPtr->unknown_6D9 = 24; + gWeatherPtr->unknown_6C1 = 3; + gWeatherPtr->unknown_6C2 = 20; + gWeatherPtr->unknown_6D2 = 0; // duplicate assignment + SetRainStrengthFromSoundEffect(SE_T_OOAME); +} + +void sub_807EF90(void) +{ + sub_807EF24(); + while (gWeatherPtr->unknown_6D2 == 0) + sub_807EFC0(); +} + +void sub_807F434(void); +void sub_807F3F8(u16); + +void sub_807EFC0(void) +{ + sub_807F434(); + switch (gWeatherPtr->unknown_6CC) + { + case 0: + sub_807E7A4(); + gWeatherPtr->unknown_6CC++; + break; + case 1: + if (sub_807E7B4()) + break; + gWeatherPtr->unknown_6CC++; + break; + case 2: + if (sub_807E8E8()) + break; + gWeatherPtr->unknown_6D2 = 1; + gWeatherPtr->unknown_6CC++; + break; + case 3: + if (gWeatherPtr->unknown_6C6 == 0) + break; + gWeatherPtr->unknown_6CC = 6; + break; + case 4: + gWeatherPtr->unknown_6EA = 1; + gWeatherPtr->unknown_6E6 = (Random() % 360) + 360; + gWeatherPtr->unknown_6CC++; + // fall through + case 5: + if (--gWeatherPtr->unknown_6E6 != 0) + break; + gWeatherPtr->unknown_6CC++; + break; + case 6: + gWeatherPtr->unknown_6EA = 1; + gWeatherPtr->unknown_6EB = Random() % 2; + gWeatherPtr->unknown_6CC++; + break; + case 7: + gWeatherPtr->unknown_6EC = (Random() & 1) + 1; + gWeatherPtr->unknown_6CC++; + // fall through + case 8: + sub_807D5BC(19); + if (gWeatherPtr->unknown_6EB == 0 && gWeatherPtr->unknown_6EC == 1) + sub_807F3F8(20); + gWeatherPtr->unknown_6E6 = (Random() % 3) + 6; + gWeatherPtr->unknown_6CC++; + break; + case 9: + if (--gWeatherPtr->unknown_6E6 != 0) + break; + sub_807D5BC(3); + gWeatherPtr->unknown_6EA = 1; + if (--gWeatherPtr->unknown_6EC != 0) + { + gWeatherPtr->unknown_6E6 = (Random() % 16) + 60; + gWeatherPtr->unknown_6CC = 10; + } + else if (gWeatherPtr->unknown_6EB == 0) + { + gWeatherPtr->unknown_6CC = 4; + } + else + { + gWeatherPtr->unknown_6CC = 11; + } + break; + case 10: + if (--gWeatherPtr->unknown_6E6 != 0) + break; + gWeatherPtr->unknown_6CC = 8; + break; + case 11: + gWeatherPtr->unknown_6E6 = (Random() % 16) + 60; + gWeatherPtr->unknown_6CC++; + break; + case 12: + if (--gWeatherPtr->unknown_6E6 != 0) + break; + sub_807F3F8(100); + sub_807D5BC(19); + // Why use "% 16" everywhere else and "& 0xF" here. So dumb. + gWeatherPtr->unknown_6E6 = (Random() & 0xF) + 30; + gWeatherPtr->unknown_6CC++; + break; + case 13: + if (--gWeatherPtr->unknown_6E6 != 0) + break; + sub_807D5F0(19, 3, 5); + gWeatherPtr->unknown_6CC++; + break; + case 14: + if (gWeatherPtr->unknown_6C6 != 3) + break; + gWeatherPtr->unknown_6EA = 1; + gWeatherPtr->unknown_6CC = 4; + break; + } +} + +bool8 sub_807F34C(void) +{ + switch (gWeatherPtr->unknown_6CE) + { + case 0: + gWeatherPtr->unknown_6EA = 0; + gWeatherPtr->unknown_6CE++; + // fall through + case 1: + sub_807EFC0(); + if (gWeatherPtr->unknown_6EA != 0) + { + if (gWeatherPtr->unknown_6D1 == 3 + || gWeatherPtr->unknown_6D1 == 5 + || gWeatherPtr->unknown_6D1 == 13) + return FALSE; + gWeatherPtr->unknown_6D9 = 0; + gWeatherPtr->unknown_6CE++; + } + break; + case 2: + if (sub_807E8E8()) + break; + sub_807E974(); + gWeatherPtr->unknown_6ED = 0; + gWeatherPtr->unknown_6CE++; + return FALSE; + default: + return FALSE; + } + return TRUE; +} + +void sub_807F3F8(u16 a) +{ + if (gWeatherPtr->unknown_6ED == 0) + { + gWeatherPtr->unknown_6E8 = Random() % a; + gWeatherPtr->unknown_6ED = 1; + } +} + +void sub_807F434(void) +{ + if (gWeatherPtr->unknown_6ED == 1) + { + if (gWeatherPtr->unknown_6E8 == 0) + { + if (IsSEPlaying()) + return; + if (Random() & 1) + PlaySE(SE_T_KAMI); + else + PlaySE(SE_T_KAMI2); + gWeatherPtr->unknown_6ED = 0; + } + else + { + gWeatherPtr->unknown_6E8--; + } + } +} + +void sub_807F49C(void) +{ + gWeatherPtr->unknown_6CC = 0; + gWeatherPtr->unknown_6D2 = 0; + gWeatherPtr->unknown_6C1 = 0; + gWeatherPtr->unknown_6C2 = 20; + if (gWeatherPtr->unknown_6FB == 0) + { + gWeatherPtr->unknown_6F0 = 0; + gWeatherPtr->unknown_6F2 = 0; + gWeatherPtr->unknown_6EE = 0; + sub_807DB64(0, 16); + } +} + +void sub_807F52C(void); + +void sub_807F4FC(void) +{ + sub_807F49C(); + while (gWeatherPtr->unknown_6D2 == 0) + sub_807F52C(); +} + +void sub_807F6E8(void); + +void sub_807F52C(void) +{ + gWeatherPtr->unknown_6EE = (gSpriteCoordOffsetX - gWeatherPtr->unknown_6F2) & 0xFF; + if (++gWeatherPtr->unknown_6F0 > 3) + { + gWeatherPtr->unknown_6F0 = 0; + gWeatherPtr->unknown_6F2++; + } + switch (gWeatherPtr->unknown_6CC) + { + case 0: + sub_807F6E8(); + if (gWeatherPtr->currWeather == 6) + sub_807DBA4(12, 8, 3); + else + sub_807DBA4(4, 16, 0); + gWeatherPtr->unknown_6CC++; + break; + case 1: + if (sub_807DBE8()) + { + gWeatherPtr->unknown_6D2 = 1; + gWeatherPtr->unknown_6CC++; + } + break; + } +} + +void sub_807F7A4(void); + +bool8 sub_807F5EC(void) +{ + gWeatherPtr->unknown_6EE = (gSpriteCoordOffsetX - gWeatherPtr->unknown_6F2) & 0xFF; + if (++gWeatherPtr->unknown_6F0 > 3) + { + gWeatherPtr->unknown_6F0 = 0; + gWeatherPtr->unknown_6F2++; + } + switch (gWeatherPtr->unknown_6CE) + { + case 0: + sub_807DBA4(0, 16, 3); + gWeatherPtr->unknown_6CE++; + break; + case 1: + if (!sub_807DBE8()) + break; + gWeatherPtr->unknown_6CE++; + break; + case 2: + sub_807F7A4(); + gWeatherPtr->unknown_6CE++; + break; + default: + return FALSE; + } + return TRUE; +} + +void sub_807F688(struct Sprite *sprite) +{ + sprite->pos2.y = (u8)gSpriteCoordOffsetY; + sprite->pos1.x = gWeatherPtr->unknown_6EE + 32 + sprite->data[0] * 64; + if (sprite->pos1.x > 0x10F) + { + sprite->pos1.x = 480 + gWeatherPtr->unknown_6EE - (4 - sprite->data[0]) * 64; + sprite->pos1.x &= 0x1FF; + } +} -- cgit v1.2.3 From 37418d05c404aec70745e238796c11b464da33ef Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sat, 25 Nov 2017 18:07:24 -0600 Subject: label and decompile more of field_weather_2 --- src/field/field_weather.c | 255 ++++++------- src/field/field_weather_2.c | 892 +++++++++++++++++++++++++------------------- src/field/overworld.c | 2 +- 3 files changed, 645 insertions(+), 504 deletions(-) (limited to 'src/field') diff --git a/src/field/field_weather.c b/src/field/field_weather.c index 2d4711b81..edb186b95 100644 --- a/src/field/field_weather.c +++ b/src/field/field_weather.c @@ -28,10 +28,10 @@ struct WeatherPaletteData struct WeatherCallbacks { - void (*func0)(void); - void (*func1)(void); - void (*func2)(void); - u8 (*func3)(void); + void (*initVars)(void); + void (*main)(void); + void (*initAll)(void); + u8 (*finish)(void); }; extern struct Weather gWeather; @@ -48,7 +48,7 @@ const u8 DroughtPaletteData_5[] = INCBIN_U8("graphics/weather/drought5.bin.lz"); extern u8 (*gUnknown_0202FC48)[32]; extern u8 gUnknown_0202F9E8[32]; -const u8 *const gUnknown_08396FA8[] = +static const u8 *const sCompressedDroughtPalettes[] = { DroughtPaletteData_0, DroughtPaletteData_1, @@ -65,34 +65,34 @@ const u8 *const gUnknown_08396FA8[] = // this file produces the same result as accessing gWeather directly. struct Weather *const gWeatherPtr = &gWeather; -void sub_807CAE8(void); -void nullsub_38(void); -u8 sub_807CB0C(void); -void sub_807DE78(void); -void sub_807DEF4(void); -void sub_807DEC4(void); -u8 sub_807DF54(void); +void None_Init(void); +void None_Main(void); +u8 None_Finish(void); +void Clouds_InitVars(void); +void Clouds_Main(void); +void Clouds_InitAll(void); +u8 Clouds_Finish(void); void sub_807DF9C(void); void nullsub_55(void); void sub_807DFC0(void); u8 sub_807DFD0(void); void LightRain_InitVars(void); -void sub_807E400(void); -void sub_807E3D0(void); -u8 sub_807E460(void); +void LightRain_Main(void); +void LightRain_InitAll(void); +u8 LightRain_Finish(void); void Snow_InitVars(void); -void snowflakes_progress2(void); -void sub_807EA18(void); -u8 sub_807EAC0(void); -void sub_807EE80(void); -void sub_807EFC0(void); -void sub_807EEF4(void); -u8 sub_807F34C(void); -void sub_807F49C(void); -void sub_807F52C(void); -void sub_807F4FC(void); -u8 sub_807F5EC(void); -void sub_807F7F8(void); +void Snow_Main(void); +void Snow_InitAll(void); +u8 Snow_Finish(void); +void MedRain_InitVars(void); +void Rain_Main(void); +void MedRain_InitAll(void); +u8 Rain_Finish(void); +void Fog2_InitVars(void); +void Fog2_Main(void); +void Fog2_InitAll(void); +u8 Fog2_Finish(void); +void Fog1_InitVars(void); void sub_807F888(void); void sub_807F858(void); u8 sub_807F934(void); @@ -104,10 +104,10 @@ void sub_807FB24(void); void sub_807FBD8(void); void sub_807FBA8(void); u8 sub_807FC3C(void); -void sub_807F49C(void); -void sub_807F52C(void); -void sub_807F4FC(void); -u8 sub_807F5EC(void); +void Fog2_InitVars(void); +void Fog2_Main(void); +void Fog2_InitAll(void); +u8 Fog2_Finish(void); void sub_8080430(void); void nullsub_56(void); void sub_8080460(void); @@ -116,32 +116,32 @@ void sub_807E110(void); void sub_807E174(void); void sub_807E144(void); u8 sub_807E258(void); -void sub_807EF24(void); -void sub_807EFC0(void); -void sub_807EF90(void); -u8 sub_807F34C(void); +void HeavyRain_InitVars(void); +void Rain_Main(void); +void HeavyRain_InitAll(void); +u8 Rain_Finish(void); void sub_8080474(void); void sub_80804F8(void); void sub_80804C8(void); u8 sub_808056C(void); -const struct WeatherCallbacks gUnknown_08396FC8[] = +static const struct WeatherCallbacks sWeatherFuncs[] = { - {sub_807CAE8, nullsub_38, sub_807CAE8, sub_807CB0C}, - {sub_807DE78, sub_807DEF4, sub_807DEC4, sub_807DF54}, - {sub_807DF9C, nullsub_55, sub_807DFC0, sub_807DFD0}, - {LightRain_InitVars, sub_807E400, sub_807E3D0, sub_807E460}, // light rain - {Snow_InitVars, snowflakes_progress2, sub_807EA18, sub_807EAC0}, // snow - {sub_807EE80, sub_807EFC0, sub_807EEF4, sub_807F34C}, - {sub_807F49C, sub_807F52C, sub_807F4FC, sub_807F5EC}, - {sub_807F7F8, sub_807F888, sub_807F858, sub_807F934}, - {sub_807FE9C, sub_807FF4C, sub_807FF1C, sub_807FFC8}, - {sub_807FB24, sub_807FBD8, sub_807FBA8, sub_807FC3C}, - {sub_807F49C, sub_807F52C, sub_807F4FC, sub_807F5EC}, - {sub_8080430, nullsub_56, sub_8080460, sub_8080470}, - {sub_807E110, sub_807E174, sub_807E144, sub_807E258}, - {sub_807EF24, sub_807EFC0, sub_807EF90, sub_807F34C}, - {sub_8080474, sub_80804F8, sub_80804C8, sub_808056C}, + {None_Init, None_Main, None_Init, None_Finish}, + {Clouds_InitVars, Clouds_Main, Clouds_InitAll, Clouds_Finish}, + {sub_807DF9C, nullsub_55, sub_807DFC0, sub_807DFD0}, + {LightRain_InitVars, LightRain_Main, LightRain_InitAll, LightRain_Finish}, // light rain + {Snow_InitVars, Snow_Main, Snow_InitAll, Snow_Finish}, // snow + {MedRain_InitVars, Rain_Main, MedRain_InitAll, Rain_Finish}, + {Fog2_InitVars, Fog2_Main, Fog2_InitAll, Fog2_Finish}, + {Fog1_InitVars, sub_807F888, sub_807F858, sub_807F934}, // fog 1 + {sub_807FE9C, sub_807FF4C, sub_807FF1C, sub_807FFC8}, + {sub_807FB24, sub_807FBD8, sub_807FBA8, sub_807FC3C}, + {Fog2_InitVars, Fog2_Main, Fog2_InitAll, Fog2_Finish}, + {sub_8080430, nullsub_56, sub_8080460, sub_8080470}, + {sub_807E110, sub_807E174, sub_807E144, sub_807E258}, + {HeavyRain_InitVars, Rain_Main, HeavyRain_InitAll, Rain_Finish}, + {sub_8080474, sub_80804F8, sub_80804C8, sub_808056C}, }; void (*const gUnknown_083970B8[])(void) = @@ -190,10 +190,10 @@ const u8 gUnknown_083970C8[] = const u16 gUnknown_083970E8[] = INCBIN_U16("graphics/weather/0.gbapal"); -void sub_807C828(void) +void StartWeather(void) { u8 index; - if (!FuncIsActiveTask(sub_807CA34)) + if (!FuncIsActiveTask(Task_WeatherMain)) { index = AllocSpritePalette(0x1200); CpuCopy32(gUnknown_083970E8, &gPlttBufferUnfaded[0x100 + index * 16], 32); @@ -202,8 +202,8 @@ void sub_807C828(void) gWeatherPtr->unknown_6D4 = AllocSpritePalette(0x1201); gWeatherPtr->unknown_6DA = 0; gWeatherPtr->unknown_6D8 = 0; - gWeatherPtr->unknown_6DE = 0; - gWeatherPtr->unknown_6E4 = 0; + gWeatherPtr->cloudsActive = 0; + gWeatherPtr->snowflakeSpriteCount = 0; gWeatherPtr->unknown_700 = 0; gWeatherPtr->unknown_6FB = 0; gWeatherPtr->unknown_724 = 0; @@ -211,12 +211,12 @@ void sub_807C828(void) gWeatherPtr->unknown_717 = 0; gWeatherPtr->unknown_72E = 0; gWeatherPtr->unknown_6FA = 0; - sub_807DB64(16, 0); + Weather_SetBlendCoeffs(16, 0); gWeatherPtr->currWeather = 0; gWeatherPtr->unknown_6C6 = 3; gWeatherPtr->unknown_6C8 = 0; gWeatherPtr->unknown_6D3 = 1; - gWeatherPtr->unknown_6C9 = CreateTask(sub_807C9E4, 80); + gWeatherPtr->unknown_6C9 = CreateTask(Task_WeatherInit, 80); } } @@ -226,12 +226,12 @@ void DoWeatherEffect(u8 effect) { PlayRainSoundEffect(); } - if (gWeatherPtr->unknown_6D1 != effect && gWeatherPtr->currWeather == effect) + if (gWeatherPtr->nextWeather != effect && gWeatherPtr->currWeather == effect) { - gUnknown_08396FC8[effect].func0(); + sWeatherFuncs[effect].initVars(); } gWeatherPtr->unknown_6D3 = 0; - gWeatherPtr->unknown_6D1 = effect; + gWeatherPtr->nextWeather = effect; gWeatherPtr->unknown_6CE = 0; } @@ -239,59 +239,57 @@ void sub_807C988(u8 effect) { PlayRainSoundEffect(); gWeatherPtr->currWeather = effect; - gWeatherPtr->unknown_6D1 = effect; + gWeatherPtr->nextWeather = effect; } void sub_807C9B4(u8 effect) { PlayRainSoundEffect(); gWeatherPtr->currWeather = effect; - gWeatherPtr->unknown_6D1 = effect; + gWeatherPtr->nextWeather = effect; gWeatherPtr->unknown_6C8 = 1; } -void sub_807C9E4(u8 taskId) +void Task_WeatherInit(u8 taskId) { if (gWeatherPtr->unknown_6C8) { - gUnknown_08396FC8[gWeatherPtr->currWeather].func2(); - gTasks[taskId].func = sub_807CA34; + sWeatherFuncs[gWeatherPtr->currWeather].initAll(); + gTasks[taskId].func = Task_WeatherMain; } } -void sub_807CA34(u8 task) +void Task_WeatherMain(u8 taskId) { - u8 v1; - if (gWeatherPtr->currWeather != gWeatherPtr->unknown_6D1) + if (gWeatherPtr->currWeather != gWeatherPtr->nextWeather) { - v1 = gUnknown_08396FC8[gWeatherPtr->currWeather].func3(); - if (!v1) + if (!sWeatherFuncs[gWeatherPtr->currWeather].finish()) { - gUnknown_08396FC8[gWeatherPtr->unknown_6D1].func0(); - gWeatherPtr->unknown_6C3 = 0; // compiler reuses v1 - gWeatherPtr->unknown_6C6 = 0; // compiler reuses v1 - gWeatherPtr->currWeather = gWeatherPtr->unknown_6D1; + sWeatherFuncs[gWeatherPtr->nextWeather].initVars(); + gWeatherPtr->unknown_6C3 = 0; + gWeatherPtr->unknown_6C6 = 0; + gWeatherPtr->currWeather = gWeatherPtr->nextWeather; gWeatherPtr->unknown_6D3 = 1; } } else { - gUnknown_08396FC8[gWeatherPtr->currWeather].func1(); + sWeatherFuncs[gWeatherPtr->currWeather].main(); } gUnknown_083970B8[gWeatherPtr->unknown_6C6](); } -void sub_807CAE8(void) +void None_Init(void) { gWeatherPtr->unknown_6C1 = 0; gWeatherPtr->unknown_6C2 = 0; } -void nullsub_38(void) +void None_Main(void) { } -u8 sub_807CB0C(void) +u8 None_Finish(void) { return 0; } @@ -627,14 +625,14 @@ void sub_807D1BC(u8 a1, u8 a2, s8 c, u8 d, u16 e) } } -void sub_807D304(s8 a, u8 arg2, u16 c) +void sub_807D304(s8 a, u8 coeff, u16 c) { struct RGBColor color; u8 r_; u8 g_; u8 b_; u16 r4; - u16 r5; + u16 palOffset; u16 r12; a = -a - 1; @@ -642,13 +640,13 @@ void sub_807D304(s8 a, u8 arg2, u16 c) r_ = color.r; g_ = color.g; b_ = color.b; - r5 = 0; + palOffset = 0; for (r4 = 0; r4 < 32; r4++) { if (gUnknown_030006DC[r4] == 0) { - BlendPalette(r5, 16, arg2, c); - r5 += 16; + BlendPalette(palOffset, 16, coeff, c); + palOffset += 16; } else { @@ -660,7 +658,7 @@ void sub_807D304(s8 a, u8 arg2, u16 c) u8 r1, g1, b1; u8 r2, g2, b2; - color1 = *(struct RGBColor *)&gPlttBufferUnfaded[r5]; + color1 = *(struct RGBColor *)&gPlttBufferUnfaded[palOffset]; r1 = color1.r; g1 = color1.g; b1 = color1.b; @@ -671,11 +669,11 @@ void sub_807D304(s8 a, u8 arg2, u16 c) g2 = color2.g; b2 = color2.b; - r2 += ((r_ - r2) * arg2) >> 4; - g2 += ((g_ - g2) * arg2) >> 4; - b2 += ((b_ - b2) * arg2) >> 4; + r2 += ((r_ - r2) * coeff) >> 4; + g2 += ((g_ - g2) * coeff) >> 4; + b2 += ((b_ - b2) * coeff) >> 4; - gPlttBufferFaded[r5++] = (b2 << 10) | (g2 << 5) | r2; + gPlttBufferFaded[palOffset++] = (b2 << 10) | (g2 << 5) | r2; } } } @@ -775,28 +773,28 @@ void sub_807D5F0(u8 a, u8 b, u8 c) } } -void fade_screen(u8 a, u8 b) +void fade_screen(u8 a, u8 delay) { - u32 r4; + u32 fadeColor; u32 r1; u32 r2; switch (a) { case 0: - r4 = 0; + fadeColor = 0; r1 = 0; break; case 2: - r4 = 0xFFFF; + fadeColor = 0xFFFF; r1 = 0; break; case 1: - r4 = 0; + fadeColor = 0; r1 = 1; break; case 3: - r4 = 0xFFFF; + fadeColor = 0xFFFF; r1 = 1; break; default: @@ -823,20 +821,20 @@ void fade_screen(u8 a, u8 b) { if (r2 != 0) CpuFastCopy(gPlttBufferFaded, gPlttBufferUnfaded, 0x400); - BeginNormalPaletteFade(0xFFFFFFFF, b, 0, 16, r4); + BeginNormalPaletteFade(0xFFFFFFFF, delay, 0, 16, fadeColor); gWeatherPtr->unknown_6C6 = 2; } else { - gWeatherPtr->unknown_6C4 = r4; + gWeatherPtr->unknown_6C4 = fadeColor; if (r2 != 0) gWeatherPtr->unknown_6C7 = 0; else - BeginNormalPaletteFade(0xFFFFFFFF, b, 16, 0, r4); + BeginNormalPaletteFade(0xFFFFFFFF, delay, 16, 0, fadeColor); gWeatherPtr->unknown_6C6 = 1; gWeatherPtr->unknown_6CA = 1; gWeatherPtr->unknown_6CB = 0; - sub_807DB64(gWeatherPtr->unknown_730, gWeatherPtr->unknown_732); + Weather_SetBlendCoeffs(gWeatherPtr->currBlendEVA, gWeatherPtr->currBlendEVB); gWeatherPtr->unknown_6C8 = 1; } } @@ -909,7 +907,7 @@ void sub_807D8F0(u8 *a, u8 *b) if (r4 < 7) { r4--; - LZ77UnCompWram(gUnknown_08396FA8[r4], eWeatherPaletteData.data[r4]); + LZ77UnCompWram(sCompressedDroughtPalettes[r4], eWeatherPaletteData.data[r4]); if (r4 == 0) { eWeatherPaletteData.data[r4][0] = 0x421; @@ -921,8 +919,7 @@ void sub_807D8F0(u8 *a, u8 *b) for (i = 0; i < 0x1000; i++) eWeatherPaletteData.data[r4][i] += eWeatherPaletteData.data[r4 - 1][i]; } - (*a)++; - if (*a == 7) + if (++(*a) == 7) { *a = 32; *b = 32; @@ -997,52 +994,58 @@ void sub_807DA4C(void) } } -void sub_807DB64(u8 a, u8 b) +void Weather_SetBlendCoeffs(u8 eva, u8 evb) { - gWeatherPtr->unknown_730 = a; - gWeatherPtr->unknown_732 = b; - gWeatherPtr->unknown_734 = a; - gWeatherPtr->unknown_736 = b; - REG_BLDALPHA = (b << 8) | a; + gWeatherPtr->currBlendEVA = eva; + gWeatherPtr->currBlendEVB = evb; + gWeatherPtr->targetBlendEVA = eva; + gWeatherPtr->targetBlendEVB = evb; + REG_BLDALPHA = BLDALPHA_BLEND(eva, evb); } -void sub_807DBA4(u8 a, u8 b, int c) +void Weather_SetTargetBlendCoeffs(u8 eva, u8 evb, int delay) { - gWeatherPtr->unknown_734 = a; - gWeatherPtr->unknown_736 = b; - gWeatherPtr->unknown_73A = c; + gWeatherPtr->targetBlendEVA = eva; + gWeatherPtr->targetBlendEVB = evb; + gWeatherPtr->blendDelay = delay; gWeatherPtr->unknown_739 = 0; gWeatherPtr->unknown_738 = 0; } -bool8 sub_807DBE8(void) +bool8 Weather_UpdateBlend(void) { - if (gWeatherPtr->unknown_730 == gWeatherPtr->unknown_734 - && gWeatherPtr->unknown_732 == gWeatherPtr->unknown_736) + if (gWeatherPtr->currBlendEVA == gWeatherPtr->targetBlendEVA + && gWeatherPtr->currBlendEVB == gWeatherPtr->targetBlendEVB) return TRUE; - if (++gWeatherPtr->unknown_739 > gWeatherPtr->unknown_73A) + + if (++gWeatherPtr->unknown_739 > gWeatherPtr->blendDelay) { gWeatherPtr->unknown_739 = 0; gWeatherPtr->unknown_738++; + + // Update currBlendEVA and currBlendEVB on alternate frames if (gWeatherPtr->unknown_738 & 1) { - if (gWeatherPtr->unknown_730 < gWeatherPtr->unknown_734) - gWeatherPtr->unknown_730++; - else if (gWeatherPtr->unknown_730 > gWeatherPtr->unknown_734) - gWeatherPtr->unknown_730--; + if (gWeatherPtr->currBlendEVA < gWeatherPtr->targetBlendEVA) + gWeatherPtr->currBlendEVA++; + else if (gWeatherPtr->currBlendEVA > gWeatherPtr->targetBlendEVA) + gWeatherPtr->currBlendEVA--; } else { - if (gWeatherPtr->unknown_732 < gWeatherPtr->unknown_736) - gWeatherPtr->unknown_732++; - else if (gWeatherPtr->unknown_732 > gWeatherPtr->unknown_736) - gWeatherPtr->unknown_732--; + if (gWeatherPtr->currBlendEVB < gWeatherPtr->targetBlendEVB) + gWeatherPtr->currBlendEVB++; + else if (gWeatherPtr->currBlendEVB > gWeatherPtr->targetBlendEVB) + gWeatherPtr->currBlendEVB--; } } - REG_BLDALPHA = (gWeatherPtr->unknown_732 << 8) | gWeatherPtr->unknown_730; - if (gWeatherPtr->unknown_730 == gWeatherPtr->unknown_734 - && gWeatherPtr->unknown_732 == gWeatherPtr->unknown_736) + + REG_BLDALPHA = BLDALPHA_BLEND(gWeatherPtr->currBlendEVA, gWeatherPtr->currBlendEVB); + + if (gWeatherPtr->currBlendEVA == gWeatherPtr->targetBlendEVA + && gWeatherPtr->currBlendEVB == gWeatherPtr->targetBlendEVB) return TRUE; + return FALSE; } diff --git a/src/field/field_weather_2.c b/src/field/field_weather_2.c index fa97df459..d2ef34f6f 100644 --- a/src/field/field_weather_2.c +++ b/src/field/field_weather_2.c @@ -11,34 +11,28 @@ extern struct Weather *const gWeatherPtr; -//extern const s16 gUnknown_0839A9C8[][2]; -extern const struct SpriteSheet gWeatherCloudSpriteSheet; -extern const struct SpriteTemplate gSpriteTemplate_839A9F0; -extern const struct SpriteTemplate gSpriteTemplate_839AAA4; -extern const struct SpriteTemplate gSpriteTemplate_839AB04; - const u16 gUnknown_08397108[] = INCBIN_U16("graphics/weather/1.gbapal"); const u16 gUnknown_08397128[] = INCBIN_U16("graphics/weather/2.gbapal"); -const u8 WeatherFog0Tiles[] = INCBIN_U8("graphics/weather/fog0.4bpp"); const u8 gWeatherFog1Tiles[] = INCBIN_U8("graphics/weather/fog1.4bpp"); -const u8 WeatherCloudTiles[] = INCBIN_U8("graphics/weather/cloud.4bpp"); -const u8 gSpriteImage_8398948[] = INCBIN_U8("graphics/weather/snow0.4bpp"); -const u8 gSpriteImage_8398968[] = INCBIN_U8("graphics/weather/snow1.4bpp"); -const u8 WeatherBubbleTiles[] = INCBIN_U8("graphics/weather/bubble.4bpp"); -const u8 WeatherAshTiles[] = INCBIN_U8("graphics/weather/ash.4bpp"); -const u8 WeatherRainTiles[] = INCBIN_U8("graphics/weather/rain.4bpp"); -const u8 WeatherSandstormTiles[] = INCBIN_U8("graphics/weather/sandstorm.4bpp"); +const u8 gWeatherFog2Tiles[] = INCBIN_U8("graphics/weather/fog2.4bpp"); +const u8 gWeatherCloudTiles[] = INCBIN_U8("graphics/weather/cloud.4bpp"); +const u8 gWeatherSnow1Tiles[] = INCBIN_U8("graphics/weather/snow0.4bpp"); +const u8 gWeatherSnow2Tiles[] = INCBIN_U8("graphics/weather/snow1.4bpp"); +const u8 gWeatherBubbleTiles[] = INCBIN_U8("graphics/weather/bubble.4bpp"); +const u8 gWeatherAshTiles[] = INCBIN_U8("graphics/weather/ash.4bpp"); +const u8 gWeatherRainTiles[] = INCBIN_U8("graphics/weather/rain.4bpp"); +const u8 gWeatherSandstormTiles[] = INCBIN_U8("graphics/weather/sandstorm.4bpp"); -const struct Coords16 gUnknown_0839A9C8[] = +static const struct Coords16 gUnknown_0839A9C8[] = { { 0, 66}, { 5, 73}, {10, 78}, }; -const struct SpriteSheet gWeatherCloudSpriteSheet = {WeatherCloudTiles, 0x800, 0x1200}; +static const struct SpriteSheet sCloudSpriteSheet = {gWeatherCloudTiles, 0x800, 0x1200}; -const struct OamData gOamData_839A9DC = +static const struct OamData gOamData_839A9DC = { .y = 0, .affineMode = 0, @@ -55,19 +49,19 @@ const struct OamData gOamData_839A9DC = .affineParam = 0, }; -const union AnimCmd gSpriteAnim_839A9E4[] = +static const union AnimCmd gSpriteAnim_839A9E4[] = { ANIMCMD_FRAME(0, 16), ANIMCMD_END, }; -const union AnimCmd *const gSpriteAnimTable_839A9EC[] = +static const union AnimCmd *const gSpriteAnimTable_839A9EC[] = { gSpriteAnim_839A9E4, }; void sub_807E0F4(struct Sprite *); -const struct SpriteTemplate gSpriteTemplate_839A9F0 = +static const struct SpriteTemplate sCloudSpriteTemplate = { .tileTag = 4608, .paletteTag = 4609, @@ -84,8 +78,8 @@ extern void sub_807D9A8(void); extern bool8 sub_807D9C8(void); extern void sub_807DA14(void); extern void sub_807DA4C(void); -extern void sub_807DBA4(u8 a, u8 b, int c); -extern bool8 sub_807DBE8(void); +extern void Weather_SetTargetBlendCoeffs(u8 a, u8 b, int c); +extern bool8 Weather_UpdateBlend(void); extern void SetRainStrengthFromSoundEffect(u16 sndEff); extern void sub_807D5F0(u8 a, u8 b, u8 c); @@ -93,44 +87,44 @@ extern void sub_807D5F0(u8 a, u8 b, u8 c); // Clouds //------------------------------------------------------------------------------ -void sub_807DE78(void) +void Clouds_InitVars(void) { gWeatherPtr->unknown_6C1 = 0; gWeatherPtr->unknown_6C2 = 20; - gWeatherPtr->unknown_6D2 = 0; - gWeatherPtr->unknown_6CC = 0; - if (gWeatherPtr->unknown_6DE == 0) - sub_807DB64(0, 16); + gWeatherPtr->weatherGfxLoaded = FALSE; + gWeatherPtr->initStep = 0; + if (gWeatherPtr->cloudsActive == FALSE) + Weather_SetBlendCoeffs(0, 16); } -void sub_807DEF4(void); +void Clouds_Main(void); -void sub_807DEC4(void) +void Clouds_InitAll(void) { - sub_807DE78(); - while (gWeatherPtr->unknown_6D2 == 0) - sub_807DEF4(); + Clouds_InitVars(); + while (gWeatherPtr->weatherGfxLoaded == FALSE) + Clouds_Main(); } -void sub_807DFD4(void); +void CreateCloudSprites(void); -void sub_807DEF4(void) +void Clouds_Main(void) { - switch (gWeatherPtr->unknown_6CC) + switch (gWeatherPtr->initStep) { case 0: - sub_807DFD4(); - gWeatherPtr->unknown_6CC++; + CreateCloudSprites(); + gWeatherPtr->initStep++; break; case 1: - sub_807DBA4(12, 8, 1); - gWeatherPtr->unknown_6CC++; + Weather_SetTargetBlendCoeffs(12, 8, 1); + gWeatherPtr->initStep++; break; case 2: - if (sub_807DBE8()) + if (Weather_UpdateBlend()) { - gWeatherPtr->unknown_6D2 = 1; - gWeatherPtr->unknown_6CC++; + gWeatherPtr->weatherGfxLoaded = TRUE; + gWeatherPtr->initStep++; } break; } @@ -138,16 +132,16 @@ void sub_807DEF4(void) void sub_807E0A0(void); -bool8 sub_807DF54(void) +bool8 Clouds_Finish(void) { switch (gWeatherPtr->unknown_6CE) { case 0: - sub_807DBA4(0, 16, 1); + Weather_SetTargetBlendCoeffs(0, 16, 1); gWeatherPtr->unknown_6CE++; return TRUE; case 1: - if (sub_807DBE8()) + if (Weather_UpdateBlend()) { sub_807E0A0(); gWeatherPtr->unknown_6CE++; @@ -177,17 +171,17 @@ int sub_807DFD0(void) return 0; } -void sub_807DFD4(void) +void CreateCloudSprites(void) { u16 i; - if (gWeatherPtr->unknown_6DE == 1) + if (gWeatherPtr->cloudsActive == TRUE) return; - LoadSpriteSheet(&gWeatherCloudSpriteSheet); + LoadSpriteSheet(&sCloudSpriteSheet); sub_807D8C0(gUnknown_08397108); for (i = 0; i < 3; i++) { - u8 spriteId = CreateSprite(&gSpriteTemplate_839A9F0, 0, 0, 0xFF); + u8 spriteId = CreateSprite(&sCloudSpriteTemplate, 0, 0, 0xFF); if (spriteId != 64) { @@ -203,14 +197,14 @@ void sub_807DFD4(void) gWeatherPtr->cloudSprites[i] = NULL; } } - gWeatherPtr->unknown_6DE = 1; + gWeatherPtr->cloudsActive = TRUE; } void sub_807E0A0(void) { u16 i; - if (gWeatherPtr->unknown_6DE == 0) + if (gWeatherPtr->cloudsActive == FALSE) return; for (i = 0; i < 3; i++) { @@ -218,7 +212,7 @@ void sub_807E0A0(void) DestroySprite(gWeatherPtr->cloudSprites[i]); } FreeSpriteTilesByTag(0x1200); - gWeatherPtr->unknown_6DE = 0; + gWeatherPtr->cloudsActive = FALSE; } void sub_807E0F4(struct Sprite *sprite) @@ -230,8 +224,8 @@ void sub_807E0F4(struct Sprite *sprite) void sub_807E110(void) { - gWeatherPtr->unknown_6CC = 0; - gWeatherPtr->unknown_6D2 = 0; + gWeatherPtr->initStep = 0; + gWeatherPtr->weatherGfxLoaded = FALSE; gWeatherPtr->unknown_6C1 = 0; gWeatherPtr->unknown_6C2 = 0; } @@ -241,36 +235,36 @@ void sub_807E174(void); void sub_807E144(void) { sub_807E110(); - while (gWeatherPtr->unknown_6D2 == 0) + while (gWeatherPtr->weatherGfxLoaded == FALSE) sub_807E174(); } void sub_807E174(void) { - switch (gWeatherPtr->unknown_6CC) + switch (gWeatherPtr->initStep) { case 0: if (gWeatherPtr->unknown_6C6 != 0) - gWeatherPtr->unknown_6CC++; + gWeatherPtr->initStep++; break; case 1: sub_807D9A8(); - gWeatherPtr->unknown_6CC++; + gWeatherPtr->initStep++; break; case 2: if (sub_807D9C8() == FALSE) - gWeatherPtr->unknown_6CC++; + gWeatherPtr->initStep++; break; case 3: sub_807DA14(); - gWeatherPtr->unknown_6CC++; + gWeatherPtr->initStep++; break; case 4: sub_807DA4C(); if (gWeatherPtr->unknown_73C == 6) { - gWeatherPtr->unknown_6D2 = 1; - gWeatherPtr->unknown_6CC++; + gWeatherPtr->weatherGfxLoaded = TRUE; + gWeatherPtr->initStep++; } break; default: @@ -307,7 +301,8 @@ void task50_0807B6D4(u8 taskId) task->tBlendDelay = 0; task->tWinRange = REG_WININ; REG_WININ = WIN_RANGE(63, 63); - REG_BLDCNT = 0x9E; + REG_BLDCNT = BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ + | BLDCNT_EFFECT_LIGHTEN; REG_BLDY = 0; task->tState++; // fall through @@ -357,8 +352,8 @@ void task50_0807B6D4(u8 taskId) void LightRain_InitVars(void) { - gWeatherPtr->unknown_6CC = 0; - gWeatherPtr->unknown_6D2 = 0; + gWeatherPtr->initStep = 0; + gWeatherPtr->weatherGfxLoaded = FALSE; gWeatherPtr->unknown_6D6 = 0; gWeatherPtr->unknown_6DB = 8; gWeatherPtr->unknown_6DC = 0; @@ -368,36 +363,36 @@ void LightRain_InitVars(void) SetRainStrengthFromSoundEffect(SE_T_KOAME); } -void sub_807E400(void); +void LightRain_Main(void); -void sub_807E3D0(void) +void LightRain_InitAll(void) { LightRain_InitVars(); - while (gWeatherPtr->unknown_6D2 == 0) - sub_807E400(); + while (gWeatherPtr->weatherGfxLoaded == FALSE) + LightRain_Main(); } -void sub_807E7A4(void); -u8 sub_807E7B4(void); +void LoadRainSpriteSheet(void); +u8 CreateRainSprites(void); u8 sub_807E8E8(void); -void sub_807E400(void) +void LightRain_Main(void) { - switch (gWeatherPtr->unknown_6CC) + switch (gWeatherPtr->initStep) { case 0: - sub_807E7A4(); - gWeatherPtr->unknown_6CC++; + LoadRainSpriteSheet(); + gWeatherPtr->initStep++; break; case 1: - if (sub_807E7B4() == 0) - gWeatherPtr->unknown_6CC++; + if (CreateRainSprites() == 0) + gWeatherPtr->initStep++; break; case 2: if (sub_807E8E8() == FALSE) { - gWeatherPtr->unknown_6D2 = 1; - gWeatherPtr->unknown_6CC++; + gWeatherPtr->weatherGfxLoaded = TRUE; + gWeatherPtr->initStep++; } break; } @@ -405,14 +400,14 @@ void sub_807E400(void) void sub_807E974(void); -bool8 sub_807E460(void) +bool8 LightRain_Finish(void) { switch (gWeatherPtr->unknown_6CE) { case 0: - if (gWeatherPtr->unknown_6D1 == 3 - || gWeatherPtr->unknown_6D1 == 5 - || gWeatherPtr->unknown_6D1 == 13) + if (gWeatherPtr->nextWeather == WEATHER_RAIN_LIGHT + || gWeatherPtr->nextWeather == WEATHER_RAIN_MED + || gWeatherPtr->nextWeather == WEATHER_RAIN_HEAVY) { gWeatherPtr->unknown_6CE = 0xFF; return FALSE; @@ -542,11 +537,11 @@ void sub_807E6F0(struct Sprite *sprite, u16 b) } } -extern const struct SpriteSheet gUnknown_0839AACC; // defined below +extern const struct SpriteSheet sRainSpriteSheet; // defined below -void sub_807E7A4(void) +void LoadRainSpriteSheet(void) { - LoadSpriteSheet(&gUnknown_0839AACC); + LoadSpriteSheet(&sRainSpriteSheet); } const struct Coords16 gUnknown_0839AA08[] = @@ -577,7 +572,7 @@ const struct Coords16 gUnknown_0839AA08[] = { 48, 96}, }; -const struct OamData gOamData_839AA68 = +static const struct OamData gOamData_839AA68 = { .y = 0, .affineMode = 0, @@ -594,13 +589,13 @@ const struct OamData gOamData_839AA68 = .affineParam = 0, }; -const union AnimCmd gSpriteAnim_839AA70[] = +static const union AnimCmd gSpriteAnim_839AA70[] = { ANIMCMD_FRAME(0, 16), ANIMCMD_JUMP(0), }; -const union AnimCmd gSpriteAnim_839AA78[] = +static const union AnimCmd gSpriteAnim_839AA78[] = { ANIMCMD_FRAME(8, 3), ANIMCMD_FRAME(32, 2), @@ -608,7 +603,7 @@ const union AnimCmd gSpriteAnim_839AA78[] = ANIMCMD_END, }; -const union AnimCmd gSpriteAnim_839AA88[] = +static const union AnimCmd gSpriteAnim_839AA88[] = { ANIMCMD_FRAME(8, 3), ANIMCMD_FRAME(16, 3), @@ -616,14 +611,14 @@ const union AnimCmd gSpriteAnim_839AA88[] = ANIMCMD_END, }; -const union AnimCmd *const gSpriteAnimTable_839AA98[] = +static const union AnimCmd *const gSpriteAnimTable_839AA98[] = { gSpriteAnim_839AA70, gSpriteAnim_839AA78, gSpriteAnim_839AA88, }; -const struct SpriteTemplate gSpriteTemplate_839AAA4 = +static const struct SpriteTemplate sRainSpriteTemplate = { .tileTag = 4614, .paletteTag = 4608, @@ -647,9 +642,9 @@ const u16 gUnknown_0839AAC4[][2] = {12, 10}, }; -const struct SpriteSheet gUnknown_0839AACC = {WeatherRainTiles, sizeof(WeatherRainTiles), 0x1206}; +static const struct SpriteSheet sRainSpriteSheet = {gWeatherRainTiles, sizeof(gWeatherRainTiles), 0x1206}; -const struct OamData gOamData_839AAD4 = +static const struct OamData gOamData_839AAD4 = { .y = 0, .affineMode = 0, @@ -666,32 +661,32 @@ const struct OamData gOamData_839AAD4 = .affineParam = 0, }; -const struct SpriteFrameImage gSpriteImageTable_839AADC[] = +static const struct SpriteFrameImage gSpriteImageTable_839AADC[] = { - {gSpriteImage_8398948, sizeof(gSpriteImage_8398948)}, - {gSpriteImage_8398968, sizeof(gSpriteImage_8398968)}, + {gWeatherSnow1Tiles, sizeof(gWeatherSnow1Tiles)}, + {gWeatherSnow2Tiles, sizeof(gWeatherSnow2Tiles)}, }; -const union AnimCmd gSpriteAnim_839AAEC[] = +static const union AnimCmd gSpriteAnim_839AAEC[] = { ANIMCMD_FRAME(0, 16), ANIMCMD_END, }; -const union AnimCmd gSpriteAnim_839AAF4[] = +static const union AnimCmd gSpriteAnim_839AAF4[] = { ANIMCMD_FRAME(1, 16), ANIMCMD_END, }; -const union AnimCmd *const gSpriteAnimTable_839AAFC[] = +static const union AnimCmd *const gSpriteAnimTable_839AAFC[] = { gSpriteAnim_839AAEC, gSpriteAnim_839AAF4, }; void sub_807ED48(struct Sprite *); -const struct SpriteTemplate gSpriteTemplate_839AB04 = +static const struct SpriteTemplate sSnowflakeSpriteTemplate = { .tileTag = 0xFFFF, .paletteTag = 4608, @@ -703,9 +698,9 @@ const struct SpriteTemplate gSpriteTemplate_839AB04 = }; // unused data -const u16 unusedData_839AB1C[] = {0, 6, 6, 12, 18, 42, 300, 300}; +static const u16 unusedData_839AB1C[] = {0, 6, 6, 12, 18, 42, 300, 300}; -const struct OamData gOamData_839AB2C = +static const struct OamData gOamData_839AB2C = { .y = 0, .affineMode = 0, @@ -722,43 +717,43 @@ const struct OamData gOamData_839AB2C = .affineParam = 0, }; -const union AnimCmd gSpriteAnim_839AB34[] = +static const union AnimCmd gSpriteAnim_839AB34[] = { ANIMCMD_FRAME(0, 16), ANIMCMD_END, }; -const union AnimCmd gSpriteAnim_839AB3C[] = +static const union AnimCmd gSpriteAnim_839AB3C[] = { ANIMCMD_FRAME(32, 16), ANIMCMD_END, }; -const union AnimCmd gSpriteAnim_839AB44[] = +static const union AnimCmd gSpriteAnim_839AB44[] = { ANIMCMD_FRAME(64, 16), ANIMCMD_END, }; -const union AnimCmd gSpriteAnim_839AB4C[] = +static const union AnimCmd gSpriteAnim_839AB4C[] = { ANIMCMD_FRAME(96, 16), ANIMCMD_END, }; -const union AnimCmd gSpriteAnim_839AB54[] = +static const union AnimCmd gSpriteAnim_839AB54[] = { ANIMCMD_FRAME(128, 16), ANIMCMD_END, }; -const union AnimCmd gSpriteAnim_839AB5C[] = +static const union AnimCmd gSpriteAnim_839AB5C[] = { ANIMCMD_FRAME(160, 16), ANIMCMD_END, }; -const union AnimCmd *const gSpriteAnimTable_839AB64[] = +static const union AnimCmd *const gSpriteAnimTable_839AB64[] = { gSpriteAnim_839AB34, gSpriteAnim_839AB3C, @@ -768,19 +763,19 @@ const union AnimCmd *const gSpriteAnimTable_839AB64[] = gSpriteAnim_839AB5C, }; -const union AffineAnimCmd gSpriteAffineAnim_839AB7C[] = +static const union AffineAnimCmd gSpriteAffineAnim_839AB7C[] = { AFFINEANIMCMD_FRAME(0x200, 0x200, 0, 0), AFFINEANIMCMD_END, }; -const union AffineAnimCmd *const gSpriteAffineAnimTable_839AB8C[] = +static const union AffineAnimCmd *const gSpriteAffineAnimTable_839AB8C[] = { gSpriteAffineAnim_839AB7C, }; -void sub_807F688(struct Sprite *); -const struct SpriteTemplate gSpriteTemplate_839AB90 = +static void Fog2SpriteCallback(struct Sprite *); +static const struct SpriteTemplate sFog2SpriteTemplate = { .tileTag = 4609, .paletteTag = 4608, @@ -788,145 +783,10 @@ const struct SpriteTemplate gSpriteTemplate_839AB90 = .anims = gSpriteAnimTable_839AB64, .images = NULL, .affineAnims = gSpriteAffineAnimTable_839AB8C, - .callback = sub_807F688, -}; - -const struct SpriteSheet gWeatherFog1SpriteSheet = {gWeatherFog1Tiles, sizeof(gWeatherFog1Tiles), 0x1201}; -const struct SpriteSheet gWeatherAshSpriteSheet = {WeatherAshTiles, sizeof(WeatherAshTiles), 0x1202}; - -const struct OamData gOamData_839ABB8 = -{ - .y = 0, - .affineMode = 0, - .objMode = 1, - .mosaic = 0, - .bpp = 0, - .shape = 0, - .x = 0, - .matrixNum = 0, - .size = 3, - .tileNum = 0, - .priority = 1, - .paletteNum = 15, - .affineParam = 0, -}; - -const union AnimCmd gSpriteAnim_839ABC0[] = -{ - ANIMCMD_FRAME(0, 60), - ANIMCMD_FRAME(64, 60), - ANIMCMD_JUMP(0), -}; - -const union AnimCmd *const gSpriteAnimTable_839ABCC[] = -{ - gSpriteAnim_839ABC0, -}; - -void sub_807FAA8(struct Sprite *); -const struct SpriteTemplate gSpriteTemplate_839ABD0 = -{ - .tileTag = 4610, - .paletteTag = 4608, - .oam = &gOamData_839ABB8, - .anims = gSpriteAnimTable_839ABCC, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_807FAA8, -}; - -const struct SpriteSheet gWeatherFog0SpriteSheet = {WeatherFog0Tiles, sizeof(WeatherFog0Tiles), 0x1203}; - -const struct OamData gOamData_839ABF0 = -{ - .y = 0, - .affineMode = 0, - .objMode = 1, - .mosaic = 0, - .bpp = 0, - .shape = 0, - .x = 0, - .matrixNum = 0, - .size = 3, - .tileNum = 0, - .priority = 2, - .paletteNum = 0, - .affineParam = 0, -}; - -const union AnimCmd gSpriteAnim_839ABF8[] = -{ - ANIMCMD_FRAME(0, 16), - ANIMCMD_END, -}; - -const union AnimCmd *const gSpriteAnimTable_839AC00[] = -{ - gSpriteAnim_839ABF8, -}; - -void sub_807FE3C(struct Sprite *); -const struct SpriteTemplate gSpriteTemplate_839AC04 = -{ - .tileTag = 4611, - .paletteTag = 4608, - .oam = &gOamData_839ABF0, - .anims = gSpriteAnimTable_839AC00, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_807FE3C, -}; - -const struct OamData gOamData_839AC1C = -{ - .y = 0, - .affineMode = 0, - .objMode = 1, - .mosaic = 0, - .bpp = 0, - .shape = 0, - .x = 0, - .matrixNum = 0, - .size = 3, - .tileNum = 0, - .priority = 1, - .paletteNum = 0, - .affineParam = 0, -}; - -const union AnimCmd gSpriteAnim_839AC24[] = -{ - ANIMCMD_FRAME(0, 3), - ANIMCMD_END, -}; - -const union AnimCmd gSpriteAnim_839AC2C[] = -{ - ANIMCMD_FRAME(64, 3), - ANIMCMD_END, -}; - -const union AnimCmd *const gSpriteAnimTable_839AC34[] = -{ - gSpriteAnim_839AC24, - gSpriteAnim_839AC2C, -}; - -void sub_8080338(struct Sprite *); -const struct SpriteTemplate gSpriteTemplate_839AC3C = -{ - .tileTag = 4612, - .paletteTag = 4609, - .oam = &gOamData_839AC1C, - .anims = gSpriteAnimTable_839AC34, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8080338, + .callback = Fog2SpriteCallback, }; -const struct SpriteSheet gWeatherSandstormSpriteSheet = {WeatherSandstormTiles, sizeof(WeatherSandstormTiles), 0x1204}; - -bool8 sub_807E7B4(void) +bool8 CreateRainSprites(void) { u8 r7; u8 spriteId; @@ -935,7 +795,7 @@ bool8 sub_807E7B4(void) return FALSE; r7 = gWeatherPtr->unknown_6DA; - spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839AAA4, + spriteId = CreateSpriteAtEnd(&sRainSpriteTemplate, gUnknown_0839AA08[r7].x, gUnknown_0839AA08[r7].y, 78); if (spriteId != 64) { @@ -946,11 +806,11 @@ bool8 sub_807E7B4(void) sub_807E4EC(&gSprites[spriteId]); sub_807E6F0(&gSprites[spriteId], r7 * 9); gSprites[spriteId].invisible = TRUE; - gWeatherPtr->unknown_0[r7] = &gSprites[spriteId]; + gWeatherPtr->rainSprites[r7] = &gSprites[spriteId]; } else { - gWeatherPtr->unknown_0[r7] = NULL; + gWeatherPtr->rainSprites[r7] = NULL; } if (++gWeatherPtr->unknown_6DA == 24) @@ -959,12 +819,12 @@ bool8 sub_807E7B4(void) for (i = 0; i < 24; i++) { - if (gWeatherPtr->unknown_0[i] != NULL) + if (gWeatherPtr->rainSprites[i] != NULL) { - if (gWeatherPtr->unknown_0[i]->data[6] == 0) - gWeatherPtr->unknown_0[i]->callback = sub_807E5C0; + if (gWeatherPtr->rainSprites[i]->data[6] == 0) + gWeatherPtr->rainSprites[i]->callback = sub_807E5C0; else - gWeatherPtr->unknown_0[i]->callback = sub_807E6C4; + gWeatherPtr->rainSprites[i]->callback = sub_807E6C4; } } return FALSE; @@ -982,13 +842,13 @@ bool8 sub_807E8E8(void) gWeatherPtr->unknown_6D6 = 0; if (gWeatherPtr->unknown_6D8 < gWeatherPtr->unknown_6D9) { - gWeatherPtr->unknown_0[gWeatherPtr->unknown_6D8++]->data[5] = 1; + gWeatherPtr->rainSprites[gWeatherPtr->unknown_6D8++]->data[5] = 1; } else { gWeatherPtr->unknown_6D8--; - gWeatherPtr->unknown_0[gWeatherPtr->unknown_6D8]->data[5] = 0; - gWeatherPtr->unknown_0[gWeatherPtr->unknown_6D8]->invisible = TRUE; + gWeatherPtr->rainSprites[gWeatherPtr->unknown_6D8]->data[5] = 0; + gWeatherPtr->rainSprites[gWeatherPtr->unknown_6D8]->invisible = TRUE; } } return TRUE; @@ -1000,8 +860,8 @@ void sub_807E974(void) for (i = 0; i < gWeatherPtr->unknown_6DA; i++) { - if (gWeatherPtr->unknown_0[i] != NULL) - DestroySprite(gWeatherPtr->unknown_0[i]); + if (gWeatherPtr->rainSprites[i] != NULL) + DestroySprite(gWeatherPtr->rainSprites[i]); } gWeatherPtr->unknown_6DA = 0; FreeSpriteTilesByTag(0x1206); @@ -1013,26 +873,26 @@ void sub_807E974(void) void Snow_InitVars(void) { - gWeatherPtr->unknown_6CC = 0; - gWeatherPtr->unknown_6D2 = 0; + gWeatherPtr->initStep = 0; + gWeatherPtr->weatherGfxLoaded = FALSE; gWeatherPtr->unknown_6C1 = 3; gWeatherPtr->unknown_6C2 = 20; gWeatherPtr->unknown_6E5 = 16; gWeatherPtr->unknown_6E0 = 0; } -void snowflakes_progress2(void); +void Snow_Main(void); void sub_807ED48(struct Sprite *); -void sub_807EA18(void) +void Snow_InitAll(void) { Snow_InitVars(); - while (gWeatherPtr->unknown_6D2 == 0) + while (gWeatherPtr->weatherGfxLoaded == FALSE) { u16 i; - snowflakes_progress2(); - for (i = 0; i < gWeatherPtr->unknown_6E4; i++) + Snow_Main(); + for (i = 0; i < gWeatherPtr->snowflakeSpriteCount; i++) { sub_807ED48(gWeatherPtr->snowflakeSprites[i]); } @@ -1041,16 +901,16 @@ void sub_807EA18(void) u8 snowflakes_progress(void); -void snowflakes_progress2(void) +void Snow_Main(void) { - if (gWeatherPtr->unknown_6CC == 0 && snowflakes_progress() == FALSE) + if (gWeatherPtr->initStep == 0 && snowflakes_progress() == FALSE) { - gWeatherPtr->unknown_6D2 = 1; - gWeatherPtr->unknown_6CC++; + gWeatherPtr->weatherGfxLoaded = TRUE; + gWeatherPtr->initStep++; } } -bool8 sub_807EAC0(void) +bool8 Snow_Finish(void) { switch (gWeatherPtr->unknown_6CE) { @@ -1070,46 +930,46 @@ bool8 sub_807EAC0(void) return FALSE; } -bool8 snowflake_add(void); -bool8 snowflake_remove(void); +bool8 CreateSnowflakeSprite(void); +bool8 RemoveSnowflakeSprite(void); bool8 snowflakes_progress(void) { - if (gWeatherPtr->unknown_6E4 == gWeatherPtr->unknown_6E5) + if (gWeatherPtr->snowflakeSpriteCount == gWeatherPtr->unknown_6E5) return FALSE; gWeatherPtr->unknown_6E0++; if (gWeatherPtr->unknown_6E0 > 36) { gWeatherPtr->unknown_6E0 = 0; - if (gWeatherPtr->unknown_6E4 < gWeatherPtr->unknown_6E5) - snowflake_add(); + if (gWeatherPtr->snowflakeSpriteCount < gWeatherPtr->unknown_6E5) + CreateSnowflakeSprite(); else - snowflake_remove(); + RemoveSnowflakeSprite(); } - return (gWeatherPtr->unknown_6E4 != gWeatherPtr->unknown_6E5); + return (gWeatherPtr->snowflakeSpriteCount != gWeatherPtr->unknown_6E5); } void sub_807EC40(struct Sprite *); -bool8 snowflake_add(void) +bool8 CreateSnowflakeSprite(void) { - u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839AB04, 0, 0, 78); + u8 spriteId = CreateSpriteAtEnd(&sSnowflakeSpriteTemplate, 0, 0, 78); if (spriteId == 64) return FALSE; - gSprites[spriteId].data[4] = gWeatherPtr->unknown_6E4; + gSprites[spriteId].data[4] = gWeatherPtr->snowflakeSpriteCount; sub_807EC40(&gSprites[spriteId]); gSprites[spriteId].coordOffsetEnabled = TRUE; - gWeatherPtr->snowflakeSprites[gWeatherPtr->unknown_6E4++] = &gSprites[spriteId]; + gWeatherPtr->snowflakeSprites[gWeatherPtr->snowflakeSpriteCount++] = &gSprites[spriteId]; return TRUE; } -bool8 snowflake_remove(void) +bool8 RemoveSnowflakeSprite(void) { - if (gWeatherPtr->unknown_6E4 != 0) + if (gWeatherPtr->snowflakeSpriteCount != 0) { - DestroySprite(gWeatherPtr->snowflakeSprites[--gWeatherPtr->unknown_6E4]); + DestroySprite(gWeatherPtr->snowflakeSprites[--gWeatherPtr->snowflakeSpriteCount]); return TRUE; } return FALSE; @@ -1196,108 +1056,108 @@ void sub_807ED48(struct Sprite *sprite) // Medium Rain //------------------------------------------------------------------------------ -void sub_807EE80(void) +void MedRain_InitVars(void) { - gWeatherPtr->unknown_6CC = 0; - gWeatherPtr->unknown_6D2 = 0; + gWeatherPtr->initStep = 0; + gWeatherPtr->weatherGfxLoaded = FALSE; gWeatherPtr->unknown_6D6 = 0; gWeatherPtr->unknown_6DB = 4; gWeatherPtr->unknown_6DC = 0; gWeatherPtr->unknown_6D9 = 16; gWeatherPtr->unknown_6C1 = 3; gWeatherPtr->unknown_6C2 = 20; - gWeatherPtr->unknown_6D2 = 0; // duplicate assignment + gWeatherPtr->weatherGfxLoaded = FALSE; // duplicate assignment gWeatherPtr->unknown_6ED = 0; SetRainStrengthFromSoundEffect(SE_T_AME); } -void sub_807EFC0(void); +void Rain_Main(void); -void sub_807EEF4(void) +void MedRain_InitAll(void) { - sub_807EE80(); - while (gWeatherPtr->unknown_6D2 == 0) - sub_807EFC0(); + MedRain_InitVars(); + while (gWeatherPtr->weatherGfxLoaded == FALSE) + Rain_Main(); } //------------------------------------------------------------------------------ // Heavy Rain //------------------------------------------------------------------------------ -void sub_807EF24(void) +void HeavyRain_InitVars(void) { - gWeatherPtr->unknown_6CC = 0; - gWeatherPtr->unknown_6D2 = 0; + gWeatherPtr->initStep = 0; + gWeatherPtr->weatherGfxLoaded = FALSE; gWeatherPtr->unknown_6D6 = 0; gWeatherPtr->unknown_6DB = 4; gWeatherPtr->unknown_6DC = 1; gWeatherPtr->unknown_6D9 = 24; gWeatherPtr->unknown_6C1 = 3; gWeatherPtr->unknown_6C2 = 20; - gWeatherPtr->unknown_6D2 = 0; // duplicate assignment + gWeatherPtr->weatherGfxLoaded = FALSE; // duplicate assignment SetRainStrengthFromSoundEffect(SE_T_OOAME); } -void sub_807EF90(void) +void HeavyRain_InitAll(void) { - sub_807EF24(); - while (gWeatherPtr->unknown_6D2 == 0) - sub_807EFC0(); + HeavyRain_InitVars(); + while (gWeatherPtr->weatherGfxLoaded == FALSE) + Rain_Main(); } -void sub_807F434(void); -void sub_807F3F8(u16); +void UpdateThunderSound(void); +void SetThunderCounter(u16); -void sub_807EFC0(void) +void Rain_Main(void) { - sub_807F434(); - switch (gWeatherPtr->unknown_6CC) + UpdateThunderSound(); + switch (gWeatherPtr->initStep) { case 0: - sub_807E7A4(); - gWeatherPtr->unknown_6CC++; + LoadRainSpriteSheet(); + gWeatherPtr->initStep++; break; case 1: - if (sub_807E7B4()) + if (CreateRainSprites()) break; - gWeatherPtr->unknown_6CC++; + gWeatherPtr->initStep++; break; case 2: if (sub_807E8E8()) break; - gWeatherPtr->unknown_6D2 = 1; - gWeatherPtr->unknown_6CC++; + gWeatherPtr->weatherGfxLoaded = TRUE; + gWeatherPtr->initStep++; break; case 3: if (gWeatherPtr->unknown_6C6 == 0) break; - gWeatherPtr->unknown_6CC = 6; + gWeatherPtr->initStep = 6; break; case 4: gWeatherPtr->unknown_6EA = 1; gWeatherPtr->unknown_6E6 = (Random() % 360) + 360; - gWeatherPtr->unknown_6CC++; + gWeatherPtr->initStep++; // fall through case 5: if (--gWeatherPtr->unknown_6E6 != 0) break; - gWeatherPtr->unknown_6CC++; + gWeatherPtr->initStep++; break; case 6: gWeatherPtr->unknown_6EA = 1; gWeatherPtr->unknown_6EB = Random() % 2; - gWeatherPtr->unknown_6CC++; + gWeatherPtr->initStep++; break; case 7: gWeatherPtr->unknown_6EC = (Random() & 1) + 1; - gWeatherPtr->unknown_6CC++; + gWeatherPtr->initStep++; // fall through case 8: sub_807D5BC(19); if (gWeatherPtr->unknown_6EB == 0 && gWeatherPtr->unknown_6EC == 1) - sub_807F3F8(20); + SetThunderCounter(20); gWeatherPtr->unknown_6E6 = (Random() % 3) + 6; - gWeatherPtr->unknown_6CC++; + gWeatherPtr->initStep++; break; case 9: if (--gWeatherPtr->unknown_6E6 != 0) @@ -1307,51 +1167,51 @@ void sub_807EFC0(void) if (--gWeatherPtr->unknown_6EC != 0) { gWeatherPtr->unknown_6E6 = (Random() % 16) + 60; - gWeatherPtr->unknown_6CC = 10; + gWeatherPtr->initStep = 10; } else if (gWeatherPtr->unknown_6EB == 0) { - gWeatherPtr->unknown_6CC = 4; + gWeatherPtr->initStep = 4; } else { - gWeatherPtr->unknown_6CC = 11; + gWeatherPtr->initStep = 11; } break; case 10: if (--gWeatherPtr->unknown_6E6 != 0) break; - gWeatherPtr->unknown_6CC = 8; + gWeatherPtr->initStep = 8; break; case 11: gWeatherPtr->unknown_6E6 = (Random() % 16) + 60; - gWeatherPtr->unknown_6CC++; + gWeatherPtr->initStep++; break; case 12: if (--gWeatherPtr->unknown_6E6 != 0) break; - sub_807F3F8(100); + SetThunderCounter(100); sub_807D5BC(19); // Why use "% 16" everywhere else and "& 0xF" here. So dumb. gWeatherPtr->unknown_6E6 = (Random() & 0xF) + 30; - gWeatherPtr->unknown_6CC++; + gWeatherPtr->initStep++; break; case 13: if (--gWeatherPtr->unknown_6E6 != 0) break; sub_807D5F0(19, 3, 5); - gWeatherPtr->unknown_6CC++; + gWeatherPtr->initStep++; break; case 14: if (gWeatherPtr->unknown_6C6 != 3) break; gWeatherPtr->unknown_6EA = 1; - gWeatherPtr->unknown_6CC = 4; + gWeatherPtr->initStep = 4; break; } } -bool8 sub_807F34C(void) +bool8 Rain_Finish(void) { switch (gWeatherPtr->unknown_6CE) { @@ -1360,12 +1220,12 @@ bool8 sub_807F34C(void) gWeatherPtr->unknown_6CE++; // fall through case 1: - sub_807EFC0(); + Rain_Main(); if (gWeatherPtr->unknown_6EA != 0) { - if (gWeatherPtr->unknown_6D1 == 3 - || gWeatherPtr->unknown_6D1 == 5 - || gWeatherPtr->unknown_6D1 == 13) + if (gWeatherPtr->nextWeather == WEATHER_RAIN_LIGHT + || gWeatherPtr->nextWeather == WEATHER_RAIN_MED + || gWeatherPtr->nextWeather == WEATHER_RAIN_HEAVY) return FALSE; gWeatherPtr->unknown_6D9 = 0; gWeatherPtr->unknown_6CE++; @@ -1384,20 +1244,20 @@ bool8 sub_807F34C(void) return TRUE; } -void sub_807F3F8(u16 a) +void SetThunderCounter(u16 max) { if (gWeatherPtr->unknown_6ED == 0) { - gWeatherPtr->unknown_6E8 = Random() % a; + gWeatherPtr->thunderCounter = Random() % max; gWeatherPtr->unknown_6ED = 1; } } -void sub_807F434(void) +void UpdateThunderSound(void) { if (gWeatherPtr->unknown_6ED == 1) { - if (gWeatherPtr->unknown_6E8 == 0) + if (gWeatherPtr->thunderCounter == 0) { if (IsSEPlaying()) return; @@ -1409,70 +1269,72 @@ void sub_807F434(void) } else { - gWeatherPtr->unknown_6E8--; + gWeatherPtr->thunderCounter--; } } } -void sub_807F49C(void) +//------------------------------------------------------------------------------ +// Fog 2 +//------------------------------------------------------------------------------ + +void Fog2_Main(void); +static void CreateFog2Sprites(void); +static void DestroyFog2Sprites(void); + +void Fog2_InitVars(void) { - gWeatherPtr->unknown_6CC = 0; - gWeatherPtr->unknown_6D2 = 0; + gWeatherPtr->initStep = 0; + gWeatherPtr->weatherGfxLoaded = FALSE; gWeatherPtr->unknown_6C1 = 0; gWeatherPtr->unknown_6C2 = 20; if (gWeatherPtr->unknown_6FB == 0) { gWeatherPtr->unknown_6F0 = 0; gWeatherPtr->unknown_6F2 = 0; - gWeatherPtr->unknown_6EE = 0; - sub_807DB64(0, 16); + gWeatherPtr->fog2ScrollPosX = 0; + Weather_SetBlendCoeffs(0, 16); } } -void sub_807F52C(void); - -void sub_807F4FC(void) +void Fog2_InitAll(void) { - sub_807F49C(); - while (gWeatherPtr->unknown_6D2 == 0) - sub_807F52C(); + Fog2_InitVars(); + while (gWeatherPtr->weatherGfxLoaded == FALSE) + Fog2_Main(); } -void sub_807F6E8(void); - -void sub_807F52C(void) +void Fog2_Main(void) { - gWeatherPtr->unknown_6EE = (gSpriteCoordOffsetX - gWeatherPtr->unknown_6F2) & 0xFF; + gWeatherPtr->fog2ScrollPosX = (gSpriteCoordOffsetX - gWeatherPtr->unknown_6F2) & 0xFF; if (++gWeatherPtr->unknown_6F0 > 3) { gWeatherPtr->unknown_6F0 = 0; gWeatherPtr->unknown_6F2++; } - switch (gWeatherPtr->unknown_6CC) + switch (gWeatherPtr->initStep) { case 0: - sub_807F6E8(); - if (gWeatherPtr->currWeather == 6) - sub_807DBA4(12, 8, 3); + CreateFog2Sprites(); + if (gWeatherPtr->currWeather == WEATHER_FOG_2) + Weather_SetTargetBlendCoeffs(12, 8, 3); else - sub_807DBA4(4, 16, 0); - gWeatherPtr->unknown_6CC++; + Weather_SetTargetBlendCoeffs(4, 16, 0); + gWeatherPtr->initStep++; break; case 1: - if (sub_807DBE8()) + if (Weather_UpdateBlend()) { - gWeatherPtr->unknown_6D2 = 1; - gWeatherPtr->unknown_6CC++; + gWeatherPtr->weatherGfxLoaded = TRUE; + gWeatherPtr->initStep++; } break; } } -void sub_807F7A4(void); - -bool8 sub_807F5EC(void) +bool8 Fog2_Finish(void) { - gWeatherPtr->unknown_6EE = (gSpriteCoordOffsetX - gWeatherPtr->unknown_6F2) & 0xFF; + gWeatherPtr->fog2ScrollPosX = (gSpriteCoordOffsetX - gWeatherPtr->unknown_6F2) & 0xFF; if (++gWeatherPtr->unknown_6F0 > 3) { gWeatherPtr->unknown_6F0 = 0; @@ -1481,16 +1343,16 @@ bool8 sub_807F5EC(void) switch (gWeatherPtr->unknown_6CE) { case 0: - sub_807DBA4(0, 16, 3); + Weather_SetTargetBlendCoeffs(0, 16, 3); gWeatherPtr->unknown_6CE++; break; case 1: - if (!sub_807DBE8()) + if (!Weather_UpdateBlend()) break; gWeatherPtr->unknown_6CE++; break; case 2: - sub_807F7A4(); + DestroyFog2Sprites(); gWeatherPtr->unknown_6CE++; break; default: @@ -1499,13 +1361,289 @@ bool8 sub_807F5EC(void) return TRUE; } -void sub_807F688(struct Sprite *sprite) +#define sprColumn data[0] + +static void Fog2SpriteCallback(struct Sprite *sprite) { sprite->pos2.y = (u8)gSpriteCoordOffsetY; - sprite->pos1.x = gWeatherPtr->unknown_6EE + 32 + sprite->data[0] * 64; + sprite->pos1.x = gWeatherPtr->fog2ScrollPosX + 32 + sprite->sprColumn * 64; if (sprite->pos1.x > 0x10F) { - sprite->pos1.x = 480 + gWeatherPtr->unknown_6EE - (4 - sprite->data[0]) * 64; + sprite->pos1.x = 480 + gWeatherPtr->fog2ScrollPosX - (4 - sprite->sprColumn) * 64; sprite->pos1.x &= 0x1FF; } } + +static void CreateFog2Sprites(void) +{ + u16 i; + + if (gWeatherPtr->unknown_6FB == 0) + { + struct SpriteSheet fog2SpriteSheet = {gWeatherFog2Tiles, sizeof(gWeatherFog2Tiles), 0x1201}; + + LoadSpriteSheet(&fog2SpriteSheet); + for (i = 0; i < 20; i++) + { + u8 spriteId = CreateSpriteAtEnd(&sFog2SpriteTemplate, 0, 0, 0xFF); + + if (spriteId != MAX_SPRITES) + { + struct Sprite *sprite = &gSprites[spriteId]; + + sprite->sprColumn = i % 5; + sprite->pos1.x = (i % 5) * 64 + 32; + sprite->pos1.y = (i / 5) * 64 + 32; + ((struct Weather2 *)gWeatherPtr)->fogSprites[i] = sprite; + } + else + { + ((struct Weather2 *)gWeatherPtr)->fogSprites[i] = NULL; + } + } + gWeatherPtr->unknown_6FB = 1; + } +} + +#undef sprColumn + +static void DestroyFog2Sprites(void) +{ + u16 i; + + if (gWeatherPtr->unknown_6FB != 0) + { + for (i = 0; i < 20; i++) + { + if (((struct Weather2 *)gWeatherPtr)->fogSprites[i] != NULL) + DestroySprite(((struct Weather2 *)gWeatherPtr)->fogSprites[i]); + } + FreeSpriteTilesByTag(0x1201); + gWeatherPtr->unknown_6FB = 0; + } +} + +//------------------------------------------------------------------------------ +// Fog 1 +//------------------------------------------------------------------------------ + +void Fog1_InitVars(void) +{ + gWeatherPtr->initStep = 0; + gWeatherPtr->weatherGfxLoaded = FALSE; + gWeatherPtr->unknown_6C1 = 0; + gWeatherPtr->unknown_6C2 = 20; + gWeatherPtr->unknown_6FE = 20; + if (gWeatherPtr->unknown_700 == 0) + { + Weather_SetBlendCoeffs(0, 16); + REG_BLDALPHA = BLDALPHA_BLEND(64, 63); // Those aren't even valid coefficients! + } +} + +void sub_807F888(void); + +void sub_807F858(void) +{ + Fog1_InitVars(); + while (gWeatherPtr->weatherGfxLoaded == FALSE) + sub_807F888(); +} + +void sub_807F99C(void); +void sub_807F9AC(void); + +void sub_807F888(void) +{ + gWeatherPtr->unknown_6FC = gSpriteCoordOffsetX & 0x1FF; + while (gWeatherPtr->unknown_6FC > 0xEF) + gWeatherPtr->unknown_6FC -= 0xF0; + switch (gWeatherPtr->initStep) + { + case 0: + sub_807F99C(); + gWeatherPtr->initStep++; + break; + case 1: + if (gWeatherPtr->unknown_700 == 0) + sub_807F9AC(); + Weather_SetTargetBlendCoeffs(16, 0, 1); + gWeatherPtr->initStep++; + break; + case 2: + if (!Weather_UpdateBlend()) + break; + gWeatherPtr->weatherGfxLoaded = TRUE; + gWeatherPtr->initStep++; + break; + default: + Weather_UpdateBlend(); + break; + } +} + +void sub_807FA54(void); + +bool8 sub_807F934(void) +{ + switch (gWeatherPtr->unknown_6CE) + { + case 0: + Weather_SetTargetBlendCoeffs(0, 16, 1); + gWeatherPtr->unknown_6CE++; + break; + case 1: + if (!Weather_UpdateBlend()) + break; + sub_807FA54(); + gWeatherPtr->unknown_6CE++; + break; + case 2: + REG_BLDALPHA = 0; + gWeatherPtr->unknown_6CE++; + return FALSE; + default: + return FALSE; + } + return TRUE; +} + +const struct SpriteSheet gWeatherAshSpriteSheet = {gWeatherAshTiles, sizeof(gWeatherAshTiles), 0x1202}; + +void sub_807F99C(void) +{ + LoadSpriteSheet(&gWeatherAshSpriteSheet); +} + +const struct OamData gOamData_839ABB8 = +{ + .y = 0, + .affineMode = 0, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 1, + .paletteNum = 15, + .affineParam = 0, +}; + +const union AnimCmd gSpriteAnim_839ABC0[] = +{ + ANIMCMD_FRAME(0, 60), + ANIMCMD_FRAME(64, 60), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd *const gSpriteAnimTable_839ABCC[] = +{ + gSpriteAnim_839ABC0, +}; + +void sub_807FAA8(struct Sprite *); +const struct SpriteTemplate gSpriteTemplate_839ABD0 = +{ + .tileTag = 4610, + .paletteTag = 4608, + .oam = &gOamData_839ABB8, + .anims = gSpriteAnimTable_839ABCC, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_807FAA8, +}; + +const struct SpriteSheet gWeatherFog1SpriteSheet = {gWeatherFog1Tiles, sizeof(gWeatherFog1Tiles), 0x1203}; + +const struct OamData gOamData_839ABF0 = +{ + .y = 0, + .affineMode = 0, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const union AnimCmd gSpriteAnim_839ABF8[] = +{ + ANIMCMD_FRAME(0, 16), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_839AC00[] = +{ + gSpriteAnim_839ABF8, +}; + +void sub_807FE3C(struct Sprite *); +const struct SpriteTemplate gSpriteTemplate_839AC04 = +{ + .tileTag = 4611, + .paletteTag = 4608, + .oam = &gOamData_839ABF0, + .anims = gSpriteAnimTable_839AC00, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_807FE3C, +}; + +const struct OamData gOamData_839AC1C = +{ + .y = 0, + .affineMode = 0, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +const union AnimCmd gSpriteAnim_839AC24[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_839AC2C[] = +{ + ANIMCMD_FRAME(64, 3), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_839AC34[] = +{ + gSpriteAnim_839AC24, + gSpriteAnim_839AC2C, +}; + +void sub_8080338(struct Sprite *); +const struct SpriteTemplate gSpriteTemplate_839AC3C = +{ + .tileTag = 4612, + .paletteTag = 4609, + .oam = &gOamData_839AC1C, + .anims = gSpriteAnimTable_839AC34, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8080338, +}; + +const struct SpriteSheet gWeatherSandstormSpriteSheet = {gWeatherSandstormTiles, sizeof(gWeatherSandstormTiles), 0x1204}; + diff --git a/src/field/overworld.c b/src/field/overworld.c index 59aac5c33..387745f94 100644 --- a/src/field/overworld.c +++ b/src/field/overworld.c @@ -1737,7 +1737,7 @@ void sub_8054D4C(u32 a1) sub_805C7C4(0); FieldEffectActiveListClear(); InitFieldMessageBox(); - sub_807C828(); + StartWeather(); sub_8080750(); if (!a1) SetUpFieldTasks(); -- cgit v1.2.3 From a8c22a9f1de634d75d8ddc117bcd2fda59aac522 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sat, 25 Nov 2017 23:33:16 -0600 Subject: finish decompiling field_weather_2 --- src/field/field_weather.c | 32 +- src/field/field_weather_2.c | 712 +++++++++++++++++++++++++++++++++++++++++++- src/field/overworld.c | 4 +- src/field/scrcmd.c | 2 +- 4 files changed, 730 insertions(+), 20 deletions(-) (limited to 'src/field') diff --git a/src/field/field_weather.c b/src/field/field_weather.c index edb186b95..0cd54d9a4 100644 --- a/src/field/field_weather.c +++ b/src/field/field_weather.c @@ -31,7 +31,7 @@ struct WeatherCallbacks void (*initVars)(void); void (*main)(void); void (*initAll)(void); - u8 (*finish)(void); + bool8 (*finish)(void); }; extern struct Weather gWeather; @@ -67,63 +67,63 @@ struct Weather *const gWeatherPtr = &gWeather; void None_Init(void); void None_Main(void); -u8 None_Finish(void); +bool8 None_Finish(void); void Clouds_InitVars(void); void Clouds_Main(void); void Clouds_InitAll(void); -u8 Clouds_Finish(void); +bool8 Clouds_Finish(void); void sub_807DF9C(void); void nullsub_55(void); void sub_807DFC0(void); -u8 sub_807DFD0(void); +bool8 sub_807DFD0(void); void LightRain_InitVars(void); void LightRain_Main(void); void LightRain_InitAll(void); -u8 LightRain_Finish(void); +bool8 LightRain_Finish(void); void Snow_InitVars(void); void Snow_Main(void); void Snow_InitAll(void); -u8 Snow_Finish(void); +bool8 Snow_Finish(void); void MedRain_InitVars(void); void Rain_Main(void); void MedRain_InitAll(void); -u8 Rain_Finish(void); +bool8 Rain_Finish(void); void Fog2_InitVars(void); void Fog2_Main(void); void Fog2_InitAll(void); -u8 Fog2_Finish(void); +bool8 Fog2_Finish(void); void Fog1_InitVars(void); void sub_807F888(void); void sub_807F858(void); -u8 sub_807F934(void); +bool8 sub_807F934(void); void sub_807FE9C(void); void sub_807FF4C(void); void sub_807FF1C(void); -u8 sub_807FFC8(void); +bool8 sub_807FFC8(void); void sub_807FB24(void); void sub_807FBD8(void); void sub_807FBA8(void); -u8 sub_807FC3C(void); +bool8 sub_807FC3C(void); void Fog2_InitVars(void); void Fog2_Main(void); void Fog2_InitAll(void); -u8 Fog2_Finish(void); +bool8 Fog2_Finish(void); void sub_8080430(void); void nullsub_56(void); void sub_8080460(void); -u8 sub_8080470(void); +bool8 sub_8080470(void); void sub_807E110(void); void sub_807E174(void); void sub_807E144(void); -u8 sub_807E258(void); +bool8 sub_807E258(void); void HeavyRain_InitVars(void); void Rain_Main(void); void HeavyRain_InitAll(void); -u8 Rain_Finish(void); +bool8 Rain_Finish(void); void sub_8080474(void); void sub_80804F8(void); void sub_80804C8(void); -u8 sub_808056C(void); +bool8 sub_808056C(void); static const struct WeatherCallbacks sWeatherFuncs[] = { diff --git a/src/field/field_weather_2.c b/src/field/field_weather_2.c index d2ef34f6f..1ae2d6e56 100644 --- a/src/field/field_weather_2.c +++ b/src/field/field_weather_2.c @@ -1,6 +1,7 @@ #include "global.h" #include "field_map_obj.h" #include "field_weather.h" +#include "overworld.h" #include "rng.h" #include "script.h" #include "songs.h" @@ -1556,7 +1557,197 @@ const struct SpriteTemplate gSpriteTemplate_839ABD0 = .callback = sub_807FAA8, }; -const struct SpriteSheet gWeatherFog1SpriteSheet = {gWeatherFog1Tiles, sizeof(gWeatherFog1Tiles), 0x1203}; +void sub_807F9AC(void) +{ + u8 i; + + if (gWeatherPtr->unknown_700 == 0) + { + for (i = 0; i < 20; i++) + { + u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839ABD0, 0, 0, 0x4E); + + if (spriteId != MAX_SPRITES) + { + struct Sprite *sprite = &gSprites[spriteId]; + + sprite->data[1] = 0; + sprite->data[2] = (u8)(i % 5); + sprite->data[3] = (u8)(i / 5); + sprite->data[0] = sprite->data[3] * 64 + 32; + ((struct Weather2 *)gWeatherPtr)->fog1Sprites[i] = sprite; + } + else + { + ((struct Weather2 *)gWeatherPtr)->fog1Sprites[i] = NULL; + } + } + gWeatherPtr->unknown_700 = 1; + } +} + +void sub_807FA54(void) +{ + u16 i; + + if (gWeatherPtr->unknown_700 != 0) + { + for (i = 0; i < 20; i++) + { + if (((struct Weather2 *)gWeatherPtr)->fog1Sprites[i] != NULL) + DestroySprite(((struct Weather2 *)gWeatherPtr)->fog1Sprites[i]); + } + FreeSpriteTilesByTag(0x1202); + gWeatherPtr->unknown_700 = 0; + } +} + +void sub_807FAA8(struct Sprite *sprite) +{ + sprite->data[1]++; + if (sprite->data[1] > 5) + { + sprite->data[1] = 0; + sprite->data[0]++; + } + sprite->pos1.y = gSpriteCoordOffsetY + sprite->data[0]; + sprite->pos1.x = gWeatherPtr->unknown_6FC + 32 + sprite->data[2] * 64; + if (sprite->pos1.x > 271) + { + sprite->pos1.x = gWeatherPtr->unknown_6FC + 0x1E0 - (4 - sprite->data[2]) * 64; + sprite->pos1.x &= 0x1FF; + } +} + +void sub_807FB24(void) +{ + gWeatherPtr->initStep = 0; + gWeatherPtr->weatherGfxLoaded = 0; + gWeatherPtr->unknown_6C1 = 0; + gWeatherPtr->unknown_6C2 = 20; + gWeatherPtr->unknown_6F0 = 0; + gWeatherPtr->unknown_6F2 = 1; + if (gWeatherPtr->unknown_724 == 0) + { + gWeatherPtr->unknown_71C = 0; + gWeatherPtr->unknown_71E = 0; + gWeatherPtr->unknown_720 = 0; + gWeatherPtr->unknown_722 = 0; + gWeatherPtr->unknown_718 = 0; + gWeatherPtr->unknown_71A = 0; + Weather_SetBlendCoeffs(0, 16); + } +} + +void sub_807FBD8(void); + +void sub_807FBA8(void) +{ + sub_807FB24(); + while (gWeatherPtr->weatherGfxLoaded == FALSE) + sub_807FBD8(); +} + +void sub_807FC9C(void); +void sub_807FD30(void); + +void sub_807FBD8(void) +{ + sub_807FC9C(); + switch (gWeatherPtr->initStep) + { + case 0: + sub_807FD30(); + gWeatherPtr->initStep++; + break; + case 1: + Weather_SetTargetBlendCoeffs(12, 8, 8); + gWeatherPtr->initStep++; + break; + case 2: + if (!Weather_UpdateBlend()) + break; + gWeatherPtr->weatherGfxLoaded = TRUE; + gWeatherPtr->initStep++; + break; + } +} + +void sub_807FDE8(void); + +bool8 sub_807FC3C(void) +{ + sub_807FC9C(); + switch (gWeatherPtr->unknown_6CE) + { + case 0: + Weather_SetTargetBlendCoeffs(0, 16, 1); + gWeatherPtr->unknown_6CE++; + break; + case 1: + if (!Weather_UpdateBlend()) + break; + gWeatherPtr->unknown_6CE++; + break; + case 2: + sub_807FDE8(); + gWeatherPtr->unknown_6CE++; + break; + default: + return FALSE; + } + return TRUE; +} + +void sub_807FC9C(void) +{ + if (++gWeatherPtr->unknown_71C > 2) + { + gWeatherPtr->unknown_720++; + gWeatherPtr->unknown_71C = 0; + } + + if (++gWeatherPtr->unknown_71E > 4) + { + gWeatherPtr->unknown_722++; + gWeatherPtr->unknown_71E = 0; + } + + gWeatherPtr->unknown_718 = (gSpriteCoordOffsetX - gWeatherPtr->unknown_720) & 0xFF; + gWeatherPtr->unknown_71A = gSpriteCoordOffsetY + gWeatherPtr->unknown_722; +} + +extern const struct SpriteTemplate gSpriteTemplate_839AC04; // defined below + +void sub_807FD30(void) +{ + u16 i; + + if (gWeatherPtr->unknown_724 == 0) + { + struct SpriteSheet fog1SpriteSheet = {gWeatherFog1Tiles, sizeof(gWeatherFog1Tiles), 0x1203}; + + LoadSpriteSheet(&fog1SpriteSheet); + for (i = 0; i < 20; i++) + { + u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839AC04, 0, (i / 5) * 64, 0xFF); + + if (spriteId != MAX_SPRITES) + { + struct Sprite *sprite = &gSprites[spriteId]; + + sprite->data[0] = i % 5; + sprite->data[1] = i / 5; + ((struct Weather2 *)gWeatherPtr)->unknown_140[i] = sprite; + } + else + { + ((struct Weather2 *)gWeatherPtr)->unknown_140[i] = NULL; + } + } + gWeatherPtr->unknown_724 = 1; + } +} const struct OamData gOamData_839ABF0 = { @@ -1598,6 +1789,161 @@ const struct SpriteTemplate gSpriteTemplate_839AC04 = .callback = sub_807FE3C, }; +void sub_807FDE8(void) +{ + u16 i; + + if (gWeatherPtr->unknown_724 != 0) + { + for (i = 0; i < 20; i++) + { + if (((struct Weather2 *)gWeatherPtr)->unknown_140[i] != NULL) + DestroySprite(((struct Weather2 *)gWeatherPtr)->unknown_140[i]); + } + FreeSpriteTilesByTag(0x1203); + gWeatherPtr->unknown_724 = 0; + } +} + +void sub_807FE3C(struct Sprite *sprite) +{ + sprite->pos2.y = gWeatherPtr->unknown_71A; + sprite->pos1.x = gWeatherPtr->unknown_718 + 32 + sprite->data[0] * 64; + if (sprite->pos1.x > 271) + { + sprite->pos1.x = gWeatherPtr->unknown_718 + 0x1E0 - (4 - sprite->data[0]) * 64; + sprite->pos1.x &= 0x1FF; + } +} + +void sub_807FE9C(void) +{ + gWeatherPtr->initStep = 0; + gWeatherPtr->weatherGfxLoaded = 0; + gWeatherPtr->unknown_6C1 = 0; + gWeatherPtr->unknown_6C2 = 20; + if (gWeatherPtr->unknown_716 == 0) + { + gWeatherPtr->unknown_704 = gWeatherPtr->unknown_708 = 0; + gWeatherPtr->unknown_712 = 8; + gWeatherPtr->unknown_714 = 0; + // Dead code. How does the compiler not optimize this out? + if (gWeatherPtr->unknown_712 > 0x5F) + gWeatherPtr->unknown_712 = 0x80 - gWeatherPtr->unknown_712; + Weather_SetBlendCoeffs(0, 16); + } +} + +void sub_807FF4C(void); + +void sub_807FF1C(void) +{ + sub_807FE9C(); + while (gWeatherPtr->weatherGfxLoaded == FALSE) + sub_807FF4C(); +} + +void sub_808002C(void); +void sub_8080064(void); +void sub_8080178(void); +void sub_8080238(void); + +void sub_807FF4C(void) +{ + sub_8080064(); + sub_808002C(); + if (gWeatherPtr->unknown_712 > 0x5F) + gWeatherPtr->unknown_712 = 32; + switch (gWeatherPtr->initStep) + { + case 0: + sub_8080178(); + sub_8080238(); + gWeatherPtr->initStep++; + break; + case 1: + Weather_SetTargetBlendCoeffs(16, 0, 0); + gWeatherPtr->initStep++; + break; + case 2: + if (!Weather_UpdateBlend()) + break; + gWeatherPtr->weatherGfxLoaded = TRUE; + gWeatherPtr->initStep++; + break; + } +} + +void sub_80800E4(void); + +bool8 sub_807FFC8(void) +{ + sub_8080064(); + sub_808002C(); + switch (gWeatherPtr->unknown_6CE) + { + case 0: + Weather_SetTargetBlendCoeffs(0, 16, 0); + gWeatherPtr->unknown_6CE++; + break; + case 1: + if (!Weather_UpdateBlend()) + break; + gWeatherPtr->unknown_6CE++; + break; + case 2: + sub_80800E4(); + gWeatherPtr->unknown_6CE++; + break; + default: + return FALSE; + } + return TRUE; +} + +void sub_808002C(void) +{ + if (gWeatherPtr->unknown_714++ > 4) + { + gWeatherPtr->unknown_712++; + gWeatherPtr->unknown_714 = 0; + } +} + +void sub_8080064(void) +{ + gWeatherPtr->unknown_704 -= gSineTable[gWeatherPtr->unknown_712] * 4; + gWeatherPtr->unknown_708 -= gSineTable[gWeatherPtr->unknown_712]; + gWeatherPtr->unknown_70E = (gSpriteCoordOffsetX + (gWeatherPtr->unknown_704 >> 8)) & 0xFF; + gWeatherPtr->unknown_710 = gSpriteCoordOffsetY + (gWeatherPtr->unknown_708 >> 8); +} + +void sub_80800E4(void) +{ + u16 i; + + if (gWeatherPtr->unknown_716 != 0) + { + for (i = 0; i < 20; i++) + { + if (((struct Weather2 *)gWeatherPtr)->unknown_190[i] != NULL) + DestroySprite(((struct Weather2 *)gWeatherPtr)->unknown_190[i]); + } + gWeatherPtr->unknown_716 = 0; + FreeSpriteTilesByTag(0x1204); + } + + if (gWeatherPtr->unknown_717 != 0) + { + for (i = 0; i < 5; i++) + { + if (((struct Weather2 *)gWeatherPtr)->unknown_1E0[i] != NULL) + DestroySprite(((struct Weather2 *)gWeatherPtr)->unknown_1E0[i]); + } + gWeatherPtr->unknown_717 = 0; + } +} + const struct OamData gOamData_839AC1C = { .y = 0, @@ -1647,3 +1993,367 @@ const struct SpriteTemplate gSpriteTemplate_839AC3C = const struct SpriteSheet gWeatherSandstormSpriteSheet = {gWeatherSandstormTiles, sizeof(gWeatherSandstormTiles), 0x1204}; +void sub_8080178(void) +{ + u16 i; + + if (gWeatherPtr->unknown_716 == 0) + { + LoadSpriteSheet(&gWeatherSandstormSpriteSheet); + sub_807D8C0(gUnknown_08397128); + for (i = 0; i < 20; i++) + { + u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839AC3C, 0, (i / 5) * 64, 1); + + if (spriteId != MAX_SPRITES) + { + ((struct Weather2 *)gWeatherPtr)->unknown_190[i] = &gSprites[spriteId]; + ((struct Weather2 *)gWeatherPtr)->unknown_190[i]->data[0] = i % 5; + ((struct Weather2 *)gWeatherPtr)->unknown_190[i]->data[1] = i / 5; + } + else + { + ((struct Weather2 *)gWeatherPtr)->unknown_190[i] = NULL; + } + } + gWeatherPtr->unknown_716 = 1; + } +} + +const u16 gUnknown_0839AC5C[] = {0, 120, 80, 160, 40, 0}; + +void sub_8080398(struct Sprite *); + +void sub_8080238(void) +{ + u16 i; + + if (gWeatherPtr->unknown_717 == 0) + { + for (i = 0; i < 5; i++) + { + u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839AC3C, i * 48 + 0x18, 0xD0, 1); + + if (spriteId != MAX_SPRITES) + { + ((struct Weather2 *)gWeatherPtr)->unknown_1E0[i] = &gSprites[spriteId]; + ((struct Weather2 *)gWeatherPtr)->unknown_1E0[i]->oam.size = 2; + ((struct Weather2 *)gWeatherPtr)->unknown_1E0[i]->data[1] = i * 51; + ((struct Weather2 *)gWeatherPtr)->unknown_1E0[i]->data[0] = 8; + ((struct Weather2 *)gWeatherPtr)->unknown_1E0[i]->data[2] = 0; + ((struct Weather2 *)gWeatherPtr)->unknown_1E0[i]->data[4] = 0x6730; + ((struct Weather2 *)gWeatherPtr)->unknown_1E0[i]->data[3] = gUnknown_0839AC5C[i]; + StartSpriteAnim(((struct Weather2 *)gWeatherPtr)->unknown_1E0[i], 1); + CalcCenterToCornerVec(((struct Weather2 *)gWeatherPtr)->unknown_1E0[i], 0, 2, 0); + ((struct Weather2 *)gWeatherPtr)->unknown_1E0[i]->callback = sub_8080398; + } + else + { + ((struct Weather2 *)gWeatherPtr)->unknown_1E0[i] = NULL; + } + gWeatherPtr->unknown_717 = 1; + } + } +} + +void sub_8080338(struct Sprite *sprite) +{ + sprite->pos2.y = gWeatherPtr->unknown_710; + sprite->pos1.x = gWeatherPtr->unknown_70E + 32 + sprite->data[0] * 64; + if (sprite->pos1.x > 271) + { + sprite->pos1.x = gWeatherPtr->unknown_70E + 0x1E0 - (4 - sprite->data[0]) * 64; + sprite->pos1.x &= 0x1FF; + } +} + +void sub_80803BC(struct Sprite *); + +void sub_8080398(struct Sprite *sprite) +{ + if (--sprite->data[3] == -1) + sprite->callback = sub_80803BC; +} + +void sub_80803BC(struct Sprite *sprite) +{ + u32 x; + u32 y; + + if (--sprite->pos1.y < -48) + { + sprite->pos1.y = 208; + sprite->data[0] = 4; + } + x = sprite->data[0] * gSineTable[sprite->data[1]]; + y = sprite->data[0] * gSineTable[sprite->data[1] + 64]; + sprite->pos2.x = x >> 8; + sprite->pos2.y = y >> 8; + sprite->data[1] = (sprite->data[1] + 10) & 0xFF; + if (++sprite->data[2] > 8) + { + sprite->data[2] = 0; + sprite->data[0]++; + } +} + +void sub_8080430(void) +{ + gWeatherPtr->initStep = 0; + gWeatherPtr->unknown_6C1 = 3; + gWeatherPtr->unknown_6C2 = 20; +} + +void sub_8080460(void) +{ + sub_8080430(); +} + +void nullsub_56(void) +{ +} + +bool8 sub_8080470(void) +{ + return FALSE; +} + +const u8 gUnknown_0839AC68[] = {40, 90, 60, 90, 2, 60, 40, 30}; + +const struct SpriteSheet gWeatherBubbleSpriteSheet = {gWeatherBubbleTiles, sizeof(gWeatherBubbleTiles), 0x1205}; + +void sub_8080474(void) +{ + Fog2_InitVars(); + if (gWeatherPtr->unknown_72E == 0) + { + LoadSpriteSheet(&gWeatherBubbleSpriteSheet); + gWeatherPtr->unknown_728 = 0; + gWeatherPtr->unknown_726 = gUnknown_0839AC68[0]; + gWeatherPtr->unknown_72A = 0; + gWeatherPtr->unknown_72C = 0; + } +} + +void sub_80804F8(void); + +void sub_80804C8(void) +{ + sub_8080474(); + while (gWeatherPtr->weatherGfxLoaded == FALSE) + sub_80804F8(); +} + +void sub_8080588(u16); + +void sub_80804F8(void) +{ + Fog2_Main(); + if (++gWeatherPtr->unknown_726 > gUnknown_0839AC68[gWeatherPtr->unknown_728]) + { + gWeatherPtr->unknown_726 = 0; + if (++gWeatherPtr->unknown_728 > 7) + gWeatherPtr->unknown_728 = 0; + sub_8080588(gWeatherPtr->unknown_72A); + if (++gWeatherPtr->unknown_72A > 12) + gWeatherPtr->unknown_72A = 0; + } +} + +void sub_8080610(void); + +bool8 sub_808056C(void) +{ + if (!Fog2_Finish()) + { + sub_8080610(); + return FALSE; + } + return TRUE; +} + +const s16 gUnknown_0839AC78[][2] = +{ + {120, 160}, + {376, 160}, + { 40, 140}, + {296, 140}, + {180, 130}, + {436, 130}, + { 60, 160}, + {436, 160}, + {220, 180}, + {476, 180}, + { 10, 90}, + {266, 90}, + {256, 160}, +}; + +const union AnimCmd gSpriteAnim_839ACAC[] = +{ + ANIMCMD_FRAME(0, 16), + ANIMCMD_FRAME(1, 16), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_839ACB8[] = +{ + gSpriteAnim_839ACAC, +}; + +extern const struct OamData gOamData_837DF24; + +void unc_0807DAB4(struct Sprite *); +const struct SpriteTemplate gSpriteTemplate_839ACBC = +{ + .tileTag = 4613, + .paletteTag = 4608, + .oam = &gOamData_837DF24, + .anims = gSpriteAnimTable_839ACB8, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = unc_0807DAB4, +}; + +void sub_8080588(u16 a) +{ + s16 x = gUnknown_0839AC78[a][0]; + s16 y = gUnknown_0839AC78[a][1] - gSpriteCoordOffsetY; + u8 spriteId = CreateSpriteAtEnd( + &gSpriteTemplate_839ACBC, + x, + y, + 0); + + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].oam.priority = 1; + gSprites[spriteId].coordOffsetEnabled = TRUE; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].data[1] = 0; + gSprites[spriteId].data[2] = 0; + gWeatherPtr->unknown_72C++; + } +} + +void sub_8080610(void) +{ + u16 i; + + for (i = 0; i < 64; i++) + { + if (gSprites[i].template == &gSpriteTemplate_839ACBC) + DestroySprite(&gSprites[i]); + } + FreeSpriteTilesByTag(0x1205); +} + +void unc_0807DAB4(struct Sprite *sprite) +{ + ++sprite->data[0]; + if (++sprite->data[0] > 8) // double increment + { + sprite->data[0] = 0; + if (sprite->data[1] == 0) + { + if (++sprite->pos2.x > 4) + sprite->data[1] = 1; + } + else + { + if (--sprite->pos2.x <= 0) + sprite->data[1] = 0; + } + } + sprite->pos1.y -= 3; + if (++sprite->data[2] > 0x77) + DestroySprite(sprite); +} + +u8 TranslateWeatherNum(u8); +void UpdateRainCounter(u8, u8); + +void SetSav1Weather(u32 weather) +{ + u8 oldWeather = gSaveBlock1.weather; + + gSaveBlock1.weather = TranslateWeatherNum(weather); + UpdateRainCounter(gSaveBlock1.weather, oldWeather); +} + +u8 GetSav1Weather(void) +{ + return gSaveBlock1.weather; +} + +void SetSav1WeatherFromCurrMapHeader(void) +{ + u8 oldWeather = gSaveBlock1.weather; + + gSaveBlock1.weather = TranslateWeatherNum(gMapHeader.weather); + UpdateRainCounter(gSaveBlock1.weather, oldWeather); +} + +void SetWeather(u32 weather) +{ + SetSav1Weather(weather); + DoWeatherEffect(GetSav1Weather()); +} + +void SetWeather_Unused(u32 weather) +{ + SetSav1Weather(weather); + sub_807C988(GetSav1Weather()); +} + +void DoCurrentWeather(void) +{ + DoWeatherEffect(GetSav1Weather()); +} + +void sub_8080750(void) +{ + sub_807C988(GetSav1Weather()); +} + +static const u8 sWeatherCycle1[] = {2, 3, 5, 3}; +static const u8 sWeatherCycle2[] = {2, 2, 3, 2}; + +u8 TranslateWeatherNum(u8 weather) +{ + switch (weather) + { + case 0: return 0; + case 1: return 1; + case 2: return 2; + case 3: return 3; + case 4: return 4; + case 5: return 5; + case 6: return 6; + case 7: return 7; + case 8: return 8; + case 9: return 9; + case 10: return 10; + case 11: return 11; + case 12: return 12; + case 13: return 13; + case 14: return 14; + case 20: return sWeatherCycle1[gSaveBlock1.filler_2F]; + case 21: return sWeatherCycle2[gSaveBlock1.filler_2F]; + default: return 0; + } +} + +void UpdateWeatherPerDay(u16 increment) +{ + u16 weatherStage = gSaveBlock1.filler_2F + increment; + weatherStage %= 4; + gSaveBlock1.filler_2F = weatherStage; +} + +void UpdateRainCounter(u8 newWeather, u8 oldWeather) +{ + if (newWeather != oldWeather + && (newWeather == WEATHER_RAIN_LIGHT || newWeather == WEATHER_RAIN_MED)) + IncrementGameStat(0x28); +} diff --git a/src/field/overworld.c b/src/field/overworld.c index 387745f94..02a5fba10 100644 --- a/src/field/overworld.c +++ b/src/field/overworld.c @@ -602,7 +602,7 @@ void sub_80538F0(u8 mapGroup, u8 mapNum) prev_quest_postbuffer_cursor_backup_reset(); sub_8082BD0(mapGroup, mapNum); DoTimeBasedEvents(); - sub_80806E4(); + SetSav1WeatherFromCurrMapHeader(); ChooseAmbientCrySpecies(); SetDefaultFlashLevel(); Overworld_ClearSavedMusic(); @@ -638,7 +638,7 @@ void sub_8053994(u32 a1) sub_8082BD0(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum); if (a1 != 1) DoTimeBasedEvents(); - sub_80806E4(); + SetSav1WeatherFromCurrMapHeader(); ChooseAmbientCrySpecies(); if (v2) FlagClear(SYS_USE_FLASH); diff --git a/src/field/scrcmd.c b/src/field/scrcmd.c index 28584d4d0..8b2960038 100644 --- a/src/field/scrcmd.c +++ b/src/field/scrcmd.c @@ -692,7 +692,7 @@ bool8 ScrCmd_setweather(struct ScriptContext *ctx) bool8 ScrCmd_resetweather(struct ScriptContext *ctx) { - sub_80806E4(); + SetSav1WeatherFromCurrMapHeader(); return FALSE; } -- cgit v1.2.3 From 0621797d3414975930335fb124580e9d58104794 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sat, 25 Nov 2017 23:36:10 -0600 Subject: rename field_weather_2.c to field_weather_effects.c --- src/field/field_weather_2.c | 2359 ------------------------------------- src/field/field_weather_effects.c | 2359 +++++++++++++++++++++++++++++++++++++ 2 files changed, 2359 insertions(+), 2359 deletions(-) delete mode 100644 src/field/field_weather_2.c create mode 100644 src/field/field_weather_effects.c (limited to 'src/field') diff --git a/src/field/field_weather_2.c b/src/field/field_weather_2.c deleted file mode 100644 index 1ae2d6e56..000000000 --- a/src/field/field_weather_2.c +++ /dev/null @@ -1,2359 +0,0 @@ -#include "global.h" -#include "field_map_obj.h" -#include "field_weather.h" -#include "overworld.h" -#include "rng.h" -#include "script.h" -#include "songs.h" -#include "sound.h" -#include "sprite.h" -#include "task.h" -#include "trig.h" - -extern struct Weather *const gWeatherPtr; - -const u16 gUnknown_08397108[] = INCBIN_U16("graphics/weather/1.gbapal"); -const u16 gUnknown_08397128[] = INCBIN_U16("graphics/weather/2.gbapal"); -const u8 gWeatherFog1Tiles[] = INCBIN_U8("graphics/weather/fog1.4bpp"); -const u8 gWeatherFog2Tiles[] = INCBIN_U8("graphics/weather/fog2.4bpp"); -const u8 gWeatherCloudTiles[] = INCBIN_U8("graphics/weather/cloud.4bpp"); -const u8 gWeatherSnow1Tiles[] = INCBIN_U8("graphics/weather/snow0.4bpp"); -const u8 gWeatherSnow2Tiles[] = INCBIN_U8("graphics/weather/snow1.4bpp"); -const u8 gWeatherBubbleTiles[] = INCBIN_U8("graphics/weather/bubble.4bpp"); -const u8 gWeatherAshTiles[] = INCBIN_U8("graphics/weather/ash.4bpp"); -const u8 gWeatherRainTiles[] = INCBIN_U8("graphics/weather/rain.4bpp"); -const u8 gWeatherSandstormTiles[] = INCBIN_U8("graphics/weather/sandstorm.4bpp"); - -static const struct Coords16 gUnknown_0839A9C8[] = -{ - { 0, 66}, - { 5, 73}, - {10, 78}, -}; - -static const struct SpriteSheet sCloudSpriteSheet = {gWeatherCloudTiles, 0x800, 0x1200}; - -static const struct OamData gOamData_839A9DC = -{ - .y = 0, - .affineMode = 0, - .objMode = 1, - .mosaic = 0, - .bpp = 0, - .shape = 0, - .x = 0, - .matrixNum = 0, - .size = 3, - .tileNum = 0, - .priority = 3, - .paletteNum = 0, - .affineParam = 0, -}; - -static const union AnimCmd gSpriteAnim_839A9E4[] = -{ - ANIMCMD_FRAME(0, 16), - ANIMCMD_END, -}; - -static const union AnimCmd *const gSpriteAnimTable_839A9EC[] = -{ - gSpriteAnim_839A9E4, -}; - -void sub_807E0F4(struct Sprite *); -static const struct SpriteTemplate sCloudSpriteTemplate = -{ - .tileTag = 4608, - .paletteTag = 4609, - .oam = &gOamData_839A9DC, - .anims = gSpriteAnimTable_839A9EC, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_807E0F4, -}; - -extern void sub_807D5BC(s8 a); -extern void sub_807D8C0(const u16 *palette); -extern void sub_807D9A8(void); -extern bool8 sub_807D9C8(void); -extern void sub_807DA14(void); -extern void sub_807DA4C(void); -extern void Weather_SetTargetBlendCoeffs(u8 a, u8 b, int c); -extern bool8 Weather_UpdateBlend(void); -extern void SetRainStrengthFromSoundEffect(u16 sndEff); -extern void sub_807D5F0(u8 a, u8 b, u8 c); - -//------------------------------------------------------------------------------ -// Clouds -//------------------------------------------------------------------------------ - -void Clouds_InitVars(void) -{ - gWeatherPtr->unknown_6C1 = 0; - gWeatherPtr->unknown_6C2 = 20; - gWeatherPtr->weatherGfxLoaded = FALSE; - gWeatherPtr->initStep = 0; - if (gWeatherPtr->cloudsActive == FALSE) - Weather_SetBlendCoeffs(0, 16); -} - -void Clouds_Main(void); - -void Clouds_InitAll(void) -{ - Clouds_InitVars(); - while (gWeatherPtr->weatherGfxLoaded == FALSE) - Clouds_Main(); -} - -void CreateCloudSprites(void); - -void Clouds_Main(void) -{ - switch (gWeatherPtr->initStep) - { - case 0: - CreateCloudSprites(); - gWeatherPtr->initStep++; - break; - case 1: - Weather_SetTargetBlendCoeffs(12, 8, 1); - gWeatherPtr->initStep++; - break; - case 2: - if (Weather_UpdateBlend()) - { - gWeatherPtr->weatherGfxLoaded = TRUE; - gWeatherPtr->initStep++; - } - break; - } -} - -void sub_807E0A0(void); - -bool8 Clouds_Finish(void) -{ - switch (gWeatherPtr->unknown_6CE) - { - case 0: - Weather_SetTargetBlendCoeffs(0, 16, 1); - gWeatherPtr->unknown_6CE++; - return TRUE; - case 1: - if (Weather_UpdateBlend()) - { - sub_807E0A0(); - gWeatherPtr->unknown_6CE++; - } - return TRUE; - } - return FALSE; -} - -void sub_807DF9C(void) -{ - gWeatherPtr->unknown_6C1 = 0; - gWeatherPtr->unknown_6C2 = 20; -} - -void sub_807DFC0(void) -{ - sub_807DF9C(); -} - -void nullsub_55(void) -{ -} - -int sub_807DFD0(void) -{ - return 0; -} - -void CreateCloudSprites(void) -{ - u16 i; - - if (gWeatherPtr->cloudsActive == TRUE) - return; - LoadSpriteSheet(&sCloudSpriteSheet); - sub_807D8C0(gUnknown_08397108); - for (i = 0; i < 3; i++) - { - u8 spriteId = CreateSprite(&sCloudSpriteTemplate, 0, 0, 0xFF); - - if (spriteId != 64) - { - struct Sprite *sprite; - - gWeatherPtr->cloudSprites[i] = &gSprites[spriteId]; - sprite = gWeatherPtr->cloudSprites[i]; - sub_80603CC(gUnknown_0839A9C8[i].x + 7, gUnknown_0839A9C8[i].y + 7, &sprite->pos1.x, &sprite->pos1.y); - sprite->coordOffsetEnabled = TRUE; - } - else - { - gWeatherPtr->cloudSprites[i] = NULL; - } - } - gWeatherPtr->cloudsActive = TRUE; -} - -void sub_807E0A0(void) -{ - u16 i; - - if (gWeatherPtr->cloudsActive == FALSE) - return; - for (i = 0; i < 3; i++) - { - if (gWeatherPtr->cloudSprites[i] != NULL) - DestroySprite(gWeatherPtr->cloudSprites[i]); - } - FreeSpriteTilesByTag(0x1200); - gWeatherPtr->cloudsActive = FALSE; -} - -void sub_807E0F4(struct Sprite *sprite) -{ - sprite->data[0] = (sprite->data[0] + 1) & 1; - if (sprite->data[0] != 0) - sprite->pos1.x--; -} - -void sub_807E110(void) -{ - gWeatherPtr->initStep = 0; - gWeatherPtr->weatherGfxLoaded = FALSE; - gWeatherPtr->unknown_6C1 = 0; - gWeatherPtr->unknown_6C2 = 0; -} - -void sub_807E174(void); - -void sub_807E144(void) -{ - sub_807E110(); - while (gWeatherPtr->weatherGfxLoaded == FALSE) - sub_807E174(); -} - -void sub_807E174(void) -{ - switch (gWeatherPtr->initStep) - { - case 0: - if (gWeatherPtr->unknown_6C6 != 0) - gWeatherPtr->initStep++; - break; - case 1: - sub_807D9A8(); - gWeatherPtr->initStep++; - break; - case 2: - if (sub_807D9C8() == FALSE) - gWeatherPtr->initStep++; - break; - case 3: - sub_807DA14(); - gWeatherPtr->initStep++; - break; - case 4: - sub_807DA4C(); - if (gWeatherPtr->unknown_73C == 6) - { - gWeatherPtr->weatherGfxLoaded = TRUE; - gWeatherPtr->initStep++; - } - break; - default: - sub_807DA4C(); - break; - } -} - -int sub_807E258(void) -{ - return 0; -} - -void task50_0807B6D4(u8); - -void sub_807E25C(void) -{ - CreateTask(task50_0807B6D4, 0x50); -} - -#define tState data[0] -#define tBlendY data[1] -#define tBlendDelay data[2] -#define tWinRange data[3] - -void task50_0807B6D4(u8 taskId) -{ - struct Task *task = &gTasks[taskId]; - - switch (task->tState) - { - case 0: - task->tBlendY = 0; - task->tBlendDelay = 0; - task->tWinRange = REG_WININ; - REG_WININ = WIN_RANGE(63, 63); - REG_BLDCNT = BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ - | BLDCNT_EFFECT_LIGHTEN; - REG_BLDY = 0; - task->tState++; - // fall through - case 1: - task->tBlendY += 3; - if (task->tBlendY > 16) - task->tBlendY = 16; - REG_BLDY = task->tBlendY; - if (task->tBlendY >= 16) - task->tState++; - break; - case 2: - task->tBlendDelay++; - if (task->tBlendDelay > 9) - { - task->tBlendDelay = 0; - task->tBlendY--; - if (task->tBlendY <= 0) - { - task->tBlendY = 0; - task->tState++; - } - REG_BLDY = task->tBlendY; - } - break; - case 3: - REG_BLDCNT = 0; - REG_BLDY = 0; - REG_WININ = task->tWinRange; - task->tState++; - break; - case 4: - EnableBothScriptContexts(); - DestroyTask(taskId); - break; - } -} - -#undef tState -#undef tBlendY -#undef tBlendDelay -#undef tWinRange - -//------------------------------------------------------------------------------ -// Light Rain -//------------------------------------------------------------------------------ - -void LightRain_InitVars(void) -{ - gWeatherPtr->initStep = 0; - gWeatherPtr->weatherGfxLoaded = FALSE; - gWeatherPtr->unknown_6D6 = 0; - gWeatherPtr->unknown_6DB = 8; - gWeatherPtr->unknown_6DC = 0; - gWeatherPtr->unknown_6D9 = 10; - gWeatherPtr->unknown_6C1 = 3; - gWeatherPtr->unknown_6C2 = 20; - SetRainStrengthFromSoundEffect(SE_T_KOAME); -} - -void LightRain_Main(void); - -void LightRain_InitAll(void) -{ - LightRain_InitVars(); - while (gWeatherPtr->weatherGfxLoaded == FALSE) - LightRain_Main(); -} - -void LoadRainSpriteSheet(void); -u8 CreateRainSprites(void); -u8 sub_807E8E8(void); - -void LightRain_Main(void) -{ - switch (gWeatherPtr->initStep) - { - case 0: - LoadRainSpriteSheet(); - gWeatherPtr->initStep++; - break; - case 1: - if (CreateRainSprites() == 0) - gWeatherPtr->initStep++; - break; - case 2: - if (sub_807E8E8() == FALSE) - { - gWeatherPtr->weatherGfxLoaded = TRUE; - gWeatherPtr->initStep++; - } - break; - } -} - -void sub_807E974(void); - -bool8 LightRain_Finish(void) -{ - switch (gWeatherPtr->unknown_6CE) - { - case 0: - if (gWeatherPtr->nextWeather == WEATHER_RAIN_LIGHT - || gWeatherPtr->nextWeather == WEATHER_RAIN_MED - || gWeatherPtr->nextWeather == WEATHER_RAIN_HEAVY) - { - gWeatherPtr->unknown_6CE = 0xFF; - return FALSE; - } - else - { - gWeatherPtr->unknown_6D9 = 0; - gWeatherPtr->unknown_6CE++; - } - // fall through - case 1: - if (sub_807E8E8() == FALSE) - { - sub_807E974(); - gWeatherPtr->unknown_6CE++; - return FALSE; - } - return TRUE; - } - return FALSE; -} - -// defined below -extern const s16 gUnknown_0839AABC[][2]; -extern const u16 gUnknown_0839AAC4[][2]; - -void sub_807E4EC(struct Sprite *sprite) -{ - u32 randVal; - u16 r6; - s32 r4; - s32 r0; - - if (sprite->data[1] == 0) - sprite->data[1] = 361; - randVal = sprite->data[1] * 1103515245 + 12345; - sprite->data[1] = ((randVal & 0x7FFF0000) >> 16) % 600; - - r6 = gUnknown_0839AAC4[gWeatherPtr->unknown_6DC][0]; - - r4 = sprite->data[1] % 30; - sprite->data[2] = r4 * 8; // useless assignment - - r0 = sprite->data[1] / 30; - sprite->data[3] = r0 * 8; // useless assignment - - sprite->data[2] = r4; - sprite->data[2] <<= 7; - - sprite->data[3] = r0; - sprite->data[3] <<= 7; - - sprite->data[2] -= gUnknown_0839AABC[gWeatherPtr->unknown_6DC][0] * r6; - sprite->data[3] -= gUnknown_0839AABC[gWeatherPtr->unknown_6DC][1] * r6; - - StartSpriteAnim(sprite, 0); - sprite->data[4] = 0; - sprite->coordOffsetEnabled = FALSE; - sprite->data[0] = r6; -} - -void sub_807E5C0(struct Sprite *sprite) -{ - if (sprite->data[4] == 0) - { - sprite->data[2] += gUnknown_0839AABC[gWeatherPtr->unknown_6DC][0]; - sprite->data[3] += gUnknown_0839AABC[gWeatherPtr->unknown_6DC][1]; - sprite->pos1.x = sprite->data[2] >> 4; - sprite->pos1.y = sprite->data[3] >> 4; - - if (sprite->data[5] != 0 - && (sprite->pos1.x >= -8 && sprite->pos1.x <= 248) - && sprite->pos1.y >= -16 && sprite->pos1.y <= 176) - sprite->invisible = FALSE; - else - sprite->invisible = TRUE; - - sprite->data[0]--; - if (sprite->data[0] == 0) - { - StartSpriteAnim(sprite, gWeatherPtr->unknown_6DC + 1); - sprite->data[4] = 1; - sprite->pos1.x -= gSpriteCoordOffsetX; - sprite->pos1.y -= gSpriteCoordOffsetY; - sprite->coordOffsetEnabled = TRUE; - } - } - else if (sprite->animEnded) - { - sprite->invisible = TRUE; - sub_807E4EC(sprite); - } -} - -void sub_807E6C4(struct Sprite *sprite) -{ - if (sprite->data[0] == 0) - { - sub_807E4EC(sprite); - sprite->callback = sub_807E5C0; - } - else - { - sprite->data[0]--; - } -} - -void sub_807E6F0(struct Sprite *sprite, u16 b) -{ - u16 r8 = gUnknown_0839AAC4[gWeatherPtr->unknown_6DC][0]; - u16 r6 = b / (gUnknown_0839AAC4[gWeatherPtr->unknown_6DC][1] + r8); - u16 r4 = b % (gUnknown_0839AAC4[gWeatherPtr->unknown_6DC][1] + r8); - - while (--r6 != 0xFFFF) - sub_807E4EC(sprite); - if (r4 < r8) - { - while (--r4 != 0xFFFF) - sub_807E5C0(sprite); - sprite->data[6] = 0; - } - else - { - sprite->data[0] = r4 - r8; - sprite->invisible = TRUE; - sprite->data[6] = 1; - } -} - -extern const struct SpriteSheet sRainSpriteSheet; // defined below - -void LoadRainSpriteSheet(void) -{ - LoadSpriteSheet(&sRainSpriteSheet); -} - -const struct Coords16 gUnknown_0839AA08[] = -{ - { 0, 0}, - { 0, 160}, - { 0, 64}, - {144, 224}, - {144, 128}, - { 32, 32}, - { 32, 192}, - { 32, 96}, - { 72, 128}, - { 72, 32}, - { 72, 192}, - {216, 96}, - {216, 0}, - {104, 160}, - {104, 64}, - {104, 224}, - {144, 0}, - {144, 160}, - {144, 64}, - { 32, 224}, - { 32, 128}, - { 72, 32}, - { 72, 192}, - { 48, 96}, -}; - -static const struct OamData gOamData_839AA68 = -{ - .y = 0, - .affineMode = 0, - .objMode = 0, - .mosaic = 0, - .bpp = 0, - .shape = 2, - .x = 0, - .matrixNum = 0, - .size = 2, - .tileNum = 0, - .priority = 1, - .paletteNum = 2, - .affineParam = 0, -}; - -static const union AnimCmd gSpriteAnim_839AA70[] = -{ - ANIMCMD_FRAME(0, 16), - ANIMCMD_JUMP(0), -}; - -static const union AnimCmd gSpriteAnim_839AA78[] = -{ - ANIMCMD_FRAME(8, 3), - ANIMCMD_FRAME(32, 2), - ANIMCMD_FRAME(40, 2), - ANIMCMD_END, -}; - -static const union AnimCmd gSpriteAnim_839AA88[] = -{ - ANIMCMD_FRAME(8, 3), - ANIMCMD_FRAME(16, 3), - ANIMCMD_FRAME(24, 4), - ANIMCMD_END, -}; - -static const union AnimCmd *const gSpriteAnimTable_839AA98[] = -{ - gSpriteAnim_839AA70, - gSpriteAnim_839AA78, - gSpriteAnim_839AA88, -}; - -static const struct SpriteTemplate sRainSpriteTemplate = -{ - .tileTag = 4614, - .paletteTag = 4608, - .oam = &gOamData_839AA68, - .anims = gSpriteAnimTable_839AA98, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_807E5C0, -}; - - -const s16 gUnknown_0839AABC[][2] = -{ - {-104, 208}, - {-160, 320}, -}; - -const u16 gUnknown_0839AAC4[][2] = -{ - {18, 7}, - {12, 10}, -}; - -static const struct SpriteSheet sRainSpriteSheet = {gWeatherRainTiles, sizeof(gWeatherRainTiles), 0x1206}; - -static const struct OamData gOamData_839AAD4 = -{ - .y = 0, - .affineMode = 0, - .objMode = 0, - .mosaic = 0, - .bpp = 0, - .shape = 0, - .x = 0, - .matrixNum = 0, - .size = 0, - .tileNum = 0, - .priority = 1, - .paletteNum = 0, - .affineParam = 0, -}; - -static const struct SpriteFrameImage gSpriteImageTable_839AADC[] = -{ - {gWeatherSnow1Tiles, sizeof(gWeatherSnow1Tiles)}, - {gWeatherSnow2Tiles, sizeof(gWeatherSnow2Tiles)}, -}; - -static const union AnimCmd gSpriteAnim_839AAEC[] = -{ - ANIMCMD_FRAME(0, 16), - ANIMCMD_END, -}; - -static const union AnimCmd gSpriteAnim_839AAF4[] = -{ - ANIMCMD_FRAME(1, 16), - ANIMCMD_END, -}; - -static const union AnimCmd *const gSpriteAnimTable_839AAFC[] = -{ - gSpriteAnim_839AAEC, - gSpriteAnim_839AAF4, -}; - -void sub_807ED48(struct Sprite *); -static const struct SpriteTemplate sSnowflakeSpriteTemplate = -{ - .tileTag = 0xFFFF, - .paletteTag = 4608, - .oam = &gOamData_839AAD4, - .anims = gSpriteAnimTable_839AAFC, - .images = gSpriteImageTable_839AADC, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_807ED48, -}; - -// unused data -static const u16 unusedData_839AB1C[] = {0, 6, 6, 12, 18, 42, 300, 300}; - -static const struct OamData gOamData_839AB2C = -{ - .y = 0, - .affineMode = 0, - .objMode = 1, - .mosaic = 0, - .bpp = 0, - .shape = 0, - .x = 0, - .matrixNum = 0, - .size = 3, - .tileNum = 0, - .priority = 2, - .paletteNum = 0, - .affineParam = 0, -}; - -static const union AnimCmd gSpriteAnim_839AB34[] = -{ - ANIMCMD_FRAME(0, 16), - ANIMCMD_END, -}; - -static const union AnimCmd gSpriteAnim_839AB3C[] = -{ - ANIMCMD_FRAME(32, 16), - ANIMCMD_END, -}; - -static const union AnimCmd gSpriteAnim_839AB44[] = -{ - ANIMCMD_FRAME(64, 16), - ANIMCMD_END, -}; - -static const union AnimCmd gSpriteAnim_839AB4C[] = -{ - ANIMCMD_FRAME(96, 16), - ANIMCMD_END, -}; - -static const union AnimCmd gSpriteAnim_839AB54[] = -{ - ANIMCMD_FRAME(128, 16), - ANIMCMD_END, -}; - -static const union AnimCmd gSpriteAnim_839AB5C[] = -{ - ANIMCMD_FRAME(160, 16), - ANIMCMD_END, -}; - -static const union AnimCmd *const gSpriteAnimTable_839AB64[] = -{ - gSpriteAnim_839AB34, - gSpriteAnim_839AB3C, - gSpriteAnim_839AB44, - gSpriteAnim_839AB4C, - gSpriteAnim_839AB54, - gSpriteAnim_839AB5C, -}; - -static const union AffineAnimCmd gSpriteAffineAnim_839AB7C[] = -{ - AFFINEANIMCMD_FRAME(0x200, 0x200, 0, 0), - AFFINEANIMCMD_END, -}; - -static const union AffineAnimCmd *const gSpriteAffineAnimTable_839AB8C[] = -{ - gSpriteAffineAnim_839AB7C, -}; - -static void Fog2SpriteCallback(struct Sprite *); -static const struct SpriteTemplate sFog2SpriteTemplate = -{ - .tileTag = 4609, - .paletteTag = 4608, - .oam = &gOamData_839AB2C, - .anims = gSpriteAnimTable_839AB64, - .images = NULL, - .affineAnims = gSpriteAffineAnimTable_839AB8C, - .callback = Fog2SpriteCallback, -}; - -bool8 CreateRainSprites(void) -{ - u8 r7; - u8 spriteId; - - if (gWeatherPtr->unknown_6DA == 24) - return FALSE; - - r7 = gWeatherPtr->unknown_6DA; - spriteId = CreateSpriteAtEnd(&sRainSpriteTemplate, - gUnknown_0839AA08[r7].x, gUnknown_0839AA08[r7].y, 78); - if (spriteId != 64) - { - gSprites[spriteId].data[5] = 0; - gSprites[spriteId].data[1] = r7 * 145; - while (gSprites[spriteId].data[1] >= 600) - gSprites[spriteId].data[1] -= 600; - sub_807E4EC(&gSprites[spriteId]); - sub_807E6F0(&gSprites[spriteId], r7 * 9); - gSprites[spriteId].invisible = TRUE; - gWeatherPtr->rainSprites[r7] = &gSprites[spriteId]; - } - else - { - gWeatherPtr->rainSprites[r7] = NULL; - } - - if (++gWeatherPtr->unknown_6DA == 24) - { - u16 i; - - for (i = 0; i < 24; i++) - { - if (gWeatherPtr->rainSprites[i] != NULL) - { - if (gWeatherPtr->rainSprites[i]->data[6] == 0) - gWeatherPtr->rainSprites[i]->callback = sub_807E5C0; - else - gWeatherPtr->rainSprites[i]->callback = sub_807E6C4; - } - } - return FALSE; - } - return TRUE; -} - -bool8 sub_807E8E8(void) -{ - if (gWeatherPtr->unknown_6D8 == gWeatherPtr->unknown_6D9) - return FALSE; - - if (++gWeatherPtr->unknown_6D6 > gWeatherPtr->unknown_6DB) - { - gWeatherPtr->unknown_6D6 = 0; - if (gWeatherPtr->unknown_6D8 < gWeatherPtr->unknown_6D9) - { - gWeatherPtr->rainSprites[gWeatherPtr->unknown_6D8++]->data[5] = 1; - } - else - { - gWeatherPtr->unknown_6D8--; - gWeatherPtr->rainSprites[gWeatherPtr->unknown_6D8]->data[5] = 0; - gWeatherPtr->rainSprites[gWeatherPtr->unknown_6D8]->invisible = TRUE; - } - } - return TRUE; -} - -void sub_807E974(void) -{ - u16 i; - - for (i = 0; i < gWeatherPtr->unknown_6DA; i++) - { - if (gWeatherPtr->rainSprites[i] != NULL) - DestroySprite(gWeatherPtr->rainSprites[i]); - } - gWeatherPtr->unknown_6DA = 0; - FreeSpriteTilesByTag(0x1206); -} - -//------------------------------------------------------------------------------ -// Snow -//------------------------------------------------------------------------------ - -void Snow_InitVars(void) -{ - gWeatherPtr->initStep = 0; - gWeatherPtr->weatherGfxLoaded = FALSE; - gWeatherPtr->unknown_6C1 = 3; - gWeatherPtr->unknown_6C2 = 20; - gWeatherPtr->unknown_6E5 = 16; - gWeatherPtr->unknown_6E0 = 0; -} - -void Snow_Main(void); -void sub_807ED48(struct Sprite *); - -void Snow_InitAll(void) -{ - Snow_InitVars(); - while (gWeatherPtr->weatherGfxLoaded == FALSE) - { - u16 i; - - Snow_Main(); - for (i = 0; i < gWeatherPtr->snowflakeSpriteCount; i++) - { - sub_807ED48(gWeatherPtr->snowflakeSprites[i]); - } - } -} - -u8 snowflakes_progress(void); - -void Snow_Main(void) -{ - if (gWeatherPtr->initStep == 0 && snowflakes_progress() == FALSE) - { - gWeatherPtr->weatherGfxLoaded = TRUE; - gWeatherPtr->initStep++; - } -} - -bool8 Snow_Finish(void) -{ - switch (gWeatherPtr->unknown_6CE) - { - case 0: - gWeatherPtr->unknown_6E5 = 0; - gWeatherPtr->unknown_6E0 = 0; - gWeatherPtr->unknown_6CE++; - // fall through - case 1: - if (snowflakes_progress() == FALSE) - { - gWeatherPtr->unknown_6CE++; - return FALSE; - } - return TRUE; - } - return FALSE; -} - -bool8 CreateSnowflakeSprite(void); -bool8 RemoveSnowflakeSprite(void); - -bool8 snowflakes_progress(void) -{ - if (gWeatherPtr->snowflakeSpriteCount == gWeatherPtr->unknown_6E5) - return FALSE; - - gWeatherPtr->unknown_6E0++; - if (gWeatherPtr->unknown_6E0 > 36) - { - gWeatherPtr->unknown_6E0 = 0; - if (gWeatherPtr->snowflakeSpriteCount < gWeatherPtr->unknown_6E5) - CreateSnowflakeSprite(); - else - RemoveSnowflakeSprite(); - } - return (gWeatherPtr->snowflakeSpriteCount != gWeatherPtr->unknown_6E5); -} - -void sub_807EC40(struct Sprite *); - -bool8 CreateSnowflakeSprite(void) -{ - u8 spriteId = CreateSpriteAtEnd(&sSnowflakeSpriteTemplate, 0, 0, 78); - - if (spriteId == 64) - return FALSE; - gSprites[spriteId].data[4] = gWeatherPtr->snowflakeSpriteCount; - sub_807EC40(&gSprites[spriteId]); - gSprites[spriteId].coordOffsetEnabled = TRUE; - gWeatherPtr->snowflakeSprites[gWeatherPtr->snowflakeSpriteCount++] = &gSprites[spriteId]; - return TRUE; -} - -bool8 RemoveSnowflakeSprite(void) -{ - if (gWeatherPtr->snowflakeSpriteCount != 0) - { - DestroySprite(gWeatherPtr->snowflakeSprites[--gWeatherPtr->snowflakeSpriteCount]); - return TRUE; - } - return FALSE; -} - -void sub_807EC40(struct Sprite *sprite) -{ - u16 r4 = ((sprite->data[4] * 5) & 7) * 30 + (Random() % 30); - u16 r6; - - sprite->pos1.y = -3 - (gSpriteCoordOffsetY + sprite->centerToCornerVecY); - sprite->pos1.x = r4 - (gSpriteCoordOffsetX + sprite->centerToCornerVecX); - sprite->data[0] = sprite->pos1.y * 128; - sprite->pos2.x = 0; - r6 = Random(); - sprite->data[1] = (r6 & 3) * 5 + 64; - sprite->data[7] = (r6 & 3) * 5 + 64; - StartSpriteAnim(sprite, (r6 & 1) ? 0 : 1); - sprite->data[3] = 0; - sprite->data[2] = ((r6 & 3) == 0) ? 2 : 1; - sprite->data[6] = (r6 & 0x1F) + 210; - sprite->data[5] = 0; -} - -void sub_807ECEC(struct Sprite *sprite) -{ - if (gWeatherPtr->unknown_6E2 > 18) - { - sprite->invisible = FALSE; - sprite->callback = sub_807ED48; - sprite->pos1.y = 0xFA - (gSpriteCoordOffsetY + sprite->centerToCornerVecY); - sprite->data[0] = sprite->pos1.y * 128; - gWeatherPtr->unknown_6E2 = 0; - } -} - -void sub_807ED48(struct Sprite *sprite) -{ - s16 r3; - s16 r2; - - sprite->data[0] += sprite->data[1]; - sprite->pos1.y = sprite->data[0] >> 7; - sprite->data[3] = (sprite->data[3] + sprite->data[2]) & 0xFF; - sprite->pos2.x = gSineTable[sprite->data[3]] / 64; - - r3 = (sprite->pos1.x + sprite->centerToCornerVecX + gSpriteCoordOffsetX) & 0x1FF; - if (r3 & 0x100) - r3 = -0x100 | r3; // hmm... what is this? - if (r3 < -3) - sprite->pos1.x = 242 - (gSpriteCoordOffsetX + sprite->centerToCornerVecX); - else if (r3 > 242) - sprite->pos1.x = -3 - (gSpriteCoordOffsetX + sprite->centerToCornerVecX); - - r2 = (sprite->pos1.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY) & 0xFF; - if (r2 > 163 && r2 < 171) - { - sprite->pos1.y = 250 - (gSpriteCoordOffsetY + sprite->centerToCornerVecY); - sprite->data[0] = sprite->pos1.y * 128; - sprite->data[5] = 0; - sprite->data[6] = 220; - } - else if (r2 > 242 && r2 < 250) - { - sprite->pos1.y = 163; - sprite->data[0] = sprite->pos1.y * 128; - sprite->data[5] = 0; - sprite->data[6] = 220; - sprite->invisible = TRUE; - sprite->callback = sub_807ECEC; - } - - sprite->data[5]++; - if (sprite->data[5] == sprite->data[6]) - { - sub_807EC40(sprite); - sprite->pos1.y = 250; - sprite->invisible = TRUE; - sprite->callback = sub_807ECEC; - } -} - -//------------------------------------------------------------------------------ -// Medium Rain -//------------------------------------------------------------------------------ - -void MedRain_InitVars(void) -{ - gWeatherPtr->initStep = 0; - gWeatherPtr->weatherGfxLoaded = FALSE; - gWeatherPtr->unknown_6D6 = 0; - gWeatherPtr->unknown_6DB = 4; - gWeatherPtr->unknown_6DC = 0; - gWeatherPtr->unknown_6D9 = 16; - gWeatherPtr->unknown_6C1 = 3; - gWeatherPtr->unknown_6C2 = 20; - gWeatherPtr->weatherGfxLoaded = FALSE; // duplicate assignment - gWeatherPtr->unknown_6ED = 0; - SetRainStrengthFromSoundEffect(SE_T_AME); -} - -void Rain_Main(void); - -void MedRain_InitAll(void) -{ - MedRain_InitVars(); - while (gWeatherPtr->weatherGfxLoaded == FALSE) - Rain_Main(); -} - -//------------------------------------------------------------------------------ -// Heavy Rain -//------------------------------------------------------------------------------ - -void HeavyRain_InitVars(void) -{ - gWeatherPtr->initStep = 0; - gWeatherPtr->weatherGfxLoaded = FALSE; - gWeatherPtr->unknown_6D6 = 0; - gWeatherPtr->unknown_6DB = 4; - gWeatherPtr->unknown_6DC = 1; - gWeatherPtr->unknown_6D9 = 24; - gWeatherPtr->unknown_6C1 = 3; - gWeatherPtr->unknown_6C2 = 20; - gWeatherPtr->weatherGfxLoaded = FALSE; // duplicate assignment - SetRainStrengthFromSoundEffect(SE_T_OOAME); -} - -void HeavyRain_InitAll(void) -{ - HeavyRain_InitVars(); - while (gWeatherPtr->weatherGfxLoaded == FALSE) - Rain_Main(); -} - -void UpdateThunderSound(void); -void SetThunderCounter(u16); - -void Rain_Main(void) -{ - UpdateThunderSound(); - switch (gWeatherPtr->initStep) - { - case 0: - LoadRainSpriteSheet(); - gWeatherPtr->initStep++; - break; - case 1: - if (CreateRainSprites()) - break; - gWeatherPtr->initStep++; - break; - case 2: - if (sub_807E8E8()) - break; - gWeatherPtr->weatherGfxLoaded = TRUE; - gWeatherPtr->initStep++; - break; - case 3: - if (gWeatherPtr->unknown_6C6 == 0) - break; - gWeatherPtr->initStep = 6; - break; - case 4: - gWeatherPtr->unknown_6EA = 1; - gWeatherPtr->unknown_6E6 = (Random() % 360) + 360; - gWeatherPtr->initStep++; - // fall through - case 5: - if (--gWeatherPtr->unknown_6E6 != 0) - break; - gWeatherPtr->initStep++; - break; - case 6: - gWeatherPtr->unknown_6EA = 1; - gWeatherPtr->unknown_6EB = Random() % 2; - gWeatherPtr->initStep++; - break; - case 7: - gWeatherPtr->unknown_6EC = (Random() & 1) + 1; - gWeatherPtr->initStep++; - // fall through - case 8: - sub_807D5BC(19); - if (gWeatherPtr->unknown_6EB == 0 && gWeatherPtr->unknown_6EC == 1) - SetThunderCounter(20); - gWeatherPtr->unknown_6E6 = (Random() % 3) + 6; - gWeatherPtr->initStep++; - break; - case 9: - if (--gWeatherPtr->unknown_6E6 != 0) - break; - sub_807D5BC(3); - gWeatherPtr->unknown_6EA = 1; - if (--gWeatherPtr->unknown_6EC != 0) - { - gWeatherPtr->unknown_6E6 = (Random() % 16) + 60; - gWeatherPtr->initStep = 10; - } - else if (gWeatherPtr->unknown_6EB == 0) - { - gWeatherPtr->initStep = 4; - } - else - { - gWeatherPtr->initStep = 11; - } - break; - case 10: - if (--gWeatherPtr->unknown_6E6 != 0) - break; - gWeatherPtr->initStep = 8; - break; - case 11: - gWeatherPtr->unknown_6E6 = (Random() % 16) + 60; - gWeatherPtr->initStep++; - break; - case 12: - if (--gWeatherPtr->unknown_6E6 != 0) - break; - SetThunderCounter(100); - sub_807D5BC(19); - // Why use "% 16" everywhere else and "& 0xF" here. So dumb. - gWeatherPtr->unknown_6E6 = (Random() & 0xF) + 30; - gWeatherPtr->initStep++; - break; - case 13: - if (--gWeatherPtr->unknown_6E6 != 0) - break; - sub_807D5F0(19, 3, 5); - gWeatherPtr->initStep++; - break; - case 14: - if (gWeatherPtr->unknown_6C6 != 3) - break; - gWeatherPtr->unknown_6EA = 1; - gWeatherPtr->initStep = 4; - break; - } -} - -bool8 Rain_Finish(void) -{ - switch (gWeatherPtr->unknown_6CE) - { - case 0: - gWeatherPtr->unknown_6EA = 0; - gWeatherPtr->unknown_6CE++; - // fall through - case 1: - Rain_Main(); - if (gWeatherPtr->unknown_6EA != 0) - { - if (gWeatherPtr->nextWeather == WEATHER_RAIN_LIGHT - || gWeatherPtr->nextWeather == WEATHER_RAIN_MED - || gWeatherPtr->nextWeather == WEATHER_RAIN_HEAVY) - return FALSE; - gWeatherPtr->unknown_6D9 = 0; - gWeatherPtr->unknown_6CE++; - } - break; - case 2: - if (sub_807E8E8()) - break; - sub_807E974(); - gWeatherPtr->unknown_6ED = 0; - gWeatherPtr->unknown_6CE++; - return FALSE; - default: - return FALSE; - } - return TRUE; -} - -void SetThunderCounter(u16 max) -{ - if (gWeatherPtr->unknown_6ED == 0) - { - gWeatherPtr->thunderCounter = Random() % max; - gWeatherPtr->unknown_6ED = 1; - } -} - -void UpdateThunderSound(void) -{ - if (gWeatherPtr->unknown_6ED == 1) - { - if (gWeatherPtr->thunderCounter == 0) - { - if (IsSEPlaying()) - return; - if (Random() & 1) - PlaySE(SE_T_KAMI); - else - PlaySE(SE_T_KAMI2); - gWeatherPtr->unknown_6ED = 0; - } - else - { - gWeatherPtr->thunderCounter--; - } - } -} - -//------------------------------------------------------------------------------ -// Fog 2 -//------------------------------------------------------------------------------ - -void Fog2_Main(void); -static void CreateFog2Sprites(void); -static void DestroyFog2Sprites(void); - -void Fog2_InitVars(void) -{ - gWeatherPtr->initStep = 0; - gWeatherPtr->weatherGfxLoaded = FALSE; - gWeatherPtr->unknown_6C1 = 0; - gWeatherPtr->unknown_6C2 = 20; - if (gWeatherPtr->unknown_6FB == 0) - { - gWeatherPtr->unknown_6F0 = 0; - gWeatherPtr->unknown_6F2 = 0; - gWeatherPtr->fog2ScrollPosX = 0; - Weather_SetBlendCoeffs(0, 16); - } -} - -void Fog2_InitAll(void) -{ - Fog2_InitVars(); - while (gWeatherPtr->weatherGfxLoaded == FALSE) - Fog2_Main(); -} - -void Fog2_Main(void) -{ - gWeatherPtr->fog2ScrollPosX = (gSpriteCoordOffsetX - gWeatherPtr->unknown_6F2) & 0xFF; - if (++gWeatherPtr->unknown_6F0 > 3) - { - gWeatherPtr->unknown_6F0 = 0; - gWeatherPtr->unknown_6F2++; - } - switch (gWeatherPtr->initStep) - { - case 0: - CreateFog2Sprites(); - if (gWeatherPtr->currWeather == WEATHER_FOG_2) - Weather_SetTargetBlendCoeffs(12, 8, 3); - else - Weather_SetTargetBlendCoeffs(4, 16, 0); - gWeatherPtr->initStep++; - break; - case 1: - if (Weather_UpdateBlend()) - { - gWeatherPtr->weatherGfxLoaded = TRUE; - gWeatherPtr->initStep++; - } - break; - } -} - -bool8 Fog2_Finish(void) -{ - gWeatherPtr->fog2ScrollPosX = (gSpriteCoordOffsetX - gWeatherPtr->unknown_6F2) & 0xFF; - if (++gWeatherPtr->unknown_6F0 > 3) - { - gWeatherPtr->unknown_6F0 = 0; - gWeatherPtr->unknown_6F2++; - } - switch (gWeatherPtr->unknown_6CE) - { - case 0: - Weather_SetTargetBlendCoeffs(0, 16, 3); - gWeatherPtr->unknown_6CE++; - break; - case 1: - if (!Weather_UpdateBlend()) - break; - gWeatherPtr->unknown_6CE++; - break; - case 2: - DestroyFog2Sprites(); - gWeatherPtr->unknown_6CE++; - break; - default: - return FALSE; - } - return TRUE; -} - -#define sprColumn data[0] - -static void Fog2SpriteCallback(struct Sprite *sprite) -{ - sprite->pos2.y = (u8)gSpriteCoordOffsetY; - sprite->pos1.x = gWeatherPtr->fog2ScrollPosX + 32 + sprite->sprColumn * 64; - if (sprite->pos1.x > 0x10F) - { - sprite->pos1.x = 480 + gWeatherPtr->fog2ScrollPosX - (4 - sprite->sprColumn) * 64; - sprite->pos1.x &= 0x1FF; - } -} - -static void CreateFog2Sprites(void) -{ - u16 i; - - if (gWeatherPtr->unknown_6FB == 0) - { - struct SpriteSheet fog2SpriteSheet = {gWeatherFog2Tiles, sizeof(gWeatherFog2Tiles), 0x1201}; - - LoadSpriteSheet(&fog2SpriteSheet); - for (i = 0; i < 20; i++) - { - u8 spriteId = CreateSpriteAtEnd(&sFog2SpriteTemplate, 0, 0, 0xFF); - - if (spriteId != MAX_SPRITES) - { - struct Sprite *sprite = &gSprites[spriteId]; - - sprite->sprColumn = i % 5; - sprite->pos1.x = (i % 5) * 64 + 32; - sprite->pos1.y = (i / 5) * 64 + 32; - ((struct Weather2 *)gWeatherPtr)->fogSprites[i] = sprite; - } - else - { - ((struct Weather2 *)gWeatherPtr)->fogSprites[i] = NULL; - } - } - gWeatherPtr->unknown_6FB = 1; - } -} - -#undef sprColumn - -static void DestroyFog2Sprites(void) -{ - u16 i; - - if (gWeatherPtr->unknown_6FB != 0) - { - for (i = 0; i < 20; i++) - { - if (((struct Weather2 *)gWeatherPtr)->fogSprites[i] != NULL) - DestroySprite(((struct Weather2 *)gWeatherPtr)->fogSprites[i]); - } - FreeSpriteTilesByTag(0x1201); - gWeatherPtr->unknown_6FB = 0; - } -} - -//------------------------------------------------------------------------------ -// Fog 1 -//------------------------------------------------------------------------------ - -void Fog1_InitVars(void) -{ - gWeatherPtr->initStep = 0; - gWeatherPtr->weatherGfxLoaded = FALSE; - gWeatherPtr->unknown_6C1 = 0; - gWeatherPtr->unknown_6C2 = 20; - gWeatherPtr->unknown_6FE = 20; - if (gWeatherPtr->unknown_700 == 0) - { - Weather_SetBlendCoeffs(0, 16); - REG_BLDALPHA = BLDALPHA_BLEND(64, 63); // Those aren't even valid coefficients! - } -} - -void sub_807F888(void); - -void sub_807F858(void) -{ - Fog1_InitVars(); - while (gWeatherPtr->weatherGfxLoaded == FALSE) - sub_807F888(); -} - -void sub_807F99C(void); -void sub_807F9AC(void); - -void sub_807F888(void) -{ - gWeatherPtr->unknown_6FC = gSpriteCoordOffsetX & 0x1FF; - while (gWeatherPtr->unknown_6FC > 0xEF) - gWeatherPtr->unknown_6FC -= 0xF0; - switch (gWeatherPtr->initStep) - { - case 0: - sub_807F99C(); - gWeatherPtr->initStep++; - break; - case 1: - if (gWeatherPtr->unknown_700 == 0) - sub_807F9AC(); - Weather_SetTargetBlendCoeffs(16, 0, 1); - gWeatherPtr->initStep++; - break; - case 2: - if (!Weather_UpdateBlend()) - break; - gWeatherPtr->weatherGfxLoaded = TRUE; - gWeatherPtr->initStep++; - break; - default: - Weather_UpdateBlend(); - break; - } -} - -void sub_807FA54(void); - -bool8 sub_807F934(void) -{ - switch (gWeatherPtr->unknown_6CE) - { - case 0: - Weather_SetTargetBlendCoeffs(0, 16, 1); - gWeatherPtr->unknown_6CE++; - break; - case 1: - if (!Weather_UpdateBlend()) - break; - sub_807FA54(); - gWeatherPtr->unknown_6CE++; - break; - case 2: - REG_BLDALPHA = 0; - gWeatherPtr->unknown_6CE++; - return FALSE; - default: - return FALSE; - } - return TRUE; -} - -const struct SpriteSheet gWeatherAshSpriteSheet = {gWeatherAshTiles, sizeof(gWeatherAshTiles), 0x1202}; - -void sub_807F99C(void) -{ - LoadSpriteSheet(&gWeatherAshSpriteSheet); -} - -const struct OamData gOamData_839ABB8 = -{ - .y = 0, - .affineMode = 0, - .objMode = 1, - .mosaic = 0, - .bpp = 0, - .shape = 0, - .x = 0, - .matrixNum = 0, - .size = 3, - .tileNum = 0, - .priority = 1, - .paletteNum = 15, - .affineParam = 0, -}; - -const union AnimCmd gSpriteAnim_839ABC0[] = -{ - ANIMCMD_FRAME(0, 60), - ANIMCMD_FRAME(64, 60), - ANIMCMD_JUMP(0), -}; - -const union AnimCmd *const gSpriteAnimTable_839ABCC[] = -{ - gSpriteAnim_839ABC0, -}; - -void sub_807FAA8(struct Sprite *); -const struct SpriteTemplate gSpriteTemplate_839ABD0 = -{ - .tileTag = 4610, - .paletteTag = 4608, - .oam = &gOamData_839ABB8, - .anims = gSpriteAnimTable_839ABCC, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_807FAA8, -}; - -void sub_807F9AC(void) -{ - u8 i; - - if (gWeatherPtr->unknown_700 == 0) - { - for (i = 0; i < 20; i++) - { - u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839ABD0, 0, 0, 0x4E); - - if (spriteId != MAX_SPRITES) - { - struct Sprite *sprite = &gSprites[spriteId]; - - sprite->data[1] = 0; - sprite->data[2] = (u8)(i % 5); - sprite->data[3] = (u8)(i / 5); - sprite->data[0] = sprite->data[3] * 64 + 32; - ((struct Weather2 *)gWeatherPtr)->fog1Sprites[i] = sprite; - } - else - { - ((struct Weather2 *)gWeatherPtr)->fog1Sprites[i] = NULL; - } - } - gWeatherPtr->unknown_700 = 1; - } -} - -void sub_807FA54(void) -{ - u16 i; - - if (gWeatherPtr->unknown_700 != 0) - { - for (i = 0; i < 20; i++) - { - if (((struct Weather2 *)gWeatherPtr)->fog1Sprites[i] != NULL) - DestroySprite(((struct Weather2 *)gWeatherPtr)->fog1Sprites[i]); - } - FreeSpriteTilesByTag(0x1202); - gWeatherPtr->unknown_700 = 0; - } -} - -void sub_807FAA8(struct Sprite *sprite) -{ - sprite->data[1]++; - if (sprite->data[1] > 5) - { - sprite->data[1] = 0; - sprite->data[0]++; - } - sprite->pos1.y = gSpriteCoordOffsetY + sprite->data[0]; - sprite->pos1.x = gWeatherPtr->unknown_6FC + 32 + sprite->data[2] * 64; - if (sprite->pos1.x > 271) - { - sprite->pos1.x = gWeatherPtr->unknown_6FC + 0x1E0 - (4 - sprite->data[2]) * 64; - sprite->pos1.x &= 0x1FF; - } -} - -void sub_807FB24(void) -{ - gWeatherPtr->initStep = 0; - gWeatherPtr->weatherGfxLoaded = 0; - gWeatherPtr->unknown_6C1 = 0; - gWeatherPtr->unknown_6C2 = 20; - gWeatherPtr->unknown_6F0 = 0; - gWeatherPtr->unknown_6F2 = 1; - if (gWeatherPtr->unknown_724 == 0) - { - gWeatherPtr->unknown_71C = 0; - gWeatherPtr->unknown_71E = 0; - gWeatherPtr->unknown_720 = 0; - gWeatherPtr->unknown_722 = 0; - gWeatherPtr->unknown_718 = 0; - gWeatherPtr->unknown_71A = 0; - Weather_SetBlendCoeffs(0, 16); - } -} - -void sub_807FBD8(void); - -void sub_807FBA8(void) -{ - sub_807FB24(); - while (gWeatherPtr->weatherGfxLoaded == FALSE) - sub_807FBD8(); -} - -void sub_807FC9C(void); -void sub_807FD30(void); - -void sub_807FBD8(void) -{ - sub_807FC9C(); - switch (gWeatherPtr->initStep) - { - case 0: - sub_807FD30(); - gWeatherPtr->initStep++; - break; - case 1: - Weather_SetTargetBlendCoeffs(12, 8, 8); - gWeatherPtr->initStep++; - break; - case 2: - if (!Weather_UpdateBlend()) - break; - gWeatherPtr->weatherGfxLoaded = TRUE; - gWeatherPtr->initStep++; - break; - } -} - -void sub_807FDE8(void); - -bool8 sub_807FC3C(void) -{ - sub_807FC9C(); - switch (gWeatherPtr->unknown_6CE) - { - case 0: - Weather_SetTargetBlendCoeffs(0, 16, 1); - gWeatherPtr->unknown_6CE++; - break; - case 1: - if (!Weather_UpdateBlend()) - break; - gWeatherPtr->unknown_6CE++; - break; - case 2: - sub_807FDE8(); - gWeatherPtr->unknown_6CE++; - break; - default: - return FALSE; - } - return TRUE; -} - -void sub_807FC9C(void) -{ - if (++gWeatherPtr->unknown_71C > 2) - { - gWeatherPtr->unknown_720++; - gWeatherPtr->unknown_71C = 0; - } - - if (++gWeatherPtr->unknown_71E > 4) - { - gWeatherPtr->unknown_722++; - gWeatherPtr->unknown_71E = 0; - } - - gWeatherPtr->unknown_718 = (gSpriteCoordOffsetX - gWeatherPtr->unknown_720) & 0xFF; - gWeatherPtr->unknown_71A = gSpriteCoordOffsetY + gWeatherPtr->unknown_722; -} - -extern const struct SpriteTemplate gSpriteTemplate_839AC04; // defined below - -void sub_807FD30(void) -{ - u16 i; - - if (gWeatherPtr->unknown_724 == 0) - { - struct SpriteSheet fog1SpriteSheet = {gWeatherFog1Tiles, sizeof(gWeatherFog1Tiles), 0x1203}; - - LoadSpriteSheet(&fog1SpriteSheet); - for (i = 0; i < 20; i++) - { - u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839AC04, 0, (i / 5) * 64, 0xFF); - - if (spriteId != MAX_SPRITES) - { - struct Sprite *sprite = &gSprites[spriteId]; - - sprite->data[0] = i % 5; - sprite->data[1] = i / 5; - ((struct Weather2 *)gWeatherPtr)->unknown_140[i] = sprite; - } - else - { - ((struct Weather2 *)gWeatherPtr)->unknown_140[i] = NULL; - } - } - gWeatherPtr->unknown_724 = 1; - } -} - -const struct OamData gOamData_839ABF0 = -{ - .y = 0, - .affineMode = 0, - .objMode = 1, - .mosaic = 0, - .bpp = 0, - .shape = 0, - .x = 0, - .matrixNum = 0, - .size = 3, - .tileNum = 0, - .priority = 2, - .paletteNum = 0, - .affineParam = 0, -}; - -const union AnimCmd gSpriteAnim_839ABF8[] = -{ - ANIMCMD_FRAME(0, 16), - ANIMCMD_END, -}; - -const union AnimCmd *const gSpriteAnimTable_839AC00[] = -{ - gSpriteAnim_839ABF8, -}; - -void sub_807FE3C(struct Sprite *); -const struct SpriteTemplate gSpriteTemplate_839AC04 = -{ - .tileTag = 4611, - .paletteTag = 4608, - .oam = &gOamData_839ABF0, - .anims = gSpriteAnimTable_839AC00, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_807FE3C, -}; - -void sub_807FDE8(void) -{ - u16 i; - - if (gWeatherPtr->unknown_724 != 0) - { - for (i = 0; i < 20; i++) - { - if (((struct Weather2 *)gWeatherPtr)->unknown_140[i] != NULL) - DestroySprite(((struct Weather2 *)gWeatherPtr)->unknown_140[i]); - } - FreeSpriteTilesByTag(0x1203); - gWeatherPtr->unknown_724 = 0; - } -} - -void sub_807FE3C(struct Sprite *sprite) -{ - sprite->pos2.y = gWeatherPtr->unknown_71A; - sprite->pos1.x = gWeatherPtr->unknown_718 + 32 + sprite->data[0] * 64; - if (sprite->pos1.x > 271) - { - sprite->pos1.x = gWeatherPtr->unknown_718 + 0x1E0 - (4 - sprite->data[0]) * 64; - sprite->pos1.x &= 0x1FF; - } -} - -void sub_807FE9C(void) -{ - gWeatherPtr->initStep = 0; - gWeatherPtr->weatherGfxLoaded = 0; - gWeatherPtr->unknown_6C1 = 0; - gWeatherPtr->unknown_6C2 = 20; - if (gWeatherPtr->unknown_716 == 0) - { - gWeatherPtr->unknown_704 = gWeatherPtr->unknown_708 = 0; - gWeatherPtr->unknown_712 = 8; - gWeatherPtr->unknown_714 = 0; - // Dead code. How does the compiler not optimize this out? - if (gWeatherPtr->unknown_712 > 0x5F) - gWeatherPtr->unknown_712 = 0x80 - gWeatherPtr->unknown_712; - Weather_SetBlendCoeffs(0, 16); - } -} - -void sub_807FF4C(void); - -void sub_807FF1C(void) -{ - sub_807FE9C(); - while (gWeatherPtr->weatherGfxLoaded == FALSE) - sub_807FF4C(); -} - -void sub_808002C(void); -void sub_8080064(void); -void sub_8080178(void); -void sub_8080238(void); - -void sub_807FF4C(void) -{ - sub_8080064(); - sub_808002C(); - if (gWeatherPtr->unknown_712 > 0x5F) - gWeatherPtr->unknown_712 = 32; - switch (gWeatherPtr->initStep) - { - case 0: - sub_8080178(); - sub_8080238(); - gWeatherPtr->initStep++; - break; - case 1: - Weather_SetTargetBlendCoeffs(16, 0, 0); - gWeatherPtr->initStep++; - break; - case 2: - if (!Weather_UpdateBlend()) - break; - gWeatherPtr->weatherGfxLoaded = TRUE; - gWeatherPtr->initStep++; - break; - } -} - -void sub_80800E4(void); - -bool8 sub_807FFC8(void) -{ - sub_8080064(); - sub_808002C(); - switch (gWeatherPtr->unknown_6CE) - { - case 0: - Weather_SetTargetBlendCoeffs(0, 16, 0); - gWeatherPtr->unknown_6CE++; - break; - case 1: - if (!Weather_UpdateBlend()) - break; - gWeatherPtr->unknown_6CE++; - break; - case 2: - sub_80800E4(); - gWeatherPtr->unknown_6CE++; - break; - default: - return FALSE; - } - return TRUE; -} - -void sub_808002C(void) -{ - if (gWeatherPtr->unknown_714++ > 4) - { - gWeatherPtr->unknown_712++; - gWeatherPtr->unknown_714 = 0; - } -} - -void sub_8080064(void) -{ - gWeatherPtr->unknown_704 -= gSineTable[gWeatherPtr->unknown_712] * 4; - gWeatherPtr->unknown_708 -= gSineTable[gWeatherPtr->unknown_712]; - gWeatherPtr->unknown_70E = (gSpriteCoordOffsetX + (gWeatherPtr->unknown_704 >> 8)) & 0xFF; - gWeatherPtr->unknown_710 = gSpriteCoordOffsetY + (gWeatherPtr->unknown_708 >> 8); -} - -void sub_80800E4(void) -{ - u16 i; - - if (gWeatherPtr->unknown_716 != 0) - { - for (i = 0; i < 20; i++) - { - if (((struct Weather2 *)gWeatherPtr)->unknown_190[i] != NULL) - DestroySprite(((struct Weather2 *)gWeatherPtr)->unknown_190[i]); - } - gWeatherPtr->unknown_716 = 0; - FreeSpriteTilesByTag(0x1204); - } - - if (gWeatherPtr->unknown_717 != 0) - { - for (i = 0; i < 5; i++) - { - if (((struct Weather2 *)gWeatherPtr)->unknown_1E0[i] != NULL) - DestroySprite(((struct Weather2 *)gWeatherPtr)->unknown_1E0[i]); - } - gWeatherPtr->unknown_717 = 0; - } -} - -const struct OamData gOamData_839AC1C = -{ - .y = 0, - .affineMode = 0, - .objMode = 1, - .mosaic = 0, - .bpp = 0, - .shape = 0, - .x = 0, - .matrixNum = 0, - .size = 3, - .tileNum = 0, - .priority = 1, - .paletteNum = 0, - .affineParam = 0, -}; - -const union AnimCmd gSpriteAnim_839AC24[] = -{ - ANIMCMD_FRAME(0, 3), - ANIMCMD_END, -}; - -const union AnimCmd gSpriteAnim_839AC2C[] = -{ - ANIMCMD_FRAME(64, 3), - ANIMCMD_END, -}; - -const union AnimCmd *const gSpriteAnimTable_839AC34[] = -{ - gSpriteAnim_839AC24, - gSpriteAnim_839AC2C, -}; - -void sub_8080338(struct Sprite *); -const struct SpriteTemplate gSpriteTemplate_839AC3C = -{ - .tileTag = 4612, - .paletteTag = 4609, - .oam = &gOamData_839AC1C, - .anims = gSpriteAnimTable_839AC34, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8080338, -}; - -const struct SpriteSheet gWeatherSandstormSpriteSheet = {gWeatherSandstormTiles, sizeof(gWeatherSandstormTiles), 0x1204}; - -void sub_8080178(void) -{ - u16 i; - - if (gWeatherPtr->unknown_716 == 0) - { - LoadSpriteSheet(&gWeatherSandstormSpriteSheet); - sub_807D8C0(gUnknown_08397128); - for (i = 0; i < 20; i++) - { - u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839AC3C, 0, (i / 5) * 64, 1); - - if (spriteId != MAX_SPRITES) - { - ((struct Weather2 *)gWeatherPtr)->unknown_190[i] = &gSprites[spriteId]; - ((struct Weather2 *)gWeatherPtr)->unknown_190[i]->data[0] = i % 5; - ((struct Weather2 *)gWeatherPtr)->unknown_190[i]->data[1] = i / 5; - } - else - { - ((struct Weather2 *)gWeatherPtr)->unknown_190[i] = NULL; - } - } - gWeatherPtr->unknown_716 = 1; - } -} - -const u16 gUnknown_0839AC5C[] = {0, 120, 80, 160, 40, 0}; - -void sub_8080398(struct Sprite *); - -void sub_8080238(void) -{ - u16 i; - - if (gWeatherPtr->unknown_717 == 0) - { - for (i = 0; i < 5; i++) - { - u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839AC3C, i * 48 + 0x18, 0xD0, 1); - - if (spriteId != MAX_SPRITES) - { - ((struct Weather2 *)gWeatherPtr)->unknown_1E0[i] = &gSprites[spriteId]; - ((struct Weather2 *)gWeatherPtr)->unknown_1E0[i]->oam.size = 2; - ((struct Weather2 *)gWeatherPtr)->unknown_1E0[i]->data[1] = i * 51; - ((struct Weather2 *)gWeatherPtr)->unknown_1E0[i]->data[0] = 8; - ((struct Weather2 *)gWeatherPtr)->unknown_1E0[i]->data[2] = 0; - ((struct Weather2 *)gWeatherPtr)->unknown_1E0[i]->data[4] = 0x6730; - ((struct Weather2 *)gWeatherPtr)->unknown_1E0[i]->data[3] = gUnknown_0839AC5C[i]; - StartSpriteAnim(((struct Weather2 *)gWeatherPtr)->unknown_1E0[i], 1); - CalcCenterToCornerVec(((struct Weather2 *)gWeatherPtr)->unknown_1E0[i], 0, 2, 0); - ((struct Weather2 *)gWeatherPtr)->unknown_1E0[i]->callback = sub_8080398; - } - else - { - ((struct Weather2 *)gWeatherPtr)->unknown_1E0[i] = NULL; - } - gWeatherPtr->unknown_717 = 1; - } - } -} - -void sub_8080338(struct Sprite *sprite) -{ - sprite->pos2.y = gWeatherPtr->unknown_710; - sprite->pos1.x = gWeatherPtr->unknown_70E + 32 + sprite->data[0] * 64; - if (sprite->pos1.x > 271) - { - sprite->pos1.x = gWeatherPtr->unknown_70E + 0x1E0 - (4 - sprite->data[0]) * 64; - sprite->pos1.x &= 0x1FF; - } -} - -void sub_80803BC(struct Sprite *); - -void sub_8080398(struct Sprite *sprite) -{ - if (--sprite->data[3] == -1) - sprite->callback = sub_80803BC; -} - -void sub_80803BC(struct Sprite *sprite) -{ - u32 x; - u32 y; - - if (--sprite->pos1.y < -48) - { - sprite->pos1.y = 208; - sprite->data[0] = 4; - } - x = sprite->data[0] * gSineTable[sprite->data[1]]; - y = sprite->data[0] * gSineTable[sprite->data[1] + 64]; - sprite->pos2.x = x >> 8; - sprite->pos2.y = y >> 8; - sprite->data[1] = (sprite->data[1] + 10) & 0xFF; - if (++sprite->data[2] > 8) - { - sprite->data[2] = 0; - sprite->data[0]++; - } -} - -void sub_8080430(void) -{ - gWeatherPtr->initStep = 0; - gWeatherPtr->unknown_6C1 = 3; - gWeatherPtr->unknown_6C2 = 20; -} - -void sub_8080460(void) -{ - sub_8080430(); -} - -void nullsub_56(void) -{ -} - -bool8 sub_8080470(void) -{ - return FALSE; -} - -const u8 gUnknown_0839AC68[] = {40, 90, 60, 90, 2, 60, 40, 30}; - -const struct SpriteSheet gWeatherBubbleSpriteSheet = {gWeatherBubbleTiles, sizeof(gWeatherBubbleTiles), 0x1205}; - -void sub_8080474(void) -{ - Fog2_InitVars(); - if (gWeatherPtr->unknown_72E == 0) - { - LoadSpriteSheet(&gWeatherBubbleSpriteSheet); - gWeatherPtr->unknown_728 = 0; - gWeatherPtr->unknown_726 = gUnknown_0839AC68[0]; - gWeatherPtr->unknown_72A = 0; - gWeatherPtr->unknown_72C = 0; - } -} - -void sub_80804F8(void); - -void sub_80804C8(void) -{ - sub_8080474(); - while (gWeatherPtr->weatherGfxLoaded == FALSE) - sub_80804F8(); -} - -void sub_8080588(u16); - -void sub_80804F8(void) -{ - Fog2_Main(); - if (++gWeatherPtr->unknown_726 > gUnknown_0839AC68[gWeatherPtr->unknown_728]) - { - gWeatherPtr->unknown_726 = 0; - if (++gWeatherPtr->unknown_728 > 7) - gWeatherPtr->unknown_728 = 0; - sub_8080588(gWeatherPtr->unknown_72A); - if (++gWeatherPtr->unknown_72A > 12) - gWeatherPtr->unknown_72A = 0; - } -} - -void sub_8080610(void); - -bool8 sub_808056C(void) -{ - if (!Fog2_Finish()) - { - sub_8080610(); - return FALSE; - } - return TRUE; -} - -const s16 gUnknown_0839AC78[][2] = -{ - {120, 160}, - {376, 160}, - { 40, 140}, - {296, 140}, - {180, 130}, - {436, 130}, - { 60, 160}, - {436, 160}, - {220, 180}, - {476, 180}, - { 10, 90}, - {266, 90}, - {256, 160}, -}; - -const union AnimCmd gSpriteAnim_839ACAC[] = -{ - ANIMCMD_FRAME(0, 16), - ANIMCMD_FRAME(1, 16), - ANIMCMD_END, -}; - -const union AnimCmd *const gSpriteAnimTable_839ACB8[] = -{ - gSpriteAnim_839ACAC, -}; - -extern const struct OamData gOamData_837DF24; - -void unc_0807DAB4(struct Sprite *); -const struct SpriteTemplate gSpriteTemplate_839ACBC = -{ - .tileTag = 4613, - .paletteTag = 4608, - .oam = &gOamData_837DF24, - .anims = gSpriteAnimTable_839ACB8, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = unc_0807DAB4, -}; - -void sub_8080588(u16 a) -{ - s16 x = gUnknown_0839AC78[a][0]; - s16 y = gUnknown_0839AC78[a][1] - gSpriteCoordOffsetY; - u8 spriteId = CreateSpriteAtEnd( - &gSpriteTemplate_839ACBC, - x, - y, - 0); - - if (spriteId != MAX_SPRITES) - { - gSprites[spriteId].oam.priority = 1; - gSprites[spriteId].coordOffsetEnabled = TRUE; - gSprites[spriteId].data[0] = 0; - gSprites[spriteId].data[1] = 0; - gSprites[spriteId].data[2] = 0; - gWeatherPtr->unknown_72C++; - } -} - -void sub_8080610(void) -{ - u16 i; - - for (i = 0; i < 64; i++) - { - if (gSprites[i].template == &gSpriteTemplate_839ACBC) - DestroySprite(&gSprites[i]); - } - FreeSpriteTilesByTag(0x1205); -} - -void unc_0807DAB4(struct Sprite *sprite) -{ - ++sprite->data[0]; - if (++sprite->data[0] > 8) // double increment - { - sprite->data[0] = 0; - if (sprite->data[1] == 0) - { - if (++sprite->pos2.x > 4) - sprite->data[1] = 1; - } - else - { - if (--sprite->pos2.x <= 0) - sprite->data[1] = 0; - } - } - sprite->pos1.y -= 3; - if (++sprite->data[2] > 0x77) - DestroySprite(sprite); -} - -u8 TranslateWeatherNum(u8); -void UpdateRainCounter(u8, u8); - -void SetSav1Weather(u32 weather) -{ - u8 oldWeather = gSaveBlock1.weather; - - gSaveBlock1.weather = TranslateWeatherNum(weather); - UpdateRainCounter(gSaveBlock1.weather, oldWeather); -} - -u8 GetSav1Weather(void) -{ - return gSaveBlock1.weather; -} - -void SetSav1WeatherFromCurrMapHeader(void) -{ - u8 oldWeather = gSaveBlock1.weather; - - gSaveBlock1.weather = TranslateWeatherNum(gMapHeader.weather); - UpdateRainCounter(gSaveBlock1.weather, oldWeather); -} - -void SetWeather(u32 weather) -{ - SetSav1Weather(weather); - DoWeatherEffect(GetSav1Weather()); -} - -void SetWeather_Unused(u32 weather) -{ - SetSav1Weather(weather); - sub_807C988(GetSav1Weather()); -} - -void DoCurrentWeather(void) -{ - DoWeatherEffect(GetSav1Weather()); -} - -void sub_8080750(void) -{ - sub_807C988(GetSav1Weather()); -} - -static const u8 sWeatherCycle1[] = {2, 3, 5, 3}; -static const u8 sWeatherCycle2[] = {2, 2, 3, 2}; - -u8 TranslateWeatherNum(u8 weather) -{ - switch (weather) - { - case 0: return 0; - case 1: return 1; - case 2: return 2; - case 3: return 3; - case 4: return 4; - case 5: return 5; - case 6: return 6; - case 7: return 7; - case 8: return 8; - case 9: return 9; - case 10: return 10; - case 11: return 11; - case 12: return 12; - case 13: return 13; - case 14: return 14; - case 20: return sWeatherCycle1[gSaveBlock1.filler_2F]; - case 21: return sWeatherCycle2[gSaveBlock1.filler_2F]; - default: return 0; - } -} - -void UpdateWeatherPerDay(u16 increment) -{ - u16 weatherStage = gSaveBlock1.filler_2F + increment; - weatherStage %= 4; - gSaveBlock1.filler_2F = weatherStage; -} - -void UpdateRainCounter(u8 newWeather, u8 oldWeather) -{ - if (newWeather != oldWeather - && (newWeather == WEATHER_RAIN_LIGHT || newWeather == WEATHER_RAIN_MED)) - IncrementGameStat(0x28); -} diff --git a/src/field/field_weather_effects.c b/src/field/field_weather_effects.c new file mode 100644 index 000000000..1ae2d6e56 --- /dev/null +++ b/src/field/field_weather_effects.c @@ -0,0 +1,2359 @@ +#include "global.h" +#include "field_map_obj.h" +#include "field_weather.h" +#include "overworld.h" +#include "rng.h" +#include "script.h" +#include "songs.h" +#include "sound.h" +#include "sprite.h" +#include "task.h" +#include "trig.h" + +extern struct Weather *const gWeatherPtr; + +const u16 gUnknown_08397108[] = INCBIN_U16("graphics/weather/1.gbapal"); +const u16 gUnknown_08397128[] = INCBIN_U16("graphics/weather/2.gbapal"); +const u8 gWeatherFog1Tiles[] = INCBIN_U8("graphics/weather/fog1.4bpp"); +const u8 gWeatherFog2Tiles[] = INCBIN_U8("graphics/weather/fog2.4bpp"); +const u8 gWeatherCloudTiles[] = INCBIN_U8("graphics/weather/cloud.4bpp"); +const u8 gWeatherSnow1Tiles[] = INCBIN_U8("graphics/weather/snow0.4bpp"); +const u8 gWeatherSnow2Tiles[] = INCBIN_U8("graphics/weather/snow1.4bpp"); +const u8 gWeatherBubbleTiles[] = INCBIN_U8("graphics/weather/bubble.4bpp"); +const u8 gWeatherAshTiles[] = INCBIN_U8("graphics/weather/ash.4bpp"); +const u8 gWeatherRainTiles[] = INCBIN_U8("graphics/weather/rain.4bpp"); +const u8 gWeatherSandstormTiles[] = INCBIN_U8("graphics/weather/sandstorm.4bpp"); + +static const struct Coords16 gUnknown_0839A9C8[] = +{ + { 0, 66}, + { 5, 73}, + {10, 78}, +}; + +static const struct SpriteSheet sCloudSpriteSheet = {gWeatherCloudTiles, 0x800, 0x1200}; + +static const struct OamData gOamData_839A9DC = +{ + .y = 0, + .affineMode = 0, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 3, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd gSpriteAnim_839A9E4[] = +{ + ANIMCMD_FRAME(0, 16), + ANIMCMD_END, +}; + +static const union AnimCmd *const gSpriteAnimTable_839A9EC[] = +{ + gSpriteAnim_839A9E4, +}; + +void sub_807E0F4(struct Sprite *); +static const struct SpriteTemplate sCloudSpriteTemplate = +{ + .tileTag = 4608, + .paletteTag = 4609, + .oam = &gOamData_839A9DC, + .anims = gSpriteAnimTable_839A9EC, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_807E0F4, +}; + +extern void sub_807D5BC(s8 a); +extern void sub_807D8C0(const u16 *palette); +extern void sub_807D9A8(void); +extern bool8 sub_807D9C8(void); +extern void sub_807DA14(void); +extern void sub_807DA4C(void); +extern void Weather_SetTargetBlendCoeffs(u8 a, u8 b, int c); +extern bool8 Weather_UpdateBlend(void); +extern void SetRainStrengthFromSoundEffect(u16 sndEff); +extern void sub_807D5F0(u8 a, u8 b, u8 c); + +//------------------------------------------------------------------------------ +// Clouds +//------------------------------------------------------------------------------ + +void Clouds_InitVars(void) +{ + gWeatherPtr->unknown_6C1 = 0; + gWeatherPtr->unknown_6C2 = 20; + gWeatherPtr->weatherGfxLoaded = FALSE; + gWeatherPtr->initStep = 0; + if (gWeatherPtr->cloudsActive == FALSE) + Weather_SetBlendCoeffs(0, 16); +} + +void Clouds_Main(void); + +void Clouds_InitAll(void) +{ + Clouds_InitVars(); + while (gWeatherPtr->weatherGfxLoaded == FALSE) + Clouds_Main(); +} + +void CreateCloudSprites(void); + +void Clouds_Main(void) +{ + switch (gWeatherPtr->initStep) + { + case 0: + CreateCloudSprites(); + gWeatherPtr->initStep++; + break; + case 1: + Weather_SetTargetBlendCoeffs(12, 8, 1); + gWeatherPtr->initStep++; + break; + case 2: + if (Weather_UpdateBlend()) + { + gWeatherPtr->weatherGfxLoaded = TRUE; + gWeatherPtr->initStep++; + } + break; + } +} + +void sub_807E0A0(void); + +bool8 Clouds_Finish(void) +{ + switch (gWeatherPtr->unknown_6CE) + { + case 0: + Weather_SetTargetBlendCoeffs(0, 16, 1); + gWeatherPtr->unknown_6CE++; + return TRUE; + case 1: + if (Weather_UpdateBlend()) + { + sub_807E0A0(); + gWeatherPtr->unknown_6CE++; + } + return TRUE; + } + return FALSE; +} + +void sub_807DF9C(void) +{ + gWeatherPtr->unknown_6C1 = 0; + gWeatherPtr->unknown_6C2 = 20; +} + +void sub_807DFC0(void) +{ + sub_807DF9C(); +} + +void nullsub_55(void) +{ +} + +int sub_807DFD0(void) +{ + return 0; +} + +void CreateCloudSprites(void) +{ + u16 i; + + if (gWeatherPtr->cloudsActive == TRUE) + return; + LoadSpriteSheet(&sCloudSpriteSheet); + sub_807D8C0(gUnknown_08397108); + for (i = 0; i < 3; i++) + { + u8 spriteId = CreateSprite(&sCloudSpriteTemplate, 0, 0, 0xFF); + + if (spriteId != 64) + { + struct Sprite *sprite; + + gWeatherPtr->cloudSprites[i] = &gSprites[spriteId]; + sprite = gWeatherPtr->cloudSprites[i]; + sub_80603CC(gUnknown_0839A9C8[i].x + 7, gUnknown_0839A9C8[i].y + 7, &sprite->pos1.x, &sprite->pos1.y); + sprite->coordOffsetEnabled = TRUE; + } + else + { + gWeatherPtr->cloudSprites[i] = NULL; + } + } + gWeatherPtr->cloudsActive = TRUE; +} + +void sub_807E0A0(void) +{ + u16 i; + + if (gWeatherPtr->cloudsActive == FALSE) + return; + for (i = 0; i < 3; i++) + { + if (gWeatherPtr->cloudSprites[i] != NULL) + DestroySprite(gWeatherPtr->cloudSprites[i]); + } + FreeSpriteTilesByTag(0x1200); + gWeatherPtr->cloudsActive = FALSE; +} + +void sub_807E0F4(struct Sprite *sprite) +{ + sprite->data[0] = (sprite->data[0] + 1) & 1; + if (sprite->data[0] != 0) + sprite->pos1.x--; +} + +void sub_807E110(void) +{ + gWeatherPtr->initStep = 0; + gWeatherPtr->weatherGfxLoaded = FALSE; + gWeatherPtr->unknown_6C1 = 0; + gWeatherPtr->unknown_6C2 = 0; +} + +void sub_807E174(void); + +void sub_807E144(void) +{ + sub_807E110(); + while (gWeatherPtr->weatherGfxLoaded == FALSE) + sub_807E174(); +} + +void sub_807E174(void) +{ + switch (gWeatherPtr->initStep) + { + case 0: + if (gWeatherPtr->unknown_6C6 != 0) + gWeatherPtr->initStep++; + break; + case 1: + sub_807D9A8(); + gWeatherPtr->initStep++; + break; + case 2: + if (sub_807D9C8() == FALSE) + gWeatherPtr->initStep++; + break; + case 3: + sub_807DA14(); + gWeatherPtr->initStep++; + break; + case 4: + sub_807DA4C(); + if (gWeatherPtr->unknown_73C == 6) + { + gWeatherPtr->weatherGfxLoaded = TRUE; + gWeatherPtr->initStep++; + } + break; + default: + sub_807DA4C(); + break; + } +} + +int sub_807E258(void) +{ + return 0; +} + +void task50_0807B6D4(u8); + +void sub_807E25C(void) +{ + CreateTask(task50_0807B6D4, 0x50); +} + +#define tState data[0] +#define tBlendY data[1] +#define tBlendDelay data[2] +#define tWinRange data[3] + +void task50_0807B6D4(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->tState) + { + case 0: + task->tBlendY = 0; + task->tBlendDelay = 0; + task->tWinRange = REG_WININ; + REG_WININ = WIN_RANGE(63, 63); + REG_BLDCNT = BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ + | BLDCNT_EFFECT_LIGHTEN; + REG_BLDY = 0; + task->tState++; + // fall through + case 1: + task->tBlendY += 3; + if (task->tBlendY > 16) + task->tBlendY = 16; + REG_BLDY = task->tBlendY; + if (task->tBlendY >= 16) + task->tState++; + break; + case 2: + task->tBlendDelay++; + if (task->tBlendDelay > 9) + { + task->tBlendDelay = 0; + task->tBlendY--; + if (task->tBlendY <= 0) + { + task->tBlendY = 0; + task->tState++; + } + REG_BLDY = task->tBlendY; + } + break; + case 3: + REG_BLDCNT = 0; + REG_BLDY = 0; + REG_WININ = task->tWinRange; + task->tState++; + break; + case 4: + EnableBothScriptContexts(); + DestroyTask(taskId); + break; + } +} + +#undef tState +#undef tBlendY +#undef tBlendDelay +#undef tWinRange + +//------------------------------------------------------------------------------ +// Light Rain +//------------------------------------------------------------------------------ + +void LightRain_InitVars(void) +{ + gWeatherPtr->initStep = 0; + gWeatherPtr->weatherGfxLoaded = FALSE; + gWeatherPtr->unknown_6D6 = 0; + gWeatherPtr->unknown_6DB = 8; + gWeatherPtr->unknown_6DC = 0; + gWeatherPtr->unknown_6D9 = 10; + gWeatherPtr->unknown_6C1 = 3; + gWeatherPtr->unknown_6C2 = 20; + SetRainStrengthFromSoundEffect(SE_T_KOAME); +} + +void LightRain_Main(void); + +void LightRain_InitAll(void) +{ + LightRain_InitVars(); + while (gWeatherPtr->weatherGfxLoaded == FALSE) + LightRain_Main(); +} + +void LoadRainSpriteSheet(void); +u8 CreateRainSprites(void); +u8 sub_807E8E8(void); + +void LightRain_Main(void) +{ + switch (gWeatherPtr->initStep) + { + case 0: + LoadRainSpriteSheet(); + gWeatherPtr->initStep++; + break; + case 1: + if (CreateRainSprites() == 0) + gWeatherPtr->initStep++; + break; + case 2: + if (sub_807E8E8() == FALSE) + { + gWeatherPtr->weatherGfxLoaded = TRUE; + gWeatherPtr->initStep++; + } + break; + } +} + +void sub_807E974(void); + +bool8 LightRain_Finish(void) +{ + switch (gWeatherPtr->unknown_6CE) + { + case 0: + if (gWeatherPtr->nextWeather == WEATHER_RAIN_LIGHT + || gWeatherPtr->nextWeather == WEATHER_RAIN_MED + || gWeatherPtr->nextWeather == WEATHER_RAIN_HEAVY) + { + gWeatherPtr->unknown_6CE = 0xFF; + return FALSE; + } + else + { + gWeatherPtr->unknown_6D9 = 0; + gWeatherPtr->unknown_6CE++; + } + // fall through + case 1: + if (sub_807E8E8() == FALSE) + { + sub_807E974(); + gWeatherPtr->unknown_6CE++; + return FALSE; + } + return TRUE; + } + return FALSE; +} + +// defined below +extern const s16 gUnknown_0839AABC[][2]; +extern const u16 gUnknown_0839AAC4[][2]; + +void sub_807E4EC(struct Sprite *sprite) +{ + u32 randVal; + u16 r6; + s32 r4; + s32 r0; + + if (sprite->data[1] == 0) + sprite->data[1] = 361; + randVal = sprite->data[1] * 1103515245 + 12345; + sprite->data[1] = ((randVal & 0x7FFF0000) >> 16) % 600; + + r6 = gUnknown_0839AAC4[gWeatherPtr->unknown_6DC][0]; + + r4 = sprite->data[1] % 30; + sprite->data[2] = r4 * 8; // useless assignment + + r0 = sprite->data[1] / 30; + sprite->data[3] = r0 * 8; // useless assignment + + sprite->data[2] = r4; + sprite->data[2] <<= 7; + + sprite->data[3] = r0; + sprite->data[3] <<= 7; + + sprite->data[2] -= gUnknown_0839AABC[gWeatherPtr->unknown_6DC][0] * r6; + sprite->data[3] -= gUnknown_0839AABC[gWeatherPtr->unknown_6DC][1] * r6; + + StartSpriteAnim(sprite, 0); + sprite->data[4] = 0; + sprite->coordOffsetEnabled = FALSE; + sprite->data[0] = r6; +} + +void sub_807E5C0(struct Sprite *sprite) +{ + if (sprite->data[4] == 0) + { + sprite->data[2] += gUnknown_0839AABC[gWeatherPtr->unknown_6DC][0]; + sprite->data[3] += gUnknown_0839AABC[gWeatherPtr->unknown_6DC][1]; + sprite->pos1.x = sprite->data[2] >> 4; + sprite->pos1.y = sprite->data[3] >> 4; + + if (sprite->data[5] != 0 + && (sprite->pos1.x >= -8 && sprite->pos1.x <= 248) + && sprite->pos1.y >= -16 && sprite->pos1.y <= 176) + sprite->invisible = FALSE; + else + sprite->invisible = TRUE; + + sprite->data[0]--; + if (sprite->data[0] == 0) + { + StartSpriteAnim(sprite, gWeatherPtr->unknown_6DC + 1); + sprite->data[4] = 1; + sprite->pos1.x -= gSpriteCoordOffsetX; + sprite->pos1.y -= gSpriteCoordOffsetY; + sprite->coordOffsetEnabled = TRUE; + } + } + else if (sprite->animEnded) + { + sprite->invisible = TRUE; + sub_807E4EC(sprite); + } +} + +void sub_807E6C4(struct Sprite *sprite) +{ + if (sprite->data[0] == 0) + { + sub_807E4EC(sprite); + sprite->callback = sub_807E5C0; + } + else + { + sprite->data[0]--; + } +} + +void sub_807E6F0(struct Sprite *sprite, u16 b) +{ + u16 r8 = gUnknown_0839AAC4[gWeatherPtr->unknown_6DC][0]; + u16 r6 = b / (gUnknown_0839AAC4[gWeatherPtr->unknown_6DC][1] + r8); + u16 r4 = b % (gUnknown_0839AAC4[gWeatherPtr->unknown_6DC][1] + r8); + + while (--r6 != 0xFFFF) + sub_807E4EC(sprite); + if (r4 < r8) + { + while (--r4 != 0xFFFF) + sub_807E5C0(sprite); + sprite->data[6] = 0; + } + else + { + sprite->data[0] = r4 - r8; + sprite->invisible = TRUE; + sprite->data[6] = 1; + } +} + +extern const struct SpriteSheet sRainSpriteSheet; // defined below + +void LoadRainSpriteSheet(void) +{ + LoadSpriteSheet(&sRainSpriteSheet); +} + +const struct Coords16 gUnknown_0839AA08[] = +{ + { 0, 0}, + { 0, 160}, + { 0, 64}, + {144, 224}, + {144, 128}, + { 32, 32}, + { 32, 192}, + { 32, 96}, + { 72, 128}, + { 72, 32}, + { 72, 192}, + {216, 96}, + {216, 0}, + {104, 160}, + {104, 64}, + {104, 224}, + {144, 0}, + {144, 160}, + {144, 64}, + { 32, 224}, + { 32, 128}, + { 72, 32}, + { 72, 192}, + { 48, 96}, +}; + +static const struct OamData gOamData_839AA68 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 2, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 1, + .paletteNum = 2, + .affineParam = 0, +}; + +static const union AnimCmd gSpriteAnim_839AA70[] = +{ + ANIMCMD_FRAME(0, 16), + ANIMCMD_JUMP(0), +}; + +static const union AnimCmd gSpriteAnim_839AA78[] = +{ + ANIMCMD_FRAME(8, 3), + ANIMCMD_FRAME(32, 2), + ANIMCMD_FRAME(40, 2), + ANIMCMD_END, +}; + +static const union AnimCmd gSpriteAnim_839AA88[] = +{ + ANIMCMD_FRAME(8, 3), + ANIMCMD_FRAME(16, 3), + ANIMCMD_FRAME(24, 4), + ANIMCMD_END, +}; + +static const union AnimCmd *const gSpriteAnimTable_839AA98[] = +{ + gSpriteAnim_839AA70, + gSpriteAnim_839AA78, + gSpriteAnim_839AA88, +}; + +static const struct SpriteTemplate sRainSpriteTemplate = +{ + .tileTag = 4614, + .paletteTag = 4608, + .oam = &gOamData_839AA68, + .anims = gSpriteAnimTable_839AA98, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_807E5C0, +}; + + +const s16 gUnknown_0839AABC[][2] = +{ + {-104, 208}, + {-160, 320}, +}; + +const u16 gUnknown_0839AAC4[][2] = +{ + {18, 7}, + {12, 10}, +}; + +static const struct SpriteSheet sRainSpriteSheet = {gWeatherRainTiles, sizeof(gWeatherRainTiles), 0x1206}; + +static const struct OamData gOamData_839AAD4 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const struct SpriteFrameImage gSpriteImageTable_839AADC[] = +{ + {gWeatherSnow1Tiles, sizeof(gWeatherSnow1Tiles)}, + {gWeatherSnow2Tiles, sizeof(gWeatherSnow2Tiles)}, +}; + +static const union AnimCmd gSpriteAnim_839AAEC[] = +{ + ANIMCMD_FRAME(0, 16), + ANIMCMD_END, +}; + +static const union AnimCmd gSpriteAnim_839AAF4[] = +{ + ANIMCMD_FRAME(1, 16), + ANIMCMD_END, +}; + +static const union AnimCmd *const gSpriteAnimTable_839AAFC[] = +{ + gSpriteAnim_839AAEC, + gSpriteAnim_839AAF4, +}; + +void sub_807ED48(struct Sprite *); +static const struct SpriteTemplate sSnowflakeSpriteTemplate = +{ + .tileTag = 0xFFFF, + .paletteTag = 4608, + .oam = &gOamData_839AAD4, + .anims = gSpriteAnimTable_839AAFC, + .images = gSpriteImageTable_839AADC, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_807ED48, +}; + +// unused data +static const u16 unusedData_839AB1C[] = {0, 6, 6, 12, 18, 42, 300, 300}; + +static const struct OamData gOamData_839AB2C = +{ + .y = 0, + .affineMode = 0, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd gSpriteAnim_839AB34[] = +{ + ANIMCMD_FRAME(0, 16), + ANIMCMD_END, +}; + +static const union AnimCmd gSpriteAnim_839AB3C[] = +{ + ANIMCMD_FRAME(32, 16), + ANIMCMD_END, +}; + +static const union AnimCmd gSpriteAnim_839AB44[] = +{ + ANIMCMD_FRAME(64, 16), + ANIMCMD_END, +}; + +static const union AnimCmd gSpriteAnim_839AB4C[] = +{ + ANIMCMD_FRAME(96, 16), + ANIMCMD_END, +}; + +static const union AnimCmd gSpriteAnim_839AB54[] = +{ + ANIMCMD_FRAME(128, 16), + ANIMCMD_END, +}; + +static const union AnimCmd gSpriteAnim_839AB5C[] = +{ + ANIMCMD_FRAME(160, 16), + ANIMCMD_END, +}; + +static const union AnimCmd *const gSpriteAnimTable_839AB64[] = +{ + gSpriteAnim_839AB34, + gSpriteAnim_839AB3C, + gSpriteAnim_839AB44, + gSpriteAnim_839AB4C, + gSpriteAnim_839AB54, + gSpriteAnim_839AB5C, +}; + +static const union AffineAnimCmd gSpriteAffineAnim_839AB7C[] = +{ + AFFINEANIMCMD_FRAME(0x200, 0x200, 0, 0), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd *const gSpriteAffineAnimTable_839AB8C[] = +{ + gSpriteAffineAnim_839AB7C, +}; + +static void Fog2SpriteCallback(struct Sprite *); +static const struct SpriteTemplate sFog2SpriteTemplate = +{ + .tileTag = 4609, + .paletteTag = 4608, + .oam = &gOamData_839AB2C, + .anims = gSpriteAnimTable_839AB64, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_839AB8C, + .callback = Fog2SpriteCallback, +}; + +bool8 CreateRainSprites(void) +{ + u8 r7; + u8 spriteId; + + if (gWeatherPtr->unknown_6DA == 24) + return FALSE; + + r7 = gWeatherPtr->unknown_6DA; + spriteId = CreateSpriteAtEnd(&sRainSpriteTemplate, + gUnknown_0839AA08[r7].x, gUnknown_0839AA08[r7].y, 78); + if (spriteId != 64) + { + gSprites[spriteId].data[5] = 0; + gSprites[spriteId].data[1] = r7 * 145; + while (gSprites[spriteId].data[1] >= 600) + gSprites[spriteId].data[1] -= 600; + sub_807E4EC(&gSprites[spriteId]); + sub_807E6F0(&gSprites[spriteId], r7 * 9); + gSprites[spriteId].invisible = TRUE; + gWeatherPtr->rainSprites[r7] = &gSprites[spriteId]; + } + else + { + gWeatherPtr->rainSprites[r7] = NULL; + } + + if (++gWeatherPtr->unknown_6DA == 24) + { + u16 i; + + for (i = 0; i < 24; i++) + { + if (gWeatherPtr->rainSprites[i] != NULL) + { + if (gWeatherPtr->rainSprites[i]->data[6] == 0) + gWeatherPtr->rainSprites[i]->callback = sub_807E5C0; + else + gWeatherPtr->rainSprites[i]->callback = sub_807E6C4; + } + } + return FALSE; + } + return TRUE; +} + +bool8 sub_807E8E8(void) +{ + if (gWeatherPtr->unknown_6D8 == gWeatherPtr->unknown_6D9) + return FALSE; + + if (++gWeatherPtr->unknown_6D6 > gWeatherPtr->unknown_6DB) + { + gWeatherPtr->unknown_6D6 = 0; + if (gWeatherPtr->unknown_6D8 < gWeatherPtr->unknown_6D9) + { + gWeatherPtr->rainSprites[gWeatherPtr->unknown_6D8++]->data[5] = 1; + } + else + { + gWeatherPtr->unknown_6D8--; + gWeatherPtr->rainSprites[gWeatherPtr->unknown_6D8]->data[5] = 0; + gWeatherPtr->rainSprites[gWeatherPtr->unknown_6D8]->invisible = TRUE; + } + } + return TRUE; +} + +void sub_807E974(void) +{ + u16 i; + + for (i = 0; i < gWeatherPtr->unknown_6DA; i++) + { + if (gWeatherPtr->rainSprites[i] != NULL) + DestroySprite(gWeatherPtr->rainSprites[i]); + } + gWeatherPtr->unknown_6DA = 0; + FreeSpriteTilesByTag(0x1206); +} + +//------------------------------------------------------------------------------ +// Snow +//------------------------------------------------------------------------------ + +void Snow_InitVars(void) +{ + gWeatherPtr->initStep = 0; + gWeatherPtr->weatherGfxLoaded = FALSE; + gWeatherPtr->unknown_6C1 = 3; + gWeatherPtr->unknown_6C2 = 20; + gWeatherPtr->unknown_6E5 = 16; + gWeatherPtr->unknown_6E0 = 0; +} + +void Snow_Main(void); +void sub_807ED48(struct Sprite *); + +void Snow_InitAll(void) +{ + Snow_InitVars(); + while (gWeatherPtr->weatherGfxLoaded == FALSE) + { + u16 i; + + Snow_Main(); + for (i = 0; i < gWeatherPtr->snowflakeSpriteCount; i++) + { + sub_807ED48(gWeatherPtr->snowflakeSprites[i]); + } + } +} + +u8 snowflakes_progress(void); + +void Snow_Main(void) +{ + if (gWeatherPtr->initStep == 0 && snowflakes_progress() == FALSE) + { + gWeatherPtr->weatherGfxLoaded = TRUE; + gWeatherPtr->initStep++; + } +} + +bool8 Snow_Finish(void) +{ + switch (gWeatherPtr->unknown_6CE) + { + case 0: + gWeatherPtr->unknown_6E5 = 0; + gWeatherPtr->unknown_6E0 = 0; + gWeatherPtr->unknown_6CE++; + // fall through + case 1: + if (snowflakes_progress() == FALSE) + { + gWeatherPtr->unknown_6CE++; + return FALSE; + } + return TRUE; + } + return FALSE; +} + +bool8 CreateSnowflakeSprite(void); +bool8 RemoveSnowflakeSprite(void); + +bool8 snowflakes_progress(void) +{ + if (gWeatherPtr->snowflakeSpriteCount == gWeatherPtr->unknown_6E5) + return FALSE; + + gWeatherPtr->unknown_6E0++; + if (gWeatherPtr->unknown_6E0 > 36) + { + gWeatherPtr->unknown_6E0 = 0; + if (gWeatherPtr->snowflakeSpriteCount < gWeatherPtr->unknown_6E5) + CreateSnowflakeSprite(); + else + RemoveSnowflakeSprite(); + } + return (gWeatherPtr->snowflakeSpriteCount != gWeatherPtr->unknown_6E5); +} + +void sub_807EC40(struct Sprite *); + +bool8 CreateSnowflakeSprite(void) +{ + u8 spriteId = CreateSpriteAtEnd(&sSnowflakeSpriteTemplate, 0, 0, 78); + + if (spriteId == 64) + return FALSE; + gSprites[spriteId].data[4] = gWeatherPtr->snowflakeSpriteCount; + sub_807EC40(&gSprites[spriteId]); + gSprites[spriteId].coordOffsetEnabled = TRUE; + gWeatherPtr->snowflakeSprites[gWeatherPtr->snowflakeSpriteCount++] = &gSprites[spriteId]; + return TRUE; +} + +bool8 RemoveSnowflakeSprite(void) +{ + if (gWeatherPtr->snowflakeSpriteCount != 0) + { + DestroySprite(gWeatherPtr->snowflakeSprites[--gWeatherPtr->snowflakeSpriteCount]); + return TRUE; + } + return FALSE; +} + +void sub_807EC40(struct Sprite *sprite) +{ + u16 r4 = ((sprite->data[4] * 5) & 7) * 30 + (Random() % 30); + u16 r6; + + sprite->pos1.y = -3 - (gSpriteCoordOffsetY + sprite->centerToCornerVecY); + sprite->pos1.x = r4 - (gSpriteCoordOffsetX + sprite->centerToCornerVecX); + sprite->data[0] = sprite->pos1.y * 128; + sprite->pos2.x = 0; + r6 = Random(); + sprite->data[1] = (r6 & 3) * 5 + 64; + sprite->data[7] = (r6 & 3) * 5 + 64; + StartSpriteAnim(sprite, (r6 & 1) ? 0 : 1); + sprite->data[3] = 0; + sprite->data[2] = ((r6 & 3) == 0) ? 2 : 1; + sprite->data[6] = (r6 & 0x1F) + 210; + sprite->data[5] = 0; +} + +void sub_807ECEC(struct Sprite *sprite) +{ + if (gWeatherPtr->unknown_6E2 > 18) + { + sprite->invisible = FALSE; + sprite->callback = sub_807ED48; + sprite->pos1.y = 0xFA - (gSpriteCoordOffsetY + sprite->centerToCornerVecY); + sprite->data[0] = sprite->pos1.y * 128; + gWeatherPtr->unknown_6E2 = 0; + } +} + +void sub_807ED48(struct Sprite *sprite) +{ + s16 r3; + s16 r2; + + sprite->data[0] += sprite->data[1]; + sprite->pos1.y = sprite->data[0] >> 7; + sprite->data[3] = (sprite->data[3] + sprite->data[2]) & 0xFF; + sprite->pos2.x = gSineTable[sprite->data[3]] / 64; + + r3 = (sprite->pos1.x + sprite->centerToCornerVecX + gSpriteCoordOffsetX) & 0x1FF; + if (r3 & 0x100) + r3 = -0x100 | r3; // hmm... what is this? + if (r3 < -3) + sprite->pos1.x = 242 - (gSpriteCoordOffsetX + sprite->centerToCornerVecX); + else if (r3 > 242) + sprite->pos1.x = -3 - (gSpriteCoordOffsetX + sprite->centerToCornerVecX); + + r2 = (sprite->pos1.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY) & 0xFF; + if (r2 > 163 && r2 < 171) + { + sprite->pos1.y = 250 - (gSpriteCoordOffsetY + sprite->centerToCornerVecY); + sprite->data[0] = sprite->pos1.y * 128; + sprite->data[5] = 0; + sprite->data[6] = 220; + } + else if (r2 > 242 && r2 < 250) + { + sprite->pos1.y = 163; + sprite->data[0] = sprite->pos1.y * 128; + sprite->data[5] = 0; + sprite->data[6] = 220; + sprite->invisible = TRUE; + sprite->callback = sub_807ECEC; + } + + sprite->data[5]++; + if (sprite->data[5] == sprite->data[6]) + { + sub_807EC40(sprite); + sprite->pos1.y = 250; + sprite->invisible = TRUE; + sprite->callback = sub_807ECEC; + } +} + +//------------------------------------------------------------------------------ +// Medium Rain +//------------------------------------------------------------------------------ + +void MedRain_InitVars(void) +{ + gWeatherPtr->initStep = 0; + gWeatherPtr->weatherGfxLoaded = FALSE; + gWeatherPtr->unknown_6D6 = 0; + gWeatherPtr->unknown_6DB = 4; + gWeatherPtr->unknown_6DC = 0; + gWeatherPtr->unknown_6D9 = 16; + gWeatherPtr->unknown_6C1 = 3; + gWeatherPtr->unknown_6C2 = 20; + gWeatherPtr->weatherGfxLoaded = FALSE; // duplicate assignment + gWeatherPtr->unknown_6ED = 0; + SetRainStrengthFromSoundEffect(SE_T_AME); +} + +void Rain_Main(void); + +void MedRain_InitAll(void) +{ + MedRain_InitVars(); + while (gWeatherPtr->weatherGfxLoaded == FALSE) + Rain_Main(); +} + +//------------------------------------------------------------------------------ +// Heavy Rain +//------------------------------------------------------------------------------ + +void HeavyRain_InitVars(void) +{ + gWeatherPtr->initStep = 0; + gWeatherPtr->weatherGfxLoaded = FALSE; + gWeatherPtr->unknown_6D6 = 0; + gWeatherPtr->unknown_6DB = 4; + gWeatherPtr->unknown_6DC = 1; + gWeatherPtr->unknown_6D9 = 24; + gWeatherPtr->unknown_6C1 = 3; + gWeatherPtr->unknown_6C2 = 20; + gWeatherPtr->weatherGfxLoaded = FALSE; // duplicate assignment + SetRainStrengthFromSoundEffect(SE_T_OOAME); +} + +void HeavyRain_InitAll(void) +{ + HeavyRain_InitVars(); + while (gWeatherPtr->weatherGfxLoaded == FALSE) + Rain_Main(); +} + +void UpdateThunderSound(void); +void SetThunderCounter(u16); + +void Rain_Main(void) +{ + UpdateThunderSound(); + switch (gWeatherPtr->initStep) + { + case 0: + LoadRainSpriteSheet(); + gWeatherPtr->initStep++; + break; + case 1: + if (CreateRainSprites()) + break; + gWeatherPtr->initStep++; + break; + case 2: + if (sub_807E8E8()) + break; + gWeatherPtr->weatherGfxLoaded = TRUE; + gWeatherPtr->initStep++; + break; + case 3: + if (gWeatherPtr->unknown_6C6 == 0) + break; + gWeatherPtr->initStep = 6; + break; + case 4: + gWeatherPtr->unknown_6EA = 1; + gWeatherPtr->unknown_6E6 = (Random() % 360) + 360; + gWeatherPtr->initStep++; + // fall through + case 5: + if (--gWeatherPtr->unknown_6E6 != 0) + break; + gWeatherPtr->initStep++; + break; + case 6: + gWeatherPtr->unknown_6EA = 1; + gWeatherPtr->unknown_6EB = Random() % 2; + gWeatherPtr->initStep++; + break; + case 7: + gWeatherPtr->unknown_6EC = (Random() & 1) + 1; + gWeatherPtr->initStep++; + // fall through + case 8: + sub_807D5BC(19); + if (gWeatherPtr->unknown_6EB == 0 && gWeatherPtr->unknown_6EC == 1) + SetThunderCounter(20); + gWeatherPtr->unknown_6E6 = (Random() % 3) + 6; + gWeatherPtr->initStep++; + break; + case 9: + if (--gWeatherPtr->unknown_6E6 != 0) + break; + sub_807D5BC(3); + gWeatherPtr->unknown_6EA = 1; + if (--gWeatherPtr->unknown_6EC != 0) + { + gWeatherPtr->unknown_6E6 = (Random() % 16) + 60; + gWeatherPtr->initStep = 10; + } + else if (gWeatherPtr->unknown_6EB == 0) + { + gWeatherPtr->initStep = 4; + } + else + { + gWeatherPtr->initStep = 11; + } + break; + case 10: + if (--gWeatherPtr->unknown_6E6 != 0) + break; + gWeatherPtr->initStep = 8; + break; + case 11: + gWeatherPtr->unknown_6E6 = (Random() % 16) + 60; + gWeatherPtr->initStep++; + break; + case 12: + if (--gWeatherPtr->unknown_6E6 != 0) + break; + SetThunderCounter(100); + sub_807D5BC(19); + // Why use "% 16" everywhere else and "& 0xF" here. So dumb. + gWeatherPtr->unknown_6E6 = (Random() & 0xF) + 30; + gWeatherPtr->initStep++; + break; + case 13: + if (--gWeatherPtr->unknown_6E6 != 0) + break; + sub_807D5F0(19, 3, 5); + gWeatherPtr->initStep++; + break; + case 14: + if (gWeatherPtr->unknown_6C6 != 3) + break; + gWeatherPtr->unknown_6EA = 1; + gWeatherPtr->initStep = 4; + break; + } +} + +bool8 Rain_Finish(void) +{ + switch (gWeatherPtr->unknown_6CE) + { + case 0: + gWeatherPtr->unknown_6EA = 0; + gWeatherPtr->unknown_6CE++; + // fall through + case 1: + Rain_Main(); + if (gWeatherPtr->unknown_6EA != 0) + { + if (gWeatherPtr->nextWeather == WEATHER_RAIN_LIGHT + || gWeatherPtr->nextWeather == WEATHER_RAIN_MED + || gWeatherPtr->nextWeather == WEATHER_RAIN_HEAVY) + return FALSE; + gWeatherPtr->unknown_6D9 = 0; + gWeatherPtr->unknown_6CE++; + } + break; + case 2: + if (sub_807E8E8()) + break; + sub_807E974(); + gWeatherPtr->unknown_6ED = 0; + gWeatherPtr->unknown_6CE++; + return FALSE; + default: + return FALSE; + } + return TRUE; +} + +void SetThunderCounter(u16 max) +{ + if (gWeatherPtr->unknown_6ED == 0) + { + gWeatherPtr->thunderCounter = Random() % max; + gWeatherPtr->unknown_6ED = 1; + } +} + +void UpdateThunderSound(void) +{ + if (gWeatherPtr->unknown_6ED == 1) + { + if (gWeatherPtr->thunderCounter == 0) + { + if (IsSEPlaying()) + return; + if (Random() & 1) + PlaySE(SE_T_KAMI); + else + PlaySE(SE_T_KAMI2); + gWeatherPtr->unknown_6ED = 0; + } + else + { + gWeatherPtr->thunderCounter--; + } + } +} + +//------------------------------------------------------------------------------ +// Fog 2 +//------------------------------------------------------------------------------ + +void Fog2_Main(void); +static void CreateFog2Sprites(void); +static void DestroyFog2Sprites(void); + +void Fog2_InitVars(void) +{ + gWeatherPtr->initStep = 0; + gWeatherPtr->weatherGfxLoaded = FALSE; + gWeatherPtr->unknown_6C1 = 0; + gWeatherPtr->unknown_6C2 = 20; + if (gWeatherPtr->unknown_6FB == 0) + { + gWeatherPtr->unknown_6F0 = 0; + gWeatherPtr->unknown_6F2 = 0; + gWeatherPtr->fog2ScrollPosX = 0; + Weather_SetBlendCoeffs(0, 16); + } +} + +void Fog2_InitAll(void) +{ + Fog2_InitVars(); + while (gWeatherPtr->weatherGfxLoaded == FALSE) + Fog2_Main(); +} + +void Fog2_Main(void) +{ + gWeatherPtr->fog2ScrollPosX = (gSpriteCoordOffsetX - gWeatherPtr->unknown_6F2) & 0xFF; + if (++gWeatherPtr->unknown_6F0 > 3) + { + gWeatherPtr->unknown_6F0 = 0; + gWeatherPtr->unknown_6F2++; + } + switch (gWeatherPtr->initStep) + { + case 0: + CreateFog2Sprites(); + if (gWeatherPtr->currWeather == WEATHER_FOG_2) + Weather_SetTargetBlendCoeffs(12, 8, 3); + else + Weather_SetTargetBlendCoeffs(4, 16, 0); + gWeatherPtr->initStep++; + break; + case 1: + if (Weather_UpdateBlend()) + { + gWeatherPtr->weatherGfxLoaded = TRUE; + gWeatherPtr->initStep++; + } + break; + } +} + +bool8 Fog2_Finish(void) +{ + gWeatherPtr->fog2ScrollPosX = (gSpriteCoordOffsetX - gWeatherPtr->unknown_6F2) & 0xFF; + if (++gWeatherPtr->unknown_6F0 > 3) + { + gWeatherPtr->unknown_6F0 = 0; + gWeatherPtr->unknown_6F2++; + } + switch (gWeatherPtr->unknown_6CE) + { + case 0: + Weather_SetTargetBlendCoeffs(0, 16, 3); + gWeatherPtr->unknown_6CE++; + break; + case 1: + if (!Weather_UpdateBlend()) + break; + gWeatherPtr->unknown_6CE++; + break; + case 2: + DestroyFog2Sprites(); + gWeatherPtr->unknown_6CE++; + break; + default: + return FALSE; + } + return TRUE; +} + +#define sprColumn data[0] + +static void Fog2SpriteCallback(struct Sprite *sprite) +{ + sprite->pos2.y = (u8)gSpriteCoordOffsetY; + sprite->pos1.x = gWeatherPtr->fog2ScrollPosX + 32 + sprite->sprColumn * 64; + if (sprite->pos1.x > 0x10F) + { + sprite->pos1.x = 480 + gWeatherPtr->fog2ScrollPosX - (4 - sprite->sprColumn) * 64; + sprite->pos1.x &= 0x1FF; + } +} + +static void CreateFog2Sprites(void) +{ + u16 i; + + if (gWeatherPtr->unknown_6FB == 0) + { + struct SpriteSheet fog2SpriteSheet = {gWeatherFog2Tiles, sizeof(gWeatherFog2Tiles), 0x1201}; + + LoadSpriteSheet(&fog2SpriteSheet); + for (i = 0; i < 20; i++) + { + u8 spriteId = CreateSpriteAtEnd(&sFog2SpriteTemplate, 0, 0, 0xFF); + + if (spriteId != MAX_SPRITES) + { + struct Sprite *sprite = &gSprites[spriteId]; + + sprite->sprColumn = i % 5; + sprite->pos1.x = (i % 5) * 64 + 32; + sprite->pos1.y = (i / 5) * 64 + 32; + ((struct Weather2 *)gWeatherPtr)->fogSprites[i] = sprite; + } + else + { + ((struct Weather2 *)gWeatherPtr)->fogSprites[i] = NULL; + } + } + gWeatherPtr->unknown_6FB = 1; + } +} + +#undef sprColumn + +static void DestroyFog2Sprites(void) +{ + u16 i; + + if (gWeatherPtr->unknown_6FB != 0) + { + for (i = 0; i < 20; i++) + { + if (((struct Weather2 *)gWeatherPtr)->fogSprites[i] != NULL) + DestroySprite(((struct Weather2 *)gWeatherPtr)->fogSprites[i]); + } + FreeSpriteTilesByTag(0x1201); + gWeatherPtr->unknown_6FB = 0; + } +} + +//------------------------------------------------------------------------------ +// Fog 1 +//------------------------------------------------------------------------------ + +void Fog1_InitVars(void) +{ + gWeatherPtr->initStep = 0; + gWeatherPtr->weatherGfxLoaded = FALSE; + gWeatherPtr->unknown_6C1 = 0; + gWeatherPtr->unknown_6C2 = 20; + gWeatherPtr->unknown_6FE = 20; + if (gWeatherPtr->unknown_700 == 0) + { + Weather_SetBlendCoeffs(0, 16); + REG_BLDALPHA = BLDALPHA_BLEND(64, 63); // Those aren't even valid coefficients! + } +} + +void sub_807F888(void); + +void sub_807F858(void) +{ + Fog1_InitVars(); + while (gWeatherPtr->weatherGfxLoaded == FALSE) + sub_807F888(); +} + +void sub_807F99C(void); +void sub_807F9AC(void); + +void sub_807F888(void) +{ + gWeatherPtr->unknown_6FC = gSpriteCoordOffsetX & 0x1FF; + while (gWeatherPtr->unknown_6FC > 0xEF) + gWeatherPtr->unknown_6FC -= 0xF0; + switch (gWeatherPtr->initStep) + { + case 0: + sub_807F99C(); + gWeatherPtr->initStep++; + break; + case 1: + if (gWeatherPtr->unknown_700 == 0) + sub_807F9AC(); + Weather_SetTargetBlendCoeffs(16, 0, 1); + gWeatherPtr->initStep++; + break; + case 2: + if (!Weather_UpdateBlend()) + break; + gWeatherPtr->weatherGfxLoaded = TRUE; + gWeatherPtr->initStep++; + break; + default: + Weather_UpdateBlend(); + break; + } +} + +void sub_807FA54(void); + +bool8 sub_807F934(void) +{ + switch (gWeatherPtr->unknown_6CE) + { + case 0: + Weather_SetTargetBlendCoeffs(0, 16, 1); + gWeatherPtr->unknown_6CE++; + break; + case 1: + if (!Weather_UpdateBlend()) + break; + sub_807FA54(); + gWeatherPtr->unknown_6CE++; + break; + case 2: + REG_BLDALPHA = 0; + gWeatherPtr->unknown_6CE++; + return FALSE; + default: + return FALSE; + } + return TRUE; +} + +const struct SpriteSheet gWeatherAshSpriteSheet = {gWeatherAshTiles, sizeof(gWeatherAshTiles), 0x1202}; + +void sub_807F99C(void) +{ + LoadSpriteSheet(&gWeatherAshSpriteSheet); +} + +const struct OamData gOamData_839ABB8 = +{ + .y = 0, + .affineMode = 0, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 1, + .paletteNum = 15, + .affineParam = 0, +}; + +const union AnimCmd gSpriteAnim_839ABC0[] = +{ + ANIMCMD_FRAME(0, 60), + ANIMCMD_FRAME(64, 60), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd *const gSpriteAnimTable_839ABCC[] = +{ + gSpriteAnim_839ABC0, +}; + +void sub_807FAA8(struct Sprite *); +const struct SpriteTemplate gSpriteTemplate_839ABD0 = +{ + .tileTag = 4610, + .paletteTag = 4608, + .oam = &gOamData_839ABB8, + .anims = gSpriteAnimTable_839ABCC, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_807FAA8, +}; + +void sub_807F9AC(void) +{ + u8 i; + + if (gWeatherPtr->unknown_700 == 0) + { + for (i = 0; i < 20; i++) + { + u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839ABD0, 0, 0, 0x4E); + + if (spriteId != MAX_SPRITES) + { + struct Sprite *sprite = &gSprites[spriteId]; + + sprite->data[1] = 0; + sprite->data[2] = (u8)(i % 5); + sprite->data[3] = (u8)(i / 5); + sprite->data[0] = sprite->data[3] * 64 + 32; + ((struct Weather2 *)gWeatherPtr)->fog1Sprites[i] = sprite; + } + else + { + ((struct Weather2 *)gWeatherPtr)->fog1Sprites[i] = NULL; + } + } + gWeatherPtr->unknown_700 = 1; + } +} + +void sub_807FA54(void) +{ + u16 i; + + if (gWeatherPtr->unknown_700 != 0) + { + for (i = 0; i < 20; i++) + { + if (((struct Weather2 *)gWeatherPtr)->fog1Sprites[i] != NULL) + DestroySprite(((struct Weather2 *)gWeatherPtr)->fog1Sprites[i]); + } + FreeSpriteTilesByTag(0x1202); + gWeatherPtr->unknown_700 = 0; + } +} + +void sub_807FAA8(struct Sprite *sprite) +{ + sprite->data[1]++; + if (sprite->data[1] > 5) + { + sprite->data[1] = 0; + sprite->data[0]++; + } + sprite->pos1.y = gSpriteCoordOffsetY + sprite->data[0]; + sprite->pos1.x = gWeatherPtr->unknown_6FC + 32 + sprite->data[2] * 64; + if (sprite->pos1.x > 271) + { + sprite->pos1.x = gWeatherPtr->unknown_6FC + 0x1E0 - (4 - sprite->data[2]) * 64; + sprite->pos1.x &= 0x1FF; + } +} + +void sub_807FB24(void) +{ + gWeatherPtr->initStep = 0; + gWeatherPtr->weatherGfxLoaded = 0; + gWeatherPtr->unknown_6C1 = 0; + gWeatherPtr->unknown_6C2 = 20; + gWeatherPtr->unknown_6F0 = 0; + gWeatherPtr->unknown_6F2 = 1; + if (gWeatherPtr->unknown_724 == 0) + { + gWeatherPtr->unknown_71C = 0; + gWeatherPtr->unknown_71E = 0; + gWeatherPtr->unknown_720 = 0; + gWeatherPtr->unknown_722 = 0; + gWeatherPtr->unknown_718 = 0; + gWeatherPtr->unknown_71A = 0; + Weather_SetBlendCoeffs(0, 16); + } +} + +void sub_807FBD8(void); + +void sub_807FBA8(void) +{ + sub_807FB24(); + while (gWeatherPtr->weatherGfxLoaded == FALSE) + sub_807FBD8(); +} + +void sub_807FC9C(void); +void sub_807FD30(void); + +void sub_807FBD8(void) +{ + sub_807FC9C(); + switch (gWeatherPtr->initStep) + { + case 0: + sub_807FD30(); + gWeatherPtr->initStep++; + break; + case 1: + Weather_SetTargetBlendCoeffs(12, 8, 8); + gWeatherPtr->initStep++; + break; + case 2: + if (!Weather_UpdateBlend()) + break; + gWeatherPtr->weatherGfxLoaded = TRUE; + gWeatherPtr->initStep++; + break; + } +} + +void sub_807FDE8(void); + +bool8 sub_807FC3C(void) +{ + sub_807FC9C(); + switch (gWeatherPtr->unknown_6CE) + { + case 0: + Weather_SetTargetBlendCoeffs(0, 16, 1); + gWeatherPtr->unknown_6CE++; + break; + case 1: + if (!Weather_UpdateBlend()) + break; + gWeatherPtr->unknown_6CE++; + break; + case 2: + sub_807FDE8(); + gWeatherPtr->unknown_6CE++; + break; + default: + return FALSE; + } + return TRUE; +} + +void sub_807FC9C(void) +{ + if (++gWeatherPtr->unknown_71C > 2) + { + gWeatherPtr->unknown_720++; + gWeatherPtr->unknown_71C = 0; + } + + if (++gWeatherPtr->unknown_71E > 4) + { + gWeatherPtr->unknown_722++; + gWeatherPtr->unknown_71E = 0; + } + + gWeatherPtr->unknown_718 = (gSpriteCoordOffsetX - gWeatherPtr->unknown_720) & 0xFF; + gWeatherPtr->unknown_71A = gSpriteCoordOffsetY + gWeatherPtr->unknown_722; +} + +extern const struct SpriteTemplate gSpriteTemplate_839AC04; // defined below + +void sub_807FD30(void) +{ + u16 i; + + if (gWeatherPtr->unknown_724 == 0) + { + struct SpriteSheet fog1SpriteSheet = {gWeatherFog1Tiles, sizeof(gWeatherFog1Tiles), 0x1203}; + + LoadSpriteSheet(&fog1SpriteSheet); + for (i = 0; i < 20; i++) + { + u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839AC04, 0, (i / 5) * 64, 0xFF); + + if (spriteId != MAX_SPRITES) + { + struct Sprite *sprite = &gSprites[spriteId]; + + sprite->data[0] = i % 5; + sprite->data[1] = i / 5; + ((struct Weather2 *)gWeatherPtr)->unknown_140[i] = sprite; + } + else + { + ((struct Weather2 *)gWeatherPtr)->unknown_140[i] = NULL; + } + } + gWeatherPtr->unknown_724 = 1; + } +} + +const struct OamData gOamData_839ABF0 = +{ + .y = 0, + .affineMode = 0, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const union AnimCmd gSpriteAnim_839ABF8[] = +{ + ANIMCMD_FRAME(0, 16), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_839AC00[] = +{ + gSpriteAnim_839ABF8, +}; + +void sub_807FE3C(struct Sprite *); +const struct SpriteTemplate gSpriteTemplate_839AC04 = +{ + .tileTag = 4611, + .paletteTag = 4608, + .oam = &gOamData_839ABF0, + .anims = gSpriteAnimTable_839AC00, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_807FE3C, +}; + +void sub_807FDE8(void) +{ + u16 i; + + if (gWeatherPtr->unknown_724 != 0) + { + for (i = 0; i < 20; i++) + { + if (((struct Weather2 *)gWeatherPtr)->unknown_140[i] != NULL) + DestroySprite(((struct Weather2 *)gWeatherPtr)->unknown_140[i]); + } + FreeSpriteTilesByTag(0x1203); + gWeatherPtr->unknown_724 = 0; + } +} + +void sub_807FE3C(struct Sprite *sprite) +{ + sprite->pos2.y = gWeatherPtr->unknown_71A; + sprite->pos1.x = gWeatherPtr->unknown_718 + 32 + sprite->data[0] * 64; + if (sprite->pos1.x > 271) + { + sprite->pos1.x = gWeatherPtr->unknown_718 + 0x1E0 - (4 - sprite->data[0]) * 64; + sprite->pos1.x &= 0x1FF; + } +} + +void sub_807FE9C(void) +{ + gWeatherPtr->initStep = 0; + gWeatherPtr->weatherGfxLoaded = 0; + gWeatherPtr->unknown_6C1 = 0; + gWeatherPtr->unknown_6C2 = 20; + if (gWeatherPtr->unknown_716 == 0) + { + gWeatherPtr->unknown_704 = gWeatherPtr->unknown_708 = 0; + gWeatherPtr->unknown_712 = 8; + gWeatherPtr->unknown_714 = 0; + // Dead code. How does the compiler not optimize this out? + if (gWeatherPtr->unknown_712 > 0x5F) + gWeatherPtr->unknown_712 = 0x80 - gWeatherPtr->unknown_712; + Weather_SetBlendCoeffs(0, 16); + } +} + +void sub_807FF4C(void); + +void sub_807FF1C(void) +{ + sub_807FE9C(); + while (gWeatherPtr->weatherGfxLoaded == FALSE) + sub_807FF4C(); +} + +void sub_808002C(void); +void sub_8080064(void); +void sub_8080178(void); +void sub_8080238(void); + +void sub_807FF4C(void) +{ + sub_8080064(); + sub_808002C(); + if (gWeatherPtr->unknown_712 > 0x5F) + gWeatherPtr->unknown_712 = 32; + switch (gWeatherPtr->initStep) + { + case 0: + sub_8080178(); + sub_8080238(); + gWeatherPtr->initStep++; + break; + case 1: + Weather_SetTargetBlendCoeffs(16, 0, 0); + gWeatherPtr->initStep++; + break; + case 2: + if (!Weather_UpdateBlend()) + break; + gWeatherPtr->weatherGfxLoaded = TRUE; + gWeatherPtr->initStep++; + break; + } +} + +void sub_80800E4(void); + +bool8 sub_807FFC8(void) +{ + sub_8080064(); + sub_808002C(); + switch (gWeatherPtr->unknown_6CE) + { + case 0: + Weather_SetTargetBlendCoeffs(0, 16, 0); + gWeatherPtr->unknown_6CE++; + break; + case 1: + if (!Weather_UpdateBlend()) + break; + gWeatherPtr->unknown_6CE++; + break; + case 2: + sub_80800E4(); + gWeatherPtr->unknown_6CE++; + break; + default: + return FALSE; + } + return TRUE; +} + +void sub_808002C(void) +{ + if (gWeatherPtr->unknown_714++ > 4) + { + gWeatherPtr->unknown_712++; + gWeatherPtr->unknown_714 = 0; + } +} + +void sub_8080064(void) +{ + gWeatherPtr->unknown_704 -= gSineTable[gWeatherPtr->unknown_712] * 4; + gWeatherPtr->unknown_708 -= gSineTable[gWeatherPtr->unknown_712]; + gWeatherPtr->unknown_70E = (gSpriteCoordOffsetX + (gWeatherPtr->unknown_704 >> 8)) & 0xFF; + gWeatherPtr->unknown_710 = gSpriteCoordOffsetY + (gWeatherPtr->unknown_708 >> 8); +} + +void sub_80800E4(void) +{ + u16 i; + + if (gWeatherPtr->unknown_716 != 0) + { + for (i = 0; i < 20; i++) + { + if (((struct Weather2 *)gWeatherPtr)->unknown_190[i] != NULL) + DestroySprite(((struct Weather2 *)gWeatherPtr)->unknown_190[i]); + } + gWeatherPtr->unknown_716 = 0; + FreeSpriteTilesByTag(0x1204); + } + + if (gWeatherPtr->unknown_717 != 0) + { + for (i = 0; i < 5; i++) + { + if (((struct Weather2 *)gWeatherPtr)->unknown_1E0[i] != NULL) + DestroySprite(((struct Weather2 *)gWeatherPtr)->unknown_1E0[i]); + } + gWeatherPtr->unknown_717 = 0; + } +} + +const struct OamData gOamData_839AC1C = +{ + .y = 0, + .affineMode = 0, + .objMode = 1, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +const union AnimCmd gSpriteAnim_839AC24[] = +{ + ANIMCMD_FRAME(0, 3), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_839AC2C[] = +{ + ANIMCMD_FRAME(64, 3), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_839AC34[] = +{ + gSpriteAnim_839AC24, + gSpriteAnim_839AC2C, +}; + +void sub_8080338(struct Sprite *); +const struct SpriteTemplate gSpriteTemplate_839AC3C = +{ + .tileTag = 4612, + .paletteTag = 4609, + .oam = &gOamData_839AC1C, + .anims = gSpriteAnimTable_839AC34, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8080338, +}; + +const struct SpriteSheet gWeatherSandstormSpriteSheet = {gWeatherSandstormTiles, sizeof(gWeatherSandstormTiles), 0x1204}; + +void sub_8080178(void) +{ + u16 i; + + if (gWeatherPtr->unknown_716 == 0) + { + LoadSpriteSheet(&gWeatherSandstormSpriteSheet); + sub_807D8C0(gUnknown_08397128); + for (i = 0; i < 20; i++) + { + u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839AC3C, 0, (i / 5) * 64, 1); + + if (spriteId != MAX_SPRITES) + { + ((struct Weather2 *)gWeatherPtr)->unknown_190[i] = &gSprites[spriteId]; + ((struct Weather2 *)gWeatherPtr)->unknown_190[i]->data[0] = i % 5; + ((struct Weather2 *)gWeatherPtr)->unknown_190[i]->data[1] = i / 5; + } + else + { + ((struct Weather2 *)gWeatherPtr)->unknown_190[i] = NULL; + } + } + gWeatherPtr->unknown_716 = 1; + } +} + +const u16 gUnknown_0839AC5C[] = {0, 120, 80, 160, 40, 0}; + +void sub_8080398(struct Sprite *); + +void sub_8080238(void) +{ + u16 i; + + if (gWeatherPtr->unknown_717 == 0) + { + for (i = 0; i < 5; i++) + { + u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839AC3C, i * 48 + 0x18, 0xD0, 1); + + if (spriteId != MAX_SPRITES) + { + ((struct Weather2 *)gWeatherPtr)->unknown_1E0[i] = &gSprites[spriteId]; + ((struct Weather2 *)gWeatherPtr)->unknown_1E0[i]->oam.size = 2; + ((struct Weather2 *)gWeatherPtr)->unknown_1E0[i]->data[1] = i * 51; + ((struct Weather2 *)gWeatherPtr)->unknown_1E0[i]->data[0] = 8; + ((struct Weather2 *)gWeatherPtr)->unknown_1E0[i]->data[2] = 0; + ((struct Weather2 *)gWeatherPtr)->unknown_1E0[i]->data[4] = 0x6730; + ((struct Weather2 *)gWeatherPtr)->unknown_1E0[i]->data[3] = gUnknown_0839AC5C[i]; + StartSpriteAnim(((struct Weather2 *)gWeatherPtr)->unknown_1E0[i], 1); + CalcCenterToCornerVec(((struct Weather2 *)gWeatherPtr)->unknown_1E0[i], 0, 2, 0); + ((struct Weather2 *)gWeatherPtr)->unknown_1E0[i]->callback = sub_8080398; + } + else + { + ((struct Weather2 *)gWeatherPtr)->unknown_1E0[i] = NULL; + } + gWeatherPtr->unknown_717 = 1; + } + } +} + +void sub_8080338(struct Sprite *sprite) +{ + sprite->pos2.y = gWeatherPtr->unknown_710; + sprite->pos1.x = gWeatherPtr->unknown_70E + 32 + sprite->data[0] * 64; + if (sprite->pos1.x > 271) + { + sprite->pos1.x = gWeatherPtr->unknown_70E + 0x1E0 - (4 - sprite->data[0]) * 64; + sprite->pos1.x &= 0x1FF; + } +} + +void sub_80803BC(struct Sprite *); + +void sub_8080398(struct Sprite *sprite) +{ + if (--sprite->data[3] == -1) + sprite->callback = sub_80803BC; +} + +void sub_80803BC(struct Sprite *sprite) +{ + u32 x; + u32 y; + + if (--sprite->pos1.y < -48) + { + sprite->pos1.y = 208; + sprite->data[0] = 4; + } + x = sprite->data[0] * gSineTable[sprite->data[1]]; + y = sprite->data[0] * gSineTable[sprite->data[1] + 64]; + sprite->pos2.x = x >> 8; + sprite->pos2.y = y >> 8; + sprite->data[1] = (sprite->data[1] + 10) & 0xFF; + if (++sprite->data[2] > 8) + { + sprite->data[2] = 0; + sprite->data[0]++; + } +} + +void sub_8080430(void) +{ + gWeatherPtr->initStep = 0; + gWeatherPtr->unknown_6C1 = 3; + gWeatherPtr->unknown_6C2 = 20; +} + +void sub_8080460(void) +{ + sub_8080430(); +} + +void nullsub_56(void) +{ +} + +bool8 sub_8080470(void) +{ + return FALSE; +} + +const u8 gUnknown_0839AC68[] = {40, 90, 60, 90, 2, 60, 40, 30}; + +const struct SpriteSheet gWeatherBubbleSpriteSheet = {gWeatherBubbleTiles, sizeof(gWeatherBubbleTiles), 0x1205}; + +void sub_8080474(void) +{ + Fog2_InitVars(); + if (gWeatherPtr->unknown_72E == 0) + { + LoadSpriteSheet(&gWeatherBubbleSpriteSheet); + gWeatherPtr->unknown_728 = 0; + gWeatherPtr->unknown_726 = gUnknown_0839AC68[0]; + gWeatherPtr->unknown_72A = 0; + gWeatherPtr->unknown_72C = 0; + } +} + +void sub_80804F8(void); + +void sub_80804C8(void) +{ + sub_8080474(); + while (gWeatherPtr->weatherGfxLoaded == FALSE) + sub_80804F8(); +} + +void sub_8080588(u16); + +void sub_80804F8(void) +{ + Fog2_Main(); + if (++gWeatherPtr->unknown_726 > gUnknown_0839AC68[gWeatherPtr->unknown_728]) + { + gWeatherPtr->unknown_726 = 0; + if (++gWeatherPtr->unknown_728 > 7) + gWeatherPtr->unknown_728 = 0; + sub_8080588(gWeatherPtr->unknown_72A); + if (++gWeatherPtr->unknown_72A > 12) + gWeatherPtr->unknown_72A = 0; + } +} + +void sub_8080610(void); + +bool8 sub_808056C(void) +{ + if (!Fog2_Finish()) + { + sub_8080610(); + return FALSE; + } + return TRUE; +} + +const s16 gUnknown_0839AC78[][2] = +{ + {120, 160}, + {376, 160}, + { 40, 140}, + {296, 140}, + {180, 130}, + {436, 130}, + { 60, 160}, + {436, 160}, + {220, 180}, + {476, 180}, + { 10, 90}, + {266, 90}, + {256, 160}, +}; + +const union AnimCmd gSpriteAnim_839ACAC[] = +{ + ANIMCMD_FRAME(0, 16), + ANIMCMD_FRAME(1, 16), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_839ACB8[] = +{ + gSpriteAnim_839ACAC, +}; + +extern const struct OamData gOamData_837DF24; + +void unc_0807DAB4(struct Sprite *); +const struct SpriteTemplate gSpriteTemplate_839ACBC = +{ + .tileTag = 4613, + .paletteTag = 4608, + .oam = &gOamData_837DF24, + .anims = gSpriteAnimTable_839ACB8, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = unc_0807DAB4, +}; + +void sub_8080588(u16 a) +{ + s16 x = gUnknown_0839AC78[a][0]; + s16 y = gUnknown_0839AC78[a][1] - gSpriteCoordOffsetY; + u8 spriteId = CreateSpriteAtEnd( + &gSpriteTemplate_839ACBC, + x, + y, + 0); + + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].oam.priority = 1; + gSprites[spriteId].coordOffsetEnabled = TRUE; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].data[1] = 0; + gSprites[spriteId].data[2] = 0; + gWeatherPtr->unknown_72C++; + } +} + +void sub_8080610(void) +{ + u16 i; + + for (i = 0; i < 64; i++) + { + if (gSprites[i].template == &gSpriteTemplate_839ACBC) + DestroySprite(&gSprites[i]); + } + FreeSpriteTilesByTag(0x1205); +} + +void unc_0807DAB4(struct Sprite *sprite) +{ + ++sprite->data[0]; + if (++sprite->data[0] > 8) // double increment + { + sprite->data[0] = 0; + if (sprite->data[1] == 0) + { + if (++sprite->pos2.x > 4) + sprite->data[1] = 1; + } + else + { + if (--sprite->pos2.x <= 0) + sprite->data[1] = 0; + } + } + sprite->pos1.y -= 3; + if (++sprite->data[2] > 0x77) + DestroySprite(sprite); +} + +u8 TranslateWeatherNum(u8); +void UpdateRainCounter(u8, u8); + +void SetSav1Weather(u32 weather) +{ + u8 oldWeather = gSaveBlock1.weather; + + gSaveBlock1.weather = TranslateWeatherNum(weather); + UpdateRainCounter(gSaveBlock1.weather, oldWeather); +} + +u8 GetSav1Weather(void) +{ + return gSaveBlock1.weather; +} + +void SetSav1WeatherFromCurrMapHeader(void) +{ + u8 oldWeather = gSaveBlock1.weather; + + gSaveBlock1.weather = TranslateWeatherNum(gMapHeader.weather); + UpdateRainCounter(gSaveBlock1.weather, oldWeather); +} + +void SetWeather(u32 weather) +{ + SetSav1Weather(weather); + DoWeatherEffect(GetSav1Weather()); +} + +void SetWeather_Unused(u32 weather) +{ + SetSav1Weather(weather); + sub_807C988(GetSav1Weather()); +} + +void DoCurrentWeather(void) +{ + DoWeatherEffect(GetSav1Weather()); +} + +void sub_8080750(void) +{ + sub_807C988(GetSav1Weather()); +} + +static const u8 sWeatherCycle1[] = {2, 3, 5, 3}; +static const u8 sWeatherCycle2[] = {2, 2, 3, 2}; + +u8 TranslateWeatherNum(u8 weather) +{ + switch (weather) + { + case 0: return 0; + case 1: return 1; + case 2: return 2; + case 3: return 3; + case 4: return 4; + case 5: return 5; + case 6: return 6; + case 7: return 7; + case 8: return 8; + case 9: return 9; + case 10: return 10; + case 11: return 11; + case 12: return 12; + case 13: return 13; + case 14: return 14; + case 20: return sWeatherCycle1[gSaveBlock1.filler_2F]; + case 21: return sWeatherCycle2[gSaveBlock1.filler_2F]; + default: return 0; + } +} + +void UpdateWeatherPerDay(u16 increment) +{ + u16 weatherStage = gSaveBlock1.filler_2F + increment; + weatherStage %= 4; + gSaveBlock1.filler_2F = weatherStage; +} + +void UpdateRainCounter(u8 newWeather, u8 oldWeather) +{ + if (newWeather != oldWeather + && (newWeather == WEATHER_RAIN_LIGHT || newWeather == WEATHER_RAIN_MED)) + IncrementGameStat(0x28); +} -- cgit v1.2.3 From 4e1098beb6a84a46f0ac2bff37013a3f675f6750 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sun, 26 Nov 2017 01:41:51 -0600 Subject: label more functions and variables --- src/field/field_weather.c | 96 +++---- src/field/field_weather_effects.c | 534 ++++++++++++++++++++------------------ 2 files changed, 327 insertions(+), 303 deletions(-) (limited to 'src/field') diff --git a/src/field/field_weather.c b/src/field/field_weather.c index 0cd54d9a4..100dda956 100644 --- a/src/field/field_weather.c +++ b/src/field/field_weather.c @@ -72,10 +72,10 @@ void Clouds_InitVars(void); void Clouds_Main(void); void Clouds_InitAll(void); bool8 Clouds_Finish(void); -void sub_807DF9C(void); -void nullsub_55(void); -void sub_807DFC0(void); -bool8 sub_807DFD0(void); +void Weather2_InitVars(void); +void Weather2_Main(void); +void Weather2_InitAll(void); +bool8 Weather2_Finish(void); void LightRain_InitVars(void); void LightRain_Main(void); void LightRain_InitAll(void); @@ -88,60 +88,60 @@ void MedRain_InitVars(void); void Rain_Main(void); void MedRain_InitAll(void); bool8 Rain_Finish(void); -void Fog2_InitVars(void); -void Fog2_Main(void); -void Fog2_InitAll(void); -bool8 Fog2_Finish(void); void Fog1_InitVars(void); -void sub_807F888(void); -void sub_807F858(void); -bool8 sub_807F934(void); -void sub_807FE9C(void); -void sub_807FF4C(void); -void sub_807FF1C(void); -bool8 sub_807FFC8(void); -void sub_807FB24(void); -void sub_807FBD8(void); -void sub_807FBA8(void); -bool8 sub_807FC3C(void); +void Fog1_Main(void); +void Fog1_InitAll(void); +bool8 Fog1_Finish(void); +void Ash_InitVars(void); +void Ash_Main(void); +void Ash_InitAll(void); +bool8 Ash_Finish(void); +void Sandstorm_InitVars(void); +void Sandstorm_Main(void); +void Sandstorm_InitAll(void); +bool8 Sandstorm_Finish(void); void Fog2_InitVars(void); void Fog2_Main(void); void Fog2_InitAll(void); bool8 Fog2_Finish(void); -void sub_8080430(void); -void nullsub_56(void); -void sub_8080460(void); -bool8 sub_8080470(void); -void sub_807E110(void); -void sub_807E174(void); -void sub_807E144(void); -bool8 sub_807E258(void); +void Fog1_InitVars(void); +void Fog1_Main(void); +void Fog1_InitAll(void); +bool8 Fog1_Finish(void); +void Weather11_InitVars(void); +void Weather11_Main(void); +void Weather11_InitAll(void); +bool8 Weather11_Finish(void); +void Drought_InitVars(void); +void Drought_Main(void); +void Drought_InitAll(void); +bool8 Drought_Finish(void); void HeavyRain_InitVars(void); void Rain_Main(void); void HeavyRain_InitAll(void); bool8 Rain_Finish(void); -void sub_8080474(void); -void sub_80804F8(void); -void sub_80804C8(void); -bool8 sub_808056C(void); +void Bubbles_InitVars(void); +void Bubbles_Main(void); +void Bubbles_InitAll(void); +bool8 Bubbles_Finish(void); static const struct WeatherCallbacks sWeatherFuncs[] = { {None_Init, None_Main, None_Init, None_Finish}, {Clouds_InitVars, Clouds_Main, Clouds_InitAll, Clouds_Finish}, - {sub_807DF9C, nullsub_55, sub_807DFC0, sub_807DFD0}, + {Weather2_InitVars, Weather2_Main, Weather2_InitAll, Weather2_Finish}, {LightRain_InitVars, LightRain_Main, LightRain_InitAll, LightRain_Finish}, // light rain - {Snow_InitVars, Snow_Main, Snow_InitAll, Snow_Finish}, // snow + {Snow_InitVars, Snow_Main, Snow_InitAll, Snow_Finish}, {MedRain_InitVars, Rain_Main, MedRain_InitAll, Rain_Finish}, + {Fog1_InitVars, Fog1_Main, Fog1_InitAll, Fog1_Finish}, + {Ash_InitVars, Ash_Main, Ash_InitAll, Ash_Finish}, + {Sandstorm_InitVars, Sandstorm_Main, Sandstorm_InitAll, Sandstorm_Finish}, {Fog2_InitVars, Fog2_Main, Fog2_InitAll, Fog2_Finish}, - {Fog1_InitVars, sub_807F888, sub_807F858, sub_807F934}, // fog 1 - {sub_807FE9C, sub_807FF4C, sub_807FF1C, sub_807FFC8}, - {sub_807FB24, sub_807FBD8, sub_807FBA8, sub_807FC3C}, - {Fog2_InitVars, Fog2_Main, Fog2_InitAll, Fog2_Finish}, - {sub_8080430, nullsub_56, sub_8080460, sub_8080470}, - {sub_807E110, sub_807E174, sub_807E144, sub_807E258}, + {Fog1_InitVars, Fog1_Main, Fog1_InitAll, Fog1_Finish}, + {Weather11_InitVars, Weather11_Main, Weather11_InitAll, Weather11_Finish}, + {Drought_InitVars, Drought_Main, Drought_InitAll, Drought_Finish}, {HeavyRain_InitVars, Rain_Main, HeavyRain_InitAll, Rain_Finish}, - {sub_8080474, sub_80804F8, sub_80804C8, sub_808056C}, + {Bubbles_InitVars, Bubbles_Main, Bubbles_InitAll, Bubbles_Finish}, }; void (*const gUnknown_083970B8[])(void) = @@ -200,15 +200,15 @@ void StartWeather(void) sub_807CB10(); gWeatherPtr->unknown_6D5 = index; gWeatherPtr->unknown_6D4 = AllocSpritePalette(0x1201); - gWeatherPtr->unknown_6DA = 0; + gWeatherPtr->rainSpriteCount = 0; gWeatherPtr->unknown_6D8 = 0; - gWeatherPtr->cloudsActive = 0; + gWeatherPtr->cloudSpritesCreated = 0; gWeatherPtr->snowflakeSpriteCount = 0; - gWeatherPtr->unknown_700 = 0; - gWeatherPtr->unknown_6FB = 0; - gWeatherPtr->unknown_724 = 0; - gWeatherPtr->unknown_716 = 0; - gWeatherPtr->unknown_717 = 0; + gWeatherPtr->ashSpritesCreated = 0; + gWeatherPtr->fog1SpritesCreated = 0; + gWeatherPtr->fog2SpritesCreated = 0; + gWeatherPtr->sandstormSprites1Created = 0; + gWeatherPtr->sandstormSprites2Created = 0; gWeatherPtr->unknown_72E = 0; gWeatherPtr->unknown_6FA = 0; Weather_SetBlendCoeffs(16, 0); @@ -232,7 +232,7 @@ void DoWeatherEffect(u8 effect) } gWeatherPtr->unknown_6D3 = 0; gWeatherPtr->nextWeather = effect; - gWeatherPtr->unknown_6CE = 0; + gWeatherPtr->finishStep = 0; } void sub_807C988(u8 effect) diff --git a/src/field/field_weather_effects.c b/src/field/field_weather_effects.c index 1ae2d6e56..24a3e7dd4 100644 --- a/src/field/field_weather_effects.c +++ b/src/field/field_weather_effects.c @@ -14,8 +14,8 @@ extern struct Weather *const gWeatherPtr; const u16 gUnknown_08397108[] = INCBIN_U16("graphics/weather/1.gbapal"); const u16 gUnknown_08397128[] = INCBIN_U16("graphics/weather/2.gbapal"); -const u8 gWeatherFog1Tiles[] = INCBIN_U8("graphics/weather/fog1.4bpp"); const u8 gWeatherFog2Tiles[] = INCBIN_U8("graphics/weather/fog2.4bpp"); +const u8 gWeatherFog1Tiles[] = INCBIN_U8("graphics/weather/fog1.4bpp"); const u8 gWeatherCloudTiles[] = INCBIN_U8("graphics/weather/cloud.4bpp"); const u8 gWeatherSnow1Tiles[] = INCBIN_U8("graphics/weather/snow0.4bpp"); const u8 gWeatherSnow2Tiles[] = INCBIN_U8("graphics/weather/snow1.4bpp"); @@ -31,7 +31,7 @@ static const struct Coords16 gUnknown_0839A9C8[] = {10, 78}, }; -static const struct SpriteSheet sCloudSpriteSheet = {gWeatherCloudTiles, 0x800, 0x1200}; +static const struct SpriteSheet sCloudSpriteSheet = {gWeatherCloudTiles, sizeof(gWeatherCloudTiles), 0x1200}; static const struct OamData gOamData_839A9DC = { @@ -94,7 +94,7 @@ void Clouds_InitVars(void) gWeatherPtr->unknown_6C2 = 20; gWeatherPtr->weatherGfxLoaded = FALSE; gWeatherPtr->initStep = 0; - if (gWeatherPtr->cloudsActive == FALSE) + if (gWeatherPtr->cloudSpritesCreated == FALSE) Weather_SetBlendCoeffs(0, 16); } @@ -135,39 +135,43 @@ void sub_807E0A0(void); bool8 Clouds_Finish(void) { - switch (gWeatherPtr->unknown_6CE) + switch (gWeatherPtr->finishStep) { case 0: Weather_SetTargetBlendCoeffs(0, 16, 1); - gWeatherPtr->unknown_6CE++; + gWeatherPtr->finishStep++; return TRUE; case 1: if (Weather_UpdateBlend()) { sub_807E0A0(); - gWeatherPtr->unknown_6CE++; + gWeatherPtr->finishStep++; } return TRUE; } return FALSE; } -void sub_807DF9C(void) +//------------------------------------------------------------------------------ +// Weather 2 +//------------------------------------------------------------------------------ + +void Weather2_InitVars(void) { gWeatherPtr->unknown_6C1 = 0; gWeatherPtr->unknown_6C2 = 20; } -void sub_807DFC0(void) +void Weather2_InitAll(void) { - sub_807DF9C(); + Weather2_InitVars(); } -void nullsub_55(void) +void Weather2_Main(void) { } -int sub_807DFD0(void) +int Weather2_Finish(void) { return 0; } @@ -176,7 +180,7 @@ void CreateCloudSprites(void) { u16 i; - if (gWeatherPtr->cloudsActive == TRUE) + if (gWeatherPtr->cloudSpritesCreated == TRUE) return; LoadSpriteSheet(&sCloudSpriteSheet); sub_807D8C0(gUnknown_08397108); @@ -188,32 +192,32 @@ void CreateCloudSprites(void) { struct Sprite *sprite; - gWeatherPtr->cloudSprites[i] = &gSprites[spriteId]; - sprite = gWeatherPtr->cloudSprites[i]; + gWeatherPtr->sprites.s1.cloudSprites[i] = &gSprites[spriteId]; + sprite = gWeatherPtr->sprites.s1.cloudSprites[i]; sub_80603CC(gUnknown_0839A9C8[i].x + 7, gUnknown_0839A9C8[i].y + 7, &sprite->pos1.x, &sprite->pos1.y); sprite->coordOffsetEnabled = TRUE; } else { - gWeatherPtr->cloudSprites[i] = NULL; + gWeatherPtr->sprites.s1.cloudSprites[i] = NULL; } } - gWeatherPtr->cloudsActive = TRUE; + gWeatherPtr->cloudSpritesCreated = TRUE; } void sub_807E0A0(void) { u16 i; - if (gWeatherPtr->cloudsActive == FALSE) + if (gWeatherPtr->cloudSpritesCreated == FALSE) return; for (i = 0; i < 3; i++) { - if (gWeatherPtr->cloudSprites[i] != NULL) - DestroySprite(gWeatherPtr->cloudSprites[i]); + if (gWeatherPtr->sprites.s1.cloudSprites[i] != NULL) + DestroySprite(gWeatherPtr->sprites.s1.cloudSprites[i]); } FreeSpriteTilesByTag(0x1200); - gWeatherPtr->cloudsActive = FALSE; + gWeatherPtr->cloudSpritesCreated = FALSE; } void sub_807E0F4(struct Sprite *sprite) @@ -223,7 +227,11 @@ void sub_807E0F4(struct Sprite *sprite) sprite->pos1.x--; } -void sub_807E110(void) +//------------------------------------------------------------------------------ +// Drought +//------------------------------------------------------------------------------ + +void Drought_InitVars(void) { gWeatherPtr->initStep = 0; gWeatherPtr->weatherGfxLoaded = FALSE; @@ -231,16 +239,16 @@ void sub_807E110(void) gWeatherPtr->unknown_6C2 = 0; } -void sub_807E174(void); +void Drought_Main(void); -void sub_807E144(void) +void Drought_InitAll(void) { - sub_807E110(); + Drought_InitVars(); while (gWeatherPtr->weatherGfxLoaded == FALSE) - sub_807E174(); + Drought_Main(); } -void sub_807E174(void) +void Drought_Main(void) { switch (gWeatherPtr->initStep) { @@ -274,7 +282,7 @@ void sub_807E174(void) } } -int sub_807E258(void) +int Drought_Finish(void) { return 0; } @@ -374,7 +382,7 @@ void LightRain_InitAll(void) } void LoadRainSpriteSheet(void); -u8 CreateRainSprites(void); +u8 CreateRainSprite(void); u8 sub_807E8E8(void); void LightRain_Main(void) @@ -386,7 +394,7 @@ void LightRain_Main(void) gWeatherPtr->initStep++; break; case 1: - if (CreateRainSprites() == 0) + if (CreateRainSprite() == 0) gWeatherPtr->initStep++; break; case 2: @@ -399,31 +407,31 @@ void LightRain_Main(void) } } -void sub_807E974(void); +void DestroyRainSprites(void); bool8 LightRain_Finish(void) { - switch (gWeatherPtr->unknown_6CE) + switch (gWeatherPtr->finishStep) { case 0: if (gWeatherPtr->nextWeather == WEATHER_RAIN_LIGHT || gWeatherPtr->nextWeather == WEATHER_RAIN_MED || gWeatherPtr->nextWeather == WEATHER_RAIN_HEAVY) { - gWeatherPtr->unknown_6CE = 0xFF; + gWeatherPtr->finishStep = 0xFF; return FALSE; } else { gWeatherPtr->unknown_6D9 = 0; - gWeatherPtr->unknown_6CE++; + gWeatherPtr->finishStep++; } // fall through case 1: if (sub_807E8E8() == FALSE) { - sub_807E974(); - gWeatherPtr->unknown_6CE++; + DestroyRainSprites(); + gWeatherPtr->finishStep++; return FALSE; } return TRUE; @@ -545,7 +553,7 @@ void LoadRainSpriteSheet(void) LoadSpriteSheet(&sRainSpriteSheet); } -const struct Coords16 gUnknown_0839AA08[] = +static const struct Coords16 sRainSpriteCoords[] = { { 0, 0}, { 0, 160}, @@ -775,8 +783,8 @@ static const union AffineAnimCmd *const gSpriteAffineAnimTable_839AB8C[] = gSpriteAffineAnim_839AB7C, }; -static void Fog2SpriteCallback(struct Sprite *); -static const struct SpriteTemplate sFog2SpriteTemplate = +static void Fog1SpriteCallback(struct Sprite *); +static const struct SpriteTemplate sFog1SpriteTemplate = { .tileTag = 4609, .paletteTag = 4608, @@ -784,48 +792,48 @@ static const struct SpriteTemplate sFog2SpriteTemplate = .anims = gSpriteAnimTable_839AB64, .images = NULL, .affineAnims = gSpriteAffineAnimTable_839AB8C, - .callback = Fog2SpriteCallback, + .callback = Fog1SpriteCallback, }; -bool8 CreateRainSprites(void) +bool8 CreateRainSprite(void) { - u8 r7; + u8 spriteNum; u8 spriteId; - if (gWeatherPtr->unknown_6DA == 24) + if (gWeatherPtr->rainSpriteCount == 24) return FALSE; - r7 = gWeatherPtr->unknown_6DA; + spriteNum = gWeatherPtr->rainSpriteCount; spriteId = CreateSpriteAtEnd(&sRainSpriteTemplate, - gUnknown_0839AA08[r7].x, gUnknown_0839AA08[r7].y, 78); + sRainSpriteCoords[spriteNum].x, sRainSpriteCoords[spriteNum].y, 78); if (spriteId != 64) { gSprites[spriteId].data[5] = 0; - gSprites[spriteId].data[1] = r7 * 145; + gSprites[spriteId].data[1] = spriteNum * 145; while (gSprites[spriteId].data[1] >= 600) gSprites[spriteId].data[1] -= 600; sub_807E4EC(&gSprites[spriteId]); - sub_807E6F0(&gSprites[spriteId], r7 * 9); + sub_807E6F0(&gSprites[spriteId], spriteNum * 9); gSprites[spriteId].invisible = TRUE; - gWeatherPtr->rainSprites[r7] = &gSprites[spriteId]; + gWeatherPtr->sprites.s1.rainSprites[spriteNum] = &gSprites[spriteId]; } else { - gWeatherPtr->rainSprites[r7] = NULL; + gWeatherPtr->sprites.s1.rainSprites[spriteNum] = NULL; } - if (++gWeatherPtr->unknown_6DA == 24) + if (++gWeatherPtr->rainSpriteCount == 24) { u16 i; for (i = 0; i < 24; i++) { - if (gWeatherPtr->rainSprites[i] != NULL) + if (gWeatherPtr->sprites.s1.rainSprites[i] != NULL) { - if (gWeatherPtr->rainSprites[i]->data[6] == 0) - gWeatherPtr->rainSprites[i]->callback = sub_807E5C0; + if (gWeatherPtr->sprites.s1.rainSprites[i]->data[6] == 0) + gWeatherPtr->sprites.s1.rainSprites[i]->callback = sub_807E5C0; else - gWeatherPtr->rainSprites[i]->callback = sub_807E6C4; + gWeatherPtr->sprites.s1.rainSprites[i]->callback = sub_807E6C4; } } return FALSE; @@ -843,28 +851,28 @@ bool8 sub_807E8E8(void) gWeatherPtr->unknown_6D6 = 0; if (gWeatherPtr->unknown_6D8 < gWeatherPtr->unknown_6D9) { - gWeatherPtr->rainSprites[gWeatherPtr->unknown_6D8++]->data[5] = 1; + gWeatherPtr->sprites.s1.rainSprites[gWeatherPtr->unknown_6D8++]->data[5] = 1; } else { gWeatherPtr->unknown_6D8--; - gWeatherPtr->rainSprites[gWeatherPtr->unknown_6D8]->data[5] = 0; - gWeatherPtr->rainSprites[gWeatherPtr->unknown_6D8]->invisible = TRUE; + gWeatherPtr->sprites.s1.rainSprites[gWeatherPtr->unknown_6D8]->data[5] = 0; + gWeatherPtr->sprites.s1.rainSprites[gWeatherPtr->unknown_6D8]->invisible = TRUE; } } return TRUE; } -void sub_807E974(void) +void DestroyRainSprites(void) { u16 i; - for (i = 0; i < gWeatherPtr->unknown_6DA; i++) + for (i = 0; i < gWeatherPtr->rainSpriteCount; i++) { - if (gWeatherPtr->rainSprites[i] != NULL) - DestroySprite(gWeatherPtr->rainSprites[i]); + if (gWeatherPtr->sprites.s1.rainSprites[i] != NULL) + DestroySprite(gWeatherPtr->sprites.s1.rainSprites[i]); } - gWeatherPtr->unknown_6DA = 0; + gWeatherPtr->rainSpriteCount = 0; FreeSpriteTilesByTag(0x1206); } @@ -895,7 +903,7 @@ void Snow_InitAll(void) Snow_Main(); for (i = 0; i < gWeatherPtr->snowflakeSpriteCount; i++) { - sub_807ED48(gWeatherPtr->snowflakeSprites[i]); + sub_807ED48(gWeatherPtr->sprites.s1.snowflakeSprites[i]); } } } @@ -913,17 +921,17 @@ void Snow_Main(void) bool8 Snow_Finish(void) { - switch (gWeatherPtr->unknown_6CE) + switch (gWeatherPtr->finishStep) { case 0: gWeatherPtr->unknown_6E5 = 0; gWeatherPtr->unknown_6E0 = 0; - gWeatherPtr->unknown_6CE++; + gWeatherPtr->finishStep++; // fall through case 1: if (snowflakes_progress() == FALSE) { - gWeatherPtr->unknown_6CE++; + gWeatherPtr->finishStep++; return FALSE; } return TRUE; @@ -962,7 +970,7 @@ bool8 CreateSnowflakeSprite(void) gSprites[spriteId].data[4] = gWeatherPtr->snowflakeSpriteCount; sub_807EC40(&gSprites[spriteId]); gSprites[spriteId].coordOffsetEnabled = TRUE; - gWeatherPtr->snowflakeSprites[gWeatherPtr->snowflakeSpriteCount++] = &gSprites[spriteId]; + gWeatherPtr->sprites.s1.snowflakeSprites[gWeatherPtr->snowflakeSpriteCount++] = &gSprites[spriteId]; return TRUE; } @@ -970,7 +978,7 @@ bool8 RemoveSnowflakeSprite(void) { if (gWeatherPtr->snowflakeSpriteCount != 0) { - DestroySprite(gWeatherPtr->snowflakeSprites[--gWeatherPtr->snowflakeSpriteCount]); + DestroySprite(gWeatherPtr->sprites.s1.snowflakeSprites[--gWeatherPtr->snowflakeSpriteCount]); return TRUE; } return FALSE; @@ -1119,7 +1127,7 @@ void Rain_Main(void) gWeatherPtr->initStep++; break; case 1: - if (CreateRainSprites()) + if (CreateRainSprite()) break; gWeatherPtr->initStep++; break; @@ -1214,11 +1222,11 @@ void Rain_Main(void) bool8 Rain_Finish(void) { - switch (gWeatherPtr->unknown_6CE) + switch (gWeatherPtr->finishStep) { case 0: gWeatherPtr->unknown_6EA = 0; - gWeatherPtr->unknown_6CE++; + gWeatherPtr->finishStep++; // fall through case 1: Rain_Main(); @@ -1229,15 +1237,15 @@ bool8 Rain_Finish(void) || gWeatherPtr->nextWeather == WEATHER_RAIN_HEAVY) return FALSE; gWeatherPtr->unknown_6D9 = 0; - gWeatherPtr->unknown_6CE++; + gWeatherPtr->finishStep++; } break; case 2: if (sub_807E8E8()) break; - sub_807E974(); + DestroyRainSprites(); gWeatherPtr->unknown_6ED = 0; - gWeatherPtr->unknown_6CE++; + gWeatherPtr->finishStep++; return FALSE; default: return FALSE; @@ -1276,38 +1284,38 @@ void UpdateThunderSound(void) } //------------------------------------------------------------------------------ -// Fog 2 +// Fog 1 //------------------------------------------------------------------------------ -void Fog2_Main(void); -static void CreateFog2Sprites(void); -static void DestroyFog2Sprites(void); +void Fog1_Main(void); +static void CreateFog1Sprites(void); +static void DestroyFog1Sprites(void); -void Fog2_InitVars(void) +void Fog1_InitVars(void) { gWeatherPtr->initStep = 0; gWeatherPtr->weatherGfxLoaded = FALSE; gWeatherPtr->unknown_6C1 = 0; gWeatherPtr->unknown_6C2 = 20; - if (gWeatherPtr->unknown_6FB == 0) + if (gWeatherPtr->fog1SpritesCreated == 0) { gWeatherPtr->unknown_6F0 = 0; gWeatherPtr->unknown_6F2 = 0; - gWeatherPtr->fog2ScrollPosX = 0; + gWeatherPtr->fog1ScrollPosX = 0; Weather_SetBlendCoeffs(0, 16); } } -void Fog2_InitAll(void) +void Fog1_InitAll(void) { - Fog2_InitVars(); + Fog1_InitVars(); while (gWeatherPtr->weatherGfxLoaded == FALSE) - Fog2_Main(); + Fog1_Main(); } -void Fog2_Main(void) +void Fog1_Main(void) { - gWeatherPtr->fog2ScrollPosX = (gSpriteCoordOffsetX - gWeatherPtr->unknown_6F2) & 0xFF; + gWeatherPtr->fog1ScrollPosX = (gSpriteCoordOffsetX - gWeatherPtr->unknown_6F2) & 0xFF; if (++gWeatherPtr->unknown_6F0 > 3) { gWeatherPtr->unknown_6F0 = 0; @@ -1316,8 +1324,8 @@ void Fog2_Main(void) switch (gWeatherPtr->initStep) { case 0: - CreateFog2Sprites(); - if (gWeatherPtr->currWeather == WEATHER_FOG_2) + CreateFog1Sprites(); + if (gWeatherPtr->currWeather == WEATHER_FOG_1) Weather_SetTargetBlendCoeffs(12, 8, 3); else Weather_SetTargetBlendCoeffs(4, 16, 0); @@ -1333,28 +1341,28 @@ void Fog2_Main(void) } } -bool8 Fog2_Finish(void) +bool8 Fog1_Finish(void) { - gWeatherPtr->fog2ScrollPosX = (gSpriteCoordOffsetX - gWeatherPtr->unknown_6F2) & 0xFF; + gWeatherPtr->fog1ScrollPosX = (gSpriteCoordOffsetX - gWeatherPtr->unknown_6F2) & 0xFF; if (++gWeatherPtr->unknown_6F0 > 3) { gWeatherPtr->unknown_6F0 = 0; gWeatherPtr->unknown_6F2++; } - switch (gWeatherPtr->unknown_6CE) + switch (gWeatherPtr->finishStep) { case 0: Weather_SetTargetBlendCoeffs(0, 16, 3); - gWeatherPtr->unknown_6CE++; + gWeatherPtr->finishStep++; break; case 1: if (!Weather_UpdateBlend()) break; - gWeatherPtr->unknown_6CE++; + gWeatherPtr->finishStep++; break; case 2: - DestroyFog2Sprites(); - gWeatherPtr->unknown_6CE++; + DestroyFog1Sprites(); + gWeatherPtr->finishStep++; break; default: return FALSE; @@ -1364,29 +1372,29 @@ bool8 Fog2_Finish(void) #define sprColumn data[0] -static void Fog2SpriteCallback(struct Sprite *sprite) +static void Fog1SpriteCallback(struct Sprite *sprite) { sprite->pos2.y = (u8)gSpriteCoordOffsetY; - sprite->pos1.x = gWeatherPtr->fog2ScrollPosX + 32 + sprite->sprColumn * 64; + sprite->pos1.x = gWeatherPtr->fog1ScrollPosX + 32 + sprite->sprColumn * 64; if (sprite->pos1.x > 0x10F) { - sprite->pos1.x = 480 + gWeatherPtr->fog2ScrollPosX - (4 - sprite->sprColumn) * 64; + sprite->pos1.x = 480 + gWeatherPtr->fog1ScrollPosX - (4 - sprite->sprColumn) * 64; sprite->pos1.x &= 0x1FF; } } -static void CreateFog2Sprites(void) +static void CreateFog1Sprites(void) { u16 i; - if (gWeatherPtr->unknown_6FB == 0) + if (!gWeatherPtr->fog1SpritesCreated) { - struct SpriteSheet fog2SpriteSheet = {gWeatherFog2Tiles, sizeof(gWeatherFog2Tiles), 0x1201}; + struct SpriteSheet fog1SpriteSheet = {gWeatherFog1Tiles, sizeof(gWeatherFog1Tiles), 0x1201}; - LoadSpriteSheet(&fog2SpriteSheet); + LoadSpriteSheet(&fog1SpriteSheet); for (i = 0; i < 20; i++) { - u8 spriteId = CreateSpriteAtEnd(&sFog2SpriteTemplate, 0, 0, 0xFF); + u8 spriteId = CreateSpriteAtEnd(&sFog1SpriteTemplate, 0, 0, 0xFF); if (spriteId != MAX_SPRITES) { @@ -1395,66 +1403,66 @@ static void CreateFog2Sprites(void) sprite->sprColumn = i % 5; sprite->pos1.x = (i % 5) * 64 + 32; sprite->pos1.y = (i / 5) * 64 + 32; - ((struct Weather2 *)gWeatherPtr)->fogSprites[i] = sprite; + gWeatherPtr->sprites.s2.fog1Sprites[i] = sprite; } else { - ((struct Weather2 *)gWeatherPtr)->fogSprites[i] = NULL; + gWeatherPtr->sprites.s2.fog1Sprites[i] = NULL; } } - gWeatherPtr->unknown_6FB = 1; + gWeatherPtr->fog1SpritesCreated = TRUE; } } #undef sprColumn -static void DestroyFog2Sprites(void) +static void DestroyFog1Sprites(void) { u16 i; - if (gWeatherPtr->unknown_6FB != 0) + if (gWeatherPtr->fog1SpritesCreated) { for (i = 0; i < 20; i++) { - if (((struct Weather2 *)gWeatherPtr)->fogSprites[i] != NULL) - DestroySprite(((struct Weather2 *)gWeatherPtr)->fogSprites[i]); + if (gWeatherPtr->sprites.s2.fog1Sprites[i] != NULL) + DestroySprite(gWeatherPtr->sprites.s2.fog1Sprites[i]); } FreeSpriteTilesByTag(0x1201); - gWeatherPtr->unknown_6FB = 0; + gWeatherPtr->fog1SpritesCreated = 0; } } //------------------------------------------------------------------------------ -// Fog 1 +// Volcanic ash //------------------------------------------------------------------------------ -void Fog1_InitVars(void) +void Ash_Main(void); +void LoadAshSpriteSheet(void); +void CreateAshSprites(void); +void DestroyAshSprites(void); + +void Ash_InitVars(void) { gWeatherPtr->initStep = 0; gWeatherPtr->weatherGfxLoaded = FALSE; gWeatherPtr->unknown_6C1 = 0; gWeatherPtr->unknown_6C2 = 20; gWeatherPtr->unknown_6FE = 20; - if (gWeatherPtr->unknown_700 == 0) + if (!gWeatherPtr->ashSpritesCreated) { Weather_SetBlendCoeffs(0, 16); REG_BLDALPHA = BLDALPHA_BLEND(64, 63); // Those aren't even valid coefficients! } } -void sub_807F888(void); - -void sub_807F858(void) +void Ash_InitAll(void) { - Fog1_InitVars(); + Ash_InitVars(); while (gWeatherPtr->weatherGfxLoaded == FALSE) - sub_807F888(); + Ash_Main(); } -void sub_807F99C(void); -void sub_807F9AC(void); - -void sub_807F888(void) +void Ash_Main(void) { gWeatherPtr->unknown_6FC = gSpriteCoordOffsetX & 0x1FF; while (gWeatherPtr->unknown_6FC > 0xEF) @@ -1462,12 +1470,12 @@ void sub_807F888(void) switch (gWeatherPtr->initStep) { case 0: - sub_807F99C(); + LoadAshSpriteSheet(); gWeatherPtr->initStep++; break; case 1: - if (gWeatherPtr->unknown_700 == 0) - sub_807F9AC(); + if (!gWeatherPtr->ashSpritesCreated) + CreateAshSprites(); Weather_SetTargetBlendCoeffs(16, 0, 1); gWeatherPtr->initStep++; break; @@ -1483,25 +1491,23 @@ void sub_807F888(void) } } -void sub_807FA54(void); - -bool8 sub_807F934(void) +bool8 Ash_Finish(void) { - switch (gWeatherPtr->unknown_6CE) + switch (gWeatherPtr->finishStep) { case 0: Weather_SetTargetBlendCoeffs(0, 16, 1); - gWeatherPtr->unknown_6CE++; + gWeatherPtr->finishStep++; break; case 1: if (!Weather_UpdateBlend()) break; - sub_807FA54(); - gWeatherPtr->unknown_6CE++; + DestroyAshSprites(); + gWeatherPtr->finishStep++; break; case 2: REG_BLDALPHA = 0; - gWeatherPtr->unknown_6CE++; + gWeatherPtr->finishStep++; return FALSE; default: return FALSE; @@ -1509,11 +1515,11 @@ bool8 sub_807F934(void) return TRUE; } -const struct SpriteSheet gWeatherAshSpriteSheet = {gWeatherAshTiles, sizeof(gWeatherAshTiles), 0x1202}; +static const struct SpriteSheet sAshSpriteSheet = {gWeatherAshTiles, sizeof(gWeatherAshTiles), 0x1202}; -void sub_807F99C(void) +void LoadAshSpriteSheet(void) { - LoadSpriteSheet(&gWeatherAshSpriteSheet); + LoadSpriteSheet(&sAshSpriteSheet); } const struct OamData gOamData_839ABB8 = @@ -1546,7 +1552,7 @@ const union AnimCmd *const gSpriteAnimTable_839ABCC[] = }; void sub_807FAA8(struct Sprite *); -const struct SpriteTemplate gSpriteTemplate_839ABD0 = +static const struct SpriteTemplate sAshSpriteTemplate = { .tileTag = 4610, .paletteTag = 4608, @@ -1557,15 +1563,15 @@ const struct SpriteTemplate gSpriteTemplate_839ABD0 = .callback = sub_807FAA8, }; -void sub_807F9AC(void) +void CreateAshSprites(void) { u8 i; - if (gWeatherPtr->unknown_700 == 0) + if (!gWeatherPtr->ashSpritesCreated) { for (i = 0; i < 20; i++) { - u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839ABD0, 0, 0, 0x4E); + u8 spriteId = CreateSpriteAtEnd(&sAshSpriteTemplate, 0, 0, 0x4E); if (spriteId != MAX_SPRITES) { @@ -1575,30 +1581,30 @@ void sub_807F9AC(void) sprite->data[2] = (u8)(i % 5); sprite->data[3] = (u8)(i / 5); sprite->data[0] = sprite->data[3] * 64 + 32; - ((struct Weather2 *)gWeatherPtr)->fog1Sprites[i] = sprite; + gWeatherPtr->sprites.s2.ashSprites[i] = sprite; } else { - ((struct Weather2 *)gWeatherPtr)->fog1Sprites[i] = NULL; + gWeatherPtr->sprites.s2.ashSprites[i] = NULL; } } - gWeatherPtr->unknown_700 = 1; + gWeatherPtr->ashSpritesCreated = TRUE; } } -void sub_807FA54(void) +void DestroyAshSprites(void) { u16 i; - if (gWeatherPtr->unknown_700 != 0) + if (gWeatherPtr->ashSpritesCreated) { for (i = 0; i < 20; i++) { - if (((struct Weather2 *)gWeatherPtr)->fog1Sprites[i] != NULL) - DestroySprite(((struct Weather2 *)gWeatherPtr)->fog1Sprites[i]); + if (gWeatherPtr->sprites.s2.ashSprites[i] != NULL) + DestroySprite(gWeatherPtr->sprites.s2.ashSprites[i]); } FreeSpriteTilesByTag(0x1202); - gWeatherPtr->unknown_700 = 0; + gWeatherPtr->ashSpritesCreated = FALSE; } } @@ -1619,7 +1625,11 @@ void sub_807FAA8(struct Sprite *sprite) } } -void sub_807FB24(void) +//------------------------------------------------------------------------------ +// Fog 2 +//------------------------------------------------------------------------------ + +void Fog2_InitVars(void) { gWeatherPtr->initStep = 0; gWeatherPtr->weatherGfxLoaded = 0; @@ -1627,7 +1637,7 @@ void sub_807FB24(void) gWeatherPtr->unknown_6C2 = 20; gWeatherPtr->unknown_6F0 = 0; gWeatherPtr->unknown_6F2 = 1; - if (gWeatherPtr->unknown_724 == 0) + if (gWeatherPtr->fog2SpritesCreated == 0) { gWeatherPtr->unknown_71C = 0; gWeatherPtr->unknown_71E = 0; @@ -1639,25 +1649,25 @@ void sub_807FB24(void) } } -void sub_807FBD8(void); +void Fog2_Main(void); -void sub_807FBA8(void) +void Fog2_InitAll(void) { - sub_807FB24(); + Fog2_InitVars(); while (gWeatherPtr->weatherGfxLoaded == FALSE) - sub_807FBD8(); + Fog2_Main(); } void sub_807FC9C(void); -void sub_807FD30(void); +void CreateFog2Sprites(void); -void sub_807FBD8(void) +void Fog2_Main(void) { sub_807FC9C(); switch (gWeatherPtr->initStep) { case 0: - sub_807FD30(); + CreateFog2Sprites(); gWeatherPtr->initStep++; break; case 1: @@ -1673,25 +1683,25 @@ void sub_807FBD8(void) } } -void sub_807FDE8(void); +void DestroyFog2Sprites(void); -bool8 sub_807FC3C(void) +bool8 Fog2_Finish(void) { sub_807FC9C(); - switch (gWeatherPtr->unknown_6CE) + switch (gWeatherPtr->finishStep) { case 0: Weather_SetTargetBlendCoeffs(0, 16, 1); - gWeatherPtr->unknown_6CE++; + gWeatherPtr->finishStep++; break; case 1: if (!Weather_UpdateBlend()) break; - gWeatherPtr->unknown_6CE++; + gWeatherPtr->finishStep++; break; case 2: - sub_807FDE8(); - gWeatherPtr->unknown_6CE++; + DestroyFog2Sprites(); + gWeatherPtr->finishStep++; break; default: return FALSE; @@ -1717,20 +1727,20 @@ void sub_807FC9C(void) gWeatherPtr->unknown_71A = gSpriteCoordOffsetY + gWeatherPtr->unknown_722; } -extern const struct SpriteTemplate gSpriteTemplate_839AC04; // defined below +extern const struct SpriteTemplate sFog2SpriteTemplate; // defined below -void sub_807FD30(void) +void CreateFog2Sprites(void) { u16 i; - if (gWeatherPtr->unknown_724 == 0) + if (!gWeatherPtr->fog2SpritesCreated) { - struct SpriteSheet fog1SpriteSheet = {gWeatherFog1Tiles, sizeof(gWeatherFog1Tiles), 0x1203}; + struct SpriteSheet fog2SpriteSheet = {gWeatherFog2Tiles, sizeof(gWeatherFog2Tiles), 0x1203}; - LoadSpriteSheet(&fog1SpriteSheet); + LoadSpriteSheet(&fog2SpriteSheet); for (i = 0; i < 20; i++) { - u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839AC04, 0, (i / 5) * 64, 0xFF); + u8 spriteId = CreateSpriteAtEnd(&sFog2SpriteTemplate, 0, (i / 5) * 64, 0xFF); if (spriteId != MAX_SPRITES) { @@ -1738,14 +1748,14 @@ void sub_807FD30(void) sprite->data[0] = i % 5; sprite->data[1] = i / 5; - ((struct Weather2 *)gWeatherPtr)->unknown_140[i] = sprite; + gWeatherPtr->sprites.s2.fog2Sprites[i] = sprite; } else { - ((struct Weather2 *)gWeatherPtr)->unknown_140[i] = NULL; + gWeatherPtr->sprites.s2.fog2Sprites[i] = NULL; } } - gWeatherPtr->unknown_724 = 1; + gWeatherPtr->fog2SpritesCreated = TRUE; } } @@ -1777,8 +1787,8 @@ const union AnimCmd *const gSpriteAnimTable_839AC00[] = gSpriteAnim_839ABF8, }; -void sub_807FE3C(struct Sprite *); -const struct SpriteTemplate gSpriteTemplate_839AC04 = +void Fog2SpriteCallback(struct Sprite *); +const struct SpriteTemplate sFog2SpriteTemplate = { .tileTag = 4611, .paletteTag = 4608, @@ -1786,26 +1796,26 @@ const struct SpriteTemplate gSpriteTemplate_839AC04 = .anims = gSpriteAnimTable_839AC00, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_807FE3C, + .callback = Fog2SpriteCallback, }; -void sub_807FDE8(void) +void DestroyFog2Sprites(void) { u16 i; - if (gWeatherPtr->unknown_724 != 0) + if (gWeatherPtr->fog2SpritesCreated) { for (i = 0; i < 20; i++) { - if (((struct Weather2 *)gWeatherPtr)->unknown_140[i] != NULL) - DestroySprite(((struct Weather2 *)gWeatherPtr)->unknown_140[i]); + if (gWeatherPtr->sprites.s2.fog2Sprites[i] != NULL) + DestroySprite(gWeatherPtr->sprites.s2.fog2Sprites[i]); } FreeSpriteTilesByTag(0x1203); - gWeatherPtr->unknown_724 = 0; + gWeatherPtr->fog2SpritesCreated = FALSE; } } -void sub_807FE3C(struct Sprite *sprite) +void Fog2SpriteCallback(struct Sprite *sprite) { sprite->pos2.y = gWeatherPtr->unknown_71A; sprite->pos1.x = gWeatherPtr->unknown_718 + 32 + sprite->data[0] * 64; @@ -1816,13 +1826,17 @@ void sub_807FE3C(struct Sprite *sprite) } } -void sub_807FE9C(void) +//------------------------------------------------------------------------------ +// Sandstorm +//------------------------------------------------------------------------------ + +void Sandstorm_InitVars(void) { gWeatherPtr->initStep = 0; gWeatherPtr->weatherGfxLoaded = 0; gWeatherPtr->unknown_6C1 = 0; gWeatherPtr->unknown_6C2 = 20; - if (gWeatherPtr->unknown_716 == 0) + if (gWeatherPtr->sandstormSprites1Created == 0) { gWeatherPtr->unknown_704 = gWeatherPtr->unknown_708 = 0; gWeatherPtr->unknown_712 = 8; @@ -1834,21 +1848,21 @@ void sub_807FE9C(void) } } -void sub_807FF4C(void); +void Sandstorm_Main(void); -void sub_807FF1C(void) +void Sandstorm_InitAll(void) { - sub_807FE9C(); + Sandstorm_InitVars(); while (gWeatherPtr->weatherGfxLoaded == FALSE) - sub_807FF4C(); + Sandstorm_Main(); } void sub_808002C(void); void sub_8080064(void); -void sub_8080178(void); -void sub_8080238(void); +void CreateSandstormSprites_1(void); +void CreateSandstormSprites_2(void); -void sub_807FF4C(void) +void Sandstorm_Main(void) { sub_8080064(); sub_808002C(); @@ -1857,8 +1871,8 @@ void sub_807FF4C(void) switch (gWeatherPtr->initStep) { case 0: - sub_8080178(); - sub_8080238(); + CreateSandstormSprites_1(); + CreateSandstormSprites_2(); gWeatherPtr->initStep++; break; case 1: @@ -1876,24 +1890,24 @@ void sub_807FF4C(void) void sub_80800E4(void); -bool8 sub_807FFC8(void) +bool8 Sandstorm_Finish(void) { sub_8080064(); sub_808002C(); - switch (gWeatherPtr->unknown_6CE) + switch (gWeatherPtr->finishStep) { case 0: Weather_SetTargetBlendCoeffs(0, 16, 0); - gWeatherPtr->unknown_6CE++; + gWeatherPtr->finishStep++; break; case 1: if (!Weather_UpdateBlend()) break; - gWeatherPtr->unknown_6CE++; + gWeatherPtr->finishStep++; break; case 2: sub_80800E4(); - gWeatherPtr->unknown_6CE++; + gWeatherPtr->finishStep++; break; default: return FALSE; @@ -1922,25 +1936,25 @@ void sub_80800E4(void) { u16 i; - if (gWeatherPtr->unknown_716 != 0) + if (gWeatherPtr->sandstormSprites1Created) { for (i = 0; i < 20; i++) { - if (((struct Weather2 *)gWeatherPtr)->unknown_190[i] != NULL) - DestroySprite(((struct Weather2 *)gWeatherPtr)->unknown_190[i]); + if (gWeatherPtr->sprites.s2.sandstormSprites1[i] != NULL) + DestroySprite(gWeatherPtr->sprites.s2.sandstormSprites1[i]); } - gWeatherPtr->unknown_716 = 0; + gWeatherPtr->sandstormSprites1Created = FALSE; FreeSpriteTilesByTag(0x1204); } - if (gWeatherPtr->unknown_717 != 0) + if (gWeatherPtr->sandstormSprites2Created) { for (i = 0; i < 5; i++) { - if (((struct Weather2 *)gWeatherPtr)->unknown_1E0[i] != NULL) - DestroySprite(((struct Weather2 *)gWeatherPtr)->unknown_1E0[i]); + if (gWeatherPtr->sprites.s2.sandstormSprites2[i] != NULL) + DestroySprite(gWeatherPtr->sprites.s2.sandstormSprites2[i]); } - gWeatherPtr->unknown_717 = 0; + gWeatherPtr->sandstormSprites2Created = FALSE; } } @@ -1979,8 +1993,8 @@ const union AnimCmd *const gSpriteAnimTable_839AC34[] = gSpriteAnim_839AC2C, }; -void sub_8080338(struct Sprite *); -const struct SpriteTemplate gSpriteTemplate_839AC3C = +void SandstormSpriteCallback1(struct Sprite *); +const struct SpriteTemplate sSandstormSpriteTemplate = { .tileTag = 4612, .paletteTag = 4609, @@ -1988,75 +2002,75 @@ const struct SpriteTemplate gSpriteTemplate_839AC3C = .anims = gSpriteAnimTable_839AC34, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8080338, + .callback = SandstormSpriteCallback1, }; -const struct SpriteSheet gWeatherSandstormSpriteSheet = {gWeatherSandstormTiles, sizeof(gWeatherSandstormTiles), 0x1204}; +static const struct SpriteSheet sSandstormSpriteSheet = {gWeatherSandstormTiles, sizeof(gWeatherSandstormTiles), 0x1204}; -void sub_8080178(void) +void CreateSandstormSprites_1(void) { u16 i; - if (gWeatherPtr->unknown_716 == 0) + if (!gWeatherPtr->sandstormSprites1Created) { - LoadSpriteSheet(&gWeatherSandstormSpriteSheet); + LoadSpriteSheet(&sSandstormSpriteSheet); sub_807D8C0(gUnknown_08397128); for (i = 0; i < 20; i++) { - u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839AC3C, 0, (i / 5) * 64, 1); + u8 spriteId = CreateSpriteAtEnd(&sSandstormSpriteTemplate, 0, (i / 5) * 64, 1); if (spriteId != MAX_SPRITES) { - ((struct Weather2 *)gWeatherPtr)->unknown_190[i] = &gSprites[spriteId]; - ((struct Weather2 *)gWeatherPtr)->unknown_190[i]->data[0] = i % 5; - ((struct Weather2 *)gWeatherPtr)->unknown_190[i]->data[1] = i / 5; + gWeatherPtr->sprites.s2.sandstormSprites1[i] = &gSprites[spriteId]; + gWeatherPtr->sprites.s2.sandstormSprites1[i]->data[0] = i % 5; + gWeatherPtr->sprites.s2.sandstormSprites1[i]->data[1] = i / 5; } else { - ((struct Weather2 *)gWeatherPtr)->unknown_190[i] = NULL; + gWeatherPtr->sprites.s2.sandstormSprites1[i] = NULL; } } - gWeatherPtr->unknown_716 = 1; + gWeatherPtr->sandstormSprites1Created = TRUE; } } const u16 gUnknown_0839AC5C[] = {0, 120, 80, 160, 40, 0}; -void sub_8080398(struct Sprite *); +void SandstormSpriteCallback2(struct Sprite *); -void sub_8080238(void) +void CreateSandstormSprites_2(void) { u16 i; - if (gWeatherPtr->unknown_717 == 0) + if (!gWeatherPtr->sandstormSprites2Created) { for (i = 0; i < 5; i++) { - u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839AC3C, i * 48 + 0x18, 0xD0, 1); + u8 spriteId = CreateSpriteAtEnd(&sSandstormSpriteTemplate, i * 48 + 0x18, 0xD0, 1); if (spriteId != MAX_SPRITES) { - ((struct Weather2 *)gWeatherPtr)->unknown_1E0[i] = &gSprites[spriteId]; - ((struct Weather2 *)gWeatherPtr)->unknown_1E0[i]->oam.size = 2; - ((struct Weather2 *)gWeatherPtr)->unknown_1E0[i]->data[1] = i * 51; - ((struct Weather2 *)gWeatherPtr)->unknown_1E0[i]->data[0] = 8; - ((struct Weather2 *)gWeatherPtr)->unknown_1E0[i]->data[2] = 0; - ((struct Weather2 *)gWeatherPtr)->unknown_1E0[i]->data[4] = 0x6730; - ((struct Weather2 *)gWeatherPtr)->unknown_1E0[i]->data[3] = gUnknown_0839AC5C[i]; - StartSpriteAnim(((struct Weather2 *)gWeatherPtr)->unknown_1E0[i], 1); - CalcCenterToCornerVec(((struct Weather2 *)gWeatherPtr)->unknown_1E0[i], 0, 2, 0); - ((struct Weather2 *)gWeatherPtr)->unknown_1E0[i]->callback = sub_8080398; + gWeatherPtr->sprites.s2.sandstormSprites2[i] = &gSprites[spriteId]; + gWeatherPtr->sprites.s2.sandstormSprites2[i]->oam.size = 2; + gWeatherPtr->sprites.s2.sandstormSprites2[i]->data[1] = i * 51; + gWeatherPtr->sprites.s2.sandstormSprites2[i]->data[0] = 8; + gWeatherPtr->sprites.s2.sandstormSprites2[i]->data[2] = 0; + gWeatherPtr->sprites.s2.sandstormSprites2[i]->data[4] = 0x6730; + gWeatherPtr->sprites.s2.sandstormSprites2[i]->data[3] = gUnknown_0839AC5C[i]; + StartSpriteAnim(gWeatherPtr->sprites.s2.sandstormSprites2[i], 1); + CalcCenterToCornerVec(gWeatherPtr->sprites.s2.sandstormSprites2[i], 0, 2, 0); + gWeatherPtr->sprites.s2.sandstormSprites2[i]->callback = SandstormSpriteCallback2; } else { - ((struct Weather2 *)gWeatherPtr)->unknown_1E0[i] = NULL; + gWeatherPtr->sprites.s2.sandstormSprites2[i] = NULL; } - gWeatherPtr->unknown_717 = 1; + gWeatherPtr->sandstormSprites2Created = TRUE; } } } -void sub_8080338(struct Sprite *sprite) +void SandstormSpriteCallback1(struct Sprite *sprite) { sprite->pos2.y = gWeatherPtr->unknown_710; sprite->pos1.x = gWeatherPtr->unknown_70E + 32 + sprite->data[0] * 64; @@ -2067,15 +2081,15 @@ void sub_8080338(struct Sprite *sprite) } } -void sub_80803BC(struct Sprite *); +void SandstormSpriteCallback3(struct Sprite *); -void sub_8080398(struct Sprite *sprite) +void SandstormSpriteCallback2(struct Sprite *sprite) { if (--sprite->data[3] == -1) - sprite->callback = sub_80803BC; + sprite->callback = SandstormSpriteCallback3; } -void sub_80803BC(struct Sprite *sprite) +void SandstormSpriteCallback3(struct Sprite *sprite) { u32 x; u32 y; @@ -2097,34 +2111,42 @@ void sub_80803BC(struct Sprite *sprite) } } -void sub_8080430(void) +//------------------------------------------------------------------------------ +// Weather 11 +//------------------------------------------------------------------------------ + +void Weather11_InitVars(void) { gWeatherPtr->initStep = 0; gWeatherPtr->unknown_6C1 = 3; gWeatherPtr->unknown_6C2 = 20; } -void sub_8080460(void) +void Weather11_InitAll(void) { - sub_8080430(); + Weather11_InitVars(); } -void nullsub_56(void) +void Weather11_Main(void) { } -bool8 sub_8080470(void) +bool8 Weather11_Finish(void) { return FALSE; } +//------------------------------------------------------------------------------ +// Weather 14 +//------------------------------------------------------------------------------ + const u8 gUnknown_0839AC68[] = {40, 90, 60, 90, 2, 60, 40, 30}; const struct SpriteSheet gWeatherBubbleSpriteSheet = {gWeatherBubbleTiles, sizeof(gWeatherBubbleTiles), 0x1205}; -void sub_8080474(void) +void Bubbles_InitVars(void) { - Fog2_InitVars(); + Fog1_InitVars(); if (gWeatherPtr->unknown_72E == 0) { LoadSpriteSheet(&gWeatherBubbleSpriteSheet); @@ -2135,20 +2157,20 @@ void sub_8080474(void) } } -void sub_80804F8(void); +void Bubbles_Main(void); -void sub_80804C8(void) +void Bubbles_InitAll(void) { - sub_8080474(); + Bubbles_InitVars(); while (gWeatherPtr->weatherGfxLoaded == FALSE) - sub_80804F8(); + Bubbles_Main(); } void sub_8080588(u16); -void sub_80804F8(void) +void Bubbles_Main(void) { - Fog2_Main(); + Fog1_Main(); if (++gWeatherPtr->unknown_726 > gUnknown_0839AC68[gWeatherPtr->unknown_728]) { gWeatherPtr->unknown_726 = 0; @@ -2162,9 +2184,9 @@ void sub_80804F8(void) void sub_8080610(void); -bool8 sub_808056C(void) +bool8 Bubbles_Finish(void) { - if (!Fog2_Finish()) + if (!Fog1_Finish()) { sub_8080610(); return FALSE; @@ -2270,6 +2292,8 @@ void unc_0807DAB4(struct Sprite *sprite) DestroySprite(sprite); } +//------------------------------------------------------------------------------ + u8 TranslateWeatherNum(u8); void UpdateRainCounter(u8, u8); -- cgit v1.2.3 From d373f41c2cbd2dc71ca2287b179c7c8777b9eb02 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sun, 26 Nov 2017 02:01:36 -0600 Subject: rename rng.c to random.c --- src/field/battle_tower.c | 2 +- src/field/berry.c | 2 +- src/field/daycare.c | 2 +- src/field/dewford_trend.c | 2 +- src/field/easy_chat.c | 2 +- src/field/field_map_obj.c | 2 +- src/field/field_player_avatar.c | 2 +- src/field/field_specials.c | 2 +- src/field/field_weather.c | 2 +- src/field/field_weather_2.c | 2 +- src/field/lottery_corner.c | 2 +- src/field/mauville_man.c | 2 +- src/field/overworld.c | 2 +- src/field/roamer.c | 2 +- src/field/scrcmd.c | 2 +- src/field/tv.c | 4 ++-- src/field/wild_encounter.c | 2 +- 17 files changed, 18 insertions(+), 18 deletions(-) (limited to 'src/field') diff --git a/src/field/battle_tower.c b/src/field/battle_tower.c index d6271643c..2b45766dd 100644 --- a/src/field/battle_tower.c +++ b/src/field/battle_tower.c @@ -14,7 +14,7 @@ #include "new_game.h" #include "overworld.h" #include "pokedex.h" -#include "rng.h" +#include "random.h" #include "save.h" #include "script_pokemon_80C4.h" #include "species.h" diff --git a/src/field/berry.c b/src/field/berry.c index cd1fc5c94..973bc56ff 100644 --- a/src/field/berry.c +++ b/src/field/berry.c @@ -8,7 +8,7 @@ #include "item_use.h" #include "items.h" #include "main.h" -#include "rng.h" +#include "random.h" #include "text.h" #define BERRY_NAME_LENGTH 6 diff --git a/src/field/daycare.c b/src/field/daycare.c index 2b58a0d5d..9f7e3b989 100644 --- a/src/field/daycare.c +++ b/src/field/daycare.c @@ -12,7 +12,7 @@ #include "party_menu.h" #include "pokemon.h" #include "pokemon_storage_system.h" -#include "rng.h" +#include "random.h" #include "script.h" #include "songs.h" #include "sound.h" diff --git a/src/field/dewford_trend.c b/src/field/dewford_trend.c index 102784066..bdcd76ec5 100644 --- a/src/field/dewford_trend.c +++ b/src/field/dewford_trend.c @@ -3,7 +3,7 @@ #include "easy_chat.h" #include "event_data.h" #include "link.h" -#include "rng.h" +#include "random.h" #include "text.h" #include "ewram.h" diff --git a/src/field/easy_chat.c b/src/field/easy_chat.c index 8e7413516..7a4ae045e 100644 --- a/src/field/easy_chat.c +++ b/src/field/easy_chat.c @@ -4,7 +4,7 @@ #include "event_data.h" #include "field_message_box.h" #include "pokedex.h" -#include "rng.h" +#include "random.h" #include "string_util.h" #include "strings.h" #include "strings2.h" diff --git a/src/field/field_map_obj.c b/src/field/field_map_obj.c index 98f6fedab..20edbc34f 100644 --- a/src/field/field_map_obj.c +++ b/src/field/field_map_obj.c @@ -10,7 +10,7 @@ #include "field_player_avatar.h" #include "fieldmap.h" #include "palette.h" -#include "rng.h" +#include "random.h" #include "overworld.h" #include "sprite.h" #include "metatile_behavior.h" diff --git a/src/field/field_player_avatar.c b/src/field/field_player_avatar.c index e7da9b1b7..a26638b39 100644 --- a/src/field/field_player_avatar.c +++ b/src/field/field_player_avatar.c @@ -13,7 +13,7 @@ #include "menu.h" #include "metatile_behavior.h" #include "party_menu.h" -#include "rng.h" +#include "random.h" #include "overworld.h" #include "rotating_gate.h" #include "script.h" diff --git a/src/field/field_specials.c b/src/field/field_specials.c index 48e9b44aa..e5bb1b798 100644 --- a/src/field/field_specials.c +++ b/src/field/field_specials.c @@ -34,7 +34,7 @@ #include "battle_tower.h" #include "field_weather.h" #include "pokemon_summary_screen.h" -#include "rng.h" +#include "random.h" #if ENGLISH #define CHAR_DECIMAL_SEPARATOR CHAR_PERIOD diff --git a/src/field/field_weather.c b/src/field/field_weather.c index 2d4711b81..80fe21c4b 100644 --- a/src/field/field_weather.c +++ b/src/field/field_weather.c @@ -3,7 +3,7 @@ #include "field_map_obj.h" #include "field_weather.h" #include "palette.h" -#include "rng.h" +#include "random.h" #include "script.h" #include "songs.h" #include "sound.h" diff --git a/src/field/field_weather_2.c b/src/field/field_weather_2.c index fa97df459..64a5c5dc5 100644 --- a/src/field/field_weather_2.c +++ b/src/field/field_weather_2.c @@ -1,7 +1,7 @@ #include "global.h" #include "field_map_obj.h" #include "field_weather.h" -#include "rng.h" +#include "random.h" #include "script.h" #include "songs.h" #include "sound.h" diff --git a/src/field/lottery_corner.c b/src/field/lottery_corner.c index c2c25b9ac..5f0ce2907 100644 --- a/src/field/lottery_corner.c +++ b/src/field/lottery_corner.c @@ -2,7 +2,7 @@ #include "lottery_corner.h" #include "event_data.h" #include "items.h" -#include "rng.h" +#include "random.h" #include "species.h" #include "string_util.h" #include "text.h" diff --git a/src/field/mauville_man.c b/src/field/mauville_man.c index 33bc39648..a27c54df7 100644 --- a/src/field/mauville_man.c +++ b/src/field/mauville_man.c @@ -7,7 +7,7 @@ #include "m4a.h" #include "menu.h" #include "overworld.h" -#include "rng.h" +#include "random.h" #include "script.h" #include "songs.h" #include "sound.h" diff --git a/src/field/overworld.c b/src/field/overworld.c index 59aac5c33..e6a6a9f11 100644 --- a/src/field/overworld.c +++ b/src/field/overworld.c @@ -32,7 +32,7 @@ #include "new_game.h" #include "palette.h" #include "play_time.h" -#include "rng.h" +#include "random.h" #include "roamer.h" #include "rotating_gate.h" #include "safari_zone.h" diff --git a/src/field/roamer.c b/src/field/roamer.c index c45c87601..d8ea1ef52 100644 --- a/src/field/roamer.c +++ b/src/field/roamer.c @@ -1,7 +1,7 @@ #include "global.h" #include "roamer.h" #include "pokemon.h" -#include "rng.h" +#include "random.h" #include "species.h" #ifdef SAPPHIRE diff --git a/src/field/scrcmd.c b/src/field/scrcmd.c index 28584d4d0..28aa3355a 100644 --- a/src/field/scrcmd.c +++ b/src/field/scrcmd.c @@ -30,7 +30,7 @@ #include "palette.h" #include "party_menu.h" #include "pokemon.h" -#include "rng.h" +#include "random.h" #include "overworld.h" #include "rtc.h" #include "script.h" diff --git a/src/field/tv.c b/src/field/tv.c index 29d012f28..e58adebc9 100644 --- a/src/field/tv.c +++ b/src/field/tv.c @@ -9,7 +9,7 @@ #include "field_message_box.h" #include "field_camera.h" #include "flags.h" -#include "rng.h" +#include "random.h" #include "string_util.h" #include "text.h" #include "species.h" @@ -30,7 +30,7 @@ #include "naming_screen.h" #include "pokedex.h" #include "region_map.h" -#include "rng.h" +#include "random.h" #include "overworld.h" #include "rtc.h" #include "script_menu.h" diff --git a/src/field/wild_encounter.c b/src/field/wild_encounter.c index 390898917..df0b12207 100644 --- a/src/field/wild_encounter.c +++ b/src/field/wild_encounter.c @@ -8,7 +8,7 @@ #include "map_constants.h" #include "metatile_behavior.h" #include "pokeblock.h" -#include "rng.h" +#include "random.h" #include "roamer.h" #include "overworld.h" #include "safari_zone.h" -- cgit v1.2.3 From 5f242ae6cee377d219defa8290ef1c164b003f52 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sun, 26 Nov 2017 13:00:26 -0600 Subject: abilities, songs, species constants --- src/field/battle_tower.c | 2 +- src/field/berry_tag_screen.c | 2 +- src/field/bike.c | 2 +- src/field/birch_pc.c | 2 +- src/field/braille_puzzles.c | 4 ++-- src/field/choose_party.c | 2 +- src/field/daycare.c | 4 ++-- src/field/decoration.c | 2 +- src/field/field_control_avatar.c | 2 +- src/field/field_door.c | 2 +- src/field/field_effect.c | 2 +- src/field/field_effect_helpers.c | 2 +- src/field/field_fadetransition.c | 2 +- src/field/field_player_avatar.c | 2 +- src/field/field_special_scene.c | 2 +- src/field/field_specials.c | 8 ++++---- src/field/field_tasks.c | 2 +- src/field/field_weather.c | 2 +- src/field/field_weather_effects.c | 2 +- src/field/fldeff_cut.c | 2 +- src/field/fldeff_decoration.c | 2 +- src/field/fldeff_flash.c | 2 +- src/field/fldeff_poison.c | 2 +- src/field/fldeff_secret_base_pc.c | 2 +- src/field/fldeff_secretpower.c | 2 +- src/field/fldeff_softboiled.c | 2 +- src/field/item_menu.c | 2 +- src/field/item_use.c | 2 +- src/field/lottery_corner.c | 2 +- src/field/mauville_man.c | 2 +- src/field/menu_helpers.c | 2 +- src/field/overworld.c | 4 ++-- src/field/party_menu.c | 4 ++-- src/field/player_pc.c | 2 +- src/field/pokeblock.c | 2 +- src/field/region_map.c | 2 +- src/field/roamer.c | 2 +- src/field/rotating_gate.c | 2 +- src/field/script_menu.c | 2 +- src/field/secret_base.c | 6 +++--- src/field/shop.c | 2 +- src/field/start_menu.c | 2 +- src/field/starter_choose.c | 4 ++-- src/field/trader.c | 2 +- src/field/tv.c | 4 ++-- src/field/use_pokeblock.c | 2 +- src/field/wallclock.c | 2 +- src/field/wild_encounter.c | 4 ++-- 48 files changed, 60 insertions(+), 60 deletions(-) (limited to 'src/field') diff --git a/src/field/battle_tower.c b/src/field/battle_tower.c index 2b45766dd..5f2a84d06 100644 --- a/src/field/battle_tower.c +++ b/src/field/battle_tower.c @@ -17,7 +17,7 @@ #include "random.h" #include "save.h" #include "script_pokemon_80C4.h" -#include "species.h" +#include "constants/species.h" #include "string_util.h" #include "task.h" #include "text.h" diff --git a/src/field/berry_tag_screen.c b/src/field/berry_tag_screen.c index 55405138d..9fe720b36 100644 --- a/src/field/berry_tag_screen.c +++ b/src/field/berry_tag_screen.c @@ -11,7 +11,7 @@ #include "menu_helpers.h" #include "palette.h" #include "overworld.h" -#include "songs.h" +#include "constants/songs.h" #include "sound.h" #include "sprite.h" #include "string_util.h" diff --git a/src/field/bike.c b/src/field/bike.c index e36ae1798..75c99aaa1 100644 --- a/src/field/bike.c +++ b/src/field/bike.c @@ -7,7 +7,7 @@ #include "global.fieldmap.h" #include "metatile_behavior.h" #include "overworld.h" -#include "songs.h" +#include "constants/songs.h" #include "sound.h" extern bool8 gBikeCyclingChallenge; diff --git a/src/field/birch_pc.c b/src/field/birch_pc.c index 9872dd54d..4b0025504 100644 --- a/src/field/birch_pc.c +++ b/src/field/birch_pc.c @@ -2,7 +2,7 @@ #include "event_data.h" #include "field_message_box.h" #include "pokedex.h" -#include "species.h" +#include "constants/species.h" extern u16 gSpecialVar_0x8004; extern u16 gSpecialVar_0x8005; diff --git a/src/field/braille_puzzles.c b/src/field/braille_puzzles.c index b11b1ff3a..c5e12c839 100644 --- a/src/field/braille_puzzles.c +++ b/src/field/braille_puzzles.c @@ -11,9 +11,9 @@ #include "menu.h" #include "rom6.h" #include "script.h" -#include "songs.h" +#include "constants/songs.h" #include "sound.h" -#include "species.h" +#include "constants/species.h" #include "task.h" #include "text.h" diff --git a/src/field/choose_party.c b/src/field/choose_party.c index c3845e48b..8d92719d1 100644 --- a/src/field/choose_party.c +++ b/src/field/choose_party.c @@ -11,7 +11,7 @@ #include "pokemon_summary_screen.h" #include "overworld.h" #include "script.h" -#include "songs.h" +#include "constants/songs.h" #include "sound.h" #include "strings.h" #include "string_util.h" diff --git a/src/field/daycare.c b/src/field/daycare.c index 9f7e3b989..d3c86e812 100644 --- a/src/field/daycare.c +++ b/src/field/daycare.c @@ -14,9 +14,9 @@ #include "pokemon_storage_system.h" #include "random.h" #include "script.h" -#include "songs.h" +#include "constants/songs.h" #include "sound.h" -#include "species.h" +#include "constants/species.h" #include "string_util.h" #include "strings2.h" #include "text.h" diff --git a/src/field/decoration.c b/src/field/decoration.c index 8e6276a2f..89d8cbefd 100644 --- a/src/field/decoration.c +++ b/src/field/decoration.c @@ -3,7 +3,7 @@ #include "map_object_constants.h" #include "overworld.h" #include "sound.h" -#include "songs.h" +#include "constants/songs.h" #include "string_util.h" #include "menu.h" #include "menu_helpers.h" diff --git a/src/field/field_control_avatar.c b/src/field/field_control_avatar.c index c7b4861d5..b7e7ec472 100644 --- a/src/field/field_control_avatar.c +++ b/src/field/field_control_avatar.c @@ -17,7 +17,7 @@ #include "safari_zone.h" #include "script.h" #include "secret_base.h" -#include "songs.h" +#include "constants/songs.h" #include "sound.h" #include "start_menu.h" #include "trainer_see.h" diff --git a/src/field/field_door.c b/src/field/field_door.c index ef349bca7..89dae725c 100644 --- a/src/field/field_door.c +++ b/src/field/field_door.c @@ -3,7 +3,7 @@ #include "field_camera.h" #include "fieldmap.h" #include "metatile_behavior.h" -#include "songs.h" +#include "constants/songs.h" #include "task.h" const u8 DoorAnimTiles_04[][0x100] = diff --git a/src/field/field_effect.c b/src/field/field_effect.c index 0ccbb6230..4337300da 100644 --- a/src/field/field_effect.c +++ b/src/field/field_effect.c @@ -12,7 +12,7 @@ #include "overworld.h" #include "task.h" #include "sound.h" -#include "songs.h" +#include "constants/songs.h" #include "decoration.h" #include "field_player_avatar.h" #include "field_map_obj_helpers.h" diff --git a/src/field/field_effect_helpers.c b/src/field/field_effect_helpers.c index c5b67fd9d..1d831d2e9 100644 --- a/src/field/field_effect_helpers.c +++ b/src/field/field_effect_helpers.c @@ -2,7 +2,7 @@ #include "sprite.h" #include "fieldmap.h" #include "metatile_behavior.h" -#include "songs.h" +#include "constants/songs.h" #include "sound.h" #include "field_map_obj.h" #include "field_camera.h" diff --git a/src/field/field_fadetransition.c b/src/field/field_fadetransition.c index 82776d18c..829ce2dfa 100644 --- a/src/field/field_fadetransition.c +++ b/src/field/field_fadetransition.c @@ -17,7 +17,7 @@ #include "palette.h" #include "overworld.h" #include "script.h" -#include "songs.h" +#include "constants/songs.h" #include "sound.h" #include "start_menu.h" #include "task.h" diff --git a/src/field/field_player_avatar.c b/src/field/field_player_avatar.c index a26638b39..166846ba0 100644 --- a/src/field/field_player_avatar.c +++ b/src/field/field_player_avatar.c @@ -17,7 +17,7 @@ #include "overworld.h" #include "rotating_gate.h" #include "script.h" -#include "songs.h" +#include "constants/songs.h" #include "sound.h" #include "strings2.h" #include "task.h" diff --git a/src/field/field_special_scene.c b/src/field/field_special_scene.c index 5758929b6..6ef98f5e9 100644 --- a/src/field/field_special_scene.c +++ b/src/field/field_special_scene.c @@ -11,7 +11,7 @@ #include "overworld.h" #include "script.h" #include "script_movement.h" -#include "songs.h" +#include "constants/songs.h" #include "sound.h" #include "sprite.h" #include "task.h" diff --git a/src/field/field_specials.c b/src/field/field_specials.c index e5bb1b798..279a7e3f6 100644 --- a/src/field/field_specials.c +++ b/src/field/field_specials.c @@ -14,19 +14,19 @@ #include "map_constants.h" #include "overworld.h" #include "script.h" -#include "songs.h" +#include "constants/songs.h" #include "string_util.h" #include "strings.h" #include "pokeblock.h" -#include "species.h" -#include "abilities.h" +#include "constants/species.h" +#include "constants/abilities.h" #include "moves.h" #include "text.h" #include "wallclock.h" #include "tv.h" #include "rtc.h" #include "link.h" -#include "songs.h" +#include "constants/songs.h" #include "sound.h" #include "menu.h" #include "starter_choose.h" diff --git a/src/field/field_tasks.c b/src/field/field_tasks.c index e938a57ef..2da0f7303 100644 --- a/src/field/field_tasks.c +++ b/src/field/field_tasks.c @@ -16,7 +16,7 @@ #include "fieldmap.h" #include "field_player_avatar.h" #include "field_camera.h" -#include "songs.h" +#include "constants/songs.h" #include "sound.h" #include "field_tasks.h" diff --git a/src/field/field_weather.c b/src/field/field_weather.c index ff7c2e4c4..19ccca3bf 100644 --- a/src/field/field_weather.c +++ b/src/field/field_weather.c @@ -5,7 +5,7 @@ #include "palette.h" #include "random.h" #include "script.h" -#include "songs.h" +#include "constants/songs.h" #include "sound.h" #include "sprite.h" #include "task.h" diff --git a/src/field/field_weather_effects.c b/src/field/field_weather_effects.c index b1dca6396..31eda4393 100644 --- a/src/field/field_weather_effects.c +++ b/src/field/field_weather_effects.c @@ -4,7 +4,7 @@ #include "overworld.h" #include "random.h" #include "script.h" -#include "songs.h" +#include "constants/songs.h" #include "sound.h" #include "sprite.h" #include "task.h" diff --git a/src/field/fldeff_cut.c b/src/field/fldeff_cut.c index 599c916a2..edf38d800 100644 --- a/src/field/fldeff_cut.c +++ b/src/field/fldeff_cut.c @@ -11,7 +11,7 @@ #include "overworld.h" #include "rom6.h" #include "script.h" -#include "songs.h" +#include "constants/songs.h" #include "sound.h" #include "sprite.h" #include "task.h" diff --git a/src/field/fldeff_decoration.c b/src/field/fldeff_decoration.c index b0ac30062..d58f53a3c 100644 --- a/src/field/fldeff_decoration.c +++ b/src/field/fldeff_decoration.c @@ -6,7 +6,7 @@ #include "field_player_avatar.h" #include "fieldmap.h" #include "script.h" -#include "songs.h" +#include "constants/songs.h" #include "sound.h" #include "string_util.h" #include "strings.h" diff --git a/src/field/fldeff_flash.c b/src/field/fldeff_flash.c index 30423a3f9..920791ce2 100644 --- a/src/field/fldeff_flash.c +++ b/src/field/fldeff_flash.c @@ -7,7 +7,7 @@ #include "overworld.h" #include "rom6.h" #include "script.h" -#include "songs.h" +#include "constants/songs.h" #include "sound.h" #include "sprite.h" #include "task.h" diff --git a/src/field/fldeff_poison.c b/src/field/fldeff_poison.c index 0a0cf5539..b0052d59d 100644 --- a/src/field/fldeff_poison.c +++ b/src/field/fldeff_poison.c @@ -1,7 +1,7 @@ #include "global.h" #include "fldeff_poison.h" #include "task.h" -#include "songs.h" +#include "constants/songs.h" #include "sound.h" static void Task_FieldPoisonEffect(u8 taskId) diff --git a/src/field/fldeff_secret_base_pc.c b/src/field/fldeff_secret_base_pc.c index ead970b27..8d71a4fb9 100644 --- a/src/field/fldeff_secret_base_pc.c +++ b/src/field/fldeff_secret_base_pc.c @@ -5,7 +5,7 @@ #include "field_player_avatar.h" #include "fieldmap.h" #include "script.h" -#include "songs.h" +#include "constants/songs.h" #include "sound.h" #include "task.h" diff --git a/src/field/fldeff_secretpower.c b/src/field/fldeff_secretpower.c index 5ec4407ae..cd9a2ae36 100644 --- a/src/field/fldeff_secretpower.c +++ b/src/field/fldeff_secretpower.c @@ -10,7 +10,7 @@ #include "rom6.h" #include "script.h" #include "secret_base.h" -#include "songs.h" +#include "constants/songs.h" #include "sound.h" extern u8 gUnknown_081A2CE6[]; diff --git a/src/field/fldeff_softboiled.c b/src/field/fldeff_softboiled.c index c2a315233..a574232a8 100644 --- a/src/field/fldeff_softboiled.c +++ b/src/field/fldeff_softboiled.c @@ -4,7 +4,7 @@ #include "party_menu.h" #include "pokemon.h" #include "pokemon_menu.h" -#include "songs.h" +#include "constants/songs.h" #include "sound.h" #include "sprite.h" #include "strings.h" diff --git a/src/field/item_menu.c b/src/field/item_menu.c index 67362d5f3..7d4b90bad 100644 --- a/src/field/item_menu.c +++ b/src/field/item_menu.c @@ -25,7 +25,7 @@ #include "pokemon_menu.h" #include "overworld.h" #include "script.h" -#include "songs.h" +#include "constants/songs.h" #include "sound.h" #include "sprite.h" #include "strings.h" diff --git a/src/field/item_use.c b/src/field/item_use.c index 14b13ca3b..764e78800 100644 --- a/src/field/item_use.c +++ b/src/field/item_use.c @@ -29,7 +29,7 @@ #include "overworld.h" #include "rom_8094928.h" #include "script.h" -#include "songs.h" +#include "constants/songs.h" #include "sound.h" #include "string_util.h" #include "strings.h" diff --git a/src/field/lottery_corner.c b/src/field/lottery_corner.c index 5f0ce2907..b3bdeb494 100644 --- a/src/field/lottery_corner.c +++ b/src/field/lottery_corner.c @@ -3,7 +3,7 @@ #include "event_data.h" #include "items.h" #include "random.h" -#include "species.h" +#include "constants/species.h" #include "string_util.h" #include "text.h" diff --git a/src/field/mauville_man.c b/src/field/mauville_man.c index a27c54df7..7c9c072a1 100644 --- a/src/field/mauville_man.c +++ b/src/field/mauville_man.c @@ -9,7 +9,7 @@ #include "overworld.h" #include "random.h" #include "script.h" -#include "songs.h" +#include "constants/songs.h" #include "sound.h" #include "string_util.h" #include "strings.h" diff --git a/src/field/menu_helpers.c b/src/field/menu_helpers.c index 8e13e5546..e49c023c6 100644 --- a/src/field/menu_helpers.c +++ b/src/field/menu_helpers.c @@ -8,7 +8,7 @@ #include "menu.h" #include "menu_helpers.h" #include "overworld.h" -#include "songs.h" +#include "constants/songs.h" #include "sound.h" #include "sprite.h" #include "task.h" diff --git a/src/field/overworld.c b/src/field/overworld.c index ca59426fa..d286a1951 100644 --- a/src/field/overworld.c +++ b/src/field/overworld.c @@ -39,9 +39,9 @@ #include "script.h" #include "script_pokemon_80C4.h" #include "secret_base.h" -#include "songs.h" +#include "constants/songs.h" #include "sound.h" -#include "species.h" +#include "constants/species.h" #include "start_menu.h" #include "task.h" #include "tileset_anim.h" diff --git a/src/field/party_menu.c b/src/field/party_menu.c index a8620570b..a023a42ad 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -25,9 +25,9 @@ #include "pokemon_summary_screen.h" #include "rom_8077ABC.h" #include "rom_8094928.h" -#include "songs.h" +#include "constants/songs.h" #include "sound.h" -#include "species.h" +#include "constants/species.h" #include "sprite.h" #include "string_util.h" #include "strings.h" diff --git a/src/field/player_pc.c b/src/field/player_pc.c index ce78a88d8..2313d8c97 100644 --- a/src/field/player_pc.c +++ b/src/field/player_pc.c @@ -15,7 +15,7 @@ #include "string_util.h" #include "strings.h" #include "task.h" -#include "songs.h" +#include "constants/songs.h" #include "name_string_util.h" #include "mail.h" #include "overworld.h" diff --git a/src/field/pokeblock.c b/src/field/pokeblock.c index 5aa03ff7a..56b197ca3 100644 --- a/src/field/pokeblock.c +++ b/src/field/pokeblock.c @@ -23,7 +23,7 @@ #include "item.h" #include "items.h" #include "sound.h" -#include "songs.h" +#include "constants/songs.h" #include "safari_zone.h" #include "event_data.h" #include "pokeblock.h" diff --git a/src/field/region_map.c b/src/field/region_map.c index 241b38bf6..df51d6173 100644 --- a/src/field/region_map.c +++ b/src/field/region_map.c @@ -11,7 +11,7 @@ #include "region_map.h" #include "overworld.h" #include "secret_base.h" -#include "songs.h" +#include "constants/songs.h" #include "sprite.h" #include "strings.h" #include "string_util.h" diff --git a/src/field/roamer.c b/src/field/roamer.c index d8ea1ef52..2eb26ef9d 100644 --- a/src/field/roamer.c +++ b/src/field/roamer.c @@ -2,7 +2,7 @@ #include "roamer.h" #include "pokemon.h" #include "random.h" -#include "species.h" +#include "constants/species.h" #ifdef SAPPHIRE #define ROAMER_SPECIES SPECIES_LATIAS diff --git a/src/field/rotating_gate.c b/src/field/rotating_gate.c index a672f3489..c3b6a8a71 100644 --- a/src/field/rotating_gate.c +++ b/src/field/rotating_gate.c @@ -4,7 +4,7 @@ #include "field_map_obj.h" #include "fieldmap.h" #include "map_constants.h" -#include "songs.h" +#include "constants/songs.h" #include "sound.h" #include "sprite.h" diff --git a/src/field/script_menu.c b/src/field/script_menu.c index e25e74d8c..caa1d7562 100644 --- a/src/field/script_menu.c +++ b/src/field/script_menu.c @@ -6,7 +6,7 @@ #include "menu.h" #include "palette.h" #include "script.h" -#include "songs.h" +#include "constants/songs.h" #include "sound.h" #include "sprite.h" #include "strings.h" diff --git a/src/field/secret_base.c b/src/field/secret_base.c index 34352f39a..3ada632dd 100644 --- a/src/field/secret_base.c +++ b/src/field/secret_base.c @@ -1,7 +1,7 @@ #include "global.h" #include "secret_base.h" #include "decoration.h" -#include "species.h" +#include "constants/species.h" #include "items.h" #include "moves.h" #include "event_data.h" @@ -16,7 +16,7 @@ #include "link.h" #include "main.h" #include "sound.h" -#include "songs.h" +#include "constants/songs.h" #include "map_constants.h" #include "map_name_popup.h" #include "menu.h" @@ -27,7 +27,7 @@ #include "overworld.h" #include "script.h" #include "sound.h" -#include "species.h" +#include "constants/species.h" #include "string_util.h" #include "strings.h" #include "task.h" diff --git a/src/field/shop.c b/src/field/shop.c index 493d8c748..cb97ea266 100644 --- a/src/field/shop.c +++ b/src/field/shop.c @@ -22,7 +22,7 @@ #include "item.h" #include "decoration.h" #include "items.h" -#include "songs.h" +#include "constants/songs.h" #include "overworld.h" #include "decoration_inventory.h" #include "field_camera.h" diff --git a/src/field/start_menu.c b/src/field/start_menu.c index 6e44090df..7913e5527 100644 --- a/src/field/start_menu.c +++ b/src/field/start_menu.c @@ -20,7 +20,7 @@ #include "save.h" #include "save_menu_util.h" #include "script.h" -#include "songs.h" +#include "constants/songs.h" #include "sound.h" #include "sprite.h" #include "string_util.h" diff --git a/src/field/starter_choose.c b/src/field/starter_choose.c index 49590f83a..149eaa03d 100644 --- a/src/field/starter_choose.c +++ b/src/field/starter_choose.c @@ -6,9 +6,9 @@ #include "menu.h" #include "palette.h" #include "pokedex.h" -#include "songs.h" +#include "constants/songs.h" #include "sound.h" -#include "species.h" +#include "constants/species.h" #include "sprite.h" #include "string_util.h" #include "strings.h" diff --git a/src/field/trader.c b/src/field/trader.c index 61f48fad8..69eef1152 100644 --- a/src/field/trader.c +++ b/src/field/trader.c @@ -7,7 +7,7 @@ #include "menu.h" #include "menu_helpers.h" #include "script.h" -#include "songs.h" +#include "constants/songs.h" #include "sound.h" #include "string_util.h" #include "strings.h" diff --git a/src/field/tv.c b/src/field/tv.c index e58adebc9..28737ecaa 100644 --- a/src/field/tv.c +++ b/src/field/tv.c @@ -12,7 +12,7 @@ #include "random.h" #include "string_util.h" #include "text.h" -#include "species.h" +#include "constants/species.h" #include "pokedex.h" #include "naming_screen.h" #include "overworld.h" @@ -34,7 +34,7 @@ #include "overworld.h" #include "rtc.h" #include "script_menu.h" -#include "species.h" +#include "constants/species.h" #include "string_util.h" #include "strings.h" #include "text.h" diff --git a/src/field/use_pokeblock.c b/src/field/use_pokeblock.c index d301d93d6..8155b4216 100644 --- a/src/field/use_pokeblock.c +++ b/src/field/use_pokeblock.c @@ -15,7 +15,7 @@ #include "text.h" #include "menu.h" #include "sound.h" -#include "songs.h" +#include "constants/songs.h" #include "pokeblock.h" #define GFX_TAG_CONDITIONUPDOWN 0 diff --git a/src/field/wallclock.c b/src/field/wallclock.c index d86b1bc95..2892d09f9 100644 --- a/src/field/wallclock.c +++ b/src/field/wallclock.c @@ -5,7 +5,7 @@ #include "menu.h" #include "palette.h" #include "rtc.h" -#include "songs.h" +#include "constants/songs.h" #include "sound.h" #include "strings2.h" #include "task.h" diff --git a/src/field/wild_encounter.c b/src/field/wild_encounter.c index df0b12207..b19b1d4c2 100644 --- a/src/field/wild_encounter.c +++ b/src/field/wild_encounter.c @@ -1,6 +1,6 @@ #include "global.h" #include "wild_encounter.h" -#include "abilities.h" +#include "constants/abilities.h" #include "battle_setup.h" #include "event_data.h" #include "field_player_avatar.h" @@ -13,7 +13,7 @@ #include "overworld.h" #include "safari_zone.h" #include "script.h" -#include "species.h" +#include "constants/species.h" #include "tv.h" const struct WildPokemon PetalburgCity_WaterMons [] = -- cgit v1.2.3 From 43349392dc4c79494af0e0727065c57ff78e1e92 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sun, 26 Nov 2017 14:04:00 -0600 Subject: easy_chat constants --- src/field/bard_music.c | 2 +- src/field/battle_tower.c | 1 + src/field/dewford_trend.c | 1 + src/field/easy_chat.c | 1 + src/field/mauville_man.c | 1 + src/field/tv.c | 2 +- 6 files changed, 6 insertions(+), 2 deletions(-) (limited to 'src/field') diff --git a/src/field/bard_music.c b/src/field/bard_music.c index daf003233..335ba974e 100644 --- a/src/field/bard_music.c +++ b/src/field/bard_music.c @@ -1,6 +1,6 @@ #include "global.h" #include "bard_music.h" -#include "easy_chat.h" +#include "constants/easy_chat.h" struct BardSound { diff --git a/src/field/battle_tower.c b/src/field/battle_tower.c index 5f2a84d06..12a2f3f11 100644 --- a/src/field/battle_tower.c +++ b/src/field/battle_tower.c @@ -5,6 +5,7 @@ #include "battle_transition.h" #include "data2.h" #include "easy_chat.h" +#include "constants/easy_chat.h" #include "event_data.h" #include "item.h" #include "items.h" diff --git a/src/field/dewford_trend.c b/src/field/dewford_trend.c index bdcd76ec5..90ea74f77 100644 --- a/src/field/dewford_trend.c +++ b/src/field/dewford_trend.c @@ -1,6 +1,7 @@ #include "global.h" #include "dewford_trend.h" #include "easy_chat.h" +#include "constants/easy_chat.h" #include "event_data.h" #include "link.h" #include "random.h" diff --git a/src/field/easy_chat.c b/src/field/easy_chat.c index 7a4ae045e..1dce5863e 100644 --- a/src/field/easy_chat.c +++ b/src/field/easy_chat.c @@ -1,5 +1,6 @@ #include "global.h" #include "easy_chat.h" +#include "constants/easy_chat.h" #include "data2.h" #include "event_data.h" #include "field_message_box.h" diff --git a/src/field/mauville_man.c b/src/field/mauville_man.c index 7c9c072a1..fad6674db 100644 --- a/src/field/mauville_man.c +++ b/src/field/mauville_man.c @@ -2,6 +2,7 @@ #include "bard_music.h" #include "mauville_man.h" #include "easy_chat.h" +#include "constants/easy_chat.h" #include "event_data.h" #include "field_message_box.h" #include "m4a.h" diff --git a/src/field/tv.c b/src/field/tv.c index 28737ecaa..5c42fc7ec 100644 --- a/src/field/tv.c +++ b/src/field/tv.c @@ -20,7 +20,7 @@ #include "strings.h" #include "battle.h" #include "link.h" -#include "easy_chat.h" +#include "constants/easy_chat.h" #include "field_map_obj.h" #include "field_specials.h" #include "item.h" -- cgit v1.2.3 From e7215091ee44b26d83753104f879671db4224803 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sun, 26 Nov 2017 14:10:28 -0600 Subject: fix German build --- src/field/bard_music.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/field') diff --git a/src/field/bard_music.c b/src/field/bard_music.c index 335ba974e..daf003233 100644 --- a/src/field/bard_music.c +++ b/src/field/bard_music.c @@ -1,6 +1,6 @@ #include "global.h" #include "bard_music.h" -#include "constants/easy_chat.h" +#include "easy_chat.h" struct BardSound { -- cgit v1.2.3 From 00f85341a6d769cc23c4dfbf5fca8ad02835956c Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Sat, 25 Nov 2017 14:40:48 -0800 Subject: Mostly done decompiling pokemon_summary_screen --- src/field/choose_party.c | 1 - 1 file changed, 1 deletion(-) (limited to 'src/field') diff --git a/src/field/choose_party.c b/src/field/choose_party.c index c3845e48b..bf4d74c96 100644 --- a/src/field/choose_party.c +++ b/src/field/choose_party.c @@ -32,7 +32,6 @@ EWRAM_DATA u8 gSelectedOrderFromParty[3] = {0}; extern u8 sub_806BD58(u8, u8); extern void PartyMenuPrintMonsLevelOrStatus(void); extern void sub_806BC3C(u8, u8); -extern void ShowPokemonSummaryScreen(struct Pokemon *, u8, u8, void (*)(void), int); extern u8 GetMonStatusAndPokerus(); extern void PartyMenuPrintHP(); extern bool8 sub_80F9344(void); -- cgit v1.2.3 From b81a94c1edb86459187288ac7f005f4cf1a6c051 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Sat, 25 Nov 2017 18:26:45 -0800 Subject: Label the PokemonSummaryScreenStruct structs members --- src/field/choose_party.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/field') diff --git a/src/field/choose_party.c b/src/field/choose_party.c index bf4d74c96..e16da3a58 100644 --- a/src/field/choose_party.c +++ b/src/field/choose_party.c @@ -433,7 +433,7 @@ static void sub_81225D4(u8 taskId) DestroyTask(taskId); ewram1B000.unk262 = 1; - ShowPokemonSummaryScreen(gPlayerParty, r4, gPlayerPartyCount - 1, sub_81225A4, 0); + ShowPokemonSummaryScreen(gPlayerParty, r4, gPlayerPartyCount - 1, sub_81225A4, PSS_MODE_NORMAL); } } @@ -883,7 +883,7 @@ static void sub_8123034(u8 taskId) DestroyTask(taskId); ewram1B000.unk262 = 1; - ShowPokemonSummaryScreen(gPlayerParty, r4, gPlayerPartyCount - 1, sub_8123004, 0); + ShowPokemonSummaryScreen(gPlayerParty, r4, gPlayerPartyCount - 1, sub_8123004, PSS_MODE_NORMAL); } } -- cgit v1.2.3 From 026e017a16df44806b95435403a8e3b8dbe78084 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sun, 26 Nov 2017 15:10:56 -0600 Subject: flag, vars, items constants --- src/field/battle_tower.c | 6 +++--- src/field/berry.c | 2 +- src/field/berry_tag_screen.c | 2 +- src/field/bike.c | 2 +- src/field/braille_puzzles.c | 2 +- src/field/daycare.c | 4 ++-- src/field/field_control_avatar.c | 4 ++-- src/field/field_specials.c | 2 +- src/field/field_tasks.c | 4 ++-- src/field/item.c | 2 +- src/field/item_menu.c | 2 +- src/field/item_use.c | 4 ++-- src/field/lottery_corner.c | 2 +- src/field/menu_helpers.c | 2 +- src/field/party_menu.c | 4 ++-- src/field/player_pc.c | 2 +- src/field/pokeblock.c | 2 +- src/field/secret_base.c | 6 +++--- src/field/shop.c | 2 +- src/field/tv.c | 6 +++--- 20 files changed, 31 insertions(+), 31 deletions(-) (limited to 'src/field') diff --git a/src/field/battle_tower.c b/src/field/battle_tower.c index 12a2f3f11..37ef10c24 100644 --- a/src/field/battle_tower.c +++ b/src/field/battle_tower.c @@ -8,10 +8,10 @@ #include "constants/easy_chat.h" #include "event_data.h" #include "item.h" -#include "items.h" +#include "constants/items.h" #include "main.h" #include "map_object_constants.h" -#include "moves.h" +#include "constants/moves.h" #include "new_game.h" #include "overworld.h" #include "pokedex.h" @@ -24,7 +24,7 @@ #include "text.h" #include "trainer.h" #include "tv.h" -#include "vars.h" +#include "constants/vars.h" #include "ewram.h" #if ENGLISH diff --git a/src/field/berry.c b/src/field/berry.c index 973bc56ff..874a60aa7 100644 --- a/src/field/berry.c +++ b/src/field/berry.c @@ -6,7 +6,7 @@ #include "item.h" #include "item_menu.h" #include "item_use.h" -#include "items.h" +#include "constants/items.h" #include "main.h" #include "random.h" #include "text.h" diff --git a/src/field/berry_tag_screen.c b/src/field/berry_tag_screen.c index 9fe720b36..694599680 100644 --- a/src/field/berry_tag_screen.c +++ b/src/field/berry_tag_screen.c @@ -4,7 +4,7 @@ #include "decompress.h" #include "field_map_obj.h" #include "item_menu.h" -#include "items.h" +#include "constants/items.h" #include "item_use.h" #include "main.h" #include "menu.h" diff --git a/src/field/bike.c b/src/field/bike.c index 75c99aaa1..8db01b4b4 100644 --- a/src/field/bike.c +++ b/src/field/bike.c @@ -3,7 +3,7 @@ #include "field_map_obj.h" #include "field_player_avatar.h" #include "fieldmap.h" -#include "flags.h" +#include "constants/flags.h" #include "global.fieldmap.h" #include "metatile_behavior.h" #include "overworld.h" diff --git a/src/field/braille_puzzles.c b/src/field/braille_puzzles.c index c5e12c839..f5bb28a73 100644 --- a/src/field/braille_puzzles.c +++ b/src/field/braille_puzzles.c @@ -4,7 +4,7 @@ #include "field_camera.h" #include "field_effect.h" #include "fieldmap.h" -#include "flags.h" +#include "constants/flags.h" #include "main.h" #include "map_constants.h" #include "map_obj_lock.h" diff --git a/src/field/daycare.c b/src/field/daycare.c index d3c86e812..9ac63b3c7 100644 --- a/src/field/daycare.c +++ b/src/field/daycare.c @@ -2,11 +2,11 @@ #include "daycare.h" #include "event_data.h" #include "field_effect.h" -#include "items.h" +#include "constants/items.h" #include "mail_data.h" #include "main.h" #include "menu.h" -#include "moves.h" +#include "constants/moves.h" #include "name_string_util.h" #include "overworld.h" #include "party_menu.h" diff --git a/src/field/field_control_avatar.c b/src/field/field_control_avatar.c index b7e7ec472..c4e53b13f 100644 --- a/src/field/field_control_avatar.c +++ b/src/field/field_control_avatar.c @@ -10,7 +10,7 @@ #include "field_poison.h" #include "field_specials.h" #include "fieldmap.h" -#include "flags.h" +#include "constants/flags.h" #include "item_menu.h" #include "metatile_behavior.h" #include "overworld.h" @@ -21,7 +21,7 @@ #include "sound.h" #include "start_menu.h" #include "trainer_see.h" -#include "vars.h" +#include "constants/vars.h" #include "wild_encounter.h" struct Coords32 diff --git a/src/field/field_specials.c b/src/field/field_specials.c index 279a7e3f6..f98c81041 100644 --- a/src/field/field_specials.c +++ b/src/field/field_specials.c @@ -20,7 +20,7 @@ #include "pokeblock.h" #include "constants/species.h" #include "constants/abilities.h" -#include "moves.h" +#include "constants/moves.h" #include "text.h" #include "wallclock.h" #include "tv.h" diff --git a/src/field/field_tasks.c b/src/field/field_tasks.c index 2da0f7303..108ba64ba 100644 --- a/src/field/field_tasks.c +++ b/src/field/field_tasks.c @@ -1,10 +1,10 @@ #include "global.h" #include "task.h" #include "main.h" -#include "vars.h" +#include "constants/vars.h" #include "bike.h" #include "item.h" -#include "items.h" +#include "constants/items.h" #include "event_data.h" #include "overworld.h" #include "clock.h" diff --git a/src/field/item.c b/src/field/item.c index fd49f5c39..cf7d8bd42 100644 --- a/src/field/item.c +++ b/src/field/item.c @@ -1,7 +1,7 @@ #include "global.h" #include "hold_effects.h" #include "item.h" -#include "items.h" +#include "constants/items.h" #include "item_use.h" #include "berry.h" #include "string_util.h" diff --git a/src/field/item_menu.c b/src/field/item_menu.c index 7d4b90bad..8f7cb3d90 100644 --- a/src/field/item_menu.c +++ b/src/field/item_menu.c @@ -8,7 +8,7 @@ #include "field_player_avatar.h" #include "graphics.h" #include "item.h" -#include "items.h" +#include "constants/items.h" #include "item_menu.h" #include "item_use.h" #include "link.h" diff --git a/src/field/item_use.c b/src/field/item_use.c index 764e78800..48b159c1c 100644 --- a/src/field/item_use.c +++ b/src/field/item_use.c @@ -14,7 +14,7 @@ #include "fieldmap.h" #include "item.h" #include "item_menu.h" -#include "items.h" +#include "constants/items.h" #include "mail.h" #include "main.h" #include "map_obj_lock.h" @@ -34,7 +34,7 @@ #include "string_util.h" #include "strings.h" #include "task.h" -#include "vars.h" +#include "constants/vars.h" extern void (*gFieldItemUseCallback)(u8); extern void (*gFieldCallback)(void); diff --git a/src/field/lottery_corner.c b/src/field/lottery_corner.c index b3bdeb494..2cfdb7f88 100644 --- a/src/field/lottery_corner.c +++ b/src/field/lottery_corner.c @@ -1,7 +1,7 @@ #include "global.h" #include "lottery_corner.h" #include "event_data.h" -#include "items.h" +#include "constants/items.h" #include "random.h" #include "constants/species.h" #include "string_util.h" diff --git a/src/field/menu_helpers.c b/src/field/menu_helpers.c index e49c023c6..4d5c6478c 100644 --- a/src/field/menu_helpers.c +++ b/src/field/menu_helpers.c @@ -1,6 +1,6 @@ #include "global.h" #include "item_menu.h" -#include "items.h" +#include "constants/items.h" #include "link.h" #include "mail_data.h" #include "main.h" diff --git a/src/field/party_menu.c b/src/field/party_menu.c index a023a42ad..11dd1dd90 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -11,12 +11,12 @@ #include "item.h" #include "item_use.h" #include "item_menu.h" -#include "items.h" +#include "constants/items.h" #include "mail_data.h" #include "main.h" #include "menu.h" #include "menu_helpers.h" -#include "moves.h" +#include "constants/moves.h" #include "palette.h" #include "pokemon.h" #include "pokemon_icon.h" diff --git a/src/field/player_pc.c b/src/field/player_pc.c index 2313d8c97..d92d13ce4 100644 --- a/src/field/player_pc.c +++ b/src/field/player_pc.c @@ -5,7 +5,7 @@ #include "field_weather.h" #include "item.h" #include "item_menu.h" -#include "items.h" +#include "constants/items.h" #include "main.h" #include "menu.h" #include "menu_helpers.h" diff --git a/src/field/pokeblock.c b/src/field/pokeblock.c index 56b197ca3..3b70e7d76 100644 --- a/src/field/pokeblock.c +++ b/src/field/pokeblock.c @@ -21,7 +21,7 @@ #include "item_menu.h" #include "item_use.h" #include "item.h" -#include "items.h" +#include "constants/items.h" #include "sound.h" #include "constants/songs.h" #include "safari_zone.h" diff --git a/src/field/secret_base.c b/src/field/secret_base.c index 3ada632dd..257fe4ee7 100644 --- a/src/field/secret_base.c +++ b/src/field/secret_base.c @@ -2,8 +2,8 @@ #include "secret_base.h" #include "decoration.h" #include "constants/species.h" -#include "items.h" -#include "moves.h" +#include "constants/items.h" +#include "constants/moves.h" #include "event_data.h" #include "field_camera.h" #include "field_effect.h" @@ -32,7 +32,7 @@ #include "strings.h" #include "task.h" #include "text.h" -#include "vars.h" +#include "constants/vars.h" static void sub_80BC7D8(u8 taskId); diff --git a/src/field/shop.c b/src/field/shop.c index cb97ea266..23d668fc7 100644 --- a/src/field/shop.c +++ b/src/field/shop.c @@ -21,7 +21,7 @@ #include "fieldmap.h" #include "item.h" #include "decoration.h" -#include "items.h" +#include "constants/items.h" #include "constants/songs.h" #include "overworld.h" #include "decoration_inventory.h" diff --git a/src/field/tv.c b/src/field/tv.c index 5c42fc7ec..2d345eb6c 100644 --- a/src/field/tv.c +++ b/src/field/tv.c @@ -8,7 +8,7 @@ #include "fieldmap.h" #include "field_message_box.h" #include "field_camera.h" -#include "flags.h" +#include "constants/flags.h" #include "random.h" #include "string_util.h" #include "text.h" @@ -24,7 +24,7 @@ #include "field_map_obj.h" #include "field_specials.h" #include "item.h" -#include "items.h" +#include "constants/items.h" #include "link.h" #include "map_constants.h" #include "naming_screen.h" @@ -39,7 +39,7 @@ #include "strings.h" #include "text.h" #include "ewram.h" -#include "moves.h" +#include "constants/moves.h" #include "region_map_sections.h" struct UnkTvStruct -- cgit v1.2.3 From 1829f7e7195575e872eb378722a56b344e2a1cd7 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Sun, 26 Nov 2017 13:35:08 -0800 Subject: Cleanup pokemon_summary_screen --- src/field/party_menu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/field') diff --git a/src/field/party_menu.c b/src/field/party_menu.c index a8620570b..bee64fb27 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -4292,7 +4292,7 @@ void sub_806F3FC(u8 taskId) { if (!gPaletteFade.active) { - sub_809D9F0(gPlayerParty, ewram1C000.unk5, gPlayerPartyCount - 1, sub_808B564, ewram1C000.unk8); + ShowSelectMovePokemonSummaryScreen(gPlayerParty, ewram1C000.unk5, gPlayerPartyCount - 1, sub_808B564, ewram1C000.unk8); DestroyTask(taskId); } } -- cgit v1.2.3 From b80d40fb6977e58d5b001e063314c4e4faac5a02 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sun, 26 Nov 2017 16:00:01 -0600 Subject: map constants --- src/field/braille_puzzles.c | 10 ++++----- src/field/field_map_obj.c | 6 ++--- src/field/field_specials.c | 36 +++++++++++++++--------------- src/field/heal_location.c | 46 +++++++++++++++++++------------------- src/field/menu_helpers.c | 4 ++-- src/field/overworld.c | 52 +++++++++++++++++++++---------------------- src/field/region_map.c | 8 +++---- src/field/rotating_gate.c | 10 ++++----- src/field/secret_base.c | 54 ++++++++++++++++++++++----------------------- src/field/tv.c | 28 +++++++++++------------ src/field/wild_encounter.c | 6 ++--- 11 files changed, 130 insertions(+), 130 deletions(-) (limited to 'src/field') diff --git a/src/field/braille_puzzles.c b/src/field/braille_puzzles.c index f5bb28a73..122747928 100644 --- a/src/field/braille_puzzles.c +++ b/src/field/braille_puzzles.c @@ -6,7 +6,7 @@ #include "fieldmap.h" #include "constants/flags.h" #include "main.h" -#include "map_constants.h" +#include "constants/maps.h" #include "map_obj_lock.h" #include "menu.h" #include "rom6.h" @@ -25,8 +25,8 @@ extern u8 S_OpenRegiceChamber[]; // regiice event script bool8 ShouldDoBrailleDigEffect(void) { if (!FlagGet(SYS_BRAILLE_DIG) - && (gSaveBlock1.location.mapGroup == MAP_GROUP_SEALED_CHAMBER_OUTER_ROOM - && gSaveBlock1.location.mapNum == MAP_ID_SEALED_CHAMBER_OUTER_ROOM)) + && (gSaveBlock1.location.mapGroup == MAP_GROUP(MAP_SEALED_CHAMBER_OUTER_ROOM) + && gSaveBlock1.location.mapNum == MAP_NUM(MAP_SEALED_CHAMBER_OUTER_ROOM))) { if (gSaveBlock1.pos.x == 10 && gSaveBlock1.pos.y == 3) return TRUE; @@ -68,7 +68,7 @@ bool8 CheckRelicanthWailord(void) bool8 ShouldDoBrailleStrengthEffect(void) { - if (!FlagGet(SYS_BRAILLE_STRENGTH) && (gSaveBlock1.location.mapGroup == MAP_GROUP_DESERT_RUINS && gSaveBlock1.location.mapNum == MAP_ID_DESERT_RUINS)) + if (!FlagGet(SYS_BRAILLE_STRENGTH) && (gSaveBlock1.location.mapGroup == MAP_GROUP(MAP_DESERT_RUINS) && gSaveBlock1.location.mapNum == MAP_NUM(MAP_DESERT_RUINS))) { if (gSaveBlock1.pos.x == 10 && gSaveBlock1.pos.y == 23) return TRUE; @@ -98,7 +98,7 @@ void DoBrailleStrengthEffect(void) bool8 ShouldDoBrailleFlyEffect(void) { - if (!FlagGet(SYS_BRAILLE_FLY) && (gSaveBlock1.location.mapGroup == MAP_GROUP_ANCIENT_TOMB && gSaveBlock1.location.mapNum == MAP_ID_ANCIENT_TOMB)) + if (!FlagGet(SYS_BRAILLE_FLY) && (gSaveBlock1.location.mapGroup == MAP_GROUP(MAP_ANCIENT_TOMB) && gSaveBlock1.location.mapNum == MAP_NUM(MAP_ANCIENT_TOMB))) { if (gSaveBlock1.pos.x == 8 && gSaveBlock1.pos.y == 25) return TRUE; diff --git a/src/field/field_map_obj.c b/src/field/field_map_obj.c index 20edbc34f..816de8917 100644 --- a/src/field/field_map_obj.c +++ b/src/field/field_map_obj.c @@ -14,7 +14,7 @@ #include "overworld.h" #include "sprite.h" #include "metatile_behavior.h" -#include "map_constants.h" +#include "constants/maps.h" #include "map_object_constants.h" #include "trainer_see.h" @@ -7054,7 +7054,7 @@ bool8 sub_8062088(struct MapObject *mapObject, struct Sprite *sprite) bool8 sub_80620B0(struct MapObject *mapObject, struct Sprite *sprite) { u8 objectId; - if (!TryGetFieldObjectIdByLocalIdAndMap(0xFF, MAP_GROUP_PETALBURG_CITY, MAP_ID_PETALBURG_CITY, &objectId)) + if (!TryGetFieldObjectIdByLocalIdAndMap(0xFF, MAP_GROUP(MAP_PETALBURG_CITY), MAP_NUM(MAP_PETALBURG_CITY), &objectId)) { an_look_any(mapObject, sprite, sub_805FE90(mapObject->coords2.x, mapObject->coords2.y, gMapObjects[objectId].coords2.x, gMapObjects[objectId].coords2.y)); } @@ -7065,7 +7065,7 @@ bool8 sub_80620B0(struct MapObject *mapObject, struct Sprite *sprite) bool8 sub_806210C(struct MapObject *mapObject, struct Sprite *sprite) { u8 objectId; - if (!TryGetFieldObjectIdByLocalIdAndMap(0xFF, MAP_GROUP_PETALBURG_CITY, MAP_ID_PETALBURG_CITY, &objectId)) + if (!TryGetFieldObjectIdByLocalIdAndMap(0xFF, MAP_GROUP(MAP_PETALBURG_CITY), MAP_NUM(MAP_PETALBURG_CITY), &objectId)) { an_look_any(mapObject, sprite, GetOppositeDirection(sub_805FE90(mapObject->coords2.x, mapObject->coords2.y, gMapObjects[objectId].coords2.x, gMapObjects[objectId].coords2.y))); } diff --git a/src/field/field_specials.c b/src/field/field_specials.c index f98c81041..41fa146a5 100644 --- a/src/field/field_specials.c +++ b/src/field/field_specials.c @@ -11,7 +11,7 @@ #include "field_camera.h" #include "field_player_avatar.h" #include "main.h" -#include "map_constants.h" +#include "constants/maps.h" #include "overworld.h" #include "script.h" #include "constants/songs.h" @@ -207,7 +207,7 @@ u16 GetRecordedCyclingRoadResults(void) { } void UpdateCyclingRoadState(void) { - if (gUnknown_020297F0.mapNum == MAP_ID_ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE && gUnknown_020297F0.mapGroup == MAP_GROUP_ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE) + if (gUnknown_020297F0.mapNum == MAP_NUM(MAP_ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE) && gUnknown_020297F0.mapGroup == MAP_GROUP(MAP_ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE)) { return; } @@ -259,38 +259,38 @@ u8 GetSSTidalLocation(s8 *mapGroup, s8 *mapNum, s16 *x, s16 *y) case 2: if (*varCruiseStepCount < 60) { - *mapNum = MAP_ID_ROUTE134; + *mapNum = MAP_NUM(MAP_ROUTE134); *x = *varCruiseStepCount + 19; } else if (*varCruiseStepCount < 140) { - *mapNum = MAP_ID_ROUTE133; + *mapNum = MAP_NUM(MAP_ROUTE133); *x = *varCruiseStepCount - 60; } else { - *mapNum = MAP_ID_ROUTE132; + *mapNum = MAP_NUM(MAP_ROUTE132); *x = *varCruiseStepCount - 140; } break; case 7: if (*varCruiseStepCount < 66) { - *mapNum = MAP_ID_ROUTE132; + *mapNum = MAP_NUM(MAP_ROUTE132); *x = 65 - *varCruiseStepCount; } else if (*varCruiseStepCount < 146) { - *mapNum = MAP_ID_ROUTE133; + *mapNum = MAP_NUM(MAP_ROUTE133); *x = 145 - *varCruiseStepCount; } else { - *mapNum = MAP_ID_ROUTE134; + *mapNum = MAP_NUM(MAP_ROUTE134); *x = 224 - *varCruiseStepCount; } break; } - *mapGroup = MAP_GROUP_ROUTE132; + *mapGroup = MAP_GROUP(MAP_ROUTE132); *y = 20; return 0; } @@ -702,11 +702,11 @@ void CableCarWarp(void) { if (gSpecialVar_0x8004 != 0) { - Overworld_SetWarpDestination(MAP_GROUP_ROUTE112_CABLE_CAR_STATION, MAP_ID_ROUTE112_CABLE_CAR_STATION, -1, 6, 4); + Overworld_SetWarpDestination(MAP_GROUP(MAP_ROUTE112_CABLE_CAR_STATION), MAP_NUM(MAP_ROUTE112_CABLE_CAR_STATION), -1, 6, 4); } else { - Overworld_SetWarpDestination(MAP_GROUP_MT_CHIMNEY_CABLE_CAR_STATION, MAP_ID_MT_CHIMNEY_CABLE_CAR_STATION, -1, 6, 4); + Overworld_SetWarpDestination(MAP_GROUP(MAP_MT_CHIMNEY_CABLE_CAR_STATION), MAP_NUM(MAP_MT_CHIMNEY_CABLE_CAR_STATION), -1, 6, 4); } } @@ -1001,22 +1001,22 @@ void SetDepartmentStoreFloorVar(void) u8 deptStoreFloor; switch (gSaveBlock1.warp2.mapNum) { - case MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_1F: + case MAP_NUM(MAP_LILYCOVE_CITY_DEPARTMENT_STORE_1F): deptStoreFloor = 0; break; - case MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_2F: + case MAP_NUM(MAP_LILYCOVE_CITY_DEPARTMENT_STORE_2F): deptStoreFloor = 1; break; - case MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_3F: + case MAP_NUM(MAP_LILYCOVE_CITY_DEPARTMENT_STORE_3F): deptStoreFloor = 2; break; - case MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_4F: + case MAP_NUM(MAP_LILYCOVE_CITY_DEPARTMENT_STORE_4F): deptStoreFloor = 3; break; - case MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_5F: + case MAP_NUM(MAP_LILYCOVE_CITY_DEPARTMENT_STORE_5F): deptStoreFloor = 4; break; - case MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP: + case MAP_NUM(MAP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP): deptStoreFloor = 15; break; default: @@ -1881,7 +1881,7 @@ bool8 ScrSpecial_AreLeadMonEVsMaxedOut(void) u8 sub_810F5BC(void) { - if (!FlagGet(0xc7) && gSaveBlock1.location.mapGroup == MAP_GROUP_RUSTURF_TUNNEL && gSaveBlock1.location.mapNum == MAP_ID_RUSTURF_TUNNEL) + if (!FlagGet(0xc7) && gSaveBlock1.location.mapGroup == MAP_GROUP(MAP_RUSTURF_TUNNEL) && gSaveBlock1.location.mapNum == MAP_NUM(MAP_RUSTURF_TUNNEL)) { if (FlagGet(0x3a3)) { diff --git a/src/field/heal_location.c b/src/field/heal_location.c index 42bc18567..0b13f251f 100644 --- a/src/field/heal_location.c +++ b/src/field/heal_location.c @@ -1,33 +1,33 @@ #include "global.h" #include "heal_location.h" -#include "map_constants.h" +#include "constants/maps.h" #define NUM_HEAL_LOCATIONS 22 static const struct HealLocation sHealLocations[] = { - {MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F, MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F, 4, 2}, - {MAP_GROUP_LITTLEROOT_TOWN_MAYS_HOUSE_2F, MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_2F, 4, 2}, - {MAP_GROUP_PETALBURG_CITY, MAP_ID_PETALBURG_CITY, 20, 17}, - {MAP_GROUP_SLATEPORT_CITY, MAP_ID_SLATEPORT_CITY, 19, 20}, - {MAP_GROUP_MAUVILLE_CITY, MAP_ID_MAUVILLE_CITY, 22, 6}, - {MAP_GROUP_RUSTBORO_CITY, MAP_ID_RUSTBORO_CITY, 16, 39}, - {MAP_GROUP_FORTREE_CITY, MAP_ID_FORTREE_CITY, 5, 7}, - {MAP_GROUP_LILYCOVE_CITY, MAP_ID_LILYCOVE_CITY, 24, 15}, - {MAP_GROUP_MOSSDEEP_CITY, MAP_ID_MOSSDEEP_CITY, 28, 17}, - {MAP_GROUP_SOOTOPOLIS_CITY, MAP_ID_SOOTOPOLIS_CITY, 43, 32}, - {MAP_GROUP_EVER_GRANDE_CITY, MAP_ID_EVER_GRANDE_CITY, 27, 49}, - {MAP_GROUP_LITTLEROOT_TOWN, MAP_ID_LITTLEROOT_TOWN, 5, 9}, - {MAP_GROUP_LITTLEROOT_TOWN, MAP_ID_LITTLEROOT_TOWN, 14, 9}, - {MAP_GROUP_OLDALE_TOWN, MAP_ID_OLDALE_TOWN, 6, 17}, - {MAP_GROUP_DEWFORD_TOWN, MAP_ID_DEWFORD_TOWN, 2, 11}, - {MAP_GROUP_LAVARIDGE_TOWN, MAP_ID_LAVARIDGE_TOWN, 9, 7}, - {MAP_GROUP_FALLARBOR_TOWN, MAP_ID_FALLARBOR_TOWN, 14, 8}, - {MAP_GROUP_VERDANTURF_TOWN, MAP_ID_VERDANTURF_TOWN, 16, 4}, - {MAP_GROUP_PACIFIDLOG_TOWN, MAP_ID_PACIFIDLOG_TOWN, 8, 16}, - {MAP_GROUP_EVER_GRANDE_CITY, MAP_ID_EVER_GRANDE_CITY, 18, 6}, - {MAP_GROUP_BATTLE_TOWER_OUTSIDE, MAP_ID_BATTLE_TOWER_OUTSIDE, 14, 9}, - {MAP_GROUP_SOUTHERN_ISLAND_EXTERIOR, MAP_ID_SOUTHERN_ISLAND_EXTERIOR, 15, 20}, + {MAP_GROUP(MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F), MAP_NUM(MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F), 4, 2}, + {MAP_GROUP(MAP_LITTLEROOT_TOWN_MAYS_HOUSE_2F), MAP_NUM(MAP_LITTLEROOT_TOWN_MAYS_HOUSE_2F), 4, 2}, + {MAP_GROUP(MAP_PETALBURG_CITY), MAP_NUM(MAP_PETALBURG_CITY), 20, 17}, + {MAP_GROUP(MAP_SLATEPORT_CITY), MAP_NUM(MAP_SLATEPORT_CITY), 19, 20}, + {MAP_GROUP(MAP_MAUVILLE_CITY), MAP_NUM(MAP_MAUVILLE_CITY), 22, 6}, + {MAP_GROUP(MAP_RUSTBORO_CITY), MAP_NUM(MAP_RUSTBORO_CITY), 16, 39}, + {MAP_GROUP(MAP_FORTREE_CITY), MAP_NUM(MAP_FORTREE_CITY), 5, 7}, + {MAP_GROUP(MAP_LILYCOVE_CITY), MAP_NUM(MAP_LILYCOVE_CITY), 24, 15}, + {MAP_GROUP(MAP_MOSSDEEP_CITY), MAP_NUM(MAP_MOSSDEEP_CITY), 28, 17}, + {MAP_GROUP(MAP_SOOTOPOLIS_CITY), MAP_NUM(MAP_SOOTOPOLIS_CITY), 43, 32}, + {MAP_GROUP(MAP_EVER_GRANDE_CITY), MAP_NUM(MAP_EVER_GRANDE_CITY), 27, 49}, + {MAP_GROUP(MAP_LITTLEROOT_TOWN), MAP_NUM(MAP_LITTLEROOT_TOWN), 5, 9}, + {MAP_GROUP(MAP_LITTLEROOT_TOWN), MAP_NUM(MAP_LITTLEROOT_TOWN), 14, 9}, + {MAP_GROUP(MAP_OLDALE_TOWN), MAP_NUM(MAP_OLDALE_TOWN), 6, 17}, + {MAP_GROUP(MAP_DEWFORD_TOWN), MAP_NUM(MAP_DEWFORD_TOWN), 2, 11}, + {MAP_GROUP(MAP_LAVARIDGE_TOWN), MAP_NUM(MAP_LAVARIDGE_TOWN), 9, 7}, + {MAP_GROUP(MAP_FALLARBOR_TOWN), MAP_NUM(MAP_FALLARBOR_TOWN), 14, 8}, + {MAP_GROUP(MAP_VERDANTURF_TOWN), MAP_NUM(MAP_VERDANTURF_TOWN), 16, 4}, + {MAP_GROUP(MAP_PACIFIDLOG_TOWN), MAP_NUM(MAP_PACIFIDLOG_TOWN), 8, 16}, + {MAP_GROUP(MAP_EVER_GRANDE_CITY), MAP_NUM(MAP_EVER_GRANDE_CITY), 18, 6}, + {MAP_GROUP(MAP_BATTLE_TOWER_OUTSIDE), MAP_NUM(MAP_BATTLE_TOWER_OUTSIDE), 14, 9}, + {MAP_GROUP(MAP_SOUTHERN_ISLAND_EXTERIOR), MAP_NUM(MAP_SOUTHERN_ISLAND_EXTERIOR), 15, 20}, }; u32 GetHealLocationIndexByMap(u16 mapGroup, u16 mapNum) diff --git a/src/field/menu_helpers.c b/src/field/menu_helpers.c index 4d5c6478c..b9d694bec 100644 --- a/src/field/menu_helpers.c +++ b/src/field/menu_helpers.c @@ -4,7 +4,7 @@ #include "link.h" #include "mail_data.h" #include "main.h" -#include "map_constants.h" +#include "constants/maps.h" #include "menu.h" #include "menu_helpers.h" #include "overworld.h" @@ -261,7 +261,7 @@ bool8 sub_80F92F4(u16 itemId) return TRUE; } - if (!(gSaveBlock1.location.mapGroup == MAP_GROUP_TRADE_CENTER && gSaveBlock1.location.mapNum == MAP_ID_TRADE_CENTER)) + if (!(gSaveBlock1.location.mapGroup == MAP_GROUP(MAP_TRADE_CENTER) && gSaveBlock1.location.mapNum == MAP_NUM(MAP_TRADE_CENTER))) { return TRUE; } diff --git a/src/field/overworld.c b/src/field/overworld.c index d286a1951..d27d8e06e 100644 --- a/src/field/overworld.c +++ b/src/field/overworld.c @@ -25,7 +25,7 @@ #include "link.h" #include "load_save.h" #include "main.h" -#include "map_constants.h" +#include "constants/maps.h" #include "map_name_popup.h" #include "menu.h" #include "metatile_behavior.h" @@ -738,9 +738,9 @@ u16 cur_mapdata_block_role_at_screen_center_acc_to_sav1(void) bool32 Overworld_IsBikingAllowed(void) { // is player in cycling road entrance? - if (gSaveBlock1.location.mapGroup == MAP_GROUP_ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE - && (gSaveBlock1.location.mapNum == MAP_ID_ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE - || gSaveBlock1.location.mapNum == MAP_ID_ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE)) + if (gSaveBlock1.location.mapGroup == MAP_GROUP(MAP_ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE) + && (gSaveBlock1.location.mapNum == MAP_NUM(MAP_ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE) + || gSaveBlock1.location.mapNum == MAP_NUM(MAP_ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE))) return TRUE; // is player indoor, in a secret base, or underwater? @@ -752,11 +752,11 @@ bool32 Overworld_IsBikingAllowed(void) return FALSE; // Thou shalt not bike on the sacred resting grounds of Kyogre/Groudon. - if (gSaveBlock1.location.mapGroup == MAP_GROUP_SEAFLOOR_CAVERN_ROOM9 - && gSaveBlock1.location.mapNum == MAP_ID_SEAFLOOR_CAVERN_ROOM9) + if (gSaveBlock1.location.mapGroup == MAP_GROUP(MAP_SEAFLOOR_CAVERN_ROOM9) + && gSaveBlock1.location.mapNum == MAP_NUM(MAP_SEAFLOOR_CAVERN_ROOM9)) return FALSE; - if (gSaveBlock1.location.mapGroup == MAP_GROUP_CAVE_OF_ORIGIN_B4F - && gSaveBlock1.location.mapNum == MAP_ID_CAVE_OF_ORIGIN_B4F) + if (gSaveBlock1.location.mapGroup == MAP_GROUP(MAP_CAVE_OF_ORIGIN_B4F) + && gSaveBlock1.location.mapNum == MAP_NUM(MAP_CAVE_OF_ORIGIN_B4F)) return FALSE; return TRUE; @@ -798,16 +798,16 @@ static bool16 ShouldLegendaryMusicPlayAtLocation(struct WarpData *warp) { switch (warp->mapNum) { - case MAP_ID_LILYCOVE_CITY: - case MAP_ID_MOSSDEEP_CITY: - case MAP_ID_SOOTOPOLIS_CITY: - case MAP_ID_EVER_GRANDE_CITY: + case MAP_NUM(MAP_LILYCOVE_CITY): + case MAP_NUM(MAP_MOSSDEEP_CITY): + case MAP_NUM(MAP_SOOTOPOLIS_CITY): + case MAP_NUM(MAP_EVER_GRANDE_CITY): return TRUE; - case MAP_ID_ROUTE124: - case MAP_ID_ROUTE125: - case MAP_ID_ROUTE126: - case MAP_ID_ROUTE127: - case MAP_ID_ROUTE128: + case MAP_NUM(MAP_ROUTE124): + case MAP_NUM(MAP_ROUTE125): + case MAP_NUM(MAP_ROUTE126): + case MAP_NUM(MAP_ROUTE127): + case MAP_NUM(MAP_ROUTE128): return TRUE; } } @@ -818,10 +818,10 @@ static bool16 IsInfiltratedWeatherInstitute(struct WarpData *warp) { if (VarGet(VAR_WEATHER_INSTITUTE_CLEARED)) return FALSE; - if (warp->mapGroup != MAP_GROUP_ROUTE119_WEATHER_INSTITUTE_1F) + if (warp->mapGroup != MAP_GROUP(MAP_ROUTE119_WEATHER_INSTITUTE_1F)) return FALSE; - if (warp->mapNum == MAP_ID_ROUTE119_WEATHER_INSTITUTE_1F - || warp->mapNum == MAP_ID_ROUTE119_WEATHER_INSTITUTE_2F) + if (warp->mapNum == MAP_NUM(MAP_ROUTE119_WEATHER_INSTITUTE_1F) + || warp->mapNum == MAP_NUM(MAP_ROUTE119_WEATHER_INSTITUTE_2F)) return TRUE; return FALSE; } @@ -841,8 +841,8 @@ u16 GetCurrLocationDefaultMusic(void) u16 music; // Play the desert music only when the sandstorm is active on Route 111. - if (gSaveBlock1.location.mapGroup == MAP_GROUP_ROUTE111 - && gSaveBlock1.location.mapNum == MAP_ID_ROUTE111 + if (gSaveBlock1.location.mapGroup == MAP_GROUP(MAP_ROUTE111) + && gSaveBlock1.location.mapNum == MAP_NUM(MAP_ROUTE111) && GetSav1Weather() == 8) return BGM_ASHROAD; @@ -869,8 +869,8 @@ u16 GetWarpDestinationMusic(void) } else { - if (gSaveBlock1.location.mapGroup == MAP_GROUP_MAUVILLE_CITY - && gSaveBlock1.location.mapNum == MAP_ID_MAUVILLE_CITY) + if (gSaveBlock1.location.mapGroup == MAP_GROUP(MAP_MAUVILLE_CITY) + && gSaveBlock1.location.mapNum == MAP_NUM(MAP_MAUVILLE_CITY)) return BGM_DOORO_X1; else return BGM_GRANROAD; @@ -1024,8 +1024,8 @@ void UpdateAmbientCry(s16 *state, u16 *delayCounter) void ChooseAmbientCrySpecies(void) { - if ((gSaveBlock1.location.mapGroup == MAP_GROUP_ROUTE130 - && gSaveBlock1.location.mapNum == MAP_ID_ROUTE130) + if ((gSaveBlock1.location.mapGroup == MAP_GROUP(MAP_ROUTE130) + && gSaveBlock1.location.mapNum == MAP_NUM(MAP_ROUTE130)) && !IsMirageIslandPresent()) { // Only play water pokemon cries on this route diff --git a/src/field/region_map.c b/src/field/region_map.c index df51d6173..5fbe930e1 100644 --- a/src/field/region_map.c +++ b/src/field/region_map.c @@ -4,7 +4,7 @@ #include "field_specials.h" #include "m4a.h" #include "main.h" -#include "map_constants.h" +#include "constants/maps.h" #include "menu.h" #include "palette.h" #include "pokemon_menu.h" @@ -707,9 +707,9 @@ static void InitializeCursorPosition(void) u16 r9; if (gSaveBlock1.location.mapGroup == 25 - && (gSaveBlock1.location.mapNum == MAP_ID_SS_TIDAL_CORRIDOR - || gSaveBlock1.location.mapNum == MAP_ID_SS_TIDAL_LOWER_DECK - || gSaveBlock1.location.mapNum == MAP_ID_SS_TIDAL_ROOMS)) + && (gSaveBlock1.location.mapNum == MAP_NUM(MAP_SS_TIDAL_CORRIDOR) + || gSaveBlock1.location.mapNum == MAP_NUM(MAP_SS_TIDAL_LOWER_DECK) + || gSaveBlock1.location.mapNum == MAP_NUM(MAP_SS_TIDAL_ROOMS))) { sub_80FB600(); return; diff --git a/src/field/rotating_gate.c b/src/field/rotating_gate.c index c3b6a8a71..c17b604c2 100644 --- a/src/field/rotating_gate.c +++ b/src/field/rotating_gate.c @@ -3,7 +3,7 @@ #include "event_data.h" #include "field_map_obj.h" #include "fieldmap.h" -#include "map_constants.h" +#include "constants/maps.h" #include "constants/songs.h" #include "sound.h" #include "sprite.h" @@ -622,14 +622,14 @@ static EWRAM_DATA u8 gRotatingGate_PuzzleCount = 0; static int GetCurrentMapRotatingGatePuzzleType(void) { - if (gSaveBlock1.location.mapGroup == MAP_GROUP_FORTREE_CITY_GYM && - gSaveBlock1.location.mapNum == MAP_ID_FORTREE_CITY_GYM) + if (gSaveBlock1.location.mapGroup == MAP_GROUP(MAP_FORTREE_CITY_GYM) && + gSaveBlock1.location.mapNum == MAP_NUM(MAP_FORTREE_CITY_GYM)) { return PUZZLE_FORTREE_CITY_GYM; } - if (gSaveBlock1.location.mapGroup == MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE6 && - gSaveBlock1.location.mapNum == MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE6) + if (gSaveBlock1.location.mapGroup == MAP_GROUP(MAP_ROUTE110_TRICK_HOUSE_PUZZLE6) && + gSaveBlock1.location.mapNum == MAP_NUM(MAP_ROUTE110_TRICK_HOUSE_PUZZLE6)) { return PUZZLE_ROUTE110_TRICK_HOUSE_PUZZLE6; } diff --git a/src/field/secret_base.c b/src/field/secret_base.c index 257fe4ee7..c1ca10c1f 100644 --- a/src/field/secret_base.c +++ b/src/field/secret_base.c @@ -17,7 +17,7 @@ #include "main.h" #include "sound.h" #include "constants/songs.h" -#include "map_constants.h" +#include "constants/maps.h" #include "map_name_popup.h" #include "menu.h" #include "menu_helpers.h" @@ -68,30 +68,30 @@ const struct const u8 gUnknown_083D1374[] = { - MAP_ID_SECRET_BASE_RED_CAVE1, 0, 1, 3, - MAP_ID_SECRET_BASE_RED_CAVE2, 0, 5, 9, - MAP_ID_SECRET_BASE_RED_CAVE3, 0, 1, 3, - MAP_ID_SECRET_BASE_RED_CAVE4, 0, 7, 13, - MAP_ID_SECRET_BASE_BROWN_CAVE1, 0, 2, 3, - MAP_ID_SECRET_BASE_BROWN_CAVE2, 0, 9, 2, - MAP_ID_SECRET_BASE_BROWN_CAVE3, 0, 13, 4, - MAP_ID_SECRET_BASE_BROWN_CAVE4, 0, 1, 2, - MAP_ID_SECRET_BASE_BLUE_CAVE1, 0, 1, 3, - MAP_ID_SECRET_BASE_BLUE_CAVE2, 0, 1, 2, - MAP_ID_SECRET_BASE_BLUE_CAVE3, 0, 3, 15, - MAP_ID_SECRET_BASE_BLUE_CAVE4, 0, 3, 14, - MAP_ID_SECRET_BASE_YELLOW_CAVE1, 0, 9, 3, - MAP_ID_SECRET_BASE_YELLOW_CAVE2, 0, 8, 7, - MAP_ID_SECRET_BASE_YELLOW_CAVE3, 0, 3, 6, - MAP_ID_SECRET_BASE_YELLOW_CAVE4, 0, 5, 9, - MAP_ID_SECRET_BASE_TREE1, 0, 2, 3, - MAP_ID_SECRET_BASE_TREE2, 0, 5, 6, - MAP_ID_SECRET_BASE_TREE3, 0, 15, 3, - MAP_ID_SECRET_BASE_TREE4, 0, 4, 10, - MAP_ID_SECRET_BASE_SHRUB1, 0, 3, 3, - MAP_ID_SECRET_BASE_SHRUB2, 0, 1, 2, - MAP_ID_SECRET_BASE_SHRUB3, 0, 7, 8, - MAP_ID_SECRET_BASE_SHRUB4, 0, 9, 6 + MAP_NUM(MAP_SECRET_BASE_RED_CAVE1), 0, 1, 3, + MAP_NUM(MAP_SECRET_BASE_RED_CAVE2), 0, 5, 9, + MAP_NUM(MAP_SECRET_BASE_RED_CAVE3), 0, 1, 3, + MAP_NUM(MAP_SECRET_BASE_RED_CAVE4), 0, 7, 13, + MAP_NUM(MAP_SECRET_BASE_BROWN_CAVE1), 0, 2, 3, + MAP_NUM(MAP_SECRET_BASE_BROWN_CAVE2), 0, 9, 2, + MAP_NUM(MAP_SECRET_BASE_BROWN_CAVE3), 0, 13, 4, + MAP_NUM(MAP_SECRET_BASE_BROWN_CAVE4), 0, 1, 2, + MAP_NUM(MAP_SECRET_BASE_BLUE_CAVE1), 0, 1, 3, + MAP_NUM(MAP_SECRET_BASE_BLUE_CAVE2), 0, 1, 2, + MAP_NUM(MAP_SECRET_BASE_BLUE_CAVE3), 0, 3, 15, + MAP_NUM(MAP_SECRET_BASE_BLUE_CAVE4), 0, 3, 14, + MAP_NUM(MAP_SECRET_BASE_YELLOW_CAVE1), 0, 9, 3, + MAP_NUM(MAP_SECRET_BASE_YELLOW_CAVE2), 0, 8, 7, + MAP_NUM(MAP_SECRET_BASE_YELLOW_CAVE3), 0, 3, 6, + MAP_NUM(MAP_SECRET_BASE_YELLOW_CAVE4), 0, 5, 9, + MAP_NUM(MAP_SECRET_BASE_TREE1), 0, 2, 3, + MAP_NUM(MAP_SECRET_BASE_TREE2), 0, 5, 6, + MAP_NUM(MAP_SECRET_BASE_TREE3), 0, 15, 3, + MAP_NUM(MAP_SECRET_BASE_TREE4), 0, 4, 10, + MAP_NUM(MAP_SECRET_BASE_SHRUB1), 0, 3, 3, + MAP_NUM(MAP_SECRET_BASE_SHRUB2), 0, 1, 2, + MAP_NUM(MAP_SECRET_BASE_SHRUB3), 0, 7, 8, + MAP_NUM(MAP_SECRET_BASE_SHRUB4), 0, 9, 6 }; const struct MenuAction2 gUnknown_083D13D4[] = { @@ -316,7 +316,7 @@ void sub_80BB970(struct MapEvents *events) void sub_80BBA14(void) { s8 idx = 4 * (gUnknown_020387DC / 10); - warp1_set_2(MAP_GROUP_SECRET_BASE_RED_CAVE1, gUnknown_083D1374[idx], gUnknown_083D1374[idx + 1]); + warp1_set_2(MAP_GROUP(MAP_SECRET_BASE_RED_CAVE1), gUnknown_083D1374[idx], gUnknown_083D1374[idx + 1]); } void sub_80BBA48(u8 taskid) @@ -401,7 +401,7 @@ void sub_80BBC78(void) bool8 CurrentMapIsSecretBase(void) { - if (gSaveBlock1.location.mapGroup == MAP_GROUP_SECRET_BASE_SHRUB4 && (u8)(gSaveBlock1.location.mapNum) <= MAP_ID_SECRET_BASE_SHRUB4) + if (gSaveBlock1.location.mapGroup == MAP_GROUP(MAP_SECRET_BASE_SHRUB4) && (u8)(gSaveBlock1.location.mapNum) <= MAP_NUM(MAP_SECRET_BASE_SHRUB4)) return TRUE; return FALSE; } diff --git a/src/field/tv.c b/src/field/tv.c index 2d345eb6c..15a3f4d4d 100644 --- a/src/field/tv.c +++ b/src/field/tv.c @@ -16,7 +16,7 @@ #include "pokedex.h" #include "naming_screen.h" #include "overworld.h" -#include "map_constants.h" +#include "constants/maps.h" #include "strings.h" #include "battle.h" #include "link.h" @@ -26,7 +26,7 @@ #include "item.h" #include "constants/items.h" #include "link.h" -#include "map_constants.h" +#include "constants/maps.h" #include "naming_screen.h" #include "pokedex.h" #include "region_map.h" @@ -551,8 +551,8 @@ void UpdateTVScreensOnMap(int width, int height) case 2: break; default: - if (gSaveBlock1.location.mapGroup == MAP_GROUP_LILYCOVE_CITY_COVE_LILY_MOTEL_1F - && gSaveBlock1.location.mapNum == MAP_ID_LILYCOVE_CITY_COVE_LILY_MOTEL_1F) + if (gSaveBlock1.location.mapGroup == MAP_GROUP(MAP_LILYCOVE_CITY_COVE_LILY_MOTEL_1F) + && gSaveBlock1.location.mapNum == MAP_NUM(MAP_LILYCOVE_CITY_COVE_LILY_MOTEL_1F)) { SetTVMetatilesOnMap(width, height, 0x3); } @@ -1460,16 +1460,16 @@ bool8 IsPriceDiscounted(u8 arg0) switch (arg0) { case 1: - if (gSaveBlock1.location.mapGroup == MAP_GROUP_SLATEPORT_CITY - && gSaveBlock1.location.mapNum == MAP_ID_SLATEPORT_CITY + if (gSaveBlock1.location.mapGroup == MAP_GROUP(MAP_SLATEPORT_CITY) + && gSaveBlock1.location.mapNum == MAP_NUM(MAP_SLATEPORT_CITY) && gScriptLastTalked == 0x1a) return TRUE; else return FALSE; break; case 3: - if (gSaveBlock1.location.mapGroup == MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP - && gSaveBlock1.location.mapNum == MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP) + if (gSaveBlock1.location.mapGroup == MAP_GROUP(MAP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP) + && gSaveBlock1.location.mapNum == MAP_NUM(MAP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP)) return TRUE; else return FALSE; @@ -2121,16 +2121,16 @@ u32 GetPlayerTrainerId(void) u8 CheckForBigMovieOrEmergencyNewsOnTV(void) { - if (gSaveBlock1.location.mapGroup != MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F) + if (gSaveBlock1.location.mapGroup != MAP_GROUP(MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F)) return 0; if (gSaveBlock2.playerGender == MALE) { - if (gSaveBlock1.location.mapNum != MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F) + if (gSaveBlock1.location.mapNum != MAP_NUM(MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F)) return 0; } else { - if (gSaveBlock1.location.mapNum != MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_1F) + if (gSaveBlock1.location.mapNum != MAP_NUM(MAP_LITTLEROOT_TOWN_MAYS_HOUSE_1F)) return 0; } if (FlagGet(SYS_TV_LATI) == 1) @@ -2142,11 +2142,11 @@ u8 CheckForBigMovieOrEmergencyNewsOnTV(void) void GetMomOrDadStringForTVMessage(void) { - if (gSaveBlock1.location.mapGroup == MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F) + if (gSaveBlock1.location.mapGroup == MAP_GROUP(MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F)) { if (gSaveBlock2.playerGender == MALE) { - if (gSaveBlock1.location.mapNum == MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F) + if (gSaveBlock1.location.mapNum == MAP_NUM(MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F)) { StringCopy(gStringVar1, gOtherText_Mom); VarSet(VAR_0x4003, 1); @@ -2154,7 +2154,7 @@ void GetMomOrDadStringForTVMessage(void) } else { - if (gSaveBlock1.location.mapNum == MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_1F) + if (gSaveBlock1.location.mapNum == MAP_NUM(MAP_LITTLEROOT_TOWN_MAYS_HOUSE_1F)) { StringCopy(gStringVar1, gOtherText_Mom); VarSet(VAR_0x4003, 1); diff --git a/src/field/wild_encounter.c b/src/field/wild_encounter.c index b19b1d4c2..2376f582c 100644 --- a/src/field/wild_encounter.c +++ b/src/field/wild_encounter.c @@ -5,7 +5,7 @@ #include "event_data.h" #include "field_player_avatar.h" #include "fieldmap.h" -#include "map_constants.h" +#include "constants/maps.h" #include "metatile_behavior.h" #include "pokeblock.h" #include "random.h" @@ -2953,8 +2953,8 @@ static bool8 CheckFeebas(void) u8 route119section = 0; u16 waterTileNum; - if (gSaveBlock1.location.mapGroup == MAP_GROUP_ROUTE119 - && gSaveBlock1.location.mapNum == MAP_ID_ROUTE119) + if (gSaveBlock1.location.mapGroup == MAP_GROUP(MAP_ROUTE119) + && gSaveBlock1.location.mapNum == MAP_NUM(MAP_ROUTE119)) { GetXYCoordsOneStepInFrontOfPlayer(&x, &y); x -= 7; -- cgit v1.2.3 From 611984671904aa19cf678c59ff2a8682cba09224 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sun, 26 Nov 2017 17:01:50 -0600 Subject: opponents, map_objects, hold_effects, game_stat, decorations, battle_move_effects constants --- src/field/battle_tower.c | 2 +- src/field/decoration.c | 3 ++- src/field/decoration_inventory.c | 5 +---- src/field/field_map_obj.c | 2 +- src/field/field_player_avatar.c | 2 +- src/field/item.c | 2 +- src/field/secret_base.c | 1 + src/field/trader.c | 1 + 8 files changed, 9 insertions(+), 9 deletions(-) (limited to 'src/field') diff --git a/src/field/battle_tower.c b/src/field/battle_tower.c index 37ef10c24..db822f71b 100644 --- a/src/field/battle_tower.c +++ b/src/field/battle_tower.c @@ -10,7 +10,7 @@ #include "item.h" #include "constants/items.h" #include "main.h" -#include "map_object_constants.h" +#include "constants/map_objects.h" #include "constants/moves.h" #include "new_game.h" #include "overworld.h" diff --git a/src/field/decoration.c b/src/field/decoration.c index 89d8cbefd..c7647f98d 100644 --- a/src/field/decoration.c +++ b/src/field/decoration.c @@ -1,6 +1,7 @@ #include "global.h" +#include "constants/decorations.h" #include "main.h" -#include "map_object_constants.h" +#include "constants/map_objects.h" #include "overworld.h" #include "sound.h" #include "constants/songs.h" diff --git a/src/field/decoration_inventory.c b/src/field/decoration_inventory.c index 687589373..dd0e972aa 100644 --- a/src/field/decoration_inventory.c +++ b/src/field/decoration_inventory.c @@ -1,8 +1,5 @@ -// - -// - #include "global.h" +#include "constants/decorations.h" #include "sprite.h" #include "task.h" #include "decoration.h" diff --git a/src/field/field_map_obj.c b/src/field/field_map_obj.c index 816de8917..0768092b1 100644 --- a/src/field/field_map_obj.c +++ b/src/field/field_map_obj.c @@ -15,7 +15,7 @@ #include "sprite.h" #include "metatile_behavior.h" #include "constants/maps.h" -#include "map_object_constants.h" +#include "constants/map_objects.h" #include "trainer_see.h" // rodata diff --git a/src/field/field_player_avatar.c b/src/field/field_player_avatar.c index 166846ba0..437d16208 100644 --- a/src/field/field_player_avatar.c +++ b/src/field/field_player_avatar.c @@ -9,7 +9,7 @@ #include "field_map_obj_helpers.h" #include "fieldmap.h" #include "main.h" -#include "map_object_constants.h" +#include "constants/map_objects.h" #include "menu.h" #include "metatile_behavior.h" #include "party_menu.h" diff --git a/src/field/item.c b/src/field/item.c index cf7d8bd42..66d7d65df 100644 --- a/src/field/item.c +++ b/src/field/item.c @@ -1,5 +1,5 @@ #include "global.h" -#include "hold_effects.h" +#include "constants/hold_effects.h" #include "item.h" #include "constants/items.h" #include "item_use.h" diff --git a/src/field/secret_base.c b/src/field/secret_base.c index c1ca10c1f..b3591564d 100644 --- a/src/field/secret_base.c +++ b/src/field/secret_base.c @@ -1,4 +1,5 @@ #include "global.h" +#include "constants/decorations.h" #include "secret_base.h" #include "decoration.h" #include "constants/species.h" diff --git a/src/field/trader.c b/src/field/trader.c index 69eef1152..c4fe73ba1 100644 --- a/src/field/trader.c +++ b/src/field/trader.c @@ -1,4 +1,5 @@ #include "global.h" +#include "constants/decorations.h" #include "decoration.h" #include "decoration_inventory.h" #include "event_data.h" -- cgit v1.2.3 From 6f0feb7ca09511df0a1d13c99a1ec5c9a46ed06b Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sun, 26 Nov 2017 17:06:07 -0600 Subject: don't require MAP_ prefix on MAP_GROUP and MAP_NUM macros --- src/field/braille_puzzles.c | 8 +++---- src/field/field_map_obj.c | 4 ++-- src/field/field_specials.c | 34 ++++++++++++++--------------- src/field/heal_location.c | 44 +++++++++++++++++++------------------- src/field/menu_helpers.c | 2 +- src/field/overworld.c | 50 +++++++++++++++++++++---------------------- src/field/region_map.c | 6 +++--- src/field/rotating_gate.c | 8 +++---- src/field/secret_base.c | 52 ++++++++++++++++++++++----------------------- src/field/tv.c | 24 ++++++++++----------- src/field/wild_encounter.c | 4 ++-- 11 files changed, 118 insertions(+), 118 deletions(-) (limited to 'src/field') diff --git a/src/field/braille_puzzles.c b/src/field/braille_puzzles.c index 122747928..e6ab316d2 100644 --- a/src/field/braille_puzzles.c +++ b/src/field/braille_puzzles.c @@ -25,8 +25,8 @@ extern u8 S_OpenRegiceChamber[]; // regiice event script bool8 ShouldDoBrailleDigEffect(void) { if (!FlagGet(SYS_BRAILLE_DIG) - && (gSaveBlock1.location.mapGroup == MAP_GROUP(MAP_SEALED_CHAMBER_OUTER_ROOM) - && gSaveBlock1.location.mapNum == MAP_NUM(MAP_SEALED_CHAMBER_OUTER_ROOM))) + && (gSaveBlock1.location.mapGroup == MAP_GROUP(SEALED_CHAMBER_OUTER_ROOM) + && gSaveBlock1.location.mapNum == MAP_NUM(SEALED_CHAMBER_OUTER_ROOM))) { if (gSaveBlock1.pos.x == 10 && gSaveBlock1.pos.y == 3) return TRUE; @@ -68,7 +68,7 @@ bool8 CheckRelicanthWailord(void) bool8 ShouldDoBrailleStrengthEffect(void) { - if (!FlagGet(SYS_BRAILLE_STRENGTH) && (gSaveBlock1.location.mapGroup == MAP_GROUP(MAP_DESERT_RUINS) && gSaveBlock1.location.mapNum == MAP_NUM(MAP_DESERT_RUINS))) + if (!FlagGet(SYS_BRAILLE_STRENGTH) && (gSaveBlock1.location.mapGroup == MAP_GROUP(DESERT_RUINS) && gSaveBlock1.location.mapNum == MAP_NUM(DESERT_RUINS))) { if (gSaveBlock1.pos.x == 10 && gSaveBlock1.pos.y == 23) return TRUE; @@ -98,7 +98,7 @@ void DoBrailleStrengthEffect(void) bool8 ShouldDoBrailleFlyEffect(void) { - if (!FlagGet(SYS_BRAILLE_FLY) && (gSaveBlock1.location.mapGroup == MAP_GROUP(MAP_ANCIENT_TOMB) && gSaveBlock1.location.mapNum == MAP_NUM(MAP_ANCIENT_TOMB))) + if (!FlagGet(SYS_BRAILLE_FLY) && (gSaveBlock1.location.mapGroup == MAP_GROUP(ANCIENT_TOMB) && gSaveBlock1.location.mapNum == MAP_NUM(ANCIENT_TOMB))) { if (gSaveBlock1.pos.x == 8 && gSaveBlock1.pos.y == 25) return TRUE; diff --git a/src/field/field_map_obj.c b/src/field/field_map_obj.c index 0768092b1..0e6794ed7 100644 --- a/src/field/field_map_obj.c +++ b/src/field/field_map_obj.c @@ -7054,7 +7054,7 @@ bool8 sub_8062088(struct MapObject *mapObject, struct Sprite *sprite) bool8 sub_80620B0(struct MapObject *mapObject, struct Sprite *sprite) { u8 objectId; - if (!TryGetFieldObjectIdByLocalIdAndMap(0xFF, MAP_GROUP(MAP_PETALBURG_CITY), MAP_NUM(MAP_PETALBURG_CITY), &objectId)) + if (!TryGetFieldObjectIdByLocalIdAndMap(0xFF, MAP_GROUP(PETALBURG_CITY), MAP_NUM(PETALBURG_CITY), &objectId)) { an_look_any(mapObject, sprite, sub_805FE90(mapObject->coords2.x, mapObject->coords2.y, gMapObjects[objectId].coords2.x, gMapObjects[objectId].coords2.y)); } @@ -7065,7 +7065,7 @@ bool8 sub_80620B0(struct MapObject *mapObject, struct Sprite *sprite) bool8 sub_806210C(struct MapObject *mapObject, struct Sprite *sprite) { u8 objectId; - if (!TryGetFieldObjectIdByLocalIdAndMap(0xFF, MAP_GROUP(MAP_PETALBURG_CITY), MAP_NUM(MAP_PETALBURG_CITY), &objectId)) + if (!TryGetFieldObjectIdByLocalIdAndMap(0xFF, MAP_GROUP(PETALBURG_CITY), MAP_NUM(PETALBURG_CITY), &objectId)) { an_look_any(mapObject, sprite, GetOppositeDirection(sub_805FE90(mapObject->coords2.x, mapObject->coords2.y, gMapObjects[objectId].coords2.x, gMapObjects[objectId].coords2.y))); } diff --git a/src/field/field_specials.c b/src/field/field_specials.c index 41fa146a5..d654d10f5 100644 --- a/src/field/field_specials.c +++ b/src/field/field_specials.c @@ -207,7 +207,7 @@ u16 GetRecordedCyclingRoadResults(void) { } void UpdateCyclingRoadState(void) { - if (gUnknown_020297F0.mapNum == MAP_NUM(MAP_ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE) && gUnknown_020297F0.mapGroup == MAP_GROUP(MAP_ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE)) + if (gUnknown_020297F0.mapNum == MAP_NUM(ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE) && gUnknown_020297F0.mapGroup == MAP_GROUP(ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE)) { return; } @@ -259,38 +259,38 @@ u8 GetSSTidalLocation(s8 *mapGroup, s8 *mapNum, s16 *x, s16 *y) case 2: if (*varCruiseStepCount < 60) { - *mapNum = MAP_NUM(MAP_ROUTE134); + *mapNum = MAP_NUM(ROUTE134); *x = *varCruiseStepCount + 19; } else if (*varCruiseStepCount < 140) { - *mapNum = MAP_NUM(MAP_ROUTE133); + *mapNum = MAP_NUM(ROUTE133); *x = *varCruiseStepCount - 60; } else { - *mapNum = MAP_NUM(MAP_ROUTE132); + *mapNum = MAP_NUM(ROUTE132); *x = *varCruiseStepCount - 140; } break; case 7: if (*varCruiseStepCount < 66) { - *mapNum = MAP_NUM(MAP_ROUTE132); + *mapNum = MAP_NUM(ROUTE132); *x = 65 - *varCruiseStepCount; } else if (*varCruiseStepCount < 146) { - *mapNum = MAP_NUM(MAP_ROUTE133); + *mapNum = MAP_NUM(ROUTE133); *x = 145 - *varCruiseStepCount; } else { - *mapNum = MAP_NUM(MAP_ROUTE134); + *mapNum = MAP_NUM(ROUTE134); *x = 224 - *varCruiseStepCount; } break; } - *mapGroup = MAP_GROUP(MAP_ROUTE132); + *mapGroup = MAP_GROUP(ROUTE132); *y = 20; return 0; } @@ -702,11 +702,11 @@ void CableCarWarp(void) { if (gSpecialVar_0x8004 != 0) { - Overworld_SetWarpDestination(MAP_GROUP(MAP_ROUTE112_CABLE_CAR_STATION), MAP_NUM(MAP_ROUTE112_CABLE_CAR_STATION), -1, 6, 4); + Overworld_SetWarpDestination(MAP_GROUP(ROUTE112_CABLE_CAR_STATION), MAP_NUM(ROUTE112_CABLE_CAR_STATION), -1, 6, 4); } else { - Overworld_SetWarpDestination(MAP_GROUP(MAP_MT_CHIMNEY_CABLE_CAR_STATION), MAP_NUM(MAP_MT_CHIMNEY_CABLE_CAR_STATION), -1, 6, 4); + Overworld_SetWarpDestination(MAP_GROUP(MT_CHIMNEY_CABLE_CAR_STATION), MAP_NUM(MT_CHIMNEY_CABLE_CAR_STATION), -1, 6, 4); } } @@ -1001,22 +1001,22 @@ void SetDepartmentStoreFloorVar(void) u8 deptStoreFloor; switch (gSaveBlock1.warp2.mapNum) { - case MAP_NUM(MAP_LILYCOVE_CITY_DEPARTMENT_STORE_1F): + case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_1F): deptStoreFloor = 0; break; - case MAP_NUM(MAP_LILYCOVE_CITY_DEPARTMENT_STORE_2F): + case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_2F): deptStoreFloor = 1; break; - case MAP_NUM(MAP_LILYCOVE_CITY_DEPARTMENT_STORE_3F): + case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_3F): deptStoreFloor = 2; break; - case MAP_NUM(MAP_LILYCOVE_CITY_DEPARTMENT_STORE_4F): + case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_4F): deptStoreFloor = 3; break; - case MAP_NUM(MAP_LILYCOVE_CITY_DEPARTMENT_STORE_5F): + case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_5F): deptStoreFloor = 4; break; - case MAP_NUM(MAP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP): + case MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP): deptStoreFloor = 15; break; default: @@ -1881,7 +1881,7 @@ bool8 ScrSpecial_AreLeadMonEVsMaxedOut(void) u8 sub_810F5BC(void) { - if (!FlagGet(0xc7) && gSaveBlock1.location.mapGroup == MAP_GROUP(MAP_RUSTURF_TUNNEL) && gSaveBlock1.location.mapNum == MAP_NUM(MAP_RUSTURF_TUNNEL)) + if (!FlagGet(0xc7) && gSaveBlock1.location.mapGroup == MAP_GROUP(RUSTURF_TUNNEL) && gSaveBlock1.location.mapNum == MAP_NUM(RUSTURF_TUNNEL)) { if (FlagGet(0x3a3)) { diff --git a/src/field/heal_location.c b/src/field/heal_location.c index 0b13f251f..a10c7a7b8 100644 --- a/src/field/heal_location.c +++ b/src/field/heal_location.c @@ -6,28 +6,28 @@ static const struct HealLocation sHealLocations[] = { - {MAP_GROUP(MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F), MAP_NUM(MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F), 4, 2}, - {MAP_GROUP(MAP_LITTLEROOT_TOWN_MAYS_HOUSE_2F), MAP_NUM(MAP_LITTLEROOT_TOWN_MAYS_HOUSE_2F), 4, 2}, - {MAP_GROUP(MAP_PETALBURG_CITY), MAP_NUM(MAP_PETALBURG_CITY), 20, 17}, - {MAP_GROUP(MAP_SLATEPORT_CITY), MAP_NUM(MAP_SLATEPORT_CITY), 19, 20}, - {MAP_GROUP(MAP_MAUVILLE_CITY), MAP_NUM(MAP_MAUVILLE_CITY), 22, 6}, - {MAP_GROUP(MAP_RUSTBORO_CITY), MAP_NUM(MAP_RUSTBORO_CITY), 16, 39}, - {MAP_GROUP(MAP_FORTREE_CITY), MAP_NUM(MAP_FORTREE_CITY), 5, 7}, - {MAP_GROUP(MAP_LILYCOVE_CITY), MAP_NUM(MAP_LILYCOVE_CITY), 24, 15}, - {MAP_GROUP(MAP_MOSSDEEP_CITY), MAP_NUM(MAP_MOSSDEEP_CITY), 28, 17}, - {MAP_GROUP(MAP_SOOTOPOLIS_CITY), MAP_NUM(MAP_SOOTOPOLIS_CITY), 43, 32}, - {MAP_GROUP(MAP_EVER_GRANDE_CITY), MAP_NUM(MAP_EVER_GRANDE_CITY), 27, 49}, - {MAP_GROUP(MAP_LITTLEROOT_TOWN), MAP_NUM(MAP_LITTLEROOT_TOWN), 5, 9}, - {MAP_GROUP(MAP_LITTLEROOT_TOWN), MAP_NUM(MAP_LITTLEROOT_TOWN), 14, 9}, - {MAP_GROUP(MAP_OLDALE_TOWN), MAP_NUM(MAP_OLDALE_TOWN), 6, 17}, - {MAP_GROUP(MAP_DEWFORD_TOWN), MAP_NUM(MAP_DEWFORD_TOWN), 2, 11}, - {MAP_GROUP(MAP_LAVARIDGE_TOWN), MAP_NUM(MAP_LAVARIDGE_TOWN), 9, 7}, - {MAP_GROUP(MAP_FALLARBOR_TOWN), MAP_NUM(MAP_FALLARBOR_TOWN), 14, 8}, - {MAP_GROUP(MAP_VERDANTURF_TOWN), MAP_NUM(MAP_VERDANTURF_TOWN), 16, 4}, - {MAP_GROUP(MAP_PACIFIDLOG_TOWN), MAP_NUM(MAP_PACIFIDLOG_TOWN), 8, 16}, - {MAP_GROUP(MAP_EVER_GRANDE_CITY), MAP_NUM(MAP_EVER_GRANDE_CITY), 18, 6}, - {MAP_GROUP(MAP_BATTLE_TOWER_OUTSIDE), MAP_NUM(MAP_BATTLE_TOWER_OUTSIDE), 14, 9}, - {MAP_GROUP(MAP_SOUTHERN_ISLAND_EXTERIOR), MAP_NUM(MAP_SOUTHERN_ISLAND_EXTERIOR), 15, 20}, + {MAP_GROUP(LITTLEROOT_TOWN_BRENDANS_HOUSE_2F), MAP_NUM(LITTLEROOT_TOWN_BRENDANS_HOUSE_2F), 4, 2}, + {MAP_GROUP(LITTLEROOT_TOWN_MAYS_HOUSE_2F), MAP_NUM(LITTLEROOT_TOWN_MAYS_HOUSE_2F), 4, 2}, + {MAP_GROUP(PETALBURG_CITY), MAP_NUM(PETALBURG_CITY), 20, 17}, + {MAP_GROUP(SLATEPORT_CITY), MAP_NUM(SLATEPORT_CITY), 19, 20}, + {MAP_GROUP(MAUVILLE_CITY), MAP_NUM(MAUVILLE_CITY), 22, 6}, + {MAP_GROUP(RUSTBORO_CITY), MAP_NUM(RUSTBORO_CITY), 16, 39}, + {MAP_GROUP(FORTREE_CITY), MAP_NUM(FORTREE_CITY), 5, 7}, + {MAP_GROUP(LILYCOVE_CITY), MAP_NUM(LILYCOVE_CITY), 24, 15}, + {MAP_GROUP(MOSSDEEP_CITY), MAP_NUM(MOSSDEEP_CITY), 28, 17}, + {MAP_GROUP(SOOTOPOLIS_CITY), MAP_NUM(SOOTOPOLIS_CITY), 43, 32}, + {MAP_GROUP(EVER_GRANDE_CITY), MAP_NUM(EVER_GRANDE_CITY), 27, 49}, + {MAP_GROUP(LITTLEROOT_TOWN), MAP_NUM(LITTLEROOT_TOWN), 5, 9}, + {MAP_GROUP(LITTLEROOT_TOWN), MAP_NUM(LITTLEROOT_TOWN), 14, 9}, + {MAP_GROUP(OLDALE_TOWN), MAP_NUM(OLDALE_TOWN), 6, 17}, + {MAP_GROUP(DEWFORD_TOWN), MAP_NUM(DEWFORD_TOWN), 2, 11}, + {MAP_GROUP(LAVARIDGE_TOWN), MAP_NUM(LAVARIDGE_TOWN), 9, 7}, + {MAP_GROUP(FALLARBOR_TOWN), MAP_NUM(FALLARBOR_TOWN), 14, 8}, + {MAP_GROUP(VERDANTURF_TOWN), MAP_NUM(VERDANTURF_TOWN), 16, 4}, + {MAP_GROUP(PACIFIDLOG_TOWN), MAP_NUM(PACIFIDLOG_TOWN), 8, 16}, + {MAP_GROUP(EVER_GRANDE_CITY), MAP_NUM(EVER_GRANDE_CITY), 18, 6}, + {MAP_GROUP(BATTLE_TOWER_OUTSIDE), MAP_NUM(BATTLE_TOWER_OUTSIDE), 14, 9}, + {MAP_GROUP(SOUTHERN_ISLAND_EXTERIOR), MAP_NUM(SOUTHERN_ISLAND_EXTERIOR), 15, 20}, }; u32 GetHealLocationIndexByMap(u16 mapGroup, u16 mapNum) diff --git a/src/field/menu_helpers.c b/src/field/menu_helpers.c index b9d694bec..e3ef0c790 100644 --- a/src/field/menu_helpers.c +++ b/src/field/menu_helpers.c @@ -261,7 +261,7 @@ bool8 sub_80F92F4(u16 itemId) return TRUE; } - if (!(gSaveBlock1.location.mapGroup == MAP_GROUP(MAP_TRADE_CENTER) && gSaveBlock1.location.mapNum == MAP_NUM(MAP_TRADE_CENTER))) + if (!(gSaveBlock1.location.mapGroup == MAP_GROUP(TRADE_CENTER) && gSaveBlock1.location.mapNum == MAP_NUM(TRADE_CENTER))) { return TRUE; } diff --git a/src/field/overworld.c b/src/field/overworld.c index d27d8e06e..21f3f98ef 100644 --- a/src/field/overworld.c +++ b/src/field/overworld.c @@ -738,9 +738,9 @@ u16 cur_mapdata_block_role_at_screen_center_acc_to_sav1(void) bool32 Overworld_IsBikingAllowed(void) { // is player in cycling road entrance? - if (gSaveBlock1.location.mapGroup == MAP_GROUP(MAP_ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE) - && (gSaveBlock1.location.mapNum == MAP_NUM(MAP_ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE) - || gSaveBlock1.location.mapNum == MAP_NUM(MAP_ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE))) + if (gSaveBlock1.location.mapGroup == MAP_GROUP(ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE) + && (gSaveBlock1.location.mapNum == MAP_NUM(ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE) + || gSaveBlock1.location.mapNum == MAP_NUM(ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE))) return TRUE; // is player indoor, in a secret base, or underwater? @@ -752,11 +752,11 @@ bool32 Overworld_IsBikingAllowed(void) return FALSE; // Thou shalt not bike on the sacred resting grounds of Kyogre/Groudon. - if (gSaveBlock1.location.mapGroup == MAP_GROUP(MAP_SEAFLOOR_CAVERN_ROOM9) - && gSaveBlock1.location.mapNum == MAP_NUM(MAP_SEAFLOOR_CAVERN_ROOM9)) + if (gSaveBlock1.location.mapGroup == MAP_GROUP(SEAFLOOR_CAVERN_ROOM9) + && gSaveBlock1.location.mapNum == MAP_NUM(SEAFLOOR_CAVERN_ROOM9)) return FALSE; - if (gSaveBlock1.location.mapGroup == MAP_GROUP(MAP_CAVE_OF_ORIGIN_B4F) - && gSaveBlock1.location.mapNum == MAP_NUM(MAP_CAVE_OF_ORIGIN_B4F)) + if (gSaveBlock1.location.mapGroup == MAP_GROUP(CAVE_OF_ORIGIN_B4F) + && gSaveBlock1.location.mapNum == MAP_NUM(CAVE_OF_ORIGIN_B4F)) return FALSE; return TRUE; @@ -798,16 +798,16 @@ static bool16 ShouldLegendaryMusicPlayAtLocation(struct WarpData *warp) { switch (warp->mapNum) { - case MAP_NUM(MAP_LILYCOVE_CITY): - case MAP_NUM(MAP_MOSSDEEP_CITY): - case MAP_NUM(MAP_SOOTOPOLIS_CITY): - case MAP_NUM(MAP_EVER_GRANDE_CITY): + case MAP_NUM(LILYCOVE_CITY): + case MAP_NUM(MOSSDEEP_CITY): + case MAP_NUM(SOOTOPOLIS_CITY): + case MAP_NUM(EVER_GRANDE_CITY): return TRUE; - case MAP_NUM(MAP_ROUTE124): - case MAP_NUM(MAP_ROUTE125): - case MAP_NUM(MAP_ROUTE126): - case MAP_NUM(MAP_ROUTE127): - case MAP_NUM(MAP_ROUTE128): + case MAP_NUM(ROUTE124): + case MAP_NUM(ROUTE125): + case MAP_NUM(ROUTE126): + case MAP_NUM(ROUTE127): + case MAP_NUM(ROUTE128): return TRUE; } } @@ -818,10 +818,10 @@ static bool16 IsInfiltratedWeatherInstitute(struct WarpData *warp) { if (VarGet(VAR_WEATHER_INSTITUTE_CLEARED)) return FALSE; - if (warp->mapGroup != MAP_GROUP(MAP_ROUTE119_WEATHER_INSTITUTE_1F)) + if (warp->mapGroup != MAP_GROUP(ROUTE119_WEATHER_INSTITUTE_1F)) return FALSE; - if (warp->mapNum == MAP_NUM(MAP_ROUTE119_WEATHER_INSTITUTE_1F) - || warp->mapNum == MAP_NUM(MAP_ROUTE119_WEATHER_INSTITUTE_2F)) + if (warp->mapNum == MAP_NUM(ROUTE119_WEATHER_INSTITUTE_1F) + || warp->mapNum == MAP_NUM(ROUTE119_WEATHER_INSTITUTE_2F)) return TRUE; return FALSE; } @@ -841,8 +841,8 @@ u16 GetCurrLocationDefaultMusic(void) u16 music; // Play the desert music only when the sandstorm is active on Route 111. - if (gSaveBlock1.location.mapGroup == MAP_GROUP(MAP_ROUTE111) - && gSaveBlock1.location.mapNum == MAP_NUM(MAP_ROUTE111) + if (gSaveBlock1.location.mapGroup == MAP_GROUP(ROUTE111) + && gSaveBlock1.location.mapNum == MAP_NUM(ROUTE111) && GetSav1Weather() == 8) return BGM_ASHROAD; @@ -869,8 +869,8 @@ u16 GetWarpDestinationMusic(void) } else { - if (gSaveBlock1.location.mapGroup == MAP_GROUP(MAP_MAUVILLE_CITY) - && gSaveBlock1.location.mapNum == MAP_NUM(MAP_MAUVILLE_CITY)) + if (gSaveBlock1.location.mapGroup == MAP_GROUP(MAUVILLE_CITY) + && gSaveBlock1.location.mapNum == MAP_NUM(MAUVILLE_CITY)) return BGM_DOORO_X1; else return BGM_GRANROAD; @@ -1024,8 +1024,8 @@ void UpdateAmbientCry(s16 *state, u16 *delayCounter) void ChooseAmbientCrySpecies(void) { - if ((gSaveBlock1.location.mapGroup == MAP_GROUP(MAP_ROUTE130) - && gSaveBlock1.location.mapNum == MAP_NUM(MAP_ROUTE130)) + if ((gSaveBlock1.location.mapGroup == MAP_GROUP(ROUTE130) + && gSaveBlock1.location.mapNum == MAP_NUM(ROUTE130)) && !IsMirageIslandPresent()) { // Only play water pokemon cries on this route diff --git a/src/field/region_map.c b/src/field/region_map.c index 5fbe930e1..f2e4b3251 100644 --- a/src/field/region_map.c +++ b/src/field/region_map.c @@ -707,9 +707,9 @@ static void InitializeCursorPosition(void) u16 r9; if (gSaveBlock1.location.mapGroup == 25 - && (gSaveBlock1.location.mapNum == MAP_NUM(MAP_SS_TIDAL_CORRIDOR) - || gSaveBlock1.location.mapNum == MAP_NUM(MAP_SS_TIDAL_LOWER_DECK) - || gSaveBlock1.location.mapNum == MAP_NUM(MAP_SS_TIDAL_ROOMS))) + && (gSaveBlock1.location.mapNum == MAP_NUM(SS_TIDAL_CORRIDOR) + || gSaveBlock1.location.mapNum == MAP_NUM(SS_TIDAL_LOWER_DECK) + || gSaveBlock1.location.mapNum == MAP_NUM(SS_TIDAL_ROOMS))) { sub_80FB600(); return; diff --git a/src/field/rotating_gate.c b/src/field/rotating_gate.c index c17b604c2..00008c69c 100644 --- a/src/field/rotating_gate.c +++ b/src/field/rotating_gate.c @@ -622,14 +622,14 @@ static EWRAM_DATA u8 gRotatingGate_PuzzleCount = 0; static int GetCurrentMapRotatingGatePuzzleType(void) { - if (gSaveBlock1.location.mapGroup == MAP_GROUP(MAP_FORTREE_CITY_GYM) && - gSaveBlock1.location.mapNum == MAP_NUM(MAP_FORTREE_CITY_GYM)) + if (gSaveBlock1.location.mapGroup == MAP_GROUP(FORTREE_CITY_GYM) && + gSaveBlock1.location.mapNum == MAP_NUM(FORTREE_CITY_GYM)) { return PUZZLE_FORTREE_CITY_GYM; } - if (gSaveBlock1.location.mapGroup == MAP_GROUP(MAP_ROUTE110_TRICK_HOUSE_PUZZLE6) && - gSaveBlock1.location.mapNum == MAP_NUM(MAP_ROUTE110_TRICK_HOUSE_PUZZLE6)) + if (gSaveBlock1.location.mapGroup == MAP_GROUP(ROUTE110_TRICK_HOUSE_PUZZLE6) && + gSaveBlock1.location.mapNum == MAP_NUM(ROUTE110_TRICK_HOUSE_PUZZLE6)) { return PUZZLE_ROUTE110_TRICK_HOUSE_PUZZLE6; } diff --git a/src/field/secret_base.c b/src/field/secret_base.c index b3591564d..fee79a18c 100644 --- a/src/field/secret_base.c +++ b/src/field/secret_base.c @@ -69,30 +69,30 @@ const struct const u8 gUnknown_083D1374[] = { - MAP_NUM(MAP_SECRET_BASE_RED_CAVE1), 0, 1, 3, - MAP_NUM(MAP_SECRET_BASE_RED_CAVE2), 0, 5, 9, - MAP_NUM(MAP_SECRET_BASE_RED_CAVE3), 0, 1, 3, - MAP_NUM(MAP_SECRET_BASE_RED_CAVE4), 0, 7, 13, - MAP_NUM(MAP_SECRET_BASE_BROWN_CAVE1), 0, 2, 3, - MAP_NUM(MAP_SECRET_BASE_BROWN_CAVE2), 0, 9, 2, - MAP_NUM(MAP_SECRET_BASE_BROWN_CAVE3), 0, 13, 4, - MAP_NUM(MAP_SECRET_BASE_BROWN_CAVE4), 0, 1, 2, - MAP_NUM(MAP_SECRET_BASE_BLUE_CAVE1), 0, 1, 3, - MAP_NUM(MAP_SECRET_BASE_BLUE_CAVE2), 0, 1, 2, - MAP_NUM(MAP_SECRET_BASE_BLUE_CAVE3), 0, 3, 15, - MAP_NUM(MAP_SECRET_BASE_BLUE_CAVE4), 0, 3, 14, - MAP_NUM(MAP_SECRET_BASE_YELLOW_CAVE1), 0, 9, 3, - MAP_NUM(MAP_SECRET_BASE_YELLOW_CAVE2), 0, 8, 7, - MAP_NUM(MAP_SECRET_BASE_YELLOW_CAVE3), 0, 3, 6, - MAP_NUM(MAP_SECRET_BASE_YELLOW_CAVE4), 0, 5, 9, - MAP_NUM(MAP_SECRET_BASE_TREE1), 0, 2, 3, - MAP_NUM(MAP_SECRET_BASE_TREE2), 0, 5, 6, - MAP_NUM(MAP_SECRET_BASE_TREE3), 0, 15, 3, - MAP_NUM(MAP_SECRET_BASE_TREE4), 0, 4, 10, - MAP_NUM(MAP_SECRET_BASE_SHRUB1), 0, 3, 3, - MAP_NUM(MAP_SECRET_BASE_SHRUB2), 0, 1, 2, - MAP_NUM(MAP_SECRET_BASE_SHRUB3), 0, 7, 8, - MAP_NUM(MAP_SECRET_BASE_SHRUB4), 0, 9, 6 + MAP_NUM(SECRET_BASE_RED_CAVE1), 0, 1, 3, + MAP_NUM(SECRET_BASE_RED_CAVE2), 0, 5, 9, + MAP_NUM(SECRET_BASE_RED_CAVE3), 0, 1, 3, + MAP_NUM(SECRET_BASE_RED_CAVE4), 0, 7, 13, + MAP_NUM(SECRET_BASE_BROWN_CAVE1), 0, 2, 3, + MAP_NUM(SECRET_BASE_BROWN_CAVE2), 0, 9, 2, + MAP_NUM(SECRET_BASE_BROWN_CAVE3), 0, 13, 4, + MAP_NUM(SECRET_BASE_BROWN_CAVE4), 0, 1, 2, + MAP_NUM(SECRET_BASE_BLUE_CAVE1), 0, 1, 3, + MAP_NUM(SECRET_BASE_BLUE_CAVE2), 0, 1, 2, + MAP_NUM(SECRET_BASE_BLUE_CAVE3), 0, 3, 15, + MAP_NUM(SECRET_BASE_BLUE_CAVE4), 0, 3, 14, + MAP_NUM(SECRET_BASE_YELLOW_CAVE1), 0, 9, 3, + MAP_NUM(SECRET_BASE_YELLOW_CAVE2), 0, 8, 7, + MAP_NUM(SECRET_BASE_YELLOW_CAVE3), 0, 3, 6, + MAP_NUM(SECRET_BASE_YELLOW_CAVE4), 0, 5, 9, + MAP_NUM(SECRET_BASE_TREE1), 0, 2, 3, + MAP_NUM(SECRET_BASE_TREE2), 0, 5, 6, + MAP_NUM(SECRET_BASE_TREE3), 0, 15, 3, + MAP_NUM(SECRET_BASE_TREE4), 0, 4, 10, + MAP_NUM(SECRET_BASE_SHRUB1), 0, 3, 3, + MAP_NUM(SECRET_BASE_SHRUB2), 0, 1, 2, + MAP_NUM(SECRET_BASE_SHRUB3), 0, 7, 8, + MAP_NUM(SECRET_BASE_SHRUB4), 0, 9, 6 }; const struct MenuAction2 gUnknown_083D13D4[] = { @@ -317,7 +317,7 @@ void sub_80BB970(struct MapEvents *events) void sub_80BBA14(void) { s8 idx = 4 * (gUnknown_020387DC / 10); - warp1_set_2(MAP_GROUP(MAP_SECRET_BASE_RED_CAVE1), gUnknown_083D1374[idx], gUnknown_083D1374[idx + 1]); + warp1_set_2(MAP_GROUP(SECRET_BASE_RED_CAVE1), gUnknown_083D1374[idx], gUnknown_083D1374[idx + 1]); } void sub_80BBA48(u8 taskid) @@ -402,7 +402,7 @@ void sub_80BBC78(void) bool8 CurrentMapIsSecretBase(void) { - if (gSaveBlock1.location.mapGroup == MAP_GROUP(MAP_SECRET_BASE_SHRUB4) && (u8)(gSaveBlock1.location.mapNum) <= MAP_NUM(MAP_SECRET_BASE_SHRUB4)) + if (gSaveBlock1.location.mapGroup == MAP_GROUP(SECRET_BASE_SHRUB4) && (u8)(gSaveBlock1.location.mapNum) <= MAP_NUM(SECRET_BASE_SHRUB4)) return TRUE; return FALSE; } diff --git a/src/field/tv.c b/src/field/tv.c index 15a3f4d4d..71d6455bd 100644 --- a/src/field/tv.c +++ b/src/field/tv.c @@ -551,8 +551,8 @@ void UpdateTVScreensOnMap(int width, int height) case 2: break; default: - if (gSaveBlock1.location.mapGroup == MAP_GROUP(MAP_LILYCOVE_CITY_COVE_LILY_MOTEL_1F) - && gSaveBlock1.location.mapNum == MAP_NUM(MAP_LILYCOVE_CITY_COVE_LILY_MOTEL_1F)) + if (gSaveBlock1.location.mapGroup == MAP_GROUP(LILYCOVE_CITY_COVE_LILY_MOTEL_1F) + && gSaveBlock1.location.mapNum == MAP_NUM(LILYCOVE_CITY_COVE_LILY_MOTEL_1F)) { SetTVMetatilesOnMap(width, height, 0x3); } @@ -1460,16 +1460,16 @@ bool8 IsPriceDiscounted(u8 arg0) switch (arg0) { case 1: - if (gSaveBlock1.location.mapGroup == MAP_GROUP(MAP_SLATEPORT_CITY) - && gSaveBlock1.location.mapNum == MAP_NUM(MAP_SLATEPORT_CITY) + if (gSaveBlock1.location.mapGroup == MAP_GROUP(SLATEPORT_CITY) + && gSaveBlock1.location.mapNum == MAP_NUM(SLATEPORT_CITY) && gScriptLastTalked == 0x1a) return TRUE; else return FALSE; break; case 3: - if (gSaveBlock1.location.mapGroup == MAP_GROUP(MAP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP) - && gSaveBlock1.location.mapNum == MAP_NUM(MAP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP)) + if (gSaveBlock1.location.mapGroup == MAP_GROUP(LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP) + && gSaveBlock1.location.mapNum == MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP)) return TRUE; else return FALSE; @@ -2121,16 +2121,16 @@ u32 GetPlayerTrainerId(void) u8 CheckForBigMovieOrEmergencyNewsOnTV(void) { - if (gSaveBlock1.location.mapGroup != MAP_GROUP(MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F)) + if (gSaveBlock1.location.mapGroup != MAP_GROUP(LITTLEROOT_TOWN_BRENDANS_HOUSE_1F)) return 0; if (gSaveBlock2.playerGender == MALE) { - if (gSaveBlock1.location.mapNum != MAP_NUM(MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F)) + if (gSaveBlock1.location.mapNum != MAP_NUM(LITTLEROOT_TOWN_BRENDANS_HOUSE_1F)) return 0; } else { - if (gSaveBlock1.location.mapNum != MAP_NUM(MAP_LITTLEROOT_TOWN_MAYS_HOUSE_1F)) + if (gSaveBlock1.location.mapNum != MAP_NUM(LITTLEROOT_TOWN_MAYS_HOUSE_1F)) return 0; } if (FlagGet(SYS_TV_LATI) == 1) @@ -2142,11 +2142,11 @@ u8 CheckForBigMovieOrEmergencyNewsOnTV(void) void GetMomOrDadStringForTVMessage(void) { - if (gSaveBlock1.location.mapGroup == MAP_GROUP(MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F)) + if (gSaveBlock1.location.mapGroup == MAP_GROUP(LITTLEROOT_TOWN_BRENDANS_HOUSE_1F)) { if (gSaveBlock2.playerGender == MALE) { - if (gSaveBlock1.location.mapNum == MAP_NUM(MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F)) + if (gSaveBlock1.location.mapNum == MAP_NUM(LITTLEROOT_TOWN_BRENDANS_HOUSE_1F)) { StringCopy(gStringVar1, gOtherText_Mom); VarSet(VAR_0x4003, 1); @@ -2154,7 +2154,7 @@ void GetMomOrDadStringForTVMessage(void) } else { - if (gSaveBlock1.location.mapNum == MAP_NUM(MAP_LITTLEROOT_TOWN_MAYS_HOUSE_1F)) + if (gSaveBlock1.location.mapNum == MAP_NUM(LITTLEROOT_TOWN_MAYS_HOUSE_1F)) { StringCopy(gStringVar1, gOtherText_Mom); VarSet(VAR_0x4003, 1); diff --git a/src/field/wild_encounter.c b/src/field/wild_encounter.c index 2376f582c..9b3db1a52 100644 --- a/src/field/wild_encounter.c +++ b/src/field/wild_encounter.c @@ -2953,8 +2953,8 @@ static bool8 CheckFeebas(void) u8 route119section = 0; u16 waterTileNum; - if (gSaveBlock1.location.mapGroup == MAP_GROUP(MAP_ROUTE119) - && gSaveBlock1.location.mapNum == MAP_NUM(MAP_ROUTE119)) + if (gSaveBlock1.location.mapGroup == MAP_GROUP(ROUTE119) + && gSaveBlock1.location.mapNum == MAP_NUM(ROUTE119)) { GetXYCoordsOneStepInFrontOfPlayer(&x, &y); x -= 7; -- cgit v1.2.3 From 8fd1e16862f119cf9cb25b7411cda0c8f7c4e354 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Mon, 27 Nov 2017 17:17:00 -0600 Subject: convert landmark data to C --- src/field/landmark.c | 366 +++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 355 insertions(+), 11 deletions(-) (limited to 'src/field') diff --git a/src/field/landmark.c b/src/field/landmark.c index 6a53716bb..1b7805e96 100644 --- a/src/field/landmark.c +++ b/src/field/landmark.c @@ -1,12 +1,11 @@ #include "global.h" #include "landmark.h" #include "event_data.h" - -#define MAPSEC_NONE 0x58 +#include "region_map_sections.h" struct Landmark { - u8 *name; + const u8 *name; u16 flag; }; @@ -14,16 +13,361 @@ struct LandmarkList { u8 mapSection; u8 id; - const struct Landmark **landmarks; + const struct Landmark *const *landmarks; +}; + +extern const u8 gLandmarkName_FlowerShop[]; +extern const u8 gLandmarkName_PetalburgWoods[]; +extern const u8 gLandmarkName_MrBrineysCottage[]; +extern const u8 gLandmarkName_AbandonedShip[]; +extern const u8 gLandmarkName_SeashoreHouse[]; +extern const u8 gLandmarkName_SlateportBeach[]; +extern const u8 gLandmarkName_CyclingRoad[]; +extern const u8 gLandmarkName_NewMauville[]; +extern const u8 gLandmarkName_TrickHouse[]; +extern const u8 gLandmarkName_OldLadysRestShop[]; +extern const u8 gLandmarkName_Desert[]; +extern const u8 gLandmarkName_WinstrateFamily[]; +extern const u8 gLandmarkName_CableCar[]; +extern const u8 gLandmarkName_GlassWorkshop[]; +extern const u8 gLandmarkName_WeatherInstitute[]; +extern const u8 gLandmarkName_MeteorFalls[]; +extern const u8 gLandmarkName_TunnelersRestHouse[]; +extern const u8 gLandmarkName_RusturfTunnel[]; +extern const u8 gLandmarkName_PokemonDayCare[]; +extern const u8 gLandmarkName_SafariZoneEntrance[]; +extern const u8 gLandmarkName_MtPyre[]; +extern const u8 gLandmarkName_ShoalCave[]; +extern const u8 gLandmarkName_SeafloorCavern[]; +extern const u8 gLandmarkName_GraniteCave[]; +extern const u8 gLandmarkName_OceanCurrent[]; +extern const u8 gLandmarkName_LanettesHouse[]; +extern const u8 gLandmarkName_FieryPath[]; +extern const u8 gLandmarkName_JaggedPass[]; +extern const u8 gLandmarkName_BerryMastersHouse[]; +extern const u8 gLandmarkName_IslandCave[]; +extern const u8 gLandmarkName_DesertRuins[]; +extern const u8 gLandmarkName_ScorchedSlab[]; +extern const u8 gLandmarkName_AncientTomb[]; +extern const u8 gLandmarkName_SealedChamber[]; +extern const u8 gLandmarkName_FossilManiacsHouse[]; +extern const u8 gLandmarkName_HuntersHouse[]; +extern const u8 gLandmarkName_SkyPillar[]; + +static const struct Landmark Landmark_FlowerShop = {gLandmarkName_FlowerShop, 2108}; +static const struct Landmark Landmark_PetalburgWoods = {gLandmarkName_PetalburgWoods, -1}; +static const struct Landmark Landmark_MrBrineysCottage = {gLandmarkName_MrBrineysCottage, 2109}; +static const struct Landmark Landmark_AbandonedShip = {gLandmarkName_AbandonedShip, 2110}; +static const struct Landmark Landmark_SeashoreHouse = {gLandmarkName_SeashoreHouse, 2111}; +static const struct Landmark Landmark_SlateportBeach = {gLandmarkName_SlateportBeach, -1}; +static const struct Landmark Landmark_CyclingRoad = {gLandmarkName_CyclingRoad, -1}; +static const struct Landmark Landmark_NewMauville = {gLandmarkName_NewMauville, 2112}; +static const struct Landmark Landmark_TrickHouse = {gLandmarkName_TrickHouse, 2114}; +static const struct Landmark Landmark_OldLadysRestShop = {gLandmarkName_OldLadysRestShop, 2113}; +static const struct Landmark Landmark_Desert = {gLandmarkName_Desert, -1}; +static const struct Landmark Landmark_WinstrateFamily = {gLandmarkName_WinstrateFamily, 2115}; +static const struct Landmark Landmark_CableCar = {gLandmarkName_CableCar, -1}; +static const struct Landmark Landmark_GlassWorkshop = {gLandmarkName_GlassWorkshop, 2116}; +static const struct Landmark Landmark_WeatherInstitute = {gLandmarkName_WeatherInstitute, -1}; +static const struct Landmark Landmark_MeteorFalls = {gLandmarkName_MeteorFalls, -1}; +static const struct Landmark Landmark_TunnelersRestHouse = {gLandmarkName_TunnelersRestHouse, 2138}; +static const struct Landmark Landmark_RusturfTunnel = {gLandmarkName_RusturfTunnel, -1}; +static const struct Landmark Landmark_PokemonDayCare = {gLandmarkName_PokemonDayCare, 2118}; +static const struct Landmark Landmark_SafariZoneEntrance = {gLandmarkName_SafariZoneEntrance, -1}; +static const struct Landmark Landmark_MtPyre = {gLandmarkName_MtPyre, -1}; +static const struct Landmark Landmark_ShoalCave = {gLandmarkName_ShoalCave, -1}; +static const struct Landmark Landmark_SeafloorCavern = {gLandmarkName_SeafloorCavern, 2119}; +static const struct Landmark Landmark_GraniteCave = {gLandmarkName_GraniteCave, -1}; +static const struct Landmark Landmark_OceanCurrent = {gLandmarkName_OceanCurrent, -1}; +static const struct Landmark Landmark_LanettesHouse = {gLandmarkName_LanettesHouse, 2117}; +static const struct Landmark Landmark_FieryPath = {gLandmarkName_FieryPath, 2122}; +static const struct Landmark Landmark_JaggedPass = {gLandmarkName_JaggedPass, -1}; +static const struct Landmark Landmark_BerryMastersHouse = {gLandmarkName_BerryMastersHouse, 2147}; +static const struct Landmark Landmark_IslandCave = {gLandmarkName_IslandCave, 2133}; +static const struct Landmark Landmark_DesertRuins = {gLandmarkName_DesertRuins, 2134}; +static const struct Landmark Landmark_ScorchedSlab = {gLandmarkName_ScorchedSlab, 2136}; +static const struct Landmark Landmark_AncientTomb = {gLandmarkName_AncientTomb, 2137}; +static const struct Landmark Landmark_SealedChamber = {gLandmarkName_SealedChamber, 2140}; +static const struct Landmark Landmark_FossilManiacsHouse = {gLandmarkName_FossilManiacsHouse, 2135}; +static const struct Landmark Landmark_HuntersHouse = {gLandmarkName_HuntersHouse, 2139}; +static const struct Landmark Landmark_SkyPillar = {gLandmarkName_SkyPillar, 2142}; + +static const struct Landmark *const Landmarks_Route104_0[] = +{ + &Landmark_FlowerShop, + NULL, +}; + +static const struct Landmark *const Landmarks_Route104_1[] = +{ + &Landmark_PetalburgWoods, + &Landmark_MrBrineysCottage, + NULL, +}; + +static const struct Landmark *const Landmarks_Route105_0[] = +{ + &Landmark_IslandCave, + NULL, +}; + +static const struct Landmark *const Landmarks_Route106_1[] = +{ + &Landmark_GraniteCave, + NULL, +}; + +static const struct Landmark *const Landmarks_Route108_0[] = +{ + &Landmark_AbandonedShip, + NULL, +}; + +static const struct Landmark *const Landmarks_Route109_0[] = +{ + &Landmark_SeashoreHouse, + &Landmark_SlateportBeach, + NULL, +}; + +static const struct Landmark *const Landmarks_Route110_0[] = +{ + &Landmark_CyclingRoad, + &Landmark_NewMauville, + NULL, +}; + +static const struct Landmark *const Landmarks_Route110_1[] = +{ + &Landmark_CyclingRoad, + NULL, +}; + +static const struct Landmark *const Landmarks_Route110_2[] = +{ + &Landmark_CyclingRoad, + &Landmark_TrickHouse, + NULL, +}; + +static const struct Landmark *const Landmarks_Route111_0[] = +{ + &Landmark_OldLadysRestShop, + NULL, +}; + +static const struct Landmark *const Landmarks_Route111_1[] = +{ + &Landmark_Desert, + NULL, +}; + +static const struct Landmark *const Landmarks_Route111_3[] = +{ + &Landmark_DesertRuins, + &Landmark_Desert, + NULL, +}; + +static const struct Landmark *const Landmarks_Route111_4[] = +{ + &Landmark_WinstrateFamily, + &Landmark_Desert, + NULL, +}; + +static const struct Landmark *const Landmarks_Route112_0[] = +{ + &Landmark_FieryPath, + &Landmark_JaggedPass, + NULL, +}; + +static const struct Landmark *const Landmarks_Route112_1[] = +{ + &Landmark_CableCar, + &Landmark_FieryPath, + NULL, +}; + +static const struct Landmark *const Landmarks_Route113_1[] = +{ + &Landmark_GlassWorkshop, + NULL, +}; + +static const struct Landmark *const Landmarks_Route114_1[] = +{ + &Landmark_FossilManiacsHouse, + NULL, +}; + +static const struct Landmark *const Landmarks_Route114_2[] = +{ + &Landmark_LanettesHouse, + NULL, +}; + +static const struct Landmark *const Landmarks_MeteorFalls[] = +{ + &Landmark_MeteorFalls, + NULL, +}; + +static const struct Landmark *const Landmarks_Route116_1[] = +{ + &Landmark_TunnelersRestHouse, + &Landmark_RusturfTunnel, + NULL, +}; + +static const struct Landmark *const Landmarks_Route116_2[] = +{ + &Landmark_RusturfTunnel, + NULL, +}; + +static const struct Landmark *const Landmarks_Route117_2[] = +{ + &Landmark_PokemonDayCare, + NULL, }; -extern const struct LandmarkList gLandmarkLists[]; +static const struct Landmark *const Landmarks_Route119_1[] = +{ + &Landmark_WeatherInstitute, + NULL, +}; + +static const struct Landmark *const Landmarks_Route120_0[] = +{ + &Landmark_ScorchedSlab, + NULL, +}; + +static const struct Landmark *const Landmarks_Route120_2[] = +{ + &Landmark_AncientTomb, + NULL, +}; + +static const struct Landmark *const Landmarks_Route121_2[] = +{ + &Landmark_SafariZoneEntrance, + NULL, +}; + +static const struct Landmark *const Landmarks_Route122_0[] = +{ + &Landmark_MtPyre, + NULL, +}; + +static const struct Landmark *const Landmarks_Route123_0[] = +{ + &Landmark_BerryMastersHouse, + NULL, +}; + +static const struct Landmark *const Landmarks_Route124_7[] = +{ + &Landmark_HuntersHouse, + NULL, +}; + +static const struct Landmark *const Landmarks_Route125_2[] = +{ + &Landmark_ShoalCave, + NULL, +}; + +static const struct Landmark *const Landmarks_Route128_1[] = +{ + &Landmark_SeafloorCavern, + NULL, +}; + +static const struct Landmark *const Landmarks_Route131_1[] = +{ + &Landmark_SkyPillar, + NULL, +}; + +static const struct Landmark *const Landmarks_OceanCurrent[] = +{ + &Landmark_OceanCurrent, + NULL, +}; + +static const struct Landmark *const Landmarks_Route134_2[] = +{ + &Landmark_SealedChamber, + &Landmark_OceanCurrent, + NULL, +}; + +static const struct Landmark *const Landmarks_MtChimney_2[] = +{ + &Landmark_CableCar, + &Landmark_JaggedPass, + NULL, +}; + +static const struct LandmarkList gLandmarkLists[] = +{ + {MAPSEC_Route104, 0, Landmarks_Route104_0}, + {MAPSEC_Route104, 1, Landmarks_Route104_1}, + {MAPSEC_Route105, 0, Landmarks_Route105_0}, + {MAPSEC_Route106, 1, Landmarks_Route106_1}, + {MAPSEC_Route108, 0, Landmarks_Route108_0}, + {MAPSEC_Route109, 0, Landmarks_Route109_0}, + {MAPSEC_Route110, 0, Landmarks_Route110_0}, + {MAPSEC_Route110, 1, Landmarks_Route110_1}, + {MAPSEC_Route110, 2, Landmarks_Route110_2}, + {MAPSEC_Route111, 0, Landmarks_Route111_0}, + {MAPSEC_Route111, 1, Landmarks_Route111_1}, + {MAPSEC_Route111, 2, Landmarks_Route111_1}, + {MAPSEC_Route111, 3, Landmarks_Route111_3}, + {MAPSEC_Route111, 4, Landmarks_Route111_4}, + {MAPSEC_Route112, 0, Landmarks_Route112_0}, + {MAPSEC_Route112, 1, Landmarks_Route112_1}, + {MAPSEC_Route113, 1, Landmarks_Route113_1}, + {MAPSEC_Route114, 1, Landmarks_Route114_1}, + {MAPSEC_Route114, 2, Landmarks_Route114_2}, + {MAPSEC_Route114, 3, Landmarks_MeteorFalls}, + {MAPSEC_Route115, 0, Landmarks_MeteorFalls}, + {MAPSEC_Route115, 1, Landmarks_MeteorFalls}, + {MAPSEC_Route116, 1, Landmarks_Route116_1}, + {MAPSEC_Route116, 2, Landmarks_Route116_2}, + {MAPSEC_Route117, 2, Landmarks_Route117_2}, + {MAPSEC_Route119, 1, Landmarks_Route119_1}, + {MAPSEC_Route120, 0, Landmarks_Route120_0}, + {MAPSEC_Route120, 2, Landmarks_Route120_2}, + {MAPSEC_Route121, 2, Landmarks_Route121_2}, + {MAPSEC_Route122, 0, Landmarks_Route122_0}, + {MAPSEC_Route123, 0, Landmarks_Route123_0}, + {MAPSEC_Route122, 1, Landmarks_Route122_0}, + {MAPSEC_Route124, 7, Landmarks_Route124_7}, + {MAPSEC_Route125, 2, Landmarks_Route125_2}, + {MAPSEC_Route128, 1, Landmarks_Route128_1}, + {MAPSEC_Route131, 1, Landmarks_Route131_1}, + {MAPSEC_Route132, 0, Landmarks_OceanCurrent}, + {MAPSEC_Route132, 1, Landmarks_OceanCurrent}, + {MAPSEC_Route133, 0, Landmarks_OceanCurrent}, + {MAPSEC_Route133, 1, Landmarks_OceanCurrent}, + {MAPSEC_Route133, 2, Landmarks_OceanCurrent}, + {MAPSEC_Route134, 0, Landmarks_OceanCurrent}, + {MAPSEC_Route134, 1, Landmarks_OceanCurrent}, + {MAPSEC_Route134, 2, Landmarks_Route134_2}, + {MAPSEC_MtChimney, 2, Landmarks_MtChimney_2}, + {MAPSEC_Nothing, 0, NULL}, +}; -static const struct Landmark **GetLandmarks(u8 mapSection, u8 id); +static const struct Landmark *const *GetLandmarks(u8 mapSection, u8 id); -u8 *GetLandmarkName(u8 mapSection, u8 id, u8 count) +const u8 *GetLandmarkName(u8 mapSection, u8 id, u8 count) { - const struct Landmark **landmarks = GetLandmarks(mapSection, id); + const struct Landmark *const *landmarks = GetLandmarks(mapSection, id); if (!landmarks) return NULL; @@ -48,11 +392,11 @@ u8 *GetLandmarkName(u8 mapSection, u8 id, u8 count) return (*landmarks)->name; } -static const struct Landmark **GetLandmarks(u8 mapSection, u8 id) +static const struct Landmark *const *GetLandmarks(u8 mapSection, u8 id) { u16 i = 0; - for (; gLandmarkLists[i].mapSection != MAPSEC_NONE; i++) + for (; gLandmarkLists[i].mapSection != MAPSEC_Nothing; i++) { if (gLandmarkLists[i].mapSection > mapSection) return NULL; @@ -60,7 +404,7 @@ static const struct Landmark **GetLandmarks(u8 mapSection, u8 id) break; } - if (gLandmarkLists[i].mapSection == MAPSEC_NONE) + if (gLandmarkLists[i].mapSection == MAPSEC_Nothing) return NULL; for (; gLandmarkLists[i].mapSection == mapSection; i++) -- cgit v1.2.3 From bc8f4541f3fe290e7deee61954f38c23c011169f Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Mon, 27 Nov 2017 17:54:49 -0600 Subject: convert wild_encounter data to C --- src/field/wild_encounter.c | 814 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 804 insertions(+), 10 deletions(-) (limited to 'src/field') diff --git a/src/field/wild_encounter.c b/src/field/wild_encounter.c index 9b3db1a52..64c88694c 100644 --- a/src/field/wild_encounter.c +++ b/src/field/wild_encounter.c @@ -2898,10 +2898,804 @@ const struct WildPokemon Underwater2_WaterMons [] = }; const struct WildPokemonInfo Underwater2_WaterMonsInfo = {4, Underwater2_WaterMons}; +const struct WildPokemonHeader gWildMonHeaders[] = +{ + { + .mapGroup = MAP_GROUP(PETALBURG_CITY), + .mapNum = MAP_NUM(PETALBURG_CITY), + .landMonsInfo = NULL, + .waterMonsInfo = &PetalburgCity_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &PetalburgCity_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(SLATEPORT_CITY), + .mapNum = MAP_NUM(SLATEPORT_CITY), + .landMonsInfo = NULL, + .waterMonsInfo = &SlateportCity_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &SlateportCity_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(LILYCOVE_CITY), + .mapNum = MAP_NUM(LILYCOVE_CITY), + .landMonsInfo = NULL, + .waterMonsInfo = &LilycoveCity_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &LilycoveCity_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(MOSSDEEP_CITY), + .mapNum = MAP_NUM(MOSSDEEP_CITY), + .landMonsInfo = NULL, + .waterMonsInfo = &MossdeepCity_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &MossdeepCity_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(SOOTOPOLIS_CITY), + .mapNum = MAP_NUM(SOOTOPOLIS_CITY), + .landMonsInfo = NULL, + .waterMonsInfo = &SootopolisCity_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &SootopolisCity_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(EVER_GRANDE_CITY), + .mapNum = MAP_NUM(EVER_GRANDE_CITY), + .landMonsInfo = NULL, + .waterMonsInfo = &EverGrandeCity_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &EverGrandeCity_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(METEOR_FALLS_1F_1R), + .mapNum = MAP_NUM(METEOR_FALLS_1F_1R), + .landMonsInfo = &MeteorFalls_1F_1R_LandMonsInfo, + .waterMonsInfo = &MeteorFalls_1F_1R_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &MeteorFalls_1F_1R_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(METEOR_FALLS_1F_2R), + .mapNum = MAP_NUM(METEOR_FALLS_1F_2R), + .landMonsInfo = &MeteorFalls_1F_2R_LandMonsInfo, + .waterMonsInfo = &MeteorFalls_1F_2R_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &MeteorFalls_1F_2R_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(METEOR_FALLS_B1F_1R), + .mapNum = MAP_NUM(METEOR_FALLS_B1F_1R), + .landMonsInfo = &MeteorFalls_B1F_1R_LandMonsInfo, + .waterMonsInfo = &MeteorFalls_B1F_1R_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &MeteorFalls_B1F_1R_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(METEOR_FALLS_B1F_2R), + .mapNum = MAP_NUM(METEOR_FALLS_B1F_2R), + .landMonsInfo = &MeteorFalls_B1F_2R_LandMonsInfo, + .waterMonsInfo = &MeteorFalls_B1F_2R_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &MeteorFalls_B1F_2R_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(RUSTURF_TUNNEL), + .mapNum = MAP_NUM(RUSTURF_TUNNEL), + .landMonsInfo = &RusturfTunnel_LandMonsInfo, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = NULL, + }, + { + .mapGroup = MAP_GROUP(GRANITE_CAVE_1F), + .mapNum = MAP_NUM(GRANITE_CAVE_1F), + .landMonsInfo = &GraniteCave_1F_LandMonsInfo, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = NULL, + }, + { + .mapGroup = MAP_GROUP(GRANITE_CAVE_B1F), + .mapNum = MAP_NUM(GRANITE_CAVE_B1F), + .landMonsInfo = &GraniteCave_B1F_LandMonsInfo, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = NULL, + }, + { + .mapGroup = MAP_GROUP(GRANITE_CAVE_B2F), + .mapNum = MAP_NUM(GRANITE_CAVE_B2F), + .landMonsInfo = &GraniteCave_B2F_LandMonsInfo, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = &GraniteCave_B2F_RockSmashMonsInfo, + .fishingMonsInfo = NULL, + }, + { + .mapGroup = MAP_GROUP(GRANITE_CAVE_STEVENS_ROOM), + .mapNum = MAP_NUM(GRANITE_CAVE_STEVENS_ROOM), + .landMonsInfo = &GraniteCave_StevensRoom_LandMonsInfo, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = NULL, + }, + { + .mapGroup = MAP_GROUP(PETALBURG_WOODS), + .mapNum = MAP_NUM(PETALBURG_WOODS), + .landMonsInfo = &PetalburgWoods_LandMonsInfo, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = NULL, + }, + { + .mapGroup = MAP_GROUP(JAGGED_PASS), + .mapNum = MAP_NUM(JAGGED_PASS), + .landMonsInfo = &JaggedPass_LandMonsInfo, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = NULL, + }, + { + .mapGroup = MAP_GROUP(FIERY_PATH), + .mapNum = MAP_NUM(FIERY_PATH), + .landMonsInfo = &FieryPath_LandMonsInfo, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = NULL, + }, + { + .mapGroup = MAP_GROUP(MT_PYRE_1F), + .mapNum = MAP_NUM(MT_PYRE_1F), + .landMonsInfo = &MtPyre_1F_LandMonsInfo, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = NULL, + }, + { + .mapGroup = MAP_GROUP(MT_PYRE_2F), + .mapNum = MAP_NUM(MT_PYRE_2F), + .landMonsInfo = &MtPyre_2F_LandMonsInfo, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = NULL, + }, + { + .mapGroup = MAP_GROUP(MT_PYRE_3F), + .mapNum = MAP_NUM(MT_PYRE_3F), + .landMonsInfo = &MtPyre_3F_LandMonsInfo, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = NULL, + }, + { + .mapGroup = MAP_GROUP(MT_PYRE_4F), + .mapNum = MAP_NUM(MT_PYRE_4F), + .landMonsInfo = &MtPyre_4F_LandMonsInfo, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = NULL, + }, + { + .mapGroup = MAP_GROUP(MT_PYRE_5F), + .mapNum = MAP_NUM(MT_PYRE_5F), + .landMonsInfo = &MtPyre_5F_LandMonsInfo, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = NULL, + }, + { + .mapGroup = MAP_GROUP(MT_PYRE_6F), + .mapNum = MAP_NUM(MT_PYRE_6F), + .landMonsInfo = &MtPyre_6F_LandMonsInfo, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = NULL, + }, + { + .mapGroup = MAP_GROUP(MT_PYRE_EXTERIOR), + .mapNum = MAP_NUM(MT_PYRE_EXTERIOR), + .landMonsInfo = &MtPyre_Exterior_LandMonsInfo, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = NULL, + }, + { + .mapGroup = MAP_GROUP(MT_PYRE_SUMMIT), + .mapNum = MAP_NUM(MT_PYRE_SUMMIT), + .landMonsInfo = &MtPyre_Summit_LandMonsInfo, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = NULL, + }, + { + .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ENTRANCE), + .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ENTRANCE), + .landMonsInfo = NULL, + .waterMonsInfo = &SeafloorCavern_Entrance_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &SeafloorCavern_Entrance_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM1), + .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM1), + .landMonsInfo = &SeafloorCavern_Room1_LandMonsInfo, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = NULL, + }, + { + .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM2), + .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM2), + .landMonsInfo = &SeafloorCavern_Room2_LandMonsInfo, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = NULL, + }, + { + .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM3), + .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM3), + .landMonsInfo = &SeafloorCavern_Room3_LandMonsInfo, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = NULL, + }, + { + .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM4), + .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM4), + .landMonsInfo = &SeafloorCavern_Room4_LandMonsInfo, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = NULL, + }, + { + .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM5), + .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM5), + .landMonsInfo = &SeafloorCavern_Room5_LandMonsInfo, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = NULL, + }, + { + .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM6), + .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM6), + .landMonsInfo = &SeafloorCavern_Room6_LandMonsInfo, + .waterMonsInfo = &SeafloorCavern_Room6_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &SeafloorCavern_Room6_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM7), + .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM7), + .landMonsInfo = &SeafloorCavern_Room7_LandMonsInfo, + .waterMonsInfo = &SeafloorCavern_Room7_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &SeafloorCavern_Room7_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(SEAFLOOR_CAVERN_ROOM8), + .mapNum = MAP_NUM(SEAFLOOR_CAVERN_ROOM8), + .landMonsInfo = &SeafloorCavern_Room8_LandMonsInfo, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = NULL, + }, + { + .mapGroup = MAP_GROUP(CAVE_OF_ORIGIN_ENTRANCE), + .mapNum = MAP_NUM(CAVE_OF_ORIGIN_ENTRANCE), + .landMonsInfo = &CaveOfOrigin_Entrance_LandMonsInfo, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = NULL, + }, + { + .mapGroup = MAP_GROUP(CAVE_OF_ORIGIN_1F), + .mapNum = MAP_NUM(CAVE_OF_ORIGIN_1F), + .landMonsInfo = &CaveOfOrigin_1F_LandMonsInfo, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = NULL, + }, + { + .mapGroup = MAP_GROUP(CAVE_OF_ORIGIN_B1F), + .mapNum = MAP_NUM(CAVE_OF_ORIGIN_B1F), + .landMonsInfo = &CaveOfOrigin_B1F_LandMonsInfo, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = NULL, + }, + { + .mapGroup = MAP_GROUP(CAVE_OF_ORIGIN_B2F), + .mapNum = MAP_NUM(CAVE_OF_ORIGIN_B2F), + .landMonsInfo = &CaveOfOrigin_B2F_LandMonsInfo, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = NULL, + }, + { + .mapGroup = MAP_GROUP(CAVE_OF_ORIGIN_B3F), + .mapNum = MAP_NUM(CAVE_OF_ORIGIN_B3F), + .landMonsInfo = &CaveOfOrigin_B3F_LandMonsInfo, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = NULL, + }, + { + .mapGroup = MAP_GROUP(VICTORY_ROAD_1F), + .mapNum = MAP_NUM(VICTORY_ROAD_1F), + .landMonsInfo = &VictoryRoad_1F_LandMonsInfo, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = NULL, + }, + { + .mapGroup = MAP_GROUP(VICTORY_ROAD_B1F), + .mapNum = MAP_NUM(VICTORY_ROAD_B1F), + .landMonsInfo = &VictoryRoad_B1F_LandMonsInfo, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = &VictoryRoad_B1F_RockSmashMonsInfo, + .fishingMonsInfo = NULL, + }, + { + .mapGroup = MAP_GROUP(VICTORY_ROAD_B2F), + .mapNum = MAP_NUM(VICTORY_ROAD_B2F), + .landMonsInfo = &VictoryRoad_B2F_LandMonsInfo, + .waterMonsInfo = &VictoryRoad_B2F_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &VictoryRoad_B2F_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM), + .mapNum = MAP_NUM(SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM), + .landMonsInfo = &ShoalCave_LowTideEntranceRoom_LandMonsInfo, + .waterMonsInfo = &ShoalCave_LowTideEntranceRoom_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &ShoalCave_LowTideEntranceRoom_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(SHOAL_CAVE_LOW_TIDE_INNER_ROOM), + .mapNum = MAP_NUM(SHOAL_CAVE_LOW_TIDE_INNER_ROOM), + .landMonsInfo = &ShoalCave_LowTideInnerRoom_LandMonsInfo, + .waterMonsInfo = &ShoalCave_LowTideInnerRoom_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &ShoalCave_LowTideInnerRoom_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM), + .mapNum = MAP_NUM(SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM), + .landMonsInfo = &ShoalCave_LowTideStairsRoom_LandMonsInfo, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = NULL, + }, + { + .mapGroup = MAP_GROUP(SHOAL_CAVE_LOW_TIDE_LOWER_ROOM), + .mapNum = MAP_NUM(SHOAL_CAVE_LOW_TIDE_LOWER_ROOM), + .landMonsInfo = &ShoalCave_LowTideLowerRoom_LandMonsInfo, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = NULL, + }, + { + .mapGroup = MAP_GROUP(SHOAL_CAVE_LOW_TIDE_ICE_ROOM), + .mapNum = MAP_NUM(SHOAL_CAVE_LOW_TIDE_ICE_ROOM), + .landMonsInfo = &ShoalCave_LowTideIceRoom_LandMonsInfo, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = NULL, + }, + { + .mapGroup = MAP_GROUP(NEW_MAUVILLE_ENTRANCE), + .mapNum = MAP_NUM(NEW_MAUVILLE_ENTRANCE), + .landMonsInfo = &NewMauville_Entrance_LandMonsInfo, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = NULL, + }, + { + .mapGroup = MAP_GROUP(NEW_MAUVILLE_INSIDE), + .mapNum = MAP_NUM(NEW_MAUVILLE_INSIDE), + .landMonsInfo = &NewMauville_Inside_LandMonsInfo, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = NULL, + }, + { + .mapGroup = MAP_GROUP(ABANDONED_SHIP_ROOMS_B1F), + .mapNum = MAP_NUM(ABANDONED_SHIP_ROOMS_B1F), + .landMonsInfo = NULL, + .waterMonsInfo = &AbandonedShip_Rooms_B1F_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &AbandonedShip_Rooms_B1F_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS), + .mapNum = MAP_NUM(ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS), + .landMonsInfo = NULL, + .waterMonsInfo = &AbandonedShip_HiddenFloorCorridors_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &AbandonedShip_HiddenFloorCorridors_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(SKY_PILLAR_1F), + .mapNum = MAP_NUM(SKY_PILLAR_1F), + .landMonsInfo = &SkyPillar_1F_LandMonsInfo, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = NULL, + }, + { + .mapGroup = MAP_GROUP(SKY_PILLAR_3F), + .mapNum = MAP_NUM(SKY_PILLAR_3F), + .landMonsInfo = &SkyPillar_3F_LandMonsInfo, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = NULL, + }, + { + .mapGroup = MAP_GROUP(SKY_PILLAR_5F), + .mapNum = MAP_NUM(SKY_PILLAR_5F), + .landMonsInfo = &SkyPillar_5F_LandMonsInfo, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = NULL, + }, + { + .mapGroup = MAP_GROUP(ROUTE101), + .mapNum = MAP_NUM(ROUTE101), + .landMonsInfo = &Route101_LandMonsInfo, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = NULL, + }, + { + .mapGroup = MAP_GROUP(ROUTE102), + .mapNum = MAP_NUM(ROUTE102), + .landMonsInfo = &Route102_LandMonsInfo, + .waterMonsInfo = &Route102_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &Route102_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(ROUTE103), + .mapNum = MAP_NUM(ROUTE103), + .landMonsInfo = &Route103_LandMonsInfo, + .waterMonsInfo = &Route103_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &Route103_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(ROUTE104), + .mapNum = MAP_NUM(ROUTE104), + .landMonsInfo = &Route104_LandMonsInfo, + .waterMonsInfo = &Route104_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &Route104_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(ROUTE105), + .mapNum = MAP_NUM(ROUTE105), + .landMonsInfo = NULL, + .waterMonsInfo = &Route105_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &Route105_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(ROUTE106), + .mapNum = MAP_NUM(ROUTE106), + .landMonsInfo = NULL, + .waterMonsInfo = &Route106_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &Route106_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(ROUTE107), + .mapNum = MAP_NUM(ROUTE107), + .landMonsInfo = NULL, + .waterMonsInfo = &Route107_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &Route107_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(ROUTE108), + .mapNum = MAP_NUM(ROUTE108), + .landMonsInfo = NULL, + .waterMonsInfo = &Route108_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &Route108_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(ROUTE109), + .mapNum = MAP_NUM(ROUTE109), + .landMonsInfo = NULL, + .waterMonsInfo = &Route109_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &Route109_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(ROUTE110), + .mapNum = MAP_NUM(ROUTE110), + .landMonsInfo = &Route110_LandMonsInfo, + .waterMonsInfo = &Route110_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &Route110_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(ROUTE111), + .mapNum = MAP_NUM(ROUTE111), + .landMonsInfo = &Route111_LandMonsInfo, + .waterMonsInfo = &Route111_WaterMonsInfo, + .rockSmashMonsInfo = &Route111_RockSmashMonsInfo, + .fishingMonsInfo = &Route111_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(ROUTE112), + .mapNum = MAP_NUM(ROUTE112), + .landMonsInfo = &Route112_LandMonsInfo, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = NULL, + }, + { + .mapGroup = MAP_GROUP(ROUTE113), + .mapNum = MAP_NUM(ROUTE113), + .landMonsInfo = &Route113_LandMonsInfo, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = NULL, + }, + { + .mapGroup = MAP_GROUP(ROUTE114), + .mapNum = MAP_NUM(ROUTE114), + .landMonsInfo = &Route114_LandMonsInfo, + .waterMonsInfo = &Route114_WaterMonsInfo, + .rockSmashMonsInfo = &Route114_RockSmashMonsInfo, + .fishingMonsInfo = &Route114_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(ROUTE115), + .mapNum = MAP_NUM(ROUTE115), + .landMonsInfo = &Route115_LandMonsInfo, + .waterMonsInfo = &Route115_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &Route115_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(ROUTE116), + .mapNum = MAP_NUM(ROUTE116), + .landMonsInfo = &Route116_LandMonsInfo, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = NULL, + }, + { + .mapGroup = MAP_GROUP(ROUTE117), + .mapNum = MAP_NUM(ROUTE117), + .landMonsInfo = &Route117_LandMonsInfo, + .waterMonsInfo = &Route117_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &Route117_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(ROUTE118), + .mapNum = MAP_NUM(ROUTE118), + .landMonsInfo = &Route118_LandMonsInfo, + .waterMonsInfo = &Route118_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &Route118_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(ROUTE119), + .mapNum = MAP_NUM(ROUTE119), + .landMonsInfo = &Route119_LandMonsInfo, + .waterMonsInfo = &Route119_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &Route119_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(ROUTE120), + .mapNum = MAP_NUM(ROUTE120), + .landMonsInfo = &Route120_LandMonsInfo, + .waterMonsInfo = &Route120_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &Route120_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(ROUTE121), + .mapNum = MAP_NUM(ROUTE121), + .landMonsInfo = &Route121_LandMonsInfo, + .waterMonsInfo = &Route121_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &Route121_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(ROUTE122), + .mapNum = MAP_NUM(ROUTE122), + .landMonsInfo = NULL, + .waterMonsInfo = &Route122_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &Route122_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(ROUTE123), + .mapNum = MAP_NUM(ROUTE123), + .landMonsInfo = &Route123_LandMonsInfo, + .waterMonsInfo = &Route123_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &Route123_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(ROUTE124), + .mapNum = MAP_NUM(ROUTE124), + .landMonsInfo = NULL, + .waterMonsInfo = &Route124_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &Route124_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(ROUTE125), + .mapNum = MAP_NUM(ROUTE125), + .landMonsInfo = NULL, + .waterMonsInfo = &Route125_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &Route125_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(ROUTE126), + .mapNum = MAP_NUM(ROUTE126), + .landMonsInfo = NULL, + .waterMonsInfo = &Route126_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &Route126_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(ROUTE127), + .mapNum = MAP_NUM(ROUTE127), + .landMonsInfo = NULL, + .waterMonsInfo = &Route127_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &Route127_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(ROUTE128), + .mapNum = MAP_NUM(ROUTE128), + .landMonsInfo = NULL, + .waterMonsInfo = &Route128_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &Route128_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(ROUTE129), + .mapNum = MAP_NUM(ROUTE129), + .landMonsInfo = NULL, + .waterMonsInfo = &Route129_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &Route129_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(ROUTE130), + .mapNum = MAP_NUM(ROUTE130), + .landMonsInfo = &Route130_LandMonsInfo, + .waterMonsInfo = &Route130_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &Route130_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(ROUTE131), + .mapNum = MAP_NUM(ROUTE131), + .landMonsInfo = NULL, + .waterMonsInfo = &Route131_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &Route131_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(ROUTE132), + .mapNum = MAP_NUM(ROUTE132), + .landMonsInfo = NULL, + .waterMonsInfo = &Route132_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &Route132_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(ROUTE133), + .mapNum = MAP_NUM(ROUTE133), + .landMonsInfo = NULL, + .waterMonsInfo = &Route133_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &Route133_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(ROUTE134), + .mapNum = MAP_NUM(ROUTE134), + .landMonsInfo = NULL, + .waterMonsInfo = &Route134_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &Route134_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(SAFARI_ZONE_NORTHWEST), + .mapNum = MAP_NUM(SAFARI_ZONE_NORTHWEST), + .landMonsInfo = &SafariZone_Northwest_LandMonsInfo, + .waterMonsInfo = &SafariZone_Northwest_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &SafariZone_Northwest_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(SAFARI_ZONE_NORTHEAST), + .mapNum = MAP_NUM(SAFARI_ZONE_NORTHEAST), + .landMonsInfo = &SafariZone_Northeast_LandMonsInfo, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = &SafariZone_Northeast_RockSmashMonsInfo, + .fishingMonsInfo = NULL, + }, + { + .mapGroup = MAP_GROUP(SAFARI_ZONE_SOUTHWEST), + .mapNum = MAP_NUM(SAFARI_ZONE_SOUTHWEST), + .landMonsInfo = &SafariZone_Southwest_LandMonsInfo, + .waterMonsInfo = &SafariZone_Southwest_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &SafariZone_Southwest_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(SAFARI_ZONE_SOUTHEAST), + .mapNum = MAP_NUM(SAFARI_ZONE_SOUTHEAST), + .landMonsInfo = &SafariZone_Southeast_LandMonsInfo, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = NULL, + }, + { + .mapGroup = MAP_GROUP(DEWFORD_TOWN), + .mapNum = MAP_NUM(DEWFORD_TOWN), + .landMonsInfo = NULL, + .waterMonsInfo = &DewfordTown_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &DewfordTown_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(PACIFIDLOG_TOWN), + .mapNum = MAP_NUM(PACIFIDLOG_TOWN), + .landMonsInfo = NULL, + .waterMonsInfo = &PacifidlogTown_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = &PacifidlogTown_FishingMonsInfo, + }, + { + .mapGroup = MAP_GROUP(UNDERWATER1), + .mapNum = MAP_NUM(UNDERWATER1), + .landMonsInfo = NULL, + .waterMonsInfo = &Underwater1_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = NULL, + }, + { + .mapGroup = MAP_GROUP(UNDERWATER2), + .mapNum = MAP_NUM(UNDERWATER2), + .landMonsInfo = NULL, + .waterMonsInfo = &Underwater2_WaterMonsInfo, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = NULL, + }, + { + .mapGroup = MAP_GROUP(UNDEFINED), + .mapNum = MAP_NUM(UNDEFINED), + .landMonsInfo = NULL, + .waterMonsInfo = NULL, + .rockSmashMonsInfo = NULL, + .fishingMonsInfo = NULL, + }, +}; + +const struct WildPokemon gWildFeebasRoute119Data = {20, 25, SPECIES_FEEBAS}; + +const u16 gRoute119WaterTileData[] = +{ + 0, 0x2D, 0, + 0x2E, 0x5B, 0x83, + 0x5C, 0x8B, 0x12A, +}; -extern u16 gRoute119WaterTileData[]; extern u16 gScriptResult; -extern struct WildPokemon gWildFeebasRoute119Data; extern u8 S_RepelWoreOff[]; EWRAM_DATA static u8 sWildEncountersDisabled = 0; @@ -2967,7 +3761,7 @@ static bool8 CheckFeebas(void) route119section = 2; #else { - register u16 *arr asm("r0"); + register const u16 *arr asm("r0"); if (y >= (arr = gRoute119WaterTileData)[3 * 1 + 0] && y <= arr[3 * 1 + 1]) route119section = 1; if (y >= arr[3 * 2 + 0] && y <= arr[3 * 2 + 1]) @@ -3177,7 +3971,7 @@ static void CreateWildMon(u16 species, u8 b) CreateMonWithNature(&gEnemyParty[0], species, b, 0x20, PickWildMonNature()); } -static bool8 GenerateWildMon(struct WildPokemonInfo *wildMonInfo, u8 area, bool8 checkRepel) +static bool8 GenerateWildMon(const struct WildPokemonInfo *wildMonInfo, u8 area, bool8 checkRepel) { u8 wildMonIndex = 0; u8 level; @@ -3204,7 +3998,7 @@ static bool8 GenerateWildMon(struct WildPokemonInfo *wildMonInfo, u8 area, bool8 } } -static u16 GenerateFishingWildMon(struct WildPokemonInfo *wildMonInfo, u8 rod) +static u16 GenerateFishingWildMon(const struct WildPokemonInfo *wildMonInfo, u8 rod) { u8 wildMonIndex = ChooseWildMonIndex_Fishing(rod); u8 level = ChooseWildMonLevel(&wildMonInfo->wildPokemon[wildMonIndex]); @@ -3369,7 +4163,7 @@ void ScrSpecial_RockSmashWildEncounter(void) if (headerNum != 0xFFFF) { - struct WildPokemonInfo *wildPokemonInfo = gWildMonHeaders[headerNum].rockSmashMonsInfo; + const struct WildPokemonInfo *wildPokemonInfo = gWildMonHeaders[headerNum].rockSmashMonsInfo; if (wildPokemonInfo == NULL) { @@ -3393,7 +4187,7 @@ bool8 SweetScentWildEncounter(void) s16 x; s16 y; u16 headerNum; - struct WildPokemonInfo *wildPokemonInfo; + const struct WildPokemonInfo *wildPokemonInfo; PlayerGetDestCoords(&x, &y); if ((headerNum = GetCurrentMapWildMonHeader()) != 0xFFFF) @@ -3468,8 +4262,8 @@ void FishingWildEncounter(u8 rod) u16 GetLocalWildMon(bool8 *isWaterMon) { u16 headerNum; - struct WildPokemonInfo *landMonsInfo; - struct WildPokemonInfo *waterMonsInfo; + const struct WildPokemonInfo *landMonsInfo; + const struct WildPokemonInfo *waterMonsInfo; *isWaterMon = FALSE; headerNum = GetCurrentMapWildMonHeader(); @@ -3505,7 +4299,7 @@ u16 GetLocalWaterMon(void) if (headerNum != 0xFFFF) { - struct WildPokemonInfo *waterMonsInfo = gWildMonHeaders[headerNum].waterMonsInfo; + const struct WildPokemonInfo *waterMonsInfo = gWildMonHeaders[headerNum].waterMonsInfo; if (waterMonsInfo) return waterMonsInfo->wildPokemon[ChooseWildMonIndex_Water()].species; -- cgit v1.2.3 From 8215d028078128c6b28119fe2420229cb1828e6b Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Mon, 27 Nov 2017 23:09:02 -0600 Subject: fldeff_cut.c data --- src/field/field_map_obj.c | 2 +- src/field/fldeff_cut.c | 53 +++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 50 insertions(+), 5 deletions(-) (limited to 'src/field') diff --git a/src/field/field_map_obj.c b/src/field/field_map_obj.c index 0e6794ed7..81c0c5854 100644 --- a/src/field/field_map_obj.c +++ b/src/field/field_map_obj.c @@ -1354,7 +1354,7 @@ const u32 gFieldEffectPic_ShadowMedium[] = INCBIN_U32("graphics/field_effect_obj const u32 gFieldEffectPic_ShadowLarge[] = INCBIN_U32("graphics/field_effect_objects/pics/shadow_large.4bpp"); const u32 gFieldEffectPic_ShadowExtraLarge[] = INCBIN_U32("graphics/field_effect_objects/pics/shadow_extra_large.4bpp"); const u32 filler_8368A08[0x48] = {}; -const u32 gFieldEffectPic_CutGrass[] = INCBIN_U32("graphics/field_effect_objects/pics/cut_grass.4bpp"); +const u8 gFieldEffectPic_CutGrass[] = INCBIN_U8("graphics/field_effect_objects/pics/cut_grass.4bpp"); const u32 FieldEffectPic_CutGrass_Copy[] = INCBIN_U32("graphics/field_effect_objects/pics/cut_grass.4bpp"); const u16 gFieldEffectObjectPalette6[] = INCBIN_U16("graphics/field_effect_objects/palettes/06.gbapal"); const u32 gFieldEffectPic_Ripple_0[] = INCBIN_U32("graphics/field_effect_objects/pics/ripple/0.4bpp"); diff --git a/src/field/fldeff_cut.c b/src/field/fldeff_cut.c index edf38d800..e4328acfc 100644 --- a/src/field/fldeff_cut.c +++ b/src/field/fldeff_cut.c @@ -2,6 +2,7 @@ #include "fldeff_cut.h" #include "field_camera.h" #include "field_effect.h" +#include "field_map_obj.h" #include "field_player_avatar.h" #include "fieldmap.h" #include "map_obj_lock.h" @@ -20,12 +21,56 @@ extern void (*gFieldCallback)(void); extern void (*gUnknown_03005CE4)(void); +extern u8 gLastFieldPokeMenuOpened; -extern struct SpriteTemplate gSpriteTemplate_CutGrass; +extern const u8 S_UseCut[]; -extern u8 gLastFieldPokeMenuOpened; +const struct OamData gOamData_CutGrass = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 1, + .priority = 1, + .paletteNum = 1, + .affineParam = 0, +}; -extern u8 S_UseCut[]; +const union AnimCmd gSpriteAnim_CutGrass[] = +{ + ANIMCMD_FRAME(0, 30), + ANIMCMD_JUMP(0), +}; + +const union AnimCmd *const gSpriteAnimTable_CutGrass[] = +{ + gSpriteAnim_CutGrass, +}; + +const struct SpriteFrameImage gSpriteImageTable_CutGrass[] = +{ + {gFieldEffectPic_CutGrass, 0x20}, +}; + +const struct SpritePalette gFieldEffectObjectPaletteInfo6 = {gFieldEffectObjectPalette6, 0x1000}; + +static void sub_80A2A48(struct Sprite *); +static const struct SpriteTemplate gSpriteTemplate_CutGrass = +{ + .tileTag = 0xFFFF, + .paletteTag = 0x1000, + .oam = &gOamData_CutGrass, + .anims = gSpriteAnimTable_CutGrass, + .images = gSpriteImageTable_CutGrass, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80A2A48, +}; bool8 SetUpFieldMove_Cut(void) { @@ -238,7 +283,7 @@ void sub_80A28F4(s16 x, s16 y) } } -void sub_80A2A48(struct Sprite *sprite) +static void sub_80A2A48(struct Sprite *sprite) { sprite->data[0] = 8; sprite->data[1] = 0; -- cgit v1.2.3 From 356c1f87c3a787013123b2f36ddcaa3fae1db8d8 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Mon, 27 Nov 2017 23:39:25 -0600 Subject: convert fldeff data to C --- src/field/fldeff_decoration.c | 63 +++++++++++++- src/field/fldeff_secretpower.c | 186 ++++++++++++++++++++++++++++++++++++++++- 2 files changed, 242 insertions(+), 7 deletions(-) (limited to 'src/field') diff --git a/src/field/fldeff_decoration.c b/src/field/fldeff_decoration.c index d58f53a3c..7c8ff44db 100644 --- a/src/field/fldeff_decoration.c +++ b/src/field/fldeff_decoration.c @@ -13,14 +13,69 @@ #include "task.h" #include "text.h" -extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[36]; -extern const struct SpriteTemplate gSpriteTemplate_83D26A0; +extern const u8 gSpriteImage_83D21EC[]; +extern const u8 gSpriteImage_83D22EC[]; +extern const u8 gSpriteImage_83D23EC[]; +extern const u16 gTilesetPalettes_SecretBase[][16]; + +const struct OamData gOamData_83D266C = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 2, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const union AnimCmd gSpriteAnim_83D2674[] = +{ + ANIMCMD_FRAME(0, 6), + ANIMCMD_FRAME(1, 6), + ANIMCMD_FRAME(2, 6), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_83D2684[] = +{ + gSpriteAnim_83D2674, +}; + +const struct SpriteFrameImage gSpriteImageTable_83D2688[] = +{ + {gSpriteImage_83D21EC, 0x100}, + {gSpriteImage_83D22EC, 0x100}, + {gSpriteImage_83D23EC, 0x100}, +}; -static void sub_80C68EC(u8); -static void DoBalloonSoundEffect(s16); void SpriteCB_SandPillar_0(struct Sprite *); void SpriteCB_SandPillar_1(struct Sprite *); void SpriteCB_SandPillar_2(struct Sprite *); +const struct SpriteTemplate gSpriteTemplate_83D26A0 = +{ + .tileTag = 0xFFFF, + .paletteTag = 4110, + .oam = &gOamData_83D266C, + .anims = gSpriteAnimTable_83D2684, + .images = gSpriteImageTable_83D2688, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_SandPillar_0, +}; + +// This uses one of the secret base palettes, so there is no "09.pal" file. +const struct SpritePalette gFieldEffectObjectPaletteInfo9 = {gTilesetPalettes_SecretBase[5], 0x100E}; + +extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[36]; + +static void sub_80C68EC(u8); +static void DoBalloonSoundEffect(s16); void sub_80C68A4(s16 metatileId, s16 x, s16 y) { diff --git a/src/field/fldeff_secretpower.c b/src/field/fldeff_secretpower.c index cd9a2ae36..9bcfaa8c4 100644 --- a/src/field/fldeff_secretpower.c +++ b/src/field/fldeff_secretpower.c @@ -17,9 +17,189 @@ extern u8 gUnknown_081A2CE6[]; extern u8 gUnknown_081A2D3E[]; extern u8 gUnknown_081A2D96[]; -extern struct SpriteTemplate gSpriteTemplate_83D2614; -extern struct SpriteTemplate gSpriteTemplate_83D262C; -extern struct SpriteTemplate gSpriteTemplate_83D2644; +const u8 gSpriteImage_83D198C[] = INCBIN_U8("graphics/unknown_sprites/83D259C/0.4bpp"); +const u8 gSpriteImage_83D1A0C[] = INCBIN_U8("graphics/unknown_sprites/83D259C/1.4bpp"); +const u8 gSpriteImage_83D1A8C[] = INCBIN_U8("graphics/unknown_sprites/83D259C/2.4bpp"); +const u8 gSpriteImage_83D1B0C[] = INCBIN_U8("graphics/unknown_sprites/83D259C/3.4bpp"); +const u8 gSpriteImage_83D1B8C[] = INCBIN_U8("graphics/unknown_sprites/83D259C/4.4bpp"); +const u8 gUnusedEmptySpace_83D1C0C[32] = {0}; +const u16 gFieldEffectObjectPalette7[] = INCBIN_U16("graphics/field_effect_objects/palettes/07.gbapal"); +const u8 gSpriteImage_83D1C4C[] = INCBIN_U8("graphics/unknown_sprites/83D25EC/0.4bpp"); +const u8 gSpriteImage_83D1CCC[] = INCBIN_U8("graphics/unknown_sprites/83D25EC/1.4bpp"); +const u8 gSpriteImage_83D1D4C[] = INCBIN_U8("graphics/unknown_sprites/83D25EC/2.4bpp"); +const u8 gSpriteImage_83D1DCC[] = INCBIN_U8("graphics/unknown_sprites/83D25EC/3.4bpp"); +const u8 gSpriteImage_83D1E4C[] = INCBIN_U8("graphics/unknown_sprites/83D25EC/4.4bpp"); +const u8 gSpriteImage_83D1ECC[] = INCBIN_U8("graphics/unknown_sprites/83D25C4/0.4bpp"); +const u8 gSpriteImage_83D1F4C[] = INCBIN_U8("graphics/unknown_sprites/83D25C4/1.4bpp"); +const u8 gSpriteImage_83D1FCC[] = INCBIN_U8("graphics/unknown_sprites/83D25C4/2.4bpp"); +const u8 gSpriteImage_83D204C[] = INCBIN_U8("graphics/unknown_sprites/83D25C4/3.4bpp"); +const u8 gSpriteImage_83D20CC[] = INCBIN_U8("graphics/unknown_sprites/83D25C4/4.4bpp"); +const u8 gSpriteImage_83D214C[] = INCBIN_U8("graphics/unknown_sprites/83D25C4/5.4bpp"); // unused +const u16 gFieldEffectObjectPalette8[] = INCBIN_U16("graphics/field_effect_objects/palettes/08.gbapal"); +const u8 gSpriteImage_83D21EC[] = INCBIN_U8("graphics/unknown_sprites/83D2688/0.4bpp"); +const u8 gSpriteImage_83D22EC[] = INCBIN_U8("graphics/unknown_sprites/83D2688/1.4bpp"); +const u8 gSpriteImage_83D23EC[] = INCBIN_U8("graphics/unknown_sprites/83D2688/2.4bpp"); + +const struct OamData gOamData_83D24EC = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 1, + .tileNum = 0, + .priority = 2, + .paletteNum = 0, + .affineParam = 0, +}; + +const union AnimCmd gSpriteAnim_83D24F4[] = +{ + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(2, 8), + ANIMCMD_FRAME(3, 8), + ANIMCMD_FRAME(4, 8), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83D250C[] = +{ + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(2, 8), + ANIMCMD_FRAME(3, 8), + ANIMCMD_FRAME(4, 8), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83D2524[] = +{ + ANIMCMD_FRAME(4, 8), + ANIMCMD_FRAME(3, 8), + ANIMCMD_FRAME(2, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(0, 8), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83D253C[] = +{ + ANIMCMD_FRAME(0, 8, .hFlip = TRUE), + ANIMCMD_FRAME(1, 8, .hFlip = TRUE), + ANIMCMD_FRAME(2, 8, .hFlip = TRUE), + ANIMCMD_FRAME(3, 8, .hFlip = TRUE), + ANIMCMD_FRAME(4, 8, .hFlip = TRUE), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83D2554[] = +{ + ANIMCMD_FRAME(4, 8, .hFlip = TRUE), + ANIMCMD_FRAME(3, 8, .hFlip = TRUE), + ANIMCMD_FRAME(2, 8, .hFlip = TRUE), + ANIMCMD_FRAME(1, 8, .hFlip = TRUE), + ANIMCMD_FRAME(0, 8, .hFlip = TRUE), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_83D256C[] = +{ + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(1, 8), + ANIMCMD_FRAME(2, 8), + ANIMCMD_FRAME(3, 8), + ANIMCMD_FRAME(4, 8), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_83D2584[] = +{ + gSpriteAnim_83D24F4, +}; + +const union AnimCmd *const gSpriteAnimTable_83D2588[] = +{ + gSpriteAnim_83D250C, + gSpriteAnim_83D2524, + gSpriteAnim_83D253C, + gSpriteAnim_83D2554, +}; + +const union AnimCmd *const gSpriteAnimTable_83D2598[] = +{ + gSpriteAnim_83D256C, +}; + +const struct SpriteFrameImage gSpriteImageTable_83D259C[] = +{ + {gSpriteImage_83D198C, 0x80}, + {gSpriteImage_83D1A0C, 0x80}, + {gSpriteImage_83D1A8C, 0x80}, + {gSpriteImage_83D1B0C, 0x80}, + {gSpriteImage_83D1B8C, 0x80}, +}; + +const struct SpriteFrameImage gSpriteImageTable_83D25C4[] = +{ + {gSpriteImage_83D1ECC, 0x80}, + {gSpriteImage_83D1F4C, 0x80}, + {gSpriteImage_83D1FCC, 0x80}, + {gSpriteImage_83D204C, 0x80}, + {gSpriteImage_83D20CC, 0x80}, +}; + +const struct SpriteFrameImage gSpriteImageTable_83D25EC[] = +{ + {gSpriteImage_83D1C4C, 0x80}, + {gSpriteImage_83D1CCC, 0x80}, + {gSpriteImage_83D1D4C, 0x80}, + {gSpriteImage_83D1DCC, 0x80}, + {gSpriteImage_83D1E4C, 0x80}, +}; + +void sub_80C644C(struct Sprite *); +const struct SpriteTemplate gSpriteTemplate_83D2614 = +{ + .tileTag = 0xFFFF, + .paletteTag = 4099, + .oam = &gOamData_83D24EC, + .anims = gSpriteAnimTable_83D2584, + .images = gSpriteImageTable_83D259C, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80C644C, +}; + +void sub_80C6598(struct Sprite *); +const struct SpriteTemplate gSpriteTemplate_83D262C = +{ + .tileTag = 0xFFFF, + .paletteTag = 4104, + .oam = &gOamData_83D24EC, + .anims = gSpriteAnimTable_83D2588, + .images = gSpriteImageTable_83D25C4, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80C6598, +}; + +void sub_80C66BC(struct Sprite *); +const struct SpriteTemplate gSpriteTemplate_83D2644 = +{ + .tileTag = 0xFFFF, + .paletteTag = 4104, + .oam = &gOamData_83D24EC, + .anims = gSpriteAnimTable_83D2598, + .images = gSpriteImageTable_83D25EC, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_80C66BC, +}; + +const struct SpritePalette gFieldEffectObjectPaletteInfo7 = {gFieldEffectObjectPalette7, 0x1003}; +const struct SpritePalette gFieldEffectObjectPaletteInfo8 = {gFieldEffectObjectPalette8, 0x1008}; void sub_80C639C(void); void sub_80C63E8(void); -- cgit v1.2.3 From b14cdde8bd4afda2b0b73bb72b3cffc6961a5790 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Fri, 15 Dec 2017 14:59:25 -0800 Subject: Label landmark and daily flags. --- src/field/decoration.c | 6 +++--- src/field/event_data.c | 6 +++--- src/field/field_specials.c | 8 ++++---- src/field/landmark.c | 46 +++++++++++++++++++++++----------------------- src/field/region_map.c | 6 +++--- src/field/secret_base.c | 8 ++++---- src/field/tv.c | 2 +- 7 files changed, 41 insertions(+), 41 deletions(-) (limited to 'src/field') diff --git a/src/field/decoration.c b/src/field/decoration.c index c7647f98d..c36c10a08 100644 --- a/src/field/decoration.c +++ b/src/field/decoration.c @@ -2322,12 +2322,12 @@ void sub_80FF474(void) u8 j; for (i=0; i<14; i++) { - if (FlagGet(i + 0xae) == 1) + if (FlagGet(i + FLAG_DECORATION_2) == 1) { - FlagClear(i + 0xae); + FlagClear(i + FLAG_DECORATION_2); for (j=0; jmapObjectCount; j++) { - if (gMapHeader.events->mapObjects[j].flagId == i + 0xae) + if (gMapHeader.events->mapObjects[j].flagId == i + FLAG_DECORATION_2) { break; } diff --git a/src/field/event_data.c b/src/field/event_data.c index 43d49c417..5c8b7d7e5 100644 --- a/src/field/event_data.c +++ b/src/field/event_data.c @@ -3,7 +3,7 @@ #include "pokedex.h" #define TEMP_FLAGS_SIZE 0x4 -#define TEMP_UPPER_FLAGS_SIZE 0x8 +#define DAILY_FLAGS_SIZE 0x8 #define TEMP_VARS_SIZE 0x20 EWRAM_DATA u16 gSpecialVar_0x8000 = 0; @@ -43,9 +43,9 @@ void ClearTempFieldEventData(void) } // probably had different flag splits at one point. -void ClearUpperFlags(void) +void ClearDailyFlags(void) { - memset(gSaveBlock1.flags + 0x118, 0, TEMP_UPPER_FLAGS_SIZE); + memset(gSaveBlock1.flags + (DAILY_FLAGS_START / 8), 0, DAILY_FLAGS_SIZE); } void DisableNationalPokedex(void) diff --git a/src/field/field_specials.c b/src/field/field_specials.c index d654d10f5..9a286dd6e 100644 --- a/src/field/field_specials.c +++ b/src/field/field_specials.c @@ -1881,14 +1881,14 @@ bool8 ScrSpecial_AreLeadMonEVsMaxedOut(void) u8 sub_810F5BC(void) { - if (!FlagGet(0xc7) && gSaveBlock1.location.mapGroup == MAP_GROUP(RUSTURF_TUNNEL) && gSaveBlock1.location.mapNum == MAP_NUM(RUSTURF_TUNNEL)) + if (!FlagGet(FLAG_RUSTURF_TUNNEL_OPENED) && gSaveBlock1.location.mapGroup == MAP_GROUP(RUSTURF_TUNNEL) && gSaveBlock1.location.mapNum == MAP_NUM(RUSTURF_TUNNEL)) { - if (FlagGet(0x3a3)) + if (FlagGet(FLAG_HIDE_RUSTURF_TUNNEL_ROCK_1)) { VarSet(VAR_0x409a, 4); return TRUE; } - else if (FlagGet(0x3a4)) + else if (FlagGet(FLAG_HIDE_RUSTURF_TUNNEL_ROCK_2)) { VarSet(VAR_0x409a, 5); return TRUE; @@ -2002,7 +2002,7 @@ static void sub_810F814(u8 taskId) bool8 sub_810F828(void) { - return FlagGet(0x2b8); + return FlagGet(FLAG_UNKNOWN_2B8); } void SetRoute119Weather(void) diff --git a/src/field/landmark.c b/src/field/landmark.c index 1b7805e96..476821ec6 100644 --- a/src/field/landmark.c +++ b/src/field/landmark.c @@ -54,43 +54,43 @@ extern const u8 gLandmarkName_FossilManiacsHouse[]; extern const u8 gLandmarkName_HuntersHouse[]; extern const u8 gLandmarkName_SkyPillar[]; -static const struct Landmark Landmark_FlowerShop = {gLandmarkName_FlowerShop, 2108}; +static const struct Landmark Landmark_FlowerShop = {gLandmarkName_FlowerShop, FLAG_LANDMARK_FLOWER_SHOP}; static const struct Landmark Landmark_PetalburgWoods = {gLandmarkName_PetalburgWoods, -1}; -static const struct Landmark Landmark_MrBrineysCottage = {gLandmarkName_MrBrineysCottage, 2109}; -static const struct Landmark Landmark_AbandonedShip = {gLandmarkName_AbandonedShip, 2110}; -static const struct Landmark Landmark_SeashoreHouse = {gLandmarkName_SeashoreHouse, 2111}; +static const struct Landmark Landmark_MrBrineysCottage = {gLandmarkName_MrBrineysCottage, FLAG_LANDMARK_MR_BRINEY_HOUSE}; +static const struct Landmark Landmark_AbandonedShip = {gLandmarkName_AbandonedShip, FLAG_LANDMARK_ABANDONED_SHIP}; +static const struct Landmark Landmark_SeashoreHouse = {gLandmarkName_SeashoreHouse, FLAG_LANDMARK_SEASHORE_HOUSE}; static const struct Landmark Landmark_SlateportBeach = {gLandmarkName_SlateportBeach, -1}; static const struct Landmark Landmark_CyclingRoad = {gLandmarkName_CyclingRoad, -1}; -static const struct Landmark Landmark_NewMauville = {gLandmarkName_NewMauville, 2112}; -static const struct Landmark Landmark_TrickHouse = {gLandmarkName_TrickHouse, 2114}; -static const struct Landmark Landmark_OldLadysRestShop = {gLandmarkName_OldLadysRestShop, 2113}; +static const struct Landmark Landmark_NewMauville = {gLandmarkName_NewMauville, FLAG_LANDMARK_NEW_MAUVILLE}; +static const struct Landmark Landmark_TrickHouse = {gLandmarkName_TrickHouse, FLAG_LANDMARK_TRICK_HOUSE}; +static const struct Landmark Landmark_OldLadysRestShop = {gLandmarkName_OldLadysRestShop, FLAG_LANDMARK_OLD_LADY_REST_SHOP}; static const struct Landmark Landmark_Desert = {gLandmarkName_Desert, -1}; -static const struct Landmark Landmark_WinstrateFamily = {gLandmarkName_WinstrateFamily, 2115}; +static const struct Landmark Landmark_WinstrateFamily = {gLandmarkName_WinstrateFamily, FLAG_LANDMARK_WINSTRATE_FAMILY}; static const struct Landmark Landmark_CableCar = {gLandmarkName_CableCar, -1}; -static const struct Landmark Landmark_GlassWorkshop = {gLandmarkName_GlassWorkshop, 2116}; +static const struct Landmark Landmark_GlassWorkshop = {gLandmarkName_GlassWorkshop, FLAG_LANDMARK_GLASS_WORKSHOP}; static const struct Landmark Landmark_WeatherInstitute = {gLandmarkName_WeatherInstitute, -1}; static const struct Landmark Landmark_MeteorFalls = {gLandmarkName_MeteorFalls, -1}; -static const struct Landmark Landmark_TunnelersRestHouse = {gLandmarkName_TunnelersRestHouse, 2138}; +static const struct Landmark Landmark_TunnelersRestHouse = {gLandmarkName_TunnelersRestHouse, FLAG_LANDMARK_TUNNELERS_REST_HOUSE}; static const struct Landmark Landmark_RusturfTunnel = {gLandmarkName_RusturfTunnel, -1}; -static const struct Landmark Landmark_PokemonDayCare = {gLandmarkName_PokemonDayCare, 2118}; +static const struct Landmark Landmark_PokemonDayCare = {gLandmarkName_PokemonDayCare, FLAG_LANDMARK_POKEMON_DAYCARE}; static const struct Landmark Landmark_SafariZoneEntrance = {gLandmarkName_SafariZoneEntrance, -1}; static const struct Landmark Landmark_MtPyre = {gLandmarkName_MtPyre, -1}; static const struct Landmark Landmark_ShoalCave = {gLandmarkName_ShoalCave, -1}; -static const struct Landmark Landmark_SeafloorCavern = {gLandmarkName_SeafloorCavern, 2119}; +static const struct Landmark Landmark_SeafloorCavern = {gLandmarkName_SeafloorCavern, FLAG_LANDMARK_SEAFLOOR_CAVERN}; static const struct Landmark Landmark_GraniteCave = {gLandmarkName_GraniteCave, -1}; static const struct Landmark Landmark_OceanCurrent = {gLandmarkName_OceanCurrent, -1}; -static const struct Landmark Landmark_LanettesHouse = {gLandmarkName_LanettesHouse, 2117}; -static const struct Landmark Landmark_FieryPath = {gLandmarkName_FieryPath, 2122}; +static const struct Landmark Landmark_LanettesHouse = {gLandmarkName_LanettesHouse, FLAG_LANDMARK_LANETTES_HOUSE}; +static const struct Landmark Landmark_FieryPath = {gLandmarkName_FieryPath, FLAG_LANDMARK_FIERY_PATH}; static const struct Landmark Landmark_JaggedPass = {gLandmarkName_JaggedPass, -1}; -static const struct Landmark Landmark_BerryMastersHouse = {gLandmarkName_BerryMastersHouse, 2147}; -static const struct Landmark Landmark_IslandCave = {gLandmarkName_IslandCave, 2133}; -static const struct Landmark Landmark_DesertRuins = {gLandmarkName_DesertRuins, 2134}; -static const struct Landmark Landmark_ScorchedSlab = {gLandmarkName_ScorchedSlab, 2136}; -static const struct Landmark Landmark_AncientTomb = {gLandmarkName_AncientTomb, 2137}; -static const struct Landmark Landmark_SealedChamber = {gLandmarkName_SealedChamber, 2140}; -static const struct Landmark Landmark_FossilManiacsHouse = {gLandmarkName_FossilManiacsHouse, 2135}; -static const struct Landmark Landmark_HuntersHouse = {gLandmarkName_HuntersHouse, 2139}; -static const struct Landmark Landmark_SkyPillar = {gLandmarkName_SkyPillar, 2142}; +static const struct Landmark Landmark_BerryMastersHouse = {gLandmarkName_BerryMastersHouse, FLAG_LANDMARK_BERRY_MASTERS_HOUSE}; +static const struct Landmark Landmark_IslandCave = {gLandmarkName_IslandCave, FLAG_LANDMARK_ISLAND_CAVE}; +static const struct Landmark Landmark_DesertRuins = {gLandmarkName_DesertRuins, FLAG_LANDMARK_DESERT_RUINS}; +static const struct Landmark Landmark_ScorchedSlab = {gLandmarkName_ScorchedSlab, FLAG_LANDMARK_SCORCHED_SLAB}; +static const struct Landmark Landmark_AncientTomb = {gLandmarkName_AncientTomb, FLAG_LANDMARK_ANCIENT_TOMB}; +static const struct Landmark Landmark_SealedChamber = {gLandmarkName_SealedChamber, FLAG_LANDMARK_SEALED_CHAMBER}; +static const struct Landmark Landmark_FossilManiacsHouse = {gLandmarkName_FossilManiacsHouse, FLAG_LANDMARK_FOSSIL_MANIACS_HOUSE}; +static const struct Landmark Landmark_HuntersHouse = {gLandmarkName_HuntersHouse, FLAG_LANDMARK_HUNTERS_HOUSE}; +static const struct Landmark Landmark_SkyPillar = {gLandmarkName_SkyPillar, FLAG_LANDMARK_SKY_PILLAR}; static const struct Landmark *const Landmarks_Route104_0[] = { diff --git a/src/field/region_map.c b/src/field/region_map.c index f2e4b3251..12bf1a5f2 100644 --- a/src/field/region_map.c +++ b/src/field/region_map.c @@ -916,9 +916,9 @@ static u16 sub_80FB758(u16 mapSectionId) return FlagGet(FLAG_VISITED_EVER_GRANDE_CITY) ? 2 : 3; case MAPSEC_BATTLE_TOWER: - return FlagGet(FLAG_UNLOCK_BATTLE_TOWER) ? 4 : 0; + return FlagGet(FLAG_LANDMARK_BATTLE_TOWER) ? 4 : 0; case MAPSEC_SOUTHERN_ISLAND: - return FlagGet(FLAG_UNLOCK_SOUTHERN_ISLAND) ? 1 : 0; + return FlagGet(FLAG_LANDMARK_SOUTHERN_ISLAND) ? 1 : 0; default: return 1; } @@ -1822,7 +1822,7 @@ static void sub_80FC69C(void) sub_8053538((gSaveBlock2.playerGender == MALE) ? 12 : 13); break; case MAPSEC_EVER_GRANDE_CITY: - sub_8053538((FlagGet(0x854) && ewram0_3.regionMap.everGrandeCityArea == 0) ? 20 : 11); + sub_8053538((FlagGet(SYS_POKEMON_LEAGUE_FLY) && ewram0_3.regionMap.everGrandeCityArea == 0) ? 20 : 11); break; default: if (sUnknown_083E7920[ewram0_3.regionMap.mapSectionId][2] != 0) diff --git a/src/field/secret_base.c b/src/field/secret_base.c index fee79a18c..bb7716190 100644 --- a/src/field/secret_base.c +++ b/src/field/secret_base.c @@ -877,7 +877,7 @@ void sub_80BC56C(void) void sub_80BC5BC(void) { gSaveBlock1.secretBases[sub_80BC14C(gUnknown_020387DC)].sbr_field_1_6 ^= 1; - FlagSet(0x10C); + FlagSet(FLAG_DECORATION_16); } void SecretBasePC_Decoration(void) @@ -1244,7 +1244,7 @@ void sub_80BCE90() { u16 curBaseIndex = VarGet(VAR_0x4054); - if (!FlagGet(0x8C2)) + if (!FlagGet(FLAG_DAILY_UNKNOWN_8C2)) { u8 i; @@ -1253,7 +1253,7 @@ void sub_80BCE90() gSaveBlock1.secretBases[i].sbr_field_1_5 = 0; } - FlagSet(0x8C2); + FlagSet(FLAG_DAILY_UNKNOWN_8C2); } gSpecialVar_0x8004 = sub_80BCCA4(curBaseIndex); @@ -1650,7 +1650,7 @@ void sub_80BD610(struct SecretBaseRecord *basesA, struct SecretBaseRecord *bases void sub_80BD674(void *playerRecords, u32 size, u8 c) { - if (FlagGet(0x60)) + if (FlagGet(FLAG_RECEIVED_SECRET_POWER)) { u16 i; u8 numLinkedPlayers = GetLinkPlayerCount(); diff --git a/src/field/tv.c b/src/field/tv.c index 71d6455bd..c3141e0b5 100644 --- a/src/field/tv.c +++ b/src/field/tv.c @@ -674,7 +674,7 @@ void GabbyAndTyBeforeInterview(void) TakeTVShowInSearchOfTrainersOffTheAir(); if (gSaveBlock1.gabbyAndTyData.lastMove == 0) - FlagSet(1); + FlagSet(FLAG_TEMP_1); } void sub_80BDC14(void) -- cgit v1.2.3 From 88716f4c0e053a984eeb4bef92fefa42027dd22a Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Sun, 17 Dec 2017 20:07:53 -0800 Subject: Use FLAG_ prefix for all flags --- src/field/braille_puzzles.c | 14 +++++----- src/field/dewford_trend.c | 6 ++--- src/field/event_data.c | 26 +++++++++---------- src/field/field_control_avatar.c | 8 +++--- src/field/field_player_avatar.c | 4 +-- src/field/field_special_scene.c | 2 +- src/field/field_specials.c | 8 +++--- src/field/fldeff_flash.c | 4 +-- src/field/item_use.c | 10 +++---- src/field/overworld.c | 56 ++++++++++++++++++++-------------------- src/field/party_menu.c | 6 ++--- src/field/region_map.c | 4 +-- src/field/safari_zone.c | 6 ++--- src/field/script_menu.c | 4 +-- src/field/start_menu.c | 8 +++--- src/field/tv.c | 20 +++++++------- src/field/wild_encounter.c | 4 +-- 17 files changed, 95 insertions(+), 95 deletions(-) (limited to 'src/field') diff --git a/src/field/braille_puzzles.c b/src/field/braille_puzzles.c index e6ab316d2..0d304714d 100644 --- a/src/field/braille_puzzles.c +++ b/src/field/braille_puzzles.c @@ -24,7 +24,7 @@ extern u8 S_OpenRegiceChamber[]; // regiice event script bool8 ShouldDoBrailleDigEffect(void) { - if (!FlagGet(SYS_BRAILLE_DIG) + if (!FlagGet(FLAG_SYS_BRAILLE_DIG) && (gSaveBlock1.location.mapGroup == MAP_GROUP(SEALED_CHAMBER_OUTER_ROOM) && gSaveBlock1.location.mapNum == MAP_NUM(SEALED_CHAMBER_OUTER_ROOM))) { @@ -49,7 +49,7 @@ void DoBrailleDigEffect(void) MapGridSetMetatileIdAt(18, 9, 3636); DrawWholeMapView(); PlaySE(SE_BAN); - FlagSet(SYS_BRAILLE_DIG); + FlagSet(FLAG_SYS_BRAILLE_DIG); ScriptContext2_Disable(); } @@ -68,7 +68,7 @@ bool8 CheckRelicanthWailord(void) bool8 ShouldDoBrailleStrengthEffect(void) { - if (!FlagGet(SYS_BRAILLE_STRENGTH) && (gSaveBlock1.location.mapGroup == MAP_GROUP(DESERT_RUINS) && gSaveBlock1.location.mapNum == MAP_NUM(DESERT_RUINS))) + if (!FlagGet(FLAG_SYS_BRAILLE_STRENGTH) && (gSaveBlock1.location.mapGroup == MAP_GROUP(DESERT_RUINS) && gSaveBlock1.location.mapNum == MAP_NUM(DESERT_RUINS))) { if (gSaveBlock1.pos.x == 10 && gSaveBlock1.pos.y == 23) return TRUE; @@ -92,13 +92,13 @@ void DoBrailleStrengthEffect(void) MapGridSetMetatileIdAt(16, 27, 3636); DrawWholeMapView(); PlaySE(SE_BAN); - FlagSet(SYS_BRAILLE_STRENGTH); + FlagSet(FLAG_SYS_BRAILLE_STRENGTH); ScriptContext2_Disable(); } bool8 ShouldDoBrailleFlyEffect(void) { - if (!FlagGet(SYS_BRAILLE_FLY) && (gSaveBlock1.location.mapGroup == MAP_GROUP(ANCIENT_TOMB) && gSaveBlock1.location.mapNum == MAP_NUM(ANCIENT_TOMB))) + if (!FlagGet(FLAG_SYS_BRAILLE_FLY) && (gSaveBlock1.location.mapGroup == MAP_GROUP(ANCIENT_TOMB) && gSaveBlock1.location.mapNum == MAP_NUM(ANCIENT_TOMB))) { if (gSaveBlock1.pos.x == 8 && gSaveBlock1.pos.y == 25) return TRUE; @@ -138,13 +138,13 @@ void UseFlyAncientTomb_Finish(void) MapGridSetMetatileIdAt(16, 27, 3636); DrawWholeMapView(); PlaySE(SE_BAN); - FlagSet(SYS_BRAILLE_FLY); + FlagSet(FLAG_SYS_BRAILLE_FLY); ScriptContext2_Disable(); } void DoBrailleWait(void) { - if (!FlagGet(SYS_BRAILLE_WAIT)) + if (!FlagGet(FLAG_SYS_BRAILLE_WAIT)) CreateTask(Task_BrailleWait, 0x50); } diff --git a/src/field/dewford_trend.c b/src/field/dewford_trend.c index 90ea74f77..b36459655 100644 --- a/src/field/dewford_trend.c +++ b/src/field/dewford_trend.c @@ -101,10 +101,10 @@ bool8 sub_80FA364(u16 *a) if (!SB1ContainsWords(a)) { - if (!FlagGet(SYS_POPWORD_INPUT)) + if (!FlagGet(FLAG_SYS_POPWORD_INPUT)) { - FlagSet(SYS_POPWORD_INPUT); - if (!FlagGet(SYS_MIX_RECORD)) + FlagSet(FLAG_SYS_POPWORD_INPUT); + if (!FlagGet(FLAG_SYS_MIX_RECORD)) { gSaveBlock1.easyChatPairs[0].words[0] = a[0]; gSaveBlock1.easyChatPairs[0].words[1] = a[1]; diff --git a/src/field/event_data.c b/src/field/event_data.c index 5c8b7d7e5..3b3ac7bca 100644 --- a/src/field/event_data.c +++ b/src/field/event_data.c @@ -36,10 +36,10 @@ void ClearTempFieldEventData(void) { memset(gSaveBlock1.flags, 0, TEMP_FLAGS_SIZE); memset(gSaveBlock1.vars, 0, TEMP_VARS_SIZE); - FlagClear(SYS_ENC_UP_ITEM); - FlagClear(SYS_ENC_DOWN_ITEM); - FlagClear(SYS_USE_STRENGTH); - FlagClear(SYS_CTRL_OBJ_DELETE); + FlagClear(FLAG_SYS_ENC_UP_ITEM); + FlagClear(FLAG_SYS_ENC_DOWN_ITEM); + FlagClear(FLAG_SYS_USE_STRENGTH); + FlagClear(FLAG_SYS_CTRL_OBJ_DELETE); } // probably had different flag splits at one point. @@ -53,7 +53,7 @@ void DisableNationalPokedex(void) u16 *nationalDexVar = GetVarPointer(VAR_NATIONAL_DEX); gSaveBlock2.pokedex.nationalMagic = 0; *nationalDexVar = 0; - FlagClear(SYS_NATIONAL_DEX); + FlagClear(FLAG_SYS_NATIONAL_DEX); } void EnableNationalPokedex(void) @@ -61,7 +61,7 @@ void EnableNationalPokedex(void) u16 *nationalDexVar = GetVarPointer(VAR_NATIONAL_DEX); gSaveBlock2.pokedex.nationalMagic = 0xDA; *nationalDexVar = 0x302; - FlagSet(SYS_NATIONAL_DEX); + FlagSet(FLAG_SYS_NATIONAL_DEX); gSaveBlock2.pokedex.unknown1 = 1; gSaveBlock2.pokedex.order = 0; sub_808C0A0(); @@ -69,7 +69,7 @@ void EnableNationalPokedex(void) bool32 IsNationalPokedexEnabled(void) { - if (gSaveBlock2.pokedex.nationalMagic == 0xDA && VarGet(VAR_NATIONAL_DEX) == 0x302 && FlagGet(SYS_NATIONAL_DEX)) + if (gSaveBlock2.pokedex.nationalMagic == 0xDA && VarGet(VAR_NATIONAL_DEX) == 0x302 && FlagGet(FLAG_SYS_NATIONAL_DEX)) return TRUE; else return FALSE; @@ -77,34 +77,34 @@ bool32 IsNationalPokedexEnabled(void) void DisableMysteryGift(void) { - FlagClear(SYS_EXDATA_ENABLE); + FlagClear(FLAG_SYS_EXDATA_ENABLE); } void EnableMysteryGift(void) { - FlagSet(SYS_EXDATA_ENABLE); + FlagSet(FLAG_SYS_EXDATA_ENABLE); } bool32 IsMysteryGiftEnabled(void) { - return FlagGet(SYS_EXDATA_ENABLE); + return FlagGet(FLAG_SYS_EXDATA_ENABLE); } void DisableResetRTC(void) { VarSet(VAR_RESET_RTC_ENABLE, 0); - FlagClear(SYS_RESET_RTC_ENABLE); + FlagClear(FLAG_SYS_RESET_RTC_ENABLE); } void EnableResetRTC(void) { VarSet(VAR_RESET_RTC_ENABLE, 0x920); - FlagSet(SYS_RESET_RTC_ENABLE); + FlagSet(FLAG_SYS_RESET_RTC_ENABLE); } bool32 CanResetRTC(void) { - if (FlagGet(SYS_RESET_RTC_ENABLE) && VarGet(VAR_RESET_RTC_ENABLE) == 0x920) + if (FlagGet(FLAG_SYS_RESET_RTC_ENABLE) && VarGet(VAR_RESET_RTC_ENABLE) == 0x920) return TRUE; else return FALSE; diff --git a/src/field/field_control_avatar.c b/src/field/field_control_avatar.c index c4e53b13f..dd29e9df5 100644 --- a/src/field/field_control_avatar.c +++ b/src/field/field_control_avatar.c @@ -423,11 +423,11 @@ static u8 *sub_8068500(struct MapPosition *position, u8 b, u8 c) static u8 *TryGetFieldMoveScript(struct MapPosition *unused1, u8 b, u8 unused2) { - if (FlagGet(BADGE05_GET) == TRUE && PartyHasMonWithSurf() == TRUE && IsPlayerFacingSurfableFishableWater() == TRUE) + if (FlagGet(FLAG_BADGE05_GET) == TRUE && PartyHasMonWithSurf() == TRUE && IsPlayerFacingSurfableFishableWater() == TRUE) return UseSurfScript; if (MetatileBehavior_IsWaterfall(b) == TRUE) { - if (FlagGet(BADGE08_GET) == TRUE && IsPlayerSurfingNorth() == TRUE) + if (FlagGet(FLAG_BADGE08_GET) == TRUE && IsPlayerSurfingNorth() == TRUE) return S_UseWaterfall; else return S_CannotUseWaterfall; @@ -437,7 +437,7 @@ static u8 *TryGetFieldMoveScript(struct MapPosition *unused1, u8 b, u8 unused2) static bool32 sub_8068770(void) { - if (FlagGet(BADGE07_GET) && sub_8068F18() == 2) + if (FlagGet(FLAG_BADGE07_GET) && sub_8068F18() == 2) { ScriptContext1_SetupScript(UseDiveScript); return TRUE; @@ -447,7 +447,7 @@ static bool32 sub_8068770(void) static bool32 sub_80687A4(void) { - if (FlagGet(BADGE07_GET) && gMapHeader.mapType == MAP_TYPE_UNDERWATER && sub_8068F18() == 1) + if (FlagGet(FLAG_BADGE07_GET) && gMapHeader.mapType == MAP_TYPE_UNDERWATER && sub_8068F18() == 1) { ScriptContext1_SetupScript(S_UseDiveUnderwater); return TRUE; diff --git a/src/field/field_player_avatar.c b/src/field/field_player_avatar.c index 437d16208..d80076be4 100644 --- a/src/field/field_player_avatar.c +++ b/src/field/field_player_avatar.c @@ -490,7 +490,7 @@ void sub_8058D0C(u8 direction, u16 heldKeys) PlayerGoSpeed2(direction); return; } - if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_4) && (heldKeys & B_BUTTON) && FlagGet(SYS_B_DASH) + if (!(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_4) && (heldKeys & B_BUTTON) && FlagGet(FLAG_SYS_B_DASH) && IsRunningDisallowed(gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1E) == 0) { sub_805940C(direction); @@ -563,7 +563,7 @@ static bool8 ShouldJumpLedge(s16 a, s16 b, u8 c) static u8 sub_8058F6C(s16 a, s16 b, u8 c) { - if (FlagGet(SYS_USE_STRENGTH)) + if (FlagGet(FLAG_SYS_USE_STRENGTH)) { u8 mapObjectId = GetFieldObjectIdByXY(a, b); diff --git a/src/field/field_special_scene.c b/src/field/field_special_scene.c index 6ef98f5e9..0b7fe336e 100644 --- a/src/field/field_special_scene.c +++ b/src/field/field_special_scene.c @@ -373,7 +373,7 @@ void sub_80C791C(void) void sub_80C7958(void) { - FlagSet(SYS_CRUISE_MODE); + FlagSet(FLAG_SYS_CRUISE_MODE); FlagSet(0x4001); FlagSet(0x4000); saved_warp2_set(0, gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1); diff --git a/src/field/field_specials.c b/src/field/field_specials.c index 9a286dd6e..78c60c94e 100644 --- a/src/field/field_specials.c +++ b/src/field/field_specials.c @@ -221,18 +221,18 @@ void UpdateCyclingRoadState(void) { void SetSSTidalFlag(void) { - FlagSet(SYS_CRUISE_MODE); + FlagSet(FLAG_SYS_CRUISE_MODE); *GetVarPointer(VAR_CRUISE_STEP_COUNT) = 0; } void ResetSSTidalFlag(void) { - FlagClear(SYS_CRUISE_MODE); + FlagClear(FLAG_SYS_CRUISE_MODE); } bool32 CountSSTidalStep(u16 delta) { - if (!FlagGet(SYS_CRUISE_MODE) || (*GetVarPointer(VAR_CRUISE_STEP_COUNT) += delta) <= 0xcc) + if (!FlagGet(FLAG_SYS_CRUISE_MODE) || (*GetVarPointer(VAR_CRUISE_STEP_COUNT) += delta) <= 0xcc) { return FALSE; } @@ -1865,7 +1865,7 @@ void GivLeadMonEffortRibbon(void) { bool8 ribbonSet; IncrementGameStat(GAME_STAT_RECEIVED_RIBBONS); - FlagSet(SYS_RIBBON_GET); + FlagSet(FLAG_SYS_RIBBON_GET); ribbonSet = TRUE; SetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_EFFORT_RIBBON, &ribbonSet); } diff --git a/src/field/fldeff_flash.c b/src/field/fldeff_flash.c index 920791ce2..22f170184 100644 --- a/src/field/fldeff_flash.c +++ b/src/field/fldeff_flash.c @@ -73,7 +73,7 @@ static const u8 gCaveTransitionTiles[] = INCBIN_U8("graphics/misc/cave_transitio bool8 SetUpFieldMove_Flash(void) { - if (gMapHeader.cave == TRUE && !FlagGet(SYS_USE_FLASH)) + if (gMapHeader.cave == TRUE && !FlagGet(FLAG_SYS_USE_FLASH)) { gFieldCallback = FieldCallback_Teleport; gUnknown_03005CE4 = sub_810CBFC; @@ -94,7 +94,7 @@ void sub_810CBFC(void) void sub_810CC34(void) { PlaySE(SE_W115); - FlagSet(SYS_USE_FLASH); + FlagSet(FLAG_SYS_USE_FLASH); ScriptContext1_SetupScript(gUnknown_081B694A); } diff --git a/src/field/item_use.c b/src/field/item_use.c index 48b159c1c..c2e71070c 100644 --- a/src/field/item_use.c +++ b/src/field/item_use.c @@ -177,7 +177,7 @@ void ItemUseOutOfBattle_Bike(u8 taskId) PlayerGetDestCoords(&x, &y); tileBehavior = MapGridGetMetatileBehaviorAt(x, y); - if (FlagGet(SYS_CYCLING_ROAD) == TRUE // on cycling road? + if (FlagGet(FLAG_SYS_CYCLING_ROAD) == TRUE // on cycling road? || MetatileBehavior_IsVerticalRail(tileBehavior) == TRUE || MetatileBehavior_IsHorizontalRail(tileBehavior) == TRUE || MetatileBehavior_IsIsolatedVerticalRail(tileBehavior) == TRUE @@ -952,8 +952,8 @@ void ItemUseOutOfBattle_BlackWhiteFlute(u8 taskId) { if (gScriptItemId == ITEM_WHITE_FLUTE) { - FlagSet(SYS_ENC_UP_ITEM); - FlagClear(SYS_ENC_DOWN_ITEM); + FlagSet(FLAG_SYS_ENC_UP_ITEM); + FlagClear(FLAG_SYS_ENC_DOWN_ITEM); sub_80CA07C(); StringExpandPlaceholders(gStringVar4, gOtherText_UsedFlute); gTasks[taskId].func = sub_80CA098; @@ -961,8 +961,8 @@ void ItemUseOutOfBattle_BlackWhiteFlute(u8 taskId) } else if (gScriptItemId == ITEM_BLACK_FLUTE) { - FlagSet(SYS_ENC_DOWN_ITEM); - FlagClear(SYS_ENC_UP_ITEM); + FlagSet(FLAG_SYS_ENC_DOWN_ITEM); + FlagClear(FLAG_SYS_ENC_UP_ITEM); sub_80CA07C(); StringExpandPlaceholders(gStringVar4, gOtherText_UsedRepel); gTasks[taskId].func = sub_80CA098; diff --git a/src/field/overworld.c b/src/field/overworld.c index 21f3f98ef..834a2afa4 100644 --- a/src/field/overworld.c +++ b/src/field/overworld.c @@ -203,47 +203,47 @@ static void DoWhiteOut(void) void Overworld_ResetStateAfterFly(void) { player_avatar_init_params_reset(); - FlagClear(SYS_CYCLING_ROAD); - FlagClear(SYS_CRUISE_MODE); - FlagClear(SYS_SAFARI_MODE); - FlagClear(SYS_USE_STRENGTH); - FlagClear(SYS_USE_FLASH); + FlagClear(FLAG_SYS_CYCLING_ROAD); + FlagClear(FLAG_SYS_CRUISE_MODE); + FlagClear(FLAG_SYS_SAFARI_MODE); + FlagClear(FLAG_SYS_USE_STRENGTH); + FlagClear(FLAG_SYS_USE_FLASH); } void Overworld_ResetStateAfterTeleport(void) { player_avatar_init_params_reset(); - FlagClear(SYS_CYCLING_ROAD); - FlagClear(SYS_CRUISE_MODE); - FlagClear(SYS_SAFARI_MODE); - FlagClear(SYS_USE_STRENGTH); - FlagClear(SYS_USE_FLASH); + FlagClear(FLAG_SYS_CYCLING_ROAD); + FlagClear(FLAG_SYS_CRUISE_MODE); + FlagClear(FLAG_SYS_SAFARI_MODE); + FlagClear(FLAG_SYS_USE_STRENGTH); + FlagClear(FLAG_SYS_USE_FLASH); ScriptContext2_RunNewScript(gUnknown_0819FC9F); } void Overworld_ResetStateAfterDigEscRope(void) { player_avatar_init_params_reset(); - FlagClear(SYS_CYCLING_ROAD); - FlagClear(SYS_CRUISE_MODE); - FlagClear(SYS_SAFARI_MODE); - FlagClear(SYS_USE_STRENGTH); - FlagClear(SYS_USE_FLASH); + FlagClear(FLAG_SYS_CYCLING_ROAD); + FlagClear(FLAG_SYS_CRUISE_MODE); + FlagClear(FLAG_SYS_SAFARI_MODE); + FlagClear(FLAG_SYS_USE_STRENGTH); + FlagClear(FLAG_SYS_USE_FLASH); } void Overworld_ResetStateAfterWhiteOut(void) { player_avatar_init_params_reset(); - FlagClear(SYS_CYCLING_ROAD); - FlagClear(SYS_CRUISE_MODE); - FlagClear(SYS_SAFARI_MODE); - FlagClear(SYS_USE_STRENGTH); - FlagClear(SYS_USE_FLASH); + FlagClear(FLAG_SYS_CYCLING_ROAD); + FlagClear(FLAG_SYS_CRUISE_MODE); + FlagClear(FLAG_SYS_SAFARI_MODE); + FlagClear(FLAG_SYS_USE_STRENGTH); + FlagClear(FLAG_SYS_USE_FLASH); } void sub_805308C(void) { - FlagClear(SYS_SAFARI_MODE); + FlagClear(FLAG_SYS_SAFARI_MODE); ChooseAmbientCrySpecies(); ResetCyclingRoadChallengeData(); UpdateLocationHistoryForRoamer(); @@ -641,7 +641,7 @@ void sub_8053994(u32 a1) SetSav1WeatherFromCurrMapHeader(); ChooseAmbientCrySpecies(); if (v2) - FlagClear(SYS_USE_FLASH); + FlagClear(FLAG_SYS_USE_FLASH); SetDefaultFlashLevel(); Overworld_ClearSavedMusic(); mapheader_run_script_with_tag_x3(); @@ -691,7 +691,7 @@ struct UnkPlayerStruct *sub_8053AA8(void) u8 sub_8053B00(struct UnkPlayerStruct *playerStruct, u16 a2, u8 a3) { - if (a3 != 8 && FlagGet(SYS_CRUISE_MODE)) + if (a3 != 8 && FlagGet(FLAG_SYS_CRUISE_MODE)) return 1; if (a3 == 5) return 16; @@ -708,7 +708,7 @@ u8 sub_8053B00(struct UnkPlayerStruct *playerStruct, u16 a2, u8 a3) u8 sub_8053B60(struct UnkPlayerStruct *playerStruct, u8 a2, u16 a3, u8 a4) { - if (FlagGet(SYS_CRUISE_MODE) && a4 == 6) + if (FlagGet(FLAG_SYS_CRUISE_MODE) && a4 == 6) return 4; if (MetatileBehavior_IsDeepSouthWarp(a3) == TRUE) return 2; @@ -766,7 +766,7 @@ void SetDefaultFlashLevel(void) { if (!gMapHeader.cave) gSaveBlock1.flashLevel = 0; - else if (FlagGet(SYS_USE_FLASH)) + else if (FlagGet(FLAG_SYS_USE_FLASH)) gSaveBlock1.flashLevel = 1; else gSaveBlock1.flashLevel = gMaxFlashLevel; @@ -792,7 +792,7 @@ void sub_8053D14(u16 mapDataId) static bool16 ShouldLegendaryMusicPlayAtLocation(struct WarpData *warp) { - if (!FlagGet(SYS_WEATHER_CTRL)) + if (!FlagGet(FLAG_SYS_WEATHER_CTRL)) return FALSE; if (warp->mapGroup == 0) { @@ -912,7 +912,7 @@ void Overworld_ClearSavedMusic(void) void sub_8053F0C(void) { - if (FlagGet(SPECIAL_FLAG_1) != TRUE) + if (FlagGet(FLAG_SPECIAL_FLAG_1) != TRUE) { u16 newMusic = GetWarpDestinationMusic(); u16 currentMusic = GetCurrentMapMusic(); @@ -959,7 +959,7 @@ u8 GetMapMusicFadeoutSpeed(void) void sub_8053FF8(void) { u16 music = GetWarpDestinationMusic(); - if (FlagGet(SPECIAL_FLAG_1) != TRUE && music != GetCurrentMapMusic()) + if (FlagGet(FLAG_SPECIAL_FLAG_1) != TRUE && music != GetCurrentMapMusic()) { u8 speed = GetMapMusicFadeoutSpeed(); FadeOutMapMusic(speed); diff --git a/src/field/party_menu.c b/src/field/party_menu.c index dc817f8c9..7d21c365a 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -5643,7 +5643,7 @@ _08070F8A:\n\ void unref_sub_8070F90(void) { - FlagSet(SYS_POKEDEX_GET); - FlagSet(SYS_POKEMON_GET); - FlagSet(SYS_POKENAV_GET); + FlagSet(FLAG_SYS_POKEDEX_GET); + FlagSet(FLAG_SYS_POKEMON_GET); + FlagSet(FLAG_SYS_POKENAV_GET); } diff --git a/src/field/region_map.c b/src/field/region_map.c index 12bf1a5f2..07e77e389 100644 --- a/src/field/region_map.c +++ b/src/field/region_map.c @@ -1422,7 +1422,7 @@ static const u8 *const sEverGrandeCityAreaNames[] = {OtherText_PokeLeague, Other static const struct UnknownStruct4 sUnknown_083E79C0[1] = { - {sEverGrandeCityAreaNames, MAPSEC_EVER_GRANDE_CITY, SYS_POKEMON_LEAGUE_FLY}, + {sEverGrandeCityAreaNames, MAPSEC_EVER_GRANDE_CITY, FLAG_SYS_POKEMON_LEAGUE_FLY}, }; // XXX: what is this? @@ -1822,7 +1822,7 @@ static void sub_80FC69C(void) sub_8053538((gSaveBlock2.playerGender == MALE) ? 12 : 13); break; case MAPSEC_EVER_GRANDE_CITY: - sub_8053538((FlagGet(SYS_POKEMON_LEAGUE_FLY) && ewram0_3.regionMap.everGrandeCityArea == 0) ? 20 : 11); + sub_8053538((FlagGet(FLAG_SYS_POKEMON_LEAGUE_FLY) && ewram0_3.regionMap.everGrandeCityArea == 0) ? 20 : 11); break; default: if (sUnknown_083E7920[ewram0_3.regionMap.mapSectionId][2] != 0) diff --git a/src/field/safari_zone.c b/src/field/safari_zone.c index 14fd1ddc4..73fb01f3e 100644 --- a/src/field/safari_zone.c +++ b/src/field/safari_zone.c @@ -41,17 +41,17 @@ extern u16 gScriptResult; bool32 GetSafariZoneFlag(void) { - return FlagGet(SYS_SAFARI_MODE); + return FlagGet(FLAG_SYS_SAFARI_MODE); } void SetSafariZoneFlag(void) { - FlagSet(SYS_SAFARI_MODE); + FlagSet(FLAG_SYS_SAFARI_MODE); } void ResetSafariZoneFlag(void) { - FlagClear(SYS_SAFARI_MODE); + FlagClear(FLAG_SYS_SAFARI_MODE); } void EnterSafariMode(void) diff --git a/src/field/script_menu.c b/src/field/script_menu.c index caa1d7562..1f8c2c45e 100644 --- a/src/field/script_menu.c +++ b/src/field/script_menu.c @@ -906,7 +906,7 @@ void ScriptMenu_CreatePCMenu(void) else width = 8; - if (FlagGet(SYS_GAME_CLEAR)) // player has cleared game? + if (FlagGet(FLAG_SYS_GAME_CLEAR)) // player has cleared game? { numChoices = 4; MenuDrawTextWindow(0, 0, width + 2, 9); @@ -920,7 +920,7 @@ void ScriptMenu_CreatePCMenu(void) MenuPrint(gPCText_LogOff, 1, 5); } - if (FlagGet(SYS_PC_LANETTE)) // player met lanette? + if (FlagGet(FLAG_SYS_PC_LANETTE)) // player met lanette? MenuPrint(gPCText_LanettesPC, 1, 1); else MenuPrint(gPCText_SomeonesPC, 1, 1); diff --git a/src/field/start_menu.c b/src/field/start_menu.c index 7913e5527..9f4eacd09 100644 --- a/src/field/start_menu.c +++ b/src/field/start_menu.c @@ -154,12 +154,12 @@ static void AddStartMenuAction(u8 action) static void BuildStartMenuActions_Normal(void) { - if (FlagGet(SYS_POKEDEX_GET) == TRUE) + if (FlagGet(FLAG_SYS_POKEDEX_GET) == TRUE) AddStartMenuAction(MENU_ACTION_POKEDEX); - if (FlagGet(SYS_POKEMON_GET) == TRUE) + if (FlagGet(FLAG_SYS_POKEMON_GET) == TRUE) AddStartMenuAction(MENU_ACTION_POKEMON); AddStartMenuAction(MENU_ACTION_BAG); - if (FlagGet(SYS_POKENAV_GET) == TRUE) + if (FlagGet(FLAG_SYS_POKENAV_GET) == TRUE) AddStartMenuAction(MENU_ACTION_POKENAV); AddStartMenuAction(MENU_ACTION_PLAYER); AddStartMenuAction(MENU_ACTION_SAVE); @@ -182,7 +182,7 @@ static void BuildStartMenuActions_Link(void) { AddStartMenuAction(MENU_ACTION_POKEMON); AddStartMenuAction(MENU_ACTION_BAG); - if (FlagGet(SYS_POKENAV_GET) == TRUE) + if (FlagGet(FLAG_SYS_POKENAV_GET) == TRUE) AddStartMenuAction(MENU_ACTION_POKENAV); AddStartMenuAction(MENU_ACTION_PLAYER_LINK); AddStartMenuAction(MENU_ACTION_OPTION); diff --git a/src/field/tv.c b/src/field/tv.c index c3141e0b5..db96775e3 100644 --- a/src/field/tv.c +++ b/src/field/tv.c @@ -542,7 +542,7 @@ bool8 IsTVShowInSearchOfTrainersAiring(void); void UpdateTVScreensOnMap(int width, int height) { - FlagSet(SYS_TV_WATCH); + FlagSet(FLAG_SYS_TV_WATCH); switch (CheckForBigMovieOrEmergencyNewsOnTV()) { case 1: @@ -556,9 +556,9 @@ void UpdateTVScreensOnMap(int width, int height) { SetTVMetatilesOnMap(width, height, 0x3); } - else if (FlagGet(SYS_TV_START) && (sub_80BD8B8() != 0xff || sub_80BECA0() != 0xff || IsTVShowInSearchOfTrainersAiring())) + else if (FlagGet(FLAG_SYS_TV_START) && (sub_80BD8B8() != 0xff || sub_80BECA0() != 0xff || IsTVShowInSearchOfTrainersAiring())) { - FlagClear(SYS_TV_WATCH); + FlagClear(FLAG_SYS_TV_WATCH); SetTVMetatilesOnMap(width, height, 0x3); } break; @@ -1138,7 +1138,7 @@ void nullsub_21(void) void sub_80BE778(void) { - if (FlagGet(SYS_GAME_CLEAR)) + if (FlagGet(FLAG_SYS_GAME_CLEAR)) { u8 i; @@ -1331,7 +1331,7 @@ void sub_80BEB20(void) { u16 rval; - if (FlagGet(SYS_GAME_CLEAR) != 0) + if (FlagGet(FLAG_SYS_GAME_CLEAR) != 0) { gUnknown_03005D38.var0 = sub_80BEBC8(gSaveBlock1.unknown_2ABC); if (gUnknown_03005D38.var0 != -1 && sub_80BF77C(0x28f) != 1) @@ -1507,7 +1507,7 @@ void sub_80BEE84(u16 var0) } else { - if (!gSaveBlock1.unknown_2ABC[i].val1 && FlagGet(SYS_GAME_CLEAR) == 1) + if (!gSaveBlock1.unknown_2ABC[i].val1 && FlagGet(FLAG_SYS_GAME_CLEAR) == 1) gSaveBlock1.unknown_2ABC[i].val1 = 1; gSaveBlock1.unknown_2ABC[i].val2 -= var0; } @@ -2133,9 +2133,9 @@ u8 CheckForBigMovieOrEmergencyNewsOnTV(void) if (gSaveBlock1.location.mapNum != MAP_NUM(LITTLEROOT_TOWN_MAYS_HOUSE_1F)) return 0; } - if (FlagGet(SYS_TV_LATI) == 1) + if (FlagGet(FLAG_SYS_TV_LATI) == 1) return 1; - if (FlagGet(SYS_TV_HOME) == 1) + if (FlagGet(FLAG_SYS_TV_HOME) == 1) return 2; return 1; } @@ -2650,7 +2650,7 @@ void sub_80C0408(void) { u16 i; - if (FlagGet(SYS_GAME_CLEAR) == TRUE) + if (FlagGet(FLAG_SYS_GAME_CLEAR) == TRUE) return; for (i = 0; i < 24; i++) { @@ -2801,7 +2801,7 @@ void sub_80C0788(void) { u8 i; - if (FlagGet(SYS_GAME_CLEAR) != 1) + if (FlagGet(FLAG_SYS_GAME_CLEAR) != 1) { for (i = 0; i < 16; i++) gSaveBlock1.unknown_2ABC[i].val1 = 0; diff --git a/src/field/wild_encounter.c b/src/field/wild_encounter.c index 64c88694c..cc4468728 100644 --- a/src/field/wild_encounter.c +++ b/src/field/wild_encounter.c @@ -4353,9 +4353,9 @@ static bool8 IsWildLevelAllowedByRepel(u8 wildLevel) static void ApplyFluteEncounterRateMod(u32 *encRate) { - if (FlagGet(SYS_ENC_UP_ITEM) == TRUE) + if (FlagGet(FLAG_SYS_ENC_UP_ITEM) == TRUE) *encRate += *encRate / 2; - else if (FlagGet(SYS_ENC_DOWN_ITEM) == TRUE) + else if (FlagGet(FLAG_SYS_ENC_DOWN_ITEM) == TRUE) *encRate = *encRate / 2; } -- cgit v1.2.3 From a753c44277c050fb24aaf97a8947c7f54e0dacd7 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Wed, 20 Dec 2017 19:58:17 -0600 Subject: Use event script macro names from pokeemerald --- src/field/scrcmd.c | 102 ++++++++++++++++++++++++++--------------------------- 1 file changed, 51 insertions(+), 51 deletions(-) (limited to 'src/field') diff --git a/src/field/scrcmd.c b/src/field/scrcmd.c index e6305d9c4..f0cafcf1a 100644 --- a/src/field/scrcmd.c +++ b/src/field/scrcmd.c @@ -483,7 +483,7 @@ bool8 ScrCmd_random(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_additem(struct ScriptContext *ctx) +bool8 ScrCmd_giveitem(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); u32 quantity = VarGet(ScriptReadHalfword(ctx)); @@ -492,7 +492,7 @@ bool8 ScrCmd_additem(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_removeitem(struct ScriptContext *ctx) +bool8 ScrCmd_takeitem(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); u32 quantity = VarGet(ScriptReadHalfword(ctx)); @@ -527,7 +527,7 @@ bool8 ScrCmd_checkitemtype(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_addpcitem(struct ScriptContext *ctx) +bool8 ScrCmd_givepcitem(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); u16 quantity = VarGet(ScriptReadHalfword(ctx)); @@ -545,23 +545,23 @@ bool8 ScrCmd_checkpcitem(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_adddecor(struct ScriptContext *ctx) +bool8 ScrCmd_givedecoration(struct ScriptContext *ctx) { - u32 decorId = VarGet(ScriptReadHalfword(ctx)); + u32 decoration = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = IsThereStorageSpaceForDecoration(decorId); + gScriptResult = IsThereStorageSpaceForDecoration(decoration); return FALSE; } -bool8 ScrCmd_removedecor(struct ScriptContext *ctx) +bool8 ScrCmd_takedecoration(struct ScriptContext *ctx) { - u32 decorId = VarGet(ScriptReadHalfword(ctx)); + u32 decoration = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = sub_81340A8(decorId); + gScriptResult = sub_81340A8(decoration); return FALSE; } -bool8 ScrCmd_checkdecor(struct ScriptContext *ctx) +bool8 ScrCmd_checkdecorspace(struct ScriptContext *ctx) { u32 decorId = VarGet(ScriptReadHalfword(ctx)); @@ -569,7 +569,7 @@ bool8 ScrCmd_checkdecor(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_hasdecor(struct ScriptContext *ctx) +bool8 ScrCmd_checkdecor(struct ScriptContext *ctx) { u32 decorId = VarGet(ScriptReadHalfword(ctx)); @@ -601,14 +601,14 @@ bool8 ScrCmd_incrementgamestat(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_animdarklevel(struct ScriptContext *ctx) +bool8 ScrCmd_animateflash(struct ScriptContext *ctx) { sub_8081594(ScriptReadByte(ctx)); ScriptContext1_Stop(); return TRUE; } -bool8 ScrCmd_setdarklevel(struct ScriptContext *ctx) +bool8 ScrCmd_setflashradius(struct ScriptContext *ctx) { u16 flashLevel = VarGet(ScriptReadHalfword(ctx)); @@ -631,7 +631,7 @@ bool8 ScrCmd_fadescreen(struct ScriptContext *ctx) return TRUE; } -bool8 ScrCmd_fadescreendelay(struct ScriptContext *ctx) +bool8 ScrCmd_fadescreenspeed(struct ScriptContext *ctx) { u8 duration = ScriptReadByte(ctx); u8 delay = ScriptReadByte(ctx); @@ -702,7 +702,7 @@ bool8 ScrCmd_doweather(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_tileeffect(struct ScriptContext *ctx) +bool8 ScrCmd_setstepcallback(struct ScriptContext *ctx) { ActivatePerStepCallback(ScriptReadByte(ctx)); return FALSE; @@ -859,7 +859,7 @@ bool8 ScrCmd_getplayerxy(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_countpokemon(struct ScriptContext *ctx) +bool8 ScrCmd_getpartysize(struct ScriptContext *ctx) { gScriptResult = CalculatePlayerPartyCount(); return FALSE; @@ -1073,7 +1073,7 @@ bool8 ScrCmd_moveobjectoffscreen(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_showobject(struct ScriptContext *ctx) +bool8 ScrCmd_showobjectat(struct ScriptContext *ctx) { u16 localId = VarGet(ScriptReadHalfword(ctx)); u8 mapGroup = ScriptReadByte(ctx); @@ -1083,7 +1083,7 @@ bool8 ScrCmd_showobject(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_hideobject(struct ScriptContext *ctx) +bool8 ScrCmd_hideobjectat(struct ScriptContext *ctx) { u16 localId = VarGet(ScriptReadHalfword(ctx)); u8 mapGroup = ScriptReadByte(ctx); @@ -1267,7 +1267,7 @@ static bool8 WaitForAorBPress(void) return FALSE; } -bool8 ScrCmd_waitbutton(struct ScriptContext *ctx) +bool8 ScrCmd_waitbuttonpress(struct ScriptContext *ctx) { SetupNativeScript(ctx, WaitForAorBPress); return TRUE; @@ -1386,7 +1386,7 @@ bool8 ScrCmd_drawboxtext(struct ScriptContext *ctx) } } -bool8 ScrCmd_drawpokepic(struct ScriptContext *ctx) +bool8 ScrCmd_drawmonpic(struct ScriptContext *ctx) { u16 species = VarGet(ScriptReadHalfword(ctx)); u8 x = ScriptReadByte(ctx); @@ -1396,7 +1396,7 @@ bool8 ScrCmd_drawpokepic(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_erasepokepic(struct ScriptContext *ctx) +bool8 ScrCmd_erasemonpic(struct ScriptContext *ctx) { bool8 (*func)(void) = ScriptMenu_GetPicboxWaitFunc(); @@ -1441,7 +1441,7 @@ bool8 ScrCmd_vmessage(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_getspeciesname(struct ScriptContext *ctx) +bool8 ScrCmd_bufferspeciesname(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 species = VarGet(ScriptReadHalfword(ctx)); @@ -1450,7 +1450,7 @@ bool8 ScrCmd_getspeciesname(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_getfirstpartypokename(struct ScriptContext *ctx) +bool8 ScrCmd_bufferleadmonspeciesname(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); @@ -1461,7 +1461,7 @@ bool8 ScrCmd_getfirstpartypokename(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_getpartypokename(struct ScriptContext *ctx) +bool8 ScrCmd_bufferpartymonnick(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 partyIndex = VarGet(ScriptReadHalfword(ctx)); @@ -1471,7 +1471,7 @@ bool8 ScrCmd_getpartypokename(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_getitemname(struct ScriptContext *ctx) +bool8 ScrCmd_bufferitemname(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 itemId = VarGet(ScriptReadHalfword(ctx)); @@ -1480,7 +1480,7 @@ bool8 ScrCmd_getitemname(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_getdecorname(struct ScriptContext *ctx) +bool8 ScrCmd_bufferdecorationname(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 decorId = VarGet(ScriptReadHalfword(ctx)); @@ -1489,7 +1489,7 @@ bool8 ScrCmd_getdecorname(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_getmovename(struct ScriptContext *ctx) +bool8 ScrCmd_buffermovename(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 moveId = VarGet(ScriptReadHalfword(ctx)); @@ -1498,7 +1498,7 @@ bool8 ScrCmd_getmovename(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_getnumberstring(struct ScriptContext *ctx) +bool8 ScrCmd_buffernumberstring(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 v1 = VarGet(ScriptReadHalfword(ctx)); @@ -1508,7 +1508,7 @@ bool8 ScrCmd_getnumberstring(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_getstdstring(struct ScriptContext *ctx) +bool8 ScrCmd_bufferstdstring(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u16 index = VarGet(ScriptReadHalfword(ctx)); @@ -1517,7 +1517,7 @@ bool8 ScrCmd_getstdstring(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_getstring(struct ScriptContext *ctx) +bool8 ScrCmd_bufferstring(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u8 *text = (u8 *)ScriptReadWord(ctx); @@ -1526,7 +1526,7 @@ bool8 ScrCmd_getstring(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_vloadword(struct ScriptContext *ctx) +bool8 ScrCmd_vloadptr(struct ScriptContext *ctx) { u8 *ptr = (u8 *)(ScriptReadWord(ctx) - gUnknown_0202E8B0); @@ -1534,7 +1534,7 @@ bool8 ScrCmd_vloadword(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_vgetstring(struct ScriptContext *ctx) +bool8 ScrCmd_vbufferstring(struct ScriptContext *ctx) { u8 stringVarIndex = ScriptReadByte(ctx); u32 addr = ScriptReadWord(ctx); @@ -1545,7 +1545,7 @@ bool8 ScrCmd_vgetstring(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_givepoke(struct ScriptContext *ctx) +bool8 ScrCmd_givemon(struct ScriptContext *ctx) { u16 species = VarGet(ScriptReadHalfword(ctx)); u8 level = ScriptReadByte(ctx); @@ -1566,7 +1566,7 @@ bool8 ScrCmd_giveegg(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_setpokemove(struct ScriptContext *ctx) +bool8 ScrCmd_setmonmove(struct ScriptContext *ctx) { u8 partyIndex = ScriptReadByte(ctx); u8 slot = ScriptReadByte(ctx); @@ -1576,13 +1576,13 @@ bool8 ScrCmd_setpokemove(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_checkpokemove(struct ScriptContext *ctx) +bool8 ScrCmd_checkpartymove(struct ScriptContext *ctx) { u8 i; u16 moveId = ScriptReadHalfword(ctx); gScriptResult = 6; - for (i = 0; i < 6; i++) + for (i = 0; i < PARTY_SIZE; i++) { u16 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES, NULL); if (!species) @@ -1692,19 +1692,19 @@ bool8 ScrCmd_trainerbattle(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_battlebegin(struct ScriptContext *ctx) +bool8 ScrCmd_trainerbattlebegin(struct ScriptContext *ctx) { BattleSetup_StartTrainerBattle(); return TRUE; } -bool8 ScrCmd_ontrainerbattleend(struct ScriptContext *ctx) +bool8 ScrCmd_gotopostbattlescript(struct ScriptContext *ctx) { ctx->scriptPtr = BattleSetup_GetScriptAddrAfterBattle(); return FALSE; } -bool8 ScrCmd_ontrainerbattleendgoto(struct ScriptContext *ctx) +bool8 ScrCmd_gotobeatenscript(struct ScriptContext *ctx) { ctx->scriptPtr = BattleSetup_GetTrainerPostBattleScript(); return FALSE; @@ -1760,7 +1760,7 @@ bool8 ScrCmd_pokemart(struct ScriptContext *ctx) return TRUE; } -bool8 ScrCmd_pokemartdecor(struct ScriptContext *ctx) +bool8 ScrCmd_pokemartdecoration(struct ScriptContext *ctx) { void *ptr = (void *)ScriptReadWord(ctx); @@ -1769,7 +1769,7 @@ bool8 ScrCmd_pokemartdecor(struct ScriptContext *ctx) return TRUE; } -bool8 ScrCmd_pokemartbp(struct ScriptContext *ctx) +bool8 ScrCmd_pokemartdecoration2(struct ScriptContext *ctx) { void *ptr = (void *)ScriptReadWord(ctx); @@ -1787,7 +1787,7 @@ bool8 ScrCmd_playslotmachine(struct ScriptContext *ctx) return TRUE; } -bool8 ScrCmd_plantberrytree(struct ScriptContext *ctx) +bool8 ScrCmd_setberrytree(struct ScriptContext *ctx) { u8 treeId = ScriptReadByte(ctx); u8 berry = ScriptReadByte(ctx); @@ -1808,7 +1808,7 @@ bool8 ScrCmd_getpricereduction(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_choosecontestpkmn(struct ScriptContext *ctx) +bool8 ScrCmd_choosecontestmon(struct ScriptContext *ctx) { sub_80F99CC(); ScriptContext1_Stop(); @@ -1845,7 +1845,7 @@ bool8 ScrCmd_dofieldeffect(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_setfieldeffect(struct ScriptContext *ctx) +bool8 ScrCmd_setfieldeffectargument(struct ScriptContext *ctx) { u8 argNum = ScriptReadByte(ctx); @@ -1868,7 +1868,7 @@ bool8 ScrCmd_waitfieldeffect(struct ScriptContext *ctx) return TRUE; } -bool8 ScrCmd_sethealplace(struct ScriptContext *ctx) +bool8 ScrCmd_setrespawn(struct ScriptContext *ctx) { u16 healLocationId = VarGet(ScriptReadHalfword(ctx)); @@ -1882,7 +1882,7 @@ bool8 ScrCmd_checkplayergender(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_playpokecry(struct ScriptContext *ctx) +bool8 ScrCmd_playmoncry(struct ScriptContext *ctx) { u16 species = VarGet(ScriptReadHalfword(ctx)); u16 mode = VarGet(ScriptReadHalfword(ctx)); @@ -1891,25 +1891,25 @@ bool8 ScrCmd_playpokecry(struct ScriptContext *ctx) return FALSE; } -bool8 ScrCmd_waitpokecry(struct ScriptContext *ctx) +bool8 ScrCmd_waitmoncry(struct ScriptContext *ctx) { SetupNativeScript(ctx, IsCryFinished); return TRUE; } -bool8 ScrCmd_setmaptile(struct ScriptContext *ctx) +bool8 ScrCmd_setmetatile(struct ScriptContext *ctx) { u16 x = VarGet(ScriptReadHalfword(ctx)); u16 y = VarGet(ScriptReadHalfword(ctx)); - u16 tileId = VarGet(ScriptReadHalfword(ctx)); + u16 metatileId = VarGet(ScriptReadHalfword(ctx)); u16 v8 = VarGet(ScriptReadHalfword(ctx)); x += 7; y += 7; if (!v8) - MapGridSetMetatileIdAt(x, y, tileId); + MapGridSetMetatileIdAt(x, y, metatileId); else - MapGridSetMetatileIdAt(x, y, tileId | 0xC00); + MapGridSetMetatileIdAt(x, y, metatileId | 0xC00); return FALSE; } -- cgit v1.2.3 From 754e911b4e95205bafa5dc93242da9cee3f2c5c6 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Thu, 21 Dec 2017 11:40:26 -0600 Subject: Rename gScript* vars to gSpecialVar_* --- src/field/battle_tower.c | 42 +++++++++++------------ src/field/berry.c | 8 ++--- src/field/berry_tag_screen.c | 14 ++++---- src/field/daycare.c | 4 +-- src/field/decoration.c | 4 +-- src/field/dewford_trend.c | 6 ++-- src/field/event_data.c | 6 ++-- src/field/field_control_avatar.c | 14 ++++---- src/field/field_poison.c | 6 ++-- src/field/field_screen_effect.c | 6 ++-- src/field/field_specials.c | 38 ++++++++++----------- src/field/fldeff_decoration.c | 10 +++--- src/field/fldeff_secretpower.c | 2 +- src/field/fldeff_strength.c | 6 ++-- src/field/item_menu.c | 70 ++++++++++++++++++------------------- src/field/item_use.c | 52 ++++++++++++++-------------- src/field/lottery_corner.c | 8 ++--- src/field/map_obj_lock.c | 4 +-- src/field/mauville_man.c | 24 ++++++------- src/field/party_menu.c | 4 +-- src/field/pokeblock.c | 32 ++++++++--------- src/field/safari_zone.c | 22 ++++++------ src/field/scrcmd.c | 62 ++++++++++++++++----------------- src/field/script_menu.c | 28 +++++++-------- src/field/secret_base.c | 36 +++++++++---------- src/field/start_menu.c | 6 ++-- src/field/starter_choose.c | 4 +-- src/field/trader.c | 10 +++--- src/field/tv.c | 74 ++++++++++++++++++++-------------------- src/field/use_pokeblock.c | 4 +-- src/field/wild_encounter.c | 8 ++--- 31 files changed, 307 insertions(+), 307 deletions(-) (limited to 'src/field') diff --git a/src/field/battle_tower.c b/src/field/battle_tower.c index db822f71b..6b6064c16 100644 --- a/src/field/battle_tower.c +++ b/src/field/battle_tower.c @@ -350,7 +350,7 @@ bool8 ShouldBattleEReaderTrainer(u8 levelType, u16 winStreak) ValidateEReaderTrainer(); - if (gScriptResult != 0 || gSaveBlock2.battleTower.ereaderTrainer.winStreak != winStreak) + if (gSpecialVar_Result != 0 || gSaveBlock2.battleTower.ereaderTrainer.winStreak != winStreak) { return FALSE; } @@ -1516,7 +1516,7 @@ void CheckPartyBattleTowerBanlist(void) level = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL); hp = GetMonData(&gPlayerParty[i], MON_DATA_HP); - CheckMonBattleTowerBanlist(species2, heldItem, hp, gScriptResult, level, validPartySpecies, validPartyHeldItems, &counter); + CheckMonBattleTowerBanlist(species2, heldItem, hp, gSpecialVar_Result, level, validPartySpecies, validPartyHeldItems, &counter); } if (counter < 3) @@ -1549,7 +1549,7 @@ void CheckPartyBattleTowerBanlist(void) else { gSpecialVar_0x8004 = 0; - gSaveBlock2.battleTower.battleTowerLevelType = gScriptResult; + gSaveBlock2.battleTower.battleTowerLevelType = gSpecialVar_Result; } } @@ -1700,7 +1700,7 @@ void sub_8135668(void) gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType]++; sub_8135A3C(); - gScriptResult = gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType]; + gSpecialVar_Result = gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType]; gStringVar1[0] = gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType] + 0xA1; gStringVar1[1] = 0xFF; @@ -1712,7 +1712,7 @@ void sub_8135668(void) } sub_8135A3C(); - gScriptResult = gSaveBlock2.battleTower.curStreakChallengesNum[battleTowerLevelType]; + gSpecialVar_Result = gSaveBlock2.battleTower.curStreakChallengesNum[battleTowerLevelType]; break; case 8: gSaveBlock2.battleTower.unk_554 = gSpecialVar_0x8005; @@ -1747,29 +1747,29 @@ void sub_81358A4(void) switch (gSpecialVar_0x8004) { case 0: - gScriptResult = gSaveBlock2.battleTower.var_4AE[battleTowerLevelType]; + gSpecialVar_Result = gSaveBlock2.battleTower.var_4AE[battleTowerLevelType]; break; case 1: - gScriptResult = gSaveBlock2.battleTower.battleTowerLevelType; + gSpecialVar_Result = gSaveBlock2.battleTower.battleTowerLevelType; break; case 2: - gScriptResult = gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType]; + gSpecialVar_Result = gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType]; break; case 3: - gScriptResult = gSaveBlock2.battleTower.curStreakChallengesNum[battleTowerLevelType]; + gSpecialVar_Result = gSaveBlock2.battleTower.curStreakChallengesNum[battleTowerLevelType]; break; case 4: - gScriptResult = gSaveBlock2.battleTower.battleTowerTrainerId; + gSpecialVar_Result = gSaveBlock2.battleTower.battleTowerTrainerId; break; case 5: case 6: case 7: break; case 8: - gScriptResult = gSaveBlock2.battleTower.unk_554; + gSpecialVar_Result = gSaveBlock2.battleTower.unk_554; break; case 9: - gScriptResult = GetCurrentBattleTowerWinStreak(battleTowerLevelType); + gSpecialVar_Result = GetCurrentBattleTowerWinStreak(battleTowerLevelType); break; case 10: SetGameStat(GAME_STAT_BATTLE_TOWER_BEST_STREAK, gSaveBlock2.battleTower.bestBattleTowerWinStreak); @@ -2149,11 +2149,11 @@ void GiveBattleTowerPrize(void) if (AddBagItem(gSaveBlock2.battleTower.prizeItem, 1) == TRUE) { CopyItemName(gSaveBlock2.battleTower.prizeItem, gStringVar1); - gScriptResult = 1; + gSpecialVar_Result = 1; } else { - gScriptResult = 0; + gSpecialVar_Result = 0; gSaveBlock2.battleTower.var_4AE[battleTowerLevelType] = 6; } } @@ -2172,7 +2172,7 @@ void AwardBattleTowerRibbons(void) ribbonType = MON_DATA_VICTORY_RIBBON; } - gScriptResult = 0; + gSpecialVar_Result = 0; if (GetCurrentBattleTowerWinStreak(battleTowerLevelType) > 55) { @@ -2182,13 +2182,13 @@ void AwardBattleTowerRibbons(void) pokemon = &gPlayerParty[partyIndex]; if (!GetMonData(pokemon, ribbonType)) { - gScriptResult = 1; - SetMonData(pokemon, ribbonType, &gScriptResult); + gSpecialVar_Result = 1; + SetMonData(pokemon, ribbonType, &gSpecialVar_Result); } } } - if (gScriptResult != 0) + if (gSpecialVar_Result != 0) { IncrementGameStat(GAME_STAT_RECEIVED_RIBBONS); } @@ -2266,7 +2266,7 @@ void ValidateEReaderTrainer(void) u32 checksum; struct BattleTowerEReaderTrainer *ereaderTrainer; - gScriptResult = 0; + gSpecialVar_Result = 0; ereaderTrainer = &gSaveBlock2.battleTower.ereaderTrainer; checksum = 0; @@ -2277,7 +2277,7 @@ void ValidateEReaderTrainer(void) if (checksum == 0) { - gScriptResult = 1; + gSpecialVar_Result = 1; return; } @@ -2290,7 +2290,7 @@ void ValidateEReaderTrainer(void) if (gSaveBlock2.battleTower.ereaderTrainer.checksum != checksum) { ClearEReaderTrainer(&gSaveBlock2.battleTower.ereaderTrainer); - gScriptResult = 1; + gSpecialVar_Result = 1; } } diff --git a/src/field/berry.c b/src/field/berry.c index 874a60aa7..088267ad0 100644 --- a/src/field/berry.c +++ b/src/field/berry.c @@ -981,7 +981,7 @@ const struct Berry gBerries[] = static const struct BerryTree gBlankBerryTree = {0}; extern u8 S_BerryTree[]; -extern u16 gScriptLastTalked; +extern u16 gSpecialVar_LastTalked; extern u16 gSpecialVar_0x8004; extern u16 gSpecialVar_0x8005; extern u16 gSpecialVar_0x8006; @@ -1368,7 +1368,7 @@ void FieldObjectInteractionGetBerryTreeData(void) id = FieldObjectGetBerryTreeId(gSelectedMapObject); berry = GetBerryTypeByBerryTreeId(id); ResetBerryTreeSparkleFlag(id); - localId = gScriptLastTalked; + localId = gSpecialVar_LastTalked; num = gSaveBlock1.location.mapNum; group = gSaveBlock1.location.mapGroup; if (IsBerryTreeSparkling(localId, num, group)) @@ -1392,7 +1392,7 @@ void Berry_FadeAndGoToBerryBagMenu(void) void FieldObjectInteractionPlantBerryTree(void) { - u8 berry = ItemIdToBerryType(gScriptItemId); + u8 berry = ItemIdToBerryType(gSpecialVar_ItemId); PlantBerryTree(FieldObjectGetBerryTreeId(gSelectedMapObject), berry, 1, TRUE); FieldObjectInteractionGetBerryTreeData(); @@ -1409,7 +1409,7 @@ void FieldObjectInteractionPickBerryTree(void) void FieldObjectInteractionRemoveBerryTree(void) { RemoveBerryTree(FieldObjectGetBerryTreeId(gSelectedMapObject)); - sub_8060288(gScriptLastTalked, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); + sub_8060288(gSpecialVar_LastTalked, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); } bool8 PlayerHasBerries(void) diff --git a/src/field/berry_tag_screen.c b/src/field/berry_tag_screen.c index 694599680..2abbac287 100644 --- a/src/field/berry_tag_screen.c +++ b/src/field/berry_tag_screen.c @@ -133,12 +133,12 @@ static bool8 sub_8146058(void) gMain.state += 1; break; case 8: - berry = gScriptItemId + OFFSET_7B; + berry = gSpecialVar_ItemId + OFFSET_7B; gUnknown_0203932C = CreateBerrySprite(berry, 56, 64); gMain.state += 1; break; case 9: - sub_8146600(gScriptItemId + OFFSET_7B); + sub_8146600(gSpecialVar_ItemId + OFFSET_7B); gMain.state += 1; break; case 10: @@ -277,9 +277,9 @@ static void sub_81464E4(void) u8 buffer[16]; #endif - berryInfo = GetBerryInfo(gScriptItemId + OFFSET_7B + 1); + berryInfo = GetBerryInfo(gSpecialVar_ItemId + OFFSET_7B + 1); - ConvertIntToDecimalStringN(gStringVar1, gScriptItemId - FIRST_BERRY + 1, STR_CONV_MODE_LEADING_ZEROS, 2); + ConvertIntToDecimalStringN(gStringVar1, gSpecialVar_ItemId - FIRST_BERRY + 1, STR_CONV_MODE_LEADING_ZEROS, 2); MenuPrint(gStringVar1, 12, 4); #if ENGLISH @@ -437,7 +437,7 @@ static void sub_8146810(s8 berry) gBagPocketScrollStates[berryPocket].cursorPos += berry; } } - gScriptItemId = gCurrentBagPocketItemSlots[gBagPocketScrollStates[berryPocket].scrollTop + gBagPocketScrollStates[berryPocket].cursorPos].itemId; + gSpecialVar_ItemId = gCurrentBagPocketItemSlots[gBagPocketScrollStates[berryPocket].scrollTop + gBagPocketScrollStates[berryPocket].cursorPos].itemId; DestroySprite(&gSprites[gUnknown_0203932C]); sub_81466A0(); sub_80A7DD4(); @@ -449,7 +449,7 @@ static void sub_81468BC(void) sub_81464E4(); // center of berry sprite - gUnknown_0203932C = CreateBerrySprite(gScriptItemId + OFFSET_7B, 56, 64); + gUnknown_0203932C = CreateBerrySprite(gSpecialVar_ItemId + OFFSET_7B, 56, 64); - sub_8146600(gScriptItemId + OFFSET_7B); + sub_8146600(gSpecialVar_ItemId + OFFSET_7B); } diff --git a/src/field/daycare.c b/src/field/daycare.c index 9ac63b3c7..c28bc65ca 100644 --- a/src/field/daycare.c +++ b/src/field/daycare.c @@ -1758,7 +1758,7 @@ static void HandleDaycareLevelMenuInput(u8 taskId) { HandleDestroyMenuCursors(); PlaySE(SE_SELECT); - gLastFieldPokeMenuOpened = gScriptResult = gTasks[taskId].data[0]; + gLastFieldPokeMenuOpened = gSpecialVar_Result = gTasks[taskId].data[0]; DestroyTask(taskId); MenuZeroFillWindowRect(15, 6, 29, 13); EnableBothScriptContexts(); @@ -1766,7 +1766,7 @@ static void HandleDaycareLevelMenuInput(u8 taskId) else if (gMain.newKeys & B_BUTTON) { HandleDestroyMenuCursors(); - gLastFieldPokeMenuOpened = gScriptResult = 2; + gLastFieldPokeMenuOpened = gSpecialVar_Result = 2; DestroyTask(taskId); MenuZeroFillWindowRect(15, 6, 29, 13); EnableBothScriptContexts(); diff --git a/src/field/decoration.c b/src/field/decoration.c index c36c10a08..8b774afc3 100644 --- a/src/field/decoration.c +++ b/src/field/decoration.c @@ -3647,10 +3647,10 @@ void sub_8100A7C(void) { u16 i; gSpecialVar_0x8005 = 0; - gScriptResult = 0; + gSpecialVar_Result = 0; if (gSpecialVar_0x8004 == gUnknown_02039234) { - gScriptResult = 1; + gSpecialVar_Result = 1; } else if (gDecorations[ewram_1f000.items[gUnknown_020391B4[gSpecialVar_0x8004].decorId]].permission == DECORPERM_SOLID_MAT) { gSpecialVar_0x8005 = gUnknown_020391B4[gSpecialVar_0x8004].flagId; diff --git a/src/field/dewford_trend.c b/src/field/dewford_trend.c index b36459655..b67f3a2bd 100644 --- a/src/field/dewford_trend.c +++ b/src/field/dewford_trend.c @@ -8,7 +8,7 @@ #include "text.h" #include "ewram.h" -extern u16 gScriptResult; +extern u16 gSpecialVar_Result; extern u16 gSpecialVar_0x8004; static void sub_80FA46C(struct EasyChatPair *s, u16 b, u8 c); @@ -219,12 +219,12 @@ void sub_80FA5E4(void) if (!gSaveBlock1.easyChatPairs[0].unk1_6 && gSaveBlock1.easyChatPairs[1].unk1_6) result = 1; } - gScriptResult = result; + gSpecialVar_Result = result; } void sub_80FA648(void) { - gScriptResult = (gSaveBlock1.easyChatPairs[0].words[0] + gSaveBlock1.easyChatPairs[0].words[1]) & 7; + gSpecialVar_Result = (gSaveBlock1.easyChatPairs[0].words[0] + gSaveBlock1.easyChatPairs[0].words[1]) & 7; } static bool8 sub_80FA670(struct EasyChatPair *a, struct EasyChatPair *b, u8 c) diff --git a/src/field/event_data.c b/src/field/event_data.c index 3b3ac7bca..587da8138 100644 --- a/src/field/event_data.c +++ b/src/field/event_data.c @@ -18,9 +18,9 @@ EWRAM_DATA u16 gSpecialVar_0x8008 = 0; EWRAM_DATA u16 gSpecialVar_0x8009 = 0; EWRAM_DATA u16 gSpecialVar_0x800A = 0; EWRAM_DATA u16 gSpecialVar_0x800B = 0; -EWRAM_DATA u16 gScriptResult = 0; -EWRAM_DATA u16 gScriptLastTalked = 0; -EWRAM_DATA u16 gScriptFacing = 0; +EWRAM_DATA u16 gSpecialVar_Result = 0; +EWRAM_DATA u16 gSpecialVar_LastTalked = 0; +EWRAM_DATA u16 gSpecialVar_Facing = 0; EWRAM_DATA u8 gUnknown_0202E8E2[16] = {0}; extern u16 *gSpecialVars[]; diff --git a/src/field/field_control_avatar.c b/src/field/field_control_avatar.c index dd29e9df5..cd7d3a2e2 100644 --- a/src/field/field_control_avatar.c +++ b/src/field/field_control_avatar.c @@ -30,8 +30,8 @@ struct Coords32 s32 y; }; -extern u16 gScriptLastTalked; -extern u16 gScriptFacing; +extern u16 gSpecialVar_LastTalked; +extern u16 gSpecialVar_Facing; extern struct LinkPlayerMapObject gLinkPlayerMapObjects[]; extern u16 gSpecialVar_0x8004; extern u16 gSpecialVar_0x8005; @@ -295,8 +295,8 @@ u8 *sub_80682A8(struct MapPosition *position, u8 unused, u8 c) return NULL; } gSelectedMapObject = r3; - gScriptLastTalked = gMapObjects[r3].localId; - gScriptFacing = c; + gSpecialVar_LastTalked = gMapObjects[r3].localId; + gSpecialVar_Facing = c; return GetFieldObjectScriptPointerByFieldObjectId(r3); } @@ -316,10 +316,10 @@ static u8 *sub_8068364(struct MapPosition *position, u8 b, u8 c) } //_080683E8 gSelectedMapObject = r3; - gScriptLastTalked = gMapObjects[r3].localId; - gScriptFacing = c; + gSpecialVar_LastTalked = gMapObjects[r3].localId; + gSpecialVar_Facing = c; script = GetFieldObjectScriptPointerByFieldObjectId(r3); - script = GetRamScript(gScriptLastTalked, script); + script = GetRamScript(gSpecialVar_LastTalked, script); return script; } diff --git a/src/field/field_poison.c b/src/field/field_poison.c index 74d70cb36..49678f269 100644 --- a/src/field/field_poison.c +++ b/src/field/field_poison.c @@ -9,7 +9,7 @@ #include "task.h" #include "text.h" -extern u16 gScriptResult; +extern u16 gSpecialVar_Result; extern u8 fieldPoisonText_PokemonFainted[]; bool32 CheckMonIsValid(struct Pokemon *pkmn) @@ -93,9 +93,9 @@ void Task_WhiteOut(u8 taskId) break; case 2: //Done checking Pokemon if (AllMonsFainted()) - gScriptResult = 1; + gSpecialVar_Result = 1; else - gScriptResult = 0; + gSpecialVar_Result = 0; EnableBothScriptContexts(); DestroyTask(taskId); break; diff --git a/src/field/field_screen_effect.c b/src/field/field_screen_effect.c index a18190809..a472d5a9c 100644 --- a/src/field/field_screen_effect.c +++ b/src/field/field_screen_effect.c @@ -283,17 +283,17 @@ void sub_80818A4(void) u8 taskId = CreateTask(sub_80816A8, 80); s16 *data = gTasks[taskId].data; - if (gScriptResult == 0) + if (gSpecialVar_Result == 0) { data[1] = 0; data[2] = 104; } - else if (gScriptResult == 1) + else if (gSpecialVar_Result == 1) { data[1] = 1; data[2] = 104; } - else if (gScriptResult == 2) + else if (gSpecialVar_Result == 2) { data[1] = 0; data[2] = 120; diff --git a/src/field/field_specials.c b/src/field/field_specials.c index 78c60c94e..87a9e2d5d 100644 --- a/src/field/field_specials.c +++ b/src/field/field_specials.c @@ -46,7 +46,7 @@ extern struct WarpData gUnknown_020297F0; extern u8 gBattleOutcome; extern u16 gSpecialVar_0x8004; extern u16 gSpecialVar_0x8005; -extern u16 gScriptResult; +extern u16 gSpecialVar_Result; extern u8 *const gUnknown_083D1464[3]; @@ -169,7 +169,7 @@ static void DetermineCyclingRoadResults(u32 arg0, u8 arg1) } - gScriptResult = result; + gSpecialVar_Result = result; } void FinishCyclingRoadChallenge(void) { @@ -1112,17 +1112,17 @@ void sub_810E984(u8 taskId) saved_warp2_set_2(0, gUnknown_03000760[gUnknown_0203925B].var1, gUnknown_03000760[gUnknown_0203925B].var2, -1, 2, 1); if (gSpecialVar_0x8005 == gUnknown_0203925B) { - gScriptResult = 0; + gSpecialVar_Result = 0; PlaySE(SE_SELECT); MenuZeroFillWindowRect(0, 0, 29, 12); sub_810EC9C(taskId); } else { - gScriptResult = 1; + gSpecialVar_Result = 1; gSpecialVar_0x8005 = gUnknown_0203925B; sub_810EBEC(); - FieldObjectTurnByLocalIdAndMap(gScriptLastTalked, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, DIR_SOUTH); + FieldObjectTurnByLocalIdAndMap(gSpecialVar_LastTalked, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, DIR_SOUTH); sub_810EEDC(); MenuZeroFillScreen(); DestroyTask(taskId); @@ -1130,7 +1130,7 @@ void sub_810E984(u8 taskId) } else if (gMain.newKeys & B_BUTTON) { - gScriptResult = 0; + gSpecialVar_Result = 0; PlaySE(SE_SELECT); sub_810EEDC(); MenuZeroFillWindowRect(0, 0, 29, 12); @@ -1516,12 +1516,12 @@ void IsGrassTypeInParty(void) species = GetMonData(pokemon, MON_DATA_SPECIES); if (gBaseStats[species].type1 == TYPE_GRASS || gBaseStats[species].type2 == TYPE_GRASS) { - gScriptResult = TRUE; + gSpecialVar_Result = TRUE; return; } } } - gScriptResult = FALSE; + gSpecialVar_Result = FALSE; } const u8 *const gUnknown_083F83C0[] = { @@ -1579,7 +1579,7 @@ void sub_810F118(u8 taskId) if (gMain.newKeys & A_BUTTON) { HandleDestroyMenuCursors(); - gScriptResult = gUnknown_0203925B; + gSpecialVar_Result = gUnknown_0203925B; PlaySE(SE_SELECT); sub_810EEDC(); MenuZeroFillWindowRect(0, 0, 29, 12); @@ -1588,7 +1588,7 @@ void sub_810F118(u8 taskId) if (gMain.newKeys & B_BUTTON) { HandleDestroyMenuCursors(); - gScriptResult = 0x7f; + gSpecialVar_Result = 0x7f; PlaySE(SE_SELECT); sub_810EEDC(); MenuZeroFillWindowRect(0, 0, 29, 12); @@ -2077,27 +2077,27 @@ bool8 sub_810F96C(void) void sub_810F9AC(void) { - if (gScriptResult >= 10000) + if (gSpecialVar_Result >= 10000) { - sub_80BF088(0, gScriptResult); + sub_80BF088(0, gSpecialVar_Result); } - else if (gScriptResult >= 1000) + else if (gSpecialVar_Result >= 1000) { gStringVar1[0] = CHAR_0; - ConvertIntToDecimalStringN(gStringVar1 + 1, gScriptResult, 0, sub_80BF0B8(gScriptResult)); + ConvertIntToDecimalStringN(gStringVar1 + 1, gSpecialVar_Result, 0, sub_80BF0B8(gSpecialVar_Result)); } - else if (gScriptResult >= 100) + else if (gSpecialVar_Result >= 100) { gStringVar1[0] = CHAR_0; gStringVar1[1] = CHAR_0; - ConvertIntToDecimalStringN(gStringVar1 + 2, gScriptResult, 0, sub_80BF0B8(gScriptResult)); + ConvertIntToDecimalStringN(gStringVar1 + 2, gSpecialVar_Result, 0, sub_80BF0B8(gSpecialVar_Result)); } - else if (gScriptResult >= 10) + else if (gSpecialVar_Result >= 10) { gStringVar1[0] = CHAR_0; gStringVar1[1] = CHAR_0; gStringVar1[2] = CHAR_0; - ConvertIntToDecimalStringN(gStringVar1 + 3, gScriptResult, 0, sub_80BF0B8(gScriptResult)); + ConvertIntToDecimalStringN(gStringVar1 + 3, gSpecialVar_Result, 0, sub_80BF0B8(gSpecialVar_Result)); } else { @@ -2105,7 +2105,7 @@ void sub_810F9AC(void) gStringVar1[1] = CHAR_0; gStringVar1[2] = CHAR_0; gStringVar1[3] = CHAR_0; - ConvertIntToDecimalStringN(gStringVar1 + 4, gScriptResult, 0, sub_80BF0B8(gScriptResult)); + ConvertIntToDecimalStringN(gStringVar1 + 4, gSpecialVar_Result, 0, sub_80BF0B8(gSpecialVar_Result)); } } diff --git a/src/field/fldeff_decoration.c b/src/field/fldeff_decoration.c index 7c8ff44db..37f024b9f 100644 --- a/src/field/fldeff_decoration.c +++ b/src/field/fldeff_decoration.c @@ -344,21 +344,21 @@ void GetShieldToyTVDecorationInfo(void) case 822: ConvertIntToDecimalStringN(gStringVar1, 100, STR_CONV_MODE_LEFT_ALIGN, 3); StringCopy(gStringVar2, gSecretBaseText_GoldRank); - gScriptResult = 0; + gSpecialVar_Result = 0; break; case 734: ConvertIntToDecimalStringN(gStringVar1, 50, STR_CONV_MODE_LEFT_ALIGN, 2); StringCopy(gStringVar2, gSecretBaseText_SilverRank); - gScriptResult = 0; + gSpecialVar_Result = 0; break; case 756: - gScriptResult = 1; + gSpecialVar_Result = 1; break; case 757: - gScriptResult = 2; + gSpecialVar_Result = 2; break; case 758: - gScriptResult = 3; + gSpecialVar_Result = 3; break; } } diff --git a/src/field/fldeff_secretpower.c b/src/field/fldeff_secretpower.c index 9bcfaa8c4..bf8e98403 100644 --- a/src/field/fldeff_secretpower.c +++ b/src/field/fldeff_secretpower.c @@ -249,7 +249,7 @@ bool8 SetUpFieldMove_SecretPower(void) sub_80BB63C(); - if (gScriptResult == 1 || player_get_direction_lower_nybble() != DIR_NORTH) + if (gSpecialVar_Result == 1 || player_get_direction_lower_nybble() != DIR_NORTH) return FALSE; GetXYCoordsOneStepInFrontOfPlayer(&gUnknown_0203923C.x, &gUnknown_0203923C.y); diff --git a/src/field/fldeff_strength.c b/src/field/fldeff_strength.c index d9603d094..565ac1651 100644 --- a/src/field/fldeff_strength.c +++ b/src/field/fldeff_strength.c @@ -14,7 +14,7 @@ static void sub_811AA38(void); static void sub_811AA9C(void); extern u8 gLastFieldPokeMenuOpened; -extern u16 gScriptResult; +extern u16 gSpecialVar_Result; extern void (*gFieldCallback)(void); extern void (*gUnknown_03005CE4)(void); @@ -24,7 +24,7 @@ bool8 SetUpFieldMove_Strength(void) { if (ShouldDoBrailleStrengthEffect()) { - gScriptResult = gLastFieldPokeMenuOpened; + gSpecialVar_Result = gLastFieldPokeMenuOpened; gFieldCallback = FieldCallback_Teleport; gUnknown_03005CE4 = sub_811AA38; } @@ -32,7 +32,7 @@ bool8 SetUpFieldMove_Strength(void) { if (npc_before_player_of_type(87) != TRUE) return 0; - gScriptResult = gLastFieldPokeMenuOpened; + gSpecialVar_Result = gLastFieldPokeMenuOpened; gFieldCallback = FieldCallback_Teleport; gUnknown_03005CE4 = sub_811AA18; } diff --git a/src/field/item_menu.c b/src/field/item_menu.c index 8f7cb3d90..4e283ffe9 100644 --- a/src/field/item_menu.c +++ b/src/field/item_menu.c @@ -138,7 +138,7 @@ EWRAM_DATA static s8 sCurrentBagPocket = 0; EWRAM_DATA static u8 gUnknown_0203855A = 0; EWRAM_DATA static s8 gUnknown_0203855B = 0; EWRAM_DATA static s8 gUnknown_0203855C = 0; -EWRAM_DATA u16 gScriptItemId = 0; +EWRAM_DATA u16 gSpecialVar_ItemId = 0; EWRAM_DATA u8 gUnknown_02038560 = 0; EWRAM_DATA u8 gUnknown_02038561 = 0; EWRAM_DATA static u8 gUnknown_02038562 = 0; @@ -1662,7 +1662,7 @@ static void sub_80A4BF0(u16 *a) const u8 *text; if (i == 0) - text = sub_80A4B90(gScriptItemId); + text = sub_80A4B90(gSpecialVar_ItemId); else text = sItemPopupMenuActions[sPopupMenuActionList[i]].text; MenuPrint(text, 1 + (i / 2) * 6, 8 + (i % 2) * 2); @@ -1849,7 +1849,7 @@ static void sub_80A50C8(u8 taskId) { if (r5[10] == 0) { - gScriptItemId = 0; + gSpecialVar_ItemId = 0; gUnknown_083C16BC[sReturnLocation].onBagClose(taskId); } else @@ -1864,7 +1864,7 @@ static void sub_80A50C8(u8 taskId) { PlaySE(SE_SELECT); gUnknown_02038560 = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos; - gScriptItemId = gCurrentBagPocketItemSlots[gUnknown_02038560].itemId; + gSpecialVar_ItemId = gCurrentBagPocketItemSlots[gUnknown_02038560].itemId; gUnknown_083C16BC[sReturnLocation].onItemSelect(taskId); sub_80F98A4(0); sub_80F98A4(1); @@ -1887,7 +1887,7 @@ static void sub_80A50C8(u8 taskId) { if (sReturnLocation != RETURN_TO_FIELD_5) { - gScriptItemId = 0; + gSpecialVar_ItemId = 0; gUnknown_083C16BC[sReturnLocation].onBagClose(taskId); } } @@ -2527,7 +2527,7 @@ static void sub_80A57C4(void) gUnknown_02038564 = 1; r5 = 9; } - else if (sub_80F92F4(gScriptItemId) == 0) + else if (sub_80F92F4(gSpecialVar_ItemId) == 0) { sPopupMenuActionList = gUnknown_083C16AE[4]; gUnknown_02038564 = 1; @@ -2654,10 +2654,10 @@ void sub_80A5B40(void) static void HandlePopupMenuAction_UseOnField(u8 taskId) { - if (ItemId_GetFieldFunc(gScriptItemId) != NULL) + if (ItemId_GetFieldFunc(gSpecialVar_ItemId) != NULL) { PlaySE(SE_SELECT); - if (CalculatePlayerPartyCount() == 0 && ItemId_GetType(gScriptItemId) == 1) + if (CalculatePlayerPartyCount() == 0 && ItemId_GetType(gSpecialVar_ItemId) == 1) { sub_80A5BF8(taskId); } @@ -2665,7 +2665,7 @@ static void HandlePopupMenuAction_UseOnField(u8 taskId) { gTasks[taskId].data[2] = 0; if (sCurrentBagPocket != BAG_POCKET_BERRIES) - ItemId_GetFieldFunc(gScriptItemId)(taskId); + ItemId_GetFieldFunc(gSpecialVar_ItemId)(taskId); else sub_80C9C7C(taskId); } @@ -2793,7 +2793,7 @@ static void sub_80A5EA0(u8 taskId) if (gMain.newKeys & A_BUTTON) { PlaySE(SE_SELECT); - sub_80A5DA0(gScriptItemId, gTasks[taskId].data[1]); + sub_80A5DA0(gSpecialVar_ItemId, gTasks[taskId].data[1]); DoYesNoFuncWithChoice(taskId, &gUnknown_083C16F4); } else if (gMain.newKeys & B_BUTTON) @@ -2827,7 +2827,7 @@ static void sub_80A5F80(u8 taskId) static void HandlePopupMenuAction_Register(u8 taskId) { PlaySE(SE_SELECT); - if (gSaveBlock1.registeredItem == gScriptItemId) + if (gSaveBlock1.registeredItem == gSpecialVar_ItemId) { // Un-register the registered item RemoveSelectIconFromRegisteredItem(); @@ -2836,7 +2836,7 @@ static void HandlePopupMenuAction_Register(u8 taskId) else { AddSelectIconToRegisteredItem(); - gSaveBlock1.registeredItem = gScriptItemId; + gSaveBlock1.registeredItem = gSpecialVar_ItemId; } sub_80A7528(0); sub_80A41D4(taskId); @@ -2865,7 +2865,7 @@ static void sub_80A6024(u8 taskId) static void DisplayCannotBeHeldMessage(u8 taskId) { sub_80A73FC(); - CopyItemName(gScriptItemId, gStringVar1); + CopyItemName(gSpecialVar_ItemId, gStringVar1); StringExpandPlaceholders(gStringVar4, gOtherText_CantBeHeld); sub_80A7590(); DisplayCannotUseItemMessage(taskId, gStringVar4, sub_80A6024, 1); @@ -2874,13 +2874,13 @@ static void DisplayCannotBeHeldMessage(u8 taskId) static void HandlePopupMenuAction_Give(u8 taskId) { PlaySE(SE_SELECT); - if (sub_80F931C(gScriptItemId) == 0) + if (sub_80F931C(gSpecialVar_ItemId) == 0) { sub_80A73FC(); sub_80A7590(); DisplayCannotUseItemMessage(taskId, gOtherText_CantWriteMail, sub_80A6024, 1); } - else if (ItemId_GetImportance(gScriptItemId) == 0) + else if (ItemId_GetImportance(gSpecialVar_ItemId) == 0) { if (CalculatePlayerPartyCount() == 0) { @@ -2931,21 +2931,21 @@ static void OnItemSelect_PkmnList(u8 taskId) { u8 r6 = sCurrentBagPocket + 1; - if (sub_80F931C(gScriptItemId) == 0) + if (sub_80F931C(gSpecialVar_ItemId) == 0) { sub_80A73FC(); sub_80A7590(); DisplayCannotUseItemMessage(taskId, gOtherText_CantWriteMail, sub_80A6024, 1); } - else if (sub_80F92F4(gScriptItemId) == 0) + else if (sub_80F92F4(gSpecialVar_ItemId) == 0) { sub_80A73FC(); - CopyItemName(gScriptItemId, gStringVar1); + CopyItemName(gSpecialVar_ItemId, gStringVar1); StringExpandPlaceholders(gStringVar4, gOtherText_CantBeHeldHere); sub_80A7590(); DisplayCannotUseItemMessage(taskId, gStringVar4, sub_80A6024, 1); } - else if (r6 != 5 && ItemId_GetImportance(gScriptItemId) == 0) + else if (r6 != 5 && ItemId_GetImportance(gSpecialVar_ItemId) == 0) { gTasks[taskId].data[8] = (u32)sub_808A3F8 >> 16; gTasks[taskId].data[9] = (u32)sub_808A3F8; @@ -2983,8 +2983,8 @@ static void OnItemSelect_Shop(u8 taskId) gTasks[taskId].data[10] = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos + 1; sub_80A48E8(taskId, gBagPocketScrollStates[sCurrentBagPocket].cursorPos, gBagPocketScrollStates[sCurrentBagPocket].cursorPos); sub_80A73FC(); - CopyItemName(gScriptItemId, gStringVar2); - if (ItemId_GetPrice(gScriptItemId) == 0) + CopyItemName(gSpecialVar_ItemId, gStringVar2); + if (ItemId_GetPrice(gSpecialVar_ItemId) == 0) { StringExpandPlaceholders(gStringVar4, gOtherText_CantBuyThat); DisplayCannotUseItemMessage(taskId, gStringVar4, sub_80A6444, 1); @@ -3025,7 +3025,7 @@ static void sub_80A648C(u8 taskId) sub_80A418C(1, 1, 1, 11, 3); else sub_80A418C(1, 1, 1, 11, 2); - BuyMenuDisplayMessage(gScriptItemId, 1); + BuyMenuDisplayMessage(gSpecialVar_ItemId, 1); sub_80A683C(); } @@ -3047,7 +3047,7 @@ static void sub_80A6548(u8 taskId) static void sub_80A6574(u8 taskId) { PlaySE(SE_REGI); - sub_80A6870(gScriptItemId, gTasks[taskId].data[1]); + sub_80A6870(gSpecialVar_ItemId, gTasks[taskId].data[1]); gTasks[taskId].func = sub_80A6548; } @@ -3055,7 +3055,7 @@ static void sub_80A65AC(u8 taskId) { MenuZeroFillWindowRect(7, 6, 13, 12); sub_80A36B8(gBGTilemapBuffers[1], 7, 6, 6, 6); - CopyItemName(gScriptItemId, gStringVar2); + CopyItemName(gSpecialVar_ItemId, gStringVar2); StringExpandPlaceholders(gStringVar4, gOtherText_SoldItem); DisplayCannotUseItemMessage(taskId, gStringVar4, sub_80A6574, 1); sub_80A3D5C(taskId); @@ -3079,14 +3079,14 @@ static void Task_BuyHowManyDialogueHandleInput(u8 taskId) if (sub_80A5350(taskId) == TRUE) { MenuZeroFillWindowRect(6, 11, 12, 11); - BuyMenuDisplayMessage(gScriptItemId, gTasks[taskId].data[1]); + BuyMenuDisplayMessage(gSpecialVar_ItemId, gTasks[taskId].data[1]); } else if (gMain.newKeys & A_BUTTON) { PlaySE(SE_SELECT); MenuZeroFillWindowRect(0, 10, 13, 13); sub_80A36B8(gBGTilemapBuffers[1], 0, 10, 13, 3); - ConvertIntToDecimalStringN(gStringVar1, ItemId_GetPrice(gScriptItemId) / 2 * gTasks[taskId].data[1], STR_CONV_MODE_LEFT_ALIGN, 6); + ConvertIntToDecimalStringN(gStringVar1, ItemId_GetPrice(gSpecialVar_ItemId) / 2 * gTasks[taskId].data[1], STR_CONV_MODE_LEFT_ALIGN, 6); StringExpandPlaceholders(gStringVar4, gOtherText_CanPay); DisplayCannotUseItemMessage(taskId, gStringVar4, sub_80A6650, 1); } @@ -3227,7 +3227,7 @@ static void sub_80A6A84(u8 taskId) s16 *taskData = gTasks[taskId].data; sub_80A4DA4(gBGTilemapBuffers[1]); - CopyItemName(gScriptItemId, gStringVar1); + CopyItemName(gSpecialVar_ItemId, gStringVar1); ConvertIntToDecimalStringN(gStringVar2, taskData[1], STR_CONV_MODE_LEFT_ALIGN, 3); MenuZeroFillWindowRect(7, 6, 11, 13); sub_80A7528(7); @@ -3250,14 +3250,14 @@ static void sub_80A6B64(u8 taskId) { s16 *taskData = gTasks[taskId].data; - if (ItemId_GetImportance(gScriptItemId) == 2) + if (ItemId_GetImportance(gSpecialVar_ItemId) == 2) { gTasks[taskId].func = sub_80A6B00; sub_80A7528(9); } else { - if (AddPCItem(gScriptItemId, taskData[1]) == TRUE) + if (AddPCItem(gSpecialVar_ItemId, taskData[1]) == TRUE) { sub_80A6A84(taskId); } @@ -3325,7 +3325,7 @@ bool32 sub_80A6D1C(void) FreezeMapObjects(); sub_80594C0(); sub_80597F4(); - gScriptItemId = gSaveBlock1.registeredItem; + gSpecialVar_ItemId = gSaveBlock1.registeredItem; taskId = CreateTask(ItemId_GetFieldFunc(gSaveBlock1.registeredItem), 8); gTasks[taskId].data[2] = 1; return TRUE; @@ -3415,7 +3415,7 @@ static const u8 gUnknown_083C170A[] = {5, 0}; static void sub_80A6FDC(void) { - if (ItemId_GetBattleUsage(gScriptItemId) != 0) + if (ItemId_GetBattleUsage(gSpecialVar_ItemId) != 0) { sPopupMenuActionList = gUnknown_083C1708; gUnknown_02038564 = 2; @@ -3454,10 +3454,10 @@ static void OnBagClose_Battle(u8 taskId) static void HandlePopupMenuAction_UseInBattle(u8 taskId) { - if (ItemId_GetBattleFunc(gScriptItemId) != NULL) + if (ItemId_GetBattleFunc(gSpecialVar_ItemId) != NULL) { PlaySE(SE_SELECT); - ItemId_GetBattleFunc(gScriptItemId)(taskId); + ItemId_GetBattleFunc(gSpecialVar_ItemId)(taskId); } } @@ -3525,7 +3525,7 @@ static void sub_80A7230(u8 taskId) PlaySE(SE_SELECT); sub_80F98A4(2); sub_80F98A4(3); - gScriptItemId = ITEM_POKE_BALL; + gSpecialVar_ItemId = ITEM_POKE_BALL; sPopupMenuActionList = gUnknown_083C1708; gUnknown_02038564 = 2; gTasks[taskId].data[10] = gBagPocketScrollStates[sCurrentBagPocket].scrollTop + gBagPocketScrollStates[sCurrentBagPocket].cursorPos + 1; @@ -3824,7 +3824,7 @@ static void sub_80A7768(void) int var; if (r4->unk1 == 1) - text = sub_80A4B90(gScriptItemId); + text = sub_80A4B90(gSpecialVar_ItemId); else text = sItemPopupMenuActions[sPopupMenuActionList[r4->unk1 - 1]].text; var = r4->unk1 - 1; diff --git a/src/field/item_use.c b/src/field/item_use.c index c2e71070c..37cd8ba78 100644 --- a/src/field/item_use.c +++ b/src/field/item_use.c @@ -80,10 +80,10 @@ void ExecuteSwitchToOverworldFromItemUse(u8 taskId) { u8 taskData; - if (gScriptItemId == 0xAF) + if (gSpecialVar_ItemId == 0xAF) taskData = gTasks[taskId].data[15] - 1; else - taskData = ItemId_GetType(gScriptItemId) - 1; + taskData = ItemId_GetType(gSpecialVar_ItemId) - 1; gTasks[taskId].data[8] = (u32)gExitToOverworldFuncList[taskData] >> 16; gTasks[taskId].data[9] = (u32)gExitToOverworldFuncList[taskData]; @@ -157,7 +157,7 @@ void ItemMenu_ReadMail(u8 taskId) if (!gPaletteFade.active) { - mailStruct.itemId = gScriptItemId; + mailStruct.itemId = gSpecialVar_ItemId; HandleReadMail(&mailStruct, sub_80A5D04, 0); DestroyTask(taskId); } @@ -199,9 +199,9 @@ void ItemUseOutOfBattle_Bike(u8 taskId) void ItemUseOnFieldCB_Bike(u8 taskId) { - if (ItemId_GetSecondaryId(gScriptItemId) == 0) + if (ItemId_GetSecondaryId(gSpecialVar_ItemId) == 0) GetOnOffBike(2); - if (ItemId_GetSecondaryId(gScriptItemId) == 1) + if (ItemId_GetSecondaryId(gSpecialVar_ItemId) == 1) GetOnOffBike(4); sub_8064E2C(); @@ -252,7 +252,7 @@ void ItemUseOutOfBattle_Rod(u8 taskId) void ItemUseOnFieldCB_Rod(u8 taskId) { - StartFishing(ItemId_GetSecondaryId(gScriptItemId)); + StartFishing(ItemId_GetSecondaryId(gSpecialVar_ItemId)); DestroyTask(taskId); } @@ -770,11 +770,11 @@ void ItemUseOutOfBattle_SSTicket(u8 taskId) if (gTasks[taskId].data[2] == 0) { MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); - DisplayItemMessageOnField(taskId, gUnknown_083D61DC[ItemId_GetSecondaryId(gScriptItemId)], sub_80C9BB8, 1); + DisplayItemMessageOnField(taskId, gUnknown_083D61DC[ItemId_GetSecondaryId(gSpecialVar_ItemId)], sub_80C9BB8, 1); } else { - DisplayItemMessageOnField(taskId, gUnknown_083D61DC[ItemId_GetSecondaryId(gScriptItemId)], sub_80C9BD8, 0); + DisplayItemMessageOnField(taskId, gUnknown_083D61DC[ItemId_GetSecondaryId(gSpecialVar_ItemId)], sub_80C9BD8, 0); } } @@ -791,13 +791,13 @@ void sub_80C9C7C(u8 taskId) } else { - ItemId_GetFieldFunc(gScriptItemId)(taskId); + ItemId_GetFieldFunc(gSpecialVar_ItemId)(taskId); } } void sub_80C9D00(u8 taskId) { - RemoveBagItem(gScriptItemId, 1); + RemoveBagItem(gSpecialVar_ItemId, 1); ScriptContext2_Enable(); ScriptContext1_SetupScript(gUnknown_081A1654); DestroyTask(taskId); @@ -876,7 +876,7 @@ void ItemUseOutOfBattle_TMHM(u8 taskId) { MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); - if (gScriptItemId >= ITEM_HM01) + if (gSpecialVar_ItemId >= ITEM_HM01) DisplayItemMessageOnField(taskId, gOtherText_BootedHM, sub_80C9EE4, 1); // HM else DisplayItemMessageOnField(taskId, gOtherText_BootedTM, sub_80C9EE4, 1); // TM @@ -892,7 +892,7 @@ void sub_80C9F10(u8 taskId) { if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) { - StringCopy(gStringVar1, gMoveNames[ItemIdToBattleMoveId(gScriptItemId)]); + StringCopy(gStringVar1, gMoveNames[ItemIdToBattleMoveId(gSpecialVar_ItemId)]); StringExpandPlaceholders(gStringVar4, gOtherText_ContainsMove); DisplayItemMessageOnField(taskId, gStringVar4, sub_80C9F80, 1); } @@ -913,9 +913,9 @@ void sub_80C9FC0(u8 var) static void PrepareItemUseMessage(void) { - RemoveBagItem(gScriptItemId, 1); + RemoveBagItem(gSpecialVar_ItemId, 1); sub_80A3E0C(); - CopyItemName(gScriptItemId, gStringVar2); + CopyItemName(gSpecialVar_ItemId, gStringVar2); StringExpandPlaceholders(gStringVar4, gOtherText_UsedItem); } @@ -923,7 +923,7 @@ void ItemUseOutOfBattle_Repel(u8 var) { if (VarGet(VAR_REPEL_STEP_COUNT) == FALSE) { - VarSet(VAR_REPEL_STEP_COUNT, ItemId_GetHoldEffectParam(gScriptItemId)); + VarSet(VAR_REPEL_STEP_COUNT, ItemId_GetHoldEffectParam(gSpecialVar_ItemId)); PrepareItemUseMessage(); DisplayItemMessageOnField(var, gStringVar4, CleanUpItemMenuMessage, 1); } @@ -936,7 +936,7 @@ void ItemUseOutOfBattle_Repel(u8 var) void sub_80CA07C(void) { sub_80A3E0C(); - CopyItemName(gScriptItemId, gStringVar2); + CopyItemName(gSpecialVar_ItemId, gStringVar2); } void sub_80CA098(u8 taskId) @@ -950,7 +950,7 @@ void sub_80CA098(u8 taskId) void ItemUseOutOfBattle_BlackWhiteFlute(u8 taskId) { - if (gScriptItemId == ITEM_WHITE_FLUTE) + if (gSpecialVar_ItemId == ITEM_WHITE_FLUTE) { FlagSet(FLAG_SYS_ENC_UP_ITEM); FlagClear(FLAG_SYS_ENC_DOWN_ITEM); @@ -959,7 +959,7 @@ void ItemUseOutOfBattle_BlackWhiteFlute(u8 taskId) gTasks[taskId].func = sub_80CA098; gTasks[taskId].data[15] = 0; } - else if (gScriptItemId == ITEM_BLACK_FLUTE) + else if (gSpecialVar_ItemId == ITEM_BLACK_FLUTE) { FlagSet(FLAG_SYS_ENC_DOWN_ITEM); FlagClear(FLAG_SYS_ENC_UP_ITEM); @@ -1016,7 +1016,7 @@ void ItemUseInBattle_PokeBall(u8 var) { if (PlayerPartyAndPokemonStorageFull() == FALSE) // have room for mon? { - RemoveBagItem(gScriptItemId, 1); + RemoveBagItem(gSpecialVar_ItemId, 1); sub_80A7094(var); } else @@ -1037,8 +1037,8 @@ void sub_80CA2BC(u8 taskId) if(++gTasks[taskId].data[15] > 7) { PlaySE(SE_KAIFUKU); - RemoveBagItem(gScriptItemId, 1); - DisplayItemMessageOnField(taskId, sub_803F378(gScriptItemId), sub_80CA294, 1); + RemoveBagItem(gSpecialVar_ItemId, 1); + DisplayItemMessageOnField(taskId, sub_803F378(gSpecialVar_ItemId), sub_80CA294, 1); } } @@ -1048,7 +1048,7 @@ void ItemUseInBattle_StatIncrease(u8 taskId) MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); - if (ExecuteTableBasedItemEffect_(&gPlayerParty[partyId], gScriptItemId, partyId, 0) != FALSE) + if (ExecuteTableBasedItemEffect_(&gPlayerParty[partyId], gSpecialVar_ItemId, partyId, 0) != FALSE) { DisplayItemMessageOnField(taskId, gOtherText_WontHaveAnyEffect, CleanUpItemMenuMessage, 1); } @@ -1097,9 +1097,9 @@ void unref_sub_80CA448(u8 var) { MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14); - if (ExecuteTableBasedItemEffect__(0, gScriptItemId, 0) == FALSE) + if (ExecuteTableBasedItemEffect__(0, gSpecialVar_ItemId, 0) == FALSE) { - RemoveBagItem(gScriptItemId, 1); + RemoveBagItem(gSpecialVar_ItemId, 1); GetMonNickname(&gPlayerParty[0], gStringVar1); StringExpandPlaceholders(gStringVar4, gOtherText_SnapConfusion); DisplayItemMessageOnField(var, gStringVar4, sub_80A7094, 1); @@ -1127,7 +1127,7 @@ void ItemUseInBattle_Escape(u8 taskId) void ItemUseOutOfBattle_EnigmaBerry(u8 taskId) { - switch (GetItemEffectType(gScriptItemId) - 1) + switch (GetItemEffectType(gSpecialVar_ItemId) - 1) { case 1: case 2: @@ -1170,7 +1170,7 @@ void ItemUseOutOfBattle_EnigmaBerry(u8 taskId) void ItemUseInBattle_EnigmaBerry(u8 taskId) { - switch (GetItemEffectType(gScriptItemId)) + switch (GetItemEffectType(gSpecialVar_ItemId)) { case 0: ItemUseInBattle_StatIncrease(taskId); diff --git a/src/field/lottery_corner.c b/src/field/lottery_corner.c index 2cfdb7f88..83febc56e 100644 --- a/src/field/lottery_corner.c +++ b/src/field/lottery_corner.c @@ -7,7 +7,7 @@ #include "string_util.h" #include "text.h" -extern u16 gScriptResult; +extern u16 gSpecialVar_Result; extern u16 gSpecialVar_0x8004; extern struct PokemonStorage gPokemonStorage; extern u16 gSpecialVar_0x8005; @@ -46,7 +46,7 @@ void SetRandomLotteryNumber(u16 i) void RetrieveLotteryNumber(void) { u16 lottoNumber = GetLotteryNumber(); - gScriptResult = lottoNumber; + gSpecialVar_Result = lottoNumber; } void PickLotteryCornerTicket(void) @@ -70,7 +70,7 @@ void PickLotteryCornerTicket(void) if (!GetMonData(pkmn, MON_DATA_IS_EGG)) { u32 otId = GetMonData(pkmn, MON_DATA_OT_ID); - u8 numMatchingDigits = GetMatchingDigits(gScriptResult, otId); + u8 numMatchingDigits = GetMatchingDigits(gSpecialVar_Result, otId); if (numMatchingDigits > gSpecialVar_0x8004 && numMatchingDigits > 1) { @@ -97,7 +97,7 @@ void PickLotteryCornerTicket(void) !GetBoxMonData(pkmn, MON_DATA_IS_EGG)) { u32 otId = GetBoxMonData(pkmn, MON_DATA_OT_ID); - u8 numMatchingDigits = GetMatchingDigits(gScriptResult, otId); + u8 numMatchingDigits = GetMatchingDigits(gSpecialVar_Result, otId); if (numMatchingDigits > gSpecialVar_0x8004 && numMatchingDigits > 1) { diff --git a/src/field/map_obj_lock.c b/src/field/map_obj_lock.c index 91feaf177..954fcb446 100644 --- a/src/field/map_obj_lock.c +++ b/src/field/map_obj_lock.c @@ -6,7 +6,7 @@ #include "script_movement.h" #include "task.h" -extern u16 gScriptFacing; +extern u16 gSpecialVar_Facing; bool8 walkrun_is_standing_still(void) { @@ -109,7 +109,7 @@ void unref_sub_8064E5C(void) void sub_8064EAC(void) { - FieldObjectFaceOppositeDirection(&gMapObjects[gSelectedMapObject], gScriptFacing); + FieldObjectFaceOppositeDirection(&gMapObjects[gSelectedMapObject], gSpecialVar_Facing); } void sub_8064ED4(void) diff --git a/src/field/mauville_man.c b/src/field/mauville_man.c index fad6674db..30f6f5233 100644 --- a/src/field/mauville_man.c +++ b/src/field/mauville_man.c @@ -21,7 +21,7 @@ extern struct MusicPlayerInfo gMPlay_SE2; -extern u16 gScriptResult; +extern u16 gSpecialVar_Result; extern u16 gSpecialVar_0x8004; extern const u8 gTextStoryteller_Story1Title[]; @@ -258,12 +258,12 @@ static u8 GetCurrentMauvilleOldMan(void) void ScrSpecial_GetCurrentMauvilleMan(void) { - gScriptResult = GetCurrentMauvilleOldMan(); + gSpecialVar_Result = GetCurrentMauvilleOldMan(); } void ScrSpecial_HasBardSongBeenChanged(void) { - u16 *scriptResult = &gScriptResult; // why?? + u16 *scriptResult = &gSpecialVar_Result; // why?? struct MauvilleManBard *bard = &gSaveBlock1.mauvilleMan.bard; *scriptResult = bard->hasChangedSong; @@ -350,7 +350,7 @@ void ScrSpecial_PlayBardSong(void) void ScrSpecial_GetHipsterSpokenFlag(void) { - u16 *scriptResult = &gScriptResult; // again?? + u16 *scriptResult = &gSpecialVar_Result; // again?? struct MauvilleManHipster *hipster = &gSaveBlock1.mauvilleMan.hipster; *scriptResult = hipster->alreadySpoken; @@ -369,12 +369,12 @@ void ScrSpecial_HipsterTeachWord(void) if (var == 0xFFFF) { - gScriptResult = FALSE; + gSpecialVar_Result = FALSE; } else { EasyChat_GetWordText(gStringVar1, var); - gScriptResult = TRUE; + gSpecialVar_Result = TRUE; } } @@ -384,12 +384,12 @@ void ScrSpecial_GiddyShouldTellAnotherTale(void) if (giddy->taleCounter == 10) { - gScriptResult = FALSE; + gSpecialVar_Result = FALSE; giddy->taleCounter = 0; } else { - gScriptResult = TRUE; + gSpecialVar_Result = TRUE; } } @@ -421,7 +421,7 @@ void ScrSpecial_GenerateGiddyLine(void) else giddy->taleCounter++; - gScriptResult = TRUE; + gSpecialVar_Result = TRUE; } #ifdef NONMATCHING @@ -1251,11 +1251,11 @@ static void Task_StoryListMenu(u8 taskId) break; if (selection == -1 || selection == GetFreeStorySlot()) { - gScriptResult = 0; + gSpecialVar_Result = 0; } else { - gScriptResult = 1; + gSpecialVar_Result = 1; gUnknown_03000748 = selection; } HandleDestroyMenuCursors(); @@ -1266,7 +1266,7 @@ static void Task_StoryListMenu(u8 taskId) } } -// Sets gScriptResult to TRUE if player selected a story +// Sets gSpecialVar_Result to TRUE if player selected a story void ScrSpecial_StorytellerStoryListMenu(void) { CreateTask(Task_StoryListMenu, 0x50); diff --git a/src/field/party_menu.c b/src/field/party_menu.c index 7d21c365a..089f93f9e 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -4314,7 +4314,7 @@ void TaughtMove(u8 taskId) u16 r4; gTasks[taskId].func = TaskDummy; - sub_806E8D0(taskId, gScriptItemId, sub_808B508); + sub_806E8D0(taskId, gSpecialVar_ItemId, sub_808B508); moveIndex = sub_809FA30(); r4 = GetMonData(ewram1C000.pokemon, MON_DATA_MOVE1 + moveIndex); GetMonNickname(ewram1C000.pokemon, gStringVar1); @@ -4340,7 +4340,7 @@ void StopTryingToTeachMove_806F588(u8 taskId) if (!gPaletteFade.active) { gTasks[taskId].func = TaskDummy; - sub_806E8D0(taskId, gScriptItemId, sub_808B508); + sub_806E8D0(taskId, gSpecialVar_ItemId, sub_808B508); StringCopy(gStringVar2, gMoveNames[ewram1C000.unk8]); StringExpandPlaceholders(gStringVar4, gOtherText_StopTryingTo); sub_806E834(gStringVar4, 1); diff --git a/src/field/pokeblock.c b/src/field/pokeblock.c index 3b70e7d76..4a904fbb1 100644 --- a/src/field/pokeblock.c +++ b/src/field/pokeblock.c @@ -664,7 +664,7 @@ static void sub_810BF7C(u8 taskId) PlaySE(SE_SELECT); if (gUnknown_02039248.unk1 + gUnknown_02039248.unk0 == gUnknown_02039248.unk2) { - gScriptResult = 0xffff; + gSpecialVar_Result = 0xffff; sub_810C31C(taskId); } else @@ -675,7 +675,7 @@ static void sub_810BF7C(u8 taskId) else if (gMain.newKeys & B_BUTTON) { PlaySE(SE_SELECT); - gScriptResult = 0xffff; + gSpecialVar_Result = 0xffff; sub_810C31C(taskId); } } @@ -800,7 +800,7 @@ static void sub_810C31C(u8 taskId) BeginNormalPaletteFade(-1, 0, 0, 16, 0); if (gUnknown_02039244 > 1) { - gScriptItemId = ITEM_NONE; + gSpecialVar_ItemId = ITEM_NONE; } gTasks[taskId].func = sub_810C2C8; } @@ -816,7 +816,7 @@ static void sub_810C368(u8 taskId) MenuDrawTextWindow(7, v0 + 4, 13, 11); PrintMenuItemsReordered(8, v0 + 5, gUnknown_0203924C, gUnknown_083F7EF4, gUnknown_03000758); InitMenu(0, 8, v0 + 5, gUnknown_0203924C, 0, 5); - gScriptItemId = gUnknown_02039248.unk0 + gUnknown_02039248.unk1; + gSpecialVar_ItemId = gUnknown_02039248.unk0 + gUnknown_02039248.unk1; gTasks[taskId].func = sub_810C40C; } @@ -855,7 +855,7 @@ static void sub_810C4C4(u8 taskId) if (!gPaletteFade.active) { sub_810C2B0(); - sub_8136130(&gSaveBlock1.pokeblocks[gScriptItemId], sub_810B96C); + sub_8136130(&gSaveBlock1.pokeblocks[gSpecialVar_ItemId], sub_810B96C); DestroyTask(taskId); } } @@ -939,21 +939,21 @@ static void sub_810C748(u8 taskId) static void sub_810C788(u8 taskId) { - s16 v0 = PokeblockGetGain(GetNature(&gEnemyParty[0]), &gSaveBlock1.pokeblocks[gScriptItemId]); - StringCopy(gBattleTextBuff1, gPokeblockNames[gSaveBlock1.pokeblocks[gScriptItemId].color]); - PokeblockClearIfExists(gScriptItemId); - gScriptItemId = gSaveBlock1.pokeblocks[gScriptItemId].color << 8; + s16 v0 = PokeblockGetGain(GetNature(&gEnemyParty[0]), &gSaveBlock1.pokeblocks[gSpecialVar_ItemId]); + StringCopy(gBattleTextBuff1, gPokeblockNames[gSaveBlock1.pokeblocks[gSpecialVar_ItemId].color]); + PokeblockClearIfExists(gSpecialVar_ItemId); + gSpecialVar_ItemId = gSaveBlock1.pokeblocks[gSpecialVar_ItemId].color << 8; if (v0 == 0) { - gScriptItemId += 1; + gSpecialVar_ItemId += 1; } if (v0 > 0) { - gScriptItemId += 2; + gSpecialVar_ItemId += 2; } if (v0 < 0) { - gScriptItemId += 3; + gSpecialVar_ItemId += 3; } BeginNormalPaletteFade(-1, 0, 0, 16, 0); gTasks[taskId].func = sub_810C2C8; @@ -961,10 +961,10 @@ static void sub_810C788(u8 taskId) static void sub_810C854(u8 taskId) { - SafariZoneActivatePokeblockFeeder(gScriptItemId); - StringCopy(gStringVar1, gPokeblockNames[gSaveBlock1.pokeblocks[gScriptItemId].color]); - gScriptResult = gScriptItemId; - PokeblockClearIfExists(gScriptItemId); + SafariZoneActivatePokeblockFeeder(gSpecialVar_ItemId); + StringCopy(gStringVar1, gPokeblockNames[gSaveBlock1.pokeblocks[gSpecialVar_ItemId].color]); + gSpecialVar_Result = gSpecialVar_ItemId; + PokeblockClearIfExists(gSpecialVar_ItemId); BeginNormalPaletteFade(-1, 0, 0, 16, 0); gTasks[taskId].func = sub_810C2C8; } diff --git a/src/field/safari_zone.c b/src/field/safari_zone.c index 73fb01f3e..e9ca3a9f9 100644 --- a/src/field/safari_zone.c +++ b/src/field/safari_zone.c @@ -37,7 +37,7 @@ extern u8 gUnknown_081C3448; extern u8 gUnknown_081C3459; extern u8 *gPokeblockNames[]; -extern u16 gScriptResult; +extern u16 gSpecialVar_Result; bool32 GetSafariZoneFlag(void) { @@ -137,13 +137,13 @@ void SafariZoneGetPokeblockNameInFeeder(void) && gPokeblockFeeders[i].x == x && gPokeblockFeeders[i].y == y) { - gScriptResult = i; + gSpecialVar_Result = i; StringCopy(gStringVar1, gPokeblockNames[gPokeblockFeeders[i].pokeblock.color]); return; } } - gScriptResult = -1; + gSpecialVar_Result = -1; } static void GetPokeblockFeederWithinRange(void) @@ -166,23 +166,23 @@ static void GetPokeblockFeederWithinRange(void) y *= -1; if ((x + y) <= 5) { - gScriptResult = i; + gSpecialVar_Result = i; return; } } } - gScriptResult = -1; + gSpecialVar_Result = -1; } struct Pokeblock *unref_sub_80C8418(void) { SafariZoneGetPokeblockNameInFeeder(); - if (gScriptResult == 0xFFFF) + if (gSpecialVar_Result == 0xFFFF) return NULL; else - return &gPokeblockFeeders[gScriptResult].pokeblock; + return &gPokeblockFeeders[gSpecialVar_Result].pokeblock; } @@ -190,10 +190,10 @@ struct Pokeblock *SafariZoneGetActivePokeblock(void) { GetPokeblockFeederWithinRange(); - if (gScriptResult == 0xFFFF) + if (gSpecialVar_Result == 0xFFFF) return NULL; else - return &gPokeblockFeeders[gScriptResult].pokeblock; + return &gPokeblockFeeders[gSpecialVar_Result].pokeblock; } @@ -240,13 +240,13 @@ bool8 unref_sub_80C853C(void) { SafariZoneGetPokeblockNameInFeeder(); - if (gScriptResult == 0xFFFF) + if (gSpecialVar_Result == 0xFFFF) { return FALSE; } ConvertIntToDecimalStringN(gStringVar2, - gPokeblockFeeders[gScriptResult].stepCounter, + gPokeblockFeeders[gSpecialVar_Result].stepCounter, STR_CONV_MODE_LEADING_ZEROS, 3); return TRUE; diff --git a/src/field/scrcmd.c b/src/field/scrcmd.c index f0cafcf1a..d5fc56e8d 100644 --- a/src/field/scrcmd.c +++ b/src/field/scrcmd.c @@ -61,9 +61,9 @@ extern u16 gSpecialVar_0x8001; extern u16 gSpecialVar_0x8002; extern u16 gSpecialVar_0x8004; -extern u16 gScriptResult; +extern u16 gSpecialVar_Result; -extern u16 gScriptContestCategory; +extern u16 gSpecialVar_ContestCategory; extern SpecialFunc gSpecials[]; extern u8 *gStdScripts[]; @@ -479,7 +479,7 @@ bool8 ScrCmd_random(struct ScriptContext *ctx) { u16 max = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = Random() % max; + gSpecialVar_Result = Random() % max; return FALSE; } @@ -488,7 +488,7 @@ bool8 ScrCmd_giveitem(struct ScriptContext *ctx) u16 itemId = VarGet(ScriptReadHalfword(ctx)); u32 quantity = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = AddBagItem(itemId, (u8)quantity); + gSpecialVar_Result = AddBagItem(itemId, (u8)quantity); return FALSE; } @@ -497,7 +497,7 @@ bool8 ScrCmd_takeitem(struct ScriptContext *ctx) u16 itemId = VarGet(ScriptReadHalfword(ctx)); u32 quantity = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = RemoveBagItem(itemId, (u8)quantity); + gSpecialVar_Result = RemoveBagItem(itemId, (u8)quantity); return FALSE; } @@ -506,7 +506,7 @@ bool8 ScrCmd_checkitemspace(struct ScriptContext *ctx) u16 itemId = VarGet(ScriptReadHalfword(ctx)); u32 quantity = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = CheckBagHasSpace(itemId, (u8)quantity); + gSpecialVar_Result = CheckBagHasSpace(itemId, (u8)quantity); return FALSE; } @@ -515,7 +515,7 @@ bool8 ScrCmd_checkitem(struct ScriptContext *ctx) u16 itemId = VarGet(ScriptReadHalfword(ctx)); u32 quantity = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = CheckBagHasItem(itemId, (u8)quantity); + gSpecialVar_Result = CheckBagHasItem(itemId, (u8)quantity); return FALSE; } @@ -523,7 +523,7 @@ bool8 ScrCmd_checkitemtype(struct ScriptContext *ctx) { u16 itemId = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = GetPocketByItemId(itemId); + gSpecialVar_Result = GetPocketByItemId(itemId); return FALSE; } @@ -532,7 +532,7 @@ bool8 ScrCmd_givepcitem(struct ScriptContext *ctx) u16 itemId = VarGet(ScriptReadHalfword(ctx)); u16 quantity = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = AddPCItem(itemId, quantity); + gSpecialVar_Result = AddPCItem(itemId, quantity); return FALSE; } @@ -541,7 +541,7 @@ bool8 ScrCmd_checkpcitem(struct ScriptContext *ctx) u16 itemId = VarGet(ScriptReadHalfword(ctx)); u16 quantity = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = CheckPCHasItem(itemId, quantity); + gSpecialVar_Result = CheckPCHasItem(itemId, quantity); return FALSE; } @@ -549,7 +549,7 @@ bool8 ScrCmd_givedecoration(struct ScriptContext *ctx) { u32 decoration = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = IsThereStorageSpaceForDecoration(decoration); + gSpecialVar_Result = IsThereStorageSpaceForDecoration(decoration); return FALSE; } @@ -557,7 +557,7 @@ bool8 ScrCmd_takedecoration(struct ScriptContext *ctx) { u32 decoration = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = sub_81340A8(decoration); + gSpecialVar_Result = sub_81340A8(decoration); return FALSE; } @@ -565,7 +565,7 @@ bool8 ScrCmd_checkdecorspace(struct ScriptContext *ctx) { u32 decorId = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = sub_8134074(decorId); + gSpecialVar_Result = sub_8134074(decorId); return FALSE; } @@ -573,7 +573,7 @@ bool8 ScrCmd_checkdecor(struct ScriptContext *ctx) { u32 decorId = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = sub_8133FE4(decorId); + gSpecialVar_Result = sub_8133FE4(decorId); return FALSE; } @@ -641,7 +641,7 @@ bool8 ScrCmd_fadescreenspeed(struct ScriptContext *ctx) return TRUE; } -bool8 s28_pause_asm() +bool8 RunPauseTimer() { sPauseCounter--; @@ -654,7 +654,7 @@ bool8 s28_pause_asm() bool8 ScrCmd_delay(struct ScriptContext *ctx) { sPauseCounter = ScriptReadHalfword(ctx); - SetupNativeScript(ctx, s28_pause_asm); + SetupNativeScript(ctx, RunPauseTimer); return TRUE; } @@ -861,7 +861,7 @@ bool8 ScrCmd_getplayerxy(struct ScriptContext *ctx) bool8 ScrCmd_getpartysize(struct ScriptContext *ctx) { - gScriptResult = CalculatePlayerPartyCount(); + gSpecialVar_Result = CalculatePlayerPartyCount(); return FALSE; } @@ -871,7 +871,7 @@ bool8 ScrCmd_playse(struct ScriptContext *ctx) return FALSE; } -static bool8 WaitForSoundEffectFinish() +static bool8 WaitForSoundEffectFinish(void) { if (!IsSEPlaying()) return TRUE; @@ -891,7 +891,7 @@ bool8 ScrCmd_playfanfare(struct ScriptContext *ctx) return FALSE; } -static bool8 WaitForFanfareFinish() +static bool8 WaitForFanfareFinish(void) { return IsFanfareTaskInactive(); } @@ -1554,7 +1554,7 @@ bool8 ScrCmd_givemon(struct ScriptContext *ctx) u32 unkParam2 = ScriptReadWord(ctx); u8 unkParam3 = ScriptReadByte(ctx); - gScriptResult = ScriptGiveMon(species, level, item, unkParam1, unkParam2, unkParam3); + gSpecialVar_Result = ScriptGiveMon(species, level, item, unkParam1, unkParam2, unkParam3); return FALSE; } @@ -1562,7 +1562,7 @@ bool8 ScrCmd_giveegg(struct ScriptContext *ctx) { u16 species = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = ScriptGiveEgg(species); + gSpecialVar_Result = ScriptGiveEgg(species); return FALSE; } @@ -1581,7 +1581,7 @@ bool8 ScrCmd_checkpartymove(struct ScriptContext *ctx) u8 i; u16 moveId = ScriptReadHalfword(ctx); - gScriptResult = 6; + gSpecialVar_Result = 6; for (i = 0; i < PARTY_SIZE; i++) { u16 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES, NULL); @@ -1590,7 +1590,7 @@ bool8 ScrCmd_checkpartymove(struct ScriptContext *ctx) // UB: GetMonData() arguments don't match function definition if (!GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) && pokemon_has_move(&gPlayerParty[i], moveId) == TRUE) { - gScriptResult = i; + gSpecialVar_Result = i; gSpecialVar_0x8004 = species; break; } @@ -1624,7 +1624,7 @@ bool8 ScrCmd_checkmoney(struct ScriptContext *ctx) u8 ignore = ScriptReadByte(ctx); if (!ignore) - gScriptResult = IsEnoughMoney(gSaveBlock1.money, amount); + gSpecialVar_Result = IsEnoughMoney(gSaveBlock1.money, amount); return FALSE; } @@ -1804,7 +1804,7 @@ bool8 ScrCmd_getpricereduction(struct ScriptContext *ctx) { u16 value = VarGet(ScriptReadHalfword(ctx)); - gScriptResult = GetPriceReduction(value); + gSpecialVar_Result = GetPriceReduction(value); return FALSE; } @@ -1831,7 +1831,7 @@ bool8 ScrCmd_showcontestresults(struct ScriptContext *ctx) bool8 ScrCmd_contestlinktransfer(struct ScriptContext *ctx) { - sub_80C4980(gScriptContestCategory); + sub_80C4980(gSpecialVar_ContestCategory); ScriptContext1_Stop(); return TRUE; } @@ -1878,7 +1878,7 @@ bool8 ScrCmd_setrespawn(struct ScriptContext *ctx) bool8 ScrCmd_checkplayergender(struct ScriptContext *ctx) { - gScriptResult = gSaveBlock2.playerGender; + gSpecialVar_Result = gSaveBlock2.playerGender; return FALSE; } @@ -2002,9 +2002,9 @@ bool8 ScrCmd_givecoins(struct ScriptContext *ctx) u16 coins = VarGet(ScriptReadHalfword(ctx)); if (GiveCoins(coins) == TRUE) - gScriptResult = 0; + gSpecialVar_Result = 0; else - gScriptResult = 1; + gSpecialVar_Result = 1; return FALSE; } @@ -2013,8 +2013,8 @@ bool8 ScrCmd_takecoins(struct ScriptContext *ctx) u16 coins = VarGet(ScriptReadHalfword(ctx)); if (TakeCoins(coins) == TRUE) - gScriptResult = 0; + gSpecialVar_Result = 0; else - gScriptResult = 1; + gSpecialVar_Result = 1; return FALSE; } diff --git a/src/field/script_menu.c b/src/field/script_menu.c index 1f8c2c45e..9f3ab75cc 100644 --- a/src/field/script_menu.c +++ b/src/field/script_menu.c @@ -580,7 +580,7 @@ const u8 *const gUnknown_083CE048[] = extern u8 gPCText_WhichPCShouldBeAccessed[]; -extern u16 gScriptResult; +extern u16 gSpecialVar_Result; static void Task_HandleMultichoiceInput(u8); static void Task_HandleYesNoInput(u8); @@ -599,7 +599,7 @@ bool8 ScriptMenu_Multichoice(u8 left, u8 top, u8 multichoiceId, u8 ignoreBPress) } else { - gScriptResult = 0xFF; + gSpecialVar_Result = 0xFF; DrawMultichoiceMenu(left, top, gMultichoiceLists[multichoiceId].count, gMultichoiceLists[multichoiceId].list, ignoreBPress, 0); return TRUE; } @@ -613,7 +613,7 @@ bool8 ScriptMenu_MultichoiceWithDefault(u8 left, u8 top, u8 multichoiceId, u8 ig } else { - gScriptResult = 0xFF; + gSpecialVar_Result = 0xFF; DrawMultichoiceMenu(left, top, gMultichoiceLists[multichoiceId].count, gMultichoiceLists[multichoiceId].list, ignoreBPress, defaultChoice); return TRUE; } @@ -698,11 +698,11 @@ static void Task_HandleMultichoiceInput(u8 taskId) if (gTasks[taskId].tIgnoreBPress) return; PlaySE(SE_SELECT); - gScriptResult = 127; + gSpecialVar_Result = 127; } else { - gScriptResult = selection; + gSpecialVar_Result = selection; } HandleDestroyMenuCursors(); MenuZeroFillWindowRect(gTasks[taskId].tLeft, gTasks[taskId].tTop, gTasks[taskId].tRight, gTasks[taskId].tBottom); @@ -720,7 +720,7 @@ bool8 Multichoice(u8 left, u8 top, u8 multichoiceId, u8 ignoreBPress) } else { - gScriptResult = 0xFF; + gSpecialVar_Result = 0xFF; sub_80B53B4(left, top, gMultichoiceLists[multichoiceId].count, gMultichoiceLists[multichoiceId].list, ignoreBPress); return TRUE; } @@ -760,7 +760,7 @@ bool8 ScriptMenu_YesNo(u8 left, u8 top) } else { - gScriptResult = 0xFF; + gSpecialVar_Result = 0xFF; DisplayYesNoMenu(left, top, 1); taskId = CreateTask(Task_HandleYesNoInput, 0x50); gTasks[taskId].tLeft = left; @@ -772,7 +772,7 @@ bool8 ScriptMenu_YesNo(u8 left, u8 top) // unused bool8 IsScriptActive(void) { - if (gScriptResult == 0xFF) + if (gSpecialVar_Result == 0xFF) return FALSE; else return TRUE; @@ -795,10 +795,10 @@ static void Task_HandleYesNoInput(u8 taskId) case -1: case 1: PlaySE(SE_SELECT); - gScriptResult = 0; + gSpecialVar_Result = 0; break; case 0: - gScriptResult = 1; + gSpecialVar_Result = 1; break; } @@ -823,7 +823,7 @@ bool8 ScriptMenu_MultichoiceGrid(u8 left, u8 top, u8 multichoiceId, u8 ignoreBPr u8 taskId; u8 width; - gScriptResult = 0xFF; + gSpecialVar_Result = 0xFF; sub_807274C(left, top, gMultichoiceLists[multichoiceId].count, 0, gMultichoiceLists[multichoiceId].list, columnCount, 0); @@ -860,11 +860,11 @@ static void Task_HandleMultichoiceGridInput(u8 taskId) if (gTasks[taskId].tIgnoreBPress) return; PlaySE(SE_SELECT); - gScriptResult = 127; + gSpecialVar_Result = 127; } else { - gScriptResult = selection; + gSpecialVar_Result = selection; } HandleDestroyMenuCursors(); MenuZeroFillWindowRect(gTasks[taskId].tLeft, gTasks[taskId].tTop, gTasks[taskId].tRight, gTasks[taskId].tBottom); @@ -888,7 +888,7 @@ bool8 ScrSpecial_CreatePCMenu(void) } else { - gScriptResult = 0xFF; + gSpecialVar_Result = 0xFF; ScriptMenu_CreatePCMenu(); return TRUE; } diff --git a/src/field/secret_base.c b/src/field/secret_base.c index bb7716190..7589ab1e3 100644 --- a/src/field/secret_base.c +++ b/src/field/secret_base.c @@ -175,11 +175,11 @@ void sub_80BB5D0(void) void sub_80BB5E4(void) { u16 i; - gScriptResult = 0; + gSpecialVar_Result = 0; for (i = 0; i < MAX_SECRET_BASES; i++) { if (gUnknown_020387DC != gSaveBlock1.secretBases[i].secretBaseId) continue; - gScriptResult = 1; + gSpecialVar_Result = 1; VarSet(VAR_0x4054, i); break; } @@ -188,9 +188,9 @@ void sub_80BB5E4(void) void sub_80BB63C(void) // 80bb63c { if (gSaveBlock1.secretBases[0].secretBaseId) - gScriptResult = 1; + gSpecialVar_Result = 1; else - gScriptResult = 0; + gSpecialVar_Result = 0; } u8 sub_80BB66C(void) // 80bb66c @@ -462,13 +462,13 @@ void sub_80BBDD0(void) gSpecialVar_0x8007 = roomdecorpos[decidx] & 0xF; metatile = MapGridGetMetatileBehaviorAt(gSpecialVar_0x8006 + 7, gSpecialVar_0x8007 + 7); if (sub_80572D8(metatile) == TRUE || sub_80572EC(metatile) == TRUE) { - gScriptResult = gMapHeader.events->mapObjects[objid].graphicsId + VAR_0x3F20; - VarSet(gScriptResult, gDecorations[roomdecor[decidx]].tiles[0]); - gScriptResult = gMapHeader.events->mapObjects[objid].localId; + gSpecialVar_Result = gMapHeader.events->mapObjects[objid].graphicsId + VAR_0x3F20; + VarSet(gSpecialVar_Result, gDecorations[roomdecor[decidx]].tiles[0]); + gSpecialVar_Result = gMapHeader.events->mapObjects[objid].localId; FlagClear(gSpecialVar_0x8004 + 0xAE); - show_sprite(gScriptResult, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); - sub_805C0F8(gScriptResult, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, gSpecialVar_0x8006, gSpecialVar_0x8007); - sub_805C78C(gScriptResult, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); + show_sprite(gSpecialVar_Result, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); + sub_805C0F8(gSpecialVar_Result, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, gSpecialVar_0x8006, gSpecialVar_0x8007); + sub_805C78C(gSpecialVar_Result, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); gSpecialVar_0x8004 ++; } } @@ -504,7 +504,7 @@ bool8 sub_80BC050(void) { sub_80BB5D0(); sub_80BB5E4(); - if (gScriptResult == 1) + if (gSpecialVar_Result == 1) return FALSE; return TRUE; } @@ -539,9 +539,9 @@ void sub_80BC0F8(void) { void sub_80BC114(void) { if (gSaveBlock1.secretBases[0].secretBaseId != gUnknown_020387DC) - gScriptResult = 1; + gSpecialVar_Result = 1; else - gScriptResult = 0; + gSpecialVar_Result = 0; } u8 sub_80BC14C(u8 sbid) @@ -862,15 +862,15 @@ void sub_80BC56C(void) u8 secretBaseIndex = sub_80BC14C(gUnknown_020387DC); if (sub_80BC268(secretBaseIndex) == TRUE) { - gScriptResult = 1; + gSpecialVar_Result = 1; } else if (sub_80BC538() > 9) { - gScriptResult = 2; + gSpecialVar_Result = 2; } else { - gScriptResult = 0; + gSpecialVar_Result = 0; } } @@ -1237,7 +1237,7 @@ void sub_80BCE1C(void) void sub_80BCE4C() { - gSaveBlock1.secretBases[VarGet(VAR_0x4054)].sbr_field_1_5 = gScriptResult; + gSaveBlock1.secretBases[VarGet(VAR_0x4054)].sbr_field_1_5 = gSpecialVar_Result; } void sub_80BCE90() @@ -1257,7 +1257,7 @@ void sub_80BCE90() } gSpecialVar_0x8004 = sub_80BCCA4(curBaseIndex); - gScriptResult = gSaveBlock1.secretBases[curBaseIndex].sbr_field_1_5; + gSpecialVar_Result = gSaveBlock1.secretBases[curBaseIndex].sbr_field_1_5; } void sub_80BCF1C(u8 taskId) diff --git a/src/field/start_menu.c b/src/field/start_menu.c index 9f4eacd09..dccf1714e 100644 --- a/src/field/start_menu.c +++ b/src/field/start_menu.c @@ -50,7 +50,7 @@ static bool8 savingComplete; extern bool8 gDifferentSaveFile; extern u16 gSaveFileStatus; -extern u16 gScriptResult; +extern u16 gSpecialVar_Result; extern u8 gUnknown_03004860; @@ -528,10 +528,10 @@ static void Task_SaveDialog(u8 taskId) { case SAVE_CANCELED: case SAVE_ERROR: - gScriptResult = 0; + gSpecialVar_Result = 0; break; case SAVE_SUCCESS: - gScriptResult = status; + gSpecialVar_Result = status; break; case SAVE_IN_PROGRESS: return; diff --git a/src/field/starter_choose.c b/src/field/starter_choose.c index 149eaa03d..701d4087a 100644 --- a/src/field/starter_choose.c +++ b/src/field/starter_choose.c @@ -16,7 +16,7 @@ #include "trig.h" #include "unknown_task.h" -extern u16 gScriptResult; +extern u16 gSpecialVar_Result; extern struct SpriteTemplate gUnknown_02024E8C; //-------------------------------------------------- @@ -439,7 +439,7 @@ static void Task_StarterChoose5(u8 taskId) { case 0: // YES //Return the starter choice and exit. - gScriptResult = gTasks[taskId].tStarterSelection; + gSpecialVar_Result = gTasks[taskId].tStarterSelection; SetMainCallback2(gMain.savedCallback); break; case 1: // NO diff --git a/src/field/trader.c b/src/field/trader.c index c4fe73ba1..61cb0b4a2 100644 --- a/src/field/trader.c +++ b/src/field/trader.c @@ -179,7 +179,7 @@ void Task_HandleGetDecorationMenuInput(u8 taskId) void ScrSpecial_GetTraderTradedFlag(void) { struct MauvilleManTrader *trader = &gSaveBlock1.mauvilleMan.trader; - gScriptResult = trader->alreadyTraded; + gSpecialVar_Result = trader->alreadyTraded; } void ScrSpecial_DoesPlayerHaveNoDecorations(void) @@ -190,21 +190,21 @@ void ScrSpecial_DoesPlayerHaveNoDecorations(void) { if (sub_8134194(i)) { - gScriptResult = FALSE; + gSpecialVar_Result = FALSE; return; } } - gScriptResult = TRUE; + gSpecialVar_Result = TRUE; } void ScrSpecial_IsDecorationFull(void) { - gScriptResult = FALSE; + gSpecialVar_Result = FALSE; if (gDecorations[gSpecialVar_0x8004].category != gDecorations[gSpecialVar_0x8006].category && sub_8133F9C(gDecorations[gSpecialVar_0x8004].category) == -1) { sub_80FE7D4(gStringVar2, gDecorations[gSpecialVar_0x8004].category); - gScriptResult = TRUE; + gSpecialVar_Result = TRUE; } } diff --git a/src/field/tv.c b/src/field/tv.c index db96775e3..1d5bf929c 100644 --- a/src/field/tv.c +++ b/src/field/tv.c @@ -68,10 +68,10 @@ extern struct TVSaleItem gUnknown_02038724[3]; struct UnkTvStruct gUnknown_03005D38; -extern u16 gScriptLastTalked; +extern u16 gSpecialVar_LastTalked; -extern u8 gScriptContestCategory; -extern u8 gScriptContestRank; +extern u8 gSpecialVar_ContestCategory; +extern u8 gSpecialVar_ContestRank; extern u8 gUnknown_03004316[11]; extern u8 gBattleOutcome; @@ -447,8 +447,8 @@ void ClearTVShowData(void) bool8 sub_80BF1B4(u8); void sub_80BF20C(void); -extern u8 gScriptContestCategory; -extern u8 gScriptContestRank; +extern u8 gSpecialVar_ContestCategory; +extern u8 gSpecialVar_ContestRank; extern u8 gUnknown_03004316[11]; extern u8 gBattleOutcome; @@ -983,8 +983,8 @@ void sub_80BE284(u8 a0) if (gUnknown_03005D38.var0 != -1) { bravoTrainer->contestResult = a0; - bravoTrainer->contestCategory = gScriptContestCategory; - bravoTrainer->contestRank = gScriptContestRank; + bravoTrainer->contestCategory = gSpecialVar_ContestCategory; + bravoTrainer->contestRank = gSpecialVar_ContestRank; bravoTrainer->species = GetMonData(&gPlayerParty[gUnknown_02038694], MON_DATA_SPECIES, NULL); GetMonData(&gPlayerParty[gUnknown_02038694], MON_DATA_NICKNAME, bravoTrainer->pokemonNickname); } @@ -1047,7 +1047,7 @@ void sub_80BE3BC(void) void sub_80BE478(void) { sub_80BF478(); - if (gScriptResult == 1) + if (gSpecialVar_Result == 1) return; GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar1); @@ -1414,7 +1414,7 @@ void sub_80BECE8(void) arg0 = sub_80BECA0(); if (arg0 == 0xff) { - gScriptResult = 0; + gSpecialVar_Result = 0; return; } if (gSaveBlock1.unknown_2ABC[arg0].val2 == 0) @@ -1433,7 +1433,7 @@ void sub_80BECE8(void) gSaveBlock1.unknown_2ABC[arg0].val1 = 0; ShowFieldMessage(gTVNewsTextGroup1[gSaveBlock1.unknown_2ABC[arg0].val0]); } - gScriptResult = 1; + gSpecialVar_Result = 1; } bool8 GetPriceReduction(u8 arg0) @@ -1462,7 +1462,7 @@ bool8 IsPriceDiscounted(u8 arg0) case 1: if (gSaveBlock1.location.mapGroup == MAP_GROUP(SLATEPORT_CITY) && gSaveBlock1.location.mapNum == MAP_NUM(SLATEPORT_CITY) - && gScriptLastTalked == 0x1a) + && gSpecialVar_LastTalked == 0x1a) return TRUE; else return FALSE; @@ -1660,7 +1660,7 @@ void sub_80BF25C(u8 showType) { if(gSaveBlock1.tvShows[i].common.var01 == 1) { - gScriptResult = 1; + gSpecialVar_Result = 1; } else { @@ -1676,7 +1676,7 @@ void sub_80BF25C(u8 showType) void sub_80BF2C4(void) { - gScriptResult = 0; + gSpecialVar_Result = 0; switch (gSpecialVar_0x8005) { case TVSHOW_FAN_CLUB_LETTER: @@ -1708,7 +1708,7 @@ void sub_80BF334(void) struct TVShowFanClubLetter *fanclubLetter; sub_80BF25C(TVSHOW_FAN_CLUB_LETTER); - if (gScriptResult == 0) + if (gSpecialVar_Result == 0) { StringCopy(gStringVar1, gSpeciesNames[GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, 0)]); fanclubLetter = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].fanclubLetter; @@ -1721,7 +1721,7 @@ void sub_80BF3A4(void) struct TVShowRecentHappenings *recentHappenings; sub_80BF25C(TVSHOW_RECENT_HAPPENINGS); - if (gScriptResult == 0) + if (gSpecialVar_Result == 0) { recentHappenings = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].recentHappenings; sub_80EB6FC(recentHappenings->var04, 6); @@ -1733,7 +1733,7 @@ void sub_80BF3DC(void) struct TVShowFanclubOpinions *fanclubOpinions; sub_80BF25C(TVSHOW_PKMN_FAN_CLUB_OPINIONS); - if (gScriptResult == 0) + if (gSpecialVar_Result == 0) { StringCopy(gStringVar1, gSpeciesNames[GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, 0)]); GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_NICKNAME, gStringVar2); @@ -1745,7 +1745,7 @@ void sub_80BF3DC(void) void sub_80BF46C(void) { - gScriptResult = 1; + gSpecialVar_Result = 1; } void sub_80BF478(void) @@ -1758,7 +1758,7 @@ void sub_80BF484(void) struct TVShowBravoTrainerPokemonProfiles *bravoTrainer; sub_80BF25C(TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE); - if (gScriptResult == 0) + if (gSpecialVar_Result == 0) { bravoTrainer = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].bravoTrainer; sub_80EB6FC(bravoTrainer->var04, 2); @@ -1770,7 +1770,7 @@ void sub_80BF4BC(void) struct TVShowBravoTrainerBattleTowerSpotlight *bravoTrainerTower; sub_80BF25C(TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE); - if (gScriptResult == 0) + if (gSpecialVar_Result == 0) { bravoTrainerTower = &gSaveBlock1.tvShows[gUnknown_03005D38.var0].bravoTrainerTower; sub_80EB6FC(bravoTrainerTower->var18, 1); // wrong struct ident, fix later @@ -1898,9 +1898,9 @@ void sub_80BF6D8(void) gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows); gSpecialVar_0x8006 = gUnknown_03005D38.var0; if (gUnknown_03005D38.var0 == -1) - gScriptResult = 1; + gSpecialVar_Result = 1; else - gScriptResult = 0; + gSpecialVar_Result = 0; } s8 sub_80BF720(TVShow tvShow[]) @@ -2095,9 +2095,9 @@ void sub_80BFAE0(void) void sub_80BFB10(void) { if (GetPlayerTrainerId() == GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_OT_ID, 0)) - gScriptResult = 0; + gSpecialVar_Result = 0; else - gScriptResult = 1; + gSpecialVar_Result = 1; } u8 sub_80BFB54(u8 arg0) @@ -2869,7 +2869,7 @@ void DoTVShowBravoTrainerPokemonProfile(void) struct TVShowBravoTrainerPokemonProfiles *bravoTrainer = &gSaveBlock1.tvShows[gSpecialVar_0x8004].bravoTrainer; u8 state; - gScriptResult = 0; + gSpecialVar_Result = 0; state = gUnknown_020387E8; switch(state) { @@ -2940,7 +2940,7 @@ void DoTVShowBravoTrainerBattleTowerProfile(void) struct TVShowBravoTrainerBattleTowerSpotlight *bravoTrainerTower = &gSaveBlock1.tvShows[gSpecialVar_0x8004].bravoTrainerTower; u8 state; - gScriptResult = 0; + gSpecialVar_Result = 0; state = gUnknown_020387E8; switch(state) { @@ -3029,7 +3029,7 @@ void DoTVShowTodaysSmartShopper(void) struct TVShowSmartShopper *smartShopper = &gSaveBlock1.tvShows[gSpecialVar_0x8004].smartshopperShow; u8 state; - gScriptResult = 0; + gSpecialVar_Result = 0; state = gUnknown_020387E8; switch(state) { @@ -3117,7 +3117,7 @@ void DoTVShowTheNameRaterShow(void) struct TVShowNameRaterShow *nameRaterShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004].nameRaterShow; u8 state; - gScriptResult = 0; + gSpecialVar_Result = 0; state = gUnknown_020387E8; switch (state) { @@ -3213,7 +3213,7 @@ void DoTVShowPokemonTodaySuccessfulCapture(void) struct TVShowPokemonToday *pokemonToday = &gSaveBlock1.tvShows[gSpecialVar_0x8004].pokemonToday; u8 state; - gScriptResult = 0; + gSpecialVar_Result = 0; state = gUnknown_020387E8; switch (state) { @@ -3282,7 +3282,7 @@ void DoTVShowPokemonTodayFailedCapture(void) struct TVShowPokemonTodayFailed *pokemonTodayFailed = &gSaveBlock1.tvShows[gSpecialVar_0x8004].pokemonTodayFailed; u8 state; - gScriptResult = 0; + gSpecialVar_Result = 0; state = gUnknown_020387E8; switch (state) { @@ -3327,7 +3327,7 @@ void DoTVShowPokemonFanClubLetter(void) u8 state; u16 rval; - gScriptResult = 0; + gSpecialVar_Result = 0; state = gUnknown_020387E8; switch (state) { @@ -3379,7 +3379,7 @@ void DoTVShowRecentHappenings(void) struct TVShowRecentHappenings *recentHappenings = &gSaveBlock1.tvShows[gSpecialVar_0x8004].recentHappenings; u8 state; - gScriptResult = 0; + gSpecialVar_Result = 0; state = gUnknown_020387E8; switch (state) { @@ -3413,7 +3413,7 @@ void DoTVShowPokemonFanClubOpinions(void) struct TVShowFanclubOpinions *fanclubOpinions = &gSaveBlock1.tvShows[gSpecialVar_0x8004].fanclubOpinions; u8 state; - gScriptResult = 0; + gSpecialVar_Result = 0; state = gUnknown_020387E8; switch (state) { @@ -3459,7 +3459,7 @@ void DoTVShowInSearchOfTrainers(void) { u8 state; - gScriptResult = 0; + gSpecialVar_Result = 0; state = gUnknown_020387E8; switch (state) { @@ -3501,7 +3501,7 @@ void DoTVShowInSearchOfTrainers(void) EasyChat_GetWordText(gStringVar1, gSaveBlock1.gabbyAndTyData.quote); StringCopy(gStringVar2, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon1]); StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon2]); - gScriptResult = 1; + gSpecialVar_Result = 1; gUnknown_020387E8 = 0;; TakeTVShowInSearchOfTrainersOffTheAir(); break; @@ -3514,7 +3514,7 @@ void DoTVShowPokemonAngler(void) struct TVShowPokemonAngler *pokemonAngler = &gSaveBlock1.tvShows[gSpecialVar_0x8004].pokemonAngler; u8 state; - gScriptResult = 0; + gSpecialVar_Result = 0; if (pokemonAngler->var02 < pokemonAngler->var03) gUnknown_020387E8 = 0; else @@ -3543,7 +3543,7 @@ void DoTVShowTheWorldOfMasters(void) struct TVShowWorldOfMasters *worldOfMasters = &gSaveBlock1.tvShows[gSpecialVar_0x8004].worldOfMasters; u8 state; - gScriptResult = 0; + gSpecialVar_Result = 0; state = gUnknown_020387E8; switch (state) { @@ -3571,7 +3571,7 @@ void DoTVShowTheWorldOfMasters(void) void TVShowDone(void) { - gScriptResult = 1; + gSpecialVar_Result = 1; gUnknown_020387E8 = 0; gSaveBlock1.tvShows[gSpecialVar_0x8004].common.var01 = 0; } diff --git a/src/field/use_pokeblock.c b/src/field/use_pokeblock.c index 8155b4216..7253ac901 100644 --- a/src/field/use_pokeblock.c +++ b/src/field/use_pokeblock.c @@ -105,7 +105,7 @@ EWRAM_DATA u8 gPokeblockMonID = 0; EWRAM_DATA s16 gPokeblockGain = 0; extern u16 gKeyRepeatStartDelay; -extern u16 gScriptItemId; // FIXME: remove after merge of #349 Pokeblock +extern u16 gSpecialVar_ItemId; // FIXME: remove after merge of #349 Pokeblock static void launch_c3_walk_stairs_and_run_once(void (*const)(void)); static void sub_81361E4(void); @@ -574,7 +574,7 @@ static void sub_81369CC(void) case 5: if (gMain.newKeys & (A_BUTTON | B_BUTTON) && !sub_8136D00()) { - PokeblockClearIfExists((u8)gScriptItemId); + PokeblockClearIfExists((u8)gSpecialVar_ItemId); launch_c3_walk_stairs_and_run_once(sub_8136B44); } break; diff --git a/src/field/wild_encounter.c b/src/field/wild_encounter.c index cc4468728..4bf83cad8 100644 --- a/src/field/wild_encounter.c +++ b/src/field/wild_encounter.c @@ -3695,7 +3695,7 @@ const u16 gRoute119WaterTileData[] = 0x5C, 0x8B, 0x12A, }; -extern u16 gScriptResult; +extern u16 gSpecialVar_Result; extern u8 S_RepelWoreOff[]; EWRAM_DATA static u8 sWildEncountersDisabled = 0; @@ -4167,18 +4167,18 @@ void ScrSpecial_RockSmashWildEncounter(void) if (wildPokemonInfo == NULL) { - gScriptResult = 0; + gSpecialVar_Result = 0; return; } else if (DoWildEncounterTest(wildPokemonInfo->encounterRate, 1) == TRUE && GenerateWildMon(wildPokemonInfo, 2, TRUE) == TRUE) { BattleSetup_StartWildBattle(); - gScriptResult = 1; + gSpecialVar_Result = 1; return; } } - gScriptResult = 0; + gSpecialVar_Result = 0; return; } -- cgit v1.2.3