Pregunta

Estoy intentando combinar alfa sprites y fondos con devkitPro (incluidos libnds, libarm, etc.).

¿Alguien sabe como hacer esto?

¿Fue útil?

Solución

Como referencia genérica, una vez escribí una pequeña entrada de blog sobre ese tema.Básicamente, primero debe definir qué capa se combina alfa con qué otras capas.Hasta donde se,

  • las capas de origen deben estar sobre las capas de destino para que se muestre cierta combinación.eso significa que la prioridad de las capas de origen debe ser numéricamente menor que la prioridad de las capas de destino.
  • la capa de origen es lo que será translúcido, los destinos son lo que se verá a través (y sí, esto me parece bastante confuso).

Para el sprites, específicamente, entonces tienes 3 formas de lograr la combinación alfa dependiendo de lo que necesitas y de lo que estés "listo a pagar" por ello:

  • Puedes hacer que todos los sprites tengan alguna combinación alfa activando BLEND_SRC_SPRITE en REG_BLDCNT[_SUB] ...No es tan útil.
  • Puedes activar selectivamente la combinación de algunos sprites usando ATTR0_TYPE_BLENDED.El nivel de fusión será el mismo para todos los sprites (y capas)
  • Los sprites de tipo mapa de bits usan colores directos (sin pasar por las paletas), por lo que ATTR2_PALETTE() El campo de sprites GBA es inútil y ha sido reciclado en ATTR2_ALPHA.

Otros consejos

Los sprites en la DS se pueden mezclar alfa usando el registros de control de mezcla.TONC brinda la información necesaria para que la mezcla funcione en la pantalla principal porque las ubicaciones de los registros son las mismas.La combinación alfa en la pantalla secundaria utiliza el mismo proceso con diferentes registros en un desplazamiento de 1000 h.

Los registros que verá son REG_BLDMOD, REG_COLV, y REG_COLY para la pantalla principal y REG_BLDMOD_SUB, REG_COLV_SUB, y REG_COLY_SUB para la pantalla secundaria.

Recuerda también que tendrás que cambiar el modo gráfico del sprite para permitir la combinación por sprite.

Ha sido un largo Hace tiempo que no hago programación de GBA, pero, según recuerdo, la DS admite la mayoría (si no todas) de las cosas que admite GBA. Este El enlace tiene una sección sobre cómo realizar una combinación alfa para GBA (sección 13.2).No sé si existe una forma específica de hacerlo para DS, pero esta debería funcionar para ti.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top