PDA

Просмотр полной версии : Ищу желающих выступить в роли программиста



Страницы : [1] 2

ALKO
07.04.2019, 14:53
Есть идея засунуть масштабную метроидванию в 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. Также для экономии памяти тайлы нужно местами зеркалить.
Физика а-ля марио.

ALKO
07.04.2019, 17:32
Под ночное время суток нужно использовать иной набор спрайтов, со своей светотенью. Одной лишь инверсии атрибутов недостаточно.

https://pp.userapi.com/c851416/v851416373/f611a/mD3V03MkkOE.jpg

sergio78
07.04.2019, 18:59
хорошее дело. жалко, что тут кто из программистов есть, уже по уши в работе.

krt17
07.04.2019, 20:47
Круто, с удовольствием бы попробовал, но не уверен что найду время. Когда то очень хотелось сделать полноэкранный познакоместный скроллер бродилку, но не было графики, а у меня с этим очень туго. Надеюсь что кто-нибудь возьмется.
Тест 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 (и не только из неё) дёрнул для отладки - чтобы что-то на экран выводить. Ну, а выбор донора был не случаен - уж очень мне нравится тамошняя графика ;)

ALKO
09.04.2019, 11:45
Может всё-таки лучше будет поэкранное перемещение? Дошёл до границы локации - экран сдвинулся на следующую локацию.

На движке Alien Neoplasma/Castlevania/PowerBlade что ли?

Скролл был бы зрелищнее. Но то уже зависит от прогера. Лишь бы не AGD/MK2. Бомбит из-за поделок на этих конструкторах.

CityAceE
09.04.2019, 12:05
На движке Alien Neoplasma/Castlevania/PowerBlade что ли?
Ну не на нём конкретно, но суть та.


Скролл был бы зрелищнее.
Но и вместе с тем более тормозно.

ALKO
09.04.2019, 14:08
Но и вместе с тем более тормозно.

Savage, Rebel, Action force, TMNT и тд. ничуть не тормозные.

Carlos Michelis огроменный массив врагов обрабатывает, и при этом скролл вполне плавный, хоть и познакоместный.

jerri
09.04.2019, 15:24
Savage, Rebel, Action force, TMNT и тд. ничуть не тормозные.

Carlos Michelis огроменный массив врагов обрабатывает, и при этом скролл вполне плавный, хоть и познакоместный.Названые тобой игры
Саваж тмнт неполный экран, враги туууупые
Аф скролл так себе враги тупые,
Карлос довольно таки тормозной.

И да много зависит от графики
В саваже блоки 4х4 вроде знакоместа
Сильно помещает ФПС при большом количестве врагов.

Кстати ты уже мир нарисовал?

Отправлено с моего Redmi Note 5 через Tapatalk

ALKO
09.04.2019, 16:03
Кстати ты уже мир нарисовал?

Это всё та же техно-алиса, которую начинал на андроиде. Там она в изометрии была.
А платформер под 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 строк))

jerri
09.04.2019, 17:04
в туррикане вроде повеселее скролл? во все стороны (и размер окошка 17 строк))2/3 экрана. Тайлы 16х16. Скролл насколько помню до тайла.
Собственно как везде, иначе за фрейм на экран не бросить.

Отправлено с моего Redmi Note 5 через Tapatalk

jerri
09.04.2019, 17:08
Это всё та же техно-алиса, которую начинал на андроиде. Там она в изометрии была.
А платформер под ZX набросал вот лишь на этих выходных. Чтоб рисовать мирок, я должен понимать, будет ли возможность его перегнать из TMX-формата в спек, или же это пустая трата времени.

Остальные зарисовки я буду в дальнейшем скидывать в данную тему.


На спеке всё подряд довольно-таки тормозное. Так что Карлос на фоне основной массы смотрится бодрячком.
В Брунильде тормознее, вроде.

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


Не думаю, что для метроидвании нужны враги с высокой учёной степенью. Достаточно поведения, как в кастле, супер вондер-бое и тд..

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



https://pp.userapi.com/c850336/v850336636/b8df7/OCOhX1B1YBc.jpg

https://pp.userapi.com/c851416/v851416760/9d0f3/bZtiSrFDZmE.jpg

Ясно понятно без программера никак.
А насчёт графики скажу так. Надо идти от карты. Хотя бы одной. Чтобы понять как хранить тайлы.

Отправлено с моего Redmi Note 5 через Tapatalk

Stl75
09.04.2019, 17:52
Я считаю, что надо ломануть
оригинальную игру для начала...
...И все, что можно -с нее перетащить...
Спрайты, код - если на Z80 и тд...
С нуля игры - сложно делать...

jerri
09.04.2019, 17:53
Я считаю, что надо ломануть
оригинальную игру для начала...
...И все, что можно -с нее перетащить...
Спрайты, код - если на Z80 и тд...
С нуля игры - сложно делать...Какую игру ты хочешь ломать ?


Отправлено с моего Redmi Note 5 через Tapatalk

Stl75
09.04.2019, 18:13
По графике - подобрать близкую...
На Dendy (NES) - много похожих игр...
И проц там Z80 - по-моему...

jerri
09.04.2019, 18:18
По графике - подобрать близкую...
На Dendy (NES) - много похожих игр...
И проц там Z80 - по-моему...Тут как бы ТС является автором и художником игры для андроида.
Тут нужен только программер и музыкант.
Для комплекта. А ещё много времени.
Ломать это если нет совсем ничего

Отправлено с моего Redmi Note 5 через Tapatalk

ALKO
09.04.2019, 18:26
Архитектура донди ну ваще ничем не родственна с архитектурой Горбатого.
Разве что процы 8-ми битны, и шина адреса 16 бит. На этом схожесть заканчивается.

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


и музыкант.

Музыку под AY я могу писать в том числе.

Shiny
09.04.2019, 18:48
На Dendy (NES) - много похожих игр...

ага...по этой логике... надо железо эмулировать..

krt17
09.04.2019, 21:56
Ну че, кто взялся?
C tmx думаю проблем не будет не у кого, tiled известный редактор, хотя с mappy проще работать, по крайней мере мне было проще. При наличии готового уровня и пачки нпс с героем количество желающих помочь зашкалит. А вообще как писал еще дедушка Тёрнер, за код надо садится когда готова вся графика, сюжет и карта.

CodeMaster
09.04.2019, 22:05
И проц там Z80 - по-моему...
... музыку играет.

ALKO
09.04.2019, 23:06
... музыку играет.

... разве что в сеге дженезис и ГБА.
В 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 и тд. ничуть не тормозные.
"Приключения буратино" Медноногова. (Только что играл :) )

Stl75
10.04.2019, 05:09
Подумал...
Движок - можно взять из -
Twin World...
Он там небольшой -
где то 17-20 КБ...
Скроллинг по знакоместам...
Но зато есть подземелья и
герой прыгает...

ALKO
10.04.2019, 05:25
"Приключения буратино" Медноногова. (Только что играл :) )

Он на Laser basic. Жутко тормозной. Такое не надо.

jerri
10.04.2019, 08:24
А кто подкинет чего почитать по выводу\рисованию спрайтов с точностью до пикселя (из современного и быстрого)
тк не особо то и умел
и еще долгое время ничего не делал :v2_dizzy_sleep2:
и много чего подзабыл\потерялЕщё мы с барсом обсуждали вывод спрайтов в теме с Диззи 7 ремейк. Там была ещё его процедура вывода до пикселя.

Отправлено с моего Redmi Note 5 через Tapatalk

goodboy
10.04.2019, 18:01
"Приключения буратино"

Он на Laser basic
это твои фантазии.

Rusazar
10.04.2019, 18:14
Он на Laser basic.

https://ru.m.wikipedia.org/wiki/Приключения_Буратино_(комп ютерная_игра)


«Приключения Буратино» были для Вячеслава Медноногова второй игрой, разработанной на*ассемблере

jerri
10.04.2019, 21:49
А кто подкинет чего почитать по выводу\рисованию спрайтов с точностью до пикселя (из современного и быстрого)
тк не особо то и умел
и еще долгое время ничего не делал :v2_dizzy_sleep2:
и много чего подзабыл\потерял

нашел вот тутl (https://zx-pk.ru/threads/27263-vyvod-sprajta-lyuboj-shiriny-s-tochnostyu-do-pikselya.html)

Stl75
11.04.2019, 22:26
Понимаешь, ALKO...
Групп, которые могут
сделать такую игру - 2...
Sanchez и RetroSouls...
А из 90х - CopperFeet, Fatality, Nicodim...
Steve Turner - писал, что первую
игру - Quazatron - делал 9 месяцев с нуля...
С 8 - 17.00 каждый день...
В следующую игру - он перетащил
весь код, который смог - процедуры подошли
примерно на 95%...
На 95% !!! - от одной игры к другой...
Можешь посмотреть на vtrd.in -
сколько доделанных проектов -
единицы... 95% софтины - осталось
в стадии демо...???
Я не беру в расчёт игры типа - угадай число или
отгадай слово... Я беру коммерческий
уровень...
Выводы...??? Сделаете сами...

jerri
11.04.2019, 22:53
Stl75, ты зачем человека демотивируешь? критик чтоли?

Stl75
12.04.2019, 00:05
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:

jerri
12.04.2019, 04:40
ты учитывай что большинство этих проектов
пришлись на "конец эпохи спектрума"

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

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
Один пишет движок, другой логику, третий оформление, четвёртый на подхвате и т.д
нет столько людей
и уже не будет

тут вопрос другой
"кто если не ты?"

так что надо уметь по возможности всё...

ALKO
12.04.2019, 08:42
мог бы 4 раза уже научится кодить

последний раз кодил спек в начале 00-ых. И то дело было ещё на машинных кодах (через DATA/POKE в бейсике забивал по табличке коды). Таким образом даже биперный диктофон сваял, осциллограф (правда для него волна любой формы была пилообразной, так как один бит), а также полифонический биперный движок. То есть поверхностно асм знаю.
Но всё кануло в лету. У меня тогда даже магнитофона для записи не было.

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

Я не заявляю на 100%, что игра и вправду будет. Если кодер не найдётся, так тому и быть, буду доволен хотя бы зарисовками и основной идеей. Тем более я за кроссплатформу, а следовательно, одним лишь спеком не собираюсь ограничиваться.

NEO SPECTRUMAN
12.04.2019, 08:48
я нынче даже от синклер бейсика отвык.
да и не нужен он... (на спеке для получения нормального продукта)

он нужен только для загрузчика
и для обучения деток, которые с ходу не возьмут что то по серьезней, самому принципу
или для каких то быстрых калькуляционных задач...

а для платформ с процом до 30МГц
только асм только хардкор
или никак

херею как для ардуинов пытаются писать
на всяких ся бейсиках :v2_dizzy_facepalm:
и еще жалуются что медленно...

Stl75
12.04.2019, 13:53
Мне не нравится - идея игры...

Предлагаю свою идею...
В подземельях (канализации) Нью Йорка, Москвы, Киева -
размножились мутанты и вурдалаки, которые хотят захватить
город сверху...

Алиса - спускается в подземку и начинает мочить
зомби, вурдалаков и прочих уродов...

Если будет время -
можно декомпильнуть что-то из -
1. Savage
2. Trantor
3. TMNT
4. SirWood
5. Karnov...

Что нибудь одно - за лето можно разобрать...

jerri
12.04.2019, 13:55
Мне не нравится - идея игры...

Предлагаю свою идею...
В подземельях - канализации Нью Йорка, Москвы, Киева -
размножились мутанты и вурдалаки, которые хотят захватить
город сверху...

Алиса - спускается в подземку и начинает мочить
зомби, вурдалаков и прочих уродов...

Если будет время -
можно декомпильнуть что-то из -
1. Savage
2. Trantor
3. TMNT
4. SirWood
5. Karnov...
Что нибудь одно - за лето можно разобрать...Про идею понятно
А зачем декомпилить старое невнятное и потом под это ещё и свои хотелки сгибать?

Stl75
12.04.2019, 13:59
Потому что...
Столько кода - написать сложно...
Чтобы все работало нормально...
На отладку - уходит много времени...

ALKO
12.04.2019, 14:02
Алиса - спускается в подземку и начинает мочить
зомби, вурдалаков и прочих уродов...

Что может мотивировать маленькую хрупкую невинную девственную девочку... ахх... так, о чём это я...
Ах да. Так что может мотивировать героиню фигарить мутантов вурдалаков в подземельях? Ещё и непойми откуда образовавшихся.
Тем более сеттинга подземок и так предостаточно на Горбатом. Все игры заполнены на 99% чёрным цветом. Даже Диззи, который на всех платформах яркий, жизнерадостный, на горбатом опять же - черным-черно.

В моей идее мирок должен предстать красочным, многогранным, но и мрачные моменты тоже будут.

Stl75
12.04.2019, 14:07
Ты не учел...
Алиса - злобная сатанистка,
на пустырях приносила в жертву темным Богам -
кошек, собак и прочую живность...
А теперь - она выучилась на охотника за головами,
телохранителя и тд...
И тут такой случай...

ALKO
12.04.2019, 14:14
В подземельях (канализации) Нью Йорка, Москвы, Киева -

У меня скорее отсылка к творчеству Льюиса Кэрролла. То бишь это не московия, не киев, а что-то ближе к Англии викторианской эпохи.
Никакой не постап, а-ля метро и прочие сталкеры.

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


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

Для того, чтоб стать скилловым головорезом, допубертата недостаточно. Там уже по идее должна быть дамочка бальзаковского возраста по типу такой:

https://youtu.be/0I4_41crLlg

Вам отдельную тему надо создавать по поиску кодера под такую идею.

jerri
12.04.2019, 15:35
Потому что...
Столько кода - написать сложно...
Чтобы все работало нормально...
На отладку - уходит много времени...Давай я тебе дам дизасм аббатства
И ты мне расскажешь как оно работает.

И кстати ни одна из предложенных тобой игр автору не подходит по условиям

Stl75
12.04.2019, 16:15
Jerri, мы не в институте -
задачки решаем...
jerri, лучше расскажи есть ли сайты
с готовыми дизасмами???
И чем их декомпилируют???

ALKO, для твоей игры -
подойдет TWIN WORLD...

jerri
12.04.2019, 16:42
Jerri, мы не в институте -
задачки решаем...
jerri, лучше расскажи есть ли сайты
с готовыми дизасмами???
И чем их декомпилируют???

ALKO, для твоей игры -
подойдет TWIN WORLD...[emoji16]
Ты меня не провоцируя, я могу и правду сказать.
Сайты есть например сайт исходников
А дизасмят идой разумеется, на данный момент наиболее удобный инструмент

А твинволд автору вообще не подходит
Так же как и остальные спиномозговики

ALKO
12.04.2019, 17:01
подойдет TWIN WORLD...
По правде говоря, непонятно, почему в этой игре познакоместно скроллится экран, да ещё и с таким убогим показателем фпс: 3 кадра в секунду, когда всё вокруг монохромное, да ещё и скроллится строго по горизонтали.

То ли дело Stormlord. Вот это реально шедеврище.

Но опять же, к чему упоминание рандомных игорок, если дизасмом никто маяться не станет?

Stl75
12.04.2019, 17:16
Jerri, дал бы ссылку на сайт исходников...???

jerri
12.04.2019, 17:22
Jerri, дал бы ссылку на сайт исходников...???http://opensourcezx.untergrund.net/

Dart Alver
12.04.2019, 18:41
Эх ! Были раньше бродилки, мочилки, стрелялки, гонялки , а теперь метродивании да мордоивании ))) - пока не загуглишь хрен поймёшь )))

Графика да, великолепная. ALKO отлично постарался. Хотя ...

Все игры заполнены на 99% чёрным цветом. Даже Диззи, который на всех платформах яркий, жизнерадостный, на горбатом опять же - черным-черно.
Я наоборот считаю что чёрный фон лучший вариант для спека, тогда цветовая палитра персонажей и декора более красочна, но это сугубо не более чем ИМХО )) .


Мне не нравится - идея игры...
Соболезную ((


Ты не учел...
Алиса - злобная сатанистка,
Точно-точно хорошенько поучи автора кто на самом деле его персонаж )))


ALKO, весна-лето может не самое удачное время для поиска единомышленников
Это точно, весна, огороды, ремонты, дачи. ))


Когда то очень хотелось сделать полноэкранный познакоместный скроллер бродилку, но не было графики, а у меня с этим очень туго. Надеюсь что кто-нибудь возьмется.
Класно получилось, даже параллакс в наличии. А какой антураж планировался если не секрет ?

OFFTOP:
ALKO посмотрел на твои андроАлисоскрины и так захотелось представить как чтото похожее могло бы смотреться на спеке, что не удержался и повырвиглазил чутка. ))
68745

ALKO
12.04.2019, 20:44
ALKO посмотрел на твои андроАлисоскрины и так захотелось представить как чтото похожее могло бы смотреться на спеке, что не удержался и повырвиглазил чутка. ))

А я же в изометрии раньше выкладывал скетч.
68746

- - - Updated - - -

На самом деле там и андроид версия менялась неоднократно.
https://vk.com/wall-145919754_412

- - - Updated - - -

https://media.giphy.com/media/Sv2rAZGdTx9CuGoj3y/giphy.gif

- - - Updated - - -

68747

68748

goodboy
12.04.2019, 20:46
так может вам Survivisection от санчеса посмотреть.
исходники он вроде выкладывал


https://youtu.be/6kGyI4lzHA8

ALKO
12.04.2019, 20:50
Были раньше бродилки, мочилки, стрелялки, гонялки , а теперь метродивании да мордоивании )))

Спек синхронно с нинтендой - первопроходец данного жанра. Причём Метроид, как Antiriad появились в один год (1986):
https://www.youtube.com/watch?v=FY_HkDHH8aI

- - - Updated - - -


так может вам Survivisection от санчеса посмотреть.

На спеке решено всё-таки платформер делать.

- - - Updated - - -

Survivisection крутая конверсия Chaos engine. И зубодробительная кислота от Fatal Snipe ничуть не хуже Jesper Kyd-овской колбасы на сеге.
Но без кемпстон-мауса и флоппи-привода, увы, не погонять. А у меня ни того, ни другого не прикручено :c

goodboy
12.04.2019, 21:27
На спеке решено всё-таки платформер делать.
так и делайте. возьмите часть движка.
у него там и редактор уровней был

NEO SPECTRUMAN
12.04.2019, 21:45
Но без кемпстон-мауса
клавиатуры хватает
пройти игру вполне возможно и с нее

ALKO
14.04.2019, 08:50
Забракованный вариант карты.

(в мануале к игре надо будет указать пользователям Горбатого, что настоятельно рекомендуется в настройках монитора понизить насыщенность до 20%-15%, иначе надолго закалённых глаз спектрумистов не хватит, а для неподготовленного пользователя и пары секунд хватит, чтоб схлопотать облучение "кислотой")

https://pp.userapi.com/c847218/v847218596/1e8c32/9MxVNgWuMoU.jpg

ALKO
29.04.2019, 22:38
https://media.giphy.com/media/Y4nX2cNnl6omb0QdUv/giphy.gif

CityAceE
30.04.2019, 02:30
Это концепт или уже кто-то начал движок делать?

ALKO
30.04.2019, 08:28
Это мой фейк на ПК. Но сделал с познакоместным скроллом, и познакоместным же позиционированием спрайта персонажа при разрешении 256*192. Если подзаморочиться можно и трушный клешинг персонажа с бэкграундом замутить.
Это просто для наглядности, как оно могло БЫ выглядеть.
Всё же писи-версию планирую переделать под более адекватную графику.

Lethargeek
30.04.2019, 12:34
для пц переключаемый стиль графики можно сделать, ultimate bruce lee как пример

