Re: [stella] Playtesting and fine-tuning games

Subject: Re: [stella] Playtesting and fine-tuning games
From: Greg Troutman <mor@xxxxxxx>
Date: Tue, 26 Aug 1997 20:49:38 -0700
Glenn Saunders wrote:

> > I'll experiment.  I kinda like the asteroids ghostly white.  When I
> 
> So do I.  It's the mothership, the humans, and the lander that could
> become multicolored.  Despite the fact that the humans outstretch their
> arms above their heads, you could probably use the two missiles and the
> ball to give them a flesh-colored head as well as split the rest of them
> in half.

Currently, one of these guys is drawn on the same scanline as an
asymetrically divided playfield, which changes color each line, and the
lander craft.  As simple as it looks, the timing is pretty much as
cramped as it is above in the asteroid field.  It took about as long to
get it right as that section.  Writes to the color, missile, and ball
registers, along with the RESBL and RESPMx's needed will be very tough
to put in.  I think I might fit in a STA COLUP1 to make different body
sections different colors.  One thing I've considered is to draw the men
and platforms with GRP1 only:

	man
	platform
man        x
platform   x
   x	   x	man
   x	   x	platform

And lose the playfield graphics holding them up in space.  It won't look
as realistic but allows a lot more time for pretty things, as well as an
easier method of relocating/resizing the platforms themselves.  A
further step might be to use NUSIZ to regain the supporting structures
at the positions marked 'x'.  However the spacing is not as flexible as
with the playfield graphics, and the timing could be excruciating when
reloading the GRP1 mid-scanline to draw both a platform and a man on the
same line, along with the other things that need to get done.

As for the lander, it is not drawn in any standard fashion and there are
simply nowhere near enough cycles for it to have multiple colors.  I
hope to revamp things and get around this soon.

The mothership is a possibility, but here is the code that draws it:

	sta WSYNC

	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop			;18
	
	lda orbiterCoarse	;3
	and #1			;2
	bne delay1		;2/3
delay1
	jmp (orbiterRDJmp)	;5

	repeat 10
	nop
	repend
orbiterResetDelay
			;at Coarse posn 0 = cycle 30
        sta RESP0   	;3
        sta RESP1   	;3
        lda #$10    	;2
        sta HMP1	;3
	sta WSYNC
	sta HMOVE

        ldx #13    	;2 14 scanline object
splitOrbiter
	lda orbiterRAM,x 	;4
	sta WSYNC	

        sta GRP0    		;3
	
	lda orbiterRAM + 14,x	;4
        sta GRP1    		;3

	lda orbiterCoarse	;3
	and #1			;2
	bne wait1		;2/3
wait1
	jmp (orbiterWDJmp)	;5
	repeat 10
	nop
	repend
orbiterWaitDelay		
	lda orbiterRAM + 42,x	;4 at coarse posn 0 = cycle 22
        tay     		;2
	lda orbiterRAM + 28,x	;4
	nop			;2
        sta GRP0    		;3 cycle 30 
        sty GRP1    		;3 
        dex     		;2
        bpl splitOrbiter    	;3

Besides the usual noise from a 4-digit trick, there are those two
indirect JMPs that create the single cycle coarse position which allows
this thing to move one pixel at a time.  I can't seem to figure out a
way to add anything here without making the screen still narrower.  But
I wore myself out getting it where it is, I haven't thought much about
it lately.  Any suggestions would be appreciated.  Note: orbiterRAM is a
56 byte hunk of zero page where I physically shift the mothership
graphic to match it's fine position, and ORA the mothership and lander
graphics together.  There goes most of VBLANK...  And:

orbiterRDJmp = #orbiterResetDelay - (orbiterCoarse/2)

So, on coarse position 0, the BNE immediately prior will fail, using 2
cycles, and the indirect JMP will go straight to orbiterResetDely, using
5 cycles--total 7 cycles.  

On coarse position 1, the BNE will succeed, using 3 cycles, the indirect 
JMP will go straight to orbiterResetDelay, using 5 cycles--total 8
cycles.  

On coarse position 2, the BNE will fail, using 2 cycles, and the
indirect JMP will go to the NOP right in front of orbiterResetDelay,
using 5 + 2 cycles--total 9 cycles.  Etc.

--
mor@xxxxxxx
http://www.crl.com/~mor/

--
Archives updated once/day at http://www.biglist.com/lists/stella/archives/
Unsubscribing and other info at http://www.biglist.com/lists/stella/stella.html

Current Thread