diff options
author | ProjectRevoTPP <projectrevotpp@hotmail.com> | 2017-01-20 22:51:22 -0500 |
---|---|---|
committer | YamaArashi <YamaArashi@users.noreply.github.com> | 2017-01-20 19:51:22 -0800 |
commit | 7de88d62586fd5fcb2c93b78e26f3fa99b73ecc4 (patch) | |
tree | 4ad6d3032bb52085c1b29b8344db4f150e4a3ad6 | |
parent | cf0a4dbb86f164026fa2028ef5d0d4a5a419c9c3 (diff) |
decompile first few functions of field_map_obj.c (#204)
* decompile first few functions of field_map_obj.c
* formatting
-rw-r--r-- | asm/field_map_obj.s | 53 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/field_map_obj.c | 53 |
3 files changed, 54 insertions, 53 deletions
diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 348e1d0f3..17c2406cf 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -6,59 +6,6 @@ .text - thumb_func_start npc_clear_ids_and_state -npc_clear_ids_and_state: @ 805AA50 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0 - movs r2, 0x24 - bl memset - movs r0, 0xFF - strb r0, [r4, 0x8] - movs r0, 0x1 - negs r0, r0 - strb r0, [r4, 0x9] - strb r0, [r4, 0xA] - strb r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - thumb_func_end npc_clear_ids_and_state - - thumb_func_start npcs_clear_ids_and_state -npcs_clear_ids_and_state: @ 805AA70 - push {r4,r5,lr} - movs r4, 0 - ldr r5, _0805AA94 @ =gMapObjects -_0805AA76: - lsls r0, r4, 3 - adds r0, r4 - lsls r0, 2 - adds r0, r5 - bl npc_clear_ids_and_state - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xF - bls _0805AA76 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0805AA94: .4byte gMapObjects - thumb_func_end npcs_clear_ids_and_state - - thumb_func_start sub_805AA98 -sub_805AA98: @ 805AA98 - push {lr} - bl strange_npc_table_clear - bl npcs_clear_ids_and_state - bl ClearPlayerAvatarInfo - bl sub_805AAB0 - pop {r0} - bx r0 - thumb_func_end sub_805AA98 - thumb_func_start sub_805AAB0 sub_805AAB0: @ 805AAB0 push {r4-r6,lr} diff --git a/ld_script.txt b/ld_script.txt index d60856033..a725b54b0 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -78,6 +78,7 @@ SECTIONS { src/field_camera.o(.text); src/field_door.o(.text); src/field_player_avatar.o(.text); + src/field_map_obj.o(.text); asm/field_map_obj.o(.text); src/field_ground_effect.o(.text); asm/field_ground_effect.o(.text); diff --git a/src/field_map_obj.c b/src/field_map_obj.c new file mode 100644 index 000000000..60c512709 --- /dev/null +++ b/src/field_map_obj.c @@ -0,0 +1,53 @@ +#include "global.h" +#include "sprite.h" + +extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[36]; + +extern void strange_npc_table_clear(void); +extern void ClearPlayerAvatarInfo(void); + +void sub_805AAB0(void); + +void npc_clear_ids_and_state(struct MapObject *mapObj) +{ + memset(mapObj, 0, sizeof(struct MapObject)); + mapObj->localId = 0xFF; + mapObj->mapNum = 0xFF; + mapObj->mapGroup = 0xFF; + mapObj->mapobj_unk_1C = 0xFF; +} + +void npcs_clear_ids_and_state(void) +{ + u8 i; + + for(i = 0; i < 16; i++) + npc_clear_ids_and_state(&gMapObjects[i]); +} + +void sub_805AA98(void) +{ + strange_npc_table_clear(); + npcs_clear_ids_and_state(); + ClearPlayerAvatarInfo(); + sub_805AAB0(); +} + +/*void sub_805AAB0(void) +{ + u8 spriteVar1; + u8 spriteVar2; + + spriteVar1 = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[21], 0, 0, 0x1F); + + gSprites[spriteVar1].oam.affineMode = 1; + InitSpriteAffineAnim(&gSprites[spriteVar1]); + StartSpriteAffineAnim(&gSprites[spriteVar1], 0); + + spriteVar2 = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[21], 0, 0, 0x1F); + + gSprites[spriteVar2].oam.affineMode = 4; + InitSpriteAffineAnim(&gSprites[spriteVar2]); + StartSpriteAffineAnim(&gSprites[spriteVar2], 1); + gSprites[spriteVar2].coordOffsetEnabled = 1; +}*/ |