Regresar   Foro de marcianitos.org > Consolas, Recreativas y Ordenadores > Consolas > Retroconsolas

 
 
Old 09-abr-2008, 02:09   #41
Manofwar
Marciano
 
Avatar de Manofwar
No destripes nada Fistro, que estoy encontrando más información y creo que se puede hacer por soft.

A proposito, que emulador de Megadrive me recomendais

Saludos
   
Old 09-abr-2008, 02:18   #42
Macarro
Administrador
 
Avatar de Macarro
Kega fusion es más fiel que gens32 a la megadrive (reproduce, por ejemplo, algunos bugs en el thunderforce iv que gens no), consume más recursons, pero en un ordenador medio esto no supone ningún problema.
   
Old 09-abr-2008, 02:21   #43
Manofwar
Marciano
 
Avatar de Manofwar
Es por probar a programar algo y ver los resultados.

Gracias Macarro.
   
Old 09-abr-2008, 03:32   #44
geezup
Editor Marciano
Una explicación interesante, de porqué no es lo que yo decía

http://www.tototek.com/phpBB2/viewtopic.php?t=1840

Y un compilador para Megadrive... en BASIC !

http://devster.monkeeh.com/sega/basiegaxorz/

Roms caseras con fuentes para el compilador anterior...

http://mipagina.cantv.net/tomman/romz/index.htm

está curioso, pero salvo cosas super básicas me dan errores de checksum, y el emu no me rula lo que compilo. Vamos que no me deja rular un puto bucle... cosas tipo "print" si me lo hace, y cambiar colorines, y poco más.

DevKit en C

http://devster.proboards22.com/index...ead=1155137427

Editado por geezup en 09-abr-2008 a las 04:56.
   
Old 09-abr-2008, 09:49   #45
doragasu
Marciano
 
Avatar de doragasu
Quote:
Originalmente publicado por Manofwar Ver post
A ver que os parece esta opción para utilizar un tarjeta SD y tener todos los juegos que quieras.

Una Memoria flash donde guardar el juego.

Un microcontrolador normalito, que cuando se le indique (botón de reset), desconecte el bus de datos y direcciones de la consola y reprograme la memoria flash con el juego que hay en la tarjeta SD. Una vez hecho esto vuelve a conectar los buses y ya tienes juego nuevo.

A 150 us por byte (AT29C040 de 4Mb) son 76,800 ms en regrabar toda la memoria con un nuevo juego.
Algo parecido a eso también se me había pasado por la cabeza, pero la idea de programar para la Megadrive me echaba un poco para atrás. Hay que ver también cómo se hace exactamente eso de "desconectar los buses", porque puede dar varios problemas. Uno es que la consola no los va a desconectar y va a estar intentando leer constantemente (salvo que permanezca el reste pulsado. Ignoro si desde el cartucho se puede forzar la línea de Reset, tal vez se pueda). Otro problema es que cuando se ejecuta el menú de selección en la consola, para elegir la ROM a cargar, el programa que se ejecuta hay que pasárselo. ¿Dónde metemos ese programa, también en flash?

Este proyecto es una de esas típicas cosas que me encantaría hacer, pero que se me van acumulando en una montaña y al final ahí se quedan, como el DUCK, que al final se quedó a medias .

Editado por doragasu en 09-abr-2008 a las 09:53.
   
Old 09-abr-2008, 10:05   #46
doragasu
Marciano
 
Avatar de doragasu
Quote:
Originalmente publicado por Manofwar Ver post
El único inconveniente que veo sería la forma, una vez seleccionado el juego, de decirle al microcontrolador que realice su función de escribir la flash.
Yo creo que ese no es de los principales problemas. A grandes rasgos, tal vez podría funcionar así el invento:

