summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2017-10-29 20:49:49 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2017-10-29 20:49:49 -0400
commit6f68e5af95295d10b8dc956d6c621999002377de (patch)
tree28fd39a0e6fc9981cd52b4f8ea81e31652a1eedf /src
parent76bb397e83ca5d8b4f7a501f2517e83e4a9eccec (diff)
sub_8122DB0
Diffstat (limited to 'src')
-rw-r--r--src/field_region_map.c4
-rw-r--r--src/region_map.c112
2 files changed, 112 insertions, 4 deletions
diff --git a/src/field_region_map.c b/src/field_region_map.c
index e8c52de77..74b62bbc7 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, FALSE);
+ sub_8122CDC(&gUnknown_0203BCD0->regionMap, 0);
sub_8124288(0, 0);
sub_81240D4(1, 1);
gUnknown_0203BCD0->state ++;
@@ -181,7 +181,7 @@ void sub_8170290(void)
static void sub_8170428(void)
{
- if (gUnknown_0203BCD0->regionMap.unk_02)
+ if (gUnknown_0203BCD0->regionMap.unk_002 != 0)
{
FillWindowPixelBuffer(0, 0x11);
PrintTextOnWindow(0, 1, gUnknown_0203BCD0->regionMap.mapSecName, 0, 1, 0, NULL);
diff --git a/src/region_map.c b/src/region_map.c
index 1f54108d6..dc53f1ec6 100644
--- a/src/region_map.c
+++ b/src/region_map.c
@@ -2,6 +2,9 @@
// Includes
#include "global.h"
#include "region_map.h"
+#include "menu.h"
+#include "palette.h"
+#include "bg.h"
// Static type declarations
@@ -20,18 +23,30 @@ void sub_8122CF8(struct RegionMap *regionMap, struct UnkStruct_8122CF8 *arg1, bo
bool8 sub_8122DB0(void);
u8 sub_8123254(void);
u8 sub_81230C4(void);
+void sub_81238AC(void);
+u16 sub_8123EB4(u16 mapSecId);
+u8 get_flagnr_blue_points(u16 mapSecId);
+void sub_81236C4(s32 a0, s32 a1, s32 a2, s32 a3, u16 a4, u16 a5, u16 a6);
+void sub_8123FB0(void);
+void sub_81237B4(void);
// .rodata
+extern const u8 gUnknown_0859F77C[];
+extern const u8 gUnknown_085A04E0[];
+extern const u16 gUnknown_0859F73C[];
+extern const u8 gUnknown_0859F60C[];
+extern const u8 gUnknown_0859F650[];
+
// .text
-void sub_8122CDC(struct RegionMap *regionMap, bool8 argument)
+void sub_8122CDC(struct RegionMap *regionMap, u8 argument)
{
sub_8122CF8(regionMap, NULL, argument);
while (sub_8122DB0());
}
-void sub_8122CF8(struct RegionMap *regionMap, struct UnkStruct_8122CF8 *arg1, bool8 arg2)
+void sub_8122CF8(struct RegionMap *regionMap, struct UnkStruct_8122CF8 *arg1, u8 arg2)
{
gUnknown_0203A144 = regionMap;
gUnknown_0203A144->unk_079 = 0;
@@ -52,3 +67,96 @@ void sub_8122CF8(struct RegionMap *regionMap, struct UnkStruct_8122CF8 *arg1, bo
gUnknown_0203A144->unk_083 = FALSE;
}
}
+
+void sub_8122D88(struct RegionMap *regionMap)
+{
+ gUnknown_0203A144 = regionMap;
+ sub_81238AC();
+ gUnknown_0203A144->unk_074 = gUnknown_0203A144->unk_054;
+ gUnknown_0203A144->unk_076 = gUnknown_0203A144->unk_056;
+}
+
+bool8 sub_8122DB0(void)
+{
+ switch (gUnknown_0203A144->unk_079)
+ {
+ case 0:
+ if (gUnknown_0203A144->unk_083)
+ {
+ decompress_and_copy_tile_data_to_vram(gUnknown_0203A144->unk_080, gUnknown_0859F77C, 0, 0, 0);
+ }
+ else
+ {
+ LZ77UnCompVram(gUnknown_0859F77C, (u16 *)BG_SCREEN_ADDR(16));
+ }
+ break;
+ case 1:
+ if (gUnknown_0203A144->unk_083)
+ {
+ if (!free_temp_tile_data_buffers_if_possible())
+ {
+ decompress_and_copy_tile_data_to_vram(gUnknown_0203A144->unk_080, gUnknown_085A04E0, 0, 0, 1);
+ }
+ }
+ else
+ {
+ LZ77UnCompVram(gUnknown_085A04E0, (u16 *)BG_SCREEN_ADDR(28));
+ }
+ break;
+ case 2:
+ if (!free_temp_tile_data_buffers_if_possible())
+ {
+ LoadPalette(gUnknown_0859F73C, 0x70, 0x60);
+ }
+ break;
+ case 3:
+ LZ77UnCompWram(gUnknown_0859F60C, gUnknown_0203A144->unk_184);
+ break;
+ case 4:
+ LZ77UnCompWram(gUnknown_0859F650, gUnknown_0203A144->unk_284);
+ break;
+ case 5:
+ sub_81238AC();
+ gUnknown_0203A144->unk_074 = gUnknown_0203A144->unk_054;
+ gUnknown_0203A144->unk_076 = gUnknown_0203A144->unk_056;
+ gUnknown_0203A144->mapSecId = sub_8123EB4(gUnknown_0203A144->mapSecId);
+ gUnknown_0203A144->unk_002 = get_flagnr_blue_points(gUnknown_0203A144->mapSecId);
+ GetMapName(gUnknown_0203A144->mapSecName, gUnknown_0203A144->mapSecId, 16);
+ break;
+ case 6:
+ if (gUnknown_0203A144->unk_078 == 0)
+ {
+ sub_81236C4(0, 0, 0, 0, 0x100, 0x100, 0);
+ }
+ else
+ {
+ gUnknown_0203A144->unk_05c = gUnknown_0203A144->unk_054 * 8 - 0x34;
+ gUnknown_0203A144->unk_05e = gUnknown_0203A144->unk_056 * 8 - 0x44;
+ gUnknown_0203A144->unk_064 = gUnknown_0203A144->unk_054;
+ gUnknown_0203A144->unk_066 = gUnknown_0203A144->unk_056;
+ sub_81236C4(gUnknown_0203A144->unk_05c, gUnknown_0203A144->unk_05e, 0x38, 0x48, 0x80, 0x80, 0);
+ }
+ break;
+ case 7:
+ sub_8123FB0();
+ sub_81237B4();
+ gUnknown_0203A144->unk_01c = 0;
+ gUnknown_0203A144->unk_020 = 0;
+ gUnknown_0203A144->unk_07a = 0;
+ gUnknown_0203A144->unk_07e = 0;
+ if (gUnknown_0203A144->unk_083)
+ {
+ SetBgAttribute(gUnknown_0203A144->unk_080, BG_CTRL_ATTR_MAPBASEINDEX, 2);
+ SetBgAttribute(gUnknown_0203A144->unk_080, BG_CTRL_ATTR_VISIBLE, gUnknown_0203A144->unk_081);
+ SetBgAttribute(gUnknown_0203A144->unk_080, BG_CTRL_ATTR_CHARBASEINDEX, gUnknown_0203A144->unk_082);
+ SetBgAttribute(gUnknown_0203A144->unk_080, BG_CTRL_ATTR_PRIORITY, 1);
+ SetBgAttribute(gUnknown_0203A144->unk_080, BG_CTRL_ATTR_SCREENSIZE, 1);
+ }
+ gUnknown_0203A144->unk_079 ++;
+ return FALSE;
+ default:
+ return FALSE;
+ }
+ gUnknown_0203A144->unk_079 ++;
+ return TRUE;
+}