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

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

Notapor radastan el Mie 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
radastan
Phantomas
 
Mensajes: 2179
Registrado: Lun May 07, 2007 5:34 pm

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

Notapor Hark0 el 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
Hark0
Freddy Hardest
 
Mensajes: 545
Registrado: Mar Nov 13, 2012 1:42 pm
Ubicación: Cornella de Llobregat - Barcelona

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

Notapor antoniovillena el 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
antoniovillena
Nonamed
 
Mensajes: 1162
Registrado: Dom Ene 09, 2011 9:55 am

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

Notapor radastan el 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
radastan
Phantomas
 
Mensajes: 2179
Registrado: Lun May 07, 2007 5:34 pm

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

Notapor antoniovillena el 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
Avatar de Usuario
antoniovillena
Nonamed
 
Mensajes: 1162
Registrado: Dom Ene 09, 2011 9:55 am

Previo

Volver a Programación y nuevos desarrollos

¿Quién está conectado?

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

cron