mirror of
https://github.com/CookiePLMonster/SilentPatch.git
synced 2024-12-29 15:23:02 +05:00
Added some reversed RW funcs from VCSPC so there's a bit messing around with adding 1.01/Steam compat
This commit is contained in:
parent
e44a901a27
commit
a99b6cab4e
3 changed files with 84 additions and 17 deletions
|
@ -9,14 +9,6 @@
|
||||||
#include "PNGFile.h"
|
#include "PNGFile.h"
|
||||||
|
|
||||||
// RW wrappers
|
// RW wrappers
|
||||||
static void* varRwFrameForAllChildren = AddressByVersion<void*>(0x7F0DC0, 0, 0);
|
|
||||||
WRAPPER RwFrame* RwFrameForAllChildren(RwFrame* frame, RwFrameCallBack callBack, void* data) { WRAPARG(frame); WRAPARG(callBack); WRAPARG(data); VARJMP(varRwFrameForAllChildren); }
|
|
||||||
static void* varRwFrameForAllObjects = AddressByVersion<void*>(0x7F1200, 0, 0);
|
|
||||||
WRAPPER RwFrame* RwFrameForAllObjects(RwFrame* frame, RwObjectCallBack callBack, void* data) { WRAPARG(frame); WRAPARG(callBack); WRAPARG(data); VARJMP(varRwFrameForAllObjects); }
|
|
||||||
static void* varRpClumpForAllAtomics = AddressByVersion<void*>(0x749B70, 0, 0);
|
|
||||||
WRAPPER RpClump* RpClumpForAllAtomics(RpClump* clump, RpAtomicCallBack callback, void* pData) { WRAPARG(clump); WRAPARG(callback); WRAPARG(pData); VARJMP(varRpClumpForAllAtomics); }
|
|
||||||
static void* varRpGeometryForAllMaterials = AddressByVersion<void*>(0x74C790, 0, 0);
|
|
||||||
WRAPPER RpGeometry* RpGeometryForAllMaterials(RpGeometry* geometry, RpMaterialCallBack fpCallBack, void* pData) { WRAPARG(geometry); WRAPARG(fpCallBack); WRAPARG(pData); VARJMP(varRpGeometryForAllMaterials); }
|
|
||||||
static void* varAtomicDefaultRenderCallBack = AddressByVersion<void*>(0x7491C0, 0, 0);
|
static void* varAtomicDefaultRenderCallBack = AddressByVersion<void*>(0x7491C0, 0, 0);
|
||||||
WRAPPER RpAtomic* AtomicDefaultRenderCallBack(RpAtomic* atomic) { WRAPARG(atomic); VARJMP(varAtomicDefaultRenderCallBack); }
|
WRAPPER RpAtomic* AtomicDefaultRenderCallBack(RpAtomic* atomic) { WRAPARG(atomic); VARJMP(varAtomicDefaultRenderCallBack); }
|
||||||
static void* varRtPNGImageRead = AddressByVersion<void*>(0x7CF9B0, 0, 0);
|
static void* varRtPNGImageRead = AddressByVersion<void*>(0x7CF9B0, 0, 0);
|
||||||
|
@ -25,14 +17,12 @@ static void* varRwTextureCreate = AddressByVersion<void*>(0x7F37C0, 0, 0);
|
||||||
WRAPPER RwTexture* RwTextureCreate(RwRaster* raster) { WRAPARG(raster); VARJMP(varRwTextureCreate); }
|
WRAPPER RwTexture* RwTextureCreate(RwRaster* raster) { WRAPARG(raster); VARJMP(varRwTextureCreate); }
|
||||||
static void* varRwRasterCreate = AddressByVersion<void*>(0x7FB230, 0, 0);
|
static void* varRwRasterCreate = AddressByVersion<void*>(0x7FB230, 0, 0);
|
||||||
WRAPPER RwRaster* RwRasterCreate(RwInt32 width, RwInt32 height, RwInt32 depth, RwInt32 flags) { WRAPARG(width); WRAPARG(height); WRAPARG(depth); WRAPARG(flags); VARJMP(varRwRasterCreate); }
|
WRAPPER RwRaster* RwRasterCreate(RwInt32 width, RwInt32 height, RwInt32 depth, RwInt32 flags) { WRAPARG(width); WRAPARG(height); WRAPARG(depth); WRAPARG(flags); VARJMP(varRwRasterCreate); }
|
||||||
static void* varRwRasterSetFromImage = AddressByVersion<void*>(0x804290, 0, 0);
|
|
||||||
WRAPPER RwRaster* RwRasterSetFromImage(RwRaster* raster, RwImage* image) { WRAPARG(raster); WRAPARG(image); VARJMP(varRwRasterSetFromImage); }
|
|
||||||
static void* varRwImageDestroy = AddressByVersion<void*>(0x802740, 0, 0);
|
static void* varRwImageDestroy = AddressByVersion<void*>(0x802740, 0, 0);
|
||||||
WRAPPER RwBool RwImageDestroy(RwImage* image) { WRAPARG(image); VARJMP(varRwImageDestroy); }
|
WRAPPER RwBool RwImageDestroy(RwImage* image) { WRAPARG(image); VARJMP(varRwImageDestroy); }
|
||||||
static void* varRwImageFindRasterFormat = AddressByVersion<void*>(0x8042C0, 0, 0);
|
|
||||||
WRAPPER RwImage* RwImageFindRasterFormat(RwImage* ipImage, RwInt32 nRasterType, RwInt32* npWidth, RwInt32* npHeight, RwInt32* npDepth, RwInt32* npFormat) { WRAPARG(ipImage); WRAPARG(nRasterType); WRAPARG(npWidth); WRAPARG(npHeight); WRAPARG(npDepth); WRAPARG(npFormat); VARJMP(varRwImageFindRasterFormat); }
|
|
||||||
static void* varRpMaterialSetTexture = AddressByVersion<void*>(0x74DBC0, 0, 0);
|
static void* varRpMaterialSetTexture = AddressByVersion<void*>(0x74DBC0, 0, 0);
|
||||||
WRAPPER RpMaterial *RpMaterialSetTexture(RpMaterial *material, RwTexture *texture) { VARJMP(varRpMaterialSetTexture); }
|
WRAPPER RpMaterial *RpMaterialSetTexture(RpMaterial *material, RwTexture *texture) { VARJMP(varRpMaterialSetTexture); }
|
||||||
|
static void* varRwFrameGetLTM = AddressByVersion<void*>(0x7F0990, 0, 0);
|
||||||
|
WRAPPER RwMatrix* RwFrameGetLTM(RwFrame* frame) { VARJMP(varRwFrameGetLTM); }
|
||||||
static void* varRwD3D9SetRenderState = AddressByVersion<void*>(0x7FC2D0, 0, 0);
|
static void* varRwD3D9SetRenderState = AddressByVersion<void*>(0x7FC2D0, 0, 0);
|
||||||
WRAPPER void RwD3D9SetRenderState(RwUInt32 state, RwUInt32 value) { WRAPARG(state); WRAPARG(value); VARJMP(varRwD3D9SetRenderState); }
|
WRAPPER void RwD3D9SetRenderState(RwUInt32 state, RwUInt32 value) { WRAPARG(state); WRAPARG(value); VARJMP(varRwD3D9SetRenderState); }
|
||||||
static void* var_rwD3D9SetVertexShader = AddressByVersion<void*>(0x7F9FB0, 0, 0);
|
static void* var_rwD3D9SetVertexShader = AddressByVersion<void*>(0x7F9FB0, 0, 0);
|
||||||
|
@ -45,8 +35,6 @@ static void* var_rwD3D9VSGetComposedTransformMatrix = AddressByVersion<void*>(0x
|
||||||
WRAPPER void _rwD3D9VSGetComposedTransformMatrix(void *transformMatrix) { VARJMP(var_rwD3D9VSGetComposedTransformMatrix); }
|
WRAPPER void _rwD3D9VSGetComposedTransformMatrix(void *transformMatrix) { VARJMP(var_rwD3D9VSGetComposedTransformMatrix); }
|
||||||
static void* var_rwD3D9VSSetActiveWorldMatrix = AddressByVersion<void*>(0x764650, 0, 0);
|
static void* var_rwD3D9VSSetActiveWorldMatrix = AddressByVersion<void*>(0x764650, 0, 0);
|
||||||
WRAPPER void _rwD3D9VSSetActiveWorldMatrix(const RwMatrix *worldMatrix) { VARJMP(var_rwD3D9VSSetActiveWorldMatrix); }
|
WRAPPER void _rwD3D9VSSetActiveWorldMatrix(const RwMatrix *worldMatrix) { VARJMP(var_rwD3D9VSSetActiveWorldMatrix); }
|
||||||
static void* varRwFrameGetLTM = AddressByVersion<void*>(0x7F0990, 0, 0);
|
|
||||||
WRAPPER RwMatrix* RwFrameGetLTM(RwFrame* frame) { VARJMP(varRwFrameGetLTM); }
|
|
||||||
static void* var_rwD3D9SetVertexShaderConstant = AddressByVersion<void*>(0x7FACA0, 0, 0);
|
static void* var_rwD3D9SetVertexShaderConstant = AddressByVersion<void*>(0x7FACA0, 0, 0);
|
||||||
WRAPPER void _rwD3D9SetVertexShaderConstant(RwUInt32 registerAddress,
|
WRAPPER void _rwD3D9SetVertexShaderConstant(RwUInt32 registerAddress,
|
||||||
const void *constantData,
|
const void *constantData,
|
||||||
|
@ -57,12 +45,79 @@ WRAPPER RwBool _rpD3D9VertexDeclarationInstColor(RwUInt8 *mem,
|
||||||
RwInt32 numVerts,
|
RwInt32 numVerts,
|
||||||
RwUInt32 stride) { VARJMP(var_rpD3D9VertexDeclarationInstColor); }
|
RwUInt32 stride) { VARJMP(var_rpD3D9VertexDeclarationInstColor); }
|
||||||
|
|
||||||
|
|
||||||
|
RwFrame* RwFrameForAllChildren(RwFrame* frame, RwFrameCallBack callBack, void* data)
|
||||||
|
{
|
||||||
|
for ( RwFrame* curFrame = frame->child; curFrame; curFrame = curFrame->next )
|
||||||
|
{
|
||||||
|
if ( !callBack(curFrame, data) )
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return frame;
|
||||||
|
}
|
||||||
|
|
||||||
|
RwFrame* RwFrameForAllObjects(RwFrame* frame, RwObjectCallBack callBack, void* data)
|
||||||
|
{
|
||||||
|
for ( RwLLLink* link = rwLinkListGetFirstLLLink(&frame->objectList); link != rwLinkListGetTerminator(&frame->objectList); link = rwLLLinkGetNext(link) )
|
||||||
|
{
|
||||||
|
if ( !callBack(&rwLLLinkGetData(link, RwObjectHasFrame, lFrame)->object, data) )
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return frame;
|
||||||
|
}
|
||||||
|
|
||||||
RwMatrix* RwMatrixUpdate(RwMatrix* matrix)
|
RwMatrix* RwMatrixUpdate(RwMatrix* matrix)
|
||||||
{
|
{
|
||||||
matrix->flags &= ~(rwMATRIXTYPEMASK|rwMATRIXINTERNALIDENTITY);
|
matrix->flags &= ~(rwMATRIXTYPEMASK|rwMATRIXINTERNALIDENTITY);
|
||||||
return matrix;
|
return matrix;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RwRaster* RwRasterSetFromImage(RwRaster* raster, RwImage* image)
|
||||||
|
{
|
||||||
|
if ( RWSRCGLOBAL(stdFunc[rwSTANDARDRASTERSETIMAGE])(raster, image, 0) != FALSE )
|
||||||
|
{
|
||||||
|
if ( image->flags & rwIMAGEGAMMACORRECTED )
|
||||||
|
raster->privateFlags |= rwRASTERGAMMACORRECTED;
|
||||||
|
return raster;
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
RwImage* RwImageFindRasterFormat(RwImage* ipImage, RwInt32 nRasterType, RwInt32* npWidth, RwInt32* npHeight, RwInt32* npDepth, RwInt32* npFormat)
|
||||||
|
{
|
||||||
|
RwRaster outRaster;
|
||||||
|
if ( RWSRCGLOBAL(stdFunc[rwSTANDARDIMAGEFINDRASTERFORMAT])(&outRaster, ipImage, nRasterType) != FALSE )
|
||||||
|
{
|
||||||
|
*npFormat = RwRasterGetFormat(&outRaster) | outRaster.cType;
|
||||||
|
*npWidth = RwRasterGetWidth(&outRaster);
|
||||||
|
*npHeight = RwRasterGetHeight(&outRaster);
|
||||||
|
*npDepth = RwRasterGetDepth(&outRaster);
|
||||||
|
return ipImage;
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
RpClump* RpClumpForAllAtomics(RpClump* clump, RpAtomicCallBack callback, void* pData)
|
||||||
|
{
|
||||||
|
for ( RwLLLink* link = rwLinkListGetFirstLLLink(&clump->atomicList); link != rwLinkListGetTerminator(&clump->atomicList); link = rwLLLinkGetNext(link) )
|
||||||
|
{
|
||||||
|
if ( !callback(rwLLLinkGetData(link, RpAtomic, inClumpLink), pData) )
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return clump;
|
||||||
|
}
|
||||||
|
|
||||||
|
RpGeometry* RpGeometryForAllMaterials(RpGeometry* geometry, RpMaterialCallBack fpCallBack, void* pData)
|
||||||
|
{
|
||||||
|
for ( RwInt32 i = 0, j = geometry->matList.numMaterials; i < j; i++ )
|
||||||
|
{
|
||||||
|
if ( !fpCallBack(geometry->matList.materials[i], pData) )
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return geometry;
|
||||||
|
}
|
||||||
|
|
||||||
// Other wrappers
|
// Other wrappers
|
||||||
void (*GTAdelete)(void*) = AddressByVersion<void(*)(void*)>(0x82413F, 0, 0);
|
void (*GTAdelete)(void*) = AddressByVersion<void(*)(void*)>(0x82413F, 0, 0);
|
||||||
const char* (*GetFrameNodeName)(RwFrame*) = AddressByVersion<const char*(*)(RwFrame*)>(0x72FB30, 0, 0);
|
const char* (*GetFrameNodeName)(RwFrame*) = AddressByVersion<const char*(*)(RwFrame*)>(0x72FB30, 0, 0);
|
||||||
|
|
|
@ -3,8 +3,6 @@
|
||||||
#include "VehicleSA.h"
|
#include "VehicleSA.h"
|
||||||
#include "TimerSA.h"
|
#include "TimerSA.h"
|
||||||
|
|
||||||
void (*CVehicle::SetComponentAtomicAlpha)(RpAtomic* pAtomic, int nAlpha) = AddressByVersion<void(*)(RpAtomic*,int)>(0x6D2960, 0, 0);
|
|
||||||
|
|
||||||
static void* varVehicleRender = AddressByVersion<void*>(0x6D0E60, 0, 0);
|
static void* varVehicleRender = AddressByVersion<void*>(0x6D0E60, 0, 0);
|
||||||
WRAPPER void CVehicle::Render() { VARJMP(varVehicleRender); }
|
WRAPPER void CVehicle::Render() { VARJMP(varVehicleRender); }
|
||||||
static void* varIsLawEnforcementVehicle = AddressByVersion<void*>(0x6D2370, 0, 0);
|
static void* varIsLawEnforcementVehicle = AddressByVersion<void*>(0x6D2370, 0, 0);
|
||||||
|
@ -35,6 +33,20 @@ static RwFrame* GetFrameFromNameCB(RwFrame* pFrame, void* pData)
|
||||||
return !pFindData->second ? pFrame : nullptr;
|
return !pFindData->second ? pFrame : nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static RpMaterial* SetCompAlphaCB(RpMaterial* pMaterial, void* data)
|
||||||
|
{
|
||||||
|
pMaterial->color.alpha = reinterpret_cast<RwUInt8>(data);
|
||||||
|
return pMaterial;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CVehicle::SetComponentAtomicAlpha(RpAtomic* pAtomic, int nAlpha)
|
||||||
|
{
|
||||||
|
RpGeometry* pGeometry = RpAtomicGetGeometry(pAtomic);
|
||||||
|
pGeometry->flags |= rpGEOMETRYMODULATEMATERIALCOLOR;
|
||||||
|
|
||||||
|
RpGeometryForAllMaterials(pGeometry, SetCompAlphaCB, reinterpret_cast<void*>(nAlpha));
|
||||||
|
}
|
||||||
|
|
||||||
bool CVehicle::CustomCarPlate_TextureCreate(CVehicleModelInfo* pModelInfo)
|
bool CVehicle::CustomCarPlate_TextureCreate(CVehicleModelInfo* pModelInfo)
|
||||||
{
|
{
|
||||||
char PlateText[8];
|
char PlateText[8];
|
||||||
|
|
|
@ -125,7 +125,7 @@ public:
|
||||||
|
|
||||||
bool IsLawEnforcementVehicle();
|
bool IsLawEnforcementVehicle();
|
||||||
|
|
||||||
static void (*SetComponentAtomicAlpha)(RpAtomic* pAtomic, int nAlpha);
|
static void SetComponentAtomicAlpha(RpAtomic* pAtomic, int nAlpha);
|
||||||
};
|
};
|
||||||
|
|
||||||
class NOVMT CAutomobile : public CVehicle
|
class NOVMT CAutomobile : public CVehicle
|
||||||
|
|
Loading…
Reference in a new issue