PC-01 Lviv http://pc01.lviv.ua/forum/ |
|
Портировать Boulder Dash на ПК-01 Львов http://pc01.lviv.ua/forum/viewtopic.php?f=20&t=399 |
Page 5 of 7 |
Author: | als [ 08 Jun 2021, 22:08 ] |
Post subject: | Re: Портировать Boulder Dash на ПК-01 Львов |
О! Zelya! И другие учасники форума тоже! По ходу вопрос возможно дивный или странный о задержке, точнее говоря о её точности! Вот только не подумайте, что я тролю (такое уже бывало в одной из тем). Итак, например, МНЕ НУЖНА ЗАДЕРЖКА КАК МОЖНО ТОЧНЕЕ И СТАБИЛЬНЕЕ относительно времени конечно! Я беру и реализовываю её несколькими командами (потоком нескольких команд), по сути не важно какими именно. Ну например 1.Nop = 4 такта или 2. XTHL = 18 тактов поток команд №1: - 18 команд подряд Nop , длительность всего = 72 такта или поток команд №2: - 4 команды подряд XTHL , длительность всего = 72 такта Поскольку частота процессора (любого) нестабильна как я понял, то и КР580, частота не строго 2500000 Гц. а может колебаться, скажем процентов так на 10. (ИЛИ НА СКОЛЬКО ?) А тепер вопрос. Можна ли сказать, что какой-то поток команд "1" или "2" более надёжен, стабилен, точен по времени, например, из за большего (меньшего) кол-ва команд в потоке или же из за большего(меньшего) так-тов в каждой команде потока ? У меня почему-то предчувствие, что чем дольше тактов выполняется команда, тем надежнее, стабильнее и точнее время её выполнения! Другими словами, поток команд "2" надежнее, стабильнее и точнее чем поток команд "1". Ну и "плюс" к точности "2", то, что команд поменьше в потоке! Насколько логично и справедливо это все сказано ? |
Author: | Zorko [ 09 Jun 2021, 02:00 ] |
Post subject: | Re: Портировать Boulder Dash на ПК-01 Львов |
Quote: А ты на мой МАДЛ гонишь! Я ж его не для написания бухгалтерских програм делаю! А для писания динамических игр для ПК-01! Не было никакой мысли гнать на МАДЛ. Я гоню вообще на ассемблер, на котором предпочитаю программировать чем меньше - тем лучше.Итак, как и обещал, выкладываю исходник Bolder16K: Игра будет. Работы не так много. Из трудностей: надо перерисовать все тайлы под 12x12. Читая на здешнем форуме тему про RiverRaid, я наткнулся на отличную реализацию вертикального скролла через стек. Это весьма пригодится для Болдера. Пока затык только в свободном времени. Вернее, его малости. Всем спасибо за помощь. Ждите новостей по игре. Это вообще будет моя иллюстрация разработки на Обероне, не более того. Как игра оно может и не столь хорошо. als, спасибо за тёплые слова про Болдер) |
Author: | als [ 09 Jun 2021, 11:59 ] |
Post subject: | Re: Портировать Boulder Dash на ПК-01 Львов |
Quote:
Я гоню вообще на ассемблер, на котором предпочитаю программировать чем меньше - тем лучше.
Ну я думаю, что ты не глупый человек, чтобы не понять какие возможности даёт МАДЛ (с помощью среды FPC), тому, кого МАДЛ заинтересует! И как можно "обвешать" его макросами (в виде возможностей FPC (процедур FPC)), для того чтобы АСМ в нём был конечно, но просто "утонул"! Причём, можна "обвешать" как самостоятельно до того момента пока самому нужно и хочеться, так и можна дождаться пока я это сделаю, но при этом МАДЛ всё равно можна уже использовать на "всю катушку"!Коротко об этом изложено вот здесь: Учимся писать на MADL2021 viewtopic.php?f=8&t=397&p=5453#p5440 И ты думаешь мне искренне не хочеться, что XDev была такой диковинкой как МАДЛ, а ? Та я бы и про МАДЛ забыл и забросил бы его! Но у автора XDev, что-то там свои какие-то "чертики". А теперь я тебе открою очень большой секрет - ты сам меня (своим скажем так "поведением" или правильнее сказать может, отношением своим) подталкиваешь, для дальнейшей разработки МАДЛа, вместо того, чтобы я про него забыл и забросил и окончательно "пересел" на XDev! Вот и понимай как хочешь! Но это правда! Но опять же, - зачем оно тебе ?! Я ж не заказчик и ты не под меня его делаешь, да и не зачем тебе его под меня одного делать, это верно! Поэтому, почитал выше написанное мною и забудь! Легче жить будет! Quote:
Итак, как и обещал, выкладываю исходник Bolder16K:
Это хорошо! Спасибо! Приходится обязательно! Вот только пока не знаю когда и как!
Quote:
Игра будет. Работы не так много. Из трудностей: надо перерисовать все тайлы под 12x12. Читая на здешнем форуме тему про RiverRaid, я наткнулся на отличную реализацию вертикального скролла через стек. Это весьма пригодится для Болдера.
Ну видишь, вот беда то, ты не делал обзор форума! Может тут много чего полезного можна найти! Я не в обиду! У меня тоже самое! Пример тому тема про "TASM" на которую я обратил внимание лишь только сейчас и создал "LVTtoTASM". А той теме лет 10 как!Я то вроде и пробегался когда-то, но видимо, тогда не заострил особого внимания. Видимо надо время от времени обзор форума делать, может на что-то уже посмотрю другими глазами. И т.д. (ну это я так... больше себе "говорю" чем тебе! Тебе ж ПК-01, это как всего лишь часть из ретро-машин, а мне как основное!) Quote:
Пока затык только в свободном времени. Вернее, его малости. Всем спасибо за помощь. Ждите новостей по игре.
Та ради Бога! Главное это не бросай вовсе! И видит Бог, если автор XDev захочет, то продвинем и его XDev, и может разберусь в нём когда-то так что и инструкции понаписываю! чёрт его знает... ничего обещать не буду!Как видишь, вот Оберон. Установка на Windows XP,"7" (32bit) среды разработки "XDev". viewtopic.php?f=20&t=395 что мог то и сделал! Кому-то когда-то это дай Бог пригодится! Тебе помогаю как могу, МАДЛ в сторону подвинул, подождёт, еще всегда успею, особенно если есть чего поинтереснее, - помочь реально, чтобы игрушка была готовая на ПК-01, а на МАДЛе еще писать нужно, предварительно МАДЛ доведя то того, чтобы максимально по кайфу было на нём писать! Да и лето на дворе! Комп надо побольше в сторону! Этим можна и зимой заниматься! Quote:
Это вообще будет моя иллюстрация разработки на Обероне, не более того. Как игра оно может и не столь хорошо.
Та ладно не скромничай! Все СУПЕР!
Quote:
als, спасибо за тёплые слова про Болдер)
Ну вообще-то будлер даш мне понравился с "времен проката Атари", т.е. с конца "восьмедесятых", когда Атари ставили на каждом углу, так сказать на прокат! Сколько я на него денег потратил то... И больше, чем на Атари, мне он нигде не нравился, - так ото, за неимением лучшего! Клоны "Рокфорд" и "Супаплекс" мне тоже не очень-то, хотя и игрался в них. Что касаемо Булдера на ретро-машинах, - хорошая у тебе задумка, чтобы уровень был весь на экране! Но на спеке я играться не буду, - управление мне явно не нравиться! Надеюсь, что на ПК-01 управление будет "стрелочками" и уровни как на спеке! Да и насчет уровней. Ну это уже когда выпустишь, то может я и сам, что-то для этого сделаю (если разберусь конечно как)- чтобы можна было редактировать уровни и данные уровней "компилить" в "Bolder16K.lvt" - и вот и готовый новый "булдер даш" с новыми уровнями! Автору булдера, лишь нужно делать базу уровней так, чтобы такое можна было делать без проблем и заморочек! ну и я как желающий в этом разобраться смог разобраться как туда "загонять" новые уровни! |
Author: | Zelya [ 09 Jun 2021, 14:50 ] |
Post subject: | Re: Портировать Boulder Dash на ПК-01 Львов |
Quote:
Из трудностей: надо перерисовать все тайлы под 12x12.
Зачем?
|
Author: | Zelya [ 09 Jun 2021, 14:54 ] |
Post subject: | Re: Портировать Boulder Dash на ПК-01 Львов |
Quote:
МНЕ НУЖНА ЗАДЕРЖКА КАК МОЖНО ТОЧНЕЕ И СТАБИЛЬНЕЕ относительно времени конечно!
Тут я не силен. Лучше почитать/спросить тут:https://zx-pk.ru/threads/33071-povyshae ... pk-01.html Но, как мне кажется, если инструкция не обращается к памяти, то ей более-менее можно доверять по таймингам. Хотя NOP - еще лучше, он даже с регистрами не играется (хотя, скорее всего регистры не влияют). |
Author: | als [ 09 Jun 2021, 16:15 ] |
Post subject: | Re: Портировать Boulder Dash на ПК-01 Львов |
Quote:
Но, как мне кажется, если инструкция не обращается к памяти, то ей более-менее можно доверять по таймингам. Хотя NOP - еще лучше, он даже с регистрами не играется (хотя, скорее всего регистры не влияют).
А ведь верно сказано! Наверняка есть разница пусть не ощутимая при обращение к адресу памяти $0000 и $FFFF. по идее чем выше адрес тем дольше обращение к нему!А ноп действительно даже с регистрами не играется! https://zx-pk.ru/threads/33071-povyshae ... pk-01.html - почитаю, что там такое. Был бы конечно "железный" ПК-01 можна бы было испытания делать, запустив "пачку" "одноимеённых" команд на целые часы работы или на несколько суток даже и не один раз! Думаю что-то бы да показало! а на емулях никакого смысла нету ж! |
Author: | als [ 09 Jun 2021, 16:20 ] |
Post subject: | Re: Портировать Boulder Dash на ПК-01 Львов |
Zorko, запустил, чисто побаловаться на пару минут EmuZWin_2.7. И игру Bolder16K для спека. И вот смотри до чего я "добаловался" Attachment:
Возможно то конечно глюк эмулятора,а может и игрушки все таки! В архиве файл Bolder16K.ezx, сохранил из эмуля "Save as..." когда такое показало! Уж не знаю поможет ли чем тебе такое, что я делал т.е. в каком моменте это возникло, особо не помню, ну игрой управлял в общем-то! |
Author: | Zorko [ 10 Jun 2021, 05:58 ] |
Post subject: | Re: Портировать Boulder Dash на ПК-01 Львов |
als, благодарю за инфу. Это действительно была ошибка в игре. Я её исправил. Суть ошибки: когда жизней становилось 0, внутренний счётчик жизней становился 255, и количество человечков, символизирующих жизни, тоже становилось 255. И вот такое количество человечков и выводилось, притом в цикле, который никогда не заканчивался. Есть одна древняя и не решённая проблема в языке Оберон, которую мы с Олегом Комлевым постарались исправить. Но из-за того, что я не докрутил в своё время код Олега под беззнаковый байтовый тип, и случился недосмотр этой ошибки. Ничего смертельного, просто неприятно. И остались хвосты, есть что дорабатывать в трансляторе. Zelya, ну, мы решили переписать игру под тайлы 12x12, что будет более нативно, тепло и лампово смотреться на "Львове", разве нет?) als, иногда свой инструмент (МАДЛ) получше чужого (XDev), поскольку его не надо изучать. Так что занимайся, я тебе не конкурент) K580Dev очень плотно завязан на z88dk и вынужден учитывать массу его особенностей. Ну и конечно - писать на языке высокого уровня под "Львов" - это весьма сомнительная идея. С чем я спорить даже не собираюсь. |
Author: | Zelya [ 10 Jun 2021, 10:54 ] |
Post subject: | Re: Портировать Boulder Dash на ПК-01 Львов |
Quote: Zelya, ну, мы решили переписать игру под тайлы 12x12, что будет более нативно, тепло и лампово смотреться на "Львове", разве нет?)
Все равно не понимаю. А почему 12х12 более нативно? А не 16х16 или 32х32? Тем более, что приходится запарываться с конвертацией.Quote: Ну и конечно - писать на языке высокого уровня под "Львов" - это весьма сомнительная идея.
Ну почему же. Не особо динамичные игры вполне себе можно писать на чем угодно. Например, текстовые квесты, карточные игры, настолки разные.Quote: Наверняка есть разница пусть не ощутимая при обращение к адресу памяти $0000 и $FFFF.
Не уверен, что адрес будет иметь значение. Но сам факт обращения к памяти может "тормозить" процессор на моменте вычитки данных. А какие там тайминги, я понятия не имею.
|
Author: | Zelya [ 10 Jun 2021, 11:03 ] |
Post subject: | Re: Портировать Boulder Dash на ПК-01 Львов |
Я думаю, перенесу эту тему и соседние в "Разработку". Это все освсем не оффтопик. |
Author: | Zorko [ 10 Jun 2021, 14:46 ] |
Post subject: | Re: Портировать Boulder Dash на ПК-01 Львов |
Quote: Все равно не понимаю. А почему 12х12 более нативно? А не 16х16 или 32х32? Тем более, что приходится запарываться с конвертацией. Во-первых, эта инкарнация игры задумана с одноэкранными лабиринтами 16x16 тайлов без прокрутки, и чтобы весь уровень сразу помещался на экране. Из этих соображений даже вертикальная прокрутка, которая сама собой напрашивалась для Спека, чтобы сделать игру цветной - отпадает.Во-вторых, мы уже рассмотрели с als варианты тайлов размера 8x8 (слишком мелко) и 16x16 (поместится на экран железного "Львова" только с артефактами отображения, возможно, с отсечением части графики за пределы экрана телевизора. Промежуточный вариант напрашивается сам собой: 12x12. Тут, правда, всё равно пришлось заморочиться на вывод в полупозиции (т.е. не кратной байту), но я прикинул, что такого вывода в процессе игры будет сильно меньше, чем обычного (кратного байту), так что должно быть не очень заметно. Если ты рассмотришь мой вывод тайла, то там фактически две подпрограммы - одна выводит тайл шириной 3 байта, вторая шириной 4 байта (с наложением двух пикселей слева и двух справа от изображения, существующего на экране). Quote: Ну почему же. Не особо динамичные игры вполне себе можно писать на чем угодно. Например, текстовые квесты, карточные игры, настолки разные. Ну да. Львову ещё повезло с 32 Кб ОЗУ. Но скорости всегда будет не хватать. Для некоторых людей (и игр) это неприемлемо. А памяти тоже всегда будет не хватать, тем более, в случае работы на Обероне можно на это всегда списать)
|
Author: | als [ 10 Jun 2021, 16:45 ] |
Post subject: | Re: Портировать Boulder Dash на ПК-01 Львов |
Quote:
Ну да. Львову ещё повезло с 32 Кб ОЗУ. Но скорости всегда будет не хватать.
А почему 32 а не 48 ?Quote:
Я думаю, перенесу эту тему и соседние в "Разработку". Это все освсем не оффтопик.
Zelya, я создаю темы в "офтопик" чтобы не парится где её создавать Пересмотри "офтопик" может еще какие-то куда-то перенесёшь, ты все таки админ и тебе виднее какою тему куда перенести! |
Author: | Zelya [ 10 Jun 2021, 20:51 ] |
Post subject: | Re: Портировать Boulder Dash на ПК-01 Львов |
Quote:
поместится на экран железного "Львова" только с артефактами отображения, возможно, с отсечением части графики за пределы экрана телевизора.
Я Вас умоляю! Рик на реале:https://www.youtube.com/watch?v=f2QIgRm ... C&index=18 Обрезано, дай бог, 8 пикселей слева и немного сдвинут верх (частая проблема). Думаю, на большинстве реалов проблемы не больше. Вот, уже существующий Boulder Dash: http://pc01.lviv.ua/games/page.php?name=boulderdash Никто не заморачивается отсечениями на ПК-01. Это имеет смысл разве что для "Сапера" какого-нибудь с клетками 8х8. Бросайте конвертацию и хитрые процедуры для смещений. Используйте 16х16. Quote: Ну да. Львову ещё повезло с 32 Кб ОЗУ.
Почему 32? 48 же.ПС Александр меня уже опередил, с 48 |
Author: | Zorko [ 13 Jun 2021, 20:29 ] |
Post subject: | Re: Портировать Boulder Dash на ПК-01 Львов |
Zelya, спасибо! Учту. Я было подумал, что совсем плохо с рамками вокруг основного изображения на "Львове". Но если всё это терпимо, то это даже к лучшему, графика крупнее будет. Какой набор цветов нравится больше? (я пока рассматриваю только два): (второй немного удобнее, потому что 0 - чёрный цвет. Но это не обязательно, просто надо свою процедуру очистки экрана сделать, вернее, заливки нужным цветом). |
Author: | als [ 13 Jun 2021, 21:09 ] |
Post subject: | Re: Портировать Boulder Dash на ПК-01 Львов |
Attachment:
Прикрути вот такую штуковину и будет полный "фарш"!И не надо будет парится с цветовой гаммой. вот только по умному прикрути! Как в "САС-Лабиринт", чтобы абсолютно в любом моменте можно было нажатием цветовою гамму поменять! ВЕЗДЕ чтобы работало нажатие на "2". И паузу реализовать не забудь! И при паузе должна работать изменение цветовой гаммы и в меню, да где угодно! Короче, глянь "САС-Лабиринт" там все это работает как надо! Code: {изменеия цвета экрана нажатием на "2" из игры "Лабиринт"} program Project; uses uMD01u in 'uMD01u.pas'; VAR EE_Cycle,Proc_Color_RET,Byte_Color,Proc_Color_cycle1,Proc_Color :TLabelLV; BEGIN INITCompiler; SetFullNameLVTfile('_res.LVT'); SetNameInternalKOI(#$20+#$20+#$20+#$20+#$20+#$20); {Процедура Опроса нажатия кл "2"} {Byte_Color - переменная установленного цвета} LabelA(Proc_Color); { изменения цвета нажатием на '2'} MviA($EF);Out_($D0);// посылаем на порт $D0, '11101111'{$EF} In_($D1); // опрашиваем порт $D1 Cpi($BF); //'10111111'){BF}); // сравниваем нажата ли "2" Jnz(Proc_Color_RET);// если не нажата выход {если же нажата .....} {Byte_Color = Byte_Color+4} Lda(Byte_Color); MovBA; MviA($04); AddB; Sta(Byte_Color); Out_($C1); // { отправиляем Byte_Color на порт $C1 } {Ожидаем отжатия "2"} LabelA(Proc_Color_cycle1); MviA($EF);Out_($D0); // посылаем на порт $D0, '11101111'{$EF} In_($D1); // опрашиваем порт $D1 Cpi($BF); //'10111111'){BF}); // сравниваем нажата ли "2" Jz(Proc_Color_cycle1); // если не ОТЖАТА, - переход LabelA(Proc_Color_cycle1); LabelA(Proc_Color_RET); RET; LabelA(Byte_Color);DB($00); // переменная цвета // конец процедуры StartProgram; LabelA(EE_Cycle); Call(Proc_Color); Goto_(EE_Cycle); FINALCompiler; END. |
Page 5 of 7 | All times are UTC+03:00 |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |