sub_80940C4 which may or may not be a meme
This commit is contained in:
parent
bf9a00250b
commit
8ee004b9b1
3 changed files with 29 additions and 97 deletions
|
@ -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}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue