VOGONS


First post, by quadpixels

User metadata
Rank Newbie
Rank
Newbie

Hello VOGONS Forum,

I've hit myself against the wall trying to find the secrets in Gunmetal (1998, Mad Genius) for some time, but the game's secrets are still way too hard for me (it's said that games from that era are "punishingly hard" compared to today's games)
So, I decide to try it the hard way: treat the game run through DosBox as a white-box (meaning I can see the entire emulated physical memory and machine code), and hopefully with a bit of background knowledge on game programming, and enough time, I would be able to figure out part of how the game works.
This game has both Windows 95 and DOS versions, and I find working with the DOS version a bit easier than the Windows version.

So far, I have done the following things to my copy of DosBox:
- Imported the project into Eclipse for comfortable editing and navigation (in Ubuntu 18.04 + XFCE)
- Figured out a way to create an OpenGL window for showing information plumbed from the running DosBox (a memory visualizer for now)

With that, I had some visual impressions of the run-time memory layout, and some of the findings I have are as follows:
- Textures are all stored in memory (if you zoom in you can see some in-game textures from the memory visualization)
- A frame buffer is also in the memory; its address may change from run to run but it is pretty easy to spot

For next steps I plan to: 1) figure out what happens within a game frame; I imagine to see things like game logic (BSP tree traversal, game status update, etc), then rasterizing the entire frame into the frame buffer. The rasterization process may be used for a boundary of a logical frame. When this step is done, hopefully I can find some of the most executed code (or stack traces, just like the profilers used to generate FlameGraphs do) that are doing the interesting things for the game. 2) Another possibility is to figure out the game's resource and scene format, like what things are the scene that don't move and what could move, and how secret areas are defined and where they are (the original purpose of this effort.) There should be hints in the game's scene loading routines, or the subroutine that draws the minimap on screen. The memory contents are what connect 1) and 2).

This post is for note-keeping purposes for my poking around with DosBox (along with my fork on github with the changes)... I'm not sure how long this journey would take, but hopefully this post may be useful for you, (:

Attachments

Reply 1 of 3, by kolderman

User metadata
Rank Oldbie
Rank
Oldbie

It's not they were punishingly hard, just they were intentionally supposed to be a challenge, so you could reap satisfaction from beating them. You needed to develop strategy, tactics, skill and solve puzzles that actually worked your brain and physical reflexes.

Modern "games" are more like a kind of mental illness where you can (literally) buy quick dopamine fixes in the form of loot boxes and similar rewards, clothing and apparel for your avatar and stupid in game dancing, or simply paying to win.

Reply 2 of 3, by krcroft

User metadata
Rank Oldbie
Rank
Oldbie

Very interesting Quadpixels.

I can see lots of avenues where this can go as.. visualizing, querying, game-specific resource moding, locking or setting values (ie: cheat system), and so on!

Looking forward to following your progress; keep us posted!

Reply 3 of 3, by quadpixels

User metadata
Rank Newbie
Rank
Newbie
kolderman wrote on 2020-04-19, 11:44:

It's not they were punishingly hard, just they were intentionally supposed to be a challenge, so you could reap satisfaction from beating them. You needed to develop strategy, tactics, skill and solve puzzles that actually worked your brain and physical reflexes.

Modern "games" are more like a kind of mental illness where you can (literally) buy quick dopamine fixes in the form of loot boxes and similar rewards, clothing and apparel for your avatar and stupid in game dancing, or simply paying to win.

Hmm maybe I wasn't being accurate enough; I was referring to a walkthrough that remarks "some secrets are placed in obscure locations". The difficulty specifically for me was different, though: when I played this game many years ago I did not even know how to strafe; I was enlightened with the modern WASD + mouse-based control a few years later (I guess it was when Half Life 1 and Counter Strike came out; year 2001?), and when I play this game now I would remap the keys to this "modern" way.

A bit more update on Gunmetal: I visualized the frame buffer and I can actually see the game perform scanline fill of triangles during the middle of a frame... the game also seems to be doing sophisticated tricks like sorting and grouping lists of triangles for speedy rendering.
One most interesting thing I found is:
- The function at 0160:283c90 at run time seems to be the map drawing routine. In this function, instruction 0160:285060 ("mov [eax], dl") draws one pixel on the screen.
Still a long way to go before having something more interesting to show.