more decomp

This commit is contained in:
Seth Barberee
2026-08-24 11:01:39 -07:00
parent 3aa992262a
commit 8c39cbea58
4 changed files with 392 additions and 1067 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -270,8 +270,7 @@ struct monster {
s16 iq; // 0xE
s16 hp; // 0x10: Current HP
s16 max_hp_stat; // 0x12: Add to max_hp_boost for the actual max HP
u8 field_0x14;
u8 field_0x15;
s16 field_0x14;
s16 max_hp_boost; // 0x16: From Life Seeds, Sitrus Berries, etc.
u8 field_0x18;
u8 field_0x19;
@@ -292,7 +291,7 @@ struct monster {
struct item held_item; // 0x62
// 0x68: Previous held item. Used for whenever taking the X-Ray Specs or Y-Ray Specs on or off
// in order to update the camera and minimap. Changed to held_item.id after checking.
enum item_id previous_held_item_id;
s16 previous_held_item_id;
// Previous position data is used by the AI
struct position prev_pos[NUM_PREV_POS]; // 0x6A: Position X turns ago
struct ai_target ai_target; // 0x7A
@@ -309,8 +308,7 @@ struct monster {
// and restored to entity::types after statuses::roost ends.
enum type_id original_types[2];
// 0xAC: The move id to be used if statuses::bide is 1.
u8 bide_move_id;
u8 field_0xad;
s16 bide_move_id;
u8 field_0xae;
u8 field_0xaf;
// 0xB0: Unique number given to the monster when spawning to differentiate it from other
@@ -468,18 +466,13 @@ struct monster {
// 0x167: Set to true when the monster receives a critical hit. If true when the monster
// attacks, Anger Point will activate. Set to false after the monster attacks.
bool8 anger_point_flag;
u8 field_0x168;
u8 field_0x169;
s16 field_0x168;
// 0x16A: When not DIR_NONE, monster will turn in the specified direction and
// its AI will be forced to target the tile next to it in that direction.
// Used to prevent bosses from turning towards team members the moment the boss fight
// starts (which would override their intended starting facing direction).
enum direction_id force_turn : 8;
u8 field_0x16b;
u8 field_0x16c;
u8 field_0x16d;
u8 field_0x16e;
u8 field_0x16f;
u8 force_turn;
u8 unk16B[5];
// 0x170: Set to make the monster disappear when using the move U-turn.
bool8 uturn_hide_monster_flag;
// 0x171: Some kind of visual flag? Gets set to 0 temporarily when changing Shaymin form
@@ -495,9 +488,9 @@ struct monster {
u8 field_0x175;
u8 field_0x176;
// 0x177: Appears to be the direction for using sleep talk? Set to DIR_NONE when awake.
enum direction_id sleep_talk_direction : 8;
u8 sleep_talk_direction;
// 0x178: Appears to be the direction for using snore? Set to DIR_NONE when awake.
enum direction_id snore_direction : 8;
u8 snore_direction;
// 0x179: Seems to be set to 4 when the monster initally throws something and probably
// related to direction somehow. Checked in a loop for every monster.
u8 field_0x179;
@@ -511,10 +504,7 @@ struct monster {
struct position pixel_pos; // 0x182: The monster's graphical position on screen?
u8 field_0x186;
u8 field_0x187;
u8 field_0x188;
u8 field_0x189;
u8 field_0x18a;
u8 field_0x18b;
u32 field_0x188;
// 0x18C: Bitflags that cause non-damaging exclusive items to trigger on the
// attacker after they have completed their move. For example, the Eclipse Robe
// (Darkrai exclusive item) may afflict attacking enemies with the nightmare
@@ -648,8 +638,7 @@ struct monster {
u8 field_0x20d;
u8 field_0x20e;
u8 field_0x20f;
u8 hp_fractional; // 0x210: 200 * fractional_part(HP)
u8 field_0x211;
s16 hp_fractional; // 0x210: 200 * fractional_part(HP)
// 0x212: When a Pokémon can pass through walls in a hallway, this counts up to 200 before the Pokémon turns in a random direction.
s16 mobile_turn_timer;
// 0x214: Somehow related to gaining exp through a joy ribbon. Set to 0 after
@@ -1142,9 +1131,9 @@ struct trap {
u8 team;
// 0x2: flags: 1-byte bitfield
//u8 flags;
bool8 f_unbreakable : 1; // If true, the trap can't be broken (for example, using a Trapbust Orb)
u8 flags_unk1 : 7;
u8 flags;
//bool8 f_unbreakable : 1; // If true, the trap can't be broken (for example, using a Trapbust Orb)
//u8 flags_unk1 : 7;
u8 field_0x3;
};

View File

@@ -1,6 +1,8 @@
#ifndef PMD_SKY_OVERLAY_30_H
#define PMD_SKY_OVERLAY_30_H
#include "dungeon_mode.h"
void ov30_02382820(s32 arg0, s32 arg1, s32 isGameModeRescue);
s32 ov30_02382874(void);
u8 ov30_0238298C(void);
@@ -10,6 +12,10 @@ s32 ov30_02382A34(void);
void ov30_02382C30(void);
void WriteQuicksaveData(void *buffer, s32 size);
void ov30_02382D80(void *buffer);
void ov30_02382E94(void *buffer);
void ov30_02382FB8(void *buffer);
void ov30_02383084(void *buffer);
void ov30_023831E8(void *arg0, struct entity* arg1);
#endif // PMD_SKY_OVERLAY_30_H

View File

@@ -139,6 +139,9 @@ asm void ov30_023829CC(s32 arg0, s32 arg1, s8 arg2)
ldmia sp!, {r4, r5, r6, pc}
}
extern u8 OVERLAY30_JP_STRING_1[0xC]; // みさき様
extern u8 OVERLAY30_JP_STRING_2[0xC]; // やよい様
s32 NoteSaveBase(s32);
s32 WriteQuickSaveInfo(s32, s32);
void sub_02003B94();
@@ -146,7 +149,31 @@ void sub_02003BC8();
void sub_02029F88(s32, s32, s32);
void sub_02029FBC();
s32 sub_02048DC4(s32);
void sub_02034D0C();
void sub_02034D0C(void);
void ov30_02382D80(void*);
void ov30_02382E94(void*);
void ov30_02382FB8(void*);
void ov30_02383084(void*);
void ov30_02383C70(void*);
void ov30_0238409C(void*);
void ov30_02384208(void*);
void ov30_02385C3C(void*, void*, s32);
void ov30_02385C54(void*, void*, s32);
void ov30_02385CDC(void*);
void ov30_02385CE0(void*, void*);
void ov30_02385D14(void*, u16);
void ov30_02385D34(void*, s16);
struct trap* GetTrapInfo(struct entity*);
void ov30_023831E8(void *, struct entity*);
void ov30_02385D74(void *, s32);
void ov30_02385DD4(void *, u8);
void ov30_02385D54(void*, u8); /* extern */
void memset(void*, s32, s32); /* extern */
void ov30_02384268(void*, void*); /* extern */
void ov30_02385D94(void*, s32); /* extern */
void ov30_02385DB4(void*, s32); /* extern */
void ov30_02385DF8(void*, void*); /* extern */
void ov30_02385EB8(void*, void*, s32); /* extern */
s32 ov30_02382A34(void)
{
@@ -241,23 +268,6 @@ void ov30_02382C30(void)
}
}
extern u8 OVERLAY30_JP_STRING_1[0xC]; // みさき様
extern u8 OVERLAY30_JP_STRING_2[0xC]; // やよい様
void ov30_02382D80(void*);
void ov30_02382E94(void*);
void ov30_02382FB8(void*);
void ov30_02383084(void*);
void ov30_02383C70(void*);
void ov30_0238409C(void*);
void ov30_02384208(void*);
void ov30_02385C3C(void*, void*, s32);
void ov30_02385C54(void*, void*, s32);
void ov30_02385CDC(void*);
void ov30_02385CE0(void*, void*);
void ov30_02385D14(void*, u16);
void ov30_02385D34(void*, s16);
void WriteQuicksaveData(void *buffer, s32 size)
{
u8 sp4[0xC];
@@ -318,3 +328,348 @@ void ov30_02382D80(void *buffer)
}
}
}
void ov30_02382E94(void *buffer)
{
u8 zeroes[7];
bool32 var_r1;
struct trap* trap;
struct entity* entity;
for(int index1 = 0; index1 < 7; index1++)
{
zeroes[index1] = -1;
}
ov30_02385CE0(buffer, OVERLAY30_JP_STRING_1);
for(int index2 = 0; index2 < 0x40; index2++)
{
entity = DUNGEON_PTR->trap_ptrs[index2];
var_r1 = FALSE;
if ((entity != NULL) && (entity->type == ENTITY_TRAP)) {
trap = GetTrapInfo(entity);
ov30_02385C54(buffer, &trap->id, 1);
ov30_02385C54(buffer, &trap->team, 1);
ov30_02385C54(buffer, &trap->flags, 1);
ov30_02385C54(buffer, &trap->field_0x3, 1);
ov30_02385C54(buffer, &entity->is_visible, 1);
ov30_02385C54(buffer, &entity->pos.x, 1);
ov30_02385C54(buffer, &entity->pos.y, 1);
var_r1 = TRUE;
}
if (var_r1 == FALSE) {
ov30_02385C54(buffer, &zeroes, 7);
}
}
}
void ov30_02382FB8(void *buffer)
{
u8 sp1;
u8 sp0;
struct entity* entity;
entity = &DUNGEON_PTR->entities[148];
ov30_02385CE0(buffer, OVERLAY30_JP_STRING_1);
if (entity == NULL) {
return;
}
if (entity->type == ENTITY_HIDDEN_STAIRS) {
sp1 = 1;
ov30_02385C54(buffer, (void*)&sp1, 1);
ov30_02385C54(buffer, &entity->is_visible, 1);
ov30_02385C54(buffer, &entity->pos.x, 1);
ov30_02385C54(buffer, &entity->pos.y, 1);
}
else
{
sp0 = 0;
ov30_02385C54(buffer, (void*)&sp0, 1);
ov30_02385C54(buffer, (void*)&sp0, 1);
ov30_02385C54(buffer, (void*)&sp0, 1);
ov30_02385C54(buffer, (void*)&sp0, 1);
}
}
void ov30_02383084(void *buffer)
{
ov30_02385CE0(buffer, OVERLAY30_JP_STRING_1);
ov30_02385D74(buffer, DUNGEON_PTR->monster_unique_id_counter);
ov30_02385D74(buffer, DUNGEON_PTR->monster_unique_wrap_counter);
ov30_02385DD4(buffer, DUNGEON_PTR->plus_is_active[0]);
ov30_02385DD4(buffer, DUNGEON_PTR->plus_is_active[1]);
ov30_02385DD4(buffer, DUNGEON_PTR->minus_is_active[0]);
ov30_02385DD4(buffer, DUNGEON_PTR->minus_is_active[1]);
ov30_02385DD4(buffer, DUNGEON_PTR->decoy_is_active);
ov30_02385DD4(buffer, DUNGEON_PTR->mew_cannot_spawn);
ov30_02385DD4(buffer, DUNGEON_PTR->shaymin_sky_form_loaded);
ov30_02385D14(buffer, DUNGEON_PTR->deoxys_floor_id);
for(int var_r6 = 0; var_r6 < MAX_TEAM_MEMBERS; var_r6++)
{
ov30_023831E8(buffer, DUNGEON_PTR->monster_slots.party_members[var_r6]);
}
for(int var_r6_2 = 0; var_r6_2 < DUNGEON_MAX_WILD_POKEMON; var_r6_2++)
{
ov30_023831E8(buffer, DUNGEON_PTR->monster_slots.wild_pokemon[var_r6_2]);
}
}
void ov30_023831E8(void *arg0, struct entity* arg1)
{
struct monster sp1C;
s32 sp18;
s32 sp14;
s32 sp10;
s16 spC;
s16 spA;
s16 sp8;
u8 sp7;
u8 sp6;
u8 sp5;
u8 sp4;
u8 sp3;
u8 sp2;
u8 sp1;
u8 sp0;
struct monster* var_r6;
s32 var_r5;
u8 var_r0;
u8 var_r0_2;
sp18 = 0;
sp14 = 1;
ov30_02385D54(arg0, 0xAA);
ov30_02385D54(arg0, 0x55);
if (arg1 == NULL) {
var_r0 = 0;
} else {
if (arg1->type != 0) {
var_r0_2 = 1;
} else {
var_r0_2 = 0;
}
var_r0 = var_r0_2;
}
if (var_r0 != 0) {
var_r6 = (struct monster *)arg1->info;
ov30_02385C54(arg0, &sp14, 1);
ov30_02385C54(arg0, &arg1->pos.x, 1);
ov30_02385C54(arg0, &arg1->pos.y, 1);
ov30_02385C54(arg0, &arg1->is_visible, 1);
ov30_02385C54(arg0, &arg1->spawn_genid, 2);
} else {
memset(&sp1C, 0, sizeof(struct monster));
var_r6 = &sp1C;
ov30_02385C54(arg0, &sp18, 1);
ov30_02385C54(arg0, &sp18, 1);
ov30_02385C54(arg0, &sp18, 1);
ov30_02385C54(arg0, &sp18, 1);
ov30_02385C54(arg0, &sp18, 2);
}
ov30_02385D14(arg0, var_r6->flags);
spC = var_r6->apparent_id;
ov30_02385C54(arg0, (s32* ) &spC, 2);
spA = var_r6->id;
ov30_02385C54(arg0, (s32* ) &spA, 2);
ov30_02385DD4(arg0, var_r6->is_not_team_member);
ov30_02385DD4(arg0, var_r6->is_team_leader);
ov30_02385DD4(arg0, var_r6->is_ally);
ov30_02385D54(arg0, var_r6->shopkeeper);
ov30_02385D54(arg0, var_r6->level);
ov30_02385D54(arg0, (u8) var_r6->team_index);
ov30_02385D54(arg0, var_r6->joined_at);
ov30_02385D54(arg0, var_r6->joined_at_floor);
ov30_02385D34(arg0, var_r6->iq);
ov30_02385D34(arg0, var_r6->hp);
ov30_02385D34(arg0, var_r6->max_hp_stat);
ov30_02385D34(arg0, var_r6->max_hp_boost);
ov30_02385D34(arg0, var_r6->field_0x14);
ov30_02385D54(arg0, var_r6->offensive_stats[0]);
ov30_02385D54(arg0, var_r6->offensive_stats[1]);
ov30_02385D54(arg0, var_r6->defensive_stats[0]);
ov30_02385D54(arg0, var_r6->defensive_stats[1]);
ov30_02385D74(arg0, var_r6->exp);
ov30_02385D34(arg0, var_r6->stat_modifiers.offensive_stages[0]);
ov30_02385D34(arg0, var_r6->stat_modifiers.offensive_stages[1]);
ov30_02385D34(arg0, var_r6->stat_modifiers.defensive_stages[0]);
ov30_02385D34(arg0, var_r6->stat_modifiers.defensive_stages[1]);
ov30_02385D34(arg0, var_r6->stat_modifiers.hit_chance_stages[0]);
ov30_02385D34(arg0, var_r6->stat_modifiers.hit_chance_stages[1]);
ov30_02385D34(arg0, var_r6->stat_modifiers.flash_fire_boost);
ov30_02385DB4(arg0, var_r6->stat_modifiers.offensive_multipliers[0]);
ov30_02385DB4(arg0, var_r6->stat_modifiers.offensive_multipliers[1]);
ov30_02385DB4(arg0, var_r6->stat_modifiers.defensive_multipliers[0]);
ov30_02385DB4(arg0, var_r6->stat_modifiers.defensive_multipliers[1]);
ov30_02385C54(arg0, &var_r6->action.direction, 1);
ov30_02385C54(arg0, &var_r6->action.item_target_position.x, 1);
ov30_02385C54(arg0, &var_r6->action.item_target_position.y, 1);
sp7 = var_r6->types[0];
ov30_02385C54(arg0, (s32* ) &sp7, 1);
sp6 = var_r6->types[1];
ov30_02385C54(arg0, (s32* ) &sp6, 1);
sp5 = var_r6->abilities[0];
ov30_02385C54(arg0, (s32* ) &sp5, 1);
sp4 = var_r6->abilities[1];
ov30_02385C54(arg0, (s32* ) &sp4, 1);
ov30_02384268(arg0, &var_r6->held_item);
sp8 = var_r6->previous_held_item_id;
ov30_02385C54(arg0, (s32* ) &sp8, 2);
for(var_r5 = 0; var_r5 < NUM_PREV_POS; var_r5++)
{
ov30_02385DF8(arg0, &var_r6->prev_pos[var_r5]);
}
ov30_02385C54(arg0, &var_r6->ai_target.ai_objective, 1);
ov30_02385DD4(arg0, var_r6->ai_target.ai_not_next_to_target);
ov30_02385DD4(arg0, var_r6->ai_target.ai_targeting_enemy);
ov30_02385DD4(arg0, var_r6->ai_target.ai_turning_around);
ov30_02385D14(arg0, var_r6->ai_target.ai_target_spawn_genid);
ov30_02385DF8(arg0, &var_r6->ai_target.ai_target_pos);
ov30_02385C54(arg0, &var_r6->iq_skill_menu_flags, 0x45);
ov30_02385C54(arg0, &var_r6->iq_skill_flags, 0x45);
sp3 = var_r6->tactic;
ov30_02385C54(arg0, (s32* ) &sp3, 1);
ov30_02385D34(arg0, var_r6->hidden_power_base_power);
sp2 = var_r6->hidden_power_type;
ov30_02385C54(arg0, (s32* ) &sp2, 1);
ov30_02385D74(arg0, var_r6->unique_id);
ov30_02385D74(arg0, var_r6->wrap_pair_unique_id);
ov30_02385D74(arg0, var_r6->bide_damage_tally);
ov30_02385C54(arg0, &var_r6->sleep_class_status.sleep, 1);
ov30_02385D54(arg0, var_r6->sleep_class_status.sleep_turns);
ov30_02385C54(arg0, &var_r6->burn_class_status.burn, 1);
ov30_02385D54(arg0, var_r6->burn_class_status.burn_turns);
ov30_02385D54(arg0, var_r6->burn_class_status.burn_damage_countdown);
ov30_02385D54(arg0, var_r6->burn_class_status.badly_poisoned_damage_count);
ov30_02385C54(arg0, &var_r6->frozen_class_status.freeze, 1);
ov30_02385D54(arg0, var_r6->frozen_class_status.freeze_turns);
ov30_02385D54(arg0, var_r6->frozen_class_status.freeze_damage_countdown);
ov30_02385D74(arg0, var_r6->frozen_class_status.constriction_animation);
ov30_02385C54(arg0, &var_r6->cringe_class_status.cringe, 1);
ov30_02385D54(arg0, var_r6->cringe_class_status.cringe_turns);
ov30_02385C54(arg0, &var_r6->bide_class_status.bide, 1);
ov30_02385D54(arg0, var_r6->bide_class_status.bide_turns);
ov30_02385D54(arg0, var_r6->bide_class_status.bide_move_slot);
ov30_02385C54(arg0, &var_r6->reflect_class_status.reflect, 1);
ov30_02385D54(arg0, var_r6->reflect_class_status.reflect_turns);
ov30_02385D54(arg0, var_r6->reflect_class_status.reflect_damage_countdown);
ov30_02385C54(arg0, &var_r6->curse_class_status.curse, 1);
ov30_02385DD4(arg0, var_r6->curse_class_status.curse_applier_non_team_member_flag);
ov30_02385DD4(arg0, var_r6->curse_class_status.dec);
ov30_02385D54(arg0, var_r6->curse_class_status.curse_turns);
ov30_02385D54(arg0, var_r6->curse_class_status.curse_damage_countdown);
ov30_02385C54(arg0, &var_r6->leech_seed_class_status.leech_seed, 1);
ov30_02385D74(arg0, var_r6->leech_seed_class_status.statuses_applier_id);
ov30_02385D54(arg0, var_r6->leech_seed_class_status.leech_seed_source_monster_index);
ov30_02385D54(arg0, var_r6->leech_seed_class_status.leech_seed_turns);
ov30_02385D54(arg0, var_r6->leech_seed_class_status.leech_seed_damage_countdown);
ov30_02385C54(arg0, &var_r6->sure_shot_class_status.sure_shot, 1);
ov30_02385D54(arg0, var_r6->sure_shot_class_status.sure_shot_turns);
ov30_02385C54(arg0, &var_r6->long_toss_class_status.status, 1);
ov30_02385C54(arg0, &var_r6->invisible_class_status.status, 1);
ov30_02385D54(arg0, var_r6->invisible_class_status.turns);
ov30_02385C54(arg0, &var_r6->blinker_class_status.blinded, 1);
ov30_02385D54(arg0, var_r6->blinker_class_status.blinded_turns);
ov30_02385C54(arg0, &var_r6->muzzled, 1);
ov30_02385D54(arg0, var_r6->muzzled_turns);
ov30_02385C54(arg0, &var_r6->miracle_eye, 1);
ov30_02385D54(arg0, var_r6->miracle_eye_turns);
ov30_02385C54(arg0, &var_r6->magnet_rise, 1);
ov30_02385D54(arg0, var_r6->magnet_rise_turns);
ov30_02385DD4(arg0, var_r6->power_ears);
ov30_02385DD4(arg0, var_r6->scanning);
ov30_02385DD4(arg0, var_r6->stair_spotter);
ov30_02385DD4(arg0, var_r6->pickup_flag);
#ifndef JAPAN
ov30_02385DD4(arg0, var_r6->in_action);
#endif
ov30_02385DD4(arg0, var_r6->grudge);
ov30_02385D54(arg0, var_r6->exp_yield);
ov30_02385DD4(arg0, var_r6->exposed);
ov30_02385DD4(arg0, var_r6->type_changed);
ov30_02385DD4(arg0, var_r6->boss_flag);
ov30_02385D54(arg0, var_r6->terrified);
ov30_02385D54(arg0, var_r6->terrified_turns);
ov30_02385DD4(arg0, var_r6->use_held_item);
ov30_02385D54(arg0, var_r6->perish_song_turns);
ov30_02385D54(arg0, var_r6->no_slip_cap_counter);
ov30_02385D54(arg0, var_r6->field_0x10a);
sp1 = var_r6->two_turn_move_invincible;
ov30_02385C54(arg0, (s32* ) &sp1, 1);
sp0 = var_r6->decoy_ai_tracker;
ov30_02385C54(arg0, (s32* ) &sp0, 1);
sp10 = var_r6->speed_stage;
ov30_02385C54(arg0, &sp10, 4);
ov30_02385EB8(arg0, var_r6->speed_up_counters, 5);
ov30_02385EB8(arg0, var_r6->speed_down_counters, 5);
ov30_02385D54(arg0, var_r6->stockpile_stage);
ov30_02385D54(arg0, var_r6->field_0x11f);
ov30_02385D54(arg0, (u8) var_r6->random_movement);
// moves
for(int move_index = 0; move_index < MAX_MON_MOVES; move_index++)
{
struct move *move = &var_r6->moves.moves[move_index];
ov30_02385D54(arg0, var_r6->moves.moves[move_index].flags0);
ov30_02385D54(arg0, var_r6->moves.moves[move_index].flags2);
ov30_02385C54(arg0, &move->id, 2);
ov30_02385D54(arg0, var_r6->moves.moves[move_index].pp);
ov30_02385D54(arg0, var_r6->moves.moves[move_index].ginseng);
}
ov30_02385D54(arg0, var_r6->moves.struggle_move_flags);
ov30_02385D34(arg0, var_r6->belly.integer);
ov30_02385D34(arg0, var_r6->belly.fractional);
ov30_02385D34(arg0, var_r6->max_belly.integer);
ov30_02385D34(arg0, var_r6->max_belly.fractional);
ov30_02385DD4(arg0, var_r6->ai_ally_skip);
ov30_02385DD4(arg0, var_r6->ai_next_to_target);
ov30_02385DD4(arg0, var_r6->waiting);
ov30_02385DD4(arg0, var_r6->famished);
ov30_02385DD4(arg0, var_r6->already_acted);
ov30_02385DD4(arg0, var_r6->should_evolve);
ov30_02385DD4(arg0, var_r6->using_charged_move);
ov30_02385DD4(arg0, var_r6->hit_grudge_monster);
ov30_02385DD4(arg0, var_r6->field_0x156);
ov30_02385D14(arg0, var_r6->state_flags);
ov30_02385D14(arg0, var_r6->prev_state_flags);
ov30_02385DD4(arg0, var_r6->apply_flash_fire_boost);
ov30_02385D54(arg0, var_r6->rollout_hit_counter);
ov30_02385DD4(arg0, var_r6->memento_warp_flag);
ov30_02385DD4(arg0, var_r6->overheat_special_attack_drop_flag);
ov30_02385DD4(arg0, var_r6->display_shadow);
ov30_02385D54(arg0, var_r6->sleep_talk_direction);
ov30_02385D54(arg0, var_r6->snore_direction);
ov30_02385D54(arg0, var_r6->field_0x179);
ov30_02385D54(arg0, var_r6->field_0x17a);
ov30_02385D54(arg0, var_r6->field_0x17b);
ov30_02385D54(arg0, var_r6->field_0x17c);
ov30_02385DF8(arg0, &var_r6->target_pos);
ov30_02385DB4(arg0, var_r6->field_0x188);
ov30_02385D14(arg0, var_r6->contact_ability_trigger_bitflags);
ov30_02385D94(arg0, var_r6->exclusive_item_trigger_bitflags);
ov30_02385D14(arg0, var_r6->field_0x190);
ov30_02385D34(arg0, var_r6->hp_fractional);
ov30_02385D34(arg0, var_r6->mobile_turn_timer);
ov30_02385D74(arg0, var_r6->unk_exp_tracker);
ov30_02385D54(arg0, var_r6->monster_behavior);
ov30_02385D54(arg0, var_r6->practice_swinger_flag);
ov30_02385D54(arg0, var_r6->anger_point_flag);
ov30_02385D34(arg0, var_r6->field_0x168);
ov30_02385D34(arg0, var_r6->bide_move_id);
ov30_02385D54(arg0, var_r6->force_turn);
for(int var_r4 = 0; var_r4 < 5; var_r4++)
{
ov30_02385D54(arg0, var_r6->unk16B[var_r4]);
}
}