
Este proyecto contiene múltiples herramientas para aplicaciones y juegos de Mac OS clásicos de ingeniería inversa.
Las herramientas en este proyecto son:
apt-get install zlibg1-dev Linuxes vienen con él preinstalados, pero algunos Linuxes como Raspbian pueden no.cmake . , luego make .Este proyecto debe basarse correctamente en versiones suficientemente recientes de MacOS y Linux.
Resource_Dasm es un desmontaje para las horquillas de recursos clásicos de Mac OS. Extrae recursos de la bifurcación de recursos de cualquier archivo y convierte muchos formatos clásicos de recursos de Mac OS (imágenes, sonidos, texto, etc.) en formatos modernos.
Ejemplos:
Exporte todos los recursos de un archivo específico y conviértelos en formatos modernos (la salida se escribe en el directorio <fileName> .out de forma predeterminada): ./resource_dasm files/Tesserae
Exportar todos los recursos de todos los archivos en una carpeta, escribiendo los archivos de salida en una estructura de carpeta paralela en el directorio actual: ./resource_dasm "files/Apeiron ƒ/" ./apeiron.out
Exportar un recurso específico de un archivo específico, en formatos modernos y originales: ./resource_dasm "files/MacSki 1.7/MacSki Sounds" ./macski.out --target-type=snd --target-id=1023 --save-raw=yes
Exportar los recursos de una aplicación de PowerPC y desmontar su código: ./resource_dasm "files/Adventures of Billy" ./billy.out ./m68kdasm --pef "files/Adventures of Billy" ./billy.out/dasm.txt
Exporte todos los recursos desde un archivo Mohawk: ./resource_dasm files/Riven/Data/a_Data.MHK ./riven_data_a.out --index-format=mohawk
Debido a la copia de archivos en diferentes tipos de sistemas de archivos, es posible que tenga la bifurcación de recursos de un archivo en la horquilla de datos de un archivo separado. Para exportar recursos de dicho archivo: ./resource_dasm "windows/Realmz/Data Files/Portraits.rsf" ./portraits.out --data-fork
Cree un nuevo archivo de recursos, con algunos recursos de texto y clut: ./resource_dasm --create --add-resource=TEXT:[email protected] --add-resource=TEXT:[email protected] --add-resource=clut:[email protected] output.rsrc
Agregue un recurso a un archivo de recursos existente: ./resource_dasm file.rsrc --add-resource=TEXT:[email protected] output.rsrc
Eliminar un recurso de un archivo de recursos existente: ./resource_dasm file.rsrc --delete-resource=TEXT:128 output.rsrc
Esto no es todo lo que puede hacer Resource_Dasm. Ejecutarlo sin ningún argumento (o mire print_usage() en src/resource_dasm.cc) para obtener una descripción completa de todas las opciones.
Resource_Dasm puede convertir estos tipos de recursos:
Type | Output format | Notes
------------------------------------------------------------------------
Text resources
bstr | .txt (one file per string) | *3
card | .txt |
finf | .txt (description of contents) |
FCMT | .txt | *3
FONT | .txt (description) and image (one image per glyph) | *E
lstr | .txt | *3
MACS | .txt | *3
minf | .txt | *3
mstr | .txt | *3
mst# | .txt (one file per string) | *3
NFNT | .txt (description) and image (one image per glyph) | *E
PSAP | .txt |
sfnt | .ttf (TrueType font) |
STR | .txt | *3
STR# | .txt (one file per string) | *3
styl | .rtf | *4
TEXT | .txt | *3
TwCS | .txt (one file per string) |
wstr | .txt |
------------------------------------------------------------------------
Image and color resources
actb | image (24-bit) | *E *8
acur | .txt (list of cursor frame IDs) |
cctb | image (24-bit) | *E *8
cicn | image (32-bit and monochrome) | *E
clut | image (24-bit) | *E *8
crsr | image (32-bit and monochrome) | *E *1
CTBL | image (24-bit) | *E
CURS | image (32-bit) | *E *1
dctb | image (24-bit) | *E *8
fctb | image (24-bit) | *E *8
icl4 | image (24 or 32-bit) and .icns | *E *0
icl8 | image (24 or 32-bit) and .icns | *E *0
icm# | image (32-bit) | *E
icm4 | image (24 or 32-bit) | *E *0
icm8 | image (24 or 32-bit) | *E *0
ICN# | image (32-bit) and .icns | *E
icns | image, .png, .jp2, .txt, .plist, .bin, etc. | *E *9
ICON | image (24-bit) | *E
ics# | image (32-bit) and .icns | *E
ics4 | image (24 or 32-bit) and .icns | *E *0
ics8 | image (24 or 32-bit) and .icns | *E *0
kcs# | image (32-bit) | *E
kcs4 | image (24 or 32-bit) | *E *0
kcs8 | image (24 or 32-bit) | *E *0
PAT | image (24-bit; pattern and 8x8 tiling) | *E
PAT# | image (24-bit; pattern and 8x8 tiling for each pattern) | *E
PICT | image (24-bit) or other format | *E *2
pltt | image (24-bit) | *E *8
ppat | image (24-bit; color, color 8x8, mono, mono 8x8) | *E
ppt# | image (24-bit; 4 images as above for each pattern) | *E
SICN | image (24-bit, one per icon) | *E
wctb | image (24-bit) | *E *8
------------------------------------------------------------------------
Sound and sequence resources
.mod | .mod (ProTracker module) |
ALIS | .txt (description of contents) |
cmid | .midi |
csnd | .wav or .mp3 | *5
ecmi | .midi |
emid | .midi |
esnd | .wav or .mp3 | *5
ESnd | .wav or .mp3 | *5
INST | .json | *6
MADH | .madh (PlayerPRO module) |
MADI | .madi (PlayerPRO module) |
MIDI | .midi |
Midi | .midi |
midi | .midi |
SMSD | .wav | *A
snd | .wav or .mp3 | *5
SONG | .json (smssynth) | *6
SOUN | .wav | *A
Tune | .midi | *7
Ysnd | .wav |
------------------------------------------------------------------------
Code resources
ADBS | .txt (68K assembly) | *C
adio | .txt (68K assembly) | *C
AINI | .txt (68K assembly) | *C
atlk | .txt (68K assembly) | *C
boot | .txt (68K assembly) | *C
CDEF | .txt (68K assembly) | *C
cdek | .txt (PPC32 assembly and header description) |
cdev | .txt (68K assembly) | *C
CDRV | .txt (68K assembly) | *C
cfrg | .txt (description of code fragments) | *D
citt | .txt (68K assembly) | *C
clok | .txt (68K assembly) | *C
cmtb | .txt (68K assembly) | *C
cmu! | .txt (68K assembly) | *C
CODE | .txt (68K assembly or import table description) | *B *C
code | .txt (68K assembly) | *C
dcmp | .txt (68K assembly) | *C
dcod | .txt (PPC32 assembly and header description) |
dem | .txt (68K assembly) | *C
dimg | .txt (68K assembly) | *C
drvr | .txt (68K assembly) | *C
DRVR | .txt (68K assembly) | *C
enet | .txt (68K assembly) | *C
epch | .txt (PPC32 assembly) |
expt | .txt (PPC32 assembly) |
FKEY | .txt (68K assembly) | *C
fovr | .txt (PPC32 assembly and header description) |
gcko | .txt (68K assembly) | *C
gdef | .txt (68K assembly) | *C
GDEF | .txt (68K assembly) | *C
gnld | .txt (68K assembly) | *C
INIT | .txt (68K assembly) | *C
krnl | .txt (PPC32 assembly) |
LDEF | .txt (68K assembly) | *C
lmgr | .txt (68K assembly) | *C
lodr | .txt (68K assembly) | *C
ltlk | .txt (68K assembly) | *C
MBDF | .txt (68K assembly) | *C
MDEF | .txt (68K assembly) | *C
mntr | .txt (68K assembly) | *C
ncmp | .txt (PPC32 assembly and header description) |
ndlc | .txt (PPC32 assembly and header description) |
ndmc | .txt (PPC32 assembly and header description) |
ndrv | .txt (PPC32 assembly and header description) |
nift | .txt (PPC32 assembly and header description) |
nitt | .txt (PPC32 assembly and header description) |
nlib | .txt (PPC32 assembly and header description) |
nsnd | .txt (PPC32 assembly and header description) |
nsrd | .txt (PPC32 assembly) |
ntrb | .txt (PPC32 assembly and header description) |
osl | .txt (68K assembly) | *C
otdr | .txt (68K assembly) | *C
otlm | .txt (68K assembly) | *C
PACK | .txt (68K assembly) | *C
pnll | .txt (68K assembly) | *C
ppct | .txt (PPC32 assembly and header description) |
proc | .txt (68K assembly) | *C
PTCH | .txt (68K assembly) | *C
ptch | .txt (68K assembly) | *C
pthg | .txt (68K or PPC32 assembly and header description) | *C
qtcm | .txt (PPC32 assembly and header description) |
ROvr | .txt (68K assembly) | *C
RSSC | .txt (68K assembly) | *C
scal | .txt (PPC32 assembly and header description) |
scod | .txt (68K assembly) | *C
SERD | .txt (68K assembly) | *C
sfvr | .txt (PPC32 assembly and header description) |
shal | .txt (68K assembly) | *C
sift | .txt (68K assembly) | *C
SMOD | .txt (68K assembly) | *C
snth | .txt (68K assembly) | *C
tdig | .txt (68K assembly) | *C
tokn | .txt (68K assembly) | *C
vdig | .txt (68K or PPC32 assembly and header description) | *C
wart | .txt (68K assembly) | *C
WDEF | .txt (68K assembly) | *C
XCMD | .txt (68K assembly) | *C
XFCN | .txt (68K assembly) | *C
------------------------------------------------------------------------
MacApp resources
68k! | .txt (description of memory config for 680x0) |
CMNU | .txt (description of menu) |
cmnu | .txt (description of menu) |
errs | .txt (description of error ranges) |
mem! | .txt (description of memory config) |
ppc! | .txt (description of memory config for PPC) |
res! | .txt (string list of always resident segments) |
seg! | .txt (string list of segments) |
TxSt | .txt (description of text style) |
------------------------------------------------------------------------
Miscellaneous resources
ALRT | .txt (alert parameters) |
APPL | .txt (description of contents) |
audt | .txt (description of contents) |
BNDL | .txt (description of contents) |
CMDK | .txt (list of keys) |
CNTL | .txt (description of control) |
CTY# | .txt (description of cities) |
dbex | .txt (description of contents) |
DITL | .txt (dialog parameters) |
DLOG | .txt (dialog parameters) |
FBTN | .txt (description of buttons) |
FDIR | .txt (description of contents) |
fld# | .txt (description of folders) |
flst | .txt (description of font family list) |
fmap | .txt (description of finder icon mappings) |
FREF | .txt (description of file references) |
FRSV | .txt (list of font IDs) |
FWID | .txt (font parameters) |
gbly | .txt (description of Gibbly aka. System Enabler) |
GNRL | .txt (description of contents) |
hwin | .txt (description of help window) |
icmt | .txt (icon reference and comment) |
inbb | .txt (description of contents) |
indm | .txt (description of contents) |
infs | .txt (description of contents) |
inpk | .txt (description of contents) |
inra | .txt (description of contents) |
insc | .txt (description of contents) |
itl0 | .txt (international formatting information) |
ITL1 | .txt (short dates flag value) |
itlb | .txt (internationalization parameters) |
itlc | .txt (internationalization parameters) |
itlk | .txt (keyboard mappings) |
KBDN | .txt (keyboard name) |
LAYO | .txt (description of layout) |
mach | .txt (description of contents) |
MBAR | .txt (list of menu IDs) |
mcky | .txt (threshold values) |
MENU | .txt (description of menu) |
mitq | .txt (description of queue sizes) |
nrct | .txt (rectangle boundaries) |
PAPA | .txt (printer parameters) |
PICK | .txt (picker parameters) |
ppcc | .txt (description of contents) |
ppci | .txt (description of contents) |
PRC0 | .txt (description of contents) |
PRC3 | .txt (description of contents) |
pslt | .txt (description of Nubus pseudo-slot lists) |
ptbl | .txt (description of patch table) |
qrsc | .txt (description of queries) |
RECT | .txt (description of the rectangle) |
resf | .txt (list of fonts) |
RMAP | .txt (type mapping and list of ID exceptions) |
ROv# | .txt (list of overridden resource IDs) |
rtt# | .txt (list of database result handlers) |
RVEW | .txt (description of contents) |
scrn | .txt (screen device parameters) |
sect | .txt (description of contents) |
SIGN | .txt (description of contents) |
SIZE | .txt (description of parameters) |
slut | .txt (description of mapping) |
thn# | .txt (description of 'thng' mapping) |
TMPL | .txt (description of format) |
TOOL | .txt (description of contents) |
vers | .txt (version flags and strings) |
WIND | .txt (window parameters) |
Notes:
*0: Produces a 32-bit image if a corresponding monochrome resource exists
(ICN# for icl4/8, icm# for icm4/8, ics# for ics4/8, kcs# for kcs4/8). If
no monochrome resource exists, produces a 24-bit image instead. All
color information in the original resource is reproduced in the output,
even for fully-transparent pixels. If the icon was originally intended
to be used with a nonstandard compositing mode, the colors of fully-
transparent pixels may have been relevant, but most modern image viewers
and editors don't have a way to display this information.
*1: The hotspot coordinates are appended to the output filename. As in *0,
resource_dasm faithfully reproduces the color values of transparent
pixels in the output file, but most modern image editors won't show
these "transparent" pixels.
*2: resource_dasm implements multiple PICT decoders. It will first attempt
to decode the PICT using its internal decoder, which usually produces
correct results but fails on PICTs that contain complex drawing opcodes.
This decoder can handle basic QuickTime images as well (e.g. embedded
JPEGs and PNGs), but can't do any drawing under or over them, or
matte/mask effects. PICTs that contain embedded JPEGs or PNGs will
result in a JPEG or PNG file rather than the format specified by
--image-format (which is BMP by default). If the internal decoder fails,
resource_dasm will fall back to a decoder that uses picttoppm, which is
part of NetPBM. There is a rare failure mode in which picttoppm hangs
forever; resource_dasm gives it 10 seconds to do its job before killing
it and giving up. If picttoppm is not installed, fails to decode the
PICT, or is killed due to a timeout, resource_dasm will prepend the
necessary header and save the data as a PICT file instead.
*3: Text is assumed to use the Mac OS Roman encoding. It is converted to
UTF-8, and line endings (r) are converted to Unix style (n).
*4: Some rare style options may not be translated correctly. styl resources
provide styling information for the TEXT resource with the same ID, so
such a resource must be present to properly decode a styl.
*5: RMF archives can contain snd resources that are actually in MP3 format;
in this case, the exported sound will be a .mp3 file. Otherwise, the
exported sound is an uncompressed WAV file, even if the resource's data
is compressed. resource_dasm can decompress IMA 4:1, MACE 3:1, MACE 6:1,
A-law, and mu-law (ulaw) compression.
*6: JSON files from SoundMusicSys SONG resources can be played with smssynth
(http://www.github.com/fuzziqersoftware/gctools). The JSON file refers
to the instrument sounds and MIDI sequence by filename and does not
include directory names, so if you want to play these, you'll have to
manually put the sounds and MIDI files in the same directory as the JSON
file if you're using --filename-format.
*7: Tune decoding is experimental and will likely produce unplayable MIDIs.
*8: For color table resources, the raw data is always saved even if it is
decoded properly, since the original data contains 16-bit values for
each channel and the output image file has less-precise 8-bit channels.
*9: icns resources are decoded into many different file types depending on
the contents of the resource. For subfields that have split alpha
channels (that is, the transparency data is in a different subfield),
resource_dasm produces an original image and one with transparency
applied. Some icns resources also contain metadata, which is exported as
.bin, .txt, and .plist files, except for the Icon Composer version used
to create the file, which is ignored. If you want the result in Icon
Composer format, use --save-raw=yes and resource_dasm will save it as a
.icns file.
*A: These resources appear to have a fixed format, with a constant sample
rate, sample width and channel count. You may have to adjust these
parameters in the output if it turns out that these are configurable.
*B: The disassembler attempts to find exported functions by parsing the jump
table in the CODE 0 resource, but if this resource is missing or not in
the expected format, it skips this step and does not fail. Generally, if
any "export_X:" labels appear in the disassembly, then export resolution
succeeded and all of the labels should be correct (otherwise they will
all be missing).
*C: Some coprocessor and floating-point opcodes (F-class) are not
implemented and will disassemble with the comment "// unimplemented".
*D: Most PowerPC applications have their executable code in the data fork.
To disassemble it, use m68kdasm (example above).
*E: The output image format can be specified using --image-format. The
default output format is bmp (Windows bitmap); other supported formats
are png and ppm.
Si Resource_Dasm no puede convertir un recurso, o no sabe cómo hacerlo, intentará decodificar el recurso utilizando el recurso TMPL (plantilla) correspondiente si existe. Si no hay TMPL apropiado, el TMPL está corrupto o el TMPL no puede decodificar el recurso, Resource_Dasm producirá los datos sin procesar del recurso.
La mayoría de las implementaciones de decodificadores en Resource_Dasm se basan en el software existente de ingeniería inversa y empeñen las heces de la documentación anterior, por lo que algunos tipos de recursos más raros probablemente aún no funcionarán. Sin embargo, quiero que este proyecto sea lo más completo posible, por lo que si tiene un recurso que cree que debería ser decodificable, pero Resource_Dasm no puede decodificarlo, envíelo (tal vez adjuntando a un problema de Github) y haré todo lo posible para hacer que Resource_Dasm lo entienda.
Resource_Dasm descomprime transparentemente los recursos que están marcados por el administrador de recursos como comprimido.
El esquema de compresión del administrador de recursos nunca fue documentado oficialmente por Apple o se hizo público, por lo que la implementación de estos descompresores se basa en la realización inversa de la ingeniería y otro código clásico de Mac OS. En resumen, los recursos se descomprimen mediante la ejecución de 68k o código PowerPC desde un recurso DCMP o NCMP, que se analiza en el tiempo de ejecución en la cadena de archivos de recursos abiertos como la mayoría de los otros recursos. (En la práctica, el DCMP/NCMP relevante generalmente está contenido en el mismo archivo que el recurso comprimido o en el archivo del sistema). Hay dos formatos diferentes de recursos comprimidos y dos formatos correspondientes de 68k descompresores; Resource_Dasm implementa soporte para ambos formatos.
Resource_Dasm contiene implementaciones nativas de los cuatro descompresores integrados en el archivo del sistema Mac OS. Específicamente:
Resource_Dasm tiene emuladores incorporados de 68K y PowerPC para ejecutar descompresores no predeterminados. Estos emuladores también pueden ejecutar los descompresores predeterminados, que se incluyen con Resource_Dasm. Estado actual de los descompresores emulados:
Puede haber otros descompresores que no he visto, lo que puede no funcionar. Si ve "Advertencia: no se descomprimió de los recursos" Cuando se usa Resource_Dasm, cree un problema de GitHub y cargue el recurso comprimido exportado (archivo .bin) que causó la falla, y todos los recursos DCMP y NCMP desde el mismo archivo fuente.
Ejecute sudo make install para copiar los archivos y la biblioteca del encabezado a las rutas relevantes después de la construcción. Después de la instalación, puede #include <resource_file/IndexFormats/ResourceFork.hh> (por ejemplo) y vincular con -lresource_file . No hay documentación para esta biblioteca más allá de lo que está escrito en los archivos de encabezado.
La biblioteca contiene las siguientes funciones y clases útiles:
El uso de M68KDASM es bastante sencillo. Ejecute m68kdasm --help para una lista completa de opciones.
Actualmente, M68KDASM puede desmontar este tipo de datos:
Algunos de estos formatos ejecutables admiten arquitecturas de CPU que M68KDASM no admite; Si encuentra uno de estos, imprime los segmentos de código como segmentos de datos.
M68KDASMS también puede ensamblar el ensamblaje PowerPC, X86 y SH-4 en binario crudo. (No es compatible con el ensamblaje de texto M68K en binario, pero esto se implementará en el futuro). La sintaxis de entrada esperada para cada arquitectura coincide con la sintaxis de desmontaje; Para PowerPC y SH-4, esta no es la sintaxis estándar utilizada por la mayoría de las otras herramientas.
M68KEXEC es un emulador de CPU y depurador para las arquitecturas Motorola 68000, PowerPC y X86 de 32 bits. A menudo lo uso para ayudar a comprender lo que un código arcaico está tratando de hacer, o para comparar el comportamiento del código que he transcribido a un lenguaje moderno con el comportamiento del código original. Para casos de uso como este, generalmente querrá configurar una o más regiones de entrada que contengan los datos con los que está probando, y una o más regiones de salida para que el código emulado escriba.
Quizás esto se explique mejor con el ejemplo. Este comando se utiliza para ejecutar la función de generación de contexto de cifrado de Phantasy Star Online Blue Burst, para compararla con la misma función que se implementa en Newserv:
./m68kexec --x86 --trace
--mem=A0000000/2AC43585C46A6366188889BCE3DB88B15C2B3C751DB6757147E7E9390598275CC79547B2E5C00DD145002816B59C067C
--mem=A1000000:1048
--load-pe=files/windows/pso/psobb.exe
--pc=00763FD0
--reg=ecx:A1000000
--push=00000030
--push=A0000000
--push=FFFFFFFF
--breakpoint=FFFFFFFF
Las opciones --mem configuran las regiones de entrada; La región A0000000 contiene la semilla de cifrado (0x30 bytes) y la región A1000000 contendrá el contexto de cifrado generado cuando la función regrese. La opción --load-pe carga el código que se ejecutará y --pc le dice al emulador dónde comenzar. (Por defecto, se iniciará en el punto de entrada definido en el ejecutable, si se da alguno; aquí, queremos llamar a una función específica en su lugar.) La opción --reg establece this puntero en la función al espacio que asignamos para ella. Las opciones --push establecen los argumentos de la función y la dirección de retorno. Volverá a FFFFFFFF, que no tiene memoria asignada, pero también hemos establecido un --breakpoint en esa dirección que detendrá la emulación justo antes de que se lance una excepción.
Dado que usamos --trace , el emulador imprime el estado de los registros después de cada código de operación, por lo que podemos rastrear su comportamiento y compararlo con nuestra implementación externa de la misma función. Cuando la función regresa y activa el punto de interrupción, podemos usar r A1000000 1048 en el shell para ver los datos que generó, y también compararlo con el resultado de nuestra función externa.
render_bits es útil para responder a la pregunta "¿Podría estos datos binarios de aspecto aleatorio ser una imagen o una matriz 2-D?" Déle un formato de color y algunos datos binarios, y producirá un archivo BMP a todo color que pueda ver con su visor o editor de imágenes favoritos. También puede dar una tabla de color (archivo .bin producido por Resource_Dasm a partir de un recurso CLUT) si cree que la entrada son datos de color indexados. Si la salida parece basura, juegue con el ancho y el formato de color hasta que descubra los parámetros correctos.
Ejecute render_bits sin ninguna opción para la información de uso.
render_text le permite ver cómo se vería el texto real cuando se renderiza con una fuente de mapa de bits (recurso de fuente/NFNT). Para usarlo, obtenga un archivo .bin de una fuente o un recurso NFNT (por ejemplo, con Resource_Dasm --save-RAW). Luego ejecute render_text sin argumentos para ver cómo usarlo.
A veces, en el curso de la ingeniería inversa, terminará con una imagen que tiene el contenido y la estructura correctos, pero los colores están completamente equivocados. Lo más probable es que se representara con la mesa de color incorrecta; Para solucionar esto, puede usar Reemplazar_clut para mapear todos los píxeles de la imagen de un espacio de colores a otro.
Ejecute reemplazar_clut sin ninguna opción para la información de uso.
Algunos juegos almacenan imágenes grandes se dividen en un conjunto de texturas más pequeñas; Ensamble_Images puede combinarlos programáticamente en una imagen grande única nuevamente. Ejecute ensamble_images sin ninguna opción para ver cómo usarlo.
dupe_finder encuentra recursos duplicados del mismo tipo en uno o varios archivos de recursos.
Ejecute dupe_finder sin ninguna opción para la información de uso.
hypercard_dasm stack_file [output_dir] , o simplemente hypercard_dasm para ver todas las opcionesicon_dearchiver archive_file [output_dir] desempaqueta los iconos en archivos .icns.vrfs_dump VRFS_file [output_dir]Decode_Data puede decodificar y descomprimir algunos formatos de codificación personalizados utilizados por varios juegos. Específicamente:
Game/App/Library | Encoding | CLI option | Notes
-------------------------------------------------------------
DinoPark Tycoon | LZSS | --dinopark | %0
DinoPark Tycoon | RLE | --dinopark |
Flashback | LZSS | --presage | %0
MacSki | COOK | --macski |
MacSki | CO2K | --macski |
MacSki | RUN4 | --macski |
PackBits (compress) | PackBits | --pack-bits |
PackBits (decompress) | PackBits | --unpack-bits |
Pathways Into Darkness | Pathways | --unpack-pathways |
SoundMusicSys | LZSS | --sms | %0
Notes:
%0: Although these are all variants of LZSS (and are indeed very similar to
each other), they are mutually incompatible formats.
Decode_Data se puede usar por sí solo para descomprimir los datos, o se puede usar como un preprocesador externo a través de Resource_Dasm para descomprimir transparentemente algunos formatos. Por ejemplo, para usar decode_data para recursos de MacSki, puede ejecutar un comando como resource_dasm --external-preprocessor="./decode_data --macski" input_filename ...
render_sprite puede representar varios formatos de sprite de juego personalizados. Para algunos formatos enumerados a continuación, deberá proporcionar un recurso de la tabla de colores además del recurso Sprite. Un archivo .bin producido por recurse_Dasm a partir de un recurso Clut, PLTT o CTBL será suficiente; Por lo general, estos se pueden encontrar en el mismo archivo que los recursos de Sprite o en la aplicación del juego. Ejecute render_sprite sin argumentos para la información de uso.
Formatos compatibles:
Game | Type | CLI option | Need color table | Notes
---------------------------------------------------------------------------
Beyond Dark Castle | PBLK | --PBLK | No |
Beyond Dark Castle | PPCT | --PPCT | No |
Beyond Dark Castle | PSCR | --PSCR-v2 | No |
Blobbo | BTMP | --BTMP | No |
Blobbo | PMP8 | --PMP8 | Yes | $9
BodyScope | Imag | --Imag | Yes | $2 $3
Bonkheads | Sprt | --Sprt | Yes |
Bubble Trouble | btSP | --btSP | Yes |
Dark Castle (color) | DC2 | --DC2 | No | $4
Dark Castle (monochrome) | PPCT | --PPCT | No |
Dark Castle (monochrome) | PSCR | --PSCR-v1 | No |
DinoPark Tycoon | BMap | --BMap | No |
DinoPark Tycoon | XBig | --XBig | No | $2
DinoPark Tycoon | XMap | --XMap | Yes | $2 $7
Dr. Quandary | Imag | --Imag | Sometimes | $1 $2 $3
Factory | 1img | --1img | No |
Factory | 4img | --4img | Yes |
Factory | 8img | --8img | Yes |
Flashback | PPSS | --PPSS | Yes | $2 $8
Fraction Munchers | Imag | --Imag-fm | Sometimes | $1 $2 $3
Greebles | GSIF | --GSIF | Yes |
Harry the Handsome Executive | HrSp | --HrSp | Yes | $9
Lemmings | SHPD | --SHPD-v1 | Sometimes | $0 $1 $2 $5
Marathon | .256 | --.256-m | No | $2
Mario Teaches Typing | Pak | --Pak | Sometimes | $1 $2
Mars Rising | btSP | --btSP | Yes |
Number Munchers | Imag | --Imag-fm | Sometimes | $1 $2 $3
Odell Down Under | Imag | --Imag | Sometimes | $1 $2 $3
Oh No! More Lemmings | SHPD | --SHPD-v2 | Sometimes | $0 $1 $2 $5
Pathways Into Darkness | .256 | --.256-pd | No | $2
Prince of Persia | SHPD | --SHPD-p | Sometimes | $0 $1 $2 $5
Prince of Persia 2 | SHAP | --SHAP | Yes |
SimCity 2000 | SPRT | --SPRT | Yes | $2
SimTower | | | No | $A
Slithereens | SprD | --SprD | Yes | $2
SnapDragon | Imag | --Imag | Sometimes | $1 $2 $3
Spectre | shap | --shap | No | $6
Step On It! | sssf | --sssf | Yes | $2
Super Munchers | Imag | --Imag-fm | Sometimes | $1 $2 $3
Swamp Gas | PPic | --PPic | Sometimes | $0 $2 $3
The Amazon Trail | Imag | --Imag | Sometimes | $2 $3
The Oregon Trail | Imag | --Imag | Sometimes | $1 $2 $3
TheZone | Spri | --Spri | Yes |
Word Munchers | Imag | --Imag-fm | Sometimes | $1 $2 $3
Notes:
$0: render_sprite can't tell from the contents of the resource whether it is
color or monochrome, so it assumes the resource is color if you give a
color table on the command line. If decoding fails with a color table,
try decoding without one (or vice versa).
$1: These games contain some color and some monochrome graphics. It should
be obvious which are which (usually color graphics are in a separate
file), but if not, you can give a clut anyway in these cases and
render_sprite will ignore it if the image is monochrome.
$2: These sprite formats contain multiple images, so render_sprite will
produce multiple image files.
$3: Resources of this type can contain embedded color tables; if you're
rendering a color image that doesn't have a color table, you'll have to
provide one via a command-line option. If the resource (or individual
images therein) contain their own color tables or are monochrome, no
color table is required on the command line, and any provided color
table via the command line will be ignored.
$4: You can get DC2 sprites from the DC Data file with
`resource_dasm --index-format=dc-data "DC Data"`.
$5: The graphics files contain resources that refer to segments of the data
fork in the same file. So, this option expects the original Graphics or
BW Graphics or Persia file (with both data and resource forks present),
not an already-extracted resource.
$6: shap resources contain 3D models and 2D top-down projections of them.
When given a shap resource, render_sprite produces an STL file and an
OBJ file for the 3D model, and an SVG file for the 2D top-down view.
$7: Some XMap resources are stored inside CBag archives. You can extract
them with `resource_dasm --index-format=cbag <CBAG_file.bin>`.
$8: This game has only one clut and it's huge - far longer than the usual
256 entries. It seems PPSS image sets are meant to be rendered with a
subset of this clut, but I haven't been able to figure out (yet) how the
game chooses what subset of it to use.
$9: The game doesn't contain any color tables. You can use a 256-color clut
resource from the Mac OS System file, or use the --default-clut option.
$A: The game stores its sprites in normal PICT resources with an incorrect
type. Use `resource_dasm --copy-handler=PICT:%89%E6%91%9C` to decode
them instead of using render_sprite.
Icon_Dearchiver desempaqueta los íconos en un archivador de icono (por Alessandro Levi Montalcini) Archivo para .icns. Ejecutarlo sin opciones de información de uso.
blobbo_render <Blev-file.bin> <PMP8-128.bmp>ferazel_render en el directorio con los archivos de datos, o ferazel_render --help para ver todas las opciones (¡hay muchas!)gamma_zee_render gamma_zee_application levels_filenameharry_render --clut-file=clut.bin , o simplemente harry_render para ver todas las opciones (¡hay muchas!)infotron_render en el directorio de información de datos de informaciónlemmings_render --clut-file=clut.bin o lemmings_render --help para ver todas las opcionesmshines_render world_file [output_directory]lemmings_render como para lemmings originales, pero también use la opción --v2realmz_dasm global_data_dir [scenario_dir] out_dir (si no se da Scenario_Dir, desmonta los datos compartidos en su lugar)