新手入门
- 积分
- 2
- 金钱
- 2
- 注册时间
- 2025-9-25
- 在线时间
- 0 小时
|
本帖最后由 宅宅宅男 于 2025-9-27 22:13 编辑
接楼上2、加上了APU,还沿用原来的时间控制框架,音频数据的生成明显比播放快,数据buffer还没发出去就溢出,然后被新数据覆盖了,导致声音效果很差
3、尝试去掉了时间控制,在音频数据满的时候死等播放完成,这样子声音没问题,但帧率又掉下来了,画面没有之前流畅,
想问一下这要怎么处理呢,主循环框架看下面
gb_init();
gb_card_open(file);
boot_rom_load();
gb_cpu_init();
gb_timer_init();
gb_joypad_init();
gb_mbc_init();
gb_ppu_init();
gb_apu_init();
gb.delay = 0;
gb.running = 1;
gb.next_tick = micros() + GB_FRAME;
gb_ppu.skip = GB_SKIP_FRAME;
for (;;)
{
gb_cpu_step(2280);
while ((GB_REG_LY > 0) && (GB_REG_LY < 144))
{
gb_cpu_step(gb_ppu.tick);
}
// if (time(0) > gb_rtc.sys_time)
// {
// gb_rtc.sys_time = time(0);
// gb_rtc_tick();
// }
gb_apu_mixer();
if (!(GB_REG_LCDC & 0x80))
{
gb_cpu_step(32832);
}
while (GB_REG_LY > 0)
{
gb_cpu_step(gb_ppu.tick);
}
#if GB_SKIP_FRAME
if (++gb_ppu.skip >= GB_SKIP_FRAME)
{
gb_ppu.skip = 0;
}
#endif
while(micros() < gb.next_tick);
gb.next_tick = micros() + GB_FRAME;
}
|
|