diff --git a/asm/include/main_0205BFB0.inc b/asm/include/main_0205BFB0.inc deleted file mode 100644 index 6c4db434..00000000 --- a/asm/include/main_0205BFB0.inc +++ /dev/null @@ -1,10 +0,0 @@ -#pragma once -.public Copy16BitsTo -.public CopyBitsTo -.public CopyMovesetTo -.public _020B0A54 -.public _022B57BC -.public sub_02050990 -.public sub_020509BC -.public sub_02059AF8 -.public sub_0205C440 diff --git a/asm/main_0205BFB0.s b/asm/main_0205BFB0.s deleted file mode 100644 index df31448e..00000000 --- a/asm/main_0205BFB0.s +++ /dev/null @@ -1,134 +0,0 @@ - .include "asm/macros.inc" - .include "main_0205BFB0.inc" - - .text - - arm_func_start sub_0205BFB0 -sub_0205BFB0: ; 0x0205BFB0 - 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_02050990 - ldr r1, _0205C194 ; =_022B57BC - add r0, sp, #0 - mov r2, #0x20 - bl CopyBitsTo - ldr r5, _0205C198 ; =_020B0A54 - mov r7, #0 - add r6, sp, #0 - mov r4, #0xb0 -_0205BFEC: - ldr r1, [r5] - mov r0, r6 - mla r1, r7, r4, r1 - bl sub_0205C440 - add r7, r7, #1 - cmp r7, #0x20 - blt _0205BFEC - ldr r1, _0205C198 ; =_020B0A54 - add r0, sp, #0 - ldr r4, [r1, #8] - mov r2, #4 - mov r1, r4 - bl CopyBitsTo - add r0, sp, #0 - add r1, r4, #1 - mov r2, #7 - bl CopyBitsTo - add r0, sp, #0 - add r1, r4, #2 - bl Copy16BitsTo - add r0, sp, #0 - add r1, r4, #4 - mov r2, #0xb - bl CopyBitsTo - add r0, sp, #0 - add r1, r4, #6 - bl sub_02059AF8 - add r0, sp, #0 - add r1, r4, #7 - bl sub_02059AF8 - add r0, sp, #0 - add r1, r4, #8 - mov r2, #0xa - bl CopyBitsTo - add r0, sp, #0 - add r1, r4, #0xa - mov r2, #0xa - bl CopyBitsTo - add r0, sp, #0 - add r1, r4, #0xc - mov r2, #8 - bl CopyBitsTo - add r0, sp, #0 - add r1, r4, #0xd - mov r2, #8 - bl CopyBitsTo - add r0, sp, #0 - add r1, r4, #0xe - mov r2, #8 - bl CopyBitsTo - add r0, sp, #0 - add r1, r4, #0xf - mov r2, #8 - bl CopyBitsTo - add r0, sp, #0 - add r1, r4, #0x10 - mov r2, #0x18 - bl CopyBitsTo - add r0, sp, #0 - add r1, r4, #0x14 - mov r2, #0x45 - bl CopyBitsTo - add r0, sp, #0 - add r1, r4, #0x20 - mov r2, #4 - bl CopyBitsTo - add r0, sp, #0 - add r1, r4, #0x22 - bl CopyMovesetTo - add r0, sp, #0 - add r1, r4, #0x3a - mov r2, #0x50 - bl CopyBitsTo - ldr r1, _0205C198 ; =_020B0A54 - add r0, sp, #0 - ldr r4, [r1, #8] - mov r2, #0xb - add r1, r4, #0x46 - bl CopyBitsTo - add r0, sp, #0 - add r1, r4, #0x48 - mov r2, #0xb - bl CopyBitsTo - ldr r1, _0205C198 ; =_020B0A54 - add r0, sp, #0 - ldr r1, [r1, #4] - mov r2, #0x20 - bl CopyBitsTo - ldr r4, _0205C198 ; =_020B0A54 - mov r7, #0 - add r6, sp, #0 - mov r5, #0x40 -_0205C15C: - ldr r1, [r4, #4] - mov r0, r6 - add r1, r1, #4 - mov r2, r5 - add r1, r1, r7, lsl #3 - bl CopyBitsTo - add r7, r7, #1 - cmp r7, #0x20 - blt _0205C15C - add r0, sp, #0 - bl sub_020509BC - ldr r0, [sp, #8] - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0205C194: .word _022B57BC -_0205C198: .word _020B0A54 - arm_func_end sub_0205BFB0 diff --git a/include/main_0205BD14.h b/include/main_0205BD14.h index e4b5e6ee..6997df43 100644 --- a/include/main_0205BD14.h +++ b/include/main_0205BD14.h @@ -1,6 +1,8 @@ #ifndef PMDSKY_MAIN_0205BD14_H #define PMDSKY_MAIN_0205BD14_H +#include "main_02058FA4.h" +#include "main_0205B690.h" #include "util.h" void sub_0205BD14(u32 *dest, s32 index); @@ -9,5 +11,7 @@ bool8 sub_0205BD5C(u32 val); u8 sub_0205BD78(void); u32 sub_0205BD90(u32 a0); u32 sub_0205BD9C(u32 arg0, u32 arg1); +u32 sub_0205BFB0(u32 p0, u32 p1); +void sub_0205C19C(struct WriteMonsterInfoToSave_struct *arg0, struct unkStruct_020B0A54 *arg1); #endif //PMDSKY_MAIN_0205BD14_H diff --git a/include/main_0205C19C.h b/include/main_0205C19C.h deleted file mode 100644 index 82133588..00000000 --- a/include/main_0205C19C.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef PMDSKY_MAIN_0205C19C_H -#define PMDSKY_MAIN_0205C19C_H - -#include "main_02058FA4.h" -#include "main_0205B690.h" - -void sub_0205C19C(struct WriteMonsterInfoToSave_struct *arg0, struct unkStruct_020B0A54 *arg1); - -#endif //PMDSKY_MAIN_0205C19C_H diff --git a/main.lsf b/main.lsf index ddd7e5d9..00fdeb09 100644 --- a/main.lsf +++ b/main.lsf @@ -158,8 +158,6 @@ Static main Object src/main_0205BBFC.o Object asm/main_0205BCC4.o Object src/main_0205BD14.o - Object asm/main_0205BFB0.o - Object src/main_0205C19C.o Object asm/main_0205C2A4.o Object src/dungeon_init_2.o Object asm/main_0206A750.o diff --git a/src/main_0205BD14.c b/src/main_0205BD14.c index fb39362b..5722590c 100644 --- a/src/main_0205BD14.c +++ b/src/main_0205BD14.c @@ -10,12 +10,16 @@ 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, struct unkStruct_020B0A54 *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_020509BC(struct WriteMonsterInfoToSave_struct *write_info); extern void sub_020634F4(void); +extern void sub_02050990(struct WriteMonsterInfoToSave_struct *write_info, u32 p1, u32 p2); +extern void CopyBitsTo(void *write_info, void* buf_write, s32 nbits); +extern void sub_0205C440(struct WriteMonsterInfoToSave_struct *write_info, const void *p1); +extern void Copy16BitsTo(void *write_info, void *buf_write); +extern void CopyMovesetTo(struct WriteMonsterInfoToSave_struct *write_info, void *buffer_write); void sub_0205BD14(u32 *dest, s32 index) { @@ -98,3 +102,71 @@ u32 sub_0205BD9C(u32 arg0, u32 arg1) return temp.result; } + +u32 sub_0205BFB0(u32 p0, u32 p1) +{ + struct WriteMonsterInfoToSave_struct stack_var; + + sub_02050990(&stack_var, p0, p1); + CopyBitsTo(&stack_var, &_022B57BC, 32); + + for (s32 i = 0; i < 32; i++) + { + sub_0205C440(&stack_var, &_020B0A54.struct0[i]); + } + + struct ground_monster *monster = _020B0A54.struct1.unk8.monster; + CopyBitsTo(&stack_var, &monster->is_valid, 4); + CopyBitsTo(&stack_var, &monster->level, 7); + Copy16BitsTo(&stack_var, &monster->joined_at); + CopyBitsTo(&stack_var, &monster->id, 11); + sub_02059AF8(&stack_var, &monster->level_at_first_evo); + sub_02059AF8(&stack_var, &monster->level_at_second_evo); + CopyBitsTo(&stack_var, &monster->iq, 10); + CopyBitsTo(&stack_var, &monster->max_hp, 10); + CopyBitsTo(&stack_var, &monster->offensive_stats[0], 8); + CopyBitsTo(&stack_var, &monster->offensive_stats[1], 8); + CopyBitsTo(&stack_var, &monster->defensive_stats[0], 8); + CopyBitsTo(&stack_var, &monster->defensive_stats[1], 8); + CopyBitsTo(&stack_var, &monster->exp, 24); + CopyBitsTo(&stack_var, &monster->iq_skill_flags, 69); + CopyBitsTo(&stack_var, &monster->tactic, 4); + CopyMovesetTo(&stack_var, monster->moves); + CopyBitsTo(&stack_var, monster->name, 80); + + struct unkStruct_020B0A54_unk8_inner *inner = _020B0A54.struct1.unk8.unk8; + CopyBitsTo(&stack_var, &inner->unk46, 11); + CopyBitsTo(&stack_var, &inner->unk48, 11); + + CopyBitsTo(&stack_var, (void*) _020B0A54.struct1.unk4, 32); + + for (s32 i = 0; i < 32; i++) + { + CopyBitsTo(&stack_var, _020B0A54.fp[1] + 4 + (i * 8), 64); + } + + sub_020509BC(&stack_var); + + return stack_var.result; +} + +void sub_0205C19C(struct WriteMonsterInfoToSave_struct *arg0, struct unkStruct_020B0A54 *arg1) +{ + CopyBitsFrom(arg0, &arg1->unk0, 4); + Copy16BitsFrom(arg0, &arg1->unk4); + CopyBitsFrom(arg0, &arg1->unk8.monster, 24); + CopyBitsFrom(arg0, &arg1->unkC, 64); + CopyBitsFrom(arg0, &arg1->unk14, 0x40); + CopyBitsFrom(arg0, &arg1->unk1C, 4); + CopyBitsFrom(arg0, &arg1->unk1D, 0x50); + CopyBitsFrom(arg0, &arg1->unk32, 0x120); + CopyBitsFrom(arg0, &arg1->unk56, 0x240); + CopyBitsFrom(arg0, &arg1->unkA0, 0xb); + CopyBitsFrom(arg0, &arg1->unkA2, 0xb); + CopyBitsFrom(arg0, &arg1->unkA4, 0x40); + CopyBitsFrom(arg0, &arg1->unkAC, 8); + bool8 temp; + CopyBitsFrom(arg0, &temp, 1); + arg1->unkAD = temp != FALSE; + CopyBitsFrom(arg0, &arg1->unkAE, 2); +} diff --git a/src/main_0205C19C.c b/src/main_0205C19C.c deleted file mode 100644 index 5aabe9f0..00000000 --- a/src/main_0205C19C.c +++ /dev/null @@ -1,25 +0,0 @@ -#include "main_0205C19C.h" - -extern void CopyBitsFrom(void *read_info, void *buf_read, s32 nbits); -extern void Copy16BitsFrom(void *read_info, void *buf_read); - -void sub_0205C19C(struct WriteMonsterInfoToSave_struct *arg0, struct unkStruct_020B0A54 *arg1) -{ - CopyBitsFrom(arg0, &arg1->unk0, 4); - Copy16BitsFrom(arg0, &arg1->unk4); - CopyBitsFrom(arg0, &arg1->unk8.monster, 24); - CopyBitsFrom(arg0, &arg1->unkC, 64); - CopyBitsFrom(arg0, &arg1->unk14, 0x40); - CopyBitsFrom(arg0, &arg1->unk1C, 4); - CopyBitsFrom(arg0, &arg1->unk1D, 0x50); - CopyBitsFrom(arg0, &arg1->unk32, 0x120); - CopyBitsFrom(arg0, &arg1->unk56, 0x240); - CopyBitsFrom(arg0, &arg1->unkA0, 0xb); - CopyBitsFrom(arg0, &arg1->unkA2, 0xb); - CopyBitsFrom(arg0, &arg1->unkA4, 0x40); - CopyBitsFrom(arg0, &arg1->unkAC, 8); - bool8 temp; - CopyBitsFrom(arg0, &temp, 1); - arg1->unkAD = temp != FALSE; - CopyBitsFrom(arg0, &arg1->unkAE, 2); -}