Jump to content
IGNORED

Shamus 2080 First Look


Recommended Posts

 

Simple to move around

 

Give them the Starting Location, NPC NAME , Direction and Speed

 

 ;  (BYTE 0-1, X/Y) (BYTE 2, NPC TYPE/DEAD) (BYTE 3, DIRECTION) (BYTE 4, SPEED)

    DB $21,$18,SWIRL,NO_MOVE,0,0,0,0

 

    DB NO_MOVE

    DB NORTH
    DB SOUTH

    DB EAST

    DB WEST

    DB NORTH_EAST

    DB NORTH_WEST

    DB SOUTH_EAST

    DB SOUTH_WEST

 

 

 

Put these commands in a table then let them do their thing.

 

They can move in any of the 8 directions as if they were sprites.

 

After I optimize the code I will release either a binary or video.

 

 

 

 

Edited by Captain Cozmos
  • Like 2
Link to comment
Share on other sites

Still honing my craft.

 

It is amazing to me and I made the thing.

At some time I plan to make these larger.  Not in this game but in others.
I am finding that making patterns act as sprites is not as hard as I thought but takes planing and a lot of time putting together.

What I am gathering from a lot of these games I see around such as Asteroids, why use flickering sprites when you can use patterns?

 

I disassembled the original Colecovision Time Pilot.  They used Patterns for almost everything.  When you look at the upcoming TP Sequel, which I can only suspect that is an MSX port.  Flickering Sprites.
This is not criticism of the games or work people have done but my way of thinking is to use the tools at hand.
When you look at the time constraints and having to do it all by hand in the past you understand all of that old work.

Today, we have modern tools to assemble all the graphics in a matter of days if not hours.

 

Now that I have the math and the concept of tables it is only going to get easier.
 

Link to comment
Share on other sites

 

 

I stopped at 48 independent pattern objects.  I know it can handle more but I see signs of struggling and the original goal was 40.
Maybe one of these days I will try some bragging rights and fill the entire screen or something but until then it is what it is.
 

So far with all the optimizations I have been able to get this under 7k.

Mind you this is a separate build with a few of the internals used in the Shamus shell.
The focus was to have up to 40 independent enemies and I achieved that goal so now I have to put it all together along with everything else that is missing.
 

 

  • Like 1
Link to comment
Share on other sites

47 minutes ago, Captain Cozmos said:

 

 

I stopped at 48 independent pattern objects.  I know it can handle more but I see signs of struggling and the original goal was 40.
Maybe one of these days I will try some bragging rights and fill the entire screen or something but until then it is what it is.
 

So far with all the optimizations I have been able to get this under 7k.

Mind you this is a separate build with a few of the internals used in the Shamus shell.
The focus was to have up to 40 independent enemies and I achieved that goal so now I have to put it all together along with everything else that is missing.
 

 

You Sir are either a genius or a madman...great work. 

Link to comment
Share on other sites

24 minutes ago, Yurkie said:

You Sir are either a genius or a madman...great work. 

Check out the new one because I could not leave well enough alone.

 

60 independent enemies, real ADAM, kick ass music.
 

 

This is the end result of studying my disassembles, tables and IX is my new best friend.

I know these move as one unit but I am using one table.
Otherwise I would have to have 60 independent data sets just for this demo but they all are independent.
Speed, pattern, xy, direction.
for this it was 8x60 = 480 bytes.  Out of those 8 I am only using 7 with 1 reserve for possible use later.
With all the tables and IX I only have a 1 byte counter so the total memory used is 481 bytes plus the stack.

No NMI corruption

 

I'm not going to post another one but they can go at least one step faster.
I wonder how many I can fit on screen.

 

Edited by Captain Cozmos
Link to comment
Share on other sites

28 minutes ago, Captain Cozmos said:

Check out the new one because I could not leave well enough alone.

 

60 independent enemies, real ADAM, kick ass music.
 

 

 

This is the end result of studying my disassembles, tables and IX is my new best friend.

I know these move as one unit but I am using one table.
Otherwise I would have to have 60 independent data sets just for this demo but they all are independent.
Speed, pattern, xy, direction.
for this it was 8x60 = 480 bytes.  Out of those 8 I am only using 7 with 1 reserve for possible use later.
With all the tables and IX I only have a 1 byte counter so the total memory used is 481 bytes plus the stack.

No NMI corruption

 

I'm not going to post another one but they can go at least one step faster.
I wonder how many I can fit on screen.

 

Wow. Let's see some firing at live enemy sprites please. Just a single level of gameplay would be incredible 

Link to comment
Share on other sites

Again, I just could not help myself.
To prove that these are independent entities I disabled the loop and randomized the directions of most of the 60 patterns.

The screen becomes scrambled because I have not programed any kind of wrap around so the patterns go off and corrupt the screen memory but you get the idea.
 

I am proud of my work.

 

Edited by Captain Cozmos
  • Like 2
Link to comment
Share on other sites

Most of the wrap around is in place.

I know that these objects will not be wrapping around in the Shamus game but this routine will be in others to come.

 

I put in a kill bit so if an object is killed (turned off) it will be skipped over before sending to the screen so it does not slow anything else down or occupy space.

 

Currently these things pass through each other with grace.  Next will be a collision mask so no two of these can occupy an owned space be it a wall or other object.

 

 

