sub_80940C4 which may or may not be a meme

This commit is contained in:
PikalaxALT 2017-09-17 08:45:24 -04:00
parent bf9a00250b
commit 8ee004b9b1
3 changed files with 29 additions and 97 deletions

View file

@ -5,103 +5,6 @@
.text
thumb_func_start sub_80940C4
@ int sub_80940C4(int a1, int a2, int a3)
sub_80940C4: @ 80940C4
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x10
adds r6, r0, 0
adds r7, r1, 0
adds r4, r2, 0
ldr r1, =gUnknown_0850DFC2
add r0, sp, 0x4
movs r2, 0x6
bl memcpy
adds r0, r7, 0
bl _call_via_r4
lsls r0, 24
lsrs r0, 24
mov r8, r0
cmp r0, 0x1
bne _08094154
movs r1, 0x36
ldrsh r0, [r7, r1]
lsls r0, 1
add r0, sp
adds r0, 0x4
movs r2, 0
ldrsh r0, [r0, r2]
cmp r0, 0
beq _08094154
add r4, sp, 0xC
movs r0, 0
strh r0, [r4]
mov r5, sp
adds r5, 0xE
strh r0, [r5]
ldrb r0, [r6, 0x18]
lsrs r0, 4
movs r2, 0x36
ldrsh r1, [r7, r2]
lsls r1, 1
add r1, sp
adds r1, 0x4
movs r2, 0
ldrsh r3, [r1, r2]
str r3, [sp]
adds r1, r4, 0
adds r2, r5, 0
bl sub_8092F88
ldrh r1, [r4]
ldrh r0, [r6, 0x10]
adds r1, r0
lsls r1, 16
asrs r1, 16
ldrh r2, [r5]
ldrh r0, [r6, 0x12]
adds r2, r0
lsls r2, 16
asrs r2, 16
adds r0, r6, 0
bl npc_coords_shift
ldrb r0, [r6]
movs r1, 0x4
orrs r0, r1
movs r1, 0x10
orrs r0, r1
strb r0, [r6]
b _08094178
.pool
_08094154:
mov r1, r8
cmp r1, 0xFF
bne _08094178
adds r0, r6, 0
bl npc_coords_shift_still
ldrb r0, [r6]
movs r1, 0x8
orrs r0, r1
movs r1, 0x20
orrs r0, r1
strb r0, [r6]
adds r2, r7, 0
adds r2, 0x2C
ldrb r0, [r2]
movs r1, 0x40
orrs r0, r1
strb r0, [r2]
_08094178:
mov r0, r8
add sp, 0x10
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_80940C4
thumb_func_start sub_8094188
sub_8094188: @ 8094188
push {lr}

View file

@ -45,5 +45,6 @@ extern const u8 gUnknown_0850DBA0[5];
extern bool8 (*const *const gUnknown_0850DC50[])(struct MapObject *, struct Sprite *);
extern u8 (*const gUnknown_0850DEE8[5])(u8);
extern const s16 gUnknown_0850DFBC[3];
extern const s16 gUnknown_0850DFC2[3];
#endif //GUARD_DATA3_H

View file

@ -4288,3 +4288,31 @@ void maybe_shadow_1(struct MapObject *mapObject, struct Sprite *sprite, u8 direc
npc_apply_anim_looping(mapObject, sprite, get_go_image_anim_num(mapObject->mapobj_unk_18));
DoShadowFieldEffect(mapObject);
}
u8 sub_80940C4(struct MapObject *mapObject, struct Sprite *sprite, u8 callback(struct Sprite *))
{
s16 displacements[ARRAY_COUNT(gUnknown_0850DFC2)];
s16 x;
s16 y;
u8 result;
memcpy(displacements, gUnknown_0850DFC2, sizeof gUnknown_0850DFC2);
result = callback(sprite);
if (result == 1 && displacements[sprite->data4] != 0)
{
x = 0;
y = 0;
sub_8092F88(mapObject->placeholder18, &x, &y, displacements[sprite->data4], displacements[sprite->data4]);
npc_coords_shift(mapObject, mapObject->coords2.x + x, mapObject->coords2.y + y);
mapObject->mapobj_bit_2 = TRUE;
mapObject->mapobj_bit_4 = TRUE;
}
else if (result == 0xFF)
{
npc_coords_shift_still(mapObject);
mapObject->mapobj_bit_3 = TRUE;
mapObject->mapobj_bit_5 = TRUE;
sprite->animPaused = TRUE;
}
return result;
}