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

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

Оффлайн mr287cc

  • Пользователь
  • Сообщений: 69
  • Пол: Мужской
    • Просмотр профиля
SGDK
« Ответ #690 : 26 Ноябрь 2021, 04:02:47 »
Драйвер звука XGM.  Какие у него подводные камни?

Рассинхрон FM и цифры. Очень заметно на длинных цифровых петлях. Исходный трек клеил в Deflemask, выгружал для использования с SGDK, запускал в нескольких разных билдах Gens, везде был просто адовый рассинхрон. причину искать не стал, забил. Может за два года в этой цепочке инструментов что-то поменялось и всё починили.

Оффлайн rep-stosw

  • Пользователь
  • Сообщений: 110
  • Пол: Мужской
  • Аппаратчик
    • Youtube
    • Просмотр профиля
SGDK
« Ответ #691 : 26 Ноябрь 2021, 06:15:57 »
В этих форматах, точно нет. Да и на сеге с этим тот ещё гимор, ведь у Z80 в распоряжении всего-то 8 кб, где помимо сэмплов и паттернов нужно ещё хранить и сам плеер. Вообще трекерная музыка использовалась только в ToyStory (интро/эндинг) и Демосцене Stuck Somewhere in Time (где очень примитивные семплы с закосом под SID), ВСЁ! больше примеров нет.

Я имел ввиду, что исходные семплы XM/MOD/IT заменять на FM-инструменты.  Ну может только голос и ударные дуть в DAC.  По идее, должно хватить.   Плюс к тому же, вроде XGM движок Стефа вычитывает музыку c ROM'a (переключением страницы), а не с ОЗУ Z80.  Можно километры играть. Но могу ошибаться.

Ну или можно весь  трек сделать в ADPCM(сжатие в 4 раза по сравнению с WAV), разжимать семплы и дуть их в DAC.  А спец-звуки наоборот - делать FM синтом+PSG.

Цитата
К слову, встречал даж VST для фруктов, где можно писать чиптюн на сегу. Именно не фейковый, а с возможностью дальнейшего экспорта в VGM. Но ломанной версии так и не нашёл, поэтому побаловаться не удалось.

Этот? : https://www.youtube.com/watch?v=wU4COz6Gc4U

SEGA GENESIS / MEGADRIVE VST FM SYNTH

Копал его.  Даже готов был купить.   Но оттолкнул гемор с конверсией в VGM:

https://alyjameslab.blogspot.com/2016/02/fmdrive-vst-ym2612-and-spsg-vst-sn76489.html

Фрути лупс тем и фигов, что нифига не даёт экспорта в дамп регистров и временных задержек.   Только Wav, mp3 или midi.

Цитата
Рассинхрон FM и цифры. Очень заметно на длинных цифровых петлях. Исходный трек клеил в Deflemask, выгружал для использования с SGDK, запускал в нескольких разных билдах Gens, везде был просто адовый рассинхрон. причину искать не стал, забил. Может за два года в этой цепочке инструментов что-то поменялось и всё починили.

Возьму на заметку.

Оффлайн ALKOSHA

  • Пользователь
  • Сообщений: 810
  • Люблю донди.
    • ВКонтакте
    • Просмотр профиля
SGDK
« Ответ #692 : 26 Ноябрь 2021, 09:54:07 »
Я имел ввиду, что исходные семплы XM/MOD/IT заменять на FM-инструменты.

Я писал треки только в VGM-мейкере. Там под DAC отведён только один канал, как он есть физически на сеге. Ну и частоту/громкость/цикличность и прочие таблично-волновые выкрутасы, присущие упомянутым форматам, в vgm мейкере нельзя на ходу регулировать.

Может в Дефлекмаске можно, не вникал. Та и лимиты на продолжительность семплов не проверял.
Имхо, для музла сежный фм-синтез самодостаточный, и звучит куда сочнее амижки. А микширование 4ёх виртуальных каналов в один физический даже теряет в разрядности, вместо 8ми бит выйдет 6, никакой интерполяции, хриплый шум, нафиг оно нужно... :neznayu:

