CellarScramble. A bit of progress

CSWalkThroughThe story so far.

As we wizz through the half-way stage there has been some progress.

I have written code to handle a collection of upto 256 8×8 tiles. I also have structures that arrange tiles into upto 255 rooms of 4×3 tiles each and routines that can draw a room and tell me what room I’ll end up in if I leave the current one in any direction. This means I have a complete map of 30 rooms at the moment, interconnected.

Next up I have some routines that can handle my player sprite. I can read the screen memory below the sprite (so I can put it back later), draw a sprite and then put the ground back (told you I’d need it later).

The little GIF is a walk through of part of the cellar (click on it to see the animated version).

Currently there is no collision detection, baddies, goodies and there is no timing and video blanking type work. But, not bad so far.

 

 

Retrochallenge – CellarScramble. Moving along.

I have decided to try a game on the Sharp-MZ-700 and called it CellarScramble.

It’s a top down dungeon run and as the Sharp only has character based graphics I’ve gone the route of defining 8×8 tiles and making the rooms out of these tiles.

I’ve now defined a map of 30 rooms and the tiles that make them up. I’m not going to show you the map, that would spoil the surprise. 🙂

Now I need some coed to move sprites and check for collisions. Hmmm.

Retrochallenge – A bit of a plan.

In my first post of this season’s Retrochallenge I did a bit of experimenting around memory-mapped screen access on the Sharp MZ-700. I’ve decided to try and come up with something a bit like “Atic Atac” a splendid top-view runing about game for the spectrum.

The Sharp doesn’t have dot-addressable graphics like the Spectrum so everything is character based. So it’s going to be different but we’re working with the tools we have.

So far I have written some code to draw rooms using tiles and so far, I’ve got one room…

Screenshot from 2015-07-12 16:17:00Now I’ve got code to draw rooms and a pallet of tiles, I can build a dungeon.

Welcome to…

Cellar Scramble

Mwaa Ha Harrr.

Retrochallenge 2015 – Here we go.

We’re four days into retro challenge and I’ve finally got started.

My plan is to do “something programmy” on a Sharp MZ-700. I’ve set up my stall and now for the programming. I’ve not used C on a Z80 before nor anything beyond “Hello World” on an MZ-700 so I need to find out some basics.

First I’m going to output a character grid using memory mapping (rather than standard output – printf) because I get further, memory mapped screen access will be needed.

I’m using Z88DK to write in and MZ-700 emulator under DOSBOX to test. I’ll try it on a real MZ-700 before I’ve finished.

First, some code…

/*
 * charmap.c
 *
 * A simple memory mapped display of the character and colour map on
 *  the Sharp MZ-700.
 *
 * Andy Collins. July 4th 2015.
 *
 */

#include <stdio.h>
#include <stdint.h>
#include <string.h>

void main(void)
{
  u8_t  *screenRam = 0xD000;         // Start of screen memory. Top left.
  u8_t  *colourRam = 0xD800;         // Start of colour attribute memory. Top left.
  u8_t  xLoop = 0;
  u8_t  yLoop = 0;
  u8_t  currentChar = 0;
  const u8_t myChar = 0x41;

// Output a square with the complete character set.
  screenRam += 4 * 40 + 4;         // Move top left in a bit
  for(xLoop = 0; xLoop < 16; xLoop++)
  {
    for(yLoop = 0; yLoop < 16; yLoop++)
    {
      *screenRam++ = currentChar++;
    }
    
    screenRam += 24;
  }
    
// Now a square of the colour combinations
  screenRam = 0xD000 + 4 * 40 + 20;  // Start of colour square in screen RAM
  colourRam += 4 * 40 + 20;         // Move top left in a bit
  for(xLoop = 0; xLoop < 16; xLoop++)
  {
    for(yLoop = 0; yLoop < 16; yLoop++)
    {
      *colourRam++ = currentChar++;
      *screenRam++ = myChar;
    }
    
    colourRam += 24;
    screenRam += 24;
  }
    
  while(1)
  {
  }
}

And a screenshot…

Screenshot from 2015-07-04 11:44:43Tadaa :-).

 

There’s someone out there.

Hi recently received a very interesting  message as a comment to one of the other pages on the website. It seems that there is another person out there who’s seen one of these fascinating machines.

William Corcoran used one a few years ago and kindly posted this information.

Hello,  I would like to comment on the Motorola S2000.  

I have been searching for years for this machine.  I can’t believe I found someone who has one.  It means so much to me.  

I would love to share with you what I know.  This little box was the DPU (data processing unit).  It connected to other similar boxes that contained hard disk drives (50 MB) and tapes (WANGTEK).

This is the first box that I learned UNIX on.  

Way back in 1986 when this box was hot, the disks would click so loudly as the heads moved.  I have so many stories to share about this box.

However, I will tell you that this little thing was years ahead of its time.  Unix was nearly virtualized!   You see, the main OS was an executive call ISOS.  And, little UNIX actually ran as a process under ISOS.  It was the coolest thing.  

Yes, it was initially AT&amp;T System III and then System V.  

The box had some really cool diagnostic software.  The company I worked for at the time (1986) used this box as their main system for word processing.  We used Motorola Codex terminals.  

Well, this is the box I cut my teeth on with UNIX.   When you signed on to ISOS, you could do a “ps” equivalent and you would actually see UNIX running as a process.  At night when everyone went home, I would spend hours learning UNIX.  Also, I normally would create a stand alone backup of the hard disks.  Then, by the end of the night, I would invariably hose the OS by accident (trying to tweak it).  Then, I would have to restore the entire disk (block copy via dd) from backup tape.  

I was so naive to not really understand how dangerous it was to restore the disk by way of stand alone recovery.  Yet, I think I restored the disk over 20 times over the course of 1 year.  It never let me down.  

In the old days, in order to power off UNIX, you had to flush the disks:

sync;
sync;
sync;

And then turn off the box really quickly!

I remember the awful feeling of crashing the system, fsck would clean it all up and then:

BOOT UNIX; NO SYNC!

So, you had to prevent the in core copy of the FS from overwriting the work that FSCK just did on the root volume.  

I would always seem to get it to a point where FSCK would start screaming:

UNREF INODE XXXX, CLEAR?  (Y/N):

And, it would be an infinite loop of endless messages!  

TIme to put the restore tape in!  

(This little S2000 is so important to me!  Take care of her!)

and also this piece…

One more note on the Motorola S2000.

The console was assigned to tty6. Thats why you did not get anything out of it when you connected to tty1.

Try using tty6

Thanks very much for that William. Next time I get the S2000 I’ll try tty6 and see how I get on.