diff --git a/tia.cpp b/tia.cpp index b7f2d29..123b32e 100644 --- a/tia.cpp +++ b/tia.cpp @@ -57,6 +57,8 @@ namespace tia uint8_t player0_bits = 0; int8_t player0_hmotion = 0; bool player0_vert_delay = false; + uint8_t player0_pixel_counter = 0; + uint8_t player0_pixel_position = 0; uint8_t player1_size = 1; uint8_t player1_num_copies = 1; @@ -67,18 +69,30 @@ namespace tia uint8_t player1_bits = 0; int8_t player1_hmotion = 0; bool player1_vert_delay = false; + uint8_t player1_pixel_counter = 0; + uint8_t player1_pixel_position = 0; + bool missile0_enabled = false; uint8_t missile0_size = 1; uint8_t missile0_pos = 0; int8_t missile0_hmotion = 0; bool missile0_reset = false; + uint8_t missile0_pixel_counter = 0; bool missile1_enabled = false; uint8_t missile1_size = 1; uint8_t missile1_pos = 0; int8_t missile1_hmotion = 0; bool missile1_reset = false; + uint8_t missile1_pixel_counter = 0; + + bool ball_enabled = false; + uint8_t ball_size = 1; + uint8_t ball_pos = 0; + int8_t ball_hmotion = 0; + bool ball_vert_delay = false; + uint8_t ball_pixel_counter = 0; uint32_t playfield_color = 0x00000000; bool playfield_reflected = false; @@ -92,12 +106,6 @@ namespace tia {16,17,18,19, 15,14,13,12,11,10,9,8, 0,1,2,3,4,5,6,7, 7,6,5,4,3,2,1,0, 8,9,10,11,12,13,14,15, 19,18,17,16} }; - bool ball_enabled = false; - uint8_t ball_size = 1; - uint8_t ball_pos = 0; - int8_t ball_hmotion = 0; - bool ball_vert_delay = false; - uint32_t background_color = 0x00000000; uint32_t current_frame_cycles = 0; @@ -138,6 +146,24 @@ namespace tia if ( (!vsync_set) && (!vblank_set) && (color_clock >= 68) && (current_scanline >= 37) && (current_scanline < 229) && (!hmove || color_clock >= 92) ) { const uint8_t pixel_clock = color_clock - 68; + if (player0_pos == pixel_clock) { + player0_pixel_counter = player0_size; + player0_pixel_position = 7; + } + if (player1_pos == pixel_clock) { + player1_pixel_counter = player1_size; + player1_pixel_position = 7; + } + if ( (missile0_enabled) && (missile0_pos == pixel_clock) ) { + missile0_pixel_counter = missile0_size; + } + if ( (missile1_enabled) && (missile1_pos == pixel_clock) ) { + missile1_pixel_counter = missile1_size; + } + if ( (ball_enabled) && (ball_pos == pixel_clock) ) { + ball_pixel_counter = ball_size; + } + } }