Finger info for flibitijibibo@icculus.org...


Cthulhu Saves the World for Linux/macOS

Zeboyd announced a sequel to CSTW! It's called Cthulhu Saves Christmas:

Announcement

So in the spirit of the Christmas season that is right at this very moment, I have decided to release the Linux/macOS port that has yet to see the light of day.

Here are the archives:

So what do you do with these files? And how the hell am I distributing the game like this?

The trick is that the game isn't in these files. You have to provide that yourself. How you do that is up to you. It's available on Steam if you want it from there.

From there it's relatively straightforward:

  1. Extract the version for your OS
  2. Copy 'CSTW.exe', 'CSTW.pdb', and 'Content' from the Windows version to the executable directory. On Linux it's the 'CSTW/' folder, on macOS it's 'CSTW.app/Contents/MacOS/'.
  3. Get the md5sum of 'Content/Movies/CSTW_intro2.wmv'. On macOS, the terminal command is md5.
  4. Extract CSTW_Xiph.zip, merging the Content folder with the one that already exists from copying the original game. The password is the md5sum from step 3!
  5. The game should now run! Run ./CSTW on Linux, open CSTW.app on macOS.

There was one caveat, mostly related to display settings. The Zeboyd XNA engine is very strange, unlike anything I've seen in other XNA games. Rather than prep the video settings and call ApplyChanges, the engine seems to use PreparingDeviceSettings exclusively, meaning settings are only loaded at program startup. There is a settings file, but it doesn't expose what you would expect. The display mode is stored as either 720p, 360p, or "9999x9999", which is the fullscreen setting. I can't exactly parse why things work the way they do, but for some odd reason fullscreen is dependent on the display settings, so I had to inject a quick block to force fullscreen when the display mode doesn't match the two hardcoded modes:

diff --git a/src/GraphicsDeviceManager.cs b/src/GraphicsDeviceManager.cs
index 34444c3..2bbc1b6 100644
--- a/src/GraphicsDeviceManager.cs
+++ b/src/GraphicsDeviceManager.cs
@@ -305,6 +305,15 @@ namespace Microsoft.Xna.Framework
                new PreparingDeviceSettingsEventArgs(gdi)
            );

+           bool modeOne =  (   gdi.PresentationParameters.BackBufferWidth == 1280 &&
+                               gdi.PresentationParameters.BackBufferHeight == 720  );
+           bool modeTwo =  (   gdi.PresentationParameters.BackBufferWidth == 640 &&
+                               gdi.PresentationParameters.BackBufferHeight == 360  );
+           if (!modeOne && !modeTwo)
+           {
+               gdi.PresentationParameters.IsFullScreen = true;
+           }
+
            // Reset!
            game.Window.BeginScreenDeviceChange(
                gdi.PresentationParameters.IsFullScreen

In case you're wondering, yes, this is the exact same port for Breath of Death VII and Penny Arcade 3/4. So this is basically four ports in one; the only thing really stopping this from being a neatly packaged in an out-of-the-box experience is that I... uh, don't have AppAdmin access. :shrug:

This is entirely unsupported, but try to enjoy it anyway!

Want an official Linux game?

I'm now working my way back to just making native Linux games, slowly but surely. I have my own hit list as always, but I'm always looking for more projects! Now's a really good time to hit me up while it's on my mind. Don't forget, whether you're an indie developer or an independent developer, there's a good chance I can accommodate your needs!

Love, flibit
flibitijibibo.com

Bill's Hat

Turn a minimal Fedora installation into a SteamOS box!

1. Write Fedora Workstation NetInstall ISO to a USB drive
2. Boot USB image, install Minimal configuration with standard partition layout matching SteamOS'
3. Set root password, create a user called 'steam', set a password for it
4. Reboot, log in as root
5. A whole bunch of commands:

dnf group install hardware-support
dnf install Xorg xorg-x11-drv-evdev libglvnd-egl vulkan-loader.x86_64 vulkan-loader.i686 lightdm flatpak NetworkManager-wifi kernel-modules-extra bluez
dnf config-manager --add-repo=https://negativo17.org/repos/fedora-steam.repo
dnf install steam steamos-compositor steamos-modeswitch-inhibitor.x86_64 steamos-modeswitch-inhibitor.i686
setsebool -P allow_execheap 1
systemctl enable sshd.service
systemctl enable lightdm.service
systemctl set-default graphical.target

6. Edit /etc/lightdm/lightdm.conf:

pam-service=lightdm-autologin
pam-autologin-service=lightdm-autologin
user-session=steamos
autologin-user=steam
autologin-session=steamos

7. Create /var/lib/AccountsService/users/steam:

[User]
Session=steamos
XSession=steamos
Icon=/home/steam/.face
SystemAccount=false

8. Reboot, should work now!

9. Additional steps for NVIDIA users:

dnf config-manager --add-repo=https://negativo17.org/repos/fedora-nvidia.repo
dnf install kernel-devel dkms-nvidia nvidia-driver-libs.x86_64 nvidia-driver-libs.i686
reboot # Should be using the NVIDIA driver now!

Bill's Hat TODO

Wait, a "plan"?

Well, this is a .plan file, so here's my TODO. Expect nothing from it, ever.

In Progress
    Proton Performance Analysis Documentation
    DK BONGO QUEST
        - 2.0.10 is out, reinvestigate multi-joystick device support
        - libusb hid.c for Windows

Waiting Room
    Codename FullCircle
        - Need some backend access first...
    Codename Swine
        - Waiting for content completion
    Codename CityVessel
        - Not even finished yet, whatever
    SDL_GetAudioDeviceSpec
        - Oh god I don't even know dude
    ScoreRush PC
        - Graphics, AppAdmin, strings for PC settings, blah blah blah
    Zeboyd Catalog
        - Possibly no source, really just need AppAdmin access tbh
    Codename SpinnyTokelau
        - Assessment coming up in September
    Codename FlyingFinger
        - A bunch of non-dev stuff happens first
    64-bit Panic
        - Checking on Waveform, They Bleed Pixels, Proteus, FP, Shogun
        - Shogun Steam needs a recompile of Ludosity (seriously)
        - Gotta rebuild all MojoSetup packages (F you Canonical)


When this .plan was written: 2019-07-31 13:55:03
.plan archives for this user are here (RSS here).
Powered by IcculusFinger v2.1.27
You could be playing Pringles for Genesis but instead you're here?