======================
Calypso Beta Build 010
27-10-1999
======================

----------------------
 Qu es Calypso?
----------------------

Calypso es un emulador de la consola Sega Master System II. Ejecuta las ROMs
en un PC como si se estuvieran en la propia consola, con lo que puedes rular
programas de SMS en el PC.

Calypso ha sido programado por Jose Manuel Delgado Mendinueta. En el 
desarollo he contado con la ayuda de los cdigos de Master Gear,  Massage
y Darcnes, asi como diversas engines Z80 como la de Marat Fauzullin, la de
Marcel de Koegel y la de Neil Bradley. He usado DJGPP 2.02 con Allegro 3.11

Calypso no slo es un emulador. Incluye un potente depurador grfico, que
permite ejecutar el software de la SMS instruccin a instruccin.

----------------------
 Noticias
----------------------

Bueno, ya estoy aqui con otra nueva versin. La verdad es que la emulacion
no ha mejorado mucho. Sin embargo, el propio emulador si que lo ha hecho.

Para empezar, por fin usa la sntesis digital de sonido. Sin embargo, se
conserva la Adlib, pues en tarjetas compatibles se oye igual o mejor y
es ms rpida. Tambien he corregido el BUG que hacia que los juegos con
voces se ralentizaran (Chakan.gg). No es la mejor sntesis del mundo (es
de 8 bits) pero por lo menos alunas voces son audibles (como el "SEGA" al
inicio de los Sonics de Game Gear). An queda mucho por hacer. Lee una nota
acerca del sonido en la seccin "Emulador" ms abajo.

Por fin tenemos una GUI (Graphical User Interface, Interface Grfica de
Usuario). La verdad es que es algo lentilla, pero es ms rpida que la de
Meka. Tambin es verdad que todava no esta acabada, y que muchas opciones
de los menus estn ah como cosas que sern en el futuro y que ahora no
funcionan (como el visor de tiles). Por otro lado, puede que se cuelgue al
cargar ROMs. Por favor, si encuentras algn BUG, mndame un mail.

Incluyo esta vez 2 versiones: una con GUI y otra sin GUI, pues hay usuarios
que lo prefieren asi ;). Adems, la sin GUI es ms rpida. De momento, la
version de linea de comandos es un poco ms completita. Recuerda que la
version GUI es experimental.

El depurador si que ha sufrido bastantes mejoras. Por una lado se incluyen
hasta 16 breakpoints, para depurar ROMs. Se incluye tambien la opcion de
avanzar linea a linea y se mejora la visualizacin de tiles (comando I).

----------------------
 Revisiones
----------------------

Build 010:
 -Incorporada la sntesis digital de sonido. Gracias a Nyef.
 -Programado un skipper de voces en sonido Adlib.
 -Incorporado un pequeo scheduler. Ahora puedes ver en que emplea el emulador
  el tiempo. Tecla G.
 -Aadido un recorte de columna izquierda (leftmask) para Game Gear. Ideal
  para jugar a juegos con BigGameGear tipo Sonic y similares. Tecla K.
 -Corregido un pequeo bug en el recorte de GameGear BigGameGear.
 -Depurador: Mejoradas algunas opciones, como la de ver que nmero de tile
  hay en pantalla (tecla I).
 -Depurador: Soporte para breakpoints. Se admiten hasta 16 breakpoints.
  Tecla Y.
 -Depurador: nueva opcion que permite avanzar una scanline. Tecla H.
 -Una GUI. Lee la seccion de noticias.

Build 009:
 -Ahora si el emulador no encuentra una tarjeta de sonido Adlib permite
  emular la ROM (pero sin sonido, por supuesto) evitando el error. Fallo tonto
 -Corregido un pequeo fallo en el Gamma.
 -Ahora los slots se visualizan como en Nesticle.
 -Nueva fuente para los mensajes, parecida a la de Nesticle.
 -Soporte a los juegos de GameGear (pero con BUGS) y depurador. Dedicado a
  Charles Doty, para que pueda depurar correctamente sus demos.
 -Formato de las partidas guardadas cambiado, para dar soporte a la Game Gear.
  Tranquilo, esta vez no tendrs que tirar tus viejas partidas, porque el
  nuevo formato es compatible con el anterior (o por lo menos as debiera
  ser).
 -Aadidas nuevas teclas que hacen cosas pijas.
 -Render: corregido el BUG de visualizacion incorrecta de caracteres mayores
  del 448. Ahora toda la VRAM va en cache. Se pierde un poco de velocidad.
 -Render: acelerado el render de los sprites. Ahora, se utiliza el color 0
  como tranparente. Esto puede no ser lo correcto.
 -Render: Por fin incorporado un ZBuffer por cache para que los tiles se
  visualizen delante de los sprites. Se pierde un poco de velocidad.
 -Depurador: nueva opcion de ver la pantalla a gran tamao.
 -Nuevo handler de teclado.

