Да, но здесь не тот случай. До меня почему-то сразу не могло дойти, что порты A, B и C соединены друг с другом через клавиатуру. И в случае с бегущим нулём мы программируем один порт на ввод, а второй на вывод. После чего отправляем в порт байт и ловим его на другом порту. Если кнопки нажаты не были, то байт приходит неизменным, а если нажимались, то соответствующий бит изменяется. Вот и вся премудрость. Но у меня в эмуляторе пока реализовано только считывание данных с портов. Таким образом метод бегущего нуля пока не работает.
Да, никакую задержку я осознанно не ставил, так как замедлять тут нечего - чем быстрее работает скрипт, тем неограниченно быстрее будет крутиться эмулятор. В холостую тут ничего не крутится и процессор больше положенного не грузит. В настоящий момент на моих компьютерах эмулятор не догоняет по скорости реальный Специалист.
Да, ничего не скажешь, элегантно получилось. Я с pygame вообще не знаком, поэтому о таком трюке даже не подозревал, но нутром чувствовал, что точками рисовать - это очень медленно. Получилось быстрее моего способа, несмотря на то, что у тебя выводится каждый кадр, даже если на нём и не было никаких изменений. Используя твой способ, я попробовал обновлять экран только в случае изменений на нём, но скорости это практически не добавило, хотя в сцене из ZOO можно пропустить порядка 1500 кадров, которые не имеют отличий. Всё сжирают проверки изменений. Однако, существенный минус твоего способа для меня лично состоит в дополнительном использовании numpy. Мне хотелось обойтись только одной внешней библиотекой pygame.
В общем, svofski, спасибо, что заморочился и помогаешь улучшить скрипт!

