VOGONS


First post, by MaverickUK

User metadata
Rank Newbie
Rank
Newbie

Update: Version 0.1.0 is available for testing
https://www.dropbox.com/s/9kxxmvk1f9r3ali/Gam … v0-1-0.zip?dl=0

Please read getting started guide in Re: GameMinder - DOS games launcher


Hey folks

After a recent holiday with my Toshiba Libretto 100CT I got a little frustrated with navigating using DOS commands and not being able to remember what all my games were from the 8 character file names, so I decided to create my own lightweight DOS games launcher.

0.jpg

I'm sure there are already lots of similar utilities like this out there 😀 but I wanted to create something for my own specific needs and to enjoy the challenge of writing a DOS utility, which I've never done before.

It's designed to

  • Provide a simple, sortable list of DOS games
  • Display meta game about each game
  • Record the number and length of time each game is played
  • Consume very little memory, so as not to interfere with games

You can see a short proof of concept video of it in action at https://www.youtube.com/watch?v=tkKVguKeelc

More details about the project are available at https://github.com/MaverickUK/GameMinder where I'll release the source code once I've got it to an MVP state.

I would appreciate anyone with an interest in helping me test it on real hardware once it's a little further down the line

Thanks
Peter

Last edited by MaverickUK on 2022-09-26, 10:38. Edited 2 times in total.

http://www.strifestreams.com // Regular nuggets of retro gaming

Reply 2 of 17, by keropi

User metadata
Rank l33t++
Rank
l33t++

very nice!
there is always a need for light-weight launchers , looking forward to it!

🎵 🎧 PCMIDI MPU , Orpheus , Action Rewind , Megacard , MK8330 and 🎶GoldLib soundcard website

Reply 3 of 17, by MaverickUK

User metadata
Rank Newbie
Rank
Newbie

I appreciate the interest @Pierre32 and @Keropi 😀

Developing in Turbo Pascal takes a bit more effort than modern languages I've used!

I've almost implemented all the features for the MVP first release. Will likely have something ready to share within the next week or so.

Latest progress
0.jpg
https://youtu.be/_ZnuEk0dQmY

  • "Doom" style start-up screen (shown very briefly at launch in this video)
  • Game details loaded from metadata files in each game directory
  • F1: Show help
  • F2: Show game info
  • F3: Show system info
  • F4: Displays games in full screen mode (extra columns shown)
  • Horizontal menu, scroll left and right to select option
  • Page up/down games list
  • Home/end to jump to top/bottom of games list

http://www.strifestreams.com // Regular nuggets of retro gaming

Reply 4 of 17, by Yoghoo

User metadata
Rank Member
Rank
Member

Nice start! Couple of questions: is there a limit on how many games it can handle? And is there an option to store all game information centrally instead in each game directory?

Reply 5 of 17, by MaverickUK

User metadata
Rank Newbie
Rank
Newbie
Yoghoo wrote on 2022-09-06, 15:03:

is there a limit on how many games it can handle?

Currently it's hard coded to a maximum of 255.

I plan to make this dynamic in the future so that it'll support an "unlimited" amount. However I ran into some of the limitations of Turbo Pascal when I first attempted to implement this, so decided to come back to it in the future.

Yoghoo wrote on 2022-09-06, 15:03:

And is there an option to store all game information centrally instead in each game directory?

Not currently, however if there's enough demand it's certainly possible to implement. I've added this idea to the Later portion of the roadmap at https://github.com/MaverickUK/GameMinder/

Something I was considering was the ability to add, edit and remove games via the GameMinder UI. This may make where and how it stores the data less relevant.

Last edited by MaverickUK on 2022-09-07, 09:08. Edited 1 time in total.

http://www.strifestreams.com // Regular nuggets of retro gaming

Reply 6 of 17, by carlostex

User metadata
Rank l33t
Rank
l33t
MaverickUK wrote on 2022-09-06, 16:05:

Currently it's hard coded to a maximum of 255.

