Автор Тема: SGDK  (Прочитано 76455 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Takamura-kun

  • Пользователь
  • Сообщений: 1091
  • Пол: Мужской
  • Закалён и плечист.
    • ВКонтакте
    • Просмотр профиля
Re: Настройка SGDK
« Ответ #60 : 26 Ноябрь 2015, 03:30:22 »
Цитата
Похоже, что transparent  в любом случае 0x00 (чёрный, вне зависимости от расположения в таблице индексов).
Нет) Скорее всего, Вы поменяли местами цвета только для графического редактора.
Для проверки, можно взять апельсиновый эмулятор, залезть в VDP RAM и глянуть палитры.
Цитата
В процессе компиляции крашит
Попробуйте "почистить" проект - удалите все созданные в процессе компиляции файлы, включая res/music.h и res/gfx.h
Также отслеживайте ошибку couldn't allocate heap, эксклюзив для счастливых обладателей виндузы, начиная с висты. Если выскочила - перекомпилируйте проект. С нуля.
« Последнее редактирование: 26 Ноябрь 2015, 03:42:31 от worm »

Оффлайн ALKOSHA

  • Пользователь
  • Сообщений: 805
  • Люблю донди.
    • ВКонтакте
    • Просмотр профиля
Re: Настройка SGDK
« Ответ #61 : 26 Ноябрь 2015, 06:43:08 »
Попробуйте "почистить" проект - удалите все созданные в процессе компиляции файлы, включая res/music.h и res/gfx.h

Разве эти хэдеры создаются в процессе компиляции? Они ведь нужны до начала компиляции.


Добавлено позже:
По-моему, надо предварительно удалять файлы с расширениями *.o ; *.bin во всех каталогах.
Тогда ничего не зависает во время компиляции.

Добавлено позже:
Вы поменяли местами цвета только для графического редактора.


тогда не ясно, как поменять нумерацию.
Что фотошоп, что IrfanView позволяет лишь редактировать цвет определённого индекса, но сами индексы по кастомному порядку выстроить не получается.
« Последнее редактирование: 26 Ноябрь 2015, 07:08:18 от ALKOSHA »

Оффлайн Takamura-kun

  • Пользователь
  • Сообщений: 1091
  • Пол: Мужской
  • Закалён и плечист.
    • ВКонтакте
    • Просмотр профиля
Re: Настройка SGDK
« Ответ #62 : 26 Ноябрь 2015, 07:56:47 »
Разве эти хэдеры создаются в процессе компиляции? Они ведь нужны до начала компиляции.
Создаются :)
тогда не ясно, как поменять нумерацию.
Ну я же предложил Вам способ)
1) заходите в ФШ в mode > color table.
2) берете в наглую первый цвет, делаете его сиреневым.
3) заливаете им фон - вуаля! У нас прозрачный фон.
4) заделываете сиреневые пиксели в спрайте другим цветом. Готово)

Оффлайн ALKOSHA

  • Пользователь
  • Сообщений: 805
  • Люблю донди.
    • ВКонтакте
    • Просмотр профиля
Re: Настройка SGDK
« Ответ #63 : 26 Ноябрь 2015, 14:22:29 »
Создаются  :(

Действительно... :-\

С индексами разобрался, спасибо.
Просто думал, что можно как-то иначе, не прогибаясь под палитру, прогнуть её под себя.

Теперь пора и в исходник залезть.
Чего-то виснет прога, словно указатели на адрес спрайта выходят за пределы оного.
На два плэйна вывести картинку успевает, музло инициализируется (и играется), idle-спрайт тоже выводится. Но дальше - виснет. Не реагирует на нажатие кнопок, да и через некоторое время образуется пиксельная каша (скрин ранее уже привёл)
Спрайт-щит разрешением 640*480 (пока что). Может там нужно какое-то особое разрешение по высоте\ширине ?

Оффлайн Takamura-kun

  • Пользователь
  • Сообщений: 1091
  • Пол: Мужской
  • Закалён и плечист.
    • ВКонтакте
    • Просмотр профиля
Re: Настройка SGDK
« Ответ #64 : 26 Ноябрь 2015, 16:06:55 »
Спрайт-щит разрешением 640*480 (пока что). Может там нужно какое-то особое разрешение по высоте\ширине ?
Дело явно не в этом. Только что проверил, с 640*480 работает корректно, хоть и тормозит. Похоже, Вы где-то наколдовали не того) Попробуйте взять девственного соника и вставить туда свой спрайт (не забывая про параметры в gfx.res).

Оффлайн ALKOSHA

  • Пользователь
  • Сообщений: 805
  • Люблю донди.
    • ВКонтакте
    • Просмотр профиля
Re: Настройка SGDK
« Ответ #65 : 26 Ноябрь 2015, 17:50:00 »
хоть и тормозит.
А какова причина тормозов ? По крайней мере девственный сцаник нормально прыгает, почти как в оригинале.

Оффлайн Takamura-kun

  • Пользователь
  • Сообщений: 1091
  • Пол: Мужской
  • Закалён и плечист.
    • ВКонтакте
    • Просмотр профиля
Re: Настройка SGDK
« Ответ #66 : 26 Ноябрь 2015, 18:25:48 »
А какова причина тормозов ?
Скорей всего - сам движок данного примера, любезно набыдлокоденныйписанный для нас разрабом на скорую руку. Опять же, можно взять апельсина и сравнить сцанников (оригинальную игру и sgdk пример) в VDP. Тайлы синяка оригинальной игры анимируются "на месте", в то время, как анимация спрайтов из sgdk примера больше походит на бегущую строку. А вот в пингвинах-насильниках такого безобразия нет :)

Оффлайн ALKOSHA

  • Пользователь
  • Сообщений: 805
  • Люблю донди.
    • ВКонтакте
    • Просмотр профиля
Re: Настройка SGDK
« Ответ #67 : 26 Ноябрь 2015, 18:54:49 »
В тех пингвинах даж не знаю с чего начать. Залез в мэйн.
Думаю, что функцию SetupSystem(), в которой инициализируется движок, можно даже и не трогать.
Далее  LevelManager_Init(), затем следует бесконечный цикл из функций опроса кнопок и апдейта объектов.
 :ohmy: тут уже мега-сложна. :ohmy:

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

Переделать движок под себя будет крайне сложно.

Добавлено позже:
Видать там даже проверка коллизии с точностью до пикселя.

Оффлайн Takamura-kun

  • Пользователь
  • Сообщений: 1091
  • Пол: Мужской
  • Закалён и плечист.
    • ВКонтакте
    • Просмотр профиля
Re: Настройка SGDK
« Ответ #68 : 26 Ноябрь 2015, 19:19:41 »
Видать там даже проверка коллизии с точностью до пикселя.
Там есть коллижен боксы (в паузе можно сделать их видимыми) :)

Оффлайн ALKOSHA

  • Пользователь
  • Сообщений: 805
  • Люблю донди.
    • ВКонтакте
    • Просмотр профиля
Re: Настройка SGDK
« Ответ #69 : 26 Ноябрь 2015, 19:51:12 »
Так или иначе, но за основу придётся всё же брать быдлокод с тем голубоватым ежом, а не пингвином.

Оффлайн Takamura-kun

  • Пользователь
  • Сообщений: 1091
  • Пол: Мужской
  • Закалён и плечист.
    • ВКонтакте
    • Просмотр профиля
Re: Настройка SGDK
« Ответ #70 : 26 Ноябрь 2015, 22:09:48 »
Так или иначе, но за основу придётся всё же брать быдлокод с тем голубоватым ежом, а не пингвином.
Как учебный материал - сгодится, а вот для написания конечного проекта - врагу не пожелал бы :lol:

Оффлайн ALKOSHA

  • Пользователь
  • Сообщений: 805
  • Люблю донди.
    • ВКонтакте
    • Просмотр профиля
Re: Настройка SGDK
« Ответ #71 : 28 Ноябрь 2015, 19:21:51 »
На форуме автор SGDK обещал к следующей версии допилить оптимизацию на спрайты.

 Спрайты в примере не только напрямую из ROM'a читаются, но и вхолостую выводятся те знакоместа, где пикселей не должно быть (transparent). Тупо монолитный прямоугольник.

На спектруме idle-спрайт агрессора мне удавалось запихнуть в 241 байт (по отдельным знакоместам).




« Последнее редактирование: 29 Ноябрь 2015, 15:40:45 от ALKOSHA »

Оффлайн Takamura-kun

  • Пользователь
  • Сообщений: 1091
  • Пол: Мужской
  • Закалён и плечист.
    • ВКонтакте
    • Просмотр профиля
Re: Настройка SGDK
« Ответ #72 : 29 Ноябрь 2015, 08:24:16 »
На форуме автор SGDK обещал к следующей версии допилить оптимизацию на спрайты.
Наверно, с пингвинов движок свистнет :lol:

Оффлайн ALKOSHA

  • Пользователь
  • Сообщений: 805
  • Люблю донди.
    • ВКонтакте
    • Просмотр профиля
Re: Настройка SGDK
« Ответ #73 : 29 Ноябрь 2015, 23:02:50 »
Чего-то у XGMTool поперёк горла застряют vgm-трэки, взятые с tfmmaker от Ширу.

Добавлено позже:
И ещё на счёт инициализации спрайтов.
Вот инициализируется один спрайт.
    SPR_initSprite(&sprites[0], &x_sprite, X1, Y1, TILE_ATTR(PAL2, TRUE, FALSE, FALSE));
    SPR_update(sprites, 1);
Дабы инициализировать второй, нужно приписать что-то типа такого?
    SPR_initSprite(&sprites[1], &y_sprite, X2, Y2, TILE_ATTR(PAL2, TRUE, FALSE, FALSE));
    SPR_update(sprites, 2);
И затем в бесконечном цикле апдейтить  SPR_update(sprites, 1);  SPR_update(sprites, 2); ?



Добавлено позже:
компилятор ресурсов крашит, когда добавил строчку ещё одного спрайта в gfx.res.

IMAGE bgb_image "bgb.png" -1
IMAGE bga_image "bga.png" -1
SPRITE ball_sprite "ball.png" 4 4 -1
SPRITE x_sprite "x.png" 8 4 -1
« Последнее редактирование: 29 Ноябрь 2015, 23:31:45 от ALKOSHA »

Оффлайн Takamura-kun

  • Пользователь
  • Сообщений: 1091
  • Пол: Мужской
  • Закалён и плечист.
    • ВКонтакте
    • Просмотр профиля
Re: Настройка SGDK
« Ответ #74 : 30 Ноябрь 2015, 10:03:03 »
Чего-то у XGMTool поперёк горла застряют vgm-трэки, взятые с tfmmaker от Ширу.
Если Вы имеете в виду искажения при воспроизведении, это, скорее всего, "фича" проигрывателя. У меня была та же проблема, не исправил.

И ещё на счёт инициализации спрайтов.
Тут уже методом "ошиб и пробок", пока не добьетесь желаемого результата :) я пока до добавления спрайтов не дошел - стараюсь меню оптимизировать и выбор персонажа.

компилятор ресурсов крашит, когда добавил строчку ещё одного спрайта в gfx.res.
Проверьте спрайт. Замените его на уже существующий с новым именем, вот так...
IMAGE bgb_image "bgb.png" -1
IMAGE bga_image "bga.png" -1
SPRITE ball_sprite "ball.png" 4 4 -1
SPRITE x_sprite "ball.png" 4 4 -1
Если ошибки не возникнет - дело в самом png.

Оффлайн ALKOSHA

  • Пользователь
  • Сообщений: 805
  • Люблю донди.
    • ВКонтакте
    • Просмотр профиля
Re: Настройка SGDK
« Ответ #75 : 30 Ноябрь 2015, 17:42:25 »
Таки дело в png-файле. :cool:

Цитата
Если Вы имеете в виду искажения при воспроизведении, это, скорее всего, "фича" проигрывателя.
До воспроизведения дело не доходит. Фатал эррор во время компиляции. :cool:

 :cool:

