mirror of https://github.com/stella-emu/stella.git
effective volume to audio widget added
fixed parser return value for "$a"
This commit is contained in:
parent
6c210a9f43
commit
b6fa51d97b
|
@ -806,11 +806,13 @@ reflecting this result.</p>
|
||||||
<br>
|
<br>
|
||||||
<h2><u>(D)</u> Audio Tab</h2>
|
<h2><u>(D)</u> Audio Tab</h2>
|
||||||
|
|
||||||
<p>This tab lets you view the contents of the TIA audio registers. This tab
|
<p>This tab lets you view the contents of the TIA audio registers and the effective
|
||||||
will grow some features in a future release.</p>
|
volume resulting from the two channel volumes.</p>
|
||||||
|
|
||||||
<p><img src="graphics/debugger_audiotab.png"></p>
|
<p><img src="graphics/debugger_audiotab.png"></p>
|
||||||
|
|
||||||
|
<p>This tab will grow some features in a future release.</p>
|
||||||
|
|
||||||
|
|
||||||
<!-- ///////////////////////////////////////////////////////////////////////// -->
|
<!-- ///////////////////////////////////////////////////////////////////////// -->
|
||||||
<br>
|
<br>
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.3 KiB |
|
@ -234,7 +234,7 @@ int DebuggerParser::decipher_arg(const string& str)
|
||||||
|
|
||||||
// Special cases (registers):
|
// Special cases (registers):
|
||||||
const CpuState& state = static_cast<const CpuState&>(debugger.cpuDebug().getState());
|
const CpuState& state = static_cast<const CpuState&>(debugger.cpuDebug().getState());
|
||||||
if(arg == "a") result = state.A;
|
if(arg == "a" && str != "$a") result = state.A;
|
||||||
else if(arg == "x") result = state.X;
|
else if(arg == "x") result = state.X;
|
||||||
else if(arg == "y") result = state.Y;
|
else if(arg == "y") result = state.Y;
|
||||||
else if(arg == "p") result = state.PS;
|
else if(arg == "p") result = state.PS;
|
||||||
|
|
|
@ -22,6 +22,8 @@
|
||||||
#include "Debugger.hxx"
|
#include "Debugger.hxx"
|
||||||
#include "TIADebug.hxx"
|
#include "TIADebug.hxx"
|
||||||
#include "Widget.hxx"
|
#include "Widget.hxx"
|
||||||
|
#include "Base.hxx"
|
||||||
|
using Common::Base;
|
||||||
|
|
||||||
#include "AudioWidget.hxx"
|
#include "AudioWidget.hxx"
|
||||||
|
|
||||||
|
@ -50,7 +52,7 @@ AudioWidget::AudioWidget(GuiObject* boss, const GUI::Font& lfont,
|
||||||
|
|
||||||
for(int col = 0; col < 2; ++col)
|
for(int col = 0; col < 2; ++col)
|
||||||
{
|
{
|
||||||
new StaticTextWidget(boss, lfont, xpos + col * myAudF->colWidth() + (int)(myAudF->colWidth() / 2.5),
|
new StaticTextWidget(boss, lfont, xpos + col * myAudF->colWidth() + (int)(myAudF->colWidth() / 2.75),
|
||||||
ypos - lineHeight, fontWidth, fontHeight,
|
ypos - lineHeight, fontWidth, fontHeight,
|
||||||
Common::Base::toString(col, Common::Base::F_16_1),
|
Common::Base::toString(col, Common::Base::F_16_1),
|
||||||
kTextAlignLeft);
|
kTextAlignLeft);
|
||||||
|
@ -61,8 +63,8 @@ AudioWidget::AudioWidget(GuiObject* boss, const GUI::Font& lfont,
|
||||||
new StaticTextWidget(boss, lfont, xpos, ypos+2, lwidth, fontHeight,
|
new StaticTextWidget(boss, lfont, xpos, ypos+2, lwidth, fontHeight,
|
||||||
"AUDC", kTextAlignLeft);
|
"AUDC", kTextAlignLeft);
|
||||||
xpos += lwidth;
|
xpos += lwidth;
|
||||||
myAudC = new DataGridWidget(boss, nfont, xpos, ypos,
|
myAudC = new DataGridWidget(boss, nfont, xpos + (int)(myAudF->colWidth() / 2.75), ypos,
|
||||||
2, 1, 2, 4, Common::Base::F_16);
|
2, 1, 1, 4, Common::Base::F_16_1);
|
||||||
myAudC->setTarget(this);
|
myAudC->setTarget(this);
|
||||||
myAudC->setID(kAUDCID);
|
myAudC->setID(kAUDCID);
|
||||||
addFocusWidget(myAudC);
|
addFocusWidget(myAudC);
|
||||||
|
@ -72,11 +74,14 @@ AudioWidget::AudioWidget(GuiObject* boss, const GUI::Font& lfont,
|
||||||
new StaticTextWidget(boss, lfont, xpos, ypos+2, lwidth, fontHeight,
|
new StaticTextWidget(boss, lfont, xpos, ypos+2, lwidth, fontHeight,
|
||||||
"AUDV", kTextAlignLeft);
|
"AUDV", kTextAlignLeft);
|
||||||
xpos += lwidth;
|
xpos += lwidth;
|
||||||
myAudV = new DataGridWidget(boss, nfont, xpos, ypos,
|
myAudV = new DataGridWidget(boss, nfont, xpos + (int)(myAudF->colWidth() / 2.75), ypos,
|
||||||
2, 1, 2, 4, Common::Base::F_16);
|
2, 1, 1, 4, Common::Base::F_16_1);
|
||||||
myAudV->setTarget(this);
|
myAudV->setTarget(this);
|
||||||
myAudV->setID(kAUDVID);
|
myAudV->setID(kAUDVID);
|
||||||
addFocusWidget(myAudV);
|
addFocusWidget(myAudV);
|
||||||
|
|
||||||
|
myAudEffV = new StaticTextWidget(boss, lfont, myAudV->getRight() + fontWidth, myAudV->getTop() + 2,
|
||||||
|
"100% (eff. volume)");
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
@ -120,6 +125,17 @@ void AudioWidget::loadConfig()
|
||||||
changed.push_back(state.aud[i] != oldstate.aud[i]);
|
changed.push_back(state.aud[i] != oldstate.aud[i]);
|
||||||
}
|
}
|
||||||
myAudV->setList(alist, vlist, changed);
|
myAudV->setList(alist, vlist, changed);
|
||||||
|
|
||||||
|
handleVolume();
|
||||||
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
void AudioWidget::handleVolume()
|
||||||
|
{
|
||||||
|
stringstream s;
|
||||||
|
|
||||||
|
s << getEffectiveVolume() << "% (eff. volume)";
|
||||||
|
myAudEffV->setLabel(s.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
@ -202,4 +218,18 @@ void AudioWidget::changeVolumeRegs()
|
||||||
instance().debugger().tiaDebug().audV1(value);
|
instance().debugger().tiaDebug().audV1(value);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
handleVolume();
|
||||||
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
uInt32 AudioWidget::getEffectiveVolume()
|
||||||
|
{
|
||||||
|
const int EFF_VOL[] = {
|
||||||
|
0, 6, 13, 18, 24, 29, 33, 38,
|
||||||
|
42, 46, 50, 54, 57, 60, 64, 67,
|
||||||
|
70, 72, 75, 78, 80, 82, 85, 87,
|
||||||
|
89, 91, 93, 95, 97, 98,100};
|
||||||
|
|
||||||
|
return EFF_VOL[instance().debugger().tiaDebug().audV0() +
|
||||||
|
instance().debugger().tiaDebug().audV1()];
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,6 +43,7 @@ class AudioWidget : public Widget, public CommandSender
|
||||||
DataGridWidget* myAudF;
|
DataGridWidget* myAudF;
|
||||||
DataGridWidget* myAudC;
|
DataGridWidget* myAudC;
|
||||||
DataGridWidget* myAudV;
|
DataGridWidget* myAudV;
|
||||||
|
StaticTextWidget* myAudEffV;
|
||||||
|
|
||||||
// Audio channels
|
// Audio channels
|
||||||
enum
|
enum
|
||||||
|
@ -58,6 +59,9 @@ class AudioWidget : public Widget, public CommandSender
|
||||||
void handleCommand(CommandSender* sender, int cmd, int data, int id) override;
|
void handleCommand(CommandSender* sender, int cmd, int data, int id) override;
|
||||||
void loadConfig() override;
|
void loadConfig() override;
|
||||||
|
|
||||||
|
void handleVolume();
|
||||||
|
uInt32 getEffectiveVolume();
|
||||||
|
|
||||||
// Following constructors and assignment operators not supported
|
// Following constructors and assignment operators not supported
|
||||||
AudioWidget() = delete;
|
AudioWidget() = delete;
|
||||||
AudioWidget(const AudioWidget&) = delete;
|
AudioWidget(const AudioWidget&) = delete;
|
||||||
|
|
Loading…
Reference in New Issue