diff --git a/lib/tms_screen1.h b/lib/screen1.h similarity index 98% rename from lib/tms_screen1.h rename to lib/screen1.h index 1d2348c..34094ea 100644 --- a/lib/tms_screen1.h +++ b/lib/screen1.h @@ -51,6 +51,9 @@ void screen1_prepare() { // fill name table with spaces (32) screen1_cls(); + // clear all the sprites + tms_clear_sprites(); + // fill pattern table with 0 tms_set_vram_write_addr(TMS_PATTERN_TABLE); for(word i=256*8;i!=0;i--) { diff --git a/lib/tms_screen2.h b/lib/screen2.h similarity index 87% rename from lib/tms_screen2.h rename to lib/screen2.h index c48fc08..aa2a083 100644 --- a/lib/tms_screen2.h +++ b/lib/screen2.h @@ -4,20 +4,8 @@ const word SCREEN2_SIZE = (32*24); // prepare the screen 2 to be used as a bitmap void screen2_init_bitmap(byte color) { - // erase the first sprite pattern - tms_set_vram_write_addr(TMS_SPRITE_PATTERNS); // start writing in the sprite patterns - for(byte i=0;i<8;i++) { - TMS_WRITE_DATA_PORT(0); NOP; - } - - // set all sprite coordinates to 0 - tms_set_vram_write_addr(TMS_SPRITE_ATTRS); // start writing in the sprite attribute - for(byte i=0;i<32;i++) { - TMS_WRITE_DATA_PORT(0); NOP; // y coordinate - TMS_WRITE_DATA_PORT(0); NOP; // x coordinate - TMS_WRITE_DATA_PORT(0); NOP; // name - TMS_WRITE_DATA_PORT(i); NOP; // color - } + // erases all the sprites + tms_clear_sprites(); // fill pattern table with 0 (clear screen) tms_set_vram_write_addr(TMS_PATTERN_TABLE); diff --git a/lib/sprites.h b/lib/sprites.h new file mode 100644 index 0000000..4078b1e --- /dev/null +++ b/lib/sprites.h @@ -0,0 +1,17 @@ +// clears all the sprites +void tms_clear_sprites() { + // fills first sprite pattern with 0 + tms_set_vram_write_addr(TMS_SPRITE_PATTERNS); + for(byte i=0;i<8;i++) { + TMS_WRITE_DATA_PORT(0); + } + + // set sprite coordinates to (0,0) and set pattern name 0 + tms_set_vram_write_addr(TMS_SPRITE_ATTRS); + for(byte i=0;i<32;i++) { + TMS_WRITE_DATA_PORT((6+i)*8); NOP; NOP; NOP; NOP; // y coordinate + TMS_WRITE_DATA_PORT((6+i)*8); NOP; NOP; NOP; NOP; // x coordinate + TMS_WRITE_DATA_PORT(0); NOP; NOP; NOP; NOP; // name + TMS_WRITE_DATA_PORT(i); NOP; NOP; NOP; NOP; // color + } +} diff --git a/lib/tms9918.h b/lib/tms9918.h index ad54ad5..e4531bb 100644 --- a/lib/tms9918.h +++ b/lib/tms9918.h @@ -159,6 +159,7 @@ void tms_set_external_video(byte val) { #include "apple1.h" #include "font8x8.h" +#include "sprites.h" #include "tms_screen1.h" #include "tms_screen2.h" #include "interrupt.h"