ILoveSpeccy, конечно выкладывай. Лучше сразу на github или bitbucket, чтобы можно было форчить и бомбить тебя пулл реквестами
ILoveSpeccy, конечно выкладывай. Лучше сразу на github или bitbucket, чтобы можно было форчить и бомбить тебя пулл реквестами
Больше игр нет
Сергей, а вы можете добавить эмуляцию звука дисководов?
ой, в теории можно, но я видел только один эмулятор "TRS-80" где такое было
было забавно первые 10 минут, потом - отключалось.
---------- Post added at 17:59 ---------- Previous post was at 17:57 ----------
Можно инструкцию
типа
1. скачать mingw из ...
2. скачать allegro из ...
3. распаковать в
взять make file ...
и на SDL было бы очень полезно глянуть !
Все, я возвращаюсь к работе над эмулятором сети. Собственно, доделать оказалось не так уж и много, и посидев с утра пару часов в отладчике, я все доделал. Что я реализовал:
1. Перешел от программного опроса потока (что так портило тебе FPS) к полностью асинхронному вводу данных, по сигналу от ОС. Теперь FPS в твоем любимом турборежиме при пассивной сети не снижается вообще. При активном обмене с сетью немного проседает, но это естественно для однопоточной задачи.
2. Полностью реализовал поддержку псевдотерминалов. Теперь можно соединять эмулятор с железным корветом через компорт, а также другой копией эмулятора и моей сетевой программой KL через виртуальный терминал.
3. Самое важное - сделал сохранение лог-файла сетевого обмена. Благодаря этому логу можно посмотреть, как и в каком порядке эмулятор обменивался данными с сетью.
Теперь в эмуляторе без всяких сбоев работают сетевые программы типа STS, Postman итд. С сетевыми ОС несколько сложнее, тут обсудить надо, но вначале тебе самому стоит попробовать.
Собственно, я готов внести свои изменения в твой исходный текст. Только вот вопрос - где этот исходный текст последней версии брать? Ты мне 2 варианта присылал, и в этой теме выложил ссылку на репозиторий. Может, у тебя в загашнике еще поновее что-то есть, чтобы мне мартышкиной работой больше не заниматься...
Все, я закончил перенос своего кода в вариант эмулятора из репозитория. Пришлось понабивать шишек на ровном месте, но в коце концов все вроде заработало.
Поскольку своего репозитория у меня нет, прикладываю те файлы, которые я изменил. Их всего 4.
_main.c - добавлен разбор конфига, ключей, а также стартовый код и опрос сети.
serial.c - тут, собственно, всеь мой код и лежит.
korvet.h - добавлены заголовки сетевых подпрограмм и общих переменных.
korvet.cfg - добавлены параметры конфигурации сети.
Теперь о важных изменениях.
1. В конфиг-файл добавлена новая секция [lan], чтобы не путалось с остальными переменными. В секции пока только 3 параметра - ADDR, DEVICE и LOG, потом может быть еще добавим.
2. Добавлены ключи командной строки:
Это позволяет запускать несколько копий эмулятора, РМУ и РМП, из одного места, не изменяя файл конфигурации.Код:-s - имя устройства последовательного порта для эмуляции локальной сети -n - адрес РМУ в сети (0 для РМП) -l - имя файла сетевого протокола, в случае "-l-" (параметр знак минуса) отказ от создания файла протокола
3. Сделан полностью асинхронный ввод-вывод, теперь в турборежиме при пассивной сети FPS держится около 3500. Если сетевое устройство в конфиге не описано, то вызов LAN_poll() вообще не занимает процессорного времени - сразу возвращает управление.
4. Сделана полная поддержка псевдотерминалов для эмуляции последовательного порта. Теперь можно не только общаться с железным корветом, но и соединить 2 эмулятора между собой. Привожу пример такого запуска.
Стартуем первый эмулятор.
Это у нас будет РМП. В качестве последовательного устройства указываем мультиплексор виртуальных терминалов /dev/ptmx. Будет сформирован лог server.log.Код:./kdbg -n0 -s/dev/ptmx -l server.log -a disk/unsort18.kdi -b disk/MIKRDOS3.KDI Последовательный порт /dev/ptmx открыт Подчиненный псевдотерминал - /dev/pts/2 Открыт файл сетевого протокола server.log Адрес эмулятора в сети - 0 Driver: ALSA
При старте эмулятор указал, что сформирован подчиненный последовательный порт /dev/pts/2. Эта информация нам нужна для запуска второй копии эмулятора.
Теперь стартуем второй эмулятор
Это будет РМУ с адресом 2, сетевой лог сохраняется в client.log. В качестве последовательного порта указываем имя подчиненного виртуального терминала, выданное нам первой копией эмулятора.Код:./kdbg -n2 -s/dev/pts/2 -l client.log Открыт файл сетевого протокола client.log Адрес эмулятора в сети - 2 Driver: ALSA
Все, сеть из 2 корветов готова. Можно начинать развлекаться. Я потестировал сеть в программах STS и YP - работает вроде без сбоев в обе стороны.
Для разбора файлов сетевых логов я написал программку, но ее надо немного облагородить, мне ее стыдно выкладывать в первозданном виде. Как доведу до ума - выложу. А вообще формат лога описан в serial.c.
Моя программа KL также может взаимодействовать с эмулятором по сети через порт подчиненного виртуального терминала. Но требуется некоторая ее доработка. После доработки выложу в соответствующей теме.
А, и вот еще. Что это за оптимизацию -O7 ты там придумал? Вообще-то официально такой вообще не существует, а неофициально она эквивалентна -O3. Но даже -O3 использовать не рекомендуется - это экспериментальная оптимизация, можно нарваться на совершенно необъяснимые глюки. Хотя оно и дает примерно +500 к FPS.
Пока вроде все. Прикладываю архив с измененными файлами.
Последний раз редактировалось forth32; 02.06.2014 в 15:14.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
обновил версию в репозитории
исправление ЧБ палитры (первый набросок)
и обновил вывод на экран, теперь в режиме 2X вывод не черезстрочный а нормальный
черезстрочный был по причине быстрого фикса и того что вывод 2x жутко тормозил при обновлении всего экрана.
это тоже в общем то быстрый фикс, но он будет до переделки всего кода
и пару мелких фиксов в сбросе дампов, но это косметика для отладки.
forth32, пока твою сеть не включал, не успел с ней поиграть сильно
и похоже надо будет сделать только в версии для линукса.
Это да, как поглядел, там в работе с com сильно линуксозависимый код, но forth32 сделал самое сложное дело - раскопал протокол и логику, так что переписать все под winapi не сложно - кода там не много.
Если когда-нибудь дойдут руки и этого не сделает кто-то другой раньше, перепишу. Плюс давно есть мысли прикрутить чисто косметические вещи к эмулятору, вроде зеленой и других произвольных палитр, а так же алгоритмы масштабирования пиксельной графики вроде hqx, scale2x и прочие, но это уже после SDL, наверное =)
Последний раз редактировалось Serebriakov; 09.06.2014 в 02:00.
Кстати зелёную палитру сделать Совсем просто,
А вот про всякие hqx - я как-то ими не проникся
Для игровых платформ - ещё понимаю
А для компании -как то нет.
---------- Post added at 01:15 ---------- Previous post was at 01:10 ----------
Ой, та это осталось ещё со времён pentium3 ;-)
Вроде было O3 плюс ещё чуть чуть
Я запускал профайлер, в основном там жрет кривая эмуляция звука/таймера
Надо совсем переписывать
И похоже почти все
Кроме диспетчера памяти и всяких WriteXxx/ReadXxx
Сергей, можно вас попросить - сделайте пожалуйста поддержку образов нетипичных размеров. Как я помню, в cp/m есть возможность определить геометрию диска, но при моих попытках эмулятор отказывался работать с образами большими, чем стандартный.
(я все еще лелею мечту собрать весь интересный софт на четырех образах
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)