Mindbender Atari ST / PC

Discussion about Rocks'n'Diamonds, Boulder Dash, Supaplex, Emerald Mine and any other BD hybrid.

Moderators: Flumminator, Zomis

Post Reply
CScholz
Posts: 2
Joined: Wed Mar 15, 2023 1:44 am

Mindbender Atari ST / PC

Post by CScholz »

Hey hey everyone,

I was stunned when I found this forum and realized that there actually are people who are still interested in Mindbender. My name is Chris Scholz and I wrote the Atari ST and DOS versions of that game for Magic Bytes and Gremlin Graphics, back in 1989.

Ask me anything =)
...but unfortunately, no, I don't have the sources anymore (before that gets asked) - I remember I needed space on my hard drive some ten years after it was done. I had backups for a while, but those were left behind in a chaotic move some years after that.

Chris Scholz

PS: There is a cheat mode in the PC version to open up 50 additional levels and the level editor: Use the player name "ELLYB" in a specific slot, I think it was the last one or maybe the second one from the top. Just try them all =)
Flumminator
Posts: 184
Joined: Fri Jun 18, 2004 8:08 pm
Location: Germany

Re: Mindbender Atari ST / PC

Post by Flumminator »

Hi Chris, welcome to the forum!

Being here as a Rocks'n'Diamonds-player I had to google Mindbender first and was in for as big surprise when I saw its familiarity to the MirrorMagic and Rocks'n'Diamonds UIs :D
Ask me anything =)
Ok, here I go: As stated abvove, I am not too familiar with the game itself. But I am a software developer myself, so most of my questions are about how was software development done in the late 1980-ies.
  • Was the original version of the game already written in C or another high-level language, and if yes, how much of the original code could you re-use for the ports?
  • What kind of toolchain/IDE did you use?
  • Did the development happen on the respective target machines or was some cross-compiling involved?
  • Maybe a little mundane question: How did you get the data like graphics from the Amiga to the Atari and PC? From what I gathered, the disk drives between these systems were largely incompatible and networking was not as ubiquitous as it is today.
  • And finally a personal pet topic of mine: did you use any version control system back then? If yes, which one?
Thinking of it now, most of these questions I could as well ask Holger himself ;)
Flumminator->PostCounter += 1;
CScholz
Posts: 2
Joined: Wed Mar 15, 2023 1:44 am

Re: Mindbender Atari ST / PC

Post by CScholz »

Ok, here I go: As stated abvove, I am not too familiar with the game itself. But I am a software developer myself, so most of my questions are about how was software development done in the late 1980-ies.
I wouldn't call it software development, really. That requires some kind of engineering. Let's call it hacking =)
Was the original version of the game already written in C or another high-level language, and if yes, how much of the original code could you re-use for the ports?
I am not sure if I remember correctly, but I think I never got any original code or maybe only parts of it. I got a set of graphics, sound and sketches, got on my ST and programmed it. Later someone gave me the final bits and I replaced the sketches. It was wild. But we all used higher level languages, usually C. I used some inline assembler for some initialization and the BitBlt, screen buffer and line drawing functions.
What kind of toolchain/IDE did you use?
Borland C, on the ST it was called Turbo C - and a whole lot of scripts and little programs to convert file types and graphics. Nothing fancy.
Did the development happen on the respective target machines or was some cross-compiling involved?
For Mindbender it was kinda both. I wrote a lot of the source with portability in mind and had to just switch out some of the more low level stuff on the PC. That worked quite well. I actually had to write the PC version multiple times, for CGA, EGA and *wow* VGA. I am not sure if the monochrome version for Hercules made it in the release, it never worked well enough. I remember the source was full of conditional compilations (#ifdef __ST_) for the different versions, so that I had to change only one source if needed.
Maybe a little mundane question: How did you get the data like graphics from the Amiga to the Atari and PC? From what I gathered, the disk drives between these systems were largely incompatible and networking was not as ubiquitous as it is today.
Hihi, networking... *grin* I remember us trying to get a game to the US for publishing - on a 28.8 modem on a weekend night in Gütersloh and the deadline was monday. It didn't work and we had to finally ship it overnight via FedEx.
The disk part was actually easy. The floppy disk low level formats are compatible, the high level formats can be emulated or replaced with your own.
And finally a personal pet topic of mine: did you use any version control system back then? If yes, which one?
No sorry, my VCS always was part of my build scripts, no git or sccs or subversion. Create a new directory with a counter in the name, copy the new file or diff as backup, zip the stuff every couple days to save space. Delete the rest.
Thinking of it now, most of these questions I could as well ask Holger himself ;)
Holger and I actually never met or worked together. I am sure he has his own stories to tell. Hi Holger =P