Ouch. Can you Hard code it to 65.535? Cause that would be more than ever needed for DOS I think. 255 is a little too short. To be honest I’d be happy with 1000 titles supported.

Reply 7 of 17, by MaverickUK

User metadata
Rank Newbie
Rank
Newbie
carlostex wrote on 2022-09-07, 00:13:

Ouch. Can you Hard code it to 65.535? ... To be honest I’d be happy with 1000 titles supported.

That would certainly be nice 😁

If I set the number too high as a static array Turbo Pascal complains. So I really need to dig into this properly in order to fully understand and resolve correctly.

Once some people have helped me validate the basic functionality of GameMinder, I'll be looking at this as a priority

Progress: Wednesday 7th Aug 2022
mqdefault.jpg
https://youtu.be/Ll2j56ixZC4

  • Sorting now works (By name, developer, genre, release date)
  • Configuration is loaded from external SETTINGS.TXT file, allowing users to easily customise functionality

I've also tested it on my actual 386 hardware which works, which is a relief!
mqdefault.jpg
https://youtu.be/Pf-mYUyjb7U

http://www.strifestreams.com // Regular nuggets of retro gaming

Reply 8 of 17, by digistorm

User metadata
Rank Member
Rank
Member
MaverickUK wrote on 2022-09-07, 17:05:
carlostex wrote on 2022-09-07, 00:13:

Ouch. Can you Hard code it to 65.535? ... To be honest I’d be happy with 1000 titles supported.

That would certainly be nice 😁

If I set the number too high as a static array Turbo Pascal complains. So I really need to dig into this properly in order to fully understand and resolve correctly.

I wouldn't use static arrays if you want to preserve memory to run games. If you are using TP7, you should be able to use dynamic memory allocation. Then you can use all the memory you want and release it before you launch a game.

Reply 9 of 17, by MaverickUK

User metadata
Rank Newbie
Rank
Newbie

Version 0.1.0 of GameMinder is now available for pre-release testing by the Vogons faithful

You can download it from the following:
https://www.dropbox.com/s/9kxxmvk1f9r3ali/Gam … v0-1-0.zip?dl=0

Getting started

  • Unzip GAMEMIND.EXE and SETTINGS.TXT to a directory of your choice on a DOS machine (Real or virtual)
  • Edit the SETTINGS.TXT file
  • Ensure that ScanPath is set to the directory in which your games are held. This will be search recursively on start-up
  • For each game that you want GameMinder to reference, you'll need to create a !GM_INFO.TXT file within it's directory

!GM_INFO.TXT format
The purpose of this file is to hold the meta data used by GameMinder to list and execute each game. It's made up of a series simple of key pairs, these are:

  • name - Name of the game (required)
  • exec - Filename to execute (required)
  • developer - Name of developer
  • genre - Genre of game
  • year - Year game was released
  • video - VGA, EGA, CGA etc...
  • sound - PC Speaker, Sound Blaster etc...

So for example

name:Commander Keen 1
exec:keen1.exe
developer:id software
genre:Platform
year:1991
video:EGA
sound:PC Speaker

Controls
Cursor keys up and down scroll the list of games with left and right changing the horizonal menu option at the top.

Page up, page down, home and end can also be used to scroll the games list.

By default pressing enter will launch the highlighted game, unless a different horizonal menu option has been picked. For example if "Exit to DOS" is picked, then pressing enter will quit the program.

F1 - Show help
F2 - Show game infomation
F3 - Show system status (Not yet implemented)
F4 - Full screen games list

F5 - Sort games by name
F6 - Sort games by developer
F7 - Sort games by year
F8 - Sort games by genre

SETTINGS.TXT
All configurable options are held in this file, so please have a poke and play.

Current key limitations

  • A maximum of 100 games can be added
  • System status view (F3) not yet implemented
  • Filtering of games not yet implemented
  • Add, edit & delete of games in GameMinder not yet implemented (Must manually edit !GM_INFO.TXT files outside of UI)

