Decomped sub_0205BD9C

Decomped by @slaw-22
This commit is contained in:
AnonymousRandomPerson 2026-03-18 21:57:41 -04:00
parent 17bb113eaa
commit d9a0eb731b
6 changed files with 77 additions and 153 deletions

View File

@ -9,7 +9,6 @@
.public CopyBitsFrom
.public CopyBitsTo
.public CopyFrameTypeOption
.public CopyMovesetFrom
.public CopyMovesetTo
.public CreateCollectionMenu
.public CreatePortraitBox
@ -262,7 +261,6 @@
.public _022B7310
.public _022B7320
.public _s32_div_f
.public memset
.public ov00_022BE0C8
.public ov01_02337B3C
.public ov01_02337B68
@ -381,7 +379,6 @@
.public sub_02056914
.public sub_02056D70
.public sub_02056E04
.public sub_02059AE8
.public sub_02059AF8
.public sub_0205B44C
.public sub_0205B77C

View File

@ -1,155 +1,8 @@
.include "asm/macros.inc"
.include "main_0205BD90.inc"
.include "main_0205BFB0.inc"
.text
arm_func_start sub_0205BD90
sub_0205BD90: ; 0x0205BD90
and r0, r0, #1
orr r0, r0, #2
bx lr
arm_func_end sub_0205BD90
arm_func_start sub_0205BD9C
sub_0205BD9C: ; 0x0205BD9C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
sub sp, sp, #0x10
mov r3, r0
mov r2, r1
add r0, sp, #0
mov r1, r3
bl sub_02050974
ldr r1, _0205BFA8 ; =_022B57BC
add r0, sp, #0
mov r2, #0x20
bl CopyBitsFrom
ldr r5, _0205BFAC ; =_020B0A54
mov r7, #0
add r6, sp, #0
mov r4, #0xb0
_0205BDD8:
ldr r1, [r5]
mov r0, r6
mla r1, r7, r4, r1
bl sub_0205C19C
add r7, r7, #1
cmp r7, #0x20
blt _0205BDD8
ldr r0, _0205BFAC ; =_020B0A54
mov r1, #0
ldr r4, [r0, #8]
mov r2, #0x44
mov r0, r4
bl memset
add r0, sp, #0
mov r1, r4
mov r2, #4
bl CopyBitsFrom
add r0, sp, #0
add r1, r4, #1
mov r2, #7
bl CopyBitsFrom
add r0, sp, #0
add r1, r4, #2
bl Copy16BitsFrom
add r0, sp, #0
add r1, r4, #4
mov r2, #0xb
bl CopyBitsFrom
add r0, sp, #0
add r1, r4, #6
bl sub_02059AE8
add r0, sp, #0
add r1, r4, #7
bl sub_02059AE8
add r0, sp, #0
add r1, r4, #8
mov r2, #0xa
bl CopyBitsFrom
add r0, sp, #0
add r1, r4, #0xa
mov r2, #0xa
bl CopyBitsFrom
add r0, sp, #0
add r1, r4, #0xc
mov r2, #8
bl CopyBitsFrom
add r0, sp, #0
add r1, r4, #0xd
mov r2, #8
bl CopyBitsFrom
add r0, sp, #0
add r1, r4, #0xe
mov r2, #8
bl CopyBitsFrom
add r0, sp, #0
add r1, r4, #0xf
mov r2, #8
bl CopyBitsFrom
add r0, sp, #0
add r1, r4, #0x10
mov r2, #0x18
bl CopyBitsFrom
add r0, sp, #0
add r1, r4, #0x14
mov r2, #0x45
bl CopyBitsFrom
add r0, sp, #0
add r1, r4, #0x20
mov r2, #4
bl CopyBitsFrom
add r0, sp, #0
add r1, r4, #0x22
bl CopyMovesetFrom
add r0, sp, #0
add r1, r4, #0x3a
mov r2, #0x50
bl CopyBitsFrom
ldr r0, _0205BFAC ; =_020B0A54
mov r1, #0
ldr r4, [r0, #8]
mov r2, #6
add r0, r4, #0x44
bl memset
add r0, sp, #0
add r1, r4, #0x46
mov r2, #0xb
bl CopyBitsFrom
add r0, sp, #0
add r1, r4, #0x48
mov r2, #0xb
bl CopyBitsFrom
ldr r1, _0205BFAC ; =_020B0A54
add r0, sp, #0
ldr r1, [r1, #4]
mov r2, #0x20
bl CopyBitsFrom
ldr r4, _0205BFAC ; =_020B0A54
mov r7, #0
add r6, sp, #0
mov r5, #0x40
_0205BF68:
ldr r1, [r4, #4]
mov r0, r6
add r1, r1, #4
mov r2, r5
add r1, r1, r7, lsl #3
bl CopyBitsFrom
add r7, r7, #1
cmp r7, #0x20
blt _0205BF68
add r0, sp, #0
bl sub_020509BC
bl Rand16Bit
bl sub_020634F4
ldr r0, [sp, #8]
add sp, sp, #0x10
ldmia sp!, {r3, r4, r5, r6, r7, pc}
.align 2, 0
_0205BFA8: .word _022B57BC
_0205BFAC: .word _020B0A54
arm_func_end sub_0205BD9C
arm_func_start sub_0205BFB0
sub_0205BFB0: ; 0x0205BFB0
stmdb sp!, {r3, r4, r5, r6, r7, lr}

View File

@ -15,7 +15,8 @@ union unkStruct_020B0A54_unk8 {
struct unkStruct_020B0A54 {
u8 unk0;
u8 unk1[7];
u8 unk1[3];
u32 unk4;
union unkStruct_020B0A54_unk8 unk8;
u8 unkC[150];
u16 unkA2;

View File

@ -7,5 +7,7 @@ void sub_0205BD14(u32 *dest, s32 index);
u32 sub_0205BD40(u32 val);
bool8 sub_0205BD5C(u32 val);
u8 sub_0205BD78(void);
u32 sub_0205BD90(u32 a0);
u32 sub_0205BD9C(u32 arg0, u32 arg1);
#endif //PMDSKY_MAIN_0205BD14_H

View File

@ -158,7 +158,7 @@ Static main
Object src/main_0205BBFC.o
Object asm/main_0205BCC4.o
Object src/main_0205BD14.o
Object asm/main_0205BD90.o
Object asm/main_0205BFB0.o
Object src/dungeon_init_2.o
Object asm/main_0206A750.o
Object src/main_0206C98C.o

View File

@ -1,8 +1,21 @@
#include "main_0205BD14.h"
#include "common.h"
#include "main_0200224C.h"
#include "main_02058FA4.h"
#include "main_02059A74.h"
#include "main_0205B690.h"
extern union unkStruct_020B0A54_union _020B0A54;
extern u32 _022B57BC;
extern void sub_02050974(void *v0, u32 v1, u32 v2);
extern void CopyBitsFrom(void *read_info, void *buf_read, s32 nbits);
extern void sub_0205C19C(struct WriteMonsterInfoToSave_struct *temp, void *src);
extern void* memset(void *s, s32 c, u32 n);
extern void Copy16BitsFrom(void *read_info, void *buf_read);
extern void CopyMovesetFrom(struct WriteMonsterInfoToSave_struct *read_info, void *dst);
extern void sub_020509BC(struct WriteMonsterInfoToSave_struct *temp);
extern void sub_020634F4(void);
void sub_0205BD14(u32 *dest, s32 index)
{
@ -28,3 +41,61 @@ u8 sub_0205BD78(void)
{
return RandInt(2) | 2;
}
u32 sub_0205BD90(u32 a0)
{
return a0 & 1 | 2;
}
u32 sub_0205BD9C(u32 arg0, u32 arg1)
{
struct WriteMonsterInfoToSave_struct temp;
struct ground_monster *monster;
sub_02050974(&temp, arg0, arg1);
CopyBitsFrom(&temp, &_022B57BC, 32);
for (s32 i = 0; i < 32; i++)
{
sub_0205C19C(&temp, &_020B0A54.struct0[i]);
}
monster = _020B0A54.struct1.unk8.monster;
memset(monster, 0, 68);
CopyBitsFrom(&temp, &monster->is_valid, 4);
CopyBitsFrom(&temp, &monster->level, 7);
Copy16BitsFrom(&temp, &monster->joined_at);
CopyBitsFrom(&temp, &monster->id, 11);
sub_02059AE8(&temp, &monster->level_at_first_evo);
sub_02059AE8(&temp, &monster->level_at_second_evo);
CopyBitsFrom(&temp, &monster->iq, 10);
CopyBitsFrom(&temp, &monster->max_hp, 10);
CopyBitsFrom(&temp, &monster->offensive_stats[0], 8);
CopyBitsFrom(&temp, &monster->offensive_stats[1], 8);
CopyBitsFrom(&temp, &monster->defensive_stats[0], 8);
CopyBitsFrom(&temp, &monster->defensive_stats[1], 8);
CopyBitsFrom(&temp, &monster->exp, 24);
CopyBitsFrom(&temp, &monster->iq_skill_flags, 69);
CopyBitsFrom(&temp, &monster->tactic, 4);
CopyMovesetFrom(&temp, monster->moves);
CopyBitsFrom(&temp, monster->name, 80);
struct unkStruct_020B0A54_unk8_inner *inner = _020B0A54.struct1.unk8.unk8;
memset(&inner->unk44, 0, 6);
CopyBitsFrom(&temp, &inner->unk46, 11);
CopyBitsFrom(&temp, &inner->unk48, 11);
CopyBitsFrom(&temp, (void*) _020B0A54.struct1.unk4, 32);
for (s32 i = 0; i < 32; i++)
{
CopyBitsFrom(&temp, _020B0A54.fp[1] + 4 + (i * 8), 64);
}
sub_020509BC(&temp);
Rand16Bit();
sub_020634F4();
return temp.result;
}