еще можно попробовать впендюрить SDL-ное окно в QT, я слыхал, есть способы. (хотя проще всё делать на SDL благо для него и виджетсетов приличных хватает)
Вид для печати
Я уже начинаю подумывать отказаться от кроссплатформенности. На винде есть и анрил, и люди, которые его достругивают. Только вот маководы обделёнными останутся. Для других платформ QT, вроде как, нет.
Вобщем, попробую сначала на иксах рисовать. Если возникнут большие проблемы, буду окучивать OpenGL.
OpenGL надо очень осторожно, ибо будут проблемы у людей использующих Compiz
у людей использующих Compiz и так проблемы -- они используют Compiz :v2_devil:
но есть куча людей, у которых просто видяха слабая или дрова без нормального OpenGL, среди линухоидов это обычное дело.
вообще, наверняка и средствами QT можно увеличить производительность -- к примеру
сперва копирует картинку, а потом ресайзит, всё это стандартными тормозными QT-шными средствами. если вместо этого прямо во время эмулируемого хода луча совать пикселы в буфер уже с нужным зумом и в нужном формате, а потом загружать это дело в QPixmap через loadFromData, без конверсии и участия QImage-ей, по идее должно получиться быстрее.Код:QImage rimage = image.copy(0,0,xscrsize,yscrsize);
QPixmap pixmap = QPixmap::fromImage(rimage.scaled(int(xscrsize*zoom),int(yscrsize*zoom),Qt::KeepAspectRatio,Qt::FastTransformation));
Есть такая идея. Как выяснилось, основной тормоз - в лепке QPixmap'а из QImage с ворочанием большого объёма данных. Рисовать по 4 точки на image при двойном увеличении я пробовал. Зум его самого тут почти не при чём.
PS: Рисовать по иксам бросил, вернулся на QT.
PPS: Вделал загрузку SCL, сегодня попытаюсь в SCL сохранять.
PPPS: Самооценка - эмуляция Z80 удовлетворительная, но тормозная. Эмуляция AY - отстой.
added
Новое:
- чтение и запись SCL. формат при записи определяется по расширению. неизвестное - это TRD. В SCL сохраняются только существующие файлы (удаленные выбрасываются).
- F2: записать диск A.
- 2 масштаба - двойной и обычный. 3 режима отображения бордюра: нет, половинный и полный
- Немного подрихтовал диалог открытия, чтобы несуществующие файлы не открывать.
Next
- исправлена работа огибающей. теперь она хоть как-то звучит, хотя хрипит на некоторых частотах и, как мне кажется, не соответствует реалу чуть более чем наполовину.
- переделал формирователь звука, ибо по отжранию он был на 2 месте после формирователя картинки. кажись, чуть быстрее стало.
- по F2 можно записать снапшот 128К (sna)
- по F9 записываются измененные диски. Формат записи по прежнему определяется по расширению (trd, scl)
added
Меня терзают смутные сомнения насчет снапшотов.
Если на момент его сохранения включена 2я или 5я банка, то она дублируется в первых 48К и снапшот становится на 16К длинее? Или как?
Предпраздничное. Скриншоты.
В вкладке video настроек можно выбрать, куда и в каком формате сохранять (все, которые умеет записывать QT + наш scr), а также один из пунктов newart'a - комбо-скриншотинг. делается определенное кол-во скриншотов с периодом в столько-то прерываний.
F8 - сделать одиночный скриншот (не работает, пока идёт комбо)
F7 - запустить комбо. сообщение его старте и окончании плюётся в консоль.
В scr записывается тот экран, который включен на момент прерывания. В остальные форматы пишется то, что видно на экране.
Next.
Переключение между архитектурами (ZX48, ZX128, Scorpion). Соответственно, меняются их РОМ-сеты (в настройках этот комбобокс ничего не делает).
А теперь внимание! Начался файл настроек. Для нормальной работы надо сделать папку ~/.samstyle/samulator (эмуль ее сам делает, но ничего туда не пишет) и создать там файл samulator.conf такого примерно такого содержания:
Последние 3 параметра особенно важны, т.к по умолчанию ни одной машине ромсета не присваивается. Файлы ПЗУ должны лежать в ~/.samstyle/samulator/roms и только там. Подозреваю, мера эта временная. Сами прошивки прилагаются.Код:[ROMSETS]
name = ZX48
basic48 = 1982.rom
trdos = trdos.rom
name = Pentagon128K
basic128 = pentagon.rom:0
basic48 = pentagon.rom:1
trdos = trdos.rom
name = Scorpion
basic128 = scorpion.rom:0
basic48 = scorpion.rom:1
shadow = scorpion.rom:2
trdos = scorpion.rom:3
zx48romset = ZX48
zx128romset = Pentagon128K
scorpionromset = Scorpion
PS: Настройки обратно не пишутся.
PPS: Сообщайте о найденых багах (кроме тормозилова, с ним буду решать позже), предлагайте предложения по улучшению.
Next
Новое:
- Пишутся-читаются основные настройки (~/.samstyle/samulator/samulator.conf)
- Навигация по ленте. Двойной клик на списке меняет текущий блок (заголовок - тоже блок!)
- Возможность отредактировать ленту (поудалять блоки :) )
- Возможность сохранить ленту в тапку. Сохраняется как из настроек, так и по F2, если она есть (число блоков <> 0)
- Возможность записи на ленту.
- Индикатор чтения и записи ленты (зеленая и красная касетки)
Кнопульки:
F4 - старт воспроизведения ленты или останов
F5 - старт записи ленты или останов
Новые блоки при записи добавляются в конец ленты. Данные для блоков берутся из выходного сигнала на мофон. С десяток тестов показал, что при стандартной записи данные сохраняются нормально с небольшим разбросом в длине сигналов (по сигналу +-3 тика, у меня расширено до +-10).