Reporting bugs & asking for features
Feel free to report bugs here or add them to GitHub on https://github.com/MaverickUK/GameMinder/issues

Please do ask for any features that you think would be useful. The currently planned list is at https://github.com/MaverickUK/GameMinder/

I want to keep this launcher as targeted to the original brief as possible, so I'm keen not to bloat with features that move away from this original vision.

Thanks for all the interest so far.

Please go ahead and install this on virtual and (ideally!) real machines and let me know how you get on
Cheers

Last edited by MaverickUK on 2022-09-09, 15:24. Edited 1 time in total.

http://www.strifestreams.com // Regular nuggets of retro gaming

Reply 10 of 17, by MaverickUK

User metadata
Rank Newbie
Rank
Newbie
digistorm wrote on 2022-09-08, 14:43:

I wouldn't use static arrays if you want to preserve memory to run games. If you are using TP7, you should be able to use dynamic memory allocation. Then you can use all the memory you want and release it before you launch a game.

I started to go down this path, but had difficulties implementing based on the documentation and examples I found online.

Are you able to link to a suitable source which provides examples and explanations of how to achieve this please @digistorm?

Thanks

Game play stats implemented
This is really the main feature I wanted to get in before releasing a version of GameMinder in the previous post. The following video demonstrates this functionality in action.

mqdefault.jpg
https://youtu.be/kEWrcsIud5M

It works by writing a file named !GM_LOG.TXT into the directory of the game that has been executed.

Whenever a game is started it adds a line with the current date and time and then when the game exits it adds another line with the number of minutes played.

These can then be loaded and used to calculate various statistics, such as the last time played, number of times played and the amount of time played.

http://www.strifestreams.com // Regular nuggets of retro gaming

Reply 11 of 17, by Pierre32

User metadata
Rank Oldbie
Rank
Oldbie

I've given it a test run on my Socket 7 system.

gmind001.png
Filename
gmind001.png
File size
3.46 KiB
Views
798 views
File license
Public domain

It seems to work as intended, as long as you don't throw anything weird at it. And I do that immediately, so here are the reports.

1. It doesn't like being called by this batch file:

c:\gmind\gamemind

That will throw this error:

gmind004.png
Filename
gmind004.png
File size
1003 Bytes
Views
798 views
File license
Public domain

But this batch file is ok:

c:
cd gmind
gamemind

2. Scan path must have a trailing backslash. "C:\Games\" is good, but "C:\Games" will report that it can't find any instances of !GM_INFO.txt on startup. This is fine, but perhaps worth a note in the SETTINGS.txt comments so people don't make the mistake.

3. It only seems to like C:\ drive. I have a game library on E:\ and set this to my scan path. It scanned fine, but launching any games returned this:

gmind002.png
Filename
gmind002.png
File size
1.25 KiB
Views
798 views
File license
Public domain

I wondered if using the root path was an issue, so I moved a few games to E:\Games\. But this had no effect. It wasn't until I moved my tests to C:\Test\ that I got games launching.

4. Can not currently set a batch file as exec in !GM_INFO.txt (it likes EXEs only) which is a hindrance for many games. Generally they'll fail to run with a message similar to above. In the case of Dune, calling dune.bat forces a reboot 😮

Showing promise though, and looking forward to updates.

Reply 12 of 17, by MaverickUK

User metadata
Rank Newbie
Rank
Newbie
Pierre32 wrote on 2022-09-10, 05:39:
1. It doesn't like being called by this batch file: […]
Show full quote

1. It doesn't like being called by this batch file:

c:\gmind\gamemind

GameMinder assumes that the directory it launches from is where the program is. I can't think of a way round this, but I can certainly make it detect if this has occurred and show a useful error message on startup.

Pierre32 wrote on 2022-09-10, 05:39:

2. Scan path must have a trailing backslash. "C:\Games\" is good, but "C:\Games" will report that it can't find any instances of !GM_INFO.txt on startup. This is fine, but perhaps worth a note in the SETTINGS.txt comments so people don't make the mistake.

