Some functions relating to affine animations
This commit is contained in:
@@ -5,289 +5,6 @@
|
|||||||
|
|
||||||
.text
|
.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
|
thumb_func_start sub_80958C0
|
||||||
sub_80958C0: @ 80958C0
|
sub_80958C0: @ 80958C0
|
||||||
push {r4-r6,lr}
|
push {r4-r6,lr}
|
||||||
|
|||||||
@@ -4769,3 +4769,57 @@ bool8 sub_80956B4(struct MapObject *mapObject, struct Sprite *sprite)
|
|||||||
sprite->data2 = 1;
|
sprite->data2 = 1;
|
||||||
return TRUE;
|
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)
|
||||||
|
|||||||
Reference in New Issue
Block a user