Back then most of us were solo artists, nobody you can ask, no google or even books for the most part. You do it or you don't. It either works or, well, it doesn't. That time really helped me a lot in my later career. Today my job is best described as a problem solver. I get projects or software or IT to run. And I learned it those 35 years ago, starting with Mindbender or Deflector 2 or Mirror Magic or whatever it's actually called today.
User avatar
Holger
Site Admin
Posts: 4073
Joined: Fri Jun 18, 2004 4:13 pm
Location: Germany
Contact:

Re: Mindbender Atari ST / PC

Post by Holger »

Welcome to the forum, Chris, also from me! :)
Thinking of it now, most of these questions I could as well ask Holger himself ;)
So I will also add some answers to your questions. Maybe I can add some strange or funny little details from the past. ;-)
Ok, here I go: As stated abvove, I am not too familiar with the game itself. But I am a software developer myself, so most of my questions are about how was software development done in the late 1980-ies.
I wouldn't call it software development, really. That requires some kind of engineering. Let's call it hacking =)
That's funny -- I am not really sure if the differences in software development are really that big! Sure, we now have cool GUI IDEs, great source code management tools and an internet full of documentation and code examples in a bazillion of open source projects, that's right. But in the end, you're sitting there with a problem to solve, thinking about it, then writing some code (or sometimes writing code first, then thinking about it ;-) ).

Regarding GUI IDEs, well ... I'm still using Emacs most of the time, even though these nice IDEs sometimes have their advantages. ;-)

The two main advantages today that come to my mind immediately are the tons of documentation available from the net (of course), but especially the opportunity to get in contact with other people sitting over similar problems or having worked with some similar code, software or programming languages, regardless of them sitting next door to you or at the other side of the planet. Back then, you sometimes had the feeling that you were the only one doing such things like programming (with many people around you who liked to play video games, but only a few who also did some programming -- but on a different home computer system, if you were unlucky ;-) ).
Was the original version of the game already written in C or another high-level language, and if yes, how much of the original code could you re-use for the ports?
I am not sure if I remember correctly, but I think I never got any original code or maybe only parts of it. I got a set of graphics, sound and sketches, got on my ST and programmed it. Later someone gave me the final bits and I replaced the sketches. It was wild. But we all used higher level languages, usually C. I used some inline assembler for some initialization and the BitBlt, screen buffer and line drawing functions.
Sounds very similar to the code of the original version of "Mindbender" (then called "Mirror Magic") -- most of it written in C (using the Aztec C compiler on the Amiga, which was a lot faster than Lattice C back then, which was the second C compiler available), and some selected routines re-written in inline assembler for speed.

