2015-01-25 22:27:03 +01:00
|
|
|
namespace rw {
|
|
|
|
namespace ps2 {
|
2014-12-20 15:05:34 +01:00
|
|
|
|
2014-12-30 17:39:39 +01:00
|
|
|
struct InstanceData
|
2014-12-20 15:05:34 +01:00
|
|
|
{
|
2014-12-30 19:30:13 +01:00
|
|
|
// 0 - addresses in ref tags need fixing
|
|
|
|
// 1 - no ref tags, so no fixing
|
|
|
|
// set by the program:
|
|
|
|
// 2 - ref tags are fixed, need to unfix before stream write
|
|
|
|
uint32 arePointersFixed;
|
2014-12-20 15:05:34 +01:00
|
|
|
uint32 dataSize;
|
|
|
|
uint8 *data;
|
|
|
|
Material *material;
|
2014-12-20 18:13:45 +01:00
|
|
|
};
|
2014-12-20 15:05:34 +01:00
|
|
|
|
2015-01-25 22:27:03 +01:00
|
|
|
struct InstanceDataHeader : rw::InstanceDataHeader
|
2014-12-20 15:05:34 +01:00
|
|
|
{
|
|
|
|
uint32 numMeshes;
|
2014-12-30 17:39:39 +01:00
|
|
|
InstanceData *instanceMeshes;
|
2014-12-20 15:05:34 +01:00
|
|
|
};
|
|
|
|
|
2015-07-11 23:48:11 +02:00
|
|
|
enum {
|
|
|
|
VU_Lights = 0x3d0
|
|
|
|
};
|
|
|
|
|
2015-01-25 22:27:03 +01:00
|
|
|
void *destroyNativeData(void *object, int32, int32);
|
|
|
|
void readNativeData(Stream *stream, int32 len, void *object, int32, int32);
|
|
|
|
void writeNativeData(Stream *stream, int32 len, void *object, int32, int32);
|
|
|
|
int32 getSizeNativeData(void *object, int32, int32);
|
|
|
|
void registerNativeDataPlugin(void);
|
2015-01-06 23:17:05 +01:00
|
|
|
|
2015-07-12 22:57:05 +02:00
|
|
|
void printDMA(InstanceData *inst);
|
2015-01-06 23:17:05 +01:00
|
|
|
void walkDMA(InstanceData *inst, void (*f)(uint32 *data, int32 size));
|
|
|
|
void sizedebug(InstanceData *inst);
|
2014-12-20 18:13:45 +01:00
|
|
|
|
2014-12-30 19:30:13 +01:00
|
|
|
// only RW_PS2
|
|
|
|
void fixDmaOffsets(InstanceData *inst);
|
|
|
|
void unfixDmaOffsets(InstanceData *inst);
|
2015-07-11 23:48:11 +02:00
|
|
|
//
|
|
|
|
|
|
|
|
struct Pipeline : rw::Pipeline
|
|
|
|
{
|
|
|
|
uint32 vifOffset;
|
|
|
|
uint32 inputStride;
|
|
|
|
uint32 triStripCount, triListCount;
|
|
|
|
|
|
|
|
static uint32 getVertCount(uint32 top, uint32 inAttribs,
|
|
|
|
uint32 outAttribs, uint32 outBufs) {
|
|
|
|
return (top-outBufs)/(inAttribs*2+outAttribs*outBufs);
|
|
|
|
}
|
|
|
|
|
|
|
|
Pipeline(uint32 platform);
|
2015-07-12 22:57:05 +02:00
|
|
|
virtual void instance(Atomic *atomic);
|
|
|
|
virtual void uninstance(Atomic *atomic);
|
|
|
|
// virtual void render(Atomic *atomic);
|
2015-07-11 23:48:11 +02:00
|
|
|
void setTriBufferSizes(uint32 inputStride,
|
|
|
|
uint32 stripCount, uint32 listCount);
|
|
|
|
};
|
|
|
|
|
|
|
|
Pipeline *makeDefaultPipeline(void);
|
|
|
|
Pipeline *makeSkinPipeline(void);
|
2015-07-12 22:57:05 +02:00
|
|
|
Pipeline *makeMatFXPipeline(void);
|
2015-07-11 23:48:11 +02:00
|
|
|
void dumpPipeline(rw::Pipeline *pipe);
|
2014-12-30 19:30:13 +01:00
|
|
|
|
2015-01-07 23:06:44 +01:00
|
|
|
// Skin plugin
|
|
|
|
|
2015-01-25 22:27:03 +01:00
|
|
|
void readNativeSkin(Stream *stream, int32, void *object, int32 offset);
|
|
|
|
void writeNativeSkin(Stream *stream, int32 len, void *object, int32 offset);
|
|
|
|
int32 getSizeNativeSkin(void *object, int32 offset);
|
2015-01-07 23:06:44 +01:00
|
|
|
|
2015-01-06 23:17:05 +01:00
|
|
|
// ADC plugin
|
|
|
|
|
|
|
|
// The plugin is a little crippled due to lack of documentation
|
|
|
|
|
|
|
|
struct ADCData
|
|
|
|
{
|
|
|
|
// only information we can get from GTA DFFs :/
|
|
|
|
uint32 adcFormatted;
|
|
|
|
};
|
|
|
|
|
2015-01-25 22:27:03 +01:00
|
|
|
void registerADCPlugin(void);
|
2015-01-06 23:17:05 +01:00
|
|
|
|
2014-12-20 15:05:34 +01:00
|
|
|
}
|
2014-12-30 17:39:39 +01:00
|
|
|
}
|