RE: Aw: Re: [stella] Incoming

Subject: RE: Aw: Re: [stella] Incoming
From: "Billy Eno" <ceno@xxxxxxxxxxxxx>
Date: Tue, 29 Jan 2002 20:48:33 -0600
Ben,

In Warring Worms, I have an asymetrical playfield with two players on the
screen as well as two missiles.  I only use PF1 and PF2 and I do have the
7th line of my blocks blank, but maybe you squeeze into your field draw how
I do my missiles.  The way I do it is I have a location in memory that looks
like this:

missile_enables
	ds	66
	dc	$02
	ds	69

An enable value in between blank values.  I found this all had to be on the
same page in memory or when it rolled over to the next page, it would add a
clock cycle to the access and mess up the display of my playfield.

my whole main fielddraw routine is attached at the end, it unrolls two lines
of the Playfield draw like this:

outerloop
	innerloop (3x)
		draw 1 line
		draw 1 line
 	end innerloop
end outerloop

I setup two variable miss0index and miss1index before the field is drawn and
then, in my display loops I have this (in the second line):

	ldy	miss0index
	lda	#missile_enables,y
	sta	ENAM0

	ldy	miss1index
	lda	#missile_enables,y
	sta	ENAM1

	inc	miss0index	;increment the indexes
	inc	miss1index

If the missiles is not on the screen I set it to missile_enables + 68 so it
only ever loads zeroes into the enables.  Otherwise, I set it so I the
missile appears after the appropriate amount of incrementing

I only update the Graphics and the missile every other line, but I think
with your existing kernel, you may be able to squeeze in the neccessary
increments and loads.  You could perhaps reduce the resolution of the
missiles to 2 scanlines.

Maybe this can help.

By the way, the game looks really cool, I hope you can get it going the way
you want.

Regards,
Billy

-------------------------------------------------
Whole playfield routine:
;draw the playfield
;one blank line followed by 6 drawn lines
;outercnt must be set up outside the subroutine to tell it how many lines to
draw

fielddraw	subroutine

	lda	#0			;a needs to start zero (is cleared again at end of outer loop)
outer_draw
;------------------------------------
	sta	head0index	;initialize the head indexes
	sta	head1index

	lda	ypos0				;3
	cmp outercnt			;4
	bne no_head0			;2-3
	lda	dir0				;3   	;add dir to get to the correct offset
	sta	head0index			;3
no_head0

	lda	ypos1
	cmp outercnt
	bne no_head1
	lda	dir1				;add dir to get to the correct offset
	sta	head1index
no_head1
;------------------------------------
	lda #3				;inner draw loop is 3
	sta	innercnt

	ldx	outercnt		;load the linecnt into x
	lda	leftpf1,x
	ldy	leftpf2,x

inner_draw
	sta	WSYNC		;wait for the sync

	sta	PF1			;store the graphics for the left side of the screen
	sty	PF2+$100	;add $100 so that it will not be a zero page store and take
					;one cycle extra so this turns out just barely right!
					;(registers are mirrored at $100 intervals)

	ldy	head0index
	lda	#snake_heads,y
	sta	GRP0

	ldy	head1index
	lda	#snake_heads,y
	sta	GRP1

	inc	head1index	;increment the indexes
	inc	head0index

	lda	rightpf1,x	;load the right side
	ldy	rightpf2,x

	sty	PF2			;store the graphics for the right side of the screen
	sta	PF1

	lda	leftpf1,x	;reload the left side
	ldy	leftpf2,x

