From dcf44596d2c335c1ad82ea50f7e7d934e6bc1e52 Mon Sep 17 00:00:00 2001 From: Lucas Shaw <49287729+shawlucas@users.noreply.github.com> Date: Sun, 24 Oct 2021 10:59:14 -0400 Subject: [PATCH] Animation system updated, some more boot files decompiled (+6%), z_fcurve_data_skelanime decompiled (1 non-matching), some asm files split, etc (#89) * Progress on various files * gfxprint stuff * split some rodata, add iconv for rodata string parsing * z_std_dma rodata * 2 nonmatchings in gfxprint * mtxuty-cvt ok * more * match a function in idle.c * progress * Cleanup * Rename BgPolygon to CollisionPoly * progress * some effect stuff * more effect progress * updates * made suggested changes * z_effect_soft_sprite_old_init mostly ok * remove old effects enum * gamealloc.c OK * added more files * motor.c almost done * motor.c OK * updates * migration of two files * listalloc.c oK * z_fcurve_data_skelanime split * z_fcurve_data_skelanime.c decompiled * more files split * z_malloc.c OK * contpfs.c OK * fault.c rodata migrated * migrated fault_drawer rodata * update * update preprocess.py * renamed functions in z_skelanime * started z_skelanime cleanup * like halfway through fixing z_skelanime * animation system updated to meet oot standards * remove unused animation structs * rename matrix structs to fit oot * Add -woff 712 * fix diff_settings.py because i accidentally broke it before * fixed merge conflict, doesn't match though * It matches now * Updates * Fixed warnings...added gcc code syntax checking * Remove gcc check, added in Tharo's PR * warnings fixed (i think) * fixed all warnings i think * ok * not sure what to do * Fix all warnings i think (z_en_a_keep needs some file cleanup thouguh) * it matches if i do this * remove comment * accidentally put osPfsFreeBlocks in epilinkhandle.c * memcmp -> bcmp * change u32 size to size_t size, delete string.h because it caused unnecessary confusion with defining size_t twice * format.sh * MTXMODE_NEW and MTXMODE_APPLY to matrix functions * Made suggested changes * pragma sFaultDrawerFont instead of including in repo * add some functions to functions.h * Bss reordering fixed in z_collision_check...added hack to disasm.py * Updated z_en_a_keep.c * Missed suggestion in EnAObj_Destroy * . * update z_fcurve_Data_skelanime and z_skelanime with suggestions * devmgr.c ok * minor changes * Addressed comments * remove redundant file * gfxp -> dlist in game.c * updated actorfixer.py * fixed warnings in z_malloc * Change void* back to Actor* * format * Add the soft_sprit comments back * Rename SV->Flex * remove .common * run format * Update src/code/z_skelanime.c * u32 channel Co-authored-by: Lucas Shaw Co-authored-by: angie Co-authored-by: Kenix3 --- include/PR/mbi.h | 2 +- include/functions.h | 497 ++-- include/io/controller.h | 3 +- include/os.h | 7 +- include/os_internal.h | 10 + include/stdlib.h | 2 +- include/string.h | 7 - include/variables.h | 63 +- include/z64.h | 53 +- include/z64actor.h | 14 +- include/z64animation.h | 242 +- include/z64effect.h | 33 +- include/z64scene.h | 4 +- spec | 5 +- src/boot_O1/viextendvstart.c | 5 + src/boot_O2/__osMalloc.c | 8 +- src/boot_O2/__osMemset.c | 2 +- src/boot_O2/loadfragment2.c | 6 +- src/boot_O2/system_malloc.c | 14 +- src/boot_O2_g3/fault.c | 49 +- src/boot_O2_g3/fault_drawer.c | 6 +- src/boot_O2_g3/yaz0.c | 2 +- src/boot_O2_g3/z_std_dma.c | 8 +- src/code/PreRender.c | 4 +- src/code/TwoHeadArena.c | 10 +- src/code/TwoHeadGfxArena.c | 4 +- src/code/code_800F23E0.c | 5 - src/code/code_80122660.c | 5 - src/code/game.c | 181 +- src/code/gamealloc.c | 58 +- src/code/listalloc.c | 61 +- src/code/main.c | 22 +- src/code/padmgr.c | 2 +- src/code/sys_matrix.c | 68 +- src/code/z_DLF.c | 4 +- src/code/z_actor.c | 6 +- src/code/z_actor_dlftbls.c | 2 +- src/code/z_collision_check.c | 14 +- src/code/z_eff_footmark.c | 4 +- src/code/z_effect_soft_sprite.c | 4 +- src/code/z_effect_soft_sprite_old_init.c | 9 +- src/code/z_en_a_keep.c | 71 +- src/code/z_en_item00.c | 4 +- src/code/z_fcurve_data.c | 5 + src/code/z_fcurve_data_skelanime.c | 180 +- src/code/z_lights.c | 2 +- src/code/z_malloc.c | 53 +- src/code/z_pause.c | 5 + src/code/z_room.c | 2 +- src/code/z_scene.c | 12 +- src/code/z_skelanime.c | 2272 +++++++++-------- src/code/z_view.c | 24 +- src/code/z_vr_box.c | 18 +- src/libultra/io/contpfs.c | 307 ++- src/libultra/io/devmgr.c | 103 +- src/libultra/io/epilinkhandle.c | 11 +- src/libultra/io/epirawdma.c | 2 +- src/libultra/io/epirawread.c | 2 +- src/libultra/io/motor.c | 120 + src/libultra/io/pimgr.c | 6 +- src/libultra/io/pirawdma.c | 2 +- src/libultra/io/sprawdma.c | 2 +- src/libultra/libc/string.c | 2 +- .../actors/ovl_Arms_Hook/z_arms_hook.c | 18 +- .../actors/ovl_Arrow_Ice/z_arrow_ice.c | 15 +- .../ovl_Bg_Ctower_Gear/z_bg_ctower_gear.c | 12 +- .../actors/ovl_Bg_Haka_Tomb/z_bg_haka_tomb.c | 6 +- .../ovl_Bg_Hakugin_Post/z_bg_hakugin_post.c | 10 +- .../ovl_Bg_Kin2_Fence/z_bg_kin2_fence.c | 12 +- src/overlays/actors/ovl_Dm_Nb/z_dm_nb.c | 10 +- src/overlays/actors/ovl_Dm_Nb/z_dm_nb.h | 4 +- src/overlays/actors/ovl_Dm_Sa/z_dm_sa.c | 12 +- src/overlays/actors/ovl_Eff_Dust/z_eff_dust.c | 22 +- .../actors/ovl_En_Baisen/z_en_baisen.c | 16 +- src/overlays/actors/ovl_En_Bigpo/z_en_bigpo.c | 61 +- .../actors/ovl_En_Bji_01/z_en_bji_01.c | 19 +- src/overlays/actors/ovl_En_Bu/z_en_bu.c | 8 +- src/overlays/actors/ovl_En_Cha/z_en_cha.c | 4 +- .../actors/ovl_En_Clear_Tag/z_en_clear_tag.c | 58 +- src/overlays/actors/ovl_En_Dai/z_en_dai.c | 63 +- src/overlays/actors/ovl_En_Daiku/z_en_daiku.c | 26 +- .../actors/ovl_En_Daiku2/z_en_daiku2.c | 36 +- .../actors/ovl_En_Dekunuts/z_en_dekunuts.c | 96 +- src/overlays/actors/ovl_En_Dg/z_en_dg.c | 48 +- .../actors/ovl_En_Dinofos/z_en_dinofos.c | 148 +- src/overlays/actors/ovl_En_Dnb/z_en_dnb.c | 32 +- src/overlays/actors/ovl_En_Dnk/z_en_dnk.c | 36 +- src/overlays/actors/ovl_En_Dno/z_en_dno.c | 85 +- src/overlays/actors/ovl_En_Dnp/z_en_dnp.c | 46 +- src/overlays/actors/ovl_En_Dnq/z_en_dnq.c | 28 +- src/overlays/actors/ovl_En_Dns/z_en_dns.c | 46 +- .../actors/ovl_En_Dodongo/z_en_dodongo.c | 80 +- .../actors/ovl_En_Elfbub/z_en_elfbub.c | 8 +- .../actors/ovl_En_Encount2/z_en_encount2.c | 6 +- .../ovl_En_Ending_Hero/z_en_ending_hero.c | 9 +- .../ovl_En_Ending_Hero/z_en_ending_hero.h | 4 +- .../ovl_En_Ending_Hero2/z_en_ending_hero2.c | 9 +- .../ovl_En_Ending_Hero2/z_en_ending_hero2.h | 4 +- .../ovl_En_Ending_Hero3/z_en_ending_hero3.c | 9 +- .../ovl_En_Ending_Hero3/z_en_ending_hero3.h | 4 +- .../ovl_En_Ending_Hero4/z_en_ending_hero4.c | 9 +- .../ovl_En_Ending_Hero4/z_en_ending_hero4.h | 4 +- .../ovl_En_Ending_Hero5/z_en_ending_hero5.c | 9 +- .../ovl_En_Ending_Hero5/z_en_ending_hero5.h | 4 +- .../ovl_En_Ending_Hero6/z_en_ending_hero6.c | 14 +- src/overlays/actors/ovl_En_Fg/z_en_fg.c | 56 +- src/overlays/actors/ovl_En_Fg/z_en_fg.h | 4 +- .../actors/ovl_En_Firefly/z_en_firefly.c | 50 +- src/overlays/actors/ovl_En_Fsn/z_en_fsn.c | 23 +- src/overlays/actors/ovl_En_Fsn/z_en_fsn.h | 4 +- src/overlays/actors/ovl_En_Fu/z_en_fu.c | 51 +- .../actors/ovl_En_Ginko_Man/z_en_ginko_man.c | 40 +- .../actors/ovl_En_Ginko_Man/z_en_ginko_man.h | 4 +- .../actors/ovl_En_Guruguru/z_en_guruguru.c | 26 +- src/overlays/actors/ovl_En_Hg/z_en_hg.c | 30 +- src/overlays/actors/ovl_En_Hg/z_en_hg.h | 4 +- src/overlays/actors/ovl_En_Holl/z_en_holl.c | 2 +- src/overlays/actors/ovl_En_In/z_en_in.c | 60 +- src/overlays/actors/ovl_En_In/z_en_in.h | 4 +- .../actors/ovl_En_Invadepoh/z_en_invadepoh.c | 277 +- .../actors/ovl_En_Invadepoh/z_en_invadepoh.h | 4 +- .../actors/ovl_En_Jc_Mato/z_en_jc_mato.c | 2 +- src/overlays/actors/ovl_En_Kgy/z_en_kgy.c | 56 +- src/overlays/actors/ovl_En_Ma4/z_en_ma4.c | 35 +- src/overlays/actors/ovl_En_Ma4/z_en_ma4.h | 4 +- .../actors/ovl_En_Ma_Yto/z_en_ma_yto.c | 32 +- .../actors/ovl_En_Ma_Yto/z_en_ma_yto.h | 4 +- .../actors/ovl_En_Ma_Yts/z_en_ma_yts.c | 37 +- .../actors/ovl_En_Ma_Yts/z_en_ma_yts.h | 4 +- .../actors/ovl_En_Minifrog/z_en_minifrog.c | 27 +- .../actors/ovl_En_Minifrog/z_en_minifrog.h | 4 +- src/overlays/actors/ovl_En_Niw/z_en_niw.c | 29 +- src/overlays/actors/ovl_En_Niw/z_en_niw.h | 4 +- .../actors/ovl_En_Nutsball/z_en_nutsball.c | 4 +- src/overlays/actors/ovl_En_Ossan/z_en_ossan.c | 30 +- src/overlays/actors/ovl_En_Ossan/z_en_ossan.h | 4 +- src/overlays/actors/ovl_En_Owl/z_en_owl.c | 75 +- .../actors/ovl_En_Pamera/z_en_pamera.c | 46 +- .../actors/ovl_En_Pamera/z_en_pamera.h | 4 +- .../actors/ovl_En_Pametfrog/z_en_pametfrog.c | 148 +- .../actors/ovl_En_Pametfrog/z_en_pametfrog.h | 4 +- .../actors/ovl_En_Po_Fusen/z_en_po_fusen.c | 22 +- .../actors/ovl_En_Po_Fusen/z_en_po_fusen.h | 4 +- src/overlays/actors/ovl_En_Poh/z_en_poh.c | 83 +- .../actors/ovl_En_Railgibud/z_en_railgibud.c | 42 +- src/overlays/actors/ovl_En_Rd/z_en_rd.c | 132 +- src/overlays/actors/ovl_En_Rsn/z_en_rsn.c | 21 +- src/overlays/actors/ovl_En_Sb/z_en_sb.c | 33 +- src/overlays/actors/ovl_En_Sb/z_en_sb.h | 4 +- .../actors/ovl_En_Sellnuts/z_en_sellnuts.c | 46 +- src/overlays/actors/ovl_En_Skb/z_en_skb.c | 47 +- src/overlays/actors/ovl_En_Sob1/z_en_sob1.c | 51 +- src/overlays/actors/ovl_En_Sob1/z_en_sob1.h | 4 +- .../actors/ovl_En_Suttari/z_en_suttari.c | 66 +- src/overlays/actors/ovl_En_Sw/z_en_sw.c | 70 +- .../ovl_En_Syateki_Man/z_en_syateki_man.c | 26 +- .../actors/ovl_En_Thiefbird/z_en_thiefbird.c | 90 +- .../actors/ovl_En_Thiefbird/z_en_thiefbird.h | 2 +- src/overlays/actors/ovl_En_Toto/z_en_toto.c | 30 +- src/overlays/actors/ovl_En_Toto/z_en_toto.h | 4 +- src/overlays/actors/ovl_En_Trt/z_en_trt.c | 42 +- .../actors/ovl_En_Warp_Uzu/z_en_warp_uzu.c | 2 +- src/overlays/actors/ovl_En_Zot/z_en_zot.c | 32 +- src/overlays/actors/ovl_Obj_Aqua/z_obj_aqua.c | 4 +- src/overlays/actors/ovl_Obj_Bell/z_obj_bell.c | 16 +- .../actors/ovl_Obj_Etcetera/z_obj_etcetera.c | 16 +- .../ovl_Obj_Lightswitch/z_obj_lightswitch.c | 16 +- .../ovl_Obj_Moon_Stone/z_obj_moon_stone.c | 2 +- .../actors/ovl_Obj_Syokudai/z_obj_syokudai.c | 2 +- .../ovl_Obj_Tokei_Step/z_obj_tokei_step.c | 16 +- .../ovl_Obj_Warpstone/z_obj_warpstone.c | 16 +- .../ovl_Effect_Ss_D_Fire/z_eff_ss_d_fire.h | 4 +- .../gamestates/ovl_daytelop/z_daytelop.c | 2 +- .../gamestates/ovl_opening/z_opening.c | 2 +- src/overlays/gamestates/ovl_title/z_title.c | 6 +- tools/actorfixer.py | 123 +- tools/disasm/files.txt | 6 +- tools/disasm/functions.txt | 316 +-- tools/disasm/variables.txt | 47 +- tools/sizes/boot_functions.csv | 6 +- tools/sizes/code_functions.csv | 106 +- 181 files changed, 4953 insertions(+), 3658 deletions(-) delete mode 100644 include/string.h create mode 100644 src/boot_O1/viextendvstart.c delete mode 100644 src/code/code_800F23E0.c delete mode 100644 src/code/code_80122660.c create mode 100644 src/code/z_fcurve_data.c create mode 100644 src/code/z_pause.c create mode 100644 src/libultra/io/motor.c diff --git a/include/PR/mbi.h b/include/PR/mbi.h index 85410c912..736018c56 100644 --- a/include/PR/mbi.h +++ b/include/PR/mbi.h @@ -92,7 +92,7 @@ #define SEGMENT_ADDR(num, off) (((num) << 24) + (off)) #ifndef NULL -#define NULL 0 +#define NULL ((void*)0) #endif #endif /* !_MBI_H_ */ diff --git a/include/functions.h b/include/functions.h index 173b44d26..6801b986b 100644 --- a/include/functions.h +++ b/include/functions.h @@ -14,22 +14,23 @@ void bootproc(void); void Idle_ThreadEntry(void* arg); void ViConfig_UpdateVi(u32 arg0); void ViConfig_UpdateBlack(void); -s32 DmaMgr_DMARomToRam(u32 src, void* dst, u32 size); -void DmaMgr_DmaCallback0(OSPiHandle* pOParm1, OSIoMesg* pOParm2, s32 OParm3); +s32 DmaMgr_DMARomToRam(u32 src, void* dst, size_t size); +void DmaMgr_DmaCallback0(OSPiHandle* piHandle, OSIoMesg* mb, s32 direction); DmaEntry* DmaMgr_FindDmaEntry(u32 vromAddr); u32 DmaMgr_TranslateVromToRom(u32 vromAddr); s32 DmaMgr_FindDmaIndex(u32 vromAddr); const char* func_800809F4(u32 param_1); -void DmaMgr_ProcessMsg(DmaRequest* request); +void DmaMgr_ProcessMsg(DmaRequest* req); void DmaMgr_ThreadEntry(void* arg); -s32 DmaMgr_SendRequestImpl(DmaRequest* request, void* vramStart, u32 vromStart, u32 size, UNK_TYPE4 unused, OSMesgQueue* callback, void* callbackMesg); -s32 DmaMgr_SendRequest0(void* vramStart, u32 vromStart, u32 size); +s32 DmaMgr_SendRequestImpl(DmaRequest* request, void* vramStart, u32 vromStart, size_t size, UNK_TYPE4 unused, + OSMesgQueue* callback, void* callbackMesg); +s32 DmaMgr_SendRequest0(void* vramStart, u32 vromStart, size_t size); void DmaMgr_Start(void); void DmaMgr_Stop(void); void* Yaz0_FirstDMA(void); void* Yaz0_NextDMA(void* curSrcPos); s32 Yaz0_DecompressImpl(u8* hdr, u8* dst); -void Yaz0_Decompress(u32 romStart, void* dst, u32 size); +void Yaz0_Decompress(u32 romStart, void* dst, size_t size); void IrqMgr_AddClient(IrqMgr* irqmgr, IrqMgrClient* add, OSMesgQueue* msgQ); void IrqMgr_RemoveClient(IrqMgr* irqmgr, IrqMgrClient* remove); void IrqMgr_SendMesgForClient(IrqMgr* irqmgr, OSMesg msg); @@ -54,7 +55,7 @@ void rmonPrintf(const char* fmt, ...); void Fault_SleepImpl(u32 duration); void Fault_AddClient(FaultClient* client, fault_client_func callback, void* param0, void* param1); void Fault_RemoveClient(FaultClient* client); -void Fault_AddAddrConvClient(FaultAddrConvClient* client, fault_address_converter_func callback, void* param); +void Fault_AddAddrConvClient(FaultAddrConvClient* client, FaultAddrConvFunc callback, void* param); void Fault_RemoveAddrConvClient(FaultAddrConvClient* client); void* Fault_ConvertAddress(void* addr); void Fault_Sleep(u32 duration); @@ -75,7 +76,7 @@ void osSyncPrintfThreadContext(OSThread* t); OSThread* Fault_FindFaultedThread(void); void Fault_Wait5Seconds(void); void Fault_WaitForButtonCombo(void); -void Fault_DrawMemDumpPage(char* title, u32* addr, u32 param_3); +void Fault_DrawMemDumpPage(const char* title, u32* addr, u32 param_3); void Fault_DrawMemDump(u32 pc, u32 sp, u32 unk0, u32 unk1); void Fault_FindNextStackCall(u32** sp, u32** pc, u32** ra); void Fault_DrawStackTrace(OSThread* t, u32 flags); @@ -116,7 +117,7 @@ s32 Load_LoadOverlay(u32 vRomStart, u32 vRomEnd, u32 vRamStart, u32 allocatedVRa void* Load_AllocateAndLoad(u32 vRomStart, u32 vRomEnd, u32 vRamStart); void Load2_Relocate(u32 allocatedVRamAddr, OverlayRelocationSection* overlayInfo, u32 vRamStart); s32 Load2_LoadOverlay(u32 vRomStart, u32 vRomEnd, u32 vRamStart, u32 vRamEnd, u32 allocatedVRamAddr); -void* Load2_AllocateAndLoad(u32 vRomStart, u32 vRomEnd, u32 vRamStart, u32 vRamEnd); +void* Overlay_AllocateAndLoad(u32 vRomStart, u32 vRomEnd, u32 vRamStart, u32 vRamEnd); void PadUtils_Init(Input* input); void func_80085150(void); void PadUtils_ResetPressRel(Input* input); @@ -155,8 +156,8 @@ void GfxPrint_Open(GfxPrint* printer, Gfx* dList); Gfx* GfxPrint_Close(GfxPrint* printer); s32 GfxPrint_VPrintf(GfxPrint* printer, const char* fmt, va_list args); s32 GfxPrint_Printf(GfxPrint* printer, const char* fmt, ...); -// void MtxConv_F2L(void); -// void MtxConv_L2F(void); +void MtxConv_F2L(MatrixInternal* m1, MtxF* m2); +void MtxConv_L2F(MtxF* m1, MatrixInternal* m2); void __assert(const char* file, u32 lineNum); // void func_800862B4(void); void* SystemArena_MallocMin1(u32 size); @@ -201,14 +202,14 @@ s32 func_80086D40(f64 param_1); f64 func_80086D6C(f64 param_1); s32 func_80086D8C(f32 param_1); s32 func_80086DAC(f64 param_1); -void* SystemArena_Malloc(u32 size); -void* SystemArena_MallocR(u32 size); -void* SystemArena_Realloc(void* oldPtr, u32 newSize); +void* SystemArena_Malloc(size_t size); +void* SystemArena_MallocR(size_t size); +void* SystemArena_Realloc(void* oldPtr, size_t newSize); void SystemArena_Free(void* ptr); -void* SystemArena_Calloc(u32 elements, u32 size); -void SystemArena_AnalyzeArena(u32* maxFreeBlock, u32* bytesFree, u32* bytesAllocated); +void* SystemArena_Calloc(u32 elements, size_t size); +void SystemArena_AnalyzeArena(size_t* maxFreeBlock, size_t* bytesFree, size_t* bytesAllocated); u32 SystemArena_CheckArena(void); -void SystemArena_InitArena(void* start, u32 size); +void SystemArena_InitArena(void* start, size_t size); void SystemArena_Cleanup(void); u8 SystemArena_IsInitialized(void); s32 Rand_Next(void); @@ -223,15 +224,15 @@ void ArenaImpl_LockInit(Arena* heap); void ArenaImpl_Lock(Arena* heap); void ArenaImpl_Unlock(Arena* heap); ArenaNode* ArenaImpl_GetLastBlock(Arena* param_1); -void __osMallocInit(Arena* heap, void* heapBase, u32 heapSize); +void __osMallocInit(Arena* heap, void* heapBase, size_t heapSize); void __osMallocAddBlock(Arena* heap, void* start, s32 size); void __osMallocCleanup(Arena* heap); u8 __osMallocIsInitalized(Arena* heap); -void* __osMalloc(Arena* heap, u32 size); -void* __osMallocR(Arena* heap, u32 size); +void* __osMalloc(Arena* heap, size_t size); +void* __osMallocR(Arena* heap, size_t size); void __osFree(Arena* heap, void* ptr); -void* __osRealloc(Arena* heap, void* oldPtr, u32 newSize); -void __osAnalyzeArena(Arena* heap, u32* maxFreeBlock, u32* bytesFree, u32* bytesAllocated); +void* __osRealloc(Arena* heap, void* oldPtr, size_t newSize); +void __osAnalyzeArena(Arena* heap, size_t* maxFreeBlock, size_t* bytesFree, size_t* bytesAllocated); u32 __osCheckArena(Arena* heap); void* proutSprintf(void* s, const char* buf, size_t n); s32 vsprintf(char* dst, char* fmt, va_list args); @@ -282,7 +283,7 @@ void __osDequeueThread(OSThread** param_1, OSThread* param_2); void osDestroyThread(OSThread* puParm1); // void __osVoiceCheckResult(void); void bzero(void* begin, s32 length); -// void osSetRumble(void); +s32 osSetRumble(OSPfs* pfs, u32 vibrate); // void osSetUpMempakWrite(void); // void osProbeRumblePak(void); void __osSiCreateAccessQueue(void); @@ -306,9 +307,9 @@ void __osInitialize_autodetect(void); void* osViGetNextFramebuffer(void); void guPerspectiveF(float mf[4][4], u16* perspNorm, f32 fovy, f32 aspect, f32 near, f32 far, f32 scale); void guPerspective(Mtx* m, u16* perspNorm, f32 fovy, f32 aspect, f32 near, f32 far, f32 scale); -s32 __osSpRawStartDma(s32 direction, void* devAddr, void* dramAddr, u32 size); +s32 __osSpRawStartDma(s32 direction, void* devAddr, void* dramAddr, size_t size); s32 __osSiRawStartDma(s32 direction, void* dramAddr); -// void osEPiLinkHandle(void); +s32 osEPiLinkHandle(OSPiHandle* handle); void osViBlack(u8 active); s32 __osSiRawReadIo(u32 devAddr, u32* data); OSId osGetThreadId(OSThread* t); @@ -334,14 +335,14 @@ void __osPiGetAccess(void); void __osPiRelAccess(void); void __osDevMgrMain(void* arg); // void func_8008C640(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE1 param_5, UNK_TYPE1 param_6, UNK_TYPE1 param_7, UNK_TYPE1 param_8, UNK_TYPE4 param_9, UNK_TYPE4 param_10, UNK_TYPE4 param_11, UNK_TYPE4 param_12, UNK_TYPE4 param_13, UNK_TYPE4 param_14, UNK_TYPE4 param_15, UNK_TYPE4 param_16, UNK_TYPE4 param_17, UNK_TYPE4 param_18); -s32 osPiRawStartDma(s32 direction, u32 devAddr, void* dramAddr, u32 size); -// void __osSumcalc(void); -// void __osIdCheckSum(void); -// void __osRepairPackId(void); +s32 __osPiRawStartDma(s32 direction, u32 devAddr, void* dramAddr, size_t size); +u16 __osSumcalc(u8* ptr, s32 length); +s32 __osIdCheckSum(u16* ptr, u16* checkSum, u16* idSum); +s32 __osRepairPackId(OSPfs* pfs, __OSPackId* badid, __OSPackId* newid); // void __osCheckPackId(void); // void __osGetId(void); -// void __osCheckId(void); -// void __osPfsRWInode(void); +s32 __osCheckId(OSPfs* pfs); +s32 __osPfsRWInode(OSPfs* pfs, __OSInode* inode, u8 flag, u8 bank); u32 osGetCount(void); void guMtxL2F(MtxF* m1, Mtx* m2); u32 osGetMemSize(void); @@ -377,11 +378,11 @@ s32 __osSiDeviceBusy(void); s32 osJamMesg(OSMesgQueue* mq, OSMesg msg, s32 flag); void osSetThreadPri(OSThread* t, OSPri pri); OSPri osGetThreadPri(OSThread* t); -s32 osEPiRawReadIo(OSPiHandle* handle, u32 devAddr, u32* data); +s32 __osEPiRawReadIo(OSPiHandle* handle, u32 devAddr, u32* data); void osViSwapBuffer(void* frameBufPtr); void guPositionF(float mf[4][4], f32 r, f32 p, f32 h, f32 s, f32 x, f32 y, f32 z); void guPosition(Mtx* m, f32 r, f32 p, f32 h, f32 s, f32 x, f32 y, f32 z); -s32 osEPiRawStartDma(OSPiHandle*, s32, u32, void*, u32); +s32 __osEPiRawStartDma(OSPiHandle* handle, s32 direction, u32 cartAddr, void* dramAddr, size_t size); OSYieldResult osSpTaskYielded(OSTask* task); s32 bcmp(void* __s1, void* __s2, size_t __n); OSTime osGetTime(void); @@ -426,7 +427,7 @@ s32 osPfsIsPlug(OSMesgQueue* queue, u8* pattern); s32 __osVoiceGetStatus(OSMesgQueue* mq, s32 port, u8* status); OSPiHandle* osCartRomInit(void); // void guS2DInitBg(void); -// s32 __osPfsSelectBank(OSPfs* pfs, UNK_TYPE4 param_2); +s32 __osPfsSelectBank(OSPfs* pfs, u8 bank); s32 osContSetCh(u8 ch); u32 __osSetFpcCsr(u32 value); u32 __osGetFpcCsr(void); @@ -483,16 +484,11 @@ void __osSetHWIntrRoutine(s32 idx, OSMesgQueue* queue, OSMesg msg); u32 __osGetWatchLo(void); void __osSetWatchLo(u32 value); f32 fmodf(f32 dividend, f32 divisor); -void* __osMemset(void* ptr, s32 val, u32 size); +void* __osMemset(void* ptr, s32 val, size_t size); s32 __osStrcmp(const char* str1, const char* str2); char* __osStrcpy(char* dst, const char* src); void* __osMemcpy(void* dst, void* src, size_t size); -void EnAObj_Init(ActorEnAObj* this, GlobalContext* globalCtx); -void EnAObj_Destroy(ActorEnAObj* this, GlobalContext* globalCtx); -void EnAObj_Update1(ActorEnAObj* this, GlobalContext* globalCtx); -void EnAObj_Update2(ActorEnAObj* this, GlobalContext* globalCtx); -void EnAObj_Update(ActorEnAObj* this, GlobalContext* globalCtx); -void EnAObj_Draw(ActorEnAObj* this, GlobalContext* globalCtx); + // void EnItem00_SetObject(EnItem00* this, GlobalContext* globalCtx, f32* shadowOffset, f32* shadowScale); // void EnItem00_Init(Actor* thisx, GlobalContext* globalCtx); // void EnItem00_Destroy(Actor* thisx, GlobalContext* globalCtx); @@ -681,10 +677,10 @@ void func_800B3030(GlobalContext* globalCtx, Vec3f* pos, Vec3f* velocity, Vec3f* // void func_800B31BC(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE4 param_6); void EffectSsIceSmoke_Spawn(GlobalContext* globalCtx, Vec3f* pos, Vec3f* velocity, Vec3f* accel, s16 scale); // void EffectSsIceBlock_Spawn(UNK_TYPE4 uParm1, Vec3f* pzParm2, Vec3f* pzParm3, Vec3f* pzParm4, UNK_TYPE2 param_5); -void FlagSet_Update(GameState* gamestate); +void FlagSet_Update(GameState* gameState); void FlagSet_Draw(GameState* gameState); -void DLF_LoadGameState(GameStateOverlay* gameState); -void DLF_FreeGameState(GameStateOverlay* gameState); +void Overlay_LoadGameState(GameStateOverlay* gameState); +void Overlay_FreeGameState(GameStateOverlay* gameState); void Actor_PrintLists(ActorContext* actorCtx); void ActorShape_Init(ActorShape* actorShape, f32 yOffset, ActorShadowFunc func, f32 scale); void ActorShadow_Draw(Actor* actor, Lights* mapper, GlobalContext* globalCtx, Gfx* displayList, Color_RGBA8* color); @@ -1690,14 +1686,16 @@ s16 ActorCutscene_GetCurrentCamera(s16 index); s32 func_800F22C4(s16 param_1, Actor* actor); void ActorCutscene_SetReturnCamera(s16 index); // void func_800F23E0(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6); -// void func_800F2478(void); -// void func_800F2620(void); -// void func_800F2650(void); -// void func_800F26C0(void); -// void func_800F26F0(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6); -// void func_800F2728(void); -// void func_800F29A0(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7); -// void func_800F2CD8(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7); +f32 func_800F2478(f32 target, TransformData* transData, s32 refIdx); +void SkelCurve_Clear(SkelAnimeCurve* skelCurve); +s32 SkelCurve_Init(GlobalContext* globalCtx, SkelAnimeCurve* skelCurve, SkelCurveLimbList* limbListSeg, + TransformUpdateIndex* transUpdIdx); +void SkelCurve_Destroy(GlobalContext* globalCtx, SkelAnimeCurve* skelCurve); +void SkelCurve_SetAnim(SkelAnimeCurve* skelCurve, TransformUpdateIndex* transUpdIdx, f32 arg2, f32 animFinalFrame, + f32 animCurFrame, f32 animSpeed); +s32 SkelCurve_Update(GlobalContext* globalCtx, SkelAnimeCurve* skelCurve); +void SkelCurve_Draw(Actor* actor, GlobalContext* globalCtx, SkelAnimeCurve* skelCurve, + OverrideCurveLimbDraw overrideLimbDraw, PostCurveLimbDraw postLimbDraw, s32 lod, Actor* thisx); void FireObj_InitWithParams(GlobalContext* globalCtx, FireObj* fire, FireObjInitParams* init); void FireObj_SetState(FireObj* fire, f32 dynamicSizeStep, u8 newState); void FireObj_SetPosition(FireObj* fire, Vec3f* pos); @@ -1919,16 +1917,16 @@ Lights* Lights_NewAndDraw(GraphicsContext* gfxCtx, u8 ambientR, u8 ambientG, u8 Lights* Lights_New(GraphicsContext* gfxCtx, u8 ambientR, u8 ambientG, u8 ambientB); void Lights_GlowCheck(GlobalContext* globalCtx); void Lights_DrawGlow(GlobalContext* globalCtx); -void* zelda_malloc(u32 size); -void* zelda_mallocR(u32 size); -void* zelda_realloc(void* oldPtr, u32 newSize); -void zelda_free(void* param_1); -void* zelda_calloc(u32 num, u32 size); -void MainHeap_AnalyzeArena(u32* maxFreeBlock, u32* bytesFree, u32* bytesAllocated); -// s32 MainHeap_Check(void); -void MainHeap_Init(u32 base, u32 size); -// void MainHeap_Cleanup(void); -// u32 MainHeap_IsInitialized(void); +void* ZeldaArena_Malloc(size_t size); +void* ZeldaArena_MallocR(size_t size); +void* ZeldaArena_Realloc(void* oldPtr, size_t newSize); +void ZeldaArena_Free(void* param_1); +void* ZeldaArena_Calloc(u32 num, size_t size); +void ZeldaArena_GetSizes(size_t* maxFreeBlock, size_t* bytesFree, size_t* bytesAllocated); +void ZeldaArena_Check(); +void ZeldaArena_Init(void* start, size_t size); +void ZeldaArena_Cleanup(); +u8 ZeldaArena_IsInitialized(); // void func_80102E40(void); // void func_80102E90(void); // void func_80102EA4(void); @@ -2442,7 +2440,7 @@ void func_8012F1BC(s16 sceneIndex); s16 func_8012F22C(s16 sceneIndex); void func_8012F278(GlobalContext* globalCtx); s32 Object_Spawn(ObjectContext* objectCtx, s16 id); -void Object_InitBank(GameState* gamestate, ObjectContext* objectCtx); +void Object_InitBank(GameState* gameState, ObjectContext* objectCtx); void Object_UpdateBank(ObjectContext* objectCtx); s32 Object_GetIndex(ObjectContext* objectCtx, s16 id); s32 Object_IsLoaded(ObjectContext* objectCtx, s32 index); @@ -2461,7 +2459,7 @@ void Scene_HeaderCmdObjectList(GlobalContext* globalCtx, SceneCmd* cmd); void Scene_HeaderCmdLightList(GlobalContext* globalCtx, SceneCmd* cmd); void Scene_HeaderCmdPathList(GlobalContext* globalCtx, SceneCmd* cmd); void Scene_HeaderCmdTransiActorList(GlobalContext* globalCtx, SceneCmd* cmd); -void Door_InitContext(GameState* gamestate, DoorContext* doorCtx); +void Door_InitContext(GameState* gameState, DoorContext* doorCtx); void Scene_HeaderCmdEnvLightSettings(GlobalContext* globalCtx, SceneCmd* cmd); s32 Scene_LoadAreaTextures(GlobalContext* globalCtx, s32 fileIndex); void Scene_HeaderCmdSkyboxSettings(GlobalContext* globalCtx, SceneCmd* cmd); @@ -2544,96 +2542,115 @@ s32 Entrance_GetTransitionFlags(u16 entranceIndex); // void func_80132E9C(void); // void func_80132FDC(void); // void func_80133000(void); -s32 func_80133038(GlobalContext* globalCtx, UNK_PTR arg1, struct_80133038_arg2* arg2); -void SkelAnime_LodDrawLimb(GlobalContext* globalCtx, s32 limbIndex, void** skeleton, Vec3s* limbDrawTable, OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, Actor* actor, s32 dListIndex); -void SkelAnime_LodDraw(GlobalContext* globalCtx, void** skeleton, Vec3s* limbDrawTable, OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, Actor* actor, s32 dListIndex); -void SkelAnime_LodDrawLimbSV(GlobalContext* globalCtx, s32 limbIndex, void** skeleton, Vec3s* limbDrawTable, OverrideLimbDrawSV overrideLimbDraw, PostLimbDrawSV postLimbDraw, Actor* actor, s32 dListIndex, RSPMatrix** mtx); -void SkelAnime_LodDrawSV(GlobalContext* globalCtx, void** skeleton, Vec3s* limbDrawTable, s32 dListCount, OverrideLimbDrawSV overrideLimbDraw, PostLimbDrawSV postLimbDraw, Actor* actor, s32 dListIndex); -void SkelAnime_DrawLimb(GlobalContext* globalCtx, s32 limbIndex, void** skeleton, Vec3s* limbDrawTable, OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, Actor* actor); -void SkelAnime_Draw(GlobalContext* globalCtx, void** skeleton, Vec3s* limbDrawTable, OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, Actor* actor); -void SkelAnime_DrawLimbSV(GlobalContext* globalCtx, s32 limbIndex, void** skeleton, Vec3s* limbDrawTable, OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, Actor* actor, RSPMatrix** limbMatricies); -void SkelAnime_DrawSV(GlobalContext* globalCtx, void** skeleton, Vec3s* limbDrawTable, s32 dListCount, OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, Actor* actor); -void func_80134148(GlobalContext* globalCtx, s32 limbIndex, void** skeleton, Vec3s* limbDrawTable, OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, UnkActorDraw unkDraw, Actor* actor, RSPMatrix** mtx); -void func_801343C0(GlobalContext* globalCtx, void** skeleton, Vec3s* limbDrawTable, s32 dListCount, OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, UnkActorDraw unkDraw, Actor* actor); -void SkelAnime_AnimateFrame(AnimationHeader* animationSeg, s32 currentFrame, s32 limbCount, Vec3s* dst); -s16 SkelAnime_GetTotalFrames(AnimationHeaderCommon* animationSeg); -s16 SkelAnime_GetFrameCount(AnimationHeaderCommon* animationSeg); -Gfx* SkelAnime_Draw2Limb(GlobalContext* globalCtx, s32 limbIndex, void** skeleton, Vec3s* limbDrawTable, OverrideLimbDraw2 overrideLimbDraw, PostLimbDraw2 postLimbDraw, Actor* actor, Gfx* gfx); -Gfx* SkelAnime_Draw2(GlobalContext* globalCtx, void** skeleton, Vec3s* limbDrawTable, OverrideLimbDraw2 overrideLimbDraw, PostLimbDraw2 postLimbDraw, Actor* actor, Gfx* gfx); -Gfx* SkelAnime_DrawLimbSV2(GlobalContext* globalCtx, s32 limbIndex, void** skeleton, Vec3s* limbDrawTable, OverrideLimbDraw2 overrideLimbDraw, PostLimbDraw2 postLimbDraw, Actor* actor, RSPMatrix** mtx, Gfx* gfx); -Gfx* SkelAnime_DrawSV2(GlobalContext* globalCtx, void** skeleton, Vec3s* limbDrawTable, s32 dListCount, OverrideLimbDraw2 overrideLimbDraw, PostLimbDraw2 postLimbDraw, Actor* actor, Gfx* gfx); -s32 func_80134FFC(s32 arg0, s32 arg1, Vec3s* dst); -s16 func_801353D4(AnimationHeaderCommon* animationSeg); -s16 SkelAnime_GetTotalFrames2(AnimationHeaderCommon* animationSeg); -s16 SkelAnime_GetFrameCount2(AnimationHeaderCommon* animationSeg); -void SkelAnime_InterpolateVec3s(s32 limbCount, Vec3s* dst, Vec3s* vec2, Vec3s* vec3, f32 unkf); -void SkelAnime_AnimationCtxReset(AnimationContext* animationCtx); -void func_801358D4(GlobalContext* globalCtx); -void func_801358F4(GlobalContext* globalCtx); -AnimationEntry* SkelAnime_NextEntry(AnimationContext* animationCtx, AnimationType type); -void SkelAnime_LoadLinkAnimetion(GlobalContext* globalCtx, LinkAnimationHeader* linkAnimetionSeg, s32 frame, s32 limbCount, void* ram); -void SkelAnime_LoadAnimationType1(GlobalContext* globalCtx, s32 vecCount, Vec3s* dst, Vec3s* src); -void SkelAnime_LoadAnimationType2(GlobalContext* globalCtx, s32 limbCount, Vec3s* arg2, Vec3s* arg3, f32 arg4); -void SkelAnime_LoadAnimationType3(GlobalContext* globalCtx, s32 vecCount, Vec3s* dst, Vec3s* src, u8* index); -void SkelAnime_LoadAnimationType4(GlobalContext* globalCtx, s32 vecCount, Vec3s* dst, Vec3s* src, u8* index); -void SkelAnime_LoadAnimationType5(GlobalContext* globalCtx, Actor* actor, SkelAnime* skelAnime, f32 arg3); -void SkelAnime_LinkAnimetionLoaded(GlobalContext* globalCtx, AnimationEntryType0* entry); -void SkelAnime_AnimationType1Loaded(GlobalContext* globalCtx, AnimationEntryType1* entry); -void SkelAnime_AnimationType2Loaded(GlobalContext* globalCtx, AnimationEntryType2* entry); -void SkelAnime_AnimationType3Loaded(GlobalContext* globalCtx, AnimationEntryType3* entry); -void SkelAnime_AnimationType4Loaded(GlobalContext* globalCtx, AnimationEntryType4* entry); -void SkelAnime_AnimationType5Loaded(GlobalContext* globalCtx, AnimationEntryType5* entry); -void func_80135EE8(GlobalContext* globalCtx, AnimationContext* animationCtx); -void SkelAnime_InitLinkAnimetion(GlobalContext* globalCtx, SkelAnime* skelAnime, FlexSkeletonHeader* skeletonHeaderSeg, LinkAnimationHeader* linkAnimationHeaderSeg, s32 flags, Vec3s* limbDrawTbl, Vec3s* transitionDrawTbl, s32 limbBufCount); -void func_801360A8(SkelAnime* skelAnime); -s32 func_801360E0(GlobalContext* globalCtx, SkelAnime* skelAnime); -s32 func_80136104(GlobalContext* globalCtx, SkelAnime* skelAnime); -void func_801361BC(GlobalContext* globalCtx, SkelAnime* skelAnime); -s32 func_80136288(GlobalContext* globalCtx, SkelAnime* skelAnime); -s32 func_8013631C(GlobalContext* globalCtx, SkelAnime* skelAnime); -void SkelAnime_SetTransition(GlobalContext* globalCtx, SkelAnime* skelAnime, f32 transitionRate); -void SkelAnime_ChangeLinkAnim(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimationHeader* linkAnimationHeaderSeg, f32 playbackSpeed, f32 frame, f32 frameCount, u8 animationMode, f32 transitionRate); -void SkelAnime_ChangeLinkAnimDefaultStop(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimationHeader* linkAnimationHeaderSeg); -void SkelAnime_ChangeLinkAnimPlaybackStop(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimationHeader* linkAnimationHeaderSeg, f32 playbackSpeed); -void SkelAnime_ChangeLinkAnimDefaultRepeat(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimationHeader* linkAnimationHeaderSeg); -void SkelAnime_ChangeLinkAnimPlaybackRepeat(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimationHeader* linkAnimationHeaderSeg, f32 playbackSpeed); -void func_8013670C(GlobalContext* globalCtx, SkelAnime* skelAnime); -void func_8013673C(GlobalContext* globalCtx, SkelAnime* skelAnime); -void func_8013676C(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimationHeader* linkAnimationHeaderSeg, f32 frame); -void func_801367B0(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimationHeader* linkAnimationHeaderSeg, f32 frame); -void func_801367F4(GlobalContext* globalCtx, SkelAnime* skelAnime, f32 frame); -void func_8013682C(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimationHeader* linkAnimationHeaderSeg, f32 transitionFrame, LinkAnimationHeader* LinkAnimationHeaderSeg2, f32 frame, f32 transitionRate, Vec3s* limbDrawTbl); -void func_801368CC(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimationHeader* linkAnimationHeaderSeg, f32 transitionFrame, LinkAnimationHeader* LinkAnimationHeaderSeg2, f32 frame, f32 transitionRate, Vec3s* limbDrawTbl); -void SkelAnime_SetModeStop(SkelAnime* skelAnime); -s32 func_80136990(SkelAnime* skelAnime, f32 arg1, f32 updateRate); -s32 func_80136A48(SkelAnime* skelAnime, f32 arg1); -void SkelAnime_Init(GlobalContext* globalCtx, SkelAnime* skelAnime, SkeletonHeader* skeletonHeaderSeg, AnimationHeader* animationSeg, Vec3s* limbDrawTbl, Vec3s* transitionDrawTable, s32 limbCount); -void SkelAnime_InitSV(GlobalContext* globalCtx, SkelAnime* skelAnime, FlexSkeletonHeader* skeletonHeaderSeg, AnimationHeader* animationSeg, Vec3s* limbDrawTbl, Vec3s* transitionDrawTable, s32 limbCount); +UNK_TYPE func_80133038(GlobalContext* globalCtx, UNK_TYPE* arg1, struct_80133038_arg2* arg2); +void SkelAnime_DrawLimbLod(GlobalContext* globalCtx, s32 limbIndex, void** skeleton, Vec3s* jointTable, OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, Actor* actor, s32 lod); +void SkelAnime_DrawLod(GlobalContext* globalCtx, void** skeleton, Vec3s* jointTable, OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, Actor* actor, s32 lod); +void SkelAnime_DrawFlexLimbLod(GlobalContext* globalCtx, s32 limbIndex, void** skeleton, Vec3s* jointTable, OverrideLimbDrawFlex overrideLimbDraw, PostLimbDrawFlex postLimbDraw, Actor* actor, s32 lod, Mtx** mtx); +void SkelAnime_DrawFlexLod(GlobalContext* globalCtx, void** skeleton, Vec3s* jointTable, s32 dListCount, + OverrideLimbDrawFlex overrideLimbDraw, PostLimbDrawFlex postLimbDraw, Actor* actor, + s32 lod); +void SkelAnime_DrawLimbOpa(GlobalContext* globalCtx, s32 limbIndex, void** skeleton, Vec3s* jointTable, + OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, Actor* actor); +void SkelAnime_DrawOpa(GlobalContext* globalCtx, void** skeleton, Vec3s* jointTable, + OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, Actor* actor); +void SkelAnime_DrawFlexLimbOpa(GlobalContext* globalCtx, s32 limbIndex, void** skeleton, Vec3s* jointTable, + OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, Actor* actor, + Mtx** limbMatricies); +void SkelAnime_DrawFlexOpa(GlobalContext* globalCtx, void** skeleton, Vec3s* jointTable, s32 dListCount, + OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, Actor* actor); +void func_80134148(GlobalContext* globalCtx, s32 limbIndex, void** skeleton, Vec3s* jointTable, + OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, UnkActorDraw unkDraw, Actor* actor, + Mtx** mtx); +void func_801343C0(GlobalContext* globalCtx, void** skeleton, Vec3s* jointTable, s32 dListCount, + OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, UnkActorDraw unkDraw, Actor* actor); +void SkelAnime_GetFrameData(AnimationHeader* animationSeg, s32 currentFrame, s32 limbCount, Vec3s* dst); +s16 Animation_GetLength(void* animation); +s16 Animation_GetLastFrame(void* animation); +Gfx* SkelAnime_DrawLimb(GlobalContext* globalCtx, s32 limbIndex, void** skeleton, Vec3s* jointTable, + OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, Actor* actor, Gfx* gfx); +Gfx* SkelAnime_Draw(GlobalContext* globalCtx, void** skeleton, Vec3s* jointTable, + OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, Actor* actor, Gfx* gfx); +Gfx* SkelAnime_DrawFlexLimb(GlobalContext* globalCtx, s32 limbIndex, void** skeleton, Vec3s* jointTable, + OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, Actor* actor, + Mtx** mtx, Gfx* gfx); +Gfx* SkelAnime_DrawFlex(GlobalContext* globalCtx, void** skeleton, Vec3s* jointTable, s32 dListCount, + OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, Actor* actor, Gfx* gfx); +s16 SkelAnime_GetFrameData2(LegacyAnimationHeader* animation, s32 frame, Vec3s* frameTable); +s16 Animation_GetLimbCount2(LegacyAnimationHeader* animation); +s16 Animation_GetLength2(LegacyAnimationHeader* animation); +s16 Animation_GetLastFrame2(LegacyAnimationHeader* animation); +void SkelAnime_InterpFrameTable(s32 limbCount, Vec3s* dst, Vec3s* vec2, Vec3s* vec3, f32 unkf); +void AnimationContext_Reset(AnimationContext* animationCtx); +void AnimationContext_SetNextQueue(GlobalContext* globalCtx); +void AnimationContext_DisableQueue(GlobalContext* globalCtx); +AnimationEntry* AnimationContext_AddEntry(AnimationContext* animationCtx, AnimationType type); +void AnimationContext_SetLoadFrame(GlobalContext* globalCtx, LinkAnimationHeader* animation, s32 frame, + s32 limbCount, Vec3s* frameTable); +void AnimationContext_SetCopyAll(GlobalContext* globalCtx, s32 vecCount, Vec3s* dst, Vec3s* src); +void AnimationContext_SetInterp(GlobalContext* globalCtx, s32 limbCount, Vec3s* arg2, Vec3s* arg3, f32 arg4); +void AnimationContext_SetCopyTrue(GlobalContext* globalCtx, s32 vecCount, Vec3s* dst, Vec3s* src, u8* index); +void AnimationContext_SetCopyFalse(GlobalContext* globalCtx, s32 vecCount, Vec3s* dst, Vec3s* src, u8* index); +void AnimationContext_SetMoveActor(GlobalContext* globalCtx, Actor* actor, SkelAnime* skelAnime, f32 arg3); +void AnimationContext_LoadFrame(GlobalContext* globalCtx, AnimationEntryData* data); +void AnimationContext_CopyAll(GlobalContext* globalCtx, AnimationEntryData* data); +void AnimationContext_Interp(GlobalContext* globalCtx, AnimationEntryData* data); +void AnimationContext_CopyTrue(GlobalContext* globalCtx, AnimationEntryData* data); +void AnimationContext_CopyFalse(GlobalContext* globalCtx, AnimationEntryData* data); +void AnimationContext_MoveActor(GlobalContext* globalCtx, AnimationEntryData* data); +void AnimationContext_Update(GlobalContext* globalCtx, AnimationContext* animationCtx); +void SkelAnime_InitLink(GlobalContext* globalCtx, SkelAnime* skelAnime, FlexSkeletonHeader* skeletonHeaderSeg, + LinkAnimationHeader* animation, s32 flags, Vec3s* jointTable, + Vec3s* morphTable, s32 limbBufCount); +void LinkAnimation_SetUpdateFunction(SkelAnime* skelAnime); +s32 LinkAnimation_Update(GlobalContext* globalCtx, SkelAnime* skelAnime); +s32 LinkAnimation_Morph(GlobalContext* globalCtx, SkelAnime* skelAnime); +void LinkAnimation_AnimateFrame(GlobalContext* globalCtx, SkelAnime* skelAnime); +s32 LinkAnimation_Loop(GlobalContext* globalCtx, SkelAnime* skelAnime); +s32 LinkAnimation_Once(GlobalContext* globalCtx, SkelAnime* skelAnime); +void Animation_SetMorph(GlobalContext* globalCtx, SkelAnime* skelAnime, f32 transitionRate); +void LinkAnimation_Change(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimationHeader* linkAnimetionEntrySeg, f32 playbackSpeed, f32 frame, f32 frameCount, u8 animationMode, f32 transitionRate); +void LinkAnimation_PlayOnce(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimationHeader* linkAnimetionEntrySeg); +void LinkAnimation_PlayOnceSetSpeed(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimationHeader* linkAnimetionEntrySeg, f32 playbackSpeed); +void LinkAnimation_PlayLoop(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimationHeader* linkAnimetionEntrySeg); +void LinkAnimation_PlayLoopSetSpeed(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimationHeader* linkAnimetionEntrySeg, f32 playbackSpeed); +void LinkAnimation_CopyJointToMorph(GlobalContext* globalCtx, SkelAnime* skelAnime); +void LinkAnimation_CopyMorphToJoint(GlobalContext* globalCtx, SkelAnime* skelAnime); +void LinkAnimation_LoadToMorph(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimationHeader* linkAnimetionEntrySeg, f32 frame); +void LinkAnimation_LoadToJoint(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimationHeader* linkAnimetionEntrySeg, f32 frame); +void LinkAnimation_InterpJointMorph(GlobalContext* globalCtx, SkelAnime* skelAnime, f32 frame); +void LinkAnimation_BlendToJoint(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimationHeader* linkAnimetionEntrySeg, f32 transitionFrame, LinkAnimationHeader* linkAnimetionEntrySeg2, f32 frame, f32 transitionRate, Vec3s* jointTable); +void LinkAnimation_BlendToMorph(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimationHeader* linkAnimetionEntrySeg, f32 transitionFrame, LinkAnimationHeader* linkAnimetionEntrySeg2, f32 frame, f32 transitionRate, Vec3s* jointTable); +void LinkAnimation_EndLoop(SkelAnime* skelAnime); +s32 Animation_OnFrameImpl(SkelAnime* skelAnime, f32 arg1, f32 updateRate); +s32 LinkAnimation_OnFrame(SkelAnime* skelAnime, f32 arg1); +void SkelAnime_Init(GlobalContext* globalCtx, SkelAnime* skelAnime, SkeletonHeader* skeletonHeaderSeg, AnimationHeader* animationSeg, Vec3s* jointTable, Vec3s* morphTable, s32 limbCount); +void SkelAnime_InitFlex(GlobalContext* globalCtx, SkelAnime* skelAnime, FlexSkeletonHeader* skeletonHeaderSeg, + AnimationHeader* animation, Vec3s* jointTable, Vec3s* morphTable, s32 limbCount); void SkelAnime_InitSkin(GlobalContext* globalCtx, SkelAnime* skelAnime, SkeletonHeader* skeletonHeaderSeg, AnimationHeader* animationSeg); -void func_80136C84(SkelAnime* skelAnime); -s32 SkelAnime_FrameUpdateMatrix(SkelAnime* skelAnime); -s32 func_80136CF4(SkelAnime* skelAnime); -s32 func_80136D98(SkelAnime* skelAnime); -void func_80136F04(SkelAnime* skelAnime); -s32 func_8013702C(SkelAnime* skelAnime); -s32 func_801370B0(SkelAnime* skelAnime); -s32 func_8013713C(SkelAnime* skelAnime); -void SkelAnime_ChangeAnimImpl(SkelAnime* skelAnime, AnimationHeader* animationSeg, f32 playbackSpeed, f32 frame, f32 frameCount, u8 animationType, f32 transitionRate, s8 unk2); -void SkelAnime_ChangeAnim(SkelAnime* skelAnime, AnimationHeader* animationSeg, f32 playbackSpeed, f32 frame, f32 frameCount, u8 mode, f32 transitionRate); -void SkelAnime_ChangeAnimDefaultStop(SkelAnime* skelAnime, AnimationHeader* animationSeg); -void SkelAnime_ChangeAnimTransitionStop(SkelAnime* skelAnime, AnimationHeader* animationSeg, f32 transitionRate); -void SkelAnime_ChangeAnimPlaybackStop(SkelAnime* skelAnime, AnimationHeader* animationSeg, f32 playbackSpeed); -void SkelAnime_ChangeAnimDefaultRepeat(SkelAnime* skelAnime, AnimationHeader* animationSeg); -void SkelAnime_ChangeAnimTransitionRepeat(SkelAnime* skelAnime, AnimationHeader* animationSeg, f32 transitionRate); -void SkelAnime_ChangeAnimPlaybackRepeat(SkelAnime* skelAnime, AnimationHeader* animationSeg, f32 playbackSpeed); -void SkelAnime_AnimSetStop(SkelAnime* skelAnime); -void SkelAnime_AnimReverse(SkelAnime* skelAnime); -void func_80137674(SkelAnime* skelAnime, Vec3s* dst, Vec3s* src, u8* index); -void func_801376DC(SkelAnime* skelAnime, Vec3s* dst, Vec3s* src, u8* arg3); -void func_80137748(SkelAnime* skelAnime, Vec3f* pos, s16 angle); -s32 func_801378B8(SkelAnime* skelAnime, f32 arg1); +void SkelAnime_SetUpdate(SkelAnime* skelAnime); +s32 SkelAnime_Update(SkelAnime* skelAnime); +s32 SkelAnime_Morph(SkelAnime* skelAnime); +s32 SkelAnime_MorphTaper(SkelAnime* skelAnime); +void SkelAnime_AnimateFrame(SkelAnime* skelAnime); +s32 SkelAnime_LoopFull(SkelAnime* skelAnime); +s32 SkelAnime_LoopPartial(SkelAnime* skelAnime); +s32 SkelAnime_Once(SkelAnime* skelAnime); +void Animation_ChangeImpl(SkelAnime* skelAnime, AnimationHeader* animationSeg, f32 playbackSpeed, f32 frame, f32 frameCount, u8 animationType, f32 transitionRate, s8 unk2); +void Animation_Change(SkelAnime* skelAnime, AnimationHeader* animationSeg, f32 playbackSpeed, f32 frame, f32 frameCount, u8 mode, f32 transitionRate); +void Animation_PlayOnce(SkelAnime* skelAnime, AnimationHeader* animationSeg); +void Animation_MorphToPlayOnce(SkelAnime* skelAnime, AnimationHeader* animationSeg, f32 transitionRate); +void Animation_PlayOnceSetSpeed(SkelAnime* skelAnime, AnimationHeader* animationSeg, f32 playbackSpeed); +void Animation_PlayLoop(SkelAnime* skelAnime, AnimationHeader* animationSeg); +void Animation_MorphToLoop(SkelAnime* skelAnime, AnimationHeader* animationSeg, f32 transitionRate); +void Animation_PlayLoopSetSpeed(SkelAnime* skelAnime, AnimationHeader* animationSeg, f32 playbackSpeed); +void Animation_EndLoop(SkelAnime* skelAnime); +void Animation_Reverse(SkelAnime* skelAnime); +void SkelAnime_CopyFrameTableTrue(SkelAnime* skelAnime, Vec3s* dst, Vec3s* src, u8* index); +void SkelAnime_CopyFrameTableFalse(SkelAnime* skelAnime, Vec3s* dst, Vec3s* src, u8* arg3); +void SkelAnime_UpdateTranslation(SkelAnime* skelAnime, Vec3f* pos, s16 angle); +s32 Animation_OnFrame(SkelAnime* skelAnime, f32 arg1); void SkelAnime_Free(SkelAnime* skelAnime, GlobalContext* globalCtx); -void SkelAnime_CopyVec3s(SkelAnime* skelAnime, Vec3s* dst, Vec3s* src); +void SkelAnime_CopyFrameTable(SkelAnime* skelAnime, Vec3s* dst, Vec3s* src); // void func_80137970(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5); // void func_80137B34(void); // void func_80137EBC(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5); @@ -2683,7 +2700,7 @@ s16 func_8013A504(s16 val); s32 func_8013A530(GlobalContext* globalCtx, Actor* actor, s32 flag, Vec3f* pos, Vec3s* rot, f32 distanceMin, f32 distanceMax, s16 angleError); // void func_8013A7C0(void); // void func_8013A860(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8, UNK_TYPE4 param_9, UNK_TYPE4 param_10); -Gfx* func_8013AB00(GlobalContext* globalCtx, void** skeleton, Vec3s* limbDrawTable, s32 dListCount, void* func1, void* func2, void* func3, Actor* actor, Gfx* gfx); +Gfx* func_8013AB00(GlobalContext* globalCtx, void** skeleton, Vec3s* jointTable, s32 dListCount, void* func1, void* func2, void* func3, Actor* actor, Gfx* gfx); s32 func_8013AD6C(GlobalContext* globalCtx); // void func_8013AD9C(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6); void func_8013AED4(u16* param_1, u16 param_2, u16 param_3); @@ -2765,7 +2782,7 @@ s32 View_SetQuakeSpeed(View* view, f32 speed); s32 View_InitCameraQuake(View* view); s32 View_ClearQuake(View* view); s32 View_SetQuake(View* view, Vec3f rot, Vec3f scale, f32 speed); -s32 View_StepQuake(View* view, RSPMatrix* matrix); +s32 View_StepQuake(View* view, Mtx* matrix); void View_RenderView(View* view, s32 uParm2); s32 View_RenderToPerspectiveMatrix(View* view); s32 View_RenderToOrthographicMatrix(View* view); @@ -2803,11 +2820,12 @@ void VisMono_Draw(void* arg0, Gfx** gfx, u32 arg2); void func_801420C0(void* arg0); void func_801420F4(void* arg0); void func_80142100(void* arg0, Gfx** gfx, u32 arg2); -s32 func_80142440(SkyboxContext* skyboxCtx, Vtx* vtx, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7, s32 arg8); -void func_80143148(SkyboxContext* skyboxCtx, s32 arg1); -void func_801431E8(GameState* gamestate, SkyboxContext* skyboxCtx, s16 skyType); +s32 func_80142440(SkyboxContext* skyboxCtx, Vtx* vtx, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7, + s32 arg8); +void func_80143148(SkyboxContext* skyboxCtx, s32 arg1); +void func_801431E8(GameState* gameState, SkyboxContext* skyboxCtx, s16 skyType); void func_80143324(GlobalContext* globalCtx, SkyboxContext* skyboxCtx, s16 skyType); -void func_801434E4(GameState* gamestate, SkyboxContext* skyboxCtx, s16 skyType); +void func_801434E4(GameState* gameState, SkyboxContext* skyboxCtx, s16 skyType); // void func_801435A0(void); // void func_80143624(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE1 param_5, UNK_TYPE1 param_6, UNK_TYPE1 param_7); // void func_80143668(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7); @@ -2826,13 +2844,13 @@ void Sram_InitDebugSave(void); // void func_80144E78(void); // void func_8014546C(void); // void func_80145698(void); -void func_801457CC(GameState* gamestate, SramContext* param_2); +void func_801457CC(GameState* gameState, SramContext* param_2); void func_80146580(s32 param_1, SramContext* param_2, s32 param_3); // void func_80146628(void); // void func_80146AA0(void); // void func_80146DF8(void); void func_80146E40(GameState* gameState, SramContext* sramCtx); -void Sram_Alloc(GameState* gamestate, SramContext* sramCtx); +void Sram_Alloc(GameState* gameState, SramContext* sramCtx); // void func_80146EBC(SramContext* param_1, UNK_TYPE4 param_2, UNK_TYPE4 param_3); // void func_80146EE8(void); // void func_80146F5C(void); @@ -3101,8 +3119,9 @@ void PreRender_ApplyFiltersSlowlyInit(PreRender* this); void PreRender_ApplyFiltersSlowlyDestroy(PreRender* this); void func_801720C4(PreRender* this); void func_801720FC(PreRenderParams* params, Gfx** gfxp); -void func_80172758(Gfx** gfxp, void* timg, void* tlut, u16 width, u16 height, u8 fmt, u8 siz, u16 tt, u16 arg8, f32 x, f32 y, f32 xScale, f32 yScale, u32 flags); -void THGA_Ct(TwoHeadGfxArena* thga, Gfx* start, u32 size); +void func_80172758(Gfx** gfxp, void* timg, void* tlut, u16 width, u16 height, u8 fmt, u8 siz, u16 tt, u16 arg8, f32 x, + f32 y, f32 xScale, f32 yScale, u32 flags); +void THGA_Ct(TwoHeadGfxArena* thga, Gfx* start, size_t size); void THGA_Dt(TwoHeadGfxArena* thga); u32 THGA_IsCrash(TwoHeadGfxArena* thga); void THGA_Init(TwoHeadGfxArena* thga); @@ -3113,7 +3132,7 @@ Gfx* THGA_GetTail(TwoHeadGfxArena* thga); Gfx* THGA_AllocStartArray8(TwoHeadGfxArena* thga, u32 count); Gfx* THGA_AllocStart8(TwoHeadGfxArena* thga); Gfx* THGA_AllocStart8Wrapper(TwoHeadGfxArena* thga); -Gfx* THGA_AllocEnd(TwoHeadGfxArena* thga, u32 size); +Gfx* THGA_AllocEnd(TwoHeadGfxArena* thga, size_t size); Gfx* THGA_AllocEndArray64(TwoHeadGfxArena* thga, u32 count); Gfx* THGA_AllocEnd64(TwoHeadGfxArena* thga); Gfx* THGA_AllocEndArray16(TwoHeadGfxArena* thga, u32 count); @@ -3121,15 +3140,15 @@ Gfx* THGA_AllocEnd16(TwoHeadGfxArena* thga); void* THA_GetHead(TwoHeadArena* tha); void THA_SetHead(TwoHeadArena* tha, void* start); void* THA_GetTail(TwoHeadArena* tha); -void* THA_AllocStart(TwoHeadArena* tha, u32 size); +void* THA_AllocStart(TwoHeadArena* tha, size_t size); void* THA_AllocStart1(TwoHeadArena* tha); -void* THA_AllocEnd(TwoHeadArena* tha, u32 size); -void* THA_AllocEndAlign16(TwoHeadArena* tha, u32 size); -void* THA_AllocEndAlign(TwoHeadArena* tha, u32 size, u32 mask); +void* THA_AllocEnd(TwoHeadArena* tha, size_t size); +void* THA_AllocEndAlign16(TwoHeadArena* tha, size_t size); +void* THA_AllocEndAlign(TwoHeadArena* tha, size_t size, u32 mask); s32 THA_GetSize(TwoHeadArena* tha); u32 THA_IsCrash(TwoHeadArena* tha); void THA_Init(TwoHeadArena* tha); -void THA_Ct(TwoHeadArena* tha, void* ptr, u32 size); +void THA_Ct(TwoHeadArena* tha, void* ptr, size_t size); void THA_Dt(TwoHeadArena* tha); void func_80172BC0(void); void func_80172C30(AudioMgr* audioMgr); @@ -3145,46 +3164,46 @@ void TitleSetup_Init(GameState* gameState); void Game_UpdateFramerateVariables(s32 divisor); void Game_SetFramerateDivisor(GameState* gameState, s32 divisor); void GameState_SetFBFilter(Gfx** gfx, u32 arg1); -void Game_Nop80173534(GameState* gamestate); -void GameState_Draw(GameState* gamestate, GraphicsContext* gfxCtx); -void Game_ResetSegments(GraphicsContext* gfxCtx); -void func_801736DC(GraphicsContext* gfxCtx); -void Game_UpdateInput(GameState* gamestate); -void Game_Update(GameState* gamestate); -void Game_IncrementFrameCount(GameState* gamestate); -void Game_InitHeap(GameState* gamestate, u32 size); -void Game_ResizeHeap(GameState* gamestate, u32 size); -void Game_StateInit(GameState* gamestate, GameStateFunc gameStateInit, GraphicsContext* gfxCtx); -void Game_StateFini(GameState* gamestate); -GameStateFunc Game_GetNextStateInit(GameState* gamestate); -u32 Game_GetNextStateSize(GameState* gamestate); -u32 Game_GetShouldContinue(GameState* gamestate); -s32 Game_GetHeapFreeSize(GameState* gamestate); -s32 func_80173B48(GameState* gamestate); -GameAlloc* func_80173BF0(GameAlloc* heap); -void* Gamealloc_Alloc(GameAlloc* heap, u32 size); -void Gamealloc_Free(GameAlloc* heap, void* ptr); -void Gamealloc_FreeAll(GameAlloc* heap); -void Gamealloc_Init(GameAlloc* iParm1); +void Game_Nop80173534(GameState* gameState); +void GameState_Draw(GameState* gameState, GraphicsContext* gCtxt); +void GameState_SetFrameBuffer(GraphicsContext* gCtxt); +void func_801736DC(GraphicsContext* gCtxt); +void Game_UpdateInput(GameState* gameState); +void Game_Update(GameState* gameState); +void Game_IncrementFrameCount(GameState* gameState); +void GameState_InitArena(GameState* gameState, size_t size); +void GameState_Realloc(GameState* gameState, size_t size); +void GameState_Init(GameState* gameState, GameStateFunc gameStateInit, GraphicsContext* gfxCtx); +void GameState_Destroy(GameState* gameState); +GameStateFunc GameState_GetNextStateInit(GameState* gameState); +size_t Game_GetNextStateSize(GameState* gameState); +u32 GameState_IsRunning(GameState* gameState); +s32 GameState_GetArenaSize(GameState* gameState); +s32 func_80173B48(GameState* gameState); +void GameAlloc_Log(GameAlloc* heap); +void* GameAlloc_Malloc(GameAlloc* heap, size_t size); +void GameAlloc_Free(GameAlloc* heap, void* ptr); +void GameAlloc_Cleanup(GameAlloc* heap); +void GameAlloc_Init(GameAlloc* iParm1); // void Graph_FaultClient(void); -void Graph_DlAlloc(TwoHeadGfxArena* dl, void* memoryBlock, u32 size); +void Graph_DlAlloc(TwoHeadGfxArena* dl, void* memoryBlock, size_t size); void Graph_InitTHGA(GraphicsContext* gfxCtx); -GameStateOverlay* Graph_GetNextGameState(GameState* gamestate); +GameStateOverlay* Graph_GetNextGameState(GameState* gameState); void* Graph_FaultAddrConvFunc(void* addr); void Graph_Init(GraphicsContext* gfxCtx); // void Graph_Destroy(void); -void Graph_Render(GraphicsContext* gfxCtx, GameState* gamestate); -void Graph_FrameSetup(GameState* gamestate); -void Graph_RenderFrame(GraphicsContext* gfxCtx, GameState* gamestate); -void Graph_DoFrame(GraphicsContext* gfxCtx, GameState* gamestate); +void Graph_Render(GraphicsContext* gfxCtx, GameState* gameState); +void Graph_FrameSetup(GameState* gameState); +void Graph_RenderFrame(GraphicsContext* gfxCtx, GameState* gameState); +void Graph_DoFrame(GraphicsContext* gfxCtx, GameState* gameState); void Graph_ThreadEntry(void* arg); Gfx* Graph_GfxPlusOne(Gfx* gfx); Gfx* Graph_BranchDlist(Gfx* gfx, Gfx* dst); -void* Graph_DlistAlloc(Gfx** gfx, u32 size); -void func_80174AA0(ListAlloc* alloc); -// void func_80174AB4(void); -// void func_80174B20(void); -void func_80174BA0(ListAlloc* alloc); +void* Graph_DlistAlloc(Gfx** gfx, size_t size); +ListAlloc* ListAlloc_Init(ListAlloc* this); +// void ListAlloc_Alloc(void); +// void ListAlloc_Free(void); +void ListAlloc_FreeAll(ListAlloc* this); void Main(void* arg); u32 Padmgr_GetControllerBitmask(void); // void func_80174F24(void); @@ -3213,7 +3232,7 @@ void func_80175E68(Input* input, s32 param_2); void Padmgr_GetInput(Input* input, s32 param_2); void Padmgr_GetInput2(Input* input, s32 param_2); void Padmgr_ThreadEntry(PadMgr* padmgr); -void Padmgr_Start(OSMesgQueue* siEventCallbackQueue, IrqMgr* irqmgr, OSId threadId, OSPri threadPri, void* stack); +void PadMgr_Init(OSMesgQueue* siEventCallbackQueue, IrqMgr* irqmgr, OSId threadId, OSPri threadPri, void* stack); void Sched_SwapFramebuffer(CfbInfo* cfbInfo); void Sched_RetraceUpdateFramebuffer(SchedContext* sched, CfbInfo* cfbInfo); void Sched_HandleReset(SchedContext* sched); @@ -3239,9 +3258,9 @@ void Sched_Init(SchedContext* sched, void* stack, OSPri pri, UNK_TYPE arg3, UNK_ // void func_80177390(void); void func_801773A0(void* arg0); void func_801773C4(void* arg0); -void SpeedMeter_DrawTimeEntries(void* displayList, GraphicsContext* gCtx); -// void func_80177A84(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8, UNK_TYPE4 param_9); -// void func_80177AC8(void); +void SpeedMeter_DrawTimeEntries(void* displayList, GraphicsContext* gfxCtx); +// void func_80177A84(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8, UNK_TYPE4 param_9); +//void func_80177AC8(void); void SpeedMeter_DrawAllocEntries(void* displayList, GraphicsContext* gfxCtx, GameState* gameState); void func_801780F0(Mtx* param_1, f32 param_2, f32 param_3, f32 param_4, f32 param_5, f32 param_6, f32 param_7); // void func_801781EC(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5); @@ -3375,46 +3394,48 @@ s16 Math_Atan2S(f32 opposite, f32 adjacent); f32 Math_Atan2F(f32 opposite, f32 adjacent); s16 Math_FAtan2F(f32 adjacent, f32 opposite); f32 Math_Acot2F(f32 adjacent, f32 opposite); -void SysMatrix_StateAlloc(GameState* gamestate); -void SysMatrix_StatePush(void); -void SysMatrix_StatePop(void); -void SysMatrix_CopyCurrentState(MtxF* matrix); -void SysMatrix_SetCurrentState(MtxF* matrix); -MtxF* SysMatrix_GetCurrentState(void); -void SysMatrix_InsertMatrix(MtxF* matrix, s32 appendToState); -void SysMatrix_InsertTranslation(f32 x, f32 y, f32 z, s32 appendToState); +void Matrix_StateAlloc(GameState* gameState); +void Matrix_StatePush(void); +void Matrix_StatePop(void); +void Matrix_CopyCurrentState(MtxF* matrix); +void Matrix_SetCurrentState(MtxF* matrix); +MtxF* Matrix_GetCurrentState(void); +void Matrix_InsertMatrix(MtxF* matrix, s32 appendToState); +void Matrix_InsertTranslation(f32 x, f32 y, f32 z, s32 appendToState); void Matrix_Scale(f32 xScale, f32 yScale, f32 zScale, s32 appendToState); -void SysMatrix_InsertXRotation_s(s16 rotation, s32 appendToState); -void SysMatrix_InsertXRotation_f(f32 rotation, s32 appendToState); -void SysMatrix_RotateStateAroundXAxis(f32 rotation); -void SysMatrix_SetStateXRotation(f32 rotation); +void Matrix_InsertXRotation_s(s16 rotation, s32 appendToState); +void Matrix_InsertXRotation_f(f32 rotation, s32 appendToState); +void Matrix_RotateStateAroundXAxis(f32 rotation); +void Matrix_SetStateXRotation(f32 rotation); void Matrix_RotateY(s16 rotation, s32 appendToState); -void SysMatrix_InsertYRotation_f(f32 rotation, s32 appendToState); -void SysMatrix_InsertZRotation_s(s16 rotation, s32 appendToState); -void SysMatrix_InsertZRotation_f(f32 rotation, s32 appendToState); -void SysMatrix_InsertRotation(s16 xRotation, s16 yRotation, s16 zRotation, s32 appendToState); -void SysMatrix_RotateAndTranslateState(Vec3f* translation, Vec3s* rotation); -void SysMatrix_SetStateRotationAndTranslation(f32 x, f32 y, f32 z, Vec3s* rotation); -RSPMatrix* SysMatrix_ToRSPMatrix(MtxF* src, RSPMatrix* dst); -RSPMatrix* SysMatrix_GetStateAsRSPMatrix(RSPMatrix* matrix); +void Matrix_InsertYRotation_f(f32 rotation, s32 appendToState); +void Matrix_InsertZRotation_s(s16 rotation, s32 appendToState); +void Matrix_InsertZRotation_f(f32 rotation, s32 appendToState); +void Matrix_InsertRotation(s16 xRotation, s16 yRotation, s16 zRotation, s32 appendToState); +void Matrix_JointPosition(Vec3f* position, Vec3s* rotation); +void Matrix_RotateAndTranslateState(Vec3f* translation, Vec3s* rotation); +void Matrix_SetStateRotationAndTranslation(f32 x, f32 y, f32 z, Vec3s* rotation); +RSPMatrix* Matrix_ToRSPMatrix(MtxF* src, RSPMatrix* dst); +Mtx* Matrix_ToMtx(Mtx* dest); +RSPMatrix* Matrix_GetStateAsRSPMatrix(RSPMatrix* matrix); Mtx* Matrix_NewMtx(GraphicsContext* gfxCtx); -RSPMatrix* SysMatrix_AppendStateToPolyOpaDisp(GraphicsContext* gfxCtx); -void SysMatrix_AppendToPolyOpaDisp(MtxF* mtx, GraphicsContext* gfxCtx); -void SysMatrix_MultiplyVector3fByState(Vec3f* src, Vec3f* dst); -void SysMatrix_GetStateTranslation(Vec3f* dst); -void SysMatrix_GetStateTranslationAndScaledX(f32 scale, Vec3f* dst); -void SysMatrix_GetStateTranslationAndScaledY(f32 scale, Vec3f* dst); -void SysMatrix_GetStateTranslationAndScaledZ(f32 scale, Vec3f* dst); -void SysMatrix_MultiplyVector3fXZByCurrentState(Vec3f* src, Vec3f* dst); +RSPMatrix* Matrix_AppendStateToPolyOpaDisp(GraphicsContext* gfxCtx); +void Matrix_AppendToPolyOpaDisp(MtxF* mtx, GraphicsContext* gfxCtx); +void Matrix_MultiplyVector3fByState(Vec3f* src, Vec3f* dst); +void Matrix_GetStateTranslation(Vec3f* dst); +void Matrix_GetStateTranslationAndScaledX(f32 scale, Vec3f* dst); +void Matrix_GetStateTranslationAndScaledY(f32 scale, Vec3f* dst); +void Matrix_GetStateTranslationAndScaledZ(f32 scale, Vec3f* dst); +void Matrix_MultiplyVector3fXZByCurrentState(Vec3f* src, Vec3f* dst); void Matrix_MtxFCopy(MtxF* dst, MtxF* src); -void SysMatrix_FromRSPMatrix(RSPMatrix* src, MtxF* dst); -void SysMatrix_MultiplyVector3fByMatrix(Vec3f* src, Vec3f* dst, MtxF* matrix); -void SysMatrix_TransposeXYZ(MtxF* matrix); -void SysMatrix_NormalizeXYZ(MtxF* matrix); +void Matrix_FromRSPMatrix(Mtx* src, MtxF* dst); +void Matrix_MultiplyVector3fByMatrix(Vec3f* src, Vec3f* dst, MtxF* matrix); +void Matrix_TransposeXYZ(MtxF* matrix); +void Matrix_NormalizeXYZ(MtxF* matrix); void func_8018219C(MtxF* pfParm1, Vec3s* psParm2, s32 iParm3); // void func_801822C4(void); -void SysMatrix_InsertRotationAroundUnitVector_f(f32 rotation, Vec3f* vector, s32 appendToState); -void SysMatrix_InsertRotationAroundUnitVector_s(s16 rotation, Vec3f* vector, s32 appendToState); +void Matrix_InsertRotationAroundUnitVector_f(f32 rotation, Vec3f* vector, s32 appendToState); +void Matrix_InsertRotationAroundUnitVector_s(s16 rotation, Vec3f* vector, s32 appendToState); // void func_80182C90(void); // void func_80182CA0(void); // void func_80182CBC(void); diff --git a/include/io/controller.h b/include/io/controller.h index e976402ec..50add3561 100644 --- a/include/io/controller.h +++ b/include/io/controller.h @@ -139,7 +139,8 @@ typedef struct { /* 0x01 */ u8 txsize; /* 0x02 */ u8 rxsize; /* 0x03 */ u8 cmd; - /* 0x04 */ u16 address; + /* 0x04 */ u8 hi; + /* 0x05 */ u8 lo; /* 0x06 */ u8 data[32]; /* 0x26 */ u8 datacrc; } __OSContRamReadFormat; diff --git a/include/os.h b/include/os.h index 50f3b10c4..b182d4e47 100644 --- a/include/os.h +++ b/include/os.h @@ -1,6 +1,7 @@ #ifndef _OS_H_ #define _OS_H_ +#include "stdlib.h" #include "ultra64/thread.h" #include "ultra64/message.h" @@ -65,7 +66,7 @@ typedef struct { /* 0x00 */ OSIoMesgHdr hdr; /* 0x08 */ void* dramAddr; /* 0x0C */ u32 devAddr; - /* 0x10 */ u32 size; + /* 0x10 */ size_t size; /* 0x14 */ OSPiHandle* piHandle; } OSIoMesg; // size = 0x88 @@ -76,8 +77,8 @@ typedef struct { /* 0x08 */ OSMesgQueue* cmdQueue; /* 0x0C */ OSMesgQueue* evtQueue; /* 0x10 */ OSMesgQueue* acsQueue; - /* 0x14 */ s32 (*piDmaCallback)(s32, u32, void*, u32); - /* 0x18 */ s32 (*epiDmaCallback)(OSPiHandle*, s32, u32, void*, u32); + /* 0x14 */ s32 (*piDmaCallback)(s32, u32, void*, size_t); + /* 0x18 */ s32 (*epiDmaCallback)(OSPiHandle*, s32, u32, void*, size_t); } OSDevMgr; // size = 0x1C diff --git a/include/os_internal.h b/include/os_internal.h index b00548092..3c6d4eee4 100644 --- a/include/os_internal.h +++ b/include/os_internal.h @@ -6,4 +6,14 @@ typedef struct { /* 0x04 */ OSMesg msg; } __osHwInt; // size = 0x08 +typedef struct { + /* 0x00 */ u32 initialized; + /* 0x04 */ OSThread* mgrThread; + /* 0x08 */ OSMesgQueue* cmdQueue; + /* 0x0C */ OSMesgQueue* eventQueue; + /* 0x10 */ OSMesgQueue* accessQueue; + /* 0x14 */ s32 (*piDmaCallback)(s32, u32, void*, size_t); + /* 0x18 */ s32 (*epiDmaCallback)(OSPiHandle*, s32, u32, void*, size_t); +} OSMgrArgs; // size = 0x1C + #endif diff --git a/include/stdlib.h b/include/stdlib.h index f10cfef4b..a7b44961a 100644 --- a/include/stdlib.h +++ b/include/stdlib.h @@ -18,7 +18,7 @@ typedef struct { /* 0x8 */ long long rem; } lldiv_t; -typedef unsigned int size_t; +typedef unsigned long size_t; typedef int ssize_t; diff --git a/include/string.h b/include/string.h deleted file mode 100644 index c519b1406..000000000 --- a/include/string.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef _STRING_H_ -#define _STRING_H_ - -#define NULL 0 -typedef unsigned int size_t; - -#endif diff --git a/include/variables.h b/include/variables.h index 7d6969543..0897d2bc9 100644 --- a/include/variables.h +++ b/include/variables.h @@ -30,8 +30,8 @@ extern vs32 gIrqMgrResetStatus; extern volatile OSTime sIrqMgrResetTime; extern volatile OSTime sIrqMgrRetraceTime; extern s32 sIrqMgrRetraceCount; -extern char* D_80096B80[18]; -extern char* sExceptionNames[6]; +extern const char* sCpuExceptions[18]; +extern const char* sFpuExceptions[6]; extern FaultDrawer* sFaultDrawContext; extern FaultDrawer sFaultDrawerDefault; // extern UNK_TYPE4 D_80096C20; @@ -67,8 +67,8 @@ extern OSPiHandle* __osPiTable; extern OSPiHandle* __osCurrentHandle[]; extern UNK_TYPE4 __osPiAccessQueueEnabled; extern OSViMode osViModeNtscHpn1; -// extern UNK_TYPE4 D_80097F00; -// extern UNK_TYPE1 D_80097F04; +extern s32 __osPfsInodeCacheChannel; +extern u8 __osPfsInodeCacheBank; extern UNK_TYPE4 D_80097F10; extern char spaces[]; extern char zeroes[]; @@ -207,8 +207,8 @@ extern char D_80098A00[]; extern char D_80098A0C[]; extern char D_80098A1C[]; extern char D_80098A20[34]; -extern char D_80098A44[]; -extern char D_80098A68[]; +extern const char D_80098A44[]; +extern const char D_80098A68[]; extern char D_80098A88[53]; extern char D_80098AC0[49]; extern char D_80098AF4[51]; @@ -218,7 +218,7 @@ extern char D_80098B68[]; extern char D_80098B84[]; extern char D_80098BA0[]; extern char D_80098BBC[]; -extern char faultThreadName[]; +extern const char faultThreadName[]; extern char D_80098BE0[]; extern char D_80098BF8[]; extern char D_80098BFC[]; @@ -230,15 +230,14 @@ extern char D_80098C2C[]; extern char D_80098C34[]; extern char D_80098C38[]; extern char D_80098C40[]; -extern u8 sFaultDrawerFont[8][128]; extern char D_80099050[]; extern char D_80099054[]; extern char D_8009905C[]; extern char D_80099064[]; extern char D_80099070[]; -extern char D_80099078[]; -extern char D_8009907C[]; -extern char D_80099080[]; +extern const char D_80099078[]; +extern const char D_8009907C[]; +extern const char D_80099080[]; extern char D_800990B0[]; extern f32 D_800990C0[9]; extern f32 D_800990E4; @@ -325,10 +324,10 @@ extern FaultDrawer sFaultDrawerStruct; // extern Arena gSystemArena; extern u32 sRandFloat; // extern UNK_TYPE4 sArenaLockMsg; -// extern OSTask tmp_task; -// extern UNK_TYPE1 D_8009CDB0; -// extern OSMesg siAccessBuf[1]; -// extern OSMesgQueue __osSiAccessQueue; +extern OSTask tmp_task; +extern OSPifRam osPifBuffers[4]; +extern OSMesg siAccessBuf[1]; +extern OSMesgQueue __osSiAccessQueue; extern OSPifRam __osContPifRam; // extern UNK_TYPE1 D_8009CF0C; extern u8 __osContLastCmd; @@ -1673,7 +1672,7 @@ extern UNK_PTR D_801D1540; // extern f32 sFactorialTbl[13]; extern Vec3f D_801D15B0; extern Vec3s D_801D15BC; -extern RSPMatrix D_801D1DE0; +extern Mtx D_801D1DE0; extern MtxF D_801D1E20; extern UNK_PTR D_801D1E60; extern UNK_PTR D_801D1E64; @@ -3263,7 +3262,6 @@ extern TriNorm D_801EF590; extern TriNorm D_801EF5C8; extern TriNorm D_801EF600; extern TriNorm D_801EF638; -// extern UNK_TYPE1 D_801EF66D; extern SaveContext gSaveContext; // extern UNK_TYPE2 D_801F3F38; // extern UNK_TYPE1 D_801F3F3A; @@ -3344,7 +3342,7 @@ extern s16 D_801F4E7A; // extern UNK_TYPE1 D_801F4F68; // extern UNK_TYPE1 D_801F4F6A; extern LightsBuffer sLightsBuffer; -extern Arena mainHeap; +extern Arena sZeldaArena; // extern UNK_TYPE1 D_801F5130; // extern UNK_TYPE1 D_801F5270; // extern UNK_TYPE1 D_801F528E; @@ -3368,13 +3366,6 @@ extern Arena mainHeap; // extern UNK_TYPE1 D_801F59F0; // extern UNK_TYPE1 D_801F59F4; // extern UNK_TYPE1 D_801F59F8; -// extern QuakeRequest sQuakeRequest[4]; -// extern Quake2Context sQuake2Context; -// extern s32 sMatAnimStep; -// extern u32 sMatAnimFlags; -// extern f32 sMatAnimAlphaRatio; -extern s32 D_801F5AB0; -extern s32 D_801F5AB4; // extern UNK_TYPE1 D_801F5AC0; // extern UNK_TYPE1 D_801F69D0; // extern UNK_TYPE1 D_801F6A10; @@ -3437,19 +3428,19 @@ extern FaultClient graphFaultClient; extern Gfx* graphDlEntry; // extern UNK_TYPE1 D_801F80F8; extern u64 lastRenderFrameTimestamp; -extern OSMesgQueue siEventCallbackQueue; -extern OSMesg siEventCallbackBuffer[1]; +extern OSMesgQueue sSiIntMsgQ; +extern OSMesg sSiIntMsgBuf[1]; extern u32 gSegments[NUM_SEGMENTS]; extern SchedContext gSchedContext; -extern IrqMgrClient mainIrqmgrCallbackNode; -extern OSMesgQueue mainIrqmgrCallbackQueue; -extern OSMesg mainIrqCallbackBuffer[60]; -extern OSThread graphOSThread; -extern u8 graphStack[0x1800]; -extern u8 schedStack[0x600]; -extern u8 audioStack[0x800]; -extern u8 padmgrStack[0x500]; -extern StackEntry graphStackEntry; +extern IrqMgrClient irqClient; +extern OSMesgQueue irqMgrMsgQ; +extern OSMesg irqMgrMsgBuf[60]; +extern OSThread sGraphThread; +extern u8 sGraphStack[6144]; +extern u8 schedStack[1536]; +extern u8 audioStack[2048]; +extern u8 padmgrStack[1280]; +extern StackEntry sGraphStackInfo; extern StackEntry schedStackEntry; extern StackEntry audioStackEntry; extern StackEntry padmgrStackEntry; diff --git a/include/z64.h b/include/z64.h index e38d926a6..96ebb233b 100644 --- a/include/z64.h +++ b/include/z64.h @@ -308,7 +308,7 @@ typedef struct GraphicsContext { /* 0x1B4 */ Gfx* unk1B4; /* 0x1B8 */ TwoHeadGfxArena unk1B8; /* 0x1C8 */ UNK_TYPE1 pad1C8[0xAC]; - /* 0x274 */ OSViMode* unk274; + /* 0x274 */ OSViMode* viMode; /* 0x278 */ void* zbuffer; /* 0x27C */ UNK_TYPE1 pad27C[0x1C]; /* 0x298 */ TwoHeadGfxArena overlay; @@ -410,13 +410,13 @@ typedef struct { /* 0xC */ s32 rightX; } Viewport; // size = 0x10 -typedef void*(*fault_address_converter_func)(void* addr, void* arg); +typedef void*(*FaultAddrConvFunc)(void* addr, void* arg); typedef void(*fault_client_func)(void* arg1, void* arg2); typedef void(*osCreateThread_func)(void*); -typedef void* (*PrintCallback)(void*, const char*, u32); +typedef void* (*PrintCallback)(void*, const char*, size_t); typedef enum { SLOWLY_CALLBACK_NO_ARGS, @@ -991,7 +991,7 @@ typedef struct { typedef struct ArenaNode_t { /* 0x0 */ s16 magic; // Should always be 0x7373 /* 0x2 */ s16 isFree; - /* 0x4 */ u32 size; + /* 0x4 */ size_t size; /* 0x8 */ struct ArenaNode_t* next; /* 0xC */ struct ArenaNode_t* prev; } ArenaNode; // size = 0x10 @@ -1009,7 +1009,7 @@ typedef struct FaultAddrConvClient FaultAddrConvClient; struct FaultAddrConvClient { /* 0x0 */ FaultAddrConvClient* next; - /* 0x4 */ fault_address_converter_func callback; + /* 0x4 */ FaultAddrConvFunc callback; /* 0x8 */ void* param; }; // size = 0xC @@ -1044,46 +1044,47 @@ typedef struct FireObj FireObj; typedef struct FireObjLight FireObjLight; -typedef struct GameAlloc GameAlloc; +typedef struct GameAllocNode { + /* 0x0 */ struct GameAllocNode* next; + /* 0x4 */ struct GameAllocNode* prev; + /* 0x8 */ size_t size; + /* 0xC */ u32 unk_0C; +} GameAllocEntry; // size = 0x10 -typedef struct PreNMIContext PreNMIContext; - -typedef struct GameAllocNode GameAllocNode; - -struct GameAllocNode { - /* 0x0 */ GameAllocNode* next; - /* 0x4 */ GameAllocNode* prev; - /* 0x8 */ u32 size; - /* 0xC */ UNK_TYPE1 padC[0x4]; -}; // size = 0x10 - -struct GameAlloc { - /* 0x00 */ GameAllocNode base; - /* 0x10 */ GameAllocNode* head; -}; // size = 0x14 +typedef struct GameAlloc { + /* 0x00 */ GameAllocEntry base; + /* 0x10 */ GameAllocEntry* head; +} GameAlloc; // size = 0x14 struct GameState { /* 0x00 */ GraphicsContext* gfxCtx; /* 0x04 */ GameStateFunc main; /* 0x08 */ GameStateFunc destroy; /* 0x0C */ GameStateFunc nextGameStateInit; - /* 0x10 */ u32 nextGameStateSize; + /* 0x10 */ size_t nextGameStateSize; /* 0x14 */ Input input[4]; /* 0x74 */ TwoHeadArena heap; /* 0x84 */ GameAlloc alloc; /* 0x98 */ UNK_TYPE1 pad98[0x3]; /* 0x9B */ u8 running; // If 0, switch to next game state /* 0x9C */ u32 frames; - /* 0xA0 */ UNK_TYPE1 padA0[0x2]; + /* 0xA0 */ u8 padA0[0x2]; /* 0xA2 */ u8 framerateDivisor; // game speed? /* 0xA3 */ UNK_TYPE1 unkA3; }; // size = 0xA4 -struct PreNMIContext { +typedef struct PreNMIContext { /* 0x00 */ GameState state; /* 0xA4 */ u32 timer; /* 0xA8 */ UNK_TYPE4 unkA8; -}; // size = 0xAC +} PreNMIContext; // size = 0xAC + +typedef struct { + /* 0x00 */ u32 resetting; + /* 0x04 */ u32 resetCount; + /* 0x08 */ OSTime duration; + /* 0x10 */ OSTime resetTime; +} PreNmiBuff; // size = 0x18 (actually osAppNmiBuffer is 0x40 bytes large but the rest is unused) typedef struct GlobalContext GlobalContext; @@ -1266,7 +1267,7 @@ typedef struct { /* 0x024 */ UNK_TYPE4 unk24; /* 0x028 */ OSMesg lockMesg[1]; /* 0x02C */ OSMesg interrupts[8]; - /* 0x04C */ OSMesgQueue siEventCallbackQueue; + /* 0x04C */ OSMesgQueue sSiIntMsgQ; /* 0x064 */ OSMesgQueue lock; /* 0x07C */ OSMesgQueue irqmgrCallbackQueue; /* 0x094 */ IrqMgrClient irqmgrCallbackQueueNode; diff --git a/include/z64actor.h b/include/z64actor.h index 48c53e8a2..5876251fb 100644 --- a/include/z64actor.h +++ b/include/z64actor.h @@ -141,7 +141,7 @@ typedef struct { /* 0x10 */ f32 shadowScale; // Changes the size of the shadow /* 0x14 */ u8 shadowAlpha; // Default is 255 /* 0x15 */ u8 feetFloorFlags; // Set if the actor's foot is clipped under the floor. & 1 is right foot, & 2 is left - /* 0x18 */ Vec3f feetPos[2]; // Update by using `Actor_SetFeetPos` in PostLimbDraw + /* 0x18 */ Vec3f feetPos[2]; // Update by using `Actor_SetFeetPos` in PostLimbDrawOpa } ActorShape; // size = 0x30 typedef struct Actor { @@ -289,12 +289,16 @@ typedef struct EnItem00 { /* 0x1A4 */ s8 unk1A4; } EnItem00; // size = 0x1A8 -typedef struct { - /* 0x000 */ Actor base; - /* 0x144 */ ActorFunc update; +struct EnAObj; + +typedef void (*EnAObjActionFunc)(struct EnAObj*, struct GlobalContext*); + +typedef struct EnAObj { + /* 0x000 */ Actor actor; + /* 0x144 */ EnAObjActionFunc actionFunc; /* 0x148 */ ColliderCylinder collision; /* 0x194 */ UNK_TYPE1 pad194[0x14]; -} ActorEnAObj; // size = 0x1A8 +} EnAObj; // size = 0x1A8 typedef enum { /* 0x00 */ ACTORCAT_SWITCH, diff --git a/include/z64animation.h b/include/z64animation.h index aa5148e3b..2eed33ffd 100644 --- a/include/z64animation.h +++ b/include/z64animation.h @@ -6,196 +6,216 @@ #include "z64dma.h" #include "z64math.h" +struct GlobalContext; +struct Actor; +struct SkelAnime; + #define LINK_ANIMETION_OFFSET(addr, offset) \ (SEGMENT_ROM_START(link_animetion) + ((u32)addr & 0xFFFFFF) + ((u32)offset)) #define LIMB_DONE 0xFF #define ANIMATION_ENTRY_MAX 50 -#define ANIM_FLAG_UPDATEXZ 0x02 -#define ANIM_FLAG_UPDATEY 0x10 +#define ANIM_FLAG_UPDATEY (1 << 1) +#define ANIM_FLAG_NOMOVE (1 << 4) -struct GlobalContext; -struct Actor; -typedef struct SkelAnime SkelAnime; +typedef enum { + /* 0 */ ANIMMODE_LOOP, + /* 1 */ ANIMMODE_LOOP_INTERP, + /* 2 */ ANIMMODE_ONCE, + /* 3 */ ANIMMODE_ONCE_INTERP, + /* 4 */ ANIMMODE_LOOP_PARTIAL, + /* 5 */ ANIMMODE_LOOP_PARTIAL_INTERP +} AnimationModes; + +typedef enum { + /* -1 */ ANIMTAPER_DECEL = -1, + /* 0 */ ANIMTAPER_NONE, + /* 1 */ ANIMTAPER_ACCEL +} AnimationTapers; typedef struct { - /* 0x000 */ Vec3s translation; // Translation relative to parent limb. root limb is a tranlation for entire model. - /* 0x006 */ u8 firstChildIndex; // The first child's index into the limb table. - /* 0x007 */ u8 nextLimbIndex; // The parent limb's next limb index into the limb table. - /* 0x008 */ Gfx* displayLists[1]; // Display lists for the limb. Index 0 is the normal display list, index 1 is the - // far model display list. -} StandardLimb; // Size = 0xC + /* 0x00 */ Vec3s jointPos; // Root is position in model space, children are relative to parent + /* 0x06 */ u8 child; // The first child's index into the limb table. + /* 0x07 */ u8 sibling; // The parent limb's next limb index into the limb table. + /* 0x08 */ Gfx* dList; // Display lists for the limb. Index 0 is the normal display list, index 1 is the + // far model display list. +} StandardLimb; // size = 0xC // Model has limbs with only rigid meshes typedef struct { - /* 0x000 */ void** skeletonSeg; // Segment address of SkelLimbIndex. - /* 0x004 */ u8 limbCount; // Number of limbs in the model. + /* 0x00 */ Vec3s jointPos; // Root is position in model space, children are relative to parent + /* 0x06 */ u8 child; + /* 0x07 */ u8 sibling; + /* 0x08 */ Gfx* dLists[2]; // Near and far +} LodLimb; // size = 0x10 + +// Model has limbs with only rigid meshes +typedef struct { + /* 0x00 */ void** segment; + /* 0x04 */ u8 limbCount; } SkeletonHeader; // size = 0x8 // Model has limbs with flexible meshes typedef struct { - /* 0x000 */ SkeletonHeader sh; - /* 0x008 */ u8 dListCount; // Number of display lists in the model. + /* 0x00 */ SkeletonHeader sh; + /* 0x08 */ u8 dListCount; } FlexSkeletonHeader; // size = 0xC -typedef s16 AnimationRotationValue; - +// Index into the frame data table. typedef struct { - /* 0x000 */ u16 x; - /* 0x002 */ u16 y; - /* 0x004 */ u16 z; + /* 0x00 */ u16 x; + /* 0x02 */ u16 y; + /* 0x04 */ u16 z; } JointIndex; // size = 0x06 typedef struct { - /* 0x000 */ s16 frameCount; - /* 0x002 */ s16 unk02; -} AnimationHeaderCommon; // size = 0x4 + /* 0x00 */ s16 frameCount; +} AnimationHeaderCommon; typedef struct { - /* 0x00 */ AnimationHeaderCommon common; - /* 0x04 */ s16* frameData; // referenced as tbl - /* 0x08 */ JointIndex* jointIndices; // referenced as ref_tbl - /* 0x0C */ u16 staticIndexMax; + /* 0x000 */ AnimationHeaderCommon common; + /* 0x004 */ s16* frameData; // referenced as tbl + /* 0x008 */ JointIndex* jointIndices; // referenced as ref_tbl + /* 0x00C */ u16 staticIndexMax; } AnimationHeader; // size = 0x10 +typedef struct { + /* 0x00 */ s16 xMax; + /* 0x02 */ s16 x; + /* 0x04 */ s16 yMax; + /* 0x06 */ s16 y; + /* 0x08 */ s16 zMax; + /* 0x10 */ s16 z; +} JointKey; // size = 0x12 + +typedef struct { + /* 0x00 */ s16 frameCount; + /* 0x02 */ s16 limbCount; + /* 0x04 */ s16* frameData; + /* 0x08 */ JointKey* jointKey; +} LegacyAnimationHeader; // size = 0xC + typedef enum { ANIMATION_LINKANIMETION, - ANIMATION_TYPE1, - ANIMATION_TYPE2, - ANIMATION_TYPE3, - ANIMATION_TYPE4, - ANIMATION_TYPE5 + ANIMENTRY_COPYALL, + ANIMENTRY_INTERP, + ANIMENTRY_COPYTRUE, + ANIMENTRY_COPYFALSE, + ANIMENTRY_MOVEACTOR } AnimationType; typedef struct { /* 0x000 */ DmaRequest req; /* 0x020 */ OSMesgQueue msgQueue; /* 0x038 */ OSMesg msg; -} AnimationEntryType0; // size = 0x3C +} AnimEntryLoadFrame; // size = 0x3C typedef struct { - /* 0x000 */ u8 unk00; + /* 0x000 */ u8 queueFlag; /* 0x001 */ u8 vecCount; /* 0x004 */ Vec3s* dst; /* 0x008 */ Vec3s* src; -} AnimationEntryType1; // size = 0xC +} AnimEntryCopyAll; // size = 0xC typedef struct { - /* 0x000 */ u8 unk00; - /* 0x001 */ u8 limbCount; - /* 0x004 */ Vec3s* unk04; - /* 0x008 */ Vec3s* unk08; - /* 0x00C */ f32 unk0C; -} AnimationEntryType2; // size = 0x10 + /* 0x000 */ u8 queueFlag; + /* 0x001 */ u8 vecCount; + /* 0x004 */ Vec3s* base; + /* 0x008 */ Vec3s* mod; + /* 0x00C */ f32 weight; +} AnimEntryInterp; // size = 0x10 typedef struct { - /* 0x000 */ u8 unk00; + /* 0x000 */ u8 queueFlag; /* 0x001 */ u8 vecCount; /* 0x004 */ Vec3s* dst; /* 0x008 */ Vec3s* src; - /* 0x00C */ u8* index; -} AnimationEntryType3; // size = 0x10 + /* 0x00C */ u8* copyFlag; +} AnimEntryCopyTrue; // size = 0x10 typedef struct { - /* 0x000 */ u8 unk00; + /* 0x000 */ u8 queueFlag; /* 0x001 */ u8 vecCount; - /* 0x002 */ char unk02[0x2]; /* 0x004 */ Vec3s* dst; /* 0x008 */ Vec3s* src; - /* 0x00C */ u8* index; -} AnimationEntryType4; // size = 0x10 + /* 0x00C */ u8* copyFlag; +} AnimEntryCopyFalse; // size = 0x10 typedef struct { /* 0x000 */ struct Actor* actor; - /* 0x004 */ SkelAnime* skelAnime; + /* 0x004 */ struct SkelAnime* skelAnime; /* 0x008 */ f32 unk08; -} AnimationEntryType5; // size = 0xC - -typedef struct { - /* 0x000 */ u8 raw[0x3C]; -} AnimationEntryRaw; // size = 0x3C +} AnimEntryMoveActor; // size = 0xC typedef union { - AnimationEntryRaw raw; - AnimationEntryType0 type0; - AnimationEntryType1 type1; - AnimationEntryType2 type2; - AnimationEntryType3 type3; - AnimationEntryType4 type4; - AnimationEntryType5 type5; -} AnimationEntryType; // size = 0x3C + AnimEntryLoadFrame load; + AnimEntryCopyAll copy; + AnimEntryInterp interp; + AnimEntryCopyTrue copy1; + AnimEntryCopyFalse copy0; + AnimEntryMoveActor move; +} AnimationEntryData; // size = 0x3C typedef struct { /* 0x000 */ u8 type; - /* 0x001 */ u8 unk01; - /* 0x004 */ AnimationEntryType types; + /* 0x004 */ AnimationEntryData data; } AnimationEntry; // size = 0x40 typedef struct AnimationContext { /* 0x000 */ s16 animationCount; - /* 0x002 */ char unk02[2]; /* 0x004 */ AnimationEntry entries[ANIMATION_ENTRY_MAX]; } AnimationContext; // size = 0xC84 typedef struct { - /* 0x00 */ AnimationHeaderCommon common; - /* 0x04 */ u32 segment; + /* 0x000 */ AnimationHeaderCommon common; + /* 0x004 */ u32 segment; } LinkAnimationHeader; // size = 0x8 -struct SkelAnime { - /* 0x00 */ u8 limbCount; // joint_Num - /* modes 0 and 1 repeat the animation indefinitely - * modes 2 and 3 play the animaton once then stop - * modes >= 4 play the animation once, and always start at frame 0. - */ - /* 0x01 */ u8 mode; - /* 0x02 */ u8 dListCount; - /* 0x03 */ s8 unk03; +typedef struct SkelAnime { + /* 0x00 */ u8 limbCount; // Number of limbs in the skeleton + /* 0x01 */ u8 mode; // 0: loop, 2: play once, 4: partial loop. +1 to interpolate between frames. + /* 0x02 */ u8 dListCount; // Number of display lists in a flexible skeleton + /* 0x03 */ s8 taper; // Tapering to use when morphing between animations. Only used by Door_Warp1. /* 0x04 */ void** skeleton; // An array of pointers to limbs. Can be StandardLimb, LodLimb, or SkinLimb. - /* 0x08 */ - union { - AnimationHeader* animCurrentSeg; - LinkAnimationHeader* linkAnimetionSeg; - AnimationHeaderCommon* genericSeg; - }; - /* 0x0C */ f32 initialFrame; - /* 0x10 */ f32 animFrameCount; - /* 0x14 */ f32 totalFrames; - /* 0x18 */ f32 animCurrentFrame; - /* 0x1C */ f32 animPlaybackSpeed; - /* 0x20 */ Vec3s* limbDrawTbl; // now_joint - /* 0x24 */ Vec3s* transitionDrawTbl; // morf_joint - /* 0x28 */ f32 transCurrentFrame; - /* 0x2C */ f32 transitionStep; - /* 0x30 */ s32 (*animUpdate)(); - /* 0x34 */ s8 initFlags; - /* 0x35 */ u8 flags; - /* 0x36 */ s16 prevFrameRot; - /* 0x38 */ Vec3s prevFramePos; - /* 0x3E */ Vec3s unk3E; -}; // size = 0x44 + /* 0x08 */ void* animation; // Can be an AnimationHeader or LinkAnimationHeader. + /* 0x0C */ f32 startFrame; // In mode 4, start of partial loop. + /* 0x10 */ f32 endFrame; // In mode 2, Update returns true when curFrame is equal to this. In mode 4, end of partial loop. + /* 0x14 */ f32 animLength; // Total number of frames in the current animation's file. + /* 0x18 */ f32 curFrame; // Current frame in the animation + /* 0x1C */ f32 playSpeed; // Multiplied by R_UPDATE_RATE / 3 to get the animation's frame rate. + /* 0x20 */ Vec3s* jointTable; // Current translation of model and rotations of all limbs + /* 0x24 */ Vec3s* morphTable; // Table of values used to morph between animations + /* 0x28 */ f32 morphWeight; // Weight of the current animation morph as a fraction in [0,1] + /* 0x2C */ f32 morphRate; // Reciprocal of the number of frames in the morph + /* 0x30 */ s32 (*update)(); // Can be Loop, Partial loop, Play once, Morph, or Tapered morph. Link only has Loop, Play once, and Morph + /* 0x34 */ s8 initFlags; // Flags used when initializing Link's skeleton + /* 0x35 */ u8 moveFlags; // Flags used for animations that move the actor in worldspace. + /* 0x36 */ s16 prevRot; // Previous rotation in worldspace. + /* 0x38 */ Vec3s prevTransl; // Previous modelspace translation. + /* 0x3E */ Vec3s baseTransl; // Base modelspace translation. +} SkelAnime; // size = 0x44 -typedef s32 (*OverrideLimbDraw)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, +typedef s32 (*OverrideLimbDrawOpa)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, + struct Actor* actor); + +typedef void (*PostLimbDrawOpa)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, struct Actor* actor); +typedef s32 (*OverrideLimbDraw)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, + struct Actor* actor, Gfx** gfx); + typedef void (*PostLimbDraw)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, - struct Actor* actor); + struct Actor* actor, Gfx** gfx); -typedef s32 (*OverrideLimbDraw2)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, - struct Actor* actor, Gfx** gfx); +typedef s32 (*OverrideLimbDrawFlex)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, + struct Actor* actor); -typedef void (*PostLimbDraw2)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, - struct Actor* actor, Gfx** gfx); - -typedef s32 (*OverrideLimbDrawSV)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, - struct Actor* actor); - -typedef void (*PostLimbDrawSV)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList1, Gfx** dList2, Vec3s* rot, - struct Actor* actor); +typedef void (*PostLimbDrawFlex)(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList1, Gfx** dList2, Vec3s* rot, + struct Actor* actor); typedef void (*UnkActorDraw)(struct GlobalContext* globalCtx, s32 limbIndex, struct Actor* actor); -typedef void (*AnimationEntryCallback)(struct GlobalContext*, AnimationEntryType*); +typedef void (*AnimationEntryCallback)(struct GlobalContext*, AnimationEntryData*); extern u32 link_animetion_segment; diff --git a/include/z64effect.h b/include/z64effect.h index f84ae9c9a..adb690732 100644 --- a/include/z64effect.h +++ b/include/z64effect.h @@ -274,16 +274,37 @@ typedef struct { /* 0x8 */ s32 size; } EffectSsInfo; // size = 0xC +typedef struct { + /* 0x0 */ EffectSs* data_table; // Name from debug assert + /* 0x4 */ s32 searchIndex; + /* 0x8 */ s32 size; +} EffectTableInfo; // size = 0xC + +typedef struct { + /* 0x0 */ UNK_TYPE4 unk0; + /* 0x4 */ EffectSsInitFunc init; +} ParticleOverlayInfo; // size = 0x8 + +typedef struct { + /* 0x00 */ u32 vromStart; + /* 0x04 */ u32 vromEnd; + /* 0x08 */ void* vramStart; + /* 0x0C */ void* vramEnd; + /* 0x10 */ void* loadedRamAddr; + /* 0x14 */ ParticleOverlayInfo* overlayInfo; + /* 0x18 */ u32 unk18; // Always 0x01000000? +} ParticleOverlay; // size = 0x1C + typedef enum { /* 0x00 */ EFFECT_SS_DUST, /* 0x01 */ EFFECT_SS_KIRAKIRA, - /* 0x02 */ EFFECT_SS_UNSET_02, + /* 0x02 */ EFFECT_SS_UNSET_02, // Deleted /* 0x03 */ EFFECT_SS_BOMB2, /* 0x04 */ EFFECT_SS_BLAST, /* 0x05 */ EFFECT_SS_G_SPK, /* 0x06 */ EFFECT_SS_D_FIRE, /* 0x07 */ EFFECT_SS_BUBBLE, - /* 0x08 */ EFFECT_SS_UNSET_08, + /* 0x08 */ EFFECT_SS_UNSET_08, // Deleted /* 0x09 */ EFFECT_SS_G_RIPPLE, /* 0x0A */ EFFECT_SS_G_SPLASH, /* 0x0B */ EFFECT_SS_UNSET_0B, @@ -293,8 +314,8 @@ typedef enum { /* 0x0F */ EFFECT_SS_HAHEN, /* 0x10 */ EFFECT_SS_STICK, /* 0x11 */ EFFECT_SS_SIBUKI, - /* 0x12 */ EFFECT_SS_UNSET_12, - /* 0x13 */ EFFECT_SS_UNSET_13, + /* 0x12 */ EFFECT_SS_UNSET_12, // Deleted + /* 0x13 */ EFFECT_SS_UNSET_13, // Deleted /* 0x14 */ EFFECT_SS_STONE1, /* 0x15 */ EFFECT_SS_HITMARK, /* 0x16 */ EFFECT_SS_FHG_FLASH, @@ -306,11 +327,11 @@ typedef enum { /* 0x1C */ EFFECT_SS_FIRE_TAIL, /* 0x1D */ EFFECT_SS_EN_FIRE, /* 0x1E */ EFFECT_SS_EXTRA, - /* 0x1F */ EFFECT_SS_UNSET_1F, + /* 0x1F */ EFFECT_SS_UNSET_1F, // Deleted /* 0x20 */ EFFECT_SS_DEAD_DB, /* 0x21 */ EFFECT_SS_DEAD_DD, /* 0x22 */ EFFECT_SS_DEAD_DS, - /* 0x23 */ EFFECT_SS_UNSET_23, + /* 0x23 */ EFFECT_SS_UNSET_23, // Deleted /* 0x24 */ EFFECT_SS_ICE_SMOKE, /* 0x25 */ EFFECT_EN_ICE_BLOCK, /* 0x26 */ EFFECT_SS_SBN, diff --git a/include/z64scene.h b/include/z64scene.h index 5427d473b..333569974 100644 --- a/include/z64scene.h +++ b/include/z64scene.h @@ -215,8 +215,8 @@ typedef struct { } SCmdMinimapChests; typedef struct { - /* 0x0 */ u32 opaqueDl; - /* 0x4 */ u32 translucentDl; + /* 0x0 */ Gfx* opaqueDl; + /* 0x4 */ Gfx* translucentDl; } RoomMeshType0Params; // size = 0x8 // Fields TODO diff --git a/spec b/spec index b121ad83c..fc4845af4 100644 --- a/spec +++ b/spec @@ -25,7 +25,6 @@ beginseg include "build/src/boot_O2_g3/CIC6105.o" include "build/src/boot_O2_g3/syncprintf.o" include "build/src/boot_O2_g3/fault.o" - include "build/data/boot/fault.data.o" include "build/data/boot/fault.bss.o" include "build/src/boot_O2_g3/fault_drawer.o" include "build/data/boot/fault_drawer.bss.o" @@ -491,7 +490,7 @@ beginseg include "build/src/code/code_800F12D0.o" include "build/src/code/z_eventmgr.o" include "build/data/code/z_eventmgr.bss.o" - include "build/src/code/code_800F23E0.o" + include "build/src/code/z_fcurve_data.o" include "build/src/code/z_fcurve_data_skelanime.o" include "build/data/code/code_801BD830.data.o" include "build/src/code/z_fireobj.o" @@ -528,7 +527,7 @@ beginseg include "build/data/code/z_parameter.data.o" include "build/data/code/z_parameter.bss.o" include "build/src/code/z_path.o" - include "build/src/code/code_80122660.o" + include "build/src/code/z_pause.o" include "build/src/code/z_player_lib.o" include "build/data/code/z_player_lib.data.o" include "build/data/code/z_player_lib.bss.o" diff --git a/src/boot_O1/viextendvstart.c b/src/boot_O1/viextendvstart.c new file mode 100644 index 000000000..ce9f718d0 --- /dev/null +++ b/src/boot_O1/viextendvstart.c @@ -0,0 +1,5 @@ +#include "global.h" + +void osViExtendVStart(u32 a0) { + __additional_scanline = a0; +} diff --git a/src/boot_O2/__osMalloc.c b/src/boot_O2/__osMalloc.c index 40572a59f..503c7c25a 100644 --- a/src/boot_O2/__osMalloc.c +++ b/src/boot_O2/__osMalloc.c @@ -45,7 +45,7 @@ ArenaNode* ArenaImpl_GetLastBlock(Arena* arena) { return last; } -void __osMallocInit(Arena* arena, void* start, u32 size) { +void __osMallocInit(Arena* arena, void* start, size_t size) { bzero(arena, sizeof(*arena)); ArenaImpl_LockInit(arena); __osMallocAddBlock(arena, start, size); @@ -91,7 +91,7 @@ u8 __osMallocIsInitalized(Arena* arena) { return arena->isInit; } -void* __osMalloc(Arena* arena, u32 size) { +void* __osMalloc(Arena* arena, size_t size) { ArenaNode* iter; ArenaNode* newNode; void* alloc; @@ -134,7 +134,7 @@ void* __osMalloc(Arena* arena, u32 size) { return alloc; } -void* __osMallocR(Arena* arena, u32 size) { +void* __osMallocR(Arena* arena, size_t size) { ArenaNode* iter; ArenaNode* newNode; u32 blockSize; @@ -219,7 +219,7 @@ end: #pragma GLOBAL_ASM("asm/non_matchings/boot/__osMalloc/__osRealloc.s") -void __osAnalyzeArena(Arena* arena, u32* outMaxFree, u32* outFree, u32* outAlloc) { +void __osAnalyzeArena(Arena* arena, size_t* outMaxFree, size_t* outFree, size_t* outAlloc) { ArenaNode* iter; ArenaImpl_Lock(arena); diff --git a/src/boot_O2/__osMemset.c b/src/boot_O2/__osMemset.c index 3a5469855..0c4172e9f 100644 --- a/src/boot_O2/__osMemset.c +++ b/src/boot_O2/__osMemset.c @@ -1,6 +1,6 @@ #include "global.h" -void* __osMemset(void* ptr, s32 val, u32 size) { +void* __osMemset(void* ptr, s32 val, size_t size) { u8* dst = ptr; register s32 rem; diff --git a/src/boot_O2/loadfragment2.c b/src/boot_O2/loadfragment2.c index b9ea4533d..5c884be96 100644 --- a/src/boot_O2/loadfragment2.c +++ b/src/boot_O2/loadfragment2.c @@ -71,7 +71,7 @@ void Load2_Relocate(u32 allocatedVRamAddr, OverlayRelocationSection* overlayInfo s32 Load2_LoadOverlay(u32 vRomStart, u32 vRomEnd, u32 vRamStart, u32 vRamEnd, u32 allocatedVRamAddr) { int nbytes; u32 pad; - u32 size; + size_t size; void* end; OverlayRelocationSection* overlayInfo; @@ -106,9 +106,9 @@ s32 Load2_LoadOverlay(u32 vRomStart, u32 vRomEnd, u32 vRamStart, u32 vRamEnd, u3 #pragma GLOBAL_ASM("asm/non_matchings/boot/loadfragment2/Load2_LoadOverlay.s") #endif -void* Load2_AllocateAndLoad(u32 vRomStart, u32 vRomEnd, u32 vRamStart, u32 vRamEnd) { +void* Overlay_AllocateAndLoad(u32 vRomStart, u32 vRomEnd, u32 vRamStart, u32 vRamEnd) { void* allocatedVRamAddr; - u32 size; + size_t size; size = vRamEnd - vRamStart; allocatedVRamAddr = SystemArena_MallocR(size); diff --git a/src/boot_O2/system_malloc.c b/src/boot_O2/system_malloc.c index 61906ce42..ad2bb6345 100644 --- a/src/boot_O2/system_malloc.c +++ b/src/boot_O2/system_malloc.c @@ -2,15 +2,15 @@ Arena gSystemArena; -void* SystemArena_Malloc(u32 size) { +void* SystemArena_Malloc(size_t size) { return __osMalloc(&gSystemArena, size); } -void* SystemArena_MallocR(u32 size) { +void* SystemArena_MallocR(size_t size) { return __osMallocR(&gSystemArena, size); } -void* SystemArena_Realloc(void* oldPtr, u32 newSize) { +void* SystemArena_Realloc(void* oldPtr, size_t newSize) { return __osRealloc(&gSystemArena, oldPtr, newSize); } @@ -18,9 +18,9 @@ void SystemArena_Free(void* ptr) { __osFree(&gSystemArena, ptr); } -void* SystemArena_Calloc(u32 elements, u32 size) { +void* SystemArena_Calloc(u32 elements, size_t size) { void* ptr; - u32 totalSize = elements * size; + size_t totalSize = elements * size; ptr = __osMalloc(&gSystemArena, totalSize); if (ptr != NULL) { @@ -29,7 +29,7 @@ void* SystemArena_Calloc(u32 elements, u32 size) { return ptr; } -void SystemArena_AnalyzeArena(u32* maxFreeBlock, u32* bytesFree, u32* bytesAllocated) { +void SystemArena_AnalyzeArena(size_t* maxFreeBlock, size_t* bytesFree, size_t* bytesAllocated) { __osAnalyzeArena(&gSystemArena, maxFreeBlock, bytesFree, bytesAllocated); } @@ -37,7 +37,7 @@ u32 SystemArena_CheckArena(void) { return __osCheckArena(&gSystemArena); } -void SystemArena_InitArena(void* start, u32 size) { +void SystemArena_InitArena(void* start, size_t size) { __osMallocInit(&gSystemArena, start, size); } diff --git a/src/boot_O2_g3/fault.c b/src/boot_O2_g3/fault.c index 3cc3deb35..1851d21cb 100644 --- a/src/boot_O2_g3/fault.c +++ b/src/boot_O2_g3/fault.c @@ -1,7 +1,32 @@ +#include "ultra64.h" #include "global.h" #include "vt.h" -#pragma GLOBAL_ASM("asm/non_matchings/boot/fault/D_800982B0.s") +// data +const char* sCpuExceptions[] = { + "Interrupt", + "TLB modification", + "TLB exception on load", + "TLB exception on store", + "Address error on load", + "Address error on store", + "Bus error on inst.", + "Bus error on data", + "System call exception", + "Breakpoint exception", + "Reserved instruction", + "Coprocessor unusable", + "Arithmetic overflow", + "Trap exception", + "Virtual coherency on inst.", + "Floating point exception", + "Watchpoint exception", + "Virtual coherency on data", +}; + +const char* sFpuExceptions[] = { + "Unimplemented operation", "Invalid operation", "Division by zero", "Overflow", "Underflow", "Inexact operation", +}; void Fault_SleepImpl(u32 duration) { u64 value = (duration * OS_CPU_COUNTER) / 1000ull; @@ -79,7 +104,7 @@ void Fault_RemoveClient(FaultClient* client) { } } -void Fault_AddAddrConvClient(FaultAddrConvClient* client, fault_address_converter_func callback, void* param) { +void Fault_AddAddrConvClient(FaultAddrConvClient* client, FaultAddrConvFunc callback, void* param) { OSIntMask mask; u32 alreadyExists = 0; @@ -269,9 +294,9 @@ void Fault_PrintFPCR(u32 value) { u32 flag = 0x20000; FaultDrawer_Printf("FPCSR:%08xH ", value); - for (i = 0; i < ARRAY_COUNT(sExceptionNames); i++) { + for (i = 0; i < ARRAY_COUNT(sFpuExceptions); i++) { if (value & flag) { - FaultDrawer_Printf("(%s)", sExceptionNames[i]); + FaultDrawer_Printf("(%s)", sFpuExceptions[i]); break; } flag >>= 1; @@ -284,9 +309,9 @@ void osSyncPrintfFPCR(u32 value) { u32 flag = 0x20000; osSyncPrintf("FPCSR:%08xH ", value); - for (i = 0; i < ARRAY_COUNT(sExceptionNames); i++) { + for (i = 0; i < ARRAY_COUNT(sFpuExceptions); i++) { if (value & flag) { - osSyncPrintf("(%s)\n", sExceptionNames[i]); + osSyncPrintf("(%s)\n", sFpuExceptions[i]); break; } flag >>= 1; @@ -308,7 +333,7 @@ void Fault_PrintThreadContext(OSThread* t) { FaultDrawer_SetCursor(0x16, 0x14); ctx = &t->context; - FaultDrawer_Printf("THREAD:%d (%d:%s)\n", t->id, causeStrIdx, D_80096B80[causeStrIdx]); + FaultDrawer_Printf("THREAD:%d (%d:%s)\n", t->id, causeStrIdx, sCpuExceptions[causeStrIdx]); FaultDrawer_SetCharPad(-1, 0); FaultDrawer_Printf("PC:%08xH SR:%08xH VA:%08xH\n", (u32)ctx->pc, (u32)ctx->sr, (u32)ctx->badvaddr); @@ -368,7 +393,7 @@ void osSyncPrintfThreadContext(OSThread* t) { ctx = &t->context; osSyncPrintf("\n"); - osSyncPrintf("THREAD ID:%d (%d:%s)\n", t->id, causeStrIdx, D_80096B80[causeStrIdx]); + osSyncPrintf("THREAD ID:%d (%d:%s)\n", t->id, causeStrIdx, sCpuExceptions[causeStrIdx]); osSyncPrintf("PC:%08xH SR:%08xH VA:%08xH\n", (u32)ctx->pc, (u32)ctx->sr, (u32)ctx->badvaddr); osSyncPrintf("AT:%08xH V0:%08xH V1:%08xH\n", (u32)ctx->at, (u32)ctx->v0, (u32)ctx->v1); @@ -444,7 +469,7 @@ void Fault_WaitForButtonCombo(void) { } while (!CHECK_BTN_ALL(input->cur.button, BTN_DLEFT | BTN_L | BTN_R | BTN_CRIGHT)); } -void Fault_DrawMemDumpPage(char* title, u32* addr, u32 param_3) { +void Fault_DrawMemDumpPage(const char* title, u32* addr, u32 param_3) { u32* alignedAddr; u32* writeAddr; s32 y; @@ -741,9 +766,9 @@ void Fault_SetOptionsFromController3(void) { } if (faultCustomOptions) { - graphPC = graphOSThread.context.pc; - graphRA = graphOSThread.context.ra; - graphSP = graphOSThread.context.sp; + graphPC = sGraphThread.context.pc; + graphRA = sGraphThread.context.ra; + graphSP = sGraphThread.context.sp; if (CHECK_BTN_ALL(input3->press.button, BTN_R)) { faultCopyToLog = !faultCopyToLog; FaultDrawer_SetOsSyncPrintfEnabled(faultCopyToLog); diff --git a/src/boot_O2_g3/fault_drawer.c b/src/boot_O2_g3/fault_drawer.c index 4e6518d14..949faadf1 100644 --- a/src/boot_O2_g3/fault_drawer.c +++ b/src/boot_O2_g3/fault_drawer.c @@ -1,6 +1,8 @@ #include "global.h" #include "vt.h" +extern const u32 sFaultDrawerFont[]; + FaultDrawer* sFaultDrawContext = &sFaultDrawerStruct; FaultDrawer sFaultDrawerDefault = { (u16*)0x803DA800, // fb - TODO map out buffers in this region and avoid hard-coded pointer @@ -14,7 +16,7 @@ FaultDrawer sFaultDrawerDefault = { GPACK_RGBA5551(0, 0, 0, 0), // backColor 22, // cursorX 16, // cursorY - (u32*)&sFaultDrawerFont, // font + (u32*)sFaultDrawerFont, // font 8, // charW 8, // charH 0, // charWPad @@ -142,7 +144,7 @@ void FaultDrawer_FillScreen() { #pragma GLOBAL_ASM("asm/non_matchings/boot/fault_drawer/FaultDrawer_FormatStringFunc.s") -#pragma GLOBAL_ASM("asm/non_matchings/boot/fault_drawer/D_80099080.s") +const char D_80099080[] = "(null)"; void FaultDrawer_VPrintf(const char* str, char* args) { // va_list _Printf((PrintCallback)FaultDrawer_FormatStringFunc, sFaultDrawContext, str, args); diff --git a/src/boot_O2_g3/yaz0.c b/src/boot_O2_g3/yaz0.c index bf42adf3f..094c0bb38 100644 --- a/src/boot_O2_g3/yaz0.c +++ b/src/boot_O2_g3/yaz0.c @@ -122,7 +122,7 @@ s32 Yaz0_DecompressImpl(u8* src, u8* dst) { return 0; } -void Yaz0_Decompress(u32 romStart, void* dst, u32 size) { +void Yaz0_Decompress(u32 romStart, void* dst, size_t size) { s32 status; u32 pad; char sp80[0x50]; diff --git a/src/boot_O2_g3/z_std_dma.c b/src/boot_O2_g3/z_std_dma.c index 3a447b0e8..2903b488f 100644 --- a/src/boot_O2_g3/z_std_dma.c +++ b/src/boot_O2_g3/z_std_dma.c @@ -9,7 +9,7 @@ OSMesg sDmaMgrMsgs[32]; OSThread sDmaMgrThread; u8 sDmaMgrStack[0x500]; -s32 DmaMgr_DMARomToRam(u32 rom, void* ram, u32 size) { +s32 DmaMgr_DMARomToRam(u32 rom, void* ram, size_t size) { OSIoMesg ioMsg; OSMesgQueue queue; OSMesg msg[1]; @@ -111,7 +111,7 @@ const char* func_800809F4(u32 a0) { void DmaMgr_ProcessMsg(DmaRequest* req) { u32 vrom; void* ram; - u32 size; + size_t size; u32 romStart; u32 romSize; DmaEntry* dmaEntry; @@ -172,7 +172,7 @@ void DmaMgr_ThreadEntry(void* a0) { } } -s32 DmaMgr_SendRequestImpl(DmaRequest* request, void* vramStart, u32 vromStart, u32 size, UNK_TYPE4 unused, +s32 DmaMgr_SendRequestImpl(DmaRequest* request, void* vramStart, u32 vromStart, size_t size, UNK_TYPE4 unused, OSMesgQueue* queue, OSMesg msg) { if (gIrqMgrResetStatus >= 2) { return -2; @@ -190,7 +190,7 @@ s32 DmaMgr_SendRequestImpl(DmaRequest* request, void* vramStart, u32 vromStart, return 0; } -s32 DmaMgr_SendRequest0(void* vramStart, u32 vromStart, u32 size) { +s32 DmaMgr_SendRequest0(void* vramStart, u32 vromStart, size_t size) { DmaRequest req; OSMesgQueue queue; OSMesg msg[1]; diff --git a/src/code/PreRender.c b/src/code/PreRender.c index bdf4d326c..0afb1df68 100644 --- a/src/code/PreRender.c +++ b/src/code/PreRender.c @@ -17,7 +17,7 @@ void PreRender_SetValuesSave(PreRender* this, u32 width, u32 height, void* fbuf, void PreRender_Init(PreRender* this) { bzero(this, sizeof(PreRender)); - func_80174AA0(&this->alloc); + ListAlloc_Init(&this->alloc); } /** @@ -35,7 +35,7 @@ void PreRender_SetValues(PreRender* this, u32 width, u32 height, void* fbuf, voi } void PreRender_Destroy(PreRender* this) { - func_80174BA0(&this->alloc); + ListAlloc_FreeAll(&this->alloc); } void func_8016FDB8(PreRender* this, Gfx** gfxp, void* buf, void* bufSave, u32 arg4) { diff --git a/src/code/TwoHeadArena.c b/src/code/TwoHeadArena.c index b4262e3c6..83d5be3d1 100644 --- a/src/code/TwoHeadArena.c +++ b/src/code/TwoHeadArena.c @@ -12,7 +12,7 @@ void* THA_GetTail(TwoHeadArena* tha) { return tha->tail; } -void* THA_AllocStart(TwoHeadArena* tha, u32 size) { +void* THA_AllocStart(TwoHeadArena* tha, size_t size) { void* start = tha->head; tha->head = (u32)tha->head + size; @@ -23,7 +23,7 @@ void* THA_AllocStart1(TwoHeadArena* tha) { return THA_AllocStart(tha, 1); } -void* THA_AllocEnd(TwoHeadArena* tha, u32 size) { +void* THA_AllocEnd(TwoHeadArena* tha, size_t size) { u32 mask; if (size >= 0x10) { @@ -42,14 +42,14 @@ void* THA_AllocEnd(TwoHeadArena* tha, u32 size) { return tha->tail; } -void* THA_AllocEndAlign16(TwoHeadArena* tha, u32 size) { +void* THA_AllocEndAlign16(TwoHeadArena* tha, size_t size) { u32 mask = ~0xF; tha->tail = (((u32)tha->tail & mask) - size) & mask; return tha->tail; } -void* THA_AllocEndAlign(TwoHeadArena* tha, u32 size, u32 mask) { +void* THA_AllocEndAlign(TwoHeadArena* tha, size_t size, u32 mask) { tha->tail = (((u32)tha->tail & mask) - size) & mask; return tha->tail; } @@ -67,7 +67,7 @@ void THA_Init(TwoHeadArena* tha) { tha->tail = (u32)tha->bufp + tha->size; } -void THA_Ct(TwoHeadArena* tha, void* ptr, u32 size) { +void THA_Ct(TwoHeadArena* tha, void* ptr, size_t size) { bzero(tha, sizeof(TwoHeadArena)); tha->bufp = ptr; tha->size = size; diff --git a/src/code/TwoHeadGfxArena.c b/src/code/TwoHeadGfxArena.c index 81a3a383b..2f1629765 100644 --- a/src/code/TwoHeadGfxArena.c +++ b/src/code/TwoHeadGfxArena.c @@ -1,6 +1,6 @@ #include "global.h" -void THGA_Ct(TwoHeadGfxArena* thga, Gfx* start, u32 size) { +void THGA_Ct(TwoHeadGfxArena* thga, Gfx* start, size_t size) { THA_Ct((TwoHeadArena*)thga, start, size); } @@ -44,7 +44,7 @@ Gfx* THGA_AllocStart8Wrapper(TwoHeadGfxArena* thga) { return THGA_AllocStart8(thga); } -Gfx* THGA_AllocEnd(TwoHeadGfxArena* thga, u32 size) { +Gfx* THGA_AllocEnd(TwoHeadGfxArena* thga, size_t size) { return THA_AllocEnd((TwoHeadArena*)thga, size); } diff --git a/src/code/code_800F23E0.c b/src/code/code_800F23E0.c deleted file mode 100644 index 008a95db3..000000000 --- a/src/code/code_800F23E0.c +++ /dev/null @@ -1,5 +0,0 @@ -#include "global.h" - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800F23E0/func_800F23E0.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_800F23E0/func_800F2478.s") diff --git a/src/code/code_80122660.c b/src/code/code_80122660.c deleted file mode 100644 index 7c0da2932..000000000 --- a/src/code/code_80122660.c +++ /dev/null @@ -1,5 +0,0 @@ -#include "global.h" - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_80122660/func_80122660.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_80122660/func_80122670.s") diff --git a/src/code/game.c b/src/code/game.c index eb26dee8a..a90fc7ac2 100644 --- a/src/code/game.c +++ b/src/code/game.c @@ -22,7 +22,7 @@ void Game_SetFramerateDivisor(GameState* gameState, s32 divisor) { } void GameState_SetFBFilter(Gfx** gfx, u32 arg1) { - Gfx* _gfx = *gfx; + Gfx* dlist = *gfx; if ((R_FB_FILTER_TYPE > 0) && (R_FB_FILTER_TYPE < 5)) { D_801F8010.type = R_FB_FILTER_TYPE; @@ -30,7 +30,7 @@ void GameState_SetFBFilter(Gfx** gfx, u32 arg1) { D_801F8010.color.g = R_FB_FILTER_PRIM_COLOR(1); D_801F8010.color.b = R_FB_FILTER_PRIM_COLOR(2); D_801F8010.color.a = R_FB_FILTER_A; - func_80140D10(&D_801F8010, &_gfx, arg1); + func_80140D10(&D_801F8010, &dlist, arg1); } else { if ((R_FB_FILTER_TYPE == 5) || (R_FB_FILTER_TYPE == 6)) { D_801F8020.useRgba = (R_FB_FILTER_TYPE == 6); @@ -42,7 +42,7 @@ void GameState_SetFBFilter(Gfx** gfx, u32 arg1) { D_801F8020.envColor.g = R_FB_FILTER_ENV_COLOR(1); D_801F8020.envColor.b = R_FB_FILTER_ENV_COLOR(2); D_801F8020.envColor.a = R_FB_FILTER_A; - func_80142100(&D_801F8020, &_gfx, arg1); + func_80142100(&D_801F8020, &dlist, arg1); } else { if (R_FB_FILTER_TYPE == 7) { sMonoColors.unk_00 = 0; @@ -54,27 +54,24 @@ void GameState_SetFBFilter(Gfx** gfx, u32 arg1) { sMonoColors.envColor.g = R_FB_FILTER_ENV_COLOR(1); sMonoColors.envColor.b = R_FB_FILTER_ENV_COLOR(2); sMonoColors.envColor.a = R_FB_FILTER_A; - VisMono_Draw(&sMonoColors, &_gfx, arg1); + VisMono_Draw(&sMonoColors, &dlist, arg1); } } } - *gfx = _gfx; + *gfx = dlist; } -void Game_Nop80173534(GameState* gamestate) { - ; +void Game_Nop80173534(GameState* gameState) { } -void GameState_Draw(GameState* gamestate, GraphicsContext* gfxCtx) { +void GameState_Draw(GameState* gameState, GraphicsContext* gfxCtx) { Gfx* nextDisplayList; Gfx* polyOpa; OPEN_DISPS(gfxCtx); - polyOpa = POLY_OPA_DISP; - nextDisplayList = Graph_GfxPlusOne(POLY_OPA_DISP); - + nextDisplayList = Graph_GfxPlusOne(polyOpa = POLY_OPA_DISP); gSPDisplayList(OVERLAY_DISP++, nextDisplayList); if (R_FB_FILTER_TYPE && R_FB_FILTER_ENV_COLOR(3) == 0) { @@ -98,119 +95,123 @@ void GameState_Draw(GameState* gamestate, GraphicsContext* gfxCtx) { if (R_ENABLE_ARENA_DBG != 0) { SpeedMeter_DrawTimeEntries(&D_801F7FF0, gfxCtx); - SpeedMeter_DrawAllocEntries(&D_801F7FF0, gfxCtx, gamestate); + SpeedMeter_DrawAllocEntries(&D_801F7FF0, gfxCtx, gameState); } CLOSE_DISPS(gfxCtx); } -void Game_ResetSegments(GraphicsContext* gfxCtx) { - gSPSegment(gfxCtx->polyOpa.p++, 0, 0); - gSPSegment(gfxCtx->polyOpa.p++, 0xF, gfxCtx->framebuffer); - gSPSegment(gfxCtx->polyXlu.p++, 0, 0); - gSPSegment(gfxCtx->polyXlu.p++, 0xF, gfxCtx->framebuffer); - gSPSegment(gfxCtx->overlay.p++, 0, 0); - gSPSegment(gfxCtx->overlay.p++, 0xF, gfxCtx->framebuffer); +void GameState_SetFrameBuffer(GraphicsContext* gfxCtx) { + OPEN_DISPS(gfxCtx); + + gSPSegment(POLY_OPA_DISP++, 0, NULL); + gSPSegment(POLY_OPA_DISP++, 0xF, gfxCtx->framebuffer); + gSPSegment(POLY_XLU_DISP++, 0, NULL); + gSPSegment(POLY_XLU_DISP++, 0xF, gfxCtx->framebuffer); + gSPSegment(OVERLAY_DISP++, 0, NULL); + gSPSegment(OVERLAY_DISP++, 0xF, gfxCtx->framebuffer); + + CLOSE_DISPS(gfxCtx); } void func_801736DC(GraphicsContext* gfxCtx) { Gfx* nextDisplayList; - Gfx* _polyOpa; + Gfx* polyOpa; - nextDisplayList = Graph_GfxPlusOne(_polyOpa = gfxCtx->polyOpa.p); - gSPDisplayList(gfxCtx->overlay.p++, nextDisplayList); + OPEN_DISPS(gfxCtx); + + nextDisplayList = Graph_GfxPlusOne(polyOpa = gfxCtx->polyOpa.p); + gSPDisplayList(OVERLAY_DISP++, nextDisplayList); gSPEndDisplayList(nextDisplayList++); - Graph_BranchDlist(_polyOpa, nextDisplayList); + Graph_BranchDlist(polyOpa, nextDisplayList); - gfxCtx->polyOpa.p = nextDisplayList; + POLY_OPA_DISP = nextDisplayList; + + CLOSE_DISPS(gfxCtx); } -void Game_UpdateInput(GameState* gamestate) { - Padmgr_GetInput(gamestate->input, 1); +void Game_UpdateInput(GameState* gameState) { + Padmgr_GetInput(gameState->input, 1); } -void Game_Update(GameState* gamestate) { - GraphicsContext* _gCtx; - _gCtx = gamestate->gfxCtx; +void Game_Update(GameState* gameState) { + GraphicsContext* gfxCtx = gameState->gfxCtx; - Game_ResetSegments(gamestate->gfxCtx); + GameState_SetFrameBuffer(gameState->gfxCtx); - gamestate->main(gamestate); + gameState->main(gameState); if (R_PAUSE_MENU_MODE != 2) { - GameState_Draw(gamestate, _gCtx); - func_801736DC(_gCtx); + GameState_Draw(gameState, gfxCtx); + func_801736DC(gfxCtx); } } -void Game_IncrementFrameCount(GameState* gamestate) { - Game_Nop80173534(gamestate); - gamestate->frames++; +void Game_IncrementFrameCount(GameState* gameState) { + Game_Nop80173534(gameState); + gameState->frames++; } -void Game_InitHeap(GameState* gamestate, u32 size) { - GameState* _ctx; - void* buf; - - _ctx = gamestate; - buf = Gamealloc_Alloc(&_ctx->alloc, size); +void GameState_InitArena(GameState* gameState, size_t size) { + GameAlloc* alloc = &gameState->alloc; + void* buf = GameAlloc_Malloc(alloc, size); if (buf) { - THA_Ct(&gamestate->heap, buf, size); + THA_Ct(&gameState->heap, buf, size); return; } - THA_Ct(&gamestate->heap, NULL, 0); - __assert("../game.c", 0x40B); + THA_Ct(&gameState->heap, NULL, 0); + __assert("../game.c", 1035); } -void Game_ResizeHeap(GameState* gamestate, u32 size) { +void GameState_Realloc(GameState* gameState, size_t size) { GameAlloc* alloc; - void* buf; - u32 systemMaxFree; - u32 bytesFree; - u32 bytesAllocated; + void* gameArena; + size_t systemMaxFree; + size_t bytesFree; + size_t bytesAllocated; void* heapStart; - heapStart = gamestate->heap.bufp; - alloc = &gamestate->alloc; - THA_Dt(&gamestate->heap); - Gamealloc_Free(alloc, heapStart); + heapStart = gameState->heap.bufp; + alloc = &gameState->alloc; + THA_Dt(&gameState->heap); + GameAlloc_Free(alloc, heapStart); SystemArena_AnalyzeArena(&systemMaxFree, &bytesFree, &bytesAllocated); size = ((systemMaxFree - (sizeof(ArenaNode))) < size) ? (0) : (size); - if (!size) { + if (size == 0) { size = systemMaxFree - (sizeof(ArenaNode)); } - if ((buf = Gamealloc_Alloc(alloc, size)) != NULL) { - THA_Ct(&gamestate->heap, buf, size); + if ((gameArena = GameAlloc_Malloc(alloc, size)) != NULL) { + THA_Ct(&gameState->heap, gameArena, size); } else { - THA_Ct(&gamestate->heap, 0, 0); - __assert("../game.c", 0x432); + THA_Ct(&gameState->heap, 0, 0); + __assert("../game.c", 1074); } } -void Game_StateInit(GameState* gamestate, GameStateFunc gameStateInit, GraphicsContext* gfxCtx) { - gamestate->gfxCtx = gfxCtx; - gamestate->frames = 0U; - gamestate->main = NULL; - gamestate->destroy = NULL; - gamestate->running = 1; - gfxCtx->unk274 = D_801FBB88; +void GameState_Init(GameState* gameState, GameStateFunc init, GraphicsContext* gfxCtx) { + gameState->gfxCtx = gfxCtx; + gameState->frames = 0U; + gameState->main = NULL; + gameState->destroy = NULL; + gameState->running = 1; + gfxCtx->viMode = D_801FBB88; gfxCtx->viConfigFeatures = gViConfigFeatures; gfxCtx->viConfigXScale = gViConfigXScale; gfxCtx->viConfigYScale = gViConfigYScale; - gamestate->nextGameStateInit = NULL; - gamestate->nextGameStateSize = 0U; + gameState->nextGameStateInit = NULL; + gameState->nextGameStateSize = 0U; { s32 requiredScopeTemp; - Gamealloc_Init(&gamestate->alloc); - Game_InitHeap(gamestate, 0x100000); - Game_SetFramerateDivisor(gamestate, 3); + GameAlloc_Init(&gameState->alloc); + GameState_InitArena(gameState, 0x100000); + Game_SetFramerateDivisor(gameState, 3); - gameStateInit(gamestate); + init(gameState); func_80140CE0(&D_801F8010); func_801420C0(&D_801F8020); @@ -219,17 +220,17 @@ void Game_StateInit(GameState* gamestate, GameStateFunc gameStateInit, GraphicsC func_801773A0(&D_801F7FF0); func_8013ED9C(); - osSendMesg(&gamestate->gfxCtx->unk5C, NULL, 1); + osSendMesg(&gameState->gfxCtx->unk5C, NULL, 1); } } -void Game_StateFini(GameState* gamestate) { +void GameState_Destroy(GameState* gameState) { func_80172BC0(); func_8019E014(); - osRecvMesg(&gamestate->gfxCtx->unk5C, 0, 1); + osRecvMesg(&gameState->gfxCtx->unk5C, NULL, OS_MESG_BLOCK); - if (gamestate->destroy != 0) { - gamestate->destroy(gamestate); + if (gameState->destroy != NULL) { + gameState->destroy(gameState); } func_8013EDD0(); @@ -238,28 +239,28 @@ void Game_StateFini(GameState* gamestate) { func_801420F4(&D_801F8020); func_80141900(&sMonoColors); func_80140900(&D_801F8048); - THA_Dt(&gamestate->heap); - Gamealloc_FreeAll(&gamestate->alloc); + THA_Dt(&gameState->heap); + GameAlloc_Cleanup(&gameState->alloc); } -GameStateFunc Game_GetNextStateInit(GameState* gamestate) { - return gamestate->nextGameStateInit; +GameStateFunc GameState_GetNextStateInit(GameState* gameState) { + return gameState->nextGameStateInit; } -u32 Game_GetNextStateSize(GameState* gamestate) { - return gamestate->nextGameStateSize; +size_t Game_GetNextStateSize(GameState* gameState) { + return gameState->nextGameStateSize; } -u32 Game_GetShouldContinue(GameState* gamestate) { - return gamestate->running; +u32 GameState_IsRunning(GameState* gameState) { + return gameState->running; } -s32 Game_GetHeapFreeSize(GameState* gamestate) { - return THA_GetSize(&gamestate->heap); +s32 GameState_GetArenaSize(GameState* gameState) { + return THA_GetSize(&gameState->heap); } -s32 func_80173B48(GameState* gamestate) { - s32 result; - result = OS_CYCLES_TO_NSEC(gamestate->framerateDivisor * sIrqMgrRetraceTime) - OS_CYCLES_TO_NSEC(D_801FBAF0); +s32 func_80173B48(GameState* gameState) { + s32 result = OS_CYCLES_TO_NSEC(gameState->framerateDivisor * sIrqMgrRetraceTime) - OS_CYCLES_TO_NSEC(D_801FBAF0); + return result; } diff --git a/src/code/gamealloc.c b/src/code/gamealloc.c index 34d595f79..541f9125b 100644 --- a/src/code/gamealloc.c +++ b/src/code/gamealloc.c @@ -1,11 +1,59 @@ #include "global.h" -#pragma GLOBAL_ASM("asm/non_matchings/code/gamealloc/func_80173BF0.s") +void GameAlloc_Log(GameAlloc* this) { + GameAllocEntry* iter; -#pragma GLOBAL_ASM("asm/non_matchings/code/gamealloc/Gamealloc_Alloc.s") + iter = this->base.next; + while (iter != &this->base) { + iter = iter->next; + } +} -#pragma GLOBAL_ASM("asm/non_matchings/code/gamealloc/Gamealloc_Free.s") +void* GameAlloc_Malloc(GameAlloc* this, size_t size) { + GameAllocEntry* ptr = SystemArena_Malloc(size + sizeof(GameAllocEntry)); -#pragma GLOBAL_ASM("asm/non_matchings/code/gamealloc/Gamealloc_FreeAll.s") + if (ptr != NULL) { + ptr->size = size; + ptr->prev = this->head; + this->head->next = ptr; + this->head = ptr; + ptr->next = &this->base; + this->base.prev = this->head; + return ptr + 1; + } else { + return NULL; + } +} -#pragma GLOBAL_ASM("asm/non_matchings/code/gamealloc/Gamealloc_Init.s") +void GameAlloc_Free(GameAlloc* this, void* data) { + GameAllocEntry* ptr; + + if (data != NULL) { + ptr = &((GameAllocEntry*)data)[-1]; + ptr->prev->next = ptr->next; + ptr->next->prev = ptr->prev; + this->head = this->base.prev; + SystemArena_Free(ptr); + } +} + +void GameAlloc_Cleanup(GameAlloc* this) { + GameAllocEntry* next = this->base.next; + GameAllocEntry* cur; + + while (&this->base != next) { + cur = next; + next = next->next; + SystemArena_Free(cur); + } + + this->head = &this->base; + this->base.next = &this->base; + this->base.prev = &this->base; +} + +void GameAlloc_Init(GameAlloc* this) { + this->head = &this->base; + this->base.next = &this->base; + this->base.prev = &this->base; +} diff --git a/src/code/listalloc.c b/src/code/listalloc.c index 3880806a1..da294a109 100644 --- a/src/code/listalloc.c +++ b/src/code/listalloc.c @@ -1,9 +1,62 @@ #include "global.h" -#pragma GLOBAL_ASM("asm/non_matchings/code/listalloc/func_80174AA0.s") +ListAlloc* ListAlloc_Init(ListAlloc* this) { + this->prev = NULL; + this->next = NULL; + return this; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/listalloc/func_80174AB4.s") +void* ListAlloc_Alloc(ListAlloc* this, size_t size) { + ListAlloc* ptr = SystemArena_Malloc(size + sizeof(ListAlloc)); + ListAlloc* next; -#pragma GLOBAL_ASM("asm/non_matchings/code/listalloc/func_80174B20.s") + if (ptr == NULL) { + return NULL; + } -#pragma GLOBAL_ASM("asm/non_matchings/code/listalloc/func_80174BA0.s") + next = this->next; + if (next != NULL) { + next->next = ptr; + } + + ptr->prev = next; + ptr->next = NULL; + this->next = ptr; + + if (this->prev == NULL) { + this->prev = ptr; + } + + return (u8*)ptr + sizeof(ListAlloc); +} + +void ListAlloc_Free(ListAlloc* this, void* data) { + ListAlloc* ptr = &((ListAlloc*)data)[-1]; + + if (ptr->prev != NULL) { + ptr->prev->next = ptr->next; + } + + if (ptr->next != NULL) { + ptr->next->prev = ptr->prev; + } + + if (this->prev == ptr) { + this->prev = ptr->next; + } + + if (this->next == ptr) { + this->next = ptr->prev; + } + + SystemArena_Free(ptr); +} + +void ListAlloc_FreeAll(ListAlloc* this) { + ListAlloc* iter = this->prev; + + while (iter != NULL) { + ListAlloc_Free(this, (u8*)iter + sizeof(ListAlloc)); + iter = this->prev; + } +} diff --git a/src/code/main.c b/src/code/main.c index a2b859991..59ffb6a32 100644 --- a/src/code/main.c +++ b/src/code/main.c @@ -28,36 +28,36 @@ void Main(void* arg) { R_ENABLE_ARENA_DBG = 0; - osCreateMesgQueue(&siEventCallbackQueue, siEventCallbackBuffer, ARRAY_COUNT(siEventCallbackBuffer)); - osSetEventMesg(OS_EVENT_SI, &siEventCallbackQueue, NULL); + osCreateMesgQueue(&sSiIntMsgQ, sSiIntMsgBuf, ARRAY_COUNT(sSiIntMsgBuf)); + osSetEventMesg(OS_EVENT_SI, &sSiIntMsgQ, NULL); - osCreateMesgQueue(&mainIrqmgrCallbackQueue, mainIrqCallbackBuffer, ARRAY_COUNT(mainIrqCallbackBuffer)); + osCreateMesgQueue(&irqMgrMsgQ, irqMgrMsgBuf, ARRAY_COUNT(irqMgrMsgBuf)); StackCheck_Init(&schedStackEntry, schedStack, schedStack + sizeof(schedStack), 0, 0x100, "sched"); Sched_Init(&gSchedContext, schedStack + sizeof(schedStack), Z_PRIORITY_SCHED, D_8009B290, 1, &gIrqMgr); CIC6105_AddRomInfoFaultPage(); - IrqMgr_AddClient(&gIrqMgr, &mainIrqmgrCallbackNode, &mainIrqmgrCallbackQueue); + IrqMgr_AddClient(&gIrqMgr, &irqClient, &irqMgrMsgQ); StackCheck_Init(&audioStackEntry, audioStack, audioStack + sizeof(audioStack), 0, 0x100, "audio"); AudioMgr_Init(&audioContext, audioStack + sizeof(audioStack), Z_PRIORITY_AUDIOMGR, 0xA, &gSchedContext, &gIrqMgr); StackCheck_Init(&padmgrStackEntry, padmgrStack, padmgrStack + sizeof(padmgrStack), 0, 0x100, "padmgr"); - Padmgr_Start(&siEventCallbackQueue, &gIrqMgr, 7, Z_PRIORITY_PADMGR, padmgrStack + sizeof(padmgrStack)); + PadMgr_Init(&sSiIntMsgQ, &gIrqMgr, 7, Z_PRIORITY_PADMGR, padmgrStack + sizeof(padmgrStack)); AudioMgr_Unlock(&audioContext); - StackCheck_Init(&graphStackEntry, graphStack, graphStack + sizeof(graphStack), 0, 0x100, "graph"); - osCreateThread(&graphOSThread, Z_THREAD_ID_GRAPH, Graph_ThreadEntry, arg, graphStack + sizeof(graphStack), + StackCheck_Init(&sGraphStackInfo, sGraphStack, sGraphStack + sizeof(sGraphStack), 0, 0x100, "graph"); + osCreateThread(&sGraphThread, Z_THREAD_ID_GRAPH, Graph_ThreadEntry, arg, sGraphStack + sizeof(sGraphStack), Z_PRIORITY_GRAPH); - osStartThread(&graphOSThread); + osStartThread(&sGraphThread); exit = false; while (!exit) { msg = NULL; - osRecvMesg(&mainIrqmgrCallbackQueue, (OSMesg)&msg, OS_MESG_BLOCK); + osRecvMesg(&irqMgrMsgQ, (OSMesg)&msg, OS_MESG_BLOCK); if (msg == NULL) { break; } @@ -72,6 +72,6 @@ void Main(void* arg) { } } - IrqMgr_RemoveClient(&gIrqMgr, &mainIrqmgrCallbackNode); - osDestroyThread(&graphOSThread); + IrqMgr_RemoveClient(&gIrqMgr, &irqClient); + osDestroyThread(&sGraphThread); } diff --git a/src/code/padmgr.c b/src/code/padmgr.c index 65b9d0ff4..a8ef1db15 100644 --- a/src/code/padmgr.c +++ b/src/code/padmgr.c @@ -54,4 +54,4 @@ #pragma GLOBAL_ASM("asm/non_matchings/code/padmgr/Padmgr_ThreadEntry.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/padmgr/Padmgr_Start.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/padmgr/PadMgr_Init.s") diff --git a/src/code/sys_matrix.c b/src/code/sys_matrix.c index cab2e563a..a4d5b9379 100644 --- a/src/code/sys_matrix.c +++ b/src/code/sys_matrix.c @@ -1,92 +1,92 @@ #include "global.h" -void SysMatrix_StateAlloc(GameState* gamestate) { - sMatrixStack = (MtxF*)THA_AllocEndAlign16(&gamestate->heap, 0x500); +void Matrix_StateAlloc(GameState* gameState) { + sMatrixStack = (MtxF*)THA_AllocEndAlign16(&gameState->heap, 0x500); sCurrentMatrix = sMatrixStack; } -void SysMatrix_StatePush(void) { +void Matrix_StatePush(void) { MtxF* prev = sCurrentMatrix; sCurrentMatrix++; Matrix_MtxFCopy(sCurrentMatrix, prev); } -void SysMatrix_StatePop(void) { +void Matrix_StatePop(void) { sCurrentMatrix--; } -#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/SysMatrix_CopyCurrentState.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/Matrix_CopyCurrentState.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/SysMatrix_SetCurrentState.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/Matrix_SetCurrentState.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/SysMatrix_GetCurrentState.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/Matrix_GetCurrentState.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/SysMatrix_InsertMatrix.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/Matrix_InsertMatrix.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/SysMatrix_InsertTranslation.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/Matrix_InsertTranslation.s") #pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/Matrix_Scale.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/SysMatrix_InsertXRotation_s.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/Matrix_InsertXRotation_s.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/SysMatrix_InsertXRotation_f.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/Matrix_InsertXRotation_f.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/SysMatrix_RotateStateAroundXAxis.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/Matrix_RotateStateAroundXAxis.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/SysMatrix_SetStateXRotation.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/Matrix_SetStateXRotation.s") #pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/Matrix_RotateY.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/SysMatrix_InsertYRotation_f.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/Matrix_InsertYRotation_f.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/SysMatrix_InsertZRotation_s.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/Matrix_InsertZRotation_s.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/SysMatrix_InsertZRotation_f.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/Matrix_InsertZRotation_f.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/SysMatrix_InsertRotation.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/Matrix_InsertRotation.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/SysMatrix_RotateAndTranslateState.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/Matrix_JointPosition.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/SysMatrix_SetStateRotationAndTranslation.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/Matrix_SetStateRotationAndTranslation.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/SysMatrix_ToRSPMatrix.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/Matrix_ToRSPMatrix.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/SysMatrix_GetStateAsRSPMatrix.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/Matrix_ToMtx.s") #pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/Matrix_NewMtx.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/SysMatrix_AppendToPolyOpaDisp.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/Matrix_AppendToPolyOpaDisp.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/SysMatrix_MultiplyVector3fByState.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/Matrix_MultiplyVector3fByState.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/SysMatrix_GetStateTranslation.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/Matrix_GetStateTranslation.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/SysMatrix_GetStateTranslationAndScaledX.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/Matrix_GetStateTranslationAndScaledX.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/SysMatrix_GetStateTranslationAndScaledY.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/Matrix_GetStateTranslationAndScaledY.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/SysMatrix_GetStateTranslationAndScaledZ.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/Matrix_GetStateTranslationAndScaledZ.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/SysMatrix_MultiplyVector3fXZByCurrentState.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/Matrix_MultiplyVector3fXZByCurrentState.s") #pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/Matrix_MtxFCopy.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/SysMatrix_FromRSPMatrix.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/Matrix_FromRSPMatrix.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/SysMatrix_MultiplyVector3fByMatrix.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/Matrix_MultiplyVector3fByMatrix.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/SysMatrix_TransposeXYZ.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/Matrix_TransposeXYZ.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/SysMatrix_NormalizeXYZ.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/Matrix_NormalizeXYZ.s") #pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/func_8018219C.s") #pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/func_801822C4.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/SysMatrix_InsertRotationAroundUnitVector_f.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/Matrix_InsertRotationAroundUnitVector_f.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/SysMatrix_InsertRotationAroundUnitVector_s.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/Matrix_InsertRotationAroundUnitVector_s.s") #pragma GLOBAL_ASM("asm/non_matchings/code/sys_matrix/func_80182C90.s") diff --git a/src/code/z_DLF.c b/src/code/z_DLF.c index 1ae43c91d..688a5af15 100644 --- a/src/code/z_DLF.c +++ b/src/code/z_DLF.c @@ -1,5 +1,5 @@ #include "global.h" -#pragma GLOBAL_ASM("asm/non_matchings/code/z_DLF/DLF_LoadGameState.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/z_DLF/Overlay_LoadGameState.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_DLF/DLF_FreeGameState.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/z_DLF/Overlay_FreeGameState.s") diff --git a/src/code/z_actor.c b/src/code/z_actor.c index 2f1277057..8d87e539b 100644 --- a/src/code/z_actor.c +++ b/src/code/z_actor.c @@ -53,7 +53,7 @@ void ActorShadow_Draw(Actor* actor, Lights* lights, GlobalContext* globalCtx, Gf } func_800C0094(actor->floorPoly, actor->world.pos.x, actor->floorHeight, actor->world.pos.z, &mtx); - SysMatrix_SetCurrentState(&mtx); + Matrix_SetCurrentState(&mtx); if (dlist != D_04076BC0) { Matrix_RotateY((f32)actor->shape.rot.y * (M_PI / 32768), MTXMODE_APPLY); @@ -117,7 +117,7 @@ void func_800B40E0(GlobalContext* globalCtx, Light* light, MtxF* arg2, s32 arg3, sp58 = Math_FAtan2F(light->l.dir[0], light->l.dir[2]); arg6 *= (4.5f - (light->l.dir[1] * 0.035f)); arg6 = (arg6 < 1.0f) ? 1.0f : arg6; - SysMatrix_SetCurrentState(arg2); + Matrix_SetCurrentState(arg2); Matrix_RotateY(sp58, MTXMODE_APPLY); Matrix_Scale(arg5, 1.0f, arg5 * arg6, MTXMODE_APPLY); @@ -744,7 +744,7 @@ void Actor_FreeOverlay(ActorOverlay* entry) { if ((entry->allocType & 1) != 0) { entry->loadedRamAddr = NULL; } else { - zelda_free(ramAddr); + ZeldaArena_Free(ramAddr); entry->loadedRamAddr = NULL; } } diff --git a/src/code/z_actor_dlftbls.c b/src/code/z_actor_dlftbls.c index 4165e4c9b..f33fcd538 100644 --- a/src/code/z_actor_dlftbls.c +++ b/src/code/z_actor_dlftbls.c @@ -736,7 +736,7 @@ void* ActorOverlayTable_FaultAddrConv(void* arg0, void* arg1) { s32 i; u8* ramStart; u8* ramEnd; - u32 size; + size_t size; u32 offset; for (i = 0; i < gMaxActorId; i++, overlayEntry++) { diff --git a/src/code/z_collision_check.c b/src/code/z_collision_check.c index 6ea0b2fcf..059fbce09 100644 --- a/src/code/z_collision_check.c +++ b/src/code/z_collision_check.c @@ -327,7 +327,7 @@ s32 Collider_FreeJntSph(GlobalContext* globalCtx, ColliderJntSph* collider) { collider->count = 0; if (collider->elements != NULL) { - zelda_free(collider->elements); + ZeldaArena_Free(collider->elements); } collider->elements = NULL; return 1; @@ -359,7 +359,7 @@ s32 Collider_SetJntSphToActor(GlobalContext* globalCtx, ColliderJntSph* collider Collider_SetBaseToActor(globalCtx, &collider->base, &src->base); collider->count = src->count; - collider->elements = zelda_malloc(src->count * sizeof(ColliderJntSphElement)); + collider->elements = ZeldaArena_Malloc(src->count * sizeof(ColliderJntSphElement)); if (collider->elements == NULL) { collider->count = 0; @@ -385,7 +385,7 @@ s32 Collider_SetJntSphAllocType1(GlobalContext* globalCtx, ColliderJntSph* spher Collider_SetBaseType1(globalCtx, &sphereGroup->base, actor, &src->base); sphereGroup->count = src->count; - sphereGroup->elements = zelda_malloc(src->count * sizeof(ColliderJntSphElement)); + sphereGroup->elements = ZeldaArena_Malloc(src->count * sizeof(ColliderJntSphElement)); if (sphereGroup->elements == NULL) { sphereGroup->count = 0; @@ -681,7 +681,7 @@ s32 Collider_FreeTris(GlobalContext* globalCtx, ColliderTris* tris) { tris->count = 0; if (tris->elements != NULL) { - zelda_free(tris->elements); + ZeldaArena_Free(tris->elements); } tris->elements = NULL; @@ -714,7 +714,7 @@ s32 Collider_SetTrisAllocType1(GlobalContext* globalCtx, ColliderTris* tris, Act Collider_SetBaseType1(globalCtx, &tris->base, actor, &src->base); tris->count = src->count; - tris->elements = zelda_malloc(tris->count * sizeof(ColliderTrisElement)); + tris->elements = ZeldaArena_Malloc(tris->count * sizeof(ColliderTrisElement)); if (tris->elements == NULL) { tris->count = 0; @@ -3691,7 +3691,7 @@ void Collider_UpdateSpheres(s32 limb, ColliderJntSph* collider) { D_801EE1C0.x = collider->elements[i].dim.modelSphere.center.x; D_801EE1C0.y = collider->elements[i].dim.modelSphere.center.y; D_801EE1C0.z = collider->elements[i].dim.modelSphere.center.z; - SysMatrix_MultiplyVector3fByState(&D_801EE1C0, &D_801EE1D0); + Matrix_MultiplyVector3fByState(&D_801EE1C0, &D_801EE1D0); collider->elements[i].dim.worldSphere.center.x = D_801EE1D0.x; collider->elements[i].dim.worldSphere.center.y = D_801EE1D0.y; collider->elements[i].dim.worldSphere.center.z = D_801EE1D0.z; @@ -3733,7 +3733,7 @@ void Collider_UpdateSphere(s32 limb, ColliderSphere* collider) { D_801EE1E0.x = collider->dim.modelSphere.center.x; D_801EE1E0.y = collider->dim.modelSphere.center.y; D_801EE1E0.z = collider->dim.modelSphere.center.z; - SysMatrix_MultiplyVector3fByState(&D_801EE1E0, &D_801EE1F0); + Matrix_MultiplyVector3fByState(&D_801EE1E0, &D_801EE1F0); collider->dim.worldSphere.center.x = D_801EE1F0.x; collider->dim.worldSphere.center.y = D_801EE1F0.y; collider->dim.worldSphere.center.z = D_801EE1F0.z; diff --git a/src/code/z_eff_footmark.c b/src/code/z_eff_footmark.c index ba2c79f71..d246aaffa 100644 --- a/src/code/z_eff_footmark.c +++ b/src/code/z_eff_footmark.c @@ -106,8 +106,8 @@ void EffFootmark_Draw(GlobalContext* globalCtx) { for (footmark = globalCtx->footprintInfo, i = 0; i < 100; i++, footmark++) { if (footmark->actor != NULL) { - SysMatrix_SetCurrentState(&footmark->displayMatrix); - Matrix_Scale(footmark->size * 0.00390625f * 0.7f, 1, footmark->size * 0.00390625f, 1); + Matrix_SetCurrentState(&footmark->displayMatrix); + Matrix_Scale(footmark->size * (1.0f / 0x100) * 0.7f, 1, footmark->size * (1.0f / 0x100), MTXMODE_APPLY); gSPMatrix(gfxCtx->polyXlu.p++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD); diff --git a/src/code/z_effect_soft_sprite.c b/src/code/z_effect_soft_sprite.c index 0ed19c050..47c2202f1 100644 --- a/src/code/z_effect_soft_sprite.c +++ b/src/code/z_effect_soft_sprite.c @@ -41,7 +41,7 @@ void EffectSS_Clear(GlobalContext* globalCtx) { for (i = 0; i < EFFECT_SS_MAX; i++) { addr = overlay->loadedRamAddr; if (addr != NULL) { - zelda_free(addr); + ZeldaArena_Free(addr); } overlay->loadedRamAddr = 0; @@ -175,7 +175,7 @@ void EffectSs_Spawn(GlobalContext* globalCtx, s32 type, s32 priority, void* init initInfo = entry->initInfo; } else { if (entry->loadedRamAddr == NULL) { - entry->loadedRamAddr = zelda_mallocR(overlaySize); + entry->loadedRamAddr = ZeldaArena_MallocR(overlaySize); if (entry->loadedRamAddr == NULL) { return; diff --git a/src/code/z_effect_soft_sprite_old_init.c b/src/code/z_effect_soft_sprite_old_init.c index aa461153c..cf27d2251 100644 --- a/src/code/z_effect_soft_sprite_old_init.c +++ b/src/code/z_effect_soft_sprite_old_init.c @@ -403,7 +403,7 @@ void EffectSsGSpk_SpawnSmall(GlobalContext* globalCtx, Actor* actor, Vec3f* pos, // EffectSsDFire Spawn Functions void EffectSsDFire_Spawn(GlobalContext* globalCtx, Vec3f* pos, Vec3f* velocity, Vec3f* accel, s16 scale, s16 scaleStep, - s16 alpha, s16 fadeDelay, s16 life, s32 arg9) { + s16 alpha, s16 fadeDelay, s16 arg8, s32 life) { EffectSsDFireInitParams initParams; Math_Vec3f_Copy(&initParams.pos, pos); @@ -413,8 +413,8 @@ void EffectSsDFire_Spawn(GlobalContext* globalCtx, Vec3f* pos, Vec3f* velocity, initParams.scaleStep = scaleStep; initParams.alpha = alpha; initParams.fadeDelay = fadeDelay; + initParams.unk_2C = arg8; initParams.life = life; - initParams.unk_30 = arg9; EffectSs_Spawn(globalCtx, EFFECT_SS_D_FIRE, 128, &initParams); } @@ -535,8 +535,8 @@ void EffectSsDtBubble_SpawnCustomColor(GlobalContext* globalCtx, Vec3f* pos, Vec /** * Spawn a single fragment * - * Notes: - * - if a display list is not provided, D_0400C0D0 (wilted deku fragment) will be used as default + * * Notes: + * - if a display list is not provided, an unknown default will be used as default * - the unused arg does not do anything, any value can be passed here * - due to how life is implemented it is capped at 200. Any value over 200 is accepted, but the fragment will * only live for 200 frames @@ -960,6 +960,7 @@ void EffectSsExtra_Spawn(GlobalContext* globalCtx, Vec3f* pos, Vec3f* velocity, } // EffectSsDeadDb Spawn Functions + void EffectSsDeadDb_Spawn(GlobalContext* globalCtx, Vec3f* pos, Vec3f* velocity, Vec3f* accel, Color_RGBA8* prim, Color_RGBA8* env, s16 scale, s16 scaleStep, s32 unk) { EffectSsDeadDbInitParams initParams; diff --git a/src/code/z_en_a_keep.c b/src/code/z_en_a_keep.c index fbd323885..d5125d249 100644 --- a/src/code/z_en_a_keep.c +++ b/src/code/z_en_a_keep.c @@ -1,48 +1,57 @@ #include "global.h" -void EnAObj_Init(ActorEnAObj* this, GlobalContext* globalCtx) { - ActorEnAObj* s0 = (ActorEnAObj*)this; - s0->base.textId = ((s0->base.params >> 8) & 0xFF) | 0x300; - s0->base.params = (s0->base.params & 0xFF) - 9; - Actor_ProcessInitChain((Actor*)s0, &enAObjInitVar); - ActorShape_Init(&s0->base.shape, 0, (ActorShadowFunc)func_800B3FC0, 12); - Collider_InitAndSetCylinder(globalCtx, &s0->collision, (Actor*)s0, &enAObjCylinderInit); - Collider_UpdateCylinder((Actor*)s0, &s0->collision); - s0->base.colChkInfo.mass = 255; - s0->update = (ActorFunc)EnAObj_Update1; +#define THIS ((EnAObj*)thisx) + +void EnAObj_Update1(EnAObj* this, GlobalContext* globalCtx); +void EnAObj_Update2(EnAObj* this, GlobalContext* globalCtx); + +void EnAObj_Init(Actor* thisx, GlobalContext* globalCtx) { + EnAObj* this = THIS; + + this->actor.textId = ((this->actor.params >> 8) & 0xFF) | 0x300; + this->actor.params = (this->actor.params & 0xFF) - 9; + Actor_ProcessInitChain(&this->actor, &enAObjInitVar); + ActorShape_Init(&this->actor.shape, 0, func_800B3FC0, 12); + Collider_InitAndSetCylinder(globalCtx, &this->collision, &this->actor, &enAObjCylinderInit); + Collider_UpdateCylinder(&this->actor, &this->collision); + this->actor.colChkInfo.mass = 255; + this->actionFunc = EnAObj_Update1; } -void EnAObj_Destroy(ActorEnAObj* this, GlobalContext* globalCtx) { - ColliderCylinder* a2 = &this->collision; - Collider_DestroyCylinder(globalCtx, a2); +void EnAObj_Destroy(Actor* thisx, GlobalContext* globalCtx) { + EnAObj* this = THIS; + + Collider_DestroyCylinder(globalCtx, &this->collision); } -void EnAObj_Update1(ActorEnAObj* this, GlobalContext* globalCtx) { - s16 v0; - s32 v1; - if (func_800B84D0((Actor*)this, globalCtx) != 0) { - this->update = (ActorFunc)EnAObj_Update2; +void EnAObj_Update1(EnAObj* this, GlobalContext* globalCtx) { + s32 yawDiff; + + if (func_800B84D0(&this->actor, globalCtx)) { + this->actionFunc = EnAObj_Update2; } else { - v0 = this->base.yawTowardsPlayer - this->base.shape.rot.y; - v1 = (v0 < 0) ? -v0 : v0; - if ((v1 < 10240) || ((this->base.params == 1) && (v1 > 22528))) { - func_800B863C((Actor*)this, globalCtx); + yawDiff = ABS_ALT((s16)(this->actor.yawTowardsPlayer - this->actor.shape.rot.y)); + + if ((yawDiff < 0x2800) || ((this->actor.params == 1) && (yawDiff > 0x5800))) { + func_800B863C(&this->actor, globalCtx); } } } -void EnAObj_Update2(ActorEnAObj* this, GlobalContext* globalCtx) { - if (func_800B867C((Actor*)this, globalCtx) != 0) { - this->update = (ActorFunc)EnAObj_Update1; +void EnAObj_Update2(EnAObj* this, GlobalContext* globalCtx) { + if (func_800B867C(&this->actor, globalCtx)) { + this->actionFunc = EnAObj_Update1; } } -void EnAObj_Update(ActorEnAObj* this, GlobalContext* globalCtx) { - (this->update)((Actor*)this, (GlobalContext*)globalCtx); - Actor_SetHeight((Actor*)this, 45.0f); - CollisionCheck_SetOC(globalCtx, &globalCtx->colChkCtx, (Collider*)&this->collision); +void EnAObj_Update(Actor* thisx, GlobalContext* globalCtx) { + EnAObj* this = THIS; + + this->actionFunc(this, globalCtx); + Actor_SetHeight(&this->actor, 45.0f); + CollisionCheck_SetOC(globalCtx, &globalCtx->colChkCtx, &this->collision.base); } -void EnAObj_Draw(ActorEnAObj* this, GlobalContext* globalCtx) { - func_800BDFC0(globalCtx, enAObjDisplayLists[this->base.params]); +void EnAObj_Draw(Actor* thisx, GlobalContext* globalCtx) { + func_800BDFC0(globalCtx, enAObjDisplayLists[thisx->params]); } diff --git a/src/code/z_en_item00.c b/src/code/z_en_item00.c index 0a412c2da..acae2e0ce 100644 --- a/src/code/z_en_item00.c +++ b/src/code/z_en_item00.c @@ -660,7 +660,7 @@ void EnItem00_Draw(Actor* thisx, GlobalContext* globalCtx) { this->unk152 = -2; } } else { - Matrix_Scale(16.0f, 16.0f, 16.0f, 1); + Matrix_Scale(16.0f, 16.0f, 16.0f, MTXMODE_APPLY); GetItem_Draw(globalCtx, 8); } break; @@ -785,7 +785,7 @@ void EnItem00_DrawHeartContainer(EnItem00* actor, GlobalContext* globalCtx) { OPEN_DISPS(globalCtx->state.gfxCtx); func_8012C2DC(globalCtx->state.gfxCtx); - Matrix_Scale(20.0f, 20.0f, 20.0f, 1); + Matrix_Scale(20.0f, 20.0f, 20.0f, MTXMODE_APPLY); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_MODELVIEW | G_MTX_LOAD); diff --git a/src/code/z_fcurve_data.c b/src/code/z_fcurve_data.c new file mode 100644 index 000000000..a0bf887e1 --- /dev/null +++ b/src/code/z_fcurve_data.c @@ -0,0 +1,5 @@ +#include "global.h" + +#pragma GLOBAL_ASM("asm/non_matchings/code/z_fcurve_data/func_800F23E0.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/z_fcurve_data/func_800F2478.s") diff --git a/src/code/z_fcurve_data_skelanime.c b/src/code/z_fcurve_data_skelanime.c index 79439550d..c6ee50d87 100644 --- a/src/code/z_fcurve_data_skelanime.c +++ b/src/code/z_fcurve_data_skelanime.c @@ -1,15 +1,181 @@ #include "global.h" -#pragma GLOBAL_ASM("asm/non_matchings/code/z_fcurve_data_skelanime/func_800F2620.s") +void SkelCurve_Clear(SkelAnimeCurve* skelCurve) { + skelCurve->limbCount = 0; + skelCurve->limbList = NULL; + skelCurve->transUpdIdx = NULL; + skelCurve->animCurFrame = 0.0f; + skelCurve->animSpeed = 0.0f; + skelCurve->animFinalFrame = 0.0f; + skelCurve->unk0C = 0.0f; + skelCurve->transforms = NULL; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_fcurve_data_skelanime/func_800F2650.s") +s32 SkelCurve_Init(GlobalContext* globalCtx, SkelAnimeCurve* skelCurve, SkelCurveLimbList* limbListSeg, + TransformUpdateIndex* transUpdIdx) { + SkelCurveLimb** limbs; + SkelCurveLimbList* limbList = (SkelCurveLimbList*)Lib_SegmentedToVirtual(limbListSeg); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_fcurve_data_skelanime/func_800F26C0.s") + skelCurve->limbCount = limbList->limbCount; + skelCurve->limbList = (SkelCurveLimb**)Lib_SegmentedToVirtual(limbList->limbs); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_fcurve_data_skelanime/func_800F26F0.s") + skelCurve->transforms = ZeldaArena_Malloc(sizeof(*skelCurve->transforms) * skelCurve->limbCount); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_fcurve_data_skelanime/func_800F2728.s") + do { + skelCurve->animCurFrame = 0.0f; + } while (0); + return 1; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_fcurve_data_skelanime/func_800F29A0.s") +void SkelCurve_Destroy(GlobalContext* globalCtx, SkelAnimeCurve* skelCurve) { + if (skelCurve->transforms != NULL) { + ZeldaArena_Free(skelCurve->transforms); + } +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_fcurve_data_skelanime/func_800F2CD8.s") +void SkelCurve_SetAnim(SkelAnimeCurve* skelCurve, TransformUpdateIndex* transUpdIdx, f32 arg2, f32 animFinalFrame, + f32 animCurFrame, f32 animSpeed) { + skelCurve->unk0C = arg2 - skelCurve->animSpeed; + skelCurve->animFinalFrame = animFinalFrame; + skelCurve->animCurFrame = animCurFrame; + skelCurve->animSpeed = animSpeed; + skelCurve->transUpdIdx = transUpdIdx; +} + +#ifdef NON_MATCHING +/* Should be functionally equivalent, also migrating rodata makes it a lot cleaner */ +s32 SkelCurve_Update(GlobalContext* globalCtx, SkelAnimeCurve* skelCurve) { + s16* transforms; + u8* transformRefIdx; + TransformUpdateIndex* transformIndex; + u16* transformCopyValues; + s32 i; + s32 ret = 0; + s32 k; + TransformData* transData; + f32 transformValue; + s32 j; + + transformIndex = Lib_SegmentedToVirtual(skelCurve->transUpdIdx); + transformRefIdx = Lib_SegmentedToVirtual(transformIndex->refIndex); + transData = Lib_SegmentedToVirtual(transformIndex->transformData); + transformCopyValues = Lib_SegmentedToVirtual(transformIndex->copyValues); + transforms = (s16*)skelCurve->transforms; + + skelCurve->animCurFrame += skelCurve->animSpeed * (globalCtx->state.framerateDivisor * 0.5f); + + if ((skelCurve->animSpeed >= 0.0f && skelCurve->animCurFrame > skelCurve->animFinalFrame) || + (skelCurve->animSpeed < 0.0f && skelCurve->animCurFrame < skelCurve->animFinalFrame)) { + skelCurve->animCurFrame = skelCurve->animFinalFrame; + ret = 1; + } + + for (i = 0; i < skelCurve->limbCount; i++) { + for (j = 0; j < 3; j++) { + for (k = 0; k < 3; k++, transformRefIdx++, transforms++) { + if (*transformRefIdx == 0) { + transformValue = *transformCopyValues; + *transforms = transformValue; + transformCopyValues++; + } else { + transformValue = func_800F2478(skelCurve->animCurFrame, transData, *transformRefIdx); + transData += *transformRefIdx; + if (j == 0) { + *transforms = transformValue * 1024.0f; + } else if (j == 1) { + *transforms = transformValue * (32768.0f / 180.0f); + } else { + *transforms = transformValue * 100.0f; + } + } + } + } + } + + return ret; +} +#else +#pragma GLOBAL_ASM("asm/non_matchings/code/z_fcurve_data_skelanime/SkelCurve_Update.s") +#endif + +void SkelCurve_DrawLimb(GlobalContext* globalCtx, s32 limbIndex, SkelAnimeCurve* skelCurve, + OverrideCurveLimbDraw overrideLimbDraw, PostCurveLimbDraw postLimbDraw, s32 lod, Actor* thisx) { + SkelCurveLimb* limb = (SkelCurveLimb*)Lib_SegmentedToVirtual(skelCurve->limbList[limbIndex]); + + OPEN_DISPS(globalCtx->state.gfxCtx); + + Matrix_StatePush(); + + if (overrideLimbDraw == NULL || + (overrideLimbDraw != NULL && overrideLimbDraw(globalCtx, skelCurve, limbIndex, thisx))) { + Vec3f scale; + Vec3s rot; + Vec3f pos; + Gfx* dList; + Vec3s* transform = (Vec3s*)&skelCurve->transforms[limbIndex]; + + scale.x = transform->x / 1024.0f; + scale.y = transform->y / 1024.0f; + scale.z = transform->z / 1024.0f; + transform++; + rot.x = transform->x; + rot.y = transform->y; + rot.z = transform->z; + transform++; + pos.x = transform->x; + pos.y = transform->y; + pos.z = transform->z; + + Matrix_JointPosition(&pos, &rot); + Matrix_Scale(scale.x, scale.y, scale.z, MTXMODE_APPLY); + + if (lod == 0) { + s32 pad1; + + dList = limb->dList[0]; + if (dList != NULL) { + gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), + G_MTX_LOAD | G_MTX_NOPUSH | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, dList); + } + } else if (lod == 1) { + s32 pad2; + + dList = limb->dList[0]; + if (dList != NULL) { + gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), + G_MTX_LOAD | G_MTX_NOPUSH | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, dList); + } + dList = limb->dList[1]; + if (dList != NULL) { + gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), + G_MTX_LOAD | G_MTX_NOPUSH | G_MTX_MODELVIEW); + gSPDisplayList(POLY_XLU_DISP++, dList); + } + } + } + + if (postLimbDraw != NULL) { + postLimbDraw(globalCtx, skelCurve, limbIndex, thisx); + } + + if (limb->firstChildIdx != LIMB_DONE) { + SkelCurve_DrawLimb(globalCtx, limb->firstChildIdx, skelCurve, overrideLimbDraw, postLimbDraw, lod, thisx); + } + + Matrix_StatePop(); + + if (limb->nextLimbIdx != LIMB_DONE) { + SkelCurve_DrawLimb(globalCtx, limb->nextLimbIdx, skelCurve, overrideLimbDraw, postLimbDraw, lod, thisx); + } + + CLOSE_DISPS(globalCtx->state.gfxCtx); +} + +void SkelCurve_Draw(Actor* actor, GlobalContext* globalCtx, SkelAnimeCurve* skelCurve, + OverrideCurveLimbDraw overrideLimbDraw, PostCurveLimbDraw postLimbDraw, s32 lod, Actor* thisx) { + if (skelCurve->transforms != NULL) { + SkelCurve_DrawLimb(globalCtx, 0, skelCurve, overrideLimbDraw, postLimbDraw, lod, thisx); + } +} diff --git a/src/code/z_lights.c b/src/code/z_lights.c index 3e2e041b3..80d3f7131 100644 --- a/src/code/z_lights.c +++ b/src/code/z_lights.c @@ -432,7 +432,7 @@ void Lights_DrawGlow(GlobalContext* globalCtx) { gDPSetPrimColor(dl++, 0, 0, params->color[0], params->color[1], params->color[2], 50); - SysMatrix_InsertTranslation(params->x, params->y, params->z, 0); + Matrix_InsertTranslation(params->x, params->y, params->z, MTXMODE_NEW); Matrix_Scale(scale, scale, scale, MTXMODE_APPLY); gSPMatrix(dl++, Matrix_NewMtx(globalCtx->state.gfxCtx), diff --git a/src/code/z_malloc.c b/src/code/z_malloc.c index f99519e9b..8d0bba44a 100644 --- a/src/code/z_malloc.c +++ b/src/code/z_malloc.c @@ -1,21 +1,54 @@ #include "global.h" -#pragma GLOBAL_ASM("asm/non_matchings/code/z_malloc/zelda_malloc.s") +void* ZeldaArena_Malloc(size_t size) { + void* ptr = __osMalloc(&sZeldaArena, size); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_malloc/zelda_mallocR.s") + return ptr; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_malloc/zelda_realloc.s") +void* ZeldaArena_MallocR(size_t size) { + void* ptr = __osMallocR(&sZeldaArena, size); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_malloc/zelda_free.s") + return ptr; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_malloc/zelda_calloc.s") +void* ZeldaArena_Realloc(void* ptr, size_t newSize) { + ptr = __osRealloc(&sZeldaArena, ptr, newSize); + return ptr; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_malloc/MainHeap_AnalyzeArena.s") +void ZeldaArena_Free(void* ptr) { + __osFree(&sZeldaArena, ptr); +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_malloc/MainHeap_Check.s") +void* ZeldaArena_Calloc(u32 num, size_t size) { + void* ret; + u32 n = num * size; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_malloc/MainHeap_Init.s") + ret = __osMalloc(&sZeldaArena, n); + if (ret != NULL) { + bzero(ret, n); + } -#pragma GLOBAL_ASM("asm/non_matchings/code/z_malloc/MainHeap_Cleanup.s") + return ret; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_malloc/MainHeap_IsInitialized.s") +void ZeldaArena_GetSizes(size_t* outMaxFree, size_t* outFree, size_t* outAlloc) { + __osAnalyzeArena(&sZeldaArena, outMaxFree, outFree, outAlloc); +} + +void ZeldaArena_Check() { + __osCheckArena(&sZeldaArena); +} + +void ZeldaArena_Init(void* start, size_t size) { + __osMallocInit(&sZeldaArena, start, size); +} + +void ZeldaArena_Cleanup() { + __osMallocCleanup(&sZeldaArena); +} + +u8 ZeldaArena_IsInitialized() { + return __osMallocIsInitalized(&sZeldaArena); +} diff --git a/src/code/z_pause.c b/src/code/z_pause.c new file mode 100644 index 000000000..44be6238a --- /dev/null +++ b/src/code/z_pause.c @@ -0,0 +1,5 @@ +#include "global.h" + +#pragma GLOBAL_ASM("asm/non_matchings/code/z_pause/func_80122660.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/z_pause/func_80122670.s") diff --git a/src/code/z_room.c b/src/code/z_room.c index 5f900ea87..5163f1f29 100644 --- a/src/code/z_room.c +++ b/src/code/z_room.c @@ -77,7 +77,7 @@ void Room_Init(GlobalContext* globalCtx, RoomContext* roomCtx) { #ifdef NON_MATCHING s32 Room_StartRoomTransition(GlobalContext* globalCtx, RoomContext* roomCtx, s32 index) { - u32 size; + size_t size; // XXX: this should use a branch-likely if (roomCtx->unk31 == 0) { diff --git a/src/code/z_scene.c b/src/code/z_scene.c index e77144528..b744af5d0 100644 --- a/src/code/z_scene.c +++ b/src/code/z_scene.c @@ -1,7 +1,7 @@ #include "global.h" s32 Object_Spawn(ObjectContext* objectCtx, s16 id) { - u32 size; + size_t size; objectCtx->status[objectCtx->num].id = id; size = objectFileTable[id].vromEnd - objectFileTable[id].vromStart; @@ -23,8 +23,8 @@ s32 Object_Spawn(ObjectContext* objectCtx, s16 id) { return objectCtx->num - 1; } -void Object_InitBank(GameState* gamestate, ObjectContext* objectCtx) { - GlobalContext* globalCtx = (GlobalContext*)gamestate; +void Object_InitBank(GameState* gameState, ObjectContext* objectCtx) { + GlobalContext* globalCtx = (GlobalContext*)gameState; s32 pad; u32 spaceSize; s32 i; @@ -49,7 +49,7 @@ void Object_InitBank(GameState* gamestate, ObjectContext* objectCtx) { for (i = 0; i < OBJECT_EXCHANGE_BANK_MAX; i++) { objectCtx->status[i].id = 0; } // clang-format on - objectCtx->spaceStart = objectCtx->status[0].segment = THA_AllocEndAlign16(&gamestate->heap, spaceSize); + objectCtx->spaceStart = objectCtx->status[0].segment = THA_AllocEndAlign16(&gameState->heap, spaceSize); objectCtx->spaceEnd = (void*)((u32)objectCtx->spaceStart + spaceSize); objectCtx->mainKeepIndex = Object_Spawn(objectCtx, GAMEPLAY_KEEP); @@ -60,7 +60,7 @@ void Object_UpdateBank(ObjectContext* objectCtx) { s32 i; ObjectStatus* status = &objectCtx->status[0]; RomFile* objectFile; - u32 size; + size_t size; for (i = 0; i < objectCtx->num; i++) { if (status->id < 0) { @@ -354,7 +354,7 @@ s32 Scene_LoadAreaTextures(GlobalContext* globalCtx, s32 fileIndex) { { SEGMENT_ROM_START(scene_texture_08), SEGMENT_ROM_END(scene_texture_08) }, }; u32 vromStart = sceneTextureFiles[fileIndex].vromStart; - u32 size = sceneTextureFiles[fileIndex].vromEnd - vromStart; + size_t size = sceneTextureFiles[fileIndex].vromEnd - vromStart; if (size != 0) { globalCtx->roomCtx.unk74 = THA_AllocEndAlign16(&globalCtx->state.heap, size); diff --git a/src/code/z_skelanime.c b/src/code/z_skelanime.c index 16428023a..4cd9734f6 100644 --- a/src/code/z_skelanime.c +++ b/src/code/z_skelanime.c @@ -1,63 +1,57 @@ #include "global.h" -s32 func_80136288(GlobalContext* globalCtx, SkelAnime* skelAnime); -s32 func_8013631C(GlobalContext* globalCtx, SkelAnime* skelAnime); -s32 func_8013702C(SkelAnime* skelAnime); -s32 func_801370B0(SkelAnime* skelAnime); -s32 func_8013713C(SkelAnime* skelAnime); -void SkelAnime_ChangeAnimDefaultRepeat(SkelAnime* skelAnime, AnimationHeader* animationSeg); -void func_80137748(SkelAnime* skelAnime, Vec3f* pos, s16 angle); -void SkelAnime_ChangeLinkAnim(GlobalContext* globalCtx, SkelAnime* skelAnime, - LinkAnimationHeader* linkAnimationHeaderSeg, f32 playbackSpeed, f32 frame, f32 frameCount, - u8 animationMode, f32 transitionRate); -void SkelAnime_CopyVec3s(SkelAnime* skelAnime, Vec3s* dst, Vec3s* src); -void SkelAnime_LinkAnimetionLoaded(GlobalContext* globalCtx, AnimationEntryType0* entry); -void SkelAnime_AnimationType1Loaded(GlobalContext* globalCtx, AnimationEntryType1* entry); -void SkelAnime_AnimationType2Loaded(GlobalContext* globalCtx, AnimationEntryType2* entry); -void SkelAnime_AnimationType3Loaded(GlobalContext* globalCtx, AnimationEntryType3* entry); -void SkelAnime_AnimationType4Loaded(GlobalContext* globalCtx, AnimationEntryType4* entry); -void SkelAnime_AnimationType5Loaded(GlobalContext* globalCtx, AnimationEntryType5* entry); +#define ANIM_INTERP 1 + +s32 LinkAnimation_Loop(GlobalContext* globalCtx, SkelAnime* skelAnime); +s32 LinkAnimation_Once(GlobalContext* globalCtx, SkelAnime* skelAnime); +s32 SkelAnime_LoopFull(SkelAnime* skelAnime); +s32 SkelAnime_LoopPartial(SkelAnime* skelAnime); +s32 SkelAnime_Once(SkelAnime* skelAnime); +void Animation_PlayLoop(SkelAnime* skelAnime, AnimationHeader* animationSeg); +void SkelAnime_UpdateTranslation(SkelAnime* skelAnime, Vec3f* pos, s16 angle); +void LinkAnimation_Change(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimationHeader* linkAnimetionEntrySeg, + f32 playbackSpeed, f32 frame, f32 frameCount, u8 animationMode, f32 transitionRate); +void SkelAnime_CopyFrameTable(SkelAnime* skelAnime, Vec3s* dst, Vec3s* src); static AnimationEntryCallback sAnimationLoadDone[] = { - (AnimationEntryCallback)SkelAnime_LinkAnimetionLoaded, (AnimationEntryCallback)SkelAnime_AnimationType1Loaded, - (AnimationEntryCallback)SkelAnime_AnimationType2Loaded, (AnimationEntryCallback)SkelAnime_AnimationType3Loaded, - (AnimationEntryCallback)SkelAnime_AnimationType4Loaded, (AnimationEntryCallback)SkelAnime_AnimationType5Loaded, + AnimationContext_LoadFrame, AnimationContext_CopyAll, AnimationContext_Interp, + AnimationContext_CopyTrue, AnimationContext_CopyFalse, AnimationContext_MoveActor, }; -s32 D_801F5AB0; -s32 D_801F5AB4; +s32 sAnimQueueFlags; +s32 sDisableAnimQueueFlags; /* * Draws the limb at `limbIndex` with a level of detail display lists index by `dListIndex` */ -void SkelAnime_LodDrawLimb(GlobalContext* globalCtx, s32 limbIndex, void** skeleton, Vec3s* limbDrawTable, - OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, Actor* actor, s32 dListIndex) { - StandardLimb* limbEntry; +void SkelAnime_DrawLimbLod(GlobalContext* globalCtx, s32 limbIndex, void** skeleton, Vec3s* jointTable, + OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, Actor* actor, s32 lod) { + LodLimb* limb; Gfx* dList; Vec3f pos; Vec3s rot; - GraphicsContext* gfxCtx = globalCtx->state.gfxCtx; - s32 pad; - SysMatrix_StatePush(); - limbEntry = (StandardLimb*)Lib_SegmentedToVirtual(skeleton[limbIndex]); + OPEN_DISPS(globalCtx->state.gfxCtx); + + Matrix_StatePush(); + limb = (LodLimb*)Lib_SegmentedToVirtual(skeleton[limbIndex]); limbIndex++; - rot = limbDrawTable[limbIndex]; + rot = jointTable[limbIndex]; - pos.x = limbEntry->translation.x; - pos.y = limbEntry->translation.y; - pos.z = limbEntry->translation.z; + pos.x = limb->jointPos.x; + pos.y = limb->jointPos.y; + pos.z = limb->jointPos.z; - dList = limbEntry->displayLists[dListIndex]; + dList = limb->dLists[lod]; if ((overrideLimbDraw == NULL) || (overrideLimbDraw(globalCtx, limbIndex, &dList, &pos, &rot, actor) == 0)) { - SysMatrix_RotateAndTranslateState(&pos, &rot); + Matrix_JointPosition(&pos, &rot); if (dList != NULL) { - Gfx* polyTemp = gfxCtx->polyOpa.p; + Gfx* polyTemp = POLY_OPA_DISP; - gSPMatrix(polyTemp, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_LOAD); + gSPMatrix(&polyTemp[0], Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_LOAD); - gSPDisplayList(polyTemp + 1, dList); - gfxCtx->polyOpa.p = polyTemp + 2; + gSPDisplayList(&polyTemp[1], dList); + POLY_OPA_DISP = &polyTemp[2]; } } @@ -65,58 +59,58 @@ void SkelAnime_LodDrawLimb(GlobalContext* globalCtx, s32 limbIndex, void** skele postLimbDraw(globalCtx, limbIndex, &dList, &rot, actor); } - if (limbEntry->firstChildIndex != LIMB_DONE) { - SkelAnime_LodDrawLimb(globalCtx, limbEntry->firstChildIndex, skeleton, limbDrawTable, overrideLimbDraw, - postLimbDraw, actor, dListIndex); + if (limb->child != LIMB_DONE) { + SkelAnime_DrawLimbLod(globalCtx, limb->child, skeleton, jointTable, overrideLimbDraw, postLimbDraw, actor, lod); } - SysMatrix_StatePop(); + Matrix_StatePop(); - if (limbEntry->nextLimbIndex != LIMB_DONE) { - SkelAnime_LodDrawLimb(globalCtx, limbEntry->nextLimbIndex, skeleton, limbDrawTable, overrideLimbDraw, - postLimbDraw, actor, dListIndex); + if (limb->sibling != LIMB_DONE) { + SkelAnime_DrawLimbLod(globalCtx, limb->sibling, skeleton, jointTable, overrideLimbDraw, postLimbDraw, actor, + lod); } + + CLOSE_DISPS(globalCtx->state.gfxCtx); } -/* - * Draws the Skeleton described by `skeleton` with a level of detail display list indexed by `dListIndex` +/** + * Draw all limbs of type `LodLimb` in a given skeleton + * Near or far display list is specified via `lod` */ -void SkelAnime_LodDraw(GlobalContext* globalCtx, void** skeleton, Vec3s* limbDrawTable, - OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, Actor* actor, s32 dListIndex) { - StandardLimb* limbEntry; +void SkelAnime_DrawLod(GlobalContext* globalCtx, void** skeleton, Vec3s* jointTable, + OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, Actor* actor, s32 lod) { + LodLimb* rootLimb; s32 pad; Gfx* dList; Vec3f pos; Vec3s rot; - GraphicsContext* gfxCtx; - s32 pad2; if (skeleton == NULL) { return; } - gfxCtx = globalCtx->state.gfxCtx; + OPEN_DISPS(globalCtx->state.gfxCtx); - SysMatrix_StatePush(); + Matrix_StatePush(); - limbEntry = (StandardLimb*)Lib_SegmentedToVirtual(skeleton[0]); - pos.x = limbDrawTable[0].x; - pos.y = limbDrawTable[0].y; - pos.z = limbDrawTable[0].z; + rootLimb = (LodLimb*)Lib_SegmentedToVirtual(skeleton[0]); + pos.x = jointTable[0].x; + pos.y = jointTable[0].y; + pos.z = jointTable[0].z; - rot = limbDrawTable[1]; - dList = limbEntry->displayLists[dListIndex]; + rot = jointTable[1]; + dList = rootLimb->dLists[lod]; - if ((overrideLimbDraw == NULL) || (overrideLimbDraw(globalCtx, 1, &dList, &pos, &rot, actor) == 0)) { - SysMatrix_RotateAndTranslateState(&pos, &rot); + if ((overrideLimbDraw == NULL) || !overrideLimbDraw(globalCtx, 1, &dList, &pos, &rot, actor)) { + Matrix_JointPosition(&pos, &rot); if (dList != NULL) { - Gfx* polyTemp = gfxCtx->polyOpa.p; + Gfx* polyTemp = POLY_OPA_DISP; - gSPMatrix(polyTemp, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_LOAD); + gSPMatrix(&polyTemp[0], Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_LOAD); - gSPDisplayList(polyTemp + 1, dList); + gSPDisplayList(&polyTemp[1], dList); - gfxCtx->polyOpa.p = polyTemp + 2; + POLY_OPA_DISP = &polyTemp[2]; } } @@ -124,167 +118,169 @@ void SkelAnime_LodDraw(GlobalContext* globalCtx, void** skeleton, Vec3s* limbDra postLimbDraw(globalCtx, 1, &dList, &rot, actor); } - if (limbEntry->firstChildIndex != 0xFF) { - SkelAnime_LodDrawLimb(globalCtx, limbEntry->firstChildIndex, skeleton, limbDrawTable, overrideLimbDraw, - postLimbDraw, actor, dListIndex); + if (rootLimb->child != LIMB_DONE) { + SkelAnime_DrawLimbLod(globalCtx, rootLimb->child, skeleton, jointTable, overrideLimbDraw, postLimbDraw, actor, + lod); } - SysMatrix_StatePop(); + Matrix_StatePop(); + + CLOSE_DISPS(globalCtx->state.gfxCtx); } -/* - * Draws the limb at `limbIndex` with a level of detail display lists index by `dListIndex`, Limb matrices come - * from a dynamic allocation from the graph arena. +/** + * Draw a limb of type `LodLimb` contained within a flexible skeleton + * Near or far display list is specified via `lod` */ -void SkelAnime_LodDrawLimbSV(GlobalContext* globalCtx, s32 limbIndex, void** skeleton, Vec3s* limbDrawTable, - OverrideLimbDrawSV overrideLimbDraw, PostLimbDrawSV postLimbDraw, Actor* actor, - s32 dListIndex, RSPMatrix** mtx) { - StandardLimb* limbEntry; - Gfx* dList[2]; +void SkelAnime_DrawFlexLimbLod(GlobalContext* globalCtx, s32 limbIndex, void** skeleton, Vec3s* jointTable, + OverrideLimbDrawFlex overrideLimbDraw, PostLimbDrawFlex postLimbDraw, Actor* actor, + s32 lod, Mtx** mtx) { + LodLimb* limb; + Gfx* newDList; + Gfx* limbDList; Vec3f pos; Vec3s rot; - GraphicsContext* gfxCtx = globalCtx->state.gfxCtx; - s32 pad; - SysMatrix_StatePush(); + OPEN_DISPS(globalCtx->state.gfxCtx); - limbEntry = (StandardLimb*)Lib_SegmentedToVirtual(skeleton[limbIndex]); + Matrix_StatePush(); + + limb = (LodLimb*)Lib_SegmentedToVirtual(skeleton[limbIndex]); limbIndex++; - rot = limbDrawTable[limbIndex]; + rot = jointTable[limbIndex]; - pos.x = limbEntry->translation.x; - pos.y = limbEntry->translation.y; - pos.z = limbEntry->translation.z; - // Double assignment here would not work. - dList[0] = limbEntry->displayLists[dListIndex]; - dList[1] = dList[0]; + pos.x = limb->jointPos.x; + pos.y = limb->jointPos.y; + pos.z = limb->jointPos.z; - if ((overrideLimbDraw == NULL) || (overrideLimbDraw(globalCtx, limbIndex, &dList[1], &pos, &rot, actor) == 0)) { - SysMatrix_RotateAndTranslateState(&pos, &rot); - if (dList[1] != NULL) { - SysMatrix_GetStateAsRSPMatrix(*mtx); - gSPMatrix(gfxCtx->polyOpa.p++, *mtx, G_MTX_LOAD); - gSPDisplayList(gfxCtx->polyOpa.p++, dList[1]); + newDList = limbDList = limb->dLists[lod]; + + if ((overrideLimbDraw == NULL) || !overrideLimbDraw(globalCtx, limbIndex, &newDList, &pos, &rot, actor)) { + Matrix_JointPosition(&pos, &rot); + if (newDList != NULL) { + Matrix_ToMtx(*mtx); + gSPMatrix(POLY_OPA_DISP++, *mtx, G_MTX_LOAD); + gSPDisplayList(POLY_OPA_DISP++, newDList); (*mtx)++; - } else if (dList[0] != NULL) { - SysMatrix_GetStateAsRSPMatrix(*mtx); + } else if (limbDList != NULL) { + Matrix_ToMtx(*mtx); (*mtx)++; } } if (postLimbDraw != NULL) { - postLimbDraw(globalCtx, limbIndex, &dList[1], &dList[0], &rot, actor); + postLimbDraw(globalCtx, limbIndex, &newDList, &limbDList, &rot, actor); } - if (limbEntry->firstChildIndex != LIMB_DONE) { - SkelAnime_LodDrawLimbSV(globalCtx, limbEntry->firstChildIndex, skeleton, limbDrawTable, overrideLimbDraw, - postLimbDraw, actor, dListIndex, mtx); + if (limb->child != LIMB_DONE) { + SkelAnime_DrawFlexLimbLod(globalCtx, limb->child, skeleton, jointTable, overrideLimbDraw, postLimbDraw, actor, + lod, mtx); } - SysMatrix_StatePop(); + Matrix_StatePop(); - if (limbEntry->nextLimbIndex != LIMB_DONE) { - SkelAnime_LodDrawLimbSV(globalCtx, limbEntry->nextLimbIndex, skeleton, limbDrawTable, overrideLimbDraw, - postLimbDraw, actor, dListIndex, mtx); + if (limb->sibling != LIMB_DONE) { + SkelAnime_DrawFlexLimbLod(globalCtx, limb->sibling, skeleton, jointTable, overrideLimbDraw, postLimbDraw, actor, + lod, mtx); } + + CLOSE_DISPS(globalCtx->state.gfxCtx); } -/* - * Draws the Skeleton described by `skeleton` with a level of detail display list indexed by `dListIndex` - * Matricies for the limbs are dynamically allocted from the graph arena. The dynamic allocation occurs - * because the Skeleton is too large to be supported by the normal matrix stack. +/** + * Draws all limbs of type `LodLimb` in a given flexible skeleton + * Limbs in a flexible skeleton have meshes that can stretch to line up with other limbs. + * An array of matrices is dynamically allocated so each limb can access any transform to ensure its meshes line up. */ -void SkelAnime_LodDrawSV(GlobalContext* globalCtx, void** skeleton, Vec3s* limbDrawTable, s32 dListCount, - OverrideLimbDrawSV overrideLimbDraw, PostLimbDrawSV postLimbDraw, Actor* actor, - s32 dListIndex) { - StandardLimb* limbEntry; +void SkelAnime_DrawFlexLod(GlobalContext* globalCtx, void** skeleton, Vec3s* jointTable, s32 dListCount, + OverrideLimbDrawFlex overrideLimbDraw, PostLimbDrawFlex postLimbDraw, Actor* actor, + s32 lod) { + LodLimb* rootLimb; s32 pad; - Gfx* dList[2]; + Gfx* newDList; + Gfx* limbDList; Vec3f pos; Vec3s rot; - RSPMatrix* mtx; - GraphicsContext* gfxCtx; - s32 pad2; - - mtx = (RSPMatrix*)GRAPH_ALLOC(globalCtx->state.gfxCtx, ALIGN16(sizeof(RSPMatrix) * dListCount)); + Mtx* mtx = (Mtx*)GRAPH_ALLOC(globalCtx->state.gfxCtx, ALIGN16(sizeof(Mtx) * dListCount)); if (skeleton == NULL) { return; } - gfxCtx = globalCtx->state.gfxCtx; + OPEN_DISPS(globalCtx->state.gfxCtx); - gSPSegment(gfxCtx->polyOpa.p++, 0xD, mtx); - SysMatrix_StatePush(); + gSPSegment(POLY_OPA_DISP++, 0xD, mtx); + Matrix_StatePush(); - limbEntry = (StandardLimb*)Lib_SegmentedToVirtual(skeleton[0]); - pos.x = limbDrawTable[0].x; - pos.y = limbDrawTable[0].y; - pos.z = limbDrawTable[0].z; + rootLimb = (LodLimb*)Lib_SegmentedToVirtual(skeleton[0]); + pos.x = jointTable[0].x; + pos.y = jointTable[0].y; + pos.z = jointTable[0].z; - rot = limbDrawTable[1]; + rot = jointTable[1]; - dList[0] = limbEntry->displayLists[dListIndex]; - dList[1] = dList[0]; + newDList = limbDList = rootLimb->dLists[lod]; - if ((overrideLimbDraw == NULL) || (overrideLimbDraw(globalCtx, 1, &dList[1], &pos, &rot, actor) == 0)) { - SysMatrix_RotateAndTranslateState(&pos, &rot); - if (dList[1] != NULL) { - Gfx* polyTemp = gfxCtx->polyOpa.p; + if ((overrideLimbDraw == NULL) || !overrideLimbDraw(globalCtx, 1, &newDList, &pos, &rot, actor)) { + Matrix_JointPosition(&pos, &rot); + if (newDList != NULL) { + Gfx* polyTemp = POLY_OPA_DISP; - gSPMatrix(polyTemp, SysMatrix_GetStateAsRSPMatrix(mtx), G_MTX_LOAD); - gSPDisplayList(polyTemp + 1, dList[1]); - gfxCtx->polyOpa.p = polyTemp + 2; + gSPMatrix(&polyTemp[0], Matrix_ToMtx(mtx), G_MTX_LOAD); + gSPDisplayList(&polyTemp[1], newDList); + POLY_OPA_DISP = &polyTemp[2]; mtx++; - } else if (dList[0] != NULL) { - SysMatrix_GetStateAsRSPMatrix(mtx); + } else if (limbDList != NULL) { + Matrix_ToMtx(mtx); mtx++; } } if (postLimbDraw != NULL) { - postLimbDraw(globalCtx, 1, &dList[1], &dList[0], &rot, actor); + postLimbDraw(globalCtx, 1, &newDList, &limbDList, &rot, actor); } - if (limbEntry->firstChildIndex != LIMB_DONE) { - SkelAnime_LodDrawLimbSV(globalCtx, limbEntry->firstChildIndex, skeleton, limbDrawTable, overrideLimbDraw, - postLimbDraw, actor, dListIndex, &mtx); + if (rootLimb->child != LIMB_DONE) { + SkelAnime_DrawFlexLimbLod(globalCtx, rootLimb->child, skeleton, jointTable, overrideLimbDraw, postLimbDraw, + actor, lod, &mtx); } - SysMatrix_StatePop(); + Matrix_StatePop(); + + CLOSE_DISPS(globalCtx->state.gfxCtx); } /* * Draws the limb of the Skeleton `skeleton` at `limbIndex` */ -void SkelAnime_DrawLimb(GlobalContext* globalCtx, s32 limbIndex, void** skeleton, Vec3s* limbDrawTable, - OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, Actor* actor) { - StandardLimb* limbEntry; +void SkelAnime_DrawLimbOpa(GlobalContext* globalCtx, s32 limbIndex, void** skeleton, Vec3s* jointTable, + OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, Actor* actor) { + StandardLimb* limb; Gfx* dList; Vec3f pos; Vec3s rot; - GraphicsContext* gfxCtx = globalCtx->state.gfxCtx; - s32 pad; - SysMatrix_StatePush(); + OPEN_DISPS(globalCtx->state.gfxCtx); - limbEntry = (StandardLimb*)Lib_SegmentedToVirtual(skeleton[limbIndex]); + Matrix_StatePush(); + + limb = (StandardLimb*)Lib_SegmentedToVirtual(skeleton[limbIndex]); limbIndex++; - rot = limbDrawTable[limbIndex]; - pos.x = limbEntry->translation.x; - pos.y = limbEntry->translation.y; - pos.z = limbEntry->translation.z; - dList = limbEntry->displayLists[0]; + rot = jointTable[limbIndex]; + pos.x = limb->jointPos.x; + pos.y = limb->jointPos.y; + pos.z = limb->jointPos.z; + dList = limb->dList; - if ((overrideLimbDraw == NULL) || (overrideLimbDraw(globalCtx, limbIndex, &dList, &pos, &rot, actor) == 0)) { - SysMatrix_RotateAndTranslateState(&pos, &rot); + if ((overrideLimbDraw == NULL) || !overrideLimbDraw(globalCtx, limbIndex, &dList, &pos, &rot, actor)) { + Matrix_JointPosition(&pos, &rot); if (dList != NULL) { - Gfx* polyTemp = gfxCtx->polyOpa.p; + Gfx* polyTemp = POLY_OPA_DISP; - gSPMatrix(polyTemp, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_LOAD); - gSPDisplayList(polyTemp + 1, dList); - gfxCtx->polyOpa.p = polyTemp + 2; + gSPMatrix(&polyTemp[0], Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_LOAD); + gSPDisplayList(&polyTemp[1], dList); + POLY_OPA_DISP = &polyTemp[2]; } } @@ -292,53 +288,54 @@ void SkelAnime_DrawLimb(GlobalContext* globalCtx, s32 limbIndex, void** skeleton postLimbDraw(globalCtx, limbIndex, &dList, &rot, actor); } - if (limbEntry->firstChildIndex != LIMB_DONE) { - SkelAnime_DrawLimb(globalCtx, limbEntry->firstChildIndex, skeleton, limbDrawTable, overrideLimbDraw, - postLimbDraw, actor); + if (limb->child != LIMB_DONE) { + SkelAnime_DrawLimbOpa(globalCtx, limb->child, skeleton, jointTable, overrideLimbDraw, postLimbDraw, actor); } - SysMatrix_StatePop(); + Matrix_StatePop(); - if (limbEntry->nextLimbIndex != LIMB_DONE) { - SkelAnime_DrawLimb(globalCtx, limbEntry->nextLimbIndex, skeleton, limbDrawTable, overrideLimbDraw, postLimbDraw, - actor); + if (limb->sibling != LIMB_DONE) { + SkelAnime_DrawLimbOpa(globalCtx, limb->sibling, skeleton, jointTable, overrideLimbDraw, postLimbDraw, actor); } + + CLOSE_DISPS(globalCtx->state.gfxCtx); } -void SkelAnime_Draw(GlobalContext* globalCtx, void** skeleton, Vec3s* limbDrawTable, OverrideLimbDraw overrideLimbDraw, - PostLimbDraw postLimbDraw, Actor* actor) { +/** + * Draw all limbs of type `StandardLimb` in a given skeleton to the polyOpa buffer + */ +void SkelAnime_DrawOpa(GlobalContext* globalCtx, void** skeleton, Vec3s* jointTable, + OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, Actor* actor) { StandardLimb* rootLimb; s32 pad; Gfx* dList; Vec3f pos; Vec3s rot; - GraphicsContext* gfxCtx; - s32 pad2; if (skeleton == NULL) { return; } - gfxCtx = globalCtx->state.gfxCtx; + OPEN_DISPS(globalCtx->state.gfxCtx); - SysMatrix_StatePush(); - rootLimb = (StandardLimb*)Lib_SegmentedToVirtual(skeleton[0]); + Matrix_StatePush(); + rootLimb = Lib_SegmentedToVirtual(skeleton[0]); - pos.x = limbDrawTable[0].x; - pos.y = limbDrawTable[0].y; - pos.z = limbDrawTable[0].z; + pos.x = jointTable[0].x; + pos.y = jointTable[0].y; + pos.z = jointTable[0].z; - rot = limbDrawTable[1]; - dList = rootLimb->displayLists[0]; + rot = jointTable[1]; + dList = rootLimb->dList; - if ((overrideLimbDraw == NULL) || (overrideLimbDraw(globalCtx, 1, &dList, &pos, &rot, actor) == 0)) { - SysMatrix_RotateAndTranslateState(&pos, &rot); + if ((overrideLimbDraw == NULL) || !overrideLimbDraw(globalCtx, 1, &dList, &pos, &rot, actor)) { + Matrix_JointPosition(&pos, &rot); if (dList != NULL) { - Gfx* polyTemp = gfxCtx->polyOpa.p; + Gfx* polyTemp = POLY_OPA_DISP; - gSPMatrix(polyTemp, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_LOAD); - gSPDisplayList(polyTemp + 1, dList); - gfxCtx->polyOpa.p = polyTemp + 2; + gSPMatrix(&polyTemp[0], Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_LOAD); + gSPDisplayList(&polyTemp[1], dList); + POLY_OPA_DISP = &polyTemp[2]; } } @@ -346,318 +343,333 @@ void SkelAnime_Draw(GlobalContext* globalCtx, void** skeleton, Vec3s* limbDrawTa postLimbDraw(globalCtx, 1, &dList, &rot, actor); } - if (rootLimb->firstChildIndex != LIMB_DONE) { - SkelAnime_DrawLimb(globalCtx, rootLimb->firstChildIndex, skeleton, limbDrawTable, overrideLimbDraw, - postLimbDraw, actor); + if (rootLimb->child != LIMB_DONE) { + SkelAnime_DrawLimbOpa(globalCtx, rootLimb->child, skeleton, jointTable, overrideLimbDraw, postLimbDraw, actor); } - SysMatrix_StatePop(); + Matrix_StatePop(); + + CLOSE_DISPS(globalCtx->state.gfxCtx); } -void SkelAnime_DrawLimbSV(GlobalContext* globalCtx, s32 limbIndex, void** skeleton, Vec3s* limbDrawTable, - OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, Actor* actor, - RSPMatrix** limbMatricies) { - StandardLimb* limbEntry; - Gfx* dList[2]; +void SkelAnime_DrawFlexLimbOpa(GlobalContext* globalCtx, s32 limbIndex, void** skeleton, Vec3s* jointTable, + OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, Actor* actor, + Mtx** limbMatricies) { + StandardLimb* limb; + Gfx* newDList; + Gfx* limbDList; Vec3f pos; Vec3s rot; - GraphicsContext* gfxCtx = globalCtx->state.gfxCtx; - s32 pad; - SysMatrix_StatePush(); + OPEN_DISPS(globalCtx->state.gfxCtx); - limbEntry = (StandardLimb*)Lib_SegmentedToVirtual(skeleton[limbIndex]); + Matrix_StatePush(); + + limb = Lib_SegmentedToVirtual(skeleton[limbIndex]); limbIndex++; - rot = limbDrawTable[limbIndex]; + rot = jointTable[limbIndex]; - pos.x = limbEntry->translation.x; - pos.y = limbEntry->translation.y; - pos.z = limbEntry->translation.z; + pos.x = limb->jointPos.x; + pos.y = limb->jointPos.y; + pos.z = limb->jointPos.z; - dList[0] = limbEntry->displayLists[0]; - dList[1] = dList[0]; + newDList = limbDList = limb->dList; - if ((overrideLimbDraw == NULL) || (overrideLimbDraw(globalCtx, limbIndex, &dList[1], &pos, &rot, actor) == 0)) { - SysMatrix_RotateAndTranslateState(&pos, &rot); - if (dList[1] != NULL) { - SysMatrix_GetStateAsRSPMatrix(*limbMatricies); - gSPMatrix(gfxCtx->polyOpa.p++, *limbMatricies, G_MTX_LOAD); - gSPDisplayList(gfxCtx->polyOpa.p++, dList[1]); + if ((overrideLimbDraw == NULL) || !overrideLimbDraw(globalCtx, limbIndex, &newDList, &pos, &rot, actor)) { + Matrix_JointPosition(&pos, &rot); + if (newDList != NULL) { + Matrix_ToMtx(*limbMatricies); + gSPMatrix(POLY_OPA_DISP++, *limbMatricies, G_MTX_LOAD); + gSPDisplayList(POLY_OPA_DISP++, newDList); (*limbMatricies)++; - } else if (dList[0] != NULL) { - SysMatrix_GetStateAsRSPMatrix(*limbMatricies); + } else if (limbDList != NULL) { + Matrix_ToMtx(*limbMatricies); (*limbMatricies)++; } } if (postLimbDraw != NULL) { - postLimbDraw(globalCtx, limbIndex, &dList[0], &rot, actor); + postLimbDraw(globalCtx, limbIndex, &limbDList, &rot, actor); } - if (limbEntry->firstChildIndex != LIMB_DONE) { - SkelAnime_DrawLimbSV(globalCtx, limbEntry->firstChildIndex, skeleton, limbDrawTable, overrideLimbDraw, - postLimbDraw, actor, limbMatricies); + if (limb->child != LIMB_DONE) { + SkelAnime_DrawFlexLimbOpa(globalCtx, limb->child, skeleton, jointTable, overrideLimbDraw, postLimbDraw, actor, + limbMatricies); } - SysMatrix_StatePop(); + Matrix_StatePop(); - if (limbEntry->nextLimbIndex != LIMB_DONE) { - SkelAnime_DrawLimbSV(globalCtx, limbEntry->nextLimbIndex, skeleton, limbDrawTable, overrideLimbDraw, - postLimbDraw, actor, limbMatricies); + if (limb->sibling != LIMB_DONE) { + SkelAnime_DrawFlexLimbOpa(globalCtx, limb->sibling, skeleton, jointTable, overrideLimbDraw, postLimbDraw, actor, + limbMatricies); } + + CLOSE_DISPS(globalCtx->state.gfxCtx); } -void SkelAnime_DrawSV(GlobalContext* globalCtx, void** skeleton, Vec3s* limbDrawTable, s32 dListCount, - OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, Actor* actor) { - StandardLimb* limbEntry; +/** + * Draw all limbs of type `StandardLimb` in a given flexible skeleton to the polyOpa buffer + * Limbs in a flexible skeleton have meshes that can stretch to line up with other limbs. + * An array of matrices is dynamically allocated so each limb can access any transform to ensure its meshes line up. + */ +void SkelAnime_DrawFlexOpa(GlobalContext* globalCtx, void** skeleton, Vec3s* jointTable, s32 dListCount, + OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, Actor* actor) { + StandardLimb* rootLimb; s32 pad; - Gfx* dList[2]; + Gfx* newDList; + Gfx* limbDList; Vec3f pos; Vec3s rot; - RSPMatrix* mtx; - GraphicsContext* gfxCtx; - s32 pad2; - - mtx = (RSPMatrix*)GRAPH_ALLOC(globalCtx->state.gfxCtx, ALIGN16(sizeof(RSPMatrix) * dListCount)); + Mtx* mtx = (Mtx*)GRAPH_ALLOC(globalCtx->state.gfxCtx, ALIGN16(sizeof(Mtx) * dListCount)); if (skeleton == NULL) { return; } - gfxCtx = globalCtx->state.gfxCtx; + OPEN_DISPS(globalCtx->state.gfxCtx); - gSPSegment(gfxCtx->polyOpa.p++, 0xD, mtx); + gSPSegment(POLY_OPA_DISP++, 0xD, mtx); - SysMatrix_StatePush(); + Matrix_StatePush(); - limbEntry = (StandardLimb*)Lib_SegmentedToVirtual(skeleton[0]); + rootLimb = Lib_SegmentedToVirtual(skeleton[0]); - pos.x = limbDrawTable[0].x; - pos.y = limbDrawTable[0].y; - pos.z = limbDrawTable[0].z; - rot = limbDrawTable[1]; + pos.x = jointTable[0].x; + pos.y = jointTable[0].y; + pos.z = jointTable[0].z; + rot = jointTable[1]; - dList[0] = limbEntry->displayLists[0]; - dList[1] = dList[0]; + newDList = limbDList = rootLimb->dList; - if ((overrideLimbDraw == NULL) || (overrideLimbDraw(globalCtx, 1, &dList[1], &pos, &rot, actor) == 0)) { - SysMatrix_RotateAndTranslateState(&pos, &rot); - if (dList[1] != NULL) { - Gfx* polyTemp = gfxCtx->polyOpa.p; + if ((overrideLimbDraw == NULL) || !overrideLimbDraw(globalCtx, 1, &newDList, &pos, &rot, actor)) { + Matrix_JointPosition(&pos, &rot); + if (newDList != NULL) { + Gfx* polyTemp = POLY_OPA_DISP; - gSPMatrix(polyTemp, SysMatrix_GetStateAsRSPMatrix(mtx), G_MTX_LOAD); - gSPDisplayList(polyTemp + 1, dList[1]); - gfxCtx->polyOpa.p = polyTemp + 2; + gSPMatrix(&polyTemp[0], Matrix_ToMtx(mtx), G_MTX_LOAD); + gSPDisplayList(&polyTemp[1], newDList); + POLY_OPA_DISP = &polyTemp[2]; mtx++; } else { - if (dList[0] != NULL) { - SysMatrix_GetStateAsRSPMatrix(mtx); + if (limbDList != NULL) { + Matrix_ToMtx(mtx); mtx++; } } } if (postLimbDraw != NULL) { - postLimbDraw(globalCtx, 1, &dList[0], &rot, actor); + postLimbDraw(globalCtx, 1, &limbDList, &rot, actor); } - if (limbEntry->firstChildIndex != LIMB_DONE) { - SkelAnime_DrawLimbSV(globalCtx, limbEntry->firstChildIndex, skeleton, limbDrawTable, overrideLimbDraw, - postLimbDraw, actor, &mtx); + if (rootLimb->child != LIMB_DONE) { + SkelAnime_DrawFlexLimbOpa(globalCtx, rootLimb->child, skeleton, jointTable, overrideLimbDraw, postLimbDraw, + actor, &mtx); } - SysMatrix_StatePop(); + Matrix_StatePop(); + + CLOSE_DISPS(globalCtx->state.gfxCtx); } -void func_80134148(GlobalContext* globalCtx, s32 limbIndex, void** skeleton, Vec3s* limbDrawTable, - OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, UnkActorDraw unkDraw, Actor* actor, - RSPMatrix** mtx) { - StandardLimb* limbEntry; - Gfx* dList[2]; +void func_80134148(GlobalContext* globalCtx, s32 limbIndex, void** skeleton, Vec3s* jointTable, + OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, UnkActorDraw unkDraw, + Actor* actor, Mtx** mtx) { + StandardLimb* limb; + Gfx* newDList; + Gfx* limbDList; Vec3f pos; Vec3s rot; - GraphicsContext* gfxCtx = globalCtx->state.gfxCtx; - s32 pad2; - SysMatrix_StatePush(); + OPEN_DISPS(globalCtx->state.gfxCtx); - limbEntry = (StandardLimb*)Lib_SegmentedToVirtual(skeleton[limbIndex]); + Matrix_StatePush(); + + limb = (StandardLimb*)Lib_SegmentedToVirtual(skeleton[limbIndex]); limbIndex++; - rot = limbDrawTable[limbIndex]; - pos.x = limbEntry->translation.x; - pos.y = limbEntry->translation.y; - pos.z = limbEntry->translation.z; + rot = jointTable[limbIndex]; + pos.x = limb->jointPos.x; + pos.y = limb->jointPos.y; + pos.z = limb->jointPos.z; - dList[0] = limbEntry->displayLists[0]; - dList[1] = dList[0]; + newDList = limbDList = limb->dList; - if ((overrideLimbDraw == NULL) || (overrideLimbDraw(globalCtx, limbIndex, &dList[1], &pos, &rot, actor) == 0)) { - SysMatrix_RotateAndTranslateState(&pos, &rot); - SysMatrix_StatePush(); + if ((overrideLimbDraw == NULL) || !overrideLimbDraw(globalCtx, limbIndex, &newDList, &pos, &rot, actor)) { + Matrix_JointPosition(&pos, &rot); + Matrix_StatePush(); + + //! @bug Does not check unkDraw is not NULL before calling it. unkDraw(globalCtx, limbIndex, actor); - if (dList[1] != NULL) { - Gfx* polyTemp = gfxCtx->polyOpa.p; + if (newDList != NULL) { + Gfx* polyTemp = POLY_OPA_DISP; - gSPMatrix(polyTemp, SysMatrix_GetStateAsRSPMatrix(*mtx), G_MTX_LOAD); - gSPDisplayList(polyTemp + 1, dList[1]); - gfxCtx->polyOpa.p = polyTemp + 2; + gSPMatrix(&polyTemp[0], Matrix_ToMtx(*mtx), G_MTX_LOAD); + gSPDisplayList(&polyTemp[1], newDList); + POLY_OPA_DISP = &polyTemp[2]; (*mtx)++; } else { - if (dList[0] != NULL) { - SysMatrix_GetStateAsRSPMatrix(*mtx); + if (limbDList != NULL) { + Matrix_ToMtx(*mtx); (*mtx)++; } } - SysMatrix_StatePop(); + Matrix_StatePop(); } if (postLimbDraw != NULL) { - postLimbDraw(globalCtx, limbIndex, &dList[0], &rot, actor); + postLimbDraw(globalCtx, limbIndex, &limbDList, &rot, actor); } - if (limbEntry->firstChildIndex != LIMB_DONE) { - func_80134148(globalCtx, limbEntry->firstChildIndex, skeleton, limbDrawTable, overrideLimbDraw, postLimbDraw, - unkDraw, actor, mtx); + if (limb->child != LIMB_DONE) { + func_80134148(globalCtx, limb->child, skeleton, jointTable, overrideLimbDraw, postLimbDraw, unkDraw, actor, + mtx); } - SysMatrix_StatePop(); + Matrix_StatePop(); - if (limbEntry->nextLimbIndex != LIMB_DONE) { - func_80134148(globalCtx, limbEntry->nextLimbIndex, skeleton, limbDrawTable, overrideLimbDraw, postLimbDraw, - unkDraw, actor, mtx); + if (limb->sibling != LIMB_DONE) { + func_80134148(globalCtx, limb->sibling, skeleton, jointTable, overrideLimbDraw, postLimbDraw, unkDraw, actor, + mtx); } + + CLOSE_DISPS(globalCtx->state.gfxCtx); } -void func_801343C0(GlobalContext* globalCtx, void** skeleton, Vec3s* limbDrawTable, s32 dListCount, - OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, UnkActorDraw unkDraw, Actor* actor) { - StandardLimb* limbEntry; +void func_801343C0(GlobalContext* globalCtx, void** skeleton, Vec3s* jointTable, s32 dListCount, + OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, UnkActorDraw unkDraw, + Actor* actor) { + StandardLimb* rootLimb; s32 pad; - Gfx* dList[2]; + Gfx* newDList; + Gfx* limbDList; Vec3f pos; Vec3s rot; - RSPMatrix* mtx; - GraphicsContext* gfxCtx; - s32 pad2; + Mtx* mtx; if (skeleton == NULL) { return; } - gfxCtx = globalCtx->state.gfxCtx; + OPEN_DISPS(globalCtx->state.gfxCtx); - mtx = (RSPMatrix*)GRAPH_ALLOC(globalCtx->state.gfxCtx, ALIGN16(sizeof(RSPMatrix) * dListCount)); + mtx = (Mtx*)GRAPH_ALLOC(globalCtx->state.gfxCtx, ALIGN16(sizeof(Mtx) * dListCount)); - gSPSegment(gfxCtx->polyOpa.p++, 0xD, mtx); + gSPSegment(POLY_OPA_DISP++, 0xD, mtx); - SysMatrix_StatePush(); + Matrix_StatePush(); - limbEntry = (StandardLimb*)Lib_SegmentedToVirtual(skeleton[0]); + rootLimb = (StandardLimb*)Lib_SegmentedToVirtual(skeleton[0]); - pos.x = limbDrawTable[0].x; - pos.y = limbDrawTable[0].y; - pos.z = limbDrawTable[0].z; - rot = limbDrawTable[1]; + pos.x = jointTable[0].x; + pos.y = jointTable[0].y; + pos.z = jointTable[0].z; + rot = jointTable[1]; - dList[0] = limbEntry->displayLists[0]; - dList[1] = dList[0]; + newDList = limbDList = rootLimb->dList; - if ((overrideLimbDraw == NULL) || (overrideLimbDraw(globalCtx, 1, &dList[1], &pos, &rot, actor) == 0)) { - SysMatrix_RotateAndTranslateState(&pos, &rot); - SysMatrix_StatePush(); + if ((overrideLimbDraw == NULL) || !overrideLimbDraw(globalCtx, 1, &newDList, &pos, &rot, actor)) { + Matrix_JointPosition(&pos, &rot); + Matrix_StatePush(); + + //! @bug Does not check unkDraw is not NULL before calling it. unkDraw(globalCtx, 1, actor); - if (dList[1] != NULL) { - Gfx* polyTemp = gfxCtx->polyOpa.p; - gSPMatrix(polyTemp, SysMatrix_GetStateAsRSPMatrix(mtx), G_MTX_LOAD); - gSPDisplayList(polyTemp + 1, dList[1]); - gfxCtx->polyOpa.p = polyTemp + 2; + if (newDList != NULL) { + Gfx* polyTemp = POLY_OPA_DISP; + + gSPMatrix(&polyTemp[0], Matrix_ToMtx(mtx), G_MTX_LOAD); + gSPDisplayList(&polyTemp[1], newDList); + POLY_OPA_DISP = &polyTemp[2]; mtx++; } else { - if (dList[0] != NULL) { - SysMatrix_GetStateAsRSPMatrix(mtx++); + if (limbDList != NULL) { + Matrix_ToMtx(mtx++); } } - SysMatrix_StatePop(); + Matrix_StatePop(); } if (postLimbDraw != NULL) { - postLimbDraw(globalCtx, 1, &dList[0], &rot, actor); + postLimbDraw(globalCtx, 1, &limbDList, &rot, actor); } - if (limbEntry->firstChildIndex != LIMB_DONE) { - func_80134148(globalCtx, limbEntry->firstChildIndex, skeleton, limbDrawTable, overrideLimbDraw, postLimbDraw, - unkDraw, actor, &mtx); + if (rootLimb->child != LIMB_DONE) { + func_80134148(globalCtx, rootLimb->child, skeleton, jointTable, overrideLimbDraw, postLimbDraw, unkDraw, actor, + &mtx); } - SysMatrix_StatePop(); + Matrix_StatePop(); + + CLOSE_DISPS(globalCtx->state.gfxCtx); } -/* - * Copies the rotation values from the rotation value table, indexed by the rotation index table - * When a rotation index is >= the animation limit, the output rotation value is copied from the frame's - * rotation value list, otherwise it is copied from the initial rotation value list +/** + * Copies frame data from the frame data table, indexed by the joint index table. + * Indices below staticIndexMax are copied from that entry in the static frame data table. + * Indices above staticIndexMax are offsets to a frame data array indexed by the frame. */ -void SkelAnime_AnimateFrame(AnimationHeader* animationSeg, s32 currentFrame, s32 limbCount, Vec3s* dst) { - AnimationHeader* animationHeader = Lib_SegmentedToVirtual(animationSeg); - JointIndex* index = Lib_SegmentedToVirtual(animationHeader->jointIndices); - AnimationRotationValue* rotationValueTable = Lib_SegmentedToVirtual(animationHeader->frameData); - AnimationRotationValue* frameRotationValueTable = &rotationValueTable[currentFrame]; +void SkelAnime_GetFrameData(AnimationHeader* animation, s32 frame, s32 limbCount, Vec3s* frameTable) { + AnimationHeader* animHeader = Lib_SegmentedToVirtual(animation); + JointIndex* jointIndices = Lib_SegmentedToVirtual(animHeader->jointIndices); + s16* frameData = Lib_SegmentedToVirtual(animHeader->frameData); + s16* dynamicData = &frameData[frame]; s32 i; - u16 limit = animationHeader->staticIndexMax; + u16 staticIndexMax = animHeader->staticIndexMax; for (i = 0; i < limbCount; i++) { // Debug prints here, this is needed to prevent loop unrolling if (0) { if (0) {}; } - dst->x = index->x >= limit ? frameRotationValueTable[index->x] : rotationValueTable[index->x]; - dst->y = index->y >= limit ? frameRotationValueTable[index->y] : rotationValueTable[index->y]; - dst->z = index->z >= limit ? frameRotationValueTable[index->z] : rotationValueTable[index->z]; - index++, dst++; + frameTable->x = jointIndices->x >= staticIndexMax ? dynamicData[jointIndices->x] : frameData[jointIndices->x]; + frameTable->y = jointIndices->y >= staticIndexMax ? dynamicData[jointIndices->y] : frameData[jointIndices->y]; + frameTable->z = jointIndices->z >= staticIndexMax ? dynamicData[jointIndices->z] : frameData[jointIndices->z]; + jointIndices++, frameTable++; } } -s16 SkelAnime_GetTotalFrames(AnimationHeaderCommon* animationSeg) { - AnimationHeaderCommon* animation = Lib_SegmentedToVirtual(animationSeg); - return animation->frameCount; +s16 Animation_GetLength(void* animation) { + AnimationHeaderCommon* common = Lib_SegmentedToVirtual(animation); + + return common->frameCount; } -s16 SkelAnime_GetFrameCount(AnimationHeaderCommon* animationSeg) { - AnimationHeaderCommon* animation = Lib_SegmentedToVirtual(animationSeg); +s16 Animation_GetLastFrame(void* animation) { + AnimationHeaderCommon* common = Lib_SegmentedToVirtual(animation); - return (u16)animation->frameCount - 1; + return (u16)common->frameCount - 1; } /* * Draws the Skeleton `skeleton`'s limb at index `limbIndex`. Appends all generated graphics commands to * `gfx`. Returns a pointer to the next gfx to be appended to. */ -Gfx* SkelAnime_Draw2Limb(GlobalContext* globalCtx, s32 limbIndex, void** skeleton, Vec3s* limbDrawTable, - OverrideLimbDraw2 overrideLimbDraw, PostLimbDraw2 postLimbDraw, Actor* actor, Gfx* gfx) { - StandardLimb* limbEntry; +Gfx* SkelAnime_DrawLimb(GlobalContext* globalCtx, s32 limbIndex, void** skeleton, Vec3s* jointTable, + OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, Actor* actor, Gfx* gfx) { + StandardLimb* limb; Gfx* dList; Vec3f pos; Vec3s rot; - SysMatrix_StatePush(); + Matrix_StatePush(); - limbEntry = (StandardLimb*)Lib_SegmentedToVirtual(skeleton[limbIndex]); + limb = (StandardLimb*)Lib_SegmentedToVirtual(skeleton[limbIndex]); limbIndex++; - rot = limbDrawTable[limbIndex]; - pos.x = limbEntry->translation.x; - pos.y = limbEntry->translation.y; - pos.z = limbEntry->translation.z; + rot = jointTable[limbIndex]; + pos.x = limb->jointPos.x; + pos.y = limb->jointPos.y; + pos.z = limb->jointPos.z; - dList = limbEntry->displayLists[0]; + dList = limb->dList; - if ((overrideLimbDraw == NULL) || (overrideLimbDraw(globalCtx, limbIndex, &dList, &pos, &rot, actor, &gfx) == 0)) { - SysMatrix_RotateAndTranslateState(&pos, &rot); + if ((overrideLimbDraw == NULL) || !overrideLimbDraw(globalCtx, limbIndex, &dList, &pos, &rot, actor, &gfx)) { + Matrix_JointPosition(&pos, &rot); if (dList != NULL) { - gSPMatrix(gfx, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_LOAD); - gSPDisplayList(gfx + 1, dList); - gfx = gfx + 2; + gSPMatrix(&gfx[0], Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_LOAD); + gSPDisplayList(&gfx[1], dList); + gfx = &gfx[2]; } } @@ -665,16 +677,16 @@ Gfx* SkelAnime_Draw2Limb(GlobalContext* globalCtx, s32 limbIndex, void** skeleto postLimbDraw(globalCtx, limbIndex, &dList, &rot, actor, &gfx); } - if (limbEntry->firstChildIndex != LIMB_DONE) { - gfx = SkelAnime_Draw2Limb(globalCtx, limbEntry->firstChildIndex, skeleton, limbDrawTable, overrideLimbDraw, - postLimbDraw, actor, gfx); + if (limb->child != LIMB_DONE) { + gfx = SkelAnime_DrawLimb(globalCtx, limb->child, skeleton, jointTable, overrideLimbDraw, postLimbDraw, actor, + gfx); } - SysMatrix_StatePop(); + Matrix_StatePop(); - if (limbEntry->nextLimbIndex != LIMB_DONE) { - gfx = SkelAnime_Draw2Limb(globalCtx, limbEntry->nextLimbIndex, skeleton, limbDrawTable, overrideLimbDraw, - postLimbDraw, actor, gfx); + if (limb->sibling != LIMB_DONE) { + gfx = SkelAnime_DrawLimb(globalCtx, limb->sibling, skeleton, jointTable, overrideLimbDraw, postLimbDraw, actor, + gfx); } return gfx; @@ -684,9 +696,9 @@ Gfx* SkelAnime_Draw2Limb(GlobalContext* globalCtx, s32 limbIndex, void** skeleto * Draws the Skeleton `skeleton` Appends all generated graphics to `gfx`, and returns a pointer to the * next gfx to be appended to. */ -Gfx* SkelAnime_Draw2(GlobalContext* globalCtx, void** skeleton, Vec3s* limbDrawTable, - OverrideLimbDraw2 overrideLimbDraw, PostLimbDraw2 postLimbDraw, Actor* actor, Gfx* gfx) { - StandardLimb* limbEntry; +Gfx* SkelAnime_Draw(GlobalContext* globalCtx, void** skeleton, Vec3s* jointTable, OverrideLimbDraw overrideLimbDraw, + PostLimbDraw postLimbDraw, Actor* actor, Gfx* gfx) { + StandardLimb* rootLimb; s32 pad; Gfx* dList; Vec3f pos; @@ -696,23 +708,24 @@ Gfx* SkelAnime_Draw2(GlobalContext* globalCtx, void** skeleton, Vec3s* limbDrawT return NULL; } - SysMatrix_StatePush(); + Matrix_StatePush(); - limbEntry = (StandardLimb*)Lib_SegmentedToVirtual(skeleton[0]); + rootLimb = (StandardLimb*)Lib_SegmentedToVirtual(skeleton[0]); - pos.x = limbDrawTable[0].x; - pos.y = limbDrawTable[0].y; - pos.z = limbDrawTable[0].z; - rot = limbDrawTable[1]; + pos.x = jointTable[0].x; + pos.y = jointTable[0].y; + pos.z = jointTable[0].z; - dList = limbEntry->displayLists[0]; + rot = jointTable[1]; - if ((overrideLimbDraw == NULL) || (overrideLimbDraw(globalCtx, 1, &dList, &pos, &rot, actor, &gfx) == 0)) { - SysMatrix_RotateAndTranslateState(&pos, &rot); + dList = rootLimb->dList; + + if ((overrideLimbDraw == NULL) || !overrideLimbDraw(globalCtx, 1, &dList, &pos, &rot, actor, &gfx)) { + Matrix_JointPosition(&pos, &rot); if (dList != NULL) { - gSPMatrix(gfx, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_LOAD); - gSPDisplayList(gfx + 1, dList); - gfx = gfx + 2; + gSPMatrix(&gfx[0], Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_LOAD); + gSPDisplayList(&gfx[1], dList); + gfx = &gfx[2]; } } @@ -720,202 +733,285 @@ Gfx* SkelAnime_Draw2(GlobalContext* globalCtx, void** skeleton, Vec3s* limbDrawT postLimbDraw(globalCtx, 1, &dList, &rot, actor, &gfx); } - if (limbEntry->firstChildIndex != LIMB_DONE) { - gfx = SkelAnime_Draw2Limb(globalCtx, limbEntry->firstChildIndex, skeleton, limbDrawTable, overrideLimbDraw, - postLimbDraw, actor, gfx); + if (rootLimb->child != LIMB_DONE) { + gfx = SkelAnime_DrawLimb(globalCtx, rootLimb->child, skeleton, jointTable, overrideLimbDraw, postLimbDraw, + actor, gfx); } - SysMatrix_StatePop(); + Matrix_StatePop(); return gfx; } -/* - * Draws the Skeleton `skeleton` Appends all generated graphics to `gfx`, and returns a pointer to the - * next gfx to be appended to. Allocates matricies for display lists on the graph heap. +/** + * Draw a limb of type `StandardLimb` contained within a flexible skeleton to the specified display buffer */ -Gfx* SkelAnime_DrawLimbSV2(GlobalContext* globalCtx, s32 limbIndex, void** skeleton, Vec3s* limbDrawTable, - OverrideLimbDraw2 overrideLimbDraw, PostLimbDraw2 postLimbDraw, Actor* actor, - RSPMatrix** mtx, Gfx* gfx) { - StandardLimb* limbEntry; - Gfx* dList1; - Gfx* dList2; +Gfx* SkelAnime_DrawFlexLimb(GlobalContext* globalCtx, s32 limbIndex, void** skeleton, Vec3s* jointTable, + OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, Actor* actor, Mtx** mtx, + Gfx* gfx) { + StandardLimb* limb; + Gfx* newDList; + Gfx* limbDList; Vec3f pos; Vec3s rot; - SysMatrix_StatePush(); + Matrix_StatePush(); - limbEntry = (StandardLimb*)Lib_SegmentedToVirtual(skeleton[limbIndex]); + limb = (StandardLimb*)Lib_SegmentedToVirtual(skeleton[limbIndex]); limbIndex++; - rot = limbDrawTable[limbIndex]; + rot = jointTable[limbIndex]; - pos.x = limbEntry->translation.x; - pos.y = limbEntry->translation.y; - pos.z = limbEntry->translation.z; + pos.x = limb->jointPos.x; + pos.y = limb->jointPos.y; + pos.z = limb->jointPos.z; - dList1 = dList2 = limbEntry->displayLists[0]; + newDList = limbDList = limb->dList; - if ((overrideLimbDraw == NULL) || (overrideLimbDraw(globalCtx, limbIndex, &dList1, &pos, &rot, actor, &gfx) == 0)) { - SysMatrix_RotateAndTranslateState(&pos, &rot); - if (dList1 != NULL) { - gSPMatrix(gfx, SysMatrix_GetStateAsRSPMatrix(*mtx), G_MTX_LOAD); - gSPDisplayList(gfx + 1, dList1); - gfx = gfx + 2; + if ((overrideLimbDraw == NULL) || !overrideLimbDraw(globalCtx, limbIndex, &newDList, &pos, &rot, actor, &gfx)) { + Matrix_JointPosition(&pos, &rot); + if (newDList != NULL) { + gSPMatrix(&gfx[0], Matrix_ToMtx(*mtx), G_MTX_LOAD); + gSPDisplayList(&gfx[1], newDList); + gfx = &gfx[2]; (*mtx)++; } else { - if (dList2 != NULL) { - SysMatrix_GetStateAsRSPMatrix(*mtx); + if (limbDList != NULL) { + Matrix_ToMtx(*mtx); (*mtx)++; } } } if (postLimbDraw != NULL) { - postLimbDraw(globalCtx, limbIndex, &dList2, &rot, actor, &gfx); + postLimbDraw(globalCtx, limbIndex, &limbDList, &rot, actor, &gfx); } - if (limbEntry->firstChildIndex != LIMB_DONE) { - gfx = SkelAnime_DrawLimbSV2(globalCtx, limbEntry->firstChildIndex, skeleton, limbDrawTable, overrideLimbDraw, - postLimbDraw, actor, mtx, gfx); + if (limb->child != LIMB_DONE) { + gfx = SkelAnime_DrawFlexLimb(globalCtx, limb->child, skeleton, jointTable, overrideLimbDraw, postLimbDraw, + actor, mtx, gfx); } - SysMatrix_StatePop(); + Matrix_StatePop(); - if (limbEntry->nextLimbIndex != LIMB_DONE) { - gfx = SkelAnime_DrawLimbSV2(globalCtx, limbEntry->nextLimbIndex, skeleton, limbDrawTable, overrideLimbDraw, - postLimbDraw, actor, mtx, gfx); + if (limb->sibling != LIMB_DONE) { + gfx = SkelAnime_DrawFlexLimb(globalCtx, limb->sibling, skeleton, jointTable, overrideLimbDraw, postLimbDraw, + actor, mtx, gfx); } return gfx; } -Gfx* SkelAnime_DrawSV2(GlobalContext* globalCtx, void** skeleton, Vec3s* limbDrawTable, s32 dListCount, - OverrideLimbDraw2 overrideLimbDraw, PostLimbDraw2 postLimbDraw, Actor* actor, Gfx* gfx) { - StandardLimb* limbEntry; +/** + * Draw all limbs of type `StandardLimb` in a given flexible skeleton to the specified display buffer + * Limbs in a flexible skeleton have meshes that can stretch to line up with other limbs. + * An array of matrices is dynamically allocated so each limb can access any transform to ensure its meshes line up. + */ +Gfx* SkelAnime_DrawFlex(GlobalContext* globalCtx, void** skeleton, Vec3s* jointTable, s32 dListCount, + OverrideLimbDraw overrideLimbDraw, PostLimbDraw postLimbDraw, Actor* actor, Gfx* gfx) { + StandardLimb* rootLimb; s32 pad; - Gfx* dList1; - Gfx* dList2; + Gfx* newDList; + Gfx* limbDList; Vec3f pos; Vec3s rot; - RSPMatrix* mtx; + Mtx* mtx; if (skeleton == NULL) { return NULL; } - mtx = (RSPMatrix*)GRAPH_ALLOC(globalCtx->state.gfxCtx, ALIGN16(sizeof(RSPMatrix) * dListCount)); + mtx = (Mtx*)GRAPH_ALLOC(globalCtx->state.gfxCtx, ALIGN16(sizeof(Mtx) * dListCount)); gSPSegment(gfx++, 0xD, mtx); - SysMatrix_StatePush(); + Matrix_StatePush(); - limbEntry = (StandardLimb*)Lib_SegmentedToVirtual(skeleton[0]); + rootLimb = Lib_SegmentedToVirtual(skeleton[0]); - pos.x = limbDrawTable[0].x; - pos.y = limbDrawTable[0].y; - pos.z = limbDrawTable[0].z; + pos.x = jointTable[0].x; + pos.y = jointTable[0].y; + pos.z = jointTable[0].z; - rot = limbDrawTable[1]; + rot = jointTable[1]; - dList1 = dList2 = limbEntry->displayLists[0]; + newDList = limbDList = rootLimb->dList; - if ((overrideLimbDraw == NULL) || (overrideLimbDraw(globalCtx, 1, &dList1, &pos, &rot, actor, &gfx) == 0)) { - SysMatrix_RotateAndTranslateState(&pos, &rot); - if (dList1 != NULL) { - gSPMatrix(gfx, SysMatrix_GetStateAsRSPMatrix(mtx), G_MTX_LOAD); - gSPDisplayList(gfx + 1, dList1); - gfx = gfx + 2; + if ((overrideLimbDraw == NULL) || !overrideLimbDraw(globalCtx, 1, &newDList, &pos, &rot, actor, &gfx)) { + Matrix_JointPosition(&pos, &rot); + if (newDList != NULL) { + gSPMatrix(&gfx[0], Matrix_ToMtx(mtx), G_MTX_LOAD); + gSPDisplayList(&gfx[1], newDList); + gfx = &gfx[2]; mtx++; } else { - if (dList2 != NULL) { - SysMatrix_GetStateAsRSPMatrix(mtx); + if (limbDList != NULL) { + Matrix_ToMtx(mtx); mtx++; } } } if (postLimbDraw != NULL) { - postLimbDraw(globalCtx, 1, &dList2, &rot, actor, &gfx); + postLimbDraw(globalCtx, 1, &limbDList, &rot, actor, &gfx); } - if (limbEntry->firstChildIndex != LIMB_DONE) { - gfx = SkelAnime_DrawLimbSV2(globalCtx, limbEntry->firstChildIndex, skeleton, limbDrawTable, overrideLimbDraw, - postLimbDraw, actor, &mtx, gfx); + if (rootLimb->child != LIMB_DONE) { + gfx = SkelAnime_DrawFlexLimb(globalCtx, rootLimb->child, skeleton, jointTable, overrideLimbDraw, postLimbDraw, + actor, &mtx, gfx); } - SysMatrix_StatePop(); + Matrix_StatePop(); return gfx; } -// Function is unused. -#pragma GLOBAL_ASM("asm/non_matchings/code/z_skelanime/func_80134FFC.s") - -s16 func_801353D4(AnimationHeaderCommon* animationSeg) { - AnimationHeaderCommon* animation = Lib_SegmentedToVirtual(animationSeg); - - return animation->unk02; -} - -/* - * Appears to be unused anywhere in the game. Appears to be a clone of - * SkelAnime_GetTotalFrames +/** + * Unpacks frame data for the animation at the given frame into frameTable + * Used by the legacy animation format */ -s16 SkelAnime_GetTotalFrames2(AnimationHeaderCommon* animationSeg) { - AnimationHeaderCommon* animation = Lib_SegmentedToVirtual(animationSeg); - - return animation->frameCount; -} - -/* - * Appears to be unused anywhere in the game. Appears to be a clone of - * SkelAnime_GetFrameCount - */ -s16 SkelAnime_GetFrameCount2(AnimationHeaderCommon* animationSeg) { - AnimationHeaderCommon* animation = Lib_SegmentedToVirtual(animationSeg); - - return animation->frameCount - 1; -} - -void SkelAnime_InterpolateVec3s(s32 limbCount, Vec3s* dst, Vec3s* vec2, Vec3s* vec3, f32 unkf) { +#ifdef NON_MATCHING +// equivalent, minor reordering +s16 SkelAnime_GetFrameDataLegacy(LegacyAnimationHeader* animation, s32 frame, Vec3s* frameTable) { + LegacyAnimationHeader* animHeader = Lib_SegmentedToVirtual(animation); + s16 limbCount = animHeader->limbCount; + JointKey* key = Lib_SegmentedToVirtual(animHeader->jointKey); + s16* frameData = Lib_SegmentedToVirtual(animHeader->frameData); + s16* staticData = &frameData[0]; + s16* dynamicData = &frameData[frame]; s32 i; - s16 dist; - s16 temp2; - if (unkf < 1.0f) { - for (i = 0; i < limbCount; i++, dst++, vec2++, vec3++) { - temp2 = vec2->x; - dist = vec3->x - temp2; - dst->x = (s16)(dist * unkf) + temp2; - temp2 = vec2->y; - dist = vec3->y - temp2; - dst->y = (s16)(dist * unkf) + temp2; - temp2 = vec2->z; - dist = vec3->z - temp2; - dst->z = (s16)(dist * unkf) + temp2; + /** + *Equivalent to the following, but the compiler optimizes the loop in a way I can't replicate + */ + /* + for(i = 0, frameTable++, key++; i < limbCount + 1; i++, key++, frameTable++) { + frameTable->x = frame < key->xMax ? dynamicData[key->x] : staticData[key->x]; + frameTable->y = frame < key->yMax ? dynamicData[key->y] : staticData[key->y]; + frameTable->z = frame < key->zMax ? dynamicData[key->z] : staticData[key->z]; + } + */ + frameTable->x = frame < key->xMax ? dynamicData[key->x] : staticData[key->x]; + frameTable->y = frame < key->yMax ? dynamicData[key->y] : staticData[key->y]; + frameTable->z = frame < key->zMax ? dynamicData[key->z] : staticData[key->z]; + + i = 1; + frameTable++; + key++; + + if (limbCount & 1) {} + + if (limbCount > 0) { + if (limbCount & 1) { + i++; + frameTable->x = frame < key->xMax ? dynamicData[key->x] : staticData[key->x]; + frameTable->y = frame < key->yMax ? dynamicData[key->y] : staticData[key->y]; + frameTable->z = frame < key->zMax ? dynamicData[key->z] : staticData[key->z]; + key++; + frameTable++; + if (limbCount + 1 == i) { + goto ret; + } + } + do { + i += 2; + frameTable->x = frame < key->xMax ? dynamicData[key->x] : staticData[key->x]; + frameTable->y = frame < key->yMax ? dynamicData[key->y] : staticData[key->y]; + frameTable->z = frame < key->zMax ? dynamicData[key->z] : staticData[key->z]; + key++; + frameTable++; + frameTable->x = frame < key->xMax ? dynamicData[key->x] : staticData[key->x]; + frameTable->y = frame < key->yMax ? dynamicData[key->y] : staticData[key->y]; + frameTable->z = frame < key->zMax ? dynamicData[key->z] : staticData[key->z]; + key++; + frameTable++; + } while (i != limbCount + 1); + } + +ret: + return limbCount; +} +#else +#pragma GLOBAL_ASM("asm/non_matchings/code/z_skelanime/SkelAnime_GetFrameData2.s") +#endif + +/** + * Used by legacy animation format + */ +s16 Animation_GetLimbCount2(LegacyAnimationHeader* animation) { + LegacyAnimationHeader* animHeader = Lib_SegmentedToVirtual(animation); + + return animHeader->limbCount; +} + +/** + * Used by legacy animation format + */ +s16 Animation_GetLength2(LegacyAnimationHeader* animation) { + LegacyAnimationHeader* animHeader = Lib_SegmentedToVirtual(animation); + + return animHeader->frameCount; +} + +/** + * Used by legacy animation format + */ +s16 Animation_GetLastFrame2(LegacyAnimationHeader* animation) { + AnimationHeaderCommon* animHeader = Lib_SegmentedToVirtual(animation); + + return animHeader->frameCount - 1; +} + +/** + * Linearly interpolates the start and tactoret frame tables with the given weight, putting the result in dst + */ +void SkelAnime_InterpFrameTable(s32 limbCount, Vec3s* dst, Vec3s* start, Vec3s* tactoret, f32 weight) { + s32 i; + s16 diff; + s16 base; + + if (weight < 1.0f) { + for (i = 0; i < limbCount; i++, dst++, start++, tactoret++) { + base = start->x; + diff = tactoret->x - base; + dst->x = (s16)(diff * weight) + base; + base = start->y; + diff = tactoret->y - base; + dst->y = (s16)(diff * weight) + base; + base = start->z; + diff = tactoret->z - base; + dst->z = (s16)(diff * weight) + base; } } else { - for (i = 0; i < limbCount; i++, dst++, vec3++) { - dst->x = vec3->x; - dst->y = vec3->y; - dst->z = vec3->z; + for (i = 0; i < limbCount; i++, dst++, tactoret++) { + dst->x = tactoret->x; + dst->y = tactoret->y; + dst->z = tactoret->z; } } } -void SkelAnime_AnimationCtxReset(AnimationContext* animationCtx) { +/** + * Zeroes out the current request count + */ +void AnimationContext_Reset(AnimationContext* animationCtx) { animationCtx->animationCount = 0; } -void func_801358D4(GlobalContext* globalCtx) { - D_801F5AB0 *= 2; +/** + * Shifts the queue flag to the next queue + */ +void AnimationContext_SetNextQueue(GlobalContext* globalCtx) { + sAnimQueueFlags <<= 1; } -void func_801358F4(GlobalContext* globalCtx) { - D_801F5AB4 |= D_801F5AB0; +/** + * Disables the current animation queue. Only load and move actor requests will be processed for that queue. + */ +void AnimationContext_DisableQueue(GlobalContext* globalCtx) { + sDisableAnimQueueFlags |= sAnimQueueFlags; } -AnimationEntry* SkelAnime_NextEntry(AnimationContext* animationCtx, AnimationType type) { +AnimationEntry* AnimationContext_AddEntry(AnimationContext* animationCtx, AnimationType type) { AnimationEntry* entry; s16 index = animationCtx->animationCount; @@ -929,807 +1025,991 @@ AnimationEntry* SkelAnime_NextEntry(AnimationContext* animationCtx, AnimationTyp return entry; } -/* - * The next 6 functions are coordinate with the AnimationType enum +/** + * Requests loading frame data from the Link animation into frameTable */ - -void SkelAnime_LoadLinkAnimetion(GlobalContext* globalCtx, LinkAnimationHeader* linkAnimetionSeg, s32 frame, - s32 limbCount, void* ram) { - AnimationEntry* entry; - LinkAnimationHeader* LinkAnimationHeader; - s32 pad; - - entry = SkelAnime_NextEntry(&globalCtx->animationCtx, ANIMATION_LINKANIMETION); +void AnimationContext_SetLoadFrame(GlobalContext* globalCtx, LinkAnimationHeader* animation, s32 frame, s32 limbCount, + Vec3s* frameTable) { + AnimationEntry* entry = AnimationContext_AddEntry(&globalCtx->animationCtx, ANIMATION_LINKANIMETION); if (entry != NULL) { - LinkAnimationHeader = Lib_SegmentedToVirtual(linkAnimetionSeg); - osCreateMesgQueue(&entry->types.type0.msgQueue, &entry->types.type0.msg, 1); - DmaMgr_SendRequestImpl( - &entry->types.type0.req, ram, - LINK_ANIMETION_OFFSET(LinkAnimationHeader->segment, (sizeof(Vec3s) * limbCount + 2) * frame), - sizeof(Vec3s) * limbCount + 2, 0, &entry->types.type0.msgQueue, NULL); + LinkAnimationHeader* linkAnimHeader = (LinkAnimationHeader*)Lib_SegmentedToVirtual(animation); + u32 ram = frameTable; + + osCreateMesgQueue(&entry->data.load.msgQueue, &entry->data.load.msg, 1); + DmaMgr_SendRequestImpl(&entry->data.load.req, ram, + LINK_ANIMETION_OFFSET(linkAnimHeader->segment, (sizeof(Vec3s) * limbCount + 2) * frame), + sizeof(Vec3s) * limbCount + 2, 0, &entry->data.load.msgQueue, NULL); } } -void SkelAnime_LoadAnimationType1(GlobalContext* globalCtx, s32 vecCount, Vec3s* dst, Vec3s* src) { - AnimationEntry* entry = SkelAnime_NextEntry(&globalCtx->animationCtx, ANIMATION_TYPE1); +/** + * Requests copying all vectors from src frame table into dst frame table + */ +void AnimationContext_SetCopyAll(GlobalContext* globalCtx, s32 vecCount, Vec3s* dst, Vec3s* src) { + AnimationEntry* entry = AnimationContext_AddEntry(&globalCtx->animationCtx, ANIMENTRY_COPYALL); if (entry != NULL) { - entry->types.type1.unk00 = D_801F5AB0; - entry->types.type1.vecCount = vecCount; - entry->types.type1.dst = dst; - entry->types.type1.src = src; + entry->data.copy.queueFlag = sAnimQueueFlags; + entry->data.copy.vecCount = vecCount; + entry->data.copy.dst = dst; + entry->data.copy.src = src; } } -void SkelAnime_LoadAnimationType2(GlobalContext* globalCtx, s32 limbCount, Vec3s* arg2, Vec3s* arg3, f32 arg4) { - AnimationEntry* entry = SkelAnime_NextEntry(&globalCtx->animationCtx, ANIMATION_TYPE2); +/** + * Requests interpolating between base and mod frame tables with the given weight, placing the result in base + */ +void AnimationContext_SetInterp(GlobalContext* globalCtx, s32 vecCount, Vec3s* base, Vec3s* mod, f32 weight) { + AnimationEntry* entry = AnimationContext_AddEntry(&globalCtx->animationCtx, ANIMENTRY_INTERP); if (entry != NULL) { - entry->types.type2.unk00 = D_801F5AB0; - entry->types.type2.limbCount = limbCount; - entry->types.type2.unk04 = arg2; - entry->types.type2.unk08 = arg3; - entry->types.type2.unk0C = arg4; + entry->data.interp.queueFlag = sAnimQueueFlags; + entry->data.interp.vecCount = vecCount; + entry->data.interp.base = base; + entry->data.interp.mod = mod; + entry->data.interp.weight = weight; } } -void SkelAnime_LoadAnimationType3(GlobalContext* globalCtx, s32 vecCount, Vec3s* dst, Vec3s* src, u8* index) { - AnimationEntry* entry = SkelAnime_NextEntry(&globalCtx->animationCtx, ANIMATION_TYPE3); +/** + * Requests copying vectors from src frame table to dst frame table whose load flag is true + */ +void AnimationContext_SetCopyTrue(GlobalContext* globalCtx, s32 vecCount, Vec3s* dst, Vec3s* src, u8* copyFlag) { + AnimationEntry* entry = AnimationContext_AddEntry(&globalCtx->animationCtx, ANIMENTRY_COPYTRUE); if (entry != NULL) { - entry->types.type3.unk00 = D_801F5AB0; - entry->types.type3.vecCount = vecCount; - entry->types.type3.dst = dst; - entry->types.type3.src = src; - entry->types.type3.index = index; + entry->data.copy1.queueFlag = sAnimQueueFlags; + entry->data.copy1.vecCount = vecCount; + entry->data.copy1.dst = dst; + entry->data.copy1.src = src; + entry->data.copy1.copyFlag = copyFlag; } } -void SkelAnime_LoadAnimationType4(GlobalContext* globalCtx, s32 vecCount, Vec3s* dst, Vec3s* src, u8* index) { - AnimationEntry* entry = SkelAnime_NextEntry(&globalCtx->animationCtx, ANIMATION_TYPE4); +/** + * Requests copying vectors from src frame table to dst frame table whose load flag is false + */ +void AnimationContext_SetCopyFalse(GlobalContext* globalCtx, s32 vecCount, Vec3s* dst, Vec3s* src, u8* copyFlag) { + AnimationEntry* entry = AnimationContext_AddEntry(&globalCtx->animationCtx, ANIMENTRY_COPYFALSE); if (entry != NULL) { - entry->types.type4.unk00 = D_801F5AB0; - entry->types.type4.vecCount = vecCount; - entry->types.type4.dst = dst; - entry->types.type4.src = src; - entry->types.type4.index = index; + entry->data.copy0.queueFlag = sAnimQueueFlags; + entry->data.copy0.vecCount = vecCount; + entry->data.copy0.dst = dst; + entry->data.copy0.src = src; + entry->data.copy0.copyFlag = copyFlag; } } -void SkelAnime_LoadAnimationType5(GlobalContext* globalCtx, Actor* actor, SkelAnime* skelAnime, f32 arg3) { - AnimationEntry* entry = SkelAnime_NextEntry(&globalCtx->animationCtx, ANIMATION_TYPE5); +/** + * Requests moving an actor according to the translation of its root limb + */ +void AnimationContext_SetMoveActor(GlobalContext* globalCtx, Actor* actor, SkelAnime* skelAnime, f32 actor3) { + AnimationEntry* entry = AnimationContext_AddEntry(&globalCtx->animationCtx, ANIMENTRY_MOVEACTOR); if (entry != NULL) { - entry->types.type5.actor = actor; - entry->types.type5.skelAnime = skelAnime; - entry->types.type5.unk08 = arg3; + entry->data.move.actor = actor; + entry->data.move.skelAnime = skelAnime; + entry->data.move.unk08 = actor3; } } -/* The next functions are callbacks to loading animations */ +/** + * Receives the request for Link's animation frame data + */ +void AnimationContext_LoadFrame(GlobalContext* globalCtx, AnimationEntryData* data) { + AnimEntryLoadFrame* entry = &data->load; -void SkelAnime_LinkAnimetionLoaded(GlobalContext* globalCtx, AnimationEntryType0* entry) { osRecvMesg(&entry->msgQueue, NULL, OS_MESG_BLOCK); } -void SkelAnime_AnimationType1Loaded(GlobalContext* globalCtx, AnimationEntryType1* entry) { - s32 i; - Vec3s* dst; - Vec3s* src; - AnimationEntryRaw* genericEntry = (AnimationEntryRaw*)entry; +/** + * If the entry's queue is enabled, copies all vectors from src frame table to dst frame table + */ +void AnimationContext_CopyAll(GlobalContext* globalCtx, AnimationEntryData* data) { + AnimEntryCopyAll* entry = &data->copy; - if ((genericEntry->raw[0] & D_801F5AB4) != 0) { - return; - } + if (!(entry->queueFlag & sDisableAnimQueueFlags)) { + Vec3s* dst = entry->dst; + Vec3s* src = entry->src; + s32 i; - for (dst = entry->dst, src = entry->src, i = 0; i < genericEntry->raw[1]; i++) { - *dst++ = *src++; + for (i = 0; i < entry->vecCount; i++) { + *dst++ = *src++; + } } } -void SkelAnime_AnimationType2Loaded(GlobalContext* globalCtx, AnimationEntryType2* entry) { - if ((entry->unk00 & D_801F5AB4) == 0) { - SkelAnime_InterpolateVec3s(entry->limbCount, entry->unk04, entry->unk04, entry->unk08, entry->unk0C); +/** + * If the entry's queue is enabled, interpolates between the base and mod frame tables, placing the result in base + */ +void AnimationContext_Interp(GlobalContext* globalCtx, AnimationEntryData* data) { + AnimEntryInterp* entry = &data->interp; + + if (!(entry->queueFlag & sDisableAnimQueueFlags)) { + SkelAnime_InterpFrameTable(entry->vecCount, entry->base, entry->base, entry->mod, entry->weight); } } -void SkelAnime_AnimationType3Loaded(GlobalContext* globalCtx, AnimationEntryType3* entry) { - s32 i; - Vec3s* dst; - Vec3s* src; - u8* index; - AnimationEntryRaw* rawEntry = (AnimationEntryRaw*)entry; +/** + * If the entry's queue is enabled, copies all vectors from src frame table to dst frame table whose copy flag is true + */ +void AnimationContext_CopyTrue(GlobalContext* globalCtx, AnimationEntryData* data) { + AnimEntryCopyTrue* entry = &data->copy1; - if ((rawEntry->raw[0] & D_801F5AB4) == 0) { - for (dst = entry->dst, src = entry->src, index = entry->index, i = 0; i < rawEntry->raw[1]; i++, dst++, src++) { - if (*index++) { + if (!(entry->queueFlag & sDisableAnimQueueFlags)) { + Vec3s* dst = entry->dst; + Vec3s* src = entry->src; + u8* copyFlag = entry->copyFlag; + s32 i; + + for (i = 0; i < entry->vecCount; i++, dst++, src++) { + if (*copyFlag++) { *dst = *src; } } } } -void SkelAnime_AnimationType4Loaded(GlobalContext* globalCtx, AnimationEntryType4* entry) { - s32 i; - Vec3s* dst; - Vec3s* src; - u8* index; - AnimationEntryRaw* rawEntry = (AnimationEntryRaw*)entry; +/** + * If the entry's queue is enabled, copies all vectors from src frame table to dst frame table whose copy flag is false + */ +void AnimationContext_CopyFalse(GlobalContext* globalCtx, AnimationEntryData* data) { + AnimEntryCopyFalse* entry = &data->copy0; - if ((rawEntry->raw[0] & D_801F5AB4) == 0) { - for (dst = entry->dst, src = entry->src, index = entry->index, i = 0; i < rawEntry->raw[1]; i++, dst++, src++) { - if (*index++ < 1U) { + if (!(entry->queueFlag & sDisableAnimQueueFlags)) { + Vec3s* dst = entry->dst; + Vec3s* src = entry->src; + u8* copyFlag = entry->copyFlag; + s32 i; + + for (i = 0; i < entry->vecCount; i++, dst++, src++) { + if (!(*copyFlag++)) { *dst = *src; } } } } -void SkelAnime_AnimationType5Loaded(GlobalContext* globalCtx, AnimationEntryType5* entry) { - s32 pad; +/** + * Moves an actor according to the translation of its root limb + */ +void AnimationContext_MoveActor(GlobalContext* globalCtx, AnimationEntryData* data) { + AnimEntryMoveActor* entry = &data->move; Actor* actor = entry->actor; - Vec3f pos; + Vec3f diff; - func_80137748(entry->skelAnime, &pos, actor->shape.rot.y); - actor->world.pos.x += (pos.x * actor->scale.x) * entry->unk08; - actor->world.pos.y += (pos.y * actor->scale.y) * entry->unk08; - actor->world.pos.z += (pos.z * actor->scale.z) * entry->unk08; + SkelAnime_UpdateTranslation(entry->skelAnime, &diff, actor->shape.rot.y); + actor->world.pos.x += diff.x * actor->scale.x * entry->unk08; + actor->world.pos.y += diff.y * actor->scale.y * entry->unk08; + actor->world.pos.z += diff.z * actor->scale.z * entry->unk08; } -void func_80135EE8(GlobalContext* globalCtx, AnimationContext* animationCtx) { +/** + * Performs all requests in the animation queue, then resets the queue flags. + */ +void AnimationContext_Update(GlobalContext* globalCtx, AnimationContext* animationCtx) { AnimationEntry* entry = animationCtx->entries; for (; animationCtx->animationCount != 0; entry++, animationCtx->animationCount--) { - sAnimationLoadDone[entry->type](globalCtx, &entry->types); + sAnimationLoadDone[entry->type](globalCtx, &entry->data); } - D_801F5AB0 = 1; - D_801F5AB4 = 0; + sAnimQueueFlags = 1; + sDisableAnimQueueFlags = 0; } -void SkelAnime_InitLinkAnimetion(GlobalContext* globalCtx, SkelAnime* skelAnime, FlexSkeletonHeader* skeletonHeaderSeg, - LinkAnimationHeader* linkAnimationHeaderSeg, s32 flags, Vec3s* limbDrawTbl, - Vec3s* transitionDrawTbl, s32 limbBufCount) { +/** + * Initializes a skeleton to be used with Link animations to a looping animation, dynamically allocating the frame + * tables if not given. + */ +void SkelAnime_InitLink(GlobalContext* globalCtx, SkelAnime* skelAnime, FlexSkeletonHeader* skeletonHeaderSeg, + LinkAnimationHeader* animation, s32 flags, Vec3s* jointTable, Vec3s* morphTable, + s32 limbBufCount) { FlexSkeletonHeader* skeletonHeader; - s32 headerCount; + s32 headerJointCount; s32 limbCount; - u32 allocSize; + size_t allocSize; skeletonHeader = Lib_SegmentedToVirtual(skeletonHeaderSeg); - headerCount = skeletonHeader->sh.limbCount; + headerJointCount = skeletonHeader->sh.limbCount; skelAnime->initFlags = flags; - limbCount = (flags & 2) ? headerCount : 1; + limbCount = (flags & 2) ? headerJointCount : 1; if (flags & 1) { - limbCount += headerCount; + limbCount += headerJointCount; } if (flags & 4) { - limbCount += headerCount; + limbCount += headerJointCount; } skelAnime->limbCount = limbCount; skelAnime->dListCount = skeletonHeader->dListCount; - skelAnime->skeleton = Lib_SegmentedToVirtual(skeletonHeader->sh.skeletonSeg); + skelAnime->skeleton = Lib_SegmentedToVirtual(skeletonHeader->sh.segment); allocSize = sizeof(Vec3s) * limbCount; if (flags & 8) { allocSize += 2; } - if (limbDrawTbl == NULL) { - skelAnime->limbDrawTbl = zelda_malloc(allocSize); - skelAnime->transitionDrawTbl = zelda_malloc(allocSize); + if (jointTable == NULL) { + skelAnime->jointTable = ZeldaArena_Malloc(allocSize); + skelAnime->morphTable = ZeldaArena_Malloc(allocSize); } else { - skelAnime->limbDrawTbl = (Vec3s*)ALIGN16((u32)limbDrawTbl); - skelAnime->transitionDrawTbl = (Vec3s*)ALIGN16((u32)transitionDrawTbl); + skelAnime->jointTable = (Vec3s*)ALIGN16((u32)jointTable); + skelAnime->morphTable = (Vec3s*)ALIGN16((u32)morphTable); } - SkelAnime_ChangeLinkAnim(globalCtx, skelAnime, linkAnimationHeaderSeg, 1.0f, 0.0f, 0.0f, 0, 0.0f); + LinkAnimation_Change(globalCtx, skelAnime, animation, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f); } -void func_801360A8(SkelAnime* skelAnime) { - if (skelAnime->mode < 2) { - skelAnime->animUpdate = func_80136288; +/** + * Sets the update function of a SkelAnime that uses Link animations based on its mode + */ +void LinkAnimation_SetUpdateFunction(SkelAnime* skelAnime) { + if (skelAnime->mode <= ANIMMODE_LOOP_INTERP) { + skelAnime->update = LinkAnimation_Loop; } else { - skelAnime->animUpdate = func_8013631C; + skelAnime->update = LinkAnimation_Once; } - skelAnime->transCurrentFrame = 0.0f; + skelAnime->morphWeight = 0.0f; } -s32 func_801360E0(GlobalContext* globalCtx, SkelAnime* skelAnime) { - return skelAnime->animUpdate(globalCtx, skelAnime); +/** + * Advances the current Link animation and updates all frame tables. If the animation plays once, returns true when it + * finishes. + */ +s32 LinkAnimation_Update(GlobalContext* globalCtx, SkelAnime* skelAnime) { + return skelAnime->update(globalCtx, skelAnime); } -s32 func_80136104(GlobalContext* globalCtx, SkelAnime* skelAnime) { - f32 prevUnk28 = skelAnime->transCurrentFrame; +/** + * Requests an interpolation between the pose in jointTable to the one in morphTable, advancing the morph but not the + * animation frame + */ +s32 LinkAnimation_Morph(GlobalContext* globalCtx, SkelAnime* skelAnime) { + f32 prevMorphWeight = skelAnime->morphWeight; f32 updateRate = (s32)globalCtx->state.framerateDivisor * 0.5f; - skelAnime->transCurrentFrame -= skelAnime->transitionStep * updateRate; - if (skelAnime->transCurrentFrame <= 0.0f) { - func_801360A8(skelAnime); + skelAnime->morphWeight -= skelAnime->morphRate * updateRate; + if (skelAnime->morphWeight <= 0.0f) { + LinkAnimation_SetUpdateFunction(skelAnime); } - SkelAnime_LoadAnimationType2(globalCtx, skelAnime->limbCount, skelAnime->limbDrawTbl, skelAnime->transitionDrawTbl, - 1.0f - (skelAnime->transCurrentFrame / prevUnk28)); + AnimationContext_SetInterp(globalCtx, skelAnime->limbCount, skelAnime->jointTable, skelAnime->morphTable, + 1.0f - (skelAnime->morphWeight / prevMorphWeight)); return 0; } -void func_801361BC(GlobalContext* globalCtx, SkelAnime* skelAnime) { - SkelAnime_LoadLinkAnimetion(globalCtx, skelAnime->linkAnimetionSeg, skelAnime->animCurrentFrame, - skelAnime->limbCount, skelAnime->limbDrawTbl); - if (skelAnime->transCurrentFrame != 0) { +/** + * Requests a load of the next frame of a Link animation, advances the morph, and requests an interpolation between + * jointTable and morphTable + */ +void LinkAnimation_AnimateFrame(GlobalContext* globalCtx, SkelAnime* skelAnime) { + AnimationContext_SetLoadFrame(globalCtx, skelAnime->animation, skelAnime->curFrame, skelAnime->limbCount, + skelAnime->jointTable); + if (skelAnime->morphWeight != 0) { f32 updateRate = (s32)globalCtx->state.framerateDivisor * 0.5f; - skelAnime->transCurrentFrame -= skelAnime->transitionStep * updateRate; - if (skelAnime->transCurrentFrame <= 0.0f) { - skelAnime->transCurrentFrame = 0.0f; + skelAnime->morphWeight -= skelAnime->morphRate * updateRate; + if (skelAnime->morphWeight <= 0.0f) { + skelAnime->morphWeight = 0.0f; } else { - SkelAnime_LoadAnimationType2(globalCtx, skelAnime->limbCount, skelAnime->limbDrawTbl, - skelAnime->transitionDrawTbl, skelAnime->transCurrentFrame); + AnimationContext_SetInterp(globalCtx, skelAnime->limbCount, skelAnime->jointTable, skelAnime->morphTable, + skelAnime->morphWeight); } } } -s32 func_80136288(GlobalContext* globalCtx, SkelAnime* skelAnime) { +/** + * Advances a Link animation that loops over its full length + */ +s32 LinkAnimation_Loop(GlobalContext* globalCtx, SkelAnime* skelAnime) { f32 updateRate = (s32)globalCtx->state.framerateDivisor * 0.5f; - skelAnime->animCurrentFrame += skelAnime->animPlaybackSpeed * updateRate; - if (skelAnime->animCurrentFrame < 0.0f) { - skelAnime->animCurrentFrame += skelAnime->totalFrames; - } else if (skelAnime->totalFrames <= skelAnime->animCurrentFrame) { - skelAnime->animCurrentFrame -= skelAnime->totalFrames; + skelAnime->curFrame += skelAnime->playSpeed * updateRate; + if (skelAnime->curFrame < 0.0f) { + skelAnime->curFrame += skelAnime->animLength; + } else if (skelAnime->animLength <= skelAnime->curFrame) { + skelAnime->curFrame -= skelAnime->animLength; } - func_801361BC(globalCtx, skelAnime); + LinkAnimation_AnimateFrame(globalCtx, skelAnime); return 0; } -s32 func_8013631C(GlobalContext* globalCtx, SkelAnime* skelAnime) { +/** + * Advances a Link animation that stops at endFrame and returns true when it is reached. + */ +s32 LinkAnimation_Once(GlobalContext* globalCtx, SkelAnime* skelAnime) { f32 updateRate = (s32)globalCtx->state.framerateDivisor * 0.5f; - if (skelAnime->animCurrentFrame == skelAnime->animFrameCount) { - func_801361BC(globalCtx, skelAnime); + if (skelAnime->curFrame == skelAnime->endFrame) { + LinkAnimation_AnimateFrame(globalCtx, skelAnime); return 1; } - skelAnime->animCurrentFrame += skelAnime->animPlaybackSpeed * updateRate; + skelAnime->curFrame += skelAnime->playSpeed * updateRate; - if (((skelAnime->animCurrentFrame - skelAnime->animFrameCount) * skelAnime->animPlaybackSpeed) > 0.0f) { - skelAnime->animCurrentFrame = skelAnime->animFrameCount; + if (((skelAnime->curFrame - skelAnime->endFrame) * skelAnime->playSpeed) > 0.0f) { + skelAnime->curFrame = skelAnime->endFrame; } else { - if (skelAnime->animCurrentFrame < 0.0f) { - skelAnime->animCurrentFrame += skelAnime->totalFrames; - } else if (skelAnime->totalFrames <= skelAnime->animCurrentFrame) { - skelAnime->animCurrentFrame -= skelAnime->totalFrames; + if (skelAnime->curFrame < 0.0f) { + skelAnime->curFrame += skelAnime->animLength; + } else if (skelAnime->animLength <= skelAnime->curFrame) { + skelAnime->curFrame -= skelAnime->animLength; } } - func_801361BC(globalCtx, skelAnime); + LinkAnimation_AnimateFrame(globalCtx, skelAnime); return 0; } -void SkelAnime_SetTransition(GlobalContext* globalCtx, SkelAnime* skelAnime, f32 transitionRate) { - skelAnime->transCurrentFrame = 1.0f; - skelAnime->transitionStep = 1.0f / transitionRate; +/** + * Sets a new morph and resets the morph weight for the current animation. + */ +void Animation_SetMorph(GlobalContext* globalCtx, SkelAnime* skelAnime, f32 morphFrames) { + skelAnime->morphWeight = 1.0f; + skelAnime->morphRate = 1.0f / morphFrames; } -void SkelAnime_ChangeLinkAnim(GlobalContext* globalCtx, SkelAnime* skelAnime, - LinkAnimationHeader* linkAnimationHeaderSeg, f32 playbackSpeed, f32 frame, f32 frameCount, - u8 animationMode, f32 transitionRate) { - skelAnime->mode = animationMode; - if ((transitionRate != 0.0f) && - ((linkAnimationHeaderSeg != skelAnime->linkAnimetionSeg) || (frame != skelAnime->animCurrentFrame))) { - if (transitionRate < 0) { - func_801360A8(skelAnime); - SkelAnime_CopyVec3s(skelAnime, skelAnime->transitionDrawTbl, skelAnime->limbDrawTbl); - transitionRate = -transitionRate; +/** + * General way to set a new Link animation, allowing choice of playback speed, start frame, end frame, play mode, and + * number of transition frames. Positive morph frames morph from the current pose to the start pose of the new + * animation, then start the new animation. Negative morph frames start the new animation immediately, modified by the + * pose immediately before the animation change. + */ +void LinkAnimation_Change(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimationHeader* animation, f32 playSpeed, + f32 startFrame, f32 endFrame, u8 mode, f32 morphFrames) { + skelAnime->mode = mode; + if ((morphFrames != 0.0f) && ((animation != skelAnime->animation) || (startFrame != skelAnime->curFrame))) { + if (morphFrames < 0) { + LinkAnimation_SetUpdateFunction(skelAnime); + SkelAnime_CopyFrameTable(skelAnime, skelAnime->morphTable, skelAnime->jointTable); + morphFrames = -morphFrames; } else { - skelAnime->animUpdate = func_80136104; - SkelAnime_LoadLinkAnimetion(globalCtx, linkAnimationHeaderSeg, (s32)frame, skelAnime->limbCount, - skelAnime->transitionDrawTbl); + skelAnime->update = LinkAnimation_Morph; + AnimationContext_SetLoadFrame(globalCtx, animation, (s32)startFrame, skelAnime->limbCount, + skelAnime->morphTable); } - skelAnime->transCurrentFrame = 1.0f; - skelAnime->transitionStep = 1.0f / transitionRate; + skelAnime->morphWeight = 1.0f; + skelAnime->morphRate = 1.0f / morphFrames; } else { - func_801360A8(skelAnime); - SkelAnime_LoadLinkAnimetion(globalCtx, linkAnimationHeaderSeg, (s32)frame, skelAnime->limbCount, - skelAnime->limbDrawTbl); - skelAnime->transCurrentFrame = 0.0f; + LinkAnimation_SetUpdateFunction(skelAnime); + AnimationContext_SetLoadFrame(globalCtx, animation, (s32)startFrame, skelAnime->limbCount, + skelAnime->jointTable); + skelAnime->morphWeight = 0.0f; } - skelAnime->linkAnimetionSeg = linkAnimationHeaderSeg; - skelAnime->animCurrentFrame = 0.0f; - skelAnime->initialFrame = frame; - skelAnime->animCurrentFrame = frame; - skelAnime->animFrameCount = frameCount; - skelAnime->totalFrames = SkelAnime_GetTotalFrames(&linkAnimationHeaderSeg->common); - skelAnime->animPlaybackSpeed = playbackSpeed; + skelAnime->animation = animation; + skelAnime->curFrame = 0.0f; + skelAnime->startFrame = startFrame; + skelAnime->curFrame = startFrame; + skelAnime->endFrame = endFrame; + skelAnime->animLength = Animation_GetLength(animation); + skelAnime->playSpeed = playSpeed; } -void SkelAnime_ChangeLinkAnimDefaultStop(GlobalContext* globalCtx, SkelAnime* skelAnime, - LinkAnimationHeader* linkAnimationHeaderSeg) { - SkelAnime_ChangeLinkAnim(globalCtx, skelAnime, linkAnimationHeaderSeg, 1.0f, 0.0f, - SkelAnime_GetFrameCount(&linkAnimationHeaderSeg->common), 2, 0.0f); +/** + * Immediately changes to a Link animation that plays once at the default speed. + */ +void LinkAnimation_PlayOnce(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimationHeader* animation) { + LinkAnimation_Change(globalCtx, skelAnime, animation, 1.0f, 0.0f, Animation_GetLastFrame(&animation->common), + ANIMMODE_ONCE, 0.0f); } -void SkelAnime_ChangeLinkAnimPlaybackStop(GlobalContext* globalCtx, SkelAnime* skelAnime, - LinkAnimationHeader* linkAnimationHeaderSeg, f32 playbackSpeed) { - SkelAnime_ChangeLinkAnim(globalCtx, skelAnime, linkAnimationHeaderSeg, playbackSpeed, 0.0f, - SkelAnime_GetFrameCount(&linkAnimationHeaderSeg->common), 2, 0.0f); +/** + * Immediately changes to a Link animation that plays once at the specified speed. + */ +void LinkAnimation_PlayOnceSetSpeed(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimationHeader* animation, + f32 playSpeed) { + LinkAnimation_Change(globalCtx, skelAnime, animation, playSpeed, 0.0f, Animation_GetLastFrame(&animation->common), + ANIMMODE_ONCE, 0.0f); } -void SkelAnime_ChangeLinkAnimDefaultRepeat(GlobalContext* globalCtx, SkelAnime* skelAnime, - LinkAnimationHeader* linkAnimationHeaderSeg) { - SkelAnime_ChangeLinkAnim(globalCtx, skelAnime, linkAnimationHeaderSeg, 1.0f, 0.0f, - SkelAnime_GetFrameCount(&linkAnimationHeaderSeg->common), 0, 0.0f); +/** + * Immediately changes to a Link animation that loops at the default speed. + */ +void LinkAnimation_PlayLoop(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimationHeader* animation) { + LinkAnimation_Change(globalCtx, skelAnime, animation, 1.0f, 0.0f, Animation_GetLastFrame(&animation->common), + ANIMMODE_LOOP, 0.0f); } -void SkelAnime_ChangeLinkAnimPlaybackRepeat(GlobalContext* globalCtx, SkelAnime* skelAnime, - LinkAnimationHeader* linkAnimationHeaderSeg, f32 playbackSpeed) { - SkelAnime_ChangeLinkAnim(globalCtx, skelAnime, linkAnimationHeaderSeg, playbackSpeed, 0.0f, - SkelAnime_GetFrameCount(&linkAnimationHeaderSeg->common), 0, 0.0f); +/** + * Immediately changes to a Link animation that loops at the specified speed. + */ +void LinkAnimation_PlayLoopSetSpeed(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimationHeader* animation, + f32 playSpeed) { + LinkAnimation_Change(globalCtx, skelAnime, animation, playSpeed, 0.0f, Animation_GetLastFrame(&animation->common), + ANIMMODE_LOOP, 0.0f); } -void func_8013670C(GlobalContext* globalCtx, SkelAnime* skelAnime) { - SkelAnime_LoadAnimationType1(globalCtx, skelAnime->limbCount, skelAnime->transitionDrawTbl, skelAnime->limbDrawTbl); +/** + * Requests copying jointTable to morphTable + */ +void LinkAnimation_CopyJointToMorph(GlobalContext* globalCtx, SkelAnime* skelAnime) { + AnimationContext_SetCopyAll(globalCtx, skelAnime->limbCount, skelAnime->morphTable, skelAnime->jointTable); } -void func_8013673C(GlobalContext* globalCtx, SkelAnime* skelAnime) { - SkelAnime_LoadAnimationType1(globalCtx, skelAnime->limbCount, skelAnime->limbDrawTbl, skelAnime->transitionDrawTbl); +/** + * Requests copying morphTable to jointTable + */ +void LinkAnimation_CopyMorphToJoint(GlobalContext* globalCtx, SkelAnime* skelAnime) { + AnimationContext_SetCopyAll(globalCtx, skelAnime->limbCount, skelAnime->jointTable, skelAnime->morphTable); } -void func_8013676C(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimationHeader* linkAnimationHeaderSeg, - f32 frame) { - SkelAnime_LoadLinkAnimetion(globalCtx, linkAnimationHeaderSeg, (s32)frame, skelAnime->limbCount, - skelAnime->transitionDrawTbl); +/** + * Requests loading frame data from the Link animation into morphTable + */ +void LinkAnimation_LoadToMorph(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimationHeader* animation, + f32 frame) { + AnimationContext_SetLoadFrame(globalCtx, animation, (s32)frame, skelAnime->limbCount, skelAnime->morphTable); } -void func_801367B0(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimationHeader* linkAnimationHeaderSeg, - f32 frame) { - SkelAnime_LoadLinkAnimetion(globalCtx, linkAnimationHeaderSeg, (s32)frame, skelAnime->limbCount, - skelAnime->limbDrawTbl); +/** + * Requests loading frame data from the Link animation into jointTable + */ +void LinkAnimation_LoadToJoint(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimationHeader* animation, + f32 frame) { + AnimationContext_SetLoadFrame(globalCtx, animation, (s32)frame, skelAnime->limbCount, skelAnime->jointTable); } -void func_801367F4(GlobalContext* globalCtx, SkelAnime* skelAnime, f32 frame) { - SkelAnime_LoadAnimationType2(globalCtx, skelAnime->limbCount, skelAnime->limbDrawTbl, skelAnime->transitionDrawTbl, - frame); +/** + * Requests interpolating between jointTable and morphTable, placing the result in jointTable + */ +void LinkAnimation_InterpJointMorph(GlobalContext* globalCtx, SkelAnime* skelAnime, f32 weight) { + AnimationContext_SetInterp(globalCtx, skelAnime->limbCount, skelAnime->jointTable, skelAnime->morphTable, weight); } -void func_8013682C(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimationHeader* linkAnimationHeaderSeg, - f32 transitionFrame, LinkAnimationHeader* LinkAnimationHeaderSeg2, f32 frame, f32 transitionRate, - Vec3s* limbDrawTbl) { - Vec3s* alignedLimbDrawTbl; - SkelAnime_LoadLinkAnimetion(globalCtx, linkAnimationHeaderSeg, (s32)transitionFrame, skelAnime->limbCount, - skelAnime->limbDrawTbl); +/** + * Requests loading frame data from the Link animations and blending them, placing the result in jointTable + */ +void LinkAnimation_BlendToJoint(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimationHeader* animation1, + f32 frame1, LinkAnimationHeader* animation2, f32 frame2, f32 blendWeight, + Vec3s* blendTable) { + Vec3s* alignedBlendTable; - alignedLimbDrawTbl = (Vec3s*)ALIGN16((u32)limbDrawTbl); + AnimationContext_SetLoadFrame(globalCtx, animation1, (s32)frame1, skelAnime->limbCount, skelAnime->jointTable); - SkelAnime_LoadLinkAnimetion(globalCtx, LinkAnimationHeaderSeg2, (s32)frame, skelAnime->limbCount, - alignedLimbDrawTbl); - SkelAnime_LoadAnimationType2(globalCtx, skelAnime->limbCount, skelAnime->limbDrawTbl, alignedLimbDrawTbl, - transitionRate); + alignedBlendTable = (Vec3s*)ALIGN16((u32)blendTable); + + AnimationContext_SetLoadFrame(globalCtx, animation2, (s32)frame2, skelAnime->limbCount, alignedBlendTable); + AnimationContext_SetInterp(globalCtx, skelAnime->limbCount, skelAnime->jointTable, alignedBlendTable, blendWeight); } -void func_801368CC(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimationHeader* linkAnimationHeaderSeg, - f32 transitionFrame, LinkAnimationHeader* LinkAnimationHeaderSeg2, f32 frame, f32 transitionRate, - Vec3s* limbDrawTbl) { - Vec3s* alignedLimbDrawTbl; +/** + * Requests loading frame data from the Link animations and blending them, placing the result in morphTable + */ +void LinkAnimation_BlendToMorph(GlobalContext* globalCtx, SkelAnime* skelAnime, LinkAnimationHeader* animation1, + f32 frame1, LinkAnimationHeader* animation2, f32 frame2, f32 blendWeight, + Vec3s* blendTable) { + Vec3s* alignedBlendTable; - SkelAnime_LoadLinkAnimetion(globalCtx, linkAnimationHeaderSeg, (s32)transitionFrame, skelAnime->limbCount, - skelAnime->transitionDrawTbl); + AnimationContext_SetLoadFrame(globalCtx, animation1, (s32)frame1, skelAnime->limbCount, skelAnime->morphTable); - alignedLimbDrawTbl = (Vec3s*)ALIGN16((u32)limbDrawTbl); + alignedBlendTable = (Vec3s*)ALIGN16((u32)blendTable); - SkelAnime_LoadLinkAnimetion(globalCtx, LinkAnimationHeaderSeg2, (s32)frame, skelAnime->limbCount, - alignedLimbDrawTbl); - SkelAnime_LoadAnimationType2(globalCtx, skelAnime->limbCount, skelAnime->transitionDrawTbl, alignedLimbDrawTbl, - transitionRate); + AnimationContext_SetLoadFrame(globalCtx, animation2, (s32)frame2, skelAnime->limbCount, alignedBlendTable); + AnimationContext_SetInterp(globalCtx, skelAnime->limbCount, skelAnime->morphTable, alignedBlendTable, blendWeight); } -void SkelAnime_SetModeStop(SkelAnime* skelAnime) { - skelAnime->mode = 2; - func_801360A8(skelAnime); +/** + * Changes a looping animation to one that stops at the end. + */ +void LinkAnimation_EndLoop(SkelAnime* skelAnime) { + skelAnime->mode = ANIMMODE_ONCE; + LinkAnimation_SetUpdateFunction(skelAnime); } -s32 func_80136990(SkelAnime* skelAnime, f32 arg1, f32 updateRate) { +/** + * Checks if the current frame is after frame and the previous frame was before it. + */ +s32 Animation_OnFrameImpl(SkelAnime* skelAnime, f32 frame, f32 updateRate) { f32 updateSpeed; - f32 temp_f12; + f32 curFrameDiff; f32 nextFrame; - updateSpeed = skelAnime->animPlaybackSpeed * updateRate; - nextFrame = skelAnime->animCurrentFrame - updateSpeed; + updateSpeed = skelAnime->playSpeed * updateRate; + nextFrame = skelAnime->curFrame - updateSpeed; if (nextFrame < 0.0f) { - nextFrame += skelAnime->totalFrames; - } else if (skelAnime->totalFrames <= nextFrame) { - nextFrame -= skelAnime->totalFrames; + nextFrame += skelAnime->animLength; + } else if (skelAnime->animLength <= nextFrame) { + nextFrame -= skelAnime->animLength; } - if ((arg1 == 0.0f) && (updateSpeed > 0.0f)) { - arg1 = skelAnime->totalFrames; + if ((frame == 0.0f) && (updateSpeed > 0.0f)) { + frame = skelAnime->animLength; } - temp_f12 = (nextFrame + updateSpeed) - arg1; - if ((0.0f <= (temp_f12 * updateSpeed)) && (((temp_f12 - updateSpeed) * updateSpeed) < 0.0f)) { - return 1; + curFrameDiff = (nextFrame + updateSpeed) - frame; + if ((0.0f <= (curFrameDiff * updateSpeed)) && (((curFrameDiff - updateSpeed) * updateSpeed) < 0.0f)) { + return true; } - return 0; + return false; } -s32 func_80136A48(SkelAnime* skelAnime, f32 arg1) { +/** + * Checks if the current Link animation has reached the specified frame + */ +s32 LinkAnimation_OnFrame(SkelAnime* skelAnime, f32 frame) { f32 updateRate = gFramerateDivisorHalf; - return func_80136990(skelAnime, arg1, updateRate); + return Animation_OnFrameImpl(skelAnime, frame, updateRate); } +/** + * Initializes a normal skeleton to a looping animation, dynamically allocating the frame tables if not provided. + */ void SkelAnime_Init(GlobalContext* globalCtx, SkelAnime* skelAnime, SkeletonHeader* skeletonHeaderSeg, - AnimationHeader* animationSeg, Vec3s* limbDrawTbl, Vec3s* transitionDrawTable, s32 limbCount) { + AnimationHeader* animation, Vec3s* jointTable, Vec3s* morphTable, s32 limbCount) { SkeletonHeader* skeletonHeader; skeletonHeader = Lib_SegmentedToVirtual(skeletonHeaderSeg); skelAnime->limbCount = skeletonHeader->limbCount + 1; - skelAnime->skeleton = Lib_SegmentedToVirtual(skeletonHeader->skeletonSeg); - if (limbDrawTbl == NULL) { - skelAnime->limbDrawTbl = zelda_malloc(sizeof(*skelAnime->limbDrawTbl) * skelAnime->limbCount); - skelAnime->transitionDrawTbl = zelda_malloc(sizeof(*skelAnime->transitionDrawTbl) * skelAnime->limbCount); + skelAnime->skeleton = Lib_SegmentedToVirtual(skeletonHeader->segment); + if (jointTable == NULL) { + skelAnime->jointTable = ZeldaArena_Malloc(sizeof(*skelAnime->jointTable) * skelAnime->limbCount); + skelAnime->morphTable = ZeldaArena_Malloc(sizeof(*skelAnime->morphTable) * skelAnime->limbCount); } else { - skelAnime->limbDrawTbl = limbDrawTbl; - skelAnime->transitionDrawTbl = transitionDrawTable; + skelAnime->jointTable = jointTable; + skelAnime->morphTable = morphTable; } - if (animationSeg != NULL) { - SkelAnime_ChangeAnimDefaultRepeat(skelAnime, animationSeg); + if (animation != NULL) { + Animation_PlayLoop(skelAnime, animation); } } -void SkelAnime_InitSV(GlobalContext* globalCtx, SkelAnime* skelAnime, FlexSkeletonHeader* skeletonHeaderSeg, - AnimationHeader* animationSeg, Vec3s* limbDrawTbl, Vec3s* transitionDrawTable, s32 limbCount) { +/** + * Initializes a flex skeleton to a looping animation, dynamically allocating the frame tables if not given. + */ +void SkelAnime_InitFlex(GlobalContext* globalCtx, SkelAnime* skelAnime, FlexSkeletonHeader* skeletonHeaderSeg, + AnimationHeader* animation, Vec3s* jointTable, Vec3s* morphTable, s32 limbCount) { FlexSkeletonHeader* skeletonHeader; skeletonHeader = Lib_SegmentedToVirtual(skeletonHeaderSeg); skelAnime->limbCount = skeletonHeader->sh.limbCount + 1; skelAnime->dListCount = skeletonHeader->dListCount; - skelAnime->skeleton = Lib_SegmentedToVirtual(skeletonHeader->sh.skeletonSeg); + skelAnime->skeleton = Lib_SegmentedToVirtual(skeletonHeader->sh.segment); - if (limbDrawTbl == NULL) { - skelAnime->limbDrawTbl = zelda_malloc(sizeof(*skelAnime->limbDrawTbl) * skelAnime->limbCount); + if (jointTable == NULL) { + skelAnime->jointTable = ZeldaArena_Malloc(sizeof(*skelAnime->jointTable) * skelAnime->limbCount); - skelAnime->transitionDrawTbl = zelda_malloc(sizeof(*skelAnime->transitionDrawTbl) * skelAnime->limbCount); + skelAnime->morphTable = ZeldaArena_Malloc(sizeof(*skelAnime->morphTable) * skelAnime->limbCount); } else { - skelAnime->limbDrawTbl = limbDrawTbl; - skelAnime->transitionDrawTbl = transitionDrawTable; + skelAnime->jointTable = jointTable; + skelAnime->morphTable = morphTable; } - if (animationSeg != NULL) { - SkelAnime_ChangeAnimDefaultRepeat(skelAnime, animationSeg); + if (animation != NULL) { + Animation_PlayLoop(skelAnime, animation); } } +/** + * Initializes a skeleton with SkinLimbs to a looping animation, dynamically allocating the frame tables. + */ void SkelAnime_InitSkin(GlobalContext* globalCtx, SkelAnime* skelAnime, SkeletonHeader* skeletonHeaderSeg, - AnimationHeader* animationSeg) { + AnimationHeader* animation) { SkeletonHeader* skeletonHeader; skeletonHeader = Lib_SegmentedToVirtual(skeletonHeaderSeg); skelAnime->limbCount = skeletonHeader->limbCount + 1; - skelAnime->skeleton = Lib_SegmentedToVirtual(skeletonHeader->skeletonSeg); - skelAnime->limbDrawTbl = zelda_malloc(sizeof(*skelAnime->limbDrawTbl) * skelAnime->limbCount); - skelAnime->transitionDrawTbl = zelda_malloc(sizeof(*skelAnime->transitionDrawTbl) * skelAnime->limbCount); + skelAnime->skeleton = Lib_SegmentedToVirtual(skeletonHeader->segment); + skelAnime->jointTable = ZeldaArena_Malloc(sizeof(*skelAnime->jointTable) * skelAnime->limbCount); + skelAnime->morphTable = ZeldaArena_Malloc(sizeof(*skelAnime->morphTable) * skelAnime->limbCount); // Debug prints here, required to match. if (1) {}; - if (animationSeg != NULL) { - SkelAnime_ChangeAnimDefaultRepeat(skelAnime, animationSeg); + if (animation != NULL) { + Animation_PlayLoop(skelAnime, animation); } } -void func_80136C84(SkelAnime* skelAnime) { - if (skelAnime->mode < 2) { - skelAnime->animUpdate = func_8013702C; - } else if (skelAnime->mode < 4) { - skelAnime->animUpdate = func_8013713C; +/** + * Sets the SkelAnime's update function based on its current mode. + */ +void SkelAnime_SetUpdate(SkelAnime* skelAnime) { + if (skelAnime->mode <= ANIMMODE_LOOP_INTERP) { + skelAnime->update = SkelAnime_LoopFull; + } else if (skelAnime->mode <= ANIMMODE_ONCE_INTERP) { + skelAnime->update = SkelAnime_Once; } else { - skelAnime->animUpdate = func_801370B0; + skelAnime->update = SkelAnime_LoopPartial; } } -s32 SkelAnime_FrameUpdateMatrix(SkelAnime* skelAnime) { - return skelAnime->animUpdate(skelAnime); +/** + * Advances the current animation and updates all frame tables. If the animation plays once, returns true when it + * finishes. + */ +s32 SkelAnime_Update(SkelAnime* skelAnime) { + return skelAnime->update(skelAnime); } -s32 func_80136CF4(SkelAnime* skelAnime) { - f32 prevUnk28 = skelAnime->transCurrentFrame; +/** + * Morphs from the pose in jointTable to the one in morphTable, advancing the morph but not the animation frame + */ +s32 SkelAnime_Morph(SkelAnime* skelAnime) { + f32 prevMorphWeight = skelAnime->morphWeight; f32 updateRate = gFramerateDivisorThird; - skelAnime->transCurrentFrame -= skelAnime->transitionStep * updateRate; - if (skelAnime->transCurrentFrame <= 0.0f) { - func_80136C84(skelAnime); - skelAnime->transCurrentFrame = 0.0f; + skelAnime->morphWeight -= skelAnime->morphRate * updateRate; + if (skelAnime->morphWeight <= 0.0f) { + SkelAnime_SetUpdate(skelAnime); + skelAnime->morphWeight = 0.0f; } - SkelAnime_InterpolateVec3s(skelAnime->limbCount, skelAnime->limbDrawTbl, skelAnime->limbDrawTbl, - skelAnime->transitionDrawTbl, 1.0f - (skelAnime->transCurrentFrame / prevUnk28)); + SkelAnime_InterpFrameTable(skelAnime->limbCount, skelAnime->jointTable, skelAnime->jointTable, + skelAnime->morphTable, 1.0f - (skelAnime->morphWeight / prevMorphWeight)); return 0; } -s32 func_80136D98(SkelAnime* skelAnime) { - s16 temp_a2 = (s16)(skelAnime->transCurrentFrame * 16384.0f); - s16 temp_a1; - f32 sp28; - f32 phi_f2; +/** + * Performs a tapered morph from the pose in jointTable to the one in morphTable, advancing the morph but not the + * animation frame + */ +s32 SkelAnime_MorphTaper(SkelAnime* skelAnime) { + s16 prevPhase = skelAnime->morphWeight * 0x4000; + s16 curPhase; + f32 prevWeight; + f32 curWeight; f32 updateRate = gFramerateDivisorThird; - skelAnime->transCurrentFrame -= skelAnime->transitionStep * updateRate; - if (skelAnime->transCurrentFrame <= 0.0f) { - func_80136C84(skelAnime); - skelAnime->transCurrentFrame = 0.0f; + skelAnime->morphWeight -= skelAnime->morphRate * updateRate; + if (skelAnime->morphWeight <= 0.0f) { + SkelAnime_SetUpdate(skelAnime); + skelAnime->morphWeight = 0.0f; } - temp_a1 = (s16)(skelAnime->transCurrentFrame * 16384.0f); - if (skelAnime->unk03 < 0) { - sp28 = 1.0f - Math_CosS(temp_a2); - phi_f2 = 1.0f - Math_CosS(temp_a1); + curPhase = skelAnime->morphWeight * 0x4000; + if (skelAnime->taper < 0) { + prevWeight = 1.0f - Math_CosS(prevPhase); + curWeight = 1.0f - Math_CosS(curPhase); } else { - sp28 = Math_SinS(temp_a2); - phi_f2 = Math_SinS(temp_a1); + prevWeight = Math_SinS(prevPhase); + curWeight = Math_SinS(curPhase); } - if (phi_f2 != 0.0f) { - phi_f2 /= sp28; + if (curWeight != 0.0f) { + curWeight /= prevWeight; } else { - phi_f2 = 0.0f; + curWeight = 0.0f; } - SkelAnime_InterpolateVec3s(skelAnime->limbCount, skelAnime->limbDrawTbl, skelAnime->limbDrawTbl, - skelAnime->transitionDrawTbl, 1.0f - phi_f2); + SkelAnime_InterpFrameTable(skelAnime->limbCount, skelAnime->jointTable, skelAnime->jointTable, + skelAnime->morphTable, 1.0f - curWeight); return 0; } -void func_80136F04(SkelAnime* skelAnime) { - s32 t; - s32 pad[2]; - Vec3s sp38[98]; - f32 temp_f10; - f32 temp_f2; +/** + * Gets frame data for the current frame as modified by morphTable and advances the morph + */ +void SkelAnime_AnimateFrame(SkelAnime* skelAnime) { + Vec3s nextjointTable[100]; - SkelAnime_AnimateFrame(skelAnime->animCurrentSeg, skelAnime->animCurrentFrame, skelAnime->limbCount, - skelAnime->limbDrawTbl); - if (skelAnime->mode & 0x1) { - t = (s32)skelAnime->animCurrentFrame; - temp_f10 = t; - temp_f2 = skelAnime->animCurrentFrame - temp_f10; - t++; - if (t >= (s32)skelAnime->totalFrames) { - t = 0; + SkelAnime_GetFrameData(skelAnime->animation, skelAnime->curFrame, skelAnime->limbCount, skelAnime->jointTable); + if (skelAnime->mode & ANIM_INTERP) { + s32 frame = skelAnime->curFrame; + f32 partialFrame = skelAnime->curFrame - frame; + + if (++frame >= (s32)skelAnime->animLength) { + frame = 0; } - SkelAnime_AnimateFrame(skelAnime->animCurrentSeg, t, skelAnime->limbCount, sp38); - SkelAnime_InterpolateVec3s(skelAnime->limbCount, skelAnime->limbDrawTbl, skelAnime->limbDrawTbl, sp38, temp_f2); + SkelAnime_GetFrameData(skelAnime->animation, frame, skelAnime->limbCount, nextjointTable); + SkelAnime_InterpFrameTable(skelAnime->limbCount, skelAnime->jointTable, skelAnime->jointTable, nextjointTable, + partialFrame); } - if (skelAnime->transCurrentFrame != 0) { + if (skelAnime->morphWeight != 0) { f32 updateRate = gFramerateDivisorThird; - skelAnime->transCurrentFrame -= skelAnime->transitionStep * updateRate; - if (skelAnime->transCurrentFrame <= 0.0f) { - skelAnime->transCurrentFrame = 0.0f; - return; + + skelAnime->morphWeight -= skelAnime->morphRate * updateRate; + if (skelAnime->morphWeight <= 0.0f) { + skelAnime->morphWeight = 0.0f; + } else { + SkelAnime_InterpFrameTable(skelAnime->limbCount, skelAnime->jointTable, skelAnime->jointTable, + skelAnime->morphTable, skelAnime->morphWeight); } - SkelAnime_InterpolateVec3s(skelAnime->limbCount, skelAnime->limbDrawTbl, skelAnime->limbDrawTbl, - skelAnime->transitionDrawTbl, skelAnime->transCurrentFrame); } } - -s32 func_8013702C(SkelAnime* skelAnime) { +/** + * Advances an animation that loops over its full length and updates the frame tables + */ +s32 SkelAnime_LoopFull(SkelAnime* skelAnime) { f32 updateRate = gFramerateDivisorThird; - skelAnime->animCurrentFrame += skelAnime->animPlaybackSpeed * updateRate; - if (skelAnime->animCurrentFrame < 0.0f) { - skelAnime->animCurrentFrame += skelAnime->totalFrames; - } else if (skelAnime->totalFrames <= skelAnime->animCurrentFrame) { - skelAnime->animCurrentFrame -= skelAnime->totalFrames; + skelAnime->curFrame += skelAnime->playSpeed * updateRate; + if (skelAnime->curFrame < 0.0f) { + skelAnime->curFrame += skelAnime->animLength; + } else if (skelAnime->animLength <= skelAnime->curFrame) { + skelAnime->curFrame -= skelAnime->animLength; } - func_80136F04(skelAnime); + SkelAnime_AnimateFrame(skelAnime); return 0; } -s32 func_801370B0(SkelAnime* skelAnime) { +/** + * Advances an animation that loops over part of its length and updates the frame tables + */ +s32 SkelAnime_LoopPartial(SkelAnime* skelAnime) { f32 updateRate = gFramerateDivisorThird; - skelAnime->animCurrentFrame += skelAnime->animPlaybackSpeed * updateRate; - if (skelAnime->animCurrentFrame < skelAnime->initialFrame) { - skelAnime->animCurrentFrame = - (skelAnime->animCurrentFrame - skelAnime->initialFrame) + skelAnime->animFrameCount; - } else if (skelAnime->animFrameCount <= skelAnime->animCurrentFrame) { - skelAnime->animCurrentFrame = - (skelAnime->animCurrentFrame - skelAnime->animFrameCount) + skelAnime->initialFrame; + skelAnime->curFrame += skelAnime->playSpeed * updateRate; + if (skelAnime->curFrame < skelAnime->startFrame) { + skelAnime->curFrame = (skelAnime->curFrame - skelAnime->startFrame) + skelAnime->endFrame; + } else if (skelAnime->endFrame <= skelAnime->curFrame) { + skelAnime->curFrame = (skelAnime->curFrame - skelAnime->endFrame) + skelAnime->startFrame; } - func_80136F04(skelAnime); + SkelAnime_AnimateFrame(skelAnime); return 0; } -s32 func_8013713C(SkelAnime* skelAnime) { +/** + * Advances an animation that stops at endFrame and returns true when it is reached. + */ +s32 SkelAnime_Once(SkelAnime* skelAnime) { f32 updateRate = gFramerateDivisorThird; - if (skelAnime->animCurrentFrame == skelAnime->animFrameCount) { - SkelAnime_AnimateFrame(skelAnime->animCurrentSeg, (s32)skelAnime->animCurrentFrame, skelAnime->limbCount, - skelAnime->limbDrawTbl); - func_80136F04(skelAnime); + if (skelAnime->curFrame == skelAnime->endFrame) { + SkelAnime_GetFrameData(skelAnime->animation, skelAnime->curFrame, skelAnime->limbCount, skelAnime->jointTable); + SkelAnime_AnimateFrame(skelAnime); return 1; } - skelAnime->animCurrentFrame += skelAnime->animPlaybackSpeed * updateRate; - if (((skelAnime->animCurrentFrame - skelAnime->animFrameCount) * skelAnime->animPlaybackSpeed) > 0.0f) { - skelAnime->animCurrentFrame = skelAnime->animFrameCount; + skelAnime->curFrame += skelAnime->playSpeed * updateRate; + if (((skelAnime->curFrame - skelAnime->endFrame) * skelAnime->playSpeed) > 0.0f) { + skelAnime->curFrame = skelAnime->endFrame; } else { - if (skelAnime->animCurrentFrame < 0.0f) { - skelAnime->animCurrentFrame += skelAnime->totalFrames; + if (skelAnime->curFrame < 0.0f) { + skelAnime->curFrame += skelAnime->animLength; } else { - if (skelAnime->totalFrames <= skelAnime->animCurrentFrame) { - skelAnime->animCurrentFrame -= skelAnime->totalFrames; + if (skelAnime->animLength <= skelAnime->curFrame) { + skelAnime->curFrame -= skelAnime->animLength; } } } - func_80136F04(skelAnime); + SkelAnime_AnimateFrame(skelAnime); return 0; } -void SkelAnime_ChangeAnimImpl(SkelAnime* skelAnime, AnimationHeader* animationSeg, f32 playbackSpeed, f32 frame, - f32 frameCount, u8 animationType, f32 transitionRate, s8 unk2) { - skelAnime->mode = animationType; - if ((transitionRate != 0.0f) && - ((animationSeg != skelAnime->animCurrentSeg) || (frame != skelAnime->animCurrentFrame))) { - if (transitionRate < 0) { - func_80136C84(skelAnime); - SkelAnime_CopyVec3s(skelAnime, skelAnime->transitionDrawTbl, skelAnime->limbDrawTbl); - transitionRate = -transitionRate; - } else { - if (unk2 != 0) { - skelAnime->animUpdate = func_80136D98; - skelAnime->unk03 = unk2; - } else { - skelAnime->animUpdate = func_80136CF4; - } - SkelAnime_AnimateFrame(animationSeg, frame, skelAnime->limbCount, skelAnime->transitionDrawTbl); - } - skelAnime->transCurrentFrame = 1.0f; - skelAnime->transitionStep = 1.0f / transitionRate; - } else { - func_80136C84(skelAnime); - SkelAnime_AnimateFrame(animationSeg, frame, skelAnime->limbCount, skelAnime->limbDrawTbl); - skelAnime->transCurrentFrame = 0.0f; - } - - skelAnime->animCurrentSeg = animationSeg; - skelAnime->initialFrame = frame; - skelAnime->animFrameCount = frameCount; - skelAnime->totalFrames = SkelAnime_GetTotalFrames(&animationSeg->common); - if (skelAnime->mode >= 4) { - skelAnime->animCurrentFrame = 0.0f; - } else { - skelAnime->animCurrentFrame = frame; - if (skelAnime->mode < 2) { - skelAnime->animFrameCount = skelAnime->totalFrames - 1.0f; - } - } - skelAnime->animPlaybackSpeed = playbackSpeed; -} - -void SkelAnime_ChangeAnim(SkelAnime* skelAnime, AnimationHeader* animationSeg, f32 playbackSpeed, f32 frame, - f32 frameCount, u8 mode, f32 transitionRate) { - SkelAnime_ChangeAnimImpl(skelAnime, animationSeg, playbackSpeed, frame, frameCount, mode, transitionRate, 0); -} - -void SkelAnime_ChangeAnimDefaultStop(SkelAnime* skelAnime, AnimationHeader* animationSeg) { - SkelAnime_ChangeAnim(skelAnime, animationSeg, 1.0f, 0.0f, SkelAnime_GetFrameCount(&animationSeg->common), 2, 0.0f); -} - -void SkelAnime_ChangeAnimTransitionStop(SkelAnime* skelAnime, AnimationHeader* animationSeg, f32 transitionRate) { - SkelAnime_ChangeAnim(skelAnime, animationSeg, 1.0f, 0, SkelAnime_GetFrameCount(&animationSeg->common), 2, - transitionRate); -} - -void SkelAnime_ChangeAnimPlaybackStop(SkelAnime* skelAnime, AnimationHeader* animationSeg, f32 playbackSpeed) { - SkelAnime_ChangeAnim(skelAnime, animationSeg, playbackSpeed, 0.0f, SkelAnime_GetFrameCount(&animationSeg->common), - 2, 0.0f); -} - -void SkelAnime_ChangeAnimDefaultRepeat(SkelAnime* skelAnime, AnimationHeader* animationSeg) { - SkelAnime_ChangeAnim(skelAnime, animationSeg, 1.0f, 0.0f, SkelAnime_GetFrameCount(&animationSeg->common), 0, 0.0f); -} - -void SkelAnime_ChangeAnimTransitionRepeat(SkelAnime* skelAnime, AnimationHeader* animationSeg, f32 transitionRate) { - SkelAnime_ChangeAnim(skelAnime, animationSeg, 1.0f, 0.0f, 0.0f, 0, transitionRate); -} - -void SkelAnime_ChangeAnimPlaybackRepeat(SkelAnime* skelAnime, AnimationHeader* animationSeg, f32 playbackSpeed) { - SkelAnime_ChangeAnim(skelAnime, animationSeg, playbackSpeed, 0.0f, SkelAnime_GetFrameCount(&animationSeg->common), - 0, 0.0f); -} - -void SkelAnime_AnimSetStop(SkelAnime* skelAnime) { - skelAnime->mode = 2; - skelAnime->animFrameCount = skelAnime->totalFrames; - func_80136C84(skelAnime); -} - -void SkelAnime_AnimReverse(SkelAnime* skelAnime) { - f32 initialFrame = skelAnime->initialFrame; - - skelAnime->initialFrame = skelAnime->animFrameCount; - skelAnime->animPlaybackSpeed = -skelAnime->animPlaybackSpeed; - skelAnime->animFrameCount = initialFrame; -} - -void func_80137674(SkelAnime* skelAnime, Vec3s* dst, Vec3s* src, u8* index) { - s32 i; - - for (i = 0; i < skelAnime->limbCount; i++, dst++, src++) { - if (*index++) { - *dst = *src; - } - } -} - -void func_801376DC(SkelAnime* skelAnime, Vec3s* dst, Vec3s* src, u8* arg3) { - s32 i; - - for (i = 0; i < skelAnime->limbCount; i++, dst++, src++) { - if (*arg3++ < 1U) { - *dst = *src; - } - } -} - -/* - * Moves `pos` backwards on the xz plane from `angle` +/** + * Fully general way to set a new animation, allowing choice of playback speed, start frame, end frame, play mode, + * number of transition frames, and tapering of the transition. Positive morph frames morph from the current pose to the + * start pose of the new animation, then start the new animation. Negative morph frames start the new animation + * immediately, modified by the pose immediately before the animation change. */ -void func_80137748(SkelAnime* skelAnime, Vec3f* pos, s16 angle) { +void Animation_ChangeImpl(SkelAnime* skelAnime, AnimationHeader* animation, f32 playSpeed, f32 startFrame, f32 endFrame, + u8 mode, f32 morphFrames, s8 taper) { + skelAnime->mode = mode; + if ((morphFrames != 0.0f) && ((animation != skelAnime->animation) || (startFrame != skelAnime->curFrame))) { + if (morphFrames < 0) { + SkelAnime_SetUpdate(skelAnime); + SkelAnime_CopyFrameTable(skelAnime, skelAnime->morphTable, skelAnime->jointTable); + morphFrames = -morphFrames; + } else { + if (taper != ANIMTAPER_NONE) { + skelAnime->update = SkelAnime_MorphTaper; + skelAnime->taper = taper; + } else { + skelAnime->update = SkelAnime_Morph; + } + SkelAnime_GetFrameData(animation, startFrame, skelAnime->limbCount, skelAnime->morphTable); + } + skelAnime->morphWeight = 1.0f; + skelAnime->morphRate = 1.0f / morphFrames; + } else { + SkelAnime_SetUpdate(skelAnime); + SkelAnime_GetFrameData(animation, startFrame, skelAnime->limbCount, skelAnime->jointTable); + skelAnime->morphWeight = 0.0f; + } + + skelAnime->animation = animation; + skelAnime->startFrame = startFrame; + skelAnime->endFrame = endFrame; + skelAnime->animLength = Animation_GetLength(&animation->common); + if (skelAnime->mode >= ANIMMODE_LOOP_PARTIAL) { + skelAnime->curFrame = 0.0f; + } else { + skelAnime->curFrame = startFrame; + if (skelAnime->mode <= ANIMMODE_LOOP_INTERP) { + skelAnime->endFrame = skelAnime->animLength - 1.0f; + } + } + skelAnime->playSpeed = playSpeed; +} + +/** + * General way to set a new animation, allowing choice of playback speed, start frame, end frame, play mode, and number + * of transition frames. Positive morph frames morph from the current pose to the start pose of the new animation, then + * start the new animation. Negative morph frames start the new animation immediately, modified by the pose immediately + * before the animation change. + */ +void Animation_Change(SkelAnime* skelAnime, AnimationHeader* animation, f32 playSpeed, f32 startFrame, f32 endFrame, + u8 mode, f32 morphFrames) { + Animation_ChangeImpl(skelAnime, animation, playSpeed, startFrame, endFrame, mode, morphFrames, ANIMTAPER_NONE); +} + +/** + * Immediately changes to an animation that plays once at the default speed. + */ +void Animation_PlayOnce(SkelAnime* skelAnime, AnimationHeader* animation) { + Animation_Change(skelAnime, animation, 1.0f, 0.0f, Animation_GetLastFrame(&animation->common), ANIMMODE_ONCE, 0.0f); +} + +/** + * Smoothly transitions to an animation that plays once at the default speed. + * Positive morph frames morph from the current pose to the start pose of the new animation, then start the new + * animation. Negative morph frames start the new animation immediately, modified by the pose immediately before the + * animation change. + */ +void Animation_MorphToPlayOnce(SkelAnime* skelAnime, AnimationHeader* animationSeg, f32 morphFrames) { + Animation_Change(skelAnime, animationSeg, 1.0f, 0, Animation_GetLastFrame(&animationSeg->common), ANIMMODE_ONCE, + morphFrames); +} + +/** + * Immediately changes to an animation that plays once at the specified speed. + */ +void Animation_PlayOnceSetSpeed(SkelAnime* skelAnime, AnimationHeader* animation, f32 playSpeed) { + Animation_Change(skelAnime, animation, playSpeed, 0.0f, Animation_GetLastFrame(&animation->common), ANIMMODE_ONCE, + 0.0f); +} + +/** + * Immediately changes to an animation that loops at the default. + */ +void Animation_PlayLoop(SkelAnime* skelAnime, AnimationHeader* animation) { + Animation_Change(skelAnime, animation, 1.0f, 0.0f, Animation_GetLastFrame(&animation->common), ANIMMODE_LOOP, 0.0f); +} + +/** + * Smoothly transitions to a looping animation, specifying the number of frames for the transition. + * Positive morph frames morph from the current pose to the start pose of the new animation, then start the new + * animation. Negative morph frames start the new animation immediately, modified by the pose immediately before the + * animation change. + */ +void Animation_MorphToLoop(SkelAnime* skelAnime, AnimationHeader* animation, f32 morphFrames) { + Animation_Change(skelAnime, animation, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, morphFrames); +} + +/** + * Immediately changes to an animation that loops at the specified speed. + */ +void Animation_PlayLoopSetSpeed(SkelAnime* skelAnime, AnimationHeader* animation, f32 playbackSpeed) { + Animation_Change(skelAnime, animation, playbackSpeed, 0.0f, Animation_GetLastFrame(&animation->common), + ANIMMODE_LOOP, 0.0f); +} + +/** + * Changes a looping animation to one that stops at the end. Unused + */ +void Animation_EndLoop(SkelAnime* skelAnime) { + skelAnime->mode = ANIMMODE_ONCE; + skelAnime->endFrame = skelAnime->animLength; + SkelAnime_SetUpdate(skelAnime); +} + +/** + * Reverses the current animation. + */ +void Animation_Reverse(SkelAnime* skelAnime) { + f32 startFrame = skelAnime->startFrame; + + skelAnime->startFrame = skelAnime->endFrame; + skelAnime->playSpeed = -skelAnime->playSpeed; + skelAnime->endFrame = startFrame; +} + +/** + * Copies the src frame table to the dst frame table if copyFlag for that limb is true. + */ +void SkelAnime_CopyFrameTableTrue(SkelAnime* skelAnime, Vec3s* dst, Vec3s* src, u8* copyFlag) { + s32 i; + + for (i = 0; i < skelAnime->limbCount; i++, dst++, src++) { + if (*copyFlag++) { + *dst = *src; + } + } +} + +/** + * Copies the src frame table to the dst frame table if copyFlag for that limb is false. + */ +void SkelAnime_CopyFrameTableFalse(SkelAnime* skelAnime, Vec3s* dst, Vec3s* src, u8* copyFlag) { + s32 i; + + for (i = 0; i < skelAnime->limbCount; i++, dst++, src++) { + if (!*copyFlag++) { + *dst = *src; + } + } +} + +/** + * Updates translation of the root limb and calculates `pos`, the difference between + * the old and new positions of the root limb as rotated by `angle`. Used to allow + * animations to change an actor's position. + */ +void SkelAnime_UpdateTranslation(SkelAnime* skelAnime, Vec3f* diff, s16 angle) { f32 x; f32 z; f32 sin; f32 cos; - if (skelAnime->flags & 0x10) { - pos->z = 0.0f; - pos->x = 0.0f; + if (skelAnime->moveFlags & ANIM_FLAG_NOMOVE) { + diff->z = 0.0f; + diff->x = 0.0f; } else { // `angle` rotation around y axis. - x = skelAnime->limbDrawTbl->x - skelAnime->prevFramePos.x; - z = skelAnime->limbDrawTbl->z - skelAnime->prevFramePos.z; + x = skelAnime->jointTable->x - skelAnime->prevTransl.x; + z = skelAnime->jointTable->z - skelAnime->prevTransl.z; sin = Math_SinS(angle); cos = Math_CosS(angle); - pos->x = x * cos + z * sin; - pos->z = z * cos - x * sin; + diff->x = x * cos + z * sin; + diff->z = z * cos - x * sin; } - skelAnime->prevFramePos.x = skelAnime->limbDrawTbl->x; - skelAnime->limbDrawTbl->x = skelAnime->unk3E.x; - skelAnime->prevFramePos.z = skelAnime->limbDrawTbl->z; - skelAnime->limbDrawTbl->z = skelAnime->unk3E.z; - if (skelAnime->flags & ANIM_FLAG_UPDATEXZ) { - if (skelAnime->flags & ANIM_FLAG_UPDATEY) { - pos->y = 0.0f; + skelAnime->prevTransl.x = skelAnime->jointTable->x; + skelAnime->jointTable->x = skelAnime->baseTransl.x; + skelAnime->prevTransl.z = skelAnime->jointTable->z; + skelAnime->jointTable->z = skelAnime->baseTransl.z; + if (skelAnime->moveFlags & ANIM_FLAG_UPDATEY) { + if (skelAnime->moveFlags & ANIM_FLAG_NOMOVE) { + diff->y = 0.0f; } else { - pos->y = skelAnime->limbDrawTbl->y - skelAnime->prevFramePos.y; + diff->y = skelAnime->jointTable->y - skelAnime->prevTransl.y; } - skelAnime->prevFramePos.y = skelAnime->limbDrawTbl->y; - skelAnime->limbDrawTbl->y = skelAnime->unk3E.y; + skelAnime->prevTransl.y = skelAnime->jointTable->y; + skelAnime->jointTable->y = skelAnime->baseTransl.y; } else { - pos->y = 0.0f; - skelAnime->prevFramePos.y = skelAnime->limbDrawTbl->y; + diff->y = 0.0f; + skelAnime->prevTransl.y = skelAnime->jointTable->y; } - skelAnime->flags &= ~ANIM_FLAG_UPDATEY; + skelAnime->moveFlags &= ~ANIM_FLAG_NOMOVE; } -s32 func_801378B8(SkelAnime* skelAnime, f32 arg1) { - return func_80136990(skelAnime, arg1, 1.0f); +/** + * Checks if the current animation is at the specified frame + */ +s32 Animation_OnFrame(SkelAnime* skelAnime, f32 frame) { + return Animation_OnFrameImpl(skelAnime, frame, 1.0f); } +/** + * Frees the frame tables for a skelAnime with dynamically allocated tables. + */ void SkelAnime_Free(SkelAnime* skelAnime, GlobalContext* globalCtx) { - if (skelAnime->limbDrawTbl != NULL) { - zelda_free(skelAnime->limbDrawTbl); + if (skelAnime->jointTable != NULL) { + ZeldaArena_Free(skelAnime->jointTable); } - if (skelAnime->transitionDrawTbl != NULL) { - zelda_free(skelAnime->transitionDrawTbl); + if (skelAnime->morphTable != NULL) { + ZeldaArena_Free(skelAnime->morphTable); } } -void SkelAnime_CopyVec3s(SkelAnime* skelAnime, Vec3s* dst, Vec3s* src) { +/** + * Copies the src frame table to the dst frame table. + */ +void SkelAnime_CopyFrameTable(SkelAnime* skelAnime, Vec3s* dst, Vec3s* src) { bcopy(src, dst, sizeof(Vec3s) * skelAnime->limbCount); } diff --git a/src/code/z_view.c b/src/code/z_view.c index 034f045b1..c325fd563 100644 --- a/src/code/z_view.c +++ b/src/code/z_view.c @@ -237,7 +237,7 @@ s32 View_SetQuake(View* view, Vec3f rot, Vec3f scale, f32 speed) { return 1; } -s32 View_StepQuake(View* view, RSPMatrix* matrix) { +s32 View_StepQuake(View* view, Mtx* matrix) { MtxF mf; if (view->quakeSpeed == 0.0f) { @@ -256,16 +256,16 @@ s32 View_StepQuake(View* view, RSPMatrix* matrix) { view->currQuakeScale.z += ((view->quakeScale.z - view->currQuakeScale.z) * view->quakeSpeed); } - SysMatrix_FromRSPMatrix(matrix, &mf); - SysMatrix_SetCurrentState(&mf); - SysMatrix_RotateStateAroundXAxis(view->currQuakeRot.x); - SysMatrix_InsertYRotation_f(view->currQuakeRot.y, 1); - SysMatrix_InsertZRotation_f(view->currQuakeRot.z, 1); - Matrix_Scale(view->currQuakeScale.x, view->currQuakeScale.y, view->currQuakeScale.z, 1); - SysMatrix_InsertZRotation_f(-view->currQuakeRot.z, 1); - SysMatrix_InsertYRotation_f(-view->currQuakeRot.y, 1); - SysMatrix_RotateStateAroundXAxis(-view->currQuakeRot.x); - SysMatrix_GetStateAsRSPMatrix(matrix); + Matrix_FromRSPMatrix(matrix, &mf); + Matrix_SetCurrentState(&mf); + Matrix_RotateStateAroundXAxis(view->currQuakeRot.x); + Matrix_InsertYRotation_f(view->currQuakeRot.y, 1); + Matrix_InsertZRotation_f(view->currQuakeRot.z, 1); + Matrix_Scale(view->currQuakeScale.x, view->currQuakeScale.y, view->currQuakeScale.z, MTXMODE_APPLY); + Matrix_InsertZRotation_f(-view->currQuakeRot.z, 1); + Matrix_InsertYRotation_f(-view->currQuakeRot.y, 1); + Matrix_RotateStateAroundXAxis(-view->currQuakeRot.x); + Matrix_ToMtx(matrix); return 1; } @@ -310,7 +310,7 @@ s32 View_RenderToPerspectiveMatrix(View* view) { guPerspective(projection, &view->normal, view->fovy, aspect, view->zNear, view->zFar, view->scale); view->projection = *projection; //! @bug: This cast of `projection` is invalid - View_StepQuake(view, (RSPMatrix*)projection); + View_StepQuake(view, (Mtx*)projection); gSPPerspNormalize(POLY_OPA_DISP++, view->normal); gSPMatrix(POLY_OPA_DISP++, projection, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); diff --git a/src/code/z_vr_box.c b/src/code/z_vr_box.c index 1fca4801d..9e949beac 100644 --- a/src/code/z_vr_box.c +++ b/src/code/z_vr_box.c @@ -35,9 +35,9 @@ void func_80143148(SkyboxContext* skyboxCtx, s32 arg1) { } } -void func_801431E8(GameState* gamestate, SkyboxContext* skyboxCtx, s16 skyType) { - GlobalContext* globalCtx = (GlobalContext*)gamestate; - u32 size; +void func_801431E8(GameState* gameState, SkyboxContext* skyboxCtx, s16 skyType) { + GlobalContext* globalCtx = (GlobalContext*)gameState; + size_t size; void* offset; s32 pad; @@ -82,7 +82,7 @@ void func_801431E8(GameState* gamestate, SkyboxContext* skyboxCtx, s16 skyType) } void func_80143324(GlobalContext* globalCtx, SkyboxContext* skyboxCtx, s16 skyType) { - u32 size; + size_t size; if (1) {} @@ -133,22 +133,22 @@ void func_80143324(GlobalContext* globalCtx, SkyboxContext* skyboxCtx, s16 skyTy } } -void func_801434E4(GameState* gamestate, SkyboxContext* skyboxCtx, s16 skyType) { +void func_801434E4(GameState* gameState, SkyboxContext* skyboxCtx, s16 skyType) { skyboxCtx->skyboxShouldDraw = 0; skyboxCtx->rotX = skyboxCtx->rotY = skyboxCtx->rotZ = 0.0f; - func_801431E8(gamestate, skyboxCtx, skyType); + func_801431E8(gameState, skyboxCtx, skyType); if (skyType != 0) { - skyboxCtx->unk17C = THA_AllocEndAlign16(&gamestate->heap, 0x3840); + skyboxCtx->unk17C = THA_AllocEndAlign16(&gameState->heap, 0x3840); if (skyType == 5) { // Allocate enough space for the vertices for a 6 sided skybox (cube) - skyboxCtx->roomVtx = THA_AllocEndAlign16(&gamestate->heap, sizeof(Vtx) * 32 * 6); + skyboxCtx->roomVtx = THA_AllocEndAlign16(&gameState->heap, sizeof(Vtx) * 32 * 6); func_80143148(skyboxCtx, 6); } else { // Allocate enough space for the vertices for a 5 sided skybox (bottom is missing) - skyboxCtx->roomVtx = THA_AllocEndAlign16(&gamestate->heap, sizeof(Vtx) * 32 * 5); + skyboxCtx->roomVtx = THA_AllocEndAlign16(&gameState->heap, sizeof(Vtx) * 32 * 5); func_80143148(skyboxCtx, 5); } } diff --git a/src/libultra/io/contpfs.c b/src/libultra/io/contpfs.c index b5e6e0288..42009674f 100644 --- a/src/libultra/io/contpfs.c +++ b/src/libultra/io/contpfs.c @@ -1,15 +1,308 @@ +#include "ultra64.h" #include "global.h" -#pragma GLOBAL_ASM("asm/non_matchings/boot/contpfs/__osSumcalc.s") +u16 __osSumcalc(u8* ptr, s32 length) { + s32 i; + u32 sum = 0; + u8* temp = ptr; -#pragma GLOBAL_ASM("asm/non_matchings/boot/contpfs/__osIdCheckSum.s") + for (i = 0; i < length; i++) { + sum += *temp++; + } + return sum & 0xFFFF; +} -#pragma GLOBAL_ASM("asm/non_matchings/boot/contpfs/__osRepairPackId.s") +s32 __osIdCheckSum(u16* ptr, u16* checkSum, u16* idSum) { + u16 data = 0; + u32 i; -#pragma GLOBAL_ASM("asm/non_matchings/boot/contpfs/__osCheckPackId.s") + *checkSum = *idSum = 0; + for (i = 0; i < ((sizeof(__OSPackId) - sizeof(u32)) / sizeof(u8)); i += 2) { + data = *((u16*)((u32)ptr + i)); + *checkSum += data; + *idSum += ~data; + } + return 0; +} -#pragma GLOBAL_ASM("asm/non_matchings/boot/contpfs/__osGetId.s") +s32 __osRepairPackId(OSPfs* pfs, __OSPackId* badid, __OSPackId* newid) { + s32 ret = 0; + u8 temp[BLOCKSIZE]; + u8 comp[BLOCKSIZE]; + u8 mask = 0; + s32 i, j = 0; + u16 index[4]; -#pragma GLOBAL_ASM("asm/non_matchings/boot/contpfs/__osCheckId.s") + newid->repaired = 0xFFFFFFFF; + newid->random = osGetCount(); + newid->serialMid = badid->serialMid; + newid->serialLow = badid->serialLow; -#pragma GLOBAL_ASM("asm/non_matchings/boot/contpfs/__osPfsRWInode.s") + if ((pfs->activebank != 0) && ((ret = __osPfsSelectBank(pfs, 0)) != 0)) { + return ret; + } + + do { + if ((ret = __osPfsSelectBank(pfs, j)) != 0) { + return ret; + } + + if ((ret = __osContRamRead(pfs->queue, pfs->channel, 0, temp)) != 0) { + return ret; + } + temp[0] = j | 0x80; + for (i = 1; i < BLOCKSIZE; i++) { + temp[i] = ~temp[i]; + } + + if ((ret = __osContRamWrite(pfs->queue, pfs->channel, 0, temp, 0)) != 0) { + return ret; + } + if ((ret = __osContRamRead(pfs->queue, pfs->channel, 0, comp)) != 0) { + return (ret); + } + for (i = 0; i < BLOCKSIZE; i++) { + if (comp[i] != temp[i]) { + break; + } + } + if (i != BLOCKSIZE) { + break; + } + + if (j > 0) { + if ((ret = __osPfsSelectBank(pfs, 0)) != 0) { + return ret; + } + if ((ret = __osContRamRead(pfs->queue, pfs->channel, 0, temp)) != 0) { + return ret; + } + if (temp[0] != 0x80) { + break; + } + } + + j++; + } while (j < PFS_MAX_BANKS); + + if ((pfs->activebank != 0) && (ret = __osPfsSelectBank(pfs, 0)) != 0) { + return ret; + } + + mask = (j > 0) ? 1 : 0; + newid->deviceid = (badid->deviceid & 0xFFFE) | mask; + newid->banks = j; + newid->version = badid->version; + __osIdCheckSum((u16*)newid, &newid->checksum, &newid->invertedChecksum); + + index[0] = PFS_ID_0AREA; + index[1] = PFS_ID_1AREA; + index[2] = PFS_ID_2AREA; + index[3] = PFS_ID_3AREA; + for (i = 0; i < 4; i++) { + if ((ret = __osContRamWrite(pfs->queue, pfs->channel, index[i], (u8*)newid, PFS_FORCE)) != 0) { + return ret; + } + } + if ((ret = __osContRamRead(pfs->queue, pfs->channel, PFS_ID_0AREA, temp)) != 0) { + return ret; + } + for (i = 0; i < BLOCKSIZE; i++) { + if (temp[i] != *(u8*)((s32)newid + i)) { + return PFS_ERR_DEVICE; + } + } + return 0; +} + +s32 __osCheckPackId(OSPfs* pfs, __OSPackId* check) { + u16 index[4]; + s32 ret = 0; + u16 sum; + u16 idSum; + s32 i; + s32 j; + + if ((pfs->activebank != 0) && (ret = __osPfsSelectBank(pfs, 0)) != 0) { + return ret; + } + + index[0] = PFS_ID_0AREA; + index[1] = PFS_ID_1AREA; + index[2] = PFS_ID_2AREA; + index[3] = PFS_ID_3AREA; + for (i = 1; i < 4; i++) { + if ((ret = __osContRamRead(pfs->queue, pfs->channel, index[i], (u8*)check)) != 0) { + return ret; + } + __osIdCheckSum((u16*)check, &sum, &idSum); + if ((check->checksum == sum) && (check->invertedChecksum == idSum)) { + break; + } + } + if (i == 4) { + return PFS_ERR_ID_FATAL; + } + + for (j = 0; j < 4; j++) { + if (j != i) { + if ((ret = __osContRamWrite(pfs->queue, pfs->channel, index[j], (u8*)check, PFS_FORCE)) != 0) { + return ret; + } + } + } + return 0; +} + +s32 __osGetId(OSPfs* pfs) { + u16 sum; + u16 isum; + u8 temp[BLOCKSIZE]; + __OSPackId* id; + __OSPackId newid; + s32 ret; + + if (pfs->activebank != 0) { + if ((ret = __osPfsSelectBank(pfs, 0)) != 0) { + return ret; + } + } + + if ((ret = __osContRamRead(pfs->queue, pfs->channel, PFS_ID_0AREA, temp)) != 0) { + return ret; + } + + __osIdCheckSum((u16*)temp, &sum, &isum); + id = (__OSPackId*)temp; + if ((id->checksum != sum) || (id->invertedChecksum != isum)) { + if ((ret = __osCheckPackId(pfs, id)) == PFS_ERR_ID_FATAL) { + ret = __osRepairPackId(pfs, id, &newid); + if (ret) { + return ret; + } + id = &newid; + } else if (ret != 0) { + return ret; + } + } + + if ((id->deviceid & 0x01) == 0) { + ret = __osRepairPackId(pfs, id, &newid); + if (ret) { + return ret; + } + id = &newid; + if ((id->deviceid & 0x01) == 0) { + return PFS_ERR_DEVICE; + } + } + + bcopy(id, pfs->id, BLOCKSIZE); + + if (0) {} + + pfs->version = id->version; + + pfs->banks = id->banks; + pfs->inodeStartPage = 1 + DEF_DIR_PAGES + (2 * pfs->banks); + pfs->dir_size = DEF_DIR_PAGES * PFS_ONE_PAGE; + pfs->inode_table = 1 * PFS_ONE_PAGE; + pfs->minode_table = (1 + pfs->banks) * PFS_ONE_PAGE; + pfs->dir_table = pfs->minode_table + (pfs->banks * PFS_ONE_PAGE); + + if ((ret = __osContRamRead(pfs->queue, pfs->channel, PFS_LABEL_AREA, pfs->label)) != 0) { + return ret; + } + + return 0; +} + +s32 __osCheckId(OSPfs* pfs) { + u8 temp[BLOCKSIZE]; + s32 ret; + + if (pfs->activebank != 0) { + ret = __osPfsSelectBank(pfs, 0); + if (ret == PFS_ERR_NEW_PACK) { + ret = __osPfsSelectBank(pfs, 0); + } + if (ret != 0) { + return ret; + } + } + + if ((ret = __osContRamRead(pfs->queue, pfs->channel, PFS_ID_0AREA, temp)) != 0) { + if (ret != PFS_ERR_NEW_PACK) { + return ret; + } + if ((ret = __osContRamRead(pfs->queue, pfs->channel, PFS_ID_0AREA, temp)) != 0) { + return ret; + } + } + + if (bcmp(pfs->id, temp, BLOCKSIZE) != 0) { + return PFS_ERR_NEW_PACK; + } + + return 0; +} + +s32 __osPfsRWInode(OSPfs* pfs, __OSInode* inode, u8 flag, u8 bank) { + u8 sum; + s32 j; + s32 ret; + s32 offset; + u8* addr; + + if (flag == PFS_READ && bank == __osPfsInodeCacheBank && (pfs->channel == __osPfsInodeCacheChannel)) { + bcopy(&__osPfsInodeCache, inode, sizeof(__OSInode)); + return 0; + } + + if ((pfs->activebank != 0) && (ret = __osPfsSelectBank(pfs, 0)) != 0) { + return ret; + } + + offset = ((bank > 0) ? 1 : pfs->inodeStartPage); + + if (flag == PFS_WRITE) { + inode->inodePage[0].inode_t.page = + __osSumcalc((u8*)(inode->inodePage + offset), (PFS_INODE_SIZE_PER_PAGE - offset) * 2); + } + + for (j = 0; j < PFS_ONE_PAGE; j++) { + addr = (u8*)(((u8*)inode) + (j * BLOCKSIZE)); + if (flag == PFS_WRITE) { + ret = __osContRamWrite(pfs->queue, pfs->channel, pfs->inode_table + (bank * PFS_ONE_PAGE) + j, addr, 0); + ret = __osContRamWrite(pfs->queue, pfs->channel, pfs->minode_table + (bank * PFS_ONE_PAGE) + j, addr, 0); + } else { + ret = __osContRamRead(pfs->queue, pfs->channel, pfs->inode_table + (bank * PFS_ONE_PAGE) + j, addr); + } + if (ret) { + return ret; + } + } + + if (flag == PFS_READ) { + sum = __osSumcalc((u8*)(inode->inodePage + offset), (PFS_INODE_SIZE_PER_PAGE - offset) * 2); + if (sum != inode->inodePage[0].inode_t.page) { + for (j = 0; j < PFS_ONE_PAGE; j++) { + addr = (u8*)(((u8*)inode) + (j * BLOCKSIZE)); + ret = __osContRamRead(pfs->queue, pfs->channel, pfs->minode_table + (bank * PFS_ONE_PAGE) + j, addr); + } + sum = __osSumcalc((u8*)(inode->inodePage + offset), (PFS_INODE_SIZE_PER_PAGE - offset) * 2); + if (sum != inode->inodePage[0].inode_t.page) { + return PFS_ERR_INCONSISTENT; + } + for (j = 0; j < PFS_ONE_PAGE; j++) { + addr = (u8*)(((u8*)inode) + (j * BLOCKSIZE)); + ret = __osContRamWrite(pfs->queue, pfs->channel, pfs->inode_table + (bank * PFS_ONE_PAGE) + j, addr, 0); + } + } + } + __osPfsInodeCacheBank = bank; + bcopy(inode, &__osPfsInodeCache, sizeof(__OSInode)); + __osPfsInodeCacheChannel = pfs->channel; + + return 0; +} diff --git a/src/libultra/io/devmgr.c b/src/libultra/io/devmgr.c index 0a5d7e0bb..c0f69c456 100644 --- a/src/libultra/io/devmgr.c +++ b/src/libultra/io/devmgr.c @@ -1,3 +1,104 @@ #include "global.h" -#pragma GLOBAL_ASM("asm/non_matchings/boot/devmgr/__osDevMgrMain.s") +void __osDevMgrMain(void* arg) { + OSIoMesg* ioMesg; + OSMesg sp70; + OSMesg sp6C; // "dummy" + s32 ret; + OSDevMgr* devMgr; + s32 msgVar = 0; + + devMgr = (OSDevMgr*)arg; + ioMesg = NULL; + ret = 0; + + while (true) { + osRecvMesg(devMgr->cmdQueue, (OSMesg)&ioMesg, OS_MESG_BLOCK); + if ((ioMesg->piHandle != NULL) && (ioMesg->piHandle->type == 2) && + ((ioMesg->piHandle->transferInfo.cmdType == OS_READ) || + (ioMesg->piHandle->transferInfo.cmdType == OS_WRITE))) { + __OSBlockInfo* block; + __OSTranxInfo* transfer; + + transfer = &ioMesg->piHandle->transferInfo; + block = &transfer->block[transfer->blockNum]; + transfer->sectorNum = -1; + if (transfer->transferMode != 3) { + block->dramAddr = (void*)((u32)block->dramAddr - block->sectorSize); + } + + if ((transfer->transferMode == 2) && (ioMesg->piHandle->transferInfo.cmdType == OS_READ)) { + msgVar = 1; + } else { + msgVar = 0; + } + + osRecvMesg(devMgr->acsQueue, &sp6C, OS_MESG_BLOCK); + __osResetGlobalIntMask(0x00100401); + __osEPiRawWriteIo(ioMesg->piHandle, 0x05000510, transfer->bmCtlShadow | 0x80000000); + + label: + osRecvMesg(devMgr->evtQueue, &sp70, OS_MESG_BLOCK); + transfer = &ioMesg->piHandle->transferInfo; + block = &transfer->block[transfer->blockNum]; + if (block->errStatus == 0x1D) { + u32 status; + + __osEPiRawWriteIo(ioMesg->piHandle, 0x05000510, transfer->bmCtlShadow | 0x10000000); + __osEPiRawWriteIo(ioMesg->piHandle, 0x05000510, transfer->bmCtlShadow); + __osEPiRawReadIo(ioMesg->piHandle, 0x05000508, &status); + if (status & 0x02000000) { + __osEPiRawWriteIo(ioMesg->piHandle, 0x05000510, transfer->bmCtlShadow | 0x1000000); + } + block->errStatus = 4; + HW_REG(PI_STATUS_REG, u32) = PI_STATUS_CLEAR_INTR; + __osSetGlobalIntMask(0x00100C01); + } + osSendMesg(ioMesg->hdr.retQueue, (OSMesg)ioMesg, OS_MESG_NOBLOCK); + + if ((msgVar == 1) && (ioMesg->piHandle->transferInfo.block[0].errStatus == 0)) { + msgVar = 0; + goto label; + } + + osSendMesg(devMgr->acsQueue, NULL, OS_MESG_NOBLOCK); + if (ioMesg->piHandle->transferInfo.blockNum == 1) { + osYieldThread(); + } + } else { + switch (ioMesg->hdr.type) { + case 11: + osRecvMesg(devMgr->acsQueue, &sp6C, OS_MESG_BLOCK); + ret = devMgr->piDmaCallback(OS_READ, ioMesg->devAddr, ioMesg->dramAddr, ioMesg->size); + break; + case 12: + osRecvMesg(devMgr->acsQueue, &sp6C, OS_MESG_BLOCK); + ret = devMgr->piDmaCallback(OS_WRITE, ioMesg->devAddr, ioMesg->dramAddr, ioMesg->size); + break; + case 15: + osRecvMesg(devMgr->acsQueue, &sp6C, OS_MESG_BLOCK); + ret = devMgr->epiDmaCallback(ioMesg->piHandle, OS_READ, ioMesg->devAddr, ioMesg->dramAddr, + ioMesg->size); + break; + case 16: + osRecvMesg(devMgr->acsQueue, &sp6C, OS_MESG_BLOCK); + ret = devMgr->epiDmaCallback(ioMesg->piHandle, OS_WRITE, ioMesg->devAddr, ioMesg->dramAddr, + ioMesg->size); + break; + case 10: + osSendMesg(ioMesg->hdr.retQueue, ioMesg, OS_MESG_NOBLOCK); + ret = -1; + break; + default: + ret = -1; + break; + } + + if (ret == 0) { + osRecvMesg(devMgr->evtQueue, &sp70, OS_MESG_BLOCK); + osSendMesg(ioMesg->hdr.retQueue, ioMesg, OS_MESG_NOBLOCK); + osSendMesg(devMgr->acsQueue, NULL, OS_MESG_NOBLOCK); + } + } + } +} diff --git a/src/libultra/io/epilinkhandle.c b/src/libultra/io/epilinkhandle.c index 59efbc66e..bedd6d71c 100644 --- a/src/libultra/io/epilinkhandle.c +++ b/src/libultra/io/epilinkhandle.c @@ -1,3 +1,12 @@ #include "global.h" -#pragma GLOBAL_ASM("asm/non_matchings/boot/epilinkhandle/osEPiLinkHandle.s") +s32 osEPiLinkHandle(OSPiHandle* handle) { + u32 saveMask = __osDisableInt(); + + handle->next = __osPiTable; + __osPiTable = handle; + + __osRestoreInt(saveMask); + + return 0; +} diff --git a/src/libultra/io/epirawdma.c b/src/libultra/io/epirawdma.c index e6ee17d5f..f9e2e0f97 100644 --- a/src/libultra/io/epirawdma.c +++ b/src/libultra/io/epirawdma.c @@ -1,3 +1,3 @@ #include "global.h" -#pragma GLOBAL_ASM("asm/non_matchings/boot/epirawdma/osEPiRawStartDma.s") +#pragma GLOBAL_ASM("asm/non_matchings/boot/epirawdma/__osEPiRawStartDma.s") diff --git a/src/libultra/io/epirawread.c b/src/libultra/io/epirawread.c index 0a175189e..e910cee4d 100644 --- a/src/libultra/io/epirawread.c +++ b/src/libultra/io/epirawread.c @@ -1,3 +1,3 @@ #include "global.h" -#pragma GLOBAL_ASM("asm/non_matchings/boot/epirawread/osEPiRawReadIo.s") +#pragma GLOBAL_ASM("asm/non_matchings/boot/epirawread/__osEPiRawReadIo.s") diff --git a/src/libultra/io/motor.c b/src/libultra/io/motor.c new file mode 100644 index 000000000..25254c61b --- /dev/null +++ b/src/libultra/io/motor.c @@ -0,0 +1,120 @@ +#include "ultra64.h" +#include "global.h" + +#define BANK_ADDR 0x400 +#define MOTOR_ID 0x80 + +s32 __osPfsSelectBank(OSPfs* pfs, u8 bank); + +s32 osSetRumble(OSPfs* pfs, u32 vibrate) { + s32 i; + s32 ret; + u8* buf = (u8*)&osPifBuffers[pfs->channel]; + + if (!(pfs->status & 8)) { + return 5; + } + + __osSiGetAccess(); + osPifBuffers[pfs->channel].pifstatus = 1; + buf += pfs->channel; + for (i = 0; i < BLOCKSIZE; i++) { + ((__OSContRamReadFormat*)buf)->data[i] = vibrate; + } + + __osContLastCmd = CONT_CMD_END; + __osSiRawStartDma(OS_WRITE, &osPifBuffers[pfs->channel]); + osRecvMesg(pfs->queue, NULL, OS_MESG_BLOCK); + __osSiRawStartDma(OS_READ, &osPifBuffers[pfs->channel]); + osRecvMesg(pfs->queue, NULL, OS_MESG_BLOCK); + + ret = ((__OSContRamReadFormat*)buf)->rxsize & 0xC0; + if (!ret) { + if (!vibrate) { + if (((__OSContRamReadFormat*)buf)->datacrc != 0) { + ret = PFS_ERR_CONTRFAIL; + } + } else { + if (((__OSContRamReadFormat*)buf)->datacrc != 0xEB) { + ret = PFS_ERR_CONTRFAIL; + } + } + } + + __osSiRelAccess(); + + return ret; +} +void osSetUpMempakWrite(u32 channel, OSPifRam* buf) { + u8* bufptr = (u8*)buf; + __OSContRamReadFormat mempakwr; + u32 i; + + mempakwr.dummy = 0xFF; + mempakwr.txsize = 0x23; + mempakwr.rxsize = 1; + mempakwr.cmd = 3; // write mempak + mempakwr.hi = 0x600 >> 3; + mempakwr.lo = (u8)(__osContAddressCrc(0x600) | (0x600 << 5)); + + if (channel != 0) { + for (i = 0; i < channel; i++) { + *bufptr++ = 0; + } + } + + *(__OSContRamReadFormat*)bufptr = mempakwr; + bufptr += sizeof(mempakwr); + *bufptr = 0xFE; +} + +s32 osProbeRumblePak(OSMesgQueue* ctrlrqueue, OSPfs* pfs, u32 channel) { + s32 ret; + u8 sp24[BLOCKSIZE]; + + pfs->queue = ctrlrqueue; + pfs->channel = channel; + pfs->activebank = 0xFF; + pfs->status = 0; + + ret = __osPfsSelectBank(pfs, 0xFE); + if (ret == 2) { + ret = __osPfsSelectBank(pfs, MOTOR_ID); + } + if (ret != 0) { + return ret; + } + ret = __osContRamRead(ctrlrqueue, channel, 0x400, sp24); + if (ret == 2) { + ret = 4; // "Controller pack communication error" + } + if (ret != 0) { + return ret; + } + if (sp24[BLOCKSIZE - 1] == 0xFE) { + return 0xB; + } + ret = __osPfsSelectBank(pfs, MOTOR_ID); + if (ret == 2) { + ret = 4; // "Controller pack communication error" + } + if (ret != 0) { + return ret; + } + ret = __osContRamRead(ctrlrqueue, channel, BANK_ADDR, sp24); + if (ret == 2) { + ret = 4; // "Controller pack communication error" + } + if (ret != 0) { + return ret; + } + if (sp24[BLOCKSIZE - 1] != MOTOR_ID) { + return 0xB; + } + if ((pfs->status & PFS_MOTOR_INITIALIZED) == 0) { + osSetUpMempakWrite(channel, &osPifBuffers[channel]); + } + pfs->status = PFS_MOTOR_INITIALIZED; + + return 0; // "Recognized rumble pak" +} diff --git a/src/libultra/io/pimgr.c b/src/libultra/io/pimgr.c index f5081c050..74b1075a1 100644 --- a/src/libultra/io/pimgr.c +++ b/src/libultra/io/pimgr.c @@ -31,9 +31,9 @@ void osCreatePiManager(OSPri pri, OSMesgQueue* cmdQ, OSMesg* cmdBuf, s32 cmdMsgC __osPiDevMgr.cmdQueue = cmdQ; __osPiDevMgr.evtQueue = &D_8009E3D0; __osPiDevMgr.acsQueue = &__osPiAccessQueue; - __osPiDevMgr.piDmaCallback = osPiRawStartDma; - __osPiDevMgr.epiDmaCallback = osEPiRawStartDma; - osCreateThread(&D_8009D220, 0, __osDevMgrMain, &__osPiDevMgr, &piManagerStack[0x1000], pri); + __osPiDevMgr.piDmaCallback = __osPiRawStartDma; + __osPiDevMgr.epiDmaCallback = __osEPiRawStartDma; + osCreateThread(&D_8009D220, 0, __osDevMgrMain, (void*)&__osPiDevMgr, &piManagerStack[4096], pri); osStartThread(&D_8009D220); __osRestoreInt(savedMask); if (oldPri != -1) { diff --git a/src/libultra/io/pirawdma.c b/src/libultra/io/pirawdma.c index b133fadf5..242a91c24 100644 --- a/src/libultra/io/pirawdma.c +++ b/src/libultra/io/pirawdma.c @@ -1,6 +1,6 @@ #include "global.h" -s32 osPiRawStartDma(s32 direction, u32 devAddr, void* dramAddr, u32 size) { +s32 __osPiRawStartDma(s32 direction, u32 devAddr, void* dramAddr, size_t size) { register int stat; stat = *(vu32*)0xA4600010; diff --git a/src/libultra/io/sprawdma.c b/src/libultra/io/sprawdma.c index 01e944c5f..95395a29d 100644 --- a/src/libultra/io/sprawdma.c +++ b/src/libultra/io/sprawdma.c @@ -1,6 +1,6 @@ #include "global.h" -s32 __osSpRawStartDma(s32 direction, void* devAddr, void* dramAddr, u32 size) { +s32 __osSpRawStartDma(s32 direction, void* devAddr, void* dramAddr, size_t size) { if (__osSpDeviceBusy() != 0) { return -1; } diff --git a/src/libultra/libc/string.c b/src/libultra/libc/string.c index 5f085f677..b23bf564d 100644 --- a/src/libultra/libc/string.c +++ b/src/libultra/libc/string.c @@ -1,4 +1,4 @@ -#include "string.h" +#include "global.h" const char* strchr(const char* s, int c) { const unsigned char ch = c; diff --git a/src/overlays/actors/ovl_Arms_Hook/z_arms_hook.c b/src/overlays/actors/ovl_Arms_Hook/z_arms_hook.c index 4f9b88118..62bac2109 100644 --- a/src/overlays/actors/ovl_Arms_Hook/z_arms_hook.c +++ b/src/overlays/actors/ovl_Arms_Hook/z_arms_hook.c @@ -300,14 +300,14 @@ void ArmsHook_Draw(Actor* thisx, GlobalContext* globalCtx) { OPEN_DISPS(globalCtx->state.gfxCtx); if ((ArmsHook_Shoot != this->actionFunc) || (this->timer <= 0)) { - SysMatrix_MultiplyVector3fByState(&D_808C1C10, &this->unk1E0); - SysMatrix_MultiplyVector3fByState(&D_808C1C28, &sp5C); - SysMatrix_MultiplyVector3fByState(&D_808C1C34, &sp50); + Matrix_MultiplyVector3fByState(&D_808C1C10, &this->unk1E0); + Matrix_MultiplyVector3fByState(&D_808C1C28, &sp5C); + Matrix_MultiplyVector3fByState(&D_808C1C34, &sp50); this->unk1C4 = 0; } else { - SysMatrix_MultiplyVector3fByState(&D_808C1C1C, &this->unk1E0); - SysMatrix_MultiplyVector3fByState(&D_808C1C40, &sp5C); - SysMatrix_MultiplyVector3fByState(&D_808C1C4C, &sp50); + Matrix_MultiplyVector3fByState(&D_808C1C1C, &this->unk1E0); + Matrix_MultiplyVector3fByState(&D_808C1C40, &sp5C); + Matrix_MultiplyVector3fByState(&D_808C1C4C, &sp50); } func_80126440(globalCtx, &this->collider.base, &this->unk1C4, &sp5C, &sp50); func_8012C28C(globalCtx->state.gfxCtx); @@ -315,13 +315,13 @@ void ArmsHook_Draw(Actor* thisx, GlobalContext* globalCtx) { gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_OPA_DISP++, D_0601D960); - SysMatrix_InsertTranslation(this->actor.world.pos.x, this->actor.world.pos.y, this->actor.world.pos.z, - MTXMODE_NEW); + Matrix_InsertTranslation(this->actor.world.pos.x, this->actor.world.pos.y, this->actor.world.pos.z, + MTXMODE_NEW); Math_Vec3f_Diff(&player->rightHandWorld.pos, &this->actor.world.pos, &sp68); sp48 = SQXZ(sp68); sp4C = sqrtf(SQXZ(sp68)); Matrix_RotateY(Math_Atan2S(sp68.x, sp68.z), MTXMODE_APPLY); - SysMatrix_InsertXRotation_s(Math_Atan2S(-sp68.y, sp4C), MTXMODE_APPLY); + Matrix_InsertXRotation_s(Math_Atan2S(-sp68.y, sp4C), MTXMODE_APPLY); f0 = sqrtf(SQ(sp68.y) + sp48); Matrix_Scale(0.015f, 0.015f, f0 * 0.01f, MTXMODE_APPLY); gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); diff --git a/src/overlays/actors/ovl_Arrow_Ice/z_arrow_ice.c b/src/overlays/actors/ovl_Arrow_Ice/z_arrow_ice.c index 9d61ca292..ed513eef3 100644 --- a/src/overlays/actors/ovl_Arrow_Ice/z_arrow_ice.c +++ b/src/overlays/actors/ovl_Arrow_Ice/z_arrow_ice.c @@ -200,11 +200,10 @@ void ArrowIce_Draw(Actor* thisx, GlobalContext* globalCtx) { OPEN_DISPS(globalCtx->state.gfxCtx); - SysMatrix_InsertTranslation(transform->world.pos.x, transform->world.pos.y, transform->world.pos.z, - MTXMODE_NEW); + Matrix_InsertTranslation(transform->world.pos.x, transform->world.pos.y, transform->world.pos.z, MTXMODE_NEW); Matrix_RotateY(transform->shape.rot.y, MTXMODE_APPLY); - SysMatrix_InsertXRotation_s(transform->shape.rot.x, MTXMODE_APPLY); - SysMatrix_InsertZRotation_s(transform->shape.rot.z, MTXMODE_APPLY); + Matrix_InsertXRotation_s(transform->shape.rot.x, MTXMODE_APPLY); + Matrix_InsertZRotation_s(transform->shape.rot.z, MTXMODE_APPLY); Matrix_Scale(0.01f, 0.01f, 0.01f, MTXMODE_APPLY); // Draw blue effect over the screen when arrow hits @@ -222,14 +221,14 @@ void ArrowIce_Draw(Actor* thisx, GlobalContext* globalCtx) { func_8012C2DC(globalCtx->state.gfxCtx); gDPSetPrimColor(POLY_XLU_DISP++, 0x80, 0x80, 170, 255, 255, (s32)(this->alpha * 0.5f) & 0xFF); gDPSetEnvColor(POLY_XLU_DISP++, 0, 0, 255, 128); - SysMatrix_InsertRotation(0x4000, 0, 0, MTXMODE_APPLY); + Matrix_InsertRotation(0x4000, 0, 0, MTXMODE_APPLY); if (this->timer != 0) { - SysMatrix_InsertTranslation(0.0f, 0.0f, 0.0f, MTXMODE_APPLY); + Matrix_InsertTranslation(0.0f, 0.0f, 0.0f, MTXMODE_APPLY); } else { - SysMatrix_InsertTranslation(0.0f, 1500.0f, 0.0f, MTXMODE_APPLY); + Matrix_InsertTranslation(0.0f, 1500.0f, 0.0f, MTXMODE_APPLY); } Matrix_Scale(this->radius * 0.2f, this->height * 3.0f, this->radius * 0.2f, MTXMODE_APPLY); - SysMatrix_InsertTranslation(0.0f, -700.0f, 0.0f, MTXMODE_APPLY); + Matrix_InsertTranslation(0.0f, -700.0f, 0.0f, MTXMODE_APPLY); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_XLU_DISP++, sIceArrowDL); gSPDisplayList(POLY_XLU_DISP++, diff --git a/src/overlays/actors/ovl_Bg_Ctower_Gear/z_bg_ctower_gear.c b/src/overlays/actors/ovl_Bg_Ctower_Gear/z_bg_ctower_gear.c index c2554ec61..18b8a343c 100644 --- a/src/overlays/actors/ovl_Bg_Ctower_Gear/z_bg_ctower_gear.c +++ b/src/overlays/actors/ovl_Bg_Ctower_Gear/z_bg_ctower_gear.c @@ -90,14 +90,14 @@ void BgCtowerGear_Splash(BgCtowerGear* this, GlobalContext* globalCtx) { rotZ = this->dyna.actor.shape.rot.z & 0x1FFF; if ((flags != 0) && (rotZ < 0x1B58) && (rotZ >= 0x1388)) { Matrix_RotateY(this->dyna.actor.home.rot.y, 0); - SysMatrix_InsertXRotation_s(this->dyna.actor.home.rot.x, 1); - SysMatrix_InsertZRotation_s(this->dyna.actor.home.rot.z, 1); + Matrix_InsertXRotation_s(this->dyna.actor.home.rot.x, 1); + Matrix_InsertZRotation_s(this->dyna.actor.home.rot.z, 1); for (i = 0; i < 4; i++) { if ((u32)Rand_Next() >= 0x40000000) { splashOffset.x = D_80AD3270[i].x - (Rand_ZeroOne() * 30.0f); splashOffset.y = D_80AD3270[i].y; splashOffset.z = D_80AD3270[i].z; - SysMatrix_MultiplyVector3fByState(&splashOffset, &splashSpawnPos); + Matrix_MultiplyVector3fByState(&splashOffset, &splashSpawnPos); splashSpawnPos.x += this->dyna.actor.world.pos.x + ((Rand_ZeroOne() * 20.0f) - 10.0f); splashSpawnPos.y += this->dyna.actor.world.pos.y; splashSpawnPos.z += this->dyna.actor.world.pos.z + ((Rand_ZeroOne() * 20.0f) - 10.0f); @@ -108,14 +108,14 @@ void BgCtowerGear_Splash(BgCtowerGear* this, GlobalContext* globalCtx) { if ((rotZ < 0x1F4) && (rotZ >= 0)) { if (flags != 0) { Matrix_RotateY(this->dyna.actor.home.rot.y, 0); - SysMatrix_InsertXRotation_s(this->dyna.actor.home.rot.x, 1); - SysMatrix_InsertZRotation_s(this->dyna.actor.home.rot.z, 1); + Matrix_InsertXRotation_s(this->dyna.actor.home.rot.x, 1); + Matrix_InsertZRotation_s(this->dyna.actor.home.rot.z, 1); for (i = 0; i < 3; i++) { for (j = 0; j < 2; j++) { splashOffset.x = D_80AD32A0[i].x + (Rand_ZeroOne() * 10.0f); splashOffset.y = D_80AD32A0[i].y; splashOffset.z = D_80AD32A0[i].z; - SysMatrix_MultiplyVector3fByState(&splashOffset, &splashSpawnPos); + Matrix_MultiplyVector3fByState(&splashOffset, &splashSpawnPos); splashSpawnPos.x += this->dyna.actor.world.pos.x + ((Rand_ZeroOne() * 20.0f) - 10.0f); splashSpawnPos.y += this->dyna.actor.world.pos.y; splashSpawnPos.z += this->dyna.actor.world.pos.z + ((Rand_ZeroOne() * 20.0f) - 10.0f); diff --git a/src/overlays/actors/ovl_Bg_Haka_Tomb/z_bg_haka_tomb.c b/src/overlays/actors/ovl_Bg_Haka_Tomb/z_bg_haka_tomb.c index 9a6d2348b..34ad8fb1f 100644 --- a/src/overlays/actors/ovl_Bg_Haka_Tomb/z_bg_haka_tomb.c +++ b/src/overlays/actors/ovl_Bg_Haka_Tomb/z_bg_haka_tomb.c @@ -116,9 +116,9 @@ void BgHakaTomb_Update(Actor* thisx, GlobalContext* globalCtx) { this->actionFunc(this, globalCtx); Matrix_RotateY(this->dyna.actor.world.rot.y, MTXMODE_NEW); - SysMatrix_InsertXRotation_s(this->dyna.actor.world.rot.x, MTXMODE_APPLY); - SysMatrix_InsertZRotation_s(this->dyna.actor.world.rot.z, MTXMODE_APPLY); - SysMatrix_MultiplyVector3fByState(&D_80BD68A4, &vec); + Matrix_InsertXRotation_s(this->dyna.actor.world.rot.x, MTXMODE_APPLY); + Matrix_InsertZRotation_s(this->dyna.actor.world.rot.z, MTXMODE_APPLY); + Matrix_MultiplyVector3fByState(&D_80BD68A4, &vec); Math_Vec3f_Sum(&this->dyna.actor.world.pos, &vec, &this->dyna.actor.focus.pos); } diff --git a/src/overlays/actors/ovl_Bg_Hakugin_Post/z_bg_hakugin_post.c b/src/overlays/actors/ovl_Bg_Hakugin_Post/z_bg_hakugin_post.c index 691cf9992..453bd919c 100644 --- a/src/overlays/actors/ovl_Bg_Hakugin_Post/z_bg_hakugin_post.c +++ b/src/overlays/actors/ovl_Bg_Hakugin_Post/z_bg_hakugin_post.c @@ -234,7 +234,7 @@ BgHakuginPostUnkStruct1* func_80A9B32C(BgHakuginPostUnkStruct* unkStruct, BgHaku } void func_80A9B384(Vec3f* arg0) { - MtxF* matrix = SysMatrix_GetCurrentState(); + MtxF* matrix = Matrix_GetCurrentState(); matrix->mf[3][0] = arg0->x; matrix->mf[3][1] = arg0->y; @@ -1013,8 +1013,8 @@ void func_80A9D61C(Actor* thisx, GlobalContext* globalCtx) { OPEN_DISPS(globalCtx->state.gfxCtx); func_8012C28C(globalCtx->state.gfxCtx); - SysMatrix_SetStateRotationAndTranslation(this->dyna.actor.world.pos.x, this->dyna.actor.world.pos.y, - this->dyna.actor.world.pos.z, &this->dyna.actor.shape.rot); + Matrix_SetStateRotationAndTranslation(this->dyna.actor.world.pos.x, this->dyna.actor.world.pos.y, + this->dyna.actor.world.pos.z, &this->dyna.actor.shape.rot); Matrix_Scale(0.1f, 0.1f, 0.1f, MTXMODE_APPLY); for (i = 0; i < D_80A9E028.count; i++) { @@ -1035,8 +1035,8 @@ void func_80A9D61C(Actor* thisx, GlobalContext* globalCtx) { for (i = 0; i < ARRAY_COUNT(D_80A9E028.unk_02A4); i++) { unkStruct2 = &D_80A9E028.unk_02A4[i]; if (unkStruct2->unk_2C > 0) { - SysMatrix_SetStateRotationAndTranslation(unkStruct2->unk_04.x, unkStruct2->unk_04.y, - unkStruct2->unk_04.z, &unkStruct2->unk_20); + Matrix_SetStateRotationAndTranslation(unkStruct2->unk_04.x, unkStruct2->unk_04.y, unkStruct2->unk_04.z, + &unkStruct2->unk_20); Matrix_Scale(unkStruct2->unk_00, unkStruct2->unk_00, unkStruct2->unk_00, MTXMODE_APPLY); gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), diff --git a/src/overlays/actors/ovl_Bg_Kin2_Fence/z_bg_kin2_fence.c b/src/overlays/actors/ovl_Bg_Kin2_Fence/z_bg_kin2_fence.c index a9ce12ce9..2d1fb8ca2 100644 --- a/src/overlays/actors/ovl_Bg_Kin2_Fence/z_bg_kin2_fence.c +++ b/src/overlays/actors/ovl_Bg_Kin2_Fence/z_bg_kin2_fence.c @@ -138,11 +138,11 @@ void BgKin2Fence_SpawnEyeSparkles(BgKin2Fence* this, GlobalContext* globalCtx, s Vec3f sp58; s32 pad[2]; - SysMatrix_SetStateRotationAndTranslation(this->dyna.actor.world.pos.x, this->dyna.actor.world.pos.y, - this->dyna.actor.world.pos.z, &this->dyna.actor.shape.rot); + Matrix_SetStateRotationAndTranslation(this->dyna.actor.world.pos.x, this->dyna.actor.world.pos.y, + this->dyna.actor.world.pos.z, &this->dyna.actor.shape.rot); for (i = 0; i < 2; i++) { - SysMatrix_MultiplyVector3fByState(&eyeSparkleSpawnPositions[mask][i], &sp58); + Matrix_MultiplyVector3fByState(&eyeSparkleSpawnPositions[mask][i], &sp58); EffectSsKiraKira_SpawnDispersed(globalCtx, &sp58, &D_801D15B0, &D_801D15B0, &primColor, &envColor, 6000, -10); } } @@ -156,9 +156,9 @@ void BgKin2Fence_Init(Actor* thisx, GlobalContext* globalCtx) { BgCheck3_LoadMesh(globalCtx, &this->dyna, &D_06000908); Collider_InitJntSph(globalCtx, &this->collider); Collider_SetJntSph(globalCtx, &this->collider, &this->dyna.actor, &sJntSphInit, this->colliderElements); - SysMatrix_SetStateRotationAndTranslation(this->dyna.actor.world.pos.x, this->dyna.actor.world.pos.y, - this->dyna.actor.world.pos.z, &this->dyna.actor.shape.rot); - Matrix_Scale(this->dyna.actor.scale.x, this->dyna.actor.scale.y, this->dyna.actor.scale.z, 1); + Matrix_SetStateRotationAndTranslation(this->dyna.actor.world.pos.x, this->dyna.actor.world.pos.y, + this->dyna.actor.world.pos.z, &this->dyna.actor.shape.rot); + Matrix_Scale(this->dyna.actor.scale.x, this->dyna.actor.scale.y, this->dyna.actor.scale.z, MTXMODE_APPLY); for (i = 0; i < 4; i++) { Collider_UpdateSpheres(i, &this->collider); diff --git a/src/overlays/actors/ovl_Dm_Nb/z_dm_nb.c b/src/overlays/actors/ovl_Dm_Nb/z_dm_nb.c index 2b7492754..1e36f9e29 100644 --- a/src/overlays/actors/ovl_Dm_Nb/z_dm_nb.c +++ b/src/overlays/actors/ovl_Dm_Nb/z_dm_nb.c @@ -72,7 +72,7 @@ void DmNb_Init(Actor* thisx, GlobalContext* globalCtx) { DmNb* this = THIS; ActorShape_Init(&this->actor.shape, 0.0f, NULL, 0.0f); - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_06008C40, NULL, this->limbDrawTable, this->transitionDrawTable, 8); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_06008C40, NULL, this->jointTable, this->morphTable, 8); this->unk1F0 = -1; func_80C1DED0(this, 0); this->actor.flags &= ~1; @@ -87,17 +87,17 @@ void DmNb_Update(Actor* thisx, GlobalContext* globalCtx) { DmNb* this = THIS; this->actionFunc(this, globalCtx); - SkelAnime_FrameUpdateMatrix(&this->skelAnime); - Actor_UpdateBgCheckInfo(globalCtx, &this->actor, 30.0f, 12.0f, 0.0f, 0x4); + SkelAnime_Update(&this->skelAnime); + Actor_UpdateBgCheckInfo(globalCtx, &this->actor, 30.0f, 12.0f, 0.0f, 4); } -void DmNb_UnkActorDraw(GlobalContext* globalCtx, s32 limbIndex, Actor* actor) { +void DmNb_UnkActorDraw(GlobalContext* globalCtx, s32 limbIndex, Actor* thisx) { } void DmNb_Draw(Actor* thisx, GlobalContext* globalCtx) { DmNb* this = THIS; func_8012C5B0(globalCtx->state.gfxCtx); - func_801343C0(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, NULL, + func_801343C0(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, NULL, NULL, DmNb_UnkActorDraw, &this->actor); } diff --git a/src/overlays/actors/ovl_Dm_Nb/z_dm_nb.h b/src/overlays/actors/ovl_Dm_Nb/z_dm_nb.h index f31d0c3de..a417ea070 100644 --- a/src/overlays/actors/ovl_Dm_Nb/z_dm_nb.h +++ b/src/overlays/actors/ovl_Dm_Nb/z_dm_nb.h @@ -11,8 +11,8 @@ typedef struct DmNb { /* 0x000 */ Actor actor; /* 0x144 */ SkelAnime skelAnime; /* 0x188 */ DmNbActionFunc actionFunc; - /* 0x18C */ Vec3s limbDrawTable[8]; - /* 0x1BC */ Vec3s transitionDrawTable[8]; + /* 0x18C */ Vec3s jointTable[8]; + /* 0x1BC */ Vec3s morphTable[8]; /* 0x1EC */ u8 unk1EC; /* 0x1F0 */ s32 unk1F0; /* 0x1F4 */ s32 unk1F4; diff --git a/src/overlays/actors/ovl_Dm_Sa/z_dm_sa.c b/src/overlays/actors/ovl_Dm_Sa/z_dm_sa.c index b5ddf40a0..02101b113 100644 --- a/src/overlays/actors/ovl_Dm_Sa/z_dm_sa.c +++ b/src/overlays/actors/ovl_Dm_Sa/z_dm_sa.c @@ -33,12 +33,12 @@ void func_80A2E960(SkelAnime* arg0, ActorAnimationEntry* animations, u16 index) animations += index; if (animations->frameCount < 0.0f) { - frameCount = SkelAnime_GetFrameCount(&animations->animation->common); + frameCount = Animation_GetLastFrame(animations->animation); } else { frameCount = animations->frameCount; } - SkelAnime_ChangeAnim(arg0, animations->animation, animations->playSpeed, animations->startFrame, frameCount, - animations->mode, animations->morphFrames); + Animation_Change(arg0, animations->animation, animations->playSpeed, animations->startFrame, frameCount, + animations->mode, animations->morphFrames); } void DmSa_Init(Actor* thisx, GlobalContext* globalCtx) { @@ -48,7 +48,7 @@ void DmSa_Init(Actor* thisx, GlobalContext* globalCtx) { this->alpha = 0xFF; this->actor.targetArrowOffset = 3000.0f; ActorShape_Init(&this->actor.shape, 0.0f, func_800B3FC0, 24.0f); - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_06013328, NULL, 0, 0, 0); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_06013328, NULL, 0, 0, 0); func_80A2E960(&this->skelAnime, D_80A2ED00, 0); Actor_SetScale(&this->actor, 0.01f); this->actionFunc = DmSa_DoNothing; @@ -63,7 +63,7 @@ void DmSa_DoNothing(DmSa* this, GlobalContext* globalCtx) { void DmSa_Update(Actor* thisx, GlobalContext* globalCtx) { DmSa* this = THIS; - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); this->alpha += 0; this->actionFunc(this, globalCtx); } @@ -114,7 +114,7 @@ void DmSa_Draw(Actor* thisx, GlobalContext* globalCtx) { gSPSegment(POLY_OPA_DISP++, 0x0C, func_80A2EBB0(globalCtx->state.gfxCtx, this->alpha)); } - func_801343C0(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, + func_801343C0(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, func_80A2EB10, func_80A2EB2C, func_80A2EB44, &this->actor); CLOSE_DISPS(globalCtx->state.gfxCtx); diff --git a/src/overlays/actors/ovl_Eff_Dust/z_eff_dust.c b/src/overlays/actors/ovl_Eff_Dust/z_eff_dust.c index bfb2cc728..3ca55d7b8 100644 --- a/src/overlays/actors/ovl_Eff_Dust/z_eff_dust.c +++ b/src/overlays/actors/ovl_Eff_Dust/z_eff_dust.c @@ -281,14 +281,14 @@ void func_80919768(Actor* thisx, GlobalContext* globalCtx2) { for (i = 0; i < ARRAY_COUNT(this->distanceTraveled); i++) { if (*distanceTraveled < 1.0f) { aux = 1.0f - SQ(*distanceTraveled); - SysMatrix_InsertTranslation(thisx->world.pos.x, thisx->world.pos.y, thisx->world.pos.z, MTXMODE_NEW); + Matrix_InsertTranslation(thisx->world.pos.x, thisx->world.pos.y, thisx->world.pos.z, MTXMODE_NEW); Matrix_RotateY(sp92, MTXMODE_APPLY); - SysMatrix_InsertTranslation(initialPositions->x * ((this->dx * aux) + (1.0f - this->dx)), - initialPositions->y * ((this->dy * aux) + (1.0f - this->dy)), - initialPositions->z * ((this->dz * aux) + (1.0f - this->dz)), MTXMODE_APPLY); - Matrix_Scale(this->scalingFactor, this->scalingFactor, this->scalingFactor, 1); + Matrix_InsertTranslation(initialPositions->x * ((this->dx * aux) + (1.0f - this->dx)), + initialPositions->y * ((this->dy * aux) + (1.0f - this->dy)), + initialPositions->z * ((this->dz * aux) + (1.0f - this->dz)), MTXMODE_APPLY); + Matrix_Scale(this->scalingFactor, this->scalingFactor, this->scalingFactor, MTXMODE_APPLY); - SysMatrix_NormalizeXYZ(&globalCtx->mf_187FC); + Matrix_NormalizeXYZ(&globalCtx->mf_187FC); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); @@ -337,15 +337,15 @@ void func_809199FC(Actor* thisx, GlobalContext* globalCtx2) { gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, 255, 255, 255, (*distanceTraveled * 255.0f)); aux = 1.0f - SQ(*distanceTraveled); - SysMatrix_InsertMatrix(&player->mf_CC4, MTXMODE_NEW); - SysMatrix_InsertTranslation(initialPositions->x * ((this->dx * aux) + (1.0f - this->dx)), - (initialPositions->y * (1.0f - *distanceTraveled)) + 320.0f, - (initialPositions->z * (1.0f - *distanceTraveled)) + -20.0f, MTXMODE_APPLY); + Matrix_InsertMatrix(&player->mf_CC4, MTXMODE_NEW); + Matrix_InsertTranslation(initialPositions->x * ((this->dx * aux) + (1.0f - this->dx)), + (initialPositions->y * (1.0f - *distanceTraveled)) + 320.0f, + (initialPositions->z * (1.0f - *distanceTraveled)) + -20.0f, MTXMODE_APPLY); Matrix_Scale(*distanceTraveled * this->scalingFactor, *distanceTraveled * this->scalingFactor, *distanceTraveled * this->scalingFactor, MTXMODE_APPLY); - SysMatrix_NormalizeXYZ(&globalCtx->mf_187FC); + Matrix_NormalizeXYZ(&globalCtx->mf_187FC); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPClearGeometryMode(POLY_XLU_DISP++, G_FOG | G_LIGHTING); diff --git a/src/overlays/actors/ovl_En_Baisen/z_en_baisen.c b/src/overlays/actors/ovl_En_Baisen/z_en_baisen.c index b054b20e8..d9bb0f9fc 100644 --- a/src/overlays/actors/ovl_En_Baisen/z_en_baisen.c +++ b/src/overlays/actors/ovl_En_Baisen/z_en_baisen.c @@ -69,7 +69,7 @@ void EnBaisen_Init(Actor* thisx, GlobalContext* globalCtx) { EnBaisen* this = THIS; ActorShape_Init(&this->actor.shape, 0.0f, func_800B3FC0, 25.0f); - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_06007908, &D_060011C0, this->jointTable, this->morphTable, 20); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_06007908, &D_060011C0, this->jointTable, this->morphTable, 20); this->actor.colChkInfo.mass = MASS_IMMOVABLE; this->paramCopy = this->actor.params; if (this->actor.params == 0) { @@ -103,9 +103,9 @@ void EnBaisen_Destroy(Actor* thisx, GlobalContext* globalCtx) { void EnBaisen_ChangeAnimation(EnBaisen* this, s32 animIndex) { this->animIndex = animIndex; - this->frameCount = SkelAnime_GetFrameCount(&D_80BE8E4C[animIndex]->common); - SkelAnime_ChangeAnim(&this->skelAnime, D_80BE8E4C[this->animIndex], 1.0f, 0.0f, this->frameCount, - animModes[this->animIndex], -10.0f); + this->frameCount = Animation_GetLastFrame(D_80BE8E4C[animIndex]); + Animation_Change(&this->skelAnime, D_80BE8E4C[this->animIndex], 1.0f, 0.0f, this->frameCount, + animModes[this->animIndex], -10.0f); } void func_80BE871C(EnBaisen* this) { @@ -201,7 +201,7 @@ void func_80BE89D8(EnBaisen* this, GlobalContext* globalCtx) { } if ((globalCtx->msgCtx.unk11F04 == 0x2AC6) || (globalCtx->msgCtx.unk11F04 == 0x2AC7) || (globalCtx->msgCtx.unk11F04 == 0x2AC8)) { - this->skelAnime.animPlaybackSpeed = 0.0f; + this->skelAnime.playSpeed = 0.0f; this->unk29E = this->actor.yawTowardsPlayer; } if (this->unk2AC == 2) { // Note: This variable is only ever set to 1. @@ -244,7 +244,7 @@ void EnBaisen_Update(Actor* thisx, GlobalContext* globalCtx) { s32 pad; EnBaisen* this = THIS; - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); if (this->unusedCounter != 0) { this->unusedCounter--; } @@ -284,6 +284,6 @@ void EnBaisen_Draw(Actor* thisx, GlobalContext* globalCtx) { EnBaisen* this = THIS; func_8012C28C(globalCtx->state.gfxCtx); - SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, - EnBaisen_OverrideLimbDraw, NULL, &this->actor); + SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, + EnBaisen_OverrideLimbDraw, NULL, &this->actor); } diff --git a/src/overlays/actors/ovl_En_Bigpo/z_en_bigpo.c b/src/overlays/actors/ovl_En_Bigpo/z_en_bigpo.c index a639a10b8..2cb90b98d 100644 --- a/src/overlays/actors/ovl_En_Bigpo/z_en_bigpo.c +++ b/src/overlays/actors/ovl_En_Bigpo/z_en_bigpo.c @@ -74,8 +74,6 @@ void EnBigpo_WaitingForDampe(EnBigpo* this, GlobalContext* globalCtx); void EnBigpo_RevealedFireGrowing(EnBigpo* this, GlobalContext* globalCtx); // draw funcs -void EnBigpo_PostLimbDraw(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, struct Actor* actor, - Gfx** gfx); void EnBigpo_DrawMainBigpo(Actor* thisx, GlobalContext* globalCtx); void EnBigpo_DrawScoopSoul(Actor* thisx, GlobalContext* globalCtx); void EnBigpo_DrawLantern(Actor* thisx, GlobalContext* globalCtx); @@ -404,7 +402,7 @@ void EnBigpo_SpawnCutsceneStage4(EnBigpo* this, GlobalContext* globalCtx) { * big poe starts to visibly appear */ void EnBigpo_SpawnCutsceneStage5(EnBigpo* this) { - SkelAnime_ChangeAnimDefaultRepeat(&this->skelAnime, &D_06001360); + Animation_PlayLoop(&this->skelAnime, &D_06001360); this->actor.draw = EnBigpo_DrawMainBigpo; Actor_SetScale(&this->actor, 0.014f); Audio_PlayActorSound2(&this->actor, NA_SE_EN_STALKIDS_APPEAR); @@ -419,7 +417,7 @@ void EnBigpo_SpawnCutsceneStage6(EnBigpo* this, GlobalContext* globalCtx) { s32 i; s32 alphaPlus; // color alpha + 10 - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); this->actor.shape.rot.y += this->rotVelocity; alphaPlus = this->mainColor.a + 10; // decrease transparency func_80B61914(this); @@ -466,7 +464,7 @@ void EnBigpo_SpawnCutsceneStage8(EnBigpo* this, GlobalContext* globalCtx) { Actor* dampe; Camera* subCam; - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); this->idleTimer--; if (this->idleTimer == 0) { subCam = Play_GetCamera(globalCtx, this->cutsceneSubCamId); @@ -518,7 +516,7 @@ void EnBigpo_SetupWarpIn(EnBigpo* this, GlobalContext* globalCtx) { s16 randomYaw = (Rand_Next() >> 0x14) + this->actor.yawTowardsPlayer; Audio_PlayActorSound2(&this->actor, NA_SE_EN_STALKIDS_APPEAR); - SkelAnime_ChangeAnimDefaultRepeat(&this->skelAnime, &D_06001360); + Animation_PlayLoop(&this->skelAnime, &D_06001360); this->rotVelocity = 0x2000; this->actor.world.pos.x = (Math_SinS(randomYaw) * distance) + player->actor.world.pos.x; this->actor.world.pos.z = (Math_CosS(randomYaw) * distance) + player->actor.world.pos.z; @@ -545,7 +543,7 @@ void EnBigpo_WarpingIn(EnBigpo* this, GlobalContext* globalCtx) { } void EnBigpo_SetupIdleFlying(EnBigpo* this) { - SkelAnime_ChangeAnimTransitionRepeat(&this->skelAnime, &D_06000924, -5.0f); + Animation_MorphToLoop(&this->skelAnime, &D_06000924, -5.0f); // if poe missed attack, idle 4 seconds, otherwise its reappearing: attack immediately this->idleTimer = (this->actionFunc == EnBigpo_SpinningDown) ? 80 : 0; this->hoverHeightCycleTimer = 40; @@ -561,7 +559,7 @@ void EnBigpo_SetupIdleFlying(EnBigpo* this) { void EnBigpo_IdleFlying(EnBigpo* this, GlobalContext* globalCtx) { Player* player = GET_PLAYER(globalCtx); - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); DECR(this->idleTimer); // flight position calculations @@ -596,7 +594,7 @@ void EnBigpo_SetupSpinUp(EnBigpo* this) { } void EnBigpo_SpinningUp(EnBigpo* this, GlobalContext* globalCtx) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); this->rotVelocity += 0x200; EnBigpo_UpdateSpin(this); if (this->rotVelocity >= 0x3C00) { @@ -614,7 +612,7 @@ void EnBigpo_SpinAttack(EnBigpo* this, GlobalContext* globalCtx) { Player* player = GET_PLAYER(globalCtx); s16 yawDiff; - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); Math_StepToF(&this->actor.speedXZ, 10.0f, 1.0f); Math_SmoothStepToF(&this->actor.world.pos.y, player->actor.world.pos.y, 0.3f, 7.5f, 1.0f); EnBigpo_UpdateSpin(this); @@ -638,7 +636,7 @@ void EnBigpo_SetupSpinDown(EnBigpo* this) { void EnBigpo_SpinningDown(EnBigpo* this, GlobalContext* globalCtx) { Player* player = GET_PLAYER(globalCtx); - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); Math_SmoothStepToF(&this->actor.world.pos.y, player->actor.world.pos.y + 100.0f, 0.3f, 5.0f, 1.0f); Math_StepToF(&this->actor.speedXZ, 0.0f, 0.2f); if (Math_ScaledStepToS(&this->rotVelocity, 0, 0x200)) { @@ -656,7 +654,7 @@ void EnBigpo_SpinningDown(EnBigpo* this, GlobalContext* globalCtx) { * called by EnBigpo_ApplyDamage */ void EnBigpo_HitStun(EnBigpo* this) { - SkelAnime_ChangeAnimTransitionStop(&this->skelAnime, &D_06000454, -6.0f); + Animation_MorphToPlayOnce(&this->skelAnime, &D_06000454, -6.0f); func_800BCB70(&this->actor, 0x4000, 0xFF, 0, 0x10); this->collider.base.acFlags &= ~AC_ON; func_800BE504(&this->actor, &this->collider); @@ -669,7 +667,7 @@ void EnBigpo_HitStun(EnBigpo* this) { */ void EnBigpo_CheckHealth(EnBigpo* this, GlobalContext* globalCtx) { Math_StepToF(&this->actor.speedXZ, 0.0f, 0.5f); - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime)) { + if (SkelAnime_Update(&this->skelAnime)) { if (this->actor.colChkInfo.health == 0) { EnBigpo_SetupDeath(this); } else { @@ -1231,8 +1229,8 @@ void EnBigpo_UpdateFire(Actor* thisx, GlobalContext* globalCtx) { this->actionFunc(this, globalCtx); } -s32 EnBigpo_OverrideLimbDraw(struct GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, - struct Actor* actor, Gfx** gfx) { +s32 EnBigpo_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* actor, + Gfx** gfx) { EnBigpo* this = (EnBigpo*)actor; // not fully invisible if (!(this->mainColor.a != 0 && limbIndex != 7) || @@ -1259,36 +1257,37 @@ void EnBigpo_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, if (limbIndex == 7) { // we scale the vec3f... then do nothing with it? - SysMatrix_GetStateTranslationAndScaledY(1400.0f, &unusedVec); + Matrix_GetStateTranslationAndScaledY(1400.0f, &unusedVec); if ((this->actionFunc == EnBigpo_BurnAwayDeath) && (this->idleTimer > 18)) { - if (actor->scale.x != 0.0f) { - Matrix_Scale(0.014f / actor->scale.x, 0.014f / actor->scale.x, 0.014f / actor->scale.x, 1); + if (this->actor.scale.x != 0.0f) { + Matrix_Scale(0.014f / this->actor.scale.x, 0.014f / this->actor.scale.x, 0.014f / this->actor.scale.x, + 1); } } - SysMatrix_CopyCurrentState(&this->drawMtxF); + Matrix_CopyCurrentState(&this->drawMtxF); } limbByte = D_80B65078[limbIndex]; if (limbByte != -1) { if (limbByte < 3) { - SysMatrix_GetStateTranslation(&this->limbPos[limbByte]); + Matrix_GetStateTranslation(&this->limbPos[limbByte]); return; } if (limbByte == 3) { - SysMatrix_GetStateTranslationAndScaledX(3000.0f, &this->limbPos[limbByte]); + Matrix_GetStateTranslationAndScaledX(3000.0f, &this->limbPos[limbByte]); return; } if (limbByte == 4) { - SysMatrix_GetStateTranslationAndScaledY(-2000.0f, &this->limbPos[limbByte]); + Matrix_GetStateTranslationAndScaledY(-2000.0f, &this->limbPos[limbByte]); return; } v2ptr = &this->limbPos[limbByte + 1]; v1ptr = D_80B65084; - SysMatrix_GetStateTranslationAndScaledX(-4000.0f, &this->limbPos[limbByte]); + Matrix_GetStateTranslationAndScaledX(-4000.0f, &this->limbPos[limbByte]); for (i = limbByte + 1; i < ARRAY_COUNT(this->limbPos); i++) { - SysMatrix_MultiplyVector3fByState(v1ptr, v2ptr); + Matrix_MultiplyVector3fByState(v1ptr, v2ptr); v2ptr++; v1ptr++; } @@ -1310,8 +1309,8 @@ void EnBigpo_DrawMainBigpo(Actor* thisx, GlobalContext* globalCtx) { gSPSegment(&dispHead[2], 0x08, Gfx_EnvColor(globalCtx->state.gfxCtx, this->mainColor.r, this->mainColor.g, this->mainColor.b, this->mainColor.a)); - POLY_OPA_DISP = SkelAnime_Draw2(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, - EnBigpo_OverrideLimbDraw, EnBigpo_PostLimbDraw, &this->actor, &dispHead[3]); + POLY_OPA_DISP = SkelAnime_Draw(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, + EnBigpo_OverrideLimbDraw, EnBigpo_PostLimbDraw, &this->actor, &dispHead[3]); } else { dispHead = POLY_XLU_DISP; @@ -1320,15 +1319,15 @@ void EnBigpo_DrawMainBigpo(Actor* thisx, GlobalContext* globalCtx) { gSPSegment(&dispHead[2], 0x08, Gfx_EnvColor(globalCtx->state.gfxCtx, this->mainColor.r, this->mainColor.g, this->mainColor.b, this->mainColor.a)); - POLY_XLU_DISP = SkelAnime_Draw2(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, - EnBigpo_OverrideLimbDraw, EnBigpo_PostLimbDraw, &this->actor, &dispHead[3]); + POLY_XLU_DISP = SkelAnime_Draw(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, + EnBigpo_OverrideLimbDraw, EnBigpo_PostLimbDraw, &this->actor, &dispHead[3]); } // 71.428566f might be 500/7 context unknown func_800BE680(globalCtx, &this->actor, this->limbPos, 9, this->actor.scale.x * 71.428566f * this->unk220, 0, this->unk21C, 0x14); - SysMatrix_SetCurrentState(&this->drawMtxF); + Matrix_SetCurrentState(&this->drawMtxF); EnBigpo_DrawLantern(&this->actor, globalCtx); if (this->actionFunc == EnBigpo_SpawnCutsceneStage6) { EnBigpo_DrawCircleFlames(&this->actor, globalCtx); @@ -1404,7 +1403,7 @@ void EnBigpo_DrawLantern(Actor* thisx, GlobalContext* globalCtx) { gSPSegment(&dispHead[1], 0x0A, Gfx_EnvColor(globalCtx->state.gfxCtx, 160, 0, 255, this->mainColor.a)); - SysMatrix_GetStateTranslationAndScaledY(1400.0f, &vec2); + Matrix_GetStateTranslationAndScaledY(1400.0f, &vec2); Lights_PointGlowSetInfo(&this->fires[0].info, vec2.x + vec1.x, vec2.y + vec1.y, vec2.z + vec1.z, this->lanternColor.r, this->lanternColor.g, this->lanternColor.b, this->lanternColor.a); @@ -1433,7 +1432,7 @@ void EnBigpo_DrawCircleFlames(Actor* thisx, GlobalContext* globalCtx) { MtxF* mtfxPtr; s32 i; - mtfxPtr = SysMatrix_GetCurrentState(); + mtfxPtr = Matrix_GetCurrentState(); OPEN_DISPS(globalCtx->state.gfxCtx); func_8012C2DC(globalCtx->state.gfxCtx); diff --git a/src/overlays/actors/ovl_En_Bji_01/z_en_bji_01.c b/src/overlays/actors/ovl_En_Bji_01/z_en_bji_01.c index 5cce23a9c..45370609b 100644 --- a/src/overlays/actors/ovl_En_Bji_01/z_en_bji_01.c +++ b/src/overlays/actors/ovl_En_Bji_01/z_en_bji_01.c @@ -26,9 +26,8 @@ void func_809CD6C0(EnBji01* this, GlobalContext* globalCtx); void func_809CD70C(EnBji01* this, GlobalContext* globalCtx); void func_809CD77C(EnBji01* this, GlobalContext* globalCtx); -s32 EnBji01_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, - Actor* actor); -void EnBji01_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* actor); +s32 EnBji01_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* arg); +void EnBji01_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* arg); extern AnimationHeader D_06000FDC; extern AnimationHeader D_06005B58; @@ -297,7 +296,7 @@ void EnBji01_DialogueHandler(EnBji01* this, GlobalContext* globalCtx) { func_809CCE98(this, globalCtx); break; } - if ((this->animationIndex == 3) && (this->skelAnime.animCurrentFrame == this->skelAnime.animFrameCount)) { + if ((this->animationIndex == 3) && (this->skelAnime.curFrame == this->skelAnime.endFrame)) { func_8013E1C8(&this->skelAnime, D_809CDC7C, 2, &this->animationIndex); } } @@ -339,8 +338,8 @@ void EnBji01_Init(Actor* thisx, GlobalContext* globalCtx) { EnBji01* this = THIS; ActorShape_Init(&this->actor.shape, 0.0f, func_800B3FC0, 30.0f); - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_0600578C, &D_06000FDC, this->jointTable, this->morphTable, - BJI_LIMB_MAX); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_0600578C, &D_06000FDC, this->jointTable, this->morphTable, + BJI_LIMB_MAX); Collider_InitAndSetCylinder(globalCtx, &this->collider, &this->actor, &sCylinderInit); this->actor.colChkInfo.mass = MASS_IMMOVABLE; @@ -386,7 +385,7 @@ void EnBji01_Update(Actor* thisx, GlobalContext* globalCtx) { this->actionFunc(this, globalCtx); Actor_UpdateBgCheckInfo(globalCtx, (Actor*)this, 0.0f, 0.0f, 0.0f, 4U); - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); if (this->blinkTimer-- <= 0) { if (--this->blinkSeqIndex < 0) { @@ -438,7 +437,7 @@ void EnBji01_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, sp20.x += temp_f4 * 0.1f; sp20.y += temp_f4 * 0.1f; sp20.z += temp_f4 * 0.1f; - SysMatrix_MultiplyVector3fByState(&sp20, &this->actor.focus.pos); + Matrix_MultiplyVector3fByState(&sp20, &this->actor.focus.pos); } } @@ -449,7 +448,7 @@ void EnBji01_Draw(Actor* thisx, GlobalContext* globalCtx) { OPEN_DISPS(globalCtx->state.gfxCtx); func_8012C28C(globalCtx->state.gfxCtx); gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(sEyeTextures[this->eyeTexIndex])); - SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, - EnBji01_OverrideLimbDraw, EnBji01_PostLimbDraw, &this->actor); + SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, + EnBji01_OverrideLimbDraw, EnBji01_PostLimbDraw, &this->actor); CLOSE_DISPS(globalCtx->state.gfxCtx); } diff --git a/src/overlays/actors/ovl_En_Bu/z_en_bu.c b/src/overlays/actors/ovl_En_Bu/z_en_bu.c index ad001d6e0..8a7d39086 100644 --- a/src/overlays/actors/ovl_En_Bu/z_en_bu.c +++ b/src/overlays/actors/ovl_En_Bu/z_en_bu.c @@ -47,11 +47,11 @@ void EnBu_Draw(Actor* thisx, GlobalContext* globalCtx) { OPEN_DISPS(globalCtx->state.gfxCtx); - SysMatrix_InsertTranslation(this->actor.world.pos.x, this->actor.world.pos.y, this->actor.world.pos.z, 0); - SysMatrix_InsertZRotation_s(this->actor.shape.rot.z, 1); + Matrix_InsertTranslation(this->actor.world.pos.x, this->actor.world.pos.y, this->actor.world.pos.z, MTXMODE_NEW); + Matrix_InsertZRotation_s(this->actor.shape.rot.z, 1); Matrix_RotateY(this->actor.shape.rot.y, 1); - SysMatrix_InsertXRotation_s(this->actor.shape.rot.x, 1); - Matrix_Scale(0.01f, 0.01f, 0.01f, 1); + Matrix_InsertXRotation_s(this->actor.shape.rot.x, 1); + Matrix_Scale(0.01f, 0.01f, 0.01f, MTXMODE_APPLY); gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_OPA_DISP++, this->displayListPtr); diff --git a/src/overlays/actors/ovl_En_Cha/z_en_cha.c b/src/overlays/actors/ovl_En_Cha/z_en_cha.c index 1df7f22e1..9a1280c29 100644 --- a/src/overlays/actors/ovl_En_Cha/z_en_cha.c +++ b/src/overlays/actors/ovl_En_Cha/z_en_cha.c @@ -118,7 +118,7 @@ void EnCha_Draw(Actor* thisx, GlobalContext* globalCtx) { EnCha* this = THIS; func_800BDFC0(globalCtx, D_06000710); - SysMatrix_InsertTranslation(-1094.0f, 4950.0f, 9.0f, 1); - SysMatrix_InsertXRotation_s(this->actor.home.rot.x, 1); + Matrix_InsertTranslation(-1094.0f, 4950.0f, 9.0f, MTXMODE_APPLY); + Matrix_InsertXRotation_s(this->actor.home.rot.x, 1); func_800BDFC0(globalCtx, D_06000958); } diff --git a/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.c b/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.c index e0c520f9f..b7ad8e6f3 100644 --- a/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.c +++ b/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.c @@ -416,9 +416,9 @@ void EnClearTag_Init(Actor* thisx, GlobalContext* globalCtx) { for (i = 0; i < 54; i++) { lightRayMaxScale = sLightRayMaxScale[thisx->params] + Rand_ZeroFloat(sLightRayMaxScale[thisx->params]); - SysMatrix_InsertYRotation_f(Rand_ZeroFloat(M_PI * 2), 0); - SysMatrix_RotateStateAroundXAxis(Rand_ZeroFloat(M_PI * 2)); - SysMatrix_GetStateTranslationAndScaledZ(lightRayMaxScale, &vel); + Matrix_InsertYRotation_f(Rand_ZeroFloat(M_PI * 2), 0); + Matrix_RotateStateAroundXAxis(Rand_ZeroFloat(M_PI * 2)); + Matrix_GetStateTranslationAndScaledZ(lightRayMaxScale, &vel); accel.x = vel.x * -0.03f; accel.y = vel.y * -0.03f; accel.z = vel.z * -0.03f; @@ -489,9 +489,9 @@ void EnClearTag_Init(Actor* thisx, GlobalContext* globalCtx) { pos = this->actor.world.pos; for (i = 0; i < 44; i++) { lightRayMaxScale = sLightRayMaxScale[thisx->params] + Rand_ZeroFloat(sLightRayMaxScale[thisx->params]); - SysMatrix_InsertYRotation_f(Rand_ZeroFloat(2 * M_PI), 0); - SysMatrix_RotateStateAroundXAxis(Rand_ZeroFloat(2 * M_PI)); - SysMatrix_GetStateTranslationAndScaledZ(lightRayMaxScale, &vel); + Matrix_InsertYRotation_f(Rand_ZeroFloat(2 * M_PI), 0); + Matrix_RotateStateAroundXAxis(Rand_ZeroFloat(2 * M_PI)); + Matrix_GetStateTranslationAndScaledZ(lightRayMaxScale, &vel); accel.x = vel.x * -0.03f; accel.y = vel.y * -0.03f; accel.z = vel.z * -0.03f; @@ -798,10 +798,10 @@ void EnClearTag_DrawEffects(Actor* thisx, GlobalContext* globalCtx) { } // Draw the debris effect. - SysMatrix_InsertTranslation(effect->position.x, effect->position.y, effect->position.z, MTXMODE_NEW); + Matrix_InsertTranslation(effect->position.x, effect->position.y, effect->position.z, MTXMODE_NEW); Matrix_Scale(effect->scale, effect->scale, effect->scale, MTXMODE_APPLY); - SysMatrix_InsertYRotation_f(effect->rotationY, MTXMODE_APPLY); - SysMatrix_RotateStateAroundXAxis(effect->rotationX); + Matrix_InsertYRotation_f(effect->rotationY, MTXMODE_APPLY); + Matrix_RotateStateAroundXAxis(effect->rotationX); gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_OPA_DISP++, gClearTagDebrisEffectDL); } @@ -817,7 +817,7 @@ void EnClearTag_DrawEffects(Actor* thisx, GlobalContext* globalCtx) { gDPSetEnvColor(POLY_XLU_DISP++, 255, 255, 255, (s8)effect->primColor.a); gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, 255, 255, 255, (s8)effect->primColor.a); func_800C0094(this->actor.floorPoly, effect->position.x, effect->position.y, effect->position.z, &mtxF); - SysMatrix_SetCurrentState(&mtxF); + Matrix_SetCurrentState(&mtxF); Matrix_Scale(effect->scale, 1.0f, effect->scale, MTXMODE_APPLY); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_XLU_DISP++, D_04030100); @@ -842,7 +842,7 @@ void EnClearTag_DrawEffects(Actor* thisx, GlobalContext* globalCtx) { gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, 255, 255, 200, (s8)(effect->primColor.a * 0.7f)); func_800C0094(this->actor.floorPoly, effect->position.x, this->actor.floorHeight, effect->position.z, &mtxF); - SysMatrix_SetCurrentState(&mtxF); + Matrix_SetCurrentState(&mtxF); Matrix_Scale(effect->scale * 3.0f, 1.0f, effect->scale * 3.0f, MTXMODE_APPLY); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_XLU_DISP++, gClearTagFlashEffectGroundDL); @@ -870,10 +870,10 @@ void EnClearTag_DrawEffects(Actor* thisx, GlobalContext* globalCtx) { gSPSegment( POLY_XLU_DISP++, 0x08, Gfx_TwoTexScroll(globalCtx->state.gfxCtx, 0, 0, -effect->actionTimer * 5, 32, 64, 1, 0, 0, 32, 32)); - SysMatrix_InsertTranslation(effect->position.x, effect->position.y, effect->position.z, MTXMODE_NEW); - SysMatrix_NormalizeXYZ(&globalCtx->mf_187FC); + Matrix_InsertTranslation(effect->position.x, effect->position.y, effect->position.z, MTXMODE_NEW); + Matrix_NormalizeXYZ(&globalCtx->mf_187FC); Matrix_Scale(effect->smokeScaleX * effect->scale, effect->smokeScaleY * effect->scale, 1.0f, MTXMODE_APPLY); - SysMatrix_InsertTranslation(0.0f, 20.0f, 0.0f, MTXMODE_APPLY); + Matrix_InsertTranslation(0.0f, 20.0f, 0.0f, MTXMODE_APPLY); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_XLU_DISP++, gClearTagFireEffectDL); } @@ -896,8 +896,8 @@ void EnClearTag_DrawEffects(Actor* thisx, GlobalContext* globalCtx) { gSPSegment( POLY_XLU_DISP++, 0x08, Gfx_TwoTexScroll(globalCtx->state.gfxCtx, 0, 0, -effect->actionTimer * 15, 32, 64, 1, 0, 0, 32, 32)); - SysMatrix_InsertTranslation(effect->position.x, effect->position.y, effect->position.z, MTXMODE_NEW); - SysMatrix_NormalizeXYZ(&globalCtx->mf_187FC); + Matrix_InsertTranslation(effect->position.x, effect->position.y, effect->position.z, MTXMODE_NEW); + Matrix_NormalizeXYZ(&globalCtx->mf_187FC); Matrix_Scale(effect->scale, effect->scale, 1.0f, MTXMODE_APPLY); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_XLU_DISP++, gClearTagFireEffectDL); @@ -918,8 +918,8 @@ void EnClearTag_DrawEffects(Actor* thisx, GlobalContext* globalCtx) { // Draw the flash billboard effect. gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, 255, 255, 200, (s8)effect->primColor.a); - SysMatrix_InsertTranslation(effect->position.x, effect->position.y, effect->position.z, MTXMODE_NEW); - SysMatrix_NormalizeXYZ(&globalCtx->mf_187FC); + Matrix_InsertTranslation(effect->position.x, effect->position.y, effect->position.z, MTXMODE_NEW); + Matrix_NormalizeXYZ(&globalCtx->mf_187FC); Matrix_Scale(2.0f * effect->scale, 2.0f * effect->scale, 1.0f, MTXMODE_APPLY); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_XLU_DISP++, gClearTagFlashEffectDL); @@ -943,12 +943,12 @@ void EnClearTag_DrawEffects(Actor* thisx, GlobalContext* globalCtx) { // Draw the light ray effect. gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, (u8)effect->primColor.r, (u8)effect->primColor.g, (u8)effect->primColor.b, (u8)effect->primColor.a); - SysMatrix_InsertTranslation(effect->position.x, effect->position.y, effect->position.z, MTXMODE_NEW); - SysMatrix_InsertYRotation_f(effect->rotationY, MTXMODE_APPLY); - SysMatrix_RotateStateAroundXAxis(effect->rotationX); - SysMatrix_InsertZRotation_f(effect->rotationZ, MTXMODE_APPLY); + Matrix_InsertTranslation(effect->position.x, effect->position.y, effect->position.z, MTXMODE_NEW); + Matrix_InsertYRotation_f(effect->rotationY, MTXMODE_APPLY); + Matrix_RotateStateAroundXAxis(effect->rotationX); + Matrix_InsertZRotation_f(effect->rotationZ, MTXMODE_APPLY); Matrix_Scale(effect->scale * 0.5f, effect->scale * 0.5f, effect->maxScale * effect->scale, MTXMODE_APPLY); - SysMatrix_RotateStateAroundXAxis(M_PI / 2); + Matrix_RotateStateAroundXAxis(M_PI / 2); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_XLU_DISP++, gClearTagLightRayEffectDL); } @@ -968,8 +968,8 @@ void EnClearTag_DrawEffects(Actor* thisx, GlobalContext* globalCtx) { // Apply material 16 times along a circle to give the appearance of a splash for (j = 0; j < 16; j++) { - SysMatrix_InsertYRotation_f(2.0f * (j * M_PI) * (1.0f / 16.0f), MTXMODE_NEW); - SysMatrix_GetStateTranslationAndScaledZ(effect->maxScale, &vec); + Matrix_InsertYRotation_f(2.0f * (j * M_PI) * (1.0f / 16.0f), MTXMODE_NEW); + Matrix_GetStateTranslationAndScaledZ(effect->maxScale, &vec); /** * Get the water surface at point (`x`, `ySurface`, `z`). `ySurface` doubles as position y input * returns true if point is within the xz boundaries of an active water box, else false @@ -980,10 +980,10 @@ void EnClearTag_DrawEffects(Actor* thisx, GlobalContext* globalCtx) { &ySurface, &waterBox)) { if ((effect->position.y - ySurface) < 200.0f) { // Draw the splash effect. - SysMatrix_InsertTranslation(effect->position.x + vec.x, ySurface, effect->position.z + vec.z, - MTXMODE_NEW); - SysMatrix_InsertYRotation_f(2.0f * (j * M_PI) * (1.0f / 16.0f), MTXMODE_APPLY); - SysMatrix_RotateStateAroundXAxis(effect->rotationX); + Matrix_InsertTranslation(effect->position.x + vec.x, ySurface, effect->position.z + vec.z, + MTXMODE_NEW); + Matrix_InsertYRotation_f(2.0f * (j * M_PI) * (1.0f / 16.0f), MTXMODE_APPLY); + Matrix_RotateStateAroundXAxis(effect->rotationX); Matrix_Scale(effect->scale, effect->scale, effect->scale, MTXMODE_APPLY); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_XLU_DISP++, D_0403A0F0); diff --git a/src/overlays/actors/ovl_En_Dai/z_en_dai.c b/src/overlays/actors/ovl_En_Dai/z_en_dai.c index 2bb487064..fb917742c 100644 --- a/src/overlays/actors/ovl_En_Dai/z_en_dai.c +++ b/src/overlays/actors/ovl_En_Dai/z_en_dai.c @@ -91,7 +91,7 @@ void func_80B3E168(EnDaiParticle* particle, GlobalContext* globalCtx2) { isDisplayListSet = true; } - SysMatrix_StatePush(); + Matrix_StatePush(); alpha = (particle->unk_02 / (f32)particle->unk_01); alpha *= 255.0f; @@ -102,15 +102,15 @@ void func_80B3E168(EnDaiParticle* particle, GlobalContext* globalCtx2) { Gfx_TwoTexScroll(globalCtx->state.gfxCtx, 0, (particle->unk_02 + (i * 3)) * 3, (particle->unk_02 + (i * 3)) * 15, 0x20, 0x40, 1, 0, 0, 0x20, 0x20)); - SysMatrix_InsertTranslation(particle->unk_10.x, particle->unk_10.y, particle->unk_10.z, MTXMODE_NEW); - SysMatrix_NormalizeXYZ(&globalCtx->mf_187FC); + Matrix_InsertTranslation(particle->unk_10.x, particle->unk_10.y, particle->unk_10.z, MTXMODE_NEW); + Matrix_NormalizeXYZ(&globalCtx->mf_187FC); Matrix_Scale(particle->unk_34, particle->unk_34, 1.0f, MTXMODE_APPLY); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_XLU_DISP++, D_060002E8); - SysMatrix_StatePop(); + Matrix_StatePop(); } } @@ -280,8 +280,7 @@ s16 func_80B3E8BC(EnDai* this, s32 arg1) { } while (i < end) { - if ((D_80B3FCB4[i] <= this->skelAnime.animCurrentFrame) && - (D_80B3FCE4[i] >= this->skelAnime.animCurrentFrame)) { + if ((D_80B3FCB4[i] <= this->skelAnime.curFrame) && (D_80B3FCE4[i] >= this->skelAnime.curFrame)) { return D_80B3FD14[i]; } i++; @@ -297,7 +296,7 @@ s32 func_80B3E96C(EnDai* this, GlobalContext* globalCtx) { Vec3f sp50; if ((DECR(this->unk_1DA) == 0) && - ((this->unk_1DC == 0) || func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount))) { + ((this->unk_1DC == 0) || Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame))) { switch (this->unk_1DC) { case 0: func_80B3E5DC(this, 2); @@ -373,10 +372,10 @@ s32 func_80B3EC84(EnDai* this) { s32 ret = false; for (i = 0; i < ARRAY_COUNT(D_80B3FD6C); i++) { - if ((this->unk_1DC == D_80B3FD6C[i]) && (D_80B3FD2C[i] < this->skelAnime.animCurrentFrame) && - (D_80B3FD4C[i] >= this->skelAnime.animCurrentFrame)) { - func_80B3EC10(D_80B3FD2C[i], D_80B3FD7C[i], D_80B3FD4C[i], D_80B3FD7C[i + 1], - this->skelAnime.animCurrentFrame, &this->unk_1F0); + if ((this->unk_1DC == D_80B3FD6C[i]) && (D_80B3FD2C[i] < this->skelAnime.curFrame) && + (D_80B3FD4C[i] >= this->skelAnime.curFrame)) { + func_80B3EC10(D_80B3FD2C[i], D_80B3FD7C[i], D_80B3FD4C[i], D_80B3FD7C[i + 1], this->skelAnime.curFrame, + &this->unk_1F0); ret = true; break; } @@ -400,10 +399,10 @@ s32 func_80B3ED88(EnDai* this) { s32 ret = false; for (i = 0; i < ARRAY_COUNT(D_80B3FE00); i++) { - if ((this->unk_1DC == D_80B3FE00[i]) && (D_80B3FDE8[i] < this->skelAnime.animCurrentFrame) && - (D_80B3FDF4[i] >= this->skelAnime.animCurrentFrame)) { - func_80B3EC10(D_80B3FDE8[i], D_80B3FE08[i], D_80B3FDF4[i], D_80B3FE08[i + 1], - this->skelAnime.animCurrentFrame, &this->unk_1FC); + if ((this->unk_1DC == D_80B3FE00[i]) && (D_80B3FDE8[i] < this->skelAnime.curFrame) && + (D_80B3FDF4[i] >= this->skelAnime.curFrame)) { + func_80B3EC10(D_80B3FDE8[i], D_80B3FE08[i], D_80B3FDF4[i], D_80B3FE08[i + 1], this->skelAnime.curFrame, + &this->unk_1FC); ret = true; break; } @@ -496,24 +495,24 @@ void func_80B3F044(EnDai* this, GlobalContext* globalCtx) { if (globalCtx->csCtx.frames == 360) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_DAIGOLON_SLEEP3 - SFX_FLAG); } - if (func_801378B8(&this->skelAnime, 43.0f)) { + if (Animation_OnFrame(&this->skelAnime, 43.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EV_GORON_BOUND_1); } this->unk_1D6 = func_80B3E8BC(this, this->unk_1CC); break; case 3: - if (func_801378B8(&this->skelAnime, 6.0f)) { + if (Animation_OnFrame(&this->skelAnime, 6.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_DAIGOLON_SLEEP1); } this->unk_1D6 = func_80B3E8BC(this, this->unk_1CC); break; case 4: - if (func_801378B8(&this->skelAnime, 30.0f)) { + if (Animation_OnFrame(&this->skelAnime, 30.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_DAIGOLON_SLEEP2); } - if (func_801378B8(&this->skelAnime, 35.0f)) { + if (Animation_OnFrame(&this->skelAnime, 35.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EV_GORON_BOUND_0); } this->unk_1D6 = func_80B3E8BC(this, this->unk_1CC); @@ -527,7 +526,7 @@ void EnDai_Init(Actor* thisx, GlobalContext* globalCtx) { EnDai* this = THIS; ActorShape_Init(&this->actor.shape, 0.0f, func_800B3FC0, 0.0f); - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_060130D0, NULL, this->jointTable, this->morphTable, 19); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_060130D0, NULL, this->jointTable, this->morphTable, 19); this->unk_A70 = -1; func_80B3E5DC(this, 0); Actor_SetScale(&this->actor, 0.2f); @@ -567,13 +566,13 @@ void EnDai_Update(Actor* thisx, GlobalContext* globalCtx) { if (!func_80B3E7C8(this, globalCtx) && func_80B3E69C(this, globalCtx)) { func_80B3F044(this, globalCtx); - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); func_80B3E834(this); func_80B3E460(this); } else { this->actionFunc(this, globalCtx); if (!(player->stateFlags2 & 0x8000000)) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); func_80B3E834(this); if (!(this->unk_1CE & 0x200)) { func_8013C964(&this->actor, globalCtx, 0.0f, 0.0f, 0, this->unk_1CE & 7); @@ -592,7 +591,7 @@ s32 func_80B3F598(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* p } if (limbIndex == 11) { - SysMatrix_MultiplyVector3fByState(&D_801D15B0, &this->unk_1E4); + Matrix_MultiplyVector3fByState(&D_801D15B0, &this->unk_1E4); } if (limbIndex == 10) { @@ -614,15 +613,15 @@ void func_80B3F614(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* D_80B3FE4C.x = sREG(0); D_80B3FE4C.y = sREG(1); D_80B3FE4C.z = sREG(2); - SysMatrix_MultiplyVector3fByState(&D_80B3FE4C, &this->actor.focus.pos); + Matrix_MultiplyVector3fByState(&D_80B3FE4C, &this->actor.focus.pos); Math_Vec3s_Copy(&this->actor.focus.rot, &this->actor.world.rot); - SysMatrix_CopyCurrentState(&sp24); + Matrix_CopyCurrentState(&sp24); func_8018219C(&sp24, &sp64, 0); this->unk_1D4 = BINANG_SUB(sp64.y, 0x4000); break; case 10: - SysMatrix_CopyCurrentState(&this->unk_18C); + Matrix_CopyCurrentState(&this->unk_18C); break; } } @@ -671,10 +670,10 @@ void func_80B3F78C(EnDai* this, GlobalContext* globalCtx) { gSPSegment(POLY_XLU_DISP++, 0x08, Lib_SegmentedToVirtual(D_80B3FE58[this->unk_1D6])); POLY_XLU_DISP = - func_8013AB00(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, + func_8013AB00(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, func_80B3F598, func_80B3F614, func_80B3F6EC, &this->actor, POLY_XLU_DISP); if (this->unk_1CE & 0x40) { - SysMatrix_SetCurrentState(&this->unk_18C); + Matrix_SetCurrentState(&this->unk_18C); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_XLU_DISP++, D_0600C538); @@ -703,9 +702,9 @@ void func_80B3F920(EnDai* this, GlobalContext* globalCtx) { gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(D_80B3FE70[this->unk_1D6])); POLY_OPA_DISP = - func_8013AB00(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, + func_8013AB00(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, func_80B3F598, func_80B3F614, func_80B3F6EC, &this->actor, POLY_OPA_DISP); - SysMatrix_SetCurrentState(&this->unk_18C); + Matrix_SetCurrentState(&this->unk_18C); gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_OPA_DISP++, D_0600C538); @@ -722,9 +721,9 @@ void func_80B3F920(EnDai* this, GlobalContext* globalCtx) { gSPSegment(POLY_XLU_DISP++, 0x08, Lib_SegmentedToVirtual(D_80B3FE70[this->unk_1D6])); POLY_XLU_DISP = - func_8013AB00(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, + func_8013AB00(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, func_80B3F598, func_80B3F614, func_80B3F6EC, &this->actor, POLY_XLU_DISP); - SysMatrix_SetCurrentState(&this->unk_18C); + Matrix_SetCurrentState(&this->unk_18C); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_XLU_DISP++, D_0600C538); diff --git a/src/overlays/actors/ovl_En_Daiku/z_en_daiku.c b/src/overlays/actors/ovl_En_Daiku/z_en_daiku.c index c07c78398..40eac8099 100644 --- a/src/overlays/actors/ovl_En_Daiku/z_en_daiku.c +++ b/src/overlays/actors/ovl_En_Daiku/z_en_daiku.c @@ -108,18 +108,18 @@ void EnDaiku_Init(Actor* thisx, GlobalContext* globalCtx) { this->unk_27E = this->unk_278 * 4 + 4; case ENDAIKU_PARAMS_FF_1: - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_0600A850, &D_06002FA0, this->jointTable, this->morphTable, - 17); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_0600A850, &D_06002FA0, this->jointTable, + this->morphTable, 17); break; case ENDAIKU_PARAMS_FF_2: - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_0600A850, &D_0600B690, this->jointTable, this->morphTable, - 17); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_0600A850, &D_0600B690, this->jointTable, + this->morphTable, 17); break; case ENDAIKU_PARAMS_FF_3: - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_0600A850, &D_06001114, this->jointTable, this->morphTable, - 17); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_0600A850, &D_06001114, this->jointTable, + this->morphTable, 17); break; } @@ -141,8 +141,8 @@ void func_8094373C(EnDaiku* this, s32 arg1) { 0, 0, 0, 0, 2, 0, 0, 2, 2, }; - this->unk_284 = SkelAnime_GetFrameCount(&D_809440A4[arg1]->common); - SkelAnime_ChangeAnim(&this->skelAnime, D_809440A4[arg1], 1.0f, 0.0f, this->unk_284, D_809440C8[arg1], -4.0f); + this->unk_284 = Animation_GetLastFrame(D_809440A4[arg1]); + Animation_Change(&this->skelAnime, D_809440A4[arg1], 1.0f, 0.0f, this->unk_284, D_809440C8[arg1], -4.0f); } void func_809437C8(EnDaiku* this) { @@ -179,7 +179,7 @@ void func_80943820(EnDaiku* this) { } void func_809438F8(EnDaiku* this, GlobalContext* globalCtx) { - f32 currentFrame = this->skelAnime.animCurrentFrame; + f32 currentFrame = this->skelAnime.curFrame; s32 pad; s32 day = gSaveContext.day - 1; s32 pad2; @@ -245,7 +245,7 @@ void func_80943BC0(EnDaiku* this) { } void func_80943BDC(EnDaiku* this, GlobalContext* globalCtx) { - f32 currentFrame = this->skelAnime.animCurrentFrame; + f32 currentFrame = this->skelAnime.curFrame; if ((this->unk_278 == ENDAIKU_PARAMS_FF_2) && (this->unk_284 <= currentFrame)) { if (Rand_ZeroOne() < 0.5f) { @@ -266,7 +266,7 @@ void EnDaiku_Update(Actor* thisx, GlobalContext* globalCtx) { s32 pad; if (this->unk_27E == 0) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); } if ((this->unk_278 == ENDAIKU_PARAMS_FF_0) && (gSaveContext.day == 3) && (gSaveContext.isNight)) { @@ -353,8 +353,8 @@ void EnDaiku_Draw(Actor* thisx, GlobalContext* globalCtx) { break; } - SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, - func_80943E18, func_80943E60, &this->actor); + SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, + func_80943E18, func_80943E60, &this->actor); CLOSE_DISPS(globalCtx->state.gfxCtx); } diff --git a/src/overlays/actors/ovl_En_Daiku2/z_en_daiku2.c b/src/overlays/actors/ovl_En_Daiku2/z_en_daiku2.c index 9e34154a2..daa159788 100644 --- a/src/overlays/actors/ovl_En_Daiku2/z_en_daiku2.c +++ b/src/overlays/actors/ovl_En_Daiku2/z_en_daiku2.c @@ -96,7 +96,7 @@ void EnDaiku2_Init(Actor* thisx, GlobalContext* globalCtx) { this->actor.colChkInfo.mass = MASS_IMMOVABLE; ActorShape_Init(&this->actor.shape, 0.0f, func_800B3FC0, 40.0f); - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_0600A850, &D_06002FA0, this->jointTable, this->morphTable, 17); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_0600A850, &D_06002FA0, this->jointTable, this->morphTable, 17); this->actor.targetMode = 0; Collider_InitAndSetCylinder(globalCtx, &this->collider, &this->actor, &sCylinderInit); this->unk_278 = ENDAIKU2_GET_7F(&this->actor); @@ -144,12 +144,12 @@ void func_80BE6408(EnDaiku2* this, s32 arg1) { f32 sp34 = 1.0f; this->unk_276 = arg1; - this->unk_284 = SkelAnime_GetFrameCount(&sAnimations[this->unk_276]->common); + this->unk_284 = Animation_GetLastFrame(sAnimations[this->unk_276]); if (this->unk_276 == 3) { sp34 = 2.0f; } - SkelAnime_ChangeAnim(&this->skelAnime, sAnimations[this->unk_276], sp34, 0.0f, this->unk_284, - D_80BE7958[this->unk_276], -4.0f); + Animation_Change(&this->skelAnime, sAnimations[this->unk_276], sp34, 0.0f, this->unk_284, D_80BE7958[this->unk_276], + -4.0f); } s32 func_80BE64C0(EnDaiku2* this, GlobalContext* globalCtx) { @@ -212,7 +212,7 @@ void func_80BE65B4(EnDaiku2* this, GlobalContext* globalCtx) { } void func_80BE66E4(EnDaiku2* this, GlobalContext* globalCtx) { - f32 sp9C = this->skelAnime.animCurrentFrame; + f32 sp9C = this->skelAnime.curFrame; s32 sp98 = gSaveContext.day - 1; s32 i; Vec3f sp88; @@ -244,7 +244,7 @@ void func_80BE66E4(EnDaiku2* this, GlobalContext* globalCtx) { } func_800B8614(&this->actor, globalCtx, 80.0f); - if ((this->unk_276 == 8) && func_801378B8(&this->skelAnime, 6.0f)) { + if ((this->unk_276 == 8) && Animation_OnFrame(&this->skelAnime, 6.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EV_ROCK_BROKEN); for (i = 0; i < 10; i++) { @@ -274,8 +274,8 @@ void func_80BE66E4(EnDaiku2* this, GlobalContext* globalCtx) { if ((this->unk_276 == 5) || (this->unk_276 == 9)) { func_80BE6408(this, 10); } else if ((this->unk_276 == 10) && (this->unk_284 <= sp9C)) { - this->unk_284 = SkelAnime_GetFrameCount(&D_06002134.common); - SkelAnime_ChangeAnim(&this->skelAnime, &D_06002134, -1.0f, this->unk_284, 0.0f, 2, -4.0f); + this->unk_284 = Animation_GetLastFrame(&D_06002134); + Animation_Change(&this->skelAnime, &D_06002134, -1.0f, this->unk_284, 0.0f, 2, -4.0f); this->unk_276 = 11; } else if ((this->unk_276 == 11) && (sp9C <= 0.0f)) { func_80BE6408(this, 8); @@ -371,7 +371,7 @@ void func_80BE6EB0(EnDaiku2* this) { } void func_80BE6EF0(EnDaiku2* this, GlobalContext* globalCtx) { - f32 sp5C = this->skelAnime.animCurrentFrame; + f32 sp5C = this->skelAnime.curFrame; s32 pad[4]; Vec3f sp40; s16 var; @@ -440,7 +440,7 @@ void func_80BE71A0(EnDaiku2* this) { } void func_80BE71D8(EnDaiku2* this, GlobalContext* globalCtx) { - f32 currentFrame = this->skelAnime.animCurrentFrame; + f32 currentFrame = this->skelAnime.curFrame; if (func_80BE64C0(this, globalCtx)) { func_80BE6CFC(this); @@ -457,7 +457,7 @@ void EnDaiku2_Update(Actor* thisx, GlobalContext* globalCtx) { EnDaiku2* this = THIS; s32 pad; - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); this->actionFunc(this, globalCtx); this->actor.shape.rot.y = this->actor.world.rot.y; Actor_SetHeight(&this->actor, 65.0f); @@ -496,8 +496,8 @@ void EnDaiku2_Draw(Actor* thisx, GlobalContext* globalCtx) { func_8012C28C(globalCtx->state.gfxCtx); gDPSetEnvColor(POLY_OPA_DISP++, 245, 155, 0, 255); - SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, NULL, - EnDaiku2_PostLimbDraw, &this->actor); + SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, + NULL, EnDaiku2_PostLimbDraw, &this->actor); func_80BE7718(this, globalCtx); CLOSE_DISPS(globalCtx->state.gfxCtx); @@ -561,17 +561,17 @@ void func_80BE7718(EnDaiku2* this, GlobalContext* globalCtx) { for (i = 0; i < ARRAY_COUNT(this->particles); i++, particle++) { if (particle->isEnabled) { - SysMatrix_StatePush(); - SysMatrix_InsertTranslation(particle->unk_04.x, particle->unk_04.y, particle->unk_04.z, MTXMODE_NEW); - SysMatrix_InsertXRotation_s(particle->unk_28.x, MTXMODE_APPLY); + Matrix_StatePush(); + Matrix_InsertTranslation(particle->unk_04.x, particle->unk_04.y, particle->unk_04.z, MTXMODE_NEW); + Matrix_InsertXRotation_s(particle->unk_28.x, MTXMODE_APPLY); Matrix_RotateY(particle->unk_28.y, MTXMODE_APPLY); - SysMatrix_InsertZRotation_s(particle->unk_28.z, MTXMODE_APPLY); + Matrix_InsertZRotation_s(particle->unk_28.z, MTXMODE_APPLY); Matrix_Scale(particle->unk_30, particle->unk_30, particle->unk_30, MTXMODE_APPLY); gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_OPA_DISP++, D_060009E0); - SysMatrix_StatePop(); + Matrix_StatePop(); } } } diff --git a/src/overlays/actors/ovl_En_Dekunuts/z_en_dekunuts.c b/src/overlays/actors/ovl_En_Dekunuts/z_en_dekunuts.c index 69042a822..39acd872d 100644 --- a/src/overlays/actors/ovl_En_Dekunuts/z_en_dekunuts.c +++ b/src/overlays/actors/ovl_En_Dekunuts/z_en_dekunuts.c @@ -178,7 +178,7 @@ void func_808BD3B4(EnDekunuts* this, GlobalContext* globalCtx) { } void func_808BD428(EnDekunuts* this) { - SkelAnime_ChangeAnimPlaybackStop(&this->skelAnime, &D_06003180, 0.0f); + Animation_PlayOnceSetSpeed(&this->skelAnime, &D_06003180, 0.0f); this->unk_190 = Rand_S16Offset(100, 50); this->collider.dim.height = 5; Math_Vec3f_Copy(&this->actor.world.pos, &this->actor.home.pos); @@ -189,7 +189,7 @@ void func_808BD428(EnDekunuts* this) { void func_808BD49C(EnDekunuts* this, GlobalContext* globalCtx) { s32 phi_v1 = false; - if (this->skelAnime.animPlaybackSpeed < 0.5f) { + if (this->skelAnime.playSpeed < 0.5f) { phi_v1 = true; } @@ -197,18 +197,18 @@ void func_808BD49C(EnDekunuts* this, GlobalContext* globalCtx) { this->unk_190--; } - if (func_801378B8(&this->skelAnime, 9.0f)) { + if (Animation_OnFrame(&this->skelAnime, 9.0f)) { this->collider.base.acFlags |= AC_ON; - } else if (func_801378B8(&this->skelAnime, 8.0f)) { + } else if (Animation_OnFrame(&this->skelAnime, 8.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_NUTS_UP); } - this->collider.dim.height = (s32)((CLAMP(this->skelAnime.animCurrentFrame, 9.0f, 12.0f) - 9.0f) * 9.0f) + 5; + this->collider.dim.height = (s32)((CLAMP(this->skelAnime.curFrame, 9.0f, 12.0f) - 9.0f) * 9.0f) + 5; if (!phi_v1 && (this->actor.params == ENDEKUNUTS_GET_FF00_0) && (Player_GetMask(globalCtx) != PLAYER_MASK_STONE_MASK) && (this->actor.xzDistToPlayer < 120.0f)) { func_808BDC9C(this); - } else if (SkelAnime_FrameUpdateMatrix(&this->skelAnime)) { + } else if (SkelAnime_Update(&this->skelAnime)) { if (((this->unk_190 == 0) && (this->actor.xzDistToPlayer > 320.0f)) || (Player_GetMask(globalCtx) == PLAYER_MASK_STONE_MASK)) { func_808BD78C(this); @@ -228,19 +228,19 @@ void func_808BD49C(EnDekunuts* this, GlobalContext* globalCtx) { ((this->actor.params == ENDEKUNUTS_GET_FF00_2) && (this->actor.yDistToPlayer > -60.0f)) || (this->actor.params == ENDEKUNUTS_GET_FF00_1)) && ((this->unk_190 == 0) || (this->actor.xzDistToPlayer < 480.0f))) { - this->skelAnime.animPlaybackSpeed = 1.0f; + this->skelAnime.playSpeed = 1.0f; } } void func_808BD78C(EnDekunuts* this) { - SkelAnime_ChangeAnimDefaultRepeat(&this->skelAnime, &D_06002FA4); + Animation_PlayLoop(&this->skelAnime, &D_06002FA4); this->unk_190 = 2; this->actionFunc = func_808BD7D4; } void func_808BD7D4(EnDekunuts* this, GlobalContext* globalCtx) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); - if (func_801378B8(&this->skelAnime, 0.0f)) { + SkelAnime_Update(&this->skelAnime); + if (Animation_OnFrame(&this->skelAnime, 0.0f)) { if (this->unk_190 != 0) { this->unk_190--; } @@ -253,7 +253,7 @@ void func_808BD7D4(EnDekunuts* this, GlobalContext* globalCtx) { } void func_808BD870(EnDekunuts* this) { - SkelAnime_ChangeAnimTransitionRepeat(&this->skelAnime, &D_0600326C, -3.0f); + Animation_MorphToLoop(&this->skelAnime, &D_0600326C, -3.0f); if (this->actionFunc == func_808BDA4C) { this->unk_190 = 4098; } else { @@ -263,8 +263,8 @@ void func_808BD870(EnDekunuts* this) { } void func_808BD8D8(EnDekunuts* this, GlobalContext* globalCtx) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); - if (func_801378B8(&this->skelAnime, 0.0f)) { + SkelAnime_Update(&this->skelAnime); + if (Animation_OnFrame(&this->skelAnime, 0.0f)) { if (this->unk_190 != 0) { this->unk_190--; } @@ -292,7 +292,7 @@ void func_808BD8D8(EnDekunuts* this, GlobalContext* globalCtx) { } void func_808BDA08(EnDekunuts* this) { - SkelAnime_ChangeAnimDefaultStop(&this->skelAnime, &D_06000168); + Animation_PlayOnce(&this->skelAnime, &D_06000168); this->unk_190 = this->unk_194; this->actionFunc = func_808BDA4C; } @@ -314,17 +314,17 @@ void func_808BDA4C(EnDekunuts* this, GlobalContext* globalCtx) { sp58.y = player->actor.world.pos.y + 40.0f; pitch = Actor_PitchToPoint(&this->actor, &sp58); pitch = CLAMP(pitch, -0x3800, -0x2000); - if (this->skelAnime.animCurrentFrame < 7.0f) { + if (this->skelAnime.curFrame < 7.0f) { Math_ScaledStepToS(&this->actor.world.rot.x, pitch, 0x800); } else { Math_ScaledStepToS(&this->actor.world.rot.x, 0, 0x800); } } - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime)) { + if (SkelAnime_Update(&this->skelAnime)) { this->actor.world.rot.x = 0; func_808BD870(this); - } else if (func_801378B8(&this->skelAnime, 7.0f)) { + } else if (Animation_OnFrame(&this->skelAnime, 7.0f)) { val = Math_CosS(this->actor.world.rot.x) * 15.0f; pos.x = (Math_SinS(this->actor.shape.rot.y) * val) + this->actor.world.pos.x; pos.y = (this->actor.world.pos.y + 12.0f) - (Math_SinS(this->actor.world.rot.x) * 15.0f); @@ -335,8 +335,8 @@ void func_808BDA4C(EnDekunuts* this, GlobalContext* globalCtx) { this->actor.world.rot.x, this->actor.shape.rot.y, 0, params) != NULL) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_NUTS_THROW); } - } else if ((this->unk_190 >= 2) && func_801378B8(&this->skelAnime, 12.0f)) { - SkelAnime_ChangeAnimTransitionStop(&this->skelAnime, &D_06000168, -3.0f); + } else if ((this->unk_190 >= 2) && Animation_OnFrame(&this->skelAnime, 12.0f)) { + Animation_MorphToPlayOnce(&this->skelAnime, &D_06000168, -3.0f); if (this->unk_190 != 0) { this->unk_190--; } @@ -344,14 +344,14 @@ void func_808BDA4C(EnDekunuts* this, GlobalContext* globalCtx) { } void func_808BDC9C(EnDekunuts* this) { - SkelAnime_ChangeAnimTransitionStop(&this->skelAnime, &D_06002A5C, -5.0f); + Animation_MorphToPlayOnce(&this->skelAnime, &D_06002A5C, -5.0f); this->unk_190 = 0; Audio_PlayActorSound2(&this->actor, NA_SE_EN_NUTS_DOWN); this->actionFunc = func_808BDD54; } void func_808BDCF0(EnDekunuts* this) { - SkelAnime_ChangeAnimTransitionStop(&this->skelAnime, &D_06002A5C, -5.0f); + Animation_MorphToPlayOnce(&this->skelAnime, &D_06002A5C, -5.0f); this->collider.base.acFlags &= ~AC_ON; this->unk_190 = 80; Audio_PlayActorSound2(&this->actor, NA_SE_EN_NUTS_DOWN); @@ -359,7 +359,7 @@ void func_808BDCF0(EnDekunuts* this) { } void func_808BDD54(EnDekunuts* this, GlobalContext* globalCtx) { - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime)) { + if (SkelAnime_Update(&this->skelAnime)) { if (this->unk_190 != 0) { this->unk_190--; } @@ -368,10 +368,10 @@ void func_808BDD54(EnDekunuts* this, GlobalContext* globalCtx) { func_808BD428(this); } } else { - this->collider.dim.height = (s32)((3.0f - CLAMP(this->skelAnime.animCurrentFrame, 1.0f, 3.0f)) * 12.0f) + 5; + this->collider.dim.height = (s32)((3.0f - CLAMP(this->skelAnime.curFrame, 1.0f, 3.0f)) * 12.0f) + 5; } - if (func_801378B8(&this->skelAnime, 4.0f)) { + if (Animation_OnFrame(&this->skelAnime, 4.0f)) { this->collider.base.acFlags &= ~AC_ON; } Math_ApproachF(&this->actor.world.pos.x, this->actor.home.pos.x, 0.5f, 3.0f); @@ -379,7 +379,7 @@ void func_808BDD54(EnDekunuts* this, GlobalContext* globalCtx) { } void func_808BDE7C(EnDekunuts* this) { - SkelAnime_ChangeAnimTransitionStop(&this->skelAnime, &D_06002DD4, -3.0f); + Animation_MorphToPlayOnce(&this->skelAnime, &D_06002DD4, -3.0f); this->collider.dim.height = 37; this->actor.colChkInfo.mass = 50; Audio_PlayActorSound2(&this->actor, NA_SE_EN_NUTS_DAMAGE); @@ -390,7 +390,7 @@ void func_808BDE7C(EnDekunuts* this) { } void func_808BDEF8(EnDekunuts* this, GlobalContext* globalCtx) { - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime)) { + if (SkelAnime_Update(&this->skelAnime)) { this->unk_192 = BINANG_ROT180(this->actor.yawTowardsPlayer); this->unk_18D = 3; func_808BDF60(this); @@ -399,7 +399,7 @@ void func_808BDEF8(EnDekunuts* this, GlobalContext* globalCtx) { } void func_808BDF60(EnDekunuts* this) { - SkelAnime_ChangeAnimDefaultRepeat(&this->skelAnime, &D_06003780); + Animation_PlayLoop(&this->skelAnime, &D_06003780); this->unk_190 = 2; this->unk_18C = 0; this->collider.base.acFlags |= AC_ON; @@ -410,8 +410,8 @@ void func_808BDFB8(EnDekunuts* this, GlobalContext* globalCtx) { s16 yaw; s16 yaw2; - SkelAnime_FrameUpdateMatrix(&this->skelAnime); - if (func_801378B8(&this->skelAnime, 0.0f)) { + SkelAnime_Update(&this->skelAnime); + if (Animation_OnFrame(&this->skelAnime, 0.0f)) { if (this->unk_190 != 0) { this->unk_190--; } @@ -456,7 +456,7 @@ void func_808BDFB8(EnDekunuts* this, GlobalContext* globalCtx) { } void func_808BE1CC(EnDekunuts* this) { - SkelAnime_ChangeAnimDefaultRepeat(&this->skelAnime, &D_060033E4); + Animation_PlayLoop(&this->skelAnime, &D_060033E4); this->unk_190 = 3; this->actor.speedXZ = 0.0f; if (this->unk_18D != 0) { @@ -466,8 +466,8 @@ void func_808BE1CC(EnDekunuts* this) { } void func_808BE22C(EnDekunuts* this, GlobalContext* globalCtx) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); - if (func_801378B8(&this->skelAnime, 0.0f)) { + SkelAnime_Update(&this->skelAnime); + if (Animation_OnFrame(&this->skelAnime, 0.0f)) { if (this->unk_190 != 0) { this->unk_190--; } @@ -479,7 +479,7 @@ void func_808BE22C(EnDekunuts* this, GlobalContext* globalCtx) { } void func_808BE294(EnDekunuts* this, s32 arg1) { - SkelAnime_ChangeAnimTransitionStop(&this->skelAnime, &D_0600259C, -3.0f); + Animation_MorphToPlayOnce(&this->skelAnime, &D_0600259C, -3.0f); if (this->actor.params == ENDEKUNUTS_GET_FF00_0) { this->actor.speedXZ = 10.0f; if (arg1 != 0) { @@ -492,12 +492,12 @@ void func_808BE294(EnDekunuts* this, s32 arg1) { this->actionFunc = func_808BE358; Audio_PlayActorSound2(&this->actor, NA_SE_EN_NUTS_DAMAGE); Audio_PlayActorSound2(&this->actor, NA_SE_EN_CUTBODY); - func_800BCB70(&this->actor, 0x4000, 255, 0, SkelAnime_GetFrameCount(&D_0600259C.common)); + func_800BCB70(&this->actor, 0x4000, 255, 0, Animation_GetLastFrame(&D_0600259C)); } void func_808BE358(EnDekunuts* this, GlobalContext* globalCtx) { Math_StepToF(&this->actor.speedXZ, 0.0f, 1.0f); - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime)) { + if (SkelAnime_Update(&this->skelAnime)) { func_808BE484(this); } } @@ -531,7 +531,7 @@ void func_808BE3FC(EnDekunuts* this, GlobalContext* globalCtx) { } void func_808BE484(EnDekunuts* this) { - SkelAnime_ChangeAnimDefaultStop(&this->skelAnime, &D_06002BD4); + Animation_PlayOnce(&this->skelAnime, &D_06002BD4); this->actionFunc = func_808BE4D4; this->actor.speedXZ = 0.0f; Audio_PlayActorSound2(&this->actor, NA_SE_EN_NUTS_DEAD); @@ -543,7 +543,7 @@ void func_808BE4D4(EnDekunuts* this, GlobalContext* globalCtx) { s32 pad; Vec3f sp40; - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime)) { + if (SkelAnime_Update(&this->skelAnime)) { sp40.x = this->actor.world.pos.x; sp40.y = this->actor.world.pos.y + 18.0f; sp40.z = this->actor.world.pos.z; @@ -560,12 +560,12 @@ void func_808BE4D4(EnDekunuts* this, GlobalContext* globalCtx) { } void func_808BE680(EnDekunuts* this) { - SkelAnime_ChangeAnimTransitionRepeat(&this->skelAnime, &D_0600326C, -3.0f); + Animation_MorphToLoop(&this->skelAnime, &D_0600326C, -3.0f); this->actionFunc = func_808BE6C4; } void func_808BE6C4(EnDekunuts* this, GlobalContext* globalCtx) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); if (Player_GetMask(globalCtx) != PLAYER_MASK_STONE_MASK) { Math_ApproachS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 2, 0xE38); } @@ -678,7 +678,7 @@ s32 func_808BEBD0(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* p if (this->actionFunc == func_808BDA4C) { if (limbIndex == 5) { - currentFrame = this->skelAnime.animCurrentFrame; + currentFrame = this->skelAnime.curFrame; if (currentFrame <= 6.0f) { arg2 = 1.0f - (currentFrame * 0.0833f); arg1 = (currentFrame * 0.1167f) + 1.0f; @@ -719,30 +719,30 @@ void func_808BED30(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* if (value != -1) { if (value < 3) { - SysMatrix_GetStateTranslationAndScaledX(1000.0f, &this->unk_21C[value]); + Matrix_GetStateTranslationAndScaledX(1000.0f, &this->unk_21C[value]); } else { - SysMatrix_GetStateTranslation(&this->unk_21C[value]); + Matrix_GetStateTranslation(&this->unk_21C[value]); ptr1 = &D_808BEFA4[0]; ptr2 = &this->unk_21C[value + 1]; for (i = value + 1; i < ARRAY_COUNT(this->unk_21C); i++) { - SysMatrix_MultiplyVector3fByState(ptr1, ptr2); + Matrix_MultiplyVector3fByState(ptr1, ptr2); ptr1++, ptr2++; } } } if (limbIndex == 2) { - SysMatrix_GetStateTranslation(&this->actor.focus.pos); + Matrix_GetStateTranslation(&this->actor.focus.pos); } } void EnDekunuts_Draw(Actor* thisx, GlobalContext* globalCtx) { EnDekunuts* this = THIS; - SkelAnime_Draw(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, func_808BEBD0, func_808BED30, - &this->actor); - SysMatrix_SetStateRotationAndTranslation(this->actor.home.pos.x, this->actor.home.pos.y, this->actor.home.pos.z, - &this->actor.home.rot); + SkelAnime_DrawOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, func_808BEBD0, func_808BED30, + &this->actor); + Matrix_SetStateRotationAndTranslation(this->actor.home.pos.x, this->actor.home.pos.y, this->actor.home.pos.z, + &this->actor.home.rot); Matrix_Scale(this->actor.scale.x, this->actor.scale.y, this->actor.scale.z, MTXMODE_APPLY); if (this->actor.colorFilterTimer != 0) { func_800AE5A0(globalCtx); diff --git a/src/overlays/actors/ovl_En_Dg/z_en_dg.c b/src/overlays/actors/ovl_En_Dg/z_en_dg.c index cf3337c0a..c0c17367d 100644 --- a/src/overlays/actors/ovl_En_Dg/z_en_dg.c +++ b/src/overlays/actors/ovl_En_Dg/z_en_dg.c @@ -157,13 +157,13 @@ void func_80989140(SkelAnime* skelAnime, ActorAnimationEntryS arg1[], s32 arg2) arg1 += arg2; if (arg1->frameCount < 0) { - frameCount = SkelAnime_GetFrameCount(&arg1->animationSeg->common); + frameCount = Animation_GetLastFrame(arg1->animationSeg); } else { frameCount = arg1->frameCount; } - SkelAnime_ChangeAnim(skelAnime, arg1->animationSeg, arg1->playbackSpeed + (BREG(88) * 0.1f), arg1->frame, - frameCount, arg1->mode, arg1->transitionRate); + Animation_Change(skelAnime, arg1->animationSeg, arg1->playbackSpeed + (BREG(88) * 0.1f), arg1->frame, frameCount, + arg1->mode, arg1->transitionRate); } void func_80989204(EnDg* this, GlobalContext* globalCtx) { @@ -294,7 +294,7 @@ void func_80989674(EnDg* this, GlobalContext* globalCtx) { } void func_80989864(EnDg* this, GlobalContext* globalCtx) { - s16 frame = this->skelAnime.animCurrentFrame; + s16 frame = this->skelAnime.curFrame; s16 mod = (this->actor.speedXZ > 6.0f) ? 2 : 3; Vec3f sp38; @@ -307,31 +307,31 @@ void func_80989864(EnDg* this, GlobalContext* globalCtx) { } void func_80989974(EnDg* this) { - if (func_801378B8(&this->skelAnime, 1.0f) || func_801378B8(&this->skelAnime, 7.0f)) { + if (Animation_OnFrame(&this->skelAnime, 1.0f) || Animation_OnFrame(&this->skelAnime, 7.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EV_MONKEY_WALK); } } void func_809899C8(EnDg* this, f32 arg1) { - if (func_801378B8(&this->skelAnime, arg1)) { + if (Animation_OnFrame(&this->skelAnime, arg1)) { Audio_PlayActorSound2(&this->actor, NA_SE_EV_SMALL_DOG_BARK); } } void func_80989A08(EnDg* this, f32 arg1) { - if (func_801378B8(&this->skelAnime, arg1)) { + if (Animation_OnFrame(&this->skelAnime, arg1)) { Audio_PlayActorSound2(&this->actor, NA_SE_EV_SMALL_DOG_ANG_BARK); } } void func_80989A48(EnDg* this) { - if (func_801378B8(&this->skelAnime, 23.0f) || func_801378B8(&this->skelAnime, 28.0f)) { + if (Animation_OnFrame(&this->skelAnime, 23.0f) || Animation_OnFrame(&this->skelAnime, 28.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EV_SMALL_DOG_WHINE); } } void func_80989A9C(EnDg* this, f32 arg1) { - if (func_801378B8(&this->skelAnime, arg1)) { + if (Animation_OnFrame(&this->skelAnime, arg1)) { Audio_PlayActorSound2(&this->actor, NA_SE_EV_SMALL_DOG_GROAN); } } @@ -657,9 +657,9 @@ void func_8098A70C(EnDg* this, GlobalContext* globalCtx) { Actor_SetVelocityAndMoveYRotationAndGravity(&this->actor); func_80989974(this); - if (func_801378B8(&this->skelAnime, 3.0f)) { + if (Animation_OnFrame(&this->skelAnime, 3.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EV_SMALL_DOG_CRY); - } else if (func_801378B8(&this->skelAnime, 6.0f)) { + } else if (Animation_OnFrame(&this->skelAnime, 6.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EV_MONKEY_WALK); } } @@ -689,7 +689,7 @@ void func_8098A938(EnDg* this, GlobalContext* globalCtx) { this->actor.world.rot.y = this->actor.shape.rot.y; if (this->actor.xzDistToPlayer < 70.0f) { Math_ApproachZeroF(&this->actor.speedXZ, 0.2f, 1.0f); - if (func_801378B8(&this->skelAnime, 7.0f)) { + if (Animation_OnFrame(&this->skelAnime, 7.0f)) { s16 y = ABS_ALT(player->actor.shape.rot.y - this->actor.shape.rot.y); this->unk_28E = 20; @@ -751,7 +751,7 @@ void func_8098AB48(EnDg* this, GlobalContext* globalCtx) { } void func_8098AC34(EnDg* this, GlobalContext* globalCtx) { - s16 sp26 = this->skelAnime.animCurrentFrame; + s16 sp26 = this->skelAnime.curFrame; if ((this->actor.xyzDistToPlayerSq < 800.0f) && (this->collider.base.atFlags & AT_BOUNCED)) { this->unk_28E = 60; @@ -772,13 +772,13 @@ void func_8098AC34(EnDg* this, GlobalContext* globalCtx) { } if (sp26 < 9) { - if (func_801378B8(&this->skelAnime, 0.0f)) { + if (Animation_OnFrame(&this->skelAnime, 0.0f)) { sAnimations[14].playbackSpeed = randPlusMinusPoint5Scaled(1.0f) + 3.0f; } func_80989864(this, globalCtx); } else { this->unk_280 |= 2; - if (func_801378B8(&this->skelAnime, 9.0f)) { + if (Animation_OnFrame(&this->skelAnime, 9.0f)) { f32 rand = randPlusMinusPoint5Scaled(1.5f); sAnimations[14].playbackSpeed = 1.2f; @@ -1116,7 +1116,7 @@ void EnDg_Init(Actor* thisx, GlobalContext* globalCtx) { s32 pad; ActorShape_Init(&this->actor.shape, 0.0f, func_800B3FC0, 24.0f); - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_060080F0, NULL, this->jointTable, this->morphTable, 13); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_060080F0, NULL, this->jointTable, this->morphTable, 13); Collider_InitCylinder(globalCtx, &this->collider); Collider_SetCylinder(globalCtx, &this->collider, &this->actor, &sCylinderInit); CollisionCheck_SetInfo2(&this->actor.colChkInfo, &sDamageTable, &sColChkInfoInit); @@ -1170,7 +1170,7 @@ void EnDg_Update(Actor* thisx, GlobalContext* globalCtx) { func_8098933C(this, &sp28); Math_ApproachF(&this->unk_294.x, sp28.x, 0.2f, 0.1f); Math_ApproachF(&this->unk_294.z, sp28.z, 0.2f, 0.1f); - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); } } @@ -1185,9 +1185,9 @@ void func_8098BFD4(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* if (limbIndex == 5) { if (this->actionFunc == func_8098BBEC) { sp20.x = 5000.0f; - SysMatrix_MultiplyVector3fByState(&sp20, &this->actor.focus.pos); + Matrix_MultiplyVector3fByState(&sp20, &this->actor.focus.pos); } else if (this->actionFunc != func_8098BC54) { - SysMatrix_MultiplyVector3fByState(&sp20, &this->actor.focus.pos); + Matrix_MultiplyVector3fByState(&sp20, &this->actor.focus.pos); } } } @@ -1225,13 +1225,13 @@ void EnDg_Draw(Actor* thisx, GlobalContext* globalCtx) { break; } - SysMatrix_InsertTranslation(this->actor.world.pos.x, this->actor.world.pos.y, this->actor.world.pos.z, MTXMODE_NEW); - SysMatrix_RotateStateAroundXAxis(this->unk_294.x); - SysMatrix_InsertZRotation_f(this->unk_294.z, MTXMODE_APPLY); + Matrix_InsertTranslation(this->actor.world.pos.x, this->actor.world.pos.y, this->actor.world.pos.z, MTXMODE_NEW); + Matrix_RotateStateAroundXAxis(this->unk_294.x); + Matrix_InsertZRotation_f(this->unk_294.z, MTXMODE_APPLY); Matrix_RotateY(this->actor.shape.rot.y, MTXMODE_APPLY); Matrix_Scale(this->actor.scale.x, this->actor.scale.y, this->actor.scale.z, MTXMODE_APPLY); - SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, - func_8098BFB8, func_8098BFD4, &this->actor); + SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, + func_8098BFB8, func_8098BFD4, &this->actor); CLOSE_DISPS(globalCtx->state.gfxCtx); } diff --git a/src/overlays/actors/ovl_En_Dinofos/z_en_dinofos.c b/src/overlays/actors/ovl_En_Dinofos/z_en_dinofos.c index cf6a959b4..8670600fe 100644 --- a/src/overlays/actors/ovl_En_Dinofos/z_en_dinofos.c +++ b/src/overlays/actors/ovl_En_Dinofos/z_en_dinofos.c @@ -293,7 +293,7 @@ void EnDinofos_Init(Actor* thisx, GlobalContext* globalCtx) { this->colliderJntSphElement); Collider_InitAndSetQuad(globalCtx, &this->colliderQuad, &this->actor, &sQuadInit); CollisionCheck_SetInfo(&this->actor.colChkInfo, &sDamageTable, &sColChkInfoInit); - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_06009570, &D_06002E40, this->jointTable, this->morphTable, 21); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_06009570, &D_06002E40, this->jointTable, this->morphTable, 21); if (D_8089E364 == 0) { for (i = 0; i < ARRAY_COUNT(D_8089E33C); i++) { @@ -483,8 +483,8 @@ void func_8089B100(EnDinofos* this, GlobalContext* globalCtx) { Player* player = GET_PLAYER(globalCtx); Vec3f sp3C; - SkelAnime_ChangeAnim(&this->skelAnime, &D_06001CCC, 1.0f, SkelAnime_GetFrameCount(&D_06001CCC.common), - SkelAnime_GetFrameCount(&D_06001CCC.common), 2, 0.0f); + Animation_Change(&this->skelAnime, &D_06001CCC, 1.0f, Animation_GetLastFrame(&D_06001CCC), + Animation_GetLastFrame(&D_06001CCC), 2, 0.0f); func_800BE33C(&camera->eye, &camera->at, &this->unk_29A, 1); Math_Vec3f_Diff(&this->actor.world.pos, &player->actor.world.pos, &sp3C); this->unk_2BC.x = player->actor.world.pos.x + (0.4f * sp3C.x); @@ -549,7 +549,7 @@ void func_8089B4A4(EnDinofos* this) { if (this->unk_290 < 10) { func_801A2E54(0x38); } - SkelAnime_ChangeAnimDefaultStop(&this->skelAnime, &D_0600C974); + Animation_PlayOnce(&this->skelAnime, &D_0600C974); this->unk_2BC.x = (Math_SinS(this->actor.shape.rot.y + 0x200) * 123.0f) + this->actor.world.pos.x; this->unk_2BC.y = this->actor.floorHeight + 11.0f; this->unk_2BC.z = (Math_CosS(this->actor.shape.rot.y + 0x200) * 123.0f) + this->actor.world.pos.z; @@ -567,38 +567,38 @@ void func_8089B580(EnDinofos* this, GlobalContext* globalCtx) { Play_CameraSetAtEye(globalCtx, this->camId, &this->actor.focus.pos, &camera->eye); } - if (this->skelAnime.animCurrentFrame > 35.0f) { - if ((globalCtx->sceneNum == SCENE_MITURIN) && func_801378B8(&this->skelAnime, 38.0f)) { + if (this->skelAnime.curFrame > 35.0f) { + if ((globalCtx->sceneNum == SCENE_MITURIN) && Animation_OnFrame(&this->skelAnime, 38.0f)) { globalCtx->envCtx.unk_C3 = 11; } Math_Vec3f_StepTo(&camera->eye, &this->unk_2BC, 10.0f); Play_CameraSetAtEye(globalCtx, this->camId, &this->actor.focus.pos, &camera->eye); - if (this->skelAnime.animCurrentFrame <= 55.0f) { + if (this->skelAnime.curFrame <= 55.0f) { func_800B9010(&this->actor, NA_SE_EN_DODO_J_FIRE - SFX_FLAG); } } - if ((globalCtx->sceneNum == SCENE_MITURIN) && func_801378B8(&this->skelAnime, 55.0f)) { + if ((globalCtx->sceneNum == SCENE_MITURIN) && Animation_OnFrame(&this->skelAnime, 55.0f)) { globalCtx->envCtx.unk_C3 = 0xFF; } - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime)) { + if (SkelAnime_Update(&this->skelAnime)) { func_8089B6E8(this); } } void func_8089B6E8(EnDinofos* this) { - SkelAnime_ChangeAnimTransitionStop(&this->skelAnime, &D_06009B70, -3.0f); + Animation_MorphToPlayOnce(&this->skelAnime, &D_06009B70, -3.0f); this->actionFunc = func_8089B72C; } void func_8089B72C(EnDinofos* this, GlobalContext* globalCtx) { - if (func_801378B8(&this->skelAnime, 2.0f)) { + if (Animation_OnFrame(&this->skelAnime, 2.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_RIZA_ATTACK); } - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime)) { + if (SkelAnime_Update(&this->skelAnime)) { func_8089ABF4(this, globalCtx); this->actor.flags &= ~0x00100000; this->actor.cutscene = -1; @@ -607,7 +607,7 @@ void func_8089B72C(EnDinofos* this, GlobalContext* globalCtx) { } void func_8089B7B0(EnDinofos* this) { - SkelAnime_ChangeAnimTransitionRepeat(&this->skelAnime, &D_06002E40, -4.0f); + Animation_MorphToLoop(&this->skelAnime, &D_06002E40, -4.0f); this->unk_290 = (s32)Rand_ZeroFloat(20.0f) + 40; this->unk_292 = 30; this->actor.speedXZ = 0.0f; @@ -617,7 +617,7 @@ void func_8089B7B0(EnDinofos* this) { } void func_8089B834(EnDinofos* this, GlobalContext* globalCtx) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); if (this->unk_292 != 0) { this->unk_292--; } else if (func_8089A968(this)) { @@ -635,7 +635,7 @@ void func_8089B8B0(EnDinofos* this, GlobalContext* globalCtx) { f32 phi_f0; if (this->actionFunc != func_8089B98C) { - SkelAnime_ChangeAnimTransitionRepeat(&this->skelAnime, &D_06000580, -4.0f); + Animation_MorphToLoop(&this->skelAnime, &D_06000580, -4.0f); if (func_800BC5EC(globalCtx, &this->actor)) { phi_f0 = 170.0f; } else { @@ -656,7 +656,7 @@ void func_8089B8B0(EnDinofos* this, GlobalContext* globalCtx) { void func_8089B98C(EnDinofos* this, GlobalContext* globalCtx) { f32 phi_f0; - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); if (!func_8089AE00(this, globalCtx)) { if (func_800BC5EC(globalCtx, &this->actor)) { phi_f0 = 170.0f; @@ -682,7 +682,7 @@ void func_8089B98C(EnDinofos* this, GlobalContext* globalCtx) { func_8089A9B0(this, globalCtx); } - if (func_801378B8(&this->skelAnime, 0.0f) || func_801378B8(&this->skelAnime, 6.0f)) { + if (Animation_OnFrame(&this->skelAnime, 0.0f) || Animation_OnFrame(&this->skelAnime, 6.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_RIZA_WALK); } } @@ -690,7 +690,7 @@ void func_8089B98C(EnDinofos* this, GlobalContext* globalCtx) { void func_8089BAC0(EnDinofos* this) { if (this->actionFunc != func_8089BB60) { - SkelAnime_ChangeAnimTransitionRepeat(&this->skelAnime, &D_06000580, -4.0f); + Animation_MorphToLoop(&this->skelAnime, &D_06000580, -4.0f); this->actor.speedXZ = 0.0f; } if (BINANG_SUB(this->actor.yawTowardsPlayer, this->actor.shape.rot.y) > 0) { @@ -704,7 +704,7 @@ void func_8089BAC0(EnDinofos* this) { } void func_8089BB60(EnDinofos* this, GlobalContext* globalCtx) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); if (Math_ScaledStepToS(&this->actor.shape.rot.y, this->unk_28C, 0x400)) { func_8089A9B0(this, globalCtx); } @@ -729,10 +729,10 @@ void func_8089BBB4(EnDinofos* this, GlobalContext* globalCtx) { } if (this->actionFunc == func_8089D1E0) { - this->skelAnime.animPlaybackSpeed = this->actor.speedXZ * 0.166666671634f; + this->skelAnime.playSpeed = this->actor.speedXZ * 0.166666671634f; } else { - SkelAnime_ChangeAnim(&this->skelAnime, &D_0600D62C, this->actor.speedXZ * 0.166666671634f, 0.0f, 0.0f, 0, - -4.0f); + Animation_Change(&this->skelAnime, &D_0600D62C, this->actor.speedXZ * 0.166666671634f, 0.0f, 0.0f, 0, + -4.0f); } this->actor.world.rot.y = BINANG_ADD(this->actor.shape.rot.y, 0x4000); @@ -776,9 +776,9 @@ void func_8089BD28(EnDinofos* this, GlobalContext* globalCtx) { } if (this->actor.speedXZ > 0.0f) { - this->skelAnime.animPlaybackSpeed = 1.0f; + this->skelAnime.playSpeed = 1.0f; } else { - this->skelAnime.animPlaybackSpeed = -1.0f; + this->skelAnime.playSpeed = -1.0f; } this->actor.world.rot.y = BINANG_ADD(this->actor.shape.rot.y, 0x4000); @@ -796,14 +796,14 @@ void func_8089BD28(EnDinofos* this, GlobalContext* globalCtx) { this->actor.world.pos.x += Math_SinS(this->actor.shape.rot.y) * this->unk_2A4; this->actor.world.pos.z += Math_CosS(this->actor.shape.rot.y) * this->unk_2A4; - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); if (this->unk_292 != 0) { this->unk_292--; } else { func_8089A9B0(this, globalCtx); } - if (func_801378B8(&this->skelAnime, 0.0f) || func_801378B8(&this->skelAnime, 5.0f)) { + if (Animation_OnFrame(&this->skelAnime, 0.0f) || Animation_OnFrame(&this->skelAnime, 5.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_RIZA_WALK); } } @@ -811,10 +811,10 @@ void func_8089BD28(EnDinofos* this, GlobalContext* globalCtx) { void func_8089C024(EnDinofos* this, s32 arg1) { if (arg1 == 0) { - SkelAnime_ChangeAnimTransitionStop(&this->skelAnime, &D_06001CCC, 2.0f); + Animation_MorphToPlayOnce(&this->skelAnime, &D_06001CCC, 2.0f); func_8089AD70(this); } else { - SkelAnime_ChangeAnimTransitionStop(&this->skelAnime, &D_06001CCC, -1.0f); + Animation_MorphToPlayOnce(&this->skelAnime, &D_06001CCC, -1.0f); if ((arg1 == 2) || (arg1 == 3)) { this->colliderJntSph.base.acFlags &= ~AC_ON; func_8089AD70(this); @@ -830,8 +830,8 @@ void func_8089C024(EnDinofos* this, s32 arg1) { void func_8089C0DC(EnDinofos* this, GlobalContext* globalCtx) { Math_ScaledStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 0x1000); this->actor.world.rot.y = this->actor.shape.rot.y; - SkelAnime_FrameUpdateMatrix(&this->skelAnime); - if (func_801378B8(&this->skelAnime, 1.0f)) { + SkelAnime_Update(&this->skelAnime); + if (Animation_OnFrame(&this->skelAnime, 1.0f)) { if (this->unk_290 == 3) { func_8089C244(this); } else { @@ -858,7 +858,7 @@ void func_8089C164(EnDinofos* this) { } void func_8089C1F8(EnDinofos* this, GlobalContext* globalCtx) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); if (this->actor.bgCheckFlags & 1) { func_8089C398(this); } @@ -875,13 +875,13 @@ void func_8089C244(EnDinofos* this) { } void func_8089C2A8(EnDinofos* this, GlobalContext* globalCtx) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); this->unk_290++; Math_ScaledStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 0x1800); - if ((this->actor.velocity.y < 0.0f) && (this->skelAnime.animCurrentSeg == &D_06001CCC)) { + if ((this->actor.velocity.y < 0.0f) && (this->skelAnime.animation == &D_06001CCC)) { this->colliderQuad.base.atFlags |= AT_ON; this->colliderJntSph.base.acFlags |= AC_ON; - SkelAnime_ChangeAnim(&this->skelAnime, &D_060025B4, 1.0f, 7.0f, 13.0f, 2, -2.0f); + Animation_Change(&this->skelAnime, &D_060025B4, 1.0f, 7.0f, 13.0f, 2, -2.0f); } if (this->actor.bgCheckFlags & 1) { @@ -892,9 +892,9 @@ void func_8089C2A8(EnDinofos* this, GlobalContext* globalCtx) { void func_8089C398(EnDinofos* this) { if (this->actionFunc != func_8089C2A8) { - SkelAnime_ChangeAnimDefaultStop(&this->skelAnime, &D_06000AF0); + Animation_PlayOnce(&this->skelAnime, &D_06000AF0); } else { - this->skelAnime.animFrameCount = SkelAnime_GetFrameCount(&D_060025B4.common); + this->skelAnime.endFrame = Animation_GetLastFrame(&D_060025B4); } if (this->actor.speedXZ < 0.0f) { @@ -910,7 +910,7 @@ void func_8089C398(EnDinofos* this) { } void func_8089C44C(EnDinofos* this, GlobalContext* globalCtx) { - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime)) { + if (SkelAnime_Update(&this->skelAnime)) { if ((this->unk_290 == 1) && (this->actor.xzDistToPlayer < 280.0f) && func_8089A968(this) && (Rand_ZeroOne() < 0.6f)) { func_8089CA14(this); @@ -921,7 +921,7 @@ void func_8089C44C(EnDinofos* this, GlobalContext* globalCtx) { } void func_8089C4F8(EnDinofos* this) { - SkelAnime_ChangeAnimDefaultStop(&this->skelAnime, &D_060025B4); + Animation_PlayOnce(&this->skelAnime, &D_060025B4); this->colliderQuad.base.atFlags &= ~AT_BOUNCED; Audio_PlayActorSound2(&this->actor, NA_SE_EN_RIZA_CRY); this->unk_290 = 0; @@ -935,24 +935,24 @@ void func_8089C56C(EnDinofos* this, GlobalContext* globalCtx) { this->unk_290++; Math_ScaledStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 0x800); this->actor.world.rot.y = this->actor.shape.rot.y; - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime)) { + if (SkelAnime_Update(&this->skelAnime)) { func_800A8514(Effect_GetParams(this->unk_2A0)); this->colliderQuad.base.atFlags &= ~AT_ON; func_8089A9B0(this, globalCtx); - } else if (func_801378B8(&this->skelAnime, 7.0f)) { + } else if (Animation_OnFrame(&this->skelAnime, 7.0f)) { this->colliderQuad.base.atFlags |= AT_ON; func_8089AD70(this); - } else if (func_801378B8(&this->skelAnime, 13.0f)) { + } else if (Animation_OnFrame(&this->skelAnime, 13.0f)) { this->colliderQuad.base.atFlags &= ~AT_ON; - } else if (func_801378B8(&this->skelAnime, 11.0f)) { + } else if (Animation_OnFrame(&this->skelAnime, 11.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_RIZA_ATTACK); - } else if (this->skelAnime.animCurrentFrame < 7.0f) { + } else if (this->skelAnime.curFrame < 7.0f) { func_8089AE00(this, globalCtx); } } void func_8089C690(EnDinofos* this) { - SkelAnime_ChangeAnim(&this->skelAnime, &D_060025B4, -1.0f, this->skelAnime.animCurrentFrame, 0.0f, 2, 0.0f); + Animation_Change(&this->skelAnime, &D_060025B4, -1.0f, this->skelAnime.curFrame, 0.0f, 2, 0.0f); this->colliderQuad.base.atFlags &= ~(AT_ON | AT_BOUNCED); if (this->actionFunc != func_8089C2A8) { this->actor.world.rot.y = this->actor.shape.rot.y; @@ -967,7 +967,7 @@ void func_8089C724(EnDinofos* this, GlobalContext* globalCtx) { Math_StepToF(&this->actor.speedXZ, 0.0f, 0.5f); } - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime)) { + if (SkelAnime_Update(&this->skelAnime)) { func_8089A9B0(this, globalCtx); } } @@ -1002,7 +1002,7 @@ void func_8089C7B8(EnDinofos* this, GlobalContext* globalCtx) { } void func_8089C87C(EnDinofos* this, s32 arg1) { - SkelAnime_ChangeAnimDefaultStop(&this->skelAnime, &D_0600D21C); + Animation_PlayOnce(&this->skelAnime, &D_0600D21C); func_800BE5CC(&this->actor, &this->colliderJntSph, arg1); this->actor.shape.rot.y = BINANG_ROT180(this->actor.world.rot.y); this->actor.speedXZ = 10.0f; @@ -1018,7 +1018,7 @@ void func_8089C87C(EnDinofos* this, s32 arg1) { void func_8089C938(EnDinofos* this, GlobalContext* globalCtx) { Math_StepToF(&this->actor.speedXZ, 0.0f, 0.5f); - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime) && (this->actor.bgCheckFlags & 1)) { + if (SkelAnime_Update(&this->skelAnime) && (this->actor.bgCheckFlags & 1)) { if (this->actor.colChkInfo.health == 0) { if (this->actor.cutscene == -1) { func_8089CFAC(this); @@ -1035,7 +1035,7 @@ void func_8089C938(EnDinofos* this, GlobalContext* globalCtx) { } void func_8089CA14(EnDinofos* this) { - SkelAnime_ChangeAnimTransitionStop(&this->skelAnime, &D_06001040, -5.0f); + Animation_MorphToPlayOnce(&this->skelAnime, &D_06001040, -5.0f); this->colliderJntSph.base.acFlags |= AC_ON; this->actor.speedXZ = 0.0f; this->actor.world.rot.y = this->actor.shape.rot.y; @@ -1045,9 +1045,9 @@ void func_8089CA14(EnDinofos* this) { void func_8089CA74(EnDinofos* this, GlobalContext* globalCtx) { Math_ScaledStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 0x800); Math_StepToF(&this->actor.speedXZ, 0.0f, 0.5f); - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime)) { + if (SkelAnime_Update(&this->skelAnime)) { func_8089CB10(this, globalCtx); - } else if (!func_8089AE00(this, globalCtx) && func_801378B8(&this->skelAnime, 12.0f)) { + } else if (!func_8089AE00(this, globalCtx) && Animation_OnFrame(&this->skelAnime, 12.0f)) { this->actor.speedXZ = 8.0f; } } @@ -1056,7 +1056,7 @@ void func_8089CB10(EnDinofos* this, GlobalContext* globalCtx) { s32 i; Sphere16* worldSphere; - SkelAnime_ChangeAnimDefaultRepeat(&this->skelAnime, &D_060013C0); + Animation_PlayLoop(&this->skelAnime, &D_060013C0); this->unk_290 = 20; this->actor.speedXZ = 0.0f; this->colliderJntSph.base.atFlags |= AT_ON; @@ -1087,7 +1087,7 @@ void func_8089CBEC(EnDinofos* this, GlobalContext* globalCtx) { f32 temp_f22; s32 temp_s0; - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); Math_ScaledStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 0x800); temp_f20 = Math_SinS(temp_s3); temp_f22 = Math_CosS(temp_s3); @@ -1128,7 +1128,7 @@ void func_8089CBEC(EnDinofos* this, GlobalContext* globalCtx) { } void func_8089CF00(EnDinofos* this, GlobalContext* globalCtx) { - SkelAnime_ChangeAnimDefaultStop(&this->skelAnime, &D_060017B8); + Animation_PlayOnce(&this->skelAnime, &D_060017B8); this->colliderJntSph.base.atFlags &= ~AT_ON; if (globalCtx->sceneNum == SCENE_MITURIN) { globalCtx->envCtx.unk_C3 = 255; @@ -1137,13 +1137,13 @@ void func_8089CF00(EnDinofos* this, GlobalContext* globalCtx) { } void func_8089CF70(EnDinofos* this, GlobalContext* globalCtx) { - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime)) { + if (SkelAnime_Update(&this->skelAnime)) { func_8089A9B0(this, globalCtx); } } void func_8089CFAC(EnDinofos* this) { - SkelAnime_ChangeAnimDefaultStop(&this->skelAnime, &D_0600ABD0); + Animation_PlayOnce(&this->skelAnime, &D_0600ABD0); this->actor.flags &= ~1; Audio_PlayActorSound2(&this->actor, NA_SE_EN_RIZA_DEAD); this->actor.speedXZ = 0.0f; @@ -1152,7 +1152,7 @@ void func_8089CFAC(EnDinofos* this) { } void func_8089D018(EnDinofos* this, GlobalContext* globalCtx) { - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime)) { + if (SkelAnime_Update(&this->skelAnime)) { s32 temp_v0 = this->unk_288 - 10; if (this->actor.category == ACTORCAT_ENEMY) { @@ -1172,7 +1172,7 @@ void func_8089D018(EnDinofos* this, GlobalContext* globalCtx) { } this->actor.shape.shadowAlpha = this->unk_288; - } else if (func_801378B8(&this->skelAnime, 26.0f)) { + } else if (Animation_OnFrame(&this->skelAnime, 26.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_GERUDOFT_DOWN); } } @@ -1183,7 +1183,7 @@ void func_8089D11C(EnDinofos* this, s16 arg1) { } else { this->actor.speedXZ = 15.0f; } - SkelAnime_ChangeAnim(&this->skelAnime, &D_0600D62C, this->actor.speedXZ * (1.0f / 7.5f), 0.0f, 0.0f, 0, -4.0f); + Animation_Change(&this->skelAnime, &D_0600D62C, this->actor.speedXZ * (1.0f / 7.5f), 0.0f, 0.0f, 0, -4.0f); this->actor.world.rot.y = BINANG_ADD(this->actor.shape.rot.y, 0x4000); this->unk_292 = 10; this->unk_2A4 = 0.0f; @@ -1195,17 +1195,17 @@ void func_8089D1E0(EnDinofos* this, GlobalContext* globalCtx) { Math_ScaledStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 0xBB8); Math_StepToF(&this->actor.speedXZ, 0.0f, 2.0f); - this->skelAnime.animPlaybackSpeed = + this->skelAnime.playSpeed = (1.0f + fabsf(this->actor.speedXZ * (1.0f / 15.0f))) * ((this->actor.speedXZ >= 0.0f) ? 1.0f : -1.0f); this->actor.world.rot.y = BINANG_ADD(this->actor.shape.rot.y, 0x4000); - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); if (this->unk_292 != 0) { this->unk_292--; } else { func_8089A9B0(this, globalCtx); } - if (func_801378B8(&this->skelAnime, 0.0f) || func_801378B8(&this->skelAnime, 5.0f)) { + if (Animation_OnFrame(&this->skelAnime, 0.0f) || Animation_OnFrame(&this->skelAnime, 5.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_RIZA_WALK); } } @@ -1443,15 +1443,15 @@ void func_8089DC84(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* Collider_UpdateSpheres(limbIndex, &this->colliderJntSph); if (D_8089E3B0[limbIndex] != -1) { - SysMatrix_GetStateTranslation(&this->unk_2D4[D_8089E3B0[limbIndex]]); + Matrix_GetStateTranslation(&this->unk_2D4[D_8089E3B0[limbIndex]]); } if ((limbIndex == 14) && (this->unk_292 != this->unk_290) && ((this->actionFunc == func_8089C56C) || (this->actionFunc == func_8089C2A8))) { Math_Vec3f_Copy(&sp74, &this->colliderQuad.dim.quad[0]); Math_Vec3f_Copy(&sp80, &this->colliderQuad.dim.quad[1]); - SysMatrix_MultiplyVector3fByState(&D_8089E38C, &sp68); - SysMatrix_MultiplyVector3fByState(&D_8089E398, &sp5C); + Matrix_MultiplyVector3fByState(&D_8089E38C, &sp68); + Matrix_MultiplyVector3fByState(&D_8089E398, &sp5C); Collider_SetQuadVertices(&this->colliderQuad, &sp5C, &sp68, &sp74, &sp80); if (this->colliderQuad.base.atFlags & AT_ON) { func_800A81F0(Effect_GetParams(this->unk_2A0), &sp68, &sp5C); @@ -1460,18 +1460,18 @@ void func_8089DC84(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* } if (limbIndex == 4) { - SysMatrix_GetStateTranslationAndScaledX(300.0f, &this->actor.shape.feetPos[0]); + Matrix_GetStateTranslationAndScaledX(300.0f, &this->actor.shape.feetPos[0]); } else if (limbIndex == 7) { - SysMatrix_GetStateTranslationAndScaledX(300.0f, &this->actor.shape.feetPos[1]); + Matrix_GetStateTranslationAndScaledX(300.0f, &this->actor.shape.feetPos[1]); } if ((limbIndex == 16) && (this->actionFunc == func_8089B580)) { - if ((this->skelAnime.animCurrentFrame > 38.0f) && (this->skelAnime.animCurrentFrame <= 55.0f) && + if ((this->skelAnime.curFrame > 38.0f) && (this->skelAnime.curFrame <= 55.0f) && (this->unk_292 != this->unk_290)) { - sp48 = SysMatrix_GetCurrentState(); - sp58 = 48 - (s32)this->skelAnime.animCurrentFrame; + sp48 = Matrix_GetCurrentState(); + sp58 = 48 - (s32)this->skelAnime.curFrame; sp58 = CLAMP_MIN(sp58, 0); - SysMatrix_MultiplyVector3fByState(&D_8089E3A4, &sp4C); + Matrix_MultiplyVector3fByState(&D_8089E3A4, &sp4C); sp4C.x -= sp48->mf[3][0]; sp4C.y -= sp48->mf[3][1]; sp4C.z -= sp48->mf[3][2]; @@ -1495,8 +1495,8 @@ void EnDinofos_Draw(Actor* thisx, GlobalContext* globalCtx) { Scene_SetRenderModeXlu(globalCtx, 0, 1); POLY_OPA_DISP = - SkelAnime_DrawSV2(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, - this->skelAnime.dListCount, func_8089DC4C, func_8089DC84, &this->actor, POLY_OPA_DISP); + SkelAnime_DrawFlex(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, + this->skelAnime.dListCount, func_8089DC4C, func_8089DC84, &this->actor, POLY_OPA_DISP); } else { func_8012C2DC(globalCtx->state.gfxCtx); func_800B8118(&this->actor, globalCtx, 0); @@ -1506,8 +1506,8 @@ void EnDinofos_Draw(Actor* thisx, GlobalContext* globalCtx) { Scene_SetRenderModeXlu(globalCtx, 1, 2); POLY_XLU_DISP = - SkelAnime_DrawSV2(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, - this->skelAnime.dListCount, func_8089DC4C, func_8089DC84, &this->actor, POLY_XLU_DISP); + SkelAnime_DrawFlex(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, + this->skelAnime.dListCount, func_8089DC4C, func_8089DC84, &this->actor, POLY_XLU_DISP); } func_800BE680(globalCtx, &this->actor, this->unk_2D4, 12, this->unk_2B4, this->unk_2B8, this->unk_2B0, diff --git a/src/overlays/actors/ovl_En_Dnb/z_en_dnb.c b/src/overlays/actors/ovl_En_Dnb/z_en_dnb.c index 6aab7a2cd..780ce1cda 100644 --- a/src/overlays/actors/ovl_En_Dnb/z_en_dnb.c +++ b/src/overlays/actors/ovl_En_Dnb/z_en_dnb.c @@ -163,17 +163,17 @@ void func_80A50510(EnDnb* this, GlobalContext* globalCtx) { func_8012C2DC(globalCtx->state.gfxCtx); for (i = 0; i < ARRAY_COUNT(this->particles); i++) { - SysMatrix_StatePush(); - SysMatrix_InsertTranslation(this->particles[i].unk_0C.x, this->particles[i].unk_0C.y, - this->particles[i].unk_0C.z, MTXMODE_NEW); - SysMatrix_InsertXRotation_s(this->particles[i].unk_18.x, MTXMODE_APPLY); + Matrix_StatePush(); + Matrix_InsertTranslation(this->particles[i].unk_0C.x, this->particles[i].unk_0C.y, this->particles[i].unk_0C.z, + MTXMODE_NEW); + Matrix_InsertXRotation_s(this->particles[i].unk_18.x, MTXMODE_APPLY); Matrix_RotateY(this->particles[i].unk_18.y, MTXMODE_APPLY); - SysMatrix_InsertZRotation_s(this->particles[i].unk_18.z, MTXMODE_APPLY); + Matrix_InsertZRotation_s(this->particles[i].unk_18.z, MTXMODE_APPLY); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_XLU_DISP++, gfx[i]); - SysMatrix_StatePop(); + Matrix_StatePop(); } CLOSE_DISPS(globalCtx->state.gfxCtx); @@ -188,17 +188,17 @@ void func_80A5063C(EnDnb* this, GlobalContext* globalCtx) { func_8012C28C(globalCtx->state.gfxCtx); for (i = 0; i < ARRAY_COUNT(this->particles); i++) { - SysMatrix_StatePush(); - SysMatrix_InsertTranslation(this->particles[i].unk_0C.x, this->particles[i].unk_0C.y, - this->particles[i].unk_0C.z, MTXMODE_NEW); - SysMatrix_InsertXRotation_s(this->particles[i].unk_18.x, MTXMODE_APPLY); + Matrix_StatePush(); + Matrix_InsertTranslation(this->particles[i].unk_0C.x, this->particles[i].unk_0C.y, this->particles[i].unk_0C.z, + MTXMODE_NEW); + Matrix_InsertXRotation_s(this->particles[i].unk_18.x, MTXMODE_APPLY); Matrix_RotateY(this->particles[i].unk_18.y, MTXMODE_APPLY); - SysMatrix_InsertZRotation_s(this->particles[i].unk_18.z, MTXMODE_APPLY); + Matrix_InsertZRotation_s(this->particles[i].unk_18.z, MTXMODE_APPLY); gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_OPA_DISP++, gfx[i]); - SysMatrix_StatePop(); + Matrix_StatePop(); } CLOSE_DISPS(globalCtx->state.gfxCtx); @@ -279,16 +279,16 @@ s32 func_80A50950(EnDnbUnkStruct* arg0, GlobalContext* globalCtx2) { gDPSetEnvColor(POLY_XLU_DISP++, 255, 255, 255, 0); isGfxSetup = true; } - SysMatrix_StatePush(); + Matrix_StatePush(); if (1) {}; arg0->unk_24 = (arg0->unk_01 / (f32)arg0->unk_02) * 255.0f; gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, 255, 255, 255, (u8)arg0->unk_24); - SysMatrix_InsertTranslation(arg0->unk_0C.x, arg0->unk_0C.y, arg0->unk_0C.z, MTXMODE_NEW); + Matrix_InsertTranslation(arg0->unk_0C.x, arg0->unk_0C.y, arg0->unk_0C.z, MTXMODE_NEW); Matrix_Scale(arg0->unk_04, arg0->unk_04, 1.0f, MTXMODE_APPLY); - SysMatrix_NormalizeXYZ(&globalCtx->mf_187FC); + Matrix_NormalizeXYZ(&globalCtx->mf_187FC); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); @@ -296,7 +296,7 @@ s32 func_80A50950(EnDnbUnkStruct* arg0, GlobalContext* globalCtx2) { gSPSegment(POLY_XLU_DISP++, 0x08, Lib_SegmentedToVirtual(D_80A50CBC[idx])); gSPDisplayList(POLY_XLU_DISP++, D_06000020); - SysMatrix_StatePop(); + Matrix_StatePop(); sp5C += 1; } } diff --git a/src/overlays/actors/ovl_En_Dnk/z_en_dnk.c b/src/overlays/actors/ovl_En_Dnk/z_en_dnk.c index 067f16642..59a39f65a 100644 --- a/src/overlays/actors/ovl_En_Dnk/z_en_dnk.c +++ b/src/overlays/actors/ovl_En_Dnk/z_en_dnk.c @@ -148,14 +148,14 @@ s32 func_80A514F0(SkelAnime* skelAnime, s16 animIndex) { sp30 = true; frameCount = sAnimations[animIndex].frameCount; if (frameCount < 0) { - frameCount = SkelAnime_GetFrameCount(&(sAnimations[animIndex].animationSeg)->common); + frameCount = Animation_GetLastFrame(sAnimations[animIndex].animationSeg); } frame = sAnimations[animIndex].frame; if (frame < 0) { frame = frameCount; } - SkelAnime_ChangeAnim(skelAnime, sAnimations[animIndex].animationSeg, sAnimations[animIndex].playbackSpeed, - frame, frameCount, sAnimations[animIndex].mode, sAnimations[animIndex].transitionRate); + Animation_Change(skelAnime, sAnimations[animIndex].animationSeg, sAnimations[animIndex].playbackSpeed, + frame, frameCount, sAnimations[animIndex].mode, sAnimations[animIndex].transitionRate); } } return sp30; @@ -263,7 +263,7 @@ void EnDnk_Update(Actor* thisx, GlobalContext* globalCtx) { s32 pad; this->actionFunc(this, globalCtx); - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); func_80A515C4(this); Actor_SetHeight(&this->actor, 34.0f); Collider_UpdateCylinder(&this->actor, &this->collider); @@ -288,10 +288,10 @@ void func_80A51AA4(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* Vec3s sp3C; if (limbIndex == 2) { - SysMatrix_MultiplyVector3fByState(&sp50, &sp44); - SysMatrix_CopyCurrentState(&sp5C); + Matrix_MultiplyVector3fByState(&sp50, &sp44); + Matrix_CopyCurrentState(&sp5C); func_8018219C(&sp5C, &sp3C, 0); - SysMatrix_InsertTranslation(sp44.x, sp44.y, sp44.z, MTXMODE_NEW); + Matrix_InsertTranslation(sp44.x, sp44.y, sp44.z, MTXMODE_NEW); Matrix_Scale(this->actor.scale.x, this->actor.scale.y, this->actor.scale.z, MTXMODE_APPLY); if (this->unk_28C & 0x10) { if (this->unk_28C & 0x20) { @@ -315,8 +315,8 @@ void func_80A51AA4(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* } Matrix_RotateY(this->unk_292, MTXMODE_APPLY); - SysMatrix_InsertXRotation_s(this->unk_290, MTXMODE_APPLY); - SysMatrix_InsertZRotation_s(this->unk_294, MTXMODE_APPLY); + Matrix_InsertXRotation_s(this->unk_290, MTXMODE_APPLY); + Matrix_InsertZRotation_s(this->unk_294, MTXMODE_APPLY); } OPEN_DISPS(globalCtx->state.gfxCtx); @@ -342,8 +342,8 @@ void func_80A51CB8(EnDnk* this, GlobalContext* globalCtx) { gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(D_80A5245C[this->unk_2A0])); gDPPipeSync(POLY_OPA_DISP++); - SkelAnime_Draw(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, func_80A51A78, func_80A51AA4, - &this->actor); + SkelAnime_DrawOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, func_80A51A78, func_80A51AA4, + &this->actor); CLOSE_DISPS(globalCtx->state.gfxCtx); } @@ -364,10 +364,10 @@ void func_80A51DA4(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* Vec3s sp3C; if (limbIndex == 2) { - SysMatrix_MultiplyVector3fByState(&sp50, &sp44); - SysMatrix_CopyCurrentState(&sp5C); + Matrix_MultiplyVector3fByState(&sp50, &sp44); + Matrix_CopyCurrentState(&sp5C); func_8018219C(&sp5C, &sp3C, 0); - SysMatrix_InsertTranslation(sp44.x, sp44.y, sp44.z, MTXMODE_NEW); + Matrix_InsertTranslation(sp44.x, sp44.y, sp44.z, MTXMODE_NEW); Matrix_Scale(this->actor.scale.x, this->actor.scale.y, this->actor.scale.z, MTXMODE_APPLY); if (this->unk_28C & 0x10) { @@ -392,8 +392,8 @@ void func_80A51DA4(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* } Matrix_RotateY(this->unk_292, MTXMODE_APPLY); - SysMatrix_InsertXRotation_s(this->unk_290, MTXMODE_APPLY); - SysMatrix_InsertZRotation_s(this->unk_294, MTXMODE_APPLY); + Matrix_InsertXRotation_s(this->unk_290, MTXMODE_APPLY); + Matrix_InsertZRotation_s(this->unk_294, MTXMODE_APPLY); } OPEN_DISPS(globalCtx->state.gfxCtx); @@ -406,8 +406,8 @@ void func_80A51DA4(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* void func_80A51FC0(EnDnk* this, GlobalContext* globalCtx) { func_8012C28C(globalCtx->state.gfxCtx); - SkelAnime_Draw(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, func_80A51D78, func_80A51DA4, - &this->actor); + SkelAnime_DrawOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, func_80A51D78, func_80A51DA4, + &this->actor); } void func_80A52018(Actor* thisx, GlobalContext* globalCtx) { diff --git a/src/overlays/actors/ovl_En_Dno/z_en_dno.c b/src/overlays/actors/ovl_En_Dno/z_en_dno.c index b39ac6640..ff7e3de3b 100644 --- a/src/overlays/actors/ovl_En_Dno/z_en_dno.c +++ b/src/overlays/actors/ovl_En_Dno/z_en_dno.c @@ -172,7 +172,7 @@ void func_80A715DC(EnDno* this, GlobalContext* globalCtx) { &this->actor.world.pos, &sp88)) { Math_Vec3f_Diff(&this->actor.world.pos, &crace->actor.home.pos, &sp7C); Matrix_RotateY(-crace->actor.home.rot.y, 0); - SysMatrix_MultiplyVector3fByState(&sp7C, &sp70); + Matrix_MultiplyVector3fByState(&sp7C, &sp70); if ((fabsf(sp70.x) < 100.0f) && (sp70.y >= -10.0f) && (sp70.y <= 180.0f) && (sp70.z < 0.0f)) { crace->unk_170 |= 1; } @@ -213,19 +213,19 @@ void EnDno_Init(Actor* thisx, GlobalContext* globalCtx) { if (actor == NULL) { Actor_ProcessInitChain(thisx, sInitChain); ActorShape_Init(&thisx->shape, 0.0f, func_800B3FC0, 21.0f); - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_0600E1F8, &D_06007CA4, this->jointTable, this->morphTable, - 28); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_0600E1F8, &D_06007CA4, this->jointTable, + this->morphTable, 28); Collider_InitCylinder(globalCtx, &this->collider); Collider_SetCylinder(globalCtx, &this->collider, thisx, &sCylinderInit); Actor_UpdateBgCheckInfo(globalCtx, thisx, 0.0f, 0.0f, 0.0f, 4); - SkelAnime_ChangeAnim(&this->skelAnime, sAnimations[14].animationSeg, 1.0f, 0.0f, - SkelAnime_GetFrameCount(&(sAnimations[14].animationSeg)->common), sAnimations[14].mode, - sAnimations[14].transitionRate); + Animation_Change(&this->skelAnime, sAnimations[14].animationSeg, 1.0f, 0.0f, + Animation_GetLastFrame(sAnimations[14].animationSeg), sAnimations[14].mode, + sAnimations[14].transitionRate); this->unk_3BE = 0x3E93; this->unk_3C0 = 60.0f; this->unk_3B0 = 0; this->unk_468 = 99; - this->skelAnime.animPlaybackSpeed = 0.0f; + this->skelAnime.playSpeed = 0.0f; switch (ENDNO_GET_C000(thisx)) { case ENDNO_GET_C000_0: @@ -309,7 +309,7 @@ void func_80A71C3C(EnDno* this, GlobalContext* globalCtx) { case 3: case 10: - if (this->skelAnime.animCurrentFrame == this->skelAnime.animFrameCount) { + if (this->skelAnime.curFrame == this->skelAnime.endFrame) { func_8013E1C8(&this->skelAnime, sAnimations, 13, &this->unk_32C); } break; @@ -319,7 +319,7 @@ void func_80A71C3C(EnDno* this, GlobalContext* globalCtx) { break; case 15: - if (this->skelAnime.animCurrentFrame == this->skelAnime.animFrameCount) { + if (this->skelAnime.curFrame == this->skelAnime.endFrame) { func_8013E1C8(&this->skelAnime, sAnimations, 6, &this->unk_32C); } @@ -390,8 +390,7 @@ void func_80A71F18(EnDno* this, GlobalContext* globalCtx) { case 0x80F: if (this->unk_32C == 13) { func_8013E1C8(&this->skelAnime, sAnimations, 4, &this->unk_32C); - } else if ((this->unk_32C == 4) && - (this->skelAnime.animCurrentFrame == this->skelAnime.animFrameCount)) { + } else if ((this->unk_32C == 4) && (this->skelAnime.curFrame == this->skelAnime.endFrame)) { func_8013E1C8(&this->skelAnime, sAnimations, 11, &this->unk_32C); func_801518B0(globalCtx, this->unk_464, &this->actor); } @@ -404,7 +403,7 @@ void func_80A71F18(EnDno* this, GlobalContext* globalCtx) { if (globalCtx->msgCtx.unk11F04 == 0x80B) { switch (this->unk_32C) { case 16: - if (this->skelAnime.animCurrentFrame == this->skelAnime.animFrameCount) { + if (this->skelAnime.curFrame == this->skelAnime.endFrame) { func_8013E1C8(&this->skelAnime, sAnimations, 9, &this->unk_32C); } Math_ScaledStepToS(&this->actor.shape.rot.y, @@ -412,7 +411,7 @@ void func_80A71F18(EnDno* this, GlobalContext* globalCtx) { break; case 10: - if (this->skelAnime.animCurrentFrame == this->skelAnime.animFrameCount) { + if (this->skelAnime.curFrame == this->skelAnime.endFrame) { func_801477B4(globalCtx); func_8013E1C8(&this->skelAnime, sAnimations, 0xD, &this->unk_32C); func_80A71B68(this, globalCtx); @@ -429,7 +428,7 @@ void func_80A71F18(EnDno* this, GlobalContext* globalCtx) { case 0x80B: switch (this->unk_32C) { case 16: - if (this->skelAnime.animCurrentFrame == this->skelAnime.animFrameCount) { + if (this->skelAnime.curFrame == this->skelAnime.endFrame) { func_8013E1C8(&this->skelAnime, sAnimations, 9, &this->unk_32C); } break; @@ -442,7 +441,7 @@ void func_80A71F18(EnDno* this, GlobalContext* globalCtx) { break; case 10: - if (this->skelAnime.animCurrentFrame == this->skelAnime.animFrameCount) { + if (this->skelAnime.curFrame == this->skelAnime.endFrame) { func_801477B4(globalCtx); func_8013E1C8(&this->skelAnime, sAnimations, 13, &this->unk_32C); func_80A71B68(this, globalCtx); @@ -467,7 +466,7 @@ void func_80A71F18(EnDno* this, GlobalContext* globalCtx) { if (this->unk_32C == 11) { func_8013E1C8(&this->skelAnime, sAnimations, 3, &this->unk_32C); } else if (this->unk_32C == 3) { - if (this->skelAnime.animCurrentFrame == this->skelAnime.animFrameCount) { + if (this->skelAnime.curFrame == this->skelAnime.endFrame) { func_8013E1C8(&this->skelAnime, sAnimations, 13, &this->unk_32C); } } else if ((this->unk_32C == 13) && func_80147624(globalCtx)) { @@ -496,7 +495,7 @@ void func_80A71F18(EnDno* this, GlobalContext* globalCtx) { break; case 15: - if (this->skelAnime.animCurrentFrame == this->skelAnime.animFrameCount) { + if (this->skelAnime.curFrame == this->skelAnime.endFrame) { func_8013E1C8(&this->skelAnime, sAnimations, 6, &this->unk_32C); } break; @@ -564,8 +563,7 @@ void func_80A725F8(EnDno* this, GlobalContext* globalCtx) { if (Math_ScaledStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 0x2D8)) { func_8013E1C8(&this->skelAnime, sAnimations, 5, &this->unk_32C); } - } else if ((this->unk_32C == 5) && - func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { + } else if ((this->unk_32C == 5) && Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { if (Flags_GetSwitch(globalCtx, ENDNO_GET_3F80(&this->actor))) { func_801518B0(globalCtx, 0x801, &this->actor); } else if (Player_GetMask(globalCtx) == PLAYER_MASK_MASK_OF_SCENTS) { @@ -596,18 +594,18 @@ void func_80A725F8(EnDno* this, GlobalContext* globalCtx) { if (((globalCtx->msgCtx.unk11F04 == 0x800) || (globalCtx->msgCtx.unk11F04 == 0x801)) && (this->unk_32C == 8)) { Math_SmoothStepToF(&this->unk_454, 1.0f, 1.0f, 0.1f, 0.01f); - if (this->skelAnime.animCurrentFrame <= 23.0f) { + if (this->skelAnime.curFrame <= 23.0f) { this->unk_452 = 3; - if (func_801378B8(&this->skelAnime, 23.0f)) { + if (Animation_OnFrame(&this->skelAnime, 23.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EV_OPEN_AMBRELLA); } - } else if (this->skelAnime.animCurrentFrame <= 24.0f) { + } else if (this->skelAnime.curFrame <= 24.0f) { this->unk_452 = 4; - } else if (this->skelAnime.animCurrentFrame >= 25.0f) { + } else if (this->skelAnime.curFrame >= 25.0f) { this->unk_452 = 2; } - if (func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { + if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { func_8013E1C8(&this->skelAnime, sAnimations, 12, &this->unk_32C); func_801518B0(globalCtx, 0x803, &this->actor); } @@ -656,8 +654,7 @@ void func_80A725F8(EnDno* this, GlobalContext* globalCtx) { this->unk_3B0 |= 0x40; } } - } else if ((this->unk_32C == 5) && - (this->skelAnime.animCurrentFrame == this->skelAnime.animFrameCount)) { + } else if ((this->unk_32C == 5) && (this->skelAnime.curFrame == this->skelAnime.endFrame)) { func_801477B4(globalCtx); func_80A72438(this, globalCtx); } @@ -684,7 +681,7 @@ void func_80A72AE4(EnDno* this, GlobalContext* globalCtx) { } void func_80A72B3C(EnDno* this, GlobalContext* globalCtx) { - if (func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { + if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { this->unk_44E = 0; func_80A72C04(this, globalCtx); } @@ -785,7 +782,7 @@ void func_80A730A0(EnDno* this, GlobalContext* globalCtx) { f32 temp_f10; s32 phi_a2; - if (func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { + if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { phi_a2 = -1; switch (this->unk_32C) { case 0: @@ -850,18 +847,18 @@ void func_80A732C8(EnDno* this, GlobalContext* globalCtx) { func_8013E1C8(&this->skelAnime, sAnimations, 7, &this->unk_32C); } } else if (this->unk_44E == 3) { - if (func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { + if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { func_8013E1C8(&this->skelAnime, sAnimations, 14, &this->unk_32C); func_80A72438(this, globalCtx); } else { - if (this->skelAnime.animCurrentFrame >= 20.0f) { + if (this->skelAnime.curFrame >= 20.0f) { Math_SmoothStepToF(&this->unk_454, 0.0f, 1.0f, 0.125f, 0.01f); } - if (func_801378B8(&this->skelAnime, 4.0f)) { + if (Animation_OnFrame(&this->skelAnime, 4.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EV_CLOSE_AMBRELLA); this->unk_452 = 4; - } else if (func_801378B8(&this->skelAnime, 5.0f)) { + } else if (Animation_OnFrame(&this->skelAnime, 5.0f)) { this->unk_452 = 3; } } @@ -899,7 +896,7 @@ void func_80A73408(EnDno* this, GlobalContext* globalCtx) { func_800EDF24(&this->actor, globalCtx, temp_v0); } - if ((func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) && (this->unk_32C == 17)) { + if ((Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) && (this->unk_32C == 17)) { if (0) {}; func_8013E1C8(&this->skelAnime, sAnimations, 18, &this->unk_32C); } @@ -909,7 +906,7 @@ void EnDno_Update(Actor* thisx, GlobalContext* globalCtx) { EnDno* this = THIS; s32 pad; - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); func_80A73408(this, globalCtx); this->actionFunc(this, globalCtx); if (this->unk_3B0 & 4) { @@ -923,8 +920,8 @@ void EnDno_Update(Actor* thisx, GlobalContext* globalCtx) { void EnDno_Draw(Actor* thisx, GlobalContext* globalCtx) { EnDno* this = THIS; - SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, - EnDno_OverrideLimbDraw, EnDno_PostLimbDraw, &this->actor); + SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, + EnDno_OverrideLimbDraw, EnDno_PostLimbDraw, &this->actor); } s32 EnDno_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) { @@ -987,8 +984,8 @@ void EnDno_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Ve func_8012C28C(globalCtx->state.gfxCtx); if (limbIndex == 13) { - Matrix_Scale(this->unk_454, this->unk_454, this->unk_454, 1); - SysMatrix_InsertXRotation_s(this->unk_45C, 1); + Matrix_Scale(this->unk_454, this->unk_454, this->unk_454, MTXMODE_APPLY); + Matrix_InsertXRotation_s(this->unk_45C, 1); } gfxOpa = POLY_OPA_DISP; @@ -1004,13 +1001,13 @@ void EnDno_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Ve OPEN_DISPS(globalCtx->state.gfxCtx); - SysMatrix_StatePush(); + Matrix_StatePush(); frames = globalCtx->gameplayFrames; - SysMatrix_MultiplyVector3fByState(&D_80A73B40, &sp84); + Matrix_MultiplyVector3fByState(&D_80A73B40, &sp84); func_80A711D0(this, globalCtx, &sp84); - SysMatrix_NormalizeXYZ(&globalCtx->mf_187FC); - Matrix_Scale(0.15f, 0.15f, 1.0f, 1); - SysMatrix_InsertTranslation(0.0f, -3200.0f, 0.0f, 1); + Matrix_NormalizeXYZ(&globalCtx->mf_187FC); + Matrix_Scale(0.15f, 0.15f, 1.0f, MTXMODE_APPLY); + Matrix_InsertTranslation(0.0f, -3200.0f, 0.0f, MTXMODE_APPLY); gfxXlu = func_8012C2B4(POLY_XLU_DISP); gSPMatrix(gfxXlu, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); @@ -1022,7 +1019,7 @@ void EnDno_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Ve POLY_XLU_DISP = gfxXlu + 5; - SysMatrix_StatePop(); + Matrix_StatePop(); CLOSE_DISPS(globalCtx->state.gfxCtx); } diff --git a/src/overlays/actors/ovl_En_Dnp/z_en_dnp.c b/src/overlays/actors/ovl_En_Dnp/z_en_dnp.c index 5c354d5d0..7477bbcc5 100644 --- a/src/overlays/actors/ovl_En_Dnp/z_en_dnp.c +++ b/src/overlays/actors/ovl_En_Dnp/z_en_dnp.c @@ -102,38 +102,38 @@ static s32 D_80B3DE58[] = { s32 func_80B3CA20(EnDnp* this) { if ((this->unk_340 == 2) || (this->unk_340 == 9)) { - if (func_801378B8(&this->skelAnime, 1.0f) || func_801378B8(&this->skelAnime, 5.0f) || - func_801378B8(&this->skelAnime, 9.0f) || func_801378B8(&this->skelAnime, 13.0f)) { + if (Animation_OnFrame(&this->skelAnime, 1.0f) || Animation_OnFrame(&this->skelAnime, 5.0f) || + Animation_OnFrame(&this->skelAnime, 9.0f) || Animation_OnFrame(&this->skelAnime, 13.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_DEKUHIME_TURN); } } else if ((this->unk_340 == 24) || (this->unk_340 == 7)) { - if (func_801378B8(&this->skelAnime, 1.0f)) { + if (Animation_OnFrame(&this->skelAnime, 1.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_DEKUHIME_TURN); } } else if (this->unk_340 == 14) { - if (func_801378B8(&this->skelAnime, 7.0f)) { + if (Animation_OnFrame(&this->skelAnime, 7.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_DEKUHIME_GREET); } - if (func_801378B8(&this->skelAnime, 22.0f)) { + if (Animation_OnFrame(&this->skelAnime, 22.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_DEKUHIME_GREET2); } } else if (this->unk_340 == 8) { - if (func_801378B8(&this->skelAnime, 9.0f)) { + if (Animation_OnFrame(&this->skelAnime, 9.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_DEKUHIME_GREET); } - if (func_801378B8(&this->skelAnime, 18.0f)) { + if (Animation_OnFrame(&this->skelAnime, 18.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_DEKUHIME_GREET2); } } else if ((this->unk_340 == 17) && (this->unk_340 == 18)) { - if (func_801378B8(&this->skelAnime, 7.0f) || func_801378B8(&this->skelAnime, 15.0f)) { + if (Animation_OnFrame(&this->skelAnime, 7.0f) || Animation_OnFrame(&this->skelAnime, 15.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_DEKUHIME_WALK); } } else if (this->unk_340 == 21) { - if (func_801378B8(&this->skelAnime, 17.0f)) { + if (Animation_OnFrame(&this->skelAnime, 17.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_DEKUHIME_WALK); } } else if (this->unk_340 == 23) { - if (func_801378B8(&this->skelAnime, 3.0f)) { + if (Animation_OnFrame(&this->skelAnime, 3.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_DEKUHIME_WALK); } } @@ -289,7 +289,7 @@ void func_80B3D11C(EnDnp* this, GlobalContext* globalCtx) { this->unk_324 = val; if (((this->unk_340 == 10) || (this->unk_340 == 12) || (this->unk_340 == 5) || (this->unk_340 == 19) || (this->unk_340 == 22) || (this->unk_340 == 24)) && - func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { + Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { func_80B3CC38(this, this->unk_340 + 1); } func_800EDF24(&this->actor, globalCtx, temp_v0); @@ -358,7 +358,7 @@ void EnDnp_Init(Actor* thisx, GlobalContext* globalCtx) { EnDnp* this = THIS; ActorShape_Init(&this->actor.shape, 0.0f, func_800B3FC0, 16.0f); - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_06010D60, NULL, this->jointTable, this->morphTable, 26); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_06010D60, NULL, this->jointTable, this->morphTable, 26); this->unk_340 = -1; func_80B3CC38(this, 15); Collider_InitAndSetCylinder(globalCtx, &this->collider, &this->actor, &sCylinderInit); @@ -405,12 +405,12 @@ void EnDnp_Update(Actor* thisx, GlobalContext* globalCtx) { if (!func_80B3CF60(this, globalCtx) && func_80B3D044(this, globalCtx)) { func_80B3D11C(this, globalCtx); - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); func_80B3CD1C(this); func_80B3CEC0(this, globalCtx); } else { this->actionFunc(this, globalCtx); - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); func_80B3CD1C(this); func_80B3CEC0(this, globalCtx); Actor_SetVelocityAndMoveYRotationAndGravity(&this->actor); @@ -435,8 +435,8 @@ s32 func_80B3D974(s16 arg0, s16 arg1, Vec3f* arg2, Vec3s* arg3, s32 arg4, s32 ar Vec3s sp6C; MtxF sp2C; - SysMatrix_MultiplyVector3fByState(&D_801D15B0, &sp74); - SysMatrix_CopyCurrentState(&sp2C); + Matrix_MultiplyVector3fByState(&D_801D15B0, &sp74); + Matrix_CopyCurrentState(&sp2C); func_8018219C(&sp2C, &sp6C, 0); *arg2 = sp74; if (arg4 == 0) { @@ -478,13 +478,13 @@ void func_80B3DAA0(GlobalContext* globalCtx, s32 limbIndex, Actor* thisx) { if (limbIndex == 12) { func_80B3D974(this->unk_330 + 0x4000, this->unk_332 + this->actor.shape.rot.y + 0x4000, &this->unk_1D8, &this->unk_1E4, phi_v1, phi_v0); - SysMatrix_StatePop(); - SysMatrix_InsertTranslation(this->unk_1D8.x, this->unk_1D8.y, this->unk_1D8.z, MTXMODE_NEW); + Matrix_StatePop(); + Matrix_InsertTranslation(this->unk_1D8.x, this->unk_1D8.y, this->unk_1D8.z, MTXMODE_NEW); Matrix_Scale(this->actor.scale.x, this->actor.scale.y, this->actor.scale.z, MTXMODE_APPLY); Matrix_RotateY(this->unk_1E4.y, MTXMODE_APPLY); - SysMatrix_InsertXRotation_s(this->unk_1E4.x, MTXMODE_APPLY); - SysMatrix_InsertZRotation_s(this->unk_1E4.z, MTXMODE_APPLY); - SysMatrix_StatePush(); + Matrix_InsertXRotation_s(this->unk_1E4.x, MTXMODE_APPLY); + Matrix_InsertZRotation_s(this->unk_1E4.z, MTXMODE_APPLY); + Matrix_StatePush(); } } @@ -504,8 +504,8 @@ void EnDnp_Draw(Actor* thisx, GlobalContext* globalCtx) { gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(D_80B3DEAC[this->unk_336])); - func_801343C0(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, - NULL, func_80B3DA88, func_80B3DAA0, &this->actor); + func_801343C0(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, NULL, + func_80B3DA88, func_80B3DAA0, &this->actor); CLOSE_DISPS(globalCtx->state.gfxCtx); } diff --git a/src/overlays/actors/ovl_En_Dnq/z_en_dnq.c b/src/overlays/actors/ovl_En_Dnq/z_en_dnq.c index 861095e14..e392e6d60 100644 --- a/src/overlays/actors/ovl_En_Dnq/z_en_dnq.c +++ b/src/overlays/actors/ovl_En_Dnq/z_en_dnq.c @@ -148,7 +148,7 @@ s32 func_80A526F8(EnDnq* this) { this->unk_38C = ((s32)(Rand_ZeroOne() * 100.0f) % 4) + 3; this->unk_388 = 0; this->unk_386 = 1; - } else if (func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { + } else if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { switch (this->unk_398) { case 8: if (DECR(this->unk_38C) == 0) { @@ -186,7 +186,7 @@ s32 func_80A526F8(EnDnq* this) { } if (this->unk_386 != 0) { - this->skelAnime.animCurrentFrame = 0.0f; + this->skelAnime.curFrame = 0.0f; } } @@ -204,7 +204,7 @@ s32 func_80A52944(EnDnq* this) { this->unk_386 = 1; phi_v1 = this->unk_38C * 0x2000; this->actor.shape.rot.y += phi_v1; - } else if (func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { + } else if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { this->unk_386++; if (this->unk_386 >= 6) { func_80A5257C(this, 12); @@ -212,11 +212,11 @@ s32 func_80A52944(EnDnq* this) { phi_v1 = this->unk_38C * 0x2000; } else if (this->unk_386 <= 3) { this->unk_38C = -this->unk_38C; - this->skelAnime.animCurrentFrame = 0.0f; + this->skelAnime.curFrame = 0.0f; phi_v1 = this->unk_38C * 0x2000; } else { func_80A5257C(this, 13); - this->skelAnime.animCurrentFrame = 0.0f; + this->skelAnime.curFrame = 0.0f; } this->actor.shape.rot.y = this->actor.world.rot.y; this->actor.shape.rot.y += phi_v1; @@ -242,14 +242,14 @@ s32 func_80A52A78(EnDnq* this, GlobalContext* globalCtx) { this->unk_38C--; } - if (func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { + if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { if (this->unk_38C == 0) { this->unk_38C = Rand_S16Offset(20, 20); this->unk_388 += 3; this->unk_388 %= 5; } func_80A5257C(this, D_80A535DC[this->unk_388]); - this->skelAnime.animCurrentFrame = 0.0f; + this->skelAnime.curFrame = 0.0f; } this->unk_386 = 0; @@ -403,12 +403,12 @@ void func_80A53038(EnDnq* this, GlobalContext* globalCtx) { this->unk_1DC = temp_v1; } - if ((this->unk_398 == 4) && func_801378B8(&this->skelAnime, 2.0f)) { + if ((this->unk_398 == 4) && Animation_OnFrame(&this->skelAnime, 2.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_KINGNUTS_DAMAGE); } if (((this->unk_398 == 3) || (this->unk_398 == 6)) && - func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { + Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { func_80A5257C(this, this->unk_398 + 1); } @@ -420,7 +420,7 @@ void EnDnq_Init(Actor* thisx, GlobalContext* globalCtx) { EnDnq* this = THIS; ActorShape_Init(&this->actor.shape, 0.0f, NULL, 14.0f); - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_0600EB48, NULL, this->jointTable, this->morphTable, 33); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_0600EB48, NULL, this->jointTable, this->morphTable, 33); this->unk_398 = -1; func_80A5257C(this, 0); Collider_InitAndSetCylinder(globalCtx, &this->collider, &this->actor, &sCylinderInit); @@ -450,11 +450,11 @@ void EnDnq_Update(Actor* thisx, GlobalContext* globalCtx) { if (!func_80A52D44(this, globalCtx) && func_80A52648(this, globalCtx)) { func_80A53038(this, globalCtx); - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); } else { this->actionFunc(this, globalCtx); func_80A52B68(this, globalCtx); - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); Actor_UpdateBgCheckInfo(globalCtx, &this->actor, 30.0f, 12.0f, 0.0f, 4); this->unk_394 = this->actor.xzDistToPlayer; func_80A52C6C(this, globalCtx); @@ -470,6 +470,6 @@ void EnDnq_Draw(Actor* thisx, GlobalContext* globalCtx) { EnDnq* this = THIS; func_8012C28C(globalCtx->state.gfxCtx); - SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, NULL, - NULL, &this->actor); + SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, + NULL, NULL, &this->actor); } diff --git a/src/overlays/actors/ovl_En_Dns/z_en_dns.c b/src/overlays/actors/ovl_En_Dns/z_en_dns.c index 7d33a75ad..373e69880 100644 --- a/src/overlays/actors/ovl_En_Dns/z_en_dns.c +++ b/src/overlays/actors/ovl_En_Dns/z_en_dns.c @@ -84,7 +84,7 @@ void func_8092C5C0(EnDns* this) { s32 pad; if (((this->unk_2F8 == 2) || (this->unk_2F8 == 3) || (this->unk_2F8 == 6) || (this->unk_2F8 == 7)) && - (func_801378B8(&this->skelAnime, 0.0f) || func_801378B8(&this->skelAnime, 3.0f))) { + (Animation_OnFrame(&this->skelAnime, 0.0f) || Animation_OnFrame(&this->skelAnime, 3.0f))) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_NUTS_WALK); } } @@ -226,7 +226,7 @@ s32 func_8092CAD0(EnDns* this, GlobalContext* globalCtx) { if (ENDNS_GET_4000(&this->actor)) { this->unk_2F0 = 0.0f; if (this->unk_2D2 != 0) { - this->unk_2F0 = this->skelAnime.animCurrentFrame; + this->unk_2F0 = this->skelAnime.curFrame; func_8092C63C(this, 2); } this->unk_2DA = this->actor.world.rot.y; @@ -303,10 +303,10 @@ s32 func_8092CE38(EnDns* this) { Vec3f sp2C; s32 ret = false; - if ((this->unk_2C6 & 0x200) || func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { + if ((this->unk_2C6 & 0x200) || Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { func_8092C63C(this, D_8092DE00[this->unk_2D2]); this->unk_2C6 &= ~0x200; - this->skelAnime.animCurrentFrame = 0.0f; + this->skelAnime.curFrame = 0.0f; if (this->unk_2D2 == 2) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_NUTS_JUMP); } @@ -317,25 +317,25 @@ s32 func_8092CE38(EnDns* this) { ret = true; } else { if (this->unk_2D2 == 0) { - if (func_801378B8(&this->skelAnime, 13.0f)) { + if (Animation_OnFrame(&this->skelAnime, 13.0f)) { this->actor.world.rot.y = BINANG_ROT180(this->actor.world.rot.y); this->unk_2E4 = 0.0f; this->actor.shape.rot.y = this->actor.world.rot.y; Audio_PlayActorSound2(&this->actor, NA_SE_EN_NUTS_JUMP); - } else if (this->skelAnime.animCurrentFrame < 13.0f) { - frame = this->skelAnime.animCurrentFrame; + } else if (this->skelAnime.curFrame < 13.0f) { + frame = this->skelAnime.curFrame; this->actor.shape.rot.y = this->actor.world.rot.y; frame *= 2520; this->actor.shape.rot.y += frame; this->unk_2E4 -= -(40.0f / 13.0f); } } else { - if (func_801378B8(&this->skelAnime, 0.0f) || func_801378B8(&this->skelAnime, 6.0f) || - func_801378B8(&this->skelAnime, 13.0f)) { + if (Animation_OnFrame(&this->skelAnime, 0.0f) || Animation_OnFrame(&this->skelAnime, 6.0f) || + Animation_OnFrame(&this->skelAnime, 13.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_NUTS_WALK); } - if (this->skelAnime.animCurrentFrame > 7.0f) { + if (this->skelAnime.curFrame > 7.0f) { this->unk_2E4 += -(20.0f / 13.0f); } } @@ -371,8 +371,8 @@ void func_8092D108(EnDns* this, GlobalContext* globalCtx) { func_8012C28C(globalCtx->state.gfxCtx); - SysMatrix_SetStateRotationAndTranslation(this->actor.home.pos.x, this->actor.home.pos.y, this->actor.home.pos.z, - &this->actor.home.rot); + Matrix_SetStateRotationAndTranslation(this->actor.home.pos.x, this->actor.home.pos.y, this->actor.home.pos.z, + &this->actor.home.rot); Matrix_Scale(this->actor.scale.x, this->actor.scale.y, this->actor.scale.z, MTXMODE_APPLY); gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); @@ -450,7 +450,7 @@ void func_8092D4D8(EnDns* this, GlobalContext* globalCtx) { this->unk_2F4 = NULL; if (ENDNS_GET_4000(&this->actor)) { if (!(gSaveContext.eventInf[1] & 0x20)) { - this->skelAnime.animCurrentFrame = this->unk_2F0; + this->skelAnime.curFrame = this->unk_2F0; this->actor.world.rot.y = this->unk_2DA; func_8092C63C(this, 8); } @@ -478,7 +478,7 @@ void func_8092D5E8(EnDns* this, GlobalContext* globalCtx) { } if (((this->unk_2F8 == 4) || (this->unk_2F8 == 6)) && - func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { + Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { func_8092C63C(this, this->unk_2F8 + 1); } @@ -529,11 +529,11 @@ void EnDns_Update(Actor* thisx, GlobalContext* globalCtx) { if (!func_8092CAD0(this, globalCtx) && func_8092CB98(this, globalCtx)) { func_8092D5E8(this, globalCtx); - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); func_8092C5C0(this); } else { this->actionFunc(this, globalCtx); - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); func_8092C934(this); func_8092C86C(this, globalCtx); Actor_UpdateBgCheckInfo(globalCtx, &this->actor, 30.0f, 12.0f, 0.0f, 4); @@ -549,8 +549,8 @@ s32 func_8092D954(s16 arg0, s16 arg1, Vec3f* arg2, Vec3s* arg3, s32 arg4, s32 ar Vec3s sp6C; MtxF sp2C; - SysMatrix_MultiplyVector3fByState(&D_801D15B0, &sp74); - SysMatrix_CopyCurrentState(&sp2C); + Matrix_MultiplyVector3fByState(&D_801D15B0, &sp74); + Matrix_CopyCurrentState(&sp2C); func_8018219C(&sp2C, &sp6C, 0); *arg2 = sp74; @@ -600,11 +600,11 @@ void EnDns_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Ve if (limbIndex == 2) { func_8092D954(this->unk_2CC, this->unk_2CE + this->actor.shape.rot.y, &this->unk_218, &this->unk_224, phi_v1, phi_v0); - SysMatrix_InsertTranslation(this->unk_218.x, this->unk_218.y, this->unk_218.z, MTXMODE_NEW); + Matrix_InsertTranslation(this->unk_218.x, this->unk_218.y, this->unk_218.z, MTXMODE_NEW); Matrix_Scale(this->actor.scale.x, this->actor.scale.y, this->actor.scale.z, MTXMODE_APPLY); Matrix_RotateY(this->unk_224.y, MTXMODE_APPLY); - SysMatrix_InsertXRotation_s(this->unk_224.z, MTXMODE_APPLY); - SysMatrix_InsertZRotation_s(this->unk_224.x, MTXMODE_APPLY); + Matrix_InsertXRotation_s(this->unk_224.z, MTXMODE_APPLY); + Matrix_InsertZRotation_s(this->unk_224.x, MTXMODE_APPLY); } OPEN_DISPS(globalCtx->state.gfxCtx); @@ -626,8 +626,8 @@ void EnDns_Draw(Actor* thisx, GlobalContext* globalCtx) { gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(D_8092DE1C[this->unk_2E0])); gDPPipeSync(POLY_OPA_DISP++); - SkelAnime_Draw(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, EnDns_OverrideLimbDraw, - EnDns_PostLimbDraw, &this->actor); + SkelAnime_DrawOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, EnDns_OverrideLimbDraw, + EnDns_PostLimbDraw, &this->actor); func_8092D108(this, globalCtx); CLOSE_DISPS(globalCtx->state.gfxCtx); diff --git a/src/overlays/actors/ovl_En_Dodongo/z_en_dodongo.c b/src/overlays/actors/ovl_En_Dodongo/z_en_dodongo.c index e913b669b..62cfddd0f 100644 --- a/src/overlays/actors/ovl_En_Dodongo/z_en_dodongo.c +++ b/src/overlays/actors/ovl_En_Dodongo/z_en_dodongo.c @@ -513,8 +513,8 @@ void func_80876DC4(EnDodongo* this, GlobalContext* globalCtx) { } s32 func_8087721C(EnDodongo* this) { - if ((this->actionFunc == func_8087784C) && (this->skelAnime.animCurrentFrame >= 29.0f) && - (this->skelAnime.animCurrentFrame <= 43.0f)) { + if ((this->actionFunc == func_8087784C) && (this->skelAnime.curFrame >= 29.0f) && + (this->skelAnime.curFrame <= 43.0f)) { return true; } return false; @@ -544,27 +544,27 @@ s32 func_80877278(EnDodongo* this, GlobalContext* globalCtx) { } void func_808773C4(EnDodongo* this) { - SkelAnime_ChangeAnimTransitionRepeat(&this->skelAnime, &D_06004C20, -4.0f); + Animation_MorphToLoop(&this->skelAnime, &D_06004C20, -4.0f); this->actor.speedXZ = 0.0f; this->timer = Rand_S16Offset(30, 50); this->actionFunc = func_80877424; } void func_80877424(EnDodongo* this, GlobalContext* globalCtx) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); if (this->timer != 0) { this->timer--; } if (this->timer == 0) { - if (func_801378B8(&this->skelAnime, 0.0f)) { + if (Animation_OnFrame(&this->skelAnime, 0.0f)) { func_80877494(this); } } } void func_80877494(EnDodongo* this) { - SkelAnime_ChangeAnimTransitionRepeat(&this->skelAnime, &D_06008B1C, -4.0f); + Animation_MorphToLoop(&this->skelAnime, &D_06008B1C, -4.0f); this->actor.speedXZ = this->unk_334 * 1.5f; this->timer = Rand_S16Offset(50, 70); this->actionFunc = func_80877500; @@ -575,14 +575,14 @@ void func_80877500(EnDodongo* this, GlobalContext* globalCtx) { Vec3f sp30; s16 temp_v1; - SkelAnime_FrameUpdateMatrix(&this->skelAnime); - if (func_801378B8(&this->skelAnime, 19.0f)) { + SkelAnime_Update(&this->skelAnime); + if (Animation_OnFrame(&this->skelAnime, 19.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_DODO_J_WALK); sp30.x = this->collider1Elements[2].dim.worldSphere.center.x; sp30.y = this->collider1Elements[2].dim.worldSphere.center.y; sp30.z = this->collider1Elements[2].dim.worldSphere.center.z; func_80876930(this, globalCtx, &sp30); - } else if (func_801378B8(&this->skelAnime, 39.0f)) { + } else if (Animation_OnFrame(&this->skelAnime, 39.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_DODO_J_WALK); sp30.x = this->collider1Elements[1].dim.worldSphere.center.x; sp30.y = this->collider1Elements[1].dim.worldSphere.center.y; @@ -623,7 +623,7 @@ void func_808777A8(EnDodongo* this) { s32 i; Sphere16* sph; - SkelAnime_ChangeAnimTransitionStop(&this->skelAnime, &D_060028F0, -4.0f); + Animation_MorphToPlayOnce(&this->skelAnime, &D_060028F0, -4.0f); this->actor.speedXZ = 0.0f; for (i = 0; i < ARRAY_COUNT(this->collider3Elements); i++) { @@ -648,13 +648,13 @@ void func_8087784C(EnDodongo* this, GlobalContext* globalCtx) { f32 temp_f2; f32 temp_f12; - if (func_801378B8(&this->skelAnime, 24.0f)) { + if (Animation_OnFrame(&this->skelAnime, 24.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_DODO_J_CRY); } if (func_8087721C(this)) { func_800B9010(&this->actor, NA_SE_EN_DODO_J_FIRE - SFX_FLAG); - frame = this->skelAnime.animCurrentFrame - 29.0f; + frame = this->skelAnime.curFrame - 29.0f; end = frame >> 1; if (end > 3) { end = 3; @@ -678,29 +678,29 @@ void func_8087784C(EnDodongo* this, GlobalContext* globalCtx) { D_80879348.z = 2.5f * temp_f12; EffectSsDFire_Spawn(globalCtx, &this->unk_348[0], &D_80879354, &D_80879348, this->unk_334 * 100.0f, this->unk_334 * 35.0f, 0xFF - (frame * 10), 5, 0, 8); - } else if ((this->skelAnime.animCurrentFrame >= 2.0f) && (this->skelAnime.animCurrentFrame <= 20.0f)) { + } else if ((this->skelAnime.curFrame >= 2.0f) && (this->skelAnime.curFrame <= 20.0f)) { func_800B9010(&this->actor, NA_SE_EN_DODO_J_BREATH - SFX_FLAG); } - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime)) { + if (SkelAnime_Update(&this->skelAnime)) { func_80877D50(this); } } void func_80877D50(EnDodongo* this) { - SkelAnime_ChangeAnimDefaultStop(&this->skelAnime, &D_06003088); + Animation_PlayOnce(&this->skelAnime, &D_06003088); this->actionFunc = func_80877D90; } void func_80877D90(EnDodongo* this, GlobalContext* globalCtx) { - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime)) { + if (SkelAnime_Update(&this->skelAnime)) { func_808773C4(this); this->timer = Rand_S16Offset(10, 20); } } void func_80877DE0(EnDodongo* this) { - SkelAnime_ChangeAnim(&this->skelAnime, &D_060028F0, -1.0f, 35.0f, 0.0f, 2, -4.0f); + Animation_Change(&this->skelAnime, &D_060028F0, -1.0f, 35.0f, 0.0f, 2, -4.0f); this->actor.flags |= 0x10; this->timer = 25; this->actionFunc = func_80877E60; @@ -735,14 +735,14 @@ void func_80877E60(EnDodongo* this, GlobalContext* globalCtx) { this->actor.child->freezeTimer = 30000; // 25 minutes } - if (func_801378B8(&this->skelAnime, 28.0f)) { + if (Animation_OnFrame(&this->skelAnime, 28.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_DODO_J_EAT); if (this->actor.child != NULL) { Actor_MarkForDeath(this->actor.child); this->actor.child = NULL; } this->actor.flags &= ~0x10; - } else if (this->skelAnime.animPlaybackSpeed > -0.5f) { + } else if (this->skelAnime.playSpeed > -0.5f) { this->timer--; if (this->timer == 10) { for (i = 10; i >= 0; i--) { @@ -768,13 +768,13 @@ void func_80877E60(EnDodongo* this, GlobalContext* globalCtx) { } func_800BCB70(&this->actor, 0x4000, 0x78, 0, 8); } - } else if (func_801378B8(&this->skelAnime, 24.0f)) { + } else if (Animation_OnFrame(&this->skelAnime, 24.0f)) { this->timer--; - this->skelAnime.animPlaybackSpeed = 0.0f; + this->skelAnime.playSpeed = 0.0f; } - if (this->skelAnime.animCurrentFrame <= 27.0f) { - if ((this->skelAnime.animCurrentFrame <= 25.0f) && (this->timer < 11)) { + if (this->skelAnime.curFrame <= 27.0f) { + if ((this->skelAnime.curFrame <= 25.0f) && (this->timer < 11)) { func_80876DC4(this, globalCtx); } else { sp5E = this->unk_334 * 50.0f; @@ -793,7 +793,7 @@ void func_80877E60(EnDodongo* this, GlobalContext* globalCtx) { this->unk_314.z = Math_SinS((this->actor.colorFilterTimer * 0x1000) >> 1) + 1.0f; this->unk_314.x = Math_SinS(this->actor.colorFilterTimer * 0x1000) + 1.0f; this->unk_314.y = this->unk_314.z; - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); if (this->timer == 0) { if (this->actor.colChkInfo.health == 0) { func_80878724(this); @@ -819,7 +819,7 @@ void func_80878354(EnDodongo* this) { } Audio_PlayActorSound2(&this->actor, NA_SE_EN_DODO_J_TAIL); - SkelAnime_ChangeAnimPlaybackStop(&this->skelAnime, sp18, 2.0f); + Animation_PlayOnceSetSpeed(&this->skelAnime, sp18, 2.0f); this->timer = 0; this->collider1.base.atFlags |= AT_ON; this->unk_304 = -1; @@ -831,7 +831,7 @@ void func_80878424(EnDodongo* this, GlobalContext* globalCtx) { Vec3f sp20; this->timer++; - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime)) { + if (SkelAnime_Update(&this->skelAnime)) { if (!(player->stateFlags1 & 0x800000) && (Player_GetMask(globalCtx) != PLAYER_MASK_STONE_MASK)) { this->collider1.base.atFlags &= ~AT_ON; func_808777A8(this); @@ -878,7 +878,7 @@ void func_808785B0(EnDodongo* this, GlobalContext* globalCtx) { } void func_8087864C(EnDodongo* this) { - SkelAnime_ChangeAnimTransitionStop(&this->skelAnime, &D_06001A44, -4.0f); + Animation_MorphToPlayOnce(&this->skelAnime, &D_06001A44, -4.0f); Audio_PlayActorSound2(&this->actor, NA_SE_EN_DODO_J_DAMAGE); this->timer = 0; this->unk_304 = 0; @@ -892,13 +892,13 @@ void func_808786C8(EnDodongo* this, GlobalContext* globalCtx) { func_80876DC4(this, globalCtx); } - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime)) { + if (SkelAnime_Update(&this->skelAnime)) { func_80876B08(this, globalCtx); } } void func_80878724(EnDodongo* this) { - SkelAnime_ChangeAnimTransitionStop(&this->skelAnime, &D_060013C4, -8.0f); + Animation_MorphToPlayOnce(&this->skelAnime, &D_060013C4, -8.0f); this->timer = 0; this->unk_304 = 0; Audio_PlayActorSound2(&this->actor, NA_SE_EN_DODO_J_DEAD); @@ -911,7 +911,7 @@ void func_80878724(EnDodongo* this) { void func_808787B0(EnDodongo* this, GlobalContext* globalCtx) { s32 pad; - if (this->skelAnime.animCurrentFrame < 35.0f) { + if (this->skelAnime.curFrame < 35.0f) { if (this->unk_304 != 0) { func_80876DC4(this, globalCtx); } @@ -919,7 +919,7 @@ void func_808787B0(EnDodongo* this, GlobalContext* globalCtx) { func_800BCB70(&this->actor, 0x4000, 0x78, 0, 4); } - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime)) { + if (SkelAnime_Update(&this->skelAnime)) { if (this->timer == 0) { EnBom* bomb = (EnBom*)Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_BOM, this->actor.world.pos.x, this->actor.world.pos.y, this->actor.world.pos.z, 0, 0, 0, 0); @@ -928,7 +928,7 @@ void func_808787B0(EnDodongo* this, GlobalContext* globalCtx) { } this->timer = 8; } - } else if (func_801378B8(&this->skelAnime, 52.0f)) { + } else if (Animation_OnFrame(&this->skelAnime, 52.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_GERUDOFT_DOWN); } @@ -1086,16 +1086,16 @@ void EnDodongo_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList Collider_UpdateSpheres(limbIndex, &this->collider1); Collider_UpdateSpheres(limbIndex, &this->collider2); if (D_80879388[limbIndex] != -1) { - SysMatrix_GetStateTranslation(&this->unk_348[D_80879388[limbIndex]]); + Matrix_GetStateTranslation(&this->unk_348[D_80879388[limbIndex]]); } if (limbIndex == 7) { - SysMatrix_MultiplyVector3fByState(&D_80879370, &this->unk_308); - SysMatrix_MultiplyVector3fByState(&D_8087937C, &this->unk_348[0]); - SysMatrix_GetStateTranslation(&this->actor.focus.pos); - SysMatrix_GetStateTranslationAndScaledY(-200.0f, &this->unk_348[1]); + Matrix_MultiplyVector3fByState(&D_80879370, &this->unk_308); + Matrix_MultiplyVector3fByState(&D_8087937C, &this->unk_348[0]); + Matrix_GetStateTranslation(&this->actor.focus.pos); + Matrix_GetStateTranslationAndScaledY(-200.0f, &this->unk_348[1]); } else if (limbIndex == 13) { - SysMatrix_GetStateTranslationAndScaledX(1600.0f, &this->unk_320); + Matrix_GetStateTranslationAndScaledX(1600.0f, &this->unk_320); } if ((limbIndex == 30) && (this->actionFunc == func_80878424) && (this->timer != this->unk_304)) { @@ -1108,8 +1108,8 @@ void EnDodongo_Draw(Actor* thisx, GlobalContext* globalCtx) { EnDodongo* this = THIS; func_8012C28C(globalCtx->state.gfxCtx); - SkelAnime_Draw(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, EnDodongo_OverrideLimbDraw, - EnDodongo_PostLimbDraw, &this->actor); + SkelAnime_DrawOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, EnDodongo_OverrideLimbDraw, + EnDodongo_PostLimbDraw, &this->actor); func_800BE680(globalCtx, &this->actor, this->unk_348, ARRAY_COUNT(this->unk_348), this->unk_340 * this->unk_334, this->unk_344 * this->unk_334, this->unk_33C, this->unk_300); } diff --git a/src/overlays/actors/ovl_En_Elfbub/z_en_elfbub.c b/src/overlays/actors/ovl_En_Elfbub/z_en_elfbub.c index 7d492ac1d..e8145f806 100644 --- a/src/overlays/actors/ovl_En_Elfbub/z_en_elfbub.c +++ b/src/overlays/actors/ovl_En_Elfbub/z_en_elfbub.c @@ -153,12 +153,12 @@ void EnElfbub_Draw(Actor* thisx, GlobalContext* globalCtx2) { func_8012C2DC(globalCtx->state.gfxCtx); - SysMatrix_InsertTranslation(0.0f, 0.0f, 1.0f, 1); - SysMatrix_NormalizeXYZ(&globalCtx->mf_187FC); + Matrix_InsertTranslation(0.0f, 0.0f, 1.0f, 1); + Matrix_NormalizeXYZ(&globalCtx->mf_187FC); Matrix_Scale(this->xyScale + 1.0f, this->xyScale + 1.0f, 1.0f, 1); - SysMatrix_InsertZRotation_s(this->zRot, 1); + Matrix_InsertZRotation_s(this->zRot, 1); Matrix_Scale(this->xScale + 1.0f, 1.0f, 1.0f, 1); - SysMatrix_InsertZRotation_s(this->zRot * -1, 1); + Matrix_InsertZRotation_s(this->zRot * -1, 1); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_XLU_DISP++, D_06001000); diff --git a/src/overlays/actors/ovl_En_Encount2/z_en_encount2.c b/src/overlays/actors/ovl_En_Encount2/z_en_encount2.c index b61b73c58..ba444eb6c 100644 --- a/src/overlays/actors/ovl_En_Encount2/z_en_encount2.c +++ b/src/overlays/actors/ovl_En_Encount2/z_en_encount2.c @@ -270,7 +270,7 @@ void EnEncount2_DrawParticles(EnEncount2* this, GlobalContext* globalCtx) { func_8012C2DC(globalCtx->state.gfxCtx); for (i = 0; i < ARRAY_COUNT(this->particles); i++, sPtr++) { if (sPtr->enabled) { - SysMatrix_InsertTranslation(sPtr->pos.x, sPtr->pos.y, sPtr->pos.z, MTXMODE_NEW); + Matrix_InsertTranslation(sPtr->pos.x, sPtr->pos.y, sPtr->pos.z, MTXMODE_NEW); Matrix_Scale(sPtr->scale, sPtr->scale, sPtr->scale, MTXMODE_APPLY); POLY_XLU_DISP = Gfx_CallSetupDL(POLY_XLU_DISP, 20); gSPSegment(POLY_XLU_DISP++, 0x08, Lib_SegmentedToVirtual(&D_04079B10)); @@ -278,8 +278,8 @@ void EnEncount2_DrawParticles(EnEncount2* this, GlobalContext* globalCtx) { gDPPipeSync(POLY_XLU_DISP++); gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, 255, 255, 255, 255); gDPSetEnvColor(POLY_XLU_DISP++, 250, 180, 255, sPtr->alpha); - SysMatrix_InsertMatrix(&globalCtx->mf_187FC, MTXMODE_APPLY); - SysMatrix_InsertZRotation_f(DEGTORAD(globalCtx->state.frames * 20.0f), MTXMODE_APPLY); + Matrix_InsertMatrix(&globalCtx->mf_187FC, MTXMODE_APPLY); + Matrix_InsertZRotation_f(DEGTORAD(globalCtx->state.frames * 20.0f), MTXMODE_APPLY); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_XLU_DISP++, D_0407AB58); diff --git a/src/overlays/actors/ovl_En_Ending_Hero/z_en_ending_hero.c b/src/overlays/actors/ovl_En_Ending_Hero/z_en_ending_hero.c index f32c5cc5a..089ee3788 100644 --- a/src/overlays/actors/ovl_En_Ending_Hero/z_en_ending_hero.c +++ b/src/overlays/actors/ovl_En_Ending_Hero/z_en_ending_hero.c @@ -42,8 +42,7 @@ void EnEndingHero_Init(Actor* thisx, GlobalContext* globalCtx) { Actor_SetScale(&this->actor, 0.01f); this->actor.targetMode = 6; this->actor.gravity = -3.0f; - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_0600B0CC, &D_06000BE0, this->limbDrawTable, - this->transitionDrawTable, 15); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_0600B0CC, &D_06000BE0, this->jointTable, this->morphTable, 15); ActorShape_Init(&this->actor.shape, 0.0f, func_800B3FC0, 25.0f); func_80C1E748(this); } @@ -57,7 +56,7 @@ void func_80C1E748(EnEndingHero* this) { } void func_80C1E764(EnEndingHero* this, GlobalContext* globalCtx) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); } void EnEndingHero_Update(Actor* thisx, GlobalContext* globalCtx) { @@ -93,8 +92,8 @@ void EnEndingHero_Draw(Actor* thisx, GlobalContext* globalCtx) { } gSPSegment(POLY_OPA_DISP++, 0x09, Lib_SegmentedToVirtual(D_80C1E984[index])); - SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, 0, 0, - &this->actor); + SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, + 0, 0, &this->actor); CLOSE_DISPS(globalCtx->state.gfxCtx); } diff --git a/src/overlays/actors/ovl_En_Ending_Hero/z_en_ending_hero.h b/src/overlays/actors/ovl_En_Ending_Hero/z_en_ending_hero.h index bd81f7e06..95991fee8 100644 --- a/src/overlays/actors/ovl_En_Ending_Hero/z_en_ending_hero.h +++ b/src/overlays/actors/ovl_En_Ending_Hero/z_en_ending_hero.h @@ -10,8 +10,8 @@ typedef void (*EnEndingHeroActionFunc)(struct EnEndingHero*, GlobalContext*); typedef struct EnEndingHero { /* 0x000 */ Actor actor; /* 0x144 */ SkelAnime skelAnime; - /* 0x188 */ Vec3s limbDrawTable[15]; - /* 0x1E2 */ Vec3s transitionDrawTable[15]; + /* 0x188 */ Vec3s jointTable[15]; + /* 0x1E2 */ Vec3s morphTable[15]; /* 0x23C */ EnEndingHeroActionFunc actionFunc; /* 0x240 */ s16 unk240; /* 0x242 */ s16 unk242; diff --git a/src/overlays/actors/ovl_En_Ending_Hero2/z_en_ending_hero2.c b/src/overlays/actors/ovl_En_Ending_Hero2/z_en_ending_hero2.c index 8b201a7ae..0ff95496d 100644 --- a/src/overlays/actors/ovl_En_Ending_Hero2/z_en_ending_hero2.c +++ b/src/overlays/actors/ovl_En_Ending_Hero2/z_en_ending_hero2.c @@ -34,8 +34,7 @@ void EnEndingHero2_Init(Actor* thisx, GlobalContext* globalCtx) { Actor_SetScale(&this->actor, 0.01f); this->actor.targetMode = 6; this->actor.gravity = -3.0f; - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_06007908, &D_060011C0, this->limbDrawTable, - this->transitionDrawTable, 20); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_06007908, &D_060011C0, this->jointTable, this->morphTable, 20); ActorShape_Init(&this->actor.shape, 0.0f, func_800B3FC0, 25.0f); func_80C232E8(this); } @@ -49,7 +48,7 @@ void func_80C232E8(EnEndingHero2* this) { } void func_80C23304(EnEndingHero2* this, GlobalContext* globalCtx) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); } void EnEndingHero2_Update(Actor* thisx, GlobalContext* globalCtx) { @@ -65,6 +64,6 @@ void EnEndingHero2_Draw(Actor* thisx, GlobalContext* globalCtx) { func_8012C28C(globalCtx->state.gfxCtx); func_8012C2DC(globalCtx->state.gfxCtx); - SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, 0, 0, - &this->actor); + SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, + 0, 0, &this->actor); } diff --git a/src/overlays/actors/ovl_En_Ending_Hero2/z_en_ending_hero2.h b/src/overlays/actors/ovl_En_Ending_Hero2/z_en_ending_hero2.h index 99f57ab6a..fe7e6bf2e 100644 --- a/src/overlays/actors/ovl_En_Ending_Hero2/z_en_ending_hero2.h +++ b/src/overlays/actors/ovl_En_Ending_Hero2/z_en_ending_hero2.h @@ -10,8 +10,8 @@ typedef void (*EnEndingHero2ActionFunc)(struct EnEndingHero2*, GlobalContext*); typedef struct EnEndingHero2 { /* 0x000 */ Actor actor; /* 0x144 */ SkelAnime skelAnime; - /* 0x188 */ Vec3s limbDrawTable[20]; - /* 0x200 */ Vec3s transitionDrawTable[20]; + /* 0x188 */ Vec3s jointTable[20]; + /* 0x200 */ Vec3s morphTable[20]; /* 0x278 */ EnEndingHero2ActionFunc actionFunc; /* 0x27C */ u16 unk27C; } EnEndingHero2; // size = 0x280 diff --git a/src/overlays/actors/ovl_En_Ending_Hero3/z_en_ending_hero3.c b/src/overlays/actors/ovl_En_Ending_Hero3/z_en_ending_hero3.c index 73d28cd18..91a42c409 100644 --- a/src/overlays/actors/ovl_En_Ending_Hero3/z_en_ending_hero3.c +++ b/src/overlays/actors/ovl_En_Ending_Hero3/z_en_ending_hero3.c @@ -34,8 +34,7 @@ void EnEndingHero3_Init(Actor* thisx, GlobalContext* globalCtx) { Actor_SetScale(&this->actor, 0.01f); this->actor.targetMode = 6; this->actor.gravity = -3.0f; - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_06007150, &D_06000E50, this->limbDrawTable, - this->transitionDrawTable, 17); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_06007150, &D_06000E50, this->jointTable, this->morphTable, 17); ActorShape_Init(&this->actor.shape, 0.0f, func_800B3FC0, 25.0f); func_80C23518(this); } @@ -49,7 +48,7 @@ void func_80C23518(EnEndingHero3* this) { } void func_80C23534(EnEndingHero3* this, GlobalContext* globalCtx) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); } void EnEndingHero3_Update(Actor* thisx, GlobalContext* globalCtx) { @@ -65,6 +64,6 @@ void EnEndingHero3_Draw(Actor* thisx, GlobalContext* globalCtx) { func_8012C28C(globalCtx->state.gfxCtx); func_8012C2DC(globalCtx->state.gfxCtx); - SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, 0, 0, - &this->actor); + SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, + 0, 0, &this->actor); } diff --git a/src/overlays/actors/ovl_En_Ending_Hero3/z_en_ending_hero3.h b/src/overlays/actors/ovl_En_Ending_Hero3/z_en_ending_hero3.h index fc5bb9c0f..b61452d77 100644 --- a/src/overlays/actors/ovl_En_Ending_Hero3/z_en_ending_hero3.h +++ b/src/overlays/actors/ovl_En_Ending_Hero3/z_en_ending_hero3.h @@ -10,8 +10,8 @@ typedef void (*EnEndingHero3ActionFunc)(struct EnEndingHero3*, GlobalContext*); typedef struct EnEndingHero3 { /* 0x000 */ Actor actor; /* 0x144 */ SkelAnime skelAnime; - /* 0x188 */ Vec3s limbDrawTable[17]; - /* 0x1EE */ Vec3s transitionDrawTable[17]; + /* 0x188 */ Vec3s jointTable[17]; + /* 0x1EE */ Vec3s morphTable[17]; /* 0x254 */ EnEndingHero3ActionFunc actionFunc; /* 0x258 */ u16 unk258; } EnEndingHero3; // size = 0x25C diff --git a/src/overlays/actors/ovl_En_Ending_Hero4/z_en_ending_hero4.c b/src/overlays/actors/ovl_En_Ending_Hero4/z_en_ending_hero4.c index 38729764a..949999b57 100644 --- a/src/overlays/actors/ovl_En_Ending_Hero4/z_en_ending_hero4.c +++ b/src/overlays/actors/ovl_En_Ending_Hero4/z_en_ending_hero4.c @@ -34,8 +34,7 @@ void EnEndingHero4_Init(Actor* thisx, GlobalContext* globalCtx) { Actor_SetScale(&this->actor, 0.01f); this->actor.targetMode = 6; this->actor.gravity = -3.0f; - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_0600D640, &D_06002A84, this->limbDrawTable, - this->transitionDrawTable, 17); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_0600D640, &D_06002A84, this->jointTable, this->morphTable, 17); ActorShape_Init(&this->actor.shape, 0.0f, func_800B3FC0, 25.0f); func_80C23748(this); } @@ -49,7 +48,7 @@ void func_80C23748(EnEndingHero4* this) { } void func_80C23764(EnEndingHero4* this, GlobalContext* globalCtx) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); } void EnEndingHero4_Update(Actor* thisx, GlobalContext* globalCtx) { @@ -65,6 +64,6 @@ void EnEndingHero4_Draw(Actor* thisx, GlobalContext* globalCtx) { func_8012C28C(globalCtx->state.gfxCtx); func_8012C2DC(globalCtx->state.gfxCtx); - SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, 0, 0, - &this->actor); + SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, + 0, 0, &this->actor); } diff --git a/src/overlays/actors/ovl_En_Ending_Hero4/z_en_ending_hero4.h b/src/overlays/actors/ovl_En_Ending_Hero4/z_en_ending_hero4.h index 048757932..09e3a72ee 100644 --- a/src/overlays/actors/ovl_En_Ending_Hero4/z_en_ending_hero4.h +++ b/src/overlays/actors/ovl_En_Ending_Hero4/z_en_ending_hero4.h @@ -10,8 +10,8 @@ typedef void (*EnEndingHero4ActionFunc)(struct EnEndingHero4*, GlobalContext*); typedef struct EnEndingHero4 { /* 0x000 */ Actor actor; /* 0x144 */ SkelAnime skelAnime; - /* 0x188 */ Vec3s limbDrawTable[17]; - /* 0x1EE */ Vec3s transitionDrawTable[17]; + /* 0x188 */ Vec3s jointTable[17]; + /* 0x1EE */ Vec3s morphTable[17]; /* 0x254 */ EnEndingHero4ActionFunc actionFunc; /* 0x258 */ u16 unk258; } EnEndingHero4; // size = 0x25C diff --git a/src/overlays/actors/ovl_En_Ending_Hero5/z_en_ending_hero5.c b/src/overlays/actors/ovl_En_Ending_Hero5/z_en_ending_hero5.c index ec48db441..1e392ef12 100644 --- a/src/overlays/actors/ovl_En_Ending_Hero5/z_en_ending_hero5.c +++ b/src/overlays/actors/ovl_En_Ending_Hero5/z_en_ending_hero5.c @@ -40,8 +40,7 @@ void EnEndingHero5_Init(Actor* thisx, GlobalContext* globalCtx) { Actor_SetScale(&this->actor, 0.01f); this->actor.targetMode = 6; this->actor.gravity = -3.0f; - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_0600A850, &D_06002FA0, this->limbDrawTable, - this->transitionDrawTable, 17); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_0600A850, &D_06002FA0, this->jointTable, this->morphTable, 17); ActorShape_Init(&this->actor.shape, 0.0f, func_800B3FC0, 25.0f); this->unk25C = this->actor.params; func_80C23980(this); @@ -56,7 +55,7 @@ void func_80C23980(EnEndingHero5* this) { } void func_80C2399C(EnEndingHero5* this, GlobalContext* globalCtx) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); } void EnEndingHero5_Update(Actor* thisx, GlobalContext* globalCtx) { @@ -106,8 +105,8 @@ void EnEndingHero5_Draw(Actor* thisx, GlobalContext* globalCtx) { break; } - SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, NULL, - func_80C23A30, &this->actor); + SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, + NULL, func_80C23A30, &this->actor); CLOSE_DISPS(globalCtx->state.gfxCtx); } diff --git a/src/overlays/actors/ovl_En_Ending_Hero5/z_en_ending_hero5.h b/src/overlays/actors/ovl_En_Ending_Hero5/z_en_ending_hero5.h index a630b56f4..e9f3ecf18 100644 --- a/src/overlays/actors/ovl_En_Ending_Hero5/z_en_ending_hero5.h +++ b/src/overlays/actors/ovl_En_Ending_Hero5/z_en_ending_hero5.h @@ -10,8 +10,8 @@ typedef void (*EnEndingHero5ActionFunc)(struct EnEndingHero5*, GlobalContext*); typedef struct EnEndingHero5 { /* 0x000 */ Actor actor; /* 0x144 */ SkelAnime skelAnime; - /* 0x188 */ Vec3s limbDrawTable[17]; - /* 0x1EE */ Vec3s transitionDrawTable[17]; + /* 0x188 */ Vec3s jointTable[17]; + /* 0x1EE */ Vec3s morphTable[17]; /* 0x254 */ EnEndingHero5ActionFunc actionFunc; /* 0x258 */ u16 unk258; /* 0x25C */ s32 unk25C; diff --git a/src/overlays/actors/ovl_En_Ending_Hero6/z_en_ending_hero6.c b/src/overlays/actors/ovl_En_Ending_Hero6/z_en_ending_hero6.c index 334856872..d692d4f11 100644 --- a/src/overlays/actors/ovl_En_Ending_Hero6/z_en_ending_hero6.c +++ b/src/overlays/actors/ovl_En_Ending_Hero6/z_en_ending_hero6.c @@ -76,8 +76,8 @@ void EnEndingHero6_Init(Actor* thisx, GlobalContext* globalCtx) { Actor_SetScale(&this->actor, 0.01f); this->actor.targetMode = 6; this->actor.gravity = -3.0f; - SkelAnime_InitSV(globalCtx, &this->skelAnime, sSkeletons[this->npcIndex], sAnimations[this->npcIndex], - this->jointTable, this->morphTable, sLimbCounts[this->npcIndex]); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, sSkeletons[this->npcIndex], sAnimations[this->npcIndex], + this->jointTable, this->morphTable, sLimbCounts[this->npcIndex]); ActorShape_Init(&this->actor.shape, 0.0f, func_800B3FC0, 25.0f); EnEndingHero6_SetupIdle(this); } @@ -87,8 +87,8 @@ void EnEndingHero6_Destroy(Actor* thisx, GlobalContext* globalCtx) { void EnEndingHero6_InitSkelAnime(EnEndingHero6* this, s32 npcIndex) { this->animIndex = npcIndex; - this->frameCount = SkelAnime_GetFrameCount(&sAnimations[npcIndex]->common); - SkelAnime_ChangeAnim(&this->skelAnime, sAnimations[this->animIndex], 1.0f, 0.f, this->frameCount, 0, 0.0f); + this->frameCount = Animation_GetLastFrame(sAnimations[npcIndex]); + Animation_Change(&this->skelAnime, sAnimations[this->animIndex], 1.0f, 0.f, this->frameCount, 0, 0.0f); } void EnEndingHero6_SetupIdle(EnEndingHero6* this) { @@ -98,7 +98,7 @@ void EnEndingHero6_SetupIdle(EnEndingHero6* this) { } void EnEndingHero6_Idle(EnEndingHero6* this, GlobalContext* globalCtx) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); } void EnEndingHero6_Update(Actor* thisx, GlobalContext* globalCtx) { @@ -182,8 +182,8 @@ void EnEndingHero6_Draw(Actor* thisx, GlobalContext* globalCtx) { gSPSegment(POLY_OPA_DISP++, 0x09, Lib_SegmentedToVirtual(D_80C24294[index])); } - SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, - this->skelAnime.dListCount, NULL, EnEndingHero6_PostLimbDraw, &this->actor); + SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, + this->skelAnime.dListCount, NULL, EnEndingHero6_PostLimbDraw, &this->actor); } CLOSE_DISPS(globalCtx->state.gfxCtx); diff --git a/src/overlays/actors/ovl_En_Fg/z_en_fg.c b/src/overlays/actors/ovl_En_Fg/z_en_fg.c index 3b94a5732..197f07606 100644 --- a/src/overlays/actors/ovl_En_Fg/z_en_fg.c +++ b/src/overlays/actors/ovl_En_Fg/z_en_fg.c @@ -117,11 +117,11 @@ s32 EnFg_UpdateAnimation(SkelAnime* skelAnime, s16 animIndex) { ret = true; frameCount = sAnimations[animIndex].frameCount; if (frameCount < 0) { - frameCount = SkelAnime_GetFrameCount(&sAnimations[animIndex].animationSeg->common); + frameCount = Animation_GetLastFrame(sAnimations[animIndex].animationSeg); } - SkelAnime_ChangeAnim(skelAnime, sAnimations[animIndex].animationSeg, sAnimations[animIndex].playbackSpeed, - sAnimations[animIndex].frame, frameCount, sAnimations[animIndex].mode, - sAnimations[animIndex].transitionRate); + Animation_Change(skelAnime, sAnimations[animIndex].animationSeg, sAnimations[animIndex].playbackSpeed, + sAnimations[animIndex].frame, frameCount, sAnimations[animIndex].mode, + sAnimations[animIndex].transitionRate); } return ret; } @@ -137,7 +137,7 @@ void func_80A2D348(EnFg* this, GlobalContext* globalCtx) { } void func_80A2D3D4(EnFg* this, GlobalContext* globalCtx) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); } u8 EnFg_UpdateHealth(EnFg* this) { @@ -185,7 +185,7 @@ void EnFg_Idle(EnFg* this, GlobalContext* globalCtx) { case FG_DMGEFFECT_DEKUSTICK: this->actor.flags &= ~1; Audio_PlayActorSound2(&this->actor, NA_SE_EV_FROG_CRY_1); - this->skelAnime.animPlaybackSpeed = 0.0f; + this->skelAnime.playSpeed = 0.0f; this->actor.shape.shadowDraw = NULL; this->actor.scale.x *= 1.5f; this->actor.scale.z *= 1.5f; @@ -197,7 +197,7 @@ void EnFg_Idle(EnFg* this, GlobalContext* globalCtx) { break; case FG_DMGEFFECT_ARROW: this->actor.flags &= ~1; - this->skelAnime.animPlaybackSpeed = 0.0f; + this->skelAnime.playSpeed = 0.0f; rotY = this->collider.base.ac->world.rot.y; rotX = this->collider.base.ac->world.rot.x; this->actor.scale.x = fabsf(0.01f * Math_CosS(rotY)); @@ -213,7 +213,7 @@ void EnFg_Idle(EnFg* this, GlobalContext* globalCtx) { Audio_PlayActorSound2(&this->actor, NA_SE_EV_FROG_CRY_0); if (1) {} this->actor.params = FG_BLACK; - this->skelAnime.animPlaybackSpeed = 0.0f; + this->skelAnime.playSpeed = 0.0f; ac = this->collider.base.ac; this->actor.world.rot.y = Math_Vec3f_Yaw(&ac->world.pos, &this->actor.world.pos); this->actor.shape.rot = this->actor.world.rot; @@ -245,7 +245,7 @@ void EnFg_Jump(EnFg* this, GlobalContext* globalCtx) { switch (EnFg_GetDamageEffect(this)) { case FG_DMGEFFECT_ARROW: this->actor.flags &= ~1; - this->skelAnime.animPlaybackSpeed = 0.0f; + this->skelAnime.playSpeed = 0.0f; ac = this->collider.base.ac; rotY = ac->world.rot.y; rotX = ac->world.rot.x; @@ -264,7 +264,7 @@ void EnFg_Jump(EnFg* this, GlobalContext* globalCtx) { Audio_PlayActorSound2(&this->actor, NA_SE_EV_FROG_CRY_0); EnFg_UpdateAnimation(&this->skelAnime, 0); this->actor.params = FG_BLACK; - this->skelAnime.animPlaybackSpeed = 0.0f; + this->skelAnime.playSpeed = 0.0f; ac = this->collider.base.ac; this->actor.world.rot.y = Math_Vec3f_Yaw(&ac->world.pos, &this->actor.world.pos); this->actor.shape.rot = this->actor.world.rot; @@ -276,9 +276,9 @@ void EnFg_Jump(EnFg* this, GlobalContext* globalCtx) { this->actionFunc = EnFg_Knockback; break; default: - if (func_801378B8(&this->skelAnime, 8.0f)) { - this->skelAnime.animCurrentFrame = 8.0f; - this->skelAnime.animPlaybackSpeed = 0.0f; + if (Animation_OnFrame(&this->skelAnime, 8.0f)) { + this->skelAnime.curFrame = 8.0f; + this->skelAnime.playSpeed = 0.0f; } if ((this->actor.velocity.y <= 0.0f) && (this->actor.bgCheckFlags & 1)) { @@ -321,7 +321,7 @@ void EnFg_Init(Actor* thisx, GlobalContext* globalCtx) { EnFg* this = THIS; ActorShape_Init(&this->actor.shape, 0.0f, func_800B3FC0, 10.0f); - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_0600B538, NULL, this->limbDrawTbl, this->transitionDrawTbl, 24); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_0600B538, NULL, this->jointTable, this->morphTable, 24); EnFg_UpdateAnimation(&this->skelAnime, 0); Collider_InitCylinder(globalCtx, &this->collider); Collider_SetCylinder(globalCtx, &this->collider, &this->actor, &sCylinderInit); @@ -360,8 +360,8 @@ void EnFg_Update(Actor* thisx, GlobalContext* globalCtx) { func_80A2D348(this, globalCtx); } -s32 EnFg_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) { - EnFg* this = THIS; +s32 EnFg_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* arg) { + EnFg* this = (EnFg*)arg; if ((limbIndex == 7) || (limbIndex == 8)) { *dList = NULL; @@ -375,23 +375,23 @@ s32 EnFg_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, return 0; } -void EnFg_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) { - EnFg* this = THIS; +void EnFg_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* arg) { + EnFg* this = (EnFg*)arg; s16 pad; Vec3f vec1 = { 0.0f, 0.0f, 0.0f }; if ((limbIndex == 7) || (limbIndex == 8)) { OPEN_DISPS(globalCtx->state.gfxCtx); - SysMatrix_StatePush(); - SysMatrix_NormalizeXYZ(&globalCtx->mf_187FC); + Matrix_StatePush(); + Matrix_NormalizeXYZ(&globalCtx->mf_187FC); gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_OPA_DISP++, *dList); - SysMatrix_StatePop(); + Matrix_StatePop(); CLOSE_DISPS(globalCtx->state.gfxCtx); } if (limbIndex == 4) { - SysMatrix_MultiplyVector3fByState(&vec1, &this->actor.focus.pos); + Matrix_MultiplyVector3fByState(&vec1, &this->actor.focus.pos); } } @@ -403,9 +403,9 @@ void EnFg_Draw(Actor* thisx, GlobalContext* globalCtx) { { 120, 130, 230, 255 }, { 190, 190, 190, 255 }, { 0, 0, 0, 255 }, }; - SysMatrix_StatePush(); + Matrix_StatePush(); EnFg_DrawDust(globalCtx, &this->dustEffect[0]); - SysMatrix_StatePop(); + Matrix_StatePop(); OPEN_DISPS(globalCtx->state.gfxCtx); func_8012C28C(globalCtx->state.gfxCtx); @@ -414,8 +414,8 @@ void EnFg_Draw(Actor* thisx, GlobalContext* globalCtx) { envColor[this->actor.params].b, envColor[this->actor.params].a); gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(&D_060059A0)); gSPSegment(POLY_OPA_DISP++, 0x09, Lib_SegmentedToVirtual(&D_060059A0)); - SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, - EnFg_OverrideLimbDraw, EnFg_PostLimbDraw, &this->actor); + SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, + EnFg_OverrideLimbDraw, EnFg_PostLimbDraw, &this->actor); CLOSE_DISPS(globalCtx->state.gfxCtx); } @@ -476,8 +476,8 @@ void EnFg_DrawDust(GlobalContext* globalCtx, EnFgEffectDust* dustEffect) { alpha = (255.0f / 16.0f) * dustEffect->timer; gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, 0, 0, 0, alpha); gDPPipeSync(POLY_XLU_DISP++); - SysMatrix_InsertTranslation(dustEffect->pos.x, dustEffect->pos.y, dustEffect->pos.z, MTXMODE_NEW); - SysMatrix_NormalizeXYZ(&globalCtx->mf_187FC); + Matrix_InsertTranslation(dustEffect->pos.x, dustEffect->pos.y, dustEffect->pos.z, MTXMODE_NEW); + Matrix_NormalizeXYZ(&globalCtx->mf_187FC); Matrix_Scale(dustEffect->xyScale, dustEffect->xyScale, 1.0f, MTXMODE_APPLY); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); diff --git a/src/overlays/actors/ovl_En_Fg/z_en_fg.h b/src/overlays/actors/ovl_En_Fg/z_en_fg.h index 5f12fca6e..45f643a1c 100644 --- a/src/overlays/actors/ovl_En_Fg/z_en_fg.h +++ b/src/overlays/actors/ovl_En_Fg/z_en_fg.h @@ -42,8 +42,8 @@ typedef struct EnFg { /* 0x144 */ EnFgActionFunc actionFunc; /* 0x148 */ SkelAnime skelAnime; /* 0x18C */ ColliderCylinder collider; - /* 0x1D8 */ Vec3s limbDrawTbl[24]; - /* 0x268 */ Vec3s transitionDrawTbl[24]; + /* 0x1D8 */ Vec3s jointTable[24]; + /* 0x268 */ Vec3s morphTable[24]; /* 0x2F8 */ s16 timer; /* 0x2FA */ s16 bounceCounter; /* 0x2FC */ EnFgEffectDust dustEffect[10]; diff --git a/src/overlays/actors/ovl_En_Firefly/z_en_firefly.c b/src/overlays/actors/ovl_En_Firefly/z_en_firefly.c index 6590796ae..716c460a8 100644 --- a/src/overlays/actors/ovl_En_Firefly/z_en_firefly.c +++ b/src/overlays/actors/ovl_En_Firefly/z_en_firefly.c @@ -268,7 +268,7 @@ void EnFirefly_SetupFlyIdle(EnFirefly* this) { this->actor.speedXZ = (Rand_ZeroOne() * 1.5f) + 1.5f; Math_ScaledStepToS(&this->actor.shape.rot.y, Actor_YawToPoint(&this->actor, &this->actor.home.pos), 0x300); this->targetPitch = ((this->maxAltitude < this->actor.world.pos.y) ? 0xC00 : -0xC00) + 0x1554; - this->skelAnime.animPlaybackSpeed = 1.0f; + this->skelAnime.playSpeed = 1.0f; this->actionFunc = EnFirefly_FlyIdle; } @@ -276,12 +276,12 @@ void EnFirefly_FlyIdle(EnFirefly* this, GlobalContext* globalCtx) { s32 isSkelAnimeUpdated; f32 rand; - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); if (this->timer != 0) { this->timer--; } - isSkelAnimeUpdated = func_801378B8(&this->skelAnime, 0.0f); + isSkelAnimeUpdated = Animation_OnFrame(&this->skelAnime, 0.0f); this->actor.speedXZ = (Rand_ZeroOne() * 1.5f) + 1.5f; if (!EnFirefly_ReturnToPerch(this, globalCtx) && !EnFirefly_SeekTorch(this, globalCtx)) { @@ -331,7 +331,7 @@ void EnFirefly_FlyIdle(EnFirefly* this, GlobalContext* globalCtx) { void EnFirefly_SetupFall(EnFirefly* this, GlobalContext* globalCtx) { this->timer = 40; this->actor.velocity.y = 0.0f; - SkelAnime_ChangeAnim(&this->skelAnime, &D_0600017C, 0.0f, 6.0f, 6.0f, 2, 0.0f); + Animation_Change(&this->skelAnime, &D_0600017C, 0.0f, 6.0f, 6.0f, 2, 0.0f); Audio_PlayActorSound2(&this->actor, NA_SE_EN_FFLY_DEAD); this->actor.flags |= 0x10; @@ -411,7 +411,7 @@ void EnFirefly_Die(EnFirefly* this, GlobalContext* globalCtx) { void EnFirefly_SetupDiveAttack(EnFirefly* this) { this->timer = Rand_S16Offset(70, 100); - this->skelAnime.animPlaybackSpeed = 1.0f; + this->skelAnime.playSpeed = 1.0f; this->targetPitch = ((this->actor.yDistToPlayer > 0.0f) ? -0xC00 : 0xC00) + 0x1554; this->actionFunc = EnFirefly_DiveAttack; } @@ -420,7 +420,7 @@ void EnFirefly_DiveAttack(EnFirefly* this, GlobalContext* globalCtx) { Player* player = GET_PLAYER(globalCtx); Vec3f preyPos; - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); if (this->timer != 0) { this->timer--; @@ -432,9 +432,9 @@ void EnFirefly_DiveAttack(EnFirefly* this, GlobalContext* globalCtx) { Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.wallYaw, 2, 0xC00, 0x300); Math_ScaledStepToS(&this->actor.shape.rot.x, this->targetPitch, 0x100); } else if (Actor_IsActorFacingLink(&this->actor, 0x2800)) { - if (func_801378B8(&this->skelAnime, 4.0f)) { - this->skelAnime.animPlaybackSpeed = 0.0f; - this->skelAnime.animCurrentFrame = 4.0f; + if (Animation_OnFrame(&this->skelAnime, 4.0f)) { + this->skelAnime.playSpeed = 0.0f; + this->skelAnime.curFrame = 4.0f; } Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 2, 0xC00, 0x300); @@ -444,7 +444,7 @@ void EnFirefly_DiveAttack(EnFirefly* this, GlobalContext* globalCtx) { Math_SmoothStepToS(&this->actor.shape.rot.x, Actor_PitchToPoint(&this->actor, &preyPos) + 0x1554, 2, 0x400, 0x100); } else { - this->skelAnime.animPlaybackSpeed = 1.5f; + this->skelAnime.playSpeed = 1.5f; if (this->actor.xzDistToPlayer > 80.0f) { Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 2, 0xC00, 0x300); } @@ -471,14 +471,14 @@ void EnFirefly_DiveAttack(EnFirefly* this, GlobalContext* globalCtx) { void EnFirefly_SetupRebound(EnFirefly* this) { this->actor.world.rot.x = 0x7000; this->timer = 18; - this->skelAnime.animPlaybackSpeed = 1.0f; + this->skelAnime.playSpeed = 1.0f; this->actor.speedXZ = 2.5f; this->actionFunc = EnFirefly_Rebound; } // Knockback after hitting player void EnFirefly_Rebound(EnFirefly* this, GlobalContext* globalCtx) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); Math_ScaledStepToS(&this->actor.shape.rot.x, 0, 0x100); Math_StepToF(&this->actor.velocity.y, 0.0f, 0.4f); if (Math_StepToF(&this->actor.speedXZ, 0.0f, 0.15f)) { @@ -496,11 +496,11 @@ void EnFirefly_SetupFlyAway(EnFirefly* this) { this->timer = 150; this->targetPitch = 0x954; this->actionFunc = EnFirefly_FlyAway; - this->skelAnime.animPlaybackSpeed = 1.0f; + this->skelAnime.playSpeed = 1.0f; } void EnFirefly_FlyAway(EnFirefly* this, GlobalContext* globalCtx) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); if (this->timer != 0) { this->timer--; @@ -584,8 +584,8 @@ void EnFirefly_SetupPerch(EnFirefly* this) { void EnFirefly_Perch(EnFirefly* this, GlobalContext* globalCtx) { Math_ScaledStepToS(&this->actor.shape.rot.x, 0, 0x100); if (this->timer != 0) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); - if (func_801378B8(&this->skelAnime, 6.0f)) { + SkelAnime_Update(&this->skelAnime); + if (Animation_OnFrame(&this->skelAnime, 6.0f)) { this->timer--; } } else if (Rand_ZeroOne() < 0.02f) { @@ -598,7 +598,7 @@ void EnFirefly_Perch(EnFirefly* this, GlobalContext* globalCtx) { } void EnFirefly_SetupDisturbDiveAttack(EnFirefly* this) { - this->skelAnime.animPlaybackSpeed = 3.0f; + this->skelAnime.playSpeed = 3.0f; this->actor.shape.rot.x = 0x1554; this->actor.shape.rot.y = this->actor.yawTowardsPlayer; this->timer = 50; @@ -610,7 +610,7 @@ void EnFirefly_DisturbDiveAttack(EnFirefly* this, GlobalContext* globalCtx) { Player* player = GET_PLAYER(globalCtx); Vec3f preyPos; - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); if (this->timer != 0) { this->timer--; @@ -705,7 +705,7 @@ void EnFirefly_Update(Actor* thisx, GlobalContext* globalCtx2) { CollisionCheck_SetAC(globalCtx, &globalCtx->colChkCtx, &this->collider.base); this->actor.world.rot.y = this->actor.shape.rot.y; - if (func_801378B8(&this->skelAnime, 5.0f)) { + if (Animation_OnFrame(&this->skelAnime, 5.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_FFLY_FLY); } } @@ -762,7 +762,7 @@ void EnFirefly_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList ((this->auraType == KEESE_AURA_FIRE) || (this->auraType == KEESE_AURA_ICE)) && ((limbIndex == 15) || (limbIndex == 21))) { if (this->actionFunc != EnFirefly_Die) { - SysMatrix_GetStateTranslation(&auraPos); + Matrix_GetStateTranslation(&auraPos); auraPos.x += Rand_ZeroFloat(5.0f); auraPos.y += Rand_ZeroFloat(5.0f); auraPos.z += Rand_ZeroFloat(5.0f); @@ -795,11 +795,11 @@ void EnFirefly_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList } if (limbIndex == 15) { - SysMatrix_GetStateTranslation(&this->unk_2F8); + Matrix_GetStateTranslation(&this->unk_2F8); } else if (limbIndex == 21) { - SysMatrix_GetStateTranslation(&this->unk_304); + Matrix_GetStateTranslation(&this->unk_304); } else if (limbIndex == 10) { - SysMatrix_GetStateTranslation(&this->unk_310); + Matrix_GetStateTranslation(&this->unk_310); } } @@ -824,8 +824,8 @@ void EnFirefly_Draw(Actor* thisx, GlobalContext* globalCtx) { gDPSetEnvColor(&gfx[1], 0, 0, 0, 255); } - gfx = SkelAnime_Draw2(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, EnFirefly_OverrideLimbDraw, - EnFirefly_PostLimbDraw, &this->actor, &gfx[2]); + gfx = SkelAnime_Draw(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, EnFirefly_OverrideLimbDraw, + EnFirefly_PostLimbDraw, &this->actor, &gfx[2]); if (this->isInvisible) { POLY_XLU_DISP = gfx; } else { diff --git a/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c b/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c index 291495635..606e5f955 100644 --- a/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c +++ b/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c @@ -711,8 +711,8 @@ void EnFsn_Idle(EnFsn* this, GlobalContext* globalCtx) { Player* player = GET_PLAYER(globalCtx); if (this->animationIdx == 4) { - s16 curFrame = this->skelAnime.animCurrentFrame; - s16 frameCount = SkelAnime_GetFrameCount(&sAnimations[this->animationIdx].animationSeg->common); + s16 curFrame = this->skelAnime.curFrame; + s16 frameCount = Animation_GetLastFrame(sAnimations[this->animationIdx].animationSeg); if (curFrame == frameCount) { this->animationIdx = 5; func_8013BC6C(&this->skelAnime, sAnimations, this->animationIdx); @@ -745,15 +745,15 @@ void EnFsn_Idle(EnFsn* this, GlobalContext* globalCtx) { } void EnFsn_Haggle(EnFsn* this, GlobalContext* globalCtx) { - s16 curFrame = this->skelAnime.animCurrentFrame; - s16 frameCount = SkelAnime_GetFrameCount(&sAnimations[this->animationIdx].animationSeg->common); + s16 curFrame = this->skelAnime.curFrame; + s16 frameCount = Animation_GetLastFrame(sAnimations[this->animationIdx].animationSeg); if (this->flags & ENFSN_ANGRY) { this->flags &= ~ENFSN_ANGRY; this->animationIdx = 11; func_8013BC6C(&this->skelAnime, sAnimations, this->animationIdx); } else { - if (this->animationIdx == 11 && func_801378B8(&this->skelAnime, 18.0f)) { + if (this->animationIdx == 11 && Animation_OnFrame(&this->skelAnime, 18.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EV_HANKO); } if (this->flags & ENFSN_CALM_DOWN) { @@ -770,7 +770,7 @@ void EnFsn_Haggle(EnFsn* this, GlobalContext* globalCtx) { this->animationIdx = 5; func_8013BC6C(&this->skelAnime, sAnimations, this->animationIdx); } else { - if (func_801378B8(&this->skelAnime, 28.0f)) { + if (Animation_OnFrame(&this->skelAnime, 28.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EV_HANKO); } return; @@ -1398,8 +1398,7 @@ void EnFsn_Init(Actor* thisx, GlobalContext* globalCtx) { s32 pad; ActorShape_Init(&this->actor.shape, 0.0f, func_800B3FC0, 20.0f); - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_06013320, &D_06012C34, this->limbDrawTable, - this->transitionDrawTable, 19); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_06013320, &D_06012C34, this->jointTable, this->morphTable, 19); if (ENFSN_IS_SHOP(&this->actor)) { this->actor.shape.rot.y = BINANG_ROT180(this->actor.shape.rot.y); this->actor.flags &= ~1; @@ -1442,7 +1441,7 @@ void EnFsn_Update(Actor* thisx, GlobalContext* globalCtx) { EnFsn_UpdateStickDirectionPromptAnim(this); EnFsn_UpdateCursorAnim(this); } - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); if (ENFSN_IS_BACKROOM(&this->actor)) { EnFsn_UpdateCollider(this, globalCtx); } @@ -1559,7 +1558,7 @@ s32 EnFsn_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, s32 limbRotTableIdx; if (limbIndex == 16) { - SysMatrix_InsertXRotation_s(this->headRot.y, MTXMODE_APPLY); + Matrix_InsertXRotation_s(this->headRot.y, MTXMODE_APPLY); } if (ENFSN_IS_BACKROOM(&this->actor)) { switch (limbIndex) { @@ -1614,8 +1613,8 @@ void EnFsn_Draw(Actor* thisx, GlobalContext* globalCtx) { func_8012C5B0(globalCtx->state.gfxCtx); gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(sEyeTextures[this->eyeTextureIdx])); gSPSegment(POLY_OPA_DISP++, 0x09, Lib_SegmentedToVirtual(sEyeTextures[this->eyeTextureIdx])); - SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, - EnFsn_OverrideLimbDraw, EnFsn_PostLimbDraw, &this->actor); + SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, + EnFsn_OverrideLimbDraw, EnFsn_PostLimbDraw, &this->actor); for (i = 0; i < this->totalSellingItems; i++) { this->items[i]->actor.scale.x = 0.2f; diff --git a/src/overlays/actors/ovl_En_Fsn/z_en_fsn.h b/src/overlays/actors/ovl_En_Fsn/z_en_fsn.h index 945bb0d76..139e145da 100644 --- a/src/overlays/actors/ovl_En_Fsn/z_en_fsn.h +++ b/src/overlays/actors/ovl_En_Fsn/z_en_fsn.h @@ -27,8 +27,8 @@ typedef struct EnFsn { /* 0x24E */ s16 limbRotZTable[19]; /* 0x274 */ Vec3s headRot; /* 0x27A */ Vec3s unk27A; // Set but never used - /* 0x280 */ Vec3s limbDrawTable[19]; - /* 0x2F2 */ Vec3s transitionDrawTable[19]; + /* 0x280 */ Vec3s jointTable[19]; + /* 0x2F2 */ Vec3s morphTable[19]; /* 0x364 */ s16 eyeTextureIdx; /* 0x366 */ s16 blinkTimer; /* 0x368 */ s16 cutsceneState; diff --git a/src/overlays/actors/ovl_En_Fu/z_en_fu.c b/src/overlays/actors/ovl_En_Fu/z_en_fu.c index 04ddc07a4..550a54f62 100644 --- a/src/overlays/actors/ovl_En_Fu/z_en_fu.c +++ b/src/overlays/actors/ovl_En_Fu/z_en_fu.c @@ -200,7 +200,8 @@ void EnFu_Init(Actor* thisx, GlobalContext* globalCtx) { if (fuKaiten != NULL) { ActorShape_Init(&this->actor.shape, 0.0f, func_800B3FC0, 36.0f); - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_0600B2B0, &D_06001F74, this->jointTable, this->morphTable, 21); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_0600B2B0, &D_06001F74, this->jointTable, this->morphTable, + 21); Collider_InitCylinder(globalCtx, &this->collider); Collider_SetCylinder(globalCtx, &this->collider, &this->actor, &sCylinderInit); this->actor.colChkInfo.mass = MASS_IMMOVABLE; @@ -366,10 +367,10 @@ void func_8096209C(EnFu* this, GlobalContext* globalCtx) { sp34 = D_80964B24; } - SysMatrix_StatePush(); + Matrix_StatePush(); Matrix_RotateY(this->actor.shape.rot.y, MTXMODE_NEW); - SysMatrix_MultiplyVector3fByState(&sp34, &this->actor.focus.pos); - SysMatrix_StatePop(); + Matrix_MultiplyVector3fByState(&sp34, &this->actor.focus.pos); + Matrix_StatePop(); this->actor.focus.pos.x += this->actor.world.pos.x; this->actor.focus.pos.y += this->actor.world.pos.y; this->actor.focus.pos.z += this->actor.world.pos.z; @@ -1341,7 +1342,7 @@ void EnFu_Update(Actor* thisx, GlobalContext* globalCtx) { Actor_SetVelocityAndMoveYRotationAndGravity(&this->actor); func_8096209C(this, globalCtx); Actor_UpdateBgCheckInfo(globalCtx, &this->actor, 0.0f, 0.0f, 0.0f, 4); - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); func_80961D7C(globalCtx); func_809640D8(this, globalCtx); func_80964034(this, globalCtx); @@ -1351,17 +1352,17 @@ s32 EnFu_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, EnFu* this = THIS; if (limbIndex == 9) { - SysMatrix_InsertTranslation(1600.0f, 300.0f, 0.0f, MTXMODE_APPLY); - SysMatrix_InsertXRotation_s(this->unk_524[1], MTXMODE_APPLY); - SysMatrix_InsertZRotation_s(this->unk_524[0], MTXMODE_APPLY); + Matrix_InsertTranslation(1600.0f, 300.0f, 0.0f, MTXMODE_APPLY); + Matrix_InsertXRotation_s(this->unk_524[1], MTXMODE_APPLY); + Matrix_InsertZRotation_s(this->unk_524[0], MTXMODE_APPLY); Matrix_RotateY(this->unk_524[2], MTXMODE_APPLY); - SysMatrix_InsertTranslation(-1600.0f, -300.0f, 0.0f, MTXMODE_APPLY); + Matrix_InsertTranslation(-1600.0f, -300.0f, 0.0f, MTXMODE_APPLY); } else if (limbIndex == 20) { - SysMatrix_InsertTranslation(1800.0f, 200.0f, 0.0f, MTXMODE_APPLY); - SysMatrix_InsertXRotation_s(this->unk_52A[1], MTXMODE_APPLY); - SysMatrix_InsertZRotation_s(this->unk_52A[0], MTXMODE_APPLY); + Matrix_InsertTranslation(1800.0f, 200.0f, 0.0f, MTXMODE_APPLY); + Matrix_InsertXRotation_s(this->unk_52A[1], MTXMODE_APPLY); + Matrix_InsertZRotation_s(this->unk_52A[0], MTXMODE_APPLY); Matrix_RotateY(this->unk_52A[2], MTXMODE_APPLY); - SysMatrix_InsertTranslation(-1800.0f, -200.0f, 0.0f, MTXMODE_APPLY); + Matrix_InsertTranslation(-1800.0f, -200.0f, 0.0f, MTXMODE_APPLY); } return false; } @@ -1372,9 +1373,9 @@ void EnFu_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec EnFu* this = THIS; if (limbIndex == 9) { - SysMatrix_MultiplyVector3fByState(&D_80964C28, &this->unk_508); + Matrix_MultiplyVector3fByState(&D_80964C28, &this->unk_508); } else if (limbIndex == 20) { - SysMatrix_MultiplyVector3fByState(&D_80964C34, &this->unk_514); + Matrix_MultiplyVector3fByState(&D_80964C34, &this->unk_514); } } @@ -1382,9 +1383,9 @@ void EnFu_Draw(Actor* thisx, GlobalContext* globalCtx) { s32 pad; EnFu* this = THIS; - SysMatrix_StatePush(); + Matrix_StatePush(); func_80964950(globalCtx, this->unk_2D8, ARRAY_COUNT(this->unk_2D8)); - SysMatrix_StatePop(); + Matrix_StatePop(); OPEN_DISPS(globalCtx->state.gfxCtx); @@ -1393,8 +1394,8 @@ void EnFu_Draw(Actor* thisx, GlobalContext* globalCtx) { gDPPipeSync(POLY_OPA_DISP++); gSPSegment(POLY_OPA_DISP++, 0x08, Gfx_EnvColor(globalCtx->state.gfxCtx, 0, 50, 160, 0)); gSPSegment(POLY_OPA_DISP++, 0x09, Gfx_EnvColor(globalCtx->state.gfxCtx, 255, 255, 255, 0)); - SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, - EnFu_OverrideLimbDraw, EnFu_PostLimbDraw, &this->actor); + SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, + EnFu_OverrideLimbDraw, EnFu_PostLimbDraw, &this->actor); CLOSE_DISPS(globalCtx->state.gfxCtx); } @@ -1435,11 +1436,11 @@ void func_809647EC(GlobalContext* globalCtx, EnFuUnkStruct* ptr, s32 len) { ptr->unk_08.y += ptr->unk_20.y; ptr->unk_08.x += 2.0f * Math_SinS(ptr->unk_2C); ptr->unk_08.z += 2.0f * Math_CosS(ptr->unk_2C); - SysMatrix_StatePush(); - SysMatrix_InsertTranslation(ptr->unk_08.x, ptr->unk_08.y, ptr->unk_08.z, MTXMODE_NEW); + Matrix_StatePush(); + Matrix_InsertTranslation(ptr->unk_08.x, ptr->unk_08.y, ptr->unk_08.z, MTXMODE_NEW); Matrix_RotateY(activeCam, MTXMODE_APPLY); - SysMatrix_MultiplyVector3fByState(&sp44, &ptr->unk_08); - SysMatrix_StatePop(); + Matrix_MultiplyVector3fByState(&sp44, &ptr->unk_08); + Matrix_StatePop(); ptr->unk_2C += 6000; } } @@ -1460,8 +1461,8 @@ void func_80964950(GlobalContext* globalCtx, EnFuUnkStruct* ptr, s32 len) { gSPDisplayList(POLY_OPA_DISP++, D_0600B0A0); flag = true; } - SysMatrix_InsertTranslation(ptr->unk_08.x, ptr->unk_08.y, ptr->unk_08.z, MTXMODE_NEW); - SysMatrix_NormalizeXYZ(&globalCtx->mf_187FC); + Matrix_InsertTranslation(ptr->unk_08.x, ptr->unk_08.y, ptr->unk_08.z, MTXMODE_NEW); + Matrix_NormalizeXYZ(&globalCtx->mf_187FC); Matrix_Scale(ptr->unk_00, ptr->unk_00, ptr->unk_00, MTXMODE_APPLY); gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(&D_0405E6F0)); diff --git a/src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.c b/src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.c index 25f89e6f7..9997acd54 100644 --- a/src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.c +++ b/src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.c @@ -63,8 +63,7 @@ void EnGinkoMan_Init(Actor* thisx, GlobalContext* globalCtx) { this->isStampChecked = false; this->choiceDepositWithdrawl = GINKOMAN_CHOICE_RESET; this->serviceFee = 0; - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_0600C240, &D_060043F0, this->limbDrawTbl, this->transitionDrawTbl, - 16); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_0600C240, &D_060043F0, this->jointTable, this->morphTable, 16); EnGinkoMan_SetupIdle(this); } @@ -496,8 +495,7 @@ void EnGinkoMan_Dialogue(EnGinkoMan* this, GlobalContext* globalCtx) { break; } - if ((this->skelAnime.animCurrentSeg == &D_060008C0) && - func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { + if ((this->skelAnime.animation == &D_060008C0) && Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { Audio_PlayActorSound2(&this->actor, NA_SE_EV_BANK_MAN_HAND_HIT); } } @@ -566,11 +564,11 @@ void EnGinkoMan_SetupStamp(EnGinkoMan* this) { void EnGinkoMan_Stamp(EnGinkoMan* this, GlobalContext* globalCtx) { if ((this->curTextId == 0x464) // "Hey, relax! It doesn't leave any marks, and it's not gonna hurt." - && (func_801378B8(&this->skelAnime, 10.0f))) { + && (Animation_OnFrame(&this->skelAnime, 10.0f))) { Audio_PlayActorSound2(&this->actor, NA_SE_EV_HANKO); // "stamp" } - if (func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { + if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { switch (this->curTextId) { case 0x464: // "Hey, relax! It doesn't leave any marks, and it's not gonna hurt." func_800BDC5C(&this->skelAnime, animations, GINKO_SITTING); @@ -597,12 +595,12 @@ void EnGinkoMan_Stamp(EnGinkoMan* this, GlobalContext* globalCtx) { void EnGinkoMan_SwitchAnimation(EnGinkoMan* this, GlobalContext* globalCtx) { if (this->actor.xzDistToPlayer > 160.0f) { if (this->animTimer == 0) { - if (this->skelAnime.animCurrentSeg != &D_06004A7C) { + if (this->skelAnime.animation != &D_06004A7C) { this->animTimer = 40; func_800BDC5C(&this->skelAnime, animations, GINKO_ADVERTISING); } } - } else if ((this->animTimer == 0) && (this->skelAnime.animCurrentSeg != &D_06000AC4)) { + } else if ((this->animTimer == 0) && (this->skelAnime.animation != &D_06000AC4)) { this->animTimer = 40; func_800BDC5C(&this->skelAnime, animations, GINKO_AMAZED); } @@ -611,8 +609,8 @@ void EnGinkoMan_SwitchAnimation(EnGinkoMan* this, GlobalContext* globalCtx) { } void EnGinkoMan_FacePlayer(EnGinkoMan* this, GlobalContext* globalCtx) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); - if (this->skelAnime.animCurrentSeg != &D_06004A7C) { + SkelAnime_Update(&this->skelAnime); + if (this->skelAnime.animation != &D_06004A7C) { func_800E9250(globalCtx, &this->actor, &this->limb15Rot, &this->limb8Rot, this->actor.focus.pos); } else { func_800E8F08(&this->limb15Rot, &this->limb8Rot); @@ -629,27 +627,27 @@ void EnGinkoMan_Update(Actor* thisx, GlobalContext* globalCtx) { } s32 EnGinkoMan_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, - Actor* thisx) { - EnGinkoMan* this = THIS; + Actor* arg) { + EnGinkoMan* this = (EnGinkoMan*)arg; if (limbIndex == 15) { *dList = D_0600B1D8; } if (limbIndex == 15) { - SysMatrix_InsertTranslation(1500.0f, 0.0f, 0.0f, 1); - SysMatrix_InsertXRotation_s(this->limb15Rot.y, 1); - SysMatrix_InsertZRotation_s(this->limb15Rot.x, 1); - SysMatrix_InsertTranslation(-1500.0f, 0.0f, 0.0f, 1); + Matrix_InsertTranslation(1500.0f, 0.0f, 0.0f, MTXMODE_APPLY); + Matrix_InsertXRotation_s(this->limb15Rot.y, 1); + Matrix_InsertZRotation_s(this->limb15Rot.x, 1); + Matrix_InsertTranslation(-1500.0f, 0.0f, 0.0f, MTXMODE_APPLY); } else if (limbIndex == 8) { - SysMatrix_InsertXRotation_s(-this->limb8Rot.y, 1); - SysMatrix_InsertZRotation_s(-this->limb8Rot.x, 1); + Matrix_InsertXRotation_s(-this->limb8Rot.y, 1); + Matrix_InsertZRotation_s(-this->limb8Rot.x, 1); } return 0; } -void EnGinkoMan_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) { +void EnGinkoMan_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* arg) { } void EnGinkoMan_Draw(Actor* thisx, GlobalContext* globalCtx) { @@ -663,8 +661,8 @@ void EnGinkoMan_Draw(Actor* thisx, GlobalContext* globalCtx) { gSPSegment(POLY_OPA_DISP++, 0x09, Gfx_EnvColor(globalCtx->state.gfxCtx, 50, 80, 0, 0)); gDPPipeSync(POLY_OPA_DISP++); - SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, - &EnGinkoMan_OverrideLimbDraw, &EnGinkoMan_PostLimbDraw, &this->actor); + SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, + EnGinkoMan_OverrideLimbDraw, EnGinkoMan_PostLimbDraw, &this->actor); CLOSE_DISPS(globalCtx->state.gfxCtx); } diff --git a/src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.h b/src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.h index ce992c0b3..e605be1d6 100644 --- a/src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.h +++ b/src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.h @@ -11,8 +11,8 @@ typedef struct EnGinkoMan { /* 0x000 */ Actor actor; /* 0x144 */ SkelAnime skelAnime; /* 0x188 */ EnGinkoManActionFunc actionFunc; - /* 0x18C */ Vec3s limbDrawTbl[0x10]; - /* 0x1EC */ Vec3s transitionDrawTbl[0x10]; + /* 0x18C */ Vec3s jointTable[0x10]; + /* 0x1EC */ Vec3s morphTable[0x10]; /* 0x24C */ Vec3s limb15Rot; /* 0x252 */ Vec3s limb8Rot; /* 0x258 */ s16 curTextId; diff --git a/src/overlays/actors/ovl_En_Guruguru/z_en_guruguru.c b/src/overlays/actors/ovl_En_Guruguru/z_en_guruguru.c index b87748b8a..71e0c8cd0 100644 --- a/src/overlays/actors/ovl_En_Guruguru/z_en_guruguru.c +++ b/src/overlays/actors/ovl_En_Guruguru/z_en_guruguru.c @@ -80,7 +80,7 @@ void EnGuruguru_Init(Actor* thisx, GlobalContext* globalCtx) { this->actor.colChkInfo.mass = MASS_IMMOVABLE; ActorShape_Init(&this->actor.shape, 0.0f, func_800B3FC0, 19.0f); - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_06006C90, &D_06000B04, this->jointTable, this->morphTable, 16); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_06006C90, &D_06000B04, this->jointTable, this->morphTable, 16); this->actor.targetMode = 0; if (this->actor.params != 2) { Collider_InitAndSetCylinder(globalCtx, &this->collider, &this->actor, &sCylinderInit); @@ -112,9 +112,9 @@ void EnGuruguru_Destroy(Actor* thisx, GlobalContext* globalCtx) { } void EnGuruguru_ChangeAnimation(EnGuruguru* this, s32 arg1) { - this->frameCount = SkelAnime_GetFrameCount(&D_80BC79CC[arg1]->common); - SkelAnime_ChangeAnim(&this->skelAnime, D_80BC79CC[arg1], D_80BC79D8[arg1], 0.0f, this->frameCount, D_80BC79D4[arg1], - -4.0f); + this->frameCount = Animation_GetLastFrame(D_80BC79CC[arg1]); + Animation_Change(&this->skelAnime, D_80BC79CC[arg1], D_80BC79D8[arg1], 0.0f, this->frameCount, D_80BC79D4[arg1], + -4.0f); } void EnGuruguru_DoNothing(EnGuruguru* this, GlobalContext* globalCtx) { @@ -152,7 +152,7 @@ void func_80BC6F14(EnGuruguru* this, GlobalContext* globalCtx) { s16 yaw; s16 yawTemp; - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); if (this->unk270 != 0) { Player* player = GET_PLAYER(globalCtx); @@ -194,7 +194,7 @@ void func_80BC7068(EnGuruguru* this, GlobalContext* globalCtx) { Player* player = GET_PLAYER(globalCtx); if (this->unk268 != 0) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); } else if (this->unusedTimer == 0) { this->unusedTimer = 6; if (func_80152498(&globalCtx->msgCtx) != 5) { @@ -262,11 +262,11 @@ void func_80BC7068(EnGuruguru* this, GlobalContext* globalCtx) { this->texIndex = 1; } if ((this->unk268 != 0) && (this->textIdIndex >= 7)) { - this->skelAnime.animPlaybackSpeed = 2.0f; + this->skelAnime.playSpeed = 2.0f; func_801A29D4(3, 1.18921f, 2); func_801A3B48(0); } else { - if (this->skelAnime.animPlaybackSpeed == 2.0f) { + if (this->skelAnime.playSpeed == 2.0f) { func_801A29D4(3, 1.0f, 2); } if (this->unk268 == 0) { @@ -274,7 +274,7 @@ void func_80BC7068(EnGuruguru* this, GlobalContext* globalCtx) { } else { func_801A3B48(0); } - this->skelAnime.animPlaybackSpeed = 1.0f; + this->skelAnime.playSpeed = 1.0f; } this->unk266 = 1; func_80151938(globalCtx, textIDs[this->textIdIndex]); @@ -295,7 +295,7 @@ void func_80BC73F4(EnGuruguru* this) { } void func_80BC7440(EnGuruguru* this, GlobalContext* globalCtx) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); if (Actor_HasParent(&this->actor, globalCtx)) { this->actor.parent = NULL; this->textIdIndex++; @@ -311,7 +311,7 @@ void func_80BC7440(EnGuruguru* this, GlobalContext* globalCtx) { } void func_80BC7520(EnGuruguru* this, GlobalContext* globalCtx) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); if (func_800B84D0(&this->actor, globalCtx)) { this->actionFunc = func_80BC7068; } else { @@ -394,7 +394,7 @@ void EnGuruguru_Draw(Actor* thisx, GlobalContext* globalCtx) { func_8012C2DC(globalCtx->state.gfxCtx); gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sEyeTextures[this->texIndex])); gSPSegment(POLY_OPA_DISP++, 0x09, SEGMENTED_TO_VIRTUAL(sMouthTextures[this->texIndex])); - SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, - EnGuruguru_OverrideLimbDraw, NULL, &this->actor); + SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, + EnGuruguru_OverrideLimbDraw, NULL, &this->actor); CLOSE_DISPS(globalCtx->state.gfxCtx); } diff --git a/src/overlays/actors/ovl_En_Hg/z_en_hg.c b/src/overlays/actors/ovl_En_Hg/z_en_hg.c index 54c62e52d..7de50c75d 100644 --- a/src/overlays/actors/ovl_En_Hg/z_en_hg.c +++ b/src/overlays/actors/ovl_En_Hg/z_en_hg.c @@ -27,8 +27,8 @@ void func_80BCF6D0(EnHg* this, GlobalContext* globalCtx); void func_80BCF8A0(EnHg* this, GlobalContext* globalCtx); void func_80BCF93C(EnHg* this); void func_80BCF95C(EnHg* this, GlobalContext* globalCtx); -s32 EnHg_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx); -void EnHg_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx); +s32 EnHg_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* arg); +void EnHg_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* arg); extern AnimationHeader D_06000370; extern AnimationHeader D_06001138; @@ -127,8 +127,8 @@ void EnHg_Init(Actor* thisx, GlobalContext* globalCtx) { s32 i; ActorShape_Init(&this->actor.shape, 0.0f, NULL, 36.0f); - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_06008580, &D_0600260C, this->limbDrawTbl, this->transitionDrawTbl, - HG_LIMB_MAX); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_06008580, &D_0600260C, this->jointTable, this->morphTable, + HG_LIMB_MAX); Collider_InitCylinder(globalCtx, &this->collider); Collider_SetCylinder(globalCtx, &this->collider, &this->actor, &sCylinderInit); CollisionCheck_SetInfo2(&this->actor.colChkInfo, &sDamageTable, &sColChkInfoInit2); @@ -183,8 +183,8 @@ void func_80BCF4AC(EnHg* this, GlobalContext* globalCtx) { this->actor.speedXZ = 1.6f; if (!(player->stateFlags2 & 0x08000000) && !func_80152498(&globalCtx->msgCtx)) { - if (((this->skelAnime.animCurrentFrame > 9.0f) && (this->skelAnime.animCurrentFrame < 16.0f)) || - ((this->skelAnime.animCurrentFrame > 44.0f) && (this->skelAnime.animCurrentFrame < 51.0f))) { + if (((this->skelAnime.curFrame > 9.0f) && (this->skelAnime.curFrame < 16.0f)) || + ((this->skelAnime.curFrame > 44.0f) && (this->skelAnime.curFrame < 51.0f))) { Actor_SetVelocityAndMoveYRotationAndGravity(&this->actor); Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 5, 0x3E8, 0x14); this->actor.world.rot.y = this->actor.shape.rot.y; @@ -215,7 +215,7 @@ void func_80BCF68C(EnHg* this) { } void func_80BCF6D0(EnHg* this, GlobalContext* globalCtx) { - if (func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { + if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { func_80BCF5F0(this); } } @@ -283,7 +283,7 @@ void func_80BCF95C(EnHg* this, GlobalContext* globalCtx) { this->cutscenes[3] = globalCtx->csCtx.npcActions[actionIndex]->unk0; switch (globalCtx->csCtx.npcActions[actionIndex]->unk0) { case 1: - this->currentAnimation = NULL; + this->currentAnimation = 0; func_800BDC5C(&this->skelAnime, sAnimations, 0); break; case 2: @@ -314,7 +314,7 @@ void func_80BCF95C(EnHg* this, GlobalContext* globalCtx) { break; } } else { - if (func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { + if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { switch (this->currentAnimation) { case 3: this->currentAnimation = 4; @@ -393,7 +393,7 @@ void EnHg_Update(Actor* thisx, GlobalContext* globalCtx) { EnHg* this = THIS; this->actionFunc(this, globalCtx); - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); func_80BCF7D8(this, globalCtx); func_80BCFC0C(this, globalCtx); Actor_UpdateBgCheckInfo(globalCtx, &this->actor, 30.0f, 25.0f, 0.0f, 5); @@ -407,9 +407,9 @@ s32 EnHg_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, void EnHg_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) { EnHg* this = THIS; if (limbIndex == HG_LIMB_HEAD) { - SysMatrix_CopyCurrentState(&this->unk1D8); + Matrix_CopyCurrentState(&this->unk1D8); } else if (limbIndex == HG_LIMB_PELVIS) { - SysMatrix_GetStateTranslation(&this->actor.focus.pos); + Matrix_GetStateTranslation(&this->actor.focus.pos); } } @@ -418,9 +418,9 @@ void EnHg_Draw(Actor* thisx, GlobalContext* globalCtx) { OPEN_DISPS(globalCtx->state.gfxCtx); func_8012C28C(globalCtx->state.gfxCtx); - SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, - EnHg_OverrideLimbDraw, EnHg_PostLimbDraw, &this->actor); - SysMatrix_SetCurrentState(&this->unk1D8); + SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, + EnHg_OverrideLimbDraw, EnHg_PostLimbDraw, &this->actor); + Matrix_SetCurrentState(&this->unk1D8); gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_OPA_DISP++, D_06005E28); CLOSE_DISPS(globalCtx->state.gfxCtx); diff --git a/src/overlays/actors/ovl_En_Hg/z_en_hg.h b/src/overlays/actors/ovl_En_Hg/z_en_hg.h index e6825ea45..489db0afb 100644 --- a/src/overlays/actors/ovl_En_Hg/z_en_hg.h +++ b/src/overlays/actors/ovl_En_Hg/z_en_hg.h @@ -38,8 +38,8 @@ typedef struct EnHg { /* 0x1D8 */ MtxF unk1D8; /* 0x218 */ s32 unk218; /* 0x21C */ s32 currentAnimation; - /* 0x220 */ Vec3s limbDrawTbl[HG_LIMB_MAX]; - /* 0x292 */ Vec3s transitionDrawTbl[HG_LIMB_MAX]; + /* 0x220 */ Vec3s jointTable[HG_LIMB_MAX]; + /* 0x292 */ Vec3s morphTable[HG_LIMB_MAX]; /* 0x304 */ UNK_TYPE1 pad304[0xC]; /* 0x310 */ u16 cutscenes[4]; } EnHg; // size = 0x318 diff --git a/src/overlays/actors/ovl_En_Holl/z_en_holl.c b/src/overlays/actors/ovl_En_Holl/z_en_holl.c index ad9e4e873..b2e0a09d9 100644 --- a/src/overlays/actors/ovl_En_Holl/z_en_holl.c +++ b/src/overlays/actors/ovl_En_Holl/z_en_holl.c @@ -330,7 +330,7 @@ void EnHoll_Draw(Actor* thisx, GlobalContext* globalCtx) { } dl = Gfx_CallSetupDL(dl, dlIndex); if (this->playerSide == EN_HOLL_BEHIND) { - SysMatrix_InsertYRotation_f(M_PI, MTXMODE_APPLY); + Matrix_InsertYRotation_f(M_PI, MTXMODE_APPLY); } gSPMatrix(dl++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gDPSetPrimColor(dl++, 0, 0, 0, 0, 0, this->alpha); diff --git a/src/overlays/actors/ovl_En_In/z_en_in.c b/src/overlays/actors/ovl_En_In/z_en_in.c index e3b34d19f..fe421558f 100644 --- a/src/overlays/actors/ovl_En_In/z_en_in.c +++ b/src/overlays/actors/ovl_En_In/z_en_in.c @@ -199,11 +199,11 @@ s32 func_808F30B0(SkelAnime* skelAnime, s16 animIndex) { ret = true; frameCount = sAnimations[animIndex].frameCount; if (frameCount < 0) { - frameCount = SkelAnime_GetFrameCount(&sAnimations[animIndex].animationSeg->common); + frameCount = Animation_GetLastFrame(sAnimations[animIndex].animationSeg); } - SkelAnime_ChangeAnim(skelAnime, sAnimations[animIndex].animationSeg, sAnimations[animIndex].playbackSpeed, - sAnimations[animIndex].frame, frameCount, sAnimations[animIndex].mode, - sAnimations[animIndex].transitionRate); + Animation_Change(skelAnime, sAnimations[animIndex].animationSeg, sAnimations[animIndex].playbackSpeed, + sAnimations[animIndex].frame, frameCount, sAnimations[animIndex].mode, + sAnimations[animIndex].transitionRate); } return ret; } @@ -279,7 +279,7 @@ void func_808F3414(EnIn* this, GlobalContext* globalCtx) { Vec3f sp30; if (this->unk23D == 0) { - this->unk494 = SkelAnime_FrameUpdateMatrix(&this->skelAnime); + this->unk494 = SkelAnime_Update(&this->skelAnime); } if (func_8013D5E8(this->actor.shape.rot.y, 0x2710, this->actor.yawTowardsPlayer)) { sp30.x = player->actor.world.pos.x; @@ -346,8 +346,8 @@ void func_808F374C(EnIn* this, GlobalContext* globalCtx) { AnimationHeader* animations[] = { &D_06015E38, &D_06016A60, &D_060177AC, &D_06016484, &D_060170DC, &D_06018240, &D_060187C8, &D_060198A8 }; - if (this->skelAnime.animCurrentSeg == &D_06016484 || this->skelAnime.animCurrentSeg == &D_060170DC) { - if (func_801378B8(&this->skelAnime, 8.0f)) { + if (this->skelAnime.animation == &D_06016484 || this->skelAnime.animation == &D_060170DC) { + if (Animation_OnFrame(&this->skelAnime, 8.0f)) { func_8019F88C(&this->actor.projectedPos, NA_SE_VO_IN_LASH_0, 2); if (Rand_ZeroOne() < 0.3f) { func_8019F1C0(&this->actor.projectedPos, NA_SE_IT_INGO_HORSE_NEIGH); @@ -355,13 +355,13 @@ void func_808F374C(EnIn* this, GlobalContext* globalCtx) { func_8019F1C0(&this->actor.projectedPos, NA_SE_IT_LASH); } } - if (this->skelAnime.animCurrentSeg == &D_060198A8 && func_801378B8(&this->skelAnime, 20.0f)) { + if (this->skelAnime.animation == &D_060198A8 && Animation_OnFrame(&this->skelAnime, 20.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_VO_IN_CRY_0); } - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime)) { + if (SkelAnime_Update(&this->skelAnime)) { this->unk486 = this->unk488 %= 8; - SkelAnime_ChangeAnim(&this->skelAnime, animations[this->unk488], 1.0f, 0.0f, - SkelAnime_GetFrameCount(&animations[this->unk488]->common), 2, -10.0f); + Animation_Change(&this->skelAnime, animations[this->unk488], 1.0f, 0.0f, + Animation_GetLastFrame(animations[this->unk488]), 2, -10.0f); } } @@ -1399,7 +1399,7 @@ void EnIn_Init(Actor* thisx, GlobalContext* globalCtx) { Actor_ProcessInitChain(&this->actor, sInitChain); ActorShape_Init(&this->actor.shape, 0.0f, func_800B3FC0, 30.0f); - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_06014EA8, NULL, this->limbDrawTbl, this->transitionDrawTbl, 20); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_06014EA8, NULL, this->jointTable, this->morphTable, 20); func_808F30B0(&this->skelAnime, 0); Collider_InitCylinder(globalCtx, &this->colliderCylinder); Collider_SetCylinder(globalCtx, &this->colliderCylinder, &this->actor, &sCylinderInit); @@ -1415,8 +1415,7 @@ void EnIn_Init(Actor* thisx, GlobalContext* globalCtx) { if (type == ENIN_HORSE_RIDER_YELLOW_SHIRT || type == ENIN_HORSE_RIDER_BLUE_SHIRT) { ActorShape_Init(&this->actor.shape, 0.0f, NULL, 0.0f); this->unk488 = 1; - SkelAnime_ChangeAnim(&this->skelAnime, &D_06016A60, 1.0f, 0.0f, SkelAnime_GetFrameCount(&D_06016A60.common), 2, - 0.0f); + Animation_Change(&this->skelAnime, &D_06016A60, 1.0f, 0.0f, Animation_GetLastFrame(&D_06016A60), 2, 0.0f); Actor_SetScale(&this->actor, 0.01f); this->unk23C = 0; this->unk23D = 1; @@ -1443,8 +1442,7 @@ void EnIn_Init(Actor* thisx, GlobalContext* globalCtx) { func_808F30B0(&this->skelAnime, 4); } if ((gSaveContext.weekEventReg[92] & (1 | 2 | 4)) == 2) { - this->skelAnime.animCurrentFrame = - ((Rand_ZeroOne() * 0.6f) + 0.2f) * this->skelAnime.animFrameCount; + this->skelAnime.curFrame = ((Rand_ZeroOne() * 0.6f) + 0.2f) * this->skelAnime.endFrame; } if (this->unk4AC & 8) { this->actionFunc = func_808F39DC; @@ -1523,7 +1521,7 @@ void func_808F6334(EnIn* this, GlobalContext* globalCtx) { this->unk4C4 += this->unk4C0 != 0.0f ? 40.0f : -40.0f; this->unk4C4 = CLAMP(this->unk4C4, 0.0f, 80.0f); - SysMatrix_InsertTranslation(this->unk4C4, 0.0f, 0.0f, MTXMODE_APPLY); + Matrix_InsertTranslation(this->unk4C4, 0.0f, 0.0f, MTXMODE_APPLY); if (this == (EnIn*)player->targetActor && !(globalCtx->msgCtx.unk11F04 >= 0xFF && globalCtx->msgCtx.unk11F04 <= 0x200) && newUnk4C8 == 3 && this->unk4C8 == 3) { @@ -1536,8 +1534,8 @@ void func_808F6334(EnIn* this, GlobalContext* globalCtx) { this->unk4C8 = newUnk4C8; } -s32 EnIn_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) { - EnIn* this = THIS; +s32 EnIn_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* arg) { + EnIn* this = (EnIn*)arg; s32 pad; Gfx* sp50[] = { NULL, NULL, D_060149A8, D_06014AE0, D_06014C30, D_060145D8, D_06014710, @@ -1565,15 +1563,15 @@ s32 EnIn_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, CLOSE_DISPS(globalCtx->state.gfxCtx); if (limbIndex == 16) { - SysMatrix_InsertTranslation(1500.0f, 0.0f, 0.0f, MTXMODE_APPLY); - SysMatrix_InsertXRotation_s(this->unk35A, MTXMODE_APPLY); - SysMatrix_InsertZRotation_s(-this->unk358, MTXMODE_APPLY); - SysMatrix_InsertTranslation(-1500.0f, 0.0f, 0.0f, MTXMODE_APPLY); + Matrix_InsertTranslation(1500.0f, 0.0f, 0.0f, MTXMODE_APPLY); + Matrix_InsertXRotation_s(this->unk35A, MTXMODE_APPLY); + Matrix_InsertZRotation_s(-this->unk358, MTXMODE_APPLY); + Matrix_InsertTranslation(-1500.0f, 0.0f, 0.0f, MTXMODE_APPLY); func_808F6334(this, globalCtx); } if (limbIndex == 9) { Matrix_RotateY(this->unk360, MTXMODE_APPLY); - SysMatrix_InsertXRotation_s(this->unk35E, MTXMODE_APPLY); + Matrix_InsertXRotation_s(this->unk35E, MTXMODE_APPLY); } if (limbIndex == 9 || limbIndex == 10 || limbIndex == 13) { rot->y += (s16)(Math_SinS(this->unk376[limbIndex]) * 200.0f); @@ -1597,22 +1595,22 @@ s32 EnIn_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, return 0; } -void EnIn_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) { - EnIn* this = THIS; +void EnIn_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* arg) { + EnIn* this = (EnIn*)arg; Vec3f sp50 = { 1600.0f, 0.0f, 0.0f }; Vec3f sp44 = { 0.0f, 0.0f, 0.0f }; if (limbIndex == 16) { - SysMatrix_MultiplyVector3fByState(&sp50, &this->unk4B4); + Matrix_MultiplyVector3fByState(&sp50, &this->unk4B4); Math_Vec3f_Copy(&this->actor.focus.pos, &this->unk4B4); } if (this->unk23D == 0) { Collider_UpdateSpheres(limbIndex, &this->colliderJntSph); if (limbIndex == 4) { - SysMatrix_MultiplyVector3fByState(&sp44, &this->unk248); + Matrix_MultiplyVector3fByState(&sp44, &this->unk248); } if (limbIndex == 7) { - SysMatrix_MultiplyVector3fByState(&sp44, &this->unk254); + Matrix_MultiplyVector3fByState(&sp44, &this->unk254); } if (this->unk23C == 0) { if (!(this->unk4AC & 8)) { @@ -1642,7 +1640,7 @@ void EnIn_Draw(Actor* thisx, GlobalContext* globalCtx) { OPEN_DISPS(globalCtx->state.gfxCtx); func_8012C28C(globalCtx->state.gfxCtx); gDPPipeSync(POLY_OPA_DISP++); - SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, - EnIn_OverrideLimbDraw, EnIn_PostLimbDraw, &this->actor); + SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, + EnIn_OverrideLimbDraw, EnIn_PostLimbDraw, &this->actor); CLOSE_DISPS(globalCtx->state.gfxCtx); } diff --git a/src/overlays/actors/ovl_En_In/z_en_in.h b/src/overlays/actors/ovl_En_In/z_en_in.h index e874ced5d..ca67df431 100644 --- a/src/overlays/actors/ovl_En_In/z_en_in.h +++ b/src/overlays/actors/ovl_En_In/z_en_in.h @@ -34,8 +34,8 @@ typedef struct EnIn { /* 0x254 */ Vec3f unk254; /* 0x260 */ u8 unk260; /* 0x261 */ u8 unk261; - /* 0x262 */ Vec3s limbDrawTbl[20]; - /* 0x2DA */ Vec3s transitionDrawTbl[20]; + /* 0x262 */ Vec3s jointTable[20]; + /* 0x2DA */ Vec3s morphTable[20]; /* 0x352 */ s16 unk352; /* 0x354 */ s16 unk354; /* 0x356 */ char unk356[0x2]; diff --git a/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c b/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c index a6aaa90c4..42b9a6c91 100644 --- a/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c +++ b/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c @@ -325,7 +325,7 @@ static Gfx* D_80B4E984[] = { static s8 D_80B4E994 = 0; -static s8 D_80B4E998 = NULL; +static s8 D_80B4E998 = 0; static s8 D_80B4E99C[] = { 0 }; @@ -1369,7 +1369,7 @@ void func_80B454BC(EnInvadepoh* this, GlobalContext* globalCtx) { } void EnInvadepoh_SetSysMatrix(Vec3f* vec) { - MtxF* sysMatrix = SysMatrix_GetCurrentState(); + MtxF* sysMatrix = Matrix_GetCurrentState(); sysMatrix->wx = vec->x; sysMatrix->wy = vec->y; @@ -2160,7 +2160,7 @@ void func_80B474DC(EnInvadepoh* this, GlobalContext* globalCtx) { } void func_80B47568(EnInvadepoh* this) { - SkelAnime_ChangeAnimTransitionRepeat(&this->skelAnime, &D_06001D80, -6.0f); + Animation_MorphToLoop(&this->skelAnime, &D_06001D80, -6.0f); this->collider.base.atFlags &= ~0x1; this->collider.base.acFlags &= ~0x1; this->collider.base.ocFlags1 &= ~0x1; @@ -2202,8 +2202,8 @@ void func_80B47600(EnInvadepoh* this, GlobalContext* globalCtx) { } void func_80B4770C(EnInvadepoh* this) { - if (this->skelAnime.animCurrentSeg != &D_06001D80) { - SkelAnime_ChangeAnimTransitionRepeat(&this->skelAnime, &D_06001D80, -6.0f); + if (this->skelAnime.animation != &D_06001D80) { + Animation_MorphToLoop(&this->skelAnime, &D_06001D80, -6.0f); } this->collider.base.atFlags |= 1; this->collider.base.acFlags |= 1; @@ -2231,7 +2231,7 @@ void func_80B47830(EnInvadepoh* this) { this->collider.base.atFlags &= ~1; this->collider.base.acFlags &= ~1; this->collider.base.ocFlags1 |= 1; - SkelAnime_ChangeAnimDefaultRepeat(&this->skelAnime, &D_060006C8); + Animation_PlayLoop(&this->skelAnime, &D_060006C8); func_800BCB70(&this->actor, 0x4000, 255, 0, 16); this->alienAlpha = 255; this->actor.draw = func_80B4DB14; @@ -2256,7 +2256,7 @@ void func_80B47938(EnInvadepoh* this) { this->collider.base.atFlags &= ~1; this->collider.base.acFlags &= ~1; this->collider.base.ocFlags1 &= ~1; - SkelAnime_ChangeAnimDefaultRepeat(&this->skelAnime, &D_06000608); + Animation_PlayLoop(&this->skelAnime, &D_06000608); this->actor.flags &= ~1; this->actionTimer = 10; this->alienAlpha = 255; @@ -2327,9 +2327,9 @@ void func_80B47BAC(Actor* thisx, GlobalContext* globalCtx) { Actor_SetObjectSegment(globalCtx, &this->actor); func_80B45080(); this->actor.update = func_80B47D30; - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_06004E50, &D_06001D80, this->limbDrawTable, - this->transitionDrawTable, 14); - this->skelAnime.animCurrentFrame = (this->actor.params & 7) * this->skelAnime.animFrameCount * 0.125f; + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_06004E50, &D_06001D80, this->jointTable, this->morphTable, + 14); + this->skelAnime.curFrame = (this->actor.params & 7) * this->skelAnime.endFrame * 0.125f; func_80B444BC(this, globalCtx); func_80B442E4(this); func_80B447C0(this, globalCtx); @@ -2378,7 +2378,7 @@ void func_80B47D30(Actor* thisx, GlobalContext* globalCtx) { this->actionFunc(this, globalCtx); if (thisx->draw != NULL) { - this->animPlayFlag = SkelAnime_FrameUpdateMatrix(&this->skelAnime); + this->animPlayFlag = SkelAnime_Update(&this->skelAnime); } Collider_UpdateCylinder(&this->actor, &this->collider); @@ -2410,9 +2410,8 @@ void func_80B47FA8(Actor* thisx, GlobalContext* globalCtx) { Actor_SetObjectSegment(globalCtx, thisx); this->actor.update = func_80B48060; this->actor.draw = func_80B4E158; - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_06004010, NULL, this->limbDrawTable, this->transitionDrawTable, - 6); - SkelAnime_ChangeAnimDefaultRepeat(&this->skelAnime, &D_06004264); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_06004010, NULL, this->jointTable, this->morphTable, 6); + Animation_PlayLoop(&this->skelAnime, &D_06004264); } } @@ -2429,19 +2428,19 @@ void func_80B48060(Actor* thisx, GlobalContext* globalCtx) { } temp = this->actor.params & 7; - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); Math_ScaledStepToS(&this->actor.shape.rot.x, D_80B4EDC0[temp], 0x32); if (this->actor.child != NULL) { - SysMatrix_StatePush(); - SysMatrix_SetStateRotationAndTranslation(this->actor.world.pos.x, this->actor.world.pos.y, - this->actor.world.pos.z, &this->actor.shape.rot); - SysMatrix_InsertTranslation(0, 57.0f, -36.0f, MTXMODE_APPLY); - SysMatrix_InsertXRotation_s(this->actor.shape.rot.x * -0.7f, MTXMODE_APPLY); - SysMatrix_InsertZRotation_s(this->actor.shape.rot.z * -0.7f, MTXMODE_APPLY); - SysMatrix_GetStateTranslation(&this->actor.child->world.pos); - SysMatrix_CopyCurrentState(&unkMtx); + Matrix_StatePush(); + Matrix_SetStateRotationAndTranslation(this->actor.world.pos.x, this->actor.world.pos.y, this->actor.world.pos.z, + &this->actor.shape.rot); + Matrix_InsertTranslation(0, 57.0f, -36.0f, MTXMODE_APPLY); + Matrix_InsertXRotation_s(this->actor.shape.rot.x * -0.7f, MTXMODE_APPLY); + Matrix_InsertZRotation_s(this->actor.shape.rot.z * -0.7f, MTXMODE_APPLY); + Matrix_GetStateTranslation(&this->actor.child->world.pos); + Matrix_CopyCurrentState(&unkMtx); func_8018219C(&unkMtx, &this->actor.child->shape.rot, 0); - SysMatrix_StatePop(); + Matrix_StatePop(); } } @@ -2454,9 +2453,8 @@ void func_80B481C4(Actor* thisx, GlobalContext* globalCtx) { Actor_SetObjectSegment(globalCtx, &this->actor); this->actor.update = func_80B4827C; this->actor.draw = func_80B4E1B0; - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_06004C30, NULL, this->limbDrawTable, this->transitionDrawTable, - 6); - SkelAnime_ChangeAnimDefaultRepeat(&this->skelAnime, &D_06004E98); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_06004C30, NULL, this->jointTable, this->morphTable, 6); + Animation_PlayLoop(&this->skelAnime, &D_06004E98); } } @@ -2468,12 +2466,12 @@ void func_80B4827C(Actor* thisx, GlobalContext* globalCtx) { return; } - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); } void func_80B482D4(EnInvadepoh* this) { this->actionTimer = 40; - SkelAnime_ChangeAnimTransitionRepeat(&this->skelAnime, &D_06002A8C, -10.0f); + Animation_MorphToLoop(&this->skelAnime, &D_06002A8C, -10.0f); this->actor.draw = NULL; this->actionFunc = func_80B48324; } @@ -2489,7 +2487,7 @@ void func_80B48324(EnInvadepoh* this, GlobalContext* globalCtx) { void func_80B48374(EnInvadepoh* this) { this->actionTimer = 60; - SkelAnime_ChangeAnimTransitionRepeat(&this->skelAnime, &D_06002A8C, -10.0f); + Animation_MorphToLoop(&this->skelAnime, &D_06002A8C, -10.0f); this->actor.draw = func_80B4E324; this->actionFunc = func_80B483CC; } @@ -2521,7 +2519,7 @@ void func_80B4843C(EnInvadepoh* this) { this->behaviorInfo.unk44 = 0.1f; this->behaviorInfo.unk48 = 2000; this->actionTimer = 50; - SkelAnime_ChangeAnim(&this->skelAnime, &D_06007328, 2.0f, 0.0f, 0.0f, 0, -5.0f); + Animation_Change(&this->skelAnime, &D_06007328, 2.0f, 0.0f, 0.0f, 0, -5.0f); this->actor.draw = func_80B4E324; this->actionFunc = func_80B484EC; } @@ -2551,7 +2549,7 @@ void func_80B48588(EnInvadepoh* this) { this->behaviorInfo.unk42 = 0; this->behaviorInfo.unk44 = 0.28f; this->behaviorInfo.unk48 = 7000; - SkelAnime_ChangeAnimTransitionStop(&this->skelAnime, &D_06009E58, -10.0f); + Animation_MorphToPlayOnce(&this->skelAnime, &D_06009E58, -10.0f); this->actor.draw = func_80B4E324; this->actionFunc = func_80B48610; } @@ -2568,10 +2566,10 @@ void func_80B48620(Actor* thisx, GlobalContext* globalCtx) { Actor_SetObjectSegment(globalCtx, &this->actor); func_80B44F58(); this->actor.update = func_80B4873C; - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_06013928, &D_06009E58, this->limbDrawTable, - this->transitionDrawTable, 23); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_06013928, &D_06009E58, this->jointTable, this->morphTable, + 23); func_80B45C04(&this->behaviorInfo, D_80B4EA90, 6, D_80B4EB00, 2, &D_801D15BC, 5000, 0.05f, 0.3f, 0.12f); - SkelAnime_ChangeAnimDefaultRepeat(&this->skelAnime, &D_06009E58); + Animation_PlayLoop(&this->skelAnime, &D_06009E58); func_80B482D4(this); } } @@ -2586,7 +2584,7 @@ void func_80B4873C(Actor* thisx, GlobalContext* globalCtx) { return; } this->actionFunc(this, globalCtx); - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); func_80B45CE0(substruct); if (substruct->unk40 != 0) { this->actor.shape.rot.x = -substruct->unk40; @@ -2604,7 +2602,7 @@ void func_80B487B4(EnInvadepoh* this) { substruct->unk26.z = 0; substruct->unk30 = 0.1f; substruct->unk2C = 800; - SkelAnime_ChangeAnimTransitionRepeat(&this->skelAnime, &D_06014088, -10.0f); + Animation_MorphToLoop(&this->skelAnime, &D_06014088, -10.0f); this->actionFunc = func_80B48848; } @@ -2621,7 +2619,7 @@ void func_80B48848(EnInvadepoh* this, GlobalContext* globalCtx) { } func_80B43E6C(this, 6, this->behaviorInfo.unk4C, 0x46); if (((this->actor.flags & 0x40) == 0x40) && - (func_801378B8(&this->skelAnime, 0.0f) || func_801378B8(&this->skelAnime, 7.0f))) { + (Animation_OnFrame(&this->skelAnime, 0.0f) || Animation_OnFrame(&this->skelAnime, 7.0f))) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_ROMANI_WALK); } if (this->actionTimer > 0) { @@ -2664,7 +2662,7 @@ void func_80B48948(EnInvadepoh* this) { substruct->unk2C = 1000; } - SkelAnime_ChangeAnimTransitionRepeat(&this->skelAnime, &D_06009E58, -10.0f); + Animation_MorphToLoop(&this->skelAnime, &D_06009E58, -10.0f); this->actionFunc = func_80B48AD4; } @@ -2735,7 +2733,7 @@ void func_80B48DE4(EnInvadepoh* this) { AlienBehaviorInfo* substruct = &this->behaviorInfo; this->actor.speedXZ = 0.0f; - SkelAnime_ChangeAnimTransitionRepeat(&this->skelAnime, &D_06009E58, -10.0f); + Animation_MorphToLoop(&this->skelAnime, &D_06009E58, -10.0f); this->behaviorInfo.unk4C = 0; substruct->unk30 = 0.05f; substruct->unk2C = 1200; @@ -2772,8 +2770,8 @@ void func_80B48FB0(Actor* thisx, GlobalContext* globalCtx) { this->actor.update = func_80B490F0; this->actor.draw = func_80B4E324; this->actor.textId = 0x3330; - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_06013928, &D_06009E58, this->limbDrawTable, - this->transitionDrawTable, 23); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_06013928, &D_06009E58, this->jointTable, this->morphTable, + 23); func_80B45C04(&this->behaviorInfo, D_80B4EA90, 6, D_80B4EB00, 2, &D_801D15BC, 100, 0.03, 0.3, 0.03); func_80B444F4(this, globalCtx); EnInvadepoh_SetPathPointToWorldPos(this, 0); @@ -2795,7 +2793,7 @@ void func_80B490F0(Actor* thisx, GlobalContext* globalCtx) { } this->actionFunc(this, globalCtx); if (sp2C) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); func_80B45CE0(&this->behaviorInfo); if ((this->actionFunc != func_80B48E4C) && !isTalking && this->actor.isTargeted) { func_800B8614(&this->actor, globalCtx, 100.0f); @@ -3042,7 +3040,7 @@ void func_80B49B1C(Actor* thisx, GlobalContext* globalCtx) { void func_80B49BD0(EnInvadepoh* this) { AlienBehaviorInfo* substruct = &this->behaviorInfo; - SkelAnime_ChangeAnimTransitionRepeat(&this->skelAnime, &D_06014088, -10.0f); + Animation_MorphToLoop(&this->skelAnime, &D_06014088, -10.0f); substruct->unk26.x = 0; substruct->unk26.y = 0; substruct->unk26.z = 0; @@ -3074,7 +3072,7 @@ void func_80B49C38(EnInvadepoh* this, GlobalContext* globalCtx) { } if (((this->actor.flags & 0x40) == 0x40) && - (func_801378B8(&this->skelAnime, 0.0f) || func_801378B8(&this->skelAnime, 7.0f))) { + (Animation_OnFrame(&this->skelAnime, 0.0f) || Animation_OnFrame(&this->skelAnime, 7.0f))) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_ROMANI_WALK); } if (this->clockTime >= 0.9999f) { @@ -3086,7 +3084,7 @@ void func_80B49DA0(EnInvadepoh* this) { this->behaviorInfo.unk30 = 0.08f; this->behaviorInfo.unk2C = 2000; this->behaviorInfo.unk4C = 0; - SkelAnime_ChangeAnimTransitionRepeat(&this->skelAnime, &D_06009E58, -10.0f); + Animation_MorphToLoop(&this->skelAnime, &D_06009E58, -10.0f); this->actionFunc = func_80B49DFC; } @@ -3124,8 +3122,8 @@ void func_80B49F88(Actor* thisx, GlobalContext* globalCtx) { this->actor.objBankIndex = this->bankIndex; Actor_SetObjectSegment(globalCtx, &this->actor); func_80B44F58(); - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_06013928, &D_06014088, this->limbDrawTable, - this->transitionDrawTable, 23); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_06013928, &D_06014088, this->jointTable, this->morphTable, + 23); func_80B45C04(&this->behaviorInfo, D_80B4EA90, 1, D_80B4EB00, 1, &D_801D15BC, 100, 0.03, 0.3, 0.03); func_80B44540(this, globalCtx); func_80B44570(this); @@ -3178,7 +3176,7 @@ void func_80B4A1B8(Actor* thisx, GlobalContext* globalCtx) { } this->actionFunc(this, globalCtx); if (sp2C && this->actor.update != NULL) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); func_80B45CE0(&this->behaviorInfo); if ((this->actionFunc != func_80B49DFC) && !isTalking && this->actor.isTargeted) { func_800B8614(&this->actor, globalCtx, 350.0f); @@ -3191,7 +3189,7 @@ void func_80B4A1B8(Actor* thisx, GlobalContext* globalCtx) { void func_80B4A2C0(EnInvadepoh* this) { AlienBehaviorInfo* substruct = &this->behaviorInfo; - SkelAnime_ChangeAnimTransitionRepeat(&this->skelAnime, &D_06009E58, -10.0f); + Animation_MorphToLoop(&this->skelAnime, &D_06009E58, -10.0f); substruct->unk26.x = 0; substruct->unk26.y = 0; substruct->unk26.z = 0; @@ -3250,7 +3248,7 @@ void func_80B4A350(EnInvadepoh* this, GlobalContext* globalCtx) { void func_80B4A570(EnInvadepoh* this) { AlienBehaviorInfo* substruct = &this->behaviorInfo; - SkelAnime_ChangeAnimTransitionStop(&this->skelAnime, &D_06002A8C, -10.0f); + Animation_MorphToPlayOnce(&this->skelAnime, &D_06002A8C, -10.0f); substruct->unk26.x = 0; substruct->unk26.y = 0; substruct->unk26.z = 0; @@ -3269,7 +3267,7 @@ void func_80B4A5E4(EnInvadepoh* this, GlobalContext* globalCtx) { void func_80B4A614(EnInvadepoh* this) { AlienBehaviorInfo* substruct = &this->behaviorInfo; - SkelAnime_ChangeAnimTransitionRepeat(&this->skelAnime, &D_06014088, 0.0f); + Animation_MorphToLoop(&this->skelAnime, &D_06014088, 0.0f); substruct->unk26.x = 0; substruct->unk26.y = 0; substruct->unk26.z = 0; @@ -3300,7 +3298,7 @@ void func_80B4A67C(EnInvadepoh* this, GlobalContext* globalCtx) { this->actor.flags |= (0x8 | 0x1); } if (((this->actor.flags & 0x40) == 0x40) && - (func_801378B8(&this->skelAnime, 0.0f) || func_801378B8(&this->skelAnime, 7.0f))) { + (Animation_OnFrame(&this->skelAnime, 0.0f) || Animation_OnFrame(&this->skelAnime, 7.0f))) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_ROMANI_WALK); } if (this->pathIndex == this->endPoint) { @@ -3312,7 +3310,7 @@ void func_80B4A7C0(EnInvadepoh* this) { this->behaviorInfo.unk30 = 0.08f; this->behaviorInfo.unk2C = 2000; this->behaviorInfo.unk4C = 0; - SkelAnime_ChangeAnimTransitionRepeat(&this->skelAnime, &D_06009E58, 0.0f); + Animation_MorphToLoop(&this->skelAnime, &D_06009E58, 0.0f); this->actionFunc = func_80B4A81C; } @@ -3355,8 +3353,8 @@ void func_80B4A9C8(Actor* thisx, GlobalContext* globalCtx) { this->actor.objBankIndex = this->bankIndex; Actor_SetObjectSegment(globalCtx, &this->actor); func_80B44F58(); - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_06013928, &D_06014088, this->limbDrawTable, - this->transitionDrawTable, 23); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_06013928, &D_06014088, this->jointTable, this->morphTable, + 23); func_80B45C04(&this->behaviorInfo, D_80B4EA90, 1, D_80B4EB00, 1, &D_801D15BC, 100, 0.03f, 0.3f, 0.03f); func_80B44620(this, globalCtx); if ((sp38 < CLOCK_TIME(2, 15)) || (sp38 >= CLOCK_TIME(6, 0))) { @@ -3407,7 +3405,7 @@ void func_80B4ABDC(Actor* thisx, GlobalContext* globalCtx) { } this->actionFunc(this, globalCtx); if (sp2C) { - this->animPlayFlag = SkelAnime_FrameUpdateMatrix(&this->skelAnime); + this->animPlayFlag = SkelAnime_Update(&this->skelAnime); func_80B45CE0(&this->behaviorInfo); if ((this->actionFunc != func_80B4A81C) && !isTalking && this->actor.isTargeted) { func_800B8614(&this->actor, globalCtx, 100.0f); @@ -3530,9 +3528,9 @@ void func_80B4B0C4(Actor* thisx, GlobalContext* globalCtx) { Actor_SetObjectSegment(globalCtx, &this->actor); func_80B44F58(); this->actor.update = func_80B4B218; - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_06013928, &D_06014088, this->limbDrawTable, - this->transitionDrawTable, 23); - SkelAnime_ChangeAnimTransitionRepeat(&this->skelAnime, &D_06009E58, 0.0f); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_06013928, &D_06014088, this->jointTable, this->morphTable, + 23); + Animation_MorphToLoop(&this->skelAnime, &D_06009E58, 0.0f); substruct = &this->behaviorInfo; func_80B45C04(&this->behaviorInfo, D_80B4EA90, 1, D_80B4EB00, 3, &D_801D15BC, 2000, 0.08f, 0.3f, 0.03f); substruct->unk30 = 0.08f; @@ -3553,7 +3551,7 @@ void func_80B4B218(Actor* thisx, GlobalContext* globalCtx) { this->actionFunc(this, globalCtx); if (sp38 && this->actor.update != NULL) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); player = GET_PLAYER(globalCtx); Math_StepToS(&this->behaviorInfo.unk4C, 2000, 40); Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 6, this->behaviorInfo.unk4C, 40); @@ -3573,13 +3571,13 @@ void func_80B4B218(Actor* thisx, GlobalContext* globalCtx) { void func_80B4B3DC(EnInvadepoh* this) { s32 pad; - if (func_801378B8(&this->skelAnime, 1.0f) || func_801378B8(&this->skelAnime, 7.0f)) { + if (Animation_OnFrame(&this->skelAnime, 1.0f) || Animation_OnFrame(&this->skelAnime, 7.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EV_MONKEY_WALK); } } void func_80B4B430(EnInvadepoh* this) { - SkelAnime_ChangeAnimTransitionRepeat(&this->skelAnime, &D_060021C8, -6.0f); + Animation_MorphToLoop(&this->skelAnime, &D_060021C8, -6.0f); this->actionTimer = Rand_S16Offset(50, 80); this->actionFunc = func_80B4B484; } @@ -3602,7 +3600,7 @@ void func_80B4B484(EnInvadepoh* this, GlobalContext* globalCtx) { } void func_80B4B510(EnInvadepoh* this) { - SkelAnime_ChangeAnimTransitionRepeat(&this->skelAnime, &D_06001BD8, -6.0f); + Animation_MorphToLoop(&this->skelAnime, &D_06001BD8, -6.0f); this->actionTimer = Rand_S16Offset(50, 200); this->actionFunc = func_80B4B564; } @@ -3646,7 +3644,7 @@ void func_80B4B564(EnInvadepoh* this, GlobalContext* globalCtx) { } void func_80B4B724(EnInvadepoh* this) { - SkelAnime_ChangeAnimTransitionStop(&this->skelAnime, &D_06000998, -6.0f); + Animation_MorphToPlayOnce(&this->skelAnime, &D_06000998, -6.0f); this->actionFunc = func_80B4B768; } @@ -3657,7 +3655,7 @@ void func_80B4B768(EnInvadepoh* this, GlobalContext* globalCtx) { Math_SmoothStepToS(&this->actor.world.rot.y, Actor_YawBetweenActors(&this->actor, &D_80B5040C->actor), 5, 0x1388, 0x64); func_80B44E90(this, globalCtx); - if (func_801378B8(&this->skelAnime, 13.0f) || func_801378B8(&this->skelAnime, 19.0f)) { + if (Animation_OnFrame(&this->skelAnime, 13.0f) || Animation_OnFrame(&this->skelAnime, 19.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EV_SMALL_DOG_ANG_BARK); } if (this->animPlayFlag) { @@ -3666,7 +3664,7 @@ void func_80B4B768(EnInvadepoh* this, GlobalContext* globalCtx) { } void func_80B4B820(EnInvadepoh* this) { - SkelAnime_ChangeAnimTransitionStop(&this->skelAnime, &D_06001560, -6.0f); + Animation_MorphToPlayOnce(&this->skelAnime, &D_06001560, -6.0f); this->actionFunc = func_80B4B864; } @@ -3685,8 +3683,8 @@ void func_80B4B8BC(Actor* thisx, GlobalContext* globalCtx) { if (Object_IsLoaded(&globalCtx->objectCtx, this->bankIndex)) { this->actor.objBankIndex = this->bankIndex; Actor_SetObjectSegment(globalCtx, &this->actor); - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_060080F0, &D_060021C8, this->limbDrawTable, - this->transitionDrawTable, 13); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_060080F0, &D_060021C8, this->jointTable, this->morphTable, + 13); func_80B45C04(&this->behaviorInfo, 0, 0, 0, 0, &D_801D15BC, 3000, 0.1f, 0.0f, 0.0f); func_80B44664(this, globalCtx); EnInvadepoh_SetPathPointToWorldPos(this, 0); @@ -3755,7 +3753,7 @@ void func_80B4BA84(Actor* thisx, GlobalContext* globalCtx) { } this->actionFunc(this, globalCtx); - this->animPlayFlag = SkelAnime_FrameUpdateMatrix(&this->skelAnime); + this->animPlayFlag = SkelAnime_Update(&this->skelAnime); if (sp34 && (this->actor.update != NULL)) { func_80B45CE0(&this->behaviorInfo); Collider_UpdateCylinder(&this->actor, &this->collider); @@ -3766,7 +3764,7 @@ void func_80B4BA84(Actor* thisx, GlobalContext* globalCtx) { void func_80B4BBE0(EnInvadepoh* this) { AlienBehaviorInfo* substruct = &this->behaviorInfo; - SkelAnime_ChangeAnimTransitionRepeat(&this->skelAnime, &D_06016720, -6.0f); + Animation_MorphToLoop(&this->skelAnime, &D_06016720, -6.0f); substruct->unk26.x = 0; substruct->unk26.y = 0; substruct->unk26.z = 0; @@ -3834,7 +3832,7 @@ void func_80B4BC4C(EnInvadepoh* this, GlobalContext* globalCtx) { } if (((this->actor.flags & 0x40) == 0x40) && - (func_801378B8(&this->skelAnime, 0.0f) || func_801378B8(&this->skelAnime, 12.0f))) { + (Animation_OnFrame(&this->skelAnime, 0.0f) || Animation_OnFrame(&this->skelAnime, 12.0f))) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_ROMANI_WALK); } if (gSaveContext.time > CLOCK_TIME(20, 15)) { @@ -3847,7 +3845,7 @@ void func_80B4BC4C(EnInvadepoh* this, GlobalContext* globalCtx) { void func_80B4BFFC(EnInvadepoh* this) { this->behaviorInfo.unk30 = 0.08f; this->behaviorInfo.unk2C = 2000; - SkelAnime_ChangeAnimTransitionRepeat(&this->skelAnime, &D_0600A174, -6.0f); + Animation_MorphToLoop(&this->skelAnime, &D_0600A174, -6.0f); this->behaviorInfo.unk4C = 0; this->actionFunc = func_80B4C058; } @@ -3879,7 +3877,7 @@ void func_80B4C058(EnInvadepoh* this, GlobalContext* globalCtx) { void func_80B4C1BC(EnInvadepoh* this) { this->behaviorInfo.unk30 = 0.08f; this->behaviorInfo.unk2C = 2000; - SkelAnime_ChangeAnimTransitionRepeat(&this->skelAnime, &D_0600A174, -6.0f); + Animation_MorphToLoop(&this->skelAnime, &D_0600A174, -6.0f); this->behaviorInfo.unk4C = 0; this->actionFunc = func_80B4C218; } @@ -3919,8 +3917,8 @@ void func_80B4C3A0(Actor* thisx, GlobalContext* globalCtx) { this->actor.objBankIndex = this->bankIndex; Actor_SetObjectSegment(globalCtx, &this->actor); func_80B44FEC(); - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_06015C28, &D_06016720, this->limbDrawTable, - this->transitionDrawTable, 22); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_06015C28, &D_06016720, this->jointTable, this->morphTable, + 22); func_80B45C04(&this->behaviorInfo, D_80B4EBDC, 1, D_80B4EC08, 0, &D_801D15BC, 100, 0.03f, 0.3f, 0.03f); this->actor.textId = 0x33CD; if (currentTime < 0xD5A0) { @@ -3969,7 +3967,7 @@ void func_80B4C5C0(Actor* thisx, GlobalContext* globalCtx) { } this->actionFunc(this, globalCtx); if (sp2C && (this->actor.update != NULL)) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); func_80B45CE0(&this->behaviorInfo); if ((this->actionFunc != func_80B4C058) && !isTalking && this->actor.isTargeted) { func_800B8614(&this->actor, globalCtx, 350.0f); @@ -3982,7 +3980,7 @@ void func_80B4C5C0(Actor* thisx, GlobalContext* globalCtx) { void func_80B4C6C8(EnInvadepoh* this) { AlienBehaviorInfo* substruct = &this->behaviorInfo; - SkelAnime_ChangeAnimTransitionRepeat(&this->skelAnime, &D_06014088, -10.0f); + Animation_MorphToLoop(&this->skelAnime, &D_06014088, -10.0f); substruct->unk26.x = 0; substruct->unk26.y = 0; substruct->unk26.z = 0; @@ -4055,7 +4053,7 @@ void func_80B4C730(EnInvadepoh* this, GlobalContext* globalCtx) { } if (((this->actor.flags & 0x40) == 0x40) && - (func_801378B8(&this->skelAnime, 0.0f) || func_801378B8(&this->skelAnime, 7.0f))) { + (Animation_OnFrame(&this->skelAnime, 0.0f) || Animation_OnFrame(&this->skelAnime, 7.0f))) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_ROMANI_WALK); } @@ -4072,7 +4070,7 @@ void func_80B4C730(EnInvadepoh* this, GlobalContext* globalCtx) { void func_80B4CAB0(EnInvadepoh* this) { this->behaviorInfo.unk30 = 0.08f; this->behaviorInfo.unk2C = 4000; - SkelAnime_ChangeAnimTransitionRepeat(&this->skelAnime, &D_06009E58, -10.0f); + Animation_MorphToLoop(&this->skelAnime, &D_06009E58, -10.0f); this->behaviorInfo.unk4C = 0; this->actionFunc = func_80B4CB0C; } @@ -4101,7 +4099,7 @@ void func_80B4CB0C(EnInvadepoh* this, GlobalContext* globalCtx) { void func_80B4CC70(EnInvadepoh* this) { this->behaviorInfo.unk30 = 0.08f; this->behaviorInfo.unk2C = 2000; - SkelAnime_ChangeAnimTransitionRepeat(&this->skelAnime, &D_06009E58, -10.0f); + Animation_MorphToLoop(&this->skelAnime, &D_06009E58, -10.0f); this->behaviorInfo.unk4C = 0; this->actionFunc = func_80B4CCCC; } @@ -4140,8 +4138,8 @@ void func_80B4CE54(Actor* thisx, GlobalContext* globalCtx) { this->actor.objBankIndex = this->bankIndex; Actor_SetObjectSegment(globalCtx, &this->actor); func_80B44F58(); - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_06013928, &D_06014088, this->limbDrawTable, - this->transitionDrawTable, 23); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_06013928, &D_06014088, this->jointTable, this->morphTable, + 23); func_80B45C04(&this->behaviorInfo, D_80B4EA90, 1, D_80B4EB00, 3, &D_801D15BC, 100, 0.03f, 0.3f, 0.03f); func_80B446D0(this, globalCtx); this->actor.world.rot.y = this->actor.shape.rot.y; @@ -4185,7 +4183,7 @@ void func_80B4D054(Actor* thisx, GlobalContext* globalCtx) { } this->actionFunc(this, globalCtx); if (sp2C && this->actor.update != NULL) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); func_80B45CE0(&this->behaviorInfo); if ((this->actionFunc != func_80B4CB0C) && !isTalking && this->actor.isTargeted) { func_800B8614(thisx, globalCtx, 350.0f); @@ -4200,8 +4198,8 @@ void func_80B4D15C(EnInvadepoh* this) { s32 temp_v1 = this->actor.params & 7; unkstruct80B4EE0C* temp_v0; - SkelAnime_ChangeAnimDefaultRepeat(&this->skelAnime, &D_06001674); - this->skelAnime.animCurrentFrame = ((this->actor.params & 7) * this->skelAnime.animFrameCount) * 0.25f; + Animation_PlayLoop(&this->skelAnime, &D_06001674); + this->skelAnime.curFrame = ((this->actor.params & 7) * this->skelAnime.endFrame) * 0.25f; this->alienAlpha = 255; this->actor.draw = func_80B4DB14; this->drawAlien = true; @@ -4252,8 +4250,8 @@ void func_80B4D290(EnInvadepoh* this, GlobalContext* globalCtx) { } void func_80B4D3E4(EnInvadepoh* this) { - SkelAnime_ChangeAnimDefaultRepeat(&this->skelAnime, &D_06001674); - this->skelAnime.animCurrentFrame = (this->actor.params & 7) * this->skelAnime.animFrameCount * 0.25f; + Animation_PlayLoop(&this->skelAnime, &D_06001674); + this->skelAnime.curFrame = (this->actor.params & 7) * this->skelAnime.endFrame * 0.25f; this->alienAlpha = 255; this->actor.draw = NULL; this->drawAlien = true; @@ -4329,8 +4327,8 @@ void func_80B4D670(Actor* thisx, GlobalContext* globalCtx) { Actor_SetObjectSegment(globalCtx, &this->actor); func_80B45080(); this->actor.update = func_80B4D760; - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_06004E50, &D_06001674, this->limbDrawTable, - this->transitionDrawTable, 14); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_06004E50, &D_06001674, this->jointTable, this->morphTable, + 14); if (invadepohType < 3) { func_80B453F4(this, globalCtx, invadepohType); func_80B4D15C(this); @@ -4346,7 +4344,7 @@ void func_80B4D760(Actor* thisx, GlobalContext* globalCtx) { this->actionFunc(this, globalCtx); if (this->actor.update != NULL) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); func_800B9010(&this->actor, NA_SE_EN_FOLLOWERS_BEAM_PRE - SFX_FLAG); } } @@ -4365,7 +4363,7 @@ void func_80B4D7B8(GlobalContext* globalCtx) { temp_v0 = globalCtx->gameplayFrames; temp_s5 = (temp_v0 + ((0x10 * i) & 0xFFU)) & 0x7F; temp_s6 = (u8)(temp_v0 * -0xF); - SysMatrix_InsertTranslation(phi_s2->unk4.x, phi_s2->unk4.y, phi_s2->unk4.z, MTXMODE_NEW); + Matrix_InsertTranslation(phi_s2->unk4.x, phi_s2->unk4.y, phi_s2->unk4.z, MTXMODE_NEW); Matrix_Scale(0.1f, 0.1f, 0.1f, MTXMODE_APPLY); gDPPipeSync(POLY_XLU_DISP++); gDPSetPrimColor(POLY_XLU_DISP++, 0x80, 0x80, 255, 255, 170, phi_s2->unk2); @@ -4394,22 +4392,22 @@ void func_80B4D9F4(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* EnInvadepoh* this = THIS; if ((limbIndex == 12) && (this->alienBeamAlpha != 0)) { - SysMatrix_StatePush(); - SysMatrix_InsertZRotation_s(-0x53ED, MTXMODE_APPLY); + Matrix_StatePush(); + Matrix_InsertZRotation_s(-0x53ED, MTXMODE_APPLY); Matrix_RotateY(-0x3830, MTXMODE_APPLY); Matrix_Scale(1.0f, 1.0f, 1.5f, MTXMODE_APPLY); - SysMatrix_CopyCurrentState(&D_80B502A0); - SysMatrix_StatePop(); + Matrix_CopyCurrentState(&D_80B502A0); + Matrix_StatePop(); } else if ((limbIndex == 13) && (this->alienBeamAlpha != 0)) { - SysMatrix_StatePush(); - SysMatrix_InsertZRotation_s(-0x53ED, MTXMODE_APPLY); + Matrix_StatePush(); + Matrix_InsertZRotation_s(-0x53ED, MTXMODE_APPLY); Matrix_RotateY(-0x47D0, MTXMODE_APPLY); Matrix_Scale(1.0f, 1.0f, 1.5f, MTXMODE_APPLY); - SysMatrix_CopyCurrentState(&D_80B502E0); - SysMatrix_StatePop(); + Matrix_CopyCurrentState(&D_80B502E0); + Matrix_StatePop(); } if (limbIndex == 11) { - SysMatrix_MultiplyVector3fByState(&D_80B4EE24, &this->actor.focus.pos); + Matrix_MultiplyVector3fByState(&D_80B4EE24, &this->actor.focus.pos); } } @@ -4420,7 +4418,7 @@ void func_80B4DB14(Actor* thisx, GlobalContext* globalCtx) { OPEN_DISPS(spCC); func_8012C2DC(spCC); - SysMatrix_StatePush(); + Matrix_StatePush(); if (this->drawAlien) { Gfx* new_var6; Gfx* spBC; @@ -4431,16 +4429,16 @@ void func_80B4DB14(Actor* thisx, GlobalContext* globalCtx) { AnimatedMat_Draw(globalCtx, D_80B50400); Scene_SetRenderModeXlu(globalCtx, 0, 1); gDPSetEnvColor(spCC->polyOpa.p++, 0, 0, 0, 255); - spCC->polyOpa.p = SkelAnime_DrawSV2(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, - this->skelAnime.dListCount, func_80B4D9D8, func_80B4D9F4, &this->actor, - spCC->polyOpa.p); + spCC->polyOpa.p = SkelAnime_DrawFlex(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, + this->skelAnime.dListCount, func_80B4D9D8, func_80B4D9F4, &this->actor, + spCC->polyOpa.p); } else { AnimatedMat_Draw(globalCtx, D_80B50400); Scene_SetRenderModeXlu(globalCtx, 1, 2); gDPSetEnvColor(spCC->polyXlu.p++, 0, 0, 0, this->alienAlpha); - spCC->polyXlu.p = SkelAnime_DrawSV2(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, - this->skelAnime.dListCount, func_80B4D9D8, func_80B4D9F4, &this->actor, - spCC->polyXlu.p); + spCC->polyXlu.p = SkelAnime_DrawFlex(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, + this->skelAnime.dListCount, func_80B4D9D8, func_80B4D9F4, &this->actor, + spCC->polyXlu.p); } if (this->alienBeamAlpha != 0) { @@ -4450,10 +4448,10 @@ void func_80B4DB14(Actor* thisx, GlobalContext* globalCtx) { gDPPipeSync(spBC++); gDPSetPrimColor(spBC++, 0, 255, 240, 180, 100, 60); gDPSetEnvColor(spBC++, 255, 255, 255, this->alienBeamAlpha * (150.0f / 255.0f)); - SysMatrix_InsertMatrix(&D_80B502A0, MTXMODE_NEW); + Matrix_InsertMatrix(&D_80B502A0, MTXMODE_NEW); gSPMatrix(spBC++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(spBC++, D_06000080); - SysMatrix_InsertMatrix(&D_80B502E0, MTXMODE_NEW); + Matrix_InsertMatrix(&D_80B502E0, MTXMODE_NEW); gSPMatrix(spBC++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(spBC++, D_06000080); spB8->polyXlu.p = spBC; @@ -4461,8 +4459,8 @@ void func_80B4DB14(Actor* thisx, GlobalContext* globalCtx) { } if (this->drawAlienDeathEffect) { - SysMatrix_SetStateRotationAndTranslation(this->actor.world.pos.x, this->actor.world.pos.y + 68.0f, - this->actor.world.pos.z, &this->actor.shape.rot); + Matrix_SetStateRotationAndTranslation(this->actor.world.pos.x, this->actor.world.pos.y + 68.0f, + this->actor.world.pos.z, &this->actor.shape.rot); Matrix_Scale(this->alienDeathEffectScale.x, this->alienDeathEffectScale.y, this->alienDeathEffectScale.z, MTXMODE_APPLY); gSPMatrix(spCC->polyXlu.p++, Matrix_NewMtx(globalCtx->state.gfxCtx), @@ -4482,12 +4480,12 @@ void func_80B4DB14(Actor* thisx, GlobalContext* globalCtx) { gSPSetOtherMode(gfx++, G_SETOTHERMODE_H, 4, 4, 0x00000080); gDPSetCombineLERP(gfx++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0); - SysMatrix_InsertMatrix(&globalCtx->mf_187FC, MTXMODE_NEW); - SysMatrix_GetStateTranslationAndScaledZ(60.0f, &sp80); + Matrix_InsertMatrix(&globalCtx->mf_187FC, MTXMODE_NEW); + Matrix_GetStateTranslationAndScaledZ(60.0f, &sp80); sp74.x = thisx->world.pos.x + sp80.x; sp74.y = thisx->world.pos.y + sp80.y + 68.0f; sp74.z = thisx->world.pos.z + sp80.z; - SysMatrix_InsertTranslation(sp74.x, sp74.y, sp74.z, MTXMODE_NEW); + Matrix_InsertTranslation(sp74.x, sp74.y, sp74.z, MTXMODE_NEW); Matrix_Scale(0.25f, 0.25f, 0.25f, MTXMODE_APPLY); alpha2 = this->alienAlpha * (100.0f / 255.0f); gSPDisplayList(gfx++, D_04029CB0); @@ -4501,7 +4499,7 @@ void func_80B4DB14(Actor* thisx, GlobalContext* globalCtx) { } } - SysMatrix_StatePop(); + Matrix_StatePop(); CLOSE_DISPS(spCC); } @@ -4517,26 +4515,28 @@ void func_80B4E158(Actor* thisx, GlobalContext* globalCtx) { EnInvadepoh* this = THIS; func_8012C5B0(globalCtx->state.gfxCtx); - SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, - func_80B4E120, NULL, &this->actor); + SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, + func_80B4E120, NULL, &this->actor); } void func_80B4E1B0(Actor* thisx, GlobalContext* globalCtx) { EnInvadepoh* this = THIS; func_8012C5B0(globalCtx->state.gfxCtx); - SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, NULL, - NULL, &this->actor); + SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, + NULL, NULL, &this->actor); } s32 func_80B4E200(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) { if (limbIndex == 14) { EnInvadepoh* this = THIS; // both of these needed to match + rot->x += this->behaviorInfo.unk20.y; rot->y += this->behaviorInfo.unk20.z; rot->z += this->behaviorInfo.unk20.x; } else if (limbIndex == 13) { EnInvadepoh* this = THIS; // both of these needed to match + rot->x += (s16)(this->behaviorInfo.unk34 * this->behaviorInfo.unk20.y); rot->z += this->behaviorInfo.unk40; } @@ -4551,7 +4551,7 @@ void func_80B4E2AC(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* gSPDisplayList(POLY_OPA_DISP++, D_060003B0); CLOSE_DISPS(globalCtx->state.gfxCtx); } else if (limbIndex == 14) { - SysMatrix_MultiplyVector3fByState(&D_80B4EE30, &this->actor.focus.pos); + Matrix_MultiplyVector3fByState(&D_80B4EE30, &this->actor.focus.pos); } } @@ -4562,8 +4562,8 @@ void func_80B4E324(Actor* thisx, GlobalContext* globalCtx) { func_8012C28C(globalCtx->state.gfxCtx); gSPSegment(POLY_OPA_DISP++, 0x09, D_80B4E958[this->behaviorInfo.unk10.unkF]); gSPSegment(POLY_OPA_DISP++, 0x08, D_80B4E944[this->behaviorInfo.unk0.unkF]); - SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, - func_80B4E200, func_80B4E2AC, &this->actor); + SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, + func_80B4E200, func_80B4E2AC, &this->actor); CLOSE_DISPS(globalCtx->state.gfxCtx); } @@ -4571,16 +4571,16 @@ void func_80B4E3F0(Actor* thisx, GlobalContext* globalCtx) { s32 pad[2]; Vec3f sp5C; - SysMatrix_StatePush(); - SysMatrix_InsertMatrix(&globalCtx->mf_187FC, MTXMODE_NEW); - SysMatrix_GetStateTranslationAndScaledZ(200.0f, &sp5C); - SysMatrix_StatePop(); + Matrix_StatePush(); + Matrix_InsertMatrix(&globalCtx->mf_187FC, MTXMODE_NEW); + Matrix_GetStateTranslationAndScaledZ(200.0f, &sp5C); + Matrix_StatePop(); sp5C.x += thisx->world.pos.x; sp5C.y += thisx->world.pos.y; sp5C.z += thisx->world.pos.z; EnInvadepoh_SetSysMatrix(&sp5C); - SysMatrix_NormalizeXYZ(&globalCtx->mf_187FC); - SysMatrix_InsertZRotation_s(((EnInvadepoh*)thisx)->unk304, MTXMODE_APPLY); + Matrix_NormalizeXYZ(&globalCtx->mf_187FC); + Matrix_InsertZRotation_s(((EnInvadepoh*)thisx)->unk304, MTXMODE_APPLY); OPEN_DISPS(globalCtx->state.gfxCtx); func_8012C2DC(globalCtx->state.gfxCtx); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); @@ -4598,6 +4598,7 @@ void func_80B4E3F0(Actor* thisx, GlobalContext* globalCtx) { s32 func_80B4E5B0(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) { if ((limbIndex == 5) || (limbIndex == 6) || (limbIndex == 7)) { EnInvadepoh* this = THIS; + rot->x += this->behaviorInfo.unk20.x; rot->y += this->behaviorInfo.unk20.y; rot->z += this->behaviorInfo.unk20.z; @@ -4607,8 +4608,10 @@ s32 func_80B4E5B0(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* p } void func_80B4E61C(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) { + EnInvadepoh* this = THIS; + if (limbIndex == 5) { - SysMatrix_GetStateTranslationAndScaledY(20.0f, &thisx->focus.pos); + Matrix_GetStateTranslationAndScaledY(20.0f, &this->actor.focus.pos); } } @@ -4618,27 +4621,31 @@ void func_80B4E660(Actor* thisx, GlobalContext* globalCtx) { OPEN_DISPS(globalCtx->state.gfxCtx); func_8012C28C(globalCtx->state.gfxCtx); gDPSetEnvColor(POLY_OPA_DISP++, 255, 255, 200, 0); - SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, - func_80B4E5B0, func_80B4E61C, &this->actor); + SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, + func_80B4E5B0, func_80B4E61C, &this->actor); CLOSE_DISPS(globalCtx->state.gfxCtx); } s32 func_80B4E6E4(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) { if (limbIndex == 9) { EnInvadepoh* this = THIS; // both of these needed to match + rot->x += this->behaviorInfo.unk20.y; rot->y += this->behaviorInfo.unk20.z; rot->z += this->behaviorInfo.unk20.x; } else if (limbIndex == 2) { EnInvadepoh* this = THIS; // both of these needed to match + rot->x += (s16)(this->behaviorInfo.unk34 * this->behaviorInfo.unk20.y); } return 0; } void func_80B4E784(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) { + EnInvadepoh* this = THIS; + if (limbIndex == 9) { - SysMatrix_GetStateTranslation(&thisx->focus.pos); + Matrix_GetStateTranslation(&this->actor.focus.pos); } } @@ -4649,7 +4656,7 @@ void func_80B4E7BC(Actor* thisx, GlobalContext* globalCtx) { func_8012C28C(globalCtx->state.gfxCtx); gSPSegment(POLY_OPA_DISP++, 0x09, D_80B4E984[this->behaviorInfo.unk10.unkF]); gSPSegment(POLY_OPA_DISP++, 0x08, D_80B4E96C[this->behaviorInfo.unk0.unkF]); - SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, - func_80B4E6E4, func_80B4E784, &this->actor); + SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, + func_80B4E6E4, func_80B4E784, &this->actor); CLOSE_DISPS(globalCtx->state.gfxCtx); } diff --git a/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.h b/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.h index 8b766189f..3a242eace 100644 --- a/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.h +++ b/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.h @@ -109,8 +109,8 @@ typedef struct AlienBehaviorInfo { typedef struct EnInvadepoh { /* 0x000 */ Actor actor; /* 0x144 */ SkelAnime skelAnime; - /* 0x188 */ Vec3s limbDrawTable[23]; - /* 0x212 */ Vec3s transitionDrawTable[23]; + /* 0x188 */ Vec3s jointTable[23]; + /* 0x212 */ Vec3s morphTable[23]; /* 0x29C */ s8 animPlayFlag; /* 0x2A0 */ ColliderCylinder collider; /* 0x2EC */ EnInvadepohActionFunc actionFunc; diff --git a/src/overlays/actors/ovl_En_Jc_Mato/z_en_jc_mato.c b/src/overlays/actors/ovl_En_Jc_Mato/z_en_jc_mato.c index 3fee5e073..7390d9f7c 100644 --- a/src/overlays/actors/ovl_En_Jc_Mato/z_en_jc_mato.c +++ b/src/overlays/actors/ovl_En_Jc_Mato/z_en_jc_mato.c @@ -163,6 +163,6 @@ void EnJcMato_Draw(Actor* thisx, GlobalContext* globalCtx) { func_8012C28C(globalCtx->state.gfxCtx); gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_OPA_DISP++, D_06000390); - SysMatrix_MultiplyVector3fByState(&movement, &this->pos); + Matrix_MultiplyVector3fByState(&movement, &this->pos); CLOSE_DISPS(globalCtx->state.gfxCtx); } diff --git a/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c b/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c index 457178720..26bf172bc 100644 --- a/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c +++ b/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c @@ -67,7 +67,7 @@ void EnKgy_Init(Actor* thisx, GlobalContext* globalCtx) { s32 i; Actor_SetScale(&this->actor, 0.01f); - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_0600F910, &D_06004B98, this->jointTable, this->morphTable, 23); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_0600F910, &D_06004B98, this->jointTable, this->morphTable, 23); this->unk_2D2 = -1; this->unk_29C = 0; this->unk_2E4 = 0; @@ -131,8 +131,8 @@ void EnKgy_ChangeAnim(EnKgy* this, s16 animIndex, u8 mode, f32 transitionRate) { &D_06001764, &D_06003334, &D_06010B84, &D_06001EA4, &D_06003D88, }; - SkelAnime_ChangeAnim(&this->skelAnime, sAnimations[animIndex], 1.0f, 0.0f, - SkelAnime_GetFrameCount(&sAnimations[animIndex]->common), mode, transitionRate); + Animation_Change(&this->skelAnime, sAnimations[animIndex], 1.0f, 0.0f, + Animation_GetLastFrame(sAnimations[animIndex]), mode, transitionRate); this->unk_2D2 = animIndex; } @@ -432,7 +432,7 @@ void func_80B415A8(GlobalContext* globalCtx, Vec3f* arg1) { void func_80B4163C(EnKgy* this, GlobalContext* globalCtx) { this->actor.focus.pos = this->unk_2A8; - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime)) { + if (SkelAnime_Update(&this->skelAnime)) { if (this->unk_2D2 == 6) { if (this->unk_2EA > 0) { EnKgy_ChangeAnim(this, 6, 2, 0.0f); @@ -444,10 +444,10 @@ void func_80B4163C(EnKgy* this, GlobalContext* globalCtx) { } else { EnKgy_ChangeAnim(this, 6, 2, -5.0f); } - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); } - switch ((s32)this->skelAnime.animCurrentFrame) { + switch ((s32)this->skelAnime.curFrame) { case 1: case 7: case 13: @@ -523,7 +523,7 @@ void func_80B419B0(EnKgy* this, GlobalContext* globalCtx) { } void func_80B41A48(EnKgy* this, GlobalContext* globalCtx) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); if (this->unk_2E4 > 0) { this->unk_2E4--; } else { @@ -536,7 +536,7 @@ void func_80B41ACC(EnKgy* this, GlobalContext* globalCtx) { s32 temp_v0; Player* player = GET_PLAYER(globalCtx); - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); if (func_80152498(&globalCtx->msgCtx) == 0x10) { temp_v0 = func_80123810(globalCtx); if (temp_v0 != 0) { @@ -585,7 +585,7 @@ void func_80B41C30(EnKgy* this, GlobalContext* globalCtx) { } void func_80B41C54(EnKgy* this, GlobalContext* globalCtx) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); if (func_800B867C(&this->actor, globalCtx)) { this->actionFunc = func_80B41C30; this->actor.flags &= ~0x100; @@ -594,7 +594,7 @@ void func_80B41C54(EnKgy* this, GlobalContext* globalCtx) { } void func_80B41CBC(EnKgy* this, GlobalContext* globalCtx) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); if (func_800B84D0(&this->actor, globalCtx)) { this->actor.flags &= ~0x10000; func_80B40E18(this, this->actor.textId); @@ -606,7 +606,7 @@ void func_80B41CBC(EnKgy* this, GlobalContext* globalCtx) { } void func_80B41D64(EnKgy* this, GlobalContext* globalCtx) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); if (Actor_HasParent(&this->actor, globalCtx)) { this->actionFunc = func_80B41CBC; this->actor.flags |= 0x10000; @@ -622,7 +622,7 @@ void func_80B41E18(EnKgy* this, GlobalContext* globalCtx) { s32 pad; Player* player = GET_PLAYER(globalCtx); - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime) && (this->unk_2D2 == 3)) { + if (SkelAnime_Update(&this->skelAnime) && (this->unk_2D2 == 3)) { func_80B40BC0(this, 4); } @@ -844,7 +844,7 @@ void func_80B42508(EnKgy* this, GlobalContext* globalCtx) { s32 pad; Player* player = GET_PLAYER(globalCtx); - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); this->actor.focus.pos = this->unk_2A8; if (func_800B84D0(&this->actor, globalCtx) || (&this->actor == player->targetActor)) { this->actionFunc = func_80B41E18; @@ -854,7 +854,7 @@ void func_80B42508(EnKgy* this, GlobalContext* globalCtx) { } void func_80B425A0(EnKgy* this, GlobalContext* globalCtx) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); this->actor.focus.pos = this->unk_2A8; if (func_800B84D0(&this->actor, globalCtx)) { this->actionFunc = func_80B41E18; @@ -867,7 +867,7 @@ void func_80B425A0(EnKgy* this, GlobalContext* globalCtx) { } void func_80B42660(EnKgy* this, GlobalContext* globalCtx) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); this->actor.focus.pos = this->unk_2A8; if ((func_80152498(&globalCtx->msgCtx) == 5) && func_80147624(globalCtx)) { func_801477B4(globalCtx); @@ -883,7 +883,7 @@ void func_80B42714(EnKgy* this, GlobalContext* globalCtx) { s32 pad; Player* player = GET_PLAYER(globalCtx); - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); this->actor.focus.pos = this->unk_2A8; if (func_800B84D0(&this->actor, globalCtx) || (&this->actor == player->targetActor)) { func_80B411DC(this, globalCtx, 4); @@ -900,7 +900,7 @@ void func_80B427C8(EnKgy* this, GlobalContext* globalCtx) { s32 pad; u16 temp_a2; - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime)) { + if (SkelAnime_Update(&this->skelAnime)) { if (this->unk_2D2 == 5) { func_80B40BC0(this, 7); } @@ -946,7 +946,7 @@ void func_80B427C8(EnKgy* this, GlobalContext* globalCtx) { } void func_80B4296C(EnKgy* this, GlobalContext* globalCtx) { - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime) && (this->unk_2D2 == 8)) { + if (SkelAnime_Update(&this->skelAnime) && (this->unk_2D2 == 8)) { func_80B40BC0(this, 2); } @@ -971,7 +971,7 @@ void func_80B42A8C(EnKgy* this, GlobalContext* globalCtx) { u16 temp_a2; s32 pad; - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime)) { + if (SkelAnime_Update(&this->skelAnime)) { if (this->unk_2D2 == 5) { func_80B40BC0(this, 1); } @@ -1058,7 +1058,7 @@ void func_80B42A8C(EnKgy* this, GlobalContext* globalCtx) { } void func_80B42D28(EnKgy* this, GlobalContext* globalCtx) { - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime) && (this->unk_2D2 == 8)) { + if (SkelAnime_Update(&this->skelAnime) && (this->unk_2D2 == 8)) { func_80B40BC0(this, 2); } @@ -1134,11 +1134,11 @@ void EnKgy_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Ve EnKgy* this = THIS; if (limbIndex == 11) { - SysMatrix_MultiplyVector3fByState(&D_80B432D8, &this->unk_2A8); + Matrix_MultiplyVector3fByState(&D_80B432D8, &this->unk_2A8); } if (limbIndex == 16) { - SysMatrix_MultiplyVector3fByState(&D_80B432E4, &this->unk_2C0); + Matrix_MultiplyVector3fByState(&D_80B432E4, &this->unk_2C0); } } @@ -1150,9 +1150,9 @@ void func_80B43074(EnKgy* this, GlobalContext* globalCtx) { func_8012C28C(globalCtx->state.gfxCtx); func_800B8050(&this->actor, globalCtx, MTXMODE_NEW); - SysMatrix_StatePush(); - SysMatrix_InsertTranslation(-800.0f, 3100.0f, 8400.0f, MTXMODE_APPLY); - SysMatrix_InsertXRotation_s(0x4000, MTXMODE_APPLY); + Matrix_StatePush(); + Matrix_InsertTranslation(-800.0f, 3100.0f, 8400.0f, MTXMODE_APPLY); + Matrix_InsertXRotation_s(0x4000, MTXMODE_APPLY); if (func_80B40D8C(globalCtx)) { AnimatedMat_Draw(globalCtx, Lib_SegmentedToVirtual(D_0600F6A0)); @@ -1174,7 +1174,7 @@ void func_80B43074(EnKgy* this, GlobalContext* globalCtx) { CLOSE_DISPS(globalCtx->state.gfxCtx); - SysMatrix_StatePop(); + Matrix_StatePop(); } void EnKgy_Draw(Actor* thisx, GlobalContext* globalCtx) { @@ -1184,6 +1184,6 @@ void EnKgy_Draw(Actor* thisx, GlobalContext* globalCtx) { if (this->unk_29C & 1) { func_80B43074(this, globalCtx); } - SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, - EnKgy_OverrideLimbDraw, EnKgy_PostLimbDraw, &this->actor); + SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, + EnKgy_OverrideLimbDraw, EnKgy_PostLimbDraw, &this->actor); } diff --git a/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c b/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c index b83fba1b4..e2ff014c9 100644 --- a/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c +++ b/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c @@ -154,9 +154,9 @@ static struct_80B8E1A8 sAnimationInfo[] = { }; void EnMa4_ChangeAnim(EnMa4* this, s32 index) { - SkelAnime_ChangeAnim(&this->skelAnime, sAnimationInfo[index].animationSeg, 1.0f, 0.0f, - SkelAnime_GetFrameCount(&sAnimationInfo[index].animationSeg->common), - sAnimationInfo[index].mode, sAnimationInfo[index].transitionRate); + Animation_Change(&this->skelAnime, sAnimationInfo[index].animationSeg, 1.0f, 0.0f, + Animation_GetLastFrame(sAnimationInfo[index].animationSeg), sAnimationInfo[index].mode, + sAnimationInfo[index].transitionRate); } void func_80ABDD9C(EnMa4* this, GlobalContext* globalCtx) { @@ -164,8 +164,8 @@ void func_80ABDD9C(EnMa4* this, GlobalContext* globalCtx) { s16 flag; if (this->unk_1D8.unk_00 == 0 && - ((this->skelAnime.animCurrentSeg == &D_06007328) || (this->skelAnime.animCurrentSeg == &D_06002A8C) || - (this->skelAnime.animCurrentSeg == &D_06015B7C))) { + ((this->skelAnime.animation == &D_06007328) || (this->skelAnime.animation == &D_06002A8C) || + (this->skelAnime.animation == &D_06015B7C))) { flag = 1; } else { flag = (this->type == MA4_TYPE_ALIENS_WON && this->actionFunc != EnMa4_DialogueHandler) ? 1 : 0; @@ -201,8 +201,8 @@ void EnMa4_Init(Actor* thisx, GlobalContext* globalCtx) { s32 pad; ActorShape_Init(&this->actor.shape, 0.0f, func_800B3FC0, 18.0f); - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_06013928, NULL, this->limbDrawTable, this->transitionDrawTable, - MA1_LIMB_MAX); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_06013928, NULL, this->jointTable, this->morphTable, + MA1_LIMB_MAX); Collider_InitCylinder(globalCtx, &this->collider); Collider_SetCylinder(globalCtx, &this->collider, &this->actor, &sCylinderInit); @@ -270,7 +270,7 @@ void EnMa4_RunInCircles(EnMa4* this, GlobalContext* globalCtx) { s32 pad; s16 sp2E; - if (sCurrentAnim != 9 && func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { + if (sCurrentAnim != 9 && Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { if (sCurrentAnim == 3) { if (D_80AC0250 < 3) { D_80AC0250++; @@ -286,7 +286,7 @@ void EnMa4_RunInCircles(EnMa4* this, GlobalContext* globalCtx) { } } - if (sCurrentAnim == 13 && func_801378B8(&this->skelAnime, 37.0f)) { + if (sCurrentAnim == 13 && Animation_OnFrame(&this->skelAnime, 37.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EV_ROMANI_BOW_FLICK); } @@ -318,8 +318,8 @@ void EnMa4_RunInCircles(EnMa4* this, GlobalContext* globalCtx) { Actor_UpdateBgCheckInfo(globalCtx, &this->actor, 0.0f, 0.0f, 0.0f, 4); Actor_SetVelocityAndMoveYRotationAndGravity(&this->actor); - if (this->skelAnime.animCurrentSeg == &D_06007328) { // Walking animation - if (func_801378B8(&this->skelAnime, 0.0f) || func_801378B8(&this->skelAnime, 4.0f)) { + if (this->skelAnime.animation == &D_06007328) { // Walking animation + if (Animation_OnFrame(&this->skelAnime, 0.0f) || Animation_OnFrame(&this->skelAnime, 4.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_ROMANI_WALK); } } @@ -353,7 +353,7 @@ void EnMa4_Wait(EnMa4* this, GlobalContext* globalCtx) { this->actor.flags |= 0x10000; } else if (this->type != MA4_TYPE_ALIENS_WON) { EnMa4_RunInCircles(this, globalCtx); - } else if (func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { + } else if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { this->animTimer++; if (this->animTimer == 5) { EnMa4_ChangeAnim(this, 17); // Traumatized anim @@ -843,8 +843,7 @@ void EnMa4_EponasSongCs(EnMa4* this, GlobalContext* globalCtx) { } func_800EDF24(&this->actor, globalCtx, actionIndex); - if (D_80AC0260 == 2 && this->animTimer == 0 && - func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { + if (D_80AC0260 == 2 && this->animTimer == 0 && Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { EnMa4_ChangeAnim(this, 7); } } else { @@ -1042,7 +1041,7 @@ void EnMa4_Update(Actor* thisx, GlobalContext* globalCtx) { Collider_UpdateCylinder(&this->actor, &this->collider); CollisionCheck_SetOC(globalCtx, &globalCtx->colChkCtx, &this->collider.base); - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); EnMa4_UpdateEyes(this); this->actionFunc(this, globalCtx); func_80ABDD9C(this, globalCtx); @@ -1071,7 +1070,7 @@ void EnMa4_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Ve Vec3f sp28 = { 800.0f, 0.0f, 0.0f }; if (limbIndex == MA1_LIMB_HEAD) { - SysMatrix_MultiplyVector3fByState(&sp28, &this->actor.focus.pos); + Matrix_MultiplyVector3fByState(&sp28, &this->actor.focus.pos); } else if (limbIndex == MA1_LIMB_HAND_LEFT) { if (this->hasBow == true) { OPEN_DISPS(globalCtx->state.gfxCtx); @@ -1095,8 +1094,8 @@ void EnMa4_Draw(Actor* thisx, GlobalContext* globalCtx) { gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sEyeTextures[this->eyeTexIndex])); gSPSegment(POLY_OPA_DISP++, 0x09, SEGMENTED_TO_VIRTUAL(sMouthTextures[this->mouthTexIndex])); - SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, - EnMa4_OverrideLimbDraw, EnMa4_PostLimbDraw, &this->actor); + SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, + EnMa4_OverrideLimbDraw, EnMa4_PostLimbDraw, &this->actor); CLOSE_DISPS(globalCtx->state.gfxCtx); } diff --git a/src/overlays/actors/ovl_En_Ma4/z_en_ma4.h b/src/overlays/actors/ovl_En_Ma4/z_en_ma4.h index 1ecc67ed5..b1e25569b 100644 --- a/src/overlays/actors/ovl_En_Ma4/z_en_ma4.h +++ b/src/overlays/actors/ovl_En_Ma4/z_en_ma4.h @@ -15,9 +15,9 @@ typedef struct EnMa4 { /* 0x18C */ ColliderCylinder collider; /* 0x1D8 */ struct_800BD888_arg1 unk_1D8; /* 0x200 */ Vec3s* pathPoints; - /* 0x204 */ Vec3s limbDrawTable[MA1_LIMB_MAX]; + /* 0x204 */ Vec3s jointTable[MA1_LIMB_MAX]; /* 0x28E */ UNK_TYPE1 unk28E[0x6]; - /* 0x294 */ Vec3s transitionDrawTable[MA1_LIMB_MAX]; + /* 0x294 */ Vec3s morphTable[MA1_LIMB_MAX]; /* 0x31E */ UNK_TYPE1 unk31E[0x6]; /* 0x324 */ s16 pathIndex; /* 0x326 */ s16 pathPointsCount; diff --git a/src/overlays/actors/ovl_En_Ma_Yto/z_en_ma_yto.c b/src/overlays/actors/ovl_En_Ma_Yto/z_en_ma_yto.c index b8f7f969b..9d9969e68 100644 --- a/src/overlays/actors/ovl_En_Ma_Yto/z_en_ma_yto.c +++ b/src/overlays/actors/ovl_En_Ma_Yto/z_en_ma_yto.c @@ -189,8 +189,8 @@ void EnMaYto_Init(Actor* thisx, GlobalContext* globalCtx) { } ActorShape_Init(&this->actor.shape, 0.0f, func_800B3FC0, 18.0f); - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_06015C28, NULL, this->limbDrawTbl, this->transitionDrawTbl, - MA2_LIMB_MAX); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_06015C28, NULL, this->jointTable, this->morphTable, + MA2_LIMB_MAX); EnMaYto_InitAnimation(this, globalCtx); Collider_InitCylinder(globalCtx, &this->collider); @@ -464,8 +464,8 @@ void EnMaYto_DefaultDialogueHandler(EnMaYto* this, GlobalContext* globalCtx) { } Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 5, 0x3000, 0x100); - if (this->textId == 0x3395 && this->skelAnime.animCurrentSeg == &D_0600AF7C && - func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { + if (this->textId == 0x3395 && this->skelAnime.animation == &D_0600AF7C && + Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { EnMaYto_ChangeAnim(this, 4); } } @@ -1081,8 +1081,8 @@ void EnMaYto_WarmFuzzyFeelingCs(EnMaYto* this, GlobalContext* globalCtx) { } func_800EDF24(&this->actor, globalCtx, csActionIndex); - if (D_80B915F0 == 2 && this->skelAnime.animCurrentSeg == &D_06001FD0 && - func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { + if (D_80B915F0 == 2 && this->skelAnime.animation == &D_06001FD0 && + Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { EnMaYto_ChangeAnim(this, 20); } } else { @@ -1293,16 +1293,16 @@ void EnMaYto_BarnStartDialogue(EnMaYto* this, GlobalContext* globalCtx) { } void EnMaYto_ChangeAnim(EnMaYto* this, s32 index) { - SkelAnime_ChangeAnim(&this->skelAnime, sAnimationInfo[index].animationSeg, 1.0f, 0.0f, - SkelAnime_GetFrameCount(&sAnimationInfo[index].animationSeg->common), - sAnimationInfo[index].mode, sAnimationInfo[index].transitionRate); + Animation_Change(&this->skelAnime, sAnimationInfo[index].animationSeg, 1.0f, 0.0f, + Animation_GetLastFrame(sAnimationInfo[index].animationSeg), sAnimationInfo[index].mode, + sAnimationInfo[index].transitionRate); } void func_80B90C78(EnMaYto* this, GlobalContext* globalCtx) { Player* player = GET_PLAYER(globalCtx); s16 flag; - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); flag = this->unk31E == 2 ? true : false; if (this->unk31E == 0) { @@ -1464,12 +1464,12 @@ s32 EnMaYto_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dLis rot->x += sp4.y; rot->z += sp4.x; } else if (limbIndex == MA2_LIMB_TORSO) { - if (this->skelAnime.animCurrentSeg != &D_06007E28 && this->skelAnime.animCurrentSeg != &D_06003D54) { + if (this->skelAnime.animation != &D_06007E28 && this->skelAnime.animation != &D_06003D54) { sp4 = this->unk_1D8.unk_0E; rot->x += sp4.y; - if (this->skelAnime.animCurrentSeg == &D_0600A174 || this->skelAnime.animCurrentSeg == &D_060070EC || - this->skelAnime.animCurrentSeg == &D_06003D54) { + if (this->skelAnime.animation == &D_0600A174 || this->skelAnime.animation == &D_060070EC || + this->skelAnime.animation == &D_06003D54) { rot->z += sp4.x; } } @@ -1481,7 +1481,7 @@ void EnMaYto_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, EnMaYto* this = THIS; if (limbIndex == MA2_LIMB_HEAD) { - SysMatrix_GetStateTranslation(&this->actor.focus.pos); + Matrix_GetStateTranslation(&this->actor.focus.pos); } } @@ -1499,8 +1499,8 @@ void EnMaYto_Draw(Actor* thisx, GlobalContext* globalCtx) { gSPSegment(POLY_OPA_DISP++, 0x09, Lib_SegmentedToVirtual(sMouthTextures[this->mouthTexIndex])); gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(sEyesTextures[this->eyeTexIndex])); - SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, - EnMaYto_OverrideLimbDraw, EnMaYto_PostLimbDraw, &this->actor); + SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, + EnMaYto_OverrideLimbDraw, EnMaYto_PostLimbDraw, &this->actor); CLOSE_DISPS(globalCtx->state.gfxCtx); } diff --git a/src/overlays/actors/ovl_En_Ma_Yto/z_en_ma_yto.h b/src/overlays/actors/ovl_En_Ma_Yto/z_en_ma_yto.h index 0fe7e009f..0feaea48a 100644 --- a/src/overlays/actors/ovl_En_Ma_Yto/z_en_ma_yto.h +++ b/src/overlays/actors/ovl_En_Ma_Yto/z_en_ma_yto.h @@ -42,8 +42,8 @@ typedef struct EnMaYto { /* 0x1D8 */ struct_800BD888_arg1 unk_1D8; /* 0x200 */ s32 unk200; // unused /* 0x204 */ s32 type; - /* 0x208 */ Vec3s limbDrawTbl[MA2_LIMB_MAX]; - /* 0x28C */ Vec3s transitionDrawTbl[MA2_LIMB_MAX]; + /* 0x208 */ Vec3s jointTable[MA2_LIMB_MAX]; + /* 0x28C */ Vec3s morphTable[MA2_LIMB_MAX]; /* 0x310 */ s16 unk310; // state? /* 0x312 */ UNK_TYPE1 unk_312[0x2]; /* 0x314 */ s16 currentAnim; // Used only in DefaultWait diff --git a/src/overlays/actors/ovl_En_Ma_Yts/z_en_ma_yts.c b/src/overlays/actors/ovl_En_Ma_Yts/z_en_ma_yts.c index 786dee4ba..266ba90e9 100644 --- a/src/overlays/actors/ovl_En_Ma_Yts/z_en_ma_yts.c +++ b/src/overlays/actors/ovl_En_Ma_Yts/z_en_ma_yts.c @@ -125,12 +125,6 @@ static struct_80B8E1A8 sAnimationInfo[] = { { &D_060180DC, 1.0f, 2, 0.0f }, { &D_060180DC, 1.0f, 2, -6.0f }, // Turns around anim }; -void EnMaYts_ChangeAnim(EnMaYts* this, s32 index) { - SkelAnime_ChangeAnim(&this->skelAnime, sAnimationInfo[index].animationSeg, 1.0f, 0.0f, - SkelAnime_GetFrameCount(&sAnimationInfo[index].animationSeg->common), - sAnimationInfo[index].mode, sAnimationInfo[index].transitionRate); -} - static void* sMouthTextures[] = { D_060127C8, D_06012BC8, @@ -142,6 +136,12 @@ static void* sEyeTextures[] = { D_0600FFC8, D_060107C8, D_06010FC8, D_060117C8, D_06011FC8, }; +void EnMaYts_ChangeAnim(EnMaYts* this, s32 index) { + Animation_Change(&this->skelAnime, sAnimationInfo[index].animationSeg, 1.0f, 0.0f, + Animation_GetLastFrame(sAnimationInfo[index].animationSeg), sAnimationInfo[index].mode, + sAnimationInfo[index].transitionRate); +} + void func_80B8D12C(EnMaYts* this, GlobalContext* globalCtx) { Player* player = GET_PLAYER(globalCtx); s16 flag = this->unk_32C == 2 ? true : false; @@ -246,8 +246,8 @@ void EnMaYts_Init(Actor* thisx, GlobalContext* globalCtx) { Actor_MarkForDeath(&this->actor); } ActorShape_Init(&this->actor.shape, 0.0f, func_800B3FC0, 18.0f); - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_06013928, NULL, this->limbDrawTbl, this->transitionDrawTbl, - MA1_LIMB_MAX); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_06013928, NULL, this->jointTable, this->morphTable, + MA1_LIMB_MAX); EnMaYts_InitAnimation(this, globalCtx); Collider_InitCylinder(globalCtx, &this->collider); @@ -435,7 +435,7 @@ void EnMaYts_EndCreditsHandler(EnMaYts* this, GlobalContext* globalCtx) { func_800EDF24(&this->actor, globalCtx, actionIndex); if ((D_80B8E32C == 2) && (this->endCreditsFlag == 0) && - (func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount) != 0)) { + (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame) != 0)) { this->endCreditsFlag++; EnMaYts_ChangeAnim(this, 5); } @@ -517,20 +517,19 @@ void EnMaYts_Update(Actor* thisx, GlobalContext* globalCtx) { collider = &this->collider; Collider_UpdateCylinder(&this->actor, collider); CollisionCheck_SetOC(globalCtx, &globalCtx->colChkCtx, &collider->base); - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); EnMaYts_UpdateEyes(this); func_80B8D12C(this, globalCtx); } -s32 EnMaYts_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, - Actor* thisx) { - EnMaYts* this = THIS; +s32 EnMaYts_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* arg) { + EnMaYts* this = (EnMaYts*)arg; Vec3s sp4; if (limbIndex == MA1_LIMB_HEAD) { sp4 = this->unk_1D8.unk_08; rot->x += sp4.y; - if ((this->skelAnime.animCurrentSeg == &D_06009E58) || (this->skelAnime.animCurrentSeg == &D_06007D98)) { + if ((this->skelAnime.animation == &D_06009E58) || (this->skelAnime.animation == &D_06007D98)) { rot->z += sp4.x; } } else if (limbIndex == MA1_LIMB_TORSO) { @@ -542,11 +541,11 @@ s32 EnMaYts_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dLis return 0; } -void EnMaYts_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) { - EnMaYts* this = THIS; +void EnMaYts_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* arg) { + EnMaYts* this = (EnMaYts*)arg; if (limbIndex == MA1_LIMB_HEAD) { - SysMatrix_GetStateTranslation(&this->actor.focus.pos); + Matrix_GetStateTranslation(&this->actor.focus.pos); } else if (limbIndex == MA1_LIMB_HAND_LEFT) { if (this->hasBow == true) { OPEN_DISPS(globalCtx->state.gfxCtx); @@ -565,8 +564,8 @@ void EnMaYts_Draw(Actor* thisx, GlobalContext* globalCtx) { gSPSegment(POLY_OPA_DISP++, 0x09, SEGMENTED_TO_VIRTUAL(sMouthTextures[this->mouthTexIndex])); gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(sEyeTextures[this->eyeTexIndex])); - SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, - EnMaYts_OverrideLimbDraw, EnMaYts_PostLimbDraw, &this->actor); + SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, + EnMaYts_OverrideLimbDraw, EnMaYts_PostLimbDraw, &this->actor); CLOSE_DISPS(globalCtx->state.gfxCtx); } diff --git a/src/overlays/actors/ovl_En_Ma_Yts/z_en_ma_yts.h b/src/overlays/actors/ovl_En_Ma_Yts/z_en_ma_yts.h index 75f0ee0b6..2fcc20509 100644 --- a/src/overlays/actors/ovl_En_Ma_Yts/z_en_ma_yts.h +++ b/src/overlays/actors/ovl_En_Ma_Yts/z_en_ma_yts.h @@ -41,9 +41,9 @@ typedef struct EnMaYts { /* 0x18C */ ColliderCylinder collider; /* 0x1D8 */ struct_800BD888_arg1 unk_1D8; /* 0x200 */ s32 unk_200; // Set, but not used - /* 0x204 */ Vec3s limbDrawTbl[MA1_LIMB_MAX]; + /* 0x204 */ Vec3s jointTable[MA1_LIMB_MAX]; /* 0x28E */ char unk_28E[0x6]; - /* 0x294 */ Vec3s transitionDrawTbl[MA1_LIMB_MAX]; + /* 0x294 */ Vec3s morphTable[MA1_LIMB_MAX]; /* 0x31E */ char unk_31E[0x8]; /* 0x326 */ s16 blinkTimer; /* 0x328 */ s16 overrideEyeTexIndex; // If non-zero, then this index will be used instead of eyeTexIndex diff --git a/src/overlays/actors/ovl_En_Minifrog/z_en_minifrog.c b/src/overlays/actors/ovl_En_Minifrog/z_en_minifrog.c index d1f4a0d90..9de59a963 100644 --- a/src/overlays/actors/ovl_En_Minifrog/z_en_minifrog.c +++ b/src/overlays/actors/ovl_En_Minifrog/z_en_minifrog.c @@ -92,8 +92,7 @@ void EnMinifrog_Init(Actor* thisx, GlobalContext* globalCtx) { Actor_ProcessInitChain(&this->actor, sInitChain); ActorShape_Init(&this->actor.shape, 0.0f, func_800B3FC0, 15.0f); - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_0600B538, &D_06001534, this->limbDrawTable, - this->transitionDrawTable, 24); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_0600B538, &D_06001534, this->jointTable, this->morphTable, 24); CollisionCheck_SetInfo(&this->actor.colChkInfo, NULL, &sColChkInfoInit); Collider_InitAndSetCylinder(globalCtx, &this->collider, &this->actor, &sCylinderInit); @@ -181,7 +180,7 @@ EnMinifrog* EnMinifrog_GetFrog(GlobalContext* globalCtx) { void EnMinifrog_SetJumpState(EnMinifrog* this) { if (this->jumpState == MINIFROG_STATE_GROUND) { this->jumpState = MINIFROG_STATE_JUMP; - SkelAnime_ChangeAnim(&this->skelAnime, &D_060007BC, 1.0f, 0.0f, 7.0f, 2, -5.0f); + Animation_Change(&this->skelAnime, &D_060007BC, 1.0f, 0.0f, 7.0f, 2, -5.0f); } } @@ -195,10 +194,10 @@ void EnMinifrog_JumpTimer(EnMinifrog* this) { } void EnMinifrog_Jump(EnMinifrog* this) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); switch (this->jumpState) { case MINIFROG_STATE_JUMP: - if (func_801378B8(&this->skelAnime, 4.0f)) { + if (Animation_OnFrame(&this->skelAnime, 4.0f)) { this->actor.bgCheckFlags &= ~1; this->actor.velocity.y = 6.0f; Audio_PlayActorSound2(&this->actor, NA_SE_EV_FROG_JUMP); @@ -208,8 +207,8 @@ void EnMinifrog_Jump(EnMinifrog* this) { case MINIFROG_STATE_AIR: if (this->actor.bgCheckFlags & 1) { this->jumpState = MINIFROG_STATE_GROUND; - SkelAnime_ChangeAnimTransitionRepeat(&this->skelAnime, &D_06001534, -2.5f); - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + Animation_MorphToLoop(&this->skelAnime, &D_06001534, -2.5f); + SkelAnime_Update(&this->skelAnime); } break; } @@ -606,7 +605,7 @@ void EnMinifrog_UpdateMissingFrog(Actor* thisx, GlobalContext* globalCtx) { } s32 EnMinifrog_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, - Actor* thisx) { + Actor* arg) { if (limbIndex == 1) { pos->z -= 500.0f; } @@ -618,19 +617,19 @@ s32 EnMinifrog_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** d return 0; } -void EnMinifrog_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) { - EnMinifrog* this = THIS; +void EnMinifrog_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* arg) { + EnMinifrog* this = (EnMinifrog*)arg; if ((limbIndex == 7) || (limbIndex == 8)) { OPEN_DISPS(globalCtx->state.gfxCtx); - SysMatrix_NormalizeXYZ(&globalCtx->mf_187FC); + Matrix_NormalizeXYZ(&globalCtx->mf_187FC); gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_OPA_DISP++, *dList); CLOSE_DISPS(globalCtx->state.gfxCtx); } if (limbIndex == 4) { - SysMatrix_GetStateTranslation(&this->actor.focus.pos); + Matrix_GetStateTranslation(&this->actor.focus.pos); } } @@ -648,7 +647,7 @@ void EnMinifrog_Draw(Actor* thisx, GlobalContext* globalCtx) { gSPSegment(POLY_OPA_DISP++, 0x08, D_808A4D74[0]); gSPSegment(POLY_OPA_DISP++, 0x09, D_808A4D74[0]); gDPSetEnvColor(POLY_OPA_DISP++, envColor->r, envColor->g, envColor->b, envColor->a); - SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, - EnMinifrog_OverrideLimbDraw, EnMinifrog_PostLimbDraw, &this->actor); + SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, + EnMinifrog_OverrideLimbDraw, EnMinifrog_PostLimbDraw, &this->actor); CLOSE_DISPS(globalCtx->state.gfxCtx); } diff --git a/src/overlays/actors/ovl_En_Minifrog/z_en_minifrog.h b/src/overlays/actors/ovl_En_Minifrog/z_en_minifrog.h index 1dc4a53de..201ef5c47 100644 --- a/src/overlays/actors/ovl_En_Minifrog/z_en_minifrog.h +++ b/src/overlays/actors/ovl_En_Minifrog/z_en_minifrog.h @@ -27,8 +27,8 @@ typedef enum { typedef struct EnMinifrog { /* 0x000 */ Actor actor; /* 0x144 */ SkelAnime skelAnime; - /* 0x188 */ Vec3s limbDrawTable[24]; - /* 0x218 */ Vec3s transitionDrawTable[24]; + /* 0x188 */ Vec3s jointTable[24]; + /* 0x218 */ Vec3s morphTable[24]; /* 0x2A8 */ EnMinifrogActionFunc actionFunc; /* 0x2AC */ struct EnMinifrog* frog; /* 0x2B0 */ s16 frogIndex; diff --git a/src/overlays/actors/ovl_En_Niw/z_en_niw.c b/src/overlays/actors/ovl_En_Niw/z_en_niw.c index f3af54caf..4bad3b031 100644 --- a/src/overlays/actors/ovl_En_Niw/z_en_niw.c +++ b/src/overlays/actors/ovl_En_Niw/z_en_niw.c @@ -8,6 +8,8 @@ #define FLAGS 0x00800010 +#define THIS ((EnNiw*)thisx) + void EnNiw_Init(Actor* thisx, GlobalContext* globalCtx); void EnNiw_Destroy(Actor* thisx, GlobalContext* globalCtx); void EnNiw_Update(Actor* thisx, GlobalContext* globalCtx); @@ -28,7 +30,6 @@ void EnNiw_UpdateFeather(EnNiw* this, GlobalContext* globalCtx); void EnNiw_DrawFeathers(EnNiw* this, GlobalContext* globalCtx); void EnNiw_CheckRage(EnNiw* this, GlobalContext* globalCtx); void func_80891320(EnNiw* this, GlobalContext* globalCtx, s16 arg2); -s32 EnNiw_LimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, struct Actor* actor); void EnNiw_SpawnFeather(EnNiw* this, Vec3f* pos, Vec3f* vel, Vec3f* accel, f32 scale); extern FlexSkeletonHeader D_06002530; @@ -125,8 +126,8 @@ void EnNiw_Init(Actor* thisx, GlobalContext* globalCtx) { ActorShape_Init(&thisx->shape, 0.0f, func_800B3FC0, 25.0f); - SkelAnime_InitSV(globalCtx, &this->skelanime, &D_06002530, &D_060000E8, this->limbDrawTbl, - this->transitionDrawtable, ENNIW_LIMBCOUNT); + SkelAnime_InitFlex(globalCtx, &this->skelanime, &D_06002530, &D_060000E8, this->jointTable, this->morphTable, + ENNIW_LIMBCOUNT); Math_Vec3f_Copy(&this->unk2A4, &this->actor.world.pos); Math_Vec3f_Copy(&this->unk2B0, &this->actor.world.pos); @@ -326,8 +327,7 @@ void func_808917F8(EnNiw* this, GlobalContext* globalCtx, s32 arg2) { } void EnNiw_SetupIdle(EnNiw* this) { - SkelAnime_ChangeAnim(&this->skelanime, &D_060000E8, 1.0f, 0.0f, SkelAnime_GetFrameCount(&D_060000E8.common), 0, - -10.0f); + Animation_Change(&this->skelanime, &D_060000E8, 1.0f, 0.0f, Animation_GetLastFrame(&D_060000E8), 0, -10.0f); this->unknownState28E = 0; this->actionFunc = EnNiw_Idle; } @@ -629,8 +629,7 @@ void EnNiw_CuccoStorm(EnNiw* this, GlobalContext* globalCtx) { } void EnNiw_SetupRunAway(EnNiw* this) { - SkelAnime_ChangeAnim(&this->skelanime, &D_060000E8, 1.0f, 0.0f, SkelAnime_GetFrameCount(&D_060000E8.common), 0, - -10.0f); + Animation_Change(&this->skelanime, &D_060000E8, 1.0f, 0.0f, Animation_GetLastFrame(&D_060000E8), 0, -10.0f); this->unk29A = Rand_ZeroFloat(1.99f); this->unknownState28E = 7; this->actionFunc = EnNiw_RunAway; @@ -907,8 +906,8 @@ void EnNiw_Update(Actor* thisx, GlobalContext* globalCtx) { } } -s32 EnNiw_LimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* actor) { - EnNiw* this = (EnNiw*)actor; +s32 EnNiw_LimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) { + EnNiw* this = THIS; if (limbIndex == 13) { rot->y += (s16)this->limbDRot; @@ -933,8 +932,8 @@ void EnNiw_Draw(Actor* thisx, GlobalContext* globalCtx) { EnNiw* this = (EnNiw*)thisx; func_8012C28C(globalCtx->state.gfxCtx); - SkelAnime_DrawSV(globalCtx, this->skelanime.skeleton, this->skelanime.limbDrawTbl, this->skelanime.dListCount, - EnNiw_LimbDraw, NULL, &this->actor); + SkelAnime_DrawFlexOpa(globalCtx, this->skelanime.skeleton, this->skelanime.jointTable, this->skelanime.dListCount, + EnNiw_LimbDraw, NULL, &this->actor); EnNiw_DrawFeathers(this, globalCtx); } @@ -1007,11 +1006,11 @@ void EnNiw_DrawFeathers(EnNiw* this, GlobalContext* globalCtx) { isMaterialApplied++; } - SysMatrix_InsertTranslation(feather->pos.x, feather->pos.y, feather->pos.z, MTXMODE_NEW); - SysMatrix_NormalizeXYZ(&globalCtx->mf_187FC); + Matrix_InsertTranslation(feather->pos.x, feather->pos.y, feather->pos.z, MTXMODE_NEW); + Matrix_NormalizeXYZ(&globalCtx->mf_187FC); Matrix_Scale(feather->scale, feather->scale, 1.0f, MTXMODE_APPLY); - SysMatrix_InsertZRotation_f(feather->zRot, MTXMODE_APPLY); - SysMatrix_InsertTranslation(0.0f, -1000.0f, 0.0f, MTXMODE_APPLY); + Matrix_InsertZRotation_f(feather->zRot, MTXMODE_APPLY); + Matrix_InsertTranslation(0.0f, -1000.0f, 0.0f, MTXMODE_APPLY); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); diff --git a/src/overlays/actors/ovl_En_Niw/z_en_niw.h b/src/overlays/actors/ovl_En_Niw/z_en_niw.h index 07d958893..5a03215bc 100644 --- a/src/overlays/actors/ovl_En_Niw/z_en_niw.h +++ b/src/overlays/actors/ovl_En_Niw/z_en_niw.h @@ -25,8 +25,8 @@ typedef struct { typedef struct EnNiw { /* 0x000 */ Actor actor; /* 0x144 */ SkelAnime skelanime; - /* 0x188 */ Vec3s limbDrawTbl[ENNIW_LIMBCOUNT]; - /* 0x1E8 */ Vec3s transitionDrawtable[ENNIW_LIMBCOUNT]; + /* 0x188 */ Vec3s jointTable[ENNIW_LIMBCOUNT]; + /* 0x1E8 */ Vec3s morphTable[ENNIW_LIMBCOUNT]; /* 0x248 */ EnNiwActionFunc actionFunc; /* 0x24C */ s16 unkTimer24C; /* 0x24E */ s16 unkTimer24E; diff --git a/src/overlays/actors/ovl_En_Nutsball/z_en_nutsball.c b/src/overlays/actors/ovl_En_Nutsball/z_en_nutsball.c index bae091c19..b9aa32a0c 100644 --- a/src/overlays/actors/ovl_En_Nutsball/z_en_nutsball.c +++ b/src/overlays/actors/ovl_En_Nutsball/z_en_nutsball.c @@ -165,8 +165,8 @@ void EnNutsball_Draw(Actor* thisx, GlobalContext* globalCtx) { OPEN_DISPS(globalCtx->state.gfxCtx); func_8012C28C(globalCtx->state.gfxCtx); - SysMatrix_InsertMatrix(&globalCtx->mf_187FC, 1); - SysMatrix_InsertZRotation_s(this->actor.home.rot.z, 1); + Matrix_InsertMatrix(&globalCtx->mf_187FC, MTXMODE_APPLY); + Matrix_InsertZRotation_s(this->actor.home.rot.z, MTXMODE_APPLY); gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_OPA_DISP++, D_04058BA0); CLOSE_DISPS(globalCtx->state.gfxCtx); diff --git a/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c b/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c index 046f3bb80..be2c4b570 100644 --- a/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c +++ b/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c @@ -355,8 +355,8 @@ void EnOssan_Idle(EnOssan* this, GlobalContext* globalCtx) { void EnOssan_BeginInteraction(EnOssan* this, GlobalContext* globalCtx) { ActorAnimationEntryS* animations = sAnimations[this->actor.params]; - s16 curFrame = this->skelAnime.animCurrentFrame; - s16 frameCount = SkelAnime_GetFrameCount(&animations[this->animationIdx].animationSeg->common); + s16 curFrame = this->skelAnime.curFrame; + s16 frameCount = Animation_GetLastFrame(animations[this->animationIdx].animationSeg); if (this->animationIdx == 3) { frameCount = 0; @@ -550,7 +550,7 @@ void EnOssan_Hello(EnOssan* this, GlobalContext* globalCtx) { this->animationIdx = 9; func_8013BC6C(&this->skelAnime, animations, 9); } - if (this->animationIdx == 11 && func_801378B8(&this->skelAnime, 18.0f)) { + if (this->animationIdx == 11 && Animation_OnFrame(&this->skelAnime, 18.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EV_HANKO); } } @@ -1329,14 +1329,12 @@ void EnOssan_Blink(EnOssan* this) { } void EnOssan_InitCuriosityShopMan(EnOssan* this, GlobalContext* globalCtx) { - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_06013320, &D_06012C34, this->limbDrawTbl, this->transitionDrawTbl, - 19); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_06013320, &D_06012C34, this->jointTable, this->morphTable, 19); this->actor.draw = EnOssan_DrawCuriosityShopMan; } void EnOssan_InitPartTimeWorker(EnOssan* this, GlobalContext* globalCtx) { - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_060028A0, &D_06009D34, this->limbDrawTbl, this->transitionDrawTbl, - 16); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_060028A0, &D_06009D34, this->jointTable, this->morphTable, 16); this->actor.draw = EnOssan_DrawPartTimeWorker; } @@ -1521,7 +1519,7 @@ void EnOssan_Update(Actor* thisx, GlobalContext* globalCtx) { func_800E9250(globalCtx, &this->actor, &this->headRot, &this->unk2CC, this->actor.focus.pos); this->actionFunc(this, globalCtx); Actor_SetHeight(&this->actor, 90.0f); - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); } else { this->actionFunc(this, globalCtx); } @@ -1642,7 +1640,7 @@ s32 EnOssan_OverrideLimbDrawCuriosityShopMan(GlobalContext* globalCtx, s32 limbI EnOssan* this = THIS; if (limbIndex == 16) { - SysMatrix_InsertXRotation_s(this->headRot.y, MTXMODE_APPLY); + Matrix_InsertXRotation_s(this->headRot.y, MTXMODE_APPLY); } return false; } @@ -1652,8 +1650,8 @@ s32 EnOssan_OverrideLimbDrawPartTimeWorker(GlobalContext* globalCtx, s32 limbInd EnOssan* this = THIS; if (limbIndex == 15) { - SysMatrix_InsertXRotation_s(this->headRotPartTimeWorker.y, MTXMODE_APPLY); - SysMatrix_InsertZRotation_s(this->headRotPartTimeWorker.x, MTXMODE_APPLY); + Matrix_InsertXRotation_s(this->headRotPartTimeWorker.y, MTXMODE_APPLY); + Matrix_InsertZRotation_s(this->headRotPartTimeWorker.x, MTXMODE_APPLY); } return false; } @@ -1674,7 +1672,7 @@ void EnOssan_PostLimbDrawPartTimeWorker(GlobalContext* globalCtx, s32 limbIndex, EnOssan* this = THIS; if (limbIndex == 15) { - SysMatrix_MultiplyVector3fByState(&sPartTimeWorkerFocusOffset, &this->actor.focus.pos); + Matrix_MultiplyVector3fByState(&sPartTimeWorkerFocusOffset, &this->actor.focus.pos); } } @@ -1686,8 +1684,8 @@ void EnOssan_DrawCuriosityShopMan(Actor* thisx, GlobalContext* globalCtx) { OPEN_DISPS(globalCtx->state.gfxCtx); func_8012C28C(globalCtx->state.gfxCtx); gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(sEyeTextures[this->eyeTexIndex])); - SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, - EnOssan_OverrideLimbDrawCuriosityShopMan, EnOssan_PostLimbDrawCuriosityShopMan, &this->actor); + SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, + EnOssan_OverrideLimbDrawCuriosityShopMan, EnOssan_PostLimbDrawCuriosityShopMan, &this->actor); EnOssan_DrawCursor(globalCtx, this, this->cursorPos.x, this->cursorPos.y, this->cursorPos.z, this->drawCursor); EnOssan_DrawStickDirectionPrompts(globalCtx, this); CLOSE_DISPS(globalCtx->state.gfxCtx); @@ -1701,8 +1699,8 @@ void EnOssan_DrawPartTimeWorker(Actor* thisx, GlobalContext* globalCtx) { OPEN_DISPS(globalCtx->state.gfxCtx); func_8012C28C(globalCtx->state.gfxCtx); gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(sEyeTextures[this->eyeTexIndex])); - SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, - EnOssan_OverrideLimbDrawPartTimeWorker, EnOssan_PostLimbDrawPartTimeWorker, &this->actor); + SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, + EnOssan_OverrideLimbDrawPartTimeWorker, EnOssan_PostLimbDrawPartTimeWorker, &this->actor); EnOssan_DrawCursor(globalCtx, this, this->cursorPos.x, this->cursorPos.y, this->cursorPos.z, this->drawCursor); EnOssan_DrawStickDirectionPrompts(globalCtx, this); CLOSE_DISPS(globalCtx->state.gfxCtx); diff --git a/src/overlays/actors/ovl_En_Ossan/z_en_ossan.h b/src/overlays/actors/ovl_En_Ossan/z_en_ossan.h index 689d352cf..53f8b8f39 100644 --- a/src/overlays/actors/ovl_En_Ossan/z_en_ossan.h +++ b/src/overlays/actors/ovl_En_Ossan/z_en_ossan.h @@ -50,8 +50,8 @@ typedef struct EnOssan { /* 0x2CC */ Vec3s unk2CC; // Set but never used /* 0x2D2 */ s16 limbRotTableY[19]; /* 0x2F8 */ s16 limbRotTableZ[19]; - /* 0x31E */ Vec3s limbDrawTbl[19]; - /* 0x390 */ Vec3s transitionDrawTbl[19]; + /* 0x31E */ Vec3s jointTable[19]; + /* 0x390 */ Vec3s morphTable[19]; /* 0x402 */ s16 animationIdx; /* 0x404 */ Vec3s headRotPartTimeWorker; /* 0x40A */ u16 flags; diff --git a/src/overlays/actors/ovl_En_Owl/z_en_owl.c b/src/overlays/actors/ovl_En_Owl/z_en_owl.c index 381f4e90a..f0a2327fd 100644 --- a/src/overlays/actors/ovl_En_Owl/z_en_owl.c +++ b/src/overlays/actors/ovl_En_Owl/z_en_owl.c @@ -139,8 +139,10 @@ void EnOwl_Init(Actor* thisx, GlobalContext* globalCtx) { } ActorShape_Init(&this->actor.shape, 0.0f, func_800B3FC0, 36.0f); - SkelAnime_InitSV(globalCtx, &this->skelAnime1, &D_0600C5F8, &D_06001ADC, this->jointTable1, this->morphTable1, 21); - SkelAnime_InitSV(globalCtx, &this->skelAnime2, &D_060105C0, &D_0600CDB0, this->jointTable2, this->morphTable2, 16); + SkelAnime_InitFlex(globalCtx, &this->skelAnime1, &D_0600C5F8, &D_06001ADC, this->jointTable1, this->morphTable1, + 21); + SkelAnime_InitFlex(globalCtx, &this->skelAnime2, &D_060105C0, &D_0600CDB0, this->jointTable2, this->morphTable2, + 16); Collider_InitAndSetCylinder(globalCtx, &this->collider, &this->actor, &sCylinderInit); this->actor.colChkInfo.mass = MASS_IMMOVABLE; this->actor.minVelocityY = -10.0f; @@ -425,9 +427,9 @@ void func_8095B0C8(EnOwl* this) { } void func_8095B158(EnOwl* this) { - if (func_801378B8(&this->skelAnime1, 2.0f) || func_801378B8(&this->skelAnime1, 9.0f) || - func_801378B8(&this->skelAnime1, 23.0f) || func_801378B8(&this->skelAnime1, 40.0f) || - func_801378B8(&this->skelAnime1, 58.0f)) { + if (Animation_OnFrame(&this->skelAnime1, 2.0f) || Animation_OnFrame(&this->skelAnime1, 9.0f) || + Animation_OnFrame(&this->skelAnime1, 23.0f) || Animation_OnFrame(&this->skelAnime1, 40.0f) || + Animation_OnFrame(&this->skelAnime1, 58.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_OWL_FLUTTER); } } @@ -458,15 +460,15 @@ void func_8095B254(EnOwl* this, GlobalContext* globalCtx) { void func_8095B2F8(EnOwl* this, GlobalContext* globalCtx) { func_8095B06C(this); - if (this->skelAnime1.animCurrentFrame >= 18.0f) { + if (this->skelAnime1.curFrame >= 18.0f) { Math_SmoothStepToS(&this->actor.world.rot.y, this->unk_3EC, 2, 0x200, 0x80); this->actor.shape.rot.y = this->actor.world.rot.y; } if ((this->actor.shape.rot.y == this->unk_3EC) && (this->actionFlags & 1)) { this->actionFunc = func_8095B254; - SkelAnime_ChangeAnim(this->skelAnime3, this->skelAnime3->animCurrentSeg, 1.0f, 19.0f, - SkelAnime_GetFrameCount(&D_06001168.common), 2, 0.0f); + Animation_Change(this->skelAnime3, this->skelAnime3->animation, 1.0f, 19.0f, + Animation_GetLastFrame(&D_06001168), 2, 0.0f); this->unk_414 = func_8095C484; } @@ -476,7 +478,7 @@ void func_8095B2F8(EnOwl* this, GlobalContext* globalCtx) { void func_8095B3DC(EnOwl* this, GlobalContext* globalCtx) { if (this->actionFlags & 1) { this->actionFunc = func_8095B2F8; - SkelAnime_ChangeAnim(this->skelAnime3, &D_06001168, 1.0f, 0.0f, 35.0f, 2, 0.0f); + Animation_Change(this->skelAnime3, &D_06001168, 1.0f, 0.0f, 35.0f, 2, 0.0f); this->unk_414 = func_8095C408; this->unk_3EC = 0x5500; this->actor.world.pos.y += 100.0f; @@ -532,8 +534,7 @@ void func_8095B650(EnOwl* this, GlobalContext* globalCtx) { void func_8095B6C8(EnOwl* this, GlobalContext* globalCtx) { if (this->actionFlags & 1) { - SkelAnime_ChangeAnim(this->skelAnime3, &D_0600CB94, -1.0f, SkelAnime_GetFrameCount(&D_0600CB94.common), 0.0f, 2, - 0.0f); + Animation_Change(this->skelAnime3, &D_0600CB94, -1.0f, Animation_GetLastFrame(&D_0600CB94), 0.0f, 2, 0.0f); this->unk_414 = func_8095C484; this->actionFunc = func_8095B650; } @@ -588,7 +589,7 @@ void func_8095B76C(EnOwl* this, GlobalContext* globalCtx) { } void func_8095B960(EnOwl* this, GlobalContext* globalCtx) { - if (this->skelAnime1.animCurrentFrame >= 18.0f) { + if (this->skelAnime1.curFrame >= 18.0f) { Math_SmoothStepToS(&this->actor.world.rot.y, this->unk_3EC, 2, 0x200, 0x80); this->actor.shape.rot.y = this->actor.world.rot.y; } @@ -605,7 +606,7 @@ void func_8095B960(EnOwl* this, GlobalContext* globalCtx) { void func_8095B9FC(EnOwl* this, GlobalContext* globalCtx) { if (this->actionFlags & 1) { this->actionFunc = func_8095B960; - SkelAnime_ChangeAnim(this->skelAnime3, &D_06001168, 1.0f, 0.0f, 35.0f, 2, 0.0f); + Animation_Change(this->skelAnime3, &D_06001168, 1.0f, 0.0f, 35.0f, 2, 0.0f); this->unk_414 = func_8095C408; func_8095B0C8(this); } @@ -766,16 +767,16 @@ void func_8095BF78(EnOwl* this, GlobalContext* globalCtx) { } void func_8095C09C(EnOwl* this, GlobalContext* globalCtx) { - if (this->skelAnime1.animCurrentFrame > 10.0f) { + if (this->skelAnime1.curFrame > 10.0f) { Math_SmoothStepToS(&this->actor.world.rot.y, this->unk_3EC, 2, 0x400, 0x40); this->actor.shape.rot.y = this->actor.world.rot.y; } - if (this->skelAnime1.animCurrentFrame > 45.0f) { + if (this->skelAnime1.curFrame > 45.0f) { this->actor.velocity.y = 2.0f; this->actor.gravity = 0.0f; this->actor.speedXZ = 8.0f; - } else if (this->skelAnime1.animCurrentFrame > 17.0f) { + } else if (this->skelAnime1.curFrame > 17.0f) { this->actor.velocity.y = 6.0f; this->actor.gravity = 0.0f; this->actor.speedXZ = 4.0f; @@ -802,36 +803,34 @@ void func_8095C1C8(EnOwl* this, GlobalContext* globalCtx) { } void func_8095C258(EnOwl* this) { - SkelAnime_FrameUpdateMatrix(this->skelAnime3); + SkelAnime_Update(this->skelAnime3); if (this->unk_3EA > 0) { this->unk_3EA--; this->actor.shape.rot.z = Math_SinS(this->unk_3EA * 0x333) * 1000.0f; } else { this->unk_414 = func_8095C328; this->unk_3EA = 6; - SkelAnime_ChangeAnim(this->skelAnime3, &D_06001ADC, 1.0f, 0.0f, SkelAnime_GetFrameCount(&D_06001ADC.common), 2, - 5.0f); + Animation_Change(this->skelAnime3, &D_06001ADC, 1.0f, 0.0f, Animation_GetLastFrame(&D_06001ADC), 2, 5.0f); } } void func_8095C328(EnOwl* this) { - if (SkelAnime_FrameUpdateMatrix(this->skelAnime3)) { + if (SkelAnime_Update(this->skelAnime3)) { if (this->unk_3EA > 0) { this->unk_3EA--; - SkelAnime_ChangeAnim(this->skelAnime3, this->skelAnime3->animCurrentSeg, 1.0f, 0.0f, - SkelAnime_GetFrameCount(this->skelAnime3->genericSeg), 2, 0.0f); + Animation_Change(this->skelAnime3, this->skelAnime3->animation, 1.0f, 0.0f, + Animation_GetLastFrame(this->skelAnime3->animation), 2, 0.0f); } else { this->unk_3EA = 160; this->unk_414 = func_8095C258; - SkelAnime_ChangeAnim(this->skelAnime3, &D_0600C6D4, 1.0f, 0.0f, SkelAnime_GetFrameCount(&D_0600C6D4.common), - 0, 5.0f); + Animation_Change(this->skelAnime3, &D_0600C6D4, 1.0f, 0.0f, Animation_GetLastFrame(&D_0600C6D4), 0, 5.0f); } } } void func_8095C408(EnOwl* this) { - if (SkelAnime_FrameUpdateMatrix(this->skelAnime3)) { - SkelAnime_ChangeAnim(this->skelAnime3, this->skelAnime3->animCurrentSeg, 1.0f, 18.0f, 35.0f, 2, 0.0f); + if (SkelAnime_Update(this->skelAnime3)) { + Animation_Change(this->skelAnime3, this->skelAnime3->animation, 1.0f, 18.0f, 35.0f, 2, 0.0f); this->actionFlags |= 1; } else { this->actionFlags &= ~1; @@ -839,9 +838,9 @@ void func_8095C408(EnOwl* this) { } void func_8095C484(EnOwl* this) { - if (SkelAnime_FrameUpdateMatrix(this->skelAnime3)) { - SkelAnime_ChangeAnim(this->skelAnime3, this->skelAnime3->animCurrentSeg, 1.0f, 0.0f, - SkelAnime_GetFrameCount(this->skelAnime3->genericSeg), 2, 0.0f); + if (SkelAnime_Update(this->skelAnime3)) { + Animation_Change(this->skelAnime3, this->skelAnime3->animation, 1.0f, 0.0f, + Animation_GetLastFrame(this->skelAnime3->animation), 2, 0.0f); this->actionFlags |= 1; } else { this->actionFlags &= ~1; @@ -905,7 +904,7 @@ void EnOwl_Update(Actor* thisx, GlobalContext* globalCtx) { Collider_UpdateCylinder(&this->actor, &this->collider); CollisionCheck_SetOC(globalCtx, &globalCtx->colChkCtx, &this->collider.base); if (this->actor.update != NULL) { - if ((this->skelAnime1.animCurrentSeg == &D_06001ADC) && func_801378B8(&this->skelAnime1, 4.0f)) { + if ((this->skelAnime1.animation == &D_06001ADC) && Animation_OnFrame(&this->skelAnime1, 4.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_OWL_FLUTTER); } @@ -1143,7 +1142,7 @@ void EnOwl_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Ve } if (limbIndex == 3) { - SysMatrix_MultiplyVector3fByState(&sp18, &this->actor.focus.pos); + Matrix_MultiplyVector3fByState(&sp18, &this->actor.focus.pos); } } @@ -1162,8 +1161,8 @@ void EnOwl_Draw(Actor* thisx, GlobalContext* globalCtx) { gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(eyeTextures[this->eyeTexIndex])); - SkelAnime_DrawSV(globalCtx, this->skelAnime3->skeleton, this->skelAnime3->limbDrawTbl, this->skelAnime3->dListCount, - EnOwl_OverrideLimbDraw, EnOwl_PostLimbDraw, &this->actor); + SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime3->skeleton, this->skelAnime3->jointTable, + this->skelAnime3->dListCount, EnOwl_OverrideLimbDraw, EnOwl_PostLimbDraw, &this->actor); CLOSE_DISPS(globalCtx->state.gfxCtx); } @@ -1173,9 +1172,9 @@ void func_8095D074(Actor* thisx, GlobalContext* globalCtx) { OPEN_DISPS(globalCtx->state.gfxCtx); - SysMatrix_InsertTranslation(0.0f, 500.0f, 0.0f, 1); - SysMatrix_InsertXRotation_s(this->unk_3D8 - 0x4000, 1); - SysMatrix_InsertTranslation(0.0f, 0.0f, -500.0f, 1); + Matrix_InsertTranslation(0.0f, 500.0f, 0.0f, 1); + Matrix_InsertXRotation_s(this->unk_3D8 - 0x4000, 1); + Matrix_InsertTranslation(0.0f, 0.0f, -500.0f, 1); if (this->unk_3DC >= 0x20) { gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); @@ -1200,8 +1199,8 @@ void func_8095D074(Actor* thisx, GlobalContext* globalCtx) { void EnOwl_ChangeMode(EnOwl* this, EnOwlActionFunc actionFunc, EnOwlFunc unkFunc, SkelAnime* skelAnime, AnimationHeader* animationSeg, f32 transitionRate) { this->skelAnime3 = skelAnime; - SkelAnime_ChangeAnim(this->skelAnime3, animationSeg, 1.0f, 0.0f, SkelAnime_GetFrameCount(&animationSeg->common), 2, - transitionRate); + Animation_Change(this->skelAnime3, animationSeg, 1.0f, 0.0f, Animation_GetLastFrame(animationSeg), 2, + transitionRate); this->actionFunc = actionFunc; this->unk_414 = unkFunc; } diff --git a/src/overlays/actors/ovl_En_Pamera/z_en_pamera.c b/src/overlays/actors/ovl_En_Pamera/z_en_pamera.c index 94f8605af..bb7a5ffbd 100644 --- a/src/overlays/actors/ovl_En_Pamera/z_en_pamera.c +++ b/src/overlays/actors/ovl_En_Pamera/z_en_pamera.c @@ -152,8 +152,8 @@ void EnPamera_Init(Actor* thisx, GlobalContext* globalCtx) { Vec3f sp44; ActorShape_Init(&this->actor.shape, 0.0f, func_800B3FC0, 15.0f); - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_06008448, &D_060005BC, this->limbDrawTbl, this->transitionDrawTbl, - PAMERA_LIMB_MAX); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_06008448, &D_060005BC, this->jointTable, this->morphTable, + PAMERA_LIMB_MAX); Collider_InitCylinder(globalCtx, &this->collider); Collider_SetCylinder(globalCtx, &this->collider, &this->actor, &sCylinderInit); CollisionCheck_SetInfo2(&this->actor.colChkInfo, NULL, &sColChkInfoInit2); @@ -406,7 +406,7 @@ void EnPamera_LookDownWell(EnPamera* this) { void func_80BD8F60(EnPamera* this, GlobalContext* globalCtx) { Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 0xA, 0x3000, 0x1000); - if (func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { + if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { func_800BDC5C(&this->skelAnime, sAnimations, 2); this->actor.speedXZ = 3.0f; func_80BD93CC(this, 0, 0); @@ -510,12 +510,12 @@ void func_80BD93CC(EnPamera* this, s16 arg1, s16 arg2) { void func_80BD93F4(EnPamera* this, GlobalContext* globalCtx) { if ((this->actionFunc == func_80BD8B70) || (this->actionFunc == func_80BD8DB0) || (this->actionFunc == func_80BD8964) || (this->actionFunc == func_80BD8A7C)) { - if (this->skelAnime.animCurrentSeg == &D_06008AE0) { - if (func_801378B8(&this->skelAnime, 9.0f) || func_801378B8(&this->skelAnime, 18.0f)) { + if (this->skelAnime.animation == &D_06008AE0) { + if (Animation_OnFrame(&this->skelAnime, 9.0f) || Animation_OnFrame(&this->skelAnime, 18.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EV_PAMERA_WALK); } - } else if ((this->skelAnime.animCurrentSeg == &D_06008E38) && - (func_801378B8(&this->skelAnime, 2.0f) || func_801378B8(&this->skelAnime, 6.0f))) { + } else if ((this->skelAnime.animation == &D_06008E38) && + (Animation_OnFrame(&this->skelAnime, 2.0f) || Animation_OnFrame(&this->skelAnime, 6.0f))) { Audio_PlayActorSound2(&this->actor, NA_SE_EV_PAMERA_WALK); } } @@ -536,7 +536,7 @@ void EnPamera_Update(Actor* thisx, GlobalContext* globalCtx) { EnPamera* this = THIS; this->actionFunc(this, globalCtx); - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); func_80BD90AC(this, globalCtx); func_80BD9384(this, globalCtx); func_80BD94E0(this, globalCtx); @@ -557,8 +557,10 @@ s32 EnPamera_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dLi } void EnPamera_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) { + EnPamera* this = THIS; + if (limbIndex == PAMERA_LIMB_HAIR) { - SysMatrix_MultiplyVector3fByState(&D_80BDA5F0, &thisx->focus.pos); + Matrix_MultiplyVector3fByState(&D_80BDA5F0, &this->actor.focus.pos); } } @@ -570,8 +572,8 @@ void EnPamera_Draw(Actor* thisx, GlobalContext* globalCtx) { gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(D_80BDA604[this->unk_312])); gSPSegment(POLY_OPA_DISP++, 0x09, SEGMENTED_TO_VIRTUAL(D_80BDA610[this->unk_314])); gSPSegment(POLY_OPA_DISP++, 0x0A, SEGMENTED_TO_VIRTUAL(D_80BDA5FC[this->unk_310])); - SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, - EnPamera_OverrideLimbDraw, EnPamera_PostLimbDraw, &this->actor); + SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, + EnPamera_OverrideLimbDraw, EnPamera_PostLimbDraw, &this->actor); CLOSE_DISPS(globalCtx->state.gfxCtx); } @@ -775,13 +777,13 @@ void func_80BD9EE0(EnPamera* this) { void func_80BD9F3C(EnPamera* this, GlobalContext* globalCtx) { if (this->unk_31E == 1) { - if (func_801378B8(&this->skelAnime, 2.0f) || func_801378B8(&this->skelAnime, 6.0f) || - func_801378B8(&this->skelAnime, 10.0f) || func_801378B8(&this->skelAnime, 14.0f) || - func_801378B8(&this->skelAnime, 18.0f) || func_801378B8(&this->skelAnime, 22.0f) || - func_801378B8(&this->skelAnime, 25.0f)) { + if (Animation_OnFrame(&this->skelAnime, 2.0f) || Animation_OnFrame(&this->skelAnime, 6.0f) || + Animation_OnFrame(&this->skelAnime, 10.0f) || Animation_OnFrame(&this->skelAnime, 14.0f) || + Animation_OnFrame(&this->skelAnime, 18.0f) || Animation_OnFrame(&this->skelAnime, 22.0f) || + Animation_OnFrame(&this->skelAnime, 25.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EV_PAMERA_WALK); } - if (func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { + if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { this->unk_31E = 0; func_80BD93CC(this, 0, 0); func_800BDC5C(&this->skelAnime, sAnimations, 6); @@ -808,7 +810,7 @@ void func_80BDA0A0(EnPamera* this) { void func_80BDA0FC(EnPamera* this, GlobalContext* globalCtx) { if (this->unk_31E == 1) { - if (func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { + if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { this->unk_31E = 0; func_80BD93CC(this, 0, 0); func_800BDC5C(&this->skelAnime, sAnimations, 6); @@ -825,11 +827,11 @@ void func_80BDA170(EnPamera* this) { void func_80BDA1C8(EnPamera* this, GlobalContext* globalCtx) { if (this->unk_31E == 1) { - if (func_801378B8(&this->skelAnime, 2.0f) || func_801378B8(&this->skelAnime, 6.0f) || - func_801378B8(&this->skelAnime, 10.0f) || func_801378B8(&this->skelAnime, 14.0f)) { + if (Animation_OnFrame(&this->skelAnime, 2.0f) || Animation_OnFrame(&this->skelAnime, 6.0f) || + Animation_OnFrame(&this->skelAnime, 10.0f) || Animation_OnFrame(&this->skelAnime, 14.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EV_PAMERA_WALK); } - if (func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { + if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { this->unk_31E = 0; func_80BD93CC(this, 0, 0); func_800BDC5C(&this->skelAnime, sAnimations, 10); @@ -846,7 +848,7 @@ void func_80BDA288(EnPamera* this) { void func_80BDA2E0(EnPamera* this, GlobalContext* globalCtx) { if (this->unk_31E == 1) { - if (func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { + if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { this->unk_31E = 0; func_800BDC5C(&this->skelAnime, sAnimations, 12); } @@ -858,7 +860,7 @@ void func_80BDA344(Actor* thisx, GlobalContext* globalCtx) { EnPamera* this = THIS; this->actionFunc(this, globalCtx); - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); func_80BD9384(this, globalCtx); if (func_80BD9CB8(this, globalCtx)) { // Pamela is outside diff --git a/src/overlays/actors/ovl_En_Pamera/z_en_pamera.h b/src/overlays/actors/ovl_En_Pamera/z_en_pamera.h index 4ad65de5e..d19030aae 100644 --- a/src/overlays/actors/ovl_En_Pamera/z_en_pamera.h +++ b/src/overlays/actors/ovl_En_Pamera/z_en_pamera.h @@ -46,8 +46,8 @@ typedef struct EnPamera { /* 0x1E4 */ s32 pathPointsCount; /* 0x1E8 */ s32 pathId; /* 0x1EC */ s32 unk_1EC; - /* 0x1F0 */ Vec3s limbDrawTbl[PAMERA_LIMB_MAX]; - /* 0x27A */ Vec3s transitionDrawTbl[PAMERA_LIMB_MAX]; + /* 0x1F0 */ Vec3s jointTable[PAMERA_LIMB_MAX]; + /* 0x27A */ Vec3s morphTable[PAMERA_LIMB_MAX]; /* 0x304 */ Vec3s limb9Rot; /* 0x30A */ Vec3s limb8Rot; /* 0x310 */ s16 unk_310; diff --git a/src/overlays/actors/ovl_En_Pametfrog/z_en_pametfrog.c b/src/overlays/actors/ovl_En_Pametfrog/z_en_pametfrog.c index ca90a1fd4..2b8246f34 100644 --- a/src/overlays/actors/ovl_En_Pametfrog/z_en_pametfrog.c +++ b/src/overlays/actors/ovl_En_Pametfrog/z_en_pametfrog.c @@ -207,8 +207,7 @@ void EnPametfrog_Init(Actor* thisx, GlobalContext* globalCtx) { Actor_ProcessInitChain(&this->actor, sInitChain); ActorShape_Init(&this->actor.shape, 0.0f, func_800B3FC0, 55.0f); CollisionCheck_SetInfo(&this->actor.colChkInfo, &sDamageTable, &sColChkInit); - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_0600DF98, &D_0600F990, this->limbDrawTable, - this->transitionDrawTable, 24); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_0600DF98, &D_0600F990, this->jointTable, this->morphTable, 24); Collider_InitAndSetJntSph(globalCtx, &this->collider, &this->actor, &sJntSphInit, this->colElement); this->params = CLAMP(this->actor.params, 1, 4); if (Actor_GetRoomCleared(globalCtx, globalCtx->roomCtx.currRoom.num)) { @@ -336,8 +335,8 @@ s32 func_8086A2CC(EnPametfrog* this, CollisionPoly* floorPoly) { Math3D_CrossProduct(&this->unk_2DC, &floorNorm, &vec2); EnPametfrog_Vec3fNormalize(&vec2); - SysMatrix_InsertRotationAroundUnitVector_f(rotation, &vec2, 0); - SysMatrix_MultiplyVector3fByState(&this->unk_2E8, &vec2); + Matrix_InsertRotationAroundUnitVector_f(rotation, &vec2, 0); + Matrix_MultiplyVector3fByState(&this->unk_2E8, &vec2); Math_Vec3f_Copy(&this->unk_2E8, &vec2); Math3D_CrossProduct(&this->unk_2E8, &floorNorm, &this->unk_2D0); EnPametfrog_Vec3fNormalize(&this->unk_2D0); @@ -398,9 +397,9 @@ void EnPametfrog_PlaceSnapper(EnPametfrog* this, GlobalContext* globalCtx) { } void EnPametfrog_JumpOnGround(EnPametfrog* this, GlobalContext* globalCtx) { - if (func_801378B8(&this->skelAnime, 1.0f)) { + if (Animation_OnFrame(&this->skelAnime, 1.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_FROG_JUMP); - } else if (func_801378B8(&this->skelAnime, 11.0f)) { + } else if (Animation_OnFrame(&this->skelAnime, 11.0f)) { EnPametfrog_JumpWaterEffects(this, globalCtx); Audio_PlayActorSound2(&this->actor, NA_SE_EV_WALK_WATER); } @@ -440,11 +439,11 @@ void EnPametfrog_ApplyStun(EnPametfrog* this) { void EnPametfrog_SetupRearOnSnapper(EnPametfrog* this) { if (this->actionFunc == EnPametfrog_RearOnSnapperRise) { - SkelAnime_ChangeAnimDefaultStop(&this->skelAnime, &D_06005694); + Animation_PlayOnce(&this->skelAnime, &D_06005694); } else if (this->actionFunc == EnPametfrog_RearOnSnapperWave) { - SkelAnime_ChangeAnimDefaultStop(&this->skelAnime, &D_060052EC); + Animation_PlayOnce(&this->skelAnime, &D_060052EC); } else { - SkelAnime_ChangeAnimDefaultStop(&this->skelAnime, &D_06004680); + Animation_PlayOnce(&this->skelAnime, &D_06004680); } this->actor.flags &= ~1; @@ -457,11 +456,11 @@ void EnPametfrog_RearOnSnapper(EnPametfrog* this, GlobalContext* globalCtx) { Vec3f rearingPoint; s32 pad; - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime)) { + if (SkelAnime_Update(&this->skelAnime)) { if (Rand_ZeroOne() < 0.5f) { - SkelAnime_ChangeAnimDefaultStop(&this->skelAnime, &D_06004D50); + Animation_PlayOnce(&this->skelAnime, &D_06004D50); } else { - SkelAnime_ChangeAnimDefaultStop(&this->skelAnime, &D_06004680); + Animation_PlayOnce(&this->skelAnime, &D_06004680); } } @@ -479,13 +478,13 @@ void EnPametfrog_RearOnSnapper(EnPametfrog* this, GlobalContext* globalCtx) { } void EnPametfrog_SetupRearOnSnapperWave(EnPametfrog* this) { - SkelAnime_ChangeAnimDefaultStop(&this->skelAnime, &D_06004894); + Animation_PlayOnce(&this->skelAnime, &D_06004894); this->timer = 15; this->actionFunc = EnPametfrog_RearOnSnapperWave; } void EnPametfrog_RearOnSnapperWave(EnPametfrog* this, GlobalContext* globalCtx) { - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime) && this->timer > 0) { + if (SkelAnime_Update(&this->skelAnime) && this->timer > 0) { this->timer--; if (this->timer == 0) { EnPametfrog_SetupRearOnSnapper(this); @@ -494,7 +493,7 @@ void EnPametfrog_RearOnSnapperWave(EnPametfrog* this, GlobalContext* globalCtx) } void EnPametfrog_SetupRearOnSnapperRise(EnPametfrog* this) { - SkelAnime_ChangeAnimDefaultStop(&this->skelAnime, &D_060050B8); + Animation_PlayOnce(&this->skelAnime, &D_060050B8); this->timer = 10; this->actor.params = GEKKO_REAR_ON_SNAPPER; this->actor.shape.rot.x = 0; @@ -504,7 +503,7 @@ void EnPametfrog_SetupRearOnSnapperRise(EnPametfrog* this) { } void EnPametfrog_RearOnSnapperRise(EnPametfrog* this, GlobalContext* globalCtx) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); this->timer--; if (this->timer == 0) { EnPametfrog_SetupRearOnSnapper(this); @@ -518,7 +517,7 @@ void EnPametfrog_SetupFallOffSnapper(EnPametfrog* this, GlobalContext* globalCtx Vec3f eye; s16 yaw; - SkelAnime_ChangeAnimDefaultStop(&this->skelAnime, &D_06001F20); + Animation_PlayOnce(&this->skelAnime, &D_06001F20); this->actor.params = GEKKO_FALL_OFF_SNAPPER; this->actor.speedXZ = 7.0f; this->actor.velocity.y = 15.0f; @@ -539,7 +538,7 @@ void EnPametfrog_SetupFallOffSnapper(EnPametfrog* this, GlobalContext* globalCtx void EnPametfrog_FallOffSnapper(EnPametfrog* this, GlobalContext* globalCtx) { f32 sin; - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); this->actor.shape.rot.x += 0x800; this->actor.shape.rot.z += 0x1000; if (this->timer != 0) { @@ -555,7 +554,7 @@ void EnPametfrog_FallOffSnapper(EnPametfrog* this, GlobalContext* globalCtx) { } void EnPametfrog_SetupJumpToWall(EnPametfrog* this) { - SkelAnime_ChangeAnim(&this->skelAnime, &D_060039C4, 2.0f, 0.0f, 0.0f, 0, -2.0f); + Animation_Change(&this->skelAnime, &D_060039C4, 2.0f, 0.0f, 0.0f, 0, -2.0f); this->actor.shape.rot.x = 0; this->actor.shape.rot.z = 0; this->actor.bgCheckFlags &= ~8; @@ -564,13 +563,13 @@ void EnPametfrog_SetupJumpToWall(EnPametfrog* this) { } void EnPametfrog_JumpToWall(EnPametfrog* this, GlobalContext* globalCtx) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); EnPametfrog_JumpOnGround(this, globalCtx); if ((this->actor.bgCheckFlags & 1) && (this->actor.bgCheckFlags & 8) && (this->actor.wallBgId == BGCHECK_SCENE) && (COLPOLY_GET_NORMAL(this->actor.wallPoly->normal.y) < 0.5f)) { EnPametfrog_SetupWallCrawl(this); } else if (!(this->actor.bgCheckFlags & 1) || - ((this->skelAnime.animCurrentFrame > 1.0f) && (this->skelAnime.animCurrentFrame < 12.0f))) { + ((this->skelAnime.curFrame > 1.0f) && (this->skelAnime.curFrame < 12.0f))) { this->actor.speedXZ = 12.0f; } else { this->actor.speedXZ = 0.0f; @@ -579,7 +578,7 @@ void EnPametfrog_JumpToWall(EnPametfrog* this, GlobalContext* globalCtx) { void EnPametfrog_SetupWallCrawl(EnPametfrog* this) { if (this->actionFunc == EnPametfrog_JumpToWall) { - SkelAnime_ChangeAnimDefaultRepeat(&this->skelAnime, &D_06001E14); + Animation_PlayLoop(&this->skelAnime, &D_06001E14); this->collider.base.acFlags |= AC_ON; this->unk_2D0.x = 0.0f; this->unk_2D0.z = 0.0f; @@ -599,7 +598,7 @@ void EnPametfrog_SetupWallCrawl(EnPametfrog* this) { this->actor.floorPoly = this->actor.wallPoly; this->wallPauseTimer = 10; } else { - this->skelAnime.animPlaybackSpeed = 1.0f; + this->skelAnime.playSpeed = 1.0f; } Audio_PlayActorSound2(&this->actor, NA_SE_EN_FROG_RUNAWAY); @@ -623,7 +622,7 @@ void EnPametfrog_WallCrawl(EnPametfrog* this, GlobalContext* globalCtx) { if (this->freezeTimer > 0) { this->freezeTimer--; } else { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); this->timer--; this->actor.speedXZ = 8.0f; doubleSpeedXZ = this->actor.speedXZ * 2.0f; @@ -657,7 +656,7 @@ void EnPametfrog_WallCrawl(EnPametfrog* this, GlobalContext* globalCtx) { func_8086A238(this); } - if (func_801378B8(&this->skelAnime, 15.0f)) { + if (Animation_OnFrame(&this->skelAnime, 15.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_BOMCHU_WALK); } @@ -682,7 +681,7 @@ void EnPametfrog_SetupWallPause(EnPametfrog* this) { f32 randFloat; this->actor.speedXZ = 0.0f; - this->skelAnime.animPlaybackSpeed = 1.5f; + this->skelAnime.playSpeed = 1.5f; if (this->timer != 0) { this->wallRotation = this->unk_2E8.y > 0.0f ? (M_PI / 30) : (-M_PI / 30); } else { @@ -700,10 +699,10 @@ void EnPametfrog_WallPause(EnPametfrog* this, GlobalContext* globalCtx) { if (this->freezeTimer > 0) { this->freezeTimer--; } else { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); this->timer--; - SysMatrix_InsertRotationAroundUnitVector_f(this->wallRotation, &this->unk_2DC, 0); - SysMatrix_MultiplyVector3fByState(&this->unk_2D0, &vec); + Matrix_InsertRotationAroundUnitVector_f(this->wallRotation, &this->unk_2DC, 0); + Matrix_MultiplyVector3fByState(&this->unk_2D0, &vec); Math_Vec3f_Copy(&this->unk_2D0, &vec); Math3D_CrossProduct(&this->unk_2DC, &this->unk_2D0, &this->unk_2E8); func_8086A238(this); @@ -720,8 +719,7 @@ void EnPametfrog_WallPause(EnPametfrog* this, GlobalContext* globalCtx) { void EnPametfrog_SetupClimbDownWall(EnPametfrog* this) { s16 yaw; - SkelAnime_ChangeAnim(&this->skelAnime, &D_060039C4, 0.0f, 0.0f, SkelAnime_GetFrameCount(&D_060039C4.common), 2, - 0.0f); + Animation_Change(&this->skelAnime, &D_060039C4, 0.0f, 0.0f, Animation_GetLastFrame(&D_060039C4), 2, 0.0f); this->actor.shape.rot.y = Actor_YawBetweenActors(&this->actor, this->actor.child); this->actor.world.rot.y = this->actor.shape.rot.y; this->actor.shape.rot.x = 0; @@ -755,31 +753,30 @@ void EnPametfrog_ClimbDownWall(EnPametfrog* this, GlobalContext* globalCtx) { } void EnPametfrog_SetupRunToSnapper(EnPametfrog* this) { - SkelAnime_ChangeAnim(&this->skelAnime, &D_060039C4, 2.0f, 0.0f, 0.0f, 0, -2.0f); + Animation_Change(&this->skelAnime, &D_060039C4, 2.0f, 0.0f, 0.0f, 0, -2.0f); this->actor.params = GEKKO_RETURN_TO_SNAPPER; this->actionFunc = EnPametfrog_RunToSnapper; } void EnPametfrog_RunToSnapper(EnPametfrog* this, GlobalContext* globalCtx) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); EnPametfrog_JumpOnGround(this, globalCtx); this->actor.shape.rot.y = Actor_YawBetweenActors(&this->actor, this->actor.child); this->actor.world.rot.y = this->actor.shape.rot.y; - if (!(this->actor.bgCheckFlags & 1) || - ((this->skelAnime.animCurrentFrame > 1.0f) && (this->skelAnime.animCurrentFrame < 12.0f))) { + if (!(this->actor.bgCheckFlags & 1) || ((this->skelAnime.curFrame > 1.0f) && (this->skelAnime.curFrame < 12.0f))) { this->actor.speedXZ = 12.0f; } else { this->actor.speedXZ = 0.0f; } if ((this->actor.child->params == 1) && (Actor_XZDistanceBetweenActors(&this->actor, this->actor.child) < 120.0f) && - func_801378B8(&this->skelAnime, 0.0f)) { + Animation_OnFrame(&this->skelAnime, 0.0f)) { EnPametfrog_SetupJumpOnSnapper(this); } } void EnPametfrog_SetupJumpOnSnapper(EnPametfrog* this) { - SkelAnime_ChangeAnimTransitionStop(&this->skelAnime, &D_06004680, 6.0f); + Animation_MorphToPlayOnce(&this->skelAnime, &D_06004680, 6.0f); this->timer = 6; this->collider.base.ocFlags1 &= ~OC1_ON; this->collider.base.acFlags &= ~AC_ON; @@ -796,7 +793,7 @@ void EnPametfrog_JumpOnSnapper(EnPametfrog* this, GlobalContext* globalCtx) { f32 temp_f0; EnBigpamet* bigpamet; - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); this->timer--; if (this->timer == 0) { EnPametfrog_SetupLandOnSnapper(this); @@ -811,14 +808,14 @@ void EnPametfrog_JumpOnSnapper(EnPametfrog* this, GlobalContext* globalCtx) { } void EnPametfrog_SetupLandOnSnapper(EnPametfrog* this) { - SkelAnime_ChangeAnimDefaultStop(&this->skelAnime, &D_06000994); + Animation_PlayOnce(&this->skelAnime, &D_06000994); this->actor.shape.rot.y = this->actor.child->shape.rot.y; this->actor.params = GEKKO_ON_SNAPPER; this->actionFunc = EnPametfrog_LandOnSnapper; } void EnPametfrog_LandOnSnapper(EnPametfrog* this, GlobalContext* globalCtx) { - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime)) { + if (SkelAnime_Update(&this->skelAnime)) { EnPametfrog_StopCutscene(this, globalCtx); EnPametfrog_SetupRearOnSnapper(this); } @@ -829,7 +826,7 @@ void EnPametfrog_SetupFallInAir(EnPametfrog* this, GlobalContext* globalCtx) { Vec3f eye; f32 xzDist; - SkelAnime_ChangeAnimDefaultStop(&this->skelAnime, &D_06001F20); + Animation_PlayOnce(&this->skelAnime, &D_06001F20); if (this->actor.colChkInfo.health > 0) { this->actor.params = GEKKO_RETURN_TO_SNAPPER; } @@ -868,7 +865,7 @@ void EnPametfrog_SetupFallInAir(EnPametfrog* this, GlobalContext* globalCtx) { } void EnPametfrog_FallInAir(EnPametfrog* this, GlobalContext* globalCtx) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); this->actor.colorFilterTimer = 0x10; if (this->timer > 0) { this->timer--; @@ -890,7 +887,7 @@ void EnPametfrog_FallInAir(EnPametfrog* this, GlobalContext* globalCtx) { } void EnPametfrog_SetupFallOnGround(EnPametfrog* this, GlobalContext* globalCtx) { - SkelAnime_ChangeAnimDefaultStop(&this->skelAnime, &D_06004298); + Animation_PlayOnce(&this->skelAnime, &D_06004298); this->actor.shape.rot.x = 0; this->actor.shape.rot.y += this->spinYaw; this->actor.shape.rot.z = 0; @@ -903,15 +900,15 @@ void EnPametfrog_SetupFallOnGround(EnPametfrog* this, GlobalContext* globalCtx) } void EnPametfrog_FallOnGround(EnPametfrog* this, GlobalContext* globalCtx) { - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime)) { - if (this->skelAnime.animCurrentSeg == &D_06004298) { + if (SkelAnime_Update(&this->skelAnime)) { + if (this->skelAnime.animation == &D_06004298) { if (this->actor.colChkInfo.health == 0) { this->timer--; if (this->timer == 0) { EnPametfrog_SetupDefeatGekko(this, globalCtx); } } else { - SkelAnime_ChangeAnimDefaultStop(&this->skelAnime, &D_060030E4); + Animation_PlayOnce(&this->skelAnime, &D_060030E4); } } else { EnPametfrog_SetupRunToSnapper(this); @@ -1044,7 +1041,7 @@ void EnPametfrog_PlayCutscene(EnPametfrog* this, GlobalContext* globalCtx) { } void EnPametfrog_SetupLookAround(EnPametfrog* this) { - SkelAnime_ChangeAnimDefaultStop(&this->skelAnime, &D_060066B4); + Animation_PlayOnce(&this->skelAnime, &D_060066B4); this->collider.base.atFlags &= ~AT_ON; this->actor.speedXZ = 0.0f; this->actor.world.rot.y = this->actor.shape.rot.y; @@ -1055,7 +1052,7 @@ void EnPametfrog_LookAround(EnPametfrog* this, GlobalContext* globalCtx) { EnPametfrog_IdleWaterEffects(this, globalCtx); Math_SmoothStepToS(&this->actor.world.rot.y, this->actor.yawTowardsPlayer, 5, 0x400, 0x80); this->actor.shape.rot.y = this->actor.world.rot.y; - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime) && (func_801690CC(globalCtx) == 0)) { + if (SkelAnime_Update(&this->skelAnime) && (func_801690CC(globalCtx) == 0)) { if (!this->unk_2AE) { func_801A2E54(0x38); this->unk_2AE = true; @@ -1065,7 +1062,7 @@ void EnPametfrog_LookAround(EnPametfrog* this, GlobalContext* globalCtx) { } void EnPametfrog_SetupJumpToLink(EnPametfrog* this) { - SkelAnime_ChangeAnimDefaultRepeat(&this->skelAnime, &D_060039C4); + Animation_PlayLoop(&this->skelAnime, &D_060039C4); this->collider.base.acFlags |= AC_ON; this->actor.world.rot.y = this->actor.shape.rot.y; this->actionFunc = EnPametfrog_JumpToLink; @@ -1074,10 +1071,9 @@ void EnPametfrog_SetupJumpToLink(EnPametfrog* this) { void EnPametfrog_JumpToLink(EnPametfrog* this, GlobalContext* globalCtx) { Math_SmoothStepToS(&this->actor.world.rot.y, this->actor.yawTowardsPlayer, 5, 0x1000, 0x80); this->actor.shape.rot.y = this->actor.world.rot.y; - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); EnPametfrog_JumpOnGround(this, globalCtx); - if (!(this->actor.bgCheckFlags & 1) || - (this->skelAnime.animCurrentFrame > 1.0f && this->skelAnime.animCurrentFrame < 12.0f)) { + if (!(this->actor.bgCheckFlags & 1) || (this->skelAnime.curFrame > 1.0f && this->skelAnime.curFrame < 12.0f)) { this->actor.speedXZ = 8.0f; } else { this->actor.speedXZ = 0.0f; @@ -1085,13 +1081,13 @@ void EnPametfrog_JumpToLink(EnPametfrog* this, GlobalContext* globalCtx) { if ((this->collider.base.ocFlags1 & OC1_HIT) && (this->collider.base.ocFlags2 & OC2_HIT_PLAYER) && Actor_IsActorFacingLink(&this->actor, 0x3000) && - (this->skelAnime.animCurrentFrame <= 2.0f || this->skelAnime.animCurrentFrame >= 11.0f)) { + (this->skelAnime.curFrame <= 2.0f || this->skelAnime.curFrame >= 11.0f)) { EnPametfrog_SetupMeleeAttack(this); } } void EnPametfrog_SetupMeleeAttack(EnPametfrog* this) { - SkelAnime_ChangeAnimDefaultStop(&this->skelAnime, &D_0600F990); + Animation_PlayOnce(&this->skelAnime, &D_0600F990); this->timer = 7; this->actor.speedXZ = 0.0f; this->actionFunc = EnPametfrog_MeleeAttack; @@ -1106,23 +1102,23 @@ static AnimationHeader* sAttackAnimations[] = { void EnPametfrog_MeleeAttack(EnPametfrog* this, GlobalContext* globalCtx) { EnPametfrog_IdleWaterEffects(this, globalCtx); - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime)) { + if (SkelAnime_Update(&this->skelAnime)) { this->timer--; if (this->timer == 0) { EnPametfrog_SetupLookAround(this); } else if (this->timer == 6) { - SkelAnime_ChangeAnimDefaultStop(&this->skelAnime, &D_0600F990); + Animation_PlayOnce(&this->skelAnime, &D_0600F990); } else { - SkelAnime_ChangeAnimDefaultStop(&this->skelAnime, sAttackAnimations[(s32)Rand_ZeroFloat(4.0f) % 4]); + Animation_PlayOnce(&this->skelAnime, sAttackAnimations[(s32)Rand_ZeroFloat(4.0f) % 4]); } } - if ((this->skelAnime.animCurrentSeg == &D_0600347C && func_801378B8(&this->skelAnime, 2.0f)) || - (this->skelAnime.animCurrentSeg == &D_060070C4 && func_801378B8(&this->skelAnime, 9.0f)) || - (this->skelAnime.animCurrentSeg == &D_06003F28 && func_801378B8(&this->skelAnime, 2.0f)) || - ((this->skelAnime.animCurrentSeg == &D_0600F048) && func_801378B8(&this->skelAnime, 27.0f))) { + if ((this->skelAnime.animation == &D_0600347C && Animation_OnFrame(&this->skelAnime, 2.0f)) || + (this->skelAnime.animation == &D_060070C4 && Animation_OnFrame(&this->skelAnime, 9.0f)) || + (this->skelAnime.animation == &D_06003F28 && Animation_OnFrame(&this->skelAnime, 2.0f)) || + ((this->skelAnime.animation == &D_0600F048) && Animation_OnFrame(&this->skelAnime, 27.0f))) { this->collider.base.atFlags |= AT_ON; - if (this->skelAnime.animCurrentSeg == &D_06003F28) { + if (this->skelAnime.animation == &D_06003F28) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_FROG_KICK); } else { Audio_PlayActorSound2(&this->actor, NA_SE_EN_FROG_PUNCH1); @@ -1133,7 +1129,7 @@ void EnPametfrog_MeleeAttack(EnPametfrog* this, GlobalContext* globalCtx) { } void EnPametfrog_SetupDamage(EnPametfrog* this) { - SkelAnime_ChangeAnimTransitionStop(&this->skelAnime, &D_06005D54, -3.0f); + Animation_MorphToPlayOnce(&this->skelAnime, &D_06005D54, -3.0f); this->timer = 20; this->collider.base.atFlags &= ~AT_ON; this->collider.base.acFlags &= ~AC_ON; @@ -1146,7 +1142,7 @@ void EnPametfrog_SetupDamage(EnPametfrog* this) { } void EnPametfrog_Damage(EnPametfrog* this, GlobalContext* globalCtx) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); this->timer--; Math_StepToF(&this->actor.speedXZ, 0.0f, 0.5f); if (this->timer == 0) { @@ -1159,9 +1155,9 @@ void EnPametfrog_Damage(EnPametfrog* this, GlobalContext* globalCtx) { } void EnPametfrog_SetupStun(EnPametfrog* this) { - if (this->skelAnime.animCurrentSeg == &D_060039C4) { - this->skelAnime.animCurrentFrame = 0.0f; - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + if (this->skelAnime.animation == &D_060039C4) { + this->skelAnime.curFrame = 0.0f; + SkelAnime_Update(&this->skelAnime); } this->collider.base.atFlags &= ~AT_ON; @@ -1191,7 +1187,7 @@ void EnPametfrog_SetupCallSnapper(EnPametfrog* this, GlobalContext* globalCtx) { Vec3f at; s16 yawDiff; - SkelAnime_ChangeAnimTransitionStop(&this->skelAnime, &D_06001B08, 3.0f); + Animation_MorphToPlayOnce(&this->skelAnime, &D_06001B08, 3.0f); Audio_PlayActorSound2(&this->actor, NA_SE_EN_FROG_GREET); this->actor.flags &= ~1; this->actor.colChkInfo.health = 6; @@ -1219,7 +1215,7 @@ void EnPametfrog_SetupCallSnapper(EnPametfrog* this, GlobalContext* globalCtx) { } void EnPametfrog_CallSnapper(EnPametfrog* this, GlobalContext* globalCtx) { - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime)) { + if (SkelAnime_Update(&this->skelAnime)) { EnPametfrog_SetupSnapperSpawn(this, globalCtx); } } @@ -1408,16 +1404,16 @@ static s8 limbPosIndex[] = { -1, -1, 0, -1, 1, -1, 2, -1, 3, -1, 4, -1, 5, 6, -1, 7, 8, 9, -1, 10, -1, 11, -1, -1, }; -void EnPametfrog_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) { - EnPametfrog* this = THIS; +void EnPametfrog_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* arg) { + EnPametfrog* this = (EnPametfrog*)arg; Vec3f vec; Vec3s* center; s8 index; if (limbIndex == GEKKO_LIMB_HEAD) { - SysMatrix_GetStateTranslation(&this->actor.focus.pos); + Matrix_GetStateTranslation(&this->actor.focus.pos); this->actor.focus.rot.y = this->actor.shape.rot.y; - SysMatrix_GetStateTranslationAndScaledY(2500.0f, &vec); + Matrix_GetStateTranslationAndScaledY(2500.0f, &vec); center = &this->collider.elements[0].dim.worldSphere.center; center->x = vec.x; center->y = vec.y; @@ -1430,7 +1426,7 @@ void EnPametfrog_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dLi index = limbPosIndex[limbIndex]; if (index != -1) { - SysMatrix_GetStateTranslation(&this->limbPos[index]); + Matrix_GetStateTranslation(&this->limbPos[index]); } } @@ -1439,8 +1435,8 @@ void EnPametfrog_Draw(Actor* thisx, GlobalContext* globalCtx) { func_8012C28C(globalCtx->state.gfxCtx); Matrix_RotateY(this->spinYaw, MTXMODE_APPLY); - SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, NULL, - EnPametfrog_PostLimbDraw, &this->actor); + SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, + NULL, EnPametfrog_PostLimbDraw, &this->actor); func_800BE680(globalCtx, &this->actor, this->limbPos, ARRAY_COUNT(this->limbPos), this->unk_2C8, this->unk_2CC, this->unk_2C4, this->drawEffect); } diff --git a/src/overlays/actors/ovl_En_Pametfrog/z_en_pametfrog.h b/src/overlays/actors/ovl_En_Pametfrog/z_en_pametfrog.h index 58b8dcf4b..f00acecb5 100644 --- a/src/overlays/actors/ovl_En_Pametfrog/z_en_pametfrog.h +++ b/src/overlays/actors/ovl_En_Pametfrog/z_en_pametfrog.h @@ -58,8 +58,8 @@ typedef enum { typedef struct EnPametfrog { /* 0x000 */ Actor actor; /* 0x144 */ SkelAnime skelAnime; - /* 0x188 */ Vec3s limbDrawTable[GEKKO_LIMB_MAX]; - /* 0x218 */ Vec3s transitionDrawTable[GEKKO_LIMB_MAX]; + /* 0x188 */ Vec3s jointTable[GEKKO_LIMB_MAX]; + /* 0x218 */ Vec3s morphTable[GEKKO_LIMB_MAX]; /* 0x2A8 */ EnPametfrogActionFunc actionFunc; /* 0x2AC */ u8 drawEffect; /* 0x2AD */ u8 wallPauseTimer; // Gekko stops 10 times along wall/ceiling after being blown off of Snapper diff --git a/src/overlays/actors/ovl_En_Po_Fusen/z_en_po_fusen.c b/src/overlays/actors/ovl_En_Po_Fusen/z_en_po_fusen.c index b4d540fe7..c578e3d37 100644 --- a/src/overlays/actors/ovl_En_Po_Fusen/z_en_po_fusen.c +++ b/src/overlays/actors/ovl_En_Po_Fusen/z_en_po_fusen.c @@ -26,7 +26,7 @@ void EnPoFusen_Pop(EnPoFusen* this, GlobalContext* globalCtx); void EnPoFusen_Idle(EnPoFusen* this, GlobalContext* globalCtx); void EnPoFusen_IdleFuse(EnPoFusen* this, GlobalContext* globalCtx); s32 EnPoFusen_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, - struct Actor* actor); + Actor* arg); extern AnimationHeader D_06000040; extern FlexSkeletonHeader D_060024F0; @@ -111,7 +111,7 @@ void EnPoFusen_Init(Actor* thisx, GlobalContext* globalCtx) { if (0) {} this->collider.dim.worldSphere.radius = 40; - SkelAnime_InitSV(globalCtx, &this->anime, &D_060024F0, &D_06000040, this->limbDrawTbl, this->transitionDrawTbl, 10); + SkelAnime_InitFlex(globalCtx, &this->anime, &D_060024F0, &D_06000040, this->jointTable, this->morphTable, 10); ActorShape_Init(&this->actor.shape, 0.0f, func_800B3FC0, 25.0f); Actor_UpdateBgCheckInfo(globalCtx, &this->actor, 0.0f, 0.0f, 0.0f, 0x4); @@ -271,8 +271,8 @@ void EnPoFusen_Update(Actor* thisx, GlobalContext* globalCtx) { } s32 EnPoFusen_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, - struct Actor* actor) { - EnPoFusen* this = (EnPoFusen*)actor; + Actor* arg) { + EnPoFusen* this = (EnPoFusen*)arg; f32 zScale; f32 yScale; f32 xScale; @@ -289,10 +289,10 @@ s32 EnPoFusen_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dL yScale = yScale * yScale; xRot = ((Math_SinS(this->randXZRotChange) * 2730.0f)); zRot = ((Math_CosS(this->randXZRotChange) * 2730.0f)); - SysMatrix_InsertRotation(xRot, 0, zRot, 1); - Matrix_Scale(xScale, yScale, zScale, 1); - SysMatrix_InsertZRotation_s(-zRot, 1); - SysMatrix_InsertXRotation_s(-xRot, 1); + Matrix_InsertRotation(xRot, 0, zRot, MTXMODE_APPLY); + Matrix_Scale(xScale, yScale, zScale, MTXMODE_APPLY); + Matrix_InsertZRotation_s(-zRot, MTXMODE_APPLY); + Matrix_InsertXRotation_s(-xRot, MTXMODE_APPLY); } else if (limbIndex == 3) { rot->y += this->limb3Rot; } else if (limbIndex == 6) { @@ -310,15 +310,15 @@ s32 EnPoFusen_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dL return 0; } -void EnPoFusen_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* actor) { +void EnPoFusen_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* arg) { } -void EnPoFusen_UnkActorDraw(GlobalContext* globalCtx, s32 limbIndex, Actor* actor) { +void EnPoFusen_UnkActorDraw(GlobalContext* globalCtx, s32 limbIndex, Actor* thisx) { } void EnPoFusen_Draw(Actor* thisx, GlobalContext* globalCtx) { EnPoFusen* this = THIS; func_8012C28C(globalCtx->state.gfxCtx); - func_801343C0(globalCtx, this->anime.skeleton, this->anime.limbDrawTbl, this->anime.dListCount, + func_801343C0(globalCtx, this->anime.skeleton, this->anime.jointTable, this->anime.dListCount, EnPoFusen_OverrideLimbDraw, EnPoFusen_PostLimbDraw, EnPoFusen_UnkActorDraw, &this->actor); } diff --git a/src/overlays/actors/ovl_En_Po_Fusen/z_en_po_fusen.h b/src/overlays/actors/ovl_En_Po_Fusen/z_en_po_fusen.h index b19cc01f9..5a879ddb1 100644 --- a/src/overlays/actors/ovl_En_Po_Fusen/z_en_po_fusen.h +++ b/src/overlays/actors/ovl_En_Po_Fusen/z_en_po_fusen.h @@ -12,8 +12,8 @@ typedef struct EnPoFusen { /* 0x144 */ SkelAnime anime; /* 0x188 */ EnPoFusenActionFunc actionFunc; /* 0x18C */ ColliderSphere collider; - /* 0x1E4 */ Vec3s limbDrawTbl[0xA]; - /* 0x220 */ Vec3s transitionDrawTbl[0xA]; + /* 0x1E4 */ Vec3s jointTable[0xA]; + /* 0x220 */ Vec3s morphTable[0xA]; /* 0x25C */ s16 randScaleChange; /* 0x25E */ s16 randXZRotChange; /* 0x260 */ s16 randYRotChange; diff --git a/src/overlays/actors/ovl_En_Poh/z_en_poh.c b/src/overlays/actors/ovl_En_Poh/z_en_poh.c index ace41a2ba..bddd970b9 100644 --- a/src/overlays/actors/ovl_En_Poh/z_en_poh.c +++ b/src/overlays/actors/ovl_En_Poh/z_en_poh.c @@ -222,15 +222,15 @@ void func_80B2C9B8(EnPoh* this, GlobalContext* globalCtx) { } void func_80B2CA4C(EnPoh* this) { - SkelAnime_ChangeAnimDefaultRepeat(&this->skelAnime, &D_060015B0); + Animation_PlayLoop(&this->skelAnime, &D_060015B0); this->unk_18E = Rand_S16Offset(2, 3); this->actionFunc = func_80B2CAA4; this->actor.speedXZ = 0.0f; } void func_80B2CAA4(EnPoh* this, GlobalContext* globalCtx) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); - if (func_801378B8(&this->skelAnime, 0.0f) && (this->unk_18E != 0)) { + SkelAnime_Update(&this->skelAnime); + if (Animation_OnFrame(&this->skelAnime, 0.0f) && (this->unk_18E != 0)) { this->unk_18E--; } @@ -248,16 +248,16 @@ void func_80B2CAA4(EnPoh* this, GlobalContext* globalCtx) { } void func_80B2CB60(EnPoh* this) { - SkelAnime_ChangeAnimDefaultRepeat(&this->skelAnime, &D_06000A60); + Animation_PlayLoop(&this->skelAnime, &D_06000A60); this->unk_18E = Rand_S16Offset(15, 3); this->colliderCylinder.base.acFlags |= AC_ON; this->actionFunc = func_80B2CBBC; } void func_80B2CBBC(EnPoh* this, GlobalContext* globalCtx) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); Math_StepToF(&this->actor.speedXZ, 1.0f, 0.2f); - if (func_801378B8(&this->skelAnime, 0.0f) && (this->unk_18E != 0)) { + if (Animation_OnFrame(&this->skelAnime, 0.0f) && (this->unk_18E != 0)) { this->unk_18E--; } @@ -283,7 +283,7 @@ void func_80B2CBBC(EnPoh* this, GlobalContext* globalCtx) { } void func_80B2CD14(EnPoh* this) { - SkelAnime_ChangeAnimDefaultRepeat(&this->skelAnime, &D_06000A60); + Animation_PlayLoop(&this->skelAnime, &D_06000A60); this->actionFunc = func_80B2CD64; this->unk_18E = 0; this->actor.speedXZ = 2.0f; @@ -293,7 +293,7 @@ void func_80B2CD64(EnPoh* this, GlobalContext* globalCtx) { Player* player = GET_PLAYER(globalCtx); s16 yawDiff; - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); if (this->unk_18E != 0) { this->unk_18E--; } @@ -322,7 +322,7 @@ void func_80B2CD64(EnPoh* this, GlobalContext* globalCtx) { } void func_80B2CEC8(EnPoh* this) { - SkelAnime_ChangeAnimTransitionRepeat(&this->skelAnime, &D_060001A8, -6.0f); + Animation_MorphToLoop(&this->skelAnime, &D_060001A8, -6.0f); this->unk_18E = 12; this->actor.speedXZ = 0.0f; Audio_PlayActorSound2(&this->actor, NA_SE_EN_PO_LAUGH); @@ -330,8 +330,8 @@ void func_80B2CEC8(EnPoh* this) { } void func_80B2CF28(EnPoh* this, GlobalContext* globalCtx) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); - if (func_801378B8(&this->skelAnime, 0.0f)) { + SkelAnime_Update(&this->skelAnime); + if (Animation_OnFrame(&this->skelAnime, 0.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_PO_KANTERA); if (this->unk_18E != 0) { this->unk_18E--; @@ -343,7 +343,7 @@ void func_80B2CF28(EnPoh* this, GlobalContext* globalCtx) { Math_ScaledStepToS(&this->actor.world.rot.y, this->actor.yawTowardsPlayer, 0xAAA); } else if (this->unk_18E == 9) { this->actor.speedXZ = 5.0f; - this->skelAnime.animPlaybackSpeed = 2.0f; + this->skelAnime.playSpeed = 2.0f; } else if (this->unk_18E == 0) { func_80B2CB60(this); this->unk_18E = 0x17; @@ -351,7 +351,7 @@ void func_80B2CF28(EnPoh* this, GlobalContext* globalCtx) { } void func_80B2CFF8(EnPoh* this) { - SkelAnime_ChangeAnimTransitionStop(&this->skelAnime, &D_060004EC, -6.0f); + Animation_MorphToPlayOnce(&this->skelAnime, &D_060004EC, -6.0f); func_800BE504(&this->actor, &this->colliderCylinder); this->colliderCylinder.base.acFlags &= ~AC_ON; this->actor.speedXZ = 5.0f; @@ -361,7 +361,7 @@ void func_80B2CFF8(EnPoh* this) { void func_80B2D07C(EnPoh* this, GlobalContext* globalCtx) { Math_StepToF(&this->actor.speedXZ, 0.0f, 0.5f); - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime)) { + if (SkelAnime_Update(&this->skelAnime)) { if (this->actor.colChkInfo.health != 0) { func_80B2DAD0(this); } else { @@ -373,23 +373,23 @@ void func_80B2D07C(EnPoh* this, GlobalContext* globalCtx) { void func_80B2D0E8(EnPoh* this) { this->unk_197 = 0; this->actor.flags &= ~1; - SkelAnime_ChangeAnimPlaybackStop(&this->skelAnime, &D_060011C4, 0.0f); + Animation_PlayOnceSetSpeed(&this->skelAnime, &D_060011C4, 0.0f); this->actionFunc = func_80B2D140; } void func_80B2D140(EnPoh* this, GlobalContext* globalCtx) { - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime)) { + if (SkelAnime_Update(&this->skelAnime)) { this->unk_197 = 255; this->unk_190 = Rand_S16Offset(700, 300); this->actor.flags |= 1; func_80B2CB60(this); - } else if (this->skelAnime.animCurrentFrame > 10.0f) { - this->unk_197 = (this->skelAnime.animCurrentFrame - 10.0f) * 0.05f * 255.0f; + } else if (this->skelAnime.curFrame > 10.0f) { + this->unk_197 = (this->skelAnime.curFrame - 10.0f) * 0.05f * 255.0f; } - if ((this->skelAnime.animPlaybackSpeed < 0.5f) && (this->actor.xzDistToPlayer < 280.0f)) { + if ((this->skelAnime.playSpeed < 0.5f) && (this->actor.xzDistToPlayer < 280.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_STALKIDS_APPEAR); - this->skelAnime.animPlaybackSpeed = 1.0f; + this->skelAnime.playSpeed = 1.0f; } } @@ -452,13 +452,13 @@ void func_80B2D300(EnPoh* this, GlobalContext* globalCtx) { } void func_80B2D5DC(EnPoh* this) { - SkelAnime_ChangeAnimDefaultStop(&this->skelAnime, &D_06000A60); + Animation_PlayOnce(&this->skelAnime, &D_06000A60); this->actionFunc = func_80B2D628; this->actor.speedXZ = -5.0f; } void func_80B2D628(EnPoh* this, GlobalContext* globalCtx) { - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime)) { + if (SkelAnime_Update(&this->skelAnime)) { this->actor.world.rot.y = this->actor.shape.rot.y; func_80B2CB60(this); this->unk_18E = 23; @@ -469,14 +469,14 @@ void func_80B2D628(EnPoh* this, GlobalContext* globalCtx) { } void func_80B2D694(EnPoh* this) { - SkelAnime_ChangeAnimDefaultRepeat(&this->skelAnime, &D_060015B0); + Animation_PlayLoop(&this->skelAnime, &D_060015B0); this->unk_192 = BINANG_ROT180(this->actor.world.rot.y); this->actionFunc = func_80B2D6EC; this->actor.speedXZ = 0.0f; } void func_80B2D6EC(EnPoh* this, GlobalContext* globalCtx) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); if (Math_ScaledStepToS(&this->actor.world.rot.y, this->unk_192, 0x71C)) { func_80B2CB60(this); } @@ -547,7 +547,7 @@ void func_80B2D980(EnPoh* this, GlobalContext* globalCtx) { } void func_80B2DAD0(EnPoh* this) { - SkelAnime_ChangeAnimTransitionRepeat(&this->skelAnime, &D_060006E0, -5.0f); + Animation_MorphToLoop(&this->skelAnime, &D_060006E0, -5.0f); this->actor.speedXZ = 5.0f; this->actor.world.rot.y = BINANG_ROT180(this->actor.shape.rot.y); this->colliderCylinder.base.acFlags |= AC_ON; @@ -558,7 +558,7 @@ void func_80B2DAD0(EnPoh* this) { void func_80B2DB44(EnPoh* this, GlobalContext* globalCtx) { f32 sp24; - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); sp24 = Math_SinS(this->unk_18D * 0x800) * 3.0f; this->actor.world.pos.x -= sp24 * Math_CosS(this->actor.shape.rot.y); this->actor.world.pos.z += sp24 * Math_SinS(this->actor.shape.rot.y); @@ -791,9 +791,9 @@ void func_80B2E6C0(EnPoh* this) { } void func_80B2E8E0(EnPoh* this) { - if ((this->actionFunc == func_80B2D140) && (this->skelAnime.animCurrentFrame < 12.0f)) { - this->unk_198 = this->unk_199 = this->unk_19A = (this->skelAnime.animCurrentFrame * 16.66f) + 55.0f; - this->unk_19B = this->skelAnime.animCurrentFrame * 16.666666f; + if ((this->actionFunc == func_80B2D140) && (this->skelAnime.curFrame < 12.0f)) { + this->unk_198 = this->unk_199 = this->unk_19A = (this->skelAnime.curFrame * 16.66f) + 55.0f; + this->unk_19B = this->skelAnime.curFrame * 16.666666f; } else { f32 rand = Rand_ZeroOne(); @@ -895,7 +895,7 @@ void EnPoh_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Ve if ((this->actionFunc == func_80B2D300) && (this->unk_18E >= 19) && (this->actor.scale.x != 0.0f)) { Matrix_Scale(0.01f / this->actor.scale.x, 0.01f / this->actor.scale.x, 0.01f / this->actor.scale.x, 1); } - SysMatrix_CopyCurrentState(&this->unk_3D8); + Matrix_CopyCurrentState(&this->unk_3D8); func_80B2C910(&sp60, globalCtx); Lights_PointGlowSetInfo(&this->lightInfo, this->colliderSph.elements[0].dim.worldSphere.center.x + (s32)sp60.x, this->colliderSph.elements[0].dim.worldSphere.center.y + (s32)sp60.y, @@ -906,19 +906,19 @@ void EnPoh_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Ve temp_s3 = D_80B2F71C[limbIndex]; if (temp_s3 != -1) { if (temp_s3 < 4) { - SysMatrix_GetStateTranslation(&this->unk_2A0[temp_s3]); + Matrix_GetStateTranslation(&this->unk_2A0[temp_s3]); } else if (temp_s3 == 4) { - SysMatrix_GetStateTranslationAndScaledX(2000.0f, &this->unk_2A0[temp_s3]); + Matrix_GetStateTranslationAndScaledX(2000.0f, &this->unk_2A0[temp_s3]); } else { s32 i; Vec3f* vec = &this->unk_2A0[temp_s3 + 2]; Vec3f* vec2 = &D_80B2F734[0]; - SysMatrix_GetStateTranslationAndScaledX(-2000.0f, &this->unk_2A0[temp_s3]); - SysMatrix_GetStateTranslationAndScaledY(-2000.0f, &this->unk_2A0[temp_s3 + 1]); + Matrix_GetStateTranslationAndScaledX(-2000.0f, &this->unk_2A0[temp_s3]); + Matrix_GetStateTranslationAndScaledY(-2000.0f, &this->unk_2A0[temp_s3 + 1]); for (i = temp_s3 + 2; i < ARRAY_COUNT(this->unk_2A0); i++, vec++, vec2++) { - SysMatrix_MultiplyVector3fByState(vec2, vec); + Matrix_MultiplyVector3fByState(vec2, vec); } } } @@ -938,8 +938,8 @@ void EnPoh_Draw(Actor* thisx, GlobalContext* globalCtx) { gDPSetEnvColor(&gfx[1], this->unk_194, this->unk_195, this->unk_196, this->unk_197); gSPSegment(&gfx[2], 0x08, D_801AEFA0); - gfx = SkelAnime_Draw2(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, EnPoh_OverrideLimbDraw, - EnPoh_PostLimbDraw, &this->actor, &gfx[3]); + gfx = SkelAnime_Draw(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, EnPoh_OverrideLimbDraw, + EnPoh_PostLimbDraw, &this->actor, &gfx[3]); POLY_OPA_DISP = gfx; } else { @@ -949,8 +949,8 @@ void EnPoh_Draw(Actor* thisx, GlobalContext* globalCtx) { gDPSetEnvColor(&gfx[1], 255, 255, 255, this->unk_197); gSPSegment(&gfx[2], 0x08, D_801AEF88); - POLY_XLU_DISP = SkelAnime_Draw2(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, - EnPoh_OverrideLimbDraw, EnPoh_PostLimbDraw, &this->actor, &gfx[3]); + POLY_XLU_DISP = SkelAnime_Draw(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, + EnPoh_OverrideLimbDraw, EnPoh_PostLimbDraw, &this->actor, &gfx[3]); gfx = POLY_OPA_DISP; gSPDisplayList(gfx++, &sSetupDL[6 * 25]); @@ -959,7 +959,7 @@ void EnPoh_Draw(Actor* thisx, GlobalContext* globalCtx) { gDPPipeSync(&gfx[0]); gDPSetEnvColor(&gfx[1], this->unk_198, this->unk_199, this->unk_19A, 255); - SysMatrix_SetCurrentState(&this->unk_3D8); + Matrix_SetCurrentState(&this->unk_3D8); gSPMatrix(&gfx[2], Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(&gfx[3], D_06002D28); @@ -1013,8 +1013,7 @@ void func_80B2F37C(Actor* thisx, GlobalContext* globalCtx) { gDPSetPrimColor(POLY_XLU_DISP++, 0x80, 0x80, 255, 170, 255, this->unk_197); gDPSetEnvColor(POLY_XLU_DISP++, this->unk_194, this->unk_195, this->unk_196, 255); - SysMatrix_InsertYRotation_f((func_800DFCDC(GET_ACTIVE_CAM(globalCtx)) + 0x8000) * (M_PI / 32768), - MTXMODE_APPLY); + Matrix_InsertYRotation_f((func_800DFCDC(GET_ACTIVE_CAM(globalCtx)) + 0x8000) * (M_PI / 32768), MTXMODE_APPLY); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_XLU_DISP++, D_06003850); diff --git a/src/overlays/actors/ovl_En_Railgibud/z_en_railgibud.c b/src/overlays/actors/ovl_En_Railgibud/z_en_railgibud.c index 8105dfb66..5f9fe203a 100644 --- a/src/overlays/actors/ovl_En_Railgibud/z_en_railgibud.c +++ b/src/overlays/actors/ovl_En_Railgibud/z_en_railgibud.c @@ -220,7 +220,7 @@ void EnRailgibud_Init(Actor* thisx, GlobalContext* globalCtx) { } ActorShape_Init(&this->actor.shape, 0.0f, func_800B3FC0, 28.0f); - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_060053E8, &D_0600ABE0, this->jointTable, this->morphTable, 26); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_060053E8, &D_0600ABE0, this->jointTable, this->morphTable, 26); Collider_InitCylinder(globalCtx, &this->collider); Collider_SetCylinder(globalCtx, &this->collider, &this->actor, &sCylinderInit); CollisionCheck_SetInfo2(&this->actor.colChkInfo, &sDamageTable, &sColChkInfoInit); @@ -354,7 +354,7 @@ void func_80BA5B64(EnRailgibud* this, GlobalContext* globalCtx) { this->unk_3F4--; } - if (func_801378B8(&this->skelAnime, 10.0f) || func_801378B8(&this->skelAnime, 22.0f)) { + if (Animation_OnFrame(&this->skelAnime, 10.0f) || Animation_OnFrame(&this->skelAnime, 22.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_RIZA_WALK); } else if ((globalCtx->gameplayFrames & 95) == 0) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_REDEAD_CRY); @@ -378,7 +378,7 @@ void func_80BA5E18(EnRailgibud* this, GlobalContext* globalCtx) { switch (this->unk_3F0) { case 0: sp34 = func_80BA7088(this, globalCtx); - if (func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount) && (sp34 == 1)) { + if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame) && (sp34 == 1)) { this->unk_3F0 = 1; func_800BDC5C(&this->skelAnime, sAnimations, 0); } else if (!(player->stateFlags2 & 0x80)) { @@ -402,7 +402,7 @@ void func_80BA5E18(EnRailgibud* this, GlobalContext* globalCtx) { this->unk_3F2++; } - if (func_801378B8(&this->skelAnime, 0.0f)) { + if (Animation_OnFrame(&this->skelAnime, 0.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_REDEAD_ATTACK); } @@ -419,7 +419,7 @@ void func_80BA5E18(EnRailgibud* this, GlobalContext* globalCtx) { break; case 2: - if (func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { + if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { this->unk_3F4 = 40; this->actor.shape.yOffset = 0.0f; func_80BA5AF0(this); @@ -445,7 +445,7 @@ void func_80BA60B0(EnRailgibud* this, GlobalContext* globalCtx) { this->actor.world.rot.y = this->actor.yawTowardsPlayer; Math_SmoothStepToS(&this->unk_3E2, 0, 1, 0x12C, 0); Math_SmoothStepToS(&this->unk_3E8, 0, 1, 0x12C, 0); - if (func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { + if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { this->actor.world.rot.y = this->actor.shape.rot.y; func_80BA6158(this); } @@ -516,12 +516,12 @@ void func_80BA64AC(EnRailgibud* this, GlobalContext* globalCtx) { this->actor.speedXZ += 0.15f; } - if (func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { + if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { this->unk_405 = -1; this->actor.world.rot.y = this->actor.shape.rot.y; if ((this->unk_3F6 > 0) && (this->unk_404 == 0) && (this->unk_3F8 == 0)) { this->actor.hintId = 0x2A; - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_06010B88, NULL, this->jointTable, this->morphTable, 26); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_06010B88, NULL, this->jointTable, this->morphTable, 26); this->unk_3F8 = 1; } func_80BA6284(this); @@ -584,7 +584,7 @@ void func_80BA66C8(EnRailgibud* this, GlobalContext* globalCtx) { } if ((this->unk_3F2 == 20) && (this->unk_3F6 > 0) && (this->unk_404 == 0) && (this->unk_3F8 == 0)) { - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_06010B88, NULL, this->jointTable, this->morphTable, 26); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_06010B88, NULL, this->jointTable, this->morphTable, 26); this->unk_3F8 = 1; } } @@ -912,7 +912,7 @@ void EnRailgibud_Update(Actor* thisx, GlobalContext* globalCtx) { func_80BA6DF8(this, globalCtx); this->actionFunc(this, globalCtx); if (this->actionFunc != func_80BA6604) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); } func_80BA71E4(this, globalCtx); func_80BA76C4(this, globalCtx); @@ -949,7 +949,7 @@ void EnRailgibud_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dLi ((limbIndex == 3) || (limbIndex == 4) || (limbIndex == 6) || (limbIndex == 8) || (limbIndex == 9) || (limbIndex == 11) || (limbIndex == 14) || (limbIndex == 16) || (limbIndex == 17) || (limbIndex == 18) || (limbIndex == 20) || (limbIndex == 21) || (limbIndex == 22) || (limbIndex == 24) || (limbIndex == 25))) { - SysMatrix_GetStateTranslation(&this->unk_1D8[this->unk_28C]); + Matrix_GetStateTranslation(&this->unk_1D8[this->unk_28C]); this->unk_28C++; } } @@ -966,18 +966,18 @@ void EnRailgibud_Draw(Actor* thisx, GlobalContext* globalCtx) { gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, this->actor.shape.shadowAlpha); gSPSegment(POLY_OPA_DISP++, 0x08, D_801AEFA0); - POLY_OPA_DISP = SkelAnime_DrawSV2(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, - this->skelAnime.dListCount, EnRailgibud_OverrideLimbDraw, - EnRailgibud_PostLimbDraw, &this->actor, POLY_OPA_DISP); + POLY_OPA_DISP = SkelAnime_DrawFlex(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, + this->skelAnime.dListCount, EnRailgibud_OverrideLimbDraw, + EnRailgibud_PostLimbDraw, &this->actor, POLY_OPA_DISP); } else { func_8012C2DC(globalCtx->state.gfxCtx); gDPSetEnvColor(POLY_XLU_DISP++, 0, 0, 0, this->actor.shape.shadowAlpha); gSPSegment(POLY_XLU_DISP++, 0x08, D_801AEF88); - POLY_XLU_DISP = SkelAnime_DrawSV2(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, - this->skelAnime.dListCount, EnRailgibud_OverrideLimbDraw, - EnRailgibud_PostLimbDraw, &this->actor, POLY_XLU_DISP); + POLY_XLU_DISP = SkelAnime_DrawFlex(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, + this->skelAnime.dListCount, EnRailgibud_OverrideLimbDraw, + EnRailgibud_PostLimbDraw, &this->actor, POLY_XLU_DISP); } if (this->unk_3F6 > 0) { @@ -996,7 +996,7 @@ void func_80BA7B6C(EnRailgibud* this, GlobalContext* globalCtx) { this->actor.flags |= 0x100000; this->actor.flags |= 0x10; ActorShape_Init(&this->actor.shape, 0.0f, func_800B3FC0, 28.0f); - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_060053E8, &D_0600ABE0, this->jointTable, this->morphTable, 26); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_060053E8, &D_0600ABE0, this->jointTable, this->morphTable, 26); Collider_InitCylinder(globalCtx, &this->collider); Collider_SetCylinder(globalCtx, &this->collider, &this->actor, &sCylinderInit); CollisionCheck_SetInfo2(&this->actor.colChkInfo, &sDamageTable, &sColChkInfoInit); @@ -1091,7 +1091,7 @@ s32 func_80BA7DC8(EnRailgibud* this, GlobalContext* globalCtx) { func_800BDC5C(&this->skelAnime, sAnimations, 10); break; } - } else if (func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { + } else if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { if (this->unk_3F0 == 15) { this->unk_3F0 = 16; func_800BDC5C(&this->skelAnime, sAnimations, 16); @@ -1113,7 +1113,7 @@ s32 func_80BA7DC8(EnRailgibud* this, GlobalContext* globalCtx) { break; case 5: - if (func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { + if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { if (globalCtx->csCtx.frames < 280) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_REDEAD_CRY); } else { @@ -1136,5 +1136,5 @@ void func_80BA8050(Actor* thisx, GlobalContext* globalCtx) { this->actionFunc(this, globalCtx); func_80BA7DC8(this, globalCtx); - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); } diff --git a/src/overlays/actors/ovl_En_Rd/z_en_rd.c b/src/overlays/actors/ovl_En_Rd/z_en_rd.c index ff35322f1..c6359ba89 100644 --- a/src/overlays/actors/ovl_En_Rd/z_en_rd.c +++ b/src/overlays/actors/ovl_En_Rd/z_en_rd.c @@ -163,9 +163,11 @@ void EnRd_Init(Actor* thisx, GlobalContext* globalCtx) { } if (this->actor.params >= ENRD_GET_MINUS_1) { - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_06010B88, &D_0600ABE0, this->jointTable, this->morphTable, 26); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_06010B88, &D_0600ABE0, this->jointTable, this->morphTable, + 26); } else { - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_060053E8, &D_0600ABE0, this->jointTable, this->morphTable, 26); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_060053E8, &D_0600ABE0, this->jointTable, this->morphTable, + 26); } Collider_InitCylinder(globalCtx, &this->collider); @@ -217,7 +219,7 @@ void EnRd_Init(Actor* thisx, GlobalContext* globalCtx) { func_808D4DC4(this); } - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); if (this->actor.params == ENRD_GET_3) { this->actor.flags |= 0x80; @@ -279,9 +281,9 @@ void func_808D4260(EnRd* this, GlobalContext* globalCtx) { void func_808D4308(EnRd* this) { if (this->actor.params != ENRD_GET_2) { - SkelAnime_ChangeAnimTransitionRepeat(&this->skelAnime, &D_0600ABE0, -6.0f); + Animation_MorphToLoop(&this->skelAnime, &D_0600ABE0, -6.0f); } else { - SkelAnime_ChangeAnimDefaultRepeat(&this->skelAnime, &D_060081A8); + Animation_PlayLoop(&this->skelAnime, &D_060081A8); } this->unk_3EF = 0; @@ -292,20 +294,20 @@ void func_808D4308(EnRd* this) { } void func_808D43AC(EnRd* this, GlobalContext* globalCtx) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); Math_SmoothStepToS(&this->unk_3D8, 0, 1, 100, 0); Math_SmoothStepToS(&this->unk_3DA, 0, 1, 100, 0); - if ((this->actor.params == ENRD_GET_2) && func_801378B8(&this->skelAnime, 0.0f)) { + if ((this->actor.params == ENRD_GET_2) && Animation_OnFrame(&this->skelAnime, 0.0f)) { if (Rand_ZeroOne() >= 0.5f) { - SkelAnime_ChangeAnimDefaultRepeat(&this->skelAnime, &D_060081A8); + Animation_PlayLoop(&this->skelAnime, &D_060081A8); } else { - SkelAnime_ChangeAnimDefaultRepeat(&this->skelAnime, &D_06007BBC); + Animation_PlayLoop(&this->skelAnime, &D_06007BBC); } } else { this->unk_3D6--; if (this->unk_3D6 == 0) { this->unk_3D6 = (Rand_ZeroOne() * 10.0f) + 10.0f; - this->skelAnime.animCurrentFrame = 0.0f; + this->skelAnime.curFrame = 0.0f; } } @@ -342,7 +344,7 @@ void func_808D43AC(EnRd* this, GlobalContext* globalCtx) { } void func_808D45D4(EnRd* this) { - SkelAnime_ChangeAnimTransitionRepeat(&this->skelAnime, &D_0601216C, -6.0f); + Animation_MorphToLoop(&this->skelAnime, &D_0601216C, -6.0f); this->unk_3EF = 14; this->unk_3D6 = (Rand_ZeroOne() * 10.0f) + 5.0f; this->unk_3E4 = 0; @@ -352,7 +354,7 @@ void func_808D45D4(EnRd* this) { } void func_808D4660(EnRd* this, GlobalContext* globalCtx) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); Math_SmoothStepToS(&this->unk_3D8, 0, 1, 100, 0); Math_SmoothStepToS(&this->unk_3DA, 0, 1, 100, 0); if (this->unk_3EC != 0) { @@ -366,7 +368,7 @@ void func_808D4660(EnRd* this, GlobalContext* globalCtx) { } else { this->actor.hintId = 0x2A; } - SkelAnime_ChangeAnim(&this->skelAnime, &D_060073A4, 0.0f, 0.0f, 19.0f, 2, -10.0f); + Animation_Change(&this->skelAnime, &D_060073A4, 0.0f, 0.0f, 19.0f, 2, -10.0f); this->actionFunc = func_808D49E4; } @@ -385,7 +387,7 @@ void func_808D4660(EnRd* this, GlobalContext* globalCtx) { } void func_808D47DC(EnRd* this) { - SkelAnime_ChangeAnimTransitionRepeat(&this->skelAnime, &D_06011DB8, -6.0f); + Animation_MorphToLoop(&this->skelAnime, &D_06011DB8, -6.0f); this->unk_3EF = 15; this->unk_3D6 = (Rand_ZeroOne() * 10.0f) + 5.0f; this->unk_3E4 = 0; @@ -395,7 +397,7 @@ void func_808D47DC(EnRd* this) { } void func_808D4868(EnRd* this, GlobalContext* globalCtx) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); Math_SmoothStepToS(&this->unk_3D8, 0, 1, 100, 0); Math_SmoothStepToS(&this->unk_3DA, 0, 1, 100, 0); if (this->unk_3EC != 0) { @@ -409,7 +411,7 @@ void func_808D4868(EnRd* this, GlobalContext* globalCtx) { } else { this->actor.hintId = 0x2A; } - SkelAnime_ChangeAnim(&this->skelAnime, &D_060073A4, 0.0f, 0.0f, 19.0f, 2, -10.0f); + Animation_Change(&this->skelAnime, &D_060073A4, 0.0f, 0.0f, 19.0f, 2, -10.0f); this->actionFunc = func_808D49E4; } @@ -428,7 +430,7 @@ void func_808D4868(EnRd* this, GlobalContext* globalCtx) { } void func_808D49E4(EnRd* this, GlobalContext* globalCtx) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); if ((globalCtx->gameplayFrames & 0x5F) == 0) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_REDEAD_CRY); } @@ -445,7 +447,7 @@ void func_808D49E4(EnRd* this, GlobalContext* globalCtx) { } void func_808D4A90(EnRd* this) { - SkelAnime_ChangeAnimTransitionRepeat(&this->skelAnime, &D_060118D8, -6.0f); + Animation_MorphToLoop(&this->skelAnime, &D_060118D8, -6.0f); this->unk_3EF = 16; this->unk_3D6 = (Rand_ZeroOne() * 10.0f) + 5.0f; this->unk_3E4 = 4370; @@ -455,7 +457,7 @@ void func_808D4A90(EnRd* this) { } void func_808D4B20(EnRd* this, GlobalContext* globalCtx) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); Math_SmoothStepToS(&this->unk_3D8, 0, 1, 100, 0); Math_SmoothStepToS(&this->unk_3DA, 0, 1, 100, 0); if (this->unk_3EC != 0) { @@ -485,9 +487,9 @@ void func_808D4B20(EnRd* this, GlobalContext* globalCtx) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_REDEAD_CRY); } - if (func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { + if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { this->unk_3E4 = 4370; - } else if (func_801378B8(&this->skelAnime, 15.0f)) { + } else if (Animation_OnFrame(&this->skelAnime, 15.0f)) { this->unk_3E4 = 6554; } @@ -496,7 +498,7 @@ void func_808D4B20(EnRd* this, GlobalContext* globalCtx) { } void func_808D4CA8(EnRd* this, GlobalContext* globalCtx) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); if ((globalCtx->gameplayFrames & 0x5F) == 0) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_REDEAD_CRY); } @@ -506,7 +508,7 @@ void func_808D4CA8(EnRd* this, GlobalContext* globalCtx) { this->unk_3E4 -= 100; if ((this->unk_3E4 < 2100) && (this->unk_3E4 >= 2000)) { - SkelAnime_ChangeAnim(&this->skelAnime, &D_060073A4, 0.0f, 0.0f, 19.0f, 2, -10.0f); + Animation_Change(&this->skelAnime, &D_060073A4, 0.0f, 0.0f, 19.0f, 2, -10.0f); } else if (this->unk_3E4 < 1000) { if ((this->actor.params != ENRD_GET_2) && (this->unk_3EC == 0)) { func_808D5C54(this); @@ -517,8 +519,7 @@ void func_808D4CA8(EnRd* this, GlobalContext* globalCtx) { } void func_808D4DC4(EnRd* this) { - SkelAnime_ChangeAnim(&this->skelAnime, &D_0600ABE0, 0.0f, 0.0f, SkelAnime_GetFrameCount(&D_0600ABE0.common), 0, - -6.0f); + Animation_Change(&this->skelAnime, &D_0600ABE0, 0.0f, 0.0f, Animation_GetLastFrame(&D_0600ABE0), 0, -6.0f); this->unk_3EF = 13; this->unk_3D6 = 6; this->actor.shape.rot.x = -0x4000; @@ -552,9 +553,9 @@ void func_808D4E60(EnRd* this, GlobalContext* globalCtx) { } void func_808D4FE0(EnRd* this, GlobalContext* globalCtx) { - f32 frameCount = SkelAnime_GetFrameCount(&D_060113EC.common); + f32 frameCount = Animation_GetLastFrame(&D_060113EC); - SkelAnime_ChangeAnim(&this->skelAnime, &D_060113EC, 1.0f, 4.0f, frameCount, 1, -4.0f); + Animation_Change(&this->skelAnime, &D_060113EC, 1.0f, 4.0f, frameCount, 1, -4.0f); this->actor.speedXZ = 0.4f; this->unk_3EF = 4; this->actionFunc = func_808D506C; @@ -565,12 +566,12 @@ void func_808D506C(EnRd* this, GlobalContext* globalCtx) { s32 pad; s16 sp36 = ((this->actor.yawTowardsPlayer - this->actor.shape.rot.y) - this->unk_3D8) - this->unk_3DA; - this->skelAnime.animPlaybackSpeed = this->actor.speedXZ; + this->skelAnime.playSpeed = this->actor.speedXZ; Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 1, 250, 0); Math_SmoothStepToS(&this->unk_3D8, 0, 1, 100, 0); Math_SmoothStepToS(&this->unk_3DA, 0, 1, 100, 0); this->actor.world.rot.y = this->actor.shape.rot.y; - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); if (Actor_DistanceToPoint(&player->actor, &this->actor.home.pos) >= 150.0f) { func_808D53C0(this, globalCtx); @@ -619,7 +620,7 @@ void func_808D506C(EnRd* this, GlobalContext* globalCtx) { } } - if (func_801378B8(&this->skelAnime, 10.0f) || func_801378B8(&this->skelAnime, 22.0f)) { + if (Animation_OnFrame(&this->skelAnime, 10.0f) || Animation_OnFrame(&this->skelAnime, 22.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_RIZA_WALK); } else if ((globalCtx->gameplayFrames & 0x5F) == 0) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_REDEAD_CRY); @@ -627,8 +628,7 @@ void func_808D506C(EnRd* this, GlobalContext* globalCtx) { } void func_808D53C0(EnRd* this, GlobalContext* globalCtx) { - SkelAnime_ChangeAnim(&this->skelAnime, &D_060113EC, 0.5f, 0.0f, SkelAnime_GetFrameCount(&D_060113EC.common), 1, - -4.0f); + Animation_Change(&this->skelAnime, &D_060113EC, 0.5f, 0.0f, Animation_GetLastFrame(&D_060113EC), 1, -4.0f); this->unk_3EF = 2; this->actionFunc = func_808D5440; } @@ -654,7 +654,7 @@ void func_808D5440(EnRd* this, GlobalContext* globalCtx) { Math_SmoothStepToS(&this->unk_3D8, 0, 1, 100, 0); Math_SmoothStepToS(&this->unk_3DA, 0, 1, 100, 0); this->actor.world.rot.y = this->actor.shape.rot.y; - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); if (!(player->stateFlags1 & (0x200000 | 0x80000 | 0x40000 | 0x4000 | 0x2000 | 0x80)) && !(player->stateFlags2 & 0x4080) && (player->transformation != PLAYER_FORM_GORON) && @@ -670,7 +670,7 @@ void func_808D5440(EnRd* this, GlobalContext* globalCtx) { } } - if (func_801378B8(&this->skelAnime, 10.0f) || func_801378B8(&this->skelAnime, 22.0f)) { + if (Animation_OnFrame(&this->skelAnime, 10.0f) || Animation_OnFrame(&this->skelAnime, 22.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_RIZA_WALK); } else if ((globalCtx->gameplayFrames & 0x5F) == 0) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_REDEAD_CRY); @@ -678,9 +678,9 @@ void func_808D5440(EnRd* this, GlobalContext* globalCtx) { } void func_808D5660(EnRd* this) { - f32 frameCount = SkelAnime_GetFrameCount(&D_060113EC.common); + f32 frameCount = Animation_GetLastFrame(&D_060113EC); - SkelAnime_ChangeAnim(&this->skelAnime, &D_060113EC, 0.5f, 0.0f, frameCount, 1, -4.0f); + Animation_Change(&this->skelAnime, &D_060113EC, 0.5f, 0.0f, frameCount, 1, -4.0f); this->unk_3EF = 3; this->unk_3EC = 1; this->actionFunc = func_808D56E4; @@ -713,9 +713,9 @@ void func_808D56E4(EnRd* this, GlobalContext* globalCtx) { } this->actor.world.rot.y = this->actor.shape.rot.y; - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); - if (func_801378B8(&this->skelAnime, 10.0f) || func_801378B8(&this->skelAnime, 22.0f)) { + if (Animation_OnFrame(&this->skelAnime, 10.0f) || Animation_OnFrame(&this->skelAnime, 22.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_RIZA_WALK); } else if ((globalCtx->gameplayFrames & 0x5F) == 0) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_REDEAD_CRY); @@ -723,7 +723,7 @@ void func_808D56E4(EnRd* this, GlobalContext* globalCtx) { } void func_808D586C(EnRd* this) { - SkelAnime_ChangeAnimDefaultStop(&this->skelAnime, &D_06006EEC); + Animation_PlayOnce(&this->skelAnime, &D_06006EEC); this->unk_3D6 = 0; this->unk_3EB = 0; this->unk_3EA = 200; @@ -736,13 +736,13 @@ void func_808D58CC(EnRd* this, GlobalContext* globalCtx) { Player* player = GET_PLAYER(globalCtx); s32 pad; - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime)) { + if (SkelAnime_Update(&this->skelAnime)) { this->unk_3EB++; } switch (this->unk_3EB) { case 1: - SkelAnime_ChangeAnimDefaultRepeat(&this->skelAnime, &D_06006678); + Animation_PlayLoop(&this->skelAnime, &D_06006678); this->unk_3EB++; globalCtx->damagePlayer(globalCtx, -8); func_8013ECE0(this->actor.xzDistToPlayer, 255, 1, 12); @@ -758,8 +758,8 @@ void func_808D58CC(EnRd* this, GlobalContext* globalCtx) { player->stateFlags2 &= ~0x80; player->unk_AE8 = 100; } - SkelAnime_ChangeAnim(&this->skelAnime, &D_06006B08, 0.5f, 0.0f, - SkelAnime_GetFrameCount(&D_06006B08.common), 3, 0.0f); + Animation_Change(&this->skelAnime, &D_06006B08, 0.5f, 0.0f, Animation_GetLastFrame(&D_06006B08), 3, + 0.0f); this->unk_3EB++; this->unk_3EF = 4; break; @@ -786,7 +786,7 @@ void func_808D58CC(EnRd* this, GlobalContext* globalCtx) { 0.0f); Math_SmoothStepToS(&this->actor.shape.rot.y, player->actor.shape.rot.y, 1, 6000, 0); - if (func_801378B8(&this->skelAnime, 0.0f)) { + if (Animation_OnFrame(&this->skelAnime, 0.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_REDEAD_ATTACK); } @@ -819,8 +819,7 @@ void func_808D58CC(EnRd* this, GlobalContext* globalCtx) { } void func_808D5C54(EnRd* this) { - SkelAnime_ChangeAnim(&this->skelAnime, &D_060073A4, 0.0f, 0.0f, SkelAnime_GetFrameCount(&D_060073A4.common), 2, - 0.0f); + Animation_Change(&this->skelAnime, &D_060073A4, 0.0f, 0.0f, Animation_GetLastFrame(&D_060073A4), 2, 0.0f); this->unk_3EF = 7; this->actionFunc = func_808D5CCC; } @@ -842,7 +841,7 @@ void func_808D5CCC(EnRd* this, GlobalContext* globalCtx) { void func_808D5D88(EnRd* this) { this->unk_3EF = 8; - SkelAnime_ChangeAnimTransitionStop(&this->skelAnime, &D_06009900, -6.0f); + Animation_MorphToPlayOnce(&this->skelAnime, &D_06009900, -6.0f); this->actor.speedXZ = -2.0f; Audio_PlayActorSound2(&this->actor, NA_SE_EN_REDEAD_DAMAGE); this->unk_3EF = 8; @@ -857,16 +856,16 @@ void func_808D5DF4(EnRd* this, GlobalContext* globalCtx) { this->actor.world.rot.y = this->actor.yawTowardsPlayer; Math_SmoothStepToS(&this->unk_3D8, 0, 1, 300, 0); Math_SmoothStepToS(&this->unk_3DA, 0, 1, 300, 0); - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime)) { + if (SkelAnime_Update(&this->skelAnime)) { this->actor.world.rot.y = this->actor.shape.rot.y; func_808D5E98(this); } } void func_808D5E98(EnRd* this) { - f32 frameCount = SkelAnime_GetFrameCount(&D_060113EC.common); + f32 frameCount = Animation_GetLastFrame(&D_060113EC); - SkelAnime_ChangeAnim(&this->skelAnime, &D_060113EC, 0.5f, 0.0f, frameCount, 1, -4.0f); + Animation_Change(&this->skelAnime, &D_060113EC, 0.5f, 0.0f, frameCount, 1, -4.0f); this->unk_3EF = 9; this->unk_3D4 = 0; this->actionFunc = func_808D5F18; @@ -880,19 +879,19 @@ void func_808D5F18(EnRd* this, GlobalContext* globalCtx) { this->unk_3D4 = 0; } else { this->unk_3D8 = Math_SinS(this->unk_3D4 * 4000) * (9583.0f * ((60 - this->unk_3D4) / 60.0f)); - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); this->unk_3D4++; } } void func_808D6008(EnRd* this) { - SkelAnime_ChangeAnimTransitionStop(&this->skelAnime, &D_0600A450, -4.0f); + Animation_MorphToPlayOnce(&this->skelAnime, &D_0600A450, -4.0f); this->unk_3EF = 5; this->actionFunc = func_808D6054; } void func_808D6054(EnRd* this, GlobalContext* globalCtx) { - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime)) { + if (SkelAnime_Update(&this->skelAnime)) { if (this->actor.parent != NULL) { func_808D5660(this); } else { @@ -902,21 +901,20 @@ void func_808D6054(EnRd* this, GlobalContext* globalCtx) { } void func_808D60B0(EnRd* this) { - SkelAnime_ChangeAnim(&this->skelAnime, &D_0600A450, -1.0f, SkelAnime_GetFrameCount(&D_0600A450.common), 0.0f, 2, - -4.0f); + Animation_Change(&this->skelAnime, &D_0600A450, -1.0f, Animation_GetLastFrame(&D_0600A450), 0.0f, 2, -4.0f); this->unk_3EF = 6; this->actionFunc = func_808D6130; } void func_808D6130(EnRd* this, GlobalContext* globalCtx) { - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime)) { + if (SkelAnime_Update(&this->skelAnime)) { func_808D4308(this); } } void func_808D616C(EnRd* this) { this->actor.shape.yOffset = 0.0f; - SkelAnime_ChangeAnimTransitionStop(&this->skelAnime, &D_06009900, -6.0f); + Animation_MorphToPlayOnce(&this->skelAnime, &D_06009900, -6.0f); if (this->actor.bgCheckFlags & 1) { this->actor.speedXZ = -2.0f; } @@ -938,7 +936,7 @@ void func_808D6200(EnRd* this, GlobalContext* globalCtx) { Math_SmoothStepToS(&this->unk_3D8, 0, 1, 300, 0); Math_SmoothStepToS(&this->unk_3DA, 0, 1, 300, 0); - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime)) { + if (SkelAnime_Update(&this->skelAnime)) { this->actor.world.rot.y = this->actor.shape.rot.y; if (this->actor.parent != NULL) { func_808D5660(this); @@ -952,7 +950,7 @@ void func_808D6200(EnRd* this, GlobalContext* globalCtx) { } void func_808D6310(EnRd* this) { - SkelAnime_ChangeAnimTransitionStop(&this->skelAnime, &D_06009298, -1.0f); + Animation_MorphToPlayOnce(&this->skelAnime, &D_06009298, -1.0f); this->unk_3EF = 12; this->unk_3D6 = 300; this->actor.flags &= ~1; @@ -969,7 +967,7 @@ void func_808D6388(EnRd* this, GlobalContext* globalCtx) { Math_SmoothStepToS(&this->unk_3D8, 0, 1, 2000, 0); Math_SmoothStepToS(&this->unk_3DA, 0, 1, 2000, 0); - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime)) { + if (SkelAnime_Update(&this->skelAnime)) { if (this->unk_3D6 == 0) { if (!Flags_GetSwitch(globalCtx, this->unk_3DC & 0x7F)) { Actor_SetSwitchFlag(globalCtx, this->unk_3DC & 0x7F); @@ -987,7 +985,7 @@ void func_808D6388(EnRd* this, GlobalContext* globalCtx) { } else { this->unk_3D6--; } - } else if (func_801378B8(&this->skelAnime, 33.0f) || func_801378B8(&this->skelAnime, 40.0f)) { + } else if (Animation_OnFrame(&this->skelAnime, 33.0f) || Animation_OnFrame(&this->skelAnime, 40.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_GERUDOFT_DOWN); } } @@ -1224,7 +1222,7 @@ void EnRd_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec ((limbIndex == 3) || (limbIndex == 4) || (limbIndex == 6) || (limbIndex == 8) || (limbIndex == 9) || (limbIndex == 11) || (limbIndex == 14) || (limbIndex == 16) || (limbIndex == 17) || (limbIndex == 18) || (limbIndex == 20) || (limbIndex == 21) || (limbIndex == 22) || (limbIndex == 24) || (limbIndex == 25))) { - SysMatrix_GetStateTranslation(&this->unk_1DC[this->unk_290]); + Matrix_GetStateTranslation(&this->unk_1DC[this->unk_290]); this->unk_290++; } } @@ -1245,9 +1243,9 @@ void EnRd_Draw(Actor* thisx, GlobalContext* globalCtx) { gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, this->unk_3DE); gSPSegment(POLY_OPA_DISP++, 0x08, D_801AEFA0); - POLY_OPA_DISP = SkelAnime_DrawSV2(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, - this->skelAnime.dListCount, EnRd_OverrideLimbDraw, EnRd_PostLimbDraw, - &this->actor, POLY_OPA_DISP); + POLY_OPA_DISP = SkelAnime_DrawFlex(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, + this->skelAnime.dListCount, EnRd_OverrideLimbDraw, EnRd_PostLimbDraw, + &this->actor, POLY_OPA_DISP); func_800BC620(&sp54, &D_808D7138, 255, globalCtx); } else { @@ -1257,8 +1255,8 @@ void EnRd_Draw(Actor* thisx, GlobalContext* globalCtx) { gSPSegment(POLY_XLU_DISP++, 0x08, D_801AEF88); POLY_XLU_DISP = - SkelAnime_DrawSV2(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, - this->skelAnime.dListCount, EnRd_OverrideLimbDraw, NULL, &this->actor, POLY_XLU_DISP); + SkelAnime_DrawFlex(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, + this->skelAnime.dListCount, EnRd_OverrideLimbDraw, NULL, &this->actor, POLY_XLU_DISP); func_800BC620(&sp54, &D_808D7138, this->unk_3DE, globalCtx); } diff --git a/src/overlays/actors/ovl_En_Rsn/z_en_rsn.c b/src/overlays/actors/ovl_En_Rsn/z_en_rsn.c index 94db2b4bc..a5e91243b 100644 --- a/src/overlays/actors/ovl_En_Rsn/z_en_rsn.c +++ b/src/overlays/actors/ovl_En_Rsn/z_en_rsn.c @@ -42,7 +42,7 @@ void EnRsn_Init(Actor* thisx, GlobalContext* globalCtx) { EnRsn* this = THIS; ActorShape_Init(&this->actor.shape, 0.0f, func_800B3FC0, 20.0f); - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_06009220, &D_06009120, NULL, NULL, 0); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_06009220, &D_06009120, NULL, NULL, 0); this->actor.flags &= ~1; func_80C25D40(this); } @@ -58,36 +58,37 @@ void EnRsn_Update(Actor* thisx, GlobalContext* globalCtx) { this->actionFunc(this, globalCtx); Actor_SetVelocityAndMoveYRotationAndGravity(&this->actor); - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); func_800E9250(globalCtx, &this->actor, &this->unk1D8, &this->unk1DE, this->actor.focus.pos); } -s32 EnRsn_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) { - EnRsn* this = THIS; +s32 EnRsn_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* arg) { + EnRsn* this = (EnRsn*)arg; if (limbIndex == 14) { - SysMatrix_InsertXRotation_s(this->unk1D8.y, 1); + Matrix_InsertXRotation_s(this->unk1D8.y, 1); } return 0; } static Vec3f D_80C26028 = { 0.0f, 0.0f, 0.0f }; -void EnRsn_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) { - EnRsn* this = THIS; +void EnRsn_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* arg) { + EnRsn* this = (EnRsn*)arg; Vec3f sp18 = D_80C26028; if (limbIndex == 14) { - SysMatrix_MultiplyVector3fByState(&sp18, &this->actor.focus.pos); + Matrix_MultiplyVector3fByState(&sp18, &this->actor.focus.pos); } } void EnRsn_Draw(Actor* thisx, GlobalContext* globalCtx) { EnRsn* this = THIS; + OPEN_DISPS(globalCtx->state.gfxCtx); func_8012C5B0(globalCtx->state.gfxCtx); gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(D_06005458)); - SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, - EnRsn_OverrideLimbDraw, EnRsn_PostLimbDraw, &this->actor); + SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, + EnRsn_OverrideLimbDraw, EnRsn_PostLimbDraw, &this->actor); CLOSE_DISPS(globalCtx->state.gfxCtx); } diff --git a/src/overlays/actors/ovl_En_Sb/z_en_sb.c b/src/overlays/actors/ovl_En_Sb/z_en_sb.c index 691efcdf7..a860e49fb 100644 --- a/src/overlays/actors/ovl_En_Sb/z_en_sb.c +++ b/src/overlays/actors/ovl_En_Sb/z_en_sb.c @@ -117,8 +117,7 @@ void EnSb_Init(Actor* thisx, GlobalContext* globalCtx) { this->actor.colChkInfo.damageTable = &sDamageTable; this->actor.colChkInfo.mass = 0xA; this->actor.colChkInfo.health = 2; - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_06002BF0, &D_06000194, this->limbDrawTable, - this->transitionDrawTable, 9); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_06002BF0, &D_06000194, this->jointTable, this->morphTable, 9); Collider_InitCylinder(globalCtx, &this->collider); Collider_SetCylinderType1(globalCtx, &this->collider, &this->actor, &sCylinderInit); this->isDead = false; @@ -150,45 +149,45 @@ void EnSb_SpawnBubbles(GlobalContext* globalCtx, EnSb* this) { } void EnSb_SetupWaitClosed(EnSb* this) { - SkelAnime_ChangeAnim(&this->skelAnime, &D_0600004C, 1.0f, 0, SkelAnime_GetFrameCount(&D_0600004C.common), 2, 0.0f); + Animation_Change(&this->skelAnime, &D_0600004C, 1.0f, 0, Animation_GetLastFrame(&D_0600004C), 2, 0.0f); this->state = SHELLBLADE_WAIT_CLOSED; this->actionFunc = EnSb_Idle; } void EnSb_SetupOpen(EnSb* this) { - SkelAnime_ChangeAnim(&this->skelAnime, &D_06000194, 1.0f, 0, SkelAnime_GetFrameCount(&D_06000194.common), 2, 0.0f); + Animation_Change(&this->skelAnime, &D_06000194, 1.0f, 0, Animation_GetLastFrame(&D_06000194), 2, 0.0f); this->state = SHELLBLADE_OPEN; this->actionFunc = EnSb_Open; Audio_PlayActorSound2(&this->actor, NA_SE_EN_KUSAMUSHI_VIBE); } void EnSb_SetupWaitOpen(EnSb* this) { - SkelAnime_ChangeAnim(&this->skelAnime, &D_06002C8C, 1.0f, 0, SkelAnime_GetFrameCount(&D_06002C8C.common), 0, 0.0f); + Animation_Change(&this->skelAnime, &D_06002C8C, 1.0f, 0, Animation_GetLastFrame(&D_06002C8C), 0, 0.0f); this->state = SHELLBLADE_WAIT_OPEN; this->actionFunc = EnSb_WaitOpen; } void EnSb_SetupLunge(EnSb* this) { - f32 frameCount = SkelAnime_GetFrameCount(&D_06000124.common); + f32 frameCount = Animation_GetLastFrame(&D_06000124); f32 playbackSpeed = this->actor.yDistToWater > 0.0f ? 1.0f : 0.0f; - SkelAnime_ChangeAnim(&this->skelAnime, &D_06000124, playbackSpeed, 0.0f, frameCount, 2, 0); + Animation_Change(&this->skelAnime, &D_06000124, playbackSpeed, 0.0f, frameCount, 2, 0); this->state = SHELLBLADE_LUNGE; this->actionFunc = EnSb_Lunge; Audio_PlayActorSound2(&this->actor, NA_SE_EN_KUSAMUSHI_VIBE); } void EnSb_SetupBounce(EnSb* this) { - SkelAnime_ChangeAnim(&this->skelAnime, &D_060000B4, 1.0f, 0, SkelAnime_GetFrameCount(&D_060000B4.common), 2, 0.0f); + Animation_Change(&this->skelAnime, &D_060000B4, 1.0f, 0, Animation_GetLastFrame(&D_060000B4), 2, 0.0f); this->state = SHELLBLADE_BOUNCE; this->actionFunc = EnSb_Bounce; } void EnSb_SetupIdle(EnSb* this, s32 changeSpeed) { - f32 frameCount = SkelAnime_GetFrameCount(&D_0600004C.common); + f32 frameCount = Animation_GetLastFrame(&D_0600004C); if (this->state != SHELLBLADE_WAIT_CLOSED) { - SkelAnime_ChangeAnim(&this->skelAnime, &D_0600004C, 1.0f, 0, frameCount, 2, 0.0f); + Animation_Change(&this->skelAnime, &D_0600004C, 1.0f, 0, frameCount, 2, 0.0f); } this->state = SHELLBLADE_WAIT_CLOSED; if (changeSpeed) { @@ -216,9 +215,9 @@ void EnSb_Idle(EnSb* this, GlobalContext* globalCtx) { } void EnSb_Open(EnSb* this, GlobalContext* globalCtx) { - f32 currentFrame = this->skelAnime.animCurrentFrame; + f32 currentFrame = this->skelAnime.curFrame; - if (SkelAnime_GetFrameCount(&D_06000194.common) <= currentFrame) { + if (Animation_GetLastFrame(&D_06000194) <= currentFrame) { this->vulnerableTimer = 20; EnSb_SetupWaitOpen(this); } else { @@ -281,8 +280,8 @@ void EnSb_Lunge(EnSb* this, GlobalContext* globalCtx) { void EnSb_Bounce(EnSb* this, GlobalContext* globalCtx) { s32 pad; - f32 currentFrame = currentFrame = this->skelAnime.animCurrentFrame; - f32 frameCount = frameCount = SkelAnime_GetFrameCount(&D_060000B4.common); + f32 currentFrame = currentFrame = this->skelAnime.curFrame; + f32 frameCount = frameCount = Animation_GetLastFrame(&D_060000B4); Math_StepToF(&this->actor.speedXZ, 0.0f, 0.2f); if (currentFrame == frameCount) { @@ -384,7 +383,7 @@ void EnSb_Update(Actor* thisx, GlobalContext* globalCtx) { } CollisionCheck_SetAC(globalCtx, &globalCtx->colChkCtx, &this->collider.base); } - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); } } @@ -411,8 +410,8 @@ void EnSb_Draw(Actor* thisx, GlobalContext* globalCtx) { s16 fireDecr; func_800B8050(&this->actor, globalCtx, 1); - SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, NULL, - EnSb_PostLimbDraw, &this->actor); + SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, + NULL, EnSb_PostLimbDraw, &this->actor); if (this->fireCount != 0) { this->actor.colorFilterTimer++; fireDecr = this->fireCount - 1; diff --git a/src/overlays/actors/ovl_En_Sb/z_en_sb.h b/src/overlays/actors/ovl_En_Sb/z_en_sb.h index 935a697ca..167a0c5c8 100644 --- a/src/overlays/actors/ovl_En_Sb/z_en_sb.h +++ b/src/overlays/actors/ovl_En_Sb/z_en_sb.h @@ -18,8 +18,8 @@ typedef enum { typedef struct EnSb { /* 0x000 */ Actor actor; /* 0x144 */ SkelAnime skelAnime; - /* 0x188 */ Vec3s limbDrawTable[9]; - /* 0x1BE */ Vec3s transitionDrawTable[9]; + /* 0x188 */ Vec3s jointTable[9]; + /* 0x1BE */ Vec3s morphTable[9]; /* 0x1F4 */ EnSbActionFunc actionFunc; /* 0x1F8 */ ColliderCylinder collider; /* 0x244 */ s16 fireCount; diff --git a/src/overlays/actors/ovl_En_Sellnuts/z_en_sellnuts.c b/src/overlays/actors/ovl_En_Sellnuts/z_en_sellnuts.c index 3901c8b24..badcc5501 100644 --- a/src/overlays/actors/ovl_En_Sellnuts/z_en_sellnuts.c +++ b/src/overlays/actors/ovl_En_Sellnuts/z_en_sellnuts.c @@ -133,7 +133,7 @@ void func_80ADADD0(EnSellnuts* this, GlobalContext* globalCtx) { } void func_80ADAE64(EnSellnuts* this) { - s16 currentFrame = this->skelAnime.animCurrentFrame; + s16 currentFrame = this->skelAnime.curFrame; switch (currentFrame) { case 10: @@ -194,7 +194,7 @@ void func_80ADAE64(EnSellnuts* this) { } void func_80ADAFC0(EnSellnuts* this) { - s16 currentFrame = this->skelAnime.animCurrentFrame; + s16 currentFrame = this->skelAnime.curFrame; switch (currentFrame) { case 10: @@ -244,8 +244,8 @@ f32 func_80ADB08C(GlobalContext* globalCtx) { } void func_80ADB0D8(EnSellnuts* this, GlobalContext* globalCtx) { - s16 currentFrame = this->skelAnime.animCurrentFrame; - s16 frameCount = SkelAnime_GetFrameCount(&D_80ADD990[this->unk_34C].animationSeg->common); + s16 currentFrame = this->skelAnime.curFrame; + s16 frameCount = Animation_GetLastFrame(D_80ADD990[this->unk_34C].animationSeg); if (currentFrame == frameCount) { switch (this->unk_340) { @@ -298,8 +298,8 @@ void func_80ADB0D8(EnSellnuts* this, GlobalContext* globalCtx) { } void func_80ADB254(EnSellnuts* this, GlobalContext* globalCtx) { - s16 currentFrame = this->skelAnime.animCurrentFrame; - s16 frameCount = SkelAnime_GetFrameCount(&D_80ADD990[this->unk_34C].animationSeg->common); + s16 currentFrame = this->skelAnime.curFrame; + s16 frameCount = Animation_GetLastFrame(D_80ADD990[this->unk_34C].animationSeg); Math_ApproachS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 2, 0xE38); if (((this->actor.yDistToPlayer < 50.0f) && (this->actor.yDistToPlayer > -50.0f) ? true : false) && @@ -339,7 +339,7 @@ void func_80ADB254(EnSellnuts* this, GlobalContext* globalCtx) { } void func_80ADB4F4(EnSellnuts* this, GlobalContext* globalCtx) { - if (this->skelAnime.animCurrentFrame == this->skelAnime.animFrameCount) { + if (this->skelAnime.curFrame == this->skelAnime.endFrame) { this->actionFunc = func_80ADB544; func_8013BC6C(&this->skelAnime, D_80ADD990, 0); } @@ -463,8 +463,8 @@ void func_80ADB924(EnSellnuts* this, GlobalContext* globalCtx) { void func_80ADBAB8(EnSellnuts* this, GlobalContext* globalCtx) { u8 sp27 = func_80152498(&globalCtx->msgCtx); - s16 currentFrame = this->skelAnime.animCurrentFrame; - s16 frameCount = SkelAnime_GetFrameCount(&D_80ADD990[this->unk_34C].animationSeg->common); + s16 currentFrame = this->skelAnime.curFrame; + s16 frameCount = Animation_GetLastFrame(D_80ADD990[this->unk_34C].animationSeg); if (this->unk_368 == 0x28) { this->unk_34C = 5; @@ -516,8 +516,8 @@ void func_80ADBCE4(EnSellnuts* this, GlobalContext* globalCtx) { void func_80ADBD64(EnSellnuts* this, GlobalContext* globalCtx) { u8 sp27 = func_80152498(&globalCtx->msgCtx); - s16 currentFrame = this->skelAnime.animCurrentFrame; - s16 frameCount = SkelAnime_GetFrameCount(&D_80ADD990[this->unk_34C].animationSeg->common); + s16 currentFrame = this->skelAnime.curFrame; + s16 frameCount = Animation_GetLastFrame(D_80ADD990[this->unk_34C].animationSeg); if ((currentFrame == frameCount) && (this->unk_34C == 7)) { this->unk_34C = 0; @@ -536,8 +536,8 @@ void func_80ADBD64(EnSellnuts* this, GlobalContext* globalCtx) { } void func_80ADBE80(EnSellnuts* this, GlobalContext* globalCtx) { - s16 currentFrame = this->skelAnime.animCurrentFrame; - s16 frameCount = SkelAnime_GetFrameCount(&D_80ADD990[this->unk_34C].animationSeg->common); + s16 currentFrame = this->skelAnime.curFrame; + s16 frameCount = Animation_GetLastFrame(D_80ADD990[this->unk_34C].animationSeg); func_80ADAE64(this); if (this->unk_366 == 0) { @@ -598,8 +598,8 @@ void func_80ADC034(EnSellnuts* this, GlobalContext* globalCtx) { void func_80ADC118(EnSellnuts* this, GlobalContext* globalCtx) { Vec3f sp34; - s16 currentFrame = this->skelAnime.animCurrentFrame; - s16 frameCount = SkelAnime_GetFrameCount(&D_80ADD990[this->unk_34C].animationSeg->common); + s16 currentFrame = this->skelAnime.curFrame; + s16 frameCount = Animation_GetLastFrame(D_80ADD990[this->unk_34C].animationSeg); if (currentFrame == frameCount) { Math_SmoothStepToS(&this->unk_364, 0x1C71, 3, 0x100, 0); @@ -817,8 +817,8 @@ void func_80ADC8C4(EnSellnuts* this, GlobalContext* globalCtx) { } void func_80ADCA64(EnSellnuts* this, GlobalContext* globalCtx) { - s16 currentFrame = this->skelAnime.animCurrentFrame; - s16 frameCount = SkelAnime_GetFrameCount(&D_80ADD990[this->unk_34C].animationSeg->common); + s16 currentFrame = this->skelAnime.curFrame; + s16 frameCount = Animation_GetLastFrame(D_80ADD990[this->unk_34C].animationSeg); if (this->unk_34C == 22) { Math_SmoothStepToS(&this->unk_364, 0, 3, 0x100, 0); @@ -852,8 +852,8 @@ void func_80ADCA64(EnSellnuts* this, GlobalContext* globalCtx) { } void func_80ADCC04(EnSellnuts* this, GlobalContext* globalCtx) { - s16 currentFrame = this->skelAnime.animCurrentFrame; - s16 frameCount = SkelAnime_GetFrameCount(&D_80ADD990[this->unk_34C].animationSeg->common); + s16 currentFrame = this->skelAnime.curFrame; + s16 frameCount = Animation_GetLastFrame(D_80ADD990[this->unk_34C].animationSeg); if (this->unk_34C == 3) { if (currentFrame == frameCount) { @@ -962,7 +962,7 @@ void EnSellnuts_Init(Actor* thisx, GlobalContext* globalCtx) { } Actor_ProcessInitChain(&this->actor, sInitChain); - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_0600AC70, &D_06005488, this->jointTable, this->morphTable, 28); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_0600AC70, &D_06005488, this->jointTable, this->morphTable, 28); Collider_InitCylinder(globalCtx, &this->collider); Collider_SetCylinderType1(globalCtx, &this->collider, &this->actor, &sCylinderInit); ActorShape_Init(&this->actor.shape, 0.0f, func_800B3FC0, 35.0f); @@ -1055,7 +1055,7 @@ void EnSellnuts_Update(Actor* thisx, GlobalContext* globalCtx) { Actor_SetHeight(&this->actor, 60.0f); Actor_SetScale(&this->actor, 0.01f); - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); Actor_SetVelocityAndMoveYRotationAndGravity(&this->actor); this->actionFunc(this, globalCtx); if (this->unk_338 & 8) { @@ -1110,7 +1110,7 @@ s32 EnSellnuts_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** d } if (limbIndex == 24) { - SysMatrix_InsertXRotation_s(this->unk_342, MTXMODE_APPLY); + Matrix_InsertXRotation_s(this->unk_342, MTXMODE_APPLY); } if (limbIndex == 26) { @@ -1148,6 +1148,6 @@ void EnSellnuts_Draw(Actor* thisx, GlobalContext* globalCtx) { EnSellnuts* this = THIS; func_8012C28C(globalCtx->state.gfxCtx); - func_801343C0(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, + func_801343C0(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, EnSellnuts_OverrideLimbDraw, EnSellnuts_PostLimbDraw, func_80ADD7CC, &this->actor); } diff --git a/src/overlays/actors/ovl_En_Skb/z_en_skb.c b/src/overlays/actors/ovl_En_Skb/z_en_skb.c index 91efc860c..3fd19ef91 100644 --- a/src/overlays/actors/ovl_En_Skb/z_en_skb.c +++ b/src/overlays/actors/ovl_En_Skb/z_en_skb.c @@ -297,7 +297,7 @@ void func_80994E2C(EnSkb* this) { } void func_80994E94(EnSkb* this, GlobalContext* globalCtx) { - if (this->skelAnime.animCurrentFrame < 4.0f) { + if (this->skelAnime.curFrame < 4.0f) { this->actor.world.rot.y = this->actor.yawTowardsPlayer; this->actor.shape.rot.y = this->actor.yawTowardsPlayer; } else { @@ -310,7 +310,7 @@ void func_80994E94(EnSkb* this, GlobalContext* globalCtx) { func_809947B0(globalCtx, this, &this->actor.world.pos); } - if (func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount) && (this->actor.shape.yOffset == 0.0f)) { + if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame) && (this->actor.shape.yOffset == 0.0f)) { func_80995A30(this); } this->unk_3D0++; @@ -471,13 +471,13 @@ void func_809954F8(EnSkb* this) { void func_8099556C(EnSkb* this, GlobalContext* globalCtx) { s16 sp26; - if (this->skelAnime.animCurrentFrame < 15.0f) { - sp26 = this->skelAnime.animCurrentFrame - 7.5f; + if (this->skelAnime.curFrame < 15.0f) { + sp26 = this->skelAnime.curFrame - 7.5f; } else { - sp26 = 22.5f - this->skelAnime.animCurrentFrame; + sp26 = 22.5f - this->skelAnime.curFrame; } - if (func_801378B8(&this->skelAnime, 22.5f)) { + if (Animation_OnFrame(&this->skelAnime, 22.5f)) { this->unk_3D4 = (u32)Rand_Next() % 0x7D0; } @@ -487,7 +487,7 @@ void func_8099556C(EnSkb* this, GlobalContext* globalCtx) { this->actor.flags |= (0x8 | 0x1); func_80994F7C(this, globalCtx); } else if (Actor_IsActorFacingLink(&this->actor, 0x2AAA) && (this->actor.xzDistToPlayer < 200.0f) && - (this->skelAnime.animCurrentFrame > 24.0f) && (this->skelAnime.animCurrentFrame < 28.0f)) { + (this->skelAnime.curFrame > 24.0f) && (this->skelAnime.curFrame < 28.0f)) { this->actor.hintId = 0x55; this->actor.colChkInfo.mass = MASS_HEAVY; this->actor.targetArrowOffset = 2000.0f; @@ -521,7 +521,7 @@ void func_80995818(EnSkb* this, GlobalContext* globalCtx) { Math_ApproachF(&this->actor.shape.shadowScale, 25.0f, 1.0f, 2.5f); Math_SmoothStepToS(&this->actor.shape.rot.x, 0, 0x10, 0x7D0, 0x64); - if (func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { + if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { this->actor.shape.rot.x = 0; this->actor.gravity = -2.0f; func_80995A30(this); @@ -536,8 +536,7 @@ void func_80995818(EnSkb* this, GlobalContext* globalCtx) { } void func_809958F4(EnSkb* this) { - SkelAnime_ChangeAnim(&this->skelAnime, &D_06003584, -1.0f, SkelAnime_GetFrameCount(&D_06003584.common), 0.0f, 2, - -4.0f); + Animation_Change(&this->skelAnime, &D_06003584, -1.0f, Animation_GetLastFrame(&D_06003584), 0.0f, 2, -4.0f); this->unk_3E4 = 0; this->actor.flags &= ~1; this->actor.speedXZ = 0.0f; @@ -555,7 +554,7 @@ void func_8099599C(EnSkb* this, GlobalContext* globalCtx) { Math_ApproachF(&this->actor.shape.shadowScale, 0.0f, 1.0f, 2.5f); - if (func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { + if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { Actor_MarkForDeath(&this->actor); } } @@ -585,7 +584,7 @@ void func_80995A8C(EnSkb* this, GlobalContext* globalCtx) { Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer + this->unk_3DA, 1, 0x2EE, 0); this->actor.world.rot.y = this->actor.shape.rot.y; - if (func_801378B8(&this->skelAnime, 8.0f) || func_801378B8(&this->skelAnime, 15.0f)) { + if (Animation_OnFrame(&this->skelAnime, 8.0f) || Animation_OnFrame(&this->skelAnime, 15.0f)) { Audio_PlayActorSound2(&this->actor, 0x3830); } @@ -605,23 +604,23 @@ void func_80995C24(EnSkb* this) { } void func_80995C84(EnSkb* this, GlobalContext* globalCtx) { - if (func_801378B8(&this->skelAnime, 3.0f) && (this->unk_3E4 == 0)) { + if (Animation_OnFrame(&this->skelAnime, 3.0f) && (this->unk_3E4 == 0)) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_STALKID_ATTACK); this->unk_3E4 = 1; - } else if (func_801378B8(&this->skelAnime, 6.0f)) { + } else if (Animation_OnFrame(&this->skelAnime, 6.0f)) { this->unk_3E4 = 0; } if (this->collider.base.atFlags & AT_BOUNCED) { this->collider.base.atFlags &= ~(AT_BOUNCED | AT_HIT); func_80995D3C(this); - } else if (func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { + } else if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { func_80994DA8(this, globalCtx); } } void func_80995D3C(EnSkb* this) { - SkelAnime_ChangeAnim(&this->skelAnime, &D_06002190, -0.4f, this->skelAnime.animCurrentFrame - 1.0f, 0.0f, 3, 0.0f); + Animation_Change(&this->skelAnime, &D_06002190, -0.4f, this->skelAnime.curFrame - 1.0f, 0.0f, 3, 0.0f); this->collider.base.atFlags &= ~AT_BOUNCED; this->unk_3DE = 4; this->unk_3E4 = 0; @@ -629,7 +628,7 @@ void func_80995D3C(EnSkb* this) { } void func_80995DC4(EnSkb* this, GlobalContext* globalCtx) { - if (func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { + if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { func_80994DA8(this, globalCtx); } } @@ -720,7 +719,7 @@ void func_809960AC(EnSkb* this, GlobalContext* globalCtx) { } Math_SmoothStepToS(&this->actor.shape.rot.x, 0, 0x10, 0x7D0, 0x64); - if (func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount) && (this->actor.bgCheckFlags & 1)) { + if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame) && (this->actor.bgCheckFlags & 1)) { this->actor.shape.rot.x = 0; this->actor.world.rot = this->actor.shape.rot; func_80994DA8(this, globalCtx); @@ -1049,7 +1048,7 @@ void EnSkb_Update(Actor* thisx, GlobalContext* globalCtx) { this->actionFunc(this, globalCtx); if ((this->actionFunc != func_80995E64) && (this->actionFunc != func_80996284) && (this->actionFunc != func_8099630C) && (this->actionFunc != func_809963D8)) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); } func_8099672C(this, globalCtx); @@ -1087,7 +1086,7 @@ s32 EnSkb_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, } if (limbIndex == 10) { - SysMatrix_GetStateTranslation(&this->actor.focus.pos); + Matrix_GetStateTranslation(&this->actor.focus.pos); } return false; @@ -1112,10 +1111,10 @@ void EnSkb_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Ve if ((limbIndex == 2) || (limbIndex == 4) || (limbIndex == 5) || (limbIndex == 6) || (limbIndex == 7) || (limbIndex == 8) || (limbIndex == 9) || (limbIndex == 13) || (limbIndex == 14) || (limbIndex == 15) || (limbIndex == 16) || (limbIndex == 17) || (limbIndex == 18)) { - SysMatrix_GetStateTranslation(&this->unk_234[this->unk_2DC]); + Matrix_GetStateTranslation(&this->unk_234[this->unk_2DC]); this->unk_2DC++; } else if ((limbIndex == 11) && !(this->unk_3D8 & 2)) { - SysMatrix_MultiplyVector3fByState(&D_80997564, &this->unk_234[this->unk_2DC]); + Matrix_MultiplyVector3fByState(&D_80997564, &this->unk_234[this->unk_2DC]); this->unk_2DC++; } } @@ -1126,8 +1125,8 @@ void EnSkb_Draw(Actor* thisx, GlobalContext* globalCtx) { this->unk_2DC = 0; func_8012C28C(globalCtx->state.gfxCtx); - SkelAnime_Draw(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, EnSkb_OverrideLimbDraw, - EnSkb_PostLimbDraw, &this->actor); + SkelAnime_DrawOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, EnSkb_OverrideLimbDraw, + EnSkb_PostLimbDraw, &this->actor); if (this->unk_3D2 > 0) { func_800BE680(globalCtx, &this->actor, this->unk_234, this->unk_2DC, this->unk_230, 0.5f, this->unk_22C, this->unk_3E6); diff --git a/src/overlays/actors/ovl_En_Sob1/z_en_sob1.c b/src/overlays/actors/ovl_En_Sob1/z_en_sob1.c index 8d501627a..8f79570b6 100644 --- a/src/overlays/actors/ovl_En_Sob1/z_en_sob1.c +++ b/src/overlays/actors/ovl_En_Sob1/z_en_sob1.c @@ -171,12 +171,12 @@ void EnSob1_ChangeAnim(SkelAnime* skelAnime, ActorAnimationEntryS* animations, s animations += idx; if (animations->frameCount < 0) { - frameCount = SkelAnime_GetFrameCount(&animations->animationSeg->common); + frameCount = Animation_GetLastFrame(animations->animationSeg); } else { frameCount = animations->frameCount; } - SkelAnime_ChangeAnim(skelAnime, animations->animationSeg, animations->playbackSpeed, animations->frame, frameCount, - animations->mode, animations->transitionRate); + Animation_Change(skelAnime, animations->animationSeg, animations->playbackSpeed, animations->frame, frameCount, + animations->mode, animations->transitionRate); } void EnSob1_SetupAction(EnSob1* this, EnSob1ActionFunc action) { @@ -721,8 +721,8 @@ void EnSob1_LookToShopkeeperFromShelf(EnSob1* this, GlobalContext* globalCtx) { void EnSob1_EndWalk(EnSob1* this, GlobalContext* globalCtx) { s32 pad; f32 distSq; - s16 animCurrentFrame = this->skelAnime.animCurrentFrame / this->skelAnime.animPlaybackSpeed; - s16 animLastFrame = SkelAnime_GetFrameCount(&D_06009120.common) / (s16)this->skelAnime.animPlaybackSpeed; + s16 curFrame = this->skelAnime.curFrame / this->skelAnime.playSpeed; + s16 animLastFrame = Animation_GetLastFrame(&D_06009120) / (s16)this->skelAnime.playSpeed; Math_SmoothStepToS( &this->actor.world.rot.y, @@ -732,7 +732,7 @@ void EnSob1_EndWalk(EnSob1* this, GlobalContext* globalCtx) { Math_ApproachF(&this->actor.speedXZ, 0.5f, 0.2f, 1.0f); if (distSq < 12.0f) { this->actor.speedXZ = 0.0f; - if (animLastFrame == animCurrentFrame) { + if (animLastFrame == curFrame) { EnSob1_ChangeAnim(&this->skelAnime, sAnimationsBombShopkeeper, 1); EnSob1_SetupAction(this, EnSob1_SetupIdle); } @@ -741,9 +741,9 @@ void EnSob1_EndWalk(EnSob1* this, GlobalContext* globalCtx) { } void EnSob1_SetupIdle(EnSob1* this, GlobalContext* globalCtx) { - s16 animCurrentFrame = this->skelAnime.animCurrentFrame; + s16 curFrame = this->skelAnime.curFrame; - if (SkelAnime_GetFrameCount(&D_06008268.common) == animCurrentFrame) { + if (Animation_GetLastFrame(&D_06008268) == curFrame) { EnSob1_ChangeAnim(&this->skelAnime, sAnimationsBombShopkeeper, 2); EnSob1_SetupAction(this, EnSob1_Idle); } @@ -1334,31 +1334,26 @@ s32 EnSob1_AreObjectsLoaded(EnSob1* this, GlobalContext* globalCtx) { } void EnSob1_InitZoraShopkeeper(EnSob1* this, GlobalContext* globalCtx) { - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_0600D208, NULL, this->limbDrawTable, this->transitionDrawTable, - 20); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_0600D208, NULL, this->jointTable, this->morphTable, 20); gSegments[6] = PHYSICAL_TO_VIRTUAL(globalCtx->objectCtx.status[this->objIndices[2]].segment); - SkelAnime_ChangeAnim(&this->skelAnime, &D_0600078C, 1.0f, 0.0f, SkelAnime_GetFrameCount(&D_0600078C.common), 0, - 0.0f); + Animation_Change(&this->skelAnime, &D_0600078C, 1.0f, 0.0f, Animation_GetLastFrame(&D_0600078C), 0, 0.0f); this->actor.draw = EnSob1_DrawZoraShopkeeper; this->changeObjectFunc = EnSob1_ChangeObject; } void EnSob1_InitGoronShopkeeper(EnSob1* this, GlobalContext* globalCtx) { - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_06011AC8, NULL, this->limbDrawTable, this->transitionDrawTable, - 18); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_06011AC8, NULL, this->jointTable, this->morphTable, 18); gSegments[6] = PHYSICAL_TO_VIRTUAL(globalCtx->objectCtx.status[this->objIndices[2]].segment); - SkelAnime_ChangeAnim(&this->skelAnime, &D_060000FC, 1.0f, 0.0f, SkelAnime_GetFrameCount(&D_060000FC.common), 0, - 0.0f); + Animation_Change(&this->skelAnime, &D_060000FC, 1.0f, 0.0f, Animation_GetLastFrame(&D_060000FC), 0, 0.0f); this->actor.draw = EnSob1_DrawGoronShopkeeper; this->changeObjectFunc = EnSob1_ChangeObject; } void EnSob1_InitBombShopkeeper(EnSob1* this, GlobalContext* globalCtx) { - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_06009220, &D_06009120, this->limbDrawTable, - this->transitionDrawTable, 16); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_06009220, &D_06009120, this->jointTable, this->morphTable, 16); this->actor.draw = EnSob1_DrawBombShopkeeper; this->changeObjectFunc = NULL; - this->skelAnime.animPlaybackSpeed = 2.0f; + this->skelAnime.playSpeed = 2.0f; } void EnSob1_InitShop(EnSob1* this, GlobalContext* globalCtx) { @@ -1483,7 +1478,7 @@ void EnSob1_Update(Actor* thisx, GlobalContext* globalCtx) { if (changeObjectFunc != NULL) { changeObjectFunc(this, globalCtx); } - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); } else { this->actionFunc(this, globalCtx); } @@ -1613,7 +1608,7 @@ s32 EnSob1_OverrideLimbDrawBombShopkeeper(GlobalContext* globalCtx, s32 limbInde EnSob1* this = THIS; if (limbIndex == 15) { - SysMatrix_InsertXRotation_s(this->headRot, MTXMODE_APPLY); + Matrix_InsertXRotation_s(this->headRot, MTXMODE_APPLY); } return false; } @@ -1647,8 +1642,8 @@ void EnSob1_DrawZoraShopkeeper(Actor* thisx, GlobalContext* globalCtx) { gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, 255); gSPSegment(POLY_OPA_DISP++, 0x0C, EnSob1_EndDList(globalCtx->state.gfxCtx)); gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(sZoraShopkeeperEyeTextures[this->eyeTexIndex])); - SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, - EnSob1_OverrideLimbDrawZoraShopkeeper, NULL, &this->actor); + SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, + EnSob1_OverrideLimbDrawZoraShopkeeper, NULL, &this->actor); for (i = 0; i < ARRAY_COUNT(this->items); i++) { this->items[i]->actor.scale.x = 0.2f; this->items[i]->actor.scale.y = 0.2f; @@ -1668,8 +1663,8 @@ void EnSob1_DrawGoronShopkeeper(Actor* thisx, GlobalContext* globalCtx) { OPEN_DISPS(globalCtx->state.gfxCtx); func_8012C28C(globalCtx->state.gfxCtx); gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(sGoronShopkeeperEyeTextures[this->eyeTexIndex])); - SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, NULL, - NULL, &this->actor); + SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, + NULL, NULL, &this->actor); for (i = 0; i < ARRAY_COUNT(this->items); i++) { this->items[i]->actor.scale.x = 0.2f; this->items[i]->actor.scale.y = 0.2f; @@ -1689,8 +1684,8 @@ void EnSob1_DrawBombShopkeeper(Actor* thisx, GlobalContext* globalCtx) { OPEN_DISPS(globalCtx->state.gfxCtx); func_8012C28C(globalCtx->state.gfxCtx); gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(&D_06005458)); - SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, - EnSob1_OverrideLimbDrawBombShopkeeper, EnSob1_PostLimbDrawBombShopkeeper, &this->actor); + SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, + EnSob1_OverrideLimbDrawBombShopkeeper, EnSob1_PostLimbDrawBombShopkeeper, &this->actor); for (i = 0; i < ARRAY_COUNT(this->items); i++) { this->items[i]->actor.scale.x = 0.2f; this->items[i]->actor.scale.y = 0.2f; @@ -1700,7 +1695,7 @@ void EnSob1_DrawBombShopkeeper(Actor* thisx, GlobalContext* globalCtx) { EnSob1_DrawStickDirectionPrompt(globalCtx, this); frames = globalCtx->gameplayFrames; func_8012C2DC(globalCtx->state.gfxCtx); - SysMatrix_NormalizeXYZ(&globalCtx->mf_187FC); + Matrix_NormalizeXYZ(&globalCtx->mf_187FC); Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPSegment(POLY_XLU_DISP++, 0x08, diff --git a/src/overlays/actors/ovl_En_Sob1/z_en_sob1.h b/src/overlays/actors/ovl_En_Sob1/z_en_sob1.h index a7f8262fe..c1dfd3849 100644 --- a/src/overlays/actors/ovl_En_Sob1/z_en_sob1.h +++ b/src/overlays/actors/ovl_En_Sob1/z_en_sob1.h @@ -32,8 +32,8 @@ typedef struct EnSob1 { /* 0x1EA */ s8 objIndices[3]; /* 0x1EE */ s16 headRot; /* 0x1F0 */ s16 headRotTarget; - /* 0x1F2 */ Vec3s limbDrawTable[20]; - /* 0x26A */ Vec3s transitionDrawTable[20]; + /* 0x1F2 */ Vec3s jointTable[20]; + /* 0x26A */ Vec3s morphTable[20]; /* 0x2E2 */ s16 eyeTexIndex; /* 0x2E4 */ s16 blinkTimer; /* 0x2E8 */ EnSob1BlinkFunc blinkFunc; diff --git a/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c b/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c index ec18b9bd2..7449b0f5d 100644 --- a/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c +++ b/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c @@ -215,8 +215,8 @@ s32 func_80BAA904(EnSuttari* this, GlobalContext* globalCtx) { } void func_80BAA9B4(EnSuttari* this) { - s16 curFrame = this->skelAnime.animCurrentFrame; - s16 frameCount = SkelAnime_GetFrameCount(&sAnimations[this->animationIdx].animation->common); + s16 curFrame = this->skelAnime.curFrame; + s16 frameCount = Animation_GetLastFrame(sAnimations[this->animationIdx].animation); switch (this->textId) { case 0x1454: @@ -382,8 +382,8 @@ void func_80BAAB78(EnSuttari* this, GlobalContext* globalCtx) { } void func_80BAAF1C(EnSuttari* this) { - s16 curFrame = this->skelAnime.animCurrentFrame; - s16 frameCount = SkelAnime_GetFrameCount(&sAnimations[this->animationIdx].animation->common); + s16 curFrame = this->skelAnime.curFrame; + s16 frameCount = Animation_GetLastFrame(sAnimations[this->animationIdx].animation); if (this->animationIdx == 5) { this->animationIdx = 3; @@ -405,11 +405,11 @@ void func_80BAAFDC(EnSuttari* this, GlobalContext* globalCtx) { effectPos.x += Math_SinS(this->actor.world.rot.y + this->unk3F4) * 10.0f; effectPos.y += 60.0f; effectPos.z += Math_CosS(this->actor.world.rot.y + this->unk3F4) * 10.0f; - SysMatrix_StatePush(); + Matrix_StatePush(); Matrix_RotateY(this->actor.shape.rot.y, MTXMODE_NEW); effectVelOffset.z = 20.0f; - SysMatrix_MultiplyVector3fByState(&effectVelOffset, &effectVel); - SysMatrix_StatePop(); + Matrix_MultiplyVector3fByState(&effectVelOffset, &effectVel); + Matrix_StatePop(); if (this->unk3F0 == 0) { EffectSsSolderSrchBall_Spawn(globalCtx, &effectPos, &effectVel, &D_801D15B0, 50, &this->unk3F0, 1); } @@ -437,11 +437,11 @@ void func_80BAB1A0(EnSuttari* this, GlobalContext* globalCtx) { effectPos.x += Math_SinS(this->actor.world.rot.y + this->unk3F4) * 350.0f; effectPos.y += 60.0f; effectPos.z += Math_CosS(this->actor.world.rot.y + this->unk3F4) * 350.0f; - SysMatrix_StatePush(); + Matrix_StatePush(); Matrix_RotateY(this->actor.shape.rot.y, MTXMODE_NEW); effectVelOffset.z = 20.0f; - SysMatrix_MultiplyVector3fByState(&effectVelOffset, &effectVel); - SysMatrix_StatePop(); + Matrix_MultiplyVector3fByState(&effectVelOffset, &effectVel); + Matrix_StatePop(); if (this->unk3F0 == 0) { EffectSsSolderSrchBall_Spawn(globalCtx, &effectPos, &effectVel, &D_801D15B0, 50, &this->unk3F0, 1); } @@ -462,7 +462,7 @@ void func_80BAB1A0(EnSuttari* this, GlobalContext* globalCtx) { } void func_80BAB374(EnSuttari* this, GlobalContext* globalCtx) { - s16 curFrame = this->skelAnime.animCurrentFrame; + s16 curFrame = this->skelAnime.curFrame; Vec3f sp38; if ((curFrame % 3) == 0) { @@ -490,7 +490,7 @@ void func_80BAB4F0(EnSuttari* this, GlobalContext* globalCtx) { if (this->flags1 & 0x80) { EnSuttari_UpdateCollider(this, globalCtx); } - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); if (!(this->flags1 & 4) && (Player_GetMask(globalCtx) != PLAYER_MASK_STONE_MASK)) { if (func_8013D5E8(this->actor.shape.rot.y, 0x36B0, this->actor.yawTowardsPlayer) != 0) { sp30.x = player->actor.world.pos.x; @@ -816,8 +816,8 @@ s32 func_80BAC220(EnSuttari* this, GlobalContext* globalCtx) { void func_80BAC2FC(EnSuttari* this, GlobalContext* globalCtx) { Player* player = GET_PLAYER(globalCtx); - s16 curFrame = this->skelAnime.animCurrentFrame; - s16 frameCount = SkelAnime_GetFrameCount(&sAnimations[this->animationIdx].animation->common); + s16 curFrame = this->skelAnime.curFrame; + s16 frameCount = Animation_GetLastFrame(sAnimations[this->animationIdx].animation); switch (this->unk428) { case 12: @@ -913,7 +913,7 @@ void func_80BAC2FC(EnSuttari* this, GlobalContext* globalCtx) { void func_80BAC6E8(EnSuttari* this, GlobalContext* globalCtx) { ActorShape_Init(&this->actor.shape, 0.0f, NULL, 0.0f); - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_0600C240, &D_0600071C, this->jointTable, this->morphTable, 16); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_0600C240, &D_0600071C, this->jointTable, this->morphTable, 16); this->actor.draw = EnSuttari_Draw; this->actor.flags |= 1; if (globalCtx->sceneNum == SCENE_IKANA) { @@ -1220,8 +1220,8 @@ void func_80BAD380(EnSuttari* this, GlobalContext* globalCtx) { void func_80BAD5F8(EnSuttari* this, GlobalContext* globalCtx) { u32* unk_14 = &gSaveContext.unk_14; struct_80133038_arg2 unkStruct; - s16 curFrame = this->skelAnime.animCurrentFrame; - s16 frameCount = SkelAnime_GetFrameCount(&sAnimations[this->animationIdx].animation->common); + s16 curFrame = this->skelAnime.curFrame; + s16 frameCount = Animation_GetLastFrame(sAnimations[this->animationIdx].animation); if ((curFrame == frameCount) && (this->animationIdx == 0) && (this->flags1 & 0x20)) { this->animationIdx = 2; @@ -1256,8 +1256,8 @@ void func_80BAD5F8(EnSuttari* this, GlobalContext* globalCtx) { void func_80BAD7F8(EnSuttari* this, GlobalContext* globalCtx) { u32* unk_14 = &gSaveContext.unk_14; struct_80133038_arg2 unkStruct; - s16 curFrame = this->skelAnime.animCurrentFrame; - s16 frameCount = SkelAnime_GetFrameCount(&sAnimations[this->animationIdx].animation->common); + s16 curFrame = this->skelAnime.curFrame; + s16 frameCount = Animation_GetLastFrame(sAnimations[this->animationIdx].animation); if (this->enFsn == NULL) { this->enFsn = (EnFsn*)EnSuttari_GetActorById(globalCtx, ACTOR_EN_FSN); @@ -1305,8 +1305,8 @@ void func_80BADA08(EnSuttari* this, GlobalContext* globalCtx) { void func_80BADA9C(EnSuttari* this, GlobalContext* globalCtx) { u8 talkstate = func_80152498(&globalCtx->msgCtx); - s16 curFrame = this->skelAnime.animCurrentFrame; - s16 frameCount = SkelAnime_GetFrameCount(&sAnimations[this->animationIdx].animation->common); + s16 curFrame = this->skelAnime.curFrame; + s16 frameCount = Animation_GetLastFrame(sAnimations[this->animationIdx].animation); if (this->flags1 & 1) { this->unk3F2 = this->unk2DE; @@ -1460,11 +1460,11 @@ void EnSuttari_Update(Actor* thisx, GlobalContext* globalCtx) { } if (this->unk428 != 0) { if (this->animationIdx == 2 || this->animationIdx == 6) { - if (func_801378B8(&this->skelAnime, 8.0f) || func_801378B8(&this->skelAnime, 16.0f)) { + if (Animation_OnFrame(&this->skelAnime, 8.0f) || Animation_OnFrame(&this->skelAnime, 16.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EV_PAMERA_WALK); } } else if (this->animationIdx == 0 || this->animationIdx == 5) { - if (func_801378B8(&this->skelAnime, 8.0f) || func_801378B8(&this->skelAnime, 17.0f)) { + if (Animation_OnFrame(&this->skelAnime, 8.0f) || Animation_OnFrame(&this->skelAnime, 17.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EV_PAMERA_WALK); } } @@ -1478,15 +1478,15 @@ s32 EnSuttari_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dL if (limbIndex == 15) { *dList = D_0600AF90; if (!(this->flags1 & 4)) { - SysMatrix_InsertTranslation(1500.0f, 0.0f, 0.0f, MTXMODE_APPLY); - SysMatrix_InsertXRotation_s(this->unk3F2, MTXMODE_APPLY); - SysMatrix_InsertZRotation_s(-this->unk2DC, MTXMODE_APPLY); - SysMatrix_InsertTranslation(-1500.0f, 0.0f, 0.0f, MTXMODE_APPLY); + Matrix_InsertTranslation(1500.0f, 0.0f, 0.0f, MTXMODE_APPLY); + Matrix_InsertXRotation_s(this->unk3F2, MTXMODE_APPLY); + Matrix_InsertZRotation_s(-this->unk2DC, MTXMODE_APPLY); + Matrix_InsertTranslation(-1500.0f, 0.0f, 0.0f, MTXMODE_APPLY); } } if (limbIndex == 8) { - SysMatrix_InsertXRotation_s(-this->unk2E4, MTXMODE_APPLY); - SysMatrix_InsertZRotation_s(-this->unk2E2, MTXMODE_APPLY); + Matrix_InsertXRotation_s(-this->unk2E4, MTXMODE_APPLY); + Matrix_InsertZRotation_s(-this->unk2E2, MTXMODE_APPLY); } if (limbIndex == 8 || limbIndex == 9 || limbIndex == 0xC) { rot->y += (s16)(Math_SinS(this->unk2FA[limbIndex]) * 200.0f); @@ -1506,8 +1506,8 @@ void EnSuttari_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList if (((this->flags1 & 8) && (this->flags1 & 0x10)) || ((this->flags1 & 2) && !(this->flags1 & 0x20)) || ((this->flags1 & 4) && !(this->flags1 & 0x20))) { if (limbIndex == 8) { - curState = SysMatrix_GetCurrentState(); - SysMatrix_MultiplyVector3fByState(&D_80BAE95C, &this->unk3F8); + curState = Matrix_GetCurrentState(); + Matrix_MultiplyVector3fByState(&D_80BAE95C, &this->unk3F8); if (this->actor.child == NULL) { if (this->flags1 & 0x100) { bombBag = @@ -1526,7 +1526,7 @@ void EnSuttari_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList } } if (limbIndex == 15) { - SysMatrix_MultiplyVector3fByState(&D_80BAE950, &this->actor.focus.pos); + Matrix_MultiplyVector3fByState(&D_80BAE950, &this->actor.focus.pos); } } @@ -1545,7 +1545,7 @@ void EnSuttari_Draw(Actor* thisx, GlobalContext* globalCtx) { gSPSegment(POLY_OPA_DISP++, 0x08, Gfx_EnvColor(globalCtx->state.gfxCtx, 255, 255, 255, 0)); gSPSegment(POLY_OPA_DISP++, 0x09, Gfx_EnvColor(globalCtx->state.gfxCtx, 55, 55, 255, 0)); gDPPipeSync(POLY_OPA_DISP++); - func_801343C0(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, + func_801343C0(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, EnSuttari_OverrideLimbDraw, EnSuttari_PostLimbDraw, EnSuttari_UnkDraw, &this->actor); if (this->flags1 & 0x80) { func_8012C2DC(globalCtx->state.gfxCtx); diff --git a/src/overlays/actors/ovl_En_Sw/z_en_sw.c b/src/overlays/actors/ovl_En_Sw/z_en_sw.c index d0a58410c..5bcd70b77 100644 --- a/src/overlays/actors/ovl_En_Sw/z_en_sw.c +++ b/src/overlays/actors/ovl_En_Sw/z_en_sw.c @@ -289,8 +289,8 @@ void func_808D90F0(EnSw* this, s32 arg1, s16 arg2) { temp = arg2; } - SysMatrix_InsertRotationAroundUnitVector_f(BINANG_TO_RAD(temp), &this->unk_368, 0); - SysMatrix_MultiplyVector3fByState(&this->unk_350, &sp2C); + Matrix_InsertRotationAroundUnitVector_f(BINANG_TO_RAD(temp), &this->unk_368, 0); + Matrix_MultiplyVector3fByState(&this->unk_350, &sp2C); Math_Vec3f_Copy(&this->unk_350, &sp2C); Math3D_CrossProduct(&this->unk_368, &this->unk_350, &this->unk_35C); } @@ -328,8 +328,8 @@ s32 func_808D91C4(EnSw* this, CollisionPoly* arg1) { } Math_Vec3f_Scale(&sp2C, 1.0f / temp_f0); - SysMatrix_InsertRotationAroundUnitVector_f(sp4C, &sp2C, MTXMODE_NEW); - SysMatrix_MultiplyVector3fByState(&this->unk_35C, &sp2C); + Matrix_InsertRotationAroundUnitVector_f(sp4C, &sp2C, MTXMODE_NEW); + Matrix_MultiplyVector3fByState(&this->unk_35C, &sp2C); Math_Vec3f_Copy(&this->unk_35C, &sp2C); Math3D_CrossProduct(&this->unk_35C, &sp38, &this->unk_350); @@ -488,11 +488,11 @@ void func_808D9894(EnSw* this, Vec3f* vec) { sp1C.zw = 0.0f; sp1C.ww = 0.0f; - SysMatrix_SetCurrentState(&sp1C); + Matrix_SetCurrentState(&sp1C); sp5C.x = vec->x - this->actor.world.pos.x; sp5C.y = vec->y - this->actor.world.pos.y; sp5C.z = vec->z - this->actor.world.pos.z; - SysMatrix_MultiplyVector3fByState(&sp5C, vec); + Matrix_MultiplyVector3fByState(&sp5C, vec); } s32 func_808D9968(EnSw* this, GlobalContext* globalCtx) { @@ -529,8 +529,8 @@ s32 func_808D9A70(EnSw* this, GlobalContext* globalCtx) { f32 frame; if (DECR(this->unk_454) == 0) { - if (!func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { - frame = this->skelAnime.animFrameCount - this->skelAnime.animCurrentFrame; + if (!Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { + frame = this->skelAnime.endFrame - this->skelAnime.curFrame; sp2E = (80.0f * frame) * this->unk_450; } else { if (this->unk_456 != 0) { @@ -540,7 +540,7 @@ s32 func_808D9A70(EnSw* this, GlobalContext* globalCtx) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_STALGOLD_ROLL); } this->unk_456--; - this->skelAnime.animCurrentFrame = 0.0f; + this->skelAnime.curFrame = 0.0f; } else { this->unk_454 = Rand_S16Offset(20, 20); this->unk_456 = (Rand_ZeroOne() * 10.0f) + 3.0f; @@ -767,15 +767,15 @@ void func_808DA3F4(EnSw* this, GlobalContext* globalCtx) { Vec3f sp38; f32 temp_f16; - if (!func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { - temp_f16 = this->skelAnime.animFrameCount - this->skelAnime.animCurrentFrame; + if (!Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { + temp_f16 = this->skelAnime.endFrame - this->skelAnime.curFrame; temp_s1 = (s16)(80.0f * temp_f16); Math_Vec3f_Copy(&sp38, &this->unk_374); func_808D9894(this, &sp38); temp_v0 = Math_FAtan2F(sp38.z, sp38.x); if (ABS_ALT(temp_v0) < temp_s1) { - this->skelAnime.animCurrentFrame = 0.0f; + this->skelAnime.curFrame = 0.0f; Audio_PlayActorSound2(&this->actor, NA_SE_EN_STALWALL_DASH); this->unk_414 = 0.0f; if (this->unk_410 & 0x20) { @@ -788,7 +788,7 @@ void func_808DA3F4(EnSw* this, GlobalContext* globalCtx) { temp_s1 *= (temp_v0 < 0) ? -1 : 1; } else { Audio_PlayActorSound2(&this->actor, NA_SE_EN_STALWALL_ROLL); - this->skelAnime.animCurrentFrame = 0.0f; + this->skelAnime.curFrame = 0.0f; } func_808D94D0(this, globalCtx, 0, 0, temp_s1); } @@ -800,8 +800,8 @@ void func_808DA578(EnSw* this, GlobalContext* globalCtx) { s32 test2; Vec3f sp30; - if (!func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { - temp_f0 = this->skelAnime.animFrameCount - this->skelAnime.animCurrentFrame; + if (!Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { + temp_f0 = this->skelAnime.endFrame - this->skelAnime.curFrame; this->unk_44C = 0.3f * temp_f0; func_808D94D0(this, globalCtx, 1, 0, 0); if ((this->actor.speedXZ == 0.0f) && (this->unk_44C != 0.0f)) { @@ -814,7 +814,7 @@ void func_808DA578(EnSw* this, GlobalContext* globalCtx) { this->actionFunc = func_808DA3F4; } else { Audio_PlayActorSound2(&this->actor, NA_SE_EN_STALWALL_DASH); - this->skelAnime.animCurrentFrame = 0.0f; + this->skelAnime.curFrame = 0.0f; } temp_f0 = Math_Vec3f_DistXYZ(&this->actor.world.pos, &this->unk_374); @@ -839,8 +839,8 @@ void func_808DA6FC(EnSw* this, GlobalContext* globalCtx) { Vec3f sp38; f32 temp_f0; - if (!func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { - temp_f0 = this->skelAnime.animFrameCount - this->skelAnime.animCurrentFrame; + if (!Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { + temp_f0 = this->skelAnime.endFrame - this->skelAnime.curFrame; this->unk_44C = 0.14f * temp_f0; func_808D94D0(this, globalCtx, 1, 0, 0); if ((this->actor.speedXZ == 0.0f) && (this->unk_44C != 0.0f)) { @@ -850,7 +850,7 @@ void func_808DA6FC(EnSw* this, GlobalContext* globalCtx) { } } else { Audio_PlayActorSound2(&this->actor, NA_SE_EN_STALWALL_DASH); - this->skelAnime.animCurrentFrame = 0.0f; + this->skelAnime.curFrame = 0.0f; } sp4C = Math_Vec3f_DistXYZ(&this->actor.world.pos, &this->unk_374); @@ -861,7 +861,7 @@ void func_808DA6FC(EnSw* this, GlobalContext* globalCtx) { this->unk_454 = Rand_S16Offset(20, 20); this->unk_456 = (Rand_ZeroOne() * 10.0f) + 3.0f; this->actionFunc = func_808DA350; - this->skelAnime.animCurrentFrame = 0.0f; + this->skelAnime.curFrame = 0.0f; } this->unk_414 = sp4C; } @@ -939,15 +939,15 @@ void func_808DAA60(EnSw* this, GlobalContext* globalCtx) { sp40 = 0; if (DECR(this->unk_454) == 0) { - if (func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount) == 0) { - temp_f16 = this->skelAnime.animFrameCount - this->skelAnime.animCurrentFrame; + if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame) == 0) { + temp_f16 = this->skelAnime.endFrame - this->skelAnime.curFrame; sp40 = 80.0f * temp_f16; if (this->unk_45E == 0) { Math_Vec3s_ToVec3f(&sp34, &sp44[this->unk_4A0]); func_808D9894(this, &sp34); temp_v0 = Math_FAtan2F(sp34.z, sp34.x); if (ABS_ALT(temp_v0) < sp40) { - this->skelAnime.animCurrentFrame = 0.0f; + this->skelAnime.curFrame = 0.0f; Audio_PlayActorSound2(&this->actor, NA_SE_EN_STALWALL_DASH); Math_Vec3s_ToVec3f(&this->unk_374, &sp44[this->unk_4A0]); this->actionFunc = func_808DACF4; @@ -960,7 +960,7 @@ void func_808DAA60(EnSw* this, GlobalContext* globalCtx) { if (this->unk_456 != 0) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_STALGOLD_ROLL); this->unk_456--; - this->skelAnime.animCurrentFrame = 0.0f; + this->skelAnime.curFrame = 0.0f; } else { this->unk_454 = Rand_S16Offset(20, 20); this->unk_456 = (Rand_ZeroOne() * 10.0f) + 3.0f; @@ -987,11 +987,11 @@ void func_808DACF4(EnSw* this, GlobalContext* globalCtx) { f32 temp_f0; s32 temp_f6; - if (func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount) == 0) { + if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame) == 0) { Vec3f sp38; f32 temp; - temp = this->skelAnime.animFrameCount - this->skelAnime.animCurrentFrame; + temp = this->skelAnime.endFrame - this->skelAnime.curFrame; this->unk_44C = 0.1f * temp; func_808D94D0(this, globalCtx, 1, 0, 0); if ((this->actor.speedXZ == 0.0f) && (this->unk_44C != 0.0f)) { @@ -1002,7 +1002,7 @@ void func_808DACF4(EnSw* this, GlobalContext* globalCtx) { } } else { Audio_PlayActorSound2(&this->actor, NA_SE_EN_STALWALL_DASH); - this->skelAnime.animCurrentFrame = 0.0f; + this->skelAnime.curFrame = 0.0f; } sp4C = Math_Vec3f_DistXYZ(&this->actor.world.pos, &this->unk_374); @@ -1092,7 +1092,7 @@ void func_808DB100(EnSw* this, GlobalContext* globalCtx) { this->unk_498 = this->actor.parent->id; this->unk_456 = 0; this->unk_454 = 0; - this->skelAnime.animCurrentFrame = 0.0f; + this->skelAnime.curFrame = 0.0f; func_800BC154(globalCtx, &globalCtx->actorCtx, &this->actor, 4); this->actionFunc = func_808DB25C; return; @@ -1103,7 +1103,7 @@ void func_808DB100(EnSw* this, GlobalContext* globalCtx) { return; } - if ((DECR(this->unk_454) == 0) && func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { + if ((DECR(this->unk_454) == 0) && Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { if (this->unk_456 != 0) { if (!ENSW_GET_3(&this->actor)) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_STALWALL_ROLL); @@ -1111,7 +1111,7 @@ void func_808DB100(EnSw* this, GlobalContext* globalCtx) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_STALGOLD_ROLL); } this->unk_456--; - this->skelAnime.animCurrentFrame = 0.0f; + this->skelAnime.curFrame = 0.0f; } else { this->unk_454 = Rand_S16Offset(20, 20); this->unk_456 = (Rand_ZeroOne() * 10.0f) + 3.0f; @@ -1171,7 +1171,7 @@ void EnSw_Init(Actor* thisx, GlobalContext* globalCtx) { ActorShape_Init(&this->actor.shape, 0.0f, NULL, 0.0f); SkelAnime_Init(globalCtx, &this->skelAnime, &D_06005298, NULL, this->jointTable, this->morphTable, 30); func_8013BC6C(&this->skelAnime, sAnimations, 0); - this->skelAnime.animPlaybackSpeed = 4.0f; + this->skelAnime.playSpeed = 4.0f; Collider_InitAndSetSphere(globalCtx, &this->collider, &this->actor, &sSphereInit); if (!ENSW_GET_3(&this->actor)) { @@ -1261,7 +1261,7 @@ void EnSw_Update(Actor* thisx, GlobalContext* globalCtx) { } if ((this->unk_412 != 10) || (this->unk_45A != 0)) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); } Actor_SetHeight(&this->actor, 0.0f); @@ -1327,9 +1327,9 @@ void EnSw_Draw(Actor* thisx, GlobalContext* globalCtx) { func_800B8050(&this->actor, globalCtx, MTXMODE_NEW); } func_8012C28C(globalCtx->state.gfxCtx); - SysMatrix_InsertXRotation_s(-0x3C72, MTXMODE_APPLY); - SkelAnime_Draw(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, EnSw_OverrideLimbDraw, NULL, - &this->actor); + Matrix_InsertXRotation_s(-0x3C72, MTXMODE_APPLY); + SkelAnime_DrawOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, EnSw_OverrideLimbDraw, NULL, + &this->actor); } for (i = 0, count = 0; i < ARRAY_COUNT(this->unk_464); i++) { diff --git a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c index e44872127..7e641a4ed 100644 --- a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c +++ b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c @@ -141,9 +141,11 @@ void EnSyatekiMan_Init(Actor* thisx, GlobalContext* globalCtx) { this->actor.targetMode = 1; Actor_SetScale(&this->actor, 0.01f); if (globalCtx->sceneNum == SCENE_SYATEKI_MORI) { - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_0600E7D0, &D_0600DFEC, this->jointTable, this->morphTable, 16); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_0600E7D0, &D_0600DFEC, this->jointTable, this->morphTable, + 16); } else { - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_0600E7D0, &D_0600D9D0, this->jointTable, this->morphTable, 16); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_0600E7D0, &D_0600D9D0, this->jointTable, this->morphTable, + 16); } this->actor.colChkInfo.cylRadius = 100; @@ -415,8 +417,8 @@ void func_809C6E30(EnSyatekiMan* this, GlobalContext* globalCtx) { break; } - if (this->skelAnime.animCurrentSeg == &D_0600D2F8) { - if (func_801378B8(&this->skelAnime, this->skelAnime.animFrameCount)) { + if (this->skelAnime.animation == &D_0600D2F8) { + if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { func_800BDC5C(&this->skelAnime, sAnimations, 0); } } @@ -1239,7 +1241,7 @@ void EnSyatekiMan_Update(Actor* thisx, GlobalContext* globalCtx) { this->actor.focus.pos.y = 70.0f; Actor_SetHeight(&this->actor, 70.0f); if (this->unk_26A != 1) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); func_800E9250(globalCtx, &this->actor, &this->unk_258, &this->unk_25E, this->actor.focus.pos); } } @@ -1253,12 +1255,12 @@ s32 EnSyatekiMan_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** } if (limbIndex == 15) { - SysMatrix_InsertTranslation(3000.0f, 0.0f, 0.0f, MTXMODE_APPLY); - SysMatrix_InsertZRotation_s(this->unk_258.x, MTXMODE_APPLY); - SysMatrix_InsertXRotation_s(this->unk_258.y, MTXMODE_APPLY); - SysMatrix_InsertTranslation(-3000.0f, 0.0f, 0.0f, MTXMODE_APPLY); + Matrix_InsertTranslation(3000.0f, 0.0f, 0.0f, MTXMODE_APPLY); + Matrix_InsertZRotation_s(this->unk_258.x, MTXMODE_APPLY); + Matrix_InsertXRotation_s(this->unk_258.y, MTXMODE_APPLY); + Matrix_InsertTranslation(-3000.0f, 0.0f, 0.0f, MTXMODE_APPLY); } else if (limbIndex == 8) { - SysMatrix_InsertXRotation_s(-this->unk_25E.y, MTXMODE_APPLY); + Matrix_InsertXRotation_s(-this->unk_25E.y, MTXMODE_APPLY); } return false; @@ -1269,7 +1271,7 @@ void EnSyatekiMan_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dL Vec3f sp18 = { 1600.0f, 0.0f, 0.0f }; if (limbIndex == 15) { - SysMatrix_MultiplyVector3fByState(&sp18, &this->actor.focus.pos); + Matrix_MultiplyVector3fByState(&sp18, &this->actor.focus.pos); } } @@ -1299,7 +1301,7 @@ void EnSyatekiMan_Draw(Actor* thisx, GlobalContext* globalCtx) { gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(D_809C94B8[this->unk_264])); gSPSegment(POLY_OPA_DISP++, 0x09, Lib_SegmentedToVirtual(D_809C94B8[this->unk_264])); - SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, + SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, EnSyatekiMan_OverrideLimbDraw, EnSyatekiMan_PostLimbDraw, &this->actor); CLOSE_DISPS(globalCtx->state.gfxCtx); diff --git a/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c b/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c index d98657a29..b303ed877 100644 --- a/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c +++ b/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c @@ -37,17 +37,14 @@ extern AnimationHeader D_06000278; extern AnimationHeader D_06000604; extern Gfx D_06003060[]; extern Gfx D_060030D8[]; -extern UNK_PTR D_060033B0; -extern UNK_PTR D_06003D58; -extern UNK_TYPE D_06004348; -extern UNK_TYPE D_06004B88; -extern UNK_TYPE D_060055E0; +extern Gfx D_060033B0[]; +extern Gfx D_06003D58[]; +extern Gfx D_06004348[]; +extern Gfx D_06004B88[]; +extern Gfx D_060055E0[]; extern FlexSkeletonHeader D_060061A0; extern AnimationHeader D_060063C4; -static Vec3f D_80C13920; -static s32 D_80C1392C; - const ActorInit En_Thiefbird_InitVars = { ACTOR_EN_THIEFBIRD, ACTORCAT_ENEMY, @@ -156,13 +153,16 @@ static InitChainEntry sInitChain[] = { ICHAIN_F32(targetArrowOffset, 500, ICHAIN_STOP), }; +static Vec3f D_80C13920; +static s32 D_80C1392C; + void EnThiefbird_Init(Actor* thisx, GlobalContext* globalCtx) { EnThiefbird* this = THIS; s32 i; ColliderJntSphElementDim* dim; Actor_ProcessInitChain(&this->actor, sInitChain); - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_060061A0, &D_06000604, this->jointTable, this->morphTable, 17); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_060061A0, &D_06000604, this->jointTable, this->morphTable, 17); Collider_InitAndSetJntSph(globalCtx, &this->collider, &this->actor, &sJntSphInit, this->colliderElements); for (i = 0; i < ARRAY_COUNT(this->colliderElements); i++) { @@ -217,7 +217,7 @@ void func_80C10984(EnThiefbird* this, s32 arg1) { } s32 func_80C10B0C(EnThiefbird* this, GlobalContext* globalCtx) { - static UNK_TYPE D_80C13680[] = { &D_06004348, &D_06004B88, &D_060055E0 }; + static Gfx* D_80C13680[] = { D_06004348, D_06004B88, D_060055E0 }; s32 isItemFound = false; s32 phi_a3 = 0; s32 i = 18; @@ -249,7 +249,7 @@ s32 func_80C10B0C(EnThiefbird* this, GlobalContext* globalCtx) { if (isItemFound) { func_801149A0(sp1E, i); - this->unk_3E8 = &D_060033B0; + this->unk_3E8 = D_060033B0; if (!func_80152498(&globalCtx->msgCtx)) { func_801518B0(globalCtx, 0xF4, NULL); } @@ -266,7 +266,7 @@ s32 func_80C10B0C(EnThiefbird* this, GlobalContext* globalCtx) { phi_t0_3 = phi_a3 + 0x4C; if (phi_a3 == 4) { func_801149A0(16, 16); - this->unk_3E8 = &D_06003D58; + this->unk_3E8 = D_06003D58; phi_t0_3 = 0x10; } else { CUR_FORM_EQUIP(EQUIP_SLOT_B) = ITEM_NONE; @@ -471,7 +471,7 @@ void func_80C114C0(EnThiefbird* this, GlobalContext* globalCtx) { } void func_80C11538(EnThiefbird* this) { - SkelAnime_ChangeAnimTransitionRepeat(&this->skelAnime, &D_06000604, -4.0f); + Animation_MorphToLoop(&this->skelAnime, &D_06000604, -4.0f); this->unk_18E = 60; this->collider.base.acFlags |= AC_ON; this->actionFunc = func_80C11590; @@ -481,8 +481,8 @@ void func_80C11590(EnThiefbird* this, GlobalContext* globalCtx) { Player* player = GET_PLAYER(globalCtx); s32 sp38; - SkelAnime_FrameUpdateMatrix(&this->skelAnime); - sp38 = func_801378B8(&this->skelAnime, 0.0f); + SkelAnime_Update(&this->skelAnime); + sp38 = Animation_OnFrame(&this->skelAnime, 0.0f); this->actor.speedXZ = (Rand_ZeroOne() * 1.5f) + 3.0f; if (this->actor.bgCheckFlags & 8) { @@ -535,7 +535,7 @@ void func_80C11590(EnThiefbird* this, GlobalContext* globalCtx) { } void func_80C118E4(EnThiefbird* this) { - SkelAnime_ChangeAnimTransitionRepeat(&this->skelAnime, &D_060063C4, -10.0f); + Animation_MorphToLoop(&this->skelAnime, &D_060063C4, -10.0f); this->unk_18E = 300; this->actionFunc = func_80C1193C; this->actor.speedXZ = 5.0f; @@ -545,8 +545,8 @@ void func_80C1193C(EnThiefbird* this, GlobalContext* globalCtx) { Player* player = GET_PLAYER(globalCtx); s16 pitch; - SkelAnime_FrameUpdateMatrix(&this->skelAnime); - if (func_801378B8(&this->skelAnime, 1.0f)) { + SkelAnime_Update(&this->skelAnime); + if (Animation_OnFrame(&this->skelAnime, 1.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_KAICHO_FLUTTER); } @@ -602,7 +602,7 @@ void func_80C1193C(EnThiefbird* this, GlobalContext* globalCtx) { void func_80C11C60(EnThiefbird* this) { this->actor.speedXZ = 0.0f; this->actor.velocity.y = 0.0f; - SkelAnime_ChangeAnimDefaultStop(&this->skelAnime, &D_06000088); + Animation_PlayOnce(&this->skelAnime, &D_06000088); this->actor.bgCheckFlags &= ~1; this->actor.shape.rot.x = 0; this->unk_18E = 40; @@ -674,7 +674,7 @@ void func_80C11DF0(EnThiefbird* this, GlobalContext* globalCtx) { } void func_80C11F6C(EnThiefbird* this, GlobalContext* globalCtx) { - SkelAnime_ChangeAnimTransitionRepeat(&this->skelAnime, &D_06000278, -4.0f); + Animation_MorphToLoop(&this->skelAnime, &D_06000278, -4.0f); func_80C10984(this, 15); if (this->actor.colChkInfo.damageEffect != 3) { this->actor.speedXZ = 4.0f; @@ -732,7 +732,7 @@ void func_80C1215C(EnThiefbird* this, GlobalContext* globalCtx) { } } - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); if (this->actor.bgCheckFlags & 8) { this->unk_192 = this->actor.wallYaw; } else if (this->unk_3E8 == 0) { @@ -758,7 +758,7 @@ void func_80C1215C(EnThiefbird* this, GlobalContext* globalCtx) { } void func_80C12308(EnThiefbird* this) { - SkelAnime_ChangeAnimTransitionRepeat(&this->skelAnime, &D_06000278, -4.0f); + Animation_MorphToLoop(&this->skelAnime, &D_06000278, -4.0f); func_80C10984(this, 15); this->unk_190 = -0x1000; this->unk_192 = BINANG_ROT180(this->actor.yawTowardsPlayer); @@ -771,7 +771,7 @@ void func_80C12378(EnThiefbird* this, GlobalContext* globalCtx) { this->unk_18E--; } - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); if (this->actor.bgCheckFlags & 8) { this->unk_192 = this->actor.wallYaw; } else { @@ -787,7 +787,7 @@ void func_80C12378(EnThiefbird* this, GlobalContext* globalCtx) { } void func_80C1242C(EnThiefbird* this) { - SkelAnime_ChangeAnim(&this->skelAnime, &D_06000278, 2.0f, 0.0f, 0.0f, 0, -4.0f); + Animation_Change(&this->skelAnime, &D_06000278, 2.0f, 0.0f, 0.0f, 0, -4.0f); this->actor.flags |= 0x10; this->collider.base.acFlags |= AC_ON; this->actionFunc = func_80C124B0; @@ -798,7 +798,7 @@ void func_80C124B0(EnThiefbird* this, GlobalContext* globalCtx) { Actor* temp_v0; s16 temp_v1; - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); if (this->actor.bgCheckFlags & 8) { this->unk_192 = this->actor.wallYaw; } else { @@ -839,7 +839,7 @@ void func_80C126A8(EnThiefbird* this) { } void func_80C126D8(EnThiefbird* this, GlobalContext* globalCtx) { - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); Math_ApproachS(&this->actor.shape.rot.x, 0x3000, 6, 0x1000); if (this->actor.yDistToPlayer > 100.0f) { Actor_MarkForDeath(&this->actor); @@ -847,14 +847,14 @@ void func_80C126D8(EnThiefbird* this, GlobalContext* globalCtx) { } void func_80C12744(EnThiefbird* this) { - SkelAnime_ChangeAnimTransitionRepeat(&this->skelAnime, &D_06000604, -4.0f); - SkelAnime_ChangeAnim(&this->skelAnime, &D_06000604, 1.0f, 0.0f, 0.0f, 1, -4.0f); + Animation_MorphToLoop(&this->skelAnime, &D_06000604, -4.0f); + Animation_Change(&this->skelAnime, &D_06000604, 1.0f, 0.0f, 0.0f, 1, -4.0f); this->unk_190 = 0; this->collider.base.acFlags |= AC_ON; this->actor.flags |= 0x10; this->actionFunc = func_80C127F4; this->actor.speedXZ = 4.0f; - this->skelAnime.animPlaybackSpeed = 3.0f; + this->skelAnime.playSpeed = 3.0f; } void func_80C127F4(EnThiefbird* this, GlobalContext* globalCtx) { @@ -862,7 +862,7 @@ void func_80C127F4(EnThiefbird* this, GlobalContext* globalCtx) { s16 temp_v0; f32 temp_f0; - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); if ((this->unk_3EC != NULL) && ((this->unk_3EC->actor.update == NULL) || (this->unk_3EC->unk152 == 0) || (Actor_XZDistanceBetweenActors(&player->actor, &this->unk_3EC->actor) <= 10.0f))) { this->unk_3EC = NULL; @@ -1041,8 +1041,8 @@ void EnThiefbird_Update(Actor* thisx, GlobalContext* globalCtx2) { } func_80C12D00(this); - if (((this->skelAnime.animCurrentSeg == &D_06000604) && func_801378B8(&this->skelAnime, 13.0f)) || - ((this->skelAnime.animCurrentSeg == &D_06000278) && func_801378B8(&this->skelAnime, 1.0f))) { + if (((this->skelAnime.animation == &D_06000604) && Animation_OnFrame(&this->skelAnime, 13.0f)) || + ((this->skelAnime.animation == &D_06000278) && Animation_OnFrame(&this->skelAnime, 1.0f))) { Audio_PlayActorSound2(&this->actor, NA_SE_EN_KAICHO_FLUTTER); } } @@ -1077,17 +1077,17 @@ void EnThiefbird_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dLi OPEN_DISPS(globalCtx->state.gfxCtx); gfx = POLY_OPA_DISP; - SysMatrix_NormalizeXYZ(&globalCtx->mf_187FC); + Matrix_NormalizeXYZ(&globalCtx->mf_187FC); gSPMatrix(&gfx[0], Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(&gfx[1], this->unk_3E4); POLY_OPA_DISP = &gfx[2]; CLOSE_DISPS(globalCtx->state.gfxCtx); } else if (limbIndex == 16) { - if (this->unk_3E8 != 0) { + if (this->unk_3E8 != NULL) { OPEN_DISPS(globalCtx->state.gfxCtx); - if (this->unk_3E8 == &D_060033B0) { + if (this->unk_3E8 == D_060033B0) { gfx = POLY_XLU_DISP; } else { gfx = POLY_OPA_DISP; @@ -1096,7 +1096,7 @@ void EnThiefbird_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dLi gSPMatrix(&gfx[0], Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(&gfx[1], this->unk_3E8); - if (this->unk_3E8 == &D_060033B0) { + if (this->unk_3E8 == D_060033B0) { POLY_XLU_DISP = &gfx[2]; } else { POLY_OPA_DISP = &gfx[2]; @@ -1109,11 +1109,11 @@ void EnThiefbird_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dLi idx = D_80C13698[limbIndex]; if (idx != -1) { if (idx == 9) { - SysMatrix_GetStateTranslationAndScaledX(1000.0f, &this->unk_350[idx]); + Matrix_GetStateTranslationAndScaledX(1000.0f, &this->unk_350[idx]); } else { - SysMatrix_GetStateTranslation(&this->unk_350[idx]); + Matrix_GetStateTranslation(&this->unk_350[idx]); if ((idx == 3) || (idx == 5)) { - SysMatrix_GetStateTranslationAndScaledX(2000.0f, &this->unk_350[idx + 1]); + Matrix_GetStateTranslationAndScaledX(2000.0f, &this->unk_350[idx + 1]); } } } @@ -1134,11 +1134,11 @@ void func_80C13354(EnThiefbird* this, GlobalContext* globalCtx2) { for (i = 0; i < ARRAY_COUNT(this->unk_3F0); i++, ptr++) { if (ptr->unk_22 != 0) { - SysMatrix_InsertTranslation(ptr->unk_00.x, ptr->unk_00.y, ptr->unk_00.z, MTXMODE_NEW); - SysMatrix_NormalizeXYZ(&globalCtx->mf_187FC); + Matrix_InsertTranslation(ptr->unk_00.x, ptr->unk_00.y, ptr->unk_00.z, MTXMODE_NEW); + Matrix_NormalizeXYZ(&globalCtx->mf_187FC); Matrix_RotateY(ptr->unk_1E, MTXMODE_APPLY); - SysMatrix_InsertZRotation_s(ptr->unk_20, MTXMODE_APPLY); - SysMatrix_InsertTranslation(0.0f, -10.0f, 0.0f, MTXMODE_APPLY); + Matrix_InsertZRotation_s(ptr->unk_20, MTXMODE_APPLY); + Matrix_InsertTranslation(0.0f, -10.0f, 0.0f, MTXMODE_APPLY); Matrix_Scale(ptr->unk_18, ptr->unk_18, 1.0f, MTXMODE_APPLY); gSPMatrix(&gfx[0], Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); @@ -1155,8 +1155,8 @@ void EnThiefbird_Draw(Actor* thisx, GlobalContext* globalCtx) { EnThiefbird* this = THIS; func_8012C28C(globalCtx->state.gfxCtx); - SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, - EnThiefbird_OverrideLimbDraw, EnThiefbird_PostLimbDraw, &this->actor); + SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, + EnThiefbird_OverrideLimbDraw, EnThiefbird_PostLimbDraw, &this->actor); if (this->actor.colorFilterTimer > 0) { func_800AE5A0(globalCtx); } diff --git a/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.h b/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.h index 7e3e3c32a..5581f1155 100644 --- a/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.h +++ b/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.h @@ -37,7 +37,7 @@ typedef struct EnThiefbird { /* 0x03DC */ f32 unk_3DC; /* 0x03E0 */ f32 unk_3E0; /* 0x03E4 */ Gfx* unk_3E4; - /* 0x03E8 */ UNK_PTR unk_3E8; + /* 0x03E8 */ Gfx* unk_3E8; /* 0x03EC */ EnItem00* unk_3EC; /* 0x03F0 */ EnThiefbirdUnkStruct unk_3F0[40]; } EnThiefbird; // size = 0x990 diff --git a/src/overlays/actors/ovl_En_Toto/z_en_toto.c b/src/overlays/actors/ovl_En_Toto/z_en_toto.c index d15af5517..0fd8d2564 100644 --- a/src/overlays/actors/ovl_En_Toto/z_en_toto.c +++ b/src/overlays/actors/ovl_En_Toto/z_en_toto.c @@ -205,8 +205,9 @@ void EnToto_Init(Actor* thisx, GlobalContext* globalCtx) { } ActorShape_Init(&this->actor.shape, 0.0f, func_800B3FC0, 30.0f); this->actor.bgCheckFlags |= 0x400; - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_0600A978, globalCtx->sceneNum == 0x12 ? &D_06003AA8 : &D_0600C880, - this->limbDrawTbl, this->transitionDrawTbl, 18); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_0600A978, + ((globalCtx->sceneNum == 0x12) ? &D_06003AA8 : &D_0600C880), this->jointTable, this->morphTable, + 18); func_80BA36C0(this, globalCtx, 0); this->actor.shape.rot.x = 0; } @@ -218,14 +219,13 @@ void EnToto_Destroy(Actor* thisx, GlobalContext* globalCtx) { } void func_80BA383C(EnToto* this, GlobalContext* globalCtx) { - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime) && this->actionFuncIndex == 1 && - this->skelAnime.animCurrentSeg != &D_06000C80) { + if (SkelAnime_Update(&this->skelAnime) && this->actionFuncIndex == 1 && this->skelAnime.animation != &D_06000C80) { if (globalCtx->msgCtx.unk11F04 != 0x2A98 && globalCtx->msgCtx.unk11F04 != 0x2A99) { if (this->unk2B4 & 1 || Rand_ZeroOne() > 0.5f) { this->unk2B4 = (this->unk2B4 + 1) & 3; } } - SkelAnime_ChangeAnimDefaultStop(&this->skelAnime, D_80BA5078[this->unk2B4]); + Animation_PlayOnce(&this->skelAnime, D_80BA5078[this->unk2B4]); } func_800BBB74(&this->unk260, 0x14, 0x50, 3); } @@ -236,7 +236,7 @@ void func_80BA3930(EnToto* this, GlobalContext* globalCtx) { if (globalCtx->sceneNum == 0x12) { animationHeader = &D_06003AA8; } - SkelAnime_ChangeAnimTransitionRepeat(&this->skelAnime, animationHeader, -4.0f); + Animation_MorphToLoop(&this->skelAnime, animationHeader, -4.0f); } s32 func_80BA397C(EnToto* this, s16 arg1) { @@ -298,13 +298,13 @@ void func_80BA39C8(EnToto* this, GlobalContext* globalCtx) { void func_80BA3BFC(EnToto* this, GlobalContext* globalCtx) { if (globalCtx->sceneNum == 0x12) { - SkelAnime_ChangeAnimTransitionStop(&this->skelAnime, &D_06000C80, -4.0f); + Animation_MorphToPlayOnce(&this->skelAnime, &D_06000C80, -4.0f); this->unk2B4 = 0; } else { if (this->text->unk0 == 4) { func_80151BB4(globalCtx, 9); } - SkelAnime_ChangeAnimTransitionRepeat(&this->skelAnime, &D_0600B3E0, -4.0f); + Animation_MorphToLoop(&this->skelAnime, &D_0600B3E0, -4.0f); } } @@ -652,7 +652,7 @@ s32 func_80BA4B24(EnToto* this, GlobalContext* globalCtx) { if (func_80BA40D4(this, globalCtx)) { player = GET_PLAYER(globalCtx); - SkelAnime_ChangeAnimTransitionStop(&this->skelAnime, &D_060028B8, -4.0f); + Animation_MorphToPlayOnce(&this->skelAnime, &D_060028B8, -4.0f); if (player->transformation == PLAYER_FORM_ZORA) { if (!Flags_GetSwitch(globalCtx, this->actor.params & 0x7F)) { Actor_SetSwitchFlag(globalCtx, this->actor.params & 0x7F); @@ -695,9 +695,9 @@ void func_80BA4CB4(EnToto* this, GlobalContext* globalCtx) { this->unk2B5 = action->unk0; if (this->unk2B5 != 4) { if (this->unk2B5 == 3) { - SkelAnime_ChangeAnimTransitionStop(&this->skelAnime, &D_06001DF0, -4.0f); + Animation_MorphToPlayOnce(&this->skelAnime, &D_06001DF0, -4.0f); } else { - SkelAnime_ChangeAnimDefaultStop(&this->skelAnime, this->unk2B5 == 1 ? &D_060016A4 : &D_060022C8); + Animation_PlayOnce(&this->skelAnime, this->unk2B5 == 1 ? &D_060016A4 : &D_060022C8); if (this->unk2B5 == 2 && this->unk2B3 != 0xF) { func_80151BB4(globalCtx, 9); func_80151BB4(globalCtx, 10); @@ -706,9 +706,9 @@ void func_80BA4CB4(EnToto* this, GlobalContext* globalCtx) { } } Math_ScaledStepToS(&this->actor.shape.rot.y, this->actor.home.rot.y, 0x320); - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime)) { + if (SkelAnime_Update(&this->skelAnime)) { if (this->unk2B5 != 3) { - SkelAnime_ChangeAnimDefaultRepeat(&this->skelAnime, this->unk2B5 == 1 ? &D_0600C880 : &D_06001324); + Animation_PlayLoop(&this->skelAnime, this->unk2B5 == 1 ? &D_0600C880 : &D_06001324); } } if (this->unk2B5 == 4 && !Actor_HasParent(&this->actor, globalCtx)) { @@ -743,8 +743,8 @@ void EnToto_Draw(Actor* thisx, GlobalContext* globalCtx) { func_8012C28C(globalCtx->state.gfxCtx); gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(sp4C[this->unk260])); Scene_SetRenderModeXlu(globalCtx, 0, 1); - SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, NULL, - NULL, &this->actor); + SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, + NULL, NULL, &this->actor); CLOSE_DISPS(globalCtx->state.gfxCtx); } diff --git a/src/overlays/actors/ovl_En_Toto/z_en_toto.h b/src/overlays/actors/ovl_En_Toto/z_en_toto.h index 01f036880..aa9628426 100644 --- a/src/overlays/actors/ovl_En_Toto/z_en_toto.h +++ b/src/overlays/actors/ovl_En_Toto/z_en_toto.h @@ -24,8 +24,8 @@ typedef struct EnTotoUnkStruct2 { typedef struct EnToto { /* 0x000 */ Actor actor; /* 0x144 */ SkelAnime skelAnime; - /* 0x188 */ Vec3s limbDrawTbl[18]; - /* 0x1F4 */ Vec3s transitionDrawTbl[18]; + /* 0x188 */ Vec3s jointTable[18]; + /* 0x1F4 */ Vec3s morphTable[18]; /* 0x260 */ s16 unk260; /* 0x264 */ ColliderCylinder collider; /* 0x2B0 */ u8 actionFuncIndex; diff --git a/src/overlays/actors/ovl_En_Trt/z_en_trt.c b/src/overlays/actors/ovl_En_Trt/z_en_trt.c index 06fe1bfd4..0291851a1 100644 --- a/src/overlays/actors/ovl_En_Trt/z_en_trt.c +++ b/src/overlays/actors/ovl_En_Trt/z_en_trt.c @@ -112,12 +112,12 @@ void EnTrt_ChangeAnim(SkelAnime* skelAnime, ActorAnimationEntryS* animations, s3 animations += idx; if (animations->frameCount < 0) { - frameCount = SkelAnime_GetFrameCount(&animations->animationSeg->common); + frameCount = Animation_GetLastFrame(animations->animationSeg); } else { frameCount = animations->frameCount; } - SkelAnime_ChangeAnim(skelAnime, animations->animationSeg, animations->playbackSpeed, animations->frame, frameCount, - animations->mode, animations->transitionRate); + Animation_Change(skelAnime, animations->animationSeg, animations->playbackSpeed, animations->frame, frameCount, + animations->mode, animations->transitionRate); } s32 EnTrt_TestItemSelected(GlobalContext* globalCtx) { @@ -851,8 +851,8 @@ void EnTrt_IdleAwake(EnTrt* this, GlobalContext* globalCtx) { } void EnTrt_BeginInteraction(EnTrt* this, GlobalContext* globalCtx) { - s16 animCurrentFrame = this->skelAnime.animCurrentFrame / this->skelAnime.animPlaybackSpeed; - s16 animLastFrame = SkelAnime_GetFrameCount(&D_060030EC.common) / (s16)this->skelAnime.animPlaybackSpeed; + s16 curFrame = this->skelAnime.curFrame / this->skelAnime.playSpeed; + s16 animLastFrame = Animation_GetLastFrame(&D_060030EC) / (s16)this->skelAnime.playSpeed; if (this->cutsceneState == ENTRT_CUTSCENESTATE_WAITING) { if (ActorCutscene_GetCanPlayNext(this->cutscene)) { @@ -863,7 +863,7 @@ void EnTrt_BeginInteraction(EnTrt* this, GlobalContext* globalCtx) { } } else if (this->cutsceneState == ENTRT_CUTSCENESTATE_PLAYING_SPECIAL) { if (this->animationIdx != 5) { - if (animCurrentFrame == animLastFrame) { + if (curFrame == animLastFrame) { EnTrt_ChangeAnim(&this->skelAnime, sAnimations, 3); this->animationIdx = 3; this->blinkFunc = EnTrt_OpenEyesThenSetToBlink; @@ -1341,11 +1341,11 @@ void EnTrt_NodOff(EnTrt* this) { } void EnTrt_OpenThenCloseEyes(EnTrt* this) { - if (this->skelAnime.animCurrentFrame >= 40.0f) { + if (this->skelAnime.curFrame >= 40.0f) { EnTrt_CloseEyes(this); - } else if (this->skelAnime.animCurrentFrame >= 35.0f) { + } else if (this->skelAnime.curFrame >= 35.0f) { this->eyeTextureIdx = 1; - } else if (this->skelAnime.animCurrentFrame >= 10.0f) { + } else if (this->skelAnime.curFrame >= 10.0f) { EnTrt_OpenEyes(this); } } @@ -1359,7 +1359,7 @@ void EnTrt_OpenEyes2(EnTrt* this) { } void EnTrt_OpenEyesThenSetToBlink(EnTrt* this) { - if (this->skelAnime.animCurrentFrame >= 7.0f) { + if (this->skelAnime.curFrame >= 7.0f) { EnTrt_OpenEyes(this); if (this->eyeTextureIdx == 0) { this->blinkFunc = EnTrt_Blink; @@ -1452,7 +1452,7 @@ void EnTrt_LookToShopkeeperFromShelf(EnTrt* this, GlobalContext* globalCtx) { } void EnTrt_InitShopkeeper(EnTrt* this, GlobalContext* globalCtx) { - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_0600FEF0, &D_0600FD34, NULL, NULL, 0); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_0600FEF0, &D_0600FD34, NULL, NULL, 0); if (!(gSaveContext.weekEventReg[0xC] & 8) && !(gSaveContext.weekEventReg[0x54] & 0x40) && gSaveContext.day >= 2) { this->actor.draw = NULL; } else { @@ -1691,7 +1691,7 @@ void EnTrt_Update(Actor* thisx, GlobalContext* globalCtx) { EnTrt_UpdateHeadYawAndPitch(this, globalCtx); this->actionFunc(this, globalCtx); Actor_SetHeight(&this->actor, 90.0f); - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); EnTrt_UpdateCollider(this, globalCtx); } @@ -1716,8 +1716,8 @@ void EnTrt_UpdateHeadPosAndRot(s16 pitch, s16 yaw, Vec3f* pos, Vec3s* rot, s32 i Vec3s newRot; MtxF currentState; - SysMatrix_MultiplyVector3fByState(&D_801D15B0tmp, &newPos); - SysMatrix_CopyCurrentState(¤tState); + Matrix_MultiplyVector3fByState(&D_801D15B0tmp, &newPos); + Matrix_CopyCurrentState(¤tState); func_8018219C(¤tState, &newRot, MTXMODE_NEW); *pos = newPos; if (isFullyAwake) { @@ -1759,11 +1759,11 @@ void EnTrt_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Ve } if (limbIndex == 21) { EnTrt_UpdateHeadPosAndRot(this->headPitch, this->headYaw, &this->headPos, &this->headRot, isFullyAwake); - SysMatrix_InsertTranslation(this->headPos.x, this->headPos.y, this->headPos.z, MTXMODE_NEW); + Matrix_InsertTranslation(this->headPos.x, this->headPos.y, this->headPos.z, MTXMODE_NEW); Matrix_Scale(this->actor.scale.x, this->actor.scale.y, this->actor.scale.z, MTXMODE_APPLY); Matrix_RotateY(this->headRot.y, MTXMODE_APPLY); - SysMatrix_InsertXRotation_s(this->headRot.x, MTXMODE_APPLY); - SysMatrix_InsertZRotation_s(this->headRot.z, MTXMODE_APPLY); + Matrix_InsertXRotation_s(this->headRot.x, MTXMODE_APPLY); + Matrix_InsertZRotation_s(this->headRot.z, MTXMODE_APPLY); } } @@ -1771,11 +1771,11 @@ void EnTrt_UnkActorDraw(GlobalContext* globalCtx, s32 limbIndex, Actor* thisx) { EnTrt* this = THIS; if (limbIndex == 21) { - SysMatrix_InsertTranslation(this->headPos.x, this->headPos.y, this->headPos.z, MTXMODE_NEW); + Matrix_InsertTranslation(this->headPos.x, this->headPos.y, this->headPos.z, MTXMODE_NEW); Matrix_Scale(this->actor.scale.x, this->actor.scale.y, this->actor.scale.z, MTXMODE_APPLY); Matrix_RotateY(this->headRot.y, MTXMODE_APPLY); - SysMatrix_InsertXRotation_s(this->headRot.x, MTXMODE_APPLY); - SysMatrix_InsertZRotation_s(this->headRot.z, MTXMODE_APPLY); + Matrix_InsertXRotation_s(this->headRot.x, MTXMODE_APPLY); + Matrix_InsertZRotation_s(this->headRot.z, MTXMODE_APPLY); } } @@ -1789,7 +1789,7 @@ void EnTrt_Draw(Actor* thisx, GlobalContext* globalCtx) { func_8012C28C(globalCtx->state.gfxCtx); gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(sEyeTextures[this->eyeTextureIdx])); gSPSegment(POLY_OPA_DISP++, 0x09, Lib_SegmentedToVirtual(sEyeTextures[this->eyeTextureIdx])); - func_801343C0(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, + func_801343C0(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, EnTrt_OverrideLimbDraw, EnTrt_PostLimbDraw, EnTrt_UnkActorDraw, &this->actor); EnTrt_DrawCursor(globalCtx, this, this->cursorPos.x, this->cursorPos.y, this->cursorPos.z, this->drawCursor); EnTrt_DrawStickDirectionPrompt(globalCtx, this); diff --git a/src/overlays/actors/ovl_En_Warp_Uzu/z_en_warp_uzu.c b/src/overlays/actors/ovl_En_Warp_Uzu/z_en_warp_uzu.c index dc8ea9ad1..8dd30eec2 100644 --- a/src/overlays/actors/ovl_En_Warp_Uzu/z_en_warp_uzu.c +++ b/src/overlays/actors/ovl_En_Warp_Uzu/z_en_warp_uzu.c @@ -82,7 +82,7 @@ void func_80A66208(EnWarpUzu* this, GlobalContext* globalCtx) { this->actor.textId = 0; Matrix_RotateY(this->actor.shape.rot.y, 0); - SysMatrix_MultiplyVector3fByState(&D_80A664FC, &sp24); + Matrix_MultiplyVector3fByState(&D_80A664FC, &sp24); Math_Vec3f_Sum(&this->actor.world.pos, &sp24, &this->actor.focus.pos); Math_Vec3s_Copy(&this->actor.focus.rot, &this->actor.shape.rot); this->actionFunc = func_80A66278; diff --git a/src/overlays/actors/ovl_En_Zot/z_en_zot.c b/src/overlays/actors/ovl_En_Zot/z_en_zot.c index 24ca09489..c1f0b3351 100644 --- a/src/overlays/actors/ovl_En_Zot/z_en_zot.c +++ b/src/overlays/actors/ovl_En_Zot/z_en_zot.c @@ -100,8 +100,8 @@ void EnZot_Init(Actor* thisx, GlobalContext* globalCtx2) { ActorShape_Init(&this->actor.shape, 0.0f, func_800B3FC0, 20.0f); Actor_SetScale(&this->actor, 0.01f); this->actionFunc = func_80B97100; - SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_0600D208, &D_06004248, this->jointTable, this->morphTable, 20); - SkelAnime_ChangeAnimDefaultRepeat(&this->skelAnime, &D_0600DE20); + SkelAnime_InitFlex(globalCtx, &this->skelAnime, &D_0600D208, &D_06004248, this->jointTable, this->morphTable, 20); + Animation_PlayLoop(&this->skelAnime, &D_0600DE20); this->unk_2F0 = 0; Collider_InitAndSetCylinder(globalCtx, &this->collider, &this->actor, &sCylinderInit); @@ -255,10 +255,10 @@ void func_80B96BEC(EnZot* this, s16 arg1, u8 arg2) { if ((arg1 >= 0) && (arg1 < 10)) { if (arg1 >= 8) { - SkelAnime_ChangeAnim(&this->skelAnime, sAnimations[arg1], 0.0f, arg1 - 8, arg1 - 8, arg2, 0.0f); + Animation_Change(&this->skelAnime, sAnimations[arg1], 0.0f, arg1 - 8, arg1 - 8, arg2, 0.0f); } else { - SkelAnime_ChangeAnim(&this->skelAnime, sAnimations[arg1], 1.0f, 0.0f, - SkelAnime_GetFrameCount(&sAnimations[arg1]->common), arg2, -5.0f); + Animation_Change(&this->skelAnime, sAnimations[arg1], 1.0f, 0.0f, Animation_GetLastFrame(sAnimations[arg1]), + arg2, -5.0f); } this->unk_2F0 = arg1; } @@ -754,7 +754,7 @@ void func_80B97D6C(EnZot* this, GlobalContext* globalCtx) { this->actor.speedXZ = 8.0f; } - if (func_801378B8(&this->skelAnime, 0.0f) || func_801378B8(&this->skelAnime, 5.0f)) { + if (Animation_OnFrame(&this->skelAnime, 0.0f) || Animation_OnFrame(&this->skelAnime, 5.0f)) { Audio_PlayActorSound2(&this->actor, NA_SE_EV_ZORA_WALK); } } @@ -1329,7 +1329,7 @@ void EnZot_Update(Actor* thisx, GlobalContext* globalCtx) { Actor_UpdateBgCheckInfo(globalCtx, &this->actor, 30.0f, 15.0f, 30.0f, 5); this->unk_2F2 &= ~0x40; - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime) && (this->unk_2F0 != 0)) { + if (SkelAnime_Update(&this->skelAnime) && (this->unk_2F0 != 0)) { this->unk_2F2 |= 0x40; } @@ -1368,15 +1368,15 @@ s32 EnZot_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, s32 pad; if (limbIndex == 15) { - SysMatrix_InsertTranslation(1500.0f, 0.0f, 0.0f, MTXMODE_APPLY); - SysMatrix_InsertXRotation_s(this->unk_2C4.y, MTXMODE_APPLY); - SysMatrix_InsertZRotation_s(this->unk_2C4.x, MTXMODE_APPLY); - SysMatrix_InsertTranslation(-1500.0f, 0.0f, 0.0f, MTXMODE_APPLY); + Matrix_InsertTranslation(1500.0f, 0.0f, 0.0f, MTXMODE_APPLY); + Matrix_InsertXRotation_s(this->unk_2C4.y, MTXMODE_APPLY); + Matrix_InsertZRotation_s(this->unk_2C4.x, MTXMODE_APPLY); + Matrix_InsertTranslation(-1500.0f, 0.0f, 0.0f, MTXMODE_APPLY); } if (limbIndex == 8) { - SysMatrix_InsertXRotation_s(this->unk_2CA.y * -1, MTXMODE_APPLY); - SysMatrix_InsertZRotation_s(this->unk_2CA.x * -1, MTXMODE_APPLY); + Matrix_InsertXRotation_s(this->unk_2CA.y * -1, MTXMODE_APPLY); + Matrix_InsertZRotation_s(this->unk_2CA.x * -1, MTXMODE_APPLY); } if (((this->unk_2F0 == 8) || (this->unk_2F0 == 9)) && @@ -1392,7 +1392,7 @@ void EnZot_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Ve EnZot* this = THIS; if (limbIndex == 15) { - SysMatrix_MultiplyVector3fByState(&D_80B99934, &this->actor.focus.pos); + Matrix_MultiplyVector3fByState(&D_80B99934, &this->actor.focus.pos); } } @@ -1412,8 +1412,8 @@ void EnZot_Draw(Actor* thisx, GlobalContext* globalCtx) { gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(sp4C[this->unk_2EC])); gSPSegment(POLY_OPA_DISP++, 0x0C, func_80B99580(globalCtx->state.gfxCtx)); - SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, this->skelAnime.dListCount, - EnZot_OverrideLimbDraw, EnZot_PostLimbDraw, &this->actor); + SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, + EnZot_OverrideLimbDraw, EnZot_PostLimbDraw, &this->actor); CLOSE_DISPS(globalCtx->state.gfxCtx); } diff --git a/src/overlays/actors/ovl_Obj_Aqua/z_obj_aqua.c b/src/overlays/actors/ovl_Obj_Aqua/z_obj_aqua.c index 5c0aa5cb1..2111f1d0f 100644 --- a/src/overlays/actors/ovl_Obj_Aqua/z_obj_aqua.c +++ b/src/overlays/actors/ovl_Obj_Aqua/z_obj_aqua.c @@ -285,9 +285,9 @@ void ObjAqua_Draw(Actor* thisx, GlobalContext* globalCtx) { if (actionFuncTemp) { s16 rotation = Math_SinS(this->unk_198) * 8000.0f; - SysMatrix_InsertZRotation_s(rotation, 1); + Matrix_InsertZRotation_s(rotation, 1); Matrix_Scale(1.3f, 1.0f, 1.0f, 1); - SysMatrix_InsertZRotation_s(rotation * -1, 1); + Matrix_InsertZRotation_s(rotation * -1, 1); Matrix_Scale(10.0f / 13.0f, 1.0f, 1.0f, 1); } Matrix_RotateY(yaw, 1); diff --git a/src/overlays/actors/ovl_Obj_Bell/z_obj_bell.c b/src/overlays/actors/ovl_Obj_Bell/z_obj_bell.c index a0d90123f..de7f30fbd 100644 --- a/src/overlays/actors/ovl_Obj_Bell/z_obj_bell.c +++ b/src/overlays/actors/ovl_Obj_Bell/z_obj_bell.c @@ -223,13 +223,13 @@ void func_80A358FC(ObjBell* this, GlobalContext* globalCtx) { } void func_80A359B4(Actor* thisx, GlobalContext* globalCtx) { - SysMatrix_InsertTranslation(thisx->world.pos.x, thisx->world.pos.y, thisx->world.pos.z, MTXMODE_NEW); + Matrix_InsertTranslation(thisx->world.pos.x, thisx->world.pos.y, thisx->world.pos.z, MTXMODE_NEW); Matrix_Scale(thisx->scale.x, thisx->scale.y, thisx->scale.z, MTXMODE_APPLY); - SysMatrix_InsertTranslation(0.0f, 2600.0f, 0.0f, MTXMODE_APPLY); + Matrix_InsertTranslation(0.0f, 2600.0f, 0.0f, MTXMODE_APPLY); Matrix_RotateY(thisx->world.rot.y, MTXMODE_APPLY); - SysMatrix_InsertXRotation_s(thisx->world.rot.x, MTXMODE_APPLY); + Matrix_InsertXRotation_s(thisx->world.rot.x, MTXMODE_APPLY); Matrix_RotateY(-thisx->world.rot.y, MTXMODE_APPLY); - SysMatrix_InsertTranslation(0.0f, -2600.0f, 0.0f, MTXMODE_APPLY); + Matrix_InsertTranslation(0.0f, -2600.0f, 0.0f, MTXMODE_APPLY); OPEN_DISPS(globalCtx->state.gfxCtx); func_8012C28C(globalCtx->state.gfxCtx); gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); @@ -241,7 +241,7 @@ void func_80A359B4(Actor* thisx, GlobalContext* globalCtx) { } void func_80A35B18(Actor* thisx, GlobalContext* globalCtx) { - SysMatrix_InsertTranslation(thisx->world.pos.x, thisx->world.pos.y, thisx->world.pos.z, MTXMODE_NEW); + Matrix_InsertTranslation(thisx->world.pos.x, thisx->world.pos.y, thisx->world.pos.z, MTXMODE_NEW); Matrix_Scale(thisx->scale.x, thisx->scale.y, thisx->scale.z, MTXMODE_APPLY); Matrix_RotateY(thisx->shape.rot.y, MTXMODE_APPLY); OPEN_DISPS(globalCtx->state.gfxCtx); @@ -252,7 +252,7 @@ void func_80A35B18(Actor* thisx, GlobalContext* globalCtx) { } void func_80A35BD4(Actor* thisx, GlobalContext* globalCtx) { - SysMatrix_InsertTranslation(thisx->world.pos.x, thisx->world.pos.y - 4.0f, thisx->world.pos.z, MTXMODE_NEW); + Matrix_InsertTranslation(thisx->world.pos.x, thisx->world.pos.y - 4.0f, thisx->world.pos.z, MTXMODE_NEW); Matrix_Scale(thisx->scale.x, thisx->scale.y, thisx->scale.z, MTXMODE_APPLY); OPEN_DISPS(globalCtx->state.gfxCtx); func_8012C2DC(globalCtx->state.gfxCtx); @@ -300,9 +300,9 @@ void ObjBell_Draw(Actor* thisx, GlobalContext* globalCtx) { func_80A35BD4(thisx, globalCtx); func_80A359B4(thisx, globalCtx); Math_Vec3s_ToVec3f(&sp30, &this->collider1.dim.modelSphere.center); - SysMatrix_MultiplyVector3fByState(&sp30, &sp24); + Matrix_MultiplyVector3fByState(&sp30, &sp24); Math_Vec3f_ToVec3s(&this->collider1.dim.worldSphere.center, &sp24); Math_Vec3s_ToVec3f(&sp30, &this->collider2.dim.modelSphere.center); - SysMatrix_MultiplyVector3fByState(&sp30, &sp24); + Matrix_MultiplyVector3fByState(&sp30, &sp24); Math_Vec3f_ToVec3s(&this->collider2.dim.worldSphere.center, &sp24); } diff --git a/src/overlays/actors/ovl_Obj_Etcetera/z_obj_etcetera.c b/src/overlays/actors/ovl_Obj_Etcetera/z_obj_etcetera.c index 4a74a3c80..f252efbd5 100644 --- a/src/overlays/actors/ovl_Obj_Etcetera/z_obj_etcetera.c +++ b/src/overlays/actors/ovl_Obj_Etcetera/z_obj_etcetera.c @@ -120,8 +120,7 @@ void ObjEtcetera_DoNormalOscillation(ObjEtcetera* this, GlobalContext* globalCtx } void ObjEtcetera_StartSmallFlutterAnimation(ObjEtcetera* this) { - SkelAnime_ChangeAnim(&this->skelAnime, &D_040117A8, 1.0f, 0.0f, SkelAnime_GetFrameCount(&D_040117A8.common), 2, - 0.0f); + Animation_Change(&this->skelAnime, &D_040117A8, 1.0f, 0.0f, Animation_GetLastFrame(&D_040117A8), 2, 0.0f); this->dyna.actor.draw = ObjEtcetera_DrawAnimated; this->actionFunc = ObjEtcetera_PlaySmallFlutterAnimation; } @@ -132,8 +131,7 @@ void ObjEtcetera_Idle(ObjEtcetera* this, GlobalContext* globalCtx) { if ((player->stateFlags3 & 0x200) && (this->dyna.actor.xzDistToPlayer < 20.0f)) { // Player is launching out of the Deku Flower - SkelAnime_ChangeAnim(&this->skelAnime, &D_0400EB7C, 1.0f, 0.0f, SkelAnime_GetFrameCount(&D_0400EB7C.common), 2, - 0.0f); + Animation_Change(&this->skelAnime, &D_0400EB7C, 1.0f, 0.0f, Animation_GetLastFrame(&D_0400EB7C), 2, 0.0f); this->dyna.actor.draw = ObjEtcetera_DrawAnimated; this->actionFunc = ObjEtcetera_DoIntenseOscillation; Actor_SetScale(&this->dyna.actor, 0.01f); @@ -182,7 +180,7 @@ void ObjEtcetera_PlaySmallFlutterAnimation(ObjEtcetera* this, GlobalContext* glo } else { this->burrowFlag &= ~1; } - if (SkelAnime_FrameUpdateMatrix(&this->skelAnime)) { + if (SkelAnime_Update(&this->skelAnime)) { this->dyna.actor.draw = ObjEtcetera_DrawIdle; this->actionFunc = ObjEtcetera_Idle; } @@ -201,7 +199,7 @@ void ObjEtcetera_DoIntenseOscillation(ObjEtcetera* this, GlobalContext* globalCt } else { this->burrowFlag &= ~1; } - SkelAnime_FrameUpdateMatrix(&this->skelAnime); + SkelAnime_Update(&this->skelAnime); if (this->oscillationTimer > 0) { this->oscillationTimer--; } else { @@ -272,8 +270,8 @@ void ObjEtcetera_Setup(ObjEtcetera* this, GlobalContext* globalCtx) { break; case DEKU_FLOWER_TYPE_PINK_SPAWNED_FROM_MAD_SCRUB: case DEKU_FLOWER_TYPE_GOLD_SPAWNED_FROM_MAD_SCRUB: - SkelAnime_ChangeAnim(&this->skelAnime, &D_0400EB7C, 1.0f, 0.0f, - SkelAnime_GetFrameCount(&D_0400EB7C.common), 2, 0.0f); + Animation_Change(&this->skelAnime, &D_0400EB7C, 1.0f, 0.0f, Animation_GetLastFrame(&D_0400EB7C), 2, + 0.0f); this->dyna.actor.draw = ObjEtcetera_DrawAnimated; this->actionFunc = ObjEtcetera_DoIntenseOscillation; Actor_SetScale(&this->dyna.actor, 0.0f); @@ -317,5 +315,5 @@ void ObjEtcetera_DrawAnimated(Actor* thisx, GlobalContext* globalCtx) { ObjEtcetera* this = THIS; func_8012C5B0(globalCtx->state.gfxCtx); - SkelAnime_Draw(globalCtx, this->skelAnime.skeleton, this->skelAnime.limbDrawTbl, NULL, NULL, &this->dyna.actor); + SkelAnime_DrawOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, NULL, NULL, &this->dyna.actor); } diff --git a/src/overlays/actors/ovl_Obj_Lightswitch/z_obj_lightswitch.c b/src/overlays/actors/ovl_Obj_Lightswitch/z_obj_lightswitch.c index c6b2daf66..4237e0992 100644 --- a/src/overlays/actors/ovl_Obj_Lightswitch/z_obj_lightswitch.c +++ b/src/overlays/actors/ovl_Obj_Lightswitch/z_obj_lightswitch.c @@ -89,10 +89,10 @@ void ObjLightswitch_InitCollider(ObjLightswitch* this, GlobalContext* globalCtx) Collider_InitJntSph(globalCtx, &this->collider); Collider_SetJntSph(globalCtx, &this->collider, &this->actor, &sJntSphInit, &this->elements); this->actor.colChkInfo.mass = MASS_IMMOVABLE; - SysMatrix_SetStateRotationAndTranslation( - this->actor.world.pos.x, this->actor.world.pos.y + (this->actor.shape.yOffset * this->actor.scale.y), - this->actor.world.pos.z, &this->actor.shape.rot); - Matrix_Scale(this->actor.scale.x, this->actor.scale.y, this->actor.scale.z, 1); + Matrix_SetStateRotationAndTranslation(this->actor.world.pos.x, + this->actor.world.pos.y + (this->actor.shape.yOffset * this->actor.scale.y), + this->actor.world.pos.z, &this->actor.shape.rot); + Matrix_Scale(this->actor.scale.x, this->actor.scale.y, this->actor.scale.z, MTXMODE_APPLY); Collider_UpdateSpheres(0, &this->collider); } @@ -384,13 +384,13 @@ void ObjLightSwitch_DrawOpa(ObjLightswitch* this, GlobalContext* globalCtx) { tempRot.x = this->actor.shape.rot.x; tempRot.y = this->actor.shape.rot.y; tempRot.z = this->actor.shape.rot.z + this->edgeRot; - SysMatrix_SetStateRotationAndTranslation(tempPos.x, tempPos.y, tempPos.z, &tempRot); + Matrix_SetStateRotationAndTranslation(tempPos.x, tempPos.y, tempPos.z, &tempRot); Matrix_Scale(this->actor.scale.x, this->actor.scale.y, this->actor.scale.z, MTXMODE_APPLY); gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_OPA_DISP++, D_06000398); tempRot.z = this->actor.shape.rot.z - this->edgeRot; - SysMatrix_SetStateRotationAndTranslation(tempPos.x, tempPos.y, tempPos.z, &tempRot); + Matrix_SetStateRotationAndTranslation(tempPos.x, tempPos.y, tempPos.z, &tempRot); Matrix_Scale(this->actor.scale.x, this->actor.scale.y, this->actor.scale.z, MTXMODE_APPLY); gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_OPA_DISP++, D_06000408); @@ -420,13 +420,13 @@ void ObjLightSwitch_DrawXlu(ObjLightswitch* this, GlobalContext* globalCtx) { tempRot.x = this->actor.shape.rot.x; tempRot.y = this->actor.shape.rot.y; tempRot.z = this->actor.shape.rot.z + this->edgeRot; - SysMatrix_SetStateRotationAndTranslation(tempPos.x, tempPos.y, tempPos.z, &tempRot); + Matrix_SetStateRotationAndTranslation(tempPos.x, tempPos.y, tempPos.z, &tempRot); Matrix_Scale(this->actor.scale.x, this->actor.scale.y, this->actor.scale.z, MTXMODE_APPLY); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_XLU_DISP++, D_06000398); tempRot.z = this->actor.shape.rot.z - this->edgeRot; - SysMatrix_SetStateRotationAndTranslation(tempPos.x, tempPos.y, tempPos.z, &tempRot); + Matrix_SetStateRotationAndTranslation(tempPos.x, tempPos.y, tempPos.z, &tempRot); Matrix_Scale(this->actor.scale.x, this->actor.scale.y, this->actor.scale.z, MTXMODE_APPLY); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_XLU_DISP++, D_06000408); diff --git a/src/overlays/actors/ovl_Obj_Moon_Stone/z_obj_moon_stone.c b/src/overlays/actors/ovl_Obj_Moon_Stone/z_obj_moon_stone.c index 3a803bc61..13379e5f0 100644 --- a/src/overlays/actors/ovl_Obj_Moon_Stone/z_obj_moon_stone.c +++ b/src/overlays/actors/ovl_Obj_Moon_Stone/z_obj_moon_stone.c @@ -156,7 +156,7 @@ void ObjMoonStone_Draw(Actor* thisx, GlobalContext* globalCtx) { AnimatedMat_Draw(globalCtx, Lib_SegmentedToVirtual(&D_06001C60)); gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_OPA_DISP++, D_06000D78); - SysMatrix_NormalizeXYZ(&globalCtx->mf_187FC); + Matrix_NormalizeXYZ(&globalCtx->mf_187FC); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_XLU_DISP++, D_06000C80); CLOSE_DISPS(globalCtx->state.gfxCtx); diff --git a/src/overlays/actors/ovl_Obj_Syokudai/z_obj_syokudai.c b/src/overlays/actors/ovl_Obj_Syokudai/z_obj_syokudai.c index 597d47033..fb7074693 100644 --- a/src/overlays/actors/ovl_Obj_Syokudai/z_obj_syokudai.c +++ b/src/overlays/actors/ovl_Obj_Syokudai/z_obj_syokudai.c @@ -310,7 +310,7 @@ void ObjSyokudai_Draw(Actor* thisx, GlobalContext* globalCtx) { (this->flameTexScroll * -OBJ_SYOKUDAI_SNUFF_DEFAULT) & 0x1FF, 0x20, 0x80)); gDPSetPrimColor(POLY_XLU_DISP++, 0x80, 0x80, 255, 255, 0, 255); gDPSetEnvColor(POLY_XLU_DISP++, 255, 0, 0, 0); - SysMatrix_InsertTranslation(0.0f, OBJ_SYOKUDAI_FLAME_HEIGHT, 0.0f, MTXMODE_APPLY); + Matrix_InsertTranslation(0.0f, OBJ_SYOKUDAI_FLAME_HEIGHT, 0.0f, MTXMODE_APPLY); Matrix_RotateY(BINANG_ROT180(func_800DFCDC(GET_ACTIVE_CAM(globalCtx)) - thisx->shape.rot.y), MTXMODE_APPLY); Matrix_Scale(flameScale, flameScale, flameScale, MTXMODE_APPLY); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); diff --git a/src/overlays/actors/ovl_Obj_Tokei_Step/z_obj_tokei_step.c b/src/overlays/actors/ovl_Obj_Tokei_Step/z_obj_tokei_step.c index f6b0da869..22bcddc57 100644 --- a/src/overlays/actors/ovl_Obj_Tokei_Step/z_obj_tokei_step.c +++ b/src/overlays/actors/ovl_Obj_Tokei_Step/z_obj_tokei_step.c @@ -56,7 +56,7 @@ extern CollisionHeader D_06000968; void ObjTokeiStep_SetSysMatrix(ObjTokeiStepPanel* panel) { MtxF* sysMatrix; - sysMatrix = SysMatrix_GetCurrentState(); + sysMatrix = Matrix_GetCurrentState(); sysMatrix->wx = panel->pos.x; sysMatrix->wy = panel->pos.y; sysMatrix->wz = panel->pos.z; @@ -85,7 +85,7 @@ void ObjTokeiStep_SpawnDust(ObjTokeiStep* this, ObjTokeiStepPanel* panel, Global dustSpawnOffset.z = -10.0f; for (i = 0; i < 7; i++) { dustSpawnOffset.x = dustSpawnXOffsets[i]; - SysMatrix_MultiplyVector3fByState(&dustSpawnOffset, &dustSpawnPos); + Matrix_MultiplyVector3fByState(&dustSpawnOffset, &dustSpawnPos); dustSpawnPos.x += panel->pos.x; dustSpawnPos.y += panel->pos.y; dustSpawnPos.z += panel->pos.z; @@ -100,15 +100,15 @@ void ObjTokeiStep_InitSteps(ObjTokeiStep* this) { Vec3f panelOffset; s32 pad; - SysMatrix_SetStateRotationAndTranslation(this->dyna.actor.world.pos.x, this->dyna.actor.world.pos.y, - this->dyna.actor.world.pos.z, &this->dyna.actor.shape.rot); + Matrix_SetStateRotationAndTranslation(this->dyna.actor.world.pos.x, this->dyna.actor.world.pos.y, + this->dyna.actor.world.pos.z, &this->dyna.actor.shape.rot); panelOffset.x = 0.0f; panelOffset.y = 0.0f; for (i = 0; i < 7; i++) { panel = &this->panels[i]; panelOffset.z = i * -20.0f; - SysMatrix_MultiplyVector3fByState(&panelOffset, &panel->pos); + Matrix_MultiplyVector3fByState(&panelOffset, &panel->pos); panel->posChangeY = 0.0f; panel->numBounces = 0; } @@ -119,15 +119,15 @@ void ObjTokeiStep_InitStepsOpen(ObjTokeiStep* this) { ObjTokeiStepPanel* panel; Vec3f panelOffset; - SysMatrix_SetStateRotationAndTranslation(this->dyna.actor.world.pos.x, this->dyna.actor.world.pos.y, - this->dyna.actor.world.pos.z, &this->dyna.actor.shape.rot); + Matrix_SetStateRotationAndTranslation(this->dyna.actor.world.pos.x, this->dyna.actor.world.pos.y, + this->dyna.actor.world.pos.z, &this->dyna.actor.shape.rot); panelOffset.x = 0.0f; for (i = 0; i < 7; i++) { panel = &this->panels[i]; panelOffset.y = panelXOffsets[i]; panelOffset.z = i * -20.0f; - SysMatrix_MultiplyVector3fByState(&panelOffset, &panel->pos); + Matrix_MultiplyVector3fByState(&panelOffset, &panel->pos); } } diff --git a/src/overlays/actors/ovl_Obj_Warpstone/z_obj_warpstone.c b/src/overlays/actors/ovl_Obj_Warpstone/z_obj_warpstone.c index 8d9511df8..496259853 100644 --- a/src/overlays/actors/ovl_Obj_Warpstone/z_obj_warpstone.c +++ b/src/overlays/actors/ovl_Obj_Warpstone/z_obj_warpstone.c @@ -170,21 +170,21 @@ void ObjWarpstone_Draw(Actor* thisx, GlobalContext* globalCtx2) { if (this->dyna.actor.home.rot.x != 0) { OPEN_DISPS(globalCtx->state.gfxCtx); func_8012C2DC(globalCtx->state.gfxCtx); - SysMatrix_InsertTranslation(this->dyna.actor.world.pos.x, this->dyna.actor.world.pos.y + 34.0f, - this->dyna.actor.world.pos.z, MTXMODE_NEW); - SysMatrix_InsertMatrix(&globalCtx->mf_187FC, MTXMODE_APPLY); - SysMatrix_InsertTranslation(0.0f, 0.0f, 30.0f, MTXMODE_APPLY); + Matrix_InsertTranslation(this->dyna.actor.world.pos.x, this->dyna.actor.world.pos.y + 34.0f, + this->dyna.actor.world.pos.z, MTXMODE_NEW); + Matrix_InsertMatrix(&globalCtx->mf_187FC, MTXMODE_APPLY); + Matrix_InsertTranslation(0.0f, 0.0f, 30.0f, MTXMODE_APPLY); Matrix_Scale(this->dyna.actor.velocity.x, this->dyna.actor.velocity.x, this->dyna.actor.velocity.x, MTXMODE_APPLY); - SysMatrix_StatePush(); + Matrix_StatePush(); gDPPipeSync(POLY_XLU_DISP++); gDPSetPrimColor(POLY_XLU_DISP++, 128, 128, 255, 255, 200, this->dyna.actor.home.rot.x); gDPSetEnvColor(POLY_XLU_DISP++, 100, 200, 0, 255); - SysMatrix_InsertZRotation_f((((globalCtx->gameplayFrames * 1500) & 0xFFFF) * M_PI) / 0x8000, MTXMODE_APPLY); + Matrix_InsertZRotation_f((((globalCtx->gameplayFrames * 1500) & 0xFFFF) * M_PI) / 0x8000, MTXMODE_APPLY); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_XLU_DISP++, D_04023210); - SysMatrix_StatePop(); - SysMatrix_InsertZRotation_f((~((globalCtx->gameplayFrames * 1200) & 0xFFFF) * M_PI) / 0x8000, MTXMODE_APPLY); + Matrix_StatePop(); + Matrix_InsertZRotation_f((~((globalCtx->gameplayFrames * 1200) & 0xFFFF) * M_PI) / 0x8000, MTXMODE_APPLY); gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_XLU_DISP++, D_04023210); CLOSE_DISPS(globalCtx->state.gfxCtx); diff --git a/src/overlays/effects/ovl_Effect_Ss_D_Fire/z_eff_ss_d_fire.h b/src/overlays/effects/ovl_Effect_Ss_D_Fire/z_eff_ss_d_fire.h index 1d199eee6..09298249d 100644 --- a/src/overlays/effects/ovl_Effect_Ss_D_Fire/z_eff_ss_d_fire.h +++ b/src/overlays/effects/ovl_Effect_Ss_D_Fire/z_eff_ss_d_fire.h @@ -11,8 +11,8 @@ typedef struct { /* 0x26 */ s16 scaleStep; /* 0x28 */ s16 alpha; /* 0x2A */ s16 fadeDelay; - /* 0x2C */ s16 life; - /* 0x30 */ s32 unk_30; + /* 0x2C */ s16 unk_2C; + /* 0x30 */ s32 life; } EffectSsDFireInitParams; // size = 0x34 extern const EffectSsInit Effect_Ss_D_Fire_InitVars; diff --git a/src/overlays/gamestates/ovl_daytelop/z_daytelop.c b/src/overlays/gamestates/ovl_daytelop/z_daytelop.c index d4c729d56..9069a6aca 100644 --- a/src/overlays/gamestates/ovl_daytelop/z_daytelop.c +++ b/src/overlays/gamestates/ovl_daytelop/z_daytelop.c @@ -226,7 +226,7 @@ void Daytelop_Init(GameState* thisx) { DaytelopContext* this = (DaytelopContext*)thisx; Game_SetFramerateDivisor(thisx, 1); - SysMatrix_StateAlloc(thisx); + Matrix_StateAlloc(thisx); ShrinkWindow_Destroy(); View_Init(&this->view, thisx->gfxCtx); thisx->main = Daytelop_Main; diff --git a/src/overlays/gamestates/ovl_opening/z_opening.c b/src/overlays/gamestates/ovl_opening/z_opening.c index f3279db4e..96fe615fc 100644 --- a/src/overlays/gamestates/ovl_opening/z_opening.c +++ b/src/overlays/gamestates/ovl_opening/z_opening.c @@ -50,7 +50,7 @@ void Opening_Init(GameState* thisx) { OpeningContext* this = (OpeningContext*)thisx; Game_SetFramerateDivisor(&this->gameState, 1); - SysMatrix_StateAlloc(&this->gameState); + Matrix_StateAlloc(&this->gameState); ShrinkWindow_Init(); View_Init(&this->view, this->gameState.gfxCtx); this->gameState.main = Opening_Main; diff --git a/src/overlays/gamestates/ovl_title/z_title.c b/src/overlays/gamestates/ovl_title/z_title.c index c8027fcbe..ed732fc3d 100644 --- a/src/overlays/gamestates/ovl_title/z_title.c +++ b/src/overlays/gamestates/ovl_title/z_title.c @@ -80,9 +80,9 @@ void Title_Draw(GameState* thisx) { Title_RenderView(this, 0.0f, 150.0f, 300.0f); func_8012C28C(this->gameState.gfxCtx); - SysMatrix_InsertTranslation(-53.0f, -5.0f, 0.0f, MTXMODE_NEW); + Matrix_InsertTranslation(-53.0f, -5.0f, 0.0f, MTXMODE_NEW); Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); - SysMatrix_InsertRotation(0, titleRotation, 0, MTXMODE_APPLY); + Matrix_InsertRotation(0, titleRotation, 0, MTXMODE_APPLY); gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(this->gameState.gfxCtx), G_MTX_LOAD); gSPDisplayList(POLY_OPA_DISP++, gNintendo64LogoNDL); @@ -158,7 +158,7 @@ void Title_Init(GameState* thisx) { DmaMgr_SendRequest0(this->staticSegment, (uintptr_t)_nintendo_rogo_staticSegmentRomStart, segmentSize); Game_SetFramerateDivisor(thisx, 1); - SysMatrix_StateAlloc(thisx); + Matrix_StateAlloc(thisx); ShrinkWindow_Init(); View_Init(&this->view, thisx->gfxCtx); diff --git a/tools/actorfixer.py b/tools/actorfixer.py index 238c7f9c0..4086528ef 100755 --- a/tools/actorfixer.py +++ b/tools/actorfixer.py @@ -7,10 +7,41 @@ animdict ={ "Actor_GetSwitchFlag": "Flags_GetSwitch", "atan_flip": "Math_Acot2F", "atans": "Math_Atan2S", - "Matrix_Pop": "SysMatrix_StatePop", - "Matrix_Push": "SysMatrix_StatePush", - "Matrix_Init": "SysMatrix_StateAlloc", - "Matrix_Put": "SysMatrix_SetCurrentState", + "SysMatrix_StateAlloc": "Matrix_StateAlloc", + "SysMatrix_StatePush": "Matrix_StatePush", + "SysMatrix_CopyCurrentState": "Matrix_CopyCurrentState", + "SysMatrix_SetCurrentState": "Matrix_SetCurrentState", + "SysMatrix_InsertTranslation": "Matrix_InsertTranslation", + "SysMatrix_InsertMatrix": "Matrix_InsertMatrix", + "SysMatrix_Scale": "Matrix_Scale", + "SysMatrix_InsertXRotation_s": "Matrix_InsertXRotation_s", + "SysMatrix_InsertXRotation_f": "Matrix_InsertXRotation_f", + "SysMatrix_RotateStateAroundXAxis": "Matrix_RotateStateAroundXAxis", + "SysMatrix_SetStateXRotation": "Matrix_SetStateXRotation", + "SysMatrix_RotateY": "Matrix_RotateY", + "SysMatrix_InsertYRotation_f": "Matrix_InsertYRotation_f", + "SysMatrix_InsertZRotation_s": "Matrix_InsertZRotation_s", + "SysMatrix_InsertZRotation_f": "Matrix_InsertZRotation_f", + "SysMatrix_InsertRotation": "Matrix_InsertRotation", + "SysMatrix_JointPosition": "Matrix_JointPosition", + "SysMatrix_SetStateRotationAndTranslation": "Matrix_SetStateRotationAndTranslation", + "SysMatrix_ToRSPMatrix": "Matrix_ToRSPMatrix", + "SysMatrix_ToMtx": "Matrix_ToMtx", + "SysMatrix_NewMtx": "Matrix_NewMtx", + "SysMatrix_AppendToPolyOpaDisp": "Matrix_AppendToPolyOpaDisp", + "SysMatrix_MultiplyVector3fByState": "Matrix_MultiplyVector3fByState", + "SysMatrix_GetStateTranslation": "Matrix_GetStateTranslation", + "SysMatrix_GetStateTranslationAndScaledX": "Matrix_GetStateTranslationAndScaledX", + "SysMatrix_GetStateTranslationAndScaledY": "Matrix_GetStateTranslationAndScaledY", + "SysMatrix_GetStateTranslationAndScaledZ": "Matrix_GetStateTranslationAndScaledZ", + "SysMatrix_MultiplyVector3fXZByCurrentState": "Matrix_MultiplyVector3fXZByCurrentState", + "SysMatrix_MtxFCopy": "Matrix_MtxFCopy", + "SysMatrix_FromRSPMatrix": "Matrix_FromRSPMatrix", + "SysMatrix_MultiplyVector3fByMatrix": "Matrix_MultiplyVector3fByMatrix", + "SysMatrix_TransposeXYZ": "Matrix_TransposeXYZ", + "SysMatrix_NormalizeXYZ": "Matrix_NormalizeXYZ", + "SysMatrix_InsertRotationAroundUnitVector_f": "Matrix_InsertRotationAroundUnitVector_f", + "SysMatrix_InsertRotationAroundUnitVector_s": "Matrix_InsertRotationAroundUnitVector_s", "func_800B78B8": "Actor_UpdateBgCheckInfo", "func_8012403C": "Player_GetMask", "func_8012404c": "Player_RemoveMask", @@ -23,6 +54,90 @@ animdict ={ "ShrinkWindow_Step": "ShrinkWindow_Update", "ShrinkWindow_Fini": "ShrinkWindow_Destroy", "func_801A89A8": "Audio_QueueSeqCmd", + "SkelAnime_LodDrawLimb": "SkelAnime_DrawLimbLod", + "SkelAnime_LodDraw": "SkelAnime_DrawLod", + "SkelAnime_LodDrawLimbSV": "SkelAnime_DrawFlexLimbLod", + "SkelAnime_LodDrawSV": "SkelAnime_DrawFlexLod", + "SkelAnime_DrawLimb": "SkelAnime_DrawLimbOpa", + "SkelAnime_Draw": "SkelAnime_DrawOpa", + "SkelAnime_DrawLimbSV": "SkelAnime_DrawFlexLimbOpa", + "SkelAnime_DrawSV": "SkelAnime_DrawFlexOpa", + "SkelAnime_AnimateFrame": "SkelAnime_GetFrameData", + "SkelAnime_GetTotalFrames": "Animation_GetLength", + "SkelAnime_GetFrameCount": "Animation_GetLastFrame", + "SkelAnime_Draw2Limb": "SkelAnime_DrawLimb", + "SkelAnime_Draw2": "SkelAnime_Draw", + "SkelAnime_DrawLimbSV2": "SkelAnime_DrawFlexLimb", + "SkelAnime_DrawSV2": "SkelAnime_DrawFlex", + "func_80134FFC": "SkelAnime_GetFrameData2", + "func_801353D4": "Animation_GetLimbCount2", + "SkelAnime_GetTotalFrames2": "Animation_GetLength2", + "SkelAnime_GetFrameCount2": "Animation_GetLastFrame2", + "SkelAnime_InterpolateVec3s": "SkelAnime_InterpFrameTable", + "SkelAnime_AnimationCtxReset": "AnimationContext_Reset", + "func_801358D4": "AnimationContext_SetNextQueue", + "func_801358F4": "AnimationContext_DisableQueue", + "SkelAnime_NextEntry": "AnimationContext_AddEntry", + "SkelAnime_LoadLinkAnimetion": "AnimationContext_SetLoadFrame", + "SkelAnime_LoadAnimationType1": "AnimationContext_SetCopyAll", + "SkelAnime_LoadAnimationType2": "AnimationContext_SetInterp", + "SkelAnime_LoadAnimationType3": "AnimationContext_SetCopyTrue", + "SkelAnime_LoadAnimationType4": "AnimationContext_SetCopyFalse", + "SkelAnime_LoadAnimationType5": "AnimationContext_SetMoveActor", + "SkelAnime_LinkAnimetionLoaded": "AnimationContext_LoadFrame", + "SkelAnime_AnimationType1Loaded": "AnimationContext_CopyAll", + "SkelAnime_AnimationType2Loaded": "AnimationContext_CopyInterp", + "SkelAnime_AnimationType3Loaded": "AnimationContext_CopyTrue", + "SkelAnime_AnimationType4Loaded": "AnimationContext_CopyFalse", + "SkelAnime_AnimationType5Loaded": "AnimationContext_MoveActor", + "func_80135EE8": "AnimationContext_Update", + "SkelAnime_InitLinkAnimetion": "SkelAnime_InitLink", + "func_801360A8": "LinkAnimation_SetUpdateFunction", + "func_801360E0": "LinkAnimation_Update", + "func_80136104": "LinkAnimation_Morph", + "func_801361BC": "LinkAnimation_AnimateFrame", + "func_80136288": "LinkAnimation_Loop", + "func_8013631C": "LinkAnimation_Once", + "SkelAnime_SetTransition": "Animation_SetMorph", + "SkelAnime_ChangeLinkAnim": "LinkAnimation_Change", + "SkelAnime_ChangeLinkAnimDefaultStop": "LinkAnimation_PlayOnce", + "SkelAnime_ChangeLinkAnimPlaybackStop": "LinkAnimation_PlayOnceSetSpeed", + "SkelAnime_ChangeLinkAnimDefaultRepeat": "LinkAnimation_PlayLoop", + "SkelAnime_ChangeLinkAnimPlaybackRepeat": "LinkAnimation_PlayLoopSetSpeed", + "func_8013670C": "LinkAnimation_CopyJointToMorph", + "func_8013673C": "LinkAnimation_CopyMorphToJoint", + "func_8013676C": "LinkAnimation_LoadToMorph", + "func_801367B0": "LinkAnimation_LoadToJoint", + "func_801367F4": "LinkAnimation_InterpJointMorph", + "func_8013682C": "LinkAnimation_BlendToJoint", + "func_801368CC": "LinkAnimation_BlendToMorph", + "SkelAnime_SetModeStop": "LinkAnimation_EndLoop", + "func_80136990": "Animation_OnFrameImpl", + "func_80136A48": "LinkAnimation_OnFrame", + "SkelAnime_InitSV": "SkelAnime_InitFlex", + "func_80136C84": "SkelAnime_SetUpdate", + "SkelAnime_FrameUpdateMatrix": "SkelAnime_Update", + "func_80136CF4": "SkelAnime_Morph", + "func_80136D98": "SkelAnime_MorphTaper", + "func_80136F04": "SkelAnime_AnimateFrame", + "func_8013702C": "SkelAnime_LoopFull", + "func_801370B0": "SkelAnime_LoopPartial", + "func_8013713C": "SkelAnime_Once", + "SkelAnime_ChangeAnimImpl": "Animation_ChangeImpl", + "SkelAnime_ChangeAnim": "Animation_Change", + "SkelAnime_ChangeAnimDefaultStop": "Animation_PlayOnce", + "SkelAnime_ChangeAnimTransitionStop": "Animation_MorphToPlayOnce", + "SkelAnime_ChangeAnimPlaybackStop": "Animation_PlayOnceSetSpeed", + "SkelAnime_ChangeAnimDefaultRepeat": "Animation_PlayLoop", + "SkelAnime_ChangeAnimTransitionRepeat": "Animation_MorphToLoop", + "SkelAnime_ChangeAnimPlaybackRepeat": "Animation_PlayLoopSetSpeed", + "SkelAnime_AnimSetStop": "Animation_EndLoop", + "SkelAnime_AnimReverse": "Animation_Reverse", + "func_80137674": "SkelAnime_CopyFrameTableTrue", + "func_801376DC": "SkelAnime_CopyFrameTableFalse", + "func_80137748": "SkelAnime_UpdateTranslation", + "func_801378B8": "Animation_OnFrame", + "SkelAnime_CopyVec3s": "SkelAnime_CopyFrameTable", } def replace_anim(file): diff --git a/tools/disasm/files.txt b/tools/disasm/files.txt index a71ca3f09..ed8637398 100644 --- a/tools/disasm/files.txt +++ b/tools/disasm/files.txt @@ -381,7 +381,7 @@ 0x800F1250 : "z_face_reaction", 0x800F12D0 : "code_800F12D0", 0x800F1460 : "z_eventmgr", - 0x800F23E0 : "code_800F23E0", + 0x800F23E0 : "z_fcurve_data", 0x800F2620 : "z_fcurve_data_skelanime", 0x800F2D30 : "z_fireobj", 0x800F3940 : "z_horse", @@ -403,7 +403,7 @@ 0x8010CB70 : "[PADDING]", 0x8010CB80 : "z_parameter", 0x801224E0 : "z_path", - 0x80122660 : "code_80122660", + 0x80122660 : "z_pause", 0x801226E0 : "z_player_lib", 0x80129EF0 : "z_prenmi", 0x8012A080 : "z_quake", @@ -594,7 +594,7 @@ 0x801DD770 : "z_draw", 0x801DD780 : "z_eff_footmark", 0x801DD790 : "z_eventmgr", - 0x801DD7B0 : "code_800F23E0", + 0x801DD7B0 : "z_fcurve_data", 0x801DD7C0 : "z_fcurve_data_skelanime", 0x801DD7D0 : "z_fireobj", 0x801DD7E0 : "z_horse", diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index 8cf4a77b5..0bfa78b1d 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -114,7 +114,7 @@ 0x80084CD0:("Load_AllocateAndLoad",), 0x80084DB0:("Load2_Relocate",), 0x8008501C:("Load2_LoadOverlay",), - 0x800850C8:("Load2_AllocateAndLoad",), + 0x800850C8:("Overlay_AllocateAndLoad",), 0x80085130:("PadUtils_Init",), 0x80085150:("func_80085150",), 0x80085158:("PadUtils_ResetPressRel",), @@ -331,7 +331,7 @@ 0x8008C1E0:("__osPiGetAccess",), 0x8008C224:("__osPiRelAccess",), 0x8008C260:("__osDevMgrMain",), - 0x8008C670:("osPiRawStartDma",), + 0x8008C670:("__osPiRawStartDma",), 0x8008C740:("__osSumcalc",), 0x8008C7B4:("__osIdCheckSum",), 0x8008C8B0:("__osRepairPackId",), @@ -374,11 +374,11 @@ 0x8008FAB0:("osJamMesg",), 0x8008FC00:("osSetThreadPri",), 0x8008FCE0:("osGetThreadPri",), - 0x8008FD00:("osEPiRawReadIo",), + 0x8008FD00:("__osEPiRawReadIo",), 0x8008FE60:("osViSwapBuffer",), 0x8008FEB0:("guPositionF",), 0x80090058:("guPosition",), - 0x800900C0:("osEPiRawStartDma",), + 0x800900C0:("__osEPiRawStartDma",), 0x800902A0:("osSpTaskYielded",), 0x80090300:("bcmp",), 0x80090420:("osGetTime",), @@ -654,8 +654,8 @@ 0x800B326C:("EffectSsIceBlock_Spawn",), 0x800B32D0:("FlagSet_Update",), 0x800B3644:("FlagSet_Draw",), - 0x800B3880:("DLF_LoadGameState",), - 0x800B39A4:("DLF_FreeGameState",), + 0x800B3880:("Overlay_LoadGameState",), + 0x800B39A4:("Overlay_FreeGameState",), 0x800B3AD0:("Actor_PrintLists",), 0x800B3BA4:("ActorShape_Init",), 0x800B3BC8:("ActorShadow_Draw",), @@ -1663,13 +1663,13 @@ 0x800F23C4:("ActorCutscene_SetReturnCamera",), 0x800F23E0:("func_800F23E0",), 0x800F2478:("func_800F2478",), - 0x800F2620:("func_800F2620",), - 0x800F2650:("func_800F2650",), - 0x800F26C0:("func_800F26C0",), - 0x800F26F0:("func_800F26F0",), - 0x800F2728:("func_800F2728",), - 0x800F29A0:("func_800F29A0",), - 0x800F2CD8:("func_800F2CD8",), + 0x800F2620:("SkelCurve_Clear",), + 0x800F2650:("SkelCurve_Init",), + 0x800F26C0:("SkelCurve_Destroy",), + 0x800F26F0:("SkelCurve_SetAnim",), + 0x800F2728:("SkelCurve_Update",), + 0x800F29A0:("SkelCurve_DrawLimb",), + 0x800F2CD8:("SkelCurve_Draw",), 0x800F2D30:("FireObj_InitWithParams",), 0x800F2E48:("FireObj_SetState",), 0x800F2EAC:("FireObj_SetPosition",), @@ -1891,16 +1891,16 @@ 0x80102834:("Lights_New",), 0x80102880:("Lights_GlowCheck",), 0x80102A64:("Lights_DrawGlow",), - 0x80102C60:("zelda_malloc",), - 0x80102C88:("zelda_mallocR",), - 0x80102CB0:("zelda_realloc",), - 0x80102CE0:("zelda_free",), - 0x80102D08:("zelda_calloc",), - 0x80102D60:("MainHeap_AnalyzeArena",), - 0x80102D98:("MainHeap_Check",), - 0x80102DBC:("MainHeap_Init",), - 0x80102DEC:("MainHeap_Cleanup",), - 0x80102E10:("MainHeap_IsInitialized",), + 0x80102C60:("ZeldaArena_Malloc",), + 0x80102C88:("ZeldaArena_MallocR",), + 0x80102CB0:("ZeldaArena_Realloc",), + 0x80102CE0:("ZeldaArena_Free",), + 0x80102D08:("ZeldaArena_Calloc",), + 0x80102D60:("ZeldaArena_GetSizes",), + 0x80102D98:("ZeldaArena_Check",), + 0x80102DBC:("ZeldaArena_Init",), + 0x80102DEC:("ZeldaArena_Cleanup",), + 0x80102E10:("ZeldaArena_IsInitialized",), 0x80102E40:("func_80102E40",), 0x80102E90:("func_80102E90",), 0x80102EA4:("func_80102EA4",), @@ -2519,95 +2519,95 @@ 0x80132FDC:("func_80132FDC",), 0x80133000:("func_80133000",), 0x80133038:("func_80133038",), - 0x801330E0:("SkelAnime_LodDrawLimb",), - 0x801332F0:("SkelAnime_LodDraw",), - 0x801334A0:("SkelAnime_LodDrawLimbSV",), - 0x80133710:("SkelAnime_LodDrawSV",), - 0x80133948:("SkelAnime_DrawLimb",), - 0x80133B3C:("SkelAnime_Draw",), - 0x80133CDC:("SkelAnime_DrawLimbSV",), - 0x80133F28:("SkelAnime_DrawSV",), + 0x801330E0:("SkelAnime_DrawLimbLod",), + 0x801332F0:("SkelAnime_DrawLod",), + 0x801334A0:("SkelAnime_DrawFlexLimbLod",), + 0x80133710:("SkelAnime_DrawFlexLod",), + 0x80133948:("SkelAnime_DrawLimbOpa",), + 0x80133B3C:("SkelAnime_DrawOpa",), + 0x80133CDC:("SkelAnime_DrawFlexLimbOpa",), + 0x80133F28:("SkelAnime_DrawFlexOpa",), 0x80134148:("func_80134148",), 0x801343C0:("func_801343C0",), - 0x80134600:("SkelAnime_AnimateFrame",), - 0x80134724:("SkelAnime_GetTotalFrames",), - 0x80134748:("SkelAnime_GetFrameCount",), - 0x80134774:("SkelAnime_Draw2Limb",), - 0x80134990:("SkelAnime_Draw2",), - 0x80134B54:("SkelAnime_DrawLimbSV2",), - 0x80134DBC:("SkelAnime_DrawSV2",), - 0x80134FFC:("func_80134FFC",), - 0x801353D4:("func_801353D4",), - 0x801353F8:("SkelAnime_GetTotalFrames2",), - 0x8013541C:("SkelAnime_GetFrameCount2",), - 0x80135448:("SkelAnime_InterpolateVec3s",), - 0x801358C8:("SkelAnime_AnimationCtxReset",), - 0x801358D4:("func_801358D4",), - 0x801358F4:("func_801358F4",), - 0x8013591C:("SkelAnime_NextEntry",), - 0x80135954:("SkelAnime_LoadLinkAnimetion",), - 0x80135A28:("SkelAnime_LoadAnimationType1",), - 0x80135A90:("SkelAnime_LoadAnimationType2",), - 0x80135B00:("SkelAnime_LoadAnimationType3",), - 0x80135B70:("SkelAnime_LoadAnimationType4",), - 0x80135BE0:("SkelAnime_LoadAnimationType5",), - 0x80135C3C:("SkelAnime_LinkAnimetionLoaded",), - 0x80135C6C:("SkelAnime_AnimationType1Loaded",), - 0x80135CDC:("SkelAnime_AnimationType2Loaded",), - 0x80135D38:("SkelAnime_AnimationType3Loaded",), - 0x80135DB8:("SkelAnime_AnimationType4Loaded",), - 0x80135E3C:("SkelAnime_AnimationType5Loaded",), - 0x80135EE8:("func_80135EE8",), - 0x80135F88:("SkelAnime_InitLinkAnimetion",), - 0x801360A8:("func_801360A8",), - 0x801360E0:("func_801360E0",), - 0x80136104:("func_80136104",), - 0x801361BC:("func_801361BC",), - 0x80136288:("func_80136288",), - 0x8013631C:("func_8013631C",), - 0x801363F0:("SkelAnime_SetTransition",), - 0x80136414:("SkelAnime_ChangeLinkAnim",), - 0x8013658C:("SkelAnime_ChangeLinkAnimDefaultStop",), - 0x801365EC:("SkelAnime_ChangeLinkAnimPlaybackStop",), - 0x80136650:("SkelAnime_ChangeLinkAnimDefaultRepeat",), - 0x801366AC:("SkelAnime_ChangeLinkAnimPlaybackRepeat",), - 0x8013670C:("func_8013670C",), - 0x8013673C:("func_8013673C",), - 0x8013676C:("func_8013676C",), - 0x801367B0:("func_801367B0",), - 0x801367F4:("func_801367F4",), - 0x8013682C:("func_8013682C",), - 0x801368CC:("func_801368CC",), - 0x8013696C:("SkelAnime_SetModeStop",), - 0x80136990:("func_80136990",), - 0x80136A48:("func_80136A48",), + 0x80134600:("SkelAnime_GetFrameData",), + 0x80134724:("Animation_GetLength",), + 0x80134748:("Animation_GetLastFrame",), + 0x80134774:("SkelAnime_DrawLimb",), + 0x80134990:("SkelAnime_Draw",), + 0x80134B54:("SkelAnime_DrawFlexLimb",), + 0x80134DBC:("SkelAnime_DrawFlex",), + 0x80134FFC:("SkelAnime_GetFrameData2",), + 0x801353D4:("Animation_GetLimbCount2",), + 0x801353F8:("Animation_GetLength2",), + 0x8013541C:("Animation_GetLastFrame2",), + 0x80135448:("SkelAnime_InterpFrameTable",), + 0x801358C8:("AnimationContext_Reset",), + 0x801358D4:("AnimationContext_SetNextQueue",), + 0x801358F4:("AnimationContext_DisableQueue",), + 0x8013591C:("AnimationContext_AddEntry",), + 0x80135954:("AnimationContext_SetLoadFrame",), + 0x80135A28:("AnimationContext_SetCopyAll",), + 0x80135A90:("AnimationContext_SetInterp",), + 0x80135B00:("AnimationContext_SetCopyTrue",), + 0x80135B70:("AnimationContext_SetCopyFalse",), + 0x80135BE0:("AnimationContext_SetMoveActor",), + 0x80135C3C:("AnimationContext_LoadFrame",), + 0x80135C6C:("AnimationContext_CopyAll",), + 0x80135CDC:("AnimationContext_Interp",), + 0x80135D38:("AnimationContext_CopyTrue",), + 0x80135DB8:("AnimationContext_CopyFalse",), + 0x80135E3C:("AnimationContext_MoveActor",), + 0x80135EE8:("AnimationContext_Update",), + 0x80135F88:("SkelAnime_InitLink",), + 0x801360A8:("LinkAnimation_SetUpdateFunction",), + 0x801360E0:("LinkAnimation_Update",), + 0x80136104:("LinkAnimation_Morph",), + 0x801361BC:("LinkAnimation_AnimateFrame",), + 0x80136288:("LinkAnimation_Loop",), + 0x8013631C:("LinkAnimation_Once",), + 0x801363F0:("Animation_SetMorph",), + 0x80136414:("LinkAnimation_Change",), + 0x8013658C:("LinkAnimation_PlayOnce",), + 0x801365EC:("LinkAnimation_PlayOnceSetSpeed",), + 0x80136650:("LinkAnimation_PlayLoop",), + 0x801366AC:("LinkAnimation_PlayLoopSetSpeed",), + 0x8013670C:("LinkAnimation_CopyJointToMorph",), + 0x8013673C:("LinkAnimation_CopyMorphToJoint",), + 0x8013676C:("LinkAnimation_LoadToMorph",), + 0x801367B0:("LinkAnimation_LoadToJoint",), + 0x801367F4:("LinkAnimation_InterpJointMorph",), + 0x8013682C:("LinkAnimation_BlendToJoint",), + 0x801368CC:("LinkAnimation_BlendToMorph",), + 0x8013696C:("LinkAnimation_EndLoop",), + 0x80136990:("Animation_OnFrameImpl",), + 0x80136A48:("LinkAnimation_OnFrame",), 0x80136A7C:("SkelAnime_Init",), - 0x80136B30:("SkelAnime_InitSV",), + 0x80136B30:("SkelAnime_InitFlex",), 0x80136BEC:("SkelAnime_InitSkin",), - 0x80136C84:("func_80136C84",), - 0x80136CD0:("SkelAnime_FrameUpdateMatrix",), - 0x80136CF4:("func_80136CF4",), - 0x80136D98:("func_80136D98",), - 0x80136F04:("func_80136F04",), - 0x8013702C:("func_8013702C",), - 0x801370B0:("func_801370B0",), - 0x8013713C:("func_8013713C",), - 0x8013722C:("SkelAnime_ChangeAnimImpl",), - 0x801373E8:("SkelAnime_ChangeAnim",), - 0x80137430:("SkelAnime_ChangeAnimDefaultStop",), - 0x80137488:("SkelAnime_ChangeAnimTransitionStop",), - 0x801374E4:("SkelAnime_ChangeAnimPlaybackStop",), - 0x80137540:("SkelAnime_ChangeAnimDefaultRepeat",), - 0x80137594:("SkelAnime_ChangeAnimTransitionRepeat",), - 0x801375CC:("SkelAnime_ChangeAnimPlaybackRepeat",), - 0x80137624:("SkelAnime_AnimSetStop",), - 0x80137650:("SkelAnime_AnimReverse",), - 0x80137674:("func_80137674",), - 0x801376DC:("func_801376DC",), - 0x80137748:("func_80137748",), - 0x801378B8:("func_801378B8",), + 0x80136C84:("SkelAnime_SetUpdate",), + 0x80136CD0:("SkelAnime_Update",), + 0x80136CF4:("SkelAnime_Morph",), + 0x80136D98:("SkelAnime_MorphTaper",), + 0x80136F04:("SkelAnime_AnimateFrame",), + 0x8013702C:("SkelAnime_LoopFull",), + 0x801370B0:("SkelAnime_LoopPartial",), + 0x8013713C:("SkelAnime_Once",), + 0x8013722C:("Animation_ChangeImpl",), + 0x801373E8:("Animation_Change",), + 0x80137430:("Animation_PlayOnce",), + 0x80137488:("Animation_MorphToPlayOnce",), + 0x801374E4:("Animation_PlayOnceSetSpeed",), + 0x80137540:("Animation_PlayLoop",), + 0x80137594:("Animation_MorphToLoop",), + 0x801375CC:("Animation_PlayLoopSetSpeed",), + 0x80137624:("Animation_EndLoop",), + 0x80137650:("Animation_Reverse",), + 0x80137674:("SkelAnime_CopyFrameTableTrue",), + 0x801376DC:("SkelAnime_CopyFrameTableFalse",), + 0x80137748:("SkelAnime_UpdateTranslation",), + 0x801378B8:("Animation_OnFrame",), 0x801378E0:("SkelAnime_Free",), - 0x8013792C:("SkelAnime_CopyVec3s",), + 0x8013792C:("SkelAnime_CopyFrameTable",), 0x80137970:("func_80137970",), 0x80137B34:("func_80137B34",), 0x80137EBC:("func_80137EBC",), @@ -3125,25 +3125,25 @@ 0x801733DC:("GameState_SetFBFilter",), 0x80173534:("Game_Nop80173534",), 0x80173540:("GameState_Draw",), - 0x80173644:("Game_ResetSegments",), + 0x80173644:("GameState_SetFrameBuffer",), 0x801736DC:("func_801736DC",), 0x80173754:("Game_UpdateInput",), 0x8017377C:("Game_Update",), 0x801737E4:("Game_IncrementFrameCount",), - 0x80173810:("Game_InitHeap",), - 0x80173880:("Game_ResizeHeap",), - 0x80173950:("Game_StateInit",), - 0x80173A50:("Game_StateFini",), - 0x80173B00:("Game_GetNextStateInit",), + 0x80173810:("GameState_InitArena",), + 0x80173880:("GameState_Realloc",), + 0x80173950:("GameState_Init",), + 0x80173A50:("GameState_Destroy",), + 0x80173B00:("GameState_GetNextStateInit",), 0x80173B0C:("Game_GetNextStateSize",), - 0x80173B18:("Game_GetShouldContinue",), - 0x80173B24:("Game_GetHeapFreeSize",), + 0x80173B18:("GameState_IsRunning",), + 0x80173B24:("GameState_GetArenaSize",), 0x80173B48:("func_80173B48",), - 0x80173BF0:("func_80173BF0",), - 0x80173C10:("Gamealloc_Alloc",), - 0x80173C7C:("Gamealloc_Free",), - 0x80173CC8:("Gamealloc_FreeAll",), - 0x80173D18:("Gamealloc_Init",), + 0x80173BF0:("GameAlloc_Log",), + 0x80173C10:("GameAlloc_Malloc",), + 0x80173C7C:("GameAlloc_Free",), + 0x80173CC8:("GameAlloc_Cleanup",), + 0x80173D18:("GameAlloc_Init",), 0x80173D30:("Graph_FaultClient",), 0x80173DAC:("Graph_DlAlloc",), 0x80173DCC:("Graph_InitTHGA",), @@ -3159,10 +3159,10 @@ 0x80174A40:("Graph_GfxPlusOne",), 0x80174A4C:("Graph_BranchDlist",), 0x80174A64:("Graph_DlistAlloc",), - 0x80174AA0:("func_80174AA0",), - 0x80174AB4:("func_80174AB4",), - 0x80174B20:("func_80174B20",), - 0x80174BA0:("func_80174BA0",), + 0x80174AA0:("ListAlloc_Init",), + 0x80174AB4:("ListAlloc_Alloc",), + 0x80174B20:("ListAlloc_Free",), + 0x80174BA0:("ListAlloc_FreeAll",), 0x80174BF0:("Main",), 0x80174F10:("Padmgr_GetControllerBitmask",), 0x80174F24:("func_80174F24",), @@ -3191,7 +3191,7 @@ 0x80175F98:("Padmgr_GetInput",), 0x80175FD4:("Padmgr_GetInput2",), 0x80176010:("Padmgr_ThreadEntry",), - 0x80176194:("Padmgr_Start",), + 0x80176194:("PadMgr_Init",), 0x80176280:("Sched_SwapFramebuffer",), 0x80176314:("Sched_RetraceUpdateFramebuffer",), 0x80176364:("Sched_HandleReset",), @@ -3354,45 +3354,45 @@ 0x801800CC:("Math_Atan2F",), 0x80180100:("Math_FAtan2F",), 0x8018012C:("Math_Acot2F",), - 0x80180160:("SysMatrix_StateAlloc",), - 0x8018019C:("SysMatrix_StatePush",), - 0x801801CC:("SysMatrix_StatePop",), - 0x801801E8:("SysMatrix_CopyCurrentState",), - 0x8018020C:("SysMatrix_SetCurrentState",), - 0x80180234:("SysMatrix_GetCurrentState",), - 0x80180244:("SysMatrix_InsertMatrix",), - 0x8018029C:("SysMatrix_InsertTranslation",), + 0x80180160:("Matrix_StateAlloc",), + 0x8018019C:("Matrix_StatePush",), + 0x801801CC:("Matrix_StatePop",), + 0x801801E8:("Matrix_CopyCurrentState",), + 0x8018020C:("Matrix_SetCurrentState",), + 0x80180234:("Matrix_GetCurrentState",), + 0x80180244:("Matrix_InsertMatrix",), + 0x8018029C:("Matrix_InsertTranslation",), 0x8018039C:("Matrix_Scale",), - 0x80180478:("SysMatrix_InsertXRotation_s",), - 0x80180610:("SysMatrix_InsertXRotation_f",), - 0x801807B8:("SysMatrix_RotateStateAroundXAxis",), - 0x80180900:("SysMatrix_SetStateXRotation",), + 0x80180478:("Matrix_InsertXRotation_s",), + 0x80180610:("Matrix_InsertXRotation_f",), + 0x801807B8:("Matrix_RotateStateAroundXAxis",), + 0x80180900:("Matrix_SetStateXRotation",), 0x801809AC:("Matrix_RotateY",), - 0x80180B48:("SysMatrix_InsertYRotation_f",), - 0x80180CF8:("SysMatrix_InsertZRotation_s",), - 0x80180E90:("SysMatrix_InsertZRotation_f",), - 0x8018103C:("SysMatrix_InsertRotation",), - 0x801812FC:("SysMatrix_RotateAndTranslateState",), - 0x80181650:("SysMatrix_SetStateRotationAndTranslation",), - 0x801817FC:("SysMatrix_ToRSPMatrix",), - 0x80181A18:("SysMatrix_GetStateAsRSPMatrix",), + 0x80180B48:("Matrix_InsertYRotation_f",), + 0x80180CF8:("Matrix_InsertZRotation_s",), + 0x80180E90:("Matrix_InsertZRotation_f",), + 0x8018103C:("Matrix_InsertRotation",), + 0x801812FC:("Matrix_JointPosition",), + 0x80181650:("Matrix_SetStateRotationAndTranslation",), + 0x801817FC:("Matrix_ToRSPMatrix",), + 0x80181A18:("Matrix_ToMtx",), 0x80181A40:("Matrix_NewMtx",), - 0x80181A6C:("SysMatrix_AppendToPolyOpaDisp",), - 0x80181A98:("SysMatrix_MultiplyVector3fByState",), - 0x80181B50:("SysMatrix_GetStateTranslation",), - 0x80181B78:("SysMatrix_GetStateTranslationAndScaledX",), - 0x80181BC4:("SysMatrix_GetStateTranslationAndScaledY",), - 0x80181C10:("SysMatrix_GetStateTranslationAndScaledZ",), - 0x80181C5C:("SysMatrix_MultiplyVector3fXZByCurrentState",), + 0x80181A6C:("Matrix_AppendToPolyOpaDisp",), + 0x80181A98:("Matrix_MultiplyVector3fByState",), + 0x80181B50:("Matrix_GetStateTranslation",), + 0x80181B78:("Matrix_GetStateTranslationAndScaledX",), + 0x80181BC4:("Matrix_GetStateTranslationAndScaledY",), + 0x80181C10:("Matrix_GetStateTranslationAndScaledZ",), + 0x80181C5C:("Matrix_MultiplyVector3fXZByCurrentState",), 0x80181CDC:("Matrix_MtxFCopy",), - 0x80181D64:("SysMatrix_FromRSPMatrix",), - 0x80181FB8:("SysMatrix_MultiplyVector3fByMatrix",), - 0x80182068:("SysMatrix_TransposeXYZ",), - 0x801820A0:("SysMatrix_NormalizeXYZ",), + 0x80181D64:("Matrix_FromRSPMatrix",), + 0x80181FB8:("Matrix_MultiplyVector3fByMatrix",), + 0x80182068:("Matrix_TransposeXYZ",), + 0x801820A0:("Matrix_NormalizeXYZ",), 0x8018219C:("func_8018219C",), 0x801822C4:("func_801822C4",), - 0x801823EC:("SysMatrix_InsertRotationAroundUnitVector_f",), - 0x8018284C:("SysMatrix_InsertRotationAroundUnitVector_s",), + 0x801823EC:("Matrix_InsertRotationAroundUnitVector_f",), + 0x8018284C:("Matrix_InsertRotationAroundUnitVector_s",), 0x80182C90:("func_80182C90",), 0x80182CA0:("func_80182CA0",), 0x80182CBC:("func_80182CBC",), diff --git a/tools/disasm/variables.txt b/tools/disasm/variables.txt index d6ae0cfab..6cbe303ee 100644 --- a/tools/disasm/variables.txt +++ b/tools/disasm/variables.txt @@ -23,8 +23,8 @@ 0x80096B68:("sIrqMgrResetTime","volatile OSTime","",0x8), 0x80096B70:("sIrqMgrRetraceTime","volatile OSTime","",0x8), 0x80096B78:("sIrqMgrRetraceCount","s32","",0x4), - 0x80096B80:("D_80096B80","char*","[18]",0x48), - 0x80096BC8:("sExceptionNames","char*","[6]",0x18), + 0x80096B80:("sCpuExceptions","char*","[18]",0x48), + 0x80096BC8:("sFpuExceptions","char*","[6]",0x18), 0x80096BE0:("sFaultDrawContext","FaultDrawer*","",0x4), 0x80096BE4:("sFaultDrawerDefault","FaultDrawer","",0x3c), 0x80096C20:("D_80096C20","UNK_TYPE4","",0x4), @@ -61,8 +61,8 @@ 0x80097E90:("__osCurrentHandle","OSPiHandle*","[2]",0x8), 0x80097EA0:("__osPiAccessQueueEnabled","UNK_TYPE4","",0x4), 0x80097EB0:("osViModeNtscHpn1","OSViMode","",0x50), - 0x80097F00:("D_80097F00","UNK_TYPE4","",0x4), - 0x80097F04:("D_80097F04","UNK_TYPE1","",0x1), + 0x80097F00:("__osPfsInodeCacheChannel","s32","",0x4), + 0x80097F04:("__osPfsInodeCacheBank","u8","",0x1), 0x80097F10:("D_80097F10","UNK_TYPE4","",0x4), 0x80097F20:("spaces","char","[]",0x21), 0x80097F44:("zeroes","char","[]",0x24), @@ -326,7 +326,7 @@ 0x8009CD50:("sRandFloat","f32","",0x4), 0x8009CD60:("sArenaLockMsg","OSMesg","[1]",0x4), 0x8009CD70:("tmp_task","OSTask","",0x40), - 0x8009CDB0:("D_8009CDB0","UNK_TYPE1","",0x1), + 0x8009CDB0:("osPifBuffers","OSPifRam","[4]",0x100), 0x8009CEB0:("siAccessBuf","OSMesg","[1]",0x4), 0x8009CEB8:("__osSiAccessQueue","OSMesgQueue","",0x18), 0x8009CED0:("__osContPifRam","OSPifRam","",0x40), @@ -347,7 +347,7 @@ 0x8009E3E8:("D_8009E3E8","OSMesg","[1]",0x4), 0x8009E3F0:("D_8009E3F0","OSMesg","[1]",0x4), 0x8009E3F8:("__osPiAccessQueue","OSMesgQueue","",0x18), - 0x8009E410:("__osPfsInodeCache","_OSInode","",0x100), + 0x8009E410:("__osPfsInodeCache","__OSInode","",0x100), 0x8009E510:("__osEventStateTab","__OSEventState","[16]",0x80), 0x8009E590:("D_8009E590","OSTimer","",0x20), 0x8009E5B0:("__osCurrentTime","OSTime","",0x8), @@ -2256,8 +2256,8 @@ 0x801D1570:("D_801D1570","f32","[13]",0x34), 0x801D15B0:("D_801D15B0","Vec3f","",0xC), 0x801D15BC:("D_801D15BC","UNK_TYPE4","",0x4), - 0x801D15D0:("sATan2Tbl","u16","[1025]",0x802), - 0x801D1DE0:("D_801D1DE0","RSPMatrix","",0x40), + 0x801D15D0:("sATan2Tbl","s16","[1025]",0x802), + 0x801D1DE0:("D_801D1DE0","Mtx","",0x40), 0x801D1E20:("D_801D1E20","MtxF","",0x40), 0x801D1E60:("D_801D1E60","UNK_PTR","",0x4), 0x801D1E64:("D_801D1E64","UNK_PTR","",0x4), @@ -4011,16 +4011,15 @@ 0x801EE1E0:("D_801EE1E0","Vec3f","",0xc), 0x801EE1F0:("D_801EE1F0","Vec3f","",0xc), 0x801EE200:("D_801EE200","EffSparkParams","",0x4c4), - 0x801EE6C8:("D_801EE6C8","ColTriParams","",0x34), - 0x801EE700:("D_801EE700","ColTriParams","",0x34), + 0x801EE6C8:("D_801EE6C8","TriNorm","",0x34), + 0x801EE700:("D_801EE700","TriNorm","",0x34), 0x801EE738:("D_801EE738","EffSparkParams","",0x4c4), 0x801EEC00:("D_801EEC00","EffSparkParams","",0x4c4), 0x801EF0C8:("D_801EF0C8","EffSparkParams","",0x4c4), 0x801EF590:("D_801EF590","UNK_TYPE1","",0x1), 0x801EF5C8:("D_801EF5C8","UNK_TYPE1","",0x1), - 0x801EF600:("D_801EF600","ColTriParams","",0x34), - 0x801EF638:("D_801EF638","ColTriParams","",0x34), - 0x801EF66D:("D_801EF66D","UNK_TYPE1","",0x1), + 0x801EF600:("D_801EF600","TriNorm","",0x34), + 0x801EF638:("D_801EF638","TriNorm","",0x34), 0x801EF670:("gSaveContext","SaveContext","",0x48e8), 0x801F3F58:("D_801F3F58","UNK_TYPE1","",0x1), 0x801F3F5A:("D_801F3F5A","UNK_TYPE1","",0x1), @@ -4093,7 +4092,7 @@ 0x801F4F68:("D_801F4F68","UNK_TYPE1","",0x1), 0x801F4F6A:("D_801F4F6A","UNK_TYPE1","",0x1), 0x801F4F70:("sLightsBuffer","LightsBuffer","",0x188), - 0x801F5100:("mainHeap","Arena","",0x24), + 0x801F5100:("sZeldaArena","Arena","",0x24), 0x801F5130:("D_801F5130","UNK_TYPE1","",0x1), 0x801F5270:("D_801F5270","UNK_TYPE1","",0x1), 0x801F528E:("D_801F528E","UNK_TYPE1","",0x1), @@ -4122,8 +4121,8 @@ 0x801F5AA0:("sMatAnimStep","s32","",0x4), 0x801F5AA4:("sMatAnimFlags","u32","",0x4), 0x801F5AA8:("sMatAnimAlphaRatio","f32","",0x4), - 0x801F5AB0:("D_801F5AB0","UNK_TYPE1","",0x1), - 0x801F5AB4:("D_801F5AB4","UNK_TYPE1","",0x1), + 0x801F5AB0:("sAnimQueueFlags","UNK_TYPE1","",0x1), + 0x801F5AB4:("sDisableAnimQueueFlags","UNK_TYPE1","",0x1), 0x801F5AC0:("D_801F5AC0","UNK_TYPE1","",0x1), 0x801F69D0:("D_801F69D0","UNK_TYPE1","",0x1), 0x801F6A10:("D_801F6A10","UNK_TYPE1","",0x1), @@ -4186,19 +4185,19 @@ 0x801F80F0:("graphDlEntry","Gfx*","",0x4), 0x801F80F8:("D_801F80F8","UNK_TYPE1","",0x1), 0x801F8150:("lastRenderFrameTimestamp","u64","",0x8), - 0x801F8160:("siEventCallbackQueue","OSMesgQueue","",0x18), - 0x801F8178:("siEventCallbackBuffer","OSMesg","[1]",0x4), + 0x801F8160:("sSiIntMsgQ","OSMesgQueue","",0x18), + 0x801F8178:("sSiIntMsgBuf","OSMesg","[1]",0x4), 0x801F8180:("gSegments","u32","[16]",0x40), 0x801F81C0:("gSchedContext","SchedContext","",0x338), - 0x801F84F8:("mainIrqmgrCallbackNode","IrqMgrClient","",0x8), - 0x801F8500:("mainIrqmgrCallbackQueue","OSMesgQueue","",0x18), - 0x801F8518:("mainIrqCallbackBuffer","OSMesg","[60]",0xf0), - 0x801F8608:("graphOSThread","OSThread","",0x1b0), - 0x801F87B8:("graphStack","u8","[6144]",0x1800), + 0x801F84F8:("irqClient","IrqMgrClient","",0x8), + 0x801F8500:("irqMgrMsgQ","OSMesgQueue","",0x18), + 0x801F8518:("irqMgrMsgBuf","OSMesg","[60]",0xf0), + 0x801F8608:("sGraphThread","OSThread","",0x1b0), + 0x801F87B8:("sGraphStack","u8","[6144]",0x1800), 0x801F9FB8:("schedStack","u8","[1536]",0x600), 0x801FA5B8:("audioStack","u8","[2048]",0x800), 0x801FADB8:("padmgrStack","u8","[1280]",0x500), - 0x801FB2B8:("graphStackEntry","StackEntry","",0x1c), + 0x801FB2B8:("sGraphStackInfo","StackEntry","",0x1c), 0x801FB2D8:("schedStackEntry","StackEntry","",0x1c), 0x801FB2F8:("audioStackEntry","StackEntry","",0x1c), 0x801FB318:("padmgrStackEntry","StackEntry","",0x1c), diff --git a/tools/sizes/boot_functions.csv b/tools/sizes/boot_functions.csv index d39d4c1ba..9d9b2d8b0 100644 --- a/tools/sizes/boot_functions.csv +++ b/tools/sizes/boot_functions.csv @@ -328,7 +328,7 @@ asm/non_matchings/boot/piacs/__osPiCreateAccessQueue.s,__osPiCreateAccessQueue,0 asm/non_matchings/boot/piacs/__osPiGetAccess.s,__osPiGetAccess,0x8008C1E0,0x11 asm/non_matchings/boot/piacs/__osPiRelAccess.s,__osPiRelAccess,0x8008C224,0xB asm/non_matchings/boot/devmgr/__osDevMgrMain.s,__osDevMgrMain,0x8008C260,0x104 -asm/non_matchings/boot/pirawdma/osPiRawStartDma.s,osPiRawStartDma,0x8008C670,0x34 +asm/non_matchings/boot/pirawdma/__osPiRawStartDma.s,__osPiRawStartDma,0x8008C670,0x34 asm/non_matchings/boot/contpfs/__osSumcalc.s,__osSumcalc,0x8008C740,0x1D asm/non_matchings/boot/contpfs/__osIdCheckSum.s,__osIdCheckSum,0x8008C7B4,0x3F asm/non_matchings/boot/contpfs/__osRepairPackId.s,__osRepairPackId,0x8008C8B0,0xD4 @@ -371,11 +371,11 @@ asm/non_matchings/boot/guMtxIdent/guMtxIdent.s,guMtxIdent,0x8008FA60,0x14 asm/non_matchings/boot/jammesg/osJamMesg.s,osJamMesg,0x8008FAB0,0x54 asm/non_matchings/boot/setthreadpri/osSetThreadPri.s,osSetThreadPri,0x8008FC00,0x38 asm/non_matchings/boot/getthreadpri/osGetThreadPri.s,osGetThreadPri,0x8008FCE0,0x8 -asm/non_matchings/boot/epirawread/osEPiRawReadIo.s,osEPiRawReadIo,0x8008FD00,0x58 +asm/non_matchings/boot/epirawread/__osEPiRawReadIo.s,__osEPiRawReadIo,0x8008FD00,0x58 asm/non_matchings/boot/viswapbuf/osViSwapBuffer.s,osViSwapBuffer,0x8008FE60,0x14 asm/non_matchings/boot/position/guPositionF.s,guPositionF,0x8008FEB0,0x6A asm/non_matchings/boot/position/guPosition.s,guPosition,0x80090058,0x1A -asm/non_matchings/boot/epirawdma/osEPiRawStartDma.s,osEPiRawStartDma,0x800900C0,0x78 +asm/non_matchings/boot/epirawdma/__osEPiRawStartDma.s,__osEPiRawStartDma,0x800900C0,0x78 asm/non_matchings/boot/sptaskyielded/osSpTaskYielded.s,osSpTaskYielded,0x800902A0,0x18 asm/non_matchings/boot/bcmp/bcmp.s,bcmp,0x80090300,0x48 asm/non_matchings/boot/gettime/osGetTime.s,osGetTime,0x80090420,0x24 diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index d8ca54506..da6bc4acb 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -1175,8 +1175,8 @@ asm/non_matchings/code/z_eventmgr/ActorCutscene_GetCurrentCamera.s,ActorCutscene asm/non_matchings/code/z_eventmgr/func_800F21CC.s,func_800F21CC,0x800F21CC,0x3E asm/non_matchings/code/z_eventmgr/func_800F22C4.s,func_800F22C4,0x800F22C4,0x40 asm/non_matchings/code/z_eventmgr/ActorCutscene_SetReturnCamera.s,ActorCutscene_SetReturnCamera,0x800F23C4,0x7 -asm/non_matchings/code/code_800F23E0/func_800F23E0.s,func_800F23E0,0x800F23E0,0x26 -asm/non_matchings/code/code_800F23E0/func_800F2478.s,func_800F2478,0x800F2478,0x6A +asm/non_matchings/code/z_fcurve_data/func_800F23E0.s,func_800F23E0,0x800F23E0,0x26 +asm/non_matchings/code/z_fcurve_data/func_800F2478.s,func_800F2478,0x800F2478,0x6A asm/non_matchings/code/z_fcurve_data_skelanime/func_800F2620.s,func_800F2620,0x800F2620,0xC asm/non_matchings/code/z_fcurve_data_skelanime/func_800F2650.s,func_800F2650,0x800F2650,0x1C asm/non_matchings/code/z_fcurve_data_skelanime/func_800F26C0.s,func_800F26C0,0x800F26C0,0xC @@ -1684,8 +1684,8 @@ asm/non_matchings/code/z_parameter/func_80121FC4.s,func_80121FC4,0x80121FC4,0x14 asm/non_matchings/code/z_path/func_801224E0.s,func_801224E0,0x801224E0,0x11 asm/non_matchings/code/z_path/func_80122524.s,func_80122524,0x80122524,0x2A asm/non_matchings/code/z_path/func_801225CC.s,func_801225CC,0x801225CC,0x25 -asm/non_matchings/code/code_80122660/func_80122660.s,func_80122660,0x80122660,0x4 -asm/non_matchings/code/code_80122660/func_80122670.s,func_80122670,0x80122670,0x1C +asm/non_matchings/code/z_pause/func_80122660.s,func_80122660,0x80122660,0x4 +asm/non_matchings/code/z_pause/func_80122670.s,func_80122670,0x80122670,0x1C asm/non_matchings/code/z_player_lib/func_801226E0.s,func_801226E0,0x801226E0,0x19 asm/non_matchings/code/z_player_lib/func_80122744.s,func_80122744,0x80122744,0x7 asm/non_matchings/code/z_player_lib/func_80122760.s,func_80122760,0x80122760,0x42 @@ -2040,16 +2040,16 @@ asm/non_matchings/code/z_skelanime/SkelAnime_LodDrawSV.s,SkelAnime_LodDrawSV,0x8 asm/non_matchings/code/z_skelanime/SkelAnime_DrawLimb.s,SkelAnime_DrawLimb,0x80133948,0x7D asm/non_matchings/code/z_skelanime/SkelAnime_Draw.s,SkelAnime_Draw,0x80133B3C,0x68 asm/non_matchings/code/z_skelanime/SkelAnime_DrawLimbSV.s,SkelAnime_DrawLimbSV,0x80133CDC,0x93 -asm/non_matchings/code/z_skelanime/SkelAnime_DrawSV.s,SkelAnime_DrawSV,0x80133F28,0x88 +asm/non_matchings/code/z_skelanime/SkelAnime_DrawFlexOpa.s,SkelAnime_DrawFlexOpa,0x80133F28,0x88 asm/non_matchings/code/z_skelanime/func_80134148.s,func_80134148,0x80134148,0x9E asm/non_matchings/code/z_skelanime/func_801343C0.s,func_801343C0,0x801343C0,0x90 asm/non_matchings/code/z_skelanime/SkelAnime_AnimateFrame.s,SkelAnime_AnimateFrame,0x80134600,0x49 asm/non_matchings/code/z_skelanime/SkelAnime_GetTotalFrames.s,SkelAnime_GetTotalFrames,0x80134724,0x9 -asm/non_matchings/code/z_skelanime/SkelAnime_GetFrameCount.s,SkelAnime_GetFrameCount,0x80134748,0xB +asm/non_matchings/code/z_skelanime/Animation_GetLastFrame.s,Animation_GetLastFrame,0x80134748,0xB asm/non_matchings/code/z_skelanime/SkelAnime_Draw2Limb.s,SkelAnime_Draw2Limb,0x80134774,0x87 -asm/non_matchings/code/z_skelanime/SkelAnime_Draw2.s,SkelAnime_Draw2,0x80134990,0x71 +asm/non_matchings/code/z_skelanime/SkelAnime_Draw.s,SkelAnime_Draw,0x80134990,0x71 asm/non_matchings/code/z_skelanime/SkelAnime_DrawLimbSV2.s,SkelAnime_DrawLimbSV2,0x80134B54,0x9A -asm/non_matchings/code/z_skelanime/SkelAnime_DrawSV2.s,SkelAnime_DrawSV2,0x80134DBC,0x90 +asm/non_matchings/code/z_skelanime/SkelAnime_DrawFlex.s,SkelAnime_DrawFlex,0x80134DBC,0x90 asm/non_matchings/code/z_skelanime/func_80134FFC.s,func_80134FFC,0x80134FFC,0xF6 asm/non_matchings/code/z_skelanime/func_801353D4.s,func_801353D4,0x801353D4,0x9 asm/non_matchings/code/z_skelanime/SkelAnime_GetTotalFrames2.s,SkelAnime_GetTotalFrames2,0x801353F8,0x9 @@ -2096,30 +2096,30 @@ asm/non_matchings/code/z_skelanime/SkelAnime_SetModeStop.s,SkelAnime_SetModeStop asm/non_matchings/code/z_skelanime/func_80136990.s,func_80136990,0x80136990,0x2E asm/non_matchings/code/z_skelanime/func_80136A48.s,func_80136A48,0x80136A48,0xD asm/non_matchings/code/z_skelanime/SkelAnime_Init.s,SkelAnime_Init,0x80136A7C,0x2D -asm/non_matchings/code/z_skelanime/SkelAnime_InitSV.s,SkelAnime_InitSV,0x80136B30,0x2F +asm/non_matchings/code/z_skelanime/SkelAnime_InitFlex.s,SkelAnime_InitFlex,0x80136B30,0x2F asm/non_matchings/code/z_skelanime/SkelAnime_InitSkin.s,SkelAnime_InitSkin,0x80136BEC,0x26 asm/non_matchings/code/z_skelanime/func_80136C84.s,func_80136C84,0x80136C84,0x13 -asm/non_matchings/code/z_skelanime/SkelAnime_FrameUpdateMatrix.s,SkelAnime_FrameUpdateMatrix,0x80136CD0,0x9 +asm/non_matchings/code/z_skelanime/SkelAnime_Update.s,SkelAnime_Update,0x80136CD0,0x9 asm/non_matchings/code/z_skelanime/func_80136CF4.s,func_80136CF4,0x80136CF4,0x29 asm/non_matchings/code/z_skelanime/func_80136D98.s,func_80136D98,0x80136D98,0x5B asm/non_matchings/code/z_skelanime/func_80136F04.s,func_80136F04,0x80136F04,0x4A asm/non_matchings/code/z_skelanime/func_8013702C.s,func_8013702C,0x8013702C,0x21 asm/non_matchings/code/z_skelanime/func_801370B0.s,func_801370B0,0x801370B0,0x23 asm/non_matchings/code/z_skelanime/func_8013713C.s,func_8013713C,0x8013713C,0x3C -asm/non_matchings/code/z_skelanime/SkelAnime_ChangeAnimImpl.s,SkelAnime_ChangeAnimImpl,0x8013722C,0x6F -asm/non_matchings/code/z_skelanime/SkelAnime_ChangeAnim.s,SkelAnime_ChangeAnim,0x801373E8,0x12 -asm/non_matchings/code/z_skelanime/SkelAnime_ChangeAnimDefaultStop.s,SkelAnime_ChangeAnimDefaultStop,0x80137430,0x16 -asm/non_matchings/code/z_skelanime/SkelAnime_ChangeAnimTransitionStop.s,SkelAnime_ChangeAnimTransitionStop,0x80137488,0x17 -asm/non_matchings/code/z_skelanime/SkelAnime_ChangeAnimPlaybackStop.s,SkelAnime_ChangeAnimPlaybackStop,0x801374E4,0x17 -asm/non_matchings/code/z_skelanime/SkelAnime_ChangeAnimDefaultRepeat.s,SkelAnime_ChangeAnimDefaultRepeat,0x80137540,0x15 -asm/non_matchings/code/z_skelanime/SkelAnime_ChangeAnimTransitionRepeat.s,SkelAnime_ChangeAnimTransitionRepeat,0x80137594,0xE -asm/non_matchings/code/z_skelanime/SkelAnime_ChangeAnimPlaybackRepeat.s,SkelAnime_ChangeAnimPlaybackRepeat,0x801375CC,0x16 +asm/non_matchings/code/z_skelanime/Animation_ChangeImpl.s,Animation_ChangeImpl,0x8013722C,0x6F +asm/non_matchings/code/z_skelanime/Animation_Change.s,Animation_Change,0x801373E8,0x12 +asm/non_matchings/code/z_skelanime/Animation_PlayOnce.s,Animation_PlayOnce,0x80137430,0x16 +asm/non_matchings/code/z_skelanime/Animation_MorphToPlayOnce.s,Animation_MorphToPlayOnce,0x80137488,0x17 +asm/non_matchings/code/z_skelanime/Animation_PlayOnceSetSpeed.s,Animation_PlayOnceSetSpeed,0x801374E4,0x17 +asm/non_matchings/code/z_skelanime/Animation_PlayLoop.s,Animation_PlayLoop,0x80137540,0x15 +asm/non_matchings/code/z_skelanime/Animation_MorphToLoop.s,Animation_MorphToLoop,0x80137594,0xE +asm/non_matchings/code/z_skelanime/Animation_ChangePlaybackRepeat.s,Animation_ChangePlaybackRepeat,0x801375CC,0x16 asm/non_matchings/code/z_skelanime/SkelAnime_AnimSetStop.s,SkelAnime_AnimSetStop,0x80137624,0xB asm/non_matchings/code/z_skelanime/SkelAnime_AnimReverse.s,SkelAnime_AnimReverse,0x80137650,0x9 asm/non_matchings/code/z_skelanime/func_80137674.s,func_80137674,0x80137674,0x1A asm/non_matchings/code/z_skelanime/func_801376DC.s,func_801376DC,0x801376DC,0x1B asm/non_matchings/code/z_skelanime/func_80137748.s,func_80137748,0x80137748,0x5C -asm/non_matchings/code/z_skelanime/func_801378B8.s,func_801378B8,0x801378B8,0xA +asm/non_matchings/code/z_skelanime/Animation_OnFrame.s,Animation_OnFrame,0x801378B8,0xA asm/non_matchings/code/z_skelanime/SkelAnime_Free.s,SkelAnime_Free,0x801378E0,0x13 asm/non_matchings/code/z_skelanime/SkelAnime_CopyVec3s.s,SkelAnime_CopyVec3s,0x8013792C,0x11 asm/non_matchings/code/z_skin/func_80137970.s,func_80137970,0x80137970,0x71 @@ -2705,7 +2705,7 @@ asm/non_matchings/code/padmgr/func_80175E68.s,func_80175E68,0x80175E68,0x4C asm/non_matchings/code/padmgr/Padmgr_GetInput.s,Padmgr_GetInput,0x80175F98,0xF asm/non_matchings/code/padmgr/Padmgr_GetInput2.s,Padmgr_GetInput2,0x80175FD4,0xF asm/non_matchings/code/padmgr/Padmgr_ThreadEntry.s,Padmgr_ThreadEntry,0x80176010,0x61 -asm/non_matchings/code/padmgr/Padmgr_Start.s,Padmgr_Start,0x80176194,0x3B +asm/non_matchings/code/padmgr/PadMgr_Init.s,PadMgr_Init,0x80176194,0x3B asm/non_matchings/code/sched/Sched_SwapFramebuffer.s,Sched_SwapFramebuffer,0x80176280,0x25 asm/non_matchings/code/sched/Sched_RetraceUpdateFramebuffer.s,Sched_RetraceUpdateFramebuffer,0x80176314,0x14 asm/non_matchings/code/sched/Sched_HandleReset.s,Sched_HandleReset,0x80176364,0x3 @@ -2868,45 +2868,45 @@ asm/non_matchings/code/sys_math_atan/Math_Atan2S.s,Math_Atan2S,0x8017FEE4,0x7A asm/non_matchings/code/sys_math_atan/Math_Atan2F.s,Math_Atan2F,0x801800CC,0xD asm/non_matchings/code/sys_math_atan/Math_FAtan2F.s,Math_FAtan2F,0x80180100,0xB asm/non_matchings/code/sys_math_atan/Math_Acot2F.s,Math_Acot2F,0x8018012C,0xD -asm/non_matchings/code/sys_matrix/SysMatrix_StateAlloc.s,SysMatrix_StateAlloc,0x80180160,0xF -asm/non_matchings/code/sys_matrix/SysMatrix_StatePush.s,SysMatrix_StatePush,0x8018019C,0xC -asm/non_matchings/code/sys_matrix/SysMatrix_StatePop.s,SysMatrix_StatePop,0x801801CC,0x7 -asm/non_matchings/code/sys_matrix/SysMatrix_CopyCurrentState.s,SysMatrix_CopyCurrentState,0x801801E8,0x9 -asm/non_matchings/code/sys_matrix/SysMatrix_SetCurrentState.s,SysMatrix_SetCurrentState,0x8018020C,0xA -asm/non_matchings/code/sys_matrix/SysMatrix_GetCurrentState.s,SysMatrix_GetCurrentState,0x80180234,0x4 -asm/non_matchings/code/sys_matrix/SysMatrix_InsertMatrix.s,SysMatrix_InsertMatrix,0x80180244,0x16 -asm/non_matchings/code/sys_matrix/SysMatrix_InsertTranslation.s,SysMatrix_InsertTranslation,0x8018029C,0x40 +asm/non_matchings/code/sys_matrix/Matrix_StateAlloc.s,Matrix_StateAlloc,0x80180160,0xF +asm/non_matchings/code/sys_matrix/Matrix_StatePush.s,Matrix_StatePush,0x8018019C,0xC +asm/non_matchings/code/sys_matrix/Matrix_StatePop.s,Matrix_StatePop,0x801801CC,0x7 +asm/non_matchings/code/sys_matrix/Matrix_CopyCurrentState.s,Matrix_CopyCurrentState,0x801801E8,0x9 +asm/non_matchings/code/sys_matrix/Matrix_SetCurrentState.s,Matrix_SetCurrentState,0x8018020C,0xA +asm/non_matchings/code/sys_matrix/Matrix_GetCurrentState.s,Matrix_GetCurrentState,0x80180234,0x4 +asm/non_matchings/code/sys_matrix/Matrix_InsertMatrix.s,Matrix_InsertMatrix,0x80180244,0x16 +asm/non_matchings/code/sys_matrix/Matrix_InsertTranslation.s,Matrix_InsertTranslation,0x8018029C,0x40 asm/non_matchings/code/sys_matrix/Matrix_Scale.s,Matrix_Scale,0x8018039C,0x37 -asm/non_matchings/code/sys_matrix/SysMatrix_InsertXRotation_s.s,SysMatrix_InsertXRotation_s,0x80180478,0x66 -asm/non_matchings/code/sys_matrix/SysMatrix_InsertXRotation_f.s,SysMatrix_InsertXRotation_f,0x80180610,0x6A -asm/non_matchings/code/sys_matrix/SysMatrix_RotateStateAroundXAxis.s,SysMatrix_RotateStateAroundXAxis,0x801807B8,0x52 -asm/non_matchings/code/sys_matrix/SysMatrix_SetStateXRotation.s,SysMatrix_SetStateXRotation,0x80180900,0x2B +asm/non_matchings/code/sys_matrix/Matrix_InsertXRotation_s.s,Matrix_InsertXRotation_s,0x80180478,0x66 +asm/non_matchings/code/sys_matrix/Matrix_InsertXRotation_f.s,Matrix_InsertXRotation_f,0x80180610,0x6A +asm/non_matchings/code/sys_matrix/Matrix_RotateStateAroundXAxis.s,Matrix_RotateStateAroundXAxis,0x801807B8,0x52 +asm/non_matchings/code/sys_matrix/Matrix_SetStateXRotation.s,Matrix_SetStateXRotation,0x80180900,0x2B asm/non_matchings/code/sys_matrix/Matrix_RotateY.s,Matrix_RotateY,0x801809AC,0x67 -asm/non_matchings/code/sys_matrix/SysMatrix_InsertYRotation_f.s,SysMatrix_InsertYRotation_f,0x80180B48,0x6C -asm/non_matchings/code/sys_matrix/SysMatrix_InsertZRotation_s.s,SysMatrix_InsertZRotation_s,0x80180CF8,0x66 -asm/non_matchings/code/sys_matrix/SysMatrix_InsertZRotation_f.s,SysMatrix_InsertZRotation_f,0x80180E90,0x6B -asm/non_matchings/code/sys_matrix/SysMatrix_InsertRotation.s,SysMatrix_InsertRotation,0x8018103C,0xB0 -asm/non_matchings/code/sys_matrix/SysMatrix_RotateAndTranslateState.s,SysMatrix_RotateAndTranslateState,0x801812FC,0xD5 -asm/non_matchings/code/sys_matrix/SysMatrix_SetStateRotationAndTranslation.s,SysMatrix_SetStateRotationAndTranslation,0x80181650,0x6B -asm/non_matchings/code/sys_matrix/SysMatrix_ToRSPMatrix.s,SysMatrix_ToRSPMatrix,0x801817FC,0x87 -asm/non_matchings/code/sys_matrix/SysMatrix_GetStateAsRSPMatrix.s,SysMatrix_GetStateAsRSPMatrix,0x80181A18,0xA +asm/non_matchings/code/sys_matrix/Matrix_InsertYRotation_f.s,Matrix_InsertYRotation_f,0x80180B48,0x6C +asm/non_matchings/code/sys_matrix/Matrix_InsertZRotation_s.s,Matrix_InsertZRotation_s,0x80180CF8,0x66 +asm/non_matchings/code/sys_matrix/Matrix_InsertZRotation_f.s,Matrix_InsertZRotation_f,0x80180E90,0x6B +asm/non_matchings/code/sys_matrix/Matrix_InsertRotation.s,Matrix_InsertRotation,0x8018103C,0xB0 +asm/non_matchings/code/sys_matrix/Matrix_RotateAndTranslateState.s,Matrix_RotateAndTranslateState,0x801812FC,0xD5 +asm/non_matchings/code/sys_matrix/Matrix_SetStateRotationAndTranslation.s,Matrix_SetStateRotationAndTranslation,0x80181650,0x6B +asm/non_matchings/code/sys_matrix/Matrix_ToRSPMatrix.s,Matrix_ToRSPMatrix,0x801817FC,0x87 +asm/non_matchings/code/sys_matrix/Matrix_GetStateAsRSPMatrix.s,Matrix_GetStateAsRSPMatrix,0x80181A18,0xA asm/non_matchings/code/sys_matrix/Matrix_NewMtx.s,Matrix_NewMtx,0x80181A40,0xB -asm/non_matchings/code/sys_matrix/SysMatrix_AppendToPolyOpaDisp.s,SysMatrix_AppendToPolyOpaDisp,0x80181A6C,0xB -asm/non_matchings/code/sys_matrix/SysMatrix_MultiplyVector3fByState.s,SysMatrix_MultiplyVector3fByState,0x80181A98,0x2E -asm/non_matchings/code/sys_matrix/SysMatrix_GetStateTranslation.s,SysMatrix_GetStateTranslation,0x80181B50,0xA -asm/non_matchings/code/sys_matrix/SysMatrix_GetStateTranslationAndScaledX.s,SysMatrix_GetStateTranslationAndScaledX,0x80181B78,0x13 -asm/non_matchings/code/sys_matrix/SysMatrix_GetStateTranslationAndScaledY.s,SysMatrix_GetStateTranslationAndScaledY,0x80181BC4,0x13 -asm/non_matchings/code/sys_matrix/SysMatrix_GetStateTranslationAndScaledZ.s,SysMatrix_GetStateTranslationAndScaledZ,0x80181C10,0x13 -asm/non_matchings/code/sys_matrix/SysMatrix_MultiplyVector3fXZByCurrentState.s,SysMatrix_MultiplyVector3fXZByCurrentState,0x80181C5C,0x20 +asm/non_matchings/code/sys_matrix/Matrix_AppendToPolyOpaDisp.s,Matrix_AppendToPolyOpaDisp,0x80181A6C,0xB +asm/non_matchings/code/sys_matrix/Matrix_MultiplyVector3fByState.s,Matrix_MultiplyVector3fByState,0x80181A98,0x2E +asm/non_matchings/code/sys_matrix/Matrix_GetStateTranslation.s,Matrix_GetStateTranslation,0x80181B50,0xA +asm/non_matchings/code/sys_matrix/Matrix_GetStateTranslationAndScaledX.s,Matrix_GetStateTranslationAndScaledX,0x80181B78,0x13 +asm/non_matchings/code/sys_matrix/Matrix_GetStateTranslationAndScaledY.s,Matrix_GetStateTranslationAndScaledY,0x80181BC4,0x13 +asm/non_matchings/code/sys_matrix/Matrix_GetStateTranslationAndScaledZ.s,Matrix_GetStateTranslationAndScaledZ,0x80181C10,0x13 +asm/non_matchings/code/sys_matrix/Matrix_MultiplyVector3fXZByCurrentState.s,Matrix_MultiplyVector3fXZByCurrentState,0x80181C5C,0x20 asm/non_matchings/code/sys_matrix/Matrix_MtxFCopy.s,Matrix_MtxFCopy,0x80181CDC,0x22 -asm/non_matchings/code/sys_matrix/SysMatrix_FromRSPMatrix.s,SysMatrix_FromRSPMatrix,0x80181D64,0x95 -asm/non_matchings/code/sys_matrix/SysMatrix_MultiplyVector3fByMatrix.s,SysMatrix_MultiplyVector3fByMatrix,0x80181FB8,0x2C -asm/non_matchings/code/sys_matrix/SysMatrix_TransposeXYZ.s,SysMatrix_TransposeXYZ,0x80182068,0xE -asm/non_matchings/code/sys_matrix/SysMatrix_NormalizeXYZ.s,SysMatrix_NormalizeXYZ,0x801820A0,0x3F +asm/non_matchings/code/sys_matrix/Matrix_FromRSPMatrix.s,Matrix_FromRSPMatrix,0x80181D64,0x95 +asm/non_matchings/code/sys_matrix/Matrix_MultiplyVector3fByMatrix.s,Matrix_MultiplyVector3fByMatrix,0x80181FB8,0x2C +asm/non_matchings/code/sys_matrix/Matrix_TransposeXYZ.s,Matrix_TransposeXYZ,0x80182068,0xE +asm/non_matchings/code/sys_matrix/Matrix_NormalizeXYZ.s,Matrix_NormalizeXYZ,0x801820A0,0x3F asm/non_matchings/code/sys_matrix/func_8018219C.s,func_8018219C,0x8018219C,0x4A asm/non_matchings/code/sys_matrix/func_801822C4.s,func_801822C4,0x801822C4,0x4A -asm/non_matchings/code/sys_matrix/SysMatrix_InsertRotationAroundUnitVector_f.s,SysMatrix_InsertRotationAroundUnitVector_f,0x801823EC,0x118 -asm/non_matchings/code/sys_matrix/SysMatrix_InsertRotationAroundUnitVector_s.s,SysMatrix_InsertRotationAroundUnitVector_s,0x8018284C,0x111 +asm/non_matchings/code/sys_matrix/Matrix_InsertRotationAroundUnitVector_f.s,Matrix_InsertRotationAroundUnitVector_f,0x801823EC,0x118 +asm/non_matchings/code/sys_matrix/Matrix_InsertRotationAroundUnitVector_s.s,Matrix_InsertRotationAroundUnitVector_s,0x8018284C,0x111 asm/non_matchings/code/sys_matrix/func_80182C90.s,func_80182C90,0x80182C90,0x4 asm/non_matchings/code/sys_matrix/func_80182CA0.s,func_80182CA0,0x80182CA0,0x7 asm/non_matchings/code/sys_matrix/func_80182CBC.s,func_80182CBC,0x80182CBC,0x4