можем подумать вместе как нибудь =))
ну есть две стратегии первая бить команду на такты - делать те фазы все - выборка декодирование и т.д. и смотреть на каждой что там в дма и прочих чипах что конечно очень перегрузит вторая же прикинуть пусть не точно но с адекватной точностью сколько раз куда дма мог попасть за период но учитывая зависимость от кода это непросто.
есть какая то наверное разумная середина типа команд не так уж много типов с параметром байт два и без параметра собственно ситуаций которые могут случиться весьма конечное число и получается что то типа таблицы какие команды и на каком такте дма - какой пенальти
я не знаю как у тебя эмуляция синхронизируется? я когда делал ямаху и спектрум - там по строчкам развертки точнее даже видимая область и бордюр отдельно по сути соотв внутри строчки синхронизация звука и видео делается уже хитро - вычитанием времени что осталось, и не всегда честная в итоге.
вот если делат построчно и тут - что мне кажется разумной гранулярностью то можно сперва брать строчку дма и запоминать такты на которых непосредственно брались данные а потом когда проц считается соотв вычислять на сколько тактов его притормозило
это будет достаточно эффективно в плане нагрузки
более тонко я использовал для VDP в ямахе там у меня эмуль проца после каждой команды звал хендлер VDP и он запускал и VDP
можно так и дма тут вкрячить прямо в проц или звать хендлер
можно вообще кстати сделать монстра в одном цикле и проц и видео контроллер и дма и все потактово - цикл потактовый - а команда непосредственно разбивается на фазы -выборку декодирование выборку исполнение запись - ну какие есть... и дма так же
вобщем заканчивая поток сознания сдается мне что можно породить такую эмуляцию по тактам вполне =) не сильно то и проиграет в смысле что синхронизация при классической эмуляции по командам тоже много сожрать может мощей
скайп на днях? а я пока оформлю идею+ мне любопытно про апогей поспрашивать чуть
---------- Post added at 02:06 ---------- Previous post was at 02:01 ----------
ну кстати да можно пустить тредами чипы и постоянно синхронизировать но вопрос какой там оверхид будет - депендс от реализации сопрограм и ониж не нативные нигде толком? не проще ли просто свалить в одну потактовую функцию все основные чипы и вообще все благо компы такие простые
ну не дословно конечно оформить в коде можно как угодно но суть в том что главный луп эмуляции реально потактовый





+ мне любопытно про апогей поспрашивать чуть
Ответить с цитированием