Jump to content
IGNORED

The Southsider - Juno Third


RSS Bot

Recommended Posts

It has been a while since my last blog posting, and I haven't been very active on the site recently. This is not because I have lost interest in the Atari - it is just that I haven't had time to do much on my various projects lately. The main distraction has been a book that I have been writing for the past year. The publishers deadline was the end of February, and as usual I ended up writing the majority of it in the last two months! However, now that it is out of the way I should have significantly more free time again. I would really like to produce something for the minigame competition this year, and the deadline for the Stella programming contest is fast approaching.

 

blog-6563-1142109026_thumb.jpg

 

Over the last week I have been working on my Juno First game again, and the latest version is attached to the top of this entry. It probably doesn't look much different than the previous version, but it now contains a completely new kernel, and some fantastic sprites by Nathan. There are still a few small bugs, and it is definitely the most difficult kernel that I have written so far! This difficulty comes from the fact that I wanted the sprite graphics to be updated every line (i.e. a 1-line kernel), but this potentially requires doing all of the following tasks on every line:

  1. Display the spaceship sprite.
  2. Display the alien sprite.
  3. Change the spaceship and alien sprite colours.
  4. Display the two missile sprites.
  5. Display the laser beam.
  6. Display the moving grid.

I had to make a few compromises to fit everything in (e.g. the missiles are only updated every other line), but overall I am reasonably happy with the way things turned out. The result is really at the upper-limit of what is possible on the 2600 without any extra memory. It took me many hours of careful unrolling and optimisation, and there were many times that I though it wouldn't be possible. The tightest part is when the ship needs to be displayed at the bottom of the screen. There are absolutely no free cycles at this point, and I can't see any way to squeeze this code further. The entire kernel is written without any illegal instructions, as none of them seemed appropriate.

 

The biggest problem with the current kernel is the HMOVE bars, which cause the gridlines to flicker along the left edge. There are a number of possible solutions, but none of them are ideal:

  1. Perform an early HMOVE -> may cause problems on PAL Atari Jr machines.
  2. Use the PF to hide the left part of the screen -> will appear in the same colour as the laser beam.
  3. Perform an HMOVE on every line -> not enough space kernel cycles.
  4. Update COLUBK on cycle 26 -> tricky but not impossible - will make the left border larger than the right border.
  5. Ignore the problem -> looks a bit messy and will also interfere with the sprites.

I am currently leaning towards the fourth option, but I was wondering if anyone has any better ideas? Also, any more suggestion on how to tighten the code are welcome. The (messy) source code is included in the zip archive.

 

Chris

juno3.zipjuno3.bin

 

http://www.atariage.com/forums/index.php?a...&showentry=1330

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

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