Build 008:
 -Aadido archivo de configuracin y opciones de lnea de comandos. Ahora
  los cambios que realices se vern guardados en el archivo de configura-
  cin CALYPSO.INI, que adems es editable.
 -Aadido soporte VSync.
 -Diversos cambios estticos y de menor importancia en el cdigo.
 -Aadido frameskip automtico con ajuste de la velocidad. Ya era hora.
 -Aadido un "skipper" del YM2413. Ahora funcionan muchos ms juegos.
 -Aadido soporte internacional. Puedes emular una consola Europea o
  Japonesa.
 -Corregido el BUG de las partidas guardadas. Haba punteros que no
  apuntaban donde deban, y producan efectos insospechados. Lo siento, pero
  tendrs que tirar tus viejas partidas, porque el formato no es compatible.
  Esta vez he tomado precauciones y he metido bytes sin usar para futuras
  ampliaciones.
 -Aadidos los mensajes en pantalla. Qu emulador que se precie carece de
  ellos :) ?
 -Aadida la emulacin del botn de pausa.
 -Aadidos los slots para las partidas guardadas. Ahora puedes guardar
  hasta 10 partidas de cada juego. Adems, el emulador no da error cuando
  intentas cargar una partida que no existe.
 -Aadida una pequea opcin al depurador. Descbrelo t mismo.

Build 007:
 -Engine VDP reescrita "from scratch". Usa mtodos como Tilecache y otras
  optimizaciones. De momento toda en C, pero mucho ms rpida. Pronto en
  ASM. BUGS: no tiene en cuenta si los sprites van debajo de los caracteres
  asi como el scroll de las primeras filas.
 -El emulador usa la Z80 engine RAZE, en ASM, mucho ms rpida que la de
  Marat.
 -La maquinaria VDP antigua todavia se usa en el depurador. Le correg un
  fallo que hacia que no se visualizara correctamente la ltima columna.

Build 006:
 -Corregido un pequeo BUG en el VDP, relacionado con ScreenON. Gracias a
  Zoop
 -Aadido soporte para frameskip
 -Ahora las partidas se graban en un archivo .pgc con el mismo nombre que
  la ROM, permitiendo un juego salvado por ROM, como en BrSMS. FUNCIONA MAL
  A VECES
 -Emulacin parcial del sonido. Falta el ruido blanco. Adems, es bastante
  mala, y puede que no funcione en todos los ordenadores
 -Aunque el emulador por fuera no ha cambiado mucho, si que lo ha hecho el
  cdigo. Ahora, ya no se usa la funcin LoopZ80(), sino que he optado por las
  soluciones de emuladores modernos, ejecutar frame a frame

Build 005:
 -Versin inicial


----------------------
 Trabajando en...
----------------------

 -Mejorar (ms) el sonido.
 -Mejorar la emulacion del VDP.
 -Sntesis FM, presente en algunas consolas.
 -Soporte a otros perifricos, como la LightGun.
 -Joystick.
 -Comenzar el desarrollo de la Mega Drive.
 -Comenzar el desarrollo del 32X.
 -Calypso para Windows95/98/NT.

----------------------
 Funcionamiento
----------------------

Ejecuta Calypso seguido de la ROM que quieras emular. Nada ms dificil que
eso.


----------------------
 Emulador
----------------------

Durante la emulacin, la resolucin del monitor es de 320*200. Las teclas
son:

