Nintendo Entertainment System – Help DOC - Documento oficial de ayuda - Switchstance - 03/04 – Version 1.5

 

              I.      Indice de Contenidos :

            II.      Introduccion a la Emulacion de Maquinas recreativas en General

          III.      Por que decidi escribir un documento sobre NES

          IV.      Sobre el Documento. (Algunas cosas interesantas que deberias saber antes de leer...)

            V.      Contacto con el autor

          VI.      Puedes ayudarme , puedo ayudarte , no puedo ayudarte. (Diversas cosas que deberias tener en cuenta antes de escribirme)

        VII.      Agradecimientos

      VIII.      Diversa Bibliografia y Documentos que deberias conocer/leer antes que leer el mio.

          IX.      Programas que deberias conseguir antes de comenzar a trabajar en serio.

            X.      Otros documentos que te podrian ayudar (no necesarios) 

          XI.      Websites que deberias visitar siempre!

        XII.       Advertencia Final!!!!!! - Antes de LEER!!! LEEME!!   

      XIII.      Principios basicos de la Emulacion de NES : Valores Hexadecimales , etc.

     XIV.      La Nes , la mejor consola de todos los tiempos : Historia , revision y estructura general.

       XV.      Terminologia General utilizada en este documento   

     XVI.      El procesador 6502

   XVII.      Interrupciones/Interrupts

 XVIII.      Mapa de memoria del CPU

     XIX.      Algunas notas sobre el CPU   

       XX.      Mapa de Memoria del PPU

     XXI.      Mapa de Memoria de Sprites

   XXII.      Mirroring

 XXIII.      Mirroring de la Paleta

 XXIV.      Puertos I/O Registros (Mapa)

   XXV.      Notas sobre CARTS

 XXVI.      Abriendo NES CARTS

XXVII.      Traducciones de CARTS

XXVIII.      CHIP CIC

 XXIX.      Nes & Famicom – Diferencias y similitudes

   XXX.      Tamaños de los CARTS

 XXXI.      Nes & Snes

XXXII.      Nes & Game boy

XXXIII.      Paleta de Colores del NES

XXXIV.      Mappers

XXXV.      Lista de Mappers

XXXVI.      Sonido de la NES – Especificaciones Tecnicas

XXXVII.      Josticks

XXXVIII.      Informacion Tecnica de los josticks

XXXIX.      Como funcionan?

        XL.      Famicom Josticks y NES

      XLI.      Expansion Port

    XLII.      Formato *.NES

  XLIII.      Formato *.FDS

 XLIV.      Hacking de Carts

   XLV.      Alterando los graficos (Con Soft y Nesticle)

 XLVI.      Traduccion y edicion de texto de los Carts.

XLVII.      Hacking de Sonido

XLVIII.      Otros hacking (dentro de NES)

 XLIX.      Pequeña introduccion al 6502 Assembler (Sacado!)

            L.      Biblioteca de Links

 


Introduccion a la Emulacion de Maquinas Recreativas en General


Un Emulador es un programa capaz de interpretar en una maquina (la nuestra o la que sea) codigo para un software originalmente escrito para otra plataforma , para que pueda ejecutarse en esta. Esto nos dice que podemos tranquilamente a traves de un Emulador jugar al Sonic 2 (originalmente escrito para la Consola Megadrive) en nuestra PC. El Emulador traduce el codigo de la maquina original (Megadrive por ejemplo) y la ejecuta en nuestro ordenador , y este lo ejecuta sin saber que esta comportandose como otra plataforma. Los Desarrolladores (developers) para crear estos programas necesitan investigar sobre la estructura interna de las consolas o maquinas recreativas para poder Emularlas (por ejemplo : procesador , juego de instrucciones , cantidad de registros , accesos a memorias ,etc) e implementan un comportamiento identico en una PC. O para que funcionen utilizando el Hardware basico de un PC.
Hoy en dia la Emulacion ha alcanzado rumbos insospechados , en la actualidad casi todas las maquinas conocidas son Emuladas en Pc , como todas las consolas recreativas , las maquinas de arcade (las nuevas y las viejas) , Apple , Palms , Telefonos Celulares y otros sistemas operativos. Todo esta al alcance de la mano y este documento les ayudara a entender un poco mas sobre la estrcutura interna de la NES y un poco mas.
Para buscar Emuladores es preciso saber buscar en la RED (Internet) y como buscar. Portales en Español como Emulatronia o Emumania han llevado al usuario hogareño comun muchas horas de diversion , o portales como The Zophar Domain o Emulation unlimited han llevado a estos usuarios a crear sus propios Emuladores y a informar o recopilar documentos sobre Emulacion o aspectos tecnicos de las maquinas. Tambien existen grupos de discusion muy activos como
es.comp.emuladores que es una comunidad española o alt.emulators en ingles. (Ver links mas abajo)
Los requerimientos basicos para correr un Emulador hoy en dia son casi superados por las tecnologias actuales. Cuando comenzaron a aparecer los primeros emuladores se usaba por defecto el sistema operativo Ms DOS , por lo tanto se encontraran con cientos de Emuladores para este sistema. Y gracias a los desarrolladores podemos correr sin ningun problema Emuladores tan solo con un P66 o P100 con 16 MB de memoria , en mi caso particular he corrido Emuladores en computadoras 486 y 386 con 4 MB de memoria con muy buen resultado , ya que experimente diversas configuraciones y pude hacer correr un juego Super Nintendo en un 386 bajo DOS. El almacenamiento de las ROMS o imagenes (lease juegos , carts , roms) es relativa , un juego de Spectrum ocupa unos 15kb y el Killer Instinct (V-Gold) para Arcade ocupa 164 MB. Todo depende de nuestros gustos y el uso que le demos. Siempre escucho quejas sobre el mal funcionamiento de un Emu o sobre fallas , el principal problema que yo encontre es que los Desarrolladores generalmente no cuentan con toda la documentacion de la maquina que estan desarrollando , lo que hace experimentar e incluso improvisar algunos aspectos (esto pasaba en los comienzos de los Emus para PSX). Asi que encontraran Emus sin sonido , sin buena calidad grafica y algunos que corren lento. Cualquier usuario con Experiencia sabra que casi todo esta en la configuracion y el buen manejo del programa , pero no todos los usuarios de Emus son asi , quieren poder cargar sus juegos y que corran decentemente. Si te ha llegado este Archivo te recomiendo que hagas pruebas con tu EMU y le saques el jugo. O directamente tomate el tiempo de leer toda la documentacion que viene con el EMU que en muchos casos avisa o alerta sobre problemas y aconseja sobre como poder resolverlos.
Una Rom (Read Only Memory) es el software que lee el Emulador. Hay muchas clases diferentes de ROMS : puede ser un juego de alguna plataforma , por la que cada juego que usaremos sera una ROM diferente, la bios de un sistema , o simplemente un programa para Apple. Hoy en dia se generalizo el termino y cualquier software original para una maquina es denominada ROM pero como explique antes , hace tiempo atras solo se denominaba ROM a los juegos que podiamos cargar con un Emulador. Porque esto?. Porque la informacion original (la rom original) venia en Cartuchos con una memoria de solo lectura , estos se insertaban en la consola que solo tenia el trabajo de leer dicha memoria. Los Dumpers (o volcadores) volcaban esta memoria a lenguaje binario (despues explicare como) y lo convertian en archivos listos para utlizarlos con un programa que Emulaba el comportamiento de la maquina. La diferencia es que antes se utilizaba o leia la memoria en un proceso de Hardware y ahora el Emulador la lee bajo software. En algunos Emuladores necesitaremos ROMS de sistema (lease Bios , etc) , se trata de pequeños archivos que poseen la estructura del sistema o maquina a emular y para funcionar necesita cargarse. Tal es el caso de Neo Geo CD , Playstation , etc que necesita uno o dos archivos vitales para correr videojuegos. Generalmente estos archivos no vienen con el Emulador sino que hay que buscarlos aparte. (En los links tambien mencionare donde buscar BIOS o ROMS de sistema). De todas formas siempre es conveniente leer los archivos de texto anexados al Emulador ya que proveen la informacion para buscar dichos archivos.
En el comienzo de los tiempos de la Emulacion los desarrolladores escribian programas Emuladores para correr bajo MS-DOS , luego de la aparicion de Windows aparecieron los Emuladores con interfase grafica. En la actualidad hay emuladores para cualquier sistema operativo y hasta Emuladores de sistemas operativos. Lo que me permite a mi , tener un PC , emular SUSE Linux y correrlo y utlizar un Emulador para linux corriendo en PC. Pero quienes nos hemos topado con Emus para DOS (los mejores Emus son para DOS) nos hemos visto con la molestia de configurar parametros a traves de la linea de comando.

\Emus\nesticle.exe mario.nes -vesa01 -frameskip 1

Ese es un ejemplo de como configurar el comportamiento de un Emu de NES a traves de la linea de comando en DOS. Los usuarios "regulares" no estaban acostumbrados a trabajar de esta manera ni tenian conocientos basicos de DOS para configurar la Emulacion y aparecieron los FRONTENDS. Los frontends fueron desarrollados para darle a los Emus que corrian bajo DOS una interfase grafica amigable en donde el usuario podia utilizar las opciones de configuracion. Tal es el caso de MAME (el emulador mas popular) que en su principio ( y originalmente) se desarrollo para correr bajo DOS y otros desarrolladores bajo el permiso de el desarrollador original creo Frontends para su mejor manejo. Hoy en dia hay miles de versiones de MAME en todos los idiomas , aunque bajo la interfase sigue corriendo el programa original.
Los EXTENDERS es algo tambien bastante popular en el mundo de la Emulacion y bastante vistos. Estas utlidades permiten que los Emuladores bajo DOS dispongan de mas memoria extendida , una limitacion que hace imposible su ejecucion. Mediante este programa la maquina reinicia en DOS pero habiendo aumentado los Kbytes de memoria extendida , lo que hace posible que corran los Emuladores para este sistema sin ningun incoveniente. Los mas conocidos son CWSDPMI y DOS4W y son gratuitos y generalmente vienen en el pack o .zip original del EMU. Para que este ultimo funcione es necesario copiar estos programas en el mismo lugar donde esta el ejecutable del EMU para que no aparezcan mensajes de Error.
La legalidad de una ROM es un tema que yo no voy a tratar , yo creo que la Emulacion es un avance en la tecnologia y todas estas empresas que dicen que pierden dinero porque alguien baja una ROM se puede ir a la %$#%# , ya que a nadie hace daño que un chico juegue al Mario Bros en la PC en vez de jugarlo en la consola. O que un niño conozca las consolas o videojuegos que jugaban sus padres , etc. Para mi las ROMS siempre van a existir y siempre las encontrare aunque un tipo me diga que es ilegal. (Esto que escribi es ilegal tambien...). Asi que bueno mis amigos y amigas , este documento comienza aqui luego de esta introduccion...Abrazos - Switchstance


Porque decidi escribir un documento sobre NES.

Comece a escribir sobre Emuladores hace mucho tiempo atras , cuando los primeros Emuladores llegaron a mi PC. Primero que nada siempre me gusto jugar con el PC , pero mi sed por el Abandonware hicieron que me fijara en los Emus , el primer Emu que probe fue el Nesticle , bastante novedoso en esa epoca. Yo tuve varias consolas no-nintendo (ya que por aqui venian sus parientes llamadas Family game) de origen Brasilero , asi que tuve varias consolas con las cuales pasaba horas y horas jugando a juegos clasicos como "Battle Tank , Contra , Bomberman , Galaga " y otros cientos y cientos de juegos...Un tiempo despues revivia mis epocas de niño siendo adulto jugando los mismos juegos en mi PC. Si bien todavia tengo mi Consola Original ahora me dedico al Developing de juegos para NES y al developing de Emuladores y a escribir Documentos como este. Es rendirle homenaje a una de mis mas preciadas amigas.
Debo comentar que ya habia escrito anteriormente sobre Emulacion , como por ejemplo he desarrollado mas de 150 Guias de Juegos (sobre todo de NES , como Zelda , FF , Adventure Island , 13th , Maniac Mansion) que escribia mientras jugaba , esas guias fueron incluidas en un software que yo mismo desarrolle que se llama "Anti-cheater" , porque no me gustan los Cheats.
Si quieres la version de Anti-cheater , pues solo pidemela. Es un Software que desarrolle para mi y nada mas que para mi. No se van a hacer actualizaciones o publicar en internet.
El hecho de comenzar un documento de cero en castellano sobre NES invadia mi mente hacia semanas , hasta que me decidi a escribirlo. Mi primer Emu , llamada Badnes (que jamas funciono) fue inspirado por Nes.doc y el Nestech.doc , yo solo queria que corriera
100 in 1 y 72 in 1 que tenia originales , los cuales fueron dumpeados por un colega en España. Badnes fue mi primer acercamiento a la programacion de Emus. Y me di cuenta que si habia hecho cosas mal se debia a que yo no entendia mucho Ingles y como todos los documentos sobre Developing estan en ingles , pues supongo que debe tener cerca de 100000 errores. Luego comence de cero un segundo proyecto llamado SwitchNES basado en el codigo fuente de otro programador. Esta vez pude hacerlo mucho mejor y hasta funcionaba...pero tuve muchos problemas con los Mappers , ya que mi Emu solo leia unos pocos. Pero a mi me servia para divertirme viendo los graficos correr en camara lenta (era muy lento!!!!). En Fin hoy en dia tengo casi terminado un Emu de NES llamado NES8 que no va a cambiar nada en el mundo de la Emulacion ya que es un Emu comun y corriente , con algunas funciones , pero por lo menos puedo decirte que si yo pude hacerlo tu tambien puedes , no es facil y requiere mucho tiempo y paciencia pero al final se agradece. Y por eso escribi este Documento , para todos aquellos que quieren comenzar , como yo queria y no encontraba ayuda. Esta es mi colaboracion a todos aquellos que quieren comenzar.

Porque escribo sobre Emulacion?
1-Porque es aburrido escribir sobre programacion convencional. Ya nadie lee manuales de C (clasico) , ni tampoco me importan los nuevos lenguajes basados en la WEB , ni .NET ni FRAMEWORK. .
2-Es aburrido escribir historias de ciencia ficcion. (Mis cuentos apestan mas que Donkey Kong en una jaula)
3-Se me hace aburrido hacer paginas WEBS que solo duran en internet de 1 a 2 meses.(No tengo dinero para mantenerlas y ademas , vivo en Argentina...)
4-Porque hay gente a la que le gusta aprender , yo he aprendido leyendo (en ingles) y creo que es un pequeño aporte hacer un resumen de todos mis conocimientos y escribirlos en castellano.


De que te sirve leer este Archivo o cual es mi cometido con esto?
-Que en vez de bajar juegos de NES de paginas de Internet te plantees que con paciencia y un poco de conocimiento puedes crear tus propios juegos e impresionar a las chicas :)
-Que tambien eres capaz de crear tu Propio Emulador y seguir trabajando en el para tu propia educacion.
-Que te guste y hagas una pagina sobre NES o sobre cualquier plataforma...o de todas juntas a la vez :)
-Que encuentres lo que todos estabamos buscando , documentos en castellano!!!!!
-Leer tanto y escribir me hizo entender un monton de cabos sueltos que tenia. y me ayudo muchisimo en mi codigo y mi comprension!!!.

Esta Distribucion , o este archivo , lo pueden encontrar en 2 formatos : Html y txt. Prefiero el ultimo porque me he encariñado tanto con el , pero es mas facil insertar imagenes y explicar un poco mejor en html , saltar entre partes , etc. Asi que por el momento estoy distribuyendo este archivo de mano en mano y muy pronto lo publicare en internet a modo de pagina WEB. (Espero que no esperen algo muy llamativo...).
Realmente no creo que haya muchos errores , de todas formas , debo decirles que no recibi ayuda de nadie , porque hay muy poca gente (que hable español) a la que le guste tanto la Emulacion como yo y se ha lanzado a programar (o por lo menos yo no tengo mucho conocimiento). Durante la realizacion de este archivo me han acompañado : hc/punx music , coca cola y cigarrillos camel. Si encuentras muchos errores de ortografia en este Documento , hazme el favor de escribirme , de todas formas , advierto que no soy un buen escritor , ni pienso serlo , tampoco hablo ingles , pero creo que mis traducciones son muy buenas. Aunque siempre existen errores.
Alguna duda o algo que agregar , sientete libre de escribirme a
benix_sonico@hotmail.com (realmente me atraso con el correo...=( ) A veces no es que no quiera contestar , simplemente me atraso con otras cosas que tengo que hacer.
No pretendo pertenecer a ninguna escena o movimiento , simplemente este archivo fue escrito para algunos amigos que no entienden mucho y quieren entender un poco mas.Y asi se va extendiendo.
Esta basado principalmente en NES (ya que es mi consola favorita de siempre!) y en las consolas de 8 bits. Espero que este archivo sirva a muchos niveles y a muchas personas. Aclaro que escribo esto antes de revisar el archivo por primera vez , supongo que agregare algunas cosas mas , sobre todo sobre Emulacion en General. Pero este documento mas que nada esta basado en NES y en toda su estructura.
Ese es mi verdadero cometido.
Switchstance-


Sobre el documento :

Este documento fue creado tratando de abarcar la mayor cantidad de cosas que se han escrito o se pueden hacer con la NES , su estructura del hardware , como funcionaba , de que se componia , y despues he tratado de meter muchas cosas como Hacking de Roms , links de todo tipo , Bilbioteca de terminos y muchas cosas mas. Me ha llevado mucho tiempo escribir (no me considero escritor) pero fue necesario para que muchas personas puedan acercarse a todo esto. Existe una notable diferencia entre lo que era esta guia el año pasado y como es hoy. He añadido muchas cosas y espero que sea 100% funcional. Se que tiene muchisimos errores y son errores mios y algunos documentos que use como base tambien tienen errores. Podria haberme dedicado a cargar roms y jugar todo el dia , pero crei que esto deberia ser necesario , que cada uno de los que mas saben sobre NES no se dediquen a escribir documentos o sobre cualquier cosa es un crimen.

Este Documento esta escrito en HTML , por lo tanto no es perfecto , tiene muchos errores de diseño (No soy un Webmaster). En un principio la guia era un cosa y ahora es otra. Y otra cosa que estoy tratando de trabajar es en la compresion del mismo...500KB es muy pesado para los dias de hoy...

Tambien debo mencionar que soy un NESFAN , pero no tengo mi cabezota cerrada y mi proximo Documento (que en estos momentos escrito) es sobre Sega Master System y Game Gear , asi que todos aquellos Nes-fanaticos este es un buen documento que pueden leer un dia de lluvia , pero no esperen que siga escribiendo todo el tiempo de NES , yo creo que la comunidad de la Emulacion necesita esto y sobre todos los sistemas que se puedan. Muchas gracias.

Faltan algunas implementaciones que se que seran bienvenidas!!! Disfruta de este documento tanto como yo disfrute escribiendolo.

 


Contacto:

Para contactarte con el Autor de este archivo por favor hazlo a
benix_sonico@yahoo.com.ar .
Por el momento este archivo no tiene soporte WEB ni esta posteado o puesto para download en ningun lugar. Pero planeo hacerlo en el futuro. Si tienes una pagina de Internet o soporte para la misma y quieres publicar este Archivo , por favor enviame un E-mail. Puedo darte otros trabajos en las que he trabajado.
En caso de que quieras probar buscarme "online" mi MSN es
benix_sonico@hotmail.com . Estas son algunas cuestiones que quiero aclarar antes de que me envies un E-mail:

Puedes ayudarme a :


-Escribir Software libre ,(no libre de BUGS) , para NES8. NES8 es un projecto creado por desarrolladores independientes en el cual nos basaremos en la creacion de nuevos videojuegos , tanto de NES como por cualquier plataforma. El nombre es inspiracion de la NES. No es mi prioridad , pero es bueno que haya gente entusiasmada como yo que quiera ayudarnos a todos los que programamos y aportamos cosas. NES8 es tambien el nombre de un "portal" WEB que saldra en el año 2005 dedicado a la Emulacion y al developing de videojuegos. Si estas interesado en formar parte o colaborar simplemente mandame un E-mail. Si crees que NES8 es basura , por favor teclea SUPR sobre NES8.zip.

-Traducir documentos que ayuden al developing de Emuladores , sea la maquina que sea , siempre me sirve a mi y a toda la comunidad gente que quiera aportar documentos en castellano. De todas formas , si tienes informacion sobre Emuladores (que yo no pueda conseguir en Internet) , como por ejemplo Manuales de Procesadores y mucho mas , que se puede encontrar en bibliotecas , etc en formato .Doc o que puedas donar , simplemente escribeme para obtener mi direccion. Tengo buen material de lectura para intercambiar.

-En realidad si te decides a escribirme yo valoro mucho eso y cualquier pregunta sera contestada. Incluso preguntas sobre ROMS y Emuladores.=)

-Si te interesa esta GUIA en particular y crees que tienes mas material para agregarle o quieres hacerlo por tu cuenta...no lo hagas! , escribeme un E-mail y la informacion sera incluida. Aunque jamas he pretendido decir "esto es mio" , realmente me tomo bastante trabajo traducir los documentos y seria una lastima que pierda el entusiasmo por unas pocas personas. No me gustaria encontrar Nes8.html con el nombre de otro autor que no sea el mio.

-Consiguiendome documentos sobre Master system o Game Gear , ya que mi proximo trabajo estara basado en esta preciosa consola. Muy pronto SMS Guide by Switchstance. De todas formas cualquier documento tecnico (se incluye electronica) que puedas enviarme sera totalmente bienvenido. (De cualquier sistema , consola , procesador , etc) Todo sera traducido y publicado.

Puedo ayudarte a :
-Escribir Software libre , aunque no me gusta tener mi mente alejada de mis proyectos , siempre me gusta colaborar con un poco codigo informacion o en lo que pueda ayudarte. Etc , no soy un Guru de la programacion , pero me encanta ayudar. :) Asi que si necesitas ayuda , cuenta conmigo!.

-Crackear juegos de NES (solo en ciertos aspectos) y al developing de Carts (aunque no tengo mucha experiencia) , solo he crackeado juegos pequeños como el Tennis , Galaga , Mario Bros , etc , si los quieres enviame un E-mail (solo son de mi dominio!) , y he escrito "Junk Demos" (Demos Basura) basados en otros Carts escritos por otras personas. No es mi especialidad , pero es divertido. Ultimamente dedico mucho tiempo al developing de CARTS , si algun dia puedo crear un juego tipo MEGAMAN sera la cumbre de mi vida. Si tienes mas info , codigo , o mas , enviamelo. Podemos canjear codigo , textos y mucho mas.

