diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/field_region_map.c | 2 | ||||
-rw-r--r-- | src/region_map.c | 54 |
2 files changed, 55 insertions, 1 deletions
diff --git a/src/field_region_map.c b/src/field_region_map.c index c2a14d04e..e8c52de77 100644 --- a/src/field_region_map.c +++ b/src/field_region_map.c @@ -120,7 +120,7 @@ void sub_8170290(void) switch (gUnknown_0203BCD0->state) { case 0: - sub_8122CDC(&gUnknown_0203BCD0->regionMap, 0); + sub_8122CDC(&gUnknown_0203BCD0->regionMap, FALSE); sub_8124288(0, 0); sub_81240D4(1, 1); gUnknown_0203BCD0->state ++; diff --git a/src/region_map.c b/src/region_map.c new file mode 100644 index 000000000..1f54108d6 --- /dev/null +++ b/src/region_map.c @@ -0,0 +1,54 @@ + +// Includes +#include "global.h" +#include "region_map.h" + +// Static type declarations + +struct UnkStruct_0203A148 { + u8 filler_000[0xa74]; +}; + +// Static RAM declarations + +EWRAM_DATA struct RegionMap *gUnknown_0203A144 = NULL; +EWRAM_DATA struct UnkStruct_0203A148 *gUnknown_0203A148 = NULL; + +// Static ROM declarations + +void sub_8122CF8(struct RegionMap *regionMap, struct UnkStruct_8122CF8 *arg1, bool8 arg2); +bool8 sub_8122DB0(void); +u8 sub_8123254(void); +u8 sub_81230C4(void); + +// .rodata + +// .text + +void sub_8122CDC(struct RegionMap *regionMap, bool8 argument) +{ + sub_8122CF8(regionMap, NULL, argument); + while (sub_8122DB0()); +} + +void sub_8122CF8(struct RegionMap *regionMap, struct UnkStruct_8122CF8 *arg1, bool8 arg2) +{ + gUnknown_0203A144 = regionMap; + gUnknown_0203A144->unk_079 = 0; + gUnknown_0203A144->unk_078 = arg2; + gUnknown_0203A144->inputCallback = arg2 == TRUE ? sub_8123254 : sub_81230C4; + if (arg1 != NULL) + { + gUnknown_0203A144->unk_080 = arg1->unk_0_0; + gUnknown_0203A144->unk_081 = arg1->unk_0_2; + gUnknown_0203A144->unk_082 = arg1->unk_0_4; + gUnknown_0203A144->unk_083 = TRUE; + } + else + { + gUnknown_0203A144->unk_080 = 2; + gUnknown_0203A144->unk_081 = 2; + gUnknown_0203A144->unk_082 = 28; + gUnknown_0203A144->unk_083 = FALSE; + } +} |