Оффлайн rep-stosw

  • Пользователь
  • Сообщений: 110
  • Пол: Мужской
  • Аппаратчик
    • Youtube
    • Просмотр профиля
SGDK
« Ответ #693 : 28 Ноябрь 2021, 14:07:06 »
Так, я не понял.  Что за фигня с лимитами спрайтов?

Создал спрайт размером 200x168 пикселей.

Запихал его в res:
SPRITE S  "S.png"   25 21 NONE 0 NONE SPRITE
При сборке пишет, что исчерпан лимит:

Цитата
Sprite S_animation0_frame0 uses 42 internal sprites(is above limit 16). Try reduce size or split it...

Какие ещё 16 спрайтов?  Сега поддерживает до 80 спрайтов.

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

Что я делаю не так?

Оффлайн rep-stosw

  • Пользователь
  • Сообщений: 110
  • Пол: Мужской
  • Аппаратчик
    • Youtube
    • Просмотр профиля
SGDK
« Ответ #694 : 29 Ноябрь 2021, 12:53:35 »
Какие ещё 16 спрайтов?  Сега поддерживает до 80 спрайтов.

Очевидно, Стеф залимитил максимальное число спрайтов на 1 фрейм анимации. Печально.   Толкнул в плейн свой мега-спрайт.

Обнаружил новую проблему.   Делаю по HBLANK изменение цвета:

u16 gradientColor=0x0000;

Declare your H-Int function like this:

void hint()
{
 PAL_setColor(0,gradientColor);
 gradientColor^=0x0200;
}

Then prepare your H-Int gradient effect using this from your main code:

        // each 4 lines
        VDP_setHIntCounter(4);

        // enable H-Int
        VDP_setHInterrupt(TRUE);

        // set H-Int callback method
        SYS_setHIntCallback(hint);
       
        ...
       
        while(TRUE)
        {
          ..
          SYS_doVBlankProcess();

        }


Идут полоски чёрная-синяя-...   Но тайловая плоскость артефачит жутко: часть тайлов при обновлении не дорисовываются.

Запрещаю HINT - плоскость анимируется без артефактов.  Полоски естественно не рисуются.

Плоскость анимирую так:

void BG_Update(void)
{
 static u8 t=0;
 static u8 m=0;

 if(!(t&31))
 {
  switch(m)
  {
   case 0: //0..7
    VDP_setTileMapEx(BG_A,TBG1.tilemap,TILE_ATTR_FULL(PAL3,FALSE,FALSE,FALSE,ind1),16/8,56/8,0*(208/8),0,208/8,168/8,CPU);
   break;
   case 8:
    VDP_setTileMapEx(BG_A,TBG1.tilemap,TILE_ATTR_FULL(PAL3,FALSE,FALSE,FALSE,ind1),16/8,56/8,1*(208/8),0,208/8,168/8,CPU);
   break;
   case 9:
    VDP_setTileMapEx(BG_A,TBG1.tilemap,TILE_ATTR_FULL(PAL3,FALSE,FALSE,FALSE,ind1),16/8,56/8,2*(208/8),0,208/8,168/8,CPU);
   break;
   case 10: //10..17
    VDP_setTileMapEx(BG_A,TBG1.tilemap,TILE_ATTR_FULL(PAL3,FALSE,FALSE,FALSE,ind1),16/8,56/8,3*(208/8),0,208/8,168/8,CPU);
   break;
  }

  m++;
  if(m==18)m=0;
 }

 t++;
}

Как связаны между собой HINT, палитра и тайловая плоскость?

P.S.  И кстати, словил ограничение на число спрайтов по горизонтали.  Уже при попытке нарисовать 17-й спрайт он затирается.  А не 20, как пишут интернеты.

Оффлайн ALKOSHA

  • Пользователь
  • Сообщений: 810
  • Люблю донди.
    • ВКонтакте
    • Просмотр профиля
