Page 5 of 7
Posted: Wed Jul 20, 2011 10:55 am
by Anes
ehguacho wrote:Petruza wrote:No veo por qué podría haber problemas con la pila. Si se llamaran recursivamente podría ser, pero no tiene sentido.
Cada CPU emulado debería llamar sólo a una instrucción a la vez
lo mismo pense yo, pero queria sacarme la duda de todas maneras jeje
No hay problemas con la pila, como dice Petruza si fueran recursivas sí, pero una sola función no.
Posted: Wed Jul 20, 2011 2:56 pm
by Petruza
Anes wrote:Petruza wrote:y la ejecución de las instrucciones, la hacés con punteros a función guardados en esa matriz?
No, de ahí tomo los ciclos nomás, no uso puntero a funciones, excepto para los mappers.
Mapeo la memoria del CPU y PPU.
Alguien de aquí quiere compartir su código?
Posted: Thu Jul 21, 2011 12:13 am
by ehguacho
Anes wrote:En realidad, los cpu test de Blargg en el readme tienen una matriz de los ciclos de los opcodes, de ahí yo los tomé directamente e hice una matriz en C.
yo hice exactamente lo mismo con el famoso M6502 de Marat Fayzullin
Posted: Tue Aug 02, 2011 1:01 am
by Anes
yo hice exactamente lo mismo con el famoso M6502 de Marat Fayzullin
Tené cuidado con esos documentos. Están medios desactualizados. No te recomiendo que lo saqués de ahí. Por supuesto no te vas a poner a comparar opcode por opcode para ver si son iguales, pero los test de blargg se saben que sí están correctos.
edit: Acordate también del page crossing.
Posted: Tue Aug 02, 2011 6:07 am
by ehguacho
yeap, lo tuve en cuenta en su momento, es por eso que despues baje los tests de blarg de la CPU y en todos saque "muy bien te felicito" (:
Posted: Thu Nov 24, 2011 7:25 am
by Diskover
Hola buenas. Da la casualidad que desde hace algunas semanas estoy siguiendo un tutorial básico creado por el usuario
wave o
sewave (dependiendo el foro).
Empezamos muy activamente en el foro de El Otro Lado, en la sección Consolas Clásicas
http://www.elotrolado.net/hilo_tutorial ... co_1694073
Debido a la poca acogida, decidimos trasladarlo todo a mi foro de la NES, RetroNES, que no se si la conoceréis. El nuevo hilo tiene esta dirección:
http://www.retrones.net/foro/viewtopic.php?f=1&t=8633
Os pongo unas cuantas imágenes de los progresos que estoy haciendo gracias a las enseñanzas de
wave, que ademas se esta trabajando un framework basado en NESHLA. A parte, para la cración de pantallas y sprites uso el NES Screen Tool
Ejemplo 1: Imagen estática de Zelda 3.
- Elegí una pantalla del videojuego
The Legend of Zelda: A link to the past de SNES para pasarla a la NES y ver que tal quedaría dadas sus limitaciones. Para ello hice una captura del juego y mediante la herramienta NES Screen Tool recree lo máximo posible los objetos, tiles, etc... que aparecían en la NES.
- Hay que tener en cuenta que solo podemos jugar con 4 paletas de 4 colores, uno de ellos compartido y que se usa como color predominante, fondo, etc... Ademas, la pantalla realmente esta dividida por sprites de 2x2 tiles y tienen que compartir la misma paleta, por lo cual se nos complica mucho mas las cosas. Podéis comprobarlo vosotros mismos.
- Os dejo la muestra y la rom resultante. Como está creada bajo el codigo de uno de los primero ejemplos del tutorial, se conserva el efecto de aumentar o bajar el brillo usando la cruceta arriba o abajo.
ROM:
http://www.elotrolado.net/download/file.php?id=71254
Ejemplo 2: Imagen estática de SMW
- Este ejemplo es igual que el anterior pero con el juego Super Mario World de SNES
- Fijaos en el detalle de los límites de la NES. Mientras en la SNES podemos jugar con hasta 5 planos diferentes, en la NES solo hay dos: El fondo y los sprites principales. Representar el fondo sin consumir toda la tabla de tiles que nos deja el banco de NES es complicado, por eso muchas en muchas ocasiones prefiero hacer algo parecido al original y no igual. Que de "el pego"
ROM:
http://www.elotrolado.net/download/file.php?id=71262
Ejemplo 3: Imagen estática con metaSprite en movimiento
- Aquí la cosa se pone mas interesante. Volvemos al
The Legend of Zelda: A link to the past he incluimos un sprite de Link muy rudimentario. Los sprites solo pueden llevar una paleta de 4 colores y encima uno de ellos tiene que ser transparente para que se vea bien en pantalla. Así pues, yo aquí he jugado con el
transparente + negro + verde + marrón.
- Para ello he hecho uso de los metaSprites que hablamos en el tutorial.
ROM:
http://www.elotrolado.net/download/file.php?id=71440
Ejemplo 4: Jugando con los metaSprites: Dos en uno.
- Dada la limitación de colores por sprite (3 mas transparente) he hecho uso de un viejo truco que se veía en otro juegos de NES para que los sprites, sobre todo de los protagonistas, parezca que tienen mas colores. Para ello he usado dos metaSprites encajándolos uno encima del otro y ocupando las partes sin colorear de uno por los del otro. Es algo complejo dado que tienes que tener muy claro con la herramienta de creación de tiles que partes ocupara uno y cuales el otro para que cuando encajen, queden perfectos.
- Este truco se uso por ejemplo para poner el blanco de los ojos a Megaman o a Mario en Super Mario Bros. 2 entre otros. Yo aprovecho que puedo usar 3+1 para darle mas vida al sprite del Link, añadiéndole el color purpura y naranja al gorro y a la cara. El resultado es muy aceptable y mejor que el original.
- Lo malo es que consumes mas recursos de la NES pues estas moviendo mas metaSprites a la vez, no solo uno. Ademas, es muy complejo animar todos a la vez y no volverte loco. Si vais ha hacer esto, planteároslo bien desde el principio como hacerlo por que os podéis volver tarumbas.
- También he hecho que Link solo se mueva cuando pulsamos la cruceta.
ROM:
http://www.elotrolado.net/download/file.php?id=71495
Ejemplo 4: Esta vez con el Super Mario World:
- He intentado no complicarme tanto y usar solo dos metaSprites para dibujar a Mario en vez del cacao que tenia montado con Link.
- Mario tiene tres frames: Quieto, iniciando andar y andando. Animándolo parece que anda a trote. Ademas he añadido que solo lo haga hacia la izquierda y hacia la derecha y se anime solo cuando pulsamos cualquiera de estas direcciones.
Objetivos:
- Que cuando deje de pulsar se ponga en el frame de quieto. No se si habra alguna sentencia contraria a
mantained que interprete esto.
- Que cuando pulse B la velocidad de desplazamiento sea mas rápida y luego vuelva a la normalidad cuando deje de pulsar.
Por ahora solo eso. Dejo la primera rom de demostración y una captura.
ROM a:
http://www.megaupload.com/?d=ZYKTJ1T8
ROM con control de velocidad añadido:
http://www.megaupload.com/?d=YDN73CEA
Espero que sea de vuestro agrado
Posted: Thu Nov 24, 2011 8:05 am
by Petruza
Muy interesante, pero explica un poco más de qué va tu proyecto, cuál es el objetivo? retro-portar juegos de SNES a NES? algún juego en particular? sólo hacer screenshots?
Posted: Thu Nov 24, 2011 8:13 am
by Diskover
Por ahora estoy aprendiendo pues mis conocimientos son mínimos.
Seria interesante poder portar el Super Mario World o el Zelda de SNES a NES. Comprovaras que las imagenes son sreenshoots que monto con el NES Screen Tool, pero a los sprites de Mario y Link les estoy intentando dar vida.
Por ahora solo les estoy usando para poner a prueba los conocimientos que voy adquiriendo y que me va enseñando wave.
Mas adelante seguramente hagamos un juego completo, desde 0 y original, pero mientras tanto mis tutorias las desempeño probando cosas en estos dos juegos.
Posted: Thu Nov 24, 2011 9:56 am
by Petruza
Los screenshots tuyos la verdad se ven muy bien, el proyecto está muy bueno.
Con respecto a las pantallas de Super Mario, la barra negra de arriba creo que se podría reemplazar por el color de fondo, azul en la primera y verde en la segunda, de esa forma se lograría imitar el overlay de las pantallas de SNES, no?
Posted: Fri Nov 25, 2011 2:35 am
by Diskover
No quedaría bien, y aun mas, quedaría tan mal como la versión china que hicieron en su día del SMW para la NES.
Un despropósito.
Lo mio es muy mejorable, y se hará bien a su debido momento, pero no pienso poner el color de fondo del marcador según cuadre con que pantalla. Mejor dejarlo siempre negro.
Posted: Fri Nov 25, 2011 4:44 am
by Petruza
No se ven las imágenes
Posted: Fri Nov 25, 2011 5:18 am
by Diskover
Arreglado
Posted: Fri Nov 25, 2011 5:58 am
by Petruza
ah porque las pusieron abajo, pero arriba no creo que quede muy mal.
Sólo una sugerencia.
Posted: Fri Nov 25, 2011 8:21 am
by Diskover
Ahora Mario se mueve y controla bien: Anda, corre pulsando B, y se agacha.
Mmmm, lo de hacerle saltar me parecería una proeza XD XD XD ¿alguien sabe darme una idea de como se hace en otros juegos? ¿?
ROM:
http://www.megaupload.com/?d=UZYBW2AF
Posted: Sat Nov 26, 2011 8:37 am
by Diskover
Arreglado el movimiento de Link. Ahora se mueve en todas las dirección, aunque cuando vas en diagonal, en algunos casos y dependiendo de como partías, la animación se queda parada.
ROM:
http://www.megaupload.com/?d=HKD97C2B