A ways back there was someone who made a version of lemmings for the Colecovison.  These objects would be great for that type of game.

How about Sinistar?  Krull?  Thousands of application and I am not sure why it has not been done before or maybe I missed it.

Edited by Captain Cozmos
Link to comment
Share on other sites

On 5/20/2023 at 6:45 PM, Captain Cozmos said:

Now fixed the wrap around in all directions, no more vram corruption.
 

 

Could each of the 8, be destroyed if they make contact with one another? And could you have the pattern change momentarily to an explosion when they collide?

Link to comment
Share on other sites

I'm working on collisions now as the next step.

I would also like to make a no sprite version of pong as proof of concept.

 

 

The other game I was working on, Them's be Fight'in Cars uses 3 pattern wide missiles.  So that is 8x24 and fly by at full speed.

I can make clouds, NPC characters, you name it.  Al be in 1 color though.

I could even have even more if I use Mode 1 because you can have 768 pattern spaces.

Despite no Sprites, I can also make 1 color games in text mode or make the first game in multicolor mode if I wanted to.
 

Edited by Captain Cozmos
Link to comment
Share on other sites

1 hour ago, zyzzle said:

Impressive routine, so smooth. You should make a Captain Cozmos version of Time Pilot to add to the fray.

I already started that but PixelBoy? beat me too it which I think is just another MSX port.  Please don't hold me to that statement.
I looked at the preview and I see flickering clouds which leads me to believe that they are all sprites.  I disassembled the original Colecovision Time Pilot which is all made up of patterns but under the BIOS Object system so it was not an update of the original.  He could also have rewrote the whole thing from the beginning which is cool too.

 

Mine is a rewrite of the BIOS routines and more direct without the several step process of setting up tables, providing addresses and overhead.
Basically create the patterns, provide a direction and speed.

Change the direction on the fly by giving the direction bit of the object number.  Same with speed and X/Y  The system takes care of the rest.

If I ever create a higher level routine it would look something like:

Object 5, Start XY (16, 12), Direction North, Speed 2, Active, Score 10

I started development on this but only a horizontal version when I was working on Dino Eggs because the creatures never go diagonally and I think the spider went horizontal.  So I got the Horizontal and Vertical perfect then I had to make diagonal.

I hate flicker and I wanted at least a 3 color sprite for the main character.


 

Edited by Captain Cozmos
  • Like 1
Link to comment
Share on other sites

  • 3 weeks later...
On 5/23/2023 at 5:48 PM, Yurkie said:

Could each of the 8, be destroyed if they make contact with one another? And could you have the pattern change momentarily to an explosion when they collide?

Sigh, last of the 4 graduated and now she went to Texas to spend a couple of months before she comes back to start college.

A lot to do around the house plus I purchased like 11 trees to plant.  So, I am trying to limit this to the weekends.

That said, I worked on this last night and I have collisions between patterns now.
I had to find a way to parse the NPC array with the minimal amount of work because the game has up to 50 enemies on screen at one time.

So before an NPC moves, it checks for an object in the next block of travel.  If it find something it sets it's own collision flag then searches the NPC array to find who it ran into.  It really sounds worse than it turned out to be.  Once I figured it out that is.

 

The only changes I had to make is that it checks on every 4th movement because there is a new animation pattern every 2 bytes.  2*4 = 8 next cell.

This is where my thoughts on Montezuma's revenge came in because that game cycles through the animation using register 4.

I could have done the same thing but I would have to rewrite the tables that I love so much.
The table picks all the patterns with a single number so I never have to do anything else.  When I give it a new direction, the table picks those patterns as well.

 

So now I have to animate an explosion with sound and set the clear bit for the two objects.  Once it is completed I'll release the rom to show I am not up to shenanigans.

I think I might add a menu that you can enter in how many enemies on the keypad.

I am also thinking with all of this how easy it would be to write Coleco Astrosmash.

TC started a youtube series like 30 years ago making this game where you follow along.

Unfortunately he has not found the time to finish the game so I suspect he would not mind if I had a go at it one of these days.


As far as Shamus is concerned, these objects are the basis for all my upcoming games that will need these types of enemies so what I am doing for this demo is an investment.  The ones for Shamus don't have to be this complicated but at the same time when I look at the game on youtube the enemies bounce around the screen when I thought this game was based off Berzerk where the robots move smoothly.

I feel that the Colecovision has been ignored for serious gaming because patterns have been hard to deal with and the 1k limitation but I am finding new ways to program and hopefully I can demystify the whole process so everyone can use these techniques.  Seriously, you look at all the Coleco documentation out there and tell me where are the examples of the Object tables.  Where is the set up and execution because there are none.  Everyone wants to do the basics.  Sprite this and Sprite that despite the flickering.

I want to be able to make a Zelda type game with NPC's running around doing things.
Now if we can get a modern sound and music editor that compiles in Assembly we can get games to you faster.

 

CC

Edited by Captain Cozmos
  • Like 2
Link to comment
Share on other sites

@Captain Cozmos I look forward to your eventual ROM release, because what you are doing is crazy insane and so damn cool 👍

 

Be great to see this running on my system, and what a great demo it will be. Speaking of which I think someone started a new topic aimed specifically at demos ;)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...