Y aquí algún boceto de lo que puede ser la pantalla de juego de la v 0.2, eliminando la franja superior del marcador y distribuyendo sus datos por la pantalla. Que os parece ?

Antartic Adventure, un juego desarrollado por Konami en 1985 para los sistemas MSX y NES (entre otros). Un pingüino corriendo por la Antártida para alcanzar la meta (una estación científica) antes que el cronómetro llegue a 0.
En la sección de descargas del proyecto podrás encontrar el estado actual del programa (has de tener el compilador GCC y las librerias SDL instaladas, además de compilar el programa): podrás ver la pantalla de inicio, y la primera fase con algunos objetos puestos al azar para probar el código. Tux, el protagonista, también está allí pero solo puede moverse a la derecha o a la izquierda... el salto es lo próximo a añadir ;)
if (strstr(argv[1], ".iso") != NULL)Y cada vez que comprobamos un campo añadimos esto:
imgiso = 1;
void mostrar (int pos, int maximo){Sabiendo esto nos queda este programa:
for (i=1; i<=maximo; i++)
{
if (imgiso==1)
j = (pos + i) - 16;
else
j = (pos + i);
fseek(fichero, j, SEEK_SET);
fread(&buffer, 1, 1, fichero);
printf("%c", (char)buffer);
}
}
/* Satuxconv */Con esto nuestro programa ya puede leer tres tipos de imágenes de disco: BIN, MDF (MDF tiene el mismo formato que BIN) e ISO. Sólo queda acceder en modo escritura al fichero y cambiar la región por la deseada.
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int i; /* contador */
int j; /* contador 2 */
int buffer; /* Buffer de datos */
FILE* fichero; /*Fichero a abrir */
int imgiso = 0; /* flag */
void mostrar (int pos, int maximo){
for (i=1; i<=maximo; i++)
{
if (imgiso==1)
j = (pos + i) - 16;
else
j = (pos + i);
fseek(fichero, j, SEEK_SET);
fread(&buffer, 1, 1, fichero);
printf("%c", (char)buffer);
}
}
main (int argc, char *argv[])
{
int fecha[8]; /*Almacena la fecha*/
int regiona[3]; /*Region del juego*/
/*Comprobar parámetros y abrir fichero*/
if (argc < 2)
{
printf("Uso: satuxconv imagen.bin");
printf("\nActualmente se soportan imagenes BIN, ISO y MDF\n\n");
exit(0);
}
fichero=fopen(argv[1], "rb");
if (strstr(argv[1], ".iso") != NULL)
imgiso = 1;
printf("\nDatos de la imagen\n");
printf("------------------\n\n");
/*Obteniendo el titulo*/
printf("Título: ");
mostrar(111,27);
/*Obteniendo el desarrollador*/
printf("\nDesarrollador: ");
mostrar(31, 16);
/*Obteniendo el producto*/
printf("\nProducto: ");
mostrar(47,7);
/*Obteniendo la version*/
printf("\nVersión: ");
mostrar(57,6);
/*Obteniendo la fecha*/
printf("\nFecha: ");
for (i=1; i<=8; i++)
{
if (imgiso==1)
j = (63 + i) - 16;
else
j = (63 + i);
fseek(fichero, j, SEEK_SET);
fread(&fecha[i], 1, 1, fichero);
}
printf("%c%c/%c%c/%c%c%c%c\n", (char)fecha[7],(char)fecha[8], (char)fecha[5], (char)fecha[6], (char)fecha[1], (char)fecha[2], (char)fecha[3], (char)fecha[4]);
/*Obteniendo regiones*/
for (i=1; i<=3; i++)
{
if (imgiso==1)
j = (79 + i) - 16;
else
j= 79 + i;
fseek(fichero, j, SEEK_SET);
fread(®iona[i], 1, 1, fichero);
/*Obteniendo regiones*/
for (i=1; i<=3; i++)
{
if (imgiso==1)
j = (79 + i) - 16;
else
j= 79 + i;
fseek(fichero, j, SEEK_SET);
fread(®iona[i], 1, 1, fichero);
}
/* fseek(fichero, 96, SEEK_SET);
fread(®ionb, 1, 1, fichero);*/
/*Mostrar regiones*/
printf("\nRegión(es) del juego:\n");
for (i=1; i<=3; i++)
{
printf(" %c", (char)regiona[i]);
if ((char)regiona[i] == 'T')
printf(" - (Asia - NTSC)\n");
if ((char)regiona[i] == 'E')
printf(" - (Europa)\n");
if ((char)regiona[i] == 'U')
printf(" - (América del Norte)\n");
if ((char)regiona[i] == 'J')
printf(" - (Japón)\n");
if ((char)regiona[i] == 'B')
printf(" - (Centro/SudAmérica NTSC)\n");
if ((char)regiona[i] == 'K')
printf(" - (Corea)\n");
if ((char)regiona[i] == 'A')
printf(" - (Asia Este PAL)\n");
if ((char)regiona[i] == 'L')
printf(" - (Centro/SudAmérica PAL)\n");
}
/*Cerrar fichero*/
fclose(fichero);
}
/* Satuxconv */El editor de Blogspot es un poco caprichoso y ha alineado a la izquierda todo el código, dejándolo sin tabuladores, y algún posible error, lo siento !
#include "stdio.h"#include "stdlib.h" #include "string.h" int i; /* contador */ int j; /* contador 2 */ int buffer; /* Buffer de datos */ FILE* fichero; /*Fichero a abrir */ void mostrar (int pos, int maximo) { for (i=1; i<=maximo; i++) { j = (pos + i); fseek(fichero, j, SEEK_SET); fread(&buffer, 1, 1, fichero); printf("%c", (char)buffer); } } main (int argc, char *argv[]) { int fecha[8]; /*Almacena la fecha*/ int regiona[3]; /*Region del juego*/ /*Comprobar parámetros y abrir fichero*/ printf("\nSatuxconv\n"); if (argc < 2) { printf("Uso: satuxconv imagen.bin"); printf("\nActualmente se soportan imagenes BIN\n\n"); exit(0); } fichero=fopen(argv[1], "rb"); printf("\nDatos de la imagen\n"); printf("------------------\n\n"); /*Obteniendo el titulo*/ printf("Título: "); mostrar(111,27); /*Obteniendo el desarrollador*/ printf("\nDesarrollador: "); mostrar(31, 16); /*Obteniendo el producto*/ printf("\nProducto: "); mostrar(47,7); /*Obteniendo la version*/ printf("\nVersión: "); mostrar(57,6); /*Obteniendo la fecha*/ printf("\nFecha: "); for (i=1; i<=8; i++) { j = (63 + i); fseek(fichero, j, SEEK_SET); fread(&fecha[i], 1, 1, fichero); } printf("%c%c/%c%c/%c%c%c%c\n", (char)fecha[7],(char)fecha[8], (char)fecha[5], (char)fecha[6], (char)fecha[1], (char)fecha[2], (char)fecha[3], (char)fecha[4]); /*Obteniendo regiones*/ for (i=1; i<=3; i++) { j= 79 + i; fseek(fichero, j, SEEK_SET); fread(®iona[i], 1, 1, fichero); } /*Mostrar regiones*/ printf("\nRegión(es) del juego:\n"); for (i=1; i<=3; i++) { printf(" %c", (char)regiona[i]); if ((char)regiona[i] == 'T') printf(" - (Asia - NTSC)\n"); if ((char)regiona[i] == 'E') printf(" - (Europa)\n"); if ((char)regiona[i] == 'U') printf(" - (América del Norte)\n"); if ((char)regiona[i] == 'J') printf(" - (Japón)\n"); if ((char)regiona[i] == 'B') printf(" - (Centro/SudAmérica NTSC)\n"); if ((char)regiona[i] == 'K') printf(" - (Corea)\n"); if ((char)regiona[i] == 'A') printf(" - (Asia Este PAL)\n"); if ((char)regiona[i] == 'L') printf(" - (Centro/SudAmérica PAL)\n"); } /*Cerrar fichero*/ fclose(fichero); }
./satuxconv Castlevania.bin
Satuxconv 0.05
Datos de la imagen
------------------
Título: DRACULA-X
Desarrollador: SEGA TP T-95
Producto: T-9527G
Versión: V1.400
Fecha: 27/04/1998
Región(es) del juego:
E - (Europa)