ALKO
30.04.2019, 13:20
ultimate bruce lee как пример

Кха. Там нет скроллов. Там всё просто.
А у меня если делать выбор между познакоместным позиционированием, и адекватным попиксельным - гемор. Причём первое реализовать геморнее.

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

Переключаемую расцветку спрайтов сделать просто, не вмешиваясь в игровую логику. А шоб прям совсем труЪ выглядело, неотличимо от спека, это уже запара.

ALKO
30.04.2019, 16:53
Да и вообще я не видел среди инди-игар спековскую трушность. Да, были попытки закосов под спек. Но по псевдо-лимитам оно больше походит на MSX/Colecovision/Sega Mark III.

А шейдера атрибутного клешинга представлены в виде примитивных демок.

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

Dart Alver
30.04.2019, 19:32
Но сделал с познакоместным скроллом, и познакоместным же позиционированием спрайта персонажа при разрешении 256*192.
Сколько знакомест скролируешь в секунду ?

ALKO
30.04.2019, 19:40
Сложно сказать.
Учитывая то, что рендерер обновляется 60 кадров в секунду.
Смещаю на знакоместо каждые 4 кадра из них.. получается 15 знакомест в секунду... Вроде. Пробовал делать смещение при коэффициенте 6, тоже неплохо смотрится.
Но я уже переделал под плавный скролл.

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

На горбатом даже при его тормознутых возможностях знакоместный скролл крут.

Dart Alver
30.04.2019, 21:31
Смещаю на знакоместо каждые 4 кадра из них.. получается 15 знакомест в секунду... Вроде. Пробовал делать смещение при коэффициенте 6, тоже неплохо смотрится.
Если уложить цикл обработки в 5 прерываний, то выйдет 10 знакомест в секунду как при коэф.6, а если удастся впихнуть в 4 - то 12,5.
А кадры анимации меняются чаще чем скролинг знакоместа или одновременно с ним ? (По гифке не очень вижу) Если одновременно, то ...
Вообще опыта программирования игр или дем у меня ноль с большим минусом )) , просто тут размышлял как чисто теоретически можно замутить подобный скроллинг (код никакой не писал, пока другими делами занят). Если использовать способ смены экранов - перегонять экраны со смещением из основного в теневой и обратно, соответственно достраивая границы и перемещая персонажей? Некоторая проблема может быть при извлечении графики из сегментов в теневой экран, но что-то придумать-то наверно можно будет.

ALKO
30.04.2019, 23:02
А кадры анимации меняются чаще чем скролинг знакоместа или одновременно с ним ?
Они по своему независимому каунтеру меняются, с этим тоже можно побаловаться.
Тут я вообще хотел объявить клешингу войну. Сделать нетипичный, как для спека, графон. Не только тем, что чёрного цвета теперь не 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

krt17
01.05.2019, 00:00
На горбатом даже при его тормознутых возможностях знакоместный скролл крут.
Мои старые тесты напоминают что атрибутный скролл, как в гифке, будет занимать максимум пару кадров. А с таким балансом атрибутной заливки и еще меньше. Прям руки чешутся, лежит где-то в тестах несколько вариантов движка под такую графику, эх несколько бы лет назад...

ALKO
01.05.2019, 00:26
Мои старые тесты напоминают что атрибутный скролл, как в гифке, будет занимать максимум пару кадров. А с таким балансом атрибутной заливки и еще меньше.
Добавить туда обработку столкновений, ИИ хотя бы уровня марио, наверное уже будет не так шустро.

ALKO
16.05.2019, 22:42
Сеговская палитра:
https://vk.com/wall-145919754_516

ALKO
06.07.2019, 16:59
Да, это всамделишный скриншот из игры (с)

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:

Программиста-то нашёл?

ALKO
06.07.2019, 17:17
Программиста-то нашёл?

Да вроде не.
Та мне и не к спеху. Контента толком нет, как и времени для креатива.

ALKO
14.09.2019, 17:02
Титулка под Гигаскрин 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

Bolt
14.09.2019, 18:30
А работает на том железе, корпус которого на фото? Если да, то там тайминги совсем мрачные. Знаю, потому что у меня такой. На нём даже неПЗУшные загрузчики толком не работали, пришлось магнитофон дорабатывать.

Панцушот зачётный :)

ALKO
14.09.2019, 21:16
А работает на том железе, корпус которого на фото?
Да. На фото Ленинград-1. После ремонта и апгрейда до 128кб+AY. Раньше (до поломки) тайминги в нём были адекватнее. А ща и движок Savage бешено играет, и в Cobra force спрайты мерцают, и мультиколор кривой, и некоторые AY-движки от код-мастерс бешенные, и прочие траблы. Возможно, надо кондёрчик куда-то в RC-цепочку допаять. Да вот хз какой номинал. Та и вообще у меня гАлубая мечта - привести на нём всё в порядок, и привинтить DivIDE. Только там шина нестандартная ещё. Надо ZX-Bus допаивать с нормальной распиновкой. Если я займусь этим, то там все кишки будут наружу. Поэтому не решаюсь.

Bolt
14.09.2019, 21:33
Да. На фото Ленинград-1.
Эм... ну вообще на фото я вижу корпус "Парус"а.

ALKO
14.09.2019, 22:00
Эм... ну вообще на фото я вижу корпус "Парус"а.

Эм... внешность обманчива. А уж тем более когда речь о совко-клонах, то это парадигма.

Парус, кстати, тоже был. Но нечаянно сгорел.

ALKO
01.10.2019, 09:13
Уот, собственно, почему ТЕХНО-Олеся:
https://sun9-99.userapi.com/c855532/v855532412/10d77a/1s1GDDa_KsI.jpg

ZX_NOVOSIB
01.10.2019, 09:29
Уот, собственно, почему ТЕХНО-Олеся
По сюжету у Олесi есть антогонiст? Если да, то кто?

ALKO
01.10.2019, 09:39
По сюжету у Олесi есть антогонiст? Если да, то кто?

Я и так прилично заспойлерил. Ну да ладно...
Антагонист - птица (коршун). Как бы странно это ни звучало. Причём сама птица личных мотивов против Техно-Олеси не имеет. Да и рамса между ними не будет.
Такие дела.

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

Самого антагониста достаточно в интро и в аутро продемонстрировать скриптом. Не более.

ALKO
01.10.2019, 15:25
А ищё :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). И как следствие - нет толком инструментария для создания игор.

ALKO
02.10.2019, 23:21
Стадии апгрейда Олеси.

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
Зато сиськи выросли.

ALKO
03.10.2019, 06:34
первые 4 нормуль, но последняя - жуткая старушка в скафандре без нижней челюсти :v2_dizzy_aaaaa:

Тут уж кто как воспринимает монохромный лоурез пикселей.
Но те несколько квадратиков это типа часть шлема.

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

Мдя, чёт я не подумал о тех, кому может показаться это плечом, или чем-то ещё...

ALKO
11.10.2019, 00:20
https://media.giphy.com/media/lQIA89kDY2qXg6mQ33/giphy.gif

Andrew771
11.10.2019, 00:32
Паскаль животворящий))

ALKO
11.10.2019, 04:58
Паскаль животворящий))

Всё равно моего скилла хватит лишь на мини-аркадку, а не на масштабное полноценное приключение.
Так что вопрос с программиздом, умеющим все ранее упомянутые вещи, всё ещё в силе.

Andrew771
11.10.2019, 10:20
Ну движок графический ты почти сделал. А логику на пасквиле можно, если не сильно навороченная, тормозить не будет.

ZX_NOVOSIB
11.10.2019, 10:55
ALKO, сделай, чтобы при движении ввысь у героини слегка колени бы сгибались ) А сверху пусть птицы-враги пролетают, только они должны быстро пролетать, быстрей чем стены внизу. Птицы как бы должны мотивировать игрока возвращаться обратно вниз после преодолевания очередной стены.

ALKO
11.10.2019, 23:40
Ну движок графический ты почти сделал.

Вот только он пригоден разве что для анлимитед раннера, но никак не для платформера со скроллом по всем 4-ём направлениям, разнообразными тайлами, приоритетом наложения спрайтов бэкграунд-фореграунд и т.д. и т.п.
+ я не осилю 128к. А игра настолько масштабная должна быть, что там даже на 128к придётся подгружать локации.

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


А сверху пусть птицы-враги пролетают, только они должны быстро пролетать,
Врагов добавлю.
Но не птиц. Ибо тут события уже разворачиваются внутри космического корабля. Тут иная фауна.

Lethargeek
12.10.2019, 00:04
Вот только он пригоден разве что для анлимитед раннера, но никак не для платформера со скроллом по всем 4-ём направлениям, разнообразными тайлами, приоритетом наложения спрайтов бэкграунд-фореграунд и т.д. и т.п.
+ я не осилю 128к. А игра настолько масштабная должна быть, что там даже на 128к придётся подгружать локации.
видать, нету на масштабные проекты времени у людей, не то, что раньше, когда не хватало больше сценаристов или художников
я бы, может, взялся лет пять назад, на всём готовом-то, а сейчас не успеваю даже своё; разве что оптимизировать что-нибудь
ты бы на пц/андроид пилил пока, логику отлаживал игровую, дизайнил уровни, хоть на спектруме работы меньше будет потом

ZX_NOVOSIB
12.10.2019, 08:14
ты бы на пц/андроид пилил пока, логику отлаживал игровую, дизайнил уровни, хоть на спектруме работы меньше будет потом+100500

Может даже пару десятков баксов бы заработал )) А может и пару сотен :v2_dizzy_aaaaa:

Bolt
12.10.2019, 14:44
Человек прямо пишет "программировать не умею, ищу кодера", а ему "а ты на пц/андроид пока пили"... ПЦ какой-то.

Имею желание попробовать, но, боюсь, не осилю. И некогда, и опыта игрописания нет.

