Расшифровку обещаю не раньше чем завтра, сорри.
Расшифровку обещаю не раньше чем завтра, сорри.
С командами, в которых нет циклов записи все легко и просто - добавляется один такт на каждое чтение из памяти. Команды, которые пишут в память, зависят от циклов видеоконтроллера, что для SCR1/2 не привело к проблемам при подсчете. Для SCR0/недокументированного надо еще подумать над отдельными командами (поэтому обновленный комплект PST с результатами и исходниками пока не выкладываю). Пока выкладываю предварительный вариант растактовок, в котором команды, требующие дополнительных размышлений (или дополнительной проверки) выделены курсивом.
Несмотря на незначительные неясности с деталями SCR0/недокументированного очевидно, что максимальное быстродействие будет при выполнении команд из внешнего ОЗУ как раз в режимах SCR0/недокументированном. При выполнении из внешнего ОЗУ в режимах SCR1/2 команды с циклами записи будут чуть медленнее, но ощутимо быстрее, чем при выполнении из внутреннего ОЗУ. Поэтому можно, например, ускорить игрушки, дополнив их "настройщиком", который определяет наличие внешнего ОЗУ и, если оно есть, переписывает игрушку туда (своего рода "кэш" ). Плюс нужно пропатчить в игре 1-3 байта, касающиеся out 80h, чтобы она сама не рулила конфигурацией памяти. Также можно представить примерно аналогичный мини-настройщик для бейсика.
Последний раз редактировалось ivagor; 04.03.2013 в 09:18.
Ничего умного не придумал, включил в полный комплект теста внешней памяти для SCR0/недокументированного средние по больнице результаты.
Забыл в исходниках обновить номер версии и дату, думаю это не принципиально
Ну что же, было познавательно. В итоге не только растактовку выяснили, но и нашли два надежных способа программного определения запуска из под эмулятора - записью в слоты и чтением портов
Я пока на подключение еги переключаюсь. Да и пал-кодер неплохо бы поднастроить, а то рябь идет и искажения крайних строк.
Со слотами очень простой и удобный способ, про порты я как-то пропустил, но есть еще способы связанные с растактовками - например сравнить время выполнения какого-либо фрагмента кода в SCR0 и SCR1/2 или нечто подобное. С регенерацией вобще непаханное поле. Еще есть способы направленные не "внутрь" программы, а вовне, на пользователя. Очень легко на экране реала изобразить что-то, что в эмуляторе будет выглядеть совсем не так (да и по звуку тоже). В этой теме много примеров, правда они все суховаты, можно было что-то более развлекательное и попсовое изобразить, но это уже остается на долю истинных фанатов ПК8000
С другой стороны, b2m никогда не видя subj, сделал впервые в мире эмуляцию ПК8000, заработали программы, игрушки (подавляющее большинство без артефактов), диск - это круто. А написание точного эмулятора опять же остается на долю фанатов этой машинки.
---------- Post added at 22:36 ---------- Previous post was at 22:34 ----------
Удачи с ягой и кодером!
Удалил нерабочие варианты тестов.
В принципе осталось еще немало невыясненных моментов, надеюсь, что в этой теме будет что почитать
Надумал, только я не знал, что ты успеешь разобраться с цветом, попытался бы что-то цветное сделать.
Тем не менее этот тестик может стать шаблоном и для чего-то цветного. Попытка программно организовать некое подобие Display List. В данном случае пытаюсь его использовать для переключения знакогенераторов по ходу активной области SCR1. Если сразу правильно заработает (в чем я сильно сомневаюсь), то покажет экран, в верхней, средней и нижней третях которого будут разные символы. Выход по пробелу.
Последний раз редактировалось ivagor; 09.03.2013 в 21:12. Причина: исправил ошибку в программе
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)