balloon demo with c64 screen

This commit is contained in:
nino-porcino 2021-12-23 18:55:56 +01:00
parent 9572291866
commit 0b2ff3eb8a
6 changed files with 941 additions and 49 deletions

View File

@ -2,6 +2,7 @@
#include "demo_screen1.h"
#include "demo_screen2.h"
#include "demo_balloon.h"
#include "demo_amiga_hand.h"
#include "demo_interrupt.h"
#include "demo_extvid.h"
@ -14,6 +15,7 @@ void help() {
"=============\r"
"1 SCREEN1\r"
"2 SCREEN2\r"
"3 BALLOON\r"
"A AMIGA HAND\r"
"I INTERRUPT\r"
"E FLIP EXT VIDEO\r"
@ -34,6 +36,7 @@ void main() {
for(;;) {
if(key == '1') demo_screen1();
else if(key == '2') demo_screen2();
else if(key == '3') demo_balloon();
else if(key == 'A') demo_amiga_hand();
else if(key == 'I') demo_interrupt();
else if(key == 'E') flip_external_input();

62
demos/demo/demo_balloon.h Normal file
View File

@ -0,0 +1,62 @@
#include <font8x8.h>
#include "cbm_balloon.h"
void move_balloon(byte x, byte y, byte color) {
tms_sprite spr0,spr1;
spr0.x = x;
spr0.y = y;
spr0.name = 0;
spr0.color = color;
spr1.x = spr0.x;
spr1.y = spr0.y + 16*1;
spr1.name = spr0.name + 4;
spr1.color = spr0.color;
tms_set_sprite(0, &spr0);
tms_set_sprite(1, &spr1);
}
void demo_balloon() {
tms_init_regs(SCREEN2_TABLE);
tms_set_color(COLOR_LIGHT_BLUE);
byte text_color = FG_BG(COLOR_GREY,COLOR_DARK_BLUE);
screen2_init_bitmap(text_color);
// 12345678901234567890123456789012
screen2_puts("*** COMMODORE-APPLE BASIC V2 ***", 0, 0, text_color);
screen2_puts("38911 BASIC BYTES FREE" , 0, 2, text_color);
screen2_puts("READY." , 0, 4, text_color);
screen2_puts(" " , 0, 5, FG_BG(COLOR_DARK_BLUE,COLOR_GREY));
// ballon demo
// define sprites using bitmap fonts
tms_copy_to_vram(cbm_balloon, 4*8*2, TMS_SPRITE_PATTERNS);
tms_set_sprite_double_size(1); // set 16x16 sprites
tms_set_sprite_magnification(0); // set double pixel sprites
int x = 200;
int y = 80;
int dx = 1;
int dy = 1;
int delay = 0;
byte sprcolor = COLOR_LIGHT_YELLOW;
for(;;) {
for(delay=0; delay<800; delay++) {
delay = delay+1;
delay = delay-1;
}
if(apple1_readkey()==0x0d) break;
if(x>=228 || x<=0) { dx = -dx; sprcolor++; }
if(y>=148 || y<=0) { dy = -dy; sprcolor++; }
x += dx;
y += dy;
move_balloon((byte)x,(byte)y, COLOR_WHITE);
}
}

View File

@ -1,21 +1,5 @@
#include <font8x8.h>
#include "cbm_balloon.h"
void move_balloon(byte x, byte y, byte color) {
tms_sprite spr0,spr1;
spr0.x = x;
spr0.y = y;
spr0.name = 0;
spr0.color = color;
spr1.x = spr0.x;
spr1.y = spr0.y + 32;
spr1.name = spr0.name + 4;
spr1.color = spr0.color;
tms_set_sprite(0, &spr0);
tms_set_sprite(1, &spr1);
}
void demo_screen2() {
tms_init_regs(SCREEN2_TABLE);
@ -46,7 +30,6 @@ void demo_screen2() {
screen2_plot_mode = PLOT_MODE_SET;
/*
// define sprites using bitmap fonts
tms_copy_to_vram(&FONT[64*8], 32*8, TMS_SPRITE_PATTERNS);
@ -64,36 +47,5 @@ void demo_screen2() {
spr.color = t+1;
tms_set_sprite(t, &spr);
}
*/
// ballon demo
// define sprites using bitmap fonts
tms_copy_to_vram(cbm_balloon, 4*8*2, TMS_SPRITE_PATTERNS);
tms_set_sprite_double_size(1); // set 16x16 sprites
tms_set_sprite_magnification(1); // set double pixel sprites
int x = 200;
int y = 80;
int dx = 1;
int dy = 1;
int delay = 0;
byte sprcolor = COLOR_DARK_BLUE;
for(;;) {
for(delay=0; delay<800; delay++) {
delay = delay+1;
delay = delay-1;
}
if(apple1_readkey()==0x0d) break;
if(x>=228 || x<=0) { dx = -dx; sprcolor++; }
if(y>=148 || y<=0) { dy = -dy; sprcolor++; }
x += dx;
y += dy;
move_balloon((byte)x,(byte)y, sprcolor);
}
}

0
lib/c64.ascii.txt Normal file
View File

874
lib/c64font.h Normal file
View File

@ -0,0 +1,874 @@
#ifndef FONT8X8_H
#define FONT8X8_H
// C64 FONTS translated into ASCII
#pragma data_seg(Code)
byte FONT[768] = {
// char $120
0b00000000
, 0b00000000
, 0b00000000
, 0b00000000
, 0b00000000
, 0b00000000
, 0b00000000
, 0b00000000
// char $121
, 0b00011000
, 0b00011000
, 0b00011000
, 0b00011000
, 0b00000000
, 0b00000000
, 0b00011000
, 0b00000000
// char $122
, 0b01100110
, 0b01100110
, 0b01100110
, 0b00000000
, 0b00000000
, 0b00000000
, 0b00000000
, 0b00000000
// char $123
, 0b01100110
, 0b01100110
, 0b11111111
, 0b01100110
, 0b11111111
, 0b01100110
, 0b01100110
, 0b00000000
// char $124
, 0b00011000
, 0b00111110
, 0b01100000
, 0b00111100
, 0b00000110
, 0b01111100
, 0b00011000
, 0b00000000
// char $125
, 0b01100010
, 0b01100110
, 0b00001100
, 0b00011000
, 0b00110000
, 0b01100110
, 0b01000110
, 0b00000000
// char $126
, 0b00111100
, 0b01100110
, 0b00111100
, 0b00111000
, 0b01100111
, 0b01100110
, 0b00111111
, 0b00000000
// char $127
, 0b00000110
, 0b00001100
, 0b00011000
, 0b00000000
, 0b00000000
, 0b00000000
, 0b00000000
, 0b00000000
// char $128
, 0b00001100
, 0b00011000
, 0b00110000
, 0b00110000
, 0b00110000
, 0b00011000
, 0b00001100
, 0b00000000
// char $129
, 0b00110000
, 0b00011000
, 0b00001100
, 0b00001100
, 0b00001100
, 0b00011000
, 0b00110000
, 0b00000000
// char $12a
, 0b00000000
, 0b01100110
, 0b00111100
, 0b11111111
, 0b00111100
, 0b01100110
, 0b00000000
, 0b00000000
// char $12b
, 0b00000000
, 0b00011000
, 0b00011000
, 0b01111110
, 0b00011000
, 0b00011000
, 0b00000000
, 0b00000000
// char $12c
, 0b00000000
, 0b00000000
, 0b00000000
, 0b00000000
, 0b00000000
, 0b00011000
, 0b00011000
, 0b00110000
// char $12d
, 0b00000000
, 0b00000000
, 0b00000000
, 0b01111110
, 0b00000000
, 0b00000000
, 0b00000000
, 0b00000000
// char $12e
, 0b00000000
, 0b00000000
, 0b00000000
, 0b00000000
, 0b00000000
, 0b00011000
, 0b00011000
, 0b00000000
// char $12f
, 0b00000000
, 0b00000011
, 0b00000110
, 0b00001100
, 0b00011000
, 0b00110000
, 0b01100000
, 0b00000000
// char $130
, 0b00111100
, 0b01100110
, 0b01101110
, 0b01110110
, 0b01100110
, 0b01100110
, 0b00111100
, 0b00000000
// char $131
, 0b00011000
, 0b00011000
, 0b00111000
, 0b00011000
, 0b00011000
, 0b00011000
, 0b01111110
, 0b00000000
// char $132
, 0b00111100
, 0b01100110
, 0b00000110
, 0b00001100
, 0b00110000
, 0b01100000
, 0b01111110
, 0b00000000
// char $133
, 0b00111100
, 0b01100110
, 0b00000110
, 0b00011100
, 0b00000110
, 0b01100110
, 0b00111100
, 0b00000000
// char $134
, 0b00000110
, 0b00001110
, 0b00011110
, 0b01100110
, 0b01111111
, 0b00000110
, 0b00000110
, 0b00000000
// char $135
, 0b01111110
, 0b01100000
, 0b01111100
, 0b00000110
, 0b00000110
, 0b01100110
, 0b00111100
, 0b00000000
// char $136
, 0b00111100
, 0b01100110
, 0b01100000
, 0b01111100
, 0b01100110
, 0b01100110
, 0b00111100
, 0b00000000
// char $137
, 0b01111110
, 0b01100110
, 0b00001100
, 0b00011000
, 0b00011000
, 0b00011000
, 0b00011000
, 0b00000000
// char $138
, 0b00111100
, 0b01100110
, 0b01100110
, 0b00111100
, 0b01100110
, 0b01100110
, 0b00111100
, 0b00000000
// char $139
, 0b00111100
, 0b01100110
, 0b01100110
, 0b00111110
, 0b00000110
, 0b01100110
, 0b00111100
, 0b00000000
// char $13a
, 0b00000000
, 0b00000000
, 0b00011000
, 0b00000000
, 0b00000000
, 0b00011000
, 0b00000000
, 0b00000000
// char $13b
, 0b00000000
, 0b00000000
, 0b00011000
, 0b00000000
, 0b00000000
, 0b00011000
, 0b00011000
, 0b00110000
// char $13c
, 0b00001110
, 0b00011000
, 0b00110000
, 0b01100000
, 0b00110000
, 0b00011000
, 0b00001110
, 0b00000000
// char $13d
, 0b00000000
, 0b00000000
, 0b01111110
, 0b00000000
, 0b01111110
, 0b00000000
, 0b00000000
, 0b00000000
// char $13e
, 0b01110000
, 0b00011000
, 0b00001100
, 0b00000110
, 0b00001100
, 0b00011000
, 0b01110000
, 0b00000000
// char $13f
, 0b00111100
, 0b01100110
, 0b00000110
, 0b00001100
, 0b00011000
, 0b00000000
, 0b00011000
, 0b00000000
// char $100
, 0b00111100
, 0b01100110
, 0b01101110
, 0b01101110
, 0b01100000
, 0b01100010
, 0b00111100
, 0b00000000
// char $141
, 0b00011000
, 0b00111100
, 0b01100110
, 0b01111110
, 0b01100110
, 0b01100110
, 0b01100110
, 0b00000000
// char $142
, 0b01111100
, 0b01100110
, 0b01100110
, 0b01111100
, 0b01100110
, 0b01100110
, 0b01111100
, 0b00000000
// char $143
, 0b00111100
, 0b01100110
, 0b01100000
, 0b01100000
, 0b01100000
, 0b01100110
, 0b00111100
, 0b00000000
// char $144
, 0b01111000
, 0b01101100
, 0b01100110
, 0b01100110
, 0b01100110
, 0b01101100
, 0b01111000
, 0b00000000
// char $145
, 0b01111110
, 0b01100000
, 0b01100000
, 0b01111000
, 0b01100000
, 0b01100000
, 0b01111110
, 0b00000000
// char $146
, 0b01111110
, 0b01100000
, 0b01100000
, 0b01111000
, 0b01100000
, 0b01100000
, 0b01100000
, 0b00000000
// char $147
, 0b00111100
, 0b01100110
, 0b01100000
, 0b01101110
, 0b01100110
, 0b01100110
, 0b00111100
, 0b00000000
// char $148
, 0b01100110
, 0b01100110
, 0b01100110
, 0b01111110
, 0b01100110
, 0b01100110
, 0b01100110
, 0b00000000
// char $149
, 0b00111100
, 0b00011000
, 0b00011000
, 0b00011000
, 0b00011000
, 0b00011000
, 0b00111100
, 0b00000000
// char $14a
, 0b00011110
, 0b00001100
, 0b00001100
, 0b00001100
, 0b00001100
, 0b01101100
, 0b00111000
, 0b00000000
// char $14b
, 0b01100110
, 0b01101100
, 0b01111000
, 0b01110000
, 0b01111000
, 0b01101100
, 0b01100110
, 0b00000000
// char $14c
, 0b01100000
, 0b01100000
, 0b01100000
, 0b01100000
, 0b01100000
, 0b01100000
, 0b01111110
, 0b00000000
// char $14d
, 0b01100011
, 0b01110111
, 0b01111111
, 0b01101011
, 0b01100011
, 0b01100011
, 0b01100011
, 0b00000000
// char $14e
, 0b01100110
, 0b01110110
, 0b01111110
, 0b01111110
, 0b01101110
, 0b01100110
, 0b01100110
, 0b00000000
// char $14f
, 0b00111100
, 0b01100110
, 0b01100110
, 0b01100110
, 0b01100110
, 0b01100110
, 0b00111100
, 0b00000000
// char $150
, 0b01111100
, 0b01100110
, 0b01100110
, 0b01111100
, 0b01100000
, 0b01100000
, 0b01100000
, 0b00000000
// char $151
, 0b00111100
, 0b01100110
, 0b01100110
, 0b01100110
, 0b01100110
, 0b00111100
, 0b00001110
, 0b00000000
// char $152
, 0b01111100
, 0b01100110
, 0b01100110
, 0b01111100
, 0b01111000
, 0b01101100
, 0b01100110
, 0b00000000
// char $153
, 0b00111100
, 0b01100110
, 0b01100000
, 0b00111100
, 0b00000110
, 0b01100110
, 0b00111100
, 0b00000000
// char $154
, 0b01111110
, 0b00011000
, 0b00011000
, 0b00011000
, 0b00011000
, 0b00011000
, 0b00011000
, 0b00000000
// char $155
, 0b01100110
, 0b01100110
, 0b01100110
, 0b01100110
, 0b01100110
, 0b01100110
, 0b00111100
, 0b00000000
// char $156
, 0b01100110
, 0b01100110
, 0b01100110
, 0b01100110
, 0b01100110
, 0b00111100
, 0b00011000
, 0b00000000
// char $157
, 0b01100011
, 0b01100011
, 0b01100011
, 0b01101011
, 0b01111111
, 0b01110111
, 0b01100011
, 0b00000000
// char $158
, 0b01100110
, 0b01100110
, 0b00111100
, 0b00011000
, 0b00111100
, 0b01100110
, 0b01100110
, 0b00000000
// char $159
, 0b01100110
, 0b01100110
, 0b01100110
, 0b00111100
, 0b00011000
, 0b00011000
, 0b00011000
, 0b00000000
// char $15a
, 0b01111110
, 0b00000110
, 0b00001100
, 0b00011000
, 0b00110000
, 0b01100000
, 0b01111110
, 0b00000000
// char $11b
, 0b00111100
, 0b00110000
, 0b00110000
, 0b00110000
, 0b00110000
, 0b00110000
, 0b00111100
, 0b00000000
// char $11c
, 0b00001100
, 0b00010010
, 0b00110000
, 0b01111100
, 0b00110000
, 0b01100010
, 0b11111100
, 0b00000000
// char $11d
, 0b00111100
, 0b00001100
, 0b00001100
, 0b00001100
, 0b00001100
, 0b00001100
, 0b00111100
, 0b00000000
// char $11e
, 0b00000000
, 0b00011000
, 0b00111100
, 0b01111110
, 0b00011000
, 0b00011000
, 0b00011000
, 0b00011000
// char $11f
, 0b00000000
, 0b00010000
, 0b00110000
, 0b01111111
, 0b01111111
, 0b00110000
, 0b00010000
, 0b00000000
// char $140
, 0b00000000
, 0b00000000
, 0b00000000
, 0b11111111
, 0b11111111
, 0b00000000
, 0b00000000
, 0b00000000
// char $101
, 0b00000000
, 0b00000000
, 0b00111100
, 0b00000110
, 0b00111110
, 0b01100110
, 0b00111110
, 0b00000000
// char $102
, 0b00000000
, 0b01100000
, 0b01100000
, 0b01111100
, 0b01100110
, 0b01100110
, 0b01111100
, 0b00000000
// char $103
, 0b00000000
, 0b00000000
, 0b00111100
, 0b01100000
, 0b01100000
, 0b01100000
, 0b00111100
, 0b00000000
// char $104
, 0b00000000
, 0b00000110
, 0b00000110
, 0b00111110
, 0b01100110
, 0b01100110
, 0b00111110
, 0b00000000
// char $105
, 0b00000000
, 0b00000000
, 0b00111100
, 0b01100110
, 0b01111110
, 0b01100000
, 0b00111100
, 0b00000000
// char $106
, 0b00000000
, 0b00001110
, 0b00011000
, 0b00111110
, 0b00011000
, 0b00011000
, 0b00011000
, 0b00000000
// char $107
, 0b00000000
, 0b00000000
, 0b00111110
, 0b01100110
, 0b01100110
, 0b00111110
, 0b00000110
, 0b01111100
// char $108
, 0b00000000
, 0b01100000
, 0b01100000
, 0b01111100
, 0b01100110
, 0b01100110
, 0b01100110
, 0b00000000
// char $109
, 0b00000000
, 0b00011000
, 0b00000000
, 0b00111000
, 0b00011000
, 0b00011000
, 0b00111100
, 0b00000000
// char $10a
, 0b00000000
, 0b00000110
, 0b00000000
, 0b00000110
, 0b00000110
, 0b00000110
, 0b00000110
, 0b00111100
// char $10b
, 0b00000000
, 0b01100000
, 0b01100000
, 0b01101100
, 0b01111000
, 0b01101100
, 0b01100110
, 0b00000000
// char $10c
, 0b00000000
, 0b00111000
, 0b00011000
, 0b00011000
, 0b00011000
, 0b00011000
, 0b00111100
, 0b00000000
// char $10d
, 0b00000000
, 0b00000000
, 0b01100110
, 0b01111111
, 0b01111111
, 0b01101011
, 0b01100011
, 0b00000000
// char $10e
, 0b00000000
, 0b00000000
, 0b01111100
, 0b01100110
, 0b01100110
, 0b01100110
, 0b01100110
, 0b00000000
// char $10f
, 0b00000000
, 0b00000000
, 0b00111100
, 0b01100110
, 0b01100110
, 0b01100110
, 0b00111100
, 0b00000000
// char $110
, 0b00000000
, 0b00000000
, 0b01111100
, 0b01100110
, 0b01100110
, 0b01111100
, 0b01100000
, 0b01100000
// char $111
, 0b00000000
, 0b00000000
, 0b00111110
, 0b01100110
, 0b01100110
, 0b00111110
, 0b00000110
, 0b00000110
// char $112
, 0b00000000
, 0b00000000
, 0b01111100
, 0b01100110
, 0b01100000
, 0b01100000
, 0b01100000
, 0b00000000
// char $113
, 0b00000000
, 0b00000000
, 0b00111110
, 0b01100000
, 0b00111100
, 0b00000110
, 0b01111100
, 0b00000000
// char $114
, 0b00000000
, 0b00011000
, 0b01111110
, 0b00011000
, 0b00011000
, 0b00011000
, 0b00001110
, 0b00000000
// char $115
, 0b00000000
, 0b00000000
, 0b01100110
, 0b01100110
, 0b01100110
, 0b01100110
, 0b00111110
, 0b00000000
// char $116
, 0b00000000
, 0b00000000
, 0b01100110
, 0b01100110
, 0b01100110
, 0b00111100
, 0b00011000
, 0b00000000
// char $117
, 0b00000000
, 0b00000000
, 0b01100011
, 0b01101011
, 0b01111111
, 0b00111110
, 0b00110110
, 0b00000000
// char $118
, 0b00000000
, 0b00000000
, 0b01100110
, 0b00111100
, 0b00011000
, 0b00111100
, 0b01100110
, 0b00000000
// char $119
, 0b00000000
, 0b00000000
, 0b01100110
, 0b01100110
, 0b01100110
, 0b00111110
, 0b00001100
, 0b01111000
// char $11a
, 0b00000000
, 0b00000000
, 0b01111110
, 0b00001100
, 0b00011000
, 0b00110000
, 0b01111110
, 0b00000000
// char $15b
, 0b00011000
, 0b00011000
, 0b00011000
, 0b11111111
, 0b11111111
, 0b00011000
, 0b00011000
, 0b00011000
// char $15c
, 0b11000000
, 0b11000000
, 0b00110000
, 0b00110000
, 0b11000000
, 0b11000000
, 0b00110000
, 0b00110000
// char $15d
, 0b00011000
, 0b00011000
, 0b00011000
, 0b00011000
, 0b00011000
, 0b00011000
, 0b00011000
, 0b00011000
// char $15e
, 0b00110011
, 0b00110011
, 0b11001100
, 0b11001100
, 0b00110011
, 0b00110011
, 0b11001100
, 0b11001100
// char $15f
, 0b00110011
, 0b10011001
, 0b11001100
, 0b01100110
, 0b00110011
, 0b10011001
, 0b11001100
, 0b01100110
};

View File

@ -174,7 +174,8 @@ void tms_copy_to_vram(byte *source, word size, word dest) {
}
#include "apple1.h"
#include "font8x8.h"
//#include "font8x8.h"
#include "c64font.h"
#include "sprites.h"
#include "screen1.h"
#include "screen2.h"