Monday, May 16, 2011

Some new insight into the Ultima map…

Hello all,
Well, I have been beating my brains out trying to figure out how Richard was able to move all the tiles/shapes across the screen so fast and smooth!  I mean WOW, when I play the original version on my apple IIe, I can move back and forth really fast and there is no lag or stutter in the movement of all the tiles!  This got me to thinking!  I have a couple of ideas how he did it and I found out how he could not have done it!
First, how he didn’t do it:  Ok, I created some shapes using Shapes in Color program, which is an easy program to use by the way.  After I created about 8 to 10 shapes, mostly the map highlights such as trees, plains, mountains, and dungeons, etc…  I used an array and some for-next loops to DRAW all the tiles on the screen.  This process works but is really slow, you can actually see all the tiles being placed on the screen one after the other.  As you can see from the image earlier in the Blog, I was successful in creating an Ultima map screen but this was ultimately a Failure!  Next, I tried to POKE the shapes on the screen but since they are created shapes using vector plotting it just doesn’t work right. 
How I think he did it: I think he created him tiles by using LARGE size character sets and replacing them with original character sets.  Example; he made some trees in double size of a small character set, which is 14x16!  First clue!  All of Richards tiles are 14x16 pixels and a LARGE size character is 14x16! Second clue!  You are able to POKE character directly to the screen and scroll them much quicker than you can shapes!  So I think Richard used a set of created characters and replaced the unused character in the apple memory.  This way he can CALL them from memory and POKE them around the screen much quicker!
So now, how did he do this!  This is what I will try to accomplish next!  I have already started to make some LARGE size character sets.  I will only create the main map tiles and a single main fighter character, and maybe one or two monsters!
Once these are complete I will save this character set into the unused lower character set and then try to manipulate them around the screen and see how fast I can get this to work by using POKE and CALL statements.
I will let you know how it goes later…

No comments:

Post a Comment