ZX_NOVOSIB
12.10.2019, 15:22
Человек прямо пишет "программировать не умею, ищу кодера", а ему "а ты на пц/андроид пока пили"... ПЦ какой-то.Ну ты не сравнивай "накодить чего-нибудь на спектрум" и накодить на ПЦ. Это две большие разницы, тем паче человек уже выкладывал кой какие свои "неспектрум"-поделки, значит как бы слегка могёт ))

Reobne
23.10.2019, 07:00
ALKO, Жаль времени у меня мало. Но пока что ежедневно, утром и вечером почту просматриваю. Так что пока ты не нашёл настоящего программиста, смело обращайся ко мне, пиши вопросы, шли снапшоты и тексты. Видео не шли, у меня интернет слабый.

ZX я хнаю очень хорошо. Прекрасно знаю как и что работает на уровне ассемблера. Умею и писать и отлаживать код. Cоображаю короче.


Всё сделал согласно ваших указаний по шаманству над interrupt-музоном.
Работает, но как и прежде - проседает фпс/темп музла именно при обработке клавы.
Жду когда ты пришлёшь мне снапшот с заедающей музыкой. Я его запущю, послушаю, нажму на F12(в EmulZWin-е) посмотрю что за режим прерываний. Проверю, чтобы нигде "DI" "EI" не было. Проверю, чтобы лишних вызовов Play не было, а только в прерывании. И так далее...
Если музон правильный, и ты всё сделал правильно, то стопроцентно должно работать. А если не работает, то будет видно почему, и это можно будет исправить. Ключевое слово 100%. Одна из причин, почему люди любят ZX, потому что его можно знать на 100%. Он легко охватывается мозгом целиком. Не на уровне симуляции, конечно. А на уровне уверенности, что во всём можно разобраться. То есть я всегда знаю, куда нужно копать.

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

Я так много написал, чтобы передать тебе уверенность, что твоя проблема со звуком НЕСОМНЕННО будет решена. Чтоб ты даже не сомневался. Я вижу, что ты достаточно настойчивый человек. И этого от тебя достаточно.

ALKO
23.10.2019, 14:03
Ща я на раб-оте. Вечером отправлю.

ALKO
28.10.2019, 20:35
Чпоок.
Ещё одна заставка к одному из гипотетических эпизодов не менее гипотетической игры.

https://sun9-47.userapi.com/c857132/v857132071/22f2c/RV9ww10z180.jpg

Ну и по традиции на кривом реале (всё ради него, родимого):
https://sun9-32.userapi.com/c857132/v857132071/22f3f/Ci-qdjY4qoQ.jpg

ALKO
02.11.2019, 21:50
Попытался добавить заставку гаме-овер.
Был приятно удивлён бешенной скоростью обновления экрана (прям как на денди)
Но неприятно то, что оно пашет не как планировалось.
https://media.giphy.com/media/ZFKdS5L4sWFHTAPwUn/giphy.gif

Bedazzle
03.11.2019, 09:59
Попытался добавить заставку гаме-овер.


Кто-то спрайты из других игр ворует, а ты, походу, геймовер украл. :D

ALKO
04.11.2019, 23:32
https://media.giphy.com/media/Qx5OuFPBks4OTeWCXL/giphy.gif

Bedazzle
05.11.2019, 00:04
https://media.giphy.com/media/Qx5OuFPBks4OTeWCXL/giphy.gif

Здорово выходит!
Может, концы капель двух видов сделать, и рандомно отображать, тогда нарушатся идеальные полукружки?

ALKO
05.11.2019, 00:16
Не думаю что это как-то разнообразит общий минимализм.

ALKO
01.12.2019, 22:36
Продолжаем рубрику развития Алиськи.
https://media.giphy.com/media/WOwLvEP1QU19za2tRi/giphy.gif

ALKO
23.12.2019, 01:38
Безграничная мосщтчь...
... ГОРБАТОГО

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!

ALKO
21.03.2020, 00:16
Сега-версия, если чё.
https://media.giphy.com/media/mEyRMlrIdEyo86lDYi/giphy.gif

Dwa83
25.06.2020, 17:14
Игрой кто-нибудь занялся уже? Хотел поинтересоваться возможностью параллельной
разработки разных версий. Что я имею ввиду? Я бы попробовал покодить игру, даже
если она уже в разработке, но опять же не уверен насчёт своего скилла, как многие говорят.
Хотябы посмотреть 114 пост, не уверен, что быстро смогу(и вообще смогу ли))).
Вобщем, если автор-дизайнер не против могу попробовать(от него не убудет). Я бы
время от времени списывался, скидывал то, что смог или не смог, никаких обязательств
по срокам)) больше времени на изучение определённых вещей(ссылка на "скилл мал")).
Если автор не против я попробую, но нужны определённые напутствия(можно в стиле упрощённого ТЗ, разбитого на маленькие порции).
Короче, автор говорит "сделай-ка вот это", я делаю, отсылаю ему или показываю результат(через неделю)))))
Просто няшный пиксельарт, и хотелось бы попробовать его использовать(все права, даже на код, будут автора))))
пс
Надо же резюме)) я в своё время ничего не сделал на спектруме, кодил аналог дюны на генсе,
и как мой друг вспоминает, там "что-то ездило собирало"(харвестеры). Но тогда знаний и
возможностей было мало, и закоженое на бумаге просто не очень влезало в память как листинг.
Я тогда уткнулся в просто большой листинг, который сжирал всю память, а транслирование по
частям не осилил, или забил. Писал очень медленные ПСЕВДО 3д на бейсике(танки), подробности
могу рассказать.

На постпространстве написал танчики. Причём задачей поставил написать PC транслятор, сделал, написал на нём танки, ну вроде играбельно))
https://viva-games.ru/game/tank-1990-128k
А больше на ZX ничего не сделал(что бы сохранилось)))

Dwa83
25.06.2020, 20:13
Сега-версия, если чё.
а на яче все олдёши))
а на 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 году :)

Dwa83
26.06.2020, 01:05
вот с этого места поподробнее
Просто спек появился у друга(мой помер), и я студентом был, уезжал на неделю, в свободное время весь код тупо в тетрадку писал. Когда приезжал, загружали генс, и я с бумаги листинг переписывал. В итоге листинг занимал много памяти, что на транслированный код не хватало памяти. Но была такая фишка в генсе в этом случае, код частями транслировать, и по частям выгружать. Но для меня тогда заморочек много было, или чего-то не понял, игра умерла(а помню там поиск пути и тд было, и даже прикреплённые цепочки юнитов друг за другом следили)).

Короче делать на любом асме на PC - в современном мире это норм. А потом уже готовый байткод на спек

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


RTS пишу,
А почему не хочешь всё на асме "ручками"? Или производительность такая же примерно?

Andrew771
26.06.2020, 21:49
А почему не хочешь всё на асме "ручками"? Или производительность такая же примерно?
1. Сейчас очень мало времени, чем в 90е-2000е, так что на асме проекты длятся пятилетками.
2. Мозговзрывные алгоритмы (типа поиска пути и проч.) на асме очень сложно писать и отлаживать. Даже корифеи Copperfeet и Alone Coder сначала писали на С, а потом переводили в асм. Сходу фиг напишешь. Код на асме в крупных проектах распухает, становится малоуправляемым. На ЯВУ же всё под контролем.
Я сейчас подумываю еще более убыстрить разработку, посматриваю потихоньку на различные RAD.

Dwa83
27.06.2020, 13:59
Мозговзрывные алгоритмы
Да на самом деле ничего мозговзрывного, если я правильно помню. Там в контексте формата хранения уровня я делал упрощённый алгоритм так сказать "трассировки" направления к цели. Добрался до препятствия, начинаешь обходить по незанятым местам, попутно сравнивая, отдаляешься ли ты от места. Если постоянно отдаляешься, то можно впихнуть определённую переменную "порог времени отдаления", чтоб алгоритм прекратился с результатом -путь не найден-. На помощь этому алгоритму могут прийти всякие ограничительные фишки, чтоб при постройках не было слишком много "труднообходимых полостей в строениях". Выкрутиться можно, и мне кажется даже средствами не сильно повлияющими на играбельность. Но всё надо тестить.
Кстати алгоритм работает не каждый фрейм, а только иногда, сохраняя путь. Быть может повторно при постройке новых зданий.
Я не помню применял ли я рекурсию при поиске по сетке карты, но тоже вариант в малых квадратах.

Код на асме в крупных проектах распухает, становится малоуправляемым
Вот мне кажется, что это только в КРУПНЫХ проектах, которые длятся пятилетками) Если пишешь сам и не так долго, у тебя запоминается, где что у тебя в коде, что делает, и даже сто с этим в будущем сделать или не сделать.

Даже корифеи Copperfeet и Alone Coder сначала писали на С, а потом переводили в асм. Сходу фиг напишешь.
Ну это-то да, но и проекты и люди разные. Если ты не ради "копеечку урвать", то просто попробуй сам написать игрулю на асме, потому, что мне кажется, что ты не пробовал, а с чужого опыта решил, так сказать решил учиться на чужих ошибках. Хотя может я ошибаюсь, и ты это по своему опыту)

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


Сейчас очень мало времени
Я поправлю: "Сейчас очень мало времени, которое я хотел бы выделить для данной темы, а не на те клёвые занятия, которые у меня появились после 9х-2000". Может и не правильно поправил :)

ALKO
27.06.2020, 15:55
а на яче все олдёши))
а на zxЕ все ол_ёШИ

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

Да причём тут сега

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



Ооо, сега эт цвитное...
Да и потом, в сеге всё тот же z80 на борту. Хоть и отвечает лишь за звуковое сопровождение.

Сам проект я худо-бедно развиваю (правда на раб-е в последнее время завал, поэтому творчество не столь продуктивно продвигается).

Что касается сотрудничества, можно заняться сайд-проектом (типа следующая глава истории), а то в текущем проекте всё не влезет в 40кб.


https://youtu.be/FZZ6cuMZ3Z8

На данный момент парюсь с управлением, мозго-секс тот ещё.

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