SGDK
« Ответ #695 : 29 Ноябрь 2021, 15:03:29 »
Цитата
P.S.  И кстати, словил ограничение на число спрайтов по горизонтали.  Уже при попытке нарисовать 17-й спрайт он затирается.  А не 20, как пишут интернеты.
Интернеты всё правильно пишут, если речь про спрайты размером 16х16 пикселей. То есть это аккурат 320 пикселей по горизонтали.
И да, в режиме 256х224 лимиты жоще - 16 спрайтов per scanline. Стыдно сегисту не знать об этом.

Цитата
Создал спрайт размером 200x168 пикселей.
Так это виртуальный спрайт, состоящий из нескольких хардварных. Смотри фрагментацию оных, оно же как мозаика складывается из комбинаций:
8×8, 8×16, 8×24, 8×32, 16×8, 16×16, 16×24, 16×32, 24×8, 24×16, 24×24, 24×32, 32×8, 32×16, 32×24, 32×32

Добавлено позже:
Идут полоски чёрная-синяя-...   Но тайловая плоскость артефачит жутко: часть тайлов при обновлении не дорисовываются.
Анимировать по Set_TileMap в данном случае не самая удачная затея, на мой дилетантский взгляд.
Возможно, корректнее использовать VDP_loadTileData, или что-то такое, чтоб просто менять содержимое графики в VRAM, а не на ходу ещё и задавать таблицу позиций тайлов.
« Последнее редактирование: 29 Ноябрь 2021, 15:23:05 от ALKOSHA »

Оффлайн rep-stosw

  • Пользователь
  • Сообщений: 110
  • Пол: Мужской
  • Аппаратчик
    • Youtube
    • Просмотр профиля
SGDK
« Ответ #696 : 30 Ноябрь 2021, 08:01:23 »
Интернеты всё правильно пишут, если речь про спрайты размером 16х16 пикселей. То есть это аккурат 320 пикселей по горизонтали.
И да, в режиме 256х224 лимиты жоще - 16 спрайтов per scanline.

Я не говорил, что у меня 256x224.  :)  Как раз наоборот - 320x224.   Значит 20 спрайтов в длину.

Цитата
Стыдно сегисту не знать об этом.

Сегоиду!  :lol:

Итак, возвращаясь к проблеме лимита спрайтов в строку.

Есть 9 составных спрайтов 40x40 пикселей,  которые бьются на 4 сеговских аппаратных спрайта так:
32x32
8x32
32x8
8x8

Итого в длину имеем 9x2 = 18 спрайтов.   Лимита на линию быть не должно.   А он есть!   Почему?

Картинка под постом.   Начиная с 17-го спрайта идёт залимичивание.

Проверил на эмуляторах Gens Kmod и Fusion.  Со снятой галкой  "Sprite Limit"  затирания правых спрайтов нет.

Что я делаю не так?   :neznayu:



Оффлайн ALKOSHA

  • Пользователь
  • Сообщений: 810
  • Люблю донди.
    • ВКонтакте
    • Просмотр профиля
SGDK
« Ответ #697 : 30 Ноябрь 2021, 09:01:22 »
rep-stosw, ты слишком переоцениваешь возможности сегулечки... :-\
40 (пикселей в ширину) умножь на 9, затем задумайся о сказанном мною выше.

Мне ток одно интересно, куда тебе столько спрайтов?
Ultracore перенасыщен спрайтами, фон частично состоит из них. Да, бывают незначительные артефакты при лимитах на  строку, но всё равно смотрится круто.
Ищи альтернативу спрайтам в слоях.

Ещё с этой гадостью боролись мерцанием (а-ля донди), вспомни руки Huge Robot в контре хардкорпс.
Ещё наверн за счёт HBlank_Int можно мерцать незримо для игрока, ну это в теории. На крайняк в sgdk
есть битмапа, где можно рисовать программные спрайты, тормозно, шакально и сердито.


