First pass at revamping debugger TIA tab (UI changes only).

This commit is contained in:
Stephen Anthony 2017-04-24 12:36:47 -02:30
parent 2c4e6f3bc7
commit 2d58825b25
2 changed files with 154 additions and 86 deletions

View File

@ -40,11 +40,11 @@ TiaWidget::TiaWidget(GuiObject* boss, const GUI::Font& lfont,
const int fontWidth = lfont.getMaxCharWidth(), const int fontWidth = lfont.getMaxCharWidth(),
fontHeight = lfont.getFontHeight(), fontHeight = lfont.getFontHeight(),
lineHeight = lfont.getLineHeight(); lineHeight = lfont.getLineHeight();
int xpos = 10, ypos = 15 + lineHeight, lwidth = 4 * fontWidth; int xpos = 10, ypos = 15 + lineHeight;
StaticTextWidget* t; StaticTextWidget* t;
// Color registers // Color registers
const char* regNames[] = { "COLUP0:", "COLUP1:", "COLUPF:", "COLUBK:" }; const char* regNames[] = { "COLUP0", "COLUP1", "COLUPF", "COLUBK" };
for(int row = 0; row < 4; ++row) for(int row = 0; row < 4; ++row)
{ {
new StaticTextWidget(boss, lfont, xpos, ypos + row*lineHeight + 2, new StaticTextWidget(boss, lfont, xpos, ypos + row*lineHeight + 2,
@ -174,21 +174,20 @@ TiaWidget::TiaWidget(GuiObject* boss, const GUI::Font& lfont,
//////////////////////////// ////////////////////////////
// P0 register info // P0 register info
//////////////////////////// ////////////////////////////
// grP0 // grP0 (new)
xpos = 10; ypos = buttonY + 2*lineHeight; xpos = 10; ypos = buttonY + 2*lineHeight;
new StaticTextWidget(boss, lfont, xpos, ypos+2, 7*fontWidth, fontHeight, new StaticTextWidget(boss, lfont, xpos, ypos+2, 2*fontWidth, fontHeight,
"P0: GR:", kTextAlignLeft); "P0", kTextAlignLeft);
xpos += 7*fontWidth + 5; xpos += 2*fontWidth + 5;
myGRP0 = new TogglePixelWidget(boss, nfont, xpos, ypos+1, 8, 1); myGRP0 = new TogglePixelWidget(boss, nfont, xpos, ypos+1, 8, 1);
myGRP0->setTarget(this); myGRP0->setTarget(this);
myGRP0->setID(kGRP0ID); myGRP0->setID(kGRP0ID);
addFocusWidget(myGRP0); addFocusWidget(myGRP0);
// posP0 // posP0
xpos += myGRP0->getWidth() + 8; xpos += myGRP0->getWidth() + 12;
t = new StaticTextWidget(boss, lfont, xpos, ypos+2, t = new StaticTextWidget(boss, lfont, xpos, ypos+2, 5*fontWidth, fontHeight,
6*fontWidth, fontHeight, "Pos #", kTextAlignLeft);
"Pos: #", kTextAlignLeft);
xpos += t->getWidth() + 2; xpos += t->getWidth() + 2;
myPosP0 = new DataGridWidget(boss, nfont, xpos, ypos, myPosP0 = new DataGridWidget(boss, nfont, xpos, ypos,
1, 1, 3, 8, Common::Base::F_10); 1, 1, 3, 8, Common::Base::F_10);
@ -198,17 +197,17 @@ TiaWidget::TiaWidget(GuiObject* boss, const GUI::Font& lfont,
addFocusWidget(myPosP0); addFocusWidget(myPosP0);
// hmP0 // hmP0
xpos += myPosP0->getWidth() + 8; xpos += myPosP0->getWidth() + 12;
new StaticTextWidget(boss, lfont, xpos, ypos+2, 3*fontWidth, fontHeight, new StaticTextWidget(boss, lfont, xpos, ypos+2, 2*fontWidth, fontHeight,
"HM:", kTextAlignLeft); "HM", kTextAlignLeft);
xpos += 3*fontWidth + 5; xpos += 2*fontWidth + 5;
myHMP0 = new DataGridWidget(boss, nfont, xpos, ypos, myHMP0 = new DataGridWidget(boss, nfont, xpos, ypos,
1, 1, 1, 4, Common::Base::F_16_1); 1, 1, 1, 4, Common::Base::F_16_1);
myHMP0->setTarget(this); myHMP0->setTarget(this);
myHMP0->setID(kHMP0ID); myHMP0->setID(kHMP0ID);
addFocusWidget(myHMP0); addFocusWidget(myHMP0);
// P0 reflect and delay // P0 reflect
xpos += myHMP0->getWidth() + 15; xpos += myHMP0->getWidth() + 15;
myRefP0 = new CheckboxWidget(boss, lfont, xpos, ypos+1, myRefP0 = new CheckboxWidget(boss, lfont, xpos, ypos+1,
"Reflect", kCheckActionCmd); "Reflect", kCheckActionCmd);
@ -216,18 +215,26 @@ TiaWidget::TiaWidget(GuiObject* boss, const GUI::Font& lfont,
myRefP0->setID(kRefP0ID); myRefP0->setID(kRefP0ID);
addFocusWidget(myRefP0); addFocusWidget(myRefP0);
xpos += myRefP0->getWidth() + 15; // grP0 (old)
xpos = 10 + 2*fontWidth + 5; ypos += myGRP0->getHeight() + 5;
myGRP0Old = new TogglePixelWidget(boss, nfont, xpos, ypos+1, 8, 1);
myGRP0Old->setTarget(this);
myGRP0Old->setID(kGRP0OldID);
addFocusWidget(myGRP0Old);
// P0 delay
xpos += myGRP0Old->getWidth() + 12;
myDelP0 = new CheckboxWidget(boss, lfont, xpos, ypos+1, myDelP0 = new CheckboxWidget(boss, lfont, xpos, ypos+1,
"Delay", kCheckActionCmd); "VDel", kCheckActionCmd);
myDelP0->setTarget(this); myDelP0->setTarget(this);
myDelP0->setID(kDelP0ID); myDelP0->setID(kDelP0ID);
addFocusWidget(myDelP0); addFocusWidget(myDelP0);
// NUSIZ0 (player portion) // NUSIZ0 (player portion)
xpos = 10 + lwidth; ypos += myGRP0->getHeight() + 5; xpos += myDelP0->getWidth() + 12;
new StaticTextWidget(boss, lfont, xpos, ypos+2, 8*fontWidth, fontHeight, new StaticTextWidget(boss, lfont, xpos, ypos+2, 5*fontWidth, fontHeight,
"NusizP0:", kTextAlignLeft); "NuSiz", kTextAlignLeft);
xpos += 8*fontWidth + 5; xpos += 5*fontWidth + 5;
myNusizP0 = new DataGridWidget(boss, nfont, xpos, ypos, myNusizP0 = new DataGridWidget(boss, nfont, xpos, ypos,
1, 1, 1, 3, Common::Base::F_16_1); 1, 1, 1, 3, Common::Base::F_16_1);
myNusizP0->setTarget(this); myNusizP0->setTarget(this);
@ -242,20 +249,20 @@ TiaWidget::TiaWidget(GuiObject* boss, const GUI::Font& lfont,
//////////////////////////// ////////////////////////////
// P1 register info // P1 register info
//////////////////////////// ////////////////////////////
// grP1 // grP1 (new)
xpos = 10; ypos += 2*lineHeight; xpos = 10; ypos += 2*lineHeight;
new StaticTextWidget(boss, lfont, xpos, ypos+2, 7*fontWidth, fontHeight, new StaticTextWidget(boss, lfont, xpos, ypos+2, 2*fontWidth, fontHeight,
"P1: GR:", kTextAlignLeft); "P1", kTextAlignLeft);
xpos += 7*fontWidth + 5; xpos += 2*fontWidth + 5;
myGRP1 = new TogglePixelWidget(boss, nfont, xpos, ypos+1, 8, 1); myGRP1 = new TogglePixelWidget(boss, nfont, xpos, ypos+1, 8, 1);
myGRP1->setTarget(this); myGRP1->setTarget(this);
myGRP1->setID(kGRP1ID); myGRP1->setID(kGRP1ID);
addFocusWidget(myGRP1); addFocusWidget(myGRP1);
// posP1 // posP1
xpos += myGRP1->getWidth() + 8; xpos += myGRP1->getWidth() + 12;
t = new StaticTextWidget(boss, lfont, xpos, ypos+2, 6*fontWidth, fontHeight, t = new StaticTextWidget(boss, lfont, xpos, ypos+2, 5*fontWidth, fontHeight,
"Pos: #", kTextAlignLeft); "Pos #", kTextAlignLeft);
xpos += t->getWidth() + 2; xpos += t->getWidth() + 2;
myPosP1 = new DataGridWidget(boss, nfont, xpos, ypos, myPosP1 = new DataGridWidget(boss, nfont, xpos, ypos,
1, 1, 3, 8, Common::Base::F_10); 1, 1, 3, 8, Common::Base::F_10);
@ -265,17 +272,17 @@ TiaWidget::TiaWidget(GuiObject* boss, const GUI::Font& lfont,
addFocusWidget(myPosP1); addFocusWidget(myPosP1);
// hmP1 // hmP1
xpos += myPosP1->getWidth() + 8; xpos += myPosP1->getWidth() + 12;
new StaticTextWidget(boss, lfont, xpos, ypos+2, 3*fontWidth, fontHeight, new StaticTextWidget(boss, lfont, xpos, ypos+2, 2*fontWidth, fontHeight,
"HM:", kTextAlignLeft); "HM", kTextAlignLeft);
xpos += 3*fontWidth + 5; xpos += 2*fontWidth + 5;
myHMP1 = new DataGridWidget(boss, nfont, xpos, ypos, myHMP1 = new DataGridWidget(boss, nfont, xpos, ypos,
1, 1, 1, 4, Common::Base::F_16_1); 1, 1, 1, 4, Common::Base::F_16_1);
myHMP1->setTarget(this); myHMP1->setTarget(this);
myHMP1->setID(kHMP1ID); myHMP1->setID(kHMP1ID);
addFocusWidget(myHMP1); addFocusWidget(myHMP1);
// P1 reflect and delay // P1 reflect
xpos += myHMP1->getWidth() + 15; xpos += myHMP1->getWidth() + 15;
myRefP1 = new CheckboxWidget(boss, lfont, xpos, ypos+1, myRefP1 = new CheckboxWidget(boss, lfont, xpos, ypos+1,
"Reflect", kCheckActionCmd); "Reflect", kCheckActionCmd);
@ -283,18 +290,26 @@ TiaWidget::TiaWidget(GuiObject* boss, const GUI::Font& lfont,
myRefP1->setID(kRefP1ID); myRefP1->setID(kRefP1ID);
addFocusWidget(myRefP1); addFocusWidget(myRefP1);
xpos += myRefP1->getWidth() + 15; // grP1 (old)
xpos = 10 + 2*fontWidth + 5; ypos += myGRP1->getHeight() + 5;
myGRP1Old = new TogglePixelWidget(boss, nfont, xpos, ypos+1, 8, 1);
myGRP1Old->setTarget(this);
myGRP1Old->setID(kGRP1OldID);
addFocusWidget(myGRP1Old);
// P1 delay
xpos += myGRP1Old->getWidth() + 12;
myDelP1 = new CheckboxWidget(boss, lfont, xpos, ypos+1, myDelP1 = new CheckboxWidget(boss, lfont, xpos, ypos+1,
"Delay", kCheckActionCmd); "VDel", kCheckActionCmd);
myDelP1->setTarget(this); myDelP1->setTarget(this);
myDelP1->setID(kDelP1ID); myDelP1->setID(kDelP1ID);
addFocusWidget(myDelP1); addFocusWidget(myDelP1);
// NUSIZ1 (player portion) // NUSIZ1 (player portion)
xpos = 10 + lwidth; ypos += myGRP1->getHeight() + 5; xpos += myDelP1->getWidth() + 12;
new StaticTextWidget(boss, lfont, xpos, ypos+2, 8*fontWidth, fontHeight, new StaticTextWidget(boss, lfont, xpos, ypos+2, 5*fontWidth, fontHeight,
"NusizP1:", kTextAlignLeft); "NuSiz", kTextAlignLeft);
xpos += 8*fontWidth + 5; xpos += 5*fontWidth + 5;
myNusizP1 = new DataGridWidget(boss, nfont, xpos, ypos, myNusizP1 = new DataGridWidget(boss, nfont, xpos, ypos,
1, 1, 1, 3, Common::Base::F_16_1); 1, 1, 1, 3, Common::Base::F_16_1);
myNusizP1->setTarget(this); myNusizP1->setTarget(this);
@ -311,9 +326,9 @@ TiaWidget::TiaWidget(GuiObject* boss, const GUI::Font& lfont,
//////////////////////////// ////////////////////////////
// enaM0 // enaM0
xpos = 10; ypos += 2*lineHeight; xpos = 10; ypos += 2*lineHeight;
new StaticTextWidget(boss, lfont, xpos, ypos+2, 3*fontWidth, fontHeight, new StaticTextWidget(boss, lfont, xpos, ypos+2, 2*fontWidth, fontHeight,
"M0:", kTextAlignLeft); "M0", kTextAlignLeft);
xpos += 3*fontWidth + 8; xpos += 2*fontWidth + 8;
myEnaM0 = new CheckboxWidget(boss, lfont, xpos, ypos+2, myEnaM0 = new CheckboxWidget(boss, lfont, xpos, ypos+2,
"Enable", kCheckActionCmd); "Enable", kCheckActionCmd);
myEnaM0->setTarget(this); myEnaM0->setTarget(this);
@ -322,8 +337,8 @@ TiaWidget::TiaWidget(GuiObject* boss, const GUI::Font& lfont,
// posM0 // posM0
xpos += myEnaM0->getWidth() + 12; xpos += myEnaM0->getWidth() + 12;
t = new StaticTextWidget(boss, lfont, xpos, ypos+2, 6*fontWidth, fontHeight, t = new StaticTextWidget(boss, lfont, xpos, ypos+2, 5*fontWidth, fontHeight,
"Pos: #", kTextAlignLeft); "Pos #", kTextAlignLeft);
xpos += t->getWidth() + 2; xpos += t->getWidth() + 2;
myPosM0 = new DataGridWidget(boss, nfont, xpos, ypos, myPosM0 = new DataGridWidget(boss, nfont, xpos, ypos,
1, 1, 3, 8, Common::Base::F_10); 1, 1, 3, 8, Common::Base::F_10);
@ -333,10 +348,10 @@ TiaWidget::TiaWidget(GuiObject* boss, const GUI::Font& lfont,
addFocusWidget(myPosM0); addFocusWidget(myPosM0);
// hmM0 // hmM0
xpos += myPosM0->getWidth() + 8; xpos += myPosM0->getWidth() + 12;
new StaticTextWidget(boss, lfont, xpos, ypos+2, 3*fontWidth, fontHeight, new StaticTextWidget(boss, lfont, xpos, ypos+2, 2*fontWidth, fontHeight,
"HM:", kTextAlignLeft); "HM", kTextAlignLeft);
xpos += 3*fontWidth + 5; xpos += 2*fontWidth + 5;
myHMM0 = new DataGridWidget(boss, nfont, xpos, ypos, myHMM0 = new DataGridWidget(boss, nfont, xpos, ypos,
1, 1, 1, 4, Common::Base::F_16_1); 1, 1, 1, 4, Common::Base::F_16_1);
myHMM0->setTarget(this); myHMM0->setTarget(this);
@ -344,10 +359,10 @@ TiaWidget::TiaWidget(GuiObject* boss, const GUI::Font& lfont,
addFocusWidget(myHMM0); addFocusWidget(myHMM0);
// NUSIZ0 (missile portion) // NUSIZ0 (missile portion)
xpos += myHMM0->getWidth() + 8; xpos += myHMM0->getWidth() + 12;
new StaticTextWidget(boss, lfont, xpos, ypos+2, 5*fontWidth, fontHeight, new StaticTextWidget(boss, lfont, xpos, ypos+2, 4*fontWidth, fontHeight,
"Size:", kTextAlignLeft); "Size", kTextAlignLeft);
xpos += 5*fontWidth + 5; xpos += 4*fontWidth + 5;
myNusizM0 = new DataGridWidget(boss, nfont, xpos, ypos, myNusizM0 = new DataGridWidget(boss, nfont, xpos, ypos,
1, 1, 1, 2, Common::Base::F_16_1); 1, 1, 1, 2, Common::Base::F_16_1);
myNusizM0->setTarget(this); myNusizM0->setTarget(this);
@ -367,9 +382,9 @@ TiaWidget::TiaWidget(GuiObject* boss, const GUI::Font& lfont,
//////////////////////////// ////////////////////////////
// enaM1 // enaM1
xpos = 10; ypos += lineHeight + 6; xpos = 10; ypos += lineHeight + 6;
new StaticTextWidget(boss, lfont, xpos, ypos+2, 3*fontWidth, fontHeight, new StaticTextWidget(boss, lfont, xpos, ypos+2, 2*fontWidth, fontHeight,
"M1:", kTextAlignLeft); "M1", kTextAlignLeft);
xpos += 3*fontWidth + 8; xpos += 2*fontWidth + 8;
myEnaM1 = new CheckboxWidget(boss, lfont, xpos, ypos+2, myEnaM1 = new CheckboxWidget(boss, lfont, xpos, ypos+2,
"Enable", kCheckActionCmd); "Enable", kCheckActionCmd);
myEnaM1->setTarget(this); myEnaM1->setTarget(this);
@ -378,8 +393,8 @@ TiaWidget::TiaWidget(GuiObject* boss, const GUI::Font& lfont,
// posM0 // posM0
xpos += myEnaM1->getWidth() + 12; xpos += myEnaM1->getWidth() + 12;
t = new StaticTextWidget(boss, lfont, xpos, ypos+2, 6*fontWidth, fontHeight, t = new StaticTextWidget(boss, lfont, xpos, ypos+2, 5*fontWidth, fontHeight,
"Pos: #", kTextAlignLeft); "Pos #", kTextAlignLeft);
xpos += t->getWidth() + 2; xpos += t->getWidth() + 2;
myPosM1 = new DataGridWidget(boss, nfont, xpos, ypos, myPosM1 = new DataGridWidget(boss, nfont, xpos, ypos,
1, 1, 3, 8, Common::Base::F_10); 1, 1, 3, 8, Common::Base::F_10);
@ -389,10 +404,10 @@ TiaWidget::TiaWidget(GuiObject* boss, const GUI::Font& lfont,
addFocusWidget(myPosM1); addFocusWidget(myPosM1);
// hmM0 // hmM0
xpos += myPosM1->getWidth() + 8; xpos += myPosM1->getWidth() + 12;
new StaticTextWidget(boss, lfont, xpos, ypos+2, 3*fontWidth, fontHeight, new StaticTextWidget(boss, lfont, xpos, ypos+2, 2*fontWidth, fontHeight,
"HM:", kTextAlignLeft); "HM", kTextAlignLeft);
xpos += 3*fontWidth + 5; xpos += 2*fontWidth + 5;
myHMM1 = new DataGridWidget(boss, nfont, xpos, ypos, myHMM1 = new DataGridWidget(boss, nfont, xpos, ypos,
1, 1, 1, 4, Common::Base::F_16_1); 1, 1, 1, 4, Common::Base::F_16_1);
myHMM1->setTarget(this); myHMM1->setTarget(this);
@ -400,10 +415,10 @@ TiaWidget::TiaWidget(GuiObject* boss, const GUI::Font& lfont,
addFocusWidget(myHMM1); addFocusWidget(myHMM1);
// NUSIZ1 (missile portion) // NUSIZ1 (missile portion)
xpos += myHMM1->getWidth() + 8; xpos += myHMM1->getWidth() + 12;
new StaticTextWidget(boss, lfont, xpos, ypos+2, 5*fontWidth, fontHeight, new StaticTextWidget(boss, lfont, xpos, ypos+2, 4*fontWidth, fontHeight,
"Size:", kTextAlignLeft); "Size", kTextAlignLeft);
xpos += 5*fontWidth + 5; xpos += 4*fontWidth + 5;
myNusizM1 = new DataGridWidget(boss, nfont, xpos, ypos, myNusizM1 = new DataGridWidget(boss, nfont, xpos, ypos,
1, 1, 1, 2, Common::Base::F_16_1); 1, 1, 1, 2, Common::Base::F_16_1);
myNusizM1->setTarget(this); myNusizM1->setTarget(this);
@ -423,9 +438,9 @@ TiaWidget::TiaWidget(GuiObject* boss, const GUI::Font& lfont,
//////////////////////////// ////////////////////////////
// enaBL // enaBL
xpos = 10; ypos += lineHeight + 6; xpos = 10; ypos += lineHeight + 6;
new StaticTextWidget(boss, lfont, xpos, ypos+2, 3*fontWidth, fontHeight, new StaticTextWidget(boss, lfont, xpos, ypos+2, 2*fontWidth, fontHeight,
"BL:", kTextAlignLeft); "BL", kTextAlignLeft);
xpos += 3*fontWidth + 8; xpos += 2*fontWidth + 8;
myEnaBL = new CheckboxWidget(boss, lfont, xpos, ypos+2, myEnaBL = new CheckboxWidget(boss, lfont, xpos, ypos+2,
"Enable", kCheckActionCmd); "Enable", kCheckActionCmd);
myEnaBL->setTarget(this); myEnaBL->setTarget(this);
@ -434,8 +449,8 @@ TiaWidget::TiaWidget(GuiObject* boss, const GUI::Font& lfont,
// posBL // posBL
xpos += myEnaBL->getWidth() + 12; xpos += myEnaBL->getWidth() + 12;
t = new StaticTextWidget(boss, lfont, xpos, ypos+2, 6*fontWidth, fontHeight, t = new StaticTextWidget(boss, lfont, xpos, ypos+2, 5*fontWidth, fontHeight,
"Pos: #", kTextAlignLeft); "Pos #", kTextAlignLeft);
xpos += t->getWidth() + 2; xpos += t->getWidth() + 2;
myPosBL = new DataGridWidget(boss, nfont, xpos, ypos, myPosBL = new DataGridWidget(boss, nfont, xpos, ypos,
1, 1, 3, 8, Common::Base::F_10); 1, 1, 3, 8, Common::Base::F_10);
@ -445,10 +460,10 @@ TiaWidget::TiaWidget(GuiObject* boss, const GUI::Font& lfont,
addFocusWidget(myPosBL); addFocusWidget(myPosBL);
// hmBL // hmBL
xpos += myPosBL->getWidth() + 8; xpos += myPosBL->getWidth() + 12;
new StaticTextWidget(boss, lfont, xpos, ypos+2, 3*fontWidth, fontHeight, new StaticTextWidget(boss, lfont, xpos, ypos+2, 2*fontWidth, fontHeight,
"HM:", kTextAlignLeft); "HM", kTextAlignLeft);
xpos += 3*fontWidth + 5; xpos += 2*fontWidth + 5;
myHMBL = new DataGridWidget(boss, nfont, xpos, ypos, myHMBL = new DataGridWidget(boss, nfont, xpos, ypos,
1, 1, 1, 4, Common::Base::F_16_1); 1, 1, 1, 4, Common::Base::F_16_1);
myHMBL->setTarget(this); myHMBL->setTarget(this);
@ -456,10 +471,10 @@ TiaWidget::TiaWidget(GuiObject* boss, const GUI::Font& lfont,
addFocusWidget(myHMBL); addFocusWidget(myHMBL);
// CTRLPF (size portion) // CTRLPF (size portion)
xpos += myHMBL->getWidth() + 8; xpos += myHMBL->getWidth() + 12;
new StaticTextWidget(boss, lfont, xpos, ypos+2, 5*fontWidth, fontHeight, new StaticTextWidget(boss, lfont, xpos, ypos+2, 4*fontWidth, fontHeight,
"Size:", kTextAlignLeft); "Size", kTextAlignLeft);
xpos += 5*fontWidth + 5; xpos += 4*fontWidth + 5;
mySizeBL = new DataGridWidget(boss, nfont, xpos, ypos, mySizeBL = new DataGridWidget(boss, nfont, xpos, ypos,
1, 1, 1, 2, Common::Base::F_16_1); 1, 1, 1, 2, Common::Base::F_16_1);
mySizeBL->setTarget(this); mySizeBL->setTarget(this);
@ -477,11 +492,16 @@ TiaWidget::TiaWidget(GuiObject* boss, const GUI::Font& lfont,
//////////////////////////// ////////////////////////////
// PF 0/1/2 registers // PF 0/1/2 registers
//////////////////////////// ////////////////////////////
const GUI::Font& sf = instance().frameBuffer().smallFont();
const int sfWidth = sf.getMaxCharWidth(),
sfHeight = sf.getFontHeight();
const char* bitNames[] = { "0", "1", "2", "3", "4", "5", "6", "7" };
// PF0 // PF0
xpos = 10; ypos += lineHeight + 6; xpos = 10; ypos += lineHeight + sfHeight + 6;
new StaticTextWidget(boss, lfont, xpos, ypos+2, 4*fontWidth, fontHeight, new StaticTextWidget(boss, lfont, xpos, ypos+2, 2*fontWidth, fontHeight,
"PF:", kTextAlignLeft); "PF", kTextAlignLeft);
xpos += 4*fontWidth; xpos += 2*fontWidth + 5;
myPF[0] = new TogglePixelWidget(boss, nfont, xpos, ypos+1, 4, 1); myPF[0] = new TogglePixelWidget(boss, nfont, xpos, ypos+1, 4, 1);
myPF[0]->setTarget(this); myPF[0]->setTarget(this);
myPF[0]->setID(kPF0ID); myPF[0]->setID(kPF0ID);
@ -501,6 +521,33 @@ TiaWidget::TiaWidget(GuiObject* boss, const GUI::Font& lfont,
myPF[2]->setID(kPF2ID); myPF[2]->setID(kPF2ID);
addFocusWidget(myPF[2]); addFocusWidget(myPF[2]);
// PFx bit labels
auto start = [&](int w) { return (w - sfWidth) / 2; };
int colw = myPF[0]->getWidth() / 4;
xpos = 10 + 2*fontWidth + 5 + start(colw);
int _ypos = ypos - sfHeight;
for(int i = 4; i <= 7; ++i)
{
new StaticTextWidget(boss, sf, xpos, _ypos, sfWidth, sfHeight,
bitNames[i], kTextAlignLeft);
xpos += colw;
}
xpos = 10 + 2*fontWidth + 5 + myPF[0]->getWidth() + 2 + start(colw);
for(int i = 7; i >= 0; --i)
{
new StaticTextWidget(boss, sf, xpos, _ypos, sfWidth, sfHeight,
bitNames[i], kTextAlignLeft);
xpos += colw;
}
xpos = 10 + 2*fontWidth + 5 + myPF[0]->getWidth() + 2 +
myPF[1]->getWidth() + 2 + start(colw);
for(int i = 0; i <= 7; ++i)
{
new StaticTextWidget(boss, sf, xpos, _ypos, sfWidth, sfHeight,
bitNames[i], kTextAlignLeft);
xpos += colw;
}
// PF reflect, score, priority // PF reflect, score, priority
xpos = 10 + 4*fontWidth; ypos += lineHeight + 6; xpos = 10 + 4*fontWidth; ypos += lineHeight + 6;
myRefPF = new CheckboxWidget(boss, lfont, xpos, ypos+1, myRefPF = new CheckboxWidget(boss, lfont, xpos, ypos+1,
@ -673,10 +720,18 @@ void TiaWidget::handleCommand(CommandSender* sender, int cmd, int data, int id)
tia.grP0(myGRP0->getIntState()); tia.grP0(myGRP0->getIntState());
break; break;
case kGRP0OldID:
cerr << "GRP0Old\n";
break;
case kGRP1ID: case kGRP1ID:
tia.grP1(myGRP1->getIntState()); tia.grP1(myGRP1->getIntState());
break; break;
case kGRP1OldID:
cerr << "GRP1Old\n";
break;
case kPF0ID: case kPF0ID:
tia.pf0(myPF[0]->getIntState()); tia.pf0(myPF[0]->getIntState());
break; break;
@ -787,11 +842,16 @@ void TiaWidget::loadConfig()
//////////////////////////// ////////////////////////////
// P0 register info // P0 register info
//////////////////////////// ////////////////////////////
// grP0 // grP0 (new)
myGRP0->setColor(state.coluRegs[0]); myGRP0->setColor(state.coluRegs[0]);
myGRP0->setBackgroundColor(-1); myGRP0->setBackgroundColor(-1);
myGRP0->setIntState(state.gr[P0], false); myGRP0->setIntState(state.gr[P0], false);
// grP0 (old) // FIXME - for now, same as 'new'
myGRP0Old->setColor(state.coluRegs[0]);
myGRP0Old->setBackgroundColor(-1);
myGRP0Old->setIntState(state.gr[P0], false);
// posP0 // posP0
myPosP0->setList(0, state.pos[P0], state.pos[P0] != oldstate.pos[P0]); myPosP0->setList(0, state.pos[P0], state.pos[P0] != oldstate.pos[P0]);
@ -810,11 +870,16 @@ void TiaWidget::loadConfig()
//////////////////////////// ////////////////////////////
// P1 register info // P1 register info
//////////////////////////// ////////////////////////////
// grP1 // grP1 (new)
myGRP1->setColor(state.coluRegs[1]); myGRP1->setColor(state.coluRegs[1]);
myGRP1->setBackgroundColor(tia.priorityPF() ? state.coluRegs[3] : -1); myGRP1->setBackgroundColor(-1);
myGRP1->setIntState(state.gr[P1], false); myGRP1->setIntState(state.gr[P1], false);
// grP1 (old) // FIXME - for now, same as 'new'
myGRP1Old->setColor(state.coluRegs[1]);
myGRP1Old->setBackgroundColor(-1);
myGRP1Old->setIntState(state.gr[P1], false);
// posP1 // posP1
myPosP1->setList(0, state.pos[P1], state.pos[P1] != oldstate.pos[P1]); myPosP1->setList(0, state.pos[P1], state.pos[P1] != oldstate.pos[P1]);

View File

@ -47,7 +47,9 @@ class TiaWidget : public Widget, public CommandSender
ColorWidget* myCOLUBKColor; ColorWidget* myCOLUBKColor;
TogglePixelWidget* myGRP0; TogglePixelWidget* myGRP0;
TogglePixelWidget* myGRP0Old;
TogglePixelWidget* myGRP1; TogglePixelWidget* myGRP1;
TogglePixelWidget* myGRP1Old;
DataGridWidget* myPosP0; DataGridWidget* myPosP0;
DataGridWidget* myPosP1; DataGridWidget* myPosP1;
@ -105,7 +107,8 @@ class TiaWidget : public Widget, public CommandSender
kRamID, kRamID,
kColorRegsID, kColorRegsID,
kGRP0ID, kGRP1ID, kGRP0ID, kGRP0OldID,
kGRP1ID, kGRP1OldID,
kPosP0ID, kPosP1ID, kPosP0ID, kPosP1ID,
kPosM0ID, kPosM1ID, kPosBLID, kPosM0ID, kPosM1ID, kPosBLID,
kHMP0ID, kHMP1ID, kHMP0ID, kHMP1ID,