mirror of
https://github.com/pret/pokeruby.git
synced 2026-08-28 13:24:16 -05:00
A couple more map object callbacks
This commit is contained in:
@@ -629,316 +629,6 @@ _0805F8DC: .4byte gUnknown_0836DC09
|
||||
|
||||
.section .text_fmocb2_asm
|
||||
|
||||
thumb_func_start sub_805F8E0
|
||||
sub_805F8E0: @ 805F8E0
|
||||
push {lr}
|
||||
adds r1, r0, 0
|
||||
movs r0, 0x2E
|
||||
ldrsh r2, [r1, r0]
|
||||
lsls r0, r2, 3
|
||||
adds r0, r2
|
||||
lsls r0, 2
|
||||
ldr r2, _0805F8FC @ =gMapObjects
|
||||
adds r0, r2
|
||||
ldr r2, _0805F900 @ =sub_805F904
|
||||
bl meta_step
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0805F8FC: .4byte gMapObjects
|
||||
_0805F900: .4byte sub_805F904
|
||||
thumb_func_end sub_805F8E0
|
||||
|
||||
thumb_func_start sub_805F904
|
||||
sub_805F904: @ 805F904
|
||||
push {r4,lr}
|
||||
ldr r3, _0805F920 @ =gUnknown_083755C0
|
||||
movs r4, 0x30
|
||||
ldrsh r2, [r1, r4]
|
||||
lsls r2, 2
|
||||
adds r2, r3
|
||||
ldr r2, [r2]
|
||||
bl _call_via_r2
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_0805F920: .4byte gUnknown_083755C0
|
||||
thumb_func_end sub_805F904
|
||||
|
||||
thumb_func_start mss_08062EA4
|
||||
mss_08062EA4: @ 805F924
|
||||
push {r4-r7,lr}
|
||||
adds r6, r0, 0
|
||||
adds r7, r1, 0
|
||||
ldr r2, _0805F948 @ =gMapObjects
|
||||
ldr r3, _0805F94C @ =gPlayerAvatar
|
||||
ldrb r1, [r3, 0x5]
|
||||
lsls r0, r1, 3
|
||||
adds r0, r1
|
||||
lsls r0, 2
|
||||
adds r0, r2
|
||||
ldrb r0, [r0, 0x1C]
|
||||
cmp r0, 0xFF
|
||||
beq _0805F944
|
||||
ldrb r0, [r3, 0x3]
|
||||
cmp r0, 0x2
|
||||
bne _0805F950
|
||||
_0805F944:
|
||||
movs r0, 0
|
||||
b _0805F978
|
||||
.align 2, 0
|
||||
_0805F948: .4byte gMapObjects
|
||||
_0805F94C: .4byte gPlayerAvatar
|
||||
_0805F950:
|
||||
ldr r5, _0805F980 @ =gUnknown_08375594
|
||||
bl player_get_x22
|
||||
adds r4, r0, 0
|
||||
lsls r4, 24
|
||||
lsrs r4, 22
|
||||
adds r4, r5
|
||||
bl player_get_direction_upper_nybble
|
||||
adds r2, r0, 0
|
||||
lsls r2, 24
|
||||
lsrs r2, 24
|
||||
ldr r3, _0805F984 @ =MetatileBehavior_IsPokeGrass
|
||||
ldr r4, [r4]
|
||||
adds r0, r6, 0
|
||||
adds r1, r7, 0
|
||||
bl _call_via_r4
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
_0805F978:
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_0805F980: .4byte gUnknown_08375594
|
||||
_0805F984: .4byte MetatileBehavior_IsPokeGrass
|
||||
thumb_func_end mss_08062EA4
|
||||
|
||||
thumb_func_start FieldObjectCB_TreeDisguise
|
||||
FieldObjectCB_TreeDisguise: @ 805F988
|
||||
push {r4-r6,lr}
|
||||
adds r5, r0, 0
|
||||
movs r1, 0x2E
|
||||
ldrsh r0, [r5, r1]
|
||||
lsls r1, r0, 3
|
||||
adds r1, r0
|
||||
lsls r1, 2
|
||||
ldr r0, _0805F9EC @ =gMapObjects
|
||||
adds r4, r1, r0
|
||||
adds r6, r4, 0
|
||||
adds r6, 0x21
|
||||
ldrb r0, [r6]
|
||||
cmp r0, 0
|
||||
beq _0805F9B0
|
||||
cmp r0, 0x1
|
||||
bne _0805F9D0
|
||||
movs r1, 0x3C
|
||||
ldrsh r0, [r5, r1]
|
||||
cmp r0, 0
|
||||
bne _0805F9D0
|
||||
_0805F9B0:
|
||||
ldr r1, _0805F9F0 @ =gUnknown_0202FF84
|
||||
adds r2, r1, 0x4
|
||||
adds r3, r1, 0
|
||||
adds r3, 0x8
|
||||
adds r0, r4, 0
|
||||
bl FieldObjectGetLocalIdAndMap
|
||||
movs r0, 0x1C
|
||||
bl FieldEffectStart
|
||||
strb r0, [r4, 0x1A]
|
||||
movs r0, 0x1
|
||||
strb r0, [r6]
|
||||
ldrh r0, [r5, 0x3C]
|
||||
adds r0, 0x1
|
||||
strh r0, [r5, 0x3C]
|
||||
_0805F9D0:
|
||||
movs r0, 0x2E
|
||||
ldrsh r1, [r5, r0]
|
||||
lsls r0, r1, 3
|
||||
adds r0, r1
|
||||
lsls r0, 2
|
||||
ldr r1, _0805F9EC @ =gMapObjects
|
||||
adds r0, r1
|
||||
ldr r2, _0805F9F4 @ =sub_805F9F8
|
||||
adds r1, r5, 0
|
||||
bl meta_step
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0805F9EC: .4byte gMapObjects
|
||||
_0805F9F0: .4byte gUnknown_0202FF84
|
||||
_0805F9F4: .4byte sub_805F9F8
|
||||
thumb_func_end FieldObjectCB_TreeDisguise
|
||||
|
||||
thumb_func_start sub_805F9F8
|
||||
sub_805F9F8: @ 805F9F8
|
||||
push {lr}
|
||||
bl npc_reset
|
||||
movs r0, 0
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_805F9F8
|
||||
|
||||
thumb_func_start FieldObjectCB_MountainDisguise
|
||||
FieldObjectCB_MountainDisguise: @ 805FA04
|
||||
push {r4-r6,lr}
|
||||
adds r5, r0, 0
|
||||
movs r1, 0x2E
|
||||
ldrsh r0, [r5, r1]
|
||||
lsls r1, r0, 3
|
||||
adds r1, r0
|
||||
lsls r1, 2
|
||||
ldr r0, _0805FA68 @ =gMapObjects
|
||||
adds r4, r1, r0
|
||||
adds r6, r4, 0
|
||||
adds r6, 0x21
|
||||
ldrb r0, [r6]
|
||||
cmp r0, 0
|
||||
beq _0805FA2C
|
||||
cmp r0, 0x1
|
||||
bne _0805FA4C
|
||||
movs r1, 0x3C
|
||||
ldrsh r0, [r5, r1]
|
||||
cmp r0, 0
|
||||
bne _0805FA4C
|
||||
_0805FA2C:
|
||||
ldr r1, _0805FA6C @ =gUnknown_0202FF84
|
||||
adds r2, r1, 0x4
|
||||
adds r3, r1, 0
|
||||
adds r3, 0x8
|
||||
adds r0, r4, 0
|
||||
bl FieldObjectGetLocalIdAndMap
|
||||
movs r0, 0x1D
|
||||
bl FieldEffectStart
|
||||
strb r0, [r4, 0x1A]
|
||||
movs r0, 0x1
|
||||
strb r0, [r6]
|
||||
ldrh r0, [r5, 0x3C]
|
||||
adds r0, 0x1
|
||||
strh r0, [r5, 0x3C]
|
||||
_0805FA4C:
|
||||
movs r0, 0x2E
|
||||
ldrsh r1, [r5, r0]
|
||||
lsls r0, r1, 3
|
||||
adds r0, r1
|
||||
lsls r0, 2
|
||||
ldr r1, _0805FA68 @ =gMapObjects
|
||||
adds r0, r1
|
||||
ldr r2, _0805FA70 @ =sub_805F9F8
|
||||
adds r1, r5, 0
|
||||
bl meta_step
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0805FA68: .4byte gMapObjects
|
||||
_0805FA6C: .4byte gUnknown_0202FF84
|
||||
_0805FA70: .4byte sub_805F9F8
|
||||
thumb_func_end FieldObjectCB_MountainDisguise
|
||||
|
||||
thumb_func_start FieldObjectCB_Hidden1
|
||||
FieldObjectCB_Hidden1: @ 805FA74
|
||||
push {r4,lr}
|
||||
adds r3, r0, 0
|
||||
movs r1, 0x3C
|
||||
ldrsh r0, [r3, r1]
|
||||
ldr r4, _0805FAD0 @ =gMapObjects
|
||||
cmp r0, 0
|
||||
bne _0805FAB4
|
||||
movs r0, 0x2E
|
||||
ldrsh r1, [r3, r0]
|
||||
lsls r0, r1, 3
|
||||
adds r0, r1
|
||||
lsls r0, 2
|
||||
adds r0, r4
|
||||
ldrb r1, [r0, 0x3]
|
||||
movs r2, 0x4
|
||||
orrs r1, r2
|
||||
strb r1, [r0, 0x3]
|
||||
adds r2, r3, 0
|
||||
adds r2, 0x42
|
||||
ldrb r1, [r2]
|
||||
movs r0, 0x3F
|
||||
ands r0, r1
|
||||
movs r1, 0x80
|
||||
orrs r0, r1
|
||||
strb r0, [r2]
|
||||
ldrb r0, [r3, 0x5]
|
||||
movs r1, 0xC
|
||||
orrs r0, r1
|
||||
strb r0, [r3, 0x5]
|
||||
ldrh r0, [r3, 0x3C]
|
||||
adds r0, 0x1
|
||||
strh r0, [r3, 0x3C]
|
||||
_0805FAB4:
|
||||
movs r0, 0x2E
|
||||
ldrsh r1, [r3, r0]
|
||||
lsls r0, r1, 3
|
||||
adds r0, r1
|
||||
lsls r0, 2
|
||||
adds r0, r4
|
||||
ldr r2, _0805FAD4 @ =sub_805FAD8
|
||||
adds r1, r3, 0
|
||||
bl meta_step
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0805FAD0: .4byte gMapObjects
|
||||
_0805FAD4: .4byte sub_805FAD8
|
||||
thumb_func_end FieldObjectCB_Hidden1
|
||||
|
||||
thumb_func_start sub_805FAD8
|
||||
sub_805FAD8: @ 805FAD8
|
||||
push {r4,lr}
|
||||
ldr r3, _0805FAF4 @ =gUnknown_083755CC
|
||||
movs r4, 0x30
|
||||
ldrsh r2, [r1, r4]
|
||||
lsls r2, 2
|
||||
adds r2, r3
|
||||
ldr r2, [r2]
|
||||
bl _call_via_r2
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_0805FAF4: .4byte gUnknown_083755CC
|
||||
thumb_func_end sub_805FAD8
|
||||
|
||||
thumb_func_start sub_805FAF8
|
||||
sub_805FAF8: @ 805FAF8
|
||||
push {lr}
|
||||
bl npc_reset
|
||||
movs r0, 0
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_805FAF8
|
||||
|
||||
thumb_func_start sub_805FB04
|
||||
sub_805FB04: @ 805FB04
|
||||
push {r4,lr}
|
||||
adds r4, r1, 0
|
||||
bl FieldObjectExecRegularAnim
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0805FB16
|
||||
movs r0, 0
|
||||
strh r0, [r4, 0x30]
|
||||
_0805FB16:
|
||||
movs r0, 0
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_805FB04
|
||||
|
||||
thumb_func_start sub_805FB20
|
||||
sub_805FB20: @ 805FB20
|
||||
push {lr}
|
||||
|
||||
@@ -89,5 +89,7 @@ extern struct CameraSomething gUnknown_03004880;
|
||||
extern u16 gUnknown_03004898;
|
||||
extern u16 gUnknown_0300489C;
|
||||
|
||||
extern u32 gUnknown_0202FF84[];
|
||||
|
||||
int state_to_direction(u8, u8, u8);
|
||||
#endif // GUARD_FIELD_MAP_OBJ_H
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
#include "rng.h"
|
||||
#include "sprite.h"
|
||||
#include "field_camera.h"
|
||||
#include "metatile_behavior.h"
|
||||
|
||||
extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[36];
|
||||
|
||||
@@ -3195,7 +3196,7 @@ u8 mss_npc_reset_oampriv3_1_unk2_unk3(struct MapObject *mapObject, struct Sprite
|
||||
return 1;
|
||||
}
|
||||
|
||||
extern u8 (*const gUnknown_08375594[])(struct MapObject *, struct Sprite *, u8, u8);
|
||||
extern u8 (*const gUnknown_08375594[])(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8));
|
||||
|
||||
u8 sub_805F364(struct MapObject *mapObject, struct Sprite *sprite)
|
||||
{
|
||||
@@ -3203,7 +3204,7 @@ u8 sub_805F364(struct MapObject *mapObject, struct Sprite *sprite)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
return gUnknown_08375594[player_get_x22()](mapObject, sprite, player_get_direction_upper_nybble(), 0);
|
||||
return gUnknown_08375594[player_get_x22()](mapObject, sprite, player_get_direction_upper_nybble(), NULL);
|
||||
}
|
||||
|
||||
u8 sub_805F3C4(struct MapObject *mapObject, struct Sprite *sprite)
|
||||
@@ -3251,12 +3252,90 @@ u8 sub_805F438(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, u8 *a3
|
||||
}
|
||||
#endif
|
||||
|
||||
void FieldObjectCB_TreeDisguise(struct Sprite *sprite);
|
||||
void FieldObjectCB_MountainDisguise(struct Sprite *sprite);
|
||||
|
||||
asm(".section .text_fmocb2_c\n");
|
||||
void sub_805F8E0(struct Sprite *sprite);
|
||||
void FieldObjectCB_Hidden1(struct Sprite *sprite);
|
||||
|
||||
fieldmap_object_cb(sub_805F8E0, sub_805F904, gUnknown_083755C0);
|
||||
|
||||
u8 mss_08062EA4(struct MapObject *mapObject, struct Sprite *sprite)
|
||||
{
|
||||
if (gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1C == 0xFF || gPlayerAvatar.running1 == 2)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
return gUnknown_08375594[player_get_x22()](mapObject, sprite, player_get_direction_upper_nybble(), MetatileBehavior_IsPokeGrass);
|
||||
}
|
||||
|
||||
u8 sub_805F9F8(struct MapObject *, struct Sprite *);
|
||||
|
||||
void FieldObjectCB_TreeDisguise(struct Sprite *sprite)
|
||||
{
|
||||
struct MapObject *mapObject;
|
||||
mapObject = &gMapObjects[sprite->data0];
|
||||
if (mapObject->mapobj_unk_21 == 0 || (mapObject->mapobj_unk_21 == 1 && sprite->data7 == 0))
|
||||
{
|
||||
FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]);
|
||||
mapObject->mapobj_unk_1A = FieldEffectStart(0x1c);
|
||||
mapObject->mapobj_unk_21 = 1;
|
||||
sprite->data7 ++;
|
||||
}
|
||||
meta_step(&gMapObjects[sprite->data0], sprite, sub_805F9F8);
|
||||
}
|
||||
|
||||
u8 sub_805F9F8(struct MapObject *mapObject, struct Sprite *sprite)
|
||||
{
|
||||
npc_reset(mapObject, sprite);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void FieldObjectCB_MountainDisguise(struct Sprite *sprite)
|
||||
{
|
||||
struct MapObject *mapObject;
|
||||
mapObject = &gMapObjects[sprite->data0];
|
||||
if (mapObject->mapobj_unk_21 == 0 || (mapObject->mapobj_unk_21 == 1 && sprite->data7 == 0))
|
||||
{
|
||||
FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]);
|
||||
mapObject->mapobj_unk_1A = FieldEffectStart(0x1d);
|
||||
mapObject->mapobj_unk_21 = 1;
|
||||
sprite->data7 ++;
|
||||
}
|
||||
meta_step(&gMapObjects[sprite->data0], sprite, sub_805F9F8);
|
||||
}
|
||||
|
||||
u8 sub_805FAD8(struct MapObject *mapObject, struct Sprite *sprite);
|
||||
extern u8 (*const gUnknown_083755CC[])(struct MapObject *, struct Sprite *);
|
||||
|
||||
void FieldObjectCB_Hidden1(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data7 == 0)
|
||||
{
|
||||
gMapObjects[sprite->data0].mapobj_bit_26 = 1;
|
||||
sprite->subspriteMode = 2;
|
||||
sprite->oam.priority = 3;
|
||||
sprite->data7 ++;
|
||||
}
|
||||
meta_step(&gMapObjects[sprite->data0], sprite, sub_805FAD8);
|
||||
}
|
||||
|
||||
u8 sub_805FAD8(struct MapObject *mapObject, struct Sprite *sprite)
|
||||
{
|
||||
return gUnknown_083755CC[sprite->data1](mapObject, sprite);
|
||||
}
|
||||
|
||||
u8 sub_805FAF8(struct MapObject *mapObject, struct Sprite *sprite)
|
||||
{
|
||||
npc_reset(mapObject, sprite);
|
||||
return 0;
|
||||
}
|
||||
|
||||
u8 sub_805FB04(struct MapObject *mapObject, struct Sprite *sprite)
|
||||
{
|
||||
if (FieldObjectExecRegularAnim(mapObject, sprite))
|
||||
{
|
||||
sprite->data1 = 0;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void sub_805FB20(struct Sprite *sprite);
|
||||
void sub_805FB90(struct Sprite *sprite);
|
||||
void sub_805FC00(struct Sprite *sprite);
|
||||
|
||||
Reference in New Issue
Block a user