Xeno-gears

  • Thread starter Thread starter Akari
  • Start date Start date
Status
Not open for further replies.
What program is used to view the 3d files and stuff?

Thanks,?
~SKy

Every programm written by the people themselves. Most of them are specialized to view only one thing. Tell what do you want to see?
 
Akari I remember you posted (URL) some source in reguards to Xenogears a while back. I was wondering if that was still about or would I be better to BYO (Build Your Own).  Currently I just have some of the FF series 'stuff' viewable however it would be kind of fun to view Xeno's as well. The fact that the the game was mostly in 3d I suppose would make it more intriuging LOL.

Cyb
 
All my stuff are posted here http://server.titansoft.ru/akari/xenogears/
engine.rar are number of classes which I used to view all stuff, but you must type everything manually, because i never write complete viewer, i just describe the format of data =)

By the way engine use bin/cue game image, you could write way to it in config
 
All right I work with the xeno classes that might make it easier to glean the data :D

Thanks

Cyb
 
I want to use the program to view the models and rotate them and zoom on them and do everything like every other model program that's out there. I just don't know the name of the program you guys are using so I can download it and view them.

Thanks,
~Sky
 
Lord Skylark http://server.titansoft.ru/akari/xenogears/engine.rar I believe is what you are looking for.

Akari I've had success with getting the ISO_FS semi functional and extrracting Xenogears FileSystem. I seem to have a problem finding the end of a directory.  Do you use a new directory or empty file pointer as the terminator? (or both?)
Square is rather anoying in how they approached there disks. It's hard to identify an FF8 FF9 or disk since they didn't use the ISO_FS properly. However there was an interesting little thing I found on FF7 disks the publisher isn't square but Hironobu Sakaguchi :D

I find it anoying that Square practically randomly filled these fields though.
I suppose this means I actually have to find the information in the system file for the BOOT = (yada yada) in it :/ Which also means I have to actually add functions to read the Path 'stuff' in ISO FS (there description of the the file system is so convoluted it's not funny).

So apart from knowing each Disks SLUS SLSP SLEU etc. IDs (it's a joke :) ). I can't think of a way to indentify the PS1 disk the volume ID isn't filled on several of Square's disks (woo mutter).

Cyb
 
So apart from knowing each Disks SLUS SLSP SLEU etc. IDs (it's a joke :) ). I can't think of a way to indentify the PS1 disk the volume ID isn't filled on several of Square's disks (woo mutter).
Store an MD5 checksum of the executable and use that to identify the game. If a user reports that his game isn't identified let him select it from a list, and ask him to send the MD5 checksum to you to use in new versions.

And here is my file extractor, it assumes you have a raw dump (=sectors of 2352 byte) of your disk:
Code: [Select]
Code:
// C interface#include <cstdio>#include <cstring>// C++ interface#include <string>// Unix interface#include <unistd.h>#include <fcntl.h>#include <errno.h>#include <paths.h>#include <sys/ioctl.h>#include <sys/param.h>#include <sys/types.h>#include <sys/uio.h>#include <sys/stat.h>typedef unsigned long int u32;typedef signed long s32;typedef unsigned char u8;#define BLOCKSIZE 2352using namespace std;void * getFile(FILE * file, u32 sector, u32 length, bool raw){ if (raw) {  u32 numSectors = (length + 2048 - 1) / 2048;  u8 * data = (u8*)malloc(numSectors * BLOCKSIZE);  fseek(file, sector * BLOCKSIZE, SEEK_SET);  fread(data, numSectors * BLOCKSIZE, 1, file);  return data; } else {  u8 * data = (u8*)malloc(length);  u32 numSectors = (length + 2048 - 1) / 2048;  fseek(file, sector * BLOCKSIZE, SEEK_SET);  for (int i=0; i<numSectors; i++) {   u8 block[BLOCKSIZE];   fread(block, BLOCKSIZE, 1, file);   u32 remainingSize = length - i * 2048;   u32 dataSize = remainingSize > 2048 ? 2048 : remainingSize;   memcpy(data + i * 2048, block + 16 + 8, dataSize);  }  return data; }}int main (const int argc, char const * const argv[]) { FILE * file = fopen(<path to your disk image>, "rb"); string root = "<path to the root of the extracted files>"; string directory = ""; u8 * fileTable = (u8*)getFile(file, 24, 16 * 2048, false); int index = 0; bool end = false; int directoryCount = 0; int fileCount = 0; bool movies = false; do {  u32 startSector = fileTable[index * 7 + 0] | (fileTable[index * 7 + 1] << 8) | (fileTable[index * 7 + 2] << 16);   s32 fileSize = fileTable[index * 7 + 3] | (fileTable[index * 7 + 4] << 8) | (fileTable[index * 7 + 5] << 16) | (fileTable[index * 7 + 6] << 24);   if (startSector != 0xFFFFFF) {   if (fileSize < 0) {    char tmp[256];    sprintf(tmp, "dir%i", directoryCount);    fileCount = 0;    directory = tmp;    mkdir((root + directory).c_str(), 0777);    movies = directoryCount == 0;    directoryCount ++;   } else if (fileSize > 0) {    char tmp[256];    sprintf(tmp, "file%2.2x.bin", fileCount);//    printf("%8.8x %8.8i\n", startSector, fileSize);#if 1    void * data = getFile(file, startSector, fileSize, movies);    FILE * dataFile = fopen((root + directory + "/" + string(tmp)).c_str(), "wb");    fwrite(data, fileSize, 1, dataFile);    fclose(dataFile);    free(data);#endif    fileCount++;   }  } else {   end = true;  }  index++; } while (!end); free(fileTable); fclose(file);}
I'm using MacOS, btw, so you may have to tweak system-level calls like mkdir. I've got another tool to dump a raw image of a disk, but that is 100% system specific and mostly based on an SDK sample anyway.
All my other tools work of the files extracted from the disk.
 
Does anyone know where Akari's relocated the Xeno-gears information? I went looking for it today and his site seems to no longer exist.
 
Status
Not open for further replies.
Back
Top