Update GXSetArray usages (fixes & le arg)

This commit is contained in:
Luke Street
2026-03-31 01:06:36 -06:00
parent 2a61dea5a6
commit 2ce83d3026
14 changed files with 65 additions and 82 deletions
+8 -7
View File
@@ -134,12 +134,13 @@ void J3DLoadCPCmd(u8 addr, u32 val) {
}
#if TARGET_PC
static void J3DLoadArrayBasePtr(GXAttr attr, void* data, u32 size) {
static void J3DLoadArrayBasePtr(GXAttr attr, void* data, u32 size, bool le) {
u32 idx = (attr == GX_VA_NBT) ? 1 : (attr - GX_VA_POS);
GXCmd1u8(GX_LOAD_AURORA);
GXCmd1u16(GX_LOAD_AURORA_ARRAYBASE | idx);
GXCmd1u64((u64)data);
GXCmd1u64((u64)size);
GXCmd1u32(size);
GXCmd1u8(le ? 1 : 0);
}
#else
static void J3DLoadArrayBasePtr(GXAttr attr, void* data) {
@@ -152,15 +153,15 @@ void J3DShape::loadVtxArray() const {
#if TARGET_PC
// TODO: these can very easily overcount if the data isn't in F32 format
if (j3dSys.getVtxPos() != mVertexData->getVtxPosArray()) {
J3DLoadArrayBasePtr(GX_VA_POS, j3dSys.getVtxPos(), j3dSys.mVtxPosNum * sizeof(Vec));
J3DLoadArrayBasePtr(GX_VA_POS, j3dSys.getVtxPos(), j3dSys.mVtxPosNum * sizeof(Vec), true);
}
if (!mHasNBT && j3dSys.getVtxNrm() != mVertexData->getVtxNrmArray()) {
J3DLoadArrayBasePtr(GX_VA_NRM, j3dSys.getVtxNrm(), j3dSys.mVtxNrmNum * sizeof(Vec));
J3DLoadArrayBasePtr(GX_VA_NRM, j3dSys.getVtxNrm(), j3dSys.mVtxNrmNum * sizeof(Vec), true);
}
if (j3dSys.getVtxCol() != mVertexData->getVtxColorArray(0)) {
J3DLoadArrayBasePtr(GX_VA_CLR0, j3dSys.getVtxCol(), j3dSys.mVtxColNum * sizeof(GXColor));
J3DLoadArrayBasePtr(GX_VA_CLR0, j3dSys.getVtxCol(), j3dSys.mVtxColNum * sizeof(GXColor), true);
}
#else
J3DLoadArrayBasePtr(GX_VA_POS, j3dSys.getVtxPos());
@@ -257,9 +258,9 @@ void J3DShape::makeVtxArrayCmd() {
for (u32 i = 0; i < 12; i++) {
GXAttr attr = GXAttr(i + GX_VA_POS);
if (array[i] != nullptr)
GDSetArraySized(attr, array[i], mVertexData->getVtxArrByteSize(attr), mVertexData->getVtxArrStride(attr));
GDSetArraySized(attr, array[i], mVertexData->getVtxArrByteSize(attr), mVertexData->getVtxArrStride(attr), true);
else
GDSetArraySized(attr, nullptr, 0, mVertexData->getVtxArrStride(attr));
GDSetArraySized(attr, nullptr, 0, mVertexData->getVtxArrStride(attr), true);
}
#else
for (u32 i = 0; i < 12; i++) {