mirror of
				https://github.com/aap/librw.git
				synced 2025-11-03 16:39:37 +00:00 
			
		
		
		
	more leeds stuff
This commit is contained in:
		
							parent
							
								
									b4427ee1ac
								
							
						
					
					
						commit
						39ff5b6288
					
				@ -28,6 +28,7 @@ struct RslHAnimNode;
 | 
				
			|||||||
struct RslPS2ResEntryHeader;
 | 
					struct RslPS2ResEntryHeader;
 | 
				
			||||||
struct RslPS2InstanceData;
 | 
					struct RslPS2InstanceData;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef RslFrame *(*RslFrameCallBack)(RslFrame *frame, void *data);
 | 
				
			||||||
typedef RslClump *(*RslClumpCallBack)(RslClump *clump, void *data);
 | 
					typedef RslClump *(*RslClumpCallBack)(RslClump *clump, void *data);
 | 
				
			||||||
typedef RslAtomic *(*RslAtomicCallBack)(RslAtomic *atomic, void *data);
 | 
					typedef RslAtomic *(*RslAtomicCallBack)(RslAtomic *atomic, void *data);
 | 
				
			||||||
typedef RslMaterial *(*RslMaterialCallBack)(RslMaterial *material, void *data);
 | 
					typedef RslMaterial *(*RslMaterialCallBack)(RslMaterial *material, void *data);
 | 
				
			||||||
