
이 프로젝트에는 클래식 한 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 아카이브에서 모든 리소스를 내보내십시오 : ./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
몇 가지 텍스트 및 Clut 리소스가 포함 된 새 리소스 파일 생성 : ./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 (Template) 리소스가 존재하는 경우 리소스를 디코딩하려고 시도합니다. 적절한 TMPL이 없으면 TMPL이 손상되거나 TMPL이 리소스를 해독 할 수 없으며 Resource_dasm은 리소스의 원시 데이터를 대신 생성합니다.
Resource_dasm의 대부분의 디코더 구현은 기존 소프트웨어를 역전시키고 오래된 문서의 드레그를 Pawing하는 것을 기반으로하므로 일부 유형의 리소스는 아직 작동하지 않을 것입니다. 그러나이 프로젝트가 가능한 한 완전하기를 원하기 때문에 디코딩 가능해야한다고 생각하는 리소스가 있지만 리소스 _dasm을 해독 할 수 없다고 생각하면 (Github 문제에 첨부하여) 자원을 이해하기 위해 최선을 다할 것입니다.
Resource_Dasm은 자원 관리자가 압축 한 자원을 투명하게 압축 해제합니다.
Resource Manager 압축 체계는 Apple에 의해 공식적으로 문서화되지 않았거나 공개적으로 공개되지 않았으므로 이러한 감압제의 구현은 역 엔지니어링 재조정 및 기타 클래식 Mac OS 코드를 기반으로합니다. 요약하면, 자원은 DCMP 또는 NCMP 리소스에서 68K 또는 PowerPC 코드를 실행하여 압축을 압축합니다.이 자료는 대부분의 다른 리소스와 마찬가지로 오픈 리소스 파일의 체인에서 런타임을 찾습니다. (실제로, 관련 DCMP/NCMP는 일반적으로 압축 자원과 동일한 파일 또는 시스템 파일에 포함된다.) 압축 된 자원의 두 가지 형식과 68K 감압제의 두 가지 형식이있다. Resource_dasm은 두 형식 모두를 지원합니다.
Resource_dasm에는 Mac OS 시스템 파일에 내장 된 4 개의 압축 압력기의 기본 구현이 포함되어 있습니다. 구체적으로:
Resource_dasm에는 68K 및 PowerPC 에뮬레이터가 내장되어있어 비 디폴트 압축 압력기를 실행합니다. 이 에뮬레이터는 또한 Resource_dasm에 포함 된 기본 압축 압력기를 실행할 수 있습니다. 에뮬레이션 된 감압제의 현재 상태 :
내가 보지 못한 다른 감압제가있을 수 있습니다. Resource_dasm을 사용할 때 "경고 : 자원을 압축하지 못한"경우 GitHub 문제를 만들고 내보내는 압축 자원 (.Bin 파일)을 업로드하여 실패를 일으킨다.
실행 sudo make install 헤더 파일과 라이브러리를 구축 한 후 관련 경로에 복사하십시오. 설치 후 #include <resource_file/IndexFormats/ResourceFork.hh> (예 : -lresource_file 과 링크 할 수 있습니다. 헤더 파일에 작성된 내용을 넘어서이 라이브러리에 대한 문서는 없습니다.
라이브러리에는 다음과 같은 유용한 기능과 클래스가 포함되어 있습니다.
m68kdasm을 사용하는 것은 매우 간단합니다. 전체 옵션 목록을 보려면 m68kdasm --help 실행하십시오.
현재 M68KDASM은 이러한 유형의 데이터를 분해 할 수 있습니다.
이러한 실행 가능한 형식 중 일부는 M68KDASM이 지원하지 않는 CPU 아키텍처를 지원합니다. 이 중 하나를 만나면 코드 세그먼트를 대신 데이터 세그먼트로 인쇄합니다.
M68KDASM은 또한 PowerPC, X86 및 SH-4 어셈블리를 생 바이너리로 조립할 수 있습니다. (M68K 텍스트를 이진으로 조립하는 것은 지원하지 않지만 향후에 구현 될 것입니다.) 각 아키텍처에 대한 예상 입력 구문은 분해 구문과 일치합니다. PowerPC 및 SH-4의 경우 대부분의 다른 도구에서 사용하는 표준 구문이 아닙니다.
M68KEXEC는 Motorola 68000, 32 비트 PowerPC 및 X86 아키텍처의 CPU 에뮬레이터 및 디버거입니다. 나는 종종 그것을 사용하여 일부 고풍 코드가 무엇을하려고하는지 이해하거나 원래 코드의 동작과 현대 언어로 전사 한 코드의 행동을 비교하는 데 도움이됩니다. 이와 같은 사용 사례의 경우 일반적으로 테스트중인 데이터가 포함 된 하나 이상의 입력 영역과 에뮬레이션 된 코드가 작성하기 위해 하나 이상의 출력 영역을 설정하려고합니다.
아마도 이것은 예에 의해 가장 잘 설명 될 것입니다. 이 명령은 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 에뮬레이터를 어디에서 시작 해야하는지 알려줍니다. (기본적으로 실행 파일에 정의 된 EntryPoint에서 시작됩니다. 주어진 경우, 여기에서 특정 함수를 대신 호출하려고합니다.) --reg 옵션은 기능 this 포인터를 우리가 할당 한 공간으로 설정합니다. --push 옵션은 함수의 인수와 반환 주소를 설정합니다. 할당 된 메모리가없는 ffffffff로 돌아갈 것이지만, 우리는 또한 주소에서 --breakpoint 설정하여 예외가 발생하기 직전에 에뮬레이션을 중지합니다.
우리 --trace 사용했기 때문에 에뮬레이터는 모든 opcode 후 레지스터 상태를 인쇄하므로 동작을 추적하고 동일한 기능의 외부 구현과 비교할 수 있습니다. 함수가 중단 점을 반환하고 트리거 할 때 쉘에서 r A1000000 1048 사용하여 생성 된 데이터를보고 외부 기능 결과와 비교할 수 있습니다.
Render_Bits는 "이 임의의 바이너리 데이터가 실제로 이미지 또는 2 차원 배열 일 수 있습니까?"라는 질문에 대답하는 데 유용합니다. 색상 형식과 일부 이진 데이터를 제공하면 좋아하는 이미지 뷰어 또는 편집기로 볼 수있는 풀 컬러 BMP 파일을 생성합니다. 입력이 색인화 된 색상 데이터라고 생각되면 컬러 테이블 (Clut Resource에서 Resource_dasm에 의해 생성 된 .Bin 파일)을 제공 할 수도 있습니다. 출력이 쓰레기처럼 보이면 올바른 매개 변수를 알아낼 때까지 너비와 색상 형식으로 놀아주십시오.
사용 정보에 대한 옵션없이 Render_Bits를 실행하십시오.
Render_Text를 사용하면 비트 맵 글꼴 (font/nfnt resource)으로 렌더링 할 때 실제 텍스트가 어떻게 보일지 알 수 있습니다. 이를 사용하려면 글꼴 또는 NFNT 리소스에서 .bin 파일을 가져옵니다 (예 : Resource_dasm-Save-Raw). 그런 다음 인수없이 Render_Text를 실행하여 사용 방법을 확인하십시오.
때로는 리버스 엔지니어링 과정에서 올바른 내용과 구조가있는 이미지로 끝나지 만 색상은 완전히 잘못되었습니다. 잘못된 컬러 테이블로 렌더링되었을 가능성이 있습니다. 이 문제를 해결하려면 Replace_Clut을 사용하여 한 색상 공간에서 다른 색상 공간에서 모든 이미지의 모든 픽셀을 매핑 할 수 있습니다.
사용 정보에 대한 옵션없이 REPLEC를 실행하십시오.
일부 게임은 큰 이미지를 작은 텍스처 세트로 나눕니다. Assemble_Images는 프로그래밍 방식으로 AA 단일 큰 이미지로 다시 결합 할 수 있습니다. 사용 방법을 확인할 수있는 옵션없이 Assemble_Images를 실행하십시오.
dupe_finder는 하나 또는 여러 리소스 파일에서 동일한 유형의 중복 리소스를 찾습니다.
사용 정보에 대한 옵션없이 dupe_finder를 실행하십시오.
hypercard_dasm stack_file [output_dir] 또는 모든 옵션을 보려면 hypercard_dasmicon_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을 통해 외부 전처리 자로 사용하여 일부 형식을 투명하게 압축 할 수 있습니다. 예를 들어, Macski Resources에 Decode_data를 사용하려면 resource_dasm --external-preprocessor="./decode_data --macski" input_filename ...
Render_Sprite는 여러 맞춤형 게임 스프라이트 형식을 렌더링 할 수 있습니다. 아래 나열된 일부 형식의 경우 Sprite 리소스 외에 컬러 테이블 리소스를 제공해야합니다. clut, pltt 또는 ctbl resource에서 Resource_dasm에 의해 생성 된 .bin 파일은 충분합니다. 일반적으로 Sprite Resources와 동일한 파일 또는 게임 응용 프로그램에서 찾을 수 있습니다. 사용 정보에 대한 인수가없는 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는 아이콘 아카이버 (Alessandro Levi Montalcini) 아카이브에서 아이콘을 풀어줍니다. 사용 정보 옵션없이 실행하십시오.
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_renderlemmings_render --clut-file=clut.bin 또는 lemmings_render --helpmshines_render world_file [output_directory]lemmings_render 원본 Lemmings에서 사용하지만 --v2 옵션도 사용하십시오.realmz_dasm global_data_dir [scenario_dir] out_dir (시나리오 _dir가 제공되지 않으면 공유 데이터를 대신 분해 할 수 있습니다).