-Traducir informacion de Ingles a Español. (No pretendan mandarme un Manual de OSx o Unix o seran masacrados virtualmente.) - Debo aclarar : Sobre Emulacion unicamente. Y con temas que interesen a mas de una persona. (No me gustaria traducir un manual de un Emulador , tipo FRODO , o SPEC , pero de todas formas si hay tiempo y puedo hacerlo lo haria con gusto). Hoy en dia el software de traduccion es muy bueno , y tal vez este trabajo hubiera sido creado mucho mas rapido si hubiera utilizado uno , pero yo creo que ni el mejor traductor puede traducir 100% el MAPA del CPU de la NES. Porque yo que ni he estudiado ingles en mi vida puedo traducir documentos? He leido durante muchos años documentos tecnicos en ingles , estoy familiarizado con los terminos y he escrito un Emu por dios Santo!!!! =)



-Conseguir informacion sobre Emulacion. (aunque tengas el mejor buscador , la info mas preciada esta lejos del alcance de muchas personas).

No puedo ayudarte a :
-Traducir juegos de NES. (No tengo experiencia en eso , y creo que nunca me ha interesado , salvo jugar al Maniac Mansion en castellano). De todas formas si puedes documentarme o enviarme informacion sobre eso te sera agradecido. -Si alguien quiere complementar esta Guia escribiendo sobre Traducciones de Roms , por favor escriba un mail. O si tiene una buena guia para traducir. NOTA VIRTUAL : Ultima Revision : Esto no es totalmente cierto , he actualizado una parte y por fin he descubierto una forma de traducidr CARTS!! HAHAHAHA!!!

-Conseguir juegos de NES. (tengo muchos carts , pero lamentablemente no tengo tiempo para andar pasando Carts a otras personas ,prueba en
http://www.romnation.net )
-Crackear software , conseguir contraseñas , ni serials. Prueba usando un programa como Serial2k u Oscar. NO es mi prioridad hoy en dia conseguir el serial para el Virtual PC (aunque seria bueno :)
-Conseguir chicas...hay cosas que uno debe hacer por su cuenta.
-No puedo ayudarte a escribir 100% un Emu o un ROM , ya que yo mismo me encuentro en el mismo dilema , y en los mismos proyectos , podemos ayudarnos mutuamente , pero no pienso (por el momento) donar ningun proyecto completo de Emulacion en un 100%. Con esto me refiero a que mi codigo fuente por el momento no puedo donarlo , pero si puedo ayudarte a escribir el tuyo sin basarte en el mio.
-Trabajar en Quickbasic , Darkbasic o Basic , es un lenguaje que me ha dado muchas horas de satisfaccion y alegria , pero ahora me estoy concentrando en C++ y Visual Basic , si tus proyectos estan basados en estos 2 ultimos (o Pascal) mi ayuda podria venir un poco mas rapida...en cambio con los otros...podria tardarse un poco mas. Si realmente trabajas en DARKBASIC y crees que tus creaciones son muy buenas , enviame un DEMO! , podria recomendarte con algunas personas muy importantes , o podriamos desarrollar juntos un juego nuevo. (Tengo unas muy buenas ideas que todavia no puedo llevar a cabo).
-***************Si de ultima eres muy porfiadx escribeme para lo que sea , si no tengo idea enviare tu Mail a alguien que si pueda ayudarte , de todas formas escribe!***********************

 


Gracias a :

A todos los que de alguna forma directa o indirecta me ayudaron a escribir este pequeño libro-guia.
A : Chris , Marat , Y0shi , /Firebug/ , Leo , Kevin , Tazuko , Takata , Zophar , The Deffiller , Defton , Snowbro , EOF , Kiwi , Ranalli.
A mis compañeros de Developing de la vieja escuela : Merk in ball (Gracias por Chronno Trigger), Skateaholik (hacking!!), Hawk (vieja hack krew) , Fantasy Zero (java tools) , Bloodshed (C++) , Pollie and Adry "the root grl!" por todos los codigos prestados , Rottenpisces (viejas epocas) , Webmaestro.com  , SourceCode.com , SourceForge.com. Tambien me gustaria agradecer a mis amigos de #TMK , #soulchamber , #Pokemon_comunity , #Isforce y todos los Webmasters Amigos , Deezer , Darky , FantasyLand , RetroEmu.com , Retrones , ClassicGaming , La Cueva de los Clasicos , Neslocura , MushRoom Kingdom , Freezerland , Antartic Games , Darkbasic , 3dgamemakers , La pagina del C , Webexperto.com , Tectimes.com y mis amigos japoneses : UltraFC , Yoshiro Tamazaki , Osky , Bero , Veyita09. A los viejos compañeros del Hack : Hackerclub.com (RIP) , Hackerland , Hawk , Frido , Kalamar , Boot y todos los que alguna vez me ayudaron en algun proyecto. No me puedo olvidar del viejo #Hackers –La pagina NEGRA : Dubois , Mitnuck , Cooler , April_67 , y todos mis camaradas mexicanos que tanto aportan.
A todos los que han ayudado tanto en 8bits project como en las viejas WEB y este documento : Tamakuzy , Os-pokemon , Charmander  , Alien 993 , Channel 23 , Octopux , Phiber , Dark Kluster , 128nomb , Bloodbro y todos los que han aportado datos o graficos.
Al final del archivo se encuentran los nombres completos , direcciones y toda la info de los autores de diversas partes de este documento.
Si has leido este archivo y te ha interesado , por favor enviame un Mail , es bueno saber que existe un poco de apoyo.

Switchstance/Boo pinguin (on IRC) benix_sonico@yahoo.com.ar


Bibliografia obligatoria para los futuros developers-entusiastas de NES

Documentos que jamas deberian faltar en tu disco duro antes de leer el mio...:
(Esto no es absolutamente necesario , pero te haran falta para seguir investigando)

NestechFAQ - por Chris Covell - 2001
Assembly: Opcodes & Quasicodes - Craig Taylor - ?
Programming the 6502 - Rodney Sacks - 1983
Assembly in One Step - RTK - 1997
6502 Software Design - Leo Scanlon - 1980
How NES Graphics work - Public Domain - 1996
NesAsm : Instruction SETS - David Michel - ?
NesAsm : Use and Reuse - David Michel - ?
Nes Mapper Document - Firebug - 1998
Nintendo Entertainment System Architecture - Marat Fayzullin - 1998
Technical information on the NES controller - Tennessee Carmel-Veilleux - ?
Nes Stuff - Kevin Horton - 1995
NES Music Ripping Guide - Chris Covell , Kevin Horton y Michel Iwanec - 2000
Assembler rookie Guide - Damian Stern - 1986
NES Development part 1 , 2 , 3 and many others - Zerosoul - ?
NES MAP - Zerosoul - Html Webpage
Programming that 8-bit beast of power, the NES - BOB - 1997
8-bit NES software Development Information - Tyoung - 1997
Nestech - Yoshi - 1998
What do Assembler-coders like best?
OPCODES... - Adam Vardy - 1996
Assembler for Monkeys - FryGuy - 1994
NES basics - David Michel - 1998
y muchos otros que tal vez olvide...


Programas que deberias conseguir para empezar a trabajar en NES :(en el developing mayormente)

Sobre todos estos programas , me tome la molestia de escribir un poco sobre ellos en otros capitulos.Por favor ten la decencia de leerlos...=)

NES ASSEMBLER - NESASM - Yo principalmente recomiendo el NESASM V2. Es viejisimo , pero es muy util porque por defecto al compilar mete el Header y algunas instrucciones. Hoy en dia debe ser un poco dificil de encontrar , pero debe existir todavia en alguna pagina de Emulacion.

NSA - Nes Screen Arrenger - Para editar pantallas de Titulo.

TLAYER - TILE LAYER - Para editar graficos.

Nesticle - NESTICLE - Emulador de NES.

Y algunas Librerias si vamos a trabajar en C (dichos links para download esta en la sekzion de links). Algunos nombres de librerias como : Allegro  y otras.


Otros documentos muy interesantes que deberias leer :
(estos si que no son absolutamente necesarios...sirven mas como un hobby...=p)

C64 Structure - ? - 1986

MAME notes and TXT - Nikola Salmoria - 1997
Programacion Estructurada - Vision Group - 1996
C - Manual de Referencia - 1993
DarkBasic Manual - 2000
QuickBasic Guide - Microsoft - 1987
Emulation Papers - Red Group - 1996
The Hackers Crackdown - XXX - 1998
The PSX and the Hackers - 2000
Phrack History - Phrack Comunity - 1985
Retrogames Arcade Colection - 1995
Atari history - Public Domain Web site - 1994
y cualquier documento sobre : Programacion , Informatica , Emulacion , Hacking , etc.


Websites que deberias visitar(No he tenido tiempo de revisar todos mis links...algunas paginas han desaparecido...)


http://www.nesdev.net El mejor sitio de Emulacion!!!
http://www.zophar.net Este es el mejor proveedor de Documentos y tecnicas de Developing.
http://www.Emulatronia.com Portal en Castellano sobre Emulacion , por lo menos el mas conocido lo que no dice que sea bueno.
http//www.romnation.net Miles y Miles de Roms!
http://home.att.net/~r.jarrett/bNES.html Webpage de BasicNES
http://home.att.net/~r.jarrett/crixIRC.html CrixIRC Webpage , cliente de IRC destinado a canales de Emulacion.
Se puede conseguir el Codigo fuente del CrixIRC (para quien quiera trabajar con el)
http://home.att.net/~r.jarrett/prod.html M6502 Webpage
http://home.att.net/~r.jarrett/milliEmu.html milliEmu Website. Cientos de documentos para bajar.
http://emu.myrice.com/dreamnes/ Dreamnes homepage , de los mejores Emus que hay por ahi.
http://voo.to/famtasia FAMTASIA , poder Famicom!
http://fceultra.sourceforge.net/ Fceultra es otro Emu de NES y Famicom para Win9x.
http://www2s.biglobe.ne.jp/~maechiko/ Famicom Fans (Creo que esta en japones...la version en ingles no la recuerdo)
http://members.xoom.com/nes_stuff/fwnes FwNES Site - De los mejores Emus
http://edomain.tierranet.com/vert/bboard.mv El foro de FNES
http://w3mb.kcom.ne.jp/~oohashi/bbs/minibbs.cgi El foro de FNES (En japones)
http://gigo.retrogames.com/ Gnes Homepage - Chekea http://www.retrogames.com
http://jabo.vintagegaming.com/ Jnes , otro Emu para Win9x.
http://members.tripod.com/~r_rosario/madnes.htm Madness Homepage
http://www.emuclassics.com/nes4pc/nesem/ NESEM Homepage
www.nes9x.cjb.net Nes9x Page
http://www4.ncsu.edu/eos/users/n/nscorlet/mge/ Neil Cornett Page - Mucha informacion , documentos , etc.
http://nesticle.parodius.com/ Otra pagina clasica.
http://tnse.zophar.net/ El espacio que le dio Zophar a Nester.
http://www.netcom.com/~itsbroke Nofrendo Homepage
http://members.aol.com/emunews Emunews - Noticias sobre Emulacion.
http://nester.homepage.com/ Nester Homepage (no zophar!)
http://www.nofrendo.org/snss/ SNSS material.
http://www.dcn.ne.jp/~otim2/nesterj-e.html NesterJ (de lo mejor de lo mejor)
http://www.emulation9.com/cgi-bin/nesterbbs.cgi Nester no oficial)
http://www.delorie.com/djgpp/ DJGPP package (Utilizado en la programacion de Emus- Software)
http://www.talula.demon.co.uk/allegro/ Libreria Allegro de Shawn Hargreaves (Imprescindible para programar Emus . Audio y Video)
http://upx.tsx.org UPX
http://www.netway.com/~nyef DarcNES
http://www.tsukuba.venture-web.or.jp/~ppm/famicom/ Famicom Fans #2
http://kinox.org/rocknes RockNES
http://www.totalemulation.net/retroemu Vortendo - Visual Basic NES


Advertencia!!!!!!!!! - Antes de Comenzar a LEER!!!!

Realmente crees que luego de leer este documento completamente , tomaras el Visual C++ y programaras tu propio Emulador?...o que tomaras el bloc de notas , escribiras un par de lineas de Assembler y tendras tu primer ROM de NES?...Esto no es asi. La programacion de Emuladores/Roms es extraordinariamente dificil. No es un paseo en el campo.
Para comenzar a trabajar en el NES Developing debes aprender 6502 Assembler. Sin esto es practicamente imposible que puedas llegar a trabajar o diseñar uno. (A menos que robes unos cuantos codigos fuentes...). Este Documento realmente no te enseñara Assembler en todas sus direcciones , aprender Assembler puede llevar mucho tiempo. Es uno de los lenguajes mas dificiles que existen ya que estan trabajando directamente con el HARDWARE. Entonces para trabajar sobre NES es necesario conocer el HardWARE de NES. Este documento te enseñara mucho mucho sobre el HARD del NES y tambien bastante sobre ASSEMBLER. Pero no es un manual de Assembler. Por ahi afuera en internet debe haber miles de trabajos , documentos , etc , sobre Assembler. Hazte con ellos y completa tu educacion con este documento. O consigue alguno de los miles de tutoriales (en ingles) para aprender developing en Assembler. Traducir al castellano un documento de este tipo me llevaria (ademas de mucho tiempo) mucho trabajo , y ademas seria ilegible , ya que si traduzco las sentencias  y todo lo que pueda para que lo entiendas mejor realmente "entenderias"? , pero la triste verdad es que debes conocer las sentencias en ingles...asi que deberias familiarizarte con ellas.
Si bien he puesto muchisima informacion sobre Assembler , ejemplos , codigo fuente , etc , este documento no pretende ser un manual de Assembler , si no mas bien una ayuda.
Para aprender a trabajar correctamente debes comprender a la perfeccion como funciona un CPU. (En este caso el del NES) , si realmente te comprometes con esto , deberas estudiar todos los CPU y procesadores que puedas. Aprender a leer y comprender HEX (hexadecimal) es algo crucial y muy importante , ya que toparas con ellos el 99% del tiempo.
Tambien es imprescindible conocer otro lenguaje (Tipo C , Basic , Pascal-si quieres trabajar en Emuladores) ya que hay que trasladar Assembler a otro lenguaje ( y eso no es nada facil...).
Como ultimas cosas , debo aclarar que si bien este Documento puede ser de mucha ayuda , trata de buscar mas documentos sobre NES o sobre la plataforma en la que quieras trabajar. Recopilar informacion , leerla y comprenderla es tambien mucho trabajo y algo importante. Por ultimo consigue codigo fuente , leelo , experimenta , etc. Eso te dara una idea de la estructura de la programacion en Assembler. Es bueno recordarte esto , ya que Escribir un Emulador es muy dificil y no cualquiera consigue construir un buen emulador y hacer juegos de NES es realmente dificil , se requiere mucha paciencia y trabajo...No te guies por aquellos que sacan Emuladores. No todos ellos han escrito un Emu 100% desde CERO. Yo tambien puedo robar el codigo fuente de un Emulador y modificar la GUI y los creditos dentro del programa. Pero me haria feliz? No lo creo.
Alternativas? : Hacer videojuegos con DarkBasic o C++ =)


PRINCIPIOS BASICOS DE LA EMULACION DE LA NES

Aqui comienza el aprendizaje , pequeño saltamontes...algunas cosas que debo aclararte , si nunca has programado en Assembler debes saber que todos los valores hexadecimales utilizados en la programacion del 6502 utilizan el simbolo "$" , por lo tanto todos los numeros o letras que aparezcan luego de este signo son valores hexadecimales incluidos en el 6502.
El 99% de los juegos para NES estan escritos en 6502 Assembler , debido a que el pequeño procesador de la NES es muy lento y por eso asi debe ser. Algunos juegos (dicen por ahi...) que fueron escritos en C , pero lo dudo. (Algunos juegos "piratas" o sin licencia deben haber sido escritos en C , debido a su horrible calidad y a su velocidad). Lo mismo para Basic (que era muy popular en esos años).
Nintendo estaba trabajando (en esos años) , en un interprete basado en Basic para escribir juegos para Famicom , pero resulto que fue un fracaso , ya que la velocidad era mediocre , y aprender a manejarlo tomaba años de vida , hacerte un profesional de ese lenguaje era muy dificil. (Deberia encontrarse en internet alguna copia olvidada).


N.E.S (la mejor consola de todos los tiempos!!--y se terminan las discusiones!)