Коль у тебя спрайты строго горизонтально относительно друг друга будут в ряд, и двигаются лишь по оси Y, то тут и слоем такой эффект "волны" можно замутить скроллами по столбцам. Шоб не двигалось всё остальное на фоне, надо это делать через window plane (но учти, "окно" сжирает VRAM  под дополнительную инфу о своих тайл-мапах.)

Ищо можно замостить левый или правый столбец экрана HUD интерфейсом, если у тебя часто будет много спрайтов в один ряд. Вспомни Gauntled, Gain Ground или Red Zone. Такой жырный интерфейс расположен сбоку там не просто так.
« Последнее редактирование: 30 Ноябрь 2021, 09:55:04 от ALKOSHA »

Оффлайн rep-stosw

  • Пользователь
  • Сообщений: 110
  • Пол: Мужской
  • Аппаратчик
    • Youtube
    • Просмотр профиля
SGDK
« Ответ #698 : 30 Ноябрь 2021, 10:15:30 »
rep-stosw, ты слишком переоцениваешь возможности сегулечки... :-\
40 (пикселей в ширину) умножь на 9, затем задумайся о сказанном мною выше.

ALKOSHA, решения найдены:

1. Сделать амплитуду качания спрайтов больше.
или
2. Сократить ширину спрайтов с 40 до 32.

Оба решения отлично работают в отдельности!

Цитата
40 (пикселей в ширину) умножь на 9, затем задумайся о сказанном мною выше

40*9 > 320.  Ясно, понял   :)

Коль у тебя спрайты строго горизонтально относительно друг друга будут в ряд, и двигаются лишь по оси Y, то тут и слоем такой эффект "волны" можно замутить скроллами по столбцам. Шоб не двигалось всё остальное на фоне, надо это делать через window plane (но учти, "окно" сжирает VRAM  под дополнительную инфу о своих тайл-мапах.)

В моём случае не прокатит. Потому что первые 5 спрайтов и последние 4 используют два разных слота палитры.

Вспомни Gauntled, Gain Ground или Red Zone. Такой жырный интерфейс расположен сбоку там не просто так.

Я в такое не играл.

Оффлайн ALKOSHA

  • Пользователь
  • Сообщений: 810
  • Люблю донди.
    • ВКонтакте
    • Просмотр профиля
SGDK
« Ответ #699 : 30 Ноябрь 2021, 10:23:46 »
Я в такое не играл.
А ты точно заСЕГер... то есть, сегоид?
В конце концов, можешь погуглить скрины.

Сделать амплитуду качания спрайтов больше.
Я ж говорю, это колыхание ты можешь сделать и фоном, дабы в пустую не расходовать спрайты. Скролл по столбцам работает с шагом 16 пикселей, что как раз вписывается в размеры 32 по ширине.


Добавлено позже:
Потому что первые 5 спрайтов и последние 4 используют два разных слота палитры.
Что мешает задать отдельные слоты на отдельные тайлы?
Палитра/приоритет/flipH/flipV задаются индивидуально на тайл же, а не на весь слой.

Оффлайн rep-stosw

  • Пользователь
  • Сообщений: 110
  • Пол: Мужской
  • Аппаратчик
    • Youtube
    • Просмотр профиля
SGDK
« Ответ #700 : 30 Ноябрь 2021, 11:06:12 »
А ты точно заСЕГер... то есть, сегоид?

 :) Сегоид - человек, интересущийся программированием под Сегу. Может быть как начинающим, так и опытным.  :cool:

Играть в чужие игры он не обязан.  Играют гей-меры  :lol:

Что мешает задать отдельные слоты на отдельные тайлы?
Палитра/приоритет/flipH/flipV задаются индивидуально на тайл же, а не на весь слой.

Опа!  0_0  Я думал, что на плейн только один слот палитры.  А он оказывается,  задаётся вместе с тайлом.   Спасибо!