cursores ->    control del PAD
Control  ->    Botn A
Alt      ->    Botn B
P        ->    Botn de Pausa
Shift-I  ->    Start de la Game Gear. (Maysculas izquierdo)
S        ->    Salir del emulador
R        ->    Reset
Q        ->    Aumenta el gamma correction
A        ->    Disminuye el gamma correction
Z        ->    Salva la partida del fichero x.pgc, x = nombre,  c = slot
X        ->    Carga la partida del fichero x.pgc, x = nombre,  c = slot
E        ->    Aumenta el frameskip
D        ->    Disminuye el frameskip
U        ->    Sube el volumen del sonido
J        ->    Baja el volumen del sonido
T        ->    (Muestra : Oculta) datos de la emulacin
C        ->    (Activa : Desactiva) el VSync
0...9    ->    Cambia el slot donde se guardarn las partidas
I        ->    (Activa : Desactiva) el renderizado de sprites
O        ->    (Activa : Desactiva) el renderizado de tiles (background)
L        ->    (Activa : Desactiva) activa o desactiva el recorte Game Gear
K        ->    (Activa : Desactiva) el recorte de columna izquierda.
H        ->    Muestra informacion del copyright
G        ->    Scheduler: muestra cmo gasta el tiempo el emulador.
F        ->    (Muestra:Oculta) el numero de Frames por Segundo.
V        ->    (Activa : Desactiva) el canal de sonido 1
B        ->    (Activa : Desactiva) el canal de sonido 2
N        ->    (Activa : Desactiva) el canal de sonido 3
M        ->    (Activa : Desactiva) el canal de sonido 4 (ruido blanco)

El gamma correction sirve para ajustar la intensidad de los colores.
Por defecto, el emulador entra en modo de frameskip automtico. En teora,
en cualquier ordenador debes obtener la cifra de 50 vfps y si el ordenador
es lo sufucientemente rpido 50 fps tambin. El sistema es totalmente
dinmico, por eso se ven bailar los nmeros. Si tienes problemas, mndame un
mail.
VSync quiere decir que el emulador espera hasta que el rayo de tu monitor
est retrocediendo para dibujar la pantalla. Con esto se consigue evitar
esos "glitches" que se producen a veces en la pantalla. A cambio se pierde
algo de velocidad.
Como sabras, la Game Gear no es ms que una SMS con una pantalla ms
pequea (y otras diferencias, pero minsculas). Por eso, Calypso renderiza
la pantalla de la Game Gear como si fuera una SMS. En la mayor parte de
los juegos se agradece, pero otras veces aparecen defectos grficos. Si
quieres ver la Game Gear tal como es, activa el recorte. El recorte no
hace ms que pintar de negro las partes que no se ven en una Game Gear
verdadera. El recorte de columna izquierda es necesario porque la mayoria
de juegos que usan scroll horizontal (como Sonic y allegados) lo usan.
Esta presente en la SMS, y como en la GG no, pues hay que emularlo como cosa
sxterna al emulador. Lo mejor es que hagas experimentos para ver que es lo
que hace :).
El Scheduler incica de que manera el emulador gasta el tiempo. En mi viejo
Pentium 60 se reparte por igual Z80 y render, y un poco menos BLIT y Sonido
(en la version sin GUI). En mi pentimun III 450 el 100% del tiempo est en
estado WAIT :). Esto quiere decir que necesita menos del 1% para funcionar,
no es que el scheduler est mal hecho :). En otros ordenadores puede variar.
Se actualiza cada 2 segundos.
El sonido digital incluye emulacion del ruido blanco, pero por ahora no
esta muy dessarollada. Por ello por defecto esta desconectada. Para conectarla,
teclea M. Es el canal 4.

----------------------
 Depurador
----------------------

El depurador contiene una serie de informaciones como el desensamblado, los
registros del Z80, etc... que no es menester explicar aqui. Si quieres
enterarte cgete la excelente documentacin de Richard Talbot, disponible
en SMS Power.

Para entrar en el depurador hay que teclear -d como parmetro.

Durante la depuracin, las teclas disponibles son las siguientes:

B       ->   Ejecuta 1 instruccin
G       ->   Ejecuta 10 instrucciones
F       ->   Ejecuta 100 instrucciones
V       ->   Ejecuta 1.000 instrucciones
C       ->   Ejecuta 10.000 instrucciones
X       ->   Ejecuta 100.000 instrucciones
Z       ->   Ejecuta 1.000.000 instrucciones
S       ->   Sale del depurador integrado
M xxxx  ->   Muestra el contenido de la RAM del Z80 a partir de la 
             direccin xxxx (en hexadecimal)
N xxxx  ->   Muestra el contenido de la VRAM.
P xxxx  ->   Muestra el contenido de la PRAM.
D xxxx  ->   Desensambla a partir de la direccin de memoria xxxx
J xxxx  ->   Salta a la direccin de memoria xxxx
A       ->   Muestra los tiles
R xxxx  ->   Ejecuta hasta la direccin xxxx (til para saltarse LDIRs)
W       ->   Ejecuta indefinidamente hasta pulsar la tecla E. Es para
             jugar hasta una determinada parte del juego y parar.
