public override void paint(Surface display, bool focused, Point offset) { tia.ClockCatchUp(); tia.ForceScanDraw(); ColorBK.Fill(tia.ChromaBK); ColorPF.Fill(tia.ChromaPF); ColorP0.Fill(tia.ChromaP0); ColorP1.Fill(tia.ChromaP1); PosBLt.Text = Convert.ToString(tia.m_BLPos); PosP0t.Text = Convert.ToString(tia.m_P0Pos); PosM0t.Text = Convert.ToString(tia.m_M0Pos); PosP1t.Text = Convert.ToString(tia.m_P1Pos); PosM1t.Text = Convert.ToString(tia.m_M1Pos); HPost.Text = Convert.ToString(tia.m_hPos); VPost.Text = Convert.ToString(tia.m_vPos); string modes = ""; if (tia.m_RefPF) { modes = "Reflected "; } if ((tia.m_DrawMode & (int)TIA.playfieldModes.PF_SCORE) != 0) { modes += "Score "; } if ((tia.m_DrawMode & (int)TIA.playfieldModes.PF_PRI) != 0) { modes += "Priority"; } PFModes.Text = modes; if (tia.m_EnaBL) { GRBL.Fill(Color.FromArgb(255, 255, 255)); } else { GRBL.Fill(Color.FromArgb(0, 0, 0)); } if (tia.m_EnaM0) { GRM0.Fill(Color.FromArgb(255, 255, 255)); } else { GRM0.Fill(Color.FromArgb(0, 0, 0)); } if (tia.m_EnaM1) { GRM1.Fill(Color.FromArgb(255, 255, 255)); } else { GRM1.Fill(Color.FromArgb(0, 0, 0)); } if (tia.m_EnaBLDel) { GRBLA.Fill(Color.FromArgb(255, 255, 255)); } else { GRBLA.Fill(Color.FromArgb(0, 0, 0)); } if (tia.m_VDelP0) { P0Del.Text = "X"; } else { P0Del.Text = ""; } if (tia.m_VDelP1) { P1Del.Text = "X"; } else { P1Del.Text = ""; } if (tia.m_VDelP0) { BLDel.Text = "X"; } else { BLDel.Text = ""; } moveBL.Text = Convert.ToString(-tia.m_MoveBL); moveP0.Text = Convert.ToString(-tia.m_MoveP0); moveM0.Text = Convert.ToString(-tia.m_MoveM0); moveP1.Text = Convert.ToString(-tia.m_MoveP1); moveM1.Text = Convert.ToString(-tia.m_MoveM1); base.paint(display, focused, offset); Rectangle client = ClientRect; client.X += offset.X; client.Y += offset.Y; foreach (int i in matrixIcons.Keys) { Point p = matrixIcons[i]; if (tia.m_Collisions[i] != 0) { DisplaySettings.checkMatrix.Blit(matrix, p); } else { DisplaySettings.uncheckMatrix.Blit(matrix, p); } } for (int i = 0; i < 160; i++) { Rectangle r = new Rectangle(136 + i * 2, 0, 2, 2); ScanLine.Fill(r, tia.GetColor(true, i)); r.Y += 2; ScanLine.Fill(r, tia.GetColor(false, i)); } GRPF.Fill(Color.Black); GRP0.Fill(Color.Black); GRP1.Fill(Color.Black); GRP0A.Fill(Color.Black); GRP1A.Fill(Color.Black); FillSurface(GRP0, tia.m_P0Grp); FillSurface(GRP1, tia.m_P1Grp); FillSurface(GRP0A, tia.m_P0GrpDel); FillSurface(GRP1A, tia.m_P1GrpDel); Rectangle rect = new Rectangle(0, 0, 16, 16); for (int i = 0; i < 4; i++) { if ((tia.m_PF0Grp & (0x10 << i)) != 0) { GRPF.Fill(rect, Color.White); } rect.X += 16; } for (int i = 0; i < 8; i++) { if ((tia.m_PF1Grp & (0x80 >> i)) != 0) { GRPF.Fill(rect, Color.White); } rect.X += 16; } for (int i = 0; i < 8; i++) { if ((tia.m_PF2Grp & (0x01 << i)) != 0) { GRPF.Fill(rect, Color.White); } rect.X += 16; } DisplaySettings.BLPos.Blit(display, new Point(8 + (68 + tia.m_BLPos) * 2 + client.X, client.Y)); DisplaySettings.M0Pos.Blit(display, new Point(8 + (68 + tia.m_M0Pos) * 2 + client.X, client.Y)); DisplaySettings.M1Pos.Blit(display, new Point(8 + (68 + tia.m_M1Pos) * 2 + client.X, client.Y)); DisplaySettings.P0Pos.Blit(display, new Point(8 + (68 + tia.m_P0Pos) * 2 + client.X, client.Y)); DisplaySettings.P1Pos.Blit(display, new Point(8 + (68 + tia.m_P1Pos) * 2 + client.X, client.Y)); DisplaySettings.HPos.Blit(display, new Point(8 + (68 + tia.m_hPos) * 2 + client.X, client.Y + 20)); }