through sub_80C1A94

This commit is contained in:
PikalaxALT
2020-01-04 13:12:22 -05:00
parent e58e6689b8
commit 2c825017e6
4 changed files with 117 additions and 305 deletions
-304
View File
@@ -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}
+1
View File
@@ -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
+1
View File
@@ -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[];
+115 -1
View File
@@ -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;
}
}