[stella] RESBL strangeness

Subject: [stella] RESBL strangeness
From: "Eric Ball" <eball@xxxxxxxxxx>
Date: Thu, 10 Oct 2002 14:31:11 -0400
I've been working on adding a skeleton direction pointer to Skeleton.
(status: PAL version working, just adding a couple of enhancements, need to
migrate some of the changes made in the PAL version (less than 181 bytes
free) back to the NTSC version.)  The direction pointer is done using the
ball sprite, but I am seeing some very strange behaviour.  Here are the
code extracts:

      LDA   #$31        ; ball width = 8
      STA   CTRLPF      ; reflect playfield

      BEQ   PBALL1      ; 0=center (ahead)
      BPL   PBALL2      ; +=right, -=left
      LDY   #3          ; 3 * 8 * 3 - 68 = pixels 4-11
      BNE   PBALL3
PBALL1      LDY   #6    ; 6 * 8 * 3 - 68 = pixels 76-83
      BNE   PBALL3
PBALL2      LDY   #9    ; 9 * 8 * 3 - 68 = pixels 148-155

      STY   WSYNC       ; -0
      STY   RESBL       ; -2
PBALL0      DEY         ; +2
      STY   RESBL       ; +3
      BNE   PBALL0      ; +2/3
      RTS

The kernel then uses ENABL to turn on the ball for the right rows to
indicate ahead/side/behind.  The unconventional RESBL loop gives me an 8y
CPU cycle delay.  Everything looks right, but both Z26 and Cyberstella
don't agree.

First, left doesn't show up.  If I change the LDY #3 to LDY #4, then the
ball shows up, but it seems thinner than the center & right balls (~4
pixels rather than 8 pixles).  Right is also all the way to the edge of the
screen (pixels 152-159).  I don't have a good way to see if center is
actually on center & the right width.

Does anyone have any suggestions?  I can handle an HMOVE to tweak the
position, but the behaviour for left is beyond me.


----------------------------------------------------------------------------------------------
Archives (includes files) at http://www.biglist.com/lists/stella/archives/
Unsub & more at http://www.biglist.com/lists/stella/


Current Thread