diff options
Diffstat (limited to 'src/field/field_map_obj.c')
-rw-r--r-- | src/field/field_map_obj.c | 295 |
1 files changed, 12 insertions, 283 deletions
diff --git a/src/field/field_map_obj.c b/src/field/field_map_obj.c index f3a949b51..99f9f1ef3 100644 --- a/src/field/field_map_obj.c +++ b/src/field/field_map_obj.c @@ -1908,7 +1908,7 @@ static u16 gUnknown_030005A6; struct MapObject gMapObjects[16]; #if DEBUG -u8 gUnknown_Debug_03004BC0; // unknown type +u8 gUnknown_Debug_03004BC0; #endif void npc_clear_ids_and_state(struct MapObject *mapObj) @@ -2214,226 +2214,6 @@ void npc_hide_all_but_player(void) } } -#if DEBUG -__attribute__((naked)) -u8 sub_805AFCC(struct MapObjectTemplate *mapObjTemplate, struct SpriteTemplate *sprTemplate, u8 c, u8 d, s16 e, s16 f) -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, sl\n" - " mov r6, r9\n" - " mov r5, r8\n" - " push {r5, r6, r7}\n" - " add r7, r1, #0\n" - " add r1, r2, #0\n" - " add r2, r3, #0\n" - " ldr r3, [sp, #0x20]\n" - " ldr r4, [sp, #0x24]\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " lsl r2, r2, #0x18\n" - " lsr r2, r2, #0x18\n" - " lsl r3, r3, #0x10\n" - " lsr r3, r3, #0x10\n" - " mov r9, r3\n" - " lsl r4, r4, #0x10\n" - " lsr r4, r4, #0x10\n" - " mov sl, r4\n" - " bl InitFieldObjectStateFromTemplate\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r8, r0\n" - " cmp r0, #0x10\n" - " bne ._83 @cond_branch\n" - " mov r0, #0x10\n" - " b ._92\n" - "._83:\n" - " mov r0, r8\n" - " lsl r4, r0, #0x3\n" - " add r0, r4, r0\n" - " lsl r0, r0, #0x2\n" - " ldr r1, ._87 @ gMapObjects\n" - " add r5, r0, r1\n" - " ldrb r0, [r5, #0x5]\n" - " bl GetFieldObjectGraphicsInfo\n" - " add r6, r0, #0\n" - " ldrb r1, [r6, #0xc]\n" - " mov r0, #0xf\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._85 @cond_branch\n" - " ldrh r0, [r6, #0x2]\n" - " lsl r1, r1, #0x1c\n" - " lsr r1, r1, #0x1c\n" - " bl npc_load_two_palettes__no_record\n" - " b ._89\n" - "._88:\n" - " .align 2, 0\n" - "._87:\n" - " .word gMapObjects\n" - "._85:\n" - " cmp r0, #0xa\n" - " bne ._89 @cond_branch\n" - " ldrh r0, [r6, #0x2]\n" - " lsl r1, r1, #0x1c\n" - " lsr r1, r1, #0x1c\n" - " bl npc_load_two_palettes__and_record\n" - "._89:\n" - " ldrb r0, [r5, #0x6]\n" - " cmp r0, #0x4c\n" - " bne ._90 @cond_branch\n" - " ldrb r0, [r5, #0x1]\n" - " mov r1, #0x20\n" - " orr r0, r0, r1\n" - " strb r0, [r5, #0x1]\n" - "._90:\n" - " ldr r1, ._93 @ 0xffff\n" - " add r0, r1, #0\n" - " strh r0, [r7, #0x2]\n" - " add r0, r7, #0\n" - " mov r1, #0x0\n" - " mov r2, #0x0\n" - " mov r3, #0x0\n" - " bl CreateSprite\n" - " lsl r0, r0, #0x18\n" - " lsr r7, r0, #0x18\n" - " cmp r7, #0x40\n" - " bne ._91 @cond_branch\n" - " ldr r1, ._93 + 4 @ gUnknown_Debug_03004BC0\n" - " ldrb r0, [r1]\n" - " sub r0, r0, #0x1\n" - " strb r0, [r1]\n" - " ldr r0, ._93 + 8 @ gMapObjects\n" - " mov r2, r8\n" - " add r1, r4, r2\n" - " lsl r1, r1, #0x2\n" - " add r1, r1, r0\n" - " ldrb r2, [r1]\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " and r0, r0, r2\n" - " strb r0, [r1]\n" - " mov r0, #0x10\n" - " b ._92\n" - "._94:\n" - " .align 2, 0\n" - "._93:\n" - " .word 0xffff\n" - " .word gUnknown_Debug_03004BC0\n" - " .word gMapObjects\n" - "._91:\n" - " lsl r0, r7, #0x4\n" - " add r0, r0, r7\n" - " lsl r0, r0, #0x2\n" - " ldr r1, ._96 @ gSprites\n" - " add r4, r0, r1\n" - " mov r1, r9\n" - " lsl r0, r1, #0x10\n" - " asr r0, r0, #0x10\n" - " ldrh r2, [r5, #0x10]\n" - " add r0, r0, r2\n" - " lsl r0, r0, #0x10\n" - " asr r0, r0, #0x10\n" - " mov r2, sl\n" - " lsl r1, r2, #0x10\n" - " asr r1, r1, #0x10\n" - " ldrh r2, [r5, #0x12]\n" - " add r1, r1, r2\n" - " lsl r1, r1, #0x10\n" - " asr r1, r1, #0x10\n" - " add r2, r4, #0\n" - " add r2, r2, #0x20\n" - " add r3, r4, #0\n" - " add r3, r3, #0x22\n" - " bl sub_8060388\n" - " ldrh r0, [r6, #0x8]\n" - " lsl r0, r0, #0x10\n" - " asr r0, r0, #0x11\n" - " neg r0, r0\n" - " add r1, r4, #0\n" - " add r1, r1, #0x28\n" - " strb r0, [r1]\n" - " ldrh r0, [r6, #0xa]\n" - " lsl r0, r0, #0x10\n" - " asr r0, r0, #0x11\n" - " neg r0, r0\n" - " add r2, r4, #0\n" - " add r2, r2, #0x29\n" - " strb r0, [r2]\n" - " ldrh r0, [r4, #0x20]\n" - " add r0, r0, #0x8\n" - " strh r0, [r4, #0x20]\n" - " ldrh r1, [r4, #0x22]\n" - " add r1, r1, #0x10\n" - " mov r0, #0x0\n" - " ldsb r0, [r2, r0]\n" - " add r0, r0, r1\n" - " strh r0, [r4, #0x22]\n" - " ldrb r1, [r6, #0xc]\n" - " lsl r1, r1, #0x1c\n" - " lsr r1, r1, #0x18\n" - " ldrb r2, [r4, #0x5]\n" - " mov r0, #0xf\n" - " and r0, r0, r2\n" - " orr r0, r0, r1\n" - " strb r0, [r4, #0x5]\n" - " add r2, r4, #0\n" - " add r2, r2, #0x3e\n" - " ldrb r0, [r2]\n" - " mov r1, #0x2\n" - " orr r0, r0, r1\n" - " strb r0, [r2]\n" - " mov r0, r8\n" - " strh r0, [r4, #0x2e]\n" - " strb r7, [r5, #0x4]\n" - " ldrb r1, [r6, #0xc]\n" - " lsl r1, r1, #0x19\n" - " lsr r1, r1, #0x1f\n" - " lsl r1, r1, #0x4\n" - " ldrb r2, [r5, #0x1]\n" - " mov r0, #0x11\n" - " neg r0, r0\n" - " and r0, r0, r2\n" - " orr r0, r0, r1\n" - " strb r0, [r5, #0x1]\n" - " lsl r0, r0, #0x1b\n" - " cmp r0, #0\n" - " blt ._95 @cond_branch\n" - " ldrb r0, [r5, #0x18]\n" - " lsl r0, r0, #0x1c\n" - " lsr r0, r0, #0x1c\n" - " bl FieldObjectDirectionToImageAnimId\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " add r0, r4, #0\n" - " bl StartSpriteAnim\n" - "._95:\n" - " ldrb r0, [r5, #0xb]\n" - " lsr r0, r0, #0x4\n" - " add r1, r4, #0\n" - " mov r2, #0x1\n" - " bl SetObjectSubpriorityByZCoord\n" - " add r0, r5, #0\n" - " add r1, r4, #0\n" - " bl sub_80634D0\n" - " mov r0, r8\n" - "._92:\n" - " pop {r3, r4, r5}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " mov sl, r5\n" - " pop {r4, r5, r6, r7}\n" - " pop {r1}\n" - " bx r1\n" - "._97:\n" - " .align 2, 0\n" - "._96:\n" - " .word gSprites\n" - "\n" - ); -} -#else u8 sub_805AFCC(struct MapObjectTemplate *mapObjTemplate, struct SpriteTemplate *sprTemplate, u8 c, u8 d, s16 e, s16 f) { u8 mapObjectId; @@ -2463,6 +2243,9 @@ u8 sub_805AFCC(struct MapObjectTemplate *mapObjTemplate, struct SpriteTemplate * spriteId = CreateSprite(sprTemplate, 0, 0, 0); if (spriteId == 64) { +#if DEBUG + gUnknown_Debug_03004BC0--; +#endif gMapObjects[mapObjectId].active = FALSE; return 16; } @@ -2483,7 +2266,6 @@ u8 sub_805AFCC(struct MapObjectTemplate *mapObjTemplate, struct SpriteTemplate * sub_80634D0(mapObject, sprite); return mapObjectId; } -#endif u8 SpawnFieldObject(struct MapObjectTemplate *mapObjTemplate, u8 b, u8 c, s16 d, s16 e) { @@ -2706,79 +2488,26 @@ void RemoveFieldObjectIfOutsideView(struct MapObject *mapObject) void sub_805B75C(u8, s16, s16); -#if DEBUG -__attribute__((naked)) -void sub_805B710(u16 u161, u16 u162) -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, r8\n" - " push {r7}\n" - " add r4, r0, #0\n" - " add r5, r1, #0\n" - " lsl r4, r4, #0x10\n" - " lsr r4, r4, #0x10\n" - " lsl r5, r5, #0x10\n" - " lsr r5, r5, #0x10\n" - " ldr r6, ._153 @ gUnknown_Debug_03004BC0\n" - " mov r0, #0x0\n" - " strb r0, [r6]\n" - " bl ClearPlayerAvatarInfo\n" - " mov r7, #0x0\n" - " ldr r0, ._153 + 4 @ gMapObjects\n" - " mov r8, r0\n" - " lsl r4, r4, #0x10\n" - " lsl r5, r5, #0x10\n" - "._152:\n" - " lsl r0, r7, #0x3\n" - " add r0, r0, r7\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r8\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x1f\n" - " cmp r0, #0\n" - " beq ._151 @cond_branch\n" - " add r0, r7, #0\n" - " asr r1, r4, #0x10\n" - " asr r2, r5, #0x10\n" - " bl sub_805B75C\n" - " ldrb r0, [r6]\n" - " add r0, r0, #0x1\n" - " strb r0, [r6]\n" - "._151:\n" - " add r0, r7, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r7, r0, #0x18\n" - " cmp r7, #0xf\n" - " bls ._152 @cond_branch\n" - " bl sub_805AAB0\n" - " pop {r3}\n" - " mov r8, r3\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._154:\n" - " .align 2, 0\n" - "._153:\n" - " .word gUnknown_Debug_03004BC0\n" - " .word gMapObjects\n" - "\n" - ); -} -#else void sub_805B710(u16 a, u16 b) { u8 i; +#if DEBUG + gUnknown_Debug_03004BC0 = 0; +#endif ClearPlayerAvatarInfo(); for (i = 0; i < 16; i++) { if (gMapObjects[i].active) + { sub_805B75C(i, a, b); +#if DEBUG + gUnknown_Debug_03004BC0++; +#endif + } } sub_805AAB0(); } -#endif extern void SetPlayerAvatarFieldObjectIdAndObjectId(u8, u8); extern void sub_805B914(struct MapObject *); |