Minesweeper for the Dreamcast

This forum is for discussion pertaining to homebrew software for the Dreamcast, such as homebrew games, emulators/interpreters, and other homebrew software/applications. Porting requests and developmental ideas are not to be made here; you can make those here. If you need any help burning discs for homebrew software, this is the place to ask as well.
Post Reply
User avatar
Protofall
DCEmu Cool Newbie
DCEmu Cool Newbie
Posts: 12
Joined: Sun Jan 14, 2018 8:03 pm
Location: Emu land
Contact:

Minesweeper for the Dreamcast

Post by Protofall » Thu Nov 29, 2018 9:39 am

Today is the 19th Birthday of the Sega Dreamcast in Australia! Although I grew up with a Gamecube and didn't even know the Dreamcast was a thing until 6/7 years ago, I've had a lot of fun this past year and a half working on homebrew for the system. I thought today would be a good day to present a project I have been working on and off since the 30th of June (Wow, its been 5 months now. Time flies!).

My project is a recreation of Minesweeper for the Dreamcast with Windows 2000 and XP themes! (No, its not emulating Windows 2000/XP, that would be insanely impressive :P ). I say re-creation instead of port because I made this version without any source code and instead based it off of many plays of the original 2000 and XP versions and how they behave.

Below is a bunch of details about what Minesweeper is, how my version differs, future updates and that kind of stuff. If you want to skip that and start playing, here is the download link:

http://www.mediafire.com/file/8yspi2ea0 ... 0.zip/file

Also here's a video I made showing it off on real hardware. My presentation skills aren't that great, but here it is if you want to see it:

https://youtu.be/9n8drh9PVrU

Thanks:
Before I go any further I'd like to give a huge thanks to the Dreamcast community, without you my "Minesweeper for Dreamcast" game wouldn't exist. I'd like to thank programmers and KOS wizards such as BlueCrab, JamoHTP, Kazade, Magnes and MrNeo240, just to name a few, for making useful creation tools, helping me get started and understanding parts of KOS and concepts I couldn't understand on my own. I'd also like to thank the Dreamcast media, especially Adam Koralik, for bringing the Dreamcast homebrew scene to my attention and planting an interest of the system in my mind. This whole adventure has been a lot of fun :)

About MS:
For those who don't know much about Minesweeper, its a pack-in game for older Windows OSes where the objective is to turn over every non-mine tile without activating a mine. When you reveal a tile it will turn into a number saying how many mines are in adjacent tiles. The objective is to get the fastest possible time. The board/grid is a rectangle shape and just like the original you can choose a different height, width and mine count for the board. My recreation also uses a VMU save file to store your preferences and the high scores.

Controls:
There are two controllers you can use, the first is the normal game-pad/controller and the second is the Dreamcast mouse (And probably PC mice with the ps/2 adaptor). The mouse behaves exactly the same as the original with the only difference being the middle press is mapped to the "side button" (Which is the DC mouse's equivalent of the wheel button), pressing both left and right at the same time still serves the same purpose. For the normal game-pad, A is Left press, B is right press, X is middle/wheel/side button press and you can use either the thumb-stick or the dpad to move the cursor around (Press the Y button to toggle between either of the two movement options). Also pressing "Start" without any other input will have the same effect as pressing the face (resetting the board). If you press any other input at that time it will cancel the Start press. When you get a high score an on-screen keyboard will appear allowing you to type a 15 letter name.

New stuff:
My version also adds in a few new features. The game supports VGA mode (And 60Hz RGB) There is multiplayer coop mode, basically the same as normal, but there are up to 4 coloured cursors all playing on the same board. Because of this I've split the high scores into Single player and Multiplayer modes. Some stuff is in different spots to the original, for example the options and record are on the same page. As mentioned before this game makes use of the Dreamcast's VMU (Memory card) to save your high scores and preferences. The game saves whenever you press the "Save to VMU" button on the options tab or you get a new record, however it won't attempt to save if there's no valid VMU plugged into slot a1 (More on that in Updates). The save file is a total of 2 Blocks (Even when uncompressed). My recreation has Windows 2000 and XP themes that don't actually serve any new functionality. By default it boots into Windows 2000 mode, but if you hold the B button during startup then it will load the XP theme. The save file will remember what OS you were last it and next time you start the game it will load the XP assets automatically. To go back to Windows 2000 hold the B button during startup and it will now load the 2000 assets (There's no way to change a theme mid-game though). The tediousness of this is addressed in the updates section.

Although not a new features, there is a special Easter Egg that can be found. If you know Minesweeper's history then you might be able to figure out what it is and how to activate it ;)

Updates:
The current version is version 1.0.0, there are a few things that are missing such as the controls tab being completely unimplemented/unfinished (It will have a pixel-ified image of the normal game-pad and mouse with a legend saying which buttons do what) and the on screen keyboard is missing a fair few keys (Numbers and many other non-letter characters). I will release updated versions here and I expect to have Minesweeper fully finished by the end of the year, if not then early January. Unless a dangerous bug is found, I'll try to bundle multiple features into one update to save you your CD-R stashes ;)

