mirror of https://github.com/stella-emu/stella.git
Added PF register info to TIA tab. Note that PF 0/1/2 are placed
next to each other, and their contents are shown as output to the screen (serialized from TIA), *NOT* how the bits are actually stored in the PF registers. git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@729 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
parent
4274028040
commit
74efb7b66d
|
@ -13,7 +13,7 @@
|
||||||
// See the file "license" for information on usage and redistribution of
|
// See the file "license" for information on usage and redistribution of
|
||||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
//
|
//
|
||||||
// $Id: TiaWidget.cxx,v 1.10 2005-08-19 15:05:09 stephena Exp $
|
// $Id: TiaWidget.cxx,v 1.11 2005-08-19 23:02:08 stephena Exp $
|
||||||
//
|
//
|
||||||
// Based on code from ScummVM - Scumm Interpreter
|
// Based on code from ScummVM - Scumm Interpreter
|
||||||
// Copyright (C) 2002-2004 The ScummVM project
|
// Copyright (C) 2002-2004 The ScummVM project
|
||||||
|
@ -53,7 +53,9 @@ enum {
|
||||||
kNusizP0ID, kNusizP1ID,
|
kNusizP0ID, kNusizP1ID,
|
||||||
kNusizM0ID, kNusizM1ID, kSizeBLID,
|
kNusizM0ID, kNusizM1ID, kSizeBLID,
|
||||||
kEnaM0ID, kEnaM1ID, kEnaBLID,
|
kEnaM0ID, kEnaM1ID, kEnaBLID,
|
||||||
kResMP0ID, kResMP1ID
|
kResMP0ID, kResMP1ID,
|
||||||
|
kPF0ID, kPF1ID, kPF2ID,
|
||||||
|
kRefPFID, kScorePFID, kPriorityPFID
|
||||||
};
|
};
|
||||||
|
|
||||||
// Strobe button commands
|
// Strobe button commands
|
||||||
|
@ -210,12 +212,15 @@ TiaWidget::TiaWidget(GuiObject* boss, int x, int y, int w, int h)
|
||||||
{
|
{
|
||||||
for(unsigned int col = 0; col < 5 - row; ++col)
|
for(unsigned int col = 0; col < 5 - row; ++col)
|
||||||
{
|
{
|
||||||
myCollision[idx] = new CheckboxWidget(boss, font, collX, collY, "", kCheckActionCmd);
|
myCollision[idx] = new CheckboxWidget(boss, font, collX, collY,
|
||||||
|
"", kCheckActionCmd);
|
||||||
myCollision[idx]->setFont(font);
|
myCollision[idx]->setFont(font);
|
||||||
myCollision[idx]->setTarget(this);
|
myCollision[idx]->setTarget(this);
|
||||||
myCollision[idx]->setID(idx);
|
myCollision[idx]->setID(idx);
|
||||||
|
// TODO - make collisions editable in TIA //
|
||||||
myCollision[idx]->setEditable(false);
|
myCollision[idx]->setEditable(false);
|
||||||
// addFocusWidget(myCollision[idx]);
|
// addFocusWidget(myCollision[idx]);
|
||||||
|
////////////////////////////////////////////
|
||||||
|
|
||||||
collX += myCollision[idx]->getWidth() + 10;
|
collX += myCollision[idx]->getWidth() + 10;
|
||||||
idx++;
|
idx++;
|
||||||
|
@ -230,43 +235,53 @@ TiaWidget::TiaWidget(GuiObject* boss, int x, int y, int w, int h)
|
||||||
ButtonWidget* b;
|
ButtonWidget* b;
|
||||||
unsigned int buttonX, buttonY;
|
unsigned int buttonX, buttonY;
|
||||||
buttonX = collX + 20*fontWidth; buttonY = ypos;
|
buttonX = collX + 20*fontWidth; buttonY = ypos;
|
||||||
b = new ButtonWidget(boss, buttonX, buttonY, 50, lineHeight, "WSync", kWsyncCmd);
|
b = new ButtonWidget(boss, buttonX, buttonY, 50, lineHeight,
|
||||||
|
"WSync", kWsyncCmd);
|
||||||
b->setTarget(this);
|
b->setTarget(this);
|
||||||
|
|
||||||
buttonY += lineHeight + 3;
|
buttonY += lineHeight + 3;
|
||||||
b = new ButtonWidget(boss, buttonX, buttonY, 50, lineHeight, "ResP0", kResP0Cmd);
|
b = new ButtonWidget(boss, buttonX, buttonY, 50, lineHeight,
|
||||||
|
"ResP0", kResP0Cmd);
|
||||||
b->setTarget(this);
|
b->setTarget(this);
|
||||||
|
|
||||||
buttonY += lineHeight + 3;
|
buttonY += lineHeight + 3;
|
||||||
b = new ButtonWidget(boss, buttonX, buttonY, 50, lineHeight, "ResM0", kResM0Cmd);
|
b = new ButtonWidget(boss, buttonX, buttonY, 50, lineHeight,
|
||||||
|
"ResM0", kResM0Cmd);
|
||||||
b->setTarget(this);
|
b->setTarget(this);
|
||||||
|
|
||||||
buttonY += lineHeight + 3;
|
buttonY += lineHeight + 3;
|
||||||
b = new ButtonWidget(boss, buttonX, buttonY, 50, lineHeight, "ResBL", kResBLCmd);
|
b = new ButtonWidget(boss, buttonX, buttonY, 50, lineHeight,
|
||||||
|
"ResBL", kResBLCmd);
|
||||||
b->setTarget(this);
|
b->setTarget(this);
|
||||||
|
|
||||||
buttonY += lineHeight + 3;
|
buttonY += lineHeight + 3;
|
||||||
b = new ButtonWidget(boss, buttonX, buttonY, 50, lineHeight, "HmClr", kHmclrCmd);
|
b = new ButtonWidget(boss, buttonX, buttonY, 50, lineHeight,
|
||||||
|
"HmClr", kHmclrCmd);
|
||||||
b->setTarget(this);
|
b->setTarget(this);
|
||||||
|
|
||||||
buttonX += 50 + 10; buttonY = ypos;
|
buttonX += 50 + 10; buttonY = ypos;
|
||||||
b = new ButtonWidget(boss, buttonX, buttonY, 50, lineHeight, "RSync", kRsyncCmd);
|
b = new ButtonWidget(boss, buttonX, buttonY, 50, lineHeight,
|
||||||
|
"RSync", kRsyncCmd);
|
||||||
b->setTarget(this);
|
b->setTarget(this);
|
||||||
|
|
||||||
buttonY += lineHeight + 3;
|
buttonY += lineHeight + 3;
|
||||||
b = new ButtonWidget(boss, buttonX, buttonY, 50, lineHeight, "ResP1", kResP1Cmd);
|
b = new ButtonWidget(boss, buttonX, buttonY, 50, lineHeight,
|
||||||
|
"ResP1", kResP1Cmd);
|
||||||
b->setTarget(this);
|
b->setTarget(this);
|
||||||
|
|
||||||
buttonY += lineHeight + 3;
|
buttonY += lineHeight + 3;
|
||||||
b = new ButtonWidget(boss, buttonX, buttonY, 50, lineHeight, "ResM1", kResM1Cmd);
|
b = new ButtonWidget(boss, buttonX, buttonY, 50, lineHeight,
|
||||||
|
"ResM1", kResM1Cmd);
|
||||||
b->setTarget(this);
|
b->setTarget(this);
|
||||||
|
|
||||||
buttonY += lineHeight + 3;
|
buttonY += lineHeight + 3;
|
||||||
b = new ButtonWidget(boss, buttonX, buttonY, 50, lineHeight, "HMove", kHmoveCmd);
|
b = new ButtonWidget(boss, buttonX, buttonY, 50, lineHeight,
|
||||||
|
"HMove", kHmoveCmd);
|
||||||
b->setTarget(this);
|
b->setTarget(this);
|
||||||
|
|
||||||
buttonY += lineHeight + 3;
|
buttonY += lineHeight + 3;
|
||||||
b = new ButtonWidget(boss, buttonX, buttonY, 50, lineHeight, "CxClr", kCxclrCmd);
|
b = new ButtonWidget(boss, buttonX, buttonY, 50, lineHeight,
|
||||||
|
"CxClr", kCxclrCmd);
|
||||||
b->setTarget(this);
|
b->setTarget(this);
|
||||||
|
|
||||||
// Set the strings to be used in the grPx registers
|
// Set the strings to be used in the grPx registers
|
||||||
|
@ -323,14 +338,16 @@ TiaWidget::TiaWidget(GuiObject* boss, int x, int y, int w, int h)
|
||||||
|
|
||||||
// P0 reflect and delay
|
// P0 reflect and delay
|
||||||
xpos += myHMP0->getWidth() + 15;
|
xpos += myHMP0->getWidth() + 15;
|
||||||
myRefP0 = new CheckboxWidget(boss, font, xpos, ypos+1, "Reflect", kCheckActionCmd);
|
myRefP0 = new CheckboxWidget(boss, font, xpos, ypos+1,
|
||||||
|
"Reflect", kCheckActionCmd);
|
||||||
myRefP0->setFont(font);
|
myRefP0->setFont(font);
|
||||||
myRefP0->setTarget(this);
|
myRefP0->setTarget(this);
|
||||||
myRefP0->setID(kRefP0ID);
|
myRefP0->setID(kRefP0ID);
|
||||||
addFocusWidget(myRefP0);
|
addFocusWidget(myRefP0);
|
||||||
|
|
||||||
xpos += myRefP0->getWidth() + 15;
|
xpos += myRefP0->getWidth() + 15;
|
||||||
myDelP0 = new CheckboxWidget(boss, font, xpos, ypos+1, "Delay", kCheckActionCmd);
|
myDelP0 = new CheckboxWidget(boss, font, xpos, ypos+1,
|
||||||
|
"Delay", kCheckActionCmd);
|
||||||
myDelP0->setFont(font);
|
myDelP0->setFont(font);
|
||||||
myDelP0->setTarget(this);
|
myDelP0->setTarget(this);
|
||||||
myDelP0->setID(kDelP0ID);
|
myDelP0->setID(kDelP0ID);
|
||||||
|
@ -397,14 +414,16 @@ TiaWidget::TiaWidget(GuiObject* boss, int x, int y, int w, int h)
|
||||||
|
|
||||||
// P1 reflect and delay
|
// P1 reflect and delay
|
||||||
xpos += myHMP1->getWidth() + 15;
|
xpos += myHMP1->getWidth() + 15;
|
||||||
myRefP1 = new CheckboxWidget(boss, font, xpos, ypos+1, "Reflect", kCheckActionCmd);
|
myRefP1 = new CheckboxWidget(boss, font, xpos, ypos+1,
|
||||||
|
"Reflect", kCheckActionCmd);
|
||||||
myRefP1->setFont(font);
|
myRefP1->setFont(font);
|
||||||
myRefP1->setTarget(this);
|
myRefP1->setTarget(this);
|
||||||
myRefP1->setID(kRefP1ID);
|
myRefP1->setID(kRefP1ID);
|
||||||
addFocusWidget(myRefP1);
|
addFocusWidget(myRefP1);
|
||||||
|
|
||||||
xpos += myRefP1->getWidth() + 15;
|
xpos += myRefP1->getWidth() + 15;
|
||||||
myDelP1 = new CheckboxWidget(boss, font, xpos, ypos+1, "Delay", kCheckActionCmd);
|
myDelP1 = new CheckboxWidget(boss, font, xpos, ypos+1,
|
||||||
|
"Delay", kCheckActionCmd);
|
||||||
myDelP1->setFont(font);
|
myDelP1->setFont(font);
|
||||||
myDelP1->setTarget(this);
|
myDelP1->setTarget(this);
|
||||||
myDelP1->setID(kDelP1ID);
|
myDelP1->setID(kDelP1ID);
|
||||||
|
@ -438,7 +457,8 @@ TiaWidget::TiaWidget(GuiObject* boss, int x, int y, int w, int h)
|
||||||
"M0:", kTextAlignLeft);
|
"M0:", kTextAlignLeft);
|
||||||
t->setFont(font);
|
t->setFont(font);
|
||||||
xpos += 3*fontWidth + 8;
|
xpos += 3*fontWidth + 8;
|
||||||
myEnaM0 = new CheckboxWidget(boss, font, xpos, ypos+2, "Enable", kCheckActionCmd);
|
myEnaM0 = new CheckboxWidget(boss, font, xpos, ypos+2,
|
||||||
|
"Enable", kCheckActionCmd);
|
||||||
myEnaM0->setFont(font);
|
myEnaM0->setFont(font);
|
||||||
myEnaM0->setTarget(this);
|
myEnaM0->setTarget(this);
|
||||||
myEnaM0->setID(kEnaM0ID);
|
myEnaM0->setID(kEnaM0ID);
|
||||||
|
@ -485,7 +505,8 @@ TiaWidget::TiaWidget(GuiObject* boss, int x, int y, int w, int h)
|
||||||
|
|
||||||
// M0 reset
|
// M0 reset
|
||||||
xpos += myNusizM0->getWidth() + 15;
|
xpos += myNusizM0->getWidth() + 15;
|
||||||
myResMP0 = new CheckboxWidget(boss, font, xpos, ypos+1, "Reset", kCheckActionCmd);
|
myResMP0 = new CheckboxWidget(boss, font, xpos, ypos+1,
|
||||||
|
"Reset", kCheckActionCmd);
|
||||||
myResMP0->setFont(font);
|
myResMP0->setFont(font);
|
||||||
myResMP0->setTarget(this);
|
myResMP0->setTarget(this);
|
||||||
myResMP0->setID(kResMP0ID);
|
myResMP0->setID(kResMP0ID);
|
||||||
|
@ -501,7 +522,8 @@ TiaWidget::TiaWidget(GuiObject* boss, int x, int y, int w, int h)
|
||||||
"M1:", kTextAlignLeft);
|
"M1:", kTextAlignLeft);
|
||||||
t->setFont(font);
|
t->setFont(font);
|
||||||
xpos += 3*fontWidth + 8;
|
xpos += 3*fontWidth + 8;
|
||||||
myEnaM1 = new CheckboxWidget(boss, font, xpos, ypos+2, "Enable", kCheckActionCmd);
|
myEnaM1 = new CheckboxWidget(boss, font, xpos, ypos+2,
|
||||||
|
"Enable", kCheckActionCmd);
|
||||||
myEnaM1->setFont(font);
|
myEnaM1->setFont(font);
|
||||||
myEnaM1->setTarget(this);
|
myEnaM1->setTarget(this);
|
||||||
myEnaM1->setID(kEnaM1ID);
|
myEnaM1->setID(kEnaM1ID);
|
||||||
|
@ -548,7 +570,8 @@ TiaWidget::TiaWidget(GuiObject* boss, int x, int y, int w, int h)
|
||||||
|
|
||||||
// M1 reset
|
// M1 reset
|
||||||
xpos += myNusizM1->getWidth() + 15;
|
xpos += myNusizM1->getWidth() + 15;
|
||||||
myResMP1 = new CheckboxWidget(boss, font, xpos, ypos+1, "Reset", kCheckActionCmd);
|
myResMP1 = new CheckboxWidget(boss, font, xpos, ypos+1,
|
||||||
|
"Reset", kCheckActionCmd);
|
||||||
myResMP1->setFont(font);
|
myResMP1->setFont(font);
|
||||||
myResMP1->setTarget(this);
|
myResMP1->setTarget(this);
|
||||||
myResMP1->setID(kResMP1ID);
|
myResMP1->setID(kResMP1ID);
|
||||||
|
@ -564,7 +587,8 @@ TiaWidget::TiaWidget(GuiObject* boss, int x, int y, int w, int h)
|
||||||
"BL:", kTextAlignLeft);
|
"BL:", kTextAlignLeft);
|
||||||
t->setFont(font);
|
t->setFont(font);
|
||||||
xpos += 3*fontWidth + 8;
|
xpos += 3*fontWidth + 8;
|
||||||
myEnaBL = new CheckboxWidget(boss, font, xpos, ypos+2, "Enable", kCheckActionCmd);
|
myEnaBL = new CheckboxWidget(boss, font, xpos, ypos+2,
|
||||||
|
"Enable", kCheckActionCmd);
|
||||||
myEnaBL->setFont(font);
|
myEnaBL->setFont(font);
|
||||||
myEnaBL->setTarget(this);
|
myEnaBL->setTarget(this);
|
||||||
myEnaBL->setID(kEnaBLID);
|
myEnaBL->setID(kEnaBLID);
|
||||||
|
@ -611,12 +635,66 @@ TiaWidget::TiaWidget(GuiObject* boss, int x, int y, int w, int h)
|
||||||
|
|
||||||
// BL delay
|
// BL delay
|
||||||
xpos += mySizeBL->getWidth() + 15;
|
xpos += mySizeBL->getWidth() + 15;
|
||||||
myDelBL = new CheckboxWidget(boss, font, xpos, ypos+1, "Delay", kCheckActionCmd);
|
myDelBL = new CheckboxWidget(boss, font, xpos, ypos+1,
|
||||||
|
"Delay", kCheckActionCmd);
|
||||||
myDelBL->setFont(font);
|
myDelBL->setFont(font);
|
||||||
myDelBL->setTarget(this);
|
myDelBL->setTarget(this);
|
||||||
myDelBL->setID(kDelBLID);
|
myDelBL->setID(kDelBLID);
|
||||||
addFocusWidget(myDelBL);
|
addFocusWidget(myDelBL);
|
||||||
|
|
||||||
|
////////////////////////////
|
||||||
|
// PF 0/1/2 registers
|
||||||
|
////////////////////////////
|
||||||
|
// PF0
|
||||||
|
xpos = 10; ypos += 2*lineHeight;
|
||||||
|
t = new StaticTextWidget(boss, xpos, ypos+2,
|
||||||
|
4*fontWidth, fontHeight,
|
||||||
|
"PF:", kTextAlignLeft);
|
||||||
|
t->setFont(font);
|
||||||
|
xpos += 4*fontWidth;
|
||||||
|
myPF[0] = new TogglePixelWidget(boss, xpos, ypos+2, 4, 1);
|
||||||
|
myPF[0]->setTarget(this);
|
||||||
|
myPF[0]->setID(kPF0ID);
|
||||||
|
addFocusWidget(myPF[0]);
|
||||||
|
|
||||||
|
// PF1
|
||||||
|
xpos += myPF[0]->getWidth() + 2;
|
||||||
|
myPF[1] = new TogglePixelWidget(boss, xpos, ypos+2, 8, 1);
|
||||||
|
myPF[1]->setTarget(this);
|
||||||
|
myPF[1]->setID(kPF1ID);
|
||||||
|
addFocusWidget(myPF[1]);
|
||||||
|
|
||||||
|
// PF2
|
||||||
|
xpos += myPF[1]->getWidth() + 2;
|
||||||
|
myPF[2] = new TogglePixelWidget(boss, xpos, ypos+2, 8, 1);
|
||||||
|
myPF[2]->setTarget(this);
|
||||||
|
myPF[2]->setID(kPF2ID);
|
||||||
|
addFocusWidget(myPF[2]);
|
||||||
|
|
||||||
|
// PF reflect, score, priority
|
||||||
|
xpos = 10 + 4*fontWidth; ypos += lineHeight + 2;
|
||||||
|
myRefPF = new CheckboxWidget(boss, font, xpos, ypos+1,
|
||||||
|
"Reflect", kCheckActionCmd);
|
||||||
|
myRefPF->setFont(font);
|
||||||
|
myRefPF->setTarget(this);
|
||||||
|
myRefPF->setID(kRefPFID);
|
||||||
|
addFocusWidget(myRefPF);
|
||||||
|
|
||||||
|
xpos += myRefPF->getWidth() + 15;
|
||||||
|
myScorePF = new CheckboxWidget(boss, font, xpos, ypos+1,
|
||||||
|
"Score", kCheckActionCmd);
|
||||||
|
myScorePF->setFont(font);
|
||||||
|
myScorePF->setTarget(this);
|
||||||
|
myScorePF->setID(kScorePFID);
|
||||||
|
addFocusWidget(myScorePF);
|
||||||
|
|
||||||
|
xpos += myScorePF->getWidth() + 15;
|
||||||
|
myPriorityPF = new CheckboxWidget(boss, font, xpos, ypos+1,
|
||||||
|
"Priority", kCheckActionCmd);
|
||||||
|
myPriorityPF->setFont(font);
|
||||||
|
myPriorityPF->setTarget(this);
|
||||||
|
myPriorityPF->setID(kPriorityPFID);
|
||||||
|
addFocusWidget(myPriorityPF);
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
@ -757,13 +835,23 @@ void TiaWidget::handleCommand(CommandSender* sender, int cmd, int data, int id)
|
||||||
switch(id)
|
switch(id)
|
||||||
{
|
{
|
||||||
case kGRP0ID:
|
case kGRP0ID:
|
||||||
value = convertBoolToInt(myGRP0->getState());
|
tia.grP0(myGRP0->getIntState());
|
||||||
tia.grP0(value);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case kGRP1ID:
|
case kGRP1ID:
|
||||||
value = convertBoolToInt(myGRP1->getState());
|
tia.grP1(myGRP1->getIntState());
|
||||||
tia.grP1(value);
|
break;
|
||||||
|
|
||||||
|
case kPF0ID:
|
||||||
|
tia.pf0(myPF[0]->getIntState());
|
||||||
|
break;
|
||||||
|
|
||||||
|
case kPF1ID:
|
||||||
|
tia.pf1(myPF[1]->getIntState());
|
||||||
|
break;
|
||||||
|
|
||||||
|
case kPF2ID:
|
||||||
|
tia.pf2(myPF[2]->getIntState());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -873,6 +961,18 @@ void TiaWidget::handleCommand(CommandSender* sender, int cmd, int data, int id)
|
||||||
case kResMP1ID:
|
case kResMP1ID:
|
||||||
tia.resMP1(myResMP1->getState() ? 1 : 0);
|
tia.resMP1(myResMP1->getState() ? 1 : 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case kRefPFID:
|
||||||
|
tia.refPF(myRefPF->getState() ? 1 : 0);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case kScorePFID:
|
||||||
|
tia.scorePF(myScorePF->getState() ? 1 : 0);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case kPriorityPFID:
|
||||||
|
tia.priorityPF(myPriorityPF->getState() ? 1 : 0);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -881,7 +981,7 @@ void TiaWidget::handleCommand(CommandSender* sender, int cmd, int data, int id)
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void TiaWidget::loadConfig()
|
void TiaWidget::loadConfig()
|
||||||
{
|
{
|
||||||
cerr << "TiaWidget::loadConfig()\n";
|
//cerr << "TiaWidget::loadConfig()\n";
|
||||||
fillGrid();
|
fillGrid();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -945,10 +1045,8 @@ void TiaWidget::fillGrid()
|
||||||
// P0 register info
|
// P0 register info
|
||||||
////////////////////////////
|
////////////////////////////
|
||||||
// grP0
|
// grP0
|
||||||
blist.clear();
|
|
||||||
convertCharToBool(blist, state.gr[P0]);
|
|
||||||
myGRP0->setState(blist);
|
|
||||||
myGRP0->setColor((OverlayColor)state.coluRegs[0]);
|
myGRP0->setColor((OverlayColor)state.coluRegs[0]);
|
||||||
|
myGRP0->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]);
|
||||||
|
@ -968,10 +1066,8 @@ void TiaWidget::fillGrid()
|
||||||
// P1 register info
|
// P1 register info
|
||||||
////////////////////////////
|
////////////////////////////
|
||||||
// grP1
|
// grP1
|
||||||
blist.clear();
|
|
||||||
convertCharToBool(blist, state.gr[P1]);
|
|
||||||
myGRP1->setState(blist);
|
|
||||||
myGRP1->setColor((OverlayColor)state.coluRegs[1]);
|
myGRP1->setColor((OverlayColor)state.coluRegs[1]);
|
||||||
|
myGRP1->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]);
|
||||||
|
@ -1041,32 +1137,29 @@ void TiaWidget::fillGrid()
|
||||||
// vdelBL
|
// vdelBL
|
||||||
myDelBL->setState(tia.vdelBL());
|
myDelBL->setState(tia.vdelBL());
|
||||||
|
|
||||||
}
|
////////////////////////////
|
||||||
|
// PF register info
|
||||||
|
////////////////////////////
|
||||||
|
// PF0
|
||||||
|
myPF[0]->setColor((OverlayColor)state.coluRegs[2]);
|
||||||
|
myPF[0]->setIntState(state.pf[0], true); // reverse bit order
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// PF1
|
||||||
void TiaWidget::convertCharToBool(BoolArray& b, unsigned char value)
|
myPF[1]->setColor((OverlayColor)state.coluRegs[2]);
|
||||||
{
|
myPF[1]->setIntState(state.pf[1], false);
|
||||||
for(unsigned int i = 0; i < 8; ++i)
|
|
||||||
{
|
|
||||||
if(value & (1<<(7-i)))
|
|
||||||
b.push_back(true);
|
|
||||||
else
|
|
||||||
b.push_back(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// PF2
|
||||||
int TiaWidget::convertBoolToInt(const BoolArray& b)
|
myPF[2]->setColor((OverlayColor)state.coluRegs[2]);
|
||||||
{
|
myPF[2]->setIntState(state.pf[2], true); // reverse bit order
|
||||||
unsigned int value = 0, size = b.size();
|
|
||||||
|
|
||||||
for(unsigned int i = 0; i < size; ++i)
|
// Reflect
|
||||||
{
|
myRefPF->setState(tia.refPF());
|
||||||
if(b[i])
|
|
||||||
value |= 1<<(size-i-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
return value;
|
// Score
|
||||||
|
myScorePF->setState(tia.scorePF());
|
||||||
|
|
||||||
|
// Priority
|
||||||
|
myPriorityPF->setState(tia.priorityPF());
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
// See the file "license" for information on usage and redistribution of
|
// See the file "license" for information on usage and redistribution of
|
||||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
//
|
//
|
||||||
// $Id: TiaWidget.hxx,v 1.8 2005-08-19 15:05:09 stephena Exp $
|
// $Id: TiaWidget.hxx,v 1.9 2005-08-19 23:02:08 stephena Exp $
|
||||||
//
|
//
|
||||||
// Based on code from ScummVM - Scumm Interpreter
|
// Based on code from ScummVM - Scumm Interpreter
|
||||||
// Copyright (C) 2002-2004 The ScummVM project
|
// Copyright (C) 2002-2004 The ScummVM project
|
||||||
|
@ -101,6 +101,11 @@ class TiaWidget : public Widget, public CommandSender
|
||||||
|
|
||||||
/** Collision register bits */
|
/** Collision register bits */
|
||||||
CheckboxWidget* myCollision[15];
|
CheckboxWidget* myCollision[15];
|
||||||
|
|
||||||
|
TogglePixelWidget* myPF[3];
|
||||||
|
CheckboxWidget* myRefPF;
|
||||||
|
CheckboxWidget* myScorePF;
|
||||||
|
CheckboxWidget* myPriorityPF;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
// See the file "license" for information on usage and redistribution of
|
// See the file "license" for information on usage and redistribution of
|
||||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
//
|
//
|
||||||
// $Id: TogglePixelWidget.cxx,v 1.1 2005-08-19 15:05:09 stephena Exp $
|
// $Id: TogglePixelWidget.cxx,v 1.2 2005-08-19 23:02:09 stephena Exp $
|
||||||
//
|
//
|
||||||
// Based on code from ScummVM - Scumm Interpreter
|
// Based on code from ScummVM - Scumm Interpreter
|
||||||
// Copyright (C) 2002-2004 The ScummVM project
|
// Copyright (C) 2002-2004 The ScummVM project
|
||||||
|
@ -58,6 +58,57 @@ void TogglePixelWidget::setState(const BoolArray& state)
|
||||||
setDirty(); draw();
|
setDirty(); draw();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
void TogglePixelWidget::setIntState(int value, bool swap)
|
||||||
|
{
|
||||||
|
unsigned int size = _rows * _cols;
|
||||||
|
_swapBits = swap;
|
||||||
|
|
||||||
|
// Create array of required size
|
||||||
|
BoolArray b;
|
||||||
|
while(b.size() < size)
|
||||||
|
b.push_back(false);
|
||||||
|
|
||||||
|
// Bits in an int increase from right to left, but a BoolArray
|
||||||
|
// is scanned from left to right.
|
||||||
|
//
|
||||||
|
// Swap off means treat the above as normal (ie, contruct the
|
||||||
|
// BoolArray as we read the int from right to left).
|
||||||
|
//
|
||||||
|
// Swap on means reverse of swap off! Sorry if this is
|
||||||
|
// confusing.
|
||||||
|
for(unsigned int i = 0; i < size; ++i)
|
||||||
|
{
|
||||||
|
bool bitIsSet = value & (1 << i);
|
||||||
|
if(_swapBits)
|
||||||
|
b[i] = bitIsSet;
|
||||||
|
else
|
||||||
|
b[size-i-1] = bitIsSet;
|
||||||
|
}
|
||||||
|
|
||||||
|
setState(b);
|
||||||
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
int TogglePixelWidget::getIntState()
|
||||||
|
{
|
||||||
|
// Construct int based on current state and swap
|
||||||
|
unsigned int value = 0, size = _stateList.size();
|
||||||
|
|
||||||
|
for(unsigned int i = 0; i < size; ++i)
|
||||||
|
{
|
||||||
|
if(_stateList[i])
|
||||||
|
{
|
||||||
|
if(_swapBits)
|
||||||
|
value |= 1 << i;
|
||||||
|
else
|
||||||
|
value |= 1 << (size-i-1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void TogglePixelWidget::drawWidget(bool hilite)
|
void TogglePixelWidget::drawWidget(bool hilite)
|
||||||
{
|
{
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
// See the file "license" for information on usage and redistribution of
|
// See the file "license" for information on usage and redistribution of
|
||||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
//
|
//
|
||||||
// $Id: TogglePixelWidget.hxx,v 1.1 2005-08-19 15:05:09 stephena Exp $
|
// $Id: TogglePixelWidget.hxx,v 1.2 2005-08-19 23:02:09 stephena Exp $
|
||||||
//
|
//
|
||||||
// Based on code from ScummVM - Scumm Interpreter
|
// Based on code from ScummVM - Scumm Interpreter
|
||||||
// Copyright (C) 2002-2004 The ScummVM project
|
// Copyright (C) 2002-2004 The ScummVM project
|
||||||
|
@ -35,11 +35,16 @@ class TogglePixelWidget : public ToggleWidget
|
||||||
void setColor(OverlayColor color) { _pixelColor = color; }
|
void setColor(OverlayColor color) { _pixelColor = color; }
|
||||||
void setState(const BoolArray& state);
|
void setState(const BoolArray& state);
|
||||||
|
|
||||||
|
void setIntState(int value, bool swap);
|
||||||
|
int getIntState();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void drawWidget(bool hilite);
|
void drawWidget(bool hilite);
|
||||||
|
|
||||||
protected:
|
private:
|
||||||
OverlayColor _pixelColor;
|
OverlayColor _pixelColor;
|
||||||
|
unsigned int _numBits;
|
||||||
|
bool _swapBits;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue