x64 and hsfload improvements, build every REL (#582)

* Port some of hsfload.c

* More byteswaps in hsfload.c

* Finish hsfload besides cenv

* hsfload fixes

* Some x64 improvements

* More x64 improvements

* 64 bit improvements

* Link in lots of files

* Fix armem bug

* Fix dll killing, load modeseldll

* Fixes, clearing TODOs

* Tons of warning/error fixes

* Linux build fixes

* Add -fPIC flag to fix build on x64 linux

* GXSETARRAY sizes and misc fixes

* More fixes

* Build all RELs

* Implement C_Quat functions

* Fix PAL build
This commit is contained in:
Dávid Balatoni 2025-04-14 18:02:42 +02:00 committed by GitHub
parent bc19d2263b
commit 34cf507e3f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
186 changed files with 3256 additions and 1540 deletions

3
.gitmodules vendored
View file

@ -4,3 +4,6 @@
[submodule "extern/aurora"]
path = extern/aurora
url = https://github.com/dbalatoni13/aurora.git
[submodule "extern/longjmp_win64"]
path = extern/longjmp_win64
url = https://github.com/GlinkieGamesInc/longjmp_win64.git

View file

@ -1,8 +1,8 @@
cmake_minimum_required(VERSION 3.13)
if (APPLE)
project(marioparty4 LANGUAGES C CXX OBJC)
project(marioparty4 LANGUAGES C CXX OBJC)
else ()
project(marioparty4 LANGUAGES C CXX)
project(marioparty4 LANGUAGES C CXX)
endif ()
set(CMAKE_C_STANDARD 11)
@ -11,88 +11,126 @@ set(CMAKE_CXX_STANDARD 20)
set(VERSION 0)
# Set build type to Debug if not specified
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Debug)
endif()
if (CMAKE_SYSTEM_NAME STREQUAL Linux)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unknown-pragmas -Wno-unused-variable -Wno-unused-parameter")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32 -fsanitize=address -fsanitize-address-use-after-scope")
set(CMAKE_PREFIX_PATH /usr)
set(CMAKE_LIBRARY_ARCHITECTURE i386-linux-gnu)
set(CMAKE_LIBRARY_PATH "/usr/lib32" CACHE PATH "")
set(CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX 32)
if (NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Debug)
endif ()
if(APPLE)
add_compile_options(-Wno-declaration-after-statement)
if (CMAKE_SYSTEM_NAME STREQUAL Linux)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32 -fsanitize=address -fsanitize-address-use-after-scope -Wno-unknown-pragmas -Wno-unused-variable -Wno-unused-parameter -fPIC")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32 -fsanitize=address -fsanitize-address-use-after-scope -Wno-register -fPIC")
set(CMAKE_PREFIX_PATH /usr)
set(CMAKE_LIBRARY_ARCHITECTURE i386-linux-gnu)
set(CMAKE_LIBRARY_PATH "/usr/lib32" "/usr/lib/i386-linux-gnu" CACHE PATH "")
set(CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX 32)
elseif (APPLE)
add_compile_options(-Wno-declaration-after-statement)
elseif (MSVC)
add_compile_options(/bigobj)
endif ()
add_compile_options(-fsanitize=address)
if (MSVC)
add_compile_options(/bigobj)
endif ()
add_subdirectory(extern/aurora EXCLUDE_FROM_ALL)
add_subdirectory(extern/musyx EXCLUDE_FROM_ALL)
set(DOLPHIN_FILES
src/dolphin/mtx/mtx.c
src/dolphin/mtx/mtx44.c
src/dolphin/mtx/vec.c
src/dolphin/os/OSAlloc.c
src/dolphin/os/OSArena.c
src/dolphin/os/OSStopwatch.c
src/dolphin/mtx/mtx.c
src/dolphin/mtx/mtx44.c
src/dolphin/mtx/vec.c
src/dolphin/mtx/quat.c
src/dolphin/os/OSAlloc.c
src/dolphin/os/OSArena.c
src/dolphin/os/OSStopwatch.c
)
set(GAME_FILES
src/game/armem.c
src/game/card.c
src/game/ClusterExec.c
src/game/data.c
src/game/decode.c
src/game/dvd.c
src/game/EnvelopeExec.c
src/game/esprite.c
src/game/fault.c
src/game/flag.c
src/game/font.c
src/game/frand.c
src/game/gamework.c
src/game/hsfanim.c
src/game/hsfdraw.c
src/game/hsfex.c
src/game/hsfload.c
src/game/hsfman.c
src/game/hsfmotion.c
src/game/init.c
src/game/main.c
src/game/malloc.c
src/game/memory.c
src/game/objdll.c
src/game/objmain.c
src/game/ovllist.c
src/game/ShapeExec.c
src/game/sprman.c
src/game/sprput.c
src/game/pad.c
src/game/perf.c
src/game/printfunc.c
src/game/process.c
src/game/window.c
src/game/wipe.c
src/game/board/audio.c
src/game/board/basic_space.c
src/game/board/battle.c
src/game/board/block.c
src/game/board/boo.c
src/game/board/boo_house.c
src/game/board/bowser.c
src/game/board/char_wheel.c
src/game/board/com.c
src/game/board/com_path.c
src/game/board/fortune.c
src/game/board/item.c
src/game/board/last5.c
src/game/board/lottery.c
src/game/board/main.c
src/game/board/mg_setup.c
src/game/board/model.c
src/game/board/mushroom.c
src/game/board/pause.c
src/game/board/player.c
src/game/board/roll.c
src/game/board/shop.c
src/game/board/space.c
src/game/board/star.c
src/game/board/start.c
src/game/board/tutorial.c
src/game/board/ui.c
src/game/board/view.c
src/game/board/warp.c
src/game/board/window.c
src/game/armem.c
src/game/card.c
src/game/chrman.c
src/game/ClusterExec.c
src/game/data.c
src/game/decode.c
src/game/dvd.c
src/game/EnvelopeExec.c
src/game/esprite.c
src/game/fault.c
src/game/flag.c
src/game/font.c
src/game/frand.c
src/game/gamework.c
src/game/hsfanim.c
src/game/hsfdraw.c
src/game/hsfex.c
src/game/hsfload.c
src/game/hsfman.c
src/game/hsfmotion.c
src/game/init.c
src/game/main.c
src/game/malloc.c
src/game/mapspace.c
src/game/memory.c
src/game/messdata.c
src/game/minigame_seq.c
src/game/objdll.c
src/game/objmain.c
src/game/objsub.c
src/game/objsysobj.c
src/game/ovllist.c
src/game/pad.c
src/game/perf.c
src/game/printfunc.c
src/game/process.c
src/game/saveload.c
src/game/ShapeExec.c
src/game/sprman.c
src/game/sprput.c
src/game/window.c
src/game/wipe.c
src/libhu/setvf.c
src/libhu/subvf.c
)
set(PORT_FILES
src/port/ar.c
src/port/arq.c
src/port/audio.c
src/port/byteswap.cpp
src/port/dvd.c
src/port/imgui.cpp
src/port/OS.c
src/port/stubs.c
src/port/ar.c
src/port/arq.c
src/port/audio.c
src/port/byteswap.cpp
src/port/dvd.c
src/port/imgui.cpp
src/port/OS.c
src/port/stubs.c
)
source_group("Dolphin" FILES ${DOLPHIN_FILES})
@ -100,37 +138,62 @@ source_group("Game" FILES ${GAME_FILES})
source_group("Port" FILES ${PORT_FILES})
if (NOT MSVC)
foreach(file ${DOLPHIN_FILES})
set_source_files_properties(${file} PROPERTIES COMPILE_FLAGS "-std=c89 -Dinline=")
endforeach()
foreach(file ${GAME_FILES})
set_source_files_properties(${file} PROPERTIES COMPILE_FLAGS "-std=c89 -Dinline=")
endforeach()
foreach (file ${DOLPHIN_FILES})
set_source_files_properties(${file} PROPERTIES COMPILE_FLAGS "-Dinline=")
endforeach ()
foreach (file ${GAME_FILES})
set_source_files_properties(${file} PROPERTIES COMPILE_FLAGS "-Dinline=")
endforeach ()
endif ()
add_library(dol SHARED ${DOLPHIN_FILES} ${GAME_FILES} ${PORT_FILES})
target_compile_definitions(dol PRIVATE TARGET_PC TARGET_DOL VERSION=${VERSION} MUSY_VERSION_MAJOR=1 MUSY_VERSION_MINOR=5 MUSY_VERSION_PATCH=4)
target_compile_definitions(dol PRIVATE TARGET_PC NON_MATCHING TARGET_DOL VERSION=${VERSION} MUSY_VERSION_MAJOR=1 MUSY_VERSION_MINOR=5 MUSY_VERSION_PATCH=4)
target_include_directories(dol PRIVATE include build/GMPE01_00/include)
target_link_libraries(dol PRIVATE aurora::core aurora::gx aurora::vi musyx)
if (MSVC)
target_link_options(dol PRIVATE "/DEF:${CMAKE_SOURCE_DIR}/dol.def")
if (CMAKE_SIZEOF_VOID_P EQUAL 8)
enable_language(ASM_MASM)
target_sources(dol PRIVATE extern/longjmp_win64/longjmp_win64.asm)
set_source_files_properties(extern/longjmp_win64/longjmp_win64.asm PROPERTIES LANGUAGE ASM_MASM)
endif ()
target_link_options(dol PRIVATE "/DEF:${CMAKE_SOURCE_DIR}/dol.def")
else ()
target_compile_options(dol PRIVATE "-fvisibility=default")
endif()
# target_compile_options(dol PRIVATE "-fvisibility=hidden")
# target_link_options(dol PRIVATE "LINKER:--version-script=${CMAKE_CURRENT_SOURCE_DIR}/dol.map")
endif ()
add_executable(marioparty4 src/port/portmain.c)
target_compile_definitions(marioparty4 PRIVATE TARGET_PC VERSION=${VERSION})
target_compile_definitions(marioparty4 PRIVATE TARGET_PC NON_MATCHING VERSION=${VERSION})
target_include_directories(marioparty4 PRIVATE include)
target_link_libraries(marioparty4 PRIVATE dol aurora::main)
add_library(bootDll SHARED src/REL/bootDll/main.c src/REL/bootDll/language.c)
target_compile_definitions(bootDll PRIVATE TARGET_PC VERSION=${VERSION})
target_include_directories(bootDll PRIVATE include build/GMPE01_00/include)
if (MSVC)
set_target_properties(bootDll PROPERTIES LINK_FLAGS "/EXPORT:ObjectSetup")
else ()
endif()
set(CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS OFF)
target_link_libraries(bootDll PRIVATE dol musyx)
add_dependencies(marioparty4 bootDll)
file(GLOB REL_DIRS RELATIVE ${CMAKE_SOURCE_DIR}/src/REL ${CMAKE_SOURCE_DIR}/src/REL/*)
set(EXCLUDED_RELS "nisDll" "safDll")
foreach (dir ${REL_DIRS})
if (IS_DIRECTORY ${CMAKE_SOURCE_DIR}/src/REL/${dir})
if (dir IN_LIST EXCLUDED_RELS)
continue()
endif()
file(GLOB_RECURSE REL_FILES src/REL/${dir}/*.c)
if (REL_FILES)
add_library(${dir} SHARED ${REL_FILES})
if (dir MATCHES "^w..Dll")
target_sources(${dir} PRIVATE src/REL/board_executor.c)
endif()
target_compile_definitions(${dir} PRIVATE TARGET_PC NON_MATCHING VERSION=${VERSION})
target_include_directories(${dir} PRIVATE include build/GMPE01_00/include)
if (MSVC)
set_target_properties(${dir} PROPERTIES LINK_FLAGS "/EXPORT:ObjectSetup")
elseif (NOT CMAKE_SYSTEM_NAME STREQUAL Windows)
target_compile_options(${dir} PRIVATE "-fvisibility=hidden")
target_link_options(${dir} PRIVATE "LINKER:--version-script=${CMAKE_CURRENT_SOURCE_DIR}/rel.map")
set_target_properties(${dir} PROPERTIES PREFIX "")
endif ()
target_link_libraries(${dir} PRIVATE dol musyx)
add_dependencies(marioparty4 ${dir})
endif ()
endif ()
endforeach ()

View file

@ -98,4 +98,4 @@ After you got the GameCube build up and running for `GMPE01_00`:
```
Linux and MacOS, and x64 support is coming later.
- Open the solution in Visual Studio and build. [Fix for UtilsVulkan.h](https://github.com/encounter/dawn-cmake/blob/f10e70a26db00bb89f88be4204cf49ffc869e194/src/dawn/native/vulkan/UtilsVulkan.h#L128-L132)
- Open the solution in Visual Studio and build.

View file

@ -2,7 +2,7 @@ fn_1_0 = .text:0x00000000; // type:function size:0x4C
fn_1_4C = .text:0x0000004C; // type:function size:0x58
_prolog = .text:0x000000A4; // type:function size:0x54 scope:global
_epilog = .text:0x000000F8; // type:function size:0x4C scope:global
fn_1_144 = .text:0x00000144; // type:function size:0xC8
ObjectSetup = .text:0x00000144; // type:function size:0xC8
fn_1_20C = .text:0x0000020C; // type:function size:0x28
fn_1_234 = .text:0x00000234; // type:function size:0x20
fn_1_254 = .text:0x00000254; // type:function size:0xD8

View file

@ -2,7 +2,7 @@ fn_1_0 = .text:0x00000000; // type:function size:0xEC
fn_1_EC = .text:0x000000EC; // type:function size:0x115C
_prolog = .text:0x00001248; // type:function size:0x54 scope:global
_epilog = .text:0x0000129C; // type:function size:0x4C scope:global
fn_1_12E8 = .text:0x000012E8; // type:function size:0xB8
ObjectSetup = .text:0x000012E8; // type:function size:0xB8
fn_1_13A0 = .text:0x000013A0; // type:function size:0x68C
_ctors = .ctors:0x00000000; // type:label scope:global data:4byte
_dtors = .dtors:0x00000000; // type:label scope:global data:4byte

View file

@ -103,7 +103,7 @@ CreateNote = .text:0x00007710; // type:function size:0x190 scope:local
CreateNoteSpawner = .text:0x000078A0; // type:function size:0x60 scope:local
KillNoteSpawner = .text:0x00007900; // type:function size:0x3C scope:local
ExecNoteSpawner = .text:0x0000793C; // type:function size:0x5C4 scope:local
PlaySound = .text:0x00007F00; // type:function size:0x148 scope:local
OptionPlaySound = .text:0x00007F00; // type:function size:0x148 scope:local
FadeSound = .text:0x00008048; // type:function size:0x9C scope:local
OptionRecordCreate = .text:0x000080E4; // type:function size:0x178
OptionRecordKill = .text:0x0000825C; // type:function size:0x54

View file

@ -31,7 +31,7 @@ PresentSelectedIDSet = .text:0x0000186C; // type:function size:0xBC
ExecSelectRoom = .text:0x00001928; // type:function size:0x680 scope:local
ChangeRoom = .text:0x00001FA8; // type:function size:0x140 scope:local
ExecSelectPresent = .text:0x000020E8; // type:function size:0x5A4 scope:local
GetCursorPos = .text:0x0000268C; // type:function size:0x7C scope:local
PresentGetCursorPos = .text:0x0000268C; // type:function size:0x7C scope:local
SetCameraRot = .text:0x00002708; // type:function size:0x6C scope:local
RotateCamera = .text:0x00002774; // type:function size:0x17C scope:local
CameraRotationDoneCheck = .text:0x000028F0; // type:function size:0x34 scope:local

View file

@ -2,7 +2,7 @@ fn_1_0 = .text:0x00000000; // type:function size:0x4C
fn_1_4C = .text:0x0000004C; // type:function size:0x58
_prolog = .text:0x000000A4; // type:function size:0x54 scope:global
_epilog = .text:0x000000F8; // type:function size:0x4C scope:global
fn_1_144 = .text:0x00000144; // type:function size:0xC8
ObjectSetup = .text:0x00000144; // type:function size:0xC8
fn_1_20C = .text:0x0000020C; // type:function size:0x28
fn_1_234 = .text:0x00000234; // type:function size:0x20
fn_1_254 = .text:0x00000254; // type:function size:0xD8

View file

@ -2,7 +2,7 @@ fn_1_0 = .text:0x00000000; // type:function size:0xEC
fn_1_EC = .text:0x000000EC; // type:function size:0x115C
_prolog = .text:0x00001248; // type:function size:0x54 scope:global
_epilog = .text:0x0000129C; // type:function size:0x4C scope:global
fn_1_12E8 = .text:0x000012E8; // type:function size:0xB8
ObjectSetup = .text:0x000012E8; // type:function size:0xB8
fn_1_13A0 = .text:0x000013A0; // type:function size:0x68C
_ctors = .ctors:0x00000000; // type:label scope:global data:4byte
_dtors = .dtors:0x00000000; // type:label scope:global data:4byte

View file

@ -2,7 +2,7 @@ fn_1_0 = .text:0x00000000; // type:function size:0x4C
fn_1_4C = .text:0x0000004C; // type:function size:0x58
_prolog = .text:0x000000A4; // type:function size:0x54 scope:global
_epilog = .text:0x000000F8; // type:function size:0x4C scope:global
fn_1_144 = .text:0x00000144; // type:function size:0xC8
ObjectSetup = .text:0x00000144; // type:function size:0xC8
fn_1_20C = .text:0x0000020C; // type:function size:0x28
fn_1_234 = .text:0x00000234; // type:function size:0x20
fn_1_254 = .text:0x00000254; // type:function size:0xD8

View file

@ -103,7 +103,7 @@ CreateNote = .text:0x00007710; // type:function size:0x190 scope:local
CreateNoteSpawner = .text:0x000078A0; // type:function size:0x60 scope:local
KillNoteSpawner = .text:0x00007900; // type:function size:0x3C scope:local
ExecNoteSpawner = .text:0x0000793C; // type:function size:0x5C4 scope:local
PlaySound = .text:0x00007F00; // type:function size:0x148 scope:local
OptionPlaySound = .text:0x00007F00; // type:function size:0x148 scope:local
FadeSound = .text:0x00008048; // type:function size:0x9C scope:local
OptionRecordCreate = .text:0x000080E4; // type:function size:0x178
OptionRecordKill = .text:0x0000825C; // type:function size:0x54

View file

@ -31,7 +31,7 @@ PresentSelectedIDSet = .text:0x0000186C; // type:function size:0xBC
ExecSelectRoom = .text:0x00001928; // type:function size:0x680 scope:local
ChangeRoom = .text:0x00001FA8; // type:function size:0x140 scope:local
ExecSelectPresent = .text:0x000020E8; // type:function size:0x5A4 scope:local
GetCursorPos = .text:0x0000268C; // type:function size:0x7C scope:local
PresentGetCursorPos = .text:0x0000268C; // type:function size:0x7C scope:local
SetCameraRot = .text:0x00002708; // type:function size:0x6C scope:local
RotateCamera = .text:0x00002774; // type:function size:0x17C scope:local
CameraRotationDoneCheck = .text:0x000028F0; // type:function size:0x34 scope:local

1148
dol.def

File diff suppressed because it is too large Load diff

2
extern/aurora vendored

@ -1 +1 @@
Subproject commit 3b56e337c08a1dd4946c226298011364c319c7a2
Subproject commit a18cdf3b599b482c850096994cef09ba3920851b

1
extern/longjmp_win64 vendored Submodule

@ -0,0 +1 @@
Subproject commit d04c5b7b486dbd2b80610fe2a5880e833933807f

2
extern/musyx vendored

@ -1 +1 @@
Subproject commit a579f4d4abbac1c67fddf0d361291320f81a7b6c
Subproject commit 37e8ecd4e6503e90b97ea81cd7d669357861d501

View file

@ -3,7 +3,7 @@
#include "game/hsfman.h"
#include "game/object.h"
extern u8 texMtxTbl[];
SHARED_SYM extern u8 texMtxTbl[];
#define FABS(x) ((x < 0.0f) ? -(x) : (x))

View file

@ -109,7 +109,7 @@ typedef struct _unkStruct6 {
m440Func6 unk38;
s16 unk3C;
s16 unk3E;
} unkStruct6; // sizeof 0x40
} unkStruct6; // sizeof 0x40 // TODO same as unkStruct14?
typedef struct _unkStruct7 {
GXColor unk0;
@ -178,7 +178,8 @@ typedef struct _unkStruct13 {
typedef struct _unkStruct14 {
s16 unk0;
s16 unk2;
char unk4[0x8];
char unk4[4];
s32 unk8;
void *unkC;
char unk10[0x4];
void *unk14;

View file

@ -29,9 +29,6 @@ typedef struct {
HsfObject *obj; // 0030
} HuObjUnk;
extern Vec CRot;
extern Vec Center;
extern float CZoom;
void fn_1_29C();
void fn_1_28F8(Vec *arg0, Vec *arg1);
void fn_1_37DC(omObjData *);

View file

@ -27,7 +27,9 @@ typedef struct datalist_sprite {
GXColor color;
} DataListSprite;
// void fn_1_1EC0(s16 view);
#ifndef __MWERKS__
void fn_1_1EC0(s16 view);
#endif
s32 fn_1_2490(void);
s32 fn_1_37DC(void);

View file

@ -26,7 +26,7 @@ typedef struct tutorial_scene {
TutorialSceneFunc func;
} TutorialScene;
extern s32 boardTutorialData[4];
SHARED_SYM extern s32 boardTutorialData[4];
void HostPosSet(s16);
void fn_1_1FB0(void);

View file

@ -20,7 +20,7 @@ extern "C" {
#define ARQ_PRIORITY_LOW 0
#define ARQ_PRIORITY_HIGH 1
typedef void (*ARQCallback)(u32 pointerToARQRequest);
typedef void (*ARQCallback)(uintptr_t pointerToARQRequest);
typedef struct ARQRequest {
@ -37,7 +37,7 @@ typedef struct ARQRequest {
void ARQInit(void);
void ARQReset(void);
void ARQPostRequest(ARQRequest* task, u32 owner, u32 type, u32 priority, u32 source, u32 dest,
void ARQPostRequest(ARQRequest* task, u32 owner, u32 type, u32 priority, uintptr_t source, uintptr_t dest,
u32 length, ARQCallback callback);
void ARQRemoveRequest(ARQRequest* task);
void ARQRemoveOwnerRequest(u32 owner);

View file

@ -20,9 +20,10 @@ void GXSetTevIndirect(GXTevStageID tev_stage, GXIndTexStageID ind_stage, GXIndTe
GXIndTexWrap wrap_t, GXBool add_prev, GXBool ind_lod,
GXIndTexAlphaSel alpha_sel);
//Must be implicit to match m455dll
//void GXSetTevIndWarp(GXTevStageID tev_stage, GXIndTexStageID ind_stage, GXBool signed_offsets,
// GXBool replace_mode, GXIndTexMtxID matrix_sel);
#ifndef __MWERKS__
void GXSetTevIndWarp(GXTevStageID tev_stage, GXIndTexStageID ind_stage, GXBool signed_offsets,
GXBool replace_mode, GXIndTexMtxID matrix_sel);
#endif
void GXSetTevIndTile (GXTevStageID tev_stage, GXIndTexStageID ind_stage,
u16 tilesize_s, u16 tilesize_t,
u16 tilespacing_s, u16 tilespacing_t,

View file

@ -39,6 +39,7 @@ typedef struct {
#define MTXRadToDeg(a) ((a)*57.29577951f)
#define MTXRowCol(m, r, c) ((m)[(r)][(c)])
void C_MTXIdentity(Mtx m);
void C_MTXCopy(const Mtx src, Mtx dst);
void C_MTXConcat(const Mtx a, const Mtx b, Mtx ab);
@ -46,6 +47,8 @@ void C_MTXConcatArray(const Mtx a, const Mtx* srcBase, Mtx* dstBase, u32 count);
void C_MTXTranspose(const Mtx src, Mtx xPose);
u32 C_MTXInverse(const Mtx src, Mtx inv);
u32 C_MTXInvXpose(const Mtx src, Mtx invX);
void C_MTXReorder(const Mtx src, ROMtx dest);
void C_MTXROMultVecArray(const ROMtx m, const Vec *srcBase, Vec *dstBase, u32 count);
#ifdef GEKKO
void PSMTXIdentity(Mtx m);

View file

@ -84,8 +84,8 @@ PADSamplingCallback PADSetSamplingCallback(PADSamplingCallback);
#ifdef TARGET_PC
/* New API to facilitate controller interactions */
typedef struct PADDeadZones {
bool emulateTriggers;
bool useDeadzones;
BOOL emulateTriggers;
BOOL useDeadzones;
u16 stickDeadZone;
u16 substickDeadZone;
u16 leftTriggerActivationZone;
@ -118,7 +118,7 @@ const char* PADGetNativeButtonName(u32 button);
/* Returns any pressed native button */
s32 PADGetNativeButtonPressed(u32 port);
void PADRestoreDefaultMapping(u32 port);
void PADBlockInput(bool block);
void PADBlockInput(BOOL block);
#endif
#ifdef __cplusplus

View file

@ -4,7 +4,9 @@
#include "math.h"
#include "dolphin/mtx.h"
#ifndef M_PI
#define M_PI 3.141592653589793
#endif
typedef struct vec2f {
float x;
@ -36,6 +38,7 @@ typedef struct vec2f {
#ifndef __MWERKS__
void HuSetVecF(Vec *arg0, f32 arg8, f32 arg9, f32 argA);
void HuSubVecF(Vec* out, Vec* in, Vec* sub);
#endif
#endif

View file

@ -2,6 +2,7 @@
#define _GAME_AUDIO_H
#include "dolphin.h"
#include "version.h"
typedef struct sndGrpTbl_s {
s16 ovl;
@ -74,6 +75,6 @@ extern float Snd3DDistOffset;
extern s32 musicOffF;
extern u8 fadeStat;
extern SNDGRPTBL sndGrpTable[];
SHARED_SYM extern SNDGRPTBL sndGrpTable[];
#endif

View file

@ -3,6 +3,8 @@
#include "dolphin.h"
void BoardLandBlueExec(s32 player, s32 space);
void BoardLandRedExec(s32 player, s32 space);
void BoardEventLandBlue(s32, s32);
void BoardEventLandRed(s32, s32);
s8 BoardCoinChgCreate(Vec*, s8);

View file

@ -8,10 +8,6 @@ s16 BoardBooCreate(s32 arg0, Vec *arg1);
void BoardBooKill(void);
s32 BoardBooStealTypeSet(s32 arg0);
s32 BoardBooStealMain(void);
BOOL CheckBallCoinDone(void);
void TakeBallStar(void);
void ExecTakeBallStar(omObjData *arg0);
BOOL CheckTakeBallStarDone(void);
s32 BoardBooStealValueGet(s16 *arg0, s16 *arg1);
BOOL BoardBooStealLightCheck(void);

View file

@ -8,6 +8,7 @@ void BoardBooHouseHostSet(s16);
s16 BoardBooHouseHostGet(void);
void BoardBooHouseCreate(void);
void BoardBooHouseExec(s32);
void BoardBooHouseKill(void);
s32 BoardBooComUseCheck(s32);
void BoardBooHouseTutorialExec(void);

View file

@ -0,0 +1,8 @@
#ifndef _BOARD_BOWSER_H
#define _BOARD_BOWSER_H
#include "game/process.h"
void BoardBowserExec(s32 player, s32 space);
#endif

View file

@ -0,0 +1,8 @@
#ifndef _BOARD_FORTUNE_H
#define _BOARD_FORTUNE_H
#include "game/process.h"
void BoardFortuneExec(s32 player, s32 space);
#endif

View file

@ -6,5 +6,8 @@
void BoardItemStart(s32 arg0, s32 arg1);
BOOL BoardItemDoneCheck(void);
void BoardItemBagItemSet(s16 *arg0);
#ifndef __MWERKS__
void BoardItemPlayerRestore(s32 arg0, s32 arg1);
#endif
#endif

View file

@ -1,72 +1,73 @@
#ifndef _BOARD_MAIN_H
#define _BOARD_MAIN_H
#include "dolphin.h"
#include "game/data.h"
#include "game/gamework_data.h"
#include "game/object.h"
#include "game/data.h"
#include "dolphin.h"
#define BOARD_ID_MAIN1 0 //TOADS_MIDWAY_MADNESS
#define BOARD_ID_MAIN2 1 //GOOMBAS_GREEDY_GALA
#define BOARD_ID_MAIN3 2 //SHY_GUYS_JUNGLE_JAM
#define BOARD_ID_MAIN4 3 //BOOS_HAUNTED_BASH
#define BOARD_ID_MAIN5 4 //KOOPAS_SEASIDE_SOIREE
#define BOARD_ID_MAIN6 5 //BOWSERS_GNARLY_PARTY
#define BOARD_ID_TUTORIAL 6 //TUTORIAL_BOARD
#define BOARD_ID_EXTRA1 7 //MEGA_BOARD_MAYHEM
#define BOARD_ID_EXTRA2 8 //MINI_BOARD_MAD_DASH
#define BOARD_ID_MAIN1 0 // TOADS_MIDWAY_MADNESS
#define BOARD_ID_MAIN2 1 // GOOMBAS_GREEDY_GALA
#define BOARD_ID_MAIN3 2 // SHY_GUYS_JUNGLE_JAM
#define BOARD_ID_MAIN4 3 // BOOS_HAUNTED_BASH
#define BOARD_ID_MAIN5 4 // KOOPAS_SEASIDE_SOIREE
#define BOARD_ID_MAIN6 5 // BOWSERS_GNARLY_PARTY
#define BOARD_ID_TUTORIAL 6 // TUTORIAL_BOARD
#define BOARD_ID_EXTRA1 7 // MEGA_BOARD_MAYHEM
#define BOARD_ID_EXTRA2 8 // MINI_BOARD_MAD_DASH
#define BOARD_FABS(value) ((value < 0) ? -(value) : (value))
typedef struct board_focus_data {
u16 view_type;
s16 time;
s16 max_time;
float fov_start;
float fov_end;
float zoom_start;
float zoom_end;
Vec rot_start;
Vec rot_end;
Vec target_start;
Vec target_end;
u16 view_type;
s16 time;
s16 max_time;
float fov_start;
float fov_end;
float zoom_start;
float zoom_end;
Vec rot_start;
Vec rot_end;
Vec target_start;
Vec target_end;
} BoardFocusData;
typedef struct board_camera_data {
struct {
u8 hide_all : 1;
u8 moving : 1;
u8 quaking : 1;
};
u16 mask;
s16 target_mdl;
s16 target_space;
s32 quake_timer;
float quake_strength;
float fov;
float near;
float far;
float aspect;
float viewport_x;
float viewport_y;
float viewport_w;
float viewport_h;
float viewport_near;
float viewport_far;
Vec pos;
Vec up;
Vec target;
Vec offset;
Vec rot;
float zoom;
void (*pos_calc)(struct board_camera_data *);
BoardFocusData focus;
struct {
u8 hide_all : 1;
u8 moving : 1;
u8 quaking : 1;
};
u16 mask;
s16 target_mdl;
s16 target_space;
s32 quake_timer;
float quake_strength;
float fov;
float nnear;
float ffar;
float aspect;
float viewport_x;
float viewport_y;
float viewport_w;
float viewport_h;
float viewport_near;
float viewport_far;
Vec pos;
Vec up;
Vec target;
Vec offset;
Vec rot;
float zoom;
void (*pos_calc)(struct board_camera_data *);
BoardFocusData focus;
} BoardCameraData;
extern BoardCameraData boardCamera;
extern Process *boardObjMan;
extern Process *boardMainProc;
extern u32 boardRandSeed;
SHARED_SYM extern Process *boardObjMan;
SHARED_SYM extern Process *boardMainProc;
SHARED_SYM extern u32 boardRandSeed;
extern omObjData *boardMainObj;
typedef void (*BoardFunc)(void);
@ -78,11 +79,11 @@ typedef void (*BoardCameraPosCalcFunc)(BoardCameraData *camera);
typedef void (*BoardTurnStartHook)(s32 player, s32 space);
extern BoardTurnStartHook boardTurnStartFunc;
extern void (*boardStarShowNextHook)(void);
extern void (*boardStarGiveHook)(void);
extern BoardBowserHook boardBowserHook;
extern BoardFunc boardTurnFunc;
SHARED_SYM extern BoardTurnStartHook boardTurnStartFunc;
SHARED_SYM extern void (*boardStarShowNextHook)(void);
SHARED_SYM extern void (*boardStarGiveHook)(void);
SHARED_SYM extern BoardBowserHook boardBowserHook;
SHARED_SYM extern BoardFunc boardTurnFunc;
extern BoardLightHook boardLightResetHook;
extern BoardLightHook boardLightSetHook;
@ -119,12 +120,15 @@ void BoardCameraTargetSpaceSet(s32 space);
void BoardCameraQuakeSet(s32 duration, float strength);
void BoardCameraQuakeReset();
void BoardCameraTargetSet(float x, float y, float z);
#ifndef __MWERKS__
void BoardCameraPosCalcFuncSet(BoardCameraPosCalcFunc func);
#endif
void BoardCameraPosSet(float x, float y, float z);
void BoardCameraXRotZoomSet(float zoom, float x_rot);
void BoardCameraZoomSet(float zoom);
void BoardCameraRotSet(float x, float y);
void BoardCameraNearFarSet(float near, float far);
void BoardCameraNearFarGet(float *near, float *far);
void BoardCameraNearFarSet(float nnear, float ffar);
void BoardCameraNearFarGet(float *nnear, float *ffar);
void BoardCameraMotionStart(s16 model_target, Vec *rot_target, float zoom_target, float fov_target);
void BoardCameraMotionStartEx(s16 model_target, Vec *rot_target, Vec *offset_end, float zoom_target, float fov_target, s16 max_time);
void BoardCameraFovSet(float fov);
@ -166,4 +170,4 @@ void BoardTauntKill(void);
s32 BoardDataDirReadAsync(s32 data_num);
void BoardDataAsyncWait(s32 status);
#endif
#endif

View file

@ -41,6 +41,7 @@ s32 BoardModelMotionUpdateSet(s16 model, s32 flag);
s32 BoardModelVoiceEnableSet(s16 model, s32 motion, s32 flag);
s32 BoardModelMotionStart(s16 model, s32 slot, u32 attr);
s32 BoardModelMotionShiftSet(s16 model, s32 motion, float time, float shift_time, u32 attr);
s32 BoardModelMotionShiftIDGet(s16 model);
s32 BoardModelAttrSet(s16 model, u32 attr);
s32 BoardModelAttrReset(s16 model, u32 attr);
s32 BoardModelMotionTimeSet(s16 model, float time);

View file

@ -13,7 +13,7 @@
#include "game/board/space.h"
#include "game/board/ui.h"
extern s16 boardPlayerMdl[4];
SHARED_SYM extern s16 boardPlayerMdl[4];
static inline s32 BoardPlayerHandicapGet(s32 player)
{
@ -97,6 +97,9 @@ void BoardJunctionMaskReset(s32);
void BoardJunctionMaskZero(void);
void BoardPlayerVoiceEnableSet(s32, s32, s32);
#ifndef __MWERKS__
void BoardPlayerMoveBetween(s32 arg0, s32 arg1, s32 arg2);
#endif
void BoardPlayerMoveTo(s32, s32);
void BoardPlayerMoveToAsync(s32, s32);

View file

@ -17,6 +17,7 @@ typedef struct board_space {
u16 link[BOARD_SPACE_LINKMAX+1];
} BoardSpace;
s32 BoardSpaceWalkExec(s32 player, s32 space);
void BoardSpaceWalkEventFuncSet(BoardSpaceEventFunc func);
void BoardSpaceWalkMiniEventFuncSet(BoardSpaceEventFunc func);
void BoardSpaceLandEventFuncSet(BoardSpaceEventFunc func);
@ -27,6 +28,7 @@ BoardSpace *BoardSpaceGet(s32 layer, s32 index);
void BoardSpaceAttrSet(s32 layer, u32 attr);
void BoardSpaceAttrReset(s32 layer, u32 attr);
u32 BoardSpaceFlagGet(s32 layer, s32 index);
void BoardSpaceTypeForce(u16 from, u16 to);
s32 BoardSpaceTypeGet(s32 layer, s32 index);
void BoardSpaceTypeSet(s32 layer, s32 index, s32 type);
s32 BoardSpacePosGet(s32 layer, s32 index, Vec *pos);
@ -40,6 +42,7 @@ s32 BoardSpaceLinkTargetListGet(s32 layer, s32 target, s16 *list);
s32 BoardSpaceLinkTypeSearch(s32 layer, s32 target, u16 type);
s32 BoardSpaceLinkTransformGet(s32 flag, Vec *pos, Vec *rot, Vec *scale);
void BoardSpaceHostSet(s32 space);
void BoardSpaceHide(s32 value);
void BoardSpaceStarSetIndex(s32 index);
s32 BoardSpaceStarGetNext(void);
s32 BoardSpaceStarGetRandom(s32 excl_pos);
@ -49,6 +52,7 @@ s32 BoardSpaceStarGetCurr(void);
s32 BoardSpaceStarCheck(s32 index);
void BoardSpaceLandExec(s32 player, s32 space);
void BoardSpaceCameraSet(u16 mask);
s32 BoardSpaceBlockExec(s32 player, s32 space);
void BoardSpaceBlockPosSet(void);
void BoardSpaceInit(s32 data_num);
void BoardSpaceDestroy(void);

View file

@ -2,6 +2,7 @@
#define _BOARD_TUTORIAL_H
#include "dolphin/types.h"
#include "version.h"
void BoardTutorialInit(void);
void BoardTutorialKill(void);
@ -16,7 +17,7 @@ void BoardTutorialItemSet(s8 arg0);
void BoardTutorialHostSet(s16 arg0);
void BoardTutorialHostHide(s8 arg0);
extern s32 boardTutorialData[4];
SHARED_SYM extern s32 boardTutorialData[4];
extern s8 boardTutorialDirInputX;
extern s8 boardTutorialDirInputY;
extern s16 boardTutorialDirInputTime;
@ -24,6 +25,6 @@ extern s32 boardTutorialBlockPos;
extern s8 boardTutorialBlockItem;
extern s8 boardTutorialBlockF;
extern s8 boardTutorialUseItem;
extern s8 boardTutorialF;
SHARED_SYM extern s8 boardTutorialF;
#endif

View file

@ -2,8 +2,9 @@
#define _GAME_CARD_H
#include "dolphin.h"
#include "version.h"
extern u8 UnMountCnt;
SHARED_SYM extern u8 UnMountCnt;
void HuCardInit(void);
s32 HuCardCheck(void);

View file

@ -34,7 +34,6 @@ s32 HuDataReadChk(s32 data_num);
DataReadStat *HuDataGetStatus(void *dir_ptr);
void *HuDataGetDirPtr(s32 data_num);
DataReadStat *HuDataDirRead(s32 data_num);
DataReadStat *HuDataDirReadNum(s32 data_num, s32 num);
DataReadStat *HuDataDirSet(void *dir_ptr, s32 data_num);
void HuDataDirReadAsyncCallBack(s32 result, DVDFileInfo* fileInfo);
s32 HuDataDirReadAsync(s32 data_num);

View file

@ -197,7 +197,6 @@ static inline void GWRumbleSet(s32 value)
{
GWGameStat.rumble = value;
if (value == 0) {
// TODO PC: get rumble working
HuPadRumbleAllStop();
}
}

View file

@ -4,6 +4,7 @@
#include "game/hsfformat.h"
#include "game/hsfman.h"
#include "game/animdata.h"
#include "version.h"
typedef struct model_data ModelData;
typedef struct particle_data ParticleData;
@ -138,7 +139,7 @@ void Hu3DParManTimeLimitSet(s16 arg0, s32 arg1);
void Hu3DParManVacumeSet(s16 arg0, float arg1, float arg2, float arg3, float arg4);
void Hu3DParManColorSet(s16 arg0, s16 arg1);
extern Hu3DTexAnimDataStruct Hu3DTexAnimData[256];
extern Hu3DTexScrDataStruct Hu3DTexScrData[16];
SHARED_SYM extern Hu3DTexAnimDataStruct Hu3DTexAnimData[256];
SHARED_SYM extern Hu3DTexScrDataStruct Hu3DTexScrData[16];
#endif

View file

@ -19,7 +19,7 @@ typedef struct hsfdraw_struct_01 {
/* 0x1C */ float unk1C;
/* 0x20 */ float unk20;
/* 0x24 */ float unk24;
/* 0x28 */ float unk28;
/* 0x28 */ float unk28;
/* 0x2C */ float unk2C;
/* 0x30 */ float unk30;
/* 0x34 */ float unk34;

View file

@ -285,8 +285,8 @@ typedef struct hsf_camera {
HsfVector3f pos;
float aspect_dupe;
float fov;
float near;
float far;
float nnear;
float ffar;
} HsfCamera;
typedef struct hsf_light {

View file

@ -5,6 +5,7 @@
#include "game/hsfanim.h"
#include "game/hsfformat.h"
#include "game/memory.h"
#include "version.h"
#define HU3D_MODEL_MAX 512
#define HU3D_MOTION_MAX 256
@ -104,7 +105,7 @@ struct model_data {
u16 unk_26;
u16 unk_28[8];
s16 unk_38[8];
u32 unk_48;
uintptr_t unk_48;
u32 unk_4C;
u32 attr;
u32 motion_attr;
@ -140,8 +141,8 @@ struct model_data {
}; // sizeof 0x124
typedef struct camera_data {
float fov;
float near;
float far;
float nnear;
float ffar;
float aspect;
float aspect_dupe;
Vec pos;
@ -297,23 +298,23 @@ void Hu3DProjectionPosSet(s16, Vec *, Vec *, Vec *);
void Hu3DProjectionTPLvlSet(s16, float);
void Hu3DMipMapSet(char *, s16, s32, float);
extern ModelData Hu3DData[0x200];
extern CameraData Hu3DCamera[0x10];
SHARED_SYM extern ModelData Hu3DData[0x200];
SHARED_SYM extern CameraData Hu3DCamera[0x10];
extern AnimData *reflectAnim[5];
extern AnimData *hiliteAnim[4];
SHARED_SYM extern AnimData *hiliteAnim[4];
extern ThreeDProjectionStruct Hu3DProjection[4];
extern ShadowData Hu3DShadowData;
extern Mtx Hu3DCameraMtx;
extern Mtx Hu3DCameraMtxXPose;
extern LightData Hu3DGlobalLight[0x8];
SHARED_SYM extern ShadowData Hu3DShadowData;
SHARED_SYM extern Mtx Hu3DCameraMtx;
SHARED_SYM extern Mtx Hu3DCameraMtxXPose;
SHARED_SYM extern LightData Hu3DGlobalLight[0x8];
extern s16 reflectMapNo;
extern AnimData *toonAnim;
extern s16 Hu3DShadowCamBit;
extern s32 Hu3DShadowF;
extern s32 shadowModelDrawF;
extern s16 Hu3DCameraNo;
SHARED_SYM extern s16 Hu3DShadowCamBit;
SHARED_SYM extern s32 Hu3DShadowF;
SHARED_SYM extern s32 shadowModelDrawF;
SHARED_SYM extern s16 Hu3DCameraNo;
extern s16 Hu3DCameraBit;
extern s16 Hu3DPauseF;
extern GXColor BGColor;
SHARED_SYM extern GXColor BGColor;
#endif

View file

@ -3,6 +3,7 @@
#include "dolphin.h"
#include "game/hsfformat.h"
#include "version.h"
#define Hu3DMotionCreateFile(data_id) (Hu3DMotionCreate(HuDataSelHeapReadNum((data_id), MEMORY_DEFAULT_NUM, HEAP_DATA)))
@ -76,6 +77,6 @@ s16 Hu3DJointMotion(s16 arg0, void *arg1);
void JointModel_Motion(s16 arg0, s16 arg1);
void Hu3DMotionCalc(s16 arg0);
extern MotionData Hu3DMotion[256];
SHARED_SYM extern MotionData Hu3DMotion[256];
#endif

View file

@ -2,8 +2,9 @@
#define _GAME_INIT_H
#include "dolphin.h"
#include "version.h"
extern GXRenderModeObj *RenderMode;
SHARED_SYM extern GXRenderModeObj *RenderMode;
extern OSHeapHandle currentHeapHandle;
extern void *DemoFrameBuffer1;
@ -11,7 +12,7 @@ extern void *DemoFrameBuffer2;
extern void *DemoCurrentBuffer;
extern u32 minimumVcount;
extern float minimumVcountf;
extern u32 worstVcount;
SHARED_SYM extern u32 worstVcount;
void HuSysInit(GXRenderModeObj *mode);
void HuSysBeforeRender();

View file

@ -2,15 +2,23 @@
#define _GAME_JMP_H
#ifdef TARGET_PC
#include <setjmp.h>
#include <stdint.h>
#ifdef _M_X64
#include "../extern/longjmp_win64/longjmp_win64.h"
#define SETJMP setjmp_win64
#define LONGJMP longjmp_win64
#define JMPBUF JMP_BUF_WIN64
#else
#include <setjmp.h>
#define SETJMP setjmp
#define LONGJMP longjmp
#define JMPBUF jmp_buf
#endif
#ifndef _JMP_BUF_DEFINED
#if defined(_M_IX86) || defined(__i386__)
#if defined(_M_IX86)
typedef struct __JUMP_BUFFER {
uint32_t Ebp;
uint32_t Ebx;
@ -24,41 +32,27 @@ typedef struct __JUMP_BUFFER {
uint32_t UnwindFunc;
uint32_t UnwindData[6];
} _JUMP_BUFFER;
#elif defined(_M_X64) || defined(__x86_64__)
#ifndef SETJMP_FLOAT128
// TODO do we need to align this?
typedef struct _SETJMP_FLOAT128 {
uint64_t Part[2];
} SETJMP_FLOAT128;
#endif
typedef struct _JUMP_BUFFER {
uint64_t Frame;
#elif defined(__i386__)
typedef struct __JUMP_BUFFER {
uint32_t Bx;
uint32_t Si;
uint32_t Di;
uint32_t Bp;
uint32_t Sp;
uint32_t Pc;
} _JUMP_BUFFER;
#elif defined(__x86_64__)
typedef struct __JUMP_BUFFER {
uint64_t Rbx;
uint64_t Rsp;
uint64_t Rbp;
uint64_t Rsi;
uint64_t Rdi;
uint64_t R12;
uint64_t R13;
uint64_t R14;
uint64_t R15;
uint64_t Rip;
uint32_t MxCsr;
uint16_t FpCsr;
uint16_t Spare;
SETJMP_FLOAT128 Xmm6;
SETJMP_FLOAT128 Xmm7;
SETJMP_FLOAT128 Xmm8;
SETJMP_FLOAT128 Xmm9;
SETJMP_FLOAT128 Xmm10;
SETJMP_FLOAT128 Xmm11;
SETJMP_FLOAT128 Xmm12;
SETJMP_FLOAT128 Xmm13;
SETJMP_FLOAT128 Xmm14;
SETJMP_FLOAT128 Xmm15;
uint64_t Rsp;
uint64_t Pc;
} _JUMP_BUFFER;
#elif defined(_M_ARM) || defined(__arm__)
#elif defined(_M_ARM)
typedef struct _JUMP_BUFFER {
uint32_t Frame;
@ -76,7 +70,7 @@ typedef struct _JUMP_BUFFER {
uint32_t Fpscr;
uint32_t long D[8]; // D8-D15 VFP/NEON regs
} _JUMP_BUFFER;
#elif defined(_M_ARM64) || defined(__aarch64__)
#elif defined(_M_ARM64)
typedef struct _JUMP_BUFFER {
uint64_t Frame;
uint64_t Reserved;
@ -133,21 +127,27 @@ typedef struct _JUMP_BUFFER {
#endif
#endif
#if defined(_M_IX86) || defined(__i386__)
#define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->Eip = (size_t)func
#define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->Esp = (size_t)sp
#elif defined(_M_X64) || defined(__x86_64__)
#define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->Rip = (size_t)func
#define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->Rsp = (size_t)sp
#if defined(_M_IX86)
#define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->Eip = (uintptr_t)func
#define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->Esp = (uintptr_t)sp
#elif defined(__i386__)
#define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->Pc = (uintptr_t)func
#define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->Sp = (uintptr_t)sp
#elif defined(__x86_64__)
#define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->Pc = (uintptr_t)func
#define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->Rsp = (uintptr_t)sp
#elif defined(_M_X64)
#define SETJMP_SET_IP(jump, func) (jump)->rip_getjmp = (uintptr_t)func
#define SETJMP_SET_SP(jump, sp) (jump)->rsp_getjmp = (uintptr_t)sp
#elif defined(_M_ARM) || defined(__arm__)
#define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->Pc = (size_t)func
#define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->Sp = (size_t)sp
#define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->Pc = (uintptr_t)func
#define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->Sp = (uintptr_t)sp
#elif defined(_M_ARM64) || defined(__aarch64__)
#define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->Lr = (size_t)func
#define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->Sp = (size_t)sp
#define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->Lr = (uintptr_t)func
#define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->Sp = (uintptr_t)sp
#elif defined(__riscv)
#define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->ra = (size_t)func
#define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->sp = (size_t)sp
#define SETJMP_SET_IP(jump, func) ((_JUMP_BUFFER *)((jump)))->ra = (uintptr_t)func
#define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->sp = (uintptr_t)sp
#endif
#else
@ -166,6 +166,7 @@ typedef struct jmp_buf {
s32 gcsetjmp(jmp_buf *jump);
s32 gclongjmp(jmp_buf *jump, s32 status);
#define JMPBUF jmp_buf
#define SETJMP(jump) gcsetjmp(&(jump))
#define LONGJMP(jump, status) gclongjmp(&(jump), (status))

View file

@ -16,11 +16,11 @@ void CharRotInv(Mtx arg0, Mtx arg1, Vec *arg2, omObjData *arg3);
extern Mtx MapMT;
extern Mtx MapMTR;
extern float AddX;
extern float AddZ;
extern s32 nMap;
extern s32 nChar;
SHARED_SYM extern float AddX;
SHARED_SYM extern float AddZ;
SHARED_SYM extern s32 nMap;
SHARED_SYM extern s32 nChar;
extern s32 HitFaceCount;
extern omObjData *MapObject[16];
SHARED_SYM extern omObjData *MapObject[16];
#endif

View file

@ -117,6 +117,6 @@ s32 MGSeqUpdateRecord(SeqWork *work);
s32 MGSeqInitFlip(SeqWork *work, va_list params);
s32 MGSeqUpdateFlip(SeqWork *work);
extern OverlayID mgSeqOvlPrev;
SHARED_SYM extern OverlayID mgSeqOvlPrev;
#endif

View file

@ -4,6 +4,7 @@
#include "dolphin.h"
#include "game/process.h"
#include "game/gamework_data.h"
#include "version.h"
typedef struct mg_info {
u16 ovl;
@ -22,20 +23,20 @@ void omGameSysInit(Process *objman);
void omVibrate(s16 player_cfg_index, s16 duration, s16 off, s16 on);
extern s16 mgTypeCurr;
extern s16 mgBattleStar[4];
extern s16 mgBattleStarMax;
extern u8 lbl_801D3E94;
extern u32 mgRecordExtra;
extern s32 mgQuitExtraF;
extern s32 mgPracticeEnableF;
extern s32 mgInstExitEnableF;
extern u8 mgBoardHostEnableF;
SHARED_SYM extern s16 mgTypeCurr;
SHARED_SYM extern s16 mgBattleStar[4];
SHARED_SYM extern s16 mgBattleStarMax;
SHARED_SYM extern u8 lbl_801D3E94;
SHARED_SYM extern u32 mgRecordExtra;
SHARED_SYM extern s32 mgQuitExtraF;
SHARED_SYM extern s32 mgPracticeEnableF;
SHARED_SYM extern s32 mgInstExitEnableF;
SHARED_SYM extern u8 mgBoardHostEnableF;
extern s16 mgTicTacToeGrid[3][3];
extern u8 mgIndexList[256];
extern GameStat mgGameStatBackup;
SHARED_SYM extern s16 mgTicTacToeGrid[3][3];
SHARED_SYM extern u8 mgIndexList[256];
SHARED_SYM extern GameStat mgGameStatBackup;
extern MgInfo mgInfoTbl[];
SHARED_SYM extern MgInfo mgInfoTbl[];
#endif

View file

@ -2,6 +2,7 @@
#define _GAME_PRINTFUNC_H
#include "dolphin.h"
#include "version.h"
#define FONT_COLOR_BLACK 0
#define FONT_COLOR_DARK_BLUE 1
@ -29,7 +30,7 @@ void pfDrawFonts(void);
extern BOOL saftyFrameF;
extern u16 strlinecnt;
extern u16 empstrline;
extern int fontcolor;
SHARED_SYM extern int fontcolor;
extern u32 procfunc;
#endif

View file

@ -26,8 +26,8 @@ typedef struct process {
u16 stat;
u16 prio;
s32 sleep_time;
u32 base_sp;
jmp_buf jump;
uintptr_t base_sp;
JMPBUF jump;
void (*dtor)(void);
void *user_data;
} Process;

View file

@ -24,13 +24,13 @@ typedef union save_buf_all {
u8 ATTRIBUTE_ALIGN(32) buf[SAVE_BUF_SIZE];
} SaveBufAll;
extern char *SaveFileNameTbl[];
extern CARDFileInfo curFileInfo;
extern SaveBufAll saveBuf;
SHARED_SYM extern char *SaveFileNameTbl[];
SHARED_SYM extern CARDFileInfo curFileInfo;
SHARED_SYM extern SaveBufAll saveBuf;
extern u64 SLSerialNo;
extern s32 saveExecF;
SHARED_SYM extern s32 saveExecF;
extern u8 curBoxNo;
extern s16 curSlotNo;
SHARED_SYM extern s16 curSlotNo;
s32 SLFileOpen(char *fileName);
s32 SLFileCreate(char *fileName, u32 size, void *addr);

View file

@ -113,7 +113,7 @@ void HuSprGrpCenterSet(s16 group, float x, float y);
void HuSprGrpZRotSet(s16 group, float z_rot);
void HuSprGrpScaleSet(s16 group, float x, float y);
void HuSprGrpTPLvlSet(s16 group, float tp_lvl);
#ifndef HUSPR_USE_OLD_DEFS
#if !defined(HUSPR_USE_OLD_DEFS) || !defined(__MWERKS__)
void HuSprGrpDrawNoSet(s16 group, s32 draw_no);
#endif
void HuSprDrawNoSet(s16 group, s16 member, s32 draw_no);
@ -127,7 +127,7 @@ void AnimDebug(AnimData *anim);
void HuSprDispInit(void);
void HuSprDisp(HuSprite *sprite);
#ifndef HUSPR_USE_OLD_DEFS
#if !defined(HUSPR_USE_OLD_DEFS) || !defined(__MWERKS__)
void HuSprTexLoad(AnimData *anim, s16 bmp, s16 slot, GXTexWrapMode wrap_s, GXTexWrapMode wrap_t, GXTexFilter filter);
#endif
void HuSprExecLayerSet(s16 draw_no, s16 layer);

View file

@ -2,13 +2,49 @@
#define _SRC_BYTESWAP_H_
#ifdef __cplusplus
extern "C"
{
extern "C" {
#endif
#include "game/animdata.h"
#include "game/hsfformat.h"
typedef struct AnimData32b {
s16 bankNum;
s16 patNum;
s16 bmpNum;
s16 useNum;
u32 bank;
u32 pat;
u32 bmp;
} AnimData32b;
typedef struct AnimBankData32b {
s16 timeNum;
s16 unk;
u32 frame;
} AnimBankData32b;
typedef struct AnimPatData32b {
s16 layerNum;
s16 centerX;
s16 centerY;
s16 sizeX;
s16 sizeY;
u32 layer;
} AnimPatData32b;
typedef struct AnimBmpData32b {
u8 pixSize;
u8 dataFmt;
s16 palNum;
s16 sizeX;
s16 sizeY;
u32 dataSize;
u32 palData;
u32 data;
} AnimBmpData32b;
typedef struct HsfCluster32b {
u32 name[2];
u32 targetName;
@ -145,7 +181,7 @@ typedef struct HsfObjectData32b {
float baseMorph;
float morphWeight[33];
} mesh;
struct hsf_object *replica;
u32 replica;
};
u32 face;
@ -236,10 +272,10 @@ void byteswap_s32(s32 *src);
void byteswap_hsfvec3f(HsfVector3f *src);
void byteswap_hsfvec2f(HsfVector2f *src);
void byteswap_animdata(void *src, AnimData* dest);
void byteswap_animbankdata(void *src, AnimBankData *dest);
void byteswap_animpatdata(void *src, AnimPatData *dest);
void byteswap_animbmpdata(void *src, AnimBmpData *dest);
void byteswap_animdata(void *src, AnimData *dest);
void byteswap_animbankdata(AnimBankData32b *src, AnimBankData *dest);
void byteswap_animpatdata(AnimPatData32b *src, AnimPatData *dest);
void byteswap_animbmpdata(AnimBmpData32b *src, AnimBmpData *dest);
void byteswap_animframedata(AnimFrameData *src);
void byteswap_animlayerdata(AnimLayerData *src);
@ -263,6 +299,25 @@ void byteswap_hsfbitmapkey(HsfBitmapKey32b *src, HsfBitmapKey *dest);
void byteswap_hsftrack(HsfTrack32b *src, HsfTrack *dest);
void byteswap_hsfmotion(HsfMotion32b *src, HsfMotion *dest);
void byteswap_hsfface(HsfFace32b *src, HsfFace *dest);
void byteswap_hsfcluster(HsfCluster32b *src, HsfCluster *dest);
void byteswap_hsfattribute(HsfAttribute32b *src, HsfAttribute *dest);
void byteswap_hsfmaterial(HsfMaterial32b *src, HsfMaterial *dest);
void byteswap_hsfscene(HsfScene *src);
void byteswap_hsfbuffer(HsfBuffer32b *src, HsfBuffer *dest);
void byteswap_hsfmatrix(HsfMatrix *src);
void byteswap_hsfpalette(HsfPalette32b *src, HsfPalette *dest);
void byteswap_hsfpart(HsfPart32b *src, HsfPart *dest);
void byteswap_hsfbitmap(HsfBitmap32b *src, HsfBitmap *dest);
void byteswap_hsfmapattr(HsfMapAttr32b *src, HsfMapAttr *dest);
void byteswap_hsfskeleton(HsfSkeleton32b *src, HsfSkeleton *dest);
void byteswap_hsfshape(HsfShape32b *src, HsfShape *dest);
void byteswap_hsfcenv_single(HsfCenvSingle *src);
void byteswap_hsfcenv(HsfCenv32b *src, HsfCenv *dest);
void byteswap_hsfobject(HsfObject32b *src, HsfObject *dest);
void byteswap_hsfbitmapkey(HsfBitmapKey32b *src, HsfBitmapKey *dest);
void byteswap_hsftrack(HsfTrack32b *src, HsfTrack *dest);
void byteswap_hsfmotion(HsfMotion32b *src, HsfMotion *dest);
void byteswap_hsfface(HsfFace32b *src, HsfFace *dest);
#ifdef __cplusplus
}

6
rel.map Normal file
View file

@ -0,0 +1,6 @@
{
global:
ObjectSetup;
local:
*;
};

View file

@ -1,10 +1,17 @@
#include "REL/board_executor.h"
#include "math.h"
#ifdef TARGET_PC
void ObjectSetup(void) {
BoardObjectSetup(BoardCreate, BoardDestroy);
}
#else
static void ObjectSetup(void) {
BoardObjectSetup(BoardCreate, BoardDestroy);
}
#endif
#ifdef __MWERKS__
s32 _prolog(void) {
const VoidFunc* ctors = _ctors;
while (*ctors != 0) {
@ -21,4 +28,5 @@ void _epilog(void) {
(**dtors)();
dtors++;
}
}
}
#endif

View file

@ -16,6 +16,7 @@
#include "game/wipe.h"
#include "math.h"
#include "port/byteswap.h"
#include "data_num/title.h"
@ -125,10 +126,7 @@ void ObjectSetup(void)
HuSprGrpMemberSet(group, 1, sprite_hudson);
HuSprPosSet(group, 1, 288, 240);
HuSprAttrSet(group, 1, HUSPR_ATTR_DISPOFF);
#ifdef __MWERKS__
// TODO PC
HuWinInit(1);
#endif
BootTitleCreate();
SystemInitF = 1;
}
@ -161,13 +159,10 @@ void ObjectSetup(void)
WipeColorSet(255, 255, 255);
if (!SystemInitF) {
tick_prev = OSGetTick();
#ifdef __MWERKS__
// TODO PC
CharManInit();
HuWindowInit();
MGSeqInit();
HuWinInit(1);
#endif
BootTitleCreate();
data = HuSprAnimReadFile(TITLE_HUDSON_ANM);
sprite_hudson = HuSprCreate(data, 0, 0);
@ -269,8 +264,6 @@ void ObjectSetup(void)
HuPrcVSleep();
}
skip_wait = FALSE;
#ifdef __MWERKS__
// TODO PC
while (!HuTHPEndCheck()) {
UpdateDemoMess();
if (HuPadBtnDown[0] & (PAD_BUTTON_START | PAD_BUTTON_A)) {
@ -279,21 +272,14 @@ void ObjectSetup(void)
}
HuPrcVSleep();
}
#endif
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30);
while (WipeStatGet()) {
HuPrcVSleep();
}
#ifdef __MWERKS__
// TODO PC
HuWinKill(demoWinId);
HuTHPClose();
#endif
HuPrcVSleep();
#ifdef __MWERKS__
// TODO PC
HuSprGrpKill(group_thp);
#endif
if (!skip_wait) {
HuPrcSleep(60);
}
@ -346,16 +332,10 @@ void ObjectSetup(void)
int i;
for (i = 0; demoMessTimeTbl[i * 2] != -1; i++) {
if (frame == demoMessTimeTbl[i * 2]) {
#ifdef __MWERKS__
// TODO PC
HuWinMesSet(demoWinId, MAKE_MESSID(54, i));
#endif
}
if (frame == demoMessTimeTbl[(i * 2) + 1]) {
#ifdef __MWERKS__
// TODO PC
HuWinHomeClear(demoWinId);
#endif
}
}
}

View file

@ -17,6 +17,10 @@
#include "ext_math.h"
#include "math.h"
#ifndef __MWERKS__
#include "game/audio.h"
#endif
float lbl_2_data_0 = -7.1875f;
s16 lbl_2_data_4[] = { 0, 1, 2, 3, 4, 5, 6, 7 };

View file

@ -11,6 +11,10 @@
#include "REL/m401Dll.h"
#ifndef __MWERKS__
extern s32 rand8(void);
#endif
struct Bss13EData {
s16 unk0;
s16 unk2[3];
@ -43,7 +47,7 @@ void fn_2_10240(Vec *arg0, Vec *arg1)
camera = &Hu3DCamera[0];
MTXLookAt(lookat, &camera->pos, &camera->up, &camera->target);
MTXMultVec(lookat, arg0, arg0);
MTXPerspective(proj, camera->fov, camera->aspect, camera->near, camera->far);
MTXPerspective(proj, camera->fov, camera->aspect, camera->nnear, camera->ffar);
coord[0] = (arg0->x * proj[0][0]) + (arg0->y * proj[0][1]) + (arg0->z * proj[0][2]) + proj[0][3];
coord[1] = (arg0->x * proj[1][0]) + (arg0->y * proj[1][1]) + (arg0->z * proj[1][2]) + proj[1][3];
coord[2] = (arg0->x * proj[2][0]) + (arg0->y * proj[2][1]) + (arg0->z * proj[2][2]) + proj[2][3];
@ -319,7 +323,6 @@ void fn_2_113AC(omObjData *object)
M401WorkPlayer *temp_r28;
omObjData *temp_r27;
ParticleData *temp_r25;
s16 temp_r24;
temp_r30 = object->data;
temp_r30->unk0.z += (lbl_2_bss_50 * 0.5f);
object->trans.x = temp_r30->unk0.x;
@ -564,7 +567,6 @@ void fn_2_123F8(ModelData *model, ParticleData *particle, Mtx matrix)
HsfanimStruct01 *temp_r31;
s32 temp_r29;
s32 temp_r28;
UnkWork10A88 *temp_r27;
if (!particle->unk_02) {
particle->unk_02 = 1;
temp_r31 = particle->unk_48;

View file

@ -682,7 +682,9 @@ static void fn_1_1FC4(Vec *arg0, float *arg1, s32 arg2, s32 arg3)
VECAdd((Vec *)&arg0, &sp18, (Vec *)&arg0);
}
#ifdef __MWERKS__
#include "src/REL/executor.c"
#endif
static void fn_1_2454(void)
{

View file

@ -260,7 +260,7 @@ void ObjectSetup(void)
var_r29 = Hu3DGLightCreateV(&lbl_1_data_770, &lbl_1_bss_10, &lbl_1_data_788);
Hu3DGLightInfinitytSet(var_r29);
Hu3DGLightStaticSet(var_r29, 1);
Hu3DShadowCreate(45.0f, var_r30->near, var_r30->far);
Hu3DShadowCreate(45.0f, var_r30->nnear, var_r30->ffar);
Hu3DShadowTPLvlSet(0.625f);
Hu3DShadowPosSet(&lbl_1_data_78C, &lbl_1_data_798, &lbl_1_data_77C);
HuAudSndGrpSet(29);
@ -471,7 +471,12 @@ void fn_1_7E0(omObjData *object)
espTPLvlSet(var_r31->unk_02[var_r30], 0.5f);
break;
case 2:
#ifdef NON_MATCHING
// TODO 1 or 0?
var_r31->unk_02[var_r30] = espEntry(lbl_1_data_86C[var_r27->unk_02[5]], 0, 0);
#else
var_r31->unk_02[var_r30] = espEntry(lbl_1_data_86C[var_r27->unk_02[5]]);
#endif
espPriSet(var_r31->unk_02[var_r30], 255);
break;
case 3:

View file

@ -8,6 +8,7 @@
#include "game/gamework_data.h"
#include "game/hsfanim.h"
#include "game/hsfdraw.h"
#include <game/hsfex.h>
#include "game/hsfman.h"
#include "game/hsfmotion.h"
#include "game/memory.h"
@ -23,6 +24,11 @@
#include "dolphin.h"
#include "ext_math.h"
#ifndef __MWERKS__
#include "game/audio.h"
#endif
#undef ABS
#define ABS(x) ((0 > (x)) ? -(x) : (x))
@ -1277,7 +1283,9 @@ float fn_1_5664(Vec *arg0)
return lbl_1_bss_5AC.unk04[fn_1_23B4(arg0)].y;
}
#ifdef __MWERKS__
#include "src/REL/executor.c"
#endif
Vec lbl_1_data_100 = { 0.0f, 1.0f, 0.0f };
Vec lbl_1_data_10C = { 450.0f, 300.0f, 500.0f };

View file

@ -8,6 +8,10 @@
#include "REL/m406Dll.h"
#ifndef __MWERKS__
#include <game/frand.h>
#endif
typedef struct UnkM406Struct {
/* 0x00 */ u8 unk_00;
/* 0x01 */ u8 unk_01;
@ -222,7 +226,7 @@ void fn_1_D488(float arg8, Vec *arg0, Vec *arg1, Vec *arg2);
void fn_1_D518(Mtx arg0, Vec *arg1);
float fn_1_D5CC(Vec *arg0, Vec *arg1, float arg8, float arg9);
extern u32 GlobalCounter;
SHARED_SYM extern u32 GlobalCounter;
Vec lbl_1_data_F0[0x46] = {
{ -495.876f, 50.005f, -0.0f },
@ -455,7 +459,7 @@ UnkM406Struct5 lbl_1_bss_48;
Vec lbl_1_bss_3C;
s32 lbl_1_bss_30[3];
extern LightData Hu3DLocalLight[0x20];
SHARED_SYM extern LightData Hu3DLocalLight[0x20];
omObjData *fn_1_2308(Process *arg0)
{
@ -1250,7 +1254,11 @@ void fn_1_4964(ModelData *arg0)
fn_1_71C4(spC4, spA0, 100.0f + (50.0f * (0.007874016f * (frand() & 0x7F))), -0.1f, sp3C);
}
var_r29 = var_r30->unk_2C;
#ifdef NON_MATCHING
memset(&lbl_1_bss_48, 0, sizeof(UnkM406Struct5));
#else
memset(lbl_1_bss_48, 0, sizeof(UnkM406Struct5));
#endif
for (var_r27 = 0; var_r27 < 105; var_r27++, var_r29++) {
fn_1_D488(var_r29->unk_04, &var_r30->unk_84[var_r29->unk_00], &var_r30->unk_84[var_r29->unk_00 + 1], &var_r29->unk_18);
if (var_r29->unk_08 >= 0) {
@ -2946,13 +2954,13 @@ void fn_1_BC18(ModelData *arg0, float (*arg1)[4])
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GXSetArray(GX_VA_POS, var_r31->unk_40, 0xC);
GXSETARRAY(GX_VA_POS, var_r31->unk_40, var_r31->unk_26 * sizeof(Vec) * 4, sizeof(Vec));
GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0);
GXSetArray(GX_VA_CLR0, &var_r31->unk_3C->unk_3C, 0x44);
GXSETARRAY(GX_VA_CLR0, &var_r31->unk_3C->unk_3C, sizeof(GXColor), 0x44);
GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0);
GXSetArray(GX_VA_TEX0, var_r31->unk_44, 8);
GXSETARRAY(GX_VA_TEX0, var_r31->unk_44, var_r31->unk_26 * sizeof(Vec2f) * 4, sizeof(Vec2f));
if (HmfInverseMtxF3X3(arg1, sp128) == 0) {
MTXIdentity(sp128);
}
@ -3162,10 +3170,10 @@ void fn_1_C86C(ModelData *arg0, Mtx arg1)
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GXSetArray(GX_VA_POS, var_r31->unk_40, sizeof(Vec));
GXSETARRAY(GX_VA_POS, var_r31->unk_40, var_r31->unk_26 * sizeof(Vec) * 4, sizeof(Vec));
GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0);
GXSetArray(GX_VA_CLR0, &var_r31->unk_3C->unk_3C, 0x44);
GXSETARRAY(GX_VA_CLR0, &var_r31->unk_3C->unk_3C, sizeof(GXColor), 0x44);
if (HmfInverseMtxF3X3(arg1, sp9C) == 0) {
MTXIdentity(sp9C);
}

View file

@ -74,7 +74,6 @@ ObjFuncs lbl_1_data_258[] = {
void fn_1_2354(Process *arg0)
{
Process *sp8;
u32 i;
u32 j;
@ -123,7 +122,7 @@ void fn_1_2564(void)
void fn_1_25C0(void)
{
u32 i, j;
u32 i;
lbl_1_bss_38 = 0;
@ -371,7 +370,7 @@ void fn_1_31F8(omObjData *arg0)
}
}
void fn_1_3360(omObjData *) { }
void fn_1_3360(omObjData *arg0) { }
void fn_1_3364(omObjData *arg0)
{

View file

@ -1042,7 +1042,7 @@ void fn_1_10484(UnkFn10484 *arg0, HsfFace *arg1, HsfDrawData *arg2, GXColor *arg
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GXSetArray(GX_VA_POS, temp_r30->data.vertex->data, sizeof(HsfVector3f));
GXSETARRAY(GX_VA_POS, temp_r30->data.vertex->data, temp_r30->data.vertex->count * sizeof(HsfVector3f), sizeof(HsfVector3f));
if (temp_r25 & 0x2) {
GXSetVtxDesc(GX_VA_NBT, GX_DIRECT);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NBT, GX_NRM_NBT, GX_S16, 8);
@ -1050,15 +1050,15 @@ void fn_1_10484(UnkFn10484 *arg0, HsfFace *arg1, HsfDrawData *arg2, GXColor *arg
else {
GXSetVtxDesc(GX_VA_NRM, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0);
GXSetArray(GX_VA_NRM, temp_r30->data.normal->data, sizeof(HsfVector3f));
GXSETARRAY(GX_VA_NRM, temp_r30->data.normal->data, temp_r30->data.vertex->count * sizeof(HsfVector3f), sizeof(HsfVector3f));
}
GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0);
GXSetArray(GX_VA_TEX0, temp_r30->data.st->data, sizeof(HsfVector2f));
GXSETARRAY(GX_VA_TEX0, temp_r30->data.st->data, temp_r30->data.vertex->count * sizeof(HsfVector2f), sizeof(HsfVector2f));
if (temp_r25 & 0x4) {
GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0);
GXSetArray(GX_VA_CLR0, arg3, sizeof(GXColor));
GXSETARRAY(GX_VA_CLR0, arg3, arg0->unk4->data.color->count * sizeof(GXColor), sizeof(GXColor));
}
GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1);
GXSetZCompLoc(GX_FALSE);
@ -1150,7 +1150,7 @@ void fn_1_10830(ModelData *arg0, HsfBitmap *arg1, HsfAttribute *arg2, s16 arg3)
GXSetTevColor(reg, color_var); \
}
extern u32 texMtxTbl[];
SHARED_SYM extern u32 texMtxTbl[];
void fn_1_10B60(UnkFn10484 *arg0, HsfMaterial *arg1)
{

View file

@ -6,8 +6,7 @@
void fn_1_BF88(s16 arg0, s16 arg1)
{
s32 var_r31;
s32 var_r31_2;
s32 i;
unkStruct8 *var_r29;
unkStruct9Sub *var_r30;
@ -20,11 +19,11 @@ void fn_1_BF88(s16 arg0, s16 arg1)
var_r30 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(unkStruct9Sub), MEMORY_DEFAULT_NUM);
lbl_1_bss_F0.unkC = var_r30;
for (var_r31 = 0; var_r31 < arg0; var_r31++, var_r29++) {
for (i = 0; i < arg0; i++, var_r29++) {
var_r29->unk8 = 0;
}
for (var_r31 = 0; var_r31 < arg1; var_r31++, var_r30++) {
for (i = 0; i < arg1; i++, var_r30++) {
var_r30->unk6 = 0;
var_r30->unk8 = 0;
}
@ -48,7 +47,7 @@ void fn_1_C0C0(void)
Hu3DModelKill(lbl_1_bss_F0.unk4);
}
extern u8 texMtxTbl[];
SHARED_SYM extern u8 texMtxTbl[];
void fn_1_C164(unkStruct8 *arg0)
{
@ -214,18 +213,18 @@ void fn_1_C164(unkStruct8 *arg0)
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GXSetArray(GX_VA_POS, var_r31->unk40, 12);
GXSETARRAY(GX_VA_POS, var_r31->unk40, sizeof(Vec[4]), sizeof(Vec));
GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0);
GXSetArray(GX_VA_CLR0, var_r31->unk44, 4);
GXSETARRAY(GX_VA_CLR0, var_r31->unk44, sizeof(GXColor[4]), sizeof(GXColor));
for (var_r26 = 0; var_r26 < var_r31->unk32; var_r26++) {
GXSetVtxDesc(var_r26 + GX_VA_TEX0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, var_r26 + GX_VA_TEX0, GX_TEX_ST, GX_F32, 0);
GXSetArray(var_r26 + GX_VA_TEX0, var_r31->unk54[var_r26].unk4, 8);
GXSETARRAY(var_r26 + GX_VA_TEX0, var_r31->unk54[var_r26].unk4, sizeof(HsfVector2f[4]), sizeof(HsfVector2f));
}
GXSetVtxDesc(GX_VA_NRM, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0);
GXSetArray(GX_VA_NRM, var_r31->unk48, 12);
GXSETARRAY(GX_VA_NRM, var_r31->unk48, sizeof(Vec), sizeof(Vec));
GXCallDisplayList(var_r31->unk3C, var_r31->unk38);
}
}
@ -745,7 +744,7 @@ s32 fn_1_E2A8(s16 arg0, u8 arg1, u32 arg2, s16 arg3, s16 arg4)
}
temp_f30 = temp_r30->unk50;
temp_f31 = temp_r30->unk4E;
var_r29 = var_r28->unk40 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x30, MEMORY_DEFAULT_NUM);
var_r29 = var_r28->unk40 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(unkStruct11), MEMORY_DEFAULT_NUM);
for (var_r25 = 0; var_r25 < 1; var_r29++, var_r25++) {
var_r29->unk0.x = (-0.5f * temp_f31);

View file

@ -212,12 +212,7 @@ void fn_1_DDC(omObjData *object)
void fn_1_F70(omObjData *object)
{
s16 *sp8;
s16 temp_r3;
s16 temp_r3_2;
s32 var_r31;
sp8 = (s16 *)object->data;
s16 *sp8 = (s16 *)object->data;
switch (fn_1_2454(7)) {
case 1:
if (lbl_1_bss_6 == 0) {
@ -225,10 +220,11 @@ void fn_1_F70(omObjData *object)
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 0x3C);
}
if (WipeStatGet() == 0) {
s32 i;
fn_1_2414(7, 2);
for (var_r31 = 0; var_r31 < 4; var_r31++) {
omVibrate(var_r31, 0xC8, 6, 6);
for (i = 0; i < 4; i++) {
omVibrate(i, 0xC8, 6, 6);
}
}
break;
@ -382,13 +378,7 @@ s8 fn_1_10E8(omObjData *object)
s8 fn_1_1B74(omObjData *object)
{
f32 temp_f30;
f32 temp_f31;
s16 temp_r27;
s32 temp_r28;
unkStruct4 *temp_r30;
temp_r30 = (unkStruct4 *)object->data;
unkStruct4 *temp_r30 = object->data;
switch (lbl_1_bss_8) {
case 0:
temp_r30->unk2 = MGSeqCreate(3, 1);
@ -440,14 +430,12 @@ s8 fn_1_1B74(omObjData *object)
void fn_1_2098(omObjData *object)
{
ModelData *temp_r31;
f32 var_f28;
f32 var_f29;
f32 var_f31;
f32 var_f30;
s32 var_r30;
temp_r31 = &Hu3DData[lbl_1_bss_DC->model[4]];
ModelData *temp_r31 = &Hu3DData[lbl_1_bss_DC->model[4]];
if (fn_1_2454(0x18) != 0x18) {
lbl_1_bss_18 += 0.008f;
if (lbl_1_bss_18 >= 1.0f) {
@ -584,10 +572,6 @@ void fn_1_2484(omObjData *object)
void fn_1_2DCC(omObjData *object)
{
u16 spE;
u16 spC;
u16 spA;
u16 sp8;
ModelData *temp_r30;
f32 temp_f29;
f32 var_f31;
@ -597,8 +581,6 @@ void fn_1_2DCC(omObjData *object)
s16 var_r28;
s16 var_r27;
s16 var_r29;
s32 temp_r16;
s16 var_r18;
unkStruct4 *var_r31;
if ((lbl_1_bss_24.unk0 == 0) || (fn_1_2454(0x18) == 0x18)) {
@ -991,7 +973,6 @@ void fn_1_4FFC(s16 arg0, f32 arg1, f32 arg2, f32 arg3, s16 arg4)
Vec sp2C;
Vec sp20;
GXColor sp1A;
s16 sp18;
f32 temp_f31;
s16 var_r30;
unkStruct5 *temp_r31;
@ -1179,7 +1160,6 @@ unkStruct5 *fn_1_58E0(s16 arg0, Vec *arg1, Vec *arg2, f32 arg3, GXColor *arg4)
s16 fn_1_5A18(AnimData *arg0, s16 arg1, f32 arg8, s16 arg2, s16 arg3)
{
ModelData *temp_r28;
f32 temp_f0;
s16 var_r21;
s16 var_r22;
s16 var_r30;
@ -1377,13 +1357,13 @@ void fn_1_602C(ModelData *arg0, f32 (*arg1)[4])
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GXSetArray(GX_VA_POS, temp_r30->unk1C, 12);
GXSETARRAY(GX_VA_POS, temp_r30->unk1C, temp_r30->unk0 * sizeof(Vec) * 4, sizeof(Vec));
GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0);
GXSetArray(GX_VA_CLR0, temp_r30->unk24, 4);
GXSETARRAY(GX_VA_CLR0, temp_r30->unk24, temp_r30->unk0 * sizeof(GXColor), sizeof(GXColor));
GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0);
GXSetArray(GX_VA_TEX0, temp_r30->unk20, 8);
GXSETARRAY(GX_VA_TEX0, temp_r30->unk20, temp_r30->unk0 * sizeof(Vec2f) * 4, sizeof(Vec2f));
fn_1_40A4(arg1, sp128);
MTXReorder(sp128, spF8);
if (((u8)omPauseChk() == 0) && (temp_r30->unkC)) {

View file

@ -174,17 +174,11 @@ void fn_1_7344(omObjData *arg0)
f32 temp_f28;
f32 temp_f29;
f32 temp_f30;
f32 var_f25;
f32 var_f26;
f32 var_f27;
f32 var_f31;
s16 temp_r0;
s32 temp_r19;
s16 temp_r22;
s16 temp_r26;
s16 temp_r25;
s16 var_r20;
s16 var_r21;
s16 var_r27;
s16 var_r28;
s32 var_r24;
@ -379,23 +373,15 @@ void fn_1_7FE8(omObjData *arg0)
{
Vec sp20;
Vec sp14;
s32 sp10;
f32 spC;
s16 sp8;
unkStruct10 *var_r30;
unkStruct8Sub *temp_r29;
f32 temp_f0;
f32 temp_f0_2;
f32 temp_f1;
f32 temp_f29;
f32 temp_f30;
f32 var_f28;
s32 var_r28;
unkStruct7 *temp_r31;
temp_r31 = (unkStruct7 *)arg0->data;
sp10 = arg0->model[0];
sp8 = temp_r31->unk1C;
unkStruct7 *temp_r31 = (unkStruct7 *)arg0->data;
s32 sp10 = arg0->model[0];
s16 sp8 = temp_r31->unk1C;
temp_r31->unkE = temp_r31->unk10 = 0;
temp_r29 = fn_1_CCCC(temp_r31->unk57, 0);
sp20.x = sp20.y = sp20.z = 0.0f;
@ -1023,10 +1009,8 @@ s32 fn_1_A584(unkStruct10 *arg0)
s8 fn_1_A9C0(Vec *arg0, f32 *arg1)
{
f32 sp8;
f32 temp_f29;
f32 var_f30;
f32 var_f28;
s32 var_r27;
s32 var_r29;
unkStruct10 *var_r31;
@ -1080,8 +1064,6 @@ void fn_1_AC08(s32 *arg0, s32 arg1)
f32 fn_1_AD40(f32 arg0, f32 arg1, f32 arg2)
{
f32 var_f31;
f32 var_f30;
f32 var_f29;
var_f31 = fmodf(arg1 - arg0, 360.0);
if (var_f31 < 0.0f) {

View file

@ -535,7 +535,6 @@ float fn_1_4FEC(Vec arg0, Vec arg1, float arg8, Vec arg2, Vec arg3, float arg9,
float sp2C;
float var_f28;
float var_f26;
float var_f25;
float var_f24;
float var_f23;
@ -777,19 +776,6 @@ void fn_1_61DC(UnkM410Struct2 *arg0, UnkM410Struct2 *arg1)
Vec sp68;
Vec sp5C;
Vec sp50;
Vec sp44;
Vec sp38;
Vec sp2C;
Vec sp20;
Vec sp14;
Vec sp8;
Vec *var_r29;
Vec *var_r28;
Vec *var_r27;
Vec *var_r26;
Vec *var_r25;
Vec *var_r24;
if (arg0->unk_00_field1 || arg1->unk_00_field1) {
if (arg0->unk_00_field1) {

View file

@ -8,6 +8,8 @@
#include "REL/m410Dll.h"
#include <game/audio.h>
Process *lbl_1_bss_28;
omObjData *lbl_1_bss_24;
omObjData *lbl_1_bss_20;
@ -223,11 +225,7 @@ void fn_1_DEC(omObjData *object)
void fn_1_FF0(omObjData *object)
{
void *var_r31;
UnkM410Struct *var_r29;
void *var_r28;
var_r29 = object->data;
UnkM410Struct *var_r29 = object->data;
fn_1_5A8(object);
switch (var_r29->unk_14) {
@ -265,11 +263,8 @@ void fn_1_FF0(omObjData *object)
void fn_1_139C(omObjData *object)
{
UnkM410Struct *var_r29;
s32 var_r27;
var_r29 = object->data;
var_r27 = 0;
UnkM410Struct *var_r29 = object->data;
s32 var_r27 = 0;
fn_1_5A8(object);
if (!--var_r29->unk_20) {
@ -470,9 +465,6 @@ s32 fn_1_28DC(void)
void fn_1_2914(Vec *arg0, Vec *arg1)
{
Vec sp10;
float var_f29;
float var_f28;
float var_f27;
sp10.x = arg1->x - arg0->x;
sp10.y = arg1->y - arg0->y;

View file

@ -259,14 +259,8 @@ void fn_1_8414(omObjData *object)
void fn_1_8678(omObjData *object)
{
float var_f31;
float var_f30;
float var_f29;
UnkM410Struct5 *var_r31;
s32 var_r29;
var_r31 = object->data;
var_r29 = 0;
UnkM410Struct5 *var_r31 = object->data;
s32 var_r29 = 0;
var_r31->unk_10 = 0;
if (fn_1_281C() == 2) {
var_r31->unk_10 = HuPadBtnDown[GWPlayerCfg[object->work[0]].pad_idx];
@ -465,8 +459,6 @@ void fn_1_9040(omObjData *object)
Mtx sp38;
Vec sp2C;
Vec sp20;
Vec sp14;
Vec sp8;
float var_f31;
float var_f30;
@ -475,18 +467,11 @@ void fn_1_9040(omObjData *object)
float var_f27;
float var_f26;
float var_f25;
float var_f24;
float var_f23;
float var_f22;
double var_f21;
double var_f20;
UnkM410Struct5 *var_r31;
s32 var_r29;
s32 var_r28;
s16 var_r27;
Vec *var_r26;
Vec *var_r25;
var_r31 = object->data;
fn_1_79F8(object->model[0], lbl_1_data_16C[var_r31->unk_08], sp38);
@ -1117,9 +1102,9 @@ void fn_1_B140(ModelData *arg0, Mtx arg1)
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0);
GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0);
GXSetArray(GX_VA_POS, var_r30->unk_120.unk_1C0, 12);
GXSetArray(GX_VA_CLR0, var_r30->unk_120.unk_E40, 4);
GXSetArray(GX_VA_TEX0, var_r30->unk_120.unk_940, 8);
GXSETARRAY(GX_VA_POS, var_r30->unk_120.unk_1C0, sizeof(var_r30->unk_120.unk_1C0), sizeof(Vec));
GXSETARRAY(GX_VA_CLR0, var_r30->unk_120.unk_E40, sizeof(var_r30->unk_120.unk_E40), sizeof(GXColor));
GXSETARRAY(GX_VA_TEX0, var_r30->unk_120.unk_940, sizeof(var_r30->unk_120.unk_940), sizeof(Vec2f));
var_r31 = var_r30->unk_120.unk_00;
for (var_r29 = 0; var_r29 < 16; var_r29++, var_r31++) {

View file

@ -377,7 +377,7 @@ void fn_1_1074(void)
CameraData *var_r31;
var_r31 = &Hu3DCamera[0];
C_MTXPerspective(sp64, var_r31->fov, var_r31->aspect, var_r31->near, var_r31->far);
C_MTXPerspective(sp64, var_r31->fov, var_r31->aspect, var_r31->nnear, var_r31->ffar);
GXSetProjection(sp64, GX_PERSPECTIVE);
GXSetViewport(0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f);
GXSetScissor(0, 0, 640, 480);

View file

@ -569,8 +569,6 @@ void fn_1_2064(void)
Vec sp28;
Vec sp1C;
Vec sp10;
f32 spC;
f32 sp8;
Process *temp_r26;
s32 var_r30;
unkStruct *temp_r28;
@ -701,10 +699,6 @@ s32 fn_1_2708(void)
f32 fn_1_27C4(s32 arg0, f32 arg8, f32 arg9)
{
f32 temp_f31;
f32 var_f25;
f32 var_f26;
f32 var_f27;
f32 var_f28;
f32 var_f29;
temp_f31 = arg8 - fn_1_1D08(arg9);
@ -922,18 +916,11 @@ void fn_1_3950(void)
f32 sp5C;
volatile f32 sp58;
f32 sp54;
f32 temp_f27;
f32 var_f29;
f32 temp_f31;
f32 temp_f30;
f32 var_f18;
f32 var_f19;
f32 var_f20;
f32 var_f21;
f32 var_f22;
f32 var_f23;
f32 var_f24;
s32 var_r28;
s32 var_r24;
s32 var_r25;
s32 var_r29;
@ -1269,9 +1256,6 @@ void fn_1_5838(unkStruct3 *arg0)
Vec spA8;
Vec sp9C;
Vec sp90;
Vec sp84;
Vec sp78;
Vec sp6C;
s32 sp68;
f32 sp64;
f32 sp60;
@ -1593,13 +1577,6 @@ void fn_1_6814(unkStruct3 *arg0)
void fn_1_7C60(void)
{
Vec sp1A0;
Vec sp188;
Vec sp17C;
Vec sp170;
Vec sp164;
Vec sp158;
Vec sp14C;
Vec sp140;
f32 sp13C;
f32 sp138;
f32 sp134;
@ -2020,8 +1997,6 @@ void fn_1_AA88(ModelData *model, ParticleData *particle, f32 (*matrix)[4])
void fn_1_ADC8(void)
{
Vec sp14;
Vec sp8;
f32 var_f31;
void *temp_r28;
Process *var_r29;

View file

@ -19,7 +19,7 @@
#include "game/hsfex.h"
#endif
s32 rand8(void);
extern s32 rand8(void);
typedef struct struct_bss_2A6C StructBss2A6C;
@ -2011,7 +2011,11 @@ void fn_1_C6E0(omObjData *object)
lbl_1_bss_FC = 0;
memset(lbl_1_bss_D4, 0, sizeof(lbl_1_bss_D4));
lbl_1_bss_D0 = 0;
#ifdef NON_MATCHING
memset(&lbl_1_bss_B8, 0, sizeof(lbl_1_bss_B8));
#else
memset(lbl_1_bss_B8, 0, sizeof(lbl_1_bss_B8));
#endif
object->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M413, 0x00));
omSetTra(object, 0, 0, 0);
Hu3DMotionSpeedSet(object->model[0], 0);

View file

@ -421,8 +421,11 @@ void fn_1_1960(omObjData *object)
GXDrawDone();
temp_r3 = fn_1_9734(object->model[2]);
temp_r29 = Hu3DShadowData.unk_02 * Hu3DShadowData.unk_02;
#ifdef __MWERKS__
// TODO PC
memcpy((*temp_r3)->bmp->data, OSCachedToUncached(Hu3DShadowData.unk_04), temp_r29);
DCStoreRangeNoSync((*temp_r3)->bmp->data, temp_r29);
#endif
DCStoreRangeNoSync((*temp_r3)->bmp->data, temp_r29);
break;
case 2:
Hu3DModelShadowMapObjSet(object->model[0], "kyanbasu");

View file

@ -241,19 +241,19 @@ void fn_1_88B8(unkSubStruct2 *arg0)
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GXSetArray(GX_VA_POS, var_r31->unk40, 12);
GXSETARRAY(GX_VA_POS, var_r31->unk40, 4 * sizeof(Vec), sizeof(Vec));
GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0);
GXSetArray(GX_VA_CLR0, var_r31->unk44, 4);
GXSETARRAY(GX_VA_CLR0, var_r31->unk44, 4 * sizeof(GXColor), sizeof(GXColor));
for (var_r27 = 0; var_r27 < var_r31->unk33; var_r27++) {
GXSetVtxDesc(var_r27 + GX_VA_TEX0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, var_r27 + GX_VA_TEX0, GX_TEX_ST, GX_F32, 0);
GXSetArray(var_r27 + GX_VA_TEX0, var_r31->unk54[var_r27].unk4, 8);
GXSETARRAY(var_r27 + GX_VA_TEX0, var_r31->unk54[var_r27].unk4, 4 * sizeof(HsfVector2f), 8);
}
GXSetVtxDesc(GX_VA_NRM, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0);
GXSetArray(GX_VA_NRM, var_r31->unk48, 12);
GXSETARRAY(GX_VA_NRM, var_r31->unk48, sizeof(Vec), sizeof(Vec));
GXCallDisplayList(var_r31->unk3C, var_r31->unk38);
}
}

View file

@ -305,7 +305,7 @@ void fn_1_3D58(omObjData *object)
for (var_r31 = 0; var_r31 < 2; var_r31++) {
lbl_1_bss_178.unk_6BC[var_r31] = HuMemDirectMallocNum(HEAP_SYSTEM, 30 * 36 * sizeof(Vec), MEMORY_DEFAULT_NUM);
lbl_1_bss_178.unk_6C4[var_r31] = HuMemDirectMallocNum(HEAP_SYSTEM, 30 * 36 * sizeof(Vec), MEMORY_DEFAULT_NUM);
lbl_1_bss_178.unk_6CC[var_r31] = HuMemDirectMallocNum(HEAP_SYSTEM, 1080 * sizeof(GXColor), MEMORY_DEFAULT_NUM);
lbl_1_bss_178.unk_6CC[var_r31] = HuMemDirectMallocNum(HEAP_SYSTEM, 30 * 36 * sizeof(GXColor), MEMORY_DEFAULT_NUM);
lbl_1_bss_178.unk_6D4[var_r31] = HuMemDirectMallocNum(HEAP_SYSTEM, 30 * 36 * sizeof(Vec2f), MEMORY_DEFAULT_NUM);
lbl_1_bss_178.unk_6E0[var_r31] = HuMemDirectMallocNum(HEAP_SYSTEM, lbl_1_bss_178.unk_6DC, MEMORY_DEFAULT_NUM);
DCFlushRange(lbl_1_bss_178.unk_6E0[var_r31], lbl_1_bss_178.unk_6DC);
@ -856,10 +856,10 @@ void fn_1_604C(ModelData *arg0, Mtx arg1)
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0);
GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0);
GXSetArray(GX_VA_POS, lbl_1_bss_178.unk_6BC[lbl_1_bss_178.unk_6B4], 12);
GXSetArray(GX_VA_NRM, lbl_1_bss_178.unk_6C4[lbl_1_bss_178.unk_6B4], 12);
GXSetArray(GX_VA_CLR0, lbl_1_bss_178.unk_6CC[lbl_1_bss_178.unk_6B4], 4);
GXSetArray(GX_VA_TEX0, lbl_1_bss_178.unk_6D4[lbl_1_bss_178.unk_6B4], 8);
GXSETARRAY(GX_VA_POS, lbl_1_bss_178.unk_6BC[lbl_1_bss_178.unk_6B4], 30 * 36 * sizeof(Vec), sizeof(Vec));
GXSETARRAY(GX_VA_NRM, lbl_1_bss_178.unk_6C4[lbl_1_bss_178.unk_6B4], 30 * 36 * sizeof(Vec), sizeof(Vec));
GXSETARRAY(GX_VA_CLR0, lbl_1_bss_178.unk_6CC[lbl_1_bss_178.unk_6B4], 30 * 36 * sizeof(GXColor), sizeof(GXColor));
GXSETARRAY(GX_VA_TEX0, lbl_1_bss_178.unk_6D4[lbl_1_bss_178.unk_6B4], 30 * 36 * sizeof(Vec2f), sizeof(Vec2f));
GXCallDisplayList(lbl_1_bss_178.unk_6E0[0], lbl_1_bss_178.unk_6E8[0]);
GXSetNumIndStages(0);
GXSetTevDirect(GX_TEVSTAGE0);

View file

@ -2857,7 +2857,9 @@ void fn_1_9F94(omObjData *object)
object->func = fn_1_9BA4;
}
#ifdef __MWERKS__
#include "src/REL/executor.c"
#endif
void fn_1_A1F0(void)
{

View file

@ -1800,8 +1800,8 @@ void fn_1_ABDC(ModelData *model, Mtx matrix)
MTXConcat(sp58, sp88, sp118);
MTXConcat(spB8, sp118, spE8);
GXLoadTexMtxImm(spE8, 0x1E, GX_MTX3x4);
GXSetArray(GX_VA_POS, work->unk_50[var_r28], 0xC);
GXSetArray(GX_VA_CLR0, &work->unk_40[var_r28], 4);
GXSETARRAY(GX_VA_POS, work->unk_50[var_r28], 14 * sizeof(Vec), sizeof(Vec));
GXSETARRAY(GX_VA_CLR0, &work->unk_40[var_r28], sizeof(GXColor), sizeof(GXColor));
GXBegin(GX_TRIANGLEFAN, GX_VTXFMT0, 0xE);
GXPosition1x8(0);
GXPosition1x8(0);
@ -1815,8 +1815,8 @@ void fn_1_ABDC(ModelData *model, Mtx matrix)
MTXConcat(sp58, sp88, sp118);
MTXConcat(spB8, sp118, spE8);
GXLoadTexMtxImm(spE8, 0x1E, GX_MTX3x4);
GXSetArray(GX_VA_POS, work->unk_50[var_r28 + 1], 0xC);
GXSetArray(GX_VA_CLR0, &work->unk_40[var_r28], 4);
GXSETARRAY(GX_VA_POS, work->unk_50[var_r28 + 1], 14 * sizeof(Vec), sizeof(Vec));
GXSETARRAY(GX_VA_CLR0, &work->unk_40[var_r28], sizeof(GXColor), sizeof(GXColor));
GXBegin(GX_TRIANGLEFAN, GX_VTXFMT0, 0xE);
GXPosition1x8(0);
GXPosition1x8(0);

View file

@ -19,7 +19,7 @@
#define frand7() (frand() & 0x7F)
extern u32 GlobalCounter;
SHARED_SYM extern u32 GlobalCounter;
typedef struct {
/* 0x00 */ s32 unk00;
@ -874,16 +874,16 @@ void fn_1_14A0(ModelData *arg0, Mtx arg1)
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GXSetArray(GX_VA_POS, lbl_1_data_29C, 12);
GXSETARRAY(GX_VA_POS, lbl_1_data_29C, sizeof(lbl_1_data_29C), sizeof(Vec));
GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0);
GXSetArray(GX_VA_CLR0, lbl_1_data_30C, 4);
GXSETARRAY(GX_VA_CLR0, lbl_1_data_30C, sizeof(lbl_1_data_30C), sizeof(GXColor));
GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0);
GXSetArray(GX_VA_TEX0, lbl_1_data_2CC, 8);
GXSETARRAY(GX_VA_TEX0, lbl_1_data_2CC, sizeof(lbl_1_data_2CC), sizeof(Vec2f));
GXSetVtxDesc(GX_VA_TEX1, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX1, GX_TEX_ST, GX_F32, 0);
GXSetArray(GX_VA_TEX1, lbl_1_data_2EC, 8);
GXSETARRAY(GX_VA_TEX1, lbl_1_data_2EC, sizeof(lbl_1_data_2EC), sizeof(Vec2f));
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
for (i = 0; i < 4; i++) {
GXPosition1x16(i);
@ -1255,8 +1255,8 @@ void fn_1_29BC(ModelData *arg0, Mtx arg1)
DCFlushRangeNoSync(temp_r31->unk14, temp_r31->unk00 * sizeof(*temp_r31->unk14));
DCFlushRangeNoSync(temp_r31->unk1C, temp_r31->unk00 * sizeof(*temp_r31->unk1C));
PPCSync();
GXSetArray(GX_VA_POS, temp_r31->unk14, sizeof(*temp_r31->unk14));
GXSetArray(GX_VA_CLR0, temp_r31->unk1C, sizeof(*temp_r31->unk1C));
GXSETARRAY(GX_VA_POS, temp_r31->unk14, temp_r31->unk00 * sizeof(*temp_r31->unk14), sizeof(*temp_r31->unk14));
GXSETARRAY(GX_VA_CLR0, temp_r31->unk1C, temp_r31->unk00 * sizeof(*temp_r31->unk1C), sizeof(*temp_r31->unk1C));
GXCallDisplayList(temp_r31->unk38, temp_r31->unk34);
}
}
@ -4471,9 +4471,9 @@ void fn_1_EF44(ModelData *arg0, Mtx arg1)
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0);
GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0);
GXSetArray(GX_VA_POS, temp_r30->unk20C, 12);
GXSetArray(GX_VA_CLR0, temp_r30->unk214, 4);
GXSetArray(GX_VA_TEX0, temp_r30->unk210, 8);
GXSETARRAY(GX_VA_POS, temp_r30->unk20C, 32 * sizeof(*temp_r30->unk20C), sizeof(Vec));
GXSETARRAY(GX_VA_CLR0, temp_r30->unk214, 5 * sizeof(*temp_r30->unk214), sizeof(GXColor));
GXSETARRAY(GX_VA_TEX0, temp_r30->unk210, 32 * sizeof(*temp_r30->unk210), sizeof(Vec2f));
var_r31 = temp_r30->unk00;
for (i = 0; i < 16; i++, var_r31++) {
if (var_r31->unk00 == 0) {
@ -4864,7 +4864,7 @@ void fn_1_10BC8(void)
if (var_r31->fov <= 0.0f) {
return;
}
C_MTXPerspective(sp64, var_r31->fov, var_r31->aspect, var_r31->near, var_r31->far);
C_MTXPerspective(sp64, var_r31->fov, var_r31->aspect, var_r31->nnear, var_r31->ffar);
GXSetProjection(sp64, GX_PERSPECTIVE);
GXSetViewport(0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f);
GXSetScissor(0, 0, 640, 480);
@ -5227,13 +5227,13 @@ void fn_1_11900(ModelData *arg0, Mtx arg1)
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GXSetArray(GX_VA_POS, temp_r31->unk40, 12);
GXSETARRAY(GX_VA_POS, temp_r31->unk40, temp_r31->unk26 * sizeof(Vec) * 4, sizeof(Vec));
GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0);
GXSetArray(GX_VA_CLR0, &temp_r31->unk3C->unk44, 76);
GXSETARRAY(GX_VA_CLR0, &temp_r31->unk3C->unk44, sizeof(GXColor), 76);
GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0);
GXSetArray(GX_VA_TEX0, temp_r31->unk44, 8);
GXSETARRAY(GX_VA_TEX0, temp_r31->unk44, temp_r31->unk26 * sizeof(Vec2f) * 4, sizeof(Vec2f));
GXCallDisplayList(temp_r31->unk48, temp_r31->unk34);
if (shadowModelDrawF == 0) {
if (!(temp_r31->unk21 & 2)) {

View file

@ -27,7 +27,7 @@
#include "REL/m425Dll.h"
extern u8 texMtxTbl[]; // TODO maybe put in hsfdraw.h?
SHARED_SYM extern u8 texMtxTbl[]; // TODO maybe put in hsfdraw.h?
typedef struct M425DllWork {
u8 unk_00;
@ -1628,19 +1628,19 @@ void fn_1_5C20(ModelData *var_r27, Mtx sp8)
GXSetChanCtrl(GX_COLOR0A0, GX_TRUE, GX_SRC_REG, GX_SRC_VTX, var_r26, GX_DF_CLAMP, GX_AF_SPOT);
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_TEX_ST, GX_RGBA6, 0);
GXSetArray(GX_VA_POS, var_r31->unk_14, 0xC);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GXSETARRAY(GX_VA_POS, var_r31->unk_14, var_r31->unk_2A * (4 * sizeof(Vec)), sizeof(Vec));
GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_TEX_ST, GX_RGBA8, 0);
GXSetArray(GX_VA_CLR0, var_r31->unk_18, 4);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0);
GXSETARRAY(GX_VA_CLR0, var_r31->unk_18, var_r31->unk_2A * (4 * sizeof(GXColor)), sizeof(GXColor));
for (var_r29 = GX_TEXMAP0; var_r29 < (var_r31->unk_28 * var_r31->unk_2A); var_r29++) {
GXSetVtxDesc(var_r29 + 0xD, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, var_r29 + 0xD, GX_TEX_ST, GX_RGBA6, 0);
GXSetArray(var_r29 + 0xD, var_r31->unk_2C[var_r29].unk_44, 8);
GXSetVtxAttrFmt(GX_VTXFMT0, var_r29 + 0xD, GX_TEX_ST, GX_F32, 0);
GXSETARRAY(var_r29 + 0xD, var_r31->unk_2C[var_r29].unk_44, var_r31->unk_2A * (4 * sizeof(Vec2f)), sizeof(Vec2f));
}
GXSetVtxDesc(GX_VA_NRM, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_TEX_S, GX_RGBA6, 0);
GXSetArray(GX_VA_NRM, var_r31->unk_1C, 0xC);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0);
GXSETARRAY(GX_VA_NRM, var_r31->unk_1C, var_r31->unk_2A * (4 * sizeof(Vec)), sizeof(Vec));
GXCallDisplayList(var_r31->unk_10, var_r31->unk_0C);
}

View file

@ -26,8 +26,8 @@
#include "REL/m425Dll.h"
extern u32 GlobalCounter;
extern LightData Hu3DLocalLight[0x20];
SHARED_SYM extern u32 GlobalCounter;
SHARED_SYM extern LightData Hu3DLocalLight[0x20];
typedef struct M425DllUnkStruct4 {
s16 unk_00;
@ -431,24 +431,24 @@ s32 fn_1_6EC4(float var_f24, float sp8, s16 var_r22, s16 var_r24)
var_r31->unk_10E = var_r24;
var_r31->unk_110 = var_r31->unk_144[24] + var_r31->unk_112[24];
var_r31->unk_240 = 0x19;
var_r31->unk_178 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * 2, var_r23->unk_48);
memset(var_r31->unk_178, 0, var_r31->unk_110 * 2);
var_r31->unk_17C = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * 0xC, var_r23->unk_48);
memset(var_r31->unk_17C, 0, var_r31->unk_110 * 0xC);
var_r31->unk_180 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * 0xC, var_r23->unk_48);
memset(var_r31->unk_180, 0, var_r31->unk_110 * 0xC);
var_r31->unk_184 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * 8, var_r23->unk_48);
memset(var_r31->unk_184, 0, var_r31->unk_110 * 8);
var_r31->unk_188 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * 0xC, var_r23->unk_48);
memset(var_r31->unk_188, 0, var_r31->unk_110 * 0xC);
var_r31->unk_18C = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * 0xC, var_r23->unk_48);
memset(var_r31->unk_18C, 0, var_r31->unk_110 * 0xC);
var_r31->unk_178 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * sizeof(s16), var_r23->unk_48);
memset(var_r31->unk_178, 0, var_r31->unk_110 * sizeof(s16));
var_r31->unk_17C = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * sizeof(Vec), var_r23->unk_48);
memset(var_r31->unk_17C, 0, var_r31->unk_110 * sizeof(Vec));
var_r31->unk_180 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * sizeof(Vec), var_r23->unk_48);
memset(var_r31->unk_180, 0, var_r31->unk_110 * sizeof(Vec));
var_r31->unk_184 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * sizeof(Vec2f), var_r23->unk_48);
memset(var_r31->unk_184, 0, var_r31->unk_110 * sizeof(Vec2f));
var_r31->unk_188 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * sizeof(Vec), var_r23->unk_48);
memset(var_r31->unk_188, 0, var_r31->unk_110 * sizeof(Vec));
var_r31->unk_18C = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * sizeof(Vec), var_r23->unk_48);
memset(var_r31->unk_18C, 0, var_r31->unk_110 * sizeof(Vec));
var_r31->unk_190 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * 6, var_r23->unk_48);
memset(var_r31->unk_190, 0, var_r31->unk_110 * 6);
var_r31->unk_194 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * 0xC, var_r23->unk_48);
memset(var_r31->unk_194, 0, var_r31->unk_110 * 0xC);
var_r31->unk_198 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_112[0] * 0xC, var_r23->unk_48);
memset(var_r31->unk_198, 0, var_r31->unk_112[0] * 0xC);
var_r31->unk_194 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * sizeof(Vec), var_r23->unk_48);
memset(var_r31->unk_194, 0, var_r31->unk_110 * sizeof(Vec));
var_r31->unk_198 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_112[0] * sizeof(Vec), var_r23->unk_48);
memset(var_r31->unk_198, 0, var_r31->unk_112[0] * sizeof(Vec));
var_r31->unk_1A0 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110, var_r23->unk_48);
memset(var_r31->unk_1A0, 0, var_r31->unk_110);
for (var_r30 = 0; var_r30 < var_r31->unk_110; var_r30++) {
@ -2135,16 +2135,16 @@ void fn_1_101C4(ModelData *var_r29, Mtx var_r28)
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GXSetArray(GX_VA_POS, var_r31->unk_180, 0xC);
GXSETARRAY(GX_VA_POS, var_r31->unk_180, var_r31->unk_110 * sizeof(Vec), sizeof(Vec));
GXSetVtxDesc(GX_VA_NRM, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0);
GXSetArray(GX_VA_NRM, var_r31->unk_188, 0xC);
GXSETARRAY(GX_VA_NRM, var_r31->unk_188, var_r31->unk_110 * sizeof(Vec), sizeof(Vec));
GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0);
GXSetArray(GX_VA_CLR0, &var_r31->unk_23A, 4);
GXSETARRAY(GX_VA_CLR0, &var_r31->unk_23A, var_r31->unk_110 * sizeof(GXColor), sizeof(GXColor));
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_CLR_RGBA, GX_RGBA6, 0);
GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16);
GXSetArray(GX_VA_TEX0, var_r31->unk_184, 8);
GXSETARRAY(GX_VA_TEX0, var_r31->unk_184, var_r31->unk_110 * sizeof(Vec2f), sizeof(Vec2f));
for (var_r30 = 0; var_r30 < var_r31->unk_240; var_r30++) {
if (var_r31->unk_2A8[var_r30] && var_r31->unk_244[var_r30] != 0 && var_r30 != 1) {
GXCallDisplayList(var_r31->unk_2A8[var_r30], var_r31->unk_244[var_r30]);
@ -2181,16 +2181,16 @@ void fn_1_101C4(ModelData *var_r29, Mtx var_r28)
GXClearVtxDesc();
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_TEX_ST, GX_RGBA6, 0);
GXSetVtxDesc(GX_VA_POS, GX_INDEX16);
GXSetArray(GX_VA_POS, var_r31->unk_180, 0xC);
GXSETARRAY(GX_VA_POS, var_r31->unk_180, var_r31->unk_110 * sizeof(Vec), sizeof(Vec));
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_TEX_S, GX_RGBA6, 0);
GXSetVtxDesc(GX_VA_NRM, GX_INDEX16);
GXSetArray(GX_VA_NRM, var_r31->unk_188, 0xC);
GXSETARRAY(GX_VA_NRM, var_r31->unk_188, var_r31->unk_110 * sizeof(Vec), sizeof(Vec));
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_TEX_ST, GX_RGBA8, 0);
GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16);
GXSetArray(GX_VA_CLR0, &var_r31->unk_23A, 4);
GXSETARRAY(GX_VA_CLR0, &var_r31->unk_23A, var_r31->unk_110 * sizeof(GXColor), sizeof(GXColor));
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_RGBA6, 0);
GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16);
GXSetArray(GX_VA_TEX0, var_r31->unk_184, 8);
GXSETARRAY(GX_VA_TEX0, var_r31->unk_184, var_r31->unk_110 * sizeof(Vec2f), sizeof(Vec2f));
if (var_r31->unk_2A8[1] && (var_r31->unk_244[1] != 0)) {
GXCallDisplayList(var_r31->unk_2A8[1], var_r31->unk_244[1]);
}
@ -2684,13 +2684,13 @@ void fn_1_11EE0(ModelData *var_r24, Mtx var_r21)
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_TEX_ST, GX_RGBA6, 0);
GXSetArray(GX_VA_POS, var_r31->unk_40, 0xC);
GXSETARRAY(GX_VA_POS, var_r31->unk_40, var_r31->unk_24 * sizeof(Vec) * 4, sizeof(Vec));
GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_TEX_ST, GX_RGBA8, 0);
GXSetArray(GX_VA_CLR0, &var_r31->unk_3C->unk_3C, 0x44);
GXSETARRAY(GX_VA_CLR0, &var_r31->unk_3C->unk_3C, sizeof(var_r31->unk_3C->unk_3C), 0x44);
GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_RGBA6, 0);
GXSetArray(GX_VA_TEX0, var_r31->unk_44, 8);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0);
GXSETARRAY(GX_VA_TEX0, var_r31->unk_44, var_r31->unk_24 * sizeof(Vec2f) * 4, sizeof(Vec2f));
if (HmfInverseMtxF3X3(var_r21, sp128) == 0) {
MTXIdentity(sp128);
}
@ -2748,8 +2748,8 @@ void fn_1_11EE0(ModelData *var_r24, Mtx var_r21)
}
}
}
DCFlushRangeNoSync(var_r31->unk_40, var_r31->unk_24 * 0xC * 4);
DCFlushRangeNoSync(var_r31->unk_44, var_r31->unk_24 * 8 * 4);
DCFlushRangeNoSync(var_r31->unk_40, var_r31->unk_24 * sizeof(Vec) * 4);
DCFlushRangeNoSync(var_r31->unk_44, var_r31->unk_24 * sizeof(Vec2f) * 4);
PPCSync();
GXCallDisplayList(var_r31->unk_48, var_r31->unk_34);
if (shadowModelDrawF == 0) {

View file

@ -265,7 +265,7 @@ void fn_1_DB8(omObjData *object);
void fn_1_E18(omObjData *object);
void fn_1_EB8(void);
extern u32 GlobalCounter;
SHARED_SYM extern u32 GlobalCounter;
Vec lbl_1_data_0[4] = {
{ -600.0f, 0.0f, -285.0f },
@ -3035,13 +3035,13 @@ void fn_1_80DC(ModelData *arg0, Mtx arg1)
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GXSetArray(GX_VA_POS, var_r31->unk_40, 12);
GXSETARRAY(GX_VA_POS, var_r31->unk_40, var_r31->unk_24 * sizeof(Vec) * 4, sizeof(Vec));
GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0);
GXSetArray(GX_VA_CLR0, &var_r31->unk_3C->unk_3C, 68);
GXSETARRAY(GX_VA_CLR0, &var_r31->unk_3C->unk_3C, sizeof(var_r31->unk_3C->unk_3C), 68);
GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0);
GXSetArray(GX_VA_TEX0, var_r31->unk_44, 8);
GXSETARRAY(GX_VA_TEX0, var_r31->unk_44, var_r31->unk_24 * sizeof(Vec2f) * 4, sizeof(Vec2f));
if (!HmfInverseMtxF3X3(arg1, sp128)) {
MTXIdentity(sp128);
}
@ -3169,13 +3169,13 @@ void fn_1_88B4(ModelData *arg0, Mtx arg1)
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GXSetArray(GX_VA_POS, lbl_1_data_27C, 12);
GXSETARRAY(GX_VA_POS, lbl_1_data_27C, sizeof(lbl_1_data_27C), sizeof(Vec));
GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0);
GXSetArray(GX_VA_CLR0, lbl_1_data_2AC, 4);
GXSETARRAY(GX_VA_CLR0, lbl_1_data_2AC, sizeof(lbl_1_data_2AC), sizeof(GXColor));
GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0);
GXSetArray(GX_VA_TEX0, lbl_1_data_2BC, 8);
GXSETARRAY(GX_VA_TEX0, lbl_1_data_2BC, sizeof(lbl_1_data_2BC), sizeof(Vec2f));
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
GXPosition1x16(0);