Other updates include adding code for the game to check all slots for valid VMUs, right now its hard coded to only check slot a1. I know how to fix this, but its not in 1.0.0 since I only just started implementing the save file 2 days ago and barely finished it in time (That's another thing, I'm fairly sure my VMU code is good, but I could be wrong so please only plug in a VMU with save files you don't care about). Also the VMU screen doesn't do anything fancy yet, I just ran out of time to add that in. Right now the game can't output at 50Hz, it should be a simple thing to add in, but if you have a 50Hz only screen...well it is technically playable...don't play too long or you'll probably get a headache :o

The final update will give a nice way of choosing 50/60Hz and which operating system you'd like to use as well as something...extra. I won't spoil it, but it will be great :D

Emulator support:
Although the real hardware is the best way to play, for some they don't have a DC and for others they don't feel like pulling out their console and would rather have the convenience of PC. I've tried out Minesweeper on all the major emulators, some performed better than others. Here's my results (Using Linux and Windows 10) from testing them out, they're listed from best performance to worst (IMO)

nullDC (Windows only):
Last time I tried using it, it black-screened. Probably still doesn't work there. Not worth trying out.

lxdream (Unix only):
Some graphics appear distorted/incorrect sometimes. The time/clock/RNG is broken meaning boards are always predictable/the same. Mouse support exists, but is quite bad/dodgy. Unsure if save-files work or not, I might not have my saves configured right when I tested that so dunno. At the very least if saves don't work then it will treat it as if no VMUs are present.

Reicast (All 3 OSes):
Using the latest master branch, everything seems to work fine aside from it not returning the right region code for the icon in the bottom right (Minor issue). You might need a real BIOS for everything to work right. The biggest problem it has is that its a bit of a pain to get up and running. If you need help setting up, you can find me on the reicast discord (emudev.org). I haven't tested save-file and mouse support on reicast so can't comment on that.

Redream (All 3 OSes):
Minor graphical issues, some features like sound effects won't work without a real BIOS. No mouse support present (Yet). Also the display is up-scaled to a higher resolution seemingly through a linear filter, which means its a little blurry, not that big an issue for Minesweeper.

DEMUL (Windows only):
Pretty much as good as real hardware (For Minesweeper at least). It supports everything well. The only issues being when you use the mouse your cursor doesn't lock to the window and hence its possible to click off screen if playing in windowed mode and Windows will change focus which sucks. Last time I used it the game cursor appeared to be jittery, not sure why that happened though.

Bugs:
There were multiple bugs in the past, but most seem to be gone. There's a chance I might have missed some bugs, if you find one please post here with a description of how you triggered it and related details (DC region, connected devices, etc)

I've noticed the dpad sometimes seems to ignore inputs (Tends to be after pressing a face button). Not sure if that's a hardware or software bug. Also I noticed a weird thing when testing the release build. The screen flashed/rolled black bars up the screen for a few seconds after losing a game, but this is most likely an issue with some of my hardware since my system does have other issues. Another issue that might be a bug, but more likely is my console is that sometimes port 2 (B) stops responding. Its always that port, happens to any device plugged in and happens randomly.

That's it, I'll post new updated versions here. As for Post-Minesweeper I don't know exactly what I'll be doing, but I'd love to make a new game for the system. The only thing I know about the game is it will probably be 2D and hopefully have a PC port using OpenGL.

Versions/changelog

1.0.0
The initial release.
https://www.mediafire.com/file/8r6ff693 ... 0.zip/file

1.0.1
The only change is that the Expert button used to set the grid to 30 by 20, but now correctly sets the grid dimensions correctly (30 by 16). This won't affect the integrity of records since even in 1.0.0 the game only registered expert records on 30 by 16 grids. This mistake happened because for some reason I thought expert was 30 by 20, but on the day before release a friend told me expert is actually 30 by 16 and he was right. So I changed the code to only accept expert records with the right settings, but I forgot to change the button :P
http://www.mediafire.com/file/kzsjzekdo ... 1.zip/file

1.1.0
The tabs update. I gave the records their own tab called "Best Times" (Instead of sharing the options tab). The controls tab is now complete and contains pixel art by JamoHTP, he doesn't have any social media accounts but he does have a Github that contains some of his Nintendo DS homebrew https://github.com/jameskirkwood. The about page has also been updated to credit JamoHTP and the tab highlights in XP mode are now more visible.
http://www.mediafire.com/file/8yspi2ea0 ... 0.zip/file
Working on a recreation of Minesweeper for the Dreamcast <viewtopic.php?f=34&t=104820>

Twitter <https://twitter.com/ProfessorToffal>
YouTube (Not much there, but there are a few things) <https://www.youtube.com/user/TrueMenfa>
Post Reply