Уповаю на то, что Эндрю профиксит оптимизацию Пасцаля до начала Яндех-конкурса.

Andrew771
04.07.2020, 17:41
Уповаю на то, что Эндрю профиксит оптимизацию Пасцаля до начала Яндех-конкурса.
Фигово. Кажись, не получится оптимизация пока. Попробовал заменить арифметические и логические выражения на байт-код, целый день потратил, неудачно, жрёт всё равно места много. Других идей для оптимизации памяти пока нет.
Так что, ALKO, оптимизируй свой код на Паскале.
Рекомендации:
- размерности массивов делай кратными 2;
- если происходят частые вызовы ячеек массивов с одними и теми же индексами, то лучше сначала загонять в промежуточные переменные. Хоть и есть оптимизация по повторяющимся индексам массивов, но всё равно вручную про(и)думать через промежуточные переменные лучше;
- одинаковые или почти одинаковые куски кода лучше делать процедурами. Локальных переменных в процедурах нет, но можно делать через глобальные, перед вызовом процедур их заполнять.

Andrew771
04.07.2020, 23:08
Да, блин, всё-таки пока без гибрида Паскаль+Асм пока не обойтись, на Z это понимаю сейчас...

Dwa83
05.07.2020, 17:12
Так я и говорил, ну ладно не говорил, просто думал. А что за проблема с управлением?

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

Эндрю нужны теги ассемблерной вставки. Или они есть?

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

Ыыы потом окажется, что весь код из ассемблерных вставок:)

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

Я не про сотрудничество говорил. Я просто хотел поделать в свободное время. Всё что напишется, твоё[алко](если напишется). Так что если есть просто валяющиеся идеи..

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

Ну допустим параллельная история

Andrew771
05.07.2020, 20:26
Эндрю нужны теги ассемблерной вставки. Или они есть?
есть.


Ыыы потом окажется, что весь код из ассемблерных вставок
пока 80% Паскаля :)

Dwa83
18.08.2020, 20:54
Решил попробовать-потестить полноэкранный скроллинг. Сделал влоб 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

ALKO
19.08.2020, 22:16
не шибко шустрое чёт.

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


А что за проблема с управлением?
уже порешал.
Пока особых трудностей не возникает. Но всё боязно за память, ведь я ещё не приступал к левел-дизайну.

Dwa83
20.08.2020, 10:06
Ну да, не быстро, но это я первый набросок-пробу сделал, чтоб вообще задумку с форматом хранения уровня проверить. Вчера хотел раскидать прорисовку уровня по 5-7 страницам, для плавности и убирания артефактов скроллинга, но спать хотелось, оставил на сегодня. Придётся бросать из одной в другую страницы попеременно со сдвигом. Позже хотел попробовать переделать скролл на переброску через стек. Так же стоит изменить формат хранения уровня, для одинаковых спрайтов с разными атрибутами, и далее для добавления служебных флагов foreground-background и других. Но это постепенно по мере надобности. Ещё стандартные прерывания не отключены. Вообще не знаю получится ли что-нибудь применимое, но пока интересно. Я ещё раньше хотел попробовать, да решил подпиливать свой компиль-редактор, в котором мне проще писать.
ALKO, нескромный вопрос. Ты спрайтами не делишься для тестов? Запарно выковыривать со скринов)))

ALKO
20.08.2020, 12:49
Ты спрайтами не делишься для тестов?

Я планировал сунуться в конкурс, так что, пока не собираюсь публиковать спрайты.
А для теста можно и с любой другой игры стянуть.
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 обычный текстовый, можно открывать Блокнотом.

ALKO
21.08.2020, 00:43
Эхх... Red Alert 2 бы на спек. Вот где мощъ.
Z тоже хороша. Но никогда особо плотно не цепляла.

Dwa83
21.08.2020, 01:04
редактор уровней и спрайтов у тебя удобный!
Он пока сырой и местами багнутый, надо доделывать.

стратегию реального времени 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


Зато немного быстрее работает)

Dwa83
21.08.2020, 11:01
Да, блин, всё-таки пока без гибрида Паскаль+Асм пока не обойтись, на Z это понимаю сейчас...
Кстати, я тему не смотрел с паскалем, у тебя там подключение библиотек присутствует? Можно ведь напилить типа std_lib, всяких функций на асме для использования в местах типа "бутылочного горлышка", или так оно и есть?

ALKO
21.08.2020, 12:40
Использование асм-костылей присутствует.
В паскале на высоком уровне удобно условия городить, хотя асм по возможностям на проверку условий всë же продвинутее : как например проверка флагов, на асме можно отслеживать флаг знака, а в паскале всë беззнаковое. Проверка чëтности опять же, на асме достаточно следить за одним флагом, а тут надо производить лишние арифметические операции с остатком от деления. Процедурки вывода спрайтов взяты из "как написать игру", то есть познакоместное позиционирование без маски, поэтому для попиксельного вывода нужно пихать процедурки spr_lib. Хотя маску можно организовать и штатными процедурами, так как есть AND OR XOR, но при познакоместной позиции толку от этого мало.

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

Подробно не смотрел как там операции деления умножения транслируются. Но вот на асме если быстро поделить или умножить на 2 - достаточно выполнить побитовый сдвиг. Тут побитовых операций нет и в помине. Так что опять же, если нужно что-то выполнять с битами - асм-костыль. Все асм костыли вызываются из тела паскалевской программы (которая преобразуется в асм код с соответствующими call (addr))

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

Ну а ещë паскаль удобен организацией циклов. Не надо каждый раз push-pop-ить счëтчик вокруг того или иного цикла. Да и работа с массивами упрощается на порядок.

Dwa83
21.08.2020, 14:18
И всё-таки ты переделаешь игру полностью на асм?:) А вообще, ты искал программиста, но сам помнишь некоторые такие вещи, которыми почти никогда не пользуются)
Типа узкоспециализированные флаги чётности, которые не особо нужныю
Погоди-погоди.. Ттак паскаль Andrew771 - тхис из интерпритатор, а не транслятор??? Который в памяти сидит, и строки пассаля тоже? Если нет, то всё одно - условия превращаются в проверку флагов, только более изощрённо завёрнутую друг в друга. Потому, даже на современных компах пытаются "горлышки" писать на асме. Типа языки высокого уровня создают код, хуже чем асм. В некоторых новых компиляторах нифига(я про с++). Язык типа алковского паскаля, он наверное расчитан НЕ на супердинамичные игры(но просто чтобы быстро и легко их разрабатывать).

ALKO
21.08.2020, 14:39
Ноуп, паскаль именно транслятор. Он конвертирует паскалевский код в набор асм процедурок, которые уже копи-пастишь в асм-компиль.

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


И всё-таки ты переделаешь игру полностью на асм?
На данный момент бОльшая часть кода у меня на паскале сделана. И на удивление, всë довольно бодро шевелится. Для экшона скорости хватает. Хотя поначалу я вообще скептически был настроен, и думал ограничиться лишь квестом.

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

Конечно на голом асме было бы, наверное, раза в два быстрее. Если ещë со всякими оптимизациями через стек то ищë быстрее, но я до такого не дорос. так что получается то что получается. Всяко лучше чем 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

ALKO
22.08.2020, 00:14
Andrew771, глянул демку. Дааа.. скролл тут слабое место.
Раз уж он дискретный, то почему бы не разукрасить графику, живее бы смотрелось чем чёрно-жёлтый монохром.
Шаг 16px брррр :v2_sick:

Ну и самое главное - тормозно. Ладно ЖД магнат пошаговое, там можно стерпеть, но в РТС такие лаги не приветствуются.

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

ах да, как и в ЖД-магнате - нет диагонального скролла. В РТС это тоже куда важнее. По гипотенузе быстрее можно добраться до нужной точки, нежели по двум катетам.

Dwa83
22.08.2020, 16:50
Жалко конечно, что 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

ALKO
22.08.2020, 17:10
Эт надо сгенеренный паскалем код перелопатить от и до, и раскидать ф-ции по банкам.
Это муторное занятие даже для профи. А мой скилл чуть ниже самого нубского.

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

Эндрю 48к прогер, и его СДК ориентирована на 48к.
Для 128к нужны очередные костыли.

Dwa83
22.08.2020, 18:47
Есть идея засунуть масштабную метроидванию в ZX 128k.
Или планы поменялись за это время? Или таки костылями?

ALKO
22.08.2020, 19:10
Или планы поменялись за это время? Или таки костылями?

То была мысля что будем работать в команде. Я чисто за визуальную часть отвечаю и за звуковое сопровождение. А прогер за всё остальное.

Но так как я щас пилю всё сам, то программерская часть сильно упрощена, и поэтому былых амбиций не вывезу.

Dwa83
22.08.2020, 20:06
Жаль

ZX_NOVOSIB
22.08.2020, 20:12
Странно что прогер не нашелся даже на конкурс от яндекса, там же бабло. По идее должен найтись прогер, а его нет. Прямо мистика какая-то.

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

ALKO, может на тебя порчу наслали?

ALKO
22.08.2020, 21:59
Не беда. Жахну гаму в рамках своих возможностей. Не столь эпичную, как планировалось, но всë же.

NEO SPECTRUMAN
22.08.2020, 23:18
Прямо мистика какая-то.
ну прогер должен еще выявить желание работать с ALKO
ну или его хотя бы должны вдохновлять лысыестриженные женщины
которые тут местами мелькают и которые весьма на любителя...

ALKO
23.08.2020, 01:48
лысыестриженные женщины
которые тут местами мелькают и которые весьма на любителя...

Непонятно, что именно имелось ввиду...

NEO SPECTRUMAN
23.08.2020, 01:53
Непонятно, что именно имелось ввиду...
те кто не особо следить за этой темой
думают что пилитсо нечто такое
https://sun9-71.userapi.com/c853420/v853420914/ec41c/OA0A0b2RX6I.jpg


или ужо пилитсо что то другое?

ALKO
23.08.2020, 07:18
или ужо пилитсо что то другое?