Я подзабыл уже всё.  10 лет назад немного  с сегой возился, сейчас решил вплотную заняться через SDK.

Оффлайн ALKOSHA

  • Пользователь
  • Сообщений: 810
  • Люблю донди.
    • ВКонтакте
    • Просмотр профиля
SGDK
« Ответ #701 : 30 Ноябрь 2021, 11:13:51 »
Я подзабыл уже всё.  10 лет назад немного  с сегой возился, сейчас решил вплотную заняться через SDK.
Да я и сам давно не расчехлял сегушу именно для прогинга.
Но насколько мне запомнился сей момент, я вроде рисовал на одном плейне разными слотами, и даже palette shifting мутил по этому поводу.


Могу, конечно, ошибаться.

Добавлено позже:
Играть в чужие игры он не обязан.  Играют гей-меры 
Для меня игра это в первую очередь графоновая экспертиза (не только на сеге, а и на любой другой ретро-платформе), всегда  интересна техническая реализация.

Оффлайн SPOT

  • Пользователь
  • Сообщений: 577
    • Просмотр профиля
SGDK
« Ответ #702 : 01 Декабрь 2021, 11:57:41 »
Кто подскажет как использовать kdebug.h ?
Использую эмулятор Gens v2.12a KMod 0.7c
В коде:
KDebug_AlertNumber (2);
KDebug_Alert ("yigh");

Где в эмуляторе должны появится эти сообщения?
Если в Debug Message то их там нет.

Оффлайн Werton

  • Пользователь
  • Сообщений: 987
  • Пол: Мужской
    • Youtube
    • Просмотр профиля
SGDK
« Ответ #703 : 03 Декабрь 2021, 04:04:22 »
Кто подскажет как использовать kdebug.h ?
Использую эмулятор Gens v2.12a KMod 0.7c
В коде:
KDebug_AlertNumber (2);
KDebug_Alert ("yigh");

Где в эмуляторе должны появится эти сообщения?
Если в Debug Message то их там нет.
Да в Debug Messages.
Включи опцию Menu>Debug>Activate Development Features.
Еще, кстати, в tools.h есть расширенный список вспомогательных функций для логгирования - KLog.
« Последнее редактирование: 03 Декабрь 2021, 04:10:56 от Werton »

Оффлайн SPOT

  • Пользователь
  • Сообщений: 577
    • Просмотр профиля
SGDK
« Ответ #704 : 03 Декабрь 2021, 11:39:38 »
Werton, благодарю за помощь)

Оффлайн rep-stosw

  • Пользователь
  • Сообщений: 110
  • Пол: Мужской
  • Аппаратчик
    • Youtube
    • Просмотр профиля
SGDK
« Ответ #705 : 04 Декабрь 2021, 15:18:49 »
Запускаю воспроизведение VGM трека через SGDK:

XGM_setLoopNumber(-1);
 XGM_startPlay(level_music);

Воспроизведение играет до конца, затем останавливается и не играет сначала.  А должно.

VGM трек заканчивается нормально, тихой ваты нет.  Смотрел в Foobar.

Что я делаю не так?

Оффлайн rep-stosw

  • Пользователь
  • Сообщений: 110
  • Пол: Мужской
  • Аппаратчик
    • Youtube
    • Просмотр профиля
SGDK
« Ответ #706 : 04 Декабрь 2021, 20:50:15 »
Воспроизведение играет до конца, затем останавливается и не играет сначала.  А должно.

VGM трек заканчивается нормально, тихой ваты нет.  Смотрел в Foobar.

Что я делаю не так?

Точка зацикливания была в конце результата экспорта. Из-за этого не скруглялось в начало.

Пришлось курить формат VGM.  4 байта с адреса 0x1C  нужно заменить на 0x40 0x00 0x00 0x00 - это скругление на начало трека - с 64-го байта пойдут данные.  Размер VGM-хедера  64 байта.

Всё отлично работает и закругляется.  :)

