mirror of
https://github.com/bsnes-emu/bsnes.git
synced 2025-02-23 22:52:34 +01:00
byuu says: Changelog: - restructured the project and removed a whole bunch of old/dead directives from higan/GNUmakefile - huge amounts of work on hiro/cocoa (compiles but ~70% of the functionality is commented out) - fixed a masking error in my ARM CPU disassembler [Lioncash] - SFC: decided to change board cic=(411,413) back to board region=(ntsc,pal) ... the former was too obtuse If you rename Boolean (it's a problem with an include from ruby, not from hiro) and disable all the ruby drivers, you can compile an OS X binary, but obviously it's not going to do anything. It's a boring WIP, I just wanted to push out the project structure change now at the start of this WIP cycle.
59 lines
1.2 KiB
C++
59 lines
1.2 KiB
C++
auto APU::Triangle::clock_length() -> void {
|
|
if(halt_length_counter == 0) {
|
|
if(length_counter > 0) length_counter--;
|
|
}
|
|
}
|
|
|
|
auto APU::Triangle::clock_linear_length() -> void {
|
|
if(reload_linear) {
|
|
linear_length_counter = linear_length;
|
|
} else if(linear_length_counter) {
|
|
linear_length_counter--;
|
|
}
|
|
|
|
if(halt_length_counter == 0) reload_linear = false;
|
|
}
|
|
|
|
auto APU::Triangle::clock() -> uint8 {
|
|
uint8 result = step_counter & 0x0f;
|
|
if((step_counter & 0x10) == 0) result ^= 0x0f;
|
|
if(length_counter == 0 || linear_length_counter == 0) return result;
|
|
|
|
if(--period_counter == 0) {
|
|
step_counter++;
|
|
period_counter = period + 1;
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
auto APU::Triangle::power() -> void {
|
|
reset();
|
|
}
|
|
|
|
auto APU::Triangle::reset() -> void {
|
|
length_counter = 0;
|
|
|
|
linear_length = 0;
|
|
halt_length_counter = 0;
|
|
period = 0;
|
|
period_counter = 1;
|
|
step_counter = 0;
|
|
linear_length_counter = 0;
|
|
reload_linear = 0;
|
|
}
|
|
|
|
auto APU::Triangle::serialize(serializer& s) -> void {
|
|
s.integer(length_counter);
|
|
|
|
s.integer(linear_length);
|
|
s.integer(halt_length_counter);
|
|
|
|
s.integer(period);
|
|
s.integer(period_counter);
|
|
|
|
s.integer(step_counter);
|
|
s.integer(linear_length_counter);
|
|
s.integer(reload_linear);
|
|
}
|