Comunidad nesdev hispana

NES development discussion in English, Español, Français, Português, русский язык, or any language.

Moderator: Moderators

User avatar
Anes
Posts: 702
Joined: Tue Dec 21, 2004 8:35 pm
Location: Mendoza, Argentina

Post 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.
ANes
User avatar
Petruza
Posts: 307
Joined: Mon Dec 22, 2008 10:45 pm
Location: Argentina

Post 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?
User avatar
ehguacho
Posts: 83
Joined: Tue Mar 09, 2010 11:12 pm
Location: Rosario, Argentina
Contact:

Post 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
sorry about my english, i'm from argentina...

http://nestate.uuuq.com
User avatar
Anes
Posts: 702
Joined: Tue Dec 21, 2004 8:35 pm
Location: Mendoza, Argentina

Post 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.
ANes
User avatar
ehguacho
Posts: 83
Joined: Tue Mar 09, 2010 11:12 pm
Location: Rosario, Argentina
Contact:

Post 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" (:
sorry about my english, i'm from argentina...

http://nestate.uuuq.com
User avatar
Diskover
Posts: 219
Joined: Thu Nov 24, 2011 7:16 am
Contact:

Post 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.

Image Image

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" ;-)

Image Image

ROM: http://www.elotrolado.net/download/file.php?id=71262

Image Image
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.

Image

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.

Image

Image

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.

Image

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
User avatar
Petruza
Posts: 307
Joined: Mon Dec 22, 2008 10:45 pm
Location: Argentina

Post 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?
User avatar
Diskover
Posts: 219
Joined: Thu Nov 24, 2011 7:16 am
Contact:

Post 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.
User avatar
Petruza
Posts: 307
Joined: Mon Dec 22, 2008 10:45 pm
Location: Argentina

Post 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?
User avatar
Diskover
Posts: 219
Joined: Thu Nov 24, 2011 7:16 am
Contact:

Post 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.

Image Image

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.
Last edited by Diskover on Fri Nov 25, 2011 5:18 am, edited 1 time in total.
User avatar
Petruza
Posts: 307
Joined: Mon Dec 22, 2008 10:45 pm
Location: Argentina

Post by Petruza »

No se ven las imágenes
User avatar
Diskover
Posts: 219
Joined: Thu Nov 24, 2011 7:16 am
Contact:

Post by Diskover »

Arreglado
User avatar
Petruza
Posts: 307
Joined: Mon Dec 22, 2008 10:45 pm
Location: Argentina

Post by Petruza »

ah porque las pusieron abajo, pero arriba no creo que quede muy mal.

Image

Sólo una sugerencia.
User avatar
Diskover
Posts: 219
Joined: Thu Nov 24, 2011 7:16 am
Contact:

Post 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? ¿?

Image Image

ROM: http://www.megaupload.com/?d=UZYBW2AF
User avatar
Diskover
Posts: 219
Joined: Thu Nov 24, 2011 7:16 am
Contact:

Post 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.

Image Image

ROM: http://www.megaupload.com/?d=HKD97C2B
Post Reply