Добавлено позже:
Всё. Дошло.
Надо было во music.res не XGM указывать, а VGM. Но почему-то в случае с музлом из вСуника стояло именно XGM, при том, что сам файл *.vgm.

Добавлено позже:
Скомпилировало, но  музла не слыхать.
« Последнее редактирование: 30 Ноябрь 2015, 17:53:00 от ALKOSHA »

Оффлайн Takamura-kun

  • Пользователь
  • Сообщений: 1091
  • Пол: Мужской
  • Закалён и плечист.
    • ВКонтакте
    • Просмотр профиля
Re: Настройка SGDK
« Ответ #76 : 30 Ноябрь 2015, 18:10:22 »
Скомпилировало, но  музла не слыхать.
Попробуйте на девственном сцанике с параметром xgm. Если кина не будет - причина в файле. Либо возьмите сразу другой vgm, музыку из МК1, например (проверено лично). Если ошибки не будет и будет воспроизводиться - причина, опять же, в самом vgm файле.
И не забывайте чистить проект перед каждой компиляцией (желательно блендаметом), следить за ошибкой couldn't allocate heap и каждый раз, при ее возникновении, проклинать виндузу :D
« Последнее редактирование: 30 Ноябрь 2015, 18:16:48 от worm »

Оффлайн ALKOSHA

  • Пользователь
  • Сообщений: 805
  • Люблю донди.
    • ВКонтакте
    • Просмотр профиля
Re: Настройка SGDK
« Ответ #77 : 30 Ноябрь 2015, 22:24:46 »


Добавлено позже:

Добавлено позже:
Музло с мортал-комбата тоже молчит.
http://www.zophar.net/music/vgm/mortal-kombat-[mortal-kombat-shinken-kourin-densetsu]-vgm-.html

Добавлено позже:
При перемещении спрайта - он подрыгивался, словно происходил рассинхрон с кадровой развёрткой.
закомментировал в цикле //VDP_waitVSync(); - подрыгивания пропали. Разве должно происходить не наоборот?
« Последнее редактирование: 30 Ноябрь 2015, 23:01:45 от ALKOSHA »

Оффлайн Takamura-kun

  • Пользователь
  • Сообщений: 1091
  • Пол: Мужской
  • Закалён и плечист.
    • ВКонтакте
    • Просмотр профиля
Re: Настройка SGDK
« Ответ #78 : 30 Ноябрь 2015, 23:18:54 »
Насчет палитр, проверьте, чем она может перебиваться. Возможно, вы загружаете палитру фона в тот же слот, который использует для своей палитры спрайт, тем самым искажая цвет спрайта.

Цитата
Музло с мортал-комбата тоже молчит.
При обоих XGM и VGM? Даже на девственнике?

Цитата
Разве должно происходить не наоборот?
Значит где-то еще синхрон выполняется, одно другое сбивает (возможно в самой библиотеке, хотя не должно быть такого).
« Последнее редактирование: 30 Ноябрь 2015, 23:32:59 от worm »

Оффлайн ALKOSHA

  • Пользователь
  • Сообщений: 805
  • Люблю донди.
    • ВКонтакте
    • Просмотр профиля
Re: Настройка SGDK
« Ответ #79 : 01 Декабрь 2015, 22:34:47 »
Цитата
Насчет палитр, проверьте, чем она может перебиваться.
Перебивается она палитрой первого спрайта.
А вообще, сколько палитр по 16 цветов на спрайтовом слое может присутствовать, две или одна?
Если глянуть на содержимое VDP, то там 4 палитры - первый план, второй план, спрайтовый слой... и ещё одна палитра  -  все чёрные цвета, пока неясно для чего отведена. Но мне кажется, это вторая палитра для спрайт-слоя.

В той же Contra Hard Corps когда набегает армия робытов-убийц на нашего бесстрашного героя, то  среди этого рандомного месива можно заметить, что они разделяются на два оттенка. Какие-то роботы могут быть галубыми, а какие-то розовыми среди одного и того же вида, что наводит на мысль о 2-ух палитрах на спрайт-слое.

А может она просто динамически переключается по индексам, чёрт этих японцев знает.