View file

@ -18,7 +18,7 @@
#include "string.h"
extern s32 rand8(void);
extern LightData Hu3DLocalLight[0x20];
SHARED_SYM extern LightData Hu3DLocalLight[0x20];
#define FABS(value) ((value < 0) ? -(value) : (value))
@ -837,7 +837,7 @@ void fn_1_510C(s32 arg0, s16 arg1, s16 arg2)
var_r31->unk4 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk14 * sizeof(Vec), temp_r28->unk_48);
var_r31->unk8 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk14 * sizeof(Vec2f), temp_r28->unk_48);
var_r31->unkC = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk14 * sizeof(Vec), temp_r28->unk_48);
var_r31->unk10 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk14 * sizeof(Vec), temp_r28->unk_48);
var_r31->unk10 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk14 * (3 * sizeof(GXColor)), temp_r28->unk_48);
var_r31->unk1C = HuMemDirectMallocNum(HEAP_DATA, arg2 * (arg1 * sizeof(M427DllMapSubstruct5)), temp_r28->unk_48);
var_r30 = var_r31->unk1C;
var_r23 = var_r26 = HuMemDirectMallocNum(HEAP_DATA, 0x20000, temp_r28->unk_48);
@ -1013,13 +1013,13 @@ void fn_1_618C(ModelData *arg0, Mtx arg1)
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_TEX_ST, GX_RGBA6, 0);
GXSetArray(GX_VA_POS, var_r31->unk4, 0xC);
GXSETARRAY(GX_VA_POS, var_r31->unk4, var_r31->unk14 * sizeof(Vec), sizeof(Vec));
GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_RGBA6, 0);
GXSetArray(GX_VA_TEX0, var_r31->unk8, 8);
GXSETARRAY(GX_VA_TEX0, var_r31->unk8, var_r31->unk14 * sizeof(Vec2f), sizeof(Vec2f));
GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_TEX_ST, GX_RGBA8, 0);
GXSetArray(GX_VA_CLR0, var_r31->unk10, 4);
GXSETARRAY(GX_VA_CLR0, var_r31->unk10, var_r31->unk14 * 3 * sizeof(GXColor), sizeof(GXColor));
GXInitTexObj(&sp14, var_r31->unk30, 0x280, 0x1E0, GX_TF_RGB5A3, GX_CLAMP, GX_CLAMP, 0);
GXInitTexObjLOD(&sp14, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, 0, 0, GX_ANISO_1);
GXLoadTexObj(&sp14, GX_TEXMAP0);
@ -1978,13 +1978,13 @@ void fn_1_9B88(ModelData *model, Mtx matrix)
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_TEX_ST, GX_RGBA6, 0);
GXSetArray(GX_VA_POS, &var_r31->unkC, sizeof(Vec));
GXSETARRAY(GX_VA_POS, &var_r31->unkC, sizeof(var_r31->unkC), sizeof(Vec));
GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_RGBA6, 0);
GXSetArray(GX_VA_TEX0, &var_r31->unk3C, sizeof(Vec2f));
GXSETARRAY(GX_VA_TEX0, &var_r31->unk3C, sizeof(var_r31->unk3C), sizeof(Vec2f));
GXSetVtxDesc(GX_VA_TEX1, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX1, GX_TEX_ST, GX_RGBA6, 0);
GXSetArray(GX_VA_TEX1, var_r31->unk5C, sizeof(Vec2f));
GXSETARRAY(GX_VA_TEX1, var_r31->unk5C, sizeof(var_r31->unk5C), sizeof(Vec2f));
HuSprTexLoad(var_r31->unk8, 0, 0, GX_REPEAT, GX_REPEAT, GX_LINEAR);
HuSprTexLoad(var_r26->unk_04, 0, 1, GX_REPEAT, GX_REPEAT, GX_LINEAR);
HuSprTexLoad(var_r26->unk_00, 0, 2, GX_REPEAT, GX_REPEAT, GX_LINEAR);
@ -2351,13 +2351,13 @@ void fn_1_B3CC(ModelData *model, Mtx matrix)
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GXSetArray(GX_VA_POS, var_r31->unk_2C, sizeof(Vec));
GXSETARRAY(GX_VA_POS, var_r31->unk_2C, var_r31->unk_38 * sizeof(Vec), sizeof(Vec));
GXSetVtxDesc(GX_VA_NRM, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0);
GXSetArray(GX_VA_NRM, var_r31->unk_34, sizeof(Vec));
GXSETARRAY(GX_VA_NRM, var_r31->unk_34, var_r31->unk_38 * sizeof(Vec), sizeof(Vec));
GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0);
GXSetArray(GX_VA_TEX0, var_r31->unk_30, 8);
GXSETARRAY(GX_VA_TEX0, var_r31->unk_30, var_r31->unk_38 * sizeof(Vec2f), sizeof(Vec2f));
if (var_r31->unk_00 == 0) {
GXInitTexObj(&sp44, var_r27->unk4, 0x140, 0x1E0, GX_TF_RGB5A3, GX_CLAMP, GX_CLAMP, 0);
}
@ -3015,13 +3015,13 @@ void fn_1_DCD4(ModelData *model, Mtx matrix)
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GXSetArray(GX_VA_POS, var_r30->unk_1C, 0xC);
GXSETARRAY(GX_VA_POS, var_r30->unk_1C, var_r30->unk_00 * sizeof(Vec) * 4, sizeof(Vec));
GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0);
GXSetArray(GX_VA_CLR0, var_r30->unk_24, 4);
GXSETARRAY(GX_VA_CLR0, var_r30->unk_24, var_r30->unk_00 * sizeof(GXColor), sizeof(GXColor));
GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0);
GXSetArray(GX_VA_TEX0, var_r30->unk_20, 8);
GXSETARRAY(GX_VA_TEX0, var_r30->unk_20, var_r30->unk_00 * sizeof(Vec2f) * 4, sizeof(Vec2f));
sp128[0][0] = matrix[0][0];
sp128[1][0] = matrix[0][1];
sp128[2][0] = matrix[0][2];
@ -3057,20 +3057,20 @@ void fn_1_DCD4(ModelData *model, Mtx matrix)
else {
if (var_r29->unk_44 == 0.0f) {
fn_1_E420(sp68, &sp38, &var_r29->unk_48, 4);
PSVECAdd(&sp38, &var_r29->unk_54, var_r31++);
PSVECAdd(&sp44, &var_r29->unk_54, var_r31++);
PSVECAdd(&sp50, &var_r29->unk_54, var_r31++);
PSVECAdd(&sp5C, &var_r29->unk_54, var_r31++);
VECAdd(&sp38, &var_r29->unk_54, var_r31++);
VECAdd(&sp44, &var_r29->unk_54, var_r31++);
VECAdd(&sp50, &var_r29->unk_54, var_r31++);
VECAdd(&sp5C, &var_r29->unk_54, var_r31++);
}
else {
fn_1_E420(&var_r30->unk_2C, &sp38, &var_r29->unk_48, 4);
MTXRotRad(spC8, 0x5A, MTXDegToRad(var_r29->unk_44));
MTXConcat(sp128, spC8, sp98);
MTXMultVecArray(sp98, &sp38, &sp8, 4);
PSVECAdd(&sp8, &var_r29->unk_54, var_r31++);
PSVECAdd(&sp14, &var_r29->unk_54, var_r31++);
PSVECAdd(&sp20, &var_r29->unk_54, var_r31++);
PSVECAdd(&sp2C, &var_r29->unk_54, var_r31++);
VECAdd(&sp8, &var_r29->unk_54, var_r31++);
VECAdd(&sp14, &var_r29->unk_54, var_r31++);
VECAdd(&sp20, &var_r29->unk_54, var_r31++);
VECAdd(&sp2C, &var_r29->unk_54, var_r31++);
}
if (var_r29->unk_60 != -1) {
fn_1_E37C(var_r26, var_r30->unk_5C, var_r29->unk_60, var_r30->unk_60, var_r30->unk_64);

View file

@ -1666,10 +1666,10 @@ void fn_1_13FBC(ModelData *model, Mtx matrix)
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_TEX_ST, GX_RGBA6, 0);
GXSetArray(GX_VA_POS, lbl_1_data_260, sizeof(Vec));
GXSETARRAY(GX_VA_POS, lbl_1_data_260, sizeof(lbl_1_data_260), sizeof(Vec));
GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_TEX_ST, GX_RGBA8, 0);
GXSetArray(GX_VA_CLR0, &lbl_1_data_648, sizeof(GXColor));
GXSETARRAY(GX_VA_CLR0, &lbl_1_data_648, sizeof(lbl_1_data_648), sizeof(GXColor));
GXBegin(GX_LINESTRIP, GX_VTXFMT0, 0x1D);
for (var_r29 = 0; var_r29 < 0x1DU; var_r29++) {
GXPosition1x16(var_r29);
@ -1678,10 +1678,10 @@ void fn_1_13FBC(ModelData *model, Mtx matrix)
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GXSetArray(GX_VA_POS, &lbl_1_data_3BC, sizeof(Vec));
GXSETARRAY(GX_VA_POS, &lbl_1_data_3BC, sizeof(lbl_1_data_3BC), sizeof(Vec));
GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0);
GXSetArray(GX_VA_CLR0, &lbl_1_data_648, sizeof(GXColor));
GXSETARRAY(GX_VA_CLR0, &lbl_1_data_648, sizeof(lbl_1_data_648), sizeof(GXColor));
GXBegin(GX_LINESTRIP, GX_VTXFMT0, 0x1D);
for (var_r29 = 0; var_r29 < 0x1DU; var_r29++) {
GXPosition1x16(var_r29);
@ -1690,10 +1690,10 @@ void fn_1_13FBC(ModelData *model, Mtx matrix)
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GXSetArray(GX_VA_POS, lbl_1_bss_584, sizeof(Vec));
GXSETARRAY(GX_VA_POS, lbl_1_bss_584, lbl_1_bss_580 * sizeof(Vec), sizeof(Vec));
GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0);
GXSetArray(GX_VA_CLR0, &lbl_1_data_650, sizeof(GXColor));
GXSETARRAY(GX_VA_CLR0, &lbl_1_data_650, sizeof(lbl_1_data_650), sizeof(GXColor));
GXBegin(GX_LINESTRIP, GX_VTXFMT0, 0x1D);
for (var_r29 = 0; var_r29 < lbl_1_bss_580; var_r29++) {
GXPosition1x16(var_r29);

View file

@ -239,7 +239,7 @@ s32 fn_1_F288(Vec *arg0, Vec *arg1, float arg8);
s32 fn_1_F538(Vec *arg0, Vec *arg1, Vec *arg2, float arg8);
s32 fn_1_FB8C(Vec *arg0, Vec *arg1, float arg8, s32 arg2, s32 arg3);
extern u32 GlobalCounter;
SHARED_SYM extern u32 GlobalCounter;
Vec lbl_1_data_150[4] = {
{ -140.0f, -400.0f, 0.0f },
@ -2120,7 +2120,7 @@ void fn_1_FE98(M428DllPlayerUnk120Struct *arg0)
}
}
for (var_r29 = 0, var_r30 = arg0->unk_54; var_r29 < arg0->unk_02; var_r29++, var_r30++) {
PSVECSubtract(&var_r30->unk_08[0], &var_r30->unk_08[2], &sp24);
VECSubtract(&var_r30->unk_08[0], &var_r30->unk_08[2], &sp24);
var_f30 = var_r30->unk_08[0].z;
if ((sp8 = fn_1_F88C(&var_r30->unk_08[2], &sp24, &sp18)) != -1) {
var_r30->unk_08[0] = sp18;
@ -2137,7 +2137,7 @@ void fn_1_FE98(M428DllPlayerUnk120Struct *arg0)
}
}
s32 lbl_1_data_694[2] = { 0xFFA040FF, 0xC8FFFF };
GXColor lbl_1_data_694[2] = { { 0xFF, 0xA0, 0x40, 0xFF }, { 0x00, 0xC8, 0xFF, 0xFF } };
s16 lbl_1_data_69C[2] = { -0x10, 0x10 };
s16 lbl_1_data_6A0[2] = { 0x1A4, 0x60 };
Vec lbl_1_data_6A4[4] = {
@ -2181,10 +2181,10 @@ void fn_1_102A8(ModelData *model, Mtx matrix)
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GXSetArray(GX_VA_POS, var_r31->unk_54->unk_08, sizeof(M428DllPlayerUnkStruct));
GXSETARRAY(GX_VA_POS, var_r31->unk_54->unk_08, sizeof(var_r31->unk_54->unk_08), sizeof(M428DllPlayerUnkStruct));
GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0);
GXSetArray(GX_VA_CLR0, &lbl_1_data_694[var_r31->unk_10], 4);
GXSETARRAY(GX_VA_CLR0, &lbl_1_data_694[var_r31->unk_10], sizeof(GXColor), sizeof(GXColor));
GXBegin(GX_LINESTRIP, GX_VTXFMT0, var_r31->unk_02);
for (var_r30 = 0; var_r30 < var_r31->unk_02; var_r30++) {
GXPosition1x16(var_r30);
@ -3182,13 +3182,13 @@ void fn_1_134C0(ModelData *var_r23, Mtx var_r22)
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GXSetArray(GX_VA_POS, var_r31->unk_40, sizeof(Vec));
GXSETARRAY(GX_VA_POS, var_r31->unk_40, var_r31->unk_26 * sizeof(Vec) * 4, sizeof(Vec));
GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0);
GXSetArray(GX_VA_CLR0, &var_r31->unk_3C->unk_44, sizeof(M428DllPlayerUnkStruct2)); // bug?
GXSETARRAY(GX_VA_CLR0, &var_r31->unk_3C->unk_44, sizeof(GXColor), sizeof(M428DllPlayerUnkStruct2)); // bug?
GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0);
GXSetArray(GX_VA_TEX0, var_r31->unk_44, sizeof(Vec2f));
GXSETARRAY(GX_VA_TEX0, var_r31->unk_44, var_r31->unk_26 * sizeof(Vec2f) * 4, sizeof(Vec2f));
GXCallDisplayList(var_r31->unk_48, var_r31->unk_34);
if (shadowModelDrawF == 0) {
if ((var_r31->unk_21 & 2) == 0) {

View file

@ -1323,7 +1323,9 @@ void fn_1_3DCC(Work8F68 *arg0)
}
}
#ifdef __MWERKS__
#include "src/REL/executor.c"
#endif
void fn_1_40C0(Work8F68 *arg0, omObjData *arg1, s32 arg2)
{

View file

@ -1493,11 +1493,11 @@ void fn_1_100A0(void)
var_r31->unk_34 = var_r31->unk_38 = var_r31->unk_3C = 0.0f;
var_r31->unk_40 = var_r31->unk_44 = var_r31->unk_48 = 1000.0f;
var_r31->unk_58 = 0;
var_r31->unk_4C = HuMemDirectMallocNum(HEAP_SYSTEM, 0xC0, MEMORY_DEFAULT_NUM);
var_r31->unk_4C = HuMemDirectMallocNum(HEAP_SYSTEM, 16 * sizeof(Vec), MEMORY_DEFAULT_NUM);
memset(var_r31->unk_4C, 0, 0xC0);
var_r31->unk_50 = HuMemDirectMallocNum(HEAP_SYSTEM, 0xC0, MEMORY_DEFAULT_NUM);
var_r31->unk_50 = HuMemDirectMallocNum(HEAP_SYSTEM, 16 * sizeof(Vec), MEMORY_DEFAULT_NUM);
memset(var_r31->unk_50, 0, 0xC0);
var_r31->unk_54 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x80, MEMORY_DEFAULT_NUM);
var_r31->unk_54 = HuMemDirectMallocNum(HEAP_SYSTEM, 16 * sizeof(Vec2f), MEMORY_DEFAULT_NUM);
memset(var_r31->unk_54, 0, 0x80);
var_r30 = &Hu3DData[var_r31->unk_04];
var_r27 = HuMemDirectMallocNum(HEAP_DATA, 0x200, var_r30->unk_48);
@ -1639,14 +1639,14 @@ void fn_1_10948(ModelData *var_r29, Mtx var_r30)
GXSetLineWidth(0x10, GX_TO_ZERO);
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_TEX_ST, GX_RGBA6, 0);
GXSetArray(GX_VA_POS, var_r31->unk_50, 0xC);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GXSETARRAY(GX_VA_POS, var_r31->unk_50, 16 * sizeof(Vec), sizeof(Vec));
GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_TEX_ST, GX_RGBA8, 0);
GXSetArray(GX_VA_CLR0, &lbl_1_data_308, 4);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0);
GXSETARRAY(GX_VA_CLR0, &lbl_1_data_308, sizeof(lbl_1_data_308), sizeof(GXColor));
GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_RGBA6, 0);
GXSetArray(GX_VA_TEX0, var_r31->unk_54, 8);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0);
GXSETARRAY(GX_VA_TEX0, var_r31->unk_54, 16 * sizeof(Vec2f), sizeof(Vec2f));
GXCallDisplayList(var_r31->unk_60, var_r31->unk_5C);
}

View file

@ -1276,8 +1276,8 @@ void fn_1_8CE0(ModelData *model, Mtx matrix)
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0);
GXSetArray(GX_VA_POS, var_r31->unk_44[var_r31->unk_40], sizeof(Vec));
GXSetArray(GX_VA_CLR0, var_r31->unk_54[var_r31->unk_40], sizeof(GXColor));
GXSETARRAY(GX_VA_POS, var_r31->unk_44[var_r31->unk_40], 0x1B8 * sizeof(Vec), sizeof(Vec));
GXSETARRAY(GX_VA_CLR0, var_r31->unk_54[var_r31->unk_40], 0x1B8 * sizeof(GXColor), sizeof(GXColor));
GXSetCullMode(GX_CULL_NONE);
GXCallDisplayList(var_r31->unk_60, var_r31->unk_64);
GXSetCullMode(GX_CULL_BACK);
@ -1372,8 +1372,8 @@ void fn_1_963C(ModelData *model, Mtx matrix, u32 var_r31)
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GXSetVtxDesc(GX_VA_CLR0, GX_INDEX8);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0);
GXSetArray(GX_VA_POS, lbl_1_data_60, sizeof(Vec));
GXSetArray(GX_VA_CLR0, lbl_1_data_A8, sizeof(GXColor));
GXSETARRAY(GX_VA_POS, lbl_1_data_60, sizeof(lbl_1_data_60), sizeof(Vec));
GXSETARRAY(GX_VA_CLR0, lbl_1_data_A8, sizeof(lbl_1_data_A8), sizeof(GXColor));
GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, 6);
GXPosition1x8(0);
GXColor1x8(3);
@ -1490,8 +1490,8 @@ void fn_1_9C90(ModelData *model, Mtx matrix)
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GXSetVtxDesc(GX_VA_CLR0, GX_INDEX8);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0);
GXSetArray(GX_VA_POS, lbl_1_data_C0, 0xC);
GXSetArray(GX_VA_CLR0, lbl_1_data_A8, 4);
GXSETARRAY(GX_VA_POS, lbl_1_data_C0, sizeof(lbl_1_data_C0), sizeof(Vec));
GXSETARRAY(GX_VA_CLR0, lbl_1_data_A8, sizeof(lbl_1_data_A8), sizeof(GXColor));
GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, 8);
for (var_r30 = 0; var_r30 < 8; var_r30++) {
GXPosition1x8(var_r30);
@ -1579,8 +1579,8 @@ void fn_1_A3A8(ModelData *model, Mtx matrix)
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GXSetVtxDesc(GX_VA_CLR0, GX_INDEX8);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0);
GXSetArray(GX_VA_POS, lbl_1_data_120, 0xC);
GXSetArray(GX_VA_CLR0, lbl_1_data_168, 4);
GXSETARRAY(GX_VA_POS, lbl_1_data_120, sizeof(lbl_1_data_120), sizeof(Vec));
GXSETARRAY(GX_VA_CLR0, lbl_1_data_168, sizeof(lbl_1_data_168), sizeof(GXColor));
GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, 6);
GXPosition1x8(0);
GXColor1x8(0);

View file

@ -2087,13 +2087,13 @@ void fn_1_72B4(ModelData *model, Mtx mtx)
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GXSetArray(GX_VA_POS, temp_r30->unk1C, sizeof(Vec));
GXSETARRAY(GX_VA_POS, temp_r30->unk1C, temp_r30->unk0 * sizeof(Vec) * 4, sizeof(Vec));
GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0);
GXSetArray(GX_VA_CLR0, temp_r30->unk24, sizeof(GXColor));
GXSETARRAY(GX_VA_CLR0, temp_r30->unk24, temp_r30->unk0 * sizeof(GXColor), sizeof(GXColor));
GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0);
GXSetArray(GX_VA_TEX0, temp_r30->unk20, sizeof(HsfVector2f));
GXSETARRAY(GX_VA_TEX0, temp_r30->unk20, temp_r30->unk0 * sizeof(HsfVector2f) * 4, sizeof(HsfVector2f));
fn_1_79FC(mtx, sp128);
MTXReorder(sp128, spF8);
if (!omPauseChk() && temp_r30->unkC) {

View file

@ -2238,7 +2238,9 @@ void fn_1_AF28(omObjData *object)
fn_1_4ED8(&var_r31->unk_00, 0);
}
#ifdef __MWERKS__
#include "src/REL/executor.c"
#endif
void fn_1_B234(void)
{

View file

@ -342,7 +342,7 @@ void fn_1_2978(ModelData *model, Mtx mtx)
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GXSetArray(GX_VA_POS, lbl_1_bss_2868, sizeof(Vec));
GXSETARRAY(GX_VA_POS, lbl_1_bss_2868, sizeof(lbl_1_bss_2868), sizeof(Vec));
GXSetCullMode(GX_CULL_BACK);
GXCallDisplayList(lbl_1_bss_450.unk0, lbl_1_bss_450.unk4);
GXSetNumIndStages(0);

View file

@ -4252,7 +4252,9 @@ void fn_1_14760(omObjData* arg0) {
arg0->func = fn_1_14384;
}
#ifdef __MWERKS__
#include "src/REL/executor.c"
#endif
void fn_1_14A54(void) {
lbl_1_bss_0 = omInitObjMan(62, 0x2000);

View file

@ -3280,7 +3280,9 @@ void fn_1_10670(omObjData *arg0)
arg0->func = fn_1_1026C;
}
#ifdef __MWERKS__
#include "src/REL/executor.c"
#endif
void fn_1_108DC(void)
{

View file

@ -3443,7 +3443,9 @@ void fn_1_108A4(omObjData *arg0)
arg0->func = fn_1_1043C;
}
#ifdef __MWERKS__
#include "src/REL/executor.c"
#endif
void fn_1_10B30(void)
{

View file

@ -4,7 +4,9 @@
#define HUSPR_USE_OLD_DEFS
#include "game/sprite.h"
extern u8 texMtxTbl[];
#include <ext_math.h>
SHARED_SYM extern u8 texMtxTbl[];
// PROTO
void fn_1_E790(M438UnkStruct2 *);
@ -264,19 +266,19 @@ void fn_1_E790(M438UnkStruct2 *arg0)
}
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_RGBA6, 0);
GXSetArray(GX_VA_POS, var_r31->unk_44, 12);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GXSETARRAY(GX_VA_POS, var_r31->unk_44, 4 * sizeof(Vec), sizeof(Vec));
GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0);
GXSetArray(GX_VA_CLR0, var_r31->unk_48, 4);
GXSETARRAY(GX_VA_CLR0, var_r31->unk_48, 4 * sizeof(GXColor), sizeof(GXColor));
for (var_r27 = 0; var_r27 < var_r31->unk_34; var_r27++) {
GXSetVtxDesc(var_r27 + GX_VA_TEX0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, var_r27 + GX_VA_TEX0, GX_TEX_ST, GX_RGBA6, 0);
GXSetArray(var_r27 + GX_VA_TEX0, &var_r31->unk_58[var_r27].unk_04, 8);
GXSetVtxAttrFmt(GX_VTXFMT0, var_r27 + GX_VA_TEX0, GX_TEX_ST, GX_F32, 0);
GXSETARRAY(var_r27 + GX_VA_TEX0, &var_r31->unk_58[var_r27].unk_04, 4 * sizeof(Vec2f), sizeof(Vec2f));
}
GXSetVtxDesc(GX_VA_NRM, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_RGBA6, 0U);
GXSetArray(GX_VA_NRM, var_r31->unk_4C, 12);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0U);
GXSETARRAY(GX_VA_NRM, var_r31->unk_4C, sizeof(Vec), sizeof(Vec));
GXCallDisplayList(var_r31->unk_40, var_r31->unk_3C);
}
}
@ -593,15 +595,15 @@ s16 fn_1_10258(u8 arg0, u8 arg1)
var_r31->unk_30 = NULL;
var_r31->unk_02 = arg0;
var_r31->unk_04 = arg1;
var_r30 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * 0x98, 0x10000000);
var_r30 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * 0x98, MEMORY_DEFAULT_NUM);
var_r31->unk_3C = var_r30;
var_r31->unk_34 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * 2, 0x10000000);
var_r31->unk_34 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * 2, MEMORY_DEFAULT_NUM);
var_r31->unk_48 = 0;
var_r31->unk_4C = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 << 8, 0x10000000);
var_r31->unk_50 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * 0x30, 0x10000000);
var_r31->unk_54 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * 0x10, 0x10000000);
var_r31->unk_58 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * 0xC, 0x10000000);
var_r31->unk_5C = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * (arg0 * 0x30), 0x10000000);
var_r31->unk_4C = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 << 8, MEMORY_DEFAULT_NUM);
var_r31->unk_50 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * 0x30, MEMORY_DEFAULT_NUM);
var_r31->unk_54 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * 0x10, MEMORY_DEFAULT_NUM);
var_r31->unk_58 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * 0xC, MEMORY_DEFAULT_NUM);
var_r31->unk_5C = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * (arg0 * 0x30), MEMORY_DEFAULT_NUM);
DCFlushRangeNoSync(var_r31->unk_4C, arg0 << 8);
var_r31->unk_0C.x = var_r31->unk_0C.y = var_r31->unk_0C.z = 0.0f;
var_r31->unk_18.x = var_r31->unk_18.y = var_r31->unk_18.z = 0.0f;

