ABANDONO, NO PUEDO MAS!!! (me largo a Z88DK)

Todo sobre la creación, diseño y programación de nuevo software para
nuestro Spectrum

Moderador: Sir Cilve Sinclair

Avatar de Usuario
radastan
Phantomas
Mensajes: 2232
Registrado: Lun May 07, 2007 5:34 pm
Contactar:

Re: ABANDONO, NO PUEDO MAS!!! (me largo a Z88DK)

Mensaje por radastan » Mié Abr 30, 2014 9:57 pm

antoniovillena escribió:Si me decís cómo es el mapa a codificar os hago la herramienta que pase de .tmx (archivo que usa Tiled) al binario que necesitéis.


Hombre, vendría bien que hicieras más bien dos: de TILED a .h y de MAPPY a .h. Así cada cual que elija su herramienta favorita.

El .h es muy simple, el mismo de la churrera pero sin añadidos (ni cerrojos ni nada) sólo la matriz del mapa. Es decir, tiene que generar algo como:

Código: Seleccionar todo

unsigned char mapa [] = { 6, 1, 2, 4, 5, 5, 5, 5,... 


OJO, procura no pasar de 80 valores por línea o se atraganta el compilador.
_________________________________________
Hay otras páginas.... pero no son Bytemaniacos
http://www.bytemaniacos.com
Orgullo de 8 bits
_________________________________________

Avatar de Usuario
Hark0
Freddy Hardest
Mensajes: 545
Registrado: Mar Nov 13, 2012 12:42 pm
Ubicación: Cornella de Llobregat - Barcelona
Contactar:

Re: ABANDONO, NO PUEDO MAS!!! (me largo a Z88DK)

Mensaje por Hark0 » Jue May 01, 2014 12:31 am

Yo comentaba Tiled porque es el que usaba yo hasta ahora...

Usare Mappy, a ver que tal, aunque soy amante de cuaderno, cuadricula, numeros, y goma de borrar... :wink:


... y hombre... si haces la conversión, pues mejor para todos... :D ... y tiled también gana... que lo gasta mucha gente. :P


yo catare mappy, aver
litiopixel.blogspot.com - Desarrollo videojuegos Indie · Pixel-Art · Retroinformática · Electrónica

Avatar de Usuario
antoniovillena
Nonamed
Mensajes: 1164
Registrado: Dom Ene 09, 2011 8:55 am

Re: ABANDONO, NO PUEDO MAS!!! (me largo a Z88DK)

Mensaje por antoniovillena » Jue May 01, 2014 2:37 am

Tengo un generador de mapas Tiled vacíos genérico. Está hecho para FASE, pero es genérico porque no codifica cerrojos.

https://github.com/DSkywalk/fase/blob/m ... e/GenTmx.c

Luego tengo tres herramientas para la Churrera (estas ya no son genéricas), una de ellas pasa de Mappy a .h, otra de ellas de Tiled a .h y la última pasa de Mappy a Tiled.

https://github.com/DSkywalk/fase/tree/m ... onversores

Sería cuestión de que las viérais y me dijérais las modificaciones que os hacen falta.
Imagen

Avatar de Usuario
radastan
Phantomas
Mensajes: 2232
Registrado: Lun May 07, 2007 5:34 pm
Contactar:

Re: ABANDONO, NO PUEDO MAS!!! (me largo a Z88DK)

Mensaje por radastan » Jue May 01, 2014 11:16 am

antoniovillena escribió:Sería cuestión de que las viérais y me dijérais las modificaciones que os hacen falta.


Repito, sólo nos hace faalta que el .h sea la matriz del mapa sin más añadidos. Sólo eso. Tanto para Mappy como para Tiled.

Cuando pueda le echo un vistazo al genérico de FASE.
_________________________________________
Hay otras páginas.... pero no son Bytemaniacos
http://www.bytemaniacos.com
Orgullo de 8 bits
_________________________________________

Avatar de Usuario
antoniovillena
Nonamed
Mensajes: 1164
Registrado: Dom Ene 09, 2011 8:55 am

Re: ABANDONO, NO PUEDO MAS!!! (me largo a Z88DK)

Mensaje por antoniovillena » Jue May 01, 2014 12:36 pm

radastan escribió:Repito, sólo nos hace faalta que el .h sea la matriz del mapa sin más añadidos. Sólo eso. Tanto para Mappy como para Tiled.

Cuando pueda le echo un vistazo al genérico de FASE.


He recortado el TmxCnv, espero que esto te valga:

Código: Seleccionar todo

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char* argv[]){
  unsigned char mem[0x10000];
  char tmpstr[1000];
  char *fou, *token;
  FILE *fi, *fo;
  int size= 0, scrw, scrh, mapw, maph, tmpi, elem, sum, tog= 0, i, j, k, l;
  if( argc==1 )
    printf("\nTmxCnvRadas v0.99, TMX to H generator by Antonio Villena, 1 May 2014\n\n"
           "  TmxCnvRadas <input_tmx> <output_map_h>\n\n"
           "  <input_tmx>       Origin .TMX file\n"
           "  <output_map_h>    Generated .H map output file\n\n"
           "Example: TmxCnvRadas map\\mapa.tmx dev\\mapa.h\n"),
    exit(0);
  if( argc!=3 )
    printf("\nInvalid number of parameters\n"),
    exit(-1);
  fi= fopen(argv[1], "r");
  if( !fi )
    printf("\nInput file not found: %s\n", argv[1]),
    exit(-1);
  fo= fopen(argv[2], "wb+");
  if( !fo )
    printf("\nCannot create output file: %s\n", argv[2]),
    exit(-1);
  while ( !feof(fi) && !strstr(tmpstr, "data e") ){
    fgets(tmpstr, 1000, fi);
    if( fou= (char *) strstr(tmpstr, " width") )
      scrw= atoi(fou+8);
    if( fou= (char *) strstr(tmpstr, " height") )
      scrh= atoi(fou+9);
  }
  fgets(tmpstr, 1000, fi);
  token= (char *) strtok(tmpstr, ",");
  while ( token != NULL ){
    if( tmpi= atoi(token) )
      mem[size++]= tmpi-1;
    token= (char *) strtok(NULL, ",");
  }
  mapw= scrw-size+1;
  scrw= size/mapw;
  fgets(tmpstr, 1000, fi);
  while ( !strstr(tmpstr, "/layer") ){
    token= (char *) strtok(tmpstr, ",");
    while ( token != NULL ){
      if( tmpi= atoi(token) )
        mem[size++]= tmpi-1;
      token= (char *) strtok(NULL, ",");
    }
    fgets(tmpstr, 1000, fi);
  }
  maph= scrh-size/mapw/scrw+1;
  scrh= (scrh-maph+1)/maph;
  tmpi= 0;
  for ( i= 0; i<size; i++ )
    if( mem[i]>tmpi )
      tmpi= mem[i];
  fprintf(fo, "unsigned char mapa [] = {");
  if( tmpi>15 )
    for ( i= 0; i<maph; i++ ){
      fprintf(fo, "\n");
      for ( j= 0; j<mapw; j++ ){
        fprintf(fo, "    ");
        for ( k= 0; k<scrh; k++ )
          for ( l= 0; l<scrw; l++ ){
            elem= mem[i*mapw*scrh*scrw+j*scrw+k*mapw*scrw+l];
            fprintf(fo, "%d, ", elem);
          }
        fprintf(fo, "\n");
      }
    }
  else
    for ( i= 0; i<maph; i++ ){
      fprintf(fo, "\n");
      for ( j= 0; j<mapw; j++ ){
        fprintf(fo, "    ");
        for ( k= 0; k<scrh; k++ )
          for ( l= 0; l<scrw; l++ ){
            elem= mem[i*mapw*scrh*scrw+j*scrw+k*mapw*scrw+l];
            if( tog^= 1 )
              sum= elem;
            else
              fprintf(fo, "%d, ", sum<<4 | elem);
          }
        fprintf(fo, "\n");
      }
    }
  fprintf(fo, "};\n");
  fclose(fo);
  fclose(fi);
  printf("\nFile generated successfully\n");
}


Una vez tengamos este acabado hago lo mismo con el de Mappy.
Imagen

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 21 invitados