public void writeRawfile(Rawfile raw) { int index = raw.index; uint write_addr = WRITE_ADDR + WRITE_POS; /* * if(raw.CustomFile) * { * PS3.WriteString(write_addr, raw.name); * * WRITE_POS += (uint)raw.name.Length + 1; * * raw.name_ptr = write_addr; * PS3.WriteUInt(XAssetPool + (uint)(index * RawfileSize) + 4, raw.name_ptr); //update the name ptr * } */ PS3.SetMemory(write_addr, raw.buffer);//write in mem WRITE_POS += raw.length; raw.buffer_ptr = write_addr; PS3.WriteUInt(XAssetPool + (uint)(index * RawfileSize) + 12, raw.buffer_ptr); //update the table PS3.WriteUInt(XAssetPool + (uint)(index * RawfileSize) + 8, raw.length); //update the length. uint table_addr = XAssetPool + (uint)(index * RawfileSize) + 12; uint len_addr = XAssetPool + (uint)(index * RawfileSize) + 8; }
public async Task getRawfileData(int index) { Rawfile raw = new Rawfile(); raw.index = index; raw.name_ptr = (uint)getInt(PoolBuffer, (index * RawfileSize) + 4); raw.requireOverwrite = false; raw.length = (uint)getInt(PoolBuffer, (index * RawfileSize) + 8); raw.buffer_ptr = (uint)getInt(PoolBuffer, (index * RawfileSize) + 12); //could remove this for additional speed. //raw.name = PS3.ReadCString(raw.name_ptr); //this is returning null for some reason... //Console.WriteLine("name: {0}", PS3.ReadCString(raw.name_ptr)); //Console.WriteLine("buffer addr: 0x{0}", raw.buffer_ptr.ToString("X")); //Console.WriteLine(""); rawfiles.Add(raw); }