summaryrefslogtreecommitdiff
path: root/src/code
diff options
context:
space:
mode:
authorEllipticEllipsis <73679967+EllipticEllipsis@users.noreply.github.com>2021-07-26 21:30:29 +0100
committerGitHub <noreply@github.com>2021-07-26 16:30:29 -0400
commit930d605c5ca2c9b2c753b046cb4860c6edcce586 (patch)
tree8522cabe56a837e7bb6f02b5d431c2698e299c17 /src/code
parentade921a2c00f8835c1e78b09a684d347f362fc1e (diff)
Matched func_8012EF0C and correct D_801C2380 (#227)
* Match func_8012EF0C and correct D_801C2380 * format * Review suggestions
Diffstat (limited to 'src/code')
-rw-r--r--src/code/code_0x8012EC80.c149
1 files changed, 42 insertions, 107 deletions
diff --git a/src/code/code_0x8012EC80.c b/src/code/code_0x8012EC80.c
index 092b7214a..6883d2fd1 100644
--- a/src/code/code_0x8012EC80.c
+++ b/src/code/code_0x8012EC80.c
@@ -229,132 +229,67 @@ s32 func_8012EE34(s16 arg0) {
return 0;
}
-/* static */ u16 D_801C2380[12][6] = {
- {
- SCENE_00KEIKOKU,
- SCENE_BOTI,
- SCENE_13HUBUKINOMITI,
- SCENE_24KEMONOMITI,
- SCENE_IKANAMAE,
- SCENE_TOWN,
- },
- {
- SCENE_ICHIBA,
- SCENE_BACKTOWN,
- SCENE_CLOCKTOWER,
- SCENE_ALLEY,
- -1,
- },
- {
- SCENE_20SICHITAI,
- SCENE_20SICHITAI2,
- SCENE_21MITURINMAE,
- SCENE_22DEKUCITY,
- SCENE_DEKU_KING,
- SCENE_KINSTA1,
- },
- { -1 },
- {
- SCENE_10YUKIYAMANOMURA,
- SCENE_10YUKIYAMANOMURA2,
- SCENE_11GORONNOSATO,
- SCENE_11GORONNOSATO2,
- SCENE_16GORON_HOUSE,
- SCENE_12HAKUGINMAE,
- },
- {
- SCENE_14YUKIDAMANOMITI,
- SCENE_GORONRACE,
- SCENE_17SETUGEN,
- SCENE_17SETUGEN2,
- -1,
- },
- {
- SCENE_F01,
- SCENE_ROMANYMAE,
- SCENE_OMOYA,
- SCENE_F01C,
- SCENE_F01_B,
- SCENE_KOEPONARACE,
- },
- { -1 },
- {
- SCENE_30GYOSON,
- SCENE_SINKAI,
- SCENE_31MISAKI,
- SCENE_TORIDE,
- SCENE_KAIZOKU,
- SCENE_33ZORACITY,
- },
- {
- SCENE_35TAKI,
- -1,
- },
- {
- SCENE_F40,
- SCENE_F41,
- SCENE_CASTLE,
- SCENE_IKANA,
- SCENE_REDEAD,
- -1,
- },
+static u16 D_801C2380[6][12] = {
+ { SCENE_00KEIKOKU, SCENE_BOTI, SCENE_13HUBUKINOMITI, SCENE_24KEMONOMITI, SCENE_IKANAMAE, SCENE_TOWN, SCENE_ICHIBA,
+ SCENE_BACKTOWN, SCENE_CLOCKTOWER, SCENE_ALLEY, -1 },
+ { SCENE_20SICHITAI, SCENE_20SICHITAI2, SCENE_21MITURINMAE, SCENE_22DEKUCITY, SCENE_DEKU_KING, SCENE_KINSTA1, -1 },
+ { SCENE_10YUKIYAMANOMURA, SCENE_10YUKIYAMANOMURA2, SCENE_11GORONNOSATO, SCENE_11GORONNOSATO2, SCENE_16GORON_HOUSE,
+ SCENE_12HAKUGINMAE, SCENE_14YUKIDAMANOMITI, SCENE_GORONRACE, SCENE_17SETUGEN, SCENE_17SETUGEN2, -1 },
+ { SCENE_F01, SCENE_ROMANYMAE, SCENE_OMOYA, SCENE_F01C, SCENE_F01_B, SCENE_KOEPONARACE, -1 },
+ { SCENE_30GYOSON, SCENE_SINKAI, SCENE_31MISAKI, SCENE_TORIDE, SCENE_KAIZOKU, SCENE_33ZORACITY, SCENE_35TAKI, -1 },
+ { SCENE_F40, SCENE_F41, SCENE_CASTLE, SCENE_IKANA, SCENE_REDEAD, -1 },
};
-#ifdef NON_EQUIVALENT
-// loop seems wrong?
void func_8012EF0C(s16 arg0) {
- s16 i;
- s16 num;
- s16 sceneIndex;
+ s16 phi_v0 = 0;
+ s16 phi_v1 = 0;
+ u16(*new_var)[] = &D_801C2380[arg0];
- if ((arg0 >= 0) && (arg0 < ARRAY_COUNT(D_801C2380))) {
- i = 0;
- num = 0;
- sceneIndex = D_801C2380[arg0][i];
+ if ((arg0 >= 0) && (arg0 < 6)) {
+ while (true) {
+ if ((*new_var)[phi_v0] == 0xFFFF) {
+ break;
+ }
- while (sceneIndex != 0xFFFF) {
- sceneIndex = D_801C2380[arg0][i];
- if (sceneIndex < 0x20) {
- num = 0;
- } else if (sceneIndex < 0x40) {
- num = 1;
- } else if (sceneIndex < 0x60) {
- num = 2;
- } else if (sceneIndex < 0x80) {
- num = 3;
- } else if (sceneIndex < 0xA0) {
- num = 4;
- } else if (sceneIndex < 0xC0) {
- num = 5;
- } else if (sceneIndex < 0xE0) {
- num = 6;
+ if (((s16)(*new_var)[phi_v0]) < 0x20) {
+ phi_v1 = 0;
+ } else if (((s16)(*new_var)[phi_v0]) < 0x40) {
+ phi_v1 = 1;
+ } else if (((s16)(*new_var)[phi_v0]) < 0x60) {
+ phi_v1 = 2;
+ } else if (((s16)(*new_var)[phi_v0]) < 0x80) {
+ phi_v1 = 3;
+ } else if (((s16)(*new_var)[phi_v0]) < 0xA0) {
+ phi_v1 = 4;
+ } else if (((s16)(*new_var)[phi_v0]) < 0xC0) {
+ phi_v1 = 5;
+ } else if (((s16)(*new_var)[phi_v0]) < 0xE0) {
+ phi_v1 = 6;
}
- gSaveContext.roomInf[125][sceneIndex] |= gBitFlags[(-(num << 7)) + num];
- i++;
+ // Required to match
+ gSaveContext.roomInf[125][phi_v1] =
+ gSaveContext.roomInf[125][phi_v1] | gBitFlags[(s16)(*new_var)[phi_v0] - (phi_v1 << 5)];
+ phi_v0++;
}
- if (i == 0) {
+ if ((*new_var) == D_801C2380[0]) {
gSaveContext.unk_F60 |= 3;
- } else if (i == 1) {
+ } else if ((*new_var) == D_801C2380[1]) {
gSaveContext.unk_F60 |= 0x1C;
- } else if (i == 2) {
+ } else if ((*new_var) == D_801C2380[2]) {
gSaveContext.unk_F60 |= 0xE0;
- } else if (i == 3) {
+ } else if ((*new_var) == D_801C2380[3]) {
gSaveContext.unk_F60 |= 0x100;
- } else if (i == 4) {
+ } else if ((*new_var) == D_801C2380[4]) {
gSaveContext.unk_F60 |= 0x1E00;
- } else if (i == 5) {
+ } else if ((*new_var) == D_801C2380[5]) {
gSaveContext.unk_F60 |= 0x6000;
}
}
- dREG(82) = 0;
+ XREG(95) = 0;
}
-#else
-void func_8012EF0C(s16 arg0);
-#pragma GLOBAL_ASM("./asm/non_matchings/code/code_0x8012EC80/func_8012EF0C.asm")
-#endif
void func_8012F0EC(s16 arg0);
#pragma GLOBAL_ASM("./asm/non_matchings/code/code_0x8012EC80/func_8012F0EC.asm")