======================
Calypso Beta Build 011
31-12-1999
======================

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

Calypso es un emulador de la consola Sega Master System II, Game Gear y
dentro de poco Mega-Drive Gnesis. Ejecuta las ROMs en un PC como si
estuvieran en la propia consola, con lo que puedes rular programas de SMS, GG
o Gnesis en tu 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
Actualmente, Calypso usa las engines Raze Z80 y StarScream.

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

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

Hola de nuevo. Ya estamos aqui con otra nueva versin, cargada de novedades.

En primer lugar, y por peticin popular (por fin) se incluye soporte para
leer archivos ZIP, extraido todo de la librera ZLIB.

Para ahorrar espacio, el depurador usa ahora la engine Raze, por lo que la
engine de Marat ya no va incluida en el .EXE. Sin embargo, si que sigo usando
el desensamblador de Marat.

Otra de las peticiones populares fue el traducir el Calypso al ingls y al
portugues. Le he incorporado la herramienta MultiMamelang, con la cual po-
drs traducir el programa a cualquier idioma sin conocimientos especiales
de programacin. Tambin el parmetro -res ha sido incluido por peticin
popular. Gracias a Vicente Aguilar.

En cuanto al tema del sonido, pues en fin, se sigue trabajando. He incorporado
la engine de Richard Mitton, pero me temo que no emula bien el sonido en las
tarjetas nuevas, porque est basada en Adlib. Tiene los mismos problemas que
mi vieja engine Adlib, pero bueno, la de Mitton es mejor porque emula el
ruido de fondo.

El renderizado incorpora una nueva tcnica, -scanlines. Gracias a Charles
Mac Donald por la idea de cmo hacerla. De momento slo en versin sin GUI.

El programa no va a ser actualizado hasta Febrero. La razn de esto son
los exmenes. Espero que disfrutes esta versin.

ESTA ES UNA VERSION DE PRUEBA. CONTIENE MUCHAS COSAS A MEDIO HACER, POR LO
QUE TE PUEDEN SUCEDER COSAS RARAS.

NOTA: EL SOPORTE MAMELANG HA SIDO INTRODUCIDO COMO PRUEBA. EN LA PROXIMA
VERSION SACAR UN ARCHIVO PARA QUE SE PUEDE UTILIZAR.

EL CODIGO DE EMULACION DE LA GENESIS ESTA IMPLEMENTADO A MEDIAS. SI CARGAS
UNA ROM LO NORMAL ES QUE NO PASE NADA, AUNQUE SE PUEDE COLGAR EL ORDENADOR
OCASIONALMENTE.

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

Build 011:
 -Ahora puedes cargar ROMs directamente de archivos .ZIP.
 -Ahora puedes traducir Calypso a cualquier idioma gracias a MameLANG. Gracias
  a Vicente Aguilar.
 -Aadido el parmetro -res, para que puedas poner la resolucion que quieras.
 -Aadido un depurador de MegaDrive-Gnesis. Se entra con -d, igual que el 
  otro. Todas las teclas son compatibles, en la medida de lo posible.  No
  funciona bien (de momento) !!!
 -Aadida la opcin -snd. Gracias a Richard Mitton.
 -Aadido un pequeo osciloscopio que no funciona bien. Tecla Y.
 -Aadida la opcin -scanlines. De momento slo en la version sin GUI.
 -GUI: bastantes remodelaciones. Mralas por ti mismo.
 -GUI: corregido un fallo de prioridades de las ventanas.
 -GUI: ahora el texto de las ventanas tiene colores. Color de las ventanas
  cambiado tambin.
 -Depurador: ahora se usa la engine Raze Z80 en el depurador. Adis a la
  de Marat Fauzullin.

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.
 -Render: corregido un BUG del VDP sobre las interrupciones de linea. En
  juegos como Asterix el scroll era incorrecto por esto.

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.
 -Desarrollar la Mega-Drive.
 -Sntesis FM, presente en algunas consolas.
 -Soporte a otros perifricos, como la LightGun.
 -Joystick.
 -Comenzar el desarrollo del 32X.
 -Calypso para Windows95/98/NT.
 -Juego en Red (parece mentira que siendo yo teleco todava no est :) ).
 -Mejorar un poco la documentacin, que deja bastante que desear.

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

Ejecuta Calypso seguido de la ROM que quieras emular. Nada ms dificil que
eso. La versin GUI es algo mejor en este sentido. Si sabes manejar Callus,
entonces sabrs manejar Calypso :)

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

Durante la emulacin, la resolucin del monitor es de 320*200 (a no ser que
la cambies con -res). 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)
Y        ->    (Activa : Desactiva) el osciloscopio (slo sonido digital)

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 hacerlo como cosa
externa 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 hasta la siguiente 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

-scanlines    : Emula las scanlines del televisor. Slo en versin sin GUI.

-snd          : Usa la engine sonora de Richard Mitton. Adlib. No funciona
                bien con los juegos con voces.

-res nnn nnn  : Establece la resolucion a ejecutar. Ejemplo: -res 640 480


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 con la emulacin en s
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
Vicente Aguilar       Por MameLang
Richard Mitton        Por Raze Z80 y SND, 2 excelentes libreras
Hamm                  Por las horas que est echando en la Web
Neil Corlett          Por StarScream
Javier Ortiz          Por la lista de compatibilidad y su paciencia
Kladius               Por sacarnos de un pequeo apuro en esta versin :)

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

Siempre podrs encontar la ltima versin del emulador en:

http://www.tel.uva.es/~jdelmen

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.