Причём таким образом дорабатывать приходится  треки с Deflemask и с VST GennyFL   :lol:

Кстати, подумываю взять плагин круче, чем GennyFL. Потому что GennyFL довольно кривой.  То велосити слетает, из-за чего часть инструментов проглатывается,  то наоборот вылезают.

С Deflemask таких проблем нет, но я не трекерщик  :blush:

Оффлайн rep-stosw

  • Пользователь
  • Сообщений: 110
  • Пол: Мужской
  • Аппаратчик
    • Youtube
    • Просмотр профиля
SGDK
« Ответ #707 : 05 Декабрь 2021, 08:32:18 »
Можно ли создать маленькое окно в левом верхнем углу плоскости А,  да ктому же ещё и прозрачное? (чтобы цвет 0 был прозрачным и сквозь него проглядывала плоскость А) ?


Оффлайн ALKOSHA

  • Пользователь
  • Сообщений: 810
  • Люблю донди.
    • ВКонтакте
    • Просмотр профиля
SGDK
« Ответ #708 : 08 Декабрь 2021, 00:10:55 »
Кстать, напомните эмуль/сборку Gens'a или ещё какой, где можно просматривать плейны по-отдельности в полный их размер. У меня был, да где-то затерялся, давно сегизмом не занимался.

Онлайн Ogr

  • Пользователь
  • Сообщений: 7717
    • Просмотр профиля
SGDK
« Ответ #709 : 08 Декабрь 2021, 00:27:22 »
gensKMod

Оффлайн rep-stosw

  • Пользователь
  • Сообщений: 110
  • Пол: Мужской
  • Аппаратчик
    • Youtube
    • Просмотр профиля
SGDK
« Ответ #710 : 08 Декабрь 2021, 07:38:04 »
Можно ли создать маленькое окно в левом верхнем углу плоскости А,  да ктому же ещё и прозрачное? (чтобы цвет 0 был прозрачным и сквозь него проглядывала плоскость А) ?

Отвечу сам себе(уже который раз) - нет!  Придётся делать спрайтами с высоким приоритетом отрисовки, как это сделано в X-Men2.  Печально конечно, ну а что делать...  Спрайты - сильно дорогой ресурс. Надеюсь, мне их хватит.

Ещё покопал этот Window, как выяснилось, это часть от Plane A, которая не подвергается скроллу.   Лучше бы ещё третью плоскость добавили, как в Capcom PS1/2/3. Чем это сраное окно.  :D



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

Который кроме отладки более ни чем не полезен, ибо тормозит у меня он жутко (дёрганная анимация) и жрёт одно ядро (50%) в свёрнутом виде.

Ещё Gens меня бесит, что он не ставит фокус на своё окно.   Я его вызов добавил после сборки РОМ'а в SDGK(чтобы построенный РОМ в эмуле запускался после сборки), приходится тыкать по нему мышью, чтоб дать управление эмулятору.   

Философия "делаем всё в 1 клик" называется :)

@echo off

@SET GDK=C:\SGDK
@SET GDK_WIN=C:\SGDK
@SET PATH=C:\SGDK\bin;%PATH%

goto BUILD

echo =================== CLEANING... ====================
if exist out rmdir out /s /q
if exist src\boot rmdir src\boot /s /q
if exist res\*.h del res\*.h
if exist res\*.s del res\*.s

:BUILD

echo =================== BUILDING... ===================
%GDK_WIN%\bin\make -f %GDK_WIN%\makefile.gen

echo ==================== DONE! ======================

pause

copy out\rom.bin  ..\GensKMod\rom.bin

copy out\rom.bin  ..\Fusion364\rom.bin

:: ..\GensKMod\gens.exe rom.bin

cd  ..\Fusion364
Fusion.exe rom.bin -gen

::pause

Fusion идёт отлично!
« Последнее редактирование: 08 Декабрь 2021, 07:54:23 от rep-stosw »

