mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-06-17 22:12:43 -04:00
Update GXSetArray usages (fixes & le arg)
This commit is contained in:
@@ -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++) {
|
||||
|
||||
Reference in New Issue
Block a user