Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - Mindless

Pages: [1] 2 3 ... 49
Other Projects / Re: Golems — a DOS Lemmings game engine
« on: May 09, 2024, 03:47:41 AM »
if a terrain piece has a pixel that uses one of the fixed 8 colors, that pixel will be visible but nonsolid.
I haven't tested it, but Golems should have this implemented at least half correctly.  It uses the most-significant bitplane for terrain existence, so gameplay should be correct.  It probably does not currently display the phantom terrain, however.

One thing that would be nice - it's possible to set a page so that a tap and hold on mobile doesn't get treated as a right click (ish).
This should be the case already?  The game screen area has touch-action: none;, which should suppress that.  Maybe I need to apply it to the black area outside the game screen as well in case the touch is just outside the game screen?

The smoothness of the rewind feature is particularly impressive, might I ask how you achieve this in Golems?
The game takes a snapshot of the game state every 17 frames (1 second of game-time).  Stepping back one frame is accomplished by going back to the previous game state snapshot and stepping forward however many frames necessary to end up one frame back.

All those snapshots would eat up memory pretty quickly, so I added a super fast/simple algorithm for compressing the terrain bitmap.  Any snapshot older than the latest snapshot gets compressed.  The game holds on to a copy of the original terrain bitmap to reference.  The compression algorithm produces a data stream that can be interpreted according to the following algorithm:
Code: [Select]
Set `refCursor` to the first pixel in the reference bitmap.
Set `dstCursor` to the first pixel in the destination bitmap.
While `dstCursor` is not at the end of the destination bitmap:
    Read a 16-bit unsigned integer from the stream and store it in `sameCount`.
    Read `sameCount` pixels from `refCursor` and write them to `dstCursor`; `refCursor` and `dstCursor` advance by `sameCount` pixels.
    Read a 16-bit unsigned integer from the stream and store it in `diffCount`.
    Read `diffCount` pixels from the stream and write them to `dstCursor`; `dstCursor` advanced by `diffCount` pixels.
    Advance `refCursor` by `diffCount` pixels.
The same compression scheme is applied to the effect map as well.  This way each snapshot basically only needs to store the accumulated changes to the terrain and effect maps along with the (uncompressed) creature states, gadget states, and various other small bits of game state.

It could probably be smarter and occasionally choose to create a new reference bitmap if the terrain changes a lot.

Also, is this open-source?
Not yet, but probably eventually.  But it is .NET and not obfuscated, so you could use ILSpy to easily peek at the code.

Other Projects / Golems — a DOS Lemmings game engine
« on: May 06, 2024, 08:33:32 AM »
I can finally announce the project I've been working on for the past year and a half.  Golems!

Golems is a DOS Lemmings game engine.  It represents an original reverse engineering effort that is not based on Lemmix.

Golems v1.0 (for Windows)

Golems does not come with any data files.  To play levels, run the Golems executable, install the .NET 8 Runtime if it isn't already installed, click GameLoad Game..., and select a "MAIN.DAT" file from a DOS Lemmings game.  The remaining data files will be loaded from the same directory that contains "MAIN.DAT".  The mode of the game engine (release X offset, splat height, etc.) will be determined automatically from this file.  The game engine assumes that your files are from the floppy disk version of the game, not the CD versions with the splat height that breaks WAFD.

You can also pick "CSTM.DAT" to play a Customized Lemmings level pack.

Or pick a file named "GOLEMS.DAT" (renamed from "CSTM.DAT") to play in the "Golems" game mode.  This game mode is similar to Customized Lemmings (which is the same as the Holiday game mode except for the red-blue palette swap) except that the one-way mining bug is fixed and the splat height is reduced by 3 for lemmings that start falling when walking or bashing.  I think this mode represents a good compromise between not breaking WAFD and not breaking most custom level packs.

There are a few bugs that are not and will not be implemented:
  • Pause for time – because the behavior depends on picking High Performance PC mode or not.
  • Nuke saved % – because the bug is arguably in the saved percentage calculation, and Golems doesn't use percentages. (Okay, it's mostly due to how much I dislike this bug and the percentages.)
  • Right-click-and-hold – because a faithful implementation is fundamentally incompatible with rewinding.
  • [Visual Only] Walking shrugger – because the visual part of this bug can cause out-of-bounds memory access.  The gameplay part is implemented.

I did also make some visual-only improvements to the control panel (status text, pause button, nuke button, and minimap) and to the level view (highlight selected lemming).  I limited these changes to what could have been done in the original game engines.

Aside from the above bugs, visual-only changes, and any bugs that result from out-of-bounds memory access, I hope to have implemented the game engine so that it behaves exactly as the original game engines.  Please let me know if you find any unexpected differences!  (Please note the game mode shown in HelpAbout.)

Also let me know if you encounter any other bugs.

Some keyboard controls:
  • Space – Pause
  • ~ – X-ray View
  • W – Fast/Step Backward
  • Left Shift + W – Faster Backward
  • E – Fast/Step Forward
  • Left Shift + E – Faster Forward

And one more thing:

Golems in your browser

