RE: [stella] Playfield Basics (newbie question)

Subject: RE: [stella] Playfield Basics (newbie question)
From: "Dennis Debro" <ddebro@xxxxxxxxxxxxx>
Date: Sun, 3 Nov 2002 20:51:51 -0500
Hi Rico! Welcome aboard.

> I am learning how to draw a playfield. I have read Nick's famous
> playfield example and tried different variations that have
> been posted on the list. I have written a small program
> which only purpose is to draw a rectangle repeatedly
> from the top to the bottom of the screen (without worrying about the
> reflected portion of the screen).  I initialized the playflied
> registers to draw something like this:
> 
>  * * * * * * * * * * * * * * * *
>  *                             *
>  *                             *
>  *                             *
>  *                             *
>  *                             *
>  *                             *
>  * * * * * * * * * * * * * * * *

Actually your rectangle is more like
 * * * * * * * * * * * * * * * * * * * *
 *                                 *   *
 *                                 *   *
 *                                 *   *
 *                                 *   *
 *                                 *   *
 *                                 *   *
 * * * * * * * * * * * * * * * * * * * *

Change your $A0 to $80 for PFData2 to get the rectangle you're expecting

See my comments below

> ; Learning atari playfields
> ;
> ; Objective: 	Draw a rectangle many times
> ;		using the playfield registers.
> ;
> 
> 	processor 6502
> 	include eckvcs.h
> 	org $F000
> 
> START
>  SEI
>  CLD
>  LDX #$FF
>  TXS
>  LDA #0
> 
> CLEARMEM
>  STA 0,X
>  DEX
>  BNE CLEARMEM
>  LDA #$00	; SET BACKGROUND BLACK
>  STA COLUBK
>  LDA #$1E	; SET PLAYFIELD YELLOW
>  STA COLUPF
> 
> MAINLOOP
>  LDA #2		; TURN ON VSYNC
>  STA VSYNC
>  STA WSYNC
>  STA WSYNC
>  STA WSYNC
> 
>  LDA #43
>  STA TIM64T
>  LDA #0		; TURN OFF VSYNC
>  STA VSYNC
> 
> VBLANKTIME
>  LDA INTIM
>  BNE VBLANKTIME

   STA WSYNC	; end the current scan line
   STA VBLANK	; end VBLANK period
> 
>  LDX #7		; Use X register to count
> 		; eight playfield lines
> 		; to draw.
>  LDY #191
> 
> SCANLOOP
>  STA WSYNC	; Accumulator is still 0
;  STA VBLANK	; remove the VBLANK from your drawing loop
> 
>  LDA PFData0,X
>  STA PF0
>  LDA PFData1,X
>  STA PF1
>  LDA PFData2,X
>  STA PF2
> 
>  DEX		; Decrement X.
>  BNE SKIPINITX	; If X != 0 then skip next line
>  LDX #7		; Repeat playfield drawing
> 		; by setting  X to decimal 7.
> 
> SKIPINITX
> 
>  DEY
>  BNE SCANLOOP
> 
>  LDX #30
   STX WSYNC	; end current scan line
   STX VBLANK	; Make TIA output invisible (bit 1 is set to 1)
   STY PF0		; clear the playfield registers
   STY PF1
   STY PF2
> 
> OVERSCAN
>  STA WSYNC
>  DEX
>  BNE OVERSCAN
> 
>  JMP MAINLOOP
> 
>  org $FF00 ; GRAPHICS DATA STARTS HERE
> 
> ; Playfield graphic is supposed to look like this:
> ;
> ; * * * * * * * * * * * * * * * *
> ; *                             *
> ; *                             *
> ; *                             *
> ; *                             *
> ; *                             *
> ; *                             *
> ; * * * * * * * * * * * * * * * *
> ;
> 
> PFData0
> 	.byte $F0,$10,$10,$10,$10,$10,$10,$F0
> 
> PFData1
> 	.byte $FF,$00,$00,$00,$00,$00,$00,$FF
> 
> PFData2
> 	.byte $FF,$A0,$A0,$A0,$A0,$A0,$A0,$FF
> 
> 
> 	ORG $FFFC
> 	.WORD START
> 	.WORD START



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


Current Thread