
Dieses Projekt enthält mehrere Tools für umgekehrte Engineering Classic Mac OS-Anwendungen und -spiele.
Die Tools in diesem Projekt sind:
apt-get install zlibg1-dev .)cmake . , dann make .Dieses Projekt sollte auf ausreichend aktuellen Versionen von MacOS und Linux ordnungsgemäß aufbauen.
Resource_Dasm ist ein Disassembler für klassische Mac OS -Ressourcengabeln. Es extrahiert Ressourcen aus der Ressourcengabel jeder Datei und konvertiert viele klassische Mac OS -Ressourcenformate (Bilder, Geräusche, Text usw.) in moderne Formate.
Beispiele:
Exportieren Sie alle Ressourcen aus ./resource_dasm files/Tesserae bestimmten Datei und konvertieren sie in modern
Exportieren Sie alle Ressourcen aus allen Dateien in einem Ordner und schreiben Sie die Ausgabedateien in eine parallele Ordnerstruktur im aktuellen Verzeichnis: ./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
Exportieren Sie die Ressourcen einer PowerPC -Anwendung und zerlegen Sie ihren Code : ./resource_dasm "files/Adventures of Billy" ./billy.out ./m68kdasm --pef "files/Adventures of Billy" ./billy.out/dasm.txt
Exportieren Sie alle Ressourcen aus einem Mohawk-Archiv: ./resource_dasm files/Riven/Data/a_Data.MHK ./riven_data_a.out --index-format=mohawk
Aufgrund des Kopierens von Dateien über verschiedene Arten von Dateisystemen verfügen Sie möglicherweise über die Ressourcengabel einer Datei in der Datengabel einer separaten Datei. ./resource_dasm "windows/Realmz/Data Files/Portraits.rsf" ./portraits.out --data-fork exportieren
Erstellen Sie eine neue Ressourcendatei mit wenigen Text- und Kupplungsressourcen: ./resource_dasm --create --add-resource=TEXT:[email protected] --add-resource=TEXT:[email protected] --add-resource=clut:[email protected] output.rsrc
Fügen Sie einer vorhandenen Ressourcendatei eine Ressource hinzu: ./resource_dasm file.rsrc --add-resource=TEXT:[email protected] output.rsrc
Löschen Sie eine Ressource aus einer vorhandenen Ressourcendatei: ./resource_dasm file.rsrc --delete-resource=TEXT:128 output.rsrc
Dies kann nicht alles Ressourcen_Dasm. Führen Sie es ohne Argumente aus (oder schauen Sie sich print_usage() in SRC/RESOCKE_DASM.CC an, um eine vollständige Beschreibung aller Optionen zu erhalten.
Resource_Dasm kann diese Ressourcentypen konvertieren:
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.
Wenn Resource_Dasm eine Ressource nicht konvertiert oder nicht weiß, wie es vorhanden ist, wird versucht, die Ressource mithilfe der entsprechenden TMPL -Ressource (Template) zu dekodieren, wenn sie vorhanden ist. Wenn es kein geeignetes TMPL gibt, ist die TMPL beschädigt oder die TMPL kann die Ressource nicht dekodieren. Ressource_DASM wird stattdessen die Rohdaten der Ressource erzeugen.
Die meisten Decoder-Implementierungen in Resource_DASM basieren auf der umgekehrten Engineering vorhandener Software und der Pfoten durch die Dregs der alten Dokumentation, sodass einige seltenere Ressourcen-Arten wahrscheinlich noch nicht funktionieren werden. Ich möchte jedoch, dass dieses Projekt so vollständig wie möglich ist. Wenn Sie also eine Ressource haben, von der Sie glauben, dass sie dekodierbar sein sollte, aber Ressourcen_Dasm es nicht dekodieren kann, senden Sie es mir an mich (vielleicht durch Anhängen an ein Github -Problem) und ich werde mein Bestes geben, um das Ressourcen_Dasm zu machen.
Ressourcen_dasm transparent dekomprimiert Ressourcen, die vom Ressourcenmanager als komprimiert gekennzeichnet sind.
Das Komprimierungsschema des Ressourcenmanagers wurde nie offiziell von Apple dokumentiert oder öffentlich gemacht, sodass die Implementierung dieser Dekompressoren auf Reverse-Engineering Resedit und anderen klassischen Mac OS-Code basiert. Zusammenfassend werden die Ressourcen durch Ausführen von 68K- oder PowerPC -Code aus einer DCMP- oder NCMP -Ressource dekomprimiert, die in der Kette offener Ressourcendateien wie die meisten anderen Ressourcen nach der Laufzeit nachgeschlagen wird. (In der Praxis ist die relevante DCMP/NCMP normalerweise entweder in derselben Datei wie die komprimierte Ressource oder in der Systemdatei enthalten.) Es gibt zwei verschiedene Formate komprimierter Ressourcen und zwei entsprechende Formate von 68K -Dekompressoren; Ressourcen_Dasm implementiert Unterstützung für beide Formate.
Resource_DASM enthält native Implementierungen aller vier in die Mac OS -Systemdatei integrierten Dekompressoren. Speziell:
Ressourcen_Dasm verfügt über integrierte 68K- und PowerPC-Emulatoren, um Nicht-Default-Dekompressoren auszuführen. Diese Emulatoren können auch die Standard -Dekompressoren ausführen, die in Resource_DASM enthalten sind. Aktueller Status von emulierten Dekompressoren:
Möglicherweise gibt es andere Dekompressoren, die ich nicht gesehen habe, was möglicherweise nicht funktioniert. Wenn Sie "Warnung: In der Verwendung von Ressourcen nicht dekomprimieren" sehen, erstellen Sie bitte ein Github -Problem und laden Sie die exportierte komprimierte Ressource (.bin -Datei) und alle DCMP- und NCMP -Ressourcen aus derselben Quelldatei hoch.
Führen Sie sudo make install um die Header -Dateien und die Bibliothek nach dem Erstellen auf die entsprechenden Pfade zu kopieren. Nach der Installation können Sie #include <resource_file/IndexFormats/ResourceFork.hh> (zum Beispiel) und mit -lresource_file verlinken. Es gibt keine Dokumentation für diese Bibliothek über das, was in den Header -Dateien geschrieben wurde.
Die Bibliothek enthält die folgenden nützlichen Funktionen und Klassen:
Die Verwendung von M68KDASM ist ziemlich einfach. Führen Sie m68kdasm --help für eine vollständige Liste von Optionen.
Derzeit kann M68KDASM diese Art von Daten zerlegen:
Einige dieser ausführbaren Formate unterstützen CPU -Architekturen, die M68KDASM nicht unterstützen. Wenn es auf eine davon trifft, druckt es stattdessen die Codesegmente als Datensegmente.
M68KDASM kann auch PowerPC-, X86- und SH-4-Montage in rohen Binäranlagen zusammenstellen. (Es wird nicht unterstützt, M68K -Text in Binärzumachen zusammenzustellen, dies wird jedoch in Zukunft implementiert.) Die erwartete Eingabesyntax für jede Architektur entspricht der Demontage -Syntax. Für PowerPC und SH-4 ist dies nicht die Standardsyntax, die von den meisten anderen Tools verwendet wird.
M68KEXEC ist ein CPU-Emulator und Debugger für die Architekturen Motorola 68000, 32-Bit Powerpc und X86. Ich benutze es oft, um zu verstehen, was ein archaischer Code versucht, oder um das Verhalten von Code zu vergleichen, das ich mit dem Verhalten des ursprünglichen Code in eine moderne Sprache transkribiert habe. Für Anwendungsfälle wie diese möchten Sie im Allgemeinen eine oder mehrere Eingabebereiche einrichten, die die Daten enthalten, mit denen Sie testen, und eine oder mehrere Ausgabebereiche, an die der emulierte Code geschrieben wird.
Vielleicht wird dies am besten durch Beispiel erklärt. Dieser Befehl wird verwendet, um die Funktion der Verschlüsselungskontextgenerierung von Phantasy Star Online Blue Burst auszuführen, um sie mit derselben Funktion zu vergleichen, die in Newsserv implementiert ist:
./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
Die --mem -Optionen richten die Eingabebereiche ein. Die Region A0000000 enthält den Verschlüsselungssamen (0x30 Bytes) und die A1000000 -Region enthält den generierten Verschlüsselungskontext, wenn die Funktion zurückgibt. Die Option --load-pe lädt den zu ausgeführten Code, und --pc teilt dem Emulator mit, wo er starten soll. (Standardmäßig beginnt es am Einstiegspunkt, der in der ausführbaren Datei definiert ist, falls vorhanden. Hier möchten wir stattdessen eine bestimmte Funktion aufrufen.) Die Option --reg legt den this in der Funktion auf den Speicherplatz fest, den wir dafür zugewiesen haben. Die --push -Optionen setzen die Argumente der Funktion und die Rückgabeadresse. Es wird zu FFFFFFFF zurückkehren, das keinen Speicher zugewiesen hat, aber wir haben auch einen --breakpoint an diese Adresse gesetzt, die die Emulation kurz vor einer Ausnahme aufhört.
Seit wir verwendet --trace , druckt der Emulator nach jedem Opcode den Zustand der Register, sodass wir durch sein Verhalten nachverfolgen und mit unserer externen Implementierung derselben Funktion vergleichen können. Wenn die Funktion zurückgibt und den Haltepunkt auslöst, können wir r A1000000 1048 in der Shell verwenden, um die von ihnen generierten Daten anzuzeigen und diese mit dem Ergebnis unserer externen Funktion zu vergleichen.
Render_bits ist nützlich, um die Frage zu beantworten: "Könnte diese zufälligen Binärdaten tatsächlich ein Bild oder ein 2-D-Array sein?" Geben Sie ihm ein Farbformat und einige Binärdaten an, und es erzeugt eine BMP-Datei in voller Farbe, die Sie mit Ihrem bevorzugten Image-Viewer oder Editor betrachten können. Sie können auch eine Farbtabelle angeben (.Bin -Datei, die von einer Kupplungsressource von ressourcen_dasm erstellt wurde, wenn Sie der Meinung sind, dass die Eingabe indizierte Farbdaten ist. Wenn die Ausgabe wie Müll aussieht, spielen Sie mit der Breite und dem Farbformat herum, bis Sie die richtigen Parameter herausfinden.
Führen Sie Render_bits ohne Optionen für Verwendungsinformationen aus.
Mit Render_Text können Sie sehen, wie der tatsächliche Text aussehen würde, wenn Sie mit einer Bitmap -Schriftart (Schriftart/NFNT -Ressource) gerendert werden. Um es zu verwenden, holen Sie sich eine .bin-Datei aus einer Schriftressource oder einer NFNT-Ressource (z. Führen Sie dann Render_text ohne Argumente aus, um zu sehen, wie man es benutzt.
Manchmal werden Sie im Verlauf des Rückwärtsguts ein Bild mit dem richtigen Inhalt und der richtigen Struktur haben, aber die Farben sind völlig falsch. Wahrscheinlich wurde es mit dem falschen Farbtisch gerendert; Um dies zu beheben, können Sie Ersatz_Clut verwenden, um alle Pixel des Bildes von einem Farbraum in einen anderen zuzuordnen.
Führen Sie ersetztes_clut ohne Optionen für Verwendungsinformationen aus.
Einige Spiele speichern große Bilder in einer Reihe kleinerer Texturen. Assemble_images kann sie programmgesteuert zu einem einzelnen großen Bild kombinieren. Führen Sie Assemble_images ohne Optionen aus, um zu sehen, wie Sie es verwenden.
Dupe_Finder findet in einer oder mehreren Ressourcendateien doppelte Ressourcen desselben Typs.
Führen Sie DUPE_Finder ohne Optionen für Verwendungsinformationen aus.
hypercard_dasm stack_file [output_dir] oder nur hypercard_dasm , um alle Optionen zu sehenicon_dearchiver archive_file [output_dir] packt die Symbole an .icns -Dateien aus.vrfs_dump VRFS_file [output_dir]decode_data kann einige benutzerdefinierte Codierungsformate dekodieren und dekomprimieren, die von verschiedenen Spielen verwendet werden. Speziell:
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 kann selbst verwendet werden, um Daten zu dekomprimieren oder als externes Präprozessor über Ressource_DASM zur transparenten Dekomprimierung einiger Formate verwendet werden. Um beispielsweise Decode_Data für Macski-Ressourcen zu verwenden, können Sie einen Befehl wie resource_dasm --external-preprocessor="./decode_data --macski" input_filename ...
Render_sprite kann mehrere benutzerdefinierte Spiele -Sprite -Formate rendern. Für einige unten aufgeführte Formate müssen Sie zusätzlich zur Sprite -Ressource eine Farbtabellenressource bereitstellen. Eine von einer Kupplung, PLTT oder CTBL -Ressource erzeugte Datei, die von Ressourcen_dasm erstellt wurde. Normalerweise finden Sie diese in derselben Datei wie die Sprite -Ressourcen oder in der Spielanwendung. Führen Sie Render_sprite ohne Argumente für Verwendungsinformationen aus.
Unterstützte Formate:
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 packt die Symbole in einem Archiv (von Alessandro Levi Montalcini) in einem ICNS -Archiv (Alessandro Levi Montalcini) aus. Führen Sie es ohne Optionen für Verwendungsinformationen aus.
blobbo_render <Blev-file.bin> <PMP8-128.bmp> Datei und führenferazel_render im Verzeichnis mit den Datendateien oder ferazel_render --help um alle Optionen zu sehen (es gibt viele!)gamma_zee_render gamma_zee_application levels_filenameharry_render --clut-file=clut.bin oder nur harry_render , um alle Optionen zu sehen (es gibt viele!)infotron_render im Verzeichnis info DataFileslemmings_render --clut-file=clut.bin oder lemmings_render --help , um alle Optionen zu sehenmshines_render world_file [output_directory]lemmings_render wie für Original -Lemmings, aber auch die Option --v2realmz_dasm global_data_dir [scenario_dir] out_dir (wenn szenario_dir nicht angegeben ist, zerlegt stattdessen die gemeinsam genutzten Daten)