PDA

Ver la versión completa : Conversion de Sonic de MEGA DRIVE



A.r.R.c.H.E.r
13/03/2004, 13:35
Hola buenas a todos, estoy liado con la conversion del sonic de mega drive para la GP32, ya tengo todos los sprites y todo preparado y e empezado con la programacion.... pero tengo un problema al cargar datos de un archivo.... el problema es que carga los datos pero no los carga bien, carga otros valores.... los datos de los sprites los guarde en un archivo y es una matriz de unsigned char paleta[255][2]; y la forma de cargarlo en la GP32 lo hago de la siguiente manera:


/* CARGA LA PALETA */
GpFatInit();
GpFileOpen("gp:\\gpmm\\paleta.pal", OPEN_R, &h_rfile);

for (n=0; n<=255; n++) {
GpFileRead(h_rfile, (unsigned char*)&Paleta[n][0], 1, &nr);
GpFileRead(h_rfile, (unsigned char*)&Paleta[n][1], 1, &nr);
GpFileRead(h_rfile, (unsigned char*)&Paleta[n][2], 1, &nr);
}


for (n=0; n<=255; n++) {
SetColor(n, Paleta[n][0], Paleta[n][1], Paleta[n][2]);
}

GpFileClose(h_rfile);

a ver si alguien puede decirme donde esta el error...

dj syto
13/03/2004, 13:37
vaya... yo no se de programacion y no puedo ayudarte, pero es una buena noticia sin duda...

sigue asi y animo!

timofonic
13/03/2004, 13:43
De cual sonic va a ser, 1, 2, 3, los S & K, Sonic Chaotix, Sonic CD, Sonic Pocket Adventure o un remix de todos ellos y alguno mas?

A mi me gustaria una especie de remix de todos los sonic en 2D, con lo mejor de cada uno, y por favor nada de personajes pateticos como el conejo ese... Claro que habria que rehacer algun que otro sprite...

Por favor, la fase de las bolitas y demas... :)

A.r.R.c.H.E.r
13/03/2004, 13:52
Bueno pues de momento sera del Sonic the Hedgehog pero abra 2 modalidades el juego original y el otro con niveles inventados... En realidad sera como dos sonics uno el original y otro echo por mi... con sus niveles diferentes al del sonic original. tengo incluso las melodias del sonic preparadas en MIDI ;)

timofonic
13/03/2004, 14:00
¿Pero si son en midi van a sonar igual? ¿Y porque no mod? ¿Has pensado en hacer asi como una especie de remix de todos los 2d con lo mejor de cada uno y tal?

e-gnacky
13/03/2004, 14:02
Uno de mis juegos favoritos desde pequeñito.
Leñe como quiero a la escene española!!!!:lovegp:

A.r.R.c.H.E.r
13/03/2004, 14:03
Bueno primero hare este a ver que tal sale... y luego cuando ya le haya pillao mas practica a esto de programar pa la GP32 quizas me ponga manos a la obra con ese remix ;)

A.r.R.c.H.E.r
13/03/2004, 14:06
Por ahora estoy atascado en lo de cargar los archivos... ya que no me los carga bien... a ver si alguien me puede ayudar y le doy un buen empujos a esto y tengo algo pa presentaros la proxima semana...

Wave
13/03/2004, 14:32
Has hecho mal la declaracion, deberia ser
unsigned char paleta [256][3]

cuando lo declaras dentro de los corchetes va el nº de elementos
pero al acceder si pones 3 seran el 0 el 1 y el 2.

A.r.R.c.H.E.r
13/03/2004, 14:48
He echo esa modificacion y sigue =... incluso e utilizado estructuras y tampoco...

Santanderino
13/03/2004, 15:43
jopeeeee añade lo de ir por barandillas ^^ q eso ROOLZ añade cosucas asi tio q eso seria la ostia ^^ a lo sonic advance 2 ^^ loopings rizos velocidad!!!!!!!! ......SONIC!!!!!!

Karadan
13/03/2004, 17:22
Que esta empezando leche, ya esta muy bien con que consiguiera q fuera parecido al Sonic 1 de megadrive. Dejadle respirar :D. Luego quien sabe mas adelante, pero de momento el ha dicho q esta empezando con la programacion en gp32

(_=*ZaXeR*=_)
13/03/2004, 17:46
Porque no pruebas a meterle un puntero que recorra todo el fichero hasta NULL y lo guarde en una structura? y lo que dice wave es verdad debes declararlo como 256 3 porque sino no te guardara todos los datos, tambien debes comprobar que si has habierto otro fichero antes lo hayas cerrado por si las moscas.

A.r.R.c.H.E.r
13/03/2004, 19:12
Bueno pues ya esta resuelto el tema de la paleta... era porque al guardar el archivo lo tenia que guardar en int... para que se guardara bien ;) ademas tambien habia que poner lo de [256][3] jejeje. Ahora el problema me viene al cargar un sprite... lo carga correctamente pero a la hora de dibujarlo en pantalla con la funcion GPBltBit me sale el sptrite rotado hacia la izquierda 90º y ademas me sale como corrido... como en diagonal... Alguien sabe si la funcion GpBltBit necesita tener la matriz del dibujo en algun formato especial???

mortimor
13/03/2004, 19:38
Ese es un error que se debe a la estructura del fichero donde tienes el sprite, no sera un bmp??? utiliza imagenes convertidas al formato de la gp32, usa gp32converter para ello.

neogaka
14/03/2004, 02:14
Estooooo ai un juego llamado SONYC echo para MSX por un español...ace poco a liberado el codigo fuente, podrias mirarlo o ablar con sergio.

