| Разработка и ромхакинг > Ромхакинг и программирование |
| SGDK |
| << < (5/40) > >> |
| ALKOSHA:
Переменная fix16 странно себя ведёт. Вроде бы инкрементируешь её на 1, а значение меняется так, словно инкрементируешь на сотые доли. Эдакая целочисленно-дробная переменная. Вот ещё попробовал сделать рикошет мяча, когда он достигнет 17500, а fix16ToStr показывает значение ~260.00 |
| worm:
--- Цитата ---А вообще, сколько палитр по 16 цветов на спрайтовом слое может присутствовать, две или одна? --- Конец цитаты --- Хоть все 4 :) но тогда на слои background'а не останется (разве что использовать одну и ту же палитру со спрайтами. --- Цитата ---Какие-то роботы могут быть галубыми, а какие-то розовыми среди одного и того же вида, что наводит на мысль о 2-ух палитрах на спрайт-слое. --- Конец цитаты --- Апельсиновый эмуль в руки и вперёд, бороздить vdp контры))) По аналогии сделаны ниндзя в МК, один и тот же набор спрайтов с разными палитрами) Дерутся скорпион и саб зиро - это один спрайт, нарисованный дважды на экране. В слоты палитр записываются ихние палитры, в одном слоте палитра скорпиона, в другом - палитра саб зиро. Эти 2 спрайта на экране всего лишь используют разные слоты для того, чтобы отличаться по цвету друг от друга. А слоты палитр используются как угодно, нет деления для BG или спрайтовых слоёв. |
| ALKOSHA:
В таком случае, как заполнить 4-ый палитровый слот ? А то первые три автоматом заполняются, а четвёртый - чёрный. Добавлено позже: смущает то, что тайлы ракетки налезли на бэкграунд. А бэкграунд 320*240. То есть в видео-ОЗУ нужно каким-то образом отодвинуть тайлы ракетки чуть дальше по адресу, ведь само О3У наполовину пустое (правда там ещё буковки находятся, и собираюсь динамически менять бэкграундовую картинку). Добавлено позже: Надо бы на меняющийся бэкграунд ещё и палитру менять. А то одна палитра на все кадры бэкграунда не красиво смотрится. :wall: Добавлено позже: --- Цитата: ALKOSHA от 02 Декабрь 2015, 02:38:26 ---Переменная fix16 странно себя ведёт. Вроде бы инкрементируешь её на 1, а значение меняется так, словно инкрементируешь на сотые доли. --- Конец цитаты --- Этот момент вчехлил. Каждый раз, когда происходит где-то присвоение или проверка какого-то значения, нужно это делать через функцию FIX16(). --- Код: ---if(ballx>=FIX16(300)||ballx<=FIX16(1))balldx=-balldx; --- Конец кода --- |
| worm:
--- Цитата ---В таком случае, как заполнить 4-ый палитровый слот ? --- Конец цитаты --- писАть в слот PAL3. --- Цитата ---бэкграунд 320*240 --- Конец цитаты --- максимальное разрешение сеги - 320x224, попробуйте подогнать картинку под этот размер. --- Цитата ---Надо бы на меняющийся бэкграунд ещё и палитру менять. --- Конец цитаты --- Проще всего менять палитру с каждым кадром анимации бекграунда) на помощь придут массивы. |
| ALKOSHA:
Вот только где хранить разные наборы палитр ? Насколько я понимаю, PAL0-PAL2 генерятся во время компиляции картинок. Или же есть какая-то утилита, для импорта и хранения палитр *.act ? |
| worm:
--- Цитата: ALKOSHA от 02 Декабрь 2015, 17:34:09 ---Вот только где хранить разные наборы палитр ? Насколько я понимаю, PAL0-PAL2 генерятся во время компиляции картинок. Или же есть какая-то утилита, для импорта и хранения палитр *.act ? --- Конец цитаты --- Это то, за что я ненавижу SGDK - все автоматизировано. Фиг что поймешь. Все данные (бинарная графика и палитры), извлекаются во время компиляции и тут же зачищаются. Нужно все это дело разбить на отдельные задачи. Палитра берется из изображения при конвертации в генресе, чтобы разработчик игры не парился по поводу добавления тайлов и палитры напрямую. Инициализировал картинку - готово. Только отрисуй и палитру указывать не надо. Это просто ужасно. |
| ALKOSHA:
Подсказали заюзать VDP_setPalette(PAL3, ball_sprite.palette->data); Ещё спрошу по динамической кастомизации набора цветов. Чтоб менять цвета внутри программы. Добавлено позже: Помогло. Ещё бы разобраться с этими синими катышками на бэкграунде. По идее это прозрачные пиксели получились. Но в таблице цветов на первом месте стоит чёрный, а катышки находятся отнюдь не на чёрных участках. |
| worm:
--- Цитата ---катышки находятся отнюдь не на чёрных участках. --- Конец цитаты --- Похоже, конвертер графона так не считает) попробуйте перекрасить эти участки. |
| ALKOSHA:
--- Цитата: worm от 02 Декабрь 2015, 16:30:26 ---максимальное разрешение сеги - 320x224, попробуйте подогнать картинку под этот размер. --- Конец цитаты --- Подогнал: Добавлено позже: Во, теперь значительно лучше. :cool: |
| worm:
Фоновый рисунок лучше ставить на BPLAN. Там используются все 16 цветов (прозрачный цвет автоматически используется как фоновый). |
| ALKOSHA:
Что на APLAN, что на BPLAN - синие катышки (а точнее - дырки, сквозь которые виден синий фон) А какое основное отличие VDP_drawImageEx() от VDP_drawBitmapEx() ? Добавлено позже: Понял как убрать тайлы ракетки с бэкграунда (то бишь сместить их дальше по адресу в видео-ОЗУ). Опять же, это делается автоматом. Зависит от того, какой массив инициализировать под спрайты. SPR_init(512); - больше адресного пространства выделится под спрайты, меньше под задник. И наоборот SPR_init(128); - при таком значении тайлы ракетки расположены уже подальше от тайлов бэкграунда. Добавлено позже: --- Цитата: worm от 02 Декабрь 2015, 16:30:26 ---максимальное разрешение сеги - 320x224 --- Конец цитаты --- есть функция VDP_setScreenHeight240(). Только разницы между VDP_setScreenHeight240() и VDP_setScreenHeight224() не заметил. С шириной при этом тоже игрался. Разница по ширине очевидна, а высота остаётся без изменений. |
| worm:
Ну тут я ещё сам не разобрался, поэтому особо толку от меня не будет. В сгдк очень много мусора, как и лишнего кода в библиотеке. segaman говорил, что больше половины поудалял хламья. Уломать бы Стефа убрать всю эту джигурду... --- Цитата ---VDP_setScreenHeight240 --- Конец цитаты --- странно, то наверно для ntsc aspect) |
| ALKOSHA:
Есть массив партиклов. --- Код: ---int i; for(i=0;i<80;i++) SPR_initSprite(&sprites[i], &rain_sprite, i, i, TILE_ATTR(PAL3, TRUE, FALSE, FALSE)); --- Конец кода --- Теперь, чтоб их всех отобразить, надо выполнить SPR_update(sprites, 80); А как поступить, если нужно не все партиклы отобразить, а лишь определённые из этого массива? Добавлено позже: Хочу ещё помимо задника добавить скроллирующийся туман, и ещё всяких деталей на декорации. Примерно как тут Только ещё в 16 бит сатаничнее и кровавее. Полупрозрачность тумана можно сделать дизерингом пикселей. А вот как быть с остальными декорациями ? Слоёв бэкграунда ведь всего лишь два. Можно ли как-то динамически подгружать каждый слой из памяти в процессе отрисовки кадра? |
| worm:
--- Цитата ---А как поступить, если нужно не все партиклы отобразить, а лишь определённые из этого массива? --- Конец цитаты --- Все, что приходит на ум - рисовать по отдельности, но может ребята посоветуют что-то получше) --- Цитата ---Можно ли как-то динамически подгружать каждый слой из памяти в процессе отрисовки кадра? --- Конец цитаты --- Можно использовать спрайтовых слой как слой переднего плана. Есть ещё такая вещь, как "окно", пока сам не знаю о нём ничего. |
| ALKOSHA:
Опа, сунулся в типы переменных, а типа bool не нашёл. 0_0 Неужто в качестве флага 0\1 нужно использовать как минимум char ? |
| ALKOSHA:
Этот компилятор ресурсов и спрайтовый движок - сплошной вынос мозга. Вот, например, тут одна палитра как у мяча, так и у партиклов. Но у мяча прозрачные пиксели есть, у партиклов их нет, при том, что в таблице те пиксели находятся на первом месте у мяча и партиклов. Далее sprite_engine.h , какой-то он мутный. Хотел немного структурировать, чтоб всё не сливалось в единую кашу. Sprite sprites[80]; Попытался для начала отделить спрайт мяча от остального Sprite ball[1]; Sprite sprites[79]; ... SPR_initSprite(&ball[0], &x_sprite, fix32ToInt(ballx), fix32ToInt(bally), TILE_ATTR(PAL2, TRUE, FALSE, FALSE)); ... SPR_update(ball, 1); SPR_update(sprites, 79); Но получил полностью чёрный экран. |
| blackbird_ru:
Дай незнающему человеку интрумент, тот тут же его заклеймит негодным, херово сделаным, и вообще неудобно этим вашим микроскопом гвозди забивать. :lol: Для начала не плохо было бы игру запускать в Gens kMod Или Gens r57shell mode, чтобы была возможность смотреть как загрузились твои спрайты, палитры и бекграунды. |
| ALKOSHA:
:lol: :lol: :lol: :lol: --- Цитата ---:lol: Дай незнающему человеку интрумент, тот тут же его заклеймит негодным, херово сделаным, и вообще неудобно этим вашим микроскопом гвозди забивать. :lol: --- Конец цитаты --- :lol: :lol: так я расчитываю на то, что знающие человеки подскажут, как правильно гвозди микроскопом забивать :lol: :lol: --- Цитата ---Для начала не плохо было бы игру запускать в Gens kMod Или Gens r57shell mode, чтобы была возможность смотреть как загрузились твои спрайты, палитры и бекграунды. --- Конец цитаты --- |
| blackbird_ru:
А ты уверен что он первым идёт в палитре на другой картинке? В том же гимпе легко можно цвета переставлять у изображения с палитрой. Добавлено позже: Ну и об этом --- Цитата: ALKOSHA ---что знающие человеки подскажут --- Конец цитаты --- Ты вывел только спрайт на бекграунд, а уже 3 страницы заспрашивал. Это уже что-то уровня ланкастера же. |
| ALKOSHA:
В Зеро Толерасте как-то на одном слое рисуют кучу НЕ-аппаратных спрайтов (будь они аппаратными, можно было бы лицезреть характерные артефакты в виде прозрачных полосок и мерцаний, как это происходит в БладШоте). Вот этот момент интересует. Таким макаром хотелось бы сделать партиклы, декорации и мобов на одном спрайтовом слое. Добавлено позже: --- Цитата ---В том же гимпе легко можно цвета переставлять у изображения с палитрой. --- Конец цитаты --- Да, действительно легко. Но как сделать одну палитру на разные png-файлы ? При сохранении png палитра сохраняется именно с теми цветами, которые присутствуют на изображении. В одном файле у меня 4 цвета, в другом 12. И я хочу, чтоб в программе эти два файла корректно отображались при одной палитре. В фотошопе можно сохранять и загружать палитру, но при сохранении она урезается именно до того кол-ва цветов, сколько их есть на картинке. Было бы неплохо замостить один файл всеми спрайтами. Но какие-то спрайты могут быть 8*16, какие-то 32*32. А размер фрейма в спрайт-движке фиксированный (который указывается в gfx.res). |
| Навигация |
| Главная страница сообщений |
| Следующая страница |
| Предыдущая страница |