Спрайты альфа-смешения в Nintendo DS Homebrew

Я пытаюсь смешать альфа-спрайты и фоны с devkitPro (включая libnds, libarm и т. Д.).

Кто-нибудь знает как это сделать?

10.08.2008 14:49:10
3 ОТВЕТА
РЕШЕНИЕ

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

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

Для спрайтов, в частности , у вас есть 3 способа добиться альфа-смешивания в зависимости от того, что вам нужно и что вы «готовы заплатить» за это:

  • Вы можете сделать все спрайты имеют некоторые альфа-смешивание путем включения BLEND_SRC_SPRITEв REG_BLDCNT[_SUB]... не то, что полезно.
  • Вы можете выборочно включить смешивание некоторых спрайтов с помощью ATTR0_TYPE_BLENDED. Уровень смешивания будет одинаковым для всех спрайтов (и слоев)
  • спрайты растрового типа используют прямые цвета (минуя палитры), поэтому ATTR2_PALETTE()поле спрайтов GBA бесполезно и было переработано ATTR2_ALPHA.
6
19.09.2011 07:27:45

Прошло много времени с тех пор, как я занимался программированием на GBA, но, насколько я помню, DS поддерживает большинство (если не все) тех вещей, которые поддерживает GBA. Эта ссылка содержит раздел о том, как сделать альфа-смешивание для GBA (раздел 13.2). Я не знаю, есть ли способ сделать это для DS, но это должно сработать для вас.

0
11.08.2008 16:45:39

Спрайты в DS могут быть альфа-смешаны с использованием регистров управления смешиванием . TONC предоставляет необходимую информацию, чтобы заставить смешивание работать на главном экране, потому что регистры совпадают. Альфа-смешивание на подэкране использует один и тот же процесс с разными регистрами со смещением 1000 часов.

Регистры вы будете смотреть на это REG_BLDMOD, REG_COLVи REG_COLYдля главного экрана и REG_BLDMOD_SUB, REG_COLV_SUBи REG_COLY_SUBдля вспомогательного экрана.

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

4
20.09.2008 23:53:10