Просмотр полной версии : Ищу желающих выступить в роли программиста
Есть идея засунуть масштабную метроидванию в ZX 128k.
Но в программировании я нубец. Могу быть лишь художником/музыкантом на данной платформе.
Первые наброски имеются
https://pp.userapi.com/c848520/v848520137/16614a/DBp2ApSuVDo.jpg
https://pp.userapi.com/c848416/v848416915/169e71/UT7yO8svLkM.jpg
https://pp.userapi.com/c848520/v848520137/166153/ekacEd7lZjQ.jpg
И на хардваре (номинал резистора bright-атрибута до сих пор не профиксил):
https://pp.userapi.com/c851020/v851020362/f56c7/N2qa3XOEmtQ.jpg
https://pp.userapi.com/c851020/v851020362/f56d1/kf5_8IJX_TQ.jpg
https://pp.userapi.com/c851020/v851020362/f56db/PZFUfWAwX4w.jpg
Если кого заинтересовал такой графон, подсобите в качестве прогера.
Какие требования к движку:
Познакоместный цветной скролл не тормознее Savage по обновлению кадра. Маска под спрайты не нужна. Нужно лишь менять атрибуты в определённых местах, чтоб клешинг вписывался в общую картину. Тайлы окружения 16*16, местами 8*8, 8*16, 16*8. Также для экономии памяти тайлы нужно местами зеркалить.
Физика а-ля марио.
Под ночное время суток нужно использовать иной набор спрайтов, со своей светотенью. Одной лишь инверсии атрибутов недостаточно.
https://pp.userapi.com/c851416/v851416373/f611a/mD3V03MkkOE.jpg
sergio78
07.04.2019, 18:59
хорошее дело. жалко, что тут кто из программистов есть, уже по уши в работе.
Круто, с удовольствием бы попробовал, но не уверен что найду время. Когда то очень хотелось сделать полноэкранный познакоместный скроллер бродилку, но не было графики, а у меня с этим очень туго. Надеюсь что кто-нибудь возьмется.
Тест 2014 года, по-моему я тут его уже выкладывал.
Lethargeek
08.04.2019, 13:26
Графон вкусный. Я так понял, скролл только горизонтальный предполагается? Несколько лет назад экспериментировал с прокруткой разной дискретности, но сейчас уже всё позабывал и загружен. :(
CityAceE
09.04.2019, 04:01
Есть идея засунуть масштабную метроидванию в ZX 128k.
Я правильно понимаю, что помимо графики имеется и сценарий?
ознакоместный цветной скролл не тормознее Savage по обновлению кадра.
Может всё-таки лучше будет поэкранное перемещение? Дошёл до границы локации - экран сдвинулся на следующую локацию.
Под ночное время суток нужно использовать иной набор спрайтов, со своей светотенью. Одной лишь инверсии атрибутов недостаточно.
В этом случае может не хватить памяти ZX128.
Тоже есть задумка сделать свою метройдованию ;)
https://pic.maxiol.com/images/1554772953.3254906935.metro.gif
ZX_NOVOSIB
09.04.2019, 07:54
ALKO, весна-лето может не самое удачное время для поиска единомышленников ) Луче такие вещи пытаться осенью-зимой продвигать, когда у потенциальных соратников свободного времени чуток побольше ))
abelenki
09.04.2019, 08:19
Тоже есть задумка сделать свою метройдованию ;)
на базе Rod Land? ;)
CityAceE
09.04.2019, 08:24
на базе Rod Land?
Графику из RodLand (и не только из неё) дёрнул для отладки - чтобы что-то на экран выводить. Ну, а выбор донора был не случаен - уж очень мне нравится тамошняя графика ;)
Может всё-таки лучше будет поэкранное перемещение? Дошёл до границы локации - экран сдвинулся на следующую локацию.
На движке Alien Neoplasma/Castlevania/PowerBlade что ли?
Скролл был бы зрелищнее. Но то уже зависит от прогера. Лишь бы не AGD/MK2. Бомбит из-за поделок на этих конструкторах.
CityAceE
09.04.2019, 12:05
На движке Alien Neoplasma/Castlevania/PowerBlade что ли?
Ну не на нём конкретно, но суть та.
Скролл был бы зрелищнее.
Но и вместе с тем более тормозно.
Но и вместе с тем более тормозно.
Savage, Rebel, Action force, TMNT и тд. ничуть не тормозные.
Carlos Michelis огроменный массив врагов обрабатывает, и при этом скролл вполне плавный, хоть и познакоместный.
Savage, Rebel, Action force, TMNT и тд. ничуть не тормозные.
Carlos Michelis огроменный массив врагов обрабатывает, и при этом скролл вполне плавный, хоть и познакоместный.Названые тобой игры
Саваж тмнт неполный экран, враги туууупые
Аф скролл так себе враги тупые,
Карлос довольно таки тормозной.
И да много зависит от графики
В саваже блоки 4х4 вроде знакоместа
Сильно помещает ФПС при большом количестве врагов.
Кстати ты уже мир нарисовал?
Отправлено с моего Redmi Note 5 через Tapatalk
Кстати ты уже мир нарисовал?
Это всё та же техно-алиса, которую начинал на андроиде. Там она в изометрии была.
А платформер под ZX набросал вот лишь на этих выходных. Чтоб рисовать мирок, я должен понимать, будет ли возможность его перегнать из TMX-формата в спек, или же это пустая трата времени.
Остальные зарисовки я буду в дальнейшем скидывать в данную тему.
Карлос довольно таки тормозной.
На спеке всё подряд довольно-таки тормозное. Так что Карлос на фоне основной массы смотрится бодрячком.
В Брунильде тормознее, вроде.
- - - Добавлено - - -
враги туууупые
Не думаю, что для метроидвании нужны враги с высокой учёной степенью. Достаточно поведения, как в кастле, супер вондер-бое и тд..
- - - Добавлено - - -
Это всё та же техно-алиса, которую начинал на андроиде. Там она в изометрии была.
https://pp.userapi.com/c850336/v850336636/b8df7/OCOhX1B1YBc.jpg
https://pp.userapi.com/c851416/v851416760/9d0f3/bZtiSrFDZmE.jpg
Lethargeek
09.04.2019, 16:38
Саваж тмнт неполный экран, враги туууупые
Аф скролл так себе враги тупые,
Карлос довольно таки тормозной.
И да много зависит от графики
В саваже блоки 4х4 вроде знакоместа
Сильно помещает ФПС при большом количестве врагов.
в туррикане вроде повеселее скролл? во все стороны (и размер окошка 17 строк))
в туррикане вроде повеселее скролл? во все стороны (и размер окошка 17 строк))2/3 экрана. Тайлы 16х16. Скролл насколько помню до тайла.
Собственно как везде, иначе за фрейм на экран не бросить.
Отправлено с моего Redmi Note 5 через Tapatalk
Это всё та же техно-алиса, которую начинал на андроиде. Там она в изометрии была.
А платформер под ZX набросал вот лишь на этих выходных. Чтоб рисовать мирок, я должен понимать, будет ли возможность его перегнать из TMX-формата в спек, или же это пустая трата времени.
Остальные зарисовки я буду в дальнейшем скидывать в данную тему.
На спеке всё подряд довольно-таки тормозное. Так что Карлос на фоне основной массы смотрится бодрячком.
В Брунильде тормознее, вроде.
- - - Добавлено - - -
Не думаю, что для метроидвании нужны враги с высокой учёной степенью. Достаточно поведения, как в кастле, супер вондер-бое и тд..
- - - Добавлено - - -
https://pp.userapi.com/c850336/v850336636/b8df7/OCOhX1B1YBc.jpg
https://pp.userapi.com/c851416/v851416760/9d0f3/bZtiSrFDZmE.jpg
Ясно понятно без программера никак.
А насчёт графики скажу так. Надо идти от карты. Хотя бы одной. Чтобы понять как хранить тайлы.
Отправлено с моего Redmi Note 5 через Tapatalk
Я считаю, что надо ломануть
оригинальную игру для начала...
...И все, что можно -с нее перетащить...
Спрайты, код - если на Z80 и тд...
С нуля игры - сложно делать...
Я считаю, что надо ломануть
оригинальную игру для начала...
...И все, что можно -с нее перетащить...
Спрайты, код - если на Z80 и тд...
С нуля игры - сложно делать...Какую игру ты хочешь ломать ?
Отправлено с моего Redmi Note 5 через Tapatalk
По графике - подобрать близкую...
На Dendy (NES) - много похожих игр...
И проц там Z80 - по-моему...
По графике - подобрать близкую...
На Dendy (NES) - много похожих игр...
И проц там Z80 - по-моему...Тут как бы ТС является автором и художником игры для андроида.
Тут нужен только программер и музыкант.
Для комплекта. А ещё много времени.
Ломать это если нет совсем ничего
Отправлено с моего Redmi Note 5 через Tapatalk
Архитектура донди ну ваще ничем не родственна с архитектурой Горбатого.
Разве что процы 8-ми битны, и шина адреса 16 бит. На этом схожесть заканчивается.
- - - Добавлено - - -
и музыкант.
Музыку под AY я могу писать в том числе.
На Dendy (NES) - много похожих игр...
ага...по этой логике... надо железо эмулировать..
Ну че, кто взялся?
C tmx думаю проблем не будет не у кого, tiled известный редактор, хотя с mappy проще работать, по крайней мере мне было проще. При наличии готового уровня и пачки нпс с героем количество желающих помочь зашкалит. А вообще как писал еще дедушка Тёрнер, за код надо садится когда готова вся графика, сюжет и карта.
CodeMaster
09.04.2019, 22:05
И проц там Z80 - по-моему...
... музыку играет.
... музыку играет.
... разве что в сеге дженезис и ГБА.
В nes играет музло центральный проц, в него же вшит генератор волн.
за код надо садится когда готова вся графика, сюжет и карта.
Сюжет вкратце Джере уже расписал. Графон каждые выходные готов пилить. Карту тоже набросаю.
Lethargeek
09.04.2019, 23:56
2/3 экрана. Тайлы 16х16. Скролл насколько помню до тайла.
может, и 2/3 (панель 7 строк), но прокрутка точно познакоместная
NEO SPECTRUMAN
10.04.2019, 00:50
А кто подкинет чего почитать по выводу\рисованию спрайтов с точностью до пикселя (из современного и быстрого)
тк не особо то и умел
и еще долгое время ничего не делал :v2_dizzy_sleep2:
и много чего подзабыл\потерял
Lethargeek
10.04.2019, 03:08
NEO SPECTRUMAN, повтыкай в дизасм aliens neoplasma, например
там до пикселя сразу же с табличным сдвигом и отражением
Labrador
10.04.2019, 05:08
Savage, Rebel, Action force, TMNT и тд. ничуть не тормозные.
"Приключения буратино" Медноногова. (Только что играл :) )
Подумал...
Движок - можно взять из -
Twin World...
Он там небольшой -
где то 17-20 КБ...
Скроллинг по знакоместам...
Но зато есть подземелья и
герой прыгает...
"Приключения буратино" Медноногова. (Только что играл :) )
Он на Laser basic. Жутко тормозной. Такое не надо.
А кто подкинет чего почитать по выводу\рисованию спрайтов с точностью до пикселя (из современного и быстрого)
тк не особо то и умел
и еще долгое время ничего не делал :v2_dizzy_sleep2:
и много чего подзабыл\потерялЕщё мы с барсом обсуждали вывод спрайтов в теме с Диззи 7 ремейк. Там была ещё его процедура вывода до пикселя.
Отправлено с моего Redmi Note 5 через Tapatalk
"Приключения буратино"
Он на Laser basic
это твои фантазии.
Он на Laser basic.
https://ru.m.wikipedia.org/wiki/Приключения_Буратино_(комп ютерная_игра)
«Приключения Буратино» были для Вячеслава Медноногова второй игрой, разработанной на*ассемблере
А кто подкинет чего почитать по выводу\рисованию спрайтов с точностью до пикселя (из современного и быстрого)
тк не особо то и умел
и еще долгое время ничего не делал :v2_dizzy_sleep2:
и много чего подзабыл\потерял
нашел вот тутl (https://zx-pk.ru/threads/27263-vyvod-sprajta-lyuboj-shiriny-s-tochnostyu-do-pikselya.html)
Понимаешь, ALKO...
Групп, которые могут
сделать такую игру - 2...
Sanchez и RetroSouls...
А из 90х - CopperFeet, Fatality, Nicodim...
Steve Turner - писал, что первую
игру - Quazatron - делал 9 месяцев с нуля...
С 8 - 17.00 каждый день...
В следующую игру - он перетащил
весь код, который смог - процедуры подошли
примерно на 95%...
На 95% !!! - от одной игры к другой...
Можешь посмотреть на vtrd.in -
сколько доделанных проектов -
единицы... 95% софтины - осталось
в стадии демо...???
Я не беру в расчёт игры типа - угадай число или
отгадай слово... Я беру коммерческий
уровень...
Выводы...??? Сделаете сами...
Stl75, ты зачем человека демотивируешь? критик чтоли?
Stl75, ты зачем человека демотивируешь? критик чтоли?
Jerry, я просто реально глянул
проекты Russian на vtrd.in...
При этом желательно, чтобы
проект оплатили...
Кто в наше время - бесплатно
работает...
На конкурс какой-нибудь, можно
сделать...???
Я просто подвожу к тому -
1. Время уйдёт немерянно.
2. Набор процедур - надо иметь.
В мешке - это для начала.
3. И как писал разработчик -
Last Hero of Light Force -
что родаки не дали умереть
дитятке с голоду...
А так никакой критики -
кроме реального положения вещей...
Вот, например, Crystal Dreams -
пробовали маску - спрайт -
сделали игру Smagly 1...
NEO SPECTRUMAN
12.04.2019, 01:02
95% софтины - осталось
в стадии демо...???
я просто реально глянул
проекты Russian на vtrd.in...
ты учитывай что большинство этих проектов
пришлись на "конец эпохи спектрума"
- - - Добавлено - - -
ALKO, ты ужо 10 лет на форуме
мог бы 4 раза уже научится кодить ;)
- - - Добавлено - - -
а немного поднаучившось ЧСВ сразу множится на 3 :v2_tong2:
ты учитывай что большинство этих проектов
пришлись на "конец эпохи спектрума"
- - - Добавлено - - -
ALKO, ты ужо 10 лет на форуме
мог бы 4 раза уже научится кодить ;)
- - - Добавлено - - -
а немного поднаучившось ЧСВ сразу множится на 3 :v2_tong2:Не надо ему кодить. Пусть дизайнит и рисует.
Вон слип кодит. И как помогло ему это? Лучше чем Грачев все равно не сделает.
Поэтому надо думать ни о коде.
NEO SPECTRUMAN
12.04.2019, 04:51
Не надо ему кодить. Пусть дизайнит и рисует.
ну он как бы все время хочет своих игор
а одним дазайном он игор явно не сделает...
CityAceE
12.04.2019, 05:16
Да нет, всё правильно ALKO делает! Каждый должен заниматься тем, что ему интересно и что он может. Не обязательно всем уметь программировать, рисовать и музицировать. Закинул удочку и молодец! Как минимум, привлёк внимание общественности. Ведь кто-то может сидит и не решается принять участие в проекте. Вот меня, например, проект заинтересовал, но я, как и остальные, просто боюсь подвести по срокам. Одно дело, когда что-то там для себя пишешь в моменты, когда приходит вдохновение, а другое дело, когда у тебя есть ответственность перед командой и сроки. Вот, например, сейчас я могу потратить какое-то время на программирование, а совсем скоро у меня не будет ни минуты свободной. И что станется с проектом? Но можно было бы организоваться и сделать полноценную команду разработчиков с системой контроля версий, четкой системой мэйлстоунов и т.д. Чтобы не заморачиваться на одного программиста, художника и музыканта. Ведь можно и несколько программистов на одном проекте иметь. Один пишет движок, другой логику, третий оформление, четвёртый на подхвате и т.д. Но нужен лидер, свято верящий в идею и всеми силами стремящийся дойти до конца, даже когда все остальные перестали верить в проект, лидер, готовый пинать всех остальных и т.д. Одному, конечно, удобнее всё делать - ни на кого не завязан, всё в голове, работаешь в своём темпе... Но не все у нас такие самородки. Так что нужно начать с чёткой документации, плана. И уже потом имея на руках все расписанные детали, можно будет проще отыскать помощников. Игру такого уровня вполне реально написать не более чем за год, если всё правильно организовать.
NEO SPECTRUMAN
12.04.2019, 05:27
Один пишет движок, другой логику, третий оформление, четвёртый на подхвате и т.д
нет столько людей
и уже не будет
тут вопрос другой
"кто если не ты?"
так что надо уметь по возможности всё...
мог бы 4 раза уже научится кодить
последний раз кодил спек в начале 00-ых. И то дело было ещё на машинных кодах (через DATA/POKE в бейсике забивал по табличке коды). Таким образом даже биперный диктофон сваял, осциллограф (правда для него волна любой формы была пилообразной, так как один бит), а также полифонический биперный движок. То есть поверхностно асм знаю.
Но всё кануло в лету. У меня тогда даже магнитофона для записи не было.
Много лет с тех пор прошло, я нынче даже от синклер бейсика отвык. Порой несколько минут тыкаюсь, чтоб извлечь нужную команду.
Я не заявляю на 100%, что игра и вправду будет. Если кодер не найдётся, так тому и быть, буду доволен хотя бы зарисовками и основной идеей. Тем более я за кроссплатформу, а следовательно, одним лишь спеком не собираюсь ограничиваться.
NEO SPECTRUMAN
12.04.2019, 08:48
я нынче даже от синклер бейсика отвык.
да и не нужен он... (на спеке для получения нормального продукта)
он нужен только для загрузчика
и для обучения деток, которые с ходу не возьмут что то по серьезней, самому принципу
или для каких то быстрых калькуляционных задач...
а для платформ с процом до 30МГц
только асм только хардкор
или никак
херею как для ардуинов пытаются писать
на всяких ся бейсиках :v2_dizzy_facepalm:
и еще жалуются что медленно...
Мне не нравится - идея игры...
Предлагаю свою идею...
В подземельях (канализации) Нью Йорка, Москвы, Киева -
размножились мутанты и вурдалаки, которые хотят захватить
город сверху...
Алиса - спускается в подземку и начинает мочить
зомби, вурдалаков и прочих уродов...
Если будет время -
можно декомпильнуть что-то из -
1. Savage
2. Trantor
3. TMNT
4. SirWood
5. Karnov...
Что нибудь одно - за лето можно разобрать...
Мне не нравится - идея игры...
Предлагаю свою идею...
В подземельях - канализации Нью Йорка, Москвы, Киева -
размножились мутанты и вурдалаки, которые хотят захватить
город сверху...
Алиса - спускается в подземку и начинает мочить
зомби, вурдалаков и прочих уродов...
Если будет время -
можно декомпильнуть что-то из -
1. Savage
2. Trantor
3. TMNT
4. SirWood
5. Karnov...
Что нибудь одно - за лето можно разобрать...Про идею понятно
А зачем декомпилить старое невнятное и потом под это ещё и свои хотелки сгибать?
Потому что...
Столько кода - написать сложно...
Чтобы все работало нормально...
На отладку - уходит много времени...
Алиса - спускается в подземку и начинает мочить
зомби, вурдалаков и прочих уродов...
Что может мотивировать маленькую хрупкую невинную девственную девочку... ахх... так, о чём это я...
Ах да. Так что может мотивировать героиню фигарить мутантов вурдалаков в подземельях? Ещё и непойми откуда образовавшихся.
Тем более сеттинга подземок и так предостаточно на Горбатом. Все игры заполнены на 99% чёрным цветом. Даже Диззи, который на всех платформах яркий, жизнерадостный, на горбатом опять же - черным-черно.
В моей идее мирок должен предстать красочным, многогранным, но и мрачные моменты тоже будут.
Ты не учел...
Алиса - злобная сатанистка,
на пустырях приносила в жертву темным Богам -
кошек, собак и прочую живность...
А теперь - она выучилась на охотника за головами,
телохранителя и тд...
И тут такой случай...
В подземельях (канализации) Нью Йорка, Москвы, Киева -
У меня скорее отсылка к творчеству Льюиса Кэрролла. То бишь это не московия, не киев, а что-то ближе к Англии викторианской эпохи.
Никакой не постап, а-ля метро и прочие сталкеры.
- - - Добавлено - - -
Алиса - злобная сатанистка,
на пустырях приносила в жертву темным Богам -
кошек, собак и прочую живность...
А теперь - она выучилась на охотника за головами,
телохранителя и тд...
Для того, чтоб стать скилловым головорезом, допубертата недостаточно. Там уже по идее должна быть дамочка бальзаковского возраста по типу такой:
https://youtu.be/0I4_41crLlg
Вам отдельную тему надо создавать по поиску кодера под такую идею.
Потому что...
Столько кода - написать сложно...
Чтобы все работало нормально...
На отладку - уходит много времени...Давай я тебе дам дизасм аббатства
И ты мне расскажешь как оно работает.
И кстати ни одна из предложенных тобой игр автору не подходит по условиям
Jerri, мы не в институте -
задачки решаем...
jerri, лучше расскажи есть ли сайты
с готовыми дизасмами???
И чем их декомпилируют???
ALKO, для твоей игры -
подойдет TWIN WORLD...
Jerri, мы не в институте -
задачки решаем...
jerri, лучше расскажи есть ли сайты
с готовыми дизасмами???
И чем их декомпилируют???
ALKO, для твоей игры -
подойдет TWIN WORLD...[emoji16]
Ты меня не провоцируя, я могу и правду сказать.
Сайты есть например сайт исходников
А дизасмят идой разумеется, на данный момент наиболее удобный инструмент
А твинволд автору вообще не подходит
Так же как и остальные спиномозговики
подойдет TWIN WORLD...
По правде говоря, непонятно, почему в этой игре познакоместно скроллится экран, да ещё и с таким убогим показателем фпс: 3 кадра в секунду, когда всё вокруг монохромное, да ещё и скроллится строго по горизонтали.
То ли дело Stormlord. Вот это реально шедеврище.
Но опять же, к чему упоминание рандомных игорок, если дизасмом никто маяться не станет?
Jerri, дал бы ссылку на сайт исходников...???
Jerri, дал бы ссылку на сайт исходников...???http://opensourcezx.untergrund.net/
Dart Alver
12.04.2019, 18:41
Эх ! Были раньше бродилки, мочилки, стрелялки, гонялки , а теперь метродивании да мордоивании ))) - пока не загуглишь хрен поймёшь )))
Графика да, великолепная. ALKO отлично постарался. Хотя ...
Все игры заполнены на 99% чёрным цветом. Даже Диззи, который на всех платформах яркий, жизнерадостный, на горбатом опять же - черным-черно.
Я наоборот считаю что чёрный фон лучший вариант для спека, тогда цветовая палитра персонажей и декора более красочна, но это сугубо не более чем ИМХО )) .
Мне не нравится - идея игры...
Соболезную ((
Ты не учел...
Алиса - злобная сатанистка,
Точно-точно хорошенько поучи автора кто на самом деле его персонаж )))
ALKO, весна-лето может не самое удачное время для поиска единомышленников
Это точно, весна, огороды, ремонты, дачи. ))
Когда то очень хотелось сделать полноэкранный познакоместный скроллер бродилку, но не было графики, а у меня с этим очень туго. Надеюсь что кто-нибудь возьмется.
Класно получилось, даже параллакс в наличии. А какой антураж планировался если не секрет ?
OFFTOP:
ALKO посмотрел на твои андроАлисоскрины и так захотелось представить как чтото похожее могло бы смотреться на спеке, что не удержался и повырвиглазил чутка. ))
68745
ALKO посмотрел на твои андроАлисоскрины и так захотелось представить как чтото похожее могло бы смотреться на спеке, что не удержался и повырвиглазил чутка. ))
А я же в изометрии раньше выкладывал скетч.
68746
- - - Updated - - -
На самом деле там и андроид версия менялась неоднократно.
https://vk.com/wall-145919754_412
- - - Updated - - -
https://media.giphy.com/media/Sv2rAZGdTx9CuGoj3y/giphy.gif
- - - Updated - - -
68747
68748
так может вам Survivisection от санчеса посмотреть.
исходники он вроде выкладывал
https://youtu.be/6kGyI4lzHA8
Были раньше бродилки, мочилки, стрелялки, гонялки , а теперь метродивании да мордоивании )))
Спек синхронно с нинтендой - первопроходец данного жанра. Причём Метроид, как Antiriad появились в один год (1986):
https://www.youtube.com/watch?v=FY_HkDHH8aI
- - - Updated - - -
так может вам Survivisection от санчеса посмотреть.
На спеке решено всё-таки платформер делать.
- - - Updated - - -
Survivisection крутая конверсия Chaos engine. И зубодробительная кислота от Fatal Snipe ничуть не хуже Jesper Kyd-овской колбасы на сеге.
Но без кемпстон-мауса и флоппи-привода, увы, не погонять. А у меня ни того, ни другого не прикручено :c
На спеке решено всё-таки платформер делать.
так и делайте. возьмите часть движка.
у него там и редактор уровней был
NEO SPECTRUMAN
12.04.2019, 21:45
Но без кемпстон-мауса
клавиатуры хватает
пройти игру вполне возможно и с нее
Забракованный вариант карты.
(в мануале к игре надо будет указать пользователям Горбатого, что настоятельно рекомендуется в настройках монитора понизить насыщенность до 20%-15%, иначе надолго закалённых глаз спектрумистов не хватит, а для неподготовленного пользователя и пары секунд хватит, чтоб схлопотать облучение "кислотой")
https://pp.userapi.com/c847218/v847218596/1e8c32/9MxVNgWuMoU.jpg
https://media.giphy.com/media/Y4nX2cNnl6omb0QdUv/giphy.gif
CityAceE
30.04.2019, 02:30
Это концепт или уже кто-то начал движок делать?
Это мой фейк на ПК. Но сделал с познакоместным скроллом, и познакоместным же позиционированием спрайта персонажа при разрешении 256*192. Если подзаморочиться можно и трушный клешинг персонажа с бэкграундом замутить.
Это просто для наглядности, как оно могло БЫ выглядеть.
Всё же писи-версию планирую переделать под более адекватную графику.
Lethargeek
30.04.2019, 12:34
для пц переключаемый стиль графики можно сделать, ultimate bruce lee как пример
ultimate bruce lee как пример
Кха. Там нет скроллов. Там всё просто.
А у меня если делать выбор между познакоместным позиционированием, и адекватным попиксельным - гемор. Причём первое реализовать геморнее.
- - - Добавлено - - -
Переключаемую расцветку спрайтов сделать просто, не вмешиваясь в игровую логику. А шоб прям совсем труЪ выглядело, неотличимо от спека, это уже запара.
Да и вообще я не видел среди инди-игар спековскую трушность. Да, были попытки закосов под спек. Но по псевдо-лимитам оно больше походит на MSX/Colecovision/Sega Mark III.
А шейдера атрибутного клешинга представлены в виде примитивных демок.
В любом случае, смысл так извращаться вижу лишь на реальном железе, а не в виде пародий.
Dart Alver
30.04.2019, 19:32
Но сделал с познакоместным скроллом, и познакоместным же позиционированием спрайта персонажа при разрешении 256*192.
Сколько знакомест скролируешь в секунду ?
Сложно сказать.
Учитывая то, что рендерер обновляется 60 кадров в секунду.
Смещаю на знакоместо каждые 4 кадра из них.. получается 15 знакомест в секунду... Вроде. Пробовал делать смещение при коэффициенте 6, тоже неплохо смотрится.
Но я уже переделал под плавный скролл.
- - - Добавлено - - -
На горбатом даже при его тормознутых возможностях знакоместный скролл крут.
Dart Alver
30.04.2019, 21:31
Смещаю на знакоместо каждые 4 кадра из них.. получается 15 знакомест в секунду... Вроде. Пробовал делать смещение при коэффициенте 6, тоже неплохо смотрится.
Если уложить цикл обработки в 5 прерываний, то выйдет 10 знакомест в секунду как при коэф.6, а если удастся впихнуть в 4 - то 12,5.
А кадры анимации меняются чаще чем скролинг знакоместа или одновременно с ним ? (По гифке не очень вижу) Если одновременно, то ...
Вообще опыта программирования игр или дем у меня ноль с большим минусом )) , просто тут размышлял как чисто теоретически можно замутить подобный скроллинг (код никакой не писал, пока другими делами занят). Если использовать способ смены экранов - перегонять экраны со смещением из основного в теневой и обратно, соответственно достраивая границы и перемещая персонажей? Некоторая проблема может быть при извлечении графики из сегментов в теневой экран, но что-то придумать-то наверно можно будет.
А кадры анимации меняются чаще чем скролинг знакоместа или одновременно с ним ?
Они по своему независимому каунтеру меняются, с этим тоже можно побаловаться.
Тут я вообще хотел объявить клешингу войну. Сделать нетипичный, как для спека, графон. Не только тем, что чёрного цвета теперь не 99% экрана.
Во-первых, если на фоне что-то монолитное, ярко выраженное, то оно должно быть foreground-ом.
https://pp.userapi.com/c853620/v853620760/326ba/tjSugtas9Xw.jpg
https://pp.userapi.com/c853620/v853620760/326eb/uSAdSU4Xbm4.jpg
Во-вторых, для тёмных локаций персонаж должен быть прорисован с другой светотенью.
https://pp.userapi.com/c853620/v853620760/326d3/pJkX-1XSOEY.jpg
- - - Updated - - -
https://media.giphy.com/media/gdwUy9JOKKHRT6EtXx/giphy.gif
На горбатом даже при его тормознутых возможностях знакоместный скролл крут.
Мои старые тесты напоминают что атрибутный скролл, как в гифке, будет занимать максимум пару кадров. А с таким балансом атрибутной заливки и еще меньше. Прям руки чешутся, лежит где-то в тестах несколько вариантов движка под такую графику, эх несколько бы лет назад...
Мои старые тесты напоминают что атрибутный скролл, как в гифке, будет занимать максимум пару кадров. А с таким балансом атрибутной заливки и еще меньше.
Добавить туда обработку столкновений, ИИ хотя бы уровня марио, наверное уже будет не так шустро.
Сеговская палитра:
https://vk.com/wall-145919754_516
Да, это всамделишный скриншот из игры (с)
1.
https://pp.userapi.com/c854428/v854428466/8acc7/yKD04sMsH_0.jpg
2.
https://pp.userapi.com/c854428/v854428466/8acd1/YEx4rrfcVqc.jpg
3.
https://pp.userapi.com/c854428/v854428466/8ace3/nWx3f68Huy8.jpg
4.
https://pp.userapi.com/c854428/v854428466/8aced/gyI0CLI3a-Q.jpg
ZX_NOVOSIB
06.07.2019, 17:09
ALKO, :v2_thumb:
Программиста-то нашёл?
Программиста-то нашёл?
Да вроде не.
Та мне и не к спеху. Контента толком нет, как и времени для креатива.
Титулка под Гигаскрин 8х8 (два виртуальных экрана по 7кб)
https://sun9-15.userapi.com/c853420/v853420914/ec45c/jnNmhaxmQJ8.jpg
На железе, увы, тайминги кривые. Из-за чего знатно бомбит. :dizzy_mad_old:
Там косяки не только в гигаскрине.
https://sun9-71.userapi.com/c853420/v853420914/ec41c/OA0A0b2RX6I.jpg
Скетч, если кому интересно:
https://sun9-19.userapi.com/c853420/v853420914/ec437/r7QLlpuI9K8.jpg
https://sun9-44.userapi.com/c853420/v853420914/ec44a/a16GjHL9Nms.jpg
А работает на том железе, корпус которого на фото? Если да, то там тайминги совсем мрачные. Знаю, потому что у меня такой. На нём даже неПЗУшные загрузчики толком не работали, пришлось магнитофон дорабатывать.
Панцушот зачётный :)
А работает на том железе, корпус которого на фото?
Да. На фото Ленинград-1. После ремонта и апгрейда до 128кб+AY. Раньше (до поломки) тайминги в нём были адекватнее. А ща и движок Savage бешено играет, и в Cobra force спрайты мерцают, и мультиколор кривой, и некоторые AY-движки от код-мастерс бешенные, и прочие траблы. Возможно, надо кондёрчик куда-то в RC-цепочку допаять. Да вот хз какой номинал. Та и вообще у меня гАлубая мечта - привести на нём всё в порядок, и привинтить DivIDE. Только там шина нестандартная ещё. Надо ZX-Bus допаивать с нормальной распиновкой. Если я займусь этим, то там все кишки будут наружу. Поэтому не решаюсь.
Да. На фото Ленинград-1.
Эм... ну вообще на фото я вижу корпус "Парус"а.
Эм... ну вообще на фото я вижу корпус "Парус"а.
Эм... внешность обманчива. А уж тем более когда речь о совко-клонах, то это парадигма.
Парус, кстати, тоже был. Но нечаянно сгорел.
Уот, собственно, почему ТЕХНО-Олеся:
https://sun9-99.userapi.com/c855532/v855532412/10d77a/1s1GDDa_KsI.jpg
ZX_NOVOSIB
01.10.2019, 09:29
Уот, собственно, почему ТЕХНО-Олеся
По сюжету у Олесi есть антогонiст? Если да, то кто?
По сюжету у Олесi есть антогонiст? Если да, то кто?
Я и так прилично заспойлерил. Ну да ладно...
Антагонист - птица (коршун). Как бы странно это ни звучало. Причём сама птица личных мотивов против Техно-Олеси не имеет. Да и рамса между ними не будет.
Такие дела.
- - - Добавлено - - -
Самого антагониста достаточно в интро и в аутро продемонстрировать скриптом. Не более.
А ищё :v2_dizzy_botan: у меня в последнее время фетиш на ДОС-платформеры с EGA графоном (всякие Dangerous Dave 2, Duke nukum, Cosmos cosmic adventure, jill of the jungle, bio menace, и тд.)
Всё это гоняю на пентиуме, хоть для него такая графика и зашквар (там надо бы 386ой как максимум, для аутентичности, но у меня дома и так слишком много барахла).
Так вот, вся эта тема с познакоместными скроллами (помимо хитрого движка Командир Кина) как раз то, что я и хотел бы видеть в Техно-Олесє. И вот мне стало интересно, как бы у меня вышел пиксельарт под EGA адаптер.
Жаль DOS платформа к настоящему времени мертвее всех мёртвых. Полторы демосцены раз в 10 лет, да одна хоумбрюшка (Planet X3 от блоггера 8bit Gay). И как следствие - нет толком инструментария для создания игор.
Стадии апгрейда Олеси.
http://i.piccy_.info/i9/f870a9e7270090a574eddc1c39cb5d67/1570043700/24642/1340684/Upgrade_800.jpg (http://piccy_.info/view3/13423778/c65ffa9b1036bb3e4dede409befc8e32/1200/)http://i.piccy_.info/a3/2019-10-02-19-15/i9-13423778/800x177-r/i.gif (http://i.piccy_.info/a3c/2019-10-02-19-15/i9-13423778/800x177-r)
- - - Добавлено - - -
http://i.piccy_.info/i9/598229f1766b5c73e0ead2147feaa9a5/1570047789/127340/1340684/2342342_800.jpg (http://piccy_.info/view3/13423869/3bef52c97fde556a42859ba4ac5d0289/orig/)http://i.piccy_.info/a3/2019-10-02-20-23/i9-13423869/755x566-r/i.gif (http://i.piccy_.info/a3c/2019-10-02-20-23/i9-13423869/755x566-r)
Lethargeek
03.10.2019, 04:10
Стадии апгрейда Олеси.
первые 4 нормуль, но последняя - жуткая старушка в скафандре без нижней челюсти :v2_dizzy_aaaaa:
marinovsoft
03.10.2019, 04:35
Зато сиськи выросли.
первые 4 нормуль, но последняя - жуткая старушка в скафандре без нижней челюсти :v2_dizzy_aaaaa:
Тут уж кто как воспринимает монохромный лоурез пикселей.
Но те несколько квадратиков это типа часть шлема.
- - - Добавлено - - -
Мдя, чёт я не подумал о тех, кому может показаться это плечом, или чем-то ещё...
https://media.giphy.com/media/lQIA89kDY2qXg6mQ33/giphy.gif
Andrew771
11.10.2019, 00:32
Паскаль животворящий))
Паскаль животворящий))
Всё равно моего скилла хватит лишь на мини-аркадку, а не на масштабное полноценное приключение.
Так что вопрос с программиздом, умеющим все ранее упомянутые вещи, всё ещё в силе.
Andrew771
11.10.2019, 10:20
Ну движок графический ты почти сделал. А логику на пасквиле можно, если не сильно навороченная, тормозить не будет.
ZX_NOVOSIB
11.10.2019, 10:55
ALKO, сделай, чтобы при движении ввысь у героини слегка колени бы сгибались ) А сверху пусть птицы-враги пролетают, только они должны быстро пролетать, быстрей чем стены внизу. Птицы как бы должны мотивировать игрока возвращаться обратно вниз после преодолевания очередной стены.
Ну движок графический ты почти сделал.
Вот только он пригоден разве что для анлимитед раннера, но никак не для платформера со скроллом по всем 4-ём направлениям, разнообразными тайлами, приоритетом наложения спрайтов бэкграунд-фореграунд и т.д. и т.п.
+ я не осилю 128к. А игра настолько масштабная должна быть, что там даже на 128к придётся подгружать локации.
- - - Добавлено - - -
А сверху пусть птицы-враги пролетают, только они должны быстро пролетать,
Врагов добавлю.
Но не птиц. Ибо тут события уже разворачиваются внутри космического корабля. Тут иная фауна.
Lethargeek
12.10.2019, 00:04
Вот только он пригоден разве что для анлимитед раннера, но никак не для платформера со скроллом по всем 4-ём направлениям, разнообразными тайлами, приоритетом наложения спрайтов бэкграунд-фореграунд и т.д. и т.п.
+ я не осилю 128к. А игра настолько масштабная должна быть, что там даже на 128к придётся подгружать локации.
видать, нету на масштабные проекты времени у людей, не то, что раньше, когда не хватало больше сценаристов или художников
я бы, может, взялся лет пять назад, на всём готовом-то, а сейчас не успеваю даже своё; разве что оптимизировать что-нибудь
ты бы на пц/андроид пилил пока, логику отлаживал игровую, дизайнил уровни, хоть на спектруме работы меньше будет потом
ZX_NOVOSIB
12.10.2019, 08:14
ты бы на пц/андроид пилил пока, логику отлаживал игровую, дизайнил уровни, хоть на спектруме работы меньше будет потом+100500
Может даже пару десятков баксов бы заработал )) А может и пару сотен :v2_dizzy_aaaaa:
Человек прямо пишет "программировать не умею, ищу кодера", а ему "а ты на пц/андроид пока пили"... ПЦ какой-то.
Имею желание попробовать, но, боюсь, не осилю. И некогда, и опыта игрописания нет.
ZX_NOVOSIB
12.10.2019, 15:22
Человек прямо пишет "программировать не умею, ищу кодера", а ему "а ты на пц/андроид пока пили"... ПЦ какой-то.Ну ты не сравнивай "накодить чего-нибудь на спектрум" и накодить на ПЦ. Это две большие разницы, тем паче человек уже выкладывал кой какие свои "неспектрум"-поделки, значит как бы слегка могёт ))
ALKO, Жаль времени у меня мало. Но пока что ежедневно, утром и вечером почту просматриваю. Так что пока ты не нашёл настоящего программиста, смело обращайся ко мне, пиши вопросы, шли снапшоты и тексты. Видео не шли, у меня интернет слабый.
ZX я хнаю очень хорошо. Прекрасно знаю как и что работает на уровне ассемблера. Умею и писать и отлаживать код. Cоображаю короче.
Всё сделал согласно ваших указаний по шаманству над interrupt-музоном.
Работает, но как и прежде - проседает фпс/темп музла именно при обработке клавы.
Жду когда ты пришлёшь мне снапшот с заедающей музыкой. Я его запущю, послушаю, нажму на F12(в EmulZWin-е) посмотрю что за режим прерываний. Проверю, чтобы нигде "DI" "EI" не было. Проверю, чтобы лишних вызовов Play не было, а только в прерывании. И так далее...
Если музон правильный, и ты всё сделал правильно, то стопроцентно должно работать. А если не работает, то будет видно почему, и это можно будет исправить. Ключевое слово 100%. Одна из причин, почему люди любят ZX, потому что его можно знать на 100%. Он легко охватывается мозгом целиком. Не на уровне симуляции, конечно. А на уровне уверенности, что во всём можно разобраться. То есть я всегда знаю, куда нужно копать.
- - - Добавлено - - -
Я так много написал, чтобы передать тебе уверенность, что твоя проблема со звуком НЕСОМНЕННО будет решена. Чтоб ты даже не сомневался. Я вижу, что ты достаточно настойчивый человек. И этого от тебя достаточно.
Ща я на раб-оте. Вечером отправлю.
Чпоок.
Ещё одна заставка к одному из гипотетических эпизодов не менее гипотетической игры.
https://sun9-47.userapi.com/c857132/v857132071/22f2c/RV9ww10z180.jpg
Ну и по традиции на кривом реале (всё ради него, родимого):
https://sun9-32.userapi.com/c857132/v857132071/22f3f/Ci-qdjY4qoQ.jpg
Попытался добавить заставку гаме-овер.
Был приятно удивлён бешенной скоростью обновления экрана (прям как на денди)
Но неприятно то, что оно пашет не как планировалось.
https://media.giphy.com/media/ZFKdS5L4sWFHTAPwUn/giphy.gif
Bedazzle
03.11.2019, 09:59
Попытался добавить заставку гаме-овер.
Кто-то спрайты из других игр ворует, а ты, походу, геймовер украл. :D
https://media.giphy.com/media/Qx5OuFPBks4OTeWCXL/giphy.gif
Bedazzle
05.11.2019, 00:04
https://media.giphy.com/media/Qx5OuFPBks4OTeWCXL/giphy.gif
Здорово выходит!
Может, концы капель двух видов сделать, и рандомно отображать, тогда нарушатся идеальные полукружки?
Не думаю что это как-то разнообразит общий минимализм.
Продолжаем рубрику развития Алиськи.
https://media.giphy.com/media/WOwLvEP1QU19za2tRi/giphy.gif
Безграничная мосщтчь...
... ГОРБАТОГО
https://media.giphy.com/media/RLPl5YSYnpFMh1rSJV/giphy.gif
Bedazzle
23.12.2019, 14:30
https://media.giphy.com/media/RLPl5YSYnpFMh1rSJV/giphy.gif
Мне кажется, что этой мясорубкой ей сейчас башку отрубит!
Save Our Alice!
Сега-версия, если чё.
https://media.giphy.com/media/mEyRMlrIdEyo86lDYi/giphy.gif
Игрой кто-нибудь занялся уже? Хотел поинтересоваться возможностью параллельной
разработки разных версий. Что я имею ввиду? Я бы попробовал покодить игру, даже
если она уже в разработке, но опять же не уверен насчёт своего скилла, как многие говорят.
Хотябы посмотреть 114 пост, не уверен, что быстро смогу(и вообще смогу ли))).
Вобщем, если автор-дизайнер не против могу попробовать(от него не убудет). Я бы
время от времени списывался, скидывал то, что смог или не смог, никаких обязательств
по срокам)) больше времени на изучение определённых вещей(ссылка на "скилл мал")).
Если автор не против я попробую, но нужны определённые напутствия(можно в стиле упрощённого ТЗ, разбитого на маленькие порции).
Короче, автор говорит "сделай-ка вот это", я делаю, отсылаю ему или показываю результат(через неделю)))))
Просто няшный пиксельарт, и хотелось бы попробовать его использовать(все права, даже на код, будут автора))))
пс
Надо же резюме)) я в своё время ничего не сделал на спектруме, кодил аналог дюны на генсе,
и как мой друг вспоминает, там "что-то ездило собирало"(харвестеры). Но тогда знаний и
возможностей было мало, и закоженое на бумаге просто не очень влезало в память как листинг.
Я тогда уткнулся в просто большой листинг, который сжирал всю память, а транслирование по
частям не осилил, или забил. Писал очень медленные ПСЕВДО 3д на бейсике(танки), подробности
могу рассказать.
На постпространстве написал танчики. Причём задачей поставил написать PC транслятор, сделал, написал на нём танки, ну вроде играбельно))
https://viva-games.ru/game/tank-1990-128k
А больше на ZX ничего не сделал(что бы сохранилось)))
Сега-версия, если чё.
а на яче все олдёши))
а на zxЕ все ол_ёШИ
- - - Добавлено - - -
Да причём тут сега
- - - Добавлено - - -
Если не надо, я другой темой займусь)
- - - Добавлено - - -
Я думал ... да насрать)) делайте)
- - - Добавлено - - -
А ZX Зачем
Andrew771
25.06.2020, 22:18
кодил аналог дюны на генсе,
и как мой друг вспоминает, там "что-то ездило собирало"(харвестеры). Но тогда знаний и
возможностей было мало, и закоженое на бумаге просто не очень влезало в память как листинг
вот с этого места поподробнее. Я сейчас тоже RTS пишу (https://zx-pk.ru/threads/262-strategii-realnogo-vremeni-na-zx-spectrum.html?p=963214&viewfull=1#post963214), причем на этом же Паскале, что и ALKO. Но сам Паскаль нужно подрихтовать, память жрет нехорошо. Займусь в ближайшее освободившееся время.
И вообще, твои наработки на интересную статью тянут, написал бы. Я с GENS тоже боролся в свое время, только 3D шутер писал. Но закончил только уже в кросскомпиле EmuZWin вместе с ALKO в 2011 году :)
вот с этого места поподробнее
Просто спек появился у друга(мой помер), и я студентом был, уезжал на неделю, в свободное время весь код тупо в тетрадку писал. Когда приезжал, загружали генс, и я с бумаги листинг переписывал. В итоге листинг занимал много памяти, что на транслированный код не хватало памяти. Но была такая фишка в генсе в этом случае, код частями транслировать, и по частям выгружать. Но для меня тогда заморочек много было, или чего-то не понял, игра умерла(а помню там поиск пути и тд было, и даже прикреплённые цепочки юнитов друг за другом следили)).
Короче делать на любом асме на PC - в современном мире это норм. А потом уже готовый байткод на спек
- - - Добавлено - - -
RTS пишу,
А почему не хочешь всё на асме "ручками"? Или производительность такая же примерно?
Andrew771
26.06.2020, 21:49
А почему не хочешь всё на асме "ручками"? Или производительность такая же примерно?
1. Сейчас очень мало времени, чем в 90е-2000е, так что на асме проекты длятся пятилетками.
2. Мозговзрывные алгоритмы (типа поиска пути и проч.) на асме очень сложно писать и отлаживать. Даже корифеи Copperfeet и Alone Coder сначала писали на С, а потом переводили в асм. Сходу фиг напишешь. Код на асме в крупных проектах распухает, становится малоуправляемым. На ЯВУ же всё под контролем.
Я сейчас подумываю еще более убыстрить разработку, посматриваю потихоньку на различные RAD.
Мозговзрывные алгоритмы
Да на самом деле ничего мозговзрывного, если я правильно помню. Там в контексте формата хранения уровня я делал упрощённый алгоритм так сказать "трассировки" направления к цели. Добрался до препятствия, начинаешь обходить по незанятым местам, попутно сравнивая, отдаляешься ли ты от места. Если постоянно отдаляешься, то можно впихнуть определённую переменную "порог времени отдаления", чтоб алгоритм прекратился с результатом -путь не найден-. На помощь этому алгоритму могут прийти всякие ограничительные фишки, чтоб при постройках не было слишком много "труднообходимых полостей в строениях". Выкрутиться можно, и мне кажется даже средствами не сильно повлияющими на играбельность. Но всё надо тестить.
Кстати алгоритм работает не каждый фрейм, а только иногда, сохраняя путь. Быть может повторно при постройке новых зданий.
Я не помню применял ли я рекурсию при поиске по сетке карты, но тоже вариант в малых квадратах.
Код на асме в крупных проектах распухает, становится малоуправляемым
Вот мне кажется, что это только в КРУПНЫХ проектах, которые длятся пятилетками) Если пишешь сам и не так долго, у тебя запоминается, где что у тебя в коде, что делает, и даже сто с этим в будущем сделать или не сделать.
Даже корифеи Copperfeet и Alone Coder сначала писали на С, а потом переводили в асм. Сходу фиг напишешь.
Ну это-то да, но и проекты и люди разные. Если ты не ради "копеечку урвать", то просто попробуй сам написать игрулю на асме, потому, что мне кажется, что ты не пробовал, а с чужого опыта решил, так сказать решил учиться на чужих ошибках. Хотя может я ошибаюсь, и ты это по своему опыту)
- - - Добавлено - - -
Сейчас очень мало времени
Я поправлю: "Сейчас очень мало времени, которое я хотел бы выделить для данной темы, а не на те клёвые занятия, которые у меня появились после 9х-2000". Может и не правильно поправил :)
а на яче все олдёши))
а на zxЕ все ол_ёШИ
- - - Добавлено - - -
Да причём тут сега
- - - Добавлено - - -
Ооо, сега эт цвитное...
Да и потом, в сеге всё тот же z80 на борту. Хоть и отвечает лишь за звуковое сопровождение.
Сам проект я худо-бедно развиваю (правда на раб-е в последнее время завал, поэтому творчество не столь продуктивно продвигается).
Что касается сотрудничества, можно заняться сайд-проектом (типа следующая глава истории), а то в текущем проекте всё не влезет в 40кб.
https://youtu.be/FZZ6cuMZ3Z8
На данный момент парюсь с управлением, мозго-секс тот ещё.
- - - Добавлено - - -
Уповаю на то, что Эндрю профиксит оптимизацию Пасцаля до начала Яндех-конкурса.
Andrew771
04.07.2020, 17:41
Уповаю на то, что Эндрю профиксит оптимизацию Пасцаля до начала Яндех-конкурса.
Фигово. Кажись, не получится оптимизация пока. Попробовал заменить арифметические и логические выражения на байт-код, целый день потратил, неудачно, жрёт всё равно места много. Других идей для оптимизации памяти пока нет.
Так что, ALKO, оптимизируй свой код на Паскале.
Рекомендации:
- размерности массивов делай кратными 2;
- если происходят частые вызовы ячеек массивов с одними и теми же индексами, то лучше сначала загонять в промежуточные переменные. Хоть и есть оптимизация по повторяющимся индексам массивов, но всё равно вручную про(и)думать через промежуточные переменные лучше;
- одинаковые или почти одинаковые куски кода лучше делать процедурами. Локальных переменных в процедурах нет, но можно делать через глобальные, перед вызовом процедур их заполнять.
Andrew771
04.07.2020, 23:08
Да, блин, всё-таки пока без гибрида Паскаль+Асм пока не обойтись, на Z это понимаю сейчас...
Так я и говорил, ну ладно не говорил, просто думал. А что за проблема с управлением?
- - - Добавлено - - -
Эндрю нужны теги ассемблерной вставки. Или они есть?
- - - Добавлено - - -
Ыыы потом окажется, что весь код из ассемблерных вставок:)
- - - Добавлено - - -
Я не про сотрудничество говорил. Я просто хотел поделать в свободное время. Всё что напишется, твоё[алко](если напишется). Так что если есть просто валяющиеся идеи..
- - - Добавлено - - -
Ну допустим параллельная история
Andrew771
05.07.2020, 20:26
Эндрю нужны теги ассемблерной вставки. Или они есть?
есть.
Ыыы потом окажется, что весь код из ассемблерных вставок
пока 80% Паскаля :)
Решил попробовать-потестить полноэкранный скроллинг. Сделал влоб LDIR-ом(можно оптимизировать). Обратный скроллинг ещё не продумал, но будет. Вертикальный скроллинг вместе с горизонтальным не получится с такой организацией уровня, либо то, либо это. Зато длину уровня можно делать какую хочешь, и места не так много занимает. Только спрайтов нету, несколько штук вырезал. Сделал пример видео, но там из за записи скорость страдает, так как ноут древний.
org 32768
strt call FILL_TABLE
ld b,80
right push bc
ld ix,LINE_TABLE
ld b,24
nxt_ln push bc
call PRINT_NEXT_SPRITE
pop bc
ld de,lt_size
add ix,de
djnz nxt_ln
call SCROLL
pop bc
djnz right
jr strt
;---------------------------------
;заполнение экранных адресов
FILL_TABLE
ld ix,LINE_TABLE
ld b,0
nxt_line
push bc
ld de,LEVEL
call ADDR_AFTER255
pop bc
ld (IX+line_ptr),e
ld (IX+line_ptr+1),d
push bc
call NEXT_LINE_PTR
pop bc
call SCR_ADDR
ld (IX+print_addr),l
ld (IX+print_addr+1),h
ld (IX+attr_addr),e
ld (IX+attr_addr+1),d
ld de,lt_size
add ix,de
inc b
ld a,24
cp b
jr nz,nxt_line
ret
;---------------------------------
;Печать спрайта из ленты
PRINT_NEXT_SPRITE
ld l,(IX+ribbon_ptr)
ld h,(IX+ribbon_ptr+1)
nxt_rib
ld a,(hl) ;номер спрайта
cp 255 ;конец ленты?
jr nz,no_endrib
;конец
dec (IX+ribbon_cnt)
call z,NEXT_LINE_PTR ;счётчик обнулился, следующая лента
ld l,(IX+ribbon_start)
ld h,(IX+ribbon_start+1)
ld (IX+ribbon_ptr),l
ld (IX+ribbon_ptr+1),h
jr nxt_rib
no_endrib
;в A номер спрайта
ld l,a
ld h,0
push hl
ld de,spr_attribs
add hl,de
ld a,(hl)
ld l,(IX+attr_addr)
ld h,(IX+attr_addr+1)
ld (hl),a
pop hl
add hl,hl
add hl,hl
add hl,hl ;x8
ld de,sprites
add hl,de ;адрес спрайта
ld e,(IX+print_addr)
ld d,(IX+print_addr+1)
ld b,8
nxt_b ld a,(hl)
ld (de),a
inc hl
inc d
djnz nxt_b
ld l,(IX+ribbon_ptr)
ld h,(IX+ribbon_ptr+1)
inc hl
ld (IX+ribbon_ptr),l
ld (IX+ribbon_ptr+1),h
ret
;---------------------------------
;Заполнение данных ленты из указателя линии уровня и его сдвиг
NEXT_LINE_PTR
ld l,(IX+line_ptr)
ld h,(IX+line_ptr+1)
ld b,(hl)
ld de,RIBBONS
call ADDR_AFTER255
ld (IX+ribbon_ptr),e
ld (IX+ribbon_ptr+1),d
ld (IX+ribbon_start),e
ld (IX+ribbon_start+1),d
inc hl
ld a,(hl)
ld (IX+ribbon_cnt),a
inc hl
ld (IX+line_ptr),l
ld (IX+line_ptr+1),h
ret
;---------------------------------
;адрес после разделителя 255 по номеру b
ADDR_AFTER255
xor a
cp b
ret z
nxt_de ld a,(de)
inc de
cp 255
jr nz,nxt_de
djnz nxt_de
ret
;---------------------------------
;сдвиг экрана
SCROLL
ld de,16384
ld hl,16385
ld bc,6911
ldir
ret
;---------------------------------
SCR_ADDR
;адрес 31ого знакоместа линии
ld a,b
and %00011000
or %01000000 ;+16384
ld h,a
ld a,b
rrca
rrca
rrca
ld d,a ;для расчёта атрибутов
or %00011111 ;+31
ld l,a
;адрес атрибутов этого знакоместа
ld e,l ;уже частично посчитано
ld a,d
and %00000011
or %01011000 ;+22528
ld d,a
ret
LINE_TABLE DEFS 288,0
line_ptr equ 0 ;2 - указывает на текущую свёртку в линии уровня
ribbon_ptr equ 2 ;2 - адрес текущего номера спрайта в ленте
ribbon_start equ 4 ;2 - начальный адрес текущей ленты
print_addr equ 6 ;2 - адрес знакоместа
attr_addr equ 8 ;2 - адрес атрибутов
ribbon_cnt equ 10 ;1 - счётчик количества повторяющихся лент
lt_size equ 11 ;количество байт в данных линии
LEVEL
DEFB 0,20,255
DEFB 3,20,255
DEFB 3,12,0,8,255
DEFB 3,20,255
DEFB 0,12,3,8,255
DEFB 3,20,255
DEFB 3,20,255
DEFB 3,4,1,1,3,15,255
DEFB 3,4,2,1,3,15,255
DEFB 3,20,255
DEFB 3,20,255
DEFB 3,20,255
DEFB 3,20,255
DEFB 3,20,255
DEFB 3,12,1,1,3,1,0,6,255
DEFB 3,12,2,1,3,2,0,5,255
DEFB 3,20,255
DEFB 3,20,255
DEFB 3,6,1,1,3,1,1,1,3,11,255
DEFB 3,6,2,1,3,1,2,1,3,11,255
DEFB 3,20,255
DEFB 3,20,255
DEFB 3,20,255
DEFB 0,20,255
RIBBONS
DEFB 1,1,1,1,255
DEFB 2,3,4,5,255
DEFB 6,7,8,9,255
DEFB 0,0,0,0,255
SPRITES
DEFB 0,0,0,0,0,0,0,0
DEFB 255,2,2,2,255,32,32,32
DEFB 0,0,0,0,28,62,127,111
DEFB 0,0,0,56,125,251,127,238
DEFB 0,0,0,248,253,254,127,255
DEFB 0,0,0,240,248,252,220,184
DEFB 93,42,20,0,0,0,0,0
DEFB 85,170,81,0,0,0,0,0
DEFB 125,186,84,168,0,0,0,0
DEFB 84,168,80,0,0,0,0,0
SPR_ATTRIBS
DEFB 8,16,15,15,15,15,15,15,15,15
print_bc
CALL 11563
CALL 11747
jr $
https://youtu.be/0S72COl0WJs
не шибко шустрое чёт.
- - - Добавлено - - -
А что за проблема с управлением?
уже порешал.
Пока особых трудностей не возникает. Но всё боязно за память, ведь я ещё не приступал к левел-дизайну.
Ну да, не быстро, но это я первый набросок-пробу сделал, чтоб вообще задумку с форматом хранения уровня проверить. Вчера хотел раскидать прорисовку уровня по 5-7 страницам, для плавности и убирания артефактов скроллинга, но спать хотелось, оставил на сегодня. Придётся бросать из одной в другую страницы попеременно со сдвигом. Позже хотел попробовать переделать скролл на переброску через стек. Так же стоит изменить формат хранения уровня, для одинаковых спрайтов с разными атрибутами, и далее для добавления служебных флагов foreground-background и других. Но это постепенно по мере надобности. Ещё стандартные прерывания не отключены. Вообще не знаю получится ли что-нибудь применимое, но пока интересно. Я ещё раньше хотел попробовать, да решил подпиливать свой компиль-редактор, в котором мне проще писать.
ALKO, нескромный вопрос. Ты спрайтами не делишься для тестов? Запарно выковыривать со скринов)))
Ты спрайтами не делишься для тестов?
Я планировал сунуться в конкурс, так что, пока не собираюсь публиковать спрайты.
А для теста можно и с любой другой игры стянуть.
https://www.spriters-resource.com
Andrew771
20.08.2020, 22:31
Dwa83, редактор уровней и спрайтов у тебя удобный!
Но может, раз ALKO уже почти на финишной прямой, я тебя приглашаю в свой проект, стратегию реального времени Z, если интересно. Делаю по мотивам PC игры (https://www.youtube.com/watch?v=ZHrzlXrno4I), упрощенную, так что на конкурс нельзя :) . Графику почти всю уже давно нарисовал Bugsy, аж в 2005 году. А код я очень долго ковыряю, почти нет времени сейчас (спасибо карантину, хоть дали пару месяцев, еще хочу :) ). Файлы текущие прикладываю, снапшот и исходник. Написан в основном на ZX Like Pascal. Но сейчас очень много жрет места, нужно некоторые процедуры перевести в ассемблер из Паскаля, чтобы освободить для дальнейшего писания. Потом написать стрельбу и управление юнитами игрока с клавиатуры (ИИ будет такой же, как для компа), это вместе будем.
Сможешь переписать в ассемблер процедуры вывода put_objects и put_properties? ИИ лучше оставить на Паскале, там сложно.
- - - Добавлено - - -
В демо управление с клавиатуры:
QAOP - перемещение
Номера территорий можно набирать: от 01 до 12 (по две цифры) - перемещение к нужной территории.
- - - Добавлено - - -
Файл PRG обычный текстовый, можно открывать Блокнотом.
Эхх... Red Alert 2 бы на спек. Вот где мощъ.
Z тоже хороша. Но никогда особо плотно не цепляла.
редактор уровней и спрайтов у тебя удобный!
Он пока сырой и местами багнутый, надо доделывать.
стратегию реального времени Z
А я уже видел эту демку, ничего так выглядит) Только почему-то SNA запустился лишь после того, как в дебаге напрямик в PC адрес старта сунуть.
Сможешь переписать в ассемблер процедуры вывода put_objects и put_properties?
Я посмотрю по коду, смогу ли что-то сделать.
Щас пока что со своей задумкой скролла уровня ковырялся, пока вот что придумал. Свапаю 5-7 страницы.
пока 5 видимая - перекидываю в 7ую со сдвигом и дорисовываю последнюю линию, делаю видимой 7ую, корректирую адреса перекидки, и по новой. Не стало такого эффекта, когда байты уже сдвинуты, а атрибуты ещё не успели, и это видно. Скрол попробовал переделать через стек, в итоге вместо вот этого:
;сдвиг экрана
SCROLL
ld hl,(S_SRC)
ld de,(S_DST)
ld bc,6911
ldir
ret
Получилась вот такая монстряка, ууххх))):
;сдвиг экрана2
SCROLL2
S_SRC ld hl,#4001 ;10
ld (S_SRC1+1),hl ;16
S_DST ld hl,#C000 ;10
ld de,16 ;10
add hl,de ;11
ld (S_DST1+1),hl ;16
ld (SAVE_SP+1),sp ;20
ld b,216 ;7 = 100
S_SRC1 LD SP,0 ;10
POP HL ;10
POP DE ;10
POP AF ;10
POP IX ;14
POP IY ;14
EXX ;4
POP HL ;10
POP DE ;10
POP BC ;10
LD (S_SRC2+1),SP ;20 = 122
S_DST1 LD SP,0 ;10
PUSH BC ;11
PUSH DE ;11
PUSH HL ;11
EXX ;4
PUSH IY ;15
PUSH IX ;15
PUSH AF ;11
PUSH DE ;11
PUSH HL ;11
ld hl,32 ;10
add hl,sp ;11
LD (S_DST2+1),hl ;16 = 147
S_SRC2 LD SP,0 ;10
POP HL ;10
POP DE ;10
POP AF ;10
POP IX ;14
POP IY ;14
EXX ;4
POP HL ;10
POP DE ;10
POP BC ;10
LD (S_SRC1+1),SP ;20 = 122
S_DST2 LD SP,0 ;10
PUSH BC ;11
PUSH DE ;11
PUSH HL ;11
EXX ;4
PUSH IY ;15
PUSH IX ;15
PUSH AF ;11
PUSH DE ;11
PUSH HL ;11
ld hl,32 ;10
add hl,sp ;11
LD (S_DST1+1),hl ;16 = 147
djnz S_SRC1 ;13 551 / 32 = 17.2
SAVE_SP ld sp,0 ;10
;~119126 тактов (ldir ~ 145152 тактов - дольше на 21,8%)
ret
Зато немного быстрее работает)
Да, блин, всё-таки пока без гибрида Паскаль+Асм пока не обойтись, на Z это понимаю сейчас...
Кстати, я тему не смотрел с паскалем, у тебя там подключение библиотек присутствует? Можно ведь напилить типа std_lib, всяких функций на асме для использования в местах типа "бутылочного горлышка", или так оно и есть?
Использование асм-костылей присутствует.
В паскале на высоком уровне удобно условия городить, хотя асм по возможностям на проверку условий всë же продвинутее : как например проверка флагов, на асме можно отслеживать флаг знака, а в паскале всë беззнаковое. Проверка чëтности опять же, на асме достаточно следить за одним флагом, а тут надо производить лишние арифметические операции с остатком от деления. Процедурки вывода спрайтов взяты из "как написать игру", то есть познакоместное позиционирование без маски, поэтому для попиксельного вывода нужно пихать процедурки spr_lib. Хотя маску можно организовать и штатными процедурами, так как есть AND OR XOR, но при познакоместной позиции толку от этого мало.
- - - Добавлено - - -
Подробно не смотрел как там операции деления умножения транслируются. Но вот на асме если быстро поделить или умножить на 2 - достаточно выполнить побитовый сдвиг. Тут побитовых операций нет и в помине. Так что опять же, если нужно что-то выполнять с битами - асм-костыль. Все асм костыли вызываются из тела паскалевской программы (которая преобразуется в асм код с соответствующими call (addr))
- - - Добавлено - - -
Ну а ещë паскаль удобен организацией циклов. Не надо каждый раз push-pop-ить счëтчик вокруг того или иного цикла. Да и работа с массивами упрощается на порядок.
И всё-таки ты переделаешь игру полностью на асм?:) А вообще, ты искал программиста, но сам помнишь некоторые такие вещи, которыми почти никогда не пользуются)
Типа узкоспециализированные флаги чётности, которые не особо нужныю
Погоди-погоди.. Ттак паскаль Andrew771 - тхис из интерпритатор, а не транслятор??? Который в памяти сидит, и строки пассаля тоже? Если нет, то всё одно - условия превращаются в проверку флагов, только более изощрённо завёрнутую друг в друга. Потому, даже на современных компах пытаются "горлышки" писать на асме. Типа языки высокого уровня создают код, хуже чем асм. В некоторых новых компиляторах нифига(я про с++). Язык типа алковского паскаля, он наверное расчитан НЕ на супердинамичные игры(но просто чтобы быстро и легко их разрабатывать).
Ноуп, паскаль именно транслятор. Он конвертирует паскалевский код в набор асм процедурок, которые уже копи-пастишь в асм-компиль.
- - - Добавлено - - -
И всё-таки ты переделаешь игру полностью на асм?
На данный момент бОльшая часть кода у меня на паскале сделана. И на удивление, всë довольно бодро шевелится. Для экшона скорости хватает. Хотя поначалу я вообще скептически был настроен, и думал ограничиться лишь квестом.
- - - Добавлено - - -
Конечно на голом асме было бы, наверное, раза в два быстрее. Если ещë со всякими оптимизациями через стек то ищë быстрее, но я до такого не дорос. так что получается то что получается. Всяко лучше чем AGD, уже радует.
- - - Добавлено - - -
Жалко конечно, что 128к формат такой геморный, и из-за него откусываются аж 16кб линейной памяти.
С виртуальным экраном я мог позволить компу ожидать обновление кадра по HALTу.
А так как вынужден LDIRить, то от верт. синхронизации пришлось отказаться (ровно как и от музычки)
Andrew771
21.08.2020, 22:07
А я уже видел эту демку, ничего так выглядит)
нет, ты ее не мог видеть, это то, что я сделал за последнее время. Ты видел демку 2018 года :)
С тех пор полностью переписал ИИ, сделал независимым от карты уровня, т.к. планирую не один уровень. Этот сейчас только первый. Есть уже задумка по 4 уровням. Главное, сложно первый написать, остальные быстро уже.
Добавил цвета для юнитов, заводов и флагов. Противник уже полностью захватывает все территории и штаб игрока. Добавил информационную панель справа.
- - - Добавлено - - -
Кстати, я тему не смотрел с паскалем, у тебя там подключение библиотек присутствует? Можно ведь напилить типа std_lib, всяких функций на асме для использования в местах типа "бутылочного горлышка", или так оно и есть?
ALKO уже ответил, есть спец.оператор asm для вызова процедур на ассемблере из Паскаля.
- - - Добавлено - - -
Подробно не смотрел как там операции деления умножения транслируются. Но вот на асме если быстро поделить или умножить на 2 - достаточно выполнить побитовый сдвиг. Тут побитовых операций нет и в помине. Так что опять же, если нужно что-то выполнять с битами - асм-костыль. Все асм костыли вызываются из тела паскалевской программы (которая преобразуется в асм код с соответствующими call (addr))
Оптимизации для умножения и деления на числа степени 2 имеются, а также для часто используемых чисел типа 3,5,10,20,50,100... Вставляется вместо вызова процедуры честного умножения add hl,hl нужное количество раз.
Подробно про мозги компилятора я описал в статье: http://dgmag.in/N15/DowngradeN15b.pdf
Andrew771, глянул демку. Дааа.. скролл тут слабое место.
Раз уж он дискретный, то почему бы не разукрасить графику, живее бы смотрелось чем чёрно-жёлтый монохром.
Шаг 16px брррр :v2_sick:
Ну и самое главное - тормозно. Ладно ЖД магнат пошаговое, там можно стерпеть, но в РТС такие лаги не приветствуются.
- - - Добавлено - - -
ах да, как и в ЖД-магнате - нет диагонального скролла. В РТС это тоже куда важнее. По гипотенузе быстрее можно добраться до нужной точки, нежели по двум катетам.
Жалко конечно, что 128к формат такой геморный, и из-за него откусываются аж 16кб линейной памяти.
Так ведь можно весь код, который не относится к работе с экранами, раскидать по нужным банкам и вызывать. К примеру вот так
;--------этот кусок всегда в основной банке
FUNCTION
LD B,1 ;это номер банки с функцией
LD HL,FUNCTION_PG1 ;адрес тела функции
CALL PAGE_PROC ;вызов функции
RET
;...........
PAGE 1
;--------этот кусок будет уже банке 1
FUNCTION_PG1
;тут основной код функции
ret
;---------------------------
PAGE 2
;эта функция в основной памяти
;временно подключает нужную банку и запускает в ней функцию
PAGE_PROC
LD (PROC_ADDR+1),HL ;запишем адрес в CALL
LD A,(PORT_COPY) ;текущая конфигурация порта
PUSH AF ;сохраним её
LD A,B
CALL BIND_BUF_A ;подключим банку с функцией
PROC_ADDR CALL 0 ;вызовем её
POP AF ;восстановим состояние порта
CALL BIND_BUF_A
RET
;---------------------------
PAGE 2
;эта функция в основной памяти
;Бинд буффера A
BIND_BUF_A
DI
LD B,A
LD A,(PORT_COPY)
AND 248
OR B
LD (PORT_COPY),A
LD BC,#7FFD
OUT (C),A
EI
RET
или я чего-то не понял насчёт откусывания памяти?
пс: я вчера бухой писал, так что если чего не обращайте внимания
чуть чуть по тактам побыстрее(можно придумать что-то ещё быстрее) можно так, вместо call использовать jp
;--------в основной банке
FUNCTION
LD B,1 ;это номер банки с функцией
LD HL,FUNCTION_INPG;указатель на адрес тела функции
CALL PAGE_PROC ;вызов функции
RET
FUNCTION_INPG DEFW FUNCTION_PG1
;...........
PAGE 1
FUNCTION_PG1
;тут основной код функции
JP RET_ADDR
;---------------------------
PAGE 2
PAGE_PROC
LD A,(PORT_COPY) ;текущая конфигурация порта
PUSH AF ;сохраним её
LD A,B
CALL BIND_BUF_A ;подключим банку с функцией
JP (HL) ;вызовем её
RET_ADDR POP AF ;восстановим состояние порта
CALL BIND_BUF_A
RET
Эт надо сгенеренный паскалем код перелопатить от и до, и раскидать ф-ции по банкам.
Это муторное занятие даже для профи. А мой скилл чуть ниже самого нубского.
- - - Добавлено - - -
Эндрю 48к прогер, и его СДК ориентирована на 48к.
Для 128к нужны очередные костыли.
Есть идея засунуть масштабную метроидванию в ZX 128k.
Или планы поменялись за это время? Или таки костылями?
Или планы поменялись за это время? Или таки костылями?
То была мысля что будем работать в команде. Я чисто за визуальную часть отвечаю и за звуковое сопровождение. А прогер за всё остальное.
Но так как я щас пилю всё сам, то программерская часть сильно упрощена, и поэтому былых амбиций не вывезу.
ZX_NOVOSIB
22.08.2020, 20:12
Странно что прогер не нашелся даже на конкурс от яндекса, там же бабло. По идее должен найтись прогер, а его нет. Прямо мистика какая-то.
- - - Добавлено - - -
ALKO, может на тебя порчу наслали?
Не беда. Жахну гаму в рамках своих возможностей. Не столь эпичную, как планировалось, но всë же.
NEO SPECTRUMAN
22.08.2020, 23:18
Прямо мистика какая-то.
ну прогер должен еще выявить желание работать с ALKO
ну или его хотя бы должны вдохновлять лысыестриженные женщины
которые тут местами мелькают и которые весьма на любителя...
лысыестриженные женщины
которые тут местами мелькают и которые весьма на любителя...
Непонятно, что именно имелось ввиду...
NEO SPECTRUMAN
23.08.2020, 01:53
Непонятно, что именно имелось ввиду...
те кто не особо следить за этой темой
думают что пилитсо нечто такое
https://sun9-71.userapi.com/c853420/v853420914/ec41c/OA0A0b2RX6I.jpg
или ужо пилитсо что то другое?
или ужо пилитсо что то другое?
Да, ведь программерская часть сильно упрощена, то и платформинг тоже далеко не такой, как на картинке.
https://vk.com/wall-145919754_780
ZX_NOVOSIB
23.08.2020, 07:40
https://i.imgur.com/BN6fLC5.gif
И на такую игру нет кодера? Да вы чо, белены объелись?
- - - Добавлено - - -
Был бы кодер, были бы и спрайты с маской, красивше бы было...
NEO SPECTRUMAN
23.08.2020, 15:14
на такую игру
меня апсолютно не вставляет...
конечно на фоне gif-ок из ранних постов
это выглядит лучше
но спрайты ГГ-ни и анимация просто ахтунх...
Dart Alver
23.08.2020, 15:59
но спрайты ГГ-ни и анимация просто ахтунх...
Да отличные там спрайты и анимация, просто на вкус и цвет все фломастеры разные ))
Эт надо сгенеренный паскалем код перелопатить от и до, и раскидать ф-ции по банкам.
Ну можно ещё использовать тупо как диск для подгрузки/обмена данных для разных там уровней или локаций.
тупо как диск для подгрузки/обмена данных
тож думал об этом.
Но пока не рискую возиться с этим. Там жеж вирт. экран расположен в верхних адресах ещё. И надо чтоб он как-то ужился с данными.
Dart Alver
23.08.2020, 18:59
Но пока не рискую возиться с этим. Там жеж вирт. экран расположен в верхних адресах ещё. И надо чтоб он как-то ужился с данными.
Не понял ты о втором экране или о основном, или о буфере каком ?
В любом случае:
0-я страница скорее всего будет на постоянной основе в карте памяти процессора,
5-я и 2-я страницы выпадают из списка использования, 5-я всегда проецируется в #4000-#7FFF а 2-я в #8000-#BFFF
7-я страница хранит второй экран, если не используется то пофиг, иначе не использовать для данных экранную область в #C000, а то что выше #DB00 можно юзать как угодно.
Ну и хотя бы одну страничку желательно на музычку. ))
- - - Добавлено - - -
А... туплю... дошло - вирт. экран от паскаля по #E000 ))
Ну так он будет на постоянке в 0-й например странице. А на момент подгрузки страница меняется, закидываются данные (ты же не в вирт.экран их грузить будешь),
снова выставляется 0-я с вирт. экраном и всё )))
Не понял ты о втором экране или о основном, или о буфере каком ?
Он на паскале пишет, у него нет возможности юзать страницы без костылей.
Прилепил вывод спрайтов в пробном движке, надо бы коллизии с окружением попробовать, Есть странная идея знакоместо=пиксель, миниэкран такой в 90 байт.
но спрайты ГГ-ни и анимация просто ахтунх...
Тоже соглашусь с тем, что норм спрайты и анимация.
- - - Добавлено - - -
страница меняется,
Так там, я так понял, нет функционала смены страниц. Только если асм вставками.
Dart Alver
23.08.2020, 19:31
Он на паскале пишет, у него нет возможности юзать страницы без костылей.
Да не врубился сразу что у паскаля есть буфер по #E000. Но собственно о костылях то и речь.
Так там, я так понял, нет функционала смены страниц. Только если асм вставками.
А куда ж без них родимых ? )))
Тут собственно вижу пока 3 наиболее важных момента с организацией памяти.
1 - процедуры смены страниц и подгрузок/обменов должны быть расположены ниже #C000. Если паскаль занимает место выше, то может выставлять их перед началом паскалевской проги. Насколько понял у этого паскаля есть выбор адреса компиляции.
2 - момент посложнее - вектор прерываний для музыки и прочего если будет, его надо впихнуть в области #8000-#BE01. Опять же всё зависит от того откуда растёт паскаль ))
3 - область куда производится подгрузка из страниц. Если она ниже #C000, то можно обойтись даже простым LDIRом после смены страницы, если выше или задевает, то нужно помутить с буфером и перещёлкиваниями страниц.
Так, насколько я понял, он ничего не занимает. Он на ПК) И выдаёт асм-код, который компилишь в кросс-асме)
Представляю свой готовый кросс-компилятор
Алко, мне кажется, не достаёт изначального функционала указания страницы куска кода, чтоб без костылей. Там всё просто. Есть основной "поток". Далее любой код с указанием страницы компилится относительно C000. Даже отдельные "org" для каждой страницы можно сделать, только нафиг.
В итоге асм-код будет не один, а для каждой страницы, причём адреса некоторых функций даже могут совпадать, но реализовать предварительную переключалку страницы с нужной, чтоб не ручками костылить.
А, я сразу не понял, ты об этом и говорил, но написаный выше c000 код только один, и абсолютные адреса уже расставлены, и никак не привязать написанный далее код к этой же странице.
Dart Alver
23.08.2020, 20:42
Так, насколько я понял, он ничего не занимает. Он на ПК) И выдаёт асм-код, который компилишь в кросс-асме)
Занимает место код созданный транслятором. И после каждого транслирования в асм править ручками заколебёшься. Проще батник оформить чтоб последовательно собирал. Хотя на конечном этапе наверно музыку ручками придётся впихивать. Главное место оставить ))
Алко, мне кажется, не достаёт изначального функционала указания страницы куска кода, чтоб без костылей. Там всё просто. Есть основной "поток". Далее любой код с указанием страницы компилится относительно C000. Даже отдельные "org" для каждой страницы можно сделать, только нафиг.
Ну это если Andrew771 сделает. А если нет, то костыли или забить.
А, я сразу не понял, ты об этом и говорил, но написаный выше c000 код только один, и абсолютные адреса уже расставлены, и никак не привязать написанный далее код к этой же странице.
Код нет, но данные (карты уровней, спрайты, скрины ...) можно попытаться подгружать в рабочую память.
Не понял ты о втором экране или о основном, или о буфере каком ?
А у меня виртуальный буфер расположен там, где и второй экран 128к машыны (а именно 57344). То есть, если переключать банки, то надо в каждый банк рисовать очередной кадр.
Его конечно можно сместить, но надо поменять ряд переменных, + каждый раз менять константы после компиляции паскаля.
Кароче, ну его, этот 128к. Мне бы с 48к совладать для начала.
- - - Добавлено - - -
Dwa83, демка марево - :v2_dizzy_vodka2: супир!
Только марево уже есть, и не один.
А вот Wonder Boy (Islander) - монохромное доисторическое наспех сделанное убожество. Его бы ремастернуть. Марево слишком уж попсовая дичь. + от нинтенды можно по шапке получить (как произошло с портом на C64).
NEO SPECTRUMAN
23.08.2020, 21:16
Мне бы с 48к совладать для начала.
дык со 128-м проще совладеть для начала
тк больше помещаитсо
дык со 128-м проще совладеть для начала
было БЫ, если БЫ память была БЫ линейно адресуемой, а не страничной с одним активным окном.
NEO SPECTRUMAN
23.08.2020, 21:43
Тип файла: zip тест_mario.zip (6.2 Кб, Просмотров: 10)
какой ужасть
на фоне
https://jpegshare.net/images/0d/7d/0d7ddf7491f16e0155719c099bf3128c.png
слова
Тоже соглашусь с тем, что норм спрайты и анимация.
множатся на 0
ате не кажется что так менее вырвиглазно?
https://jpegshare.net/images/41/06/410632b9b4bcf5679065f38ef996d6fb.png
или так
https://jpegshare.net/images/17/cd/17cd2d8e216cac1c464f2a01e027669d.png
а можно попытаться закрасить штаны
https://jpegshare.net/images/e0/12/e0129465c05440bef0c55a7d6e45ff05.png
или в таком направлении
https://jpegshare.net/images/06/94/06943c21414424d3c1cb8cb1584b08fe.png
ате не кажется что так менее вырвиглазно?
Графику можно профиксить, просто сам факт того, что уже на шаг ближе к старшему брату - MSX.
https://youtu.be/emcuGLf_Xy8
И да, BRIGHT 1 -всегда БОЛЕЕ вырвиглазно. Ибо на донди и других более-менее адекватных системах RGB значения практически никогда не принимают 100% интенсивности.
NEO SPECTRUMAN
23.08.2020, 21:58
И да, BRIGHT 1 -всегда БОЛЕЕ вырвиглазно. Ибо на донди и других более-менее адекватных системах RGB значения практически никогда не принимают 100% интенсивности.
ну это на ваших кривых клонах без людского видеовыхода
воткнуть фирменный спектрум по композиту
и цвета уже не такие насыщенные и кодерские...
воткнуть фирменный спектрум по композиту
Много ли на территории пост-совка владельцев фирменных спеков? Или в стотысячный раз прогибаться под Запод ?
NEO SPECTRUMAN
23.08.2020, 22:06
не на тюнере все равно кодерски кисловато
https://jpegshare.net/images/92/fd/92fda174bb426c6cd5cf19084fa18f85.png
на теплом и ламповом телеке цевта по мягче
в принципе при желании насыщеносте можно и прикрутить...
- - - Добавлено - - -
Много ли на территории пост-совка владельцев фирменных спеков?
а много кто пользуется ими а не эмулятором?
а много кто пользуется ими а не эмулятором?
ТЕМ БОЛЕЕ!
В эбуляторе безо всяких наводок ещё кислотнее! Так что там BRIGHT0 ещё важнее.
NEO SPECTRUMAN
23.08.2020, 22:13
И да, BRIGHT 1 -всегда БОЛЕЕ вырвиглазно.
ну до
вот специально для фанатиков брайт 0
https://jpegshare.net/images/00/44/0044ce2bbc8773ba82675aea9c955574.png
прям напомнило
http://img1.reactor.cc/pics/post/%D1%8D%D0%BC%D0%BE-%D0%BB%D0%B0%D0%BC%D0%BF%D0%BE%D1%87%D0%BA%D0%B8-%D1%87%D0%B5%D1%80%D0%BD%D1%8B%D0%B9-%D1%81%D0%B2%D0%B5%D1%82-%D0%BF%D0%B5%D1%81%D0%BE%D1%87%D0%BD%D0%B8%D1%86%D 0%B0-469711.jpeg
вот специально для фанатиков брайт 0
Уже более-менее, только зелёный соседствует с галубым, из-за чего теряется контрастность кустиков. Так что первоначальный варик (с синим фоном) - золотая середина в случае с марево. Да и в версии MSX был выбран синий цвет (хоть он там и выцвевший, а не кислотный).
Но это уже скатились во флейм окончательно...
NEO SPECTRUMAN
23.08.2020, 22:24
(с синим фоном)
ну то есть для тебе синий брайт 0 фон не вырвиглазен? :v2_dizzy_facepalm:
а кустик прям сливается?
- - - Добавлено - - -
только зелёный соседствует с галубым,
видимо надо еще прозрачный для атрибутов спрайт
поверх белого и красного знакоместа
как это некоторые... ...зачем то делают
ну то есть для тебе синий брайт 0 фон не вырвиглазен? :v2_dizzy_facepalm:
а кустик прям сливается?
ОТНОСИТЕЛЬНО не вырвиглазен. А так - любая графика на спеке вырвиглазна, канешн, по нынешним-то меркам.
Dart Alver
23.08.2020, 22:46
А у меня виртуальный буфер расположен там, где и второй экран 128к машыны (а именно 57344).
Второй экран расположен не там, а по адресу 49152 в странице номер 7.
То есть, если переключать банки, то надо в каждый банк рисовать очередной кадр.
Не понял логики. Зачем, если переключил банки перекинул уровень, переключил обратно. Пока перекидывается уровень - игра не работает, виртуальный буфер не обслуживается.
Впрочем ладно, ну его - значит ну его ))
- - - Добавлено - - -
А так - любая графика на спеке вырвиглазна, канешн, по нынешним-то меркам
Да в былые времена любая вырвиглазность регулировалась ручками яркости/контрастности телевизоров. А теперь чтоб на мониторе эту фигню настроить (да за ради одного эмуля) да ну его ... ))
Второй экран расположен не там, а по адресу 49152 в странице номер 7. и АЖ до самых 65536, хоть и видно из них на экране лишь 7кб. То есть задевает вирт. экран.
Конечно в случае со вторым экраном и вирт. экран не нужен, как и куча LDIRов. Но тогда основная программа не должна переползать за границу 49152. а на данный момент точка кипения для меня те заветные 57344.
- - - Добавлено - - -
Да в былые времена любая вырвиглазность регулировалась ручками яркости/контрастности телевизоров.
Я на реале с RGB конвертером насыщенность убавил до 15ти процентов - и норм. ПОЧТИ MSX.
Dart Alver
23.08.2020, 23:24
и АЖ до самых 65536, хоть и видно из них на экране лишь 7кб. То есть задевает вирт. экран.
Конечно в случае со вторым экраном и вирт. экран не нужен, как и куча LDIRов. Но тогда основная программа не должна переползать за границу 49152. а на данный момент точка кипения для меня те заветные 57344.
Мы видимо на разных языках общаемся, говорим о разных вещах и друг-друга не понимаем ))
Что касается переброски уровня. Он забит массивом в паскале.
Если закидывать в банки, надо уже скомпиленный ASM исходник деребанить. Сложновато.
Щас у меня локация состоит из 2д массива - 256 байт в ширину, от 1 до 256 слоëв в глубину (типа как в игре Platoon, ну или в Буратине, если угодно). + на каждый слой по 256 байт скриптов в ширину, в дальнейшем думаю объединить, чтоб в одном байте было как описание скрипта, так и описание объекта локации, если получится.
Итого получается, что если локация будет 16 слоëв в глубину, например, то (256+256)*16= 8кб. Многовато выходит. Если порешаю дела с массивом скриптов (в них же, кстати, и расположение врагов задаëтся), то же самое уже будет весить 4кб.
- - - Добавлено - - -
А вот сколько кб весит графика на данный момент, ещë не считал.
NEO SPECTRUMAN
24.08.2020, 01:26
256 байт в ширину
ну для асма
кратность 256-ти очень хорошо ложится на память
Ложится-то ложится, я ещë не смотрел каким образом преобразованны переменные массивов из паскаля в асм.
Их надо вручную вычленять, и помещать в банки.
ате не кажется что так менее вырвиглазно?
Кажется, дак на пробу делал. Проблема-то в чём, делов на 5 минут)
https://youtu.be/ckn2p3EBBfs
- - - Добавлено - - -
А вот Wonder Boy (Islander) - монохромное доисторическое наспех сделанное убожество. Его бы ремастернуть. Марево слишком уж попсовая дичь. + от нинтенды можно по шапке получить (как произошло с портом на C64).
Ну для спека технически очень даже ничего. Тоже скилуха недюженая нужна. Вот разукрасить бы - это да.
А насчёт от нинтенды получить, так я ведь не собираюсь продавать под их брендом. И гомодор в пиндосии намного более популярен был в отличае от спека(имхо). Да и в конечном итоге это возможно будет и не марио, если вообще будет))
так я ведь не собираюсь продавать под их брендом. дыг, и версия Гомнодора 64 тоже распространялась бесплатно, в итоге файло-хостинги прикрыли.
дыг, и версия Гомнодора 64 тоже распространялась бесплатно, в итоге файло-хостинги прикрыли.
что за чушь ?
https://www.lemon64.com/forum/viewtopic.php?p=898195#898195
скорее срок хранения файлов истёк, но вторая ссылка вполне живая
Значит это жëлтая прэсса?
https://www.extremetech.com/gaming/290225-nintendo-forces-removal-of-commodore-64-super-mario-port-7-years-in-the-making
дыг, и версия Гомнодора 64 тоже распространялась бесплатно
Но это почти точная копия
- - - Добавлено - - -
Блджад ковида на форуме поймал
шутко
Значит это жëлтая прэсса?
конечно. только слухи. где в этой статье текст от nintendo ???
где в этой статье текст от nintendo ???
Есть куча других статей ссылающихся на эту переписку.
https://www.commodorecomputerclub.com/super-mario-bros-64-dmca-takedown-notice/
понятно. похоже это только американцы пересрали, на других сайтах эта игра вполне доступна
Эндрю, такой вопрос, не в тему пишу, потому как тут начали говорить.
Первое, малозначимое нашёл в функции
MAP4X4_PUT ld a,(_X_MAP_SCR)
ld (map_x),a
ld a,(_Y_MAP_SCR)
ld (map_y),a
;ld a,(map_y) ;не надо, уже в А
dec a
;---------поправочка
;ld l,a ;4
;ld h,0 ;7
;add hl,hl ;11x6
;add hl,hl
;add hl,hl
;add hl,hl
;add hl,hl
;add hl,hl ;=66+11=77
;проще сдвинуть обратно
ld h,a ;4
ld l,0 ;7
and a ;4 ;можно выкинуть если флаг C точно пуст
rr h ;8
rr l ;8
rr h ;8
rr l ;8 = 47 (43 без обнуления С)
;------------------
ld a,(map_x)
dec a
ld e,a
ld d,0
add hl,de
ld de,(map_addr_array)
add hl,de
ld (map_addr_curr),hl
ld hl,(map_xscr)
ld (map_xscr_curr),hl
ld a,(map_height_scr)
ld b,a
Что делают функции map4x4_put_01 ... 10? Проще спросить чем клубки чужого кода катать
- - - Добавлено - - -
Ах да, куда столько дюпов? Ну нужно же немного баланс между быстродействием и памятью? или это оправдано?
- - - Добавлено - - -
А вообще проще скажи мне какими данными оперировать, чтоб я листинг не скурил до запаха ногтей.(это про процедуру put_objects)
- - - Добавлено - - -
Игра мне не извнстная, вот если бы ты сеговскую Herzog Zwei(https://ru.wikipedia.org/wiki/Herzog_Zwei) сделал... ммм.. У меня она была на карике бес корпуса(но сего никогда не было), я её отдал другу, у которого сего была, и потом столько времени было продротено в неё в режиме друг против друга(побольше наверное чем в на PS1 в KKND). В ней сложно было разобраться без мануалов, но когда разобрались, столько часов жизни куда-то пропало)
Всегда удивляло, как в Херцог Цвайне реализован сплит-скрин.
Это в гоночках экран разделëн горизонтально, там понятно, что один и тот же слой быстро скроллится по прерыванию строчной развëртки. А вот в Герцоге, видать, через так называемый Window Plane, на практике его управление я так и не осилил.
Andrew771
27.08.2020, 23:44
Что делают функции map4x4_put_01 ... 10? Проще спросить чем клубки чужого кода катать
эта процедура выводит карту из спрайтов 4х4 знакоместа. Ее-то можно и не трогать, много не сэкономишь, я ее на асме вручную писал. Вот Паскаль много места отжирает.
Ах да, куда столько дюпов? Ну нужно же немного баланс между быстродействием и памятью? или это оправдано?
ну можно подсократить, если визуально не ухудшит быстродействие.
- - - Добавлено - - -
А вообще проще скажи мне какими данными оперировать, чтоб я листинг не скурил до запаха ногтей.(это про процедуру put_objects)
на выходных посмотрю, щас рабочий вечер после рабочего дня, поздно, и я бухаю))
- - - Добавлено - - -
Игра мне не извнстная, вот если бы ты сеговскую Herzog Zwei(https://ru.wikipedia.org/wiki/Herzog_Zwei) сделал... ммм.. У меня она была на карике бес корпуса(но сего никогда не было), я её отдал другу, у которого сего была, и потом столько времени было продротено в неё в режиме друг против друга(побольше наверное чем в на PS1 в KKND). В ней сложно было разобраться без мануалов, но когда разобрались, столько часов жизни куда-то пропало)
Z на PC мне нравится с 90х. Даже на Спекки пытался вначале писать без графики в конце 90х. А когда графику готовую от Bugsy для Спектрума увидел в 2011-м, загорелся писать с новой силой.
А вот сколько кб весит графика на данный момент, ещë не считал.
"Щитать-то вы умеете? Вот и пощитайте" (с) В.В. Питун
Пощитал. Пока что под 6 кб графона, но прибавится ещё, так как часть спрайтов пока что не задействовал.
У меня в запасе 10кб осталось. Как раз на отметке ~47кб, ещё чуть-чуть и перевалит за ту область, где у 128к машыны я бы листал банки.
Около 4-ёх кб уйдёт на массивы карты. Сколько сожрёт игровая лохика ещё неизвестно.
Если совсем уж придавит на клапан, наверное надо будет переползать на 128к.
Andrew771, Попытался переписать на асм put_object
Чёт похоже не осилю, тут дофига чего не понятного
put object рисует на экран?(или теневой?)
x_cur, y_cur что за значения? current? cursor? относительно чего?
xput, yput - куда по ним вставляется?
x_map_scr - что там?
SpritePut чем оперируют, какие регистры меняе, принимает на вход
короче дофига чего непонятного, в чём разбираться дольше, чем заново написать)))
ld ix,obj ;думаю проще с индексами будет, но может медленнее, хотя хз
ld b,24
nxt_object
push bc
ld a,[ix+i_obj_id]
cp id_work_neutral ;>= id_work_neutral? это не fort
jr nc,no_fort
;----тут обработка fort
;...
;----
no_fort
cp id_flag_neutral
jr nc,no_work ;>= id_flag_neutral? это не work
;----тут обработка work
;...
;----
no_work
;остаётся только flag(если будут идентификаторы больше id_flag_enemy, нужно добавлять новые проверки)
;----тут обработка flag
ld de,40 ;смещение от FLAG_01 до FLAG_02
ld hl,FLAG_01-40
ld b,cycle_4phase
inc b
add_flag
add hl,de ;прибавляем к FLAG_01 до нужной фазы
djnz add_flag
;в hl FLAG_01 .. FLAG_04
;тут xput, y_put посчитать
;Как вызывать? В какие регистры что, хз
SpritePutClear(hl, ......)
ld de,20
add hl,de
SpritePutClear(hl, ......)
ld hl,7
add ix,jl
pop bc
djnz nxt_object
Имеет ли смысл выполнять disable interrupts перед циклом рендеринга массива спрайтов? Или на скорости оно особо не отразится?
Имеет ли смысл выполнять disable interrupts перед циклом рендеринга массива спрайтов? Или на скорости оно особо не отразится?
А спрайты выводятся с участием стека?
Отразится на музыке и опросе клавиатуры, они же на прерываниях висят.
А вот на счëт стека, надо у эндрю узнать, как там его паскаль юзает.
Музыки нет (хотелось бы влепить, но памяти дефицит).
Клаву опрашиваю за пределами цикла рендеринга. Так что там мог бы EI выполнить.
- - - Добавлено - - -
Ламерский вопрос, но всë же.. А как стек связан с прерываниями? На него же отдельный регистр SP ссылается, как на адрес ОЗУ.
NEO SPECTRUMAN
28.08.2020, 18:33
Ламерский вопрос, но всë же.. А как стек связан с прерываниями? На него же отдельный регистр SP ссылается, как на адрес ОЗУ.
:v2_dizzy_facepalm:
Ну на него ложится адрес возврата из прерывания...
и как правило это на всех процах
бросай уже свои паскали и пиши на асме
- - - Добавлено - - -
кстате пропуск прерывания с пуз плеером
звучит неймоверно ужасно
тк музыка спотыкается и темп плавает...
тоестть запрещая на время прерывания
ты должын быть на 100% уверен что прерывание не будет пропущено когда надо
(тк если 30-60 тактов прерывания ты пропустил
то все только ждать новое в следующем фрейме)
ну и их вполне можно запрещать сразу после прерывания
как минимум 50К тактов можно гуляться в рисование стеком итд
например так можно юзать стек для очистки экранного буфера
и чистить 6К буфер за 34К тактов
бросай уже свои паскали и пиши на асме
И вместо адвентюры/квеста получится змейка, а то и ещë чего примитивнее.
NEO SPECTRUMAN
28.08.2020, 18:45
И вместо адвентюры/квеста получится змейка, а то и ещë чего примитивнее.
по моему с точностью на оборот
пока не увидел на спектруме накаженного на сях
превосходящее уровень змейки
даже на 14МГц-ных пентевах
эти ваши яву продолжают сосать
это на ПыЦе можно писать на бейсиках
на спектруме это не прокатывает
а при этом ты пытаешься запилить динамическую игру со скроленгами уровня донди...
может для какой нибудь пошаговой стратегии это бы конечно и прокатило но не...
Та дело не в скорости выполнения кода машыной, а в скорости написания кода быдлокодером.
NEO SPECTRUMAN
28.08.2020, 18:50
Та дело не в скорости выполнения кода машыной, а в скорости написания кода быдлокодером.
если гнаться за скоростью
то можно вообще делать очередное уг на агд
почему нет?
может для какой нибудь пошаговой стратегии это бы конечно и прокатило но не.
Ну, пока события в моей демке отнюдь не пошаговые. Есть на спеке игры куда пошаговее, при этом заявлены как экшн. Да и написаны были явно не на ЯВУ, в дремучие-то времена
- - - Добавлено - - -
то можно вообще делать очередное уг на агд
Можно. А можно и не на агд. Почему нет?
NEO SPECTRUMAN
28.08.2020, 19:25
Почему нет?
ну например (судя по закинутой gif-ке)
https://jpegshare.net/images/bb/27/bb27261af6456c728753f3c8e1a02997.gif
к сечению с лучом я конечно не придираюсь
тк я не безумный фанатек фреймовасте как некоторые...
но вот постоянное расколбашивание спрайтов
и постоянное отставание атрибутов от пискелей
тут имеет место быть
например так можно юзать стек для очистки экранного буфера
и чистить 6К буфер за 34К тактов
Время очистки во всëм цикле моего движка - меньшее зло. Она осуществляется атрибутной заливкой.
Напряжнее всего даëтся именно вывод спрайтов. И дело не столько в ЯВУ, сколько вычислении знакомест каждого спрайта, которое уже прописано асмом.
- - - Добавлено - - -
ну например (судя по закинутой gif-ке)
https://jpegshare.net/images/bb/27/bb27261af6456c728753f3c8e1a02997.gif
к сечению с лучом я не придираюсь
Именно к рассинохрону с лучом ты и придираешься, мда)
Что касается откушенной ноги на этой фазе, там просто не все данные спрайта скопипастил, я это дело уже профиксил, и нога отображается как надо.
- - - Добавлено - - -
но вот постоянное расколбашивание спрайтов
и постоянное отставание атрибутов от пискелей
тут имеет место быть
Когда я делал движок под виртуальный экран 128к, никакого расколбашывания не было.
Так что все выше упомянутые придирки касаются исключительно рассинхрона луча с LDIR ом.
NEO SPECTRUMAN
28.08.2020, 19:42
Именно к рассинохрону с лучом ты и придираешься, мда)
ВОТ ЭТО РАЗСИНХРОН С ЛУЧОМ
https://jpegshare.net/images/2e/86/2e86e60b581bda7debe710696452aeba.gif
А я придираюсь к тому что заливка атрибутами идет через полтора фрейма после того как отрисовались пиксели
чего допускать нельзя
еще по придираюсь к узорчатой панельке
которая выглядит тупо и уныло
попробуй нарисовать чо нить такое по форме
https://jpegshare.net/images/e3/e4/e3e43af29680ed2f423a827da71023b7.png
и главное с сохранением одного стиля без натулености друг на друга непонятно чего
а так рожа с боку вообще не к месту
напоминает унылые думы (ихняя отмазка про не было звука меня не устраивает)
например цепляние рожы уместно когда есть постоянная быстрая смена персонажей
вот тогда вполне можно было бы оно прицепить
ну и цепляние рожи на случай диалогов делается тоже не совсем так
ну и окошко в стиле закругленные телевизор вообще не к месту.. :v2_dizzy_facepalm:
напоминает унылые думы
По-моему, для тебя вообще нет ничего НЕунылого. Будь дум объективно унылым, то он давно бы канул в лету, а не мусолился переизданиями/перезагрузками, моддерами, хакерами, TASерами и прочими нëрдами, гиками, задротами.
NEO SPECTRUMAN
28.08.2020, 19:52
Что касается откушенной ноги на этой фазе
не
учитывая средства разработки
на подобное я могу закрыть глаза
https://jpegshare.net/images/a5/23/a523b0dc74b468a114ce824b36297f9e.gif
- - - Добавлено - - -
прочими нëрдами, гиками, задротами.
ну до
обычно же пипл хавает :v2_dizzy_facepalm:
некоторые и на принцаперсии дрочат
хотя ***** *****м...
зато с анимацией срисованной с человеков
и с тормозным путем в 3 метра с заносами при попытке сделать шаг на 1 пиксель вперед :v2_dizzy_facepalm:
да и жутко латентным управлением
не
учитываю средства разработки
на подобное я могу закрыть глаза
https://jpegshare.net/images/a5/23/a523b0dc74b468a114ce824b36297f9e.gif
Маску под спрайты можно реализовать и на данном ЯВУ. Там всë для этого есть. Но память сожрëтся вдвое больше (ну, и на скорости скажется, канешн. По несколько раз на одно и то же место фигарить спрайт)
- - - Добавлено - - -
некоторые и на принцаперсии дрочат
хотя ***** *****м...
зато с анимацией срисованной с человеков
и с тормозным путем в 3 метра с заносами при попытке сделать шаг на 1 пиксель вперед :v2_dizzy_facepalm:
да и жутко латентным управлением
А что не *****, если не секрет? Тем более на спектруме, где качество игор уступает ПЦшке.
NEO SPECTRUMAN
28.08.2020, 20:10
еще попробуй растянуть градиент на небе
может будет лучше смотрется
(у меня на примере тоже фигня
нужен более плавный переход в голубой)
https://jpegshare.net/images/75/d7/75d706bb1e6d1f53cc25485a0f8793e4.gif
А что не *****, если не секрет?
однозначно батлтодс (2-й) на донди :v2_lol:
а так нет желания перечислять...
однозначно батлтодс (2-й) на донди
Быдлотоадс и ДД да, хорош, хоть и нет реиграбельности. Но попридираться в твоëм стиле там есть к чему.
В частности к балансу, жабы на фоне гей-зеков кажутся калеками, особенно на третьем уровне. (З.ы. но дондя, это не спек. Если придираться в твоëм стиле к любой, даже самой топовой игре на спек, будь то REX или Илита, то для этого следует создавать отдельную тему).
NEO SPECTRUMAN
28.08.2020, 20:26
жабы на фоне гей-зеков кажутся калеками,
только пушо не умеют цеплятся к стене?
конечно человеки там более ловкие...
и в сравнении с не играбельным дальше 3-го уровня оригиналом
тут все вполне норм
можно придиратсо только к сюжету :)
а так на спектруме мне например доставляет че нить типа starquake
хотя абсолютно не проходимо (хотя я проходил hamte damte)
...но это такие игры на любителя...
только пушо не умеют цеплятся к стене?
Ни толька. Ещë умеют прыгать по пальцам крадущихся.
Ещë на третьем левеле где набор прессов, они без особых усилий могут разбить шарик с неуязвимостью, тогда как жаба медленно замахивается и получает па щям. Ещë вертушкою на канате гей-зеки набивают комбы, и следовательно - больше очков, быстрее зарабатывают на новую жызнь.
На втором левеле все бонусы гей-зек могëт разбить в прыжке. А жабе надо ползать по решëтка по полчаса. Робо-мануса набивать в воздухе проще, чем жабою.
NEO SPECTRUMAN
28.08.2020, 20:35
быстрее зарабатывают на новую жызнь.
по прошествию многих лет тренировок
оно проходится до последниго уровня токо так
шадовбосс мочится вообще на изи (когда оставляешь 2 висячие цепи в конце)
конечно финал бос таки жесткий
из спектрумовских еще вспомнил
http://spectrum4ever.org/files/screens/x1/838/73.png
по прошествию многих лет тренировок
оно проходится до последниго уровня токо так
шадовбосс мочится вообще на изи (когда оставляешь 2 висячие цепи в конце)
конечно финал бос таки жесткий
Ну дык, кек. Я тоже без особых усилий прохожу до файнал босса любым персом. Однако отсутствие баланса это не отменяет.
NEO SPECTRUMAN
28.08.2020, 20:49
по панелькам
сходу найти пример не просто
просмотрел буквы A,S,T
http://spectrum4ever.org/files/screens/x1/47/96.png
http://spectrum4ever.org/files/screens/x1/726/82.png
http://spectrum4ever.org/files/screens/x1/834/73.png
http://spectrum4ever.org/files/screens/x1/698/91.png
http://spectrum4ever.org/files/screens/x1/1980/125.png
http://spectrum4ever.org/files/screens/x1/1159/103.png
http://spectrum4ever.org/files/screens/x1/2208/65.png
http://spectrum4ever.org/files/screens/x1/1700/78.png
http://spectrum4ever.org/files/screens/x1/2878/94.png
http://spectrum4ever.org/files/screens/x1/814/89.png
http://spectrum4ever.org/files/screens/x1/2920/84.png
http://spectrum4ever.org/files/screens/x1/691/132.png
http://spectrum4ever.org/files/screens/x1/724/84.png
тебе нужно чето среднее между пунктами 3,4,5
а вот просто пример годного графона (точнее способа маскировать клешинг)
зеленные деревья с тенями на фоне желтой земли
не плохо получаются на спектруме
http://spectrum4ever.org/files/screens/x1/2493/83.png
А я придираюсь к тому что заливка атрибутами идет через полтора фрейма после того как отрисовались пиксели
чего допускать нельзя
А вот, кстати, вслед за LDIR-ом пикселей тут же идёт LDIR атрибутов.
Полтора фрейма задержка между этими операндами?
По-моему, всё дело именно в рассинхроне кадра (коего нет при использовании HALT-а, но его применение я могу позволить лишь при наличии теневого 128к экрана).
https://sun9-75.userapi.com/6wBFqsQlzEqv6R869XpuMBUtdnyk0LwJv6oDAQ/UtA_Jxgeuro.jpg
- - - Добавлено - - -
а вот просто пример годного графона (точнее способа маскировать клешинг)
зеленные деревья с тенями на фоне желтой земли
не плохо получаются на спектруме
Когда геймил в это на ЧБ-телеке рассвет - ещё терпимо было. Не топ, но сносно. Но в цвете такой же вырвиглаз, как и всё остальное. Лесок корявенький, лужа чёрная (это нефть штоле?)
NEO SPECTRUMAN
28.08.2020, 21:04
По-моему,
ты кидаешь каждую строку свои ldir-ом
из буфера?
просто сделай чередование
8 строка пикселей
1 строка атрибутов
и весь разсинхрон помножитсо на 0,1
- - - Добавлено - - -
а так если бы делать обновление экрана с привзякой к инту
можно было бы кидать намного быстрей юзая стек
- - - Добавлено - - -
А вот, кстати, вслед за LDIR-ом пикселей тут же идёт LDIR атрибутов.
Полтора фрейма задержка между этими операндами?
твой ldir кидает 128 строк 86К тактов
от этого у тебя больше фрейма висит каша на экране
на фирменной машине эффективных тактов в медленной памяти во фрейме вообще ~50К
через стек может вложитсо в 66К
но сама процедура вывода будет бОльшой
ты кидаешь каждую строку свои ldir-ом
из буфера?
просто сделай чередование
8 строка пикселей
1 строка атрибутов
и весь разсинхрон помножитсо на 0,1
Хм...а это мысль...
а так если бы делать обновление экрана с привзякой к инту
можно было бы кидать намного быстрей юзая стек
Ну, я не программизд. Так что понимаю сказанное теоретико-гипотетически. На практике такое проворачивать не шарю.
Новая попытка скролл-движка, прилепил коллизии с уровнем. Добавил bright и flash(используется как флаг, но и с bright можно так поступить).Вроде писал всё "влоб" без оптимизаций, и даже не сильно медленнее стало.
Из управления работают только W - прыжок, и D - вправо
Так же нет проверки на проваливание в яму, персонаж упадёт, проломит всю область атрибутов, и выпадет сверху))
Пушычка :v2_dizzy_champagne:
Уже выглядит круче, чем монохромный марево с нафиг ненужным, едва заметным, мега-прожорливым гигаскрином диззеринга
NEO SPECTRUMAN
29.08.2020, 18:32
https://sun9-75.userapi.com/6wBFqsQlzEqv6R869XpuMBUtdnyk0LwJv6oDAQ/UtA_Jxgeuro.jpg
убери ld bc,32
и постваь вместо ldir
call на такую процедуру
dup 32
ldi
edup
ret
и 128 строк будет перекидыватсо уже за 71К такт
80К вместе с атрибутами
Andrew771
29.08.2020, 18:37
Andrew771, Попытался переписать на асм put_object
Чёт похоже не осилю, тут дофига чего не понятного
забей, в общем.)) Я буду сам ковырять дальше. Извини, что отвлёк.
А вот на счëт стека, надо у эндрю узнать, как там его паскаль юзает
стек для вывода спрайтов не используется. Да и вообще, нигде он не используется для вывода на экран.
и 128 строк будет перекидыватсо уже за 71К такт
80К вместе с атрибутами
Местами поменял, но одна треть экрана у меня всё равно монолитная:
ld hl,#4800+addr_virt_screen-#4000 ; вся вторая треть
ld de,#4800
ld bc,2048
ldir
конечно можно её поделить на 64 вызова LDI-процедурки. Но фпс от этого сильно не прибавится, лишь память зря загажу. Так как даже с использованием теневого экрана 128к хоть и удавалось сгладить рассинхрон хальтом, но сильно шустрее по сравнению с LDIRами оно не становилось. Наиболее затратен во всей этой лабуде именно расчёт каждого знакоместа отдельно взятого спрайта (на гифке зеркальные спрайты глючут, ибо таблица попала в область переключаемой банки).
https://media.giphy.com/media/lRLh9d3mq3bqWPmBTZ/giphy.gif
Lethargeek
29.08.2020, 21:14
фпс от этого сильно не прибавится,
еще как прибавится, особенно на тормозных фирменных
NEO SPECTRUMAN
30.08.2020, 00:11
еще как прибавится, особенно на тормозных фирменных
ну и написано оно на неизвестно чем
и раз речь идет про выравнивание halt-ом
вангую что на 14МГц турбе все будет носится как бешенное :v2_lol:
- - - Добавлено - - -
Местами поменял, но одна треть экрана у меня всё равно монолитная:
а буфер под оно полностью(каждый байт) перестраивается каждый кадр?
- - - Добавлено - - -
Местами поменял, но одна треть экрана у меня всё равно монолитная:
ld hl,#4800+addr_virt_screen-#4000 ; вся вторая треть
ld de,#4800
ld bc,2048
ldir
дешево и сердито сделать так
у тебя уже есть процедура с 32 ldi
сделай вместо ldir-а call на нее
и небольшое условие
ld hl,$0000
ld de,$4800
ld bc,$800+$4000
loop
; ldir
call ldi_32
djnz loop
;dec b
;jp nz,loop
jp $
ldi_32
dup 32
ldi
edup
ret
ldir-ом ~43008 такта
этой парашей ~35422
+$4000 к BC это для 64 циклов ($40)
чтоб делать быструю проверку на no zero
без пересылания в регистр A
тк ldi не ставит нужных флагов
подкоректируй длину bc +-32 если я на глаз не попал
- - - Добавлено - - -
так же будет полезно еcли твой набор ldi будет выглядеть так
ldi_20 ldi
ldi_19 ldi
ldi_18 ldi
ldi_17 ldi
ldi_16 ldi
ldi_15 ldi
ldi_14 ldi
ldi_13 ldi
ldi_12 ldi
ldi_11 ldi
ldi_10 ldi
ldi_09 ldi
ldi_08 ldi
ldi_07 ldi
ldi_06 ldi
ldi_05 ldi
ldi_04 ldi
ldi_03 ldi
ldi_02 ldi
ldi_01 ldi
ret
и можно будет его использовать вместо любого ldir с фиксированным числом перекидываемых данных
ну или не с фиксированным
тк один ldi 2 байта
и если кидать много
то можно и рассчитать положение куда jp-ать
Bedazzle
30.08.2020, 00:19
Наиболее затратен во всей этой лабуде именно расчёт каждого знакоместа отдельно взятого спрайта
А зачем для каждого знакоместа полный расчёт делать?
ну и написано оно на неизвестно чем
на асме...
- - - Добавлено - - -
А зачем для каждого знакоместа полный расчёт делать?
Все вопросы к автору этой книги.
#ЯЖНЕПРОГРАММИСТ
https://zxpress.ru/book_articles.php?id=1028
https://zxpress.ru/chapters_images/kakasm/fist.gif
NEO SPECTRUMAN
30.08.2020, 01:40
https://zxpress.ru/book_articles.php?id=1028
боже какая жесть
а чего нельзя это все таблично?
тем более все перемещение кратное 8 пикселям
- - - Добавлено - - -
кстате Я щитаю что
флеш водопад должен выглядеть не так
https://jpegshare.net/images/b3/ca/b3ca44a899f5ab67dde165a3c35329b7.gif
а больше похоже на
https://jpegshare.net/images/12/82/1282044e7635301e7fcaf0c6355f1ff8.gif
Lethargeek
30.08.2020, 01:41
dec b
jp nz,loop
это же одна команда djnz :D
а чего нельзя это все таблично?
(см. хештег выше.)
Конечно можно воспользоваться ситуацией, что часть спрайтов рендерится строго на одной трети. Но я нифига не шарю в таких делах.
Lethargeek
30.08.2020, 01:43
и не надо call каждый раз, а сразу прописать там же цикл
NEO SPECTRUMAN
30.08.2020, 01:48
это же одна команда djnz
я еще не отошел от ПЗУ для zx8080 :)
а так конечно НУЖНО менять на djnz
- - - Добавлено - - -
поправил
чтоб никто не брал за пример :)
- - - Добавлено - - -
и не надо call каждый раз, а сразу прописать там же цикл
НЕТ у него уже есть готовая процедура ldi_32
который он кидает строки по одной
чтобы прописывать сразу в цикл
уже нужно будет тянуть 32 ldi и сюда которые по 2 байта
а аффтар зажимает память
пушо пишет на каких то паскалях
а потом еще ВНЕЗАПНО окажется что и для резинки...
а так это и экономия
и быстрей чем просто ldir
а так с djnz это ~35422
а прямо в цикле было бы ~33625
еще +1,7 килотакта под блекджек и шлюх
Я бы вообще поставил 2К ldi или бы заюзал стек :)
боже какая жесть
а чего нельзя это все таблично?
Там в книжке, насколько я помню, способ самый универсальный(спрайты любой конфигурации) и соответственно очень далеко не самый быстрый, потому как книжка для совсем новичка.
Конечно можно воспользоваться ситуацией, что часть спрайтов рендерится строго на одной трети.
У тебя, насколько я вижу, спрайты прямоугольные, потому можно их хранить и рисовать по линиям, а не по знакоместам(зонтики с рукой всякие отдельными спрайтами) и выводить по линиям очень легко по Y в пикселях.
Для вычисления адреса следующей линии в случае рисования в одну треть, всё ограничивается увеличением старшего байта адреса на 1.
В случае разных третей - небольшая функция, сдвигающая адрес на строчку вниз
Например там же на сайте zxpress есть статьи вывода спрайтов. Там подобное можно найти
DOWN INC H
LD A,H
AND #07
RET NZ
LD A,L
ADD A,#20
LD L,A
RET C
LD A,H
SUB #08
LD H,A
RET
Можно хранить список с заранее вычисленными адресами для каждой линии(сам не применял именно в таком виде), типа
Y_ADDR
defw #4000
defw #4100
defw #4200
...
defw #57e0
и брать как нибудь так
ld de,y
ld a,x
...
ld hl,Y_ADDR ;берём адрес начала
add hl,de ;смещение соответствующее Y
ld ($+4),hl ;запишем в следующую команду
ld hl,(#0000) ;возьмём из списка адрес
or l ;сложим с X
ld l,a ;обратно в l
;теперь тут адрес в экране
Вобщем вариантов море, главное посмотреть что будет быстрее в конкретном случае
Иногда очень полезна бывает вот такая раскладка
H L
-------------+-------------¬ --------------+-------------¬
¦ ¦ ¦ ¦
г==T===T===T===T===T===T===T===T===T===T===T===T= ==T===T===T==¬
¦0 ¦ 1 ¦ 0 ¦ X ¦ X ¦ X ¦ X ¦ X ¦ X ¦ X ¦ X ¦ X ¦ X ¦ X ¦ X ¦ X¦
L==¦=T=¦===¦===¦===¦===¦===¦===¦===¦===¦ ===¦===¦===¦===¦===¦==-
¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦
¦ L----- L-------- L-------- L----------------
Адрес 16384 Номер Номер Номер Номер столбца
сегмента линии ряда
0...2 0...7 0...7 0 ... 31
H L
-------------+-------------¬ --------------+-------------¬
¦ ¦ ¦ ¦
г==T===T===T===T===T===T===T===T===T===T===T===T= ==T===T===T==¬
¦0 ¦ 1 ¦ 0 ¦ 1 ¦ 1 ¦ 0 ¦ X ¦ X ¦ X ¦ X ¦ X ¦ X ¦ X ¦ X ¦ X ¦ X¦
LT=¦===¦===¦===¦=T=¦===¦=T=¦===¦===¦===¦ ===¦===¦===¦===¦===¦==-
L------T--------- ¦ ¦ ¦ ¦
¦ L---------------- L----------------
адрес 22528 Номер Номер столбца
ряда
0...23 0 ... 31
У тебя, насколько я вижу, спрайты прямоугольные
Не все, но большинство.
Есть отличные от прямоугольников.
Поначалу я хотел воспользоваться процедуркой вывода прямоугольных имеджей для отдельно взятых спрайтов, но в ней не было проверки границ экрана, из-за чего спрайт, вылезший за границы, коцал дальнейшие адреса, вплоть до атрибутной области.
NEO SPECTRUMAN
30.08.2020, 11:00
потому как книжка для совсем новичка.
да как раз понять тот поток сознания будет на порядок сложней
чем понять как работает табличный вариант
сам не применял именно в таком виде
И нафиг не надо ни в коем случае. Получается примерно 67 тактов + 384 байта занято фигнёй.
Проще вот так
;на входе H - y в пикселях, L - x в знакоместах
ld a,H ;4
rla ;4
rla ;4
and %11100000 ;7
or L ;4
ld L,a ;4
ld a,H ;4
and %00000111 ;7
ld b,a ;4 Портится регистр B
ld a,H ;4
rra ;4
rra ;4
rra ;4
and %00011000 ;7
;0101100 для #4000
;1101100 для #с000
or b ;4
ld H,a ;4 = 66 на вычисление одного адреса
;на выходе в HL адрес
Но это для случая вывода спрайта с точностью до пикселя по вертикали
минус - Портится регистр B(или c,d,e)
В книжке - вариант для познакоместного вывода. Если убрать все проверки, получится
[CALL 3742]
ld d,a ;4
rrca ;4
rrca ;4
rrca ;4
and %11100000 ;7
ld l,a ;4
ld a,d ;4
and %00011000 ;7
or %01000000 ;7
ld h,a ;4 = 49
...
ADD A,C ;4
...проверка выхода
ADD A,L ;4
LD L,A ;4 = 61
61 такт.
Плюсы: быстрее
Минусы: познакоместно, вызывается для каждого знакоместа в спрайте, хотя для попиксельного вывода будет вызываться кусок, выполняющий сдвиг адреса вниз для каждой байтовой линии в спрайте. Так что тут хз.
Единственное, что приходит в голову, подумать над форматом хранения спрайтов, но надо ли, ведь не супер-демо пишется
- - - Добавлено - - -
да как раз понять тот поток сознания будет на порядок сложней
Не согласен, эта книжка у меня была когда-то, всё нормально понималось вроде, как для того, кто вощбе не знал маш.коды. Но может у меня такое мнение потому, что других книг по спеку не было, и сравнивать не с чем. Была ещё такая же "на бейсике" и zx-ревю 1993 (1-12), но эта не в счёт(кстати всё ещё в бумаге вон валяется страшная, как война).
чем понять как работает табличный вариант
Можешь ссылку дать? А-то я тоже всякий колхоз придумываю, а с нормальными способами не знаком.
NEO SPECTRUMAN
30.08.2020, 12:54
я не силен в спрайтах
с ходу на*****кодил такую процедуру рисования спрайтов
шириной 2 знакоместа
высотой сколько хош (после 16 знакомест есное дело нужно сделать 1 inc hl вместо inc l)
с точностью до 8 пикселей и выводом змейкой
без масок и какого либо наложения
с 512 байт табличкой адресов по Y
;33 вычисления адреса
;78+82+82+82 = 324 / 2 знакоместа
;38 down hl
;357 / 2 знакоместа = 22,3125 такта на байт
;719 / 4 знакоместа = 22,46875 такта на байт
;1081 / 6 знакомест = 22,52083 такта на байт
;l = y
;a = x
;de = sprite data
ld h,Y_tab_haddr ;7
add (hl) ;7 low addr
inc h ;4
ld h,(hl) ;7
ld l,a ;4
ex de,hl ;4
; 33t
line1_1
ldi ;ld (de),(hl) ;16 X+0
;inc de inc hl
line1_2
ld a,(hl) ;7 X+1
ld (de),a ;7
inc l ;4
line2_2
inc d ;Y=2 ;4 X+1
ld a,(hl) ;7
ld (de),a ;7
inc l ;4
line2_1
dec e ;4 X+0
ld a,(hl) ;7
ld (de),a ;7
inc l ;4 78t
line3_1
inc d ;Y=3 ;4
ldi ;ld (de),(hl) ;16 X+0
;inc de inc hl
line3_2
ld a,(hl) ;7 X+1
ld (de),a ;7
inc l ;4
line4_2
inc d ;Y=4 ;4 X+1
ld a,(hl) ;7
ld (de),a ;7
inc l ;4
line4_1
dec e ;4 X+0
ld a,(hl) ;7
ld (de),a ;7
inc l ;4 82t
line5_1
inc d ;Y=5 ;4
ldi ;ld (de),(hl) ;16 X+0
;inc de inc hl
line5_2
ld a,(hl) ;7 X+1
ld (de),a ;7
inc l ;4
line6_2
inc d ;Y=6 ;4 X+1
ld a,(hl) ;7
ld (de),a ;7
inc l ;4
line6_1
dec e ;4 X+0
ld a,(hl) ;7
ld (de),a ;7
inc l ;4 82t
line7_1
inc d ;Y=5 ;4
ldi ;ld (de),(hl) ;16 X+0
;inc de inc hl
line7_2
ld a,(hl) ;7 X+1
ld (de),a ;7
inc l ;4
line8_2
inc d ;Y=8 ;4 X+1
ld a,(hl) ;7
ld (de),a ;7
inc l ;4
line8_1
dec e ;4 X+0
ld a,(hl) ;7
ld (de),a ;7
inc l ;4 82t
;урезанный down hl
inc h ;4
;ld a,h ;
;and 7 ;
;jp nz,exit ;
ld a,l ;4
sub -32 ;7
ld l,a ;4
sbc a,a ;4
and -8 ;7
add a,h ;4
ld h,a ;4 38t
;дальше копия line1_1...
;33 вычисления адреса
;78+82+82+82 = 324 / 2 знакоместа
;38 down hl
;357 / 2 знакоместа = 22,3125 тактов на байт
;719 / 4 знакоместа = 22,46875 тактов на байт
- - - Добавлено - - -
Можешь ссылку дать?
не могу
не одной ссылки у меня под рукой нет
- - - Добавлено - - -
поправил смороженный бред
Dwa83, когда ждать следующий апдейт движка Марио ?
Думаю, расчехлять ли щас реал для теста, иль подождать. А то влом лишний раз с кишками возиться, а на эбуляторе #не_лампава
Я пока не решил чем дальше заняться. И не понятно Марио ли делать. Так же не понятно стоит ли заморачиваться инертным движением персонажа. Или подумать над обратным скроллинга ом. Хз
Да и времени щас только вечером будет.
SMB уже есть. Да и это попса.
Вот bram stokers Dracula на донди/ мастер систем - крутотень. Такого не хватает на спеке. Но там сложный движок. Скролл работает по всем 8ми направлениям, есть наклонные платформы. На спеке, разумеется, всë это можно было бы упростить, как всегда.
А ещë в дракуле два канала на музыку, один на эффекты. Что очень на руку трëхколосому AY.
Процедура очистки, кстати.
На ней можно выиграть тактов в оптимизации?
CLEARVIRTSCR
LD HL, 63648; 55296+6144+96+64 начало атрибутной области виртуалки
LD BC,320
CLEARVIRTSCR1
ld a,(_CLRCOL)
ld (hl),a
inc hl
DEC BC
LD A,B
OR C
JR NZ,CLEARVIRTSCR1
ret
NEO SPECTRUMAN
01.09.2020, 02:54
LD HL, 63648; 55296+6144+96+64
зачем так мучатсо?
и мучать других
эти цифры не читаемые (кроме 6144)
пишЫ покомпутерному же :)
ld hl,$D800+$1800+96+64
и сразу выражением а не магическим числом
будет висеть незаметная очепятка
и ты хрен найдешь почему все не работает
ну и щас на вид сумма и выражение в коментах не совпадают...
в придачу на таком например прекрасно видно
$4000
$4100
$4200
что инкрементитсо только H
и этим можно и нужно пользоватсо
а на последовательности
16384
16640
16896
ничего не видно...
ну или
FFFF 65535
FEFE 65278
FDFD 65021
FCFC 64764
этож реально удобней :v2_dizzy_vodka:
шестнадцатеричные цифры не просто так изобретены
- - - Добавлено - - -
На ней можно выиграть тактов в оптимизации?
щас глянем
- - - Добавлено - - -
Процедура очистки, кстати.
На ней можно выиграть тактов в оптимизации?
CLEARVIRTSCR
LD HL, 63648; 55296+6144+96+64 начало атрибутной области виртуалки
LD BC,320
CLEARVIRTSCR1
ld a,(_CLRCOL)
ld (hl),a
inc hl
DEC BC
LD A,B
OR C
JR NZ,CLEARVIRTSCR1
ret
с ходу у тебя страшная ошибка
ld a,(_CLRCOL) читается 320 раз
что 2240 тактов
а можно было положить
ld a,(_CLRCOL)
ld e,a
а потом
ld (hl),e
сейчас твой вариант 16655 тактов
первое что приходит в голову заюзать ldir
LD HL,63648; 55296+6144+96+64 начало атрибутной области виртуалки
LD BC,320-1
ld de,63648+1
ld a,(_CLRCOL)
ld (hl),a
ldir ;6744
это уже 6744 такта
второе что приходит заюзать ldi
опять же предположим что у тебя есть процедура ldi_32
если вставить ее вместо call
то зачищать будет еще быстрее (за 5295 тактов)
ld hl,63648
ld de,63648+1
ld bc,320+$A00
ld a,(_CLRCOL)
ld (hl),a
loop
; ldir
call ldi_32
djnz loop ;5565
jp $
ldi_32 dup 32
ldi
edup
ret
это 5565 такта
АХТУНХ ЭТА ПРОЦЕДУРА ЗАТИРАЕТ НА 1 БАЙТ БОЛЬШЕ ЧЕМ НУЖНО !!!!!
тк может затерать только кратное 32-м + 1 количество
если это критично и нужно затереть ровно 320
то сделай на 1 цикл меньше
а остальные 31 байта затри обычным ldir-ом
ну и для сравнения
если включить режим гулять так гулять
ld sp,63648+320
ld a,(_CLRCOL)
ld h,a
ld l,a
dup 320/2
push hl
edup
1791 такт
- - - Добавлено - - -
ну и вариант по проще
ld hl,63648
ld b,320/32
ld a,(_CLRCOL)
loop2
dup 31
ld (hl),a
inc l
edup
ld (hl),a
inc hl
djnz loop2 ;3695
на 3695 тактов
что примечательно
его можно уменьшить по объему в 2...3 раза
а подобная скорость должна будет оставаться
уменьшает в 2 раза
ld hl,63648
ld b,320/16
ld a,(_CLRCOL)
loop3
dup 15
ld (hl),a
inc l
edup
ld (hl),a
inc hl
djnz loop3 ;3845
в итоге 3845 такта против 3695 того что при 32 dup-ах
ну и для сравнения
если включить режим гулять так гулять
Код:
ld sp,63648+320
ld a,(_CLRCOL)
ld h,a
ld l,a
dup 320/2
push hl
edup
1791 такт
Клёвый вариант, и регулируемый "скорость <> объём", если всё-таки сделать цикл
;вариант "влоб"
ld b,160 7
LP push hl 11 = 1760
djnz LP 13*159+8 = 2075
;итого 3842
;---------------------------------------
;увеличим пуши
ld b,40 7
LP push hl 11
push hl 11
push hl 11
push hl 11 1760
djnz LP 13*39+8 = 515
;на 3 байта длинее, но уже 2282
;---------------------------------------
;ещё увеличим пуши
ld b,20 7
LP push hl 11
push hl 11
push hl 11
push hl 11
push hl 11
push hl 11
push hl 11
push hl 11 1760
djnz LP 13*19+8 = 255
;на 7 байт длинее, но уже 2022, яб прям этот вариант и взял
NEO SPECTRUMAN
02.09.2020, 16:27
Клёвый вариант, и регулируемый "скорость <> объём", если всё-таки сделать цикл
до но тут надо подружить все это с прерываниями
а это лишняя головная боль
думаю ALKO с ходу ниасилит
в придачу это еще и намешано с *****сямипаскалями
а так если бы все стековые операции проводить сразу после прихода инта
то вполне до
можно было бы запрещать прерывания
все чистить
и до конца фрейма разрешать
и было бы апсолютно пофиг
но тут нужна изначальная заточенность под обновления графики по прерыванию...
ну и сам движок по хорошему должен висеть на прерываниях
и вызывать новое обновление экрана
когда отрисовано предыдущее
а так если бы все стековые операции проводить сразу после прихода инта
то вполне до
можно было бы запрещать прерывания
все чистить
и до конца фрейма разрешать
и было бы апсолютно пофиг
Ну так DI
ld (pop_sp+1),sp 20
ld sp,63648+320 20
теперь прерывание не придёт
очищаем
pop_sp ld sp,0000 20
EI
Такой вариант
di
ld (pop_sp+1),sp 20
ld sp,63648+320 20
ld a,(_CLRCOL) 13
ld h,a 4
ld l,a 4
ld b,40 7
LP push hl 11
push hl 11
push hl 11
push hl 11 1760
djnz LP 13*39+8 = 515
pop_sp ld sp,0000 20
ei
Или я чего-то не понял?
Если прерывание должно прийти в то время, когда мы его запретили, ну просерили одну обработку прерывания, ФПС тут не на прерываниях, а "как нарисовали так и пофиг на луч")))
Да и отключить их к чёрту, если конечно паскаль не использует данные, которые меняются стандартными прерываниями.
ПС: не нашёл инфу, сколько тактов длится стандартная процедура обработки прерывания, а интересно бы было узнать
ППС:
Крик души после второй бутылки пива:v2_dizzy_biggrin2:. Доколе программист должен всегда балансировать, отталкиваясь от быстродействия? Чуть-чуть не попали к фронту третьего прерывания - 16 кадров в секунду(хотя меня эти проблемы пока не коснулись).
Написал шикарный шейдер, но твоя прога работает с минимальным фпс, убирай нафиг половину.
Воот щас я для физ движка всё красиво нашлёпаю в три строчки. Не-а. Нельзя всё сталкивать со всем, давай ка придумывай ухищрения, дели на отдельные объёмы, забивая память и листинг кучей строк. Более мощные компьютеры? Ха, на тебе более крутые запросы пользователя. Жаль, что программирование это всё таки не творчество, когда ты делаешь что затеял, а технарство, когда ты штудируешь всякие матчасти, чтоб твоё "что затеял" и выглядело бы хоть мало-мальски так же как задумано
Хотя на самом деле это даже хорошо - узнавать то, чего до этого не знал. Как например я себя чувствовал, когда только недавно узнал, что страницы памяти-то переключаются не сами по себе, и там свои сложности. И мой старенький кворум был 128, а не 48(хотя я это и знал, но.. 65535 а дальше что?)))
- - - Добавлено - - -
ALKO, Кстати решил посмотреть тему с паскалем и увидел, что ты там аш с 15ого года какую-то игру пилил с мужигом и с шипастым афтаматом. Какова судьба игры? Или это он в алису переродился?)))
Ещё вопрос есть. Вот ты портировал игру на разные платформы. Если есть версия для нес, на чём пилил? Ато я как веселопедист хотел свой компиль написать, но у меня случился затык с интерпретацией команд, связаных с работой с первой страницей(первые 256), либо с остальной памятью, по коду они разные получатся, а по написанию в листинге одно и то-же.
NEO SPECTRUMAN
02.09.2020, 20:08
теперь прерывание не придёт
ну до
а какая нибудь музыка на прерываниях тоже ушла лесом
:v2_dizzy_facepalm:
всключая тех кто пожелает ее туда притулить вместо аффтара потом
если он ее не притулит сам :)
да и по хорошему у игры должен быть дельта тайминг
так что прерывания всегда нужны
а не нужны они только дебилам
и пилятелям советских компутеров
которые по совместительству дебилы
- - - Добавлено - - -
ld (pop_sp+1),sp
pop_sp ld sp,0000
кстате это плохая конструкция
лучше писать
ld (var),bc
...
var = $+1 : ld de,$0000
пушо если ВНЕЗАПНО понадобится заменить var на переменную в виде defw
придется менять все ld (var+1),bc \ ld (var+2),bc \ ld bc,(var+1)
которые могут быть раскиданы по куче файлов
и вспоминать того мудака кто это сделал :)
особенно актуально когда таких конструкций много по коду
я подобное гафно несколько лет пытаюсь отскребсти от некоторых своих старых поделок
ALKO, Кстати решил посмотреть тему с паскалем и увидел, что ты там аш с 15ого года какую-то игру пилил с мужигом и с шипастым афтаматом. Какова судьба игры? Или это он в алису переродился?)))
Хах.... у меня же стопицот незавершённых параллельно делающихся проектов, к которым я время от времени возвращаюсь и вновь забрасываю.
Причём не только на спек. В круг моих интересов входит также сега, пентиум+вуда, андроид-смартфоны. На всё это я делал те или иные демки-недоделки.
А мужык с шыпастым...афтаматом (ли?) - то Агрессор, изначально я делал его на пеку в спектрумском стиле, затем на андроид в виде раннера, но пока проект заморожен.
- - - Добавлено - - -
Если есть версия для нес, на чём пилил?
на Нес интересно было бы по-кодить, ЕСЛИ был бы флеш-картридж. А без возможности запуска на реальном хардваре - не интересно вникать.
- - - Добавлено - - -
да и по хорошему у игры должен быть дельта тайминг
На спеке не критично, там +/- частота в пределах ~3.5 мегагерц (не принимаю во внимание всякие вундервафли с турбами, на которых надо уже запускать не каличное спектрумское недо-2д, а вульфенштайн-подобное недо-3д).
Я вообще сколько ни смотрел оверклок-демонстраций популярных игрушек на хз-нексте, везде по-бешенному шпарят с ускоренным темпом игрового процесса.
- - - Добавлено - - -
В общем-то на дельта-тайм даже в ранних дос-играх подавляющее большинство разрабов клали болт.
Чего уж говорить про спек...
NEO SPECTRUMAN
02.09.2020, 23:55
Я вообще сколько ни смотрел оверклок-демонстраций популярных игрушек на хз-нексте, везде по-бешенному шпарят с ускоренным темпом игрового процесса.
пушо написано криво
и ты такое же пишишь и говоришь что это правильно
нормальные софтвари повышают ФПС в турбе
запусти тот же survivisection на 14\28МГц
ничего летать не будет...
- - - Добавлено - - -
В общем-то на дельта-тайм даже в ранних дос-играх подавляющее большинство разрабов клали болт.
Чего уж говорить про спек...
ну клали по не знанию\лени\малому умственному развитию
сейчас класть уже нельзя
а многие так и продолжают...
кстате ЛИЧНО ТЕБЕ я не говорю
"брать и переписывать под дельтатайминг"
возможно уже поздно
и нужно будет переписывать все подряд...
учитывай оно в следующей поделке с самого начала
- - - Добавлено - - -
Я вообще сколько ни смотрел оверклок-демонстраций популярных игрушек
кстате есть оверклокеры дебилы
которые вместе с процем разгоняют другие времянки
и даже выносят еще ручку регулирования
и снимают видео как они ее крутят и все начинает носится :v2_dizzy_facepalm:
- - - Добавлено - - -
ну а в некоторых старых играх
дельтатайминга нет
но есть FPS лимит
что вощем то не так страшно на турбе
но на обычной скорости как правило проседания скорости все равно есть
и это не труЪ
в принципе что то такое можошь притулить и ты
глянуть средний фпс
и повесить на прерывание счетик
и если весь цикл закончился раньше чем нужно
то включать тормозилку
перегенерировать рнд
может делать что то другое полезное чтоб тупо не стоять
опрашивать клавиатуру лишний раз
чтоб была бОльшая "отзывчивость"
- - - Добавлено - - -
ну клали по не знанию\лени\малому умственному развитию
сейчас класть уже нельзя
а многие так и продолжают...
кстате таких дебилов достаточно много
а потом запускаешь какой нибудь гофно WOT
а там на фоне 5 ФПС в тридэ
2Дэ курсор мыши в менюшке движется ВНЕЗАПНО тоже с 5 ФПС и без дельта тайминга
и плавает с заносами и попасть в что либо(в менюшке) не реально
а потом другие дебилы глядя на такое ***** думают что 5...10 ФПС не плеябельно
хотя в нормальных играх
даже если ФПС просел до 0
курсор и весь интерфейс обновлятся со скорость обновления экрана
и ВСЕ вполне плеябельно...
ну к примеру мну прошел NFS Underground 2 с 5...10 ФПС-ами
ну а на говорунов которые расказывают что для гонак нужно 40ФПС минимум
я смотрю как на лохов
(хотя я уже не помню на сколько там инертная менюшка при тормозах...)
но управляемость в геймплее точно не теряется как у некоторых....
WOTы NFSы выходили в эпоху, когда конфигурация железа варьируется в большом диапазоне, тут ясен пень без дельта тайминга или разделения на потоки рендер/логика - никак.
А спек чë, у него общепринятый стандарт 3.5 мегагерц. Всë что в турбе это уже не спек, а обратно-совместимое со спекою.
NEO SPECTRUMAN
03.09.2020, 01:21
А спек чë, у него общепринятый стандарт 3.5 мегагерц. Всë что в турбе это уже не спек, а обратно-совместимое со спекою.
вот только запускаешь в турбе какую нибудь плавающую тормозилку
в надежде что она уплавнится
а она начинает летать как бешенная при том так же с разной скоростью
вот тебе наглядный пример унылости плавающей скорости
https://youtu.be/eDhSH-GJDqE?t=1600
на фоне вполне симпатичной игры
Ну, такие вещи надо не частотами проца разгонять, а оптимизацией кода, если оно действительно в интересах оверклокера.
А вообще, плавующую скорость я обычно сглаживал согласно этой статейке.
https://habr.com/ru/post/136878/
Но на продвинутых ЭВМ, включая сегу мд, благо там имеется аппаратный таймер, в отличие от убогого Горбатого, где остаëтся полагаться лишь на сигнал прерывания.
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot