- [FIX] El envelope timer no es resetejava al fer trigger
- [FIX] El divisor del CH4 anava massa rapid
This commit is contained in:
12
APU.cpp
12
APU.cpp
@@ -147,7 +147,7 @@ namespace APU
|
||||
CH1.enabled = true;
|
||||
CH1.length_timer=NR11&0x3f;
|
||||
CH1.period_divider = NR13 | ((NR14 &0x7)<<8);
|
||||
// envelope timer is reset
|
||||
CH1.envelope_sweep_timer = 0;
|
||||
CH1.volume = NR12>>4;
|
||||
// sweep does several things (check documentation)
|
||||
}
|
||||
@@ -157,7 +157,7 @@ namespace APU
|
||||
CH2.enabled = true;
|
||||
CH2.length_timer=NR21&0x3f;
|
||||
CH2.period_divider = NR23 | ((NR24 &0x7)<<8);
|
||||
// envelope timer is reset
|
||||
CH2.envelope_sweep_timer = 0;
|
||||
CH2.volume = NR22>>4;
|
||||
// sweep does several things (check documentation)
|
||||
}
|
||||
@@ -167,7 +167,7 @@ namespace APU
|
||||
CH3.enabled = true;
|
||||
CH3.length_timer=NR31;
|
||||
CH3.period_divider = NR33 | ((NR34 &0x7)<<8);
|
||||
// envelope timer is reset
|
||||
CH3.envelope_sweep_timer = 0;
|
||||
CH3.volume = (NR32>>5)&0x3;
|
||||
// sweep does several things (check documentation)
|
||||
}
|
||||
@@ -178,7 +178,7 @@ namespace APU
|
||||
CH4.length_timer=NR41&0x3f;
|
||||
uint8_t clock_shift = ((NR43&0xf0)>>4);// if (clock_shift==0) clock_shift = 1;
|
||||
CH4.period_divider = clock_shift << (NR43&0x07);
|
||||
// envelope timer is reset
|
||||
CH4.envelope_sweep_timer = 0;
|
||||
CH4.volume = NR42>>4;
|
||||
// sweep does several things (check documentation)
|
||||
}
|
||||
@@ -403,8 +403,8 @@ namespace APU
|
||||
}
|
||||
}
|
||||
dotsCH4 += dt;
|
||||
while (dotsCH4>=16) {
|
||||
dotsCH4 -= 16;
|
||||
while (dotsCH4>=64) {
|
||||
dotsCH4 -= 64;
|
||||
CH4.period_divider--;
|
||||
if (CH4.period_divider==0) {
|
||||
uint8_t clock_shift = ((NR43&0xf0)>>3); if (clock_shift==0) clock_shift = 1;
|
||||
|
||||
Reference in New Issue
Block a user