Шах и мат, вся суть в последних двух предложениях. Вот из-за таких необходимых решений (но по сути отебятина), которые в эмуляторах консолей шестого поколения штампуются годами миллион раз ради скорости - эмулятор остаётся эмулятором, как тут любят говорить запускатором и имитатором, а не 100% совместимым и быть не может.
Во-первых, не каждая отсебятина является несовместимой. Если тот же стек имеет размер 48 байт, врядли на этом компе есть хоть одна программа, которая рискнет использовать больше, так что для программ 48 или 64 - нет никакой разницы, а программисту не надо использовать условие, которое медленно, а достаточно отмаскировать биты при доступе в общем случае. Уж не знаю, ради чего это было на хабре сделано, но там логику лучше не искать, там контингент и так специфичный лол, а вот в "эмуляторах консолей шестого поколения" это реально экономит скорость. А обоснованность подобных допущений опять-таки не подлежит сомнению, так как особые случаи врядли можно найти в какой-либо программе, если это не баг эмулятора или самой игры. То есть допущения ничего не меняют в сути эмулятора.
Если говорить о стопроцентном следовании спецификациям и безусловному повторению поведения железа (которое и так в общем-то делается, иначе эмулятор просто не будет работать), то ни один эмулятор ни современных систем, ни даже тех, что постарее, не мулит хотя бы конвейер на армовых или суперскалярных процах. От этого фактически зависит, например, сколько времени исполняется тот или иной код в приставке. Подсчет тактов без эмуляции конвейера сводится к суммированию такта опкода по даташиту, но в общем случае время исполнения конкретного куска кода может сильно от такого подсчета отличаться. Хотя ни одна игра даже не знает о конвейере, некоторые процессы заточены именно под скорость выполнения на реальном проце, например доа2 на дримкасте очень критичен к таймингам фпу опкодов и вообще опкодов, то есть там настолько все на пределе мощности, что на муле ее просто не хватает, потому что муль думает, что код должен выполняться дольше, чем на самом деле.
И вот мы пришли к вопросу, который уже обсуждался, а какой вой поднимется, если эмуль будет мулить все на 100 процентов, но показывать 4 фпса в секунду лол.
К слову не каждый современный эмулятор NES обладает 100% совместимостью и отсутствию проблем без специальных настроек под отдельные игры или уже встроенных внутри него фиксов под известные проблемы (подразумеваю те же нерешенные вопросы как быть с переполнением экрана спрайтами, там и реальная приставка глючит своеобразно), лидирует вроде бы nestopia да и то не уверен что она идеальна во всём до сих пор.
Еще одно смелое экспертное утверждение от человека, не понимающего сути вопроса лол Проблем с переполнением экрана спрайтами нет, не было и никогда не бывает. Спрайтов всего 64 и все они могут быть одновременно на экране, но не более 8 спрайтов на одной строке одновременно. Это ведет к специфическому их поведению на экране, но этот процесс и его последствия мало того, что хорошо известны и изучены, эмулируются всеми без исключения эмуляторами, а некоторые игры на основе такого специфического поведения делают специальные эффекты, без которых игры будут выглядеть неправильно (нинжа гайден первый на заставке). В том числе любой мумулятор позволяет это дело отключать и насладиться как отсутствием мерцания, так и наличием глюков. Не понимаю, как после такого, от тебя можно слушатьэкспертные заявления по другим более сложным консолям лол
К слову сказать, чтобы сделать эмулятор неса 100 процентно совместимым, надо не только эмулировать процессор на уровне подтактов, которых там целых три и их эмуляция сродни эмуляции конвейера, но еще и иметь потактовую точность синхронизации CPU и PPU и эмулировать все на уровне сигналов, а не условных адресов и областей памяти, а самое сложное - такая же потактовая точность и нужна для эмуляции мапперов, о начинке которых, в отличие от самой денди, во многих случаях вообще ничего неизвестно и все они мулятся как черные ящики. И все это, как ни странно, требует не меньших мощностей отпроца, чем мумуляция зы2, так что врядли кто-то будет в это уже играть в ближайшее время, особенно из разряда сидящих на допотопных мамонтах...