User Tag List

Resultados 1 al 6 de 6

Tema: Rutinas para sprites RLE en GP32

  1. #1

    Fecha de ingreso
    May 2004
    Ubicación
    Valladolid
    Mensajes
    483
    Mencionado
    0 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    0
    Thanked in
    Agradecido 0 veces en [ARG:2 UNDEFINED] posts

    Rutinas para sprites RLE en GP32

    ¡Hola amigos!

    Aquí os adjunto unas rutinas para generar y pintar sprites RLE en la GP32. Probablemente los algoritmos valgan también para la GP2X si tienen la pantalla rotada internamente como la GP32.

    En el ZIP adjunto teneis la parte Win32; es deicr, el ejecutable (y su código fuente, que sé que os gusta enredar) para convertir ficheros .tga en los .rle que procesa el resto del código.
    Para convertir una imagen:
    tga2nrlespr imagen.tga imagen.rle número_de_sprites_que_contiene

    El código de mi "graphics.c", ya dentro el proyecto de GP32, es el siguiente:
    http://muer.njoerdba.com/paste/view....3-745af91c8b4a
    Por supuesto, sacad las declaraciones de los tipos al .h y crear los prototipos de las funciones que querais utilizar también en el .h
    Por cierto, pasad de las funciones LoadImage(), DrawImage(), etc., que son para otro formato de fichero (se me ha olvidado quitarlas antes de pegarlas en el Stuart's sumptuous paste site). Las que os interesan son las LoadSprite(), DrawSprite(), etc.

    Para cargar un sprite le pasais un puntero a struct stSprite, la cadena con el nombre de la imagen (habreis llamado mucho antes a GpFatInit() y GpRelativePathSet()) y el color a partir del cual puede cargar (por ejemplo, si se pasa un 8 y la imagen tiene 3 colores, se utilizarán las entradas 8, 9 y 10 de la paleta).

    Sed buenos.

    Nés.
    Archivos adjuntados Archivos adjuntados
    -- theNestruo. "Old BASIC programmers never die; they GOSUB but never RETURN."

  2. #2

    Fecha de ingreso
    May 2004
    Ubicación
    Coslada, Madrid
    Mensajes
    13,259
    Mencionado
    2 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    12
    Thanked in
    Agradecido 9 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    6
    Hostiaaaaas, ¿dónde te metes theNestruo? Ya te echábamos de menos

    A ver si seguimos sabiendo de ti

  3. #3

    Fecha de ingreso
    Feb 2004
    Ubicación
    Madrid
    Mensajes
    8,516
    Mencionado
    30 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    191
    Agradecer Thanks Received 
    299
    Thanked in
    Agradecido 177 veces en [ARG:2 UNDEFINED] posts
    Esto sí que es un pedazo de regreso xD

  4. #4

    Fecha de ingreso
    Aug 2003
    Ubicación
    Madrid (Getafe)
    Mensajes
    13,901
    Mencionado
    48 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    5
    Agradecer Thanks Received 
    221
    Thanked in
    Agradecido 164 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    2
    supongo que la gracia de usar tu librerias rle, es no tener que usar SDL (por ejemplo) no?

    se puede editar rle directamente con photochoop? sino, quizas podrias adaptar tus librerias para usar PCX (que internamente usan rle y se pueden editar)

    de hecho hasta que empece a usar SDL, yo usaba PCX para los sprites con la gp32

    Aiken

  5. #5

    Fecha de ingreso
    May 2004
    Ubicación
    Valladolid
    Mensajes
    483
    Mencionado
    0 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    0
    Thanked in
    Agradecido 0 veces en [ARG:2 UNDEFINED] posts
    Cita Iniciado por Aiken
    supongo que la gracia de usar tu librerias rle, es no tener que usar SDL (por ejemplo) no?
    No exactamente; la gracia de usar sprites RLE es que se pintan más rápido. El truco reside en que no haya que mirar pixel a pixel si es transparente o no.

    Cita Iniciado por Aiken
    se puede editar rle directamente con photochoop? sino, quizas podrias adaptar tus librerias para usar PCX (que internamente usan rle y se pueden editar)
    Hombre, supongo que se podrá, pero no creo que puedan abrir NRLE (Nestruo RLEs) xD. El caso es que el formato que genera/utiliza el código que os he mostrado no es un RLE al uso. Éste está diseñado no para ahorrar espacio (como los RLE de los PCX, por ejemplo), sino para que se dibuje muy rápidamente en la GP32. A saber:
    - Los datos van de abajo a arriba y de izquierda a derecha, como la pantalla de la GP32; esto reduce y simplifica los cálculos para obtener el pixel que se ha de pintar.
    - La compresión RLE no se hace por colores: se hace por transparencia. En cada bloque RLE el primer bit del primer byte puede...
    ...ser un 0. Si los demás bits son 0, se ha acabado la línea (la columna, realmente) y se puede pasar a la siguiente. En otro caso, los otros siete bits indican cuántos píxeles se han de saltar.
    ...ser un 1, que indica que se han de pintar tantos píxeles seguidos como indiquen los siete bits restantes más uno (para aprovechar el valor 0); aquí se utiliza mi antiguo FastMemoryCopy()
    Como puedes ver, aunque toda la columna sean píxeles del mismo color, eso no se comprime en RLE; lo haría más lento.

    Cita Iniciado por Aiken
    Aiken
    Nestruo

    Por cierto, si algiuen se pregunta cuál fue mi entrada en la GBAX2005 (creo que se menciona dentro de tga2nrle), que no se vuelva loco: aún no ha llegado a su primera versión beta... xD
    -- theNestruo. "Old BASIC programmers never die; they GOSUB but never RETURN."

  6. #6

    Fecha de ingreso
    Aug 2003
    Ubicación
    Madrid (Getafe)
    Mensajes
    13,901
    Mencionado
    48 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    5
    Agradecer Thanks Received 
    221
    Thanked in
    Agradecido 164 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    2
    Cita Iniciado por theNestruo
    ...ser un 1, que indica que se han de pintar tantos píxeles seguidos como indiquen los siete bits restantes más uno (para aprovechar el valor 0); aquí se utiliza mi antiguo FastMemoryCopy()
    Como puedes ver, aunque toda la columna sean píxeles del mismo color, eso no se comprime en RLE; lo haría más lento.

    Umh con lo de rle rotados, para un blit mas rapido ya lo pillo

    Aiken

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •