..:: PCSX2 Forums ::..

Full Version: Is it possible to Decipher file structure from mips?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2 3 4
None of them are blank on my side.

Scootaloo

I'll try downloading them, and using foxit then. Might just be Firefox's built-in viewer screwing up.

Nevermind then. It was just FF not displaying it properly. Anyway why are you doing this? just for fun, or for a project of some sort?

Also, would you mind if I posted this to reddit (r/emulation)? they might be interested in this.
(06-04-2014, 02:56 AM)avok23 Wrote: [ -> ]Thank you very much sir. I dont know why i never thought of IO.
But i wont even pretend to understand that. "Bios Log in IOP"? Never seen such an option
The "IOP Console" option doesnt show much of anything.
Some files have headers others dont. Japanese also slightly throws me off at times. ( Why would there ever be an integer value larger than the file size in a file? With the data making no sense as an int uint, float or short?)

Never heard of RPC

So I guess I am meant to look into "IOPRP300.IMG" or "SIO2MAN.IRX"? (I thought these were just like general libraries with instructions that can be called from the main SLPM/slus/sles etc)
PS if my above guess is true how would i recognize such a function call?

I guess i still know nothing Off to study some more

You can enable extra logging in Debug menu (might need dev or debug build). Warning it would fill your disk quickly.
Debug>logging (there is also an ee debugger).

The PS2 got 2 CPU with 2 dedicated OS and 2 dedicated RAM. There is really 2 systems. First one is the EE which run the main game and manage graphics. Seconds one is the IOP which run all the slow things (PAD/SOUND/MEM access...). System uses Remote Procedure Call (RPC seach wikipedia) to communicate. RPC is often use in network system. RPC are based on an hardware dma.

The kernel is inside the ROM but some parts can be updated with newer version (file IOPR*.img). You can also loads extra module to the kernel (*.irx file). The interesting module is IOMAN.

I'm sorry I will remove the PDF link they are copyrighted material.
(06-04-2014, 05:41 AM)Scootaloo Wrote: [ -> ]I'll try downloading them, and using foxit then. Might just be Firefox's built-in viewer screwing up.

Nevermind then. It was just FF not displaying it properly. Anyway why are you doing this? just for fun, or for a project of some sort?

Also, would you mind if I posted this to reddit (r/emulation)? they might be interested in this.

I dont mind you posting it on reddit. But i dont know what they would gain from it now that the links are gone (Which i dont mind either).
I am very beginner to the whole emulation thing. I really only wanted away to decipher ps2 game file formats but i ended up taking a whole Berkeley course (newer) I have also wondered how this guys do what they do.
By the way, what do you seach exactly? The .bin is probably a pack of texture.
(06-04-2014, 08:59 AM)gregory Wrote: [ -> ]By the way, what do you seach exactly? The .bin is probably a pack of texture.

The FID.bin file.

Code:
struct FileEntry
{
   uint32_t offset;
   uint32_t size;
   //uint32_t fileNameOffset;
   //File name = address?
};

//Once you have the real data
struct KengoFile
{
   uint32_t unkn1;
   uint32_t nFiles;
   uint32_t unkn2;
   uint32_t unkn3;
   FileEntry* files;
};

The problem is the files are un-named so i actually have to go through each one to decipher what the are. But in the slus file i can actually see the Initialization function and i had hoped it would lead me to what i wanted but there was no loading done in that function it seemed.

What i really want are the story texts and possibly the models


I had began to lose hope when i realized even if i got the translation i might not be able to fit all the text in as Japanese texts may say more with less characters.
Once i started I got interested in deciphering every thing. I had spent too much time on to get nothing in the end. It was some what exciting .

I even bought the 360 version from amazon ($3) just to see if it was similar. This time around most of the files were named the structure was minimally similar but it was in big endian.
I miss somethings. When I mount the iso I get a massive .bin for a games. As far as understand you manage to split into severals files. Can you explain it to me (more than 2 structs)?
(06-04-2014, 09:04 PM)gregory Wrote: [ -> ]I miss somethings. When I mount the iso I get a massive .bin for a games. As far as understand you manage to split into severals files. Can you explain it to me (more than 2 structs)?