1.- El cartucho arranca en modo "bypass", la consola lee directamente de la memoria Flash, con lo que si hay un juego flasheado, comenzará de inmediato.
2.- El usuario pulsa el Reset. El PIC lo detecta, mantiene el Reset, desconecta el bus de la Megadrive, y programa el "loader" en la Flash. Luego levanta el reset. La consola ejecuta el "loader".
3.- El usuario selecciona una ROM. El "loader" guarda la ROM seleccionada en una posición concreta de la Flash, que no esté usada por el loader (por ejemplo en el último sector de la Flash. También se guarda un "boot-flag" concreto. El usuario vuelve a pulsar reset.
4.- El loader lee el "boot-flag" y sabe que debe proceder al flasheo de la ROM seleccionada, con el nombre guardado en el último sector de la Flash. Procede a flashear la ROM y levanta el Reset.

Este método tiene un problema, y es que el "loader" debe poder acceder a la tarjeta SD para ver su contenido. Tal vez se pueda mapear algún registro del PIC en las direcciones de la SRAM y acceder a la SD a través del PIC y ese registro.

Seguramente se puede hacer de un modo más "limpio", sin usar ningún PIC, simplemente con la Flash, una PLD (o tal vez haga falta irse a una FPGA pequeñita) y ejecutando el código que lee de la SD y flashea la consola únicamente desde la propia consola. Habría una zona que sería el loader que estaría siempre fija en la Flash, y el resto se encargaría de escribirlo el loader. La PLD se encargaría de la decodificación de direcciones y de facilitar al loader la lectura de la tarjeta SD, simulando el protocolo SPI. Si se hace así, es NECESARIO meter al menos una PLD, porque hay que hacer una decodificación bastante más complicada que en el otro caso. Aún así, a mí, pensándolo así rápido, me parece la mejor opción.
   
Old 09-abr-2008, 11:14   #47
Fistro
Invitado
Joder que nivel hay por aquí, suena a "ya mismo tenemos cartucho flash!!"
   
 
Old 09-abr-2008, 11:29   #48
Manofwar
Marciano
 
Avatar de Manofwar
A ver si consigo explicar claramente mi idea del procedimiento.

1. Al arracar la consola el PIC lee la información de roms que hay en el SD, graba en la flash el loader junto a la información de las roms.

2. Conecta los buses y le dice a la consola que hay un cartucho conectado. Según el pinout de esta web el pin B32 parece ser un indicador para que la consola sepa si hay cartucho conectado o no.

3. La consola ejecuta el loader, se selecciona el juego mediante un menú programado en el loader.

4. Ahora viene el inconveniente, ¿cómo le decimos al PIC la rom que tiene que leer de la SD para grabarla en la Flash?

Quote:
3.- El usuario selecciona una ROM. El "loader" guarda la ROM seleccionada en una posición concreta de la Flash, que no esté usada por el loader (por ejemplo en el último sector de la Flash. También se guarda un "boot-flag" concreto. El usuario vuelve a pulsar reset.
Pero, repito ¿cómo lo hacemos? ¿cómo guardamos en la flash algo? Mirando el pinout del cartucho no se me ocurre. Y eso si se puede acceder a los pines de control de alguna forma desde el software.

Creo que la solución podría estar, si se puede, en que el loader escriba en el bus de direcciones el número de rom a cargar (rom1=$000001, rom2=$000002, etc).

A continuación realiza un reset del cartucho, si se puede acceder al pin concreto, y se queda en un bucle, el PIC al detectar el reset lee el bus de direcciones y comienza la lectura/escritura de la rom.

5. Una vez escrita la Flash, el PIC realiza un reset mediante el cambio de estado del pin B32 (aquí viene explicado) y la consola comienza a ejecutar el juego.

6. Si se realiza un nuevo reset, al detectarlo el PIC cargará en la Flash nuevamente el loader, y vuelta al punto 1.

De esta forma no es necesario que el loader lea la SD atraves del PIC, ya que el PIC cargará la información junto al loader y se quedará a la espera del reset para saber que rom tiene que cargar.

Saludos

Saludos
   
Old 09-abr-2008, 12:08   #49
Fistro
Invitado
Si señor Manofwar, eso parece mas facil, con un PIC. Se supone que el loader está en la eprom interna del PIC, no? Se supone que el loader ocupa poco, no? Eres un crack con los PIC, esa Pinball!!!
   
 
Old 09-abr-2008, 12:29   #50
Manofwar
Marciano
 
Avatar de Manofwar
El loader mejor en la misma tarjeta SD, así no hay que reprogramar el PIC si existe una nueva versión del loader, con grabarla en la tarjeta bastará.

Saludos