› Foros › Retro y descatalogado › Consolas clásicas
; Implementar una tabla de la verdad mediante el manejo de tablas grabadas en ROM.
; Por ejemplo, la tabla será de 1 pulsador y 8 salidas tal como la siguiente
; para el display de 7 segmentos y otras 4 salidas para datos.
;
; Pulsador RA4 | RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0
; ---------------|----------------------------------------
; 0 | 0 0 0 0 0 0 1 1 ; (Configuración 0).
; 1 | 0 0 1 0 0 1 0 0 ; (Configuración 1).
; 2 | 0 0 0 0 1 1 0 0 ; (Configuración 2).
; 3 | 0 0 1 1 1 1 0 0 ; (Configuración 3).
;
; La otra tabla para datos que usan los puertos A0, 1, 2 y 3.
; Hex Dec Datos OE1 OE2 A21 AUX
;3 0 1 0 1 0 0
;5B 1 2 1 0 1 0
;4F 2 3 0 1 1 0
;66 3 4 1 0 0 1
;
;
; ZONA DE DATOS **********************************************************************
LIST P=16F84A
INCLUDE <P16F84A.INC>
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
CBLOCK 0x0C
Contador ; El contador a visualizar.
ENDC
#DEFINE Display PORTB
#DEFINE OE1 PORTA,0
#DEFINE OE2 PORTA,1
#DEFINE A21 PORTA,2
#DEFINE AUX PORTA,3
#DEFINE Pulsador PORTA,4
; ZONA DE CÓDIGOS ********************************************************************
ORG 0 ; El programa comienza en la dirección 0.
Inicio
bsf STATUS,RP0 ; Acceso al Banco 1.
clrf Display ; Las líneas del Puerto B se configuran como salida.
bcf OE1 ; PORTA,0 o OE1 como salida.
bcf OE2 ; PORTA,1 o OE2 como salida.
bcf A21 ; PORTA,2 o A21 como salida.
bcf AUX ; PORTA,3 o AUX como salida.
bsf Pulsador ; PORTA,4 o Pulsador como entrada.
bcf STATUS,RP0 ; Acceso al Banco 0.
Principal
btfsc Pulsador ; ¿Pulsador presionado?, ¿(Pulsador)=0?
goto Fin ; No. Vuelve a leerlo.
; call Retardo_20ms ; Espera que se estabilicen los niveles de tensión.
btfsc Pulsador ; Comprueba si es un rebote.
goto Fin ; Era un rebote y sale fuera.
call IncrementaVisualiza ; Incrementa el contador y lo visualiza.
EsperaDejePulsar
btfss Pulsador ; ¿Dejó de pulsar?. ¿(Pulsador)=1?
goto EsperaDejePulsar ; No. Espera que deje de pulsar.
Fin goto Principal
Tabla
goto Configuracion0
goto Configuracion1
goto Configuracion2
goto Configuracion3
Configuracion0
bcf OE1
bsf OE2
bcf A21
bcf AUX
movlw b'00000011' ; (Configuración 0).
goto ActivaSalida
Configuracion1
bsf OE1
bcf OE2
bsf A21
bcf AUX
movlw b'01011011' ; (Configuración 1).
goto ActivaSalida
Configuracion2
bcf OE1
bsf OE2
bsf A21
bcf AUX
movlw b'01001111' ; (Configuración 2).
goto ActivaSalida
Configuracion3
bsf OE1
bcf OE2
bcf A21
bsf AUX
movlw b'01100110' ; (Configuración 3).
ActivaSalida
movwf Display ; Visualiza por el puerto de salida.
goto Principal
; Subrutina "IncrementaVisualiza" ---------------------------------------------------------
IncrementaVisualiza
incf Contador,F ; Incrementa el contador y comprueba si ha
movlw d'4' ; llegado a su valor máximo mediante una
subwf Contador,W ; resta. (W)=(Contador)-4.
btfsc STATUS,C ; ¿C=0?, ¿(W) negativo?, ¿(Contador)<4?
InicializaContador
clrf Contador ; No, era igual o mayor. Por tanto, resetea.
Visualiza
movf Contador,W
andlw b'00000111' ; Se queda con los tres bits de entrada.
addwf PCL,F ; Salta a la configuración adecuada.
call Tabla ; Lo pasa a siete segmento para poder ser
; movwf Display ; visualizado en el display.
return
; Subrutina "Tabla de la verdad del Display" -----------------------------------------------
INCLUDE <RETARDOS.INC>
END
Decodificador de 7 segmentos 74LS47 Paso a Paso
http://tecnoface.com/tutoriales/12-prac ... ntos-ls247
josete2k escribió:
Noviembre 2012:FFantasy6 escribió:Encima que guarde el estadojosete2k escribió:Bueno, el supercic lo hace, por algo tienen zona eeprom los pics ¿no?
Por cierto, ¿cómo haces tus multi de megadrive sin interruptores?FFantasy6 escribió:lo pensé pero los multigame no guardan estado, por eso al final se hacen con menú.
Si no sale nadie molestamos a un conocido.
No salió nadie , bueno casi (gracias koolk) así que anoche me empapé de asm... y ya estoy en ello.
Se puede decir que tengo el código al 90%
Vídeo ya mostrado.
https://www.youtube.com/watch?v=E57NsB_WntI
spaffy escribió:Estoy intentando grabar un zelda original sin parchear (la version USA) para ejecutar en mi SNES con supercic.
Es normal que los emuladores no abran la ROM despues de pasarla por el bankswap?
Gracias!
azulantares escribió:Si, es normal
spaffy escribió:azulantares escribió:Si, es normal
Muchas gracias azulantares y a todos los que colaboran en el hilo. Ya tengo mi Zelda soldado y funcionando
josete2k escribió:La sram no sólo se usa para guardar. Hay juegos que sin ella no arrancan o sacan fallos.
josete2k escribió:Juegos en un solo cartucho, pues en principio depende: si no gestionas sram, si metes un sram de 256, si comparten archivo de guardado... Las posibilidades son infinitas o casi.
retrocollector escribió:Que yo sepa en paralelo se pueden poner.. Pero por lo visto consume antes la pila...
josete2k escribió: prefiero un flash cart la verdad.
Koolk escribió:¿Puedes subir algunas fotos del cartucho?
Motiva o impulsa más a la gente en lanzarse a esta aventura viendo proyectos de los demás, así se animan y se apuntan más gente.
Koolk escribió:Buenas:
Pedazo trabajo. Me encanta ver estas cosas.
¿Puedes subir un vídeo y que se vea tocando los Switch mientras se vea el funcionamiento?
Voy a analizar paso por paso lo que haz hecho para hacer unas cositas que me interesan y puede que a los demás también.
Buen trabajo.
Koolk escribió:Hola:
Estupendo, menudo trabajo has hecho.
Te falta poco.
Si te funciona todo lo que quieres. ¿Qué vas hacer? ¿Usar muchas EEPROM en una misma placa?
1RX escribió:Koolk escribió:Hola:
Estupendo, menudo trabajo has hecho.
Te falta poco.
Si te funciona todo lo que quieres. ¿Qué vas hacer? ¿Usar muchas EEPROM en una misma placa?
Hola, lo que quiero es tener esa placa para hacer todas las pruebas de las EPROM o FLASH que programe, ya que tengo como 4 placas de pruebas y quería unificarlas todas...
por ejempo:
juegos de:
-1MB con una EPROM
-2Mb con 2 EPROM
-4MB con una FLASH 29f032
-6MB con 2 FLASH 29f032
Además que siempre había tenido la idea pero hasta ahora no lo había hecho porque no me hacía de las ganas.
Koolk escribió:1RX escribió:Koolk escribió:Hola:
Estupendo, menudo trabajo has hecho.
Te falta poco.
Si te funciona todo lo que quieres. ¿Qué vas hacer? ¿Usar muchas EEPROM en una misma placa?
Hola, lo que quiero es tener esa placa para hacer todas las pruebas de las EPROM o FLASH que programe, ya que tengo como 4 placas de pruebas y quería unificarlas todas...
por ejempo:
juegos de:
-1MB con una EPROM
-2Mb con 2 EPROM
-4MB con una FLASH 29f032
-6MB con 2 FLASH 29f032
Además que siempre había tenido la idea pero hasta ahora no lo había hecho porque no me hacía de las ganas.
Buenas:
Si tienes dos de 29F032 son 8 M Byte en total, o lo que es lo mismo, 64 M Bit. Pueden caber unos cuantos juegos buenos, aunque sean varios RPG en un solo cartucho.
A veces cuando no tienes ganas, te llegan cuando menos te lo espere, ajjajajjajaja. En mi caso, tengo unas ganas impresionantes.
Espero que hayas resuelto los problemas, así harás la versión de dos 29F032 y me encargo de hacer el switch en digital con PIc.
Una cosa, cuando se habla de 29F032, e incluso los PIC18F4550, PIC16F886. Ya te está diciendo directamente que son Flash. En cambio de que veas una C en su lugar, es muy antiguo esta tecnología. Es para dejarlo claro.
Muy interesante tu trabajo.
Estoy con unos amigos experimentado, documentandonos, observando y mil cosas más de como funciona el EverDrive v2, un cartucho que puedes poner en un micro-SD las ROM y como las ejecutas. Usa como controlador un buen FPGA, nada que ver con los microcontroladores, es más potente y específico. Por lo que se ve, usa FPGA para que la gente no se copie.
https://www.youtube.com/watch?v=eLVR5ZpUs7M
Lo que hace internamente es:Seleccionadmos con un menú un juego que tiene cargado en la micro-SD.
La memoria SD donde están las ROM es como si nosotros estuvieramos con muchos cartuchos de fábricas y originales en nuestras manos. Si queremos cambiar de juegos, simplemente, apagasmos la SNES, quitamos el cartucho anterior, ponemos el nuevo que nos interese, encendemos la SNES y nos ponemos a jugar.
Comprueba si está la EEPROM 29F032. (Puede ser otra EEPROM).
Se hace lectura.
Si hay un juego dentro, se borra.
Carga el juego seleccionado en la 29F032.
La SNES se comporta como si el 29F062 es lo normal, solo lee ahí, es esta EEPROM, no en la SD.
Pensaba que es muy complicado el tema del EverDrive, para ser que no y lo haremos con Arduino y su Shield del SD. Este es un tema que estudiaré más adelante y muy a fondo.
josete2k escribió:El máximo teórico son 128 pero creo que el límite está en 96 (hilando más fino, 95).
Yo estoy pendiente de montar un Star Ocean en una BJ3M con tres 29F032/33 pero entre que no tengo mucho tiempo libre y que me sale más barato usar el cartucho jap, pues lo voy dejando.