Оффлайн Werton

  • Пользователь
  • Сообщений: 987
  • Пол: Мужской
    • Youtube
    • Просмотр профиля
SGDK
« Ответ #711 : 08 Декабрь 2021, 09:35:35 »
Лучше бы ещё третью плоскость добавили, как в Capcom PS1/2/3. Чем это сраное окно. 
Ага, а заодно бы добавили спрайтов, альфа канал им, вращение, масштабирование как в snes, еще что-нибудь из 3d там как  на psx :lol: Им бы для этого аппаратную часть пришлось бы менять, а она и так в доску урезанная для удешевления, а window это просто костыль, который немного упрощает рисования hud'а, и то, только при условии, что он будет занимать целиком горизонтальную или вертикальную полосу экрана.


Добавлено позже:
Ещё Gens меня бесит, что он не ставит фокус на своё окно.   Я его вызов добавил после сборки РОМ'а в SDGK(чтобы построенный РОМ в эмуле запускался после сборки), приходится тыкать по нему мышью, чтоб дать управление эмулятору.   

Философия "делаем всё в 1 клик" называется
Ну и дай этому окну фокус после запуска, раз уже взялся лесопеды писать, на встроенном vbs например.
« Последнее редактирование: 08 Декабрь 2021, 09:44:40 от Werton »

Оффлайн rep-stosw

  • Пользователь
  • Сообщений: 110
  • Пол: Мужской
  • Аппаратчик
    • Youtube
    • Просмотр профиля
SGDK
« Ответ #712 : 08 Декабрь 2021, 10:11:27 »
вращение, масштабирование как в snes

А вот это лишнее.   От SNES-овского, GBA-шного вращения и скейлинга меня подташнивает



P.S.  А SPC700 в SNES - это отрыжка инженера  :lol:  Ибо звук глухой, как-будто на ухо наступили и не более чем микшер на 8 семплов.

Оффлайн ALKOSHA

  • Пользователь
  • Сообщений: 810
  • Люблю донди.
    • ВКонтакте
    • Просмотр профиля
SGDK
« Ответ #713 : 08 Декабрь 2021, 20:02:12 »
добавили спрайтов, альфа канал им, вращение, масштабирование как в snes
Но ведь снюс не могёт ни вращать, ни масштабировать спрайты, лишь слой. Да и альфаканала у спрайтов нет (всё те же 4bpp, как у сиги). Ну а полупрозрачность умеет и сежка, но на слой. Та и по количеству спрайтов в рамсах сега vs снюс не всё так однозначно.


Добавлено позже:
Ибо звук глухой

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

Чем СНЮС однозначно круче сеги - эт около-VGA палитра. Но такой простор зачастую сказывался негативно на результате - криворукие художники подбирали цвета от балды, и получалось то мыльно блекло, то чрезмерно кислотно (кстати, рисоваки на аркадных автоматах конца 80-ых рубежа 80-90ых тем же грешат, лишь к середине 90-ых исправились). На сеге тож полно халтуры, но поменьше. На СНЮС прям аж каждая вторая игра - мыловарня.
« Последнее редактирование: 08 Декабрь 2021, 22:19:18 от ALKOSHA »

Оффлайн Werton

  • Пользователь
  • Сообщений: 987
  • Пол: Мужской
    • Youtube
    • Просмотр профиля
SGDK
« Ответ #714 : 09 Декабрь 2021, 00:13:41 »
Но ведь снюс не могёт ни вращать, ни масштабировать спрайты, лишь слой. Да и альфаканала у спрайтов нет (всё те же 4bpp, как у сиги).
Афигеть, кто бы знал, а я думал там полные 16 бит :lol: не шарю за snes совсем, но верю на слово :)


Добавлено позже:
Ну а полупрозрачность умеет и сежка, но на слой.
Если ты про shadow & highlight, то это ни разу не полупрозрачность.
« Последнее редактирование: 09 Декабрь 2021, 03:24:36 от Werton »

