Homebrew:Fullscreenpicture

From veswiki
Revision as of 19:50, 25 February 2019 by E5frog (talk | contribs)
Jump to: navigation, search

Demonstration on how to use the blitGraphic and MultiBlitGraphic subroutines.

Program plots a full-screen picture two times, first time with blitGraphic plot:ing each of the three colors one screen at a time and second time with MultiBlitGraphic.


This is the beautiful picture: Chan0000.png


... which looks perfectly fine if you squint your eyes and back away slowly.
Palette is drawn using a blitGraphic block 2x58 bits starting at column 121

In 14,5 bytes (padded to 15) we fill in two bits to set the background color for each row:

00 black 
01 light gray/grey
10 light blue
11 light green

Using blitGraphic for palette takes 23 bytes of data (setting colors, coordinates and the adress to data)

Here's the palette-file (recommended way to set palette)

	; palette

gfx.palette.parameters:
	.byte	clear			; color 1
	.byte	green			; color 2
	.byte	121			; x position
	.byte	0			; y position
	.byte	2			; width
	.byte	58			; height
	.word	gfx.palette.data	; address for the graphics

gfx.palette.data:
		.byte	%10101010, %10101010, %00100010, %00100010, %00100010, %00100010, %00100010
		.byte	%00100010, %00001000, %10100001, %00010001, %00010001, %00010001, %00010001
		.byte	%00010000




; full screen picture demo by e5frog, original picture painted by Kurt_Woloch

	processor f8

;===========================================================================
; VES Header
;===========================================================================

	include	"ves.h"	

;===========================================================================
; Configuration
;===========================================================================

game_size		=	4			; game size in kilobytes

;===========================================================================
; Program Entry
;===========================================================================

;---------------------------------------------------------------------------
; Cartridge Initalization unsing macros from ves.h
;---------------------------------------------------------------------------

	org	$800

cartridge.init:
	; initalize the system
	CARTRIDGE_START
	CARTRIDGE_INIT

	
;---------------------------------------------------------------------------
; Main Program 
;---------------------------------------------------------------------------

main:

	; clear to B&W 

	li	$21
	lr	3, A
	pi	clrscrn		; clrscrn is set in ves.h


	; plot blue parts of picture - and white (one bit per pixel)

	dci	gfx.blue.parameters
	pi	blitGraphic

	; plot red parts of picture

	dci	gfx.red.parameters
	pi	blitGraphic

	; plot green parts of picture

	dci	gfx.green.parameters
	pi	blitGraphic



	; set palette (two bits per row)

	dci	gfx.palette.parameters
	pi	blitGraphic



	; wait for hand controller input

	pi	wait.4.controller.input

	; clear to B&W using a BIOS routine

	li	$21
	lr	3, A
	pi	clrscrn



	; now draw with the multiblit version, two bits per pixel

	dci	gfx.multicolor.parameters
	pi	multiblitGraphic


	; set palette 
	
	dci	gfx.palette.parameters
	pi	blitGraphic



	; wait for hand controller input

	pi	wait.4.controller.input


	jmp	0			; restart




wait.4.controller.input:
	; see if one of the hand controllers has moved
	clr
	outs	0
	outs	1						; check right hand controller
	ins	1
	com
	bnz	wait.4.controller.input.end
	; check the other controller
	clr
	outs	4						; check left hand controller
	ins	4
	com
	bnz	wait.4.controller.input.end
	br	wait.4.controller.input

wait.4.controller.input.end:

	pop



	

;---------------------------------------------------------------------------

	; gfx drawing routines

	include "drawing.inc"

	include "multiblit.inc"

	; graphics data

	include "picture-palette.inc"	
	include "blue.inc"
	include "red.inc"
	include "green.inc"

	include "multicolor.inc"

;===========================================================================
; Signature 
;===========================================================================

	; signature
	org [$800 + [game_size * $400] -$10]

signature:

	.byte	"   e5frog 2007  "


Here's the MultiBlitGraphic formatted picture data. Full screen 102x58 takes 1479 bytes (even bytes, no padding):


; defender tournament MultiBlitGraphic picture

; Each bit pair is used as one pixel, with %00 being green, %01
; being red, %10 being blue, and %11 being the background color.

	; multicolor

gfx.multicolor.parameters:
	.byte	0			; x position
	.byte	0			; y position
	.byte	102			; width
	.byte	58			; height
	.word	gfx.multicolor.data		; address for the graphics

gfx.multicolor.data:

		.byte	%11111111, %11111110, %11101110, %11111111, %11111111, %11101111, %11111111
		.byte	%11111111, %11111111, %11111111, %11111111, %11111111, %11111111, %11110111
		.byte	%01011111, %11111111, %11111111, %11111111, %11111111, %11111111, %10111111
		.byte	%11111100, %01001101, %10001111, %11011011, %11101111, %11111111, %11111111
		.byte	%11111110, %11111111, %11111111, %11101110, %11111111, %11111111, %11111111
		.byte	%11111111, %11111111, %11111111, %11111100, %01010001, %11111111, %11101110
		.byte	%11111011, %11111111, %11111111, %11111100, %11110101, %01100110, %00000111
		.byte	%01001000, %10011000, %11101110, %11101111, %11111111, %11111111, %11111011
		.byte	%11111111, %11111110, %11101110, %11101111, %11111111, %11111111, %11111111
		.byte	%11111111, %11111101, %11011100, %11111111, %11111111, %11111111, %11111111
		.byte	%11111111, %10111011, %00010100, %01010110, %01001001, %00010100, %01011111
		.byte	%11111111, %11111011, %10111111, %10111011, %11111011, %11111111, %11111111
		.byte	%11111111, %11111111, %11111111, %11111111, %11111111, %11111100, %01010101
		.byte	%11111111, %00111111, %11111111, %11111111, %11111111, %11111100, %01010101
		.byte	%01011001, %01000101, %01010110, %01010110, %11111011, %11111111, %11111111
		.byte	%10111111, %11111111, %11111011, %10111011, %11111111, %11111111, %11111111
		.byte	%11111111, %11111111, %11111111, %11000111, %01011111, %11111111, %10111011
		.byte	%11111111, %11111111, %11111100, %01010110, %01000110, %01001001, %01001001
		.byte	%00010110, %01011111, %11111110, %11111111, %11111111, %11111111, %11111111
		.byte	%11111111, %11111110, %11111111, %11111111, %11111111, %11111111, %11111111
		.byte	%11111111, %01110111, %11111111, %11111111, %11111111, %11111111, %11111111
		.byte	%11010010, %01010001, %00010101, %01010101, %01010101, %00010010, %11111111
		.byte	%11111111, %11111111, %11111111, %11111111, %11111111, %11111111, %11111111
		.byte	%11111111, %11111111, %11111111, %11111111, %11111111, %11000111, %11011111
		.byte	%11111111, %11111011, %11111111, %11111111, %01010101, %01010001, %01011001
		.byte	%01100110, %01100101, %00010101, %01011010, %10101111, %11111111, %11101110
		.byte	%11101010, %10101010, %10101010, %10101111, %11111111, %11111111, %11111111
		.byte	%01110111, %11111111, %11111100, %01011101, %11111111, %11001100, %11111111
		.byte	%11111101, %01110100, %11010001, %10010101, %01010001, %00010100, %01100110
		.byte	%01010101, %10101010, %10101010, %10101010, %10111011, %10101110, %10101010
		.byte	%10101011, %10101010, %10101010, %10101010, %11101011, %10101110, %10101010
		.byte	%10101110, %10101010, %11101110, %10101010, %10101011, %10111110, %11111111
		.byte	%11111111, %11101111, %11111111, %11111111, %11111111, %11111111, %11111111
		.byte	%11111111, %11111110, %11101111, %11101111, %11111111, %11111111, %11111111
		.byte	%11111111, %11001000, %11110010, %11111111, %11111101, %11111111, %11110011
		.byte	%11111111, %11111111, %01011101, %01110110, %01100100, %01010101, %01010110
		.byte	%01100101, %01000100, %10011010, %10101010, %10101010, %10101010, %10101010
		.byte	%10101011, %10101010, %10101010, %10101010, %10101010, %10111010, %10101011
		.byte	%10101010, %10101010, %10111011, %10101010, %10101010, %10101010, %11111011
		.byte	%10111111, %11111111, %11111111, %11101111, %11111111, %11111111, %11111110
		.byte	%10101111, %11111111, %11111111, %11111111, %11111111, %11011101, %00111111
		.byte	%11111111, %11010101, %01010101, %01010101, %01010101, %01010101, %01010101
		.byte	%01010101, %01010101, %01010101, %01011101, %11010001, %10010001, %00011001
		.byte	%10010001, %01010101, %00011001, %10111010, %10101111, %10101010, %10101010
		.byte	%10101010, %10101010, %10101011, %10101010, %10101110, %10101111, %10101010
		.byte	%10101010, %10101010, %10101010, %10101010, %10101010, %10101010, %10101010
		.byte	%10111010, %11111111, %11111111, %11111111, %11111111, %11111111, %11111111
		.byte	%11111110, %10101010, %10111111, %11111111, %11111111, %11111111, %11111111
		.byte	%11011111, %11011100, %11111111, %01110101, %01011101, %11011111, %01110111
		.byte	%01111101, %11011101, %01110111, %01010101, %01010101, %01010101, %11010001
		.byte	%01010101, %01010001, %00011001, %01011001, %10010001, %01111011, %11101110
		.byte	%11111111, %11111111, %11111111, %11111111, %11111111, %10111011, %10111011
		.byte	%11101110, %10101010, %11101011, %10111110, %11111011, %11101110, %11101011
		.byte	%11101110, %10101010, %10101010, %10101111, %11111111, %11111111, %11111111
		.byte	%11111111, %11111111, %11111110, %11101111, %10111110, %00100010, %00100110
		.byte	%00100010, %00100010, %00010010, %00101110, %11111111, %11010111, %01010101
		.byte	%01010101, %01010100, %01110101, %01011101, %01010101, %01010101, %01010101
		.byte	%01010101, %01010001, %01100110, %01100110, %01100100, %01000100, %01011001
		.byte	%00111011, %10010010, %10101010, %10101010, %10101010, %10101010, %10101011
		.byte	%10101010, %10101010, %10101110, %10111010, %10101010, %10101010, %10101110
		.byte	%10101010, %11101010, %10101010, %10101010, %10101011, %10101111, %11111111
		.byte	%11111111, %11111111, %11111111, %11111111, %11111111, %11111111, %11111111
		.byte	%10111011, %10111111, %10111010, %10101110, %11101110, %11101110, %10101010
		.byte	%10011101, %11011101, %11111111, %11011101, %01011001, %11011111, %11111111
		.byte	%11111111, %11111111, %11111111, %01100110, %01010001, %01000101, %00011001
		.byte	%01011001, %10010001, %10010101, %01110101, %10101010, %10101010, %10101010
		.byte	%10101010, %10101011, %10101010, %10101010, %10101011, %10111011, %10111111
		.byte	%11111011, %10111010, %10111011, %10111111, %11111111, %11111111, %11111111
		.byte	%11111111, %11111111, %11111111, %11111111, %11111111, %11111111, %11111111
		.byte	%10111111, %11111111, %11111111, %10111010, %11111111, %11111111, %11011111
		.byte	%10111111, %11111111, %10111110, %11101110, %00101110, %11101111, %11111110
		.byte	%11010110, %01000101, %01010101, %00010001, %00011001, %00010001, %00100110
		.byte	%01100110, %01100100, %01000100, %01100110, %01000101, %00100010, %11111010
		.byte	%11101010, %10101011, %10101010, %10101011, %10101010, %10101010, %10101010
		.byte	%10101010, %10101010, %10101010, %10101010, %10101010, %11111111, %11111011
		.byte	%10111111, %11111111, %11111111, %11111111, %11111111, %11111111, %11111111
		.byte	%11111111, %11111111, %10111111, %11111100, %11110011, %11111111, %01000111
		.byte	%11111111, %11101111, %11111111, %11111111, %11111011, %10111000, %10111111
		.byte	%11101111, %10111011, %11110110, %01010110, %11101110, %01100110, %01010001
		.byte	%10011001, %01010001, %00010001, %00010001, %11010001, %10010001, %01100101
		.byte	%01111001, %10111111, %10111110, %11101110, %11111111, %11111011, %10111111
		.byte	%11111111, %11111011, %11101110, %11101111, %10111010, %11101010, %10101011
		.byte	%11101111, %11101011, %10111011, %11111111, %11111111, %11111111, %11111111
		.byte	%11111111, %11111111, %11111111, %11111111, %10111111, %11110001, %01011111
		.byte	%11011100, %01001111, %00011111, %11010001, %00111100, %11010001, %00111100
		.byte	%11110010, %01111100, %01111111, %11111111, %11111101, %01110110, %11111010
		.byte	%10111101, %10010100, %01000101, %10010101, %01100110, %01100110, %01011101
		.byte	%00011001, %00011101, %00011000, %11101110, %11111111, %10111011, %11111110
		.byte	%11111111, %11101111, %11111111, %11111111, %11111111, %10101110, %11101110
		.byte	%11111111, %11111111, %11111110, %11111111, %11101111, %11111111, %11111111
		.byte	%11111111, %11111111, %11111111, %11111111, %11111111, %11111110, %11111110
		.byte	%11111111, %00111100, %11111111, %11000100, %01110000, %01011100, %01000100
		.byte	%01111101, %01011101, %10011111, %01100111, %00011110, %00100010, %11101110
		.byte	%01110110, %11101011, %10111001, %01011001, %01100100, %01100110, %11000101
		.byte	%01000100, %01011001, %00100101, %10011101, %10011011, %11111111, %11101111
		.byte	%11111111, %10111011, %11111011, %10111110, %11111011, %11111011, %11101110
		.byte	%11111110, %11111110, %11101010, %10111111, %11111110, %11111111, %11111111
		.byte	%11111111, %11111111, %11111111, %11111111, %11111111, %11111111, %11111111
		.byte	%11111111, %10111111, %11111111, %11111111, %11111111, %01001111, %11101111
		.byte	%00011100, %11110001, %00011111, %11001101, %00010011, %00100010, %00101111
		.byte	%11111000, %01100001, %10010001, %10010001, %10011001, %11010001, %11010001
		.byte	%11010101, %10110110, %00100110, %01001011, %11100010, %00011101, %11011101
		.byte	%11111111, %11111111, %11111011, %11111110, %11111111, %11111111, %11101110
		.byte	%11111110, %11111011, %11111111, %10101110, %11111111, %11111111, %11111110
		.byte	%11111111, %11111111, %11111111, %11111111, %11111111, %10111111, %11111111
		.byte	%10111111, %11101111, %11111110, %11111111, %11111111, %11111111, %11111111
		.byte	%00111100, %01000100, %11011100, %11001111, %11111100, %01000100, %11010001
		.byte	%11111111, %11000110, %11101110, %01101101, %01110101, %01010101, %01110101
		.byte	%01011001, %01010101, %11111101, %10110100, %01011101, %11011101, %10100001
		.byte	%11111101, %11010010, %11111111, %11111111, %11111111, %10111111, %11111111
		.byte	%11111111, %11111111, %11111111, %11111111, %10101111, %11111111, %11111111
		.byte	%11111111, %11111110, %11111011, %11111111, %11111111, %11111011, %11111111
		.byte	%10111111, %11111110, %11111111, %11111011, %11111111, %10111111, %11110001
		.byte	%00010011, %11000100, %01000111, %10011001, %00100001, %10000111, %00110001
		.byte	%01010100, %11110111, %01111111, %11111101, %01011001, %00011001, %01010001
		.byte	%11011101, %01111101, %01000101, %00010101, %11011101, %00011001, %00011000
		.byte	%01011001, %10101010, %01010101, %00011001, %11111110, %11101111, %11111111
		.byte	%11101111, %11111111, %11111111, %11101110, %11111010, %10111111, %11111111
		.byte	%11111111, %11101111, %11111111, %11101110, %11111111, %11111111, %11111011
		.byte	%11111111, %10111111, %11111111, %10111110, %10101011, %11111110, %11111111
		.byte	%10111111, %11111111, %11111110, %11111111, %11111110, %11111010, %11111111
		.byte	%11111011, %11101011, %11111111, %11101111, %11111111, %11111111, %11111111
		.byte	%11111111, %11101110, %11101110, %11111111, %11111110, %11101111, %10101111
		.byte	%11111111, %11101111, %11111110, %11101110, %11111011, %11111111, %01000101
		.byte	%11011101, %00010001, %11110110, %01110101, %11000100, %10111010, %00010001
		.byte	%01100111, %11110110, %11010101, %01010100, %11010101, %11110111, %01111011
		.byte	%11010101, %01010101, %01110111, %11010011, %11011110, %11011010, %11010110
		.byte	%01111011, %11101001, %11011000, %10101111, %11111011, %11111111, %11111111
		.byte	%11111111, %11111111, %11101111, %11111011, %11111110, %11111111, %11111111
		.byte	%10111111, %10111110, %11101111, %11101111, %11111111, %11111111, %10101111
		.byte	%11111111, %10111111, %11111011, %10111011, %10111111, %11111111, %11111011
		.byte	%11111111, %10000011, %01010000, %01000110, %00100001, %00001000, %10011001
		.byte	%10011001, %00011001, %00001101, %01001011, %10111110, %11111111, %11110010
		.byte	%00100011, %00100010, %11001011, %11110111, %11111111, %11111111, %11111111
		.byte	%11111111, %11111101, %11011101, %11001001, %11111111, %11110001, %10011101
		.byte	%11110111, %11110101, %01011001, %01011101, %00010001, %00011001, %00011001
		.byte	%01000101, %11001011, %10001001, %10011010, %10100101, %01010110, %01000101
		.byte	%01010101, %11010101, %01010101, %01011111, %01111111, %11111111, %11111111
		.byte	%11111111, %01001010, %11101011, %10111011, %11111111, %11111111, %11101010
		.byte	%11111011, %11111111, %11111111, %11111111, %11111110, %11111011, %11111110
		.byte	%11101111, %10101111, %10111011, %11111111, %11111111, %11111111, %11111111
		.byte	%11101111, %11111111, %11111111, %11111111, %11111111, %11111111, %10111011
		.byte	%10110110, %01000100, %01110111, %11011111, %11110101, %11110101, %01100101
		.byte	%01110101, %01100001, %01000111, %01100101, %10111111, %00011101, %10001001
		.byte	%10011101, %11011101, %11111101, %01010101, %00010001, %01011101, %11010101
		.byte	%11111101, %01010101, %01100101, %00101110, %10111011, %11111111, %11111111
		.byte	%11111110, %10111011, %11111111, %11111111, %11111111, %11111111, %11111010
		.byte	%11111110, %11101111, %11111110, %11111111, %11111111, %11111111, %11111111
		.byte	%10111111, %11101111, %11101111, %11111111, %11101111, %11111111, %11111111
		.byte	%11111111, %10111010, %11100100, %01100110, %01010101, %11111111, %11001100
		.byte	%11110001, %00010010, %00110001, %01110101, %11011111, %01110100, %01010110
		.byte	%01110110, %00010001, %01010101, %10010101, %01110101, %01000101, %01010111
		.byte	%01001101, %00011001, %11011001, %11001101, %11010001, %01101110, %10101010
		.byte	%11111111, %11111111, %11111110, %11111111, %11111011, %11111011, %11111111
		.byte	%11111111, %11111011, %10111111, %11101110, %11101110, %11111111, %11111111
		.byte	%11111110, %11111111, %11111111, %11101111, %11111111, %11111111, %11111111
		.byte	%11111111, %11111111, %11111111, %10111010, %11100100, %01000100, %01000101
		.byte	%01100101, %10011001, %11011001, %01010101, %00110011, %00111100, %01011101
		.byte	%01110101, %01111111, %11010101, %10110101, %01010101, %01010100, %01000101
		.byte	%10010110, %01011101, %01010101, %01010001, %00010001, %01010110, %01100110
		.byte	%00101000, %10101110, %11111111, %11111111, %11111111, %11111111, %11111111
		.byte	%11111111, %10111111, %11111111, %11111111, %10111110, %10111110, %11111011
		.byte	%10101111, %11101111, %10111111, %11111111, %11111110, %11111111, %11111111
		.byte	%11111111, %10101110, %10111111, %11111111, %11111111, %11111011, %11111111
		.byte	%01011001, %01100110, %01010101, %01000100, %01000111, %01000100, %11001100
		.byte	%11110011, %00110001, %01110101, %01110101, %01110111, %01011101, %01010101
		.byte	%01010101, %01010101, %01010001, %00010101, %01010101, %01111101, %00111101
		.byte	%11110100, %01010101, %01011110, %11010001, %11111111, %11111111, %11111111
		.byte	%11111111, %11111111, %11111111, %11111111, %11111111, %11111111, %11111111
		.byte	%11111110, %10111111, %10101111, %11111010, %10101110, %11111111, %11101110
		.byte	%11111111, %11111011, %10111111, %10111010, %11111111, %11111111, %11111111
		.byte	%11111111, %11111100, %11010100, %01010100, %10010001, %10011001, %10011001
		.byte	%01100100, %01001101, %00110100, %11001100, %11001111, %01111101, %01011111
		.byte	%01010101, %01111101, %01010101, %01010101, %01010101, %01010101, %01010101
		.byte	%10010001, %11110100, %01100101, %00011001, %01101110, %11100110, %11111111
		.byte	%11111111, %11111111, %11101111, %11111111, %11111111, %11111111, %11111111
		.byte	%11111111, %11111111, %11111111, %11111111, %10101111, %10111010, %11111110
		.byte	%11101010, %10101010, %11111111, %10111111, %11111111, %10111010, %10111111
		.byte	%11111111, %11111111, %11111111, %11111101, %00010110, %11110001, %01001101
		.byte	%00010001, %00010010, %01000111, %00010001, %11001100, %11110011, %00110011
		.byte	%00110000, %01001111, %01010101, %11111101, %01010101, %11111111, %01010101
		.byte	%01010101, %01011101, %00011100, %11111101, %00100101, %10010001, %00101110
		.byte	%11101101, %11111111, %11111111, %11101111, %11111010, %11111111, %11111111
		.byte	%11111111, %11111111, %11111111, %11111111, %11111111, %11111111, %11111111
		.byte	%11111010, %10111111, %11111011, %11101111, %10111010, %11111011, %11111111
		.byte	%11111111, %11101111, %11111111, %11111111, %11111111, %11110101, %00010001
		.byte	%00010001, %01000111, %11001111, %11010001, %10010100, %01010001, %00111100
		.byte	%01001100, %01111111, %01110111, %01110111, %01000111, %11111101, %01010101
		.byte	%11010011, %01010101, %01011101, %01010101, %01010101, %01010001, %11010101
		.byte	%11011001, %01101011, %10101101, %11111111, %11111011, %11101110, %11111111
		.byte	%11111111, %11111111, %11111011, %11111111, %11111111, %11111111, %11111111
		.byte	%11111111, %11111111, %11111110, %10111110, %11111010, %10111111, %11111111
		.byte	%10101010, %10101010, %11101110, %11111111, %11111111, %11111111, %11111111
		.byte	%11110100, %11011011, %11001111, %11110000, %01110001, %01001101, %00010011
		.byte	%11111100, %11001100, %11110100, %01001100, %11001100, %11010001, %11010001
		.byte	%01111101, %01010101, %11111111, %01010101, %01010100, %11111111, %11011101
		.byte	%01010101, %01010101, %01010001, %10001011, %10001001, %11111111, %11111111
		.byte	%11111111, %11101111, %10111011, %11111111, %11111111, %11111111, %11111111
		.byte	%11101111, %11111111, %11111111, %10111111, %11111111, %11111111, %11111010
		.byte	%10101111, %10111011, %11101110, %11101011, %11101110, %11101110, %11111111
		.byte	%11111111, %11111111, %11110110, %00010001, %00010011, %00111111, %11111111
		.byte	%00010010, %00011001, %11000100, %01110000, %11111100, %01000111, %00011100
		.byte	%00010001, %00110011, %00010001, %10010001, %11111111, %01010101, %01010111
		.byte	%11010001, %00010101, %11010101, %01110101, %01010001, %01011010, %10001001
		.byte	%11111111, %11111011, %11111111, %11111111, %11111111, %11111111, %11101111
		.byte	%11101111, %11111111, %11111110, %11111111, %11111011, %11111111, %11111111
		.byte	%11111111, %11111110, %10111111, %11111111, %11101010, %10101011, %11111111
		.byte	%10111111, %10101010, %10101011, %10111011, %11111111, %00011001, %10001001
		.byte	%10011001, %10011001, %10011001, %01010001, %10010001, %10010101, %10000111
		.byte	%11111101, %11110111, %01111100, %11000100, %11001100, %01000111, %01111101
		.byte	%11010101, %01010111, %11011101, %11010101, %01010101, %01111111, %11011111
		.byte	%11111111, %11011001