Users browsing this thread: 1 Guest(s)
[Pizza Syndicate] Ripping sprites from *.res binaries
#1
I'm currently trying to get the game files (sprites, audio, etc)  from a game I enjoyed in the past: Pizza Syndicate (Or Fast Food Tycoon)

The installation dir yields a directory named "resources" with
Code:
animation.res  isodaten.res  language.res  menues.res  mission.res  movie.res  music.res  sfx.res  speech.res  sprites.res
files - bingo!

I opened them with a hex editor and found data such as here:

https://pastebin.com/aTTKEgev

and later here:

https://pastebin.com/DEnZMBCY

I uploaded the whole file to here: https://we.tl/t-tvDk8SV769

Now I'm very inexperienced in ripping sprites. but it looks like the filepaths visible in the beginning are mapped to the files appearing later in the file.

for example at offset 000E DF08 we see the file signature of jpeg: which is `FF D8 FF E0` . when extracting the file we see an image that correlates with the first jpeg of the list in the beginning  E:\pizza2\Sprites\Characterinfo\aush_m.jpg (offset: 516D).

this leads me to the conclusion that the filepaths in the beginning correlate with the data after the list - in that way that all files are appended at the end of the list in the order of the filepaths.

now I want to automatically extract them (I ahve written a python script for that) but I dont know when a new file starts and ends. with JPEG its easy, because I know the file signature and since they are all in sequence I can extract them all. but what with the other file formats? for example SPR (which should be spritesheet data, dont know yet with which application i can open it).

Thus I need to know how big they are, or at least know their file signatures. I think that this information, as well as the offset might be encoded in between the filepaths.

Lets look at the first 150 bytes of the file:
Code:
0000:0000 | CC 64 02 00  60 0C 00 00  53 6F 66 74  77 61 72 65 | Ìd..`...Software
0000:0010 | 32 30 30 30  45 3A 5C 70  69 7A 7A 61  32 5C 53 70 | 2000E:\pizza2\Sp
0000:0020 | 72 69 74 65  73 5C 43 68  61 72 61 63  74 65 72 5C | rites\Character\
0000:0030 | 46 41 31 5F  30 5F 30 31  2E 73 70 72  00 41 04 00 | FA1_0_01.spr.A..
0000:0040 | 00 00 00 00  00 45 3A 5C  70 69 7A 7A  61 32 5C 53 | .....E:\pizza2\S
0000:0050 | 70 72 69 74  65 73 5C 43  68 61 72 61  63 74 65 72 | prites\Character
0000:0060 | 5C 46 41 31  5F 30 5F 30  32 2E 73 70  72 00 2A 04 | \FA1_0_02.spr.*.
0000:0070 | 00 00 41 04  00 00 45 3A  5C 70 69 7A  7A 61 32 5C | ..A...E:\pizza2\
0000:0080 | 53 70 72 69  74 65 73 5C  43 68 61 72  61 63 74 65 | Sprites\Characte
0000:0090 | 72 5C 46 41  31 5F 30 5F  30 33 2E 73  70 72 00 20 | r\FA1_0_03.spr.
0000:00A0 | 04 00 00 6B  08 00 00 45  3A 5C 70 69  7A 7A 61 32 | ...k...E:\pizza2

there is indeed some data inbetween the first two filepaths for example:
`00 41 04 00 00 00 00 00 00`
or between the next two filepaths:
`00 2A 04 00 00 41 04 00 00`

I thought that this data could be the offset and/or size of each file(path) and its data.

Because the game somehow needs instructions on how to retrieve the files I believe that there is somehow information encoded on how to retrieve the data of the files.

I dont know whether the info is presented as BE or LE, whether its offset information or size information, but Im sure someone more experienced than I sees this at a first glance.

A hint into the right direction would be superb
Reply
Thanked by:


Messages In This Thread
[Pizza Syndicate] Ripping sprites from *.res binaries - by InsOp - 12-18-2022, 10:43 AM

Forum Jump: