diff options
| author | kuchenmitsahne <25233413+kuchenmitsahne@users.noreply.github.com> | 2024-11-27 13:46:58 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-11-27 11:46:58 -0700 |
| commit | 7c055329a7a71f8652587cb7dc779ac3eb69f5d4 (patch) | |
| tree | 0d91e8452b99087ccb0762be26946119ea6fbde6 /src/code/m_field_info.c | |
| parent | d38ac6a9d32e9b5c0e3caafbfc8d311a0f8f51f4 (diff) | |
ac_hanami_npc1 OK (#228)
* Rename symbols
* First pass on struct Hanami_Npc1
* Actor funcs (ct, save, dt, init, draw) OK
* Add trailing member to struct_809AEFA4
* Update Clip_unk_040_unk_E4 typedef to ActorFunc signature in order to unify *_actor_draw signatures
* All talk functions and proc functions (minus aHM1_think_main_proc.s) OK
* mFI_GetPuleIdx (func_8008930C_jp) OK; rename symbols (m_field_info)
* aHM1_set_animation OK
* aHM1_actor_move OK; update *_actor_move function signature to ActorFunc across project
* aHM1_set_request_act, aHM1_check_moveRange OK
* aHM1_check_inBlock OK; fix style in aHM1_check_moveRange
* aHM1_turn, aHM1_walk, aHM1_set_spd_info OK
* aHM1_think_init_proc OK
* aHM1_revise_moveRange OK with fake (all functions matching)
* Remove extraneous prototypes
* Fix aHM1_think_main_proc signature
* Import data
* Fix aHM1_revise_moveRange signature
* Standardize actor accesses
* Improve define usage
* Name blockX and blockZ members in Actor struct
* Remove extraneous comments
* mFI_BkNum2WposXZ OK (m_field_info)
* Add defines to m_field_info
* Formatting pass
* Remove extraneous comments
* Fix unk_18 type in struct_809AEFA4
---------
Co-authored-by: emilybrooks <emilybrooksemilybrooks@gmail.com>
Diffstat (limited to 'src/code/m_field_info.c')
| -rw-r--r-- | src/code/m_field_info.c | 35 |
1 files changed, 31 insertions, 4 deletions
diff --git a/src/code/m_field_info.c b/src/code/m_field_info.c index a005e5b..9277fa6 100644 --- a/src/code/m_field_info.c +++ b/src/code/m_field_info.c @@ -3,6 +3,9 @@ #include "m_collision_bg.h" #include "libc64/qrand.h" +s32 mFI_GetPuleTypeIdx(u8 type); +s32 mFI_BlockCheck(s32 blockX, s32 blockZ); + #pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/mFI_ClearFieldData.s") #pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/mFI_CheckFieldData.s") @@ -31,7 +34,7 @@ #pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008819C_jp.s") -#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_800881AC_jp.s") +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/mFI_BlockCheck.s") #pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80088270_jp.s") @@ -63,7 +66,19 @@ #pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80088A58_jp.s") -#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80088B3C_jp.s") +s32 mFI_BkNum2WposXZ(f32* worldPosX, f32* worldPosZ, s32 blockX, s32 blockZ) { + s32 result; + + *worldPosX = (f32)(blockX * FI_BK_WORLDSIZE_X); + *worldPosZ = (f32)(blockZ * FI_BK_WORLDSIZE_Z); + result = FALSE; + + if (mFI_CheckFieldData() == TRUE) { + result = mFI_BlockCheck(blockX, blockZ); + } + + return result; +} #pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/mFI_UtNum2PosXZInBk.s") @@ -105,9 +120,21 @@ #pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/mFI_BkNum2BlockType.s") -#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_800892CC_jp.s") +#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/mFI_GetPuleTypeIdx.s") + +s32 mFI_GetPuleIdx(void) { + u32 mask = (1 << 15); // TODO: make an enum/define + s32 blockX; + s32 blockZ; + u8 type; + s32 result; -#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008930C_jp.s") + mFI_BlockKind2BkNum(&blockX, &blockZ, mask); + type = mFI_BkNum2BlockType(blockX, blockZ); + result = mFI_GetPuleTypeIdx(type); + + return result; +} #pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_80089348_jp.s") |