@ -71,6 +72,8 @@ struct RslObjectHasFrame {
 | 
				
			|||||||
	void      (*sync)();
 | 
						void      (*sync)();
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define rslObjectGetParent(object)           (((const RslObject *)(object))->parent)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// from Serge
 | 
					// from Serge
 | 
				
			||||||
//void TEX::getInfo(TEXInfo a)
 | 
					//void TEX::getInfo(TEXInfo a)
 | 
				
			||||||
//{
 | 
					//{
 | 
				
			||||||
@ -81,12 +84,23 @@ struct RslObjectHasFrame {
 | 
				
			|||||||
// mipmaps = (a.flags & 0xFF0000) >> 20;
 | 
					// mipmaps = (a.flags & 0xFF0000) >> 20;
 | 
				
			||||||
//}
 | 
					//}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct RslRaster {
 | 
					struct RslRasterPS2 {
 | 
				
			||||||
	uint8 *data;
 | 
						uint8 *data;
 | 
				
			||||||
	// XXXXSSSSMMMMMMMMBBBBHHHHHHHHWWWW
 | 
						// XXXXSSSSMMMMMMMMBBBBHHHHHHHHWWWW
 | 
				
			||||||
	uint32 flags;
 | 
						uint32 flags;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct RslRasterPSP {
 | 
				
			||||||
 | 
						uint32 unk1;
 | 
				
			||||||
 | 
						uint8 *data;
 | 
				
			||||||
 | 
						uint32 flags1, flags2;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					union RslRaster {
 | 
				
			||||||
 | 
						RslRasterPS2 ps2;
 | 
				
			||||||
 | 
						RslRasterPSP psp;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct RslTexDictionary {
 | 
					struct RslTexDictionary {
 | 
				
			||||||
	RslObject   object;
 | 
						RslObject   object;
 | 
				
			||||||
	RslLinkList texturesInDict;
 | 
						RslLinkList texturesInDict;
 | 
				
			||||||
@ -101,25 +115,6 @@ struct RslTexture {
 | 
				
			|||||||
	char              mask[32];
 | 
						char              mask[32];
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct RslClump {
 | 
					 | 
				
			||||||
	RslObject   object;
 | 
					 | 
				
			||||||
	RslLinkList atomicList;
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
struct RslAtomic {
 | 
					 | 
				
			||||||
	RslObjectHasFrame  object;
 | 
					 | 
				
			||||||
	RslGeometry       *geometry;
 | 
					 | 
				
			||||||
	RslClump          *clump;
 | 
					 | 
				
			||||||
	RslLLLink          inClumpLink;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// what's this?
 | 
					 | 
				
			||||||
	uint32             unk1;
 | 
					 | 
				
			||||||
	uint16             unk2;
 | 
					 | 
				
			||||||
	uint16             unk3;
 | 
					 | 
				
			||||||
	RslHAnimHierarchy *hier;
 | 
					 | 
				
			||||||
	int32              pad;	// 0xAAAAAAAA
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
struct RslFrame {
 | 
					struct RslFrame {
 | 
				
			||||||
	RslObject          object;
 | 
						RslObject          object;
 | 
				
			||||||
	RslLLLink          inDirtyListLink; // ?
 | 
						RslLLLink          inDirtyListLink; // ?
 | 
				
			||||||
@ -133,12 +128,38 @@ struct RslFrame {
 | 
				
			|||||||
	// RwHAnimFrameExtension
 | 
						// RwHAnimFrameExtension
 | 
				
			||||||
	int32              nodeId;
 | 
						int32              nodeId;
 | 
				
			||||||
	RslHAnimHierarchy *hier;
 | 
						RslHAnimHierarchy *hier;
 | 
				
			||||||
 | 
					 | 
				
			||||||
	// R* Node name
 | 
						// R* Node name
 | 
				
			||||||
	char              *name;
 | 
						char              *name;
 | 
				
			||||||
	uint32             unk3;       // ?pad?
 | 
						// R* Visibility
 | 
				
			||||||
 | 
						int32              hierId;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct RslClump {
 | 
				
			||||||
 | 
						RslObject   object;
 | 
				
			||||||
 | 
						RslLinkList atomicList;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define RslClumpGetFrame(_clump)                                    \
 | 
				
			||||||
 | 
					    ((RslFrame *) rslObjectGetParent(_clump))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct RslAtomic {
 | 
				
			||||||
 | 
						RslObjectHasFrame  object;
 | 
				
			||||||
 | 
						RslGeometry       *geometry;
 | 
				
			||||||
 | 
						RslClump          *clump;
 | 
				
			||||||
 | 
						RslLLLink          inClumpLink;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// what's this? rpWorldObj?
 | 
				
			||||||
 | 
						uint32             unk1;
 | 
				
			||||||
 | 
						uint16             unk2;
 | 
				
			||||||
 | 
						uint16             unk3;
 | 
				
			||||||
 | 
						// RpSkin
 | 
				
			||||||
 | 
						RslHAnimHierarchy *hier;
 | 
				
			||||||
 | 
						// what about visibility? matfx?
 | 
				
			||||||
 | 
						int32              pad;	// 0xAAAAAAAA
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define RslAtomicGetFrame(_atomic)                                  \
 | 
				
			||||||
 | 
					    ((RslFrame *) rslObjectGetParent(_atomic))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct RslMaterialList {
 | 
					struct RslMaterialList {
 | 
				
			||||||
	RslMaterial **materials;
 | 
						RslMaterial **materials;
 | 
				
			||||||
 | 
				
			|||||||
@ -26,6 +26,17 @@ RslStream::relocate(void)
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					RslFrame*
 | 
				
			||||||
 | 
					RslFrameForAllChildren(RslFrame *frame, RslFrameCallBack callBack, void *data)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						for(RslFrame *child = frame->child;
 | 
				
			||||||
 | 
						    child;
 | 
				
			||||||
 | 
						    child = child->next)
 | 
				
			||||||
 | 
							if(callBack(child, data) == NULL)
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
						return frame;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
RslClump*
 | 
					RslClump*
 | 
				
			||||||
RslClumpForAllAtomics(RslClump *clump, RslAtomicCallBack callback, void *pData)
 | 
					RslClumpForAllAtomics(RslClump *clump, RslAtomicCallBack callback, void *pData)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -51,6 +62,12 @@ RslGeometryForAllMaterials(RslGeometry *geometry, RslMaterialCallBack fpCallBack
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					RslFrame *dumpFrameCB(RslFrame *frame, void *data)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						printf(" frm: %x %s %x\n", frame->nodeId, frame->name, frame->unk3);
 | 
				
			||||||
 | 
						RslFrameForAllChildren(frame, dumpFrameCB, data);
 | 
				
			||||||
 | 
						return frame;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
RslMaterial *dumpMaterialCB(RslMaterial *material, void*)
 | 
					RslMaterial *dumpMaterialCB(RslMaterial *material, void*)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -102,9 +119,11 @@ main(int argc, char *argv[])
 | 
				
			|||||||
		RslAtomic *a = (RslAtomic*)p;
 | 
							RslAtomic *a = (RslAtomic*)p;
 | 
				
			||||||
		clump = a->clump;
 | 
							clump = a->clump;
 | 
				
			||||||
		if(clump)
 | 
							if(clump)
 | 
				
			||||||
			RslClumpForAllAtomics(clump, dumpAtomicCB, NULL);
 | 
								//RslClumpForAllAtomics(clump, dumpAtomicCB, NULL);
 | 
				
			||||||
 | 
								RslFrameForAllChildren(RslClumpGetFrame(clump), dumpFrameCB, NULL);
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
			dumpAtomicCB(a, NULL);
 | 
								//dumpAtomicCB(a, NULL);
 | 
				
			||||||
 | 
								RslFrameForAllChildren(RslAtomicGetFrame(a), dumpFrameCB, NULL);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user