Sunday 26 December 2021

"Dropship" by Darren Ottery Ported to Micro Color BASIC

I've been working on Jaz's (Darren Ottery) "Dropship." Trying to make it all fit in one program that only needs regular Micro Color BASIC.

Dropship by Darren Ottery

My hope was not to mangle it too much by down shifting it from the more capable and feature rich MCX BASIC provided with the MCX Micro SD pack. Many compromises had to be made, since I was worried I wouldn't have enough memory with over 20 unique screens of data for its complex map and the merging of the two minigame sub-programs into one large program, but it actually turns our that there's quite a bit of memory left (3000 bytes).  So, I was able to add back in a few features I'd taken out, such as the exit indicators that flash in the initial room at program startup.

I asked Darren if he'd mind me adding my initials to the splash screen-- a lot of work went in to converting all the screens to strings, as opposed to using the MCX LOADM command, which allows whole screens to be loaded directly. The effort made me appreciate all the work Darren put into the game. It's an incredible program. I'm still amazed it's all done just in BASIC, so many cool effects, such as the swooping fighters in the minigame and the flapping animation. I have wanted for some time to make sure others without an MCX expansion pack could play it too. Darren graciously agreed to let me put my initials on the splash screen.  He wrote:

"you go Jim! This was an exercise in learning what the MCX could do in some respects. Perfect that you are bringing it back. I've pushed pause on my current MCX project which I'll finish one day. I want to focus writing in Color basic and compiling with Greg Dionne's tool. I need to figure if I can do it all on real hardware."

And go I did . I added lot's of speedups, changes to the maps to get them to render appropriately in Micro Color BASIC. The big change was that you can't have any special reverse characters, like space and punctuations embedded in strings in regular BASIC, unlike what the fancy MLOAD command allows for. Also, the inability to use reverse space (32) in strings meant areas that were open to having aliens or POWER put into them had to have another colour or character placed there.  For regular passages I chose 96, so that the strobe effect from alternating the screen colour (POKE419151,64) could still occur.  For the more complex rooms, I replaced 32 with black.  This toned down the strobe effect a little, but they looked odd with strips of regular space characters around them.

Reconciling the merging of the three main programs (Maze explore, Alien shoot'em up, Descent). required loading and renumbering the sub programs so they could be merged into the main program.  There's no equivalent to the CHAIN command and special variations of the RUN command that MCX BASIC provides, which allow programs to call and recall other programs. 

I also added to the dropship animation when it leaves the bay. Now it actually looks like it is descending from the bay.  Instead of the whole screen simply scrolling upwards, the lander stays in place, which simulates its descent from the bay:

The exits to rooms are now alt black characters, so they aren't visible as in the original. Full scores appear on alien shoot'em-up, instead of being limited to 2 characters (100 would appear as 10). I changed the key input to WASD in the hopes of enticing my son Charlie to try the game, since he's home over Christmas. I made some changes to the final landing-- now crashes into the walls on the final screen don't end the entire game, they just take a life (if you have any left) just like what happens during the descent. I also made some edits to the instructions to condense them to fit the 128 character line limit of Micro Color BASIC. MCX BASIC allows for 255 character lines.

I hadn't implemented the shift between the shoot'em up subprogram and the main program properly initially. Darren had it so that after you do each shoot'em up minigame that room turns into a regular passage.  This meant you could only earn 2 stripes.  I had made it so that you returned to the start room after each shoot'em up and could return as much as you liked. I only noticed my mistake when I went back to play the original to do some checks on my sound translations.

Final speed enhancements involved basically chasing down unnecessary variables and replacing them with scratch variables. I needed as much speed as possible (a smaller number of variables means a smaller lookup table, which speeds things up) because the lack of a PLAY command and the necessity to use SOUND instead (which is a slower less subtle sound producer in general) for the footsteps of the player.  This meant I needed to scrape speed anywhere I could to keep the main loop as "tight" as possible. It took some trial and error to find reasonable replacements for PLAY sound effects using only SOUND.  I did my best, but it's only a rough approximation of Darren's cooler music and sound effects from the original, but I hope it will do.

DROPSHIP can, as for my other games, be played on my web page:

http://faculty.cbu.ca/jgerrie/MC10/JG_MC10_Recodings.html

Finally, I created a map, and I was thinking of attempting a recording of a complete playthrough (either me or my son), but I'm unsure if this would spoil the "mystery."  But the point is moot.  The game is too tough for me to complete it (I'm a crap gamer).

But as I said, maybe I can get me son Charlie to try. He's got nimble young fingers.  But if you're looking for some help, here's a map of the main game maze layout provided below:




WARNING!!!!!!!!!

********************

SPOILER ALERT!

********************

GAME MAP BELOW






       1  2  3  4  5  6  7

                          
1      +--+--A--+  N  +--D
       |  |     |  |  |   
       |  |     |  |  |   
2      S  +--+--T--+  L  P
       |        |  |  |  |
       |        |  |  |  |
3      +--+--+--+  I  +--+
             |     |  |  |
             |     |  |  |
4      C--+--+  +--+  +  +
          |     |     |  |
          |     |     |  |
5      +--+--+--+  +--O--+
       |        |  |  |  |
       |        |  |  |  |
6      +--A--+--+--+  +--+


S=START
A=ALIENS  C=CARD   I=ION DRIVE  L=AIR LOCK  
O=CORE    N=NUKE   P=POWER      T-TRS-80 ROOM

P.S.  I did finally complete the main level:




No comments:

Post a Comment