unit PSVFormat; ////////////////////////////////////////////////////////// // // Copyright Peter Stanley // https://github.com/PMStanley // ////////////////////////////////////////////////////////// // If you make any changes to this file be sure to send update to gothi at PS2Savetools. interface type titleArray = array[0..19] of AnsiChar; THeader = record magic : array[0..3] of AnsiChar; padding1 : integer; //always 0x00000000 salt : array [0..19] of byte; signature : array [0..19] of byte; //digital sig padding2 : integer; //always 0x00000000 padding3 : integer; //always 0x00000000 headerSize : integer; //always 0x0000002C in PS2, 0x00000014 in PS1. saveType : integer; //0x00000002 PS2, 0x00000001 PS1 end; PTHeader = ^THeader; TPS2Header = record displaySize : integer; //PS3 will just round this up to the neaest 1024 boundry so just make it as good as possible sysPos : integer; //location in file of icon.sys sysSize : integer; //icon.sys size icon1Pos : integer; //position of 1st icon icon1Size : integer; //size of 1st icon icon2Pos : integer; //position of 2nd icon icon2Size : integer; //size of 2nd icon icon3Pos : integer; //position of 3rd icon icon3Size : integer; //size of 3rd icon numberOfFiles : integer; end; PTPS2Header = ^TPS2Header; TPS2MainDirInfo = record CreateReserved: byte; CreateSecond : byte; CreateMinute : byte; CreateHour : byte; CreateDay : byte; CreateMonth: byte; CreateYear : word; ModReserved: byte; ModSecond : byte; ModMinute : byte; ModHour : byte; ModDays : byte; ModMonth: byte; ModYear : word; numberOfFilesInDir : integer; //this is likely to be number of files in dir + 2 ("." and "..") attribute : integer; //(8427 dir) filename : array[0..31] of AnsiChar; end; PTPS2MainDirInfo = ^TPS2MainDirInfo; TPS2FileInfo = record CreateReserved: byte; CreateSecond : byte; CreateMinute : byte; CreateHour : byte; CreateDay : byte; CreateMonth: byte; CreateYear : word; ModReserved: byte; ModSecond : byte; ModMinute : byte; ModHour : byte; ModDay : byte; ModMonth: byte; ModYear : word; filesize : integer; attribute : integer; //(8497 file) filename : array[0..31] of AnsiChar; // 'Real' PSV files have junk in this after text. positionInFile : integer; end; PTPS2FileInfo = ^TPS2FileInfo; TPS1Header = record saveSize : integer; startOfSaveData : integer; blockSize : integer; //always 0x00020000 (512). Block size? padding1 : integer; //always 0x00000000? padding2 : integer; //always 0x00000000? padding3 : integer; //always 0x00000000? padding4 : integer; //always 0x00000000? dataSize : integer; //save size repeated? unknown1 : integer; //always 0x03900000 (36867)? prodCode : array[0..19] of AnsiChar; //20 bytes, 0x00 filled & terminated padding6 : integer; //always 0x00000000? padding7 : integer; //always 0x00000000? padding8 : integer; //always 0x00000000? end; PTPS1Header = ^TPS1Header; TPS1MCSHeader = packed record magic : integer; // = 81; dataSize : integer; positionInCard : word; // = $FFFF; prodCode : array[0..19] of AnsiChar; filler : array[0..96] of byte; end; PTPS1MCSHeader = ^TPS1MCSHeader; TPS1FileInfo = record magic : array [0..1] of AnsiChar; iconDisplay : byte; blocksUsed : byte; title : array [0..31] of wideChar; end; PTPS1FileInfo = ^TPS1FileInfo; TIconSys = record magic : array[0..3] of AnsiChar; padding1 : word; // 0000 secondLineOffset : word; padding2 : integer; // 00000000 transparencyVal : integer; // 0x00 (clear) to 0x80 (opaque) bgColourUpperLeft : array [0..15] of byte; bgColourUpperRight : array [0..15] of byte; bgColourLowerLeft : array [0..15] of byte; bgColourLowerRight : array [0..15] of byte; light1Direction : array [0..15] of byte; light2Direction : array [0..15] of byte; light3Direction : array [0..15] of byte; light1RGB : array [0..15] of byte; light2RGB : array [0..15] of byte; light3RGB : array [0..15] of byte; ambientLightRGB : array [0..15] of byte; title : array [0..67] of byte; // null terminated, S-JIS IconName : array [0..63] of AnsiChar; // null terminated, S-JIS copyIconName : array [0..63] of AnsiChar; // null terminated, S-JIS deleteIconName : array [0..63] of AnsiChar; // null terminated, S-JIS padding3 : array[0..511] of byte; end; PTIconSys = ^TIconSys; implementation end. |
PSVFormat.pas
Bookmark the permalink. Follow any comments here with the RSS feed for this post.
Post a comment or leave a trackback.