Я планировал сунуться в конкурс, так что, пока не собираюсь публиковать спрайты.Ты спрайтами не делишься для тестов?
А для теста можно и с любой другой игры стянуть.
https://www.spriters-resource.com
Я планировал сунуться в конкурс, так что, пока не собираюсь публиковать спрайты.Ты спрайтами не делишься для тестов?
А для теста можно и с любой другой игры стянуть.
https://www.spriters-resource.com
Andrew771(20.08.2020)
Dwa83, редактор уровней и спрайтов у тебя удобный!
Но может, раз ALKO уже почти на финишной прямой, я тебя приглашаю в свой проект, стратегию реального времени Z, если интересно. Делаю по мотивам PC игры, упрощенную, так что на конкурс нельзя. Графику почти всю уже давно нарисовал Bugsy, аж в 2005 году. А код я очень долго ковыряю, почти нет времени сейчас (спасибо карантину, хоть дали пару месяцев, еще хочу
). Файлы текущие прикладываю, снапшот и исходник. Написан в основном на ZX Like Pascal. Но сейчас очень много жрет места, нужно некоторые процедуры перевести в ассемблер из Паскаля, чтобы освободить для дальнейшего писания. Потом написать стрельбу и управление юнитами игрока с клавиатуры (ИИ будет такой же, как для компа), это вместе будем.
Сможешь переписать в ассемблер процедуры вывода put_objects и put_properties? ИИ лучше оставить на Паскале, там сложно.
- - - Добавлено - - -
В демо управление с клавиатуры:
QAOP - перемещение
Номера территорий можно набирать: от 01 до 12 (по две цифры) - перемещение к нужной территории.
- - - Добавлено - - -
Файл PRG обычный текстовый, можно открывать Блокнотом.
crrush(10.02.2021)
Эхх... Red Alert 2 бы на спек. Вот где мощъ.
Z тоже хороша. Но никогда особо плотно не цепляла.
Он пока сырой и местами багнутый, надо доделывать.
А я уже видел эту демку, ничего так выглядит) Только почему-то SNA запустился лишь после того, как в дебаге напрямик в PC адрес старта сунуть.
Я посмотрю по коду, смогу ли что-то сделать.
Щас пока что со своей задумкой скролла уровня ковырялся, пока вот что придумал. Свапаю 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[свернуть]
Зато немного быстрее работает)
Использование асм-костылей присутствует.
В паскале на высоком уровне удобно условия городить, хотя асм по возможностям на проверку условий всë же продвинутее : как например проверка флагов, на асме можно отслеживать флаг знака, а в паскале всë беззнаковое. Проверка чëтности опять же, на асме достаточно следить за одним флагом, а тут надо производить лишние арифметические операции с остатком от деления. Процедурки вывода спрайтов взяты из "как написать игру", то есть познакоместное позиционирование без маски, поэтому для попиксельного вывода нужно пихать процедурки spr_lib. Хотя маску можно организовать и штатными процедурами, так как есть AND OR XOR, но при познакоместной позиции толку от этого мало.
- - - Добавлено - - -
Подробно не смотрел как там операции деления умножения транслируются. Но вот на асме если быстро поделить или умножить на 2 - достаточно выполнить побитовый сдвиг. Тут побитовых операций нет и в помине. Так что опять же, если нужно что-то выполнять с битами - асм-костыль. Все асм костыли вызываются из тела паскалевской программы (которая преобразуется в асм код с соответствующими call (addr))
- - - Добавлено - - -
Ну а ещë паскаль удобен организацией циклов. Не надо каждый раз push-pop-ить счëтчик вокруг того или иного цикла. Да и работа с массивами упрощается на порядок.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
И всё-таки ты переделаешь игру полностью на асм?А вообще, ты искал программиста, но сам помнишь некоторые такие вещи, которыми почти никогда не пользуются)
Типа узкоспециализированные флаги чётности, которые не особо нужныю
Погоди-погоди.. Ттак паскаль Andrew771 - тхис из интерпритатор, а не транслятор??? Который в памяти сидит, и строки пассаля тоже? Если нет, то всё одно - условия превращаются в проверку флагов, только более изощрённо завёрнутую друг в друга. Потому, даже на современных компах пытаются "горлышки" писать на асме. Типа языки высокого уровня создают код, хуже чем асм. В некоторых новых компиляторах нифига(я про с++). Язык типа алковского паскаля, он наверное расчитан НЕ на супердинамичные игры(но просто чтобы быстро и легко их разрабатывать).
Ноуп, паскаль именно транслятор. Он конвертирует паскалевский код в набор асм процедурок, которые уже копи-пастишь в асм-компиль.
- - - Добавлено - - -
На данный момент бОльшая часть кода у меня на паскале сделана. И на удивление, всë довольно бодро шевелится. Для экшона скорости хватает. Хотя поначалу я вообще скептически был настроен, и думал ограничиться лишь квестом.И всё-таки ты переделаешь игру полностью на асм?
- - - Добавлено - - -
Конечно на голом асме было бы, наверное, раза в два быстрее. Если ещë со всякими оптимизациями через стек то ищë быстрее, но я до такого не дорос. так что получается то что получается. Всяко лучше чем AGD, уже радует.
- - - Добавлено - - -
Жалко конечно, что 128к формат такой геморный, и из-за него откусываются аж 16кб линейной памяти.
С виртуальным экраном я мог позволить компу ожидать обновление кадра по HALTу.
А так как вынужден LDIRить, то от верт. синхронизации пришлось отказаться (ровно как и от музычки)
Последний раз редактировалось ALKO; 21.08.2020 в 14:42.
нет, ты ее не мог видеть, это то, что я сделал за последнее время. Ты видел демку 2018 года
С тех пор полностью переписал ИИ, сделал независимым от карты уровня, т.к. планирую не один уровень. Этот сейчас только первый. Есть уже задумка по 4 уровням. Главное, сложно первый написать, остальные быстро уже.
Добавил цвета для юнитов, заводов и флагов. Противник уже полностью захватывает все территории и штаб игрока. Добавил информационную панель справа.
- - - Добавлено - - -
ALKO уже ответил, есть спец.оператор asm для вызова процедур на ассемблере из Паскаля.
- - - Добавлено - - -
Оптимизации для умножения и деления на числа степени 2 имеются, а также для часто используемых чисел типа 3,5,10,20,50,100... Вставляется вместо вызова процедуры честного умножения add hl,hl нужное количество раз.
Подробно про мозги компилятора я описал в статье: http://dgmag.in/N15/DowngradeN15b.pdf
Andrew771, глянул демку. Дааа.. скролл тут слабое место.
Раз уж он дискретный, то почему бы не разукрасить графику, живее бы смотрелось чем чёрно-жёлтый монохром.
Шаг 16px брррр
Ну и самое главное - тормозно. Ладно ЖД магнат пошаговое, там можно стерпеть, но в РТС такие лаги не приветствуются.
- - - Добавлено - - -
ах да, как и в ЖД-магнате - нет диагонального скролла. В РТС это тоже куда важнее. По гипотенузе быстрее можно добраться до нужной точки, нежели по двум катетам.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)