Ayuda para probar una rom

Hola, no se si esto va mejor en desarrollo, pero como veo q nadie entra alli....

Estoy programando un "juego" (pruebas mas bien..jajaj) para megadrive, pero resulta que a medida que crece mi proyecto, me daba cuenta que cada vez, se hacia mas pesado el juego

Estaba usando un sistema de colisiones bastante perfecto, lo que implicaba muchisimos calculos, por lo tanto, cuando ademas, le hacia una carga fuerte en graficos y scroll, pues problemas... XD

Asi q decidi programar un sistema de colision mas simple basado en coordenadas, no tan preciso, pero bastante rapido

A ver si me dan una mano para probar si funciona, y encontrarle errores,
Gracias

http://www.dream-comics.com/Megadrive/Ejemplos/colision.bin
Lo acabo de probar a aparentemente no tiene ningun fallo sustancial, lo unico que yo le pondria pegas esque con "rozar" un poquito los cuadros blanco el colegui se para en seco... y teniendo en cuenta que no tienes que llegar a tocar con el muñecajo los cuadros blancos... porque el sprite tiene una zona transparente y ya choca...

No he encontrado ningun fallo mas... si esque a esto se le puede llamar fallo.

salu2
Lo acabo de probar a aparentemente no tiene ningun fallo sustancial, lo unico que yo le pondria pegas esque con "rozar" un poquito los cuadros blanco el colegui se para en seco... y teniendo en cuenta que no tienes que llegar a tocar con el muñecajo los cuadros blancos... porque el sprite tiene una zona transparente y ya choca...

No he encontrado ningun fallo mas... si esque a esto se le puede llamar fallo.

salu2


Gracias por tu tiempo.

Este codigo, lo que hace es dividir la pantalla en cuadriculas de 32x32, y hace las colisiones de acuerdo a esa cuadricula, el problema,es que el sprite no es cuadrado, pero el tamaño real si... no se si me explico, el sprite es de 32x32, aunque el dibujo no cubra toda la superficie

Asi que una punta transparente del sprute hace colision con un cuadrado blanco...

Justamente, mi anterior codigo, lo que hacia era comprobar exactamente los bordes del sprite, y calcular la colision, a costa de cantidad de calculos...
esta disponible source es que megustaria hacer algo para la mega pero no se x donde empezar XD
socram8888 está baneado por "incumplimiento términos y condiciones de uso"
Podrías dividir el sprite en cuadrados cada vez más pequeños, de manera que fuese algo intermedio, mediante archivos de datos adicionales (es decir, una tabla con los bordes aproximadamente, en lugar de calcularlos en tiempo real)
La colisión no es mala, lo de que sea un sprite cuadrado y colisione con la zona "transparente" es algo que no tiene mucha importancia.

Lo que sí veo es que tendrías que compobar qué dirección se está pulsando cuando colisiona, porque si te encuentras un muro avanzando hacia la derecha tampoco te deja subir hacia arriba aunque no haya un "enemigo" en esa posición.

Al igual es que no pretendes eso en este ejemplo. Si sólo tratas de ver cómo nos parece las colisiones......a mí me parecen muy bien.
Lo que sí veo es que tendrías que compobar qué dirección se está pulsando cuando colisiona, porque si te encuentras un muro avanzando hacia la derecha tampoco te deja subir hacia arriba aunque no haya un "enemigo" en esa posición.


Ah eso lo hice a proposito, nunca me gusto cuando resbalas por las paredes como si tuvieran jabon... para mi, tienen q detener el jugador, y obligarte a separarte.... o estoy equivocado?

espero me aclaren este punto, de seguro estoy equivocado!! tampoco quiero ir a contracorriente de lo convencional, por un gusto personal mio...
Gracias por tu comentario!!

Podrías dividir el sprite en cuadrados cada vez más pequeños, de manera que fuese algo intermedio, mediante archivos de datos adicionales (es decir, una tabla con los bordes aproximadamente, en lugar de calcularlos en tiempo real)


No termino de comprender tu idea! lo siento, seguro me equivoco, pero si lo q dices es hacer cuadriculas mas pequeñas, terminaria haciendo mas calculos... gracias


esta disponible source es que megustaria hacer algo para la mega pero no se x donde empezar XD