Да, ведь программерская часть сильно упрощена, то и платформинг тоже далеко не такой, как на картинке.
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
но спрайты ГГ-ни и анимация просто ахтунх...

Да отличные там спрайты и анимация, просто на вкус и цвет все фломастеры разные ))


Эт надо сгенеренный паскалем код перелопатить от и до, и раскидать ф-ции по банкам.

Ну можно ещё использовать тупо как диск для подгрузки/обмена данных для разных там уровней или локаций.

ALKO
23.08.2020, 18:00
тупо как диск для подгрузки/обмена данных
тож думал об этом.
Но пока не рискую возиться с этим. Там жеж вирт. экран расположен в верхних адресах ещё. И надо чтоб он как-то ужился с данными.

Dart Alver
23.08.2020, 18:59
Но пока не рискую возиться с этим. Там жеж вирт. экран расположен в верхних адресах ещё. И надо чтоб он как-то ужился с данными.
Не понял ты о втором экране или о основном, или о буфере каком ?

В любом случае:
0-я страница скорее всего будет на постоянной основе в карте памяти процессора,
5-я и 2-я страницы выпадают из списка использования, 5-я всегда проецируется в #4000-#7FFF а 2-я в #8000-#BFFF
7-я страница хранит второй экран, если не используется то пофиг, иначе не использовать для данных экранную область в #C000, а то что выше #DB00 можно юзать как угодно.
Ну и хотя бы одну страничку желательно на музычку. ))

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

А... туплю... дошло - вирт. экран от паскаля по #E000 ))
Ну так он будет на постоянке в 0-й например странице. А на момент подгрузки страница меняется, закидываются данные (ты же не в вирт.экран их грузить будешь),
снова выставляется 0-я с вирт. экраном и всё )))

Dwa83
23.08.2020, 19:21
Не понял ты о втором экране или о основном, или о буфере каком ?
Он на паскале пишет, у него нет возможности юзать страницы без костылей.

Прилепил вывод спрайтов в пробном движке, надо бы коллизии с окружением попробовать, Есть странная идея знакоместо=пиксель, миниэкран такой в 90 байт.

но спрайты ГГ-ни и анимация просто ахтунх...
Тоже соглашусь с тем, что норм спрайты и анимация.

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


страница меняется,
Так там, я так понял, нет функционала смены страниц. Только если асм вставками.

Dart Alver
23.08.2020, 19:31
Он на паскале пишет, у него нет возможности юзать страницы без костылей.
Да не врубился сразу что у паскаля есть буфер по #E000. Но собственно о костылях то и речь.



Так там, я так понял, нет функционала смены страниц. Только если асм вставками.

А куда ж без них родимых ? )))
Тут собственно вижу пока 3 наиболее важных момента с организацией памяти.
1 - процедуры смены страниц и подгрузок/обменов должны быть расположены ниже #C000. Если паскаль занимает место выше, то может выставлять их перед началом паскалевской проги. Насколько понял у этого паскаля есть выбор адреса компиляции.
2 - момент посложнее - вектор прерываний для музыки и прочего если будет, его надо впихнуть в области #8000-#BE01. Опять же всё зависит от того откуда растёт паскаль ))
3 - область куда производится подгрузка из страниц. Если она ниже #C000, то можно обойтись даже простым LDIRом после смены страницы, если выше или задевает, то нужно помутить с буфером и перещёлкиваниями страниц.

Dwa83
23.08.2020, 19:55
Так, насколько я понял, он ничего не занимает. Он на ПК) И выдаёт асм-код, который компилишь в кросс-асме)

Представляю свой готовый кросс-компилятор
Алко, мне кажется, не достаёт изначального функционала указания страницы куска кода, чтоб без костылей. Там всё просто. Есть основной "поток". Далее любой код с указанием страницы компилится относительно C000. Даже отдельные "org" для каждой страницы можно сделать, только нафиг.

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

А, я сразу не понял, ты об этом и говорил, но написаный выше c000 код только один, и абсолютные адреса уже расставлены, и никак не привязать написанный далее код к этой же странице.

Dart Alver
23.08.2020, 20:42
Так, насколько я понял, он ничего не занимает. Он на ПК) И выдаёт асм-код, который компилишь в кросс-асме)
Занимает место код созданный транслятором. И после каждого транслирования в асм править ручками заколебёшься. Проще батник оформить чтоб последовательно собирал. Хотя на конечном этапе наверно музыку ручками придётся впихивать. Главное место оставить ))

Алко, мне кажется, не достаёт изначального функционала указания страницы куска кода, чтоб без костылей. Там всё просто. Есть основной "поток". Далее любой код с указанием страницы компилится относительно C000. Даже отдельные "org" для каждой страницы можно сделать, только нафиг.
Ну это если Andrew771 сделает. А если нет, то костыли или забить.

А, я сразу не понял, ты об этом и говорил, но написаный выше c000 код только один, и абсолютные адреса уже расставлены, и никак не привязать написанный далее код к этой же странице.
Код нет, но данные (карты уровней, спрайты, скрины ...) можно попытаться подгружать в рабочую память.

ALKO
23.08.2020, 21:13
Не понял ты о втором экране или о основном, или о буфере каком ?
А у меня виртуальный буфер расположен там, где и второй экран 128к машыны (а именно 57344). То есть, если переключать банки, то надо в каждый банк рисовать очередной кадр.
Его конечно можно сместить, но надо поменять ряд переменных, + каждый раз менять константы после компиляции паскаля.
Кароче, ну его, этот 128к. Мне бы с 48к совладать для начала.

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

Dwa83, демка марево - :v2_dizzy_vodka2: супир!
Только марево уже есть, и не один.
А вот Wonder Boy (Islander) - монохромное доисторическое наспех сделанное убожество. Его бы ремастернуть. Марево слишком уж попсовая дичь. + от нинтенды можно по шапке получить (как произошло с портом на C64).

NEO SPECTRUMAN
23.08.2020, 21:16
Мне бы с 48к совладать для начала.
дык со 128-м проще совладеть для начала
тк больше помещаитсо

ALKO
23.08.2020, 21:18
дык со 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

ALKO
23.08.2020, 21:56
ате не кажется что так менее вырвиглазно?
Графику можно профиксить, просто сам факт того, что уже на шаг ближе к старшему брату - MSX.


https://youtu.be/emcuGLf_Xy8

И да, BRIGHT 1 -всегда БОЛЕЕ вырвиглазно. Ибо на донди и других более-менее адекватных системах RGB значения практически никогда не принимают 100% интенсивности.

NEO SPECTRUMAN
23.08.2020, 21:58
И да, BRIGHT 1 -всегда БОЛЕЕ вырвиглазно. Ибо на донди и других более-менее адекватных системах RGB значения практически никогда не принимают 100% интенсивности.
ну это на ваших кривых клонах без людского видеовыхода

воткнуть фирменный спектрум по композиту
и цвета уже не такие насыщенные и кодерские...

ALKO
23.08.2020, 22:00
воткнуть фирменный спектрум по композиту

Много ли на территории пост-совка владельцев фирменных спеков? Или в стотысячный раз прогибаться под Запод ?

NEO SPECTRUMAN
23.08.2020, 22:06
не на тюнере все равно кодерски кисловато
https://jpegshare.net/images/92/fd/92fda174bb426c6cd5cf19084fa18f85.png
на теплом и ламповом телеке цевта по мягче

в принципе при желании насыщеносте можно и прикрутить...

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


Много ли на территории пост-совка владельцев фирменных спеков?
а много кто пользуется ими а не эмулятором?

ALKO
23.08.2020, 22:09
а много кто пользуется ими а не эмулятором?
ТЕМ БОЛЕЕ!
В эбуляторе безо всяких наводок ещё кислотнее! Так что там 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

ALKO
23.08.2020, 22:20
вот специально для фанатиков брайт 0
Уже более-менее, только зелёный соседствует с галубым, из-за чего теряется контрастность кустиков. Так что первоначальный варик (с синим фоном) - золотая середина в случае с марево. Да и в версии MSX был выбран синий цвет (хоть он там и выцвевший, а не кислотный).

Но это уже скатились во флейм окончательно...

NEO SPECTRUMAN
23.08.2020, 22:24
(с синим фоном)
ну то есть для тебе синий брайт 0 фон не вырвиглазен? :v2_dizzy_facepalm:
а кустик прям сливается?

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


только зелёный соседствует с галубым,
видимо надо еще прозрачный для атрибутов спрайт
поверх белого и красного знакоместа
как это некоторые... ...зачем то делают

ALKO
23.08.2020, 22:29
ну то есть для тебе синий брайт 0 фон не вырвиглазен? :v2_dizzy_facepalm:
а кустик прям сливается?


ОТНОСИТЕЛЬНО не вырвиглазен. А так - любая графика на спеке вырвиглазна, канешн, по нынешним-то меркам.

Dart Alver
23.08.2020, 22:46
А у меня виртуальный буфер расположен там, где и второй экран 128к машыны (а именно 57344).
Второй экран расположен не там, а по адресу 49152 в странице номер 7.


То есть, если переключать банки, то надо в каждый банк рисовать очередной кадр.
Не понял логики. Зачем, если переключил банки перекинул уровень, переключил обратно. Пока перекидывается уровень - игра не работает, виртуальный буфер не обслуживается.
Впрочем ладно, ну его - значит ну его ))

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


А так - любая графика на спеке вырвиглазна, канешн, по нынешним-то меркам
Да в былые времена любая вырвиглазность регулировалась ручками яркости/контрастности телевизоров. А теперь чтоб на мониторе эту фигню настроить (да за ради одного эмуля) да ну его ... ))

ALKO
23.08.2020, 22:59
Второй экран расположен не там, а по адресу 49152 в странице номер 7. и АЖ до самых 65536, хоть и видно из них на экране лишь 7кб. То есть задевает вирт. экран.
Конечно в случае со вторым экраном и вирт. экран не нужен, как и куча LDIRов. Но тогда основная программа не должна переползать за границу 49152. а на данный момент точка кипения для меня те заветные 57344.

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


