summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xasm/field_map_obj.s385
-rwxr-xr-xinclude/field_effect_helpers.h11
-rwxr-xr-x[-rw-r--r--]include/trainer_see.h2
-rwxr-xr-xsrc/field_map_obj.c166
-rwxr-xr-x[-rw-r--r--]src/trainer_see.c4
5 files changed, 180 insertions, 388 deletions
diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s
index cc42db022..84ea043d1 100755
--- a/asm/field_map_obj.s
+++ b/asm/field_map_obj.s
@@ -629,391 +629,6 @@ _0805F8DC: .4byte gUnknown_0836DC09
.section .text_805fd18
- thumb_func_start do_exclamation_mark_bubble_1
-do_exclamation_mark_bubble_1: @ 8062654
- push {r4,lr}
- adds r4, r1, 0
- ldr r1, _08062674 @ =gUnknown_0202FF84
- adds r2, r1, 0x4
- adds r3, r1, 0
- adds r3, 0x8
- bl FieldObjectGetLocalIdAndMap
- movs r0, 0
- bl FieldEffectStart
- movs r0, 0x1
- strh r0, [r4, 0x32]
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08062674: .4byte gUnknown_0202FF84
- thumb_func_end do_exclamation_mark_bubble_1
-
- thumb_func_start do_exclamation_mark_bubble_2
-do_exclamation_mark_bubble_2: @ 8062678
- push {r4,lr}
- adds r4, r1, 0
- ldr r1, _08062698 @ =gUnknown_0202FF84
- adds r2, r1, 0x4
- adds r3, r1, 0
- adds r3, 0x8
- bl FieldObjectGetLocalIdAndMap
- movs r0, 0x21
- bl FieldEffectStart
- movs r0, 0x1
- strh r0, [r4, 0x32]
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08062698: .4byte gUnknown_0202FF84
- thumb_func_end do_exclamation_mark_bubble_2
-
- thumb_func_start do_heart_bubble
-do_heart_bubble: @ 806269C
- push {r4,lr}
- adds r4, r1, 0
- ldr r1, _080626BC @ =gUnknown_0202FF84
- adds r2, r1, 0x4
- adds r3, r1, 0
- adds r3, 0x8
- bl FieldObjectGetLocalIdAndMap
- movs r0, 0x2E
- bl FieldEffectStart
- movs r0, 0x1
- strh r0, [r4, 0x32]
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080626BC: .4byte gUnknown_0202FF84
- thumb_func_end do_heart_bubble
-
- thumb_func_start sub_80626C0
-sub_80626C0: @ 80626C0
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x6]
- cmp r0, 0x3F
- bne _080626D6
- adds r0, r4, 0
- bl sub_8084794
- movs r0, 0
- b _080626FE
-_080626D6:
- subs r0, 0x39
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _080626F8
- adds r0, r4, 0
- bl sub_812869C
- movs r0, 0x1
- strh r0, [r5, 0x32]
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8062704
- lsls r0, 24
- lsrs r0, 24
- b _080626FE
-_080626F8:
- movs r0, 0x2
- strh r0, [r5, 0x32]
- movs r0, 0x1
-_080626FE:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80626C0
-
- thumb_func_start sub_8062704
-sub_8062704: @ 8062704
- push {r4,lr}
- adds r4, r1, 0
- bl sub_81286C4
- lsls r0, 24
- cmp r0, 0
- bne _08062716
- movs r0, 0
- b _0806271C
-_08062716:
- movs r0, 0x2
- strh r0, [r4, 0x32]
- movs r0, 0x1
-_0806271C:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8062704
-
- thumb_func_start sub_8062724
-sub_8062724: @ 8062724
- push {r4,lr}
- adds r4, r1, 0
- adds r0, r4, 0
- movs r1, 0x1
- movs r2, 0
- bl obj_anim_image_set_and_seek
- movs r0, 0x1
- strh r0, [r4, 0x32]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8062724
-
- thumb_func_start sub_8062740
-sub_8062740: @ 8062740
- push {r4,lr}
- adds r4, r1, 0
- adds r0, r4, 0
- bl sub_8064864
- lsls r0, 24
- cmp r0, 0
- beq _0806275C
- adds r0, r4, 0
- movs r1, 0x20
- bl sub_8064820
- movs r0, 0x2
- strh r0, [r4, 0x32]
-_0806275C:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8062740
-
- thumb_func_start sub_8062764
-sub_8062764: @ 8062764
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r2, [r4, 0x1]
- lsls r1, r2, 26
- lsrs r1, 31
- movs r0, 0x1
- eors r1, r0
- lsls r1, 5
- subs r0, 0x22
- ands r0, r2
- orrs r0, r1
- strb r0, [r4, 0x1]
- adds r0, r5, 0
- bl sub_8064824
- lsls r0, 24
- cmp r0, 0
- beq _08062796
- ldrb r0, [r4, 0x1]
- movs r1, 0x20
- orrs r0, r1
- strb r0, [r4, 0x1]
- movs r0, 0x3
- strh r0, [r5, 0x32]
-_08062796:
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8062764
-
- thumb_func_start sub_80627A0
-sub_80627A0: @ 80627A0
- push {r4,lr}
- adds r4, r1, 0
- adds r0, r4, 0
- movs r1, 0x1
- movs r2, 0
- bl obj_anim_image_set_and_seek
- movs r0, 0x1
- strh r0, [r4, 0x32]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80627A0
-
- thumb_func_start sub_80627BC
-sub_80627BC: @ 80627BC
- push {r4,lr}
- adds r4, r1, 0
- adds r0, r4, 0
- bl sub_8064864
- lsls r0, 24
- cmp r0, 0
- beq _080627D8
- adds r0, r4, 0
- movs r1, 0x20
- bl sub_8064820
- movs r0, 0x2
- strh r0, [r4, 0x32]
-_080627D8:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80627BC
-
- thumb_func_start sub_80627E0
-sub_80627E0: @ 80627E0
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r2, [r4, 0x1]
- lsls r1, r2, 26
- lsrs r1, 31
- movs r0, 0x1
- eors r1, r0
- lsls r1, 5
- subs r0, 0x22
- ands r0, r2
- orrs r0, r1
- strb r0, [r4, 0x1]
- adds r0, r5, 0
- bl sub_8064824
- lsls r0, 24
- cmp r0, 0
- beq _08062812
- ldrb r0, [r4, 0x1]
- movs r1, 0x20
- orrs r0, r1
- strb r0, [r4, 0x1]
- movs r0, 0x3
- strh r0, [r5, 0x32]
-_08062812:
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80627E0
-
- thumb_func_start sub_806281C
-sub_806281C: @ 806281C
- ldrb r2, [r0, 0x3]
- movs r3, 0x4
- orrs r2, r3
- strb r2, [r0, 0x3]
- movs r0, 0x1
- strh r0, [r1, 0x32]
- bx lr
- thumb_func_end sub_806281C
-
- thumb_func_start sub_806282C
-sub_806282C: @ 806282C
- ldrb r3, [r0, 0x3]
- movs r2, 0x5
- negs r2, r2
- ands r2, r3
- strb r2, [r0, 0x3]
- movs r0, 0x1
- strh r0, [r1, 0x32]
- bx lr
- thumb_func_end sub_806282C
-
- thumb_func_start sub_806283C
-sub_806283C: @ 806283C
- push {r4,lr}
- adds r4, r1, 0
- ldrb r0, [r4, 0x1]
- movs r1, 0x3
- orrs r0, r1
- strb r0, [r4, 0x1]
- adds r0, r4, 0
- bl InitSpriteAffineAnim
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- adds r4, 0x42
- ldrb r1, [r4]
- movs r0, 0x3F
- ands r0, r1
- strb r0, [r4]
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_806283C
-
- thumb_func_start sub_806286C
-sub_806286C: @ 806286C
- push {r4,lr}
- adds r4, r1, 0
- ldrb r0, [r4, 0x3]
- lsls r0, 26
- lsrs r0, 27
- bl FreeOamMatrix
- ldrb r0, [r4, 0x1]
- movs r1, 0x4
- negs r1, r1
- ands r1, r0
- strb r1, [r4, 0x1]
- lsrs r1, 6
- ldrb r2, [r4, 0x3]
- lsrs r2, 6
- movs r3, 0
- adds r0, r4, 0
- bl CalcCenterToCornerVec
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_806286C
-
- thumb_func_start sub_806289C
-sub_806289C: @ 806289C
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- movs r2, 0x1
- bl sub_8060ED8
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r1, [r2]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2]
- adds r0, r4, 0
- movs r1, 0
- bl StartSpriteAffineAnimIfDifferent
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80628D0
- lsls r0, 24
- lsrs r0, 24
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_806289C
-
- thumb_func_start sub_80628D0
-sub_80628D0: @ 80628D0
- push {r4,lr}
- adds r4, r1, 0
- bl an_walk_any_2
- lsls r0, 24
- cmp r0, 0
- bne _080628E2
- movs r0, 0
- b _080628F4
-_080628E2:
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- movs r0, 0x2
- strh r0, [r4, 0x32]
- movs r0, 0x1
-_080628F4:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80628D0
-
thumb_func_start sub_80628FC
sub_80628FC: @ 80628FC
push {r4,r5,lr}
diff --git a/include/field_effect_helpers.h b/include/field_effect_helpers.h
new file mode 100755
index 000000000..62f492bdc
--- /dev/null
+++ b/include/field_effect_helpers.h
@@ -0,0 +1,11 @@
+//
+// Created by scott on 5/25/2017.
+//
+
+#ifndef POKERUBY_FIELD_EFFECT_HELPERS_H
+#define POKERUBY_FIELD_EFFECT_HELPERS_H
+
+void sub_812869C(struct MapObject *);
+bool8 sub_81286C4(struct MapObject *);
+
+#endif //POKERUBY_FIELD_EFFECT_HELPERS_H
diff --git a/include/trainer_see.h b/include/trainer_see.h
index 0113143b6..b80a41641 100644..100755
--- a/include/trainer_see.h
+++ b/include/trainer_see.h
@@ -28,7 +28,7 @@ s8 sub_80845FC(u8 taskId, struct Task *task, struct MapObject *trainerObj);
s8 sub_8084654(u8 taskId, struct Task *task, struct MapObject *trainerObj);
s8 sub_80846C8(u8 taskId, struct Task *task, struct MapObject *trainerObj);
void sub_80846E4(u8 taskId);
-void sub_8084794(u32 var);
+void sub_8084794(struct MapObject *var);
void sub_80847C8(void);
void sub_80847D8(u8);
void sub_8084894(struct Sprite *sprite, u16 a2, u8 a3);
diff --git a/src/field_map_obj.c b/src/field_map_obj.c
index aa2169677..d12e4cfe1 100755
--- a/src/field_map_obj.c
+++ b/src/field_map_obj.c
@@ -15,6 +15,8 @@
#include "field_camera.h"
#include "metatile_behavior.h"
#include "map_constants.h"
+#include "trainer_see.h"
+#include "field_effect_helpers.h"
extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[36];
@@ -5749,3 +5751,167 @@ bool8 sub_8062644(struct MapObject *mapObject, struct Sprite *sprite)
sprite->data2 = 1;
return TRUE;
}
+
+bool8 do_exclamation_mark_bubble_1(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]);
+ FieldEffectStart(0x0);
+ sprite->data2 = 1;
+ return TRUE;
+}
+
+bool8 do_exclamation_mark_bubble_2(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]);
+ FieldEffectStart(0x21);
+ sprite->data2 = 1;
+ return TRUE;
+}
+
+bool8 do_heart_bubble(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]);
+ FieldEffectStart(0x2e);
+ sprite->data2 = 1;
+ return TRUE;
+}
+
+bool8 sub_8062704(struct MapObject *, struct Sprite *);
+
+bool8 sub_80626C0(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (mapObject->animPattern == 0x3F)
+ {
+ sub_8084794(mapObject);
+ return FALSE;
+ }
+ else if (mapObject->animPattern != 0x39 && mapObject->animPattern != 0x3A)
+ {
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ else
+ {
+ sub_812869C(mapObject);
+ sprite->data2 = 1;
+ return sub_8062704(mapObject, sprite);
+ }
+}
+
+bool8 sub_8062704(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_81286C4(mapObject))
+ {
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_8062724(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ obj_anim_image_set_and_seek(sprite, 1, 0);
+ sprite->data2 = 1;
+ return FALSE;
+}
+
+bool8 sub_8062740(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8064864(sprite))
+ {
+ sub_8064820(sprite, 0x20);
+ sprite->data2 = 2;
+ }
+ return FALSE;
+}
+
+bool8 sub_8062764(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ mapObject->mapobj_bit_13 ^= 1;
+ if (sub_8064824(sprite))
+ {
+ mapObject->mapobj_bit_13 = 1;
+ sprite->data2 = 3;
+ }
+ return FALSE;
+}
+
+bool8 sub_80627A0(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ obj_anim_image_set_and_seek(sprite, 1, 0);
+ sprite->data2 = 1;
+ return FALSE;
+}
+
+bool8 sub_80627BC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8064864(sprite))
+ {
+ sub_8064820(sprite, 0x20);
+ sprite->data2 = 2;
+ }
+ return FALSE;
+}
+
+bool8 sub_80627E0(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ mapObject->mapobj_bit_13 ^= 1;
+ if (sub_8064824(sprite))
+ {
+ mapObject->mapobj_bit_13 = 1;
+ sprite->data2 = 3;
+ }
+ return FALSE;
+}
+
+bool8 sub_806281C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ mapObject->mapobj_bit_26 = 1;
+ sprite->data2 = 1;
+ return TRUE;
+}
+
+bool8 sub_806282C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ mapObject->mapobj_bit_26 = 0;
+ sprite->data2 = 1;
+ return TRUE;
+}
+
+bool8 sub_806283C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ sprite->oam.affineMode = 3;
+ InitSpriteAffineAnim(sprite);
+ sprite->affineAnimPaused = 1;
+ sprite->subspriteMode = 0;
+ return TRUE;
+}
+
+bool8 sub_806286C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ FreeOamMatrix(sprite->oam.matrixNum);
+ sprite->oam.affineMode = 0;
+ CalcCenterToCornerVec(sprite, sprite->oam.shape, sprite->oam.size, sprite->oam.affineMode);
+ return TRUE;
+}
+
+bool8 sub_80628D0(struct MapObject *, struct Sprite *);
+
+bool8 sub_806289C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ sub_8060ED8(mapObject, sprite, DIR_SOUTH);
+ sprite->affineAnimPaused = 0;
+ StartSpriteAffineAnimIfDifferent(sprite, 0);
+ return sub_80628D0(mapObject, sprite);
+}
+
+bool8 sub_80628D0(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (an_walk_any_2(mapObject, sprite))
+ {
+ sprite->affineAnimPaused = 1;
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
diff --git a/src/trainer_see.c b/src/trainer_see.c
index 9d58faab8..6c2bf0ab0 100644..100755
--- a/src/trainer_see.c
+++ b/src/trainer_see.c
@@ -373,9 +373,9 @@ void sub_80846E4(u8 taskId)
mapObj->mapobj_bit_7 = 0;
}
-void sub_8084794(u32 var)
+void sub_8084794(struct MapObject *var)
{
- StoreWordInTwoHalfwords(&gTasks[CreateTask(sub_80846E4, 0)].data[1], var);
+ StoreWordInTwoHalfwords(&gTasks[CreateTask(sub_80846E4, 0)].data[1], (u32)var);
}
void sub_80847C8(void)