From eb49cfcab29e091a17777962b9d289c70ac305ca Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 23 Oct 2017 18:35:06 -0400 Subject: sub_80E8AF0 --- src/secret_base.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/secret_base.c (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c new file mode 100644 index 000000000..53d204946 --- /dev/null +++ b/src/secret_base.c @@ -0,0 +1,28 @@ + +// Includes +#include "global.h" +#include "decoration.h" +#include "decoration_inventory.h" +#include "text.h" +#include "secret_base.h" + +// Static type declarations + +// Static RAM declarations + +// Static ROM declarations + +void sub_80E8AF0(struct SecretBaseRecord *sbr) +{ + u16 i; + + CpuFastFill16(0, sbr, sizeof(struct SecretBaseRecord)); + for (i = 0; i < 7; i ++) + { + sbr->trainerName[i] = EOS; + } +} + +// .rodata + +// .text -- cgit v1.2.3 From 0dfd0f8c0e338d69ee0052e747b2a4d8542bb1fb Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 23 Oct 2017 18:56:18 -0400 Subject: through sub_80E8B58; secret base ewram --- src/secret_base.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index 53d204946..5c20b9b18 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -1,14 +1,24 @@ // Includes #include "global.h" +#include "list_menu.h" #include "decoration.h" #include "decoration_inventory.h" #include "text.h" +#include "event_data.h" #include "secret_base.h" // Static type declarations +struct SecretBaseListMenuBuffer { + struct ListMenuItem items[11]; + u8 names[11][32]; +}; + // Static RAM declarations +EWRAM_DATA u8 gUnknown_0203A01C = 0; +EWRAM_DATA u8 gUnknown_0203A01D = 0; +EWRAM_DATA struct SecretBaseListMenuBuffer *gUnknown_0203A020 = NULL; // Static ROM declarations @@ -23,6 +33,21 @@ void sub_80E8AF0(struct SecretBaseRecord *sbr) } } +void ResetSecretBases(void) +{ + u16 i; + + for (i = 0; i < 20; i ++) + { + sub_80E8AF0(&gSaveBlock1Ptr->secretBases[i]); + } +} + +void sub_80E8B58(void) +{ + gUnknown_0203A01C = gSpecialVar_0x8004; +} + // .rodata // .text -- cgit v1.2.3 From eb2c2f0a3f073276ca1a0fb790e63af1db2e2ef2 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 23 Oct 2017 19:21:08 -0400 Subject: through sub_80E8BC8 --- src/secret_base.c | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index 5c20b9b18..9398e9428 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -16,7 +16,7 @@ struct SecretBaseListMenuBuffer { }; // Static RAM declarations -EWRAM_DATA u8 gUnknown_0203A01C = 0; +EWRAM_DATA u8 sCurSecretBaseId = 0; EWRAM_DATA u8 gUnknown_0203A01D = 0; EWRAM_DATA struct SecretBaseListMenuBuffer *gUnknown_0203A020 = NULL; @@ -45,7 +45,36 @@ void ResetSecretBases(void) void sub_80E8B58(void) { - gUnknown_0203A01C = gSpecialVar_0x8004; + sCurSecretBaseId = gSpecialVar_0x8004; +} + +void sub_80E8B6C(void) +{ + u16 i; + + gScriptResult = FALSE; + for (i = 0; i < 20; i ++) + { + if (sCurSecretBaseId != gSaveBlock1Ptr->secretBases[i].secretBaseId) + { + continue; + } + gScriptResult = TRUE; + VarSet(VAR_0x4054, i); + break; + } +} + +void sub_80E8BC8(void) +{ + if (gSaveBlock1Ptr->secretBases[0].secretBaseId != 0) + { + gScriptResult = TRUE; + } + else + { + gScriptResult = FALSE; + } } // .rodata -- cgit v1.2.3 From 7bf352944f3ebab63d9e5018c9c6d60c25b26942 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 23 Oct 2017 19:29:16 -0400 Subject: sub_80E8BF8 --- src/secret_base.c | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index 9398e9428..d92a035be 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -4,6 +4,8 @@ #include "list_menu.h" #include "decoration.h" #include "decoration_inventory.h" +#include "fieldmap.h" +#include "field_player_avatar.h" #include "text.h" #include "event_data.h" #include "secret_base.h" @@ -22,6 +24,10 @@ EWRAM_DATA struct SecretBaseListMenuBuffer *gUnknown_0203A020 = NULL; // Static ROM declarations +// .rodata + +// .text + void sub_80E8AF0(struct SecretBaseRecord *sbr) { u16 i; @@ -77,6 +83,37 @@ void sub_80E8BC8(void) } } -// .rodata +u8 sub_80E8BF8(void) +{ + s16 x; + s16 y; + s16 behavior; -// .text + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); + behavior = MapGridGetMetatileBehaviorAt(x, y) & 0xFFF; + if (behavior == 0x90 || behavior == 0x91) + { + return 1; + } + if (behavior == 0x92 || behavior == 0x93) + { + return 2; + } + if (behavior == 0x9a || behavior == 0x9b) + { + return 3; + } + if (behavior == 0x94 || behavior == 0x95) + { + return 4; + } + if (behavior == 0x96 || behavior == 0x97 || behavior == 0x9c || behavior == 0x9d) + { + return 5; + } + if (behavior == 0x98 || behavior == 0x99) + { + return 6; + } + return 0; +} -- cgit v1.2.3 From 326e37a0d3cf091af67f14bf3bbbf531638b2b60 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 24 Oct 2017 20:19:33 -0400 Subject: through sub_80E8D4C --- src/secret_base.c | 147 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 147 insertions(+) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index d92a035be..5f6ee5ea6 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -5,6 +5,7 @@ #include "decoration.h" #include "decoration_inventory.h" #include "fieldmap.h" +#include "field_camera.h" #include "field_player_avatar.h" #include "text.h" #include "event_data.h" @@ -26,6 +27,11 @@ EWRAM_DATA struct SecretBaseListMenuBuffer *gUnknown_0203A020 = NULL; // .rodata +extern const struct { + u16 tile1; + u16 tile2; +} gUnknown_0858CFCC[7]; + // .text void sub_80E8AF0(struct SecretBaseRecord *sbr) @@ -117,3 +123,144 @@ u8 sub_80E8BF8(void) } return 0; } + +void sub_80E8C98(void) +{ + gSpecialVar_0x8007 = sub_80E8BF8(); +} + +#ifdef NONMATCHING +// This function was refactored in some mysterious way +void sub_80E8CB0(s16 *xPtr, s16 *yPtr, u16 tile) +{ + struct MapData *mapData; + s16 x; + s16 y; + + mapData = gMapHeader.mapData; + for (y = 0; y < mapData->height; y ++) + { + for (x = 0; x < mapData->width; x ++) + { + if ((mapData->map[y * mapData->width + x] % 0x400) == tile) + { + *xPtr = x; + *yPtr = y; + return; + } + } + } +} +#else +__attribute__((naked)) void sub_80E8CB0(s16 *xPtr, s16 *yPtr, u16 tile) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r10\n" + "\tmov r6, r9\n" + "\tmov r5, r8\n" + "\tpush {r5-r7}\n" + "\tsub sp, 0x8\n" + "\tstr r0, [sp]\n" + "\tstr r1, [sp, 0x4]\n" + "\tlsls r2, 16\n" + "\tlsrs r2, 16\n" + "\tmov r10, r2\n" + "\tldr r0, =gMapHeader\n" + "\tldr r0, [r0]\n" + "\tmov r8, r0\n" + "\tmovs r0, 0\n" + "\tmov r12, r0\n" + "\tmov r1, r8\n" + "\tldr r0, [r1, 0x4]\n" + "\tcmp r12, r0\n" + "\tbge _080E8D3C\n" + "\tldr r4, [r1]\n" + "_080E8CDA:\n" + "\tmovs r2, 0\n" + "\tmov r0, r12\n" + "\tlsls r7, r0, 16\n" + "\tcmp r2, r4\n" + "\tbge _080E8D28\n" + "\tasrs r0, r7, 16\n" + "\tadds r6, r0, 0\n" + "\tmuls r6, r4\n" + "\tmov r1, r8\n" + "\tldr r5, [r1, 0xC]\n" + "\tldr r0, =0x000003ff\n" + "\tmov r9, r0\n" + "_080E8CF2:\n" + "\tlsls r0, r2, 16\n" + "\tasrs r3, r0, 16\n" + "\tadds r0, r6, r3\n" + "\tlsls r0, 1\n" + "\tadds r0, r5\n" + "\tldrh r1, [r0]\n" + "\tmov r0, r9\n" + "\tands r0, r1\n" + "\tcmp r0, r10\n" + "\tbne _080E8D1C\n" + "\tldr r1, [sp]\n" + "\tstrh r2, [r1]\n" + "\tmov r0, r12\n" + "\tldr r2, [sp, 0x4]\n" + "\tstrh r0, [r2]\n" + "\tb _080E8D3C\n" + "\t.pool\n" + "_080E8D1C:\n" + "\tadds r0, r3, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r2, r0, 16\n" + "\tasrs r0, 16\n" + "\tcmp r0, r4\n" + "\tblt _080E8CF2\n" + "_080E8D28:\n" + "\tmovs r2, 0x80\n" + "\tlsls r2, 9\n" + "\tadds r1, r7, r2\n" + "\tlsrs r0, r1, 16\n" + "\tmov r12, r0\n" + "\tasrs r1, 16\n" + "\tmov r2, r8\n" + "\tldr r0, [r2, 0x4]\n" + "\tcmp r1, r0\n" + "\tblt _080E8CDA\n" + "_080E8D3C:\n" + "\tadd sp, 0x8\n" + "\tpop {r3-r5}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tmov r10, r5\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0"); +} +#endif + +void sub_80E8D4C(void) +{ + s16 x; + s16 y; + s16 tile; + u16 i; + + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); + tile = MapGridGetMetatileIdAt(x, y); + for (i = 0; i < 7; i ++) + { + if (gUnknown_0858CFCC[i].tile1 == tile) + { + MapGridSetMetatileIdAt(x, y, gUnknown_0858CFCC[i].tile2 | 0xC00); + CurrentMapDrawMetatileAt(x, y); + return; + } + } + for (i = 0; i < 7; i ++) + { + if (gUnknown_0858CFCC[i].tile2 == tile) + { + MapGridSetMetatileIdAt(x, y, gUnknown_0858CFCC[i].tile1 | 0xC00); + CurrentMapDrawMetatileAt(x, y); + return; + } + } +} -- cgit v1.2.3 From bd85d9166d7d59419e515e95d86ade6d504e7386 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 24 Oct 2017 20:27:07 -0400 Subject: through sub_80E8E18 --- src/secret_base.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index 5f6ee5ea6..e3a3dc29d 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -8,6 +8,7 @@ #include "field_camera.h" #include "field_player_avatar.h" #include "text.h" +#include "string_util.h" #include "event_data.h" #include "secret_base.h" @@ -264,3 +265,33 @@ void sub_80E8D4C(void) } } } + +u8 sub_80E8DF4(const u8 *src) +{ + u8 i; + + for (i = 0; i < 7; i ++) + { + if (src[i] == EOS) + { + return i; + } + } + return 7; +} + +void sub_80E8E18(void) +{ + u16 i; + + gSaveBlock1Ptr->secretBases[0].secretBaseId = sCurSecretBaseId; + for (i = 0; i < 4; i ++) + { + gSaveBlock1Ptr->secretBases[0].trainerId[i] = gSaveBlock2Ptr->playerTrainerId[i]; + } + VarSet(VAR_0x4054, 0); + StringCopyN(gSaveBlock1Ptr->secretBases[0].trainerName, gSaveBlock2Ptr->playerName, sub_80E8DF4(gSaveBlock2Ptr->playerName)); + gSaveBlock1Ptr->secretBases[0].gender = gSaveBlock2Ptr->playerGender; + gSaveBlock1Ptr->secretBases[0].language = GAME_LANGUAGE; + VarSet(VAR_SECRET_BASE_MAP, gMapHeader.regionMapSectionId); +} -- cgit v1.2.3 From 45479c14b6556a117a4ef262026feda44238e90a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 24 Oct 2017 20:37:38 -0400 Subject: sub_80E8EE0 --- src/secret_base.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index e3a3dc29d..a0cf7ce18 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -295,3 +295,38 @@ void sub_80E8E18(void) gSaveBlock1Ptr->secretBases[0].language = GAME_LANGUAGE; VarSet(VAR_SECRET_BASE_MAP, gMapHeader.regionMapSectionId); } + +void sub_80E8EE0(struct MapEvents *events) +{ + u16 bgevidx; + u16 idx; + u16 jdx; + s16 tile_id; + s16 x; + s16 y; + + for (bgevidx = 0; bgevidx < events->bgEventCount; bgevidx ++) + { + if (events->bgEvents[bgevidx].kind == 8) + { + for (jdx = 0; jdx < 20; jdx ++) + { + if (gSaveBlock1Ptr->secretBases[jdx].secretBaseId == events->bgEvents[bgevidx].bgUnion.secretBaseId) + { + x = events->bgEvents[bgevidx].x + 7; + y = events->bgEvents[bgevidx].y + 7; + tile_id = MapGridGetMetatileIdAt(x, y); + for (idx = 0; idx < 7; idx ++) + { + if (gUnknown_0858CFCC[idx].tile1 == tile_id) + { + MapGridSetMetatileIdAt(x, y, gUnknown_0858CFCC[idx].tile2 | 0xc00); + break; + } + } + break; + } + } + } + } +} -- cgit v1.2.3 From eeecca9671b1beb46000832c351ea0c398662773 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 24 Oct 2017 20:56:40 -0400 Subject: fix sub_80E8CB0 --- src/secret_base.c | 88 +------------------------------------------------------ 1 file changed, 1 insertion(+), 87 deletions(-) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index a0cf7ce18..dee2a3216 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -130,8 +130,6 @@ void sub_80E8C98(void) gSpecialVar_0x8007 = sub_80E8BF8(); } -#ifdef NONMATCHING -// This function was refactored in some mysterious way void sub_80E8CB0(s16 *xPtr, s16 *yPtr, u16 tile) { struct MapData *mapData; @@ -143,7 +141,7 @@ void sub_80E8CB0(s16 *xPtr, s16 *yPtr, u16 tile) { for (x = 0; x < mapData->width; x ++) { - if ((mapData->map[y * mapData->width + x] % 0x400) == tile) + if ((mapData->map[y * mapData->width + x] & 0x3ff) == tile) { *xPtr = x; *yPtr = y; @@ -152,90 +150,6 @@ void sub_80E8CB0(s16 *xPtr, s16 *yPtr, u16 tile) } } } -#else -__attribute__((naked)) void sub_80E8CB0(s16 *xPtr, s16 *yPtr, u16 tile) -{ - asm_unified("\tpush {r4-r7,lr}\n" - "\tmov r7, r10\n" - "\tmov r6, r9\n" - "\tmov r5, r8\n" - "\tpush {r5-r7}\n" - "\tsub sp, 0x8\n" - "\tstr r0, [sp]\n" - "\tstr r1, [sp, 0x4]\n" - "\tlsls r2, 16\n" - "\tlsrs r2, 16\n" - "\tmov r10, r2\n" - "\tldr r0, =gMapHeader\n" - "\tldr r0, [r0]\n" - "\tmov r8, r0\n" - "\tmovs r0, 0\n" - "\tmov r12, r0\n" - "\tmov r1, r8\n" - "\tldr r0, [r1, 0x4]\n" - "\tcmp r12, r0\n" - "\tbge _080E8D3C\n" - "\tldr r4, [r1]\n" - "_080E8CDA:\n" - "\tmovs r2, 0\n" - "\tmov r0, r12\n" - "\tlsls r7, r0, 16\n" - "\tcmp r2, r4\n" - "\tbge _080E8D28\n" - "\tasrs r0, r7, 16\n" - "\tadds r6, r0, 0\n" - "\tmuls r6, r4\n" - "\tmov r1, r8\n" - "\tldr r5, [r1, 0xC]\n" - "\tldr r0, =0x000003ff\n" - "\tmov r9, r0\n" - "_080E8CF2:\n" - "\tlsls r0, r2, 16\n" - "\tasrs r3, r0, 16\n" - "\tadds r0, r6, r3\n" - "\tlsls r0, 1\n" - "\tadds r0, r5\n" - "\tldrh r1, [r0]\n" - "\tmov r0, r9\n" - "\tands r0, r1\n" - "\tcmp r0, r10\n" - "\tbne _080E8D1C\n" - "\tldr r1, [sp]\n" - "\tstrh r2, [r1]\n" - "\tmov r0, r12\n" - "\tldr r2, [sp, 0x4]\n" - "\tstrh r0, [r2]\n" - "\tb _080E8D3C\n" - "\t.pool\n" - "_080E8D1C:\n" - "\tadds r0, r3, 0x1\n" - "\tlsls r0, 16\n" - "\tlsrs r2, r0, 16\n" - "\tasrs r0, 16\n" - "\tcmp r0, r4\n" - "\tblt _080E8CF2\n" - "_080E8D28:\n" - "\tmovs r2, 0x80\n" - "\tlsls r2, 9\n" - "\tadds r1, r7, r2\n" - "\tlsrs r0, r1, 16\n" - "\tmov r12, r0\n" - "\tasrs r1, 16\n" - "\tmov r2, r8\n" - "\tldr r0, [r2, 0x4]\n" - "\tcmp r1, r0\n" - "\tblt _080E8CDA\n" - "_080E8D3C:\n" - "\tadd sp, 0x8\n" - "\tpop {r3-r5}\n" - "\tmov r8, r3\n" - "\tmov r9, r4\n" - "\tmov r10, r5\n" - "\tpop {r4-r7}\n" - "\tpop {r0}\n" - "\tbx r0"); -} -#endif void sub_80E8D4C(void) { -- cgit v1.2.3 From 6558af388b547adf730eacdab4e2fba31e1d548c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 24 Oct 2017 21:10:58 -0400 Subject: sub_80E8F9C --- src/secret_base.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index dee2a3216..2da00067b 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -2,8 +2,10 @@ // Includes #include "global.h" #include "list_menu.h" +#include "map_constants.h" #include "decoration.h" #include "decoration_inventory.h" +#include "overworld.h" #include "fieldmap.h" #include "field_camera.h" #include "field_player_avatar.h" @@ -33,6 +35,8 @@ extern const struct { u16 tile2; } gUnknown_0858CFCC[7]; +extern const u8 gUnknown_0858CFE8[]; + // .text void sub_80E8AF0(struct SecretBaseRecord *sbr) @@ -244,3 +248,11 @@ void sub_80E8EE0(struct MapEvents *events) } } } + +void sub_80E8F9C(void) +{ + s8 idx; + + idx = sCurSecretBaseId / 10 * 4; + warp1_set_2(MAP_GROUP_SECRET_BASE_RED_CAVE1, gUnknown_0858CFE8[idx], gUnknown_0858CFE8[idx + 1]); +} -- cgit v1.2.3 From 0b0926f127628105edc65c68ce9015c77b6f6742 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 24 Oct 2017 21:27:46 -0400 Subject: through sub_80E909C --- src/secret_base.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index 2da00067b..190962c51 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -1,6 +1,8 @@ // Includes #include "global.h" +#include "task.h" +#include "palette.h" #include "list_menu.h" #include "map_constants.h" #include "decoration.h" @@ -9,6 +11,8 @@ #include "fieldmap.h" #include "field_camera.h" #include "field_player_avatar.h" +#include "field_screen.h" +#include "field_weather.h" #include "text.h" #include "string_util.h" #include "event_data.h" @@ -256,3 +260,46 @@ void sub_80E8F9C(void) idx = sCurSecretBaseId / 10 * 4; warp1_set_2(MAP_GROUP_SECRET_BASE_RED_CAVE1, gUnknown_0858CFE8[idx], gUnknown_0858CFE8[idx + 1]); } + +void sub_80E8FD0(u8 taskId) +{ + u16 sbrId; + + switch (gTasks[taskId].data[0]) + { + case 0: + if (!gPaletteFade.active) + { + gTasks[taskId].data[0] = 1; + } + break; + case 1: + sbrId = VarGet(VAR_0x4054); + if (gSaveBlock1Ptr->secretBases[sbrId].sbr_field_10 < 255) + { + gSaveBlock1Ptr->secretBases[sbrId].sbr_field_10 ++; + } + sub_80E8F9C(); + warp_in(); + gFieldCallback = sub_80AF168; + SetMainCallback2(c2_load_new_map); + DestroyTask(taskId); + break; + } +} + +void sub_80E9068(void) +{ + CreateTask(sub_80E8FD0, 0); + fade_screen(1, 0); + saved_warp2_set(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1); +} + +bool8 sub_80E909C(void) +{ + if (gMapHeader.mapType == MAP_TYPE_SECRET_BASE && VarGet(VAR_0x4097) == 0) + { + return FALSE; + } + return TRUE; +} -- cgit v1.2.3 From 1f5378c6d16285451fda0cc6a7348ebe2c70a9b3 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 24 Oct 2017 21:41:22 -0400 Subject: sub_80E9108 --- src/secret_base.c | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index 190962c51..0cdf6b010 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -5,17 +5,20 @@ #include "palette.h" #include "list_menu.h" #include "map_constants.h" -#include "decoration.h" -#include "decoration_inventory.h" #include "overworld.h" #include "fieldmap.h" #include "field_camera.h" #include "field_player_avatar.h" #include "field_screen.h" #include "field_weather.h" +#include "field_map_obj.h" +#include "map_name_popup.h" #include "text.h" #include "string_util.h" +#include "script.h" #include "event_data.h" +#include "decoration.h" +#include "decoration_inventory.h" #include "secret_base.h" // Static type declarations @@ -303,3 +306,29 @@ bool8 sub_80E909C(void) } return TRUE; } + +void sub_80E90C8(u8 taskId) +{ + FieldObjectTurn(&gMapObjects[gPlayerAvatar.mapObjectId], DIR_NORTH); + if (sub_80ABDFC() == TRUE) + { + EnableBothScriptContexts(); + DestroyTask(taskId); + } +} + +void sub_80E9108(void) +{ + s16 x; + s16 y; + + ScriptContext2_Enable(); + HideMapNamePopUpWindow(); + sub_80E8CB0(&x, &y, 0x220); + x += 7; + y += 7; + MapGridSetMetatileIdAt(x, y, 0x220 | 0xC00); + CurrentMapDrawMetatileAt(x, y); + pal_fill_black(); + CreateTask(sub_80E90C8, 0); +} -- cgit v1.2.3 From 82ac40e6197d96f59215c0544f73b8e795ed5c64 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 24 Oct 2017 22:00:29 -0400 Subject: sub_80E916C --- src/secret_base.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index 0cdf6b010..7f868720b 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -332,3 +332,18 @@ void sub_80E9108(void) pal_fill_black(); CreateTask(sub_80E90C8, 0); } + +void sub_80E916C(u8 taskId) +{ + s8 idx; + + if (!gPaletteFade.active) + { + idx = sCurSecretBaseId / 10 * 4; + Overworld_SetWarpDestination(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, gUnknown_0858CFE8[idx + 2], gUnknown_0858CFE8[idx + 3]); + warp_in(); + gFieldCallback = sub_80E9108; + SetMainCallback2(c2_load_new_map); + DestroyTask(taskId); + } +} -- cgit v1.2.3 From e094e3db9b8e4ab2b97085ac7048c9b6c327ed1f Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 24 Oct 2017 22:10:35 -0400 Subject: CurrentMapIsSecretBase --- src/secret_base.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index 7f868720b..6f888eb4b 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -347,3 +347,18 @@ void sub_80E916C(u8 taskId) DestroyTask(taskId); } } + +void sub_80E91F8(void) +{ + CreateTask(sub_80E916C, 0); + fade_screen(1, 0); +} + +bool8 CurrentMapIsSecretBase(void) +{ + if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP_SECRET_BASE_RED_CAVE1 && (u8)gSaveBlock1Ptr->location.mapNum <= MAP_ID_SECRET_BASE_SHRUB4) + { + return TRUE; + } + return FALSE; +} -- cgit v1.2.3 From 09605333c84df4e516017d161d00f22952711bc1 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 24 Oct 2017 22:17:26 -0400 Subject: sub_80E9238 --- src/secret_base.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index 6f888eb4b..c55c48af7 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -362,3 +362,35 @@ bool8 CurrentMapIsSecretBase(void) } return FALSE; } + +void sub_80E9238(u8 flagIn) +{ + u16 curBaseId; + u16 x; + u16 y; + u8 *decorations; + u8 *decorPos; + + if (CurrentMapIsSecretBase()) + { + curBaseId = VarGet(VAR_0x4054); + decorations = gSaveBlock1Ptr->secretBases[curBaseId].decorations; + decorPos = gSaveBlock1Ptr->secretBases[curBaseId].decorationPos; + for (x = 0; x < 16; x ++) + { + if (decorations[x] > 0 && decorations[x] <= 0x78 && gDecorations[decorations[x]].permission != DECORPERM_SOLID_MAT) { + sub_8127D38((decorPos[x] >> 4) + 7, (decorPos[x] & 0xF) + 7, decorations[x]); + } + } + if (curBaseId != 0) + { + sub_80E8CB0(&x, &y, 0x220); + MapGridSetMetatileIdAt(x + 7, y + 7, 0x221 | 0xc00); + } + else if (flagIn == 1 && VarGet(VAR_0x4089) == 1) + { + sub_80E8CB0(&x, &y, 0x220); + MapGridSetMetatileIdAt(x + 7, y + 7, 0x20a | 0xc00); + } + } +} -- cgit v1.2.3 From 9e3bb08e0408b3f891564d048bbee3b08b6bd057 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 24 Oct 2017 22:34:52 -0400 Subject: sub_80E933C --- src/field_map_obj.c | 9 ++++--- src/secret_base.c | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/field_map_obj.c b/src/field_map_obj.c index e822fc1ca..9932563f2 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -21,6 +21,7 @@ #include "field_effect_helpers.h" #include "field_camera.h" #include "trainer_see.h" +#include "decoration.h" #include "field_map_obj.h" #define NUM_FIELD_MAP_OBJECT_TEMPLATES 0x51 @@ -1755,18 +1756,18 @@ void sub_808F254(u8 localId, u8 mapNum, u8 mapGroup) } } -void sub_808F28C(u8 localId, u8 mapNum, u8 mapGroup, u8 action) +void sub_808F28C(u8 localId, u8 mapNum, u8 mapGroup, u8 decorCat) { u8 mapObjectId; if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId)) { - switch (action) + switch (decorCat) { - case 6: + case DECORCAT_DOLL: sub_808F228(&gMapObjects[mapObjectId], gUnknown_082766A2); break; - case 7: + case DECORCAT_CUSHION: sub_808F228(&gMapObjects[mapObjectId], gUnknown_082766A6); break; } diff --git a/src/secret_base.c b/src/secret_base.c index c55c48af7..411f2aa0f 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -12,6 +12,7 @@ #include "field_screen.h" #include "field_weather.h" #include "field_map_obj.h" +#include "metatile_behavior.h" #include "map_name_popup.h" #include "text.h" #include "string_util.h" @@ -394,3 +395,78 @@ void sub_80E9238(u8 flagIn) } } } + +void sub_80E933C(void) +{ + u8 *roomdecor; + u8 *roomdecorpos; + u8 decidx; + u8 objid; + u8 metatile; + u8 category; + u8 permission; + u8 ndecor; + u16 curBase; + + objid = 0; + if (!CurrentMapIsSecretBase()) + { + roomdecor = gSaveBlock1Ptr->playerRoomDecor; + roomdecorpos = gSaveBlock1Ptr->playerRoomDecorPos; + ndecor = 12; + } + else + { + curBase = VarGet(VAR_0x4054); + roomdecor = gSaveBlock1Ptr->secretBases[curBase].decorations; + roomdecorpos = gSaveBlock1Ptr->secretBases[curBase].decorationPos; + ndecor = 16; + } + for (decidx = 0; decidx < ndecor; decidx ++) + { + if (roomdecor[decidx] != DECOR_NONE) + { + permission = gDecorations[roomdecor[decidx]].permission; + category = gDecorations[roomdecor[decidx]].category; + if (permission == DECORPERM_SOLID_MAT) + { + for (objid = 0; objid < gMapHeader.events->mapObjectCount; 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 (MetatileBehavior_IsMB_B5(metatile) == TRUE || MetatileBehavior_IsMB_C3(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, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); + sub_808EBA8(gScriptResult, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, gSpecialVar_0x8006, gSpecialVar_0x8007); + sub_808F254(gScriptResult, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); + if (CurrentMapIsSecretBase() == TRUE && VarGet(VAR_0x4054) != 0) + { + if (category == DECORCAT_DOLL) + { + sub_808F28C(gScriptResult, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, DECORCAT_DOLL); + } + else if (category == DECORCAT_CUSHION) + { + sub_808F28C(gScriptResult, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, DECORCAT_CUSHION); + } + } + gSpecialVar_0x8004 ++; + } + } + } + } +} -- cgit v1.2.3 From 2dee40a23f1f2af8bf4b61f52dda59f3fb46fd43 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 24 Oct 2017 22:47:12 -0400 Subject: sub_80E9578 --- src/secret_base.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index 411f2aa0f..757066781 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -470,3 +470,19 @@ void sub_80E933C(void) } } } + +void sub_80E9578(void) +{ + u8 objIdx; + u16 flagId; + + for (objIdx = 0; objIdx < gMapHeader.events->mapObjectCount; objIdx ++) + { + flagId = gMapHeader.events->mapObjects[objIdx].flagId; + if (flagId >= 0xAE && flagId <= 0xBB) + { + RemoveFieldObjectByLocalIdAndMap(gMapHeader.events->mapObjects[objIdx].localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); + FlagSet(flagId); + } + } +} -- cgit v1.2.3 From 835a04ada8fc4e151a9e9416d2eeb0934bdf5245 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 25 Oct 2017 08:22:36 -0400 Subject: through sub_80E9668 --- src/secret_base.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index 757066781..b5ed0f6ae 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -17,6 +17,7 @@ #include "text.h" #include "string_util.h" #include "script.h" +#include "event_scripts.h" #include "event_data.h" #include "decoration.h" #include "decoration_inventory.h" @@ -36,6 +37,8 @@ EWRAM_DATA struct SecretBaseListMenuBuffer *gUnknown_0203A020 = NULL; // Static ROM declarations +u8 sub_80EA20C(u8 sbId); + // .rodata extern const struct { @@ -44,6 +47,7 @@ extern const struct { } gUnknown_0858CFCC[7]; extern const u8 gUnknown_0858CFE8[]; +extern const u8 gUnknown_0858D060[]; // .text @@ -486,3 +490,29 @@ void sub_80E9578(void) } } } + +void sub_80E95D4(void) +{ + VarSet(VAR_0x401F, gUnknown_0858D060[sub_80EA20C(VarGet(VAR_0x4054))]); +} + +void sub_80E9608(struct Coords16 *coords, struct MapEvents *events) +{ + s16 bgevtidx; + + for (bgevtidx = 0; bgevtidx < events->bgEventCount; bgevtidx ++) + { + if (events->bgEvents[bgevtidx].kind == 8 && coords->x == events->bgEvents[bgevtidx].x + 7 && coords->y == events->bgEvents[bgevtidx].y + 7) + { + sCurSecretBaseId = events->bgEvents[bgevtidx].bgUnion.secretBaseId; + break; + } + } +} + +void sub_80E9668(struct Coords16 *coords, struct MapEvents *events) +{ + sub_80E9608(coords, events); + sub_80E8B6C(); + ScriptContext1_SetupScript(gUnknown_08275BB7); +} -- cgit v1.2.3 From b4f9acd0390a21a7355bfc9b716206f66caade35 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 25 Oct 2017 08:34:41 -0400 Subject: sub_80E9744 --- src/secret_base.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index b5ed0f6ae..4260b15fe 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -516,3 +516,57 @@ void sub_80E9668(struct Coords16 *coords, struct MapEvents *events) sub_80E8B6C(); ScriptContext1_SetupScript(gUnknown_08275BB7); } + +bool8 sub_80E9680(void) +{ + sub_80E8B58(); + sub_80E8B6C(); + if (gScriptResult == TRUE) + { + return FALSE; + } + return TRUE; +} + +void sub_80E96A4(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + case 0: + ScriptContext2_Enable(); + gTasks[taskId].data[0] = 1; + break; + case 1: + if (!gPaletteFade.active) + { + gTasks[taskId].data[0] = 2; + } + break; + case 2: + copy_saved_warp2_bank_and_enter_x_to_warp1(0x7e); + warp_in(); + gFieldCallback = mapldr_default; + SetMainCallback2(c2_load_new_map); + ScriptContext2_Disable(); + DestroyTask(taskId); + break; + } +} + +void sub_80E9728(void) +{ + CreateTask(sub_80E96A4, 0); + fade_screen(1, 0); +} + +void sub_80E9744(void) +{ + if (gSaveBlock1Ptr->secretBases[0].secretBaseId != sCurSecretBaseId) + { + gScriptResult = TRUE; + } + else + { + gScriptResult = FALSE; + } +} -- cgit v1.2.3 From ea507b8d43d78a72c89d87ad0467758712a4a990 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 25 Oct 2017 08:41:25 -0400 Subject: sub_80E9780 --- src/secret_base.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index 4260b15fe..f8e2b1efd 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -570,3 +570,10 @@ void sub_80E9744(void) gScriptResult = FALSE; } } + +u8 *sub_80E9780(u8 *dest, u8 sbId) +{ + *StringCopyN(dest, gSaveBlock1Ptr->secretBases[sbId].trainerName, sub_80E8DF4(gSaveBlock1Ptr->secretBases[sbId].trainerName)) = EOS; + ConvertInternationalString(dest, gSaveBlock1Ptr->secretBases[sbId].language); + return StringAppend(dest, gText_ApostropheSBase); +} -- cgit v1.2.3 From 42a22d4c9faf43d0d96c89c13f58cf3d8afe48d6 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 25 Oct 2017 08:46:08 -0400 Subject: through sub_80E980C --- src/secret_base.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index f8e2b1efd..8e476521b 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -577,3 +577,19 @@ u8 *sub_80E9780(u8 *dest, u8 sbId) ConvertInternationalString(dest, gSaveBlock1Ptr->secretBases[sbId].language); return StringAppend(dest, gText_ApostropheSBase); } + +u8 *GetSecretBaseMapName(u8 *dest) +{ + return sub_80E9780(dest, VarGet(VAR_0x4054)); +} + +void sub_80E980C(void) +{ + u8 sbId; + const u8 *src; + + sbId = VarGet(VAR_0x4054); + src = gSaveBlock1Ptr->secretBases[sbId].trainerName; + *StringCopyN(gStringVar1, src, sub_80E8DF4(src)) = EOS; + ConvertInternationalString(gStringVar1, gSaveBlock1Ptr->secretBases[sbId].language); +} -- cgit v1.2.3 From 943e2ec33dc052a3085e5013902fac21a5ef29da Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 25 Oct 2017 18:40:44 -0400 Subject: sub_80E98AC --- src/secret_base.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index 8e476521b..7154abbf2 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -593,3 +593,25 @@ void sub_80E980C(void) *StringCopyN(gStringVar1, src, sub_80E8DF4(src)) = EOS; ConvertInternationalString(gStringVar1, gSaveBlock1Ptr->secretBases[sbId].language); } + +bool8 sub_80E9878(u8 sbId) +{ + if (gSaveBlock1Ptr->secretBases[sbId].sbr_field_1_6 != 0) + { + return TRUE; + } + return FALSE; +} + +u8 sub_80E98AC(struct Pokemon *pokemon) +{ + u16 evTotal; + + evTotal = GetMonData(pokemon, MON_DATA_HP_EV); + evTotal += GetMonData(pokemon, MON_DATA_ATK_EV); + evTotal += GetMonData(pokemon, MON_DATA_DEF_EV); + evTotal += GetMonData(pokemon, MON_DATA_SPD_EV); + evTotal += GetMonData(pokemon, MON_DATA_SPATK_EV); + evTotal += GetMonData(pokemon, MON_DATA_SPDEF_EV); + return evTotal / 6; +} -- cgit v1.2.3 From 84a94412670d1ba365b1857dbfd3de717fe3967e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 25 Oct 2017 19:54:24 -0400 Subject: MWF: sub_80E9914 --- src/secret_base.c | 235 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 235 insertions(+) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index 7154abbf2..4e9dc2090 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -5,6 +5,9 @@ #include "palette.h" #include "list_menu.h" #include "map_constants.h" +#include "species.h" +#include "moves.h" +#include "items.h" #include "overworld.h" #include "fieldmap.h" #include "field_camera.h" @@ -615,3 +618,235 @@ u8 sub_80E98AC(struct Pokemon *pokemon) evTotal += GetMonData(pokemon, MON_DATA_SPDEF_EV); return evTotal / 6; } + +#ifdef NONMATCHING +// This function is a meme +void sub_80E9914(void) +{ + u32 zero; + u32 *personality; + u16 partyidx; + u16 moveidx; + u16 sbpartyidx; + u16 *species; + u16 *items; + u16 *moves; + u8 *levels; + u8 *evs; + + sbpartyidx = 0; + personality = gSaveBlock1Ptr->secretBases[0].partyPersonality; + if (gSaveBlock1Ptr->secretBases[0].secretBaseId != 0) + { + partyidx = 0; + moves = gSaveBlock1Ptr->secretBases[0].partyMoves; + species = gSaveBlock1Ptr->secretBases[0].partySpecies; + items = gSaveBlock1Ptr->secretBases[0].partyHeldItems; + levels = gSaveBlock1Ptr->secretBases[0].partyLevels; + evs = gSaveBlock1Ptr->secretBases[0].partyEVs; + zero = 0; + for (partyidx = 0; partyidx < PARTY_SIZE; partyidx ++) + { + for (moveidx = 0; moveidx < 4; moveidx ++) + { + moves[partyidx * 4 + moveidx] = zero; + } + species[partyidx] = zero; + items[partyidx] = zero; + levels[partyidx] = zero; + personality[partyidx] = zero; + evs[partyidx] = zero; + if (GetMonData(&gPlayerParty[partyidx], MON_DATA_SPECIES) != SPECIES_NONE && !GetMonData(&gPlayerParty[partyidx], MON_DATA_IS_EGG)) + { + for (moveidx = 0; moveidx < 4; moveidx ++) + { + moves[sbpartyidx * 4 + moveidx] = GetMonData(&gPlayerParty[partyidx], MON_DATA_MOVE1 + moveidx); + } + species[sbpartyidx] = GetMonData(&gPlayerParty[partyidx], MON_DATA_SPECIES); + items[sbpartyidx] = GetMonData(&gPlayerParty[partyidx], MON_DATA_HELD_ITEM); + levels[sbpartyidx] = GetMonData(&gPlayerParty[partyidx], MON_DATA_LEVEL); + personality[sbpartyidx] = GetMonData(&gPlayerParty[partyidx], MON_DATA_PERSONALITY); + evs[sbpartyidx] = sub_80E98AC(&gPlayerParty[partyidx]); + sbpartyidx ++; + } + } + } +} +#else +__attribute__((naked)) void sub_80E9914(void) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r10\n" + "\tmov r6, r9\n" + "\tmov r5, r8\n" + "\tpush {r5-r7}\n" + "\tsub sp, 0x24\n" + "\tmovs r0, 0\n" + "\tmov r10, r0\n" + "\tldr r0, =gSaveBlock1Ptr\n" + "\tldr r1, [r0]\n" + "\tldr r2, =0x00001ad0\n" + "\tadds r2, r1, r2\n" + "\tstr r2, [sp]\n" + "\tldr r3, =0x00001a9c\n" + "\tadds r0, r1, r3\n" + "\tldrb r0, [r0]\n" + "\tcmp r0, 0\n" + "\tbne _080E993A\n" + "\tb _080E9A60\n" + "_080E993A:\n" + "\tmovs r6, 0\n" + "\tldr r7, =0x00001ae8\n" + "\tadds r7, r1, r7\n" + "\tstr r7, [sp, 0x14]\n" + "\tldr r0, =0x00001b18\n" + "\tadds r0, r1, r0\n" + "\tstr r0, [sp, 0xC]\n" + "\tldr r2, =0x00001b24\n" + "\tadds r2, r1, r2\n" + "\tstr r2, [sp, 0x10]\n" + "\tadds r3, 0x94\n" + "\tadds r3, r1, r3\n" + "\tstr r3, [sp, 0x18]\n" + "\tldr r7, =0x00001b36\n" + "\tadds r7, r1, r7\n" + "\tstr r7, [sp, 0x1C]\n" + "\tmov r9, r6\n" + "_080E995C:\n" + "\tmovs r4, 0\n" + "\tlsls r5, r6, 2\n" + "\tlsls r3, r6, 1\n" + "\tldr r0, =gPlayerParty\n" + "\tmov r8, r0\n" + "\tadds r1, r6, 0x1\n" + "\tstr r1, [sp, 0x4]\n" + "\tadds r2, r5, 0\n" + "\tldr r1, [sp, 0x14]\n" + "_080E996E:\n" + "\tadds r0, r2, r4\n" + "\tlsls r0, 1\n" + "\tadds r0, r1, r0\n" + "\tmov r7, r9\n" + "\tstrh r7, [r0]\n" + "\tadds r0, r4, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r4, r0, 16\n" + "\tcmp r4, 0x3\n" + "\tbls _080E996E\n" + "\tldr r1, [sp, 0xC]\n" + "\tadds r0, r1, r3\n" + "\tmov r2, r9\n" + "\tstrh r2, [r0]\n" + "\tldr r7, [sp, 0x10]\n" + "\tadds r0, r7, r3\n" + "\tstrh r2, [r0]\n" + "\tldr r1, [sp, 0x18]\n" + "\tadds r0, r1, r6\n" + "\tmov r2, r9\n" + "\tstrb r2, [r0]\n" + "\tldr r3, [sp]\n" + "\tadds r0, r3, r5\n" + "\tmov r7, r9\n" + "\tstr r7, [r0]\n" + "\tldr r1, [sp, 0x1C]\n" + "\tadds r0, r1, r6\n" + "\tstrb r7, [r0]\n" + "\tmovs r2, 0x64\n" + "\tadds r5, r6, 0\n" + "\tmuls r5, r2\n" + "\tmov r3, r8\n" + "\tadds r4, r5, r3\n" + "\tadds r0, r4, 0\n" + "\tmovs r1, 0xB\n" + "\tbl GetMonData\n" + "\tcmp r0, 0\n" + "\tbeq _080E9A54\n" + "\tadds r0, r4, 0\n" + "\tmovs r1, 0x2D\n" + "\tbl GetMonData\n" + "\tcmp r0, 0\n" + "\tbne _080E9A54\n" + "\tmovs r4, 0\n" + "\tmov r7, r10\n" + "\tlsls r7, 2\n" + "\tmov r8, r7\n" + "\tmov r0, r10\n" + "\tlsls r7, r0, 1\n" + "\tadds r0, 0x1\n" + "\tstr r0, [sp, 0x8]\n" + "\tldr r2, =gPlayerParty\n" + "_080E99DA:\n" + "\tadds r1, r4, 0\n" + "\tadds r1, 0xD\n" + "\tadds r0, r5, r2\n" + "\tstr r2, [sp, 0x20]\n" + "\tbl GetMonData\n" + "\tmov r3, r8\n" + "\tadds r1, r3, r4\n" + "\tlsls r1, 1\n" + "\tldr r3, [sp, 0x14]\n" + "\tadds r1, r3, r1\n" + "\tstrh r0, [r1]\n" + "\tadds r0, r4, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r4, r0, 16\n" + "\tldr r2, [sp, 0x20]\n" + "\tcmp r4, 0x3\n" + "\tbls _080E99DA\n" + "\tmovs r0, 0x64\n" + "\tadds r4, r6, 0\n" + "\tmuls r4, r0\n" + "\tldr r0, =gPlayerParty\n" + "\tadds r4, r0\n" + "\tadds r0, r4, 0\n" + "\tmovs r1, 0xB\n" + "\tbl GetMonData\n" + "\tldr r2, [sp, 0xC]\n" + "\tadds r1, r2, r7\n" + "\tstrh r0, [r1]\n" + "\tadds r0, r4, 0\n" + "\tmovs r1, 0xC\n" + "\tbl GetMonData\n" + "\tldr r3, [sp, 0x10]\n" + "\tadds r1, r3, r7\n" + "\tstrh r0, [r1]\n" + "\tadds r0, r4, 0\n" + "\tmovs r1, 0x38\n" + "\tbl GetMonData\n" + "\tldr r1, [sp, 0x18]\n" + "\tadd r1, r10\n" + "\tstrb r0, [r1]\n" + "\tadds r0, r4, 0\n" + "\tmovs r1, 0\n" + "\tbl GetMonData\n" + "\tldr r1, [sp]\n" + "\tadd r1, r8\n" + "\tstr r0, [r1]\n" + "\tadds r0, r4, 0\n" + "\tbl sub_80E98AC\n" + "\tldr r1, [sp, 0x1C]\n" + "\tadd r1, r10\n" + "\tstrb r0, [r1]\n" + "\tldr r7, [sp, 0x8]\n" + "\tlsls r0, r7, 16\n" + "\tlsrs r0, 16\n" + "\tmov r10, r0\n" + "_080E9A54:\n" + "\tldr r1, [sp, 0x4]\n" + "\tlsls r0, r1, 16\n" + "\tlsrs r6, r0, 16\n" + "\tcmp r6, 0x5\n" + "\tbhi _080E9A60\n" + "\tb _080E995C\n" + "_080E9A60:\n" + "\tadd sp, 0x24\n" + "\tpop {r3-r5}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tmov r10, r5\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.pool"); +} +#endif -- cgit v1.2.3 From 49f3ccaf2950ca97bb540d405b1c4662f206e7ce Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 25 Oct 2017 20:03:55 -0400 Subject: sub_80E9A90 --- src/secret_base.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index 4e9dc2090..210149ee9 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -850,3 +850,13 @@ __attribute__((naked)) void sub_80E9914(void) "\t.pool"); } #endif + +void sub_80E9A90(void) +{ + u16 sbr_e; + + sbr_e = gSaveBlock1Ptr->secretBases[0].sbr_field_e; + sub_80E8AF0(&gSaveBlock1Ptr->secretBases[0]); + gSaveBlock1Ptr->secretBases[0].sbr_field_e = sbr_e; + sub_80E9728(); +} -- cgit v1.2.3 From 2aa6dbe4737c60128c8a8326ddd607aa4fc313b4 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 26 Oct 2017 08:40:08 -0400 Subject: through sub_80E9AD0 --- src/secret_base.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index 210149ee9..60e29fa1e 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -860,3 +860,36 @@ void sub_80E9A90(void) gSaveBlock1Ptr->secretBases[0].sbr_field_e = sbr_e; sub_80E9728(); } + +void sub_80E9AC0(void) +{ + IncrementGameStat(GAME_STAT_MOVED_SECRET_BASE); + sub_80E9A90(); +} + +void sub_80E9AD0(void) +{ + u16 i; + u16 j; + s16 tile; + struct MapEvents *events; + + events = gMapHeader.events; + for (i = 0; i < events->bgEventCount; i ++) + { + if (events->bgEvents[i].kind == 8 && gSaveBlock1Ptr->secretBases[0].secretBaseId == events->bgEvents[i].bgUnion.secretBaseId) + { + tile = MapGridGetMetatileIdAt(events->bgEvents[i].x + 7, events->bgEvents[i].y + 7); + for (j = 0; j < 7; j ++) + { + if (gUnknown_0858CFCC[j].tile2 == tile) + { + MapGridSetMetatileIdAt(events->bgEvents[i].x + 7, events->bgEvents[i].y + 7, gUnknown_0858CFCC[j].tile1 | 0xc00); + break; + } + } + DrawWholeMapView(); + break; + } + } +} -- cgit v1.2.3 From de5d9361f9d955237ed137b27563bbf3403956c5 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 26 Oct 2017 08:45:41 -0400 Subject: through sub_80E9BA8 --- src/secret_base.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index 60e29fa1e..741f04bb0 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -893,3 +893,30 @@ void sub_80E9AD0(void) } } } + +void sub_80E9B70(void) +{ + u16 sbr_e; + + sub_80E9AD0(); + IncrementGameStat(GAME_STAT_MOVED_SECRET_BASE); + sbr_e = gSaveBlock1Ptr->secretBases[0].sbr_field_e; + sub_80E8AF0(&gSaveBlock1Ptr->secretBases[0]); + gSaveBlock1Ptr->secretBases[0].sbr_field_e = sbr_e; +} + +u8 sub_80E9BA8(void) +{ + u8 tot; + s16 i; + + tot = 0; + for (i = 1; i < 20; i ++) + { + if (sub_80E9878(i) == TRUE) + { + tot ++; + } + } + return tot; +} -- cgit v1.2.3 From 135da0136fe52c08b5c43c9d33c1dde748506928 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 26 Oct 2017 21:39:34 -0400 Subject: through game_continue --- src/secret_base.c | 103 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index 741f04bb0..eccc7b899 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -1,9 +1,12 @@ // Includes #include "global.h" +#include "malloc.h" #include "task.h" #include "palette.h" #include "list_menu.h" +#include "window.h" +#include "new_menu_helpers.h" #include "map_constants.h" #include "species.h" #include "moves.h" @@ -21,6 +24,7 @@ #include "string_util.h" #include "script.h" #include "event_scripts.h" +#include "strings.h" #include "event_data.h" #include "decoration.h" #include "decoration_inventory.h" @@ -40,6 +44,11 @@ EWRAM_DATA struct SecretBaseListMenuBuffer *gUnknown_0203A020 = NULL; // Static ROM declarations +void sub_80E9C9C(u8 taskId); +void game_continue(u8 taskId); +void sub_80E9E00(u8 taskId); +void sub_80E9E90(u8 taskId); +void task_pc_turn_off(u8 taskId); u8 sub_80EA20C(u8 sbId); // .rodata @@ -51,6 +60,8 @@ extern const struct { extern const u8 gUnknown_0858CFE8[]; extern const u8 gUnknown_0858D060[]; +extern const struct WindowTemplate gUnknown_0858D06C; +extern const struct ListMenuTemplate gUnknown_0858D07C; // .text @@ -920,3 +931,95 @@ u8 sub_80E9BA8(void) } return tot; } + +void sub_80E9BDC(void) +{ + if (sub_80E9878(VarGet(VAR_0x4054)) == TRUE) + { + gScriptResult = 1; + } + else if (sub_80E9BA8() > 9) + { + gScriptResult = 2; + } + else + { + gScriptResult = 0; + } +} + +void sub_80E9C2C(void) +{ + gSaveBlock1Ptr->secretBases[VarGet(VAR_0x4054)].sbr_field_1_6 ^= 1; + FlagSet(0x10C); +} + +void sub_80E9C74(void) +{ + CreateTask(sub_8126AD8, 0); +} + +void sub_80E9C88(void) +{ + CreateTask(sub_80E9C9C, 0); +} + +void sub_80E9C9C(u8 taskId) +{ + s16 *data; + + data = gTasks[taskId].data; + ScriptContext2_Enable(); + data[0] = sub_80E9BA8(); + if (data[0] != 0) + { + data[1] = 0; + data[2] = 0; + sub_8197434(0, 0); + gUnknown_0203A020 = calloc(1, sizeof(struct SecretBaseListMenuBuffer)); + data[6] = AddWindow(&gUnknown_0858D06C); + game_continue(taskId); + sub_80E9E00(taskId); + gTasks[taskId].func = sub_80E9E90; + } + else + { + DisplayItemMessageOnField(taskId, gText_NoRegistry, task_pc_turn_off); + } +} + +void game_continue(u8 taskId) +{ + s16 *data; + u8 i; + u8 ct; + + data = gTasks[taskId].data; + ct = 0; + for (i = 1; i < 20; i ++) + { + if (sub_80E9878(i)) + { + sub_80E9780(gUnknown_0203A020->names[ct], i); + gUnknown_0203A020->items[ct].unk_00 = gUnknown_0203A020->names[ct]; + gUnknown_0203A020->items[ct].unk_04 = i; + ct ++; + } + } + gUnknown_0203A020->items[ct].unk_00 = gText_Cancel; + gUnknown_0203A020->items[ct].unk_04 = -2; + data[0] = ct + 1; + if (data[0] < 8) + { + data[3] = data[0]; + } + else + { + data[3] = 8; + } + gUnknown_03006310 = gUnknown_0858D07C; + gUnknown_03006310.unk_10 = data[6]; + gUnknown_03006310.unk_0c = data[0]; + gUnknown_03006310.unk_00 = gUnknown_0203A020->items; + gUnknown_03006310.unk_0e = data[3]; +} -- cgit v1.2.3 From 48f38a888b55a3070601dae4ea7e016eaeb448f8 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 26 Oct 2017 21:53:00 -0400 Subject: through sub_80E9E44 --- src/secret_base.c | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index eccc7b899..73bc78826 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -6,11 +6,12 @@ #include "palette.h" #include "list_menu.h" #include "window.h" +#include "menu.h" #include "new_menu_helpers.h" +#include "menu_indicators.h" #include "map_constants.h" -#include "species.h" -#include "moves.h" -#include "items.h" +#include "songs.h" +#include "sound.h" #include "overworld.h" #include "fieldmap.h" #include "field_camera.h" @@ -47,6 +48,7 @@ EWRAM_DATA struct SecretBaseListMenuBuffer *gUnknown_0203A020 = NULL; void sub_80E9C9C(u8 taskId); void game_continue(u8 taskId); void sub_80E9E00(u8 taskId); +void sub_80E9E44(u8 taskId); void sub_80E9E90(u8 taskId); void task_pc_turn_off(u8 taskId); u8 sub_80EA20C(u8 sbId); @@ -1023,3 +1025,30 @@ void game_continue(u8 taskId) gUnknown_03006310.unk_00 = gUnknown_0203A020->items; gUnknown_03006310.unk_0e = data[3]; } + +void sub_80E9DEC(u32 unused, bool8 flag) +{ + if (flag != TRUE) + { + PlaySE(SE_SELECT); + } +} + +void sub_80E9E00(u8 taskId) +{ + s16 *data; + + data = gTasks[taskId].data; + SetStandardWindowBorderStyle(data[6], 0); + data[5] = ListMenuInit(&gUnknown_03006310, data[2], data[1]); + sub_80E9E44(taskId); + schedule_bg_copy_tilemap_to_vram(0); +} + +void sub_80E9E44(u8 taskId) +{ + s16 *data; + + data = gTasks[taskId].data; + data[8] = AddScrollIndicatorArrowPairParametrized(0x02, 0xbc, 0x0c, 0x94, data[0] - data[3], 0x13f8, 0x13f8, &data[2]); +} -- cgit v1.2.3 From ae3119a9c82f44ee006cf131f05c56596c43a922 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 26 Oct 2017 21:59:54 -0400 Subject: sub_80E9E90 --- src/secret_base.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index 73bc78826..f066a3c25 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -50,6 +50,7 @@ void game_continue(u8 taskId); void sub_80E9E00(u8 taskId); void sub_80E9E44(u8 taskId); void sub_80E9E90(u8 taskId); +void sub_80E9F20(u8 taskId); void task_pc_turn_off(u8 taskId); u8 sub_80EA20C(u8 sbId); @@ -1052,3 +1053,34 @@ void sub_80E9E44(u8 taskId) data = gTasks[taskId].data; data[8] = AddScrollIndicatorArrowPairParametrized(0x02, 0xbc, 0x0c, 0x94, data[0] - data[3], 0x13f8, 0x13f8, &data[2]); } + +void sub_80E9E90(u8 taskId) +{ + s16 *data; + s32 input; + + data = gTasks[taskId].data; + input = ListMenuHandleInput(data[5]); + get_coro_args_x18_x1A(data[5], &data[2], &data[1]); + switch (input) + { + case -1: + break; + case -2: + PlaySE(SE_SELECT); + sub_81AE6C8(data[5], NULL, NULL); + RemoveScrollIndicatorArrowPair(data[8]); + sub_819746C(data[6], 0); + ClearWindowTilemap(data[6]); + RemoveWindow(data[6]); + schedule_bg_copy_tilemap_to_vram(0); + free(gUnknown_0203A020); + task_pc_turn_off(taskId); + break; + default: + PlaySE(SE_SELECT); + data[4] = input; + sub_80E9F20(taskId); + break; + } +} -- cgit v1.2.3 From 68a253990d88ec058343b88496d8898309ef49ca Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 26 Oct 2017 22:10:38 -0400 Subject: through sub_80E9FB0 --- src/secret_base.c | 45 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index f066a3c25..9876c7ade 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -26,6 +26,7 @@ #include "script.h" #include "event_scripts.h" #include "strings.h" +#include "international_string_util.h" #include "event_data.h" #include "decoration.h" #include "decoration_inventory.h" @@ -51,7 +52,9 @@ void sub_80E9E00(u8 taskId); void sub_80E9E44(u8 taskId); void sub_80E9E90(u8 taskId); void sub_80E9F20(u8 taskId); +void sub_80E9FB0(u8 taskId); void task_pc_turn_off(u8 taskId); +u8 sub_80EA18C(u8 sbId); u8 sub_80EA20C(u8 sbId); // .rodata @@ -63,8 +66,9 @@ extern const struct { extern const u8 gUnknown_0858CFE8[]; extern const u8 gUnknown_0858D060[]; -extern const struct WindowTemplate gUnknown_0858D06C; +extern const struct WindowTemplate gUnknown_0858D06C[]; extern const struct ListMenuTemplate gUnknown_0858D07C; +extern const struct MenuAction gUnknown_0858D048[]; // .text @@ -980,7 +984,7 @@ void sub_80E9C9C(u8 taskId) data[2] = 0; sub_8197434(0, 0); gUnknown_0203A020 = calloc(1, sizeof(struct SecretBaseListMenuBuffer)); - data[6] = AddWindow(&gUnknown_0858D06C); + data[6] = AddWindow(&gUnknown_0858D06C[0]); game_continue(taskId); sub_80E9E00(taskId); gTasks[taskId].func = sub_80E9E90; @@ -1084,3 +1088,40 @@ void sub_80E9E90(u8 taskId) break; } } + +void sub_80E9F20(u8 taskId) +{ + struct WindowTemplate template; + s16 *data; + + data = gTasks[taskId].data; + RemoveScrollIndicatorArrowPair(data[8]); + template = gUnknown_0858D06C[1]; + template.width = GetMaxWidthInMenuTable(gUnknown_0858D048, 2); + data[7] = AddWindow(&template); + SetStandardWindowBorderStyle(data[7], 0); + PrintMenuTable(data[7], 2, gUnknown_0858D048); + InitMenuInUpperLeftCornerPlaySoundWhenAPressed(data[7], 2, 0); + schedule_bg_copy_tilemap_to_vram(0); + gTasks[taskId].func = sub_80E9FB0; +} + +void sub_80E9FB0(u8 taskId) +{ + s8 input; + + input = ProcessMenuInputNoWrapAround(); + switch (input) + { + case -1: + PlaySE(SE_SELECT); + sub_80EA18C(taskId); + break; + case -2: + break; + default: + PlaySE(SE_SELECT); + gUnknown_0858D048[input].func.void_u8(taskId); + break; + } +} -- cgit v1.2.3 From 81100d155a7ca7c0010e80b48a63937376db2144 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 26 Oct 2017 22:21:20 -0400 Subject: sub_80EA08C --- src/secret_base.c | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index 9876c7ade..78647f8a0 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -7,6 +7,7 @@ #include "list_menu.h" #include "window.h" #include "menu.h" +#include "menu_helpers.h" #include "new_menu_helpers.h" #include "menu_indicators.h" #include "map_constants.h" @@ -53,6 +54,7 @@ void sub_80E9E44(u8 taskId); void sub_80E9E90(u8 taskId); void sub_80E9F20(u8 taskId); void sub_80E9FB0(u8 taskId); +void sub_80EA06C(u8 taskId); void task_pc_turn_off(u8 taskId); u8 sub_80EA18C(u8 sbId); u8 sub_80EA20C(u8 sbId); @@ -69,6 +71,7 @@ extern const u8 gUnknown_0858D060[]; extern const struct WindowTemplate gUnknown_0858D06C[]; extern const struct ListMenuTemplate gUnknown_0858D07C; extern const struct MenuAction gUnknown_0858D048[]; +extern const struct YesNoFuncTable gUnknown_0858D058; // .text @@ -1125,3 +1128,39 @@ void sub_80E9FB0(u8 taskId) break; } } + +void sub_80E9FFC(u8 taskId) +{ + s16 *data; + + data = gTasks[taskId].data; + sub_819746C(data[6], FALSE); + sub_819746C(data[7], FALSE); + ClearWindowTilemap(data[6]); + ClearWindowTilemap(data[7]); + RemoveWindow(data[7]); + schedule_bg_copy_tilemap_to_vram(0); + sub_80E9780(gStringVar1, data[4]); + StringExpandPlaceholders(gStringVar4, gText_OkayToDeleteFromRegistry); + DisplayItemMessageOnField(taskId, gStringVar4, sub_80EA06C); +} + +void sub_80EA06C(u8 taskId) +{ + sub_8197930(); + sub_8121F68(taskId, &gUnknown_0858D058); +} + +void sub_80EA08C(u8 taskId) +{ + s16 *data; + + data = gTasks[taskId].data; + sub_8197434(0, 0); + sub_81AE6C8(data[5], &data[2], &data[1]); + gSaveBlock1Ptr->secretBases[data[4]].sbr_field_1_6 = 0; + game_continue(taskId); + sub_812225C(&data[2], &data[1], data[3], data[0]); + sub_80E9E00(taskId); + gTasks[taskId].func = sub_80E9E90; +} -- cgit v1.2.3 From 1ed15b3952a3d9f43ee8133e14c82450300795ad Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 26 Oct 2017 22:37:16 -0400 Subject: through sub_80EA20C --- src/secret_base.c | 49 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index 78647f8a0..a18dbbb0b 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -55,8 +55,8 @@ void sub_80E9E90(u8 taskId); void sub_80E9F20(u8 taskId); void sub_80E9FB0(u8 taskId); void sub_80EA06C(u8 taskId); +void sub_80EA18C(u8 taskId); void task_pc_turn_off(u8 taskId); -u8 sub_80EA18C(u8 sbId); u8 sub_80EA20C(u8 sbId); // .rodata @@ -1164,3 +1164,50 @@ void sub_80EA08C(u8 taskId) sub_80E9E00(taskId); gTasks[taskId].func = sub_80E9E90; } + +void sub_80EA120(u8 taskId) +{ + DisplayItemMessageOnField(taskId, gText_RegisteredDataDeleted, sub_80EA08C); +} + +void sub_80EA13C(u8 taskId) +{ + s16 *data; + + data = gTasks[taskId].data; + sub_8197434(0, 0); + sub_81AE6C8(data[5], &data[2], &data[1]); + sub_80E9E00(taskId); + gTasks[taskId].func = sub_80E9E90; +} + +void sub_80EA18C(u8 taskId) +{ + s16 *data; + + data = gTasks[taskId].data; + sub_80E9E44(taskId); + sub_819746C(data[7], 0); + ClearWindowTilemap(data[7]); + RemoveWindow(data[7]); + schedule_bg_copy_tilemap_to_vram(0); + gTasks[taskId].func = sub_80E9E90; +} + +void task_pc_turn_off(u8 taskId) +{ + if (VarGet(VAR_0x4054) == 0) + { + ScriptContext1_SetupScript(gUnknown_0823B4E8); + } + else + { + ScriptContext1_SetupScript(gUnknown_0823B5E9); + } + DestroyTask(taskId); +} + +u8 sub_80EA20C(u8 sbId) +{ + return (gSaveBlock1Ptr->secretBases[sbId].trainerId[0] % 5) + (gSaveBlock1Ptr->secretBases[sbId].gender * 5); +} -- cgit v1.2.3 From fcaccb85015d6c407182acbd8b78a3794f2681b1 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 26 Oct 2017 22:49:51 -0400 Subject: through sub_80EA30C --- src/secret_base.c | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index a18dbbb0b..68a663cfe 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -29,6 +29,8 @@ #include "strings.h" #include "international_string_util.h" #include "event_data.h" +#include "battle.h" +#include "rom6.h" #include "decoration.h" #include "decoration_inventory.h" #include "secret_base.h" @@ -1211,3 +1213,59 @@ u8 sub_80EA20C(u8 sbId) { return (gSaveBlock1Ptr->secretBases[sbId].trainerId[0] % 5) + (gSaveBlock1Ptr->secretBases[sbId].gender * 5); } + +const u8 *sub_80EA250(void) +{ + u8 param; + + param = sub_80EA20C(VarGet(VAR_0x4054)); + if (param == 0) + { + return gUnknown_08274966; + } + if (param == 1) + { + return gUnknown_08274D13; + } + if (param == 2) + { + return gUnknown_08274FFE; + } + if (param == 3) + { + return gUnknown_08275367; + } + if (param == 4) + { + return gUnknown_082756C7; + } + if (param == 5) + { + return gUnknown_08274B24; + } + if (param == 6) + { + return gUnknown_08274E75; + } + if (param == 7) + { + return gUnknown_082751E1; + } + if (param == 8) + { + return gUnknown_082754F6; + } + return gUnknown_082758CC; +} + +void sub_80EA2E4(void) +{ + sub_813BADC(TRUE); + gTrainerBattleOpponent_A = 0x400; + gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_SECRET_BASE; +} + +void sub_80EA30C(void) +{ + gSaveBlock1Ptr->secretBases[VarGet(VAR_0x4054)].sbr_field_1_5 = gScriptResult; +} -- cgit v1.2.3 From afcb30ccb037c1f25bc45b9b376e3331ab158352 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 26 Oct 2017 22:54:11 -0400 Subject: sub_80EA354 --- src/secret_base.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index 68a663cfe..175ad890d 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -1269,3 +1269,21 @@ void sub_80EA30C(void) { gSaveBlock1Ptr->secretBases[VarGet(VAR_0x4054)].sbr_field_1_5 = gScriptResult; } + +void sub_80EA354(void) +{ + u16 sbId; + u8 i; + + sbId = VarGet(VAR_0x4054); + if (!FlagGet(0x922)) + { + for (i = 0; i < 20; i ++) + { + gSaveBlock1Ptr->secretBases[i].sbr_field_1_5 = FALSE; + } + FlagSet(0x922); + } + gSpecialVar_0x8004 = sub_80EA20C(sbId); + gScriptResult = gSaveBlock1Ptr->secretBases[sbId].sbr_field_1_5; +} -- cgit v1.2.3 From fbfcce3f351618068d3e3215cf25462e5cd64f8f Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 26 Oct 2017 23:35:41 -0400 Subject: sub_80EA3E4 --- src/secret_base.c | 142 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 142 insertions(+) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index 175ad890d..522d59f31 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -20,6 +20,8 @@ #include "field_screen.h" #include "field_weather.h" #include "field_map_obj.h" +#include "field_effect.h" +#include "fldeff_80F9BCC.h" #include "metatile_behavior.h" #include "map_name_popup.h" #include "text.h" @@ -1287,3 +1289,143 @@ void sub_80EA354(void) gSpecialVar_0x8004 = sub_80EA20C(sbId); gScriptResult = gSaveBlock1Ptr->secretBases[sbId].sbr_field_1_5; } + + +void sub_80EA3E4(u8 taskId) +{ + s16 x; + s16 y; + u8 behavior; + u16 tileId; + s16 *data; + + data = gTasks[taskId].data; + switch (data[1]) + { + case 0: + if (VarGet(VAR_0x4054) != 0) + { + gUnknown_0203A01D = TRUE; + } + else + { + gUnknown_0203A01D = FALSE; + } + PlayerGetDestCoords(&data[2], &data[3]); + data[1] = 1; + break; + case 1: + PlayerGetDestCoords(&x, &y); + if (x != data[2] || y != data[3]) + { + data[2] = x; + data[3] = y; + VarSet(VAR_0x40EC, VarGet(VAR_0x40EC) + 1); + behavior = MapGridGetMetatileBehaviorAt(x, y); + tileId = MapGridGetMetatileIdAt(x, y); + if (tileId == 0x234 || tileId == 0x23C) + { + if (gUnknown_0203A01D == TRUE) + { + VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x20); + } + } + else if (tileId == 0x2b8 || tileId == 0x2b9 || tileId == 0x2ba || tileId == 0x2c0 || tileId == 0x2c1 || tileId == 0x2c2 || tileId == 0x2c8 || tileId == 0x2c9 || tileId == 0x2ca) + { + if (gUnknown_0203A01D == TRUE) + { + VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x01); + } + } + else if (tileId == 0x239 || tileId == 0x241 || tileId == 0x251 || tileId == 0x259) + { + if (gUnknown_0203A01D == TRUE) + { + VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x04); + } + } + else if ((behavior == 0x34 && tileId == 0x26d) || (behavior == 0x35 && MapGridGetMetatileIdAt(x, y) == 0x26a)) + { + if (gUnknown_0203A01D == TRUE) + { + VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x200); + } + } + else if (behavior == 0xc1 && tileId == 0x23d) + { + if (gUnknown_0203A01D == TRUE) + { + VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) ^ 0x1000); + VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x2000); + } + } + else if (behavior == 0x47 && tileId == 0x23e) + { + if (gUnknown_0203A01D == TRUE) + { + VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x1000); + VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) ^ 0x2000); + } + } + else if (MetatileBehavior_IsSecretBaseGlitterMat(behavior) == TRUE) + { + if (gUnknown_0203A01D == TRUE) + { + VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x80); + } + } + else if (MetatileBehavior_IsSecretBaseBalloon(behavior) == TRUE) + { + sub_80FA5E4(MapGridGetMetatileIdAt(x, y), x, y); + if (gUnknown_0203A01D == TRUE) + { + switch ((int)MapGridGetMetatileIdAt(x, y)) + { + case 0x338: + case 0x33c: + case 0x340: + VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x02); + break; + case 0x228: + VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x100); + break; + } + } + } + else if (MetatileBehavior_IsMB_BE(behavior) == TRUE) + { + if (gUnknown_0203A01D == TRUE) + { + VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x400); + } + sub_80FA794(x, y); + } + else if (MetatileBehavior_IsSecretBaseSoundMat(behavior) == TRUE){ + if (gUnknown_0203A01D == TRUE) { + VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x8000); + } + } + else if (MetatileBehavior_IsSecretBaseJumpMat(behavior) == TRUE) + { + if (gUnknown_0203A01D == TRUE) + { + VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x4000); + } + } + else if (MetatileBehavior_IsSecretBaseSpinMat(behavior) == TRUE) + { + if (gUnknown_0203A01D == TRUE) + { + VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x02); + } + } + } + break; + case 2: + if (!FieldEffectActiveListContains(data[4])) + { + data[1] = 1; + } + break; + } +} -- cgit v1.2.3 From bef07a4bba7554c01086f2d28b9f42528fd34848 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 27 Oct 2017 08:29:58 -0400 Subject: sub_80EA828 --- src/secret_base.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index 522d59f31..68b66a6ef 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -1429,3 +1429,31 @@ void sub_80EA3E4(u8 taskId) break; } } + +void sub_80EA828(u8 sbId, struct SecretBaseRecord *base, u32 version, u32 language) +{ + int strlen; + u8 *name; + + gSaveBlock1Ptr->secretBases[sbId] = *base; + gSaveBlock1Ptr->secretBases[sbId].sbr_field_1_6 = 2; + if (version == VERSION_SAPPHIRE || version == VERSION_RUBY) + { + gSaveBlock1Ptr->secretBases[sbId].language = LANGUAGE_ENGLISH; + } + if (version == VERSION_EMERALD && language == LANGUAGE_JAPANESE) + { + name = gSaveBlock1Ptr->secretBases[sbId].trainerName; + for (strlen = 0; strlen < 7; strlen ++) + { + if (name[strlen] == EOS) + { + break; + } + } + if (strlen > 5) + { + gSaveBlock1Ptr->secretBases[sbId].language = LANGUAGE_ENGLISH; + } + } +} -- cgit v1.2.3 From f61795ab47f77cb3b55378ee75f445897901149b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 27 Oct 2017 08:38:54 -0400 Subject: through sub_80EA990 --- src/secret_base.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index 68b66a6ef..b30c913b2 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -1457,3 +1457,53 @@ void sub_80EA828(u8 sbId, struct SecretBaseRecord *base, u32 version, u32 langua } } } + +bool8 sub_80EA8D4(struct SecretBaseRecord *sbr1, struct SecretBaseRecord *sbr2) +{ + u8 i; + for (i = 0; i < 4; i ++) + { + if (sbr1->trainerId[i] != sbr2->trainerId[i]) + { + return FALSE; + } + } + return TRUE; +} + +bool8 sub_80EA904(struct SecretBaseRecord *sbr1, struct SecretBaseRecord *sbr2) +{ + u8 i; + + for (i = 0; i < OT_NAME_LENGTH && (sbr1->trainerName[i] != EOS || sbr2->trainerName[i] != EOS); i++) + { + if (sbr1->trainerName[i] != sbr2->trainerName[i]) + { + return FALSE; + } + } + return TRUE; +} + +bool8 sub_80EA950(struct SecretBaseRecord *sbr1, struct SecretBaseRecord *sbr2) +{ + if (sbr1->gender == sbr2->gender && sub_80EA8D4(sbr1, sbr2) && sub_80EA904(sbr1, sbr2)) + { + return TRUE; + } + return FALSE; +} + +s16 sub_80EA990(u8 sbId) +{ + s16 i; + + for (i = 0; i < 20; i ++) + { + if (gSaveBlock1Ptr->secretBases[i].secretBaseId == sbId) + { + return i; + } + } + return -1; +} -- cgit v1.2.3 From 75b52fe80aefd2a6e557fb326f0bce79e1e5a158 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 27 Oct 2017 08:43:10 -0400 Subject: through sub_80EAA18 --- src/secret_base.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index b30c913b2..ddef4938b 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -1507,3 +1507,31 @@ s16 sub_80EA990(u8 sbId) } return -1; } + +u8 sub_80EA9D8(void) +{ + s16 i; + + for (i = 1; i < 20; i ++) + { + if (gSaveBlock1Ptr->secretBases[i].secretBaseId == 0) + { + return i; + } + } + return 0; +} + +u8 sub_80EAA18(void) +{ + s16 i; + + for (i = 1; i < 20; i ++) + { + if (gSaveBlock1Ptr->secretBases[i].sbr_field_1_6 == 0 && gSaveBlock1Ptr->secretBases[i].sbr_field_1_0 == 0) + { + return i; + } + } + return 0; +} -- cgit v1.2.3 From aa134d42fbcb7fe71cb701b792453dd75df529c8 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 27 Oct 2017 20:32:05 -0400 Subject: sub_80EAA64 --- src/secret_base.c | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index ddef4938b..83ae067a3 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -1535,3 +1535,45 @@ u8 sub_80EAA18(void) } return 0; } + +u8 sub_80EAA64(struct SecretBaseRecord *base, u32 version, u32 language) +{ + s16 sbId; + + if (base->secretBaseId == 0) + { + return 0; + } + sbId = sub_80EA990(base->secretBaseId); + if (sbId != 0) + { + if (sbId != -1) + { + if (gSaveBlock1Ptr->secretBases[sbId].sbr_field_1_0 == 1) + { + return 0; + } + if (gSaveBlock1Ptr->secretBases[sbId].sbr_field_1_6 != 2 || base->sbr_field_1_0 == 1) + { + sub_80EA828(sbId, base, version, language); + return sbId; + } + } + else + { + sbId = sub_80EA9D8(); + if (sbId != 0) + { + sub_80EA828(sbId, base, version, language); + return sbId; + } + sbId = sub_80EAA18(); + if (sbId != 0) + { + sub_80EA828(sbId, base, version, language); + return sbId; + } + } + } + return 0; +} -- cgit v1.2.3 From 5ac53054a83e5c8cab8fe72d8178d1d1b6257674 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 27 Oct 2017 20:39:02 -0400 Subject: sub_80EAAF4 --- src/secret_base.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index 83ae067a3..ed4361f40 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -1577,3 +1577,25 @@ u8 sub_80EAA64(struct SecretBaseRecord *base, u32 version, u32 language) } return 0; } + +void sub_80EAAF4(void) +{ + u8 i; + u8 j; + struct SecretBaseRecord base; + struct SecretBaseRecord *secretBases; + + secretBases = gSaveBlock1Ptr->secretBases; + for (i = 1; i < 19; i ++) + { + for (j = i + 1; j < 20; j ++) + { + if ((secretBases[i].sbr_field_1_6 == 0 && secretBases[j].sbr_field_1_6 == 1) || (secretBases[i].sbr_field_1_6 == 2 && secretBases[j].sbr_field_1_6 != 2)) + { + base = secretBases[i]; + secretBases[i] = secretBases[j]; + secretBases[j] = base; + } + } + } +} -- cgit v1.2.3 From b30232a2e8dca235240715d0dcfa61e261cadda5 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 27 Oct 2017 20:47:07 -0400 Subject: sub_80EABA4 --- src/secret_base.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index ed4361f40..f3b59facf 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -1599,3 +1599,16 @@ void sub_80EAAF4(void) } } } + +void sub_80EABA4(u32 *args, u8 b) +{ + u16 i; + + for (i = 1; i < 20; i ++) + { + if (((struct SecretBaseRecord *)args[0])[i].sbr_field_1_6 == b) + { + sub_80EAA64(&((struct SecretBaseRecord *)args[0])[i], args[1], args[2]); + } + } +} -- cgit v1.2.3 From d60ae05cbb801fe9e94de7f520e9726aec614679 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 27 Oct 2017 20:50:32 -0400 Subject: sub_80EABDC --- src/secret_base.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index f3b59facf..0434190d6 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -1612,3 +1612,29 @@ void sub_80EABA4(u32 *args, u8 b) } } } + +bool8 sub_80EABDC(struct SecretBaseRecord *secretBase) +{ + u8 i; + + if (secretBase->secretBaseId == 0) + return FALSE; + + if (secretBase->secretBaseId && secretBase->gender != gSaveBlock2Ptr->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] != gSaveBlock2Ptr->playerTrainerId[i]) + return FALSE; + } + + for (i = 0; i < OT_NAME_LENGTH && (secretBase->trainerName[i] != EOS || gSaveBlock2Ptr->playerName[i] != EOS); i ++) + { + if (secretBase->trainerName[i] != gSaveBlock2Ptr->playerName[i]) + return FALSE; + } + + return TRUE; +} -- cgit v1.2.3 From 5aaa4c099b077df27ae0a04369c8493a5923334b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 27 Oct 2017 20:57:46 -0400 Subject: DeleteFirstOldBaseFromPlayerInRecordMixingFriendsRecords --- src/secret_base.c | 51 ++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 46 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index 0434190d6..508ea429f 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -79,7 +79,7 @@ extern const struct YesNoFuncTable gUnknown_0858D058; // .text -void sub_80E8AF0(struct SecretBaseRecord *sbr) +void ClearSecretBase(struct SecretBaseRecord *sbr) { u16 i; @@ -96,7 +96,7 @@ void ResetSecretBases(void) for (i = 0; i < 20; i ++) { - sub_80E8AF0(&gSaveBlock1Ptr->secretBases[i]); + ClearSecretBase(&gSaveBlock1Ptr->secretBases[i]); } } @@ -881,7 +881,7 @@ void sub_80E9A90(void) u16 sbr_e; sbr_e = gSaveBlock1Ptr->secretBases[0].sbr_field_e; - sub_80E8AF0(&gSaveBlock1Ptr->secretBases[0]); + ClearSecretBase(&gSaveBlock1Ptr->secretBases[0]); gSaveBlock1Ptr->secretBases[0].sbr_field_e = sbr_e; sub_80E9728(); } @@ -926,7 +926,7 @@ void sub_80E9B70(void) sub_80E9AD0(); IncrementGameStat(GAME_STAT_MOVED_SECRET_BASE); sbr_e = gSaveBlock1Ptr->secretBases[0].sbr_field_e; - sub_80E8AF0(&gSaveBlock1Ptr->secretBases[0]); + ClearSecretBase(&gSaveBlock1Ptr->secretBases[0]); gSaveBlock1Ptr->secretBases[0].sbr_field_e = sbr_e; } @@ -1613,7 +1613,7 @@ void sub_80EABA4(u32 *args, u8 b) } } -bool8 sub_80EABDC(struct SecretBaseRecord *secretBase) +bool8 DoesSecretBaseBelongToPlayer(struct SecretBaseRecord *secretBase) { u8 i; @@ -1638,3 +1638,44 @@ bool8 sub_80EABDC(struct SecretBaseRecord *secretBase) return TRUE; } + +void DeleteFirstOldBaseFromPlayerInRecordMixingFriendsRecords(struct SecretBaseRecord *basesA, struct SecretBaseRecord *basesB, struct SecretBaseRecord *basesC) +{ + u8 i; + u8 sbFlags = 0x0; + + for (i = 0; i < 20; i++) + { + if (!(sbFlags & 0x1)) // 001 + { + if (DoesSecretBaseBelongToPlayer(&basesA[i]) == TRUE) + { + ClearSecretBase(&basesA[i]); + sbFlags |= 1; + } + } + + if (!(sbFlags & 0x2)) // 010 + { + if (DoesSecretBaseBelongToPlayer(&basesB[i]) == TRUE) + { + ClearSecretBase(&basesB[i]); + sbFlags |= 2; + } + } + + if (!(sbFlags & 0x4)) // 100 + { + if (DoesSecretBaseBelongToPlayer(&basesC[i]) == TRUE) + { + ClearSecretBase(&basesC[i]); + sbFlags |= 4; + } + } + + if (sbFlags == 0x7) // 111 + { + break; + } + } +} -- cgit v1.2.3 From 3d01d999c6a93778c204f5c3978f388b870ac2bb Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 27 Oct 2017 21:00:59 -0400 Subject: sub_80EAD14 --- src/secret_base.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index 508ea429f..2d74c2546 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -1679,3 +1679,36 @@ void DeleteFirstOldBaseFromPlayerInRecordMixingFriendsRecords(struct SecretBaseR } } } + +bool8 sub_80EAD14(struct SecretBaseRecord *base, struct SecretBaseRecord *secretBases, u8 c) +{ + u8 i; + + for (i = 0; i < 20; i++) + { + if (secretBases[i].secretBaseId != 0) + { + if (sub_80EA950(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; +} -- cgit v1.2.3 From 6341dbf61f8a96fa65c581cf5d552e5beb11cd0c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 27 Oct 2017 21:03:27 -0400 Subject: sub_80EAD94 --- src/secret_base.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 48 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index 2d74c2546..f21f85937 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -1644,7 +1644,7 @@ void DeleteFirstOldBaseFromPlayerInRecordMixingFriendsRecords(struct SecretBaseR u8 i; u8 sbFlags = 0x0; - for (i = 0; i < 20; i++) + for (i = 0; i < 20; i ++) { if (!(sbFlags & 0x1)) // 001 { @@ -1684,7 +1684,7 @@ bool8 sub_80EAD14(struct SecretBaseRecord *base, struct SecretBaseRecord *secret { u8 i; - for (i = 0; i < 20; i++) + for (i = 0; i < 20; i ++) { if (secretBases[i].secretBaseId != 0) { @@ -1712,3 +1712,49 @@ bool8 sub_80EAD14(struct SecretBaseRecord *base, struct SecretBaseRecord *secret return FALSE; } + +void sub_80EAD94(struct SecretBaseRecord *basesA, struct SecretBaseRecord *basesB, struct SecretBaseRecord *basesC, struct SecretBaseRecord *basesD) +{ + u8 i; + + for (i = 1; i < 20; i ++) + { + if (basesA[i].secretBaseId) + { + if (basesA[i].sbr_field_1_6 == 1) + { + basesA[i].sbr_field_1_0 = 1; + } + if (!sub_80EAD14(&basesA[i], basesB, i)) + { + if (!sub_80EAD14(&basesA[i], basesC, i)) + { + sub_80EAD14(&basesA[i], basesD, i); + } + } + } + } + for (i = 0; i < 20; i ++) + { + if (basesB[i].secretBaseId) + { + basesB[i].sbr_field_1_5 = 0; + if (!sub_80EAD14(&basesB[i], basesC, i)) + { + sub_80EAD14(&basesB[i], basesD, i); + } + } + } + for (i = 0; i < 20; i ++) + { + if (basesC[i].secretBaseId) + { + basesC[i].sbr_field_1_5 = 0; + sub_80EAD14(&basesC[i], basesD, i); + } + if (basesD[i].secretBaseId) + { + basesD[i].sbr_field_1_5 = 0; + } + } +} -- cgit v1.2.3 From 8634537b8b099f0bb60f15406c2bdfacf715e455 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 27 Oct 2017 21:17:17 -0400 Subject: through sub_80EAEF4 --- src/secret_base.c | 49 ++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 46 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index f21f85937..7a443e91e 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -44,6 +44,12 @@ struct SecretBaseListMenuBuffer { u8 names[11][32]; }; +struct SecretBaseRecordMixer { + struct SecretBaseRecord *records; + u32 version; + u32 language; +}; + // Static RAM declarations EWRAM_DATA u8 sCurSecretBaseId = 0; EWRAM_DATA u8 gUnknown_0203A01D = 0; @@ -1600,15 +1606,15 @@ void sub_80EAAF4(void) } } -void sub_80EABA4(u32 *args, u8 b) +void sub_80EABA4(struct SecretBaseRecordMixer *mixer, u8 b) { u16 i; for (i = 1; i < 20; i ++) { - if (((struct SecretBaseRecord *)args[0])[i].sbr_field_1_6 == b) + if (mixer->records[i].sbr_field_1_6 == b) { - sub_80EAA64(&((struct SecretBaseRecord *)args[0])[i], args[1], args[2]); + sub_80EAA64(&mixer->records[i], mixer->version, mixer->language); } } } @@ -1758,3 +1764,40 @@ void sub_80EAD94(struct SecretBaseRecord *basesA, struct SecretBaseRecord *bases } } } + +void sub_80EAE90(struct SecretBaseRecord *base, u32 version, u32 language) +{ + if (base->sbr_field_1_0 == 1) + { + sub_80EAA64(base, version, language); + ClearSecretBase(base); + } +} + +void sub_80EAEB4(struct SecretBaseRecordMixer *mixer) +{ + u16 i; + + for (i = 0; i < 20; i ++) + { + sub_80EAE90(&mixer[0].records[i], mixer[0].version, mixer[0].language); + sub_80EAE90(&mixer[1].records[i], mixer[1].version, mixer[1].language); + sub_80EAE90(&mixer[2].records[i], mixer[2].version, mixer[2].language); + } +} + +void sub_80EAEF4(struct SecretBaseRecordMixer *mixer) +{ + DeleteFirstOldBaseFromPlayerInRecordMixingFriendsRecords(mixer[0].records, mixer[1].records, mixer[2].records); + sub_80EAD94(gSaveBlock1Ptr->secretBases, mixer[0].records, mixer[1].records, mixer[2].records); + sub_80EAEB4(mixer); + sub_80EAA64(mixer[0].records, mixer[0].version, mixer[0].language); + sub_80EAA64(mixer[1].records, mixer[1].version, mixer[1].language); + sub_80EAA64(mixer[2].records, mixer[2].version, mixer[2].language); + sub_80EABA4(&mixer[0], 1); + sub_80EABA4(&mixer[1], 1); + sub_80EABA4(&mixer[2], 1); + sub_80EABA4(&mixer[0], 0); + sub_80EABA4(&mixer[1], 0); + sub_80EABA4(&mixer[2], 0); +} -- cgit v1.2.3 From d17ff9430a78f47b8a9472d1e24d8badd09d7ed6 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 27 Oct 2017 21:55:07 -0400 Subject: sub_80EAF80 --- src/secret_base.c | 123 ++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 106 insertions(+), 17 deletions(-) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index 7a443e91e..d6c4786f1 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -35,6 +35,7 @@ #include "rom6.h" #include "decoration.h" #include "decoration_inventory.h" +#include "link.h" #include "secret_base.h" // Static type declarations @@ -1774,30 +1775,118 @@ void sub_80EAE90(struct SecretBaseRecord *base, u32 version, u32 language) } } -void sub_80EAEB4(struct SecretBaseRecordMixer *mixer) +void sub_80EAEB4(struct SecretBaseRecordMixer *mixers) { u16 i; for (i = 0; i < 20; i ++) { - sub_80EAE90(&mixer[0].records[i], mixer[0].version, mixer[0].language); - sub_80EAE90(&mixer[1].records[i], mixer[1].version, mixer[1].language); - sub_80EAE90(&mixer[2].records[i], mixer[2].version, mixer[2].language); + sub_80EAE90(&mixers[0].records[i], mixers[0].version, mixers[0].language); + sub_80EAE90(&mixers[1].records[i], mixers[1].version, mixers[1].language); + sub_80EAE90(&mixers[2].records[i], mixers[2].version, mixers[2].language); } } -void sub_80EAEF4(struct SecretBaseRecordMixer *mixer) +void sub_80EAEF4(struct SecretBaseRecordMixer *mixers) { - DeleteFirstOldBaseFromPlayerInRecordMixingFriendsRecords(mixer[0].records, mixer[1].records, mixer[2].records); - sub_80EAD94(gSaveBlock1Ptr->secretBases, mixer[0].records, mixer[1].records, mixer[2].records); - sub_80EAEB4(mixer); - sub_80EAA64(mixer[0].records, mixer[0].version, mixer[0].language); - sub_80EAA64(mixer[1].records, mixer[1].version, mixer[1].language); - sub_80EAA64(mixer[2].records, mixer[2].version, mixer[2].language); - sub_80EABA4(&mixer[0], 1); - sub_80EABA4(&mixer[1], 1); - sub_80EABA4(&mixer[2], 1); - sub_80EABA4(&mixer[0], 0); - sub_80EABA4(&mixer[1], 0); - sub_80EABA4(&mixer[2], 0); + DeleteFirstOldBaseFromPlayerInRecordMixingFriendsRecords(mixers[0].records, mixers[1].records, mixers[2].records); + sub_80EAD94(gSaveBlock1Ptr->secretBases, mixers[0].records, mixers[1].records, mixers[2].records); + sub_80EAEB4(mixers); + sub_80EAA64(mixers[0].records, mixers[0].version, mixers[0].language); + sub_80EAA64(mixers[1].records, mixers[1].version, mixers[1].language); + sub_80EAA64(mixers[2].records, mixers[2].version, mixers[2].language); + sub_80EABA4(&mixers[0], 1); + sub_80EABA4(&mixers[1], 1); + sub_80EABA4(&mixers[2], 1); + sub_80EABA4(&mixers[0], 0); + sub_80EABA4(&mixers[1], 0); + sub_80EABA4(&mixers[2], 0); +} + +void sub_80EAF80(void *records, size_t recordSize, u8 linkIdx) +{ + struct SecretBaseRecordMixer mixers[3]; + u16 i; + + if (FlagGet(0x60)) + { + switch (GetLinkPlayerCount()) + { + case 2: + memset(records + 2 * recordSize, 0, recordSize); + memset(records + 3 * recordSize, 0, recordSize); + break; + case 3: + memset(records + 3 * recordSize, 0, recordSize); + break; + } + switch (linkIdx) + { + case 0: + mixers[0].records = records + 1 * recordSize; + mixers[0].version = gLinkPlayers[1].version & 0xFF; + mixers[0].language = gLinkPlayers[1].language; + mixers[1].records = records + 2 * recordSize; + mixers[1].version = gLinkPlayers[2].version & 0xFF; + mixers[1].language = gLinkPlayers[2].language; + mixers[2].records = records + 3 * recordSize; + mixers[2].version = gLinkPlayers[3].version & 0xFF; + mixers[2].language = gLinkPlayers[3].language; + break; + case 1: + mixers[0].records = records + 2 * recordSize; + mixers[0].version = gLinkPlayers[2].version & 0xFF; + mixers[0].language = gLinkPlayers[2].language; + mixers[1].records = records + 3 * recordSize; + mixers[1].version = gLinkPlayers[3].version & 0xFF; + mixers[1].language = gLinkPlayers[3].language; + mixers[2].records = records + 0 * recordSize; + mixers[2].version = gLinkPlayers[0].version & 0xFF; + mixers[2].language = gLinkPlayers[0].language; + break; + case 2: + mixers[0].records = records + 3 * recordSize; + mixers[0].version = gLinkPlayers[3].version & 0xFF; + mixers[0].language = gLinkPlayers[3].language; + mixers[1].records = records + 0 * recordSize; + mixers[1].version = gLinkPlayers[0].version & 0xFF; + mixers[1].language = gLinkPlayers[0].language; + mixers[2].records = records + 1 * recordSize; + mixers[2].version = gLinkPlayers[1].version & 0xFF; + mixers[2].language = gLinkPlayers[1].language; + break; + case 3: + mixers[0].records = records + 0 * recordSize; + mixers[0].version = gLinkPlayers[0].version & 0xFF; + mixers[0].language = gLinkPlayers[0].language; + mixers[1].records = records + 1 * recordSize; + mixers[1].version = gLinkPlayers[1].version & 0xFF; + mixers[1].language = gLinkPlayers[1].language; + mixers[2].records = records + 2 * recordSize; + mixers[2].version = gLinkPlayers[2].version & 0xFF; + mixers[2].language = gLinkPlayers[2].language; + break; + } + sub_80EAEF4(mixers); + for (i = 1; i < 20; i ++) + { + if (gSaveBlock1Ptr->secretBases[i].sbr_field_1_0 == 1) + { + gSaveBlock1Ptr->secretBases[i].sbr_field_1_6 = 1; + gSaveBlock1Ptr->secretBases[i].sbr_field_1_0 = 0; + } + } + sub_80EAAF4(); + for (i = 1; i < 20; i ++) + { + if (gSaveBlock1Ptr->secretBases[i].sbr_field_1_6 == 2) + { + gSaveBlock1Ptr->secretBases[i].sbr_field_1_6 = 0; + } + } + if (gSaveBlock1Ptr->secretBases[0].secretBaseId != 0 && gSaveBlock1Ptr->secretBases[0].sbr_field_e != 0xFFFF) + { + gSaveBlock1Ptr->secretBases[0].sbr_field_e ++; + } + } } -- cgit v1.2.3 From 9c3a79f3deb31e36e809f2c3be85e1925cc19296 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 27 Oct 2017 22:12:11 -0400 Subject: through sub_80EB218 --- src/secret_base.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index d6c4786f1..081848513 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -36,6 +36,7 @@ #include "decoration.h" #include "decoration_inventory.h" #include "link.h" +#include "tv.h" #include "secret_base.h" // Static type declarations @@ -1890,3 +1891,48 @@ void sub_80EAF80(void *records, size_t recordSize, u8 linkIdx) } } } + +void sub_80EB18C(struct SecretBaseRecord *bases) +{ + u32 i; + + for (i = 0; i < 20; i ++) + { + if (bases[i].language == LANGUAGE_JAPANESE) + { + ClearSecretBase(&bases[i]); + } + } +} + +void sub_80EB1AC(void) +{ + VarSet(VAR_0x40EC, 0); + VarSet(VAR_0x40ED, 0); + VarSet(VAR_0x40EE, 0); + VarSet(VAR_0x40EF, 0); + if (VarGet(VAR_0x4054) != 0) + { + VarSet(VAR_0x40F0, TRUE); + } + else + { + VarSet(VAR_0x40F0, FALSE); + } + gUnknown_0203A01D = FALSE; +} + +void sub_80EB218(void) +{ + if (VarGet(VAR_0x40F0) && gUnknown_0203A01D == TRUE && !CurrentMapIsSecretBase()) + { + VarSet(VAR_0x40F0, FALSE); + gUnknown_0203A01D = FALSE; + sub_80EEA70(); + VarSet(VAR_0x40EC, 0); + VarSet(VAR_0x40ED, 0); + VarSet(VAR_0x40EE, 0); + VarSet(VAR_0x40EF, 0); + VarSet(VAR_0x40F0, FALSE); + } +} -- cgit v1.2.3 From b8b2a7ca40e9d142dcec7762ec3b2a8f6067dcac Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 27 Oct 2017 22:20:13 -0400 Subject: through sub_80EB438 --- src/secret_base.c | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index 081848513..59df47989 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -1936,3 +1936,59 @@ void sub_80EB218(void) VarSet(VAR_0x40F0, FALSE); } } + +void sub_80EB290(void) +{ + if (VarGet(VAR_0x4054) != 0) + { + VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x800); + } +} + +void sub_80EB2C8(void) +{ + if (VarGet(VAR_0x4054) != 0) + { + VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x400); + } +} + +void sub_80EB300(void) +{ + if (VarGet(VAR_0x4054) != 0) + { + VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) & ~0x3800); + VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) & ~0x001); + VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x2000); + } +} + +void sub_80EB368(void) +{ + if (VarGet(VAR_0x4054) != 0) + { + VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) & ~0x3800); + VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) & ~0x001); + VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x800); + } +} + +void sub_80EB3D0(void) +{ + if (VarGet(VAR_0x4054) != 0) + { + VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) & ~0x3800); + VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) & ~0x001); + VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x1000); + } +} + +void sub_80EB438(void) +{ + if (VarGet(VAR_0x4054) != 0) + { + VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) & ~0x3800); + VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) & ~0x001); + VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x001); + } +} -- cgit v1.2.3 From 69d206c2558b4df3b30712adfbbb45b2dd360d53 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 27 Oct 2017 22:24:54 -0400 Subject: sub_80EB498 --- src/secret_base.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index 59df47989..bbbf8bd31 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -1992,3 +1992,34 @@ void sub_80EB438(void) VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x001); } } + +void sub_80EB498(void) +{ + s16 x; + s16 y; + + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); + switch (MapGridGetMetatileIdAt(x, y)) + { + case 0x31C: + case 0x31D: + case 0x31E: + case 0x31F: + case 0x324: + case 0x325: + case 0x326: + case 0x327: + case 0x32C: + case 0x32D: + case 0x330: + case 0x331: + case 0x332: + case 0x333: + case 0x334: + if (VarGet(VAR_0x4054) != 0) + { + VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x4000); + } + break; + } +} -- cgit v1.2.3 From 939d728405536af2c7f3b9f58dc639203773c2e9 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 27 Oct 2017 22:34:38 -0400 Subject: sub_80EB56C --- src/secret_base.c | 91 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index bbbf8bd31..a51cd0ff9 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -2023,3 +2023,94 @@ void sub_80EB498(void) break; } } + +void sub_80EB56C(void) +{ + s16 x; + s16 y; + + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); + switch (MapGridGetMetatileIdAt(x, y)) + { + case 0x28a: + case 0x28b: + if (VarGet(VAR_0x4054) != 0) + { + VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x40); + } + break; + case 0x2d8: + case 0x2d9: + case 0x2da: + case 0x2db: + case 0x2dc: + case 0x2dd: + case 0x2e8: + case 0x2e9: + case 0x2ea: + case 0x2eb: + case 0x2ec: + case 0x2ed: + case 0x2ee: + case 0x2ef: + case 0x2f8: + case 0x2f9: + case 0x2fa: + case 0x2fb: + if (VarGet(VAR_0x4054) != 0) + { + VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x8); + } + break; + case 0x22c: + case 0x233: + if (VarGet(VAR_0x4054) != 0) + { + VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x40); + } + break; + case 0x288: + case 0x289: + if (VarGet(VAR_0x4054) != 0) + { + VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x100); + } + break; + case 0x22d: + case 0x22e: + case 0x22f: + if (VarGet(VAR_0x4054) != 0) + { + VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x10); + } + break; + case 0x287: + case 0x28f: + case 0x298: + case 0x299: + case 0x29a: + case 0x29b: + case 0x29c: + case 0x29d: + case 0x29e: + case 0x29f: + case 0x2ab: + case 0x2b0: + case 0x2b1: + case 0x2b2: + case 0x2b4: + case 0x2b5: + case 0x2b6: + case 0x2b7: + case 0x2cb: + case 0x2cc: + case 0x2cd: + case 0x2ce: + case 0x2cf: + if (VarGet(VAR_0x4054) != 0) + { + VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x8); + } + break; + } +} -- cgit v1.2.3 From 9a5320135bbb811250c943fdf57c1fd49d2fb7e4 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 27 Oct 2017 22:38:33 -0400 Subject: sub_80EB9E0 --- src/secret_base.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index a51cd0ff9..b17575a9b 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -2114,3 +2114,30 @@ void sub_80EB56C(void) break; } } + +void sub_80EB9E0(void) +{ + s16 x; + s16 y; + + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); + switch (MapGridGetMetatileIdAt(x, y)) + { + case 0x291: + case 0x294: + case 0x297: + case 0x2a1: + case 0x2a5: + case 0x2a9: + case 0x2ad: + case 0x2bb: + case 0x2be: + case 0x2c3: + case 0x2c6: + if (VarGet(VAR_0x4054) != 0) + { + VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x8); + } + break; + } +} -- cgit v1.2.3 From f601525474f6f7ec6c0fb2b1956bc0b0efa6c815 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 27 Oct 2017 22:43:11 -0400 Subject: sub_80EBB28 --- src/secret_base.c | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index b17575a9b..4cdaf02a8 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -2141,3 +2141,56 @@ void sub_80EB9E0(void) break; } } + +void sub_80EBB28(void) +{ + s16 x; + s16 y; + + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); + switch (MapGridGetMetatileIdAt(x, y)) + { + case 0x290: + case 0x292: + case 0x293: + case 0x295: + case 0x296: + case 0x2a0: + case 0x2a2: + case 0x2a3: + case 0x2a4: + case 0x2a6: + case 0x2a7: + case 0x2a8: + case 0x2aa: + case 0x2ac: + case 0x2ae: + case 0x2af: + case 0x2bc: + case 0x2bd: + case 0x2bf: + case 0x2c4: + case 0x2c5: + case 0x2c7: + if (VarGet(VAR_0x4054) != 0) + { + VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x8); + } + break; + case 0x280: + case 0x281: + if (VarGet(VAR_0x4054) != 0) + { + VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x100); + } + break; + case 0x225: + case 0x226: + case 0x227: + if (VarGet(VAR_0x4054) != 0) + { + VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x10); + } + break; + } +} -- cgit v1.2.3 From 4c274f60305c0daaaa126ae08fc1f4b731a74101 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 27 Oct 2017 22:46:57 -0400 Subject: Last remaining function in secret base --- src/secret_base.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index 4cdaf02a8..c8214f189 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -2194,3 +2194,21 @@ void sub_80EBB28(void) break; } } + +void sub_80EBE7C(void) +{ + s16 x; + s16 y; + + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); + switch ((int)MapGridGetMetatileIdAt(x, y)) + { + case 0x28d: + case 0x28e: + if (VarGet(VAR_0x4054) != 0) + { + VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x4); + } + break; + } +} -- cgit v1.2.3 From a5951592be1495e8ac32830d091a36d9eb9eefcf Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 27 Oct 2017 23:21:09 -0400 Subject: Decompile data --- src/secret_base.c | 78 ++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 69 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index c8214f189..22d675ec7 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -61,29 +61,89 @@ EWRAM_DATA struct SecretBaseListMenuBuffer *gUnknown_0203A020 = NULL; void sub_80E9C9C(u8 taskId); void game_continue(u8 taskId); +void sub_80E9DEC(u32 a0, bool8 flag, struct ListMenu *menu); void sub_80E9E00(u8 taskId); void sub_80E9E44(u8 taskId); void sub_80E9E90(u8 taskId); void sub_80E9F20(u8 taskId); void sub_80E9FB0(u8 taskId); +void sub_80E9FFC(u8 taskId); void sub_80EA06C(u8 taskId); +void sub_80EA120(u8 taskId); +void sub_80EA13C(u8 taskId); void sub_80EA18C(u8 taskId); void task_pc_turn_off(u8 taskId); u8 sub_80EA20C(u8 sbId); // .rodata -extern const struct { +const struct { u16 tile1; u16 tile2; -} gUnknown_0858CFCC[7]; +} gUnknown_0858CFCC[] = { + {0x0026, 0x0036}, + {0x0027, 0x0037}, + {0x01a0, 0x01a1}, + {0x01a8, 0x01a9}, + {0x01b0, 0x01b1}, + {0x0208, 0x0210}, + {0x0271, 0x0278} +}; + +const u8 gUnknown_0858CFE8[] = { + MAP_ID_SECRET_BASE_RED_CAVE1, 0x00, 0x01, 0x03, + MAP_ID_SECRET_BASE_RED_CAVE2, 0x00, 0x05, 0x09, + MAP_ID_SECRET_BASE_RED_CAVE3, 0x00, 0x01, 0x03, + MAP_ID_SECRET_BASE_RED_CAVE4, 0x00, 0x07, 0x0d, + MAP_ID_SECRET_BASE_BROWN_CAVE1, 0x00, 0x02, 0x03, + MAP_ID_SECRET_BASE_BROWN_CAVE2, 0x00, 0x09, 0x02, + MAP_ID_SECRET_BASE_BROWN_CAVE3, 0x00, 0x0d, 0x04, + MAP_ID_SECRET_BASE_BROWN_CAVE4, 0x00, 0x01, 0x02, + MAP_ID_SECRET_BASE_BLUE_CAVE1, 0x00, 0x01, 0x03, + MAP_ID_SECRET_BASE_BLUE_CAVE2, 0x00, 0x01, 0x02, + MAP_ID_SECRET_BASE_BLUE_CAVE3, 0x00, 0x03, 0x0f, + MAP_ID_SECRET_BASE_BLUE_CAVE4, 0x00, 0x03, 0x0e, + MAP_ID_SECRET_BASE_YELLOW_CAVE1, 0x00, 0x09, 0x03, + MAP_ID_SECRET_BASE_YELLOW_CAVE2, 0x00, 0x08, 0x07, + MAP_ID_SECRET_BASE_YELLOW_CAVE3, 0x00, 0x03, 0x06, + MAP_ID_SECRET_BASE_YELLOW_CAVE4, 0x00, 0x05, 0x09, + MAP_ID_SECRET_BASE_TREE1, 0x00, 0x02, 0x03, + MAP_ID_SECRET_BASE_TREE2, 0x00, 0x05, 0x06, + MAP_ID_SECRET_BASE_TREE3, 0x00, 0x0f, 0x03, + MAP_ID_SECRET_BASE_TREE4, 0x00, 0x04, 0x0a, + MAP_ID_SECRET_BASE_SHRUB1, 0x00, 0x03, 0x03, + MAP_ID_SECRET_BASE_SHRUB2, 0x00, 0x01, 0x02, + MAP_ID_SECRET_BASE_SHRUB3, 0x00, 0x07, 0x08, + MAP_ID_SECRET_BASE_SHRUB4, 0x00, 0x09, 0x06 +}; + +const struct MenuAction gUnknown_0858D048[] = { + {gUnknown_085EA79D, {.void_u8 = sub_80E9FFC}}, + {gText_Cancel, {.void_u8 = sub_80EA18C}} +}; + +const struct YesNoFuncTable gUnknown_0858D058 = { + sub_80EA120, sub_80EA13C +}; + +const u8 gUnknown_0858D060[10] = { + 0x23, 0x24, 0x0f, 0x1f, 0x21, + 0x2f, 0x0e, 0x14, 0x20, 0x22 +}; -extern const u8 gUnknown_0858CFE8[]; -extern const u8 gUnknown_0858D060[]; -extern const struct WindowTemplate gUnknown_0858D06C[]; -extern const struct ListMenuTemplate gUnknown_0858D07C; -extern const struct MenuAction gUnknown_0858D048[]; -extern const struct YesNoFuncTable gUnknown_0858D058; +const struct WindowTemplate gUnknown_0858D06C[] = { + { 0, 18, 1, 11, 18, 15, 0x01 }, + { 0, 2, 1, 28, 4, 15, 0xc7 } +}; + +const struct ListMenuTemplate gUnknown_0858D07C = { + NULL, + sub_80E9DEC, + NULL, + 0, 0, + 0, 0, 8, 0, + 9, 2, 1, 3, FALSE, 0, FALSE, 1 +}; // .text @@ -1046,7 +1106,7 @@ void game_continue(u8 taskId) gUnknown_03006310.unk_0e = data[3]; } -void sub_80E9DEC(u32 unused, bool8 flag) +void sub_80E9DEC(u32 a0, bool8 flag, struct ListMenu *menu) { if (flag != TRUE) { -- cgit v1.2.3 From 16e30598dbfa801e8f988332a83b1be6566b4f2e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 27 Oct 2017 23:22:35 -0400 Subject: Remove unused includes --- src/secret_base.c | 2 -- 1 file changed, 2 deletions(-) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index 22d675ec7..67fda08f7 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -24,7 +24,6 @@ #include "fldeff_80F9BCC.h" #include "metatile_behavior.h" #include "map_name_popup.h" -#include "text.h" #include "string_util.h" #include "script.h" #include "event_scripts.h" @@ -34,7 +33,6 @@ #include "battle.h" #include "rom6.h" #include "decoration.h" -#include "decoration_inventory.h" #include "link.h" #include "tv.h" #include "secret_base.h" -- cgit v1.2.3 From 002b39485534f2010d1dcc6f471cbcb63aab682e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 28 Oct 2017 09:05:40 -0400 Subject: through sub_817C7F4 --- src/bard_music.c | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 src/bard_music.c (limited to 'src') diff --git a/src/bard_music.c b/src/bard_music.c new file mode 100644 index 000000000..3aaf76a46 --- /dev/null +++ b/src/bard_music.c @@ -0,0 +1,61 @@ + +// Includes +#include "global.h" +#include "easy_chat.h" + +// Static type declarations + +// Static RAM declarations + +struct UnkStruct_817C7F4 { + u8 unk_00[48]; +}; + +// Static ROM declarations + +// .rodata + +extern const struct UnkStruct_817C7F4 gUnknown_085F5494[]; +extern const struct UnkStruct_817C7F4 gUnknown_085FA1D8[]; +extern const struct UnkStruct_817C7F4 *const gUnknown_0860A168[]; +extern const s16 *const gUnknown_0860A320[]; +extern const struct UnkStruct_817C7F4 gUnknown_0860A3AC; + +// .text + +s16 sub_817C7DC(int x, int y) +{ + return gUnknown_0860A320[x][y]; +} + +const struct UnkStruct_817C7F4 *sub_817C7F4(u16 word) +{ + u32 category; + u32 subword; + const struct UnkStruct_817C7F4 *ptr; + + if (sub_811EB10(word)) + { + return &gUnknown_0860A3AC; + } + category = word >> 9; + subword = word & 0x1ff; + switch (category) + { + case EC_GROUP_POKEMON: + case EC_GROUP_POKEMON_2: + ptr = gUnknown_085F5494; + break; + case EC_GROUP_MOVE_1: + case EC_GROUP_MOVE_2: + ptr = gUnknown_085FA1D8; + break; + default: + ptr = gUnknown_0860A168[category]; + break; + } + ptr += subword; + return ptr; +} + + -- cgit v1.2.3 From 5da296e94e8450b48e323da0fa34a064df7cd579 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 28 Oct 2017 09:45:44 -0400 Subject: GetWordPhonemes; assign names and improve guess of types --- src/bard_music.c | 53 +++++++++++++++++++++++++++++++++++------------------ 1 file changed, 35 insertions(+), 18 deletions(-) (limited to 'src') diff --git a/src/bard_music.c b/src/bard_music.c index 3aaf76a46..124a5e4a0 100644 --- a/src/bard_music.c +++ b/src/bard_music.c @@ -1,42 +1,41 @@ // Includes #include "global.h" +#include "bard_music.h" +#include "text.h" #include "easy_chat.h" // Static type declarations // Static RAM declarations -struct UnkStruct_817C7F4 { - u8 unk_00[48]; -}; - // Static ROM declarations // .rodata -extern const struct UnkStruct_817C7F4 gUnknown_085F5494[]; -extern const struct UnkStruct_817C7F4 gUnknown_085FA1D8[]; -extern const struct UnkStruct_817C7F4 *const gUnknown_0860A168[]; +extern const struct BardSound gBardSounds_Pokemon[][6]; +extern const struct BardSound gBardSounds_Moves[][6]; +extern const struct BardSound (*const gBardSoundsTable[])[6]; extern const s16 *const gUnknown_0860A320[]; -extern const struct UnkStruct_817C7F4 gUnknown_0860A3AC; +extern const int gUnknown_0860A3DC[]; +extern const struct BardSound gBardSound_InvalidWord[6]; // .text -s16 sub_817C7DC(int x, int y) +s16 CalcWordPitch(int arg0, int songPos) { - return gUnknown_0860A320[x][y]; + return gUnknown_0860A320[arg0][songPos]; } -const struct UnkStruct_817C7F4 *sub_817C7F4(u16 word) +const struct BardSound *GetWordSounds(u16 word) { u32 category; u32 subword; - const struct UnkStruct_817C7F4 *ptr; + const struct BardSound (*ptr)[6]; - if (sub_811EB10(word)) + if (IsECWordInValidRange(word)) { - return &gUnknown_0860A3AC; + return gBardSound_InvalidWord; } category = word >> 9; subword = word & 0x1ff; @@ -44,18 +43,36 @@ const struct UnkStruct_817C7F4 *sub_817C7F4(u16 word) { case EC_GROUP_POKEMON: case EC_GROUP_POKEMON_2: - ptr = gUnknown_085F5494; + ptr = gBardSounds_Pokemon; break; case EC_GROUP_MOVE_1: case EC_GROUP_MOVE_2: - ptr = gUnknown_085FA1D8; + ptr = gBardSounds_Moves; break; default: - ptr = gUnknown_0860A168[category]; + ptr = gBardSoundsTable[category]; break; } ptr += subword; - return ptr; + return *ptr; } +void GetWordPhonemes(struct BardSong *song, u16 word) +{ + int i; + const struct BardSound *sound; + song->length = 0; + for (i = 0; i < 6; i ++) + { + sound = &song->sound[i]; + if (sound->var00 != 0xFF) + { + song->phonemes[i].length = sound->var01 + gUnknown_0860A3DC[sound->var00]; + song->phonemes[i].pitch = CalcWordPitch(word + 30, i); + song->length += song->phonemes[i].length; + } + } + song->currPhoneme = 0; + song->voiceInflection = 0; +} -- cgit v1.2.3 From 4ae9b1d9d0db0c9850d398e6f3546748909bd3ae Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 28 Oct 2017 10:26:54 -0400 Subject: Decompile Bard Sound structs --- src/bard_music.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 46 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/bard_music.c b/src/bard_music.c index 124a5e4a0..290dbdb54 100644 --- a/src/bard_music.c +++ b/src/bard_music.c @@ -2,7 +2,6 @@ // Includes #include "global.h" #include "bard_music.h" -#include "text.h" #include "easy_chat.h" // Static type declarations @@ -13,9 +12,52 @@ // .rodata -extern const struct BardSound gBardSounds_Pokemon[][6]; -extern const struct BardSound gBardSounds_Moves[][6]; -extern const struct BardSound (*const gBardSoundsTable[])[6]; +#include "data/bard_music/pokemon.h" +#include "data/bard_music/moves.h" +#include "data/bard_music/trainer.h" +#include "data/bard_music/status.h" +#include "data/bard_music/battle.h" +#include "data/bard_music/greetings.h" +#include "data/bard_music/people.h" +#include "data/bard_music/voices.h" +#include "data/bard_music/speech.h" +#include "data/bard_music/endings.h" +#include "data/bard_music/feelings.h" +#include "data/bard_music/conditions.h" +#include "data/bard_music/actions.h" +#include "data/bard_music/lifestyle.h" +#include "data/bard_music/hobbies.h" +#include "data/bard_music/time.h" +#include "data/bard_music/misc.h" +#include "data/bard_music/adjectives.h" +#include "data/bard_music/events.h" +#include "data/bard_music/trendysaying.h" + +const struct BardSound (*const gBardSoundsTable[])[6] = { + NULL, + gBardSounds_Trainer, + gBardSounds_Status, + gBardSounds_Battle, + gBardSounds_Greetings, + gBardSounds_People, + gBardSounds_Voices, + gBardSounds_Speech, + gBardSounds_Endings, + gBardSounds_Feelings, + gBardSounds_Conditions, + gBardSounds_Actions, + gBardSounds_Lifestyle, + gBardSounds_Hobbies, + gBardSounds_Time, + gBardSounds_Misc, + gBardSounds_Adjectives, + gBardSounds_Events, + NULL, + NULL, + gBardSounds_TrendySaying, + NULL +}; + extern const s16 *const gUnknown_0860A320[]; extern const int gUnknown_0860A3DC[]; extern const struct BardSound gBardSound_InvalidWord[6]; -- cgit v1.2.3 From 607b7ac83440901fc19a7b6192ba214b07369bad Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 28 Oct 2017 10:42:12 -0400 Subject: Decompile remaining bard music data --- src/bard_music.c | 45 ++++++--------------------------------------- 1 file changed, 6 insertions(+), 39 deletions(-) (limited to 'src') diff --git a/src/bard_music.c b/src/bard_music.c index 290dbdb54..56390f010 100644 --- a/src/bard_music.c +++ b/src/bard_music.c @@ -4,13 +4,7 @@ #include "bard_music.h" #include "easy_chat.h" -// Static type declarations - -// Static RAM declarations - -// Static ROM declarations - -// .rodata +#define NULL_BARD_SOUND {0xff, 0, 0, 0, 0} #include "data/bard_music/pokemon.h" #include "data/bard_music/moves.h" @@ -32,37 +26,10 @@ #include "data/bard_music/adjectives.h" #include "data/bard_music/events.h" #include "data/bard_music/trendysaying.h" - -const struct BardSound (*const gBardSoundsTable[])[6] = { - NULL, - gBardSounds_Trainer, - gBardSounds_Status, - gBardSounds_Battle, - gBardSounds_Greetings, - gBardSounds_People, - gBardSounds_Voices, - gBardSounds_Speech, - gBardSounds_Endings, - gBardSounds_Feelings, - gBardSounds_Conditions, - gBardSounds_Actions, - gBardSounds_Lifestyle, - gBardSounds_Hobbies, - gBardSounds_Time, - gBardSounds_Misc, - gBardSounds_Adjectives, - gBardSounds_Events, - NULL, - NULL, - gBardSounds_TrendySaying, - NULL -}; - -extern const s16 *const gUnknown_0860A320[]; -extern const int gUnknown_0860A3DC[]; -extern const struct BardSound gBardSound_InvalidWord[6]; - -// .text +#include "data/bard_music/bard_sounds_table.h" +#include "data/bard_music/word_pitch.h" +#include "data/bard_music/default_sound.h" +#include "data/bard_music/length_table.h" s16 CalcWordPitch(int arg0, int songPos) { @@ -110,7 +77,7 @@ void GetWordPhonemes(struct BardSong *song, u16 word) sound = &song->sound[i]; if (sound->var00 != 0xFF) { - song->phonemes[i].length = sound->var01 + gUnknown_0860A3DC[sound->var00]; + song->phonemes[i].length = sound->var01 + gBardSoundLengthTable[sound->var00]; song->phonemes[i].pitch = CalcWordPitch(word + 30, i); song->length += song->phonemes[i].length; } -- cgit v1.2.3 From 175e2e6b37d93210a0fe43b2e9cac156dd283c7a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 28 Oct 2017 10:44:19 -0400 Subject: Slight touchup --- src/bard_music.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/bard_music.c b/src/bard_music.c index 56390f010..335aecb2e 100644 --- a/src/bard_music.c +++ b/src/bard_music.c @@ -33,7 +33,7 @@ s16 CalcWordPitch(int arg0, int songPos) { - return gUnknown_0860A320[arg0][songPos]; + return gBardSoundPitchTables[arg0][songPos]; } const struct BardSound *GetWordSounds(u16 word) -- cgit v1.2.3 From 6e5dcf19f76b1839537848cf0fd91c7ddb27898c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 28 Oct 2017 15:43:50 -0400 Subject: Slight reorganization of data includes --- src/bard_music.c | 24 +----------------------- 1 file changed, 1 insertion(+), 23 deletions(-) (limited to 'src') diff --git a/src/bard_music.c b/src/bard_music.c index 335aecb2e..8a52d7257 100644 --- a/src/bard_music.c +++ b/src/bard_music.c @@ -4,29 +4,7 @@ #include "bard_music.h" #include "easy_chat.h" -#define NULL_BARD_SOUND {0xff, 0, 0, 0, 0} - -#include "data/bard_music/pokemon.h" -#include "data/bard_music/moves.h" -#include "data/bard_music/trainer.h" -#include "data/bard_music/status.h" -#include "data/bard_music/battle.h" -#include "data/bard_music/greetings.h" -#include "data/bard_music/people.h" -#include "data/bard_music/voices.h" -#include "data/bard_music/speech.h" -#include "data/bard_music/endings.h" -#include "data/bard_music/feelings.h" -#include "data/bard_music/conditions.h" -#include "data/bard_music/actions.h" -#include "data/bard_music/lifestyle.h" -#include "data/bard_music/hobbies.h" -#include "data/bard_music/time.h" -#include "data/bard_music/misc.h" -#include "data/bard_music/adjectives.h" -#include "data/bard_music/events.h" -#include "data/bard_music/trendysaying.h" -#include "data/bard_music/bard_sounds_table.h" +#include "data/bard_music/bard_sounds.h" #include "data/bard_music/word_pitch.h" #include "data/bard_music/default_sound.h" #include "data/bard_music/length_table.h" -- cgit v1.2.3 From 9945d57f07339ac283372bf02888e356e1a9eb59 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 1 Nov 2017 23:49:01 -0400 Subject: Address review items --- src/secret_base.c | 170 +++++++++++++++++++++++++++--------------------------- 1 file changed, 85 insertions(+), 85 deletions(-) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index 0e8bb0cc5..64ffa5e39 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -71,7 +71,7 @@ void sub_80EA120(u8 taskId); void sub_80EA13C(u8 taskId); void sub_80EA18C(u8 taskId); void task_pc_turn_off(u8 taskId); -u8 sub_80EA20C(u8 sbId); +u8 sub_80EA20C(u8 secretBaseRecordId); // .rodata @@ -322,29 +322,29 @@ void sub_80E8E18(void) void sub_80E8EE0(struct MapEvents *events) { - u16 bgevidx; - u16 idx; - u16 jdx; + u16 bgEventIndex; + u16 i; + u16 j; s16 tile_id; s16 x; s16 y; - for (bgevidx = 0; bgevidx < events->bgEventCount; bgevidx ++) + for (bgEventIndex = 0; bgEventIndex < events->bgEventCount; bgEventIndex ++) { - if (events->bgEvents[bgevidx].kind == 8) + if (events->bgEvents[bgEventIndex].kind == 8) { - for (jdx = 0; jdx < 20; jdx ++) + for (j = 0; j < 20; j ++) { - if (gSaveBlock1Ptr->secretBases[jdx].secretBaseId == events->bgEvents[bgevidx].bgUnion.secretBaseId) + if (gSaveBlock1Ptr->secretBases[j].secretBaseId == events->bgEvents[bgEventIndex].bgUnion.secretBaseId) { - x = events->bgEvents[bgevidx].x + 7; - y = events->bgEvents[bgevidx].y + 7; + x = events->bgEvents[bgEventIndex].x + 7; + y = events->bgEvents[bgEventIndex].y + 7; tile_id = MapGridGetMetatileIdAt(x, y); - for (idx = 0; idx < 7; idx ++) + for (i = 0; i < 7; i ++) { - if (gUnknown_0858CFCC[idx].tile1 == tile_id) + if (gUnknown_0858CFCC[i].tile1 == tile_id) { - MapGridSetMetatileIdAt(x, y, gUnknown_0858CFCC[idx].tile2 | 0xc00); + MapGridSetMetatileIdAt(x, y, gUnknown_0858CFCC[i].tile2 | 0xc00); break; } } @@ -365,7 +365,7 @@ void sub_80E8F9C(void) void sub_80E8FD0(u8 taskId) { - u16 sbrId; + u16 secretBaseRecordId; switch (gTasks[taskId].data[0]) { @@ -376,10 +376,10 @@ void sub_80E8FD0(u8 taskId) } break; case 1: - sbrId = VarGet(VAR_0x4054); - if (gSaveBlock1Ptr->secretBases[sbrId].sbr_field_10 < 255) + secretBaseRecordId = VarGet(VAR_0x4054); + if (gSaveBlock1Ptr->secretBases[secretBaseRecordId].sbr_field_10 < 255) { - gSaveBlock1Ptr->secretBases[sbrId].sbr_field_10 ++; + gSaveBlock1Ptr->secretBases[secretBaseRecordId].sbr_field_10 ++; } sub_80E8F9C(); warp_in(); @@ -503,7 +503,7 @@ void sub_80E933C(void) u8 metatile; u8 category; u8 permission; - u8 ndecor; + u8 nDecor; u16 curBase; objid = 0; @@ -511,16 +511,16 @@ void sub_80E933C(void) { roomdecor = gSaveBlock1Ptr->playerRoomDecor; roomdecorpos = gSaveBlock1Ptr->playerRoomDecorPos; - ndecor = 12; + nDecor = 12; } else { curBase = VarGet(VAR_0x4054); roomdecor = gSaveBlock1Ptr->secretBases[curBase].decorations; roomdecorpos = gSaveBlock1Ptr->secretBases[curBase].decorationPos; - ndecor = 16; + nDecor = 16; } - for (decidx = 0; decidx < ndecor; decidx ++) + for (decidx = 0; decidx < nDecor; decidx ++) { if (roomdecor[decidx] != DECOR_NONE) { @@ -571,15 +571,15 @@ void sub_80E933C(void) void sub_80E9578(void) { - u8 objIdx; + u8 objectEventIdx; u16 flagId; - for (objIdx = 0; objIdx < gMapHeader.events->mapObjectCount; objIdx ++) + for (objectEventIdx = 0; objectEventIdx < gMapHeader.events->mapObjectCount; objectEventIdx ++) { - flagId = gMapHeader.events->mapObjects[objIdx].flagId; + flagId = gMapHeader.events->mapObjects[objectEventIdx].flagId; if (flagId >= 0xAE && flagId <= 0xBB) { - RemoveFieldObjectByLocalIdAndMap(gMapHeader.events->mapObjects[objIdx].localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); + RemoveFieldObjectByLocalIdAndMap(gMapHeader.events->mapObjects[objectEventIdx].localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); FlagSet(flagId); } } @@ -592,13 +592,13 @@ void sub_80E95D4(void) void sub_80E9608(struct Coords16 *coords, struct MapEvents *events) { - s16 bgevtidx; + s16 bgEventIdx; - for (bgevtidx = 0; bgevtidx < events->bgEventCount; bgevtidx ++) + for (bgEventIdx = 0; bgEventIdx < events->bgEventCount; bgEventIdx ++) { - if (events->bgEvents[bgevtidx].kind == 8 && coords->x == events->bgEvents[bgevtidx].x + 7 && coords->y == events->bgEvents[bgevtidx].y + 7) + if (events->bgEvents[bgEventIdx].kind == 8 && coords->x == events->bgEvents[bgEventIdx].x + 7 && coords->y == events->bgEvents[bgEventIdx].y + 7) { - sCurSecretBaseId = events->bgEvents[bgevtidx].bgUnion.secretBaseId; + sCurSecretBaseId = events->bgEvents[bgEventIdx].bgUnion.secretBaseId; break; } } @@ -665,10 +665,10 @@ void sub_80E9744(void) } } -u8 *sub_80E9780(u8 *dest, u8 sbId) +u8 *sub_80E9780(u8 *dest, u8 secretBaseRecordId) { - *StringCopyN(dest, gSaveBlock1Ptr->secretBases[sbId].trainerName, sub_80E8DF4(gSaveBlock1Ptr->secretBases[sbId].trainerName)) = EOS; - ConvertInternationalString(dest, gSaveBlock1Ptr->secretBases[sbId].language); + *StringCopyN(dest, gSaveBlock1Ptr->secretBases[secretBaseRecordId].trainerName, sub_80E8DF4(gSaveBlock1Ptr->secretBases[secretBaseRecordId].trainerName)) = EOS; + ConvertInternationalString(dest, gSaveBlock1Ptr->secretBases[secretBaseRecordId].language); return StringAppend(dest, gText_ApostropheSBase); } @@ -679,18 +679,18 @@ u8 *GetSecretBaseMapName(u8 *dest) void sub_80E980C(void) { - u8 sbId; + u8 secretBaseRecordId; const u8 *src; - sbId = VarGet(VAR_0x4054); - src = gSaveBlock1Ptr->secretBases[sbId].trainerName; + secretBaseRecordId = VarGet(VAR_0x4054); + src = gSaveBlock1Ptr->secretBases[secretBaseRecordId].trainerName; *StringCopyN(gStringVar1, src, sub_80E8DF4(src)) = EOS; - ConvertInternationalString(gStringVar1, gSaveBlock1Ptr->secretBases[sbId].language); + ConvertInternationalString(gStringVar1, gSaveBlock1Ptr->secretBases[secretBaseRecordId].language); } -bool8 sub_80E9878(u8 sbId) +bool8 sub_80E9878(u8 secretBaseRecordId) { - if (gSaveBlock1Ptr->secretBases[sbId].sbr_field_1_6 != 0) + if (gSaveBlock1Ptr->secretBases[secretBaseRecordId].sbr_field_1_6 != 0) { return TRUE; } @@ -998,18 +998,18 @@ void sub_80E9B70(void) u8 sub_80E9BA8(void) { - u8 tot; + u8 sum; s16 i; - tot = 0; + sum = 0; for (i = 1; i < 20; i ++) { if (sub_80E9878(i) == TRUE) { - tot ++; + sum ++; } } - return tot; + return sum; } void sub_80E9BDC(void) @@ -1072,23 +1072,23 @@ void game_continue(u8 taskId) { s16 *data; u8 i; - u8 ct; + u8 count; data = gTasks[taskId].data; - ct = 0; + count = 0; for (i = 1; i < 20; i ++) { if (sub_80E9878(i)) { - sub_80E9780(gUnknown_0203A020->names[ct], i); - gUnknown_0203A020->items[ct].unk_00 = gUnknown_0203A020->names[ct]; - gUnknown_0203A020->items[ct].unk_04 = i; - ct ++; + sub_80E9780(gUnknown_0203A020->names[count], i); + gUnknown_0203A020->items[count].unk_00 = gUnknown_0203A020->names[count]; + gUnknown_0203A020->items[count].unk_04 = i; + count ++; } } - gUnknown_0203A020->items[ct].unk_00 = gText_Cancel; - gUnknown_0203A020->items[ct].unk_04 = -2; - data[0] = ct + 1; + gUnknown_0203A020->items[count].unk_00 = gText_Cancel; + gUnknown_0203A020->items[count].unk_04 = -2; + data[0] = count + 1; if (data[0] < 8) { data[3] = data[0]; @@ -1277,9 +1277,9 @@ void task_pc_turn_off(u8 taskId) DestroyTask(taskId); } -u8 sub_80EA20C(u8 sbId) +u8 sub_80EA20C(u8 secretBaseRecordId) { - return (gSaveBlock1Ptr->secretBases[sbId].trainerId[0] % 5) + (gSaveBlock1Ptr->secretBases[sbId].gender * 5); + return (gSaveBlock1Ptr->secretBases[secretBaseRecordId].trainerId[0] % 5) + (gSaveBlock1Ptr->secretBases[secretBaseRecordId].gender * 5); } const u8 *sub_80EA250(void) @@ -1340,10 +1340,10 @@ void sub_80EA30C(void) void sub_80EA354(void) { - u16 sbId; + u16 secretBaseRecordId; u8 i; - sbId = VarGet(VAR_0x4054); + secretBaseRecordId = VarGet(VAR_0x4054); if (!FlagGet(0x922)) { for (i = 0; i < 20; i ++) @@ -1352,8 +1352,8 @@ void sub_80EA354(void) } FlagSet(0x922); } - gSpecialVar_0x8004 = sub_80EA20C(sbId); - gScriptResult = gSaveBlock1Ptr->secretBases[sbId].sbr_field_1_5; + gSpecialVar_0x8004 = sub_80EA20C(secretBaseRecordId); + gScriptResult = gSaveBlock1Ptr->secretBases[secretBaseRecordId].sbr_field_1_5; } @@ -1496,30 +1496,30 @@ void sub_80EA3E4(u8 taskId) } } -void sub_80EA828(u8 sbId, struct SecretBaseRecord *base, u32 version, u32 language) +void sub_80EA828(u8 secretBaseRecordId, struct SecretBaseRecord *base, u32 version, u32 language) { - int strlen; + int stringLength; u8 *name; - gSaveBlock1Ptr->secretBases[sbId] = *base; - gSaveBlock1Ptr->secretBases[sbId].sbr_field_1_6 = 2; + gSaveBlock1Ptr->secretBases[secretBaseRecordId] = *base; + gSaveBlock1Ptr->secretBases[secretBaseRecordId].sbr_field_1_6 = 2; if (version == VERSION_SAPPHIRE || version == VERSION_RUBY) { - gSaveBlock1Ptr->secretBases[sbId].language = LANGUAGE_ENGLISH; + gSaveBlock1Ptr->secretBases[secretBaseRecordId].language = LANGUAGE_ENGLISH; } if (version == VERSION_EMERALD && language == LANGUAGE_JAPANESE) { - name = gSaveBlock1Ptr->secretBases[sbId].trainerName; - for (strlen = 0; strlen < 7; strlen ++) + name = gSaveBlock1Ptr->secretBases[secretBaseRecordId].trainerName; + for (stringLength = 0; stringLength < 7; stringLength ++) { - if (name[strlen] == EOS) + if (name[stringLength] == EOS) { break; } } - if (strlen > 5) + if (stringLength > 5) { - gSaveBlock1Ptr->secretBases[sbId].language = LANGUAGE_ENGLISH; + gSaveBlock1Ptr->secretBases[secretBaseRecordId].language = LANGUAGE_ENGLISH; } } } @@ -1560,13 +1560,13 @@ bool8 sub_80EA950(struct SecretBaseRecord *sbr1, struct SecretBaseRecord *sbr2) return FALSE; } -s16 sub_80EA990(u8 sbId) +s16 sub_80EA990(u8 secretBaseRecordId) { s16 i; for (i = 0; i < 20; i ++) { - if (gSaveBlock1Ptr->secretBases[i].secretBaseId == sbId) + if (gSaveBlock1Ptr->secretBases[i].secretBaseId == secretBaseRecordId) { return i; } @@ -1604,40 +1604,40 @@ u8 sub_80EAA18(void) u8 sub_80EAA64(struct SecretBaseRecord *base, u32 version, u32 language) { - s16 sbId; + s16 secretBaseRecordId; if (base->secretBaseId == 0) { return 0; } - sbId = sub_80EA990(base->secretBaseId); - if (sbId != 0) + secretBaseRecordId = sub_80EA990(base->secretBaseId); + if (secretBaseRecordId != 0) { - if (sbId != -1) + if (secretBaseRecordId != -1) { - if (gSaveBlock1Ptr->secretBases[sbId].sbr_field_1_0 == 1) + if (gSaveBlock1Ptr->secretBases[secretBaseRecordId].sbr_field_1_0 == 1) { return 0; } - if (gSaveBlock1Ptr->secretBases[sbId].sbr_field_1_6 != 2 || base->sbr_field_1_0 == 1) + if (gSaveBlock1Ptr->secretBases[secretBaseRecordId].sbr_field_1_6 != 2 || base->sbr_field_1_0 == 1) { - sub_80EA828(sbId, base, version, language); - return sbId; + sub_80EA828(secretBaseRecordId, base, version, language); + return secretBaseRecordId; } } else { - sbId = sub_80EA9D8(); - if (sbId != 0) + secretBaseRecordId = sub_80EA9D8(); + if (secretBaseRecordId != 0) { - sub_80EA828(sbId, base, version, language); - return sbId; + sub_80EA828(secretBaseRecordId, base, version, language); + return secretBaseRecordId; } - sbId = sub_80EAA18(); - if (sbId != 0) + secretBaseRecordId = sub_80EAA18(); + if (secretBaseRecordId != 0) { - sub_80EA828(sbId, base, version, language); - return sbId; + sub_80EA828(secretBaseRecordId, base, version, language); + return secretBaseRecordId; } } } -- cgit v1.2.3 From 9884147cd95a2081c34fd9624e8837528bb5afc4 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 1 Nov 2017 23:54:11 -0400 Subject: More camelCase --- src/secret_base.c | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index 64ffa5e39..690e91e6a 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -496,57 +496,57 @@ void sub_80E9238(u8 flagIn) void sub_80E933C(void) { - u8 *roomdecor; - u8 *roomdecorpos; - u8 decidx; - u8 objid; + u8 *roomDecor; + u8 *roomDecorPos; + u8 decorIdx; + u8 objIdx; u8 metatile; u8 category; u8 permission; u8 nDecor; u16 curBase; - objid = 0; + objIdx = 0; if (!CurrentMapIsSecretBase()) { - roomdecor = gSaveBlock1Ptr->playerRoomDecor; - roomdecorpos = gSaveBlock1Ptr->playerRoomDecorPos; + roomDecor = gSaveBlock1Ptr->playerRoomDecor; + roomDecorPos = gSaveBlock1Ptr->playerRoomDecorPos; nDecor = 12; } else { curBase = VarGet(VAR_0x4054); - roomdecor = gSaveBlock1Ptr->secretBases[curBase].decorations; - roomdecorpos = gSaveBlock1Ptr->secretBases[curBase].decorationPos; + roomDecor = gSaveBlock1Ptr->secretBases[curBase].decorations; + roomDecorPos = gSaveBlock1Ptr->secretBases[curBase].decorationPos; nDecor = 16; } - for (decidx = 0; decidx < nDecor; decidx ++) + for (decorIdx = 0; decorIdx < nDecor; decorIdx ++) { - if (roomdecor[decidx] != DECOR_NONE) + if (roomDecor[decorIdx] != DECOR_NONE) { - permission = gDecorations[roomdecor[decidx]].permission; - category = gDecorations[roomdecor[decidx]].category; + permission = gDecorations[roomDecor[decorIdx]].permission; + category = gDecorations[roomDecor[decorIdx]].category; if (permission == DECORPERM_SOLID_MAT) { - for (objid = 0; objid < gMapHeader.events->mapObjectCount; objid ++) + for (objIdx = 0; objIdx < gMapHeader.events->mapObjectCount; objIdx ++) { - if (gMapHeader.events->mapObjects[objid].flagId == gSpecialVar_0x8004 + 0xAE) + if (gMapHeader.events->mapObjects[objIdx].flagId == gSpecialVar_0x8004 + 0xAE) { break; } } - if (objid == gMapHeader.events->mapObjectCount) + if (objIdx == gMapHeader.events->mapObjectCount) { continue; } - gSpecialVar_0x8006 = roomdecorpos[decidx] >> 4; - gSpecialVar_0x8007 = roomdecorpos[decidx] & 0xF; + gSpecialVar_0x8006 = roomDecorPos[decorIdx] >> 4; + gSpecialVar_0x8007 = roomDecorPos[decorIdx] & 0xF; metatile = MapGridGetMetatileBehaviorAt(gSpecialVar_0x8006 + 7, gSpecialVar_0x8007 + 7); if (MetatileBehavior_IsMB_B5(metatile) == TRUE || MetatileBehavior_IsMB_C3(metatile) == TRUE) { - gScriptResult = gMapHeader.events->mapObjects[objid].graphicsId + VAR_0x3F20; - VarSet(gScriptResult, gDecorations[roomdecor[decidx]].tiles[0]); - gScriptResult = gMapHeader.events->mapObjects[objid].localId; + gScriptResult = gMapHeader.events->mapObjects[objIdx].graphicsId + VAR_0x3F20; + VarSet(gScriptResult, gDecorations[roomDecor[decorIdx]].tiles[0]); + gScriptResult = gMapHeader.events->mapObjects[objIdx].localId; FlagClear(gSpecialVar_0x8004 + 0xAE); show_sprite(gScriptResult, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); sub_808EBA8(gScriptResult, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, gSpecialVar_0x8006, gSpecialVar_0x8007); -- cgit v1.2.3 From 1406084fdd097d81a18c666f3f632ec2bee693c7 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 1 Nov 2017 23:59:48 -0400 Subject: More camelCase, 2 --- src/secret_base.c | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) (limited to 'src') diff --git a/src/secret_base.c b/src/secret_base.c index 690e91e6a..6ba4312b2 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -716,49 +716,49 @@ void sub_80E9914(void) { u32 zero; u32 *personality; - u16 partyidx; - u16 moveidx; - u16 sbpartyidx; + u16 partyIdx; + u16 moveIdx; + u16 sbPartyIdx; u16 *species; u16 *items; u16 *moves; u8 *levels; u8 *evs; - sbpartyidx = 0; + sbPartyIdx = 0; personality = gSaveBlock1Ptr->secretBases[0].partyPersonality; if (gSaveBlock1Ptr->secretBases[0].secretBaseId != 0) { - partyidx = 0; + partyIdx = 0; moves = gSaveBlock1Ptr->secretBases[0].partyMoves; species = gSaveBlock1Ptr->secretBases[0].partySpecies; items = gSaveBlock1Ptr->secretBases[0].partyHeldItems; levels = gSaveBlock1Ptr->secretBases[0].partyLevels; evs = gSaveBlock1Ptr->secretBases[0].partyEVs; zero = 0; - for (partyidx = 0; partyidx < PARTY_SIZE; partyidx ++) + for (partyIdx = 0; partyIdx < PARTY_SIZE; partyIdx ++) { - for (moveidx = 0; moveidx < 4; moveidx ++) + for (moveIdx = 0; moveIdx < 4; moveIdx ++) { - moves[partyidx * 4 + moveidx] = zero; + moves[partyIdx * 4 + moveIdx] = zero; } - species[partyidx] = zero; - items[partyidx] = zero; - levels[partyidx] = zero; - personality[partyidx] = zero; - evs[partyidx] = zero; - if (GetMonData(&gPlayerParty[partyidx], MON_DATA_SPECIES) != SPECIES_NONE && !GetMonData(&gPlayerParty[partyidx], MON_DATA_IS_EGG)) + species[partyIdx] = zero; + items[partyIdx] = zero; + levels[partyIdx] = zero; + personality[partyIdx] = zero; + evs[partyIdx] = zero; + if (GetMonData(&gPlayerParty[partyIdx], MON_DATA_SPECIES) != SPECIES_NONE && !GetMonData(&gPlayerParty[partyIdx], MON_DATA_IS_EGG)) { - for (moveidx = 0; moveidx < 4; moveidx ++) + for (moveIdx = 0; moveIdx < 4; moveIdx ++) { - moves[sbpartyidx * 4 + moveidx] = GetMonData(&gPlayerParty[partyidx], MON_DATA_MOVE1 + moveidx); + moves[sbPartyIdx * 4 + moveIdx] = GetMonData(&gPlayerParty[partyIdx], MON_DATA_MOVE1 + moveIdx); } - species[sbpartyidx] = GetMonData(&gPlayerParty[partyidx], MON_DATA_SPECIES); - items[sbpartyidx] = GetMonData(&gPlayerParty[partyidx], MON_DATA_HELD_ITEM); - levels[sbpartyidx] = GetMonData(&gPlayerParty[partyidx], MON_DATA_LEVEL); - personality[sbpartyidx] = GetMonData(&gPlayerParty[partyidx], MON_DATA_PERSONALITY); - evs[sbpartyidx] = sub_80E98AC(&gPlayerParty[partyidx]); - sbpartyidx ++; + species[sbPartyIdx] = GetMonData(&gPlayerParty[partyIdx], MON_DATA_SPECIES); + items[sbPartyIdx] = GetMonData(&gPlayerParty[partyIdx], MON_DATA_HELD_ITEM); + levels[sbPartyIdx] = GetMonData(&gPlayerParty[partyIdx], MON_DATA_LEVEL); + personality[sbPartyIdx] = GetMonData(&gPlayerParty[partyIdx], MON_DATA_PERSONALITY); + evs[sbPartyIdx] = sub_80E98AC(&gPlayerParty[partyIdx]); + sbPartyIdx ++; } } } -- cgit v1.2.3