[stella] My playfield fiddlings...

Subject: [stella] My playfield fiddlings...
From: Jake Patterson <jpatters@xxxxxxxxxxx>
Date: Wed, 5 Sep 2001 04:54:48 -0400 (EDT)
Just got done with a silly little demo kind of thing, it draws a somewhat
detailed asymetrical multicolored illustration with playfield graphics,
and then some text.  It has not been tested with real hardware, but it
does function on Mac Stella.

bin and source attached...

The photo that the illustration was derived from can be found here...

http://homepages.together.net/~jpatters/photos/c64_jake.jpg

'tis me, about seventeen years ago, playing with my new C64.

-- 
       |@ ]@[ @|
       |@ ]@[ @|           /@@@@@\ |@@@@@@@@@| /@@@@@\   +@@@@@@@@K  |@@@|
       J@ ]@[ @K          ;@@@^@@@;|@@@@@@@@@|;@@@^@@@;  |@@@| \@@@L |@@@|
      .@| ]@[ |@.         J@@' `@@K   |@@@|   J@@' `@@K  |@@@| /@@@K |@@@|
      J@' ]@[ `@K        ;@@@@@@@@@;  |@@@|  ;@@@@@@@@@; |@@@@@@@@L  |@@@|
     J@F  ]@[  `@K       J@@@@@@@@@K  |@@@|  J@@@@@@@@@K |@@@|\@@@\  |@@@|
   J@@'   ]@[   `@@K    ;@@@@   @@@@; |@@@| ;@@@@   @@@@;|@@@| `@@@L |@@@|
 J@@P     ]@[     9@@K  J@@@V   ?@@@K |@@@| J@@@V   ?@@@K|@@@|   \@@@|@@@|
@@P       ]@[       9@@K

Attachment: elektro4.bin
Description: elektro4.bin

; Playfield Illustration and Logo Demo
; by Jake Patterson, September 2001
; This has *not* been tested on actual hardware
;
; Somewhat derived from:
; How to Draw A Playfield.
; by Nick Bensema  9:23PM  3/2/97
;
	processor 6502
	include vcs.h

	org $F000
       
darkblue		=	$82
black			=	$00
hair			=	$02
topenclosure	=	$E9
flesh			=	$08
sideenclosure	=	$E7
topbezel		=	$01
screen			=	$9C
sidebezel		=	$7D
shirt			=	$23
bottombezel		=	$03
purple			=	$83
desktop			=	$E5

Start
	SEI  ; Disable interrupts, if there are any.
	CLD  ; Clear BCD math bit.

	LDX  #$FF
	TXS  ; Set stack to beginning.
	
	LDA #0
B1      STA 0,X
	DEX
	BNE B1

; *****************************************************************************
MainLoop

; *****************************************************************************

	JSR  VerticalBlank	;Execute the vertical blank.
	JSR  CheckSwitches	;Check Console Switches.
	JSR  DrawScreen	    ;Draw the screen
	JSR  OverScan		;Do more calculations during overscan
	JMP  MainLoop		;Continue forever.
	
; *****************************************************************************
VerticalBlank

; *****************************************************************************

	LDX  #0
	LDA  #2
	STA  WSYNC  
	STA  WSYNC
	STA  WSYNC
	STA  VSYNC ;Begin vertical sync.
	STA  WSYNC ; First line of VSYNC
	STA  WSYNC ; Second line of VSYNC.

	LDA  #44
	STA  TIM64T

	LDA #0
	STA CXCLR

	STA  WSYNC ; Third line of VSYNC.
	STA  VSYNC ; (0)

	RTS  

; *****************************************************************************
CheckSwitches

; *****************************************************************************
	
	LDA #$0000
	STA PF0
	STA PF1
	STA PF2
	STA COLUPF
	STA COLUBK
	
	RTS

; *****************************************************************************
DrawScreen

; *****************************************************************************

; *************************************** 0th through 48th scanlines (49 total)

	LDY #49
	
TopLines

	LDA #black
	STA COLUBK
	STA COLUPF
	STA PF0
	STA PF1
	STA PF2

	LDX #6							; counter for the next set of scanlines

	STA WSYNC

	DEY								; [0]  + 2
	BNE TopLines					; [2]  + 3
	
; *************************************** 49th through 54th scanlines (6 total)

Loop0000

	STA COLUBK						; [5]  + 3
	STA COLUPF						; [8]  + 3
	
	LDY #%00000000					; [11] + 2
	STY PF0							; [13] + 3
	
	LDY #%00000011					; [16] + 2
	STY PF1							; [18] + 3
	
	LDY #%00001111					; [21] + 2
	STY PF2							; [23] + 3
	
	LDY #hair						; [26] + 2
	NOP								; [28] + 2
	NOP								; [30] + 2
	NOP								; [32] + 2
	NOP								; [34] + 2
	NOP								; [36] + 2
	NOP								; [38] + 2
	NOP								; [40] + 2
	NOP								; [42] + 2
	NOP								; [44] + 2
	STY COLUPF						; [46] + 3
	
	LDY #6							; [49] + 2  counter for next set of lines
	
	STA WSYNC						; [51]
	
	DEX								; [0]  + 2
	BNE Loop0000					; [2]  + 3
	
; *************************************** 55th through 60th scanlines (6 total)

Loop0001

	STA COLUBK						; [5]  + 3
	STA COLUPF						; [8]  + 3
	
	LDX #%00000000					; [11] + 2
	STX PF0							; [13] + 3
	
	LDX #%00000111					; [16] + 2
	STX PF1							; [18] + 3
	
	LDX #%00011111					; [21] + 2
	STX PF2							; [23] + 3
	
	LDX #hair						; [26] + 2
	NOP								; [28] + 2
	NOP								; [30] + 2
	NOP								; [32] + 2
	NOP								; [34] + 2
	NOP								; [36] + 2
	NOP								; [38] + 2
	NOP								; [40] + 2
	NOP								; [42] + 2
	NOP								; [44] + 2
	STX COLUPF						; [46] + 3
	
	LDX #6							; [49] + 2  counter for next set of lines
	
	STA WSYNC						; [51]
	
	DEY								; [0]  + 2
	BNE Loop0001					; [2]  + 3
	
; *************************************** 61rd through 66th scanlines (6 total)

Loop0002

	LDY #topenclosure				; [5]  + 2
	STA COLUBK						; [7]  + 3
	STY COLUPF						; [10] + 3
	
	LDY #%11000000					; [13] + 2
	STY PF0							; [15] + 3
	
	LDY #%11110000					; [18] + 2
	STY PF1							; [20] + 3
		
	LDY #hair						; [23] + 2
	STY COLUBK						; [25] + 3
	
	LDY #%11100000					; [28] + 2
	STY PF2							; [30] + 3
	
	STA COLUPF						; [33] + 3
	NOP								; [36] + 2
	NOP								; [38] + 2
	LDY #%11111000					; [40] + 2
	STY PF1							; [42] + 3
	STA COLUBK

	LDY #%00011110					; [45] + 2
	STY PF2							; [47] + 3

	LDY #flesh						; [50] + 2
	STY COLUBK						; [52] + 3
	LDY #hair						; [55] + 2
	STY COLUPF						; [57] + 3
	
	NOP								; [60] + 2
	STA COLUBK						; [62] + 3
	
	LDY #6							; [65] + 2  counter for next set of lines
	
	STA WSYNC						; [67]
	
	DEX								; [0]  + 2
	BNE Loop0002					; [2]  + 3
	
; *************************************** 67th through 72th scanlines (6 total)

Loop0003

	LDX #sideenclosure				; [5]  + 2
	STA COLUBK						; [7]  + 3
	STX COLUPF						; [10] + 3
	
	LDX #%11000000					; [13] + 2
	STX PF0							; [15] + 3
	
	LDX #%11110000					; [18] + 2
	STX PF1							; [20] + 3
		
	LDX #topbezel					; [23] + 2
	STX COLUBK						; [25] + 3
	
	LDX #%11100000					; [28] + 2
	STX PF2							; [30] + 3
	
	STA COLUPF						; [33] + 3
	NOP								; [36] + 2
	NOP								; [38] + 2
	LDX #%11111000					; [40] + 2
	STX PF1							; [42] + 3
	STA COLUBK

	LDX #%00011110					; [45] + 2
	STX PF2							; [47] + 3

	LDX #flesh						; [50] + 2
	STX COLUBK						; [52] + 3
	LDX #hair						; [55] + 2
	STX COLUPF						; [57] + 3
	
	NOP								; [60] + 2
	STA COLUBK						; [62] + 3
	
	LDX #6							; [65] + 2  counter for next set of lines

	STY WSYNC						; [67]
	
	DEY								; [0]  + 2
	BNE Loop0003					; [2]  + 3
		
; *************************************** 73rd through 78th scanlines (6 total)

;Loop0004

;	LDY #sideenclosure				; [5]  + 2
;	STA COLUBK						; [7]  + 3
;	STY COLUPF						; [10] + 3
	
;	LDY #%00000000					; [13] + 2
;	STY PF0							; [15] + 3
	
;	LDY #%11110000					; [18] + 2
;	STY PF1							; [20] + 3
	
;	LDY #screen						; [23] + 2
;	NOP								; [25] + 2
;	STY COLUBK						; [27] + 3

;	LDY #%00011000					; [30] + 2
;	STY PF2							; [32] + 3
	
;	LDY #hair						; [35] + 2
;	STY COLUPF						; [37] + 3
	
;	LDY #%00000111					; [40] + 2

;	STA COLUBK						; [42] + 3
;	STA COLUPF						; [45] + 3
	
;	STY PF1							; [48] + 3
	
;	LDY #flesh						; [51] + 2
;	STY COLUPF						; [53] + 3

;	LDY #%11100001					; [56] + 2
;	STY PF2							; [58] + 3
	
;	LDY #hair						; [61] + 2
;	STY COLUBK						; [63] + 3

;	STA COLUPF						; [66] + 3
	
;	LDY #12							; [69] + 2  counter for next set of lines
	
;	STA WSYNC						; [71]
	
;	DEX								; [0]  + 2
;	BNE Loop0004					; [2]  + 3
	
; *************************************** 73rd through 78th scanlines (6 total)

Loop0004

	LDY #hair						; [5]  + 2
	STA COLUBK						; [7]  + 3
	STY COLUPF						; [10] + 3
	
	LDY #%00001111					; [13] + 2
	STY PF1							; [15] + 3
	
	LDY #sideenclosure				; [17] + 2
	NOP								; [19] + 2
	NOP								; [21] + 2
	STY COLUBK						; [23] + 3

	LDY #screen						; [26] + 2
	STY COLUPF						; [28] + 3

	LDY #%11100111					; [31] + 2
	STY PF2							; [33] + 3
	
	LDY #hair						; [36] + 2
	STY COLUBK						; [38] + 3
	
	STA COLUPF						; [41] + 3
	STA COLUBK						; [44] + 3

	LDY #%11111000					; [47] + 2
	STY PF1							; [49] + 3
	
	LDY #flesh						; [52] + 2
	STY COLUBK						; [54] + 3

	LDY #%00011100					; [57] + 2
	STY PF2							; [59] + 3
	
	LDY #hair						; [62] + 2
	STY COLUPF						; [64] + 3

	STA COLUBK						; [67] + 3
	
	LDY #12							; [70] + 2  counter for next set of lines
	
	STA WSYNC						; [72]
	
	DEX								; [0]  + 2
	BNE Loop0004					; [2]  + 3
	
; ************************************** 79th through 90th scanlines (12 total)

Loop0005

	LDX #sideenclosure				; [5]  + 2
	STA COLUBK						; [7]  + 3
	STX COLUPF						; [10] + 3
	
	LDX #%11000000					; [13] + 2
	STX PF0							; [15] + 3
	
	LDX #%11110000					; [18] + 2
	STX PF1							; [20] + 3
	
	LDX #screen						; [23] + 2
	NOP								; [25] + 2
	STX COLUBK						; [27] + 3
	
	LDX #%00011000					; [30] + 2
	STX PF2							; [32] + 3
	
	LDX #sidebezel					; [35] + 2
	STX COLUPF						; [37] + 3
	
	LDX #%00000111					; [40] + 2

	STA COLUBK						; [42] + 3
	STA COLUPF						; [45] + 3
	
	STX PF1							; [48] + 3

	LDX #flesh						; [51] + 2
	STX COLUPF						; [53] + 3
	
	LDX #%11100001					; [56] + 2
	STX PF2							; [58] + 3
	
	LDX #hair						; [61] + 2
	STX COLUBK						; [63] + 3
	
	STA COLUPF						; [66] + 3
	
	LDX #6							; [69] + 2  counter for next set of lines
	
	STA WSYNC						; [71]
	
	DEY								; [0]  + 2
	BNE Loop0005					; [2]  + 3
	
; *************************************** 91st through 96th scanlines (6 total)
	
Loop0006

	LDY #sideenclosure				; [5]  + 2
	STA COLUBK						; [7]  + 3
	STY COLUPF						; [10] + 3
	
	LDY #%11000000					; [13] + 2
	STY PF0							; [15] + 3
	
	LDY #%11110000					; [18] + 2
	STY PF1							; [20] + 3
	
	LDY #screen						; [23] + 2
	NOP								; [25] + 2
	STY COLUBK						; [27] + 3
	
	LDY #%00011000					; [30] + 2
	STY PF2							; [32] + 3
	
	LDY #sidebezel					; [35] + 2
	STY COLUPF						; [37] + 3
	
	LDY #%00000011					; [40] + 2

	STA COLUBK						; [42] + 3
	STA COLUPF						; [45] + 3
	
	STY PF1							; [48] + 3
	
	LDY #flesh						; [51] + 2
	STY COLUPF						; [53] + 3
	
	LDY #%11110001					; [56] + 2
	STY PF2							; [58] + 3
	
	LDY #hair						; [61] + 2
	STY COLUBK						; [63] + 3
	
	STA COLUPF						; [66] + 3
	
	LDY #6							; [69] + 2  counter for next set of lines
	
	STA WSYNC						; [71]
	
	DEX								; [0]  + 2
	BNE Loop0006					; [2]  + 3
	
; ************************************** 97th through 102nd scanlines (6 total)

Loop0007

	LDX #sideenclosure				; [5]  + 2
	STA COLUBK						; [7]  + 3
	STX COLUPF						; [10] + 3
	
	LDX #%11000000					; [13] + 2
	STX PF0							; [15] + 3
	
	LDX #%11110000					; [18] + 2
	STX PF1							; [20] + 3
	
	LDX #screen						; [23] + 2
	NOP								; [25] + 2
	STX COLUBK						; [27] + 3
	
	LDX #%00011000					; [30] + 2
	STX PF2							; [32] + 3
	
	LDX #sidebezel					; [35] + 2
	STX COLUPF						; [37] + 3
	
	LDX #%00000000					; [40] + 2

	STA COLUBK						; [42] + 3
	STA COLUPF						; [45] + 3
	
	STX PF1							; [48] + 3

	LDX #flesh						; [51] + 2
	STX COLUPF						; [53] + 3
	
	LDX #%11100011					; [56] + 2
	STX PF2							; [58] + 3
	
	LDX #shirt						; [61] + 2
	NOP								; [63] + 2
	STX COLUBK						; [65] + 3
	
	STA COLUPF						; [68] + 3
	
	LDX #6							; [71] + 2  counter for next set of lines
	
	STA WSYNC						; [73]
	
	DEY								; [0]  + 2
	BNE Loop0007					; [2]  + 3
	NOP								; [4]  + 2
	
; ************************************* 103rd through 108th scanlines (6 total)
	
Loop0008

	LDY #sideenclosure				; [6]  + 2
	STA COLUBK						; [8]  + 3
	STY COLUPF						; [11] + 3
	
	LDY #%11000000					; [14] + 2
	STY PF0							; [16] + 3
	
	LDY #%11110000					; [19] + 2
	STY PF1							; [21] + 3
	
	LDY #screen						; [24] + 2
	STY COLUBK						; [26] + 3
	
	LDY #%00011000					; [29] + 2
	STY PF2							; [31] + 3
	
	LDY #sidebezel					; [34] + 2
	STY COLUPF						; [36] + 3
	
	NOP								; [39] + 2
	STA COLUBK						; [41] + 3
	STA COLUPF						; [44] + 3

	LDY #%00000011					; [47] + 2
	STY PF1							; [49] + 3

	LDY #shirt						; [52] + 2
	STY COLUPF						; [54] + 3

	LDY #%00111111					; [57] + 2
	STY PF2							; [59] + 3
		
	LDY #24							; [62] + 2	counter for next set of lines
	
	STA WSYNC						; [64]

	DEX								; [0]  + 2
	BNE Loop0008					; [2]  + 3
		
; ************************************ 109th through 132nd scanlines (24 total)
	
Loop0009

	LDX #sideenclosure				; [5]  + 2
	STA COLUBK						; [7]  + 3
	STX COLUPF						; [10] + 3
	
	LDX #%11000000					; [13] + 2
	STX PF0							; [15] + 3
	
	LDX #%11110000					; [18] + 2
	STX PF1							; [20] + 3
	
	LDX #screen						; [23] + 2
	STX COLUBK						; [25] + 3
	
	LDX #%00011000					; [28] + 2
	STX PF2							; [30] + 3
	
	LDX #sidebezel					; [33] + 2
	STX COLUPF						; [35] + 3
	
	NOP								; [38] + 2
	NOP								; [40] + 2
	STA COLUBK						; [42] + 3
	STA COLUPF						; [45] + 3

	LDX #%00000111					; [48] + 2
	STX PF1							; [50] + 3

	LDX #shirt						; [53] + 2
	STX COLUPF						; [55] + 3

	LDX #%00111111					; [58] + 2
	STX PF2							; [60] + 3
		
	LDX #6							; [63] + 2	counter for next set of lines
	
	STA WSYNC						; [65]

	DEY								; [0]  + 2
	BNE Loop0009					; [2]  + 3
	
; ************************************* 133rd through 138th scanlines (6 total)

Loop000A

	LDY #sideenclosure				; [5]  + 2
	STA COLUBK						; [7]  + 3
	STY COLUPF						; [10] + 3
	
	LDY #%11000000					; [13] + 2
	STY PF0							; [15] + 3
	
	LDY #%11110000					; [18] + 2
	STY PF1							; [20] + 3
	
	LDY #bottombezel				; [23] + 2
	STY COLUBK						; [25] + 3
	
	LDY #%11100000					; [28] + 2
	STY PF2							; [30] + 3
	
	STA COLUPF						; [33] + 3
	
	LDY #%11110000					; [36] + 2
	STY PF0							; [38] + 3
	
	LDY #%11111000					; [41] + 2
	STY PF1							; [43] + 3
	
	LDY #shirt						; [46] + 2
	STY COLUBK						; [48] + 3
	
	LDY #%11000000					; [51] + 2
	STY PF2							; [53] + 3
	
	LDY #6							; [56] + 2  counter for next set of lines
	
	STA WSYNC						; [58]
	
	DEX								; [0]  + 2
	BNE Loop000A					; [2]  + 3
	
; ************************************* 139th through 144th scanlines (6 total)
	
Loop000B

	LDX #sideenclosure				; [5]  + 2
	STA COLUBK						; [7]  + 3
	STX COLUPF						; [10] + 3
	
	LDX #%11000000					; [13] + 2
	STX PF0							; [15] + 3
	
	LDX #%11110000					; [18] + 2
	STX PF1							; [20] + 3
	
	LDX #hair						; [23] + 2
	STX COLUBK						; [25] + 3
	
	LDX #%11100000					; [28] + 2
	STX PF2							; [30] + 3
	
	LDX #purple						; [33] + 2
	STX COLUPF						; [35] + 3
	
	LDX #%00000000					; [38] + 2
	STX PF0							; [40] + 3
	
	LDX #flesh						; [43] + 2
	STX COLUBK						; [45] + 3
	
	LDX #%11110000					; [48] + 2
	STX PF1							; [50] + 3
	
	LDX #shirt						; [53] + 2
	STX COLUBK						; [55] + 3
	
	LDX #%11000000					; [58] + 2
	STX PF2							; [60] + 3
	
	STA COLUPF						; [63] + 3
	
	LDX #6							; [66] + 2  counter for next set of lines

	STA WSYNC						; [68]

	DEY								; [0]  + 2
	BNE Loop000B					; [2]  + 3
	
; ************************************* 145th through 150th scanlines (6 total)

Loop000C

	LDY #sideenclosure				; [5]  + 2
	STA COLUBK						; [7]  + 3
	STY COLUPF						; [10] + 3
	
	LDY #%11000000					; [13] + 2
	STY PF0							; [15] + 3
	
	LDY #%11111111					; [18] + 2
	STY PF1							; [20] + 3
	STY PF2							; [23] + 3
	
	LDY #flesh						; [26] + 2
	STY COLUBK						; [28] + 3
	
	LDY #%00110000					; [31] + 2
	STY PF0							; [33] + 3

	LDY #%00011111					; [36] + 2
	NOP								; [38] + 2
	STY PF1							; [40] + 3
	
	LDY #%00111111					; [43] + 2
	NOP								; [45] + 2
	NOP								; [47] + 2
	STY PF2							; [49] + 3
	
	LDY #shirt						; [52] + 2
	STY COLUPF						; [54] + 3
	
	NOP								; [57] + 2
	STA	COLUBK						; [59] + 3
	
	LDY #6							; [62] + 2  counter for next set of lines
	
	STA WSYNC						; [64]

	DEX								; [0]  + 2
	BNE Loop000C					; [2]  + 3

; ************************************* 151st through 156th scanlines (6 total)

Loop000D

	LDX #desktop					; [5]  + 2
	STA COLUBK						; [7]  + 3
	STX COLUPF						; [10] + 3
	
	LDX #%11000000					; [13] + 2
	STX PF0							; [15] + 3
	
	LDX #%11111111					; [18] + 2
	STX PF1							; [20] + 3

	LDX #%00011111					; [23] + 2
	STX PF2							; [25] + 3
	
	LDX #flesh						; [28] + 2
	STX COLUBK						; [30] + 3
	
	LDX #%11100000					; [33] + 2
	NOP								; [35] + 2
	NOP								; [37] + 2
	STX PF1							; [39] + 3
	
	LDX #hair						; [42] + 2
	STX COLUPF						; [44] + 3
	
	LDX #%11000000					; [47] + 2
	STX PF2							; [49] + 3
	
	LDX #shirt						; [52] + 2
	STX COLUBK						; [54] + 3
	
	STA COLUPF						; [57] + 3
	
	LDX #6							; [60] + 2  counter for next set of lines

	STA WSYNC						; [62]
	
	DEY								; [0]  + 2
	BNE Loop000D					; [2]  + 3
	
; ************************************* 157th through 162nd scanlines (6 total)

Loop000E

	LDY #hair						; [5]  + 2
	STA COLUBK						; [7]  + 3
	STY COLUPF						; [10] + 3
	
	LDY #%11000000					; [13] + 2
	STY PF0							; [15] + 3
	
	LDY #%11111111					; [18] + 2
	STY PF1							; [20] + 3
	STY PF2							; [23] + 3
	
	LDY #%00110000					; [26] + 2
	NOP								; [28] + 2
	STY PF0							; [30] + 3
	
	LDY #shirt						; [33] + 2
	STY COLUBK						; [35] + 3
	
	LDY #%00000000					; [38] + 2
	STY PF1							; [40] + 3
	
	LDY #%11000000					; [43] + 2
	NOP								; [45] + 2
	STY PF2							; [47] + 3
	
	NOP								; [50] + 2
	STA COLUPF						; [52] + 3
	
	LDY #6							; [55] + 2
	
	STA WSYNC						; [57]

	DEX								; [0]  + 2
	BNE Loop000E					; [2]  + 3

	
; ************************************* 163rd through 168th scanlines (6 total)

Loop000F

	STA COLUBK						; [5]  + 3
	STA COLUPF						; [8]  + 3
	
	LDX #%11000000					; [11] + 2
	STX PF0							; [13] + 3
	
	LDX #%11111111					; [16] + 2
	STX PF1							; [18] + 3
	
	LDX #%00111111					; [21] + 2
	STX PF2							; [23] + 3
	
	LDX #shirt						; [26] + 2
	NOP								; [28] + 2
	NOP								; [30] + 2
	NOP								; [32] + 2
	NOP								; [34] + 2
	NOP								; [36] + 2
	NOP								; [38] + 2
	NOP								; [40] + 2
	NOP								; [42] + 2
	NOP								; [44] + 2
	STX COLUPF						; [46] + 3
	
	STA WSYNC						; [49]
	
	DEY								; [0]  + 2
	BNE Loop000F					; [2]  + 3
	
	STA PF0
	STA PF1
	STA PF2

; ************************************* 169th through 174th scanlines (6 total)
	
	STA COLUBK
	STA WSYNC
	STA WSYNC
	STA WSYNC
	STA WSYNC
	STA WSYNC
	STA WSYNC

; and now for something completely different...
; ************************************ 175th through 238th scanlines (64 total)

	LDA #darkblue
	STA COLUPF
	LDA #black
	STA COLUBK
	
	LDY #64
	
LogoLoop

	DEY			;  take Y - 1, divide by 4, use the result as the index.
	TYA
	LSR
	LSR
	TAX
	
	STA WSYNC
	
	LDA LogoData0,X					; [0]  + 4
	STA PF0							; [4]  + 3
	LDA LogoData1,X					; [7]  + 4
	STA PF1							; [11] + 3
	LDA LogoData2,X					; [14] + 4
	STA PF2							; [18] + 3
	LDA LogoData3,X					; [21] + 4
	STA PF0							; [25] + 3
	LDA LogoData4,X					; [28] + 4
	NOP								; [32] + 2 lets not clobber PF1 just yet...
	STA PF1							; [34] + 3
	LDA LogoData5,X					; [37] + 4
	NOP								; [41] + 2 lets not clobber PF2 just yet...
	NOP								; [43] + 2
	STA PF2							; [45] + 3

	TYA
	BNE LogoLoop

	STA WSYNC

; ************************************* 239th through 244th scanlines (6 total)
	
	LDA #black
	STA COLUBK
	STA COLUPF
	STA WSYNC
	STA WSYNC
	STA WSYNC
	STA WSYNC
	STA WSYNC
	STA WSYNC

; *****************************************************************************
		
	LDA #$0000
	STA PF0
	STA PF1
	STA PF2
	STA COLUPF
	STA COLUBK
		
	RTS
	
; *****************************************************************************
OverScan

; *****************************************************************************

	LDX #30
KillLines
	 STA WSYNC
	 DEX
	 BNE KillLines
	RTS

; *****************************************************************************
; Graphics Data

; *****************************************************************************
	
	org $FF00

LogoData0

	.byte %00000000, %00000000, %00000000, %10000000, %10000000
	.byte %10000000, %01000000, %01000000, %00000000, %11000000, %01000000
	.byte %01000000, %11000000, %01000000, %01000000, %11000000
		
LogoData1

	.byte %00000000, %10001111, %10000010, %01000010, %01000010
	.byte %01000010, %00100010, %00101111, %00000000, %11011101, %00010001
	.byte %00010001, %10010001, %00010001, %00010001, %11010001
	
LogoData2

	.byte %00000000, %00111001, %01000100, %01000000, %00111000
	.byte %00000100, %01000100, %00111001, %00000000, %00010111, %10010000
	.byte %01010000, %00110011, %01010000, %10010000, %00010111

LogoData3

	.byte %00000000, %11111111, %01000100, %01000100, %01000100
	.byte %01000100, %01000100, %11111111, %00000000, %00010001, %00000000
	.byte %00000000, %00000000, %00000000, %00000000, %11011101

LogoData4

	.byte %00000000, %10011100, %00100010, %00100010, %00100010
	.byte %00100010, %00100010, %10011100, %00000000, %10001001, %10001001
	.byte %10001010, %10001110, %10001001, %10001001, %11101110
	
LogoData5

	.byte %00000000, %00100001, %00100001, %00110001, %00101001
	.byte %00100101, %00100011, %00100001, %00000000, %00011100, %00100010
	.byte %00100010, %00100010, %00100010, %00100010, %00011100
	
	
; *****************************************************************************

	org $FFFC
	.word Start
	.word Start

	org $FF00
Current Thread