Да в былые времена любая вырвиглазность регулировалась ручками яркости/контрастности телевизоров.
Я на реале с RGB конвертером насыщенность убавил до 15ти процентов - и норм. ПОЧТИ MSX.

Dart Alver
23.08.2020, 23:24
и АЖ до самых 65536, хоть и видно из них на экране лишь 7кб. То есть задевает вирт. экран.
Конечно в случае со вторым экраном и вирт. экран не нужен, как и куча LDIRов. Но тогда основная программа не должна переползать за границу 49152. а на данный момент точка кипения для меня те заветные 57344.
Мы видимо на разных языках общаемся, говорим о разных вещах и друг-друга не понимаем ))

ALKO
24.08.2020, 01:01
Что касается переброски уровня. Он забит массивом в паскале.
Если закидывать в банки, надо уже скомпиленный ASM исходник деребанить. Сложновато.
Щас у меня локация состоит из 2д массива - 256 байт в ширину, от 1 до 256 слоëв в глубину (типа как в игре Platoon, ну или в Буратине, если угодно). + на каждый слой по 256 байт скриптов в ширину, в дальнейшем думаю объединить, чтоб в одном байте было как описание скрипта, так и описание объекта локации, если получится.
Итого получается, что если локация будет 16 слоëв в глубину, например, то (256+256)*16= 8кб. Многовато выходит. Если порешаю дела с массивом скриптов (в них же, кстати, и расположение врагов задаëтся), то же самое уже будет весить 4кб.

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

А вот сколько кб весит графика на данный момент, ещë не считал.

NEO SPECTRUMAN
24.08.2020, 01:26
256 байт в ширину
ну для асма
кратность 256-ти очень хорошо ложится на память

ALKO
24.08.2020, 01:36
Ложится-то ложится, я ещë не смотрел каким образом преобразованны переменные массивов из паскаля в асм.
Их надо вручную вычленять, и помещать в банки.

Dwa83
24.08.2020, 08:19
ате не кажется что так менее вырвиглазно?
Кажется, дак на пробу делал. Проблема-то в чём, делов на 5 минут)

https://youtu.be/ckn2p3EBBfs

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


А вот Wonder Boy (Islander) - монохромное доисторическое наспех сделанное убожество. Его бы ремастернуть. Марево слишком уж попсовая дичь. + от нинтенды можно по шапке получить (как произошло с портом на C64).
Ну для спека технически очень даже ничего. Тоже скилуха недюженая нужна. Вот разукрасить бы - это да.
А насчёт от нинтенды получить, так я ведь не собираюсь продавать под их брендом. И гомодор в пиндосии намного более популярен был в отличае от спека(имхо). Да и в конечном итоге это возможно будет и не марио, если вообще будет))

ALKO
24.08.2020, 09:23
так я ведь не собираюсь продавать под их брендом. дыг, и версия Гомнодора 64 тоже распространялась бесплатно, в итоге файло-хостинги прикрыли.

goodboy
24.08.2020, 09:34
дыг, и версия Гомнодора 64 тоже распространялась бесплатно, в итоге файло-хостинги прикрыли.

что за чушь ?
https://www.lemon64.com/forum/viewtopic.php?p=898195#898195
скорее срок хранения файлов истёк, но вторая ссылка вполне живая

ALKO
24.08.2020, 10:04
Значит это жëлтая прэсса?
https://www.extremetech.com/gaming/290225-nintendo-forces-removal-of-commodore-64-super-mario-port-7-years-in-the-making

Dwa83
24.08.2020, 17:10
дыг, и версия Гомнодора 64 тоже распространялась бесплатно
Но это почти точная копия

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

Блджад ковида на форуме поймал

шутко

goodboy
24.08.2020, 18:38
Значит это жëлтая прэсса?
конечно. только слухи. где в этой статье текст от nintendo ???

ALKO
24.08.2020, 21:22
где в этой статье текст от nintendo ???
Есть куча других статей ссылающихся на эту переписку.
https://www.commodorecomputerclub.com/super-mario-bros-64-dmca-takedown-notice/

goodboy
24.08.2020, 23:04
понятно. похоже это только американцы пересрали, на других сайтах эта игра вполне доступна

Dwa83
26.08.2020, 16:00
Эндрю, такой вопрос, не в тему пишу, потому как тут начали говорить.
Первое, малозначимое нашёл в функции

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). В ней сложно было разобраться без мануалов, но когда разобрались, столько часов жизни куда-то пропало)

ALKO
26.08.2020, 17:35
Всегда удивляло, как в Херцог Цвайне реализован сплит-скрин.
Это в гоночках экран разделëн горизонтально, там понятно, что один и тот же слой быстро скроллится по прерыванию строчной развëртки. А вот в Герцоге, видать, через так называемый 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-м, загорелся писать с новой силой.

ALKO
28.08.2020, 00:17
А вот сколько кб весит графика на данный момент, ещë не считал.

"Щитать-то вы умеете? Вот и пощитайте" (с) В.В. Питун

Пощитал. Пока что под 6 кб графона, но прибавится ещё, так как часть спрайтов пока что не задействовал.
У меня в запасе 10кб осталось. Как раз на отметке ~47кб, ещё чуть-чуть и перевалит за ту область, где у 128к машыны я бы листал банки.
Около 4-ёх кб уйдёт на массивы карты. Сколько сожрёт игровая лохика ещё неизвестно.
Если совсем уж придавит на клапан, наверное надо будет переползать на 128к.

Dwa83
28.08.2020, 08:33
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

ALKO
28.08.2020, 15:23
Имеет ли смысл выполнять disable interrupts перед циклом рендеринга массива спрайтов? Или на скорости оно особо не отразится?

newart
28.08.2020, 18:02
Имеет ли смысл выполнять disable interrupts перед циклом рендеринга массива спрайтов? Или на скорости оно особо не отразится?
А спрайты выводятся с участием стека?

Отразится на музыке и опросе клавиатуры, они же на прерываниях висят.

ALKO
28.08.2020, 18:11
А вот на счëт стека, надо у эндрю узнать, как там его паскаль юзает.
Музыки нет (хотелось бы влепить, но памяти дефицит).
Клаву опрашиваю за пределами цикла рендеринга. Так что там мог бы EI выполнить.

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

Ламерский вопрос, но всë же.. А как стек связан с прерываниями? На него же отдельный регистр SP ссылается, как на адрес ОЗУ.

NEO SPECTRUMAN
28.08.2020, 18:33
Ламерский вопрос, но всë же.. А как стек связан с прерываниями? На него же отдельный регистр SP ссылается, как на адрес ОЗУ.
:v2_dizzy_facepalm:
Ну на него ложится адрес возврата из прерывания...
и как правило это на всех процах

бросай уже свои паскали и пиши на асме

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

кстате пропуск прерывания с пуз плеером
звучит неймоверно ужасно
тк музыка спотыкается и темп плавает...
тоестть запрещая на время прерывания
ты должын быть на 100% уверен что прерывание не будет пропущено когда надо
(тк если 30-60 тактов прерывания ты пропустил
то все только ждать новое в следующем фрейме)

ну и их вполне можно запрещать сразу после прерывания
как минимум 50К тактов можно гуляться в рисование стеком итд

например так можно юзать стек для очистки экранного буфера
и чистить 6К буфер за 34К тактов

ALKO
28.08.2020, 18:43
бросай уже свои паскали и пиши на асме

И вместо адвентюры/квеста получится змейка, а то и ещë чего примитивнее.

NEO SPECTRUMAN
28.08.2020, 18:45
И вместо адвентюры/квеста получится змейка, а то и ещë чего примитивнее.
по моему с точностью на оборот
пока не увидел на спектруме накаженного на сях
превосходящее уровень змейки

даже на 14МГц-ных пентевах
эти ваши яву продолжают сосать

это на ПыЦе можно писать на бейсиках
на спектруме это не прокатывает

а при этом ты пытаешься запилить динамическую игру со скроленгами уровня донди...
может для какой нибудь пошаговой стратегии это бы конечно и прокатило но не...

ALKO
28.08.2020, 18:48
Та дело не в скорости выполнения кода машыной, а в скорости написания кода быдлокодером.

NEO SPECTRUMAN
28.08.2020, 18:50
Та дело не в скорости выполнения кода машыной, а в скорости написания кода быдлокодером.
если гнаться за скоростью
то можно вообще делать очередное уг на агд
почему нет?

ALKO
28.08.2020, 18:52
может для какой нибудь пошаговой стратегии это бы конечно и прокатило но не.
Ну, пока события в моей демке отнюдь не пошаговые. Есть на спеке игры куда пошаговее, при этом заявлены как экшн. Да и написаны были явно не на ЯВУ, в дремучие-то времена

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



то можно вообще делать очередное уг на агд


Можно. А можно и не на агд. Почему нет?

NEO SPECTRUMAN
28.08.2020, 19:25
Почему нет?
ну например (судя по закинутой gif-ке)
https://jpegshare.net/images/bb/27/bb27261af6456c728753f3c8e1a02997.gif
к сечению с лучом я конечно не придираюсь
тк я не безумный фанатек фреймовасте как некоторые...

но вот постоянное расколбашивание спрайтов
и постоянное отставание атрибутов от пискелей
тут имеет место быть

ALKO
28.08.2020, 19:33
например так можно юзать стек для очистки экранного буфера
и чистить 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:

ALKO
28.08.2020, 19:50
напоминает унылые думы

По-моему, для тебя вообще нет ничего НЕунылого. Будь дум объективно унылым, то он давно бы канул в лету, а не мусолился переизданиями/перезагрузками, моддерами, хакерами, TASерами и прочими нëрдами, гиками, задротами.

NEO SPECTRUMAN
28.08.2020, 19:52
Что касается откушенной ноги на этой фазе
не
учитывая средства разработки
на подобное я могу закрыть глаза
https://jpegshare.net/images/a5/23/a523b0dc74b468a114ce824b36297f9e.gif

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


