summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@gmail.com>2020-01-04 13:12:22 -0500
committerPikalaxALT <PikalaxALT@gmail.com>2020-01-04 13:12:22 -0500
commit2c825017e6a2e78374ccd97337580c15c2503a23 (patch)
tree13c2108691e9b72c4fb7b4cb60fc7196f8d653cd
parente58e6689b83d1bbcdae1009bc752aa37680a744f (diff)
through sub_80C1A94
-rw-r--r--asm/region_map.s304
-rw-r--r--include/map_preview_screen.h1
-rw-r--r--include/strings.h1
-rw-r--r--src/region_map.c116
4 files changed, 117 insertions, 305 deletions
diff --git a/asm/region_map.s b/asm/region_map.s
index ceb2213d1..ab3e5be1b 100644
--- a/asm/region_map.s
+++ b/asm/region_map.s
@@ -5,310 +5,6 @@
.text
- thumb_func_start sub_80C195C
-sub_80C195C: @ 80C195C
- push {r4-r6,lr}
- adds r6, r2, 0
- lsls r1, 24
- lsrs r5, r1, 24
- ldr r4, _080C19E0 @ =gUnknown_20399DC
- ldr r0, _080C19E4 @ =0x00003e28
- bl AllocZeroed
- str r0, [r4]
- bl sub_80C3580
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xB8
- bne _080C197C
- movs r0, 0xBC
-_080C197C:
- bl sub_80F8544
- ldr r1, [r4]
- movs r2, 0xF5
- lsls r2, 6
- adds r1, r2
- str r0, [r1]
- cmp r0, 0
- bne _080C199E
- movs r0, 0x8A
- bl sub_80F8544
- ldr r1, [r4]
- movs r3, 0xF5
- lsls r3, 6
- adds r1, r3
- str r0, [r1]
-_080C199E:
- ldr r0, [r4]
- ldr r1, _080C19E8 @ =0x00003d48
- adds r0, r1
- movs r2, 0
- strb r2, [r0]
- ldr r0, [r4]
- ldr r3, _080C19EC @ =0x00003d4a
- adds r0, r3
- strb r2, [r0]
- ldr r0, [r4]
- subs r3, 0x6
- adds r1, r0, r3
- str r6, [r1]
- ldr r1, _080C19F0 @ =0x00003e14
- adds r0, r1
- strh r2, [r0]
- movs r0, 0
- bl sub_80C4AAC
- bl sub_80C4BE4
- bl sub_80C0CA0
- ldr r1, _080C19F4 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _080C19F8 @ =sub_80C1A94
- str r1, [r0]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080C19E0: .4byte gUnknown_20399DC
-_080C19E4: .4byte 0x00003e28
-_080C19E8: .4byte 0x00003d48
-_080C19EC: .4byte 0x00003d4a
-_080C19F0: .4byte 0x00003e14
-_080C19F4: .4byte gTasks
-_080C19F8: .4byte sub_80C1A94
- thumb_func_end sub_80C195C
-
- thumb_func_start sub_80C19FC
-sub_80C19FC: @ 80C19FC
- push {lr}
- ldr r0, _080C1A18 @ =gUnknown_20399DC
- ldr r1, [r0]
- ldr r2, _080C1A1C @ =0x00003d4a
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _080C1A3A
- cmp r0, 0x1
- bgt _080C1A20
- cmp r0, 0
- beq _080C1A2A
- b _080C1A72
- .align 2, 0
-_080C1A18: .4byte gUnknown_20399DC
-_080C1A1C: .4byte 0x00003d4a
-_080C1A20:
- cmp r0, 0x2
- beq _080C1A50
- cmp r0, 0x3
- beq _080C1A5E
- b _080C1A72
-_080C1A2A:
- movs r2, 0xF5
- lsls r2, 6
- adds r0, r1, r2
- ldr r0, [r0]
- ldr r0, [r0, 0x4]
- bl LZ77UnCompWram
- b _080C1A76
-_080C1A3A:
- movs r2, 0xF5
- lsls r2, 6
- adds r0, r1, r2
- ldr r0, [r0]
- ldr r0, [r0, 0x8]
- movs r2, 0xE1
- lsls r2, 6
- adds r1, r2
- bl LZ77UnCompWram
- b _080C1A76
-_080C1A50:
- movs r2, 0xE1
- lsls r2, 6
- movs r0, 0x2
- movs r3, 0
- bl LoadBgTiles
- b _080C1A76
-_080C1A5E:
- movs r2, 0xF5
- lsls r2, 6
- adds r0, r1, r2
- ldr r0, [r0]
- ldr r0, [r0, 0xC]
- movs r1, 0xD0
- movs r2, 0x60
- bl LoadPalette
- b _080C1A76
-_080C1A72:
- movs r0, 0x1
- b _080C1A86
-_080C1A76:
- ldr r0, _080C1A8C @ =gUnknown_20399DC
- ldr r1, [r0]
- ldr r0, _080C1A90 @ =0x00003d4a
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r0, 0
-_080C1A86:
- pop {r1}
- bx r1
- .align 2, 0
-_080C1A8C: .4byte gUnknown_20399DC
-_080C1A90: .4byte 0x00003d4a
- thumb_func_end sub_80C19FC
-
- thumb_func_start sub_80C1A94
-sub_80C1A94: @ 80C1A94
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _080C1AB8 @ =gUnknown_20399DC
- ldr r0, [r1]
- ldr r3, _080C1ABC @ =0x00003d48
- adds r0, r3
- ldrb r0, [r0]
- adds r4, r1, 0
- cmp r0, 0x9
- bls _080C1AAC
- b _080C1BD0
-_080C1AAC:
- lsls r0, 2
- ldr r1, _080C1AC0 @ =_080C1AC4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080C1AB8: .4byte gUnknown_20399DC
-_080C1ABC: .4byte 0x00003d48
-_080C1AC0: .4byte _080C1AC4
- .align 2, 0
-_080C1AC4:
- .4byte _080C1AEC
- .4byte _080C1B04
- .4byte _080C1B12
- .4byte _080C1B34
- .4byte _080C1B54
- .4byte _080C1B5C
- .4byte _080C1B74
- .4byte _080C1B84
- .4byte _080C1B9C
- .4byte _080C1BBC
-_080C1AEC:
- bl sub_80C08E0
- ldr r0, _080C1AFC @ =gUnknown_20399DC
- ldr r1, [r0]
- ldr r0, _080C1B00 @ =0x00003d48
- adds r1, r0
- b _080C1BCA
- .align 2, 0
-_080C1AFC: .4byte gUnknown_20399DC
-_080C1B00: .4byte 0x00003d48
-_080C1B04:
- bl sub_80C19FC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080C1BD0
- b _080C1BC2
-_080C1B12:
- bl sub_80C1E94
- ldr r0, _080C1B28 @ =gUnknown_8418E9E
- bl sub_80C4E74
- ldr r0, _080C1B2C @ =gUnknown_20399DC
- ldr r1, [r0]
- ldr r0, _080C1B30 @ =0x00003d48
- adds r1, r0
- b _080C1BCA
- .align 2, 0
-_080C1B28: .4byte gUnknown_8418E9E
-_080C1B2C: .4byte gUnknown_20399DC
-_080C1B30: .4byte 0x00003d48
-_080C1B34:
- ldr r1, [r4]
- movs r3, 0xE1
- lsls r3, 6
- adds r1, r3
- movs r0, 0x2
- bl sub_80C1E78
- movs r0, 0x2
- bl CopyBgTilemapBufferToVram
- ldr r1, [r4]
- ldr r0, _080C1B50 @ =0x00003d48
- adds r1, r0
- b _080C1BCA
- .align 2, 0
-_080C1B50: .4byte 0x00003d48
-_080C1B54:
- movs r0, 0x2
- bl ShowBg
- b _080C1BC2
-_080C1B5C:
- bl sub_80C08F4
- ldr r0, _080C1B6C @ =gUnknown_20399DC
- ldr r1, [r0]
- ldr r0, _080C1B70 @ =0x00003d48
- adds r1, r0
- b _080C1BCA
- .align 2, 0
-_080C1B6C: .4byte gUnknown_20399DC
-_080C1B70: .4byte 0x00003d48
-_080C1B74:
- movs r0, 0
- bl sub_80C1F80
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080C1BD0
- b _080C1BC2
-_080C1B84:
- ldr r0, _080C1B94 @ =gTasks
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r1, r0
- ldr r0, _080C1B98 @ =sub_80C1BE0
- str r0, [r1]
- b _080C1BD0
- .align 2, 0
-_080C1B94: .4byte gTasks
-_080C1B98: .4byte sub_80C1BE0
-_080C1B9C:
- movs r0, 0x1
- bl sub_80C1F80
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080C1BD0
- ldr r0, _080C1BB4 @ =gUnknown_20399DC
- ldr r1, [r0]
- ldr r0, _080C1BB8 @ =0x00003d48
- adds r1, r0
- b _080C1BCA
- .align 2, 0
-_080C1BB4: .4byte gUnknown_20399DC
-_080C1BB8: .4byte 0x00003d48
-_080C1BBC:
- adds r0, r2, 0
- bl sub_80C1E14
-_080C1BC2:
- ldr r0, _080C1BD8 @ =gUnknown_20399DC
- ldr r1, [r0]
- ldr r3, _080C1BDC @ =0x00003d48
- adds r1, r3
-_080C1BCA:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_080C1BD0:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080C1BD8: .4byte gUnknown_20399DC
-_080C1BDC: .4byte 0x00003d48
- thumb_func_end sub_80C1A94
-
thumb_func_start sub_80C1BE0
sub_80C1BE0: @ 80C1BE0
push {r4-r7,lr}
diff --git a/include/map_preview_screen.h b/include/map_preview_screen.h
index 5ab5584e5..c4e2fa70c 100644
--- a/include/map_preview_screen.h
+++ b/include/map_preview_screen.h
@@ -49,5 +49,6 @@ void sub_80F85BC(u16 a0);
u16 sub_80F856C(u8 id);
bool8 sub_80F8110(u8 mapsec, bool8 forceFirstTime);
bool32 sub_80F83B0(void);
+const struct MapPreviewScreen * sub_80F8544(u8 mapsec);
#endif //GUARD_MAP_PREVIEW_SCREEN_H
diff --git a/include/strings.h b/include/strings.h
index 56aa2ec1a..cf26e63fd 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -1008,6 +1008,7 @@ extern const u8 gUnknown_8418EB5[];
extern const u8 gUnknown_8418E8B[];
extern const u8 gUnknown_8418E8D[];
extern const u8 gUnknown_8418E95[];
+extern const u8 gUnknown_8418E9E[];
extern const u8 gUnknown_8418EA7[];
extern const u8 gUnknown_8418EB0[];
extern const u8 gUnknown_8418EBC[];
diff --git a/src/region_map.c b/src/region_map.c
index f654ae0cf..a42a9183d 100644
--- a/src/region_map.c
+++ b/src/region_map.c
@@ -13,6 +13,7 @@
#include "menu.h"
#include "string_util.h"
#include "strings.h"
+#include "map_preview_screen.h"
#include "constants/flags.h"
#include "constants/songs.h"
#include "constants/region_map.h"
@@ -84,9 +85,23 @@ struct UnkStruct_83F1B3C
const u8 *field_8;
};
+struct UnkStruct_20399DC
+{
+ u16 field_0000[0x1C20];
+ u16 field_3840[0x280];
+ const struct MapPreviewScreen * field_3D40;
+ TaskFunc field_3D44;
+ u8 field_3D48;
+ u8 field_3D49;
+ u8 field_3D4A;
+ u8 filler_3D4B[0xC9];
+ u16 field_3E14;
+ u8 filler_3E16[0x12];
+}; // size = 0x3E28
+
EWRAM_DATA struct UnkStruct_20399D4 * gUnknown_20399D4 = NULL;
EWRAM_DATA struct UnkStruct_20399D8 * gUnknown_20399D8 = NULL;
-EWRAM_DATA void * gUnknown_20399DC = NULL;
+EWRAM_DATA struct UnkStruct_20399DC * gUnknown_20399DC = NULL;
EWRAM_DATA void * gUnknown_20399E0 = NULL;
EWRAM_DATA void * gUnknown_20399E4 = NULL;
EWRAM_DATA void * gUnknown_20399E8 = NULL;
@@ -127,6 +142,12 @@ bool8 sub_80C16D0(void);
void sub_80C1754(u8 a0, u16 a1, u16 a2);
void sub_80C176C(u8 a0, u16 a1, u16 a2);
void sub_80C1880(void);
+void sub_80C1A94(u8 taskId);
+void sub_80C1BE0(u8 taskId);
+void sub_80C1E14(u8 taskId);
+void sub_80C1E94(void);
+void sub_80C1E78(u8 bgId, const u16 * tilemap);
+bool8 sub_80C1F80(u8 a0);
void sub_80C4AAC(u8 a0);
void sub_80C4BE4(void);
void sub_80C4C2C(u8 a0, u16 a1, u16 a2);
@@ -1198,3 +1219,96 @@ const u8 *sub_80C1920(u16 a0)
}
return gUnknown_8418EC3;
}
+
+void sub_80C195C(u8 a0, u8 taskId, TaskFunc taskFunc)
+{
+ u8 r0;
+ gUnknown_20399DC = AllocZeroed(sizeof(struct UnkStruct_20399DC));
+ r0 = sub_80C3580();
+ if (r0 == MAPSEC_TANOBY_CHAMBERS)
+ r0 = MAPSEC_MONEAN_CHAMBER;
+ gUnknown_20399DC->field_3D40 = sub_80F8544(r0);
+ if (gUnknown_20399DC->field_3D40 == NULL)
+ gUnknown_20399DC->field_3D40 = sub_80F8544(MAPSEC_ROCK_TUNNEL);
+ gUnknown_20399DC->field_3D48 = 0;
+ gUnknown_20399DC->field_3D4A = 0;
+ gUnknown_20399DC->field_3D44 = taskFunc;
+ gUnknown_20399DC->field_3E14 = 0;
+ sub_80C4AAC(0);
+ sub_80C4BE4();
+ sub_80C0CA0();
+ gTasks[taskId].func = sub_80C1A94;
+}
+
+bool8 sub_80C19FC(void)
+{
+ switch (gUnknown_20399DC->field_3D4A)
+ {
+ case 0:
+ LZ77UnCompWram(gUnknown_20399DC->field_3D40->tilesptr, gUnknown_20399DC->field_0000);
+ break;
+ case 1:
+ LZ77UnCompWram(gUnknown_20399DC->field_3D40->tilemapptr, gUnknown_20399DC->field_3840);
+ break;
+ case 2:
+ LoadBgTiles(2, gUnknown_20399DC->field_0000, 0x3840, 0x000);
+ break;
+ case 3:
+ LoadPalette(gUnknown_20399DC->field_3D40->palptr, 0xD0, 0x60);
+ break;
+ default:
+ return TRUE;
+ }
+ gUnknown_20399DC->field_3D4A++;
+ return FALSE;
+}
+
+void sub_80C1A94(u8 taskId)
+{
+ switch (gUnknown_20399DC->field_3D48)
+ {
+ case 0:
+ sub_80C08E0();
+ gUnknown_20399DC->field_3D48++;
+ break;
+ case 1:
+ if (sub_80C19FC() == TRUE)
+ gUnknown_20399DC->field_3D48++;
+ break;
+ case 2:
+ sub_80C1E94();
+ sub_80C4E74(gUnknown_8418E9E);
+ gUnknown_20399DC->field_3D48++;
+ break;
+ case 3:
+ sub_80C1E78(2, gUnknown_20399DC->field_3840);
+ CopyBgTilemapBufferToVram(2);
+ gUnknown_20399DC->field_3D48++;
+ break;
+ case 4:
+ ShowBg(2);
+ gUnknown_20399DC->field_3D48++;
+ break;
+ case 5:
+ sub_80C08F4();
+ gUnknown_20399DC->field_3D48++;
+ break;
+ case 6:
+ if (sub_80C1F80(0) == TRUE)
+ gUnknown_20399DC->field_3D48++;
+ break;
+ case 7:
+ gTasks[taskId].func = sub_80C1BE0;
+ break;
+ case 8:
+ if (sub_80C1F80(1) == TRUE)
+ {
+ gUnknown_20399DC->field_3D48++;
+ }
+ break;
+ case 9:
+ sub_80C1E14(taskId);
+ gUnknown_20399DC->field_3D48++;
+ break;
+ }
+}