What version of the game are you looking at and what is the name of the bin?

The game i used was Kengo 3. Kengo 2 and 1 use a "JOINT" file format
I dont understand.

Code:
//The main FID.Bin file has a header
struct KengoFileHeader
{
   uint32_t unkn1;
   uint32_t nFiles;  //<-----------Number of files in the BIN
   uint32_t unkn2;
   uint32_t unkn3;
   FileEntry* files;  //<----just an array of 2 ints that say the file offset and size in FID.Bin
};

struct FileEntry
{
   uint32_t offset;
   uint32_t size;
};


//So i open the Bin file in code
int fileCount //Read the second integer

FileEntry files[fileCount];
//Jump to more integers
for(int i =0; i < fileCount; ++i) //Yeah i dont have to read it this way
{
    //Read file address and file size
    files[i].offset;
    files[i].size;
}

loop through files
and save the data at their offset.
But since all the files are unnamed I have to go through each file in an hex editor to figure out what is inside each (over 7000 files).

Then writes code that identifies their headers if they have header or magic numbers etc.




I have also gotten a debug version of pcsx2. I am guessing i do not have to use Interpreter mode in any of the settings.

i enabled IOP logs: Bios, CDVD
as well ass SIF (EE <-> IOP)

I guess this is all i need
Thanks for the explanation, initial wasn't clear for me.

I just took a random games. That interestings Smile
From logging the IOP->BIOS this is all i get

Code:
Possible old value used in COP2 code
3C030038 lui    v1, 0x0038
27A200C0 lui    v1, 0x0038addiu    v0, sp, 0x00C0
26A400D0 lui    v1, 0x0038addiu    v0, sp, 0x00C0addiu    a0, s5, 0x00D0
246331D0 lui    v1, 0x0038addiu    v0, sp, 0x00C0addiu    a0, s5, 0x00D0addiu    v1, v1, 0x31D0
DA830000 lui    v1, 0x0038addiu    v0, sp, 0x00C0addiu    a0, s5, 0x00D0addiu    v1, v1, 0x31D0lqc2    vf03, 0x0000(s4)
D8480000 lui    v1, 0x0038addiu    v0, sp, 0x00C0addiu    a0, s5, 0x00D0addiu    v1, v1, 0x31D0lqc2    vf03, 0x0000(s4)lqc2    vf08, 0x0000(v0)
4BC818E8 lui    v1, 0x0038addiu    v0, sp, 0x00C0addiu    a0, s5, 0x00D0addiu    v1, v1, 0x31D0lqc2    vf03, 0x0000(s4)lqc2    vf08, 0x0000(v0)vadd.xyz vf03, vf03, vf08
D8840000 lui    v1, 0x0038addiu    v0, sp, 0x00C0addiu    a0, s5, 0x00D0addiu    v1, v1, 0x31D0lqc2    vf03, 0x0000(s4)lqc2    vf08, 0x0000(v0)vadd.xyz vf03, vf03, vf08lqc2    vf04, 0x0000(a0)
D8850010 lui    v1, 0x0038addiu    v0, sp, 0x00C0addiu    a0, s5, 0x00D0addiu    v1, v1, 0x31D0lqc2    vf03, 0x0000(s4)lqc2    vf08, 0x0000(v0)vadd.xyz vf03, vf03, vf08lqc2    vf04, 0x0000(a0)lqc2    vf05, 0x0010(a0)
D8860020 lui    v1, 0x0038addiu    v0, sp, 0x00C0addiu    a0, s5, 0x00D0addiu    v1, v1, 0x31D0lqc2    vf03, 0x0000(s4)lqc2    vf08, 0x0000(v0)vadd.xyz vf03, vf03, vf08lqc2    vf04, 0x0000(a0)lqc2    vf05, 0x0010(a0)lqc2    vf06, 0x0020(a0)

I can assume this is not what the devs use when debugging Smile
And the scroll bar doesnt work either
Pages: 1 2 3 4