F1      ->   Resetea el sistema (W)
U       ->   Ver la pantalla a gran tamao
I       ->   Ver los tiles y nmero de estos de la VRAM. Sin Scroll. S para
             salir
Y       ->   Ver la ventana de breakpoints.
H       ->   Avanza una scanline.

(W) significa que slo funciona cuando estemos en modo de ejecucin
continuada (es decir, habiendo pulsado la W). La tecla Bloq Mays debe estar
desactivada. Hay comandos que con teclear se ejecutan, para otros, hay que
introducirlos y pulsar intro. En futuras versiones me explayar ms en el
funcionamiento del depurador. De momento, lo ms interesante es pulsar W.
Los controles funcionan, y recuerda que se puede parar en cualquier momento
con la tecla E para ver los tiles, por ejemplo.
Para ver la ventana de brakpoints pulsa Y. El breakpoint activo aparece en
blanco. Si quieremos editarlo, usamos las flechas y tecleamos la direccin
hexadecimal. Podemos mover la cifra con las flechas. Para terminar, damos a
la flecha de la izquierda hasta que nos devuelva a la columna de inicio.
Para eliminar un breakpoint pulsar Q. Para salir, pulsar S. Una vez esta-
blecidos los breakpoints, el emulador se para tecleando W (modo continuado) o
si tecleamos ejecutar un nmero n de instrucciones. Para salir de la ventana
de breakpoints de usa S (como para salir de todos los sitios).

----------------------------------------
 Parmetros de la lnea de comandos
----------------------------------------

-d            : Inicia el depurador integrado en vez del emulador

-vsync        : Utilizar la sincronizacin Vertical

-vol <nn>     : Volumen a utilizar para el sonido

-gamma <nn>   : Gamma a usar en la emulacin

-jap          : Emula una consola japonesa (por defecto es europea)

-euro         : Emula una consola europea

-ntsc         : Emula una consola NTSC

-oldvdp       : Usa la antigua maquinaria VDP. Lenta, pero eficaz. Es por si
                te molestan los BUGs de la moderna (pero rpida)

-ds           : Usa sntesis digital de sonido en vez de Adlib

-adlib        : Usa Adlib para emular el sonido

-nosound      : Emula sin sonido. Aumenta la velocidad

-sndrate [22050-44100] : especificando uno de los 2 parmetros, se elige
                la frecuencia de los samples del sonido. Mayor frecuencia, mayor
                calidad, pero + tiempo de CPU

Algunos de estos parmetros pueden modificarse en el archivo calypso.ini. En
teora, nunca debieras de editarlo, porque todos los cambios que realices
sern guardados en el por Calypso automticamente, de tal forma que no tengas
que teclear las opciones cada vez que inicias el emulador. Tecleas una opcion
y Calypso la matiene hasta nueva orden.

----------------------
 Agradecimientos
----------------------

Marat Fayzullin       Por Master Gear y la engine Z80 usada por el programa
James McKay           Por Massage y diversos documentos tcnicos muy tiles
Richard Talbot        Por su EXCELENTE documento tcnico y su ayuda
Ricardo Bittencourt   Por su ayuda
Zoop                  Por descubrir BUGs y ofrecer su ayuda
Lester Chackyn        Por su ayuda con el ingls :)
Magnus Ljung          Por el mejor sistema de ventanas del mundo, JAWS
Nyef                  Por su ayuda con el tema de la sntesis digital y Darcnes

Marcel de Koegel, Neil Bradley y el equipo del Snex9X por diversas cosas.
El autor de Snese, por su cdigo. Sardu, por desarrollar los mejores
emuladores del mundo

A las personas que me escriben mails comentando cosas del emulador

----------------------
 Mndame un mail
----------------------

Para cualquier duda, consulta, sugerencia, comentario o BUG REPORT, mndame
un mail a:

jdelmen@ribera.tel.uva.es

Todos los mail que contengan peticiones de ROMs sern enviados a pginas de
lamers automticamente. Sin embargo, me puedes mandar un mail (debes) si
tal juego funciona o no lo hace en el emulador.

----------------------
 Notas
----------------------

Calypso no forma parte de SEGA, ni tiene nada que ver con SEGA.

Calypso es un programa de libre distribucin. Sin embrago, est totalmente
prohibido distribuirlo junto con ROMs.

No me responsabilizo en ABSOLUTO de CUALQUIER DAO o beneficio que la 
ejecucin de este programa cause.
