Skip to content

Commit

Permalink
some more decomp
Browse files Browse the repository at this point in the history
  • Loading branch information
red031000 committed Oct 19, 2024
1 parent 5c4403c commit d86106a
Show file tree
Hide file tree
Showing 3 changed files with 108 additions and 170 deletions.
160 changes: 3 additions & 157 deletions arm9/asm/map_object_s.s
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
.extern UNK_020F6364
.extern sub_02057EE0
.extern sub_0205815C
.extern MapObjectManager_Get
.extern MapObjectManager_GetObjectCount
.extern MapObjectManager_SetFlagsBits
.extern MapObjectManager_ClearFlagsBits
Expand All @@ -14,164 +13,11 @@
.extern MapObject_SetMovement
.extern MapObject_GetEventFlag
.extern sub_0205855C
.extern MapObject_GetManagerFromManager
.extern sub_02058660

.text

thumb_func_start sub_02058580
sub_02058580: ; 0x02058580
ldr r3, _02058588 ; =MapObjectManager_Get
add r0, #0xb4
ldr r0, [r0, #0x0]
bx r3
.balign 4
_02058588: .word MapObjectManager_Get

thumb_func_start sub_0205858C
sub_0205858C: ; 0x0205858C
push {r3-r5, lr}
add r5, r1, #0x0
add r4, r0, #0x0
cmp r5, #0x10
ble _0205859A
bl GF_AssertFail
_0205859A:
add r0, r4, #0x0
bl sub_020585B0
mov r1, #0x0
add r2, r5, #0x0
add r4, r0, #0x0
bl memset
add r0, r4, #0x0
pop {r3-r5, pc}
.balign 4

thumb_func_start sub_020585B0
sub_020585B0: ; 0x020585B0
add r0, #0xd8
bx lr

thumb_func_start sub_020585B4
sub_020585B4: ; 0x020585B4
push {r3-r5, lr}
add r5, r1, #0x0
add r4, r0, #0x0
cmp r5, #0x10
ble _020585C2
bl GF_AssertFail
_020585C2:
add r0, r4, #0x0
bl sub_020585D8
mov r1, #0x0
add r2, r5, #0x0
add r4, r0, #0x0
bl memset
add r0, r4, #0x0
pop {r3-r5, pc}
.balign 4

thumb_func_start sub_020585D8
sub_020585D8: ; 0x020585D8
add r0, #0xe8
bx lr

thumb_func_start sub_020585DC
sub_020585DC: ; 0x020585DC
push {r3-r5, lr}
add r5, r1, #0x0
add r4, r0, #0x0
cmp r5, #0x10
ble _020585EA
bl GF_AssertFail
_020585EA:
add r0, r4, #0x0
bl sub_02058600
mov r1, #0x0
add r2, r5, #0x0
add r4, r0, #0x0
bl memset
add r0, r4, #0x0
pop {r3-r5, pc}
.balign 4

thumb_func_start sub_02058600
sub_02058600: ; 0x02058600
add r0, #0xf8
bx lr

thumb_func_start sub_02058604
sub_02058604: ; 0x02058604
push {r3-r5, lr}
add r5, r1, #0x0
add r4, r0, #0x0
cmp r5, #0x20
ble _02058612
bl GF_AssertFail
_02058612:
add r0, r4, #0x0
bl sub_02058628
mov r1, #0x0
add r2, r5, #0x0
add r4, r0, #0x0
bl memset
add r0, r4, #0x0
pop {r3-r5, pc}
.balign 4

thumb_func_start sub_02058628
sub_02058628: ; 0x02058628
mov r1, #0x42
lsl r1, r1, #0x2
add r0, r0, r1
bx lr

thumb_func_start sub_02058630
sub_02058630: ; 0x02058630
add r0, #0xb8
str r1, [r0, #0x0]
bx lr
.balign 4

thumb_func_start sub_02058638
sub_02058638: ; 0x02058638
push {r3, lr}
add r1, r0, #0x0
add r1, #0xb8
ldr r1, [r1, #0x0]
blx r1
pop {r3, pc}

thumb_func_start sub_02058644
sub_02058644: ; 0x02058644
add r0, #0xbc
str r1, [r0, #0x0]
bx lr
.balign 4

thumb_func_start sub_0205864C
sub_0205864C: ; 0x0205864C
push {r3, lr}
add r1, r0, #0x0
add r1, #0xbc
ldr r1, [r1, #0x0]
blx r1
pop {r3, pc}

thumb_func_start sub_02058658
sub_02058658: ; 0x02058658
add r0, #0xc0
str r1, [r0, #0x0]
bx lr
.balign 4

thumb_func_start sub_02058660
sub_02058660: ; 0x02058660
push {r3, lr}
add r1, r0, #0x0
add r1, #0xc0
ldr r1, [r1, #0x0]
blx r1
pop {r3, pc}

thumb_func_start sub_0205866C
sub_0205866C: ; 0x0205866C
push {r4, lr}
Expand Down Expand Up @@ -335,7 +181,7 @@ sub_02058730: ; 0x02058730
thumb_func_start MapObject_GetFieldSystem
MapObject_GetFieldSystem: ; 0x02058738
push {r3, lr}
bl sub_02058580
bl MapObject_GetManagerFromManager
bl MapObjectManager_GetFieldSystem
pop {r3, pc}

Expand Down
95 changes: 85 additions & 10 deletions arm9/src/map_object.c
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ static void sub_02058214(LocalMapObject *object, ObjectEvent *objectEvent, u32 m
static void sub_02058258(LocalMapObject *object, u32 mapNo, ObjectEvent *objectEvent);
static void sub_0205832C(SysTask *task, LocalMapObject *object);
static void sub_02058348(LocalMapObject *object);
/*static*/ MapObjectManager *MapObjectManager_Get(MapObjectManager *manager);
static MapObjectManager *MapObjectManager_Get(MapObjectManager *manager);
static void MapObjectManager_SetObjectCount(MapObjectManager *manager, u32 count);
static void sub_0205836C(MapObjectManager *manager);
static void sub_02058374(MapObjectManager *manager);
Expand All @@ -59,6 +59,11 @@ static void sub_02058554(LocalMapObject *object, SysTask *sysTask);
static SysTask *sub_0205855C(LocalMapObject *object);
static void sub_02058564(LocalMapObject *object);
static void MapObject_SetManager(LocalMapObject *object, MapObjectManager *manager);
/*static*/ MapObjectManager *MapObject_GetManagerFromManager(LocalMapObject *object);
static void sub_02058630(LocalMapObject *object, LocalMapObject_UnkCallback callback);
static void sub_02058644(LocalMapObject *object, LocalMapObject_UnkCallback callback);
static void sub_02058658(LocalMapObject *object, LocalMapObject_UnkCallback callback);
/*static*/ void sub_02058660(LocalMapObject *object);

extern BOOL MapObject_IsInUse(LocalMapObject *object);
extern void ov05_021F2AF4(MapObjectManager *manager, void *param0);
Expand All @@ -85,8 +90,7 @@ extern u8 FieldSystem_FlagCheck(FieldSystem *fieldSystem, u16 flag);
extern BOOL sub_02058934(LocalMapObject *object);
extern BOOL sub_020587E0(MapObjectManager *manager);
extern void sub_020586B4(LocalMapObject *object);
extern void sub_02058660(LocalMapObject *object);
extern MapObjectManager *sub_02058580(LocalMapObject *object);
extern MapObjectManager *MapObject_GetManagerFromManager(LocalMapObject *object);
extern FieldSystem *MapObject_GetFieldSystem(LocalMapObject *object);
extern void FieldSystem_FlagSet(FieldSystem *fieldSystem, u16 flag);
extern void sub_02058ED8(LocalMapObject *object);
Expand All @@ -111,8 +115,6 @@ extern u32 MapObject_GetCurrentY(LocalMapObject *object);
extern void sub_02059E60(s32 x, s32 y, VecFx32 *vector);
extern u32 MapObject_GetPosVecYCoord(LocalMapObject *object);
extern u32 MapObject_CheckFlag29(LocalMapObject *object);
extern u8 *sub_020585B0(LocalMapObject *object);
extern u8 *sub_020585D8(LocalMapObject *object);
extern BOOL sub_02059EC8(FieldSystem *fieldSystem, VecFx32 *vector, BOOL flag);
extern void MapObject_SetInitialX(LocalMapObject *object, u32 initialX);
extern void MapObject_SetInitialHeight(LocalMapObject *object, u32 initialHeight);
Expand Down Expand Up @@ -144,11 +146,8 @@ extern u32 ObjectEvent_GetHeight(ObjectEvent *objectEvent);
extern void MapObject_SetFlag25(LocalMapObject *object, BOOL flag);
extern UnkLMOCallbackStruct *sub_02058D14(u32 movement);
extern LocalMapObject_UnkCallback sub_02058D2C(UnkLMOCallbackStruct *callbackStruct);
extern void sub_02058630(LocalMapObject *object, LocalMapObject_UnkCallback callback);
extern LocalMapObject_UnkCallback sub_02058D30(UnkLMOCallbackStruct *callbackStruct);
extern void sub_02058644(LocalMapObject *object, LocalMapObject_UnkCallback callback);
extern LocalMapObject_UnkCallback sub_02058D34(UnkLMOCallbackStruct *callbackStruct);
extern void sub_02058658(LocalMapObject *object, LocalMapObject_UnkCallback callback);
extern UnkLMOCallbackStruct2 *sub_02058D4C(u32 spriteId);
extern LocalMapObject_UnkCallback sub_02058D38(UnkLMOCallbackStruct2 *callbackStruct);
extern void sub_02058684(LocalMapObject *object, LocalMapObject_UnkCallback callback);
Expand Down Expand Up @@ -314,7 +313,7 @@ void MapObject_Remove(LocalMapObject *object) {
}
sub_02058660(object);
sub_02058564(object);
sub_02058374(sub_02058580(object));
sub_02058374(MapObject_GetManagerFromManager(object));
MapObject_Clear(object);
}

Expand Down Expand Up @@ -905,7 +904,7 @@ static void sub_02058348(LocalMapObject *object) {
}

// Likely a scrubbed debug func, but WTF is GF smoking?
/*static*/ MapObjectManager *MapObjectManager_Get(MapObjectManager *manager) {
static MapObjectManager *MapObjectManager_Get(MapObjectManager *manager) {
return manager;
}

Expand Down Expand Up @@ -1211,3 +1210,79 @@ static void MapObject_SetManager(LocalMapObject *object, MapObjectManager *manag
MapObjectManager *MapObject_GetManager(LocalMapObject *object) {
return object->manager;
}

/*static*/ MapObjectManager *MapObject_GetManagerFromManager(LocalMapObject *object) {
return MapObjectManager_Get(object->manager);
}

u8 *sub_0205858C(LocalMapObject *object, s32 size) {
GF_ASSERT(size <= 16);

u8 *ret = sub_020585B0(object);
memset(ret, 0, size);
return ret;
}

u8 *sub_020585B0(LocalMapObject *object) {
return object->unkD8;
}

u8 *sub_020585B4(LocalMapObject *object, s32 size) {
GF_ASSERT(size <= 16);

u8 *ret = sub_020585D8(object);
memset(ret, 0, size);
return ret;
}

u8 *sub_020585D8(LocalMapObject *object) {
return object->unkE8;
}

u8 *sub_020585DC(LocalMapObject *object, s32 size) {
GF_ASSERT(size <= 16);

u8 *ret = sub_02058600(object);
memset(ret, 0, size);
return ret;
}

u8 *sub_02058600(LocalMapObject *object) {
return object->unkF8;
}

u8 *sub_02058604(LocalMapObject *object, s32 size) {
GF_ASSERT(size <= 32);

u8 *ret = sub_02058628(object);
memset(ret, 0, size);
return ret;
}

u8 *sub_02058628(LocalMapObject *object) {
return object->unk108;
}

static void sub_02058630(LocalMapObject *object, LocalMapObject_UnkCallback callback) {
object->unkB8 = callback;
}

void sub_02058638(LocalMapObject *object) {
object->unkB8(object);
}

static void sub_02058644(LocalMapObject *object, LocalMapObject_UnkCallback callback) {
object->unkBC = callback;
}

void sub_0205864C(LocalMapObject *object) {
object->unkBC(object);
}

static void sub_02058658(LocalMapObject *object, LocalMapObject_UnkCallback callback) {
object->unkC0 = callback;
}

/*static*/ void sub_02058660(LocalMapObject *object) {
object->unkC0(object);
}
23 changes: 20 additions & 3 deletions include/map_object.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
#include "heap.h"
#include "unk_0200CA44.h"

typedef void (*LocalMapObject_UnkCallback)(LocalMapObject *object);

typedef struct SavedMapObject {
u32 flags;
u32 flags2;
Expand Down Expand Up @@ -73,7 +75,14 @@ struct LocalMapObject {
u8 padding2[0xC];
SysTask *unkB0;
MapObjectManager *manager;
u8 padding3[0x70]; // todo verify size
LocalMapObject_UnkCallback unkB8;
LocalMapObject_UnkCallback unkBC;
LocalMapObject_UnkCallback unkC0;
u8 padding3[0x14];
u8 unkD8[0x10];
u8 unkE8[0x10];
u8 unkF8[0x10];
u8 unk108[0x20];
};

typedef struct ObjectEvent {
Expand All @@ -84,8 +93,6 @@ typedef struct ObjectEvent {
// todo this should be in map_events_internal.h
} ObjectEvent;

typedef void (*LocalMapObject_UnkCallback)(LocalMapObject *object);

typedef enum MapObjectFlagBits {
MAPOBJECTFLAG_ACTIVE = (1 << 0),
MAPOBJECTFLAG_SINGLE_MOVEMENT = (1 << 1),
Expand Down Expand Up @@ -215,5 +222,15 @@ s32 MapObject_GetYRange(LocalMapObject *object);
void sub_02058544(LocalMapObject *object, u32 param1);
u32 sub_0205854C(LocalMapObject *object);
MapObjectManager *MapObject_GetManager(LocalMapObject *object);
u8 *sub_0205858C(LocalMapObject *object, s32 size);
u8 *sub_020585B0(LocalMapObject *object);
u8 *sub_020585B4(LocalMapObject *object, s32 size);
u8 *sub_020585D8(LocalMapObject *object);
u8 *sub_020585DC(LocalMapObject *object, s32 size);
u8 *sub_02058600(LocalMapObject *object);
u8 *sub_02058604(LocalMapObject *object, s32 size);
u8 *sub_02058628(LocalMapObject *object);
void sub_02058638(LocalMapObject *object);
void sub_0205864C(LocalMapObject *object);

#endif // POKEDIAMOND_MAP_OBJECT_H

0 comments on commit d86106a

Please sign in to comment.