mirror of
https://github.com/pret/pmd-red.git
synced 2026-09-09 09:35:45 -05:00
sub_80A3BB0
This commit is contained in:
@@ -6,245 +6,6 @@
|
||||
.text
|
||||
|
||||
|
||||
|
||||
|
||||
thumb_func_start sub_80A3B80
|
||||
sub_80A3B80:
|
||||
push {r4,lr}
|
||||
adds r3, r0, 0
|
||||
lsls r1, 24
|
||||
lsrs r1, 24
|
||||
lsls r2, 24
|
||||
lsrs r2, 24
|
||||
ldr r4, _080A3BA8
|
||||
adds r0, r3, r4
|
||||
ldr r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _080A3BA2
|
||||
adds r4, 0x4
|
||||
adds r0, r3, r4
|
||||
strb r1, [r0]
|
||||
ldr r1, _080A3BAC
|
||||
adds r0, r3, r1
|
||||
strb r2, [r0]
|
||||
_080A3BA2:
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080A3BA8: .4byte 0x0000046c
|
||||
_080A3BAC: .4byte 0x00000471
|
||||
thumb_func_end sub_80A3B80
|
||||
|
||||
thumb_func_start sub_80A3BB0
|
||||
sub_80A3BB0:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
sub sp, 0x4
|
||||
adds r5, r0, 0
|
||||
lsls r1, 16
|
||||
asrs r1, 16
|
||||
adds r6, r1, 0
|
||||
movs r0, 0x91
|
||||
lsls r0, 3
|
||||
adds r0, r5
|
||||
mov r8, r0
|
||||
cmp r1, 0
|
||||
blt _080A3BD4
|
||||
cmp r1, 0x1
|
||||
ble _080A3BD4
|
||||
cmp r1, 0x4
|
||||
ble _080A3C00
|
||||
_080A3BD4:
|
||||
ldr r1, _080A3BFC
|
||||
adds r0, r5, r1
|
||||
movs r1, 0x1
|
||||
str r1, [r0]
|
||||
movs r2, 0xA7
|
||||
lsls r2, 3
|
||||
adds r0, r5, r2
|
||||
movs r1, 0
|
||||
ldrsh r3, [r0, r1]
|
||||
movs r0, 0
|
||||
cmp r6, 0x1
|
||||
bne _080A3BEE
|
||||
movs r0, 0x1
|
||||
_080A3BEE:
|
||||
str r0, [sp]
|
||||
mov r0, r8
|
||||
adds r1, r5, 0
|
||||
movs r2, 0
|
||||
bl sub_80A3D40
|
||||
b _080A3C48
|
||||
.align 2, 0
|
||||
_080A3BFC: .4byte 0x00000474
|
||||
_080A3C00:
|
||||
ldr r2, _080A3C88
|
||||
adds r0, r5, r2
|
||||
movs r7, 0x2
|
||||
str r7, [r0]
|
||||
movs r0, 0xA7
|
||||
lsls r0, 3
|
||||
adds r4, r5, r0
|
||||
movs r2, 0
|
||||
ldrsh r0, [r4, r2]
|
||||
subs r3, r0, 0x1
|
||||
movs r0, 0
|
||||
cmp r1, 0x4
|
||||
bne _080A3C1C
|
||||
movs r0, 0x1
|
||||
_080A3C1C:
|
||||
str r0, [sp]
|
||||
mov r0, r8
|
||||
adds r1, r5, 0
|
||||
movs r2, 0
|
||||
bl sub_80A3D40
|
||||
movs r1, 0x9B
|
||||
lsls r1, 3
|
||||
adds r0, r5, r1
|
||||
movs r1, 0
|
||||
ldrsh r2, [r4, r1]
|
||||
subs r2, 0x1
|
||||
adds r3, r7, 0
|
||||
eors r3, r6
|
||||
negs r1, r3
|
||||
orrs r1, r3
|
||||
lsrs r1, 31
|
||||
str r1, [sp]
|
||||
adds r1, r5, 0
|
||||
movs r3, 0x1
|
||||
bl sub_80A3D40
|
||||
_080A3C48:
|
||||
movs r6, 0
|
||||
ldr r2, _080A3C88
|
||||
adds r0, r5, r2
|
||||
ldr r0, [r0]
|
||||
cmp r6, r0
|
||||
bge _080A3CF0
|
||||
movs r0, 0x8F
|
||||
lsls r0, 3
|
||||
adds r7, r5, r0
|
||||
mov r4, r8
|
||||
_080A3C5C:
|
||||
adds r0, r5, 0
|
||||
adds r1, r6, 0
|
||||
ldr r2, _080A3C8C
|
||||
bl sub_80A456C
|
||||
movs r1, 0x4
|
||||
ldrsh r0, [r4, r1]
|
||||
cmp r0, 0x1
|
||||
beq _080A3C72
|
||||
cmp r0, 0x2
|
||||
beq _080A3CB4
|
||||
_080A3C72:
|
||||
movs r2, 0
|
||||
ldrsh r0, [r4, r2]
|
||||
cmp r0, 0x1
|
||||
beq _080A3C94
|
||||
cmp r0, 0x1
|
||||
ble _080A3C82
|
||||
cmp r0, 0x2
|
||||
beq _080A3C9C
|
||||
_080A3C82:
|
||||
ldr r0, _080A3C90
|
||||
b _080A3CD6
|
||||
.align 2, 0
|
||||
_080A3C88: .4byte 0x00000474
|
||||
_080A3C8C: .4byte gUnknown_8117314
|
||||
_080A3C90: .4byte sub_80A3EBC
|
||||
_080A3C94:
|
||||
ldr r0, _080A3C98
|
||||
b _080A3CD6
|
||||
.align 2, 0
|
||||
_080A3C98: .4byte sub_80A3EF4
|
||||
_080A3C9C:
|
||||
ldrb r0, [r4, 0x6]
|
||||
ldr r1, _080A3CAC
|
||||
cmp r0, 0
|
||||
beq _080A3CA6
|
||||
ldr r1, _080A3CB0
|
||||
_080A3CA6:
|
||||
str r1, [r4, 0x18]
|
||||
b _080A3CD8
|
||||
.align 2, 0
|
||||
_080A3CAC: .4byte sub_80A4088
|
||||
_080A3CB0: .4byte sub_80A41C4
|
||||
_080A3CB4:
|
||||
movs r1, 0
|
||||
ldrsh r0, [r4, r1]
|
||||
cmp r0, 0x1
|
||||
beq _080A3CCC
|
||||
cmp r0, 0x1
|
||||
ble _080A3CC4
|
||||
cmp r0, 0x2
|
||||
beq _080A3CD4
|
||||
_080A3CC4:
|
||||
ldr r0, _080A3CC8
|
||||
b _080A3CD6
|
||||
.align 2, 0
|
||||
_080A3CC8: .4byte sub_80A3ED4
|
||||
_080A3CCC:
|
||||
ldr r0, _080A3CD0
|
||||
b _080A3CD6
|
||||
.align 2, 0
|
||||
_080A3CD0: .4byte sub_80A3F94
|
||||
_080A3CD4:
|
||||
ldr r0, _080A3D34
|
||||
_080A3CD6:
|
||||
str r0, [r4, 0x18]
|
||||
_080A3CD8:
|
||||
adds r0, r4, 0
|
||||
adds r1, r7, 0
|
||||
bl sub_80A3E14
|
||||
adds r7, 0x8
|
||||
adds r4, 0x50
|
||||
adds r6, 0x1
|
||||
ldr r2, _080A3D38
|
||||
adds r0, r5, r2
|
||||
ldr r0, [r0]
|
||||
cmp r6, r0
|
||||
blt _080A3C5C
|
||||
_080A3CF0:
|
||||
ldr r1, _080A3D38
|
||||
adds r0, r5, r1
|
||||
ldr r6, [r0]
|
||||
cmp r6, 0x1
|
||||
bgt _080A3D26
|
||||
lsls r0, r6, 2
|
||||
adds r0, r6
|
||||
lsls r0, 4
|
||||
mov r2, r8
|
||||
adds r4, r0, r2
|
||||
_080A3D04:
|
||||
adds r0, r5, 0
|
||||
adds r1, r6, 0
|
||||
ldr r2, _080A3D3C
|
||||
bl sub_80A456C
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
adds r0, r4, 0
|
||||
adds r1, r5, 0
|
||||
movs r2, 0
|
||||
movs r3, 0
|
||||
bl sub_80A3D40
|
||||
adds r4, 0x50
|
||||
adds r6, 0x1
|
||||
cmp r6, 0x1
|
||||
ble _080A3D04
|
||||
_080A3D26:
|
||||
add sp, 0x4
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080A3D34: .4byte sub_80A4358
|
||||
_080A3D38: .4byte 0x00000474
|
||||
_080A3D3C: .4byte gUnknown_8117314
|
||||
thumb_func_end sub_80A3BB0
|
||||
|
||||
thumb_func_start sub_80A3D40
|
||||
sub_80A3D40:
|
||||
push {r4-r7,lr}
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
#include "structs/str_file_system.h"
|
||||
#include "structs/str_202EE8C.h"
|
||||
#include "structs/str_position.h"
|
||||
|
||||
typedef struct SubStruct_0
|
||||
{
|
||||
@@ -31,9 +32,17 @@ typedef struct SubStruct_3E0
|
||||
|
||||
typedef struct SubStruct_488
|
||||
{
|
||||
u8 fill0[0x18];
|
||||
s16 unk0;
|
||||
u16 unk2;
|
||||
s16 unk4;
|
||||
u8 unk6;
|
||||
s32 unk8;
|
||||
s32 unkC;
|
||||
s32 unk10;
|
||||
s32 unk14;
|
||||
void (*unk18)(struct SubStruct_488 *);
|
||||
u8 fill1C[0x84];
|
||||
s32 unk1C;
|
||||
u8 fill1C[0x30];
|
||||
} SubStruct_488;
|
||||
|
||||
// size: 0x18?
|
||||
@@ -68,6 +77,7 @@ typedef struct SubStruct_448
|
||||
#define UNK_0_ARR_COUNT 14
|
||||
#define UNK_E0_ARR_COUNT 32
|
||||
#define UNK_3E0_ARR_COUNT 2
|
||||
#define UNK_488_ARR_COUNT 2
|
||||
#define UNK_54C_ARR_COUNT 2
|
||||
#define UNK_545_UNK6_ARR_COUNT 4
|
||||
|
||||
@@ -99,8 +109,9 @@ typedef struct unkStruct_3001B70
|
||||
const void *unk46C;
|
||||
u8 unk470;
|
||||
u8 unk471;
|
||||
u8 fill472[0x488-0x472];
|
||||
struct SubStruct_488 unk488;
|
||||
s32 unk474;
|
||||
PixelPos unk478[UNK_488_ARR_COUNT];
|
||||
struct SubStruct_488 unk488[UNK_488_ARR_COUNT];
|
||||
u16 unk528;
|
||||
u8 unk52A;
|
||||
SubStruct_52C unk52C;
|
||||
|
||||
@@ -463,7 +463,7 @@ UNUSED static const u8 *sub_80A2B28(u16 r0)
|
||||
return sub_80A2B18(GetScriptVarValue(NULL, GROUND_PLACE));
|
||||
}
|
||||
|
||||
// TODO: Figure out if a new file starts here
|
||||
// TODO: Figure out if a new file starts here. Edit: new file indeed starts here
|
||||
|
||||
#include "ground_map.h"
|
||||
#include "text_1.h"
|
||||
@@ -657,7 +657,7 @@ void sub_80A2E64(unkStruct_3001B70 *mapPtr)
|
||||
}
|
||||
|
||||
sub_80A3BB0(mapPtr, 0);
|
||||
sub_80A3EB0(&mapPtr->unk488);
|
||||
sub_80A3EB0(mapPtr->unk488);
|
||||
mapPtr->unk52A = 1;
|
||||
}
|
||||
|
||||
@@ -859,7 +859,7 @@ void sub_80A2FBC(unkStruct_3001B70 *mapPtr, s32 a1_)
|
||||
}
|
||||
|
||||
sub_80A3BB0(mapPtr, 0);
|
||||
sub_80A3EB0(&mapPtr->unk488);
|
||||
sub_80A3EB0(mapPtr->unk488);
|
||||
mapPtr->unk52A = 1;
|
||||
}
|
||||
|
||||
@@ -996,7 +996,7 @@ void sub_80A3440(unkStruct_3001B70 *mapPtr, s32 a1_, DungeonLocation *dungLoc, s
|
||||
sub3E0->unk24 = 0;
|
||||
}
|
||||
sub_80A3BB0(mapPtr, 0);
|
||||
sub_80A3EB0(&mapPtr->unk488);
|
||||
sub_80A3EB0(mapPtr->unk488);
|
||||
mapPtr->unk52A = 1;
|
||||
// bad sp alloc for compiler generated variables...
|
||||
ASM_MATCH_TRICK(mapPtr_454->unk6[0]);
|
||||
@@ -1149,4 +1149,89 @@ const u8 *sub_80A3908(u16 **dstArray, const void *src_, SubStruct_52C *a2, SubSt
|
||||
return src;
|
||||
}
|
||||
|
||||
void sub_80A3B80(unkStruct_3001B70 *mapPtr, u8 a1, u8 a2)
|
||||
{
|
||||
if (mapPtr->unk46C != NULL) {
|
||||
mapPtr->unk470 = a1;
|
||||
mapPtr->unk471 = a2;
|
||||
}
|
||||
}
|
||||
|
||||
extern const PixelPos gUnknown_8117314;
|
||||
void sub_80A3D40(SubStruct_488 *a0, unkStruct_3001B70 *mapPtr, s32 a2, s32 a3, bool8 a4);
|
||||
void sub_80A3E14(SubStruct_488 *a0, PixelPos *a1);
|
||||
void sub_80A3EBC(SubStruct_488 *a0);
|
||||
void sub_80A3EF4(SubStruct_488 *a0);
|
||||
void sub_80A4088(SubStruct_488 *a0);
|
||||
void sub_80A41C4(SubStruct_488 *a0);
|
||||
void sub_80A3ED4(SubStruct_488 *a0);
|
||||
void sub_80A3F94(SubStruct_488 *a0);
|
||||
void sub_80A4358(SubStruct_488 *a0);
|
||||
|
||||
void sub_80A3BB0(unkStruct_3001B70 *mapPtr, s32 a0_)
|
||||
{
|
||||
s32 i;
|
||||
// s16 memes strike yet again
|
||||
s32 a0Match = (s16) a0_;
|
||||
s32 a0 = a0Match;
|
||||
|
||||
SubStruct_488 *map488 = mapPtr->unk488;
|
||||
|
||||
switch (a0) {
|
||||
default:
|
||||
case 0:
|
||||
case 1:
|
||||
mapPtr->unk474 = 1;
|
||||
sub_80A3D40(&map488[0], mapPtr, 0, mapPtr->unk52C.unkC, (a0 == 1));
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
mapPtr->unk474 = 2;
|
||||
sub_80A3D40(&map488[0], mapPtr, 0, mapPtr->unk52C.unkC - 1, (a0 == 4));
|
||||
sub_80A3D40(&map488[1], mapPtr, mapPtr->unk52C.unkC - 1, 1, (a0 != 2));
|
||||
break;
|
||||
}
|
||||
|
||||
for (i = 0; i < mapPtr->unk474; i++) {
|
||||
sub_80A456C(mapPtr, i, &gUnknown_8117314);
|
||||
switch (map488[i].unk4) {
|
||||
default:
|
||||
case 1:
|
||||
switch (map488[i].unk0) {
|
||||
default:
|
||||
case 0:
|
||||
map488[i].unk18 = sub_80A3EBC;
|
||||
break;
|
||||
case 1:
|
||||
map488[i].unk18 = sub_80A3EF4;
|
||||
break;
|
||||
case 2:
|
||||
map488[i].unk18 = (map488[i].unk6 != 0) ? sub_80A41C4 : sub_80A4088;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
switch (map488[i].unk0) {
|
||||
default:
|
||||
case 0:
|
||||
map488[i].unk18 = sub_80A3ED4;
|
||||
break;
|
||||
case 1:
|
||||
map488[i].unk18 = sub_80A3F94;
|
||||
break;
|
||||
case 2:
|
||||
map488[i].unk18 = sub_80A4358;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
sub_80A3E14(&map488[i], &mapPtr->unk478[i]);
|
||||
}
|
||||
for (i = mapPtr->unk474; i < UNK_488_ARR_COUNT; i++) {
|
||||
sub_80A456C(mapPtr, i, &gUnknown_8117314);
|
||||
sub_80A3D40(&map488[i], mapPtr, 0, 0, FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user