mirror of
https://github.com/izzy2lost/2ship2harkinian-Android.git
synced 2026-06-19 01:20:08 -07:00
merge
This commit is contained in:
Vendored
+12
-3
@@ -4,6 +4,12 @@ pipeline {
|
||||
}
|
||||
|
||||
stages {
|
||||
stage('Check formatting') {
|
||||
steps {
|
||||
echo 'Checking formatting...'
|
||||
sh 'bash -c "tools/check_format.sh 2>&1 >(tee tools/check_format.txt)"'
|
||||
}
|
||||
}
|
||||
stage('Copy ROM') {
|
||||
steps {
|
||||
echo 'Setting up ROM...'
|
||||
@@ -17,7 +23,7 @@ pipeline {
|
||||
}
|
||||
stage('Check setup warnings') {
|
||||
steps {
|
||||
sh 'python3 tools/warnings_count/compare_warnings.py tools/warnings_count/warnings_setup_current.txt tools/warnings_count/warnings_setup_new.txt'
|
||||
sh 'bash -c "./tools/warnings_count/compare_warnings.sh setup"'
|
||||
}
|
||||
}
|
||||
stage('Disasm') {
|
||||
@@ -27,7 +33,7 @@ pipeline {
|
||||
}
|
||||
stage('Check disasm warnings') {
|
||||
steps {
|
||||
sh 'python3 tools/warnings_count/compare_warnings.py tools/warnings_count/warnings_disasm_current.txt tools/warnings_count/warnings_disasm_new.txt'
|
||||
sh 'bash -c "./tools/warnings_count/compare_warnings.sh disasm"'
|
||||
}
|
||||
}
|
||||
stage('Build') {
|
||||
@@ -37,7 +43,7 @@ pipeline {
|
||||
}
|
||||
stage('Check build warnings') {
|
||||
steps {
|
||||
sh 'python3 tools/warnings_count/compare_warnings.py tools/warnings_count/warnings_build_current.txt tools/warnings_count/warnings_build_new.txt'
|
||||
sh 'bash -c "./tools/warnings_count/compare_warnings.sh build"'
|
||||
}
|
||||
}
|
||||
stage('Report Progress') {
|
||||
@@ -68,6 +74,9 @@ pipeline {
|
||||
}
|
||||
}
|
||||
post {
|
||||
failure {
|
||||
sh 'cat tools/check_format.txt tools/warnings_count/warnings_setup_new.txt tools/warnings_count/warnings_disasm_new.txt tools/warnings_count/warnings_build_new.txt'
|
||||
}
|
||||
always {
|
||||
cleanWs()
|
||||
}
|
||||
|
||||
@@ -79,7 +79,7 @@ endif
|
||||
|
||||
# Check code syntax with host compiler
|
||||
CHECK_WARNINGS := -Wall -Wextra -Wno-format-security -Wno-unknown-pragmas -Wno-unused-parameter -Wno-unused-variable -Wno-missing-braces -Wno-int-conversion -Wno-unused-but-set-variable -Wno-unused-label
|
||||
CC_CHECK := gcc -fno-builtin -fsyntax-only -funsigned-char -std=gnu90 -D _LANGUAGE_C -D NON_MATCHING $(IINC) -include stdarg.h $(CHECK_WARNINGS)
|
||||
CC_CHECK := gcc -fno-builtin -fsyntax-only -funsigned-char -fdiagnostics-color -std=gnu90 -D _LANGUAGE_C -D NON_MATCHING $(IINC) -include stdarg.h $(CHECK_WARNINGS)
|
||||
|
||||
CPP := cpp
|
||||
ELF2ROM := tools/buildtools/elf2rom
|
||||
@@ -129,7 +129,8 @@ TEXTURE_FILES_OUT := $(foreach f,$(TEXTURE_FILES_PNG:.png=.inc.c),build/$f) \
|
||||
$(foreach f,$(TEXTURE_FILES_JPG:.jpg=.jpg.inc.c),build/$f) \
|
||||
|
||||
C_FILES := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.c))
|
||||
S_FILES := $(foreach dir,$(ASM_DIRS),$(wildcard $(dir)/*.s))
|
||||
S_FILES := $(shell grep -F "build/asm" spec | sed 's/.*build\/// ; s/\.o\".*/.s/') \
|
||||
$(shell grep -F "build/data" spec | sed 's/.*build\/// ; s/\.o\".*/.s/')
|
||||
O_FILES := $(foreach f,$(S_FILES:.s=.o),build/$f) \
|
||||
$(foreach f,$(wildcard baserom/*),build/$f.o) \
|
||||
$(foreach f,$(C_FILES:.c=.o),build/$f) \
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
<Root>
|
||||
<File Name="ovl_Arrow_Ice" BaseAddress="0x80922430" RangeStart="0x980" RangeEnd="0x1DA0">
|
||||
<Texture Name="sIceArrow1Tex" OutName="ice_tex_1" Format="ia8" Width="32" Height="64" Offset="0x980"/>
|
||||
<Texture Name="sIceArrow2Tex" OutName="ice_tex_2" Format="ia8" Width="32" Height="64" Offset="0x1180"/>
|
||||
<Array Name="sIceArrowVtx" Count="43" Offset="0x1980">
|
||||
<Vtx/>
|
||||
</Array>
|
||||
<DList Name="sIceArrowDL" Offset="0x1C30"/>
|
||||
<DList Name="sIceArrowVtxDL" Offset="0x1CE0"/>
|
||||
</File>
|
||||
</Root>
|
||||
@@ -1,5 +1,5 @@
|
||||
<Root>
|
||||
<File Name="ovl_En_Clear_Tag" BaseAddress="0x80947F60" RangeStart="0x2F00" RangeEnd="0x5D00" Segment="128">
|
||||
<File Name="ovl_En_Clear_Tag" BaseAddress="0x80947F60" RangeStart="0x2F00" RangeEnd="0x5D00">
|
||||
|
||||
<!-- Debris from explosion -->
|
||||
<DList Name="gClearTagDebrisEffectMaterialDL" Offset="0x3130"/>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<Root>
|
||||
<File Name="ovl_En_Holl" BaseAddress="0x80899960" RangeStart="0x0BF0" RangeEnd="0x0C58" Segment="128">
|
||||
<File Name="ovl_En_Holl" BaseAddress="0x80899960" RangeStart="0x0BF0" RangeEnd="0x0C58">
|
||||
<Array Name="gEnHollCentralPlaneVtx" Count="4" Offset="0x0BF0">
|
||||
<Vtx/>
|
||||
</Array>
|
||||
|
||||
@@ -1,15 +1,22 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
FORMAT_VER="11"
|
||||
FORMAT_OPTS="-i -style=file"
|
||||
TIDY_OPTS="-p . --fix --fix-errors"
|
||||
COMPILER_OPTS="-fno-builtin -std=gnu90 -Iinclude -Isrc -D_LANGUAGE_C -DNON_MATCHING"
|
||||
|
||||
shopt -s globstar
|
||||
|
||||
if [ -z `command -v clang-format-${FORMAT_VER}` ]
|
||||
then
|
||||
echo "clang-format-${FORMAT_VER} not found. Exiting."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if (( $# > 0 )); then
|
||||
echo "Formatting file(s) $*"
|
||||
echo "Running clang-format..."
|
||||
clang-format-11 ${FORMAT_OPTS} "$@"
|
||||
clang-format-${FORMAT_VER} ${FORMAT_OPTS} "$@"
|
||||
echo "Running clang-tidy..."
|
||||
clang-tidy ${TIDY_OPTS} "$@" -- ${COMPILER_OPTS} &> /dev/null
|
||||
echo "Adding missing final new lines..."
|
||||
@@ -20,9 +27,10 @@ fi
|
||||
|
||||
echo "Formatting C files. This will take a bit"
|
||||
echo "Running clang-format..."
|
||||
clang-format-11 ${FORMAT_OPTS} src/**/*.c
|
||||
clang-format-${FORMAT_VER} ${FORMAT_OPTS} src/**/*.c
|
||||
echo "Running clang-tidy..."
|
||||
clang-tidy ${TIDY_OPTS} src/**/*.c -- ${COMPILER_OPTS} &> /dev/null
|
||||
echo "Adding missing final new lines..."
|
||||
find src/ -type f -name "*.c" -exec sed -i -e '$a\' {} \;
|
||||
find assets/xml/ -type f -name "*.xml" -exec sed -i -e '$a\' {} \;
|
||||
echo "Done formatting all files."
|
||||
|
||||
+1
-1
@@ -92,7 +92,7 @@
|
||||
#define SEGMENT_ADDR(num, off) (((num) << 24) + (off))
|
||||
|
||||
#ifndef NULL
|
||||
#define NULL 0
|
||||
#define NULL ((void*)0)
|
||||
#endif
|
||||
|
||||
#endif /* !_MBI_H_ */
|
||||
|
||||
+307
-286
File diff suppressed because it is too large
Load Diff
@@ -139,7 +139,8 @@ typedef struct {
|
||||
/* 0x01 */ u8 txsize;
|
||||
/* 0x02 */ u8 rxsize;
|
||||
/* 0x03 */ u8 cmd;
|
||||
/* 0x04 */ u16 address;
|
||||
/* 0x04 */ u8 hi;
|
||||
/* 0x05 */ u8 lo;
|
||||
/* 0x06 */ u8 data[32];
|
||||
/* 0x26 */ u8 datacrc;
|
||||
} __OSContRamReadFormat;
|
||||
|
||||
+6
-5
@@ -17,8 +17,7 @@
|
||||
#define VIRTUAL_TO_PHYSICAL(addr) (uintptr_t)((u8*)(addr)-0x80000000)
|
||||
#define SEGMENTED_TO_VIRTUAL(addr) (void*)(PHYSICAL_TO_VIRTUAL(gSegments[SEGMENT_NUMBER(addr)]) + SEGMENT_OFFSET(addr))
|
||||
|
||||
// Currently most often called ctxt in MM, TODO: Refactor names when its used
|
||||
#define ACTIVE_CAM globalCtx->cameraPtrs[globalCtx->activeCamera]
|
||||
#define GET_ACTIVE_CAM(globalCtx) ((globalCtx)->cameraPtrs[(globalCtx)->activeCamera])
|
||||
#define MAIN_CAM 0
|
||||
#define SUBCAM_FREE 0
|
||||
|
||||
@@ -37,9 +36,9 @@
|
||||
} \
|
||||
(void)0
|
||||
|
||||
#define PLAYER ((Player*)globalCtx->actorCtx.actorList[ACTORCAT_PLAYER].first)
|
||||
#define GET_PLAYER(globalCtx) ((Player*)(globalCtx)->actorCtx.actorList[ACTORCAT_PLAYER].first)
|
||||
|
||||
#define FIRST_ENEMY ((Actor*)globalCtx->actorCtx.actorList[ACTORCAT_ENEMY].first)
|
||||
#define GET_FIRST_ENEMY(globalCtx) ((Actor*)(globalCtx)->actorCtx.actorList[ACTORCAT_ENEMY].first)
|
||||
|
||||
// linkAge still exists in MM, but is always set to 0 (always adult)
|
||||
// There are remnants of these macros from OOT, but they are essentially useless
|
||||
@@ -62,11 +61,13 @@
|
||||
#define CUR_UPG_VALUE_VOID(upg) \
|
||||
((((void)0, gSaveContext.inventory.upgrades) & gUpgradeMasks[upg]) >> gUpgradeShifts[upg])
|
||||
|
||||
#define CUR_FORM ((gSaveContext.playerForm == PLAYER_FORM_HUMAN) ? 0 : gSaveContext.playerForm)
|
||||
|
||||
#define ALL_EQUIP_VALUE(equip) ((gSaveContext.inventory.equipment & gEquipMasks[equip]) >> gEquipShifts[equip])
|
||||
#define CUR_EQUIP_VALUE(equip) ((gSaveContext.equips.equipment & gEquipMasks[equip]) >> gEquipShifts[equip])
|
||||
#define CUR_UPG_VALUE(upg) ((gSaveContext.inventory.upgrades & gUpgradeMasks[upg]) >> gUpgradeShifts[upg])
|
||||
#define TAKE_EQUIPPED_ITEM(equip) (gSaveContext.equips.equipment = ((((void)0, gSaveContext.equips.equipment) & (gEquipNegMasks[equip])) | (u16)(0 << gEquipShifts[equip])))
|
||||
#define CUR_FORM_EQUIP(button) (gSaveContext.equips.buttonItems[gSaveContext.playerForm == PLAYER_FORM_HUMAN ? 0 : gSaveContext.playerForm][button])
|
||||
#define CUR_FORM_EQUIP(button) (gSaveContext.equips.buttonItems[CUR_FORM][button])
|
||||
#define CHECK_QUEST_ITEM(item) (((void)0, gSaveContext.inventory.questItems) & gBitFlags[item])
|
||||
#define REMOVE_QUEST_ITEM(item) (gSaveContext.inventory.questItems = (((void)0, gSaveContext.inventory.questItems) & (-1 - gBitFlags[item])))
|
||||
|
||||
|
||||
+4
-3
@@ -1,6 +1,7 @@
|
||||
#ifndef _OS_H_
|
||||
#define _OS_H_
|
||||
|
||||
#include "stdlib.h"
|
||||
#include "ultra64/thread.h"
|
||||
#include "ultra64/message.h"
|
||||
|
||||
@@ -65,7 +66,7 @@ typedef struct {
|
||||
/* 0x00 */ OSIoMesgHdr hdr;
|
||||
/* 0x08 */ void* dramAddr;
|
||||
/* 0x0C */ u32 devAddr;
|
||||
/* 0x10 */ u32 size;
|
||||
/* 0x10 */ size_t size;
|
||||
/* 0x14 */ OSPiHandle* piHandle;
|
||||
} OSIoMesg; // size = 0x88
|
||||
|
||||
@@ -76,8 +77,8 @@ typedef struct {
|
||||
/* 0x08 */ OSMesgQueue* cmdQueue;
|
||||
/* 0x0C */ OSMesgQueue* evtQueue;
|
||||
/* 0x10 */ OSMesgQueue* acsQueue;
|
||||
/* 0x14 */ s32 (*piDmaCallback)(s32, u32, void*, u32);
|
||||
/* 0x18 */ s32 (*epiDmaCallback)(OSPiHandle*, s32, u32, void*, u32);
|
||||
/* 0x14 */ s32 (*piDmaCallback)(s32, u32, void*, size_t);
|
||||
/* 0x18 */ s32 (*epiDmaCallback)(OSPiHandle*, s32, u32, void*, size_t);
|
||||
} OSDevMgr; // size = 0x1C
|
||||
|
||||
|
||||
|
||||
@@ -6,4 +6,14 @@ typedef struct {
|
||||
/* 0x04 */ OSMesg msg;
|
||||
} __osHwInt; // size = 0x08
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u32 initialized;
|
||||
/* 0x04 */ OSThread* mgrThread;
|
||||
/* 0x08 */ OSMesgQueue* cmdQueue;
|
||||
/* 0x0C */ OSMesgQueue* eventQueue;
|
||||
/* 0x10 */ OSMesgQueue* accessQueue;
|
||||
/* 0x14 */ s32 (*piDmaCallback)(s32, u32, void*, size_t);
|
||||
/* 0x18 */ s32 (*epiDmaCallback)(OSPiHandle*, s32, u32, void*, size_t);
|
||||
} OSMgrArgs; // size = 0x1C
|
||||
|
||||
#endif
|
||||
|
||||
+51
-51
@@ -43,57 +43,57 @@
|
||||
#define bREG(r) BASE_REG(28, r)
|
||||
|
||||
/* TODO: Actually confirm these, in case of miss-match it's at least a simple list to `sed` */
|
||||
#define R_ENABLE_ARENA_DBG SREG(0)
|
||||
#define R_RUN_SPEED_LIMIT REG(45)
|
||||
#define R_UPDATE_RATE SREG(30)
|
||||
#define R_PAUSE_MENU_MODE SREG(94)
|
||||
#define R_C_UP_ICON_X YREG(88)
|
||||
#define R_C_UP_ICON_Y YREG(89)
|
||||
#define R_MAGIC_FILL_COLOR(i) ZREG(0 + i)
|
||||
#define R_C_BTN_COLOR(i) ZREG(39 + i)
|
||||
#define R_B_BTN_COLOR(i) ZREG(43 + i)
|
||||
#define R_START_LABEL_DD(i) ZREG(48 + i)
|
||||
#define R_START_LABEL_Y(i) ZREG(51 + i)
|
||||
#define R_START_LABEL_X(i) ZREG(54 + i)
|
||||
#define R_C_UP_BTN_X ZREG(62)
|
||||
#define R_C_UP_BTN_Y ZREG(63)
|
||||
#define R_START_BTN_X ZREG(68)
|
||||
#define R_START_BTN_Y ZREG(69)
|
||||
#define R_ITEM_BTN_X(i) ZREG(70 + i)
|
||||
#define R_ITEM_BTN_Y(i) ZREG(74 + i)
|
||||
#define R_ITEM_BTN_DD(i) ZREG(78 + i)
|
||||
#define R_ITEM_ICON_X(i) ZREG(82 + i)
|
||||
#define R_ITEM_ICON_Y(i) ZREG(86 + i)
|
||||
#define R_ITEM_ICON_DD(i) ZREG(90 + i)
|
||||
#define R_A_BTN_Y XREG(16)
|
||||
#define R_A_BTN_X XREG(17)
|
||||
#define R_A_ICON_Y XREG(19)
|
||||
#define R_A_ICON_X XREG(20)
|
||||
#define R_A_BTN_COLOR(i) XREG(22 + i)
|
||||
#define R_MAGIC_BAR_SMALL_Y XREG(48)
|
||||
#define R_MAGIC_BAR_X XREG(49)
|
||||
#define R_MAGIC_BAR_LARGE_Y XREG(50)
|
||||
#define R_MAGIC_FILL_X XREG(51)
|
||||
#define R_B_LABEL_DD WREG(0)
|
||||
#define R_OW_MINIMAP_X WREG(29)
|
||||
#define R_OW_MINIMAP_Y WREG(30)
|
||||
#define R_MINIMAP_TOGGLED WREG(31)
|
||||
#define R_B_LABEL_X(i) WREG(40 + i)
|
||||
#define R_B_LABEL_Y(i) WREG(43 + i)
|
||||
#define R_DGN_MINIMAP_X WREG(68)
|
||||
#define R_DGN_MINIMAP_Y WREG(69)
|
||||
#define R_MAP_INDEX VREG(11)
|
||||
#define R_MAP_TEX_INDEX_BASE VREG(12)
|
||||
#define R_MAP_TEX_INDEX VREG(13)
|
||||
#define R_COMPASS_SCALE_X VREG(14)
|
||||
#define R_COMPASS_SCALE_Y VREG(15)
|
||||
#define R_COMPASS_OFFSET_X VREG(16)
|
||||
#define R_COMPASS_OFFSET_Y VREG(17)
|
||||
#define R_MINIMAP_COLOR(i) VREG(18 + i)
|
||||
#define R_ITEM_AMMO_X(i) VREG(64 + i)
|
||||
#define R_ITEM_AMMO_Y(i) VREG(68 + i)
|
||||
#define R_ITEM_ICON_WIDTH(i) VREG(76 + i)
|
||||
#define R_ITEM_BTN_WIDTH(i) VREG(80 + i)
|
||||
#define R_ENABLE_ARENA_DBG SREG(0) // Same as OoT
|
||||
#define R_RUN_SPEED_LIMIT REG(45)
|
||||
#define R_UPDATE_RATE SREG(30)
|
||||
#define R_PAUSE_MENU_MODE SREG(94)
|
||||
#define R_C_UP_ICON_X YREG(88)
|
||||
#define R_C_UP_ICON_Y YREG(89)
|
||||
#define R_MAGIC_FILL_COLOR(i) ZREG(0 + i)
|
||||
#define R_C_BTN_COLOR(i) ZREG(39 + i)
|
||||
#define R_B_BTN_COLOR(i) ZREG(43 + i)
|
||||
#define R_START_LABEL_DD(i) ZREG(48 + i)
|
||||
#define R_START_LABEL_Y(i) ZREG(51 + i)
|
||||
#define R_START_LABEL_X(i) ZREG(54 + i)
|
||||
#define R_C_UP_BTN_X ZREG(62)
|
||||
#define R_C_UP_BTN_Y ZREG(63)
|
||||
#define R_START_BTN_X ZREG(68)
|
||||
#define R_START_BTN_Y ZREG(69)
|
||||
#define R_ITEM_BTN_X(i) ZREG(70 + i)
|
||||
#define R_ITEM_BTN_Y(i) ZREG(74 + i)
|
||||
#define R_ITEM_BTN_DD(i) ZREG(78 + i)
|
||||
#define R_ITEM_ICON_X(i) ZREG(82 + i)
|
||||
#define R_ITEM_ICON_Y(i) ZREG(86 + i)
|
||||
#define R_ITEM_ICON_DD(i) ZREG(90 + i)
|
||||
#define R_A_BTN_Y XREG(16)
|
||||
#define R_A_BTN_X XREG(17)
|
||||
#define R_A_ICON_Y XREG(19)
|
||||
#define R_A_ICON_X XREG(20)
|
||||
#define R_A_BTN_COLOR(i) XREG(22 + i)
|
||||
#define R_MAGIC_BAR_SMALL_Y XREG(48)
|
||||
#define R_MAGIC_BAR_X XREG(49)
|
||||
#define R_MAGIC_BAR_LARGE_Y XREG(50)
|
||||
#define R_MAGIC_FILL_X XREG(51)
|
||||
#define R_B_LABEL_DD WREG(0)
|
||||
#define R_OW_MINIMAP_X WREG(29)
|
||||
#define R_OW_MINIMAP_Y WREG(30)
|
||||
#define R_MINIMAP_TOGGLED WREG(31)
|
||||
#define R_B_LABEL_X(i) WREG(40 + i)
|
||||
#define R_B_LABEL_Y(i) WREG(43 + i)
|
||||
#define R_DGN_MINIMAP_X WREG(68)
|
||||
#define R_DGN_MINIMAP_Y WREG(69)
|
||||
#define R_MAP_INDEX VREG(11)
|
||||
#define R_MAP_TEX_INDEX_BASE VREG(12)
|
||||
#define R_MAP_TEX_INDEX VREG(13)
|
||||
#define R_COMPASS_SCALE_X VREG(14)
|
||||
#define R_COMPASS_SCALE_Y VREG(15)
|
||||
#define R_COMPASS_OFFSET_X VREG(16)
|
||||
#define R_COMPASS_OFFSET_Y VREG(17)
|
||||
#define R_MINIMAP_COLOR(i) VREG(18 + i)
|
||||
#define R_ITEM_AMMO_X(i) VREG(64 + i)
|
||||
#define R_ITEM_AMMO_Y(i) VREG(68 + i)
|
||||
#define R_ITEM_ICON_WIDTH(i) VREG(76 + i)
|
||||
#define R_ITEM_BTN_WIDTH(i) VREG(80 + i)
|
||||
|
||||
#define R_FB_FILTER_TYPE SREG(80)
|
||||
#define R_FB_FILTER_PRIM_COLOR(c) SREG(81 + c)
|
||||
|
||||
+1
-1
@@ -18,7 +18,7 @@ typedef struct {
|
||||
/* 0x8 */ long long rem;
|
||||
} lldiv_t;
|
||||
|
||||
typedef unsigned int size_t;
|
||||
typedef unsigned long size_t;
|
||||
|
||||
typedef int ssize_t;
|
||||
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
#ifndef _STRING_H_
|
||||
#define _STRING_H_
|
||||
|
||||
#define NULL 0
|
||||
typedef unsigned int size_t;
|
||||
|
||||
#endif
|
||||
+42
-52
@@ -30,8 +30,8 @@ extern vs32 gIrqMgrResetStatus;
|
||||
extern volatile OSTime sIrqMgrResetTime;
|
||||
extern volatile OSTime sIrqMgrRetraceTime;
|
||||
extern s32 sIrqMgrRetraceCount;
|
||||
extern char* D_80096B80[18];
|
||||
extern char* sExceptionNames[6];
|
||||
extern const char* sCpuExceptions[18];
|
||||
extern const char* sFpuExceptions[6];
|
||||
extern FaultDrawer* sFaultDrawContext;
|
||||
extern FaultDrawer sFaultDrawerDefault;
|
||||
// extern UNK_TYPE4 D_80096C20;
|
||||
@@ -67,8 +67,8 @@ extern OSPiHandle* __osPiTable;
|
||||
extern OSPiHandle* __osCurrentHandle[];
|
||||
extern UNK_TYPE4 __osPiAccessQueueEnabled;
|
||||
extern OSViMode osViModeNtscHpn1;
|
||||
// extern UNK_TYPE4 D_80097F00;
|
||||
// extern UNK_TYPE1 D_80097F04;
|
||||
extern s32 __osPfsInodeCacheChannel;
|
||||
extern u8 __osPfsInodeCacheBank;
|
||||
extern UNK_TYPE4 D_80097F10;
|
||||
extern char spaces[];
|
||||
extern char zeroes[];
|
||||
@@ -207,8 +207,8 @@ extern char D_80098A00[];
|
||||
extern char D_80098A0C[];
|
||||
extern char D_80098A1C[];
|
||||
extern char D_80098A20[34];
|
||||
extern char D_80098A44[];
|
||||
extern char D_80098A68[];
|
||||
extern const char D_80098A44[];
|
||||
extern const char D_80098A68[];
|
||||
extern char D_80098A88[53];
|
||||
extern char D_80098AC0[49];
|
||||
extern char D_80098AF4[51];
|
||||
@@ -218,7 +218,7 @@ extern char D_80098B68[];
|
||||
extern char D_80098B84[];
|
||||
extern char D_80098BA0[];
|
||||
extern char D_80098BBC[];
|
||||
extern char faultThreadName[];
|
||||
extern const char faultThreadName[];
|
||||
extern char D_80098BE0[];
|
||||
extern char D_80098BF8[];
|
||||
extern char D_80098BFC[];
|
||||
@@ -230,15 +230,14 @@ extern char D_80098C2C[];
|
||||
extern char D_80098C34[];
|
||||
extern char D_80098C38[];
|
||||
extern char D_80098C40[];
|
||||
extern u8 sFaultDrawerFont[8][128];
|
||||
extern char D_80099050[];
|
||||
extern char D_80099054[];
|
||||
extern char D_8009905C[];
|
||||
extern char D_80099064[];
|
||||
extern char D_80099070[];
|
||||
extern char D_80099078[];
|
||||
extern char D_8009907C[];
|
||||
extern char D_80099080[];
|
||||
extern const char D_80099078[];
|
||||
extern const char D_8009907C[];
|
||||
extern const char D_80099080[];
|
||||
extern char D_800990B0[];
|
||||
extern f32 D_800990C0[9];
|
||||
extern f32 D_800990E4;
|
||||
@@ -288,7 +287,7 @@ extern char gBuildMakeOption[];
|
||||
// extern u8 sIdleThreadStack[0x400];
|
||||
// extern StackEntry sIdleThreadInfo;
|
||||
// extern u8 sBootThreadStack[0x400];
|
||||
// extern IrqMgr gIrqMgr;
|
||||
extern IrqMgr gIrqMgr;
|
||||
// extern u8 sIrqMgrStack[0x500];
|
||||
// extern StackEntry sIrqMgrStackInfo;
|
||||
// extern OSThread gMainThread;
|
||||
@@ -325,10 +324,10 @@ extern FaultDrawer sFaultDrawerStruct;
|
||||
// extern Arena gSystemArena;
|
||||
extern u32 sRandFloat;
|
||||
// extern UNK_TYPE4 sArenaLockMsg;
|
||||
// extern OSTask tmp_task;
|
||||
// extern UNK_TYPE1 D_8009CDB0;
|
||||
// extern OSMesg siAccessBuf[1];
|
||||
// extern OSMesgQueue __osSiAccessQueue;
|
||||
extern OSTask tmp_task;
|
||||
extern OSPifRam osPifBuffers[4];
|
||||
extern OSMesg siAccessBuf[1];
|
||||
extern OSMesgQueue __osSiAccessQueue;
|
||||
extern OSPifRam __osContPifRam;
|
||||
// extern UNK_TYPE1 D_8009CF0C;
|
||||
extern u8 __osContLastCmd;
|
||||
@@ -418,10 +417,10 @@ extern EffectSsInfo EffectSS2Info;
|
||||
// extern UNK_TYPE1 D_801AE48C;
|
||||
// extern UNK_TYPE1 D_801AE490;
|
||||
extern EffectSsOverlay particleOverlayTable[39];
|
||||
extern UNK_PTR D_801AE8F0;
|
||||
// extern UNK_TYPE4 D_801AEC70;
|
||||
// extern UNK_TYPE4 D_801AEC74;
|
||||
// extern UNK_TYPE4 D_801AEC78;
|
||||
// extern FlagSetEntry sFlagEntries[];
|
||||
// extern s32 sEntryIndex;
|
||||
// extern u32 sCurrentBit;
|
||||
// extern s32 sTimer;
|
||||
extern Color_RGBA8 D_801AEC80;
|
||||
extern s801AEC84 D_801AEC84[13];
|
||||
extern f32 actorMovementScale;
|
||||
@@ -937,13 +936,13 @@ extern s16 actorCutsceneReturnCamera;
|
||||
extern s16 D_801BD8C6;
|
||||
extern ColliderCylinderInit fireObjCollisionInit;
|
||||
extern FireObjLightParams D_801BD8FC[2];
|
||||
extern GameStateOverlay gGameStateOverlayTable;
|
||||
extern GameStateOverlay D_801BD940;
|
||||
extern GameStateOverlay titleGameStateInfo;
|
||||
extern GameStateOverlay mainGameStateInfo;
|
||||
extern GameStateOverlay openingGameStateInfo;
|
||||
extern GameStateOverlay fileChooseGameStateInfo;
|
||||
extern GameStateOverlay daytelopGameStateInfo;
|
||||
extern GameStateOverlay gGameStateOverlayTable[];
|
||||
// extern GameStateOverlay D_801BD940;
|
||||
// extern GameStateOverlay titleGameStateInfo;
|
||||
// extern GameStateOverlay mainGameStateInfo;
|
||||
// extern GameStateOverlay openingGameStateInfo;
|
||||
// extern GameStateOverlay fileChooseGameStateInfo;
|
||||
// extern GameStateOverlay daytelopGameStateInfo;
|
||||
// extern UNK_TYPE4 graphNumGameStates;
|
||||
// extern UNK_TYPE2 D_801BDA70;
|
||||
// extern UNK_TYPE2 D_801BDA74;
|
||||
@@ -1665,7 +1664,7 @@ extern u32 D_801D1510;
|
||||
extern u32 D_801D1514[3];
|
||||
extern s32 gScreenWidth;
|
||||
extern s32 gScreenHeight;
|
||||
// extern UNK_TYPE4 startHeapSize;
|
||||
extern u32 startHeapSize;
|
||||
extern PadMgr* padmgrContext;
|
||||
// extern UNK_TYPE4 controllerInputsCaptured;
|
||||
// extern UNK_TYPE4 D_801D1538;
|
||||
@@ -1673,7 +1672,7 @@ extern UNK_PTR D_801D1540;
|
||||
// extern f32 sFactorialTbl[13];
|
||||
extern Vec3f D_801D15B0;
|
||||
extern Vec3s D_801D15BC;
|
||||
extern RSPMatrix D_801D1DE0;
|
||||
extern Mtx D_801D1DE0;
|
||||
extern MtxF D_801D1E20;
|
||||
extern UNK_PTR D_801D1E60;
|
||||
extern UNK_PTR D_801D1E64;
|
||||
@@ -3135,7 +3134,6 @@ extern UNK_PTR D_801E10B0;
|
||||
// extern UNK_TYPE4 D_801E1104;
|
||||
// extern UNK_TYPE4 D_801E1108;
|
||||
// extern UNK_TYPE4 D_801E110C;
|
||||
// extern UNK_TYPE2 D_801E1110;
|
||||
// extern UNK_TYPE2 D_801E1180;
|
||||
// extern UNK_TYPE1 D_801E1420;
|
||||
// extern UNK_TYPE2 D_801E1630;
|
||||
@@ -3263,7 +3261,6 @@ extern TriNorm D_801EF590;
|
||||
extern TriNorm D_801EF5C8;
|
||||
extern TriNorm D_801EF600;
|
||||
extern TriNorm D_801EF638;
|
||||
// extern UNK_TYPE1 D_801EF66D;
|
||||
extern SaveContext gSaveContext;
|
||||
// extern UNK_TYPE2 D_801F3F38;
|
||||
// extern UNK_TYPE1 D_801F3F3A;
|
||||
@@ -3342,7 +3339,7 @@ extern s16 D_801F4E7A;
|
||||
// extern UNK_TYPE1 D_801F4F68;
|
||||
// extern UNK_TYPE1 D_801F4F6A;
|
||||
extern LightsBuffer sLightsBuffer;
|
||||
extern Arena mainHeap;
|
||||
extern Arena sZeldaArena;
|
||||
// extern UNK_TYPE1 D_801F5130;
|
||||
// extern UNK_TYPE1 D_801F5270;
|
||||
// extern UNK_TYPE1 D_801F528E;
|
||||
@@ -3351,7 +3348,7 @@ extern Arena mainHeap;
|
||||
// extern UNK_TYPE1 D_801F5730;
|
||||
// extern UNK_TYPE1 D_801F57B4;
|
||||
// extern UNK_TYPE1 D_801F5834;
|
||||
extern s32* gNMIBuffer;
|
||||
// extern NmiBuff* gNMIBuffer;
|
||||
// extern UNK_TYPE1 D_801F5850;
|
||||
// extern UNK_TYPE1 D_801F58B0;
|
||||
// extern UNK_TYPE1 D_801F59AC;
|
||||
@@ -3366,13 +3363,6 @@ extern s32* gNMIBuffer;
|
||||
// extern UNK_TYPE1 D_801F59F0;
|
||||
// extern UNK_TYPE1 D_801F59F4;
|
||||
// extern UNK_TYPE1 D_801F59F8;
|
||||
// extern QuakeRequest sQuakeRequest[4];
|
||||
// extern Quake2Context sQuake2Context;
|
||||
// extern s32 sMatAnimStep;
|
||||
// extern u32 sMatAnimFlags;
|
||||
// extern f32 sMatAnimAlphaRatio;
|
||||
extern s32 D_801F5AB0;
|
||||
extern s32 D_801F5AB4;
|
||||
// extern UNK_TYPE1 D_801F5AC0;
|
||||
// extern UNK_TYPE1 D_801F69D0;
|
||||
// extern UNK_TYPE1 D_801F6A10;
|
||||
@@ -3435,19 +3425,19 @@ extern FaultClient graphFaultClient;
|
||||
extern Gfx* graphDlEntry;
|
||||
// extern UNK_TYPE1 D_801F80F8;
|
||||
extern u64 lastRenderFrameTimestamp;
|
||||
extern OSMesgQueue siEventCallbackQueue;
|
||||
extern OSMesg siEventCallbackBuffer[1];
|
||||
extern OSMesgQueue sSiIntMsgQ;
|
||||
extern OSMesg sSiIntMsgBuf[1];
|
||||
extern u32 gSegments[NUM_SEGMENTS];
|
||||
extern SchedContext schedContext;
|
||||
extern IrqMgrClient mainIrqmgrCallbackNode;
|
||||
extern OSMesgQueue mainIrqmgrCallbackQueue;
|
||||
extern OSMesg mainIrqCallbackBuffer[60];
|
||||
extern OSThread graphOSThread;
|
||||
extern u8 graphStack[0x1800];
|
||||
extern u8 schedStack[0x600];
|
||||
extern u8 audioStack[0x800];
|
||||
extern u8 padmgrStack[0x500];
|
||||
extern StackEntry graphStackEntry;
|
||||
extern SchedContext gSchedContext;
|
||||
extern IrqMgrClient irqClient;
|
||||
extern OSMesgQueue irqMgrMsgQ;
|
||||
extern OSMesg irqMgrMsgBuf[60];
|
||||
extern OSThread sGraphThread;
|
||||
extern u8 sGraphStack[6144];
|
||||
extern u8 schedStack[1536];
|
||||
extern u8 audioStack[2048];
|
||||
extern u8 padmgrStack[1280];
|
||||
extern StackEntry sGraphStackInfo;
|
||||
extern StackEntry schedStackEntry;
|
||||
extern StackEntry audioStackEntry;
|
||||
extern StackEntry padmgrStackEntry;
|
||||
|
||||
+92
-181
@@ -36,6 +36,7 @@
|
||||
#include "z64scene.h"
|
||||
#include "z64save.h"
|
||||
#include "z64transition.h"
|
||||
#include "regs.h"
|
||||
|
||||
#define SCREEN_WIDTH 320
|
||||
#define SCREEN_HEIGHT 240
|
||||
@@ -46,16 +47,20 @@
|
||||
#define Z_THREAD_ID_IDLE 1
|
||||
#define Z_THREAD_ID_SLOWLY 2
|
||||
#define Z_THREAD_ID_MAIN 3
|
||||
#define Z_THREAD_ID_GRAPH 4
|
||||
#define Z_THREAD_ID_SCHED 5
|
||||
#define Z_THREAD_ID_DMAMGR 18
|
||||
#define Z_THREAD_ID_IRQMGR 19
|
||||
|
||||
#define Z_PRIORITY_SLOWLY 5
|
||||
#define Z_PRIORITY_GRAPH 9
|
||||
#define Z_PRIORITY_IDLE 12
|
||||
#define Z_PRIORITY_MAIN 12
|
||||
#define Z_PRIORITY_DMAMGR 17
|
||||
#define Z_PRIORITY_IRQMGR 18
|
||||
#define Z_PRIORITY_SLOWLY 5
|
||||
#define Z_PRIORITY_GRAPH 9
|
||||
#define Z_PRIORITY_AUDIOMGR 11
|
||||
#define Z_PRIORITY_IDLE 12
|
||||
#define Z_PRIORITY_MAIN 12
|
||||
#define Z_PRIORITY_PADMGR 15
|
||||
#define Z_PRIORITY_SCHED 16
|
||||
#define Z_PRIORITY_DMAMGR 17
|
||||
#define Z_PRIORITY_IRQMGR 18
|
||||
|
||||
#define EQUIP_SLOT_B 0
|
||||
#define EQUIP_SLOT_C_LEFT 1
|
||||
@@ -238,14 +243,16 @@ typedef struct {
|
||||
/* 0x11D88 */ u8 unk_11D88;
|
||||
} Font; // size = 0x11D8C
|
||||
|
||||
// Game Info aka. Static Context
|
||||
// Data normally accessed through REG macros (see regs.h)
|
||||
typedef struct {
|
||||
/* 0x0000 */ u8 unk0;
|
||||
/* 0x0001 */ u8 unk1;
|
||||
/* 0x0002 */ u8 unk2;
|
||||
/* 0x0003 */ u8 unk3;
|
||||
/* 0x0004 */ u32 unk4;
|
||||
/* 0x0008 */ UNK_TYPE1 pad8[0xC];
|
||||
/* 0x0014 */ s16 data[2784]; // Accessed through REG macros
|
||||
/* 0x00 */ u8 unk_00; // regPage;? // 1 is first page
|
||||
/* 0x01 */ u8 unk_01; // regGroup;? // "register" group (R, RS, RO, RP etc.)
|
||||
/* 0x02 */ u8 unk_02; // regCur;? // selected register within page
|
||||
/* 0x03 */ u8 unk_03; // dpadLast;?
|
||||
/* 0x04 */ u32 unk_04; // repeat;?
|
||||
/* 0x08 */ UNK_TYPE1 pad_08[0xC];
|
||||
/* 0x14 */ s16 data[REG_GROUPS * REG_PER_GROUP]; // 0xAE0 entries
|
||||
} GameInfo; // size = 0x15D4
|
||||
|
||||
typedef struct {
|
||||
@@ -301,7 +308,7 @@ typedef struct GraphicsContext {
|
||||
/* 0x1B4 */ Gfx* unk1B4;
|
||||
/* 0x1B8 */ TwoHeadGfxArena unk1B8;
|
||||
/* 0x1C8 */ UNK_TYPE1 pad1C8[0xAC];
|
||||
/* 0x274 */ OSViMode* unk274;
|
||||
/* 0x274 */ OSViMode* viMode;
|
||||
/* 0x278 */ void* zbuffer;
|
||||
/* 0x27C */ UNK_TYPE1 pad27C[0x1C];
|
||||
/* 0x298 */ TwoHeadGfxArena overlay;
|
||||
@@ -344,6 +351,13 @@ typedef struct {
|
||||
/* 0x14 */ u32 relocations[1];
|
||||
} OverlayRelocationSection; // size >= 0x18
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u32 resetting;
|
||||
/* 0x04 */ u32 resetCount;
|
||||
/* 0x08 */ OSTime duration;
|
||||
/* 0x10 */ OSTime resetTime;
|
||||
} NmiBuff; // size >= 0x18
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s16 intPart[16];
|
||||
/* 0x20 */ u16 fracPart[16];
|
||||
@@ -396,17 +410,13 @@ typedef struct {
|
||||
/* 0xC */ s32 rightX;
|
||||
} Viewport; // size = 0x10
|
||||
|
||||
typedef void*(*fault_address_converter_func)(void* addr, void* arg);
|
||||
typedef void*(*FaultAddrConvFunc)(void* addr, void* arg);
|
||||
|
||||
typedef void(*fault_client_func)(void* arg1, void* arg2);
|
||||
|
||||
typedef unsigned long(*func)(void);
|
||||
|
||||
typedef void(*func_ptr)(void);
|
||||
|
||||
typedef void(*osCreateThread_func)(void*);
|
||||
|
||||
typedef void* (*PrintCallback)(void*, const char*, u32);
|
||||
typedef void* (*PrintCallback)(void*, const char*, size_t);
|
||||
|
||||
typedef enum {
|
||||
SLOWLY_CALLBACK_NO_ARGS,
|
||||
@@ -529,7 +539,7 @@ typedef struct {
|
||||
/* 0x20 */ u16 printColors[10];
|
||||
/* 0x34 */ u8 escCode;
|
||||
/* 0x35 */ u8 osSyncPrintfEnabled;
|
||||
/* 0x38 */ func_ptr inputCallback;
|
||||
/* 0x38 */ void* inputCallback;
|
||||
} FaultDrawer; // size = 0x3C
|
||||
|
||||
typedef struct GfxPrint {
|
||||
@@ -553,19 +563,23 @@ typedef enum {
|
||||
GFXPRINT_OPEN = 0x80
|
||||
} GfxPrintFlag;
|
||||
|
||||
typedef struct GameState GameState;
|
||||
|
||||
typedef void (*GameStateFunc)(GameState* gameState);
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ void* loadedRamAddr;
|
||||
/* 0x04 */ u32 vromStart;
|
||||
/* 0x08 */ u32 vromEnd;
|
||||
/* 0x0C */ void* vramStart;
|
||||
/* 0x10 */ void* vramEnd;
|
||||
/* 0x14 */ UNK_TYPE4 unk14;
|
||||
/* 0x18 */ func_ptr init;
|
||||
/* 0x1C */ func_ptr destroy;
|
||||
/* 0x20 */ UNK_TYPE4 unk20;
|
||||
/* 0x24 */ UNK_TYPE4 unk24;
|
||||
/* 0x28 */ UNK_TYPE4 unk28;
|
||||
/* 0x2C */ u32 instanceSize;
|
||||
/* 0x00 */ void* loadedRamAddr;
|
||||
/* 0x04 */ uintptr_t vromStart; // if applicable
|
||||
/* 0x08 */ uintptr_t vromEnd; // if applicable
|
||||
/* 0x0C */ void* vramStart; // if applicable
|
||||
/* 0x10 */ void* vramEnd; // if applicable
|
||||
/* 0x14 */ UNK_PTR unk_14;
|
||||
/* 0x18 */ GameStateFunc init; // initializes and executes the given context
|
||||
/* 0x1C */ GameStateFunc destroy; // deconstructs the context, and sets the next context to load
|
||||
/* 0x20 */ UNK_PTR unk_20;
|
||||
/* 0x24 */ UNK_PTR unk_24;
|
||||
/* 0x28 */ UNK_TYPE unk_28;
|
||||
/* 0x2C */ size_t instanceSize;
|
||||
} GameStateOverlay; // size = 0x30
|
||||
|
||||
typedef struct {
|
||||
@@ -953,7 +967,7 @@ typedef struct {
|
||||
/* 0x12020 */ u8 unk12020;
|
||||
/* 0x12021 */ u8 choiceIndex;
|
||||
/* 0x12022 */ UNK_TYPE1 unk12022;
|
||||
/* 0x12023 */ s8 unk12023;
|
||||
/* 0x12023 */ u8 unk12023;
|
||||
/* 0x12024 */ UNK_TYPE1 unk12024[0x6];
|
||||
/* 0x1202A */ u16 unk1202A;
|
||||
/* 0x1202C */ UNK_TYPE1 pad1202C[0x2];
|
||||
@@ -974,18 +988,10 @@ typedef struct {
|
||||
/* 0x120D8 */ UNK_TYPE1 pad120D8[0x8];
|
||||
} MessageContext; // size = 0x120E0
|
||||
|
||||
typedef struct ActorBgMbarChair ActorBgMbarChair;
|
||||
|
||||
typedef struct ActorEnBji01 ActorEnBji01;
|
||||
|
||||
typedef struct ActorEnTest ActorEnTest;
|
||||
|
||||
typedef struct ActorListEntry ActorListEntry;
|
||||
|
||||
typedef struct ArenaNode_t {
|
||||
/* 0x0 */ s16 magic; // Should always be 0x7373
|
||||
/* 0x2 */ s16 isFree;
|
||||
/* 0x4 */ u32 size;
|
||||
/* 0x4 */ size_t size;
|
||||
/* 0x8 */ struct ArenaNode_t* next;
|
||||
/* 0xC */ struct ArenaNode_t* prev;
|
||||
} ArenaNode; // size = 0x10
|
||||
@@ -999,19 +1005,11 @@ typedef struct {
|
||||
/* 0x22 */ u8 flag;
|
||||
} Arena; // size = 0x24
|
||||
|
||||
typedef struct ActorEnBom ActorEnBom;
|
||||
|
||||
typedef struct ActorEnFirefly ActorEnFirefly;
|
||||
|
||||
typedef struct ActorObjBell ActorObjBell;
|
||||
|
||||
typedef struct ActorBgIknvObj ActorBgIknvObj;
|
||||
|
||||
typedef struct FaultAddrConvClient FaultAddrConvClient;
|
||||
|
||||
struct FaultAddrConvClient {
|
||||
/* 0x0 */ FaultAddrConvClient* next;
|
||||
/* 0x4 */ fault_address_converter_func callback;
|
||||
/* 0x4 */ FaultAddrConvFunc callback;
|
||||
/* 0x8 */ void* param;
|
||||
}; // size = 0xC
|
||||
|
||||
@@ -1046,50 +1044,47 @@ typedef struct FireObj FireObj;
|
||||
|
||||
typedef struct FireObjLight FireObjLight;
|
||||
|
||||
typedef struct GameAlloc GameAlloc;
|
||||
typedef struct GameAllocNode {
|
||||
/* 0x0 */ struct GameAllocNode* next;
|
||||
/* 0x4 */ struct GameAllocNode* prev;
|
||||
/* 0x8 */ size_t size;
|
||||
/* 0xC */ u32 unk_0C;
|
||||
} GameAllocEntry; // size = 0x10
|
||||
|
||||
typedef struct GameState GameState;
|
||||
|
||||
typedef struct PreNMIContext PreNMIContext;
|
||||
|
||||
typedef struct GameAllocNode GameAllocNode;
|
||||
|
||||
struct GameAllocNode {
|
||||
/* 0x0 */ GameAllocNode* next;
|
||||
/* 0x4 */ GameAllocNode* prev;
|
||||
/* 0x8 */ u32 size;
|
||||
/* 0xC */ UNK_TYPE1 padC[0x4];
|
||||
}; // size = 0x10
|
||||
|
||||
struct GameAlloc {
|
||||
/* 0x00 */ GameAllocNode base;
|
||||
/* 0x10 */ GameAllocNode* head;
|
||||
}; // size = 0x14
|
||||
|
||||
typedef void (*GameStateFunc)(struct GameState* gameState);
|
||||
typedef struct GameAlloc {
|
||||
/* 0x00 */ GameAllocEntry base;
|
||||
/* 0x10 */ GameAllocEntry* head;
|
||||
} GameAlloc; // size = 0x14
|
||||
|
||||
struct GameState {
|
||||
/* 0x00 */ GraphicsContext* gfxCtx;
|
||||
/* 0x04 */ GameStateFunc main;
|
||||
/* 0x08 */ GameStateFunc destroy;
|
||||
/* 0x0C */ GameStateFunc nextGameStateInit;
|
||||
/* 0x10 */ u32 nextGameStateSize;
|
||||
/* 0x10 */ size_t nextGameStateSize;
|
||||
/* 0x14 */ Input input[4];
|
||||
/* 0x74 */ TwoHeadArena heap;
|
||||
/* 0x84 */ GameAlloc alloc;
|
||||
/* 0x98 */ UNK_TYPE1 pad98[0x3];
|
||||
/* 0x9B */ u8 running; // If 0, switch to next game state
|
||||
/* 0x9C */ u32 frames;
|
||||
/* 0xA0 */ UNK_TYPE1 padA0[0x2];
|
||||
/* 0xA0 */ u8 padA0[0x2];
|
||||
/* 0xA2 */ u8 framerateDivisor; // game speed?
|
||||
/* 0xA3 */ UNK_TYPE1 unkA3;
|
||||
}; // size = 0xA4
|
||||
|
||||
struct PreNMIContext {
|
||||
typedef struct PreNMIContext {
|
||||
/* 0x00 */ GameState state;
|
||||
/* 0xA4 */ u32 timer;
|
||||
/* 0xA8 */ UNK_TYPE4 unkA8;
|
||||
}; // size = 0xAC
|
||||
} PreNMIContext; // size = 0xAC
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u32 resetting;
|
||||
/* 0x04 */ u32 resetCount;
|
||||
/* 0x08 */ OSTime duration;
|
||||
/* 0x10 */ OSTime resetTime;
|
||||
} PreNmiBuff; // size = 0x18 (actually osAppNmiBuffer is 0x40 bytes large but the rest is unused)
|
||||
|
||||
typedef struct GlobalContext GlobalContext;
|
||||
|
||||
@@ -1272,7 +1267,7 @@ typedef struct {
|
||||
/* 0x024 */ UNK_TYPE4 unk24;
|
||||
/* 0x028 */ OSMesg lockMesg[1];
|
||||
/* 0x02C */ OSMesg interrupts[8];
|
||||
/* 0x04C */ OSMesgQueue siEventCallbackQueue;
|
||||
/* 0x04C */ OSMesgQueue sSiIntMsgQ;
|
||||
/* 0x064 */ OSMesgQueue lock;
|
||||
/* 0x07C */ OSMesgQueue irqmgrCallbackQueue;
|
||||
/* 0x094 */ IrqMgrClient irqmgrCallbackQueueNode;
|
||||
@@ -1363,11 +1358,11 @@ struct FireObjLight {
|
||||
/* 0x12 */ u8 unk12;
|
||||
}; // size = 0x13
|
||||
|
||||
struct ActorListEntry {
|
||||
typedef struct ActorListEntry {
|
||||
/* 0x0 */ s32 length; // number of actors loaded of this type
|
||||
/* 0x4 */ Actor* first; // pointer to first actor of this type
|
||||
/* 0x8 */ UNK_TYPE1 pad8[0x4];
|
||||
}; // size = 0xC
|
||||
} ActorListEntry; // size = 0xC
|
||||
|
||||
#define OS_SC_RETRACE_MSG 1
|
||||
#define OS_SC_DONE_MSG 2
|
||||
@@ -1514,6 +1509,19 @@ typedef struct {
|
||||
/* 0x04 */ s32 timer;
|
||||
} FrameAdvanceContext; // size = 0x8
|
||||
|
||||
typedef enum {
|
||||
/* 00 */ GAMEOVER_INACTIVE,
|
||||
/* 01 */ GAMEOVER_DEATH_START,
|
||||
/* 02 */ GAMEOVER_DEATH_WAIT_GROUND, // wait for player to fall and hit the ground
|
||||
/* 03 */ GAMEOVER_DEATH_FADE_OUT, // wait before fading out
|
||||
|
||||
/* 20 */ GAMEOVER_REVIVE_START = 20,
|
||||
/* 21 */ GAMEOVER_REVIVE_RUMBLE,
|
||||
/* 22 */ GAMEOVER_REVIVE_WAIT_GROUND, // wait for player to fall and hit the ground
|
||||
/* 23 */ GAMEOVER_REVIVE_WAIT_FAIRY, // wait for the fairy to rise all the way up out of player's body
|
||||
/* 24 */ GAMEOVER_REVIVE_FADE_OUT // fade out the game over lights as player is revived and gets back up
|
||||
} GameOverState;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u16 state;
|
||||
} GameOverContext; // size = 0x02
|
||||
@@ -1631,108 +1639,6 @@ typedef struct {
|
||||
/* 0x8 */ s32 unk8;
|
||||
} struct_80133038_arg2; // size = 0xC
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ Actor base;
|
||||
/* 0x144 */ ColliderQuad unk144;
|
||||
/* 0x1C4 */ ColliderQuad unk1C4;
|
||||
/* 0x244 */ Vec3f unk244;
|
||||
/* 0x250 */ f32 unk250;
|
||||
/* 0x254 */ f32 unk254;
|
||||
/* 0x258 */ ActorFunc update;
|
||||
/* 0x25C */ s16 unk25C;
|
||||
/* 0x25E */ u16 unk25E;
|
||||
/* 0x260 */ u8 unk260;
|
||||
/* 0x261 */ UNK_TYPE1 pad261[0x3];
|
||||
} ActorArrowFire; // size = 0x264
|
||||
|
||||
struct ActorBgMbarChair {
|
||||
/* 0x000 */ Actor base;
|
||||
/* 0x144 */ UNK_TYPE1 pad144[0x18];
|
||||
}; // size = 0x15C
|
||||
|
||||
struct ActorEnBji01 {
|
||||
/* 0x000 */ Actor base;
|
||||
/* 0x144 */ UNK_TYPE1 pad144[0x170];
|
||||
}; // size = 0x2B4
|
||||
|
||||
struct ActorEnBom {
|
||||
/* 0x000 */ Actor base;
|
||||
/* 0x144 */ ColliderCylinder unk144;
|
||||
/* 0x190 */ ColliderJntSph unk190;
|
||||
/* 0x1B0 */ ColliderJntSphElement unk1B0[1];
|
||||
/* 0x1F0 */ s16 unk1F0;
|
||||
/* 0x1F2 */ UNK_TYPE1 pad1F2[0x6];
|
||||
/* 0x1F8 */ u8 unk1F8;
|
||||
/* 0x1F9 */ u8 unk1F9;
|
||||
/* 0x1FA */ UNK_TYPE1 pad1FA[0x2];
|
||||
/* 0x1FC */ u8 unk1FC;
|
||||
/* 0x1FD */ UNK_TYPE1 pad1FD[0x3];
|
||||
/* 0x200 */ func_ptr unk200;
|
||||
}; // size = 0x204
|
||||
|
||||
struct ActorEnFirefly {
|
||||
/* 0x000 */ Actor base;
|
||||
/* 0x144 */ UNK_TYPE1 pad144[0x1C];
|
||||
/* 0x160 */ f32 unk160;
|
||||
/* 0x164 */ UNK_TYPE1 pad164[0x24];
|
||||
/* 0x188 */ func_ptr updateFunc;
|
||||
/* 0x18C */ UNK_TYPE1 type;
|
||||
/* 0x18D */ u8 unk18D;
|
||||
/* 0x18E */ u8 unk18E;
|
||||
/* 0x18F */ u8 unk18F;
|
||||
/* 0x190 */ s16 unk190;
|
||||
/* 0x192 */ UNK_TYPE1 pad192[0x152];
|
||||
/* 0x2E4 */ f32 unk2E4;
|
||||
/* 0x2E8 */ f32 unk2E8;
|
||||
/* 0x2EC */ f32 unk2EC;
|
||||
/* 0x2F0 */ f32 unk2F0;
|
||||
/* 0x2F4 */ UNK_TYPE1 pad2F4[0x28];
|
||||
/* 0x31C */ ColliderSphere collision;
|
||||
}; // size = 0x374
|
||||
|
||||
struct ActorEnTest {
|
||||
/* 0x000 */ Actor base;
|
||||
/* 0x144 */ UNK_TYPE1 pad144[0x10];
|
||||
/* 0x154 */ f32 unk154;
|
||||
/* 0x158 */ UNK_TYPE1 pad158[0xB0];
|
||||
/* 0x208 */ u8 unk208;
|
||||
/* 0x209 */ UNK_TYPE1 pad209[0x1];
|
||||
/* 0x20A */ u8 unk20A;
|
||||
/* 0x20B */ UNK_TYPE1 pad20B[0x1];
|
||||
/* 0x20C */ ActorEnTest20C unk20C[20];
|
||||
}; // size = 0x6BC
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ Actor base;
|
||||
/* 0x144 */ s8 unk144;
|
||||
/* 0x145 */ u8 unk145;
|
||||
/* 0x146 */ u16 unk146;
|
||||
/* 0x148 */ u16 unk148;
|
||||
/* 0x14A */ u16 unk14A;
|
||||
/* 0x14C */ u8 unk14C;
|
||||
/* 0x14D */ UNK_TYPE1 pad14D[0x3];
|
||||
/* 0x150 */ ActorFunc unk150;
|
||||
} ActorEnTest4; // size = 0x154
|
||||
|
||||
struct ActorObjBell {
|
||||
/* 0x000 */ Actor base;
|
||||
/* 0x144 */ UNK_TYPE1 pad144[0x18];
|
||||
/* 0x15C */ ColliderSphere unk15C;
|
||||
/* 0x1B4 */ ColliderSphere unk1B4;
|
||||
/* 0x20C */ UNK_TYPE1 pad20C[0x2];
|
||||
/* 0x20E */ s16 unk20E;
|
||||
/* 0x210 */ UNK_TYPE1 pad210[0x4];
|
||||
/* 0x214 */ s16 unk214;
|
||||
/* 0x216 */ UNK_TYPE1 pad216[0x12];
|
||||
}; // size = 0x228
|
||||
|
||||
struct ActorBgIknvObj {
|
||||
/* 0x000 */ DynaPolyActor bg;
|
||||
/* 0x15C */ ColliderCylinder collision;
|
||||
/* 0x1A8 */ u32 displayListAddr;
|
||||
/* 0x1AC */ ActorFunc updateFunc;
|
||||
}; // size = 0x1B0
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u32 type;
|
||||
/* 0x04 */ u32 setScissor;
|
||||
@@ -1766,4 +1672,9 @@ typedef struct {
|
||||
/* 0x20 */ u16 fracPart[4][4];
|
||||
} MatrixInternal; // size = 0x40
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8* value;
|
||||
/* 0x04 */ const char* name;
|
||||
} FlagSetEntry; // size = 0x08
|
||||
|
||||
#endif
|
||||
|
||||
+9
-5
@@ -141,7 +141,7 @@ typedef struct {
|
||||
/* 0x10 */ f32 shadowScale; // Changes the size of the shadow
|
||||
/* 0x14 */ u8 shadowAlpha; // Default is 255
|
||||
/* 0x15 */ u8 feetFloorFlags; // Set if the actor's foot is clipped under the floor. & 1 is right foot, & 2 is left
|
||||
/* 0x18 */ Vec3f feetPos[2]; // Update by using `Actor_SetFeetPos` in PostLimbDraw
|
||||
/* 0x18 */ Vec3f feetPos[2]; // Update by using `Actor_SetFeetPos` in PostLimbDrawOpa
|
||||
} ActorShape; // size = 0x30
|
||||
|
||||
typedef struct Actor {
|
||||
@@ -289,12 +289,16 @@ typedef struct EnItem00 {
|
||||
/* 0x1A4 */ s8 unk1A4;
|
||||
} EnItem00; // size = 0x1A8
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ Actor base;
|
||||
/* 0x144 */ ActorFunc update;
|
||||
struct EnAObj;
|
||||
|
||||
typedef void (*EnAObjActionFunc)(struct EnAObj*, struct GlobalContext*);
|
||||
|
||||
typedef struct EnAObj {
|
||||
/* 0x000 */ Actor actor;
|
||||
/* 0x144 */ EnAObjActionFunc actionFunc;
|
||||
/* 0x148 */ ColliderCylinder collision;
|
||||
/* 0x194 */ UNK_TYPE1 pad194[0x14];
|
||||
} ActorEnAObj; // size = 0x1A8
|
||||
} EnAObj; // size = 0x1A8
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ ACTORCAT_SWITCH,
|
||||
|
||||
+131
-111
@@ -6,196 +6,216 @@
|
||||
#include "z64dma.h"
|
||||
#include "z64math.h"
|
||||
|
||||
struct GlobalContext;
|
||||
struct Actor;
|
||||
struct SkelAnime;
|
||||
|
||||
#define LINK_ANIMETION_OFFSET(addr, offset) \
|
||||
(SEGMENT_ROM_START(link_animetion) + ((u32)addr & 0xFFFFFF) + ((u32)offset))
|
||||
#define LIMB_DONE 0xFF
|
||||
#define ANIMATION_ENTRY_MAX 50
|
||||
|
||||
#define ANIM_FLAG_UPDATEXZ 0x02
|
||||
#define ANIM_FLAG_UPDATEY 0x10
|
||||
#define ANIM_FLAG_UPDATEY (1 << 1)
|
||||
#define ANIM_FLAG_NOMOVE (1 << 4)
|
||||
|
||||
struct GlobalContext;
|
||||
struct Actor;
|
||||
typedef struct SkelAnime SkelAnime;
|
||||
typedef enum {
|
||||
/* 0 */ ANIMMODE_LOOP,
|
||||
/* 1 */ ANIMMODE_LOOP_INTERP,
|
||||
/* 2 */ ANIMMODE_ONCE,
|
||||
/* 3 */ ANIMMODE_ONCE_INTERP,
|
||||
/* 4 */ ANIMMODE_LOOP_PARTIAL,
|
||||
/* 5 */ ANIMMODE_LOOP_PARTIAL_INTERP
|
||||
} AnimationModes;
|
||||
|
||||
typedef enum {
|
||||
/* -1 */ ANIMTAPER_DECEL = -1,
|
||||
/* 0 */ ANIMTAPER_NONE,
|
||||
/* 1 */ ANIMTAPER_ACCEL
|
||||
} AnimationTapers;
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ Vec3s translation; // Translation relative to parent limb. root limb is a tranlation for entire model.
|
||||
/* 0x006 */ u8 firstChildIndex; // The first child's index into the limb table.
|
||||
/* 0x007 */ u8 nextLimbIndex; // The parent limb's next limb index into the limb table.
|
||||
/* 0x008 */ Gfx* displayLists[1]; // Display lists for the limb. Index 0 is the normal display list, index 1 is the
|
||||
// far model display list.
|
||||
} StandardLimb; // Size = 0xC
|
||||
/* 0x00 */ Vec3s jointPos; // Root is position in model space, children are relative to parent
|
||||
/* 0x06 */ u8 child; // The first child's index into the limb table.
|
||||
/* 0x07 */ u8 sibling; // The parent limb's next limb index into the limb table.
|
||||
/* 0x08 */ Gfx* dList; // Display lists for the limb. Index 0 is the normal display list, index 1 is the
|
||||
// far model display list.
|
||||
} StandardLimb; // size = 0xC
|
||||
|
||||
// Model has limbs with only rigid meshes
|
||||
typedef struct {
|
||||
/* 0x000 */ void** skeletonSeg; // Segment address of SkelLimbIndex.
|
||||
/* 0x004 */ u8 limbCount; // Number of limbs in the model.
|
||||
/* 0x00 */ Vec3s jointPos; // Root is position in model space, children are relative to parent
|
||||
/* 0x06 */ u8 child;
|
||||
/* 0x07 */ u8 sibling;
|
||||
/* 0x08 */ Gfx* dLists[2]; // Near and far
|
||||
} LodLimb; // size = 0x10
|
||||
|
||||
// Model has limbs with only rigid meshes
|
||||
typedef struct {
|
||||
/* 0x00 */ void** segment;
|
||||
/* 0x04 */ u8 limbCount;
|
||||
} SkeletonHeader; // size = 0x8
|
||||
|
||||
// Model has limbs with flexible meshes
|
||||
typedef struct {
|
||||
/* 0x000 */ SkeletonHeader sh;
|
||||
/* 0x008 */ u8 dListCount; // Number of display lists in the model.
|
||||
/* 0x00 */ SkeletonHeader sh;
|
||||
/* 0x08 */ u8 dListCount;
|
||||
} FlexSkeletonHeader; // size = 0xC
|
||||
|
||||
typedef s16 AnimationRotationValue;
|
||||
|
||||
// Index into the frame data table.
|
||||
typedef struct {
|
||||
/* 0x000 */ u16 x;
|
||||
/* 0x002 */ u16 y;
|
||||
/* 0x004 */ u16 z;
|
||||
/* 0x00 */ u16 x;
|
||||
/* 0x02 */ u16 y;
|
||||
/* 0x04 */ u16 z;
|
||||
} JointIndex; // size = 0x06
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ s16 frameCount;
|
||||
/* 0x002 */ s16 unk02;
|
||||
} AnimationHeaderCommon; // size = 0x4
|
||||
/* 0x00 */ s16 frameCount;
|
||||
} AnimationHeaderCommon;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ AnimationHeaderCommon common;
|
||||
/* 0x04 */ s16* frameData; // referenced as tbl
|
||||
/* 0x08 */ JointIndex* jointIndices; // referenced as ref_tbl
|
||||
/* 0x0C */ u16 staticIndexMax;
|
||||
/* 0x000 */ AnimationHeaderCommon common;
|
||||
/* 0x004 */ s16* frameData; // referenced as tbl
|
||||
/* 0x008 */ JointIndex* jointIndices; // referenced as ref_tbl
|
||||
/* 0x00C */ u16 staticIndexMax;
|
||||
} AnimationHeader; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s16 xMax;
|
||||
/* 0x02 */ s16 x;
|
||||
/* 0x04 */ s16 yMax;
|
||||
/* 0x06 */ s16 y;
|
||||
/* 0x08 */ s16 zMax;
|
||||
/* 0x10 */ s16 z;
|
||||
} JointKey; // size = 0x12
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s16 frameCount;
|
||||
/* 0x02 */ s16 limbCount;
|
||||
/* 0x04 */ s16* frameData;
|
||||
/* 0x08 */ JointKey* jointKey;
|
||||
} LegacyAnimationHeader; // size = 0xC
|
||||
|
||||
typedef enum {
|
||||
ANIMATION_LINKANIMETION,
|
||||
ANIMATION_TYPE1,
|
||||
ANIMATION_TYPE2,
|
||||
ANIMATION_TYPE3,
|
||||
ANIMATION_TYPE4,
|
||||
ANIMATION_TYPE5
|
||||
ANIMENTRY_COPYALL,
|
||||
ANIMENTRY_INTERP,
|
||||
ANIMENTRY_COPYTRUE,
|
||||
ANIMENTRY_COPYFALSE,
|
||||
ANIMENTRY_MOVEACTOR
|
||||
} AnimationType;
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ DmaRequest req;
|
||||
/* 0x020 */ OSMesgQueue msgQueue;
|
||||
/* 0x038 */ OSMesg msg;
|
||||
} AnimationEntryType0; // size = 0x3C
|
||||
} AnimEntryLoadFrame; // size = 0x3C
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ u8 unk00;
|
||||
/* 0x000 */ u8 queueFlag;
|
||||
/* 0x001 */ u8 vecCount;
|
||||
/* 0x004 */ Vec3s* dst;
|
||||
/* 0x008 */ Vec3s* src;
|
||||
} AnimationEntryType1; // size = 0xC
|
||||
} AnimEntryCopyAll; // size = 0xC
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ u8 unk00;
|
||||
/* 0x001 */ u8 limbCount;
|
||||
/* 0x004 */ Vec3s* unk04;
|
||||
/* 0x008 */ Vec3s* unk08;
|
||||
/* 0x00C */ f32 unk0C;
|
||||
} AnimationEntryType2; // size = 0x10
|
||||
/* 0x000 */ u8 queueFlag;
|
||||
/* 0x001 */ u8 vecCount;
|
||||
/* 0x004 */ Vec3s* base;
|
||||
/* 0x008 */ Vec3s* mod;
|
||||
/* 0x00C */ f32 weight;
|
||||
} AnimEntryInterp; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ u8 unk00;
|
||||
/* 0x000 */ u8 queueFlag;
|
||||
/* 0x001 */ u8 vecCount;
|
||||
/* 0x004 */ Vec3s* dst;
|
||||
/* 0x008 */ Vec3s* src;
|
||||
/* 0x00C */ u8* index;
|
||||
} AnimationEntryType3; // size = 0x10
|
||||
/* 0x00C */ u8* copyFlag;
|
||||
} AnimEntryCopyTrue; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ u8 unk00;
|
||||
/* 0x000 */ u8 queueFlag;
|
||||
/* 0x001 */ u8 vecCount;
|
||||
/* 0x002 */ char unk02[0x2];
|
||||
/* 0x004 */ Vec3s* dst;
|
||||
/* 0x008 */ Vec3s* src;
|
||||
/* 0x00C */ u8* index;
|
||||
} AnimationEntryType4; // size = 0x10
|
||||
/* 0x00C */ u8* copyFlag;
|
||||
} AnimEntryCopyFalse; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ struct Actor* actor;
|
||||
/* 0x004 */ SkelAnime* skelAnime;
|
||||
/* 0x004 */ struct SkelAnime* skelAnime;
|
||||
/* 0x008 */ f32 unk08;
|
||||
} AnimationEntryType5; // size = 0xC
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ u8 raw[0x3C];
|
||||
} AnimationEntryRaw; // size = 0x3C
|
||||
} AnimEntryMoveActor; // size = 0xC
|
||||
|
||||
typedef union {
|
||||
AnimationEntryRaw raw;
|
||||
AnimationEntryType0 type0;
|
||||
AnimationEntryType1 type1;
|
||||
AnimationEntryType2 type2;
|
||||
AnimationEntryType3 type3;
|
||||
AnimationEntryType4 type4;
|
||||
AnimationEntryType5 type5;
|
||||
} AnimationEntryType; // size = 0x3C
|
||||
AnimEntryLoadFrame load;
|
||||
AnimEntryCopyAll copy;
|
||||
AnimEntryInterp interp;
|
||||
AnimEntryCopyTrue copy1;
|
||||
AnimEntryCopyFalse copy0;
|
||||
AnimEntryMoveActor move;
|
||||
} AnimationEntryData; // size = 0x3C
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ u8 type;
|
||||
/* 0x001 */ u8 unk01;
|
||||
/* 0x004 */ AnimationEntryType types;
|
||||
/* 0x004 */ AnimationEntryData data;
|
||||
} AnimationEntry; // size = 0x40
|
||||
|
||||
typedef struct AnimationContext {
|
||||
/* 0x000 */ s16 animationCount;
|
||||
/* 0x002 */ char unk02[2];
|
||||
/* 0x004 */ AnimationEntry entries[ANIMATION_ENTRY_MAX];
|
||||
} AnimationContext; // size = 0xC84
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ AnimationHeaderCommon common;
|
||||
/* 0x04 */ u32 segment;
|
||||
/* 0x000 */ AnimationHeaderCommon common;
|
||||
/* 0x004 */ u32 segment;
|
||||
} LinkAnimationHeader; // size = 0x8
|
||||
|
||||
struct SkelAnime {
|
||||
/* 0x00 */ u8 limbCount; // joint_Num
|
||||
/* modes 0 and 1 repeat the animation indefinitely
|
||||
* modes 2 and 3 play the animaton once then stop
|
||||
* modes >= 4 play the animation once, and always start at frame 0.
|
||||
*/
|
||||
/* 0x01 */ u8 mode;
|
||||
/* 0x02 */ u8 dListCount;
|
||||
/* 0x03 */ s8 unk03;
|
||||
typedef struct SkelAnime {
|
||||
/* 0x00 */ u8 limbCount; // Number of limbs in the skeleton
|
||||
/* 0x01 */ u8 mode; // 0: loop, 2: play once, 4: partial loop. +1 to interpolate between frames.
|
||||
/* 0x02 */ u8 dListCount; // Number of display lists in a flexible skeleton
|
||||
/* 0x03 */ s8 taper; // Tapering to use when morphing between animations. Only used by Door_Warp1.
|
||||
/* 0x04 */ void** skeleton; // An array of pointers to limbs. Can be StandardLimb, LodLimb, or SkinLimb.
|
||||
/* 0x08 */
|
||||
union {
|
||||
AnimationHeader* animCurrentSeg;
|
||||
LinkAnimationHeader* linkAnimetionSeg;
|
||||
AnimationHeaderCommon* genericSeg;
|
||||
};
|
||||
/* 0x0C */ f32 initialFrame;
|
||||
/* 0x10 */ f32 animFrameCount;
|
||||
/* 0x14 */ f32 totalFrames;
|
||||
/* 0x18 */ f32 animCurrentFrame;
|
||||
/* 0x1C */ f32 animPlaybackSpeed;
|
||||
/* 0x20 */ Vec3s* limbDrawTbl; // now_joint
|
||||
/* 0x24 */ Vec3s* transitionDrawTbl; // morf_joint
|
||||
/* 0x28 */ f32 transCurrentFrame;
|
||||
/* 0x2C */ f32 transitionStep;
|
||||
/* 0x30 */ s32 (*animUpdate)();
|
||||
/* 0x34 */ s8 initFlags;
|
||||
/* 0x35 */ u8 flags;
|
||||
/* 0x36 */ s16 prevFrameRot;
|
||||
/* 0x38 */ Vec3s prevFramePos;
|
||||
/* 0x3E */ Vec3s unk3E;
|
||||
}; // size = 0x44
|
||||
/* 0x08 */ void* animation; // Can be an AnimationHeader or LinkAnimationHeader.
|
||||
/* 0x0C */ f32 startFrame; // In mode 4, start of partial loop.
|
||||
/* 0x10 */ f32 endFrame; // In mode 2, Update returns true when curFrame is equal to this. In mode 4, end of partial loop.
|
||||
/* 0x14 */ f32 animLength; // Total number of frames in the current animation's file.
|
||||
/* 0x18 */ f32 curFrame; // Current frame in the animation
|
||||
/* 0x1C */ f32 playSpeed; // Multiplied by R_UPDATE_RATE / 3 to get the animation's frame rate.
|
||||
/* 0x20 */ Vec3s* jointTable; // Current translation of model and rotations of all limbs
|
||||
/* 0x24 */ Vec3s* morphTable; // Table of values used to morph between animations
|
||||
/* 0x28 */ f32 morphWeight; // Weight of the current animation morph as a fraction in [0,1]
|
||||
/* 0x2C */ f32 morphRate; // Reciprocal of the number of frames in the morph
|
||||
/* 0x30 */ s32 (*update)(); // Can be Loop, Partial loop, Play once, Morph, or Tapered morph. Link only has Loop, Play once, and Morph
|
||||
/* 0x34 */ s8 initFlags; // Flags used when initializing Link's skeleton
|
||||
/* 0x35 */ u8 moveFlags; // Flags used for animations that move the actor in worldspace.
|
||||
/* 0x36 */ s16 prevRot; // Previous rotation in worldspace.
|
||||
/* 0x38 */ Vec3s prevTransl; // Previous modelspace translation.
|
||||
/* 0x3E */ Vec3s baseTransl; // Base modelspace translation.
|
||||
} SkelAnime; // size = 0x44
|
||||
|
||||
typedef s32 (*OverrideLimbDraw)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot,
|
||||
typedef s32 (*OverrideLimbDrawOpa)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot,
|
||||
struct Actor* actor);
|
||||
|
||||
typedef void (*PostLimbDrawOpa)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot,
|
||||
struct Actor* actor);
|
||||
|
||||
typedef s32 (*OverrideLimbDraw)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot,
|
||||
struct Actor* actor, Gfx** gfx);
|
||||
|
||||
typedef void (*PostLimbDraw)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot,
|
||||
struct Actor* actor);
|
||||
struct Actor* actor, Gfx** gfx);
|
||||
|
||||
typedef s32 (*OverrideLimbDraw2)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot,
|
||||
struct Actor* actor, Gfx** gfx);
|
||||
typedef s32 (*OverrideLimbDrawFlex)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot,
|
||||
struct Actor* actor);
|
||||
|
||||
typedef void (*PostLimbDraw2)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot,
|
||||
struct Actor* actor, Gfx** gfx);
|
||||
|
||||
typedef s32 (*OverrideLimbDrawSV)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot,
|
||||
struct Actor* actor);
|
||||
|
||||
typedef void (*PostLimbDrawSV)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList1, Gfx** dList2, Vec3s* rot,
|
||||
struct Actor* actor);
|
||||
typedef void (*PostLimbDrawFlex)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList1, Gfx** dList2, Vec3s* rot,
|
||||
struct Actor* actor);
|
||||
|
||||
typedef void (*UnkActorDraw)(struct GlobalContext* globalCtx, s32 limbIndex, struct Actor* actor);
|
||||
|
||||
typedef void (*AnimationEntryCallback)(struct GlobalContext*, AnimationEntryType*);
|
||||
typedef void (*AnimationEntryCallback)(struct GlobalContext*, AnimationEntryData*);
|
||||
|
||||
extern u32 link_animetion_segment;
|
||||
|
||||
|
||||
@@ -29,7 +29,11 @@ typedef struct {
|
||||
/* 0x00 */ u16 unk0; // action; // "dousa"
|
||||
/* 0x02 */ u16 startFrame;
|
||||
/* 0x04 */ u16 endFrame;
|
||||
/* 0x06 */ UNK_TYPE1 pad6[0x2A];
|
||||
/* 0x06 */ UNK_TYPE1 pad6[0xA];
|
||||
/* 0x10 */ s32 unk10;
|
||||
/* 0x14 */ UNK_TYPE1 pad14[0x8];
|
||||
/* 0x1C */ s32 unk1C;
|
||||
/* 0x20 */ UNK_TYPE1 pad20[0x10];
|
||||
} CsCmdActorAction; // size = 0x30
|
||||
|
||||
typedef struct {
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user