refactor main and irqmgr

This commit is contained in:
Prakxo
2023-08-03 00:16:21 +02:00
parent ff9bf7e84f
commit fd35cf0e9b
13 changed files with 77 additions and 18 deletions
+4
View File
@@ -193,6 +193,10 @@ lb_reki.c:
.text: [0x8040752C, 0x80407AE8]
.rodata: [0x806437A0, 0x806437C0]
.data: [0x8065ECD8, 0x8065F110]
#main.c:
# .text: [0x80407AE8, 0x80407CF4]
# .data: [0x8065F110, 0x8065F138]
# .bss: [0x812F4CC0, 0x812F5038]
#sys_math.c:
# .text: [0x80408940, 0x80408A44]
# .rodata: [0x806437C0, 0x806437D0]
+1 -1
View File
@@ -7917,7 +7917,7 @@ global:
0x80407A78: lbRk_HarvestMoonDay
0x80407AE8: mainproc
0x80407C70: entry
0x80407CB9: foresta_main
0x80407CB8: foresta_main
0x80407CF4: padmgr_LockSerialMesgQ
0x80407D30: padmgr_UnlockSerialMesgQ
0x80407D64: padmgr_LockContData
+1 -2
View File
@@ -23,8 +23,7 @@ import common as c
# Check CodeWarrior was added
assert os.path.exists("tools/1.3.2/mwcceppc.exe") and \
os.path.exists("tools/1.2.5/mwcceppc.exe") and \
os.path.exists("tools/1.3.2/mwldeppc.exe"), \
os.path.exists("tools/1.2.5n/mwcceppc.exe"), \
"Error: Codewarrior not found!"
# Check binaries were added
+1
View File
@@ -70,6 +70,7 @@ typedef struct famicom_common_s {
typedef u8 (*FAMICOM_GETSAVECHAN_PROC)(int* player_no, int* slot_card_result);
extern void famicom_setCallback_getSaveChan(FAMICOM_GETSAVECHAN_PROC getSaveChan_proc);
extern int famicom_mount_archive();
extern int famicom_mount_archive_end_check();
#ifdef __cplusplus
+4
View File
@@ -47,6 +47,7 @@ enum resource_index {
extern void JW_Init();
extern void JW_Init2();
extern void JW_Init3();
extern void* JW_Alloc(size_t size, int align);
extern void JW_Free(void* ptr);
extern s32 JW_Resize(void* ptr, size_t new_size);
@@ -71,6 +72,9 @@ extern void* JC_JFWDisplay_getManager();
extern void JC_JFWDisplay_startFadeOut(void* manager, int len);
extern void JC_JFWDisplay_startFadeIn(void* manager, int len);
extern void JC_JKRAramHeap_dump(void* heap);
extern void* JC_JKRAram_getAramHeap();
extern int JC_JKRHeap_dump(void* heap);
extern s32 JC_JKRHeap_getTotalFreeSize(void* heap);
+19
View File
@@ -0,0 +1,19 @@
#ifndef SETTHREADPRI_H
#define SETTHREADPRI_H
#include "types.h"
#include "libultra/osThread.h"
#ifdef __cplusplus
extern "C" {
#endif
void osSetThreadPri(OSThread* thread, OSPri priority);
#ifdef __cplusplus
}
#endif
#endif
+1
View File
@@ -11,6 +11,7 @@ extern "C" {
extern u8 mCD_GetThisLandSlotNo_code(int* player_no, int* slot_card_results);
extern void mCD_save_data_aram_malloc();
extern void mCD_set_aram_save_data();
extern void mCD_init_card();
extern void mCD_PrintErrInfo(gfxprint_t* gfxprint);
extern void mCD_InitAll();
+1
View File
@@ -76,6 +76,7 @@ extern Debug_mode* debug_mode;
#define GETREG(reg, idx) ((s16)(REGADDR(reg, idx)))
#define SETREG(reg, idx, val) (REGADDR(reg, idx) = (val))
extern void new_Debug_mode();
#ifdef __cplusplus
};
#endif
+1
View File
@@ -220,6 +220,7 @@ extern mMsg_Window_c* mMsg_Get_base_window_p();
extern void mMsg_Set_free_str(mMsg_Window_c* msg, int free_str_no, u8* str, int str_size);
extern void mMsg_debug_draw(gfxprint_t* gfxprint);
extern void mMsg_aram_init();
extern void mMsg_aram_init2();
extern int mMsg_Check_MainHide(mMsg_Window_c* msg);
extern void mMsg_Set_item_str(mMsg_Window_c* msg_win, int str_no, u8* item_str, int str_len);
extern void mMsg_Set_mail_str(mMsg_Window_c* msg_win, int str_no, u8* str, int str_len);
+3
View File
@@ -5,6 +5,7 @@
#include "irqmgr.h"
#include "libu64/pad.h"
#include "dolphin/os/OSMessage.h"
#include "libultra/osThread.h"
#ifdef __cplusplus
extern "C" {
@@ -67,6 +68,8 @@ extern int padmgr_isConnectedController(int pad);
extern void padmgr_force_stop_ON();
extern void padmgr_force_stop_OFF();
extern void padmgr_RumbleSet(int pad, int intensity);
extern void padmgr_Create(OSMessageQueue* queue, OSId id, OSPri priority, void* stack, size_t stackSize);
extern void padmgr_Init(OSMessageQueue* queue);
#define padmgr_setClient(callback_proc, param) \
do { \
+6
View File
@@ -3,8 +3,14 @@
#include "types.h"
#define IRQMGR_STACK_SIZE 0x1000
#define PADMGR_STACK_SIZE 0x1000
#define GRAPH_STACK_SIZE 0x2000
extern u8 graphStack[];
extern u8 padmgrStack[];
extern u8 irqmgrStack[];
#endif
+34 -12
View File
@@ -1,12 +1,34 @@
#include "main.h"
#include "boot.h"
#include "irqmgr.h"
#include "sys_stacks.h"
#include "graph.h"
#include "libultra/osMesg.h"
#include "libultra/os_thread.h"
#include "libjsys/jsyswrapper.h"
#include "m_card.h"
#include "_mem.h"
#include "padmgr.h"
#include "libultra/setthreadpri.h"
#include "m_msg.h"
#include "Famicom/famicom.h"
#include "m_debug.h"
#include "libforest/osreport.h"
//TODO: actually add all the stacks and headers
void mainproc (void* val){
static OSMessageQueue l_serialMsgQ;
static OSMessage serialMsgBuf;
IrqMgrClient irqClient;
static OSMessageQueue l_serialMsgQ;
static OSMessage serialMsgBuf;
extern OSThread graphThread;
extern u8 SegmentBaseAddress[0x40];
int ScreenHeight = SCREEN_HEIGHT;
int ScreenWidth = SCREEN_WIDTH;
extern void mainproc (void* val){
irqmgr_client_t irqClient;
OSMessageQueue irqMgrMsgQueue;
OSMessage irqMsgBuf[10];
OSMessage msg;
@@ -33,7 +55,7 @@ void mainproc (void* val){
JW_EndFrame();
osStartThread(&graphThread);
osSetThreadPri(0, 5);
osSetThreadPri(NULL, 5);
JW_Init3();
mMsg_aram_init2();
@@ -41,7 +63,7 @@ void mainproc (void* val){
famicom_mount_archive();
JC_JKRAramHeap_dump(JC_JKRAram_getAramHeap());
osSetThreadPri(0, 13);
osSetThreadPri(NULL, 13);
do {
msg = NULL;
@@ -55,19 +77,19 @@ void mainproc (void* val){
u32 entry(void) { // TODO: debug_mode struct thing
padmgr_Init(0);
u32 entry(void) {
padmgr_Init(NULL);
new_Debug_mode();
debug_mode.idk = 0;
mainproc(0);
SETREG(SREG, 0, 0);
mainproc(NULL);
return 0;
}
void main_foresta(void){
void foresta_main(void){
OSReport("どうぶつの森 main2 開始");
HotStartEntry = (u32)&entry;
HotStartEntry = &entry;
}
+1 -3
View File
@@ -1,8 +1,6 @@
#include "types.h"
#define IRQMGR_STACK_SIZE 0x1000
#define PADMGR_STACK_SIZE 0x1000
#define GRAPH_STACK_SIZE 0x2000
#include "sys_stacks.h"
u8 graphStack[GRAPH_STACK_SIZE];
u8 padmgrStack [PADMGR_STACK_SIZE];