mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-05-28 16:00:40 -04:00
bd670ab091
daBaseNpc_c::setBckAnm and J3DAnmTransform* daBaseNpc_c daBaseNpc_c::setBtpAnm daBaseNpc_c::attnSttsOn daBaseNpc_c::orderEvent daBaseNpc_c::setEnvTevColor daBaseNpc_c::setRoomNo daBaseNpc_c::checkEndAnm attempt CheckCreateHeap daNpcF_addIdx daNpcF_subIdx daNpcF_incIdx daNpcF_decIdx daNpcF_ActorMngr_c::initialize() daNpcF_ActorMngr_c::entry cleanup daNpcF_ActorMngr_c::entry daNpcF_ActorMngr_c::remove daNpcF_ActorMngr_c::getActorP daNpcF_MatAnm_c::calc attempt daNpcF_SPCurve_c::initialize minor fixes daNpcF_Path_c::initialize daNpcF_Path_c::setPathInfo daNpcF_Path_c::chkPassed daNpcF_Path_c::reverse daNpcF_Path_c::setNextIdx daNpcF_Path_c::getNextIdx daNpcF_Path_c::getBeforeIdx daNpcF_Path_c::getBeforePos daNpcF_Path_c::getNextPos daNpcT_MatAnm_c::initialize daNpcT_MatAnm_c::calc daNpcT_addIdx daNpcT_subIdx daNpcT_decIdx daNpcT_Path_c::hermite daNpcT_Path_c::initialize daNpcT_Path_c::setPathInfo attempt daNpcT_Path_c::setNextPathInfo daNpcT_Path_c::reverse daNpcT_Path_c::setNextIdx daNpcT_Path_c::getDstPos attempt daNpcT_DmgStagger_c::setParam Add FLOAT_LABEL where possible fopEn_enemy / fix e_wb move jasper's jsystem work over d_attention / d_demo / d_lib work remove asm clean up dolphin files / work on some rels (#212) * d_a_alldie / d_a_tboxSw / d_a_tag_gstart / d_a_tag_hstop * dolphin OS work / cleanup * dolphin GX work / cleanup * finish changing dolphin files to C * more files into C * match rest of MSL_C math functions * more dolphin files converted to C * remove asm * d_bg_w work * remove asm * d_a_alink work / kytag14 initial changes to d_a_e_yc checkpoint until virtual destructor issue is solved daNpcF_Lookat_c::adjustMoveDisAngle daBaseNpc_c::setMtx daBaseNpc_moveBgActor_c::daBaseNpc_moveBgActor_c() daNpcT_c::ctrlFaceMotion daNpcT_c::ctrlMsgAnm attempt daNpcT_c::initTalk daNpcF_clearMessageTmpBit daNpcF_getDistTableIdx daNpcF_offTmpBit daNpcF_onTmpBit daNpcF_chkTmpBit daNpcF_onEvtBit daNpcF_chkEvtBit daNpcF_c::getDistTableIdx daNpcF_chkPointInArea daNpcF_chkDoBtnEqSpeak daNpcF_getPlayerInfoFromPlayerList attempt daNpcF_pntVsLineSegmentLengthSquare2D daNpcF_c::chkPointInArea daNpcF_c::chkPointInArea daNpcF_c::getAttentionPos daNpcT_chkTmpBit daNpcT_offTmpBit daNpcT_onTmpBit daNpcT_chkEvtBit daNpcT_offEvtBit daNpcT_onEvtBit daNpcT_chkDoBtnIsSpeak daNpcT_getDistTableIdx daBaseNpc_acMngr_c::entry daNpcF_c::initTalk undo override
108 lines
3.4 KiB
C++
108 lines
3.4 KiB
C++
//
|
|
// Generated By: dol2asm
|
|
// Translation Unit: J3DShapeDraw
|
|
//
|
|
|
|
#include "JSystem/J3DGraphBase/J3DShapeDraw.h"
|
|
#include "JSystem/JKernel/JKRHeap.h"
|
|
#include "MSL_C/MSL_Common/Src/string.h"
|
|
#include "dol2asm.h"
|
|
#include "dolphin/gx/GX.h"
|
|
#include "dolphin/os/OSCache.h"
|
|
#include "dolphin/types.h"
|
|
|
|
//
|
|
// External References:
|
|
//
|
|
|
|
extern "C" void countVertex__12J3DShapeDrawFUl();
|
|
extern "C" void* __nwa__FUli();
|
|
extern "C" void __dl__FPv();
|
|
extern "C" void _savegpr_18();
|
|
extern "C" void _restgpr_18();
|
|
|
|
/* 80314924-80314974 30F264 0050+00 1/1 0/0 0/0 .text countVertex__12J3DShapeDrawFUl */
|
|
u32 J3DShapeDraw::countVertex(u32 stride) {
|
|
u32 count = 0;
|
|
u32 dlStart = (u32)getDisplayList();
|
|
for (u8* dl = (u8*)dlStart; ((u32)dl - dlStart) < getDisplayListSize();) {
|
|
if (*dl != GX_TRIANGLEFAN && *dl != GX_TRIANGLESTRIP)
|
|
break;
|
|
u16 vtxNum = *((u16*)(dl + 1));
|
|
count += vtxNum;
|
|
dl += stride * vtxNum;
|
|
dl += 3;
|
|
}
|
|
return count;
|
|
}
|
|
|
|
#ifdef NONMATCHING
|
|
/* 80314974-80314ABC 30F2B4 0148+00 0/0 1/1 0/0 .text addTexMtxIndexInDL__12J3DShapeDrawFUlUlUl */
|
|
void J3DShapeDraw::addTexMtxIndexInDL(u32 stride, u32 attrOffs, u32 valueBase) {
|
|
u32 byteNum = countVertex(stride);
|
|
u32 newSize = ALIGN_NEXT(mDisplayListSize + byteNum, 0x20);
|
|
u8* newDLStart = new (0x20) u8[newSize];
|
|
u8* oldDLStart = getDisplayList();
|
|
u8* oldDL = oldDLStart;
|
|
u8* newDL = newDLStart;
|
|
for (; (oldDL - oldDLStart) < mDisplayListSize;) {
|
|
// Copy command
|
|
u8 h = *oldDL;
|
|
*newDL++ = h;
|
|
|
|
if (h != GX_TRIANGLEFAN && h != GX_TRIANGLESTRIP)
|
|
break;
|
|
|
|
// Copy count
|
|
// regalloc (I suspect there's a way to shove this in a u16 temp without an mr)
|
|
u32 vtxNum = *((u16*)(oldDL + 1));
|
|
*((u16*)newDL) = vtxNum;
|
|
newDL += 2;
|
|
|
|
for (s32 i = 0; i < (u16)vtxNum; i++) {
|
|
// mul arg swap
|
|
u8* oldDLVtx = (&oldDL[stride * i + 3]);
|
|
u8 pnmtxidx = *oldDLVtx;
|
|
memcpy(newDL, oldDLVtx, attrOffs);
|
|
u8* newDL1 = &newDL[attrOffs];
|
|
*newDL1++ = valueBase + pnmtxidx;
|
|
memcpy(newDL1, oldDLVtx + attrOffs, stride - attrOffs);
|
|
newDL = newDL1 + (stride - attrOffs);
|
|
}
|
|
|
|
oldDL += stride * vtxNum;
|
|
oldDL += 3;
|
|
}
|
|
|
|
u32 realSize = ALIGN_NEXT((u32)newDL - (u32)newDLStart, 0x20);
|
|
for (; (newDL - newDLStart) < newSize; newDL++)
|
|
*newDL = 0;
|
|
mDisplayListSize = realSize;
|
|
mDisplayList = newDLStart;
|
|
DCStoreRange(newDLStart, mDisplayListSize);
|
|
}
|
|
#else
|
|
#pragma push
|
|
#pragma optimization_level 0
|
|
#pragma optimizewithasm off
|
|
asm void J3DShapeDraw::addTexMtxIndexInDL(u32 param_0, u32 param_1, u32 param_2) {
|
|
nofralloc
|
|
#include "asm/JSystem/J3DGraphBase/J3DShapeDraw/addTexMtxIndexInDL__12J3DShapeDrawFUlUlUl.s"
|
|
}
|
|
#pragma pop
|
|
#endif
|
|
|
|
/* 80314ABC-80314AD4 30F3FC 0018+00 0/0 1/1 0/0 .text __ct__12J3DShapeDrawFPCUcUl */
|
|
J3DShapeDraw::J3DShapeDraw(u8 const* displayList, u32 displayListSize) {
|
|
mDisplayList = (void*)displayList;
|
|
mDisplayListSize = displayListSize;
|
|
}
|
|
|
|
/* 80314AD4-80314B00 30F414 002C+00 0/0 3/3 0/0 .text draw__12J3DShapeDrawCFv */
|
|
void J3DShapeDraw::draw() const {
|
|
GXCallDisplayList(mDisplayList, mDisplayListSize);
|
|
}
|
|
|
|
/* 80314B00-80314B48 30F440 0048+00 1/0 0/0 0/0 .text __dt__12J3DShapeDrawFv */
|
|
J3DShapeDraw::~J3DShapeDraw() {}
|