Saving an era of indie games: Ruffle – an Adobe Flash Player written in Rust compiled to WebAssembly
Posted by jpluimers on 2024/07/30
I forgot this was in the queue: [Wayback/Archive] ruffle-rs/ruffle: A Flash Player emulator written in Rust.
It is cool and plays a lot of Adobe Flash content and supports quite a bit of the underlying ActionScript language.
I really wish the web version could play web.archive.org/web/20160706140910oe_/http://games.erdener.org/laser/laser.swf (older), web.archive.org/web/20061211011310/http://www.gamuz.com/jeux/laser.swf (newer) or web.archive.org/web/20030827220214oe_/http://www.lurghi.net/laser/laser.swf (newest) but alas when running from https://ruffle.rs/demo/, that SWF is trying to download https://ruffle.rs/demo/config.txt some 20-30 times per second.
Maybe there is a workaround, as I have only tried the [Wayback/Archive] Ruffle Web Demo page (which is the easiest way to get started).
The laser.swf game mentioned above is the classic Reflections game that got me hooked a few decades ago. It would be really cool to be able to re-play and see if my memory still remembers the levels.
Back in the days you could play the more recent version from [Wayback/Archive] Play Reflections, a Free online game on Jay is games (documentation at [Wayback/Archive] Reflections – Walkthrough, Tips, Review)
Ruffle should run locally as well as per documentation in the repository [Wayback/Archive] ruffle-rs/ruffle: A Flash Player emulator written in Rust:
- [Wayback/Archive] ruffle/README.md at master · ruffle-rs/ruffle
- [Wayback/Archive] Home · ruffle-rs/ruffle Wiki
- [Wayback/Archive] Using Ruffle · ruffle-rs/ruffle Wiki
Maybe one day, I have time and energy to dissect the laser.swf file into ActionScript, then modify to use a default config if it cannot download a config.txt.
For that a good start will be checkout out the answers to [Wayback/Archive] actionscript – How does one reverse engineer a SWF file? – Reverse Engineering Stack Exchange and the [Wayback/Archive] Project Layout · ruffle-rs/ruffle Wiki.
Similar game
Via [Wayback/Archive] saveable laser mirror game – Google Search I found a simpler game that you can also play the full-screen app in the Wayback Machine archived version.
Bonuses:
- It keeps the level you reached saved in a cookie so you can start it again and continue where you left off.
- It is installable as an app in for instance Google Chrome.
- Level settings are shared between full screen app and regular game.
The links
- [Wayback/Archive] 🕹️ Play Rubi’s Lazer Maze Game: Free Online Laser Beam Logic Puzzle Video Game for Kids & Adults
- [Wayback/Archive] Play Rubi’s Lazer Maze Game: Free Online Laser Beam Logic Puzzle Video Game for Kids & Adults (full screen app, also installable in for instance Chrome)
Later
I dug a bit deeper starting from an archived [Wayback/Archive] games.erdener.org/laser/config.txt
&maxLevel=25& &pwd1=bios& &pwd2=cpu& &pwd3=usb& &pwd4=rdram& &pwd5=w2k& &pwd6=macos& &pwd7=irq& &pwd8=pcm& &pwd9=svga& &pwd10=os/2& &pwd11=tcp/ip& &pwd12=ascii& &pwd13=input& &pwd14=io& &pwd15=cdrw& &pwd16=dma& &pwd17=csma& &pwd18=ccd& &pwd19=sdsl& &pwd20=ps/2& &pwd21=rambus& &pwd22=acpi& &pwd23=ide& &pwd24=firewire& &all_loaded=true&
It looks like the laser.swf game needs/uses a lot more files. There is a list at web.archive.org/web//http://games.erdener.org/laser/ (lurghi.net nor gamuz.com have no more files archived), but I doubt it is complete as the solutions go to level 28, but the levels go to 25:
I did a quick search to see if other sites might have archived more, but no: [Wayback/Archive] “level25.txt” “laser.swf” – Google Search.
Oh well (:
There was one forum with a topic explaining the file structure though at [Wayback/Archive] Stuck! | Off Topic | unofficial empeg BBS
http://www.input-entertainment.de/laser/laser.html
I can’t get past level 23. There are a total of 25 levels. Anyone got a solution to 23?
Note: I had trouble getting this one to work in Netscape or Flash4, it works in IE with Flash5, though.
…
HINT: go through the center bulb 3 times.
IMPRESSIVE. I had considered this as an option, and even went to the trouble of doing a test-case to make sure that three passes on a bulb would light it. I just couldn’t see a way this would help me. Guess I’ll have to try again.
The password for level 25 is firewire
As far as the passwords go, I’m not concerned with those any more. I figured out the files that needed to be downloaded in order to run the program locally, and the password file is in clear text. So now I can get to any level I want by typing it in (I edited the file so that the password for level 24 is “24” for example). I still want to win each of the levels though.
What’s particularly interesting about this is that not only are the passwords in clear text, each level is in clear text as well. So if we wanted to, we could extend this game by reverse-engineering the level format and creating our own levels.
If you want to download all of the game data yourself, grab the following files from the program directory off of their web server:
laser.swf
config.txt
level1.txt
level2.txt
(...)
level25.txtThen put them all in the same folder and associate “.swf” files with Internet Explorer.
So who’s up for challenging each other with new levels?
[Wayback/Archive] Stuck! | Off Topic | unofficial empeg BBS – page 2 has more internals:
Since no one has posted this yet, here is the secret decoder ring for the
levelX.txtfiles:Everything is ampersand (
&) delimited.Each square is defined by a
fs#=iandfr#=jvalue (#=0to191,16x12grid)‘
i‘ is the object in the square:
0 = blank
1 = outer walls
2 = bomb
3 = square brick
4 = one-way device
10 = laser
11 = bulb‘
j‘ is the rotation (direction) of the object (laser, one-way, outer wall)
0 = W
1 = N
2 = NW
3 = NE
4 = E
5 = S
6 = SE
7 = SWOn the line “
anzo=x“,xis the number of items in the bin. Objects (on the next line) are numbered0tox-1The item values are:
1 = mirror
2 = splitter
3 = refractor
4 = double mirrorSo who’s designing the level editor?
-Jeff
…
Yeah… Now all we need is an editor…
What a coincidence. Click on the attachment.
Okay, notes on this one:
– It requires Microsoft Excel 97 at least. I have not tried it on later versions of Excel.
– No complaining about the fact that I did it in Excel. It was quickest that way.
– It uses a VBA macro so you gotta have that enabled.
– It was hastily thrown together, it is not pretty. Sue me.
– There is no file-checking. It flat-out writes a file called “levelx.txt” to the specified folder and will waste anything that’s already there. Also, it will crash if the path to that file doesn’t exist. So make sure to create a fresh folder for the file instead of overwriting your existing copy.
– Documentation will come later. For now: Select one of the desired objects on the right. Move your mouse pointer over the EDGE of the selected object and hold down CTRL and drag it onto the worksheet.Attachments
[Wayback] 48053-lasergame.zip (26 downloads)…
Oh, God, my code was so brain-damaged. Attached please find a bug-fixed version that has the correct compass directions for the directional objects.
Told you I did it in a hurry.
Attachments
[Wayback] 48078-lasergame.zip (17 downloads)…
Without a lot of playtesting, how about this one?Attachments
[Wayback] 48084-level1.txt (86 downloads)…
[Wayback/Archive] Stuck! | Off Topic | unofficial empeg BBS – page 3 has a zip file of the first edition with 25 levels and describes a bit more about the 28 level version:
I have it zipped here.Attachments
[Wayback] 48661-Laser.zip (63 downloads)…
According to the one I’m playing, there are 28 levels. Did I miss something?
They changed it later, after this thread was popular. Also, some of the original code changed so that my editor program doesn’t even work on it any more (wondering if it was BECAUSE of the editor or not, we may never know).
So then I decided to check what other files besides the first link were archived in the Wayback machine, and bingo: all the other levels are there!
Just look at https://web.archive.org/web/*/http://www.input-entertainment.de/laser/*:
No solution files though, but the most recent archived configuration file has 28 levels, see [Wayback/Archive] http://www.input-entertainment.de/laser/config.txt
&maxLevel=28& &pwd1=bios& &pwd2=cpu& &pwd3=usb& &pwd4=rdram& &pwd5=w2k& &pwd6=macos& &pwd7=irq& &pwd8=pcm& &pwd9=svga& &pwd10=os/2& &pwd11=tcp/ip& &pwd12=ascii& &pwd13=input& &pwd14=io& &pwd15=cdrw& &pwd16=dma& &pwd17=csma& &pwd18=ccd& &pwd19=sdsl& &pwd20=ps/2& &pwd21=rambus& &pwd22=acpi& &pwd23=ide& &pwd24=firewire& &pwd25=ddrram& &pwd26=escd& &pwd27=floppy& &all_loaded=true&
It is cool to see some “ancient” technology words as passwords like rdram, os/2, cdrw, rambus, firewire, floppy (RAMBUS actually kind of twice, as RDRAM us RAMBUS DRAM).
Hopefully I can go from there and reconstruct a fill game one day.
Back to Ruffle
The last three days of nightly builds for Desktop, Browser Extension and self-hosted Website version are available [Wayback/Archive] Ruffle | Flash Player emulator written in the Rust programming language: Downloads. You can also install the browser extensions from [Wayback/Archive] Ruffle – Chrome Web Store and [Wayback/Archive] Ruffle – Get this Extension for 🦊 Firefox (en-US) (both should auto-update and both warn “** Ruffle is alpha quality software! **”). It is also available using the [Wayback/Archive] ruffle-rs/homebrew-ruffle: Homebrew tap for ruffle Flash emulator.
Because everyone and their mother is trying this on old Flash games and report failing ones, there are a lot of issues open at [Wayback/Archive] Issues · ruffle-rs/ruffle.
Note that if either of the test cases at [Wayback/Archive] Test SWFs · ruffle-rs/ruffle Wiki do not work, then you should report them as bugs.
Via
- [Wayback/Archive] Ramsey Nasser on Twitter: “holy shit! this could single handedly rescue an entire era of indie games for extinction!” / Twitter
- [Wayback/Archive] WebAssemblyWeekly on Twitter: “Ruffle – an Adobe Flash Player written in Rust compiled to WebAssembly
github.com/ruffle-rs/ruffle…(it was going to happen eventually!)” - [Wayback/Archive] mirrors lasers “flash” game – Google Search
- [Wayback/Archive] Adventure Game Studio | Forums | Laser and mirrors game
- [Wayback/Archive] The Cool Laser Reflections Game (newest version)
- [Wayback/Archive] “laser.swf” “Reflections” – Google Search
- [Archive] laser : Free Download, Borrow, and Streaming : Internet Archive
- [Archive] laser_202012 directory listing
- archive.org/download/laser_202012/laser.swf which is from web.archive.org/web/20070408055230/http://laser.narr.as/laser.swf and is the same older version from I mentioned above.
- [Archive] laser_202012 directory listing
- [Archive] laser : Free Download, Borrow, and Streaming : Internet Archive
- [Wayback/Archive] Flash Laser Reflections “Input Entertainment” – Google Search
- [Wayback/Archive] “level25.txt” “laser.swf” – Google Search
--jeroen






Leave a comment