Hello again!
Finished Kurt_Woloch's picture, here's a snapshot from MESS:
Kurt's mock-up picture:
Here's the binary for MESS:
picture.bin 4K
94 downloads
And finally all the code who made this possible:
As you can see I made it easy for me and just plotted the correct spots (columns 121 and 121) to set the palette for each row, this could easily be changed into reading a string of data and have a standard routine for plotting it all.
Code game.asm:
; 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
;---------------------------------------------------------------------------
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
; plot picture blue
dci gfx.blue.parameters
pi blitGraphic
; plot picture red
dci gfx.red.parameters
pi blitGraphic
; plot picture green
dci gfx.green.parameters
pi blitGraphic
; set each palette row
; plot in 121 -> lt.blue, in 122 -> l.gray, both 121 and 122 -> lt.green
;lb
clr
lr 1, A
li 121 ; lt.blue
lr 2, A
clr
lr 3, A
pi plot
;lb
li 121 ; lt.blue
lr 2, A
lis 1
lr 3, A
pi plot
;lb
li 121 ; lt.blue
lr 2, A
lis 2
lr 3, A
pi plot
;lb
li 121 ; lt.blue
lr 2, A
lis 3
lr 3, A
pi plot
;lb
li 121 ; lt.blue
lr 2, A
lis 4
lr 3, A
pi plot
;lb
li 121 ; lt.blue
lr 2, A
lis 5
lr 3, A
pi plot
;lb
li 121 ; lt.blue
lr 2, A
lis 6
lr 3, A
pi plot
;lb
li 121 ; lt.blue
lr 2, A
lis 7
lr 3, A
pi plot
;black
;lb
li 121 ; lt.blue
lr 2, A
lis 9
lr 3, A
pi plot
;black
;lb
li 121 ; lt.blue
lr 2, A
lis 11
lr 3, A
pi plot
;black
;lb
li 121 ; lt.blue
lr 2, A
lis 13
lr 3, A
pi plot
;black
;lb
li 121 ; lt.blue
lr 2, A
lis 15
lr 3, A
pi plot
;black
;lb
li 121 ; lt.blue
lr 2, A
li 17
lr 3, A
pi plot
;black
;lb
li 121 ; lt.blue
lr 2, A
li 19
lr 3, A
pi plot
;black
;lb
li 121 ; lt.blue
lr 2, A
li 21
lr 3, A
pi plot
;black
;lb
li 121 ; lt.blue
lr 2, A
li 23
lr 3, A
pi plot
;black
;lb
li 121 ; lt.blue
lr 2, A
li 25
lr 3, A
pi plot
;black
;lb
li 121 ; lt.blue
lr 2, A
li 27
lr 3, A
pi plot
;black
;lb
li 121 ; lt.blue
lr 2, A
li 29
lr 3, A
pi plot
;black
;lb
li 121 ; lt.blue
lr 2, A
li 31
lr 3, A
pi plot
;black
;black
;lb
li 121 ; lt.blue
lr 2, A
li 34
lr 3, A
pi plot
;black
;lb
li 121 ; lt.blue
lr 2, A
li 36
lr 3, A
pi plot
;lb
li 121 ; lt.blue
lr 2, A
li 37
lr 3, A
pi plot
;black
;lg
li 121
lr 2, A
li 39
lr 3, A
pi plot
li 122
lr 2, A
li 39
lr 3, A
pi plot
;black
;40
;lg
li 121
lr 2, A
li 41
lr 3, A
pi plot
li 122
lr 2, A
li 41
lr 3, A
pi plot
;black
;42
;lg
li 121
lr 2, A
li 43
lr 3, A
pi plot
li 122
lr 2, A
li 43
lr 3, A
pi plot
;black
;44
;lg
li 121
lr 2, A
li 45
lr 3, A
pi plot
li 122
lr 2, A
li 45
lr 3, A
pi plot
;black
;46
;lg
li 121
lr 2, A
li 47
lr 3, A
pi plot
li 122
lr 2, A
li 47
lr 3, A
pi plot
;black
;48
;lg
li 121
lr 2, A
li 49
lr 3, A
pi plot
li 122
lr 2, A
li 49
lr 3, A
pi plot
;black
;50
;lg
li 121
lr 2, A
li 51
lr 3, A
pi plot
li 122
lr 2, A
li 51
lr 3, A
pi plot
;black
;52
;lg
li 121
lr 2, A
li 53
lr 3, A
pi plot
li 122
lr 2, A
li 53
lr 3, A
pi plot
;black
;54
;lg
li 121
lr 2, A
li 55
lr 3, A
pi plot
li 122
lr 2, A
li 55
lr 3, A
pi plot
;black
;56
;lg
li 121
lr 2, A
li 57
lr 3, A
pi plot
li 122
lr 2, A
li 57
lr 3, A
pi plot
main.end:
br main.end
; break!!
;---------------------------------------------------------------------------
include "drawing.inc"
; graphics data
include "blue.inc"
include "red.inc"
include "green.inc"
;===========================================================================
; Signature
;===========================================================================
; signature
org [$800 + [game_size * $400] -$10]
signature:
.byte "···Frog·2007····"
Code drawing.inc (by Blackbird)
;===================;
; Drawing Functions ;
;===================;
;---------------;
; Plot Function ;
;---------------;
; plot out a single point on the screen
; uses three registers as "arguments"
; r1 = color
; r2 = x (to screen) (0-101)
; r3 = y (to screen) (0-57)
plot:
; set the color using r1
lr A, 1
outs 1
; set the column using r2
lis 4
as 2 ; fix the x coordinate
com
outs 4
; set the row using r3
lis 4
as 3 ; fix the y coordinate
com
outs 5
; transfer data to the screen memory
lis $6
sl 4
outs 0
lis $5
sl 4
outs 0
; delay until it's fully updated
; lis 6
;plot.delay:
; ai $ff
; bnz plot.delay
pop ; return from the subroutine
; takes graphic parameters from ROM, stores them in r1-r6,
; changes the DC and calls the blit function with the parameters
blitGraphic:
; load six bytes from the parameters into r0-r5
lisu 0
lisl 1
blitGraphic.getParams:
lm
lr I, A ; store byte and decrease ISAR
br7 blitGraphic.getParams ; not finished with the registers, loop
; load the graphics address
lm
lr Qu, A ; into Q
lm
lr Ql, A
lr DC, Q ; load it into the DC
; call the blit function
jmp blit
;---------------;
; Blit Function ;
;---------------;
; this function blits a graphic based on parameters set in r1-r6,
; and the graphic data pointed to by DC0, onto the screen
;
; originally from cart 26, modified and annotated
; uses r1-r9, K, Q
;
; r1 = color 1 (off)
; r2 = color 2 (on)
; r3 = x position
; r4 = y position
; r5 = width
; r6 = height (and vertical counter)
;
; r7 = horizontal counter
; r8 = graphics byte
; r9 = bit counter
;
; DC = pointer to graphics
blit:
; adjust the x coordinate
lis 4
as 3
lr 3, A
; adjust the y coordinate
lis 4
as 4
lr 4, A
lis 1
lr 9, A ; load #1 into r9 so it'll be reset when we start
lr A, 4 ; load the y offset
com ; invert it
blit.row:
outs 5 ; load accumulator into port 5 (row)
; check vertical counter
ds 6 ; decrease r6 (vertical counter)
bnc blit.exit ; if it rolls over exit
; load the width into the horizontal counter
lr A, 5
lr 7, A
lr A, 3 ; load the x position
com ; complement it
blit.column:
outs 4 ; use the accumulator as our initial column
; check to see if this byte is finished
ds 9 ; decrease r9 (bit counter)
bnz blit.drawBit ; if we aren't done with this byte, branch
blit.getByte:
; get the next graphics byte and set related registers
lis 8
lr 9, A ; load #8 into r9 (bit counter)
lm
lr 8, A ; load a graphics byte into r8
blit.drawBit:
; shift graphics byte
lr A, 8 ; load r8 (graphics byte)
as 8 ; shift left one (with carry)
lr 8, A ; save it
; check color to use
lr A, 2 ; load color 1
bc blit.savePixel ; if this bit is on, draw the color
lr A, 1 ; load color 2
blit.savePixel:
inc
bc blit.checkColumn ; branch if the color is "clear"
outs 1 ; output A in p1 (color)
blit.transferData:
; transfer the pixel data
lis $6
sl 4
outs 0
lis $c
sl 4
outs 0
; and delay a little bit
blit.savePixelDelay:
; ai $60
; bnz blit.savePixelDelay ; small delay
blit.checkColumn:
ds 7 ; decrease r7 (horizontal counter)
bz blit.checkRow ; if it's 0, branch
ins 4 ; get p4 (column)
ai $ff ; add 1 (complemented)
br blit.column ; branch
blit.checkRow:
ins 5 ; get p5 (row)
ai $ff ; add 1 (complemented)
br blit.row ; branch
blit.exit:
; return from the subroutine
pop
Bitmaps for blue, green and red dots
These were written as as described before, for the blue field all the '.' 'G' and 'R' were replaced by 0 and all B:s were replaced by 1. All whitespace and other extra charaters were removed resulting in a long character string of 1:s and 0:s (mostly zeroes). I had previosly written a small C++ program to format the long string of 0000010010011001000111000 etc into assembler byte-code as can be seen below: .byte 000100, %10011001, etc...
Then just add the rest of the data needed for Blackbirds blitGraphics routine, colors, start coordinates, width, height
; blue
gfx.blue.parameters:
.byte clear ; color 1
.byte blue ; color 2
.byte 0 ; x position
.byte 0 ; y position
.byte 102 ; width
.byte 58 ; height
.word gfx.blue.data ; address for the graphics
gfx.blue.data:
.byte 000001, %01010000, 000100, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, %10000000, 001000, 100100, 000000
.byte 010000, 000101, 000000, 000000, 000000, 000000, 000101
.byte 100000, 000000, 000101, 000010, %10100101, %01000000, 000010
.byte 000001, %01010100, 000000, 000000, 000000, 000000, 000000
.byte 001010, 000001, 100000, 000000, 101000, %10100010, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 100000, 010001, 100000, 001000, 000010, %10100000, 000000
.byte 000000, 000000, 000000, %10100000, 000000, 010001, 100010
.byte 010000, 010000, 000000, 000000, 010000, 000000, 000000
.byte 000000, 000000, 000000, 000001, 000000, 000000, 010000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000010, 000000, 000000, 100101, %01000000, 111100, 000101
.byte %01111111, %11111100, 000000, 000000, 000000, 000000, 000000
.byte 000000, 001000, 000000, %01010000, %11111111, %11111010, %11011111
.byte %11101111, %11111111, %01101101, %11111101, %11110101, %11111110, %10010000
.byte 000100, 000000, 000000, 000000, 010100, %01000000, 000000
.byte 000010, 010000, 000000, 000000, 000000, 010100, 000001
.byte %01000000, %10111111, %11111111, %11111110, %11111111, %11111111, %10111110
.byte %11111111, %10101111, %11111111, 101000, 000000, %01000000, 000001
.byte %11000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 001000, 101000, 000010, %10111100, %11111111
.byte %11111111, %11101111, %11011100, %11111111, %11111111, %11111111, %11111111
.byte %10110000, 000000, 000000, 000001, %11111000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 100010, %10000010, %01010000, 000000, 000000, %10101010
.byte %01011111, %01101001, 100101, %01100101, %11111111, %11000000, 000000
.byte 000000, 010100, %10010101, %01010101, %01010001, %01010000, 000000
.byte 000000, 000000, 000000, 000000, 000101, %01010100, 000010
.byte 101001, %11111111, %11111111, %11101111, %11111101, %10111111, %11111101
.byte %11110111, %11111111, %11101100, 000000, 000000, 000000, 000000
.byte %10101000, %10111101, %01010101, %11111000, 000000, 000010, 000000
.byte 000000, 000101, 000000, 100010, %10001000, 001111, %11111111
.byte %11111110, %11111111, %11101010, %10000010, %10111010, %10000000, 000000
.byte 000000, 000000, 000000, 001000, 000000, %10110000, 000000
.byte %10000000, %10010101, %01010100, 010001, 000000, 000010, 000101
.byte %01010100, 000101, 000101, 110111, %11101111, %11101111, %11111111
.byte %11111111, %11111111, %11110000, 101000, 000000, 000000, 000000
.byte 000000, %10000000, 000000, 000000, %01000000, 000010, %10101000
.byte %01001010, 010001, %01010101, 001010, 000000, 000000, %10000100
.byte 101000, %10010101, 000010, %10000000, 100101, %01001011, %01111110
.byte %01000110, %10100000, 000000, 000000, 000000, 001000, 000000
.byte 000000, 000000, 000000, 000001, 000000, 000000, 010011
.byte %10001000, 001000, %01010101, 000010, 000010, %01010000, %10100001
.byte 000100, 000000, 001101, %01010000, 000001, 000100, 000000
.byte 000000, 000000, 000001, 010000, 000000, 000000, 000000
.byte 000000, %10000100, 010101, %01010001, %01101010, 100100, %01010000
.byte 000010, %01001000, %10100000, %01000000, %10100010, %10010010, 100101
.byte 010001, %01111000, 010000, 000000, 000000, 000000, 000000
.byte 001000, 000000, 000000, %01000000, 000000, 000000, %01010100
.byte 100100, %10001000, %10100000, 000000, %10010101, 100101, 000000
.byte 000000, 100001, 000000, %01010001, 100000, %11010000, 000001
.byte 000000, 000000, 001000, 001000, %01000001, 000000, 000000
.byte 000000, 000000, 000000, 000000, 010101, %01000000, 000000
.byte 100000, 001000, 000000, %11000000, 010000, 000000, %10000000
.byte 000000, 000000, %11000000, 000000, 010010, 000000, 100000
.byte %10000001, 000010, 001000, 000000, 000000, %10100100, %10000000
.byte 000000, 000000, 100010, 000000, 000000, 000000, 100010
.byte 101111, 000010, 010100, 000100, 000000, %01010011, %10000000
.byte 000100, 000101, 000000, 100000, %10000000, %10011110, 010000
.byte %10000000, 010000, 010011, 000010, %01100000, %01000000, 000000
.byte 000101, %01010000, 010100, %11000000, %01000001, %01010010, 000000
.byte 000000, 010000, 001011, 000100, 010000, 000000, 000010
.byte 000000, 000000, 010011, 010010, %01100010, %11000010, 000000
.byte 000000, %01000010, 010000, 001000, %10010100, %01000000, 001100
.byte 001000, 101010, %10000000, 100000, %10000000, 010100, 101010
.byte %10100010, 000010, %10010000, 010100, %01010010, 000000, 000000
.byte 000000, 000010, 000000, %10000000, 000010, 000000, 100010
.byte 000010, %10101011, %11000001, 000000, 000000, 000000, 000000
.byte 000011, %01101010, 000000, %01110010, 000000, 000001, 100001
.byte %01001100, %10100000, 000000, 000100, 000000, 000000, 001010
.byte %10010000, 000000, 000000, %01000000, %01000000, %01001000, 001010
.byte %10000000, 000000, 000000, 000000, 000100, %01011010, 000000
.byte 011010, 000000, 000000, 110001, %01000001, 000000, 000000
.byte %10000100, %01000000, %01000000, 000000, %10110100, %01010000, 000000
.byte 000001, 000000, 000000, 010001, 000000, %10000000, 000000
.byte 000010, 100000, 000101, %11110000, 000001, 000010, 100000
.byte 000010, %10000101, %01010000, 000001, 000000, %01000000, 000000
.byte 000000, 001011, %01000000, 000100, %10100010, 000000, 000000
.byte 000000, 001000, 000000, 001001, 000000, 000000, 010101
.byte %01101101, 000000, 000000, 000000, %10000000, 001001, %10010010
.byte %11000100, %10000000, 010000, 000000, %11011000, 000000, 100000
.byte 100101, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000001, 000000, 000000
.byte 000000, 000000, 000000, 000001, %10001100, 111101, 000101
.byte 000010, %10001011, 000000, 000000, 000000, 001000, %10101010
.byte %01000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte %10000000, %01000010, %01010101, 000000, 000100, 000000, 000000
.byte 000000, 000000, %11001011, 010111, %11110000, %10000000, %10111000
.byte 000000, 000000, 010000, 000000, 010000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000100, %10000101
.byte %01000000, 000100, 110000, 000000, 000000, 000000, 000000
.byte 111000, 100100, %10110010, 000000, %01000000, 000000, 000000
.byte 000000, 000000, %10000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000010, %01101100, 000010, %01010000
.byte 000000, 100000, 000000, 000000, 000001, %10010011, %10000000
.byte %11111111, %01010000, 000000, 000000, 100000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 001010, %10100000, 000000, %01001010, 000000, 000000
.byte %01000000, 001000, 000000, 111100, %10100101, %01100101, %01010000
.byte 000000, 010000, 000000, 000001, 100000, 000000, 000000
.byte 000000, 001000, 000000, 000000, 000000, 000000, 111010
.byte 000010, 000000, 000000, %01000100, 000001, 000010, 000000
.byte 000001, %10000000, %01111110, 001000, %11111110, %10100000, 101010
.byte %10101010, %10100000, %10001000, %10000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 100000
; green
gfx.green.parameters:
.byte clear ; color 1
.byte green ; color 2
.byte 0 ; x position
.byte 0 ; y position
.byte 102 ; width
.byte 58 ; height
.word gfx.green.data ; address for the graphics
gfx.green.data:
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000001, %01000100, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 010010, 000000
.byte 000000, 000001, 000000, %11000101, 010000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000001, 000000, 000000
.byte 000000, %10010000, %01001001, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000001, 000000, %10000000, 000000, 010000
.byte 000100, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000100, 000000, 000000, 000001, 000100, %01000100
.byte %10000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000010, 101000, 000000, %10100000
.byte 000000, 000000, 000000, 000000, 000000, 000000, %01000000
.byte 000000, 000000, 000010, 000000, 001000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000001, 000000, %01010000
.byte 000001, 100000, 101001, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000101, 100000, 000000, 100000, 000000, 000001, 000000
.byte 000101, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, %10000000, 000000, 000000, 000000
.byte 000000, 000000, 100010, %10000010, 001000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000001, 000000, 000000, 000000, 000000, 000000, 000010
.byte 000010, %10000000, 100000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 001010, %10001010, %10101010, %10000000, 000000
.byte 000001, 000000, 000000, 000000, 100000, 000001, %01010000
.byte %10000010, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 100100, %10000000, 100000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, %10000000, 000000, %01000000, %10101000, %10101000
.byte 000001, %01010000, %01001010, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000001, 100000, %01000000, 000000, 000000, 010000
.byte 000000, 000000, 000000, 100000, 101010, %10100010, 100000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 100000
.byte 010100, %10000010, %10010010, %10010010, 010000, 000000, 000000
.byte 000001, %01000000, 000000, 001000, %10001001, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, %10010000, %01010011, 010101
.byte 000000, 000000, %10001010, 000000, 000000, 000001, 000100
.byte %01010000, %10000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000100, 001001, 101000, %01001010, %10101000
.byte 010010, 100010, 000010, 100000, 001000, %01000010, %10000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte %10010101, 010100, 010101, 100000, %01000000, 000000, 000000
.byte 000000, 000001, 000000, 100000, 100000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 101010, %01010100, 001010, %01001010
.byte 010000, 000000, 001000, 100000, 000100, %10000000, %10001001
.byte 000000, 001000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000100
.byte 001010, 000000, %01010000, %10100000, 000000, 010000, 000000
.byte 000000, 000010, 000000, 000000, 000001, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, %01100011, %01001010, %11010000
.byte 001000, %11000100, 000000, 101010, %10100100, 000000, 000000
.byte 000000, 000100, 000010, 000000, 000000, 001010, %10001000
.byte %01000100, %01000000, 000000, %01000000, 000000, 000000, 000000
.byte 000100, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000101, 000000, 000000, 000000, 100100, 000000, %10000100
.byte 000000, 000000, %10100000, 000000, 000000, %10000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000001, 000000, 000101
.byte 101010, %10100000, 000001, 000000, %10100000, 000000, %01000000
.byte %01001000, 000100, 100000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 010101, %01000000, 000000, 001010, %10010000
.byte 000000, 000000, 000001, %01000000, 000000, 101010, 000000
.byte %10010000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000101, %01000101, %01010010, %10100000, 000000, 000000
.byte 000000, 101000, 000000, %10000001, 000000, 100000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 010001, 010010, 000000
.byte 010100, %10010101, %01000000, 000000, 000000, 000000, 000000
.byte 100001, 001000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, %10000010, %01001010, %10100100, %10100101, 101010
.byte %10110100, 000000, 000000, 000000, 001001, 001000, 101000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 001010
.byte %10100100, %01000010, 010010, %10010101, 000000, 000100, 000000
.byte 100000, 000000, 000010, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000001, 000100, 110010, %01001010
.byte 010101, 010101, %01010010, 100000, 000000, 000001, 000000
.byte 000000, 100100, %01000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 001010, %10101000, 001010, %10000101, 110001, %01001001
.byte %10101010, %10100010, 000000, 000010, %10000000, 000010, 000100
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, %10000100
.byte 000000, 000010, 100000, %01000000, 000001, %01010101, %01000000
.byte 000000, 000000, 000000, 000000, 000000
; red
gfx.red.parameters:
.byte clear ; color 1
.byte red ; color 2
.byte 0 ; x position
.byte 0 ; y position
.byte 102 ; width
.byte 58 ; height
.word gfx.red.data ; address for the graphics
gfx.red.data:
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000010
.byte %11000000, 000000, 000000, 000000, %10010000, %01000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 001101, 000000
.byte 000000, 000000, 111010, 101000, %01000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 010100, 000000, 000000
.byte 000000, %01101110, %10010110, %11000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, %11110000, 000000, 000000, 001111
.byte %11011011, %11101110, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000010, %11000000, 000000, 000000, %11101010, %10011001
.byte %01101100, 000000, 000000, 000000, 000000, 000000, 000000
.byte 001010, 000000, 000000, 000100, %11010111, %11111111, %01000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 100100
.byte 000000, 000000, %11111101, %11011010, %10110111, %11000000, 000000
.byte 000000, 000000, 000000, 001010, 000000, %11010000, 000000
.byte 011010, %01010111, %11010110, %10101111, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 010000, 000000, 001101, %10101010, %11111110
.byte %10111010, %01000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000101, 000000, %01111111, %11111111, %11111111
.byte %11111111, %11111101, %01010101, %01010101, %11110101, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte %01000100, 001011, %11010100, %10101001, %01011010, %11111111, %11110101
.byte %11111101, %01011101, %01011000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 100000, 000100, 000000, %01101111
.byte %11111110, %10111101, %11111111, %11111111, %11011010, %10101010, %10101101
.byte 000100, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000101, %01010000, %01011101, %01000000
.byte 000000, 001010, %11011011, %01011101, %01010111, %10110000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000100
.byte 000000, 000000, 000000, 000110, %10111111, %01010101, %01010010
.byte %10101010, %10101010, %10110000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, %10100000, 000000, 000000, 000000
.byte 000000, 101110, 001010, %11010101, %11010101, %01010101, %01011011
.byte %10010000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 011100
.byte %01001000, %01000101, 000101, 000000, %10001000, 000001, %10100000
.byte 010110, %10110111, %10101010, %11010101, %01010100, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 101000, %11001010
.byte %10011101, %01001010, %01000000, 001010, 000001, %11011010, %10100011
.byte %10101101, 110101, %01000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 001000, 000100, 010100, 010100, 000000
.byte 001001, %01010101, %01010101, %01010111, 100010, %10000000, %01010101
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 001010, %01000000, 001010, %01010000, 100000, %10011011, %11111011
.byte %11011111, 010010, %11010101, 010001, %01000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 010100, 101010, %01010001, 100001
.byte %11100010, %10000001, %11010101, %11010101, %10011011, %01110101, %01010100
.byte %11010000, %11110101, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 001011
.byte %01010101, 101011, 100000, %01011010, 100111, %11100111, 101000
.byte %01111111, %10100100, %01000100, %01101000, 010100, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 001100, %10100001, 000101
.byte %01010101, 011000, 000000, 000000, 000000, 100000, 000000
.byte 000001, %01010001, 000001, %01010010, 111101, %11010101, %01010101
.byte %10110000, 010100, 111110, %10111111, %01111111, %11001000, 000000
.byte 001000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 101010, %10100100, 110011, %10111011, %10011010, %10110000, %01010001
.byte %01010101, 011111, %01011101, %01110001, %11111011, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000010, %10101111, 000000
.byte 010100, 011011, %01001010, %11101010, %01011111, %01111011, %10111110
.byte %10010101, %01010001, %01011000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 101010, %10111011, %01010101, %11110000, 001101
.byte %10111000, %01110011, %11111110, %10110110, %11011111, %11010101, %11101010
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte %11011010, %11111010, %10101010, 000000, 011011, %10111010, %11011111
.byte %11111111, %11010111, %11111001, 010010, %11111100, %01010000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000110, %11100101, %01010101
.byte %10101001, 100000, 001001, %11001111, %10011111, %11111111, %11111111
.byte %01010010, %10110101, %10000010, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000001, %01100001, %10010101, %01001010, %01010000, 000000
.byte 001000, %11110001, %11110000, %11111111, %11010100, 010011, %01010000
.byte 010000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 110101
.byte %01011010, 000101, %01101101, 001000, %10001010, %10101010, 011111
.byte %01001111, %11011111, %11111101, %01110101, %10000001, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000010, %01000000, 001001, %10010100
.byte 000000, 101000, 000101, %01011001, %11110000, %11111110, 000101
.byte %11111111, %11010000, 010000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 100101, %01000000, 000100, %01010010, %10000000, %10100100
.byte %01010000, %01010101, 001111, %11100101, %01110111, %10111101, %11000001
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, %01010001
.byte %01010101, %01011101, %01010111, 100001, 101000, 100000, %10101001
.byte %01111110, %01010111, %11111000, %01000000, %01010000
You also need the ves.h:
;====================================================================
; VES.H
; Fairchild Channel F Header File
; 20041030
; by Kevin Lipe
;====================================================================
VESH_VERSION = 101
; THIS IS A PRELIMINARY RELEASE OF *THE* "STANDARD" VES.H
;
; This file defines memory mapping and BIOS calls for the
; Fairchild Channel F, and also standardized Macros.
;====================================================================
; E Q U A T E S
;====================================================================
;------------------------
; BIOS Calls
;------------------------
clrscrn = $00d0 ;uses r31
delay = $008f
pushk = $0107 ;used to allow more subroutine stack space
popk = $011e
drawchar = $0679
;------------------------
; Colors
;------------------------
red = $40
blue = $80
green = $00
bkg = $C0
clear = $FF
;------------------------
; Schach RAM
;------------------------
ram = $2800 ;location of RAM available in Schach cartridge
;===================================================================
; M A C R O S
;===================================================================
;-------------------------
; CARTRIDGE_START
; Original Author: Sean Riddle
; Inserts the $55 that signals a valid Channel F cartridge and an
; unused byte, which places the VES at the cartridge entry point, $802.
MAC CARTRIDGE_START
.byte $55, $00 ; valid cart indicator, unused byte
ENDM
;-------------------------
; CARTRIDGE_INIT
; Original Author: Sean Riddle
; Initalizes the hardware and clears the complement flag.
MAC CARTRIDGE_INIT
; initalize the hardware
lis 0
outs 1
outs 4
outs 5
outs 0
; clear the complement flag (r32)
lisu 4
lisl 0
lr S, A
ENDM
;-------------------------
; PROMPTS_NO_T
; Original Author: Sean Riddle
; This code functions the same as the "prompts" section of the BIOS,
; but this code doesn't have a "T?" prompt, so it's useful in games that
; don't have time limits or settings.
MAC PROMPTS_NOT
prompts SUBROUTINE
LR K,P ;
PI pushk ;
.prompts2: LI $85 ; red 5 (S)
LR $0,A ;
PI prompt ;
LR A,$4 ;
CI $08 ; is it button 4, Start?
BF $4,.notbut4 ; no, check others
.notbut2:
PI popk ; yes, return
PK ;
.notbut4: CI $02 ; is it button 2, Mode?
BF $4,.notbut2 ;
LI $8e ; red M
LR $0,A ;
PI prompt ;
LISU 3 ;
LISL 6 ;
LR A,(IS) ;
as 4 ;add the mode to the game #
LR (IS),A ;
BF $0,.prompts2 ;
ENDM
;-------------------------
; SETISAR
; Original Author: Blackbird
; Sets the ISAR to a register number, using lisu and lisl
MAC SETISAR
lisu [[{1}] >> 3]
lisl [[{1}] & %111]
ENDM
Edited by e5frog, Sat Aug 11, 2007 5:19 PM.