Xpeccy
Это эмулятор на основе Qt/SDL, в основном под линукс. Под винду в QtCreator (Qt + MinGW) собирается отлично, требуемо только пошаманить с %PATH% и %INCLUDE% для CMakeLists.txt
Датой рождения считается 09 февраля 2009
GitHub
http://github.com/samstyle/Xpeccy
Compiled
[ download ]
[ ROMs pack ] updated 09.02.2019
Compilation
Обязательно нужны cmake, g++, Qt5/Qt6 и SDL1/SDL2 с дев-пакетами
Необязательно - zlib
Как собирать:Параметры cmakeКод:git clone https://github.com/samstyle/Xpeccy.git cd Xpeccy mkdir build cd build cmake [параметры] .. make # для установки sudo make install # для создания пакета make package
-DQTVERSION=5 Версия Qt, с которой будет собран проект. Поддерживаются 5 и 6
-DSDL1BUILD=1 собрать с использованием SDL1.2. если =0 - с SDL2
-DUSEOPENGL=1 собрать с QtOpenGL. если =0 - программная отрисовка
-DUSEQTNETWORK=1 использовать QtNetwork. Пока в зачатках. Можно цепляться по порту, указанному в настройках, но "общение" скудное
-DPACK=[rpm | deb] переопределяет формат пакета, который будет собран при make package (только в Linux)
Linux
установка осуществляется в /usr/local/bin, из пакета - в /usr/bin
директория конфигов - ~/.config/samstyle/xpeccy
Windows
папка конфигов - ./config (в том же месте, где exe-шник)
Документация от Dexus
[ ссылка ]
Эмулируемые модели
- ZX Spectrum 48K
- Spectrum +2
- Spectrum +3
- Pentagon (128-512K)
- ZS Scorpion (256,1024) + ProfROM
- Pentagon 1024SL
- ZXM Phoenix
- Profi
- ATM Turbo 2
- ZXEvo BaseConf
- ZXEvo TSConf
- MSX1 (beta)
- MSX2 (beta)
- Gameboy color
- NES/Dendy (beta)
- Commodore 64 (pre-alfa)
- БК0010 (pre-alpha)
- IBM PC/AT (286й) (pre-alfa)
[свернуть]Как добавить свой ромсет
В окне состава ромсета на вкладке Machine добавляются его составные части - указывается файл, смещение в нём, длина загружаемых данных, а так же позиция в ПЗУ, с которой данные будут загружены (обычно кратно 16К), все значения в килобайтах (1024 байта). Все части грузятся по порядку, так что если допущено пересечение данных, то действительными будут данные с последней части в списке. Если образ ПЗУ одним файлом, будет только один пункт. Порядок ПЗУ (48й,128й,трдос,теневая страница и всё что свыше) сильно зависит от используемой модели, заранее уточняйте эту инфу в этих ваших интернетах.
Отдельными пунктами идёт ПЗУ для General Sound (32K), прошивка знакогенератора для ATM2/Evo-BaseConf (2К), для 286го - прошивка ega/vga (без неё это будет cga)
[свернуть]Как переделать раскладку ZX-клавиатуры
В папке конфигурации создайте файл с расширением map (например, myKeyboard.map). Это текстовый файл, в каждой строке - соответствие PC-клавиши одной или двум ZX-клавишам. Файлов может быть несколько, используемый выбирается в настройках эмулятора на вкладке Input. Обозначения клавиш и пример см. тут -> https://github.com/samstyle/Xpeccy/blob/master/keymap Всё копировать оттуда не нужно и даже вредно. В .map файле должны быть исключительно строки типа PCKey(tab)ZXKey1(tab)ZXKey2. Обозначения разделены табуляцией
[свернуть]Хоткеи эмулятора по умлочанию
А если не по умолчанию - они все настраиваются в опциях
F1....Настройка
F2....Запись диска/снапшота/ленты
F3....Загрузка чего-нибудь
F4....Стоп/воспроизведение ленты
F5....Стоп/запись на ленту
F7....Cкриншот
Alt+F7....Комбо-скриншотинг
F9....Записать измененные диски
F10....NMI (magic)
F12....Сброс
Alt+Enter....полноэкранный режим
Alt+R....сохранять/нет пропорции
Alt+F12....Сброс в ROMPage3
Pause....Пауза
ESC....Отладчик
Menu,RMB....Юзер-меню
Alt+1,2,3,4....Изменить размер окна от x1 до x4
Insert....Ускорение (аналог NumLock в Unreal).
Alt+K....Показать ZX-клавиатуру
Alt+N....Триггер нофлика
MMB захват мыши
gameboy
cursor = d-pad, z = a, x = b, enter = start
1,2,3 - trigger bg,win,spr graphics
4,5,6,7 - trigger sound channels ch1-ch4
nes
cursor = d-pad, z = a, x = b, enter = start, space = select
1,2 - trigger bg,spr graphics
3,4,5,6,7 - trigger sound channels
[свернуть]Хоткеи отладчика
PageUp/PageDown....листать дизасм или дамп
Home....перейти к PC
End....поставить PC в текущую позицию
Space...поставить точку прерывания
Alt+F2...поставить/убрать точку прерывания read
Ctrl+F2...то же для write
F2....сохранить файл
F3...открыть файл
F4....перейти по адресу, указанному в команде (сохраняется история 64 переходов)
F5....вернуться к предыдущему адресу по истории
F7....выполнить команду на PC
F8....выполнить команду с пропуском call/rst/djnz/ldir-подобных
F9....оставить временный fetch-breakpoint на этом адресе и выйти
Ctrl+S....сохранить блок памяти
Ctrl+O....загрузить блок памяти
Ctrl+T....запустить трассировку
Ctrl+L....вкл/выкл отображения меток
ESC....выход
[свернуть]Аргументы ком.строки
-d | --debug : после запуска сразу включить отладчик.
-p | --profile <name> : включить профиль <name>
-b | --bank <nr> : включить в окно #C000 страницу ОЗУ с указанным номером.
-a | --adr <nr> : задать адрес для загрузки (см. --file)
-f | --file <path> : загрузить бинарный файл по адресу, указаному в --adr
-s | --size <nr> : масштабирование 1..4
-n | --noflick <nr> : нофлик 0..100
-r | --ratio <bool> : сохранять ли пропорции в полноэкранном режиме
-c | --console : Windows. Создать и прикрепить к эмулятору консоль, куда иногда будут выводиться какие-нибудь сообщения
--disk 0..3|a..d|A..D : выбрать дисковод для загрузки образа
--style : MacOSX only - использовать системный стиль
--fullscreen <bool> : полноэкранный режим
--bp <adr> : установить ловушку fetch на указаный адрес
--pc <adr> : установить PC
--sp <adr> : установить SP
-l | --labels <path> : загрузить список меток формата SJASM+ (LABELSLIST).
[свернуть]Как создать чистый образ hdd/sdc
# Это не работает под шindoшs. Ну, разве что баш туда прихомячить, и то не факт
# /path/to/image и /path/to/mount - это пути к образу и точке монтирования, задаются пользователем
# делаем пустой файл нужного размера. В примере - 512 блоков по 1Мегабайту, т.е 512Мегабайт в целом
dd if=/dev/zero of=/path/to/image bs=1M count=512
# форматируем файл в FAT32
sudo mkfs.fat -F 32 /path/to/image
# если приспичит - монтируем его куда-нибудь
mkdir /path/to/mount
sudo mount /path/to/image /path/to/mount
[свернуть]