Вход

Просмотр полной версии : Эмулятор старых компьютеров "eCat"



Panther
08.10.2009, 18:12
Я решил наконец выложить на всеобщее обозрение свой эмулятор, над которым работаю уже около 4-х лет. Не судите строго, это проект чисто для развлечения, не претендующий на какое-либо соревнование с тем, что уже есть и работает заметно лучше :).

http://ecat.emuverse.ru/

b2m
08.10.2009, 18:41
А минимальные требования к компьютеру какие?
Кое-как убил процесс, так и не дождавшись главного окна.
На однопроцессорную машину явно не рассчитано :)

Ewgeny7
08.10.2009, 20:37
Panther, а мне понравилось! Спасибо!

Panther
08.10.2009, 22:18
На однопроцессорную машину явно не рассчитано
Странно, у меня на одном компьютере (ноутбук) с 2,4 ГГц работает, но плохо, на другом настольном 3,2 вообще нормально. Оба одноядерные. Да там многоядерность особо ни к чему, основной поток-то один. Только если чтобы Винда не мешала :).

На самом деле большую часть производительности ест отрисовка картинки через GDI, особенно при масштабировании. Все никак не займусь более прогрессивными вариантами. :(

b2m
08.10.2009, 22:57
А вот на Athlon XP 1500+ после запуска система переходит в коматозное состояние. На вызов диспетчера задач и убиение процесса ушло порядка двух минут. Я понимаю, мультимедийный таймер поточнее обычного, но если обработчик события от этого таймера выполняется дольше, чем период самого таймера, то происходят такие вот вещи. Ты б сделал контроль реентерабельности обработчика + какой-нибудь sleep на полпериода, если был повторный заход, чтобы система не вешалась.

---------- Post added at 23:57 ---------- Previous post was at 23:50 ----------


На самом деле большую часть производительности ест отрисовка картинки через GDI
На кой ты её каждый раз полностью формируешь? Храни готовый битмап и подправляй его при записи в видео-ОЗУ. А вывод битмапа - почти мгновенный, даже если использовать StretchBlt, т.к. используется аппаратное ускорение.

Panther
09.10.2009, 02:46
Ты б сделал контроль реентерабельности обработчика + какой-нибудь sleep на полпериода, если был повторный заход, чтобы система не вешалась.

Хм, я на слабых машинах вообще не тестировал. Насчет проверки реентерабельности хорошая идея, сделаю.

Я вынес в INI настройку высокого приоритета, попробуй поставить high_priority = 0. На моем 3,2 ГГц загрузка в три раза уменьшается (вместе с FPS, естественно).

И еще, я при последней компиляции забыл оптимизацию включить, с ней загрузка еще на 10% упала.


Храни готовый битмап и подправляй его при записи в видео-ОЗУ.

Да, рендеринг съедает 50% производительности. Хотя твой вариант в универсальной архитектуре отдельный геморрой. Модулю видеоадаптера придется вешать на нужные блоки памяти какой-то callback по записи, плюс запускать полную регенерацию при изменении регистров конфигурации. Вот тут-то красота задумки и начинает страдать от технических ограничений ;).

b2m
09.10.2009, 11:29
Теперь запускается, жрёт, конечно все 100%, и FPS только 5-6, но работает.

Panther
10.10.2009, 01:16
У меня возник вопрос к Error404. Я стал запускать игры Z80 с Disk2.odi. Заставки были кривые - какое-то месиво. Думал, проблема в эмуляторе. Стал трассировать. Оказалось, что начало файла OVL из User_1 тупо переносится в видеостраницу без всякой обработки. Получается, повреждены именно файлы? В эмуляторе b2m та же хрень. Пример игры, чтобы не искать - xecutor.com. Сама игра, вроде, работает, проблема только в заставке. Как такое получилось?

Error404
11.10.2009, 21:10
У меня возник вопрос к Error404. Я стал запускать игры Z80 с Disk2.odi. Заставки были кривые - какое-то месиво. Думал, проблема в эмуляторе. Стал трассировать. Оказалось, что начало файла OVL из User_1 тупо переносится в видеостраницу без всякой обработки. Получается, повреждены именно файлы? В эмуляторе b2m та же хрень. Пример игры, чтобы не искать - xecutor.com. Сама игра, вроде, работает, проблема только в заставке. Как такое получилось?

О какой заставке идет речь?
Там нет никакой заставки (как я понимаю, не задумывалось). Первый после загрузки экран запрашивает "Press Enter" для настройки на тип клавиатуры (РК/МС7007), следующий экран - уже игровое меню (меню Press 1.2.3).
Игра из файла OVL тупо последовательно грузится в 0 страницу памяти. Понятно, что-то залезает и на экран. Но этого не должно быть видно - у вас "запрет видеосигнала" (на экране черный квадрат Малевича) обрабатывается?



Экранная память располагается в 0 и 1 страницах ОЗУ, при-
чем количество экранов и распределение сегментов в них зависит
от текущего цветового режима, задаваемого разрядами порта 0F8H:

D4 D3 D2 D1 D0
------------------
0 x 0 0 0 - монохромный, палитра 1
0 x 0 0 1 - монохромный, палитра 2
0 x 0 1 x - запрет видеосигнала
0 x 1 0 0 - 2-битный (4-цветный), палитра 1
0 x 1 0 1 - 2-битный (4-цветный), палитра 2
0 x 1 1 x - 16-цветный с групповым кодированием
0 1 1 1 x - псевдоцветной (цвет - в порт 0FCH)
1 x 0 x x - 3-битный (8-цветный RGB)
1 x 1 x x - 4-битный (16-цветный RGBI)

Panther
12.10.2009, 09:07
Игра из файла OVL тупо последовательно грузится в 0 страницу памяти. Понятно, что-то залезает и на экран. Но этого не должно быть видно - у вас "запрет видеосигнала" (на экране черный квадрат Малевича) обрабатывается?


Я просто подумал, что раз что-то переносится, а потом переключается в экран, то это должна быть заставка. Тем более, там что-то похожее на испорченную картинку проглядывало.

А откуда табличка? Я сделал Z80 Card II, видео стандартное, с тремя битами порта F8. А тут пять. Плюс FC. Я упустил доработку видео?

И еще, в некоторых других играх есть какой-то цветной мусор в левой колонке экрана. Это ошибка, или хитрый трюк, на реале не видный за границей экрана телевизора?

Error404
12.10.2009, 09:33
А откуда табличка? Я сделал Z80 Card II, видео стандартное, с тремя битами порта F8. А тут пять. Плюс FC. Я упустил доработку видео?

И еще, в некоторых других играх есть какой-то цветной мусор в левой колонке экрана. Это ошибка, или хитрый трюк, на реале не видный за границей экрана телевизора?

А, это я скопировал из описания Орион-ПРО. Для Ориона128 надо делать только 3 младшие бита, это так.

Мусор (а точнее программный код, размещенный там адаптировавшими игру) на экране (за границами игрового поля) в играх бывает часто, но он обычно не виден т.к. скрывается за счет цветовых атрибутов. Какие конкретно игры смущают?

Panther
12.10.2009, 18:58
Какие конкретно игры смущают?

Alien8, Joe3

Error404
12.10.2009, 21:40
Alien8, Joe3

Действительно... Наверное, так оно и надо?

micko
13.10.2009, 22:51
Hi Panther,

Feel free to take a look at MESS project. You can find usefull info about memory maps, video organisation, and so on.

latest code you can see also at:

http://git.redump.net/cgit.cgi/mess/tree/src/mess/

Error404
14.10.2009, 15:45
Feel free to take a look at MESS project. You can find usefull info about memory maps, video organisation, and so on.

latest code you can see also at:

http://git.redump.net/cgit.cgi/mess/tree/src/mess/

Hello, micko !

Have you implemented filebacked MMC/SD emulation in MESS? ( if may be some of emulated machines carryes SD card on their boards)

micko
15.10.2009, 21:00
Error404:

No not yet. Currently working on floppy emulation to get it more realistic, also added support for most common formats there, so all drivers (computers and consoles) have benefit of this changes.