;	nop				;these two nop's are the amount of spare time in the
;	nop				;firstline

	sta	WSYNC		;wait for the sync

	sta	PF1			;store the graphics for the left side of the screen
	sty	PF2+$100

	ldy	miss0index
	lda	#missile_enables,y
	sta	ENAM0

	ldy	miss1index
	lda	#missile_enables,y
	sta	ENAM1

	inc	miss0index	;increment the indexes
	inc	miss1index

	lda	rightpf1,x	;load the right side
	ldy	rightpf2,x

	sty	PF2			;store the graphics for the right side of the screen
	sta	PF1

	lda	leftpf1,x	;reload the left side
	ldy	leftpf2,x

	dec innercnt
	bne inner_draw

	lda	#0			;clear out the PFs and GRP
	sta	GRP0		;clear the graphics
	sta	GRP1

	sta	PF1
	sta	PF2


	dec	outercnt		;count from PFHEIGHT-1 down to 0
	bpl outer_draw

	rts





> -----Original Message-----
> From: owner-stella@xxxxxxxxxxx [mailto:owner-stella@xxxxxxxxxxx]On
> Behalf Of Ben Larson
> Sent: Tuesday, January 29, 2002 2:04 PM
> To: stella@xxxxxxxxxxx
> Subject: Re: Aw: Re: [stella] Incoming
>
>
> OK OK, here's the kernel code.  It's rather long and
> repetitive, but I've commented all of the main loop
> with the standard Nick Bensema cycle notation. :)
>
> ; *****************************
> ; * DISPLAY KERNEL SUBROUTINE *
> ; *****************************
>
> DrawScreen
>
>  	LDA INTIM
>  	BNE DrawScreen
>  	STA WSYNC
>  	STA VBLANK  		; Write a '0' to VBLANK to turn the
> TIA back on
>  	STA CTRLPF		; Write a '0' to CTRLPF to set normal
> mode
>          STA CXCLR               ; Clear collision
> registers for this frame
>  	LDY #160
>
>  	; This is the first (rather minor) display loop. It
> handles the first 40 lines of
>  	; the screen - the area before any of the playfield
> appears.
>
> SecondaryScanLoop
>
>  	STA WSYNC
>  	LDA (P1Offset),Y
>  	STA GRP0
>  	LDA (P2Offset),Y
>  	STA GRP1
>  	DEY
>  	CPY #120
>  	BNE SecondaryScanLoop
>
>  	; This is the beginning of the primary display loop.
>  Each iteration handles
>  	; eight lines of the display.  15 iterations are
> made, for a total of 120 lines
>          ; of the display.
>
>  	; The loop had to be unrolled into eight line
> segments in order to have
>  	; enough time to draw the playfield as well as load
> the data for both players.
>
>  	; One constraint is this:  When the player fires,
> the display becomes interlaced.
>  	; Every even numbered screen frame, the players are
> displayed, and every odd
>  	; frame, the missile - actually a player object too
> - is displayed.  Making
>  	; the missile a player object as well means we can
> use the same display kernel
>  	; for both types of frames.
>
>  	LDX #0
>  	LDA PField1A,X		;[58-60]+4
>
> ScanLoop
>
>  	; ****** FIRST LINE ******
>  	STA WSYNC
>
>  	STA PF1 			;[0]+3 = 3 < 29
>
>  	; Load player 1 data
>  	LDA (P1Offset),Y		;[3]+5-6
>  	STA GRP0			;[8-9]+3
>
>
>  	; This part loads the playfield data into the PF
> registers.
>  	LDA PField0,X 		;[11-12]+4
>  	STA PF0 			;[15-16]+3 = 18-19 < 23
>  	ASL 				;[18-19]+2
>  	ASL 				;[20-21]+2
>  	ASL 				;[22-23]+2
>  	ASL 				;[24-25]+2
>  	STA PF0 			;[26-27]+3 = 29-30 < 51 and
> 29-30 >= 29
>
>  	LDA PField2A,X		;[29-30]+4
>  	STA PF2 			;[33-34]+3 = 36-37 < 40
>
>  	; Load player 2 data
>  	LDA (P2Offset),Y		;[36-37]+5-6
>  	STA GRP1			;[41-43]+3
>
>  	LDA PField1B,X		;[44-46]+4
>  	STA PF1			;[48-50]+3 = 51-53 < 57 and 51-53 > 40
>  	LDA PField2B,X		;[51-53]+4
>  	STA PF2			;[55-57]+3 = 58-60 < 68 and 58-60 > 51
>
>  	LDA PField1A,X		;[58-60]+4
>  	DEY				;[62-64]+2 = 64-66
>  	STA PF1 			;[64-66]+3
>
>  	LDA BKColor,X		;4
>
>  	; ****** SECOND LINE ******
>  	STA WSYNC
>
>  	STA COLUBK 		;[0]+3 = 3 < 29
>
>  	; Load player 1 data
>  	LDA (P1Offset),Y	;[3]+5-6
>  	STA GRP0		;[8-9]+3
>
>  	; This part loads the playfield data into the PF
> registers.
>  	LDA PField0,X 		;[11-12]+4
>  	STA PF0 		;[15-16]+3 = 18-19 < 23
>  	ASL 			;[18-19]+2
>  	ASL 			;[20-21]+2
>  	ASL 			;[22-23]+2
>  	ASL 			;[24-25]+2
>  	STA PF0 		;[26-27]+3 = 29-30 < 51 and 29-30 >= 29
>
>  	LDA PField2A,X		;[29-30]+4
>  	STA PF2 		;[33-34]+3 = 36-37 < 40
>
>  	; Load player 2 data
>  	LDA (P2Offset),Y	;[36-37]+5-6
>  	STA GRP1		;[41-43]+3
>
>  	LDA PField1B,X		;[44-46]+4
>  	STA PF1			;[48-50]+3 = 51-53 < 57 and 51-53 > 40
>  	LDA PField2B,X		;[51-53]+4
>  	STA PF2			;[55-57]+3 = 58-60 < 68 and 58-60 > 51
>
>  	LDA PField1A,X		;[58-60]+4
>  	DEY			;[62-64]+2 = 64-66
>
>  	; ****** THIRD LINE ******
>  	STA WSYNC
>
>  	STA PF1 		;[0]+3 = 3 < 29
>
>  	; Load player 1 data
>  	LDA (P1Offset),Y	;[3]+5-6
>  	STA GRP0		;[8-9]+3
>
>
>  	; This part loads the playfield data into the PF
> registers.
>  	LDA PField0,X 		;[11-12]+4
>  	STA PF0 		;[15-16]+3 = 18-19 < 23
>  	ASL 			;[18-19]+2
>  	ASL 			;[20-21]+2
>  	ASL 			;[22-23]+2
>  	ASL 			;[24-25]+2
>  	STA PF0 		;[26-27]+3 = 29-30 < 51 and 29-30 >= 29
>
>  	LDA PField2A,X		;[29-30]+4
>  	STA PF2 		;[33-34]+3 = 36-37 < 40
>
>  	; Load player 2 data
>  	LDA (P2Offset),Y	;[36-37]+5-6
>  	STA GRP1		;[41-43]+3
>
>  	LDA PField1B,X		;[44-46]+4
>  	STA PF1			;[48-50]+3 = 51-53 < 57 and 51-53 > 40
>  	LDA PField2B,X		;[51-53]+4
>  	STA PF2			;[55-57]+3 = 58-60 < 68 and 58-60 > 51
>
>  	LDA PField1A,X		;[58-60]+4
>  	DEY			;[62-64]+2 = 64-66
>
>  	; ****** FOURTH LINE ******
>  	STA WSYNC
>
>  	STA PF1 		;[0]+3 = 3 < 29
>
>  	; Load player 1 data
>  	LDA (P1Offset),Y	;[3]+5-6
>  	STA GRP0		;[8-9]+3
>
>  	; This part loads the playfield data into the PF
> registers.
>  	LDA PField0,X 		;[11-12]+4
>  	STA PF0 		;[15-16]+3 = 18-19 < 23
>  	ASL 			;[18-19]+2
>  	ASL 			;[20-21]+2
>  	ASL 			;[22-23]+2
>  	ASL 			;[24-25]+2
>  	STA PF0 		;[26-27]+3 = 29-30 < 51 and 29-30 >= 29
>
>  	LDA PField2A,X		;[29-30]+4
>  	STA PF2 		;[33-34]+3 = 36-37 < 40
>
>  	; Load player 2 data
>  	LDA (P2Offset),Y	;[36-37]+5-6
>  	STA GRP1		;[41-43]+3
>
>  	LDA PField1B,X		;[44-46]+4
>  	STA PF1			;[48-50]+3 = 51-53 < 57 and 51-53 > 40
>  	LDA PField2B,X		;[51-53]+4
>  	STA PF2			;[55-57]+3 = 58-60 < 68 and 58-60 > 51
>
>  	LDA PField1A,X		;[58-60]+4
>  	DEY			;[62-64]+2 = 64-66
>  	STA PF1 		;[64-66]+3
>
>  	LDA PFColor,X		;4
>
>  	; ****** FIFTH LINE ******
>  	STA WSYNC
>
>  	STA COLUPF		;[0]+3
>
>  	; Load player 1 data
>  	LDA (P1Offset),Y	;[3]+5-6
>  	STA GRP0		;[8-9]+3
>
>  	; This part loads the playfield data into the PF
> registers.
>  	LDA PField0,X 		;[11-12]+4
>  	STA PF0 		;[15-16]+3 = 18-19 < 23
>  	ASL 			;[18-19]+2
>  	ASL 			;[20-21]+2
>  	ASL 			;[22-23]+2
>  	ASL 			;[24-25]+2
>  	STA PF0 		;[26-27]+3 = 29-30 < 51 and 29-30 >= 29
>
>  	LDA PField2A,X		;[29-30]+4
>  	STA PF2 		;[33-34]+3 = 36-37 < 40
>
>  	; Load player 2 data
>  	LDA (P2Offset),Y	;[36-37]+5-6
>  	STA GRP1		;[41-43]+3
>
>  	LDA PField1B,X		;[44-46]+4
>  	STA PF1			;[48-50]+3 = 51-53 < 57 and 51-53 > 40
>  	LDA PField2B,X		;[51-53]+4
>  	STA PF2			;[55-57]+3 = 58-60 < 68 and 58-60 > 51
>
>  	LDA PField1A,X		;[58-60]+4
>  	DEY			;[62-64]+2 = 64-66
>
>  	; ****** SIXTH LINE ******
>  	STA WSYNC
>
>  	STA PF1 		;[0]+3 = 3 < 29
>
>  	; Load player 1 data
>  	LDA (P1Offset),Y	;[3]+5-6
>  	STA GRP0		;[8-9]+3
>
>  	; This part loads the playfield data into the PF
> registers.
>  	LDA PField0,X 		;[11-12]+4
>  	STA PF0 		;[15-16]+3 = 18-19 < 23
>  	ASL 			;[18-19]+2
>  	ASL 			;[20-21]+2
>  	ASL 			;[22-23]+2
>  	ASL 			;[24-25]+2
>  	STA PF0 		;[26-27]+3 = 29-30 < 51 and 29-30 >= 29
>
>  	LDA PField2A,X		;[29-30]+4
>  	STA PF2 		;[33-34]+3 = 36-37 < 40
>
>  	; Load player 2 data
>  	LDA (P2Offset),Y	;[36-37]+5-6
>  	STA GRP1		;[41-43]+3
>
>  	LDA PField1B,X		;[44-46]+4
>  	STA PF1			;[48-50]+3 = 51-53 < 57 and 51-53 > 40
>  	LDA PField2B,X		;[51-53]+4
>  	STA PF2			;[55-57]+3 = 58-60 < 68 and 58-60 > 51
>
>  	LDA PField1A,X		;[58-60]+4
>  	DEY			;[62-64]+2 = 64-66
>
>  	; ****** SEVENTH LINE ******
>  	STA WSYNC
>
>  	STA PF1 		;[0]+3 = 3 < 29
>
>  	; Load player 1 data
>  	LDA (P1Offset),Y	;[3]+5-6
>  	STA GRP0		;[8-9]+3
>
>  	; This part loads the playfield data into the PF
> registers.
>  	LDA PField0,X 		;[11-12]+4
>  	STA PF0 		;[15-16]+3 = 18-19 < 23
>  	ASL 			;[18-19]+2
>  	ASL 			;[20-21]+2
>  	ASL 			;[22-23]+2
>  	ASL 			;[24-25]+2
>  	STA PF0 		;[26-27]+3 = 29-30 < 51 and 29-30 >= 29
>
>  	LDA PField2A,X		;[29-30]+4
>  	STA PF2 		;[33-34]+3 = 36-37 < 40
>
>  	; Load player 2 data
>  	LDA (P2Offset),Y	;[36-37]+5-6
>  	STA GRP1		;[41-43]+3
>
>  	LDA PField1B,X		;[44-46]+4
>  	STA PF1			;[48-50]+3 = 51-53 < 57 and 51-53 > 40
>  	LDA PField2B,X		;[51-53]+4
>  	STA PF2			;[55-57]+3 = 58-60 < 68 and 58-60 > 51
>
>  	LDA PField1A,X		;[58-60]+4
>  	DEY			;[62-64]+2 = 64-66
>
>  	; ****** EIGHTH LINE ******
>  	STA WSYNC
>
>  	STA PF1 			;[0]+3 = 3 < 29
>
>  	; Load player 1 data
>  	LDA (P1Offset),Y		;[3]+5-6
>  	STA GRP0			;[8-9]+3
>
>  	; This part loads the playfield data into the PF
> registers.
>  	LDA PField0,X 		;[11-12]+4
>  	STA PF0 			;[15-16]+3 = 18-19 < 23
>  	ASL 				;[18-19]+2
>  	ASL 				;[20-21]+2
>  	ASL 				;[22-23]+2
>  	ASL 				;[24-25]+2
>  	STA PF0 			;[26-27]+3 = 29-30 < 51 and
> 29-30 >= 29
>
>  	LDA PField2A,X		;[29-30]+4
>  	STA PF2 			;[33-34]+3 = 36-37 < 40
>
>  	; Load player 2 data
>  	LDA (P2Offset),Y		;[36-37]+5-6
>  	STA GRP1			;[41-43]+3
>
>  	LDA PField1B,X		;[44-46]+4
>  	STA PF1			;[48-50]+3 = 51-53 < 57 and 51-53 > 40
>  	LDA PField2B,X		;[51-53]+4
>  	STA PF2			;[55-57]+3 = 58-60 < 68 and 58-60 > 51
>
>  	INX				;[58-60]+2
>  	LDA PField1A,X		;[60-62]+4
>  	DEY				;[64-66]+2
>  	BEQ Bypass			;[66-68]+2   (if not taken)
>  	JMP ScanLoop		;[68-70]+3 = 71-73 cycles (whew!)
>  Bypass
>
>
>  	; This is the end of the main display loop.  Now we
> need to clear the playfield
>          ; and playfield registers and reset the first
> player graphic to get ready to
>          ; display the 31 lines which comprise the
> alphanumerical status area at the
>          ; bottom of the screen.
>
>  	STA WSYNC
>  	LDA #0
>  	STA GRP0
>  	STA GRP1
>  	STA PF0
>  	STA PF1
>  	STA PF2
>  	LDA #$00
>  	STA COLUBK
>  	STA REFP1
>  	LDA #$12
>  	STA COLUPF
>  	LDA #%00000001
>  	STA NUSIZ0
>  	STA NUSIZ1
>
>  	; Get score digit memory offset values
>
>  	LDA P1Health
>  	AND #15
>  	TAX
>  	LDA DigitLookup,X
>  	STA TempAddr2
>  	LDA P1Health
>  	STA RESP0
>  	STA RESP1
>  	LSR
>  	LSR
>  	LSR
>  	LSR
>  	TAX
>  	LDA DigitLookup,X
>  	STA TempAddr1
>
>  	LDA P2Health
>  	AND #15
>  	TAX
>  	LDA DigitLookup,X
>  	STA TempAddr4
>  	LDA P2Health
>  	LSR
>  	LSR
>  	LSR
>  	LSR
>  	TAX
>  	LDA DigitLookup,X
>  	STA TempAddr3
>
>  	; Here are the final display loops - they handle the
> alphanumerical status area
>        ; at the bottom of the screen
>
>  	; Draw the player health meters
>
>  	LDY #7			;[82]+4
> Bottom1
>  	STA WSYNC
>  	LDA #$0F
>  	;LDA #%00110010		;[0]+2
>  	STA COLUP0			;[2]+3
>  	STA COLUP1			;[5]+3
>
>  	LDA (TempAddr1),Y		;[8]+5
>  	STA GRP0			;[12]+3
>  	LDA (TempAddr2),Y		;[15]+5
>  	STA GRP1			;[20]+3
>  	STA RESP0			;[23]+3
>  	STA RESP1			;[26]+3
>
>  	LDA (TempAddr3),Y		;[29]+5
>  	STA GRP0			;[34]+3
>  	LDA (TempAddr4),Y		;[37]+5
>  	STA GRP1			;[42]+3
>
>  	LDA #%11000110		;[45]+2
>  	NOP				;[47]+2
>  	STA RESP0			;[49]+3
>  	STA RESP1			;[52]+3
>  	STA COLUP0			;[55]+3
>  	STA COLUP1			;[58]+3
>  	DEY				;[61]+2
>
>  	CPY #-1			;[63]+2
>
>  	BNE Bottom1			;[65]+3 = 68 (if taken)
>
>  	; Now we need to set things up to get ready to
> display the 'E P W' line
>
>  	LDA #0
>  	STA GRP0
>  	STA GRP1
>
>  	STA WSYNC
>  	LDA #%00000001
>  	STA CTRLPF
>  	LDA #%00001111
>  	STA PF1
>  	LDA #%11111111
>  	STA PF2
>
>  	STA WSYNC
>  	LDA #%00000110
>  	STA NUSIZ0
>  	LDA #%00001000
>  	STA PF1
>  	LDA #0
>  	STA PF2
>  	LDA #$1F
>  	TAX
>  	NOP
>  	NOP
>  	NOP
>  	NOP
>  	NOP
>  	NOP
>  	NOP
>  	STA RESP0
>
>  	LDY #7
> Bottom2
>  	STX COLUP0
>  	STA WSYNC
>  	LDA LetterE,Y		;[]+5
>  	STA GRP0			;[]+3
>  	DEX
>  	DEX
>  	NOP
>  	NOP
>  	NOP
>  	NOP
>  	NOP
>  	NOP
>  	NOP
>  	NOP
>  	NOP
>  	NOP
>  	NOP
>  	NOP
>  	NOP
>  	LDA LetterP,Y		;[]+5
>  	STA GRP0			;[]+3
>  	NOP
>  	NOP
>  	NOP
>  	LDA LetterW,Y		;[]+5
>  	STA GRP0			;[]+3
>  	DEY				;[]+2
>  	CPY #-1			;[]+2
>
>  	BNE Bottom2
>
>  	STA WSYNC
>  	LDA #%00000110
>  	STA NUSIZ1
>  	LDA #0
>  	STA GRP0
>  	STA GRP1
>  	NOP
>  	NOP
>  	NOP
>  	NOP
>  	NOP
>  	NOP
>  	NOP
>  	NOP
>  	NOP
>  	STA RESP0
>  	STA RESP1
>
>  	; Get score digit memory offset values
>
>  	LDA Status
>  	AND #%00000001		; Get current player's turn
>  	BNE DisplayP2Elevation
>  	LDA P1Elevation
>  	JMP EndDisplayP2Elevation
> DisplayP2Elevation
>  	LDA P2Elevation
> EndDisplayP2Elevation
>  	AND #15
>  	TAX
>  	LDA DigitLookup,X
>  	STA TempAddr2
>  	LDA P1Elevation
>  	LSR
>  	LSR
>  	LSR
>  	LSR
>  	TAX
>  	LDA DigitLookup,X
>  	STA TempAddr1
>
>  	LDA Status
>  	AND #00000001
>  	BNE DisplayP2Power
>  	LDA P1Power
>  	JMP EndDisplayP2Power
> DisplayP2Power
>  	LDA P2Power
> EndDisplayP2Power
>  	AND #15
>  	TAX
>  	LDA DigitLookup,X
>  	STA TempAddr4
>  	LDA P1Power
>  	LSR
>  	LSR
>  	LSR
>  	LSR
>  	TAX
>  	LDA DigitLookup,X
>  	STA TempAddr3
>
>  	LDA Wind
>  	AND #15
>  	TAX
>  	LDA DigitLookup,X
>  	STA TempAddr6
>  	LDA Wind
>  	LSR
>  	LSR
>  	LSR
>  	LSR
>  	TAX
>  	LDA DigitLookup,X
>  	STA TempAddr5
>
>  	LDY #7
>  	LDA #$04
>  	STA COLUP0
>  	STA COLUP1
>
> Bottom3
>        STA WSYNC
>  	LDA (TempAddr1),Y		;[]+5
>  	STA GRP0			;[]+3
>  	LDA (TempAddr2),Y
>  	STA GRP1
>  	NOP
>  	NOP
>  	NOP
>  	NOP
>  	LDA (TempAddr6),Y
>  	TAX
>  	LDA (TempAddr3),Y
>  	STA GRP0
>  	LDA (TempAddr4),Y
>  	STA GRP1
>  	LDA (TempAddr5),Y
>  	STA GRP0
>  	STX GRP1
>  	DEY
>  	CPY #-1			;[]+2
>
>  	BNE Bottom3
>
>
>  	; Take care of the final two lines
>
>  	STA WSYNC
>  	LDA #%00001111
>  	STA PF1
>  	LDA #%11111111
>  	STA PF2
>  	LDY #0
>  	STY GRP0
>  	STY GRP1
>  	STA WSYNC
>  	LDA #%00000000
>  	STA PF0
>  	STA PF1
>  	STA PF2
>  	STA CTRLPF
>
>  	LDA #%00000010
>  	STA VBLANK 			; Make TIA output invisible, also
> disable joystick latches
>
>  	; Now we need to worry about it bleeding when we
> turn
>  	; the TIA output back on.
>  	; Y is still zero.
>
>  	STY PF0
>  	STY PF1
>  	STY PF1
>  	STY GRP0
>  	STY GRP1
>  	STY ENAM0
>  	STY ENAM1
>  	STY ENABL
>  	LDY BKColor
>  	STY COLUBK
>  	LDY PFColor
>  	STY COLUPF
>
>  	RTS
>
> There's basically zero RAM left, also.  I'll post the
> entire program here soon (later tonight maybe), but
> I'm kinda in a hurry right now...
>
> Later,
> Ben
>
> __________________________________________________
> Do You Yahoo!?
> Great stuff seeking new owners in Yahoo! Auctions!
> http://auctions.yahoo.com
> ------------------------------------------------------------------
> ----------------------------
> Archives (includes files) at http://www.biglist.com/lists/stella/archives/
> Unsub & more at http://www.biglist.com/lists/stella/
>

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


Current Thread