Clean up setup, draw player and stars (and tick stars), tick handling, buffer handling and line drawing.

This commit is contained in:
stevenhowes
2021-03-19 23:04:23 +00:00
parent dac8e5fd32
commit 4fd5fa0123
4 changed files with 166 additions and 17 deletions
+39 -1
View File
@@ -7,7 +7,7 @@ extern _kernel_swi_regs inreg;
extern _kernel_swi_regs outreg;
extern unsigned char *buffer;
unsigned char screen = 1;
// Loads sprite file into buffer
void load_sprites(char* filename)
@@ -66,6 +66,17 @@ void display_mode(int mode)
_kernel_swi(OS_ScreenMode,&inreg,&outreg);
}
void draw_line(int x1,int y1,int x2,int y2)
{
inreg.r[0] = 4;
inreg.r[1] = x1;
inreg.r[2] = y1;
_kernel_swi(OS_Plot,&inreg,&outreg);
inreg.r[0] = 5;
inreg.r[1] = x2;
inreg.r[2] = y2;
_kernel_swi(OS_Plot,&inreg,&outreg);
}
void draw_sprite(char* spritename,int x, int y)
{
// SpriteOp 34 to put sprite at a location
@@ -77,3 +88,30 @@ void draw_sprite(char* spritename,int x, int y)
inreg.r[5] = 8; // GCOL dest=source and sprite mask
_kernel_swi(OS_SpriteOp,&inreg,&outreg);
}
void screen_flipbuffer()
{
inreg.r[0] = 19;
_kernel_swi(OS_Byte,&inreg,&outreg);
/* inreg.r[0] = 114;
inreg.r[1] = 1;
_kernel_swi(OS_Byte,&inreg,&outreg);
inreg.r[0] = 113;
inreg.r[1] = screen;
_kernel_swi(OS_Byte,&inreg,&outreg);
screen++;
if(screen > 3)
screen = 1;
inreg.r[0] = 112;
inreg.r[1] = screen;
_kernel_swi(OS_Byte,&inreg,&outreg);*/
}
void screen_clear()
{
inreg.r[0] = 12;
_kernel_swi(OS_WriteC,&inreg,&outreg);
}