Re: [stella] Poker Solitaire

Subject: Re: [stella] Poker Solitaire
From: "B. Watson" <urchlay@xxxxxxxxxxxxxxxx>
Date: Wed, 21 Nov 2001 22:31:20 -0500 (EST)
On Thu, 22 Nov 2001, Manuel Polik wrote:

> Hi Brian!


> You can move WSYNC even deeper. Actually, since you get
> the cards properly displayed on the right side of the
> screen, you can do so anywhere. Keep in mind that you
> can start preloading GRPX, COLUXX and/or PFX again right
> after the 5th card is drawn. You've just to shift your
> complete system to the left.
> Try placing the 5 PF cards exactly centered in the
> middle. Reflect it and have the middle card displayed by
> a reflected half-sized card at the very end of PF2.

Right... I was still thinking in terms of drawing other stuff
in the left half of the screen when I decided I had to push the
cards as far right as possible. Was thinking of using the left
half PF regs to draw a title & maybe a pile of red & white
poker chips... But if I'm not doing that (and I'm decidedly
not), then I'm free to shift to the left...

> Then position your sprites to match exactly over these
> PF cards.
> Then adjust everything else by shifting the WSYNCS.

Actually, I'm so deep in the scoring routine right now, it makes
all my problems with the kernel look trivial... I may just center
the cards horizontally, and call the kernel done. Or I may just
leave 'em as-is...

> (But first of all remove that repeat/repend stuff :-))

I know you hate repeat/repend, but take a look at what I'm using it for:

1) A couple times, I use it to repeat NOP's, as an alternative to typing

	NOP ; etc. etc.

2) I use it inside the kernel, like so:

 repeat 2
 (do one scanline of complex stuff)

...which has the effect of drawing 2 identical scanlines, one after the
other. In a 2-line low-res kernel where you're modifying GRP0/1 on the
fly, you have to modify them the same way for each one of the 2 lines...
Sure, I could convert to a single-line kernel, but then I'd have to have
twice as much sprite data... or else draw squashed, half-height cards..

Alternatively, I could get rid of the repeat/repend, and just paste
an identical copy of the code... but that's less maintainable (have to
make all changes twice)

I did try unrolling this and using the NOP cycles to write an asymmetrical
playfield, but couldn't come up with enough cycles... If there were more RAM,
I could pre-buffer the sprite data in zero page, instead of using lda (ptr),y
to load it from ROM... but I'm displaying 25 cards, each 10 bytes tall.

But if you really hate the repeat/repend, look again... 85% of the kernel is:

 cardloop 0
 cardloop 1
 cardloop 2
 cardloop 3
 cardloop 4

...where cardloop is a macro that expands to 150 or so bytes of code, including
the repeat/repend stuff... Yes, it's a waste of ROM, but it saves cycles during
the kernel.

Tell you what though... when I do get the game functional, I'll go back through
all this space-wasting inefficient crap, and clean it up some. Right now I'm
trying to explain to my 2600 that 3 clubs and 2 diamonds is *not* a flush, and
that if you have 3 of a kind, it doesn't also count as a pair! :)


Archives (includes files) at
Unsub & more at

Current Thread