Добавлено позже:
Если написать  SPR_initSprite(&sprites[1], &ball_sprite, fix32ToInt(posx - camposx), 10, TILE_ATTR(PAL3, TRUE, FALSE, FALSE)); то спрайт получается абсолютно чёрный. То есть та палитра существует, но как её заполнить нужными цветовыми индексами ?

Добавлено позже:
В рот мне ноги...
« Последнее редактирование: 02 Декабрь 2015, 02:21:10 от ALKOSHA »

Оффлайн ALKOSHA

  • Пользователь
  • Сообщений: 805
  • Люблю донди.
    • ВКонтакте
    • Просмотр профиля
Re: Настройка SGDK
« Ответ #80 : 02 Декабрь 2015, 02:38:26 »
Переменная fix16 странно себя ведёт.
Вроде бы инкрементируешь её на 1, а значение меняется так, словно инкрементируешь на сотые доли.
Эдакая целочисленно-дробная переменная.

Вот ещё попробовал сделать рикошет мяча, когда он достигнет 17500, а fix16ToStr показывает значение ~260.00

Оффлайн Takamura-kun

  • Пользователь
  • Сообщений: 1091
  • Пол: Мужской
  • Закалён и плечист.
    • ВКонтакте
    • Просмотр профиля
Re: Настройка SGDK
« Ответ #81 : 02 Декабрь 2015, 13:22:35 »
Цитата
А вообще, сколько палитр по 16 цветов на спрайтовом слое может присутствовать, две или одна?
Хоть все 4 :) но тогда на слои background'а не останется (разве что использовать одну и ту же палитру со спрайтами.

Цитата
Какие-то роботы могут быть галубыми, а какие-то розовыми среди одного и того же вида, что наводит на мысль о 2-ух палитрах на спрайт-слое.
Апельсиновый эмуль в руки и вперёд, бороздить vdp контры)))
По аналогии сделаны ниндзя в МК, один и тот же набор спрайтов с разными палитрами) Дерутся скорпион и саб зиро - это один спрайт, нарисованный дважды на экране. В слоты палитр записываются ихние палитры, в одном слоте палитра скорпиона, в другом - палитра саб зиро. Эти 2 спрайта на экране всего лишь используют разные слоты для того, чтобы отличаться по цвету друг от друга. А слоты палитр используются как угодно, нет деления для BG или спрайтовых слоёв.

Оффлайн ALKOSHA

  • Пользователь
  • Сообщений: 805
  • Люблю донди.
    • ВКонтакте
    • Просмотр профиля
Re: Настройка SGDK
« Ответ #82 : 02 Декабрь 2015, 13:40:06 »
В таком случае, как заполнить 4-ый палитровый слот ?
А то первые три автоматом заполняются, а четвёртый - чёрный.

Добавлено позже:
смущает то, что тайлы ракетки налезли на бэкграунд.
А бэкграунд 320*240. То есть в видео-ОЗУ нужно каким-то образом отодвинуть тайлы ракетки чуть дальше по адресу, ведь само О3У наполовину пустое (правда там ещё буковки находятся, и собираюсь динамически менять бэкграундовую картинку).


Добавлено позже:
Надо бы на меняющийся бэкграунд ещё и палитру менять. А то одна палитра на все кадры бэкграунда не красиво смотрится. :wall:

Добавлено позже:
Переменная fix16 странно себя ведёт.
Вроде бы инкрементируешь её на 1, а значение меняется так, словно инкрементируешь на сотые доли.

Этот момент вчехлил. Каждый раз, когда происходит где-то присвоение или проверка какого-то значения, нужно это делать через функцию FIX16().
if(ballx>=FIX16(300)||ballx<=FIX16(1))balldx=-balldx;
« Последнее редактирование: 02 Декабрь 2015, 16:25:42 от ALKOSHA »

Оффлайн Takamura-kun

  • Пользователь
  • Сообщений: 1091
  • Пол: Мужской
  • Закалён и плечист.
    • ВКонтакте
    • Просмотр профиля
Re: Настройка SGDK
« Ответ #83 : 02 Декабрь 2015, 16:30:26 »
Цитата
В таком случае, как заполнить 4-ый палитровый слот ?
писАть в слот PAL3.

