Proyecto de emulacin de la consola SEGA Dreamcast.
Version 0.000001

PRESENTACION:

Este es el primer intento (al menos que yo sepa) de emular la Dreamcast.
Debido a que no est muy bien visto esto de la emulacin por parte de las
empresas que fabrican videoconsolas, no se van a hacer publicos los nombres
de las personas que estn trabajando en el proyecto.

No tenia previsto hacer publica la realizacin de este proyecto hasta
que no estuviera bastante avanzado (tan solo algunas fotos que se publicaron
en Emulatronia), pero he decidido hacerlo para que todos sepais que esto
va en serio.

No espereis que el emulador aparezca en poco tiempo, ya que la Dreamcast es
una consola bastante actual y con muy buena tecnologa, por lo que va a ser
dificil de emular. Pero espero que algn da este proyecto llegue a buen
termino y tengamos un emulador de Dreamcast.

MANEJO

Esta es una primera versin preliminar, asi que el interfaz es el mnimo
posible para demostrar que funciona realmente.
En el archivo encontraris dos ejecutables: Interpreter.exe y DynaInt.exe
El primero es un interprete puro, con lo cual es bastante lento. El segundo
es una mezcla entre interprete y dynarec (90% inerprete, 10% dynarec), utiliza
tecnicas de Dynamic Recompilation pero usando las mismas funciones que el
interprete para ejecutar los opcodes (algunas instrucciones de memoria estn
ya en dynarec completamente).

Escribe el camino al archivo IP.BIN que desees cargar (o bien buscalo usando
el botn Browse).
Pulsa el botn Check IP.BIN y obtendrs el archivo que ese cargador necesita
(el programa propiamente dicho), y asegurate que ese archivo se encuentra
en el mismo directorio que el IP.BIN. Si el archivo est encryptado, marca
el botn Scrambled. (sabrs si est encriptado porque si no lo marcas petar)
Si deseas utilizar el debugger, activa la casilla Debugger (ver mas abajo).
Pulsa el botn RUN y espera.


PROGRESO:

De momento estn emuladas las siguientes partes:
        SH4: Todos los opcodes estn emulados (no se han probado el 100%) con
             interprete. Los de movimientos de datos a memoria y saltos estn
             emulados utilizando recompilacin dinmica.
        FPU: Todos los opcodes emulados a falta de las 2 instrucciones
             especficas de la Dreamcast. Utiliza el intrprete -> Lento.

        PowerVR: La parte bsica del hardware 2D funciona correctamente
                 (Framebuffer y registros de control). Falta el modo de video 555.
                 Estamos actualmente buscando informacin sobre el hardware 3D
                 y las display lists.
        Maple Bus: Se han identificado los registros de control y estar
                   funcionando en breve.
        Sonido: Nada. Ser lo ltimo que se haga.
        CDROM: No estn totalmente identificadas todas las llamadas a las
               funciones del sistema, cuando se identifiquen todas, no creo que
               sea dificil hacerlo funcionar.

DEBUGGER:
El emulador lleva integrado un debugger (que es un poco patatero pero hace su
papel). El ejecutar el debugger implica que la ejecucin del programa es mucho
ms lenta.
Las teclas de manejo son las siguientes:

F5: Go  (Ejecucin ininterrumpida)
F7: Trace Into (ejecutar entrando en las subrutinas)
F8: Step Over (Ejecutar sin entrar en las subrutinas, no funciona al 100%)

Comandos:
Los comandos se escriben en la parte inferior de la ventana del cdigo:

G       (Igual que F5)
G direccion (Ejecuta hasta esa direccin. en hex)
D direccion (muestra la memoria de la direccin especificada. en hex)
D registro  (muestra la memoria de la direccin cargada en el registro elegido)
E direccion dato (escribe en la direccin el dato especificado. 0-FF en hex)
R registro valor (carga el valor en el registro. 0-FFFFFFFF en hex)
S       (detiene la emulacin. solo funciona en modo Go)
F       (dibuja el framebuffer)
X       (salir)
Z       (reset, casca, no usar)
WD 0|1  (oculta|muestra ventana de datos)
WR 0|1  (oculta|muestra ventana de registros)
WM 0|1  (oculta|muestra ventana de mensajes)
WC 0|1  (oculta|muestra ventana de cdigo, ni se te ocurra, sino donde escribes?)


PROBLEMAS CONOCIDOS
Demasiados.
De momento el unico programa de Dreamcast que se sabe que funciona es la Demo
de Dan Potter (de momento la unica demo que hay). Esta demo funciona porque
no utiliza apenas el hardware de la Dream (no hay 3D, Control, Lectura de
archivos).

Tengo que recalcar que Dan Potter NO EST RELACIONADO CON ESTE PROYECTO EN
NINGUNA FORMA (salvo por la informacin que hemos leido en su pgina y por
la demo que hemos usado para demostrar el funcionamiento del emulador).
Este proyecto es Espaol, hecho por espaoles. Para que luego digan que en
Espaa no se hacen emuladores. (Aunque el emulador est en ingls, pero es
que no quiero que la gente se quede sin saberlo hacer funcionar. Este documento
est en castellano porque mis conocimientos de ingls no son suficientes
para escribir un documento tan grande).


REQUERIMIENTOS

Pentium VIII a 100 Ghz...Emmm, bueno quizs algo menos ;)

Actualmente lo hemos probado en un Pentium II 300 y da pena.
(Ni hablamos del 266 con el que se tomaron los screenshots de Emulatronia.
Que paciencia tienes, Pepito!!)
Con un Athlon a 600 y 128 MB de RAM, la velocidad es aceptable.
Esperemos que cuando est acabado el codigo de recompilacin dinmica ganemos
un poco mas de velocidad (al pasar del interprete puro ganamos el doble de
velocidad).
En las tarjetas grficas que usen el modo de 16 bits 555 se obtendrn los
colores alterados.


COSAS LEGALES

SEGA y DREAMCAST son marcas registradas de SEGA Enterprises LTD.

Ninguna informacin utilizada para la realizacin de este emulador est
protegida por Copyright. No se ha utilizado ningun SDK, Devkit o cosas parecidas
que si que tienen copyright como fuentes de informacin. Solo se ha utilizado
informacin disponible pblicamente.

He incluido dentro del zip los archivos de la demo de Dan Potter, ya que
son de dominio pblico, y espero que no haya ningun problema. de todas formas
podeis ir a www.allusion.net/dcdev para obtener el codigo fuente y otras cosas
sobre la dreamcast.


Permanezcan atentos a Emulatronia para nuevas informaciones sobre el progreso
del emulador.   (www.emulatronia.com por si alguien no lo sabia)