SONYC (http://soft.mundivia.es/mpazos/)

Espero aberte ayudado

(_=*ZaXeR*=_)
14/03/2004, 02:41
A.r.R.c.H.E.r te aconsejaria que tuvieras cuidado con el uso del gp32converter, porque tiene un bug, para que sepas cual es, leeter el pots que yo escribi acerca de el http://www.gp32spain.com/foros/showthread.php?s=&threadid=6083&highlight=gp32converter

rafivp
14/03/2004, 03:21
ánimo con el proyecto!!!

ZinKo
14/03/2004, 03:30
la verdad es que te pediria que sigieras con el proyecto hasta terminarlo.... te doy todo mi apoyoo.... un sonic de gp32 sin emular... mmmmm :rolleyes: :rolleyes:

saLu2

Sd-Snatcher
14/03/2004, 04:26
Lo de diagonal ocurre porque para cada linea o bien el archivo tiene bytes de mas o tu lees bytes de menos.

Normalmente es la segunda opcion.

A.r.R.c.H.E.r
14/03/2004, 04:48
Gracias a todos por vuestro apollo...

Los sprites en cuestion son de 45x45 pixels... yo los e guardado en una matriz asi unsigned char Sprite[35][2025];. el 35 rd porque por ahora hay 34 sprites para los movimientos de sonic, y el 2025 son el numero de pixels del siprite (45x45). Pues bien para guardarlo e ido escaneando punto por punto del sprite y lo he ido metiendo en la matriz. Al cargarlo en la GP32 si ago lo siguiente el sprite se ve bien:

for (yt=0; yt <=44; yt++) {
for (xt=0; xt <=44; xt++) {
GpPointSet(&gpDraw, xt,yt, SpriteSonic[NumSprite][NumPixel]);
NumPixel++;
}
}

Esto me dibuja correctamente el Sprite, pero al intentar dibujarlo con GpBltBit me ocurre lo del sprite rotado y desplazado en cada linea.

(_=*ZaXeR*=_)
14/03/2004, 04:50
Yo creo que el problema lo tienes al leer los datos del archivo, no por el GpBltBit, yo haria el tipico

for (i=0; i<3; i++)
{
&nbsp &nbsp for (j=0; j<256; j++)
&nbsp &nbsp {
&nbsp &nbsp &nbsp &nbsp GpFileRead(h_rfile, (unsigned char*)&Paleta[j][i], 1, &nr);
&nbsp &nbsp }
}

no se si sera por esto.

Sd-Snatcher
14/03/2004, 05:11
Ummm

prueba a aumentar y disminuir el Width en el GPBitBlt

Y lo del giro 90 grados es por que has cargado el grafico tumbado, o sea al leerlo lo dejas girado en memoria, y tu prueba esta que has puesto encima comete el mismo fallo con lo cual fallo+fallo = se anulan y crees que esta bien.


Quizas el problema esta al crear el archivo.

A.r.R.c.H.E.r
14/03/2004, 05:48
Ya lo e probado y esto es lo mejor que se ve.... pongo una captura para que veais como dibujo el sprite de las dos formas(ventana de abajo) y cuales son los resultados (ventana arriba la derecha)


http://www.marcianitos.org/x/Sonic.jpg

(_=*ZaXeR*=_)
14/03/2004, 06:09
el problema es el que dice Sd-Snatcher, cargas mal el sprite en memoria, has probado con lo que te he dicho y tampoco sale? Puede que tengas que recorrer el fichero de otra forma, desde atras hacia delante o algo similar, aunque es algo extraño.

Si ya no puedes hacer nada, en lugar de sacar el sprite de un fichero hazlo de otra forma.

(_=*ZaXeR*=_)
14/03/2004, 06:18
Una cosilla, si desarollas con el SDK y en Windows porque no usas el Visual C++? es mucho mejor, mucho mas rapido y sencillo, no tienes que coger compilar coge el FXE maker ponerle el icono abrir el emulador..... es tan facil como ! y a probar.

Fénix
14/03/2004, 06:39
Si quieres hacer un port... que sea un port. No añadas más cosas que si no te lo cargas y eso... malo, malo...

Samuel
14/03/2004, 07:58
Yo tb opino lo mismo, si es el Sonic the Hedgedog; que sea un calo en todo, luego podrias portar el 2, a mi juicio el mejor y el mas largo ;9 ANIMO

A.r.R.c.H.E.r
14/03/2004, 09:35
Increible!... Problema solucionado!!! rlyeh me a estado explicando una funcion para dibujar sprites en panatalla muy optimizada y mucho mas rapida que la del SDL... y funciona 100%... La verdad es que rlyeh es una autentica makina bueno hos pòngo aki la funcion por si alguien la necesitara: (con el permiso de rlyeh)



void PutSprite(unsigned char *pix, int x, int y, int w, int h)
{
int i,j; unsigned char *TFT=(unsigned char *)0x0c7b4000+(240-(y+0)+240*(x+0));
for(j=h;j>0;j--,TFT-=240*w+1) for(i=w;i>0;i--) { if(*pix) *TFT=*pix; TFT+=240; pix++; }
}



Muchas gracias Rlyeh!

Sd-Snatcher
14/03/2004, 10:11
Pos si que si, muy interesante, me va a venir bien.

Daxter
14/03/2004, 10:32
cada dia se aprende algo nuevo :D

(_=*ZaXeR*=_)
16/03/2004, 03:47
A.r.R.c.H.E.r te referiras a que es mejor que la del SDK, porque lo que usabas tu era el SDK no el SDL

(_=*ZaXeR*=_)
16/03/2004, 03:49
Haciendo memoria, creo recordar que Miki-chan tuvo el mismo problema de la diagonal y el sprite rotado, pero me parece que no lo soluciono como dice A.r.R.c.H.E.r, no se que hizo.

enkonsierto
16/03/2004, 06:46
VIVA EL SDL !!!

deja el sdk y pasate al sdl A.r.R.c.H.E.r :D :D :D

Miki-chan
19/03/2004, 13:03
Lo mio fue un problema doble. Por un lado tenía mal el código porque no indicaba correctamente el tamaño o algo así. Luego el otro problema era el programa conversor, usando el GP32 converter se arregló pero lo que cargué fue una imagen sin más (no tengo ni idea de usar sprites, a ver si empiezo las FCT y retomo un poco la programación).

Lebriag
23/03/2004, 08:32
Intento enterarme un poco de que va todo esto pues me he hecho con la consola hace dos dias contados como aquel que dice... y mi ilusion cuando era cani era el sonic..(jejejeje..que tiempos).
No entiendo una cosa..a ver si alguien me la podria explicar...
¿porque la gente se come tanto la olla intentando hacer funcionar un juego determinado..y no se unen entre todos para mejorar el emu de megadrive?. Sería el primero que me apuntaria..pero intento enterarme de como va todo esto.
Un saludo de un aprendiz..

Locke
23/03/2004, 08:54
No es hacer funcionar el sonic, sino hacer una version nueva para la consola. Hay mucha gente que es capaz de programar un juego (supongo que tu, por ejemplo ;) ) pero que no se atreveria a ponerse con un emulador. Para hacer un emulador necesitas conocer detalladamente el funcionamiento de las dos maquinas, ademas de que para que funine bien te tienes que meter a programar en arm. No es muy sencillo que digamos, solo al alcance de unos pocos privilegiados (como rlyeh, que le salen como rosquillas.. xDD)