View file

@ -1344,12 +1344,12 @@ void fn_1_5C2C(s16 arg0, HsfObject *arg1, unkStruct6 *arg2, u16 arg3)
arg2->unk38 = NULL;
arg2->unk3C = 0xFF;
arg2->unk3E = 0;
arg2->unk18 = HuMemDirectMallocNum(HEAP_DATA, arg1->data.vertex->count * 0xC, var_r29->unk_48);
arg2->unk18 = HuMemDirectMallocNum(HEAP_DATA, arg1->data.vertex->count * sizeof(Vec), var_r29->unk_48);
fn_1_6554(arg2, arg1);
fn_1_6B58(arg2, arg1);
arg2->unkC = HuMemDirectMallocNum(HEAP_DATA, arg2->unk8 * 0xC, var_r29->unk_48);
arg2->unk10 = HuMemDirectMallocNum(HEAP_DATA, arg2->unk8 * 0xC, var_r29->unk_48);
arg2->unk14 = HuMemDirectMallocNum(HEAP_DATA, arg2->unk8 * 0xC, var_r29->unk_48);
arg2->unkC = HuMemDirectMallocNum(HEAP_DATA, arg2->unk8 * sizeof(Vec), var_r29->unk_48);
arg2->unk10 = HuMemDirectMallocNum(HEAP_DATA, arg2->unk8 * sizeof(Vec), var_r29->unk_48);
arg2->unk14 = HuMemDirectMallocNum(HEAP_DATA, arg2->unk8 * sizeof(Vec), var_r29->unk_48);
if (arg2->unk28->numAttrs != 0) {
arg2->unk1C = HuMemDirectMallocNum(HEAP_DATA, arg1->data.st->count * 8, var_r29->unk_48);
var_r22 = arg1->data.st->data;
@ -1879,10 +1879,10 @@ void fn_1_806C(ModelData *arg0, Mtx arg1)
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GXSetArray(GX_VA_POS, temp_r31->unkC, 12);
GXSETARRAY(GX_VA_POS, temp_r31->unkC, temp_r31->unk8 * sizeof(Vec), sizeof(Vec));
GXSetVtxDesc(GX_VA_NRM, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0);
GXSetArray(GX_VA_NRM, temp_r31->unk14, 12);
GXSETARRAY(GX_VA_NRM, temp_r31->unk14, temp_r31->unk8 * sizeof(Vec), sizeof(Vec));
lbl_1_bss_C = temp_r31->unk3C;
if (temp_r31->unk28->unk34 == 0) {
GXSetNumTevStages(1);
@ -1897,7 +1897,7 @@ void fn_1_806C(ModelData *arg0, Mtx arg1)
else {
GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0);
GXSetArray(GX_VA_TEX0, temp_r31->unk1C, 8);
GXSETARRAY(GX_VA_TEX0, temp_r31->unk1C, sizeof(Vec2f), sizeof(Vec2f)); // TODO PC
temp_r29 = &temp_r31->unk2C[temp_r31->unk28->unk38[0]];
fn_1_7D60(temp_r29->unk80, temp_r29, 0);
lbl_1_bss_2C = 1;
@ -2269,19 +2269,19 @@ s16 fn_1_956C(AnimData *arg0, s16 arg1, f32 arg2, s16 arg3, s16 arg4)
var_r24->unk60 = -1;
var_r24->unk62 = 0;
}
var_r25 = HuMemDirectMallocNum(HEAP_DATA, arg1 * 0xC * 4, temp_r28->unk_48);
var_r25 = HuMemDirectMallocNum(HEAP_DATA, arg1 * sizeof(Vec) * 4, temp_r28->unk_48);
var_r31->unk1C = var_r25;
for (var_r30 = 0; var_r30 < (arg1 * 4); var_r30++, var_r25++) {
var_r25->x = var_r25->y = var_r25->z = 0.0f;
}
var_r27 = HuMemDirectMallocNum(HEAP_DATA, arg1 * 4, temp_r28->unk_48);
var_r27 = HuMemDirectMallocNum(HEAP_DATA, arg1 * sizeof(GXColor), temp_r28->unk_48);
var_r31->unk24 = var_r27;
for (var_r30 = 0; var_r30 < arg1; var_r30++, var_r27++) {
var_r27->r = var_r27->g = var_r27->b = var_r27->a = 0xFF;
}
var_r29 = HuMemDirectMallocNum(HEAP_DATA, arg1 * 8 * 4, temp_r28->unk_48);
var_r29 = HuMemDirectMallocNum(HEAP_DATA, arg1 * sizeof(Vec2f) * 4, temp_r28->unk_48);
var_r31->unk20 = var_r29;
for (var_r30 = 0; var_r30 < arg1; var_r30++) {
@ -2458,13 +2458,13 @@ void fn_1_9C04(ModelData *arg0, Mtx arg1)
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GXSetArray(GX_VA_POS, temp_r30->unk1C, 0xC);
GXSETARRAY(GX_VA_POS, temp_r30->unk1C, temp_r30->unk0 * sizeof(Vec) * 4, sizeof(Vec));
GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0);
GXSetArray(GX_VA_CLR0, temp_r30->unk24, 4);
GXSETARRAY(GX_VA_CLR0, temp_r30->unk24, temp_r30->unk0 * sizeof(GXColor), sizeof(GXColor));
GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0);
GXSetArray(GX_VA_TEX0, temp_r30->unk20, 8);
GXSETARRAY(GX_VA_TEX0, temp_r30->unk20, temp_r30->unk0 * sizeof(Vec2f) * 4, sizeof(Vec2f));
fn_1_9344(arg1, sp128);
MTXReorder(sp128, spF8);
if (((u8)omPauseChk() == 0) && (temp_r30->unkC)) {
@ -2510,8 +2510,8 @@ void fn_1_9C04(ModelData *arg0, Mtx arg1)
}
}
}
DCFlushRangeNoSync(temp_r30->unk1C, temp_r30->unk0 * 0xC * 4);
DCFlushRangeNoSync(temp_r30->unk20, temp_r30->unk0 * 8 * 4);
DCFlushRangeNoSync(temp_r30->unk1C, temp_r30->unk0 * sizeof(Vec) * 4);
DCFlushRangeNoSync(temp_r30->unk20, temp_r30->unk0 * sizeof(Vec2f) * 4);
GXCallDisplayList(temp_r30->unk28, temp_r30->unk4);
}

View file

@ -23,6 +23,12 @@
#include "ext_math.h"
#include "version.h"
#ifndef __MWERKS__
#include <game/hsfex.h>
#include <game/audio.h>
#endif
#undef ABS
#define ABS(x) ((0 > (x)) ? -(x) : (x))
@ -700,7 +706,9 @@ HsfanimStruct00 lbl_1_data_48C = {
{ { 255, 255, 255, 0 }, { 255, 255, 255, 0 }, { 255, 255, 255, 0 }, { 255, 255, 255, 0 } },
};
#ifdef __MWERKS__
#include "src/REL/executor.c"
#endif
void fn_1_2454(omObjData *object)
{

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