mirror of
https://github.com/pret/pmd-red.git
synced 2026-04-24 15:07:09 -05:00
Match sub_80A64A4
This commit is contained in:
parent
cf4f529718
commit
254f034ea2
|
|
@ -5,120 +5,6 @@
|
|||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_80A64A4
|
||||
sub_80A64A4:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
ldr r0, _080A6508
|
||||
ldr r0, [r0]
|
||||
movs r1, 0x84
|
||||
lsls r1, 1
|
||||
adds r7, r0, r1
|
||||
bl sub_80A6460
|
||||
movs r0, 0
|
||||
mov r8, r0
|
||||
_080A64C0:
|
||||
movs r1, 0x2
|
||||
ldrsh r0, [r7, r1]
|
||||
cmp r0, 0
|
||||
ble _080A6568
|
||||
ldrh r5, [r7]
|
||||
mov r0, r8
|
||||
adds r0, 0x1D
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
mov r10, r0
|
||||
mov r1, r8
|
||||
lsls r0, r1, 20
|
||||
movs r1, 0xE8
|
||||
lsls r1, 17
|
||||
adds r0, r1
|
||||
lsrs r0, 16
|
||||
mov r9, r0
|
||||
movs r0, 0x80
|
||||
lsls r0, 2
|
||||
adds r1, r0, 0
|
||||
adds r0, r5, 0
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _080A6514
|
||||
ldr r0, _080A650C
|
||||
ldr r1, _080A6510
|
||||
bl OpenFileAndGetFileDataPtr
|
||||
adds r6, r0, 0
|
||||
movs r0, 0xFF
|
||||
ands r0, r5
|
||||
lsls r0, 6
|
||||
ldr r1, [r6, 0x4]
|
||||
adds r2, r1, r0
|
||||
b _080A652A
|
||||
.align 2, 0
|
||||
_080A6508: .4byte gUnknown_3001B7C
|
||||
_080A650C: .4byte gUnknown_81177EC
|
||||
_080A6510: .4byte gMonsterFileArchive
|
||||
_080A6514:
|
||||
movs r0, 0xFF
|
||||
ands r0, r5
|
||||
lsls r0, 2
|
||||
ldr r1, _080A6584
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
ldr r1, _080A6588
|
||||
bl OpenFileAndGetFileDataPtr
|
||||
adds r6, r0, 0
|
||||
ldr r2, [r6, 0x4]
|
||||
_080A652A:
|
||||
movs r1, 0x80
|
||||
lsls r1, 5
|
||||
adds r0, r1, 0
|
||||
adds r1, r5, 0
|
||||
ands r1, r0
|
||||
lsls r1, 16
|
||||
lsrs r1, 16
|
||||
negs r1, r1
|
||||
lsrs r4, r1, 31
|
||||
movs r1, 0x80
|
||||
lsls r1, 6
|
||||
adds r0, r1, 0
|
||||
ands r5, r0
|
||||
cmp r5, 0
|
||||
beq _080A654C
|
||||
movs r0, 0x2
|
||||
orrs r4, r0
|
||||
_080A654C:
|
||||
mov r0, r9
|
||||
adds r1, r2, 0
|
||||
movs r2, 0x10
|
||||
bl sub_809971C
|
||||
mov r0, r10
|
||||
adds r1, r4, 0
|
||||
bl sub_80997F4
|
||||
cmp r6, 0
|
||||
beq _080A6568
|
||||
adds r0, r6, 0
|
||||
bl CloseFile
|
||||
_080A6568:
|
||||
movs r0, 0x1
|
||||
add r8, r0
|
||||
adds r7, 0x4
|
||||
mov r1, r8
|
||||
cmp r1, 0x1
|
||||
ble _080A64C0
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080A6584: .4byte gUnknown_81178F4
|
||||
_080A6588: .4byte gOrnamentFileArchive
|
||||
thumb_func_end sub_80A64A4
|
||||
|
||||
thumb_func_start sub_80A658C
|
||||
sub_80A658C:
|
||||
push {r4,lr}
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ struct unkStruct_3001B7C_sub0
|
|||
struct unkStruct_3001B7C_sub108
|
||||
{
|
||||
u16 unk0;
|
||||
u16 unk2;
|
||||
s16 unk2;
|
||||
};
|
||||
// size: 0x110
|
||||
struct unkStruct_3001B7C
|
||||
|
|
|
|||
|
|
@ -21,10 +21,13 @@ extern struct unkStruct_3001B7C *gUnknown_3001B7C;
|
|||
extern const struct FileArchive gDungeonFileArchive;
|
||||
// monster_sbin.s
|
||||
extern const struct FileArchive gMonsterFileArchive;
|
||||
// ornament_sbin.s
|
||||
extern const struct FileArchive gOrnamentFileArchive;
|
||||
// data_8115F5C.s
|
||||
extern const u8 gUnknown_81177CC[];
|
||||
extern const u8 gUnknown_81177D8[];
|
||||
extern const u8 gUnknown_81177EC[];
|
||||
extern const u8 *gUnknown_81178F4[];
|
||||
|
||||
// code_8098BDC.s
|
||||
extern void sub_809971C(u16, u8 *, s16);
|
||||
|
|
@ -126,4 +129,53 @@ void sub_80A6460(void)
|
|||
}
|
||||
|
||||
CloseFile(file);
|
||||
}
|
||||
|
||||
void sub_80A64A4(void)
|
||||
{
|
||||
u8 *r2;
|
||||
u16 r4;
|
||||
u32 r5;
|
||||
struct OpenedFile *file;
|
||||
struct unkStruct_3001B7C_sub108 *r7;
|
||||
s32 i;
|
||||
s16 r9;
|
||||
u16 sl;
|
||||
u16 flag;
|
||||
u16 flag2;
|
||||
|
||||
r7 = gUnknown_3001B7C->unk108;
|
||||
sub_80A6460();
|
||||
|
||||
for (i = 0; i < 2; i++, r7++)
|
||||
{
|
||||
if (r7->unk2 > 0) {
|
||||
r5 = r7->unk0;
|
||||
sl = i + 29;
|
||||
r9 = 0x1D0 + i * 16;
|
||||
|
||||
flag = r5 & 0x200;
|
||||
if (flag) {
|
||||
file = OpenFileAndGetFileDataPtr(gUnknown_81177EC, &gMonsterFileArchive);
|
||||
r2 = file->data + (r5 & 0xFF) * 0x40;
|
||||
}
|
||||
else {
|
||||
file = OpenFileAndGetFileDataPtr((r5 & 0xFF)[gUnknown_81178F4], &gOrnamentFileArchive);
|
||||
r2 = file->data;
|
||||
}
|
||||
|
||||
flag2 = r5 & 0x1000;
|
||||
r4 = flag2 != 0;
|
||||
|
||||
flag = r5 & 0x2000;
|
||||
if (flag)
|
||||
r4 |= 2;
|
||||
|
||||
sub_809971C(r9, r2, 16);
|
||||
sub_80997F4(sl, r4);
|
||||
|
||||
if (file != NULL)
|
||||
CloseFile(file);
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user