Some OOT transfers, some renaming, etc (#75)

* Progress on various files

* gfxprint stuff

* split some rodata, add iconv for rodata string parsing

* z_std_dma rodata

* 2 nonmatchings in gfxprint

* mtxuty-cvt ok

* more

* match a function in idle.c

* progress

* Cleanup

* Rename BgPolygon to CollisionPoly

* progress

* some effect stuff

* more effect progress

* updates

* made suggested changes

* z_effect_soft_sprite_old_init mostly ok

Co-authored-by: Lucas Shaw <lucas.shaw1123@gmail.com>
Co-authored-by: Rozelette <Rozelette@users.noreply.github.com>
This commit is contained in:
Lucas Shaw
2021-03-27 16:17:41 -05:00
committed by GitHub
co-authored by Lucas Shaw Rozelette
parent fee7a49abc
commit 623b6d5318
84 changed files with 4327 additions and 1207 deletions
+3
View File
@@ -102,6 +102,7 @@ UNCOMPRESSED_ROM_FILES := $(shell cat ./tables/makerom_uncompressed_files.txt)
$(shell mkdir -p build/asm build/asm/boot build/asm/code build/asm/overlays build/baserom build/comp build/decomp $(foreach dir,$(SRC_DIRS),$(shell mkdir -p build/$(dir))))
build/src/libultra/os/%: OPTFLAGS := -O1
build/src/libultra/voice/%: OPTFLAGS := -O2
build/src/libultra/io/%: OPTFLAGS := -O2
build/src/libultra/libc/%: OPTFLAGS := -O2
build/src/libultra/libc/ll%: OPTFLAGS := -O1
@@ -115,6 +116,8 @@ build/src/boot_O2_g3_trapuv/%: OPTFLAGS := -O2 -g3
build/src/boot_O2_g3_trapuv/%: CFLAGS := $(CFLAGS) -trapuv
build/src/libultra/%: CC := $(CC_OLD)
build/src/libultra/io/%: CC := ./tools/preprocess.py $(CC_OLD) -- $(AS) $(ASFLAGS) --
build/src/libultra/voice/%: CC := ./tools/preprocess.py $(CC_OLD) -- $(AS) $(ASFLAGS) --
CC := ./tools/preprocess.py $(CC) -- $(AS) $(ASFLAGS) --
+88
View File
@@ -0,0 +1,88 @@
#ifndef _ULTRA64_HARDWARE_H_
#define _ULTRA64_HARDWARE_H_
#define AI_DRAM_ADDR_REG 0x04500000
#define AI_LEN_REG 0x04500004
#define AI_CONTROL_REG 0x04500008
#define AI_STATUS_REG 0x0450000C
#define AI_STATUS_AI_FULL (1 << 31)
#define AI_STATUS_AI_BUSY (1 << 30)
#define AI_DACRATE_REG 0x04500010
#define AI_BITRATE_REG 0x04500014
#define VI_STATUS_REG 0x04400000
#define VI_CONTROL_REG 0x04400000
#define VI_ORIGIN_REG 0x04400004
#define VI_DRAM_ADDR_REG 0x04400004
#define VI_WIDTH_REG 0x04400008
#define VI_H_WIDTH_REG 0x04400008
#define VI_INTR_REG 0x0440000C
#define VI_V_INTER_REG 0x0440000C
#define VI_CURRENT_REG 0x04400010
#define VI_V_CURRENT_LINE_REG 0x04400010
#define VI_BURST_REG 0x04400014
#define VI_TIMING_REG 0x04400014
#define VI_V_SYNC_REG 0x04400018 //VI vertical sync
#define VI_H_SYNC_REG 0x0440001C //VI horizontal sync
#define VI_LEAP_REG 0x04400020 //VI horizontal sync leap
#define VI_H_SYNC_LEAP_REG 0x04400020
#define VI_H_START_REG 0x04400024 //VI horizontal video
#define VI_H_VIDEO_REG 0x04400024
#define VI_V_START_REG 0x04400028 //VI vertical video
#define VI_V_VIDEO_REG 0x04400028
#define VI_V_BURST_REG 0x0440002C //VI vertical burst
#define VI_X_SCALE_REG 0x04400030 //VI x-scale
#define VI_Y_SCALE_REG 0x04400034 //VI y-scale
#define SP_IMEM_START 0x04001000
#define SP_DMEM_START 0x04000000
#define SP_MEM_ADDR_REG 0x04040000
#define SP_DRAM_ADDR_REG 0x04040004
#define SP_RD_LEN_REG 0x04040008
#define SP_WR_LEN_REG 0x0404000C
#define SP_STATUS_REG 0x04040010
#define SP_PC_REG 0x04080000
#define PI_DRAM_ADDR_REG 0x04600000 //PI DRAM address
#define PI_CART_ADDR_REG 0x04600004 //PI pbus (cartridge) address
#define PI_RD_LEN_REG 0x04600008 //PI read length
#define PI_WR_LEN_REG 0x0460000C //PI write length
#define PI_STATUS_REG 0x04600010 //PI status
#define PI_BSD_DOM1_LAT_REG 0x04600014 //PI dom1 latency
#define PI_DOMAIN1_REG 0x04600014
#define PI_BSD_DOM1_PWD_REG 0x04600018 //PI dom1 pulse width
#define PI_BSD_DOM1_PGS_REG 0x0460001C //PI dom1 page size
#define PI_BSD_DOM1_RLS_REG 0x04600020 //PI dom1 release
#define PI_BSD_DOM2_LAT_REG 0x04600024 //PI dom2 latency
#define PI_DOMAIN2_REG 0x04600024
#define PI_BSD_DOM2_PWD_REG 0x04600028 //PI dom2 pulse width
#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 0x3
#define PI_STATUS_RESET_CONTROLLER 0x1
#define PI_STATUS_CLEAR_INTR 0x2
#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
#define SI_STATUS_INTERRUPT (1 << 12)
#define PIF_RAM_START 0x1FC007C0
#define MI_INIT_MODE_REG 0x04300000
#define MI_MODE_REG MI_INIT_MODE_REG
#define MI_VERSION_REG 0x04300004
#define MI_INTR_REG 0x04300008
#define MI_INTR_MASK_REG 0x0430000C
#endif
+137
View File
@@ -0,0 +1,137 @@
#ifndef _ULTRA64_PFS_H_
#define _ULTRA64_PFS_H_
#include "global.h"
/* File System size */
#define OS_PFS_VERSION 0x0200
#define OS_PFS_VERSION_HI (OS_PFS_VERSION >> 8)
#define OS_PFS_VERSION_LO (OS_PFS_VERSION & 255)
#define PFS_INODE_SIZE_PER_PAGE 128
#define PFS_FILE_NAME_LEN 16
#define PFS_FILE_EXT_LEN 4
#define BLOCKSIZE 32
#define PFS_ONE_PAGE 8
#define PFS_MAX_BANKS 62
/* File System flag */
#define PFS_READ 0
#define PFS_WRITE 1
#define PFS_CREATE 2
/* File System status */
#define PFS_INITIALIZED 0x1
#define PFS_CORRUPTED 0x2
#define PFS_ID_BROKEN 0x4
#define PFS_MOTOR_INITIALIZED 0x8
#define PFS_GBPAK_INITIALIZED 0x10
/* Definition for page usage */
#define PFS_EOF 1
#define PFS_PAGE_NOT_EXIST 2
#define PFS_PAGE_NOT_USED 3
/* File System error number */
#define PFS_ERR_NOPACK 1 /* no memory card is plugged or */
#define PFS_ERR_NEW_PACK 2 /* ram pack has been changed to a different one */
#define PFS_ERR_INCONSISTENT 3 /* need to run Pfschecker*/
#define PFS_ERR_CONTRFAIL CONT_OVERRUN_ERROR
#define PFS_ERR_INVALID 5 /* invalid parameter or file not exist*/
#define PFS_ERR_BAD_DATA 6 /* the data read from pack are bad*/
#define PFS_DATA_FULL 7 /* no free pages on ram pack*/
#define PFS_DIR_FULL 8 /* no free directories on ram pack*/
#define PFS_ERR_EXIST 9 /* file exists*/
#define PFS_ERR_ID_FATAL 10 /* dead ram pack */
#define PFS_ERR_DEVICE 11 /* wrong device type*/
#define PFS_ERR_NO_GBCART 12 /* no gb cartridge (64GB-PAK) */
#define PFS_ERR_NEW_GBCART 13 /* gb cartridge may be changed */
/* Definition for bank */
#define PFS_ID_BANK_256K 0
#define PFS_ID_BANK_1M 4
#define PFS_BANKS_256K 1
#define PFS_WRITTEN 2
#define DEF_DIR_PAGES 2
#define PFS_ID_0AREA 1
#define PFS_ID_1AREA 3
#define PFS_ID_2AREA 4
#define PFS_ID_3AREA 6
#define PFS_LABEL_AREA 7
#define PFS_ID_PAGE PFS_ONE_PAGE * 0
#define PFS_BANK_LAPPED_BY 8 /* => u8 */
#define PFS_SECTOR_PER_BANK 32
#define PFS_INODE_DIST_MAP (PFS_BANK_LAPPED_BY * PFS_SECTOR_PER_BANK)
#define PFS_SECTOR_SIZE (PFS_INODE_SIZE_PER_PAGE/PFS_SECTOR_PER_BANK)
typedef struct {
/* 0x00 */ s32 status;
/* 0x04 */ OSMesgQueue* queue;
/* 0x08 */ s32 channel;
/* 0x0C */ u8 id[32];
/* 0x2C */ u8 label[32];
/* 0x4C */ s32 version;
/* 0x50 */ s32 dir_size;
/* 0x54 */ s32 inode_table; /* block location */
/* 0x58 */ s32 minode_table; /* mirrioring inode_table */
/* 0x5C */ s32 dir_table; /* block location */
/* 0x60 */ s32 inodeStartPage; /* page # */
/* 0x64 */ u8 banks;
/* 0x65 */ u8 activebank;
} OSPfs; // size = 0x68
typedef struct {
/* 0x00 */ u32 file_size; /* bytes */
/* 0x04 */ u32 game_code;
/* 0x08 */ u16 company_code;
/* 0x0C */ char ext_name[4];
/* 0x10 */ char game_name[16];
} OSPfsState; // size = 0x20
typedef union {
struct {
/* 0x00 */ u8 bank;
/* 0x01 */ u8 page;
} inode_t;
/* 0x00 */ u16 ipage;
} __OSInodeUnit; // size = 0x02
typedef struct {
/* 0x00 */ __OSInodeUnit inodePage[128];
} __OSInode; // size = 0x100
typedef struct {
/* 0x00 */ u32 game_code;
/* 0x04 */ u16 company_code;
/* 0x06 */ __OSInodeUnit start_page;
/* 0x08 */ u8 status;
/* 0x09 */ s8 reserved;
/* 0x0A */ u16 data_sum;
/* 0x0C */ u8 ext_name[PFS_FILE_EXT_LEN];
/* 0x10 */ u8 game_name[PFS_FILE_NAME_LEN];
} __OSDir; // size = 0x20
typedef struct {
/* 0x00 */ u32 repaired;
/* 0x04 */ u32 random;
/* 0x08 */ u64 serialMid;
/* 0x10 */ u64 serialLow;
/* 0x18 */ u16 deviceid;
/* 0x1A */ u8 banks;
/* 0x1B */ u8 version;
/* 0x1C */ u16 checksum;
/* 0x1E */ u16 invertedChecksum;
} __OSPackId; // size = 0x20
typedef struct {
/* 0x000 */ __OSInode inode;
/* 0x100 */ u8 bank;
/* 0x101 */ u8 map[PFS_INODE_DIST_MAP];
} __OSInodeCache; // size = 0x202
#endif
+210 -210
View File
File diff suppressed because it is too large Load Diff
+102 -16
View File
@@ -2,6 +2,100 @@
#define _CONTROLLER_H_
#include <PR/ultratypes.h>
#include "PR/pfs.h"
#define SIAccessQueueSize 2
#define BLOCKSIZE 32
#define MAXCONTROLLERS 4
#define PFS_ONE_PAGE 8
#define PFS_PAGE_SIZE (BLOCKSIZE*PFS_ONE_PAGE)
#define CONT_CMD_REQUEST_STATUS 0
#define CONT_CMD_READ_BUTTON 1
#define CONT_CMD_READ_MEMPACK 2
#define CONT_CMD_WRITE_MEMPACK 3
#define CONT_CMD_READ_EEPROM 4
#define CONT_CMD_WRITE_EEPROM 5
#define CONT_CMD_RESET 0xFF
#define CONT_CMD_REQUEST_STATUS_TX 1
#define CONT_CMD_READ_BUTTON_TX 1
#define CONT_CMD_READ_MEMPACK_TX 3
#define CONT_CMD_WRITE_MEMPACK_TX 35
#define CONT_CMD_READ_EEPROM_TX 2
#define CONT_CMD_WRITE_EEPROM_TX 10
#define CONT_CMD_RESET_TX 1
#define CONT_CMD_REQUEST_STATUS_RX 3
#define CONT_CMD_READ_BUTTON_RX 4
#define CONT_CMD_READ_MEMPACK_RX 33
#define CONT_CMD_WRITE_MEMPACK_RX 1
#define CONT_CMD_READ_EEPROM_RX 8
#define CONT_CMD_WRITE_EEPROM_RX 1
#define CONT_CMD_RESET_RX 3
#define CONT_CMD_NOP 0xFF
#define CONT_CMD_END 0xFE // Indicates end of a command
#define CONT_CMD_EXE 1 // Set pif ram status byte to this to do a command
#define CONT_ERR_NO_CONTROLLER PFS_ERR_NOPACK /* 1 */
#define CONT_ERR_CONTRFAIL CONT_OVERRUN_ERROR /* 4 */
#define CONT_ERR_INVALID PFS_ERR_INVALID /* 5 */
#define CONT_ERR_DEVICE PFS_ERR_DEVICE /* 11 */
#define CONT_ERR_NOT_READY 12
#define CONT_ERR_VOICE_MEMORY 13
#define CONT_ERR_VOICE_WORD 14
#define CONT_ERR_VOICE_NO_RESPONSE 15
#define DIR_STATUS_EMPTY 0
#define DIR_STATUS_UNKNOWN 1
#define DIR_STATUS_OCCUPIED 2
#define PFS_FORCE 1
#define PFS_DELETE 1
#define PFS_LABEL_AREA 7
#define PFS_ERR_NOPACK 1
/* controller errors */
#define CONT_NO_RESPONSE_ERROR 0x8
#define CONT_OVERRUN_ERROR 0x4
/* Controller type */
#define CONT_ABSOLUTE 0x0001
#define CONT_RELATIVE 0x0002
#define CONT_JOYPORT 0x0004
#define CONT_EEPROM 0x8000
#define CONT_EEP16K 0x4000
#define CONT_TYPE_MASK 0x1F07
#define CONT_TYPE_NORMAL 0x0005
#define CONT_TYPE_MOUSE 0x0002
#define CONT_TYPE_VOICE 0x0100
/* Controller status */
#define CONT_CARD_ON 0x01
#define CONT_CARD_PULL 0x02
#define CONT_ADDR_CRC_ER 0x04
#define CONT_EEPROM_BUSY 0x80
/* Buttons */
#define BTN_CRIGHT 0x0001
#define BTN_CLEFT 0x0002
#define BTN_CDOWN 0x0004
#define BTN_CUP 0x0008
#define BTN_R 0x0010
#define BTN_L 0x0020
#define BTN_DRIGHT 0x0100
#define BTN_DLEFT 0x0200
#define BTN_DDOWN 0x0400
#define BTN_DUP 0x0800
#define BTN_START 0x1000
#define BTN_Z 0x2000
#define BTN_B 0x4000
#define BTN_A 0x8000
/* Buttons */
#define BTN_CRIGHT 0x0001
@@ -47,6 +141,14 @@ typedef struct {
/* 0x7 */ u8 dummy1;
} __OSContRequesFormat;
typedef struct {
/* 0x00 */ u8 txsize;
/* 0x01 */ u8 rxsize;
/* 0x02 */ u8 poll;
/* 0x03 */ u8 typeh;
/* 0x04 */ u8 typel;
/* 0x05 */ u8 status;
} __OSContRequestHeaderAligned; // size = 0x6
typedef struct {
/* 0x00 */ u8 dummy;
@@ -59,20 +161,4 @@ typedef struct {
} __OSContRamReadFormat;
typedef struct {
/* 0x00 */ u16 company_code;
/* 0x02 */ u16 game_code;
/* 0x04 */ u8 start_page;
/* 0x05 */ u8 status;
/* 0x06 */ u16 data_sum;
/* 0x08 */ unsigned char ext_name[4];
/* 0x0C */ unsigned char game_name[16];
/* 0x1C */ s32 reserved;
} __OSDir;
typedef struct {
/* 0x0 */ u8 inode_page[256];
} __OSInode;
#endif
+4 -1
View File
@@ -6,11 +6,14 @@
#define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0]))
#define ARRAY_COUNTU(arr) (u32)(sizeof(arr) / sizeof(arr[0]))
#define HW_REG(reg, type) *(volatile type*)((reg) | 0xa0000000)
// UB: u32 casts here should be uintptr_t casts.
// TODO: After uintptr_t cast change should have an AVOID_UB target that just toggles the KSEG0 bit in the address rather than add/sub 0x80000000
#define PHYSICAL_TO_VIRTUAL(addr) ((u32)(addr) + 0x80000000)
#define PHYSICAL_TO_VIRTUAL2(addr) ((u32)(addr) - 0x80000000)
#define SEGMENTED_TO_VIRTUAL(addr) (void*)(PHYSICAL_TO_VIRTUAL(gRspSegmentPhysAddrs[SEGMENT_NUMBER(addr)]) + SEGMENT_OFFSET(addr))
#define VIRTUAL_TO_PHYSICAL(addr) (u32)((u8*)(addr) - 0x80000000)
#define SEGMENTED_TO_VIRTUAL(addr) (void*)(PHYSICAL_TO_VIRTUAL(gSegments[SEGMENT_NUMBER(addr)]) + SEGMENT_OFFSET(addr))
#define ALIGN16(val) (((val) + 0xF) & ~0xF)
+10 -27
View File
@@ -7,6 +7,9 @@ typedef s32 OSPri;
typedef s32 OSId;
#define OS_READ 0
#define OS_WRITE 1
typedef union {
/* 0x0 */ struct {
/* 0x0 */ f32 f_odd;
@@ -240,33 +243,6 @@ typedef struct {
/* 0x26 */ u8 errno;
} OSContRamIo;
typedef struct {
/* 0x0 */ int status;
/* 0x4 */ OSMesgQueue* queue;
/* 0x8 */ int channel;
/* 0xC */ u8 id[32];
/* 0x4C */ u8 label[32];
/* 0x6C */ int version;
/* 0x70 */ int dir_size;
/* 0x74 */ int inode_table;
/* 0x78 */ int minode_table;
/* 0x7C */ int dir_table;
/* 0x80 */ int inode_start_page;
/* 0x84 */ u8 banks;
/* 0x88 */ u8 activebank;
} OSPfs;
typedef struct {
/* 0x0 */ u32 file_size;
/* 0x4 */ u16 company_code;
/* 0x6 */ u16 game_code;
/* 0x8 */ unsigned char ext_name[4];
/* 0xC */ unsigned char game_name[16];
} OSPfsState;
typedef struct {
/* 0x0 */ u16* histo_base;
/* 0x4 */ u32 histo_size;
@@ -274,4 +250,11 @@ typedef struct {
/* 0xC */ u32* text_end;
} OSProf;
typedef struct {
/* 0x0 */ OSMesgQueue* mq;
/* 0x4 */ s32 port; /* Controller port */
/* 0x8 */ s32 mode;
/* 0xC */ u8 status;
} OSVoiceHandle; // size = 0x10
#endif
+5
View File
@@ -1,4 +1,9 @@
#ifndef _OS_INTERNAL_H_
#define _OS_INTERNAL_H_
typedef struct {
/* 0x00 */ OSMesgQueue* queue;
/* 0x04 */ OSMesg msg;
} __osHwInt; // size = 0x08
#endif
+2 -2
View File
@@ -9,8 +9,8 @@
#define REG_PER_PAGE 16
#define REG_PER_GROUP REG_PAGES * REG_PER_PAGE
/* We probably want a better name for gStaticContext based on OoT discussions */
#define BASE_REG(n, r) gStaticContext->data[n * REG_PER_GROUP + r]
/* We probably want a better name for gGameInfo based on OoT discussions */
#define BASE_REG(n, r) gGameInfo->data[n * REG_PER_GROUP + r]
#define REG(r) BASE_REG(0, r)
#define SREG(r) BASE_REG(1, r)
+6
View File
@@ -31,6 +31,12 @@ extern UNK_PTR D_04062020[];
extern UNK_PTR D_04062060[];
extern UNK_PTR D_04062000[];
extern Gfx D_040622C0[];
extern Gfx D_04075A40[];
/* z_actor.c */
extern Gfx D_04076BC0[];
extern Gfx D_04077480[];
extern Gfx D_04075B30[];
extern Gfx D_0501D980[];
extern Gfx D_050219E0[];
+44 -44
View File
@@ -28,30 +28,30 @@ extern u32 gViConfigFeatures;
extern f32 gViConfigXScale;
extern f32 gViConfigYScale;
extern OSPiHandle* gCartHandle;
extern UNK_TYPE4 sDmaMgrDmaBuffSize;
extern u32 sDmaMgrDmaBuffSize;
extern vs32 gIrqMgrResetStatus;
extern volatile OSTime sIrqMgrResetTime;
extern volatile OSTime sIrqMgrRetraceTime;
extern s32 sIrqMgrRetraceCount;
extern char* D_80096B80[18];
extern char* D_80096BC8[6];
extern char* sExceptionNames[6];
extern FaultDrawer* sFaultDrawContext;
extern FaultDrawer sFaultDrawerDefault;
// extern UNK_TYPE4 D_80096C20;
extern UNK_TYPE4 D_80096C30;
extern StackEntry* sStackInfoListStart;
extern StackEntry* sStackInfoListEnd;
// extern UNK_TYPE1 D_80096C50;
// extern UNK_TYPE1 D_80096CD0;
// extern UNK_TYPE1 D_80096CF0;
// extern UNK_TYPE1 D_80096CF8;
// extern UNK_TYPE1 sGfxPrintFontTLUT;
// extern UNK_TYPE1 sGfxPrintUnkTLUT;
// extern UNK_TYPE1 sGfxPrintUnkData;
// extern UNK_TYPE1 sGfxPrintFontData;
// extern UNK_TYPE4 D_80097500;
// extern UNK_TYPE4 D_80097524;
extern u32 randSeed;
extern u32 sRandInt;
extern OSViMode osViModeNtscHpf1;
extern OSViMode osViModePalLan1;
extern s16 sintable[1024];
// extern UNK_TYPE1 D_80097DE0;
extern __osHwInt __osHwIntTable[];
// extern UNK_TYPE1 D_80097DE4;
// extern UNK_TYPE4 D_80097E08;
extern OSThread* __osThreadTail;
@@ -67,7 +67,7 @@ extern UNK_TYPE4 __osShutdown;
extern UNK_TYPE4 __OSGlobalIntMask;
extern OSDevMgr __osPiDevMgr;
extern OSPiHandle* __osPiTable;
extern UNK_PTR D_80097E90;
extern OSPiHandle* __osCurrentHandle[];
extern UNK_TYPE4 __osPiAccessQueueEnabled;
extern OSViMode osViModeNtscHpn1;
// extern UNK_TYPE4 D_80097F00;
@@ -88,11 +88,11 @@ extern __OSViContext D_80098060[2];
extern __OSViContext* __osViCurr;
extern __OSViContext* __osViNext;
// extern UNK_TYPE4 D_800980D0;
extern OSViMode D_800980E0;
extern OSViMode osViModeFpalLan1;
extern char ldigs[];
extern char udigs[];
extern OSDevMgr __osViDevMgr;
extern UNK_TYPE4 D_8009817C;
extern UNK_TYPE4 __additional_scanline;
// extern UNK_TYPE1 D_80098180;
extern char bootThreadName[];
extern char idleThreadName[];
@@ -100,11 +100,11 @@ extern char irqmgrThreadName[];
extern char mainThreadName[];
extern f32 D_800981B0;
extern char D_800981C0[];
extern char dmamgrString800981C4[];
extern char dmamgrString800981D4[];
extern char dmamgrString800981E4[];
extern char dmamgrString800981F4[];
extern char dmamgrThreadName[];
extern const char dmamgrString800981C4[];
extern const char dmamgrString800981D4[];
extern const char dmamgrString800981E4[];
extern const char dmamgrString800981F4[];
extern const char dmamgrThreadName[];
extern char D_80098210[];
extern char yaz0String80098220[];
extern char yaz0String8009823C[];
@@ -233,7 +233,7 @@ extern char D_80098C2C[];
extern char D_80098C34[];
extern char D_80098C38[];
extern char D_80098C40[];
extern u8 faultDrawFont[8][128];
extern u8 sFaultDrawerFont[8][128];
extern char D_80099050[];
extern char D_80099054[];
extern char D_8009905C[];
@@ -290,22 +290,22 @@ extern OSThread sIdleThread;
extern u8 sIdleThreadStack[1024];
extern StackEntry sIdleThreadInfo;
extern u8 sBootThreadStack[1024];
extern IrqMgr irqmgrContext;
extern u8 irqmgrStack[1280];
extern StackEntry irqmgrStackEntry;
extern OSThread mainOSThread;
extern u8 mainStack[2304];
extern StackEntry mainStackEntry;
extern OSMesg D_8009B160[50];
extern OSMesgQueue D_8009B228;
extern OSViMode D_8009B240;
extern IrqMgr gIrqMgr;
extern u8 sIrqMgrStack[1280];
extern StackEntry sIrqMgrStackInfo;
extern OSThread gMainThread;
extern u8 sMainStack[2304];
extern StackEntry sMainStackInfo;
extern OSMesg sPiMgrCmdBuff[50];
extern OSMesgQueue gPiMgrCmdQ;
extern OSViMode gViConfigMode;
extern u8 D_8009B290;
extern StackEntry dmamgrStackEntry;
extern StackEntry sDmaMgrStackInfo;
extern u16 numDmaEntries;
extern OSMesgQueue dmamgrMsq;
extern OSMesg dmamgrMsqMessages[32];
extern OSThread dmamgrOSThread;
extern u8 dmamgrStack[1280];
extern OSMesgQueue sDmaMgrMsgQueue;
extern OSMesg sDmaMgrMsgs[32];
extern OSThread sDmaMgrThread;
extern u8 sDmaMgrStack[1280];
// extern UNK_TYPE1 D_8009BA08;
extern u8 sYaz0DataBuffer[0x400];
extern u8* sYaz0CurDataEnd;
@@ -316,18 +316,18 @@ extern u8* D_8009BE20;
extern UNK_TYPE4 D_8009BE30;
extern UNK_TYPE4 D_8009BE34;
extern FaultClient romInfoFaultClient;
extern FaultThreadStruct* faultCtxt;
extern FaultThreadStruct* sFaultContext;
extern f32 D_8009BE54;
extern u32 faultCustomOptions;
extern u32 faultCopyToLog;
extern u8 faultStack[1536];
extern StackEntry faultStackEntry;
extern FaultThreadStruct faultContextStruct;
extern u8 sFaultStack[1536];
extern StackEntry sFaultThreadInfo;
extern FaultThreadStruct gFaultStruct;
extern FaultDrawer sFaultDrawerStruct;
// extern UNK_TYPE4 D_8009CD10;
extern Arena startHeap;
extern f32 randLast;
// extern UNK_TYPE4 heapLockMessageBuffer;
extern u32 sRandFloat;
// extern UNK_TYPE4 sArenaLockMsg;
extern OSTask tmp_task;
// extern UNK_TYPE1 D_8009CDB0;
extern OSMesg siAccessBuf[1];
@@ -364,7 +364,7 @@ extern OSMesgQueue viEventQueue;
extern OSMesg viEventBuf[5];
extern OSIoMesg viRetraceMsg;
extern OSIoMesg viCounterMsg;
extern u16 vimgrRetrace;
extern u16 viRetrace;
extern DmaEntry dmadata[1568];
// extern UNK_TYPE1 D_80186028;
// extern UNK_TYPE1 D_801AAAB0;
@@ -2736,7 +2736,7 @@ extern char D_801DC998[];
extern char D_801DC9D0[];
extern char D_801DC9D8[];
extern char D_801DC9F8[];
// extern UNK_TYPE1 D_801DCA10;
extern char D_801DCA10[];
extern f32 D_801DCA14;
extern f32 D_801DCA18;
extern f32 D_801DCA1C;
@@ -3260,7 +3260,7 @@ extern f32 D_801DDA9C;
extern f32 D_801DDAA0;
extern f32 D_801DDAB0;
extern f32 D_801DDAB4;
extern f32 D_801DDAB8;
extern const f32 D_801DDAB8;
extern f32 D_801DDAC0;
extern f32 D_801DDAC4;
extern f32 D_801DDAC8;
@@ -3946,7 +3946,7 @@ extern SaveContext gSaveContext;
// extern UNK_TYPE1 D_801F3F42;
// extern UNK_TYPE1 D_801F3F4A;
// extern UNK_TYPE1 D_801F3F5A;
extern GameInfo* gStaticContext;
extern GameInfo* gGameInfo;
// extern UNK_TYPE1 D_801F3F70;
// extern UNK_TYPE1 D_801F3F80;
// extern UNK_TYPE1 D_801F3F83;
@@ -4113,7 +4113,7 @@ extern Gfx* graphDlEntry;
extern u64 lastRenderFrameTimestamp;
extern OSMesgQueue siEventCallbackQueue;
extern OSMesg siEventCallbackBuffer[1];
extern u32 gRspSegmentPhysAddrs[NUM_SEGMENTS];
extern u32 gSegments[NUM_SEGMENTS];
extern SchedThreadStruct schedContext;
extern OSMesgQueueListNode mainIrqmgrCallbackNode;
extern OSMesgQueue mainIrqmgrCallbackQueue;
@@ -4249,8 +4249,8 @@ extern Vec3f D_801FBDA4;
// extern UNK_TYPE1 D_801FBDDC;
// extern UNK_TYPE1 D_801FBDE0;
extern Vec3f D_801FBDE8;
extern z_Matrix* matrixState;
extern z_Matrix* matrixCurrentState;
extern z_Matrix* sMatrixStack;
extern z_Matrix* sCurrentMatrix;
// extern UNK_TYPE1 D_801FBE10;
// extern UNK_TYPE1 D_801FBE28;
// extern UNK_TYPE1 D_801FBE2C;
+50 -10
View File
@@ -527,13 +527,21 @@ typedef struct {
} ActorMeshParams; // size = 0x20
typedef struct {
/* 0x0 */ u16 attributeIndex;
/* 0x2 */ u16 vertA; // upper 3 bits contain flags
/* 0x4 */ u16 vertB; // upper 3 bits contain flags
/* 0x6 */ u16 vertC;
/* 0x8 */ Vec3s normal;
/* 0xE */ s16 unkE;
} BgPolygon; // size = 0x10
/* 0x00 */ u16 type;
union {
u16 vtxData[3];
struct {
/* 0x02 */ u16 flags_vIA; // 0xE000 is poly exclusion flags (xpFlags), 0x1FFF is vtxId
/* 0x04 */ u16 flags_vIB; // 0xE000 is flags, 0x1FFF is vtxId
// 0x2000 = poly IsConveyor surface
/* 0x06 */ u16 vIC;
};
};
/* 0x08 */ Vec3s normal; // Unit normal vector
// Value ranges from -0x7FFF to 0x7FFF, representing -1.0 to 1.0; 0x8000 is invalid
/* 0x0E */ s16 dist; // Plane distance from origin along the normal
} CollisionPoly; // size = 0x10
typedef struct {
/* 0x0 */ BgPolygonLinkedListNode* nodes;
@@ -587,6 +595,27 @@ typedef struct {
/* 0x38 */ func_ptr inputCallback;
} FaultDrawer; // size = 0x3C
typedef struct GfxPrint {
/* 0x00 */ struct GfxPrint *(*callback)(struct GfxPrint*, const char*, size_t);
/* 0x04 */ Gfx* dlist;
/* 0x08 */ u16 posX;
/* 0x0A */ u16 posY;
/* 0x0C */ u16 baseX;
/* 0x0E */ u8 baseY;
/* 0x0F */ u8 flag;
/* 0x10 */ Color_RGBA8_u32 color;
/* 0x14 */ char unk_14[0x1C]; // unused
} GfxPrint; // size = 0x30
typedef enum {
GFXPRINT_FLAG1 = 1,
GFXPRINT_USE_RGBA16 = 2,
GFXPRINT_FLAG4 = 4,
GFXPRINT_UPDATE_MODE = 8,
GFXPRINT_FLAG64 = 0x40,
GFXPRINT_OPEN = 0x80
} GfxPrintFlag;
typedef struct {
/* 0x0 */ u16 cycleLength;
/* 0x2 */ u16 numKeyFrames;
@@ -712,7 +741,7 @@ typedef struct {
/* 0x0C */ u16 numVertices;
/* 0x10 */ BgVertex* vertices;
/* 0x14 */ u16 numPolygons;
/* 0x18 */ BgPolygon* polygons;
/* 0x18 */ CollisionPoly* polygons;
/* 0x1C */ BgPolygonAttributes* attributes;
/* 0x20 */ UNK_PTR cameraData;
/* 0x24 */ u16 numWaterBoxes;
@@ -1061,7 +1090,7 @@ struct DynaCollisionContext {
/* 0x0001 */ UNK_TYPE1 pad1[0x3];
/* 0x0004 */ ActorMesh actorMeshArr[50];
/* 0x138C */ u16 flags[50]; // bit 0 - Is mesh active
/* 0x13F0 */ BgPolygon* polygons;
/* 0x13F0 */ CollisionPoly* polygons;
/* 0x13F4 */ BgVertex* vertices;
/* 0x13F8 */ BgWaterboxList waterboxes;
/* 0x1400 */ BgPolygonLinkedList polygonList;
@@ -1405,6 +1434,12 @@ typedef struct StackEntry_t {
/* 0x18 */ const char* name;
} StackEntry; // size = 0x1C
typedef enum {
STACK_STATUS_OK = 0,
STACK_STATUS_WARNING = 1,
STACK_STATUS_OVERFLOW = 2
} StackStatus;
typedef struct TargetContext TargetContext;
typedef struct ActorContext ActorContext;
@@ -1634,7 +1669,7 @@ struct GlobalContext {
/* 0x18768 */ UNK_TYPE1 pad18768[0x48];
/* 0x187B0 */ z_Matrix unk187B0;
/* 0x187F0 */ UNK_TYPE1 pad187F0[0xC];
/* 0x187FC */ z_Matrix unk187FC;
/* 0x187FC */ MtxF mf_187FC;
/* 0x1883C */ UNK_TYPE1 pad1883C[0x4];
/* 0x18840 */ u32 unk18840;
/* 0x18844 */ u8 unk18844;
@@ -1808,4 +1843,9 @@ typedef enum {
MTXMODE_APPLY // applies transformation to the current matrix
} MatrixMode;
typedef struct {
/* 0x00 */ u16 intPart[4][4];
/* 0x20 */ u16 fracPart[4][4];
} MatrixInternal; // size = 0x40
#endif
+6 -4
View File
@@ -12,7 +12,7 @@
struct Actor;
struct GlobalContext;
struct Lights;
struct BgPolygon;
struct CollisionPoly;
typedef void(*ActorFunc)(struct Actor* this, struct GlobalContext* ctxt);
@@ -140,8 +140,8 @@ typedef struct Actor {
/* 0x070 */ f32 speedXZ; // How fast the actor is traveling along the XZ plane
/* 0x074 */ f32 gravity; // Acceleration due to gravity. Value is added to Y velocity every frame
/* 0x078 */ f32 minVelocityY; // Sets the lower bounds cap on velocity along the Y axis
/* 0x07C */ struct BgPolygon* wallPoly; // Wall polygon the actor is touching
/* 0x080 */ struct BgPolygon* floorPoly; // Floor polygon directly below the actor
/* 0x07C */ struct CollisionPoly* wallPoly; // Wall polygon the actor is touching
/* 0x080 */ struct CollisionPoly* floorPoly; // Floor polygon directly below the actor
/* 0x084 */ u8 wallBgId; // Bg ID of the wall polygon the actor is touching
/* 0x085 */ u8 floorBgId; // Bg ID of the floor polygon directly below the actor
/* 0x086 */ s16 wallYaw; // Y rotation of the wall polygon the actor is touching
@@ -258,7 +258,9 @@ typedef struct {
/* 0xB28 */ s16 unkB28;
/* 0xB2A */ UNK_TYPE1 padB2A[0x72];
/* 0xB9C */ Vec3f unkB9C;
/* 0xBA8 */ UNK_TYPE1 padBA8[0x1D0];
/* 0xBA8 */ UNK_TYPE1 padBA8[0x44];
/* 0xBEC */ Vec3f bodyPartsPos[18];
/* 0xCC4 */ UNK_TYPE1 padCC4[0xB4];
} ActorPlayer; // size = 0xD78
typedef struct {
+445 -33
View File
File diff suppressed because it is too large Load Diff
+1
View File
@@ -4,6 +4,7 @@
#include <ultra64.h>
#define SHT_MAX 32767.0f
#define M_PI 3.14159265358979323846f
#define VEC_SET(V,X,Y,Z) V.x=X;V.y=Y;V.z=Z
+3 -3
View File
@@ -317,11 +317,11 @@ typedef struct {
typedef struct {
/* 0x00 */ s16 id; // Negative ids mean that the object is unloaded
/* 0x02 */ UNK_TYPE1 pad2[0x2];
/* 0x04 */ void* vramAddr;
/* 0x04 */ void* segment;
/* 0x08 */ DmaRequest dmaReq;
/* 0x28 */ OSMesgQueue loadQueue;
/* 0x40 */ OSMesg loadMsg;
} SceneObject; // size = 0x44
} ObjectStatus; // size = 0x44
typedef struct {
/* 0x0 */ u32 romStart;
@@ -348,7 +348,7 @@ typedef struct {
/* 0x009 */ u8 spawnedObjectCount;
/* 0x00A */ u8 mainKeepIndex;
/* 0x00B */ u8 keepObjectId;
/* 0x00C */ SceneObject objects[35]; // TODO: OBJECT_EXCHANGE_BANK_MAX array size
/* 0x00C */ ObjectStatus objects[35]; // TODO: OBJECT_EXCHANGE_BANK_MAX array size
} SceneContext; // size = 0x958
typedef union {
+23 -23
View File
@@ -26,14 +26,14 @@ SECTIONS
build/src/boot_O2/loadfragment2.o(.text)
build/src/boot_O2/padutils.o(.text)
build/src/boot_O2/stackcheck.o(.text)
build/asm/boot/boot_0x80085570.o(.text)
build/asm/boot/mtxuty-cvt.o(.text)
build/asm/boot/boot_0x80086280.o(.text)
build/asm/boot/boot_0x800862E0.o(.text)
build/src/boot_O2/gfxprint.o(.text)
build/src/boot_O2/mtxuty-cvt.o(.text)
build/src/boot_O2/boot_0x80086280.o(.text)
build/src/boot_O2/boot_0x800862E0.o(.text)
build/asm/boot/boot_0x80086760.o(.text)
build/asm/boot/boot_0x80086DD0.o(.text)
build/asm/boot/boot_0x80086FA0.o(.text)
build/asm/boot/__osMalloc.o(.text)
build/src/boot_O2/boot_0x80086FA0.o(.text)
build/src/boot_O2/__osMalloc.o(.text)
build/src/libultra/rmon/sprintf.o(.text)
build/asm/boot/boot_0x80087900.o(.text)
build/asm/boot/setcause.o(.text)
@@ -44,8 +44,8 @@ SECTIONS
build/src/libultra/os/recvmesg.o(.text)
build/asm/boot/setintmask.o(.text)
build/asm/boot/getintmask.o(.text)
build/asm/boot/boot_0x80088110.o(.text)
build/asm/boot/boot_0x800882A0.o(.text)
build/src/libultra/voice/voicesetword.o(.text)
build/asm/boot/scale.o(.text)
build/src/libultra/gu/sinf.o(.text)
build/src/libultra/gu/sins.o(.text)
build/src/libultra/io/sptask.o(.text)
@@ -53,7 +53,7 @@ SECTIONS
build/asm/boot/exceptasm.o(.text)
build/src/libultra/os/thread.o(.text)
build/src/libultra/os/destroythread.o(.text)
build/asm/boot/boot_0x80089580.o(.text)
build/src/libultra/voice/voicecheckresult.o(.text)
build/asm/boot/bzero.o(.text)
build/asm/boot/boot_0x800896D0.o(.text)
build/src/libultra/io/siacs.o(.text)
@@ -81,7 +81,7 @@ SECTIONS
build/src/libultra/io/visetmode.o(.text)
build/asm/boot/getconfig.o(.text)
build/asm/boot/setconfig.o(.text)
build/asm/boot/lookat.o(.text)
build/src/libultra/gu/lookat.o(.text)
build/asm/boot/boot_0x8008B9F0.o(.text)
build/src/libultra/os/stoptimer.o(.text)
build/asm/boot/probetlb.o(.text)
@@ -95,12 +95,12 @@ SECTIONS
build/asm/boot/getcount.o(.text)
build/asm/boot/boot_0x8008D2E0.o(.text)
build/src/libultra/os/getmemsize.o(.text)
build/asm/boot/boot_0x8008D470.o(.text)
build/asm/boot/pfssearchfile.o(.text)
build/src/libultra/os/seteventmesg.o(.text)
build/asm/boot/sqrtf.o(.text)
build/asm/boot/boot_0x8008D710.o(.text)
build/asm/boot/afterprenmi.o(.text)
build/src/libultra/io/contquery.o(.text)
build/asm/boot/lookathil.o(.text)
build/src/libultra/gu/lookathil.o(.text)
build/src/libultra/rmon/xprintf.o(.text)
build/asm/boot/boot_0x8008ED30.o(.text)
build/asm/boot/unmaptlball.o(.text)
@@ -157,7 +157,7 @@ SECTIONS
build/asm/boot/boot_0x800922C0.o(.text)
build/src/libultra/gu/visetevent.o(.text)
build/asm/boot/pfsisplug.o(.text)
build/asm/boot/boot_0x80092730.o(.text)
build/src/libultra/voice/voicegetstatus.o(.text)
build/asm/boot/cartrominit.o(.text)
build/asm/boot/boot_0x80092A80.o(.text)
build/asm/boot/boot_0x80092C00.o(.text)
@@ -175,7 +175,7 @@ SECTIONS
build/asm/boot/boot_0x80093CC0.o(.text)
build/asm/boot/getcause.o(.text)
build/asm/boot/contramwrite.o(.text)
build/asm/boot/boot_0x80093FF0.o(.text)
build/src/libultra/io/epirawwrite.o(.text)
build/src/libultra/os/settimer.o(.text)
build/asm/boot/xldtob.o(.text)
build/src/libultra/libc/ldiv.o(.text)
@@ -184,7 +184,7 @@ SECTIONS
build/src/libultra/io/spgetstat.o(.text)
build/src/libultra/io/spsetstat.o(.text)
. += 0x10;
build/asm/boot/vimgr.o(.text)
build/src/libultra/io/vimgr.o(.text)
build/src/libultra/io/vigetcurrcontext.o(.text)
build/asm/boot/writebackdcacheall.o(.text)
build/src/libultra/os/getcurrfaultthread.o(.text)
@@ -200,7 +200,7 @@ SECTIONS
build/asm/boot/boot_0x800964D0.o(.text)
build/asm/boot/spsetpc.o(.text)
build/asm/boot/boot_0x80096540.o(.text)
build/asm/boot/boot_0x80096770.o(.text)
build/src/boot_O1/gethwintrroutine.o(.text)
build/asm/boot/boot_0x800967A0.o(.text)
build/asm/boot/boot_0x80096810.o(.text)
build/asm/boot/boot_0x80096820.o(.text)
@@ -251,14 +251,14 @@ SECTIONS
boot_rodata_start = .;
build/src/boot_O2_g3/boot_main.o(.rodata)
build/src/boot_O2_g3/idle.o(.rodata)
build/asm/boot/boot_rodata_z_std_dma.o(.rodata)
build/src/boot_O2_g3/z_std_dma.o(.rodata)
build/src/boot_O2_g3/yaz0.o(.rodata)
build/src/boot_O2_g3/irqmgr.o(.rodata)
build/src/boot_O2_g3/CIC6105.o(.rodata)
build/asm/boot/boot_rodata_fault.o(.rodata)
build/asm/boot/boot_rodata_fault_drawer.o(.rodata)
build/asm/boot/boot_rodata_0x80085570.o(.rodata)
build/asm/boot/boot_rodata_0x80086280.o(.rodata)
build/src/boot_O2/boot_0x80086280.o(.rodata)
build/asm/boot/boot_rodata_0x80086760.o(.rodata)
build/asm/boot/boot_rodata___osMalloc.o(.rodata)
build/asm/boot/boot_rodata_setintmask.o(.rodata)
@@ -320,14 +320,14 @@ SECTIONS
code_text_start = .;
build/src/code/code_0x800A5AC0.o(.text)
build/asm/code/z_en_item00.o(.text)
build/asm/code/z_eff_blure.o(.text)
build/src/code/z_eff_blure.o(.text)
build/asm/code/z_eff_shield_particle.o(.text)
build/asm/code/z_eff_spark.o(.text)
build/asm/code/z_eff_ss_dead.o(.text)
build/asm/code/z_eff_tire_mark.o(.text)
build/src/code/code_0x800AF710.o(.text)
build/src/code/z_effect_soft_sprite.o(.text)
build/asm/code/z_effect_soft_sprite_old_init.o(.text)
build/src/code/z_effect_soft_sprite_old_init.o(.text)
build/asm/code/flg_set.o(.text)
build/asm/code/z_DLF.o(.text)
build/src/code/z_actor.o(.text)
@@ -433,8 +433,8 @@ SECTIONS
build/asm/code/sys_initial_check.o(.text)
build/asm/code/code_0x80179300.o(.text)
build/asm/code/code_0x801795F0.o(.text)
build/asm/code/code_0x8017FEB0.o(.text)
build/asm/code/sys_matrix.o(.text)
build/src/code/code_0x8017FEB0.o(.text)
build/src/code/sys_matrix.o(.text)
build/asm/code/code_0x80182CE0.o(.text)
build/src/code/code_0x80183070.o(.text)
build/asm/code/code_0x801830A0.o(.text)
+4
View File
@@ -10,6 +10,10 @@ D_04062020 = 0x04062020;
D_04062060 = 0x04062060;
D_04062000 = 0x04062000;
D_040622C0 = 0x040622C0;
D_04076BC0 = 0x04076BC0;
D_04075A40 = 0x04075A40;
D_04077480 = 0x04077480;
D_04075B30 = 0x04075B30;
/* gameplay_dangeon_keep */
D_05018090 = 0x05018090;
+1 -1
View File
@@ -2,5 +2,5 @@
#include <global.h>
void func_80087E00(u32 a0) {
D_8009817C = a0;
__additional_scanline = a0;
}
+8
View File
@@ -0,0 +1,8 @@
#include <ultra64.h>
#include <global.h>
#include "os_internal.h"
void __osGetHWIntrRoutine(s32 idx, OSMesgQueue** outQueue, OSMesg* outMsg) {
*outQueue = __osHwIntTable[idx].queue;
*outMsg = __osHwIntTable[idx].msg;
}

Some files were not shown because too many files have changed in this diff Show More