summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorProjectRevoTPP <projectrevotpp@hotmail.com>2017-01-20 22:51:22 -0500
committerYamaArashi <YamaArashi@users.noreply.github.com>2017-01-20 19:51:22 -0800
commit7de88d62586fd5fcb2c93b78e26f3fa99b73ecc4 (patch)
tree4ad6d3032bb52085c1b29b8344db4f150e4a3ad6
parentcf0a4dbb86f164026fa2028ef5d0d4a5a419c9c3 (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.s53
-rw-r--r--ld_script.txt1
-rw-r--r--src/field_map_obj.c53
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;
+}*/