
Этот проект содержит несколько инструментов для приложений и игр с обратной инженерной инженерной ОС.
Инструменты в этом проекте:
apt-get install zlibg1-dev .)cmake . , затем make .Этот проект должен правильно построить на достаточно недавних версиях MacOS и Linux.
resource_dasm является разборкой для классических вилок ресурсов Mac OS. Он извлекает ресурсы из вила ресурса любого файла и преобразует многие классические форматы ресурсов Mac OS (изображения, звуки, текст и т. Д.) В современные форматы.
Примеры:
Экспортируйте все ресурсы из определенного файла и преобразуйте их в современные форматы (вывод записывается в каталог <файл> .out по умолчанию): ./resource_dasm files/Tesserae
Экспортируйте все ресурсы из всех файлов в папке, записав выходные файлы в структуру параллельной папки в текущем каталоге: ./resource_dasm "files/Apeiron ƒ/" ./apeiron.out
Экспортируйте конкретный ресурс из конкретного файла, как в современных, так и в исходных форматах: ./resource_dasm "files/MacSki 1.7/MacSki Sounds" ./macski.out --target-type=snd --target-id=1023 --save-raw=yes
Экспортируйте ресурсы приложения PowerPC и разбирайте его код: ./resource_dasm "files/Adventures of Billy" ./billy.out ./m68kdasm --pef "files/Adventures of Billy" ./billy.out/dasm.txt
Экспортируйте все ресурсы из архива Mohawk: ./resource_dasm files/Riven/Data/a_Data.MHK ./riven_data_a.out --index-format=mohawk
Из -за копирования файлов по разным типам файловых систем у вас может быть вилка ресурса файла в вике данных отдельного файла. Для экспорта ресурсов из такого файла: ./resource_dasm "windows/Realmz/Data Files/Portraits.rsf" ./portraits.out --data-fork
Создайте новый файл ресурса, с несколькими текстовыми и компонентами: ./resource_dasm --create --add-resource=TEXT:[email protected] --add-resource=TEXT:[email protected] --add-resource=clut:[email protected] output.rsrc
Добавить ресурс в существующий файл ресурса: ./resource_dasm file.rsrc --add-resource=TEXT:[email protected] output.rsrc
Удалить ресурс из существующего файла ресурса: ./resource_dasm file.rsrc --delete-resource=TEXT:128 output.rsrc
Это еще не все может сделать ресурс_дам. Запустите его без каких -либо аргументов (или посмотрите на print_usage() в src/resource_dasm.cc) для полного описания всех параметров.
resource_dasm может преобразовать эти типы ресурсов:
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.
Если resource_dasm не может преобразовать ресурс или не знает, как это сделать, он попытается расшифровать ресурс, используя соответствующий ресурс TMPL (шаблон), если он существует. Если нет подходящего TMPL, TMPL поврежден, или TMPL не может декодировать ресурс, ресурс, resource_dasm, вместо этого создаст необработанные данные ресурса.
Большинство реализаций декодера в Resource_dasm основаны на существующем программном обеспечении с обратной инженерией и лап через отрывы старой документации, поэтому некоторые более редкие виды ресурсов, вероятно, пока не сработают. Тем не менее, я хочу, чтобы этот проект был максимально завершенным, поэтому, если у вас есть ресурс, который, по вашему мнению, должен быть декодируемым, но Resource_dasm не может декодировать его, отправьте его мне (возможно, подключив к проблеме GitHub), и я стараюсь изо всех сил, чтобы сделать это Resource_dasm понять.
resource_dasm прозрачно декомпрессирует ресурсы, которые помечены менеджером ресурсов как сжатые.
Схема сжатия менеджера ресурсов никогда не была официально документирована Apple или обнародована, поэтому реализация этих декомпрессоров основана на обратном инженерии и других классических кода Mac OS. Таким образом, ресурсы декомпрессируются путем выполнения 68K или кода PowerPC из ресурса DCMP или NCMP, который рассматривается во время выполнения в цепочке открытых ресурсов, как и большинство других ресурсов. (На практике соответствующий DCMP/NCMP обычно содержится в одном и том же файле, что и сжатый ресурс или в системном файле.) Существуют два разных формата сжатых ресурсов и два соответствующих формата 68 тыс. Декомпрессоров; resource_dasm реализует поддержку обоих форматов.
resource_dasm содержит собственные реализации всех четырех декомпрессоров, встроенных в системный файл Mac OS. Конкретно:
Resource_dasm имеет встроенные эмуляторы 68K и PowerPC для запуска не декомпрессоров. Эти эмуляторы также могут запускать декомпрессиоры по умолчанию, которые включены в Resource_dasm. Текущий статус эмулированных декомпрессоров:
Там могут быть и другие декомпрессоры, которые я не видел, что может не сработать. Если вы видите «ПРЕДУПРЕЖДЕНИЕ: не удалось декомпрессать ресурс» при использовании Resource_dasm, пожалуйста, создайте проблему GitHub и загрузите экспортированный сжатый ресурс (.BIN File), который вызвал сбой, и все ресурсы DCMP и NCMP из одного и того же исходного файла.
Запустите sudo make install , чтобы скопировать файлы заголовка и библиотеку в соответствующие пути после строительства. После установки вы можете #include <resource_file/IndexFormats/ResourceFork.hh> (например) и связать с -lresource_file . Для этой библиотеки нет документации за пределами того, что написано в файлах заголовка.
Библиотека содержит следующие полезные функции и классы:
Использование M68KDASM довольно просто. Запустите m68kdasm --help для полного списка вариантов.
В настоящее время M68KDASM может разобрать эти типы данных:
Некоторые из этих исполняемых форматов поддерживают архитектуры процессоров, которые M68KDasm не поддерживает; Если он встречается с одним из них, он печатает сегменты кода как сегменты данных.
M68KDASM также может собирать сборку PowerPC, x86 и SH-4 в необработанный двоичный файл. (Он не поддерживает сборку текста M68K в двоичный файл, но это будет реализовано в будущем.) Ожидаемый синтаксис ввода для каждой архитектуры соответствует синтаксису разборки; Для PowerPC и SH-4 это не стандартный синтаксис, используемый большинством других инструментов.
M68KEXEC является эмулятором процессора и отладчиком для архитектур Motorola 68000, 32-битных PowerPC и X86. Я часто использую его, чтобы помочь понять, что пытается сделать какой -то архаичный код, или сравнить поведение кода, которое я транскрибировал с современным языком с поведением оригинального кода. Для подобных вариантов использования вы, как правило, захотите настроить одну или несколько входных областей, содержащих данные, с которыми вы тестируете, и одну или несколько выходных областей для эмулированного кода для записи.
Возможно, это лучше всего объяснить примером. Эта команда используется для выполнения функции генерации контекста шифрования из Phantasy Star Online Blue Burst, чтобы сравнить ее с той же функцией, что и в Gewserv:
./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
Параметры --mem настроены входные области; Область A0000000 содержит семена шифрования (байт 0x30), а область A1000000 будет содержать сгенерированный контекст шифрования при возвращении функции. Параметр --load-pe загружает код, который будет выполнен, и --pc сообщает эмулятору, с чего начать. (По умолчанию он начнется в точке записи, определенной в исполняемом файле, если таковые имеются; здесь мы хотим вызывать вместо этого определенную функцию.) Опция --reg устанавливает this указатель в функции на пространство, которое мы выделяли для него. Параметры --push устанавливают аргументы функции и возвратный адрес. Он вернется в FFFFFFFF, который не имеет выделенной памяти, но мы также установили на этом адресе --breakpoint , которая остановит эмуляцию непосредственно перед исключением.
Поскольку мы использовали --trace , эмулятор печатает состояние регистров после каждого OpCode, поэтому мы можем проследить его поведение и сравнить его с нашей внешней реализацией той же функции. Когда функция возвращает и запускает точку останова, мы можем использовать r A1000000 1048 в оболочке, чтобы увидеть полученные данные, а также сравнить это с результатом нашей внешней функции.
render_bits полезен, чтобы ответить на вопрос: «Может ли эти бинарные данные, которые будут выглядеть, на самом деле быть изображением или 2-D массива?» Дайте ему цветовой формат и несколько двоичных данных, и он будет создан полноцветный файл BMP, который вы можете посмотреть с вашим любимым просмотром изображений или редактором. Вы также можете дать цветовую таблицу (.bin -файл, созданный Resource_dasm из Clut Resource), если вы считаете, что ввод индексированных данных цвета. Если вывод выглядит как мусор, поиграйте с шириной и форматом цвета, пока вы не выясните правильные параметры.
Запустите render_bits без каких -либо вариантов информации об использовании.
render_text позволяет вам увидеть, как будет выглядеть фактический текст при рендере с растровым шрифтом (ресурс Font/NFNT). Чтобы использовать его, получите файл .bin из ресурса шрифта или NFNT (например, с ресурсом_дасмы--save-raw). Затем запустите render_text без аргументов, чтобы увидеть, как его использовать.
Иногда в ходе обратного инженера вы получите изображение, которое имеет правильный контент и структуру, но цвета совершенно неверны. Скорее всего, он был отображен с неправильным цветным столом; Чтобы исправить это, вы можете использовать replace_clut для картирования всех пикселей изображения из одного цветового пространства на другое.
Запустите replace_clut без каких -либо параметров информации об использовании.
Некоторые игры хранят большие изображения разделены на набор небольших текстур; Assemble_Images может снова программно объединить их в одно большое изображение AA. Запустите Assemble_Images без каких -либо параметров, чтобы увидеть, как его использовать.
Dupe_finder находит дубликаты ресурсов того же типа в одном или нескольких файлах ресурсов.
Запустите Dupe_finder без каких -либо вариантов информации об использовании.
hypercard_dasm stack_file [output_dir] или просто hypercard_dasm , чтобы увидеть все вариантыicon_dearchiver archive_file [output_dir] распаковывает значки до файлов .icns.vrfs_dump VRFS_file [output_dir]decode_data может декодировать и декомировать несколько пользовательских форматов кодирования, используемых различными играми. Конкретно:
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 может использоваться самостоятельно для декомпрессации данных или может использоваться в качестве внешнего препроцессора через resource_dasm для прозрачного декомпрессии некоторых форматов. Например, для использования decode_data для ресурсов Macski вы можете запустить такую команду, как resource_dasm --external-preprocessor="./decode_data --macski" input_filename ...
render_sprite может отображать несколько пользовательских форматов Sprite Game. Для некоторых форматов, перечисленных ниже, вам придется предоставить ресурс цветового стола в дополнение к ресурсу спрайта. Достаточный файл .bin, созданный Resource_dasm из ресурса Clut, PLTT или CTBL; Обычно их можно найти в том же файле, что и ресурсы спрайта или в игровом приложении. Запустите render_sprite без аргументов для информации об использовании.
Поддерживаемые форматы:
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 распаковывает значки в архивере икона (от Алессандро Леви Монтальчини) до .icns. Запустите его без вариантов информации об использовании.
blobbo_render <Blev-file.bin> <PMP8-128.bmp>ferazel_render в каталоге с файлами данных или ferazel_render --help чтобы увидеть все варианты (их много!)gamma_zee_render gamma_zee_application levels_filenameharry_render --clut-file=clut.bin или просто harry_render , чтобы увидеть все варианты (их много!)infotron_render в каталоге Info DataFileslemmings_render --clut-file=clut.bin , или lemmings_render --help , чтобы увидеть все параметрыmshines_render world_file [output_directory]lemmings_render как для оригинальных леммингов, но также используйте опцию --v2realmz_dasm global_data_dir [scenario_dir] out_dir (если сценарий.