
Proyek ini berisi beberapa alat untuk aplikasi dan game Mac OS klasik-rekayasa terbalik.
Alat dalam proyek ini adalah:
apt-get install zlibg1-dev .)cmake . , lalu make .Proyek ini harus dibangun dengan benar di atas versi macOS dan Linux yang cukup baru.
Resource_dasm adalah disassembler untuk garpu sumber daya Mac OS klasik. Ini mengekstraksi sumber daya dari garpu sumber daya dari file apa pun dan mengubah banyak format sumber daya Mac OS klasik (gambar, suara, teks, dll.) Menjadi format modern.
Contoh:
Ekspor semua sumber daya dari file tertentu dan konversinya ke format modern (output ditulis ke direktori <filename> .out secara default): ./resource_dasm files/Tesserae
Ekspor semua sumber daya dari semua file di folder, tulis file output ke dalam struktur folder paralel di direktori saat ini: ./resource_dasm "files/Apeiron ƒ/" ./apeiron.out
Ekspor sumber daya tertentu dari file tertentu, dalam format modern dan asli: ./resource_dasm "files/MacSki 1.7/MacSki Sounds" ./macski.out --target-type=snd --target-id=1023 --save-raw=yes
Ekspor sumber daya aplikasi PowerPC dan bongkar kodenya: ./resource_dasm "files/Adventures of Billy" ./billy.out ./m68kdasm --pef "files/Adventures of Billy" ./billy.out/dasm.txt
Ekspor semua sumber daya dari arsip mohawk: ./resource_dasm files/Riven/Data/a_Data.MHK ./riven_data_a.out --index-format=mohawk
Karena menyalin file di berbagai jenis sistem file, Anda mungkin memiliki garpu sumber daya file di garpu data dari file terpisah sebagai gantinya. Untuk mengekspor sumber daya dari file seperti itu: ./resource_dasm "windows/Realmz/Data Files/Portraits.rsf" ./portraits.out --data-fork
Buat file sumber daya baru, dengan beberapa teks dan sumber daya clut: ./resource_dasm --create --add-resource=TEXT:[email protected] --add-resource=TEXT:[email protected] --add-resource=clut:[email protected] output.rsrc
Tambahkan sumber daya ke file sumber daya yang ada: ./resource_dasm file.rsrc --add-resource=TEXT:[email protected] output.rsrc
Hapus sumber daya dari file sumber daya yang ada: ./resource_dasm file.rsrc --delete-resource=TEXT:128 output.rsrc
Ini tidak semua sumber daya_dasm. Jalankan tanpa argumen (atau lihat print_usage() di src/resource_dasm.cc) untuk deskripsi lengkap dari semua opsi.
Resource_dasm dapat mengonversi tipe sumber daya ini:
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.
Jika Resource_dasm gagal mengonversi sumber daya, atau tidak tahu bagaimana caranya, itu akan mencoba untuk memecahkan kode sumber daya menggunakan sumber daya TMPL (template) yang sesuai jika ada. Jika tidak ada TMPL yang sesuai, TMPL korup, atau TMPL tidak dapat memecahkan kode sumber daya, Resource_dasm akan menghasilkan data mentah sumber daya sebagai gantinya.
Sebagian besar implementasi decoder di Resource_dasm didasarkan pada perangkat lunak yang ada dengan rekayasa terbalik dan mencakar melalui DREG dokumentasi lama, sehingga beberapa jenis sumber daya yang lebih jarang mungkin belum berfungsi. Namun, saya ingin proyek ini selengkap mungkin, jadi jika Anda memiliki sumber daya yang menurut Anda harus didekodasikan tetapi sumber daya_dasm tidak dapat memecahkan kode, kirimkan kepada saya (mungkin dengan melampirkan masalah gitub) dan saya akan mencoba yang terbaik untuk membuat sumber daya_dasm memahaminya.
Resource_dasm secara transparan mendekompresi sumber daya yang ditandai oleh manajer sumber daya sebagai terkompresi.
Skema Kompresi Manajer Sumber Daya tidak pernah secara resmi didokumentasikan oleh Apple atau diumumkan kepada publik, sehingga implementasi dekompresor ini didasarkan pada resediting rekayasa balik dan kode Mac OS klasik lainnya. Singkatnya, sumber daya didekompresi dengan mengeksekusi kode 68K atau PowerPC dari sumber daya DCMP atau NCMP, yang terlihat pada runtime dalam rantai file sumber daya terbuka seperti kebanyakan sumber daya lainnya. (Dalam praktiknya, DCMP/NCMP yang relevan biasanya terkandung dalam file yang sama dengan sumber daya terkompresi atau dalam file sistem.) Ada dua format sumber daya terkompresi yang berbeda dan dua format yang sesuai dari 68K dekompresor; Resource_dasm mengimplementasikan dukungan untuk kedua format.
Resource_dasm berisi implementasi asli dari keempat dekompresor yang dibangun ke dalam file sistem Mac OS. Secara khusus:
Resource_dasm memiliki emulator 68K dan PowerPC bawaan untuk menjalankan dekompresor non-default. Emulator ini juga dapat menjalankan dekompresor default, yang disertakan dengan Resource_dasm. Status dekompresor yang ditiru saat ini:
Mungkin ada dekompresor lain di luar sana yang belum pernah saya lihat, yang mungkin tidak berhasil. Jika Anda melihat "Peringatan: Gagal mendekompresi sumber daya" saat menggunakan Resource_dasm, silakan buat masalah GitHub dan unggah sumber daya terkompresi yang diekspor (file .bin) yang menyebabkan kegagalan, dan semua sumber daya DCMP dan NCMP dari file sumber yang sama.
Jalankan sudo make install untuk menyalin file header dan pustaka ke jalur yang relevan setelah membangun. Setelah instalasi, Anda dapat #include <resource_file/IndexFormats/ResourceFork.hh> (misalnya) dan tautkan dengan -lresource_file . Tidak ada dokumentasi untuk perpustakaan ini di luar apa yang tertulis di file header.
Perpustakaan berisi fungsi dan kelas yang berguna berikut:
Menggunakan M68Kdasm cukup mudah. Jalankan m68kdasm --help untuk daftar lengkap opsi.
Saat ini M68Kdasm dapat membongkar jenis data ini:
Beberapa format yang dapat dieksekusi ini mendukung arsitektur CPU yang tidak didukung oleh M68KDASM; Jika bertemu salah satunya, ia mencetak segmen kode sebagai segmen data sebagai gantinya.
M68KDASM juga dapat merakit perakitan PowerPC, X86, dan SH-4 menjadi biner mentah. ; Untuk PowerPC dan SH-4, ini bukan sintaks standar yang digunakan oleh sebagian besar alat lainnya.
M68KEXEC adalah emulator CPU dan debugger untuk arsitektur Motorola 68000, 32-bit PowerPC, dan X86. Saya sering menggunakannya untuk membantu memahami apa yang coba dilakukan oleh beberapa kode kuno, atau membandingkan perilaku kode yang telah saya transkripkan ke bahasa modern dengan perilaku kode asli. Untuk menggunakan kasus seperti ini, Anda umumnya ingin mengatur satu atau lebih daerah input yang berisi data yang Anda uji, dan satu atau lebih daerah output untuk ditulis oleh kode yang ditiru.
Mungkin ini paling baik dijelaskan dengan contoh. Perintah ini digunakan untuk mengeksekusi fungsi pembuatan konteks enkripsi dari Fhantasy Star Online Blue Burst, untuk membandingkannya dengan fungsi yang sama seperti yang diimplementasikan di 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
-opsi --mem mengatur wilayah input; Wilayah A0000000 berisi benih enkripsi (0x30 byte) dan wilayah A1000000 akan berisi konteks enkripsi yang dihasilkan ketika fungsi kembali. Opsi --load-pe memuat kode yang akan dieksekusi dan --pc memberi tahu emulator di mana harus memulai. --reg this Opsi --push mengatur argumen fungsi dan alamat pengembalian. Ini akan kembali ke FFFFFFFF, yang tidak memiliki memori yang dialokasikan, tetapi kami juga telah menetapkan --breakpoint di alamat yang akan menghentikan emulasi tepat sebelum pengecualian dilemparkan.
Karena kami menggunakan --trace , emulator mencetak keadaan register setelah setiap opcode, sehingga kami dapat melacak perilakunya dan membandingkannya dengan implementasi eksternal kami dari fungsi yang sama. Ketika fungsi mengembalikan dan memicu breakpoint, kami dapat menggunakan r A1000000 1048 di shell untuk melihat data yang dihasilkannya, dan juga membandingkannya dengan hasil fungsi eksternal kami.
render_bits berguna untuk menjawab pertanyaan "Mungkinkah data biner yang tampak acak ini sebenarnya adalah gambar atau array 2-D?" Berikan format warna dan beberapa data biner, dan itu akan menghasilkan file BMP penuh warna yang dapat Anda lihat dengan penampil gambar atau editor favorit Anda. Anda juga dapat memberikan tabel warna (file .bin yang diproduksi oleh Resource_dasm dari sumber daya clut) jika Anda berpikir inputnya diindeks data warna. Jika output terlihat seperti sampah, mainkan dengan lebar dan format warna sampai Anda mengetahui parameter yang tepat.
Jalankan render_bits tanpa opsi untuk informasi penggunaan.
render_text memungkinkan Anda melihat seperti apa teks aktual ketika diterjemahkan dengan font bitmap (sumber daya font/nfnt). Untuk menggunakannya, dapatkan file .bin dari sumber daya font atau nfnt (misalnya dengan sumber daya_dasm--save-raw). Kemudian jalankan render_text tanpa argumen untuk melihat cara menggunakannya.
Kadang-kadang dalam reverse-engineering Anda akan berakhir dengan gambar yang memiliki konten dan struktur yang tepat, tetapi warnanya benar-benar salah. Kemungkinannya diterjemahkan dengan meja warna yang salah; Untuk memperbaikinya, Anda dapat menggunakan Replikan_Clut untuk memetakan semua piksel gambar dari satu ruang warna ke ruang lainnya.
Jalankan Replace_Clut tanpa opsi untuk informasi penggunaan.
Beberapa game menyimpan gambar besar yang terpecah menjadi satu set tekstur yang lebih kecil; Assemble_Images dapat secara terprogram menggabungkannya ke dalam gambar besar tunggal AA lagi. Jalankan Assemble_Images tanpa opsi apa pun untuk melihat cara menggunakannya.
dupe_finder menemukan sumber daya duplikat dari jenis yang sama dalam satu atau beberapa file sumber daya.
Jalankan dupe_finder tanpa opsi untuk informasi penggunaan.
hypercard_dasm stack_file [output_dir] , atau hanya hypercard_dasm untuk melihat semua opsiicon_dearchiver archive_file [output_dir] membongkar ikon ke file .icns.vrfs_dump VRFS_file [output_dir]decode_data dapat mendekode dan mendekompresi beberapa format pengkodean khusus yang digunakan oleh berbagai game. Secara khusus:
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 dapat digunakan dengan sendirinya untuk mendekompresi data, atau dapat digunakan sebagai preprosesor eksternal melalui Resource_dasm untuk secara transparan mendekompresi beberapa format. Misalnya, untuk menggunakan decode_data untuk sumber daya macski, Anda dapat menjalankan perintah seperti resource_dasm --external-preprocessor="./decode_data --macski" input_filename ...
Render_sprite dapat membuat beberapa format sprite game khusus. Untuk beberapa format yang tercantum di bawah ini, Anda harus menyediakan sumber daya tabel warna selain sumber daya sprite. File .bin yang diproduksi oleh Resource_dasm dari sumber daya clut, pltt, atau ctbl sudah cukup; Biasanya ini dapat ditemukan di file yang sama dengan sumber daya sprite atau di aplikasi game. Jalankan render_sprite tanpa argumen untuk informasi penggunaan.
Format yang Didukung:
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 membongkar ikon dalam arsip ikon (oleh Alessandro Levi Montalcini) Archive to .icns. Jalankan tanpa opsi untuk informasi penggunaan.
blobbo_render <Blev-file.bin> <PMP8-128.bmp>ferazel_render di direktori dengan file data, atau ferazel_render --help untuk melihat semua opsi (ada banyak!)gamma_zee_render gamma_zee_application levels_filenameharry_render --clut-file=clut.bin , atau hanya harry_render untuk melihat semua opsi (ada banyak!)infotron_render di direktori info datafileslemmings_render --clut-file=clut.bin , atau lemmings_render --help untuk melihat semua opsimshines_render world_file [output_directory]lemmings_render sebagai untuk lemming asli, tetapi juga gunakan opsi --v2realmz_dasm global_data_dir [scenario_dir] out_dir (jika skenario_dir tidak diberikan, bongkar data yang dibagikan)