Es un codigo un tanto personal, vere de arreglar algo generico, q sea entendible y lo subo cuando pueda
Hola, lo que pasa es que cuando se 'para' junto a un cuadrado no deja subir ni arriba ni abajo. Creo que estaría bien que pudieses subir arriba y abajo aunque no pudieses avanzar más hacia el lado del cuadrado. no sé si me explico.
Hola, lo que pasa es que cuando se 'para' junto a un cuadrado no deja subir ni arriba ni abajo. Creo que estaría bien que pudieses subir arriba y abajo aunque no pudieses avanzar más hacia el lado del cuadrado. no sé si me explico.


Si, y tomo nota XD

A proposito, alguno tiene un flashcart para probar una rom en la megadrive real? necesito comprobar algo...

Gracias
socram8888 está baneado por "incumplimiento términos y condiciones de uso"
Yo tengo el LAKABAJO, puedo probar lo que sea hasta 64KB (se ejecuta desde la RAM de la consola, por lo que hay que dejar sitio para las variables)

Si me pasas el codigo fuente puedo adaptarlo yo y probar lo que quieras. O si usas BasiEgaXorz, puedes compilarmelo como "ejecución en $ff0000" y me lo envías
Que raro, cuando lo compilo, me sale una rom de 24kb, pero cuando lo compilo con la opcion "ejecución en $ff0000", me crea un archivo basic.ram de 128kb ...
socram8888 está baneado por "incumplimiento términos y condiciones de uso"
theelf escribió:Que raro, cuando lo compilo, me sale una rom de 24kb, pero cuando lo compilo con la opcion "ejecución en $ff0000", me crea un archivo basic.ram de 128kb ...

64K de RAM y 64K de VRAM, es normal.

Los tiles (los de texto) son automáticamente grabados directamente por el LAKABAJO en la VRAM para no gastar espacio de programa.

Tus tiles deben ser, o bien grabados en la VRAM mediante el programa (es decir, del PC a la RAM, y de la RAM a la VRAM, con lo que se gasta espacio de la RAM inútilmente y es más lento), o incluir las tiles usando un comando especial

Si tan solo son 24k, no vale la pena complicarse la vida
ok, ahora me cuadra, nunca habia usado esa herramienta

http://www.dream-comics.com/Megadrive/Ejemplos/basic.ram

Fijate, cuando haces colision con el otro sprite, deveria cambiar el "0" por "1", sucede?

Me esta volviendo loco, porque en todos los emuladores, funciona... menos en el Kgen...

asi q quiero saver si en el hardware real funciona o no.. o sea, con una colision entre los sprites, pasa de 0 a 1

Cuando tengas tiempo, ya lo veras, gracias
socram8888 está baneado por "incumplimiento términos y condiciones de uso"
Mañana lo pruebo y te lo digo, estoy escribiendo desde la DSi XD

Donde sí lo puedo probar ahora, es en el mando e-Time, que emula bastante bien el sistema. Voy a encender el portátil y lo pruebo...

Pero necesito que me pases el normal, el basic.bin
ok, genial

http://www.dream-comics.com/Megadrive/Ejemplos/basic.bin

El e-time ese, es una megadrive con SD? digo, por lo q vi en google...
socram8888 está baneado por "incumplimiento términos y condiciones de uso"
Bueno, pues en el susodicho mando (si, ese que lleva SD) no ha funcionado, ni siquiera pasando uno por encima del otro me detecta nada