Entre la mitad y el fin de los ochenta , existio una popular consola de videojuegos conocida como Nintendo Entertainment System (La NES). En Japon este revolucionario sistema fue conocido como Famicom (abreviatura de Family Computer). Es una maquina de 8 BITS , que utilizaba un CPU 6502 , muy parecido a la vieja Apple II. El resto del hardware incluida una UNIDAD DE PROCESAMIENTO DE IMAGEN (Picture Processing Unit-PPU) y un chip de sonido que producia 5 canales diferentes de sonido. 2 canales para las ondas cuadradas (Square Waves) , 1 canal para las ondas de triangulo (Triangle Waves) 1 canal de ruido (noise channel) y un canal de sonido PCM.
Este contenia 1K de RAM y 4K de VRAM.
El NES comun , solo podia poner en pantalla 13 colores diferentes de Background (fondo de pantalla) y 12 colores para los sprites. Lo cual nos lleva a decir que el NES "normalmente" podia mostrar 25 colores en pantalla. De todas formas , usando el PPU maliciosamente (he-he) podemos llegar a mostrar la paleta de 64 colores de una sola vez entera en pantalla. (Si usas la enfasis del color junto a trucos dentro del PPU , podemos lograr mostrar 512 colores en pantalla como maximo. Duplicando las entradas para la paleta. Pero digamos que los colores normales eran 25.
La resolucion "normal" o comun del NES es de 256x240. Por mucho tiempo , la gente penso que el NES NTSC tenia una resolucion mas baja que el PAL NES , por eso muchos Emuladores fueron programados para mostrar 256x224.
En Japon , se complemento la maquina con un sistema de discos Famicom (FDS-Famicom Disk System) que utilizaba unos discos "cartucho" de 3" que se mantuvo como el standar del Hardware ya que adheria 2 canales mas de sonido. Tambien lanzo perifericos para la maquina (Ademas de los josticks) como el Zapper (la pistola con laser) y el Power Pad. Tambien debo mencionar que esta consola en Europa era conocida como Dandy , En america del sur como Family Game .
La arquitectura general de la NES podriamos comenzar diciendo que : Estaba basada en el CPU (procesador) 6502. Sobre este CPU hay cientos de archivos que documentan su funcionamiento , pues no solo fue usado en la NES sino en otras maquinas tambien. Este contenia un controlador de video llamado PPU (mencionado antes) que estaba separado de la memoria del CPU y se podian comunicar (escribir o leer) a traves de puertos especiales.
Los cartuchos solian contener informacion ROM en los espacios entre las direcciones del CPU $8000-$FFFF , y la VROM o VRAM aparece en los espacios entre direcciones del PPU $0000-$1FFF. Esta informacion es muy importante a la hora de comenzar a programar. Aunque despues podemos introducirnos de lleno en el Assembler.
En los cartuchos mas chicos , que solo contenian 16KB de ROM (como el Tennis o el Galaga) esta informacion se encontraba en el espacio $C000-$FFFF , lo cual nos dice que entre $8000-$FFFF no existia nada , o sea se encuentra sin utilizar.
En los cartuchos con 32KB la informacion se encontraba en circuitos especiales adheridos llamados Mappers. Algunos cartuchos tambien contenian RAM en los espacios entre $6000-$7FFF. Lo cual nos o no nos indicaba si el cartucho poseia alguna especie de bateria (para salvar partidas o configuraciones).

 


2-Terminologia general utilizada en este Documento:

Estas son multiples areas dentro de la memoria del NES , y no deben ser confundidas. Los marcados con asterisco (*) son terminos que seran utilizados de aqui en adelante.

Termino

Descripcion

*PRG-ROM

En Japon , la gente de Nintendo usaba este termino para el area de codigo del programa.
Se lee Rom del Programa - ProgRAM Rom.

*CHR-RAM

En Japon ,la gente deNintendo usaba este termino para la Tabla de Patrones (Pattern Table) dentro de la ram interna del PPU. (Explicado anteriormente)
Se entiende como Ram de Caracter - Character RAM.

*VRAM

Llamada a la RAM interna dentro del PPU (Picture Process Unit-Unidad procesadora de Imagenes). Tenia 16K de VRAM.

*WRAM

Asi se llamaba a la memoria en los juegos en los cuales se podia salvar. Generalmente usada en aquellos del tipo RPG (Final Fantasy,Zelda , etc)
Se entiende como Memoria "Escribible" , donde se podia escribir - Writeable RAM.

*MMC

Microcontroladores usados en Carts para poder adherir mas VRAM al mismo. Tambien utilizados en aquellos CARTS que ya estaban fuera del estandar del 6502. Tambien usados para "efectos especiales" en los juegos.
Se entiende como Controlador Multimemoria-Multi-Memory controller.

*EXRAM

Esta es una memoria usada en los controladores MMC5 , para soportar los colores extendidos. (Mas colores)
Se entiende como Extra-RAM.

VROM

Los datos de la tabla de Patrones se mantenia externa al PPU mismo : Los datos standar de la CHR-RAM se mantenian saliendo y entrando al PPU mediante los MMC.
Se entiende como Video-ROM.

CHR

Sinonimo de CHR-RAM

PRG

Sinonimo de PRG-ROM

SRAM

Sinonimo de VRAM.


3-Procesador 6502

El procesador del NES esta basado en el 6502 NMOS linea de procesadores de 8 bits. Este era fabricado por RICOH cuyo nombre es RP2A03G. El Set de intrucciones original no contiene ninguna instruccion CMOS "STZ" y mas importante aun , el CPU del NES no trabaja en modo decimal. Mas adelante podemos ver como originalmente podemos tener esta dificultad , pero con un poco de trabajo y conocimiento podemos lograr mejorar aun este viejo amigo.
El procesador 6502 contiene 3 registros primarios que son muy importantes a la hora de trabajar con Assembler , los cuales son : A , X e Y. A es llamado al Acumulador , y sirve para las operaciones matematicas que queramos emplear , aunque solo podremos sumar , restar y dividir los bits. X e Y son registros de indice , con los cuales podremos llamar a alguna direccion en particular.
Las direcciones "Adresses" como $1000 , son lugares o locaciones dentro del procesador o del Cart , estan generalmente asociadas a la RAM. Estas sirven para acceder a lugares fuera del CPU o dentro de el . Sirven para reconocer diferentes lugares dentro de la RAM del CPU o el CART.
Cuando trabajamos con Assembler , cuando indicamos una direccion , le estamos pidiendo al CPU que nos dirija hacia ese lugar. (En la programacion de Assembler generalmente estamos escribiendo ordenes a un Hardware , en nuestro caso emulado por software.). Por ejemplo : El CPU envia hacia "afuera" un numero en la direccion del BUS (Adress BUS) para que lea o escriba valores a la RAM , a un chip , a un periferico , o lo que sea indique la direccion.
Basicamente el numero de cosas que podemos hacer con el CPU es limitado. Podemos leer un valor en una direccion determinada y poner ese valor en un registro A ,X o Y.
Podemos tomar un valor de un registro y escribirlo en una direccion. Pero para comprender basicamente el Assembler debemos decir que : Existen comandos y situaciones que deben cumplirse siempre y cuando la condicion sea verdadera (True) , como en la mayoria de los lenguajes de programacion , existen comandos , situaciones , condiciones , etc.

El NES NTSC corre a 1.7897725MHz y el Pal/N corre a  1.773447MHz

 
Interruptores / Interrupts
 
El 6502 tiene 3 interrupciones : IRQ/BRK , NMI y RESET.
Cada interruptor tiene un vector. Un vector es una direccion de 16-bit que especifica una locacion para “ir hacia” cuando un interruptor es presionado.
IRQ/BRK es pulsado bajo dos circunstancias , de ahí el nombre dividido: Cuando un Software IRQ es ejecutado (Instrucción BRK) o cuando un Hardware IRQ es ejecutado. (Por la linea IRQ).
RESET es pulsado para resetear. El rom esta cargado en la Memoria , y el 6502 salta hacia la direccion especificada en el vector RESET. Los registros no son modificados , y la memoria se limpia. Esto ocurre durante el reseteo.
NMI se entiende por Non-Maskable Interrupt (Interruptor no enmascarado) y es generado por cada refresco de pantalla y del CPU (llamado Vblank) , que sucede en intervalos dependiendo de que sistema estemos usando : Pal o Ntsc.
El NMI se actualiza 60 veces por segundo en las consolas NTSC , y 50 en PAL. La latencia del interruptor en el 6502 es de 7 ciclos eso quiere decir que tarda 7 ciclos en entrar o salir de un interruptor.
La mayoria de los interruptores deberian volver usando la instrucción RTI. Algunos juegos de NES no utilizan este metodo , como el Final Fantasy. 
Los interruptores mencionados tienen sus Vectores en las siguientes direcciones :

 

      $FFFA = NMI

      $FFFC = RESET

      $FFFE = IRQ/BRK

 

 Prioridades de los Interruptores

 

      ALTA = RESET

                  NMI

      BAJA = IRQ/BRK

MAPA DE MEMORIA DEL CPU/MEMORY MAP

Para la correcta interpretacion de lo escrito es necesario entender un poco de Ingles. Mi traduccion se encuentra a un lado , aunque a la hora de programar es mejor que nos acostumbremos a ciertos terminos. Los numeros en VERDE son las direcciones donde encontraremos lo detallado escrito en Blanco. Ingles/Español.

--------------------------------------- $10000
 Upper Bank of Cartridge ROM /*Banco superior de la memoria Rom del Cartucho
--------------------------------------- $C000
 Lower Bank of Cartridge ROM/*Banco inferior de la memoria Rom del cartucho.
--------------------------------------- $8000
 Cartridge RAM (may be battery-backed)/*Ram del Cartucho (posiblemente bateria)
--------------------------------------- $6000
 Expansion Modules /*Modulos de expansion
--------------------------------------- $5000
 Input/Output /*Entrada , salida
--------------------------------------- $2000
 2kB Internal RAM, mirrored 4 times /*2KB de Ram interna , duplicada 4 veces.
--------------------------------------- $0000

 

Nota que existen 2 PRG-ROM (Upper-Lower Bank...) , estos 2 son congruentes , pero igual juegan roles separados , dependiendo del tamaño del Cartucho. Algunos juegos solo tienen 1 , que consiste de 16K de Banco de PRG-ROM (Rom del Cartucho). Con lo que deben ser cargados dentro de la direccion $C000 (Upper-Superior), no en $8000 (Lower-Inferior). Algunos juegos clasicos que utilizan este sistema son : Battle City , Mario Brothers , Millipede , Nuts And Milk , Tennis , Baseball , Lunar Ball , entre otros. Generalmente los juegos que venian compilados en Cartuchos , tipo 72-1 , etc , pero por separado. O sea funcionando C/U en un solo cartucho.
La mayoria de los juegos cargan en la direccion $8000 (Lower-Inferior PRG-ROM) , usando los 32k de espacio de PRG-ROM. El primer juego (segun Yoshi-Nestech) en usar todo el espacio de el PRG-ROM (los 32K) fue el Super Mario Bros (Super Mario Brothers). De todas maneras , los juegos con mas de 1 banco de 16K de PRG-ROM cargan desde $8000 como defecto. Estos juegos utilizan MMC (ver tabla de arriba y leer mas adelante la seccion de MMC) para poder utilizar los 32K de PRG-ROM y al mismo tiempo acceder a 8K de CHR-RAM simultaneamente.

 

ALGUNAS NOTAS DEL CPU

 

El 6502 no soporta modo decimal , pero los opcodes CLD y SED funcionan bien (no aparece el molesto mensaje de BAD OPCODES).

Los 2 segmentos de 16k de PRG-ROM  , deberian trabajar alineados , pero pueden trabajar por separado tambien , dependiendo el tamaño del Cart. Algunos juegos contienen solo 1 (16k de PRG-ROM) por lo que deberia cargar en $C000 y $8000.

La mayoria de los juegos se cargan a si mismos a traves de $8000 , usando el espacio de 32k de PRG-ROM. El primer juego que utilizo este metodo fue Super Mario bros. De todas formas muchos juegos que tienen 16k se cargan en $8000 por defecto.

Esos juegos utilizan Mappers (Ver Mappers) para entrar y salir en los datos de PRG-ROM llamados CHR-ROM.

El CPU del NES contiene un BUG en un opcode llaamdo $6C (salto absolutamente indirecto). No calcula correctamente la direccion correcta si el byte mas bajo es $FF.

Ejemplo:

 

      C100: 4F

      C1FF: 00

      C200: 23

        ..

      D000: 6C FF C1 - JMP ($C1FF)

 

*NOTA: Mas informacion sobre esto en http://www.zophar.net

 


 

PPU (PICTURE PROCESSOR UNIT-UNIDAD DE PROCESAMIENTO DE IMAGENES)

El mirroring , tambien referido como Shadowing , es el proceso de mapeado de direcciones por direccion via hardware.

Incluidos aquí he puesto 2 memory Maps  , uno correspondiente a Marat Fayzullin y el otro por Yoshi , ambos tienen sus discrepancias y espero que un buen analisis de los 2 pueda concluir con un solo Map.

Pero bueno tambien incluyo estos 2 a continuacion como 1) RAM Memory Map  y 2) Programmer Memory Map.

El primero describe las regiones y puntos dentro de la RAM fisica de la NES:

 

       RAM Memory Map

      +---------------+--------------+-----------------------------------+

      | Direccion| Tamaño | Descripcion                |

      +---------------+--------------+-----------------------------------+

      | $0000     | $1000    | Tabla de Patrones #0 |

      | $1000     | $1000    | Tabla de Patrones #1 |

      | $2000     | $800      | Tablas de Nombres    |

      | $3F00     | $20        | Paletas                       |

      +--------------+-------------- +-----------------------------------+

 

El segundo explica la memoria entera de la NES y su uso y como es manipulada.

 

      Programmer Memory Map

      +--------------------+---------------+----------+--------------------------------------+

      | Direcciones | Tamaño  | Flags | Descripcion                   |

      +--------------------+---------------+----------+--------------------------------------+

      | $0000          | $1000     | C        | Tabla de patrones #0    |

      | $1000          | $1000     | C        | Tabla de Patrones  #1   |

      | $2000          | $3C0       |           |  Tabla de nombres #0   |

      | $23C0          | $40         | N        | Tabla de Atributos #0    |

      | $2400          | $3C0       | N        | Tabla de nombres #1    |

      | $27C0          | $40         |  N       | Tabla de Atributos #1    |

      | $2800          | $3C0       |  N       |  Tabla de nombres #2   |

      | $2BC0         | $40         |  N       | Tabla de Atributos #2    |

      | $2C00          | $3C0       |  N        | Tabla de Nombres #3  |

      | $2FC0          | $40        |  N        | Tabla de Atributos #3    |

      | $3000          | $F00      |   R       |                                        |

      | $3F00          | $10        |             | Paleta de Imagen #1     |

      | $3F10          | $10        |             | Paleta de Sprites #1      |

      | $3F20          | $E0        |    P      |                                        |

      | $4000          | $C000    |     F     |                                        |

      +--------------------+--------------+------------+--------------------------------------+

                           FLAGS:

                          C = Posible CHR-ROM

                          N = Mirrored (ver mirroring)

                          P = Mirrored (ver mirroring)

                          R = Mirror de $2000-2EFF (VRAM)

                          F = Mirror de $0000-3FFF (VRAM)

 

Y ahora por fin los correspondientes mapas de memoria:

Version de Marat Fayzullin:

-------------------------------------- $4000
Empty / Vacio
---------------------------------------
$3F20
Sprite Palette /Paleta de Sprites*Ver Sprites
---------------------------------------
$3F10
Image Palette /Paleta de Imagenes
---------------------------------------
$3F00
Empty /Vacio
---------------------------------------
$3000
Attribute Table 3 / Tabla de atributos #3
---------------------------------------
$2FC0
Name Table 3 (32x30 tiles) / Tabla de Nombres #3 (32x30) cada porcion del sprite.
---------------------------------------
$2C00
Attribute Table 2 / Tabla de Atributos #2
---------------------------------------
$2BC0
Name Table 2 (32x30 tiles) / Tabla de Nombres (32x20)
---------------------------------------
$2800
Attribute Table 1 / Tabla de Atributos #1
---------------------------------------
$27C0
Name Table 1 (32x30 tiles) / Tabla de Nombres #1 (32x20)
---------------------------------------
$2400
Attribute Table 0 / Tabla de Atributos #0
---------------------------------------
$23C0
Name Table 0 (32x30 tiles) / Tabla de Nombres #0 (32x20)
---------------------------------------
$2000
Pattern Table 1 (256x2x8, may be VROM) / Tabla de Patrones #1 - (256x2x8) ahi estan los graficos . VROM
---------------------------------------
$1000
Pattern Table 0 (256x2x8, may be VROM) Tabla de patrones #0 - Ahi tambien hay graficos.
---------------------------------------
$0000

 
 PPU MEMORY MAP - MAPA DE MEMORIA DEL PPU-Version de Yoshi
 

DIRECCION/ADRESS

TAMAÑO/SIZE

DESCRIPCION

$0000

$1000

Tabla de Patrones #0 (Posible CHR-RAM)

$1000

$1000

Tabla de Patrones #1 (Posible CHR-RAM)

$2000

$3C0

Tabla de Nombres #0

$23C0

$40

Tabla de Atributos #0

$2400

$3C0

Tabla de Nombres #1

$27C0

$40

Tabla de Atributos #1

$2800

$3C0

Tabla de Nombres #2 (basada en Mirroring)

$2BC0

$40

Tabla de Atributos #2 (basada en Mirroring)

$2C00

$3C0

Tabla de Nombres #3 (basada en Mirroring)

$2FC0

$40

Tabla de Atributos #3 (basada en Mirroring)

$3000

$F00

Vacio

$3F00

$10

Paleta de Imagenes

$3F10

$10

Paleta de Sprites

 

$3F20

$E0

Vacio

 
MAPA DE MEMORIA DE SPRITES - SPRITE RAM
 

Direccion

Tamaño

Descripcion

$0000

$100

Sprite RAM

 

Name Tables o Tablas de Nombres

 

La Nes mostraba graficos usando una MATRIX de piezas. Esta grilla es llama Tabla de Nombres o Name-Table. Las piezas tienen generalmente 8x8 pixels. La tabla entera tiene 32x30 piezas (en total 256x240 pixels). Recuerda que la resolucion difiere dependiendo del sistema que se este utilizando : NTSC o PAL.

 

Pattern Table o Tabla de Patrones:

 

La tabla de Patrones contiene las actuales  piezas de 8x8  a la que la Tabla de Nombres se referia.

 

 

 

El resultado de la Tabla de Patrones es la letra “A”  , como se muestra en el resultado de los Colores.

 

Tabla de Atributos / Atributtes Table

 

Cada byte en la Tabla de atributos representa un grupo de 4x4 piezas en la pantalla. Hay multiples formas de describir la funcion de 1 byte en la tabla :

 

*Sostiene los mas elevados 2 bits en una grilla de 32x32 pixels , por 16x16 pixels.

*Sostiene los mas elevados 2 bits en una grilla de 16. (8x8 pixels).

*Sostiene los mas elevados 2 bits en una grilla de 4 (grupo de 4x4).

 

Es un poco confuso , algunos diagramas podrian ayudarte a comprender un poco mejor esto:

 

           +---------------------+-----------------------+

           |  Cuadrado 0  |  Cuadrado 1   |  #0-F Representa una pieza de 8x8.

           |   #0  #1         |   #4  #5           |

           |   #2  #3         |   #6  #7           |  Cuadrado [x] representa 4 piezas de 8x8.

          +----------------------+-----------------------+  grilla de 16x16 pixel

          |  Cuadrado 2  |  Cuadrado 3     |

          |   #8  #9          |   #C  #D           |

          |   #A  #B         |   #E  #F            |

          +---------------------+------------------------+

El actual formato de los atributos del byte es el siguiente. (Y corresponde con el ejemplo anterior).

 

       Attributos del Byte

         (Cuadrado #)

           ----------------

          33221100

          ||||||+--- 2 elevados (2) bits de color por el cuadrado 0 (Piezas #0,1,2,3)

          ||||+----- 2 elevados (2)  bits de color por el cuadrado1 (Piezas #4,5,6,7)

          ||+------- 2 elevados (2) bits de color por el cuadrado 2 (Piezas #8,9,A,B)

 

Paletas

 

La NES tiene 2 paletas de 16 colores cada una. La paleta de Imágenes y la Paleta de Sprites. Estas paletas son mucho mas que simple paletas en la actual paleta , porque no tienen valores RGB fisicos.

D7-D6 de los bytes escritos en $3F00-$3FFF son ignorados.

 

per two (2) colour bits for Square 3 (Tiles #C,D,E,F)

Mirroring

El Mirroring es otro tema que se suelta en las tablas y cuya explicacion todavia no ha sido clarificada. Para hablar de Mirroring , tenemos que hablar sobre Tablas de Nombres (Name Tables). Cuando la consola trabaja , en el PPU solo hay suficiente memoria fisica para albergar 2 diferentes tablas al mismo tiempo , de todas formas , ahi hay espacio en las direcciones para otras tablas. Por eso 2 de las tablas de Nombres son copias de las otras 2. La palabra Mirror significa Espejo. Que tabla es una copia y cual no , es determinada por la seleccion en mirroring de lineas en un cartucho de NES. En juegos que no tienen Mappers (ver mas adelante la info sobre Mappers) el mirroring se encuentra arreglado , dependiendo de cual de los 2 puntos de contacto esta soldado. (En los cartuchos). Algunos juegos contienen extra-RAM "on board" , que provisiona un total de 4 tablas de Nombre individuales a las cuales podemos acceder. (Esta es claro , capacidad para una sola pantalla en mirroring , lo que significa que hay una sola Tabla de Nombres activa en el PPU , y 3 copias de ella).
Los 2 tipos de Tabla de Nombre de Mirroring mas comunes son la : Horizontal y vertical. Con el mirroring horizontal , las dos tablas que se encuentran una al lado de la otra son copiadas o "espejadas". Entonces, en el PPU encontraras una alta columna con 2 tablas disponibles para usar. Este tipo de mirroring es generalmente usado en los Shooters verticales con scrolling. Con el mirroring Vertical , 2 Tablas de Nombre , una sobre la otra es copiada . (Intercalada).Entonces en el PPU , tienes alternativamente 2 tablas disponibles para usar. Este tipo de mirroring es utilizado en todo juego de plataforma horizontal con scrolling , o juegos de disparos.

Palette Mirroring - Mirroring de la Paleta

La entrada 0 dentro de la Paleta es DIOS. Es la entrada mas importante , porque es la que determina el color del fondo , define la transparencia para el fondo y los sprites , la cual es "espejada" (mirrored) a traves de la tabla de Paleta. La Tabla de Paleta dentro del PPU va desde $3F00-#3F1F. La entrada 0 es $3F00. Pero debido al mirroring cualquier cambio que hagas en $3F00 directamente cambiara para $3F10 , y viceversa. Cada 4 Bytes en la paleta del NES se encuentra una copia de la entrada 0. Entonces , los registros #3F04 , $3F08 , $3F0C , $3F14 , $3F18 , ETC , son registros "usables" (que podemos usar). Puedes escribir en ellos , porque son copias directas de $3F00 y no afectan a la paleta. Esto es porque el mirroring de la paleta puede mostra solo 13 colores de fondo , y no 16.

 

 

 


 PUERTOS I/O /REGISTROS!-Info extraida de Nestech.doc mas info de puertos a benix_sonico@yahoo.com.ar

Los puertos internos I/O del NES son mappeados en el area de las siguientes direcciones :
Algunos puertos todavia no se conocen bien y es preciso conocer y leer mucha mas informacion sobre ellos.
Primero habia comenzado
con el escrito en Nes.DOC pero luego lo base en el de NESTECH by YOSHI.
Para comprender un poco mejor la tabla de abajo:
Direcciones / Address : Las direcciones de 16 bits de los registros (Dentro del ROM)
Estado / Stats : Cada Registro tiene diferentes estados y aspectos . Los definidos son:
W - Significa que se puede escribir - Escribible - Writeable.
R - Solo de Lectura - Readable
2 - Tiene doble escritura de registro.
U - Significa que todavia no se sabe con certeza o contiene un error (Unknow).
BITS : La mayoria de los registros tienen BITS que se pueden habilitar o deshabilitar , los cuales pueden modificar su comportamiento.
bits con - : No son usados
Bits con U - Desconocidos.
Etiquetas - Labels - Son etiquetas que se le agregan a los Registros (para programadores)

Direccion / Address

Estado / Stat

Bytes

Descripcion

Etiqueta / Label

$2000

W

vhzcpwNN

Registro de Control del PPU #1

[PPUCNT0]

 

 

 

0 = Desactivado
1 = Activado
h = Ejecutar NMI en la colision de Sprites
0 = Desactivado
1 = Activar
z = Tamaño del sprite
0 = 8x8
1 = 8x16
c = Direccion de la Tabla de patrones de Pantalla
0 = $0000 (VRAM)
1 = $1000 (VRAM)
p = Direccion de la Tabla de Patrones de Sprites
0 = $0000 (VRAM)
1= $1000 (VRAM)
w = Direccion de Incremento de Lectura/escritura del PPU
0 = Incrementa por 1
1 = Incrementa por 32
N = Selector de Tablas de Nombres (Name Table)
00 = $2000 (VRAM)
01 = $2400 (VRAM)
10 = $2800 (VRAM)
11 = $2C00 (VRAM)

 

$2001

W

fffpcSIt

Registro de Control del PPU #2

[PPUCNT1]

 

 

 

f = Color del Fondo de pantalla completo
000 = Ninguno
001 = Rojo
010 = Verde
100 = Azul
(Solo se puede elegir uno)
p = Mostrar Sprites en pantalla
0 = Esconder Sprite
1 = Mostrar Sprite
c = Mostrar pantalla
0 = Ocultar pantalla
1 = Mostrar pantalla
S = Clip del Sprite (limites...)
0 = No mostrar Sprites al costado izquierdo. 8 -columna de pixels.
1 = Mostrar sprites por todas partes.
I = Clip de Imagen (limites)
0 = No mostrar los 8 pixel en el costado.
1 = Mostrar los 8 pixels.
t = Mostrar Colores en pantalla
0 = Colores de un solo Tono (mono-tono)
1 = Mostrar los colores.

 

$2002

R

vhsW----

Registro del Estado del PPU

[PPUSTAT]

 

 

 

v= Bandera de Vblank
0 = No Vblank
1 = Vblank
h = Bandera de colision
0 = Sin colision
1 = Refrescar la colision del Sprite #0
s = Conteo Maximo de Sprites
0 = Solo 8 sprites por cada escala de lineas.
1 = Mas de 8 sprites por la escala de lineas.
(sobre la escala en la que se trabaje)
W = Bandera de Estado de escritura del PPU
0 = Escribir sobre la VRAM
1 = Ignorar la escritura sobre la VRAM
NOTA : El BIT #6 se resetea a 0 cuando se refresca.
NOTA : Si se tiene un Sprite de 8x8 , donde los primeros 4 pixeles son transparentes , el 5to sea o no sea transparente , el 6to bit sera automaticamente identico al 5to.

 

$2003

W

aaaaaaaa

Direccion de la memoria de los Sprites
Especifica la direccion en la memoria del Sprite para acceder via $2004.

[SPRADDR]

$2004

W

dddddddd

Registro I/O del Sprite
Usado para escribir o leer en la direccion especificada via $2003 en la memoria del Sprite.

[SPRIO]

$2005

W2

dddddddd

Registro de Scroll del Fondo de pantalla

[BGSCROL]

 

 

 

Usado para el scrolling de la pantalla. Se puede mover verticalmente y horizontalmente. Es un registro de doble escritura.
BYTE 1 = Scroll Horizontal

BYTE 2 = Scroll Vertical

Los datos sujetos al scroll , cruzan multiples Tablas de Nombre (Name Table) :
#2 ($2800) #3 ($2C00)
#0 ($2000) #1 ($2400)
Si el scroll vertical es >239 sera ignorado. algunos Emuladores escriben 0 para el Scroll vertical si el valor es >239.
Recuerda siempre que solo hay suficiente VRAM para 2 Tablas de Nombres (Name Table).
Luego de que el VBL ocurra , la proxima escritura sera para el scrolling horizontal.

 

$2006

W2

aaaaaaaa

Direccion de Memoria del PPU

[PPUADDR]

 

 

 

Especifica la direccion en la VRAM que indica desde donde se esta leyendo , o hacia donde se debe escribir. Es un registro de doble escritura , el primer Byte debera ser alto (de los 16-bytes) y el siguiente debera ser inferior.

 

$2007

RW

dddddddd

Registro I/O del PPU
usado para escribir/ leer en la direccion especificada via $2006 en la VRAM.

[PPUIO]

$4000

RW

CChessss

Registro de Control de la Onda cuadrada #1

-

 

 

 

C = ciclo cambiante (negativo Vs positivo)
00 = 87.5 %
01 = 75.0 %
10 = 58.0 %
11 = 25.0 %
h = Sostenido de nota
0 = No sostener nota
1 = Sostener Nota

e = Seleccion "sonido envolvente".
0 = Envoltura comun
1 = Envolutura arreglada

s = Rate de playback

 

 $4001

RW 

fsssHrrrr 

Registro de Control de Onda Cuadrada #2

f = Frecuencia , donde 0 : Normal y 1 es la Variable (Bits 0-6 activados)

s = Cambia la velocidad de la frecuencia

H = Selecciona frecuencia Alta o baja donde el bit 0 es de Baja a Alta y el Bit 1 es de Alta a baja.

r = Es el rango de la Frecuencia , donde el bit 0 es Minima y 1 es Maxima.

 

 $4002

RW 

dddddddd 

Registro de el Valor de la Frecuencia de la Onda Cuadrada #1

d = Valor de los datos de la Frecuencia (ultimos 8 bits)

 

 $4003

RW 

tttttddd 

 Registro de el Valor de la Frecuencia de la Onda Cuadrada #2

d = Valor de los datos de la Frecuencia (primeros 8 bits)

t = Longitud de Tiempo.

Nota : El valor de la Frecuencia tiene 11 bits de tamaño. Necesitas escribir los primeros 3 bits dentro de $4003.

 

 $4004

RW 

CChessss 

 Registro de Control de la Onda Cuadrada #1 (Ya visto!)

 

 $4004-$4007

 

 

 Se vuelven a Repetir algunos Registros de $4000 a $4004

 

 $4008

RW 

CChessss 

 Registro de Control de la Onda Triangular #1

C = Ciclo (Positivo Vs Negativo)

00 = 87.5%

01 = 75.0%

10 = 58.0%

11 = 25.0%

h = Sostener Nota , donde el Bit 0 es No sostener y el Bit 1 es Sostener Nota.

e = Tipo de Envoltura de Sonido , donde el Bit 0 es una Variable de Envoltura y el Bit 1 es la Envoltura "Normal".

s = Rango de Playback.

 

 $4009

RW 

fsssHrrr 

Registro de Control de la Onda Triangular #2

f = Frecuencia / Seleccion de Variable , donde el Bit 0 es el normal (o sea bits 0-6 deshabilitados) y Bit 1 es la Variable (0-6 habilitados).

s = Cambio de velocidad de la Frecuencia

H = Seleccion de Frecuencia Alta/baja

donde el Bit 0 es baja a Alta y Bit 1 Alta a baja.

r = Rango de Frecuencia , donde el Bit 0 es el minimo y 7 maximo.

 

 $400A

RW 

dddddddd 

 Registro de Valor de la Frecuencia de la Onda Triangular #1

d = Valor de datos de la Frecuencia (los ultimos 8 bits)

 

 $400B

RW 

tttttdddd 

 Registro del Valor de la Frecuencia de la Onda Triangular #2

d = Valor de los Datos de frecuencia (primeros 3 bits)

t = Longitud de Tiempo

Nota : Los mismos 11 bits de la onda Cuadrada.

 

 $400C

 RW

CChessss 

 Registro de Control de Ruido #1 (Canal de Ruido / Noise Channel)

c =Ciclo cambiante  Positivo Vs Negativo

00 = 87.5%

01 = 75.0%

10 = 58.0%

11 = 25.0%

h = Sostenido de Nota , donde el Bit 0 no sostiene la nota y el bit 1 si lo hace.

e = Seleccion de Envoltura , donde el Bit 0 es la Variable y el Bit 1 es la Envoltura por defecto.

s = Playback Rate

 

 $400D

RW 

fsssHrrr 

Registro de Control de Ruido #2

f = Variable de la Frecuencia , donde el bit 0 es Normal y el Bit 1 es la Variable.

s = Cambio de la Velocidad de la Frecuencia. Donde el Bit 0 es Baja a Alta y el Bit 1 de Alta a baja.

r = Rango de frecuencia (0 = Minimo y 7=Maximo) 

 

 $400E

RW 

dddddddd 

Registro del Valor de la Frecuencia

d = Valor de los datos de la frecuencia (los ultimos 8 bits). 

 

 $400F

RW 

tttttddd 

Exactamente igual que $400B 

 

 $4010

RW 

Chess 

Registro de Control PCM #1

Igual que los otros Registros de Onda y Canales. Exactamente igual que $400C 

 

$4011 RW vvvvvvvv Registro de Control de Volumen PCM

v = Volumen

 
$4012 RW aaaaaaaa Registro de Direccion PCM

a = Direccion / Adress

 
$4013 RW LLLLLLLL Registro de longitud de Datos PCM

L = Tamaño de los Datos

 
$4014 W   Sprite DMA

Transfiere 256 bytes de la memoria hasta la direccion $100*N , donde N es el valor escrito en este registro , a la RAM de los Sprites.

[SPRDMA]
$4015 RW ---abcde Registro de Control de Sonido

e = Canal 1 (0=Desactivar , 1 =Activar)

d = Canal 2

c = Canal 3

b = Canal 4

a = Canal 5

[SNDCNT]

 $4016

RW 

???STeed 

Jostick #1 

S = Detecta Zapper Sprites (donde 0 es no detectar , 1 es detectar)

T = Gatillo del Zapper (0 presionado y 1 no presionado.

e = Datos del puerto de expansion.

d = Datos del puerto del jostick 1

 [SPECI01]

  ?????eej  

j = Strobe del Jostick

donde 0 limpiar el joypad. 1 resetar los datos.

e = Datos del puerto de Expansion.

 
$4017 R ???STeed

Jostick #2

Lo mismo que para el jostick #1

[SPECI02]

 


ALGUNAS NOTAS SUELTAS SOBRE CARTS DE NES , EL NES , EL FAMICOM , ETC

Como puedo abrir mis Cartuchos de NES?

Hay un par de formas diferentes de hacerlo. Si tu cartucho es del tipo "viejo estilo" , el que usaba tornillos para destornillador plano , pues simplemente abrelo con el destornillador. Pero la mayoria de los juegos (casi todos) utilizan tornillos de 3.8mm del tipo "torso invertido" (Inverse Torx) , cuyos destornilladores son muy dificiles de encontrar. La compania de juegos electronicos MCM (www.mcmelectronics.com) vende el destornillador justo para trabajar. El numero del producto es el 22-1145. MCM tambien vende el destornillador de 4.5mm para abrir los juegos de SNES (Producto N° 22-1150). Pero ten cuidado MCM no es una compania que tiene precios muy baratos.
Tambien hay otras formas. Puedes sostener un alambre de acero caliente (ten cuidado ahi!!!) a la cabeza del destornillador y ir apartando las 2 partes del cartucho por los bordes. Esto derretira el cartucho al paso del alambre (que sea del tipo duro). Y luego puedes reemplazar los tornillos por algunos comunes , teniendo mucho cuidado con la medida que utilizaremos para reemplazar.
Pero claro , siempre puedes utilizar la fuerza bruta!!!. Debes "clavar" en uno de los bordes , con alguna herramienta" y hacer fuerza para separar los 2 lados del cartucho. Ten cuidado con esto , el plastico al ceder , puede romperse y clavarse en tu yugular. Nadie quiere ver en el encabezado del diario al dia siguiente "NINTENDO MATO A MI HIJO". :=)

Como puedo traducir mi juego de NES? Info sobre traducciones : benix_sonico@yahoo.com.ar

Pues la verdad , no soy un experto en eso , (Yo tampoco , es algo que no pensaba incluir-Switchstance) pero voy a hacer el intento : Si quieres traducir entre 2 lenguajes que tienen el mismo alfabeto , pues tienes la mitad del trabajo hecho. Si tienes que traducir entre 2 lenguajes cuyo alfabeto no es igual. Por ejemplo : Japones/Ingles Japones/español. Tendras que crear tu propia fuente (o utilizar la de alguien mas). Si tu caso es el primero , pues simplemente tienes que encontrar dentro del codigo fuente las partes de texto. (Puedes utilizar tanto como un Debugger , Editor Hexadecimal...) tienes que saber con certeza cuales frases o palabras se encuentran en el juego. (no querras encontrarte con codigo...). Generalmente se usan programas especiales (debe haber cientos en la red) para encontrar el mapeado del texto , como por ejemplo el ASCII o el NO ASCII , de tantos bits , etc , tienes que averiguar e identificar esto primero.
Y luego debes ir reemplazando el texto original por el traducido. El primer problema que pueden encontrar es que el Texto que quieren insertar no entra en los espacios del texto original. Esto nos quiere indicar que tal vez deberemos cambiar los Punteros de Texto (text pointers) si el juego los tiene , claro. Traducir juegos de NES requiere de ciertas habilidades , las cuales no poseo (por el momento) y se deben encontrar muchos tutoriales al respecto. Por favor chekeen el capitulo de Hacking de CARTS donde hay una explicacion mas detallada.

Que es el Chip CIC y como funciona?

Nintendo (en el auge de su maquina de 8 bits) tenian mucho dinero y aun asi querian aumentar sus ingresos adquiriendo programadores que tuvieran licencia antes de que pudieran hacer juegos para NES. (Companias desarrolladoras , independientes , etc). Querian cuidar tanto esto que instalaron un CHIP adentro de la consola que se ve bastante similar al CHIP que viene incluido con los Cartuchos. Estos 2 Chips entablaban comunicaciones entre ellos mediante un protocolo especial. Sin este protocolo , la consola al ser reseteada no volvia a cargar el juego. Solo Nintendo vendia este CHIP. Y debia venderselo a las companias desarrolladoras , ya que sin este CHIP el juego no funcionaba. (ingenioso , no?)
Este CHIP lo podian conseguir mediante Licencias (para ganar dinero extra)y tambien otros desamblaban el chip y asi distribuian sus juegos (esto es lo que mas hicieron los desarrolladores independientes). Tambien Nintendo comenzo a distribuir un CHIP Regional , cuyo fin era la de aniquilar la compatibilidad de juegos provenientes de USA/EUROPA/ASIA . Algunas personas que se vieron con el incoveniente que su juego comprado en ASIA no funcionaba con su consola hecha en USA se veian en la tarea de sacar el CHIP.
No creo que exista nadie (en la actualidad) que pueda explicar como funcionaba el protocolo de comunicaciones CIC en detalle. Pero hay muchas formas de sacar el CHIP para siempre de tu consola. Las nuevas versiones de la NES (que cargaba el cartucho por arriba) ya no traia el CHIP , y el FAMICOM directamente no lo traia.
Para sacar el CHIP es necesario abrir la consola , ubicar el CHIP marcado como CIC en el NES PCB (solo en los viejos NES existe tal chip) y debes corta el pin #4 (trata de estar seguro de lo que haces) y conectalo a tierra. (los pins #11 y #15 tienen esa funcion). Existe un documento llamado "Como desactivar el CHIP CIC" escrito por Mark Knibbs y es posible encontrarlo en el internet en sitios como
nesdev.parodius.com .

Son el NES y el FAMICOM compatibles entre si?

Para todas las intenciones y propositos , si. Con los adaptadores apropiados tu puedes jugar juegos de Famicom en tu NES y juegos de Nes en tu Famicom. Solo debes recordar que cuando quieres comprar los Adaptadores el del NES tiene 72 pins y el Famicom 60.
Hay algunas diferencias , por ejemplo , los juegos de Famicom utilizan Chips de Sonido "todo en 1"(todos los chips forman una sola pila), el sonido del cartucho no pasa a traves del NES. Algunos adaptadores exhiben una especial "escala de lineas" (scanline) cuando usamos los juegos de uno en otro. (lo que no pasa con un CART normal). Si estas utilizando el Adaptador para jugar juegos de NES en tu Famicom y ademas quieres insertar el GAME GENIE , puede ser que esa combinacion no funcione. El GAME GENIE no cabe en los conectores del adaptador , o puede ser que se escuche un feo ruido cuando el juego es colocado y prendido la consola.
El Hardware utilizado entre los 2 tipos de consola practicamente son identicos. Ya que no existe forma de que el cartucho reconozca si la consola utiliza el sistema Americano o Japones . Lo que si , hay maneras de que el Cartucho detecte el Microfono , o la ausencia de el boton Start y Select del jostick 2. Los modelos mas nuevos de Famicom podian cambiar entre josticks. (El principal problema que tenian en las viejas epocas era que una vez que se rompia el jostick 1 , era necesario y obligatorio comprar un jostick 1 , porque el #2 no tenia botones para comenzar los juegos.)
Desde el punto de vista del Hardware , hay diferencias menores. Los josticks no podian sacarse (en la vieja version) - luego los hicieron como en la actualidad- y tenia un conector que podia servir para un tercer jostick o algun dispositivo de entrada o Salida (como el Zapper , la pistola , microfono , el teclado , etc). Este conector ademas servia como un conector de expansion (que se encontraba en el fondo de la consola NES). El jostick #2 tenia un microfono con un control de volumen construido en el (en vez del start y select) espacio libre. Siempre fue algo que molesto. El viejo Famicom tenia salida RF para conectar al televisor. El Famicom no tenia el CIC chip (el cual bloqueaba algunos juegos) , por eso el conector de cartuchos tenia 60 pins. El conector del cartucho pasaba audio desde el cartucho hacia la consola , lo cual permitia un mejor sonido.
El nuevo estilo del Famicom , incluia josticks identicos al NES (cosmeticamente modificados) e incluia los conectores para los mismos. Y tenia salidas AV (audio-video) solamente. Fuera de eso , era totalmente compatible con sus viejas versiones.

Cual es el juego mas largo creado para NES? Y el mas pequeño?

El juego mas largo creado para NES (del que se tenga conocimiento) es el Kirby´s Adventure , el cual contiene unos 6 megabytes de informacion. 512kb en PRG ROM y 256kb de CHR ROM. Dicen los rumores por ahi ( y tambien en algunos documentos) que existen juegos japoneses (los cuales tal vez jamas conoceremos) que son mucho mas largos. Lo que si es cierto es que algunos juegos PIRATAS son mucho mas pesados que los programados originalmente para la consola.
Los juegos mas pequeños de NES son aquellos que solo contenian unos 8kb de PRG ROM como Galaxian , Galaga y otros mas.

Es NES compatible con SNES?

Pues , la respuesta podria ser afirmativa , pero no lo es. Porque las 2 consolas no pudieron ser compatibles? Es un misterio para muchos , pero creo que la mejor respuesta es esta : Codicia.
El principal problema es que si bien el procesador del SNES (un 65816) es compatible con el software escrito para el 6502 (usando algunas que otras tecnicas debo aclarar) los graficos y el hardware de sonido no lo son. Hay algunas versiones por ahi de pequeños juegos de NES trasladados al formato *.SMC (formato del SNES) que pueden jugarse en SNES , pero fueron convertidos manualmente con diferentes escrituras en los registros , por lo tanto no hay forma de que trasladar juegos de NES para usarlos en la SNES.

Es NES compatible con Game Boy o Game boy color?

Simple y duramente NO. El Game Boy utiliza una variacion del procesador Z-80 Zilog noel 6502. Ademas el tamaño de la pantalla , los detalles de la paleta y mas son totalmente diferentes. Existe un programa para convertir juegos de NES al formato del GAME boy , pero los resultados son tan pesimos y repugnantes que no vale la pena intentarlo de nuevo. Algunos juegos originales para NES como Super MArio Brothers , Ghost´s and Goblins , etc fueron reprogramados para funcionar en GAME BOY. No son Versiones trasladadas.

Donde puedo conseguir una buena PALETA para mi Juego de NES?

Cuando trabajamos con Roms de NES y nos dedicamos al Developing o la programacion de los mismos generalmente necesitaremos construir una paleta de colores para nuestro juego e introducir sus valores en Hexadecimal. Esta paleta creada por Chris Covell es la que mas se asemeja a la verdadera. Porque hay tanta diferencia entre las Paletas de colores de los EMUS?. Porque hay varias razones , 1-no toda la gente percibe los mismos colores y 2-para capturar la imagen verdadera 100% necesitariamos capturar en Video una pantalla real de una NES real corriendo un juego REAL. Mucha gente lo hace de esta manera.
Cuando querramos introducir en el codigo debemos tener en cuenta que los numeros de las celdas representan los numeros de entrada
de la paleta en la NES.

 

 

30

31

32

33

34

35

36

37

38

39

3A

3B

3C

3D

3E

3F

 

20

21

22

23

24

25

26

27

28

29

2A

2B

2C

2D

2E

2F

10

11

12

13

14

15

16

17

18

19

1A

1B

1C

1D

1E

1F

00

01

02

03

04

05

06

07

08

09

0A

0B

0C

0D

0E

0F

 

Los valores de estos colores en modo hexadecimal , comenzando desde el valor 0 son :

$80,$80,$80, $00,$3D,$A6, $00,$12,$B0, $44,$00,$96
$A1,$00,$5E, $C7,$00,$28, $BA,$06,$00, $8C,$17,$00
$5C,$2F,$00, $10,$45,$00, $05,$4A,$00, $00,$47,$2E
$00,$41,$66, $00,$00,$00, $05,$05,$05, $05,$05,$05
$C7,$C7,$C7, $00,$77,$FF, $21,$55,$FF, $82,$37,$FA
$EB,$2F,$B5, $FF,$29,$50, $FF,$22,$00, $D6,$32,$00
$C4,$62,$00, $35,$80,$00, $05,$8F,$00, $00,$8A,$55
$00,$99,$CC, $21,$21,$21, $09,$09,$09, $09,$09,$09
$FF,$FF,$FF, $0F,$D7,$FF, $69,$A2,$FF, $D4,$80,$FF
$FF,$45,$F3, $FF,$61,$8B, $FF,$88,$33, $FF,$9C,$12
$FA,$BC,$20, $9F,$E3,$0E, $2B,$F0,$35, $0C,$F0,$A4
$05,$FB,$FF, $5E,$5E,$5E, $0D,$0D,$0D, $0D,$0D,$0D
$FF,$FF,$FF, $A6,$FC,$FF, $B3,$EC,$FF, $DA,$AB,$EB
$FF,$A8,$F9, $FF,$AB,$B3, $FF,$D2,$B0, $FF,$EF,$A6
$FF,$F7,$9C, $D7,$E8,$95, $A6,$ED,$AF, $A2,$F2,$DA
$99,$FF,$FC, $DD,$DD,$DD, $11,$11,$11, $11,$11,$11

 


MAPPERS

Que es un MAPPER?

El Mapper es un CHIP incluido dentro del Cartucho para manejar MEMORIA. Fueron creados para que los programadores pudieran ir mas alla de las limitaciones de la NES/FAMICOM. El Procesador 6502 tenia unicamente 16 bits de direcciones correspondientes al BUS. Esto significaba que solo se podia acceder por arriba de 65636 bytes de ROM o RAM de una sola vez. Y la NES estaba designada a acceder a la mitad del ROM. Los programadores cada vez creaban juegos mas complejos y necesitaban crear una forma de cruzar la barrera a los 32K de ROM. Entonces los Mappers fueron creados , Memory Mappers es su nombre y significa Mapas de Memoria. Lo que hacian estos CHIPS era cambiar diferentes bancos dentro del codigo del programa para que el CPU pudiera acceder a esos 32k de ROM.Un ejemplo de estos son los MMC chips.
Luego de incrementar el espacio para albergar direcciones , los mas modernos Mappers comenzaron a implementar nuevos tipos de graficos para que estuvieran disponibles para los juegos y poder ir combinando posibilidades. El primer MAPPER que cambio graficos lo hizo a 8K. Tiempo despues los mappers fueron mejorando , y fueron ocupando menos espacio dentro de la CHR-ROM para incluir mas animaciones en el fondo de pantalla , etc. Por supuesto muchas companias desarrolladoras comenzaron a distribuir Mappers creados por ellos , los cuales mediante "trucos de desarrollo" podian interactuar con el CPU. Tambien muchos Mappers incluian Chips de sonido adicionales , para hacer mas compleja la musica. Generalmente en los juegos originales para FAMICOM / lease japoneses. (Chips como el Konami VRC de sonido).
Juegos como el Mario Bros y otros no contenian mappers y funcionaban con el Hardware original.
Hay muchisimos Mappers , aqui he intentado crear una buena lista de los MAPPERS mas comunes con los cuales trabajaremos y debemos tener conocimientos de ellos.

Lista de MAPPERS #1 - El texto se encuentra un poco desprolijo - Mas info sobre Mappers a benix_sonico@yahoo.com.ar

MAPPER------NOMBRE---------------JUEGO

0---------------No Mapper--------------- Donkey Kong, Mario Bros
1
---------------Nintendo MMC1--------------- MegaMan 2, Final Fantasy , Metroid , Rad Racer , Legend of Zelda.
2---------------Simple 16KB PRG Switch/UNROM--------------- MegaMan 1, Archon, 1944 , Ghost and Goblins , Amagon.
3
---------------Simple 8KB CHR Switch--------------- Spy Hunter, Gradius
4
--------------- Nintendo MMC3--------------- Recca, TMNT 2, Final Fantasy 3
5
--------------- Nintendo MMC5--------------- Castlevania 3, Just Breed, Uchuu Keibitai SDF
6
--------------- FFE F4 Series(hackeado)--------------- Saint Seiya, Ganbare Goemon
7
--------------- AOROM--------------- Battle Toads, Lion King
8
--------------- FFE F3 Series(hackeado)--------------- Doraemon Kaitakuhen
9
--------------- Nintendo MMC2--------------- Punchout!
10
---------------Nintendo MMC4--------------- Fire Emblem, Fire Emblem Gaiden
11
--------------- Color Dreams--------------- Crystal Mines, Bible Adventures
13
--------------- CPROM---------------Videomation
15
--------------- Multi-cart(pirata)--------------- 100-in-1: Contra Function 16
16
--------------- Bandai Dragon Ball Z,--------------- Gundam Knight
17
--------------- FFE F8 Series(hackeado)--------------- Parodius, Last Armageddon
18
--------------- Jaleco SS806--------------- Pizza Pop, Plazma Ball
19
--------------- Namco 106--------------- Splatter House, Mappy Kids
21
--------------- Konami VRC4 2A--------------- WaiWai World 2, Ganbare Goemon Gaiden 2
22
--------------- Konami VRC4 1B--------------- Twinbee 3
23
--------------- Konami VRC2B--------------- WaiWai World, Getsufuu Maden
24
--------------- Konami VRC6--------------- Akumajo Densetsu(Dracula 3)
25
--------------- Konami VRC4--------------- Gradius 2, Bio Miracle: Boku tte Upa
26
--------------- Konami VRC6 A0-A1 Inverse--------------- Esper Dream 2, Madara
32
--------------- Irem G-101 ---------------Image Fight 2, Perman
33
--------------- Taito TC0190/TC0350 ---------------Don Doko Don 1&2
34
--------------- Nina-1--------------- Deadly Towers, Bug Honey
40
--------------- (pirata)--------------- Super Mario Bros. 2
41
--------------- Caltron ---------------6-in-1 Caltron 6-in-1
42
--------------- (pirata) ---------------"Mario Baby"
43
--------------- Multi-cart(pirata) ---------------Golden Game 150 in 1
44
--------------- Multi-cart(pirata) ---------------Super HiK 7 in 1
45
--------------- Multi-cart(pirata) ---------------Super 1000000 in 1
46
--------------- Game Station ---------------Rumble Station
47
--------------- NES-QJ ---------------Nintendo World Cup/Super Spike V.B.
64
--------------- Tengen RAMBO-1 ---------------Shinobi, Klax
65
--------------- Irem H-3001--------------- Daiku no Gensan 2
66
--------------- GNROM ---------------DragonBall, SMB + Duck Hunt
67
--------------- Sunsoft Mapper "3" ---------------Fantasy Zone 2
68
--------------- Sunsoft Mapper "4" ---------------After Burner 2, Nantetta Baseball
69
--------------- Sunsoft FME-7--------------- Batman: ROTJ, Gimmick!
70
---------------FW70--------------- Kamen Rider Club
71
---------------Camerica ---------------Fire Hawk, Linus Spacehead
73
---------------Konami VRC3 ---------------Salamander
75
---------------Jaleco SS8805/Konami VRC1--------------- Tetsuwan Atom, King Kong 2
76
---------------Namco 109 ---------------Megami Tenshi 1
78
---------------Irem 74HC161/32 ---------------Holy Diver
79
--------------- AVE F15 ---------------City War, Krazy Kreatures
80
--------------- Taito X-005 ---------------Minelvation Saga
85
---------------Konami VRC7 ---------------Lagrange Point
87
---------------Konami (Viejo)--------------- Argus
90
--------------- Pirata--------------- Super Mario World, Mortal Kombat
93
--------------- Sunsoft Mapper---------------Fantasy Zone
94
---------------Capcom Mapper---------------Senjou no Ookami
95
--------------- Namco ?? ---------------Dragon Buster
97
---------------IREM--------------- Kaiketsu Yanchamaru
99
---------------VS System 8KB CHR Switch--------------- VS SMB, VS Excite Bike
112
--------------- Asder ---------------Sango Fighter, Hwang Di
113
--------------- Sachen (Hackeado)---------------Deathbots
118
--------------- MMC3-TLSROM/TKSROM Board--------------- Ys 3, Goal! 2, NES Play Action Football
119
--------------- MMC3-TQROM Board--------------- High Speed, Pin*Bot
151
--------------- Konami VS System Expansion--------------- VS The Goonies, VS Gradius
180
--------------- ??--------------- Crazy Climber
182
--------------- ??--------------- Super Donkey Kong
184
--------------- ?? ---------------Wing of Madoola, The
185
-------------- CHR-ROM Proteccion Desactivada (hackeado)--------------
225
--------------- Multi-cart(pirata) ---------------58-in-1/110-in-1/52 Games
226
--------------- Multi-cart(pirata) ---------------76-in-1
228
--------------- Action 52 ---------------Action 52, Cheetahmen 2
229
--------------- Multi-cart(pirata)--------------- 31-in-1
240
--------------- ??--------------- Gen Ke Le Zhuan, Shen Huo Le Zhuan
246
--------------- ??--------------- Fong Shen Ban


Sonido de la NES Mas informacion sobre el Sonido de la NES , por favor escribir a Benix_sonico@yahoo.com.ar

Una de los aspectos mas interesantes de la NES es el soporte de sonido , el cual es muy analogo , excluyendo el registro PCM. La constante para el sonido perfecto parece ser :

111860.78 (e.g 3579545/32)

Esto fue extraido de la constante usada en el TI 76486 sonido PSG. (Que es el procesador incluido en la Sega Genesis).

Para los canales de ondas (waves) Cuadradas y Triangulares , la formula que podemos usar para obtener un playback "decente" en la NES es:

P = 111860.78 / (CHx + 1)

Donde "P" son los datos que seran "ejecutados" (digase escuchados) , y CHx es el canal ejecutado. Las formulas para los diferentes canales son las siguientes :

CH1 = $4002 + ($4003 & 7) * 256 (Onda cuadrada #1)
CH2 = $4006 + ($4007 & 7) * 256 (Onda Cuadrada #2)
CH3 = $400A + ($400B & 7) * 256 (Onda Triangular)

CH1 , CH2 , CH3 , son los nombres de los canales (En la terminologia que deberas utilizar se leen como : Square Wave #1 , Square Wave #2 y Triangle Wave.) En la formula : El valor $400x son los valores actuales escritos en ese registro.

Para el canal PCM , hay dos metodos de implementacion , via DMA y por el puerto de volumen PCM ($4011)

Los samples son enviados Byte por Byte a $4011 , el resultado es bastante "escuchable". De todas formas , muy pocos juegos utilizan los samples , ya que la mayoria utilizan la transferencia via DMA.

Esquema Electronico del Audio de La NES.
Gracias Chris! - MAs informacion Nes Sound  Ripping Guide
http://www.zophar.net


Josticks Toda la informacion sobre Josticks , Inputs , codigo y mas , por favor a Benix_sonico@yahoo.com.ar

Los dos josticks de NES se pueden acceder en las locaciones : $4016 y $4017. Para resetear los josticks , escribe primero $01 y luego $00 en la locacion $4016. Esto generara un "stop" en el circuito de los josticks. Entonces debes leer desde $4016 (jostick #0) o desde $4017 (jostick #1). Cada lectura nos indicara o nos devolvera el estado de cada boton en el bit 0. (1 si el boton esta presionado , 0 si no.).

Leer # |    1      2      3      4      5      6      7      8
-------+---------------------------------------------------------
Boton  |    A      B   SELECT   START   UP    DOWN   LEFT  RIGHT

El primer bit (1st) indica si el jostick esta conectado al puerto o no. Este se "setea" a 0 si esta conectado , 1 si no lo esta. El 6to y 7mo bit de $4016/#4017 tambien parece tener significado. En el resto de los BITS nos apareceran ceros. Algunos juegos esperan conseguir exactamente $41 desde $4016/$4017 si el boton esta presionado. (Deberias chequear esto primero).

The Light Gun

 

La lightGun (tambien conocida como Zapper) era la pistola que venia junto a la NES. No tengo suficiente informacion sobre si en Japon la Light Gun venia por defecto con la consola o se vendia como periferico aparte. En America Del sur y en otras partes esta venia por defecto con la consola y un 1 cart.

La Light Gun simplemente usa los bits en $4016 y $4017. Deberias chequear los bits D4 , D3 y D0.

Era posible tener dos lights guns conectadas junto a ambos josticks simultaneamente.

Para mas informacion es preciso chequear la parte de Registros y Puertos.

 

 

Soporte para 4 jugadores:

 

Algunos juegos de NES utilizaban o requerian un adaptador para 4 jugadores , extendiendo el numero de josticks usables de 2 a 4.

Juegos que lo utilizaban : Gauntlet II y RC PRO AM 2.

Los cuatro controles leian sus bits de status desde D0 ($4016) o ($4017).

Para el registro $4016 , la lectura desde # 1- 8 correspondian al control 1 , y desde # 9 –16 correspondian al jostick numero 3.

Para el registro $4017 lo mismo pero con el jostick 2 y 4.

La siguiente es una lista de lecturas y sus resultados:

 

1 = A                  9 = A                       7 = +--+

2 = B                 10 = B                    18 =    +-- Signatures

3 = SELECT       11 = SELECT         19 =    |

4 = START         12 = START          20 = +--+

5 = UP               13 = UP                 21 = 0

6 = DOWN        14 = DOWN           22 = 0

7 = LEFT           15 = LEFT              23 = 0

8 = RIGHT         16 = RIGHT           24 = 0

 

Que son las Signatures?

 

Las signatures ayudan al programador a detectar si un jostick (o dispositivo) se encuentra conectado a uno de los 4 puertos o no. Y tambien arroja la informacion sobre el dispositivo detectado.

Algunas Signatures Validas:

 

%0000 = Desconectado

%0001 = Jostick conectado ($4016)

%0010 = Jostick conectado ($4017)

 

Paddles:

 

El juego Arkanoid de Taito utilizaba un dispositivo conocido como Paddle (paleta) como controlador primario.

La posicion del “Paddle” es leida via D1 del $4017 ; los datos de lectura son invertidos (0=1 y 1=0). El primer valor leido es el MSB y el octavo valor es obviamente el LSB.

Los Rangos validos de Lectura corren desde 98 hasta 242 , donde el 98 representa el dispositivo girando en direccion a las manecillas del reloj.

La PADDLE contaba con un solo boton que es leido via D1 en $4016 , el valor 1 especifica si el boton es presionado.

 

 

El famoso tercer puerto entre los dos puertos de Josticks , el input expansion PORT

 

El proceso de comunicación entre los josticks requiere de escrituras como 1 seguido de 0. Si el proceso conocido como “strobing” no se completa o ocurre en un orden no-estándar , los josticks no se comunican bien.

Para los usuarios de NES , el puerto de expansion es localizado sobre la consola tapada por una pieza de plastico de color Gris (rojo en America del Sur). En Famicom esta al frente (igual que el family game) y era usada comunmente para los josticks y los josticks con Turbo.

Un ejemplo de comunicación con el puerto de expansion se explica con el siguiente codigo:

 

      LDA #%00000001

      STA $4016

      STA $4017           ; Comienza la lectura del puerto de expansion

      LDA #%00000011      ; Escribe el %110 en el puerto de expansion.

      STA $4016

 

Informacion Tenica sobre los Controles de la NES Escrito por Tenesee Carmel-Veilleux veiulleux@ameth.org

Aclaraciones de este Texto : No fueron escritas por alguien que conozca de electronica en profundidad , esta basada en la experimentacion del autor con josticks reales , tanto la desmantelacion como la averiguacion e investigacion de los diversos componentes que lo forman. Por lo tanto esta informacion puede ser totalmente erronea , el autor espera que no lo sea , pero al no conocer en profundidad diversos comportamientos de componentes podria haber algunos errores.

La interfase de los controles de la NES : Este aloja 2 puertos separados que lee informacion o datos seriales desde un dispositivo externo que opera un nivel de voltaje TTL. Este provee 3 canales seriales para cada puerto , que son usualmente leidos usando un conversor gatillado por una señal de reloj llamada PISO. Las señales y la señal de reloj son creadas por el programa de software que corre en la unidad (lease Cartucho). Circuitos especiales en el CPU y los I/O externos del sistema estan en carga y utilizan el hardware para poner los datos desde el BUS de datos hacia los puertos.

Esquema 1 del Jostick de la NES

Los conectores (ver imagen):

*GND = Es la conexion a tierra (0Volts)

*CLK = Es la señal de reloj para el control serial de datos.

*STRB = Es la conexion "strobe" para el circuito "strobing".

*D0 = El primer canal serial (generalmente usado para que el jostick controle los datos)

*+5V = Es la conexion positiva de 5Volts.

*D3/D4 = Los otros dos canales seriales primariamente usados por el ZAPPER y otros controles mas sofisticados.

El 5V y el GND son las 2 conexiones que llevan corriente hacia el ciruito interno. El poder maximo aceptado es desconocido , pero se cree que es extremadamente bajo.

Josticks

Esquema Electronico del Jostick 1 de la NES.

El esquema del jostick que ven arriba proviene de un jostick sacado de una consola proveniente de USA/canada , los botones que tiene el jostick son : De izquierda a derecha : Derecha , Izquierda , Abajo , Arriba , start , select , Boton B y Boton A.

El circuito contiene :

*4021 Un registro estatico de 8 bits.

*8 PCB es un resistor de 70Kohm.

*8 botones presionables desde los contactos del PCB a traves de conductos plascticos para cada uno.

*A Conector

Como funciona

El 4021 esta invirtiendo entradas. Cada ves que la conexion STRB emite una señal alta cuando baja , los datos en las 8 entradas paralelas escriben en el registro. Cuando las entradas en el 4021 estas invertidas , los 8 resistores actuan como resistores que suben a 5volts para crear una entrada alta por defecto. Cuando un boton esta presionado , 0v esta alojada en la entrada , creando un estado en el registro. La entrada de datos seriales es clavada en 0v , lo que provoca una reaccion en el 4021. Entonces cada vez que la conexion reloj emite una señal alta , cada bit (P8) es enviado a D0 pasando por el Q8. Despues de 8 cambios , el registro entero vuelve a cero , lo que hace que los retornos de lectura vuelvan al estado 0. Todas las operacion ejecutadas por este josticks son muy simples , y crear un jostick en tu casa cuesta menos de 1US$. (el 4021 cuesta unos 0.25US$ y los resistores son muy baratos en www.jameco.com )

Se pueden usar Josticks de Famicom en la NES y viceversa? Escrito por Chris covell ccovell@direct.ca

Si , se puede. Una vez , realize (con mucho trabajo) un control para la NES para conectarlo en mi Famicom usando un cable de 15 pins para el jostick. Instale llaves (switches) que determinaban cuando un control estaba conectado (si el 1 o el 2). Hay muchas chances de que puedas utilizar tambien los viejos josticks del Famicom en una NES. Deberias chequear en internet (nesdev.parodius.com) por documentos sobre pines , josticks y controles.

Para que servia el puerto de expansion en la NES?

Expansion??? , bueno , raramente se usaba. Pero en el Famicom generalmente se usaba para muchas cosas como los Anteojos 3D , Teclados , "disquetera" , y otras cosas. La NES tenia 2 dispositivos para ser utilizados en ese puerto ; uno era un Teclado de Enseñanza (Miracle Keyboard Piano Teaching System) y otro dispositivo aun mas raro llamado "Baton teleplay system" , que segun sus fabricantes era un accesorio con el cual se podia "conectar" la Sega Genesis con la NES. Creo que este dispositivo al fin de cuentas jamas salio a la venta. (No hubiera estado bueno?)

 


Formato .NES Mas sobre el formato .NES en Nestech.doc de Yoshi yoshi@parodius.com

Esta parte del documento habla sobre el Formato de Archivo .NES creado por Marat Fayzullin (autor de Nes.doc y el Emu iNES).el formato de archivo .NES sirven para almacenar Imagenes de juegos de NES (lease software , cartuchos , roms). Difieren un poco las versiones de Marat y Yoshi , pero generalmente tiene la misma estructura :

Formato .NES de Marat Fayzullin , proveniente del iNES.

Byte     Contiene
---------------------------------------------------------------------------
0-3      La hilera "NES^Z" usada para reconocer los archivos .NES
4        Numero de bancos de 16kB de ROM .
5        Numero de bancos de 8Kb de VROM .
6        bit 0 1 para vertical mirroring, 0 para horizontal mirroring
         bit 1 1 para la RAM de bateria en $6000-$7FFF
         bit 2 1 para el 512-byte trainer en $7000-$71FF
         bit 3 1 para la VRAM de 4 pantallas 
         bit 4-7 Cuatro bits bajos para el tipo de Mapper.
7        bit 0-3 Reservado, deben haber ceros!!
         bit 4-7 cuatro bits altos para el tipo de Mapper .
8-15     Reservado,deberian ser ceros!!!
16-...   Bancos de Rom, en orden ascendiente. Si el trainer esta presente, los
         512 bytes preceden al contenido de el Banco del ROM .
...-EOF  Bancos VROM , en orden ascendente.
---------------------------------------------------------------------------

Nota : Este formato no es unico y se seguira expandiendo con nuevas adiciones. Cualquier nueva caracteristica siempre llevara las viejas para evitar problemas con compatibilidades con viejos Carts. Los 8 bits alojados en el espacio para la cantidad de mappers nos arroja un total de 256 (ver mappers!). Este formato soporta los primeros 34 Mappers de la lista.

Formato de discos del Famicom

Este es el formato de archivo para el Sistema de discos de el Famicom , el unico Emulador que lo soporta (en esa epoca) era el PASOWING , el cual solo podia cargar ese tipo de imagenes. El formato .DKA /.DKB (Disk side A , Disk side B) - (Lado del disco A , Lado del disco B) nunca fue documentado. Estos archivos tenian un "peso" de 64K en tamaño. El formato es el siguiente : (Debo aclarar que hoy en dias hay muchos Emus que lo soportan , por ejemplo el Nesterj)

Imagen del Cabezal - Image Header

OFFSET (?)

Tamaño

Descripcion

0

1

? - Desconocido

1

3

ID del disco (para identificarlo)

6

1

# de Disco

38

1

# de Disco (Desconocido)

63

1

Bloques de Datos

Cabezal de block de Datos - Data block header

OffSet (??)

Tamaño

Descripcion

64

1

$03

65

1

# de Block

66

1

(Desconocido)

67

8

Nombre

75

2

Destino

77

2

Tamaño de Dato

79

1

Tipo de Datos

 

 

***********
$00 - PRG-RAM
$01 - CHR-RAM
$02 - Tabla de Nombres de Datos

79-.....

(Depende del dato)

Los Datos

..-EOF

 

Repite cargando los datos , hasta que el EOF lo rechaza.


Hacking de CARTS (Extraido de mi Guia de Hacking and Developing de CARTS)

I- Introduccion

 

He escrito esta Guia con el fin de "Educar" y motivar a la auto-educacion de las cuestiones informaticas. No pretende ser una guia de Hacking convencional porque no lo es. El hacking es algo serio y esto es un paseo en el campo a comparacion de otras actividades que no pienso mencionar , ni tocar en esta Guia.

Para una mejor visualizacion por favor utiliza el Editor de MS-DOS. Si tienes alguna duda o piensas que algo no fue muy bien explicado , por favor sientete libre de escribirme a benix_sonico@hotmail.com  .

He comenzado a escribir esta GUIA debido a que no hay materiales en castellano sobre Developing y hacking...(por dios odio esa palabra!) de NES y de Emulacion en general. Todo el material esta escrito en Ingles o Japones por eso estoy tomando este proyecto en mis manos.

Desde ya muchas gracias a los que han posteado este Archivo sin modificarlo y desinteresadamente para la educacion de muchas personas.

Lo que la Guia cubre son muchos aspectos conocidos y desconocidos de la "alteracion" de Roms de NES y metodos basicos. Tambien inclui algunos links y algunas otras cosas.

Debo aclarar y esto es muy importante : Yo no hackeo ROMS para NADIE. Lo hago por mi mismo y con el fin de aprender un poco mas , sugiero que hagas lo mismo. Las leyes del Copyright son muy duras y no me gustaria verte los proximos años con un compañero de celda calvo llamado MIKE.

He tratado de escribir con un lenguaje que todos me puedan entender sin ponerme muy tecnico , si realmente quieres mas y mas cosas tecnicas , por favor escribeme.

En fin esto es esto lo que tengo para decir a modo de introduccion , armense de valor que vamos a destruir algunos ROMS.

 

 

II - GRAFICOS

 

Cambiar o editar los graficos es tal vez de lo mas simple del mundo...hasta niños pequeños lo hacen!. Con los conceptos basicos ya podemos experiementar desde aqui y detenerte. Muchisimos roms contienen en el nombre un -HACK- pero simplemente son graficos a los que se les ha cambiado las formas o editado.

El NES contiene informacion grafica no-comprimida en el ROM. Comprimida quiere decir que la han apretujado tanto en el ROM que casi no ocupa espacio. (Como cuando usamos el Winzip o similares).

Si bien los juegos de NES varian , hay roms que contienen su informacion grafica comprimida. Si bien no nos presenta alguna dificultad es bueno reconocer que tipo de informacion trabajaremos.

Yo para empezar les recomendaria que comiencen con un juego pequeño como Bomberman (este es bien simple) o Galaga , Galaxian , Tennis , todos esos juegos de 16k.

Pero para editar graficos tendremos que valernos de herramientas que nos permitan ver la informacion del ROM y nos permita editarla. Los 2 programas que mas usan los que se dedican a esto son el TILE LAYER y el TILE LAYER PRO , ambos creados por Snowbro. Estas dos herramientas se pueden conseguir en casi cualquier sitio de Emulacion y dije casi porque no todos los sitios de Emulacion alientan el developing o el hacking de carts. Entonces nos quedan las maravillosas paginas de http://www.zophar.net   y http://nesdev.parodius.com  . Es impresionante el material y el software que encontraran alli.

Tile Layer funciona solo en DOS y quienes tienen XP pueden tener ciertos problemas. Debo decir que es mi favorito ya que me he acostumbrado muchisimo a su manejo. Y para los usuarios de Windows recomiendo el segundo Tile Layer PRO.

Anteriormente habia escrito una guia sobre como usar el TILE LAYER y gracias a la magia del Copy&Paste esta es la guia: (Ignora algunas partes , corresponden a mi documento tecnico sobre NES.)

 

El Tile Layer es un programa muy util a la hora de editar graficos para NES. Si bien podemos "modificar" Roms ya existentes y "Hackearlos" (cambiando los personajes , editandolos , etc) , tambien nos sera util a la hora de hacer el Developing y crear nuestros propios graficos para nuestros Demos. (esto ultimo no siempre es cierto y existen mejores programas para ello).

Tile Layer es un programa creado por Snowbro (kentmhan@online.no) en el cual podremos editar graficos para la NES (obviamente)  SNES , Game Boy , Virtual Boy y la fabulosa Master system. (en la version 0.50b). Contiene su propia paleta (la cual luego importarla) Tambien debo mencionar que el programa es muy rapido , y aunque se puede tardar en sacarle todo el jugo es realmente divertido poder experimentar con el.

Con este programa yo mismo he "hackeado" (no me gusta esta palabra) mas bien "alterado" algunos ROMS como Mario Bros , Tennis , Bomberman , y con ayuda de un Editor Hexadecimal podemos tambien modificar muchisimas cosas (como el texto principalmente).

Para empezar , abran una ventana de MS-DOS (si usas Windows 98) y simplemente para correr el programa deben ejecutar la siguiente linea de comandos:

 

C:\ Tlayer\ Tlayer.exe cart.nes

 

Ignoren el C:\Tlayer (ya que en mi PC se encuentra en ese directorio). Simplemente deberan escribir el nombre del ejecutable y el Rom (o juego) que queramos alterar debera estar en el mismo directorio que el ejecutable. Por ejemplo Mario.nes.

Las funciones dentro del programa son:

ESC : Salir del programa

F1 - Cambiar el formato (aunque lo detecta automaticamente)

F2 - Salvar la paleta.

flecha arriba- Moverse a traves del Rom hacia arriba

flecha abajo- Moverse hacia abajo.

flecha izquierda- Moverlo hacia el costado(-1) Generalmente yo lo uso cuando los graficos se ven cortados o desordenados.

flecha derecha- Mover hacia la derecha.(+1)

PgUp - Avanza una pagina en el ROM

Pgdown - Regresa una pagina.

TAB - Cambiar archivo (cuando hay dos archivos abiertos)

 

El uso en General de este Software es simple. Cuando Abrimos el programa la pantalla se divide en 3 partes. La de la izquierda (la que aparece borrosa) son los datos del ROM. Cuando la veamos por primera vez , no entenderemos nada , pero si navegamos a traves de ellas , ya sea con las flechas (arriba-abajo) no tardaremos en encontrar los Graficos. (Quienes no tengan el programa , pero si tienen nesticle , este contiene las mismas funciones , pero es un poco mas limitada , utilzando View-PAtterns). A la derecha-arriba tenemos el Clipboard , donde podremos extraer y copiar sprites de los datos del ROM. Esto es muy util cuando trabajamos con 2 Roms. Por ejemplo abrimos 2 archivos (El Mappy y el Bomberman).

 

 

Tlayer.exe mappy.nes bomberman.nes

 

Bomberman modificado utilizando Tile Layer (Version DOS)
Tiempo de trabajo : 5 minutosCuando queremos abrir 2 archivos deberemos poner los nombres de los mismos uno despues de otro (como el ejemplo). Y dentro del programa , podremos cambiar por uno o por otro utilizando la tecla TAB. Y buscando (por ejemplo) los graficos del MAPPY , los movimientos de nuestro personaje (que es un raton que huye de unos gatos). Copiamos al clipboard todos los sprites del Raton respetando la forma (para no perdernos) y luego apretamos TAB y ahora nos muestra los graficos del Bomberman, simplemente deberemos sacar del clipboard los graficos del mappy y pegarlos sobre los movimientos del personaje del bomberman. Y salvamos con la tecla F2 o le damos al boton SAVE. Cuando abramos el archivo con un Emu tendremos en vez de bomberman un MAPPY-MAN. =)

Tambien debo mencionar que existe una Version que corre bajo Windows llamada Tile Layer -PRO- . Tienes algunas opciones mas , pero yo prefiero la version de DOS.

El "Hacking" de ROMS es un tema bastante complejo.Y el Tile Layer es un programa bastante simple de utilizar lo que nos dice que todavia nos hace falta conocer otros aspectos.

 

Pero como funcionan los graficos eh?. Los graficos estan ordenados en pequeñas piezas (por asi llamarles) , Sprites y fondos de pantalla en realidad son todas piezas juntas dibujadas en la pantalla. Cada pieza contiene 8x8 pixels. Para el NES , se puede usar 4 colores para cada pieza , tres de esos colores son colores actuales (usados en el juego) y el cuarto es Transparente. (Para fondos mas que nada).

O sea que aunque el Sprite completo sea un cuadrado gracias al color transparente podremos ver el Fondo de pantalla o Background sin alterar los movimientos o el juego.

Que cuantos graficos se pueden cargar? , hay un limite de 256 (16x16) pueden ser cargados de una sola vez para el fondo , y otros 256 (16x16) adicionales para los Sprites , dando un total de 512 piezas trabajando.

 

NOTAS:

-Siempre es importante hacer un BACKUP de los juegos con los que experimentemos!.

-Si ven los graficos , pero se ven muy mal trata de pulsar las teclas izquierda y derecha y + y -

-Si no ven graficos es porque la informacion esta comprimida.

-En algunos Roms como Road Fighter notaras que hay multiples copias de los mismos graficos , si quieres hacer que realmente cambie tienes que cambiar todos los graficos para que surta el efecto. Esto se debe a que utilizan los mismos graficos pero en otra area del juego. Si quieres cambiar el coche rojo debes cambiar todos los autos rojos.

-Si no ves colores no te asustes , es lo mas comun del mundo , por alguna razon , TL no lee la paleta , por lo tanto si quieres chekear el color original deberas moverte a traves de los controles RGB.

 

METODO SIMPLE : Usando Nesticle

 

Nesticle fue y es uno de los Emus mas sencillos y conocidos del mundo , gracias a sus herramientas y correcta Emulacion. Chequealo y buscalo en cualquier pagina de Emulacion.

Haz una copia Backup del Rom de Nes que vamos a “hackear” , una vez listo , toma el Nesticle (Version 0.30 en adelante...) y carga un Rom (Load Rom) , y comienza a jugar. Si el juego que has cargado es “grande” como Kirby , SMB3 , o Zelda deberas jugarlo hasta que aparezca el grafico que quieres cambiar.

Si es un juego pequeño (los que siempre prefiero para jugar) en cualquier punto que chekeemos los graficos nos mostrara todos los Sprites.

Es importante hacer esta diferencia!.

Para pausar el juego y ver los graficos tenemos 2 formas , puedes apretar START y pausar el juego ; el problema de esto es que algunos juegos al ponerles pausa algunos Sprites podrian no verse bien , lo mejor es pulsar ALT+P y pausar el Emulador lo que no solo sera mucho mejor si no que los graficos se veran correctamente. ( No todos los juegos a los que se les aprieta START se ven mal , pero si algunos).

Ahora deberas ir a VIEW , luego a PATTERNS TABLE. Ahora se abrira una ventana que te muestra los graficos de nuestro juego.

Ahora todo es simple , tomamos un Sprite  y lo modificamos.  Y que si queremos modificar los colores???

 

 

Texto Insertado  en el ROM usando simplemente un Editor Hexadecimal
En este ejemplo tenemos un Multi-Game Cart sobre el Bomberman totalmente
modificado reemplazando el texto en Ingles por el texto en Castellano...
Duracion del proceso : 3 minutos.III-EDITORES HEXADECIMALES Y EDICION DE TEXTO.

Cuando hablamos de Hexadecimales hablamos de Alterar el TEXTO. Yo al principio cuando comence a escribir mi primer DOC no sabia como traducir ROMS , un dia me di cuenta que era la cosa mas simple que habia hecho y si tienen cuidado veran que todos aquellos que se jactan de ser unos verdaderos HACKERS TRADUCTORES son tan normales como tu y yo.

Obviamente no es lo mismo hackear un Cart de NES que un CD de playstation o Software para PC , pero lamentablemente debo comunicarles a todos los que andan por alli , que eso no es 100% cierto. Si no vengan a ver las cosas que dice mi Dreamweaver MX. Esto es porque si aprendes bien los conceptos basicos puedes hackear el texto que se te de la gana.

 

Para empezar debes hacerte con un editor Hexadecimal , yo utilizo HEXED que es un poco viejo y gruñon , pero lo quiero , tu vas a querer hacerte con algo mejor , asi que mejor vete corriendo a Zophar (http://www.zophar.net ) y baja el mas recomendado.

 

Los numeros Hexadecimales son numeros similares a los que tenemos en nuestro querido sistema decimal salvo que hay 16 numeros antes de llegar a 10. Por ejemplo nosotros normalmente tenemos:

0,1,2,3,4,5,6,7,8,9 <---ahi tenemos diez numeros. Si le sumamos uno mas tenemos 10.

El sistema decimal tiene 10 numeros antes de lleguar a 10.

El hexadecimal tiene 16.

Esta es una tabla comparativa:

 

                                    Dec | Hex

                                    ---------

                                      0 | 00

                                      1 | 01

                                      2 | 02

                                      3 | 03

                                      4 | 04

                                      5 | 05

                                      6 | 06

                                      7 | 07

                                      8 | 08

                                      9 | 09

                                     10 | 0A

                                     11 | 0B

                                     12 | 0C

                                     13 | 0D

                                     14 | 0E

                                     15 | 0F

                                     16 | 10

                                     17 | 11

                                     ...|...

                                     159| 9F

                                     160| A0

                                     ...|...

                                     255| FF

 

En los juegos los valores corren desde 00 hasta FF . Lo que nos dice que por cada byte tenemos 256 valores. Todos estos valores definen muchas cosas como la paleta , niveles , graficos , comportamientos , etc.

 

Metodo Simple :

 

Yo abri el ROM con el HEXED y comence a buscar DATOS de texto. Al encontrarlo , por ejemplo :

 

#$°°°°°POINTS°°°°°°°.... <-------Los simbolos realmente significan algo , pero para nosotros simplemente SERA Basura , el borrado accidental , o sobreescribir por encima de ellos a veces es fatal pues estaremos sobreescribiendo sobre el Codigo original del ROM. Lo mas aconsejable es tener una copia de resguardo del archivo e ir probando. Generalmente lo que hice fue:

#$°°°°°PUNTOS°°°°°°°....<------Simplemente reemplace la palabra POINTS por la palabra PUNTOS , que tienen la misma cantidad de letras. Cuando traducimos cadenas de texto mas largas como en ZELDA , o Final Fantasy y deberemos reemplazar mucho codigo con muchos simbolos raros , deberemos respetar lo largo del texto. Yo relleno lo que no utilizo con el simbolo "°" que en muchos CARTS es un espacio en blanco. (El espacio creado con la barra nos arroja un simbolo).

 

Fin del metodo Simple.

 

Parece una estupidez. Pero si experimentas con el PACMAN y cambias la palabra Points por la palabra Puntos es un punto a tu favor...(mi humor no favorece).

 

Metodo no Tan simple

 

Bueno vamos a ponernos un poco mas "inside" en la traduccion o alteracion de texto.

 

Para la mayor parte del tiempo editar el texto es cosa facil , no cuando nos encontramos con informacion comprimida , pero no siempre se encuentran esos CARTS y como ya te he explicado antes prueba con juegos chicos (de tamaño) para no perderte ni echar a perder tu aprendizaje tratando de traducir el FF. Esos son proyectos un poco mas ambiciosos.

Si quieres trabajar en traducciones debo aclararte que hoy en dia casi el 60% de los Roms han sido traducidos por alguien , del japones al ingles del ingles al español del español al portugues y asi. Sugiero como todo que lo hagas para ti o para ayudar a alguien a aprender.

Tu editor debe poder soportar Tablas , el mio lo tiene por lo tanto puedo visualizar las cadenas de texto desde el principio.

Hay dos formas , la estructurada o "le voy a meter mano". Como esta Guia es para principiantes y gente que quiere aprender sin complicarse con tablas , bytes y mas ,no les dire la estructurada:

Debes conocer el juego. Esto es basico , si no no sabremos si el texto que esta ahi esta presente en el juego o es simplemente codigo. Por eso conviene revisar el Rom primero.

Hay muchos que quieren incluir su nombre o alguna cosa asi al principio del juego (la intro) y esas cosas. Simplemente puedo responderte que no necesitaras un HEX simplemente puedes usar las letras que vienen en todos los ROMS y cuando edites los graficos reemplaces uno con letras.

 

La forma mas complicada y que varia en cada caso es construir tablas. Una tabla es un archivo que contiene todas las letras con su equivalente en Hexadecimal. (El problema es que hay juegos que requieren mas de una). E ir trabajando reemplazando directamente los valores hexadecimales.

No sugiero que no hagan tablas ni nada de eso , pero eso hoy en dia esta lejos de mi alcance y mi tiempo no me permite darme el lujo de querer implementar semejantes proyectos. De todas formas logro el mismo resultado cambiando de la otra forma.

Puedes chekear un documento llamado "The Art of Rom HAcking" , pero no informa mucho y nos regala una tabla del Metroid. Esto es lo que dice: (Resumidamente)

 

Lo que explica implica que tengamos el NESTICLE. Deberemos abrir los graficos , View-Patterns ,

y buscar el alfabeto (todos los roms lo tienen) e ir clickeando cada uno de ellos para obtener su valor Hexadecimal.

Por ejemplo tomamos la letra A y aparece 4A , esta informacion deberemos anotarla en otra parte porke es lo que nos va a servir para crear nuestra tabla. Ese valor sera puesto en nuestra tabla. (Es importante que VIEW-MESSAGES este activado)

Entonces cuando abramos nuestro Editor deberemos buscar los valores como por ejemplo A4 que ya sabemos que es una A dentro del juego y por la cual podremos cambiar el TEXTO reemplazandola por otro valor exadecimal por ejemplo B que seria 0B por ejemplo. Es asi la forma como cambian textos largos y con juegos mucho mas complejos.

 

III- LA TABLA DE METROID (Art of Rom hacking)

 

 Izquierda : Valores Hexadecimales Derecha: Numeros , Alfabeto y simbolos mas comunes.

00 0

01 1

02 2

03 3

04 4

05 5

06 6

07 7

08 8

09 9

0A A

0B B

0C C

0D D

0E E

0F F

10 G

11 H

12 I

13 J

14 K

15 L

16 M

17 N

18 O

19 P

1A Q

1B R

1C S

1D T

1E U

1F V

20 W

21 X

22 Y

23 Z

24 a

25 b

26 c

27 d

28 e

29 f

2A g

2B h

2C i

2D j

2E k

2F l

30 m

31 n

32 o

33 p

34 q

35 r

36 s

37 t

38 u

39 v

3A w

3B x

3C y

3D z

3E ?

3F -

8F ©

FF

 

 

*Si quieres y tienes la loca idea de cambiar texto japones por castellano , primero debes saber japones para reconocer el alfabeto japones. Deberias poder copiar de otro ROM (abriendo dos roms al mismo tiempo con Tile Layer) y reemplazar el caracter japones de la A por la A comun.

Esta practica no es muy comun y lleva un verdadero rompedero de cabeza ya que el alfabeto puede tener mas o menos letras. (No se japones asi que no se si el alfabeto es mas grande o mas chico).

 

IV-LA PALETA DE COLORES

 

 

Esta es una de las partes tal vez mas sencillas de todo el proceso del Hacking de Roms y de el uso de Editores Hexadecimales.

Para empezar podemos chekear en Nesticle View-Palette para cambiar la forma en que Nesticle muestra cada color. Por eso aunque salvemos la paleta nuestro juego jamas cambiara los colores.

Por eso deberemos clickear en los colores y chekear si aparece el valor en formato Hexadecimal (chekea si View-Messages esta activado) , esos valores seran tomados nota (por nosotros) para luego realizar una paleta desde 0.

Una vez que hayamos anotado todos los Valores hexadecimales , en orden y comprendido todo , deberemos abrir nuestro Editor Hexadecimal y buscar esos valores con alguna opcion de busqueda de numeros HEX.

La unica forma de equivocarse o que aparezca algo incorrecto de debe a que has escrito mal los numeros , prueba de nuevo una y otra vez.

Luego de que busquemos o estemos en la busqueda pueden pasar diferentes cosas:

-Que no encuentres ningun resultado , lo que nos indica que anotamos mal el valor. Prueba con otro valor.

-Que haya varios valores con iguales numeros.

-Si  no aparece nada , es porque la paleta se encuentra en otra parte.

Debo decirte que no he experiementado mucho tiempo cambiando colores de la paleta , a mi por lo menos no me parece algo realmente “motivante”  , pero bueno si quieren una completa transformacion del ROM deberian leer esta parte del documento.

Una vez encontrado el valor que queremos cambiar deberemos cambiarlo por alguno  de los de la tabla de abajo...muy simple no?

 

00

01

02

03

04

05

06

07

08

09

0A

0B

0C

0D

0E

0F

10

11

12

13

14

15

16

17

18

19

1A

1B

1C

1D

1E

1F

20

21

22

23

24

25

26

27

28

29

2A

2B

2C

2D

2E

2F

30

31

32

33

34

35

36

37

38

39

3A

3B

3C

3D

3E

3F

 

 

V- LAS PREGUNTAS MAS FRECUENTES SOBRE HACKING

 

Hasta este punto ya deberias haber cambiado muchas cosas del ROM , algunos textos y graficos. Dentro del mundillo del Rom Hack hay muchas cosas que se pueden hacer que ire respondiendo a modo de FAQ.

 

Que es un Script??? Y los Scripts Dumpers????

 

Un Script dentro del mundillo del Hack Rom es un archivo de texto que contiene todo el texto que aparece en un juego. Generalmente asociado a los juegos con informacion comprimida. Para lograr extraer este "Script" de un juego podemos utilizar herramientas creadas para ello. Buscar "script Dumpers" es una buena opcion. Lo que hacen estos programas es sacar el Script para que puedas editarlo y volver a incluirlo en el ROM.

Esto te ahorraria muchos pasos y muchos dolores de cabeza. La contra es que debes saber buscar para encontrar uno de ellos =)

Si no encuentras uno adecuado , puedes escribir uno.

 

Como cambiar los colores del juego?

 

Para cambiar los colores del juego debes cambiar la paleta del mismo. Usa Nesticle!. La contra es que todos los graficos utilizan algunos colores en comun , o sea que si cambias por ejemplo el VERDE de los caños de MArio estarias cambiando tambien otros colores verdes. Todo se experimenta y deberias probar. View-palette. (En NEsticle).

Por otro lado , tambien hay otra forma de cambiar los colores del juego y es creando tu propia paleta.

 

Cuales son las herramientas para empezar?

 

Como dije antes son 3. Hay muchas mas como Editores de niveles , los script dumpers , dissamblers y muchas otras cosas.

-Editor Hexadecimal

-Un programa para editar los graficos

-Un Emulador (como verias los cambios???)

 

Como hago para Empezar?

 

Para empezar deberias preguntarte a ti mismo que es lo que quieres hackear. Quiero hackear el Texto? Aprende a usar un Editor Hexadecimal ,   quieres editar los graficos? Conseguite el Tile Layer, quieres crear nuevos niveles? Bajate un programa exclusivo para eso , como Mario Improvement para el Super Mario Bros.

 

Hay herramientas para  Unix , Mac Os , Linux , etc?

 

Que yo tenga conocimiento nah. Lo que puedes usar es un Emulador de Windows.
 
Como hago para Editar Niveles?
 
Hay muchos programas muy populares para diseñar niveles e incorporarlos  a un juego. Si el juego que quieres editar o para el que quieres crear niveles no tiene una herramienta para ello , tu como principiante no tienes mucho que hacer. Salvo corromper el Rom cosa que requiere otros conocimientos y algunas otras cosas (de las cuales no es preciso escribir).
 
Que es una imagen ISO?
 
Una imagen ISO es una imagen extraida de un CD. Como es el ROM con un cartucho. 
 
Como es el hacking de Playstation?
 
Aunque nunca he trabajado en eso ni me interesa , puedo decirte que toparte con un CD y con un Rom son cosas totalmente diferentes , pero algunas cosas basicas pueden ser utilizadas en ambas. Por ejemplo todavia podrias usar un Editor Hexadecimal para cambiar porciones de texto.
En general hay muchos tutoriales y documentos (en ingles) sobre el hacking de playstation y no es mi intencion escribir todavia sobre ello. Mi proximo proyecto es escribir sobre Master  System...si llego a Playstation algun dia sera dentro de mucho tiempo.
 
Como es el hacking de las nuevas consolas? Hacking de juegos de PC?
 
En el mundo del hacking en general hay traducciones y hackings que alcanzan a las maquinas mas modernas como Dreamcast, Gamecube ,  Ps2 y otras. Realmente no tengo la menor idea de cómo o que se utiliza. Solo puedo decir que en cualquier hacking el uso de un Editor Hex. es algo que funciona con todo. Tambien en los juegos de PC.
He hackeado tantos juegos de PCs solamente usando un Editor que me aburriria escribiendo , solo puedo decirte que los juegos mas faciles de crackear son los juegos de computadora , debido a que son escritos para funcionar en una computadora...
 
Cuales son los lenguajes Assembler de cada consola/sistema:
 

Nintendo                         Sega

 --------                               ----

 NES.............6502            Master System........z80

 SNES...........65816          Genesis............68000

 N64.............MIPS            Saturn...............SH2

 Gamecube........MIPS     Dreamcast............SH4

 Gameboy..........z80        GameGear.............z80

 GBA.........ARM7TDMI

 

 Otros                                 Sony

 -----                                    - ---

 MSX..............z80               PSX.................MIPS

 X-Box............x86               PS2.................MIPS

 TG16............6280

 NGPC..........93c141

  
INTRODUCCION AL HACKING DEL SONIDO-(No para principiantes!)

El tema del sonido o la alteracion de sonido es otro tanto mas complejo , incluso para mi y para muchos otros. Si bien hay muchas buenas guias sobre como y como se hace es bastante duro de explicar sin tener que llegar a hablar de Assembler.

Para empezar siquiera deberias leer un poco sobre esto ultimo. Esta pequeña Guia de Introduccion esta basada en varios escritos de Chris Covell.
Para comenzar hay que aprender o saber de antemano algunas cuestiones basicas : Como entender como funciona el 6502. Sin esto sera muy dificil extraer la musica de un Cart en formato NSF.
Tambien es preciso "familiarizarse" con los registro $4000-$4015 que son de sonido a excepcion del $4014 que son para Sprites.

Tambien es bueno tener un par de Emuladores dignos para trabajar , yo recomiendo LoopyNES que tiene un NSF player (reproduce musica en formato NSF) incluido. Y el Fwnes que es muy bueno para trabajar en la Memoria del Rom (busquedas etc). Tambien aquellos gamers clasicos pueden utilizar el Nesticle , que es muy bueno para tracear codigo. Y para volcar la memoria en un archivo.

Tambien es bueno pensar en conseguir un Editor Hexadecimal ( a esta altura ya los debes conocer que dan asco) , un 6502 desensamblador (disassembler) y un 6502 ensamblador (6502 Assembler). Y muchisima paciencia.

Para los que no tienen idea que es un Desensamblador pueden chequear otra guia para una explicacion mas detallada , basicamente con esto puedes dividir y juntar porciones de codigo desde un archivo .NES. O sea desmenuzarlo y volverlo a juntar. Para ambos es muy bueno visitar el lugar usual de siempre http://www.zophar.net .

Bueno para empezar vamos a abrir el Rom (*.nes) en un editor hexadecimal , y buscaremos el sonido en alguna parte del Rom. Yo generalmente busco en $8D$15$40 , que en lenguaje assembler podemos escribir STA $4015. (Recuerden lo anterior dicho).

Generalmente esta parte (o seccion) del codigo nos permite “encender/apagar” el sonido , que es la primera parte de la rutina de sonido del NES , por lo tanto comenzaremos por alli a nuestra busqueda mas profunda.

Ahora la parte mas dura es tracear el codigo para chequear realmente donde comienza la sub-rutina del sonido.

Hay un par de cosas que debo recordarte : En juegos de mas de 32k los mappers son usados para llenar el ROM , en muchos casos nos encontraremos con nuestra informacion del sonido desparramada por diversas partes. Tenemos que tomarnos el trabajo de separarlo. Pero tambien usualmente encontraremos el Sonido puesto entero en una sola parte facilitanto enormemente el trabajo.

Usualmente el codigo del sonido residen en las siguientes direcciones : $8000-$BFFF. Y el codigo del juego se encuentra en $C000-$FFFF. Esto nos quiere decir que deberemos inspeccionar cada 16k del Rom para encontrar el sonido. Deberias chekear el header para ver si la informacion esta alineada correctamente.

Si tu buscas en la direccion $4015 en el Editor y no aparece nada , sigue buscando , no debe ser el unico lugar donde hay sonido , y muchos juegos no estan limitados a poner sonido cada 16k de informacion.

De todas formas si estas de suerte , deberias copiar los 16k enteros de informacion y trasladarlos a otro archivo , usualmente llamado “*.mus”. O sea ese el nombre que debes ponerle al archivo.

Ahora bien podemos usar el disassembler para desarmar el archivo *.mus y comenzar a probar las rutinas , testear , modificar , etc. Si no sabes Assembler esto no ocurrira nunca.

Si sigues buscando por el ROM por las rutinas INIT and PLAY: (generalmente la rutina de sonidi PLAY es llamada en el medio de los juegos como NMI). El vector para la rutina NMI se encuentra en $FFFA-$FFFB en la memoria del NES , y esto es exactamente 5 o 6 bytes antes de que los 16k de informacion terminen.

La ubicación de la rutina puede variar y encontrarse en ciertos lugares como : $0700 , $6000 , o despues de $8000.

Cuando hayas encontrado algo que crees que es la rutina NMI , el codigo de la rutina deberia comenzar con algo como “PHA, TXA, PHA, TYA, PHA, etc.." lo que indica el comienzo de la rutina.

Y ahora debes comenzar a  buscar y copiar a otro archivo *.mus. La busqueda de rutinas , y el uso de un Editor para Eso es algo un poco complicado si no tienes idea de Assembler ni de la estructura del sonido de la NES. Hay otra forma que puedes usar como la siguiente:

(Asumimos que usas Nesticle!)

1-Abre a tu victima (Nes-Rom)

2-Activa los mensajes – View-Messages

3-Utiliza el comando “Pause Emulation” , Alt+P (No pauses apretando Start)

4-Vete hasta el Debug y pulsa VINT

5-Aprieta Ctrl+T para tracear el codigo. Se vera en la tabla de Mensajes porciones de codigos y valores Hexadecimales.

6-Sal del Debug y dale en Save VRAM.

Quedate con la porcion arriba de los 32k. Esta debe ser la porcion del codigo del sonido.

Bueno generalmente los otros procesos a seguir son : Limpiar el codigo y dejar solo el sonido , y reproducirlo en un NSF player para ver si es correcto. Luego puedes incluir esa porcion en un DEMO o arreglar la cancion y volverla a incluir en el juego.

Esto es realmente dificil de explicar sin tener que pasar primero por lecciones de Assembler , y sobre rutinas. Alla afuera hay mucha informacion. Debo mencionar que me estoy basando en formas de la vieja escuela para hackear esto. No tengo conocimiento sobre Software explicito , pero si hay uno muy bueno en Zophar llamado Romsearcher que directamente busca las rutinas del sonido dentro del codigo.

El hacking o Ripping de Sonido es una parte muy extensa que muchos prefieren olvidar cuando se dan cuenta que es un trabajo de hormiga. Recomiendo generalmente leer The NES Sound Ripping Guide escrita por Chris Covell que es muy buena y tiene mucha informacion. Esto fue simplemente una introduccion.

Si te interesa el trabajo de Chris tanto como a mi chequea http://mypage.direct.ca/c/ccovell y no te pierdas la vida en japon!!!

 

Codigo Fuente de un reproductor NSF en Assembler:

Este reproductor nos permite reproducir los archivos NSF (la musica del NES). Decidi incluirlo en mi documento (que es de por ya demasiado extenso para lectores perezosos) para que tengan una corrosiva idea de los complicado que es el Assembler. Y cual es su estructura principal.

 

;*Incio del codigo fuente*

 

int_en EQU #$0100

sng_ctr EQU #$0101

pv_btn EQU #$0102

 

INIT_ADD EQU #$8003        ;Direccion del INI

PLAY_ADD EQU #$8000        ;Direccion PLAY

START_SONG EQU #$00        ;Cancion de inicio

MAX_SONG EQU #$FF          ;Numero maximo de canciones

 

   PROCESSOR 6502

 

;codigo

 

   ORG $C000                ;Origen del codigo del reproductor

 

.start    sei

          cld

          ldx #$ff

          txs

 

.w_vbi    lda $2002

          bpl .w_vbi

 

          lda #$0

          tax

 

.ci_lp    sta $0000,X

          sta $0100,X

          sta $0200,X

          sta $0300,X

          sta $0400,X

          sta $0500,X

          sta $0600,X

          sta $0700,X

          inx

          bne .ci_lp     ;limpiar Ram

 

          lda #$80

          sta $2000

          lda #$00

          sta $2001  ;Setear el PPU para interrupciones y deshabi

                     ;litar la pantalla

          lda #$00

          sta $2006

          sta $2006

          tax

.PATCLR   sta $2007        ;Limpiar el carro 0.

          inx

          cpx #$10

          bne .PATCLR

 

 

          lda #$01

          sta $2006

          lda #$00

          sta $2006    

 

          ldx #$00

          ldy #$00

.PATLoad  lda .PAT,X

          sta $2007

          inx

          iny

          cpy #$08      ;Salvando 8 bytes.

          bne .PATLoad

          ldy #$00

          sty $2007     ;Salvando blank gfx.

          sty $2007

          sty $2007

          sty $2007

          sty $2007

          sty $2007

          sty $2007

          sty $2007

          cpx #$80

          bne .PATLoad

 

          lda #$3F

          sta $2006

          lda #$00

          sta $2006

          lda #$0E

          sta $2007

          lda #$30

          sta $2007     ;Seteando la Paleta

 

          lda #$00

          sta sng_ctr

 

          lda #%00001110

          sta $2001

 

          lda #START_SONG         ;Comienzo de la cancion

          sta sng_ctr

          jsr INIT_ADD     ;Tonada inicial

          LDA #$01

          sta int_en

 

.k_loop   jsr .r_btn

          and #$10

          beq .k_loop

 

          inc sng_ctr

          LDA #MAX_SONG         ;Maximo de Canciones

          cmp sng_ctr

          bne .no_scr

          lda #$0

          sta sng_ctr

 

.no_scr   lda #$0

          sta int_en

          lda sng_ctr

          jsr INIT_ADD

          lda #$01

          sta int_en

          jmp .k_loop    ;Chekeando el boton

 

 

.interrupt pha

           txa

           pha

           tya

           pha

 

           lda #$20

           sta $2006

           sta $2006       ;Punto de la tabla de nombres

 

           lda sng_ctr

           lsr

           lsr

           lsr

           lsr

           ora #$10        ;Punto de la chr derecha

           sta $2007

           lda sng_ctr

           and #$0F

           ora #$10

           sta $2007

 

           lda #$00

           sta $2006

           sta $2006

           sta $2005

           sta $2005

 

           lda int_en

           beq .no_ints

           jsr PLAY_ADD    ;Tocar tonada

 

.no_ints   pla

           tay

           pla

           tax

           pla

           rti

 

.r_btn     ldy #$08      ;leer el teclado

           ldx #$01

           stx $4016

           dex

           stx $4016

 

.r_bit     lda $4016

           ROR

           txa

           ROL

           tax

           dey

           bne .r_bit

 

           cmp pv_btn

           beq .no_chg

           sta pv_btn

           rts

 

.no_chg    lda #$0

           rts

 

.PAT dc.b  #$38,#$4C,#$C6,#$C6,#$C6,#$64,#$38,#$00

     dc.b  #$18,#$38,#$18,#$18,#$18,#$18,#$7E,#$00

     dc.b  #$7C,#$C6,#$0E,#$3C,#$78,#$E0,#$FE,#$00

     dc.b  #$7E,#$0C,#$18,#$3C,#$06,#$C6,#$7C,#$00

     dc.b  #$1C,#$3C,#$6C,#$CC,#$FE,#$0C,#$0C,#$00

     dc.b  #$FC,#$C0,#$FC,#$06,#$06,#$C6,#$7C,#$00

     dc.b  #$3C,#$60,#$C0,#$FC,#$C6,#$C6,#$7C,#$00

     dc.b  #$FE,#$C6,#$0C,#$18,#$30,#$30,#$30,#$00

     dc.b  #$7C,#$C6,#$C6,#$7C,#$C6,#$C6,#$7C,#$00

     dc.b  #$7C,#$C6,#$C6,#$7E,#$06,#$0C,#$78,#$00

     dc.b  #$38,#$6C,#$C6,#$C6,#$FE,#$C6,#$C6,#$00

     dc.b  #$FC,#$C6,#$C6,#$FC,#$C6,#$C6,#$FC,#$00

     dc.b  #$3C,#$66,#$C0,#$C0,#$C0,#$66,#$3C,#$00

     dc.b  #$F8,#$CC,#$C6,#$C6,#$C6,#$CC,#$F8,#$00

     dc.b  #$FE,#$C0,#$C0,#$FC,#$C0,#$C0,#$FE,#$00

     dc.b  #$FE,#$C0,#$C0,#$FC,#$C0,#$C0,#$C0,#$00

 

;llenar los espacio vacios

 

    ORG $FFFA,0

 

;vectores

 

 dc.w .interrupt

 dc.w .start

 dc.w .interrupt

 

;*Fin del codigo fuente*

 

 

Este codigo fuente pertenece a Kevin Horton , simplemente pasenlo a un archivo *.asm y compilenlo!! Es totalmente libre y quienes programa en Assembler tienen una buena idea para comenzar a trabajar en Audio-NES en base a este codigo.

 

SIGUE EL HACKING EN LA RED!

 

Bueno , estos son algunos links que he incluido para todos aquellos que quieren llevar mas alla sus habilidades en el hacking de Roms. Yo no me considero un hacker de roms , ni pretendo serlo , simplemente he explicado como una de las cosas que mas entusiasman a los novatos son simplemente cosas muy faciles de hacer.

 

Informacion General sobre el Hacking de Roms:

 

 The Repository - http://www.romhacking.com

 Zophar's Domain - http://www.zophar.net

 CTC - http://www.confederatedtranslationcompany.com

 

 

 Archivos de Traduccion

 

 The Whirlpool - http://donut.parodius.com

 RPGd - http://rpgd.emulationworld.com

 

 

 Hackings de Traducciones y otros

 

 Acmlm's ROM Hack Domain - http://acmlm.overclocked.org

 Challenge Games - http://www.cg-games.net

 RuSteD ROM Hacks - http://bmf.rustedmagick.com

 

 

 Paginas Japonesas de Hacking

 

 Japanese Online - http://www.learn-japanese.com

 Jim Breen's Page - http://www.csse.monash.edu.au/~jwb/japanese.html

 The Japanese Page - http://www.thejapanesepage.com

 Japanese Online - http://www.japanese-online.com/

 

 

 Otros sitios interesantes

 

 Suicidal Translations - http://www.pigtails.net/ST

 Anywayz... 21st Century Parasite - http://www.anywayz.org


PEQUEÑO DICCIONARIO DE NES

 

#

6502 asm – Es el tipo de Assembler que el microprocesador de NES utiliza.

65c816 asm – Es el tipo de Assembler que utiliza el Microprocesador de SNES. 65c186 es en esencia un super 6502 multi-lenguaje. Son muy similes , pero por supuesto , el 65c186 tiene muchisimas mas implementaciones.

8x16 Sprite MODE : Es un modo especial de Sprite de NES , en el cual se cargan los sprites a modo de piezas y que estan incluidas en la tablas de patrones (Pattern Table). No es igual al de 8x8.

A

Atributes :Atributos. Los colores que las piezas utilizan , una de 4 paletas tiene que ser utilizada para mostrar algo en pantalla , entonces una de ellas aplicada a las piezas se llama Atributos.

ASCII : American Standard Code for Information Interchange. Los editores Hexadecimales tienen una ventana en la cual traducen los numeros hexadecimales en ASCII , que algunos juegos utlizan para los valores de texto.

ASM : Assembler. El codigo utilizado por los juegos de NES (y otros por supuesto),  las abreviaciones como por ejemplo LDA , STA hacen que este lenguaje sea un poco mas facil de aprender. Assembler esta a 1 paso de “codigo maquina”.

B

Binary : Binario , su base es 2. Solo 2 numeros son utilizados en este sistema de numeros : 0 y 1.Cuando te vas mas alto

que 1 el digito se convierte en 0 , y el siguiente digito se incrementa. Cada digito que viene despues del primero es mayor que el mismo y va incrementando. El primer digito significa 1 , el segundo 2 , el tercero 4 , el cuarto 8 , el quinto 16 , el sexto 32 , el septimo 64 , el octavo 128 , etc. En NES solo tienes que lidiar con lenguaje binario de 8-digitos , como : 00101110 = 46, 10001101 = 141, 10100010 = 162.

C

CHR : Graficos.

Compression : Compresion. La compresion es simplemente tratar de hacer que datos o informacion sean lo mas pequeña posible.

Entonces podremos insertar mas informacion en el mismo espacio que teniamos antes. Esto es comunmente usado en Graficos y Niveles (en el NES).

D

DGFX : Graficos Mostrados. Esto se refiere a esos raros casos cuando los graficos se dispersan por la pantalla , como RC-pro Am Ballon Fight , la pantalla se compone de 2 cosas : Una asociada al clipping , y la otra que estamos mirando.

Debugger : Herramienta incluida o no en un Emulador el cual nos permite tracear codigo , realizar saltos y muchas otras cosas interesantes que escapan del ojo del novato.

G

GB Graphics Format: Es en esencia el formato grafico de la NES.

H

Hex : Abreviatuara de  Hexadecimal.

Hexadecimal : Base 16. Hay 16 numeros utilizados en este sistema numerico : 0-9 y A, B ,C , D , E, F.

I

IPS: Son las letras de International Patching System. (Sistema internacional de Parchado). Los parches IPS se utilizan para distribuir Hacking de Roms de forma legal. Estos contienen la diferencia entre el Rom original y el hackeado.

Lo que hace este Parche es alterar el juego original y transformarlo en un juego hackeado. Se lo utiliza para distribuir el Hacking sin la utilizacion del ROM. Los parches siempre empiezan con este numero 5041544348. Este es la cabecera o “header” , en ASCII se deletra PATCH. Luego de la cabecera viene los datos actualizados. Los primeros 3 bytes luegos de la cabecera son los bytes de locacion. Estos indican donde el cambio se va a efectuar. Los 2 bytes siguientes a esto indican cuantos bytes en el rom van a ser modificados; 0001 significa 1 byte , 0002 significa 2 bytes y asi. 0000 se llama a la compresion RLE , pero generalmente no se usa. El primer byte de datos se usa por cientos; 0001 significa 256 bytes. Siguiente a esto viene la cadena de valores que reemplazan a los bytes en la localizacion que ya fue determinada. El tamaño de la cadena de valores varia dependiendo de los ultimos 2 bytes anteriores. Despues de eso,  el formato sigue repitiendose (excluyendo la cabecera) hasta el fin del archivo , donde se escribie 454F46 o mejor dicho EOF – End of File.

M

Macros : Bloques de 32x32 pixels utilizados para crear niveles.

Micros :  Bloques de 16x16 pixels utilizados para crear niveles.

Mario : Clasico juego en el cual se basa toda esta escena. Personaje principal de Nintendo y personaje de cientos de videojuegos.

N

Nes Colors : Colores de la NES. Realmente no existe colores definidos , si hay algunas paletas que se acercan muchisimo , deberias chequear las paletas que puse mas arriba.

Nintendo : El microsoft de las Consolas Recreativas. Pero a su vez creadora de la mejor consola de todos los tiempos!.

P

Paleta : Son los grupos de colores que carga la consola. En Nes existen 4 grupos para el fondo y 4 para los sprites.

Cada grupo o set contiene 4 colores. Para la SNES la paleta tiene 16 colores.

Pattern Table : Tabla de Patrones. Se usan en los juegos con graficas en 2D. La NES tenia 2 tablas de estas , una para los fondos y otra para los Sprites. El Snes tiene 4.

Propiedades : Se lee y entiende como Properties. Utilizadas y asociadas a los Blocks , o bloques . Estos pueden tener propiedades como solido , agua , aire ,  nubes , etc. Designado a los Editores de Niveles.

R

Ram : Random Access Memory. Es informacion que puede ser cargada por el computadora y que se puede manipular .

RLE : Rule Lengt Encoding. Relacionado a la Compresion.

Rom : Read only Message (o memory dependiendo del caso). Informacion que no puede ser manipulada  , solo leida por una determinada maquina.

S

Script : El Script contiene textos de juegos. Para su modificacion. Existen programas llamados Scripts Dumpers que se toman el trabajo de extraer el texto de los videojuegos y meterlos en un archivo , ese archivo se llama Script. (Hay muchas mas definiciones pero escapan de NES)

T

Tiles : O piezas , cada Tabla de patrones tiene 256 piezas. Cada pieza es un bloque de 8x8 pixeles. Usado por los Sprites y los fondos de pantalla.

TSA : Tile Squaroid Assembler , referido a algunos juegos y al developing.

V

VSSA : Variable Size Structure Arrays.

Z

Z80 : Microprocesador utilizado por el Game boy.

Zelda : Tal vez el mejor juego creado para una consola en toda la historia de la humanidad..exagere?

 


BIBLIOTECA DE LINKS PARA SEGUIR ESTUDIANDO!

Esta "biblioteca" de links y contactos fueron creadas mas que nada para ayudar a otras personas que tal vez no estan interesadas en el Developing de NES y busca informacion , emus , carts , etc de otras consolas. Yo mismo soy un entusiasta activo de casi cualquier plataforma que he tenido en mis manos y por eso decidi publicar todos mis links , me hubiese gustado escribir un poco sobre cada plataforma , especificaciones , etc , pero la verdad es que de algunas tengo un 0% de conocimiento , entonces decidi simplemente incluir los links. Cuando hayas juntado valor e informacion , podriamos trabajar juntos en algun proyecto. Lamento la desprolijidad del texto pero bueno , espero que les sirva. La primera vez que escribi esta lista (esta es la tercera!) habia tambien puesto nombres de personas relacionadas al developing , webmasters , dumpers , etc de cada plataforma. Por una cuestion de que algunas personas NO PIENSAN COMO YO decidi quitarlas , porque hay gente a la que no le GUSTA QUE LES ESCRIBAN o HAGAN PREGUNTAS. Si por mi lo fuera las incluiria asi te ahorrarias el trabajo de ir juntando direcciones para enviar Mails. De todas formas en c/u de esas paginas hay contactos por doquier.


Coleco Vision La coleco fue una computadora/consola muy popular en su tiempo , si bien no tengo mucho material relacionado puedes escribirme para que te lo pase , realmente seria muy gratificante encontrar documentos en Castellano sobre la Coleco. Debo contar que los Roms son excelentes! y no merecen desperdicio.El Development de la Coleco hoy en dia esta bastante Elaborado , aunque debo decir que no todas las Roms que poseo funcionan 100% , aun falta mucho para que los Emus de Coleco sean 100% funcionales. Algunos juegos interesantes que te recomenadaria bajar son : Bump N Jump , BeamRider , Pitfall , Dukes of Hazzard.

The Virtual ColecoVision Homepage:
http://www.geocities.com/SiliconValley/Vista/8640/VColeco.html
Norman G. Sippel's ColecoVision Homepage:
http://www.infinet.com/~ngsippel/cv.html
Historias de Videojuegos:
http://www.sponsor.net/~gchance/
La ColecoVision FAQ:
http://www.infinet.com/~ngsippel/cv/cv-faq.html
Marcel de Kogel's Homepage (autor de Cosmo Fighter y otros demos para la Coleco)
http://www.komkon.org/~dekogel
Marat Fayzullin's ColEm Homepage: Marat tambien escribio y desarrollo algo de Colecovision , chequealo en :
http://www.komkon.org/fms/ColEm
http://www.komkon.org/~dekogel Virtual Coleco Web , cientos de documentos , carts , etc.
Dave's Videojuegos clasicos- Coleco ROMs:
http://www.davesclassics.com/colecoroms.html
El archivo de Coleco
http://www.sponsor.net/~gchance/ColecovisionStuff/Docs/docs.html
Coleco Corner (foro de mensajes)
http://www.pce.net/anthony/colcorner/
Colem Sites , Sitios del Emulador COLEM en sus distintas versiones
WWW:
http://www.komkon.org/fms/ColEm/
WWW (DOS):
http://members.xoom.com/ColEmDos/
WWW (Mac):
http://emulation.net/coleco/
http://lsewww.epfl.ch/~felber/IO-56/ Copiadora de Cartuchos de Pascal Felber
Libreria Allegro para la creacion de videojuegos
ftp://x2ftp.oulu.fi/pub/msdos/programming/djgpp2
Codigo fuente y binarios del DJGPP
available at
http://www.delorie.com

Amstrad Me gustaria mucho investigar un poco mas sobre Amstrad , si tienes mas informacion que la que yo pude conseguir en estos links , por favor enviamela!

http://www.classicgaming.com/caprice Pagina Principal del Emulador Caprice
Miles de juegos de Amstrad , gratis!!!
ftp://ftp.nvg.unit.no/pub/cpc/
http://www.stud.enst.fr/~pitrou/ La pagina oficial de Yage
http://www.work.de/nocash/cpc.htm Pagina Oficial de NOCASH Emulator.


Apple II No me considero un Fan de Apple , toda mi vida use PC , salvo un par de veces que tuve que usar una MAC , pero prefiero (por una cuestion de seso nada mas) el PC , pero si quieres probar MAC aqui tienes varios Emuladores , mas adelante tambien Emuladores que pueden correr OSx.

http://www.geocities.com/SiliconValley/Lakes/4414/A4W.HTM Sitio oficial de Applewin
ftp://ftp.simtel.net/pub/simtelnet/win3/util/a24w_221.zip Apple Roms
http://www.angelfire.com/tx/Apple2 Informacion , zips y mucho mas
http://purl.org/net/a4w Emuladores de Apple 2
http://www.gamepen.com/gamewire/classic/classic.html Juegos clasicos de Apple.
http://www.csun.edu/~hbbuse08 Cientos de Emus, Roms , Docs y muchisimo mas.
ftp://users.aol.com/davidells/ApplePC/ Sitio oficial de ApplePC
ftp://robot.asimov.net/pub/apple_II/emulators/applepc/ Descarga ficheros , Roms y software original.
http://www.geocities.com/SiliconValley/Bay/3577/appler.html Pagina Oficial de Appler
ftp.apple.asimov.net Info , docs , roms , etc.
www.axp350.ncu.edu.tw Cientos de revisiones y mucho mas.
http://www.psn.net/~kentd/kegs/ Kent´s home page!

Atari Tal vez la consola hogareña mas legendaria. Tambien me encuentro "atascado" con un Doc de Atari que escribo. Si quieres mas info , enviame un Mail , pero en los links posiblemente (si sabes buscar) toda la info que necesitas. Hay una version del Stellax que puedes encontrar en una de estas paginas que contiene 5000 roms y pesa menos de 4MB. Debo aclarar que en este listado se encuentran links a paginas de Atari de todos los tipos de consola , desde el ST hasta el Jaguar.

http://www.geocities.com/SiliconValley/9461 Pagina oficial de Virtual VCS
http://www.whimsey.com/z26 Roms y mucho mas de Atari
http://joy.sophics.cz/ Docs , Roms y Emuladores
ftp://ftp.sophics.cz/pub/Atari800/ Buscabas info para la Atari800?
http://atari800.atari.org/ La pagina oficial de Atari800
http://www.davesclassics.com/ Miles de roms , emus , abandonware.
ftp://ftp.synthcom.com/pub/emulators/cpu/make6502.zip Distribucion oficial del Atari7800
OFFICIAL JAGULATOR WEBSITE - Website del Emu de Atari Jaguar.
http://www.jagulator.com
http://www.personal.psu.edu/users/b/c/bch132/lynx.html Info sobre Atari Linx y Emus.
HANDY HOMEPAGE , otro Emu para Atari.
http://www.esplexo.co.uk
http://www.geocities.com/SiliconValley/Byte/4242/lynx/ Roms de Atari Linx
Portal de Atari
http://lgd.fatal-design.com
http://www.emulators.com Miles de Emus , roms , docs , etc.
http://steem.atari.org/ Pagina oficial de Steem
http://www.blimey.strayduck.com/ Atari Docs
Bug reporting de Atari
http://www.blimey.strayduck.com/bugs.htm
Los mejores juegos de Atari
http://www.blimey.strayduck.com/games.htm
Downloads para Atari
http://www.climatics.com/
Downloads , revisiones , cajas originales
http://www.atarist.com/
Dbug Download
http://dbug.atari.org/
Tapas de juegos originales
http://audio.ecs.soton.ac.uk/stformat/
Muchisima informacion!!!
http://www.cus.org.uk/~alexh/
Todos los juegos de Atari , la lista oficial y todos para bajar.
http://www.atarigames.net/
Los Dumpers y todos los juegos que han pasado a codigo binario para bajar
http://atarist.users5.50megs.com/thegrey.htm
Atari Emulation Support
http://www.geocities.com/SiliconValley/Park/9967/atari.html
Musica del Atari convertida a MIDI para bajar
http://sites.netscape.net/timconrardy/
Historia de las computadoras Atari
http://www.atari.org/
La primera revista online sobre Atari
http://www.myatari.net/
La sociedad de los Hackers Muertos
http://www.dhs.nu/
Atari Links , miles de links de Atari
http://www.geocities.com/SiliconValley/Bay/8745/pages/misc.html
Demos de Atari (juegos creados por aficionados)
http://www.rippedoffdemocds.com/
Sinc Emulator
http://www.lysator.liu.se/~celeborn/sync/
http://www.complang.tuwien.ac.at/nino/index.html Stonx Emulator para Atari.

BBC MICRO Necesito urgentemente mas info sobre BBC micro , por favor enviarla a benix_sonico@yahoo.com.ar

http://www.nvg.unit.no/bbc/bbc.html BBC LIVES!
ftp://ftp.nvg.unit.no/pub/bbc/rom/Watford/fs/DFS-1.44.rom Roms para el BBC

Commodore 64 Mi segunda computadora , ayer y hoy. Todo lo que necesitas para Emular a una de las mejores computadoras de todos los tiempos.

http://www.computerbrain.com Pagina oficial de Computer Brains
http://www.cs.cmu.edu/~dsladic/vice/vice.html Pagina oficial de VICE
http://amiga.nvg.org/uae/index.html Info sobre Amiga , Roms , Emus , downloads!
http://www.wh1.tu-dresden.de/~sol/acorn.shtml Risc PC port
http://www.wh1.tu-dresden.de/~sol/acorne.shtml Risc Mac port
http://www.kuai.se/~bellman/html/xfreeapps.html Downloads totalmente gratis!!
http://www.pratique.fr/~jblancha/ Docuementos y Roms
http://www.jackbox.com/users/ggoedert/dosuae/index.html C64 Docs
ftp://ftp.std.com/pub/jrs/Frodo-WIN32-4.0.2.zip Frodo Emulator Homepage
http://www.Uni-Mainz.DE/~bauec002/FRMain.html Downloads!


Final burn- Capcom Emulator Excelente Emulador de juegos de Capcom , en la actualidad (que yo tengo conocimiento) iba por la version Alpha consiguiendo meter cada vez mas juegos nuevos. Chequea en Internet por Callus , otro excelente Emu.

WWW.FINALBURN.COM

Hive Hive es un Clon de MAME que soporta unos casi 50 juegos. (En español)

Chekear la pagina de MAME

Impact Si tienes mas info sobre Impact , enviamela benix_sonico@yahoo.com.ar

http://www.impactemu.com Todo sobre Impact

JUNO : Con juno se pueden correr juegos de Arcade , tipo Juno first , circus charlie , Rtype etc.

http://www.kcbbs.gen.nz/users/chrish/ Pagina oficial de JUNO
http://www.rtype.com/ Rtype Homepage
http://www.irem.co.jp/ PAgina japonesa de Arcades


Jupiter ACe : Es la maquina original que corria el Frogger , lunar ball , etc. De los primeros arcades!

http://users.aol.com/autismuk/ace/faq.htm FAQ sobre Jupiter
http://members.aol.com/boldcomp/page.htm Roms de Ace
http://www.viskit.com Downloads de ACE

MAC : Emuladores que corren MAC en PC. mmmm...

La pagina oficial de Bassilisk II
http://www.uni-mainz.de/~bauec002/B2Main.html
http://www.emulators.com Cientos de Emus!
http://www.softmac2000.com Software para MAC
http://www.emulators.com/demo/stpbystp.htm Demos para MAC

MAME : Multiple Arcade Machine Emulator : Emula Arcades , es un sueño hecho realidad!!! Si no tienes MAME apestas!

http://www.mame.org Pagina oficial de los developers de MAME
http://www.mameworld.net Todo sobre MAME
http://www.mame.net Pagina oficial de MAME
http://snespad.emulationworld.com (para conectar josticks de SNES)
http://www.debaser.force9.co.uk/ccmame (Para conectar josticks de Playstation o N64)
http://www.classicgaming.com/mame32 Artpacks y cosas para MAME
http://arcadeart.emuunlim.com/ Cabinets and flyers
www.arcadeflyers.retrogames.com Flyers , pics , etc.
http://pluto.beseen.com/boardroom/q/18365 foro
http://www.geocities.com/TimesSquare/Lair/8706/mame32.html Pagina de uno de los Developers
http://www.mame.dk Todas las ROMS!!!

Nintendo Game Boy El hermano mas pequeño de la familia de Nintendo , si no has jugado Pokemon para GB no sabes lo que te pierdes!!!

www.tomaatnet.nl/~steendijk Emus de Game boy
http://www.emumania.com/cbeboy Pagoina oficial de Cbeboy
http://sz.redbit.ne.jp/~q-_-p/ Pagina oficial de Redbit
http://emu.myrice.com downloads de Game boy
http://laststar.yeah.net Roms a morir!
http://www.playepic.com/kervin Pagina oficial de Kervin , desarrollador de Emus.
http://www.angelfire.com/sc/ehaemusis Emus
http://www.nd.edu/~jgeffre/gbe.html homepage de GBE
http://www.nd.edu/~jgeffre/wip.html Pagina en construccion sobre Game boy
http://www.pgaze.demon.co.uk.Downloads!
http://www.work.de/nocash/ nocash Emu GB
http://www.billyjr.com/smygb/ MyGB otro Emu para PC
http://members.xoom.com/SynKKnyS/ SynGB otro Emu.
http://www.emuhq.com/vboy VBoy , downloads , roms , emus.
http://www.geocities.co.jp/SiliconValley-Oakland/4496/ docs , techs , y mucho mas.

Nintendo Game Boy Advance El nuevo engendro de Nintendo , 16 bits en un portatil.

Rude_Hack:
http://ahe.cjb.net/
PC Advance:
http://www.pcadvance.cjb.net/
http://www.komkom.org Marat Fayzullin Home page
http://vboy.emuhq.com Emuhq es un portal de Emulacion

Nintendo 64 64 bits , muy poco estable (en mi PC) , pero podria funcionarte a ti. Salvo el Mario 64 , el resto de los juegos son muy lentos.

http://www.emuhq.com/1964 Pagina oficial de Emuladores
Download Zilmar Spec Plugins
http://www.emulation64.com/plugin64.htm Plugins!!!
http://spinal.emulation64.com/plugins/plugins.htm
http://daedalus.boob.co.uk/ Pagina oficial de Daedalus
http://n64vm.emuhq.com/ N64 Docs
http://www.emu-efnet.com/ foros de discusion
http://www.tsoft.com/~faraway/nincest/nincest.html Nincest Home Page
http://www.emulation64.com/ikonboard/forums.cgi?forum=17 Docs , foros , roms , etc.
http://www.emuhq.com/truereality/windows/index.htm FAQ

Nintendo SNES Estoy bastante interesado en conseguir material sobre SNES , e-mails a benix_sonico@yahoo.com.ar

news://comp.emulator.misc Foros
news://comp.emulator.game.consolas foros
http://www.gsyc.inf.uc3m.es/~calb/nlke/index.html Emus y docs
http://www.zsnes.com Pagna oficial de Zsnes


Nintendo virtual boy Una consola que no tuvo mucho exito , debido a la dificultad para conseguir los juegos , soportaba Mario Tennis , Mario clash y muchos otros!

http://dana.ucc.nau.edu/~dbt Pagina oficial del Emulador de Virtual boy
http://www.emuunlim.com/VirtualE downloads
http://members.xoom.com/virtuale98 Roms y DOCs.


Oddysey - La primer consola de videojuegos-pong...remember?

http://superpong.8m.com/odyemu.htm Pagina oficial de ODYEMU

Pc Engine - turboGrafx - Emulacion de Arcades -


http://www.deep.163.net Deep Emulator
http://www.hu6280.com Pagina oficial de Hu680 Emulator
http://hugo.consolemul.com Portal de Emulacion y pagina oficial de Hugo Emulator
http://www.emuunlim.com/hugo Pagina inglesa de Hugo!
Http://www.hugo.fr.fm Pagina Francesa
http://www.magicengine.com/ Downloads
www.multimania.com/pceaudit/ PCE Emulator
http://www.geocities.co.jp/Playtown/2004/ Developing Page
http://www.geocities.co.jp/SiliconValley/7052 Docs y mucho mas

Raine -Es un Emu basado en los juegos para ARcade de -Taito- , muy bueno , compatible con MAME tiene muy buenas opciones y muy buenos juegos, recomiendo : Puzzle Bobble , Bubble Bobble , Street 64 y muchos mas.-


http://www.bubandbob.com/ Bubble histories Webpage
http://www.cs.uct.ac.za/~stjasink/ri/ Rainbow Islands Web page
http://194.177.201.73/members/andrew/nzs/newzeal.txt New Zeland (el juego) home page
Atani Win32 port
http://www.atani-software.net/
http://www.rainemu.com/linux/ Raine Linux
http://etc.home.dhs.org/ downloads . Roms.
http://emustatus.rainemu.com/games Juegos de Raine
http://sourceforget.net/projects/raine Unete al Equipo de Raine!!!
http://www.logiqx.com/HowTo/HowTo.shtml Como compilar Raine
http://www.rainemu.com/savegame/ Saves!
ARCADE ROMS FROM JAPAN:
http://start.at/j-rom/ Todas las Roms!
ARCADE ROM HEAVEN:
http://www.arcadeheaven.com ++++Roms++++
BUB AND BOB:
http://www.bubandbob.com/ bubble bobble y + juegos de Taito
EMUCAMP:
http://www.emucamp.com/ Portal de Emulacion
EMULATORS UNLIMITED:
http://www.emuunlim.com/ Portal de Emulacion
JOSEQ'S EMUVIEWS:
http://www.emuviews.com/ noticias y Foros
RETROGAMES:
http://www.retrogames.com/ Portal de Emulacion
ROMLIST:
http://www.romlist.com/ Lista de Roms
STARSCREAM:
http://www4.ncsu.edu/~nscorlet/star/ Neill corlett's Assembler
SYS2064:
http://www.sys2064.com/ Portal de Emulacion
TAITO JAPAN:
http://www.taito.co.jp/ chekeen la zona de "Historias de Arcade"
TEAM JAPUMP:
http://www.rainemu.com/japump/ Romdumpers!!!
CLR MAME: http://www.mameworld.com/clrmame/ Rom manager con soporte para Raine
ROMBUILD: http://www.logiqx.com/ Constructor de Roms (Assembler)
ROM CENTER: http://www.romcenter.com/ Roms manager con Soporte para Raine.

Sega Game Gear Game gear fue una de mis consolas favoritas. En una pequeña consola portatil tenias miles de juegos y horas de diversion aseguradas. Recomiendo : Baseball 2 , Rally Baggster , Bart VS Space Mutants.


http://bto8.smspower.org (Casiopea)
http://members.xoom.com/_XMCM/sega2001 (Toshi)
http://village.infoweb.ne.jp/~fwik0826/ (Yoneda Mitsunori)
http://www.geocities.co.jp/Playtown-Denei/8588/ (Yujiro)
http://www.multimania.fr/gouky
http://www.enterspace.org/world/massage.htm
http://cgfm2.emuviews.com
http://www.billyjr.com Hardware Hackers
http://www.komkon.org/fms/
http://www.lsi.usp.br/~ricardo/brsms.htm
http://www.msxnet.org Info sobre el TMS9918a
http://members.aol.com/smsstuff Ya no existe
http://shell0.elnet.com/~gm-quinn/sms/ todos los Trucos
http://www.emucamp.com/dump_masters
http://www.pcisys.net/~cdoty/console Demo of Z80
http://smschecker.mwos.cjb.net
http://www.kensey.com
http://emucity.unae.com
http://www.emucamp.com/tnzs
http://sega-zone.com/sega_haven
http://www.smspower.org

Sega Genesis & Genesis 32 & Sega CD La hermana mayor de Master System , la clasica SEGA MEGADRIVE/GENESIS de 16 bits. Si mal no recuerdo la Genesis no tenia puerto expansor y la MEgadrive si...yo tenia la que podias conectarle el SEGA CD para jugar a los juegos mas nuevos. Recomiendo : Superstar Soccer Deluxe , Sonic 3D , Virtua Racing , Super Street Fighter 2 turbo.


http://www.dtmnt.com/ Dgen Oficial web
http://www.toodarkpark.demon.co.uk SnakePit
http://www.emulnews.com/kml-empire The KML Empire
http://www.atani-software.net/ Official SegaEmu site
http://gens.consolemul.com
http://www.emuforce.com/gens Gens Official Site
http://upx.tsx.org
http://ages.emuunlim.com
http://myst.slcc.edu/~markus Genem Oficial Page
http://www.squish.net/generator/ Generator Oficial PAge
http://www.atani-software.net/ Generator 32 Docs
http://trzy.overclocked.org GENITAL source page!
http://www.geocities.co.jp/Playtown-Spade/3163/ Megasis homepage
http://t-meekins.tripod.com Retrodrive Emulation Page
http://xega.emucamp.com XEGA oficial Homepage

Sega MAster system Si existion alguna consola que alguna vez pudo hacerle sombra a la NES fue esta pequeña amiga. Yo recuerdo esconderme dentro de mi cama con mi Game Gear y jugar Bart Vs space mutants hasta dormirme. Aunque GG es la portatil de la Master la mayoria de los juegos estaban para los 2. No se pierdan : Mortal Kombat (al contrario de NES tiene fatalities , sangre y todo lo demas!!) Wonder Boy in Monsterland , Enduro Racer , Golden Axe , Nba Jam y cientos de clasicos.


http://chasms.midgetrebellion.com Homesite de Chasms
http://www.system16.com/pastorama Pagina oficial de Pastorama
http://cgfm2.emuviews.com NOticias y Docs
http://www.smspower.org EL mejor portal de Master system
http://www.smsplus.vintagegaming.com Otro portal de Emulacion

Sega Dreamcast Fases beta de Dreamcast. No he tenido tiempo de testear esta consola y tal vez sinceramente no me interesa demasiado. Las consolas de ultima generacion no son mi fuerte , pero si tuviera que recomendarles un juego para que lo jueguen ya es : Resident Evil : Code Veronica , en la PC no tiene par!!!

http://come.to/gregsemulation Nightmare Emulator
http://dreamemu.emulation64.com Portal de Potente Emulacion a 64 bits

Sega system 16 - Emulador de los Arcades desarrollados por SEGA en la epoca dorada de los Videojuegos. Lo que nos indica que podremos jugar al OUTRUN , GOLDEN AXE , WONDER BOY. Mis recomendados son : Super Hang On , Outrun , Golden AXE , Altered Beast.

http://abyssweb.ml.org/s16w32.html Pagina oficial de System 16 Emulator
http://abyss.moving-people.net/s16w32.html Pagina oficial de Emulacion del System 16

Spectrum En 1982 sale al Mercado y revoluciono todo. Esta basada en el Cpu Z80 de 8 bits. Miles de juegos = Millones de horas de diversion...y todos los juegos son gratis!!! El copyright fue totalmente liberado. Mi recomendacion es Commando , Poison Will y Space Invader.

http://www.ramsoft.bbk.org Emu de spectrum
http://www.worldofspectrum.com Todos los Emuladores para Spectrum
http://www.comp007.freeserve.co.uk/default.htm Todas las ROMs de todos los juegos de Spectrum! Commando!!!
http://www.emunlim.com/hob/ Un Emu hecho en JAVA.
http://www.geocities.com/Timesquare/Stadium/4428/index.html Multimachine!
http://www.void.demon.nl/x128/index.html X128 Emu
http://personal.redest.es/raulgomez/r80e


Documentos que me ayudaron y personas por sobre todo:

 

Este documento jamas hubiera sido escrito sin la ayuda de algunas personas y sin la lectura de muchos documentos escritos por estas personas.

 

Hardware en General : Y0SHI , Marat Fayzullin , Chris Covell.

Josticks y puertos : Yoshi , Tenesee Corneul Villaeux.

Sonido : Yoshi , Chris Covell.

Hacking : Snowbro.

Assembler : Thejoker , Snowbro.

 

Documentos utilizados:

Nestech V2.0 : Yoshihttp://nesdev.parodius.com

Nes.Doc : Marat Fayzullin - fms@cs.umd.edu

 

Web

 

http://www.zophar.net

 

 


Conclusion Final

 

Fin. Este documento por fin ha sido terminado. La conclusion o fin de este trabajo era alcanzar como objetivo acercar a los hispano-hablantes el mundo de NES. Ha sido duro , ha sido mucho trabajo tratar de escribir un documento tecnico que sea ameno y comprensible. Se que no lo ha sido en todos sus puntos , se que hay algunas cosas que debo aclarar y trabajar aun mucho mas. Pero no importa porque seguire haciendo este documento cada vez mejor y mas comprensible. Dejo en sus manos ahora que tomen sus conocimientos y puedan pulirlos y quien dice escribir tal vez un documento mucho mejor que el mio , que estoy casi seguro que podran hacerlo.

Yo logicamente no escribi este documento completamente solo , muchos trabajos me han ayudado en diversas partes y parte de este documento lo he escrito en base a mi experiencia personal.

Siempre sostendre que la creacion de documentos y Emuladores es para la propia educacion de quien los realiza ; con esto puedo decir que mi educacion en la materia NES ha sido concluida y he aprendido cientos de cosas.

Mi proximo objetivo (en el cual estoy trabajando) es sobre Master System y Game Gear.

Espero que este documento les sea util ha muchos niveles , he tratado de abarcar tanto la parte del Hardware como del Software , tambien el Hacking y Developing de Roms y muchas otras cosas relacionadas a la consola mas grande de la historia de los videojuegos.

Si sinceramente crees que mi trabajo valio la pena y quieres enviarme un E-mail eres libre de hacerlo , siempre es bueno recibir un poco de apoyo. Tambien podrias ayudarme en otros niveles u otros proyectos.

El proyecto 8 bits lo he comenzado solo , de a poco se suman personas y eso es muy gratificante para mi , pero lo mejor es que nadie de los que “trabajamos” en esto lo hacemos por dinero o por reconocimiento , lo hacemos por pura diversion.

Tambien es bueno rescatar que si bien gran parte de mi corazon se ha quedado con la NES de 8 bits no tengo miedo de decir que mis trabajos puedan derivarse a otras cosas , como otras consolas , developing , aspectos tecnicos de computadoras , etc.

Si crees que esta bueno que se difundan estas ideas , escribeme a benix_sonico@yahoo.com.ar . Les recuerdo que vivo en Argentina , tal vez un pais donde no hay muchas oportunidades , pero de todas formas , deje un poco de lado ese “argentinismo” y decidi de una vez hacer algo para todos.

Sin fronteras y sin banderas , este documento es universal.

Muchas gracias!

Nos vemos en la proxima!