прочими нëрдами, гиками, задротами.
ну до
обычно же пипл хавает :v2_dizzy_facepalm:

некоторые и на принцаперсии дрочат
хотя ***** *****м...
зато с анимацией срисованной с человеков
и с тормозным путем в 3 метра с заносами при попытке сделать шаг на 1 пиксель вперед :v2_dizzy_facepalm:
да и жутко латентным управлением

ALKO
28.08.2020, 19:57
не
учитываю средства разработки
на подобное я могу закрыть глаза
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:
а так нет желания перечислять...

ALKO
28.08.2020, 20:19
однозначно батлтодс (2-й) на донди

Быдлотоадс и ДД да, хорош, хоть и нет реиграбельности. Но попридираться в твоëм стиле там есть к чему.
В частности к балансу, жабы на фоне гей-зеков кажутся калеками, особенно на третьем уровне. (З.ы. но дондя, это не спек. Если придираться в твоëм стиле к любой, даже самой топовой игре на спек, будь то REX или Илита, то для этого следует создавать отдельную тему).

NEO SPECTRUMAN
28.08.2020, 20:26
жабы на фоне гей-зеков кажутся калеками,
только пушо не умеют цеплятся к стене?
конечно человеки там более ловкие...
и в сравнении с не играбельным дальше 3-го уровня оригиналом
тут все вполне норм
можно придиратсо только к сюжету :)

а так на спектруме мне например доставляет че нить типа starquake
хотя абсолютно не проходимо (хотя я проходил hamte damte)
...но это такие игры на любителя...

ALKO
28.08.2020, 20:31
только пушо не умеют цеплятся к стене?


Ни толька. Ещë умеют прыгать по пальцам крадущихся.
Ещë на третьем левеле где набор прессов, они без особых усилий могут разбить шарик с неуязвимостью, тогда как жаба медленно замахивается и получает па щям. Ещë вертушкою на канате гей-зеки набивают комбы, и следовательно - больше очков, быстрее зарабатывают на новую жызнь.
На втором левеле все бонусы гей-зек могëт разбить в прыжке. А жабе надо ползать по решëтка по полчаса. Робо-мануса набивать в воздухе проще, чем жабою.

NEO SPECTRUMAN
28.08.2020, 20:35
быстрее зарабатывают на новую жызнь.
по прошествию многих лет тренировок
оно проходится до последниго уровня токо так
шадовбосс мочится вообще на изи (когда оставляешь 2 висячие цепи в конце)
конечно финал бос таки жесткий

из спектрумовских еще вспомнил
http://spectrum4ever.org/files/screens/x1/838/73.png

ALKO
28.08.2020, 20:38
по прошествию многих лет тренировок
оно проходится до последниго уровня токо так
шадовбосс мочится вообще на изи (когда оставляешь 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

ALKO
28.08.2020, 20:53
А я придираюсь к тому что заливка атрибутами идет через полтора фрейма после того как отрисовались пиксели
чего допускать нельзя

А вот, кстати, вслед за 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К
но сама процедура вывода будет бОльшой

ALKO
28.08.2020, 21:11
ты кидаешь каждую строку свои ldir-ом
из буфера?

просто сделай чередование
8 строка пикселей
1 строка атрибутов

и весь разсинхрон помножитсо на 0,1

Хм...а это мысль...




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

Ну, я не программизд. Так что понимаю сказанное теоретико-гипотетически. На практике такое проворачивать не шарю.

Dwa83
29.08.2020, 15:15
Новая попытка скролл-движка, прилепил коллизии с уровнем. Добавил bright и flash(используется как флаг, но и с bright можно так поступить).Вроде писал всё "влоб" без оптимизаций, и даже не сильно медленнее стало.
Из управления работают только W - прыжок, и D - вправо
Так же нет проверки на проваливание в яму, персонаж упадёт, проломит всю область атрибутов, и выпадет сверху))

ALKO
29.08.2020, 16:08
Пушычка :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
Чёт похоже не осилю, тут дофига чего не понятного
забей, в общем.)) Я буду сам ковырять дальше. Извини, что отвлёк.



А вот на счëт стека, надо у эндрю узнать, как там его паскаль юзает
стек для вывода спрайтов не используется. Да и вообще, нигде он не используется для вывода на экран.

ALKO
29.08.2020, 20:35
и 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
Наиболее затратен во всей этой лабуде именно расчёт каждого знакоместа отдельно взятого спрайта

А зачем для каждого знакоместа полный расчёт делать?

ALKO
30.08.2020, 01:36
ну и написано оно на неизвестно чем
на асме...

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


А зачем для каждого знакоместа полный расчёт делать?
Все вопросы к автору этой книги.
#ЯЖНЕПРОГРАММИСТ
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

ALKO
30.08.2020, 01:42
а чего нельзя это все таблично?
(см. хештег выше.)

Конечно можно воспользоваться ситуацией, что часть спрайтов рендерится строго на одной трети. Но я нифига не шарю в таких делах.

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 или бы заюзал стек :)

Dwa83
30.08.2020, 08:15
боже какая жесть
а чего нельзя это все таблично?
Там в книжке, насколько я помню, способ самый универсальный(спрайты любой конфигурации) и соответственно очень далеко не самый быстрый, потому как книжка для совсем новичка.


Конечно можно воспользоваться ситуацией, что часть спрайтов рендерится строго на одной трети.
У тебя, насколько я вижу, спрайты прямоугольные, потому можно их хранить и рисовать по линиям, а не по знакоместам(зонтики с рукой всякие отдельными спрайтами) и выводить по линиям очень легко по 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

ALKO
30.08.2020, 09:52
У тебя, насколько я вижу, спрайты прямоугольные
Не все, но большинство.
Есть отличные от прямоугольников.
Поначалу я хотел воспользоваться процедуркой вывода прямоугольных имеджей для отдельно взятых спрайтов, но в ней не было проверки границ экрана, из-за чего спрайт, вылезший за границы, коцал дальнейшие адреса, вплоть до атрибутной области.

NEO SPECTRUMAN
30.08.2020, 11:00
потому как книжка для совсем новичка.
да как раз понять тот поток сознания будет на порядок сложней
чем понять как работает табличный вариант

Dwa83
30.08.2020, 11:42
сам не применял именно в таком виде
И нафиг не надо ни в коем случае. Получается примерно 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 тактов на байт






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


Можешь ссылку дать?
не могу
не одной ссылки у меня под рукой нет

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

поправил смороженный бред

ALKO
31.08.2020, 00:04
Dwa83, когда ждать следующий апдейт движка Марио ?
Думаю, расчехлять ли щас реал для теста, иль подождать. А то влом лишний раз с кишками возиться, а на эбуляторе #не_лампава

Dwa83
31.08.2020, 05:36
Я пока не решил чем дальше заняться. И не понятно Марио ли делать. Так же не понятно стоит ли заморачиваться инертным движением персонажа. Или подумать над обратным скроллинга ом. Хз
Да и времени щас только вечером будет.

ALKO
31.08.2020, 08:00
SMB уже есть. Да и это попса.
Вот bram stokers Dracula на донди/ мастер систем - крутотень. Такого не хватает на спеке. Но там сложный движок. Скролл работает по всем 8ми направлениям, есть наклонные платформы. На спеке, разумеется, всë это можно было бы упростить, как всегда.
А ещë в дракуле два канала на музыку, один на эффекты. Что очень на руку трëхколосому AY.

ALKO
01.09.2020, 00:14
Процедура очистки, кстати.
На ней можно выиграть тактов в оптимизации?

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-ах

Dwa83
02.09.2020, 15:35
ну и для сравнения
если включить режим гулять так гулять

Код:

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 с ходу ниасилит
в придачу это еще и намешано с *****сямипаскалями

а так если бы все стековые операции проводить сразу после прихода инта
то вполне до
можно было бы запрещать прерывания
все чистить
и до конца фрейма разрешать
и было бы апсолютно пофиг

но тут нужна изначальная заточенность под обновления графики по прерыванию...
ну и сам движок по хорошему должен висеть на прерываниях
и вызывать новое обновление экрана
когда отрисовано предыдущее

Dwa83
02.09.2020, 17:36
а так если бы все стековые операции проводить сразу после прихода инта
то вполне до
можно было бы запрещать прерывания
все чистить
и до конца фрейма разрешать
и было бы апсолютно пофиг

Ну так 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
02.09.2020, 22:37
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ФПС минимум
я смотрю как на лохов
(хотя я уже не помню на сколько там инертная менюшка при тормозах...)
но управляемость в геймплее точно не теряется как у некоторых....

ALKO
03.09.2020, 01:00
WOTы NFSы выходили в эпоху, когда конфигурация железа варьируется в большом диапазоне, тут ясен пень без дельта тайминга или разделения на потоки рендер/логика - никак.
А спек чë, у него общепринятый стандарт 3.5 мегагерц. Всë что в турбе это уже не спек, а обратно-совместимое со спекою.

NEO SPECTRUMAN
03.09.2020, 01:21
А спек чë, у него общепринятый стандарт 3.5 мегагерц. Всë что в турбе это уже не спек, а обратно-совместимое со спекою.
вот только запускаешь в турбе какую нибудь плавающую тормозилку
в надежде что она уплавнится
а она начинает летать как бешенная при том так же с разной скоростью


вот тебе наглядный пример унылости плавающей скорости
https://youtu.be/eDhSH-GJDqE?t=1600
на фоне вполне симпатичной игры

ALKO
03.09.2020, 01:27
Ну, такие вещи надо не частотами проца разгонять, а оптимизацией кода, если оно действительно в интересах оверклокера.

А вообще, плавующую скорость я обычно сглаживал согласно этой статейке.
https://habr.com/ru/post/136878/
Но на продвинутых ЭВМ, включая сегу мд, благо там имеется аппаратный таймер, в отличие от убогого Горбатого, где остаëтся полагаться лишь на сигнал прерывания.