Mañana si puedo probaré en el hardware real (digo si puedo porque mi cable de LAKABAJO tiene un índice de error de 18 de cada 20 intentos, y en uno de ellos se envía corrupto [qmparto]
OK, gracias, como tengo el megacd, tambien puedo compilarlo para MegaCD y probarlo ahi, solo gasto un CD... pero no se si sera lo mismo q megadrive..
socram8888 está baneado por "incumplimiento términos y condiciones de uso"
theelf escribió:OK, gracias, como tengo el megacd, tambien puedo compilarlo para MegaCD y probarlo ahi, solo gasto un CD... pero no se si sera lo mismo q megadrive..

En el modo MCD del BEX, se ejecuta en el 68000 principal, por lo que es igual que si conectaras un cartucho (antes de que venga alguien a contradecirme: obviamente los datos están en una dirección de memoria distinta, y por tanto las llamadas absolutas son distintas, pero el resto es lo mismo)

PD: Yo para estas navidades me pido un MCD en el eBay UK [qmparto]
PD: Yo para estas navidades me pido un MCD en el eBay UK [qmparto]


Vale la pena, muy buenos juegos. Yo tengo dos MCD1 (PAL, JAP), y una MCD2 Pal. La MCD1 PAL, comprada en UK


Sobre la rom, si no funciona en hdrware real, por lo que parece, que raro, xq la colision la hago leyendo el registro de hardware, con el comando

peekint(&hC00004).5


Deveria ser compatible, xq el registro es de hardware y solo estoy leyendo su estado...
socram8888 está baneado por "incumplimiento términos y condiciones de uso"
Pero para eso ya hay una función (no recuerdo cómo se llama)

Aun así, Devster dijo que ese registro tiene muchos fallos (lo pone en la documentación de esa función del BEX) y lo ideal es comprobarlo por Software

En mi cutre-pong lo hice por software. No es lo más rápido, pero sí lo más exacto
La funcion de colision del BEX, dejo de funcionar hace varias versiones atras lamentablemente, asi q me pase tiempo buscando una forma de hacerla yo mismo, y en teoria el peekint ese deveria funcionar, pero es raro, que funcione en algunos emuladores si, en otros no...etc

Tendre q seguir buscando una forma de leer el maldito registro de colisiones... que me ayudaria cantidad con los sprites...
acabo de probarlo y opino lo mismo sobre las colisiones, cuando choca deberia permitir continuar en direccion paralela a la pared y no detenerse y obligarte a retroceder unicamente.
socram8888 está baneado por "incumplimiento términos y condiciones de uso"
Bueno, pues yo no puedo probarlo: "LINE 1111 EMULATOR IFFFFFFCA" me da de error el LAKABAJO en la pantalla del Sonic :(

PD: Oye, se me ha ocurrido abrir el basic.ram que me has pasado con un editor hexadecimal, y está todo a 0x00!!!
Uy semana ocupada, y no pude ponerme a programar

Para Maduin y jordigahan,subo una rom nueva,a ver si lo que decian del movimiento, les parece mejor en este codigo nuevo que hice

http://www.dream-comics.com/Megadrive/Ejemplos/colision.bin


De paso como lo reprograme, a ver quien tiene unos minutos, y prueba la rom, buscando fallos

Gracias por sus ideas y ayuda!
pues te cuento:
la primera mejora importante que veo, es que la rom ahora ocupa la mitad y eso siempre es bueno. ;)

y hora lo malo:
lo primero que me ha sorprendido es que lo he probado con el kega fusion y el personaje no se mueve hacia la derecha, pero luego lo he probado con el gens, y ese error desaparece.

la otra cosa que me he encontrado es que cuando chocas con una pared (no importa la dirección) pongamos como ejemplo si vas hacia la izquierda y chocas, puedes avanzar hacia arriva o abajo, pero no puedes volver al punto donde se ha producido la colision sin ir a la derecha un poco (no se si me explico... :p )
Ante todo, gracias por tu tiempo

pues te cuento:
la primera mejora importante que veo, es que la rom ahora ocupa la mitad y eso siempre es bueno. ;)


Eso es porque quite un plano de scroll, antes aunque no se viera estaban dos graficos superpuestos, lo hice para probar que no se relentizara

y hora lo malo:
lo primero que me ha sorprendido es que lo he probado con el kega fusion y el personaje no se mueve hacia la derecha, pero luego lo he probado con el gens, y ese error desaparece.


NO tengo ni idea de eso, que version de Kega usas? yo lo estoy probando con el Fusion 3.64, y va perfecto a la derecha, izquierda..etc


la otra cosa que me he encontrado es que cuando chocas con una pared (no importa la dirección) pongamos como ejemplo si vas hacia la izquierda y chocas, puedes avanzar hacia arriva o abajo, pero no puedes volver al punto donde se ha producido la colision sin ir a la derecha un poco (no se si me explico... :p )


Si lo veo, justo en la esquina de un bloque, gracias

Tambien, me voy a bajar otras versiones de Kega...
la version del kega que he usado es la 3.63, aunque reconozco que hace bastante tiempo que la tengo y no tengo ni idea de que version es la ultima.
Con kega 3.51 funciona sin problemas la dirección.

No me preguntes cómo, pero insistiendo en un bloque he conseguido superponer el sprite del prota por encima de los "muros" (cómo si hubiera metido un poke en el spectrum para saltarme a la torera la colisión).

Luego he intentado repetir pero no me ha vuelto a salir.
27 respuestas