
このプロジェクトには、古典的なMac OSアプリケーションとゲームをリバースエンジニアリングするための複数のツールが含まれています。
このプロジェクトのツールは次のとおりです。
apt-get install zlibg1-devができます。)cmake . 、次にmake 。このプロジェクトは、MacOSとLinuxの十分に最近のバージョンに適切に構築されるはずです。
Resource_Dasmは、古典的なMac OSリソースフォークの分解者です。ファイルのリソースフォークからリソースを抽出し、多くの古典的なMac OSリソース形式(画像、サウンド、テキストなど)を最新の形式に変換します。
例:
特定のファイルからすべてのリソースをエクスポートして最新の形式に変換します(出力は<filename> .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 Archiveからすべてのリソースをエクスポート: ./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
これはすべてResource_Dasmができるとは限りません。すべてのオプションを完全に説明するために、引数なしでそれを実行します(またはsrc/resource_dasm.ccのprint_usage()を見てください)。
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は代わりにリソースのRAWデータを生成します。
Resource_DASMのデコーダー実装のほとんどは、既存のソフトウェアのリバースエンジニアリングと、古いドキュメントの削除を介した浸漬に基づいているため、一部の種類のリソースはまだ機能しない可能性があります。ただし、このプロジェクトを可能な限り完全にしたいので、デコード可能なリソースがあるが、Resource_Dasmがそれをデコードできないと思う場合は、(おそらくGitHubの問題に添付することで)私に送ってください。
Resource_DASMは、リソースマネージャーが圧縮されたとマークされたリソースを透過的に減圧します。
リソースマネージャーの圧縮スキームは、Appleによって公式に文書化されたり、公開されたりすることはなかったため、これらの減圧装置の実装は、リバースエンジニアリングReseditおよびその他の古典的なMac OSコードに基づいています。要約すると、DCMPまたはNCMPリソースから68KまたはPowerPCコードを実行することにより、リソースが減圧されます。これは、他のほとんどのリソースと同様に、オープンリソースファイルのチェーンで実行時に調べられます。 (実際には、関連するDCMP/NCMPは通常、圧縮リソースと同じファイルまたはシステムファイルに含まれています。)圧縮リソースの2つの異なる形式と、68K減圧装置の2つの対応する形式があります。 Resource_Dasmは、両方の形式のサポートを実装します。
Resource_DASMには、Mac OSシステムファイルに組み込まれた4つの減圧器すべてのネイティブ実装が含まれています。具体的には:
Resource_Dasmには、68KとPowerPCエミュレーターが組み込まれており、非デフォルト減圧装置を実行します。これらのエミュレーターは、resource_dasmに含まれるデフォルトの減圧器を実行することもできます。エミュレートされた分解器の現在のステータス:
私が見たことのない他の減圧器がそこにいるかもしれませんが、それはうまくいかないかもしれません。 Resource_Dasmを使用して「警告:リソースを解凍できなかった」が表示された場合は、GitHubの問題を作成し、障害を引き起こすエクスポートされた圧縮リソース(.binファイル)、および同じソースファイルからすべてのDCMPおよびNCMPリソースをアップロードしてください。
sudo make install 、構築後にヘッダーファイルとライブラリを関連するパスにコピーします。インストール後、 #include <resource_file/IndexFormats/ResourceFork.hh> (たとえば)を使用して、 -lresource_fileとリンクできます。ヘッダーファイルに書かれているものを超えて、このライブラリのドキュメントはありません。
ライブラリには、次の有用な機能とクラスが含まれています。
M68KDASMを使用することはかなり簡単です。 m68kdasm --helpオプションの完全なリストを得るためにヘルプ。
現在、M68KDASMはこれらのタイプのデータを分解できます。
これらの実行可能な形式の一部は、M68KDASMがサポートしていないCPUアーキテクチャをサポートしています。これらのいずれかに遭遇すると、代わりにデータセグメントとしてコードセグメントを印刷します。
M68KDASMは、PowerPC、X86、およびSH-4アセンブリをRAWバイナリに組み立てることもできます。 (M68Kテキストの組み立てをバイナリにすることはサポートしていませんが、これは将来実装されます。)各アーキテクチャの予想入力構文は、分解構文と一致します。 PowerPCとSH-4の場合、これは他のほとんどのツールで使用される標準的な構文ではありません。
M68Kexecは、Motorola 68000、32ビットPowerPC、およびX86アーキテクチャのCPUエミュレータおよびデバッガーです。いくつかの古風なコードが何をしようとしているかを理解したり、元のコードの動作で現代の言語に転写したコードの動作を比較するためによく使用します。このようなユースケースの場合、テストしているデータを含む1つ以上の入力領域を、および書くエミュレートコードの1つ以上の出力領域を設定する必要があります。
おそらく、これは例で最もよく説明されています。このコマンドは、Phantasy Star Online Blue Burstから暗号化コンテキスト生成関数を実行するために使用され、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
--memオプションは、入力領域を設定します。 A0000000領域には、暗号化シード(0x30バイト)が含まれており、A1000000領域には、関数が戻ると生成された暗号化コンテキストが含まれます。 --load-peオプションは実行されるコードをロードし、 --pcエミュレータにどこから起動するかを指示します。 (デフォルトでは、実行可能ファイルで定義されているエントリポイントで開始されます。ある場合は、代わりに特定の関数を呼び出したいと思います。) --regオプションは、 thisポインターをそのために割り当てた空間に設定します。 --pushオプションは、関数の引数と返信アドレスを設定します。メモリが割り当てられていないFFFFFFFFFに戻りますが、そのアドレスで--breakpoint設定して、例外がスローされる直前にエミュレーションを停止します。
--traceを使用して以来、エミュレータはすべてのオペコードの後にレジスタの状態を印刷するため、その動作を追跡し、同じ関数の外部実装と比較できます。関数が戻ってきてブレークポイントをトリガーすると、シェルでr A1000000 1048使用して生成したデータを表示し、それを外部関数の結果と比較できます。
render_bitsは、「このランダムに見えるバイナリデータは、実際には画像または2D配列になるのでしょうか?」という質問に答えるのに役立ちます。カラー形式といくつかのバイナリデータを指定すると、お気に入りの画像ビューアーまたはエディターで見ることができるフルカラーBMPファイルが生成されます。入力がインデックス付きカラーデータであると思われる場合は、カラーテーブル(Clut ResourceからResource_Dasmによって生成された.binファイル)を与えることもできます。出力がゴミのように見える場合は、適切なパラメーターがわかるまで、幅とカラー形式で遊んでください。
使用情報のオプションなしでrender_bitsを実行します。
render_textビットマップフォント(font/nfntリソース)でレンダリングされたときに実際のテキストがどのように見えるかを確認できます。それを使用するには、フォントまたはNFNTリソースから.binファイルを取得します(例:resource_dasm - save-raw)。次に、render_textを引用なしで実行して、使用方法を確認します。
リバースエンジニアリングの過程で、適切なコンテンツと構造を持つ画像になりますが、色は完全に間違っています。間違ったカラーテーブルでレンダリングされた可能性があります。これを修正するには、replace_clutを使用して、すべての画像のピクセルをあるカラースペースから別のカラースペースにマッピングできます。
使用情報のためのオプションなしでleffer_clutを実行します。
いくつかのゲームでは、大きな画像が小さなテクスチャのセットに分割されています。 assemble_imagesは、プログラムでそれらを再び単一の大きな画像に組み合わせることができます。 Assemble_imagesを使用して使用方法を確認するオプションなしで実行します。
dupe_finderは、1つまたは複数のリソースファイルに同じタイプの重複リソースを見つけます。
使用情報のオプションなしでdupe_finderを実行します。
hypercard_dasm stack_file [output_dir] 、またはすべてのオプションを確認するためにhypercard_dasmだけicon_dearchiver archive_file [output_dir]は、ICONを.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を介して外部プリプロセッサとして使用して、いくつかの形式を透過的に減圧することもできます。たとえば、Macskiリソースにdecode_dataを使用するには、 resource_dasm --external-preprocessor="./decode_data --macski" input_filename ...
render_spriteは、いくつかのカスタムゲームスプライト形式をレンダリングできます。以下にリストされているいくつかの形式の場合、Spriteリソースに加えてカラーテーブルリソースを提供する必要があります。 CLUT、PLTT、またはCTBLリソースからResource_DASMによって生成された.binファイルで十分です。通常、これらはスプライトリソースと同じファイルまたはゲームアプリケーションにあります。使用情報の引数なしで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は、Icon Archiver(Alessandro Levi Montalciniによる)のアイコンを.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 in the Info DataFilesディレクトリlemmings_render --clut-file=clut.bin 、またはlemmings_render --helpmshines_render world_file [output_directory]lemmings_render使用しますが、 --v2オプションも使用しますrealmz_dasm global_data_dir [scenario_dir] out_dir (sinario_dirが指定されていない場合、代わりに共有データを分解します)