Чип 8 LD Vx, K (Fx0A) поведение кода операции

Недавно я решил сделать еще один удар по эмуляции Chip8. Я читал технический справочник Cowgod и заметил небольшую двусмысленность в отношении поведения кода операции LD Vx, K (Fx0A).

Документация Cowgod гласит, что All execution stops until a key is pressed, но не уточняет, влияет ли это на поведение регистров таймера.

Кто-нибудь может прояснить уменьшение регистров таймера и выполнение основной программы, считающееся асинхронным? т.е. должны ли таймеры продолжать обратный отсчет, пока основное исполнение ожидает нажатия клавиши, или таймеры также должны ожидать нажатия клавиши, прежде чем продолжить уменьшение?

Моя интуиция говорит, что синхронизация должна продолжаться независимо, как это было бы, если бы таймеры были теоретически частью отдельной цепи, однако также может быть желательным, чтобы таймеры ожидали (то есть, чтобы зуммер продолжал звучать, пока пользователь не нажмет какую-либо клавишу), поэтому я решили спросить, а не предполагать.

1 ответ

Таймеры, как правило, являются счетчиками, независимыми от активности процессора, не имеющими к ним прямого отношения.

Я согласен с вами, что утверждение Cowgoods "Все выполнение прекращается до нажатия клавиши" может быть истолковано как означающее, что таймеры останавливаются, но это будет противоречить общепринятым проектам. Никакая другая документация по Chip-8, которую я просматривал, не делала подобного заявления.

Я бы предположил, что таймеры продолжают работать в ожидании пользовательского ввода.

Я уверен, что есть (многие?) Другие эмуляторы Chip-8 в сети. Вы можете проверить их исходный код, чтобы увидеть, что они делают.

Другие вопросы по тегам