Aha good catch, that'll be an easy one to fix

Pierre32 wrote on 2022-09-10, 05:39:

3. It only seems to like C:\ drive. I have a game library on E:\ and set this to my scan path. It scanned fine, but launching any games returned this:

Nice thought. Yes, I hadn't given any consideration to other drives. I'll have a think about this.

Pierre32 wrote on 2022-09-10, 05:39:

4. Can not currently set a batch file as exec in !GM_INFO.txt (it likes EXEs only) which is a hindrance for many games. Generally they'll fail to run with a message similar to above. In the case of Dune, calling dune.bat forces a reboot 😮

Showing promise though, and looking forward to updates.

Oh dear, that's not good! 😁 I'll research into this one.

I appreciate your time and enthusasim giving GameMinder a nice shake down @Pierre32. It's great to hear about it running on someone else's computer.


I had a nice long train ride at the weekend which gave me a chance to consider some new features for the roadmap (once these bugs are dealt with)

  • Allow which columns are used in half & full screen mode (and their width) to be specified in the SETTINGS.TXT file
  • Indicate popularity of a game using a single shaded ASCII character indicator in the game list (Allow this feature to be disabled via SETTINGS.TXT)
  • Allow the function of F keys (e.g. F5) to be customized in the SETTINGS.TXT file
  • Filter games by word (e.g. KEEN would only show games with Keen in the name) - designed implementation on paper
  • Adding / editing of games via the GameMinder UI - designed implementation on paper
  • Horizontal menu - designed more extendable implementation on paper

I'm also keen to publish the source code to GitHub, but I'd like to clean up the source code before I do that.

http://www.strifestreams.com // Regular nuggets of retro gaming

Reply 13 of 17, by Pierre32

User metadata
Rank Oldbie
Rank
Oldbie
MaverickUK wrote on 2022-09-12, 08:50:

I appreciate your time and enthusasim giving GameMinder a nice shake down @Pierre32. It's great to hear about it running on someone else's computer.

No probs!

A tiny request for the feature queue: Esc to exit instantly.

Editing game info files in the interface will be a very welcome addition when it comes too.

Reply 14 of 17, by digistorm

User metadata
Rank Member
Rank
Member
MaverickUK wrote on 2022-09-09, 15:19:

Are you able to link to a suitable source which provides examples and explanations of how to achieve this please @digistorm?

Would you still need some example for this? I could share an implementation for a double linked list that creates all elements on the heap (dynamically) and has the ability to dispose them too. It's implemented just enough for what I needed it for, but it should give enough of a clue how to do this.

Reply 15 of 17, by MaverickUK

User metadata
Rank Newbie
Rank
Newbie
digistorm wrote on 2022-10-04, 11:54:

Would you still need some example for this? I could share an implementation for a double linked list that creates all elements on the heap (dynamically) and has the ability to dispose them too. It's implemented just enough for what I needed it for, but it should give enough of a clue how to do this.

If you could, that would be great please @digistorm

I recently bought a Turbo Pascal 7 book from eBay which I'm hoping will improve my understanding of the language.

I've started work on fixing the bugs that have been reported along with some enhancements. However I've recently starting a new project at work which has eaten up a lot of my headspace for working on this.

So it'll likely be a few months before the next release, but it's certainly in the pipeline 😀

http://www.strifestreams.com // Regular nuggets of retro gaming

Reply 17 of 17, by MaverickUK

User metadata
Rank Newbie
Rank
Newbie

Unfortunately Christmas 2022 was plagued by a nasty flu in my household, so it wasn't a very merry time and most of my plans got thrown out the window! (Such as working on GameMinder)

I'm not sure when I'll next have a decent block of time to work on this project, so I've released the source code for anyone who'd like to contribute towards this project.

Everything is available at https://github.com/MaverickUK/GameMinder

Thanks for all the interest and support with this project so far, you all rock

http://www.strifestreams.com // Regular nuggets of retro gaming