mirror of https://github.com/pret/pokeemerald.git
Some functions relating to affine animations
This commit is contained in:
parent
71b40f50c0
commit
283d9060a7
|
@ -5,289 +5,6 @@
|
|||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_80956C4
|
||||
sub_80956C4: @ 80956C4
|
||||
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_80956C4
|
||||
|
||||
thumb_func_start sub_80956F4
|
||||
sub_80956F4: @ 80956F4
|
||||
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_80956F4
|
||||
|
||||
thumb_func_start sub_8095724
|
||||
sub_8095724: @ 8095724
|
||||
ldrb r1, [r0, 0x3]
|
||||
movs r2, 0x8
|
||||
orrs r1, r2
|
||||
strb r1, [r0, 0x3]
|
||||
movs r0, 0x1
|
||||
bx lr
|
||||
thumb_func_end sub_8095724
|
||||
|
||||
thumb_func_start sub_8095730
|
||||
sub_8095730: @ 8095730
|
||||
ldrb r2, [r0, 0x3]
|
||||
movs r1, 0x9
|
||||
negs r1, r1
|
||||
ands r1, r2
|
||||
strb r1, [r0, 0x3]
|
||||
movs r0, 0x1
|
||||
bx lr
|
||||
thumb_func_end sub_8095730
|
||||
|
||||
thumb_func_start sub_8095740
|
||||
sub_8095740: @ 8095740
|
||||
push {r4,r5,lr}
|
||||
adds r5, r0, 0
|
||||
adds r4, r1, 0
|
||||
movs r2, 0x1
|
||||
bl sub_8093B60
|
||||
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_8095774
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8095740
|
||||
|
||||
thumb_func_start sub_8095774
|
||||
sub_8095774: @ 8095774
|
||||
push {r4,lr}
|
||||
adds r4, r1, 0
|
||||
bl an_walk_any_2
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08095786
|
||||
movs r0, 0
|
||||
b _08095798
|
||||
_08095786:
|
||||
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
|
||||
_08095798:
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8095774
|
||||
|
||||
thumb_func_start sub_80957A0
|
||||
sub_80957A0: @ 80957A0
|
||||
push {r4,r5,lr}
|
||||
adds r5, r0, 0
|
||||
adds r4, r1, 0
|
||||
movs r2, 0x1
|
||||
bl sub_8093B60
|
||||
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, 0x1
|
||||
bl ChangeSpriteAffineAnimIfDifferent
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
bl sub_80957D4
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_80957A0
|
||||
|
||||
thumb_func_start sub_80957D4
|
||||
sub_80957D4: @ 80957D4
|
||||
push {r4,lr}
|
||||
adds r4, r1, 0
|
||||
bl an_walk_any_2
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _080957E6
|
||||
movs r0, 0
|
||||
b _080957F8
|
||||
_080957E6:
|
||||
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
|
||||
_080957F8:
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_80957D4
|
||||
|
||||
thumb_func_start sub_8095800
|
||||
sub_8095800: @ 8095800
|
||||
push {r4,r5,lr}
|
||||
adds r5, r0, 0
|
||||
adds r4, r1, 0
|
||||
movs r2, 0x3
|
||||
movs r3, 0x1
|
||||
bl do_go_anim
|
||||
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, 0x2
|
||||
bl ChangeSpriteAffineAnimIfDifferent
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
bl sub_8095834
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8095800
|
||||
|
||||
thumb_func_start sub_8095834
|
||||
sub_8095834: @ 8095834
|
||||
push {r4,lr}
|
||||
adds r4, r1, 0
|
||||
bl npc_obj_ministep_stop_on_arrival
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08095846
|
||||
movs r0, 0
|
||||
b _08095858
|
||||
_08095846:
|
||||
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
|
||||
_08095858:
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8095834
|
||||
|
||||
thumb_func_start sub_8095860
|
||||
sub_8095860: @ 8095860
|
||||
push {r4,r5,lr}
|
||||
adds r5, r0, 0
|
||||
adds r4, r1, 0
|
||||
movs r2, 0x4
|
||||
movs r3, 0x1
|
||||
bl do_go_anim
|
||||
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, 0x3
|
||||
bl ChangeSpriteAffineAnimIfDifferent
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
bl sub_8095894
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8095860
|
||||
|
||||
thumb_func_start sub_8095894
|
||||
sub_8095894: @ 8095894
|
||||
push {r4,lr}
|
||||
adds r4, r1, 0
|
||||
bl npc_obj_ministep_stop_on_arrival
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _080958A6
|
||||
movs r0, 0
|
||||
b _080958B8
|
||||
_080958A6:
|
||||
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
|
||||
_080958B8:
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8095894
|
||||
|
||||
thumb_func_start sub_80958C0
|
||||
sub_80958C0: @ 80958C0
|
||||
push {r4-r6,lr}
|
||||
|
|
|
@ -4769,3 +4769,57 @@ bool8 sub_80956B4(struct MapObject *mapObject, struct Sprite *sprite)
|
|||
sprite->data2 = 1;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 sub_80956C4(struct MapObject *mapObject, struct Sprite *sprite)
|
||||
{
|
||||
sprite->oam.affineMode = 3;
|
||||
InitSpriteAffineAnim(sprite);
|
||||
sprite->affineAnimPaused = TRUE;
|
||||
sprite->subspriteMode = 0;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 sub_80956F4(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_8095724(struct MapObject *mapObject, struct Sprite *sprite)
|
||||
{
|
||||
mapObject->mapobj_bit_27 = TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 sub_8095730(struct MapObject *mapObject, struct Sprite *sprite)
|
||||
{
|
||||
mapObject->mapobj_bit_27 = FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#define affine_an_walk_any_2_macro(name, fn, fn2, action, anim, ...)\
|
||||
static bool8 name##_2(struct MapObject *, struct Sprite *);\
|
||||
bool8 name(struct MapObject *mapObject, struct Sprite *sprite)\
|
||||
{\
|
||||
fn(mapObject, sprite, __VA_ARGS__);\
|
||||
sprite->affineAnimPaused = FALSE;\
|
||||
action(sprite, anim);\
|
||||
return name##_2(mapObject, sprite);\
|
||||
}\
|
||||
static bool8 name##_2(struct MapObject *mapObject, struct Sprite *sprite)\
|
||||
{\
|
||||
if (fn2(mapObject, sprite))\
|
||||
{\
|
||||
sprite->affineAnimPaused = TRUE;\
|
||||
sprite->data2 = 2;\
|
||||
return TRUE;\
|
||||
}\
|
||||
return FALSE;\
|
||||
}\
|
||||
|
||||
affine_an_walk_any_2_macro(sub_8095740, sub_8093B60, an_walk_any_2, StartSpriteAffineAnimIfDifferent, 0, DIR_SOUTH)
|
||||
affine_an_walk_any_2_macro(sub_80957A0, sub_8093B60, an_walk_any_2, ChangeSpriteAffineAnimIfDifferent, 1, DIR_SOUTH)
|
||||
affine_an_walk_any_2_macro(sub_8095800, do_go_anim, npc_obj_ministep_stop_on_arrival, ChangeSpriteAffineAnimIfDifferent, 2, DIR_WEST, 1)
|
||||
affine_an_walk_any_2_macro(sub_8095860, do_go_anim, npc_obj_ministep_stop_on_arrival, ChangeSpriteAffineAnimIfDifferent, 3, DIR_EAST, 1)
|
||||
|
|
Loading…
Reference in New Issue