Swizzled Image

Lugar donde se intentarán resolver problemas específicos
Responder
Avatar de Usuario
gledson999
Mensajes: 40
Registrado: 17 Ene 2013, 03:23
Contactar:

Swizzled Image

Mensaje por gledson999 » 15 Feb 2016, 01:53

Soy una sombra proyecto de traducción del juego del Coloso PS2, pero estoy teniendo problemas con las imágenes que están en el menú que se swizzled

Como esta imagenes aquí se swizzled, He copiado la imagen y una paleta de 16 colores en la imagen TIM2 y obtuve el resultado
[img]http://puu.sh/n8euL.png[/img]

Aquí está la misma imagen que se muestra unswizzled con SOTC-Viewer que es sólo un viewer/extractor, pero no tiene la función de insertar :(
[img]http://puu.sh/n8e7H.png[/img]

¿Quién me puede ayudar, aquí están las imagenes

Swizzled image

EDIT:
OBS: lo siento por mi español, que no soy muy bueno en español
Yo estaba buscando en Internet, he encontrado algo interesante puede ser la de ayudar

Código: Seleccionar todo

///////// swizzlers /////////

void Swizzle8to32(void * pSwizTexels, const void * pInTexels, const int32 width,
      const int32 height)
{
   // this function works for the following resolutions
   // Width:       any multiple of 16 smaller then or equal to 4096
   // Height:      any multiple of 4 smaller then or equal to 4096

   // the texels must be uploaded as a 32bit texture
   // width_32bit = width_8bit / 2
   // height_32bit = height_8bit / 2
   // remember to adjust the mapping coordinates when
   // using a dimension which is not a power of two

   for&#40;int y=0; y<height; y++&#41;
      for&#40;int x=0; x<width>>2&#41;&0x1&#41;*4;
         const int32 posY = &#40;&#40;&#40;y&&#40;~3&#41;&#41;>>1&#41; + &#40;y&1&#41;&#41;&0x7;
         const int32 column_location = posY*width*2 + &#40;&#40;x+swap_selector&#41;&0x7&#41;*4;

         const int32 byte_num = &#40;&#40;y>>1&#41;&1&#41; + &#40;&#40;x>>2&#41;&2&#41;;     // 0,1,2,3

         &#40;&#40;uint8 *&#41; pSwizTexels&#41;&#91;block_location + column_location + byte_num&#93; = uPen;
      &#125;
&#125;

void Swizzle4to32&#40;void * pSwizTexels, const void * pInTexels, const int32 width,
      const int32 height&#41;
&#123;
   // this function works for the following resolutions
   // Width&#58;       32, 64, 96, 128, any multiple of 128 smaller then or equal to 4096
   // Height&#58;      16, 32, 48, 64, 80, 96, 112, 128, any multiple of 128 smaller then or equal to 4096

   // the texels must be uploaded as a 32bit texture
   // width_32bit = height_4bit / 2
   // height_32bit = width_4bit / 4
   // remember to adjust the mapping coordinates when
   // using a dimension which is not a power of two

   for&#40;int y=0; y<height; y++&#41;
      for&#40;int x=0; x<width>>1&#41;&#93;>>&#40;&#40;index&1&#41;*4&#41;&#41;&0xf;

         // swizzle
         const int32 pageX = x & &#40;~0x7f&#41;;
         const int32 pageY = y & &#40;~0x7f&#41;;

         const int32 pages_horz = &#40;width+127&#41;/128;
         const int32 pages_vert = &#40;height+127&#41;/128;

         const int32 page_number = &#40;pageY/128&#41;*pages_horz + &#40;pageX/128&#41;;

         const int32 page32Y = &#40;page_number/pages_vert&#41;*32;
         const int32 page32X = &#40;page_number%pages_vert&#41;*64;

         const int32 page_location = page32Y*height*2 + page32X*4;

         const int32 locX = x & 0x7f;
         const int32 locY = y & 0x7f;

         const int32 block_location = &#40;&#40;locX&&#40;~0x1f&#41;&#41;>>1&#41;*height + &#40;locY&&#40;~0xf&#41;&#41;*2;
         const uint32 swap_selector = &#40;&#40;&#40;y+2&#41;>>2&#41;&0x1&#41;*4;
         const int32 posY = &#40;&#40;&#40;y&&#40;~3&#41;&#41;>>1&#41; + &#40;y&1&#41;&#41;&0x7;

         const int32 column_location = posY*height*2 + &#40;&#40;x+swap_selector&#41;&0x7&#41;*4;

         const int32 byte_num = &#40;x>>3&#41;&3;     // 0,1,2,3
         const int32 bits_set = &#40;y>>1&#41;&1;     // 0,1            &#40;lower/upper 4 bits&#41;

         uint8 &setPix = &#40;&#40;uint8 *&#41; pSwizTexels&#41;&#91;page_location + block_location +
            column_location + byte_num&#93;;
         setPix = &#40;setPix & &#40;-bits_set&#41;&#41; | &#40;uPen<<&#40;bits_set*4&#41;&#41;;
      &#125;
&#125;


void Swizzle16to32&#40;void * pSwizTexels, const void * pInTexels, const int32 width,
      const int32 height&#41;
&#123;
   // this function works for the following resolutions
   // Width&#58;       16, 32, 48, 64, any multiple of 64 smaller then or equal to 4096
   // Height&#58;      8, 16, 24, 32, 40, 48, 56, 64, any multiple of 64 smaller then or equal to 4096

   // the texels must be uploaded as a 32bit texture
   // width_32bit = height_16bit
   // height_32bit = width_16bit / 2
   // remember to adjust the mapping coordinates when
   // using a dimension which is not a power of two

   for&#40;int y=0; y<height; y++&#41;
      for&#40;int x=0; x<width>>3&#41;&1;       // 0,1

         &#40;&#40;short *&#41; pSwizTexels&#41;&#91;page_location + block_location + column_location
            + short_num&#93; = uCol;
      &#125;
&#125;

Avatar de Usuario
CUE
Administrador
Administrador
Mensajes: 5625
Registrado: 24 Ene 2011, 16:52

Mensaje por CUE » 15 Feb 2016, 12:20

Hay utilidades para esos ficheros. Mira en http://repo.or.cz/w/dormin.git donde hay un NTO viewer.

Avatar de Usuario
gledson999
Mensajes: 40
Registrado: 17 Ene 2013, 03:23
Contactar:

Mensaje por gledson999 » 15 Feb 2016, 17:19

CUE escribió:Hay utilidades para esos ficheros. Mira en http://repo.or.cz/w/dormin.git donde hay un NTO viewer.
por lo que vi es el mismo programa imgv.exe que se utiliza en SOTC viewer junto con dormin.exe, pero él sólo es un visor, pero no convierte de PNG a PNT novamente

estou usando essa compilação

SotC Viewer github
SotC Viewer compiled

pero el código fuente debe ser algo de un revérse, pero no sé nada de programación

OBS:

A lo largo de la historia, consejos han sido traducidos, porque las imágenes de la historia principal no es swizzle, fue fácil, la traducción completa está en el 80% ya, mi único problema es sólo aquellos para imágenes benditas con swizzle :( ja ja ja ja

[img]http://puu.sh/n8V4i.jpg[/img]
[img]http://puu.sh/n8V1a.jpg[/img]

Responder