2024-08-29 17:51:49 -06:00
# include <genesis.h>
2024-08-29 18:49:38 -06:00
# define SPEED 2
2024-08-29 18:17:52 -06:00
Line l ;
2024-08-29 18:49:38 -06:00
const u8 [ ] [ ] = [ [ 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ] ,
[ 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 ] ,
[ 1 , 1 , 1 , 1 , 0 , 0 , 1 , 1 , 1 , 1 ] ,
[ 1 , 0 , 0 , 1 , 0 , 0 , 1 , 0 , 0 , 1 ] ,
[ 1 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 1 ] ,
[ 1 , 0 , 0 , 1 , 0 , 0 , 1 , 1 , 0 , 1 ] ,
[ 1 , 1 , 1 , 1 , 0 , 0 , 1 , 0 , 0 , 1 ] ,
[ 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 ] ,
[ 1 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 1 ] ,
[ 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ] ] ;
2024-08-29 18:17:52 -06:00
void render ( ) {
//Clear the bitmap
BMP_clear ( ) ;
//Draw the line defined above (in the background, hidden)
BMP_drawLine ( & l ) ;
//Flip the data to the screen - i.e. actually draw the complete image on screen
BMP_flip ( 1 ) ;
//Increment the destination y coordinate
l . pt2 . y = l . pt2 . y + 2 ;
//Reset the destination y coordinate if it hits 160
if ( l . pt2 . y = = 160 )
{
l . pt2 . y = 0 ;
}
2024-08-29 18:49:38 -06:00
SYS_doVBlankProcess ( ) ;
2024-08-29 18:17:52 -06:00
}
void update ( ) {
2024-08-29 18:49:38 -06:00
u16 joy = JOY_readJoypad ( JOY_1 ) ;
if ( joy & BUTTON_LEFT ) {
l . pt1 . x - = SPEED ;
}
if ( joy & BUTTON_RIGHT ) {
l . pt1 . x + = SPEED ;
}
if ( joy & BUTTON_UP ) {
l . pt1 . y - = SPEED ;
}
if ( joy & BUTTON_DOWN ) {
l . pt1 . y + = SPEED ;
}
}
2024-08-29 18:17:52 -06:00
2024-08-29 18:49:38 -06:00
void initVDP ( ) {
SYS_disableInts ( ) ;
VDP_setPlaneSize ( 64 , 32 , TRUE ) ;
SYS_enableInts ( ) ;
2024-08-29 18:17:52 -06:00
}
2024-08-29 17:51:49 -06:00
int main ( )
{
2024-08-29 18:49:38 -06:00
initVDP ( ) ;
2024-08-29 17:51:49 -06:00
//Initialise the bitmap engine
2024-08-29 18:49:38 -06:00
BMP_init ( FALSE , BG_A , PAL0 , FALSE ) ;
2024-08-29 17:51:49 -06:00
//Set the colour of the line. We are using pallete 0 for the bitmap, so we have 0->15. 15 is used for white text, so we set an unused pallet colour, 14 to blue - RGB 0000FF.
u16 colour_blue = RGB24_TO_VDPCOLOR ( 0x0000ff ) ;
2024-08-29 18:13:30 -06:00
u16 colour_red = RGB24_TO_VDPCOLOR ( 0xff0000 ) ;
2024-08-29 18:08:02 -06:00
PAL_setColor ( 14 , colour_blue ) ;
2024-08-29 18:13:30 -06:00
PAL_setColor ( 13 , colour_red ) ;
VDP_setBackgroundColor ( 13 ) ;
2024-08-29 17:51:49 -06:00
//A line needs a source coordinate x,y and a destination coordinate x,y along with a pallete colour.
l . pt1 . x = 0 ;
l . pt1 . y = 0 ;
l . pt2 . x = 255 ;
l . pt2 . y = 0 ;
2024-08-29 18:08:02 -06:00
l . col = 14 ;
2024-08-29 17:51:49 -06:00
l . col | = l . col < < 4 ; // if we do not left shift the colour, we get gaps in the line
while ( TRUE )
{
2024-08-29 18:17:52 -06:00
render ( ) ;
2024-08-29 18:49:38 -06:00
update ( ) ;
2024-08-29 17:51:49 -06:00
}
return 0 ;
}