PDA

Просмотр полной версии : Raycasting



ivagor
15.09.2016, 17:55
Недавно доделал рейкастер для i8080. Глюков Ambal3D тут нет (может есть свои, но я их пока не нашел). Первая версия (http://zx-pk.ru/threads/24285-orion-pro-softvernye-dela.html?p=885062&viewfull=1#post885062) была для ориона-про, там же и ссылка на писишный прототип. Теперь переделал для ПК-6128Ц. Если на орионе-про (z80 с тормознутыми 10 МГц и удобный для такого случая экран) приемлемо бегает, то на 6128 все очень грустно (медленно). Но резервы для оптимизации есть и со временем может руки дойдут. Сделал для 6128, а не для ванильного вектора по одной причине - хотел видеть все 11 цветов, которые есть на дефолтной карте. Но версию для 06Ц тоже планирую.
Если вдруг кто хочет посмотреть, то удобнее в VV (хотя отлаживал я в emu и там все тоже прекрасно работает, только загружать не очень удобно):
File->Config->Load->PK-6128c.con
Потом можно просто кинуть rc5.com в окно эмулятора или через диалог открытия файла.
Для бодрости можно еще включить тактовую побольше (F10). На 12 МГц все довольно неплохо.
Управление - курсор.

ivagor
17.09.2016, 17:29
Ускорил почти в 2 раза, теперь можно более-менее походить на стандартных 3 МГц

ivagor
18.09.2016, 17:26
Сделал версию для 06Ц. Не требует никакого дополнительного железа (квазидиск и т.п.), достаточно голого вектора. Темные градации цветов передаются вертикальной штриховкой. Шахматка наверно была бы лучше, но в нее дольше переделывать.
Здесь немного ускорена математика, но замедлена очистка экрана.

svofski
20.09.2016, 20:20
Кому лень, можно дрег и дропнуть прямо зип на http://asdasd.rpg.fi/scalar/vector06js

ivagor, офигенно! Хотя от тебя я ожидал не меньше, чем рей маршер :)

artyr_n
21.09.2016, 00:45
Кому лень, можно дрег и дропнуть прямо зип на http://asdasd.rpg.fi/scalar/vector06js

у меня приводит опять к загрузке этого файла на компьютер

artyr@sklo:~$ uname -a
Linux sklo 4.4.0-36-generic #55-Ubuntu SMP Thu Aug 11 18:01:55 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
google chroom Версия 51.0.2704.106 (64-bit)

Sayman
21.09.2016, 07:54
а можно какой-нить ютуб запилить, чтобы можно было глянуть тем, у кого нет вектора (и даже понятия не имеют как его запускать в виде эмулятора)?

Black Cat / Era CG
21.09.2016, 12:15
у меня приводит опять к загрузке этого файла на компьютер

artyr@sklo:~$ uname -a
Linux sklo 4.4.0-36-generic #55-Ubuntu SMP Thu Aug 11 18:01:55 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
google chroom Версия 51.0.2704.106 (64-bit)
Аналогично. Win7. Последняя Лиса.

svofski
21.09.2016, 12:29
Я плохо продумал этот вопрос. Когда страница открывается, она предлала запустить ром из зипа (testtp), а в меню выбора файла D&D не работает. Сейчас поправил на прямую загрузку ROM-a и D&D должен заработать. Если вдруг все же нет, снизу есть большая кнопка "Есть свежий ROM?", которая открывает диалог выбора файла.

artyr_n
21.09.2016, 14:00
Сейчас поправил на прямую загрузку ROM-a и D&D должен заработать.
Да так удалось перенести zip и программа запустилась.

ivagor
21.09.2016, 17:44
Спасибо за отзывы! В связи с появлением некоторого интереса выкладываю оптимизированную версию. Оптимизированы и расчет и рисование и стирание.
Кстати, попробовал шахматную штриховку - оказалось не очень, оставил вертикальную

