gepar, попытаюсь очень вкратце.
как работают всякие древние эмуляторы: берется код и "крутится" интерпретатором эмулируемого проца, назовем так - "квант времени", обычно 1 кадр, т.е. колво-тактов за 1/50 или 1/60 сек,
затем считывается выдеопамять, регистры GPU и т.п. и рисуется картинка, процесс повторяется.
требования у таких эмулей минимальные, но точность никудышняя из-за большого "кванта" - не учитывается то, что центраьный процессор и все остальные сопроцессор(ы) работают паралельно - то есть в любой момент один из них может куда-то записать данные влияющие на работу других, или наоборот читать какую-то ячейку памяти ожидая данные или сигнал от другого.
типичный случай "растровые эффекты" - когда CPU пишет данные в видеопамять или регистры GPU во время работы последнего (изменяет палитру, карту тайлов итп), при чем в четко определенное время, например когда GPU уже отрисовал пол картинки, в старых эмуляторах мы этих эффектов не увидим, или такие игры вообще не будут работать.
также обычно не учитываются задержки памяти - когда например CPU и GPU обращаются одновременно к одной и той же адресной области, и одно из устройств тормозится пока не освободится шина.
и еще масса других факторов.
и как с этим бороться ? - само собой напрашивается логичное решение - уменьшать этот самый квант времени, в идеале до 1 такта железа/шины.
и вот тут начинается самое интересное - до этого нам достаточно было построить по тайлам и вывести картинку 1 раз в кадр, но сейчас оказывается нам нужно потактово (т.е пошагово в реальном времени) эмулировать работу графической системы так же как и процессор (т.к. см выше про растровые эффекты).
и не только GPU, а и всех остальных (DMA, SPU, DSP и т.п.) сопроцессоров и компонентов что есть в системе.
это повышает требования к железу в геометрической прогресии.
к примеру эмули спектрума из первой категории типа древних Z80 или UKV отлично пахали на 386SX,
но потактово-точные UnrealSpeccy или Spectaculator уже требуют проц чуть и не под 1Ггц.
та же ситуация и с bSNES - его "профили" отичаются в первую очередь этим самым квантом времени.
если я не ошибаюсь, в profile-compatibility он равен сканлайну (одной строке экрана), а в profile-accuracy - одному пикселю.
если интересно - смотри сорцы (кстати Far manager схавал tar.xz архив без вопросов),
\bsnes_v088-source\bsnes\snes\ profile-*****.hpp файлики - какие в том или ином профиле юзаются модули для CPU/PPU/итп,
все старые "быстрые и прямые" лежат в alt\ , "новые кривые и тормозные" - в соответствующих папках.