diff --git a/include/functions.h b/include/functions.h index 93b15c2c56..dbbcc07dfc 100644 --- a/include/functions.h +++ b/include/functions.h @@ -7,12 +7,12 @@ void bootproc(void); void Idle_ThreadEntry(void* arg); void ViConfig_UpdateVi(u32 mode); void ViConfig_UpdateBlack(void); -s32 DmaMgr_DmaRomToRam(u32 rom, void* ram, size_t size); +s32 DmaMgr_DmaRomToRam(uintptr_t rom, void* ram, size_t size); s32 DmaMgr_DmaHandler(OSPiHandle* pihandle, OSIoMesg* mb, s32 direction); -DmaEntry* DmaMgr_FindDmaEntry(u32 vrom); -u32 DmaMgr_TranslateVromToRom(u32 vrom); -s32 DmaMgr_FindDmaIndex(u32 vrom); -const char* func_800809F4(u32 param_1); +DmaEntry* DmaMgr_FindDmaEntry(uintptr_t vrom); +u32 DmaMgr_TranslateVromToRom(uintptr_t vrom); +s32 DmaMgr_FindDmaIndex(uintptr_t vrom); +const char* func_800809F4(uintptr_t param_1); void DmaMgr_ProcessMsg(DmaRequest* req); void DmaMgr_ThreadEntry(void* arg); s32 DmaMgr_SendRequestImpl(DmaRequest* request, void* vramStart, uintptr_t vromStart, size_t size, UNK_TYPE4 unused, OSMesgQueue* queue, void* msg); @@ -22,7 +22,7 @@ void DmaMgr_Stop(void); void* Yaz0_FirstDMA(void); void* Yaz0_NextDMA(void* curSrcPos); s32 Yaz0_DecompressImpl(u8* src, u8* dst); -void Yaz0_Decompress(u32 romStart, void* dst, size_t size); +void Yaz0_Decompress(uintptr_t romStart, void* dst, size_t size); void IrqMgr_AddClient(IrqMgr* irqmgr, IrqMgrClient* client, OSMesgQueue* msgQueue); void IrqMgr_RemoveClient(IrqMgr* irqmgr, IrqMgrClient* remove); void IrqMgr_SendMesgForClient(IrqMgr* irqmgr, OSMesg msg); @@ -256,7 +256,7 @@ s32 __osSpRawStartDma(s32 direction, void* devAddr, void* dramAddr, size_t size) s32 __osSiRawStartDma(s32 direction, void* dramAddr); s32 osEPiLinkHandle(OSPiHandle* handle); void osViBlack(u8 active); -s32 __osSiRawReadIo(u32 devAddr, u32* data); +s32 __osSiRawReadIo(uintptr_t devAddr, u32* data); OSId osGetThreadId(OSThread* t); void osSpTaskYield(void); s32 __osPfsGetNextPage(OSPfs* pfs, u8* bank, __OSInode* inode, __OSInodeUnit* page); @@ -280,7 +280,7 @@ 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, size_t size); +s32 __osPiRawStartDma(s32 direction, uintptr_t 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); @@ -322,11 +322,11 @@ s32 __osSiDeviceBusy(void); s32 osJamMesg(OSMesgQueue* mq, OSMesg msg, s32 flag); void osSetThreadPri(OSThread* t, OSPri p); OSPri osGetThreadPri(OSThread* t); -s32 __osEPiRawReadIo(OSPiHandle* handle, u32 devAddr, u32* data); +s32 __osEPiRawReadIo(OSPiHandle* handle, uintptr_t devAddr, u32* data); void osViSwapBuffer(void* frameBufPtr); void guPositionF(float mf[4][4], f32 rot, f32 pitch, f32 yaw, f32 scale, f32 x, f32 y, f32 z); void guPosition(Mtx* m, f32 rot, f32 pitch, f32 yaw, f32 scale, f32 x, f32 y, f32 z); -s32 __osEPiRawStartDma(OSPiHandle* handle, s32 direction, u32 cartAddr, void* dramAddr, size_t size); +s32 __osEPiRawStartDma(OSPiHandle* handle, s32 direction, uintptr_t cartAddr, void* dramAddr, size_t size); OSYieldResult osSpTaskYielded(OSTask* task); s32 bcmp(void* __s1, void* __s2, size_t __n); OSTime osGetTime(void); @@ -359,7 +359,7 @@ void __osViInit(void); void __osViSwapContext(void); OSMesgQueue* osPiGetCmdQueue(void); f32 cosf(f32 __x); -s32 osEPiReadIo(OSPiHandle* handle, u32 devAddr, u32* data); +s32 osEPiReadIo(OSPiHandle* handle, uintptr_t devAddr, u32* data); void osViSetSpecialFeatures(u32 func); s16 coss(u16 x); void osSetTime(OSTime ticks); @@ -380,13 +380,13 @@ u32 __osGetFpcCsr(void); // void __osPfsCheckRamArea(void); // void osPfsChecker(void); u32 osAiGetLength(void); -s32 osEPiWriteIo(OSPiHandle* handle, u32 devAddr, u32 data); +s32 osEPiWriteIo(OSPiHandle* handle, uintptr_t devAddr, u32 data); void osMapTLBRdb(void); void osYieldThread(void); void guTranslate(Mtx* mtx, f32 x, f32 y, f32 z); u32 __osGetCause(void); s32 __osContRamWrite(OSMesgQueue* mq, s32 channel, u16 address, u8* buffer, s32 force); -s32 __osEPiRawWriteIo(OSPiHandle* handle, u32 devAddr, u32 data); +s32 __osEPiRawWriteIo(OSPiHandle* handle, uintptr_t devAddr, u32 data); s32 osSetTimer(OSTimer* t, OSTime value, OSTime interval, OSMesgQueue* mq, OSMesg msg); void _Ldtob(_Pft* args, u8 type); // void _Ldunscale(void); @@ -394,7 +394,7 @@ void _Genld(_Pft* px, u8 code, u8* p, s16 nsig, s16 xexp); ldiv_t ldiv(long numer, long denom); lldiv_t lldiv(long long numer, long long denom); void _Litob(_Pft* args, u8 type); -s32 __osSiRawWriteIo(u32 devAddr, u32 data); +s32 __osSiRawWriteIo(uintptr_t devAddr, u32 data); u32 __osSpGetStatus(void); void __osSpSetStatus(u32 data); void osCreateViManager(OSPri pri); @@ -1576,8 +1576,8 @@ f32 Math_Vec3f_StepTo(Vec3f* start, Vec3f* target, f32 speed); void Lib_Nop801004FC(void); void* Lib_SegmentedToVirtual(void* ptr); void* Lib_SegmentedToVirtualNull(void* ptr); +void* Lib_VirtualToPhysical(void* ptr); void* Lib_PhysicalToVirtual(void* ptr); -void* Lib_PhysicalToVirtualNull(void* ptr); void LifeMeter_Init(PlayState* play); void LifeMeter_UpdateColors(PlayState* play); s32 LifeMeter_SaveInterfaceHealth(PlayState* play); @@ -2401,8 +2401,8 @@ void KaleidoScopeCall_Init(PlayState* play); void KaleidoScopeCall_Destroy(PlayState* play); void KaleidoScopeCall_Update(PlayState* play); void KaleidoScopeCall_Draw(PlayState* play); -// void func_80163C90(void); -// void func_80163D80(void); +void Transition_Init(TransitionContext* transitionCtx); +void Transition_Destroy(TransitionContext* transitionCtx); // void func_80163DC0(void); // void func_8016418C(void); // void func_8016424C(void); @@ -2420,6 +2420,8 @@ void* TransitionFade_Init(void* param_1); // void TransitionFade_IsDone(void); // void TransitionFade_SetColor(void); // void TransitionFade_SetType(void); +void TransitionOverlay_ClearLoadInfo(TransitionOverlay *overlayEntry); +void TransitionOverlay_SetSegment(TransitionOverlay *overlayEntry, void* vramStart, void* vramEnd, uintptr_t vromStart, uintptr_t vromEnd); void TransitionCircle_Start(void* thisx); void* TransitionCircle_Init(void* thisx); void TransitionCircle_Destroy(void* thisx); @@ -2430,10 +2432,10 @@ void TransitionCircle_LoadAndSetTexture(Gfx** gfxp, TexturePtr texture, s32 fmt, f32 arg6); void TransitionCircle_Draw(void* thisx, Gfx** gfxp); s32 TransitionCircle_IsDone(void* thisx); -// void func_801651B0(void); -// void func_80165224(void); -// void func_80165288(void); -// void func_8016537C(void); +void* TransitionOverlay_VramToRam(TransitionOverlay *overlayEntry, void* vramAddr); +void TransitionOverlay_VramToRamArray(TransitionOverlay *overlayEntry, void** vramAddrs, s32 count); +s32 TransitionOverlay_Load(TransitionOverlay *overlayEntry); +s32 TransitionOverlay_Free(TransitionOverlay *overlayEntry); void func_80165438(UNK_PTR param_1); // void func_80165444(s32 param_1, UNK_TYPE4 param_2, UNK_TYPE4 param_3, UNK_TYPE4 param_4, UNK_TYPE4 param_5); // void func_80165460(void); diff --git a/include/initvars.h b/include/initvars.h index 11a6719e9c..4de39757cc 100644 --- a/include/initvars.h +++ b/include/initvars.h @@ -610,4 +610,12 @@ extern ActorInit Oceff_Wipe7_InitVars; extern ActorInit Shot_Sun_InitVars; extern ActorInit TG_Sw_InitVars; +extern TransitionInit TransitionFade_InitVars; +extern TransitionInit TransitionTriforce_InitVars; +extern TransitionInit TransitionWipe1_InitVars; +extern TransitionInit TransitionWipe3_InitVars; +extern TransitionInit TransitionWipe4_InitVars; +extern TransitionInit TransitionCircle_InitVars; +extern TransitionInit TransitionWipe5_InitVars; + #endif diff --git a/include/os.h b/include/os.h index 838d8234ac..6e34bd4283 100644 --- a/include/os.h +++ b/include/os.h @@ -47,7 +47,7 @@ typedef struct { /* 0x04 */ u16 transferMode; /* 0x06 */ u16 blockNum; /* 0x08 */ s32 sectorNum; - /* 0x0C */ u32 devAddr; + /* 0x0C */ uintptr_t devAddr; /* 0x10 */ u32 bmCtlShadow; /* 0x14 */ u32 seqCtlShadow; /* 0x18 */ __OSBlockInfo block[2]; @@ -62,7 +62,7 @@ typedef struct OSPiHandle { /* 0x07 */ u8 relDuration; /* 0x08 */ u8 pulse; /* 0x09 */ u8 domain; - /* 0x0C */ u32 baseAddress; + /* 0x0C */ uintptr_t baseAddress; /* 0x10 */ u32 speed; /* 0x14 */ __OSTranxInfo transferInfo; } OSPiHandle; // size = 0x74 @@ -70,7 +70,7 @@ typedef struct OSPiHandle { typedef struct { /* 0x0 */ u8 type; - /* 0x4 */ u32 address; + /* 0x4 */ uintptr_t address; } OSPiInfo; // size = 0x8 @@ -97,8 +97,8 @@ typedef struct { /* 0x08 */ OSMesgQueue* cmdQueue; /* 0x0C */ OSMesgQueue* evtQueue; /* 0x10 */ OSMesgQueue* acsQueue; - /* 0x14 */ s32 (*piDmaCallback)(s32, u32, void*, size_t); - /* 0x18 */ s32 (*epiDmaCallback)(OSPiHandle*, s32, u32, void*, size_t); + /* 0x14 */ s32 (*piDmaCallback)(s32, uintptr_t, void*, size_t); + /* 0x18 */ s32 (*epiDmaCallback)(OSPiHandle*, s32, uintptr_t, void*, size_t); } OSDevMgr; // size = 0x1C typedef u64 OSTime; diff --git a/include/os_internal.h b/include/os_internal.h index b4f98bffad..2d82b41a9b 100644 --- a/include/os_internal.h +++ b/include/os_internal.h @@ -12,8 +12,8 @@ typedef struct { /* 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); + /* 0x14 */ s32 (*piDmaCallback)(s32, uintptr_t, void*, size_t); + /* 0x18 */ s32 (*epiDmaCallback)(OSPiHandle*, s32, uintptr_t, void*, size_t); } OSMgrArgs; // size = 0x1C #endif diff --git a/include/variables.h b/include/variables.h index dfe8ae715b..e865f890ef 100644 --- a/include/variables.h +++ b/include/variables.h @@ -1471,9 +1471,7 @@ extern KaleidoMgrOverlay* gKaleidoMgrCurOvl; // extern UNK_TYPE4 D_801D0BB0; // extern UNK_TYPE1 D_801D0C80; // extern UNK_TYPE1 D_801D0CB0; -extern const TransitionInit TransitionFade_InitVars; extern Gfx D_801D0D00[]; -extern const TransitionInit TransitionCircle_InitVars; extern s32 gDbgCamEnabled; // extern UNK_TYPE1 D_801D0D54; // extern UNK_TYPE2 D_801D0D58; diff --git a/include/z64actor.h b/include/z64actor.h index b110783160..f1c33783a7 100644 --- a/include/z64actor.h +++ b/include/z64actor.h @@ -105,8 +105,8 @@ typedef enum { } AllocType; typedef struct { - /* 0x00 */ u32 vromStart; - /* 0x04 */ u32 vromEnd; + /* 0x00 */ uintptr_t vromStart; + /* 0x04 */ uintptr_t vromEnd; /* 0x08 */ void* vramStart; /* 0x0C */ void* vramEnd; /* 0x10 */ void* loadedRamAddr; // original name: "allocp" diff --git a/include/z64dma.h b/include/z64dma.h index 3b17d04d03..92c0227f3d 100644 --- a/include/z64dma.h +++ b/include/z64dma.h @@ -4,21 +4,21 @@ #include "ultra64.h" typedef struct { - /* 0x00 */ u32 vromAddr; // VROM address (source) - /* 0x04 */ void* dramAddr; // DRAM address (destination) - /* 0x08 */ u32 size; // File Transfer size - /* 0x0C */ char* filename; // Filename for debugging - /* 0x10 */ s32 line; // Line for debugging - /* 0x14 */ s32 unk14; + /* 0x00 */ uintptr_t vromAddr; // VROM address (source) + /* 0x04 */ void* dramAddr; // DRAM address (destination) + /* 0x08 */ u32 size; // File Transfer size + /* 0x0C */ char* filename; // Filename for debugging + /* 0x10 */ s32 line; // Line for debugging + /* 0x14 */ s32 unk14; /* 0x18 */ OSMesgQueue* notifyQueue; // Message queue for the notification message - /* 0x1C */ OSMesg notifyMsg; // Completion notification message + /* 0x1C */ OSMesg notifyMsg; // Completion notification message } DmaRequest; // size = 0x20 typedef struct { - /* 0x0 */ u32 vromStart; - /* 0x4 */ u32 vromEnd; - /* 0x8 */ u32 romStart; - /* 0xC */ u32 romEnd; + /* 0x0 */ uintptr_t vromStart; + /* 0x4 */ uintptr_t vromEnd; + /* 0x8 */ uintptr_t romStart; + /* 0xC */ uintptr_t romEnd; } DmaEntry; // size = 0x10 #endif diff --git a/include/z64effect.h b/include/z64effect.h index b4574592a0..727bf04d2a 100644 --- a/include/z64effect.h +++ b/include/z64effect.h @@ -248,8 +248,8 @@ typedef struct { } EffectSsInit; // size = 0x8 typedef struct { - /* 0x00 */ u32 vromStart; - /* 0x04 */ u32 vromEnd; + /* 0x00 */ uintptr_t vromStart; + /* 0x04 */ uintptr_t vromEnd; /* 0x08 */ void* vramStart; /* 0x0C */ void* vramEnd; /* 0x10 */ void* loadedRamAddr; diff --git a/include/z64transition.h b/include/z64transition.h index 3742291a61..45178ba8ec 100644 --- a/include/z64transition.h +++ b/include/z64transition.h @@ -17,13 +17,42 @@ typedef struct { /* 0x20 */ s32 (*isDone)(void* transition); } TransitionInit; // size = 0x24 +typedef struct { + union { + struct { + /* 0x00 */ u32 count : 8; + /* 0x00 */ uintptr_t addr : 24; + }; + /* 0x00 */ u32 word; + } loadInfo; + /* 0x04 */ void* vramStart; + /* 0x08 */ void* vramEnd; + /* 0x0C */ uintptr_t vromStart; + /* 0x10 */ uintptr_t vromEnd; + /* 0x14 */ TransitionInit* initInfo; + /* 0x18 */ size_t size; +} TransitionOverlay; + +typedef struct { + /* 0x000 */ s16 transitionType; + /* 0x002 */ s8 fbdemoType; + /* 0x003 */ char unk_003[0x22B]; + /* 0x230 */ void* (*init)(void* transition); + /* 0x234 */ void (*destroy)(void* transition); + /* 0x238 */ void (*update)(void* transition, s32 updateRate); + /* 0x23C */ void (*draw)(void* transition, Gfx** gfxP); + /* 0x240 */ void (*start)(void* transition); + /* 0x244 */ void (*setType)(void* transition, s32 type); + /* 0x248 */ void (*setColor)(void* transition, u32 color); + /* 0x24C */ void (*setEnvColor)(void* transition, u32 color); + /* 0x250 */ s32 (*isDone)(void* transition); + /* 0x254 */ char unk_254[0x4]; +} TransitionContext; // size = 0x258 + typedef struct { /* 0x0 */ char unk_0[0xC]; } TransitionFade; // size = 0xC -extern const TransitionInit TransitionFade_InitVars; - - typedef enum { /* 0 */ TRANSITION_CIRCLE_IN, /* 1 */ TRANSITION_CIRCLE_OUT, @@ -40,7 +69,6 @@ typedef struct { /* 0x14 */ u8 direction; // Direction the circle is transitioning ( In / Out ) /* 0x15 */ u8 maskType; // Positive / Negative mask type. Value of 0 will create a black circle /* 0x16 */ u8 isDone; // Signals when Transition is done updating - /* 0x17 */ UNK_TYPE1 pad_17; // struct padding /* 0x18 */ TexturePtr texture; /* 0x1C */ u8 masks; /* 0x1D */ u8 maskt; @@ -48,6 +76,4 @@ typedef struct { /* 0x1F */ s8 unk_1F; // Set to 0 and never used } TransitionCircle; // size = 0x20 -extern const TransitionInit TransitionCircle_InitVars; - #endif diff --git a/spec b/spec index bcbcf66976..33f635b8f2 100644 --- a/spec +++ b/spec @@ -549,7 +549,6 @@ beginseg include "build/src/code/z_kaleido_manager.o" include "build/src/code/z_kaleido_scope_call.o" include "build/src/code/z_fbdemo_dlftbls.o" - include "build/data/code/code_801D0BB0.data.o" include "build/src/code/z_fbdemo.o" include "build/data/code/z_fbdemo.data.o" include "build/src/code/z_fbdemo_fade.o" diff --git a/src/boot_O2_g3/yaz0.c b/src/boot_O2_g3/yaz0.c index 5f8e5a0edc..63260e8853 100644 --- a/src/boot_O2_g3/yaz0.c +++ b/src/boot_O2_g3/yaz0.c @@ -3,7 +3,7 @@ u8 sYaz0DataBuffer[0x400]; u8* sYaz0CurDataEnd; -u32 sYaz0CurRomStart; +uintptr_t sYaz0CurRomStart; u32 sYaz0CurSize; u8* sYaz0MaxPtr; u8* D_8009BE20; @@ -123,7 +123,7 @@ s32 Yaz0_DecompressImpl(u8* src, u8* dst) { return 0; } -void Yaz0_Decompress(u32 romStart, void* dst, size_t size) { +void Yaz0_Decompress(uintptr_t 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 10d84dcb03..8e9d838729 100644 --- a/src/boot_O2_g3/z_std_dma.c +++ b/src/boot_O2_g3/z_std_dma.c @@ -60,7 +60,7 @@ s32 DmaMgr_DmaHandler(OSPiHandle* pihandle, OSIoMesg* mb, s32 direction) { return osEPiStartDma(pihandle, mb, direction); } -DmaEntry* DmaMgr_FindDmaEntry(u32 vrom) { +DmaEntry* DmaMgr_FindDmaEntry(uintptr_t vrom) { DmaEntry* curr; for (curr = dmadata; curr->vromEnd != 0; curr++) { @@ -77,7 +77,7 @@ DmaEntry* DmaMgr_FindDmaEntry(u32 vrom) { return NULL; } -u32 DmaMgr_TranslateVromToRom(u32 vrom) { +u32 DmaMgr_TranslateVromToRom(uintptr_t vrom) { DmaEntry* entry = DmaMgr_FindDmaEntry(vrom); if (entry != NULL) { @@ -95,7 +95,7 @@ u32 DmaMgr_TranslateVromToRom(u32 vrom) { return -1; } -s32 DmaMgr_FindDmaIndex(u32 vrom) { +s32 DmaMgr_FindDmaIndex(uintptr_t vrom) { DmaEntry* entry = DmaMgr_FindDmaEntry(vrom); if (entry != NULL) { diff --git a/src/code/z_actor.c b/src/code/z_actor.c index 88ec6c07bf..84616f083b 100644 --- a/src/code/z_actor.c +++ b/src/code/z_actor.c @@ -1060,7 +1060,7 @@ void Actor_SetScale(Actor* actor, f32 scale) { } void Actor_SetObjectDependency(PlayState* play, Actor* actor) { - gSegments[0x06] = PHYSICAL_TO_VIRTUAL(play->objectCtx.status[actor->objBankIndex].segment); + gSegments[0x06] = VIRTUAL_TO_PHYSICAL(play->objectCtx.status[actor->objBankIndex].segment); } void Actor_Init(Actor* actor, PlayState* play) { diff --git a/src/code/z_effect_soft_sprite_old_init.c b/src/code/z_effect_soft_sprite_old_init.c index bbdd528a4a..4f24651d13 100644 --- a/src/code/z_effect_soft_sprite_old_init.c +++ b/src/code/z_effect_soft_sprite_old_init.c @@ -50,7 +50,7 @@ void EffectSs_DrawGEffect(PlayState* play, EffectSs* this, TexturePtr texture) { SkinMatrix_SetScale(&mfScale, scale, scale, scale); SkinMatrix_MtxFMtxFMult(&mfTrans, &play->billboardMtxF, &mfTrans11DA0); SkinMatrix_MtxFMtxFMult(&mfTrans11DA0, &mfScale, &mfResult); - gSegments[0x06] = PHYSICAL_TO_VIRTUAL(object); + gSegments[0x06] = VIRTUAL_TO_PHYSICAL(object); gSPSegment(POLY_XLU_DISP++, 0x06, object); mtx = SkinMatrix_MtxFToNewMtx(gfxCtx, &mfResult); diff --git a/src/code/z_en_hy_code.c b/src/code/z_en_hy_code.c index 5e32e5c950..19a52c1b40 100644 --- a/src/code/z_en_hy_code.c +++ b/src/code/z_en_hy_code.c @@ -84,7 +84,7 @@ EnDoor* EnHy_FindNearestDoor(Actor* actor, PlayState* play) { } void EnHy_ChangeObjectAndAnim(EnHy* enHy, PlayState* play, s16 animIndex) { - gSegments[6] = PHYSICAL_TO_VIRTUAL(play->objectCtx.status[enHy->animObjIndex].segment); + gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.status[enHy->animObjIndex].segment); EnHy_ChangeAnim(&enHy->skelAnime, animIndex); } @@ -92,7 +92,7 @@ s32 EnHy_UpdateSkelAnime(EnHy* enHy, PlayState* play) { s32 isUpdated = false; if (enHy->actor.draw != NULL) { - gSegments[6] = PHYSICAL_TO_VIRTUAL(play->objectCtx.status[enHy->animObjIndex].segment); + gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.status[enHy->animObjIndex].segment); SkelAnime_Update(&enHy->skelAnime); isUpdated = true; } @@ -119,7 +119,7 @@ s32 EnHy_Init(EnHy* enHy, PlayState* play, FlexSkeletonHeader* skeletonHeaderSeg enHy->actor.objBankIndex = enHy->skelLowerObjIndex; isInitialized = true; ActorShape_Init(&enHy->actor.shape, 0.0f, NULL, 0.0f); - gSegments[6] = PHYSICAL_TO_VIRTUAL(play->objectCtx.status[enHy->actor.objBankIndex].segment); + gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.status[enHy->actor.objBankIndex].segment); SkelAnime_InitFlex(play, &enHy->skelAnime, skeletonHeaderSeg, NULL, enHy->jointTable, enHy->morphTable, ENHY_LIMB_MAX); EnHy_ChangeObjectAndAnim(enHy, play, animIndex); diff --git a/src/code/z_fbdemo_circle.c b/src/code/z_fbdemo_circle.c index 9cbc308be1..2a8144ea43 100644 --- a/src/code/z_fbdemo_circle.c +++ b/src/code/z_fbdemo_circle.c @@ -13,7 +13,7 @@ Gfx D_801D0D00[] = { }; //! @bug: TransitionCircle_Update should take an additional argument `s32 updateRate` -const TransitionInit TransitionCircle_InitVars = { +TransitionInit TransitionCircle_InitVars = { TransitionCircle_Init, TransitionCircle_Destroy, (void*)TransitionCircle_Update, TransitionCircle_Draw, TransitionCircle_Start, TransitionCircle_SetType, TransitionCircle_SetColor, NULL, TransitionCircle_IsDone, diff --git a/src/code/z_fbdemo_dlftbls.c b/src/code/z_fbdemo_dlftbls.c index 7ebce9e69e..9d3685a454 100644 --- a/src/code/z_fbdemo_dlftbls.c +++ b/src/code/z_fbdemo_dlftbls.c @@ -1,5 +1,54 @@ #include "global.h" +#include "initvars.h" +#include "overlays/fbdemos/ovl_fbdemo_triforce/z_fbdemo_triforce.h" +#include "overlays/fbdemos/ovl_fbdemo_wipe1/z_fbdemo_wipe1.h" +#include "overlays/fbdemos/ovl_fbdemo_wipe3/z_fbdemo_wipe3.h" +#include "overlays/fbdemos/ovl_fbdemo_wipe4/z_fbdemo_wipe4.h" +#include "overlays/fbdemos/ovl_fbdemo_wipe5/z_fbdemo_wipe5.h" -#pragma GLOBAL_ASM("asm/non_matchings/code/z_fbdemo_dlftbls/func_80163C90.s") +#define TRANSITION_OVERLAY(name, filename) \ + { \ + { 0, 0 }, SEGMENT_START(ovl_##filename), SEGMENT_END(ovl_##filename), SEGMENT_ROM_START(ovl_##filename), \ + SEGMENT_ROM_END(ovl_##filename), &name##_InitVars, sizeof(name) \ + } -#pragma GLOBAL_ASM("asm/non_matchings/code/z_fbdemo_dlftbls/func_80163D80.s") +#define TRANSITION_OVERLAY_INTERNAL(name) \ + { { 0, 0 }, NULL, NULL, 0, 0, &name##_InitVars, sizeof(name) } + +#define TRANSITION_OVERLAY_UNSET \ + { 0 } + +TransitionOverlay gTransitionOverlayTable[] = { + TRANSITION_OVERLAY_INTERNAL(TransitionFade), TRANSITION_OVERLAY(TransitionTriforce, fbdemo_triforce), + TRANSITION_OVERLAY(TransitionWipe1, fbdemo_wipe1), TRANSITION_OVERLAY(TransitionWipe3, fbdemo_wipe3), + TRANSITION_OVERLAY(TransitionWipe4, fbdemo_wipe4), TRANSITION_OVERLAY_INTERNAL(TransitionCircle), + TRANSITION_OVERLAY(TransitionWipe5, fbdemo_wipe5), +}; + +void Transition_Init(TransitionContext* transitionCtx) { + TransitionOverlay* overlayEntry; + ptrdiff_t relocOffset; + TransitionInit* initInfo[1]; + + overlayEntry = &gTransitionOverlayTable[transitionCtx->fbdemoType]; + TransitionOverlay_Load(overlayEntry); + + relocOffset = (uintptr_t)Lib_PhysicalToVirtual(overlayEntry->loadInfo.addr) - (uintptr_t)overlayEntry->vramStart; + initInfo[0] = NULL; + initInfo[0] = (overlayEntry->initInfo != NULL) ? (TransitionInit*)((uintptr_t)overlayEntry->initInfo + relocOffset) + : initInfo[0]; + + transitionCtx->init = initInfo[0]->init; + transitionCtx->destroy = initInfo[0]->destroy; + transitionCtx->start = initInfo[0]->start; + transitionCtx->isDone = initInfo[0]->isDone; + transitionCtx->draw = initInfo[0]->draw; + transitionCtx->update = initInfo[0]->update; + transitionCtx->setType = initInfo[0]->setType; + transitionCtx->setColor = initInfo[0]->setColor; + transitionCtx->setEnvColor = initInfo[0]->setEnvColor; +} + +void Transition_Destroy(TransitionContext* transitionCtx) { + TransitionOverlay_Free(&gTransitionOverlayTable[transitionCtx->fbdemoType]); +} diff --git a/src/code/z_lib.c b/src/code/z_lib.c index 03e6c395c0..6466b337c3 100644 --- a/src/code/z_lib.c +++ b/src/code/z_lib.c @@ -704,11 +704,29 @@ void* Lib_SegmentedToVirtual(void* ptr) { void* Lib_SegmentedToVirtualNull(void* ptr) { if (((uintptr_t)ptr >> 28) == 0) { return ptr; + } else { + return SEGMENTED_TO_VIRTUAL(ptr); } - - return SEGMENTED_TO_VIRTUAL(ptr); } +/* + * Converts a 32-bit virtual address (0x80XXXXXX) to a 24-bit physical address (0xXXXXXX). The NULL case accounts for + * the NULL virtual address being 0x00000000 and not 0x80000000. Used by transition overlays, which store their + * addresses in 24-bit fields. + */ +void* Lib_VirtualToPhysical(void* ptr) { + if (ptr == NULL) { + return NULL; + } else { + return (void*)VIRTUAL_TO_PHYSICAL(ptr); + } +} + +/* + * Converts a 24-bit physical address (0xXXXXXX) to a 32-bit virtual address (0x80XXXXXX). The NULL case accounts for + * the NULL virtual address being 0x00000000 and not 0x80000000. Used by transition overlays, which store their + * addresses in 24-bit fields. + */ void* Lib_PhysicalToVirtual(void* ptr) { if (ptr == NULL) { return NULL; @@ -716,11 +734,3 @@ void* Lib_PhysicalToVirtual(void* ptr) { return (void*)PHYSICAL_TO_VIRTUAL(ptr); } } - -void* Lib_PhysicalToVirtualNull(void* ptr) { - if (ptr == NULL) { - return NULL; - } else { - return (void*)PHYSICAL_TO_VIRTUAL(ptr); - } -} diff --git a/src/code/z_overlay.c b/src/code/z_overlay.c index a358cefe61..2c8c8d6d79 100644 --- a/src/code/z_overlay.c +++ b/src/code/z_overlay.c @@ -1,14 +1,103 @@ +/** + * @file z_overlay.c + * + * Functions for handling transition overlays in memory + * + * Status codes returned from TransitionOverlay_Load and TransitionOverlay_Free: + * + * -1 : failed allocation or null reference + * 0 : successfully loaded/freed overlay + * 1 : successfully added/removed instance + * 2 : overlay is loaded but has no instances (?) TODO: Figure out why this exists + * 3 : internal overlay, so always loaded + */ + #include "global.h" #include "z64load.h" -#pragma GLOBAL_ASM("asm/non_matchings/code/z_overlay/func_801651B0.s") +void* TransitionOverlay_VramToRam(TransitionOverlay* overlayEntry, void* vramAddr) { + void* loadedRamAddr = Lib_PhysicalToVirtual(overlayEntry->loadInfo.addr); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_overlay/func_80165224.s") + if ((loadedRamAddr != NULL) && (vramAddr >= overlayEntry->vramStart) && (vramAddr < overlayEntry->vramEnd)) { + return ((uintptr_t)loadedRamAddr - (uintptr_t)overlayEntry->vramStart) + (uintptr_t)vramAddr; + } + return vramAddr; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_overlay/func_80165288.s") +void TransitionOverlay_VramToRamArray(TransitionOverlay* overlayEntry, void** vramAddrs, s32 count) { + s32 i; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_overlay/func_8016537C.s") + for (i = 0; i < count; i++) { + vramAddrs[i] = TransitionOverlay_VramToRam(overlayEntry, vramAddrs[i]); + } +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_overlay/func_80165438.s") +s32 TransitionOverlay_Load(TransitionOverlay* overlayEntry) { + s32 count; + void* loadedRamAddr; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_overlay/func_80165444.s") + if (overlayEntry->vromStart == 0) { + return 3; + } + if (Lib_PhysicalToVirtual(overlayEntry->loadInfo.addr) == NULL) { + loadedRamAddr = ZeldaArena_Malloc(VRAM_PTR_SIZE(overlayEntry)); + + if (loadedRamAddr == NULL) { + return -1; + } + Load2_LoadOverlay(overlayEntry->vromStart, overlayEntry->vromEnd, overlayEntry->vramStart, + overlayEntry->vramEnd, loadedRamAddr); + overlayEntry->loadInfo.addr = Lib_VirtualToPhysical(loadedRamAddr); + overlayEntry->loadInfo.count = 1; + return 0; + } else { + count = overlayEntry->loadInfo.count; + if (count != 0) { + count++; + overlayEntry->loadInfo.count = count; + if (count == 0) { + return 2; + } else { + return 1; + } + } + return 2; + } +} + +s32 TransitionOverlay_Free(TransitionOverlay* overlayEntry) { + s32 count; + void* loadedRamAddr; + + if (overlayEntry->vromStart == 0) { + return 3; + } + loadedRamAddr = Lib_PhysicalToVirtual(overlayEntry->loadInfo.addr); + if (loadedRamAddr != NULL) { + count = overlayEntry->loadInfo.count; + if (count != 0) { + count--; + overlayEntry->loadInfo.count = count; + if (count == 0) { + ZeldaArena_Free(loadedRamAddr); + overlayEntry->loadInfo.addr = Lib_VirtualToPhysical(NULL); + return 0; + } + return 1; + } + return 2; + } + return -1; +} + +void TransitionOverlay_ClearLoadInfo(TransitionOverlay* overlayEntry) { + overlayEntry->loadInfo.word = 0; // Equivalent to overlayEntry->loadInfo.count = 0, overlayEntry->loadInfo.addr = 0; +} + +void TransitionOverlay_SetSegment(TransitionOverlay* overlayEntry, void* vramStart, void* vramEnd, uintptr_t vromStart, + uintptr_t vromEnd) { + overlayEntry->vramStart = vramStart; + overlayEntry->vramEnd = vramEnd; + overlayEntry->vromStart = vromStart; + overlayEntry->vromEnd = vromEnd; +} diff --git a/src/code/z_player_lib.c b/src/code/z_player_lib.c index 0888be7c53..6f4198fc79 100644 --- a/src/code/z_player_lib.c +++ b/src/code/z_player_lib.c @@ -1107,7 +1107,7 @@ void Player_DrawGetItemImpl(PlayState* play, Player* player, Vec3f* refPos, s32 OPEN_DISPS(play->state.gfxCtx); - gSegments[6] = PHYSICAL_TO_VIRTUAL(player->giObjectSegment); + gSegments[6] = VIRTUAL_TO_PHYSICAL(player->giObjectSegment); gSPSegment(POLY_OPA_DISP++, 0x06, player->giObjectSegment); gSPSegment(POLY_XLU_DISP++, 0x06, player->giObjectSegment); @@ -1187,7 +1187,7 @@ void func_80127488(PlayState* play, Player* player, u8 alpha) { } void Player_DrawCouplesMask(PlayState* play, Player* player) { - gSegments[0xA] = PHYSICAL_TO_VIRTUAL(player->maskObjectSegment); + gSegments[0xA] = VIRTUAL_TO_PHYSICAL(player->maskObjectSegment); AnimatedMat_DrawOpa(play, Lib_SegmentedToVirtual(&object_mask_meoto_Matanimheader_001CD8)); } diff --git a/src/code/z_room.c b/src/code/z_room.c index e198e95ed3..eb615c4093 100644 --- a/src/code/z_room.c +++ b/src/code/z_room.c @@ -105,7 +105,7 @@ s32 Room_HandleLoadCallbacks(PlayState* play, RoomContext* roomCtx) { roomCtx->unk31 = 0; roomCtx->curRoom.segment = roomCtx->activeRoomVram; // TODO: Segment number enum - gSegments[0x03] = PHYSICAL_TO_VIRTUAL(roomCtx->activeRoomVram); + gSegments[0x03] = VIRTUAL_TO_PHYSICAL(roomCtx->activeRoomVram); Scene_ProcessHeader(play, (SceneCmd*)roomCtx->curRoom.segment); func_80123140(play, GET_PLAYER(play)); @@ -130,7 +130,7 @@ s32 Room_HandleLoadCallbacks(PlayState* play, RoomContext* roomCtx) { void Room_Draw(PlayState* play, Room* room, u32 flags) { if (room->segment != NULL) { // TODO: Segment number enum - gSegments[0x03] = PHYSICAL_TO_VIRTUAL(room->segment); + gSegments[0x03] = VIRTUAL_TO_PHYSICAL(room->segment); roomDrawFuncs[room->mesh->type0.type](play, room, flags); } return; diff --git a/src/code/z_scene.c b/src/code/z_scene.c index 7b88d4520f..c32a2271df 100644 --- a/src/code/z_scene.c +++ b/src/code/z_scene.c @@ -52,7 +52,7 @@ void Object_InitBank(GameState* gameState, ObjectContext* objectCtx) { objectCtx->spaceEnd = (void*)((u32)objectCtx->spaceStart + spaceSize); objectCtx->mainKeepIndex = Object_Spawn(objectCtx, GAMEPLAY_KEEP); - gSegments[0x04] = PHYSICAL_TO_VIRTUAL(objectCtx->status[objectCtx->mainKeepIndex].segment); + gSegments[0x04] = VIRTUAL_TO_PHYSICAL(objectCtx->status[objectCtx->mainKeepIndex].segment); } void Object_UpdateBank(ObjectContext* objectCtx) { @@ -108,7 +108,7 @@ s32 Object_IsLoaded(ObjectContext* objectCtx, s32 index) { void Object_LoadAll(ObjectContext* objectCtx) { s32 i; s32 id; - u32 vromSize; + uintptr_t vromSize; for (i = 0; i < objectCtx->num; i++) { id = objectCtx->status[i].id; @@ -124,7 +124,7 @@ void Object_LoadAll(ObjectContext* objectCtx) { void* func_8012F73C(ObjectContext* objectCtx, s32 iParm2, s16 id) { u32 addr; - u32 vromSize; + uintptr_t vromSize; RomFile* fileTableEntry; objectCtx->status[iParm2].id = -id; @@ -224,7 +224,7 @@ void Scene_HeaderCmdSpecialFiles(PlayState* play, SceneCmd* cmd) { if (cmd->specialFiles.subKeepIndex != 0) { play->objectCtx.subKeepIndex = Object_Spawn(&play->objectCtx, cmd->specialFiles.subKeepIndex); // TODO: Segment number enum? - gSegments[0x05] = PHYSICAL_TO_VIRTUAL(play->objectCtx.status[play->objectCtx.subKeepIndex].segment); + gSegments[0x05] = VIRTUAL_TO_PHYSICAL(play->objectCtx.status[play->objectCtx.subKeepIndex].segment); } if (cmd->specialFiles.cUpElfMsgNum != 0) { @@ -350,7 +350,7 @@ void Scene_LoadAreaTextures(PlayState* play, s32 fileIndex) { { SEGMENT_ROM_START(scene_texture_07), SEGMENT_ROM_END(scene_texture_07) }, { SEGMENT_ROM_START(scene_texture_08), SEGMENT_ROM_END(scene_texture_08) }, }; - u32 vromStart = sceneTextureFiles[fileIndex].vromStart; + uintptr_t vromStart = sceneTextureFiles[fileIndex].vromStart; size_t size = sceneTextureFiles[fileIndex].vromEnd - vromStart; if (size != 0) { diff --git a/src/libultra/io/epirawdma.c b/src/libultra/io/epirawdma.c index fd7573151d..aadd8ad5bd 100644 --- a/src/libultra/io/epirawdma.c +++ b/src/libultra/io/epirawdma.c @@ -1,6 +1,6 @@ #include "global.h" -s32 __osEPiRawStartDma(OSPiHandle* handle, s32 direction, u32 cartAddr, void* dramAddr, size_t size) { +s32 __osEPiRawStartDma(OSPiHandle* handle, s32 direction, uintptr_t cartAddr, void* dramAddr, size_t size) { s32 status; OSPiHandle* curHandle; diff --git a/src/libultra/io/sirawread.c b/src/libultra/io/sirawread.c index 19327db496..7e3537603c 100644 --- a/src/libultra/io/sirawread.c +++ b/src/libultra/io/sirawread.c @@ -1,6 +1,6 @@ #include "global.h" -s32 __osSiRawReadIo(u32 devAddr, u32* data) { +s32 __osSiRawReadIo(uintptr_t devAddr, u32* data) { if (__osSiDeviceBusy()) { return -1; } diff --git a/src/libultra/io/sirawwrite.c b/src/libultra/io/sirawwrite.c index 040fdee0da..0f98b08c52 100644 --- a/src/libultra/io/sirawwrite.c +++ b/src/libultra/io/sirawwrite.c @@ -1,6 +1,6 @@ #include "global.h" -s32 __osSiRawWriteIo(u32 devAddr, u32 data) { +s32 __osSiRawWriteIo(uintptr_t devAddr, u32 data) { if (__osSiDeviceBusy() != 0) { return -1; } diff --git a/src/overlays/actors/ovl_Boss_03/z_boss_03.c b/src/overlays/actors/ovl_Boss_03/z_boss_03.c index 870bc53a1d..a0f3a208b8 100644 --- a/src/overlays/actors/ovl_Boss_03/z_boss_03.c +++ b/src/overlays/actors/ovl_Boss_03/z_boss_03.c @@ -52,7 +52,6 @@ * - Effect Update/Draw * - Seaweed */ - #include "prevent_bss_reordering.h" #include "z_boss_03.h" #include "overlays/actors/ovl_Door_Warp1/z_door_warp1.h" @@ -2156,7 +2155,7 @@ void Boss03_SetObject(PlayState* play, s16 objectId) { OPEN_DISPS(play->state.gfxCtx); - gSegments[6] = PHYSICAL_TO_VIRTUAL(play->objectCtx.status[objectIndex].segment); + gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.status[objectIndex].segment); gSPSegment(POLY_OPA_DISP++, 0x06, play->objectCtx.status[objectIndex].segment); gSPSegment(POLY_XLU_DISP++, 0x06, play->objectCtx.status[objectIndex].segment); diff --git a/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c b/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c index 2be56dda3c..90ccb1382f 100644 --- a/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c +++ b/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c @@ -311,7 +311,7 @@ void DmStk_LoadObjectForAnimation(DmStk* this, PlayState* play) { } if (objectIndex >= 0) { - gSegments[6] = PHYSICAL_TO_VIRTUAL(play->objectCtx.status[objectIndex].segment); + gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.status[objectIndex].segment); } } @@ -1909,13 +1909,13 @@ void DmStk_PostLimbDraw2(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot (this->objectStk2ObjectIndex >= 0)) { Matrix_Push(); Matrix_Scale(2.0f, 2.0f, 2.0f, MTXMODE_APPLY); - gSegments[6] = PHYSICAL_TO_VIRTUAL(play->objectCtx.status[this->objectStk2ObjectIndex].segment); + gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.status[this->objectStk2ObjectIndex].segment); gSPSegment(POLY_OPA_DISP++, 0x06, play->objectCtx.status[this->objectStk2ObjectIndex].segment); AnimatedMat_Draw(play, Lib_SegmentedToVirtual(gSkullKidMajorasMaskCurseOverlayTexAnim)); Gfx_DrawDListOpa(play, gSkullKidMajorasMaskCurseOverlayDL); - gSegments[6] = PHYSICAL_TO_VIRTUAL(play->objectCtx.status[this->objectStkObjectIndex].segment); + gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.status[this->objectStkObjectIndex].segment); gSPSegment(POLY_OPA_DISP++, 0x06, play->objectCtx.status[this->objectStkObjectIndex].segment); @@ -2027,7 +2027,7 @@ void DmStk_Draw(Actor* thisx, PlayState* play) { return; } - gSegments[6] = PHYSICAL_TO_VIRTUAL(play->objectCtx.status[this->objectStkObjectIndex].segment); + gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.status[this->objectStkObjectIndex].segment); OPEN_DISPS(play->state.gfxCtx); diff --git a/src/overlays/actors/ovl_En_Bba_01/z_en_bba_01.c b/src/overlays/actors/ovl_En_Bba_01/z_en_bba_01.c index d141c6514c..8398a69edf 100644 --- a/src/overlays/actors/ovl_En_Bba_01/z_en_bba_01.c +++ b/src/overlays/actors/ovl_En_Bba_01/z_en_bba_01.c @@ -262,8 +262,8 @@ s32 EnBba01_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* if (limbIndex == BBA_LIMB_RIGHT_LOWER_ARM_ROOT) { OPEN_DISPS(play->state.gfxCtx); gSPSegment(POLY_OPA_DISP++, 0x06, play->objectCtx.status[this->enHy.headObjIndex].segment); - gSegments[6] = PHYSICAL_TO_VIRTUAL(play->objectCtx.status[this->enHy.headObjIndex].segment); - gSegments[6] = PHYSICAL_TO_VIRTUAL(play->objectCtx.status[this->enHy.skelLowerObjIndex].segment); + gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.status[this->enHy.headObjIndex].segment); + gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.status[this->enHy.skelLowerObjIndex].segment); CLOSE_DISPS(play->state.gfxCtx); } if (limbIndex == BBA_LIMB_RIGHT_LOWER_ARM_ROOT) { @@ -298,7 +298,7 @@ void EnBba01_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* ro if (limbIndex == BBA_LIMB_HEAD) { OPEN_DISPS(play->state.gfxCtx); gSPSegment(POLY_OPA_DISP++, 0x06, play->objectCtx.status[this->enHy.skelUpperObjIndex].segment); - gSegments[0x06] = PHYSICAL_TO_VIRTUAL(play->objectCtx.status[this->enHy.skelUpperObjIndex].segment); + gSegments[0x06] = VIRTUAL_TO_PHYSICAL(play->objectCtx.status[this->enHy.skelUpperObjIndex].segment); CLOSE_DISPS(play->state.gfxCtx); } diff --git a/src/overlays/actors/ovl_En_Cne_01/z_en_cne_01.c b/src/overlays/actors/ovl_En_Cne_01/z_en_cne_01.c index 889055ee82..993076ba8c 100644 --- a/src/overlays/actors/ovl_En_Cne_01/z_en_cne_01.c +++ b/src/overlays/actors/ovl_En_Cne_01/z_en_cne_01.c @@ -252,9 +252,9 @@ s32 EnCne01_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* if (limbIndex == CNE_LIMB_HEAD) { OPEN_DISPS(play->state.gfxCtx); gSPSegment(POLY_OPA_DISP++, 0x06, play->objectCtx.status[this->enHy.headObjIndex].segment); - gSegments[6] = PHYSICAL_TO_VIRTUAL(play->objectCtx.status[this->enHy.headObjIndex].segment); + gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.status[this->enHy.headObjIndex].segment); *dList = gCneHeadBrownHairDL; - gSegments[6] = PHYSICAL_TO_VIRTUAL(play->objectCtx.status[this->enHy.skelLowerObjIndex].segment); + gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.status[this->enHy.skelLowerObjIndex].segment); CLOSE_DISPS(play->state.gfxCtx); } if (limbIndex == CNE_LIMB_HEAD) { @@ -290,7 +290,7 @@ void EnCne01_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* ro if (limbIndex == CNE_LIMB_RIGHT_FOOT) { OPEN_DISPS(play->state.gfxCtx); gSPSegment(POLY_OPA_DISP++, 0x06, play->objectCtx.status[this->enHy.skelUpperObjIndex].segment); - gSegments[0x06] = PHYSICAL_TO_VIRTUAL(play->objectCtx.status[this->enHy.skelUpperObjIndex].segment); + gSegments[0x06] = VIRTUAL_TO_PHYSICAL(play->objectCtx.status[this->enHy.skelUpperObjIndex].segment); CLOSE_DISPS(play->state.gfxCtx); } 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 50a027efa3..346246f860 100644 --- a/src/overlays/actors/ovl_En_Dnk/z_en_dnk.c +++ b/src/overlays/actors/ovl_En_Dnk/z_en_dnk.c @@ -171,7 +171,7 @@ s32 func_80A515C4(EnDnk* this) { void func_80A51648(EnDnk* this, PlayState* play) { if (SubS_IsObjectLoaded(this->unk_28E, play) == true) { - gSegments[0x06] = PHYSICAL_TO_VIRTUAL(play->objectCtx.status[this->unk_28E].segment); + gSegments[0x06] = VIRTUAL_TO_PHYSICAL(play->objectCtx.status[this->unk_28E].segment); this->actor.draw = func_80A52018; this->actor.objBankIndex = this->unk_28E; ActorShape_Init(&this->actor.shape, 0.0f, NULL, 18.0f); diff --git a/src/overlays/actors/ovl_En_Nwc/z_en_nwc.c b/src/overlays/actors/ovl_En_Nwc/z_en_nwc.c index 2f842c8aed..3f66f7f70a 100644 --- a/src/overlays/actors/ovl_En_Nwc/z_en_nwc.c +++ b/src/overlays/actors/ovl_En_Nwc/z_en_nwc.c @@ -242,14 +242,14 @@ void EnNwc_CheckFound(EnNwc* this, PlayState* play) { void EnNwc_LoadNiwSkeleton(EnNwc* this, PlayState* play) { if (Object_IsLoaded(&play->objectCtx, this->niwObjectIndex)) { - gSegments[6] = PHYSICAL_TO_VIRTUAL(play->objectCtx.status[this->niwObjectIndex].segment); + gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.status[this->niwObjectIndex].segment); SkelAnime_InitFlex(play, &this->niwSkeleton, &gNiwSkeleton, &gNiwIdleAnim, this->jointTable, this->morphTable, NIW_LIMB_MAX); Animation_Change(&this->niwSkeleton, &gNiwIdleAnim, 1.0f, 0.0f, Animation_GetLastFrame(&gNiwIdleAnim), ANIMMODE_LOOP, 0.0f); - gSegments[6] = PHYSICAL_TO_VIRTUAL(play->objectCtx.status[this->nwcObjectIndex].segment); + gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.status[this->nwcObjectIndex].segment); this->state = NWC_STATE_NIW_LOADED; EnNwc_ToggleState(this); } diff --git a/src/overlays/actors/ovl_En_S_Goro/z_en_s_goro.c b/src/overlays/actors/ovl_En_S_Goro/z_en_s_goro.c index ccc11a002d..fbfe32252b 100644 --- a/src/overlays/actors/ovl_En_S_Goro/z_en_s_goro.c +++ b/src/overlays/actors/ovl_En_S_Goro/z_en_s_goro.c @@ -788,7 +788,7 @@ s32 EnSGoro_UpdateCheerAnimation(EnSGoro* this, PlayState* play) { if (((EnJg*)this->otherGoron)->flags & 1) { this->loadedObjIndex = Object_GetIndex(&play->objectCtx, OBJECT_TAISOU); if (this->loadedObjIndex >= 0) { - gSegments[6] = PHYSICAL_TO_VIRTUAL(play->objectCtx.status[this->loadedObjIndex].segment); + gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.status[this->loadedObjIndex].segment); this->animInfoIndex = EN_S_GORO_ANIM_TAISOU_CHEER; SubS_ChangeAnimationByInfoS(&this->skelAnime, sAnimationInfo, this->animInfoIndex); return true; @@ -797,7 +797,7 @@ s32 EnSGoro_UpdateCheerAnimation(EnSGoro* this, PlayState* play) { } else if ((this->animInfoIndex == EN_S_GORO_ANIM_TAISOU_CHEER) && !(((EnJg*)this->otherGoron)->flags & 1)) { this->loadedObjIndex = Object_GetIndex(&play->objectCtx, OBJECT_OF1D_MAP); if (this->loadedObjIndex >= 0) { - gSegments[6] = PHYSICAL_TO_VIRTUAL(play->objectCtx.status[this->loadedObjIndex].segment); + gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.status[this->loadedObjIndex].segment); this->animInfoIndex = EN_S_GORO_ANIM_IDLE_STAND; SubS_ChangeAnimationByInfoS(&this->skelAnime, sAnimationInfo, this->animInfoIndex); this->skelAnime.curFrame = this->skelAnime.endFrame; @@ -1329,7 +1329,7 @@ void EnSGoro_Update(Actor* thisx, PlayState* play) { this->actionFunc(this, play); Actor_UpdateBgCheckInfo(play, &this->actor, 30.0f, 12.0f, 0.0f, 5); - gSegments[6] = PHYSICAL_TO_VIRTUAL(play->objectCtx.status[this->loadedObjIndex].segment); + gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.status[this->loadedObjIndex].segment); SkelAnime_Update(&this->skelAnime); if (this->animInfoIndex != EN_S_GORO_ANIM_SLEEPY) { EnSGoro_UpdateAttentionTarget(this, play); 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 b698777588..ebbdcf5425 100644 --- a/src/overlays/actors/ovl_En_Sob1/z_en_sob1.c +++ b/src/overlays/actors/ovl_En_Sob1/z_en_sob1.c @@ -1305,7 +1305,7 @@ void EnSob1_Blink(EnSob1* this) { } void EnSob1_ChangeObject(EnSob1* this, PlayState* play) { - gSegments[0x06] = PHYSICAL_TO_VIRTUAL(play->objectCtx.status[this->shopkeeperAnimObjIndex].segment); + gSegments[0x06] = VIRTUAL_TO_PHYSICAL(play->objectCtx.status[this->shopkeeperAnimObjIndex].segment); } s32 EnSob1_AreObjectsLoaded(EnSob1* this, PlayState* play) { @@ -1323,7 +1323,7 @@ s32 EnSob1_AreObjectsLoaded(EnSob1* this, PlayState* play) { void EnSob1_ZoraShopkeeper_Init(EnSob1* this, PlayState* play) { SkelAnime_InitFlex(play, &this->skelAnime, &gZoraSkel, NULL, this->jointTable, this->morphTable, ZORA_LIMB_MAX); - gSegments[6] = PHYSICAL_TO_VIRTUAL(play->objectCtx.status[this->shopkeeperAnimObjIndex].segment); + gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.status[this->shopkeeperAnimObjIndex].segment); Animation_Change(&this->skelAnime, &gZoraShopkeeperAnim, 1.0f, 0.0f, Animation_GetLastFrame(&gZoraShopkeeperAnim), ANIMMODE_LOOP, 0.0f); this->actor.draw = EnSob1_ZoraShopkeeper_Draw; @@ -1332,7 +1332,7 @@ void EnSob1_ZoraShopkeeper_Init(EnSob1* this, PlayState* play) { void EnSob1_GoronShopkeeper_Init(EnSob1* this, PlayState* play) { SkelAnime_InitFlex(play, &this->skelAnime, &gGoronSkel, NULL, this->jointTable, this->morphTable, GORON_LIMB_MAX); - gSegments[6] = PHYSICAL_TO_VIRTUAL(play->objectCtx.status[this->shopkeeperAnimObjIndex].segment); + gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.status[this->shopkeeperAnimObjIndex].segment); Animation_Change(&this->skelAnime, &gGoronShopkeeperAnim, 1.0f, 0.0f, Animation_GetLastFrame(&gGoronShopkeeperAnim), ANIMMODE_LOOP, 0.0f); this->actor.draw = EnSob1_GoronShopkeeper_Draw; diff --git a/src/overlays/effects/ovl_Effect_Ss_Extra/z_eff_ss_extra.c b/src/overlays/effects/ovl_Effect_Ss_Extra/z_eff_ss_extra.c index e33b486f4a..1ec1ab41d5 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Extra/z_eff_ss_extra.c +++ b/src/overlays/effects/ovl_Effect_Ss_Extra/z_eff_ss_extra.c @@ -37,7 +37,7 @@ u32 EffectSsExtra_Init(PlayState* play, u32 index, EffectSs* this, void* initPar if ((objIndex >= 0) && (Object_IsLoaded(&play->objectCtx, objIndex))) { void* segBackup = gSegments[6]; - gSegments[6] = PHYSICAL_TO_VIRTUAL(play->objectCtx.status[objIndex].segment); + gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.status[objIndex].segment); this->pos = params->pos; this->velocity = params->velocity; @@ -66,7 +66,7 @@ void EffectSsExtra_Draw(PlayState* play, u32 index, EffectSs* this) { OPEN_DISPS(play->state.gfxCtx); - gSegments[6] = PHYSICAL_TO_VIRTUAL(storedSegment); + gSegments[6] = VIRTUAL_TO_PHYSICAL(storedSegment); gSPSegment(POLY_XLU_DISP++, 0x06, storedSegment); diff --git a/src/overlays/fbdemos/ovl_fbdemo_triforce/z_fbdemo_triforce.c b/src/overlays/fbdemos/ovl_fbdemo_triforce/z_fbdemo_triforce.c index 4584cfab24..00e7cfabda 100644 --- a/src/overlays/fbdemos/ovl_fbdemo_triforce/z_fbdemo_triforce.c +++ b/src/overlays/fbdemos/ovl_fbdemo_triforce/z_fbdemo_triforce.c @@ -16,7 +16,7 @@ void TransitionTriforce_SetType(void* thisx, s32 type); void TransitionTriforce_SetColor(void* thisx, u32 color); s32 TransitionTriforce_IsDone(void* thisx); -const TransitionInit TransitionTriforce_InitVars = { +TransitionInit TransitionTriforce_InitVars = { TransitionTriforce_Init, TransitionTriforce_Destroy, TransitionTriforce_Update, TransitionTriforce_Draw, TransitionTriforce_Start, TransitionTriforce_SetType, TransitionTriforce_SetColor, NULL, TransitionTriforce_IsDone, diff --git a/src/overlays/fbdemos/ovl_fbdemo_triforce/z_fbdemo_triforce.h b/src/overlays/fbdemos/ovl_fbdemo_triforce/z_fbdemo_triforce.h index 2637b32cfe..06d807a08e 100644 --- a/src/overlays/fbdemos/ovl_fbdemo_triforce/z_fbdemo_triforce.h +++ b/src/overlays/fbdemos/ovl_fbdemo_triforce/z_fbdemo_triforce.h @@ -28,6 +28,4 @@ typedef struct { /* 0x060 */ Mtx modelView[2][3]; } TransitionTriforce; // size = 0x1E0 -extern const TransitionInit TransitionTriforce_InitVars; - #endif diff --git a/src/overlays/fbdemos/ovl_fbdemo_wipe1/z_fbdemo_wipe1.c b/src/overlays/fbdemos/ovl_fbdemo_wipe1/z_fbdemo_wipe1.c index 560d341f20..ed12d400ed 100644 --- a/src/overlays/fbdemos/ovl_fbdemo_wipe1/z_fbdemo_wipe1.c +++ b/src/overlays/fbdemos/ovl_fbdemo_wipe1/z_fbdemo_wipe1.c @@ -17,7 +17,7 @@ void TransitionWipe1_SetEnvColor(void* thisx, u32 color); s32 TransitionWipe1_IsDone(void* thisx); #if 0 -const TransitionInit TransitionWipe1_InitVars = { +TransitionInit TransitionWipe1_InitVars = { TransitionWipe1_Init, TransitionWipe1_Destroy, TransitionWipe1_Update, diff --git a/src/overlays/fbdemos/ovl_fbdemo_wipe1/z_fbdemo_wipe1.h b/src/overlays/fbdemos/ovl_fbdemo_wipe1/z_fbdemo_wipe1.h index fe70e724b4..971940bb2c 100644 --- a/src/overlays/fbdemos/ovl_fbdemo_wipe1/z_fbdemo_wipe1.h +++ b/src/overlays/fbdemos/ovl_fbdemo_wipe1/z_fbdemo_wipe1.h @@ -7,6 +7,4 @@ typedef struct { /* 0x0000 */ char unk_0[0x218]; } TransitionWipe1; // size = 0x218 -extern const TransitionInit TransitionWipe1_InitVars; - #endif diff --git a/src/overlays/fbdemos/ovl_fbdemo_wipe3/z_fbdemo_wipe3.c b/src/overlays/fbdemos/ovl_fbdemo_wipe3/z_fbdemo_wipe3.c index bbd488642f..c33f3c8c78 100644 --- a/src/overlays/fbdemos/ovl_fbdemo_wipe3/z_fbdemo_wipe3.c +++ b/src/overlays/fbdemos/ovl_fbdemo_wipe3/z_fbdemo_wipe3.c @@ -17,7 +17,7 @@ void TransitionWipe3_SetEnvColor(void* thisx, u32 color); s32 TransitionWipe3_IsDone(void* thisx); #if 0 -const TransitionInit TransitionWipe3_InitVars = { +TransitionInit TransitionWipe3_InitVars = { TransitionWipe3_Init, TransitionWipe3_Destroy, TransitionWipe3_Update, diff --git a/src/overlays/fbdemos/ovl_fbdemo_wipe3/z_fbdemo_wipe3.h b/src/overlays/fbdemos/ovl_fbdemo_wipe3/z_fbdemo_wipe3.h index f74f86a613..8fed0dcfe9 100644 --- a/src/overlays/fbdemos/ovl_fbdemo_wipe3/z_fbdemo_wipe3.h +++ b/src/overlays/fbdemos/ovl_fbdemo_wipe3/z_fbdemo_wipe3.h @@ -7,6 +7,4 @@ typedef struct { /* 0x0000 */ char unk_0[0x120]; } TransitionWipe3; // size = 0x120 -extern const TransitionInit TransitionWipe3_InitVars; - #endif diff --git a/src/overlays/fbdemos/ovl_fbdemo_wipe4/z_fbdemo_wipe4.c b/src/overlays/fbdemos/ovl_fbdemo_wipe4/z_fbdemo_wipe4.c index 49dd027c85..e91d8ab5e0 100644 --- a/src/overlays/fbdemos/ovl_fbdemo_wipe4/z_fbdemo_wipe4.c +++ b/src/overlays/fbdemos/ovl_fbdemo_wipe4/z_fbdemo_wipe4.c @@ -17,7 +17,7 @@ void TransitionWipe4_SetEnvColor(void* thisx, u32 color); s32 TransitionWipe4_IsDone(void* thisx); #if 0 -const TransitionInit TransitionWipe4_InitVars = { +TransitionInit TransitionWipe4_InitVars = { TransitionWipe4_Init, TransitionWipe4_Destroy, TransitionWipe4_Update, diff --git a/src/overlays/fbdemos/ovl_fbdemo_wipe4/z_fbdemo_wipe4.h b/src/overlays/fbdemos/ovl_fbdemo_wipe4/z_fbdemo_wipe4.h index 60296230ed..8a677c2a4b 100644 --- a/src/overlays/fbdemos/ovl_fbdemo_wipe4/z_fbdemo_wipe4.h +++ b/src/overlays/fbdemos/ovl_fbdemo_wipe4/z_fbdemo_wipe4.h @@ -7,6 +7,4 @@ typedef struct { /* 0x0000 */ char unk_0[0x28]; } TransitionWipe4; // size = 0x28 -extern const TransitionInit TransitionWipe4_InitVars; - #endif diff --git a/src/overlays/fbdemos/ovl_fbdemo_wipe5/z_fbdemo_wipe5.c b/src/overlays/fbdemos/ovl_fbdemo_wipe5/z_fbdemo_wipe5.c index 87f5638ac5..0ed80c066d 100644 --- a/src/overlays/fbdemos/ovl_fbdemo_wipe5/z_fbdemo_wipe5.c +++ b/src/overlays/fbdemos/ovl_fbdemo_wipe5/z_fbdemo_wipe5.c @@ -17,7 +17,7 @@ void TransitionWipe5_SetEnvColor(void* thisx, u32 color); s32 TransitionWipe5_IsDone(void* thisx); #if 0 -const TransitionInit TransitionWipe5_InitVars = { +TransitionInit TransitionWipe5_InitVars = { TransitionWipe5_Init, TransitionWipe5_Destroy, TransitionWipe5_Update, diff --git a/src/overlays/fbdemos/ovl_fbdemo_wipe5/z_fbdemo_wipe5.h b/src/overlays/fbdemos/ovl_fbdemo_wipe5/z_fbdemo_wipe5.h index d8ffe06164..d5f882dec4 100644 --- a/src/overlays/fbdemos/ovl_fbdemo_wipe5/z_fbdemo_wipe5.h +++ b/src/overlays/fbdemos/ovl_fbdemo_wipe5/z_fbdemo_wipe5.h @@ -7,6 +7,4 @@ typedef struct { /* 0x0000 */ char unk_0[0x14]; } TransitionWipe5; // size = 0x14 -extern const TransitionInit TransitionWipe5_InitVars; - #endif diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index 62e5b7bdc3..dbe3430c40 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -1854,8 +1854,8 @@ 0x801004FC:("Lib_Nop801004FC",), 0x80100504:("Lib_SegmentedToVirtual",), 0x8010053C:("Lib_SegmentedToVirtualNull",), - 0x80100584:("Lib_PhysicalToVirtual",), - 0x801005A0:("Lib_PhysicalToVirtualNull",), + 0x80100584:("Lib_VirtualToPhysical",), + 0x801005A0:("Lib_PhysicalToVirtual",), 0x801005C0:("LifeMeter_Init",), 0x8010069C:("LifeMeter_UpdateColors",), 0x80100A80:("func_80100A80",), @@ -2936,8 +2936,8 @@ 0x80163A38:("KaleidoScopeCall_Destroy",), 0x80163A58:("KaleidoScopeCall_Update",), 0x80163C0C:("KaleidoScopeCall_Draw",), - 0x80163C90:("func_80163C90",), - 0x80163D80:("func_80163D80",), + 0x80163C90:("Transition_Init",), + 0x80163D80:("Transition_Destroy",), 0x80163DC0:("func_80163DC0",), 0x8016418C:("func_8016418C",), 0x8016424C:("func_8016424C",), @@ -2964,12 +2964,12 @@ 0x80164C14:("func_80164C14",), 0x80165044:("TransitionCircle_Draw",), 0x80165198:("TransitionCircle_IsDone",), - 0x801651B0:("func_801651B0",), - 0x80165224:("func_80165224",), - 0x80165288:("func_80165288",), - 0x8016537C:("func_8016537C",), - 0x80165438:("func_80165438",), - 0x80165444:("func_80165444",), + 0x801651B0:("TransitionOverlay_VramToRam",), + 0x80165224:("TransitionOverlay_VramToRamArray",), + 0x80165288:("TransitionOverlay_Load",), + 0x8016537C:("TransitionOverlay_Free",), + 0x80165438:("TransitionOverlay_ClearLoadInfo",), + 0x80165444:("TransitionOverlay_SetSegment",), 0x80165460:("func_80165460",), 0x80165608:("func_80165608",), 0x80165630:("func_80165630",), diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index 9db0c0308e..acec92239c 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -1368,8 +1368,8 @@ asm/non_matchings/code/z_lib/Math_Vec3f_StepTo.s,Math_Vec3f_StepTo,0x80100448,0x asm/non_matchings/code/z_lib/Lib_Nop801004FC.s,Lib_Nop801004FC,0x801004FC,0x2 asm/non_matchings/code/z_lib/Lib_SegmentedToVirtual.s,Lib_SegmentedToVirtual,0x80100504,0xE asm/non_matchings/code/z_lib/Lib_SegmentedToVirtualNull.s,Lib_SegmentedToVirtualNull,0x8010053C,0x12 -asm/non_matchings/code/z_lib/Lib_PhysicalToVirtual.s,Lib_PhysicalToVirtual,0x80100584,0x7 -asm/non_matchings/code/z_lib/Lib_PhysicalToVirtualNull.s,Lib_PhysicalToVirtualNull,0x801005A0,0x8 +asm/non_matchings/code/z_lib/Lib_VirtualToPhysical.s,Lib_VirtualToPhysical,0x80100584,0x7 +asm/non_matchings/code/z_lib/Lib_PhysicalToVirtual.s,Lib_PhysicalToVirtual,0x801005A0,0x8 asm/non_matchings/code/z_lifemeter/LifeMeter_Init.s,LifeMeter_Init,0x801005C0,0x37 asm/non_matchings/code/z_lifemeter/LifeMeter_UpdateColors.s,LifeMeter_UpdateColors,0x8010069C,0xF9 asm/non_matchings/code/z_lifemeter/func_80100A80.s,func_80100A80,0x80100A80,0x8 @@ -2450,8 +2450,8 @@ asm/non_matchings/code/z_kaleido_scope_call/func_801639EC.s,func_801639EC,0x8016 asm/non_matchings/code/z_kaleido_scope_call/func_80163A38.s,func_80163A38,0x80163A38,0x8 asm/non_matchings/code/z_kaleido_scope_call/func_80163A58.s,func_80163A58,0x80163A58,0x6D asm/non_matchings/code/z_kaleido_scope_call/func_80163C0C.s,func_80163C0C,0x80163C0C,0x21 -asm/non_matchings/code/z_fbdemo_dlftbls/func_80163C90.s,func_80163C90,0x80163C90,0x3C -asm/non_matchings/code/z_fbdemo_dlftbls/func_80163D80.s,func_80163D80,0x80163D80,0x10 +asm/non_matchings/code/z_fbdemo_dlftbls/Transition_Init.s,Transition_Init,0x80163C90,0x3C +asm/non_matchings/code/z_fbdemo_dlftbls/Transition_Destroy.s,Transition_Destroy,0x80163D80,0x10 asm/non_matchings/code/z_fbdemo/func_80163DC0.s,func_80163DC0,0x80163DC0,0xF3 asm/non_matchings/code/z_fbdemo/func_8016418C.s,func_8016418C,0x8016418C,0x30 asm/non_matchings/code/z_fbdemo/func_8016424C.s,func_8016424C,0x8016424C,0x23 @@ -2478,12 +2478,12 @@ asm/non_matchings/code/z_fbdemo_circle/TransitionCircle_SetType.s,TransitionCirc asm/non_matchings/code/z_fbdemo_circle/func_80164C14.s,func_80164C14,0x80164C14,0x10C asm/non_matchings/code/z_fbdemo_circle/TransitionCircle_Draw.s,TransitionCircle_Draw,0x80165044,0x55 asm/non_matchings/code/z_fbdemo_circle/TransitionCircle_IsDone.s,TransitionCircle_IsDone,0x80165198,0x6 -asm/non_matchings/code/z_overlay/func_801651B0.s,func_801651B0,0x801651B0,0x1D -asm/non_matchings/code/z_overlay/func_80165224.s,func_80165224,0x80165224,0x19 -asm/non_matchings/code/z_overlay/func_80165288.s,func_80165288,0x80165288,0x3D -asm/non_matchings/code/z_overlay/func_8016537C.s,func_8016537C,0x8016537C,0x2F -asm/non_matchings/code/z_overlay/func_80165438.s,func_80165438,0x80165438,0x3 -asm/non_matchings/code/z_overlay/func_80165444.s,func_80165444,0x80165444,0x7 +asm/non_matchings/code/z_overlay/TransitionOverlay_VramToRam.s,TransitionOverlay_VramToRam,0x801651B0,0x1D +asm/non_matchings/code/z_overlay/TransitionOverlay_VramToRamArray.s,TransitionOverlay_VramToRamArray,0x80165224,0x19 +asm/non_matchings/code/z_overlay/TransitionOverlay_Load.s,TransitionOverlay_Load,0x80165288,0x3D +asm/non_matchings/code/z_overlay/TransitionOverlay_Free.s,TransitionOverlay_Free,0x8016537C,0x2F +asm/non_matchings/code/z_overlay/TransitionOverlay_ClearLoadInfo.s,TransitionOverlay_ClearLoadInfo,0x80165438,0x3 +asm/non_matchings/code/z_overlay/TransitionOverlay_SetSegment.s,TransitionOverlay_SetSegment,0x80165444,0x7 asm/non_matchings/code/z_play/func_80165460.s,func_80165460,0x80165460,0x6A asm/non_matchings/code/z_play/func_80165608.s,func_80165608,0x80165608,0xA asm/non_matchings/code/z_play/func_80165630.s,func_80165630,0x80165630,0xA