mirror of
https://github.com/zeldaret/oot
synced 2026-07-09 22:51:52 -04:00
Improve the state of handwritten assembly files (#865)
* Format all handwritten asm and document some * Use c preprocessor for constants * Fix * Fix PI_STATUS_ERROR, some label improvements * Avoid hi/lo for constants * Some more comments * Properly mark functions as functions and their sizes * Fix merge * Improvements * Review suggestions, rework procedure start/end macros to be more like libreultra * Move IPL3 symbol definitions into ipl3.s * Fix undefined_syms, add include and language guards to asm.h and fix the comment in gbi.h * Consistent hex capitalization, add some MIPS builtin defines to CC_CHECK to behave properly * Add -no-pad-sections assembler option and clean up alignment in gu files and bzero * Further suggestions and improvements * Matrix conversion function clarifications * Fix passing AVOID_UB to gcc * Suggestions * Suggestions, global interrupt mask improvements * Further suggestions, interrupt mask comments * Comments fixes, rdb.h * Switch from # comments to // comments, remove unnecesary .set gp=64 directives * Further review suggestions * Missed one
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
#ifndef BOOT_H
|
||||
#define BOOT_H
|
||||
|
||||
#define BOOT_STACK_SIZE 0x400
|
||||
|
||||
#endif
|
||||
@@ -85,12 +85,9 @@ void osViExtendVStart(u32 arg0);
|
||||
s32 osRecvMesg(OSMesgQueue* mq, OSMesg* msg, s32 flag);
|
||||
void __osInitialize_common(void);
|
||||
void __osInitialize_autodetect(void);
|
||||
void __osExceptionPreamble(void);
|
||||
// ? __osException(?);
|
||||
void __osEnqueueAndYield(OSThread**);
|
||||
void __osEnqueueThread(OSThread**, OSThread*);
|
||||
OSThread* __osPopThread(OSThread**);
|
||||
// ? __osNop(?);
|
||||
void __osDispatchThread(void);
|
||||
void __osCleanupThread(void);
|
||||
void __osDequeueThread(OSThread** queue, OSThread* thread);
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
#ifndef ASM_H
|
||||
#define ASM_H
|
||||
|
||||
#ifdef __sgi
|
||||
#define _MIPS_ISA_MIPS1 1
|
||||
#define _MIPS_ISA_MIPS2 2
|
||||
#define _MIPS_ISA_MIPS3 3
|
||||
#define _MIPS_ISA_MIPS4 4
|
||||
#endif
|
||||
|
||||
#ifndef _LANGUAGE_C
|
||||
|
||||
#define LEAF(x) \
|
||||
.balign 4 ;\
|
||||
.globl x ;\
|
||||
.type x, @function ;\
|
||||
x: ;\
|
||||
.ent x, 0 ;\
|
||||
.frame $sp, 0, $ra
|
||||
|
||||
#define XLEAF(x) \
|
||||
.balign 4 ;\
|
||||
.globl x ;\
|
||||
.type x, @function ;\
|
||||
x: ;\
|
||||
.aent x, 0
|
||||
|
||||
#define NESTED(x, fsize, ra) \
|
||||
.globl x ;\
|
||||
x: ;\
|
||||
.ent x, 0 ;\
|
||||
.frame $sp, fsize, ra
|
||||
|
||||
#define XNESTED(x) \
|
||||
.globl x ;\
|
||||
x: ;\
|
||||
.aent x, 0
|
||||
|
||||
#define END(x) \
|
||||
.size x, . - x ;\
|
||||
.end x
|
||||
|
||||
#define IMPORT(x, size) \
|
||||
.extern x, size
|
||||
|
||||
#define EXPORT(x) \
|
||||
.globl x ;\
|
||||
x:
|
||||
|
||||
#define DATA(x) \
|
||||
.balign 4 ;\
|
||||
.globl x ;\
|
||||
.type x, @object ;\
|
||||
x:
|
||||
|
||||
#define ENDDATA(x) \
|
||||
.size x, . - x
|
||||
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Stack Alignment
|
||||
*/
|
||||
#if (_MIPS_SIM == _ABIO32)
|
||||
#define NARGSAVE 4 // space for 4 args must be allocated
|
||||
#define ALSZ (8-1)
|
||||
#define ALMASK ~(8-1)
|
||||
#elif (_MIPS_SIM == _ABIN32 || _MIPS_SIM == _ABI64)
|
||||
#define NARGSAVE 0 // no caller responsibilities
|
||||
#define ALSZ (16-1)
|
||||
#define ALMASK ~(16-1)
|
||||
#endif
|
||||
|
||||
#define FRAMESZ(size) (((size) + ALSZ) & ALMASK)
|
||||
|
||||
/**
|
||||
* Register Size
|
||||
*/
|
||||
#if (_MIPS_ISA == _MIPS_ISA_MIPS1 || _MIPS_ISA == _MIPS_ISA_MIPS2)
|
||||
#define SZREG 4
|
||||
#elif (_MIPS_ISA == _MIPS_ISA_MIPS3 || _MIPS_ISA == _MIPS_ISA_MIPS4)
|
||||
#define SZREG 8
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -1,10 +1,9 @@
|
||||
#ifndef ULTRA64_EXCEPTION_H
|
||||
#define ULTRA64_EXCEPTION_H
|
||||
|
||||
#include "types.h"
|
||||
|
||||
// Interrupt masks
|
||||
#define OS_IM_NONE 0x00000001
|
||||
#define OS_IM_RCP 0x00000401
|
||||
#define OS_IM_SW1 0x00000501
|
||||
#define OS_IM_SW2 0x00000601
|
||||
#define OS_IM_CART 0x00000C01
|
||||
@@ -24,6 +23,13 @@
|
||||
#define RCP_IMASK 0x003F0000
|
||||
#define RCP_IMASKSHIFT 16
|
||||
|
||||
// OSHWIntr values
|
||||
#define OS_INTR_CART 1
|
||||
|
||||
#ifdef _LANGUAGE_C
|
||||
|
||||
#include "types.h"
|
||||
|
||||
typedef u32 OSIntMask;
|
||||
typedef u32 OSHWIntr;
|
||||
|
||||
@@ -42,4 +48,15 @@ void __osResetGlobalIntMask(OSHWIntr mask);
|
||||
|
||||
extern __osHwInt __osHwIntTable[];
|
||||
|
||||
#else
|
||||
|
||||
// __osHwInt struct member offsets
|
||||
#define HWINT_CALLBACK 0x00
|
||||
#define HWINT_SP 0x04
|
||||
|
||||
// __osHwInt struct size
|
||||
#define HWINT_SIZE 0x8
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,14 +1,9 @@
|
||||
#ifndef ULTRA64_MESSAGE_H
|
||||
#define ULTRA64_MESSAGE_H
|
||||
|
||||
#include "thread.h"
|
||||
|
||||
#define OS_MESG_NOBLOCK 0
|
||||
#define OS_MESG_BLOCK 1
|
||||
|
||||
typedef void* OSMesg;
|
||||
typedef u32 OSEvent;
|
||||
|
||||
#define OS_NUM_EVENTS 15
|
||||
|
||||
#define OS_EVENT_SW1 0 /* CPU SW1 interrupt */
|
||||
@@ -27,6 +22,13 @@ typedef u32 OSEvent;
|
||||
#define OS_EVENT_THREADSTATUS 13 /* CPU thread status: used by rmon */
|
||||
#define OS_EVENT_PRENMI 14 /* Pre NMI interrupt */
|
||||
|
||||
#ifdef _LANGUAGE_C
|
||||
|
||||
#include "thread.h"
|
||||
|
||||
typedef void* OSMesg;
|
||||
typedef u32 OSEvent;
|
||||
|
||||
typedef struct OSMesgQueue {
|
||||
/* 0x00 */ OSThread* mtqueue;
|
||||
/* 0x04 */ OSThread* fullqueue;
|
||||
@@ -43,4 +45,17 @@ typedef struct OSMesgQueue {
|
||||
#define MQ_IS_EMPTY(mq) (MQ_GET_COUNT(mq) == 0)
|
||||
#define MQ_IS_FULL(mq) (MQ_GET_COUNT(mq) >= (mq)->msgCount)
|
||||
|
||||
#else
|
||||
|
||||
// OSMesgQueue struct member offsets
|
||||
|
||||
#define MQ_MTQUEUE 0x00
|
||||
#define MQ_FULLQUEUE 0x04
|
||||
#define MQ_VALIDCOUNT 0x08
|
||||
#define MQ_FIRST 0x0C
|
||||
#define MQ_MSGCOUNT 0x10
|
||||
#define MQ_MSG 0x14
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
+55
-11
@@ -1,7 +1,9 @@
|
||||
#ifndef ULTRA64_RCP_H
|
||||
#define ULTRA64_RCP_H
|
||||
|
||||
#ifdef _LANGUAGE_C
|
||||
#define HW_REG(reg, type) *(volatile type*)((reg) | 0xA0000000)
|
||||
#endif
|
||||
|
||||
#define AI_DRAM_ADDR_REG 0x04500000
|
||||
#define AI_LEN_REG 0x04500004
|
||||
@@ -10,8 +12,8 @@
|
||||
#define AI_DACRATE_REG 0x04500010
|
||||
#define AI_BITRATE_REG 0x04500014
|
||||
|
||||
#define AI_STATUS_AI_FULL (1 << 31)
|
||||
#define AI_STATUS_AI_BUSY (1 << 30)
|
||||
#define AI_STATUS_AI_FULL (1 << 31)
|
||||
#define AI_STATUS_AI_BUSY (1 << 30)
|
||||
|
||||
#define VI_STATUS_REG 0x04400000
|
||||
#define VI_CONTROL_REG VI_STATUS_REG
|
||||
@@ -20,7 +22,7 @@
|
||||
#define VI_WIDTH_REG 0x04400008
|
||||
#define VI_H_WIDTH_REG VI_WIDTH_REG
|
||||
#define VI_INTR_REG 0x0440000C
|
||||
#define VI_V_INTER_REG VI_H_WIDTH_REG
|
||||
#define VI_V_INTER_REG VI_INTR_REG
|
||||
#define VI_CURRENT_REG 0x04400010
|
||||
#define VI_V_CURRENT_LINE_REG VI_CURRENT_REG
|
||||
#define VI_BURST_REG 0x04400014
|
||||
@@ -63,21 +65,24 @@
|
||||
#define PI_BSD_DOM2_PGS_REG 0x0460002C //PI dom2 page size
|
||||
#define PI_BSD_DOM2_RLS_REG 0x04600030 //PI dom2 release
|
||||
|
||||
#define PI_STATUS_BUSY 0x1
|
||||
#define PI_STATUS_IOBUSY 0x2
|
||||
#define PI_STATUS_ERROR 0x4
|
||||
// PI_STATUS (read) bits
|
||||
#define PI_STATUS_BUSY (1 << 0)
|
||||
#define PI_STATUS_IOBUSY (1 << 1)
|
||||
#define PI_STATUS_ERROR (1 << 2)
|
||||
|
||||
#define PI_STATUS_RESET_CONTROLLER 0x1
|
||||
#define PI_STATUS_CLEAR_INTR 0x2
|
||||
// PI_STATUS (write) bits
|
||||
#define PI_STATUS_RESET (1 << 0)
|
||||
#define PI_STATUS_CLR_INTR (1 << 1)
|
||||
|
||||
#define SI_DRAM_ADDR_REG 0x04800000
|
||||
#define SI_PIF_ADDR_RD64B_REG 0x04800004
|
||||
#define SI_PIF_ADDR_WR64B_REG 0x04800010
|
||||
#define SI_STATUS_REG 0x04800018
|
||||
|
||||
#define SI_STATUS_DMA_BUSY 0x1
|
||||
#define SI_STATUS_IO_READ_BUSY 0x2
|
||||
#define SI_STATUS_DMA_ERROR 0x8
|
||||
// SI_STATUS (read) bits
|
||||
#define SI_STATUS_DMA_BUSY (1 << 0)
|
||||
#define SI_STATUS_IO_READ_BUSY (1 << 1)
|
||||
#define SI_STATUS_DMA_ERROR (1 << 3)
|
||||
#define SI_STATUS_INTERRUPT (1 << 12)
|
||||
|
||||
#define PIF_RAM_START 0x1FC007C0
|
||||
@@ -88,6 +93,45 @@
|
||||
#define MI_INTR_REG 0x04300008
|
||||
#define MI_INTR_MASK_REG 0x0430000C
|
||||
|
||||
// MI_INIT_MODE_REG bits (write)
|
||||
#define MI_CLR_INIT (1 << 7)
|
||||
#define MI_SET_INIT (1 << 8)
|
||||
#define MI_CLR_EBUS (1 << 9)
|
||||
#define MI_SET_EBUS (1 << 10)
|
||||
#define MI_CLR_DP_INTR (1 << 11)
|
||||
#define MI_CLR_RDRAM (1 << 12)
|
||||
#define MI_SET_RDRAM (1 << 13)
|
||||
|
||||
// MI_INTR_REG bits
|
||||
#define MI_INTR_SP (1 << 0)
|
||||
#define MI_INTR_SI (1 << 1)
|
||||
#define MI_INTR_AI (1 << 2)
|
||||
#define MI_INTR_VI (1 << 3)
|
||||
#define MI_INTR_PI (1 << 4)
|
||||
#define MI_INTR_DP (1 << 5)
|
||||
|
||||
// MI_INTR_MASK_REG masks (read)
|
||||
#define MI_INTR_MASK_SP 0x01
|
||||
#define MI_INTR_MASK_SI 0x02
|
||||
#define MI_INTR_MASK_AI 0x04
|
||||
#define MI_INTR_MASK_VI 0x08
|
||||
#define MI_INTR_MASK_PI 0x10
|
||||
#define MI_INTR_MASK_DP 0x20
|
||||
|
||||
// MI_INTR_MASK_REG masks (write)
|
||||
#define MI_INTR_MASK_CLR_SP 0x0001
|
||||
#define MI_INTR_MASK_SET_SP 0x0002
|
||||
#define MI_INTR_MASK_CLR_SI 0x0004
|
||||
#define MI_INTR_MASK_SET_SI 0x0008
|
||||
#define MI_INTR_MASK_CLR_AI 0x0010
|
||||
#define MI_INTR_MASK_SET_AI 0x0020
|
||||
#define MI_INTR_MASK_CLR_VI 0x0040
|
||||
#define MI_INTR_MASK_SET_VI 0x0080
|
||||
#define MI_INTR_MASK_CLR_PI 0x0100
|
||||
#define MI_INTR_MASK_SET_PI 0x0200
|
||||
#define MI_INTR_MASK_CLR_DP 0x0400
|
||||
#define MI_INTR_MASK_SET_DP 0x0800
|
||||
|
||||
#define VI_NTSC_CLOCK 48681812 /* Hz = 48.681812 MHz */
|
||||
#define VI_PAL_CLOCK 49656530 /* Hz = 49.656530 MHz */
|
||||
#define VI_MPAL_CLOCK 48628316 /* Hz = 48.628316 MHz */
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
#ifndef ULTRA64_RDB_H
|
||||
#define ULTRA64_RDB_H
|
||||
|
||||
/* U64 side address */
|
||||
#define RDB_BASE_REG 0xC0000000
|
||||
#define RDB_WRITE_INTR_REG (RDB_BASE_REG + 0x8)
|
||||
#define RDB_READ_INTR_REG (RDB_BASE_REG + 0xC)
|
||||
#define RDB_BASE_VIRTUAL_ADDR 0x80000000
|
||||
|
||||
/* packet type Have six bits, so can have up to 63 types */
|
||||
#define RDB_TYPE_INVALID 0
|
||||
#define RDB_TYPE_GtoH_PRINT 1
|
||||
#define RDB_TYPE_GtoH_FAULT 2
|
||||
#define RDB_TYPE_GtoH_LOG_CT 3
|
||||
#define RDB_TYPE_GtoH_LOG 4
|
||||
#define RDB_TYPE_GtoH_READY_FOR_DATA 5
|
||||
#define RDB_TYPE_GtoH_DATA_CT 6
|
||||
#define RDB_TYPE_GtoH_DATA 7
|
||||
#define RDB_TYPE_GtoH_DEBUG 8
|
||||
#define RDB_TYPE_GtoH_RAMROM 9
|
||||
#define RDB_TYPE_GtoH_DEBUG_DONE 10
|
||||
#define RDB_TYPE_GtoH_DEBUG_READY 11
|
||||
#define RDB_TYPE_GtoH_KDEBUG 12
|
||||
#define RDB_TYPE_GtoH_PROF_DATA 22
|
||||
|
||||
|
||||
#define RDB_TYPE_HtoG_LOG_DONE 13
|
||||
#define RDB_TYPE_HtoG_DEBUG 14
|
||||
#define RDB_TYPE_HtoG_DEBUG_CT 15
|
||||
#define RDB_TYPE_HtoG_DATA 16
|
||||
#define RDB_TYPE_HtoG_DATA_DONE 17
|
||||
#define RDB_TYPE_HtoG_REQ_RAMROM 18
|
||||
#define RDB_TYPE_HtoG_FREE_RAMROM 19
|
||||
#define RDB_TYPE_HtoG_KDEBUG 20
|
||||
#define RDB_TYPE_HtoG_PROF_SIGNAL 21
|
||||
|
||||
|
||||
#define RDB_PROF_ACK_SIG 1
|
||||
#define RDB_PROF_FLUSH_SIG 2
|
||||
#define PROF_BLOCK_SIZE 2048
|
||||
|
||||
#define RDB_LOG_MAX_BLOCK_SIZE 0x8000
|
||||
#define RDB_DATA_MAX_BLOCK_SIZE 0x8000
|
||||
|
||||
/* GIO side address */
|
||||
#define GIO_RDB_BASE_REG 0xBF480000
|
||||
#define GIO_RDB_WRITE_INTR_REG (GIO_RDB_BASE_REG + 0x8)
|
||||
#define GIO_RDB_READ_INTR_REG (GIO_RDB_BASE_REG + 0xC)
|
||||
|
||||
/* minor device number */
|
||||
#define GIO_RDB_PRINT_MINOR 1
|
||||
#define GIO_RDB_DEBUG_MINOR 2
|
||||
|
||||
/* interrupt bit */
|
||||
#define GIO_RDB_WRITE_INTR_BIT 0x80000000
|
||||
#define GIO_RDB_READ_INTR_BIT 0x40000000
|
||||
|
||||
/* debug command */
|
||||
#define DEBUG_COMMAND_NULL 0
|
||||
#define DEBUG_COMMAND_MEMORY 1
|
||||
#define DEBUG_COMMAND_REGISTER 2
|
||||
#define DEBUG_COMMAND_INVALID 255
|
||||
|
||||
/* debug state */
|
||||
#define DEBUG_STATE_NULL 0
|
||||
#define DEBUG_STATE_RECEIVE 1
|
||||
#define DEBUG_STATE_INVALID 255
|
||||
|
||||
#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
|
||||
|
||||
#include "types.h"
|
||||
|
||||
/* Structure for debug port */
|
||||
typedef struct {
|
||||
u32 type : 6; /* 0: invalid, 1: print, 2: debug */
|
||||
u32 length : 2; /* 1, 2, or 3 */
|
||||
char buf[3]; /* character buffer */
|
||||
} rdbPacket;
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -1,8 +1,6 @@
|
||||
#ifndef ULTRA64_THREAD_H
|
||||
#define ULTRA64_THREAD_H
|
||||
|
||||
#include "types.h"
|
||||
|
||||
#define OS_PRIORITY_MAX 255
|
||||
#define OS_PRIORITY_VIMGR 254
|
||||
#define OS_PRIORITY_RMON 250
|
||||
@@ -22,6 +20,10 @@
|
||||
#define OS_FLAG_CPU_BREAK 1
|
||||
#define OS_FLAG_FAULT 2
|
||||
|
||||
#ifdef _LANGUAGE_C
|
||||
|
||||
#include "types.h"
|
||||
|
||||
typedef s32 OSPri;
|
||||
typedef s32 OSId;
|
||||
|
||||
@@ -69,4 +71,74 @@ typedef struct {
|
||||
OSPri priority;
|
||||
} __OSThreadTail; // size = 0x8
|
||||
|
||||
#else
|
||||
|
||||
// OSThread struct member offsets
|
||||
|
||||
#define THREAD_NEXT 0x00
|
||||
#define THREAD_PRI 0x04
|
||||
#define THREAD_QUEUE 0x08
|
||||
#define THREAD_TLNEXT 0x0C
|
||||
#define THREAD_STATE 0x10
|
||||
#define THREAD_FLAGS 0x12
|
||||
#define THREAD_ID 0x14
|
||||
#define THREAD_FP 0x18
|
||||
#define THREAD_PROFILE 0x1C
|
||||
#define THREAD_CONTEXT 0x20
|
||||
#define THREAD_AT (THREAD_CONTEXT + 0x000)
|
||||
#define THREAD_V0 (THREAD_CONTEXT + 0x008)
|
||||
#define THREAD_V1 (THREAD_CONTEXT + 0x010)
|
||||
#define THREAD_A0 (THREAD_CONTEXT + 0x018)
|
||||
#define THREAD_A1 (THREAD_CONTEXT + 0x020)
|
||||
#define THREAD_A2 (THREAD_CONTEXT + 0x028)
|
||||
#define THREAD_A3 (THREAD_CONTEXT + 0x030)
|
||||
#define THREAD_T0 (THREAD_CONTEXT + 0x038)
|
||||
#define THREAD_T1 (THREAD_CONTEXT + 0x040)
|
||||
#define THREAD_T2 (THREAD_CONTEXT + 0x048)
|
||||
#define THREAD_T3 (THREAD_CONTEXT + 0x050)
|
||||
#define THREAD_T4 (THREAD_CONTEXT + 0x058)
|
||||
#define THREAD_T5 (THREAD_CONTEXT + 0x060)
|
||||
#define THREAD_T6 (THREAD_CONTEXT + 0x068)
|
||||
#define THREAD_T7 (THREAD_CONTEXT + 0x070)
|
||||
#define THREAD_S0 (THREAD_CONTEXT + 0x078)
|
||||
#define THREAD_S1 (THREAD_CONTEXT + 0x080)
|
||||
#define THREAD_S2 (THREAD_CONTEXT + 0x088)
|
||||
#define THREAD_S3 (THREAD_CONTEXT + 0x090)
|
||||
#define THREAD_S4 (THREAD_CONTEXT + 0x098)
|
||||
#define THREAD_S5 (THREAD_CONTEXT + 0x0A0)
|
||||
#define THREAD_S6 (THREAD_CONTEXT + 0x0A8)
|
||||
#define THREAD_S7 (THREAD_CONTEXT + 0x0B0)
|
||||
#define THREAD_T8 (THREAD_CONTEXT + 0x0B8)
|
||||
#define THREAD_T9 (THREAD_CONTEXT + 0x0C0)
|
||||
#define THREAD_GP (THREAD_CONTEXT + 0x0C8)
|
||||
#define THREAD_SP (THREAD_CONTEXT + 0x0D0)
|
||||
#define THREAD_S8 (THREAD_CONTEXT + 0x0D8)
|
||||
#define THREAD_RA (THREAD_CONTEXT + 0x0E0)
|
||||
#define THREAD_LO (THREAD_CONTEXT + 0x0E8)
|
||||
#define THREAD_HI (THREAD_CONTEXT + 0x0F0)
|
||||
#define THREAD_SR (THREAD_CONTEXT + 0x0F8)
|
||||
#define THREAD_PC (THREAD_CONTEXT + 0x0FC)
|
||||
#define THREAD_CAUSE (THREAD_CONTEXT + 0x100)
|
||||
#define THREAD_BADVADDR (THREAD_CONTEXT + 0x104)
|
||||
#define THREAD_RCP (THREAD_CONTEXT + 0x108)
|
||||
#define THREAD_FPCSR (THREAD_CONTEXT + 0x10C)
|
||||
#define THREAD_FP0 (THREAD_CONTEXT + 0x110)
|
||||
#define THREAD_FP2 (THREAD_CONTEXT + 0x118)
|
||||
#define THREAD_FP4 (THREAD_CONTEXT + 0x120)
|
||||
#define THREAD_FP6 (THREAD_CONTEXT + 0x128)
|
||||
#define THREAD_FP8 (THREAD_CONTEXT + 0x130)
|
||||
#define THREAD_FP10 (THREAD_CONTEXT + 0x138)
|
||||
#define THREAD_FP12 (THREAD_CONTEXT + 0x140)
|
||||
#define THREAD_FP14 (THREAD_CONTEXT + 0x148)
|
||||
#define THREAD_FP16 (THREAD_CONTEXT + 0x150)
|
||||
#define THREAD_FP18 (THREAD_CONTEXT + 0x158)
|
||||
#define THREAD_FP20 (THREAD_CONTEXT + 0x160)
|
||||
#define THREAD_FP22 (THREAD_CONTEXT + 0x168)
|
||||
#define THREAD_FP24 (THREAD_CONTEXT + 0x170)
|
||||
#define THREAD_FP26 (THREAD_CONTEXT + 0x178)
|
||||
#define THREAD_FP28 (THREAD_CONTEXT + 0x180)
|
||||
#define THREAD_FP30 (THREAD_CONTEXT + 0x188)
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@ extern u32 osTvType;
|
||||
extern u32 osRomBase;
|
||||
extern u32 osResetType;
|
||||
extern u32 osMemSize;
|
||||
extern u8 osAppNmiBuffer[0x40];
|
||||
extern u8 osAppNMIBuffer[0x40];
|
||||
|
||||
extern u8 D_80009320[];
|
||||
extern u8 D_800093F0[];
|
||||
|
||||
+1
-1
@@ -1748,7 +1748,7 @@ typedef struct {
|
||||
/* 0x04 */ u32 resetCount;
|
||||
/* 0x08 */ OSTime duration;
|
||||
/* 0x10 */ OSTime resetTime;
|
||||
} PreNmiBuff; // size = 0x18 (actually osAppNmiBuffer is 0x40 bytes large but the rest is unused)
|
||||
} PreNmiBuff; // size = 0x18 (actually osAppNMIBuffer is 0x40 bytes large but the rest is unused)
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s16 unk_00;
|
||||
|
||||
Reference in New Issue
Block a user