Skip to content

Commit a7d01bb

Browse files
authored
Merge pull request #1990 from CloudMracek/main
Fixed SPU code on real hardware
2 parents 593f94c + 0b31743 commit a7d01bb

1 file changed

Lines changed: 10 additions & 10 deletions

File tree

src/mips/psyqo/src/spu.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ void psyqo::SPU::silenceChannels(const uint32_t channelMask) {
6464
}
6565
SPU_VOICES[channel].volumeLeft = 0;
6666
SPU_VOICES[channel].volumeRight = 0;
67-
SPU_VOICES[channel].sampleRate = 0;
67+
SPU_VOICES[channel].sampleRate = 0x1000;
6868
SPU_VOICES[channel].sampleStartAddr = DUMMY_SAMPLE_POSITION / 8;
6969
SPU_VOICES[channel].sampleRepeatAddr = DUMMY_SAMPLE_POSITION / 8;
7070
}
@@ -89,8 +89,8 @@ void psyqo::SPU::initialize() {
8989

9090
SPU_CTRL = 0;
9191

92-
SPU_VOL_MAIN_LEFT = 0x7fff;
93-
SPU_VOL_MAIN_RIGHT = 0x7fff;
92+
SPU_VOL_MAIN_LEFT = 0x3fff;
93+
SPU_VOL_MAIN_RIGHT = 0x3fff;
9494
SPU_REVERB_LEFT = 0;
9595
SPU_REVERB_RIGHT = 0;
9696

@@ -107,10 +107,10 @@ void psyqo::SPU::initialize() {
107107
SPU_VOL_EXT_RIGHT = 0;
108108
SPU_RAM_DTC = 4;
109109

110-
dmaWrite(DUMMY_SAMPLE_POSITION, &DUMMY_SAMPLE, DUMMY_SAMPLE_SIZE, 4);
111-
112110
SPU_CTRL = 1 << 15 | 1 << 14 | 1 << 6;
113111

112+
dmaWrite(DUMMY_SAMPLE_POSITION, &DUMMY_SAMPLE, DUMMY_SAMPLE_SIZE, 4);
113+
114114
silenceChannels(0xffffffff);
115115
}
116116

@@ -119,9 +119,9 @@ void psyqo::SPU::playADPCM(const uint8_t channelId, const uint16_t spuRamAddress
119119
Kernel::assert(channelId < 24, "Invalid SPU channel ID");
120120
if (hardCut) {
121121
if (channelId > 15) {
122-
SPU_KEY_OFF_HIGH |= 1 << (channelId - 16);
122+
SPU_KEY_OFF_HIGH = 1 << (channelId - 16);
123123
} else {
124-
SPU_KEY_OFF_LOW |= 1 << (channelId);
124+
SPU_KEY_OFF_LOW = 1 << (channelId);
125125
}
126126
}
127127

@@ -133,9 +133,9 @@ void psyqo::SPU::playADPCM(const uint8_t channelId, const uint16_t spuRamAddress
133133
SPU_VOICES[channelId].sr = (config.adsr >> 16) & 0xffff;
134134

135135
if (channelId > 15) {
136-
SPU_KEY_ON_HIGH |= 1 << (channelId - 16);
136+
SPU_KEY_ON_HIGH = 1 << (channelId - 16);
137137
} else {
138-
SPU_KEY_ON_LOW |= 1 << (channelId);
138+
SPU_KEY_ON_LOW = 1 << (channelId);
139139
}
140140
}
141141

@@ -146,4 +146,4 @@ uint32_t psyqo::SPU::getNextFreeChannel() {
146146
}
147147
}
148148
return NO_FREE_CHANNEL;
149-
}
149+
}

0 commit comments

Comments
 (0)