[PCE] Docu abierto a colaboración

Este espacio está dedicado a las consolas de mesa y sus juegos. Características, consejos, encuestas y todo lo relacionado a ellas.
Responder
Avatar de Usuario
Switchstance
Guardián del Aguila
Guardián del Aguila
Mensajes: 4549
Registrado: 02/10/06 2:05
Frase: Donde está Kurt1977???
Ubicación: Rio Gallegos
Contactar:

[PCE] Docu abierto a colaboración

Mensaje por Switchstance » 02/10/06 20:04

Imagen

Introduccion

Este documento se basa en traducciones hechas por mi sobre la estructura del Hardware de la consola PC-Engine Turbografx 16.

Todavia no se han implementado muchisimas cosas (como el soporte para CD-Rom) , y otros accesorios. El principal objetivo de este documento es ayudarme a mi mismo a comprender la arquitectura de la consola para poder crear un Emulador solido para PC y luego poder trasladar el codigo para que funcione en una PSX. Por eso es que por el momento no me ha interesado transcribir los documentos sobre el CD-Rom , asi que si tienes mas informacion que puedas brindarme , enviame un E-mail para que sea incluida.


Mapa de la Memoria



El HUC6280 tiene 64KB de espacio logico para las direcciones de memoria y 2MB de espacio fisico para la misma funcion. Para acceder a este espacio (por entero) el procesador depende de 8 registros de mapeado de memoria , conocidos como MPR0-MPR7 (significa que va desde 0 hasta 7). Estos registros mapean segmentos de 8KB de el espacio logico y otros 8KB del espacio fisico. El primer segmento de la Hu-CARD se encuentra mapeado en $E000 , y las primeras instrucciones del segmento del mapa van en $FF hasta $0000 y el segmento $F8 hasta $2000. Cuando existe RAM de salvado de juego , deberia ser mapeada a $8000.

Las siguientes instrucciones son para acceder a la pagina Zero. Siempre trabaja en el segmento $F8.


Segmento # Descripcion
FF Puertos IO
F8-FB RAM base de Supergrafx (32KB) RAM
F8 RAM normal base de PC-Engine (8KB) RAM
F7 RAM de Salvado de juego
00-F6 Almacenamiento utilizado por la Hu-Card.

Sonido de la PC-Engine



La PC-Engine puede producir sonido mediante 6 canales. La onda (del sonido-llamada WAVE) puede ser descrita en 32 Samples con valores que van desde el 0 hasta el 31 , el sonido envolvente se configura con el reproductor de musica. (Puede sonar confuso , pero asi esta escrito en el Archivo Original).

Todas las voces tienen su volumen individual y configuracion de paneos , y hay un volumen global para los canales izquierda-derecha.



Registros de Sonido del HUC6280 PSG




Todos los registros que tienen que ver con el sonido estan mapeados en la memoria , la voz depende de el registro de seleccion de voz.

Direccion - Uso


$0800 Seleccion de Voz
$0801 Volumen Principal
$0802 Frecuencias (bajas)
$0803 Frecuencias (altas)
$0804 Canal activado / volumen
$0805 Volumen de Paneo ('balance')
$0806 Buffer de la Onda
$0807 Ruido - (solo disponibles para voces 5 & 6)
$0808 Frecuencia LFO
$0809 Control LFO



Registros Globales



Las voces dependientes del Registro , se pueden seleccionar con el primer registro , el volumen principal y los registros LFO son globales tambien. El volumen se puede configurar independientemente para los 2 canales stereo. Los 4 bits inferiores controlan el volumen en el canal izquierdo y los 4 superiores controlan el volumen del canal derecho.



$0809 Control LFO ; Donde el Bit 7 = Gatillo (?) LFO

; Donde el Bit 0 & 1 = Control LFO respectivamente.



Las voces



Los registros envueltos en las voces controlan el sonido generado por cada voz. La frecuencia es calculada dividiendo los 3.7Mhz del reloj del sistema por los valores del registro de Frecuencia , y dividiendo este resultado por la longitud del Buffer de onda (32).

El registro de Paneo controla la posicion stereo de la voz. Los 4 bits inferiores controlan el canal izquierdo y los 4 superiores el volumen del canal derecho.

El registro $0804 controla el playback de la voz. Los 4 bits inferiores controlan el volumen de la voz. El PSG no tiene hardware que pueda envolver el sonido , el reproductor de musica tiene que generar por si mismo uno mediante la modificacion del registro. La voz se activa con el bit 7 de este registro. El bit 6 resetea el buffer , y cuando se configura este bit , todos los valores escritos en el buffer son directamente enviados al convertidor D/A. Las ondas son generadas usando un wavebuffer (buffer de onda) circular de 32 bytes. El rango va de 0 hasta 31.

Video



El VDC (Video Display Processor) tambien conocido como HUC6270 , es la unidad de procesamiento de Graficos de la PC-Engine.

A diferencia del CPU que tiene 8 bits , el VDC es un completo procesador de 16 bits con muchisimas prestaciones y capacidades. Es accesible a traves del sistema principal via 3 opcodes especiales que escriben / leen datos desde / hacia el VDC.

El VDC esta conectado a otro Chip llamado HUC6260 o como mejor se conoce Video Color Encoder (codificador de color del video)

que envia la informacion de la paleta de colores al sistema de video.



El VDC en la PC-Engine tiene 2 modos de operacion :



1. Procesado de caracteres de Fondo (Background character processing)

2. Procesado de Sprites (Sprite Processing)



Los 64KB de VRAM al que el VDC esta conectado no contiene un solo bmp con toda la informacion almacenada pixel por pixel como la Amiga o PC , si no que los graficos son almacenados en piezas (como la NES).

Final

Esto es todo lo que he podido recopilar, lamentablemente no tengo una PCE, ojala la tuviera, para desarmarla y poder continuar mi investigación.
Sientanse libre de modificar este documento a su gusto y antojo.

Avatar de Usuario
marty_00
Aprendiz de Pirata
Aprendiz de Pirata
Mensajes: 2186
Registrado: 23/02/06 21:27

Mensaje por marty_00 » 03/10/06 13:10

Lei todo lo que posteaste, pero apenas entiendo, lamentablemente no estoy mucho en el tema, y la pce la conozco de foto nomás, pero es un lindo proyecto. En que lenguaje se programan los emuladores generalmente?
Imagen

Avatar de Usuario
Switchstance
Guardián del Aguila
Guardián del Aguila
Mensajes: 4549
Registrado: 02/10/06 2:05
Frase: Donde está Kurt1977???
Ubicación: Rio Gallegos
Contactar:

Mensaje por Switchstance » 03/10/06 17:39

Generalmente un Emulador para computadora se puede escribir en diversos lenguajes, por ejemplo hay versiones como SADnes, un emu de nes, que fue escrito en QuickBasic. Para escribir un emulador para Psx generalmente se debe escribir el mismo en ensamblador. No queda otra. Hay un emulador de PCE para PSX, lo hizo Bero, pero está en beta stage, el tiro los source en internet y los archivos hay que compilarlos usando C, el problema es que esta en Japonés, y mi PC se cuelga al compilarlo.
Mi principal idea fue pasarlo al castellano al inglés, pero despues Bero me comunico por e-mail que ya no estaba interesado en continuar el proyecto, fue ahi cuando comence a buscar información por mi mismo, ya que en esa época la unica forma viable de jugar a la PC Engine era o el PC o intentar escribir un Emu para PSX. Pero ahora deben haber unos cuantos Emus de PCE para PS2 y Xbox.
Lo lindo de la PC Engine son los juegos, y la calidad gráfica para ser una consola de 8bits, [que tiene un procesador de imagenes de 16bits] pero aun así me encantaría tener una y seguir el development, al menos como hobby.

Avatar de Usuario
Faker
Check Point!
Check Point!
Mensajes: 11230
Registrado: 20/09/06 22:11
Frase: AGUANTE MARIO10
Ubicación: ONMF!
Contactar:

Mensaje por Faker » 04/10/06 1:29

Este Switchances esta mas falopeado que nunca...

buen aporte! :lol:

Avatar de Usuario
marty_00
Aprendiz de Pirata
Aprendiz de Pirata
Mensajes: 2186
Registrado: 23/02/06 21:27

Mensaje por marty_00 » 04/10/06 15:40

Yo me sorprendí cuando me dijo que un emu de nes estaba programado en Quickbasic, fa! Yo sabia hacer cosas sencillas con el quick basic, encima lo tenia en aleman, porque lo usaba en el colgegio (colegio aleman jaja).
Imagen

Avatar de Usuario
onirico80
As del volante en Road Fighter
As del volante en Road Fighter
Mensajes: 3347
Registrado: 03/10/06 14:10

Mensaje por onirico80 » 04/10/06 19:49

Nunca jamas jugue a la PCengine si vi personalmente a la consola y jugue mucho con emu en la compu hace varios años atras creo q hasta era para DOS el emu que usaba ,
me sorprendio muchisimo la calidad grafica de esa maquina es un intermedio entre la Nes y el Genesis para mi muy copada.

Avatar de Usuario
Switchstance
Guardián del Aguila
Guardián del Aguila
Mensajes: 4549
Registrado: 02/10/06 2:05
Frase: Donde está Kurt1977???
Ubicación: Rio Gallegos
Contactar:

Mensaje por Switchstance » 07/10/06 4:49

marty_00 escribió:Yo me sorprendí cuando me dijo que un emu de nes estaba programado en Quickbasic, fa! Yo sabia hacer cosas sencillas con el quick basic, encima lo tenia en aleman, porque lo usaba en el colgegio (colegio aleman jaja).
Si es posta, se llama SADNES, funciona con una libreria re-vieja que ni siquiera debe existir ya. Corre juegos a una velocidad realmente lamentable, pero el objetivo del chabon fue cumplido, lo hizo y haciendolo en quickbasic.
Otro capo tambien lo hizo y mucho mejor, el Emu se llama NESEM, ambos los encontras en este sitio:
http://www.zophar.net/nes.html
Pero sinceramente no vale la pena usarlos y si el chabon hubiese lanzado el codigo yo le hubiese pegado una mirada.

Responder