diff --git a/.gitmodules b/.gitmodules index 24a2c280..7e284f7b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,6 +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 +[submodule "extern/libco"] + path = extern/libco + url = https://github.com/higan-emu/libco.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 419f2f30..691fa122 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,7 +28,7 @@ elseif (MSVC) add_compile_options(/bigobj) endif () -add_compile_options(-fsanitize=address) +# add_compile_options(-fsanitize=address) add_subdirectory(extern/aurora EXCLUDE_FROM_ALL) add_subdirectory(extern/musyx EXCLUDE_FROM_ALL) @@ -146,17 +146,12 @@ if (NOT MSVC) endforeach () endif () - -add_library(dol SHARED ${DOLPHIN_FILES} ${GAME_FILES} ${PORT_FILES}) +add_library(dol SHARED ${DOLPHIN_FILES} ${GAME_FILES} ${PORT_FILES} extern/libco/libco.c) 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_include_directories(dol PRIVATE include build/GMPE01_00/include extern/libco) target_link_libraries(dol PRIVATE aurora::core aurora::gx aurora::si aurora::vi aurora::pad musyx) +set_source_files_properties(${DOLPHIN_FILES} ${GAME_FILES} PROPERTIES COMPILE_OPTIONS "-fsanitize=address") if (MSVC) - 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") target_compile_options(dol PRIVATE "/Zi") target_compile_options(dol PRIVATE "/Ob0") @@ -184,11 +179,12 @@ foreach (dir ${REL_DIRS}) if (REL_FILES) add_library(${dir} SHARED ${REL_FILES}) + set_source_files_properties(${REL_FILES} PROPERTIES COMPILE_OPTIONS "-fsanitize=address") 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) + target_include_directories(${dir} PRIVATE include build/GMPE01_00/include extern/libco) if (MSVC) set_target_properties(${dir} PROPERTIES LINK_FLAGS "/EXPORT:ObjectSetup") target_compile_options(${dir} PRIVATE "/Zi") diff --git a/extern/aurora b/extern/aurora index cd349a9d..23522538 160000 --- a/extern/aurora +++ b/extern/aurora @@ -1 +1 @@ -Subproject commit cd349a9d85600c01b54c430afa9a1f794695d048 +Subproject commit 23522538e13f67957d62a7119bc617700fa0c6ab diff --git a/extern/libco b/extern/libco new file mode 160000 index 00000000..e18e09d6 --- /dev/null +++ b/extern/libco @@ -0,0 +1 @@ +Subproject commit e18e09d634d612a01781168ad4d76be10a7e3bad diff --git a/extern/longjmp_win64 b/extern/longjmp_win64 deleted file mode 160000 index d04c5b7b..00000000 --- a/extern/longjmp_win64 +++ /dev/null @@ -1 +0,0 @@ -Subproject commit d04c5b7b486dbd2b80610fe2a5880e833933807f diff --git a/include/dolphin/gx/GXDispList.h b/include/dolphin/gx/GXDispList.h index 8e49bfc2..422fbd5a 100644 --- a/include/dolphin/gx/GXDispList.h +++ b/include/dolphin/gx/GXDispList.h @@ -8,9 +8,9 @@ extern "C" { #endif #ifdef AURORA -#define GXCALLDISPLAYLISTLE GXCallDisplayListLE +#define GXCallDisplayListNative GXCallDisplayListLE #else -#define GXCALLDISPLAYLISTLE GXCallDisplayList +#define GXCallDisplayListNative GXCallDisplayList #endif void GXBeginDisplayList(void* list, u32 size); diff --git a/include/game/jmp.h b/include/game/jmp.h index 9e00bd7d..f1f6a9eb 100755 --- a/include/game/jmp.h +++ b/include/game/jmp.h @@ -1,159 +1,9 @@ #ifndef _GAME_JMP_H #define _GAME_JMP_H -#ifdef TARGET_PC -#include - -#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 -#define SETJMP setjmp -#define LONGJMP longjmp -#define JMPBUF jmp_buf -#endif - - -#ifndef _JMP_BUF_DEFINED -#if defined(_M_IX86) -typedef struct __JUMP_BUFFER { - uint32_t Ebp; - uint32_t Ebx; - uint32_t Edi; - uint32_t Esi; - uint32_t Esp; - uint32_t Eip; - uint32_t Registration; - uint32_t TryLevel; - uint32_t Cookie; - uint32_t UnwindFunc; - uint32_t UnwindData[6]; -} _JUMP_BUFFER; -#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 Rbp; - uint64_t R12; - uint64_t R13; - uint64_t R14; - uint64_t R15; - uint64_t Rsp; - uint64_t Pc; -} _JUMP_BUFFER; -#elif defined(_M_ARM) -typedef struct _JUMP_BUFFER { - uint32_t Frame; - - uint32_t R4; - uint32_t R5; - uint32_t R6; - uint32_t R7; - uint32_t R8; - uint32_t R9; - uint32_t R10; - uint32_t R11; - - uint32_t Sp; - uint32_t Pc; - uint32_t Fpscr; - uint32_t long D[8]; // D8-D15 VFP/NEON regs -} _JUMP_BUFFER; -#elif defined(_M_ARM64) -typedef struct _JUMP_BUFFER { - uint64_t Frame; - uint64_t Reserved; - uint64_t X19; // x19 -- x28: callee saved registers - uint64_t X20; - uint64_t X21; - uint64_t X22; - uint64_t X23; - uint64_t X24; - uint64_t X25; - uint64_t X26; - uint64_t X27; - uint64_t X28; - uint64_t Fp; // x29 frame pointer - uint64_t Lr; // x30 link register - uint64_t Sp; // x31 stack pointer - uint32_t Fpcr; // fp control register - uint32_t Fpsr; // fp status register - - double D[8]; // D8-D15 FP regs -} _JUMP_BUFFER; -#elif defined(__riscv) -typedef struct _JUMP_BUFFER { - uint32_t ra; - uint32_t sp; - uint32_t s0; - uint32_t s1; - uint32_t s2; - uint32_t s3; - uint32_t s4; - uint32_t s5; - uint32_t s6; - uint32_t s7; - uint32_t s8; - uint32_t s9; - uint32_t s10; - uint32_t s11; - - #if __riscv_xlen == 64 - uint64_t fs0; - uint64_t fs1; - uint64_t fs2; - uint64_t fs3; - uint64_t fs4; - uint64_t fs5; - uint64_t fs6; - uint64_t fs7; - uint64_t fs8; - uint64_t fs9; - uint64_t fs10; - uint64_t fs11; - #endif -} _JUMP_BUFFER; -#endif -#endif - -#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 = (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 = (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 = (uintptr_t)func -#define SETJMP_SET_SP(jump, sp) ((_JUMP_BUFFER *)((jump)))->sp = (uintptr_t)sp -#endif - -#else #include "dolphin.h" -typedef struct jmp_buf { +typedef struct jump_buf { u32 lr; u32 cr; u32 sp; @@ -166,12 +16,4 @@ 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)) - -#define SETJMP_SET_IP(jump, func) jump.lr = (u32)func -#define SETJMP_SET_SP(jump, stack_ptr) jump.sp = (u32)stack_ptr -#endif - -#endif +#endif \ No newline at end of file diff --git a/include/game/process.h b/include/game/process.h index 7d4face1..cf4a3af6 100644 --- a/include/game/process.h +++ b/include/game/process.h @@ -3,10 +3,11 @@ #include "dolphin/types.h" -#include "game/jmp.h" - #ifdef TARGET_PC #include +#include "libco.h" +#else +#include "game/jmp.h" #endif #define PROCESS_STAT_PAUSE 0x1 @@ -26,8 +27,12 @@ typedef struct process { u16 stat; u16 prio; s32 sleep_time; +#ifdef TARGET_PC + cothread_t thread; +#else uintptr_t base_sp; - JMPBUF jump; + jmp_buf jump; +#endif void (*dtor)(void); void *user_data; } Process; diff --git a/src/REL/m404Dll/main.c b/src/REL/m404Dll/main.c index cf4ed5a0..1e4158d7 100644 --- a/src/REL/m404Dll/main.c +++ b/src/REL/m404Dll/main.c @@ -1300,7 +1300,7 @@ void fn_1_58E4(ModelData *modelData, Mtx arg1) GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); GXSetCullMode(GX_CULL_BACK); - GXCallDisplayList(var_r31->unk_44, var_r31->unk_48); + GXCallDisplayListNative(var_r31->unk_44, var_r31->unk_48); GXInitTexObj(&sp3C, var_r31->unk_4C->bmp->data, var_r31->unk_4C->bmp->sizeX, var_r31->unk_4C->bmp->sizeY, 1, GX_CLAMP, GX_CLAMP, GX_FALSE); GXLoadTexObj(&sp3C, GX_TEXMAP0); GXSetNumTevStages(1); @@ -1311,7 +1311,7 @@ void fn_1_58E4(ModelData *modelData, Mtx arg1) GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); GXSetTevColor(GX_TEVREG0, sp14); - GXCallDisplayList(var_r31->unk_44, var_r31->unk_48); + GXCallDisplayListNative(var_r31->unk_44, var_r31->unk_48); } #ifdef TARGET_PC GXDestroyTexObj(&sp3C); diff --git a/src/REL/m405Dll/main.c b/src/REL/m405Dll/main.c index 6c1c8075..3086732e 100755 --- a/src/REL/m405Dll/main.c +++ b/src/REL/m405Dll/main.c @@ -8,7 +8,6 @@ #include "game/gamework_data.h" #include "game/hsfanim.h" #include "game/hsfdraw.h" -#include #include "game/hsfman.h" #include "game/hsfmotion.h" #include "game/memory.h" @@ -20,11 +19,12 @@ #include "game/process.h" #include "game/sprite.h" #include "game/wipe.h" +#include + #include "dolphin.h" #include "ext_math.h" - #ifndef __MWERKS__ #include "game/audio.h" #endif @@ -1010,7 +1010,7 @@ void fn_1_37A4(ModelData *arg0, Mtx arg1) GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_RGBA6, 0); GXSETARRAY(GX_VA_POS, lbl_1_bss_5AC.unk14, 900 * sizeof(Vec), sizeof(Vec)); GXSetCullMode(GX_CULL_BACK); - GXCallDisplayList(lbl_1_bss_5AC.unk24, lbl_1_bss_5AC.unk28); + GXCallDisplayListNative(lbl_1_bss_5AC.unk24, lbl_1_bss_5AC.unk28); GXSetNumIndStages(0); GXSetTevDirect(GX_TEVSTAGE0); GXSetTevDirect(GX_TEVSTAGE1); diff --git a/src/REL/m406Dll/map.c b/src/REL/m406Dll/map.c index af5e97eb..020225ca 100644 --- a/src/REL/m406Dll/map.c +++ b/src/REL/m406Dll/map.c @@ -1122,13 +1122,13 @@ void fn_1_45BC(ModelData *arg0, Mtx arg1) 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_90, var_r31->unk_80 * sizeof(GXColor), sizeof(GXColor)); - GXCallDisplayList(var_r31->unk_A4, var_r31->unk_A0); + GXCallDisplayListNative(var_r31->unk_A4, var_r31->unk_A0); for (var_r30 = 1; var_r30 < 29; var_r30++) { var_r29 = var_r30 * 35; GXSETARRAY(GX_VA_POS, &var_r31->unk_84[var_r29], 35 * sizeof(Vec), sizeof(Vec)); GXSETARRAY(GX_VA_NRM, &var_r31->unk_88[var_r29], 35 * sizeof(Vec), sizeof(Vec)); GXSETARRAY(GX_VA_CLR0, &var_r31->unk_90[var_r29], 35 * sizeof(GXColor), sizeof(GXColor)); - GXCallDisplayList(var_r31->unk_A4, var_r31->unk_A0); + GXCallDisplayListNative(var_r31->unk_A4, var_r31->unk_A0); } } } @@ -3034,7 +3034,7 @@ void fn_1_BC18(ModelData *arg0, float (*arg1)[4]) DCFlushRangeNoSync(var_r31->unk_44, var_r31->unk_26 * 8 * 4); DCFlushRangeNoSync(var_r31->unk_3C, var_r31->unk_26 * 0x44); PPCSync(); - GXCallDisplayList(var_r31->unk_48, var_r31->unk_34); + GXCallDisplayListNative(var_r31->unk_48, var_r31->unk_34); if (!shadowModelDrawF) { if ((var_r31->unk_21 & 2) == 0) { var_r31->unk_28++; @@ -3213,7 +3213,7 @@ void fn_1_C86C(ModelData *arg0, Mtx arg1) DCFlushRangeNoSync(var_r31->unk_40, var_r31->unk_26 * 0xC * 4); DCFlushRangeNoSync(var_r31->unk_3C, var_r31->unk_26 * 0x44); PPCSync(); - GXCallDisplayList(var_r31->unk_48, var_r31->unk_34); + GXCallDisplayListNative(var_r31->unk_48, var_r31->unk_34); if (!shadowModelDrawF) { if ((var_r31->unk_21 & 2) == 0) { var_r31->unk_28++; diff --git a/src/REL/m408Dll/stage.c b/src/REL/m408Dll/stage.c index a925ada2..e0149180 100644 --- a/src/REL/m408Dll/stage.c +++ b/src/REL/m408Dll/stage.c @@ -1,3 +1,4 @@ +#include "ext_math.h" #include "game/audio.h" #include "game/chrman.h" #include "game/hsfanim.h" @@ -8,7 +9,7 @@ #include "game/objsub.h" #include "game/sprite.h" #include "game/wipe.h" -#include "ext_math.h" + #include "REL/m408Dll.h" @@ -1070,7 +1071,7 @@ void fn_1_10484(UnkFn10484 *arg0, HsfFace *arg1, HsfDrawData *arg2, GXColor *arg } fn_1_10B60(arg0, temp_r31); temp_r20 = (void *)(arg2->dlOfs + ((u32)lbl_1_bss_120[0])); - GXCallDisplayList(temp_r20, arg2->dlSize); + GXCallDisplayListNative(temp_r20, arg2->dlSize); } void fn_1_10830(ModelData *arg0, HsfBitmap *arg1, HsfAttribute *arg2, s16 arg3) diff --git a/src/REL/m409Dll/cursor.c b/src/REL/m409Dll/cursor.c index d8db13eb..64a94409 100644 --- a/src/REL/m409Dll/cursor.c +++ b/src/REL/m409Dll/cursor.c @@ -225,7 +225,7 @@ void fn_1_C164(unkStruct8 *arg0) 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, sizeof(Vec), sizeof(Vec)); - GXCallDisplayList(var_r31->unk3C, var_r31->unk38); + GXCallDisplayListNative(var_r31->unk3C, var_r31->unk38); } } } diff --git a/src/REL/m409Dll/main.c b/src/REL/m409Dll/main.c index f53e7612..5a32824a 100644 --- a/src/REL/m409Dll/main.c +++ b/src/REL/m409Dll/main.c @@ -1412,7 +1412,7 @@ void fn_1_602C(ModelData *arg0, f32 (*arg1)[4]) DCFlushRangeNoSync(temp_r30->unk1C, temp_r30->unk0 * 0xC * 4); DCFlushRangeNoSync(temp_r30->unk20, temp_r30->unk0 * 8 * 4); PPCSync(); - GXCallDisplayList(temp_r30->unk28, temp_r30->unk4); + GXCallDisplayListNative(temp_r30->unk28, temp_r30->unk4); } void fn_1_6608(HsfVector2f *arg0, s16 arg1, s16 arg2, f32 arg3, f32 arg4) diff --git a/src/REL/m410Dll/player.c b/src/REL/m410Dll/player.c index 470f98e5..1503788a 100644 --- a/src/REL/m410Dll/player.c +++ b/src/REL/m410Dll/player.c @@ -1,3 +1,4 @@ +#include "ext_math.h" #include "game/audio.h" #include "game/chrman.h" #include "game/gamework_data.h" @@ -8,7 +9,7 @@ #include "game/object.h" #include "game/pad.h" #include "game/sprite.h" -#include "ext_math.h" + #include "REL/m410Dll.h" @@ -1125,7 +1126,7 @@ void fn_1_B140(ModelData *arg0, Mtx arg1) GXLoadTexMtxImm(spF4, 30, GX_MTX3x4); MTXRotRad(sp124, 90, 0.017453292f * -var_r31->unk_08); GXLoadTexMtxImm(sp124, 33, GX_MTX2x4); - GXCallDisplayList(var_r30->unk_120.unk_E5C, var_r30->unk_120.unk_E58); + GXCallDisplayListNative(var_r30->unk_120.unk_E5C, var_r30->unk_120.unk_E58); } } GXSetNumIndStages(0); diff --git a/src/REL/m415Dll/map.c b/src/REL/m415Dll/map.c index cf1ef352..96ae4ec7 100644 --- a/src/REL/m415Dll/map.c +++ b/src/REL/m415Dll/map.c @@ -255,7 +255,7 @@ void fn_1_88B8(unkSubStruct2 *arg0) 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, sizeof(Vec), sizeof(Vec)); - GXCallDisplayList(var_r31->unk3C, var_r31->unk38); + GXCallDisplayListNative(var_r31->unk3C, var_r31->unk38); } } } diff --git a/src/REL/m417Dll/water.c b/src/REL/m417Dll/water.c index c5c33552..5bb65bee 100644 --- a/src/REL/m417Dll/water.c +++ b/src/REL/m417Dll/water.c @@ -859,7 +859,7 @@ void fn_1_604C(ModelData *arg0, Mtx arg1) 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]); + GXCallDisplayListNative(lbl_1_bss_178.unk_6E0[0], lbl_1_bss_178.unk_6E8[0]); GXSetNumIndStages(0); GXSetTevDirect(GX_TEVSTAGE0); GXSetTevDirect(GX_TEVSTAGE1); diff --git a/src/REL/m423Dll/main.c b/src/REL/m423Dll/main.c index 35628e65..1754f6e3 100755 --- a/src/REL/m423Dll/main.c +++ b/src/REL/m423Dll/main.c @@ -17,7 +17,6 @@ #include "ext_math.h" - #ifndef __MWERKS__ #include "game/frand.h" #endif @@ -1262,7 +1261,7 @@ void fn_1_29BC(ModelData *arg0, Mtx arg1) PPCSync(); 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); + GXCallDisplayListNative(temp_r31->unk38, temp_r31->unk34); } } } @@ -4498,7 +4497,7 @@ void fn_1_EF44(ModelData *arg0, Mtx arg1) GXLoadTexMtxImm(spF4, GX_TEXMTX0, GX_MTX3x4); MTXRotRad(sp124, 'Z', MTXDegToRad(-var_r31->unk0C)); GXLoadTexMtxImm(sp124, GX_TEXMTX1, GX_MTX2x4); - GXCallDisplayList(temp_r30->unk220, temp_r30->unk21C); + GXCallDisplayListNative(temp_r30->unk220, temp_r30->unk21C); } GXSetNumIndStages(0); GXSetTevDirect(GX_TEVSTAGE0); @@ -5238,7 +5237,7 @@ void fn_1_11900(ModelData *arg0, Mtx arg1) 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, temp_r31->unk26 * sizeof(Vec2f) * 4, sizeof(Vec2f)); - GXCallDisplayList(temp_r31->unk48, temp_r31->unk34); + GXCallDisplayListNative(temp_r31->unk48, temp_r31->unk34); if (shadowModelDrawF == 0) { if (!(temp_r31->unk21 & 2)) { temp_r31->unk28++; diff --git a/src/REL/m425Dll/main.c b/src/REL/m425Dll/main.c index 234b169b..f2221b7b 100644 --- a/src/REL/m425Dll/main.c +++ b/src/REL/m425Dll/main.c @@ -678,49 +678,49 @@ void fn_1_1B40(omObjData *object) float var_f19; float var_f18; - (void) object; - (void) object; - (void) var_r31; - (void) var_r31; - (void) var_r31; - (void) var_r31; - (void) var_r31; - (void) var_r31; - (void) var_r30; - (void) var_r30; - (void) var_r30; - (void) var_r30; - (void) var_r30; - (void) var_r30; - (void) var_r29; - (void) var_r29; - (void) var_r29; - (void) var_r29; - (void) var_r29; - (void) var_r29; - (void) var_f31; - (void) var_f31; - (void) var_f31; - (void) var_f31; - (void) var_f31; - (void) var_f31; - (void) var_f31; - (void) var_f31; - (void) var_f31; - (void) var_f31; - (void) var_f31; - (void) var_f31; - (void) var_f31; - (void) var_f31; - (void) var_f20; - (void) var_f20; - (void) var_f20; - (void) var_f19; - (void) var_f19; - (void) var_f19; - (void) var_f18; - (void) var_f18; - (void) var_f18; + (void)object; + (void)object; + (void)var_r31; + (void)var_r31; + (void)var_r31; + (void)var_r31; + (void)var_r31; + (void)var_r31; + (void)var_r30; + (void)var_r30; + (void)var_r30; + (void)var_r30; + (void)var_r30; + (void)var_r30; + (void)var_r29; + (void)var_r29; + (void)var_r29; + (void)var_r29; + (void)var_r29; + (void)var_r29; + (void)var_f31; + (void)var_f31; + (void)var_f31; + (void)var_f31; + (void)var_f31; + (void)var_f31; + (void)var_f31; + (void)var_f31; + (void)var_f31; + (void)var_f31; + (void)var_f31; + (void)var_f31; + (void)var_f31; + (void)var_f31; + (void)var_f20; + (void)var_f20; + (void)var_f20; + (void)var_f19; + (void)var_f19; + (void)var_f19; + (void)var_f18; + (void)var_f18; + (void)var_f18; } var_r31->unk_38 = var_r31->unk_04 * sind(var_r31->unk_18); var_r31->unk_40 = var_r31->unk_04 * cosd(var_r31->unk_18); @@ -1636,7 +1636,7 @@ void fn_1_5C20(ModelData *var_r27, Mtx sp8) 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_1C, var_r31->unk_2A * (4 * sizeof(Vec)), sizeof(Vec)); - GXCallDisplayList(var_r31->unk_10, var_r31->unk_0C); + GXCallDisplayListNative(var_r31->unk_10, var_r31->unk_0C); } u32 lbl_1_data_114 = 0x41C64E6D; diff --git a/src/REL/m425Dll/thwomp.c b/src/REL/m425Dll/thwomp.c index 8d58f3b1..9711ac9d 100644 --- a/src/REL/m425Dll/thwomp.c +++ b/src/REL/m425Dll/thwomp.c @@ -2139,7 +2139,7 @@ void fn_1_101C4(ModelData *var_r29, Mtx var_r28) 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]); + GXCallDisplayListNative(var_r31->unk_2A8[var_r30], var_r31->unk_244[var_r30]); } } GXSetNumTevStages(2); @@ -2184,7 +2184,7 @@ void fn_1_101C4(ModelData *var_r29, Mtx var_r28) GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); 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]); + GXCallDisplayListNative(var_r31->unk_2A8[1], var_r31->unk_244[1]); } } @@ -2743,7 +2743,7 @@ void fn_1_11EE0(ModelData *var_r24, Mtx var_r21) 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); + GXCallDisplayListNative(var_r31->unk_48, var_r31->unk_34); if (shadowModelDrawF == 0) { if ((var_r31->unk_21 & 2) == 0) { var_r31->unk_28++; diff --git a/src/REL/m426Dll/main.c b/src/REL/m426Dll/main.c index 4f331de3..511afc04 100644 --- a/src/REL/m426Dll/main.c +++ b/src/REL/m426Dll/main.c @@ -3103,7 +3103,7 @@ void fn_1_80DC(ModelData *arg0, Mtx arg1) 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); + GXCallDisplayListNative(var_r31->unk_48, var_r31->unk_34); if (!shadowModelDrawF) { if ((var_r31->unk_21 & 2) == 0) { var_r31->unk_28++; diff --git a/src/REL/m427Dll/map.c b/src/REL/m427Dll/map.c index 5506e4d0..c7b5a3f3 100644 --- a/src/REL/m427Dll/map.c +++ b/src/REL/m427Dll/map.c @@ -1063,7 +1063,7 @@ void fn_1_618C(ModelData *arg0, Mtx arg1) GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); GXSetZCompLoc(0); GXSetBlendMode(GX_BM_NONE, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); - GXCallDisplayList(var_r31->unk20, var_r31->unk24); + GXCallDisplayListNative(var_r31->unk20, var_r31->unk24); GXSetNumIndStages(0); GXSetTevDirect(GX_TEVSTAGE0); GXSetTevDirect(GX_TEVSTAGE1); @@ -2010,7 +2010,7 @@ void fn_1_9B88(ModelData *model, Mtx matrix) GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); GXSetZCompLoc(0); GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ONE, GX_LO_NOOP); - GXCallDisplayList(var_r31->unk80, var_r31->unk84); + GXCallDisplayListNative(var_r31->unk80, var_r31->unk84); GXSetNumIndStages(0); GXSetTevDirect(GX_TEVSTAGE0); GXSetTevDirect(GX_TEVSTAGE1); @@ -2431,7 +2431,7 @@ void fn_1_B3CC(ModelData *model, Mtx matrix) GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); GXSetZCompLoc(0); GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ONE, GX_LO_NOOP); - GXCallDisplayList(var_r31->unk_40, var_r31->unk_44); + GXCallDisplayListNative(var_r31->unk_40, var_r31->unk_44); GXSetNumIndStages(0); GXSetTevDirect(GX_TEVSTAGE0); GXSetTevDirect(GX_TEVSTAGE1); @@ -3068,7 +3068,7 @@ void fn_1_DCD4(ModelData *model, Mtx matrix) DCFlushRangeNoSync(var_r30->unk_1C, var_r30->unk_00 * sizeof(Vec) * 4); DCFlushRangeNoSync(var_r30->unk_20, var_r30->unk_00 * sizeof(Vec2f) * 4); PPCSync(); - GXCallDisplayList(var_r30->unk_28, var_r30->unk_04); + GXCallDisplayListNative(var_r30->unk_28, var_r30->unk_04); } void fn_1_E2B0(Vec2f *arg0, s16 arg1, s16 arg2, float arg8, float arg9) diff --git a/src/REL/m428Dll/player.c b/src/REL/m428Dll/player.c index cff1d27b..39e17187 100644 --- a/src/REL/m428Dll/player.c +++ b/src/REL/m428Dll/player.c @@ -3183,7 +3183,7 @@ void fn_1_134C0(ModelData *var_r23, Mtx var_r22) 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, var_r31->unk_26 * sizeof(Vec2f) * 4, sizeof(Vec2f)); - GXCallDisplayList(var_r31->unk_48, var_r31->unk_34); + GXCallDisplayListNative(var_r31->unk_48, var_r31->unk_34); if (shadowModelDrawF == 0) { if ((var_r31->unk_21 & 2) == 0) { var_r31->unk_28++; diff --git a/src/REL/m430Dll/player.c b/src/REL/m430Dll/player.c index 7010b15b..ce6f7efb 100644 --- a/src/REL/m430Dll/player.c +++ b/src/REL/m430Dll/player.c @@ -1625,7 +1625,7 @@ void fn_1_10948(ModelData *var_r29, Mtx var_r30) 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_54, 16 * sizeof(Vec2f), sizeof(Vec2f)); - GXCallDisplayList(var_r31->unk_60, var_r31->unk_5C); + GXCallDisplayListNative(var_r31->unk_60, var_r31->unk_5C); } void fn_1_10B88(void) diff --git a/src/REL/m430Dll/water.c b/src/REL/m430Dll/water.c index e3924951..0bb03d09 100644 --- a/src/REL/m430Dll/water.c +++ b/src/REL/m430Dll/water.c @@ -1270,7 +1270,7 @@ void fn_1_8CE0(ModelData *model, Mtx matrix) 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); + GXCallDisplayListNative(var_r31->unk_60, var_r31->unk_64); GXSetCullMode(GX_CULL_BACK); GXSetNumIndStages(0); GXSetTevDirect(GX_TEVSTAGE0); diff --git a/src/REL/m431Dll/main.c b/src/REL/m431Dll/main.c index b48e8efa..83334e46 100644 --- a/src/REL/m431Dll/main.c +++ b/src/REL/m431Dll/main.c @@ -2143,7 +2143,7 @@ void fn_1_72B4(ModelData *model, Mtx mtx) DCFlushRangeNoSync(temp_r30->unk1C, (temp_r30->unk0 * sizeof(Vec)) * 4); DCFlushRangeNoSync(temp_r30->unk20, (temp_r30->unk0 * sizeof(HsfVector2f)) * 4); PPCSync(); - GXCallDisplayList(temp_r30->unk28, temp_r30->unk4); + GXCallDisplayListNative(temp_r30->unk28, temp_r30->unk4); } void fn_1_7824(HsfVector2f *arg0, s16 arg1, s16 arg2, float arg3, float arg4) diff --git a/src/REL/m434Dll/map.c b/src/REL/m434Dll/map.c index 49c27901..8e697fde 100644 --- a/src/REL/m434Dll/map.c +++ b/src/REL/m434Dll/map.c @@ -339,7 +339,7 @@ void fn_1_2978(ModelData *model, Mtx mtx) GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); 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); + GXCallDisplayListNative(lbl_1_bss_450.unk0, lbl_1_bss_450.unk4); GXSetNumIndStages(0); GXSetTevDirect(GX_TEVSTAGE0); GXSetTevDirect(GX_TEVSTAGE1); @@ -539,7 +539,7 @@ void fn_1_3CC8(ModelData *model, Mtx mtx) MTXScale(sp14, 0.5f * temp_f31, 0.5f * temp_f31, 1.0f); mtxTransCat(sp14, (200.0f * (600.0f + temp_r31->unk0.x)) / 1200.0f, (200.0f * (600.0f + temp_r31->unk0.z)) / 1200.0f, 0); GXLoadPosMtxImm(sp14, GX_PNMTX0); - GXCallDisplayList(lbl_1_bss_440.unk0, lbl_1_bss_440.unk4); + GXCallDisplayListNative(lbl_1_bss_440.unk0, lbl_1_bss_440.unk4); } fn_1_32DC(&lbl_1_bss_3F0[0], GX_TRUE); } diff --git a/src/REL/m438Dll/fire.c b/src/REL/m438Dll/fire.c index d105fa64..712704c0 100644 --- a/src/REL/m438Dll/fire.c +++ b/src/REL/m438Dll/fire.c @@ -280,7 +280,7 @@ void fn_1_E790(M438UnkStruct2 *arg0) GXSetVtxDesc(GX_VA_NRM, GX_INDEX16); 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); + GXCallDisplayListNative(var_r31->unk_40, var_r31->unk_3C); } } } diff --git a/src/REL/m440Dll/main.c b/src/REL/m440Dll/main.c index 7dce13e0..ff62f742 100644 --- a/src/REL/m440Dll/main.c +++ b/src/REL/m440Dll/main.c @@ -1908,7 +1908,7 @@ void fn_1_806C(ModelData *arg0, Mtx arg1) GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); GXSetZCompLoc(GX_FALSE); GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); - GXCallDisplayList(temp_r31->unk30, temp_r31->unk34); + GXCallDisplayListNative(temp_r31->unk30, temp_r31->unk34); } void fn_1_8470(unkStruct12 *arg0, unkStruct13 *arg1) @@ -2512,7 +2512,7 @@ void fn_1_9C04(ModelData *arg0, Mtx arg1) } 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); + GXCallDisplayListNative(temp_r30->unk28, temp_r30->unk4); } void fn_1_A1B8(HsfVector2f *arg0, s16 arg1, s16 arg2, f32 arg8, f32 arg9) diff --git a/src/REL/m450Dll/main.c b/src/REL/m450Dll/main.c index 8f537152..d1a76105 100644 --- a/src/REL/m450Dll/main.c +++ b/src/REL/m450Dll/main.c @@ -1653,7 +1653,7 @@ void fn_1_56C4(ModelData *arg0, Mtx arg1) } DCFlushRangeNoSync(var_r31->unk_14, var_r31->unk_64 * sizeof(Vec) * 4); DCFlushRangeNoSync(var_r31->unk_18, var_r31->unk_64 * sizeof(Vec2f) * 4); - GXCallDisplayList(var_r31->unk_24, var_r31->unk_58); + GXCallDisplayListNative(var_r31->unk_24, var_r31->unk_58); } } diff --git a/src/REL/m455Dll/stage.c b/src/REL/m455Dll/stage.c index 84c86b8f..cf1fbe4b 100644 --- a/src/REL/m455Dll/stage.c +++ b/src/REL/m455Dll/stage.c @@ -1,8 +1,9 @@ +#include "game/hsfanim.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" #include "game/object.h" #include "game/objsub.h" -#include "game/hsfman.h" -#include "game/hsfdraw.h" -#include "game/hsfanim.h" + #include "game/hsfmotion.h" @@ -148,7 +149,7 @@ omObjData *fn_1_347C(void) s32 id; ModelData *modelP; s32 i; - + work->unkA40 = 0; work->unkA44 = 0; work->unkA48 = 0; @@ -156,7 +157,7 @@ omObjData *fn_1_347C(void) work->unkA50 = 0; work->unkA54 = 0; work->unkA58 = 0; - + object->model[0] = id = Hu3DHookFuncCreate(fn_1_4E64); Hu3DModelCameraSet(id, HU3D_CAM0); Hu3DModelLayerSet(id, 5); @@ -190,13 +191,13 @@ omObjData *fn_1_347C(void) GXPosition2f32(-0.5f, 0.5f); GXTexCoord2f32(0, 1); work2->unkA18 = GXEndDisplayList(); - for(i=0; i<26; i++) { + for (i = 0; i < 26; i++) { work2->unk874[i][0] = 0; work2->unk874[i][1] = 0; work2->unk944[i][0] = 0; work2->unk944[i][1] = 0; } - + object->model[3] = id = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M455, 5)); Hu3DModelPosSet(id, 0, 0, -5000); Hu3DModelScaleSet(id, 2, 2, 2); @@ -206,36 +207,36 @@ omObjData *fn_1_347C(void) Hu3DTexScrollPosMoveSet(id, -0.00009166667f, 0, 0); id = Hu3DTexScrollCreate(object->model[3], "pa_sk3"); Hu3DTexScrollPosMoveSet(id, -0.00020833335f, 0, 0); - + object->model[4] = id = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M455, 6)); Hu3DModelPosSet(id, 0, 0, -3000); Hu3DModelScaleSet(id, 1.2f, 1.2f, 1.2f); Hu3DModelCameraSet(id, HU3D_CAM0); Hu3DModelLayerSet(id, 1); - + object->model[8] = id = Hu3DHookFuncCreate(fn_1_49AC); Hu3DModelCameraSet(id, HU3D_CAM0); Hu3DModelLayerSet(id, 2); modelP = &Hu3DData[id]; modelP->unk_120 = work; - + object->model[10] = id = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M455, 0)); Hu3DModelPosSet(id, 0, 0, 0); Hu3DModelCameraSet(id, HU3D_CAM0); Hu3DModelLayerSet(id, 3); Hu3DModelShadowMapSet(object->model[10]); - for(i=0; i<4; i++) { - - object->model[i+11] = id = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M455, 1)); - Hu3DModelCameraSet(object->model[i+11], HU3D_CAM0); - Hu3DModelLayerSet(object->model[i+11], 3); - Hu3DModelPosSet(object->model[i+11], lbl_1_data_1D8[i].x, lbl_1_data_1D8[i].y, lbl_1_data_1D8[i].z); - Hu3DModelAttrSet(object->model[i+11], HU3D_MOTATTR_SHAPE_LOOP); - Hu3DMotionShapeTimeSet(object->model[i+11], (0.25*i)*Hu3DMotionShapeMaxTimeGet(object->model[i+11])); + for (i = 0; i < 4; i++) { + + object->model[i + 11] = id = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M455, 1)); + Hu3DModelCameraSet(object->model[i + 11], HU3D_CAM0); + Hu3DModelLayerSet(object->model[i + 11], 3); + Hu3DModelPosSet(object->model[i + 11], lbl_1_data_1D8[i].x, lbl_1_data_1D8[i].y, lbl_1_data_1D8[i].z); + Hu3DModelAttrSet(object->model[i + 11], HU3D_MOTATTR_SHAPE_LOOP); + Hu3DMotionShapeTimeSet(object->model[i + 11], (0.25 * i) * Hu3DMotionShapeMaxTimeGet(object->model[i + 11])); } modelP = &Hu3DData[object->model[0]]; workUnk4 = &work2->unk4[0]; - for(i=0; i<4; i++, workUnk4++) { + for (i = 0; i < 4; i++, workUnk4++) { workUnk4->unkC = lbl_1_data_20C[i].unk0; workUnk4->unk10 = lbl_1_data_20C[i].unk4; workUnk4->unk14 = lbl_1_data_20C[i].unk8; @@ -246,7 +247,7 @@ omObjData *fn_1_347C(void) memset(workUnk4->unk0, 0, workUnk4->unk4); DCFlushRange(workUnk4->unk0, workUnk4->unk4); } - for(i=0; i<64; i++, workUnk74++) { + for (i = 0; i < 64; i++, workUnk74++) { workUnk74->unk0.x = workUnk74->unk0.y = workUnk74->unk0.z = 0; workUnk74->unkC.x = 0; workUnk74->unkC.y = 0; @@ -265,21 +266,21 @@ void fn_1_3DDC(omObjData *object) Work347C *work = object->data; Work347C *work2 = work; s32 i; - if((work->unkA50 = work->unkA50+(0.007874016f*((s32)frand() & 0x7F)*3.0f)) > 360) { + if ((work->unkA50 = work->unkA50 + (0.007874016f * ((s32)frand() & 0x7F) * 3.0f)) > 360) { work->unkA50 -= 360; } - work->unkA44 = (25+work->unkA40)+(5.0*sind(work->unkA50)); + work->unkA44 = (25 + work->unkA40) + (5.0 * sind(work->unkA50)); Hu3DModelPosSet(object->model[10], 0, work->unkA44, 0); - for(i=0; i<4; i++) { - Hu3DModelPosSet(object->model[i+11], lbl_1_data_1D8[i].x, work->unkA44+lbl_1_data_1D8[i].y, lbl_1_data_1D8[i].z); + for (i = 0; i < 4; i++) { + Hu3DModelPosSet(object->model[i + 11], lbl_1_data_1D8[i].x, work->unkA44 + lbl_1_data_1D8[i].y, lbl_1_data_1D8[i].z); } work->unkA54 += 0.001f; work->unkA58 += 0.001f; work->unkA48++; work->unkA4C++; - if(work->unkA4C >= 60.0f && work->unkA4C <= 81.0f) { - float time = 1-((work->unkA4C-60.0f)/21.0f); - if(time < 0.0f) { + if (work->unkA4C >= 60.0f && work->unkA4C <= 81.0f) { + float time = 1 - ((work->unkA4C - 60.0f) / 21.0f); + if (time < 0.0f) { time = 0.0f; } fn_1_9CFC(time); @@ -303,147 +304,31 @@ void fn_1_4104(omObjData *object) GXColor lbl_1_data_26A = { 255, 255, 255, 32 }; GXColor lbl_1_data_26E = { 255, 255, 255, 10 }; GXColor lbl_1_data_272 = { 0, 126, 126, 255 }; -Vec lbl_1_data_278[4] = { - -1000, 50, 1000, - -1000, 50, -1000, - 1000, 50, -1000, - 1000, 50, 1000 -}; +Vec lbl_1_data_278[4] = { -1000, 50, 1000, -1000, 50, -1000, 1000, 50, -1000, 1000, 50, 1000 }; -Vec lbl_1_data_2A8[26] = { - -1500, 0, 1000, - -1400, 0, 1000, - 0, 0, 1000, - 1400, 0, 1000, - 1500, 0, 1000, - -1500, 0, -500, - -1400, 0, -500, - 0, 0, -500, - 1400, 0, -500, - 1500, 0, -500, - -1500, 0, -2000, - -1400, 0, -2000, - 0, 0, -2000, - 1400, 0, -2000, - 1500, 0, -2000, - -1500, 0, -5000, - -1400, 0, -5000, - 0, 0, -5000, - 1400, 0, -5000, - 1500, 0, -5000, - -2000, 0, -500, - -2500, 0, -2000, - -3000, 0, -5000, - 2000, 0, -500, - 2500, 0, -2000, - 3000, 0, -5000 -}; +Vec lbl_1_data_2A8[26] = { -1500, 0, 1000, -1400, 0, 1000, 0, 0, 1000, 1400, 0, 1000, 1500, 0, 1000, -1500, 0, -500, -1400, 0, -500, 0, 0, -500, 1400, + 0, -500, 1500, 0, -500, -1500, 0, -2000, -1400, 0, -2000, 0, 0, -2000, 1400, 0, -2000, 1500, 0, -2000, -1500, 0, -5000, -1400, 0, -5000, 0, 0, + -5000, 1400, 0, -5000, 1500, 0, -5000, -2000, 0, -500, -2500, 0, -2000, -3000, 0, -5000, 2000, 0, -500, 2500, 0, -2000, 3000, 0, -5000 }; -GXColor lbl_1_data_3E0[26] = { - { 96, 128, 255, 255 }, - { 128, 160, 255, 32 }, - { 128, 160, 255, 32 }, - { 128, 160, 255, 32 }, - { 96, 128, 255, 255 }, - { 24, 48, 255, 255 }, - { 96, 128, 255, 32 }, - { 128, 160, 255, 32 }, - { 96, 128, 255, 32 }, - { 24, 48, 255, 255 }, - { 24, 48, 255, 255 }, - { 24, 48, 255, 255 }, - { 96, 128, 255, 255 }, - { 24, 48, 255, 255 }, - { 24, 48, 255, 255 }, - { 8, 24, 143, 255 }, - { 8, 24, 143, 255 }, - { 8, 24, 143, 255 }, - { 8, 24, 143, 255 }, - { 8, 24, 143, 255 }, - { 24, 48, 255, 255 }, - { 24, 48, 255, 255 }, - { 24, 48, 255, 255 }, - { 24, 48, 255, 255 }, - { 24, 48, 255, 255 }, - { 24, 48, 255, 255 } -}; +GXColor lbl_1_data_3E0[26] = { { 96, 128, 255, 255 }, { 128, 160, 255, 32 }, { 128, 160, 255, 32 }, { 128, 160, 255, 32 }, { 96, 128, 255, 255 }, + { 24, 48, 255, 255 }, { 96, 128, 255, 32 }, { 128, 160, 255, 32 }, { 96, 128, 255, 32 }, { 24, 48, 255, 255 }, { 24, 48, 255, 255 }, + { 24, 48, 255, 255 }, { 96, 128, 255, 255 }, { 24, 48, 255, 255 }, { 24, 48, 255, 255 }, { 8, 24, 143, 255 }, { 8, 24, 143, 255 }, + { 8, 24, 143, 255 }, { 8, 24, 143, 255 }, { 8, 24, 143, 255 }, { 24, 48, 255, 255 }, { 24, 48, 255, 255 }, { 24, 48, 255, 255 }, + { 24, 48, 255, 255 }, { 24, 48, 255, 255 }, { 24, 48, 255, 255 } }; -float lbl_1_data_448[26][2] = { - 0, 1, - 0.033333335, 1, - 0.5, 1, - 0.96666664, 1, - 1, 1, - 0, 0.5, - 0.033333335, 0.5, - 0.5, 0.5, - 0.96666664, 0.5, - 1, 0.5, - 0, 0, - 0.033333335, 0, - 0.5, 0, - 0.96666664, 0, - 1, 0, - 0, 0, - 0.033333335, 0, - 0.5, 0, - 0.96666664, 0, - 1, 0, - -0.15, 0.5, - -0.33, 0, - -0.49, 0, - 1.15, 0.5, - 1.33, 0, - 1.49, 0 -}; +float lbl_1_data_448[26][2] + = { 0, 1, 0.033333335, 1, 0.5, 1, 0.96666664, 1, 1, 1, 0, 0.5, 0.033333335, 0.5, 0.5, 0.5, 0.96666664, 0.5, 1, 0.5, 0, 0, 0.033333335, 0, 0.5, 0, + 0.96666664, 0, 1, 0, 0, 0, 0.033333335, 0, 0.5, 0, 0.96666664, 0, 1, 0, -0.15, 0.5, -0.33, 0, -0.49, 0, 1.15, 0.5, 1.33, 0, 1.49, 0 }; -float lbl_1_data_518[26][2] = { - 0, 30, - 0.5, 30, - 7.5, 30, - 14.5, 30, - 15, 30, - 0, 15, - 0.5, 15, - 7.5, 15, - 14.5, 15, - 15, 15, - 0, 7.5, - 0.5, 7.5, - 7.5, 7.5, - 14.5, 7.5, - 15, 7.5, - 0, 0, - 0.5, 0, - 7.5, 0, - 14.5, 0, - 15, 0, - -2.25, 15, - -4.9500003, 7.5, - -7.3500004, 0, - 17.25, 15, - 19.95, 7.5, - 22.35, 0 -}; +float lbl_1_data_518[26][2] = { 0, 30, 0.5, 30, 7.5, 30, 14.5, 30, 15, 30, 0, 15, 0.5, 15, 7.5, 15, 14.5, 15, 15, 15, 0, 7.5, 0.5, 7.5, 7.5, 7.5, + 14.5, 7.5, 15, 7.5, 0, 0, 0.5, 0, 7.5, 0, 14.5, 0, 15, 0, -2.25, 15, -4.9500003, 7.5, -7.3500004, 0, 17.25, 15, 19.95, 7.5, 22.35, 0 }; -float lbl_1_data_5E8[2][3] = { - 0, 0, 0.5, - 0, 0.5, 0 -}; +float lbl_1_data_5E8[2][3] = { 0, 0, 0.5, 0, 0.5, 0 }; GXColor lbl_1_data_600 = { 80, 80, 80, 80 }; -Vec lbl_1_data_604[9] = { - -1500, 0, -5000, - 0, 0, -5000, - 1500, 0, -5000, - -1500, 0, -3000, - 0, 0, -3000, - 1500, 0, -3000, - -1500, 0, 1000, - 0, 0, 1000, - 1500, 0, 1000 -}; +Vec lbl_1_data_604[9] + = { -1500, 0, -5000, 0, 0, -5000, 1500, 0, -5000, -1500, 0, -3000, 0, 0, -3000, 1500, 0, -3000, -1500, 0, 1000, 0, 0, 1000, 1500, 0, 1000 }; GXColor lbl_1_data_670[9] = { { 255, 255, 255, 0 }, @@ -503,11 +388,11 @@ void fn_1_4180(ModelData *model, Mtx matrix) GXPosition2u16(0, 0); GXTexCoord2f32(work->unkA54, work->unkA58); GXPosition2u16(400, 0); - GXTexCoord2f32(work->unkA54+7, work->unkA58); + GXTexCoord2f32(work->unkA54 + 7, work->unkA58); GXPosition2u16(400, 400); - GXTexCoord2f32(work->unkA54+7, work->unkA58+7); + GXTexCoord2f32(work->unkA54 + 7, work->unkA58 + 7); GXPosition2u16(0, 400); - GXTexCoord2f32(work->unkA54, work->unkA58+7); + GXTexCoord2f32(work->unkA54, work->unkA58 + 7); GXEnd(); GXSetNumTexGens(1); GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); @@ -526,22 +411,22 @@ void fn_1_4180(ModelData *model, Mtx matrix) GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); workUnk74 = &work2->unk74[0]; - for(i=0; i<64; i++, workUnk74++) { + for (i = 0; i < 64; i++, workUnk74++) { float scale; float accel; - if(workUnk74->unk1E == 0) { + if (workUnk74->unk1E == 0) { continue; } - scale = 128*(workUnk74->unkC.x*(0.2f+cosd(workUnk74->unk1E*workUnk74->unk18*90.0f))); - accel = workUnk74->unk1E*workUnk74->unk18; - lbl_1_data_26A.a = workUnk74->unkC.z*sind((accel*accel)*90.0f)*255.0; + scale = 128 * (workUnk74->unkC.x * (0.2f + cosd(workUnk74->unk1E * workUnk74->unk18 * 90.0f))); + accel = workUnk74->unk1E * workUnk74->unk18; + lbl_1_data_26A.a = workUnk74->unkC.z * sind((accel * accel) * 90.0f) * 255.0; GXSetChanMatColor(GX_COLOR0A0, lbl_1_data_26A); - MTXScale(modelview, 0.5f*scale, 0.5f*scale, 1.0f); + MTXScale(modelview, 0.5f * scale, 0.5f * scale, 1.0f); mtxRotCat(modelview, 0, 0, workUnk74->unkC.y); - mtxTransCat(modelview, 400*(workUnk74->unk0.x+1500)/3000, 400*(workUnk74->unk0.z - -2000)/3000, 0); + mtxTransCat(modelview, 400 * (workUnk74->unk0.x + 1500) / 3000, 400 * (workUnk74->unk0.z - -2000) / 3000, 0); GXLoadPosMtxImm(modelview, GX_PNMTX0); - GXCallDisplayList(work2->unkA14, work2->unkA18); - if(!omPauseChk()) { + GXCallDisplayListNative(work2->unkA14, work2->unkA18); + if (!omPauseChk()) { workUnk74->unk1E--; } } @@ -594,11 +479,11 @@ void fn_1_4B1C(ModelData *model, Mtx matrix) Mtx projCamera; s16 lightMask; s16 i; - + fn_1_6088(workUnk4, 0); GXLoadPosMtxImm(matrix, GX_PNMTX0); fov = cameraP->fov; - if(fov <= 0.0f) { + if (fov <= 0.0f) { fov = 45; } MTXLightPerspective(proj, fov, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f); @@ -626,7 +511,7 @@ void fn_1_4B1C(ModelData *model, Mtx matrix) GXSetVtxDesc(GX_VA_POS, GX_INDEX16); GXSETARRAY(GX_VA_POS, lbl_1_data_278, sizeof(lbl_1_data_278), sizeof(Vec)); GXBegin(GX_QUADS, GX_VTXFMT0, 4); - for(i=0; i<4; i++) { + for (i = 0; i < 4; i++) { GXPosition1x16(i); } GXEnd(); @@ -635,7 +520,7 @@ void fn_1_4B1C(ModelData *model, Mtx matrix) workUnk4 = &work2->unk4[2]; fn_1_6594(0, workUnk4, 0, 0, 0); GXBegin(GX_QUADS, GX_VTXFMT0, 4); - for(i=0; i<4; i++) { + for (i = 0; i < 4; i++) { GXPosition1x16(i); } GXEnd(); @@ -662,7 +547,7 @@ void fn_1_4E64(ModelData *model, Mtx matrix) MTXInvXpose(matrix, invXPose); GXLoadNrmMtxImm(invXPose, GX_PNMTX0); fov = cameraP->fov; - if(fov <= 0.0f) { + if (fov <= 0.0f) { fov = 45; } MTXLightPerspective(proj, fov, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f); @@ -704,53 +589,55 @@ void fn_1_4E64(ModelData *model, Mtx matrix) GXSetIndTexCoordScale(GX_INDTEXSTAGE0, GX_ITS_1, GX_ITS_1); GXSetTevIndWarp(GX_TEVSTAGE0, GX_INDTEXSTAGE0, GX_TRUE, GX_FALSE, GX_ITM_1); GXSetIndTexMtx(GX_ITM_1, lbl_1_data_5E8, -1); - for(i=0; i<26; i++) { - work2->unk944[i][0] -= 0.007874016f*((s32)frand() & 0x7F)*0.005f; - work2->unk944[i][1] += 0.007874016f*((s32)frand() & 0x7F)*0.005f; - work2->unk874[i][0] = work2->unk944[i][0]+lbl_1_data_518[i][0]; - work2->unk874[i][1] = work2->unk944[i][1]+lbl_1_data_518[i][1]; + for (i = 0; i < 26; i++) { + work2->unk944[i][0] -= 0.007874016f * ((s32)frand() & 0x7F) * 0.005f; + work2->unk944[i][1] += 0.007874016f * ((s32)frand() & 0x7F) * 0.005f; + work2->unk874[i][0] = work2->unk944[i][0] + lbl_1_data_518[i][0]; + work2->unk874[i][1] = work2->unk944[i][1] + lbl_1_data_518[i][1]; } DCFlushRange(&work2->unk874[0][0], sizeof(work2->unk874)); GXClearVtxDesc(); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); - + GXSETARRAY(GX_VA_POS, lbl_1_data_2A8, sizeof(lbl_1_data_2A8), 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_3E0, sizeof(lbl_1_data_3E0), 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_448, sizeof(lbl_1_data_448), sizeof(float)*2); + GXSETARRAY(GX_VA_TEX0, lbl_1_data_448, sizeof(lbl_1_data_448), sizeof(float) * 2); GXSetVtxDesc(GX_VA_TEX1, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX1, GX_TEX_ST, GX_F32, 0); - GXSETARRAY(GX_VA_TEX1, &work2->unk874[0][0], sizeof(work2->unk874), sizeof(float)*2); + GXSETARRAY(GX_VA_TEX1, &work2->unk874[0][0], sizeof(work2->unk874), sizeof(float) * 2); GXBegin(GX_QUADS, GX_VTXFMT0, 48); - for(i=0; i<12; i++) { + for (i = 0; i < 12; i++) { s16 index; - if(i == 4) { + if (i == 4) { index = 12; - } else if(i == 9) { + } + else if (i == 9) { index = 13; - } else { + } + else { index = i; } - GXPosition1x16(index+0); - GXColor1x16(index+0); - GXTexCoord1x16(index+0); - GXTexCoord1x16(index+0); - GXPosition1x16(index+5); - GXColor1x16(index+5); - GXTexCoord1x16(index+5); - GXTexCoord1x16(index+5); - GXPosition1x16(index+6); - GXColor1x16(index+6); - GXTexCoord1x16(index+6); - GXTexCoord1x16(index+6); - GXPosition1x16(index+1); - GXColor1x16(index+1); - GXTexCoord1x16(index+1); - GXTexCoord1x16(index+1); + GXPosition1x16(index + 0); + GXColor1x16(index + 0); + GXTexCoord1x16(index + 0); + GXTexCoord1x16(index + 0); + GXPosition1x16(index + 5); + GXColor1x16(index + 5); + GXTexCoord1x16(index + 5); + GXTexCoord1x16(index + 5); + GXPosition1x16(index + 6); + GXColor1x16(index + 6); + GXTexCoord1x16(index + 6); + GXTexCoord1x16(index + 6); + GXPosition1x16(index + 1); + GXColor1x16(index + 1); + GXTexCoord1x16(index + 1); + GXTexCoord1x16(index + 1); } GXEnd(); GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, 8); @@ -847,18 +734,18 @@ void fn_1_59A0(ModelData *model, Mtx matrix) HuSprTexLoad(work->unkA1C[1], 0, 1, GX_REPEAT, GX_REPEAT, GX_LINEAR); GXSetNumTexGens(2); MTXRotDeg(final, 'X', 90.0f); - x = 0.004f*scale; + x = 0.004f * scale; MTXScale(temp, x, -0.004f, 0.004f); MTXConcat(final, temp, final); - MTXTrans(temp, (work->unkA48%1024)/(512.0f*x), 0, 1.2499999f*(work->unkA48%400)); + MTXTrans(temp, (work->unkA48 % 1024) / (512.0f * x), 0, 1.2499999f * (work->unkA48 % 400)); MTXConcat(final, temp, final); GXLoadTexMtxImm(final, GX_TEXMTX0, GX_MTX2x4); GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_POS, GX_TEXMTX0); MTXRotDeg(final, 'X', 90.0f); - x = 0.004f*scale; + x = 0.004f * scale; MTXScale(temp, x, -0.004f, 0.004f); MTXConcat(final, temp, final); - MTXTrans(temp, (work->unkA48%300)/(150.0f*x), 0, 0); + MTXTrans(temp, (work->unkA48 % 300) / (150.0f * x), 0, 0); MTXConcat(final, temp, final); GXLoadTexMtxImm(final, GX_TEXMTX1, GX_MTX2x4); GXSetTexCoordGen(GX_TEXCOORD1, GX_TG_MTX2x4, GX_TG_POS, GX_TEXMTX1); @@ -918,13 +805,12 @@ void fn_1_6088(Work347CUnk4 *arg0, s32 arg1) GXSetTexCopyDst(arg0->unk14, arg0->unk18, GX_TF_RGB565, arg0->unk8); GXSetCopyClear(lbl_1_data_69C, GX_MAX_Z24); GXCopyTex(arg0->unk0, arg1); - } void fn_1_6144(Work347CUnk4 *fbWork, float x1, float y1, float scale) { - float x2 = x1+(fbWork->unk14*scale); - float y2 = y1+(fbWork->unk18*scale); + float x2 = x1 + (fbWork->unk14 * scale); + float y2 = y1 + (fbWork->unk18 * scale); Mtx44 proj; Mtx modelview; GXTexObj texObj; @@ -971,9 +857,10 @@ void fn_1_6594(s16 arg0, Work347CUnk4 *arg1, GXTexWrapMode arg2, s32 arg3, BOOL { GXTexObj texObj; GXInitTexObj(&texObj, arg1->unk0, arg1->unk14, arg1->unk18, GX_TF_RGB565, arg2, arg2, FALSE); - if(arg4) { + if (arg4) { GXInitTexObjLOD(&texObj, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1); - } else { + } + else { GXInitTexObjLOD(&texObj, GX_NEAR, GX_NEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1); } GXLoadTexObj(&texObj, arg0); @@ -988,47 +875,51 @@ s32 fn_1_6698(Vec *arg0, float arg1, float arg2, s32 arg3) Work347C *work2; Work347CUnk74 *workUnk74; s32 i; - if(!lbl_1_bss_6C) { + if (!lbl_1_bss_6C) { return -1; } work = lbl_1_bss_6C->data; work2 = work; workUnk74 = &work->unk74[0]; - for(i=0; i<64; i++, workUnk74++) { - if(workUnk74->unk1E == 0) { + for (i = 0; i < 64; i++, workUnk74++) { + if (workUnk74->unk1E == 0) { break; } } - if(i >= 64) { + if (i >= 64) { return -1; } workUnk74->unk0 = *arg0; - if(arg1 < 0.0f) { + if (arg1 < 0.0f) { workUnk74->unkC.x = 1; - } else { + } + else { workUnk74->unkC.x = arg1; } - if(arg2 < 0.0f) { + if (arg2 < 0.0f) { workUnk74->unkC.z = 1; - } else { + } + else { workUnk74->unkC.z = arg2; } - if(arg3 < 0) { + if (arg3 < 0) { workUnk74->unk1C = 60; - } else { + } + else { workUnk74->unk1C = arg3; } - workUnk74->unkC.y = (s32)frand()%360; + workUnk74->unkC.y = (s32)frand() % 360; workUnk74->unk1E = workUnk74->unk1C; - workUnk74->unk18 = 1.0f/workUnk74->unk1C; + workUnk74->unk18 = 1.0f / workUnk74->unk1C; return i; } float fn_1_687C(void) { - if(!lbl_1_bss_6C) { + if (!lbl_1_bss_6C) { return 0; - } else { + } + else { Work347C *work = lbl_1_bss_6C->data; return work->unkA44; } @@ -1036,9 +927,10 @@ float fn_1_687C(void) float fn_1_68C8(void) { - if(!lbl_1_bss_6C) { + if (!lbl_1_bss_6C) { return 0; - } else { + } + else { Work347C *work = lbl_1_bss_6C->data; return work->unkA40; } @@ -1062,10 +954,10 @@ void fn_1_6914(omObjData *object) Work6914 *work; s32 i; AnimData *anim; - work = object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work6914)*8, MEMORY_DEFAULT_NUM); - memset(work, 0, sizeof(Work6914)*8); + work = object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work6914) * 8, MEMORY_DEFAULT_NUM); + memset(work, 0, sizeof(Work6914) * 8); anim = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M455, 26), MEMORY_DEFAULT_NUM)); - for(i=0; i<8; i++, work++) { + for (i = 0; i < 8; i++, work++) { work->unk10 = anim; work->unk0 = i; work->unk4 = Hu3DParticleCreate(work->unk10, 32); @@ -1086,21 +978,22 @@ void fn_1_6A6C(omObjData *object) { Work6914 *work = object->data; s32 i; - for(i=0; i<8; i++, work++) { - if(work->unk8 == 0) { + for (i = 0; i < 8; i++, work++) { + if (work->unk8 == 0) { continue; } - if(work->unkC > 1) { + if (work->unkC > 1) { ModelData *modelP = &Hu3DData[work->unk4]; ParticleData *particleP = modelP->unk_120; HsfanimStruct01 *data = particleP->unk_48; s32 j; - for(j=0; junk_30; j++, data++) { - if(++data->unk00 > data->unk02) { - s32 alpha = data->unk40.a-1; - if(alpha < 0) { + for (j = 0; j < particleP->unk_30; j++, data++) { + if (++data->unk00 > data->unk02) { + s32 alpha = data->unk40.a - 1; + if (alpha < 0) { data->unk2C = 0; - } else { + } + else { data->unk40.a = alpha; } } @@ -1111,10 +1004,11 @@ void fn_1_6A6C(omObjData *object) data->unk08.y -= 0.3103333379576603; } } - if(++work->unkC > 90.0f) { + if (++work->unkC > 90.0f) { Hu3DModelAttrSet(work->unk4, HU3D_ATTR_DISPOFF); work->unk8 = 0; - } else { + } + else { Hu3DModelPosSet(work->unk4, work->unk14.x, work->unk14.y, work->unk14.z); Hu3DModelRotSet(work->unk4, work->unk20.x, work->unk20.y, work->unk20.z); Hu3DModelScaleSet(work->unk4, work->unk2C.x, work->unk2C.y, work->unk2C.z); @@ -1137,13 +1031,13 @@ s32 fn_1_6CB0(Vec *arg0, float arg1) ModelData *temp_r27; ParticleData *temp_r28; HsfanimStruct01 *temp_r30; - - for(i=0; i<8; i++, work++) { - if(work->unk8 == 0) { + + for (i = 0; i < 8; i++, work++) { + if (work->unk8 == 0) { break; } } - if(i >= 8) { + if (i >= 8) { return -1; } Hu3DModelAttrReset(work->unk4, HU3D_ATTR_DISPOFF); @@ -1153,29 +1047,29 @@ s32 fn_1_6CB0(Vec *arg0, float arg1) temp_r28 = temp_r27->unk_120; temp_r28->unk_2C = 1; temp_r30 = temp_r28->unk_48; - for(i=0; iunk_30; i++, temp_r30++) { - float temp_f30 = ((s32)frand()%20)+90; - float temp_f29 = (s32)frand()%360; + for (i = 0; i < temp_r28->unk_30; i++, temp_r30++) { + float temp_f30 = ((s32)frand() % 20) + 90; + float temp_f29 = (s32)frand() % 360; float temp_f26 = sind(temp_f30); float temp_f28 = cosd(temp_f30); - float temp_f25 = 0.75f+0.15f*(0.007874016f*((s32)frand() & 0x7F)); + float temp_f25 = 0.75f + 0.15f * (0.007874016f * ((s32)frand() & 0x7F)); float temp_f31 = 0.15f; - temp_r30->unk08.x = temp_f31*(0.65f*(50.0*(temp_f28*sind(temp_f29)))); - temp_r30->unk08.z = temp_f31*(0.65f*(50.0*(temp_f28*cosd(temp_f29)))); - temp_r30->unk08.y = temp_f31*(50*temp_f26*temp_f25); + temp_r30->unk08.x = temp_f31 * (0.65f * (50.0 * (temp_f28 * sind(temp_f29)))); + temp_r30->unk08.z = temp_f31 * (0.65f * (50.0 * (temp_f28 * cosd(temp_f29)))); + temp_r30->unk08.y = temp_f31 * (50 * temp_f26 * temp_f25); temp_r30->unk00 = 0; - temp_r30->unk02 = ((s32)frand()%16)+45; - temp_r30->unk30 = (s32)frand()%360; + temp_r30->unk02 = ((s32)frand() % 16) + 45; + temp_r30->unk30 = (s32)frand() % 360; temp_r30->unk2C = 145; - temp_r30->unk34.x = 0.05f*(((s32)frand() & 0x7F)-64); - temp_r30->unk34.y = 0.65f*(((s32)frand() & 0x7F)-64); - temp_r30->unk34.z = 0.05f*(((s32)frand() & 0x7F)-64); - temp_r30->unk40.r = ((s32)frand()%64)+192; - temp_r30->unk40.g = ((s32)frand()%64)+192; - temp_r30->unk40.b = ((s32)frand()%64)+192; + temp_r30->unk34.x = 0.05f * (((s32)frand() & 0x7F) - 64); + temp_r30->unk34.y = 0.65f * (((s32)frand() & 0x7F) - 64); + temp_r30->unk34.z = 0.05f * (((s32)frand() & 0x7F) - 64); + temp_r30->unk40.r = ((s32)frand() % 64) + 192; + temp_r30->unk40.g = ((s32)frand() % 64) + 192; + temp_r30->unk40.b = ((s32)frand() % 64) + 192; temp_r30->unk40.a = 64; } - if(arg1 < 0.0f) { + if (arg1 < 0.0f) { arg1 = 1.0f; } work->unk14 = *arg0; @@ -1192,16 +1086,16 @@ void fn_1_7368(omObjData *object); void fn_1_7280(omObjData *object) { s32 i; - for(i=0; imdlcnt; i++) { - if(i == 0) { + for (i = 0; i < object->mdlcnt; i++) { + if (i == 0) { object->model[i] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M455, 9)); - } else { + } + else { object->model[i] = Hu3DModelLink(object->model[0]); } Hu3DModelCameraSet(object->model[i], HU3D_CAM0); Hu3DModelLayerSet(object->model[i], 6); Hu3DModelAttrSet(object->model[i], HU3D_ATTR_DISPOFF); - } object->stat |= 0x100; object->func = fn_1_7368; @@ -1210,31 +1104,28 @@ void fn_1_7280(omObjData *object) void fn_1_7368(omObjData *object) { s32 i; - for(i=0; imdlcnt; i++) { + for (i = 0; i < object->mdlcnt; i++) { ModelData *modelP = &Hu3DData[object->model[i]]; - if(!(modelP->attr & HU3D_ATTR_DISPOFF)) { - if(Hu3DMotionTimeGet(object->model[i]) >= Hu3DMotionMaxTimeGet(object->model[i])) { - Hu3DModelAttrSet(object->model[i], HU3D_ATTR_DISPOFF); - } + if (!(modelP->attr & HU3D_ATTR_DISPOFF)) { + if (Hu3DMotionTimeGet(object->model[i]) >= Hu3DMotionMaxTimeGet(object->model[i])) { + Hu3DModelAttrSet(object->model[i], HU3D_ATTR_DISPOFF); + } } } } -void fn_1_7430(omObjData *object) -{ - -} +void fn_1_7430(omObjData *object) { } s32 fn_1_7434(Vec *pos, float scale) { s32 i; - for(i=0; imdlcnt; i++) { + for (i = 0; i < lbl_1_bss_64->mdlcnt; i++) { ModelData *modelP = &Hu3DData[lbl_1_bss_64->model[i]]; - if(modelP->attr & HU3D_ATTR_DISPOFF) { + if (modelP->attr & HU3D_ATTR_DISPOFF) { break; } } - if(i >= lbl_1_bss_64->mdlcnt) { + if (i >= lbl_1_bss_64->mdlcnt) { return -1; } Hu3DMotionTimeSet(lbl_1_bss_64->model[i], 0); @@ -1254,7 +1145,7 @@ void fn_1_75C0(omObjData *object) s32 i; ModelData *modelP; AnimData *anim = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M455, 26), MEMORY_DEFAULT_NUM)); - + object->data = anim; object->model[0] = Hu3DParticleCreate(anim, 64); Hu3DModelCameraSet(object->model[0], HU3D_CAM0); @@ -1264,7 +1155,7 @@ void fn_1_75C0(omObjData *object) temp_r30 = modelP->unk_120; temp_r29 = temp_r30->unk_48; temp_r30->unk_2C = 1; - for(i=0; iunk_30; i++, temp_r29++) { + for (i = 0; i < temp_r30->unk_30; i++, temp_r29++) { temp_r29->unk2C = 0; } object->func = fn_1_76B0; @@ -1276,20 +1167,19 @@ void fn_1_76B0(omObjData *object) ParticleData *temp_r29 = modelP->unk_120; HsfanimStruct01 *temp_r30 = temp_r29->unk_48; s32 i; - for(i=0; iunk_30; i++, temp_r30++) { - if(temp_r30->unk2C <= 0.0f) { + for (i = 0; i < temp_r29->unk_30; i++, temp_r30++) { + if (temp_r30->unk2C <= 0.0f) { continue; } - if(++temp_r30->unk00 > 360) { + if (++temp_r30->unk00 > 360) { temp_r30->unk00 -= 360; } - temp_r30->unk34.x += temp_r30->unk08.x*sind(2.0f*temp_r30->unk00); + temp_r30->unk34.x += temp_r30->unk08.x * sind(2.0f * temp_r30->unk00); temp_r30->unk34.y += temp_r30->unk08.y; - if(temp_r30->unk34.y >= 0.0f) { - fn_1_6698(&temp_r30->unk34, 0.00625f*temp_r30->unk2C, 1, 15); + if (temp_r30->unk34.y >= 0.0f) { + fn_1_6698(&temp_r30->unk34, 0.00625f * temp_r30->unk2C, 1, 15); temp_r30->unk2C = 0; } - } } @@ -1307,27 +1197,26 @@ s32 fn_1_79C8(Vec *pos, float scale) ModelData *modelP = &Hu3DData[lbl_1_bss_60->model[0]]; ParticleData *temp_r30 = modelP->unk_120; HsfanimStruct01 *temp_r31 = temp_r30->unk_48; - for(i=0; iunk_30; i++, temp_r31++) { - if(temp_r31->unk2C <= 0.0f) { + for (i = 0; i < temp_r30->unk_30; i++, temp_r31++) { + if (temp_r31->unk2C <= 0.0f) { break; } } - if(i >= temp_r30->unk_30) { + if (i >= temp_r30->unk_30) { return -1; } - if(scale <= 0.0f) { + if (scale <= 0.0f) { scale = 1.0f; } temp_r31->unk34 = *pos; - temp_r31->unk08.x = (1.5f+(0.2f*(0.007874016f*((s32)frand() & 0x7F))))*0.5f; - temp_r31->unk08.z = (1.5f+(0.2f*(0.007874016f*((s32)frand() & 0x7F)))); - temp_r31->unk08.y = (1.5f+(0.2f*(0.007874016f*((s32)frand() & 0x7F))))*2.0f; - temp_r31->unk00 = (s32)frand()%360; - temp_r31->unk2C = 20*scale; + temp_r31->unk08.x = (1.5f + (0.2f * (0.007874016f * ((s32)frand() & 0x7F)))) * 0.5f; + temp_r31->unk08.z = (1.5f + (0.2f * (0.007874016f * ((s32)frand() & 0x7F)))); + temp_r31->unk08.y = (1.5f + (0.2f * (0.007874016f * ((s32)frand() & 0x7F)))) * 2.0f; + temp_r31->unk00 = (s32)frand() % 360; + temp_r31->unk2C = 20 * scale; return i; } - typedef struct work7C48 { s32 unk0; s32 unk4; @@ -1342,24 +1231,25 @@ void fn_1_8050(omObjData *object); void fn_1_7C48(omObjData *object) { - Work7C48 *workBase = object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work7C48)*8, MEMORY_DEFAULT_NUM); + Work7C48 *workBase = object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work7C48) * 8, MEMORY_DEFAULT_NUM); Work7C48 *workP = workBase; s32 i; - memset(workP, 0, 8*sizeof(Work7C48)); - for(i=0; i<8; i++, workP++) { - switch(i) { + memset(workP, 0, 8 * sizeof(Work7C48)); + for (i = 0; i < 8; i++, workP++) { + switch (i) { case 0: workP->unk0 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M455, 10)); break; - + case 1: workP->unk0 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M455, 10)); break; - + default: - if(i & 0x1) { + if (i & 0x1) { workP->unk0 = Hu3DModelLink(workBase[0].unk0); - } else { + } + else { workP->unk0 = Hu3DModelLink(workBase[1].unk0); } break; @@ -1371,11 +1261,11 @@ void fn_1_7C48(omObjData *object) workP->unk8 = 0; workP->unkC = 2; workP->unk10 = (s32)frand() % 360; - workP->unk14.x = 1500*((0.007874016f*((s32)frand() & 0x7F))-0.5f); - workP->unk14.z = 500*((0.007874016f*((s32)frand() & 0x7F))-0.5f); - workP->unk14.y = -250+(100*(0.3f*i)); - workP->unk20.x = 1500*((0.007874016f*((s32)frand() & 0x7F))-0.5f); - workP->unk20.z = 500*((0.007874016f*((s32)frand() & 0x7F))-0.5f); + workP->unk14.x = 1500 * ((0.007874016f * ((s32)frand() & 0x7F)) - 0.5f); + workP->unk14.z = 500 * ((0.007874016f * ((s32)frand() & 0x7F)) - 0.5f); + workP->unk14.y = -250 + (100 * (0.3f * i)); + workP->unk20.x = 1500 * ((0.007874016f * ((s32)frand() & 0x7F)) - 0.5f); + workP->unk20.z = 500 * ((0.007874016f * ((s32)frand() & 0x7F)) - 0.5f); workP->unk20.y = workP->unk14.y; Hu3DModelPosSet(workP->unk0, workP->unk14.x, workP->unk14.y, workP->unk14.z); Hu3DModelRotSet(workP->unk0, 0, workP->unk10, 0); @@ -1389,60 +1279,61 @@ void fn_1_8050(omObjData *object) { Work7C48 *workP = object->data; s32 i; - for(i=0; i<8; i++, workP++) { + for (i = 0; i < 8; i++, workP++) { float dx; float dz; float vel; float angle; - if(workP->unk4 == 0) { - vel = 1+(0.5*sind((workP->unk8*5)%180)); - } else { + if (workP->unk4 == 0) { + vel = 1 + (0.5 * sind((workP->unk8 * 5) % 180)); + } + else { vel = 3; } - workP->unk14.x += vel*(workP->unkC*sind(workP->unk10)); - workP->unk14.z += vel*(workP->unkC*cosd(workP->unk10)); - dx = workP->unk20.x-workP->unk14.x; - dz = workP->unk20.z-workP->unk14.z; + workP->unk14.x += vel * (workP->unkC * sind(workP->unk10)); + workP->unk14.z += vel * (workP->unkC * cosd(workP->unk10)); + dx = workP->unk20.x - workP->unk14.x; + dz = workP->unk20.z - workP->unk14.z; angle = atan2d(dx, dz); workP->unk10 = fn_1_9F18(angle, workP->unk10, 3.5f); - if((dx*dx)+(dz*dz) < 10000.0f) { - if(workP->unk4 == 0) { - workP->unk20.x = 2000*((0.007874016f*((s32)frand() & 0x7F))-0.5f); - workP->unk20.z = 700*((0.007874016f*((s32)frand() & 0x7F))-0.5f); + if ((dx * dx) + (dz * dz) < 10000.0f) { + if (workP->unk4 == 0) { + workP->unk20.x = 2000 * ((0.007874016f * ((s32)frand() & 0x7F)) - 0.5f); + workP->unk20.z = 700 * ((0.007874016f * ((s32)frand() & 0x7F)) - 0.5f); workP->unk20.y = workP->unk14.y; - } else { - if(workP->unk14.x < 0.0f) { + } + else { + if (workP->unk14.x < 0.0f) { workP->unk20.x = -2500; - } else { + } + else { workP->unk20.x = 2500; } - workP->unk20.z = 500*((0.007874016f*((s32)frand() & 0x7F))-0.5f); + workP->unk20.z = 500 * ((0.007874016f * ((s32)frand() & 0x7F)) - 0.5f); workP->unk20.y = workP->unk14.y; } } Hu3DModelPosSet(workP->unk0, workP->unk14.x, workP->unk14.y, workP->unk14.z); Hu3DModelRotSet(workP->unk0, 0, workP->unk10, 0); - workP->unk8 += frand()&0x3; + workP->unk8 += frand() & 0x3; } } -void fn_1_8474(omObjData *object) -{ - -} +void fn_1_8474(omObjData *object) { } void fn_1_8478(void) { Work7C48 *workP = lbl_1_bss_5C->data; s32 i; - for(i=0; i<8; i++, workP++) { + for (i = 0; i < 8; i++, workP++) { workP->unk4 = 1; - if(workP->unk14.x < 0.0f) { + if (workP->unk14.x < 0.0f) { workP->unk20.x = -2500; - } else { + } + else { workP->unk20.x = 2500; } - workP->unk20.z = 500*((0.007874016f*((s32)frand() & 0x7F))-0.5f); + workP->unk20.z = 500 * ((0.007874016f * ((s32)frand() & 0x7F)) - 0.5f); workP->unk20.y = workP->unk14.y; } } @@ -1468,10 +1359,10 @@ void fn_1_8578(omObjData *object, Work891C *workP) s32 num = workP[0].unk6; float ofsZ = -2000; s32 i; - for(i=0; iunk0, workP->unk8.x, workP->unk8.y, workP->unk8.z+ofsZ); + Hu3DModelPosSet(workP->unk0, workP->unk8.x, workP->unk8.y, workP->unk8.z + ofsZ); modelMtx = &Hu3DData[workP->unk0].unk_F0; MTXRotDeg(*modelMtx, 'Y', workP->unk28); MTXRotDeg(rotZ, 'Z', workP->unk38); @@ -1487,20 +1378,19 @@ void fn_1_867C(omObjData *object) Work891C *workP = object->data; s32 num = workP[0].unk6; s32 i; - for(i=0; iunk14, &workP->unk8, &diff); workP->unk2C = atan2d(diff.x, diff.z); - workP->unk28 = fn_1_8D90(workP->unk28, workP->unk2C+workP->unk3C, 0.08f); - workP->unk24 += 0.05f*(600.0f-workP->unk24); - workP->unk20 += 0.2f*(workP->unk24-workP->unk20); - workP->unk8.x += (workP->unk20*0.016666668f)*sind(workP->unk28); - workP->unk8.z += (workP->unk20*0.016666668f)*cosd(workP->unk28); - workP->unk30 += workP->unk20*0.016666668f; + workP->unk28 = fn_1_8D90(workP->unk28, workP->unk2C + workP->unk3C, 0.08f); + workP->unk24 += 0.05f * (600.0f - workP->unk24); + workP->unk20 += 0.2f * (workP->unk24 - workP->unk20); + workP->unk8.x += (workP->unk20 * 0.016666668f) * sind(workP->unk28); + workP->unk8.z += (workP->unk20 * 0.016666668f) * cosd(workP->unk28); + workP->unk30 += workP->unk20 * 0.016666668f; } fn_1_8578(object, object->data); - } void fn_1_891C(omObjData *object) @@ -1513,31 +1403,31 @@ void fn_1_891C(omObjData *object) float angle; float ofsZ; s32 i; - object->data = workBase = HuMemDirectMallocNum(HEAP_SYSTEM, num*sizeof(Work891C), MEMORY_DEFAULT_NUM); - memset(workBase, 0, num*sizeof(Work891C)); + object->data = workBase = HuMemDirectMallocNum(HEAP_SYSTEM, num * sizeof(Work891C), MEMORY_DEFAULT_NUM); + memset(workBase, 0, num * sizeof(Work891C)); modelId = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M455, 8)); ofsZ = 1500; work = workBase; - for(i=0; iunk0 = Hu3DModelLink(modelId); Hu3DModelLayerSet(work->unk0, 6); Hu3DModelCameraSet(work->unk0, 1); Hu3DModelScaleSet(work->unk0, 7, 7, 7); - work->unk14.x = ((s32)frandmod(1000)*4.0f)-2000; - work->unk14.z = ((s32)frandmod(1000))-500.0f; - work->unk14.y = ((s32)frandmod(1000)*0.8f)+300; + work->unk14.x = ((s32)frandmod(1000) * 4.0f) - 2000; + work->unk14.z = ((s32)frandmod(1000)) - 500.0f; + work->unk14.y = ((s32)frandmod(1000) * 0.8f) + 300; angle = (s32)frandmod(360); - radius = ((s32)frandmod(250))+200.0f; - work->unk8.x = radius*sind(angle); + radius = ((s32)frandmod(250)) + 200.0f; + work->unk8.x = radius * sind(angle); work->unk8.y = 0; - work->unk8.z = radius*cosd(angle); + work->unk8.z = radius * cosd(angle); VECAdd(&work->unk14, &work->unk8, &work->unk8); - work->unk38 = 60-((6.0f/55.0f)*radius); + work->unk38 = 60 - ((6.0f / 55.0f) * radius); work->unk28 = (s32)frandmod(360); - work->unk3C = ((s32)frandmod(1000) < 500) ? (-70.0f+((s32)frandmod(50)*0.1f)) : (70.0f-((s32)frandmod(50)*0.1f)); - if(work->unk3C < 0.0f) { + work->unk3C = ((s32)frandmod(1000) < 500) ? (-70.0f + ((s32)frandmod(50) * 0.1f)) : (70.0f - ((s32)frandmod(50) * 0.1f)); + if (work->unk3C < 0.0f) { work->unk38 = -work->unk38; } work->unk30 = 1; @@ -1551,15 +1441,15 @@ void fn_1_891C(omObjData *object) float fn_1_8D90(float start, float end, float weight) { - float angle = fmodf(end-start, 360); - if(angle < 0.0f) { + float angle = fmodf(end - start, 360); + if (angle < 0.0f) { angle += 360.0f; } - if(angle > 180.0f) { + if (angle > 180.0f) { angle -= 360.0f; } - angle = fmodf(start+(weight*angle), 360); - if(angle < 0.0f) { + angle = fmodf(start + (weight * angle), 360); + if (angle < 0.0f) { angle += 360.0f; } return angle; @@ -1587,8 +1477,8 @@ void fn_1_8EAC(void) particle = modelP->unk_120; particle->unk_2C = 1; particle->unk_54 = fn_1_91B8; - newWork = particle->unk_1C = HuMemDirectMallocNum(HEAP_DATA, sizeof(s16)*4, modelP->unk_48); - memset(newWork, 0, 4*sizeof(s16)); + newWork = particle->unk_1C = HuMemDirectMallocNum(HEAP_DATA, sizeof(s16) * 4, modelP->unk_48); + memset(newWork, 0, 4 * sizeof(s16)); newWork[1] = 0; workP->unk10[1] = modelId = Hu3DParticleCreate(workP->unk0[3], 10); Hu3DModelLayerSet(modelId, 6); @@ -1596,8 +1486,8 @@ void fn_1_8EAC(void) particle = modelP->unk_120; particle->unk_2C = 1; particle->unk_54 = fn_1_91B8; - newWork = particle->unk_1C = HuMemDirectMallocNum(HEAP_DATA, sizeof(s16)*4, modelP->unk_48); - memset(newWork, 0, 4*sizeof(s16)); + newWork = particle->unk_1C = HuMemDirectMallocNum(HEAP_DATA, sizeof(s16) * 4, modelP->unk_48); + memset(newWork, 0, 4 * sizeof(s16)); newWork[1] = 1; workP->unk10[2] = modelId = Hu3DParticleCreate(workP->unk0[2], 4); Hu3DModelLayerSet(modelId, 6); @@ -1605,8 +1495,8 @@ void fn_1_8EAC(void) particle = modelP->unk_120; particle->unk_2C = 1; particle->unk_54 = fn_1_91B8; - newWork = particle->unk_1C = HuMemDirectMallocNum(HEAP_DATA, sizeof(s16)*4, modelP->unk_48); - memset(newWork, 0, 4*sizeof(s16)); + newWork = particle->unk_1C = HuMemDirectMallocNum(HEAP_DATA, sizeof(s16) * 4, modelP->unk_48); + memset(newWork, 0, 4 * sizeof(s16)); newWork[1] = 2; workP->unk10[3] = modelId = Hu3DParticleCreate(workP->unk0[1], 6); Hu3DModelLayerSet(modelId, 6); @@ -1614,8 +1504,8 @@ void fn_1_8EAC(void) particle = modelP->unk_120; particle->unk_2C = 1; particle->unk_54 = fn_1_91B8; - newWork = particle->unk_1C = HuMemDirectMallocNum(HEAP_DATA, sizeof(s16)*4, modelP->unk_48); - memset(newWork, 0, 4*sizeof(s16)); + newWork = particle->unk_1C = HuMemDirectMallocNum(HEAP_DATA, sizeof(s16) * 4, modelP->unk_48); + memset(newWork, 0, 4 * sizeof(s16)); newWork[1] = 3; } @@ -1628,19 +1518,9 @@ void fn_1_9168(void) HuSprAnimKill(workP->unk0[3]); } -float lbl_1_data_6A0[4] = { - 1000, - 200, - 600, - 1200 -}; +float lbl_1_data_6A0[4] = { 1000, 200, 600, 1200 }; -float lbl_1_data_6B0[4] = { - 1, - 0.6, - 0.3, - 0.425 -}; +float lbl_1_data_6B0[4] = { 1, 0.6, 0.3, 0.425 }; void fn_1_91B8(ModelData *model, ParticleData *particle, Mtx matrix) { @@ -1661,34 +1541,37 @@ void fn_1_91B8(ModelData *model, ParticleData *particle, Mtx matrix) float temp_f29; float temp_f23; s32 i; - switch(newWorkP[2]) { + switch (newWorkP[2]) { case 0: temp_r31 = particle->unk_48; - if(newWorkP[1]) { + if (newWorkP[1]) { sp18.x = 2000; sp18.y = -300; sp18.z = 500; - temp_f29 = 1/VECMagPoint(sp18.x, sp18.y, sp18.z); + temp_f29 = 1 / VECMagPoint(sp18.x, sp18.y, sp18.z); sp18.x *= temp_f29; sp18.y *= temp_f29; sp18.z *= temp_f29; - temp_f23 = 3200.0f/particle->unk_30; - for(i=0; iunk_30; i++, temp_r31++) { - temp_f26 = 500.0+((temp_f23*i)+((0.25f*temp_f23)*((float)((s32)frand() & 0xFFFF)*0.0000152587890625))); - temp_f25 = temp_f26/3200; + temp_f23 = 3200.0f / particle->unk_30; + for (i = 0; i < particle->unk_30; i++, temp_r31++) { + temp_f26 = 500.0 + ((temp_f23 * i) + ((0.25f * temp_f23) * ((float)((s32)frand() & 0xFFFF) * 0.0000152587890625))); + temp_f25 = temp_f26 / 3200; temp_r31->unk14.x = temp_f26; - temp_r31->unk34.x = 1000+(temp_f26*sp18.x); - temp_r31->unk34.y = 4800+(temp_f26*sp18.y); - temp_r31->unk34.z = -3500+(temp_f26*sp18.z); - temp_r31->unk2C = ((0.7f*(temp_f25*temp_f25))+0.3f)*(lbl_1_data_6A0[newWorkP[1]]*(0.7f+(0.3f*((float)((s32)frand() & 0xFFFF)*0.0000152587890625)))); - temp_r31->unk40.r = (s32)(((float)((s32)frand() & 0xFFFF)*0.0000152587890625)*160.0)+32; - temp_r31->unk40.g = (s32)(((float)((s32)frand() & 0xFFFF)*0.0000152587890625)*96.0)+32; - temp_r31->unk40.b = (s32)(((float)((s32)frand() & 0xFFFF)*0.0000152587890625)*128.0)+32; - temp_r31->unk40.a = (255*lbl_1_data_6B0[newWorkP[1]]*(1.0-(0.4*temp_f25)))-(s32)(((float)((s32)frand() & 0xFFFF)*0.0000152587890625)*16.0); + temp_r31->unk34.x = 1000 + (temp_f26 * sp18.x); + temp_r31->unk34.y = 4800 + (temp_f26 * sp18.y); + temp_r31->unk34.z = -3500 + (temp_f26 * sp18.z); + temp_r31->unk2C = ((0.7f * (temp_f25 * temp_f25)) + 0.3f) + * (lbl_1_data_6A0[newWorkP[1]] * (0.7f + (0.3f * ((float)((s32)frand() & 0xFFFF) * 0.0000152587890625)))); + temp_r31->unk40.r = (s32)(((float)((s32)frand() & 0xFFFF) * 0.0000152587890625) * 160.0) + 32; + temp_r31->unk40.g = (s32)(((float)((s32)frand() & 0xFFFF) * 0.0000152587890625) * 96.0) + 32; + temp_r31->unk40.b = (s32)(((float)((s32)frand() & 0xFFFF) * 0.0000152587890625) * 128.0) + 32; + temp_r31->unk40.a = (255 * lbl_1_data_6B0[newWorkP[1]] * (1.0 - (0.4 * temp_f25))) + - (s32)(((float)((s32)frand() & 0xFFFF) * 0.0000152587890625) * 16.0); temp_r31->unk14.z = temp_r31->unk40.a; } newWorkP[2]++; - } else { + } + else { temp_r31->unk34.x = 1000; temp_r31->unk34.y = 4800; temp_r31->unk34.z = -3500; @@ -1697,46 +1580,46 @@ void fn_1_91B8(ModelData *model, ParticleData *particle, Mtx matrix) break; case 1: - sp3C.x = sind(rot.y)*cosd(rot.x); + sp3C.x = sind(rot.y) * cosd(rot.x); sp3C.y = -sind(rot.x); - sp3C.z = cosd(rot.y)*cosd(rot.x); - sp30.x = 1000-(pos.x+(1.25f*(sp3C.x*zoom))); - sp30.y = 4800-(pos.y+(sp3C.y*zoom)); - sp30.z = -3500-(pos.z+(1.25f*(sp3C.z*zoom))); - temp_f29 = 1/VECMagPoint(sp30.x, sp30.y, sp30.z); + sp3C.z = cosd(rot.y) * cosd(rot.x); + sp30.x = 1000 - (pos.x + (1.25f * (sp3C.x * zoom))); + sp30.y = 4800 - (pos.y + (sp3C.y * zoom)); + sp30.z = -3500 - (pos.z + (1.25f * (sp3C.z * zoom))); + temp_f29 = 1 / VECMagPoint(sp30.x, sp30.y, sp30.z); sp30.x *= temp_f29; sp30.y *= temp_f29; sp30.z *= temp_f29; - temp_f29 = -((-sp30.x*-sp3C.x)+(-sp30.y*-sp3C.y)+(-sp30.z*-sp3C.z)); - sp24.x = -sp3C.x+((-2.0f*sp30.x)*temp_f29); - sp24.y = -sp3C.y+((-2.0f*sp30.y)*temp_f29); - sp24.z = -sp3C.z+((-2.0f*sp30.z)*temp_f29); + temp_f29 = -((-sp30.x * -sp3C.x) + (-sp30.y * -sp3C.y) + (-sp30.z * -sp3C.z)); + sp24.x = -sp3C.x + ((-2.0f * sp30.x) * temp_f29); + sp24.y = -sp3C.y + ((-2.0f * sp30.y) * temp_f29); + sp24.z = -sp3C.z + ((-2.0f * sp30.z) * temp_f29); temp_r31 = particle->unk_48; - for(i=0; iunk_30; i++, temp_r31++) { - temp_r31->unk34.x = 1000+(sp24.x*temp_r31->unk14.x); - temp_r31->unk34.y = 4800+(sp24.y*temp_r31->unk14.x); - temp_r31->unk34.z = -3500+(sp24.z*temp_r31->unk14.x); - temp_r31->unk40.a = temp_r31->unk14.z*workP->unk20.y; + for (i = 0; i < particle->unk_30; i++, temp_r31++) { + temp_r31->unk34.x = 1000 + (sp24.x * temp_r31->unk14.x); + temp_r31->unk34.y = 4800 + (sp24.y * temp_r31->unk14.x); + temp_r31->unk34.z = -3500 + (sp24.z * temp_r31->unk14.x); + temp_r31->unk40.a = temp_r31->unk14.z * workP->unk20.y; } break; } - DCFlushRange(particle->unk_48, particle->unk_30*sizeof(HsfanimStruct01)); - + DCFlushRange(particle->unk_48, particle->unk_30 * sizeof(HsfanimStruct01)); } void fn_1_9CFC(float arg0) { StructBss48 *workP = lbl_1_bss_48; workP->unk20.y = arg0; - if(workP->unk20.y > 1.0f) { + if (workP->unk20.y > 1.0f) { workP->unk20.y = 1.0f; } - if(workP->unk20.y <= 0.0f) { + if (workP->unk20.y <= 0.0f) { Hu3DModelAttrSet(workP->unk10[0], HU3D_ATTR_DISPOFF); Hu3DModelAttrSet(workP->unk10[1], HU3D_ATTR_DISPOFF); Hu3DModelAttrSet(workP->unk10[2], HU3D_ATTR_DISPOFF); Hu3DModelAttrSet(workP->unk10[3], HU3D_ATTR_DISPOFF); - } else { + } + else { Hu3DModelAttrReset(workP->unk10[0], HU3D_ATTR_DISPOFF); Hu3DModelAttrReset(workP->unk10[1], HU3D_ATTR_DISPOFF); Hu3DModelAttrReset(workP->unk10[2], HU3D_ATTR_DISPOFF); @@ -1747,20 +1630,23 @@ void fn_1_9CFC(float arg0) float fn_1_9E00(float start, float end) { float angleDiff; - if(start >= 360.0f) { + if (start >= 360.0f) { start -= 360.0f; - } else if(start < 0.0f) { + } + else if (start < 0.0f) { start += 360.0f; } - if(end >= 360.0f) { + if (end >= 360.0f) { end -= 360.0f; - } else if(end < 0.0f) { + } + else if (end < 0.0f) { end += 360.0f; } - angleDiff = start-end; - if(angleDiff <= -180.0f) { + angleDiff = start - end; + if (angleDiff <= -180.0f) { angleDiff += 360.0f; - } else if(angleDiff >= 180.0f) { + } + else if (angleDiff >= 180.0f) { angleDiff -= 360.0f; } return angleDiff; @@ -1770,38 +1656,44 @@ float fn_1_9F18(float start, float end, float max) { float angle; float diff; - - if(start >= 360.0) { + + if (start >= 360.0) { start -= 360.0; - } else if(start < 0.0) { + } + else if (start < 0.0) { start += 360.0; } - if(end >= 360.0) { + if (end >= 360.0) { end -= 360.0; - } else if(end < 0.0) { + } + else if (end < 0.0) { end += 360.0; } - diff = 360.0+(start-end); - if(fabs(diff) >= 360.0) { + diff = 360.0 + (start - end); + if (fabs(diff) >= 360.0) { diff = fmod(diff, 360.0); } - if(diff < 180.0) { - if(diff <= max) { + if (diff < 180.0) { + if (diff <= max) { angle = diff; - } else { + } + else { angle = max; } - } else if(360.0-diff <= max) { - angle = -(360.0-diff); - } else { + } + else if (360.0 - diff <= max) { + angle = -(360.0 - diff); + } + else { angle = -max; } angle += end; - if(angle >= 360.0) { + if (angle >= 360.0) { angle -= 360.0; - } else if(angle < 0.0) { + } + else if (angle < 0.0) { angle += 360.0; } - + return angle; } diff --git a/src/REL/m456Dll/stage.c b/src/REL/m456Dll/stage.c index dd812635..94824810 100644 --- a/src/REL/m456Dll/stage.c +++ b/src/REL/m456Dll/stage.c @@ -1,11 +1,12 @@ #include "game/hsfanim.h" #include "game/hsfdraw.h" -#include "game/hsfmotion.h" #include "game/hsfman.h" +#include "game/hsfmotion.h" #include "game/object.h" #include "game/objsub.h" #include "game/sprite.h" + #include "REL/m456Dll.h" #include "ext_math.h" @@ -425,7 +426,7 @@ void fn_1_3CB0(ModelData *model, Mtx matrix) mtxRotCat(modelview, 0, 0, workUnk74->unkC.y); mtxTransCat(modelview, 400 * (workUnk74->unk0.x + 1500) / 3000, 400 * (workUnk74->unk0.z - -2000) / 3000, 0); GXLoadPosMtxImm(modelview, GX_PNMTX0); - GXCallDisplayList(work2->unkA14, work2->unkA18); + GXCallDisplayListNative(work2->unkA14, work2->unkA18); if (!omPauseChk()) { workUnk74->unk1E--; } diff --git a/src/game/armem.c b/src/game/armem.c index 248b5c2b..e051375a 100644 --- a/src/game/armem.c +++ b/src/game/armem.c @@ -216,7 +216,7 @@ u32 HuAR_DVDtoARAM(u32 dir) { block = HuARInfoGet(amemptr); block->dir = (dir >> 16); arqCnt++; - ARQPostRequest(&arqReq, 0x1234, 0, 0, (u32) stat->dir, amemptr, DirDataSize, ArqCallBack); + ARQPostRequest(&arqReq, 0x1234, 0, 0, (uintptr_t) stat->dir, amemptr, DirDataSize, ArqCallBack); OSReport("ARAM Trans %x\n", amemptr); while (HuARDMACheck()); HuDataDirClose(dir); @@ -289,7 +289,7 @@ void *HuAR_ARAMtoMRAMNum(u32 src, s32 num) { return dst; } -static void ArqCallBackAM(u32 pointerToARQRequest) { +static void ArqCallBackAM(uintptr_t pointerToARQRequest) { ARQueReq *req_ptr = (ARQueReq*) pointerToARQRequest; arqCnt--; diff --git a/src/game/hsfanim.c b/src/game/hsfanim.c index 349d3bb4..0c5a23f3 100755 --- a/src/game/hsfanim.c +++ b/src/game/hsfanim.c @@ -836,7 +836,7 @@ static void particleFunc(ModelData *arg0, Mtx arg1) { GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); GXSETARRAY(GX_VA_TEX0, baseST, sizeof(baseST), 8); - GXCallDisplayList(temp_r31->unk_50, temp_r31->unk_40); + GXCallDisplayListNative(temp_r31->unk_50, temp_r31->unk_40); } if (shadowModelDrawF == 0) { if (!(temp_r31->unk_2D & 2) && Hu3DPauseF == 0) { diff --git a/src/game/hsfdraw.c b/src/game/hsfdraw.c index 8e14490f..e2280e0b 100755 --- a/src/game/hsfdraw.c +++ b/src/game/hsfdraw.c @@ -512,16 +512,16 @@ static void FaceDraw(HsfDrawObject *arg0, HsfFace *arg1) GXSetVtxDesc(GX_VA_NRM, GX_INDEX16); if (temp_r29->hsfData->cenvCnt == 0) { GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_S8, 0); - GXSETARRAY(GX_VA_NRM, temp_r28->data.normal->data, temp_r28->data.vertex->count * 3, 3); + GXSETARRAY(GX_VA_NRM, temp_r28->data.normal->data, temp_r28->data.normal->count * 3, 3); } else { GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0); - GXSETARRAY(GX_VA_NRM, temp_r28->data.normal->data, temp_r28->data.vertex->count * sizeof(Vec), sizeof(Vec)); + GXSETARRAY(GX_VA_NRM, temp_r28->data.normal->data, temp_r28->data.normal->count * sizeof(Vec), sizeof(Vec)); } if (var_r22 & 4) { GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); - GXSETARRAY(GX_VA_CLR0, temp_r28->data.color->data, temp_r28->data.vertex->count * sizeof(GXColor), sizeof(GXColor)); + GXSETARRAY(GX_VA_CLR0, temp_r28->data.color->data, temp_r28->data.color->count * sizeof(GXColor), sizeof(GXColor)); } GXSetZCompLoc(1); } @@ -748,11 +748,11 @@ static void FaceDraw(HsfDrawObject *arg0, HsfFace *arg1) SetTevStageTex(arg0, temp_r30); } sp28 = (u8 *)DLBufStartP + DrawData[drawCnt].dlOfs; - GXCALLDISPLAYLISTLE(sp28, DrawData[drawCnt].dlSize); + GXCallDisplayListNative(sp28, DrawData[drawCnt].dlSize); } else { sp28 = (u8 *)DLBufStartP + DrawData[drawCnt].dlOfs; - GXCALLDISPLAYLISTLE(sp28, DrawData[drawCnt].dlSize); + GXCallDisplayListNative(sp28, DrawData[drawCnt].dlSize); } drawCnt++; } @@ -1734,16 +1734,16 @@ static void FaceDrawShadow(HsfDrawObject *arg0, HsfFace *arg1) GXSetVtxDesc(GX_VA_NRM, GX_INDEX16); if (temp_r28->hsfData->cenvCnt == 0) { GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_S8, 0); - GXSETARRAY(GX_VA_NRM, temp_r31->data.normal->data, temp_r31->data.vertex->count * 3, 3); + GXSETARRAY(GX_VA_NRM, temp_r31->data.normal->data, temp_r31->data.normal->count * 3, 3); } else { GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0); - GXSETARRAY(GX_VA_NRM, temp_r31->data.normal->data, temp_r31->data.vertex->count * sizeof(Vec), sizeof(Vec)); + GXSETARRAY(GX_VA_NRM, temp_r31->data.normal->data, temp_r31->data.normal->count * sizeof(Vec), sizeof(Vec)); } if (var_r30 & 4) { GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); - GXSETARRAY(GX_VA_CLR0, temp_r31->data.color->data, temp_r31->data.vertex->count * sizeof(GXColor), sizeof(GXColor)); + GXSETARRAY(GX_VA_CLR0, temp_r31->data.color->data, temp_r31->data.color->count * sizeof(GXColor), sizeof(GXColor)); } GXSetZCompLoc(1); } @@ -1774,20 +1774,20 @@ static void FaceDrawShadow(HsfDrawObject *arg0, HsfFace *arg1) GXSetVtxDesc(GX_VA_NRM, GX_INDEX16); if (temp_r28->hsfData->cenvCnt == 0) { GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_S8, 0); - GXSETARRAY(GX_VA_NRM, temp_r31->data.normal->data, temp_r31->data.vertex->count * 3, 3); + GXSETARRAY(GX_VA_NRM, temp_r31->data.normal->data, temp_r31->data.normal->count * 3, 3); } else { GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0); - GXSETARRAY(GX_VA_NRM, temp_r31->data.normal->data, temp_r31->data.vertex->count * sizeof(Vec), sizeof(Vec)); + GXSETARRAY(GX_VA_NRM, temp_r31->data.normal->data, temp_r31->data.normal->count * 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, temp_r31->data.st->data, temp_r31->data.vertex->count * sizeof(Vec2f), sizeof(Vec2f)); + GXSETARRAY(GX_VA_TEX0, temp_r31->data.st->data, temp_r31->data.st->count * sizeof(Vec2f), sizeof(Vec2f)); if (var_r30 & 4) { GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); - GXSETARRAY(GX_VA_CLR0, temp_r31->data.color->data, temp_r31->data.vertex->count * sizeof(GXColor), sizeof(GXColor)); + GXSETARRAY(GX_VA_CLR0, temp_r31->data.color->data, temp_r31->data.color->count * sizeof(GXColor), sizeof(GXColor)); } GXSetZCompLoc(0); } @@ -1802,7 +1802,7 @@ static void FaceDrawShadow(HsfDrawObject *arg0, HsfFace *arg1) GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, GX_LIGHT_NULL, GX_DF_NONE, GX_AF_NONE); GXSetChanCtrl(GX_COLOR1A1, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, GX_LIGHT_NULL, GX_DF_NONE, GX_AF_NONE); var_r26 = (u8 *)DLBufStartP + DrawData[drawCnt].dlOfs; - // GXCALLDISPLAYLISTLE(var_r26, DrawData[drawCnt].dlSize); + //GXCallDisplayListNative(var_r26, DrawData[drawCnt].dlSize); } else { if (!(temp_r27->flags & 0x400)) { @@ -1810,7 +1810,7 @@ static void FaceDrawShadow(HsfDrawObject *arg0, HsfFace *arg1) return; } var_r26 = (u8 *)DLBufStartP + DrawData[drawCnt].dlOfs; - // GXCALLDISPLAYLISTLE(var_r26, DrawData[drawCnt].dlSize); + //GXCallDisplayListNative(var_r26, DrawData[drawCnt].dlSize); } drawCnt++; } diff --git a/src/game/hsfload.c b/src/game/hsfload.c index aa4d93c8..1d94cd3a 100644 --- a/src/game/hsfload.c +++ b/src/game/hsfload.c @@ -1902,60 +1902,60 @@ static char *GetMotionString(u16 *str_ofs) void KillHSF(HsfData *data) { s32 i, j; - if (data->attributeCnt) - HuMemDirectFree(data->attribute); - if (data->bitmapCnt) - HuMemDirectFree(data->bitmap); - if (data->skeletonCnt) - HuMemDirectFree(data->skeleton); - if (data->faceCnt) { - for (i = 0; i < data->faceCnt; i++) { - HuMemDirectFree(data->face[i].data); - } - HuMemDirectFree(data->face); - } - if (data->materialCnt) - HuMemDirectFree(data->material); - if (data->motionCnt) { - HsfMotion *motion = data->motion; - for (j = 0; j < motion->numTracks; j++) { - HsfTrack *track = motion->track; - if (track->type == HSF_TRACK_ATTRIBUTE && track->curveType == HSF_CURVE_BITMAP) { - // in this case we needed to allocate space for HsfBitmapKey structs - HuMemDirectFree(track->dataTop); - } - } - HuMemDirectFree(motion->track); - HuMemDirectFree(data->motion); - } - if (data->normalCnt) - HuMemDirectFree(data->normal); - if (data->objectCnt) - HuMemDirectFree(data->object); - if (data->matrixCnt) - HuMemDirectFree(data->matrix); - if (data->paletteCnt) - HuMemDirectFree(data->palette); - if (data->stCnt) - HuMemDirectFree(data->st); - if (data->vertexCnt) - HuMemDirectFree(data->vertex); - if (data->cenvCnt) { - for (i = 0; i < data->cenvCnt; i++) { - HsfCenv *cenv = &data->cenv[i]; - HuMemDirectFree(cenv->dualData); - HuMemDirectFree(cenv->multiData); - } - HuMemDirectFree(data->cenv); - } - if (data->clusterCnt) - HuMemDirectFree(data->cluster); - if (data->partCnt) - HuMemDirectFree(data->part); - if (data->shapeCnt) - HuMemDirectFree(data->shape); - if (data->mapAttrCnt) - HuMemDirectFree(data->mapAttr); - HuMemDirectFree(data->symbol); + // if (data->attributeCnt) + // HuMemDirectFree(data->attribute); + // if (data->bitmapCnt) + // HuMemDirectFree(data->bitmap); + // if (data->skeletonCnt) + // HuMemDirectFree(data->skeleton); + // if (data->faceCnt) { + // for (i = 0; i < data->faceCnt; i++) { + // HuMemDirectFree(data->face[i].data); + // } + // HuMemDirectFree(data->face); + // } + // if (data->materialCnt) + // HuMemDirectFree(data->material); + // if (data->motionCnt) { + // HsfMotion *motion = data->motion; + // for (j = 0; j < motion->numTracks; j++) { + // HsfTrack *track = motion->track; + // if (track->type == HSF_TRACK_ATTRIBUTE && track->curveType == HSF_CURVE_BITMAP) { + // // in this case we needed to allocate space for HsfBitmapKey structs + // HuMemDirectFree(track->dataTop); + // } + // } + // HuMemDirectFree(motion->track); + // HuMemDirectFree(data->motion); + // } + // if (data->normalCnt) + // HuMemDirectFree(data->normal); + // if (data->objectCnt) + // HuMemDirectFree(data->object); + // if (data->matrixCnt) + // HuMemDirectFree(data->matrix); + // if (data->paletteCnt) + // HuMemDirectFree(data->palette); + // if (data->stCnt) + // HuMemDirectFree(data->st); + // if (data->vertexCnt) + // HuMemDirectFree(data->vertex); + // if (data->cenvCnt) { + // for (i = 0; i < data->cenvCnt; i++) { + // HsfCenv *cenv = &data->cenv[i]; + // HuMemDirectFree(cenv->dualData); + // HuMemDirectFree(cenv->multiData); + // } + // HuMemDirectFree(data->cenv); + // } + // if (data->clusterCnt) + // HuMemDirectFree(data->cluster); + // if (data->partCnt) + // HuMemDirectFree(data->part); + // if (data->shapeCnt) + // HuMemDirectFree(data->shape); + // if (data->mapAttrCnt) + // HuMemDirectFree(data->mapAttr); + // HuMemDirectFree(data->symbol); } #endif diff --git a/src/game/memory.c b/src/game/memory.c index 4b997331..eb8c001b 100644 --- a/src/game/memory.c +++ b/src/game/memory.c @@ -14,7 +14,7 @@ #define BLOCK_ALIGNMENT 64u #endif -struct memory_block { +struct memory_block { s32 size; u8 magic; u8 flag; diff --git a/src/game/process.c b/src/game/process.c index 7fd45c55..902eea3d 100644 --- a/src/game/process.c +++ b/src/game/process.c @@ -1,20 +1,24 @@ #include "game/process.h" #include "dolphin/os.h" -#include "game/jmp.h" #include "game/memory.h" -#define FAKE_RETADDR 0xA5A5A5A5 - -#ifdef TARGET_PC -#include +#ifdef __MWERKS__ +#include "game/jmp.h" #endif +#define FAKE_RETADDR 0xA5A5A5A5 + #define EXEC_NORMAL 0 #define EXEC_SLEEP 1 #define EXEC_CHILDWATCH 2 #define EXEC_KILLED 3 -static JMPBUF processjmpbuf; +#ifdef TARGET_PC +static cothread_t processthread; +static u8 thread_arg; +#else +static jmp_buf processjmpbuf; +#endif static Process *processtop; static Process *processcur; static u16 processcnt; @@ -74,8 +78,10 @@ Process *HuPrcCreate(void (*func)(void), u16 prio, u32 stack_size, s32 extra_siz } #ifdef TARGET_PC stack_size *= 2; -#endif + alloc_size = HuMemMemoryAllocSizeGet(sizeof(Process)) + HuMemMemoryAllocSizeGet(extra_size); +#else alloc_size = HuMemMemoryAllocSizeGet(sizeof(Process)) + HuMemMemoryAllocSizeGet(stack_size) + HuMemMemoryAllocSizeGet(extra_size); +#endif if (!(heap = HuMemDirectMalloc(HEAP_SYSTEM, alloc_size))) { OSReport("process> malloc error size %d\n", alloc_size); return NULL; @@ -87,10 +93,14 @@ Process *HuPrcCreate(void (*func)(void), u16 prio, u32 stack_size, s32 extra_siz process->stat = 0; process->prio = prio; process->sleep_time = 0; +#ifdef TARGET_PC + process->thread = co_create(stack_size, func); +#else process->base_sp = ((uintptr_t)HuMemMemoryAlloc(heap, stack_size, FAKE_RETADDR)) + stack_size - 8; - SETJMP(process->jump); - SETJMP_SET_IP(process->jump, func); - SETJMP_SET_SP(process->jump, process->base_sp); + gcsetjmp(&process->jump); + process->jump.lr = (u32)func; + process->jump.sp = process->base_sp; +#endif process->dtor = NULL; process->user_data = NULL; LinkProcess(&processtop, process); @@ -140,10 +150,16 @@ void HuPrcChildWatch() Process *curr = HuPrcCurrentGet(); if (curr->child) { curr->exec = EXEC_CHILDWATCH; - if (SETJMP(curr->jump) == 0) + +#ifdef TARGET_PC + thread_arg = 1; + co_switch(processthread); +#else + if (gcsetjmp(&curr->jump) == 0) { - LONGJMP(processjmpbuf, 1); + gclongjmp(&processjmpbuf, 1); } +#endif } } @@ -194,7 +210,11 @@ static void gcTerminateProcess(Process *process) } UnlinkProcess(&processtop, process); processcnt--; - LONGJMP(processjmpbuf, 2); +#ifdef TARGET_PC + thread_arg = 2; +#else + gclongjmp(&processjmpbuf, 2); +#endif } void HuPrcEnd() @@ -212,9 +232,14 @@ void HuPrcSleep(s32 time) process->exec = EXEC_SLEEP; process->sleep_time = time; } - if (SETJMP(process->jump) == 0) { - LONGJMP(processjmpbuf, 1); +#ifdef TARGET_PC + thread_arg = 1; + co_switch(processthread); +#else + if (gcsetjmp(&process->jump) == 0) { + gclongjmp(&processjmpbuf, 1); } +#endif } void HuPrcVSleep() @@ -243,15 +268,29 @@ void HuPrcCall(s32 tick) Process *process; s32 ret; processcur = processtop; - ret = SETJMP(processjmpbuf); +#ifdef TARGET_PC + thread_arg = ret = 0; + processthread = co_active(); + while (1) { + ret = thread_arg; + switch (ret) { + case 2: + co_delete(processcur->thread); +#else + ret = gcsetjmp(&processjmpbuf); while (1) { switch (ret) { case 2: +#endif HuMemDirectFree(processcur->heap); case 1: - #ifdef TARGET_PC - processcur = processcur->next; - #else + #ifdef NON_MATCHING + // avoid dereferencing NULL + if (!processcur) { + break; + } + #endif + // memory_block->magic if (((u8 *)(processcur->heap))[4] != 165) { printf("stack overlap error.(process pointer %x)\n", processcur); while (1) @@ -260,7 +299,6 @@ void HuPrcCall(s32 tick) else { processcur = processcur->next; } - #endif break; } process = processcur; @@ -272,6 +310,9 @@ void HuPrcCall(s32 tick) procfunc = process->jump.lr; #endif if ((process->stat & (PROCESS_STAT_PAUSE | PROCESS_STAT_UPAUSE)) && process->exec != EXEC_KILLED) { +#ifdef TARGET_PC + thread_arg = 1; +#endif ret = 1; continue; } @@ -284,23 +325,41 @@ void HuPrcCall(s32 tick) process->exec = EXEC_NORMAL; } } +#ifdef TARGET_PC + thread_arg = 1; +#endif ret = 1; break; case EXEC_CHILDWATCH: if (process->child) { - ret = 1; +#ifdef TARGET_PC + thread_arg = 1; +#endif + ret = 1; } else { process->exec = EXEC_NORMAL; +#ifdef TARGET_PC + thread_arg = 0; +#endif ret = 0; } break; case EXEC_KILLED: - SETJMP_SET_IP(process->jump, HuPrcEnd); +#ifdef TARGET_PC + HuPrcEnd(); + break; +#else + process->jump.lr = (u32)HuPrcEnd; +#endif case EXEC_NORMAL: - LONGJMP(process->jump, 1); +#ifdef TARGET_PC + co_switch(process->thread); +#else + gclongjmp(&process->jump, 1); +#endif break; } } @@ -371,4 +430,4 @@ void HuPrcAllUPause(s32 flag) process = process->next; } } -} +} \ No newline at end of file