Skip to content

Instantly share code, notes, and snippets.

@parkerlreed
Last active July 24, 2023 16:34
Show Gist options
  • Save parkerlreed/4bd1f5fa38f7ffa72f9ceacb7d7f636d to your computer and use it in GitHub Desktop.
Save parkerlreed/4bd1f5fa38f7ffa72f9ceacb7d7f636d to your computer and use it in GitHub Desktop.
Flashpoint Infinity for Steam Deck

Flashpoint Infinity instructions for Steam Deck

Intro

BlueMaxima's Flashpoint is a webgame preservation project with the likes of Flash, Shockwave, HTML5, and many more technologies under its belt.

https://bluemaxima.org/flashpoint/

Steam Deck ships with an immutable rootfs and we like to keep it that way. Following is a guide on getting Flashpoint up and running on your Deck!

Install Distrobox

This will require your sudo password for the setup

curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/install | sh -s -- --prefix ~/.local
curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/extras/install-podman | sh -s -- --prefix ~/.local

Add these two lines to ~/.bashrc and reload your terminal

export PATH=$HOME/.local/bin:$PATH
export PATH=$HOME/.local/podman/bin:$PATH

Setup Distrobox container

distrobox create -i docker.io/library/archlinux -n fp-arch
distrobox enter fp-arch
sudo pacman -Syu qemu-full php
distrobox-export --bin /usr/bin/qemu-system-i386 --export-path ~/.local/bin
distrobox-export --bin /usr/bin/php --export-path ~/.local/bin
exit

Setup Flashpoint directory and files

Choose where you want to put Flashpoint and change to directory. I will use ~/Games in my example.

mkdir ~/Games
cd ~/Games
wget https://bluemaxima.org/flashpoint/Flashpoint%2011.1%20Infinity.exe
7z x Flashpoint\ 11.1\ Infinity.exe
cd Flashpoint\ 11.1\ Infinity
rm -rf Launcher/

Download this file and place in that Flashpoint 11.1 Infinity folder

https://bluepload.unstable.life/flashpoint.tar.gz

tar xvf flashpoint.tar.gz
rm flashpoint.tar.gz

And because I forgot to include the launcher script in the download...

Save these contents to start-flashpoint.sh

#!/bin/bash
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
export PATH+=":$SCRIPT_DIR/FPSoftware/FPWine-8.0/bin"
cd $SCRIPT_DIR/Launcher
./flashpoint-launcher
killall php
killall qemu-system-i386

Now run start-flashpoint.sh and you should be good to go!

chmod +x start-flashpoint.sh
./start-flashpoint.sh

EDIT: Addendum for Shockwave 3D

Some Shockwave titles fail to render 3D because lib32-libxcomposite is not installed on Valve's read only root fs.

Here are the steps to include this locally

Edit start-flashpoint.sh and change the PATH line to match the follwing

export PATH="$SCRIPT_DIR/FPSoftware/FPWine-8.0:$PATH"

Go to FPSoftware/FPWine-8.0

cd FPSoftware/FPWine-8.0

And create a file named wine with the follwing contents

#!/bin/bash
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
LD_PRELOAD=$SCRIPT_DIR/libXcomposite.so.1.0.0 $SCRIPT_DIR/bin/wine "$@"

Then make it executable

chmod +x wine

Download this file and place next to the wine file you just created

https://anonfiles.com/Tbf9g7V0ye/libXcomposite.so.1.0_0

Now you should have 3D in Shockwave games if it was missing (Supersonic RC is a good test. Get in game and see if it renders past the menu)

@polocatfan
Copy link

polocatfan commented Feb 17, 2023

line 4 of start-flashpoint.sh should be cd "$SCRIPT_DIR/Launcher"
line 3 of wine should be LD_PRELOAD="$SCRIPT_DIR/libXcomposite.so.1.0.0" "$SCRIPT_DIR/bin/wine" "$@"

even with the fix of the wine file shockwave 3D games still don't work unless you install lib32-libxcomposite with pacman.

@polocatfan
Copy link

polocatfan commented Feb 17, 2023

also when trying to make a steam shortcut it doesn't load qemu-system-i386 properly unless you install qemu-arch-extra with pacman.

@polocatfan
Copy link

also doesn't work in game mode

@parkerlreed
Copy link
Author

also when trying to make a steam shortcut it doesn't load qemu-system-i386 properly unless you install qemu-arch-extra with pacman.

This and the game mode can be solved by adding the .local/bin and .local/podman/bin to the path export in the main script. Game mode especially apparently does not source bash at all when loading so the path export there does not take effect.

The bundled xcomposite should work as that is the same exact file that lib32-xcomposite installs. Not sure what's going on there.

