summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@gmail.com>2019-12-23 21:04:35 -0500
committerPikalaxALT <PikalaxALT@gmail.com>2019-12-24 10:20:30 -0500
commit10d550d5a234649b49800b6572abfa887c50d142 (patch)
tree2adf708143b75b84dc6e6496345e93fd71b24640
parent59581b3c574453ee38e86020adb5745d21471ef4 (diff)
region_map through sub_80C0450
-rw-r--r--asm/region_map.s457
-rw-r--r--src/region_map.c167
2 files changed, 166 insertions, 458 deletions
diff --git a/asm/region_map.s b/asm/region_map.s
index 5c01074a9..e3317d3b1 100644
--- a/asm/region_map.s
+++ b/asm/region_map.s
@@ -5,463 +5,6 @@
.text
- thumb_func_start sub_80C0100
-sub_80C0100: @ 80C0100
- push {r4,lr}
- sub sp, 0x8
- ldr r0, _080C011C @ =gUnknown_20399D4
- ldr r0, [r0]
- ldr r1, _080C0120 @ =0x000047a4
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x8
- bhi _080C0202
- lsls r0, 2
- ldr r1, _080C0124 @ =_080C0128
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080C011C: .4byte gUnknown_20399D4
-_080C0120: .4byte 0x000047a4
-_080C0124: .4byte _080C0128
- .align 2, 0
-_080C0128:
- .4byte _080C014C
- .4byte _080C0152
- .4byte _080C0158
- .4byte _080C015E
- .4byte _080C016A
- .4byte _080C0180
- .4byte _080C01D4
- .4byte _080C01E0
- .4byte _080C01EC
-_080C014C:
- bl sub_80C08E0
- b _080C021A
-_080C0152:
- bl sub_80C0904
- b _080C021A
-_080C0158:
- bl sub_80C0A6C
- b _080C021A
-_080C015E:
- bl sub_80C0238
- lsls r0, 24
- cmp r0, 0
- beq _080C0228
- b _080C021A
-_080C016A:
- movs r0, 0x1E
- str r0, [sp]
- movs r0, 0x14
- str r0, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- b _080C01BA
-_080C0180:
- ldr r4, _080C01C4 @ =gUnknown_20399D4
- ldr r1, [r4]
- ldr r2, _080C01C8 @ =0x0000479b
- adds r0, r1, r2
- ldrb r0, [r0]
- lsls r2, r0, 2
- adds r2, r0
- lsls r0, r2, 4
- subs r0, r2
- lsls r0, 4
- adds r0, 0x26
- adds r1, r0
- movs r0, 0
- bl sub_80C0CC8
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- ldr r1, [r4]
- ldr r2, _080C01CC @ =0x00004796
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _080C021A
- ldr r0, _080C01D0 @ =0x000012e6
- adds r1, r0
- movs r0, 0x1
- bl sub_80C0CC8
-_080C01BA:
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- b _080C021A
- .align 2, 0
-_080C01C4: .4byte gUnknown_20399D4
-_080C01C8: .4byte 0x0000479b
-_080C01CC: .4byte 0x00004796
-_080C01D0: .4byte 0x000012e6
-_080C01D4:
- bl sub_80C0B18
- movs r0, 0
- bl PutWindowTilemap
- b _080C021A
-_080C01E0:
- bl sub_80C0BB0
- movs r0, 0x1
- bl PutWindowTilemap
- b _080C021A
-_080C01EC:
- movs r0, 0x2
- bl sub_80C0E04
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080C021A
- movs r0, 0x1
- bl sub_80C0A88
- b _080C021A
-_080C0202:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- bl sub_80C03E8
- bl sub_80C08F4
-_080C021A:
- ldr r0, _080C0230 @ =gUnknown_20399D4
- ldr r1, [r0]
- ldr r2, _080C0234 @ =0x000047a4
- adds r1, r2
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_080C0228:
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080C0230: .4byte gUnknown_20399D4
-_080C0234: .4byte 0x000047a4
- thumb_func_end sub_80C0100
-
- thumb_func_start sub_80C0238
-sub_80C0238: @ 80C0238
- push {r4,lr}
- sub sp, 0x4
- ldr r0, _080C0258 @ =gUnknown_20399D4
- ldr r1, [r0]
- ldr r2, _080C025C @ =0x000047a8
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x8
- bls _080C024C
- b _080C03B0
-_080C024C:
- lsls r0, 2
- ldr r1, _080C0260 @ =_080C0264
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080C0258: .4byte gUnknown_20399D4
-_080C025C: .4byte 0x000047a8
-_080C0260: .4byte _080C0264
- .align 2, 0
-_080C0264:
- .4byte _080C0288
- .4byte _080C0298
- .4byte _080C02FC
- .4byte _080C0302
- .4byte _080C0340
- .4byte _080C034E
- .4byte _080C0364
- .4byte _080C037C
- .4byte _080C0394
-_080C0288:
- ldr r0, _080C0294 @ =gUnknown_83EF23C
- movs r1, 0xC0
- movs r2, 0x20
- bl LoadPalette
- b _080C03C8
- .align 2, 0
-_080C0294: .4byte gUnknown_83EF23C
-_080C0298:
- ldr r0, _080C02EC @ =gUnknown_83EF2DC
- movs r1, 0
- movs r2, 0xA0
- bl LoadPalette
- bl sub_80BFEA0
- ldr r0, _080C02F0 @ =gUnknown_20399D4
- ldr r0, [r0]
- ldr r1, _080C02F4 @ =0x00004796
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _080C02B6
- b _080C03C8
-_080C02B6:
- ldr r4, _080C02F8 @ =gUnknown_83EF23C + 0x1E
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0x2
- bl LoadPalette
- adds r0, r4, 0
- movs r1, 0x10
- movs r2, 0x2
- bl LoadPalette
- adds r0, r4, 0
- movs r1, 0x20
- movs r2, 0x2
- bl LoadPalette
- adds r0, r4, 0
- movs r1, 0x30
- movs r2, 0x2
- bl LoadPalette
- adds r0, r4, 0
- movs r1, 0x40
- movs r2, 0x2
- bl LoadPalette
- b _080C03C8
- .align 2, 0
-_080C02EC: .4byte gUnknown_83EF2DC
-_080C02F0: .4byte gUnknown_20399D4
-_080C02F4: .4byte 0x00004796
-_080C02F8: .4byte gUnknown_83EF23C + 0x1E
-_080C02FC:
- bl ResetTempTileDataBuffers
- b _080C03C8
-_080C0302:
- ldr r1, _080C0330 @ =gUnknown_83EF61C
- movs r4, 0
- str r4, [sp]
- movs r0, 0
- movs r2, 0
- movs r3, 0
- bl DecompressAndCopyTileDataToVram
- ldr r0, _080C0334 @ =gUnknown_20399D4
- ldr r0, [r0]
- ldr r2, _080C0338 @ =0x00004796
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _080C03C8
- ldr r1, _080C033C @ =gUnknown_83F1978
- str r4, [sp]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl DecompressAndCopyTileDataToVram
- b _080C03C8
- .align 2, 0
-_080C0330: .4byte gUnknown_83EF61C
-_080C0334: .4byte gUnknown_20399D4
-_080C0338: .4byte 0x00004796
-_080C033C: .4byte gUnknown_83F1978
-_080C0340:
- bl FreeTempTileDataBuffersIfPossible
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080C03C8
- b _080C03D6
-_080C034E:
- ldr r0, _080C035C @ =gUnknown_83F089C
- ldr r1, _080C0360 @ =gUnknown_20399D4
- ldr r1, [r1]
- adds r1, 0x26
- bl LZ77UnCompWram
- b _080C03C8
- .align 2, 0
-_080C035C: .4byte gUnknown_83F089C
-_080C0360: .4byte gUnknown_20399D4
-_080C0364:
- ldr r0, _080C0370 @ =gUnknown_83F0AFC
- ldr r1, _080C0374 @ =gUnknown_20399D4
- ldr r1, [r1]
- ldr r2, _080C0378 @ =0x000004d6
- b _080C039C
- .align 2, 0
-_080C0370: .4byte gUnknown_83F0AFC
-_080C0374: .4byte gUnknown_20399D4
-_080C0378: .4byte 0x000004d6
-_080C037C:
- ldr r0, _080C0388 @ =gUnknown_83F0C0C
- ldr r1, _080C038C @ =gUnknown_20399D4
- ldr r1, [r1]
- ldr r2, _080C0390 @ =0x00000986
- b _080C039C
- .align 2, 0
-_080C0388: .4byte gUnknown_83F0C0C
-_080C038C: .4byte gUnknown_20399D4
-_080C0390: .4byte 0x00000986
-_080C0394:
- ldr r0, _080C03A4 @ =gUnknown_83F0CF0
- ldr r1, _080C03A8 @ =gUnknown_20399D4
- ldr r1, [r1]
- ldr r2, _080C03AC @ =0x00000e36
-_080C039C:
- adds r1, r2
- bl LZ77UnCompWram
- b _080C03C8
- .align 2, 0
-_080C03A4: .4byte gUnknown_83F0CF0
-_080C03A8: .4byte gUnknown_20399D4
-_080C03AC: .4byte 0x00000e36
-_080C03B0:
- ldr r0, _080C03C0 @ =gUnknown_83F19A0
- ldr r2, _080C03C4 @ =0x000012e6
- adds r1, r2
- bl LZ77UnCompWram
- movs r0, 0x1
- b _080C03D8
- .align 2, 0
-_080C03C0: .4byte gUnknown_83F19A0
-_080C03C4: .4byte 0x000012e6
-_080C03C8:
- ldr r0, _080C03E0 @ =gUnknown_20399D4
- ldr r1, [r0]
- ldr r0, _080C03E4 @ =0x000047a8
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_080C03D6:
- movs r0, 0
-_080C03D8:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080C03E0: .4byte gUnknown_20399D4
-_080C03E4: .4byte 0x000047a8
- thumb_func_end sub_80C0238
-
- thumb_func_start sub_80C03E8
-sub_80C03E8: @ 80C03E8
- push {lr}
- ldr r0, _080C0404 @ =gUnknown_20399D4
- ldr r0, [r0]
- ldr r1, _080C0408 @ =0x000047b8
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0
- bl CreateTask
- ldr r0, _080C040C @ =sub_80C08B4
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_080C0404: .4byte gUnknown_20399D4
-_080C0408: .4byte 0x000047b8
-_080C040C: .4byte sub_80C08B4
- thumb_func_end sub_80C03E8
-
- thumb_func_start sub_80C0410
-sub_80C0410: @ 80C0410
- push {r4,r5,lr}
- bl sub_80C0E20
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- bl sub_80C3514
- adds r4, r0, 0
- lsls r4, 16
- asrs r4, 16
- bl sub_80C3508
- adds r3, r0, 0
- lsls r3, 16
- asrs r3, 16
- adds r0, r5, 0
- movs r1, 0
- adds r2, r4, 0
- bl sub_80C4164
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x63
- beq _080C0446
- movs r0, 0x1
- b _080C0448
-_080C0446:
- movs r0, 0
-_080C0448:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80C0410
-
- thumb_func_start sub_80C0450
-sub_80C0450: @ 80C0450
- push {lr}
- bl sub_80C0410
- cmp r0, 0
- beq _080C04E0
- movs r0, 0
- bl sub_80C3AC8
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080C0474
- movs r0, 0
- bl sub_80C3AC8
- lsls r0, 24
- cmp r0, 0
- bne _080C048E
-_080C0474:
- movs r0, 0x1
- bl sub_80C3AC8
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080C0494
- movs r0, 0x1
- bl sub_80C3AC8
- lsls r0, 24
- cmp r0, 0
- beq _080C0494
-_080C048E:
- movs r0, 0x65
- bl PlaySE
-_080C0494:
- bl sub_80C3508
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x15
- bne _080C04C2
- bl sub_80C3514
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xB
- bne _080C04C2
- movs r0, 0
- bl sub_80C0E04
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080C04C2
- movs r0, 0xE1
- bl PlaySE
- b _080C04E0
-_080C04C2:
- bl sub_80C3508
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x15
- bne _080C04E0
- bl sub_80C3514
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xD
- bne _080C04E0
- movs r0, 0xE1
- bl PlaySE
-_080C04E0:
- pop {r0}
- bx r0
- thumb_func_end sub_80C0450
-
thumb_func_start sub_80C04E4
sub_80C04E4: @ 80C04E4
push {r4,r5,lr}
diff --git a/src/region_map.c b/src/region_map.c
index 97bcd476b..e642ed2a4 100644
--- a/src/region_map.c
+++ b/src/region_map.c
@@ -5,12 +5,18 @@
#include "overworld.h"
#include "event_data.h"
#include "region_map.h"
+#include "window.h"
+#include "sound.h"
+#include "new_menu_helpers.h"
#include "constants/flags.h"
+#include "constants/songs.h"
#include "constants/region_map.h"
struct UnkStruct_20399D4
{
- u8 filler_0000[0x4796];
+ u8 filler_0000[0x0026];
+ u16 field_0026[5][600];
+ u8 filler_1796[0x3000];
u8 field_4796;
u8 field_4797[4];
u8 field_479B;
@@ -38,12 +44,40 @@ EWRAM_DATA void * gUnknown_20399FC = NULL;
static void sub_80BFFD0(void);
void sub_80C0100(void);
+bool8 sub_80C0238(void);
+void sub_80C03E8(void);
void sub_80C04E4(u8 taskId);
+void sub_80C08B4(void);
+void sub_80C08E0(void);
+void sub_80C08F4(void);
+void sub_80C0904(void);
+void sub_80C0A6C(void);
+void sub_80C0A88(u8 a0);
+void sub_80C0B18(void);
+void sub_80C0BB0(void);
+void sub_80C0CC8(u8 bg, u16 *map);
+bool8 sub_80C0E04(u8 a0);
+u8 sub_80C0E20(void);
+void sub_80C3008(u16 a0, u16 a1);
+u16 sub_80C3508(void);
+u16 sub_80C3514(void);
+u8 sub_80C3AC8(u8 a0);
+u8 sub_80C4164(u8 a0, u8 a1, s16 a2, s16 a3);
+void sub_80C41D8(u16 a0, u16 a1);
+void sub_80C4398(u8 a0, u8 taskId, TaskFunc taskFunc);
void sub_80C4F08(u8 taskId);
#include "data/text/map_section_names.h"
+extern const u16 gUnknown_83EF23C[];
extern const u16 gUnknown_83EF2DC[];
+extern const u32 gUnknown_83EF61C[];
+extern const u32 gUnknown_83F089C[];
+extern const u32 gUnknown_83F0AFC[];
+extern const u32 gUnknown_83F0C0C[];
+extern const u32 gUnknown_83F0CF0[];
+extern const u32 gUnknown_83F1978[];
+extern const u32 gUnknown_83F19A0[];
extern const u8 sSeviiMapsecs[3][30];
extern const u8 gUnknown_83F1B00[3][4];
@@ -158,3 +192,134 @@ static void sub_80BFFD0(void)
gUnknown_20399D4->field_479B = r7;
gUnknown_20399D4->field_479C = r7;
}
+
+void sub_80C0100(void)
+{
+ switch (gUnknown_20399D4->field_47A4)
+ {
+ case 0:
+ sub_80C08E0();
+ break;
+ case 1:
+ sub_80C0904();
+ break;
+ case 2:
+ sub_80C0A6C();
+ break;
+ case 3:
+ if (!sub_80C0238())
+ return;
+ break;
+ case 4:
+ FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 30, 20);
+ CopyBgTilemapBufferToVram(1);
+ break;
+ case 5:
+ sub_80C0CC8(0, gUnknown_20399D4->field_0026[gUnknown_20399D4->field_479B]);
+ CopyBgTilemapBufferToVram(0);
+ if (gUnknown_20399D4->field_4796 != 0)
+ {
+ sub_80C0CC8(1, gUnknown_20399D4->field_0026[4]);
+ CopyBgTilemapBufferToVram(1);
+ }
+ break;
+ case 6:
+ sub_80C0B18();
+ PutWindowTilemap(0);
+ break;
+ case 7:
+ sub_80C0BB0();
+ PutWindowTilemap(1);
+ break;
+ case 8:
+ if (sub_80C0E04(2) == TRUE)
+ sub_80C0A88(1);
+ break;
+ default:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
+ sub_80C03E8();
+ sub_80C08F4();
+ break;
+ }
+ gUnknown_20399D4->field_47A4++;
+}
+
+bool8 sub_80C0238(void)
+{
+ switch (gUnknown_20399D4->field_47A8)
+ {
+ case 0:
+ LoadPalette(gUnknown_83EF23C, 0xC0, 0x20);
+ break;
+ case 1:
+ LoadPalette(gUnknown_83EF2DC, 0x00, 0xA0);
+ sub_80BFEA0();
+ if (gUnknown_20399D4->field_4796 != 0)
+ {
+ LoadPalette(&gUnknown_83EF23C[15], 0x00, 0x02);
+ LoadPalette(&gUnknown_83EF23C[15], 0x10, 0x02);
+ LoadPalette(&gUnknown_83EF23C[15], 0x20, 0x02);
+ LoadPalette(&gUnknown_83EF23C[15], 0x30, 0x02);
+ LoadPalette(&gUnknown_83EF23C[15], 0x40, 0x02);
+ }
+ break;
+ case 2:
+ ResetTempTileDataBuffers();
+ break;
+ case 3:
+ DecompressAndCopyTileDataToVram(0, gUnknown_83EF61C, 0, 0, 0);
+ if (gUnknown_20399D4->field_4796 != 0)
+ {
+ DecompressAndCopyTileDataToVram(1, gUnknown_83F1978, 0, 0, 0);
+ }
+ break;
+ case 4:
+ if (FreeTempTileDataBuffersIfPossible() == TRUE)
+ return FALSE;
+ break;
+ case 5:
+ LZ77UnCompWram(gUnknown_83F089C, gUnknown_20399D4->field_0026[0]);
+ break;
+ case 6:
+ LZ77UnCompWram(gUnknown_83F0AFC, gUnknown_20399D4->field_0026[1]);
+ break;
+ case 7:
+ LZ77UnCompWram(gUnknown_83F0C0C, gUnknown_20399D4->field_0026[2]);
+ break;
+ case 8:
+ LZ77UnCompWram(gUnknown_83F0CF0, gUnknown_20399D4->field_0026[3]);
+ break;
+ default:
+ LZ77UnCompWram(gUnknown_83F19A0, gUnknown_20399D4->field_0026[4]);
+ return TRUE;
+ }
+ gUnknown_20399D4->field_47A8++;
+ return FALSE;
+}
+
+void sub_80C03E8(void)
+{
+ CreateTask(gUnknown_20399D4->field_47B8, 0);
+ SetMainCallback2(sub_80C08B4);
+}
+
+bool32 sub_80C0410(void)
+{
+ if (sub_80C4164(sub_80C0E20(), 0, sub_80C3514(), sub_80C3508()) == 99)
+ return FALSE;
+ else
+ return TRUE;
+}
+
+void sub_80C0450(void)
+{
+ if (sub_80C0410())
+ {
+ if ((sub_80C3AC8(0) != 1 && sub_80C3AC8(0) != 0) || (sub_80C3AC8(1) != 1 && sub_80C3AC8(1) != 0))
+ PlaySE(SE_Z_SCROLL);
+ if (sub_80C3508() == 21 && sub_80C3514() == 11 && sub_80C0E04(0) == TRUE)
+ PlaySE(SE_W255);
+ else if (sub_80C3508() == 21 && sub_80C3514() == 13)
+ PlaySE(SE_W255);
+ }
+}