summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDerek Hensley <hensley.derek58@gmail.com>2024-12-26 07:14:55 -0800
committerGitHub <noreply@github.com>2024-12-26 08:14:55 -0700
commitbececbff99bd2bb208a811c100c8f79ebbecc77d (patch)
treee2e3e00ac3d9aa866c727197e20c6f6b0201f24b
parent60579a4260965c1de2e8a8f320fe9f8c3f5d2dde (diff)
main OK (#234)
* main OK * gSegments -> SegmentBaseAddress * newline * format
-rw-r--r--Makefile9
-rw-r--r--include/6FB340.h2
-rw-r--r--include/6FD190.h7
-rw-r--r--include/audioMgr.h4
-rw-r--r--include/code_variables.h27
-rw-r--r--include/graph.h2
-rw-r--r--include/m_flashrom.h2
-rw-r--r--include/m_thread.h20
-rw-r--r--include/macros.h2
-rw-r--r--include/main.h3
-rw-r--r--include/padmgr.h2
-rw-r--r--include/segment_symbols.h3
-rw-r--r--include/sys_initial_check.h7
-rw-r--r--include/sys_stacks.h13
-rw-r--r--linker_scripts/jp/symbol_addrs_code.txt30
-rw-r--r--src/boot/idle.c2
-rw-r--r--src/code/c_keyframe.c26
-rw-r--r--src/code/m_actor.c12
-rw-r--r--src/code/m_scene.c2
-rw-r--r--src/code/main.c120
-rw-r--r--src/code/sys_stacks.c7
-rw-r--r--src/overlays/actors/ovl_Dump/ac_dump.c2
-rw-r--r--src/overlays/actors/ovl_Goza/ac_goza.c2
-rw-r--r--src/overlays/actors/ovl_Kago/ac_kago.c2
-rw-r--r--src/overlays/actors/ovl_Koinobori/ac_koinobori.c8
-rw-r--r--src/overlays/actors/ovl_Mikuji/ac_mikuji.c2
-rw-r--r--src/overlays/actors/ovl_Radio/ac_radio.c2
-rw-r--r--src/overlays/actors/ovl_Tama/ac_tama.c2
-rw-r--r--src/overlays/actors/ovl_Toudai/ac_toudai.c6
-rw-r--r--src/overlays/actors/ovl_Weather/ac_weather.c4
-rw-r--r--src/overlays/gamestates/ovl_cpedit/m_cpedit.c2
-rw-r--r--src/overlays/gamestates/ovl_play/m_play.c10
-rw-r--r--yamls/jp/buffers.yaml9
-rw-r--r--yamls/jp/code.yaml5
34 files changed, 248 insertions, 110 deletions
diff --git a/Makefile b/Makefile
index 5e58a57..bbec494 100644
--- a/Makefile
+++ b/Makefile
@@ -291,7 +291,14 @@ setup:
extract:
$(RM) -r asm/$(VERSION) assets/$(VERSION)
- $(CAT) yamls/$(VERSION)/header.yaml yamls/$(VERSION)/makerom.yaml yamls/$(VERSION)/boot.yaml yamls/$(VERSION)/code.yaml yamls/$(VERSION)/overlays.yaml yamls/$(VERSION)/assets.yaml > $(SPLAT_YAML)
+ $(CAT) yamls/$(VERSION)/header.yaml \
+ yamls/$(VERSION)/makerom.yaml \
+ yamls/$(VERSION)/boot.yaml \
+ yamls/$(VERSION)/code.yaml \
+ yamls/$(VERSION)/buffers.yaml \
+ yamls/$(VERSION)/overlays.yaml \
+ yamls/$(VERSION)/assets.yaml \
+ > $(SPLAT_YAML)
$(SPLAT) $(SPLAT_FLAGS) $(SPLAT_YAML)
lib: $(ULTRALIB_LIB)
diff --git a/include/6FB340.h b/include/6FB340.h
index 834942b..ec13f92 100644
--- a/include/6FB340.h
+++ b/include/6FB340.h
@@ -24,6 +24,6 @@ void func_800D85EC_jp(void);
void func_800D8618_jp(void);
// void func_800D8644_jp();
// void func_800D8670_jp();
-// void func_800D87C0_jp();
+void func_800D87C0_jp(void*, OSPri);
#endif
diff --git a/include/6FD190.h b/include/6FD190.h
index 50f671a..f2744db 100644
--- a/include/6FD190.h
+++ b/include/6FD190.h
@@ -2,11 +2,12 @@
#define C_6FD190_H
#include "ultra64.h"
+#include "libc/stdint.h"
-// void func_800D94F0_jp();
+uintptr_t func_800D94F0_jp(void);
// void func_800D9514_jp();
-// void func_800D9524_jp();
-// void func_800D955C_jp();
+void func_800D9524_jp(void);
+void func_800D955C_jp(s32);
// void func_800D9618_jp();
// void func_800D96A8_jp();
// void func_800D96E8_jp();
diff --git a/include/audioMgr.h b/include/audioMgr.h
index faffd58..792330b 100644
--- a/include/audioMgr.h
+++ b/include/audioMgr.h
@@ -32,8 +32,8 @@ typedef struct Audiomgr {
// void func_800D25D0_jp();
// void func_800D287C_jp();
// void func_800D289C_jp();
-// void func_800D2AA0_jp();
-// void func_800D2AD0_jp();
+void func_800D2AA0_jp(void);
+void func_800D2AD0_jp(void* stack, OSPri pri, OSId id);
// void func_800D2B94_jp();
// void func_800D2BEC_jp();
diff --git a/include/code_variables.h b/include/code_variables.h
index f889763..bd8f66b 100644
--- a/include/code_variables.h
+++ b/include/code_variables.h
@@ -2,6 +2,8 @@
#define CODE_VARIABLES_H
#include "ultra64.h"
+#include "libu64/stackcheck.h"
+#include "stack.h"
#include "unknown_structs.h"
#include "z64math.h"
@@ -1930,17 +1932,17 @@ extern u8 D_80113854_jp;
extern u8 B_80145370_jp;
// extern UNK_TYPE B_80145390_jp;
// extern UNK_TYPE B_80145610_jp;
-// extern UNK_TYPE graphThread;
-// extern UNK_TYPE B_801457E0_jp;
-// extern UNK_TYPE B_80145800_jp;
-// extern UNK_TYPE B_80145820_jp;
-// extern UNK_TYPE B_80145840_jp;
-// extern UNK_TYPE B_80145860_jp;
-// extern UNK_TYPE B_80145880_jp;
-// extern UNK_TYPE B_80145898_jp;
-// extern UNK_TYPE B_8014589C_jp;
+extern OSThread graphThread;
+extern StackEntry graphStackInfo;
+extern StackEntry schedStackInfo;
+extern StackEntry audioStackInfo;
+extern StackEntry padmgrStackInfo;
+extern StackEntry irqmgrStackInfo;
+extern OSMesgQueue l_serialMsgQ;
+extern OSMesg serialMsgBuf[1];
+extern size_t gSystemHeapSize;
-extern uintptr_t gSegments[NUM_SEGMENTS];
+extern uintptr_t SegmentBaseAddress[NUM_SEGMENTS];
// extern UNK_TYPE B_80145D70_jp;
// extern UNK_TYPE B_80145D80_jp;
@@ -2070,11 +2072,6 @@ extern UNK_TYPE B_80145FFC_jp;
// extern UNK_TYPE B_FLT_801462A0_jp;
// extern UNK_TYPE Matrix_stack;
// extern UNK_TYPE Matrix_now;
-// extern UNK_TYPE B_801462C0_jp;
-// extern UNK_TYPE B_80147AC0_jp;
-// extern UNK_TYPE B_801480C0_jp;
-// extern UNK_TYPE B_801488C0_jp;
-// extern UNK_TYPE B_80148DC0_jp;
// extern UNK_TYPE B_80149310_jp;
// extern UNK_TYPE B_80149328_jp;
// extern UNK_TYPE B_80149368_jp;
diff --git a/include/graph.h b/include/graph.h
index aa9c46b..fe4cc41 100644
--- a/include/graph.h
+++ b/include/graph.h
@@ -17,6 +17,6 @@ void func_800D3E40_jp(struct GraphicsContext *gfxCtx);
// void graph_task_set00();
// void graph_draw_finish();
// void graph_main();
-// void graph_proc();
+void graph_proc(void* arg);
#endif
diff --git a/include/m_flashrom.h b/include/m_flashrom.h
index fdcfcf2..e6b3fdd 100644
--- a/include/m_flashrom.h
+++ b/include/m_flashrom.h
@@ -10,7 +10,7 @@ struct CommonData;
// void func_8008ECC8_jp();
// void func_8008ECF0_jp();
// void func_8008ED14_jp();
-// void func_8008EE24_jp();
+void func_8008EE24_jp(void);
// void func_8008EE5C_jp();
// void func_8008EE6C_jp();
// void func_8008EE7C_jp();
diff --git a/include/m_thread.h b/include/m_thread.h
index 19f6e1f..0f6936e 100644
--- a/include/m_thread.h
+++ b/include/m_thread.h
@@ -1,18 +1,26 @@
#ifndef M_THREAD_H
#define M_THREAD_H
-#define M_THREAD_ID_IDLE 1
-#define M_THREAD_ID_FAULT 2
-#define M_THREAD_ID_MAIN 3
-#define M_THREAD_ID_DMAMGR 8
-#define M_THREAD_ID_IRQMGR 9
+#define M_THREAD_ID_IDLE 1
+#define M_THREAD_ID_FAULT 2
+#define M_THREAD_ID_MAIN 3
+#define M_THREAD_ID_GRAPH 4
+#define M_THREAD_ID_PADMGR 7
+#define M_THREAD_ID_DMAMGR 8
+#define M_THREAD_ID_IRQMGR 9
+#define M_THREAD_ID_AUDIOMGR 10
+#define M_PRIORITY_GRAPH 8
#define M_PRIORITY_DMAMGR_LOW 10 // Used when decompressing files
+#define M_PRIORITY_AUDIOMGR 11
#define M_PRIORITY_IDLE 12
#define M_PRIORITY_MAIN 12
+#define M_PRIORITY_MAIN_HIGH 13
+#define M_PRIORITY_PADMGR 15
#define M_PRIORITY_DMAMGR 17
+#define M_PRIORITY_SCHED 16
+#define M_PRIORITY_IRQMGR 18
#define M_PRIORITY_FAULT_CLIENT (OS_PRIORITY_APPMAX - 1)
#define M_PRIORITY_FAULT OS_PRIORITY_APPMAX
-
#endif
diff --git a/include/macros.h b/include/macros.h
index ed633df..f924f60 100644
--- a/include/macros.h
+++ b/include/macros.h
@@ -19,7 +19,7 @@
#define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0]))
#define ARRAY_COUNTU(arr) (u32)(sizeof(arr) / sizeof(arr[0]))
-#define SEGMENTED_TO_K0(addr) (void*)((gSegments[SEGMENT_NUMBER(addr)] + K0BASE) + SEGMENT_OFFSET(addr))
+#define SEGMENTED_TO_K0(addr) (void*)((SegmentBaseAddress[SEGMENT_NUMBER(addr)] + K0BASE) + SEGMENT_OFFSET(addr))
#define ABS(x) (((x) >= 0) ? (x): -(x))
#define ABS_F(x) (((x) >= 0.0f) ? (x) : -(x))
diff --git a/include/main.h b/include/main.h
index 07268cd..2123476 100644
--- a/include/main.h
+++ b/include/main.h
@@ -6,7 +6,6 @@
extern s32 ScreenHeight;
extern s32 ScreenWidth;
-// void func_800D64E0_jp();
-void func_800D66D0_jp(void* arg0);
+void mainproc(void* arg);
#endif
diff --git a/include/padmgr.h b/include/padmgr.h
index 2eba2ee..d976c79 100644
--- a/include/padmgr.h
+++ b/include/padmgr.h
@@ -49,7 +49,7 @@ void padmgr_UnlockSerialMesgQ(OSMesgQueue*);
void padmgr_RequestPadData(Input inputs[4], s32 arg1);
void padmgr_ClearPadData(Input inputs[4]);
// void padmgr_MainProc();
-// void padmgr_Init();
+void padmgr_Init(OSMesgQueue*, OSId, OSPri, void*);
// void func_800D763C_jp();
// void func_800D765C_jp();
s32 padmgr_isConnectedAnyPak(s32 arg0);
diff --git a/include/segment_symbols.h b/include/segment_symbols.h
index fbdedc9..a04ca19 100644
--- a/include/segment_symbols.h
+++ b/include/segment_symbols.h
@@ -60,10 +60,9 @@ DECLARE_SEGMENT(segment_027130);
DECLARE_SEGMENT(segment_13D9A0);
-// DECLARE_SEGMENT();
-
DECLARE_SEGMENT(code);
+DECLARE_SEGMENT(buffers);
// TODO: the rest of segments
diff --git a/include/sys_initial_check.h b/include/sys_initial_check.h
index 8421911..e2ed9aa 100644
--- a/include/sys_initial_check.h
+++ b/include/sys_initial_check.h
@@ -3,11 +3,6 @@
#include "ultra64.h"
-// void func_800D9890_jp();
-// void func_800D98C0_jp();
-// void func_800D9900_jp();
-// void func_800D99F0_jp();
-// void func_800D9A6C_jp();
-// void func_800D9B44_jp();
+void Check_RegionIsSupported(void);
#endif
diff --git a/include/sys_stacks.h b/include/sys_stacks.h
new file mode 100644
index 0000000..6b090de
--- /dev/null
+++ b/include/sys_stacks.h
@@ -0,0 +1,13 @@
+#ifndef SYS_STACKS_H
+#define SYS_STACKS_H
+
+#include "ultra64.h"
+#include "stack.h"
+
+extern STACK(graphStack, 0x1800);
+extern STACK(schedStack, 0x600);
+extern STACK(audioStack, 0x800);
+extern STACK(padmgrStack, 0x500);
+extern STACK(irqmgrStack, 0x500);
+
+#endif
diff --git a/linker_scripts/jp/symbol_addrs_code.txt b/linker_scripts/jp/symbol_addrs_code.txt
index 3e62572..b7735e9 100644
--- a/linker_scripts/jp/symbol_addrs_code.txt
+++ b/linker_scripts/jp/symbol_addrs_code.txt
@@ -3496,7 +3496,7 @@ ListAlloc_Alloc = 0x800D63A4; // type:func
ListAlloc_Free = 0x800D6410; // type:func
ListAlloc_FreeAll = 0x800D6490; // type:func
func_800D64E0_jp = 0x800D64E0; // type:func
-func_800D66D0_jp = 0x800D66D0; // type:func
+mainproc = 0x800D66D0; // type:func
padmgr_LockSerialMesgQ = 0x800D6A10; // type:func
padmgr_UnlockSerialMesgQ = 0x800D6A44; // type:func
padmgr_LockContData = 0x800D6A74; // type:func
@@ -6172,15 +6172,15 @@ B_80145610_jp = 0x80145610; //
B_80145620_jp = 0x80145620; //
l_lbRTC_Time = 0x80145628; //
graphThread = 0x80145630; //
-B_801457E0_jp = 0x801457E0; //
-B_80145800_jp = 0x80145800; //
-B_80145820_jp = 0x80145820; //
-B_80145840_jp = 0x80145840; //
-B_80145860_jp = 0x80145860; //
-B_80145880_jp = 0x80145880; //
-B_80145898_jp = 0x80145898; //
-B_8014589C_jp = 0x8014589C; //
-gSegments = 0x801458A0; // size:0x40
+graphStackInfo = 0x801457E0; //
+schedStackInfo = 0x80145800; //
+audioStackInfo = 0x80145820; //
+padmgrStackInfo = 0x80145840; //
+irqmgrStackInfo = 0x80145860; //
+l_serialMsgQ = 0x80145880; //
+serialMsgBuf = 0x80145898; //
+gSystemHeapSize = 0x8014589C; //
+SegmentBaseAddress = 0x801458A0; // size:0x40
padmgr_class = 0x801458E0; // size:0x480
B_80145D70_jp = 0x80145D70; //
B_80145D80_jp = 0x80145D80; //
@@ -6310,11 +6310,11 @@ B_FLT_8014629C_jp = 0x8014629C; // type:f32
B_FLT_801462A0_jp = 0x801462A0; // type:f32
Matrix_stack = 0x801462B0; //
Matrix_now = 0x801462B4; //
-B_801462C0_jp = 0x801462C0; //
-B_80147AC0_jp = 0x80147AC0; //
-B_801480C0_jp = 0x801480C0; //
-B_801488C0_jp = 0x801488C0; //
-B_80148DC0_jp = 0x80148DC0; //
+graphStack = 0x801462C0; //
+schedStack = 0x80147AC0; //
+audioStack = 0x801480C0; //
+padmgrStack = 0x801488C0; //
+irqmgrStack = 0x80148DC0; //
zuruKeyCheck = 0x801492C0; //
B_801492E0_jp = 0x801492E0; //
B_801492F0_jp = 0x801492F0; //
diff --git a/src/boot/idle.c b/src/boot/idle.c
index 003c44d..ba550c4 100644
--- a/src/boot/idle.c
+++ b/src/boot/idle.c
@@ -26,7 +26,7 @@ void Main_ThreadEntry(void* arg) {
DmaMgr_RequestSyncDebug(SEGMENT_VRAM_START(code), SEGMENT_ROM_START(code), SEGMENT_ROM_SIZE_ALT(code), "../idle.c",
53);
bzero(SEGMENT_BSS_START(code), SEGMENT_BSS_SIZE(code));
- func_800D66D0_jp(arg);
+ mainproc(arg);
DmaMgr_Stop();
}
diff --git a/src/code/c_keyframe.c b/src/code/c_keyframe.c
index eec880c..ce90cef 100644
--- a/src/code/c_keyframe.c
+++ b/src/code/c_keyframe.c
@@ -718,13 +718,13 @@ void cKF_SkeletonInfo_R_init_reverse_setspeedandmorphandmode(SkeletonInfoR* skel
void func_80053384_jp(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, UNK_PTR* arg6, UNK_PTR* arg7,
UNK_PTR* arg8) {
if (arg3 != 0) {
- gSegments[arg0] = (uintptr_t)OS_K0_TO_PHYSICAL(arg6);
+ SegmentBaseAddress[arg0] = (uintptr_t)OS_K0_TO_PHYSICAL(arg6);
}
if (arg4 != 0) {
- gSegments[arg1] = (uintptr_t)OS_K0_TO_PHYSICAL(arg7);
+ SegmentBaseAddress[arg1] = (uintptr_t)OS_K0_TO_PHYSICAL(arg7);
}
if (arg5 != 0) {
- gSegments[arg2] = (uintptr_t)OS_K0_TO_PHYSICAL(arg8);
+ SegmentBaseAddress[arg2] = (uintptr_t)OS_K0_TO_PHYSICAL(arg8);
}
}
@@ -887,14 +887,14 @@ s32 cKF_SkeletonInfo_R_combine_play(SkeletonInfoR* skeletonInfo1, SkeletonInfoR*
joint = (!IS_ZERO(skeletonInfo1->morphCounter)) ? (s16*)skeletonInfo1->morphTable : (s16*)skeletonInfo1->jointTable;
if (arg4 != 0) {
- sp44 = OS_PHYSICAL_TO_K0(gSegments[arg2]);
- gSegments[arg2] = (uintptr_t)OS_K0_TO_PHYSICAL(arg4);
+ sp44 = OS_PHYSICAL_TO_K0(SegmentBaseAddress[arg2]);
+ SegmentBaseAddress[arg2] = (uintptr_t)OS_K0_TO_PHYSICAL(arg4);
cKF_SkeletonInfo_R_combine_work_set(&combine3, skeletonInfo1);
}
if (arg5 != 0) {
- sp40 = OS_PHYSICAL_TO_K0(gSegments[arg3]);
- gSegments[arg3] = (uintptr_t)OS_K0_TO_PHYSICAL(arg5);
+ sp40 = OS_PHYSICAL_TO_K0(SegmentBaseAddress[arg3]);
+ SegmentBaseAddress[arg3] = (uintptr_t)OS_K0_TO_PHYSICAL(arg5);
cKF_SkeletonInfo_R_combine_work_set(&combine2, skeletonInfo2);
cKF_SkeletonInfo_R_combine_work_set(&combine1, skeletonInfo2);
}
@@ -965,18 +965,18 @@ void cKF_SkeletonInfo_R_T_combine_play(s32* arg0, s32* arg1, s32* arg2, Skeleton
spAC = (!IS_ZERO(skeletonInfo1->morphCounter)) ? (s16*)skeletonInfo1->morphTable : (s16*)skeletonInfo1->jointTable;
if (arg9 != 0) {
- sp48 = OS_PHYSICAL_TO_K0(gSegments[arg6]);
- gSegments[arg6] = (uintptr_t)OS_K0_TO_PHYSICAL(arg9);
+ sp48 = OS_PHYSICAL_TO_K0(SegmentBaseAddress[arg6]);
+ SegmentBaseAddress[arg6] = (uintptr_t)OS_K0_TO_PHYSICAL(arg9);
cKF_SkeletonInfo_R_combine_work_set(&sp4C, skeletonInfo1);
}
if (argA != 0) {
- sp44 = OS_PHYSICAL_TO_K0(gSegments[arg7]);
- gSegments[arg7] = (uintptr_t)OS_K0_TO_PHYSICAL(argA);
+ sp44 = OS_PHYSICAL_TO_K0(SegmentBaseAddress[arg7]);
+ SegmentBaseAddress[arg7] = (uintptr_t)OS_K0_TO_PHYSICAL(argA);
cKF_SkeletonInfo_R_combine_work_set(&sp6C, skeletonInfo2);
}
if (argB != 0) {
- sp40 = OS_PHYSICAL_TO_K0(gSegments[arg8]);
- gSegments[arg8] = (uintptr_t)OS_K0_TO_PHYSICAL(argB);
+ sp40 = OS_PHYSICAL_TO_K0(SegmentBaseAddress[arg8]);
+ SegmentBaseAddress[arg8] = (uintptr_t)OS_K0_TO_PHYSICAL(argB);
cKF_SkeletonInfo_R_combine_work_set(&sp8C, skeletonInfo3);
}
diff --git a/src/code/m_actor.c b/src/code/m_actor.c
index 8995617..e59d78f 100644
--- a/src/code/m_actor.c
+++ b/src/code/m_actor.c
@@ -192,7 +192,7 @@ void Actor_ct(Actor* actor, Game_Play* game_play) {
Shape_Info_init(actor, 0.0f, NULL, 0.0f, 0.0f);
if (Actor_data_bank_dma_end_check(actor, game_play) == 1) {
- gSegments[6] = (uintptr_t)OS_K0_TO_PHYSICAL(temp_a0->status[actor->unk_026].segment);
+ SegmentBaseAddress[6] = (uintptr_t)OS_K0_TO_PHYSICAL(temp_a0->status[actor->unk_026].segment);
actor->ct(actor, game_play);
actor->ct = NULL;
}
@@ -263,7 +263,7 @@ void Actor_draw(Game_Play* game_play, Actor* actor) {
{
void* segment = game_play->objectExchangeBank.status[(void)0, actor->unk_026].segment;
- gSegments[6] = (uintptr_t)OS_PHYSICAL_TO_K0(segment);
+ SegmentBaseAddress[6] = (uintptr_t)OS_PHYSICAL_TO_K0(segment);
gSPSegment(POLY_OPA_DISP++, 0x06, segment);
gSPSegment(POLY_XLU_DISP++, 0x06, segment);
@@ -441,7 +441,7 @@ void Actor_info_call_actor(Game_Play* game_play, ActorInfo* actorInfo) {
if (actor->ct != NULL) {
if (Actor_data_bank_dma_end_check(actor, game_play) == 1) {
- gSegments[6] =
+ SegmentBaseAddress[6] =
(uintptr_t)OS_K0_TO_PHYSICAL(game_play->objectExchangeBank.status[actor->unk_026].segment);
game_play->state.unk_9D = 0x98;
@@ -478,7 +478,7 @@ void Actor_info_call_actor(Game_Play* game_play, ActorInfo* actorInfo) {
actor->flags &= ~ACTOR_FLAG_1000000;
if ((actor->flags & (ACTOR_FLAG_40 | ACTOR_FLAG_10)) || (actor->part == ACTOR_PART_NPC)) {
- gSegments[6] =
+ SegmentBaseAddress[6] =
(uintptr_t)OS_K0_TO_PHYSICAL(game_play->objectExchangeBank.status[actor->unk_026].segment);
game_play->state.unk_9D = 0xA1;
actor->update(actor, game_play);
@@ -833,9 +833,9 @@ Actor* Actor_info_make_actor(ActorInfo* actorInfo, Game_Play* game_play, s16 act
{
uintptr_t segmentTemp;
- segmentTemp = gSegments[6];
+ segmentTemp = SegmentBaseAddress[6];
Actor_ct(sp68, game_play);
- gSegments[6] = segmentTemp;
+ SegmentBaseAddress[6] = segmentTemp;
}
return sp68;
diff --git a/src/code/m_scene.c b/src/code/m_scene.c
index f47457a..024d459 100644
--- a/src/code/m_scene.c
+++ b/src/code/m_scene.c
@@ -448,7 +448,7 @@ void mSc_data_bank_ct(Game_Play* game_play, ObjectExchangeBank* objectExchangeBa
objectExchangeBank->unk1810[0] = temp_v0;
objectExchangeBank->unk1810[1] = temp_v0;
func_800C5B74_jp(objectExchangeBank, GAMEPLAY_KEEP);
- gSegments[4] = (uintptr_t)OS_PHYSICAL_TO_K0(objectExchangeBank->status[0].segment);
+ SegmentBaseAddress[4] = (uintptr_t)OS_PHYSICAL_TO_K0(objectExchangeBank->status[0].segment);
}
void mSc_decide_exchange_bank(ObjectExchangeBank* objectExchangeBank) {
diff --git a/src/code/main.c b/src/code/main.c
index 3dd5e37..0cd4e26 100644
--- a/src/code/main.c
+++ b/src/code/main.c
@@ -1,13 +1,36 @@
#include "main.h"
-#include "zurumode.h"
-#include "fault.h"
+#include "6FB340.h"
+#include "6FD190.h"
+#include "audioMgr.h"
#include "code_variables.h"
-#include "macros.h"
+#include "fault.h"
#include "game.h"
-#include "audioMgr.h"
+#include "getcurrentms.h"
#include "graph.h"
+#include "irqmgr.h"
+#include "libu64/stackcheck.h"
#include "m_debug.h"
-#include "getcurrentms.h"
+#include "m_flashrom.h"
+#include "m_thread.h"
+#include "macros.h"
+#include "padmgr.h"
+#include "segment_symbols.h"
+#include "sys_initial_check.h"
+#include "sys_stacks.h"
+#include "system_heap.h"
+#include "zurumode.h"
+
+OSThread graphThread;
+StackEntry graphStackInfo;
+StackEntry schedStackInfo;
+StackEntry audioStackInfo;
+StackEntry padmgrStackInfo;
+StackEntry irqmgrStackInfo;
+OSMesgQueue l_serialMsgQ;
+OSMesg serialMsgBuf[1];
+size_t gSystemHeapSize;
+
+uintptr_t SegmentBaseAddress[NUM_SEGMENTS];
void func_800D64E0_jp(void) {
u32 baseTime;
@@ -35,8 +58,8 @@ void func_800D64E0_jp(void) {
if ((graphReg != 0) || (audioReg != 0)) {
FaultDrawer_SetDrawerFB(osViGetCurrentFramebuffer(), SCREEN_WIDTH, SCREEN_HEIGHT);
- FaultDrawer_SetForeColor(65535);
- FaultDrawer_SetBackColor(32769);
+ FaultDrawer_SetForeColor(GPACK_RGBA5551(255, 255, 255, 1));
+ FaultDrawer_SetBackColor(GPACK_RGBA5551(128, 0, 0, 1));
FaultDrawer_SetCharPad(0, 0);
if (graphReg != 0) {
unk9D = (game_class_p != NULL) ? game_class_p->unk_9D : 0;
@@ -44,16 +67,93 @@ void func_800D64E0_jp(void) {
unk9C = (game_class_p != NULL) ? game_class_p->unk_9C : 0;
FaultDrawer_DrawText(24, 16, "GRAPH INF.LOOP %2d %3d %3d %6lu", B_80145370_jp, unk9D, unk9C, graphTime);
- fault_DrawStackTrace(&graphThread, 0x20, 0x1A, 0xA);
+ fault_DrawStackTrace(&graphThread, 32, 26, 10);
}
if (audioReg != 0) {
FaultDrawer_DrawText(24, 126, "AUDIO INF.LOOP %2d %3d %6lu", audiomgr_class.unk_28A, D_80113854_jp,
audioTime);
- fault_DrawStackTrace(&audiomgr_class.thread, 0x20, 0x88, 0xA);
+ fault_DrawStackTrace(&audiomgr_class.thread, 32, 136, 10);
}
FaultDrawer_WritebackFBDCache();
}
}
}
-#pragma GLOBAL_ASM("asm/jp/nonmatchings/code/main/func_800D66D0_jp.s")
+void mainproc(void* arg) {
+ IrqmgrClient client;
+ OSMesgQueue irqMsgQueue;
+ OSMesg irqMsgBuf[10];
+ uintptr_t fb;
+ uintptr_t sysHeap;
+ s16* msg;
+
+ ScreenWidth = SCREEN_WIDTH;
+ ScreenHeight = SCREEN_HEIGHT;
+
+ fault_Init();
+ Check_RegionIsSupported();
+
+ fb = func_800D94F0_jp();
+ sysHeap = (uintptr_t)SEGMENT_VRAM_END(buffers);
+ gSystemHeapSize = fb - sysHeap;
+ SystemHeap_Init((void*)sysHeap, gSystemHeapSize);
+
+ func_800D9524_jp();
+
+ func_800D955C_jp(0);
+ func_800D955C_jp(1);
+ func_800D955C_jp(2);
+ func_800D955C_jp(3);
+
+ func_8008EE24_jp();
+
+ new_Debug_mode();
+ SREG(0) = 0;
+
+ osCreateMesgQueue(&l_serialMsgQ, serialMsgBuf, ARRAY_COUNT(serialMsgBuf));
+ osSetEventMesg(OS_EVENT_SI, &l_serialMsgQ, NULL);
+
+ osCreateMesgQueue(&irqMsgQueue, irqMsgBuf, ARRAY_COUNT(irqMsgBuf));
+ StackCheck_Init(&irqmgrStackInfo, irqmgrStack, STACK_TOP(irqmgrStack), 0, 0x100, "irqmgr");
+ CreateIRQManager(STACK_TOP(irqmgrStack), M_PRIORITY_IRQMGR, 1);
+
+ StackCheck_Init(&schedStackInfo, schedStack, STACK_TOP(schedStack), 0, 0x100, "sched");
+ func_800D87C0_jp(STACK_TOP(schedStack), M_PRIORITY_SCHED);
+
+ irqmgr_AddClient(&client, &irqMsgQueue);
+
+ StackCheck_Init(&audioStackInfo, audioStack, STACK_TOP(audioStack), 0, 0x100, "audio");
+ func_800D2AD0_jp(STACK_TOP(audioStack), M_PRIORITY_AUDIOMGR, M_THREAD_ID_AUDIOMGR);
+
+ StackCheck_Init(&padmgrStackInfo, padmgrStack, STACK_TOP(padmgrStack), 0, 0x100, "padmgr");
+ padmgr_Init(&l_serialMsgQ, 7, M_PRIORITY_PADMGR, STACK_TOP(padmgrStack));
+
+ func_800D2AA0_jp();
+
+ StackCheck_Init(&graphStackInfo, &graphStack, STACK_TOP(graphStack), 0, 0x100, "graph");
+ osCreateThread(&graphThread, M_THREAD_ID_GRAPH, graph_proc, arg, STACK_TOP(graphStack), M_PRIORITY_GRAPH);
+ osStartThread(&graphThread);
+
+ osSetThreadPri(NULL, M_PRIORITY_MAIN_HIGH);
+
+ while (true) {
+ msg = NULL;
+
+ while (irqMsgQueue.validCount != 0) {
+ osRecvMesg(&irqMsgQueue, NULL, OS_MESG_NOBLOCK);
+ }
+
+ osRecvMesg(&irqMsgQueue, (OSMesg*)&msg, OS_MESG_BLOCK);
+ if (msg == NULL) {
+ break;
+ }
+
+ switch (*msg) {
+ case OS_SC_RETRACE_MSG:
+ if ((zurumode_flag != 0) && (fault_class.msgId == 0) && (D_8010F3E8_jp != 0)) {
+ func_800D64E0_jp();
+ }
+ break;
+ }
+ }
+}
diff --git a/src/code/sys_stacks.c b/src/code/sys_stacks.c
new file mode 100644
index 0000000..2a31d95
--- /dev/null
+++ b/src/code/sys_stacks.c
@@ -0,0 +1,7 @@
+#include "sys_stacks.h"
+
+STACK(graphStack, 0x1800);
+STACK(schedStack, 0x600);
+STACK(audioStack, 0x800);
+STACK(padmgrStack, 0x500);
+STACK(irqmgrStack, 0x500);
diff --git a/src/overlays/actors/ovl_Dump/ac_dump.c b/src/overlays/actors/ovl_Dump/ac_dump.c
index 9897276..a58e8d1 100644
--- a/src/overlays/actors/ovl_Dump/ac_dump.c
+++ b/src/overlays/actors/ovl_Dump/ac_dump.c
@@ -186,7 +186,7 @@ void aDUM_actor_draw(UNUSED Actor* thisx, Game_Play* game_play) {
OPEN_POLY_OPA_DISP(gfxCtx);
gSPSegment(__polyOpa++, 0x08, palette);
- gSegments[6] = (uintptr_t)OS_PHYSICAL_TO_K0(object);
+ SegmentBaseAddress[6] = (uintptr_t)OS_PHYSICAL_TO_K0(object);
gSPSegment(__polyOpa++, 0x06, object);
Matrix_translate(-6000.0f, 0.0f, -10000.0f, 1);
diff --git a/src/overlays/actors/ovl_Goza/ac_goza.c b/src/overlays/actors/ovl_Goza/ac_goza.c
index 59adcc8..d3a4f37 100644
--- a/src/overlays/actors/ovl_Goza/ac_goza.c
+++ b/src/overlays/actors/ovl_Goza/ac_goza.c
@@ -150,7 +150,7 @@ void aGOZ_actor_draw(Actor* thisx UNUSED, Game_Play* game_play) {
OPEN_SHADOW_DISP(gfxCtx);
gSPSegment(__shadow_gfx++, G_MWO_SEGMENT_8, palette);
- gSegments[6] = (uintptr_t)OS_PHYSICAL_TO_K0(object);
+ SegmentBaseAddress[6] = (uintptr_t)OS_PHYSICAL_TO_K0(object);
gSPSegment(__shadow_gfx++, G_MWO_SEGMENT_6, object);
gDPSetPrimColor(__shadow_gfx++, 0, 0x80, 255, 255, 255, 255);
diff --git a/src/overlays/actors/ovl_Kago/ac_kago.c b/src/overlays/actors/ovl_Kago/ac_kago.c
index 60867fb..de03554 100644
--- a/src/overlays/actors/ovl_Kago/ac_kago.c
+++ b/src/overlays/actors/ovl_Kago/ac_kago.c
@@ -125,7 +125,7 @@ void aKAG_actor_draw(Actor* thisx, Game_Play* game_play) {
_texture_z_light_fog_prim(gfxCtx);
OPEN_POLY_OPA_DISP(gfxCtx);
gSPSegment(__polyOpa++, 0x08, palette);
- gSegments[6] = (uintptr_t)OS_PHYSICAL_TO_K0(object);
+ SegmentBaseAddress[6] = (uintptr_t)OS_PHYSICAL_TO_K0(object);
gSPSegment(__polyOpa++, 0x06, object);
gSPMatrix(__polyOpa++, mtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(__polyOpa++, model[this->structureActor.unk_2B4]);
diff --git a/src/overlays/actors/ovl_Koinobori/ac_koinobori.c b/src/overlays/actors/ovl_Koinobori/ac_koinobori.c
index c92b162..8b5511d 100644
--- a/src/overlays/actors/ovl_Koinobori/ac_koinobori.c
+++ b/src/overlays/actors/ovl_Koinobori/ac_koinobori.c
@@ -44,7 +44,8 @@ ShadowData aKOI_shadow_data = { 8, aKOI_shadow_vtx_fix_flg_table, 60.0f, obj_e_k
void aKOI_actor_ct(Actor* thisx, Game_Play* game_play UNUSED) {
Koinobori* this = THIS;
- gSegments[6] = OS_K0_TO_PHYSICAL(common_data.clip.structureClip->getObjectSegment(STRUCTURE_TYPE_KOINOBORI));
+ SegmentBaseAddress[6] =
+ OS_K0_TO_PHYSICAL(common_data.clip.structureClip->getObjectSegment(STRUCTURE_TYPE_KOINOBORI));
cKF_SkeletonInfo_R_ct(&this->structureActor.skeletonInfo, &cKF_bs_r_obj_e_koinobori, 0,
this->structureActor.jointTable, this->structureActor.morphTable);
aKOI_set_bgOffset(this, 1);
@@ -101,7 +102,8 @@ void aKOI_actor_move(Actor* thisx, Game_Play* game_play) {
return;
}
- gSegments[6] = OS_K0_TO_PHYSICAL(common_data.clip.structureClip->getObjectSegment(STRUCTURE_TYPE_KOINOBORI));
+ SegmentBaseAddress[6] =
+ OS_K0_TO_PHYSICAL(common_data.clip.structureClip->getObjectSegment(STRUCTURE_TYPE_KOINOBORI));
cKF_SkeletonInfo_R_play(&this->structureActor.skeletonInfo);
((KoinoboriActionFunc)this->structureActor.process)(this, game_play);
sAdo_OngenPos((uintptr_t)this, 0x35, &this->structureActor.actor.world.pos);
@@ -137,7 +139,7 @@ void aKOI_actor_draw(Actor* thisx, Game_Play* game_play) {
gSPSegment(__polyOpa++, 0x08, palette);
gSPSegment(__polyOpa++, 0x09, Lib_SegmentedToVirtual(&obj_e_koinobori_b_pal));
gSPSegment(__polyOpa++, 0x0A, Lib_SegmentedToVirtual(&aKOI_obj_e_koinobori_a_pal));
- gSegments[6] = OS_K0_TO_PHYSICAL(object);
+ SegmentBaseAddress[6] = OS_K0_TO_PHYSICAL(object);
gSPSegment(__polyOpa++, 0x06, object);
CLOSE_POLY_OPA_DISP(gfxCtx);
cKF_Si3_draw_R_SV(game_play, &this->structureActor.skeletonInfo, mtx, NULL, NULL, this);
diff --git a/src/overlays/actors/ovl_Mikuji/ac_mikuji.c b/src/overlays/actors/ovl_Mikuji/ac_mikuji.c
index bf34f3c..552acce 100644
--- a/src/overlays/actors/ovl_Mikuji/ac_mikuji.c
+++ b/src/overlays/actors/ovl_Mikuji/ac_mikuji.c
@@ -145,7 +145,7 @@ void aMIK_actor_draw(UNUSED Actor* actor, Game_Play* play) {
_texture_z_light_fog_prim_npc(graph);
OPEN_POLY_OPA_DISP(graph);
gSPSegment(__polyOpa++, G_MWO_SEGMENT_8, pal);
- gSegments[6] = OS_K0_TO_PHYSICAL(obj);
+ SegmentBaseAddress[6] = OS_K0_TO_PHYSICAL(obj);
gSPSegment(__polyOpa++, G_MWO_SEGMENT_6, obj);
gSPMatrix(__polyOpa++, cur, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
diff --git a/src/overlays/actors/ovl_Radio/ac_radio.c b/src/overlays/actors/ovl_Radio/ac_radio.c
index 30108c9..3adca63 100644
--- a/src/overlays/actors/ovl_Radio/ac_radio.c
+++ b/src/overlays/actors/ovl_Radio/ac_radio.c
@@ -121,7 +121,7 @@ void aRAD_actor_draw(UNUSED Actor* thisx, Game_Play* game_play) {
_texture_z_light_fog_prim_npc(gfxCtx);
OPEN_POLY_OPA_DISP(gfxCtx);
gSPSegment(__polyOpa++, 0x08, palette);
- gSegments[6] = (uintptr_t)OS_PHYSICAL_TO_K0(object);
+ SegmentBaseAddress[6] = (uintptr_t)OS_PHYSICAL_TO_K0(object);
gSPSegment(__polyOpa++, 0x06, object);
gSPMatrix(__polyOpa++, mtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(__polyOpa++, &aRAD_model);
diff --git a/src/overlays/actors/ovl_Tama/ac_tama.c b/src/overlays/actors/ovl_Tama/ac_tama.c
index bb1b2ec..dedd988 100644
--- a/src/overlays/actors/ovl_Tama/ac_tama.c
+++ b/src/overlays/actors/ovl_Tama/ac_tama.c
@@ -110,7 +110,7 @@ void aTAM_actor_draw(Actor* thisx, Game_Play* game_play) {
OPEN_POLY_OPA_DISP(gfxCtx);
gSPSegment(__polyOpa++, 0x08, palette);
- gSegments[6] = (uintptr_t)OS_PHYSICAL_TO_K0(object);
+ SegmentBaseAddress[6] = (uintptr_t)OS_PHYSICAL_TO_K0(object);
gSPSegment(__polyOpa++, 0x06, object);
Matrix_translate(0.0f, 0.0f, 4000.0f, 1);
mtx = _Matrix_to_Mtx_new(gfxCtx);
diff --git a/src/overlays/actors/ovl_Toudai/ac_toudai.c b/src/overlays/actors/ovl_Toudai/ac_toudai.c
index 16cced7..3097bdb 100644
--- a/src/overlays/actors/ovl_Toudai/ac_toudai.c
+++ b/src/overlays/actors/ovl_Toudai/ac_toudai.c
@@ -52,7 +52,7 @@ void aTOU_actor_ct(Actor* thisx, Game_Play* game_play UNUSED) {
static BaseSkeletonR* skl[] = { &cKF_bs_r_obj_s_toudai, &cKF_bs_r_obj_w_toudai };
s32 type = (common_data.time.season == WINTER);
- gSegments[6] = OS_K0_TO_PHYSICAL(common_data.clip.structureClip->getObjectSegment(STRUCTURE_TYPE_TOUDAI));
+ SegmentBaseAddress[6] = OS_K0_TO_PHYSICAL(common_data.clip.structureClip->getObjectSegment(STRUCTURE_TYPE_TOUDAI));
cKF_SkeletonInfo_R_ct(&this->structureActor.skeletonInfo, skl[type], NULL, this->structureActor.jointTable,
this->structureActor.morphTable);
aTOU_set_bgOffset(this, 1);
@@ -190,7 +190,7 @@ void aTOU_setup_action(Toudai* this, s32 processIndex) {
void aTOU_actor_move(Actor* thisx, Game_Play* game_play) {
Toudai* this = THIS;
- gSegments[6] = OS_K0_TO_PHYSICAL(common_data.clip.structureClip->getObjectSegment(STRUCTURE_TYPE_TOUDAI));
+ SegmentBaseAddress[6] = OS_K0_TO_PHYSICAL(common_data.clip.structureClip->getObjectSegment(STRUCTURE_TYPE_TOUDAI));
this->structureActor.unk_174 = cKF_SkeletonInfo_R_play(&this->structureActor.skeletonInfo);
this->structureActor.unk_1E8 = this->structureActor.skeletonInfo.frameControl.currentFrame;
((ToudaiActionFunc)this->structureActor.process)(this, game_play);
@@ -276,7 +276,7 @@ void aTOU_actor_draw(Actor* thisx, Game_Play* game_play) {
_texture_z_light_fog_prim_npc(gfxCtx);
OPEN_POLY_OPA_DISP(gfxCtx);
gSPSegment(__polyOpa++, 0x8, palette);
- gSegments[6] = OS_K0_TO_PHYSICAL(object);
+ SegmentBaseAddress[6] = OS_K0_TO_PHYSICAL(object);
gSPSegment(__polyOpa++, 0x6, object);
CLOSE_POLY_OPA_DISP(gfxCtx);
diff --git a/src/overlays/actors/ovl_Weather/ac_weather.c b/src/overlays/actors/ovl_Weather/ac_weather.c
index ebbc4d4..12fa5eb 100644
--- a/src/overlays/actors/ovl_Weather/ac_weather.c
+++ b/src/overlays/actors/ovl_Weather/ac_weather.c
@@ -494,7 +494,7 @@ void aWeather_DrawWeatherPrv(Actor* thisx, Game_Play* play) {
s32 i;
_texture_z_light_fog_prim_xlu(play->state.gfxCtx);
- gSegments[6] = OS_K0_TO_PHYSICAL(this->segment);
+ SegmentBaseAddress[6] = OS_K0_TO_PHYSICAL(this->segment);
OPEN_DISPS(play->state.gfxCtx);
@@ -537,7 +537,7 @@ void aWeather_MoveWeatherPrv(Weather* this, Game_Play* play) {
s32 i;
if ((this->currentProfile != NULL) && (priv != NULL) && (this->currentProfile->mv != NULL)) {
- gSegments[6] = OS_K0_TO_PHYSICAL(this->segment);
+ SegmentBaseAddress[6] = OS_K0_TO_PHYSICAL(this->segment);
OPEN_DISPS(play->state.gfxCtx);
diff --git a/src/overlays/gamestates/ovl_cpedit/m_cpedit.c b/src/overlays/gamestates/ovl_cpedit/m_cpedit.c
index 7b8fa00..55dc518 100644
--- a/src/overlays/gamestates/ovl_cpedit/m_cpedit.c
+++ b/src/overlays/gamestates/ovl_cpedit/m_cpedit.c
@@ -34,7 +34,7 @@ void func_80804930_jp(Game_CPEdit* edit) {
SET_NEXT_GAMESTATE((Game*)edit, trademark_init, sizeof(Game_Trademark));
}
- gSegments[4] = OS_K0_TO_PHYSICAL(segment);
+ SegmentBaseAddress[4] = OS_K0_TO_PHYSICAL(segment);
OPEN_DISPS(graph);
diff --git a/src/overlays/gamestates/ovl_play/m_play.c b/src/overlays/gamestates/ovl_play/m_play.c
index 1cbd4a2..44dea63 100644
--- a/src/overlays/gamestates/ovl_play/m_play.c
+++ b/src/overlays/gamestates/ovl_play/m_play.c
@@ -482,8 +482,8 @@ void Game_play_move(Game_Play* game_play) {
game_play->state.unk_9D = 0x8D;
game_play->state.unk_9C = 1;
Game_play_Reset_destiny();
- gSegments[4] = (uintptr_t)OS_K0_TO_PHYSICAL(p->status[0].segment);
- gSegments[2] = (uintptr_t)OS_K0_TO_PHYSICAL(game_play->unk_010C);
+ SegmentBaseAddress[4] = (uintptr_t)OS_K0_TO_PHYSICAL(p->status[0].segment);
+ SegmentBaseAddress[2] = (uintptr_t)OS_K0_TO_PHYSICAL(game_play->unk_010C);
game_play->state.unk_9C = 2;
if (zurumode_flag >= 2) {
@@ -536,8 +536,8 @@ void Game_play_move(Game_Play* game_play) {
void func_80803810_jp(Game_Play* game_play, GraphicsContext* gfxCtx) {
void* temp_v0 = game_play->objectExchangeBank.status[0].segment;
- gSegments[4] = (uintptr_t)OS_K0_TO_PHYSICAL(temp_v0);
- gSegments[2] = (uintptr_t)OS_K0_TO_PHYSICAL(game_play->unk_010C);
+ SegmentBaseAddress[4] = (uintptr_t)OS_K0_TO_PHYSICAL(temp_v0);
+ SegmentBaseAddress[2] = (uintptr_t)OS_K0_TO_PHYSICAL(game_play->unk_010C);
OPEN_DISPS(gfxCtx);
@@ -861,7 +861,7 @@ void Gameplay_Scene_Read(Game_Play* game_play, s16 arg1) {
game_play->unk_00E0 = arg1;
game_play->unk_010C = func_80804138_jp(game_play, sp1C);
sp1C->unk_13 = 0;
- gSegments[2] = (uintptr_t)OS_K0_TO_PHYSICAL(game_play->unk_010C);
+ SegmentBaseAddress[2] = (uintptr_t)OS_K0_TO_PHYSICAL(game_play->unk_010C);
Gameplay_Scene_Init(game_play);
sAdo_RoomType(mPl_SceneNo2SoundRoomType(common_data.save.sceneNo));
}
diff --git a/yamls/jp/buffers.yaml b/yamls/jp/buffers.yaml
new file mode 100644
index 0000000..eecfa13
--- /dev/null
+++ b/yamls/jp/buffers.yaml
@@ -0,0 +1,9 @@
+ - name: buffers
+ type: code
+ start: 0x73F4D0
+ vram: 0x801524C0
+ follows_vram: code
+ notdma: True
+ bss_size: 0x42420
+ subsegments:
+ - { start: 0x73F4D0, type: bss, vram: 0x801524C0, name: buffers/801524C0}
diff --git a/yamls/jp/code.yaml b/yamls/jp/code.yaml
index 78c21c8..5913b5c 100644
--- a/yamls/jp/code.yaml
+++ b/yamls/jp/code.yaml
@@ -328,9 +328,10 @@
- { start: 0x73F4D0, type: bss, vram: 0x80145060, name: code/80145060 }
- { start: 0x73F4D0, type: .bss, vram: 0x80145390, name: code/irqmgr }
- { start: 0x73F4D0, type: .bss, vram: 0x80145620, name: code/lb_rtc}
- - { start: 0x73F4D0, type: bss, vram: 0x80145630, name: code/80145630}
+ - { start: 0x73F4D0, type: .bss, vram: 0x80145630, name: code/main}
+ - { start: 0x73F4D0, type: bss, vram: 0x801458E0, name: code/801458E0}
- { start: 0x73F4D0, type: .bss, vram: 0x801462B0, name: code/sys_matrix }
- - { start: 0x73F4D0, type: bss, vram: 0x801462C0, name: code/801462C0 }
+ - { start: 0x73F4D0, type: .bss, vram: 0x801462C0, name: code/sys_stacks }
- { start: 0x73F4D0, type: .bss, vram: 0x801492C0, name: code/zurumode }
- { start: 0x73F4D0, type: bss, vram: 0x801492D0, name: code/801492D0 }
- { start: 0x73F4D0, type: .bss, vram: 0x80152480, name: code/lbrtc/722570}