summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPrakxo <87568477+Prakxo@users.noreply.github.com>2023-10-06 21:40:57 +0200
committerGitHub <noreply@github.com>2023-10-06 12:40:57 -0700
commit936d96444522265baa770bccaeae23f16b4ac8fe (patch)
tree4018dd8fc35e9ff77a5645fedeac63f7179b7ee2
parent7c16d393b0ca7969a075555d4618b6b1d037841e (diff)
ac_set_manager OK (#111)
* ac_set_manager OK * suggestions
-rw-r--r--include/m_field_info.h2
-rw-r--r--include/m_player_lib.h1
-rw-r--r--include/segment_symbols.h2
-rw-r--r--include/tables/dmatables/dmadata_table_jp.h8
-rw-r--r--linker_scripts/jp/symbol_addrs_code.txt2
-rw-r--r--linker_scripts/jp/symbol_addrs_overlays.txt22
-rw-r--r--linker_scripts/jp/undefined_syms.ld4
-rw-r--r--src/code/m_field_info.c2
-rw-r--r--src/overlays/actors/ovl_Set_Manager/ac_set_manager.c206
-rw-r--r--src/overlays/actors/ovl_Set_Manager/ac_set_manager.h65
-rw-r--r--src/overlays/actors/player_actor/m_player.h7
-rw-r--r--src/overlays/managers/ac_set_ovl_gyoei/ac_set_ovl_gyoei.c49
-rw-r--r--src/overlays/managers/ac_set_ovl_gyoei/ac_set_ovl_gyoei.h9
-rw-r--r--src/overlays/managers/ac_set_ovl_insect/ac_set_ovl_insect.c33
-rw-r--r--src/overlays/managers/ac_set_ovl_insect/ac_set_ovl_insect.h9
-rw-r--r--yamls/jp/overlays.yaml34
16 files changed, 385 insertions, 70 deletions
diff --git a/include/m_field_info.h b/include/m_field_info.h
index 85da72a..35180d4 100644
--- a/include/m_field_info.h
+++ b/include/m_field_info.h
@@ -160,7 +160,7 @@ s32 func_8008B3E8_jp(xyz_t* arg0, UNK_TYPE arg1);
// void func_8008BF34_jp();
// void func_8008BFC4_jp();
// void func_8008C058_jp();
-// void func_8008C0FC_jp();
+s32 mFI_CheckPlayerWade(s32);
// void func_8008C120_jp();
// void func_8008C130_jp();
// void func_8008C1E0_jp();
diff --git a/include/m_player_lib.h b/include/m_player_lib.h
index 27b5a16..d53f9f7 100644
--- a/include/m_player_lib.h
+++ b/include/m_player_lib.h
@@ -6,6 +6,7 @@
struct Player;
struct Game_Play;
+
// void func_800B1160_jp();
// void func_800B11B0_jp();
// void func_800B11F8_jp();
diff --git a/include/segment_symbols.h b/include/segment_symbols.h
index 15eac21..f97649e 100644
--- a/include/segment_symbols.h
+++ b/include/segment_symbols.h
@@ -90,6 +90,8 @@ DECLARE_SEGMENT(ovl__0079F810);
DECLARE_SEGMENT(ovl__007A10E0);
DECLARE_SEGMENT(catalog_ovl);
+DECLARE_SEGMENT(ac_set_ovl_insect);
+DECLARE_SEGMENT(ac_set_ovl_gyoei);
DECLARE_SEGMENT(segment_00A58000);
diff --git a/include/tables/dmatables/dmadata_table_jp.h b/include/tables/dmatables/dmadata_table_jp.h
index eef8c1e..d66685b 100644
--- a/include/tables/dmatables/dmadata_table_jp.h
+++ b/include/tables/dmatables/dmadata_table_jp.h
@@ -120,12 +120,12 @@ DEFINE_DMA_ENTRY(ovl__0081AA60, "ovl__0081AA60")
DEFINE_DMA_ENTRY(ovl__0081AA60_reloc, "ovl__0081AA60_reloc")
DEFINE_DMA_ENTRY(ovl__0081D9D0, "ovl__0081D9D0")
DEFINE_DMA_ENTRY(ovl__0081D9D0_reloc, "ovl__0081D9D0_reloc")
-DEFINE_DMA_ENTRY(ovl__00821B40, "ovl__00821B40")
-DEFINE_DMA_ENTRY(ovl__00821B40_reloc, "ovl__00821B40_reloc")
+DEFINE_DMA_ENTRY(ac_set_ovl_insect, "ac_set_ovl_insect")
+DEFINE_DMA_ENTRY(ac_set_ovl_insect_reloc, "ac_set_ovl_insect_reloc")
DEFINE_DMA_ENTRY(ovl__00824500, "ovl__00824500")
DEFINE_DMA_ENTRY(ovl__00824500_reloc, "ovl__00824500_reloc")
-DEFINE_DMA_ENTRY(ovl__008253C0, "ovl__008253C0")
-DEFINE_DMA_ENTRY(ovl__008253C0_reloc, "ovl__008253C0_reloc")
+DEFINE_DMA_ENTRY(ac_set_ovl_gyoei, "ac_set_ovl_gyoei")
+DEFINE_DMA_ENTRY(ac_set_ovl_gyoei_reloc, "ac_set_ovl_gyoei_reloc")
DEFINE_DMA_ENTRY(ovl__00827DE0, "ovl__00827DE0")
DEFINE_DMA_ENTRY(ovl__00827DE0_reloc, "ovl__00827DE0_reloc")
DEFINE_DMA_ENTRY(ovl__00828C50, "ovl__00828C50")
diff --git a/linker_scripts/jp/symbol_addrs_code.txt b/linker_scripts/jp/symbol_addrs_code.txt
index f642eca..b520657 100644
--- a/linker_scripts/jp/symbol_addrs_code.txt
+++ b/linker_scripts/jp/symbol_addrs_code.txt
@@ -1421,7 +1421,7 @@ func_8008BE38_jp = 0x8008BE38; // type:func
func_8008BF34_jp = 0x8008BF34; // type:func
func_8008BFC4_jp = 0x8008BFC4; // type:func
func_8008C058_jp = 0x8008C058; // type:func
-func_8008C0FC_jp = 0x8008C0FC; // type:func
+mFI_CheckPlayerWade = 0x8008C0FC; // type:func
func_8008C120_jp = 0x8008C120; // type:func
func_8008C130_jp = 0x8008C130; // type:func
func_8008C1E0_jp = 0x8008C1E0; // type:func
diff --git a/linker_scripts/jp/symbol_addrs_overlays.txt b/linker_scripts/jp/symbol_addrs_overlays.txt
index 818d28c..a600806 100644
--- a/linker_scripts/jp/symbol_addrs_overlays.txt
+++ b/linker_scripts/jp/symbol_addrs_overlays.txt
@@ -8064,17 +8064,17 @@ Quest_Manager_Profile = 0x80957AAC; //
// .text
-func_80957DF0_jp = 0x80957DF0; // type:func
-func_80957E74_jp = 0x80957E74; // type:func
-func_80957F0C_jp = 0x80957F0C; // type:func
-func_80957F68_jp = 0x80957F68; // type:func
-func_80957F88_jp = 0x80957F88; // type:func
-func_80957FA8_jp = 0x80957FA8; // type:func
-func_80957FD4_jp = 0x80957FD4; // type:func
-func_8095804C_jp = 0x8095804C; // type:func
-func_8095806C_jp = 0x8095806C; // type:func
-func_809580D4_jp = 0x809580D4; // type:func
-func_80958130_jp = 0x80958130; // type:func
+aSetMgr_get_player_block = 0x80957DF0; // type:func
+aSetMgr_renewal_player_next_pos = 0x80957E74; // type:func
+aSetMgr_renewal_player_pos = 0x80957F0C; // type:func
+aSetMgr_check_player_wade_start = 0x80957F68; // type:func
+aSetMgr_check_player_wade_end = 0x80957F88; // type:func
+aSetMgr_clear_set_ovl = 0x80957FA8; // type:func
+aSetMgr_ovl = 0x80957FD4; // type:func
+aSetMgr_clear_keep = 0x8095804C; // type:func
+aSetMgr_move_check_set = 0x8095806C; // type:func
+aSetMgr_move_check_wait = 0x809580D4; // type:func
+aSetMgr_move_set = 0x80958130; // type:func
aSetMgr_move = 0x809581F0; // type:func
aSetMgr_ct = 0x8095824C; // type:func
aSetMgr_dt = 0x809582B4; // type:func
diff --git a/linker_scripts/jp/undefined_syms.ld b/linker_scripts/jp/undefined_syms.ld
index 7467a43..5c2aa7a 100644
--- a/linker_scripts/jp/undefined_syms.ld
+++ b/linker_scripts/jp/undefined_syms.ld
@@ -1041,12 +1041,12 @@ D_6003900 = 0x06003900;
D_6000000 = 0x06000000;
-// ovl__00821B40
+// ac_set_ovl_insect
D_6000000 = 0x06000000;
D_C000000 = 0x0C000000;
-// ovl__008253C0
+// ac_set_ovl_gyoei
D_C000000 = 0x0C000000;
diff --git a/src/code/m_field_info.c b/src/code/m_field_info.c
index d52fc4d..09cf4c8 100644
--- a/src/code/m_field_info.c
+++ b/src/code/m_field_info.c
@@ -255,7 +255,7 @@
#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008C058_jp.s")
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008C0FC_jp.s")
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/mFI_CheckPlayerWade.s")
#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/m_field_info/func_8008C120_jp.s")
diff --git a/src/overlays/actors/ovl_Set_Manager/ac_set_manager.c b/src/overlays/actors/ovl_Set_Manager/ac_set_manager.c
index d9fb3b1..e8c4e16 100644
--- a/src/overlays/actors/ovl_Set_Manager/ac_set_manager.c
+++ b/src/overlays/actors/ovl_Set_Manager/ac_set_manager.c
@@ -2,52 +2,200 @@
#include "m_lib.h"
#include "m_actor_dlftbls.h"
#include "m_object.h"
+#include "m_player_lib.h"
+#include "m_field_info.h"
+#include "ovlmgr.h"
+#include "attributes.h"
#include "overlays/gamestates/ovl_play/m_play.h"
+#include "overlays/actors/player_actor/m_player.h"
+
+// Fish and Insect overlay managers
+#include "overlays/managers/ac_set_ovl_insect/ac_set_ovl_insect.h"
+#include "overlays/managers/ac_set_ovl_gyoei/ac_set_ovl_gyoei.h"
void aSetMgr_ct(Actor* thisx, Game_Play* game_play);
void aSetMgr_dt(Actor* thisx, Game_Play* game_play);
-void aSetMgr_move(Actor* thisx, Game_Play* game_play);
+void aSetMgr_move(Actor* thisx, Game_Play* play);
-#if 0
-ActorProfile Set_Manager_Profile = {
- /* */ ACTOR_SET_MANAGER,
- /* */ ACTOR_PART_7,
- /* */ ACTOR_FLAG_10 | ACTOR_FLAG_20 | ACTOR_FLAG_20000000,
- /* */ 0x0000,
- /* */ GAMEPLAY_KEEP,
- /* */ sizeof(Set_Manager),
- /* */ aSetMgr_ct,
- /* */ aSetMgr_dt,
- /* */ aSetMgr_move,
- /* */ (void*)none_proc1,
- /* */ NULL,
+s32 aSetMgr_check_player_wade_end(void);
+s32 aSetMgr_check_player_wade_start(void);
+
+SetMgrOvlInfo proc_table[SETMGR_OVERLAY_MAX] = {
+ SETMGR_OVERLAY(ac_set_ovl_insect, func_8092A030_jp, func_8092AF0C_jp),
+ SETMGR_OVERLAY(ac_set_ovl_gyoei, func_8092DBC0_jp, func_8092ECAC_jp),
};
-#endif
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/ovl_Set_Manager/ac_set_manager/func_80957DF0_jp.s")
+s32 aSetMgr_get_player_block(s32* bx, s32* bz, Game_Play* play) {
+ s32 res = FALSE;
+ Player* player = get_player_actor_withoutCheck(play);
+
+ if (player != NULL) {
+ xyz_t pos = player->actor.world.pos;
+
+ res = mFI_Wpos2BlockNum(bx, bz, pos);
+ }
+
+ return res;
+}
+
+s32 aSetMgr_renewal_player_next_pos(s32* next_bx, s32* next_bz) {
+ xyz_t endpos = { 0.0f, 0.0f, 0.0f };
+ s32 endPosRes;
+
+ endPosRes = get_player_actor_withoutCheck((Game_Play*)gamePT)->getEndPos(gamePT, &endpos);
+
+ return mFI_Wpos2BlockNum(next_bx, next_bz, endpos) | endPosRes;
+}
+
+void aSetMgr_renewal_player_pos(Game_Play* play, SetMgrPlayerPos* playerPos) {
+ s32 bx;
+ s32 bz;
+ s32 pad UNUSED;
+
+ playerPos->prevBx = playerPos->curBx;
+ playerPos->prevBz = playerPos->curBz;
+
+ if (aSetMgr_get_player_block(&bx, &bz, play) == TRUE) {
+ playerPos->curBx = bx;
+ playerPos->curBz = bz;
+ }
+}
+
+s32 aSetMgr_check_player_wade_start() {
+ return mFI_CheckPlayerWade(1);
+}
+
+s32 aSetMgr_check_player_wade_end() {
+ return mFI_CheckPlayerWade(3);
+}
+
+void aSetMgr_clear_set_ovl(SetMgrOvl* ovl) {
+ bzero(ovl->buf, SETMGR_OVERLAY_BUFFER_SIZE);
+ ovl->ovlProc = NULL;
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/ovl_Set_Manager/ac_set_manager/func_80957E74_jp.s")
+s32 aSetMgr_ovl(SetMgrOvl* ovl, s32 type) {
+ s32 pad UNUSED;
+ SetMgrOvlInfo* mgrType = &proc_table[type];
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/ovl_Set_Manager/ac_set_manager/func_80957F0C_jp.s")
+ ovlmgr_Load(mgrType->vromStart, mgrType->vromEnd, mgrType->vramStart, mgrType->vramEnd, &ovl->buf);
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/ovl_Set_Manager/ac_set_manager/func_80957F68_jp.s")
+ ovl->ovlProc = (void*)(&ovl->buf[(uintptr_t)mgrType->ovlTypeEnd] - (uintptr_t)mgrType->vramStart);
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/ovl_Set_Manager/ac_set_manager/func_80957F88_jp.s")
+ return 1;
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/ovl_Set_Manager/ac_set_manager/func_80957FA8_jp.s")
+void aSetMgr_clear_keep(SetMgrKeep* keep) {
+ bzero(keep, sizeof(SetMgrKeep));
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/ovl_Set_Manager/ac_set_manager/func_80957FD4_jp.s")
+s32 aSetMgr_move_check_set(Game_Play* play UNUSED, Set_Manager* setmgr) {
+ s32 move = FALSE;
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/ovl_Set_Manager/ac_set_manager/func_8095804C_jp.s")
+ aSetMgr_renewal_player_pos(play, &setmgr->playerPos);
+ if (aSetMgr_check_player_wade_start() == TRUE) {
+ aSetMgr_renewal_player_next_pos(&setmgr->playerPos.nextBx, &setmgr->playerPos.nextBz);
+ setmgr->nextMove = 1;
+ move = TRUE;
+ }
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/ovl_Set_Manager/ac_set_manager/func_8095806C_jp.s")
+ return move;
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/ovl_Set_Manager/ac_set_manager/func_809580D4_jp.s")
+s32 aSetMgr_move_check_wait(Game_Play* play UNUSED, Set_Manager* set_manager) {
+ s32 timer;
+ s32 res = FALSE;
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/ovl_Set_Manager/ac_set_manager/func_80958130_jp.s")
+ if (set_manager->nextMove == SETMGR_MOVE_CHECK_WAIT) {
+ if (set_manager->timer == 0) {
+ timer = 0;
+ } else {
+ timer = --set_manager->timer;
+ }
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/ovl_Set_Manager/ac_set_manager/aSetMgr_move.s")
+ if (timer == 0) {
+ set_manager->nextMove = SETMGR_MOVE_SET;
+ set_manager->timer = SETMGR_TIMER;
+ res = TRUE;
+ }
+ }
+ return res;
+}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/ovl_Set_Manager/ac_set_manager/aSetMgr_ct.s")
+s32 aSetMgr_move_set(Game_Play* play UNUSED, Set_Manager* set_manager) {
+ s32 pad UNUSED;
+ s32 res = FALSE;
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/actors/ovl_Set_Manager/ac_set_manager/aSetMgr_dt.s")
+ if (aSetMgr_ovl(&set_manager->setOverlay, set_manager->setOvlType) == TRUE &&
+ set_manager->setOverlay.ovlProc != NULL) {
+ s32 requiredScopedTemp UNUSED;
+
+ set_manager->setOverlay.ovlProc(set_manager, play);
+ set_manager->setOvlType++;
+ } else {
+ set_manager->setOvlType++;
+ }
+
+ if (set_manager->setOvlType >= SETMGR_OVERLAY_MAX) {
+ set_manager->nextMove = SETMGR_MOVE_CHECK_SET;
+ set_manager->setOvlType = SETMGR_OVERLAY_START;
+ res = TRUE;
+ }
+
+ if (aSetMgr_check_player_wade_end() == TRUE) {
+ set_manager->nextMove = SETMGR_MOVE_CHECK_SET;
+ set_manager->setOvlType = SETMGR_OVERLAY_START;
+ res = TRUE;
+ }
+
+ return res;
+}
+
+SetManagerMoveProc move[] = { aSetMgr_move_check_set, aSetMgr_move_check_wait, aSetMgr_move_set };
+
+void aSetMgr_move(Actor* thisx, Game_Play* play) {
+ Set_Manager* setManager = (Set_Manager*)thisx;
+ u8 proc = setManager->moveProc;
+
+ if (move[proc](play, setManager) == TRUE) {
+ setManager->moveProc = setManager->nextMove;
+ }
+}
+
+void aSetMgr_ct(Actor* thisx, Game_Play* game UNUSED) {
+ Set_Manager* setManager = (Set_Manager*)thisx;
+
+ setManager->moveProc = SETMGR_MOVE_CHECK_SET;
+ setManager->nextMove = SETMGR_MOVE_CHECK_SET;
+ setManager->setOvlType = SETMGR_OVERLAY_START;
+
+ aSetMgr_clear_set_ovl(&setManager->setOverlay);
+
+ setManager->playerPos.nextBx = 0;
+ setManager->playerPos.nextBz = 0;
+ setManager->playerPos.curBx = 0;
+ setManager->playerPos.curBz = 0;
+ setManager->playerPos.prevBx = 0;
+ setManager->playerPos.prevBz = 0;
+
+ setManager->timer = SETMGR_TIMER;
+
+ aSetMgr_clear_keep(&setManager->keep);
+}
+
+void aSetMgr_dt(Actor* thisx UNUSED, Game_Play* play UNUSED) {
+}
+
+ActorProfile Set_Manager_Profile = {
+ /* */ ACTOR_SET_MANAGER,
+ /* */ ACTOR_PART_7,
+ /* */ ACTOR_FLAG_10 | ACTOR_FLAG_20 | ACTOR_FLAG_20000000,
+ /* */ 0x0000,
+ /* */ GAMEPLAY_KEEP,
+ /* */ sizeof(Set_Manager),
+ /* */ aSetMgr_ct,
+ /* */ aSetMgr_dt,
+ /* */ aSetMgr_move,
+ /* */ (void*)none_proc1,
+ /* */ NULL,
+};
diff --git a/src/overlays/actors/ovl_Set_Manager/ac_set_manager.h b/src/overlays/actors/ovl_Set_Manager/ac_set_manager.h
index 312550b..4ba0ad4 100644
--- a/src/overlays/actors/ovl_Set_Manager/ac_set_manager.h
+++ b/src/overlays/actors/ovl_Set_Manager/ac_set_manager.h
@@ -4,15 +4,74 @@
#include "ultra64.h"
#include "m_actor.h"
#include "unk.h"
+#include "libc/stddef.h"
+#include "segment_symbols.h"
struct Game_Play;
struct Set_Manager;
-typedef void (*Set_ManagerActionFunc)(struct Set_Manager*, struct Game_Play*);
+typedef s32 (*SetManagerOvlProc)(struct Set_Manager*, struct Game_Play*);
+typedef s32 (*SetManagerMoveProc)(struct Game_Play*, struct Set_Manager*);
+
+#define SETMGR_OVERLAY_BUFFER_SIZE 0x4000
+
+#define SETMGR_TIMER 5
+
+typedef struct SetMgrPlayerPos {
+ /* 0x00 */ s32 nextBx;
+ /* 0x04 */ s32 nextBz;
+ /* 0x08 */ s32 curBx;
+ /* 0x0C */ s32 curBz;
+ /* 0x10 */ s32 prevBx;
+ /* 0x14 */ s32 prevBz;
+} SetMgrPlayerPos;
+
+typedef struct SetMgrKeep {
+ /* 0x148 */ u8 unk_0[0x148];
+} SetMgrKeep; // size = 0x148
+
+typedef struct SetMgrOvl {
+ /* 0x0000 */ u8 buf[SETMGR_OVERLAY_BUFFER_SIZE];
+ /* 0x4000 */ SetManagerOvlProc ovlProc;
+} SetMgrOvl; // size = 0x4004
+
+#define SETMGR_OVERLAY(name, proc1, proc2) \
+ { SEGMENT_ROM_START(name), SEGMENT_ROM_END(name), proc1, SEGMENT_VRAM_END(name), proc2, }
+
+typedef struct SetMgrOvlInfo {
+ /* 0x00 */ RomOffset vromStart;
+ /* 0x04 */ RomOffset vromEnd;
+ /* 0x08 */ void* vramStart;
+ /* 0x0C */ void* vramEnd;
+ /* 0x10 */ void* ovlTypeEnd;
+} SetMgrOvlInfo; // size = 0x14
typedef struct Set_Manager {
- /* 0x0000 */ Actor actor;
- /* 0x0174 */ UNK_TYPE1 unk_0174[0x4174];
+ /* 0x0000 */ Actor actor;
+ /* 0x0174 */ u8 moveProc;
+ /* 0x0175 */ u8 nextMove;
+ /* 0x0176 */ u8 setOvlType;
+ /* 0x0178 */ SetMgrOvl setOverlay;
+ /* 0x417C */ s32 unk_417C;
+ /* 0x4180 */ SetMgrPlayerPos playerPos;
+ /* 0x4198 */ SetMgrKeep keep;
+ /* 0x42E0 */ s16 timer;
+ /* 0x42E4 */ s32 unk_42E4;
} Set_Manager; // size = 0x42E8
+typedef enum SetMgrOverlayType {
+ /* 0 */ SETMGR_OVERLAY_START,
+ /* 0 */ SETMGR_OVERLAY_INSECT = SETMGR_OVERLAY_START,
+ /* 1 */ SETMGR_OVERLAY_GYOEI,
+ /* 2 */ SETMGR_OVERLAY_MAX,
+} SetMgrOverlayType;
+
+typedef enum SetMgrMoveProcType {
+ /* 0 */ SETMGR_MOVE_CHECK_SET,
+ /* 1 */ SETMGR_MOVE_CHECK_WAIT,
+ /* 2 */ SETMGR_MOVE_SET,
+ /* 3 */ SETMGR_MOVE_MAX,
+} SetMgrMoveProcType;
+
+
#endif
diff --git a/src/overlays/actors/player_actor/m_player.h b/src/overlays/actors/player_actor/m_player.h
index 1ba8231..1bbc2f5 100644
--- a/src/overlays/actors/player_actor/m_player.h
+++ b/src/overlays/actors/player_actor/m_player.h
@@ -6,9 +6,12 @@
#include "m_collision_obj.h"
#include "unk.h"
+struct Game;
struct Game_Play;
struct Player;
+typedef s32 (*SetMgrGetEndPosProc)(struct Game*, xyz_t*);
+
typedef struct Player {
/* 0x0000 */ Actor actor;
/* 0x0174 */ UNK_TYPE1 unk_0174[0xB7C];
@@ -32,7 +35,9 @@ typedef struct Player {
/* 0x0FA4 */ ClObjTris colliderTris2;
/* 0x0FB8 */ UNK_TYPE1 unk_0FB8[0x50];
/* 0x1008 */ ClObjPipe colliderPipe;
- /* 0x1024 */ UNK_TYPE1 unk_1024[0x294];
+ /* 0x1024 */ UNK_TYPE1 unk_1024[0x220];
+ /* 0x1024 */ SetMgrGetEndPosProc getEndPos;
+ /* 0x1048 */ UNK_TYPE1 unk_1048[0x70];
/* 0x12B8 */ UNK_TYPE unk_12B8;
/* 0x12BC */ s32 unk_12BC;
/* 0x12C0 */ u16 unk_12C0;
diff --git a/src/overlays/managers/ac_set_ovl_gyoei/ac_set_ovl_gyoei.c b/src/overlays/managers/ac_set_ovl_gyoei/ac_set_ovl_gyoei.c
new file mode 100644
index 0000000..cbe44c2
--- /dev/null
+++ b/src/overlays/managers/ac_set_ovl_gyoei/ac_set_ovl_gyoei.c
@@ -0,0 +1,49 @@
+#include "global.h"
+
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/managers/ac_set_ovl_gyoei/ac_set_ovl_gyoei/func_8092DBC0_jp.s")
+
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/managers/ac_set_ovl_gyoei/ac_set_ovl_gyoei/func_8092DBE4_jp.s")
+
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/managers/ac_set_ovl_gyoei/ac_set_ovl_gyoei/func_8092DBFC_jp.s")
+
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/managers/ac_set_ovl_gyoei/ac_set_ovl_gyoei/func_8092DC30_jp.s")
+
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/managers/ac_set_ovl_gyoei/ac_set_ovl_gyoei/func_8092DCEC_jp.s")
+
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/managers/ac_set_ovl_gyoei/ac_set_ovl_gyoei/func_8092DE38_jp.s")
+
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/managers/ac_set_ovl_gyoei/ac_set_ovl_gyoei/func_8092DFC0_jp.s")
+
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/managers/ac_set_ovl_gyoei/ac_set_ovl_gyoei/func_8092E01C_jp.s")
+
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/managers/ac_set_ovl_gyoei/ac_set_ovl_gyoei/func_8092E040_jp.s")
+
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/managers/ac_set_ovl_gyoei/ac_set_ovl_gyoei/func_8092E0B0_jp.s")
+
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/managers/ac_set_ovl_gyoei/ac_set_ovl_gyoei/func_8092E0FC_jp.s")
+
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/managers/ac_set_ovl_gyoei/ac_set_ovl_gyoei/func_8092E148_jp.s")
+
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/managers/ac_set_ovl_gyoei/ac_set_ovl_gyoei/func_8092E240_jp.s")
+
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/managers/ac_set_ovl_gyoei/ac_set_ovl_gyoei/func_8092E2F8_jp.s")
+
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/managers/ac_set_ovl_gyoei/ac_set_ovl_gyoei/func_8092E3B4_jp.s")
+
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/managers/ac_set_ovl_gyoei/ac_set_ovl_gyoei/func_8092E470_jp.s")
+
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/managers/ac_set_ovl_gyoei/ac_set_ovl_gyoei/func_8092E564_jp.s")
+
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/managers/ac_set_ovl_gyoei/ac_set_ovl_gyoei/func_8092E5E0_jp.s")
+
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/managers/ac_set_ovl_gyoei/ac_set_ovl_gyoei/func_8092E5F4_jp.s")
+
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/managers/ac_set_ovl_gyoei/ac_set_ovl_gyoei/func_8092E920_jp.s")
+
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/managers/ac_set_ovl_gyoei/ac_set_ovl_gyoei/func_8092EA18_jp.s")
+
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/managers/ac_set_ovl_gyoei/ac_set_ovl_gyoei/func_8092EA9C_jp.s")
+
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/managers/ac_set_ovl_gyoei/ac_set_ovl_gyoei/func_8092EBC0_jp.s")
+
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/managers/ac_set_ovl_gyoei/ac_set_ovl_gyoei/func_8092ECAC_jp.s")
diff --git a/src/overlays/managers/ac_set_ovl_gyoei/ac_set_ovl_gyoei.h b/src/overlays/managers/ac_set_ovl_gyoei/ac_set_ovl_gyoei.h
new file mode 100644
index 0000000..135d594
--- /dev/null
+++ b/src/overlays/managers/ac_set_ovl_gyoei/ac_set_ovl_gyoei.h
@@ -0,0 +1,9 @@
+#ifndef AC_SET_OVL_GYOEI_H
+#define AC_SET_OVL_GYOEI_H
+
+#include "ultra64.h"
+
+void func_8092A030_jp(void);
+void func_8092AF0C_jp(void);
+
+#endif
diff --git a/src/overlays/managers/ac_set_ovl_insect/ac_set_ovl_insect.c b/src/overlays/managers/ac_set_ovl_insect/ac_set_ovl_insect.c
new file mode 100644
index 0000000..6cb403d
--- /dev/null
+++ b/src/overlays/managers/ac_set_ovl_insect/ac_set_ovl_insect.c
@@ -0,0 +1,33 @@
+#include "global.h"
+
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/managers/ac_set_ovl_insect/ac_set_ovl_insect/func_8092A030_jp.s")
+
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/managers/ac_set_ovl_insect/ac_set_ovl_insect/func_8092A054_jp.s")
+
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/managers/ac_set_ovl_insect/ac_set_ovl_insect/func_8092A06C_jp.s")
+
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/managers/ac_set_ovl_insect/ac_set_ovl_insect/func_8092A0A0_jp.s")
+
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/managers/ac_set_ovl_insect/ac_set_ovl_insect/func_8092A1B0_jp.s")
+
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/managers/ac_set_ovl_insect/ac_set_ovl_insect/func_8092A20C_jp.s")
+
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/managers/ac_set_ovl_insect/ac_set_ovl_insect/func_8092A230_jp.s")
+
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/managers/ac_set_ovl_insect/ac_set_ovl_insect/func_8092A258_jp.s")
+
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/managers/ac_set_ovl_insect/ac_set_ovl_insect/func_8092A328_jp.s")
+
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/managers/ac_set_ovl_insect/ac_set_ovl_insect/func_8092A4A8_jp.s")
+
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/managers/ac_set_ovl_insect/ac_set_ovl_insect/func_8092A56C_jp.s")
+
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/managers/ac_set_ovl_insect/ac_set_ovl_insect/func_8092A690_jp.s")
+
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/managers/ac_set_ovl_insect/ac_set_ovl_insect/func_8092A76C_jp.s")
+
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/managers/ac_set_ovl_insect/ac_set_ovl_insect/func_8092AB8C_jp.s")
+
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/managers/ac_set_ovl_insect/ac_set_ovl_insect/func_8092AE10_jp.s")
+
+#pragma GLOBAL_ASM("asm/jp/nonmatchings/overlays/managers/ac_set_ovl_insect/ac_set_ovl_insect/func_8092AF0C_jp.s")
diff --git a/src/overlays/managers/ac_set_ovl_insect/ac_set_ovl_insect.h b/src/overlays/managers/ac_set_ovl_insect/ac_set_ovl_insect.h
new file mode 100644
index 0000000..468b4a7
--- /dev/null
+++ b/src/overlays/managers/ac_set_ovl_insect/ac_set_ovl_insect.h
@@ -0,0 +1,9 @@
+#ifndef AC_SET_OVL_INSECT_H
+#define AC_SET_OVL_INSECT_H
+
+#include "ultra64.h"
+
+void func_8092DBC0_jp(void);
+void func_8092ECAC_jp(void);
+
+#endif
diff --git a/yamls/jp/overlays.yaml b/yamls/jp/overlays.yaml
index 631fe30..434a821 100644
--- a/yamls/jp/overlays.yaml
+++ b/yamls/jp/overlays.yaml
@@ -1097,7 +1097,7 @@
subsegments:
- [0x821740, data, overlays/other_ovl/ovl__0081D9D0/ovl__0081D9D0_reloc]
- - name: ovl__00821B40
+ - name: ac_set_ovl_insect
type: code
start: 0x821B40
vram: 0x8092A030
@@ -1105,23 +1105,23 @@
compress: True
bss_size: 0x310
subsegments:
- - [0x821B40, asm, overlays/other_ovl/ovl__00821B40/ovl__00821B40]
- - [0x822B30, data, overlays/other_ovl/ovl__00821B40/ovl__00821B40]
- - { start: 0x8240D0, type: bss, vram: 0x8092C5C0, name: overlays/other_ovl/ovl__00821B40/ovl__00821B40 }
- - name: ovl__00821B40_reloc
+ - [0x821B40, c, overlays/managers/ac_set_ovl_insect/ac_set_ovl_insect]
+ - [0x822B30, data, overlays/managers/ac_set_ovl_insect/ac_set_ovl_insect]
+ - { start: 0x8240D0, type: bss, vram: 0x8092C5C0, name: overlays/managers/ac_set_ovl_insect/ac_set_ovl_insect }
+ - name: ac_set_ovl_insect_reloc
type: code
start: 0x8240D0
vram: 0x8092C8D0
- follows_vram: ovl__00821B40
+ follows_vram: ac_set_ovl_insect
compress: True
subsegments:
- - [0x8240D0, data, overlays/other_ovl/ovl__00821B40/ovl__00821B40_reloc]
+ - [0x8240D0, data, overlays/managers/ac_set_ovl_insect/ac_set_ovl_insect_reloc]
- name: ovl__00824500
type: code
start: 0x824500
vram: 0x8092CD00
- follows_vram: ovl__00821B40_reloc
+ follows_vram: ac_set_ovl_insect_reloc
compress: True
bss_size: 0x0
subsegments:
@@ -1136,7 +1136,7 @@
subsegments:
- [0x8252E0, data, overlays/other_ovl/ovl__00824500/ovl__00824500_reloc]
- - name: ovl__008253C0
+ - name: ac_set_ovl_gyoei
type: code
start: 0x8253C0
vram: 0x8092DBC0
@@ -1144,23 +1144,23 @@
compress: True
bss_size: 0x380
subsegments:
- - [0x8253C0, asm, overlays/other_ovl/ovl__008253C0/ovl__008253C0]
- - [0x8267B0, data, overlays/other_ovl/ovl__008253C0/ovl__008253C0]
- - { start: 0x827BE0, type: bss, vram: 0x809303E0, name: overlays/other_ovl/ovl__008253C0/ovl__008253C0 }
- - name: ovl__008253C0_reloc
+ - [0x8253C0, c, overlays/managers/ac_set_ovl_gyoei/ac_set_ovl_gyoei]
+ - [0x8267B0, data, overlays/managers/ac_set_ovl_gyoei/ac_set_ovl_gyoei]
+ - { start: 0x827BE0, type: bss, vram: 0x809303E0, name: overlays/managers/ac_set_ovl_gyoei/ac_set_ovl_gyoei }
+ - name: ac_set_ovl_gyoei_reloc
type: code
start: 0x827BE0
vram: 0x80930760
- follows_vram: ovl__008253C0
+ follows_vram: ac_set_ovl_gyoei
compress: True
subsegments:
- - [0x827BE0, data, overlays/other_ovl/ovl__008253C0/ovl__008253C0_reloc]
+ - [0x827BE0, data, overlays/managers/ac_set_ovl_gyoei/ac_set_ovl_gyoei_reloc]
- name: ovl__00827DE0
type: code
start: 0x827DE0
vram: 0x80930960
- follows_vram: ovl__008253C0_reloc
+ follows_vram: ac_set_ovl_gyoei_reloc
compress: True
bss_size: 0x0
subsegments:
@@ -1463,7 +1463,7 @@
bss_size: 0x0
subsegments:
- [0x84CBC0, c, overlays/actors/ovl_Set_Manager/ac_set_manager]
- - [0x84D0A0, data, overlays/actors/ovl_Set_Manager/ac_set_manager]
+ - [0x84D0A0, .data, overlays/actors/ovl_Set_Manager/ac_set_manager]
- name: ovl_Set_Manager_reloc
type: code
start: 0x84D110