From 614c729459807c804c03ee9c1d822d007ef42490 Mon Sep 17 00:00:00 2001 From: "Raimon @ quifisraimon" Date: Tue, 15 Sep 2026 13:38:30 +0200 Subject: [PATCH] - [NEW] [TIA] CTRLPF, REFP0, REFP1 - [WIP] [TIA] PF0, PF1, PF2 --- tia.cpp | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/tia.cpp b/tia.cpp index beddaf4..541607a 100644 --- a/tia.cpp +++ b/tia.cpp @@ -52,14 +52,23 @@ namespace tia uint8_t player0_num_copies = 1; uint8_t player0_copies_distance = 0; uint32_t player0_color = 0x00000000; + bool player0_reflect = false; uint8_t missile1_size = 1; uint8_t player1_size = 1; uint8_t player1_num_copies = 1; uint8_t player1_copies_distance = 0; uint32_t player1_color = 0x00000000; + bool player1_reflect = false; uint32_t playfield_color = 0x00000000; + bool playfield_reflected = false; + bool playfield_score = false; + bool playfield_priority = false; + uint32_t playfield_bits = 0x00000000; + + uint8_t ball_size = 1; + uint32_t background_color = 0x00000000; uint32_t current_frame_cycles = 0; @@ -187,6 +196,25 @@ namespace tia playfield_color = NTSC_PALETTE[(value >> 1) & 0x7F]; break; case 0x09: // COLUBK background_color = NTSC_PALETTE[(value >> 1) & 0x7F]; break; + + case 0x0A: // CTRLPF + playfield_reflected = value & 0x01; + playfield_score = value & 0x02; + playfield_priority = value & 0x04; + ball_size = 1 << ((value >> 4) & 0x03); + break; + + case 0x0B: // REFP0 + player0_reflect = value & 0x08; break; + case 0x0C: // REFP1 + player1_reflect = value & 0x08; break; + + case 0x0D: // PF0 + playfield_bits = (playfield_bits & 0x0000ffff) | (uint32_t(value)<<16); break; + case 0x0E: // PF1 + playfield_bits = (playfield_bits & 0x000f00ff) | (uint32_t(value)<<8); break; + case 0x0F: // PF2 + playfield_bits = (playfield_bits & 0x000fff00) | (uint32_t(value)); break; } }