Star Ocean: First Departure Unpacker

Pubblicato il 17 febbraio 2009 alle 02:02 da Brisma

Star Ocean FD PSPUhuh, ma guarda un po’ cosa sono andato a ripescare dall’hard disk oggi :P
Non si tratta di nulla di particolare, semplicemente un paio di mesi fa (Ottobre) avevo iniziato ad analizzare questo gioco, giusto per vedere com’era strutturato (per giunta la versione USA, in quanto la PAL non era ancora uscita in commercio.
Per capire l’archivio ci è voluto ben poco, una delle tanti varianti di casa Square, nulla di nuovo insomma. Invece la cosa curiosa sono proprio i file contenuti in esso: si tratta niente di meno che… di file compressi!
Beh, anche qui non c’è nulla di nuovo penserete… ed invece c’è una piccola curiosità: utilizzano la stessa identica compressione di Valkyrie Profile PSX/PSP, difatti sono tranquillamente de/comprimibili utilizzando il decompressore di VP :)

Sfortunatamente, tale decompressore non è ad opera mia, ma bensì di Scorpio, indi per cui non posso pubblicarlo senza il suo consenso, ma tuttosommato nessuno mi vieta di pubblicare uno dei miei tanti dearchiviatore brutti, mal ottimizzati, senza nessun controllo etc etc ma che funzionano sempre, e perciò ecco il dearchiviatore, non si sa mai che a qualcuno può tornare utile :P

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <stdio .h>
 
unsigned long int num_file, i, offset, dimensione, indice;
unsigned char buffer[209715200], stringa[32]; // 200Mb - > W lo spreco XD
FILE *input, *output;;
 
int main()
  {
  input=fopen("so1pack.bin", "rb");
  mkdir("SO1_UNPACK");
  fread(&num_file, 4, 1, input);
  fseek(input, 0x08, SEEK_SET);
  fread(&indice, 4, 1, input);
  fseek(input, 0x10, SEEK_SET);
  for(i = 0; i < num_file - 1; i++) // Esclude l'indice delle dimensioni
    {
    fseek(input, 0x10 + (i * 4), SEEK_SET);
    fread(&offset, 4, 1, input);
    fseek(input, indice + (i * 4), SEEK_SET);
    fread(&dimensione, 4, 1, input);
    fseek(input, offset, SEEK_SET);
    printf("File so1pack.%d Offset: %X Dimensione: %d byte\n", i, offset, dimensione);
    fread(&buffer, dimensione, 1, input);
    sprintf(stringa, "SO1_UNPACK\\so1pack.%d", i);
    output=fopen(stringa, "wb");
    fwrite(&buffer, dimensione, 1, output);
    fclose(output);
    }
  return 0;
  }

Download Star Ocean FD Unpacker 0.1 (Eseguibile Win32/Sorgenti C).

3 Commenti a “Star Ocean: First Departure Unpacker”

  1. Suppo scrive:

    Provato e funziona alla grande… ora però mi permetto di fare una domanda da niubbo… e ora? Siccome la cosa mi ha molto incuriosito mi piacerebbe approfondire il discorso. Puoi darmi qualche dritta?
    Grazie ciao…

  2. Brisma scrive:

    Beh, ora sta al romhacker scriversi il necessario ed andare avanti :)

  3. Liori scrive:

    Helllo, can i use this to unpack Valkyrie Profile ? Thanks.

Lascia un Commento