-
Notifications
You must be signed in to change notification settings - Fork 4
unpak
Unpak es una herramienta que permite examinar y extraer el contenido de archivos PAK y STP, usados en los juegos creados con DIV y los instaladores, respectivamente.
Los archivos PAK contienen los recursos de un juego y acompañan al ejecutable de éste cuando seleccionamos la opción Empaquetar archivos al generar el instalador.
Los archivos STP contienen todos los archivos de un juego (incluido EXE, PAK, DIV32RUN.DLL y todo lo demás), tienen extensión numerada (.001, .002…) y acompañan al INSTALL.EXE cuando generamos el instalador del juego. Cuando creamos el instalador en una carpeta del disco duro, sólo se generará un volumen (con extensión .001), pero si lo creamos en una unidad de diskette, generará múltiples volúmenes, uno por diskette.
Unpak es un programa de consola disponible para MS-DOS, Win32 y Linux32. El formato de la línea de comandos es:
unpak [opciones] FICHERO [PATRÓN…]
Donde:
- FICHERO es el fichero PAK o STP que queremos extraer. Si se trata de un STP multi-volumen, podemos indicar cualquiera de ellos, siempre que los demás volúmenes se encuentren en el mismo directorio.
- PATRÓN es un patrón de fichero que opcionalmente puede usar comodines (*, ? y […]) con el que podemos seleccionar qué ficheros extraer o listar. Podemos indicar múltiples patrones; si un fichero no coincide con ninguno de ellos será excluido.
Las opciones que podemos indicar se listan en la siguiente tabla. Siguiendo la tradición de los programas tipo UNIX, pueden combinarse (por ejemplo: -vsu en vez de -v -s -u) y se puede usar -- para indicar al programa que deje de leer opciones por si queremos indicar un FICHERO o un PATRÓN que empiece con el carácter -.
Opción | Descripción |
---|---|
-l | Lista el contenido del fichero (si no se indica, Unpak extraerá el contenido). |
-d DIR | Indica al programa un directorio donde extraer el contenido del fichero. Por defecto se extraerá todo en el directorio actual. |
-s | Crea subdirectorios al igual que haría DIV cuando seleccionamos la opción Crear subdirectorios en el generador de instalaciones. Cada fichero se extraerá en un subdirectorio llamado como su extensión, salvo en el caso de los ficheros EXE, DLL y PAK. |
-u | No convierte los nombres de fichero a minúsculas. Por defecto, Unpak convertirá todos los nombres de fichero a minúsculas antes de extraerlos. Esto es para facilitar su manejo en sistemas sensibles a mayúsculas/minúsculas, como Linux. Con la opción -u podemos desactivar este comportamiento. |
-k | Continúa procesando el fichero incluso si se encuentran errores. Esta opción sólo se recomienda si queremos recuperar el contenido de un PAK/STP dañado o incompleto. Debemos tener en cuenta que habrá ficheros que no se consigan extraer y eso podría hacer que el juego extraído no funcione. |
-b | No elimina ficheros extraídos parcialmente o con errores. Esta opción se suele usar con -k para tratar de recuperar toda la información posible de un PAK/STP dañado o incompleto. |
-v | Muestra información adicional. Unpak mostrará toda la información posible en cada paso de la operación. |
-h | Muestra la ayuda del programa. |
Simplemente usando la opción -l podemos ver el contenido de cualquier PAK/STP. Nos mostrará cada fichero acompañado de su tamaño descomprimido, tamaño comprimido y razón de compresión.
> unpak -l blastup.pak
DIV Unpak Copyright (C) 2022 Vii
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
Uncomp.size Comp.size Ratio Name
----------- ---------- ------ ----------------
26127 6127 23.5% opciones.fnt
7432 1644 22.1% marcador.fnt
37286 5107 13.7% juego.fnt
107347 20926 19.5% creditos.fnt
6816 5978 87.7% faser.pcm
5046 3259 64.6% laser.pcm
14641 8124 55.5% disparo2.pcm
27223 14436 53.0% explosio.pcm
4354 4201 96.5% ding.pcm
5955 3014 50.6% buiu.pcm
26286 17310 65.9% fx1.pcm
12124 6349 52.4% cosa_a.pcm
917726 228430 24.9% juego.fpg
308616 88162 28.6% titulo.fpg
308616 143152 46.4% creditos.fpg
----------- ---------- ------ ----------------
1815595 556219 30.6% 15 file(s) total
Podemos desempaquetar un PAK, opcionalmente usando la opción -s para crear subdirectorios, y luego incluso eliminar el PAK para convertir un juego empaquetado en desempaquetado. El juego seguirá funcionando correctamente.
> unpak -s blastup.pak
DIV Unpak Copyright (C) 2022 Vii
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
Extracting: opciones.fnt
Extracting: marcador.fnt
Extracting: juego.fnt
Extracting: creditos.fnt
Extracting: faser.pcm
Extracting: laser.pcm
Extracting: disparo2.pcm
Extracting: explosio.pcm
Extracting: ding.pcm
Extracting: buiu.pcm
Extracting: fx1.pcm
Extracting: cosa_a.pcm
Extracting: juego.fpg
Extracting: titulo.fpg
Extracting: creditos.fpg
15 file(s) extracted
> del blastup.pak
Unpak puede usarse como un instalador alternativo para los juegos. Con la opción -d podemos indicar la carpeta destino para la instalación (si no existe, Unpak la creará), y opcionalmente usar -s para crear subcarpetas. Si se trata de un instalador multi-volumen, hay que recordar primero copiar todos los volúmenes en la misma carpeta para que Unpak pueda encontrarlos.
C:\TMP>dir
El volumen de la unidad C es C_DRIVE
El número de serie del volumen es: 9C5A-FDC0
Directorio de C:\TMP
01/03/2022 15:51 <DIR> .
01/03/2022 15:51 <DIR> ..
24/02/2022 20:15 1.474.560 ALIEN.001
24/02/2022 20:15 1.474.560 ALIEN.002
24/02/2022 20:15 1.474.560 ALIEN.003
24/02/2022 20:16 634.839 ALIEN.004
24/02/2022 20:15 493.072 INSTALL.EXE
5 archivos 5.551.591 bytes
2 dirs 316.893.990.912 bytes libres
C:\TMP>unpak -sd C:\JUEGOS\ALIEN ALIEN.001
DIV Unpak Copyright (C) 2022 Vii
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
Extracting: alien.exe
Extracting: div32run.dll
Extracting: intro.fli
Extracting: suprimer.fpg
Extracting: aliend.fnt
Extracting: alien.fpg
Extracting: alienm.fnt
Extracting: aliens.fnt
Extracting: alienj.fnt
Extracting: alienc.fnt
Extracting: laser6.pcm
Extracting: esco_at1.pcm
Extracting: golpe20.pcm
Extracting: alien.pcm
Extracting: bip.pcm
Extracting: explosio.pcm
Extracting: explosi8.pcm
Extracting: motor.pcm
Extracting: creditos.fpg
19 file(s) extracted
C:\TMP>dir C:\JUEGOS\ALIEN
El volumen de la unidad C es C_DRIVE
El número de serie del volumen es: 9C5A-FDC0
Directorio de C:\JUEGOS\ALIEN
01/03/2022 15:54 <DIR> .
01/03/2022 15:54 <DIR> ..
01/03/2022 15:54 6.476 alien.exe
01/03/2022 15:54 318.466 div32run.dll
01/03/2022 15:54 <DIR> fli
01/03/2022 15:54 <DIR> fpg
01/03/2022 15:54 <DIR> fnt
01/03/2022 15:54 <DIR> pcm
2 archivos 324.942 bytes
6 dirs 258.088.960 bytes libres
En ocasiones nos puede convenir extraer un solo archivo o, por ejemplo, sólo los archivos con una determinada extensión. Unpak nos permite especificar patrones para filtrar qué archivos se extraen y cuáles se excluyen.
Por ejemplo, si sólo nos interesan los archivos FPG:
C:\TMP>unpak ALIEN.001 *.fpg
DIV Unpak Copyright (C) 2022 Vii
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
Extracting: suprimer.fpg
Extracting: alien.fpg
Extracting: creditos.fpg
3 file(s) extracted
Esta característica también funciona al listar el contenido de un fichero con la opción -l. Unpak nos indicará cuántos archivos fueron excluidos del listado:
C:\TMP>unpak -l ALIEN.001 *.fnt intro.fli
DIV Unpak Copyright (C) 2022 Vii
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
Uncomp.size Comp.size Ratio Name
----------- ---------- ------ ----------------
6535806 3609335 55.2% intro.fli
8260 1686 20.4% aliend.fnt
115653 13828 12.0% alienm.fnt
7432 1834 24.7% aliens.fnt
28761 5241 18.2% alienj.fnt
111211 13751 12.4% alienc.fnt
----------- ---------- ------ ----------------
6807123 3645675 53.6% 6 file(s) total (13 excluded)
Normalmente Unpak interrumpirá la operación en el momento en que encuentre datos inconsistentes. Pero si estamos intentando recuperar los datos de un fichero dañado, nos interesa que Unpak continúe para extraer todos los ficheros que sea posible. Para esto usaremos la opción -k. Si queremos conservar los ficheros parcialmente extraídos, añadiremos -b. Unpak mostrará una advertencia siempre que los datos extraídos estén posiblemente corruptos.
C:\TMP>unpak -kb -d recovery ALIEN.001
DIV Unpak Copyright (C) 2022 Vii
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
Extracting: alien.exe
Extracting: div32run.dll
Extracting: intro.fli
Extracting: suprimer.fpg
WARNING: suprimer.fpg: invalid data
WARNING: Skipping file suprimer.fpg
WARNING: Keeping partially extracted file recovery\suprimer.fpg
Extracting: aliend.fnt
Extracting: alien.fpg
Extracting: alienm.fnt
Extracting: aliens.fnt
Extracting: alienj.fnt
Extracting: alienc.fnt
Extracting: laser6.pcm
Extracting: esco_at1.pcm
Extracting: golpe20.pcm
Extracting: alien.pcm
Extracting: bip.pcm
Extracting: explosio.pcm
Extracting: explosi8.pcm
Extracting: motor.pcm
Extracting: creditos.fpg
18 file(s) extracted. WARNING: 1 failed
C:\TMP>dir recovery
El volumen de la unidad C es C_DRIVE
El número de serie del volumen es: 9C5A-FDC0
Directorio de C:\TMP\recovery
01/03/2022 16:11 <DIR> .
01/03/2022 16:11 <DIR> ..
01/03/2022 16:11 6.476 alien.exe
01/03/2022 16:11 1.906.496 alien.fpg
01/03/2022 16:11 16.140 alien.pcm
01/03/2022 16:11 111.211 alienc.fnt
01/03/2022 16:11 8.260 aliend.fnt
01/03/2022 16:11 28.761 alienj.fnt
01/03/2022 16:11 115.653 alienm.fnt
01/03/2022 16:11 7.432 aliens.fnt
01/03/2022 16:11 530 bip.pcm
01/03/2022 16:11 308.616 creditos.fpg
01/03/2022 16:11 318.466 div32run.dll
01/03/2022 16:11 20.025 esco_at1.pcm
01/03/2022 16:11 30.901 explosi8.pcm
01/03/2022 16:11 16.335 explosio.pcm
01/03/2022 16:11 10.624 golpe20.pcm
01/03/2022 16:11 6.535.806 intro.fli
01/03/2022 16:11 5.822 laser6.pcm
01/03/2022 16:11 4.034 motor.pcm
01/03/2022 16:11 451.402 suprimer.fpg <<<-- Este fichero originalmente pesaba 530 KB, pero ha sido extraído parcialmente
19 archivos 9.902.990 bytes
2 dirs 316.880.531.456 bytes libres
Hay que tener en cuenta que el primer volumen (con extensión .001) siempre es necesario, ya que es el que contiene la lista de ficheros almacenados en el paquete. Unpak siempre intentará acceder al primer volumen y, en caso de no encontrarlo, interrumpirá toda operación.
Si el volumen o volúmenes faltantes son los últimos, podemos usar Unpak normalmente y, aunque obviamente dará error cuando intente acceder al primer volumen inexistente, habrá extraído todos los datos posibles. Además, si hemos indicado la opción -b, dejará en el disco el último archivo extraído aunque sólo sea parcialmente.
Si el volumen o volúmenes faltantes son intermedios, hay algo que podemos hacer para intentar recuperar todos los datos posibles. Podemos copiar un volumen anterior con la extensión del volumen que falta y usar la opción -k (y, si nos interesa, -b). Unpak, naturalmente, mostrará un error cuando se encuentre datos que no corresponden con lo que espera, pero seguirá adelante y, si le es posible, extraerá los datos de los volúmenes siguientes.
En el siguiente ejemplo tenemos un juego en 4 volúmenes, del cual hemos perdido el número 3:
C:\TMP>dir
El volumen de la unidad C es C_DRIVE
El número de serie del volumen es: 9C5A-FDC0
Directorio de C:\TMP
01/03/2022 16:26 <DIR> .
01/03/2022 16:26 <DIR> ..
24/02/2022 20:15 1.474.560 ALIEN.001
24/02/2022 20:15 1.474.560 ALIEN.002
24/02/2022 20:16 634.839 ALIEN.004 <<<--- ¡Nos falta el 003!
24/02/2022 20:15 493.072 INSTALL.EXE
4 archivos 4.077.031 bytes
2 dirs 316.891.947.008 bytes libres
Normalmente Unpak extraería lo posible de ALIEN.001 y ALIEN.002, pero se interrumpiría al intentar acceder a ALIEN.003, ya que no existe (incluso indicando -k, puesto que Unpak no tiene forma de saber si hay más volúmenes después del 3). Así que hacemos una copia de ALIEN.002 para sustituir a ALIEN.003:
C:\TMP>copy ALIEN.002 ALIEN.003
1 archivo(s) copiado(s).
C:\TMP>dir
El volumen de la unidad C es C_DRIVE
El número de serie del volumen es: 9C5A-FDC0
Directorio de C:\TMP
01/03/2022 16:29 <DIR> .
01/03/2022 16:29 <DIR> ..
24/02/2022 20:15 1.474.560 ALIEN.001
24/02/2022 20:15 1.474.560 ALIEN.002
24/02/2022 20:15 1.474.560 ALIEN.003 <<<--- Volumen "sustituto". No tiene datos válidos pero nos será útil
24/02/2022 20:16 634.839 ALIEN.004
24/02/2022 20:15 493.072 INSTALL.EXE
5 archivos 5.551.591 bytes
2 dirs 316.890.472.448 bytes libres
Ahora podemos usar Unpak con las opciones -kb para extraer todo lo posible de los volúmenes 1, 2 y 4:
C:\TMP>unpak -kb -d recovery ALIEN.001
DIV Unpak Copyright (C) 2022 Vii
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
Extracting: alien.exe
Extracting: div32run.dll
Extracting: intro.fli
Extracting: suprimer.fpg
WARNING: suprimer.fpg: invalid data
WARNING: Skipping file suprimer.fpg
WARNING: Keeping partially extracted file recovery\suprimer.fpg
Extracting: aliend.fnt
WARNING: aliend.fnt: invalid data
WARNING: Skipping file aliend.fnt
WARNING: Keeping partially extracted file recovery\aliend.fnt
Extracting: alien.fpg
WARNING: alien.fpg: invalid data
WARNING: Skipping file alien.fpg
WARNING: Keeping partially extracted file recovery\alien.fpg
Extracting: alienm.fnt
Extracting: aliens.fnt
Extracting: alienj.fnt
Extracting: alienc.fnt
Extracting: laser6.pcm
Extracting: esco_at1.pcm
Extracting: golpe20.pcm
Extracting: alien.pcm
Extracting: bip.pcm
Extracting: explosio.pcm
Extracting: explosi8.pcm
Extracting: motor.pcm
Extracting: creditos.fpg
16 file(s) extracted. WARNING: 3 failed
C:\TMP>dir recovery
El volumen de la unidad C es C_DRIVE
El número de serie del volumen es: 9C5A-FDC0
Directorio de C:\TMP\recovery
01/03/2022 16:32 <DIR> .
01/03/2022 16:32 <DIR> ..
01/03/2022 16:32 6.476 alien.exe
01/03/2022 16:32 0 alien.fpg <<<--- ¡Archivo incompleto!
01/03/2022 16:32 16.140 alien.pcm
01/03/2022 16:32 111.211 alienc.fnt
01/03/2022 16:32 0 aliend.fnt <<<--- ¡Archivo incompleto!
01/03/2022 16:32 28.761 alienj.fnt
01/03/2022 16:32 115.653 alienm.fnt
01/03/2022 16:32 7.432 aliens.fnt
01/03/2022 16:32 530 bip.pcm
01/03/2022 16:32 308.616 creditos.fpg
01/03/2022 16:32 318.466 div32run.dll
01/03/2022 16:32 20.025 esco_at1.pcm
01/03/2022 16:32 30.901 explosi8.pcm
01/03/2022 16:32 16.335 explosio.pcm
01/03/2022 16:32 10.624 golpe20.pcm
01/03/2022 16:32 6.439.181 intro.fli
01/03/2022 16:32 5.822 laser6.pcm
01/03/2022 16:32 4.034 motor.pcm
01/03/2022 16:32 0 suprimer.fpg <<<--- ¡Archivo incompleto!
19 archivos 7.440.207 bytes
2 dirs 316.883.001.344 bytes libres