Add print audio buffer, audio still broken

This commit is contained in:
meepingsnesroms
2018-10-16 17:33:46 -07:00
parent ed5f2549e7
commit 42f5a7d8e5
4 changed files with 70 additions and 38 deletions

View File

@@ -45,16 +45,19 @@ int64_t DebugViewer::numberFromString(QString str, bool negativeAllowed){
}
QString DebugViewer::stringFromNumber(int64_t number, bool hex, uint32_t forcedZeros){
if(hex){
QString hexString;
QString numString;
hexString += QString::number(number, 16).toUpper();
while(hexString.length() < (int)forcedZeros)hexString.push_front("0");
hexString.push_front("0x");
return hexString;
if(hex){
numString += QString::number(number, 16).toUpper();
while(numString.length() < (int)forcedZeros)numString.push_front("0");
numString.push_front("0x");
}
else{
numString += QString::number(number, 10);
while(numString.length() < (int)forcedZeros)numString.push_front("0");
}
return QString::number(number, 10);
return numString;
}
void DebugViewer::debugRadioButtonHandler(){
@@ -137,6 +140,15 @@ void DebugViewer::on_debugDump_clicked(){
}
}
void DebugViewer::on_debugPrintAudioBuffer_clicked(){
EmuWrapper& emu = ((MainWindow*)parentWidget())->emu;
const int16_t* samples = emu.getAudioSamples();
ui->debugValueList->clear();
for(uint32_t index = 0; index < AUDIO_SAMPLES_PER_FRAME * 2; index++)
ui->debugValueList->addItem(stringFromNumber(index, false, 5) + ":" + stringFromNumber(samples[index], false, 5));
}
void DebugViewer::on_debugShowRegisters_clicked(){
std::vector<uint32_t> registers = ((MainWindow*)parentWidget())->emu.getCpuRegisters();

View File

@@ -30,6 +30,7 @@ private slots:
void on_debug32Bit_clicked();
void on_debugDump_clicked();
void on_debugPrintAudioBuffer_clicked();
void on_debugShowRegisters_clicked();
void on_debugPrintDebugLogs_clicked();
void on_debugEraseDebugLogs_clicked();

View File

@@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>578</width>
<height>359</height>
<width>548</width>
<height>393</height>
</rect>
</property>
<property name="sizePolicy">
@@ -45,23 +45,6 @@
</sizepolicy>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="2" column="2">
<widget class="QRadioButton" name="debug16Bit">
<property name="text">
<string>16bit</string>
</property>
</widget>
</item>
<item row="6" column="1" colspan="3">
<widget class="QPushButton" name="debugShowRegisters">
<property name="text">
<string>Show Registers</string>
</property>
<property name="autoDefault">
<bool>false</bool>
</property>
</widget>
</item>
<item row="5" column="1" colspan="3">
<widget class="QPushButton" name="debugGetHexValues">
<property name="text">
@@ -72,7 +55,24 @@
</property>
</widget>
</item>
<item row="0" column="0" rowspan="10">
<item row="2" column="2">
<widget class="QRadioButton" name="debug16Bit">
<property name="text">
<string>16bit</string>
</property>
</widget>
</item>
<item row="7" column="1" colspan="3">
<widget class="QPushButton" name="debugShowRegisters">
<property name="text">
<string>Show Registers</string>
</property>
<property name="autoDefault">
<bool>false</bool>
</property>
</widget>
</item>
<item row="0" column="0" rowspan="11">
<widget class="QListWidget" name="debugValueList"/>
</item>
<item row="4" column="1" colspan="3">
@@ -82,7 +82,7 @@
</property>
</widget>
</item>
<item row="7" column="1" colspan="3">
<item row="8" column="1" colspan="3">
<widget class="QPushButton" name="debugPrintDebugLogs">
<property name="text">
<string>Print Debug Logs</string>
@@ -92,7 +92,7 @@
</property>
</widget>
</item>
<item row="8" column="1" colspan="3">
<item row="9" column="1" colspan="3">
<widget class="QPushButton" name="debugEraseDebugLogs">
<property name="text">
<string>Erase Debug Logs</string>
@@ -102,7 +102,7 @@
</property>
</widget>
</item>
<item row="9" column="1" colspan="3">
<item row="10" column="1" colspan="3">
<widget class="QPushButton" name="debugDump">
<property name="text">
<string>Dump To File</string>
@@ -140,6 +140,13 @@
</property>
</widget>
</item>
<item row="6" column="1" colspan="3">
<widget class="QPushButton" name="debugPrintAudioBuffer">
<property name="text">
<string>Print Last Frame Audio Buffer</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>

View File

@@ -605,16 +605,28 @@ void setHwRegister8(uint32_t address, uint8_t value){
case PWMS1 + 1:
//write only if PWM1 and FIFOAV are set and a slot is available
if((registerArrayRead16(PWMC1) & 0x0030) == 0x0030){
/*
uint32_t audioNow = audioGetFramePercentage();
uint32_t audioSampleDuration = 0;
uint32_t audioDutyCycle = 0;
uint16_t pwmc1 = registerArrayRead16(PWMC1);
for(uint8_t times = 0; times < repeat; times++){
blip_add_delta(palmAudioResampler, audioGetFramePercentage())
if(!(pwmc1 & 0x8000)){
//SYSCLK
uint8_t prescaler = (pwmc1 >> 8 & 0x7F) + 1;
uint8_t clockDivider = 2 << (pwmc1 & 0x03);
uint8_t repeat = 1 << (pwmc1 >> 2 & 0x03);
double dutyCycle = dMin((double)value / (registerArrayRead8(PWMP1) + 2), 1.0);
uint32_t audioNow = audioGetFramePercentage();
uint32_t audioSampleDuration = prescaler * clockDivider;
uint32_t audioDutyCycle = audioSampleDuration * dutyCycle;
for(uint8_t times = 0; times < repeat; times++){
blip_add_delta(palmAudioResampler, audioNow, 0x6666);
blip_add_delta(palmAudioResampler, audioNow + audioDutyCycle, -0x6666);
audioNow += audioSampleDuration;
}
}
else{
//CLK32
}
*/
//empty
}
break;