summaryrefslogtreecommitdiffstats
path: root/src/core
diff options
context:
space:
mode:
Diffstat (limited to 'src/core')
-rw-r--r--src/core/NodeName.cpp77
-rw-r--r--src/core/NodeName.h4
-rw-r--r--src/core/RwClumpRead.cpp230
-rw-r--r--src/core/RwHelper.cpp374
-rw-r--r--src/core/RwHelper.h40
-rw-r--r--src/core/RwMatFX.cpp213
-rw-r--r--src/core/RwTexRead.cpp345
-rw-r--r--src/core/TxdStore.cpp209
-rw-r--r--src/core/TxdStore.h44
-rw-r--r--src/core/common.h2
-rw-r--r--src/core/re3.cpp4
-rw-r--r--src/core/rw.cpp415
12 files changed, 6 insertions, 1951 deletions
diff --git a/src/core/NodeName.cpp b/src/core/NodeName.cpp
deleted file mode 100644
index 2aea3c83..00000000
--- a/src/core/NodeName.cpp
+++ /dev/null
@@ -1,77 +0,0 @@
-#include "common.h"
-#include "patcher.h"
-#include "NodeName.h"
-
-static int32 &gPluginOffset = *(int32*)0x64C610;
-
-enum
-{
- ID_NODENAME = MAKECHUNKID(rwVENDORID_ROCKSTAR, 0xFE),
-};
-
-#define NODENAMEEXT(o) (RWPLUGINOFFSET(char, o, gPluginOffset))
-
-void*
-NodeNameConstructor(void *object, RwInt32 offsetInObject, RwInt32 sizeInObject)
-{
- if(gPluginOffset > 0)
- NODENAMEEXT(object)[0] = '\0';
- return object;
-}
-
-void*
-NodeNameDestructor(void *object, RwInt32 offsetInObject, RwInt32 sizeInObject)
-{
- return object;
-}
-
-void*
-NodeNameCopy(void *dstObject, const void *srcObject, RwInt32 offsetInObject, RwInt32 sizeInObject)
-{
- strncpy(NODENAMEEXT(dstObject), NODENAMEEXT(srcObject), 23);
- return nil;
-}
-
-RwStream*
-NodeNameStreamRead(RwStream *stream, RwInt32 binaryLength, void *object, RwInt32 offsetInObject, RwInt32 sizeInObject)
-{
- RwStreamRead(stream, NODENAMEEXT(object), binaryLength);
- NODENAMEEXT(object)[binaryLength] = '\0';
- return stream;
-}
-
-RwStream*
-NodeNameStreamWrite(RwStream *stream, RwInt32 binaryLength, const void *object, RwInt32 offsetInObject, RwInt32 sizeInObject)
-{
- RwStreamWrite(stream, NODENAMEEXT(object), binaryLength);
- return stream;
-}
-
-RwInt32
-NodeNameStreamGetSize(const void *object, RwInt32 offsetInObject, RwInt32 sizeInObject)
-{
- // game checks for null pointer on node name extension but that really happen
- return rwstrlen(NODENAMEEXT(object));
-}
-
-bool
-NodeNamePluginAttach(void)
-{
- gPluginOffset = RwFrameRegisterPlugin(24, ID_NODENAME,
- NodeNameConstructor,
- NodeNameDestructor,
- NodeNameCopy);
- RwFrameRegisterPluginStream(ID_NODENAME,
- NodeNameStreamRead,
- NodeNameStreamWrite,
- NodeNameStreamGetSize);
- return gPluginOffset != -1;
-}
-
-char*
-GetFrameNodeName(RwFrame *frame)
-{
- if(gPluginOffset < 0)
- return nil;
- return NODENAMEEXT(frame);
-}
diff --git a/src/core/NodeName.h b/src/core/NodeName.h
deleted file mode 100644
index 1a3e057b..00000000
--- a/src/core/NodeName.h
+++ /dev/null
@@ -1,4 +0,0 @@
-#pragma once
-
-bool NodeNamePluginAttach(void);
-char *GetFrameNodeName(RwFrame *frame);
diff --git a/src/core/RwClumpRead.cpp b/src/core/RwClumpRead.cpp
deleted file mode 100644
index c9f027e7..00000000
--- a/src/core/RwClumpRead.cpp
+++ /dev/null
@@ -1,230 +0,0 @@
-#include "common.h"
-#include "patcher.h"
-
-struct rpGeometryList
-{
- RpGeometry **geometries;
- int32 numGeoms;
-};
-
-struct rpAtomicBinary
-{
- RwInt32 frameIndex;
- RwInt32 geomIndex;
- RwInt32 flags;
- RwInt32 unused;
-};
-
-static int32 numberGeometrys;
-static int32 streamPosition;
-static rpGeometryList gGeomList;
-static rwFrameList gFrameList;
-static RpClumpChunkInfo gClumpInfo;
-
-rpGeometryList*
-GeometryListStreamRead1(RwStream *stream, rpGeometryList *geomlist)
-{
- int i;
- RwUInt32 size, version;
- RwInt32 numGeoms;
-
- numberGeometrys = 0;
- if(!RwStreamFindChunk(stream, rwID_STRUCT, &size, &version))
- return nil;
- assert(size == 4);
- if(RwStreamRead(stream, &numGeoms, 4) != 4)
- return nil;
-
- numberGeometrys = numGeoms/2;
- geomlist->numGeoms = numGeoms;
- if(geomlist->numGeoms > 0){
- geomlist->geometries = (RpGeometry**)RwMalloc(geomlist->numGeoms * sizeof(RpGeometry*));
- if(geomlist->geometries == nil)
- return nil;
- memset(geomlist->geometries, 0, geomlist->numGeoms * sizeof(RpGeometry*));
- }else
- geomlist->geometries = nil;
-
- for(i = 0; i < numberGeometrys; i++){
- if(!RwStreamFindChunk(stream, rwID_GEOMETRY, nil, &version))
- return nil;
- geomlist->geometries[i] = RpGeometryStreamRead(stream);
- if(geomlist->geometries[i] == nil)
- return nil;
- }
-
- return geomlist;
-}
-
-rpGeometryList*
-GeometryListStreamRead2(RwStream *stream, rpGeometryList *geomlist)
-{
- int i;
- RwUInt32 version;
-
- for(i = numberGeometrys; i < geomlist->numGeoms; i++){
- if(!RwStreamFindChunk(stream, rwID_GEOMETRY, nil, &version))
- return nil;
- geomlist->geometries[i] = RpGeometryStreamRead(stream);
- if(geomlist->geometries[i] == nil)
- return nil;
- }
-
- return geomlist;
-}
-
-void
-GeometryListDeinitialize(rpGeometryList *geomlist)
-{
- int i;
-
- for(i = 0; i < geomlist->numGeoms; i++)
- if(geomlist->geometries[i])
- RpGeometryDestroy(geomlist->geometries[i]);
-
- if(geomlist->numGeoms){
- RwFree(geomlist->geometries);
- geomlist->numGeoms = 0;
- }
-}
-
-RpAtomic*
-ClumpAtomicStreamRead(RwStream *stream, rwFrameList *frmList, rpGeometryList *geomList)
-{
- RwUInt32 size, version;
- rpAtomicBinary a;
- RpAtomic *atomic;
-
- numberGeometrys = 0;
- if(!RwStreamFindChunk(stream, rwID_STRUCT, &size, &version))
- return nil;
- assert(size <= sizeof(rpAtomicBinary));
- if(RwStreamRead(stream, &a, size) != size)
- return nil;
-
- atomic = RpAtomicCreate();
- if(atomic == nil)
- return nil;
-
- RpAtomicSetFlags(atomic, a.flags);
-
- if(frmList->numFrames){
- assert(a.frameIndex < frmList->numFrames);
- RpAtomicSetFrame(atomic, frmList->frames[a.frameIndex]);
- }
-
- if(geomList->numGeoms){
- assert(a.geomIndex < geomList->numGeoms);
- RpAtomicSetGeometry(atomic, geomList->geometries[a.geomIndex], 0);
- }else{
- RpGeometry *geom;
- if(!RwStreamFindChunk(stream, rwID_GEOMETRY, nil, &version)){
- RpAtomicDestroy(atomic);
- return nil;
- }
- geom = RpGeometryStreamRead(stream);
- if(geom == nil){
- RpAtomicDestroy(atomic);
- return nil;
- }
- RpAtomicSetGeometry(atomic, geom, 0);
- RpGeometryDestroy(geom);
- }
-
- return atomic;
-}
-
-bool
-RpClumpGtaStreamRead1(RwStream *stream)
-{
- RwUInt32 size, version;
-
- if(!RwStreamFindChunk(stream, rwID_STRUCT, &size, &version))
- return false;
- if(version >= 0x33000){
- assert(size == 12);
- if(RwStreamRead(stream, &gClumpInfo, 12) != 12)
- return false;
- }else{
- assert(size == 4);
- if(RwStreamRead(stream, &gClumpInfo, 4) != 4)
- return false;
- }
-
- if(!RwStreamFindChunk(stream, rwID_FRAMELIST, nil, &version))
- return false;
- if(_rwFrameListStreamRead(stream, &gFrameList) == nil)
- return false;
-
- if(!RwStreamFindChunk(stream, rwID_GEOMETRYLIST, nil, &version)){
- rwFrameListDeinitialize(&gFrameList);
- return false;
- }
- if(GeometryListStreamRead1(stream, &gGeomList) == nil){
- rwFrameListDeinitialize(&gFrameList);
- return false;
- }
- streamPosition = stream->Type.memory.position;
- return true;
-}
-
-RpClump*
-RpClumpGtaStreamRead2(RwStream *stream)
-{
- int i;
- RwUInt32 version;
- RpAtomic *atomic;
- RpClump *clump;
-
- clump = RpClumpCreate();
- if(clump == nil)
- return nil;
-
- RwStreamSkip(stream, streamPosition - stream->Type.memory.position);
-
- if(GeometryListStreamRead2(stream, &gGeomList) == nil){
- GeometryListDeinitialize(&gGeomList);
- rwFrameListDeinitialize(&gFrameList);
- RpClumpDestroy(clump);
- return nil;
- }
-
- RpClumpSetFrame(clump, gFrameList.frames[0]);
-
- for(i = 0; i < gClumpInfo.numAtomics; i++){
- if(!RwStreamFindChunk(stream, rwID_ATOMIC, nil, &version)){
- GeometryListDeinitialize(&gGeomList);
- rwFrameListDeinitialize(&gFrameList);
- RpClumpDestroy(clump);
- return nil;
- }
-
- atomic = ClumpAtomicStreamRead(stream, &gFrameList, &gGeomList);
- if(atomic == nil){
- GeometryListDeinitialize(&gGeomList);
- rwFrameListDeinitialize(&gFrameList);
- RpClumpDestroy(clump);
- return nil;
- }
-
- RpClumpAddAtomic(clump, atomic);
- }
-
- GeometryListDeinitialize(&gGeomList);
- rwFrameListDeinitialize(&gFrameList);
- return clump;
-}
-
-void
-RpClumpGtaCancelStream(void)
-{
- GeometryListDeinitialize(&gGeomList);
- rwFrameListDeinitialize(&gFrameList);
- gFrameList.numFrames = 0;
-}
-
-STARTPATCHES
- InjectHook(0x526060, RpClumpGtaStreamRead1, PATCH_JUMP);
- InjectHook(0x526180, RpClumpGtaStreamRead2, PATCH_JUMP);
- InjectHook(0x5262D0, RpClumpGtaCancelStream, PATCH_JUMP);
-ENDPATCHES
diff --git a/src/core/RwHelper.cpp b/src/core/RwHelper.cpp
deleted file mode 100644
index 44866f4f..00000000
--- a/src/core/RwHelper.cpp
+++ /dev/null
@@ -1,374 +0,0 @@
-#define WITHD3D
-#include "common.h"
-#include "patcher.h"
-#include "Timecycle.h"
-#include "skeleton.h"
-
-void *
-RwMallocAlign(RwUInt32 size, RwUInt32 align)
-{
- void *mem = (void *)malloc(size + align);
-
- ASSERT(mem != nil);
-
- void *addr = (void *)((((RwUInt32)mem) + align) & ~(align - 1));
-
- ASSERT(addr != nil);
-
- *(((void **)addr) - 1) = mem;
-
- return addr;
-}
-
-void
-RwFreeAlign(void *mem)
-{
- ASSERT(mem != nil);
-
- void *addr = *(((void **)mem) - 1);
-
- ASSERT(addr != nil);
-
- free(addr);
-}
-
-void
-DefinedState(void)
-{
- RwRenderStateSet(rwRENDERSTATETEXTUREADDRESS, (void*)rwTEXTUREADDRESSWRAP);
- RwRenderStateSet(rwRENDERSTATETEXTUREPERSPECTIVE, (void*)TRUE);
- RwRenderStateSet(rwRENDERSTATEZTESTENABLE, (void*)TRUE);
- RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)TRUE);
- RwRenderStateSet(rwRENDERSTATESHADEMODE, (void*)rwSHADEMODEGOURAUD);
- RwRenderStateSet(rwRENDERSTATETEXTUREFILTER, (void*)rwFILTERLINEAR);
- RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)FALSE);
- RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDSRCALPHA);
- RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDINVSRCALPHA);
- RwRenderStateSet(rwRENDERSTATEALPHAPRIMITIVEBUFFER, (void*)FALSE);
- RwRenderStateSet(rwRENDERSTATEBORDERCOLOR, (void*)RWRGBALONG(0, 0, 0, 255));
- RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void*)FALSE);
- RwRenderStateSet(rwRENDERSTATEFOGCOLOR,
- (void*)RWRGBALONG(CTimeCycle::GetFogRed(), CTimeCycle::GetFogGreen(), CTimeCycle::GetFogBlue(), 255));
- RwRenderStateSet(rwRENDERSTATEFOGTYPE, (void*)rwFOGTYPELINEAR);
- RwRenderStateSet(rwRENDERSTATECULLMODE, (void*)rwCULLMODECULLNONE);
-
- // D3D stuff
- RwD3D8SetRenderState(D3DRS_ALPHAFUNC, D3DCMP_GREATER);
- RwD3D8SetRenderState(D3DRS_ALPHAREF, 2);
-}
-
-RwFrame*
-GetFirstFrameCallback(RwFrame *child, void *data)
-{
- *(RwFrame**)data = child;
- return nil;
-}
-
-RwFrame*
-GetFirstChild(RwFrame *frame)
-{
- RwFrame *child;
-
- child = nil;
- RwFrameForAllChildren(frame, GetFirstFrameCallback, &child);
- return child;
-}
-
-RwObject*
-GetFirstObjectCallback(RwObject *object, void *data)
-{
- *(RwObject**)data = object;
- return nil;
-}
-
-RwObject*
-GetFirstObject(RwFrame *frame)
-{
- RwObject *obj;
-
- obj = nil;
- RwFrameForAllObjects(frame, GetFirstObjectCallback, &obj);
- return obj;
-}
-
-RpAtomic*
-GetFirstAtomicCallback(RpAtomic *atm, void *data)
-{
- *(RpAtomic**)data = atm;
- return nil;
-}
-
-RpAtomic*
-GetFirstAtomic(RpClump *clump)
-{
- RpAtomic *atm;
-
- atm = nil;
- RpClumpForAllAtomics(clump, GetFirstAtomicCallback, &atm);
- return atm;
-}
-
-RwTexture*
-GetFirstTextureCallback(RwTexture *tex, void *data)
-{
- *(RwTexture**)data = tex;
- return nil;
-}
-
-RwTexture*
-GetFirstTexture(RwTexDictionary *txd)
-{
- RwTexture *tex;
-
- tex = nil;
- RwTexDictionaryForAllTextures(txd, GetFirstTextureCallback, &tex);
- return tex;
-}
-
-void
-CameraSize(RwCamera * camera, RwRect * rect,
- RwReal viewWindow, RwReal aspectRatio)
-{
- if (camera)
- {
- RwVideoMode videoMode;
- RwRect r;
- RwRect origSize = { 0, 0, 0, 0 }; // FIX just to make the compier happy
- RwV2d vw;
-
- RwEngineGetVideoModeInfo(&videoMode,
- RwEngineGetCurrentVideoMode());
-
- origSize.w = RwRasterGetWidth(RwCameraGetRaster(camera));
- origSize.h = RwRasterGetHeight(RwCameraGetRaster(camera));
-
- if (!rect)
- {
- if (videoMode.flags & rwVIDEOMODEEXCLUSIVE)
- {
- /* For full screen applications, resizing the camera just doesn't
- * make sense, use the video mode size.
- */
-
- r.x = r.y = 0;
- r.w = videoMode.width;
- r.h = videoMode.height;
- rect = &r;
- }
- else
- {
- /*
- rect not specified - reuse current values
- */
- r.w = RwRasterGetWidth(RwCameraGetRaster(camera));
- r.h = RwRasterGetHeight(RwCameraGetRaster(camera));
- r.x = r.y = 0;
- rect = &r;
- }
- }
-
- if (( origSize.w != rect->w ) && ( origSize.h != rect->h ))
- {
- RwRaster *raster;
- RwRaster *zRaster;
-
- /*
- * Destroy rasters...
- */
-
- raster = RwCameraGetRaster(camera);
- if( raster )
- {
- RwRasterDestroy(raster);
- }
-
- zRaster = RwCameraGetZRaster(camera);
- if( zRaster )
- {
- RwRasterDestroy(zRaster);
- }
-
- /*
- * Create new rasters...
- */
-
- raster = RwRasterCreate(rect->w, rect->h, 0, rwRASTERTYPECAMERA);
- zRaster = RwRasterCreate(rect->w, rect->h, 0, rwRASTERTYPEZBUFFER);
-
- if( raster && zRaster )
- {
- RwCameraSetRaster(camera, raster);
- RwCameraSetZRaster(camera, zRaster);
- }
- else
- {
- if( raster )
- {
- RwRasterDestroy(raster);
- }
-
- if( zRaster )
- {
- RwRasterDestroy(zRaster);
- }
-
- rect->x = origSize.x;
- rect->y = origSize.y;
- rect->w = origSize.w;
- rect->h = origSize.h;
-
- /*
- * Use default values...
- */
- raster =
- RwRasterCreate(rect->w, rect->h, 0, rwRASTERTYPECAMERA);
-
- zRaster =
- RwRasterCreate(rect->w, rect->h, 0, rwRASTERTYPEZBUFFER);
-
- RwCameraSetRaster(camera, raster);
- RwCameraSetZRaster(camera, zRaster);
- }
- }
-
- /* Figure out the view window */
- if (videoMode.flags & rwVIDEOMODEEXCLUSIVE)
- {
- /* derive ratio from aspect ratio */
- vw.x = viewWindow;
- vw.y = viewWindow / aspectRatio;
- }
- else
- {
- /* derive from pixel ratios */
- if (rect->w > rect->h)
- {
- vw.x = viewWindow;
- vw.y = (rect->h * viewWindow) / rect->w;
- }
- else
- {
- vw.x = (rect->w * viewWindow) / rect->h;
- vw.y = viewWindow;
- }
- }
-
- RwCameraSetViewWindow(camera, &vw);
-
- RsGlobal.width = rect->w;
- RsGlobal.height = rect->h;
- }
-
- return;
-}
-
-void
-CameraDestroy(RwCamera *camera)
-{
- RwRaster *raster, *tmpRaster;
- RwFrame *frame;
-
- if (camera)
- {
- frame = RwCameraGetFrame(camera);
- if (frame)
- {
- RwFrameDestroy(frame);
- }
-
- raster = RwCameraGetRaster(camera);
- if (raster)
- {
- tmpRaster = RwRasterGetParent(raster);
-
- RwRasterDestroy(raster);
-
- if ((tmpRaster != nil) && (tmpRaster != raster))
- {
- RwRasterDestroy(tmpRaster);
- }
- }
-
- raster = RwCameraGetZRaster(camera);
- if (raster)
- {
- tmpRaster = RwRasterGetParent(raster);
-
- RwRasterDestroy(raster);
-
- if ((tmpRaster != nil) && (tmpRaster != raster))
- {
- RwRasterDestroy(tmpRaster);
- }
- }
-
- RwCameraDestroy(camera);
- }
-
- return;
-}
-
-RwCamera *
-CameraCreate(RwInt32 width, RwInt32 height, RwBool zBuffer)
-{
- RwCamera *camera;
-
- camera = RwCameraCreate();
-
- if (camera)
- {
- RwCameraSetFrame(camera, RwFrameCreate());
- RwCameraSetRaster(camera,
- RwRasterCreate(0, 0, 0, rwRASTERTYPECAMERA));
-
- if (zBuffer)
- {
- RwCameraSetZRaster(camera,
- RwRasterCreate(0, 0, 0,
- rwRASTERTYPEZBUFFER));
- }
-
- /* now check that everything is valid */
- if (RwCameraGetFrame(camera) &&
- RwCameraGetRaster(camera) &&
- RwRasterGetParent(RwCameraGetRaster(camera)) &&
- (!zBuffer || (RwCameraGetZRaster(camera) &&
- RwRasterGetParent(RwCameraGetZRaster
- (camera)))))
- {
- /* everything OK */
- return (camera);
- }
- }
-
- /* if we're here then an error must have occurred so clean up */
-
- CameraDestroy(camera);
- return (nil);
-}
-
-void CreateDebugFont()
-{
- ;
-}
-
-void DestroyDebugFont()
-{
- ;
-}
-
-void FlushObrsPrintfs()
-{
- ;
-}
-
-WRAPPER void _TexturePoolsInitialise() { EAXJMP(0x598B10); }
-WRAPPER void _TexturePoolsShutdown() { EAXJMP(0x598B30); }
-
-STARTPATCHES
- //InjectHook(0x526450, GetFirstObjectCallback, PATCH_JUMP);
- InjectHook(0x526460, GetFirstObject, PATCH_JUMP);
- InjectHook(0x527170, CameraSize, PATCH_JUMP);
- InjectHook(0x527340, CameraDestroy, PATCH_JUMP);
- InjectHook(0x5273B0, CameraCreate, PATCH_JUMP);
-ENDPATCHES
diff --git a/src/core/RwHelper.h b/src/core/RwHelper.h
deleted file mode 100644
index a9f0bdf4..00000000
--- a/src/core/RwHelper.h
+++ /dev/null
@@ -1,40 +0,0 @@
-#pragma once
-
-void *RwMallocAlign(RwUInt32 size, RwUInt32 align);
-void RwFreeAlign(void *mem);
-
-void CreateDebugFont();
-void DestroyDebugFont();
-void FlushObrsPrintfs();
-void DefinedState(void);
-RwFrame *GetFirstChild(RwFrame *frame);
-RwObject *GetFirstObject(RwFrame *frame);
-RpAtomic *GetFirstAtomic(RpClump *clump);
-RwTexture *GetFirstTexture(RwTexDictionary *txd);
-
-RwTexDictionary *RwTexDictionaryGtaStreamRead(RwStream *stream);
-RwTexDictionary *RwTexDictionaryGtaStreamRead1(RwStream *stream);
-RwTexDictionary *RwTexDictionaryGtaStreamRead2(RwStream *stream, RwTexDictionary *texDict);
-void ReadVideoCardCapsFile(uint32&, uint32&, uint32&, uint32&);
-bool CheckVideoCardCaps(void);
-void WriteVideoCardCapsFile(void);
-void ConvertingTexturesScreen(uint32, uint32, const char*);
-void DealWithTxdWriteError(uint32, uint32, const char*);
-bool CreateTxdImageForVideoCard();
-
-bool RpClumpGtaStreamRead1(RwStream *stream);
-RpClump *RpClumpGtaStreamRead2(RwStream *stream);
-void RpClumpGtaCancelStream(void);
-
-void CameraSize(RwCamera *camera,
- RwRect *rect,
- RwReal viewWindow,
- RwReal aspectRatio);
-void CameraDestroy(RwCamera *camera);
-RwCamera *CameraCreate(RwInt32 width,
- RwInt32 height,
- RwBool zBuffer);
-
-
-void _TexturePoolsInitialise();
-void _TexturePoolsShutdown(); \ No newline at end of file
diff --git a/src/core/RwMatFX.cpp b/src/core/RwMatFX.cpp
deleted file mode 100644
index ca9a633b..00000000
--- a/src/core/RwMatFX.cpp
+++ /dev/null
@@ -1,213 +0,0 @@
-#define WITHD3D
-#include "common.h"
-#include "patcher.h"
-
-struct MatFXNothing { int pad[5]; int effect; };
-
-struct MatFXBump
-{
- RwFrame *bumpFrame;
- RwTexture *bumpedTex;
- RwTexture *bumpTex;
- float negBumpCoefficient;
- int pad;
- int effect;
-};
-
-struct MatFXEnv
-{
- RwFrame *envFrame;
- RwTexture *envTex;
- float envCoeff;
- int envFBalpha;
- int pad;
- int effect;
-};
-
-struct MatFXDual
-{
- RwTexture *dualTex;
- RwInt32 srcBlend;
- RwInt32 dstBlend;
-};
-
-
-struct MatFX
-{
- union {
- MatFXNothing n;
- MatFXBump b;
- MatFXEnv e;
- MatFXDual d;
- } fx[2];
- int effects;
-};
-
-int &MatFXMaterialDataOffset = *(int*)0x66188C;
-int &MatFXAtomicDataOffset = *(int*)0x66189C;
-
-#ifdef PS2_MATFX
-
-void
-_rpMatFXD3D8AtomicMatFXDefaultRender(RxD3D8InstanceData *inst, int flags, RwTexture *texture)
-{
- if(flags & (rpGEOMETRYTEXTURED|rpGEOMETRYTEXTURED2) && texture)
- RwD3D8SetTexture(texture, 0);
- else
- RwD3D8SetTexture(nil, 0);
- RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)(inst->vertexAlpha || inst->material->color.alpha != 0xFF));
- RwD3D8SetRenderState(D3DRS_DIFFUSEMATERIALSOURCE, inst->vertexAlpha != 0);
- RwD3D8SetPixelShader(0);
- RwD3D8SetVertexShader(inst->vertexShader);
- RwD3D8SetStreamSource(0, inst->vertexBuffer, inst->stride);
-
- if(inst->indexBuffer){
- RwD3D8SetIndices(inst->indexBuffer, inst->baseIndex);
- RwD3D8DrawIndexedPrimitive(inst->primType, 0, inst->numVertices, 0, inst->numIndices);
- }else
- RwD3D8DrawPrimitive(inst->primType, inst->baseIndex, inst->numVertices);
-}
-
-// map [-1; -1] -> [0; 1], flip V
-static RwMatrix scalenormal = {
- { 0.5f, 0.0f, 0.0f }, 0,
- { 0.0f, -0.5f, 0.0f }, 0,
- { 0.0f, 0.0f, 1.0f }, 0,
- { 0.5f, 0.5f, 0.0f }, 0,
-
-};
-
-// flipped U for PS2
-static RwMatrix scalenormal_flipU = {
- { -0.5f, 0.0f, 0.0f }, 0,
- { 0.0f, -0.5f, 0.0f }, 0,
- { 0.0f, 0.0f, 1.0f }, 0,
- { 0.5f, 0.5f, 0.0f }, 0,
-
-};
-
-void
-ApplyEnvMapTextureMatrix(RwTexture *tex, int n, RwFrame *frame)
-{
- RwD3D8SetTexture(tex, n);
- RwD3D8SetTextureStageState(n, D3DRS_ALPHAREF, 2);
- RwD3D8SetTextureStageState(n, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_CAMERASPACENORMAL);
- if(frame){
- RwMatrix *envframemat = RwMatrixCreate();
- RwMatrix *tmpmat = RwMatrixCreate();
- RwMatrix *envmat = RwMatrixCreate();
-
- RwMatrixInvert(envframemat, RwFrameGetLTM(frame));
- // PS2
- // can this be simplified?
- *tmpmat = *RwFrameGetLTM(RwCameraGetFrame((RwCamera*)RWSRCGLOBAL(curCamera)));
- RwV3dNegate(&tmpmat->right, &tmpmat->right);
- tmpmat->flags = 0;
- tmpmat->pos.x = 0.0f;
- tmpmat->pos.y = 0.0f;
- tmpmat->pos.z = 0.0f;
- RwMatrixMultiply(envmat, tmpmat, envframemat);
- *tmpmat = *envmat;
- // important because envframemat can have a translation that we don't like
- tmpmat->pos.x = 0.0f;
- tmpmat->pos.y = 0.0f;
- tmpmat->pos.z = 0.0f;
- // for some reason we flip in U as well
- RwMatrixMultiply(envmat, tmpmat, &scalenormal_flipU);
-
- RwD3D8SetTransform(D3DTS_TEXTURE0+n, envmat);
-
- RwMatrixDestroy(envmat);
- RwMatrixDestroy(tmpmat);
- RwMatrixDestroy(envframemat);
- }else
- RwD3D8SetTransform(D3DTS_TEXTURE0+n, &scalenormal);
-}
-
-void
-_rpMatFXD3D8AtomicMatFXEnvRender_ps2(RxD3D8InstanceData *inst, int flags, int sel, RwTexture *texture, RwTexture *envMap)
-{
- MatFX *matfx = *RWPLUGINOFFSET(MatFX*, inst->material, MatFXMaterialDataOffset);
- MatFXEnv *env = &matfx->fx[sel].e;
-
- uint8 intens = (uint8)(env->envCoeff*255.0f);
-
- if(intens == 0 || envMap == nil){
- if(sel == 0)
- _rpMatFXD3D8AtomicMatFXDefaultRender(inst, flags, texture);
- return;
- }
-
- RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)(inst->vertexAlpha || inst->material->color.alpha != 0xFF));
- if(flags & (rpGEOMETRYTEXTURED|rpGEOMETRYTEXTURED2) && texture)
- RwD3D8SetTexture(texture, 0);
- else
- RwD3D8SetTexture(nil, 0);
- RwD3D8SetPixelShader(0);
- RwD3D8SetVertexShader(inst->vertexShader);
- RwD3D8SetStreamSource(0, inst->vertexBuffer, inst->stride);
- RwD3D8SetIndices(inst->indexBuffer, inst->baseIndex);
- if(inst->indexBuffer)
- RwD3D8DrawIndexedPrimitive(inst->primType, 0, inst->numVertices, 0, inst->numIndices);
- else
- RwD3D8DrawPrimitive(inst->primType, inst->baseIndex, inst->numVertices);
-
- // Effect pass
-
- ApplyEnvMapTextureMatrix(envMap, 0, env->envFrame);
- RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE);
- RwUInt32 src, dst, lighting, zwrite, fog, fogcol;
- RwRenderStateGet(rwRENDERSTATESRCBLEND, &src);
- RwRenderStateGet(rwRENDERSTATEDESTBLEND, &dst);
-
- // This is of course not using framebuffer alpha,
- // but if the diffuse texture had no alpha, the result should actually be rather the same
- if(env->envFBalpha)
- RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDSRCALPHA);
- else
- RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDONE);
- RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDONE);
- RwD3D8GetRenderState(D3DRS_LIGHTING, &lighting);
- RwD3D8GetRenderState(D3DRS_ZWRITEENABLE, &zwrite);
- RwD3D8GetRenderState(D3DRS_FOGENABLE, &fog);
- RwD3D8SetRenderState(D3DRS_ZWRITEENABLE, FALSE);
- if(fog){
- RwD3D8GetRenderState(D3DRS_FOGCOLOR, &fogcol);
- RwD3D8SetRenderState(D3DRS_FOGCOLOR, 0);
- }
-
- D3DCOLOR texfactor = D3DCOLOR_RGBA(intens, intens, intens, intens);
- RwD3D8SetRenderState(D3DRS_TEXTUREFACTOR, texfactor);
- RwD3D8SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_MODULATE);
- RwD3D8SetTextureStageState(1, D3DTSS_COLORARG1, D3DTA_CURRENT);
- RwD3D8SetTextureStageState(1, D3DTSS_COLORARG2, D3DTA_TFACTOR);
- // alpha unused
- //RwD3D8SetTextureStageState(1, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);
- //RwD3D8SetTextureStageState(1, D3DTSS_ALPHAARG1, D3DTA_CURRENT);
- //RwD3D8SetTextureStageState(1, D3DTSS_ALPHAARG2, D3DTA_TFACTOR);
-
- if(inst->indexBuffer)
- RwD3D8DrawIndexedPrimitive(inst->primType, 0, inst->numVertices, 0, inst->numIndices);
- else
- RwD3D8DrawPrimitive(inst->primType, inst->baseIndex, inst->numVertices);
-
- // Reset states
-
- RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)FALSE);
- RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)src);
- RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)dst);
- RwD3D8SetRenderState(D3DRS_LIGHTING, lighting);
- RwD3D8SetRenderState(D3DRS_ZWRITEENABLE, zwrite);
- if(fog)
- RwD3D8SetRenderState(D3DRS_FOGCOLOR, fogcol);
- RwD3D8SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_DISABLE);
- RwD3D8SetTextureStageState(1, D3DTSS_ALPHAOP, D3DTOP_DISABLE);
- RwD3D8SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS, 0);
- RwD3D8SetTextureStageState(0, D3DTSS_TEXCOORDINDEX, 0);
-}
-
-STARTPATCHES
- InjectHook(0x5CF6C0, _rpMatFXD3D8AtomicMatFXEnvRender_ps2, PATCH_JUMP);
-ENDPATCHES
-
-#endif
diff --git a/src/core/RwTexRead.cpp b/src/core/RwTexRead.cpp
deleted file mode 100644
index 49b245dd..00000000
--- a/src/core/RwTexRead.cpp
+++ /dev/null
@@ -1,345 +0,0 @@
-#pragma warning( push )
-#pragma warning( disable : 4005)
-#define DIRECTINPUT_VERSION 0x0800
-#include <dinput.h>
-#pragma warning( pop )
-#define WITHWINDOWS
-#include "common.h"
-#include "win.h"
-#include "patcher.h"
-#include "Timer.h"
-#ifdef GTA_PC
-#include "FileMgr.h"
-#include "Pad.h"
-#include "main.h"
-#include "Directory.h"
-#include "Streaming.h"
-#include "TxdStore.h"
-#include "CdStream.h"
-#include "Font.h"
-#include "Sprite2d.h"
-#include "Text.h"
-#include "RwHelper.h"
-#endif //GTA_PC
-
-float &texLoadTime = *(float*)0x8F1B50;
-int32 &texNumLoaded = *(int32*)0x8F252C;
-
-RwTexture*
-RwTextureGtaStreamRead(RwStream *stream)
-{
- RwUInt32 size, version;
- RwTexture *tex;
-
- if(!RwStreamFindChunk(stream, rwID_TEXTURENATIVE, &size, &version))
- return nil;
-
- float preloadTime = (float)CTimer::GetCurrentTimeInCycles() / (float)CTimer::GetCyclesPerMillisecond();
-
- if(!RWSRCGLOBAL(stdFunc[rwSTANDARDNATIVETEXTUREREAD](stream, &tex, size)))
- return nil;
-
- if (gGameState == GS_INIT_PLAYING_GAME) {
- texLoadTime = (texNumLoaded * texLoadTime + (float)CTimer::GetCurrentTimeInCycles() / (float)CTimer::GetCyclesPerMillisecond() - preloadTime) / (float)(texNumLoaded+1);
- texNumLoaded++;
- }
- return tex;
-}
-
-RwTexture*
-destroyTexture(RwTexture *texture, void *data)
-{
- RwTextureDestroy(texture);
- return texture;
-}
-
-RwTexDictionary*
-RwTexDictionaryGtaStreamRead(RwStream *stream)
-{
- RwUInt32 size, version;
- RwInt32 numTextures;
- RwTexDictionary *texDict;
- RwTexture *tex;
-
- if(!RwStreamFindChunk(stream, rwID_STRUCT, &size, &version))
- return nil;
- assert(size == 4);
- if(RwStreamRead(stream, &numTextures, size) != size)
- return nil;
-
- texDict = RwTexDictionaryCreate();
- if(texDict == nil)
- return nil;
-
- while(numTextures--){
- tex = RwTextureGtaStreamRead(stream);
- if(tex == nil){
- RwTexDictionaryForAllTextures(texDict, destroyTexture, nil);
- RwTexDictionaryDestroy(texDict);
- return nil;
- }
- RwTexDictionaryAddTexture(texDict, tex);
- }
-
- return texDict;
-}
-
-static int32 numberTextures = -1;
-static int32 streamPosition;
-
-RwTexDictionary*
-RwTexDictionaryGtaStreamRead1(RwStream *stream)
-{
- RwUInt32 size, version;
- RwInt32 numTextures;
- RwTexDictionary *texDict;
- RwTexture *tex;
-
- numberTextures = 0;
- if(!RwStreamFindChunk(stream, rwID_STRUCT, &size, &version))
- return nil;
- assert(size == 4);
- if(RwStreamRead(stream, &numTextures, size) != size)
- return nil;
-
- texDict = RwTexDictionaryCreate();
- if(texDict == nil)
- return nil;
-
- numberTextures = numTextures/2;
-
- while(numTextures > numberTextures){
- numTextures--;
-
- tex = RwTextureGtaStreamRead(stream);
- if(tex == nil){
- RwTexDictionaryForAllTextures(texDict, destroyTexture, nil);
- RwTexDictionaryDestroy(texDict);
- return nil;
- }
- RwTexDictionaryAddTexture(texDict, tex);
- }
-
- numberTextures = numTextures;
- streamPosition = stream->Type.memory.position;
-
- return texDict;
-}
-
-RwTexDictionary*
-RwTexDictionaryGtaStreamRead2(RwStream *stream, RwTexDictionary *texDict)
-{
- RwTexture *tex;
-
- RwStreamSkip(stream, streamPosition - stream->Type.memory.position);
-
- while(numberTextures--){
- tex = RwTextureGtaStreamRead(stream);
- if(tex == nil){
- RwTexDictionaryForAllTextures(texDict, destroyTexture, nil);
- RwTexDictionaryDestroy(texDict);
- return nil;
- }
- RwTexDictionaryAddTexture(texDict, tex);
- }
-
- return texDict;
-}
-
-#ifdef GTA_PC
-WRAPPER RwInt32 _rwD3D8FindCorrectRasterFormat(RwRasterType type, RwInt32 flags) { EAXJMP(0x59A350); }
-
-void
-ReadVideoCardCapsFile(uint32 &cap32, uint32 &cap24, uint32 &cap16, uint32 &cap8)
-{
- cap32 = UINT32_MAX;
- cap24 = UINT32_MAX;
- cap16 = UINT32_MAX;
- cap8 = UINT32_MAX;
-
- int32 file = CFileMgr::OpenFile("DATA\\CAPS.DAT", "rb");
- if (file != 0) {
- CFileMgr::Read(file, (char*)&cap32, 4);
- CFileMgr::Read(file, (char*)&cap24, 4);
- CFileMgr::Read(file, (char*)&cap16, 4);
- CFileMgr::Read(file, (char*)&cap8, 4);
- CFileMgr::CloseFile(file);
- }
-}
-
-bool
-CheckVideoCardCaps(void)
-{
- uint32 cap32 = _rwD3D8FindCorrectRasterFormat(rwRASTERTYPETEXTURE, rwRASTERFORMAT8888);
- uint32 cap24 = _rwD3D8FindCorrectRasterFormat(rwRASTERTYPETEXTURE, rwRASTERFORMAT888);
- uint32 cap16 = _rwD3D8FindCorrectRasterFormat(rwRASTERTYPETEXTURE, rwRASTERFORMAT1555);
- uint32 cap8 = _rwD3D8FindCorrectRasterFormat(rwRASTERTYPETEXTURE, rwRASTERFORMATPAL8 | rwRASTERFORMAT8888);
- uint32 fcap32, fcap24, fcap16, fcap8;
- ReadVideoCardCapsFile(fcap32, fcap24, fcap16, fcap8);
- return cap32 != fcap32 || cap24 != fcap24 || cap16 != fcap16 || cap8 != fcap8;
-}
-
-void
-WriteVideoCardCapsFile(void)
-{
- uint32 cap32 = _rwD3D8FindCorrectRasterFormat(rwRASTERTYPETEXTURE, rwRASTERFORMAT8888);
- uint32 cap24 = _rwD3D8FindCorrectRasterFormat(rwRASTERTYPETEXTURE, rwRASTERFORMAT888);
- uint32 cap16 = _rwD3D8FindCorrectRasterFormat(rwRASTERTYPETEXTURE, rwRASTERFORMAT1555);
- uint32 cap8 = _rwD3D8FindCorrectRasterFormat(rwRASTERTYPETEXTURE, rwRASTERFORMATPAL8 | rwRASTERFORMAT8888);
- int32 file = CFileMgr::OpenFile("DATA\\CAPS.DAT", "wb");
- if (file != 0) {
- CFileMgr::Write(file, (char*)&cap32, 4);
- CFileMgr::Write(file, (char*)&cap24, 4);
- CFileMgr::Write(file, (char*)&cap16, 4);
- CFileMgr::Write(file, (char*)&cap8, 4);
- CFileMgr::CloseFile(file);
- }
-}
-
-bool DoRWStuffStartOfFrame(int16 TopRed, int16 TopGreen, int16 TopBlue, int16 BottomRed, int16 BottomGreen, int16 BottomBlue, int16 Alpha);
-void DoRWStuffEndOfFrame(void);
-
-void
-ConvertingTexturesScreen(uint32 num, uint32 count, const char *text)
-{
- HandleExit();
-
- CSprite2d *splash = LoadSplash(nil);
- if (!DoRWStuffStartOfFrame(0, 0, 0, 0, 0, 0, 255))
- return;
-
- CSprite2d::SetRecipNearClip();
- CSprite2d::InitPerFrame();
- CFont::InitPerFrame();
- DefinedState();
-
- RwRenderStateSet(rwRENDERSTATETEXTUREADDRESS, (void*)rwTEXTUREADDRESSCLAMP);
- splash->Draw(CRect(0.0f, 0.0f, SCREEN_WIDTH, SCREEN_HEIGHT), CRGBA(255, 255, 255, 255));
-
- CSprite2d::DrawRect(CRect(SCREEN_SCALE_X(200.0f), SCREEN_SCALE_Y(240.0f), SCREEN_SCALE_FROM_RIGHT(200.0f), SCREEN_SCALE_Y(248.0f)), CRGBA(64, 64, 64, 255));
- CSprite2d::DrawRect(CRect(SCREEN_SCALE_X(200.0f), SCREEN_SCALE_Y(240.0f), (SCREEN_SCALE_FROM_RIGHT(200.0f) - SCREEN_SCALE_X(200.0f)) * ((float)num / (float)count) + SCREEN_SCALE_X(200.0f), SCREEN_SCALE_Y(248.0f)), CRGBA(255, 217, 106, 255));
- CSprite2d::DrawRect(CRect(SCREEN_SCALE_X(120.0f), SCREEN_SCALE_Y(150.0f), SCREEN_SCALE_FROM_RIGHT(120.0f), SCREEN_HEIGHT - SCREEN_SCALE_Y(220.0f)), CRGBA(50, 50, 50, 210));
-
- CFont::SetBackgroundOff();
- CFont::SetPropOn();
- CFont::SetScale(SCREEN_SCALE_X(0.45f), SCREEN_SCALE_Y(0.7f));
- CFont::SetWrapx(SCREEN_SCALE_FROM_RIGHT(170.0f));
- CFont::SetJustifyOff();
- CFont::SetColor(CRGBA(255, 217, 106, 255));
- CFont::SetBackGroundOnlyTextOff();
- CFont::SetFontStyle(FONT_BANK);
- CFont::PrintString(SCREEN_SCALE_X(170.0f), SCREEN_SCALE_Y(160.0f), TheText.Get(text));
- CFont::DrawFonts();
- DoRWStuffEndOfFrame();
-}
-
-void
-DealWithTxdWriteError(uint32 num, uint32 count, const char *text)
-{
- while (!RsGlobal.quit) {
- ConvertingTexturesScreen(num, count, text);
- CPad::UpdatePads();
- if (CPad::GetPad(0)->GetEscapeJustDown())
- break;
- }
- RsGlobal.quit = false;
- LoadingScreen(nil, nil, nil);
- RsGlobal.quit = true;
-}
-
-bool
-CreateTxdImageForVideoCard()
-{
- uint8 *buf = new uint8[CDSTREAM_SECTOR_SIZE];
- CDirectory *pDir = new CDirectory(TXDSTORESIZE);
- CDirectory::DirectoryInfo dirInfo;
-
- CStreaming::FlushRequestList();
-
- RwFileFunctions *filesys = RwOsGetFileInterface();
-
- RwStream *img = RwStreamOpen(rwSTREAMFILENAME, rwSTREAMWRITE, "models\\txd.img");
- if (img == nil) {
- // original code does otherwise and it leaks
- delete []buf;
- delete pDir;
-
- if (_dwOperatingSystemVersion == OS_WINNT || _dwOperatingSystemVersion == OS_WIN2000 || _dwOperatingSystemVersion == OS_WINXP)
- DealWithTxdWriteError(0, TXDSTORESIZE, "CVT_CRT");
-
- return false;
- }
-
- int32 i;
- for (i = 0; i < TXDSTORESIZE; i++) {
- ConvertingTexturesScreen(i, TXDSTORESIZE, "CVT_MSG");
-
- if (CTxdStore::GetSlot(i) != nil && CStreaming::IsObjectInCdImage(i + STREAM_OFFSET_TXD)) {
- CStreaming::RequestTxd(i, STREAMFLAGS_KEEP_IN_MEMORY);
- CStreaming::RequestModelStream(0);
- CStreaming::FlushChannels();
-
- char filename[64];
- sprintf(filename, "%s.txd", CTxdStore::GetTxdName(i));
-
- if (CTxdStore::GetSlot(i)->texDict) {
- int32 pos = filesys->rwftell(img->Type.file.fpFile);
-
- if (RwTexDictionaryStreamWrite(CTxdStore::GetSlot(i)->texDict, img) == nil) {
- DealWithTxdWriteError(i, TXDSTORESIZE, "CVT_ERR");
- RwStreamClose(img, nil);
- delete []buf;
- delete pDir;
- CStreaming::RemoveTxd(i);
- return false;
- }
-
- int32 size = filesys->rwftell(img->Type.file.fpFile) - pos;
- int32 num = size % CDSTREAM_SECTOR_SIZE;
-
- size /= CDSTREAM_SECTOR_SIZE;
- if (num != 0) {
- size++;
- num = CDSTREAM_SECTOR_SIZE - num;
- RwStreamWrite(img, buf, num);
- }
-
- dirInfo.offset = pos / CDSTREAM_SECTOR_SIZE;
- dirInfo.size = size;
- strncpy(dirInfo.name, filename, sizeof(dirInfo.name));
- pDir->AddItem(dirInfo);
- CStreaming::RemoveTxd(i);
- }
- CStreaming::FlushRequestList();
- }
- }
-
- RwStreamClose(img, nil);
- delete []buf;
-
- if (!pDir->WriteDirFile("models\\txd.dir")) {
- DealWithTxdWriteError(i, TXDSTORESIZE, "CVT_ERR");
- delete pDir;
- return false;
- }
-
- delete pDir;
-
- WriteVideoCardCapsFile();
- return true;
-}
-#endif // GTA_PC
-
-STARTPATCHES
- InjectHook(0x592380, RwTextureGtaStreamRead, PATCH_JUMP);
- InjectHook(0x5924A0, RwTexDictionaryGtaStreamRead, PATCH_JUMP);
- InjectHook(0x592550, RwTexDictionaryGtaStreamRead1, PATCH_JUMP);
- InjectHook(0x592650, RwTexDictionaryGtaStreamRead2, PATCH_JUMP);
-
- InjectHook(0x5926C0, ReadVideoCardCapsFile, PATCH_JUMP);
- InjectHook(0x592740, CheckVideoCardCaps, PATCH_JUMP);
- InjectHook(0x5927D0, WriteVideoCardCapsFile, PATCH_JUMP);
- InjectHook(0x592880, ConvertingTexturesScreen, PATCH_JUMP);
- InjectHook(0x592BF0, DealWithTxdWriteError, PATCH_JUMP);
- InjectHook(0x592C70, CreateTxdImageForVideoCard, PATCH_JUMP);
-ENDPATCHES
diff --git a/src/core/TxdStore.cpp b/src/core/TxdStore.cpp
deleted file mode 100644
index c751147d..00000000
--- a/src/core/TxdStore.cpp
+++ /dev/null
@@ -1,209 +0,0 @@
-#include "common.h"
-#include "patcher.h"
-#include "templates.h"
-#include "General.h"
-#include "Streaming.h"
-#include "RwHelper.h"
-#include "TxdStore.h"
-
-CPool<TxdDef,TxdDef> *&CTxdStore::ms_pTxdPool = *(CPool<TxdDef,TxdDef>**)0x8F5FB8;
-RwTexDictionary *&CTxdStore::ms_pStoredTxd = *(RwTexDictionary**)0x9405BC;
-
-void
-CTxdStore::Initialise(void)
-{
- if(ms_pTxdPool == nil)
- ms_pTxdPool = new CPool<TxdDef,TxdDef>(TXDSTORESIZE);
-}
-
-void
-CTxdStore::Shutdown(void)
-{
- if(ms_pTxdPool)
- delete ms_pTxdPool;
-}
-
-void
-CTxdStore::GameShutdown(void)
-{
- int i;
-
- for(i = 0; i < TXDSTORESIZE; i++){
- TxdDef *def = GetSlot(i);
- if(def && GetNumRefs(i) == 0)
- RemoveTxdSlot(i);
- }
-}
-
-int
-CTxdStore::AddTxdSlot(const char *name)
-{
- TxdDef *def = ms_pTxdPool->New();
- assert(def);
- def->texDict = nil;
- def->refCount = 0;
- strcpy(def->name, name);
- return ms_pTxdPool->GetJustIndex(def);
-}
-
-void
-CTxdStore::RemoveTxdSlot(int slot)
-{
- TxdDef *def = GetSlot(slot);
- if(def->texDict)
- RwTexDictionaryDestroy(def->texDict);
- ms_pTxdPool->Delete(def);
-}
-
-int
-CTxdStore::FindTxdSlot(const char *name)
-{
- char *defname;
- int size = ms_pTxdPool->GetSize();
- for(int i = 0; i < size; i++){
- defname = GetTxdName(i);
- if(defname && !CGeneral::faststricmp(defname, name))
- return i;
- }
- return -1;
-}
-
-char*
-CTxdStore::GetTxdName(int slot)
-{
- TxdDef *def = GetSlot(slot);
- return def ? def->name : nil;
-}
-
-void
-CTxdStore::PushCurrentTxd(void)
-{
- ms_pStoredTxd = RwTexDictionaryGetCurrent();
-}
-
-void
-CTxdStore::PopCurrentTxd(void)
-{
- RwTexDictionarySetCurrent(ms_pStoredTxd);
- ms_pStoredTxd = nil;
-}
-
-void
-CTxdStore::SetCurrentTxd(int slot)
-{
- TxdDef *def = GetSlot(slot);
- if(def)
- RwTexDictionarySetCurrent(def->texDict);
-}
-
-void
-CTxdStore::Create(int slot)
-{
- GetSlot(slot)->texDict = RwTexDictionaryCreate();
-}
-
-int
-CTxdStore::GetNumRefs(int slot)
-{
- return GetSlot(slot)->refCount;
-}
-
-void
-CTxdStore::AddRef(int slot)
-{
- GetSlot(slot)->refCount++;
-}
-
-void
-CTxdStore::RemoveRef(int slot)
-{
- if(--GetSlot(slot)->refCount <= 0)
- CStreaming::RemoveModel(slot + STREAM_OFFSET_TXD);
-}
-
-void
-CTxdStore::RemoveRefWithoutDelete(int slot)
-{
- GetSlot(slot)->refCount--;
-}
-
-bool
-CTxdStore::LoadTxd(int slot, RwStream *stream)
-{
- TxdDef *def = GetSlot(slot);
-
- if(RwStreamFindChunk(stream, rwID_TEXDICTIONARY, nil, nil)){
- def->texDict = RwTexDictionaryGtaStreamRead(stream);
- return def->texDict != nil;
- }
- printf("Failed to load TXD\n");
- return false;
-}
-
-bool
-CTxdStore::LoadTxd(int slot, const char *filename)
-{
- RwStream *stream;
- bool ret;
-
- ret = false;
- _rwD3D8TexDictionaryEnableRasterFormatConversion(true);
- do
- stream = RwStreamOpen(rwSTREAMFILENAME, rwSTREAMREAD, filename);
- while(stream == nil);
- ret = LoadTxd(slot, stream);
- RwStreamClose(stream, nil);
- return ret;
-}
-
-bool
-CTxdStore::StartLoadTxd(int slot, RwStream *stream)
-{
- TxdDef *def = GetSlot(slot);
- if(RwStreamFindChunk(stream, rwID_TEXDICTIONARY, nil, nil)){
- def->texDict = RwTexDictionaryGtaStreamRead1(stream);
- return def->texDict != nil;
- }else{
- printf("Failed to load TXD\n");
- return false;
- }
-}
-
-bool
-CTxdStore::FinishLoadTxd(int slot, RwStream *stream)
-{
- TxdDef *def = GetSlot(slot);
- def->texDict = RwTexDictionaryGtaStreamRead2(stream, def->texDict);
- return def->texDict != nil;
-}
-
-void
-CTxdStore::RemoveTxd(int slot)
-{
- TxdDef *def = GetSlot(slot);
- if(def->texDict)
- RwTexDictionaryDestroy(def->texDict);
- def->texDict = nil;
-}
-
-STARTPATCHES
- InjectHook(0x527440, CTxdStore::Initialise, PATCH_JUMP);
- InjectHook(0x527470, CTxdStore::Shutdown, PATCH_JUMP);
- InjectHook(0x527490, CTxdStore::GameShutdown, PATCH_JUMP);
- InjectHook(0x5274E0, CTxdStore::AddTxdSlot, PATCH_JUMP);
- InjectHook(0x5275D0, CTxdStore::FindTxdSlot, PATCH_JUMP);
- InjectHook(0x527590, CTxdStore::GetTxdName, PATCH_JUMP);
- InjectHook(0x527900, CTxdStore::PushCurrentTxd, PATCH_JUMP);
- InjectHook(0x527910, CTxdStore::PopCurrentTxd, PATCH_JUMP);
- InjectHook(0x5278C0, CTxdStore::SetCurrentTxd, PATCH_JUMP);
- InjectHook(0x527830, CTxdStore::Create, PATCH_JUMP);
- InjectHook(0x527A00, CTxdStore::GetNumRefs, PATCH_JUMP);
- InjectHook(0x527930, CTxdStore::AddRef, PATCH_JUMP);
- InjectHook(0x527970, CTxdStore::RemoveRef, PATCH_JUMP);
- InjectHook(0x5279C0, CTxdStore::RemoveRefWithoutDelete, PATCH_JUMP);
- InjectHook(0x527700, (bool (*)(int, RwStream*))CTxdStore::LoadTxd, PATCH_JUMP);
- InjectHook(0x5276B0, (bool (*)(int, const char*))CTxdStore::LoadTxd, PATCH_JUMP);
- InjectHook(0x527770, CTxdStore::StartLoadTxd, PATCH_JUMP);
- InjectHook(0x5277E0, CTxdStore::FinishLoadTxd, PATCH_JUMP);
- InjectHook(0x527870, CTxdStore::RemoveTxd, PATCH_JUMP);
-ENDPATCHES
diff --git a/src/core/TxdStore.h b/src/core/TxdStore.h
deleted file mode 100644
index 12ac708f..00000000
--- a/src/core/TxdStore.h
+++ /dev/null
@@ -1,44 +0,0 @@
-#pragma once
-
-#include "templates.h"
-
-struct TxdDef {
- RwTexDictionary *texDict;
- int refCount;
- char name[20];
-};
-
-class CTxdStore
-{
- static CPool<TxdDef,TxdDef> *&ms_pTxdPool;
- static RwTexDictionary *&ms_pStoredTxd;
-public:
- static void Initialise(void);
- static void Shutdown(void);
- static void GameShutdown(void);
- static int AddTxdSlot(const char *name);
- static void RemoveTxdSlot(int slot);
- static int FindTxdSlot(const char *name);
- static char *GetTxdName(int slot);
- static void PushCurrentTxd(void);
- static void PopCurrentTxd(void);
- static void SetCurrentTxd(int slot);
- static void Create(int slot);
- static int GetNumRefs(int slot);
- static void AddRef(int slot);
- static void RemoveRef(int slot);
- static void RemoveRefWithoutDelete(int slot);
- static bool LoadTxd(int slot, RwStream *stream);
- static bool LoadTxd(int slot, const char *filename);
- static bool StartLoadTxd(int slot, RwStream *stream);
- static bool FinishLoadTxd(int slot, RwStream *stream);
- static void RemoveTxd(int slot);
-
- static TxdDef *GetSlot(int slot) {
- assert(slot >= 0);
- assert(ms_pTxdPool);
- assert(slot < ms_pTxdPool->GetSize());
- return ms_pTxdPool->GetSlot(slot);
- }
- static bool isTxdLoaded(int slot);
-};
diff --git a/src/core/common.h b/src/core/common.h
index 6ea88f2f..7688b182 100644
--- a/src/core/common.h
+++ b/src/core/common.h
@@ -74,9 +74,11 @@ inline uint32 ldb(uint32 p, uint32 s, uint32 w)
}
+#ifndef RWLIBS
// little hack
extern void **rwengine;
#define RwEngineInstance (*rwengine)
+#endif
#include "skeleton.h"
#include "Draw.h"
diff --git a/src/core/re3.cpp b/src/core/re3.cpp
index 11b1584a..40e44b15 100644
--- a/src/core/re3.cpp
+++ b/src/core/re3.cpp
@@ -24,7 +24,11 @@
#include <list>
+#ifndef RWLIBS
void **rwengine = *(void***)0x5A10E1;
+#else
+extern "C" int vsprintf(char* const _Buffer, char const* const _Format, va_list _ArgList);
+#endif
DebugMenuAPI gDebugMenuAPI;
diff --git a/src/core/rw.cpp b/src/core/rw.cpp
deleted file mode 100644
index 52bcf5bb..00000000
--- a/src/core/rw.cpp
+++ /dev/null
@@ -1,415 +0,0 @@
-#include "common.h"
-#include "patcher.h"
-#include "rwcore.h"
-#include "rpworld.h"
-#include "rpmatfx.h"
-#include "rpskin.h"
-#include "rphanim.h"
-#include "rtbmp.h"
-
-typedef RwV3d *(*rwVectorsMultFn) (RwV3d * pointsOut,
- const RwV3d * pointsIn,
- RwInt32 numPoints,
- const RwMatrix * matrix);
-
-
-WRAPPER void _rwObjectHasFrameSetFrame(void* object, RwFrame* frame) { EAXJMP(0x5BC950); }
-WRAPPER RpAtomic* AtomicDefaultRenderCallBack(RpAtomic* atomic) { EAXJMP(0x59E690); }
-WRAPPER void _rpAtomicResyncInterpolatedSphere(RpAtomic* atomic) { EAXJMP(0x59E6C0); }
-WRAPPER RwSphere const* RpAtomicGetWorldBoundingSphere(RpAtomic* atomic) { EAXJMP(0x59E800); }
-WRAPPER RwInt32 RpClumpGetNumAtomics(RpClump* clump) { EAXJMP(0x59ED50); }
-WRAPPER RpClump* RpClumpRender(RpClump* clump) { EAXJMP(0x59ED80); }
-WRAPPER RpClump* RpClumpForAllAtomics(RpClump* clump, RpAtomicCallBack callback, void* pData) { EAXJMP(0x59EDD0); }
-WRAPPER RpClump* RpClumpForAllCameras(RpClump* clump, RwCameraCallBack callback, void* pData) { EAXJMP(0x59EE10); }
-WRAPPER RpClump* RpClumpForAllLights(RpClump* clump, RpLightCallBack callback, void* pData) { EAXJMP(0x59EE60); }
-WRAPPER RpAtomic* RpAtomicCreate() { EAXJMP(0x59EEB0); }
-WRAPPER RpAtomic* RpAtomicSetGeometry(RpAtomic* atomic, RpGeometry* geometry, RwUInt32 flags) { EAXJMP(0x59EFA0); }
-WRAPPER RwBool RpAtomicDestroy(RpAtomic* atomic) { EAXJMP(0x59F020); }
-WRAPPER RpAtomic* RpAtomicClone(RpAtomic* atomic) { EAXJMP(0x59F0A0); }
-WRAPPER RpClump* RpClumpClone(RpClump* clump) { EAXJMP(0x59F1B0); }
-WRAPPER RpClump* RpClumpCreate() { EAXJMP(0x59F490); }
-WRAPPER RwBool RpClumpDestroy(RpClump* clump) { EAXJMP(0x59F500); }
-WRAPPER RpClump* RpClumpAddAtomic(RpClump* clump, RpAtomic* atomic) { EAXJMP(0x59F680); }
-WRAPPER RpClump* RpClumpRemoveAtomic(RpClump* clump, RpAtomic* atomic) { EAXJMP(0x59F6B0); }
-WRAPPER RpClump* RpClumpRemoveLight(RpClump* clump, RpLight* light) { EAXJMP(0x59F6E0); }
-WRAPPER RpClump* RpClumpStreamRead(RwStream* stream) { EAXJMP(0x59FC50); }
-WRAPPER RwInt32 RpAtomicRegisterPlugin(RwInt32 size, RwUInt32 pluginID, RwPluginObjectConstructor ructCB, RwPluginObjectDestructor destructCB, RwPluginObjectCopy copyCB) { EAXJMP(0x5A0510); }
-WRAPPER RwInt32 RpClumpRegisterPlugin(RwInt32 size, RwUInt32 pluginID, RwPluginObjectConstructor ructCB, RwPluginObjectDestructor destructCB, RwPluginObjectCopy copyCB) { EAXJMP(0x5A0540); }
-WRAPPER RwInt32 RpAtomicRegisterPluginStream(RwUInt32 pluginID, RwPluginDataChunkReadCallBack readCB, RwPluginDataChunkWriteCallBack writeCB, RwPluginDataChunkGetSizeCallBack getSizeCB) { EAXJMP(0x5A0570); }
-WRAPPER RwInt32 RpAtomicSetStreamAlwaysCallBack(RwUInt32 pluginID, RwPluginDataChunkAlwaysCallBack alwaysCB) { EAXJMP(0x5A05A0); }
-WRAPPER RwInt32 RpAtomicSetStreamRightsCallBack(RwUInt32 pluginID, RwPluginDataChunkRightsCallBack rightsCB) { EAXJMP(0x5A05C0); }
-WRAPPER RwInt32 RpAtomicGetPluginOffset(RwUInt32 pluginID) { EAXJMP(0x5A05E0); }
-WRAPPER RpAtomic* RpAtomicSetFrame(RpAtomic* atomic, RwFrame* frame) { EAXJMP(0x5A0600); }
-WRAPPER RwInt32 RwEngineRegisterPlugin(RwInt32 size, RwUInt32 pluginID, RwPluginObjectConstructor initCB, RwPluginObjectDestructor termCB) { EAXJMP(0x5A0DC0); }
-WRAPPER RwInt32 RwEngineGetPluginOffset(RwUInt32 pluginID) { EAXJMP(0x5A0DF0); }
-WRAPPER RwInt32 RwEngineGetNumSubSystems() { EAXJMP(0x5A0E10); }
-WRAPPER RwSubSystemInfo* RwEngineGetSubSystemInfo(RwSubSystemInfo* subSystemInfo, RwInt32 subSystemIndex) { EAXJMP(0x5A0E40); }
-WRAPPER RwInt32 RwEngineGetCurrentSubSystem() { EAXJMP(0x5A0E70); }
-WRAPPER RwBool RwEngineSetSubSystem(RwInt32 subSystemIndex) { EAXJMP(0x5A0EA0); }
-WRAPPER RwInt32 RwEngineGetNumVideoModes() { EAXJMP(0x5A0ED0); }
-WRAPPER RwVideoMode* RwEngineGetVideoModeInfo(RwVideoMode* modeinfo, RwInt32 modeIndex) { EAXJMP(0x5A0F00); }
-WRAPPER RwInt32 RwEngineGetCurrentVideoMode() { EAXJMP(0x5A0F30); }
-WRAPPER RwBool RwEngineSetVideoMode(RwInt32 modeIndex) { EAXJMP(0x5A0F60); }
-WRAPPER RwBool RwEngineStop() { EAXJMP(0x5A0F90); }
-WRAPPER RwBool RwEngineStart() { EAXJMP(0x5A0FE0); }
-WRAPPER RwBool RwEngineClose() { EAXJMP(0x5A1070); }
-WRAPPER RwBool RwEngineOpen(RwEngineOpenParams* initParams) { EAXJMP(0x5A10E0); }
-WRAPPER RwBool RwEngineTerm() { EAXJMP(0x5A1290); }
-WRAPPER RwBool RwEngineInit(RwMemoryFunctions* memFuncs, RwUInt32 initFlags, RwUInt32 resArenaSize) { EAXJMP(0x5A12D0); }
-WRAPPER void* _rwFrameOpen(void* instance, RwInt32 offset, RwInt32 size) { EAXJMP(0x5A15E0); }
-WRAPPER void* _rwFrameClose(void* instance, RwInt32 offset, RwInt32 size) { EAXJMP(0x5A1650); }
-WRAPPER RwFrame* _rwFrameCloneAndLinkClones(RwFrame* root) { EAXJMP(0x5A1690); }
-WRAPPER RwFrame* _rwFramePurgeClone(RwFrame* root) { EAXJMP(0x5A1880); }
-WRAPPER RwBool RwFrameDirty(RwFrame const* frame) { EAXJMP(0x5A1930); }
-WRAPPER void _rwFrameInit(RwFrame* frame) { EAXJMP(0x5A1950); }
-WRAPPER RwFrame* RwFrameCreate() { EAXJMP(0x5A1A00); }
-WRAPPER RwBool RwFrameDestroy(RwFrame* frame) { EAXJMP(0x5A1A30); }
-WRAPPER RwBool RwFrameDestroyHierarchy(RwFrame* frame) { EAXJMP(0x5A1BF0); }
-WRAPPER RwFrame* RwFrameUpdateObjects(RwFrame* frame) { EAXJMP(0x5A1C60); }
-WRAPPER RwMatrix* RwFrameGetLTM(RwFrame* frame) { EAXJMP(0x5A1CE0); }
-WRAPPER RwFrame* RwFrameAddChild(RwFrame* parent, RwFrame* child) { EAXJMP(0x5A1D00); }
-WRAPPER RwFrame* RwFrameRemoveChild(RwFrame* child) { EAXJMP(0x5A1ED0); }
-WRAPPER RwFrame* RwFrameForAllChildren(RwFrame* frame, RwFrameCallBack callBack, void* data) { EAXJMP(0x5A1FC0); }
-WRAPPER RwFrame* RwFrameTranslate(RwFrame* frame, RwV3d const* v, RwOpCombineType combine) { EAXJMP(0x5A2000); }
-WRAPPER RwFrame* RwFrameScale(RwFrame* frame, RwV3d const* v, RwOpCombineType combine) { EAXJMP(0x5A20A0); }
-WRAPPER RwFrame* RwFrameTransform(RwFrame* frame, RwMatrix const* m, RwOpCombineType combine) { EAXJMP(0x5A2140); }
-WRAPPER RwFrame* RwFrameRotate(RwFrame* frame, RwV3d const* axis, RwReal angle, RwOpCombineType combine) { EAXJMP(0x5A21E0); }
-WRAPPER RwFrame* RwFrameSetIdentity(RwFrame* frame) { EAXJMP(0x5A2280); }
-WRAPPER RwFrame* RwFrameForAllObjects(RwFrame* frame, RwObjectCallBack callBack, void* data) { EAXJMP(0x5A2340); }
-WRAPPER RwInt32 RwFrameRegisterPlugin(RwInt32 size, RwUInt32 pluginID, RwPluginObjectConstructor ructCB, RwPluginObjectDestructor destructCB, RwPluginObjectCopy copyCB) { EAXJMP(0x5A2380); }
-WRAPPER RwBool _rwMatrixSetMultFn(rwMatrixMultFn multMat) { EAXJMP(0x5A23B0); }
-WRAPPER RwReal _rwMatrixDeterminant(RwMatrix const* matrix) { EAXJMP(0x5A2520); }
-WRAPPER RwReal _rwMatrixOrthogonalError(RwMatrix const* matrix) { EAXJMP(0x5A2570); }
-WRAPPER RwReal _rwMatrixNormalError(RwMatrix const* matrix) { EAXJMP(0x5A25D0); }
-WRAPPER RwReal _rwMatrixIdentityError(RwMatrix const* matrix) { EAXJMP(0x5A2660); }
-WRAPPER void* _rwMatrixClose(void* instance, RwInt32 offset, RwInt32 size) { EAXJMP(0x5A2730); }
-WRAPPER void* _rwMatrixOpen(void* instance, RwInt32 offset, RwInt32 size) { EAXJMP(0x5A2770); }
-WRAPPER RwMatrix* RwMatrixOptimize(RwMatrix* matrix, RwMatrixTolerance const* tolerance) { EAXJMP(0x5A2820); }
-WRAPPER RwMatrix* RwMatrixUpdate(RwMatrix* matrix) { EAXJMP(0x5A28E0); }
-WRAPPER RwMatrix* RwMatrixMultiply(RwMatrix* matrixOut, RwMatrix const* MatrixIn1, RwMatrix const* matrixIn2) { EAXJMP(0x5A28F0); }
-WRAPPER RwMatrix* RwMatrixRotateOneMinusCosineSine(RwMatrix* matrix, RwV3d const* unitAxis, RwReal oneMinusCosine, RwReal sine, RwOpCombineType combineOp) { EAXJMP(0x5A2960); }
-WRAPPER RwMatrix* RwMatrixRotate(RwMatrix* matrix, RwV3d const* axis, RwReal angle, RwOpCombineType combineOp) { EAXJMP(0x5A2BF0); }
-WRAPPER RwMatrix* RwMatrixInvert(RwMatrix* matrixOut, RwMatrix const* matrixIn) { EAXJMP(0x5A2C90); }
-WRAPPER RwMatrix* RwMatrixScale(RwMatrix* matrix, RwV3d const* scale, RwOpCombineType combineOp) { EAXJMP(0x5A2EE0); }
-WRAPPER RwMatrix* RwMatrixTranslate(RwMatrix* matrix, RwV3d const* translation, RwOpCombineType combineOp) { EAXJMP(0x5A3070); }
-WRAPPER RwMatrix* RwMatrixTransform(RwMatrix* matrix, RwMatrix const* transform, RwOpCombineType combineOp) { EAXJMP(0x5A31C0); }
-WRAPPER RwBool RwMatrixDestroy(RwMatrix* mpMat) { EAXJMP(0x5A3300); }
-WRAPPER RwMatrix* RwMatrixCreate() { EAXJMP(0x5A3330); }
-WRAPPER RwBool _rwVectorSetMultFn(rwVectorMultFn multPoint, rwVectorsMultFn multPoints, rwVectorMultFn multVector, rwVectorsMultFn multVectors) { EAXJMP(0x5A3450); }
-WRAPPER RwReal _rwV3dNormalize(RwV3d* out, RwV3d const* in) { EAXJMP(0x5A3600); }
-WRAPPER RwReal RwV3dLength(RwV3d const* in) { EAXJMP(0x5A36A0); }
-WRAPPER RwReal _rwSqrt(RwReal const num) { EAXJMP(0x5A3710); }
-WRAPPER RwReal _rwInvSqrt(RwReal const num) { EAXJMP(0x5A3770); }
-WRAPPER RwV3d* RwV3dTransformPoints(RwV3d* pointsOut, RwV3d const* pointsIn, RwInt32 numPoints, RwMatrix const* matrix) { EAXJMP(0x5A37D0); }
-WRAPPER RwV3d* RwV3dTransformVectors(RwV3d* vectorsOut, RwV3d const* vectorsIn, RwInt32 numPoints, RwMatrix const* matrix) { EAXJMP(0x5A37E0); }
-WRAPPER void* _rwVectorClose(void* instance, RwInt32 offset, RwInt32 size) { EAXJMP(0x5A37F0); }
-WRAPPER void* _rwVectorOpen(void* instance, RwInt32 offset, RwInt32 size) { EAXJMP(0x5A3860); }
-WRAPPER RwUInt32 RwStreamRead(RwStream* stream, void* buffer, RwUInt32 length) { EAXJMP(0x5A3AD0); }
-WRAPPER RwStream* RwStreamWrite(RwStream* stream, void const* buffer, RwUInt32 length) { EAXJMP(0x5A3C30); }
-WRAPPER RwStream* RwStreamSkip(RwStream* stream, RwUInt32 offset) { EAXJMP(0x5A3DF0); }
-WRAPPER RwBool RwStreamClose(RwStream* stream, void* pData) { EAXJMP(0x5A3F10); }
-WRAPPER RwStream* RwStreamOpen(RwStreamType type, RwStreamAccessType accessType, void const* pData) { EAXJMP(0x5A3FE0); }
-WRAPPER RwReal RwIm2DGetNearScreenZ() { EAXJMP(0x5A43A0); }
-WRAPPER RwReal RwIm2DGetFarScreenZ() { EAXJMP(0x5A43B0); }
-WRAPPER RwBool RwRenderStateSet(RwRenderState state, void* value) { EAXJMP(0x5A43C0); }
-WRAPPER RwBool RwRenderStateGet(RwRenderState state, void* value) { EAXJMP(0x5A4410); }
-WRAPPER RwBool RwIm2DRenderLine(RwIm2DVertex* vertices, RwInt32 numVertices, RwInt32 vert1, RwInt32 vert2) { EAXJMP(0x5A4420); }
-WRAPPER RwBool RwIm2DRenderPrimitive(RwPrimitiveType primType, RwIm2DVertex* vertices, RwInt32 numVertices) { EAXJMP(0x5A4430); }
-WRAPPER RwBool RwIm2DRenderIndexedPrimitive(RwPrimitiveType primType, RwIm2DVertex* vertices, RwInt32 numVertices, RwImVertexIndex* indices, RwInt32 numIndices) { EAXJMP(0x5A4440); }
-WRAPPER RwCamera* RwCameraEndUpdate(RwCamera* camera) { EAXJMP(0x5A5020); }
-WRAPPER RwCamera* RwCameraBeginUpdate(RwCamera* camera) { EAXJMP(0x5A5030); }
-WRAPPER RwCamera* RwCameraSetViewOffset(RwCamera* camera, RwV2d const* offset) { EAXJMP(0x5A5040); }
-WRAPPER RwCamera* RwCameraSetNearClipPlane(RwCamera* camera, RwReal nearClip) { EAXJMP(0x5A5070); }
-WRAPPER RwCamera* RwCameraSetFarClipPlane(RwCamera* camera, RwReal farClip) { EAXJMP(0x5A5140); }
-WRAPPER RwFrustumTestResult RwCameraFrustumTestSphere(RwCamera const* camera, RwSphere const* sphere) { EAXJMP(0x5A5170); }
-WRAPPER RwCamera* RwCameraClear(RwCamera* camera, RwRGBA* colour, RwInt32 clearMode) { EAXJMP(0x5A51E0); }
-WRAPPER RwCamera* RwCameraShowRaster(RwCamera* camera, void* pDev, RwUInt32 flags) { EAXJMP(0x5A5210); }
-WRAPPER RwCamera* RwCameraSetProjection(RwCamera* camera, RwCameraProjection projection) { EAXJMP(0x5A5240); }
-WRAPPER RwCamera* RwCameraSetViewWindow(RwCamera* camera, RwV2d const* viewWindow) { EAXJMP(0x5A52B0); }
-WRAPPER RwInt32 RwCameraRegisterPlugin(RwInt32 size, RwUInt32 pluginID, RwPluginObjectConstructor ructCB, RwPluginObjectDestructor destructCB, RwPluginObjectCopy copyCB) { EAXJMP(0x5A52F0); }
-WRAPPER RwBool RwCameraDestroy(RwCamera* camera) { EAXJMP(0x5A5320); }
-WRAPPER RwCamera* RwCameraCreate() { EAXJMP(0x5A5360); }
-WRAPPER RwBool RwTextureSetMipmapping(RwBool enable) { EAXJMP(0x5A7100); }
-WRAPPER RwBool RwTextureGetMipmapping() { EAXJMP(0x5A7120); }
-WRAPPER RwBool RwTextureSetAutoMipmapping(RwBool enable) { EAXJMP(0x5A7130); }
-WRAPPER RwBool RwTextureGetAutoMipmapping() { EAXJMP(0x5A7150); }
-WRAPPER RwTexDictionary* RwTexDictionaryCreate() { EAXJMP(0x5A7160); }
-WRAPPER RwBool RwTexDictionaryDestroy(RwTexDictionary* dict) { EAXJMP(0x5A7200); }
-WRAPPER RwTexDictionary const* RwTexDictionaryForAllTextures(RwTexDictionary const* dict, RwTextureCallBack fpCallBack, void* pData) { EAXJMP(0x5A7290); }
-WRAPPER RwTexture* RwTextureCreate(RwRaster* raster) { EAXJMP(0x5A72D0); }
-WRAPPER RwBool RwTextureDestroy(RwTexture* texture) { EAXJMP(0x5A7330); }
-WRAPPER RwTexture* RwTextureSetName(RwTexture* texture, RwChar const* name) { EAXJMP(0x5A73B0); }
-WRAPPER RwTexture* RwTextureSetMaskName(RwTexture* texture, RwChar const* maskName) { EAXJMP(0x5A7420); }
-WRAPPER RwTexture* RwTexDictionaryAddTexture(RwTexDictionary* dict, RwTexture* texture) { EAXJMP(0x5A7490); }
-WRAPPER RwTexture* RwTexDictionaryFindNamedTexture(RwTexDictionary* dict, RwChar const* name) { EAXJMP(0x5A74D0); }
-WRAPPER RwTexDictionary* RwTexDictionarySetCurrent(RwTexDictionary* dict) { EAXJMP(0x5A7550); }
-WRAPPER RwTexDictionary* RwTexDictionaryGetCurrent() { EAXJMP(0x5A7570); }
-WRAPPER RwTexture* RwTextureRead(RwChar const* name, RwChar const* maskName) { EAXJMP(0x5A7580); }
-WRAPPER RwBool RwTextureRasterGenerateMipmaps(RwRaster* raster, RwImage* image) { EAXJMP(0x5A7780); }
-WRAPPER RwImage* RwImageCreate(RwInt32 width, RwInt32 height, RwInt32 depth) { EAXJMP(0x5A9120); }
-WRAPPER RwBool RwImageDestroy(RwImage* image) { EAXJMP(0x5A9180); }
-WRAPPER RwImage* RwImageAllocatePixels(RwImage* image) { EAXJMP(0x5A91E0); }
-WRAPPER RwImage* RwImageFreePixels(RwImage* image) { EAXJMP(0x5A92A0); }
-WRAPPER RwImage* RwImageMakeMask(RwImage* image) { EAXJMP(0x5A92D0); }
-WRAPPER RwImage* RwImageApplyMask(RwImage* image, RwImage const* mask) { EAXJMP(0x5A93A0); }
-WRAPPER RwChar const* RwImageSetPath(RwChar const* path) { EAXJMP(0x5A9750); }
-WRAPPER RwImage* RwImageRead(RwChar const* imageName) { EAXJMP(0x5A9810); }
-WRAPPER RwChar const* RwImageFindFileType(RwChar const* imageName) { EAXJMP(0x5A9B40); }
-WRAPPER RwImage* RwImageReadMaskedImage(RwChar const* imageName, RwChar const* maskname) { EAXJMP(0x5A9C10); }
-WRAPPER RwImage* RwImageCopy(RwImage* destImage, RwImage const* sourceImage) { EAXJMP(0x5A9F50); }
-WRAPPER RwImage* RwImageGammaCorrect(RwImage* image) { EAXJMP(0x5AA130); }
-WRAPPER RwBool RwImageSetGamma(RwReal gammaValue) { EAXJMP(0x5AA2C0); }
-WRAPPER RwStream* _rwStreamWriteVersionedChunkHeader(RwStream* stream, RwInt32 type, RwInt32 size, RwUInt32 version, RwUInt32 buildNum) { EAXJMP(0x5AA4E0); }
-WRAPPER RwBool RwStreamFindChunk(RwStream* stream, RwUInt32 type, RwUInt32* lengthOut, RwUInt32* versionOut) { EAXJMP(0x5AA540); }
-WRAPPER void* RwMemLittleEndian32(void* mem, RwUInt32 size) { EAXJMP(0x5AA640); }
-WRAPPER void* RwMemNative32(void* mem, RwUInt32 size) { EAXJMP(0x5AA650); }
-WRAPPER void* RwMemFloat32ToReal(void* mem, RwUInt32 size) { EAXJMP(0x5AA660); }
-WRAPPER RwStream* RwStreamWriteReal(RwStream* stream, RwReal const* reals, RwUInt32 numBytes) { EAXJMP(0x5AA680); }
-WRAPPER RwStream* RwStreamWriteInt32(RwStream* stream, RwInt32 const* ints, RwUInt32 numBytes) { EAXJMP(0x5AA720); }
-WRAPPER RwStream* RwStreamReadReal(RwStream* stream, RwReal* reals, RwUInt32 numBytes) { EAXJMP(0x5AA740); }
-WRAPPER RwStream* RwStreamReadInt32(RwStream* stream, RwInt32* ints, RwUInt32 numBytes) { EAXJMP(0x5AA7B0); }
-WRAPPER RwUInt32 RwTextureStreamGetSize(RwTexture const* texture) { EAXJMP(0x5AA800); }
-WRAPPER RwTexture const* RwTextureStreamWrite(RwTexture const* texture, RwStream* stream) { EAXJMP(0x5AA870); }
-WRAPPER RwTexture* RwTextureStreamRead(RwStream* stream) { EAXJMP(0x5AAA40); }
-WRAPPER RwTexDictionary const* RwTexDictionaryStreamWrite(RwTexDictionary const* texDict, RwStream* stream) { EAXJMP(0x5AB020); }
-WRAPPER RpMorphTarget const* RpMorphTargetCalcBoundingSphere(RpMorphTarget const* morphTarget, RwSphere* boundingSphere) { EAXJMP(0x5AC890); }
-WRAPPER RwInt32 RpGeometryAddMorphTargets(RpGeometry* geometry, RwInt32 mtcount) { EAXJMP(0x5AC9A0); }
-WRAPPER RpGeometry const* RpGeometryTriangleSetVertexIndices(RpGeometry const* geometry, RpTriangle* triangle, RwUInt16 vert1, RwUInt16 vert2, RwUInt16 vert3) { EAXJMP(0x5ACB60); }
-WRAPPER RpGeometry* RpGeometryTriangleSetMaterial(RpGeometry* geometry, RpTriangle* triangle, RpMaterial* material) { EAXJMP(0x5ACB90); }
-WRAPPER RpGeometry* RpGeometryForAllMaterials(RpGeometry* geometry, RpMaterialCallBack fpCallBack, void* pData) { EAXJMP(0x5ACBF0); }
-WRAPPER RpGeometry* RpGeometryLock(RpGeometry* geometry, RwInt32 lockMode) { EAXJMP(0x5ACC30); }
-WRAPPER RpGeometry* RpGeometryUnlock(RpGeometry* geometry) { EAXJMP(0x5ACC60); }
-WRAPPER RpGeometry* RpGeometryCreate(RwInt32 numVert, RwInt32 numTriangles, RwUInt32 format) { EAXJMP(0x5ACD10); }
-WRAPPER RpGeometry* _rpGeometryAddRef(RpGeometry* geometry) { EAXJMP(0x5ACF40); }
-WRAPPER RwBool RpGeometryDestroy(RpGeometry* geometry) { EAXJMP(0x5ACF50); }
-WRAPPER RwInt32 RpGeometryRegisterPlugin(RwInt32 size, RwUInt32 pluginID, RwPluginObjectConstructor ructCB, RwPluginObjectDestructor destructCB, RwPluginObjectCopy copyCB) { EAXJMP(0x5ACFF0); }
-WRAPPER RwInt32 RpGeometryRegisterPluginStream(RwUInt32 pluginID, RwPluginDataChunkReadCallBack readCB, RwPluginDataChunkWriteCallBack writeCB, RwPluginDataChunkGetSizeCallBack getSizeCB) { EAXJMP(0x5AD020); }
-WRAPPER RpGeometry* RpGeometryStreamRead(RwStream* stream) { EAXJMP(0x5AD050); }
-WRAPPER RwRaster* RwRasterGetCurrentContext() { EAXJMP(0x5AD6D0); }
-WRAPPER RwRaster* RwRasterUnlock(RwRaster* raster) { EAXJMP(0x5AD6F0); }
-WRAPPER RwRaster* RwRasterRenderFast(RwRaster* raster, RwInt32 x, RwInt32 y) { EAXJMP(0x5AD710); }
-WRAPPER RwRaster* RwRasterUnlockPalette(RwRaster* raster) { EAXJMP(0x5AD750); }
-WRAPPER RwBool RwRasterDestroy(RwRaster* raster) { EAXJMP(0x5AD780); }
-WRAPPER RwRaster* RwRasterPushContext(RwRaster* raster) { EAXJMP(0x5AD7C0); }
-WRAPPER RwInt32 RwRasterRegisterPlugin(RwInt32 size, RwUInt32 pluginID, RwPluginObjectConstructor ructCB, RwPluginObjectDestructor destructCB, RwPluginObjectCopy copyCB) { EAXJMP(0x5AD810); }
-WRAPPER RwUInt8* RwRasterLockPalette(RwRaster* raster, RwInt32 lockMode) { EAXJMP(0x5AD840); }
-WRAPPER RwRaster* RwRasterPopContext() { EAXJMP(0x5AD870); }
-WRAPPER RwInt32 RwRasterGetNumLevels(RwRaster* raster) { EAXJMP(0x5AD8C0); }
-WRAPPER RwRaster* RwRasterShowRaster(RwRaster* raster, void* dev, RwUInt32 flags) { EAXJMP(0x5AD900); }
-WRAPPER RwRaster* RwRasterCreate(RwInt32 width, RwInt32 height, RwInt32 depth, RwInt32 flags) { EAXJMP(0x5AD930); }
-WRAPPER RwUInt8* RwRasterLock(RwRaster* raster, RwUInt8 level, RwInt32 lockMode) { EAXJMP(0x5AD9D0); }
-WRAPPER RpMaterial* RpMaterialCreate() { EAXJMP(0x5ADC30); }
-WRAPPER RwBool RpMaterialDestroy(RpMaterial* material) { EAXJMP(0x5ADCB0); }
-WRAPPER RpMaterial* RpMaterialSetTexture(RpMaterial* material, RwTexture* texture) { EAXJMP(0x5ADD10); }
-WRAPPER RwInt32 RpMaterialRegisterPlugin(RwInt32 size, RwUInt32 pluginID, RwPluginObjectConstructor ructCB, RwPluginObjectDestructor destructCB, RwPluginObjectCopy copyCB) { EAXJMP(0x5ADD40); }
-WRAPPER RwInt32 RpMaterialRegisterPluginStream(RwUInt32 pluginID, RwPluginDataChunkReadCallBack readCB, RwPluginDataChunkWriteCallBack writeCB, RwPluginDataChunkGetSizeCallBack getSizeCB) { EAXJMP(0x5ADD70); }
-WRAPPER RpMaterial* RpMaterialStreamRead(RwStream* stream) { EAXJMP(0x5ADDA0); }
-WRAPPER RpWorldSector* _rpSectorDefaultRenderCallBack(RpWorldSector* sector) { EAXJMP(0x5AE0B0); }
-WRAPPER RwBool _rpWorldForAllGlobalLights(RpLightCallBack callBack, void* pData) { EAXJMP(0x5AE100); }
-WRAPPER RpWorldSector* _rpWorldSectorForAllLocalLights(RpWorldSector* sector, RpLightCallBack callBack, void* pData) { EAXJMP(0x5AE150); }
-WRAPPER RpWorld* RpWorldUnlock(RpWorld* world) { EAXJMP(0x5AE190); }
-WRAPPER RpWorld* RpWorldSectorGetWorld(RpWorldSector const* sector) { EAXJMP(0x5AE2B0); }
-WRAPPER RwBool RpWorldDestroy(RpWorld* world) { EAXJMP(0x5AE340); }
-WRAPPER RpWorld* RpWorldCreate(RwBBox* boundingBox) { EAXJMP(0x5AE6A0); }
-WRAPPER RwInt32 RpWorldRegisterPlugin(RwInt32 size, RwUInt32 pluginID, RwPluginObjectConstructor ructCB, RwPluginObjectDestructor destructCB, RwPluginObjectCopy copyCB) { EAXJMP(0x5AEA40); }
-WRAPPER RwInt32 RpWorldRegisterPluginStream(RwUInt32 pluginID, RwPluginDataChunkReadCallBack readCB, RwPluginDataChunkWriteCallBack writeCB, RwPluginDataChunkGetSizeCallBack getSizeCB) { EAXJMP(0x5AEA70); }
-WRAPPER RwBool RpWorldPluginAttach() { EAXJMP(0x5AEAA0); }
-WRAPPER RpWorld* RpWorldAddCamera(RpWorld* world, RwCamera* camera) { EAXJMP(0x5AFB80); }
-WRAPPER RpWorld* RpWorldRemoveCamera(RpWorld* world, RwCamera* camera) { EAXJMP(0x5AFBB0); }
-WRAPPER RpWorld* RpAtomicGetWorld(RpAtomic const* atomic) { EAXJMP(0x5AFC10); }
-WRAPPER RpWorld* RpWorldAddClump(RpWorld* world, RpClump* clump) { EAXJMP(0x5AFC20); }
-WRAPPER RpWorld* RpWorldAddLight(RpWorld* world, RpLight* light) { EAXJMP(0x5AFDA0); }
-WRAPPER RpWorld* RpWorldRemoveLight(RpWorld* world, RpLight* light) { EAXJMP(0x5AFDF0); }
-WRAPPER RwImage* RtBMPImageRead(RwChar const* imageName) { EAXJMP(0x5AFE70); }
-WRAPPER RwBool RpSkinPluginAttach() { EAXJMP(0x5B07D0); }
-WRAPPER RpAtomic* RpSkinAtomicSetHAnimHierarchy(RpAtomic* atomic, RpHAnimHierarchy* hierarchy) { EAXJMP(0x5B1050); }
-WRAPPER RpHAnimHierarchy* RpSkinAtomicGetHAnimHierarchy(RpAtomic const* atomic) { EAXJMP(0x5B1070); }
-WRAPPER RpSkin* RpSkinGeometryGetSkin(RpGeometry* geometry) { EAXJMP(0x5B1080); }
-WRAPPER RpGeometry* RpSkinGeometrySetSkin(RpGeometry* geometry, RpSkin* skin) { EAXJMP(0x5B1090); }
-WRAPPER RwMatrix const* RpSkinGetSkinToBoneMatrices(RpSkin* skin) { EAXJMP(0x5B10D0); }
-WRAPPER RpHAnimHierarchy* RpHAnimHierarchyCreate(RwInt32 numNodes, RwUInt32* nodeFlags, RwInt32* nodeIDs, RpHAnimHierarchyFlag flags, RwInt32 maxKeyFrameSize) { EAXJMP(0x5B10E0); }
-WRAPPER RpHAnimHierarchy* RpHAnimFrameGetHierarchy(RwFrame* frame) { EAXJMP(0x5B11F0); }
-WRAPPER RwBool RpHAnimHierarchySetCurrentAnim(RpHAnimHierarchy* hierarchy, RpHAnimAnimation* anim) { EAXJMP(0x5B1200); }
-WRAPPER RwBool RpHAnimHierarchySubAnimTime(RpHAnimHierarchy* hierarchy, RwReal time) { EAXJMP(0x5B12B0); }
-WRAPPER RwBool RpHAnimHierarchyAddAnimTime(RpHAnimHierarchy* hierarchy, RwReal time) { EAXJMP(0x5B1480); }
-WRAPPER RwBool RpHAnimHierarchyUpdateMatrices(RpHAnimHierarchy* hierarchy) { EAXJMP(0x5B1780); }
-WRAPPER RpHAnimAnimation* RpHAnimAnimationStreamRead(RwStream* stream) { EAXJMP(0x5B1C10); }
-WRAPPER RwBool RpHAnimPluginAttach() { EAXJMP(0x5B1D50); }
-WRAPPER RwBool RpMatFXPluginAttach() { EAXJMP(0x5B2640); }
-WRAPPER RpAtomic* RpMatFXAtomicEnableEffects(RpAtomic* atomic) { EAXJMP(0x5B3750); }
-WRAPPER RpMaterial* RpMatFXMaterialSetEffects(RpMaterial* material, RpMatFXMaterialFlags flags) { EAXJMP(0x5B3780); }
-WRAPPER RpMaterial* RpMatFXMaterialSetupEnvMap(RpMaterial* material, RwTexture* texture, RwFrame* frame, RwBool useFrameBufferAlpha, RwReal coef) { EAXJMP(0x5B38D0); }
-WRAPPER RpMaterial* RpMatFXMaterialSetBumpMapTexture(RpMaterial* material, RwTexture* texture) { EAXJMP(0x5B3A40); }
-WRAPPER RwBool RwD3D8SetRenderState(RwUInt32 state, RwUInt32 value) { EAXJMP(0x5B3CF0); }
-WRAPPER void RwD3D8GetRenderState(RwUInt32 state, void* value) { EAXJMP(0x5B3D40); }
-WRAPPER RwBool RwD3D8SetTextureStageState(RwUInt32 stage, RwUInt32 type, RwUInt32 value) { EAXJMP(0x5B3D60); }
-WRAPPER RwBool RwD3D8SetTexture(RwTexture* texture, RwUInt32 stage) { EAXJMP(0x5B53A0); }
-WRAPPER void* RwIm3DTransform(RwIm3DVertex* pVerts, RwUInt32 numVerts, RwMatrix* ltm, RwUInt32 flags) { EAXJMP(0x5B6720); }
-WRAPPER RwBool RwIm3DEnd() { EAXJMP(0x5B67F0); }
-WRAPPER RwBool RwIm3DRenderIndexedPrimitive(RwPrimitiveType primType, RwImVertexIndex* indices, RwInt32 numIndices) { EAXJMP(0x5B6820); }
-WRAPPER RwBool RwIm3DRenderLine(RwInt32 vert1, RwInt32 vert2) { EAXJMP(0x5B6980); }
-WRAPPER RxPipeline* RwIm3DSetTransformPipeline(RxPipeline* pipeline) { EAXJMP(0x5B6A50); }
-WRAPPER RxPipeline* RwIm3DSetRenderPipeline(RxPipeline* pipeline, RwPrimitiveType primType) { EAXJMP(0x5B6AC0); }
-WRAPPER void RwD3D8EngineSetRefreshRate(RwUInt32 refreshRate) { EAXJMP(0x5B95D0); }
-WRAPPER RwBool RwD3D8CameraAttachWindow(void* camera, void* hwnd) { EAXJMP(0x5B9640); }
-WRAPPER RwBool RwD3D8DeviceSupportsDXTTexture() { EAXJMP(0x5BAEB0); }
-WRAPPER RwBool RwD3D8SetVertexShader(RwUInt32 handle) { EAXJMP(0x5BAF90); }
-WRAPPER RwBool RwD3D8SetPixelShader(RwUInt32 handle) { EAXJMP(0x5BAFD0); }
-WRAPPER RwBool RwD3D8SetStreamSource(RwUInt32 streamNumber, void* streamData, RwUInt32 stride) { EAXJMP(0x5BB010); }
-WRAPPER RwBool RwD3D8SetIndices(void* indexData, RwUInt32 baseVertexIndex) { EAXJMP(0x5BB060); }
-WRAPPER RwBool RwD3D8DrawIndexedPrimitive(RwUInt32 primitiveType, RwUInt32 minIndex, RwUInt32 numVertices, RwUInt32 startIndex, RwUInt32 numIndices) { EAXJMP(0x5BB0B0); }
-WRAPPER RwBool RwD3D8DrawPrimitive(RwUInt32 primitiveType, RwUInt32 startVertex, RwUInt32 numVertices) { EAXJMP(0x5BB140); }
-WRAPPER RwBool RwD3D8SetTransform(RwUInt32 state, void const* matrix) { EAXJMP(0x5BB1D0); }
-WRAPPER void RwD3D8GetTransform(RwUInt32 state, void* matrix) { EAXJMP(0x5BB310); }
-WRAPPER RwBool RwD3D8SetTransformWorld(RwMatrix const* matrix) { EAXJMP(0x5BB340); }
-WRAPPER RwBool RwD3D8SetSurfaceProperties(RwRGBA const* color, RwSurfaceProperties const* surfaceProps, RwBool modulate) { EAXJMP(0x5BB490); }
-WRAPPER RwBool RwD3D8SetLight(RwInt32 index, void const* light) { EAXJMP(0x5BB7A0); }
-WRAPPER RwBool RwD3D8EnableLight(RwInt32 index, RwBool enable) { EAXJMP(0x5BB890); }
-WRAPPER RwBool RwD3D8DynamicVertexBufferCreate(RwUInt32 fvf, RwUInt32 size, void** vertexBuffer) { EAXJMP(0x5BB9F0); }
-WRAPPER void RwD3D8DynamicVertexBufferDestroy(void* vertexBuffer) { EAXJMP(0x5BBAE0); }
-WRAPPER RwBool RwD3D8IndexBufferCreate(RwUInt32 numIndices, void** indexBuffer) { EAXJMP(0x5BBB10); }
-WRAPPER RwBool RwD3D8CreatePixelShader(RwUInt32 const* function, RwUInt32* handle) { EAXJMP(0x5BBB40); }
-WRAPPER void RwD3D8DeletePixelShader(RwUInt32 handle) { EAXJMP(0x5BBB90); }
-WRAPPER RwBool RwD3D8SetPixelShaderConstant(RwUInt32 registerAddress, void const* antData, RwUInt32 antCount) { EAXJMP(0x5BBC00); }
-WRAPPER void const* RwD3D8GetCaps() { EAXJMP(0x5BBC30); }
-WRAPPER RwBool RwD3D8CameraIsSphereFullyInsideFrustum(void const* camera, void const* sphere) { EAXJMP(0x5BBC40); }
-WRAPPER RwBool RwD3D8CameraIsBBoxFullyInsideFrustum(void const* camera, void const* boundingBox) { EAXJMP(0x5BBCA0); }
-WRAPPER RwBool RwD3D8DynamicVertexBufferLock(RwUInt32 vertexSize, RwUInt32 numVertex, void** vertexBufferOut, void** vertexDataOut, RwUInt32* baseIndexOut) { EAXJMP(0x5BBD30); }
-WRAPPER RwBool RwD3D8DynamicVertexBufferUnlock(void* vertexBuffer) { EAXJMP(0x5BBEB0); }
-WRAPPER RwBool _rwIntelSSEsupported() { EAXJMP(0x5BBED0); }
-WRAPPER RwImage* RwImageSetFromRaster(RwImage* image, RwRaster* raster) { EAXJMP(0x5BBF10); }
-WRAPPER RwRaster* RwRasterSetFromImage(RwRaster* raster, RwImage* image) { EAXJMP(0x5BBF50); }
-WRAPPER RwImage* RwImageFindRasterFormat(RwImage* ipImage, RwInt32 nRasterType, RwInt32* npWidth, RwInt32* npHeight, RwInt32* npDepth, RwInt32* npFormat) { EAXJMP(0x5BBF80); }
-WRAPPER RwInt32 RwFrameRegisterPluginStream(RwUInt32 pluginID, RwPluginDataChunkReadCallBack readCB, RwPluginDataChunkWriteCallBack writeCB, RwPluginDataChunkGetSizeCallBack getSizeCB) { EAXJMP(0x5BBFF0); }
-WRAPPER rwFrameList* _rwFrameListDeinitialize(rwFrameList* frameList) { EAXJMP(0x5BC020); }
-WRAPPER rwFrameList* _rwFrameListStreamRead(RwStream* stream, rwFrameList* fl) { EAXJMP(0x5BC050); }
-WRAPPER RpLight* RpLightSetRadius(RpLight* light, RwReal radius) { EAXJMP(0x5BC300); }
-WRAPPER RpLight* RpLightSetColor(RpLight* light, RwRGBAReal const* color) { EAXJMP(0x5BC320); }
-WRAPPER RwReal RpLightGetConeAngle(RpLight const* light) { EAXJMP(0x5BC370); }
-WRAPPER RwInt32 RpLightRegisterPlugin(RwInt32 size, RwUInt32 pluginID, RwPluginObjectConstructor ructCB, RwPluginObjectDestructor destructCB, RwPluginObjectCopy copyCB) { EAXJMP(0x5BC5B0); }
-WRAPPER RpLight* RpLightStreamRead(RwStream* stream) { EAXJMP(0x5BC5E0); }
-WRAPPER RwBool RpLightDestroy(RpLight* light) { EAXJMP(0x5BC780); }
-WRAPPER RpLight* RpLightCreate(RwInt32 type) { EAXJMP(0x5BC7C0); }
-WRAPPER void _rwD3D8TexDictionaryEnableRasterFormatConversion(RwBool enable) { EAXJMP(0x5BE280); }
-WRAPPER RwFileFunctions* RwOsGetFileInterface() { EAXJMP(0x5BF110); }
-WRAPPER RwBool RwFreeListDestroy(RwFreeList* freelist) { EAXJMP(0x5C1720); }
-WRAPPER RwFreeList* RwFreeListCreate(RwInt32 entrySize, RwInt32 entriesPerBlock, RwInt32 alignment) { EAXJMP(0x5C1790); }
-WRAPPER RwInt32 RwFreeListPurge(RwFreeList* freelist) { EAXJMP(0x5C19F0); }
-WRAPPER RwInt32 RwFreeListPurgeAllFreeLists() { EAXJMP(0x5C1B90); }
-WRAPPER RwFreeList* RwFreeListForAllUsed(RwFreeList* freelist, RwFreeListCallBack fpCallBack, void* pData) { EAXJMP(0x5C1D40); }
-WRAPPER RwBool _rxPipelineClose() { EAXJMP(0x5C2780); }
-WRAPPER RwBool _rxPipelineOpen() { EAXJMP(0x5C27E0); }
-WRAPPER RxHeap* RxHeapGetGlobalHeap() { EAXJMP(0x5C2AD0); }
-WRAPPER RxPacket* RxPacketCreate(RxPipelineNode* node) { EAXJMP(0x5C2AE0); }
-WRAPPER RxCluster* RxClusterSetExternalData(RxCluster* cluster, void* data, RwInt32 stride, RwInt32 numElements) { EAXJMP(0x5C2B10); }
-WRAPPER RxCluster* RxClusterSetData(RxCluster* cluster, void* data, RwInt32 stride, RwInt32 numElements) { EAXJMP(0x5C2B70); }
-WRAPPER RxCluster* RxClusterInitializeData(RxCluster* cluster, RwUInt32 numElements, RwUInt16 stride) { EAXJMP(0x5C2BD0); }
-WRAPPER RxCluster* RxClusterResizeData(RxCluster* CurrentCluster, RwUInt32 NumElements) { EAXJMP(0x5C2C40); }
-WRAPPER RxCluster* RxClusterLockWrite(RxPacket* packet, RwUInt32 clusterIndex, RxPipelineNode* node) { EAXJMP(0x5C2C90); }
-WRAPPER RxPipeline* RxPipelineExecute(RxPipeline* pipeline, void* data, RwBool heapReset) { EAXJMP(0x5C2D60); }
-WRAPPER RxPipeline* RxPipelineCreate() { EAXJMP(0x5C2E00); }
-WRAPPER void _rxPipelineDestroy(RxPipeline* Pipeline) { EAXJMP(0x5C2E70); }
-WRAPPER RwBool RwResourcesFreeResEntry(RwResEntry* entry) { EAXJMP(0x5C3080); }
-WRAPPER void _rwResourcesPurge() { EAXJMP(0x5C30F0); }
-WRAPPER RwResEntry* RwResourcesAllocateResEntry(void* owner, RwResEntry** ownerRef, RwInt32 size, RwResEntryDestroyNotify destroyNotify) { EAXJMP(0x5C3170); }
-WRAPPER RwBool RwResourcesEmptyArena() { EAXJMP(0x5C3360); }
-WRAPPER RwBool _rwPluginRegistryOpen() { EAXJMP(0x5C3450); }
-WRAPPER RwBool _rwPluginRegistryClose() { EAXJMP(0x5C3480); }
-WRAPPER RwInt32 _rwPluginRegistryGetPluginOffset(RwPluginRegistry const* reg, RwUInt32 pluginID) { EAXJMP(0x5C3590); }
-WRAPPER RwInt32 _rwPluginRegistryAddPlugin(RwPluginRegistry* reg, RwInt32 size, RwUInt32 pluginID, RwPluginObjectConstructor ructCB, RwPluginObjectDestructor destructCB, RwPluginObjectCopy copyCB) { EAXJMP(0x5C35C0); }
-WRAPPER RwPluginRegistry const* _rwPluginRegistryInitObject(RwPluginRegistry const* reg, void* object) { EAXJMP(0x5C37F0); }
-WRAPPER RwPluginRegistry const* _rwPluginRegistryDeInitObject(RwPluginRegistry const* reg, void* object) { EAXJMP(0x5C3850); }
-WRAPPER RwPluginRegistry const* _rwPluginRegistryCopyObject(RwPluginRegistry const* reg, void* dstObject, void const* srcObject) { EAXJMP(0x5C3880); }
-WRAPPER RwError* RwErrorSet(RwError* code) { EAXJMP(0x5C3910); }
-WRAPPER RwInt32 _rwerror(RwInt32 code, ...) { EAXJMP(0x5C3970); }
-WRAPPER RwInt32 _rwPluginRegistryAddPluginStream(RwPluginRegistry* reg, RwUInt32 pluginID, RwPluginDataChunkReadCallBack readCB, RwPluginDataChunkWriteCallBack writeCB, RwPluginDataChunkGetSizeCallBack getSizeCB) { EAXJMP(0x5C3980); }
-WRAPPER RwInt32 _rwPluginRegistryAddPlgnStrmlwysCB(RwPluginRegistry* reg, RwUInt32 pluginID, RwPluginDataChunkAlwaysCallBack alwaysCB) { EAXJMP(0x5C39C0); }
-WRAPPER RwInt32 _rwPluginRegistryAddPlgnStrmRightsCB(RwPluginRegistry* reg, RwUInt32 pluginID, RwPluginDataChunkRightsCallBack rightsCB) { EAXJMP(0x5C39F0); }
-WRAPPER RwPluginRegistry const* _rwPluginRegistryReadDataChunks(RwPluginRegistry const* reg, RwStream* stream, void* object) { EAXJMP(0x5C3A20); }
-WRAPPER RwPluginRegistry const* _rwPluginRegistryInvokeRights(RwPluginRegistry const* reg, RwUInt32 id, void* obj, RwUInt32 extraData) { EAXJMP(0x5C3B50); }
-WRAPPER RwInt32 _rwPluginRegistryGetSize(RwPluginRegistry const* reg, void const* object) { EAXJMP(0x5C3BA0); }
-WRAPPER RwPluginRegistry const* _rwPluginRegistryWriteDataChunks(RwPluginRegistry const* reg, RwStream* stream, void const* object) { EAXJMP(0x5C3BE0); }
-WRAPPER RwPluginRegistry const* _rwPluginRegistrySkipDataChunks(RwPluginRegistry const* reg, RwStream* stream) { EAXJMP(0x5C3CB0); }
-WRAPPER RwCamera* RwCameraStreamRead(RwStream* stream) { EAXJMP(0x5C3D30); }
-WRAPPER RwBBox* RwBBoxCalculate(RwBBox* boundBox, RwV3d const* verts, RwInt32 numVerts) { EAXJMP(0x5C5570); }
-WRAPPER RwImage* RwImageResample(RwImage* dstImage, RwImage const* srcImage) { EAXJMP(0x5C72B0); }
-WRAPPER RwImage* RwImageCreateResample(RwImage const* srcImage, RwInt32 width, RwInt32 height) { EAXJMP(0x5C7B30); }
-WRAPPER RxRenderStateVector* RxRenderStateVectorSetDefaultRenderStateVector(RxRenderStateVector* rsvp) { EAXJMP(0x5D9240); }
-WRAPPER RxRenderStateVector* RxRenderStateVectorCreate(RwBool current) { EAXJMP(0x5D9340); }
-WRAPPER void RxRenderStateVectorDestroy(RxRenderStateVector* rsvp) { EAXJMP(0x5D9410); }
-WRAPPER RxRenderStateVector* RxRenderStateVectorLoadDriverState(RxRenderStateVector* rsvp) { EAXJMP(0x5D9460); }
-WRAPPER void _rxEmbeddedPacketBetweenPipelines(RxPipeline* fromPipeline, RxPipeline* toPipeline) { EAXJMP(0x5D95D0); }
-WRAPPER RxPipelineNode* _rxEmbeddedPacketBetweenNodes(RxPipeline* pipeline, RxPipelineNode* nodeFrom, RwUInt32 whichOutput) { EAXJMP(0x5D9740); }
-WRAPPER void _rxPacketDestroy(RxPacket* Packet) { EAXJMP(0x5D9810); }
-WRAPPER RpMaterialList* _rpMaterialListDeinitialize(RpMaterialList* matList) { EAXJMP(0x5C8B10); }
-WRAPPER RpMaterialList* _rpMaterialListInitialize(RpMaterialList* matList) { EAXJMP(0x5C8B70); }
-WRAPPER RpMaterial* _rpMaterialListGetMaterial(RpMaterialList const* matList, RwInt32 matIndex) { EAXJMP(0x5C8B80); }
-WRAPPER RwInt32 _rpMaterialListAppendMaterial(RpMaterialList* matList, RpMaterial* material) { EAXJMP(0x5C8B90); }
-WRAPPER RwInt32 _rpMaterialListFindMaterialIndex(RpMaterialList const* matList, RpMaterial const* material) { EAXJMP(0x5C8C50); }
-WRAPPER RpMaterialList* _rpMaterialListStreamRead(RwStream* stream, RpMaterialList* matList) { EAXJMP(0x5C8C80); }
-WRAPPER RpMeshHeader* _rpMeshHeaderCreate(RwUInt32 size) { EAXJMP(0x5C8FE0); }
-WRAPPER void* _rpMeshClose(void* instance, RwInt32 offset, RwInt32 size) { EAXJMP(0x5C8FF0); }
-WRAPPER void* _rpMeshOpen(void* instance, RwInt32 offset, RwInt32 size) { EAXJMP(0x5C9020); }
-WRAPPER RpBuildMesh* _rpBuildMeshCreate(RwUInt32 bufferSize) { EAXJMP(0x5C9140); }
-WRAPPER RwBool _rpBuildMeshDestroy(RpBuildMesh* mesh) { EAXJMP(0x5C9220); }
-WRAPPER RwBool _rpMeshDestroy(RpMeshHeader* mesh) { EAXJMP(0x5C9260); }
-WRAPPER RpBuildMesh* _rpBuildMeshAddTriangle(RpBuildMesh* mesh, RpMaterial* material, RwInt32 vert1, RwInt32 vert2, RwInt32 vert3) { EAXJMP(0x5C92A0); }
-WRAPPER RpMeshHeader* _rpMeshHeaderForAllMeshes(RpMeshHeader* meshHeader, RpMeshCallBack fpCallBack, void* pData) { EAXJMP(0x5C9380); }
-WRAPPER RwStream* _rpMeshWrite(RpMeshHeader const* meshHeader, void const* object, RwStream* stream, RpMaterialList const* matList) { EAXJMP(0x5C93C0); }
-WRAPPER RpMeshHeader* _rpMeshRead(RwStream* stream, void const* object, RpMaterialList const* matList) { EAXJMP(0x5C9510); }
-WRAPPER RwInt32 _rpMeshSize(RpMeshHeader const* meshHeader, void const* object) { EAXJMP(0x5C96E0); }
-WRAPPER RpMeshHeader* RpBuildMeshGenerateDefaultTriStrip(RpBuildMesh* buildmesh, void* data) { EAXJMP(0x5C9730); }
-WRAPPER RpMeshHeader* _rpTriListMeshGenerate(RpBuildMesh* buildMesh, void* data) { EAXJMP(0x5CAE10); }
-WRAPPER RpMeshHeader* _rpMeshOptimise(RpBuildMesh* buildmesh, RwUInt32 flags) { EAXJMP(0x5CB230); }
-WRAPPER RwInt32 RpWorldSectorRegisterPlugin(RwInt32 size, RwUInt32 pluginID, RwPluginObjectConstructor ructCB, RwPluginObjectDestructor destructCB, RwPluginObjectCopy copyCB) { EAXJMP(0x5CB2B0); }
-WRAPPER RwInt32 RpWorldSectorRegisterPluginStream(RwUInt32 pluginID, RwPluginDataChunkReadCallBack readCB, RwPluginDataChunkWriteCallBack writeCB, RwPluginDataChunkGetSizeCallBack getSizeCB) { EAXJMP(0x5CB2E0); }
-WRAPPER RxPipeline* RpWorldSetDefaultSectorPipeline(RxPipeline* pipeline) { EAXJMP(0x5CB630); }
-WRAPPER RxPipeline* RpAtomicSetDefaultPipeline(RxPipeline* pipeline) { EAXJMP(0x5CB670); }
-WRAPPER void RpHAnimStdKeyFrameToMatrix(RwMatrix* matrix, void* voidIFrame) { EAXJMP(0x5CDEE0); }
-WRAPPER void RpHAnimStdKeyFrameInterpolate(void* voidOut, void* voidIn1, void* voidIn2, RwReal time) { EAXJMP(0x5CE000); }
-WRAPPER void RpHAnimStdKeyFrameBlend(void* voidOut, void* voidIn1, void* voidIn2, RwReal alpha) { EAXJMP(0x5CE420); }
-WRAPPER RpHAnimAnimation* RpHAnimStdKeyFrameStreamRead(RwStream* stream, RpHAnimAnimation* animation) { EAXJMP(0x5CE820); }
-WRAPPER RwBool RpHAnimStdKeyFrameStreamWrite(RpHAnimAnimation* animation, RwStream* stream) { EAXJMP(0x5CE8C0); }
-WRAPPER RwInt32 RpHAnimStdKeyFrameStreamGetSize(RpHAnimAnimation* animation) { EAXJMP(0x5CE930); }
-WRAPPER void RpHAnimStdKeyFrameMulRecip(void* voidFrame, void* voidStart) { EAXJMP(0x5CE950); }
-WRAPPER void RpHAnimStdKeyFrameAdd(void* voidOut, void* voidIn1, void* voidIn2) { EAXJMP(0x5CEAB0); }
-WRAPPER void RxHeapFree(RxHeap* heap, void* block) { EAXJMP(0x5D1070); }
-WRAPPER void* RxHeapAlloc(RxHeap* heap, RwUInt32 size) { EAXJMP(0x5D1260); }
-WRAPPER void* RxHeapRealloc(RxHeap* heap, void* block, RwUInt32 newSize, RwBool allowCopy) { EAXJMP(0x5D14D0); }
-WRAPPER RwBool _rxHeapReset(RxHeap* heap) { EAXJMP(0x5D1680); }
-WRAPPER void RxHeapDestroy(RxHeap* heap) { EAXJMP(0x5D16F0); }
-WRAPPER RxHeap* RxHeapCreate(RwUInt32 size) { EAXJMP(0x5D1750); }
-WRAPPER RxNodeOutput RxPipelineNodeFindOutputByName(RxPipelineNode* node, RwChar const* outputname) { EAXJMP(0x5D1EC0); }
-WRAPPER RxNodeInput RxPipelineNodeFindInput(RxPipelineNode* node) { EAXJMP(0x5D1F20); }
-WRAPPER RxPipeline* RxPipelineNodeRequestCluster(RxPipeline* pipeline, RxPipelineNode* node, RxClusterDefinition* clusterDef) { EAXJMP(0x5D1F30); }
-WRAPPER RxPipeline* RxLockedPipeUnlock(RxLockedPipe* pipeline) { EAXJMP(0x5D1FA0); }
-WRAPPER RxLockedPipe* RxPipelineLock(RxPipeline* pipeline) { EAXJMP(0x5D29F0); }
-WRAPPER RxPipelineNode* RxPipelineFindNodeByName(RxPipeline* pipeline, RwChar const* name, RxPipelineNode* start, RwInt32* nodeIndex) { EAXJMP(0x5D2B10); }
-WRAPPER RxLockedPipe* RxLockedPipeAddFragment(RxLockedPipe *pipeline, RwUInt32 *firstIndex, RxNodeDefinition *nodeDef0, ...) { EAXJMP(0x5D2BA0); }
-WRAPPER RxPipeline* RxLockedPipeAddPath(RxLockedPipe* pipeline, RxNodeOutput out, RxNodeInput in) { EAXJMP(0x5D2EE0); }
-WRAPPER RxNodeDefinition* RxNodeDefinitionGetImmRenderSetup() { EAXJMP(0x5D31C0); }
-WRAPPER RxNodeDefinition* RxNodeDefinitionGetImmMangleTriangleIndices() { EAXJMP(0x5D35C0); }
-WRAPPER RxNodeDefinition* RxNodeDefinitionGetCullTriangle() { EAXJMP(0x5D3C60); }
-WRAPPER RxNodeDefinition* RxNodeDefinitionGetClipTriangle() { EAXJMP(0x5D4F80); }
-WRAPPER RxNodeDefinition* RxNodeDefinitionGetSubmitTriangle() { EAXJMP(0x5D51C0); }
-WRAPPER RxNodeDefinition* RxNodeDefinitionGetImmInstance() { EAXJMP(0x5D5400); }
-WRAPPER RxNodeDefinition* RxNodeDefinitionGetTransform() { EAXJMP(0x5D6000); }
-WRAPPER RxNodeDefinition* RxNodeDefinitionGetImmStash() { EAXJMP(0x5D61C0); }
-WRAPPER RxNodeDefinition* RxNodeDefinitionGetImmMangleLineIndices() { EAXJMP(0x5D6470); }
-WRAPPER RxNodeDefinition* RxNodeDefinitionGetClipLine() { EAXJMP(0x5D7230); }
-WRAPPER RxNodeDefinition* RxNodeDefinitionGetSubmitLine() { EAXJMP(0x5D74C0); }
-WRAPPER RwBool _rwD3D8LightsOpen() { EAXJMP(0x5D9C90); }
-WRAPPER void _rwD3D8LightsClose() { EAXJMP(0x5D9EF0); }
-WRAPPER RwBool _rwD3D8LightsGlobalEnable(RpLightFlag flags) { EAXJMP(0x5D9F80); }
-WRAPPER RwBool _rwD3D8LightLocalEnable(RpLight* light) { EAXJMP(0x5DA210); }
-WRAPPER void _rwD3D8LightsEnable(RwBool enable, RwUInt32 type) { EAXJMP(0x5DA450); }
-WRAPPER RxNodeDefinition* RxNodeDefinitionGetD3D8WorldSectorAllInOne() { EAXJMP(0x5DAAC0); }
-WRAPPER RxNodeDefinition* RxNodeDefinitionGetD3D8AtomicAllInOne() { EAXJMP(0x5DC500); }
-WRAPPER RxNodeDefinition* RxNodeDefinitionGetWorldSectorInstance() { EAXJMP(0x5DCC50); }
-WRAPPER RxNodeDefinition* RxNodeDefinitionGetWorldSectorEnumerateLights() { EAXJMP(0x5DCD80); }
-WRAPPER RxNodeDefinition* RxNodeDefinitionGetAtomicInstance() { EAXJMP(0x5DD800); }
-WRAPPER RxNodeDefinition* RxNodeDefinitionGetAtomicEnumerateLights() { EAXJMP(0x5DD9B0); }
-WRAPPER RxNodeDefinition* RxNodeDefinitionGetMaterialScatter() { EAXJMP(0x5DDAA0); }
-WRAPPER RxNodeDefinition* RxNodeDefinitionGetLight() { EAXJMP(0x5DF040); }
-WRAPPER RxNodeDefinition* RxNodeDefinitionGetPostLight() { EAXJMP(0x5DF560); }
-WRAPPER void RxD3D8AllInOneSetRenderCallBack(RxPipelineNode* node, RxD3D8AllInOneRenderCallBack callback) { EAXJMP(0x5DFC60); } \ No newline at end of file