26 02 27 pjb dev 2 (#41)

* fix kankyo UB

* Fix TEV Stage DL writing

BE issue

* BE Fixes in materials/shapes

* Move to Aurora GD impl

* JUTDataFileHeader

* j3d: load vertex and texture not through GD

* Endian swap vertex data (mostly)

* Just exit(0) when closing the game

Fix crashes :godo:

* fix fopAcM_ct_placement and remove memcpy

* J3D: track vertex arrays correctly, swap work

* fix visibility, turn off overridden new/delete when we call into aurora

* event: cut name be

* Default window improvements

Double size, allow OS to decide position

* survive TParse::parseHeader_next

* color swap fix

* swap endian/fixes oob function pointer

* Remove GXGetViewportv stub

Aurora has it now

* Set array pointers via GD again

Relies on https://github.com/encounter/aurora/pull/35

* Let Aurora decide graphics backend

* disable procbar drawing

* Fix TColor endianness conversion issues

Fixes the wrong color for the flashing logo

* cam param swap

* simplify vtx loading, mat/amb color fix

* endian swap stb/fvb data

* aurora stat changes

* fix storage buffer crash

dont unnecessarily reassign vertex buffers in a way that forces aurora to recache things

* set bgobj spec fix

* add camera debug, endian swap more stb data, d_a_bg_obj::spec_data_c swapped

* JKRExpHeap: fix bad allocator slowdown

* solid tex

* texture caching

* log level

* fix window aspect ratio, disable bloom, endian swap camera type data

camera is now actually playing opening cutscene!!!!

* add GXDestroyTexObj to a couple stack init'd GXTexObjs, remove some diag printfs

* endian swap joint weight envelope data

* move to dusk config

* verbose arg errors

* better stub logging (for now)

* less logging, more BE

* more stubbing, move logging stuff around

* move all logging to aurora logging

* fix STUB_LOG, __FUNCTION__ isn't a string literal, wasn't building as it
was.

* update aurora

* fix heap alignment mismatch and always head align for now

* prevent them from fucking up my shit

* forward jut warning to DuskLog

* remove report logging

* maybe and i must emphasize maybe fix JMessage parsing

* this was a dumb idea

* preserve negative alignment for JKRHeap

* use normal free on macos and linux

* ^

* fix JMAHermiteInterpolation c impl

* endian swap J2DScreen mColor (oops)

* swap more J3D anim data, remove weird pointer addr check in J3DMaterial getMaterialAnm

* typo fix

* Fix aligned_alloc() size issues on POSIX

aligned_alloc() requires its input size to be a multiple of alignment. This wasn't being upheld so there were allocation failures in init code that made the game fail to start outside Windows.

Also just cleaned up some of this code a bit and removed fallback cases that *shouldn't* get hit.

* _Exit instead of exit()

Seriously I don't want destructors to run. Let the OS reclaim that shit.

* Reapply "Isolate JKRHeap operator overloads" (#39)

This reverts commit 78d4169929.

* Fix some oopsies

* Fix hardcoded pointer size in JUTCacheFont::allocArray

* More operator overload fixes

Add void template specialization for jkrDelete

Add new[] placement overload. Apparently.

* Fix delete macros on nullptr

TIL C++ allows that.

* fix delete[]

* fix new(std::nothrow) overload

* fix avoid ub

* swap remaining anim data needed for title logo

* get rid of op 7

* move aurora_end_frame to correct spot

* juttexture destroy tex

* j2d animation be

* shutdown crash

* link warp material fix

* mDoExt_3DlineMat1_c fix

* hacky keyboard controls

* endian swap J2DResReference, add kb_pad to files.cmake

* fix some missing endian swaps in J2D, remove addr alignment check

* Remove heap unsetting in aurora calls

Never worked properly and not the right solution even if it did

* Don't print in DC stubs

They're fine to never implement

* Fix alignment stuff again

* Compile GF from dolphin lib

Doesn't seem to break anything and shuts up some stub warnings

* j3dtexture tlut obj fix

* addTexMtxIndexInDL fix

* don't recreate null tex data every frame

* the actual fix i wanted to push

* its kinda fakematch city over here

* insert hte efb copy

* limited window size / viewport support

* IsDelete FIX

---------

Co-authored-by: madeline <qwertytrogi@gmail.com>
Co-authored-by: Jasper St. Pierre <jstpierre@mecheye.net>
Co-authored-by: Jeffrey Crowell <jeff@crowell.biz>
Co-authored-by: TakaRikka <takarikka@outlook.com>
Co-authored-by: CraftyBoss <talibabdulmaalik@gmail.com>
Co-authored-by: Lurs <l_werdes@gmx.de>
This commit is contained in:
Pieter-Jan Briers
2026-03-08 23:27:15 +01:00
committed by GitHub
parent ee42581cba
commit 00ed9402cd
726 changed files with 5289 additions and 4237 deletions
+18 -5
View File
@@ -45,6 +45,18 @@ elseif (MSVC)
endif ()
include(FetchContent)
message(STATUS "dusk: Fetching cxxopts")
FetchContent_Declare(
cxxopts
GIT_REPOSITORY https://github.com/jarro2783/cxxopts.git
GIT_TAG v3.3.1
)
FetchContent_MakeAvailable(cxxopts)
include(files.cmake)
# TODO: version handling for res includes
@@ -56,7 +68,7 @@ source_group("dusk" FILES ${DUSK_FILES})
# game_debug is for game code files that we know work when compiled with DEBUG=1
# Of course, if building a release build, this distinction is irrelevant
add_library(game_debug STATIC ${JSYSTEM_DEBUG_FILES} ${SSYSTEM_FILES})
target_compile_definitions(game_debug PRIVATE TARGET_PC VERSION=0 $<$<CONFIG:Debug>:DEBUG=1>)
target_compile_definitions(game_debug PRIVATE TARGET_PC AVOID_UB=1 VERSION=0 $<$<CONFIG:Debug>:DEBUG=1>)
# Make these properties PUBLIC so that the regular game target also sees them.
target_include_directories(game_debug PUBLIC
@@ -65,12 +77,13 @@ target_include_directories(game_debug PUBLIC
assets/${DUSK_TP_VERSION}
libs/JSystem/include
extern/aurora/include/dolphin
extern
${CMAKE_SOURCE_DIR}/build/${DUSK_TP_VERSION}/include
build/${DUSK_TP_VERSION}/include)
target_link_libraries(game_debug PUBLIC aurora::core aurora::gx aurora::gd aurora::si aurora::vi aurora::pad aurora::mtx aurora::os)
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
add_library(game SHARED ${DOLZEL_FILES} ${Z2AUDIOLIB_FILES} ${SSYSTEM_FILES} ${JSYSTEM_FILES} ${REL_FILES} ${DUSK_FILES})
add_library(game SHARED ${DOLZEL_FILES} ${Z2AUDIOLIB_FILES} ${SSYSTEM_FILES} ${JSYSTEM_FILES} ${REL_FILES} ${DUSK_FILES} ${DOLPHIN_FILES})
# Hide global operator new/delete overrides from the dynamic symbol table.
# Without this, other dylibs (e.g. Apple's AGX GPU driver) resolve these symbols
@@ -88,10 +101,10 @@ elseif (CMAKE_SYSTEM_NAME STREQUAL Linux)
)
endif ()
target_link_libraries(game PRIVATE game_debug)
target_compile_definitions(game PRIVATE TARGET_PC VERSION=0 NDEBUG=1 NDEBUG_DEFINED=1 DEBUG_DEFINED=0)
target_link_libraries(game PRIVATE game_debug cxxopts::cxxopts)
target_compile_definitions(game PRIVATE TARGET_PC AVOID_UB=1 VERSION=0 NDEBUG=1 NDEBUG_DEFINED=1 DEBUG_DEFINED=0)
add_executable(dusk src/dusk/main.cpp)
target_compile_definitions(dusk PRIVATE TARGET_PC VERSION=0)
target_compile_definitions(dusk PRIVATE TARGET_PC AVOID_UB=1 VERSION=0)
target_include_directories(dusk PRIVATE include)
target_link_libraries(dusk PRIVATE game aurora::main)
+1 -1
+10
View File
@@ -1317,10 +1317,18 @@ set(REL_FILES
src/d/actor/d_a_warp_bug.cpp
)
set(DOLPHIN_FILES
libs/dolphin/src/gf/GFGeometry.cpp
libs/dolphin/src/gf/GFLight.cpp
libs/dolphin/src/gf/GFPixel.cpp
libs/dolphin/src/gf/GFTev.cpp
)
set(DUSK_FILES
include/dusk/endian_gx.hpp
src/dusk/asserts.cpp
src/dusk/imgui.cpp
src/dusk/logging.cpp
src/dusk/stubs.cpp
src/dusk/endian.cpp
src/dusk/extras.c
@@ -1330,8 +1338,10 @@ set(DUSK_FILES
src/dusk/dvd_emu.cpp
src/dusk/imgui/imgui.hpp
src/dusk/imgui/processes.cpp
src/dusk/imgui/camera.cpp
src/dusk/imgui/debug_overlay.cpp
src/dusk/imgui/heaps.cpp
src/dusk/imgui/kb_pad.cpp
src/dusk/offset_ptr.cpp
src/dusk/OSContext.cpp
src/dusk/OSThread.cpp
+2 -2
View File
@@ -146,8 +146,8 @@ struct daFmtMng_c : public fopAc_ac_c {
for (int i = 0; i < mFormationLine * mFormationRow; i++, member++) {
fopAcM_delete(member->mNpcId);
}
delete [] mPos;
delete [] mMember;
JKR_DELETE_ARRAY(mPos);
JKR_DELETE_ARRAY(mMember);
}
int getTimeHour() {
+1 -1
View File
@@ -815,7 +815,7 @@ STATIC_ASSERT(sizeof(daNpcT_c) == 0xE40);
#define daNpcT_ct(ptr, ClassName, faceMotionAnmData, motionAnmData, faceMotionSequenceData, faceMotionStepNum, motionSequenceData, motionStepNum, evtData, arcNames) \
if (!fopAcM_CheckCondition(ptr, fopAcCnd_INIT_e)) { \
new (ptr) ClassName(faceMotionAnmData, motionAnmData, faceMotionSequenceData, faceMotionStepNum, motionSequenceData, motionStepNum, evtData, arcNames); \
JKR_NEW_ARGS (ptr) ClassName(faceMotionAnmData, motionAnmData, faceMotionSequenceData, faceMotionStepNum, motionSequenceData, motionStepNum, evtData, arcNames); \
fopAcM_OnCondition(ptr, fopAcCnd_INIT_e); \
}
+1 -1
View File
@@ -51,7 +51,7 @@ public:
}
~_Fairy_Feather_c() {
if (mpMorf != NULL) {
delete mpMorf;
JKR_DELETE(mpMorf);
mpMorf = NULL;
}
}
+1 -1
View File
@@ -22,7 +22,7 @@ public:
int getLuggageParamHigh(u32);
int create();
void create_init();
~daPasserMng_c() { delete [] childProcIds; }
~daPasserMng_c() { JKR_DELETE_ARRAY(childProcIds); }
u8 getDetailLevel() { return argument; }
u8 getPathID() { return fopAcM_GetParam(this); }
+6 -6
View File
@@ -92,15 +92,15 @@ public:
struct dCamStyleData {
struct StyleData {
/* 0x0 */ s32 field_0x0;
/* 0x4 */ u16 field_0x4;
/* 0x6 */ u16 mFlags;
/* 0x8 */ f32 mParams[28];
/* 0x0 */ BE(s32) field_0x0;
/* 0x4 */ BE(u16) field_0x4;
/* 0x6 */ BE(u16) mFlags;
/* 0x8 */ BE(f32) mParams[28];
}; // Size: 0x78
/* 0x0 */ u8 field_0x0[4];
/* 0x4 */ int mStyleNum;
/* 0x8 */ StyleData* mStyleData;
/* 0x4 */ BE(int) mStyleNum;
/* 0x8 */ StyleData mStyleData[1];
};
class dCamParam_c
+5 -1
View File
@@ -87,7 +87,7 @@ struct dCamera_event_param {
struct dCamera_type_data {
/* 0x00 */ char name[24];
/* 0x18 */ s16 field_0x18[2][11];
/* 0x18 */ BE(s16) field_0x18[2][11];
}; // Size: 0x44
struct camSphChkdata {
@@ -1086,7 +1086,11 @@ public:
bool CheckFlag(u32 i_flag) { return (mEventFlags & i_flag) != 0 ? true : false; }
#if TARGET_PC
void ResetView();
#else
void ResetView() { setView(0.0f, 0.0f, FB_WIDTH, FB_HEIGHT); }
#endif
void clearInfo(dCamInfo_c* i_info, s16 param_1) {
i_info->field_0x1e = param_1;
+1 -1
View File
@@ -59,7 +59,7 @@ class dCsr_mng_c {
};
bloObj_c() {
m_panes = new paneObj_c[1];
m_panes = JKR_NEW paneObj_c[1];
m_screen = 0;
}
+1
View File
@@ -79,6 +79,7 @@ public:
int getIsAddvance(int staffId);
int getMyActIdx(int staffId, const char* const* action, int n_action, BOOL param_3, BOOL param_4);
char* getMyNowCutName(int staffId);
char* getMyNowCutNameStr(int staffId);
dEvDtData_c* getMyDataP(int staffId, const char* dataname, BOOL isSeekStart);
void* getMySubstanceP(int staffId, const char* dataname, int datatype);
int getMySubstanceNum(int staffId, const char* dataname);
+7 -7
View File
@@ -15,8 +15,8 @@ class dDlst_FileSel_c : public dDlst_base_c {
public:
void draw();
virtual ~dDlst_FileSel_c() {
delete Scr;
delete mMessageString;
JKR_DELETE(Scr);
JKR_DELETE(mMessageString);
}
dDlst_FileSel_c() {
@@ -26,7 +26,7 @@ public:
font[1] = mDoExt_getSubFont();
JUT_ASSERT(107, font[1] != NULL);
mMessageString = new dMsgString_c();
mMessageString = JKR_NEW dMsgString_c();
JUT_ASSERT(110, mMessageString != NULL);
}
@@ -78,7 +78,7 @@ public:
class dDlst_FileSelYn_c : public dDlst_base_c {
public:
void draw();
virtual ~dDlst_FileSelYn_c() { delete ScrYn; }
virtual ~dDlst_FileSelYn_c() { JKR_DELETE(ScrYn); }
/* 0x04 */ J2DScreen* ScrYn;
/* 0x08 */ u8 field_0x08[4];
@@ -87,7 +87,7 @@ public:
class dDlst_FileSelDt_c : public dDlst_base_c {
public:
void draw();
virtual ~dDlst_FileSelDt_c() { delete ScrDt; }
virtual ~dDlst_FileSelDt_c() { JKR_DELETE(ScrDt); }
/* 0x04 */ J2DScreen* ScrDt;
/* 0x08 */ J2DPane* mpPane;
@@ -97,7 +97,7 @@ public:
class dDlst_FileSelCp_c : public dDlst_base_c {
public:
void draw();
virtual ~dDlst_FileSelCp_c() { delete Scr; }
virtual ~dDlst_FileSelCp_c() { JKR_DELETE(Scr); }
/* 0x04 */ J2DScreen* Scr;
/* 0x08 */ bool isShow;
@@ -108,7 +108,7 @@ public:
class dDlst_FileSel3m_c : public dDlst_base_c {
public:
void draw();
virtual ~dDlst_FileSel3m_c() { delete Scr3m; }
virtual ~dDlst_FileSel3m_c() { JKR_DELETE(Scr3m); }
/* 0x04 */ J2DScreen* Scr3m;
};
+3 -3
View File
@@ -14,7 +14,7 @@ public:
~fmpTresTypeGroupData_c() {
if (mpNext != NULL) {
delete mpNext;
JKR_DELETE(mpNext);
}
}
@@ -34,7 +34,7 @@ public:
void addTypeGroupData(u8, dTres_c::data_s const*);
~fmpTresTypeGroupDataList_c() {
if (mpTypeGroupDataHead != NULL) {
delete mpTypeGroupDataHead;
JKR_DELETE(mpTypeGroupDataHead);
}
}
fmpTresTypeGroupDataList_c() {
@@ -106,7 +106,7 @@ public:
~dMenu_Fmap_room_data_c() {
if (mp_fmpTresTypeGroupDataListAll != NULL) {
delete mp_fmpTresTypeGroupDataListAll;
JKR_DELETE(mp_fmpTresTypeGroupDataListAll);
}
}
+33
View File
@@ -209,6 +209,23 @@ struct BE<Mtx44> {
}
};
template <>
struct BE<Mtx> {
BE<f32> contents[3][4];
auto& operator[](int x) const {
return contents[x];
}
void to_host(Mtx& mtx) const {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
mtx[i][j] = contents[i][j];
}
}
}
};
template<typename T>
void be_swap(T& val) {
val = BE<T>::swap(val);
@@ -222,6 +239,13 @@ void be_swap(T (& val)[N]) {
val = BE<T>::swap(val);
}
template<typename T>
void be_swap(T array[], const u32 size) {
for (u32 i = 0; i < size; i++) {
be_swap(array[i]);
}
}
template<>
inline void be_swap(Mtx44& val) {
for (auto & x : val) {
@@ -231,6 +255,15 @@ inline void be_swap(Mtx44& val) {
}
}
template<>
inline void be_swap(Mtx& val) {
for (auto & x : val) {
for (float & y : x) {
be_swap(y);
}
}
}
#define BE(T) BE<T>
#define BE_HOST(T) (T.host())
#else
+13
View File
@@ -0,0 +1,13 @@
#ifndef DUSK_LOGGING_H
#define DUSK_LOGGING_H
#include <aurora/aurora.h>
#include <aurora/lib/logging.hpp>
void aurora_log_callback(AuroraLogLevel level, const char* module, const char* message, unsigned int len);
extern aurora::Module DuskLog;
#define STUB_LOG() DuskLog.debug("{} is a stub", __FUNCTION__)
#endif
+3 -1
View File
@@ -8,6 +8,8 @@
#include "CaptureScreen.h"
#include <cstring>
#include "JSystem/JKernel/JKRHeap.h"
void fapGm_After();
void fapGm_Create();
void fapGm_Execute();
@@ -28,7 +30,7 @@ public:
static void executeCaptureScreen() {}
static void createCaptureScreen() {
mCaptureScreen = new CaptureScreen(JFWDisplay::getManager());
mCaptureScreen = JKR_NEW CaptureScreen(JFWDisplay::getManager());
JUT_ASSERT(46, mCaptureScreen != NULL);
}
+3 -10
View File
@@ -15,16 +15,9 @@
#include "dusk/endian_ssystem.h"
#if !__MWERKS__
// Modern compilers will zero the parent struct in default constructors.
// So instead of adding default constructors to everything,
// we'll just save & restore that data.
#define fopAcM_ct_placement_copy_length offsetof(fopAc_ac_c, actor_last_base_field) - offsetof(fopAc_ac_c, type)
#define fopAcM_ct_placement(ptr, ClassName) \
fopAc_ac_c copy; \
memcpy(&copy.type, &(ptr)->type, fopAcM_ct_placement_copy_length); \
new (ptr) ClassName() ; \
memcpy(&(ptr)->type, &copy.type, fopAcM_ct_placement_copy_length);
// mwerks compiler makes value initialization act like default initialization so we need
// to be explicit about default initialization in modern compilers
#define fopAcM_ct_placement(ptr, ClassName) JKR_NEW_ARGS (ptr) ClassName
#else
#define fopAcM_ct_placement(ptr, ClassName) new (ptr) ClassName()
#endif
+2 -1
View File
@@ -4,6 +4,7 @@
#include "JSystem/JKernel/JKRArchive.h"
#include <os.h>
#include <os.h>
#include "JSystem/JKernel/JKRHeap.h"
#include "f_pc/f_pc_node.h"
#define mDoDvd_MOUNT_DIRECTION_HEAD 0
@@ -23,7 +24,7 @@ public:
virtual ~mDoDvdThd_command_c();
mDoDvdThd_command_c();
inline s32 sync() { return mIsDone; }
inline void destroy() { delete this; }
inline void destroy() { JKR_DELETE(this); }
virtual s32 execute() = 0;
}; // Size = 0x14
+23 -4
View File
@@ -4,6 +4,10 @@
#include "JSystem/JFramework/JFWDisplay.h"
#include "m_Do/m_Do_mtx.h"
#include "global.h"
#include "dusk/logging.h"
#if TARGET_PC
#include <aurora/aurora.h>
#endif
#if WIDESCREEN_SUPPORT
#define FB_WIDTH (640)
@@ -97,8 +101,7 @@ public:
static int startFadeOut(int param_0) { return JFWDisplay::getManager()->startFadeOut(param_0); }
static int startFadeIn(int param_0) {
printf("[DIAG] mDoGph_gInf_c::startFadeIn START\n");
fflush(stdout);
DuskLog.debug("mDoGph_gInf_c::startFadeIn START");
return JFWDisplay::getManager()->startFadeIn(param_0); }
static void setFadeColor(JUtility::TColor& color) { mFader->setColor(color); }
static void setClearColor(JUtility::TColor color) { JFWDisplay::getManager()->setClearColor(color); }
@@ -137,8 +140,20 @@ public:
#endif
}
static f32 getWidth() { return FB_WIDTH; }
static f32 getHeight() { return FB_HEIGHT; }
static f32 getWidth() {
#if TARGET_PC
return JUTVideo::getManager()->getFbWidth();
#else
return FB_WIDTH;
#endif
}
static f32 getHeight() {
#if TARGET_PC
return JUTVideo::getManager()->getEfbHeight();
#else
return FB_HEIGHT;
#endif
}
static f32 getMinYF() {
#if WIDESCREEN_SUPPORT
@@ -266,6 +281,10 @@ public:
static void setWideZoomLightProjection(Mtx& m);
#endif
#if TARGET_PC
static void setWindowSize(AuroraWindowSize const& size);
#endif
static GXTexObj mFrameBufferTexObj;
static GXTexObj mZbufferTexObj;
static bloom_c m_bloom;
@@ -1,9 +1,10 @@
#ifndef J2DANIMATION_H
#define J2DANIMATION_H
#include "JSystem/JMath/JMath.h"
#include "JSystem/J3DGraphAnimator/J3DAnimation.h"
#include "JSystem/JUtility/JUTPalette.h"
#include "JSystem/JKernel/JKRHeap.h"
#include "JSystem/JMath/JMath.h"
class J2DScreen;
struct ResTIMG;
@@ -74,14 +75,14 @@ public:
J3D_PANIC(345, param_2 < mAnmTableNum[param_1], "Error : range over.");
return &mVtxColorIndexData[param_1][param_2];
}
u16* getVtxColorIndexPointer(u8 param_0) const {
BE(u16)* getVtxColorIndexPointer(u8 param_0) const {
J3D_PANIC(351, param_0 < 2, "Error : range over.");
return mVtxColorIndexPointer[param_0];
}
/* 0x10 */ u16 mAnmTableNum[2];
/* 0x14 */ J3DAnmVtxColorIndexData* mVtxColorIndexData[2];
/* 0x1C */ u16* mVtxColorIndexPointer[2];
/* 0x1C */ BE(u16)* mVtxColorIndexPointer[2];
}; // Size: 0x24
struct J3DTransformInfo;
@@ -102,10 +103,10 @@ public:
virtual void getColor(u8, u16, GXColor*) const;
/* 0x24 */ J3DAnmColorKeyTable* mInfoTable[2];
/* 0x2C */ s16* mRValues;
/* 0x30 */ s16* mGValues;
/* 0x34 */ s16* mBValues;
/* 0x38 */ s16* mAValues;
/* 0x2C */ BE(s16)* mRValues;
/* 0x30 */ BE(s16)* mGValues;
/* 0x34 */ BE(s16)* mBValues;
/* 0x38 */ BE(s16)* mAValues;
}; // Size: 0x3C
/**
@@ -157,7 +158,7 @@ public:
*/
class J2DAnmTransform : public J2DAnmBase {
public:
J2DAnmTransform(s16 frameMax, f32* pScaleValues, s16* pRotationValues, f32* pTranslateValues) : J2DAnmBase(frameMax) {
J2DAnmTransform(s16 frameMax, BE(f32)* pScaleValues, BE(s16)* pRotationValues, BE(f32)* pTranslateValues) : J2DAnmBase(frameMax) {
mScaleValues = pScaleValues;
mRotationValues = pRotationValues;
mTranslateValues = pTranslateValues;
@@ -166,9 +167,9 @@ public:
virtual ~J2DAnmTransform() {}
virtual void getTransform(u16, J3DTransformInfo*) const {}
/* 0x10 */ f32* mScaleValues;
/* 0x14 */ s16* mRotationValues;
/* 0x18 */ f32* mTranslateValues;
/* 0x10 */ BE(f32)* mScaleValues;
/* 0x14 */ BE(s16)* mRotationValues;
/* 0x18 */ BE(f32)* mTranslateValues;
}; // Size: 0x1C
/**
@@ -250,25 +251,25 @@ public:
/* 0x1A */ u16 field_0x1a;
/* 0x1C */ u16 field_0x1c;
/* 0x1E */ u16 field_0x1e;
/* 0x20 */ f32* mScaleValues;
/* 0x24 */ s16* mRotationValues;
/* 0x28 */ f32* mTranslationValues;
/* 0x20 */ BE(f32)* mScaleValues;
/* 0x24 */ BE(s16)* mRotationValues;
/* 0x28 */ BE(f32)* mTranslationValues;
/* 0x2C */ u8* mUpdateTexMtxID;
/* 0x30 */ u16* mUpdateMaterialID;
/* 0x30 */ BE(u16)* mUpdateMaterialID;
/* 0x34 */ JUTNameTab field_0x34;
/* 0x44 */ Vec* field_0x44;
/* 0x44 */ BE(Vec)* field_0x44;
/* 0x48 */ u16 field_0x48;
/* 0x4A */ u16 field_0x4a;
/* 0x4C */ u16 field_0x4c;
/* 0x4E */ u16 field_0x4e;
/* 0x50 */ f32* field_0x50;
/* 0x54 */ s16* field_0x54;
/* 0x58 */ f32* field_0x58;
/* 0x50 */ BE(f32)* field_0x50;
/* 0x54 */ BE(s16)* field_0x54;
/* 0x58 */ BE(f32)* field_0x58;
/* 0x5C */ J3DAnmTransformKeyTable* field_0x5c;
/* 0x60 */ u8* field_0x60;
/* 0x64 */ u16* field_0x64;
/* 0x64 */ BE(u16)* field_0x64;
/* 0x68 */ JUTNameTab field_0x68;
/* 0x78 */ Vec* field_0x78;
/* 0x78 */ BE(Vec)* field_0x78;
/* 0x7C */ int field_0x7c;
};
@@ -284,7 +285,7 @@ public:
mPalette = NULL;
}
~J2DAnmTexPatternTIMGPointer() {
delete mPalette;
JKR_DELETE(mPalette);
}
/* 0x0 */ ResTIMG* mRes;
@@ -304,7 +305,7 @@ public:
ResTIMG* getResTIMG(u16) const;
JUTPalette* getPalette(u16) const;
virtual ~J2DAnmTexPattern() { delete[] mTIMGPtrArray; }
virtual ~J2DAnmTexPattern() { JKR_DELETE_ARRAY(mTIMGPtrArray); }
virtual void searchUpdateMaterialID(J2DScreen*);
u16 getUpdateMaterialNum() const { return mUpdateMaterialNum; }
u16 getUpdateMaterialID(u16 i) const {
@@ -313,11 +314,11 @@ public:
}
J3DAnmTexPatternFullTable* getAnmTable() const { return mAnmTable; }
/* 0x10 */ u16* mValues;
/* 0x10 */ BE(u16)* mValues;
/* 0x14 */ J3DAnmTexPatternFullTable* mAnmTable;
/* 0x18 */ u16 field_0x18;
/* 0x1A */ u16 mUpdateMaterialNum;
/* 0x1C */ u16* mUpdateMaterialID;
/* 0x1C */ BE(u16)* mUpdateMaterialID;
/* 0x20 */ JUTNameTab field_0x20;
/* 0x30 */ J2DAnmTexPatternTIMGPointer* mTIMGPtrArray;
};
@@ -368,20 +369,20 @@ public:
/* 0x1E */ u16 field_0x1e;
/* 0x20 */ u16 field_0x20;
/* 0x22 */ u16 field_0x22;
/* 0x24 */ u16* mCRegUpdateMaterialID;
/* 0x24 */ BE(u16)* mCRegUpdateMaterialID;
/* 0x28 */ JUTNameTab mCRegNameTab;
/* 0x38 */ u16* mKRegUpdateMaterialID;
/* 0x38 */ BE(u16)* mKRegUpdateMaterialID;
/* 0x3C */ JUTNameTab mKRegNameTab;
/* 0x4C */ J3DAnmCRegKeyTable* mAnmCRegKeyTable;
/* 0x50 */ J3DAnmKRegKeyTable* mAnmKRegKeyTable;
/* 0x54 */ s16* mCRValues;
/* 0x58 */ s16* mCGValues;
/* 0x5C */ s16* mCBValues;
/* 0x60 */ s16* mCAValues;
/* 0x64 */ s16* mKRValues;
/* 0x68 */ s16* mKGValues;
/* 0x6C */ s16* mKBValues;
/* 0x70 */ s16* mKAValues;
/* 0x54 */ BE(s16)* mCRValues;
/* 0x58 */ BE(s16)* mCGValues;
/* 0x5C */ BE(s16)* mCBValues;
/* 0x60 */ BE(s16)* mCAValues;
/* 0x64 */ BE(s16)* mKRValues;
/* 0x68 */ BE(s16)* mKGValues;
/* 0x6C */ BE(s16)* mKBValues;
/* 0x70 */ BE(s16)* mKAValues;
};
/**
@@ -410,7 +411,7 @@ public:
/* 0x14 */ u16 field_0x14;
/* 0x16 */ u16 field_0x16;
/* 0x18 */ u16 mUpdateMaterialNum;
/* 0x1C */ u16* mUpdateMaterialID;
/* 0x1C */ BE(u16)* mUpdateMaterialID;
/* 0x20 */ JUTNameTab field_0x20;
}; // Size: 0x30
@@ -430,10 +431,10 @@ public:
virtual ~J2DAnmColorKey() {}
virtual void getColor(u16, GXColor*) const;
/* 0x30 */ s16* mRValues;
/* 0x34 */ s16* mGValues;
/* 0x38 */ s16* mBValues;
/* 0x3C */ s16* mAValues;
/* 0x30 */ BE(s16)* mRValues;
/* 0x34 */ BE(s16)* mGValues;
/* 0x38 */ BE(s16)* mBValues;
/* 0x3C */ BE(s16)* mAValues;
/* 0x40 */ J3DAnmColorKeyTable* mInfoTable;
};
@@ -475,14 +476,14 @@ public:
/* 0x40 */ J3DAnmColorFullTable* mInfoTable;
};
inline f32 J2DHermiteInterpolation(f32 f1, const f32* f2, const f32* f3, const f32* f4, const f32* f5, const f32* f6,
const f32* f7) {
inline f32 J2DHermiteInterpolation(f32 f1, const BE(f32)* f2, const BE(f32)* f3, const BE(f32)* f4,
const BE(f32)* f5, const BE(f32)* f6, const BE(f32)* f7) {
return JMAHermiteInterpolation(f1, *f2, *f3, *f4, *f5, *f6, *f7);
}
inline f32 J2DHermiteInterpolation(__REGISTER f32 pp1, __REGISTER s16* pp2, __REGISTER s16* pp3,
__REGISTER s16* pp4, __REGISTER s16* pp5, __REGISTER s16* pp6,
__REGISTER s16* pp7) {
inline f32 J2DHermiteInterpolation(__REGISTER f32 pp1, __REGISTER BE(s16)* pp2, __REGISTER BE(s16)* pp3,
__REGISTER BE(s16)* pp4, __REGISTER BE(s16)* pp5, __REGISTER BE(s16)* pp6,
__REGISTER BE(s16)* pp7) {
#ifdef __MWERKS__
__REGISTER f32 p1 = pp1;
__REGISTER f32 ff8;
@@ -10,8 +10,8 @@ class JSUInputStream;
*
*/
struct J2DResReference {
/* 0x00 */ u16 mCount;
/* 0x02 */ u16 mOffsets[1];
/* 0x00 */ BE(u16) mCount;
/* 0x02 */ BE(u16) mOffsets[1];
char* getResReference(u16) const;
char* getName(u16) const;
@@ -47,7 +47,7 @@ struct J2DScrnBlockPictureParameter {
/* 0x06 */ BE(u16) field_0x6;
/* 0x08 */ BE(u16) field_0x8[4];
/* 0x10 */ JGeometry::TVec2<BE(s16)> field_0x10[4];
/* 0x20 */ u32 mCornerColor[4];
/* 0x20 */ BE(u32) mCornerColor[4];
}; // Size: 0x30
/**
@@ -30,7 +30,7 @@ struct J2DScrnInfoHeader {
/* 0x4 */ BE(u32) mSize;
/* 0x8 */ BE(u16) mWidth;
/* 0xA */ BE(u16) mHeight;
/* 0xC */ u32 mColor;
/* 0xC */ BE(u32) mColor;
};
/**
@@ -47,8 +47,8 @@ struct J2DTextBoxInfo {
/* 0x14 */ BE(u32) mGradColor;
/* 0x18 */ u8 mConnected;
/* 0x19 */ char field_0x19[3];
/* 0x1C */ u16 field_0x1c;
/* 0x1E */ u16 field_0x1e;
/* 0x1C */ BE(u16) field_0x1c;
/* 0x1E */ BE(u16) field_0x1e;
}; // Size: 0x20
/**
@@ -611,7 +611,7 @@ public:
}
bool isValidUpdateMaterialID(u16 idx) const { return mUpdateMaterialID[idx] != 0xffff; }
u32 getTexMtxCalcType() { return mTexMtxCalcType; }
Vec* getSRTCenter(u16 idx) {
BE(Vec)* getSRTCenter(u16 idx) {
J3D_ASSERT_RANGE(1047, idx < mTrackNum / 3);
return &mSRTCenter[idx];
}
@@ -622,13 +622,13 @@ public:
/* 0x16 */ u16 mScaleNum;
/* 0x18 */ u16 mRotNum;
/* 0x1A */ u16 mTransNum;
/* 0x1C */ f32* mScaleData;
/* 0x20 */ s16* mRotData;
/* 0x24 */ f32* mTransData;
/* 0x1C */ BE(f32)* mScaleData;
/* 0x20 */ BE(s16)* mRotData;
/* 0x24 */ BE(f32)* mTransData;
/* 0x28 */ u8* mUpdateTexMtxID;
/* 0x2C */ u16* mUpdateMaterialID;
/* 0x2C */ BE(u16)* mUpdateMaterialID;
/* 0x30 */ JUTNameTab mUpdateMaterialName;
/* 0x40 */ Vec* mSRTCenter;
/* 0x40 */ BE(Vec)* mSRTCenter;
/* 0x44 */ u16 field_0x44;
/* 0x46 */ u16 field_0x46;
/* 0x48 */ u16 field_0x48;
@@ -638,9 +638,9 @@ public:
/* 0x54 */ void* field_0x54;
/* 0x58 */ void* field_0x58;
/* 0x5C */ u8* mPostUpdateTexMtxID;
/* 0x60 */ u16* mPostUpdateMaterialID;
/* 0x60 */ BE(u16)* mPostUpdateMaterialID;
/* 0x64 */ JUTNameTab mPostUpdateMaterialName;
/* 0x74 */ Vec* mPostSRTCenter;
/* 0x74 */ BE(Vec)* mPostSRTCenter;
/* 0x78 */ u32 mTexMtxCalcType;
}; // Size: 0x7C
@@ -787,7 +787,7 @@ public:
/* 0x10 */ u16 field_0x10;
/* 0x12 */ u16 field_0x12;
/* 0x14 */ u16 mUpdateMaterialNum;
/* 0x18 */ u16* mUpdateMaterialID;
/* 0x18 */ BE(u16)* mUpdateMaterialID;
/* 0x1C */ JUTNameTab mUpdateMaterialName;
}; // Size: 0x2C
@@ -822,10 +822,10 @@ public:
virtual s32 getKind() const { return 11; }
virtual void getColor(u16, GXColor*) const;
/* 0x2C */ s16* mColorR;
/* 0x30 */ s16* mColorG;
/* 0x34 */ s16* mColorB;
/* 0x38 */ s16* mColorA;
/* 0x2C */ BE(s16)* mColorR;
/* 0x30 */ BE(s16)* mColorG;
/* 0x34 */ BE(s16)* mColorB;
/* 0x38 */ BE(s16)* mColorA;
/* 0x3C */ J3DAnmColorKeyTable* mAnmTable;
};
@@ -872,20 +872,20 @@ public:
/* 0x1A */ u16 mKRegDataCountG;
/* 0x1C */ u16 mKRegDataCountB;
/* 0x1E */ u16 mKRegDataCountA;
/* 0x20 */ u16* mCRegUpdateMaterialID;
/* 0x20 */ BE(u16)* mCRegUpdateMaterialID;
/* 0x24 */ JUTNameTab mCRegUpdateMaterialName;
/* 0x34 */ u16* mKRegUpdateMaterialID;
/* 0x34 */ BE(u16)* mKRegUpdateMaterialID;
/* 0x38 */ JUTNameTab mKRegUpdateMaterialName;
/* 0x48 */ J3DAnmCRegKeyTable* mAnmCRegKeyTable;
/* 0x4C */ J3DAnmKRegKeyTable* mAnmKRegKeyTable;
/* 0x50 */ s16* mAnmCRegDataR;
/* 0x54 */ s16* mAnmCRegDataG;
/* 0x58 */ s16* mAnmCRegDataB;
/* 0x5C */ s16* mAnmCRegDataA;
/* 0x60 */ s16* mAnmKRegDataR;
/* 0x64 */ s16* mAnmKRegDataG;
/* 0x68 */ s16* mAnmKRegDataB;
/* 0x6C */ s16* mAnmKRegDataA;
/* 0x50 */ BE(s16)* mAnmCRegDataR;
/* 0x54 */ BE(s16)* mAnmCRegDataG;
/* 0x58 */ BE(s16)* mAnmCRegDataB;
/* 0x5C */ BE(s16)* mAnmCRegDataA;
/* 0x60 */ BE(s16)* mAnmKRegDataR;
/* 0x64 */ BE(s16)* mAnmKRegDataG;
/* 0x68 */ BE(s16)* mAnmKRegDataB;
/* 0x6C */ BE(s16)* mAnmKRegDataA;
}; // Size: 0x70
/**
@@ -910,11 +910,11 @@ public:
bool isValidUpdateMaterialID(u16 id) const { return mUpdateMaterialID[id] != 0xFFFF; }
J3DAnmTexPatternFullTable* getAnmTable() { return mAnmTable; }
/* 0x0C */ u16* mTextureIndex;
/* 0x0C */ BE(u16)* mTextureIndex;
/* 0x10 */ J3DAnmTexPatternFullTable* mAnmTable;
/* 0x14 */ u16 field_0x14;
/* 0x16 */ u16 mUpdateMaterialNum;
/* 0x18 */ u16* mUpdateMaterialID;
/* 0x18 */ BE(u16)* mUpdateMaterialID;
/* 0x1C */ JUTNameTab mUpdateMaterialName;
}; // Size: 0x2C
@@ -32,7 +32,7 @@ struct J3DDrawMtxData {
/* 0x0 */ u16 mEntryNum;
/* 0x2 */ u16 mDrawFullWgtMtxNum;
/* 0x4 */ u8* mDrawMtxFlag;
/* 0x8 */ u16* mDrawMtxIndex;
/* 0x8 */ BE(u16)* mDrawMtxIndex;
}; // Size: 0xC
class J3DShapeTable;
@@ -55,10 +55,10 @@ public:
void setHierarchy(J3DModelHierarchy* hierarchy) { mHierarchy = hierarchy; }
void setBasicMtxCalc(J3DMtxCalc* calc) { mBasicMtxCalc = calc; }
u16 getWEvlpMtxNum() const { return mWEvlpMtxNum; }
u16* getWEvlpMixIndex() const { return mWEvlpMixMtxIndex; }
BE(u16)* getWEvlpMixIndex() const { return mWEvlpMixMtxIndex; }
u8 getWEvlpMixMtxNum(u16 idx) const { return mWEvlpMixMtxNum[idx]; }
u16 * getWEvlpMixMtxIndex() const { return mWEvlpMixMtxIndex; }
f32 * getWEvlpMixWeight() const { return mWEvlpMixWeight; }
BE(u16) * getWEvlpMixMtxIndex() const { return mWEvlpMixMtxIndex; }
BE(f32) * getWEvlpMixWeight() const { return mWEvlpMixWeight; }
u16 * getWEvlpImportantMtxIndex() const { return mWEvlpImportantMtxIdx; }
u16 getDrawFullWgtMtxNum() const { return mDrawMtxData.mDrawFullWgtMtxNum; }
u16 getJointNum() const { return mJointNum; }
@@ -73,7 +73,7 @@ public:
return mJointNodePointer[idx];
}
J3DMtxCalc* getBasicMtxCalc() { return mBasicMtxCalc; }
Mtx& getInvJointMtx(int idx) { return mInvJointMtx[idx]; }
BE(Mtx)& getInvJointMtx(int idx) { return mInvJointMtx[idx]; }
u32 getModelDataType() const { return mModelDataType; }
void setModelDataType(u32 type) { mModelDataType = type; }
bool checkFlag(u32 flag) const { return mFlags & flag ? true : false; }
@@ -91,9 +91,9 @@ private:
/* 0x1C */ u16 mJointNum;
/* 0x1E */ u16 mWEvlpMtxNum;
/* 0x20 */ u8* mWEvlpMixMtxNum;
/* 0x24 */ u16* mWEvlpMixMtxIndex;
/* 0x28 */ f32* mWEvlpMixWeight;
/* 0x2C */ Mtx* mInvJointMtx;
/* 0x24 */ BE(u16)* mWEvlpMixMtxIndex;
/* 0x28 */ BE(f32)* mWEvlpMixWeight;
/* 0x2C */ BE(Mtx)* mInvJointMtx;
/* 0x30 */ u16* mWEvlpImportantMtxIdx;
/* 0x34 */ J3DDrawMtxData mDrawMtxData;
/* 0x40 */ u32 field_0x40;
@@ -38,6 +38,9 @@ public:
}
u32 getVtxNum() const { return mVertexData.getVtxNum(); }
u32 getNrmNum() const { return mVertexData.getNrmNum(); }
#if TARGET_PC
u32 getColNum() const { return mVertexData.getColNum(); }
#endif
u8 getDrawMtxFlag(u16 idx) const { return mJointTree.getDrawMtxFlag(idx); }
u16 getDrawMtxIndex(u16 idx) const { return mJointTree.getDrawMtxIndex(idx); }
J3DDrawMtxData* getDrawMtxData() { return mJointTree.getDrawMtxData(); }
@@ -49,12 +52,12 @@ public:
void setHierarchy(J3DModelHierarchy* hierarchy) { mJointTree.setHierarchy(hierarchy); }
void setBasicMtxCalc(J3DMtxCalc* calc) { mJointTree.setBasicMtxCalc(calc); }
JUTNameTab* getJointName() const { return mJointTree.getJointName(); }
Mtx& getInvJointMtx(int idx) { return mJointTree.getInvJointMtx(idx); }
BE(Mtx)& getInvJointMtx(int idx) { return mJointTree.getInvJointMtx(idx); }
J3DTexture* getTexture() const { return mMaterialTable.getTexture(); }
JUTNameTab* getTextureName() const { return mMaterialTable.getTextureName(); }
u16 getWEvlpMtxNum() const { return mJointTree.getWEvlpMtxNum(); }
u16* getWEvlpMixMtxIndex() const { return mJointTree.getWEvlpMixMtxIndex(); }
f32* getWEvlpMixWeight() const { return mJointTree.getWEvlpMixWeight(); }
BE(u16)* getWEvlpMixMtxIndex() const { return mJointTree.getWEvlpMixMtxIndex(); }
BE(f32)* getWEvlpMixWeight() const { return mJointTree.getWEvlpMixWeight(); }
u8 getWEvlpMixMtxNum(u16 idx) const { return mJointTree.getWEvlpMixMtxNum(idx); }
u16* getWEvlpImportantMtxIndex() const { return mJointTree.getWEvlpImportantMtxIndex(); }
u32 getModelDataType() const { return mJointTree.getModelDataType(); }
@@ -59,8 +59,8 @@ public:
virtual void deform(J3DVertexBuffer*, J3DMtxBuffer*);
virtual ~J3DSkinDeform();
static u16* sWorkArea_WEvlpMixMtx[1024];
static f32* sWorkArea_WEvlpMixWeight[1024];
static BE(u16)* sWorkArea_WEvlpMixMtx[1024];
static BE(f32)* sWorkArea_WEvlpMixWeight[1024];
static u16 sWorkArea_MtxReg[1024];
private:
@@ -587,6 +587,9 @@ public:
virtual void patchTexNoAndTexCoordScale() {}
virtual void ptrToIndex() = 0;
virtual void indexToPtr() = 0;
#if TARGET_PC
virtual void loadTexture() = 0;
#endif
virtual u32 getType() = 0;
virtual s32 countDLSize() { return 0; }
virtual void setTexNo(u32, u16 const*) {}
@@ -644,6 +647,7 @@ public:
virtual void reset(J3DTevBlock*) {}
virtual void ptrToIndex() {}
virtual void indexToPtr() { indexToPtr_private(mTexNoOffset); }
virtual void loadTexture() {}
virtual u32 getType() { return 'TVNL'; }
virtual ~J3DTevBlockNull() {}
};
@@ -671,6 +675,9 @@ public:
virtual void patchTevReg();
virtual void patchTexNoAndTexCoordScale();
virtual void ptrToIndex();
#if TARGET_PC
virtual void loadTexture();
#endif
virtual void indexToPtr() { indexToPtr_private(mTexNoOffset); }
virtual u32 getType() { return 'TVPT'; }
virtual void setTevStageNum(u8 const* num) {
@@ -814,6 +821,9 @@ public:
virtual void patchTexNoAndTexCoordScale();
virtual void ptrToIndex() {}
virtual void indexToPtr() { indexToPtr_private(mTexNoOffset); }
#if TARGET_PC
virtual void loadTexture();
#endif
virtual u32 getType() { return 'TVB1'; }
virtual s32 countDLSize();
virtual void setTexNo(u32 idx, u16 const* no) {
@@ -904,6 +914,9 @@ public:
virtual void patchTexNoAndTexCoordScale();
virtual void ptrToIndex() {}
virtual void indexToPtr() { indexToPtr_private(mTexNoOffset); }
#if TARGET_PC
virtual void loadTexture();
#endif
virtual u32 getType() { return 'TVB2'; }
virtual s32 countDLSize();
virtual void setTexNo(u32 idx, u16 const* texNo) {
@@ -1080,6 +1093,9 @@ public:
virtual void patchTexNoAndTexCoordScale();
virtual void ptrToIndex() {}
virtual void indexToPtr() { indexToPtr_private(mTexNoOffset); }
#if TARGET_PC
virtual void loadTexture();
#endif
virtual u32 getType() { return 'TVB4'; }
virtual s32 countDLSize();
virtual void setTexNo(u32 idx, u16 const* texNo) {
@@ -1256,6 +1272,9 @@ public:
virtual void patchTexNoAndTexCoordScale();
virtual void ptrToIndex();
virtual void indexToPtr() { indexToPtr_private(mTexNoOffset); }
#if TARGET_PC
virtual void loadTexture();
#endif
virtual u32 getType() { return 'TV16'; }
virtual s32 countDLSize();
virtual void setTexNo(u32 idx, u16 const* texNo) {
@@ -56,7 +56,11 @@ public:
J3DIndBlock* getIndBlock() { return mIndBlock; }
J3DJoint* getJoint() { return mJoint; }
J3DMaterialAnm* getMaterialAnm() {
#if TARGET_PC
return mMaterialAnm;
#else
return (uintptr_t)mMaterialAnm < 0xC0000000 ? mMaterialAnm : NULL;
#endif
}
u32 getMaterialMode() { return mMaterialMode; }
J3DNBTScale* getNBTScale() { return mTexGenBlock->getNBTScale(); }
@@ -15,8 +15,8 @@ class J3DShapeMtx;
*/
class J3DCurrentMtxInfo {
public:
u32 mMtxIdxRegA;
u32 mMtxIdxRegB;
BE(u32) mMtxIdxRegA;
BE(u32) mMtxIdxRegB;
};
/**
@@ -122,7 +122,11 @@ public:
initialize();
}
#if TARGET_PC
static const int kVcdVatDLSize = 0x180;
#else
static const int kVcdVatDLSize = 0xC0;
#endif
void initialize();
void addTexMtxIndexInDL(GXAttr, u32);
@@ -65,6 +65,11 @@ struct J3DSys {
/* 0x10C */ void* mVtxPos;
/* 0x110 */ void* mVtxNrm;
/* 0x114 */ GXColor* mVtxCol;
#if TARGET_PC
int mVtxPosNum = 0;
int mVtxNrmNum = 0;
int mVtxColNum = 0;
#endif
/* 0x118 */ BE(Vec)* mNBTScale;
J3DSys();
@@ -151,21 +156,34 @@ struct J3DSys {
void setModelNrmMtx(Mtx33* pMtxArr) {
J3D_ASSERT_NULLPTR(241, pMtxArr);
mModelNrmMtx = pMtxArr;
GXSETARRAY(GX_POS_MTX_ARRAY, mModelNrmMtx, sizeof(*mModelNrmMtx), sizeof(*mModelNrmMtx));
GXSETARRAY(GX_NRM_MTX_ARRAY, mModelNrmMtx, sizeof(*mModelNrmMtx), sizeof(*mModelNrmMtx));
}
void* getVtxPos() { return mVtxPos; }
void setVtxPos(void* pVtxPos) {
void setVtxPos(void* pVtxPos, int num) {
J3D_ASSERT_NULLPTR(252, pVtxPos != NULL);
mVtxPos = pVtxPos;
#if TARGET_PC
mVtxPosNum = num;
#endif
}
void* getVtxNrm() { return mVtxNrm; }
void setVtxNrm(void* pVtxNrm) { mVtxNrm = pVtxNrm; }
void setVtxNrm(void* pVtxNrm, int num) {
mVtxNrm = pVtxNrm;
#if TARGET_PC
mVtxNrmNum = num;
#endif
}
void* getVtxCol() { return mVtxCol; }
void setVtxCol(GXColor* pVtxCol) { mVtxCol = pVtxCol; }
void setVtxCol(GXColor* pVtxCol, int num) {
mVtxCol = pVtxCol;
#if TARGET_PC
mVtxColNum = num;
#endif
}
Mtx& getModelDrawMtx(u16 no) { return mModelDrawMtx[no]; }
J3DShapePacket* getShapePacket() { return mShapePacket; }
@@ -112,8 +112,8 @@ struct J3DTevStage {
void setTexSel(u8 tex_sel) { mTevSwapModeInfo = (mTevSwapModeInfo & ~0xc) | (tex_sel << 2); }
void load(u32 param_1) const {
J3DGDWriteBPCmd(*(u32*)&field_0x0);
J3DGDWriteBPCmd(*(u32*)&field_0x4);
J3DGDWriteBPCmd(*(BE(u32)*)&field_0x0);
J3DGDWriteBPCmd(*(BE(u32)*)&field_0x4);
}
J3DTevStage& operator=(const J3DTevStage& other) {
@@ -17,15 +17,45 @@ private:
/* 0x2 */ u16 unk_0x2;
/* 0x4 */ ResTIMG* mpRes;
#if TARGET_PC
GXTlutObj* mpTlutObj;
GXTexObj* mpTexObj;
u8** mpImgDataPtr;
u8** mpTlutDataPtr;
#endif
public:
J3DTexture(u16 num, ResTIMG* res) : mNum(num), unk_0x2(0), mpRes(res) {
J3D_ASSERT_NULLPTR(52, res != NULL || num == 0);
#if TARGET_PC
mpTexObj = new GXTexObj[num];
mpTlutObj = new GXTlutObj[num];
mpImgDataPtr = new u8*[num];
mpTlutDataPtr = new u8*[num];
for (u16 i = 0; i < num; i++) {
mpImgDataPtr[i] = (u8*)(&mpRes[i]) + mpRes[i].imageOffset;
mpTlutDataPtr[i] = (u8*)(&mpRes[i]) + mpRes[i].paletteOffset;
loadGXTexObj(i);
}
#endif
}
void loadGX(u16, GXTexMapID) const;
#if TARGET_PC
void loadGXTexObj(u16);
#endif
void entryNum(u16);
void addResTIMG(u16, ResTIMG const*);
virtual ~J3DTexture() {}
virtual ~J3DTexture(){
#if TARGET_PC
for (int i = 0; i < mNum; i++)
GXDestroyTexObj(&mpTexObj[i]);
delete[] mpTexObj;
delete[] mpTlutObj;
delete[] mpImgDataPtr;
delete[] mpTlutDataPtr;
#endif
}
u16 getNum() const { return mNum; }
@@ -34,11 +64,24 @@ public:
return &mpRes[index];
}
#if TARGET_PC
u8* getImgDataPtr(u16 index) const {
return mpImgDataPtr[index];
}
#endif
void setResTIMG(u16 index, const ResTIMG& timg) {
J3D_ASSERT_RANGE(81, index < mNum);
mpRes[index] = timg;
#if TARGET_PC
mpImgDataPtr[index] = ((u8*)&timg) + timg.imageOffset;
mpTlutDataPtr[index] = ((u8*)&timg) + timg.paletteOffset;
loadGXTexObj(index);
#else
mpRes[index].imageOffset = ((mpRes[index].imageOffset + (uintptr_t)&timg - (uintptr_t)(mpRes + index)));
mpRes[index].paletteOffset = ((mpRes[index].paletteOffset + (uintptr_t)&timg - (uintptr_t)(mpRes + index)));
#endif
}
};
@@ -52,6 +52,22 @@ public:
void setVtxNrmFrac(u8 frac) { mVtxNrmFrac = frac; }
void setVtxNrmType(GXCompType type) { mVtxNrmType = type; }
#if TARGET_PC
u32 getVtxArrNum(GXAttr attr) const {
JUT_ASSERT(1234, attr >= GX_VA_POS && attr <= GX_VA_TEX7);
return mVtxArrNum[attr - GX_VA_POS];
}
u32 getVtxArrStride(GXAttr attr) const {
JUT_ASSERT(1234, attr >= GX_VA_POS && attr <= GX_VA_TEX7);
return mVtxArrStride[attr - GX_VA_POS];
}
u32 getVtxArrByteSize(GXAttr attr) const {
return getVtxArrNum(attr) * getVtxArrStride(attr);
}
#endif
private:
friend class J3DModelLoader;
@@ -70,6 +86,12 @@ private:
/* 0x50 */ GXCompType mVtxPosType;
/* 0x54 */ u8 mVtxNrmFrac;
/* 0x58 */ GXCompType mVtxNrmType;
#if TARGET_PC
bool mHasReadInformation = false;
u32 mVtxArrStride[12]{};
u32 mVtxArrNum[12]{};
#endif
};
/**
@@ -67,12 +67,12 @@ struct J3DIndInitData {
*
*/
struct J3DPatchingInfo {
/* 0x0 */ u16 mMatColorOffset;
/* 0x2 */ u16 mColorChanOffset;
/* 0x4 */ u16 mTexMtxOffset;
/* 0x6 */ u16 mTexNoOffset;
/* 0x8 */ u16 mTevRegOffset;
/* 0xA */ u16 mFogOffset;
/* 0x0 */ BE(u16) mMatColorOffset;
/* 0x2 */ BE(u16) mColorChanOffset;
/* 0x4 */ BE(u16) mTexMtxOffset;
/* 0x6 */ BE(u16) mTexNoOffset;
/* 0x8 */ BE(u16) mTevRegOffset;
/* 0xA */ BE(u16) mFogOffset;
/* 0xC */ u8 field_0xc[4];
}; // size 0x10
@@ -81,8 +81,8 @@ struct J3DPatchingInfo {
*
*/
struct J3DDisplayListInit {
/* 0x0 */ u32 mOffset;
/* 0x4 */ u32 field_0x4;
/* 0x0 */ BE(u32) mOffset;
/* 0x4 */ BE(u32) field_0x4;
}; // size 8
struct J3DTexCoord2Info;
@@ -22,26 +22,26 @@ struct J3DMaterialInitData_v21 {
/* 0x005 */ u8 mZCompLocIdx;
/* 0x006 */ u8 mZModeIdx;
/* 0x007 */ u8 mDitherIdx;
/* 0x008 */ u16 mMatColorIdx[2];
/* 0x00C */ u16 mColorChanIdx[4];
/* 0x014 */ u16 mTexCoordIdx[8];
/* 0x008 */ BE(u16) mMatColorIdx[2];
/* 0x00C */ BE(u16) mColorChanIdx[4];
/* 0x014 */ BE(u16) mTexCoordIdx[8];
/* 0x024 */ u8 field_0x038[0x10];
/* 0x034 */ u16 mTexMtxIdx[8];
/* 0x034 */ BE(u16) mTexMtxIdx[8];
/* 0x044 */ u8 field_0x058[0x2c];
/* 0x070 */ u16 mTexNoIdx[8];
/* 0x080 */ u16 mTevKColorIdx[4];
/* 0x070 */ BE(u16) mTexNoIdx[8];
/* 0x080 */ BE(u16) mTevKColorIdx[4];
/* 0x088 */ u8 mTevKColorSel[0x10];
/* 0x098 */ u8 mTevKAlphaSel[0x10];
/* 0x0A8 */ u16 mTevOrderIdx[0x10];
/* 0x0C8 */ u16 mTevColorIdx[4];
/* 0x0D0 */ u16 mTevStageIdx[0x10];
/* 0x0F0 */ u16 mTevSwapModeIdx[0x10];
/* 0x110 */ u16 mTevSwapModeTableIdx[4];
/* 0x0A8 */ BE(u16) mTevOrderIdx[0x10];
/* 0x0C8 */ BE(u16) mTevColorIdx[4];
/* 0x0D0 */ BE(u16) mTevStageIdx[0x10];
/* 0x0F0 */ BE(u16) mTevSwapModeIdx[0x10];
/* 0x110 */ BE(u16) mTevSwapModeTableIdx[4];
/* 0x118 */ u8 field_0x12c[0x18];
/* 0x130 */ u16 mFogIdx;
/* 0x132 */ u16 mAlphaCompIdx;
/* 0x134 */ u16 mBlendIdx;
/* 0x136 */ u16 mNBTScaleIdx;
/* 0x130 */ BE(u16) mFogIdx;
/* 0x132 */ BE(u16) mAlphaCompIdx;
/* 0x134 */ BE(u16) mBlendIdx;
/* 0x136 */ BE(u16) mNBTScaleIdx;
}; // size 0x138
/**
@@ -309,6 +309,11 @@ public:
/* 0x18 */ u8 field_0x18;
/* 0x19 */ u8 field_0x19;
/* 0x1A */ u16 mEnvelopeSize;
#if TARGET_PC
private:
static void readVertexData(const J3DVertexBlock& block, J3DVertexData& data);
#endif
};
/**
@@ -1,6 +1,7 @@
#ifndef JAHPUBDEFINE_H
#define JAHPUBDEFINE_H
#include "JSystem/JKernel/JKRHeap.h"
#include "JSystem/JUtility/JUTAssert.h"
template<class T>
@@ -12,7 +13,7 @@ public:
static T* newInstance() {
JUT_ASSERT(82, sInstance==NULL);
if (!sInstance) {
sInstance = new T();
sInstance = JKR_NEW T();
}
JUT_ASSERT(85, sInstance!=NULL);
return sInstance;
@@ -209,12 +209,12 @@ public:
return true;
}
MemoryChunk* pMVar4 = field_0x18;
field_0x18 = new (JASKernel::getSystemHeap(), 0) MemoryChunk(pMVar4);
field_0x18 = JKR_NEW_ARGS (JASKernel::getSystemHeap(), 0) MemoryChunk(pMVar4);
if (field_0x18 != NULL) {
return true;
}
JUT_WARN(428, "%s", "Not enough JASSystemHeap");
field_0x18 = new (JKRHeap::getSystemHeap(), 0) MemoryChunk(pMVar4);
field_0x18 = JKR_NEW_ARGS (JKRHeap::getSystemHeap(), 0) MemoryChunk(pMVar4);
if (field_0x18 != NULL) {
return true;
}
@@ -246,7 +246,7 @@ public:
bool r26 = false;
if (chunk != field_0x18 && chunk->isEmpty()) {
MemoryChunk* nextChunk = chunk->getNextChunk();
delete chunk;
JKR_DELETE(chunk);
prevChunk->setNextChunk(nextChunk);
}
return;
@@ -283,6 +283,12 @@ namespace JASKernel {
template <typename T>
class JASPoolAllocObject {
public:
#if TARGET_PC
static void* operator new(size_t n, JKRHeapToken) {
return operator new(n);
}
#endif
static void* operator new(size_t n) {
#if PLATFORM_GCN
JASMemPool<T>& memPool_ = getMemPool_();
@@ -292,6 +298,13 @@ public:
static void* operator new(size_t n, void* ptr) {
return ptr;
}
#if TARGET_PC
static void operator delete(void* ptr, size_t n, JKRHeapToken) {
operator delete(ptr, n);
}
#endif
static void operator delete(void* ptr, size_t n) {
#if PLATFORM_GCN
JASMemPool<T>& memPool_ = getMemPool_();
@@ -362,6 +375,12 @@ public:
template <typename T>
class JASPoolAllocObject_MultiThreaded {
public:
#if TARGET_PC
static void* operator new(size_t n, JKRHeapToken) {
return operator new(n);
}
#endif
static void* operator new(size_t n) {
#if PLATFORM_GCN
JASMemPool_MultiThreaded<T>& memPool_ = getMemPool();
@@ -371,6 +390,13 @@ public:
static void* operator new(size_t n, void* ptr) {
return ptr;
}
#if TARGET_PC
static void operator delete(void* ptr, size_t n, JKRHeapToken) {
return operator delete(ptr, n);
}
#endif
static void operator delete(void* ptr, size_t n) {
#if PLATFORM_GCN
JASMemPool_MultiThreaded<T>& memPool_ = getMemPool();
@@ -1,6 +1,8 @@
#ifndef POINTER_H
#define POINTER_H
#include "JSystem/JKernel/JKRHeap.h"
namespace JGadget {
template<class T>
@@ -18,12 +20,12 @@ public:
#ifdef __MWERKS__
TPointer_delete(T* ptr) : TPointer(ptr) {}
~TPointer_delete() {
delete mPtr;
JKR_DELETE(mPtr);
}
#else
TPointer_delete(T* ptr) : TPointer<T>(ptr) {}
~TPointer_delete() {
delete this->mPtr;
JKR_DELETE(this->mPtr);
}
#endif
};
@@ -2,6 +2,7 @@
#define STD_MEMORY_H
#include "JSystem/JUtility/JUTAssert.h"
#include "JSystem/JKernel/JKRHeap.h"
namespace JGadget {
template <typename T>
@@ -19,12 +20,12 @@ struct TAllocator {
}
void DeallocateRaw(void* mem) {
delete mem;
JKR_DELETE(mem);
}
void construct(T* p, const T& other) {
JUT_ASSERT(67, p!=NULL);
new(p) T(other);
JKR_NEW_ARGS(p) T(other);
}
void destroy(T* p) {
@@ -4,7 +4,9 @@
#include "JSystem/JHostIO/JHIComm.h"
#include <os.h>
template<typename T, int I>
#include "JSystem/JKernel/JKRHeap.h"
template <typename T, int I>
class JHIpvector {
public:
JHIpvector() { m_size = 0; }
@@ -89,7 +91,7 @@ public:
static JHIComPortManager<T>* create() {
if (instance == NULL) {
instance = new JHIComPortManager<T>();
instance = JKR_NEW JHIComPortManager<T>();
}
return instance;
@@ -5,9 +5,11 @@
#include "JSystem/JKernel/JKRDisposer.h"
#include <os.h>
#include "JKRHeap.h"
/**
* @ingroup jsystem-jkernel
*
*
*/
class JKRAramHeap : public JKRDisposer {
public:
@@ -30,7 +32,7 @@ public:
u32 getUsedSize(u8);
void dump();
void free(JKRAramBlock *block) {
delete block;
JKR_DELETE(block);
}
u8 getCurrentGroupID() const { return mGroupId; }
+54 -12
View File
@@ -224,21 +224,63 @@ public:
#endif
};
#ifndef TARGET_PC
void* operator new(size_t size);
#endif
void* operator new(size_t size, int alignment);
void* operator new(size_t size, JKRHeap* heap, int alignment);
#if TARGET_PC
enum class JKRHeapToken {
Dummy
};
#ifndef TARGET_PC
void* operator new[](size_t size);
#endif
void* operator new[](size_t size, int alignment);
void* operator new[](size_t size, JKRHeap* heap, int alignment);
inline void* operator new(size_t, JKRHeapToken, void* where) {
return where;
}
#ifndef TARGET_PC
void operator delete(void* ptr);
inline void* operator new[](size_t, JKRHeapToken, void* where) {
return where;
}
#define JKR_NEW new (JKRHeapToken::Dummy)
#define JKR_NEW_ARGS(...) new (JKRHeapToken::Dummy, __VA_ARGS__ )
#define JKR_DELETE(expr) jkrDelete(expr)
#define JKR_DELETE_ARRAY(expr) delete[] (expr)
#define JKR_HEAP_TOKEN , JKRHeapToken::Dummy
#define JKR_HEAP_TOKEN_PARAM , JKRHeapToken
#else
#define JKR_NEW new
#define JKR_NEW_ARGS(...) new (__VA_ARGS__ )
#define JKR_DELETE(expr) delete (expr)
#define JKR_DELETE_ARRAY(expr) delete[] (expr)
#define JKR_HEAP_TOKEN
#define JKR_HEAP_TOKEN_PARAM
#endif
void* operator new(size_t size JKR_HEAP_TOKEN_PARAM);
void* operator new(size_t size JKR_HEAP_TOKEN_PARAM, int alignment);
void* operator new(size_t size JKR_HEAP_TOKEN_PARAM, JKRHeap* heap, int alignment);
void* operator new[](size_t size JKR_HEAP_TOKEN_PARAM);
void* operator new[](size_t size JKR_HEAP_TOKEN_PARAM, int alignment);
void* operator new[](size_t size JKR_HEAP_TOKEN_PARAM, JKRHeap* heap, int alignment);
void operator delete(void* ptr JKR_HEAP_TOKEN_PARAM);
void operator delete[](void* ptr);
#if TARGET_PC
template<typename T>
void jkrDelete(T* ptr) {
if (ptr == nullptr) {
return;
}
ptr->~T();
operator delete(ptr, JKRHeapToken::Dummy);
}
template<>
inline void jkrDelete(void* ptr) {
if (ptr == nullptr) {
return;
}
operator delete(ptr, JKRHeapToken::Dummy);
}
#endif
void JKRDefaultMemoryErrorRoutine(void* heap, u32 size, int alignment);
+9 -8
View File
@@ -105,14 +105,15 @@ inline f32 JMAHermiteInterpolation(__REGISTER f32 p1, __REGISTER f32 p2, __REGIS
// clang-format on
return ff25;
#else
f32 t = (p1 - p2) / (p5 - p2);
f32 t2 = t * t;
f32 t3 = t2 * t;
f32 h1 = 2.0f * t3 - 3.0f * t2 + 1.0f;
f32 h2 = -2.0f * t3 + 3.0f * t2;
f32 h3 = t3 - 2.0f * t2 + t;
f32 h4 = t3 - t2;
return h1 * p4 + h2 * p7 + h3 * (p3 - p4) + h4 * (p6 - p3);
f32 a = p1 - p2;
f32 b = a * (1.0 / (p5 - p2));
f32 c = b - 1.0;
f32 d = (3.0 + -2.0 * b) * (b * b);
f32 cab = (c * a * b);
f32 coeffx3 = cab * p7;
f32 cca = (c * c * a);
f32 coeffc2 = cca * p4;
return ((1.0 - d) * p3 + (d * p6)) + coeffc2 + coeffx3;
#endif
}
+10 -10
View File
@@ -18,8 +18,8 @@ struct data {
char* get() const { return (char*)getRaw(); }
u32* get_signature() const { return (u32*)(get() + 0x0); }
u32 get_type() const { return *(u32*)(get() + 0x4); }
u32 get_blockNumber() const { return *(u32*)(get() + 0xC); }
u32 get_type() const { return *(BE(u32)*)(get() + 0x4); }
u32 get_blockNumber() const { return *(BE(u32)*)(get() + 0xC); }
u32 get_encoding() const { return *(u8*)(get() + 0x10); }
};
@@ -28,9 +28,9 @@ struct data {
TParse_TBlock(const void* pData) : TParseData_aligned(pData) {}
const char* get() const { return (char*)getRaw(); }
u32 get_size() const { return *(u32*)(get() + 0x4); }
u32 get_size() const { return *(BE(u32)*)(get() + 0x4); }
const void* getNext() const { return (char*)getRaw() + get_size(); }
u32 get_type() const { return *(u32*)(get() + 0x0); }
u32 get_type() const { return *(BE(u32)*)(get() + 0x0); }
};
// TParse_TBlock_info handles parsing INF1 section data
@@ -41,11 +41,11 @@ struct data {
char* getContent() const { return (char*)getRaw() + 0x10; }
u32 get_messageEntrySize() const { return *(u16*)(get() + 0xA); }
u32 get_messageEntrySize() const { return *(BE(u16)*)(get() + 0xA); }
u32 get_messageEntryNumber() const { return *(u16*)(get() + 0x8); }
u32 get_messageEntryNumber() const { return *(BE(u16)*)(get() + 0x8); }
u16 get_groupID() const { return *(u16*)(get() + 0xC); }
u16 get_groupID() const { return *(BE(u16)*)(get() + 0xC); }
};
// TParse_TBlock_messageID handles parsing MID1 section data
@@ -54,7 +54,7 @@ struct data {
char* get() const { return (char*)getRaw(); }
u8 get_formSupplement() const { return *(u8*)(get() + 0xB); }
int get_number() const { return *(u16*)(get() + 0x8); }
int get_number() const { return *(BE(u16)*)(get() + 0x8); }
u32* getContent() const { return (u32*)((uintptr_t)getRaw() + 0x10); }
u32 get_form() const { return *(u8*)(get() + 0xA) & 0xF; }
bool get_isOrdered() const { return *(u8*)(get() + 0xA) & 0xF0; }
@@ -81,8 +81,8 @@ struct data {
static unsigned int getTagCode(u32 tag) { return tag & 0xFFFF; }
static u8 getTagGroup(u32 tag) { return tag >> 0x10; }
static const u32 ga4cSignature;
static const u32 ga4cSignature_color;
static const BE(u32) ga4cSignature;
static const BE(u32) ga4cSignature_color;
static const int gcTagBegin = '\x1A'; // All text Control Tags will begin with this character
@@ -28,11 +28,11 @@ inline const int TObject::NodeOffset = -(int)offsetof(TObject, ocObject_);
struct data {
struct THeaderData {
u32 signature;
u16 byteOrder;
u16 version;
BE(u32) signature;
BE(u16) byteOrder;
BE(u16) version;
u8 field_0x0[4];
u32 blockNumber;
BE(u32) blockNumber;
u8 content[0];
};
@@ -34,18 +34,18 @@ struct CompositeOperation {
};
struct TBlock {
/* 0x0 */ u32 size;
/* 0x4 */ u16 type;
/* 0x6 */ u16 id_size;
/* 0x0 */ BE(u32) size;
/* 0x4 */ BE(u16) type;
/* 0x6 */ BE(u16) id_size;
/* 0x8 */ u8 id[0];
};
struct THeader {
/* 0x00 */ char signature[4];
/* 0x04 */ u16 byte_order; // must be 0xFEFF
/* 0x06 */ u16 version; // 0-1 = obselete, 2-7 = OK
/* 0x08 */ u32 _8;
/* 0x0C */ u32 block_number;
/* 0x04 */ BE(u16) byte_order; // must be 0xFEFF
/* 0x06 */ BE(u16) version; // 0-1 = obselete, 2-7 = OK
/* 0x08 */ BE(u32) _8;
/* 0x0C */ BE(u32) block_number;
/* 0x10 */ u8 content[0];
};
// Parses a THeader
@@ -115,8 +115,8 @@ private:
class TObject_list : public TObject {
public:
struct ListData {
/* 0x0 */ f32 _0;
/* 0x4 */ u32 _4;
/* 0x0 */ BE(f32) _0;
/* 0x4 */ BE(u32) _4;
/* 0x8 */ f32 _8[0];
};
TObject_list(data::TParse_TBlock const&);
@@ -131,7 +131,7 @@ private:
class TObject_list_parameter : public TObject {
public:
struct ListData {
u32 _0;
BE(u32) _0;
f32 _4[0];
};
TObject_list_parameter(data::TParse_TBlock const&);
@@ -146,7 +146,7 @@ private:
struct TObject_hermite : public TObject {
public:
struct ListData {
u32 _0; // u : 28, uSize : 4
BE(u32) _0; // u : 28, uSize : 4
f32 _4[0];
};
TObject_hermite(data::TParse_TBlock const&);
@@ -16,7 +16,7 @@ struct TCreateObject {
template<class AdaptorT>
static typename AdaptorT::ObjectType* createFromAdaptor(JStudio::stb::data::TParse_TBlock_object const& param_1, AdaptorT* param_2) {
typename AdaptorT::ObjectType* rv = new typename AdaptorT::ObjectType(param_1, param_2);
typename AdaptorT::ObjectType* rv = JKR_NEW typename AdaptorT::ObjectType(param_1, param_2);
if (rv == NULL) {
return NULL;
}
@@ -131,7 +131,7 @@ public:
template<class T>
T* createFromAdaptor(const stb::data::TParse_TBlock_object& param_0, T* param_1) {
T* n = new T(param_0, param_1);
T* n = JKR_NEW T(param_0, param_1);
if (n == NULL) {
return NULL;
@@ -49,7 +49,7 @@ public:
void getData(TData*) const;
const void* get() const { return getRaw(); }
u32 get_head() const { return *(u32*)get(); }
u32 get_head() const { return BSWAP32(*(u32*)get()); }
};
class TParse_TParagraph : public TParseData_aligned<4> {
@@ -21,7 +21,7 @@ const int BLOCK_NONE = -1;
// Used to expand a signed 24 int to a signed 32 int
const u32 gu32Mask_TSequence_value_signExpansion = 0xFF000000;
extern const u32 ga4cSignature; // 'STB/0'
extern const BE(u32) ga4cSignature; // 'STB/0'
extern const s32 gauDataSize_TEParagraph_data[8];
inline void toString_block(char* a5c, u32 arg1) {
@@ -31,34 +31,34 @@ inline void toString_block(char* a5c, u32 arg1) {
struct THeader {
struct Target {
/* 0x00 */ char name[8]; // "jstudio"
/* 0x08 */ u16 _8[3];
/* 0x0E */ u16 target_version;
/* 0x08 */ BE(u16) _8[3];
/* 0x0E */ BE(u16) target_version;
};
/* 0x00 */ char signature[4];
/* 0x04 */ u16 byte_order; // must be 0xFEFF
/* 0x06 */ u16 version; // 0-1 = obselete, 2-7 = OK
/* 0x08 */ u32 _8;
/* 0x0C */ u32 block_number;
/* 0x04 */ BE(u16) byte_order; // must be 0xFEFF
/* 0x06 */ BE(u16) version; // 0-1 = obselete, 2-7 = OK
/* 0x08 */ BE(u32) _8;
/* 0x0C */ BE(u32) block_number;
/* 0x10 */ Target target;
/* 0x20 */ u8 content[0];
};
struct TBlock {
/* 0x0 */ u32 size;
/* 0x4 */ u32 type; // char[4] JMSG, JSND, JACT, ...
/* 0x0 */ BE(u32) size;
/* 0x4 */ BE(u32) type; // char[4] JMSG, JSND, JACT, ...
};
struct TBlock_object : TBlock {
/* 0x8 */ u16 flag;
/* 0xA */ u16 id_size;
/* 0x8 */ BE(u16) flag;
/* 0xA */ BE(u16) id_size;
/* 0xC */ u8 id[0]; // unique identifier
///* ??? */ u8 content[0];
};
struct TParagraph {
/* 0x0 */ u16 _0;
/* 0x2 */ u16 id_size;
/* 0x0 */ BE(u16) _0;
/* 0x2 */ BE(u16) id_size;
/* 0x4 */ u8 id[0]; // unique identifier
};
@@ -321,7 +321,7 @@ template <class AdaptorT, class ObjectT>
JStudio::TObject* createObject_JSG_(const JStudio::stb::data::TParse_TBlock_object& param_1,
JStage::TObject* param_2, const JStage::TSystem* param_3) {
ObjectT* objt = (ObjectT*)param_2;
AdaptorT* pAdaptor = new AdaptorT(param_3, objt);
AdaptorT* pAdaptor = JKR_NEW AdaptorT(param_3, objt);
if (pAdaptor == NULL) {
return NULL;
}
@@ -3,10 +3,12 @@
#include <gx.h>
#include "JSystem/JKernel/JKRHeap.h"
/**
* @ingroup jsystem-jutility
*
*/
* @ingroup jsystem-jutility
*
*/
class JUTGraphFifo {
public:
JUTGraphFifo(u32);
@@ -40,6 +42,6 @@ private:
/* 0x10 */ u8 field_0x10[0xC];
};
inline JUTGraphFifo* JUTCreateFifo(u32 bufSize) { return new JUTGraphFifo(bufSize); }
inline JUTGraphFifo* JUTCreateFifo(u32 bufSize) { return JKR_NEW JUTGraphFifo(bufSize); }
#endif /* JUTGRAPHFIFO_H */
@@ -26,7 +26,7 @@ struct ResTIMG {
/* 0x08 */ u8 indexTexture;
/* 0x09 */ u8 colorFormat;
/* 0x0A */ BE(u16) numColors;
/* 0x0C */ BE(u32) paletteOffset;
/* 0x0C */ BE(s32) paletteOffset;
/* 0x10 */ u8 mipmapEnabled;
/* 0x11 */ u8 doEdgeLOD;
/* 0x12 */ u8 biasClamp;
@@ -38,7 +38,7 @@ struct ResTIMG {
/* 0x18 */ u8 mipmapCount;
/* 0x19 */ u8 unknown;
/* 0x1A */ BE(s16) LODBias;
/* 0x1C */ BE(u32) imageOffset;
/* 0x1C */ BE(s32) imageOffset;
}; // Size: 0x20
/**
@@ -4,6 +4,9 @@
#include <gx.h>
#include <os.h>
#include <vi.h>
#if TARGET_PC
#include <aurora/aurora.h>
#endif
typedef u8 (*Pattern)[2];
@@ -30,8 +33,20 @@ public:
static void postRetraceProc(u32);
static void drawDoneCallback();
u16 getFbWidth() const { return mRenderObj->fbWidth; }
u16 getEfbHeight() const { return mRenderObj->efbHeight; }
u16 getFbWidth() const {
#if TARGET_PC
return m_WindowSize.fb_width;
#else
return mRenderObj->fbWidth;
#endif
}
u16 getEfbHeight() const {
#if TARGET_PC
return m_WindowSize.fb_height;
#else
return mRenderObj->efbHeight;
#endif
}
void getBounds(u16& width, u16& height) const {
width = (u16)getFbWidth();
height = (u16)getEfbHeight();
@@ -47,6 +62,9 @@ public:
static OSTick getVideoLastTick() { return sVideoLastTick; }
GXRenderModeObj* getRenderMode() const { return mRenderObj; }
#if TARGET_PC
void setWindowSize(AuroraWindowSize const& size);
#endif
private:
static JUTVideo* sManager;
@@ -68,6 +86,11 @@ private:
/* 0x30 */ s32 mSetBlackFrameCount;
/* 0x34 */ OSMessage mMessage;
/* 0x38 */ OSMessageQueue mMessageQueue;
#if TARGET_PC
public:
AuroraWindowSize m_WindowSize;
#endif
};
inline JUTVideo* JUTGetVideoManager() {
@@ -2,6 +2,7 @@
#define TCOLOR_H
#include <gx.h>
#include "dusk/endian.h"
namespace JUtility {
@@ -14,11 +15,15 @@ struct TColor : public GXColor {
TColor() { set(0xffffffff); }
TColor(u32 u32Color) { set(u32Color); }
TColor(GXColor color) { set(color); }
#if TARGET_PC
TColor(BE(u32) u32Color) { set(u32Color); }
#endif
// TColor(const TColor& other) { set(other.toUInt32()); }
operator u32() const { return toUInt32(); }
u32 toUInt32() const { return *(u32*)&r; }
u32 toUInt32() const { return *(BE(u32)*)&r; }
void set(u8 cR, u8 cG, u8 cB, u8 cA) {
r = cR;
@@ -27,7 +32,7 @@ struct TColor : public GXColor {
a = cA;
}
void set(u32 u32Color) { *(u32*)&r = u32Color; }
void set(u32 u32Color) { *(BE(u32)*)&r = u32Color; }
void set(GXColor gxColor) {
GXColor* temp = this;
*temp = gxColor;
+33 -33
View File
@@ -152,7 +152,7 @@ void J2DAnmTransformKey::calcTransform(f32 param_0, u16 param_1,
transformInfo->mScale.x = mScaleValues[xInf->mScaleInfo.mOffset];
break;
default:
transformInfo->mScale.x = J2DGetKeyFrameInterpolation<f32>(
transformInfo->mScale.x = J2DGetKeyFrameInterpolation<BE(f32)>(
param_0, &xInf->mScaleInfo, &mScaleValues[xInf->mScaleInfo.mOffset]);
}
switch (yInf->mScaleInfo.mMaxFrame) {
@@ -163,7 +163,7 @@ void J2DAnmTransformKey::calcTransform(f32 param_0, u16 param_1,
transformInfo->mScale.y = mScaleValues[yInf->mScaleInfo.mOffset];
break;
default:
transformInfo->mScale.y = J2DGetKeyFrameInterpolation<f32>(
transformInfo->mScale.y = J2DGetKeyFrameInterpolation<BE(f32)>(
param_0, &yInf->mScaleInfo, &mScaleValues[yInf->mScaleInfo.mOffset]);
}
switch (zInf->mScaleInfo.mMaxFrame) {
@@ -174,7 +174,7 @@ void J2DAnmTransformKey::calcTransform(f32 param_0, u16 param_1,
transformInfo->mScale.z = mScaleValues[zInf->mScaleInfo.mOffset];
break;
default:
transformInfo->mScale.z = J2DGetKeyFrameInterpolation<f32>(
transformInfo->mScale.z = J2DGetKeyFrameInterpolation<BE(f32)>(
param_0, &zInf->mScaleInfo, &mScaleValues[zInf->mScaleInfo.mOffset]);
}
switch (xInf->mRotationInfo.mMaxFrame) {
@@ -186,7 +186,7 @@ void J2DAnmTransformKey::calcTransform(f32 param_0, u16 param_1,
break;
default:
transformInfo->mRotation.x =
static_cast<s32>(J2DGetKeyFrameInterpolation<s16>(
static_cast<s32>(J2DGetKeyFrameInterpolation<BE(s16)>(
param_0, &xInf->mRotationInfo, &mRotationValues[xInf->mRotationInfo.mOffset]))
<< field_0x24;
}
@@ -199,7 +199,7 @@ void J2DAnmTransformKey::calcTransform(f32 param_0, u16 param_1,
break;
default:
transformInfo->mRotation.y =
static_cast<s32>(J2DGetKeyFrameInterpolation<s16>(
static_cast<s32>(J2DGetKeyFrameInterpolation<BE(s16)>(
param_0, &yInf->mRotationInfo, &mRotationValues[yInf->mRotationInfo.mOffset]))
<< field_0x24;
}
@@ -212,7 +212,7 @@ void J2DAnmTransformKey::calcTransform(f32 param_0, u16 param_1,
break;
default:
transformInfo->mRotation.z =
static_cast<s32>(J2DGetKeyFrameInterpolation<s16>(
static_cast<s32>(J2DGetKeyFrameInterpolation<BE(s16)>(
param_0, &zInf->mRotationInfo, &mRotationValues[zInf->mRotationInfo.mOffset]))
<< field_0x24;
}
@@ -224,7 +224,7 @@ void J2DAnmTransformKey::calcTransform(f32 param_0, u16 param_1,
transformInfo->mTranslate.x = mTranslateValues[xInf->mTranslateInfo.mOffset];
break;
default:
transformInfo->mTranslate.x = J2DGetKeyFrameInterpolation<f32>(
transformInfo->mTranslate.x = J2DGetKeyFrameInterpolation<BE(f32)>(
param_0, &xInf->mTranslateInfo, &mTranslateValues[xInf->mTranslateInfo.mOffset]);
}
switch (yInf->mTranslateInfo.mMaxFrame) {
@@ -235,7 +235,7 @@ void J2DAnmTransformKey::calcTransform(f32 param_0, u16 param_1,
transformInfo->mTranslate.y = mTranslateValues[yInf->mTranslateInfo.mOffset];
break;
default:
transformInfo->mTranslate.y = J2DGetKeyFrameInterpolation<f32>(
transformInfo->mTranslate.y = J2DGetKeyFrameInterpolation<BE(f32)>(
param_0, &yInf->mTranslateInfo, &mTranslateValues[yInf->mTranslateInfo.mOffset]);
}
switch (zInf->mTranslateInfo.mMaxFrame) {
@@ -246,7 +246,7 @@ void J2DAnmTransformKey::calcTransform(f32 param_0, u16 param_1,
transformInfo->mTranslate.z = mTranslateValues[zInf->mTranslateInfo.mOffset];
break;
default:
transformInfo->mTranslate.z = J2DGetKeyFrameInterpolation<f32>(
transformInfo->mTranslate.z = J2DGetKeyFrameInterpolation<BE(f32)>(
param_0, &zInf->mTranslateInfo, &mTranslateValues[zInf->mTranslateInfo.mOffset]);
}
}
@@ -315,7 +315,7 @@ void J2DAnmColorKey::getColor(u16 param_0, GXColor* pColor) const {
pColor->r = mRValues[info->mRInfo.mOffset];
break;
default:
val = J2DGetKeyFrameInterpolation<s16>(mFrame, &info->mRInfo,
val = J2DGetKeyFrameInterpolation<BE(s16)>(mFrame, &info->mRInfo,
&mRValues[info->mRInfo.mOffset]);
if (val < 0) {
pColor->r = 0;
@@ -333,7 +333,7 @@ void J2DAnmColorKey::getColor(u16 param_0, GXColor* pColor) const {
pColor->g = mGValues[info->mGInfo.mOffset];
break;
default:
val = J2DGetKeyFrameInterpolation<s16>(mFrame, &info->mGInfo,
val = J2DGetKeyFrameInterpolation<BE(s16)>(mFrame, &info->mGInfo,
&mGValues[info->mGInfo.mOffset]);
if (val < 0) {
pColor->g = 0;
@@ -351,7 +351,7 @@ void J2DAnmColorKey::getColor(u16 param_0, GXColor* pColor) const {
pColor->b = mBValues[info->mBInfo.mOffset];
break;
default:
val = J2DGetKeyFrameInterpolation<s16>(mFrame, &info->mBInfo,
val = J2DGetKeyFrameInterpolation<BE(s16)>(mFrame, &info->mBInfo,
&mBValues[info->mBInfo.mOffset]);
if (val < 0) {
pColor->b = 0;
@@ -369,7 +369,7 @@ void J2DAnmColorKey::getColor(u16 param_0, GXColor* pColor) const {
pColor->a = mAValues[info->mAInfo.mOffset];
break;
default:
val = J2DGetKeyFrameInterpolation<s16>(mFrame, &info->mAInfo,
val = J2DGetKeyFrameInterpolation<BE(s16)>(mFrame, &info->mAInfo,
&mAValues[info->mAInfo.mOffset]);
if (val < 0) {
pColor->a = 0;
@@ -430,7 +430,7 @@ void J2DAnmVtxColorKey::getColor(u8 param_0, u16 param_1, GXColor* pColor) const
pColor->r = mRValues[info->mRInfo.mOffset];
break;
default:
val = J2DGetKeyFrameInterpolation<s16>(mFrame, &info->mRInfo,
val = J2DGetKeyFrameInterpolation<BE(s16)>(mFrame, &info->mRInfo,
&mRValues[info->mRInfo.mOffset]);
if ((val <= 0)) {
pColor->r = 0;
@@ -448,7 +448,7 @@ void J2DAnmVtxColorKey::getColor(u8 param_0, u16 param_1, GXColor* pColor) const
pColor->g = mGValues[info->mGInfo.mOffset];
break;
default:
val = J2DGetKeyFrameInterpolation<s16>(mFrame, &info->mGInfo,
val = J2DGetKeyFrameInterpolation<BE(s16)>(mFrame, &info->mGInfo,
&mGValues[info->mGInfo.mOffset]);
if (val <= 0) {
pColor->g = 0;
@@ -466,7 +466,7 @@ void J2DAnmVtxColorKey::getColor(u8 param_0, u16 param_1, GXColor* pColor) const
pColor->b = mBValues[info->mBInfo.mOffset];
break;
default:
val = J2DGetKeyFrameInterpolation<s16>(mFrame, &info->mBInfo,
val = J2DGetKeyFrameInterpolation<BE(s16)>(mFrame, &info->mBInfo,
&mBValues[info->mBInfo.mOffset]);
if (val <= 0) {
pColor->b = 0;
@@ -484,7 +484,7 @@ void J2DAnmVtxColorKey::getColor(u8 param_0, u16 param_1, GXColor* pColor) const
pColor->a = mAValues[info->mAInfo.mOffset];
break;
default:
val = J2DGetKeyFrameInterpolation<s16>(mFrame, &info->mAInfo,
val = J2DGetKeyFrameInterpolation<BE(s16)>(mFrame, &info->mAInfo,
&mAValues[info->mAInfo.mOffset]);
if (val <= 0) {
pColor->a = 0;
@@ -511,7 +511,7 @@ void J2DAnmTextureSRTKey::calcTransform(f32 param_0, u16 param_1, J3DTextureSRTI
pInfo->mScaleX = mScaleValues[xInf->mScaleInfo.mOffset];
break;
default:
pInfo->mScaleX = J2DGetKeyFrameInterpolation<f32>(param_0, &xInf->mScaleInfo,
pInfo->mScaleX = J2DGetKeyFrameInterpolation<BE(f32)>(param_0, &xInf->mScaleInfo,
&mScaleValues[xInf->mScaleInfo.mOffset]);
}
switch (yInf->mScaleInfo.mMaxFrame) {
@@ -522,7 +522,7 @@ void J2DAnmTextureSRTKey::calcTransform(f32 param_0, u16 param_1, J3DTextureSRTI
pInfo->mScaleY = mScaleValues[yInf->mScaleInfo.mOffset];
break;
default:
pInfo->mScaleY = J2DGetKeyFrameInterpolation<f32>(param_0, &yInf->mScaleInfo,
pInfo->mScaleY = J2DGetKeyFrameInterpolation<BE(f32)>(param_0, &yInf->mScaleInfo,
&mScaleValues[yInf->mScaleInfo.mOffset]);
}
switch (zInf->mRotationInfo.mMaxFrame) {
@@ -534,7 +534,7 @@ void J2DAnmTextureSRTKey::calcTransform(f32 param_0, u16 param_1, J3DTextureSRTI
break;
default:
pInfo->mRotation =
static_cast<s32>(J2DGetKeyFrameInterpolation<s16>(
static_cast<s32>(J2DGetKeyFrameInterpolation<BE(s16)>(
param_0, &zInf->mRotationInfo, &mRotationValues[zInf->mRotationInfo.mOffset]))
<< field_0x10;
}
@@ -546,7 +546,7 @@ void J2DAnmTextureSRTKey::calcTransform(f32 param_0, u16 param_1, J3DTextureSRTI
pInfo->mTranslationX = mTranslationValues[xInf->mTranslateInfo.mOffset];
break;
default:
pInfo->mTranslationX = J2DGetKeyFrameInterpolation<f32>(
pInfo->mTranslationX = J2DGetKeyFrameInterpolation<BE(f32)>(
param_0, &xInf->mTranslateInfo, &mTranslationValues[xInf->mTranslateInfo.mOffset]);
}
switch (yInf->mTranslateInfo.mMaxFrame) {
@@ -557,7 +557,7 @@ void J2DAnmTextureSRTKey::calcTransform(f32 param_0, u16 param_1, J3DTextureSRTI
pInfo->mTranslationY = mTranslationValues[yInf->mTranslateInfo.mOffset];
break;
default:
pInfo->mTranslationY = J2DGetKeyFrameInterpolation<f32>(
pInfo->mTranslationY = J2DGetKeyFrameInterpolation<BE(f32)>(
param_0, &yInf->mTranslateInfo, &mTranslationValues[yInf->mTranslateInfo.mOffset]);
}
}
@@ -585,8 +585,8 @@ void J2DAnmTexPattern::searchUpdateMaterialID(J2DScreen* pScreen) {
mUpdateMaterialID[entry] = 0xFFFF;
}
}
delete[] mTIMGPtrArray;
mTIMGPtrArray = new J2DAnmTexPatternTIMGPointer[pScreen->mTexRes->mCount];
JKR_DELETE_ARRAY(mTIMGPtrArray);
mTIMGPtrArray = JKR_NEW J2DAnmTexPatternTIMGPointer[pScreen->mTexRes->mCount];
if (mTIMGPtrArray != NULL) {
JUTResReference resRef;
for (u16 i = 0; i < pScreen->mTexRes->mCount; i++) {
@@ -601,7 +601,7 @@ void J2DAnmTexPattern::searchUpdateMaterialID(J2DScreen* pScreen) {
}
mTIMGPtrArray[i].mRes = var2;
if (var2 != NULL && var2->indexTexture) {
mTIMGPtrArray[i].mPalette = new JUTPalette(
mTIMGPtrArray[i].mPalette = JKR_NEW JUTPalette(
GX_TLUT0,
GXTlutFmt(var2->colorFormat),
JUTTransparency(var2->alphaEnabled),
@@ -676,7 +676,7 @@ void J2DAnmTevRegKey::getTevColorReg(u16 param_0, GXColorS10* pColor) const {
pColor->r = mCRValues[info->mRTable.mOffset];
break;
default:
val = J2DGetKeyFrameInterpolation<s16>(mFrame, &info->mRTable,
val = J2DGetKeyFrameInterpolation<BE(s16)>(mFrame, &info->mRTable,
&mCRValues[info->mRTable.mOffset]);
if (val < -0x400) {
pColor->r = -0x400;
@@ -694,7 +694,7 @@ void J2DAnmTevRegKey::getTevColorReg(u16 param_0, GXColorS10* pColor) const {
pColor->g = mCGValues[info->mGTable.mOffset];
break;
default:
val = J2DGetKeyFrameInterpolation<s16>(mFrame, &info->mGTable,
val = J2DGetKeyFrameInterpolation<BE(s16)>(mFrame, &info->mGTable,
&mCGValues[info->mGTable.mOffset]);
if (val < -0x400) {
pColor->g = -0x400;
@@ -712,7 +712,7 @@ void J2DAnmTevRegKey::getTevColorReg(u16 param_0, GXColorS10* pColor) const {
pColor->b = mCBValues[info->mBTable.mOffset];
break;
default:
val = J2DGetKeyFrameInterpolation<s16>(mFrame, &info->mBTable,
val = J2DGetKeyFrameInterpolation<BE(s16)>(mFrame, &info->mBTable,
&mCBValues[info->mBTable.mOffset]);
if (val < -0x400) {
pColor->b = -0x400;
@@ -730,7 +730,7 @@ void J2DAnmTevRegKey::getTevColorReg(u16 param_0, GXColorS10* pColor) const {
pColor->a = mCAValues[info->mATable.mOffset];
break;
default:
val = J2DGetKeyFrameInterpolation<s16>(mFrame, &info->mATable,
val = J2DGetKeyFrameInterpolation<BE(s16)>(mFrame, &info->mATable,
&mCAValues[info->mATable.mOffset]);
if (val < -0x400) {
pColor->a = -0x400;
@@ -755,7 +755,7 @@ void J2DAnmTevRegKey::getTevKonstReg(u16 param_0, GXColor* pColor) const {
pColor->r = mKRValues[info->mRTable.mOffset];
break;
default:
val = J2DGetKeyFrameInterpolation<s16>(mFrame, &info->mRTable,
val = J2DGetKeyFrameInterpolation<BE(s16)>(mFrame, &info->mRTable,
&mKRValues[info->mRTable.mOffset]);
if (val < 0) {
pColor->r = 0;
@@ -773,7 +773,7 @@ void J2DAnmTevRegKey::getTevKonstReg(u16 param_0, GXColor* pColor) const {
pColor->g = mKGValues[info->mGTable.mOffset];
break;
default:
val = J2DGetKeyFrameInterpolation<s16>(mFrame, &info->mGTable,
val = J2DGetKeyFrameInterpolation<BE(s16)>(mFrame, &info->mGTable,
&mKGValues[info->mGTable.mOffset]);
if (val < 0) {
pColor->g = 0;
@@ -791,7 +791,7 @@ void J2DAnmTevRegKey::getTevKonstReg(u16 param_0, GXColor* pColor) const {
pColor->b = mKBValues[info->mBTable.mOffset];
break;
default:
val = J2DGetKeyFrameInterpolation<s16>(mFrame, &info->mBTable,
val = J2DGetKeyFrameInterpolation<BE(s16)>(mFrame, &info->mBTable,
&mKBValues[info->mBTable.mOffset]);
if (val < 0) {
pColor->b = 0;
@@ -809,7 +809,7 @@ void J2DAnmTevRegKey::getTevKonstReg(u16 param_0, GXColor* pColor) const {
pColor->a = mKAValues[info->mATable.mOffset];
break;
default:
val = J2DGetKeyFrameInterpolation<s16>(mFrame, &info->mATable,
val = J2DGetKeyFrameInterpolation<BE(s16)>(mFrame, &info->mATable,
&mKAValues[info->mATable.mOffset]);
if (val < 0) {
pColor->a = 0;
+52 -75
View File
@@ -18,13 +18,13 @@ J2DAnmBase* J2DAnmLoaderDataBase::load(void const* p_data) {
switch (hdr->mType) {
case 'bck1': {
J2DAnmKeyLoader_v15 loader;
loader.mpResource = new J2DAnmTransformKey();
loader.mpResource = JKR_NEW J2DAnmTransformKey();
return (J2DAnmBase*)loader.load(p_data);
break;
}
case 'bpk1': {
J2DAnmKeyLoader_v15 loader;
loader.mpResource = new J2DAnmColorKey();
loader.mpResource = JKR_NEW J2DAnmColorKey();
return (J2DAnmBase*)loader.load(p_data);
break;
}
@@ -33,42 +33,42 @@ J2DAnmBase* J2DAnmLoaderDataBase::load(void const* p_data) {
return NULL;
case 'btk1': {
J2DAnmKeyLoader_v15 loader;
loader.mpResource = new J2DAnmTextureSRTKey();
loader.mpResource = JKR_NEW J2DAnmTextureSRTKey();
return (J2DAnmBase*)loader.load(p_data);
break;
}
case 'brk1': {
J2DAnmKeyLoader_v15 loader;
loader.mpResource = new J2DAnmTevRegKey();
loader.mpResource = JKR_NEW J2DAnmTevRegKey();
return (J2DAnmBase*)loader.load(p_data);
break;
}
case 'bxk1': {
J2DAnmKeyLoader_v15 loader;
loader.mpResource = new J2DAnmVtxColorKey();
loader.mpResource = JKR_NEW J2DAnmVtxColorKey();
return (J2DAnmBase*)loader.load(p_data);
break;
}
case 'bca1': {
J2DAnmFullLoader_v15 loader;
loader.mpResource = new J2DAnmTransformFull();
loader.mpResource = JKR_NEW J2DAnmTransformFull();
return (J2DAnmBase*)loader.load(p_data);
break;
}
case 'bpa1': {
J2DAnmFullLoader_v15 loader;
loader.mpResource = new J2DAnmColorFull();
loader.mpResource = JKR_NEW J2DAnmColorFull();
return (J2DAnmBase*)loader.load(p_data);
break;
}
case 'btp1': {
J2DAnmFullLoader_v15 loader;
loader.mpResource = new J2DAnmTexPattern();
loader.mpResource = JKR_NEW J2DAnmTexPattern();
return (J2DAnmBase*)loader.load(p_data);
}
case 'bva1': {
J2DAnmFullLoader_v15 loader;
loader.mpResource = new J2DAnmVisibilityFull();
loader.mpResource = JKR_NEW J2DAnmVisibilityFull();
return (J2DAnmBase*)loader.load(p_data);
break;
}
@@ -77,7 +77,7 @@ J2DAnmBase* J2DAnmLoaderDataBase::load(void const* p_data) {
return NULL;
case 'bxa1': {
J2DAnmFullLoader_v15 loader;
loader.mpResource = new J2DAnmVtxColorFull();
loader.mpResource = JKR_NEW J2DAnmVtxColorFull();
return (J2DAnmBase*)loader.load(p_data);
}
default:
@@ -175,25 +175,6 @@ void J2DAnmKeyLoader_v15::readAnmTransform(J3DAnmTransformKeyData const* p_data)
setAnmTransform(p_anm, p_data);
}
#if TARGET_LITTLE_ENDIAN
static void ByteSwapTransformKeyData(
J2DAnmTransformKey& target,
const J3DAnmTransformKeyData& source) {
for (int i = 0; i < source.mSCount; i += 1) {
be_swap(target.mScaleValues[i]);
}
for (int i = 0; i < source.mRCount; i += 1) {
be_swap(target.mRotationValues[i]);
}
for (int i = 0; i < source.mTCount; i += 1) {
be_swap(target.mTranslateValues[i]);
}
}
#endif
void J2DAnmKeyLoader_v15::setAnmTransform(J2DAnmTransformKey* p_anm,
J3DAnmTransformKeyData const* p_data) {
J3D_PANIC(439, p_anm, "Error : null pointer.");
@@ -205,14 +186,10 @@ void J2DAnmKeyLoader_v15::setAnmTransform(J2DAnmTransformKey* p_anm,
p_anm->mFrame = 0;
p_anm->mInfoTable =
JSUConvertOffsetToPtr<J3DAnmTransformKeyTable>(p_data, p_data->mJointAnimationTableOffs);
p_anm->mScaleValues = JSUConvertOffsetToPtr<f32>(p_data, p_data->mSTableOffs);
p_anm->mRotationValues = JSUConvertOffsetToPtr<s16>(p_data, p_data->mRTableOffs);
p_anm->mScaleValues = JSUConvertOffsetToPtr<BE(f32)>(p_data, p_data->mSTableOffs);
p_anm->mRotationValues = JSUConvertOffsetToPtr<BE(s16)>(p_data, p_data->mRTableOffs);
p_anm->mTranslateValues =
JSUConvertOffsetToPtr<f32>(p_data, p_data->mTTableOffs);
#if TARGET_LITTLE_ENDIAN
ByteSwapTransformKeyData(*p_anm, *p_data);
#endif
JSUConvertOffsetToPtr<BE(f32)>(p_data, p_data->mTTableOffs);
}
void J2DAnmKeyLoader_v15::readAnmTextureSRT(J3DAnmTextureSRTKeyData const* p_data) {
@@ -235,14 +212,14 @@ void J2DAnmKeyLoader_v15::setAnmTextureSRT(J2DAnmTextureSRTKey* p_anm,
p_anm->field_0x1e = p_data->field_0x12;
p_anm->mInfoTable =
JSUConvertOffsetToPtr<J3DAnmTransformKeyTable>(p_data, p_data->mTableOffset);
p_anm->mUpdateMaterialID = JSUConvertOffsetToPtr<u16>(p_data, p_data->mUpdateMatIDOffset);
p_anm->mUpdateMaterialID = JSUConvertOffsetToPtr<BE(u16)>(p_data, p_data->mUpdateMatIDOffset);
p_anm->field_0x34.setResource(
JSUConvertOffsetToPtr<ResNTAB>(p_data, p_data->mNameTab1Offset));
p_anm->mUpdateTexMtxID = JSUConvertOffsetToPtr<u8>(p_data, p_data->mUpdateTexMtxIDOffset);
p_anm->field_0x44 = JSUConvertOffsetToPtr<Vec>(p_data, p_data->unkOffset);
p_anm->mScaleValues = JSUConvertOffsetToPtr<f32>(p_data, p_data->mScaleValOffset);
p_anm->mRotationValues = JSUConvertOffsetToPtr<s16>(p_data, p_data->mRotValOffset);
p_anm->mTranslationValues = JSUConvertOffsetToPtr<f32>(p_data, p_data->mTransValOffset);
p_anm->field_0x44 = JSUConvertOffsetToPtr<BE(Vec)>(p_data, p_data->unkOffset);
p_anm->mScaleValues = JSUConvertOffsetToPtr<BE(f32)>(p_data, p_data->mScaleValOffset);
p_anm->mRotationValues = JSUConvertOffsetToPtr<BE(s16)>(p_data, p_data->mRotValOffset);
p_anm->mTranslationValues = JSUConvertOffsetToPtr<BE(f32)>(p_data, p_data->mTransValOffset);
if (p_data->mNameTab2Offset != 0) {
p_anm->field_0x68.setResource(
JSUConvertOffsetToPtr<ResNTAB>(p_data, p_data->mNameTab2Offset));
@@ -253,12 +230,12 @@ void J2DAnmKeyLoader_v15::setAnmTextureSRT(J2DAnmTextureSRTKey* p_anm,
p_anm->field_0x4c = p_data->field_0x3a;
p_anm->field_0x5c =
JSUConvertOffsetToPtr<J3DAnmTransformKeyTable>(p_data, p_data->mInfoTable2Offset);
p_anm->field_0x64 = JSUConvertOffsetToPtr<u16>(p_data, p_data->field_0x40);
p_anm->field_0x64 = JSUConvertOffsetToPtr<BE(u16)>(p_data, p_data->field_0x40);
p_anm->field_0x60 = JSUConvertOffsetToPtr<u8>(p_data, p_data->field_0x48);
p_anm->field_0x78 = JSUConvertOffsetToPtr<Vec>(p_data, p_data->field_0x4c);
p_anm->field_0x50 = JSUConvertOffsetToPtr<f32>(p_data, p_data->field_0x50);
p_anm->field_0x54 = JSUConvertOffsetToPtr<s16>(p_data, p_data->field_0x54);
p_anm->field_0x58 = JSUConvertOffsetToPtr<f32>(p_data, p_data->field_0x58);
p_anm->field_0x78 = JSUConvertOffsetToPtr<BE(Vec)>(p_data, p_data->field_0x4c);
p_anm->field_0x50 = JSUConvertOffsetToPtr<BE(f32)>(p_data, p_data->field_0x50);
p_anm->field_0x54 = JSUConvertOffsetToPtr<BE(s16)>(p_data, p_data->field_0x54);
p_anm->field_0x58 = JSUConvertOffsetToPtr<BE(f32)>(p_data, p_data->field_0x58);
switch (p_data->field_0x5c) {
case 0:
p_anm->field_0x7c = 0;
@@ -290,12 +267,12 @@ void J2DAnmKeyLoader_v15::setAnmColor(J2DAnmColorKey* p_anm, J3DAnmColorKeyData
p_anm->field_0x16 = p_data->field_0x16;
p_anm->mInfoTable =
JSUConvertOffsetToPtr<J3DAnmColorKeyTable>(p_data, p_data->mTableOffset);
p_anm->mRValues = JSUConvertOffsetToPtr<s16>(p_data, p_data->mRValOffset);
p_anm->mGValues = JSUConvertOffsetToPtr<s16>(p_data, p_data->mGValOffset);
p_anm->mBValues = JSUConvertOffsetToPtr<s16>(p_data, p_data->mBValOffset);
p_anm->mAValues = JSUConvertOffsetToPtr<s16>(p_data, p_data->mAValOffset);
p_anm->mRValues = JSUConvertOffsetToPtr<BE(s16)>(p_data, p_data->mRValOffset);
p_anm->mGValues = JSUConvertOffsetToPtr<BE(s16)>(p_data, p_data->mGValOffset);
p_anm->mBValues = JSUConvertOffsetToPtr<BE(s16)>(p_data, p_data->mBValOffset);
p_anm->mAValues = JSUConvertOffsetToPtr<BE(s16)>(p_data, p_data->mAValOffset);
p_anm->mUpdateMaterialID =
JSUConvertOffsetToPtr<u16>(p_data, p_data->mUpdateMaterialIDOffset);
JSUConvertOffsetToPtr<BE(u16)>(p_data, p_data->mUpdateMaterialIDOffset);
p_anm->field_0x20.setResource(
JSUConvertOffsetToPtr<ResNTAB>(p_data, p_data->mNameTabOffset));
}
@@ -323,13 +300,13 @@ void J2DAnmKeyLoader_v15::setAnmVtxColor(J2DAnmVtxColorKey* p_anm,
p_anm->mVtxColorIndexData[1] = JSUConvertOffsetToPtr<J3DAnmVtxColorIndexData>(
p_data, p_data->mVtxColoIndexDataOffset[1]);
p_anm->mVtxColorIndexPointer[0] =
JSUConvertOffsetToPtr<u16>(p_data, p_data->mVtxColoIndexPointerOffset[0]);
JSUConvertOffsetToPtr<BE(u16)>(p_data, p_data->mVtxColoIndexPointerOffset[0]);
p_anm->mVtxColorIndexPointer[1] =
JSUConvertOffsetToPtr<u16>(p_data, p_data->mVtxColoIndexPointerOffset[1]);
p_anm->mRValues = JSUConvertOffsetToPtr<s16>(p_data, p_data->mRValOffset);
p_anm->mGValues = JSUConvertOffsetToPtr<s16>(p_data, p_data->mGValOffset);
p_anm->mBValues = JSUConvertOffsetToPtr<s16>(p_data, p_data->mBValOffset);
p_anm->mAValues = JSUConvertOffsetToPtr<s16>(p_data, p_data->mAValOffset);
JSUConvertOffsetToPtr<BE(u16)>(p_data, p_data->mVtxColoIndexPointerOffset[1]);
p_anm->mRValues = JSUConvertOffsetToPtr<BE(s16)>(p_data, p_data->mRValOffset);
p_anm->mGValues = JSUConvertOffsetToPtr<BE(s16)>(p_data, p_data->mGValOffset);
p_anm->mBValues = JSUConvertOffsetToPtr<BE(s16)>(p_data, p_data->mBValOffset);
p_anm->mAValues = JSUConvertOffsetToPtr<BE(s16)>(p_data, p_data->mAValOffset);
}
void* J2DAnmFullLoader_v15::load(void const* p_data) {
@@ -419,9 +396,9 @@ void J2DAnmFullLoader_v15::setAnmTransform(J2DAnmTransformFull* p_anm,
p_anm->mFrame = 0;
p_anm->mTableInfo =
JSUConvertOffsetToPtr<J3DAnmTransformFullTable>(p_data, p_data->mTableOffset);
p_anm->mScaleValues = JSUConvertOffsetToPtr<f32>(p_data, p_data->mScaleValOffset);
p_anm->mRotationValues = JSUConvertOffsetToPtr<s16>(p_data, p_data->mRotValOffset);
p_anm->mTranslateValues = JSUConvertOffsetToPtr<f32>(p_data, p_data->mTransValOffset);
p_anm->mScaleValues = JSUConvertOffsetToPtr<BE(f32)>(p_data, p_data->mScaleValOffset);
p_anm->mRotationValues = JSUConvertOffsetToPtr<BE(s16)>(p_data, p_data->mRotValOffset);
p_anm->mTranslateValues = JSUConvertOffsetToPtr<BE(f32)>(p_data, p_data->mTransValOffset);
}
void J2DAnmFullLoader_v15::readAnmColor(J3DAnmColorFullData const* p_data) {
@@ -443,7 +420,7 @@ void J2DAnmFullLoader_v15::setAnmColor(J2DAnmColorFull* p_anm, J3DAnmColorFullDa
p_anm->mBValues = JSUConvertOffsetToPtr<u8>(p_data, p_data->mBValuesOffset);
p_anm->mAValues = JSUConvertOffsetToPtr<u8>(p_data, p_data->mAValuesOffset);
p_anm->mUpdateMaterialID =
JSUConvertOffsetToPtr<u16>(p_data, p_data->mUpdateMaterialIDOffset);
JSUConvertOffsetToPtr<BE(u16)>(p_data, p_data->mUpdateMaterialIDOffset);
p_anm->field_0x20.setResource(
JSUConvertOffsetToPtr<ResNTAB>(p_data, p_data->mNameTabOffset));
}
@@ -464,9 +441,9 @@ void J2DAnmFullLoader_v15::setAnmTexPattern(J2DAnmTexPattern* p_anm,
p_anm->field_0x18 = p_data->field_0xe;
p_anm->mAnmTable =
JSUConvertOffsetToPtr<J3DAnmTexPatternFullTable>(p_data, p_data->mTableOffset);
p_anm->mValues = JSUConvertOffsetToPtr<u16>(p_data, p_data->mValuesOffset);
p_anm->mValues = JSUConvertOffsetToPtr<BE(u16)>(p_data, p_data->mValuesOffset);
p_anm->mUpdateMaterialID =
JSUConvertOffsetToPtr<u16>(p_data, p_data->mUpdateMaterialIDOffset);
JSUConvertOffsetToPtr<BE(u16)>(p_data, p_data->mUpdateMaterialIDOffset);
p_anm->field_0x20.setResource(
JSUConvertOffsetToPtr<ResNTAB>(p_data, p_data->mNameTabOffset));
}
@@ -486,32 +463,32 @@ void J2DAnmKeyLoader_v15::setAnmTevReg(J2DAnmTevRegKey* p_anm, J3DAnmTevRegKeyDa
p_anm->mAnmCRegKeyTable =
JSUConvertOffsetToPtr<J3DAnmCRegKeyTable>(p_data, p_data->mCRegTableOffset);
p_anm->mCRegUpdateMaterialID =
JSUConvertOffsetToPtr<u16>(p_data, p_data->mCRegUpdateMaterialIDOffset);
JSUConvertOffsetToPtr<BE(u16)>(p_data, p_data->mCRegUpdateMaterialIDOffset);
p_anm->mCRegNameTab.setResource(
JSUConvertOffsetToPtr<ResNTAB>(p_data, p_data->mCRegNameTabOffset));
p_anm->mKRegUpdateMaterialNum = p_data->mKRegUpdateMaterialNum;
p_anm->mAnmKRegKeyTable =
JSUConvertOffsetToPtr<J3DAnmKRegKeyTable>(p_data, p_data->mKRegTableOffset);
p_anm->mKRegUpdateMaterialID =
JSUConvertOffsetToPtr<u16>(p_data, p_data->mKRegUpdateMaterialIDOffset);
JSUConvertOffsetToPtr<BE(u16)>(p_data, p_data->mKRegUpdateMaterialIDOffset);
p_anm->mKRegNameTab.setResource(
JSUConvertOffsetToPtr<ResNTAB>(p_data, p_data->mKRegNameTabOffset));
p_anm->field_0x14 = p_data->field_0x10;
p_anm->field_0x16 = p_data->field_0x12;
p_anm->field_0x18 = p_data->field_0x14;
p_anm->field_0x1a = p_data->field_0x16;
p_anm->mCRValues = JSUConvertOffsetToPtr<s16>(p_data, p_data->mCRValuesOffset);
p_anm->mCGValues = JSUConvertOffsetToPtr<s16>(p_data, p_data->mCGValuesOffset);
p_anm->mCBValues = JSUConvertOffsetToPtr<s16>(p_data, p_data->mCBValuesOffset);
p_anm->mCAValues = JSUConvertOffsetToPtr<s16>(p_data, p_data->mCAValuesOffset);
p_anm->mCRValues = JSUConvertOffsetToPtr<BE(s16)>(p_data, p_data->mCRValuesOffset);
p_anm->mCGValues = JSUConvertOffsetToPtr<BE(s16)>(p_data, p_data->mCGValuesOffset);
p_anm->mCBValues = JSUConvertOffsetToPtr<BE(s16)>(p_data, p_data->mCBValuesOffset);
p_anm->mCAValues = JSUConvertOffsetToPtr<BE(s16)>(p_data, p_data->mCAValuesOffset);
p_anm->field_0x1c = p_data->field_0x18;
p_anm->field_0x1e = p_data->field_0x1a;
p_anm->field_0x20 = p_data->field_0x1c;
p_anm->field_0x22 = p_data->field_0x1e;
p_anm->mKRValues = JSUConvertOffsetToPtr<s16>(p_data, p_data->mKRValuesOffset);
p_anm->mKGValues = JSUConvertOffsetToPtr<s16>(p_data, p_data->mKGValuesOffset);
p_anm->mKBValues = JSUConvertOffsetToPtr<s16>(p_data, p_data->mKBValuesOffset);
p_anm->mKAValues = JSUConvertOffsetToPtr<s16>(p_data, p_data->mKAValuesOffset);
p_anm->mKRValues = JSUConvertOffsetToPtr<BE(s16)>(p_data, p_data->mKRValuesOffset);
p_anm->mKGValues = JSUConvertOffsetToPtr<BE(s16)>(p_data, p_data->mKGValuesOffset);
p_anm->mKBValues = JSUConvertOffsetToPtr<BE(s16)>(p_data, p_data->mKBValuesOffset);
p_anm->mKAValues = JSUConvertOffsetToPtr<BE(s16)>(p_data, p_data->mKAValuesOffset);
}
void J2DAnmFullLoader_v15::readAnmVisibility(J3DAnmVisibilityFullData const* p_data) {
@@ -556,9 +533,9 @@ void J2DAnmFullLoader_v15::setAnmVtxColor(J2DAnmVtxColorFull* p_anm,
p_anm->mVtxColorIndexData[1] = JSUConvertOffsetToPtr<J3DAnmVtxColorIndexData>(
p_data, p_data->mVtxColorIndexDataOffsets[1]);
p_anm->mVtxColorIndexPointer[0] =
JSUConvertOffsetToPtr<u16>(p_data, p_data->mVtxColorIndexPointerOffsets[0]);
JSUConvertOffsetToPtr<BE(u16)>(p_data, p_data->mVtxColorIndexPointerOffsets[0]);
p_anm->mVtxColorIndexPointer[1] =
JSUConvertOffsetToPtr<u16>(p_data, p_data->mVtxColorIndexPointerOffsets[1]);
JSUConvertOffsetToPtr<BE(u16)>(p_data, p_data->mVtxColorIndexPointerOffsets[1]);
p_anm->mRValues = JSUConvertOffsetToPtr<u8>(p_data, p_data->mRValuesOffset);
p_anm->mGValues = JSUConvertOffsetToPtr<u8>(p_data, p_data->mGValuesOffset);
p_anm->mBValues = JSUConvertOffsetToPtr<u8>(p_data, p_data->mBValuesOffset);
+101 -99
View File
@@ -7,6 +7,8 @@
#include "JSystem/JUtility/JUTTexture.h"
#include <gx.h>
#include "JSystem/JKernel/JKRHeap.h"
void J2DColorBlock::initialize() {
for (int i = 0; i < 2; i++) {
mMatColor[i] = JUtility::TColor(j2dDefaultColInfo);
@@ -56,7 +58,7 @@ void J2DTexGenBlock::setGX() {
J2DTexGenBlock::~J2DTexGenBlock() {
for (int i = 0; i < 8; i++) {
delete mTexMtx[i];
JKR_DELETE(mTexMtx[i]);
}
}
@@ -64,7 +66,7 @@ void J2DTexGenBlock::setTexMtx(u32 param_0, J2DTexMtx& param_1) {
J3D_PANIC(103, param_0 < 8, "Error : range over.");
if (!mTexMtx[param_0]) {
mTexMtx[param_0] = new J2DTexMtx(param_1.getTexMtxInfo());
mTexMtx[param_0] = JKR_NEW J2DTexMtx(param_1.getTexMtxInfo());
if (!mTexMtx[param_0]) {
return;
}
@@ -101,13 +103,13 @@ J2DTevBlock1::J2DTevBlock1() {
J2DTevBlock1::~J2DTevBlock1() {
if (mUndeleteFlag & 1) {
delete mTexture[0];
JKR_DELETE(mTexture[0]);
}
delete mPalette[0];
JKR_DELETE(mPalette[0]);
if (mUndeleteFlag & 0x80) {
delete mFont;
JKR_DELETE(mFont);
}
}
@@ -139,7 +141,7 @@ bool J2DTevBlock1::prepareTexture(u8 param_0) {
}
if (mTexture[0] == NULL) {
mTexture[0] = new JUTTexture();
mTexture[0] = JKR_NEW JUTTexture();
if (mTexture[0] == NULL) {
return false;
@@ -166,7 +168,7 @@ bool J2DTevBlock1::insertTexture(u32 param_0, ResTIMG const* p_timg, JUTPalette*
}
if (mTexture[0] == NULL) {
mTexture[0] = new JUTTexture(p_timg, 0);
mTexture[0] = JKR_NEW JUTTexture(p_timg, 0);
if (mTexture[0] == NULL) {
return false;
@@ -197,7 +199,7 @@ bool J2DTevBlock1::insertTexture(u32 param_0, JUTTexture* p_tex) {
}
if (mUndeleteFlag & 1) {
delete mTexture[0];
JKR_DELETE(mTexture[0]);
}
mTexture[0] = p_tex;
@@ -214,7 +216,7 @@ bool J2DTevBlock1::setTexture(u32 param_0, ResTIMG const* p_timg) {
if (mTexture[0] == NULL) {
if (p_timg != NULL) {
mTexture[0] = new JUTTexture(p_timg, 0);
mTexture[0] = JKR_NEW JUTTexture(p_timg, 0);
if (mTexture[0] == NULL) {
return false;
@@ -228,7 +230,7 @@ bool J2DTevBlock1::setTexture(u32 param_0, ResTIMG const* p_timg) {
if (p_timg != NULL) {
mTexture[0]->storeTIMG(p_timg, (u8)0);
} else {
delete mTexture[0];
JKR_DELETE(mTexture[0]);
mTexture[0] = NULL;
mUndeleteFlag &= 0x80;
}
@@ -236,7 +238,7 @@ bool J2DTevBlock1::setTexture(u32 param_0, ResTIMG const* p_timg) {
mTexture[0] = NULL;
if (p_timg != NULL) {
mTexture[0] = new JUTTexture(p_timg, 0);
mTexture[0] = JKR_NEW JUTTexture(p_timg, 0);
if (mTexture[0] == NULL) {
return false;
@@ -246,7 +248,7 @@ bool J2DTevBlock1::setTexture(u32 param_0, ResTIMG const* p_timg) {
}
}
delete mPalette[0];
JKR_DELETE(mPalette[0]);
mPalette[0] = NULL;
mTexNo[0] = -1;
return true;
@@ -258,12 +260,12 @@ bool J2DTevBlock1::setTexture(u32 param_0, JUTTexture* p_tex) {
}
if (mUndeleteFlag & 1) {
delete mTexture[0];
JKR_DELETE(mTexture[0]);
}
mTexture[0] = p_tex;
mUndeleteFlag &= 0x80;
delete mPalette[0];
JKR_DELETE(mPalette[0]);
mPalette[0] = NULL;
mTexNo[0] = -1;
return true;
@@ -275,12 +277,12 @@ bool J2DTevBlock1::removeTexture(u32 param_0) {
}
if (mUndeleteFlag & 1) {
delete mTexture[0];
JKR_DELETE(mTexture[0]);
}
mTexture[0] = NULL;
mUndeleteFlag &= 0x80;
delete mPalette[0];
JKR_DELETE(mPalette[0]);
mTexNo[0] = -1;
return true;
}
@@ -290,13 +292,13 @@ bool J2DTevBlock1::setFont(ResFONT* p_font) {
return false;
}
JUTResFont* resFont = new JUTResFont(p_font, NULL);
JUTResFont* resFont = JKR_NEW JUTResFont(p_font, NULL);
if (resFont == NULL) {
return false;
}
if (mUndeleteFlag & 0x80) {
delete mFont;
JKR_DELETE(mFont);
}
mFont = resFont;
@@ -310,7 +312,7 @@ bool J2DTevBlock1::setFont(JUTFont* p_font) {
}
if (mUndeleteFlag & 0x80) {
delete mFont;
JKR_DELETE(mFont);
}
mFont = (JUTResFont*)p_font;
@@ -325,7 +327,7 @@ bool J2DTevBlock1::setPalette(u32 param_0, ResTLUT const* p_tlut) {
if (p_tlut != NULL) {
if (mPalette[0] == NULL) {
mPalette[0] = new JUTPalette(GX_TLUT0, (ResTLUT*)p_tlut);
mPalette[0] = JKR_NEW JUTPalette(GX_TLUT0, (ResTLUT*)p_tlut);
if (mPalette[0] == NULL) {
return false;
@@ -338,7 +340,7 @@ bool J2DTevBlock1::setPalette(u32 param_0, ResTLUT const* p_tlut) {
mTexture[0]->attachPalette(mPalette[0]);
}
} else {
delete mPalette[0];
JKR_DELETE(mPalette[0]);
mPalette[0] = NULL;
}
@@ -403,18 +405,18 @@ J2DTevBlock2::J2DTevBlock2() {
J2DTevBlock2::~J2DTevBlock2() {
if (mUndeleteFlag & 1) {
delete mTexture[0];
JKR_DELETE(mTexture[0]);
}
if (mUndeleteFlag & 2) {
delete mTexture[1];
JKR_DELETE(mTexture[1]);
}
delete mPalette[0];
delete mPalette[1];
JKR_DELETE(mPalette[0]);
JKR_DELETE(mPalette[1]);
if (mUndeleteFlag & 0x80) {
delete mFont;
JKR_DELETE(mFont);
}
}
@@ -454,7 +456,7 @@ bool J2DTevBlock2::prepareTexture(u8 param_0) {
}
if (mTexture[i] == NULL) {
mTexture[i] = new JUTTexture();
mTexture[i] = JKR_NEW JUTTexture();
if (mTexture[i] == NULL) {
return false;
@@ -499,7 +501,7 @@ bool J2DTevBlock2::insertTexture(u32 param_0, ResTIMG const* p_timg, JUTPalette*
JUTTexture* tex;
if (mTexture[texNo] == NULL) {
tex = new JUTTexture(p_timg, tlutid);
tex = JKR_NEW JUTTexture(p_timg, tlutid);
if (tex == NULL) {
return false;
@@ -575,7 +577,7 @@ bool J2DTevBlock2::insertTexture(u32 param_0, JUTTexture* p_tex) {
if (mTexture[1] != NULL && mTexture[1]->getTexInfo() == NULL) {
if (mUndeleteFlag & 2) {
delete mTexture[1];
JKR_DELETE(mTexture[1]);
}
mUndeleteFlag &= ~2;
@@ -617,7 +619,7 @@ bool J2DTevBlock2::setTexture(u32 param_0, ResTIMG const* p_timg) {
if (mTexture[param_0] == NULL) {
if (p_timg != NULL) {
mTexture[param_0] = new JUTTexture(p_timg, tlutid);
mTexture[param_0] = JKR_NEW JUTTexture(p_timg, tlutid);
if (mTexture[param_0] == NULL) {
return false;
@@ -631,7 +633,7 @@ bool J2DTevBlock2::setTexture(u32 param_0, ResTIMG const* p_timg) {
if (p_timg != NULL) {
mTexture[param_0]->storeTIMG(p_timg, tlutid);
} else {
delete mTexture[param_0];
JKR_DELETE(mTexture[param_0]);
mTexture[param_0] = NULL;
mUndeleteFlag &= ~(1 << param_0);
}
@@ -639,7 +641,7 @@ bool J2DTevBlock2::setTexture(u32 param_0, ResTIMG const* p_timg) {
mTexture[param_0] = NULL;
if (p_timg != NULL) {
mTexture[param_0] = new JUTTexture(p_timg, 0);
mTexture[param_0] = JKR_NEW JUTTexture(p_timg, 0);
if (mTexture[param_0] == NULL) {
return false;
@@ -649,7 +651,7 @@ bool J2DTevBlock2::setTexture(u32 param_0, ResTIMG const* p_timg) {
}
}
delete mPalette[param_0];
JKR_DELETE(mPalette[param_0]);
mPalette[param_0] = NULL;
mTexNo[param_0] = -1;
return true;
@@ -661,12 +663,12 @@ bool J2DTevBlock2::setTexture(u32 param_0, JUTTexture* p_tex) {
}
if (mUndeleteFlag & (1 << param_0)) {
delete mTexture[param_0];
JKR_DELETE(mTexture[param_0]);
}
mTexture[param_0] = p_tex;
mUndeleteFlag &= ~(1 << param_0);
delete mPalette[param_0];
JKR_DELETE(mPalette[param_0]);
mPalette[param_0] = NULL;
mTexNo[param_0] = -1;
return true;
@@ -678,9 +680,9 @@ bool J2DTevBlock2::removeTexture(u32 param_0) {
}
if (mUndeleteFlag & (1 << param_0)) {
delete mTexture[param_0];
JKR_DELETE(mTexture[param_0]);
}
delete mPalette[param_0];
JKR_DELETE(mPalette[param_0]);
if (param_0 == 0) {
mTexture[0] = mTexture[1];
@@ -700,13 +702,13 @@ bool J2DTevBlock2::setFont(ResFONT* p_font) {
return false;
}
JUTResFont* resFont = new JUTResFont(p_font, NULL);
JUTResFont* resFont = JKR_NEW JUTResFont(p_font, NULL);
if (resFont == NULL) {
return false;
}
if (mUndeleteFlag & 0x80) {
delete mFont;
JKR_DELETE(mFont);
}
mFont = resFont;
@@ -720,7 +722,7 @@ bool J2DTevBlock2::setFont(JUTFont* p_font) {
}
if (mUndeleteFlag & 0x80) {
delete mFont;
JKR_DELETE(mFont);
}
mFont = (JUTResFont*)p_font;
@@ -735,7 +737,7 @@ bool J2DTevBlock2::setPalette(u32 param_0, ResTLUT const* p_tlut) {
if (p_tlut != NULL) {
if (mPalette[param_0] == NULL) {
mPalette[param_0] = new JUTPalette((GXTlut)param_0, (ResTLUT*)p_tlut);
mPalette[param_0] = JKR_NEW JUTPalette((GXTlut)param_0, (ResTLUT*)p_tlut);
if (mPalette[param_0] == NULL) {
return false;
@@ -748,7 +750,7 @@ bool J2DTevBlock2::setPalette(u32 param_0, ResTLUT const* p_tlut) {
mTexture[param_0]->attachPalette(mPalette[param_0]);
}
} else {
delete mPalette[param_0];
JKR_DELETE(mPalette[param_0]);
mPalette[param_0] = NULL;
}
@@ -841,13 +843,13 @@ J2DTevBlock4::J2DTevBlock4() {
J2DTevBlock4::~J2DTevBlock4() {
for (int i = 0; i < 4; i++) {
if (mUndeleteFlag & (1 << i)) {
delete mTexture[i];
JKR_DELETE(mTexture[i]);
}
delete mPalette[i];
JKR_DELETE(mPalette[i]);
}
if (mUndeleteFlag & 0x80) {
delete mFont;
JKR_DELETE(mFont);
}
}
@@ -892,7 +894,7 @@ bool J2DTevBlock4::prepareTexture(u8 param_0) {
}
if (mTexture[i] == NULL) {
mTexture[i] = new JUTTexture();
mTexture[i] = JKR_NEW JUTTexture();
if (mTexture[i] == NULL) {
return false;
@@ -949,7 +951,7 @@ bool J2DTevBlock4::insertTexture(u32 param_0, ResTIMG const* p_timg, JUTPalette*
}
JUTTexture* texture;
if (!mTexture[idx]) {
texture = new JUTTexture(p_timg, local_43);
texture = JKR_NEW JUTTexture(p_timg, local_43);
if (!texture) {
return false;
}
@@ -1017,7 +1019,7 @@ bool J2DTevBlock4::insertTexture(u32 param_0, JUTTexture* p_tex) {
if (mTexture[3] != NULL && mTexture[3]->getTexInfo() == NULL) {
if (mUndeleteFlag & 8) {
delete mTexture[3];
JKR_DELETE(mTexture[3]);
}
mUndeleteFlag &= ~8;
@@ -1069,7 +1071,7 @@ bool J2DTevBlock4::setTexture(u32 param_0, ResTIMG const* p_timg) {
if (mTexture[param_0] == NULL) {
if (p_timg != NULL) {
mTexture[param_0] = new JUTTexture(p_timg, tlutid);
mTexture[param_0] = JKR_NEW JUTTexture(p_timg, tlutid);
if (mTexture[param_0] == NULL) {
return false;
@@ -1083,7 +1085,7 @@ bool J2DTevBlock4::setTexture(u32 param_0, ResTIMG const* p_timg) {
if (p_timg != NULL) {
mTexture[param_0]->storeTIMG(p_timg, tlutid);
} else {
delete mTexture[param_0];
JKR_DELETE(mTexture[param_0]);
mTexture[param_0] = NULL;
mUndeleteFlag &= ~(1 << param_0);
}
@@ -1091,7 +1093,7 @@ bool J2DTevBlock4::setTexture(u32 param_0, ResTIMG const* p_timg) {
mTexture[param_0] = NULL;
if (p_timg != NULL) {
mTexture[param_0] = new JUTTexture(p_timg, 0);
mTexture[param_0] = JKR_NEW JUTTexture(p_timg, 0);
if (mTexture[param_0] == NULL) {
return false;
@@ -1101,7 +1103,7 @@ bool J2DTevBlock4::setTexture(u32 param_0, ResTIMG const* p_timg) {
}
}
delete mPalette[param_0];
JKR_DELETE(mPalette[param_0]);
mPalette[param_0] = NULL;
mTexNo[param_0] = -1;
return true;
@@ -1113,12 +1115,12 @@ bool J2DTevBlock4::setTexture(u32 param_0, JUTTexture* p_tex) {
}
if (mUndeleteFlag & (1 << param_0)) {
delete mTexture[param_0];
JKR_DELETE(mTexture[param_0]);
}
mTexture[param_0] = p_tex;
mUndeleteFlag &= ~(1 << param_0);
delete mPalette[param_0];
JKR_DELETE(mPalette[param_0]);
mPalette[param_0] = NULL;
mTexNo[param_0] = -1;
return true;
@@ -1130,9 +1132,9 @@ bool J2DTevBlock4::removeTexture(u32 param_0) {
}
if (mUndeleteFlag & (1 << param_0)) {
delete mTexture[param_0];
JKR_DELETE(mTexture[param_0]);
}
delete mPalette[param_0];
JKR_DELETE(mPalette[param_0]);
for (u32 i = param_0; i < 3; i++) {
mTexture[i] = mTexture[i + 1];
@@ -1152,13 +1154,13 @@ bool J2DTevBlock4::setFont(ResFONT* p_font) {
return false;
}
JUTResFont* resFont = new JUTResFont(p_font, NULL);
JUTResFont* resFont = JKR_NEW JUTResFont(p_font, NULL);
if (resFont == NULL) {
return false;
}
if (mUndeleteFlag & 0x80) {
delete mFont;
JKR_DELETE(mFont);
}
mFont = resFont;
@@ -1172,7 +1174,7 @@ bool J2DTevBlock4::setFont(JUTFont* p_font) {
}
if (mUndeleteFlag & 0x80) {
delete mFont;
JKR_DELETE(mFont);
}
mFont = (JUTResFont*)p_font;
@@ -1187,7 +1189,7 @@ bool J2DTevBlock4::setPalette(u32 param_0, ResTLUT const* p_tlut) {
if (p_tlut != NULL) {
if (mPalette[param_0] == NULL) {
mPalette[param_0] = new JUTPalette((GXTlut)param_0, (ResTLUT*)p_tlut);
mPalette[param_0] = JKR_NEW JUTPalette((GXTlut)param_0, (ResTLUT*)p_tlut);
if (mPalette[param_0] == NULL) {
return false;
@@ -1200,7 +1202,7 @@ bool J2DTevBlock4::setPalette(u32 param_0, ResTLUT const* p_tlut) {
mTexture[param_0]->attachPalette(mPalette[param_0]);
}
} else {
delete mPalette[param_0];
JKR_DELETE(mPalette[param_0]);
mPalette[param_0] = NULL;
}
@@ -1285,13 +1287,13 @@ J2DTevBlock8::J2DTevBlock8() {
J2DTevBlock8::~J2DTevBlock8() {
for (int i = 0; i < 8; i++) {
if (mUndeleteFlag & (1 << i)) {
delete mTexture[i];
JKR_DELETE(mTexture[i]);
}
delete mPalette[i];
JKR_DELETE(mPalette[i]);
}
if (mFontUndeleteFlag) {
delete mFont;
JKR_DELETE(mFont);
}
}
@@ -1337,7 +1339,7 @@ bool J2DTevBlock8::prepareTexture(u8 param_0) {
}
if (mTexture[i] == NULL) {
mTexture[i] = new JUTTexture();
mTexture[i] = JKR_NEW JUTTexture();
if (mTexture[i] == NULL) {
return false;
@@ -1394,7 +1396,7 @@ bool J2DTevBlock8::insertTexture(u32 param_0, ResTIMG const* p_timg, JUTPalette*
}
JUTTexture* texture;
if (!mTexture[idx]) {
texture = new JUTTexture(p_timg, local_43);
texture = JKR_NEW JUTTexture(p_timg, local_43);
if (!texture) {
return false;
}
@@ -1462,7 +1464,7 @@ bool J2DTevBlock8::insertTexture(u32 param_0, JUTTexture* p_tex) {
if (mTexture[7] != NULL && mTexture[7]->getTexInfo() == NULL) {
if (mUndeleteFlag & 0x80) {
delete mTexture[7];
JKR_DELETE(mTexture[7]);
}
mUndeleteFlag &= ~0x80;
@@ -1514,7 +1516,7 @@ bool J2DTevBlock8::setTexture(u32 param_0, ResTIMG const* p_timg) {
if (mTexture[param_0] == NULL) {
if (p_timg != NULL) {
mTexture[param_0] = new JUTTexture(p_timg, tlutid);
mTexture[param_0] = JKR_NEW JUTTexture(p_timg, tlutid);
if (mTexture[param_0] == NULL) {
return false;
@@ -1528,7 +1530,7 @@ bool J2DTevBlock8::setTexture(u32 param_0, ResTIMG const* p_timg) {
if (p_timg != NULL) {
mTexture[param_0]->storeTIMG(p_timg, tlutid);
} else {
delete mTexture[param_0];
JKR_DELETE(mTexture[param_0]);
mTexture[param_0] = NULL;
mUndeleteFlag &= ~(1 << param_0);
}
@@ -1536,7 +1538,7 @@ bool J2DTevBlock8::setTexture(u32 param_0, ResTIMG const* p_timg) {
mTexture[param_0] = NULL;
if (p_timg != NULL) {
mTexture[param_0] = new JUTTexture(p_timg, 0);
mTexture[param_0] = JKR_NEW JUTTexture(p_timg, 0);
if (mTexture[param_0] == NULL) {
return false;
@@ -1546,7 +1548,7 @@ bool J2DTevBlock8::setTexture(u32 param_0, ResTIMG const* p_timg) {
}
}
delete mPalette[param_0];
JKR_DELETE(mPalette[param_0]);
mPalette[param_0] = NULL;
mTexNo[param_0] = -1;
return true;
@@ -1558,12 +1560,12 @@ bool J2DTevBlock8::setTexture(u32 param_0, JUTTexture* p_tex) {
}
if (mUndeleteFlag & (1 << param_0)) {
delete mTexture[param_0];
JKR_DELETE(mTexture[param_0]);
}
mTexture[param_0] = p_tex;
mUndeleteFlag &= ~(1 << param_0);
delete mPalette[param_0];
JKR_DELETE(mPalette[param_0]);
mPalette[param_0] = NULL;
mTexNo[param_0] = -1;
return true;
@@ -1575,9 +1577,9 @@ bool J2DTevBlock8::removeTexture(u32 param_0) {
}
if (mUndeleteFlag & (1 << param_0)) {
delete mTexture[param_0];
JKR_DELETE(mTexture[param_0]);
}
delete mPalette[param_0];
JKR_DELETE(mPalette[param_0]);
for (u32 i = param_0; i < 7; i++) {
mTexture[i] = mTexture[i + 1];
@@ -1597,13 +1599,13 @@ bool J2DTevBlock8::setFont(ResFONT* p_font) {
return false;
}
JUTResFont* resFont = new JUTResFont(p_font, NULL);
JUTResFont* resFont = JKR_NEW JUTResFont(p_font, NULL);
if (resFont == NULL) {
return false;
}
if (mFontUndeleteFlag) {
delete mFont;
JKR_DELETE(mFont);
}
mFont = resFont;
@@ -1617,7 +1619,7 @@ bool J2DTevBlock8::setFont(JUTFont* p_font) {
}
if (mFontUndeleteFlag) {
delete mFont;
JKR_DELETE(mFont);
}
mFont = (JUTResFont*)p_font;
@@ -1632,7 +1634,7 @@ bool J2DTevBlock8::setPalette(u32 param_0, ResTLUT const* p_tlut) {
if (p_tlut != NULL) {
if (mPalette[param_0] == NULL) {
mPalette[param_0] = new JUTPalette((GXTlut)param_0, (ResTLUT*)p_tlut);
mPalette[param_0] = JKR_NEW JUTPalette((GXTlut)param_0, (ResTLUT*)p_tlut);
if (mPalette[param_0] == NULL) {
return false;
@@ -1645,7 +1647,7 @@ bool J2DTevBlock8::setPalette(u32 param_0, ResTLUT const* p_tlut) {
mTexture[param_0]->attachPalette(mPalette[param_0]);
}
} else {
delete mPalette[param_0];
JKR_DELETE(mPalette[param_0]);
mPalette[param_0] = NULL;
}
@@ -1725,13 +1727,13 @@ J2DTevBlock16::J2DTevBlock16() {
J2DTevBlock16::~J2DTevBlock16() {
for (int i = 0; i < 8; i++) {
if (mUndeleteFlag & (1 << i)) {
delete mTexture[i];
JKR_DELETE(mTexture[i]);
}
delete mPalette[i];
JKR_DELETE(mPalette[i]);
}
if (mFontUndeleteFlag) {
delete mFont;
JKR_DELETE(mFont);
}
}
@@ -1777,7 +1779,7 @@ bool J2DTevBlock16::prepareTexture(u8 param_0) {
}
if (mTexture[i] == NULL) {
mTexture[i] = new JUTTexture();
mTexture[i] = JKR_NEW JUTTexture();
if (mTexture[i] == NULL) {
return false;
@@ -1834,7 +1836,7 @@ bool J2DTevBlock16::insertTexture(u32 param_0, ResTIMG const* p_timg, JUTPalette
}
JUTTexture* texture;
if (!mTexture[idx]) {
texture = new JUTTexture(p_timg, local_43);
texture = JKR_NEW JUTTexture(p_timg, local_43);
if (!texture) {
return false;
}
@@ -1902,7 +1904,7 @@ bool J2DTevBlock16::insertTexture(u32 param_0, JUTTexture* p_tex) {
if (mTexture[7] != NULL && mTexture[7]->getTexInfo() == NULL) {
if (mUndeleteFlag & 0x80) {
delete mTexture[7];
JKR_DELETE(mTexture[7]);
}
mUndeleteFlag &= ~0x80;
@@ -1954,7 +1956,7 @@ bool J2DTevBlock16::setTexture(u32 param_0, ResTIMG const* p_timg) {
if (mTexture[param_0] == NULL) {
if (p_timg != NULL) {
mTexture[param_0] = new JUTTexture(p_timg, tlutid);
mTexture[param_0] = JKR_NEW JUTTexture(p_timg, tlutid);
if (mTexture[param_0] == NULL) {
return false;
@@ -1968,7 +1970,7 @@ bool J2DTevBlock16::setTexture(u32 param_0, ResTIMG const* p_timg) {
if (p_timg != NULL) {
mTexture[param_0]->storeTIMG(p_timg, tlutid);
} else {
delete mTexture[param_0];
JKR_DELETE(mTexture[param_0]);
mTexture[param_0] = NULL;
mUndeleteFlag &= ~(1 << param_0);
}
@@ -1976,7 +1978,7 @@ bool J2DTevBlock16::setTexture(u32 param_0, ResTIMG const* p_timg) {
mTexture[param_0] = NULL;
if (p_timg != NULL) {
mTexture[param_0] = new JUTTexture(p_timg, 0);
mTexture[param_0] = JKR_NEW JUTTexture(p_timg, 0);
if (mTexture[param_0] == NULL) {
return false;
@@ -1986,7 +1988,7 @@ bool J2DTevBlock16::setTexture(u32 param_0, ResTIMG const* p_timg) {
}
}
delete mPalette[param_0];
JKR_DELETE(mPalette[param_0]);
mPalette[param_0] = NULL;
mTexNo[param_0] = -1;
return true;
@@ -1998,12 +2000,12 @@ bool J2DTevBlock16::setTexture(u32 param_0, JUTTexture* p_tex) {
}
if (mUndeleteFlag & (1 << param_0)) {
delete mTexture[param_0];
JKR_DELETE(mTexture[param_0]);
}
mTexture[param_0] = p_tex;
mUndeleteFlag &= ~(1 << param_0);
delete mPalette[param_0];
JKR_DELETE(mPalette[param_0]);
mPalette[param_0] = NULL;
mTexNo[param_0] = -1;
return true;
@@ -2015,9 +2017,9 @@ bool J2DTevBlock16::removeTexture(u32 param_0) {
}
if (mUndeleteFlag & (1 << param_0)) {
delete mTexture[param_0];
JKR_DELETE(mTexture[param_0]);
}
delete mPalette[param_0];
JKR_DELETE(mPalette[param_0]);
for (u32 i = param_0; i < 7; i++) {
mTexture[i] = mTexture[i + 1];
@@ -2037,13 +2039,13 @@ bool J2DTevBlock16::setFont(ResFONT* p_font) {
return false;
}
JUTResFont* resFont = new JUTResFont(p_font, NULL);
JUTResFont* resFont = JKR_NEW JUTResFont(p_font, NULL);
if (resFont == NULL) {
return false;
}
if (mFontUndeleteFlag) {
delete mFont;
JKR_DELETE(mFont);
}
mFont = resFont;
@@ -2057,7 +2059,7 @@ bool J2DTevBlock16::setFont(JUTFont* p_font) {
}
if (mFontUndeleteFlag) {
delete mFont;
JKR_DELETE(mFont);
}
mFont = (JUTResFont*)p_font;
@@ -2072,7 +2074,7 @@ bool J2DTevBlock16::setPalette(u32 param_0, ResTLUT const* p_tlut) {
if (p_tlut != NULL) {
if (mPalette[param_0] == NULL) {
mPalette[param_0] = new JUTPalette((GXTlut)param_0, (ResTLUT*)p_tlut);
mPalette[param_0] = JKR_NEW JUTPalette((GXTlut)param_0, (ResTLUT*)p_tlut);
if (mPalette[param_0] == NULL) {
return false;
@@ -2085,7 +2087,7 @@ bool J2DTevBlock16::setPalette(u32 param_0, ResTLUT const* p_tlut) {
mTexture[param_0]->attachPalette(mPalette[param_0]);
}
} else {
delete mPalette[param_0];
JKR_DELETE(mPalette[param_0]);
mPalette[param_0] = NULL;
}
+18 -18
View File
@@ -18,9 +18,9 @@ J2DMaterial::J2DMaterial() {
}
J2DMaterial::~J2DMaterial() {
delete mTevBlock;
delete mIndBlock;
delete mAnmPointer;
JKR_DELETE(mTevBlock);
JKR_DELETE(mIndBlock);
JKR_DELETE(mAnmPointer);
}
void J2DMaterial::setGX() {
@@ -45,27 +45,27 @@ J2DTevBlock* J2DMaterial::createTevBlock(int block_type, bool noAlign) {
if (noAlign) {
if (block_type <= 1) {
block = new J2DTevBlock1();
block = JKR_NEW J2DTevBlock1();
} else if (block_type == 2) {
block = new J2DTevBlock2();
block = JKR_NEW J2DTevBlock2();
} else if (block_type <= 4) {
block = new J2DTevBlock4();
block = JKR_NEW J2DTevBlock4();
} else if (block_type <= 8) {
block = new J2DTevBlock8();
block = JKR_NEW J2DTevBlock8();
} else {
block = new J2DTevBlock16();
block = JKR_NEW J2DTevBlock16();
}
} else {
if (block_type <= 1) {
block = new (-4) J2DTevBlock1();
block = JKR_NEW_ARGS (-4) J2DTevBlock1();
} else if (block_type == 2) {
block = new (-4) J2DTevBlock2();
block = JKR_NEW_ARGS (-4) J2DTevBlock2();
} else if (block_type <= 4) {
block = new (-4) J2DTevBlock4();
block = JKR_NEW_ARGS (-4) J2DTevBlock4();
} else if (block_type <= 8) {
block = new (-4) J2DTevBlock8();
block = JKR_NEW_ARGS (-4) J2DTevBlock8();
} else {
block = new (-4) J2DTevBlock16();
block = JKR_NEW_ARGS (-4) J2DTevBlock16();
}
}
ASSERTMSGLINE(101, block, "Error : allocate memory.");
@@ -78,15 +78,15 @@ J2DIndBlock* J2DMaterial::createIndBlock(int block_type, bool noAlign) {
if (noAlign) {
if (block_type != 0) {
block = new J2DIndBlockFull();
block = JKR_NEW J2DIndBlockFull();
} else {
block = new J2DIndBlockNull();
block = JKR_NEW J2DIndBlockNull();
}
} else {
if (block_type != 0) {
block = new (-4) J2DIndBlockFull();
block = JKR_NEW_ARGS (-4) J2DIndBlockFull();
} else {
block = new (-4) J2DIndBlockNull();
block = JKR_NEW_ARGS (-4) J2DIndBlockNull();
}
}
ASSERTMSGLINE(133, block, "Error : allocate memory.");
@@ -122,7 +122,7 @@ void J2DMaterial::makeAnmPointer() {
int r29;
int r28;
if (mAnmPointer == NULL) {
mAnmPointer = new J2DMaterialAnmPointer();
mAnmPointer = JKR_NEW J2DMaterialAnmPointer();
r29 = 1;
if (mAnmPointer == NULL) {
OS_PANIC(171, "Error : allocate memory.");
@@ -228,7 +228,7 @@ J2DTexMtx* J2DMaterialFactory::newTexMtx(int param_0, int param_1) const {
J2DTexMtx* rv = NULL;
J2DMaterialInitData* iVar2 = &mpMaterialInitData[mpMaterialID[param_0]];
if (iVar2->field_0x24[param_1] != 0xffff) {
rv = new J2DTexMtx(mpTexMtxInfo[iVar2->field_0x24[param_1]]);
rv = JKR_NEW J2DTexMtx(mpTexMtxInfo[iVar2->field_0x24[param_1]]);
rv->calc();
}
return rv;
+1 -1
View File
@@ -210,7 +210,7 @@ void J2DPane::changeUseTrans(J2DPane* p_pane) {
J2DPane::~J2DPane() {
JSUTreeIterator<J2DPane> iterator = mPaneTree.getFirstChild();
for (; iterator != mPaneTree.getEndChild();) {
delete (iterator++).getObject();
JKR_DELETE((iterator++).getObject());
}
}
+10 -10
View File
@@ -208,12 +208,12 @@ void J2DPicture::private_readStream(J2DPane* parent, JSURandomInputStream* strea
field_0x109 = 1;
if (img != NULL) {
mTexture[0] = new JUTTexture(img, 0);
mTexture[0] = JKR_NEW JUTTexture(img, 0);
mTextureNum++;
}
if (lut != NULL) {
mPalette = new JUTPalette(GX_TLUT0, lut);
mPalette = JKR_NEW JUTPalette(GX_TLUT0, lut);
mTexture[0]->attachPalette(mPalette);
}
@@ -237,7 +237,7 @@ void J2DPicture::private_initiate(const ResTIMG* timg, const ResTLUT* tlut) {
if (timg != NULL) {
if (mTexture[0] == NULL) {
mTexture[0] = new JUTTexture(timg, 0);
mTexture[0] = JKR_NEW JUTTexture(timg, 0);
if (mTexture[0] != NULL) {
mTextureNum++;
field_0x109 = (field_0x109 & 2) | 1;
@@ -251,7 +251,7 @@ void J2DPicture::private_initiate(const ResTIMG* timg, const ResTLUT* tlut) {
mPalette = NULL;
if (tlut && mPalette == NULL) {
mPalette = new JUTPalette(GX_TLUT0, const_cast<ResTLUT*>(tlut));
mPalette = JKR_NEW JUTPalette(GX_TLUT0, const_cast<ResTLUT*>(tlut));
if (mTexture[0] != NULL) {
mTexture[0]->attachPalette(mPalette);
}
@@ -272,11 +272,11 @@ void J2DPicture::initinfo() {
J2DPicture::~J2DPicture() {
for (int i = 0; i < 2; i++) {
if ((int)(field_0x109 & 1 << i) != 0) {
delete mTexture[i];
JKR_DELETE(mTexture[i]);
}
}
delete mPalette;
JKR_DELETE(mPalette);
}
bool J2DPicture::prepareTexture(u8 param_0) {
@@ -286,7 +286,7 @@ bool J2DPicture::prepareTexture(u8 param_0) {
}
if (mTexture[i] == NULL) {
mTexture[i] = new JUTTexture();
mTexture[i] = JKR_NEW JUTTexture();
if (mTexture[i] == NULL) {
return 0;
@@ -309,7 +309,7 @@ bool J2DPicture::insert(ResTIMG const* img, JUTPalette* palette, u8 param_2, f32
JUTTexture* var_r31;
if (mTexture[mTextureNum] == NULL) {
var_r31 = new JUTTexture(img, var_r26);
var_r31 = JKR_NEW JUTTexture(img, var_r26);
if (palette != NULL) {
var_r31->storeTIMG(img, palette);
@@ -381,7 +381,7 @@ bool J2DPicture::insert(JUTTexture* texture, u8 param_1, f32 param_2) {
}
if (mTexture[1] != NULL && field_0x109 & 2) {
delete mTexture[1];
JKR_DELETE(mTexture[1]);
field_0x109 &= 1;
}
@@ -417,7 +417,7 @@ bool J2DPicture::remove(u8 param_0) {
}
if (field_0x109 & (1 << param_0)) {
delete mTexture[param_0];
JKR_DELETE(mTexture[param_0]);
}
for (u8 i = param_0; i < mTextureNum - 1; i++) {
+5 -5
View File
@@ -62,7 +62,7 @@ J2DPictureEx::J2DPictureEx(J2DPane* param_0, JSURandomInputStream* param_1, u32
J2DPictureEx::~J2DPictureEx() {
if (field_0x190) {
delete mMaterial;
JKR_DELETE(mMaterial);
}
}
@@ -1136,11 +1136,11 @@ void J2DPictureEx::setAnimation(J2DAnmVtxColor* anm) {
for (u16 j = 0; j < anm_table_num; j++) {
#if DEBUG
J3DAnmVtxColorIndexData* data = anm->getAnmVtxColorIndexData(0, j);
u16* index2 = anm->getVtxColorIndexPointer(0) + (uintptr_t)data->mpData;
BE(u16)* index2 = anm->getVtxColorIndexPointer(0) + (uintptr_t)data->mpData;
#else
J3DAnmVtxColorIndexData* data = anm->getAnmVtxColorIndexData(0, j);
u16* index = anm->getVtxColorIndexPointer(0);
u16* index2 = index + (uintptr_t)data->mpData;
BE(u16)* index = anm->getVtxColorIndexPointer(0);
BE(u16)* index2 = index + (uintptr_t)data->mpData;
#endif
for (u16 k = 0; k < data->mNum; k++) {
if (index2[k] == field_0x158[i]) {
@@ -1177,7 +1177,7 @@ const J2DAnmTransform* J2DPictureEx::animationPane(J2DAnmTransform const* anm) {
if (field_0x19c & (1 << i)) {
for (u16 j = 0; j < anm_table_num; j++) {
J3DAnmVtxColorIndexData* data = field_0x198->getAnmVtxColorIndexData(0, j);
u16* index = field_0x198->getVtxColorIndexPointer(0) + (uintptr_t)data->mpData;
BE(u16)* index = field_0x198->getVtxColorIndexPointer(0) + (uintptr_t)data->mpData;
for (u16 k = 0; k < data->mNum; k++) {
if (index[k] == field_0x158[i]) {
field_0x198->getColor(0, j, &mCornerColor[i]);
+2 -2
View File
@@ -90,10 +90,10 @@ u8* J2DPrint::setBuffer(size_t size) {
u8* u8Buff = (u8*)mStrBuff;
if (sStrBufInitialized) {
delete mStrBuff;
JKR_DELETE(mStrBuff);
}
mStrBuff = new (JKRGetSystemHeap(), 0) char[size];
mStrBuff = JKR_NEW_ARGS (JKRGetSystemHeap(), 0) char[size];
mStrBuffSize = size;
sStrBufInitialized = true;
return u8Buff;
+27 -27
View File
@@ -27,19 +27,19 @@ J2DScreen::~J2DScreen() {
}
void J2DScreen::clean() {
delete[] mMaterials;
JKR_DELETE_ARRAY(mMaterials);
mMaterialNum = 0;
mMaterials = NULL;
delete[] mTexRes;
JKR_DELETE_ARRAY(mTexRes);
mTexRes = NULL;
delete[] mFontRes;
JKR_DELETE_ARRAY(mFontRes);
mFontRes = NULL;
if (mNameTable != NULL) {
delete[] mNameTable->getResNameTable();
delete mNameTable;
JKR_DELETE_ARRAY(mNameTable->getResNameTable());
JKR_DELETE(mNameTable);
mNameTable = NULL;
}
}
@@ -176,40 +176,40 @@ J2DPane* J2DScreen::createPane(J2DScrnBlockHeader const& header, JSURandomInputS
switch (header.mTag) {
case 'PAN1':
newPane = new J2DPane(p_basePane, p_stream, 0);
newPane = JKR_NEW J2DPane(p_basePane, p_stream, 0);
break;
case 'WIN1':
newPane = new J2DWindow(p_basePane, p_stream, p_archive);
newPane = JKR_NEW J2DWindow(p_basePane, p_stream, p_archive);
break;
case 'PIC1':
newPane = new J2DPicture(p_basePane, p_stream, p_archive);
newPane = JKR_NEW J2DPicture(p_basePane, p_stream, p_archive);
break;
case 'TBX1':
newPane = new J2DTextBox(p_basePane, p_stream, p_archive);
newPane = JKR_NEW J2DTextBox(p_basePane, p_stream, p_archive);
break;
case 'PAN2':
newPane = new J2DPane(p_basePane, p_stream, 1);
newPane = JKR_NEW J2DPane(p_basePane, p_stream, 1);
break;
case 'WIN2':
if (param_3 & 0x1F0000) {
newPane = new J2DWindowEx(p_basePane, p_stream, param_3, mMaterials);
newPane = JKR_NEW J2DWindowEx(p_basePane, p_stream, param_3, mMaterials);
break;
}
newPane = new J2DWindow(p_basePane, p_stream, mMaterials);
newPane = JKR_NEW J2DWindow(p_basePane, p_stream, mMaterials);
break;
case 'PIC2':
if (param_3 & 0x1F0000) {
newPane = new J2DPictureEx(p_basePane, p_stream, param_3, mMaterials);
newPane = JKR_NEW J2DPictureEx(p_basePane, p_stream, param_3, mMaterials);
break;
}
newPane = new J2DPicture(p_basePane, p_stream, mMaterials);
newPane = JKR_NEW J2DPicture(p_basePane, p_stream, mMaterials);
break;
case 'TBX2':
if (param_3 & 0x1F0000) {
newPane = new J2DTextBoxEx(p_basePane, p_stream, param_3, mMaterials);
newPane = JKR_NEW J2DTextBoxEx(p_basePane, p_stream, param_3, mMaterials);
break;
}
newPane = new J2DTextBox(p_basePane, p_stream, param_3, mMaterials);
newPane = JKR_NEW J2DTextBox(p_basePane, p_stream, param_3, mMaterials);
break;
default:
JUT_WARN(446, "%s", "unknown pane");
@@ -217,7 +217,7 @@ J2DPane* J2DScreen::createPane(J2DScrnBlockHeader const& header, JSURandomInputS
s32 size = header.mSize;
s32 start = size + position;
newPane = new J2DPane(p_basePane, p_stream, 0);
newPane = JKR_NEW J2DPane(p_basePane, p_stream, 0);
p_stream->seek(start, JSUStreamSeekFrom_SET);
break;
}
@@ -321,9 +321,9 @@ J2DResReference* J2DScreen::getResReference(JSURandomInputStream* p_stream, u32
char* buffer;
if (param_1 & 0x1F0000) {
buffer = new char[size1];
buffer = JKR_NEW char[size1];
} else {
buffer = new (-4) char[size1];
buffer = JKR_NEW_ARGS (-4) char[size1];
}
if (buffer != NULL) {
@@ -343,12 +343,12 @@ bool J2DScreen::createMaterial(JSURandomInputStream* p_stream, u32 param_1, JKRA
p_stream->skip(2);
if (param_1 & 0x1F0000) {
mMaterials = new J2DMaterial[mMaterialNum];
mMaterials = JKR_NEW J2DMaterial[mMaterialNum];
} else {
mMaterials = new (-4) J2DMaterial[mMaterialNum];
mMaterials = JKR_NEW_ARGS (-4) J2DMaterial[mMaterialNum];
}
u8* buffer = new (-4) u8[header.mSize];
u8* buffer = JKR_NEW_ARGS (-4) u8[header.mSize];
if (mMaterials != NULL && buffer != NULL) {
J2DMaterialBlock* pBlock = (J2DMaterialBlock*)buffer;
p_stream->seek(position, JSUStreamSeekFrom_SET);
@@ -372,7 +372,7 @@ bool J2DScreen::createMaterial(JSURandomInputStream* p_stream, u32 param_1, JKRA
}
size++;
u8* nametab = new u8[size];
u8* nametab = JKR_NEW u8[size];
if (nametab == NULL) {
goto failure;
}
@@ -380,20 +380,20 @@ bool J2DScreen::createMaterial(JSURandomInputStream* p_stream, u32 param_1, JKRA
nametab[i] = (buffer + offset)[i];
}
mNameTable = new JUTNameTab((ResNTAB*)nametab);
mNameTable = JKR_NEW JUTNameTab((ResNTAB*)nametab);
if (mNameTable == NULL) {
delete[] nametab;
JKR_DELETE_ARRAY(nametab);
goto failure;
}
}
success:
delete[] buffer;
JKR_DELETE_ARRAY(buffer);
return true;
}
failure:
delete[] buffer;
JKR_DELETE_ARRAY(buffer);
clean();
return false;
}
+13 -13
View File
@@ -74,13 +74,13 @@ J2DTextBox::J2DTextBox(J2DPane* p_pane, JSURandomInputStream* p_stream, u32 para
mStringPtr = NULL;
if (strLength != 0) {
mStringPtr = new char[strLength];
mStringPtr = JKR_NEW char[strLength];
}
if (mStringPtr != NULL) {
mStringLength = strLength;
u16 var_r26_2 = strLength - 1 < info.field_0x1e ? u16(strLength - 1) : info.field_0x1e;
u16 var_r26_2 = strLength - 1 < info.field_0x1e ? u16(strLength - 1) : (u16)info.field_0x1e;
p_stream->peek(mStringPtr, var_r26_2);
mStringPtr[var_r26_2] = 0;
@@ -121,7 +121,7 @@ J2DTextBox::J2DTextBox(u64 tag, JGeometry::TBox2<f32> const& bounds, ResFONT con
void J2DTextBox::initiate(ResFONT const* p_font, char const* string, s16 length,
J2DTextBoxHBinding hBind, J2DTextBoxVBinding vBind) {
if (p_font != NULL) {
mFont = new JUTResFont(p_font, NULL);
mFont = JKR_NEW JUTResFont(p_font, NULL);
}
mCharColor.set(0xFFFFFFFF);
@@ -144,7 +144,7 @@ void J2DTextBox::initiate(ResFONT const* p_font, char const* string, s16 length,
stringLen = len + 1;
}
mStringPtr = new char[stringLen];
mStringPtr = JKR_NEW char[stringLen];
if (stringLen != 0 && mStringPtr != NULL) {
strncpy(mStringPtr, string, stringLen - 1);
@@ -185,7 +185,7 @@ void J2DTextBox::private_readStream(J2DPane* p_pane, JSURandomInputStream* p_str
ResFONT* fontPtr = (ResFONT*)getPointer(p_stream, 'FONT', p_archive);
if (fontPtr != NULL) {
mFont = new JUTResFont(fontPtr, NULL);
mFont = JKR_NEW JUTResFont(fontPtr, NULL);
}
mCharColor.set(p_stream->read32b());
@@ -198,7 +198,7 @@ void J2DTextBox::private_readStream(J2DPane* p_pane, JSURandomInputStream* p_str
mFontSizeY = p_stream->read16b();
s16 stringLen = p_stream->read16b();
mStringPtr = new char[stringLen + 1];
mStringPtr = JKR_NEW char[stringLen + 1];
if (mStringPtr != NULL) {
p_stream->read(mStringPtr, stringLen);
@@ -240,16 +240,16 @@ void J2DTextBox::private_readStream(J2DPane* p_pane, JSURandomInputStream* p_str
J2DTextBox::~J2DTextBox() {
if (mTextFontOwned) {
delete mFont;
JKR_DELETE(mFont);
}
delete[] mStringPtr;
JKR_DELETE_ARRAY(mStringPtr);
}
void J2DTextBox::setFont(JUTFont* p_font) {
if (p_font) {
if (mTextFontOwned) {
delete mFont;
JKR_DELETE(mFont);
}
mFont = p_font;
mTextFontOwned = false;
@@ -317,7 +317,7 @@ s32 J2DTextBox::setString(char const* string, ...) {
va_list args;
va_start(args, string);
delete[] mStringPtr;
JKR_DELETE_ARRAY(mStringPtr);
u32 len = strlen(string);
@@ -326,7 +326,7 @@ s32 J2DTextBox::setString(char const* string, ...) {
}
mStringLength = 0;
mStringPtr = new char[len + 1];
mStringPtr = JKR_NEW char[len + 1];
if (mStringPtr) {
mStringLength = len + 1;
@@ -341,7 +341,7 @@ s32 J2DTextBox::setString(s16 length, char const* string, ...) {
va_list args;
va_start(args, string);
delete[] mStringPtr;
JKR_DELETE_ARRAY(mStringPtr);
mStringPtr = NULL;
u32 len = strlen(string);
@@ -357,7 +357,7 @@ s32 J2DTextBox::setString(s16 length, char const* string, ...) {
mStringLength = 0;
if (stringLen != 0) {
mStringPtr = new char[stringLen];
mStringPtr = JKR_NEW char[stringLen];
}
if (mStringPtr != NULL) {
+3 -3
View File
@@ -65,13 +65,13 @@ J2DTextBoxEx::J2DTextBoxEx(J2DPane* p_pane, JSURandomInputStream* p_stream, u32
mStringPtr = NULL;
if (strLength != 0) {
mStringPtr = new char[strLength];
mStringPtr = JKR_NEW char[strLength];
}
if (mStringPtr != NULL) {
mStringLength = strLength;
u16 var_r26_2 = strLength - 1 < info.field_0x1e ? u16(strLength - 1) : info.field_0x1e;
u16 var_r26_2 = strLength - 1 < info.field_0x1e ? u16(strLength - 1) : (u16)info.field_0x1e;
p_stream->peek(mStringPtr, var_r26_2);
mStringPtr[var_r26_2] = 0;
@@ -88,7 +88,7 @@ J2DTextBoxEx::J2DTextBoxEx(J2DPane* p_pane, JSURandomInputStream* p_stream, u32
J2DTextBoxEx::~J2DTextBoxEx() {
if (field_0x140 != 0) {
delete mMaterial;
JKR_DELETE(mMaterial);
}
}
+17 -17
View File
@@ -150,19 +150,19 @@ J2DWindow::J2DWindow(u64 param_0, const JGeometry::TBox2<f32>& param_1, const ch
void J2DWindow::initiate(const ResTIMG* param_0, const ResTIMG* param_1, const ResTIMG* param_2, const ResTIMG* param_3, const ResTLUT* param_4, J2DWindowMirror param_5, const JGeometry::TBox2<f32>& param_6) {
if (param_0) {
field_0x100 = new JUTTexture(param_0, 0);
field_0x100 = JKR_NEW JUTTexture(param_0, 0);
}
if (param_1) {
field_0x104 = new JUTTexture(param_1, 0);
field_0x104 = JKR_NEW JUTTexture(param_1, 0);
}
if (param_2) {
field_0x108 = new JUTTexture(param_2, 0);
field_0x108 = JKR_NEW JUTTexture(param_2, 0);
}
if (param_3) {
field_0x10c = new JUTTexture(param_3, 0);
field_0x10c = JKR_NEW JUTTexture(param_3, 0);
}
if (param_4) {
mPalette = new JUTPalette(GX_TLUT0, const_cast<ResTLUT*>(param_4));
mPalette = JKR_NEW JUTPalette(GX_TLUT0, const_cast<ResTLUT*>(param_4));
}
field_0x144 = param_5;
if (field_0x100 && field_0x104 && field_0x108 && field_0x10c) {
@@ -189,23 +189,23 @@ void J2DWindow::private_readStream(J2DPane* param_0, JSURandomInputStream* param
field_0x114.set(f31, f30, f29, f28);
ResTIMG* timg = (ResTIMG*)getPointer(param_1, 'TIMG', param_2);
if (timg) {
field_0x100 = new JUTTexture(timg, 0);
field_0x100 = JKR_NEW JUTTexture(timg, 0);
}
timg = (ResTIMG*)getPointer(param_1, 'TIMG', param_2);
if (timg) {
field_0x104 = new JUTTexture(timg, 0);
field_0x104 = JKR_NEW JUTTexture(timg, 0);
}
timg = (ResTIMG*)getPointer(param_1, 'TIMG', param_2);
if (timg) {
field_0x108 = new JUTTexture(timg, 0);
field_0x108 = JKR_NEW JUTTexture(timg, 0);
}
timg = (ResTIMG*)getPointer(param_1, 'TIMG', param_2);
if (timg) {
field_0x10c = new JUTTexture(timg, 0);
field_0x10c = JKR_NEW JUTTexture(timg, 0);
}
ResTLUT* tlut = (ResTLUT*)getPointer(param_1, 'TLUT', param_2);
if (tlut) {
mPalette = new JUTPalette(GX_TLUT0, tlut);
mPalette = JKR_NEW JUTPalette(GX_TLUT0, tlut);
}
field_0x144 = param_1->read8b();
field_0x128.set(param_1->read32b());
@@ -218,7 +218,7 @@ void J2DWindow::private_readStream(J2DPane* param_0, JSURandomInputStream* param
int unused;
timg = (ResTIMG*)getPointer(param_1, 'TIMG', param_2);
if (timg) {
field_0x110 = new JUTTexture(timg, 0);
field_0x110 = JKR_NEW JUTTexture(timg, 0);
}
r27--;
}
@@ -288,12 +288,12 @@ J2DWindowMirror J2DWindow::convertMirror(J2DTextureBase texBase) {
}
J2DWindow::~J2DWindow() {
delete field_0x100;
delete field_0x104;
delete field_0x108;
delete field_0x10c;
delete mPalette;
delete field_0x110;
JKR_DELETE(field_0x100);
JKR_DELETE(field_0x104);
JKR_DELETE(field_0x108);
JKR_DELETE(field_0x10c);
JKR_DELETE(mPalette);
JKR_DELETE(field_0x110);
}
void J2DWindow::draw(JGeometry::TBox2<f32> const& param_0) {
+4 -4
View File
@@ -112,12 +112,12 @@ void J2DWindowEx::setMinSize() {
J2DWindowEx::~J2DWindowEx() {
for (u8 i = 0; i < 4; i++) {
if (field_0x170 & (1 << i)) {
delete mFrameMaterial[i];
JKR_DELETE(mFrameMaterial[i]);
}
}
if (field_0x170 & 0x10) {
delete mContentsMaterial;
JKR_DELETE(mContentsMaterial);
}
}
@@ -759,7 +759,7 @@ void J2DWindowEx::setAnimation(J2DAnmVtxColor* param_0) {
if (field_0x168[i] != 0xffff) {
for (u16 j = 0; j < uVar3; j++) {
J3DAnmVtxColorIndexData* puVar1 = param_0->getAnmVtxColorIndexData(0, j);
u16* indexPointer2 =
BE(u16)* indexPointer2 =
param_0->getVtxColorIndexPointer(0) + (uintptr_t)puVar1->mpData;
for (u16 k = 0; k < puVar1->mNum; k++) {
if (indexPointer2[k] == field_0x168[i]) {
@@ -803,7 +803,7 @@ const J2DAnmTransform* J2DWindowEx::animationPane(J2DAnmTransform const* param_0
if ((field_0x17c & (1 << i))) {
for (u16 j = 0; j < uVar3; j++) {
J3DAnmVtxColorIndexData* puVar1 = mAnmVtxColor->getAnmVtxColorIndexData(0, j);
u16* indexPointer2 =
BE(u16)* indexPointer2 =
mAnmVtxColor->getVtxColorIndexPointer(0) + (uintptr_t)puVar1->mpData;
for (u16 k = 0; k < puVar1->mNum; k++) {
if (indexPointer2[k] == field_0x168[i]) {
@@ -554,7 +554,7 @@ inline f32 J3DHermiteInterpolation(__REGISTER f32 pp1, __REGISTER s16 const* pp2
}
// clang-format on
return fout;
#else
#else
f32 time1 = (f32)*pp2;
f32 value1 = (f32)*pp3;
f32 tangent1 = (f32)*pp4;
@@ -583,6 +583,18 @@ inline f32 J3DHermiteInterpolation(__REGISTER f32 pp1, __REGISTER s16 const* pp2
#endif
}
inline f32 J3DHermiteInterpolation(f32 p1, BE(f32) const* p2, BE(f32) const* p3, BE(f32) const* p4,
BE(f32) const* p5, BE(f32) const* p6, BE(f32) const* p7) {
return JMAHermiteInterpolation(p1, *p2, *p3, *p4, *p5, *p6, *p7);
}
inline f32 J3DHermiteInterpolation(f32 pp1, BE(s16) const* pp2,
BE(s16) const* pp3, BE(s16) const* pp4,
BE(s16) const* pp5, BE(s16) const* pp6,
BE(s16) const* pp7) {
return JMAHermiteInterpolation(pp1, *pp2, *pp3, *pp4, *pp5, *pp6, *pp7);
}
template<typename T>
f32 J3DGetKeyFrameInterpolation(f32 frame, J3DAnmKeyTableBase* pKeyTable, T* pData) {
J3D_ASSERT_NULLPTR(740, pData != NULL);
@@ -73,8 +73,8 @@ void J3DJointTree::findImportantMtxIndex() {
s32 wEvlpMtxNum = getWEvlpMtxNum();
u32 tableIdx = 0;
u16 drawFullWgtMtxNum = getDrawFullWgtMtxNum();
u16* wEvlpMixIndex = getWEvlpMixMtxIndex();
f32* wEvlpMixWeight = getWEvlpMixWeight();
BE(u16)* wEvlpMixIndex = getWEvlpMixMtxIndex();
BE(f32)* wEvlpMixWeight = getWEvlpMixWeight();
u16* wEvlpImportantMtxIdx = getWEvlpImportantMtxIndex();
// Rigid matrices are easy.
@@ -1,8 +1,9 @@
#include "JSystem/JSystem.h" // IWYU pragma: keep
#include "JSystem/J3DGraphAnimator/J3DMaterialAttach.h"
#include "JSystem/J3DGraphAnimator/J3DMaterialAnm.h"
#include "JSystem/J3DGraphAnimator/J3DMaterialAttach.h"
#include "JSystem/J3DGraphBase/J3DMaterial.h"
#include "JSystem/JKernel/JKRHeap.h"
#include "JSystem/JUtility/JUTAssert.h"
void J3DMaterialTable::clear() {
@@ -153,7 +154,7 @@ int J3DMaterialTable::createTexMtxForAnimator(J3DAnmTextureSRTKey* pTexSRTKey) {
rv = 1;
} else {
if (texMtx != 0xff && material->getTexMtx(texMtx) == NULL) {
J3DTexMtx* mtx = new J3DTexMtx();
J3DTexMtx* mtx = JKR_NEW J3DTexMtx();
rv = 4;
material->setTexMtx(texMtx, mtx);
JUT_WARN(420, "matNo<%d> : texMtx%d nothing !\n", matNo, texMtx);
@@ -1,12 +1,13 @@
#include "JSystem/JSystem.h" // IWYU pragma: keep
#include "JSystem/J3DGraphAnimator/J3DModel.h"
#include "JSystem/J3DGraphAnimator/J3DJoint.h"
#include "JSystem/J3DGraphAnimator/J3DMaterialAnm.h"
#include "JSystem/J3DGraphAnimator/J3DModel.h"
#include "JSystem/J3DGraphAnimator/J3DShapeTable.h"
#include "JSystem/J3DGraphBase/J3DMaterial.h"
#include "JSystem/J3DGraphBase/J3DShapeMtx.h"
#include "JSystem/J3DGraphBase/J3DSys.h"
#include "JSystem/JKernel/JKRHeap.h"
#define J3D_ASSERTMSG(LINE, COND, MSG) JUT_ASSERT_MSG(LINE, (COND) != 0, MSG)
#define J3D_WARN1(LINE, MSG, ARG1) JUT_WARN(LINE, MSG, ARG1)
@@ -41,7 +42,7 @@ s32 J3DModel::entryModelData(J3DModelData* pModelData, u32 mdlFlags, u32 mtxNum)
int ret = kJ3DError_Success;
mModelData = pModelData;
mMtxBuffer = new J3DMtxBuffer();
mMtxBuffer = JKR_NEW J3DMtxBuffer();
if (mMtxBuffer == NULL) {
return kJ3DError_Alloc;
@@ -99,7 +100,7 @@ s32 J3DModel::createShapePacket(J3DModelData* pModelData) {
J3D_ASSERTMSG(173, pModelData != NULL, "Error : null pointer.");
if (pModelData->getShapeNum() != 0) {
mShapePacket = new J3DShapePacket[pModelData->getShapeNum()];
mShapePacket = JKR_NEW J3DShapePacket[pModelData->getShapeNum()];
if (mShapePacket == NULL) {
return kJ3DError_Alloc;
@@ -119,7 +120,7 @@ s32 J3DModel::createMatPacket(J3DModelData* pModelData, u32 mdlFlags) {
s32 ret = 0;
if (pModelData->getMaterialNum() != 0) {
mMatPacket = new J3DMatPacket[pModelData->getMaterialNum()];
mMatPacket = JKR_NEW J3DMatPacket[pModelData->getMaterialNum()];
if (mMatPacket == NULL) {
return kJ3DError_Alloc;
@@ -86,9 +86,9 @@ void J3DModelData::simpleCalcMaterial(u16 idx, Mtx param_1) {
void J3DModelData::syncJ3DSysPointers() const {
j3dSys.setTexture(getTexture());
j3dSys.setVtxPos(getVtxPosArray());
j3dSys.setVtxNrm(getVtxNrmArray());
j3dSys.setVtxCol(getVtxColorArray(0));
j3dSys.setVtxPos(getVtxPosArray(), getVtxNum());
j3dSys.setVtxNrm(getVtxNrmArray(), getNrmNum());
j3dSys.setVtxCol(getVtxColorArray(0), getColNum());
}
void J3DModelData::syncJ3DSysFlags() const {
@@ -93,8 +93,8 @@ s32 J3DMtxBuffer::create(J3DModelData* pModelData, u32 mtxNum) {
J3DError J3DMtxBuffer::createAnmMtx(J3DModelData* pModelData) {
if (pModelData->getJointNum() != 0) {
mpScaleFlagArr = new u8[pModelData->getJointNum()];
mpAnmMtx = new Mtx[pModelData->getJointNum()];
mpScaleFlagArr = JKR_NEW u8[pModelData->getJointNum()];
mpAnmMtx = JKR_NEW Mtx[pModelData->getJointNum()];
mpUserAnmMtx = mpAnmMtx;
}
@@ -110,8 +110,8 @@ J3DError J3DMtxBuffer::createAnmMtx(J3DModelData* pModelData) {
s32 J3DMtxBuffer::createWeightEnvelopeMtx(J3DModelData* pModelData) {
if (pModelData->getWEvlpMtxNum() != 0) {
mpEvlpScaleFlagArr = new u8[pModelData->getWEvlpMtxNum()];
mpWeightEvlpMtx = new Mtx[pModelData->getWEvlpMtxNum()];
mpEvlpScaleFlagArr = JKR_NEW u8[pModelData->getWEvlpMtxNum()];
mpWeightEvlpMtx = JKR_NEW Mtx[pModelData->getWEvlpMtxNum()];
}
if (pModelData->getWEvlpMtxNum() != 0 && mpEvlpScaleFlagArr == NULL)
@@ -132,8 +132,8 @@ s32 J3DMtxBuffer::setNoUseDrawMtx() {
s32 J3DMtxBuffer::createDoubleDrawMtx(J3DModelData* pModelData, u32 mtxNum) {
if (mtxNum != 0) {
for (s32 i = 0; i < 2; i++) {
mpDrawMtxArr[i] = new Mtx*[mtxNum];
mpNrmMtxArr[i] = new Mtx33*[mtxNum];
mpDrawMtxArr[i] = JKR_NEW Mtx*[mtxNum];
mpNrmMtxArr[i] = JKR_NEW Mtx33*[mtxNum];
mpBumpMtxArr[i] = NULL;
}
}
@@ -150,8 +150,8 @@ s32 J3DMtxBuffer::createDoubleDrawMtx(J3DModelData* pModelData, u32 mtxNum) {
for (s32 i = 0; i < 2; i++) {
for (u32 j = 0; j < mtxNum; j++) {
if (pModelData->getDrawMtxNum() != 0) {
mpDrawMtxArr[i][j] = new (0x20) Mtx[pModelData->getDrawMtxNum()];
mpNrmMtxArr[i][j] = new (0x20) Mtx33[pModelData->getDrawMtxNum()];
mpDrawMtxArr[i][j] = JKR_NEW_ARGS (0x20) Mtx[pModelData->getDrawMtxNum()];
mpNrmMtxArr[i][j] = JKR_NEW_ARGS (0x20) Mtx33[pModelData->getDrawMtxNum()];
}
}
}
@@ -187,7 +187,7 @@ s32 J3DMtxBuffer::createBumpMtxArray(J3DModelData* i_modelData, u32 mtxNum) {
if (bumpMtxNum != 0 && mtxNum != 0) {
for (int i = 0; i < 2; i++) {
mpBumpMtxArr[i] = new Mtx33**[(u16)materialCount];
mpBumpMtxArr[i] = JKR_NEW Mtx33**[(u16)materialCount];
if (mpBumpMtxArr[i] == NULL) {
return kJ3DError_Alloc;
}
@@ -200,7 +200,7 @@ s32 J3DMtxBuffer::createBumpMtxArray(J3DModelData* i_modelData, u32 mtxNum) {
for (u16 j = 0; j < materialNum; j++) {
J3DMaterial* material = i_modelData->getMaterialNodePointer(j);
if (material->getNBTScale()->mbHasScale == true) {
mpBumpMtxArr[i][offset] = new Mtx33*[mtxNum];
mpBumpMtxArr[i][offset] = JKR_NEW Mtx33*[mtxNum];
if (mpBumpMtxArr[i][offset] == NULL) {
return kJ3DError_Alloc;
}
@@ -217,7 +217,7 @@ s32 J3DMtxBuffer::createBumpMtxArray(J3DModelData* i_modelData, u32 mtxNum) {
J3DMaterial* material = i_modelData->getMaterialNodePointer((u16)j);
if (material->getNBTScale()->mbHasScale == true) {
for (int k = 0; k < mtxNum; k++) {
mpBumpMtxArr[i][offset][k] = new (0x20) Mtx33[i_modelData->getDrawMtxNum()];
mpBumpMtxArr[i][offset][k] = JKR_NEW_ARGS (0x20) Mtx33[i_modelData->getDrawMtxNum()];
if (mpBumpMtxArr[i][offset][k] == NULL) {
return kJ3DError_Alloc;
}
@@ -240,15 +240,15 @@ static f32 J3DUnit01[] = { 0.0f, 1.0f };
void J3DMtxBuffer::calcWeightEnvelopeMtx() {
__REGISTER MtxP weightAnmMtx;
__REGISTER Mtx* worldMtx;
__REGISTER Mtx* invMtx;
__REGISTER Mtx invMtx;
__REGISTER f32 weight;
int idx;
int j;
int mixNum;
int i;
int max;
u16* indices;
f32* weights;
BE(u16)* indices;
BE(f32)* weights;
u8* pScale;
#if DEBUG || !__MWERKS__
@@ -311,11 +311,13 @@ void J3DMtxBuffer::calcWeightEnvelopeMtx() {
do {
idx = *++indices;
worldMtx = &mpAnmMtx[idx];
invMtx = &mJointTree->getInvJointMtx((u16)idx);
#if DEBUG || !__MWERKS__
MTXConcat(*worldMtx, *invMtx, mtx);
mJointTree->getInvJointMtx((u16)idx).to_host(invMtx);
MTXConcat(*worldMtx, invMtx, mtx);
#else
invMtx = &mJointTree->getInvJointMtx((u16)idx);
// Fakematch? Doesn't match if worldMtx and invMtx are used directly.
__REGISTER void* var_r5 = worldMtx;
__REGISTER void* var_r6 = invMtx;
@@ -79,17 +79,17 @@ J3DSkinDeform::J3DSkinDeform() {
mSkinNList = NULL;
}
u16* J3DSkinDeform::sWorkArea_WEvlpMixMtx[1024];
BE(u16)* J3DSkinDeform::sWorkArea_WEvlpMixMtx[1024];
f32* J3DSkinDeform::sWorkArea_WEvlpMixWeight[1024];
BE(f32)* J3DSkinDeform::sWorkArea_WEvlpMixWeight[1024];
void J3DSkinDeform::initSkinInfo(J3DModelData* pModelData) {
J3D_ASSERT_NULLPTR(322, pModelData != NULL);
int vtxNum = pModelData->getVtxNum();
int wevlpMtxNum = pModelData->getWEvlpMtxNum();
u16* wevlpMtxIndex = pModelData->getWEvlpMixMtxIndex();
f32* wevlpMixWeights = pModelData->getWEvlpMixWeight();
BE(u16)* wevlpMtxIndex = pModelData->getWEvlpMixMtxIndex();
BE(f32)* wevlpMixWeights = pModelData->getWEvlpMixWeight();
int currentOffset = 0;
for (int i = 0; i < wevlpMtxNum; i++) {
@@ -99,7 +99,7 @@ void J3DSkinDeform::initSkinInfo(J3DModelData* pModelData) {
}
if (pModelData->getJointNum() != 0) {
mSkinNList = new J3DSkinNList[pModelData->getJointNum()];
mSkinNList = JKR_NEW J3DSkinNList[pModelData->getJointNum()];
}
for (int i = 0; i < pModelData->getVtxNum(); i++) {
@@ -111,7 +111,7 @@ void J3DSkinDeform::initSkinInfo(J3DModelData* pModelData) {
} else {
u16 drawMtxIndex = pModelData->getDrawMtxIndex(uVar8);
int wevlpMtxNum = pModelData->getWEvlpMixMtxNum(drawMtxIndex);
u16* indices = sWorkArea_WEvlpMixMtx[drawMtxIndex];
BE(u16)* indices = sWorkArea_WEvlpMixMtx[drawMtxIndex];
for (int j = 0; j < wevlpMtxNum; j++) {
mSkinNList[indices[j]].field_0x10++;
}
@@ -128,7 +128,7 @@ void J3DSkinDeform::initSkinInfo(J3DModelData* pModelData) {
} else {
u16 drawMtxIndex = pModelData->getDrawMtxIndex(uVar8);
int wevlpMtxNum = pModelData->getWEvlpMixMtxNum(drawMtxIndex);
u16* indices = sWorkArea_WEvlpMixMtx[drawMtxIndex];
BE(u16)* indices = sWorkArea_WEvlpMixMtx[drawMtxIndex];
for (int j = 0; j < wevlpMtxNum; j++) {
mSkinNList[indices[j]].field_0x12++;
}
@@ -138,13 +138,13 @@ void J3DSkinDeform::initSkinInfo(J3DModelData* pModelData) {
for (u16 i = 0; i < pModelData->getJointNum(); i++) {
if (mSkinNList[i].field_0x10) {
mSkinNList[i].field_0x0 = new u16[mSkinNList[i].field_0x10];
mSkinNList[i].field_0x8 = new f32[mSkinNList[i].field_0x10];
mSkinNList[i].field_0x0 = JKR_NEW u16[mSkinNList[i].field_0x10];
mSkinNList[i].field_0x8 = JKR_NEW f32[mSkinNList[i].field_0x10];
mSkinNList[i].field_0x10 = 0;
}
if (mSkinNList[i].field_0x12) {
mSkinNList[i].field_0x4 = new u16[mSkinNList[i].field_0x12];
mSkinNList[i].field_0xc = new f32[mSkinNList[i].field_0x12];
mSkinNList[i].field_0x4 = JKR_NEW u16[mSkinNList[i].field_0x12];
mSkinNList[i].field_0xc = JKR_NEW f32[mSkinNList[i].field_0x12];
mSkinNList[i].field_0x12 = 0;
}
}
@@ -160,8 +160,8 @@ void J3DSkinDeform::initSkinInfo(J3DModelData* pModelData) {
} else {
u16 drawMtxIndex = pModelData->getDrawMtxIndex(uVar8);
int wevlpMtxNum = pModelData->getWEvlpMixMtxNum(drawMtxIndex);
u16* indices = sWorkArea_WEvlpMixMtx[drawMtxIndex];
f32* weights = sWorkArea_WEvlpMixWeight[drawMtxIndex];
BE(u16)* indices = sWorkArea_WEvlpMixMtx[drawMtxIndex];
BE(f32)* weights = sWorkArea_WEvlpMixWeight[drawMtxIndex];
for (int j = 0; j < wevlpMtxNum; j++) {
int uVar9 = mSkinNList[indices[j]].field_0x10++;
mSkinNList[indices[j]].field_0x0[uVar9] = i;
@@ -182,8 +182,8 @@ void J3DSkinDeform::initSkinInfo(J3DModelData* pModelData) {
} else {
u16 drawMtxIndex = pModelData->getDrawMtxIndex(uVar8);
int wevlpMtxNum = pModelData->getWEvlpMixMtxNum(drawMtxIndex);
u16* indices = sWorkArea_WEvlpMixMtx[drawMtxIndex];
f32* weights = sWorkArea_WEvlpMixWeight[drawMtxIndex];
BE(u16)* indices = sWorkArea_WEvlpMixMtx[drawMtxIndex];
BE(f32)* weights = sWorkArea_WEvlpMixWeight[drawMtxIndex];
for (int j = 0; j < wevlpMtxNum; j++) {
int uVar9 = mSkinNList[indices[j]].field_0x12++;
mSkinNList[indices[j]].field_0x4[uVar9] = i;
@@ -202,7 +202,7 @@ int J3DSkinDeform::initMtxIndexArray(J3DModelData* pModelData) {
return kJ3DError_Success;
}
mPosData = new u16[pModelData->getVtxNum()];
mPosData = JKR_NEW u16[pModelData->getVtxNum()];
if (mPosData == NULL) {
return kJ3DError_Alloc;
}
@@ -212,7 +212,7 @@ int J3DSkinDeform::initMtxIndexArray(J3DModelData* pModelData) {
}
if (pModelData->getNrmNum()) {
mNrmData = new u16[pModelData->getNrmNum()];
mNrmData = JKR_NEW u16[pModelData->getNrmNum()];
if (mNrmData == NULL) {
return kJ3DError_Alloc;
}
@@ -223,8 +223,8 @@ int J3DSkinDeform::initMtxIndexArray(J3DModelData* pModelData) {
mNrmData = NULL;
}
mPosMtx = new Mtx[pModelData->getJointNum()];
mNrmMtx = new (32) Mtx33[pModelData->getDrawMtxNum()];
mPosMtx = JKR_NEW Mtx[pModelData->getJointNum()];
mNrmMtx = JKR_NEW_ARGS (32) Mtx33[pModelData->getDrawMtxNum()];
if (mPosMtx == NULL) {
return kJ3DError_Alloc;
}
@@ -298,7 +298,7 @@ int J3DSkinDeform::initMtxIndexArray(J3DModelData* pModelData) {
#if PLATFORM_GCN
uVar13 = *(u16*)(pDListPos + 1);
#else
uVar13 = *(u16*)pDListPos;
uVar13 = be16(*(u16*)pDListPos);
pDListPos += 2;
#endif
for (int local_60 = 0; local_60 < uVar13; local_60++) {
@@ -308,9 +308,9 @@ int J3DSkinDeform::initMtxIndexArray(J3DModelData* pModelData) {
u8* iVar5 = ((u8*)pDListPos + r23 * local_60);
#endif
u8 bVar3 = *(u8*)(iVar5 + pnmtx_num) / 3U;
u16 vtx_idx = *(u16*)(iVar5 + vtx_num);
u16 nrm_idx = *(u16*)(iVar5 + nrm_num);
u16 uVar3 = *(u16*)(iVar5 + tex_num);
u16 vtx_idx = be16(*(u16*)(iVar5 + vtx_num));
u16 nrm_idx = be16(*(u16*)(iVar5 + nrm_num));
u16 uVar3 = be16(*(u16*)(iVar5 + tex_num));
u16 local_76 = pShapeMtx->getUseMtxIndex(bVar3);
if (local_76 == 0xffff) {
local_76 = sWorkArea_MtxReg[bVar3];
@@ -376,9 +376,10 @@ void J3DSkinDeform::changeFastSkinDL(J3DModelData* pModelData) {
if (cmd != GX_TRIANGLEFAN && cmd != GX_TRIANGLESTRIP)
break;
int vtxCount = *(u16*)dl;
u16 vtxCountBE = *(u16*)dl;
int vtxCount = be16(vtxCountBE);
dl += 2;
*(u16*)dst = vtxCount;
*(u16*)dst = vtxCountBE;
dst += 2;
for (int k = 0; k < vtxCount; k++) {
@@ -448,7 +449,9 @@ void J3DSkinDeform::transformVtxPosNrm(J3DModelData* pModelData) {
u16 drawMtxIndex = pModelData->getDrawMtxIndex(posIndex);
Vec* pos = ((Vec*)pModelData->getVtxPosArray()) + i;
Mtx invMtx;
MTXInverse(pModelData->getInvJointMtx(drawMtxIndex), invMtx);
Mtx copy;
pModelData->getInvJointMtx(drawMtxIndex).to_host(copy);
MTXInverse(copy, invMtx);
MTXMultVec(invMtx, pos, pos);
}
}
@@ -459,7 +462,9 @@ void J3DSkinDeform::transformVtxPosNrm(J3DModelData* pModelData) {
u16 drawMtxIndex = pModelData->getDrawMtxIndex(nrmIndex);
Vec* nrm = ((Vec*)pModelData->getVtxNrmArray()) + i;
Mtx invMtx;
MTXInverse(pModelData->getInvJointMtx(drawMtxIndex), invMtx);
Mtx copy;
pModelData->getInvJointMtx(drawMtxIndex).to_host(copy);
MTXInverse(copy, invMtx);
MTXMultVecSR(invMtx, nrm, nrm);
}
}
@@ -474,10 +479,12 @@ void J3DSkinDeform::calcAnmInvJointMtx(J3DMtxBuffer* pMtxBuffer) {
if (pMtxBuffer->getJointTree()->getWEvlpMtxNum() != 0) {
int jointNum = pMtxBuffer->getJointTree()->getJointNum();
Mtx* anmMtx = (Mtx*)pMtxBuffer->getAnmMtx(0);
Mtx* invJointMtx = &pMtxBuffer->getJointTree()->getInvJointMtx(0);
BE(Mtx)* invJointMtx = &pMtxBuffer->getJointTree()->getInvJointMtx(0);
Mtx* posMtx = mPosMtx;
for (int i = 0; i < jointNum; i++) {
MTXConcat(anmMtx[i], invJointMtx[i], posMtx[i]);
Mtx copy;
invJointMtx[i].to_host(copy);
MTXConcat(anmMtx[i], copy, posMtx[i]);
}
}
}
@@ -25,7 +25,7 @@ void J3DDrawBuffer::initialize() {
}
int J3DDrawBuffer::allocBuffer(u32 size) {
mpBuffer = new (0x20) J3DPacket*[size];
mpBuffer = JKR_NEW_ARGS (0x20) J3DPacket*[size];
if (mpBuffer == NULL)
return kJ3DError_Alloc;
@@ -39,7 +39,7 @@ int J3DDrawBuffer::allocBuffer(u32 size) {
J3DDrawBuffer::~J3DDrawBuffer() {
frameInit();
delete[] mpBuffer;
JKR_DELETE_ARRAY(mpBuffer);
mpBuffer = NULL;
}
+3 -2
View File
@@ -6,6 +6,7 @@
#include "JSystem/J3DGraphBase/J3DGD.h"
#include "JSystem/J3DGraphBase/J3DFifo.h"
#include <dusk/logging.h>
void J3DGDSetGenMode(u8 nTexGens, u8 nChans, u8 nTevs, u8 nInds,
GXCullMode cm) {
@@ -350,7 +351,7 @@ void J3DGDSetTexImgAttr(GXTexMapID id, u16 width, u16 height, GXTexFmt format) {
void J3DGDSetTexImgPtr(GXTexMapID id, void* image_ptr) {
#if TARGET_PC
puts("J3DGDSetTexImgPtr is a stub");
STUB_LOG();
#else
J3DGDWriteBPCmd(BP_IMAGE_PTR(OSCachedToPhysical(image_ptr) >> 5, J3DGDTexImage3Ids[id]));
#endif
@@ -372,7 +373,7 @@ void J3DGDLoadTlut(void* tlut_ptr, u32 tmem_addr, GXTlutSize size) {
J3DGDWriteBPCmd(0xFEFFFF00);
J3DGDWriteBPCmd(0xF000000);
#if TARGET_PC
puts("J3DGDLoadTlut is a stub");
STUB_LOG();
return;
#endif
J3DGDWriteBPCmd(BP_LOAD_TLUT0(OSCachedToPhysical(tlut_ptr) >> 5, 0x64));
+44 -4
View File
@@ -9,14 +9,14 @@
inline void loadMatColors(const J3DGXColor* color) {
J3DGDWriteXFCmdHdr(0x100C, 2);
J3DGDWrite_u32(*(u32*)color);
J3DGDWrite_u32(*(u32*)(color + 1));
J3DGDWrite_u32(*(BE(u32)*)color);
J3DGDWrite_u32(*(BE(u32)*)(color + 1));
}
inline void loadAmbColors(const J3DGXColor* color) {
J3DGDWriteXFCmdHdr(0x100A, 2);
J3DGDWrite_u32(*(u32*)color);
J3DGDWrite_u32(*(u32*)(color + 1));
J3DGDWrite_u32(*(BE(u32)*)color);
J3DGDWrite_u32(*(BE(u32)*)(color + 1));
}
inline void loadTexCoordScale(GXTexCoordID coord, const J3DTexCoordScaleInfo& info) {
@@ -1366,6 +1366,14 @@ void J3DTevBlock16::ptrToIndex() {
DCStoreRange(start, (uintptr_t)end - (uintptr_t)start);
}
void J3DTevBlock16::loadTexture() {
for (u32 i = 0; i < 8; i++) {
if (mTexNo[i] != 0xFFFF) {
j3dSys.getTexture()->loadGX(mTexNo[i], GXTexMapID(GX_TEXMAP0 + i));
}
}
}
void J3DTevBlockPatched::ptrToIndex() {
GDSetCurrOffset(mTexNoOffset);
void* start = GDGetCurrPointer();
@@ -1390,6 +1398,14 @@ void J3DTevBlockPatched::ptrToIndex() {
DCStoreRange(start, (uintptr_t)end - (uintptr_t)start);
}
void J3DTevBlockPatched::loadTexture() {
for (u32 i = 0; i < 8; i++) {
if (mTexNo[i] != 0xFFFF) {
j3dSys.getTexture()->loadGX(mTexNo[i], GXTexMapID(GX_TEXMAP0 + i));
}
}
}
void J3DTevBlock::indexToPtr_private(u32 offs) {
GDSetCurrOffset(offs);
void* start = GDGetCurrPointer();
@@ -1682,6 +1698,30 @@ void J3DTevBlockPatched::reset(J3DTevBlock* pBlock) {
}
}
void J3DTevBlock1::loadTexture() {
for (u32 i = 0; i < 1; i++) {
if (mTexNo[i] != 0xFFFF) {
j3dSys.getTexture()->loadGX(mTexNo[i], GXTexMapID(GX_TEXMAP0 + i));
}
}
}
void J3DTevBlock2::loadTexture() {
for (u32 i = 0; i < 2; i++) {
if (mTexNo[i] != 0xFFFF) {
j3dSys.getTexture()->loadGX(mTexNo[i], GXTexMapID(GX_TEXMAP0 + i));
}
}
}
void J3DTevBlock4::loadTexture() {
for (u32 i = 0; i < 4; i++) {
if (mTexNo[i] != 0xFFFF) {
j3dSys.getTexture()->loadGX(mTexNo[i], GXTexMapID(GX_TEXMAP0 + i));
}
}
}
void J3DTevBlock1::reset(J3DTevBlock* pBlock) {
J3D_ASSERT_NULLPTR(2633, pBlock != NULL);
+38 -19
View File
@@ -1,19 +1,20 @@
#include "JSystem/JSystem.h" // IWYU pragma: keep
#include "JSystem/J3DGraphBase/J3DMaterial.h"
#include "JSystem/J3DGraphBase/J3DGD.h"
#include "JSystem/J3DGraphBase/J3DMaterial.h"
#include "JSystem/JKernel/JKRHeap.h"
J3DColorBlock* J3DMaterial::createColorBlock(u32 flags) {
J3DColorBlock* rv = NULL;
switch (flags) {
case 0:
rv = new J3DColorBlockLightOff();
rv = JKR_NEW J3DColorBlockLightOff();
break;
case 0x40000000:
rv = new J3DColorBlockLightOn();
rv = JKR_NEW J3DColorBlockLightOn();
break;
case 0x80000000:
rv = new J3DColorBlockAmbientOn();
rv = JKR_NEW J3DColorBlockAmbientOn();
break;
}
@@ -25,11 +26,11 @@ J3DTexGenBlock* J3DMaterial::createTexGenBlock(u32 flags) {
J3DTexGenBlock* rv = NULL;
switch (flags) {
case 0x8000000:
rv = new J3DTexGenBlock4();
rv = JKR_NEW J3DTexGenBlock4();
break;
case 0:
default:
rv = new J3DTexGenBlockBasic();
rv = JKR_NEW J3DTexGenBlockBasic();
}
J3D_ASSERT_ALLOCMEM(83, rv != NULL);
@@ -39,13 +40,13 @@ J3DTexGenBlock* J3DMaterial::createTexGenBlock(u32 flags) {
J3DTevBlock* J3DMaterial::createTevBlock(int tevStageNum) {
J3DTevBlock* rv = NULL;
if (tevStageNum <= 1) {
rv = new J3DTevBlock1();
rv = JKR_NEW J3DTevBlock1();
} else if (tevStageNum == 2) {
rv = new J3DTevBlock2();
rv = JKR_NEW J3DTevBlock2();
} else if (tevStageNum <= 4) {
rv = new J3DTevBlock4();
rv = JKR_NEW J3DTevBlock4();
} else if (tevStageNum <= 16) {
rv = new J3DTevBlock16();
rv = JKR_NEW J3DTevBlock16();
}
J3D_ASSERT_ALLOCMEM(116, rv != NULL);
@@ -55,9 +56,9 @@ J3DTevBlock* J3DMaterial::createTevBlock(int tevStageNum) {
J3DIndBlock* J3DMaterial::createIndBlock(int flags) {
J3DIndBlock* rv = NULL;
if (flags != 0) {
rv = new J3DIndBlockFull();
rv = JKR_NEW J3DIndBlockFull();
} else {
rv = new J3DIndBlockNull();
rv = JKR_NEW J3DIndBlockNull();
}
J3D_ASSERT_ALLOCMEM(139, rv != NULL);
@@ -68,24 +69,24 @@ J3DPEBlock* J3DMaterial::createPEBlock(u32 flags, u32 materialMode) {
J3DPEBlock* rv = NULL;
if (flags == 0) {
if (materialMode & 1) {
rv = new J3DPEBlockOpa();
rv = JKR_NEW J3DPEBlockOpa();
J3D_ASSERT_ALLOCMEM(166, rv != NULL);
return rv;
} else if (materialMode & 2) {
rv = new J3DPEBlockTexEdge();
rv = JKR_NEW J3DPEBlockTexEdge();
J3D_ASSERT_ALLOCMEM(172, rv != NULL);
return rv;
} else if (materialMode & 4) {
rv = new J3DPEBlockXlu();
rv = JKR_NEW J3DPEBlockXlu();
J3D_ASSERT_ALLOCMEM(178, rv != NULL);
return rv;
}
}
if (flags == 0x10000000) {
rv = new J3DPEBlockFull();
rv = JKR_NEW J3DPEBlockFull();
} else if (flags == 0x20000000) {
rv = new J3DPEBlockFogOff();
rv = JKR_NEW J3DPEBlockFogOff();
}
J3D_ASSERT_ALLOCMEM(188, rv != NULL);
@@ -217,6 +218,9 @@ void J3DMaterial::makeSharedDisplayList() {
void J3DMaterial::load() {
j3dSys.setMaterialMode(mMaterialMode);
#if TARGET_PC
mTevBlock->loadTexture();
#endif
if (!j3dSys.checkFlag(2)) {
loadNBTScale(*mTexGenBlock->getNBTScale());
}
@@ -224,6 +228,9 @@ void J3DMaterial::load() {
void J3DMaterial::loadSharedDL() {
j3dSys.setMaterialMode(mMaterialMode);
#if TARGET_PC
mTevBlock->loadTexture();
#endif
if (!j3dSys.checkFlag(2)) {
mSharedDLObj->callDL();
loadNBTScale(*mTexGenBlock->getNBTScale());
@@ -334,7 +341,7 @@ void J3DMaterial::change() {
s32 J3DMaterial::newSharedDisplayList(u32 dlSize) {
if (mSharedDLObj == NULL) {
mSharedDLObj = new J3DDisplayListObj();
mSharedDLObj = JKR_NEW J3DDisplayListObj();
if (mSharedDLObj == NULL) {
return kJ3DError_Alloc;
}
@@ -350,7 +357,7 @@ s32 J3DMaterial::newSharedDisplayList(u32 dlSize) {
s32 J3DMaterial::newSingleSharedDisplayList(u32 dlSize) {
if (mSharedDLObj == NULL) {
mSharedDLObj = new J3DDisplayListObj();
mSharedDLObj = JKR_NEW J3DDisplayListObj();
if (mSharedDLObj == NULL) {
return kJ3DError_Alloc;
}
@@ -374,6 +381,9 @@ void J3DPatchedMaterial::makeSharedDisplayList() {}
void J3DPatchedMaterial::load() {
j3dSys.setMaterialMode(mMaterialMode);
#if TARGET_PC
mTevBlock->loadTexture();
#endif
if (j3dSys.checkFlag(2)) {
return;
}
@@ -381,6 +391,9 @@ void J3DPatchedMaterial::load() {
void J3DPatchedMaterial::loadSharedDL() {
j3dSys.setMaterialMode(mMaterialMode);
#if TARGET_PC
mTevBlock->loadTexture();
#endif
if (!j3dSys.checkFlag(0x02))
mSharedDLObj->callDL();
}
@@ -399,6 +412,9 @@ void J3DLockedMaterial::makeSharedDisplayList() {}
void J3DLockedMaterial::load() {
j3dSys.setMaterialMode(mMaterialMode);
#if TARGET_PC
mTevBlock->loadTexture();
#endif
if (j3dSys.checkFlag(2)) {
return;
}
@@ -406,6 +422,9 @@ void J3DLockedMaterial::load() {
void J3DLockedMaterial::loadSharedDL() {
j3dSys.setMaterialMode(mMaterialMode);
#if TARGET_PC
mTevBlock->loadTexture();
#endif
if (!j3dSys.checkFlag(0x02))
mSharedDLObj->callDL();
}
+12 -6
View File
@@ -12,8 +12,8 @@
J3DError J3DDisplayListObj::newDisplayList(u32 maxSize) {
mMaxSize = ALIGN_NEXT(maxSize, 0x20);
mpDisplayList[0] = new (0x20) char[mMaxSize];
mpDisplayList[1] = new (0x20) char[mMaxSize];
mpDisplayList[0] = JKR_NEW_ARGS (0x20) char[mMaxSize];
mpDisplayList[1] = JKR_NEW_ARGS (0x20) char[mMaxSize];
mSize = 0;
if (mpDisplayList[0] == NULL || mpDisplayList[1] == NULL)
@@ -24,7 +24,7 @@ J3DError J3DDisplayListObj::newDisplayList(u32 maxSize) {
J3DError J3DDisplayListObj::newSingleDisplayList(u32 maxSize) {
mMaxSize = ALIGN_NEXT(maxSize, 0x20);
mpDisplayList[0] = new (0x20) char[mMaxSize];
mpDisplayList[0] = JKR_NEW_ARGS (0x20) char[mMaxSize];
mpDisplayList[1] = mpDisplayList[0];
mSize = 0;
@@ -36,7 +36,7 @@ J3DError J3DDisplayListObj::newSingleDisplayList(u32 maxSize) {
int J3DDisplayListObj::single_To_Double() {
if (mpDisplayList[0] == mpDisplayList[1]) {
mpDisplayList[1] = new (0x20) char[mMaxSize];
mpDisplayList[1] = JKR_NEW_ARGS (0x20) char[mMaxSize];
if (mpDisplayList[1] == NULL)
return kJ3DError_Alloc;
@@ -144,7 +144,7 @@ J3DDrawPacket::J3DDrawPacket() {
J3DDrawPacket::~J3DDrawPacket() {}
J3DError J3DDrawPacket::newDisplayList(u32 size) {
mpDisplayListObj = new J3DDisplayListObj();
mpDisplayListObj = JKR_NEW J3DDisplayListObj();
if (mpDisplayListObj == NULL)
return kJ3DError_Alloc;
@@ -157,7 +157,7 @@ J3DError J3DDrawPacket::newDisplayList(u32 size) {
}
J3DError J3DDrawPacket::newSingleDisplayList(u32 size) {
mpDisplayListObj = new J3DDisplayListObj();
mpDisplayListObj = JKR_NEW J3DDisplayListObj();
if (mpDisplayListObj == NULL)
return kJ3DError_Alloc;
@@ -207,10 +207,16 @@ bool J3DMatPacket::isSame(J3DMatPacket* pOther) const {
}
void J3DMatPacket::draw() {
#if TARGET_PC
j3dSys.setTexture(mpTexture);
#endif
mpMaterial->load();
callDL();
J3DShapePacket* packet = getShapePacket();
#if TARGET_PC
packet->mpModel->getVertexBuffer()->setArray();
#endif
packet->getShape()->loadPreDrawSetting();
while (packet != NULL) {
+39 -1
View File
@@ -7,7 +7,9 @@
#include "JSystem/J3DGraphBase/J3DPacket.h"
#include "JSystem/J3DGraphBase/J3DVertex.h"
#include "JSystem/J3DGraphBase/J3DFifo.h"
#include <gx.h>
#include <gd.h>
#include "JSystem/JKernel/JKRHeap.h"
void J3DGDSetVtxAttrFmtv(GXVtxFmt, GXVtxAttrFmtList const*, bool);
void J3DFifoLoadPosMtxImm(Mtx, u32);
@@ -85,7 +87,7 @@ void J3DShape::addTexMtxIndexInVcd(GXAttr attr) {
if (attrIdx == -1)
return;
GXVtxDescList* newVtxDesc = new GXVtxDescList[attrCount + 2];
GXVtxDescList* newVtxDesc = JKR_NEW GXVtxDescList[attrCount + 2];
bool inserted = false;
vtxDesc = getVtxDesc();
@@ -131,12 +133,36 @@ void J3DLoadCPCmd(u8 addr, u32 val) {
GXCmd1u32(val);
}
#if TARGET_PC
static void J3DLoadArrayBasePtr(GXAttr attr, void* data, u32 size) {
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);
}
#else
static void J3DLoadArrayBasePtr(GXAttr attr, void* data) {
u32 idx = (attr == GX_VA_NBT) ? 1 : (attr - GX_VA_POS);
J3DLoadCPCmd(0xA0 + idx, ((uintptr_t)data & 0x7FFFFFFF));
}
#endif
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));
}
if (!mHasNBT && j3dSys.getVtxNrm() != mVertexData->getVtxNrmArray()) {
J3DLoadArrayBasePtr(GX_VA_NRM, j3dSys.getVtxNrm(), j3dSys.mVtxNrmNum * sizeof(Vec));
}
if (j3dSys.getVtxCol() != mVertexData->getVtxColorArray(0)) {
J3DLoadArrayBasePtr(GX_VA_CLR0, j3dSys.getVtxCol(), j3dSys.mVtxColNum * sizeof(GXColor));
}
#else
J3DLoadArrayBasePtr(GX_VA_POS, j3dSys.getVtxPos());
if (!mHasNBT) {
@@ -144,6 +170,7 @@ void J3DShape::loadVtxArray() const {
}
J3DLoadArrayBasePtr(GX_VA_CLR0, j3dSys.getVtxCol());
#endif
}
bool J3DShape::isSameVcdVatCmd(J3DShape* other) {
@@ -220,17 +247,28 @@ void J3DShape::makeVtxArrayCmd() {
mHasNBT = true;
stride[GX_VA_NRM - GX_VA_POS] *= 3;
array[GX_VA_NRM - GX_VA_POS] = mVertexData->getVtxNBTArray();
// TODO: How set array size here?
} else if (vtxDesc->attr == GX_VA_PNMTXIDX && vtxDesc->type != GX_NONE) {
mHasPNMTXIdx = true;
}
}
#if TARGET_PC
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));
else
GDSetArraySized(attr, nullptr, 0, mVertexData->getVtxArrStride(attr));
}
#else
for (u32 i = 0; i < 12; i++) {
if (array[i] != 0)
GDSetArray((GXAttr)(i + GX_VA_POS), array[i], stride[i]);
else
GDSetArrayRaw((GXAttr)(i + GX_VA_POS), 0, stride[i]);
}
#endif
}
void J3DShape::makeVcdVatCmd() {
@@ -28,7 +28,7 @@ void J3DShapeDraw::addTexMtxIndexInDL(u32 stride, u32 attrOffs, u32 valueBase) {
u32 byteNum = countVertex(stride);
u32 oldSize = mDisplayListSize;
u32 newSize = ALIGN_NEXT(oldSize + byteNum, 0x20);
u8* newDLStart = new (0x20) u8[newSize];
u8* newDLStart = JKR_NEW_ARGS (0x20) u8[newSize];
u8* oldDLStart = (u8*)mDisplayList;
u8* oldDL = oldDLStart;
u8* newDL = newDLStart;
@@ -58,7 +58,7 @@ void J3DShapeDraw::addTexMtxIndexInDL(u32 stride, u32 attrOffs, u32 valueBase) {
newDL += (stride - attrOffs);
}
oldDL = (u8*)oldDL + stride * vtxNum;
oldDL = (u8*)oldDL + stride * be16(vtxNum);
}
u32 realSize = ALIGN_NEXT((uintptr_t)newDL - (uintptr_t)newDLStart, 0x20);
@@ -332,7 +332,9 @@ void J3DShapeMtxConcatView::loadMtxConcatView_PNCPU(int slot, u16 drw) const {
void J3DShapeMtxConcatView::loadMtxConcatView_PNGP_LOD(int slot, u16 drw) const {
Mtx m;
MTXConcat(*j3dSys.getShapePacket()->getBaseMtxPtr(), j3dSys.getModelDrawMtx(drw), m);
MTXConcat(m, j3dSys.getModel()->getModelData()->getInvJointMtx(drw), m);
Mtx copy;
j3dSys.getModel()->getModelData()->getInvJointMtx(drw).to_host(copy);
MTXConcat(m, copy, m);
J3DDifferedTexMtx::load(m);
J3DFifoLoadPosMtxImm(m, slot * 3);
loadNrmMtx(slot, drw, m);
+9
View File
@@ -264,8 +264,17 @@ void J3DSys::reinitTransform() {
}
void J3DSys::reinitTexture() {
#if TARGET_PC
static GXTexObj texObj;
static bool initialized = false;
if (!initialized) {
GXInitTexObj(&texObj, NullTexData, 4, 4, GX_TF_IA8, GX_CLAMP, GX_CLAMP, GX_FALSE);
initialized = true;
}
#else
GXTexObj texObj;
GXInitTexObj(&texObj, NullTexData, 4, 4, GX_TF_IA8, GX_CLAMP, GX_CLAMP, GX_FALSE);
#endif
GXLoadTexObj(&texObj, GX_TEXMAP0);
GXLoadTexObj(&texObj, GX_TEXMAP1);
GXLoadTexObj(&texObj, GX_TEXMAP2);
+56 -2
View File
@@ -1,12 +1,27 @@
#include "JSystem/JSystem.h" // IWYU pragma: keep
#include "JSystem/J3DGraphBase/J3DTexture.h"
#include "JSystem/J3DAssert.h"
#include "JSystem/J3DGraphBase/J3DTexture.h"
#include "JSystem/JKernel/JKRHeap.h"
void J3DTexture::loadGX(u16 idx, GXTexMapID texMapID) const {
J3D_ASSERT_RANGE(29, idx < mNum);
ResTIMG* timg = getResTIMG(idx);
#if TARGET_PC
if (timg->width == 0 || timg->height == 0)
return;
if (idx >= mNum) {
OSReport("J3DTexture::loadGX: idx %d out of bounds (mNum=%d)!\n", idx, mNum);
return;
}
if (timg->indexTexture) {
GXLoadTlut(&mpTlutObj[idx], (GXTlut)texMapID);
GXInitTexObjTlut(&mpTexObj[idx], (GXTlut)texMapID);
}
GXLoadTexObj(&mpTexObj[idx], texMapID);
#else
GXTexObj texObj;
GXTlutObj tlutObj;
@@ -30,14 +45,53 @@ void J3DTexture::loadGX(u16 idx, GXTexMapID texMapID) const {
timg->LODBias * kLODBiasScale, timg->biasClamp, timg->doEdgeLOD,
(GXAnisotropy)timg->maxAnisotropy);
GXLoadTexObj(&texObj, texMapID);
#endif
}
#if TARGET_PC
void J3DTexture::loadGXTexObj(u16 idx) {
J3D_ASSERT_RANGE(29, idx < mNum);
ResTIMG* timg = getResTIMG(idx);
GXTlutObj& tlutObj = mpTlutObj[idx];
GXTexObj& texObj = mpTexObj[idx];
if (!timg->indexTexture) {
GXInitTexObj(&texObj, mpImgDataPtr[idx], timg->width, timg->height,
(GXTexFmt)timg->format, (GXTexWrapMode)timg->wrapS, (GXTexWrapMode)timg->wrapT,
timg->mipmapEnabled);
} else {
GXInitTexObjCI(&texObj, mpImgDataPtr[idx], timg->width, timg->height,
(GXCITexFmt)timg->format, (GXTexWrapMode)timg->wrapS,
(GXTexWrapMode)timg->wrapT, timg->mipmapEnabled, GX_TLUT0);
GXInitTlutObj(&tlutObj, mpTlutDataPtr[idx], (GXTlutFmt)timg->colorFormat,
timg->numColors);
}
const f32 kLODClampScale = 1.0f / 8.0f;
const f32 kLODBiasScale = 1.0f / 100.0f;
GXInitTexObjLOD(&texObj, (GXTexFilter)timg->minFilter, (GXTexFilter)timg->magFilter,
timg->minLOD * kLODClampScale, timg->maxLOD * kLODClampScale,
timg->LODBias * kLODBiasScale, timg->biasClamp, timg->doEdgeLOD,
(GXAnisotropy)timg->maxAnisotropy);
}
#endif
void J3DTexture::entryNum(u16 num) {
J3D_ASSERT_NONZEROARG(79, num != 0);
mNum = num;
mpRes = new ResTIMG[num];
mpRes = JKR_NEW ResTIMG[num];
J3D_ASSERT_ALLOCMEM(83, mpRes != NULL);
delete[] mpTexObj;
delete[] mpTlutObj;
delete[] mpImgDataPtr;
delete[] mpTlutDataPtr;
mpTexObj = new GXTexObj[num]();
mpTlutObj = new GXTlutObj[num]();
mpImgDataPtr = new u8*[num]();
mpTlutDataPtr = new u8*[num]();
for (int i = 0; i < mNum; i++) {
mpRes[i].paletteOffset = 0;
+12 -12
View File
@@ -68,15 +68,15 @@ void J3DVertexBuffer::init() {
J3DVertexBuffer::~J3DVertexBuffer() {}
void J3DVertexBuffer::setArray() const {
j3dSys.setVtxPos(mCurrentVtxPos);
j3dSys.setVtxNrm(mCurrentVtxNrm);
j3dSys.setVtxCol(mCurrentVtxCol);
j3dSys.setVtxPos(mCurrentVtxPos, mVtxData->getVtxNum());
j3dSys.setVtxNrm(mCurrentVtxNrm, mVtxData->getNrmNum());
j3dSys.setVtxCol(mCurrentVtxCol, mVtxData->getColNum());
}
s32 J3DVertexBuffer::copyLocalVtxPosArray(u32 flag) {
if (flag & 1) {
for (int i = 0; i < 2; i++) {
mVtxPosArray[i] = new (0x20) char[mVtxData->getVtxNum() * 3 * 4];
mVtxPosArray[i] = JKR_NEW_ARGS (0x20) char[mVtxData->getVtxNum() * 3 * 4];
if (mVtxPosArray[i] == NULL) {
return kJ3DError_Alloc;
}
@@ -88,7 +88,7 @@ s32 J3DVertexBuffer::copyLocalVtxPosArray(u32 flag) {
mVtxPosArray[0] = mVtxData->getVtxPosArray();
if (mVtxPosArray[1] == NULL) {
mVtxPosArray[1] = new (0x20) char[mVtxData->getVtxNum() * 3 * 4];
mVtxPosArray[1] = JKR_NEW_ARGS (0x20) char[mVtxData->getVtxNum() * 3 * 4];
if (mVtxPosArray[1] == NULL) {
return kJ3DError_Alloc;
}
@@ -104,7 +104,7 @@ s32 J3DVertexBuffer::copyLocalVtxPosArray(u32 flag) {
s32 J3DVertexBuffer::copyLocalVtxNrmArray(u32 flag) {
if (flag & 1) {
for (int i = 0; i < 2; i++) {
mVtxNrmArray[i] = new (0x20) char[mVtxData->getNrmNum() * 3 * 4];
mVtxNrmArray[i] = JKR_NEW_ARGS (0x20) char[mVtxData->getNrmNum() * 3 * 4];
if (mVtxNrmArray[i] == NULL) {
return kJ3DError_Alloc;
}
@@ -116,7 +116,7 @@ s32 J3DVertexBuffer::copyLocalVtxNrmArray(u32 flag) {
mVtxNrmArray[0] = mVtxData->getVtxNrmArray();
if (mVtxNrmArray[1] == NULL) {
mVtxNrmArray[1] = new (0x20) char[mVtxData->getNrmNum() * 3 * 4];
mVtxNrmArray[1] = JKR_NEW_ARGS (0x20) char[mVtxData->getNrmNum() * 3 * 4];
if (mVtxNrmArray[1] == NULL) {
return kJ3DError_Alloc;
}
@@ -142,7 +142,7 @@ s32 J3DVertexBuffer::copyLocalVtxArray(u32 flag) {
for (int i = 0; i < 2; i++) {
if (oldPosArray[i] != mVtxPosArray[i]) {
if (mVtxPosArray[i] != mVtxData->getVtxPosArray())
delete mVtxPosArray[i];
JKR_DELETE(mVtxPosArray[i]);
mVtxPosArray[i] = oldPosArray[i];
}
}
@@ -161,13 +161,13 @@ s32 J3DVertexBuffer::copyLocalVtxArray(u32 flag) {
for (int i = 0; i < 2; i++) {
if (oldPosArray[i] != mVtxPosArray[i]) {
if (mVtxPosArray[i] != mVtxData->getVtxPosArray())
delete mVtxPosArray[i];
JKR_DELETE(mVtxPosArray[i]);
mVtxPosArray[i] = oldPosArray[i];
}
if (oldNrmArray[i] != mVtxNrmArray[i]) {
if (mVtxNrmArray[i] != mVtxData->getVtxNrmArray())
delete mVtxNrmArray[i];
JKR_DELETE(mVtxNrmArray[i]);
mVtxNrmArray[i] = oldNrmArray[i];
}
}
@@ -186,7 +186,7 @@ s32 J3DVertexBuffer::allocTransformedVtxPosArray() {
for (int i = 0; i < 2; i++) {
if (i == 0 || mTransformedVtxPosArray[i] == NULL) {
mTransformedVtxPosArray[i] = new (0x20) char[mVtxData->getVtxNum() * 3 * 4];
mTransformedVtxPosArray[i] = JKR_NEW_ARGS (0x20) char[mVtxData->getVtxNum() * 3 * 4];
if (mTransformedVtxPosArray[i] == NULL)
return kJ3DError_Alloc;
}
@@ -201,7 +201,7 @@ s32 J3DVertexBuffer::allocTransformedVtxNrmArray() {
for (int i = 0; i < 2; i++) {
if (i == 0 || mTransformedVtxNrmArray[i] == NULL) {
mTransformedVtxNrmArray[i] = new (0x20) char[mVtxData->getNrmNum() * 3 * 4];
mTransformedVtxNrmArray[i] = JKR_NEW_ARGS (0x20) char[mVtxData->getNrmNum() * 3 * 4];
if (mTransformedVtxNrmArray[i] == NULL)
return kJ3DError_Alloc;
}
@@ -9,6 +9,8 @@
#include "JSystem/JSupport/JSupport.h"
#include <os.h>
#include "JSystem/JKernel/JKRHeap.h"
J3DAnmBase* J3DAnmLoaderDataBase::load(const void* i_data, J3DAnmLoaderDataBaseFlag flag) {
const JUTDataFileHeader* header = (const JUTDataFileHeader*)i_data;
J3D_ASSERT_NULLPTR(48, i_data);
@@ -19,68 +21,68 @@ J3DAnmBase* J3DAnmLoaderDataBase::load(const void* i_data, J3DAnmLoaderDataBaseF
switch (header->mType) {
case 'bck1': {
J3DAnmKeyLoader_v15 loader;
loader.mAnm = new J3DAnmTransformKey();
loader.mAnm = JKR_NEW J3DAnmTransformKey();
return loader.load(i_data);
}
case 'bpk1': {
J3DAnmKeyLoader_v15 loader;
loader.mAnm = new J3DAnmColorKey();
loader.mAnm = JKR_NEW J3DAnmColorKey();
return loader.load(i_data);
}
case 'blk1': {
J3DAnmKeyLoader_v15 loader;
loader.mAnm = new J3DAnmClusterKey();
loader.mAnm = JKR_NEW J3DAnmClusterKey();
return loader.load(i_data);
}
case 'btk1': {
J3DAnmKeyLoader_v15 loader;
loader.mAnm = new J3DAnmTextureSRTKey();
loader.mAnm = JKR_NEW J3DAnmTextureSRTKey();
return loader.load(i_data);
}
case 'brk1': {
J3DAnmKeyLoader_v15 loader;
loader.mAnm = new J3DAnmTevRegKey();
loader.mAnm = JKR_NEW J3DAnmTevRegKey();
return loader.load(i_data);
}
case 'bxk1': {
J3DAnmKeyLoader_v15 loader;
loader.mAnm = new J3DAnmVtxColorKey();
loader.mAnm = JKR_NEW J3DAnmVtxColorKey();
return loader.load(i_data);
}
case 'bca1': {
J3DAnmFullLoader_v15 loader;
if (flag & J3DLOADER_UNK_FLAG1) {
loader.mAnm = new J3DAnmTransformFullWithLerp();
loader.mAnm = JKR_NEW J3DAnmTransformFullWithLerp();
} else {
loader.mAnm = new J3DAnmTransformFull();
loader.mAnm = JKR_NEW J3DAnmTransformFull();
}
return loader.load(i_data);
}
case 'bpa1': {
J3DAnmFullLoader_v15 loader;
loader.mAnm = new J3DAnmColorFull();
loader.mAnm = JKR_NEW J3DAnmColorFull();
return loader.load(i_data);
}
case 'btp1': {
J3DAnmFullLoader_v15 loader;
loader.mAnm = new J3DAnmTexPattern();
loader.mAnm = JKR_NEW J3DAnmTexPattern();
return loader.load(i_data);
}
case 'bva1': {
J3DAnmFullLoader_v15 loader;
loader.mAnm = new J3DAnmVisibilityFull();
loader.mAnm = JKR_NEW J3DAnmVisibilityFull();
return loader.load(i_data);
}
case 'bla1': {
J3DAnmFullLoader_v15 loader;
loader.mAnm = new J3DAnmClusterFull();
loader.mAnm = JKR_NEW J3DAnmClusterFull();
return loader.load(i_data);
}
case 'bxa1': {
J3DAnmFullLoader_v15 loader;
loader.mAnm = new J3DAnmVtxColorFull();
loader.mAnm = JKR_NEW J3DAnmVtxColorFull();
return loader.load(i_data);
}
default:
@@ -291,7 +293,7 @@ void J3DAnmFullLoader_v15::setAnmColor(J3DAnmColorFull* param_1,
param_1->mColorB = JSUConvertOffsetToPtr<u8>(param_2, param_2->mBValuesOffset);
param_1->mColorA = JSUConvertOffsetToPtr<u8>(param_2, param_2->mAValuesOffset);
param_1->mUpdateMaterialID =
JSUConvertOffsetToPtr<u16>(param_2, param_2->mUpdateMaterialIDOffset);
JSUConvertOffsetToPtr<BE(u16)>(param_2, param_2->mUpdateMaterialIDOffset);
param_1->mUpdateMaterialName.setResource(
JSUConvertOffsetToPtr<ResNTAB>(param_2, param_2->mNameTabOffset));
}
@@ -312,9 +314,9 @@ void J3DAnmFullLoader_v15::setAnmTexPattern(J3DAnmTexPattern* param_1,
param_1->field_0x14 = param_2->field_0xe;
param_1->mAnmTable =
JSUConvertOffsetToPtr<J3DAnmTexPatternFullTable>(param_2, param_2->mTableOffset);
param_1->mTextureIndex = JSUConvertOffsetToPtr<u16>(param_2, param_2->mValuesOffset);
param_1->mTextureIndex = JSUConvertOffsetToPtr<BE(u16)>(param_2, param_2->mValuesOffset);
param_1->mUpdateMaterialID =
JSUConvertOffsetToPtr<u16>(param_2, param_2->mUpdateMaterialIDOffset);
JSUConvertOffsetToPtr<BE(u16)>(param_2, param_2->mUpdateMaterialIDOffset);
param_1->mUpdateMaterialName.setResource(
JSUConvertOffsetToPtr<ResNTAB>(param_2, param_2->mNameTabOffset));
}
@@ -536,15 +538,15 @@ void J3DAnmKeyLoader_v15::setAnmTextureSRT(J3DAnmTextureSRTKey* param_1,
param_1->mAnmTable =
JSUConvertOffsetToPtr<J3DAnmTransformKeyTable>(param_2, param_2->mTableOffset);
param_1->mUpdateMaterialID =
JSUConvertOffsetToPtr<u16>(param_2, param_2->mUpdateMatIDOffset);
JSUConvertOffsetToPtr<BE(u16)>(param_2, param_2->mUpdateMatIDOffset);
param_1->mUpdateMaterialName.setResource(
JSUConvertOffsetToPtr<ResNTAB>(param_2, param_2->mNameTab1Offset));
param_1->mUpdateTexMtxID =
JSUConvertOffsetToPtr<u8>(param_2, param_2->mUpdateTexMtxIDOffset);
param_1->mSRTCenter = JSUConvertOffsetToPtr<Vec>(param_2, param_2->unkOffset);
param_1->mScaleData = JSUConvertOffsetToPtr<f32>(param_2, param_2->mScaleValOffset);
param_1->mRotData = JSUConvertOffsetToPtr<s16>(param_2, param_2->mRotValOffset);
param_1->mTransData = JSUConvertOffsetToPtr<f32>(param_2, param_2->mTransValOffset);
param_1->mSRTCenter = JSUConvertOffsetToPtr<BE(Vec)>(param_2, param_2->unkOffset);
param_1->mScaleData = JSUConvertOffsetToPtr<BE(f32)>(param_2, param_2->mScaleValOffset);
param_1->mRotData = JSUConvertOffsetToPtr<BE(s16)>(param_2, param_2->mRotValOffset);
param_1->mTransData = JSUConvertOffsetToPtr<BE(f32)>(param_2, param_2->mTransValOffset);
if (param_2->mNameTab2Offset) {
param_1->mPostUpdateMaterialName.setResource(
JSUConvertOffsetToPtr<ResNTAB>(param_2, param_2->mNameTab2Offset));
@@ -555,12 +557,12 @@ void J3DAnmKeyLoader_v15::setAnmTextureSRT(J3DAnmTextureSRTKey* param_1,
param_1->field_0x48 = param_2->field_0x3a;
param_1->field_0x58 =
JSUConvertOffsetToPtr<J3DAnmTransformKeyTable>(param_2, param_2->mInfoTable2Offset);
param_1->mPostUpdateMaterialID = JSUConvertOffsetToPtr<u16>(param_2, param_2->field_0x40);
param_1->mPostUpdateMaterialID = JSUConvertOffsetToPtr<BE(u16)>(param_2, param_2->field_0x40);
param_1->mPostUpdateTexMtxID = JSUConvertOffsetToPtr<u8>(param_2, param_2->field_0x48);
param_1->mPostSRTCenter = JSUConvertOffsetToPtr<Vec>(param_2, param_2->field_0x4c);
param_1->field_0x4c = JSUConvertOffsetToPtr<f32>(param_2, param_2->field_0x50);
param_1->field_0x50 = JSUConvertOffsetToPtr<s16>(param_2, param_2->field_0x54);
param_1->field_0x54 = JSUConvertOffsetToPtr<f32>(param_2, param_2->field_0x58);
param_1->mPostSRTCenter = JSUConvertOffsetToPtr<BE(Vec)>(param_2, param_2->field_0x4c);
param_1->field_0x4c = JSUConvertOffsetToPtr<BE(f32)>(param_2, param_2->field_0x50);
param_1->field_0x50 = JSUConvertOffsetToPtr<BE(s16)>(param_2, param_2->field_0x54);
param_1->field_0x54 = JSUConvertOffsetToPtr<BE(f32)>(param_2, param_2->field_0x58);
switch (param_2->field_0x5c) {
case 0:
case 1:
@@ -591,12 +593,12 @@ void J3DAnmKeyLoader_v15::setAnmColor(J3DAnmColorKey* param_1, const J3DAnmColor
param_1->field_0x12 = param_2->field_0x16;
param_1->mAnmTable =
JSUConvertOffsetToPtr<J3DAnmColorKeyTable>(param_2, param_2->mTableOffset);
param_1->mColorR = JSUConvertOffsetToPtr<s16>(param_2, param_2->mRValOffset);
param_1->mColorG = JSUConvertOffsetToPtr<s16>(param_2, param_2->mGValOffset);
param_1->mColorB = JSUConvertOffsetToPtr<s16>(param_2, param_2->mBValOffset);
param_1->mColorA = JSUConvertOffsetToPtr<s16>(param_2, param_2->mAValOffset);
param_1->mColorR = JSUConvertOffsetToPtr<BE(s16)>(param_2, param_2->mRValOffset);
param_1->mColorG = JSUConvertOffsetToPtr<BE(s16)>(param_2, param_2->mGValOffset);
param_1->mColorB = JSUConvertOffsetToPtr<BE(s16)>(param_2, param_2->mBValOffset);
param_1->mColorA = JSUConvertOffsetToPtr<BE(s16)>(param_2, param_2->mAValOffset);
param_1->mUpdateMaterialID =
JSUConvertOffsetToPtr<u16>(param_2, param_2->mUpdateMaterialIDOffset);
JSUConvertOffsetToPtr<BE(u16)>(param_2, param_2->mUpdateMaterialIDOffset);
param_1->mUpdateMaterialName.setResource(
JSUConvertOffsetToPtr<ResNTAB>(param_2, param_2->mNameTabOffset));
}
@@ -636,32 +638,32 @@ void J3DAnmKeyLoader_v15::setAnmTevReg(J3DAnmTevRegKey* param_1,
param_1->mAnmCRegKeyTable =
JSUConvertOffsetToPtr<J3DAnmCRegKeyTable>(param_2, param_2->mCRegTableOffset);
param_1->mCRegUpdateMaterialID =
JSUConvertOffsetToPtr<u16>(param_2, param_2->mCRegUpdateMaterialIDOffset);
JSUConvertOffsetToPtr<BE(u16)>(param_2, param_2->mCRegUpdateMaterialIDOffset);
param_1->mCRegUpdateMaterialName.setResource(
JSUConvertOffsetToPtr<ResNTAB>(param_2, param_2->mCRegNameTabOffset));
param_1->mKRegUpdateMaterialNum = param_2->mKRegUpdateMaterialNum;
param_1->mAnmKRegKeyTable =
JSUConvertOffsetToPtr<J3DAnmKRegKeyTable>(param_2, param_2->mKRegTableOffset);
param_1->mKRegUpdateMaterialID =
JSUConvertOffsetToPtr<u16>(param_2, param_2->mKRegUpdateMaterialIDOffset);
JSUConvertOffsetToPtr<BE(u16)>(param_2, param_2->mKRegUpdateMaterialIDOffset);
param_1->mKRegUpdateMaterialName.setResource(
JSUConvertOffsetToPtr<ResNTAB>(param_2, param_2->mKRegNameTabOffset));
param_1->mCRegDataCountR = param_2->field_0x10;
param_1->mCRegDataCountG = param_2->field_0x12;
param_1->mCRegDataCountB = param_2->field_0x14;
param_1->mCRegDataCountA = param_2->field_0x16;
param_1->mAnmCRegDataR = JSUConvertOffsetToPtr<s16>(param_2, param_2->mCRValuesOffset);
param_1->mAnmCRegDataG = JSUConvertOffsetToPtr<s16>(param_2, param_2->mCGValuesOffset);
param_1->mAnmCRegDataB = JSUConvertOffsetToPtr<s16>(param_2, param_2->mCBValuesOffset);
param_1->mAnmCRegDataA = JSUConvertOffsetToPtr<s16>(param_2, param_2->mCAValuesOffset);
param_1->mAnmCRegDataR = JSUConvertOffsetToPtr<BE(s16)>(param_2, param_2->mCRValuesOffset);
param_1->mAnmCRegDataG = JSUConvertOffsetToPtr<BE(s16)>(param_2, param_2->mCGValuesOffset);
param_1->mAnmCRegDataB = JSUConvertOffsetToPtr<BE(s16)>(param_2, param_2->mCBValuesOffset);
param_1->mAnmCRegDataA = JSUConvertOffsetToPtr<BE(s16)>(param_2, param_2->mCAValuesOffset);
param_1->mKRegDataCountR = param_2->field_0x18;
param_1->mKRegDataCountG = param_2->field_0x1a;
param_1->mKRegDataCountB = param_2->field_0x1c;
param_1->mKRegDataCountA = param_2->field_0x1e;
param_1->mAnmKRegDataR = JSUConvertOffsetToPtr<s16>(param_2, param_2->mKRValuesOffset);
param_1->mAnmKRegDataG = JSUConvertOffsetToPtr<s16>(param_2, param_2->mKGValuesOffset);
param_1->mAnmKRegDataB = JSUConvertOffsetToPtr<s16>(param_2, param_2->mKBValuesOffset);
param_1->mAnmKRegDataA = JSUConvertOffsetToPtr<s16>(param_2, param_2->mKAValuesOffset);
param_1->mAnmKRegDataR = JSUConvertOffsetToPtr<BE(s16)>(param_2, param_2->mKRValuesOffset);
param_1->mAnmKRegDataG = JSUConvertOffsetToPtr<BE(s16)>(param_2, param_2->mKGValuesOffset);
param_1->mAnmKRegDataB = JSUConvertOffsetToPtr<BE(s16)>(param_2, param_2->mKBValuesOffset);
param_1->mAnmKRegDataA = JSUConvertOffsetToPtr<BE(s16)>(param_2, param_2->mKAValuesOffset);
}
@@ -29,7 +29,7 @@ J3DClusterLoader_v15::~J3DClusterLoader_v15() {}
void* J3DClusterLoader_v15::load(const void* i_data) {
J3D_ASSERT_NULLPTR(98, i_data);
mpDeformData = new J3DDeformData();
mpDeformData = JKR_NEW J3DDeformData();
const JUTDataFileHeader* fileHeader = (JUTDataFileHeader*)i_data;
const JUTDataBlockHeader* block = &fileHeader->mFirstBlock;
@@ -58,13 +58,13 @@ void J3DClusterLoader_v15::readCluster(const J3DClusterBlock* block) {
if (block->mClusterName != NULL) {
mpDeformData->mClusterName =
new JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(block, block->mClusterName));
JKR_NEW JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(block, block->mClusterName));
} else {
mpDeformData->mClusterName = NULL;
}
if (block->mClusterKeyName != NULL) {
mpDeformData->mClusterKeyName =
new JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(block, block->mClusterKeyName));
JKR_NEW JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(block, block->mClusterKeyName));
} else {
mpDeformData->mClusterKeyName = NULL;
}
@@ -76,14 +76,14 @@ void J3DClusterLoader_v15::readCluster(const J3DClusterBlock* block) {
int clusterKeyPointerSize = (intptr_t)block->mClusterKeyPointer - (intptr_t)block->mClusterPointer;
int clusterVertexPointerSize = (intptr_t)block->mClusterVertex - (intptr_t)block->mClusterPointer;
int vtxPosSize = (intptr_t)block->mVtxPos - (intptr_t)block->mClusterPointer;
u8* arr = new (0x20) u8[vtxPosSize];
u8* arr = JKR_NEW_ARGS (0x20) u8[vtxPosSize];
memcpy(arr, JSUConvertOffsetToPtr<J3DCluster>(block, block->mClusterPointer), vtxPosSize);
mpDeformData->mClusterPointer = (J3DCluster*)arr;
mpDeformData->mClusterKeyPointer = (J3DClusterKey*)&arr[clusterKeyPointerSize];
mpDeformData->mClusterVertex = (J3DClusterVertex*)&arr[clusterVertexPointerSize];
#if TARGET_PC
mpDeformData->mDeformers = new J3DDeformer*[mpDeformData->getClusterNum()];
mpDeformData->mDeformers = JKR_NEW J3DDeformer*[mpDeformData->getClusterNum()];
#endif
for (int i = 0; i < mpDeformData->getClusterNum(); i++) {
@@ -94,14 +94,14 @@ void J3DClusterLoader_v15::readCluster(const J3DClusterBlock* block) {
cluster->mClusterVertex =
JSUConvertOffsetToPtr<J3DClusterVertex>(arr - (intptr_t)clusterPointer, cluster->mClusterVertex);
#endif
J3DDeformer* deformer = new J3DDeformer(mpDeformData);
J3DDeformer* deformer = JKR_NEW J3DDeformer(mpDeformData);
if (cluster->field_0x14 != 0) {
deformer->field_0xc = new f32[cluster->field_0x14 * 3];
deformer->field_0xc = JKR_NEW f32[cluster->field_0x14 * 3];
} else {
deformer->field_0xc = NULL;
}
deformer->mFlags = cluster->mFlags;
deformer->field_0x8 = new f32[cluster->mKeyNum];
deformer->field_0x8 = JKR_NEW f32[cluster->mKeyNum];
#if TARGET_PC
deformer->mArrayBase = arr - clusterPointer;
deformer->mBlockBase = block;
@@ -1,8 +1,9 @@
#include "JSystem/JSystem.h" // IWYU pragma: keep
#include "JSystem/J3DGraphAnimator/J3DJoint.h"
#include "JSystem/J3DGraphLoader/J3DJointFactory.h"
#include "JSystem/J3DGraphLoader/J3DModelLoader.h"
#include "JSystem/J3DGraphAnimator/J3DJoint.h"
#include "JSystem/JKernel/JKRHeap.h"
#include "JSystem/JSupport/JSupport.h"
J3DJointFactory::J3DJointFactory(J3DJointBlock const& block) {
@@ -27,7 +28,7 @@ J3DJointFactory::J3DJointFactory(J3DJointBlock const& block) {
}
J3DJoint* J3DJointFactory::create(int no) {
J3DJoint* joint = new J3DJoint();
J3DJoint* joint = JKR_NEW J3DJoint();
J3D_ASSERT_ALLOCMEM(50, joint);
joint->mJntNo = no;
joint->mKind = getKind(no);
@@ -5,6 +5,7 @@
#include <algorithm>
#include "JSystem/J3DGraphBase/J3DMaterial.h"
#include "JSystem/JKernel/JKRHeap.h"
#include "JSystem/JMath/JMath.h"
#include "JSystem/JSupport/JSupport.h"
#include "JSystem/JUtility/JUTAssert.h"
@@ -135,7 +136,7 @@ J3DMaterial* J3DMaterialFactory::createNormalMaterial(J3DMaterial* i_material, i
u32 pe_flag = getMdlDataFlag_PEFlag(i_flags);
BOOL ind_flag = (i_flags & 0x1000000) ? TRUE : FALSE;
if (i_material == NULL) {
i_material = new J3DMaterial();
i_material = JKR_NEW J3DMaterial();
J3D_ASSERT_ALLOCMEM(269, i_material);
}
i_material->mColorBlock = J3DMaterial::createColorBlock(color_flag);
@@ -235,14 +236,14 @@ J3DMaterial* J3DMaterialFactory::createNormalMaterial(J3DMaterial* i_material, i
J3DMaterial* J3DMaterialFactory::createPatchedMaterial(J3DMaterial* i_material, int i_idx,
u32 i_flags) const {
if (i_material == NULL) {
i_material = new J3DPatchedMaterial();
i_material = JKR_NEW J3DPatchedMaterial();
J3D_ASSERT_ALLOCMEM(430, i_material);
}
bool bVar1 = i_flags & 0x3000000 ? true : false;
i_material->mColorBlock = J3DMaterial::createColorBlock(0x40000000);
i_material->mTexGenBlock = new J3DTexGenBlockPatched();
i_material->mTexGenBlock = JKR_NEW J3DTexGenBlockPatched();
J3D_ASSERT_ALLOCMEM(440, i_material->mTexGenBlock);
i_material->mTevBlock = new J3DTevBlockPatched();
i_material->mTevBlock = JKR_NEW J3DTevBlockPatched();
J3D_ASSERT_ALLOCMEM(442, i_material->mTevBlock);
i_material->mIndBlock = J3DMaterial::createIndBlock(bVar1);
i_material->mPEBlock = J3DMaterial::createPEBlock(0x10000000, getMaterialMode(i_idx));
@@ -346,17 +347,17 @@ void J3DMaterialFactory::modifyPatchedCurrentMtx(J3DMaterial* i_material, int i_
J3DMaterial* J3DMaterialFactory::createLockedMaterial(J3DMaterial* i_material, int i_idx,
u32 i_flags) const {
if (i_material == NULL) {
i_material = new J3DLockedMaterial();
i_material = JKR_NEW J3DLockedMaterial();
J3D_ASSERT_ALLOCMEM(629, i_material);
i_material->mColorBlock = new J3DColorBlockNull();
i_material->mColorBlock = JKR_NEW J3DColorBlockNull();
J3D_ASSERT_ALLOCMEM(634, i_material->mColorBlock);
i_material->mTexGenBlock = new J3DTexGenBlockNull();
i_material->mTexGenBlock = JKR_NEW J3DTexGenBlockNull();
J3D_ASSERT_ALLOCMEM(636, i_material->mTexGenBlock);
i_material->mTevBlock = new J3DTevBlockNull();
i_material->mTevBlock = JKR_NEW J3DTevBlockNull();
J3D_ASSERT_ALLOCMEM(638, i_material->mTevBlock);
i_material->mIndBlock = new J3DIndBlockNull();
i_material->mIndBlock = JKR_NEW J3DIndBlockNull();
J3D_ASSERT_ALLOCMEM(640, i_material->mIndBlock);
i_material->mPEBlock = new J3DPEBlockNull();
i_material->mPEBlock = JKR_NEW J3DPEBlockNull();
J3D_ASSERT_ALLOCMEM(642, i_material->mPEBlock);
i_material->mIndex = i_idx;
i_material->mMaterialMode = mpMaterialMode[i_idx];
@@ -370,7 +371,7 @@ J3DMaterial* J3DMaterialFactory::createLockedMaterial(J3DMaterial* i_material, i
i_material->getTevBlock()->setTevRegOffset(mpPatchingInfo[i_idx].mTevRegOffset);
i_material->getPEBlock()->setFogOffset(mpPatchingInfo[i_idx].mFogOffset);
if (i_material->mSharedDLObj == NULL) {
i_material->mSharedDLObj = new J3DDisplayListObj();
i_material->mSharedDLObj = JKR_NEW J3DDisplayListObj();
J3D_ASSERT_ALLOCMEM(673, i_material->mSharedDLObj);
i_material->mSharedDLObj->setSingleDisplayList((void*)(
mpDisplayListInit[i_idx].mOffset + (uintptr_t)&mpDisplayListInit[i_idx]),
@@ -544,9 +545,9 @@ J3DTexMtx* J3DMaterialFactory::newTexMtx(int i_idx, int i_no) const {
be_swap(tex_mtx_info.mSRT.mRotation);
be_swap(tex_mtx_info.mSRT.mTranslationX);
be_swap(tex_mtx_info.mSRT.mTranslationY);
tex_mtx = new J3DTexMtx(tex_mtx_info);
tex_mtx = JKR_NEW J3DTexMtx(tex_mtx_info);
#else
tex_mtx = new J3DTexMtx(mpTexMtxInfo[mtl_init_data->mTexMtxIdx[i_no]]);
tex_mtx = JKR_NEW J3DTexMtx(mpTexMtxInfo[mtl_init_data->mTexMtxIdx[i_no]]);
#endif
}
return tex_mtx;
@@ -1,8 +1,9 @@
#include "JSystem/JSystem.h" // IWYU pragma: keep
#include "JSystem/J3DGraphLoader/J3DMaterialFactory_v21.h"
#include "JSystem/J3DGraphLoader/J3DMaterialFactory.h"
#include "JSystem/J3DGraphBase/J3DMaterial.h"
#include "JSystem/J3DGraphLoader/J3DMaterialFactory.h"
#include "JSystem/J3DGraphLoader/J3DMaterialFactory_v21.h"
#include "JSystem/JKernel/JKRHeap.h"
#include "JSystem/JMath/JMath.h"
#include "JSystem/JSupport/JSupport.h"
@@ -89,7 +90,7 @@ J3DMaterial* J3DMaterialFactory_v21::create(J3DMaterial* i_material, int i_idx,
u32 pe_flag = getMdlDataFlag_PEFlag(i_flags);
BOOL ind_flag = (i_flags & 0x1000000) ? TRUE : FALSE;
if (i_material == NULL) {
i_material = new J3DMaterial();
i_material = JKR_NEW J3DMaterial();
}
i_material->mColorBlock = J3DMaterial::createColorBlock(color_flag);
i_material->mTexGenBlock = J3DMaterial::createTexGenBlock(texgen_flag);
@@ -221,7 +222,7 @@ J3DTexMtx* J3DMaterialFactory_v21::newTexMtx(int i_idx, int i_no) const {
J3DTexMtx* tex_mtx = NULL;
J3DMaterialInitData_v21* mtl_init_data = &mpMaterialInitData[mpMaterialID[i_idx]];
if (mtl_init_data->mTexMtxIdx[i_no] != 0xffff) {
tex_mtx = new J3DTexMtx(mpTexMtxInfo[mtl_init_data->mTexMtxIdx[i_no]]);
tex_mtx = JKR_NEW J3DTexMtx(mpTexMtxInfo[mtl_init_data->mTexMtxIdx[i_no]]);
}
return tex_mtx;
}
@@ -1,19 +1,21 @@
#include "JSystem/JSystem.h" // IWYU pragma: keep
#include "JSystem/J3DGraphLoader/J3DModelLoader.h"
#include "JSystem/J3DGraphAnimator/J3DAnimation.h"
#include "JSystem/J3DGraphAnimator/J3DShapeTable.h"
#include "JSystem/J3DGraphAnimator/J3DJointTree.h"
#include "JSystem/J3DGraphAnimator/J3DJoint.h"
#include "JSystem/J3DGraphAnimator/J3DJointTree.h"
#include "JSystem/J3DGraphAnimator/J3DModelData.h"
#include "JSystem/J3DGraphAnimator/J3DShapeTable.h"
#include "JSystem/J3DGraphBase/J3DMaterial.h"
#include "JSystem/J3DGraphLoader/J3DJointFactory.h"
#include "JSystem/J3DGraphLoader/J3DMaterialFactory.h"
#include "JSystem/J3DGraphLoader/J3DMaterialFactory_v21.h"
#include "JSystem/J3DGraphLoader/J3DModelLoader.h"
#include "JSystem/J3DGraphLoader/J3DShapeFactory.h"
#include "JSystem/J3DGraphAnimator/J3DModelData.h"
#include "JSystem/J3DGraphBase/J3DMaterial.h"
#include "JSystem/JUtility/JUTNameTab.h"
#include "JSystem/JKernel/JKRHeap.h"
#include "JSystem/JSupport/JSupport.h"
#include "JSystem/JUtility/JUTNameTab.h"
#include "SSystem/SComponent/c_xyz.h"
#include <utility>
J3DModelLoader::J3DModelLoader() :
mpModelData(NULL),
@@ -64,7 +66,7 @@ J3DModelData* J3DModelLoaderDataBase::loadBinaryDisplayList(const void* i_data,
J3DModelData* J3DModelLoader::load(void const* i_data, u32 i_flags) {
s32 freeSize = JKRGetCurrentHeap()->getTotalFreeSize();
mpModelData = new J3DModelData();
mpModelData = JKR_NEW J3DModelData();
J3D_ASSERT_ALLOCMEM(177, mpModelData);
mpModelData->clear();
mpModelData->mpRawData = i_data;
@@ -123,7 +125,7 @@ J3DModelData* J3DModelLoader::load(void const* i_data, u32 i_flags) {
J3DMaterialTable* J3DModelLoader::loadMaterialTable(void const* i_data) {
int flags = 0x51100000;
mpMaterialTable = new J3DMaterialTable();
mpMaterialTable = JKR_NEW J3DMaterialTable();
J3D_ASSERT_ALLOCMEM(279, mpMaterialTable);
mpMaterialTable->clear();
J3DModelFileData const* data = (J3DModelFileData*)i_data;
@@ -146,7 +148,7 @@ J3DMaterialTable* J3DModelLoader::loadMaterialTable(void const* i_data) {
block = (J3DModelBlock*)((uintptr_t)block + block->mBlockSize);
}
if (mpMaterialTable->mTexture == NULL) {
mpMaterialTable->mTexture = new J3DTexture(0, NULL);
mpMaterialTable->mTexture = JKR_NEW J3DTexture(0, NULL);
J3D_ASSERT_ALLOCMEM(319, mpMaterialTable->mTexture);
}
return mpMaterialTable;
@@ -157,7 +159,7 @@ inline u32 getBdlFlag_MaterialType(u32 flags) {
}
J3DModelData* J3DModelLoader::loadBinaryDisplayList(void const* i_data, u32 i_flags) {
mpModelData = new J3DModelData();
mpModelData = JKR_NEW J3DModelData();
J3D_ASSERT_ALLOCMEM(338, mpModelData);
mpModelData->clear();
mpModelData->mpRawData = i_data;
@@ -262,13 +264,13 @@ void J3DModelLoader::readInformation(J3DModelInfoBlock const* i_block, u32 i_fla
J3DMtxCalc* mtx_calc = NULL;
switch (mpModelData->mFlags & 0xf) {
case 0:
mtx_calc = new J3DMtxCalcNoAnm<J3DMtxCalcCalcTransformBasic,J3DMtxCalcJ3DSysInitBasic>();
mtx_calc = JKR_NEW J3DMtxCalcNoAnm<J3DMtxCalcCalcTransformBasic,J3DMtxCalcJ3DSysInitBasic>();
break;
case 1:
mtx_calc = new J3DMtxCalcNoAnm<J3DMtxCalcCalcTransformSoftimage,J3DMtxCalcJ3DSysInitSoftimage>();
mtx_calc = JKR_NEW J3DMtxCalcNoAnm<J3DMtxCalcCalcTransformSoftimage,J3DMtxCalcJ3DSysInitSoftimage>();
break;
case 2:
mtx_calc = new J3DMtxCalcNoAnm<J3DMtxCalcCalcTransformMaya,J3DMtxCalcJ3DSysInitMaya>();
mtx_calc = JKR_NEW J3DMtxCalcNoAnm<J3DMtxCalcCalcTransformMaya,J3DMtxCalcJ3DSysInitMaya>();
break;
default:
JUT_PANIC(529, "Error : Invalid MtxCalcType.");
@@ -279,8 +281,24 @@ void J3DModelLoader::readInformation(J3DModelInfoBlock const* i_block, u32 i_fla
mpModelData->getVertexData().mPacketNum = i_block->mPacketNum;
mpModelData->getVertexData().mVtxNum = i_block->mVtxNum;
mpModelData->setHierarchy(JSUConvertOffsetToPtr<J3DModelHierarchy>(i_block, i_block->mpHierarchy));
#if TARGET_PC
mpModelData->getVertexData().mHasReadInformation = true;
#endif
}
#if TARGET_PC
static GXVtxAttrFmtList getFmt(GXVtxAttrFmtList* i_fmtList, GXAttr i_attr) {
for (; i_fmtList->attr != GX_VA_NULL; i_fmtList++) {
if (i_fmtList->attr == i_attr) {
return *i_fmtList;
}
}
OSPanic(__FILE__, __LINE__, "Unable to find vertex attribute format!");
}
#endif
static GXCompType getFmtType(GXVtxAttrFmtList* i_fmtList, GXAttr i_attr) {
for (; i_fmtList->attr != GX_VA_NULL; i_fmtList++) {
if (i_fmtList->attr == i_attr) {
@@ -336,9 +354,11 @@ void J3DModelLoader::readVertex(J3DVertexBlock const* i_block) {
if (vertex_data.mVtxNrmArray == NULL) {
vertex_data.mNrmNum = 0;
} else if (nrm_end != NULL) {
vertex_data.mNrmNum = ((uintptr_t)nrm_end - (uintptr_t)vertex_data.mVtxNrmArray) / nrm_size + 1;
vertex_data.mNrmNum =
((uintptr_t)nrm_end - (uintptr_t)vertex_data.mVtxNrmArray) / nrm_size + 1;
} else {
vertex_data.mNrmNum = (i_block->mBlockSize - (uintptr_t)i_block->mpVtxNrmArray) / nrm_size + 1;
vertex_data.mNrmNum =
(i_block->mBlockSize - (uintptr_t)i_block->mpVtxNrmArray) / nrm_size + 1;
}
void* color0_end = NULL;
@@ -351,9 +371,11 @@ void J3DModelLoader::readVertex(J3DVertexBlock const* i_block) {
if (vertex_data.mVtxColorArray[0] == NULL) {
vertex_data.mColNum = 0;
} else if (color0_end != NULL) {
vertex_data.mColNum = ((uintptr_t)color0_end - (uintptr_t)vertex_data.mVtxColorArray[0]) / 4 + 1;
vertex_data.mColNum =
((uintptr_t)color0_end - (uintptr_t)vertex_data.mVtxColorArray[0]) / 4 + 1;
} else {
vertex_data.mColNum = (i_block->mBlockSize - (uintptr_t)i_block->mpVtxColorArray[0]) / 4 + 1;
vertex_data.mColNum =
(i_block->mBlockSize - (uintptr_t)i_block->mpVtxColorArray[0]) / 4 + 1;
}
int local_28 = 0;
@@ -368,21 +390,182 @@ void J3DModelLoader::readVertex(J3DVertexBlock const* i_block) {
if (local_28) {
vertex_data.mTexCoordNum = (local_28 - (uintptr_t)vertex_data.mVtxTexCoordArray[0]) / 8 + 1;
} else {
vertex_data.mTexCoordNum = (i_block->mBlockSize - (uintptr_t)i_block->mpVtxTexCoordArray[0]) / 8 + 1;
vertex_data.mTexCoordNum =
(i_block->mBlockSize - (uintptr_t)i_block->mpVtxTexCoordArray[0]) / 8 + 1;
}
#if TARGET_PC
readVertexData(*i_block, vertex_data);
#endif
}
#if TARGET_PC
// Approach taken from here:
// https://github.com/zeldaret/tp/blob/6c72b91f8e477ee94ccdc56b94605140e9f2abd6/libs/JSystem/src/J3DGraphBase/J3DShape.cpp#L156-L211
template <typename T>
static void FixArrayEndian(void* arrayStart, void* arrayEnd) {
#if TARGET_LITTLE_ENDIAN
u32 itemCount = ((u8*)arrayEnd - (u8*)arrayStart) / sizeof(T);
be_swap((T*)arrayStart, itemCount);
#endif
}
static void FixArrayEndian_24(void* arrayStart, void* arrayEnd) {
#if TARGET_LITTLE_ENDIAN
for (u8* work = (u8*)arrayStart; work != (u8*)arrayEnd; work += 3)
std::swap(work[0], work[2]);
#endif
}
static void FixArrayEndian(void* arrayStart, void* arrayEnd, u32 stride) {
switch (stride) {
case 1:
// Nothing needs to happen here!
break;
case 2:
FixArrayEndian<u16>(arrayStart, arrayEnd);
break;
case 3:
FixArrayEndian_24(arrayStart, arrayEnd);
break;
case 4:
FixArrayEndian<u32>(arrayStart, arrayEnd);
break;
default:
OSPanic(__FILE__, __LINE__, "Unknown component type?");
}
}
static GXAttr VertexBlockAttrOrder[13] = {
GX_VA_POS,
GX_VA_NRM,
GX_VA_NBT,
GX_VA_CLR0,
GX_VA_CLR1,
GX_VA_TEX0,
GX_VA_TEX1,
GX_VA_TEX2,
GX_VA_TEX3,
GX_VA_TEX4,
GX_VA_TEX5,
GX_VA_TEX6,
GX_VA_TEX7,
};
static void* GetDataEnd(const J3DVertexBlock& block, int start) {
const BE(u32)* attrPtrBase = &block.mpVtxPosArray;
for (int i = start + 1; i < ARRAY_SIZEU(VertexBlockAttrOrder); i++) {
if (attrPtrBase[i] != 0) {
return JSUConvertOffsetToPtr<void>(&block, attrPtrBase[i]);
}
}
return JSUConvertOffsetToPtr<void>(&block, block.mBlockSize);
}
auto StrideForData(GXAttr attr, GXCompType type, GXCompCnt cnt) -> std::pair<u32, u32> {
auto CompTypeStrideRaw = [&] {
if (type == GX_F32)
return 4;
else if (type == GX_U16 || type == GX_S16)
return 2;
else
return 1;
};
auto HandleColor = [&]() -> std::pair<u32, u32> {
if (type == GX_RGB565)
return {1, 2}; // u16[1]
else if (type == GX_RGB8)
return {3, 1}; // u8[3]
else if (type == GX_RGBX8)
return {4, 1}; // u8[4]
else if (type == GX_RGBA4)
return {1, 2}; // u16[1]
else if (type == GX_RGBA6)
return {3, 1}; // u8[3]
else if (type == GX_RGBA8)
return {4, 1}; // u8[4]
};
auto CompCnt = [&] {
if (attr == GX_VA_POS) {
return cnt == GX_POS_XY ? 2 : 3;
} else if (attr == GX_VA_NRM) {
return cnt == GX_NRM_XYZ ? 3 : 9; // NBT3 is lies
} else if (attr >= GX_VA_CLR0 && attr <= GX_VA_CLR1) {
return cnt == GX_CLR_RGB ? 3 : 4; // clr is special anyway
} else if (attr >= GX_VA_TEX0 && attr <= GX_VA_TEX7) {
return cnt == GX_TEX_S ? 1 : 2;
} else {
JUT_ASSERT(1234, false);
}
};
if (attr >= GX_VA_CLR0 && attr <= GX_VA_CLR1) {
return HandleColor();
} else {
int compCnt = CompCnt();
int compStride = CompTypeStrideRaw();
return {compCnt, compStride};
}
}
void J3DModelLoader::readVertexData(const J3DVertexBlock& block, J3DVertexData& data) {
if (!data.mHasReadInformation) {
OSPanic(__FILE__, __LINE__, "Model has VTX1 before INF1?");
}
const BE(u32)* attrPtrBase = &block.mpVtxPosArray;
for (int i = 0; i < ARRAY_SIZEU(VertexBlockAttrOrder); i++) {
GXAttr attr = VertexBlockAttrOrder[i];
if (attrPtrBase[i] == 0) {
continue;
}
GXVtxAttrFmtList fmt = getFmt(data.mVtxAttrFmtList, attr);
void* startAddr = JSUConvertOffsetToPtr<void>(&block, attrPtrBase[i]);
void* endAddr = GetDataEnd(block, i);
auto [compCnt, compStride] = StrideForData(attr, fmt.type, fmt.cnt);
u32 vertStride = compStride * compCnt;
data.mVtxArrStride[attr - GX_VA_POS] = vertStride;
u32 addrDiff = u32((u8*)endAddr - (u8*)startAddr);
u32 num = addrDiff / vertStride;
data.mVtxArrNum[attr - GX_VA_POS] = num;
FixArrayEndian(startAddr, endAddr, compStride);
if (attr == GX_VA_POS) {
// can be a little off due to 0x20 alignment, account for that
u32 expect = ((data.mVtxNum * vertStride) + 0x1F) & ~0x1F;
JUT_ASSERT(1234, expect == addrDiff);
} else if (attr == GX_VA_NRM) {
data.mNrmNum = num;
} else if (attr == GX_VA_CLR0) {
data.mColNum = num;
} else if (attr == GX_VA_TEX0) {
data.mTexCoordNum = num;
}
}
}
#endif
void J3DModelLoader::readEnvelop(J3DEnvelopeBlock const* i_block) {
J3D_ASSERT_NULLPTR(724, i_block);
mpModelData->getJointTree().mWEvlpMtxNum = i_block->mWEvlpMtxNum;
mpModelData->getJointTree().mWEvlpMixMtxNum =
JSUConvertOffsetToPtr<u8>(i_block, i_block->mpWEvlpMixMtxNum);
mpModelData->getJointTree().mWEvlpMixMtxIndex =
JSUConvertOffsetToPtr<u16>(i_block, i_block->mpWEvlpMixIndex);
JSUConvertOffsetToPtr<BE(u16)>(i_block, i_block->mpWEvlpMixIndex);
mpModelData->getJointTree().mWEvlpMixWeight =
JSUConvertOffsetToPtr<f32>(i_block, i_block->mpWEvlpMixWeight);
JSUConvertOffsetToPtr<BE(f32)>(i_block, i_block->mpWEvlpMixWeight);
mpModelData->getJointTree().mInvJointMtx =
JSUConvertOffsetToPtr<Mtx>(i_block, i_block->mpInvJointMtx);
JSUConvertOffsetToPtr<BE(Mtx)>(i_block, i_block->mpInvJointMtx);
}
void J3DModelLoader::readDraw(J3DDrawBlock const* i_block) {
@@ -390,7 +573,7 @@ void J3DModelLoader::readDraw(J3DDrawBlock const* i_block) {
J3DDrawMtxData* drawMtxData = mpModelData->getDrawMtxData();
drawMtxData->mEntryNum = i_block->mMtxNum - mpModelData->getWEvlpMtxNum();
drawMtxData->mDrawMtxFlag = JSUConvertOffsetToPtr<u8>(i_block, i_block->mpDrawMtxFlag);
drawMtxData->mDrawMtxIndex = JSUConvertOffsetToPtr<u16>(i_block, i_block->mpDrawMtxIndex);
drawMtxData->mDrawMtxIndex = JSUConvertOffsetToPtr<BE(u16)>(i_block, i_block->mpDrawMtxIndex);
u16 i;
for (i = 0; i < drawMtxData->mEntryNum; i++) {
if (drawMtxData->mDrawMtxFlag[i] == 1) {
@@ -398,7 +581,7 @@ void J3DModelLoader::readDraw(J3DDrawBlock const* i_block) {
}
}
drawMtxData->mDrawFullWgtMtxNum = i;
mpModelData->getJointTree().mWEvlpImportantMtxIdx = new u16[drawMtxData->mEntryNum];
mpModelData->getJointTree().mWEvlpImportantMtxIdx = JKR_NEW u16[drawMtxData->mEntryNum];
J3D_ASSERT_ALLOCMEM(767, mpModelData->getJointTree().mWEvlpImportantMtxIdx);
}
@@ -408,13 +591,13 @@ void J3DModelLoader::readJoint(J3DJointBlock const* i_block) {
mpModelData->getJointTree().mJointNum = i_block->mJointNum;
if (i_block->mpNameTable != NULL) {
mpModelData->getJointTree().mJointName =
new JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(i_block, i_block->mpNameTable));
JKR_NEW JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(i_block, i_block->mpNameTable));
J3D_ASSERT_ALLOCMEM(791, mpModelData->getJointTree().mJointName);
} else {
mpModelData->getJointTree().mJointName = NULL;
}
mpModelData->getJointTree().mJointNodePointer =
new J3DJoint*[mpModelData->getJointTree().mJointNum];
JKR_NEW J3DJoint*[mpModelData->getJointTree().mJointNum];
J3D_ASSERT_ALLOCMEM(797, mpModelData->getJointTree().mJointNodePointer);
for (u16 i = 0; i < mpModelData->getJointNum(); i++) {
mpModelData->getJointTree().mJointNodePointer[i] = factory.create(i);
@@ -428,15 +611,15 @@ void J3DModelLoader_v26::readMaterial(J3DMaterialBlock const* i_block, u32 i_fla
mpMaterialTable->mUniqueMatNum = factory.countUniqueMaterials();
if (i_block->mpNameTable != NULL) {
mpMaterialTable->mMaterialName =
new JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(i_block, i_block->mpNameTable));
JKR_NEW JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(i_block, i_block->mpNameTable));
J3D_ASSERT_ALLOCMEM(832, mpMaterialTable->mMaterialName);
} else {
mpMaterialTable->mMaterialName = NULL;
}
mpMaterialTable->mMaterialNodePointer = new J3DMaterial*[mpMaterialTable->mMaterialNum];
mpMaterialTable->mMaterialNodePointer = JKR_NEW J3DMaterial*[mpMaterialTable->mMaterialNum];
J3D_ASSERT_ALLOCMEM(841, mpMaterialTable->mMaterialNodePointer);
if (i_flags & 0x200000) {
mpMaterialTable->field_0x10 = new (0x20) J3DMaterial[mpMaterialTable->mUniqueMatNum];
mpMaterialTable->field_0x10 = JKR_NEW_ARGS (0x20) J3DMaterial[mpMaterialTable->mUniqueMatNum];
J3D_ASSERT_ALLOCMEM(846, mpMaterialTable->field_0x10);
} else {
mpMaterialTable->field_0x10 = NULL;
@@ -474,15 +657,15 @@ void J3DModelLoader_v21::readMaterial_v21(J3DMaterialBlock_v21 const* i_block, u
mpMaterialTable->mUniqueMatNum = factory.countUniqueMaterials();
if (i_block->mpNameTable != NULL) {
mpMaterialTable->mMaterialName =
new JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(i_block, i_block->mpNameTable));
JKR_NEW JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(i_block, i_block->mpNameTable));
J3D_ASSERT_ALLOCMEM(930, mpMaterialTable->mMaterialName);
} else {
mpMaterialTable->mMaterialName = NULL;
}
mpMaterialTable->mMaterialNodePointer = new J3DMaterial*[mpMaterialTable->mMaterialNum];
mpMaterialTable->mMaterialNodePointer = JKR_NEW J3DMaterial*[mpMaterialTable->mMaterialNum];
J3D_ASSERT_ALLOCMEM(940, mpMaterialTable->mMaterialNodePointer);
if (i_flags & 0x200000) {
mpMaterialTable->field_0x10 = new (0x20) J3DMaterial[mpMaterialTable->mUniqueMatNum];
mpMaterialTable->field_0x10 = JKR_NEW_ARGS (0x20) J3DMaterial[mpMaterialTable->mUniqueMatNum];
J3D_ASSERT_ALLOCMEM(945, mpMaterialTable->field_0x10);
} else {
mpMaterialTable->field_0x10 = NULL;
@@ -518,12 +701,12 @@ void J3DModelLoader::readShape(J3DShapeBlock const* i_block, u32 i_flags) {
shape_table->mShapeNum = i_block->mShapeNum;
if (i_block->mpNameTable != NULL) {
shape_table->mShapeName =
new JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(i_block, i_block->mpNameTable));
JKR_NEW JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(i_block, i_block->mpNameTable));
J3D_ASSERT_ALLOCMEM(1026, shape_table->mShapeName);
} else {
shape_table->mShapeName = NULL;
}
shape_table->mShapeNodePointer = new J3DShape*[shape_table->mShapeNum];
shape_table->mShapeNodePointer = JKR_NEW J3DShape*[shape_table->mShapeNum];
J3D_ASSERT_ALLOCMEM(1034, shape_table->mShapeNodePointer);
factory.allocVcdVatCmdBuffer(shape_table->mShapeNum);
J3DModelHierarchy const* hierarchy_entry = mpModelData->getHierarchy();
@@ -543,12 +726,12 @@ void J3DModelLoader::readTexture(J3DTextureBlock const* i_block) {
ResTIMG* texture_res = JSUConvertOffsetToPtr<ResTIMG>(i_block, i_block->mpTextureRes);
if (i_block->mpNameTable != NULL) {
mpMaterialTable->mTextureName =
new JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(i_block, i_block->mpNameTable));
JKR_NEW JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(i_block, i_block->mpNameTable));
J3D_ASSERT_ALLOCMEM(1077, mpMaterialTable->mTextureName);
} else {
mpMaterialTable->mTextureName = NULL;
}
mpMaterialTable->mTexture = new J3DTexture(texture_num, texture_res);
mpMaterialTable->mTexture = JKR_NEW J3DTexture(texture_num, texture_res);
J3D_ASSERT_ALLOCMEM(1084, mpMaterialTable->mTexture);
}
@@ -558,12 +741,12 @@ void J3DModelLoader_v26::readMaterialTable(J3DMaterialBlock const* i_block, u32
mpMaterialTable->mMaterialNum = i_block->mMaterialNum;
if (i_block->mpNameTable != NULL) {
mpMaterialTable->mMaterialName =
new JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(i_block, i_block->mpNameTable));
JKR_NEW JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(i_block, i_block->mpNameTable));
J3D_ASSERT_ALLOCMEM(1114, mpMaterialTable->mMaterialName);
} else {
mpMaterialTable->mMaterialName = NULL;
}
mpMaterialTable->mMaterialNodePointer = new J3DMaterial*[mpMaterialTable->mMaterialNum];
mpMaterialTable->mMaterialNodePointer = JKR_NEW J3DMaterial*[mpMaterialTable->mMaterialNum];
J3D_ASSERT_ALLOCMEM(1121, mpMaterialTable->mMaterialNodePointer);
for (u16 i = 0; i < mpMaterialTable->mMaterialNum; i++) {
mpMaterialTable->mMaterialNodePointer[i] =
@@ -581,12 +764,12 @@ void J3DModelLoader_v21::readMaterialTable_v21(J3DMaterialBlock_v21 const* i_blo
mpMaterialTable->mMaterialNum = i_block->mMaterialNum;
if (i_block->mpNameTable != NULL) {
mpMaterialTable->mMaterialName =
new JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(i_block, i_block->mpNameTable));
JKR_NEW JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(i_block, i_block->mpNameTable));
J3D_ASSERT_ALLOCMEM(1165, mpMaterialTable->mMaterialName);
} else {
mpMaterialTable->mMaterialName = NULL;
}
mpMaterialTable->mMaterialNodePointer = new J3DMaterial*[mpMaterialTable->mMaterialNum];
mpMaterialTable->mMaterialNodePointer = JKR_NEW J3DMaterial*[mpMaterialTable->mMaterialNum];
J3D_ASSERT_ALLOCMEM(1172, mpMaterialTable->mMaterialNodePointer);
for (u16 i = 0; i < mpMaterialTable->mMaterialNum; i++) {
mpMaterialTable->mMaterialNodePointer[i] =
@@ -604,12 +787,12 @@ void J3DModelLoader::readTextureTable(J3DTextureBlock const* i_block) {
ResTIMG* texture_res = JSUConvertOffsetToPtr<ResTIMG>(i_block, i_block->mpTextureRes);
if (i_block->mpNameTable != NULL) {
mpMaterialTable->mTextureName =
new JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(i_block, i_block->mpNameTable));
JKR_NEW JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(i_block, i_block->mpNameTable));
J3D_ASSERT_ALLOCMEM(1211, mpMaterialTable->mTextureName);
} else {
mpMaterialTable->mTextureName = NULL;
}
mpMaterialTable->mTexture = new J3DTexture(texture_num, texture_res);
mpMaterialTable->mTexture = JKR_NEW J3DTexture(texture_num, texture_res);
J3D_ASSERT_ALLOCMEM(1218, mpMaterialTable->mTexture);
}
@@ -620,12 +803,12 @@ void J3DModelLoader::readPatchedMaterial(J3DMaterialBlock const* i_block, u32 i_
mpMaterialTable->mUniqueMatNum = factory.countUniqueMaterials();
if (i_block->mpNameTable != NULL) {
mpMaterialTable->mMaterialName =
new JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(i_block, i_block->mpNameTable));
JKR_NEW JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(i_block, i_block->mpNameTable));
J3D_ASSERT_ALLOCMEM(1251, mpMaterialTable->mMaterialName);
} else {
mpMaterialTable->mMaterialName = NULL;
}
mpMaterialTable->mMaterialNodePointer = new J3DMaterial*[mpMaterialTable->mMaterialNum];
mpMaterialTable->mMaterialNodePointer = JKR_NEW J3DMaterial*[mpMaterialTable->mMaterialNum];
J3D_ASSERT_ALLOCMEM(1260, mpMaterialTable->mMaterialNodePointer);
mpMaterialTable->field_0x10 = NULL;
for (u16 i = 0; i < mpMaterialTable->mMaterialNum; i++) {
@@ -646,12 +829,12 @@ void J3DModelLoader::readMaterialDL(J3DMaterialDLBlock const* i_block, u32 i_fla
mpMaterialTable->mUniqueMatNum = i_block->mMaterialNum;
if (i_block->mpNameTable != NULL) {
mpMaterialTable->mMaterialName =
new JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(i_block, i_block->mpNameTable));
JKR_NEW JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(i_block, i_block->mpNameTable));
J3D_ASSERT_ALLOCMEM(1312, mpMaterialTable->mMaterialName);
} else {
mpMaterialTable->mMaterialName = NULL;
}
mpMaterialTable->mMaterialNodePointer = new J3DMaterial*[mpMaterialTable->mMaterialNum];
mpMaterialTable->mMaterialNodePointer = JKR_NEW J3DMaterial*[mpMaterialTable->mMaterialNum];
J3D_ASSERT_ALLOCMEM(1320, mpMaterialTable->mMaterialNodePointer);
mpMaterialTable->field_0x10 = NULL;
for (u16 i = 0; i < mpMaterialTable->mMaterialNum; i++) {
@@ -41,14 +41,14 @@ J3DShapeFactory::J3DShapeFactory(J3DShapeBlock const& block) {
}
J3DShape* J3DShapeFactory::create(int no, u32 flag, GXVtxDescList* vtxDesc) {
J3DShape* shape = new J3DShape;
J3DShape* shape = JKR_NEW J3DShape;
J3D_ASSERT_ALLOCMEM(67, shape);
shape->mMtxGroupNum = getMtxGroupNum(no);
shape->mRadius = getRadius(no);
shape->mVtxDesc = getVtxDescList(no);
shape->mShapeMtx = new J3DShapeMtx*[shape->mMtxGroupNum];
shape->mShapeMtx = JKR_NEW J3DShapeMtx*[shape->mMtxGroupNum];
J3D_ASSERT_ALLOCMEM(74, shape->mShapeMtx);
shape->mShapeDraw = new J3DShapeDraw*[shape->mMtxGroupNum];
shape->mShapeDraw = JKR_NEW J3DShapeDraw*[shape->mMtxGroupNum];
J3D_ASSERT_ALLOCMEM(76, shape->mShapeDraw);
shape->mMin = getMin(no);
shape->mMax = getMax(no);
@@ -85,16 +85,16 @@ J3DShapeMtx* J3DShapeFactory::newShapeMtx(u32 flag, int shapeNo, int mtxGroupNo)
case J3DMdlDataFlag_ConcatView:
switch (shapeInitData.mShapeMtxType) {
case J3DShapeMtxType_Mtx:
ret = new J3DShapeMtxConcatView(mtxInitData.mUseMtxIndex);
ret = JKR_NEW J3DShapeMtxConcatView(mtxInitData.mUseMtxIndex);
break;
case J3DShapeMtxType_BBoard:
ret = new J3DShapeMtxBBoardConcatView(mtxInitData.mUseMtxIndex);
ret = JKR_NEW J3DShapeMtxBBoardConcatView(mtxInitData.mUseMtxIndex);
break;
case J3DShapeMtxType_YBBoard:
ret = new J3DShapeMtxYBBoardConcatView(mtxInitData.mUseMtxIndex);
ret = JKR_NEW J3DShapeMtxYBBoardConcatView(mtxInitData.mUseMtxIndex);
break;
case J3DShapeMtxType_Multi:
ret = new J3DShapeMtxMultiConcatView(mtxInitData.mUseMtxIndex, mtxInitData.mUseMtxCount,
ret = JKR_NEW J3DShapeMtxMultiConcatView(mtxInitData.mUseMtxIndex, mtxInitData.mUseMtxCount,
&mMtxTable[mtxInitData.mFirstUseMtxIndex]);
break;
default:
@@ -109,10 +109,10 @@ J3DShapeMtx* J3DShapeFactory::newShapeMtx(u32 flag, int shapeNo, int mtxGroupNo)
case J3DShapeMtxType_Mtx:
case J3DShapeMtxType_BBoard:
case J3DShapeMtxType_YBBoard:
ret = new J3DShapeMtx(mtxInitData.mUseMtxIndex);
ret = JKR_NEW J3DShapeMtx(mtxInitData.mUseMtxIndex);
break;
case J3DShapeMtxType_Multi:
ret = new J3DShapeMtxMulti(mtxInitData.mUseMtxIndex, mtxInitData.mUseMtxCount,
ret = JKR_NEW J3DShapeMtxMulti(mtxInitData.mUseMtxIndex, mtxInitData.mUseMtxCount,
&mMtxTable[mtxInitData.mFirstUseMtxIndex]);
break;
default:
@@ -132,13 +132,13 @@ J3DShapeDraw* J3DShapeFactory::newShapeDraw(int shapeNo, int mtxGroupNo) const {
const J3DShapeInitData& shapeInitData = mShapeInitData[mIndexTable[shapeNo]];
const J3DShapeDrawInitData& drawInitData =
(&mDrawInitData[shapeInitData.mDrawInitDataIndex])[mtxGroupNo];
shapeDraw = new J3DShapeDraw(&mDisplayListData[drawInitData.mDisplayListIndex], drawInitData.mDisplayListSize);
shapeDraw = JKR_NEW J3DShapeDraw(&mDisplayListData[drawInitData.mDisplayListIndex], drawInitData.mDisplayListSize);
J3D_ASSERT_ALLOCMEM(193, shapeDraw);
return shapeDraw;
}
void J3DShapeFactory::allocVcdVatCmdBuffer(u32 count) {
mVcdVatCmdBuffer = new (0x20) u8[J3DShape::kVcdVatDLSize * count];
mVcdVatCmdBuffer = JKR_NEW_ARGS (0x20) u8[J3DShape::kVcdVatDLSize * count];
J3D_ASSERT_ALLOCMEM(211, mVcdVatCmdBuffer);
for (u32 i = 0; i < (J3DShape::kVcdVatDLSize * count) / 4; i++)
((u32*)mVcdVatCmdBuffer)[i] = 0;
+1
View File
@@ -1,6 +1,7 @@
#include "JSystem/JSystem.h" // IWYU pragma: keep
#include "JSystem/J3DU/J3DUClipper.h"
#include "global.h"
#include <cmath>
#include "global.h"
@@ -18,9 +18,9 @@ JAWGraphContext::JAWGraphContext() :
field_0x16 = 6;
field_0x18 = 0;
if (!sFont) {
sFont = new JUTResFont((ResFONT*)JUTResFONT_Ascfont_fix12, NULL);
sFont = JKR_NEW JUTResFont((ResFONT*)JUTResFONT_Ascfont_fix12, NULL);
}
field_0x0 = new J2DPrint(sFont, JUtility::TColor(255, 255, 255, 255), JUtility::TColor(255, 255, 255, 255));
field_0x0 = JKR_NEW J2DPrint(sFont, JUtility::TColor(255, 255, 255, 255), JUtility::TColor(255, 255, 255, 255));
field_0x0->initiate();
locate(0, 0);
}

Some files were not shown because too many files have changed in this diff Show More