------------------------------------------------------------------------------
       FFFF L     AA   SS. H  H PPP,  AA  RRR, TTT Y Y         ,******,     
       F    L    A  A S__  H  H P  P A  A R, R  T  Y Y      ,d"        "1,   
       FF   L    AAAA    S HHHH PPP' AAAA R R   T   Y      d1            1b 
       F    LLLL A  A "SS  H  H P    A  A R  R  T   Y      $"  %%    %%  "$
                                                           $              $
        ,*""*,       ,*""*,       ,*""*,       ,*""*,      $ "$b      d$" $
       /      \     /      \     /      \     /      \     "b  "*&&&&*"  d" 
      /        \   /        \   /        \   /        \   /  "1b      d1"   
     *          "+"          "+"          "+"          "+"     "******"     
------------------------------------------------------------------------------

--- La maquina ---

La Magnavox Odyssey 2 era una maquina basada en un microcontrolador (ni siquiera
un microprocesador) Intel 8048, que ya para la epoca era limitado pero que supo
dar batalla en esta consola y algunas otras ya sea como unidad de procesamiento 
central como tambien como chip de soporte. Nota curiosa, es el mismo micro que 
se usaba como controlador de teclado en las primeras PCs, micro que fue usado 
mucho tiempo cumpliendo esta funcion.

Caracteristicas

* CPU
    * Intel 8048 8-bit funcionando a 5.37 MHz (NTSC) o 5.91 MHz (PAL)
* Memoria:
    * En el microcontrolador: 64 bytes
    * Externa: 128 bytes
    * Audio/video RAM: 128 bytes
    * BIOS ROM: 1024 bytes
* Video:
    * Intel 8244 (NTSC) o 8245 (PAL) custom IC
    * Resolucion 160×200 (NTSC)
      Paleta de 16 colores fija (8 colores basicos negro, azul, verde, cyan, 
      rojo, magenta, amarillo y blanco) con un valor que le baja el brillo a la 
      mitad.
* Audio:
   * El mismo chip de video puede generar sonido mono 24-bit shift register, con
    un generador de ruido de dos frecuencias configurable

---- ¿Por que la maquina? ----

¿Por que no? Pensando en el animo cyberciruja de reutilizar todo lo que se puede
quise darle un nuevo uso a una maquina con minimo recursos, con hardware muy 
humilde se pueden hacer cosas interesantes, o al menos aprender en el proceso y 
pasar un tiempo explorando como se pensaba el soft y hard en el pasado.

---- Compilar la demo ----

Si quieren compilar el ejemplo, necesitan tener una maquina con windows y seguir
los siguentes pasos.

1. Descargar el compilador aswcurr.zip y descomprimir. En el ejemplo

C:\temp

2. Copiar los dos archivos fuentes en la carpeta descomprimida (C:\temp\aswcurr)

3. Abrir una ventana de Powershell en esa carpeta y correr:

.\bin\asw.exe .\odissey_boing.a48

Esto va a generar un archivo de codigo intermedio "odissey_boing.p". Este 
archivo necesita ser procesado una vez mas.

4. Sin movernos de carpeta correr:

   .\bin\p2bin .\odissey_boing.p .\odissey_boing.raw


Esto nos genera un archivo que es el ejecutable de la demo. El problema es que 
el emulador que tengo valida el tamaño del rom, esperando un tamaño de cartucho 
valido. Para resolver este problema, podemos decirle al programa que rellene un 
sector del binario para que coincida con la estructura del cartucho

5. En la misma carpeta correr:

   .\bin\p2bin .\odissey_boing.p -r 1024-3071


Esto nos genera un archivo de 2048 bytes que corresponde con el formato base de 
los cartuchos.


---- Correr la demo ----

La demo fue probada en el emulador O2EM (http://o2em.sourceforge.net/#)
Una vez descomprimido, el emulador espera la bios de la odyssey en la carpeta 
BIOS y la ROM en la carpeta del mismo nombre.
En la carpeta que les comparto ya esta armado, descomprimiendolo en la PC 
abrimos una terminal Powershell y escribimos

  .\o2em.exe -wsize=1 -scanlines odissey_boing.bin


Con eso deberia arrancar el emulador, esta vez sin pantalla de seleccion pero 
con efecto de sonido. Espero que les guste! :D


---- pasos futuros (?) ----

* Me gustaria tomar esto, seguir estudiando un poco mas la plataforma y crear u
  juego tratando de aprovechar el conocimiento adquirido.