Regarding "IDE", I think I used MEmacs (or was it called "MicroEmacs"?) back then, which had not much in common with the "real" Emacs, but reminded me more of "vi" later. :-)
Did the development happen on the respective target machines or was some cross-compiling involved?
For Mindbender it was kinda both. I wrote a lot of the source with portability in mind and had to just switch out some of the more low level stuff on the PC. That worked quite well. I actually had to write the PC version multiple times, for CGA, EGA and *wow* VGA. I am not sure if the monochrome version for Hercules made it in the release, it never worked well enough. I remember the source was full of conditional compilations (#ifdef __ST_) for the different versions, so that I had to change only one source if needed.
Very interesting! And I am surprised that you even tried to support Hercules, which would have been very tough! :-o

For the Amiga version, there was only one target platform, so not much need for #ifdef's (and surely no cross-compiling).
The disk part was actually easy. The floppy disk low level formats are compatible, the high level formats can be emulated or replaced with your own.
Floppy disks were only compatible between ST and PC on hardware level -- ST and PC could not read Amiga disks, only vice versa. So you could put a 3,5" ST or PC floppy disk (720 KB format) into an Amiga floppy disk drive and read/write stuff using a special emulation software for the ST/PC disk format. That way it was possible to exchange files between Amiga and ST/PC (or using a null model cable and an terminal software with ZMODEM protocol).
And finally a personal pet topic of mine: did you use any version control system back then? If yes, which one?
No sorry, my VCS always was part of my build scripts, no git or sccs or subversion. Create a new directory with a counter in the name, copy the new file or diff as backup, zip the stuff every couple days to save space. Delete the rest.
Exactly that way -- same here. :-D
Holger and I actually never met or worked together. I am sure he has his own stories to tell. Hi Holger =P
It would have been cool it we could have worked together porting the game to ST and PC! Especially as Gütersloh (if you have been there now and then) is right next to Bielefeld. :-D
Back then most of us were solo artists, nobody you can ask, no google or even books for the most part. [...] That time really helped me a lot in my later career.
So true! :|

When porting Mirror Magic to Linux, there was no web and no Google, so I ordered some very expensive books from Addison Wesley on X11 programming so I knew what to do. :-)
And I learned it those 35 years ago, starting with Mindbender or Deflector 2 or Mirror Magic or whatever it's actually called today.
Regarding all those names, the game in fact started as a Deflektor clone -- I played this on my C64 before the Amiga, and also wanted to play something like that on the Amiga. (I think there even was an Amiga clone of Deflektor, but I am not sure if I ever played it). And since I was already programming on the C64 (and had already written some little games for the Amiga), I just started writing my own version of this type of game, which looked a lot like Deflektor, but being played with a mouse (as it should always have been, but there never really was a mouse for the C64, just a GEM clone called GEOS where you moved the mouse pointer with a joystick, just as you moved the cursor in Deflektor with the joystick). The working title of the first game version was "Lightballs", but people at Time Warp Software told me that this title would most probably sound funny in the English speaking world, which is most probably true. ;-) :-D So it was changed to "Mirror Magic" (and I do not remember anymore if this name was my own idea or that of somebody at Time Warp Software).

So the "golden master" of the (not yet) final game was still called "Mirror Magic" (which can also be seen at the original title screen which again part of the last few versions of the game), but was later changed to "Mindbender" when the game was finally released by Gremlin Graphics (even though they apparently thought about releasing it as "Deflektor 2" for a short time, because there is indeed a very early article in an Amiga computer games magazine that pre-tested the final game under that name!). (That "golden master" even had a pre-title animation which was removed in the final release version; I already have a level set with that animation ready to play in R'n'D or Mirror Magic, but I'm not sure yet if I should release it, as it uses a short music sample that could be a problem.)

When porting the game to Linux in 1994 or 1995, I used the name "Mirror Magic" again, which now has two level sets "Mindbender" and "Deflektor" (which was not part of the original game, of course). As Chris was talking about "50 additional levels", it would be cool to rip those levels from the ST/DOS version and add them as a new level set "Mindbender 2". I will have a look at this when I have some time... ;-)
filbo
Posts: 647
Joined: Fri Jun 20, 2014 10:06 am

Re: Mindbender Atari ST / PC

Post by filbo »

Why would supporting Hercules be a challenge? Just because the graphics of any game would probably need a lot of work to be usable in a true monochrome mode?

I added Hercules support to a couple of things back in the day (Borland Turbo Graphix Toolbox, and then Reflex DB). The one true challenge was the ability to reliably detect a Hercules vs. a regular text-only mono card. I did it by some tricky observations about how the vertical(*) retrace signal fluctuated. Today I think: why didn't I just probe for enough real RAM (not wrapped / shadowed onto itself every 4KiB)? But I suspect the answer was: while in mono mode, the memory actually was wrapped like that, and trying to program the CRTC into Hercules graphics mode to unbend those address lines would potentially damage a real text-only card (or attached monitor), so I didn't dare try it! Around that time I had the cautionary tale of early alphas of IBM TopView blowing up monitors, and I didn't want to become a participant :)

(*) Or might have been horizontal? I forget at this point...
Post Reply