- - - Добавлено - - -


чтобы можно было глянуть тем, у кого нет вектора (и даже понятия не имеют как его запускать в виде эмулятора)?
svofski дал ссылку (http://asdasd.rpg.fi/scalar/vector06js/) на его онлайн-эмулятор, туда можно дропнуть прямо zip. Программа запустится, управление - курсор

svofski
21.09.2016, 19:50
rc11 вообще летает. Было бы здорово доделать до презентабельного состояния, с какими-нибудь пояснительными и хвастливыми текстами, может быть с автоматической гулялкой, чтобы можно было просто запустить и втыкать.

Sayman
21.09.2016, 20:04
разобрался. побегал малость. медленно очень. если делать по методу от lodev (у которого dda сильно завязан на float и double), то быстрее не факт, что получится. а про текстуры можно забить в этом случае. на msx тоже на dda хотели делать raycasting. что-то там не фонтан получилось как...

ivagor
23.09.2016, 17:27
И еще немного оптимизировал. В большей степени отрисовку, но расчет тоже ускорен.


может быть с автоматической гулялкой, чтобы можно было просто запустить и втыкать.
Добавил "ролик на движке", стартует сразу после запуска. Время прогона - почти 4 минуты. В любой момент можно нажать какую-нибудь курсорную клавишу, прервать демку и походить самому.

- - - Добавлено - - -

Кстати, средний FPS по результатам прогона ролика примерно 5.25

svofski
23.09.2016, 19:12
Запустил и воткнул, спасибо!

Игры типа Dark Side сильно отличались по графике, там было настоящее 3D, но мне кажется, что тут это не главное. Если иметь богатое воображение, то и вокруг такого можно было бы наплести чего-нибудь фантастическое и загадочное.

yur
23.09.2016, 19:57
Скорость действительно пободрее предыдущих версий

KTSerg
24.09.2016, 08:55
... Если иметь богатое воображение, то и вокруг такого можно было бы наплести чего-нибудь фантастическое и загадочное.
Для поколения игравшего в "Формула-1" на МК61/МК52 ещё и не такое возможно :)

Sayman
24.09.2016, 11:14
ivagor, расчёты реалтайм или табличками?

ivagor
24.09.2016, 17:16
15я версия
1. Ускорил средний (считал по ролику) FPS до 6.
2. Программу разбухшую запаковал, чтобы быстрее грузилась в реал. Кроме того теперь при старте отключается квазидиск, что позволяет корректно стартовать из микродосов/сипиэмов его использующих.


ivagor, расчёты реалтайм или табличками?
Все что смог - переложил в таблицы, остальное, понятное дело, приходится считать.

svofski
26.09.2016, 21:19
KTSerg, я именно об этом ;)

vladtru
28.09.2016, 10:42
Браво! Отличный, правильный 3D-лабиринт без искажений, и скорость хорошая. Теперь-то уж точно нет сомнений, что и на "Векторе" могут быть "настоящие" 3D-игры. Если добавить пару предметов и персонажей, можно получить почти игру (типа Gate Crasher на Tandy CoCo3 - там, кстати, около 10 кадр/с).

ivagor
29.09.2016, 17:05
Думаю взятие планки 7 FPS (сейчас 7.1) стоит отметить релизом.
Немного технических подробностей
1. 80 колонок (160 точек в режиме 256) x 128 строк
2. Интерполяция в 4 или 2 раза
3. Деление: одно процедурой по алгоритму blackmirrorа, другое - по таблице
4. Умножения: оба процедурами
Все же упражнения с пи не прошли даром - деление и умножение перетащил оттуда.
Распаковщик - быстрый mlz b2mа

PPC
30.09.2016, 21:22
ivagor, ты уже задумываешься о текстурировании, или сначала допилишь до 8-10 fps?

