Бедный Йорик!:D
Вид для печати
Бедный Йорик!:D
Pyk, удобнее было бы, если бы окно "Открыть файл", помнило бы последний тип файла который пользователь загружал при открытии предыдущего окна "Открыть файл" в данной сессии эмулятора. А то, постоянно при каждом очередном открытии окна для загрузки файлов WAV или RKS надо в вкладке "тип файла" выбирать "все расширения", т.к иначе в списке файлов выводятся только *.RKE.
По АЛЬ+W в окне выводятся естественно WAV-файлы, а при вводе по I или по R всегда открывается окно только для файлов RKS или RKE. Если я постоянно "типом файла" выбираю WAV, эмулятор должен сообразить, что именно с такими файлами я сейчас и работаю. И если в ЭУРЕКЕ я уже ранее грузил файлы RKS, то зачем мне снова предлагать загрузку только RKE-файлов.
По-прежнему актульно пожелание выводить какой-то значок, чтобы знать хотя бы о том, что магнитофон крутится, а не запись давно закончилась, а компьютер завис ожидая байты. В общем-то понятно, что это появится токмо когдысь в эмульгатор будет введена "верхняя балка с кнопками", т.е когда будет работать мышь. Тогда не забудьте, сделать скромно, как в импортных эмуляторах, вывод двух цифр с номером трека и сектора дисковода (который сейчас читается) и счётчика времени, сколько секунд прошло с начала МГ-записи.
Далее в качестве флейма, опишу как можно реализовать в эмуляторе полноценный ввод многоблочных программ.
"Слеплять" многоблочные МГ программы в один файл при их хранении на винчестере уже в кодах неудобно. И многоблочные программы имеющие собственный загрузчик в эмулятор не вводятся, т.к эмулятор перехватывает не те точки. Может быть можно ввести новый формат для многоблочных программ. Обозвав их, например, BRKS или BRKE или как-то иначе. Такой файл д.быть не блоком кодов, а списком имён файлов. Например:
PACMAN.000
PACMAN.001 /hhhh, hh...
PACMAN.002
Здесь первый блок первичный загрузчик, использующий при вводе стандартный вход LDBYTE, а второй и третий блок вводятся уже с использованием собственного загрузчика и к LDBYTE не лезет, используя собственную подпрограмму ввода байта на адресе hhhh. Т.е при необходимости параметрами в строках в эмулятор можно передавать новые точки перехвата, оперативно модифицируя механизм ввода байтов из открытого файла.
Второй параметр в строке задаёт паузу или темп ввода, чтобы, например, можно было разглядеть заставку или инструкцию, что выводится на экран во время ввода данного блока. Иначе, т.к в эмуляторе ввод блоков сделан мгновенным, даже заставки не увидеть, не говоря уже трюках при вводе.
Это позволит многоблочные программы не только удобно транслировать ассемблером, но и хранить и вводить многоблочные программы и в кодах, а не только в виде много-мегабайтных WAV. Можно оставить и старый формат, но добавить в него доп.информацию, т.е основной формат RKS-файла сохраняется, а сразу после байтов контрольной суммы, вставляется какой-то флаг, например байты E7,E7,E7, а далее тот же список файлов многоблочной программы из которых надо продолжить чтение. Тогда каждый блок многоблочной программы будет на ленте в виде отдельного файла, который создаётся при трансляции ассемблером.
Байты флага (например E7,E7,E7) можно ввести и в тот "слипшийся" формат, что Вы применили в RKE, где в один файл слеплено несколько блоков разделенных своим пилотоном и синхробайтом (вот где нелогичность отказа от первого E6 стала фатальной). Тогда формат RKS и подобные сохранится, т.е совместимость формата останется.
Но если в конце блока, после байтов КС вставить байты флага (например E7,E7,E7), то далее можно вставить параметры загрузки этого блока. Например задать темп ввода байтов. Тогда блок многоблочной программы будет вводиться не мгновенно, а позволяя пользователю увидеть экран во время МГ-ввода. Да и вообще можно ввести параметр в конфиге задающий скорость ввода байтов с ленты.
Флага прерывания не выводится (и не меняется). При изучении чужой программы надо листать исходник быстро, а в окне дизассемблера сдвиг медленный, только курсором вниз, клавиша PgDown не работает. Для ускорения просмотра ассемблерного исходника (раз уж мышь не работает), возможно, удобно было бы подвести балку подсветки на строку с переходом (CALL, JMP, RST) и нажав какую-то клавишу переместить окно ассемблера туда.
Да в EMU вводятся многоблочные программы в кодах даже с собственным загрузчиком.
Для этого надо в конфиге удалить строки задающие точки перехвата. Это позволяет грузить многоблочные программы в стандартном формате. При этом, похоже, эмулятор берёт байты из файла и эмулирует в реальном времени сигналы на МГ-входе.
Но с нестандартными форматами облом. Во-первых, их не получить в виде кодов. WAV-запись конвертировать в коды можно только, если вся запись идёт в двухфазке. А если там есть фрагменты в другой кодировке, то как?
Остаётся только загрузка в WAV. Теоретически WAV-записью можно загрузить любую МГ-защиту. Но практически не получилось. Точнее всё грузится, если защита не меняет формат записи. Но если первый блок грузит остальные блоки в ином формате, то не вводится.
Очередная версия 4.0.298 от 14.04.2018:
Windows-сборка:
http://emu80.org/v4beta/Emu80_40298.zip
Исходники:
https://github.com/vpyk/emu80v4
Изменения в версии 4.0.298:
Легенда:
+ Нововведение
* Изменение / улучшение
- Исправлен баг
! Известная проблема
- Исправлен звук в Микроше
- Устранены проблемы чтения с ленты в Микро-80
* Уточнен aspect ratio для всех платформ
* Режим реального aspect ratio сейчас работает также с альтернативным шрифтом
* Клавиша переключения языка Рус/Лат продублирована также на Ins
* Параметр frameRate разбит на два: maxFps и vsync
* Горячая клавиша скриншота заменена на Alt-H
* Wav-файлы из windows-дистрибутива эмулятора заменены на CSW
В основном занимался будущей qt-версией, поэтому никаких значительных нововведений в этом релизе нет.
(Сделал релиз, поскольку со времени предыдущего прошел уже месяц; текущие изменения, как всегда, - на github.)
Qt-версия также почти готова: выловлю пару неприятных багов и сделаю тестовую сборку.
nzeemin, напиши мне в ЛС или на e-mail (адрес в шапке любого файла исходников).
На github исходники будут чуть позже.
Предлагаю потестировать windows-сборку qt-версии эмулятора:
http://emu80.org/v4beta/Emu80qt_40300.zip
Исходники надеюсь на днях разместить в репозитории.
Основные отличия от SDL/wx-версии:
- Более дружественный интерфейс (меню, панель инструментов, статусная строка, иконки...)
- Автосохранение настроек
- Уменьшенная задержка между картинкой и звуком
- Запоминание последних путей к файлам
- Мультиязычный интерфейс
- Работа в одном окне
Так же как SDL/wx-версия, это portable-версия программы, может быть распакована в любую папку,
доступную для записи.
Основной запускаемый файл Emu80qt.exe
Системные требования: минимум Windows XP, желательны сравнительно свежие драйвера для
видеокарты.
Кроме основного exe-файла в составе эмулятора для целей тестирования включены еще несколько
cmd-файлов:
emu80qt-opengl.cmd
emu80qt-soft.cmd
emu80qt-angle.cmd
emu80qt-dx9.cmd
emu80qt-dx11.cmd
emu80qt-warp.cmd
Они служат для запуска эмулятора с явным указанием используемого API видео. Можете
попробовать разные варианты, сравнив работу эмулятора в этих режимах (fps, работу vsync,
загрузку процессора). Отпишитесь, пожалуйста, какой вариант на вашей системе работает лучше
с указанием ОС, процессора и видеокарты. Также интересует, нормально ли работает вариант по
умолчанию (просто Emu80qt.exe) либо какой-то конкретный cmd работает лучше.
Если 4 последних режима не работают, попробуйте установить vc_redist.x86.exe
(Visual C++ Redistributable for Visual Studio 2015 x86). Также 4 последних режима
не будут работать на Windows XP
Также желательно потестировать разные варианты максимального значения fps и частоты
дискретизации звука.
Более подробной документации пока нет, надеюсь, что интерфейс эмулятора интуитивно понятен.
Хорошо знающих английский язык прошу переключить интерфейс на английский и посмотреть,
какие есть погрешности в английском интерфейсе (в том числе во всплывающих подсказках).
Настройки эмулятора сохраняются в файле _settings\emu80.ini
Если вдруг по какой-то причине при изменении настроек эмулятор перестанет запускаться,
удалите этот файл. Если удалить всю папку _settings, то настройки будут сохраняться в профиле
пользователя в %USERPROFILE%\AppData\Roaming\Emu80
у меня лучше всего работает в emu80qt-soft.cmd - 65 fps выдаёт.
в остальных режимах 59 - 60 fps.
всё работает, скриншоты сохраняются.
загрузка процессора везде около 7% (хотя у меня фоном запущены firefox и skype).
мой компьютер:
проц - intel core i5 7600k 3.80 Ghz
видеокарта - Asus Nvidia Gefoce GTX 1060 3Gb.
память - 32 gb.
ос - Windows 10 professional.
ZEman, больше fps - не значит лучше.
В данном случае это просто означает, что не срабатывает настройка vsync, ограничивающая fps кадровой частотой монитора (в твоем случае 60 Гц).
Спасибо за тестирование!