Оффлайн ALKOSHA

  • Пользователь
  • Сообщений: 810
  • Люблю донди.
    • ВКонтакте
    • Просмотр профиля
SGDK
« Ответ #715 : 09 Декабрь 2021, 12:35:51 »
Цитата
Если ты про shadow & highlight, то это ни разу не полупрозрачность.

Нет, я про трушную недокументированную полупрозрачность. (Смотри внимательнее демку Overdrive2)

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


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

Добавлено позже:
Цитата
: when we realised what we had found in the Mega Drive hardware (a register which enabled layer blending that noone else knew about), we had a choice: make a forum post about it, or make a demo about it. We also knew that someone would discover it at some point. But this awesome opportunity doesn't come every day. So we decided at that moment to do the right thing - exploit this feature and make the best demo that we could to release at a demoparty as soon as possible.

We were also lucky because the hardware we happened to be testing with was one of the MD1s that the feature works correctly on. That was in 2013, and it was only quite a bit later that we realised that some versions of the VDP didn't behave the same - but in my opinion that wasn't a reason to cancel our demo or research. We were close to releasing at Evoke 2016 but finally managed to complete in time for the compo at Revision - see if you recognise the building in the unused scene below :)
« Последнее редактирование: 09 Декабрь 2021, 12:50:14 от ALKOSHA »

Оффлайн Werton

  • Пользователь
  • Сообщений: 987
  • Пол: Мужской
    • Youtube
    • Просмотр профиля
SGDK
« Ответ #716 : 09 Декабрь 2021, 14:23:32 »
Не похоже на  хигхлигхт. Обычно хигхлихт ярче подсвечивает.
Да, это полупрозрачность, но дело не в яркости, а что есть смешение цветов спрайта и задника, у хайлайта просто однородно увеличивается яркость задника по области спрайта на фиксированное значение, вне зависимости от того, что там на спрайте нарисовано. Так к примеру, с этим можно сделать эффект персонажа (спрайта) ходящего за стеклом, а с хайлайтом такого не добиться. Но вот оговорка, что эффект работает не на всех видах vdp, по мне ставит крест на этом эффекте, с точки зрения применения его в играх.

Оффлайн ALKOSHA

  • Пользователь
  • Сообщений: 810
  • Люблю донди.
    • ВКонтакте
    • Просмотр профиля
SGDK
« Ответ #717 : 09 Декабрь 2021, 14:47:33 »
ходящего за стеклом, а с хайлайтом такого не добиться.

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

Оффлайн rep-stosw

  • Пользователь
  • Сообщений: 110
  • Пол: Мужской
  • Аппаратчик
    • Youtube
    • Просмотр профиля
SGDK
« Ответ #718 : 11 Декабрь 2021, 11:36:42 »
Гружу  карту уровня таким кодом:

int idx2=ind;
 ind+=BG1_Map.tileset->numTile;

 VDP_loadTileSet(&BG1_Tileset,idx2,DMA);
 BG1=MAP_create(&BG1_Map,BG_A,TILE_ATTR_FULL(PAL1,FALSE,FALSE,FALSE,idx2));
 VDP_setPalette(PAL1,BG1_Map.palette->data);

Вопрос,  как повысить приоритет отдельным тайлам - платформам в уровне - в пределах одного плейна?   Второй плейн отдан под фон.

Проще говоря, хочется задавать разный приоритет тайлам в пределах одной плоскости, как на картинках ниже:




Оффлайн rep-stosw

  • Пользователь
  • Сообщений: 110
  • Пол: Мужской
  • Аппаратчик
    • Youtube
    • Просмотр профиля
SGDK
« Ответ #719 : 11 Декабрь 2021, 14:23:33 »
Вопрос,  как повысить приоритет отдельным тайлам - платформам в уровне - в пределах одного плейна?   Второй плейн отдан под фон.

Внезапно,  нашёл решение, проверил - работает:



Ещё раз убеждаюсь в том, что Стеф - гений!  :cool:

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