Pix Packer + Pix Extractor

« Older   Newer »
 
  Share  
.
  1.  
    .
    Avatar

    Dios

    Group
    Administrator
    Posts
    6,890
    Location
    Beaver City

    Status
    Offline
    Jomalin está trabajando en dos programas muy útiles para el Carmageddon 1 y me mandó varios mensajes sobre el tema que voy a ir postiando por acá.

    Pix Extractor

    ------23/05/2012

    "Llevo ya unos dias programando una utilidad para Carmageddon 1. Que es un extractor de archivos BMP a partir de los archivos PIX. Si, ya sé q existen las utilidades Pixed y Carmagedit, pero mi utilidad es por linea de comandos y tiene la siguiente ventaja: puedes extrar en pocos segundos TODAS las texturas del juego y organizadas por carpetas. Te cuento como va a ser (aun lo tengo a medio desarrollar). Esto es lo que se ejecutaria por linea de comandos:

    pixtractor src_folder dst_folder [-racepalette || -menupalette]

    Es decir que por ejemplo hariamos:

    pixtractor c:\carma\data\pixelmap c:\texturas -racepalette

    Esto lo que haría es recorrer toooodos los archivos .pix de esa carpeta y sacar todas las texturas de dentro a carpetas individuales (una por archivo pix!). Es decir, si mi utilidad ha cogido el archivo "DUMP8.PIX" que dentro tiene 8 texturas, pues te crearia la carpeta:

    c:\texturas\dump8 y dentro todas sus texturas: DDTOP.BMP, DDSCOOP.BMP..."

    ------31/05/2012

    "Ya tengo el programa extractor de texturas al 80%, me queda resolver un problema importante cuando se escriben los archivos BMP, en memoria formo todos los bytes exactos tienen q escribirse (incluida la paleta de colores correspondiente), pero a la hora de escribirlo a disco (a archivo), se corrompe la cabecera del BMP, pero creo que ya sé porque ocurre, es porque algunos compiladores de C (como GCC, el que uso) alteran el tamaño de las estructuras (que es lo que uso para escribir la cabecera del BMP). Esta explicado aqui:
    www.delorie.com/djgpp/v2faq/faq22_11.html

    Esta tarde hago pruebas para ver si soluciono el problema. Despues me queda meterle que cree un directorio por cada PIX leido (que es poca cosa) y quiero mejorar 3 o 4 puntos."

    ------01/06/2012

    "Ya tengo el programa extractor de texturas hecho. Solo que ahora quiero ordenar el codigo, cambiarle los nombres a las variables para que sea mas representativas, y algun retoque extra. Ya me escribe las texturas en archivos BMP y se ven perfectamente. Este fin de semana creo que voy a estar un poco liado, a ver si saco tiempo.

    Conoces el programa Pixed no? Que es similar al Carmagedit. Resulta que este tiene un bug importante, y es que cuando extraes las texturas a archivos BMP, le agrega muchos bytes de mas al final del BMP. Por ejemplo si extraes la imagen del 2XCOMBO.PIX, veras que el BMP resultante ocupa unos 150KB, cuando realmente solo deberia ocupar 6KB!! Puedes comprobarlo viendolo con un editor hexadecimal o guardando el BMP a otro BMP con cualquier editor grafico, veras q ocupa muchisimo menos. Mi extractor logicamente no tiene este problema, la ventaja de este, es q puedes extraer TODAS las texturas de una sola vez en 1 minuto."

    ------07/06/2012

    "Ya tengo hecho el programa extractor de texturas (archivos PIX) de Carmageddon. Le he agregado la opcion de recorrer recursivamente carpetas (parametro -r). Con solo poner la ruta del CD de carmageddon, recorre todas las carpetas en busca de archivos PIX, ya que no solo esta la carpeta \DATA\PIXELMAP sino que hay mas. Te mando una captura de pantalla para que te hagas una idea:

    pixtractorrecursiveextractionthrough

    Pix Packer

    ------23/05/2012

    "Voy a hacer la utilidad para meter todos los BMP creados en un archivo PIX! Que yo creo q todos vosotros los estais haciendo a mano... Ya lo tengo todo investigado, conozco la estructura de los PIX a la perfeccion, la de los BMP, y las 2 paletas q usa Carmageddon. Solo me queda UNA cosa: el tema de la anchura de las texturas, q sé q hay determinadas restricciones. Eso voy a investigarlo bien bien, para que mi programa AVISE si detecta que un BMP creado no tiene bien la anchura!"
     
    Top
    .
  2.  
    .
    Avatar

    Dios

    Group
    Member
    Posts
    2,051
    Location
    The Grisly Grotto

    Status
    Online
    excelente! que siga haciendo utilidades para el carma!
     
    Top
    .
  3.  
    .
    Avatar

    Dios

    Group
    Administrator
    Posts
    6,890
    Location
    Beaver City

    Status
    Offline
    Pix Extractor

    ------13/06/2012

    "Hola mastro, en la explicacion de Toshiba3:
    www.toshiba-3.com/dotclear/index.php?post/How-to-write-your-own-C1-PIX-pack

    El tema de las dimensiones de las texturas simplemente tiene una unica limitacion: el ancho debe ser multiplo de 4, punto. Ahi esta un poco engorroso explicado la verdad.

    Bien, pues aqui esta la cosa, lo acabo de investigar y REALMENTE CARMAGEDDON NO TIENE NINGUNA LIMITACION EN LAS DIMENSIONES DE LAS TEXTURAS!!! Simplemente hay que formar el PIX correctamente. Soy capaz de poner cualquier textura con dimensiones "raras" y Carmageddon me lo coge! Da igual que el ancho no sea multiplo de 4 si formas bien el archivo PIX! Pixed y Carmagedit no son capaces de editar un PIX asi (dan error los 2), pero pq no estan bien del todo programados (no tienen en cuenta lo que yo he descubierto)."

    ------13/06/2012

    "Carmageddon acepta cualquier tipo de combinacion de ancho y alto, REALMENTE NO HAY NINGUNA RESTRICCION COMO DICE TOSHIBA EN SU WEB, eso que dice que ancho x alto debe ser divisible por 16 y etc. Realmente, Carmagedit y Pixed fallan al extraer archivos BMP de algunos PIX, por ejemplo: del GO.PIX, ambos detectan q el ancho es 56, cuando realmente es 54. De hecho si lo abres el BMP generado, veras q las 2 ultimas columnas de pixeles podrian haberse recortado pq son fondo transparente entero. Explico esto: si miras el archivo PIX, el campo Rowsize es 56, mientras q el campo Width es 54, segun Toshiba esto deberia siempre coincidir, ¡ERROR! Precisamente 54 indica que el ancho del BMP es 54 y AQUI ESTA EL TRUCO: 56 indica el ancho de una fila de pixeles, ¿pq 56 y no 54? Pues por el padding de bytes de los archivos BMP. Esto es q cada archivo BMP que su ancho no sea multiplo de 4, hay q agregar bytes adicionales (como 54 no es multiplo de 4, es 56, cada fila de pixeles en el BMP ocupa realmente 56 bytes, solo que los 2 ultimos son de padding, de relleno), puedes comprobar esto si en Paint creas un BMP con paleta de 256 colores y lo haces de 5x5 por ej, cada fila de pixeles en el BMP no son 5 bytes, sino 8!

    Puedes ver esto q t comento del padding de los BMP aqui:
    http://en.wikipedia.org/wiki/BMP_file_format

    CONCLUSIONES

    1. No hay NINGUNA restriccion en la combinacion de ancho y alto de los PIX. Lo he comprobado en carmageddon ademas, me lo renderiza a la perfeccion.
    2. El campo rowsize y width en los pix NO siempre tiene q ser igual (el campo rowsize no será igual que width, si este no es multiplo de 4)
    3. Tanto Pixed como Carmagedit no tienen en cuenta bien el ancho de la textura, aunque el tamaño BMP generado es exactamente igual en bytes que uno con el ancho bien, porque las fila de bytes tendran el mismo tamaño, solo que el programa lector que uses de archivos BMP no interpretará los bytes de padding. Mi programa pixtractor si tiene en cuenta esto y lo extrae correctamente.

    Quizas, es facil de entender pero complicado de explicar por aqui sin verlo en un editor hex...

    Te paso un archivo rar pa que lo veas con 2 ejemplos, veras q los BMP ocupan exactamente lo mismo, pero uno es de 54 y el otro de 56.
    https://www.yousendit.com/download/QlVoM25...GlGa2NUQw"

    Acá las imágenes del link:

    gohex

    Imagen extraida con PixEd, Carmageddit:

    go 56x23

    Imagen extraida con Pixtractor:

    gobmpconpixtractor 54x23
     
    Top
    .
  4.  
    .
    Avatar

    Master

    Group
    Member
    Posts
    236
    Location
    Bleak City

    Status
    Offline
    Mastro, you can tell him that I KNEW that there was no limitation in texture sizes but I suggered to keep multiple of 4 as dimensions to make it EASIER to calculate and write by hand in hexadecimal.
    I mean, com'on, we modded C1 for years now, we know for sure that there is no size limit nor are there restricted to specific dimensions... :)

    Tell him to look at this too: http://rr2000.toshiba-3.com/R4/PC/c1pix.txt
    That's the complete pix file specs.

    He probably knows about it already but just in case show him this too:
    24bitpix
    It's a 24bit pix file.

    Oh and that some Splat Pack textures have their palette loaded into the header too.
    He probably figured that out too.
     
    Top
    .
  5.  
    .
    Avatar

    Dios

    Group
    Administrator
    Posts
    6,890
    Location
    Beaver City

    Status
    Offline
    I sent him a message. :B):

    ----------------------------------

    Más data sobre los archivos .PIX: www.mediafire.com/?pmcpyc39zwrvqj9
     
    Top
    .
  6. jomalin
     
    .

    User deleted


    Hi!

    Finally I register an user for me for this forum.

    I introduce myself: I'm Alejandro, I'm from Malaga (Spain) but I'm living/working in Madrid as computer programmer. I love Carmageddon, so I decided to do a pixtractor and a pixpacker utility to let the modders do his work faster. Pixtractor is almost done, it can extract textures from PIX files RECURSIVELY through folders. I will start pixpacker on some weeks, I don't have so much time... With my pixpacker program you will be able to pack PIX files from BMP files, with any combination of width and height, as we know, there's really no limitation. The required width will be written on the PIX file, and the correspondant correct rowsize (this is the next multiple of 4 number from width number). So if width is 6, rowsize must be 8 (this is the BMP padding, we must add 2 bytes after each row of pixels). This is why GO.PIX has a texture inside of 54 of width and 56 of rowsize. Pixed and Carmagedit utilities detect it as 56 but is 54!

    Sorry, I never tried Splat pack yet! CAN YOU HAVE PIX FILES WITH 24 bits BMP?????????? REALLY???? That will allow us to make a Carmageddon in High Resolution using 16,7 millions of color (instead of 256)!!!! Please, tell me about this new PIX format, I never saw it. Only those on Carmageddon 1. I will consider that too, to program that in my pixpacker. Upload a PIX file of those please, and inform me about his header if you got that info.

    I only need time to release both programs...

    Edited by jomalin - 18/6/2012, 13:41
     
    Top
    .
  7.  
    .
    Avatar

    Dios

    Group
    Administrator
    Posts
    6,890
    Location
    Beaver City

    Status
    Offline
    Acá están las texturas que postió Tosh: www.mediafire.com/?i9wmmm0rwvfn455

    En cuanto al Splat Pack lo podés conseguir facilmente en cualquier web de descargas.

    Salu2. :B):
     
    Top
    .
  8. jomalin
     
    .

    User deleted


    Mastro, veo que esos PIX que adjuntas son normales y corrientes. Donde estan los PIX con paleta propia q comenta Tosh? O los de 24 bits?
     
    Top
    .
  9.  
    .
    Avatar

    Dios

    Group
    Administrator
    Posts
    6,890
    Location
    Beaver City

    Status
    Offline
    No sé, ustedes son los que saben del tema. Bajate el Splat Pack y testeá los PIX. A mi me falta mucho por aprender.
     
    Top
    .
  10. jomalin
     
    .

    User deleted


    Disculpa Mastro, efectivamente! Los 2 PIX que adjuntas SI SON "ESPECIALES". Si abres el GSPLATOT.PIX con un editor hexadecimal (o tb si abres la ultima textura del archivo BRN.PIX que adjuntaste), verás que en el offset 24 (empezando por 0) hay un byte con valor 6 (06), ese es el campo PixType. Si no me equivoco, esto indica que NO usa paleta de colores, sino colores pixeles representados directamente con 3 bytes, es decir, cada pixel, ocupa 3 bytes, en lugar de uno (cuando se usa paleta). Esta es la lista de archivos PIX dentro de la carpeta DATA\PIXELMAP con el offset de PixelSize a algo distinto de 1 (01):

    GSPLATOT.PIX (byte de PixType a 06, PixelSize a 3)
    GDRUM1.PIX (byte de PixType a 07, PixelSize a 4)
    CYLNDR1.PIX (byte de PixType a 07, PixelSize a 4)
    YDRUM1.PIX (byte de PixType a 07, PixelSize a 4)

    Quiero decir, que todos los PIX tienen el PixelSize a 1, salvo esas 4 excepciones. Si los intentas abrir con Pixed o Carmagedit, verás que fallan (muestran pixeles raros)... Es porque no tienen en cuenta este asunto.

    Mi programa Pixtractor, ahora tb extrae esos 4 PIX correctamente. Solo me queda que lea los otros PIX especiales que aparecen en el Splat Pack, los que tienen la paleta de la imagen en el PIX directamente, como dice Toshiba::

    QUOTE (Toshiba-3 @ 14/6/2012, 13:40) 
    Oh and that some Splat Pack textures have their palette loaded into the header too.

    Este es el formato mas complicado y me va a llevar mas tiempo.

    Edited by jomalin - 18/6/2012, 00:11
     
    Top
    .
  11.  
    .
    Avatar

    Dios

    Group
    Administrator
    Posts
    6,890
    Location
    Beaver City

    Status
    Offline
    Muy buen trabajo Jomalin! Se nota que seguís esforzandote con el proyecto. :B):

    Acabo de testear los archivos .PIX en la carrera (los dos que me nombraste) y se vén horripilantes, tienen la clásica falla de paleta.
     
    Top
    .
  12. jomalin
     
    .

    User deleted


    Lo probaste con la version 3DFX? Que esa era la cuestión... Ver si Carmageddon (version 3DFX) podria renderizar los PIX de 24 y 32 bits (que no usan paleta). En el Carmageddon -hires ya lo probé yo y no se renderizan bien, salen mal como tu dices.

    La cuestión es: que hacen 4 archivos PIX (1 de 24 bits y 3 de 32 bits) en Carmageddon si no se renderizan bien? Para algo tienen que estar... ¿Como es posible hacer que Carmageddon los renderice bien? Habrá que tocar alguna configuracion? Una cosa que hice fue buscar el nombre de esos 4 PIX dentro de todos los archivos de Carmageddon y estos fueron los resultados:

    GSPLATOT.PIX (textura que no usa paleta, cada pixel ocupa 24 bits)

    3DFX.EXE
    CARM95.exe
    Carma.exe
    Voodo2C.exe

    CYLNDR1.PIX (textura que no usa paleta, cada pixel ocupa 32 bits):

    \DATA\BORING.TXT
    \DATA\PEDESTRN.TXT

    YDRUM1.PIX (textura que no usa paleta, cada pixel ocupa 32 bits):

    \DATA\BORING.TXT
    \DATA\PEDESTRN.TXT

    GDRUM1.PIX (textura que no usa paleta, cada pixel ocupa 32 bits):

    \DATA\BORING.TXT
    \DATA\PEDESTRN.TXT

    As I told, I'm adding to my pixtractor program the possibility to extract the special PIX files from Splat Pack (for example: first texture from VLAD2.PIX, second texture of PORK.PIX, first texture of BUGATTI.PIX, etc). Carmagedit doesn't render they well. I will finish it in some days...
     
    Top
    .
  13.  
    .
    Avatar

    Dios

    Group
    Administrator
    Posts
    6,890
    Location
    Beaver City

    Status
    Offline
    Algo de info:

    _ BORING.TXT es el archivo antecesor de PEDESTRN.TXT, contiene info antigua sobre los peatones y powerups.
    _ CYLNDR1.PIX, YDRUM1.PIX y GDRUM1.PIX son pixeles que se activan cuando agarrás un barril (powerup).

    Por ejemplo:

    // Sequence #0 - standing there
    collide // Include this frame in collision calcs
    fixed // Frame rate type
    1 // Number of initial frames
    OGDRUM1.PIX
    0,0,flipped
    0 // Number of looping frames

    QUOTE
    Lo probaste con la version 3DFX?

    Lo probé con -hires, no me anda bien el 3DFX en esta máquina.
     
    Top
    .
  14. jomalin
     
    .

    User deleted


    Bueno, cuando puedas pruebalo con la 3DFX por favor, y dime el resultado.

    Estos son esas 3 texturas bien renderizadas (las he extraido con el propio pixtractor):

    Joder, como se agrega más de una imagen aqui?
    Attached Image
    GDRUM1.PIX

     
    Top
    .
  15.  
    .
    Avatar

    Dios

    Group
    Administrator
    Posts
    6,890
    Location
    Beaver City

    Status
    Offline
    Podés adjuntar 1 imagen por post. Si querés postear varias fotos podés registrarte en Photobucket.
     
    Top
    .
23 replies since 8/6/2012, 03:46   545 views
  Share  
.