Jump to content
  • entries
    657
  • comments
    2,692
  • views
    898,705

sprite engine back in play


SpiceWare

757 views

Both players are being used to draw all the sprites. At the initial position there will not be any flicker.
blogentry-3056-0-65896300-1490575672.png

The blue test sprite can be moved around with your joystick, the score is used to show your X and Y position. Hold fire to slow down the movement.
blogentry-3056-0-90697000-1490575676.png

During tests I did discover a minor issue, which was most likely present in the DPC+ version as well. X position 4 the sprite looks OK (cropped due to HMOVE bar).
blogentry-3056-0-14740700-1490575680.png

However, at X position 3 the first line of the sprite is missing!
blogentry-3056-0-83837100-1490575683.png

I believe it's because the HMOVE for that player is still active. Should be an easy fix - just do the repositions 1 scanline earlier.

The entire world exists, but the window into it is currently fixed at (0, 0) so it's possible for you to move offscreen in any direction. The radar will show your location so you can make it back to the top-left corner of the world.
blogentry-3056-0-60557600-1490575983.png

Another interesting thing to note - the top of the screen has 5 extra scanlines, you can see both players, both missiles and the ball turned on for those 5 scanlines as a frame of reference. In the old DPC+ version of DPC+ I used the traditional PosObject routine in 6507 code to set the positions of the topmost objects. Due to how that routine works, it would take 6-11 scanlines to set the initial position of all 5 objects. Those 5 extra scanlines now position all 5 objects in 5 scanlines, which saves quite a bit of processing time!

Additionally, I've implemented preliminary support for CDF and BUS in Stella, so keep an eye on this topic for the pre6 test build. Once it's released you can run this, and the Bus Stuffing Demos, in Stella.

draconian_20170326.bin

 


Addendum:
blogentry-3056-0-54948000-1490623063.png

1 Comment


Recommended Comments

Took a quick look this morning and changing this:

  if      (gJumpDataStream[y-1] == NORMAL_KERNEL) position = -1;
  else if (gJumpDataStream[y-2] == NORMAL_KERNEL) position = -2;
  else if (gJumpDataStream[y-3] == NORMAL_KERNEL) position = -3;
  else if (gJumpDataStream[y-4] == NORMAL_KERNEL) position = -4;
  else                                            return 0;

to this:

  // added an extra scanline due to first row of sprite disappearing when the
  // sprite was displayed at X locations 0-3
  if      (gJumpDataStream[y-2] == NORMAL_KERNEL) position = -2;
  else if (gJumpDataStream[y-3] == NORMAL_KERNEL) position = -3;
  else if (gJumpDataStream[y-4] == NORMAL_KERNEL) position = -4;
  else if (gJumpDataStream[y-5] == NORMAL_KERNEL) position = -5;
  else                                            return 0;

which fixed the problem with the missing scanline! Screenshot added to end of blog entry.

Link to comment
Guest
Add a comment...

×   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...