Просмотр полной версии : Игры аля Doom и Wolf3D для Спектрума...
...и не только Спектрума, но и клоны и вообще железки на z80.
нашёл тут как то бегая по инету такую тему:
https://www.youtube.com/watch?v=5XDTh6T-T7o
http://www.youtube.com/watch?v=TuupoxmeQ6U
http://www.youtube.com/watch?v=5EMX8qIgWOs
http://www.youtube.com/watch?v=oswTbf642H0
плюс нашёл склад с этими игрушками/демками. Интересно получается, народ задурялся и задуряется на калькуляторах, а под спек так и не осилил кто-либо такую штуку, как рей кастинг. Вольф от Алона не в счёт, шибко он квадратичный и из-за этого не играбельный, хотя на уровне принципа, что рей кастинг запилить, да, наверное канает.
Из играбельных дем приходит на память только 3 демки: демка от ДР, демка Цитадели и демка под спринтер. Исходников нет, нормальной игры нет, движка нет (а можно было бы напилить не только дум и вольф)... Ээээх, тоска печаль...
Sayman, есть же исходники от Алоневского движка который Doom48k
он их просто так даже раздает
jerri, они не читабельны. у алона многие исходники, тем более под аласм...там чьёрт ногу переломит. ни комментариев, ни каких-то пояснений.
jerri, они не читабельны. у алона многие исходники, тем более под аласм...там чьёрт ногу переломит. ни комментариев, ни каких-то пояснений.
Да чего греха таить - когда он на форуме обьясняет чего-то, можно понять, если только ты сам как следует в теме)
Да чего греха таить - когда он на форуме обьясняет чего-то, можно понять, если только ты сам как следует в теме)
"Чтоб задать правильный вопрос надо знать половину ответа"
(с) кто-то там...
Всё верно, неужто ему с нуля обучать каждого?
Тяжкое это дело хорошее 3d на спеке...
Сам рейкастинг жрёт дочерта, так ещё надо и масштабируемые(!) спрайты врагов/предметов выводить.
В общем классические 3d-алгоритмы не катят, надо нечто ПРИНЦИПИАЛЬНО новое.
А математические гении если и есть среди спектрумистов - пока что не изобрели ничего.
Только AlCo бился-бился, но в конце концов так и не вышло ничего шустрого...
В общем классические 3d-алгоритмы не катят, надо нечто ПРИНЦИПИАЛЬНО новое.
А математические гении если и есть среди спектрумистов - пока что не изобрели ничего.
Алоне как раз вполне себе спектрумовский гений. Без всяких его изобретений и ухищерений, придуманный специально под Спек, такого быстрого 3Д бы не было.
Алоне как раз вполне себе спектрумовский гений. Без всяких его изобретений и ухищерений, придуманный специально под Спек, такого быстрого 3Д бы не было.
Так кто спорит, он выжал всё что можно, только это не помогло...
классические 3d-алгоритмы не катят, надо нечто ПРИНЦИПИАЛЬНО новое.
http://www.codetapper.com/assets/stardust/stardust_tunnel_in_memory.png
http://www.codetapper.com/assets/stardust/stardust_tunnel_anim.gif
ZX_NOVOSIB
29.10.2015, 13:50
А математические гении если и есть среди спектрумистов - пока что не изобрели ничего.
Значит надо поменять подход, не искать математиков среди спектрумистов, а подкатить к математикам и задать им задачку, сделать, хотя бы на время, из математика - спектрумиста ))
---------- Post added at 16:50 ---------- Previous post was at 16:46 ----------
Этот, кто он, доказал теорему Пуан-Каре который, он сделал невозможное, значит он потянет на спектруме сделать быстрое 3D )) Надо только на него выйти, подкараулить его, где он, в Москве, в Петербурге?
вы только в первопост вчитайтесь - рей кастинг на калькуляторах даже бегает. т.е. там, где и памяти в гулькин нос, где нет совсем ничего аппаратного и т.д. и ничего. я насчитал минимум 3 разных движка рей кастинга - wolf, maze 3d, doom83. Был ещё там какой- то дум. При этом, всё есть в исходниках(!!!).
При этом, вспоминаем, дум от ДР вполне шустрый. Если учесть, что нынче у многих такие железки как Эво, Профи, атм, Спринтер и другие клоны с наличем кнопочки "турбо", то эта ДРовская демка начинает летать. Там без турбы вполне играбельный фпс, а в турбе оно совсем играбельно становиться.
Алоновский вольф, как я помню, фреймовый был (в турбе так точно). Но эти чанки - мои глаза вытекают.
Я читал статью Алона и Ширу про рей кастинг (статья - сделай себе немного дума). Там речь была о том, что в целом на спектруме, если откинуть всякие выкрутасы, типа наклонных и скруглённых плоскостей, то движок аля Вольф вполне может быть и при чём не медленным. Опять-таки - два подтверждения - Цитадель и дум от ДР. И это при том, что в думе 3 разных режима вывода - монохром в мелком окошке, цветное в мелком окошке и, якобы фулскрин чересстрочный. Можно так же предположить, что на 128м там сильно экономили на разных процедурах и прочих расчётах. Я уверен, что на той же Эве или Спринтере такой двиг летать должен. Опять таки - дум на Спринтере очень шустрый, но там прошивка с аппаратным масштабированием (исходников которой нет, но логика её примерно ясна, точнее я понял что она делает).
Так кто спорит, он выжал всё что можно, только это не помогло...
Очень помогло. Стало реально играбельно.
---------- Post added at 14:13 ---------- Previous post was at 14:12 ----------
http://www.codetapper.com/assets/stardust/stardust_tunnel_anim.gif
Юра, ну это-то к чему?
вы только в первопост вчитайтесь - рей кастинг на калькуляторах даже бегает. т.е. там, где и памяти в гулькин нос, где нет совсем ничего аппаратного и т.д. и ничего. я насчитал минимум 3 разных движка рей кастинга - wolf, maze 3d, doom83. Был ещё там какой- то дум. При этом, всё есть в исходниках(!!!).
При этом, вспоминаем, дум от ДР вполне шустрый. Если учесть, что нынче у многих такие железки как Эво, Профи, атм, Спринтер и другие клоны с наличем кнопочки "турбо", то эта ДРовская демка начинает летать. Там без турбы вполне играбельный фпс, а в турбе оно совсем играбельно становиться.
Алоновский вольф, как я помню, фреймовый был (в турбе так точно). Но эти чанки - мои глаза вытекают.
Я читал статью Алона и Ширу про рей кастинг (статья - сделай себе немного дума). Там речь была о том, что в целом на спектруме, если откинуть всякие выкрутасы, типа наклонных и скруглённых плоскостей, то движок аля Вольф вполне может быть и при чём не медленным. Опять-таки - два подтверждения - Цитадель и дум от ДР. И это при том, что в думе 3 разных режима вывода - монохром в мелком окошке, цветное в мелком окошке и, якобы фулскрин чересстрочный. Можно так же предположить, что на 128м там сильно экономили на разных процедурах и прочих расчётах. Я уверен, что на той же Эве или Спринтере такой двиг летать должен. Опять таки - дум на Спринтере очень шустрый, но там прошивка с аппаратным масштабированием (исходников которой нет, но логика её примерно ясна, точнее я понял что она делает).
а есть информация по тому какие процы этих устройствах стоят?
сколько там памяти какие возможности там?
ага нашел
https://en.wikipedia.org/wiki/TI-84_Plus_series
CPU: Zilog Z80 15 MHz, with 6 MHz compatibility mode.
Flash ROM
Plus Edition: 480 KB user accessible of 1 MB
Silver Edition: 1.5 MB user accessible of 2 MB
Third-party software permits usage of FAT16-formatted USB drives
RAM: 24 KB RAM user accessible of 128 KB (48 KB on newer models)
Display
Text: 16×8 characters (normal font)
Graphics: 96 (0-95) ×64 (0-63) pixels, monochrome (software grayscale can be used) LCD
Юра, ну это-то к чему?
случайно наткнулся,
решил ещё освежить свою память и загрузил ДРовский дум. да, там немного не честные расчёты. при движении стены не меняются. т.е. можно сказать, что текстуры заранее рассчитаны по удалению. А вот в цитадели, там уже интереснее. Побегал там слегка, прикольно. Поставил без турбы. Ну, где то кадров 10 наверно. Поставил турбину и ОПА...летает)))
---------- Post added at 17:38 ---------- Previous post was at 17:37 ----------
jerri, ты шибко жирную модель выбрал, посмотри на TI-83. она чуть тормознее и памяти там меньше. Но сути это не меняет - там рей кастинг работает, хоть и умеренно.
jerri, ты шибко жирную модель выбрал, посмотри на TI-83. она чуть тормознее и памяти там меньше. Но сути это не меняет - там рей кастинг работает, хоть и умеренно.
96х64, 96х64, Карл
надо еще посмотреть как там экран организован.
Shadow Maker
29.10.2015, 16:26
Очень помогло. Стало реально играбельно.
Играбельно - когда есть игра. Когда есть только демка в стиле "Citadel от Сталкера скоро выйдет!" - это неиграбельно.
Из того, что играбельно - можно только Дум от DR вспомнить, пожалуй.
Shadow Maker, играбельно это когда можно самому побегать и всё прочее проделать. есть две демы цитадели. В обеих можно бегать. Во второй есть и оружие и противник. А если внимательнее глянуть, то в цитадели обзор не только влево и вправо, вперёд и назад, а ещё и вверх и вниз.
jerri, я тебе могу сказать больше - он там какбы чб. Только кто мешает на спектруме в том же окошке как у калька выводить карту?
Shadow Maker
29.10.2015, 16:39
Shadow Maker, играбельно это когда можно самому побегать и всё прочее проделать. есть две демы цитадели. В обеих можно бегать. Во второй есть и оружие и противник. А если внимательнее глянуть, то в цитадели обзор не только влево и вправо, вперёд и назад, а ещё и вверх и вниз.
Не, играбельно это когда играть можно. Когда играть нельзя - где же тут играбельность? Ходить бесцельно по лабиринту - не игра.
---------- Post added at 16:39 ---------- Previous post was at 16:38 ----------
jerri, я тебе могу сказать больше - он там какбы чб. Только кто мешает на спектруме в том же окошке как у калька выводить карту?
Шутишь чтоли? 96на64? Кто в таких муравьев играть-то будет в четверть экрана :) Это на калькуляторе пиксели огого, там видно.
Andrew771
29.10.2015, 16:50
Созвучная тема: http://zx-pk.ru/showthread.php?t=21851
если увеличить в 2 раза по горизонтали и вертикали то получится
192 (3/4) на 128 (2/3) спектрумского экрана.
ну как раз цитадель будет
Не, играбельно это когда играть можно. Когда играть нельзя - где же тут играбельность? Ходить бесцельно по лабиринту - не игра.
давай по порядку:
1. дум от ДР - в демке можно бегать, шатать ИИ, бабахать бочки, рыскать по комнаткам, открывать двери. концовки нет и никогда не было.
2. цитадель, вторая демка что в архиве опенсорса и на вирте торчит. можно шатать ИИ, бабахать бочки, рыскать по комнаткам, открывать двери. концовки нет и никогда не было.
собственно: http://vtrdos.ru/demo_ver/CITDEMO-.ZIP
обе демки играбельные. ещё пример играбельной демы:
демка первой и второй частей Чёрного Ворона. Можно ещё примеры приводить.
Пример не играбельной демы - всякие чипы и дейлы, чёрный плащь, ещё там пачка аркадных приставочных и не только поделок.
Шутишь чтоли? 96на64? Кто в таких муравьев играть-то будет в четверть экрана
в думе и цитадели тоже не фул скрин, как бы.
ПЛИС тут никто не одобряет, скорей всего из-за неграмотности, так-что нечего не будет... Есть ts-conf к примеру уже на многих платах с возможностью доработки движка...
ну пусть будет без плисины (лишь бы небыло ts).
1. дум от ДР - в демке можно бегать, шатать ИИ, бабахать бочки, рыскать по комнаткам, открывать двери. концовки нет и никогда не было.
Концовка там вообще-то есть
ПЛИС тут никто не одобряет
и вообще, что это значит, плис не одобряют? эво довольно популярная "машинка". Бэйс конфа по сути своей как атм, только шустрее. Спринтер? Тем более шустрее.
Про какие плис речь? про навороты, режимы, аксели или что?
Без ПЛИС темболее...
речь про 8 бит, а не 32 бита. на 32 любой дурак сможет.
Концовка там вообще-то есть
специально именно сегодня все комнатки обошол, всех ботов перешухерил. бегал как дураг один по карте. концовки там нет.
Doom уж и на калькуляторах и принтерах сделали, но доблестные спектрумисты, которые все из-себя программисты и на всех форумах отмеченные и нигде не появляющиеся — ничего не осилили.
специально именно сегодня все комнатки обошол, всех ботов перешухерил. бегал как дураг один по карте. концовки там нет.
http://vtrdos.ru/demo_ver/DOOM_PR.ZIP
Загрузи сохраненку в этой версии и зайди в дверь.
1. дум от ДР - в демке можно бегать, шатать ИИ, бабахать бочки, рыскать по комнаткам, открывать двери. концовки нет и никогда не было.
И никто их за двадцать лет не переплюнул, даже чудные конфиги и большие мегагерцы не помогли.
И никто их за двадцать лет не переплюнул, даже чудные конфиги и большие мегагерцы не помогли.
не переплюнул в чём? чисто технически для 128го лучший движок у Цитадели. потому, что расчёты там более честные, а не заготовленные спрайты как в думе.
Двери открываются, а не белые простыни сползающие. При это есть обзор по вертикали. Ах да, ещё текстурки стен с анимацией. чисто визуально, тормозит меньше или так же, но наворотов больше. по играбельности они одинаковы.
хотя тут речь не про именно дум от ДР или от Сталкера, а про то,что это всё демы не вышедших игр. Про то, что таки хочется чтобы и на спектруме был дум или его подобие.
я ещё раз хочу напомнить, что игры с рей кастингом есть под z80, калькуляторы. значит можно и на Спектрум затащить. видел, кстати, на мсх ресорсе, какую то демку дума или Вольфа для мсх, толи 2, толи ТР, не понял...
sergio78
29.10.2015, 18:33
Без ПЛИС темболее...
DOOM on ZPU (http://turbogrill.blogspot.com/2014/06/doom-on-zpu.html)
http://www.youtube.com
и чему гордиться? дум на 33 мгц dx i386 процессоре с видеокартой от цирруса бегал, а тут 225 мгц. это вот когда требующий p90 второквейк на 16 мгц атари внезапно бегать будет, вот это достойно восхищения. http://www.atari-forum.com/viewtopic.php?t=26775 и даже тут же бегающий дум, так же подпрыгивать заставляет. http://www.youtube.com/playlist?list=PLNs6Jw4V4vlv6FSCkPpYFVYoOGiLtcniv плис дейстительно бестолковая затея. стоит дорого, снимается с производства быстро, паять трудно, а помирают они наверное очень быстро и легко. а самое главное, зачем они вообще нужны? постоянно тестировать плохонаписанные глючные прошивки, под малораспостраннённые другие конфигурации железок, под которые и в их время софт почти никто не писал? либо так же тестировать придуманную зачем то конфигурацию, вроде ts, под которую так же софта не будет.
и чему гордиться? дум на 33 мгц dx i386 процессоре с видеокартой от цирруса бегал, а тут 225 мгц. это вот когда требующий p90 второквейк на 16 мгц атари внезапно бегать будет, вот это достойно восхищения.http://www.atari-forum.com/viewtopic.php?t=26775 и даже тут же бегающий дум, так же подпрыгивать заставляет. http://www.atari-forum.com/viewtopic.php?t=26775
Фалкон не интересна, там 32бита проц и не хилый (по тем временам).
---------- Post added at 21:55 ---------- Previous post was at 21:42 ----------
собственно, вот ещё пример 8ми битного рей кастинга
http://www.youtube.com/watch?v=Z3-J2-VeoH8
sergio78
29.10.2015, 19:01
Фалкон не интересна, там 32бита проц и не хилый (по тем временам).
собственно, вот ещё пример 8ми битного рей кастинга
http://www.youtube.com/watch?v=Z3-J2-VeoH8
зато без матпроцесора, и сплошное использование оптимизированного ассемблера, которое рискует попасть в книгу рекордов гиннеса, как одно из самых мощных. ладно, а если вольфенштейн на сеге? тоже не катит?
всё, понеслось, I7, конфиги, плисы... СТОП! А при чём тут тогда Спектрум? Для творчества на плисах и всяких I7 есть другие форумы. Тут про спектрум как бы говорим.
---------- Post added at 22:04 ---------- Previous post was at 22:02 ----------
а если вольфенштейн на сеге? тоже не катит?
не катит, т.к. моторолла 68к. Только 8 бит (только хардкор)!
CodeMaster
29.10.2015, 19:04
я лишь показал, что Спектрум на базе ПЛИС
ZPU в разы менее Спектрум, ичем даже пресловутый АТМ.
sergio78
29.10.2015, 19:13
sergio78, я лишь показал, что Спектрум на базе ПЛИС на маленькой платке с такой задачей справится сейчас не хуже чем i386DX@33MHz с видеокартой ) К тому-же, благодаря ПЛИС, есть большие возможности для аппаратного творчества. Т.е. кому что интересно, можно особо и не заморачиваться, есть современные решения типа i7 Skylake с парой видео карт, но тут пока ещё (ждать немного осталось) свой проц и логику не напишешь на Verilog или VHDL...
то что платка маленькая, не делает ей чести. core i7 это уже другая крайность, на которой работать могут только огромные комманды разработчиков, а единичные инди разработчики, только народ могут насмешить. сейчас есть куча мобильных устройств, на которых огромный простор для именно такого современного творчества. ПЛИС же это очень и очень узкая ниша. в ней в основном только макет чего либо разрабатывать хорошо, если что получиться, можно потом за прошивку бабки большие рубить можно.
---------- Post added at 20:13 ---------- Previous post was at 20:07 ----------
не катит, т.к. моторолла 68к. Только 8 бит (только хардкор)!
математические функции на z80 очень очень слабые, а с математиками ненуждающимися в постоянной работе в других местах, у нас очень туго. у индусов их много, но они по спектруму не западают пока. тут спасёт только arm конралёр -ускоритель 3-2.5D, они имеют доступ к внешней памяти, в отличае от pic или avrов. по крайней мере с математикой будет проще.
с математиками ненуждающимися в постоянной работе в других местах, у нас очень туго. у индусов их много, но они по спектруму не западают пока
те это толстый намёк на то, что на форуме в рей кастинге никто не шарит? смешно)))
sergio78
29.10.2015, 19:19
те это толстый намёк на то, что на форуме в рей кастинге никто не шарит? смешно))) это намёк на то, что на голой 128 спектрум конфигурации, будет медленно и очень некрасиво, кто бы за это не брался.
не переплюнул в чём? чисто технически для 128го лучший движок у Цитадели. потому, что расчёты там более честные, а не заготовленные спрайты как в думе.
Технически-то да, все из себя, круче некуда, Wolf2004 уже неплох, но по играбельности никто и рядом не стоял. Годы идут, дум скоро и на утюгах будет играбелен, а на всяких атм, эво, и прочих прочих только бомберы с тетрисами и сокобанами.
это намёк на то, что на голой 128 спектрум конфигурации, будет медленно и очень некрасиво, кто бы за это не брался.
да, конечно, на старом добром и ламповом 128кб на 3.5мгц... хотя СТОП! об чём это мы? Демки дума и цитадели (особенно вторая) на 128м при 3.5 мгц бегает очень не плохо. я же говорю не именно про двжок перво или второ думов. я говорю про движок аля вольф. а его накидать куда более реально, чем думовский. опять таки, запускаем цитадель в турбо режиме и ОПА, а где тормоза то? а их, внезапно, нет.
Wolf2004 уже неплох, но по играбельности никто и рядом не стоял.
Вольф совсем не играбелен. Да, технически он пожалуй круче всех будет, но долбанные чанки просто глаза ломают. Я сегодня погонял пару часов в демку дума и цитадели. цитадель мне больше понравилась.
Я сегодня погонял пару часов в демку дума и цитадели. цитадель мне больше понравилась.
Там просто прогулка по лабиринту бесцельная в цитадели, и всё монохромное. В doom от ДР хоть какое-то подобие оригинала, да ещё и пострелять можно.
Вольф совсем не играбелен.
Вот и я про это.
sergio78
29.10.2015, 19:45
Технически-то да, все из себя, круче некуда, Wolf2004 уже неплох, но по играбельности никто и рядом не стоял. Годы идут, дум скоро и на утюгах будет играбелен, а на всяких атм, эво, и прочих прочих только бомберы с тетрисами и сокобанами. это потому что, в этих утюгах стоят мощьные ARM процессоры, которые перемалывают немного подправленный код уже написанного 20 лет назад открытого движка ID. и эти утюги в каждом доме стоять будут скоро. в то время как всякие атм, эво, и прочие прочих , у нескольких десятков радиолюбителей имеются только на столе. несопоставимое количество пользователей и соответственно единичные программисты, которые вообще под ненужные спектруму расширения, что то написать могут.
которые вообще под ненужные спектруму расширения, что то написать могут.
Пока получается, что не могут.
sergio78
29.10.2015, 19:51
да, конечно, на старом добром и ламповом 128кб на 3.5мгц... хотя СТОП! об чём это мы? Демки дума и цитадели (особенно вторая) на 128м при 3.5 мгц бегает очень не плохо. я же говорю не именно про двжок перво или второ думов. как раз дальше демки поэтому и не пошло, то что для полноценной игры требовались ещё многие ресурсы, а они уже на половине необходимого для полноценной игры потенциала, уперлись в непреодалимую стену. на сеге тоже 3D демки офигенные делали, и точно так же до финальной игры ничего не дошло, по той же причине.
---------- Post added at 20:51 ---------- Previous post was at 20:50 ----------
Пока получается, что не могут.
нет достаточного числа популяции программистов, что бы один из них обязательно внезапно это смог. программисты выходят из среды пользователей, которых обязательно в 1000 раз больше быть должно. закон вероятности вселенной.
Там просто прогулка по лабиринту бесцельная в цитадели, и всё монохромное. В doom от ДР хоть какое-то подобие оригинала, да ещё и пострелять можно.
http://vtrdos.ru/demo_ver/CITDEMO-.ZIP
тут и пострелять можно и бочки повзрывать и лабиринты и (!) двери есть открываемые и боты и ...
Тема, к слову сказать, как "мышиная возня". Раз в год "то тут, то там" на площадке форума возникает вопрос, а за ним и тема, типа "вот бы создать что-то такое, на это ..... похожее". Немногое большинство писали о том, что можно создать раздел по созданию компьютерной игры, где поэтапно "умеющие и знающие" расскажут "серым и безграмотным", как создать игру. Не лучше бы начать с двух "учебников" по созданию игр на Spectrum-е. Если у кого есть желание, и что-то из набросков, как исходников игры, то он мог бы вести раздел или тему по созданию игры. Желающих почитать и, (возможно), дополнить чем-то своим, хотя бы и графикой, или музыкой, но может быть и текстами в машинных кодах будет достаточно.
С уважением ко всем, кто это дочитал.
http://vtrdos.ru/demo_ver/CITDEMO-.ZIP
тут и пострелять можно и бочки повзрывать и лабиринты и (!) двери есть открываемые и боты и ...
Люто глюченная демка, экран мелкий, враги монохромные тупо сконверченные, лютый клэшинг на верху стен, сетап недееспособный, чуть что всё в васик вываливается.
А помню я ещё боле старую демку цитадели, там не было цвета и нельзя было стрелять.
---------- Post added at 20:11 ---------- Previous post was at 20:09 ----------
Раз в год "то тут, то там" на площадке форума возникает вопрос, а за ним и тема, типа "вот бы создать что-то такое, на это ..... похожее".
Кто-то не будет делать что-то для кого-то. :)
Люто глюченная демка, экран мелкий, враги монохромные тупо сконверченные, лютый клэшинг на верху стен, сетап недееспособный, чуть что всё в васик вываливается.
3 (три) режима вывода, как в думе - чересстрочный, фулскрин и мелкое окошко. Ах да, фулскрин в цвете или монохром. Режим рендера слоу (обычный) или быстрой (пропускает, как я понял, какое то кол-во градусов при повороте/движении), клэшинг есть и в думе (небо - статическая картинка а тут анимация). Враги да - конверченные. но тут не проблема кодера, а художника.
Сетап, кстати, всё работает - режимы выставляются, всё выбирается. так же там чётко сказано. что по кнопке Q сделать выход. если убили, конец игре (тут да, глюк, согласен).
и тем не менее, технически:
в думе нет пересчёта при движении, просто перебор заготовленных спрайтов пола и стен. Про ботов пока не понял.
в думе нет анимации на стенах, нет дверей, нет стрейфа, нет обзора по вертикале, движения топорные (чётко по клеткам размером в текстуру). Ближайший современный аналог среди игр, игра спейс марине написанная на си под эву. там тоже так же - заранее заготовленные спрайты и движения жуть топорные. В цитадели хоть подобие рейкастинга, а дум это читерство какое-то с точки зрения кода. Конечно, для такой игры ресурсов не хватит - все текстуры держать со всеми удалениями и поворотами в памяти на весь уровень. тут и метра может не хватить.
NEO SPECTRUMAN
30.10.2015, 00:38
ни комментариев, ни каких-то пояснений.
чего-то, можно понять
большая проблема в том что они
под аласм
раза 3 пытался сделать компилируемый исходник
и все время делал вывод
что мне проще его вообще отдизасмить чем пытаться сконвертировать оно хотя бы в текст(на 100% соответствующий оригиналу(правда недавно натыкался еще на одну конвертилку но пока не пробовал)) какими то полу рабочими плагинами для тоталкомандера
а потом еще вникать в эту аласмятину...
а возится из под эмуля это какой то аутизм
учитывая шрифт 4х2 в 256х192 версии аласма
чтоб сделать хоть какое то изменение, чтоб проверить что за что отвечает
100500 телодвижений, 2 минуты ждать, исходника, что же сейчас там на изменял, не видно...
а дум это читерство какое-то с точки зрения кода. Конечно, для такой игры ресурсов не хватит - все текстуры держать со всеми удалениями и поворотами в памяти на весь уровень. тут и метра может не хватить.
Вот в ZXOOM и не хватило, но там еще похуже Wolf2004 с играбельностью, там её вовсе нет.
Вот в ZXOOM и не хватило, но там еще похуже Wolf2004 с играбельностью, там её вовсе нет.
Так вот. Уходя от темы "анимации", поговорим про рей кастинг. Про то, что нам не нужно заготавливать 100500 спрайтов на все случаи. Поговорим о том, что можно делать расчётами. Почему-то в цитадели, в думах и вольфах на калькуляторах, под всё хватает ресурсов. Ну т.е.если не заниматься анимацией, товсё должно влезать.
Sayman, 96х64. у тебя есть информация как на калькуляторе организован экран?
Sayman, 96х64. у тебя есть информация как на калькуляторе организован экран?
не привязывайся к разрешению калькуляторов. По факту, в демках дума и цитадели разрешение ещё меньше. А фуллскрин за счёт увеличения точки в спрайтах/текстурах. В Вольфе2004 от Алона разрешение ещё меньше, 32на32, рисуется вообще чанками. Аппаратных спрайтов на калькуляторе нет это точно.
Shadow Maker
30.10.2015, 10:08
давай по порядку:
1. дум от ДР - в демке можно бегать, шатать ИИ, бабахать бочки, рыскать по комнаткам, открывать двери. концовки нет и никогда не было.
2. цитадель, вторая демка что в архиве опенсорса и на вирте торчит. можно шатать ИИ, бабахать бочки, рыскать по комнаткам, открывать двери. концовки нет и никогда не было.
У DR концовка есть и всегда была. У цитадели концовки не было.
По-твоему времени на то, чтобы пиксель увеличить в 4 раза не надо совсем, да? Раз плюнуть? А про строение экрана спектрума слышал? А про строение экрана калькулятора видел?
Вообще поражают периодически люди, как что работает - без понятия, зато "а фигли, вон там меньше проц, зато работает, какого черта у нас нет дума до сих пор". А то, что там вообще может быть что угодно, что например позволяет сделать демку типа https://www.youtube.com/watch?v=Z8Av7Sc7yGY в 256! байт - это пофиг, главное же проц и память, да...
не привязывайся к разрешению калькуляторов. По факту, в демках дума и цитадели разрешение ещё меньше. А фуллскрин за счёт увеличения точки в спрайтах/текстурах. В Вольфе2004 от Алона разрешение ещё меньше, 32на32, рисуется вообще чанками. Аппаратных спрайтов на калькуляторе нет это точно.
У алона расширение экрана 256 на 176 а можно кстати и 256х192 сделать
5-7 фпс при этом с отображением предметов.
я про последний его движок который XorFill использует.
размер текстур 32х32 но этого вполне достаточно.
У DR концовка есть и всегда была. У цитадели концовки не было.
По-твоему времени на то, чтобы пиксель увеличить в 4 раза не надо совсем, да? Раз плюнуть? А про строение экрана спектрума слышал? А про строение экрана калькулятора видел?
Вообще поражают периодически люди, как что работает - без понятия, зато "а фигли, вон там меньше проц, зато работает, какого черта у нас нет дума до сих пор". А то, что там вообще может быть что угодно, что например позволяет сделать демку типа https://www.youtube.com/watch?v=Z8Av7Sc7yGY в 256! байт - это пофиг, главное же проц и память, да...
об чём речь, уважаемый? я же сказал, аппаратных спрайтов там нет, блиттеров там нет, расслабьтесь.
У алона расширение экрана 256 на 176
Покажи, где ты тут увидел 256 на 176?
http://zx-pk.ru/attachment.php?attachmentid=53910&stc=1&d=1446191088
кстати строение экрана это очень важно
если у калькулятора 1 байт = 1 точка то на нем организовать вывод 3д графики гораздо проще чем на спеке с его специфичным экраном.
По-твоему времени на то, чтобы пиксель увеличить в 4 раза не надо совсем, да?
способов увеличивать пиксели в 4 раза есть много. На спектурме один из них это чанк. Но чанковый вариант рейскастинга уже есть и он выглядит не очень красиво. Кроме того, вот тут хорошо показан пример вывода спрайта на экран 83го калькулятора, чтобы было понятно. насколько там тормозно это может быть:
http://www.ticalc.org/pub/83/asm/source/routines/sprite.z80
Shadow Maker
30.10.2015, 11:02
об чём речь, уважаемый? я же сказал, аппаратных спрайтов там нет, блиттеров там нет, расслабьтесь.
Речь о специфическом строении спектрум-экрана. Как бы намного быстрее выводить, когда у тебя линейный экран и пиксель=байту, например, или типа того.
об чём речь, уважаемый? я же сказал, аппаратных спрайтов там нет, блиттеров там нет, расслабьтесь.
Покажи, где ты тут увидел 256 на 176?
да я тебе не про то что старое
а про новый движок WOLF48
работает по новой схеме очень эффективно и тд
да я тебе не про то что старое
а про новый движок WOLF48
работает по новой схеме очень эффективно и тд
тьфу на вас. и чего вы мне тут все доказываете, что на спектруме такое не возможно? летает, выглядит очень здорово. Исходнички ещё теперь надо...
Sayman, а про исходники уже полтемы написано :)
они нечитаемы.
Shadow Maker
30.10.2015, 11:46
тьфу на вас. и чего вы мне тут все доказываете, что на спектруме такое не возможно? летает, выглядит очень здорово. Исходнички ещё теперь надо...
Кто чего доказывает? :) Мы тебе говорим, чтобы ты не аппроксимировал калькуляторы на спектрум только потому, что они калькуляторы и менее мощные.
Это технодемка же. Врагов нет, не струляет никто. Разобраться с исходниками может только алоне (ну или еще кто, кого я не знаю). Не факт, что врагов туда вообще можно запихать. А если и можно - никто не взялся до сих пор за два года :)
тьфу на вас. и чего вы мне тут все доказываете, что на спектруме такое не возможно? летает, выглядит очень здорово. Исходнички ещё теперь надо...
Тебе доказывают наоборот, что Алониевский движок - единственный годный для таких игр, т.к. по скорости и другим параметрам вполне себе играбельный.
Тебе доказывают наоборот, что Алониевский движок - единственный годный для таких игр, т.к. по скорости и другим параметрам вполне себе играбельный.
Алоновский движок, а точнее его исходники, пока не переваривается психикой местных гуру в 99% случаях.
Алоновский движок, а точнее его исходники, пока не переваривается психикой местных гуру в 99% случаях.
Гуру чего хочешь переварят. Только они либо ленивые, либо им пофигу)
А ленивы потому что пофигу)
Гуру чего хочешь переварят. Только они либо ленивые, либо им пофигу)
А ленивы потому что пофигу)
да да. а пофигу потому, что не переваривают))) бгг
можт, денег кому нить забашлять, тыщ 5? за разборы исходников вольфа48к в sjasm, чтобы компилился, с коментами;)?
Shadow Maker
30.10.2015, 14:45
Лучше забашляй alone. Автор-то полюбому лучше разберется.
да да. а пофигу потому, что не переваривают))) бгг
можт, денег кому нить забашлять, тыщ 5? за разборы исходников вольфа48к в sjasm, чтобы компилился, с коментами;)?
*внимательно смотрит
Насчет комментов никто не обещает.
а вот для компиления версию собрать можно, но с учетом самосоздающихся меток и двойной условной компиляции это будут веселые исходники и далеко не последняя версия. как то так.
---------- Post added at 15:51 ---------- Previous post was at 15:47 ----------
Лучше забашляй alone. Автор-то полюбому лучше разберется.
ну ну. Автор предложит использовать Аласм.
он всем предлагает.
Еще есть вариант написать аласм на ПЦ благо спектрумские исходники доступны.
Shadow Maker
30.10.2015, 14:57
ну ну. Автор предложит использовать Аласм.
он всем предлагает.
Еще есть вариант написать аласм на ПЦ благо спектрумские исходники доступны.
А смысл писать под аласм на ПЦ, если никто не понимает такой код Аласма кроме alone? Получаются те же яйца, только на нативном компиляторе под ПЦ - и зачем оно надо?
Andrew771
30.10.2015, 15:15
Объяснительная Alone (http://zx-pk.ru/showpost.php?p=526261&postcount=17)
Я так понимаю, у сжасма нет условий компиляции?
у сжасма условия компиляции есть, вот только у аласма, насколько я помню, они жутко специфичные.
У аласма я пока нашол только ifn из условий компиляции.
Из мануала к аласму:
Пользуясь условиями типа
IF0 " "-"\1 "
или
IF0 ?macroname\1-2
можмо определять макросы с переменным числом параметров.*
сжасм нечто такое вряд ли проглотит
ну вот из мануала на сжасм:
It may be useful to assemble a part or not based on a certain condition.
IF <expression>
--
If <expression> is non-zero the following lines are assembled until an ELSE or ENDIF.
IFDEF <id>
-----
The condition is true if there is an id defined. These are NOT labels.
IFDEF MSX_LEAN_AND_MEAN
CALL InitOwnMM
ELSE
CALL InitDos2MemMan
ENDIF
...
Another example:
MACRO LOOP
IF $-.lus<127
DJNZ .lus
ELSE
DEC B
JP NZ,.lus
ENDIF
ENDM
нужно смотреть на конкретных примерах в исходниках, что там с этими условиями намучено.
sergio78
30.10.2015, 20:53
дело 3d спасёт только математический сопроцессор. и наверное нужно делать его, как делал Weitek. то есть выделить адрес памяти, куда будут загружаться данные, и считыванием от туда забираться уже полученный результат. текстуры можно генерить процедурно, расход памяти это каардинально уменьшит. но где же взять людей, под это дело, очень серьёзный вопрос, сопоставимый по сложности с открытием паралельных вселенных на БАКе.
можт, денег кому нить забашлять, тыщ 5? за разборы исходников вольфа48к в sjasm, чтобы компилился, с коментами
Вот с этого и надо начинать, а то понимашь сделай им всё на халяву. "Спасибо" в карман не положишь. Но тут всех внезапно задушит жаба. :)
ну вот из мануала на сжасм:
нужно смотреть на конкретных примерах в исходниках, что там с этими условиями намучено.
если ты про движок Алона
то вот тут я писал (http://zx-pk.ru/showthread.php?t=17907) как раз об этом
кстати строение экрана это очень важно
если у калькулятора 1 байт = 1 точка то на нем организовать вывод 3д графики гораздо проще чем на спеке с его специфичным экраном.
А на zx-evo?
А на zx-evo?
ну мы тут как бы калькулятор обсуждаем :)
ну мы тут как бы калькулятор обсуждаем
Играбельно не получится. Но это так, мечты.
sergio78
30.10.2015, 22:40
А на zx-evo?
да хоть какое, под него точно уже писать никто не будет похоже. четыре игры, из которых самая это бомбермен, за всё время, это весьма зачётный показатель.
да хоть какое, под него точно уже писать никто не будет похоже. четыре игры, из которых самая это бомбермен, за всё время, это весьма зачётный показатель.
Я честных целых 30 минут пытался воткнуть, чего там алоне кодер сделал, и как это работает. Безрезультатно. Но если это кто то все-таки победит, и решит сделать полноценную игрушку, я лично обещаю сделать охрененные, очень сбалансированные, уровни!
да хоть какое, под него точно уже писать никто не будет похоже. четыре игры, из которых самая это бомбермен, за всё время, это весьма зачётный показатель.
Может и будут, к конкурсу, за вознаграждение, за много $, это же Россия.
Ну хз. Например, предположим, я объявляю конурс, за %%% у.е. Какие правила?
Тут кто-то верно заметил (и не раз) что тема вменяемого 3D-шутера для спека периодически на форуме взлетает и гаснет.
Напоминает повесть А.Азимова "Конец вечности" где "вечные" (люди контролирующие время) постоянно вносили коррективы для лучшей жизни всех, и удивлялись почему человеки ("времяне") постоянно пытались лететь к звёздам (при этом попытки эти не удавались, на земле становилось всё лучше жить, но попытки строить межзвёздные корабли не прекращались несмотря на крахи. в общем кому интересно прочтёте, а счаз чуть о другом, хотя паралели с форумом и спеком провести можно).
Итак: Ребяты, а мож харе трепатся просто так, а начнем как-то нашу общую мечту реализовывать?
Для начала - собрать базу знаний о предмете разговора.
Ну ладно, исходники алоновские есть, что-то можно выковырять и из цитаделей всяких и прочего (а я по честному не отказался бы и от сорцев DoomMania, как-то был на форуме разговор о ней, но самый Злой и Какой-то там чел просто ляпнул что мол IDA всех спасёт и на этом помощь закончилась. я попрпобовал, дизасмнул, но конечно это не исходник и даже не в помощь, ибо я в демо-строении мало волоку, а там как-раз приёмы в общем-то демовские).
Так что предлагаю как-то объединить все знания по спек-3д, но не на уровне "скачать архив сорцев" или там какой-нибудь 3d-Construction-Kid, а именно тред где всякие эти вопросы (технические) обсуждаются и решаются.
И (кстати) именно тут нужно будет неусыпное наблюдение модера, чтобы если оффтоп - тут-же предупреждение (а кое-кому и построже, ага)...
Лично я готов поговорить на эту тему, поделится (да я и так делился, правда в разных тредах), но надо как-то систематизировать.
А если не найдётся кому всё в порядок привести - то нечего зря трепатся, темы плодить... Значит так и будем варится каждый сам по себе...
Всеми конечностями поддерживаю предыдущего оратора, и готов безвозмездно поучаствовать в начинании! Смогу пожертвовать финансы, в очень скромных количествах, и помощь в дизайне уровней.
---------- Post added at 07:27 ---------- Previous post was at 07:22 ----------
Реквестуется Алоне. Ему все респекты. Алоне, явись!:v2_dizzy_punk:
SaNchez, Да ты не спеши, тут сперва с техническими деталями воевать и воевать (ох и тяжкое это дело - 3д на спеке).
До готового продукта - дальше чем до Луны.
Если проводить аналогии - мы сейчас примерно в 30-х годах, до полёта в космос - ох как тяжко и трудно.
Так что свою финансовую помощь можешь пустит на создание (или поддержку если уже есть) специального ресурса (на базе zx-pk.ru) где вся тематика и усилия будут только про спек-3д.
Эдакое конструкторское бюро.
Возможно что-то из этого и выйдет (при должной организации)
Похоже, ты просто не видел демки движка алонекодера, работающего в 48кб.
Destr, я частично понимаю твои опасения, но не совсем. Дигиталреалорский дум мог бы стать первым думом на спеке, но так и не стал. А были все предпосылки.
да хоть какое, под него точно уже писать никто не будет похоже. четыре игры, из которых самая это бомбермен, за всё время, это весьма зачётный показатель.
а сколько игр написал/проспонсировал/задизайнил ты?
Похоже, ты просто не видел демки движка алонекодера, работающего в 48кб.
jerri (в предыдущих постах) слегка намекнул, но я чтоб не было недоразумений поясню:
Видел алоновские движки.
Снимаю шляпу перед ним.
Лично ему это говорил.
Показывал ему мой двиг (зародыш)
В общем в сути (хоть и слабо) - разбираюсь.
Shadow Maker
30.10.2015, 23:50
Я не понял, чего вы хотите. Хотите алоне - пишите алоне на почту. Хотите движки дизассмить - толку будет мало, если вы в них не будете смотреть и разбираться сами, как оно работает - просто от сурсов обычно толка немного, пока сам не разберешься.
Никого не хочу обидеть, но может обижу. В движке алонекодера разберется только алонекодер. Вот поэтому он реквестуется в эту тему, как единственный и неповторимый кодер, который поможет нам. От нас требуется обвязка - сценарий, графон, музло, уровни. Кто не согласен с этим - тот пришел ниочём.
Вообще вся шляпа в том что тут (в 3д) происходит убивание времени на правильный обсчёт и на вывод.
Ведь даже готовую картинку освежить - это целый фрейм убить.
А если предварительно нужно обсчитать("освежить") каждый из 256 столбцов вертикальных в этой картинке?
То получается (нет, не ещё один фрейм, а гораздо дольше!)
Почему это происходит?
Ну для понимания неплохо-бы ознакомится со статъёй Сделай себе немного Doom`a (http://zxpress.ru/article.php?id=8482).
Я тоже, дурень этакий прочел и забыл.
Потом вернулся, начал разбиратся...
Понял что все кругом ламеры и всё оказывается так просто.
И резко как закодил!
Только всё работало при 400-кратном ускорении от оригинального спека.
Что за дела?
И когда наконец-то начал по-настоящему вникать почему так долго и вообще - то понял наконец-то (к тому времени уже появился wolf48 двиг от АлонеКодера) почему всё так тяжко.
Так что Дмитрию уважуха.
P.S. Пользуясь случаем выражаю глубочайший респект за подсказки с моими потугами в 3д - спасибо!
Так-же Sam Style очень помог разобратся.
И прошу заметить - я просто лам недобитый, а эти люди с вышкой, с математическим опытом, так что в первую голову надо как-то их заинтересовать.
В идеале, конечно - дать полное обеспечение жизни (чтоб вообще любая проблема решалась влёт) им и их семьям с условием что за какое-то время (оговореное, ну скажем 3 года) они сделали 3д на спеке.
Но во первых нужно их согласие.
Во вторых нужны $$$$$$$$$$$$$$$$$$$$$$$$
Если с первым как-то договорились бы, то второе = недоступно.
Таким образом други-братья-спектрумисты давайте-ка обучатся высшейматематике сами, ага?
---------- Post added at 23:57 ---------- Previous post was at 23:54 ----------
От нас требуется обвязка - сценарий, графон, музло, уровни. Кто не согласен с этим - тот пришел попиздеть ниочём.
Ещё раз повторю, до этих обвязок, сценариев, графики, музла - как до Китая на карачках.
Нет на данный момент адекватного для 3д шутера двига на спеке.
---------- Post added at 23:59 ---------- Previous post was at 23:57 ----------
3д-движок - это такая хрень, на фоне которой всякие там zx-ревюшные спрайт выводилки (которые когда-то ужасали и восхищали) кажутся чем они есть (детский лепет)
Shadow Maker
30.10.2015, 23:59
Никого не хочу обидеть, но может обижу. В движке алонекодера разберется только алонекодер. Вот поэтому он реквестуется в эту тему, как единственный и неповторимый кодер, который поможет нам. От нас требуется обвязка - сценарий, графон, музло, уровни. Кто не согласен с этим - тот пришел ниочём.
Алоне к тебе не придёт. И если бы алоне хотел делать игру - он бы так и заявил, когда выкладывал движок два года назад. Ты бы почитал ту тему, узнал бы много интересных фактов. Я с тобой не согласен кардинально - от того, что у тебя будет обвязка - вовсе не значит, что будет игра.
И да, алоне в эту тему в частности и на форум в целом вряд ли придёт. Поэтому пишите письма.
Никого не хочу обидеть, но может обижу. В движке алонекодера разберется только алонекодер. Вот поэтому он реквестуется в эту тему, как единственный и неповторимый кодер, который поможет нам. От нас требуется обвязка - сценарий, графон, музло, уровни. Кто не согласен с этим - тот пришел ниочём.
проблема в том что 3д движок алоне нельзя получить в виде блока кодов как например нирвану Эйнара
чтобы например отдельно работал движок, а отдельно - обвязка для него.
иначе его можно было бы скомпилить в аласме
выгрузить отдельным блоком и использовать...
sergio78
31.10.2015, 00:02
SaNchez,
Если проводить аналогии - мы сейчас примерно в 30-х годах, до полёта в космос - ох как тяжко и трудно.
честно говоря, мы и сейчас в конце 2015 года, от реальных полётов в космос так же далеки, как и тогда в 30-ых. современные запуски в космос, на ракетах и двигателях сделанных ещё в 60 годах прошлого века, очень похожы на отплытие пещерного человека, на бревне недалеко от берега, где он до этого проживал. пройдёт ещё не одна тысяча лет, прежде чем реальные полёты с бороздением большого театра, действительно начнутся. если конечно люди вообще в ближайшие 100 лет как вид выживут... хотя причём тут спектрум, и 3d на нём, я и сам не понял:v2_dizzy_roll: я ни рисовать ни программировать не умею. и денег зашвырнуть лишних нет. так что об меня в подобном начинании можно ноги вытереть легко.
Shadow Maker
31.10.2015, 00:03
Нет на данный момент адекватного для 3д шутера двига на спеке.
Да какого к черту шутера. Для простой лабиринтоходилки без врагов и с десятком разных спрайтов - и то не годится.
Поэтому пишите письма.
Нехорошо ТАК как я сейчас цитировать, но позволю себе просто заметить (для пояснения): Алоне вряд-ли обрадуется письму вида: "Есть классная идея гамы! Есть графика! Музыка! И вообщё улётный сюжет! От тебя требуется только построение на экране. Ну там чтоб реалтайм и триде... Ну пусть не 50фпс, ну пусть 20... Да, ещё чтоб головой вверх-вниз, и спрайты врагов в hi-res! В общем круто, да?"
Shadow Maker
31.10.2015, 00:05
В идеале, конечно - дать полное обеспечение жизни (чтоб вообще любая проблема решалась влёт) им и их семьям с условием что за какое-то время (оговореное, ну скажем 3 года) они сделали 3д на спеке.
Но во первых нужно их согласие.
Во вторых нужны $$$$$$$$$$$$$$$$$$$$$$$$
Если с первым как-то договорились бы, то второе = недоступно.
Зачем вообще про это говорить? Это же бред сивой кобылы.
Алоне к тебе не придёт. И если бы алоне хотел делать игру - он бы так и заявил, когда выкладывал движок два года назад. Ты бы почитал ту тему, узнал бы много интересных фактов. Я с тобой не согласен кардинально - от того, что у тебя будет обвязка - вовсе не значит, что будет игра.
И да, алоне в эту тему в частности и на форум в целом вряд ли придёт. Поэтому пишите письма.
А я буду в него верить как в Деда Мороза:v2_dizzy_botan: Сам алоне сильно застремался своего движка, ойойой, каловдутии не получается:D А кому реально нужны 50гц экрана. Я был очень разочарован, когда DR дум свернули,а он мне очень нравился. А уж этот двиг на порядок круче, хоть и монохромный.
я ни рисовать ни программировать не умею. и денег зашвырнуть лишних нет. так что об меня в подобном начинании можно ноги вытереть легко.
очень жаль. значит должен поддерживать морально.
Shadow Maker
31.10.2015, 00:08
Исходники алона вполне понятны, ничего сложного нет. Как он сам говорил математика 9 класса. Весь прикол именно в различных оптимизациях и упрощениях, и тут никакой математики не надо, только немного серого вещества и понимания происходящего в целом, а вот держать все в голове тяжеловато, уже к сожалению не 17 лет.
Я даже не открывал, ничего не могу сказать. Ну раз ты понимаешь - давай может скомпилируй с другим спрайтом гитлера (ну диззи воткни например) и стенку другую. Положишь начало, так сказать, а там мож кто лабиринтобегалку решит сотворить как начало.
Да какого к черту шутера. Для простой лабиринтоходилки без врагов и с десятком разных спрайтов - и то не годится.
Вот тут не зарекайся :)
"Есть такая партия!"
(с) старик Крупский
:)
На самом деле есть куда и очень хорошо Дмитриев двиг применить.
Я собираюсь с ним это обсудить, если страстётся - увидите...
---------- Post added at 00:09 ---------- Previous post was at 00:08 ----------
Зачем вообще про это говорить? Это же бред сивой кобылы.
Там-же написано "В идеале", т.е. в недостижимых (но желаемых для успеха) делах.
Shadow Maker
31.10.2015, 00:09
А я буду в него верить как в Деда Мороза:v2_dizzy_botan: Сам алоне сильно застремался своего движка, ойойой, каловдутии не получается:D А кому реально нужны 50гц экрана. Я был очень разочарован, когда DR дум свернули,а он мне очень нравился. А уж этот двиг на порядок круче, хоть и монохромный.
Хз, у DR оно хотя бы было играбельно. А тут по-моему (могу ошибаться) уже ни на что не хватает памяти и скорости.
Andrew771
31.10.2015, 00:09
Я бы, если бы сейчас начинал писать 3d, делал бы для ускорения вывода вместо однопиксельных вертикальных столбцов спрайты тонких цилиндров.
Я даже не открывал, ничего не могу сказать. Ну раз ты понимаешь - давай может скомпилируй с другим спрайтом гитлера (ну диззи воткни например) и стенку другую. Положишь начало, так сказать, а там мож кто лабиринтобегалку решит сотворить как начало.
там нет проблем со спрайтами - они при старте перерабатываются
проблема с самим движком - он компилируется только в той версии Аласма в которой написаны.
---------- Post added at 01:13 ---------- Previous post was at 01:11 ----------
Я бы, если бы сейчас начинал писать 3d, делал бы для ускорения вывода вместо однопиксельных вертикальных столбцов спрайты тонких цилиндров.
ты бы погонял приложенный мной снапшот там достаточно наглядно.
Shadow Maker
31.10.2015, 00:14
jerri, да? Даешь тогда ты диззи вместо гитлера и деревья вместо стенок, раз всё так. Ерундовая получается задача, два файла поменять, так?
Хз, у DR оно хотя бы было играбельно. А тут по-моему (могу ошибаться) уже ни на что не хватает памяти и скорости.
Дык алоне типа специально все в 48 запихнул. а теперь представь - у нас еще 80 свободных кб..)))))
Shadow Maker
31.10.2015, 00:15
Дык алоне типа специально все в 48 запихнул. а теперь представь - у нас еще 80 свободных кб..)))))
Не придумывай.
Дык алоне типа специально все в 48 запихнул. а теперь представь - у нас еще 80 свободных кб..)))))
А если под пентагон c мегабайтом?
Shadow Maker
31.10.2015, 00:18
Во первых просто компильнуть не поможет, надо в сиджасм переписывать, а там много луа добавлять. Во вторых просто лабиринтик это уныло, надо обвязку под сюжет. В третьих понимания в целом как я говорил нет, а оно нужно чтобы где то упростить, где то может переделать. Работы, как и с любым исходником сложнее примитивных стпрайтовых выводилок по стеку, много, очень много. Да и вообще похоже на унылое на слабо, тем более не интересно.
Ну ты в аласме компильни. Меня интересует чисто фактически если там реально раз - и заменил - чего тогда все плакают и кидают снапшоты 2014 года. Переписывать на сжасм это утопия, похоже. На слабо мне пофиг, непонятно почему тебе это похоже. Просто чето все говорят, говорят про этот движок, а реально чтобы кто-то чето пробовал поменять - не видно. То ли это так сложно, то ли... Вот я и говорю по поводу заменить-посмотреть-рассказать.
jerri, да? Даешь тогда ты диззи вместо гитлера и деревья вместо стенок, раз всё так. Ерундовая получается задача, два файла поменять, так?
у тебя исходники есть? можешь же сам это сделать.
Shadow Maker
31.10.2015, 00:21
у тебя исходники есть? можешь же сам это сделать.
Ну предположим я тупой. Или ленивый. Выбери любой вариант.
Я сейчас алоне напишу. Я думаю, откликнется.
Ну ты в аласме компильни. Меня интересует чисто фактически если там реально раз - и заменил - чего тогда все плакают и кидают снапшоты 2014 года. Переписывать на сжасм это утопия, похоже. На слабо мне пофиг, непонятно почему тебе это похоже. Просто чето все говорят, говорят про этот движок, а реально чтобы кто-то чето пробовал поменять - не видно. То ли это так сложно, то ли... Вот я и говорю по поводу заменить-посмотреть-рассказать.
Плачут потому как в изходнике реализован только герой и набор приклеенных объектов
Для того чтобы их двигать нужен код. А писать его в Аласм никто не хочет.
потому и плачут.
А если под пентагон мегабайтом?
Вообще Алонекодер жаловался и на нехватку памяти.
Но и тут-же мудро заметил что есть такое соотношение как скорость проца/обрабатываемая память.
Т.е. как ни крути 48к спека это то самое что z80 може худо-бедно обсчитать/или вообще как-то обрабатывать (при своей 16шине)
Так что всё это костыли, ребята, нужен новый подход (про всякие предтекстуры типа zxoom не говорим, ибо это не 3d настоящее, это отдельный подвид, как например раньше называли 3D обычную изометрию).
Andrew771
31.10.2015, 00:25
ты бы погонял приложенный мной снапшот там достаточно наглядно.
это где лежит?
Вообще Алонекодер жаловался и на нехватку памяти.
Может и жаловался, но в 48 впихнул. А это значит что еще куча места в 128 машине (48 сразу идут лестом, нефиг им дум гонять, пусть бипером наслаждаются). Да и копирование у него из теневого экрана LDIR ами не от хорошей жизни сделанно.
Shadow Maker
31.10.2015, 01:33
Короче, суть такова. Поменял я картинки стенок. Полезли какие-то глюки c пиксельными столбами вниз - видимо картинки нельзя абы как рисовать - смотреть на флаг и на надпись GO!. Плюс стало понятно, почему всё такое грубое в вольфе - если делать пикселизацию это всё превращается в дикую кашу - смотреть можно например на кирпичи с черепом.
это где лежит?
У него где-то там на прошлых страницах.
Короче, суть такова.
Чего-то у тебя не полноэкранный, в отличие от ЗДЕСЬ (http://zx-pk.ru/showpost.php?p=838268&postcount=61).
Shadow Maker
31.10.2015, 02:03
Чего-то у тебя не полноэкранный, в отличие от ЗДЕСЬ (http://zx-pk.ru/showpost.php?p=838268&postcount=61).
Скомпилил из первого поста аласма алоне.
---------- Post added at 02:03 ---------- Previous post was at 02:02 ----------
Алон же написал, не больше 17 переходов на вертикаль. Хотя с го не совсем понятно почему.
Не знаю где писал, ты мне ничего про это не сказал. Что такое 17 переходов?
Не знаю где писал, ты мне ничего про это не сказал. Что такое 17 переходов?
Логика подсказывает, что 17 переходов с 0 на 1 и наоборот)
Shadow Maker
31.10.2015, 02:13
Вертикальных? Горизонтальных? Любых?
Вертикальных? Горизонтальных? Любых?
Вертикаль там написано, ВЕРТИКАЛЬ)
ООоо. Тема-то разрастается. Хорошо. Давайте. Касательно денег, готов вложить тысяч 5 для начала. может кто ещё подсуетится.
А пока - перегнал исходники из аласма в текст. буду изучать эти макросы и условия, чтобы под кросс компилятор пилить. Пока только с макросами загвоздка. Надо подумать. Уделю этому больше времени и внимания.
Все не согласные с сабжем и в целом с темой, просьба не суетиться и не поднимать тут флуд! Всех пессимистов так же это касается.
Есть ещё один вариант - кинуть клич на кикстартер.
ООоо. Тема-то разрастается. Хорошо. Давайте. Касательно денег, готов вложить тысяч 5 для начала. может кто ещё подсуетится.
А пока - перегнал исходники из аласма в текст. буду изучать эти макросы и условия, чтобы под кросс компилятор пилить. Пока только с макросами загвоздка. Надо подумать. Уделю этому больше времени и внимания.
Все не согласные с сабжем и в целом с темой, просьба не суетиться и не поднимать тут флуд! Всех пессимистов так же это касается.
Есть ещё один вариант - кинуть клич на кикстартер.
будешь переделывать сам?
тогда пара моментов
Алоне не уверен что можно адекватно перевести его макросы в формат кроссассемблеров.
у него макросы могут метки делать сложные.
Он предлагал развернуть макросы рейкаста и использовать уже их.
вариант с кикстартером - баловство.
Сам с удовольствием поучаствую в процессе - Kaiju таки висит мертвым грузом.
что за Kaiju ?
кроме сжасма есть ещё старый, древний М80 под цпм. там с макросами чуть получше и с условиями.
ещё есть тасм под мсдос...на крайняк.
что за Kaiju ?
игра которую я начал писать под этот движок
кроме сжасма есть ещё старый, древний М80 под цпм. там с макросами чуть получше и с условиями.
ещё есть тасм под мсдос...на крайняк.
поверь мне таких макросов как в Аласм нет не было и наверное уже не будет
MACRO <macro_name>
<body>
ENDM
Macro definition.
Inside macro:
\0..\9 - parameter 0,1,2,..9
\C - current symbol in parameters
\N - go to next symbol in parameters (returns nothing)
\S<char> - string from current symbol until <char> symbol
\P - shift parameter numeration. parameter 1 becomes 0 etc. Parameter 0
is returned.
\R - restores initial parameters enumeration as it was before \P.
<macro_name> [parameter1[,parameter...]]
Use macro.
Parameters are divided by commas (not counting commas in quotes).
MACRO DOWN
LOCAL
INC \C
LD A,\C
AND 7
JR NZ,LABEL
LD A,\N\C
SUB #E0
LD \C,A
SBC A,A
AND -8
ADD A,\R\C
LD \C,A
LABEL
ENDL
ENDM
This is generic DOWN HL or DOWN DE routine that counts screen address
поверь мне таких макросов как в Аласм нет не было и наверное уже не будет
будем разбираца с работой этих макросов. уверен, можно чем то другим заменить, не разворачивая его.
пока я вижу, что есть макрос с аргументами как и везде, но с некоторыми параметрами (ключами). Вот с ними как раз и будет возня. думаю, можно решить.
---------- Post added at 12:47 ---------- Previous post was at 12:24 ----------
ну вот и первая конструкция, которую просто так не могу переварить
ORG addr,page
...
ORG #C000,1
INCBIN "walls_bw"
INCBIN "goods_bw"
ORG #6000,0
если бы делал под спринтер, я бы просто загрузчик написал.
хм, хотя тут и так должен быть загрузчик. одно дело на стадии отладки городить сборку и загрузку в страницы, другое когда проект уже на стадии продакшена и есть бейсик файл с кодовыми файлами. а бейсик сам по себе не знает что в какие страницы пихать. значит, в любом случае надо городить загрузчик. оставляю эту эпопею (загрузчики под трдос) для вас. для себя я делаю свой загрузчик под dss.
Sayman, не забывай что такое Аласм
это консоль+редактор+компилято р
на спеке нет возможности грузить чтото кудато.
в данном случае представь что ты собираешь снап с ракладкой по страницам.
jerri, когда будет не снап, а кодовый файл + загрущик на бейсике, то надо самому грузить уже по страницам. ты же не будет в трдос пихать снап, верно? будет бейсик+кодовый файл, но не снап или я что-то путаю уже?
опять таки, в трдосе есть возможность грузить файлы. включая нужную страницу и загружая на нужный адрес. раньше так и делали.
будем разбираца с работой этих макросов. уверен, можно чем то другим заменить, не разворачивая его.
пока я вижу, что есть макрос с аргументами как и везде, но с некоторыми параметрами (ключами). Вот с ними как раз и будет возня. думаю, можно решить.[
вот такого поверь мне не умеет никто
составлять метку из параметров макроса.
;RAY 1,1,H,L,D,E,y,x
MACRO RAY
mainplus=\0 ;основное направление положительно
secplus=\1 ;побочное направление положительно
;\2=основное направление для hl
;\3=побочное направление для hl
;\4=основное направление для de
;\5=побочное направление для de
;\6=основное направление
;\7=побочное направление
;LD DE,(cur\7\6)
cur\0\1\7\6=$+1
LD DE,0
LD A,E ;основное направление
;IFN mainplus ;основное направление положительно
; CPL ;1-основное направление
; LD E,A
;ENDIF
LD LX,A ;IX=dist*cos
MULPOS
IFN secplus ;побочное направление положительно
ADD A,D ;побочное направление
LD B,A
;LD HL,(curYX)
ray\0\1\7\6_YX=$+1
LD HL,0
IFN "\6\6"-"xx"
;LD D,H,E,L
;SET mapdifbit,E
ray\0\1\7\6_YX2=$+1
LD DE,0
ELSE
LD D,H,E,L
ENDIF
JNC raynshort\0\1\7\6
INC \5 ;e/d
LD A,(DE)
RLA
JC raysec\0\1\7\6
INC \3 ;l/h
raynshort\0\1\7\6
IFN "\6\6"-"yy"
SET mapdifbit,L
ENDIF
ELSE
LD L,A
LD A,D ;побочное направление
SUB L
LD B,A
;LD HL,(curYX)
ray\0\1\7\6_YX=$+1
LD HL,0
IFN "\6\6"-"xx"
;LD D,H,E,L
;SET mapdifbit,E
ray\0\1\7\6_YX2=$+1
LD DE,0
ELSE
LD D,H,E,L
ENDIF
JNC raynshort\0\1\7\6
LD A,(DE)
RLA
JC raysec\0\1\7\6
DEC \3,\5 ;l/h,e/d
raynshort\0\1\7\6
IFN "\6\6"-"yy"
SET mapdifbit,L
ENDIF
ENDIF
raynsec\0\1\7\6
INC HX
IFN mainplus ;основное направление положительно
INC \2 ;h/l
ENDIF
LD A,(HL)
RLA
JP C,rayhlq ;b=texx
IFN mainplus ;основное направление положительно
INC \4 ;d/e
ELSE
DEC \2,\4 ;h/l,d/e
ENDIF
LD A,B
IFN secplus ;побочное направление положительно
ADD A,C
ELSE
SUB C
ENDIF
LD B,A
JNC raynsec\0\1\7\6
IFN secplus ;побочное направление положительно
INC \5 ;e/d
ENDIF
LD A,(DE)
RLA
JC raysec\0\1\7\6
IFN secplus ;побочное направление положительно
INC \3 ;l/h
ELSE ;побочное направление отрицательно
DEC \3,\5 ;l/h,e/d
ENDIF
JP raynsec\0\1\7\6
raysec\0\1\7\6
EXD
LD A,B
IFN secplus ;побочное направление положительно
SUB C
DIVPOS
ELSE
ADD A,C
DIVNEG
ENDIF
IFN mainplus ;основное направление положительно
CPL
LD B,A ;b=texx
ELSE
LD B,A ;b=texx
CPL
ENDIF
JP raydeq
ENDM
---------- Post added at 11:41 ---------- Previous post was at 11:38 ----------
jerri, когда будет не снап, а кодовый файл + загрущик на бейсике, то надо самому грузить уже по страницам. ты же не будет в трдос пихать снап, верно? будет бейсик+кодовый файл, но не снап или я что-то путаю уже?
сжасм умеет делать как снапы так и выгрузку блоков.
но для таких движков удобно подгружать как раз туда где все будет находится.
но для таких движков удобно подгружать как раз туда где все будет находится.
ну вот смотри:
ORG #C000,1
INCBIN "walls_bw"
INCBIN "goods_bw"
т.е. с адреса c000, в первую страницу. т.е. эти два файла нужно ручками загружать после компиляции. а на стадии отладки аласм сам кинет в нужную страницу. сжасм не кинет, значит нужно под трдос липить загрузку файлов...
cur\0\1\7\6=$+1
это видимо и есть та самая метка из параметра?
---------- Post added at 14:14 ---------- Previous post was at 13:58 ----------
кароче, параметрические метки не страшны.
Oleg Origin
31.10.2015, 11:22
ну вот смотри:
ORG #C000,1
INCBIN "walls_bw"
INCBIN "goods_bw"
т.е. с адреса c000, в первую страницу. т.е. эти два файла нужно ручками загружать после компиляции. а на стадии отладки аласм сам кинет в нужную страницу. сжасм не кинет, значит нужно под трдос липить загрузку файлов...
[CODE]
в Sj всё так же просто: там для этого есть директива PAGE. снэп, соответственно, компилится целиком, ну а для tap/trd записываем уже бинарники на каждую страницу
в Sj всё так же просто: там для этого есть директива PAGE. снэп, соответственно, компилится целиком, ну а для tap/trd записываем уже бинарники на каждую страницу
вот именно, что для трд бинарники не указывают, какой из них в какую страницу. для этого в одном из них должен быть загрузчик. А в снапе да, там пофиг. но мы же не хотим потом распространять снапы, мы хотим распространять нормальный продукт да?
Oleg Origin
31.10.2015, 11:56
вот именно, что для трд бинарники не указывают, какой из них в какую страницу. для этого в одном из них должен быть загрузчик. А в снапе да, там пофиг. но мы же не хотим потом распространять снапы, мы хотим распространять нормальный продукт да?
Не вопрос =) Загрузчик-то в любом случае писать нужно.
А trd легко собирается из того же SjAsm. Вот пример:
ORG 24576
codebegin
INCBIN "..\block0.bin"
SAVETRD "final.trd","block0.C", codebegin,$-codebegin
ORG #C000
page_1
INCBIN "..\block1.bin"
SAVETRD "final.trd","block1.C", page_1,$-page_1
ORG #C000
page_2
INCBIN "..\block2.bin"
SAVETRD "final.trd","block2.C", page_2,$-page_2
......
ORG 16384
bootbegin
INCBIN "boot_trd.b" ; <---- наш бейсиковский загрузчик
SAVETRD "final.trd","boot.B", bootbegin,$-bootbegin
страницы здесь, разумеется, не выбираются: просто собираются файлы в trd.
ну и в бейсиковском загрузчике меняем страницы, либо пишем загрузчик на asm - здесь уже варианты...
в общем, нет никаких проблем со сборкой финальных релизов из SjAsm; но это уже финальный шаг, а на этапе разработки удобно использовать компиляцию в снэп.
бейсиковский trd-loader лично я собираю через модифицированный (!) bas2tap (убрал обработку REM из оригинальной утилиты), но это уже другой вопрос... ах, да, еще обрезаю .tap до бейсиковского бинарника... (24 байта в начале и один в конце): в SjAsm, насколько мне известно, нельзя подключать .tap - файлы... оффтоп лютый уже, в общем =)
страницы здесь, разумеется, не выбираются
...
в бейсиковском загрузчике меняем страницы, либо пишем загрузчик на asm
я собственно об этом и говорил а в снап как это всё заворачивать? и в доке нет такой директивы как page.
Oleg Origin
31.10.2015, 12:43
я собственно об этом и говорил а в снап как это всё заворачивать? и в доке нет такой директивы как page.
SjASMPlus Z80 v1.06 Stable - в мануале есть всё об использовании директивы PAGE. Как-то так:
PAGE 1
ORG #C000
..................
SAVEBIN "p1.bin",#C000,PAGE1END-#C000
PAGE1END
а снэп будет сохраняться для всей памяти. как и для обычного 48К, просто в конце кода пишем SAVESNA "snap.sna",PROGRUN
ну а "как написать .trd загрузчик" - это, наверное, отдельная тема =) Но из бейсика всё просто. Страницы в бейсике выбираются так: OUT 32765,<номер_страницы>
Shadow Maker
31.10.2015, 12:58
В доке есть директива PAGE, а также DEVICE. В снап заворачивать как в доке написано. Вообще при разработке никто не лепит загрузчиков для трдоса, все делают в снапах для отладки сразу в эмуляторе.
//upd Олег уже всё рассказал.
Вот что мне ответил AloneCoder
Привет, вот что я написал Sayman'у:
---
В цитадели, как мне кажется, рассчитываются координаты стен на экране, а между ними происходит натягивание текстуры линейно (там специфическое искажение). Мой метод из Wolf 2004 лучше не рассматривать вообще - он показал себя очень тормозным. Вот новый - другое дело, его можно использовать прямо готовыми процедурами. Там и точность достаточная, и особо быстрее и не сделаешь. На SjAsm его в читабельном виде написать невозможно из-за отсутствия параметрических меток - пришлось бы писать 8 раз практически один и тот же кусок кода (сканирование в разных направлениях) или пользоваться псевдометками типа 5f (и то не факт, что их хватит).
Исходник в аласме ещё одну проблему решает - там перед запуском собственно игры конвертируются текстуры из графического формата в координаты. Этот конвертор написан на ассемблере. К сожалению, ни одна известная мне связка кросс-тулзов не позволяет выполнить ассемблерную программу и использовать её результат в линковке. А аласм позволяет.
Wolf 2004 переписывать на современный движок очень не хочется, хочется сделать что-то новое на новом уровне, но нет художника и композитора соответствующего уровня (нужно не "текстуры", а игровой мир, и не "музоны", а саундтрек), хотя есть люди, которые готовы заплатить за игру реальные деньги.
А для оригинального Спектрума, для которого я писал новый движок, вообще отдельная проблема - в 48К помещается очень мало графики, так что надо придумать такой геймплей, чтобы можно было обойтись малым количеством. Но движок поддерживает и АТМ Турбо.
Никакой математический сопроцессор для такой игры не нужен - он не ускорит игру даже на 5%.
Абсолютно нерешабельная проблема. Подумать только, 8 раз одно и то-же писать... Все, сворачиваем тему...
ничего никуда не сворачиваем. разберёмся, какие там 8 раз и почему...
---------- Post added at 10:57 ---------- Previous post was at 09:24 ----------
вот кусок оригинального макроса:
cur\\\\6=$+1
LD DE,0
LD A,E ;основное направление
;IFN mainplus ;основное направление положительно
; CPL ;1-основное направление
; LD E,A
;ENDIF
LD LX,A ;IX=dist*cos
MULPOS
IFN secplus ;побочное направление положительно
ADD A,D ;побочное направление
LD B,A
;LD HL,(curYX)
ray\\\\_YX=$+1
LD HL,0
IFN "\6\6"-"xx"
;LD D,H,E,L
;SET mapdifbit,E
ray\\\\_YX2=$+1
LD DE,0
ELSE
LD D,H,E,L
ENDIF
JNC raynshort\\\\6
INC \5 ;e/d
LD A,(DE)
RLA
JC raysec\\\\6
INC \3 ;l/h
raynshort\\\\6
IFN "\6\6"-"yy"
SET mapdifbit,L
ENDIF
ELSE
LD L,A
LD A,D ;побочное направление
SUB L
LD B,A
;LD HL,(curYX)
ray\\\\_YX=$+1
LD HL,0
IFN "\6\6"-"xx"
;LD D,H,E,L
;SET mapdifbit,E
ray\\\\_YX2=$+1
LD DE,0
ELSE
LD D,H,E,L
ENDIF
начнём с того, что метки
cur\\\\6=$+1
ray\\\\_YX=$+1
ray\\\\_YX2=$+1
и ещё несколько других в макросе не используются (по ним нет переходов). их можно закоментить. Условия компиляции IFN меняются на ifdef. Метки по которым есть переходы в макросе можно заменить на подобные конструкции:
было - JNC raynshort\\\\6
стало - jr nc, $+n, где n размер пропускаемого кода до нужного места.
В этом случае все метки просто комментятся или удаляются.
Остались под вопросом конструкции типа:
IFN "\6\6"-"yy" - пока не понял как это понимать вообще. точнее я понимаю, что "\6" это номер аргумента макроса. мне не ясна сама конструкция "\6\6"-"xx". Аргумент 6 - это координата "y". Я могу понять эту запись только как (y+y)-(x+x). Если результат положительный, тогда условие выполняется так, иначе (отрицательный результат или 0) будет выполняться так.
и конструкции типа INC \2 - это вообще не понял как работает.
ах да, ещё одни способ обойти эти чудесные макросы - сделать их обычными процедурами. передавать параметры или через стэк или регистры. как угодно. Да, немного тактов потеряем, зато много памяти выигрываем.
ничего никуда не сворачиваем. разберёмся, какие там 8 раз и почему...
---------- Post added at 10:57 ---------- Previous post was at 09:24 ----------
вот кусок оригинального макроса:
cur\\\\6=$+1
LD DE,0
LD A,E ;основное направление
;IFN mainplus ;основное направление положительно
; CPL ;1-основное направление
; LD E,A
;ENDIF
LD LX,A ;IX=dist*cos
MULPOS
IFN secplus ;побочное направление положительно
ADD A,D ;побочное направление
LD B,A
;LD HL,(curYX)
ray\\\\_YX=$+1
LD HL,0
IFN "\6\6"-"xx"
;LD D,H,E,L
;SET mapdifbit,E
ray\\\\_YX2=$+1
LD DE,0
ELSE
LD D,H,E,L
ENDIF
JNC raynshort\\\\6
INC \5 ;e/d
LD A,(DE)
RLA
JC raysec\\\\6
INC \3 ;l/h
raynshort\\\\6
IFN "\6\6"-"yy"
SET mapdifbit,L
ENDIF
ELSE
LD L,A
LD A,D ;побочное направление
SUB L
LD B,A
;LD HL,(curYX)
ray\\\\_YX=$+1
LD HL,0
IFN "\6\6"-"xx"
;LD D,H,E,L
;SET mapdifbit,E
ray\\\\_YX2=$+1
LD DE,0
ELSE
LD D,H,E,L
ENDIF
начнём с того, что метки
cur\\\\6=$+1
ray\\\\_YX=$+1
ray\\\\_YX2=$+1
и ещё несколько других в макросе не используются (по ним нет переходов). их можно закоментить. Условия компиляции IFN меняются на ifdef. Метки по которым есть переходы в макросе можно заменить на подобные конструкции:
было - JNC raynshort\\\\6
стало - jr nc, $+n, где n размер пропускаемого кода до нужного места.
В этом случае все метки просто комментятся или удаляются.
Остались под вопросом конструкции типа:
IFN "\6\6"-"yy" - пока не понял как это понимать вообще. точнее я понимаю, что "\6" это номер аргумента макроса. мне не ясна сама конструкция "\6\6"-"xx". Аргумент 6 - это координата "y". Я могу понять эту запись только как (y+y)-(x+x). Если результат положительный, тогда условие выполняется так, иначе (отрицательный результат или 0) будет выполняться так.
и конструкции типа INC \2 - это вообще не понял как работает.
ах да, ещё одни способ обойти эти чудесные макросы - сделать их обычными процедурами. передавать параметры или через стэк или регистры. как угодно. Да, немного тактов потеряем, зато много памяти выигрываем.
ты кстати зря сократил так имена меток
дело в том что упоминавшиеся Алоне параметрически метки выглядят весьма хитро.
то что тебе непонятны указанные пункты означает что ты вообще не понял как работают Макросы в АлАсме
попробую обьяснить.
вот оригинальный макрос
;RAY 1,1,H,L,D,E,y,x
MACRO RAY
mainplus=\0 ;основное направление положительно
secplus=\1 ;побочное направление положительно
;\2=основное направление для hl
;\3=побочное направление для hl
;\4=основное направление для de
;\5=побочное направление для de
;\6=основное направление
;\7=побочное направление
;LD DE,(cur\7\6)
cur\0\1\7\6=$+1
LD DE,0
LD A,E ;основное направление
;IFN mainplus ;основное направление положительно
; CPL ;1-основное направление
; LD E,A
;ENDIF
LD LX,A ;IX=dist*cos
MULPOS
IFN secplus ;побочное направление положительно
ADD A,D ;побочное направление
LD B,A
;LD HL,(curYX)
ray\0\1\7\6_YX=$+1
LD HL,0
IFN "\6\6"-"xx"
;LD D,H,E,L
;SET mapdifbit,E
ray\0\1\7\6_YX2=$+1
LD DE,0
ELSE
LD D,H,E,L
ENDIF
JNC raynshort\0\1\7\6
INC \5 ;e/d
LD A,(DE)
RLA
JC raysec\0\1\7\6
INC \3 ;l/h
raynshort\0\1\7\6
IFN "\6\6"-"yy"
SET mapdifbit,L
ENDIF
ELSE
LD L,A
LD A,D ;побочное направление
SUB L
LD B,A
;LD HL,(curYX)
ray\0\1\7\6_YX=$+1
LD HL,0
IFN "\6\6"-"xx"
;LD D,H,E,L
;SET mapdifbit,E
ray\0\1\7\6_YX2=$+1
LD DE,0
ELSE
LD D,H,E,L
ENDIF
JNC raynshort\0\1\7\6
LD A,(DE)
RLA
JC raysec\0\1\7\6
DEC \3,\5 ;l/h,e/d
raynshort\0\1\7\6
IFN "\6\6"-"yy"
SET mapdifbit,L
ENDIF
ENDIF
raynsec\0\1\7\6
INC HX
IFN mainplus ;основное направление положительно
INC \2 ;h/l
ENDIF
LD A,(HL)
RLA
JP C,rayhlq ;b=texx
IFN mainplus ;основное направление положительно
INC \4 ;d/e
ELSE
DEC \2,\4 ;h/l,d/e
ENDIF
LD A,B
IFN secplus ;побочное направление положительно
ADD A,C
ELSE
SUB C
ENDIF
LD B,A
JNC raynsec\0\1\7\6
IFN secplus ;побочное направление положительно
INC \5 ;e/d
ENDIF
LD A,(DE)
RLA
JC raysec\0\1\7\6
IFN secplus ;побочное направление положительно
INC \3 ;l/h
ELSE ;побочное направление отрицательно
DEC \3,\5 ;l/h,e/d
ENDIF
JP raynsec\0\1\7\6
raysec\0\1\7\6
EXD
LD A,B
IFN secplus ;побочное направление положительно
SUB C
DIVPOS
ELSE
ADD A,C
DIVNEG
ENDIF
IFN mainplus ;основное направление положительно
CPL
LD B,A ;b=texx
ELSE
LD B,A ;b=texx
CPL
ENDIF
JP raydeq
ENDM
вот процедура рейкаста
;mainplus=\0 ;основное направление положительно
;secplus=\1 ;побочное направление положительно
;\2=основное направление для hl
;\3=побочное направление для hl
;\4=основное направление для de
;\5=побочное направление для de
;\6=основное направление
;\7=побочное направление
ray1
BIT 7,L
JP NZ,ray1b
RAY 1,1,L,H,E,D,x,y ;1a
ray1b
RAY 1,1,H,L,D,E,y,x ;1b
ray2
BIT 7,L
JP NZ,ray2b
RAY 1,0,H,L,D,E,y,x ;2a
ray2b
RAY 0,1,L,H,E,D,x,y ;2b
ray3
BIT 7,L
JP NZ,ray3b
RAY 0,0,L,H,E,D,x,y ;3a
ray3b
RAY 0,0,H,L,D,E,y,x ;3b
ray4
BIT 7,L
JP NZ,ray4b
RAY 0,1,H,L,D,E,y,x ;4a
ray4b
RAY 1,0,L,H,E,D,x,y ;4b
rayhlq
XOR A
raydeq
;теперь раскрываем один из макросов
вот этот
RAY 1,1,L,H,E,D,x,y ;1a
{
;RAY 1,1,H,L,D,E,y,x
MACRO RAY
mainplus=1 \0 ;основное направление положительно
secplus=1 \1 ;побочное направление положительно
;L \2=основное направление для hl
;H \3=побочное направление для hl
;E \4=основное направление для de
;D \5=побочное направление для de
;x \6=основное направление
;y \7=побочное направление
;LD DE,(curyx)
cur11yx=$+1
LD DE,0
LD A,E ;основное направление
;IFN mainplus ;основное направление положительно
; CPL ;1-основное направление
; LD E,A
;ENDIF
LD LX,A ;IX=dist*cos
MULPOS
IFN secplus ;побочное направление положительно
ADD A,D ;побочное направление
LD B,A
;LD HL,(curYX)
ray11yx_YX=$+1
LD HL,0
IFN "xx"-"xx"
;LD D,H,E,L
;SET mapdifbit,E
ray11yx_YX2=$+1
LD DE,0
ELSE
LD D,H,E,L
ENDIF
JNC raynshort11yx
INC D ;e/d
LD A,(DE)
RLA
JC raysec11yx
INC H ;l/h
raynshort11yx
IFN "xx"-"yy"
SET mapdifbit,L
ENDIF
ELSE
LD L,A
LD A,D ;побочное направление
SUB L
LD B,A
;LD HL,(curYX)
ray11yx_YX=$+1
LD HL,0
IFN "xx"-"xx"
;LD D,H,E,L
;SET mapdifbit,E
ray11yx_YX2=$+1
LD DE,0
ELSE
LD D,H,E,L
ENDIF
JNC raynshort11yx
LD A,(DE)
RLA
JC raysec11yx
DEC h,d ;l/h,e/d
raynshort11yx
IFN "xx"-"yy"
SET mapdifbit,L
ENDIF
ENDIF
raynsec11yx
INC HX
IFN mainplus ;основное направление положительно
INC l ;h/l
ENDIF
LD A,(HL)
RLA
JP C,rayhlq ;b=texx
IFN mainplus ;основное направление положительно
INC E ;d/e
ELSE
DEC L,E ;h/l,d/e
ENDIF
LD A,B
IFN secplus ;побочное направление положительно
ADD A,C
ELSE
SUB C
ENDIF
LD B,A
JNC raynsec11yx
IFN secplus ;побочное направление положительно
INC D ;e/d
ENDIF
LD A,(DE)
RLA
JC raysec11yx
IFN secplus ;побочное направление положительно
INC H ;l/h
ELSE ;побочное направление отрицательно
DEC H,D ;l/h,e/d
ENDIF
JP raynsec11yx
raysec11yx
EXD
LD A,B
IFN secplus ;побочное направление положительно
SUB C
DIVPOS
ELSE
ADD A,C
DIVNEG
ENDIF
IFN mainplus ;основное направление положительно
CPL
LD B,A ;b=texx
ELSE
LD B,A ;b=texx
CPL
ENDIF
JP raydeq
ENDM
}
а если учесть наличие ссылок на эти места из других мест программы и отказ работы в сжасм связок вида.
dup
if
endif
edup
то да - беда может быть
sergio78
01.11.2015, 12:00
перепишите алласм под виндовс, это проще будет чем с движком разбираться. почему алоне решил что математический процессор ничего не ускорит? в коде игры нет деления, умножения, вычитания и сложения? аппаратные тригонометрические функции позволят вообще другой движок самим неплохо написать, чем связываться с особо хитрым и непонятным движком, у которого ещё и с текстурами серьёзные проблеммы похоже будут вылазить.
GS может выступать в роли математического сопроцессора?
sergio78
01.11.2015, 12:39
а вот uGFX (http://zx-pk.ru/showpost.php?p=829999&postcount=41) может.
это я так понял допплатка с ещё одной fpga, в довесок к reverseU16? этот uGFX уже в прошивке есть или только планируется когда то?
перепишите алласм под виндовс
лучше доработать сжасм. исходники есть.
при этом, сжасм из аргументов макроса вытягивает в метку содержимое параметров...вроде...но всё ровно ошибки прут.
sergio78
01.11.2015, 12:59
лучше доработать сжасм. исходники есть.
это почти одно и тоже. что с нуля, что доработать что то уже имеющее. в результате код от аласма перепашется на пк, ну и глаза целы будут.
sergio78
01.11.2015, 13:09
ну если ко всем подключается. то это неплохо. только по фоткам я просто цветные кубики увидел и всё. во вторых, зачем в этой платке ещё один z80 нарисовался? вроде же плата для графики?
Alex Rider
01.11.2015, 15:03
ничего никуда не сворачиваем. разберёмся, какие там 8 раз и почему...
Для разбора настоятельно рекомендую написать автомат, который будет собирать модифицированный тобой исходник, сравнивать побайтно с результатами сборки алоновского исходника и вразумительно показывать разницу. Это сэкономит 100500 времени на отладку.
лучше доработать сжасм. исходники есть.
при этом, сжасм из аргументов макроса вытягивает в метку содержимое параметров...вроде...но всё ровно ошибки прут.
Сжасм не умеет динамические метки и много чего еще. Он прост как валенок. Проще переписать его с нуля тогда. Но есть один нюанс: это не поможет. Менять движок и делать на его основе игру можно только после полного просветления. А, когда наступит просветление, движок можно легко переписать и на ужасм.
GS может выступать в роли математического сопроцессора?
Нет. Во-первых, в GS тот же Z80, только побыстрее, он будет считать по тем же алгоритмам, что и ЦП, а ЦП будет его ждать. А еще в GS нельзя загрузить число каким-нибудь OTIR, поэтому циклы обмена с ним будут с лихвой компенсировать разницу в скорости расчета.
Вообще, сопроцессор в идеале должен сам уметь брать данные из памяти ЦП и возвращать в нее результат. А лучше сразу и данные, и команды. Как чуть более медленный вариант - уметь INIR/OTIR для обмена данными.
В GS можно засунуть не просто примитивную математику, а целиковые алгоритмы, которые можно просчитывать параллельно с отрисовкой. При условии, что эти алгоритмы возвращают единицы байт, а не экран целиком.
В GS можно засунуть не просто примитивную математику, а целиковые алгоритмы, которые можно просчитывать параллельно с отрисовкой. При условии, что эти алгоритмы возвращают единицы байт, а не экран целиком.
Уже что-то, это же можно ИИ вражин обсчитывать.
sergio78
01.11.2015, 17:21
Вообще, сопроцессор в идеале должен сам уметь брать данные из памяти ЦП и возвращать в нее результат. А лучше сразу и данные, и команды. Как чуть более медленный вариант - уметь INIR/OTIR для обмена данными.
к сожалению это невозможно, пока конструкцию класического z80 не изменить.
---------- Post added at 18:21 ---------- Previous post was at 18:19 ----------
Уже что-то, это же можно ИИ вражин обсчитывать.
я думаю это очень и очень геморно, поэтому до сих пор кроме самого алона ничего такого с GS так и не сделал.
Alex Rider
01.11.2015, 17:30
к сожалению это невозможно, пока конструкцию класического z80 не изменить.
DMA и захват шины были уже реализованы. Но для сопроцессора это - большой гемор. Блочными вводами-выводами проще.
sergio78
01.11.2015, 17:40
DMA и захват шины были уже реализованы. Но для сопроцессора это - большой гемор. Блочными вводами-выводами проще.
а чем всё же плоха схема, уже отработанная альтернативными x86 сопроцессорами? когда через буфер памяти загрузка, выгрузка результатов ведётся.
Обратите внимание на тот же алониевский движок от Вольфа, но под 16 цветов АТМТурбо в демке The Board 2 (http://zxaaa.untergrund.net/view_demo.php?id=7544).
Alex Rider
01.11.2015, 17:51
а чем всё же плоха схема, уже отработанная альтернативными x86 сопроцессорами? когда через буфер памяти загрузка, выгрузка результатов ведётся.
Не через буфер памяти. Там все сложно. В Z80 нет встроенных средств для этого. Есть аппаратные сопроцессоры для Z80, но приделывать их смысла нет.
sergio78
01.11.2015, 18:04
чем сложно? выделяется буфер памяти, в адресном пространстве Z80. в неё согласно параметрам сопроцессора, забиваются комманды и данные. на следущем цикле от ту да же, или из другого буфера памяти, получаем уже результат. никаких доп примочек городить не надо.
Alex Rider
01.11.2015, 18:08
чем сложно? выделяется буфер памяти, в адресном пространстве Z80. в неё согласно параметрам сопроцессора, забиваются комманды и данные. на следущем цикле от ту да же, или из другого буфера памяти, получаем уже результат. никаких доп примочек городить не надо.
Нифига не понял. Как сопроцессор без захвата шин будет читать/писать данные из/в буфера? Да и "прибитая" намертво адресация - это костыль. BASIC не адаптируешь, а это первое, что просится под сопроцессор.
sergio78
01.11.2015, 18:24
возможно. я ведь знаю очень поверхностно. но как то например Weitek 4167 это делал, когда шины i486 уже внутренним 87 сопроцессором были захвачены. может быть по спектрумовской традиции на какой то порт это чтение-запись повесить? BASIC как ненапрашивается, вообще трогать нельзя. все старые программы могут отвалиться разом.
Alex Rider
01.11.2015, 18:37
BASIC как ненапрашивается, вообще трогать нельзя. все старые программы могут отвалиться разом.
BASIC трогать можно и нужно - для любителей поиграться в старые BASIC-игры, которые, возможно, станут заметно шустрее. Желательно только модифицированный BASIC шить в альтернативное ПЗУ какое-то. Или поставить хук на rst #28, и подменять ПЗУ только для расчетов. А реализация с INIR/OTIR мне видится довольно простой.
PS Заказал ужо модераторам раздела переезд разговоров про сопроцессор в специально придуманную для этого тему.
Обратите внимание на тот же алониевский движок от Вольфа, но под 16 цветов АТМТурбо в демке The Board 2.
Видел на реале, красота, но кроме как в демке больше нигде его нет.
sergio78
01.11.2015, 19:00
PS Заказал ужо модераторам раздела переезд разговоров про сопроцессор в специально придуманную для этого тему.
там скорее всего эта тема быстро и загнется.
Alex Rider
01.11.2015, 19:03
там скорее всего эта тема быстро и загнется.
Все зависит от реализаторов железа. Я со своей стороны могу предложить программный интерфейс и адаптировать BASIC так, чтобы возможности сопроцессора можно было бы мгновенно использовать через вызовы стандартного ПЗУшного калькулятора.
sergio78
01.11.2015, 19:08
Видел на реале, красота, но кроме как в демке больше нигде его нет.
в демке ничего кроме голых стен нету. мне кажется что все ресурсы уже на эту стену ушли, и на врагов и предметы уже ничего не осталось. поэтому продолжения не последовало.
---------- Post added at 20:08 ---------- Previous post was at 20:03 ----------
Все зависит от реализаторов железа. Я со своей стороны могу предложить программный интерфейс и адаптировать BASIC так, чтобы возможности сопроцессора можно было бы мгновенно использовать через вызовы стандартного ПЗУшного калькулятора.
значит теперь всё от MVV зависит. если он отбросит свои наполеоновские планы на плату FPGA расширения, и сделает такую прошивку, чтоб только сопроцессором была, может действительно что то такое хорошее получиться.
в демке ничего кроме голых стен нету. мне кажется что все ресурсы уже на эту стену ушли, и на врагов и предметы уже ничего не осталось. поэтому продолжения не последовало.
Citadel также в демке появилась, но таки нечто почти играбельное всё же появилось.
Flash_zx
01.11.2015, 19:25
Обратите внимание на тот же алониевский движок от Вольфа, но под 16 цветов АТМТурбо в демке The Board 2 (http://zxaaa.untergrund.net/view_demo.php?id=7544).
Вот за такую игру (и вменяемые исходники этого движка) точно и денег не жалко было бы отдать. И действительно оно может быть не шутером для начала.. РПГ/Квест/Бродилка.. может с элементами этого самого шутера :v2_dizzy_eat: Да и сам Алоне судя по ответу, не против покодить, если художник и музыкант найдутся..
sergio78
01.11.2015, 19:36
Citadel также в демке появилась, но таки нечто почти играбельное всё же появилось. но дальше почти, увы опять же не продвинулось. если всё очень очень сложно, проект обречён быть незавершенным, даже если топтаться на этим долгие году кто то героически рискнет.
Вообще если честно - хватит насиловать труп!
Алоновские заслуги в движке - это круть несусветная, но для гамы не подходят.
Нужен другой принцип.
Как бездарь предлагаю:
Вращать (по настоящему) одну точку.
От неё уже строить соседние.
И уж потом между ними натягивать стены.
В любом разе получается что быстро и дешево (в тактак) чем бросать буферами.
Я может и не Америку открыл, но такого подхода пока не встречал.
Если чо - дарю.
Попробуйте, гении математики (я хоть и лопух, но душой с Вами!)
Удачь!
sergio78
01.11.2015, 19:40
Вот за такую игру (и вменяемые исходники этого движка) точно и денег не жалко было бы отдать. И действительно оно может быть не шутером для начала.. РПГ/Квест/Бродилка.. может с элементами этого самого шутера :v2_dizzy_eat: Да и сам Алоне судя по ответу, не против покодить, если художник и музыкант найдутся..
практика показывает, что за ретроигры денег платить некому. тот же wolf на sega md автору gasega68k ничего не принес. они там вроде картриджи в производство запускать собираются, может так железками что то ещё с олдфагов и собирут.
Andrew771
01.11.2015, 19:54
Вращать (по настоящему) одну точку.
От неё уже строить соседние.
И уж потом между ними натягивать стены.
ты имеешь в виду вращать каркас из точек?
sergio78
01.11.2015, 20:01
. И это верно на 100%, сценаристов и дизайнеров нет, художников нет игровых, музыкантов наверное тоже нет. Был у нас один Денис Грачев, но сбежал, теперь только буржуи радуют оригинальными игрушками, хотя и похуже чем у Дениса. у буржуев национальная валюта при каждом чихе не падает, в 2-3 раза. греция это отделный разговор. поэтому там процент талантливых художников, музыкантов и писателей кода, которые на пособие или не напряжной работе неплохо живут и тратят жизнь на разные хобби. причём не первое поколение, так, в то время как у нас все кто работать может, вынужденно на дядю пашут и ещё подрабатывать должны. какое уж тут творчество для давно умершего компа. а вот на несложные вещи, где талант и способность не требуется, у нас народа хватает, не меньше чем за бугром.
Flash_zx
01.11.2015, 21:33
... алон написал санчесу почему... сценаристов и дизайнеров нет, художников нет игровых, музыкантов наверное тоже нет. ...
Ну да.. я относительно этого про деньги и написал..
практика показывает, что за ретроигры денег платить некому. тот же wolf на sega md автору gasega68k ничего не принес. ...
Согласен, о "рыночных" сборах речи нет, но есть конкретный случай..
Алоне сам хочет написать игру на этом движке, но как то надо привлечь перечисленных спецов, плюс он тоже написал что есть люди готовые платить, то есть можно собрать средства под конкретный проект (речь не о вольфе.. речь об игре на движке и о самом движке). Не верится что их совсем нет. Просто кто в лес кто по дрова.
Вон у ТСа, тоже над псевдо 3дэ движком думают.. и наверняка придумают и будет там уже не 16с, а еще покруче. А вот конечного продукта так и не дождемся по тем же причинам :v2_dizzy_facepalm:
А вот конечного продукта так и не дождемся по тем же причинам
Нищеброды же...
sergio78
01.11.2015, 22:58
Нищеброды же...
это после футбольного чемпионата случиться, а пока ещё ложками по полу скребём.:v2_wink:
Shadow Maker
02.11.2015, 00:20
Я бы за вольф не заплатил, какойто он новомодный, где мой любимый клешинг? Но не делают его не поэтому, алон написал санчесу почему. И это верно на 100%, сценаристов и дизайнеров нет, художников нет игровых, музыкантов наверное тоже нет. Был у нас один Денис Грачев, но сбежал, теперь только буржуи радуют оригинальными игрушками, хотя и похуже чем у Дениса.
Ну кто-то же написал сценарий к кастлвании, еще кто-то нарисовал и накодил металмэна, музыку туда же написал, да и говорят кто-то делает игру про Диззи с неплохой такой графикой игровой, опять же не конверсия... Ну как бы судя по вышеперечисленному у нас проблема не в графике и не в музыке. Сценарий для игры типа вольфа можно в десяток предложений уложить, там больше левел-дизайн же, на который уже подписался Санчес... Так что о чем тут говорить - наверное дело не в том, что у нас кого-то нет, а просто нет паровоза, который это всё потянет за собой.
ты имеешь в виду вращать каркас из точек?
Нет, именно одну.
От неё уже плясать до других.
Предполагается ровно-квадратный мир (как в оригинальном вольфе), таким образом к этой точке которую крутим будут применимы те-же законы (равности смещений) на которые указывал Ширу в статье о рейкастинге.
Если откинуть момент с косяком переносимости исходников Wolf48 на кросс средства, то чем сам движок не устраивает? тем, что он 48к? что, при 48кб там вся память закончилась? или там память уже даже под 128кб закончилась? Мне кажется, в плане памяти старый движок 2004го года более оптимален. Если перегнать его с чанков на нормальные текстуры. Можно ещё попробовать разобраться в исходниках Цитадели, но я не смог их собрать или запустить (битые или не полные исходники?).
Опять таки - третий вариант это исходники wolf3d/doom83/maze3d для TI-83. Они написаны под ТАСМ для мс-доса. перетащить под "ужасм" думаю можно.
Sayman, Дмитрий сам же писал что последний его движок более эффективен чем старый. зачем опять с шила на мыло переходить?
а уж то что творится в Вулфе от ТИ83 это кстати тот еще тихий ужос.
jerri, в чём эффективность, если движок всю память выжрал и места только под техдемо осталось?
в чём ужос Вольфа для калькулятора?
jerri, в чём эффективность, если движок всю память выжрал и места только под техдемо осталось?
в чём ужос Вольфа для калькулятора?
на экране 1/4 от спектрума на скорости 12мгц
фреймрейт хуже чем на движке Алоне с экраном в 4 раза больше и скоростью 3.5
а память.. сколько памяти тебе надо?
под 48к вроде 6к осталось? разве этого мало?
естественно памяти под текстуры на калькуляторе больше
потому что сами текстуры меньше.
там одна текстура занимает 48 байт.
на спеке 128 байт.
касательно параметрических меток и макросов. почитал документацию на старый цпмный М80:
2.5.8. Специальные макрооператоры и формы
& амперсанд используется для конкатенации текста или
символических имен. Формальный параметр, представляю-
щий собой строку в апострофах, не будет заменен в рас-
ширении, если перед ним не будет стоять амперсанд. Для
образования символического имени из текста и формаль-
ного параметра между ними надо поставить &;
Пример.
ERG MACRO X
ERROR&X: PUSH BX
MVI BX,'&X'
JMP ERROR
ENDM
небольшой тестовый код показывает, что оно работает.
---------- Post added at 12:43 ---------- Previous post was at 12:40 ----------
а память.. сколько памяти тебе надо?
под 48к вроде 6к осталось? разве этого мало?
я пока не знаю сколько там памяти. речь была о том, что там памяти в притык и потом автор забросил этот движок. Вопрос - для какой модели там мало памяти, для 48кб Спектрумов или для 128? можно ещё варианты с большей памятью смотреть (но в ущерб распространённости).
я пока не знаю сколько там памяти. речь была о том, что там памяти в притык и потом автор забросил этот движок. Вопрос - для какой модели там мало памяти, для 48кб Спектрумов или для 128? можно ещё варианты с большей памятью смотреть (но в ущерб распространённости).
автор забросил потому как не смог сделать на нем полноценный вольф на 48к.
а на 128 я так считаю сделать можно.
вынести в страницу всю логику и возможно рендерер.
кстати да :) не задумывался на эту тему :)
мне нужен был экран произвольной конфигурации и я не знал как реализовать игнор символов. :) теперь знаю.
так а что насчёт эксперимента над м80 в сторону параметрических извратов? или с м80 никто связываться не хочет?
Зачем нужны эти параметрические извраты? развернуть все макросы и перевести исходники под сжасм.
мне тут один умный человек подсказал, что вот тут параметрические метки в ужасме работают:
http://zx-pk.ru/showpost.php?p=159487&postcount=264
только они "чуть-чуть" другие нежели в аласме
только они "чуть-чуть" другие нежели в аласме
а как понять другие? в чём оно проявляется?
Если я правильно понимаю генерацию меток в аласме,то:
Аласм
macro \0\1\7\6
JNC raynshort\0\1\7\6
...
...
raynshort\0\1\7\6
endm
сгенерится нечто типа
JNC metka
...
...
metka
сжасм:
macro a0a1 a0, a1
call a0_a1__yyy
...
...
a0_a1__yyy
endm
сгенерится:
call metka
...
...
a0_a1__yyy
т.е. в сжасме метка генерируется только в параметре операнда
P.S. с этими параметрическими метками реально моск ломается, может всё-таки проще раскрать все эти макросы... да и исходник читабельнее будет.
Andrew771
02.11.2015, 16:35
Сообщение от Andrew771
ты имеешь в виду вращать каркас из точек?
Нет, именно одну.
От неё уже плясать до других.
Предполагается ровно-квадратный мир (как в оригинальном вольфе), таким образом к этой точке которую крутим будут применимы те-же законы (равности смещений) на которые указывал Ширу в статье о рейкастинге.
Ну дык остальные точки зависят от той единственной не линейно (как я понял, ты про точку сходимости на горизонте). К тому же, при поворотах будут 2 точки сходимости на горизонте для перспективы. Т.е. нужно каркас точек (углов кубов) рассчитывать.
По опыту Zxoom: если взять глубину клеток лабиринта 6, то будет видно примерно 50 кубов на экране. Если рассматривать 64 значений угла для сектора 0-90 градусов (для остальных углов 90-360 градусов, 256 значений, изображения совпадают с 0-90 градусами), то будет всего 50*64=3200 кубов. Каждый куб содержит 3 характерных точки по 2 координаты выше оси X экрана, еще 3 точки ниже оси X симметричны им. Т.е. потребуется 3200*6=19200 байт, чтобы координаты вообще не рассчитывать. Не так уж и много. А если сделать минимальный поворот не на 1/64, а 1/32, вряд ли кто заметит, зато будет уже всего лишь 9600 байт... :)
Ну дык остальные точки зависят от той единственной не линейно (как я понял, ты про точку сходимости на горизонте).
Прочти статью Ширу http://zxpress.ru/article.php?id=8482, иначе наш разговор ничем толковым не закончится.
Там довольно толково описано, думаю поймёш о чем я даже без моих пояснений.
Andrew771
02.11.2015, 16:59
Прочти статью Ширу http://zxpress.ru/article.php?id=8482, иначе наш разговор ничем толковым не закончится.
Там довольно толково описано, думаю поймёш о чем я даже без моих пояснений.
вчера как раз поднял и читал. Там и крутится, и движется одна точка. Alone как раз и реализовал, что там написано. Что ты предлагаешь, не понятно. Напиши конкретнее.
т.е. в сжасме метка генерируется только в параметре операнда
по ссылке что я дал выше как раз будет так:
macro blah arg,nnn
...
_ccc_arg_nnn=$+1
ld de,0
endm
blah 1,2
ld hl,0140h
ld (_ccc_1_2),hl
метка _ccc_arg_nnn будет преобразована в _ccc_1_2 как и в аласме. но это только сжасм по ссылке выше, его там антипод правил. так же с такой же логикой умеет справляться старый М80.
по ссылке что я дал выше как раз будет так:
macro blah arg,nnn
...
_ccc_arg_nnn=$+1
ld de,0
endm
blah 1,2
ld hl,0140h
ld (_ccc_1_2),hl
метка _ccc_arg_nnn будет преобразована в _ccc_1_2 как и в аласме. но это только сжасм по ссылке выше, его там антипод правил. так же с такой же логикой умеет справляться старый М80.
а ссылку на эту версию сжасма?
вчера как раз поднял и читал. Там и крутится, и движется одна точка. Alone как раз и реализовал, что там написано. Что ты предлагаешь, не понятно. Напиши конкретнее.
Ну вот там где пишется "Вся фишка в том, что расстояния между всеми горизонтальными (и вертикальными) пересечениями одинаковы.".
Есть подозрение что этот принцип можно расширить. Т.е. крутить вокруг точки наблюдателя одну точку (возможно надо будет четыре) это как-бы эталон куба. Точка наблюдателя всегда внутри его. И перемещается тоже только внутри. А имея этот "эталон" строим уже весь остальной видимый мир. Как-то так.
jerri, http://zx-pk.ru/showpost.php?p=159487&postcount=264
вот в чём фишка. такая параметрическая метка должна начинаться с символа подчеркивания. Весьма интересно...
NEO SPECTRUMAN
03.11.2015, 17:19
может всё-таки проще раскрать все эти макросы...
да и так проще их раскрыть
это и надо делать
вполне возможно что за этой "универсальностью" не видно других способов оптимизации каждого из 8-ми вариатнтов по отдельности
Тут куча талантливых кодеров, неужели никто не возьмется перевести исходники с этого проклятого аласма в теплый-ламповый ужасм, развернуть макросы, написать гайд? Кому-нибудь вообще 3Д шутер на спеке нужен? Может проблема в оплате труда? Тогда озвучьте сумму. ;)
James DiGreze
03.11.2015, 19:14
Ау! ACNwes#59 почитайте, там вроде бы как AlCo приложил тулзу по конвертации своих исходников в более удобоваримый вид.
SaNchez, все упирается в свободное время.
кроме того там еще есть нюансы
ZX_NOVOSIB
03.11.2015, 20:19
Кому-нибудь вообще 3Д шутер на спеке нужен? Может проблема в оплате труда? Тогда озвучьте сумму.
Лучше в виде конкурса всё делать, конкурс на лучший 3D шутер. Сумма наверно должна быть по крайней мере не меньше чем призовой фонд RGB-2014.
ZX_NOVOSIB, 3д Шутер на спек? ты наверное шутишь
даже при 8 фпс он не будет динамичным.
я бы рекомендовал РПГ или чтото подобное не слишком ориентированное на реакцию.
а кроме тото что не делай - получится Wolf3d
Shadow Maker
03.11.2015, 21:42
Тут куча талантливых кодеров, неужели никто не возьмется перевести исходники с этого проклятого аласма в теплый-ламповый ужасм, развернуть макросы, написать гайд? Кому-нибудь вообще 3Д шутер на спеке нужен? Может проблема в оплате труда? Тогда озвучьте сумму. ;)
Ну мне не нужен, например. Никогда не любил шутаны и так и не прошел ни одного. А вот от RPG я бы не отказался, да и сделать ее попроще будет, чем шутан. Только она будет вся некрасивая чернобелая, тухлая в общем, лучше уж пошаговая, зато цветная.
даже при 8 фпс он не будет динамичным.
С турбой на 14МГц будет поболее восьми.
я ошибся - размер текстуры 64*64.
---------- Post added at 22:55 ---------- Previous post was at 22:53 ----------
Ну мне не нужен, например. Никогда не любил шутаны и так и не прошел ни одного. А вот от RPG я бы не отказался, да и сделать ее попроще будет, чем шутан. Только она будет вся некрасивая чернобелая, тухлая в общем, лучше уж пошаговая, зато цветная.
ну как тут сделаешь цветную? цветную можно вон на Эво, классик тут какбы мимо кассы.
Shadow Maker
03.11.2015, 22:44
ну как тут сделаешь цветную? цветную можно вон на Эво, классик тут какбы мимо кассы.
Ну хотя бы как в думе от ДР. Углы поворота урезать. Еще чего-нибудь.
Вообщем больше разговоров, чем дела. Перевести исходники на сжасм не деле вопрос одного вечера.
54776
Дубль (https://cloud.mail.ru/public/74uo/QHfLy4bwp)
Макрос RAY раскрыт
Автогенерация таблиц при компиляции переписана на Lua
на самом деле макрос не нужно было раскрывать. версия выше прикреплённая с этим макросом прекрасно справляется. хотя вот для jerri и Destr`а оно будет полезным, наверное.
У меня же пока совсем другие вопросы. Например, есть два основных материала по теме рейкаста:
1. http://zxpress.ru/article.php?id=8482 (тут просто читаемость лучше, чем на zxdn)
2. http://permadi.com/1996/05/ray-casting-tutorial-table-of-contents/
собственно говоря, первый составлен на основе второго. при этом есть ещё и:
3. http://lodev.org/cgtutor/raycasting.html
подходы в них кажутся разными и в то же время одинаковыми. Если следовать материалам permadi, то там многовато процедур получается, не факт что быстро. Но при этом, я встал на теме синусов и тангенсов. Да да, в школе я часто прогуливал уроки... Во всех материалах требуется работа с float/double. допустим, я напилил табличку тангенсов (для Xa=64/tan(угол луча) ):
fprintf(out, "\n\n\nTan256Table:\n");
for(k = 0; k <= 180; k++) {
if((k % 8) == 0) fprintf(out, "\n dw ");
else fprintf(out, ",");
temp = 64 / fabs(tan(k * (PI / 180)));
fprintf(out, "%5.0d", (int)temp);
}
табличка с данными в 16 бит (не страшно). А вот что с этими данными дальше делать, если всё и везде float?
Alex Rider
07.11.2015, 09:42
А вот что с этими данными дальше делать, если всё и везде float?
Использовать fixed point. Например: 192 * sin (45°) = 192 * sin(45/360 * pi) = 192 * sin(32/256 * pi) = 192 * 0,70710678118654752440084436210485 = 192 * 256 * SIN_TABLE[32] / 256 = high(192 * 181) = 135 c точностью 1 (136 с точностью 0,5, если сделать округление по старшему биту млпдшего байта) Точка сдвигается на 8 бит делением на 256: xxxxxxxxxxxxxxxx => xxxxxxxx.xxxxxxxx. Точку не обязательно двигать именно на 8 бит, можно и на больше, можно и на меньше, можно и вправо для больших чисел, можно вообще для разных этапов расчета двигать в разное место. Скажем, если делать вывод по высоте в 2/3 экрана (128 точек), то 7-битной таблицы для расчета по Y будет вполне достаточно, а 7-битное умножение более, чем на 1/8 дешевле 8-битного (за вычетом 4-х тактов на add a,a) с той же точностью в данном случае.
Alex Rider, выйди в аську...
- - - Добавлено - - -
ну и что, народ теперь кинеца кодить вольфы на zx?))
- - - Добавлено - - -
ещё вот исходник рейкаста для z80
http://www.ticalc.org/pub/86/asm/games/maze3d.zip
ну и что, народ теперь кинеца кодить вольфы на zx?))
а зачем вольфы? если вольф только один был есть и будет.
смысла в других просто нет
а вот использовать движок для
чего то более другого можно и нужно.
ещё вот исходник рейкаста для z80
http://www.ticalc.org/pub/86/asm/games/maze3d.zip
он не для спека же
и разрешение экрана мелкое
jerri, говоря про кинеца кодить вольфы, я имел ввиду то, что кодить игры от первого лица, будто шутеры или рпг или ещё что.
он не для спека же
и разрешение экрана мелкое
я пересмотрел парочку движков от калькуляторов. разрешение тут не причём. в одном движке используются вызовы системы (синусы, тангенсы, рисовалки на экран) которые, если я верно понял, на бейсике (подобие наших бейсиков 48 и 128). преимуществ по скорости там нет совсем. Мелкое разрешение нивелируется медленными вызовами, расчётами и выводом на этот мелкий экран. Во втором, что по ссылке выше, там чуть более оптимально. Однако, я заколебался реально приводить в пример все прошлые рейкастинг подобные решения для Спектрума - демка дума, демка цитадели, воль2004, вольф48к и все они куда навороченнее, чем решения (движки) под калькуляторы.
Особенно они выглядят интересными и вкусными, если отойти от темы 3.5мгц, а использовать различные доступные на разных клонах турбо режимы. У меня на моём реале (спринтер) проблем с тормозами нет ни в одном из движков!
Кроме того, чтобы использовать движок вольфа48к надо бы знать его начинку. Я так понимаю, кроме автора про его начинку никто ничего не знает. Допиливать его тут вряд ли кто станет (двери, спрайты, боты, потолок, пол и т.д.).
Я вот в нём не смогу разораться. Мне будет проще (и лучше) разобраться в самой теме рейкастинга и накидать что-то своё. Да, буду это делать долго, что поделать...
Кроме того, чтобы использовать движок вольфа48к надо бы знать его начинку. Я так понимаю, кроме автора про его начинку никто ничего не знает.
Там исходников 50кб всего, было бы желание.
Писать с нуля сильно сомневаюсь что будет проще.
все чего-то молчат по сабжу - или всем пофиг или все активно кодят свои движки?))))
ладно. вопрос на засыпку: в мануале от Ширу есть такой пунктик:
После двух трассировок выбираем ту точку, которая ближе (сравнив найденные расстояния), для неё и будем рисовать столбец.
В приведённом на картинках примере это будет точка E. Нужно бы подробнее рассказать о том, как найти расстояние от игрока до стенки. Есть несколько способов. Расскажу о двух. Недостаток их в том, что в одном нужно считать квадратный корень, а в другом - синус и косинус. Можно и просто посчитать расстояние (X=X2-X1, Y=Y2-Y1), но будет сложнее бороться с искажениями (о них - в следующем разделе).
Первый способ - расстояние от Px, Py до конечной точки Ex, Ey =
sqrt ( (Px-Ex)^2 + (Py-Ey)^2 ). Этот способ неудобен тем, что много медленных операций - два умножения и взятие квадратного корня.
Второй способ - расстояние = abs(Px - Ex)/cos(a) = abs(Py - Ey)/sin(a),
где a = угол луча. Этот способ удобнее тем, что табличку косинуса и синуса можно посчитать заранее, а из медленных операций - одно деление.
так вот. изначально я попёрся по второму варианту. Синус и косинус в табличках. Соответсвтенно dst.dv = ((ax-px)*256)/cosTable[pa] (pa это текущий угол трассера). Но тут есть косяк, т.к. при (ax-px)*256 можно легко словить переполнение "регистра". Т.е. результат выходит за пределы 16бит. Если делать чуть иначе: (((ax-px)*128)/cosTable[pa])*2, тогда падает точность, в среднем на +-1. при этом метод работает на карте примерно до 12на12. Если карта будет больше, 16на16 и более, то снова лезут те же косяки с переполнением.
Получается, что нужно засовывать или первый или второй метод в табличку. От сюда у меня вопрос: как можно завернуть или то или другое в эту саму табличку? пока прихожу к выводу, что это нужно всю карту завернуть туда и табличка может раздуться до х мегабайт, что не желательно. Алоне Кодер как-то через логарифмы завернул это всё по таблицам. Вижу, там 3 или 4 штуки по этой теме. но не могу свести их вместе. Его мозгодробильный код на асме даже не смотрю - есть страх потерять остатки разума совсем))).
Сейчас есть мелкая "рыба" на сях, с честными синусами, косинусами, тангенсами. рисуется в 64на48 с 0.4 кадра в секунду))))
Sayman, а на сях можно быстрее?
не такой уже кстати у него мозгодробительный код
jerri, на сях можно быстрее, но если делать табличками и с оптимизацией ручной на асме. а у меня почти 100% си (кроме вывода на экран) и нет табличек, пока. все синусы и т.п. в реалтайме, 32бит арифметика, а то и 48 (не помню я сколько там у хайтеха бит для float и double)...
про код алона - ну, ты сам то его смотрел? много там чего понял? формулу/метод его раскусил? а метод у него не документированный, не по permadi/Ширу и даже не по Lodev`у. Что-то своё там...
Sayman, список стен вполне себе по Ширу
горизонтальные/вертикальные.
то как он луч пускает тоже вполне себе понятно.
в край можно просто забрать метод запуска лучей
ну и что, народ теперь кинеца кодить вольфы на zx?))
интересно, хоть кто-то занялся данной темой?
интересно, хоть кто-то занялся данной темой?
ну, Jerri кажется что-то делал, кайдзю, если не ошибаюсь. И с движком Алоновским, он кажется разобрался...
ну, Jerri кажется что-то делал, кайдзю, если не ошибаюсь. И с движком Алоновским, он кажется разобрался...
делал, делал.
Алоновский движок так и не дописан.
спрайтов мало, с цветом тоже проблемы.
делал, делал.
Алоновский движок так и не дописан.
спрайтов мало, с цветом тоже проблемы.
его движок заточен под 48кб. вроде нет запрета на приминение его к 128кб и более. хотя управление памятью, видимо. прикрутить придётся.
с другой стороны, есть же версия этого же движка с адаптацией под "АТМ3" (zxevo baseconf).
тогда и спрайтов побольше натолкать можно, да и цветов побольше, чем 2.
его движок заточен под 48кб. вроде нет запрета на приминение его к 128кб и более. хотя управление памятью, видимо. прикрутить придётся.
с другой стороны, есть же версия этого же движка с адаптацией под "АТМ3" (zxevo baseconf).
тогда и спрайтов побольше натолкать можно, да и цветов побольше, чем 2.
мне атм3 не интересен.
а остальное там уж больно захардкожено
без комментов, без описаний и тд итп
раскапывать нет времени сейчас. как появится буду продолжать
мне атм3 не интересен.
а остальное там уж больно захардкожено
без комментов, без описаний и тд итп
раскапывать нет времени сейчас. как появится буду продолжать
про время понятно, а вот про АТМ3, странно, ведь ты же пользуешься ТС конфой, а они там не шибко то далеко друг от друга...
про время понятно, а вот про АТМ3, странно, ведь ты же пользуешься ТС конфой, а они там не шибко то далеко друг от друга...
ну я бы сказал - рядом не валялись. разная идеология
на ТСконфе я могу ни одного байта напрямую в экранную область не заслать, а изображение будет
на АТМ конечно это не так.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot