в эмулях обычно делается перехват ПЗУшной процедуры записи.
Вид для печати
Посмотри, как у меня в Xpeccy:
Конец блока определяется по паузе дольше 1 фрейма. После окончания записи блока определяется возможность перевести сигналы в байты (наличие пилот, sync1, sync2, [1], [0], sync3).
Например:
1. запустить эмулятор
2. сохранить блок ПЗУ-шной процедурой
3. через F2 сохранить ленту как tap
делается перехват ПЗУшной процедуры по адресу 1218. ix,de,a
после этого выскакивает окошко с выбором имени файла и пути для его сохранения.
если выбран существующий файл то данные пишутся в его конец.
а вот что удобней для последующих сохранений ?
1. пока эмулятор работает все дальнейшие сохранения вести в этот файл.
например мы загрузили программу из нескольких блоков в копировщик и потом сохраняем их в один TAPфайл.
2. выдавать запрос при каждом новом сохранении ?
для отгрузки состояния в игре возможно удобней несколько разных TAPфайлов вместо одного
Чуть переделать Tape Player, чтоб получился тот самый Tape Recorder.
При записи эмулятор отлавливает записанный блок, и вставляет его в конец списка блоков. Теперь
а) Вводя LOAD "" и шелкнув два раза по сохраненному блоку, мы можем его загрузить - этот функционал уже есть.
б) Выделив нужные блоки можем нажать новую кнопку Save и сохранить TAP-файл, состоящий из этих блоков.
Обновил эмулятор до версии 2730, из ключевых изменений:
- исправлена ошибка в мультиколоре (фиксился пентагон, но теоретически затронуло все модели);
- добавлен новый режим масштабирования, в котором пикселы всегда имеют фиксированный размер. Поможет тем у кого в полноэкранном режиме раньше пикселы были разного размера;
- размеры всех ULA установлены в 320x256, чтобы не дергать постоянно View->Size;
- доработано сохранение SZX файлов, теперь сохраняется модель, которая определяется по типу модуля памяти;
- переработан код построения таблиц рендеринга
http://savepic.org/3419271.png
Alexander Makeev, объясните пожалуйста, почему нельзя выбрать эмуляцию "Delta C" в эмуляторе ?
только ula от дельты выбирается, а пзу нет, в результате на начальном экране я вижу что угодно но только не "С 1989 Delta C".
как это можно исправить ?
память у дельты обычная, поэтому можно взять 48к модуль и подложить свое пзу. Для этого нужно создать папку ROMS рядом с эмулятором, положить туда пзу от дельты и скопировать файл ~mapping.xml из ROMS.PAK. После этого открыть ~mapping.xml в текстовом редакторе, найти настройки для модуля памяти ZX48, они выглядят так:
в данном случае используется образ пзу 48.rom, заменяешь 48.rom на имя файла с образом пзу от дельты и готово. :smile:Код:<Model name="ZX48">
<Page name="SOS" image="48.rom" offset="0x0000" length="0x4000"/>
</Model>
не помогает.
пзу дельты всёравно не появляется в списке, а если поставить какое-либо другое пзу с ula от дельты то наблюдаем вот такую картину:
http://img600.imageshack_.us/img600/3310/94819651.jpg
также прилагаю созданый "roms.pack"
картинка такая потому что у ula дельты ширина бордюра по бокам больше чем у остальных, при этом включено масштабирование Fixed Pixel Size и двойная ширина не умещается в области окна, поэтому масштаб переключается на одинарную ширину. Не доглядел когда прописывал одинаковые размеры всем улам, в след. версии исправлю :)
если сдеалать size 200% все станет на свои места.
По поводу ромов, в след. версии постараюсь сделать возможность задавать имя набора ромов в ромпаке в конфигурации машин.