@polocatfan
Copy link

also when trying to make a steam shortcut it doesn't load qemu-system-i386 properly unless you install qemu-arch-extra with pacman.

This and the game mode can be solved by adding the .local/bin and .local/podman/bin to the path export in the main script. Game mode especially apparently does not source bash at all when loading so the path export there does not take effect.

The bundled xcomposite should work as that is the same exact file that lib32-xcomposite installs. Not sure what's going on there.

It no longer just brings up a command line then crashes in game mode, but it now gives me a "QMPI connection error"

@rredford
Copy link

I ran into odd issue while curating. Games would randomly work or not work.

INFO [22:17:41] Game Launcher: Launch Game "TAG DER ARBEIT" (PID: 26876) [
applicationPath: "FPSoftware\Flash\flashplayer_32_sa.exe",
launchCommand: "http://tag-der-arbeit.extrajetzt.de/swf/preloader.swf",
command: "wine start /wait /unix "/home/rolf/Games/flashpoint/FPSoftware/Flash/flashplayer_32_sa.exe" http://tag-der-arbeit.extrajetzt.de/swf/preloader.swf" ]
INFO [22:17:42] TAG DER ARBEIT: 00f4:err:winediag:SECUR32_initNTLMSP ntlm_auth was not found or is outdated. Make sure that ntlm_auth >= 3.0.25 is in your path. Usually, you can find it in the winbind package of your distribution.
INFO [22:17:42] Server: [Wed Mar 22 22:17:42 2023] 127.0.0.1:38264 Accepted
INFO [22:17:42] Serving File From HTDOCS: htdocs/content/tag-der-arbeit.extrajetzt.de/swf/preloader.swf
INFO [22:17:42] File Locked With Only Readers
INFO [22:17:42] Serving File From Base URLs: /tag-der-arbeit.extrajetzt.de/swf/preloader.swf
INFO [22:17:42] Using Base: Dri0m
INFO [22:17:42] Creating File Pointer Resource From URL: http://infinity.unstable.life/Flashpoint/Legacy/htdocs/tag-der-arbeit.extrajetzt.de/swf/preloader.swf
INFO [22:17:42] Failed to Open File
INFO [22:17:42] Using Base: Archive.org
INFO [22:17:42] Creating File Pointer Resource From URL: http://archive.org/download/FP90Data/FP90Data.zip/htdocs/tag-der-arbeit.extrajetzt.de/swf/preloader.swf
INFO [22:17:43] Empty File
INFO [22:17:43] [Wed Mar 22 22:17:43 2023] 127.0.0.1:38264 Closing
INFO [22:17:43] QEMU GameZip: 404 GET http://tag-der-arbeit.extrajetzt.de:80/swf/preloader.swf HTTP/1.1
INFO [22:17:44] TAG DER ARBEIT: 0138:err:d3d:wined3d_context_gl_reacquire Acquired context 0x259dd28 instead of 0x25a53b0.
INFO [22:17:44] TAG DER ARBEIT exited with signal null

@rredford
Copy link

I found that PHP doesn't run at all at my linux system. im not sure how to fix that lol

@parkerlreed
Copy link
Author

What does it say when just running php?

@rredford
Copy link

rredford commented Apr 26, 2023

Nothing, just silently runs. I have made test curation that only displays information via php to test it, it doesnt work. See below, it just displays blank page.

https://dpaste.com/4RBNGWFFM

@polocatfan
Copy link

polocatfan commented Jul 18, 2023

Decided to try this again from scratch.
Still had to change line 4 of start-flashpoint.sh to cd "$SCRIPT_DIR/Launcher" to get it to work at all.
Can't get it to work in Game Mode even adding the path exports to the main script. All that happens is either it stays on the Steam Loading logo until I manually close it, or it'll just crash instantly.
Here's my current start-flashpoint.sh:
#!/bin/bash
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
export PATH+=":$SCRIPT_DIR/FPSoftware/FPWine-8.0/bin"
cd "$SCRIPT_DIR/Launcher"
export PATH=$HOME/.local/bin:$PATH
export PATH=$HOME/.local/podman/bin:$PATH
./flashpoint-launcher
killall php
killall qemu-system-i386

@parkerlreed
Copy link
Author

Game mode is currently broken anyways for anything Flash. Just get a black window in the WINE FlashPlayer.

It should be loading the launcher though so I'm not sure.

I need to do an updated guide for 12 as that's working pretty much the same (at least in desktop)

@rredford
Copy link

so it's basically still same as guide for 11.1 for steamdeck?

@parkerlreed
Copy link
Author

There's a bit different because of the new downloader and Launcher has a fix that's in a 12.1.0 hotfix branch but not on releases yet.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment