| @@ -289,8 +289,6 @@ nes_apu_Result nes_apu_run(nes_apu* apu, int cycles) { | |||||
| if (1 == apu->frame) { | if (1 == apu->frame) { | ||||
| half_clock = 1; | half_clock = 1; | ||||
| } else if (0 == apu->frame && 0 == apu->frame_reg) { | |||||
| apu->status |= apu_Status_Frame_Int; | |||||
| } | } | ||||
| if (apu->frame_reg & apu_Frame_Mode) { | if (apu->frame_reg & apu_Frame_Mode) { | ||||
| @@ -328,8 +326,14 @@ nes_apu_Result nes_apu_run(nes_apu* apu, int cycles) { | |||||
| */ | */ | ||||
| } | } | ||||
| if (end) apu->frame = 0; | |||||
| else apu->frame++; | |||||
| if (end) { | |||||
| apu->frame = 0; | |||||
| if (0 == apu->frame_reg) { | |||||
| apu->status |= apu_Status_Frame_Int; | |||||
| } | |||||
| } else { | |||||
| apu->frame++; | |||||
| } | |||||
| } | } | ||||
| cycles -= run; | cycles -= run; | ||||