Lebriag
23/03/2004, 10:06
Sigo pensando que a pesar de que seria bastante mas complicado, seria muchisimo mas util y a la larga mas comodo (pues ahorraria trabajo) el hecho de desarrollar una herramienta mejor para emular roms que rom a rom en si.
No se demasiado, pero parece que sabes muy bien de que estas hablando Locke...¿porque no lo intentas?..seria muy util y ademas hay unos rpgs fabulosos para esta consola que añoro mucho y sus musicas. Como yo bastante gente (y la gente que no los conoce que son viciados de este tipo de juegos) disfrutaria mucho con ellos.
De tipo de Landstalker, light crusader,soleil, history of thor, phantasy star,Shining force (este ultimo era cojonudo..)
No se...podriais plantearoslo en general.
Gracias por responder a este novatillo..
;)

Locke
23/03/2004, 10:15
Jeje, no te digo yo que no me gustaria, pero no sabria ni por donde empezar si no tengo a alguien que me oriente desde 0. Quizas me ponga, porque la verdad es que me molaria muxo y me parece bastante mas satisfactorio que hacer juegos.

De todas maneras si quieres jugar tienes ya algunos emuladores de MegaDrive (genesis). Aunque van un poco lentos y no tienen musica, pero supongo que todo se andara.

Pero eso si, si quieres rpgs, la consola por excelencia es la SNES, ESO si que eran juagos.

Saludos, y eso, si alguien quiere orientarme me pongo con un emu de zodiac para gp32... xDD

Lebriag
23/03/2004, 10:23
Locke...tio, no seas enfermo....un emulador de zodiac para gp32??.-....para que??....bueno....por intentarlo que no quede. Yo me apuntaria...pero lo del de mega tambien me apuntaria a desarrollarlo.
Te lo digo porque la gente que ha jugado ha todos los final fantasy...y todos los juegos rpg que ha pillado (como yo)...te dice que el shining force 2 compite directamente con un final fantasy 6,7 o 9 (mi favorito)...la historia es genial y es un gran juego.
Snes en conjunto era mejor..pero megadrive tenia determinadas joyitas que se echan de menos.

Locke
23/03/2004, 10:50
*****, lebriag, que no iba en serio lo del emu de zodiac :D Quizas otro, a lo mejor con mucho tiempo y mucha suerte... pero la zodiac no, ten en cuenta que es una maquina de 32 bits, con un procesador a 200Mhz y 32 o 128MB de memoria, aparte de un procesador grafico... :) Es totalmente imposible, algo asi como emular una ps2 en una psone :)

Aiken
12/04/2004, 14:06
Pues yo tuve el mismo problema
cuando me hice una funcioncilla que descomprimia archivos .pcx


Parece que el GpBlit espera la matriz rotada 90º ...

Y punto dos, parece que el GpBlit espera una matriz cuyas dimensiones sean DIVISIBLES por 4 !!! Es decir una imagen de 4x4 de 8x4 de 12x8 etc ...

no se porque supongo que sera por la alineacion de los word en memoria.

CREO que precisamente esto es lo que hace el Gp32Converter, es decir voltea la matriz y añade 0s para que sea divisible por las dimensiones 4.


No se si esto es de todo cierto pero haciendo esas modificaciones dibuja bien las matrices de los sprites.

Aiken

dj syto
12/04/2004, 14:11
lebriag parece ke tienes un problema para entender las ironias XDDD

lo que dices de ke no hagan juegos propios y se dediquen a hacer emuladores, eso si ke me parece una barbaridad.