Cook, Serve, Hoomans! 3?!
Since then Cook, Serve, Delicious! 3?! was released and so I started making a mod for that, too, just in case Felicia or Ryon want to stream that again some day (and for fun).
I still need more pictures of hoomans (fans), so send them in! They don't need to be photos if you rather just want your avatar or a drawing to be used. In any case don't let your elbows stick out to the side so the picture will fit into one of the available slots. Help from someone who is better with Photoshop/GIMP would also be nice.
Download the latest release from the releases page
and double click
Cook-Serve-Hoomans-3.exe. It should automatically find
the installation path of Cook, Serve, Delicious! 3?! and patch the game archive.
If everything went well you should see something like this:
Just press enter and you are done.
To be on the safe side this patch creates a backup of the game archive (if none
exist already). The backup will be placed in the same folder as the game archive
data.win on Windows and
game.unx on Linux) and will be called
data.win.backup on Windows and
game.unx.backup on Linux. If you want to
remove the patch simply delete
game.unx and rename the backup file.
Under Windows you might need to disable hiding of file name extensions in order
to be able to rename that file.
Another way to undo the mod is simply to verify the game file integrity with Steam, which will detect the modification and re-download the game.
In case that didn't work
Cook-Serve-Hoomans-3.exe couldn't automatically find the game
archive file you can pass it manually. First find
data.win from your Cook,
Serve, Delicious! 3?! installation. Under Windows
data.win can usually be
found at one of these or similar locations:
C:\Program Files\Steam\steamapps\common\CookServeDelicious3\data.win C:\Program Files (x86)\Steam\steamapps\common\CookServeDelicious3\data.win
Under Linux it would be:
I don't have a Mac so I don't know where it's there and I can't provide a binary for Mac anyway. (I don't use Windows either, but it is easily possible to cross compile a Windows binary under Linux.)
Then simply drag and drop
If everything went well you should see the same dialog as above. Just press enter and you are done.
If you can handle the shell there are the binaries:
gmupdate.exe. Use the first to dump all compiled sprites and sound files from
a Game Maker archive into a directory. After you edited those files you can
use the second program to update the archive.
If you don't explicitely pass the game archive to these two programs they try to find it themselves and if you don't pass a directory to them they will use the current working directory. So just executing them without any arguments in the working directory of your texture files is enough.
gmdump.exe will overwrite any existing texture files without asking.
So pay attention on where you execute this program.
For Windows users that don't know/want to use the shell: Simple create a new
directory, then drag and drop this directory onto
gmdump.exe, change the images
that you want to change and delete the others, and finally drop the same directory
Build From Source
(For advanced users and software developers only.)
In case you want to build this patching tool yourself download the source and simply run these commands in the source folder:
make setup make -j`nproc`
If you want to cross-compile for another platform you can run one of these commands:
make TARGET=linux32 make TARGET=linux64 make TARGET=win32 make TARGET=win64
Always make sure that the folder
build/$TARGET exists before you run
You can do this simply by running
make TARGET=$TARGET setup.
Finally you can run the patch by typing:
How It Works
Cook, Serve, Delicious! 3?! uses Game Maker from YoYo Games. At first I didn't bother reverse engineering the archive file format of this game engine, but because the file size of the replacement sprite got bigger than the file size of the original I had to reverse engineer at least a bit so I could rewrite the archive properly (instead of just overwriting the proportion of the archive containing the sprite).
This program understands the overall structure of Game Maker archives, the detailed structure of the TXTR and AUDO sections, and some parts of the SPRT and TPAG sections. TXTR and AUDO are the last two sections in the archive, so when the TXTR section needs resizing absolute offsets in this section and the following section (AUDO) need to be adjusted. There don't seem to be any offsets to parts of those sections in other places.
The SPRT and TPAG sections contain the coordinates of the sprites inside of the textures. During compilation this information is used to generate the new texture files and during patching this is used to verify that the patched game archive is compatible with the textures that will be written into the game archive.
All I know about this file format is documented in fileformat.md. Note that this file format differs from Cook, Serve, Delicious! 1 in some ways, so see also: https://github.com/panzi/cook-serve-hoomans/blob/master/fileformat.md
I don't know what will happen when there is a game update. Will the updater
corrupt the archive, bail because the file isn't what it expects it to be or
simply revert the patch? Your guess is as good as mine. In any case this program
data.win.backup file which you can use in case the game stops
working. Just remove
data.win and rename
Because Felicia uses Windows and one cannot assume the availability of any sane scripting language (like Python) on an arbitrary Windows installation I wrote this patch as a self contained C program. Cross compiling simple C/C++ programs for Windows under Linux is easy.
However, it is very very cumbersome to cross compile stuff for Mac under Linux (the setup still requires access to a Mac and an Apple developer account), so I can't provide a Mac binary. I could rewrite everything in Python (Mac, just like most Linux distributions, actually comes with Python pre-installed), but I only do this if there is any demand for it.