ivagor
01.10.2016, 06:20
задумываешься о текстурировании, или сначала допилишь до 8-10 fps?
Сначала я перенес C (lodev)->матлаб (варианты без текстур и текстурированный).
Для 8080 планировал попробовать нетекстурированный и если будет запас по скорости - добавить текстуры. Но теперь я настроен пессимистично, вряд ли для вектора будет вариант с текстурами. Даже без них до 8 FPS вряд ли допрыгну, может 7.5. Но для другого компа может все же попробую

Sayman
01.10.2016, 08:40
ivagor, попробуй wolf48 перетащить. И фпс поднимится и текстурки будут.

Error404
01.10.2016, 16:08
Но для другого компа может все же попробую

Мы - с Орионами-ПРО - ждем. :)
Z80, турборежим, плюшки всякие...
Хоть что-то будет из ПО для чего все это делалось.

А вообще, получается, математические алгоритмы проигрывают тем "псевдо 3D" на которых делались "DOOM-ы" для ZX?

ivagor
01.10.2016, 17:44
ivagor, попробуй wolf48 перетащить. И фпс поднимится и текстурки будут.
приблизительная оценка (http://zx-pk.ru/threads/21073-ambal-3d.html?p=590180&viewfull=1#post590180)


получается, математические алгоритмы проигрывают тем "псевдо 3D" на которых делались "DOOM-ы" для ZX?
Для меня это первый опыт самостоятельной реализации рейкастера для 8080, некоторые решения неоптимальные.
1. Сильно влияет правильный выбор коэффициента масштабирования - пробные прикидки уменьшения диапазона одного из множителей в два раза дали заметную прибавку к скорости, но и побочные эффекты
2. Карта должна содержать поменьше "открытых" пространств, это и пункту 1 поможет
3. z80 лучше годится для таких вещей

- - - Добавлено - - -

Радио интереса, если просто прогнать rc21
на z80 - 7.6 FPS (за счет mov r,r; inr; dcr)
на 8085 (пк-6128) - 7.8 FPS (за счет mov r,r; inr; dcr; условных переходов)
и это без оптимизации под указанные процы

svofski
02.10.2016, 01:21
Внесу свою скромную лепту, вот прямая ссылка для запуска rc21.zip одним кликом:
http://asdasd.rpg.fi/scalar/vector06js/?roms/rc21.zip

ivagor
07.10.2016, 18:20
Финальная (или близкая к ней) версия для 06Ц.
1. Заметил, что в rc21 рисовалось 77 колонок вместо обещанных 80. В качестве компенсации в rc28 85 колонок (поле зрения 60 градусов)
2. Добавил в интерполяцию x2 проверки примерно как в x4 (в одном месте была видна неаккуратность стены)
Оптимизации позволили сохранить FPS на уровне rc21 (и даже чуть быстрее), несмотря на вышеперечисленное.

svofski
07.10.2016, 19:24
http://asdasd.rpg.fi/scalar/vector06js/?roms/rc28.zip

tnt23
07.10.2016, 22:35
А на ютубу кто-нибудь запульнёт?

Black Cat / Era CG
07.10.2016, 22:46
А на ютубу кто-нибудь запульнёт?
По ссылке выше можно побегать, ничего для этого не делая - стартует автоматом!

ivagor
26.10.2016, 16:33
до 8 FPS вряд ли допрыгну
И все же в rc38 допрыгнул до 8 FPS.
Кроме ускорения еще есть мелкие коррекции, из которых можно отметить дорботку опроса клавиатуры для совместимости с большими частотами проца.

ivagor
29.10.2016, 16:06
Пара версий для любителей изощрений (типа меня самого).
rc38vm1 - да, как несложно догадаться по названию, это версия оптимизированная для 580ВМ1. Ускорение на 10% (до 8.8 FPS). Неплохо, но впечатление несколько смазывает то, что просто запустив rc38 на пк-6128ц получим те же 8.8 FPS за счет более быстрого исполнения некоторых команд, а над оптимизацией под ВМ1 пришлось посидеть.
Не исключено, что под 8085 можно оптимизировать и до 9 FPS, но я пошел другим путем.
rc3885 - версия для пк-6128ц. Она качественнее - 11 цветов вместо (6 цветов+штриховка). За качество пришлось немного заплатить быстродействием - выдает 8.3 FPS, но это все же быстрее версии для 06ц.

- - - Добавлено - - -

Кстати, эти варианты еще и чуть компактнее версии для 8080

svofski
29.10.2016, 18:16
rc38 для Вектора-06ц в однокличье (http://asdasd.rpg.fi/scalar/vector06js/?roms/rc38.zip).

ivagor
31.10.2016, 21:14
Мне все же стало интересно, насколько затормозило добавление оттенков rc3885. Оказалось, что если ограничиться 6 цветами + штриховкой (как во всех версиях для 06ц, в т.ч. в rc38 и rc38vm1), то станет (в rc3885fast) аж 9.3 FPS! 6128 рулит, ему бы еще допОЗУ и несколько десятков тысяч экземпляров в свое время.

yur
22.11.2016, 00:01
каким эмулятором запускать rc3885fast и rc3885 ?

Ramiros
22.11.2016, 09:30
каким эмулятором запускать rc3885fast и rc3885 ?

Любым, только это нужно делать в конфигурации ПК-6128Ц.

yur
23.11.2016, 13:01
Любым, только это нужно делать в конфигурации ПК-6128Ц.

это как?

Ramiros
23.11.2016, 16:27
это как?

File->Config->Load... и загрузить файл PK-6128c.con

yur
23.11.2016, 17:58
File->Config->Load... и загрузить файл PK-6128c.con
у меня таких опций нет в эмуляторе

Ramiros
23.11.2016, 23:24
у меня таких опций нет в эмуляторе

Написали бы тогда, что за эмулятор...

yur
24.11.2016, 10:21
Написали бы тогда, что за эмулятор...

Универсальный - EMU

b2m
24.11.2016, 12:45
Ну тогда после запуска просто выбрать PK-6128c. Вот только как там грузить rom - я не знаю.
F11 - бейсик
Shift+F11 - загрузка с кассеты
Ctrl+F11 - загрузка с дискеты

- - - Добавлено - - -

Можно, конечно, грузить через отладчик:
- через меню выходим в отладчик
- в дампе идём на адрес 0100
- нажимаем Ctrl+L Enter
- выбираем rom
- кликаем на регистр PC и вводим 0100
- запускаем клавишей F5

yur
25.11.2016, 02:31
как запустить ром я знаю - он в этом эмуляторе не запускается ни в одной конфигурации вектора.
в меню есть значок для смены рома - выбираешь ром, затем держишь клавишу F2, нажимаешь клавишу F11, отпускаешь клавишу F2 после того как заполнилась жёлтая полоса и нажимаешь F12.
Можно в диалоге открытия файла выбрать расширение и открыть *.rom

b2m
25.11.2016, 11:23
он в этом эмуляторе не запускается ни в одной конфигурации вектора.
Ну так фишка то в том, что надо запускать не в конфигурации Вектора, а в конфигурации ПК-6128ц. Я вчера лично запускал через отладчик, поэтому сверху про него и добавил.


в меню есть значок для смены рома - выбираешь ром, затем держишь клавишу F2, нажимаешь клавишу F11, отпускаешь клавишу F2 после того как заполнилась жёлтая полоса и нажимаешь F12.
В ПК-6128ц такой фичи нет.


Можно в диалоге открытия файла выбрать расширение и открыть *.rom
Можно-то-можно, вот только биос ПК-6128ц вроде не грузит из внешнего ПЗУ.

yur
25.11.2016, 13:16
спасибо за информацию - пробовал через отладчик
результат нулевой - может эмуль битый