NeoLemmix Styles / Re: New Styles - Lemmings Faithful
« on: May 05, 2024, 08:28:33 AM »
Autumn:  Very nice!  If I didn't know better, I'd say this was a style that they just forgot to ship with the original game.
Circuit:  It's alright.  Like the Brick style, the primary color is a little overpowering.  Brick has the advantage that it's used for real-world structures.
Mosaic:  I stared at this for a long while, and I almost can't believe that this follows the palette restrictions.  Marvelous!
Palace:  Not bad, but I think some of the the wood and marble textures could be a bit less realistic somehow.
Rust:  It looks monotonous yet very busy.  It's kinda depressing.  Taking parts from other styles and junking them was clever though.

My apologies if that was more negative feedback than you wanted.  Even my least favorite of these styles was better than a lot of styles I've seen over the years, so don't take it too harshly.

I really hope you'll make more of these palette-restricted styles in the future.  It really gives it that retro feel that I love.

Lemmings Main / Re: DOS Game Club on Lemmings 1
« on: April 11, 2024, 01:20:01 PM »
:thumbsup: There was more discussion about the Lemmings community than I expected based on listening to a few other DGC episodes, but I suppose few other DOS games still have an active playerbase and new game content being created.

Site Discussion / Re: Lemmings Forum Discord
« on: April 01, 2024, 12:53:07 AM »
Won't mentioning that game here just make it more likely that Google will direct more of those lemmings people to the Lemmings Forums Discord?

Since the focus of the podcast is DOS games, I expect it will be rather light on material related to any aspects of Lemmings fan games that didn't exist in the original.

The original "original" soundtrack might be some fun trivia (mentioned without any detail in Mike's history).

The latest version of the history is at and also the pictures of the editor manual.

You should get Patrick to post his level pack here.  DOS level packs are still welcome. ;)

It turns out there is a way to see to the edge -- edit the initial X value in the level so that it's past where scrolling normally stops.  Scrolling wraps around (kinda), but the lemmings turn around at 1648.

Since you can place terrain beyond the bounds of the level, I thought it would be simple to find the edge by placing a wide terrain piece so that it extends past the right boundary and shift it increasingly rightward until the lemmings start turning around and coming back.  They never do, and they also never reach the red border in the minimap.  It seems you can't place terrain all the way to the edge.  If the preview is to be believed, at some point, shifting the terrain piece rightward causes the terrain piece to be clipped.

The test level and preview are attached.  If you load the level into Lemmings or CustLemm, scroll to the left at your own peril.

I also placed some terrain as far past the left edge as possible, which makes for an interesting preview, as terrain past the left edge gets wrapped around to the right edge.

Unsubstantiated analysis: The minimap is 104 pixels wide, with each pixel representing 16 horizontal pixels.  There are 16 inaccessible pixels past the left boundary.  So that puts the right edge at 104*16-16=1648.

Lemmings Main / Re: Lemmings DAT Anticompressor
« on: April 24, 2023, 12:21:26 AM »
Ok, I just checked and they are indeed identical.  main.dat section #5 and cgamain.dat section #3 are the same.

I finally solved the mystery.  It contains the PC speaker sounds that play if you don't have enough memory to load ADLIB.DAT (but ADLIB.DAT is loaded before MAIN.DAT, so the game never works in that case).  Interestingly, I can't find any normal way to get the PC speaker sounds to play.  They don't play normally, even if you don't have an AdLib-capable sound card.  I was only able to get them to play by modifying the game to skip AdLib initialization.  (Of course, maybe this is just a bug in the version of the game that I'm using.  Edit: It was.)

Edit 2:  There are 3 different versions of Lemmings for DOS with the VGALEMMI.EXE files dated 1991-05-10, 1991-05-24, and 1991-07-19.  I was using the version dated 1991-05-24, which has a bug that makes PC speaker sound effects impossible.  Incidentally, it also has the bug where the music starts over at track 1 every time you fail a level.

Edit 3: An easy way to tell which version you have is based on the message when you exit the game.  If it says "Have a nice DOS!" then you have the buggy version.

Eliminate it.  I have always had it minimized.

Lemmings Main / Re: Lemmix
« on: March 26, 2023, 06:33:38 PM »
Yeah, it should be.  If you put the Lemmings game files in the "GameFiles" directory, build the project, and run it from the command line, you should be able to get it to get it to produce an image from a level file.

When I have time later this week, I'll check and see if any other PC Lemmings levels exhibit similar symptoms.

I ended up looking into this, and Taxing 27 is the only level in Lemmings that has excess terrain pieces.  The Amiga version of the level also has the bad terrain piece, so either the Amiga version has a different check for unused terrain pieces or it skips unused pieces rather than stopping on the first one.

Lemmings Main / Re: Lemmix
« on: March 25, 2023, 01:47:04 AM »
@Mindless: That is interesting. Is your source somewhere on github or so? Of course I could give you my renderer if that is ever needed :)

I put some code into a repository on GitHub.

Lemmings Main / Re: Lemmix
« on: March 23, 2023, 04:22:04 AM »
Funny that you mention that you're rewriting Lemmix in C#.  I'm currently rewriting the Lemmings Level Database in C#.  (It's currently written in Python 2 and runs on Google App Engine, which is dropping Python 2 support.)  I've got level rendering working, but if you're abandoning the old file formats, I guess there wouldn't be much overlap.

Pages: [1] 2 3 ... 49