diff --git a/include/dolphin/vi/vitypes.h b/include/dolphin/vi/vitypes.h index 90a93a5..fbc0d70 100644 --- a/include/dolphin/vi/vitypes.h +++ b/include/dolphin/vi/vitypes.h @@ -19,18 +19,18 @@ typedef void (*VIRetraceCallback)(u32 retraceCount); typedef enum VITVMode { - VI_TVMODE_NTSC_INT = VI_TVMODE(VI_NTSC, VI_INTERLACE), - VI_TVMODE_NTSC_DS = VI_TVMODE(VI_NTSC, VI_NON_INTERLACE), - VI_TVMODE_NTSC_PROG = VI_TVMODE(VI_NTSC, VI_PROGRESSIVE), - VI_TVMODE_PAL_INT = VI_TVMODE(VI_PAL, VI_INTERLACE), - VI_TVMODE_PAL_DS = VI_TVMODE(VI_PAL, VI_NON_INTERLACE), - VI_TVMODE_EURGB60_INT = VI_TVMODE(VI_EURGB60, VI_INTERLACE), - VI_TVMODE_EURGB60_DS = VI_TVMODE(VI_EURGB60, VI_NON_INTERLACE), - VI_TVMODE_MPAL_INT = VI_TVMODE(VI_MPAL, VI_INTERLACE), - VI_TVMODE_MPAL_DS = VI_TVMODE(VI_MPAL, VI_NON_INTERLACE), - VI_TVMODE_DEBUG_INT = VI_TVMODE(VI_DEBUG, VI_INTERLACE), - VI_TVMODE_DEBUG_PAL_INT = VI_TVMODE(VI_DEBUG_PAL, VI_INTERLACE), - VI_TVMODE_DEBUG_PAL_DS = VI_TVMODE(VI_DEBUG_PAL, VI_NON_INTERLACE) + VI_TVMODE_NTSC_INT = 0, // VI_TVMODE(VI_NTSC, VI_INTERLACE) + VI_TVMODE_NTSC_DS = 1, // VI_TVMODE(VI_NTSC, VI_NON_INTERLACE) + VI_TVMODE_NTSC_PROG = 2, // VI_TVMODE(VI_NTSC, VI_PROGRESSIVE) + VI_TVMODE_PAL_INT = 4, // VI_TVMODE(VI_PAL, VI_INTERLACE) + VI_TVMODE_PAL_DS = 5, // VI_TVMODE(VI_PAL, VI_NON_INTERLACE) + VI_TVMODE_EURGB60_INT = 20, // VI_TVMODE(VI_EURGB60, VI_INTERLACE) + VI_TVMODE_EURGB60_DS = 21, // VI_TVMODE(VI_EURGB60, VI_NON_INTERLACE) + VI_TVMODE_MPAL_INT = 8, // VI_TVMODE(VI_MPAL, VI_INTERLACE) + VI_TVMODE_MPAL_DS = 9, // VI_TVMODE(VI_MPAL, VI_NON_INTERLACE) + VI_TVMODE_DEBUG_INT = 12, // VI_TVMODE(VI_DEBUG, VI_INTERLACE) + VI_TVMODE_DEBUG_PAL_INT = 16, // VI_TVMODE(VI_DEBUG_PAL, VI_INTERLACE) + VI_TVMODE_DEBUG_PAL_DS = 17, // VI_TVMODE(VI_DEBUG_PAL, VI_NON_INTERLACE) } VITVMode; typedef enum VIXFBMode { diff --git a/include/emulator/rsp.h b/include/emulator/rsp.h index 241edba..306a994 100644 --- a/include/emulator/rsp.h +++ b/include/emulator/rsp.h @@ -2,6 +2,7 @@ #define _RSP_H #include "dolphin.h" +#include "emulator/xlList.h" #include "emulator/xlObject.h" #define GBI_COMMAND_HI(p) (((u32*)(p))[0]) @@ -116,6 +117,19 @@ typedef struct __anon_0x58107 { /* 0x0 */ s16 anSlice[8]; } __anon_0x58107; // size = 0x10 +typedef struct __anon_0x58360 { + /* 0x0 */ s16 r; + /* 0x2 */ s16 g; + /* 0x4 */ s16 b; + /* 0x6 */ s16 a; +} __anon_0x58360; // size = 0x8 + +typedef struct __anon_0x583EE { + /* 0x0 */ s16 y; + /* 0x2 */ s16 u; + /* 0x4 */ s16 v; +} __anon_0x583EE; // size = 0x6 + // __anon_0x5845E typedef struct Rsp { /* 0x0000 */ s32 nMode; diff --git a/tools/decompme.py b/tools/decompme.py index f4fe0d0..6b2f530 100755 --- a/tools/decompme.py +++ b/tools/decompme.py @@ -34,8 +34,19 @@ ELSE_PATTERN = re.compile(r"^#else") ENDIF_PATTERN = re.compile(r"^#endif") INCBIN_PATTERN = re.compile(r"^#pragma INCBIN\(.*\)") -# Defined preprocessor macros -defines = {"__MWERKS__"} +MACROS = [ + (re.compile(r"\bAT_ADDRESS\b\(.*\)"), ""), + (re.compile(r"\b_GX_TF_CTF\b"), "0x20"), + (re.compile(r"\b_GX_TF_ZTF\b"), "0x10"), + (re.compile(r"\bOS_THREAD_SPECIFIC_MAX\b"), "2"), + (re.compile(r"\bCARD_FILENAME_MAX\b"), "32"), + (re.compile(r"\bCARD_ICON_MAX\b"), "8"), + (re.compile(r"\bN64_FRAME_WIDTH\b"), "320"), + (re.compile(r"\bN64_FRAME_HEIGHT\b"), "240"), +] + +# Defined preprocessor macros (for conditions) +defines = set() # Stack of preprocessor conditions condition_stack = [True] @@ -74,10 +85,12 @@ def process_c_file(path: Path) -> str: out_text += f'/* "{path}" line {i + 1} "{include_file}" */\n' out_text += process_c_file(include_file) out_text += f'/* end "{include_file}" */\n' - elif INCBIN_PATTERN.match(line.strip()): + elif match := INCBIN_PATTERN.match(line.strip()): out_text += " 0" out_text += "\n" else: + for pattern, replacement in MACROS: + line = pattern.sub(replacement, line) out_text += line out_text += "\n"