Полный текст

С Go на C++ за две недели: переписываем эмулятор ZX SpectrumЭмулятор ZX Spectrum на Go вроде бы работал, но страдал фундаментальной проблемой — плавающими лагами. Нажимаешь клавишу, а реакция запаздывает, причём непредсказуемо. Виной всему, похоже, каналы Go, которые совершенно не годятся для жёсткой, потактовой синхронизации, критичной для эмуляции. Было принято волевое решение переписать всё на C++.Новый эмулятор тут же встретил «болями и страданиями»: C++-версия оказалась медленнее (!), чем Go, тесты FUSE и zexall падали в странных местах, а диагностический ROM упорно ругался на битые микросхемы памяти, которой в эмуляторе просто нет. Погрузимся в этот дневник «переписчика» и проследим за отладкой таймингов ULA и поиском ошибок в тестах.