Цитата
бэкграунд 320*240
максимальное разрешение сеги - 320x224, попробуйте подогнать картинку под этот размер.

Цитата
Надо бы на меняющийся бэкграунд ещё и палитру менять.
Проще всего менять палитру с каждым кадром анимации бекграунда) на помощь придут массивы.

Оффлайн ALKOSHA

  • Пользователь
  • Сообщений: 805
  • Люблю донди.
    • ВКонтакте
    • Просмотр профиля
Re: Настройка SGDK
« Ответ #84 : 02 Декабрь 2015, 17:34:09 »
Вот только где хранить разные наборы палитр ?
Насколько я понимаю, PAL0-PAL2 генерятся во время компиляции картинок.
Или же есть какая-то утилита, для импорта и хранения палитр *.act ?

Оффлайн Takamura-kun

  • Пользователь
  • Сообщений: 1091
  • Пол: Мужской
  • Закалён и плечист.
    • ВКонтакте
    • Просмотр профиля
Re: Настройка SGDK
« Ответ #85 : 02 Декабрь 2015, 17:50:03 »
Вот только где хранить разные наборы палитр ?
Насколько я понимаю, PAL0-PAL2 генерятся во время компиляции картинок.
Или же есть какая-то утилита, для импорта и хранения палитр *.act ?
Это то, за что я ненавижу SGDK - все автоматизировано. Фиг что поймешь. Все данные (бинарная графика и палитры), извлекаются во время компиляции и тут же зачищаются. Нужно все это дело разбить на отдельные задачи. Палитра берется из изображения при конвертации в генресе, чтобы разработчик игры не парился по поводу добавления тайлов и палитры напрямую. Инициализировал картинку - готово. Только отрисуй и палитру указывать не надо. Это просто ужасно.

Оффлайн ALKOSHA

  • Пользователь
  • Сообщений: 805
  • Люблю донди.
    • ВКонтакте
    • Просмотр профиля
Re: Настройка SGDK
« Ответ #86 : 02 Декабрь 2015, 18:19:16 »
Подсказали заюзать VDP_setPalette(PAL3, ball_sprite.palette->data);

Ещё спрошу по динамической кастомизации набора цветов. Чтоб менять цвета внутри программы.

Добавлено позже:
Помогло.


Ещё бы разобраться с этими  синими катышками на бэкграунде.
По идее это прозрачные пиксели получились. Но в таблице цветов на первом месте стоит чёрный, а катышки находятся отнюдь не на чёрных участках.
« Последнее редактирование: 02 Декабрь 2015, 20:04:58 от ALKOSHA »

Оффлайн Takamura-kun

  • Пользователь
  • Сообщений: 1091
  • Пол: Мужской
  • Закалён и плечист.
    • ВКонтакте
    • Просмотр профиля
Re: Настройка SGDK
« Ответ #87 : 02 Декабрь 2015, 20:28:00 »
Цитата
катышки находятся отнюдь не на чёрных участках.
Похоже, конвертер графона так не считает) попробуйте перекрасить эти участки.

Оффлайн ALKOSHA

  • Пользователь
  • Сообщений: 805
  • Люблю донди.
    • ВКонтакте
    • Просмотр профиля
Re: Настройка SGDK
« Ответ #88 : 02 Декабрь 2015, 21:06:09 »
максимальное разрешение сеги - 320x224, попробуйте подогнать картинку под этот размер.

Подогнал:


Добавлено позже:
Во, теперь значительно лучше.  :cool:
« Последнее редактирование: 02 Декабрь 2015, 21:38:32 от ALKOSHA »

Оффлайн Takamura-kun

  • Пользователь
  • Сообщений: 1091
  • Пол: Мужской
  • Закалён и плечист.
    • ВКонтакте
    • Просмотр профиля
Re: Настройка SGDK
« Ответ #89 : 03 Декабрь 2015, 01:45:56 »
Фоновый рисунок лучше ставить на BPLAN. Там используются все 16 цветов (прозрачный цвет автоматически используется как фоновый).