FAQ EN CASTELLANO DE GAME BOY 1.0
Por
Matías Bianco (Peter Pepper)
http://arquedigi.8m.com
arqueologiadigital@yahoo.com.ar
Contenido:
1. Características generales del Game Boy
2. Accesorios y variantes
3. Juegos
4. Game Genie
5. Preguntas variadas
6. Curiosidades
7. Programación y hardware
8. Recursos en la web
9. Créditos
10. Notas finales
1.
CARACTERISTICAS GENERALES DEL GAME BOY
Compañía: Nintendo®
Año de lanzamiento: 1989
CPU: 8-bit Z80 work-alike at 4.194304MHz
RAM: 8Kb internal
ROM: Cartuchos conocidos de 256Kb, 512Kb, 1Mb, 2Mb y 4Mb (32Kb, 64Kb,
128Kb, 256Kb y 512Kb). Es probable que haya cartuchos de 16Kb
VRAM: 8Kb interna
Sonido: 4 canales que pueden ser mapeados en la salida izquierda o
derecha de los auriculares (aunque es estereo, el altavoz interno solo
proporciona sonido mono)
Video:
Resolución: Pantalla LCD 160x144 pixels
Colores: 4 tonalidades de gris
Sprites: 40 sprites de 8x8 u 8x16
Communications: Serial port que soporta hasta 4 Game boy conectadas
simultáneamente
Poder y alimentación: 6 Volts, 0.7 watts; recargable con 4 pilas AA
(Duración estimada: 35 horas) o 4 pilas recargables (Duración estimada: 12
horas)
Dimensiones: 900 mm x 148 mm x 32 mm / 3.5 x 3.8 x 1.3
Peso: 300 gramos (con baterías incluidas)
Apariencia del Game Boy
Es una consola portátil de color crema con dos botones (A y B) de color rojizo,
dos botones (Select y Start) de color gris y un direccional de color negro.
Tiene regulador de volumen, puerto para el cable link y espacio para poner las
pilas con una tapita protectora, además, salida para auriculares.
Ventajas del Game Boy respecto a otras consolas portátiles
La pantalla LCD era considerada una desventaja para la consola de Nintendo, pero
finalmente fue una ventaja. Otros sistemas portátiles, como la Lynx de Atari o
la Game Gear de SEGA, usan pantalla a color luminosa, que, obviamente tiene mas
poder que una LCD, pero consume muchas mas pilas (6 AA en lugar de 4 AA) Otra
ventaja considerable es su tamaño, la consola puede ponerse realmente en su
bolsillo (las demás son muy grandes). Hablando
sobre la variedad de juegos disponibles para el GB, no lo consideraría una
ventaja del sí estamos hablando solamente de sus características técnicas. La
cantidad de software escrita para el sistema no tiene nada hacer con la
arquitectura de hardware del sistema; es determinada algo por el éxito
comercial del sistema y, en hecho, por cómo se pone. Hay muchos sistemas tecnológicamente
superiores que fracasaron debido a la comercialización pobre (TurboGrafx es un
ejemplo).
2.
ACCESORIOS Y VARIANTES
Variantes
El Game boy tuvo dos variantes llamadas Game Boy light & Game Boy pocket, la
primera, poseía una luz extra dentro de la consola para alumbrar mas la
pantalla, se presentó en colores plateado y dorado y es bastante difícil de
conseguir; la Game Boy pocket, es una versión más compacta y, como su nombre
lo indica, es para bolsillo, esta se presentó en varios colores, tales como
azul, rojo, verde, ice (celeste hielo), transparente, etc. Estas variantes
tienen el mismo tamaño y soportan los mismos juegos que una Game Boy común.
Otro elemento, que no sabría si considerarlo "variante" es el Super
Game Boy, un cartucho especial que permitía jugar juegos de esta consola en la
Super Nintendo con la posibilidad de ponerles color.
Accesorios que
salieron para la Game Boy
Hubo diversos accesorios para la ampliación de la consola y/o para uso más cómodo
de la misma, estos son:
Game Genie
Diversas Lupas
Multitrasto con botones mayores, joystick y lupa
Gameboy Camera (cámara de fotos)
Gameboy Printer (impresora)
Papel para la impresora
Gameboy Radio
Altavoces estereo
Copiadores y cartuchos RAM
Teclado y PIM
La Gameboy Camera y la printer no despertaron excesivo entusiasmo en los niños,
ya que tienen algo semejante en sus computadoras; y mucho menos en los jovenes y
adultos con una webcam, scanner e impresora a color.
3.
JUEGOS
Nota sobre los
juegos
Hasta la aparición de la Game boy color, la biblioteca de los juegos de Game
Boy classic si bien no tiene una cantidad exacta, calculo que ronda los 500, es
una gran cantidad, ayudada por la ventaja de durar tantos años en el mercado y,
por lo tanto, tanto tiempo de desarrollo (casi diez años).
Los mejores juegos
Los juegos que menciono a continuación, se catalogan como los mejores por
figurar como los mas vendidos, los favoritos en encuestas o los destacados de
revistas, posiblemente muchos tengan opinión distinta, incluso yo creo que hay
juegos que demasiado no me gustan dentro de esta lista, es por eso que puse un
asterisco (*) a los que considero realmente como clásicos. Helos aquí
divididos por género:
RPG:
Final Fantasy Adventure
Final Fantasy Legend 2
Final Fantasy Legend 3*
Zelda: Link's Awakening*
Clones de clásicos:
Alleyway (Arkanoid)*
Asteroids
Centipede
Missile command
Pacman*
Deportes:
F1 Racer
Tennis*
Estrategia/Puzzle:
Dr. Mario*
Hatris
Shanghai
Tetris*
Lucha:
Killer instinct
Mortal Kombat
Street fighter II*
Plataforma/Arcade:
Bubble bobble*
Castlevania II: Belmont´s revenge
Mega man
Mega man II*
Mega man III
Metroid II*
Snow brothers
Super Mario land*
Super Mario land 2*
Wario land: Super Mario Bros. 3*
Como comentario extra, quisiera destacar que esta fue una de las categorías
para la cual se desarrollaron mas juegos (como siempre, Nintendo trató de
fabricar juegos no muy violentos).
Shoot´em up:
Nemesis
R-type*
Simuladores:
Turn and burn
Top Gun*
4. GAME GENIE
Breve
descripción
El Game genie era un accesorio extra que permitía hacer "trampas" en
los juegos; era un cartucho que, mediante códigos, modificaba los códigos del
ROM con tus propios códigos, ej: Cambiar el número de vidas o continues. El
creador de este particular accesorio fue Codemasters.
Funcionamiento
El Game Genie
trabaja con numeros hexadecimales, he aquí un ejemplo:
Código Game Genie:
DD2-103-???
DD - Data Byte
0,1,2,3 - Address, se lee 3210
??? - El significado de estos números es desconocido.
Ejemplo: 3D2-ABF-3BE - Set 3Dh (DEC A command) at address F2ABh
Otros usaban el procesador Z80 como
base con sus códigos.
Otras notas
Estos códigos no funcionaban con todos los juegos, incluso había juegos en los
cuales las "trampas" solo podían utilizarse en una versión.
5. PREGUNTAS VARIADAS
¿Existen emuladores de Game
Boy?
Si, hoy en día hay muchos, algunos pagos, pero la mayoría gratuitos, es el
caso del famoso No$gmb, que emula también juegos de Game boy color. Cualquier
página espacializada de emuladores ofrece muchos de estos.
¿Se puede adherir una luz
trasera al Game Boy?
Hace unos años, en Japón se vendía un accesorio llamado EL-Backlight, el
costo de este era de 5000 yens. Igualmente, existió la Game Boy light
(mencionada en el punto 1), que cumplia esta función.
¿Se puede crear un cartucho
de Game Boy propio?
Si, existe una "Smartcard copier" que permite bajar información de
las Game Boy cards a la PC vía puerto paralelo y meter hasta cuatro juegos en
un cartucho Flash de 4 megas. Decían que eran adaptadores para el
MultiGameDoctor II, MultiGameHunter, SuperWildCard y el SuperComPro. Existió
también la posibilidad de jugar juegos contenidos en tarjetas de crédito, pero
esto solo fue producido en Japón y nunca comercializado afuera.
¿Hay Multi-carts para Game
Boy?
Por supuesto que hay, y son ilegales, ya que no respetan los derechos de
copyright. Existen multi-carts de 32 en 1, 48 en 1, 64 en 1, 120 en 1 y he visto
de hasta 1500 en 1. Lo que contienen por lo general estos cartuchos son juegos
viejos de los primeros para la consola creados por Nintendo (Alleyway, Tetris,
etc.) y otros juegos de baja calidad de diversas compañías, juegos repetidos
dentro del cartucho y hasta juegos pirateados. A continuación, les dejo una
lista que aparecía en un cartucho de 105 en 1; noten la cantidad de juegos
japoneses y la cantidad de repeticiones:
turtle
ninja bouken jima
super mario land motocross
penguin land kid
kiki
mickey mouse
crocodile
dr. mario
solomons club head
on dr
mario
ishido
battle city
bouken
tennis
volley fire boxing
trump boy klax
bubble ghost master
karateka othello puzzle
boy
hong kong
tetris
minisweeper
heiankyo alien
bouken 3
flipull hyper
loderunner amida
yakuman
match mania
pala medes world bowling
loopz
bouken 4 alleyway
koro dice
puzzle road spot castelian
dragon slayer 1
space invader snake war
bouken 5 flappy
special
pipe dream koi
wa kakehiki bouken 6 pitman
tasmania story soukoban 2
shanghai kinkong
escape
arkanoil
ls caste star gate
bouken 7
super kid
super turtle super
mario go tank
bouken 8
spec mouse big ghost
excite bike
penguin egg spec
turtle adventure
2 tank
kiki mouse small
ghost motor
bike adventure
big penguin speed
runner bom bom
alley 1992 castelian
thunder force luck boy
adventure 4 sp turtle
mario boy
adventure 5
loder runner sp alley
sp motocross adventure
6 sp
invader sp kid kiki
easy tasmania adventure
7 turtle ii
sp mario
gogo tank
adventure 8
sp mouse adventure
island
sp penguin happy
boy happy
ghost bouken boy
sp tasmania
¿Funciona el Game Genie con
los multi-carts?
No, no funciona.
¿Existen los clones de Game
Boy?
Si, existen, en Asia hay dos conocidos: WonderBoy y Sunny (que solo se
diferenciaban del Game Boy por el nombre). En Rusia, el mas conocido era el
Bitman2000. En Sudamérica, bueno...hay un paraíso de clones, pasando por el
UltraBoy, SuperBoy, BigBoy y muchísimos mas.
¿Cuales son los juegos
japoneses que nunca llegaron a Estados Unidos?
No hubo demasiados, pero como destacados estan el Parodius y el Twin
Bee. Hay que considerar que un 90% de los juegos de Japón llegaron a U.S.A..
¿Qué ocurrió con el juego
basado en vectores llamado Lunar Chase?
Simplemente se canceló.
6. CURIOSIDADES
Lista de artículos para
Game Boy incluídas en manual
A continuación les dejo la lista de artículos de repuesto incluída en
el manual de Game Boy para solicitar a la empresa en caso de pérdida o rotura:
GAME BOY CONSUMER PARTS LIST & ORDER FORM
|
|
|
|
Amount of |
|
|
21642 |
Stereo Headphones |
$ 8.50 |
|
|
|
21644 |
Battery cover |
1.00 |
|
|
|
18099 |
Connector cover |
.50 |
|
|
|
21647 |
Game link and port cover |
8.50 |
|
|
|
18101 |
Power Cord |
5.00 |
|
|
|
21648 |
Game Pak Case |
1.00 |
|
|
|
18103 |
Game Boy Manual |
2.00 |
|
|
|
XXX |
Game Pak Manual (Specify
name) |
1.25 |
|
|
Precauciones y mantenimiento de los
componentes
1. No desarme o intente reparar los componentes de su Game Boy. Al hacer
esto se hace anulable su garantía.
2. Siempre apague el Game Boy antes de insertar o sacar un juego. Inserte el
juego completamente en la consola sin forzarlo.
3. No guarde el Game Boy en un lugar húmedo, sobre el suelo o en ningún sitio
donde pueda colectar suciedad, polvo, hilacha, etc.
4. No suelte, golpee o de otra manera abuse los componentes del Game Boy.
5. Al desunir los enchufes de la consola, primero apáguelo. Luego,
cuidadosamente quite el enchufe. No lo hale por la cuerda, sino por el mismo
enchufe. No pise, alargue o encorve los alambres ni los cables.
6. No exponga la consola, los juegos o ninguno de los componentes del Game Boy a
extremo calor o frío. La presentación de cristal líquida (LCD) puede
retrasarse o quizá deje de funcionar cuando la temperatura este baja. La LCD se
deteriorará en temperaturas altas. Tenga cuidado de no exponer al Game Boy
directamente a la luz del solo por períodos de tiempo extendidos.
7. La LCD puede dañarse por objetos afilados o con presión. Lleve mucho
cuidado para proteger el despliegue de rasguños o manchas.
8. Conecte SOLAMENTE los accesorios especiales diseñados para uso con el
Game Boy y a la extensión del conector.
9. Tenga cuidado de no perder la cobertura de la extensión del conector cuando
use los cables (Game Link). Reemplace la cobertura cuando no esta en uso.
10. No derrame líquidos en el Game Boy, en los juegos o ningunos de los
componentes del Game Boy. Para limpiar, use un paño pequeño y blando que este
poco húmedo. Permita que el componente se seque completamente antes de usar
otra vez (Use agua solamente).
11. No prenda y apague rápidamente la consola, según el caso puede eliminar la
información de los juegos de memoria.
12. Para la mejor imágen de juego, mire directamente al Game Boy desde el
frente y úselo solamente en buena luz.
13. Para evitar que suciedad o polvo caiga dentro del Game Boy, siempre deje un
cartucho en puesto (con el poder apagado), cuando no esté en uso.
7.
PROGRAMACION
Y HARDWARE
Herramientas de desarrollo
para Game Boy
Hay diversas herramientas de desarrollo para la consola, algunas de estas son:
1. La Smarcard permite bajar el
código de los cartuchos de los juegos de Game Boy a la pc y guardar hasta 4
cartuchos en un una Flash-ROM Card de 512 Kb.
2. Los analizadores expertos son capaces de cambiar los circuitos del sistema,
aunque es bastante complicado.
3. El Código de los emuladores muchas veces sirve para modificarlo, ya que
estan escritos en lenguaje C.
Pinouts de los cartuchos de Game Boy (no esta completo)
|
|
Función
|
|
1 |
VCC
(+5v) |
|
2 |
?,
conectado a los Game Boy, no usado en los Game pak (juegos) |
|
3 |
/RESET |
|
4 |
/WR |
|
5 |
?,
usado para adaptar el PAL-N o en Game paks de alta capacidad |
|
6-20 |
A0-A14 |
|
21 |
/CS |
|
22-29 |
D0-D7 |
|
30 |
/RD |
|
31 |
?,
conectado a los Game Boy, no usado en los Game pak |
|
32 |
GND |
CPU
del Game Boy
1. El tipo de registros de sombra (BC´, DE´, HL´, AF´) y los registros
"index" (IX, IY) fueron perdidos y en consecuencia no hay mas códigos
DD y FD.
2. Los puertos I/O se fueron y quedaron solo códigos IN/OUT
3. HALT es interrumpida cuando los interruptores están desactivados.
Hay otros códigos del Z80 que han sido modificados y se plantean a
continuación (original en inglés):
|
Code |
Z80 operation |
Game Boy operation |
|
08 xx xx |
EX AF,AF' |
LD (word),SP Save SP at given address |
|
10 xx |
DJNZ
offset |
STOP Meaning
unknown |
|
22 |
LD
(word),HL |
LD (HLI),A Save A at (HL) and increment
HL |
|
2A |
LD
HL,(word) |
LD A,(HLI) Load A from (HL) and
increment HL |
|
32 |
LD
(word),A |
LD (HLD),A Save A at (HL) and decrement
HL |
|
3A |
LD
A,(word) |
LD A,(HLD) Load A from (HL) and
decrement HL |
|
D3 |
OUTA (byte) |
No operation |
|
D9 |
EXX |
RETI Enable
interrupts and return |
|
DB |
INA (byte) |
No operation |
|
DD |
Prefix
DD |
No operation |
|
EO
xx |
RET
PO |
LD (byte),A Save A at (FF00+byte) |
|
E2 |
JP
PO,word |
LD (C),A Save A at
(FF00+C) |
|
E3 |
EX HL,(SP) |
No operation |
|
E4 |
CALL
PO,word |
No operation |
|
E8
xx xx |
RET
PE |
ADD SP,offset
Add signed offset to SP |
|
EA xx xx |
JP
PE,word |
LD (word),A Save A at given address |
|
EB |
EX DE,HL |
No operation |
|
EC |
CALL
PE,word |
No operation |
|
F0 |
RET
P |
LD A,(byte) Load A from (FF00+byte) |
|
F2 |
JP
P,word |
No operation |
|
F4 |
CALL
P,word |
No operation |
|
F8 xx |
RET
M |
LDHL SP,offset
Load HL with SP + signed offset |
|
FA xx xx |
JP
M,word |
LD A,(word) Load A from given address |
|
FC |
CALL
M,word |
No operation |
|
FD |
Prefix
FD |
No operation |
Información
interna
El
área de información de la Game Boy se encuentra en 0100-014F en cada cartucho,
y contiene lo siguiente:
0100-0103 ---> contiene una secuencia de bytes 00 C3 xx xx donde los ultimos
dos bytes contienen la dirección inicial del cartucho (el byte mas bajo
primero). Los primeros dos bytes de esta secuencia pueden ser usados como un
"número mágico" para reconocer cartuchos de Game Boy. Cuando se
activa la consola, el control pasa a la "address 0100" y después la
secuencia es interpretada como NOP; JP <addr>
0105-0133 ---> Area de personajes de Nintendo:
CE
ED 66 66 CC 0D 00 0B 03 73 00 83 00 0C 00 0D
00 08 11 1F 88 89 00 0E DC
CC 6E E6 DD DD D9 99
BB BB 67 63 6E 0E EC CC DD DC
99 9F BB B9 33 3E
0134-0143 ---> Título del juego en ASCII terminado en ceros.
0144-0146 ---> No usado.
0147 ---> Tipo de cartucho:
0 - ROM
ONLY
3 - ROM+MBC1+RAM+BATTERY
1 - ROM+MBC1
5 - ROM+MBC2
2 - ROM+MBC1+RAM 6
- ROM+MBC2+BATTERY
0148 ---> Tamaño del ROM:
1 - 512Kb = 64Kb = 4 banks
2 - 1Mb = 128Kb = 8 banks
3 - 2Mb = 256Kb = 16 banks
4 - 4Mb = 512Kb = 32 banks
0149 ---> Tamaño del RAM
0 - Ninguno
1 - 16Kb = 2Kb = 1 bank
2 - 64Kb = 8Kb = 1 bank
3 - 256Kb = 32Kb = 4 banks
0150-0151 ---> Código del fabricante, ejemplos:
3301=Nintendo
7901=Accolade
A400=Konami
014C ---> Número de versión
014D ---> Complemento de chequeo
014E-014F ---> "Checksum" (el byte mayor primero) producido
juntando todos los bytes del cartucho excepto por dos checksum bytes y tomando
dos bytes menores como resultado.
Mapa
de memoria del Game Boy (En inglés)
---------------------------
FFFF | 32kB ROMs are non-switchable
and occupy
I/O ports + internal RAM
| 0000-7FFF are. Bigger ROMs use one of two
--------------------------- FF00 |
different bank switches. The type of a
Internal RAM
| bank switch can be
determined from the
--------------------------- C000 |
internal info area located at 0100-014F
8kB switchable RAM bank
| in each cartridge.
--------------------------- A000 |
16kB VRAM
| MBC1 (Memory Bank Controller 1):
--------------------------- 8000 |
Writing a value into 2000-3FFF area will
16kB switchable ROM bank
| select an appropriate ROM bank at
--------------------------- 4000 |
4000-7FFF. Writing a value into 4000-5FFF
16kB ROM bank #0
| area will select an appropriate RAM bank
--------------------------- 0000 |
at A000-C000.
|
| MBC2 (Memory Bank Controller 2):
| Writing a
value into 2100-21FF area will
| select an appropriate ROM bank at
| 4000-7FFF. RAM switching is not provided.
El
buffer del Game Boy soporta una resolución de 256x256 pixels o 32x32 tiles,
pero solo 160x144 píxeles pueden ser mostrados en pantalla. Los registros
SCROLLX y SCROLLY tienen las coordenadas de la ubicación de cada objeto en la
pantalla. Un área de VRAM es conocida como "Background tile table" y
contiene los números de texturas a ser mostrados. Las texturas son tomadas de
la tabla localizada en 8000-8FFF o 8800-97FF. En el primer caso, son nombradas
con números del 0 al 255, por ejemplo: Textura #0 termina en address 8000. En
el segundo caso, son nombradas con números del -128 al 127, ejemplo: Textura #0
termina en address 9000. La "tela" o textura puede ser elegida
mediante el registro LCDCONT.
La ubicación de una ventana dentro de una pantalla puede ser ajustada via
registros WNDPOSX y WNDPOSY
0
Fondo
255
0+--------------------------------------------+
|
^
|
| |
|
| |
SCROLLY
|
| |
|
| 0 v
Pantalla
159 |
| 0+------------------------+ |
| |
^
| |
| |
|
| |
|
SCROLLX |
| WNDPOSY |
|
|<--------->|
| |
|
| |
v
| |
|
|
+----------+
|
|
| WNDPOSX-7
|
| |
|
|<----------->| Ventana
| |
|
|
| |
|
|
143+-------------+----------+
|
|
|
|
|
|
|
Las texturas son almacenadas en la
tabla respectiva. Cada imágen de 8x8 ocupa 16 bytes, donde una línea
representa 2 bytes:
Textura:
Imágen:
.33333..
.33333.. -> 01111100 -> 7Ch
22...22.
01111100 -> 7Ch
11...11.
22...22. -> 00000000 -> 00h
2222222. <-- los dígitos representan
11000110 -> C6h
33...33. número
de color
11...11. -> 11000110 -> C6h
22...22.
00000000 -> 00h
11...11.
2222222.
-> 00000000 -> 00h
........
11111110 -> FEh
33...33. -> 11000110 -> C6h
11000110 -> C6h
22...22. -> 00000000 -> 00h
11000110 -> C6h
11...11. -> 11000110 -> C6h
00000000 -> 00h
........ -> 00000000 -> 00h
00000000 -> 00h
Hay
dos canales de sonido conectados a las terminales SO1 y SO2, hay también otro
conectado al cartucho. La Game Boy permite representar el sonido de cuatro
maneras distintas:
1. Cuadrangulares wave con funciones sweep y envelope
2. Cuadrangulares wave con funcion envelope
3. Wave voluntario
4. Sonido tenue o silencio
Estos cuatro pueden ser manejados independientemente e incluso
"mixados" por separado para cada una de las diferentes terminales.
Puertos I/O del Game Boy (En
inglés)
La
siguiente sección es presentada solo para usuarios avanzados y/o entendidos, la
deje en inglés, porque para traducirla podía volverme mono:
I/O ports are mapped to memory
locations in FF00-FFFF area:
------------------------------------------------------------------------------
FF00 -- JOYPAD [RW] Joypad port
Bit5
Bit4 | In order
to scan the keys, output 0 into either Bit4
Bit3
DOWN START
| or Bit5 of JOYPAD, wait for some time and read JOYPAD.
Bit2
UP SELECT
| Bits 0-3 will be set to zeroes if corresponding
Bit1
LEFT B
| buttons are pressed. Bits 6 and 7 are not used. Bits
Bit0
RIGHT A
| 0-3 are connected to input lines P10-P13. Bits 4 and 5
| are connected to ouput lines P14 and P15.
Example:
; Routine finding which buttons were pressed since the last check
LD A,20h ;
Set 0 at the output line P14
LD (FF00h),A ;
LD A,(FF00h) ; Read JOYPAD several times to accomodate the noise
LD A,(FF00h) ;
CPL
; Bits 0-3 are now 1s if corresponding buttons pressed
AND 0Fh ;
Extract lower 4 bits carrying button status...
SWAP A
; ...and move them into upper for bits
LD B,A
; At this point: B = START.SELECT.B.A.x.x.x.x
LD A,10h ;
Set 0 at the output line P15
LD (FF00h),A ;
LD A,(FF00h) ; Read JOYPAD several times to accomodate the noise
LD A,(FF00h) ;
LD A,(FF00h) ;
LD A,(FF00h) ;
LD A,(FF00h) ;
LD A,(FF00h) ;
CPL
; Bits 0-3 are now 1s if corresponding buttons pressed
AND 0Fh ;
Extract lower 4 bits carrying buttons' status...
OR B
; ...and combine them with 4 other button status bits
LD D,A
; At this point: D = START.SELECT.B.A.DOWN.UP.LEFT.RIGHT
LD A,(FF8Bh) ; Read old button status from RAM
XOR D
; Set 1s for buttons whose status has changed
AND D
; Extract buttons which were *pressed* since last check
LD (FF8Ch),A ; Save information of those buttons
LD A,D
; Update button status in RAM
LD (FF8Bh),A ;
LD A,30h ;
Set 1s at both P14 and P15 lines
LD (FF00h),A ; [probably to reset the circuitry]
------------------------------------------------------------------------------
FF01 -- SIODATA [RW] Serial I/O
Data
----------------------------------------------+---------------+---------------
FF02 -- SIOCONT [RW] Serial I/O
Control |
when set to 1 | when set to 0
Bit7
Transfer start flag
| START
| NO TRANSFER
Bit0
Serial I/O clock select
| INTERNAL |
EXTERNAL
----------------------------------------------+---------------+---------------
FF04 -- DIVIDER [RW] Divider
[meaning unknown]
------------------------------------------------------------------------------
FF05 -- TIMECNT [RW] Timer
Counter
This register contains constantly increasing number. The timer
interrupt occurs when this register overflows.
------------------------------------------------------------------------------
FF06 -- TIMEMOD [RW] Timer
Modulo
The contents of TIMEMOD are loaded into TIMECNT every time TIMECNT
overflows.
----------------------------------------------+---------------+---------------
FF07 -- TIMCONT [RW] Timer
Control
| when set to 1 | when set to 0
Bit2
Start/Stop timer
| COUNTING |
STOPPED
Bit1-0
Timer clock select:
00 - 4096Hz 01 - 262144Hz
10 - 65536Hz 11
- 16384Hz
----------------------------------------------+---------------+---------------
FF0F -- IFLAGS [RW] Interrupt
Flags
| when set to 1 | when set to 0
Bit4
Transition High->Low on pins P10-P13 | OCCURED
| NO
Bit3
End of serial I/O transfer
| OCCURED
| NO
Bit2
Timer overflow
|
OCCURED |
NO
Bit1
LCD controller interrupt [see LCDSTAT]
| OCCURED
| NO
Bit0
LCD vertical blanking impulse
| OCCURED
| NO
----------------------------------------------+---------------+---------------
FF10 -- SNDREG10 [RW] Sweep
[Sound Mode #1]
Bit6-4
Sweep time:
000: SWEEP OFF 010:
15.6ms 100: 31.3ms
110: 46.9ms
001: 7.8ms
011: 23.4ms 101:
39.1ms 111: 54.7ms
Bit3
Frequency increase[0]/decrease[1]
Bit2-0
Number of shifts
------------------------------------------------------------------------------
FF11 -- SNDREG11 [RW] Sound
Length/Pattern Duty [Sound Mode #1]
Bit7-6
Wave Pattern Duty [only these bits can be read]:
00: 12.5% 01:
25% 10: 50%
11: 75%
Bit5-0
Length of sound data
------------------------------------------------------------------------------
FF12 -- SNDREG12 [RW] Control
[Sound Mode #1]
Bit7-4
Initial value of envelope
Bit3
Envelope up[1]/down[0]
Bit2-0
Number of envelope sweep
------------------------------------------------------------------------------
FF13 -- SNDREG13 [W] Frequency
Low [Sound Mode #1]
Lower 8 bits of the 11bit frequency. Higher 3 bits are in SNDREG14.
------------------------------------------------------------------------------
FF14 -- SNDREG14 [RW] Frequency
High [Sound Mode #1]
Bit7
When 1 is written into this bit, sound restarts
Bit6
Counter/Consecutive selection [only this bit can be read]
Bit2-0
Higher 3 bits of the 11bit frequency
------------------------------------------------------------------------------
FF16 -- SNDREG21 [RW] Sound
Length/Pattern Duty [Sound Mode #2]
Bit7-6
Wave Pattern Duty [only these bits can be read]:
00: 12.5% 01:
25% 10: 50%
11: 75%
Bit5-0
Length of sound data
------------------------------------------------------------------------------
FF17 -- SNDREG22 [RW] Control
[Sound Mode #2]
Bit7-4
Initial value of envelope
Bit3
Envelope up[1]/down[0]
Bit2-0
Number of envelope step
------------------------------------------------------------------------------
FF18 -- SNDREG23 [W] Frequency
Low [Sound Mode #2]
Lower 8 bits of the 11bit frequency. Higher 3 bits are in SNDREG24.
------------------------------------------------------------------------------
FF19 -- SNDREG24 [RW] Frequency
High [Sound Mode #2]
Bit7
When 1 is written into this bit, sound restarts
Bit6
Counter/Consecutive selection [only this bit can be read]
Bit2-0
Higher 3 bits of the 11bit frequency
------------------------------------------------------------------------------
FF1A -- SNDREG30 [RW] Control
[Sound Mode #3]
Bit7
Sound on[1]/off[0]
------------------------------------------------------------------------------
FF1B -- SNDREG31 [RW] Sound
Length [Sound Mode #3]
------------------------------------------------------------------------------
FF1C -- SNDREG32 [RW] Output
Level [Sound Mode #3]
Bit6-5
Output Level:
00: MUTE 01:
100% 10: 50%
11: 25%
------------------------------------------------------------------------------
FF1D -- SNDREG33 [W] Frequency
Low [Sound Mode #3]
Lower 8 bits of the 11bit frequency. Higher 3 bits are in SNDREG34.
------------------------------------------------------------------------------
FF1E -- SNDREG34 [RW] Frequency
High [Sound Mode #3]
Bit7
When 1 is written into this bit, sound restarts
Bit6
Counter/Consecutive selection [only this bit can be read]
Bit2-0
Higher 3 bits of the 11bit frequency
------------------------------------------------------------------------------
FF20 -- SNDREG41 [RW] Sound
Length/Pattern Duty [Sound Mode #4]
Bit5-0
Length of sound data
------------------------------------------------------------------------------
FF21 -- SNDREG42 [RW] Control
[Sound Mode #4]
Bit7-4
Initial value of envelope
Bit3
Envelope up[1]/down[0]
Bit2-0
Number of envelope step
------------------------------------------------------------------------------
FF22 -- SNDREG43 [RW]
Polynomial Counter [Sound Mode #4]
Bit7-4
Shift clock frequency for the counter
0000: Dividing ratio of frequencies / 2
0001: Dividing ratio of frequencies / 2^2
0010: Dividing ratio of frequencies / 2^3
.... ....
1101: Dividing ratio of frequencies / 2^14
1100: Prohibited
1111: Prohibited
Bit3
Number of steps: 7 [1]/15 [0]
Bit2-0
Dividing ratio of frequences
000: f*2 010:
f/2 100: f/4 110: f/6
where f = 4.194304Mhz/8
001: f*1 011:
f/3 101: f/5 111: f/7
------------------------------------------------------------------------------
FF23 -- SNDREG44 [RW] Frequency
High [Sound Mode #4]
Bit7
When 1 is written into this bit, sound restarts
Bit6
Counter/Consecutive selection [only this bit can be read]
------------------------------------------------------------------------------
FF24 -- SNDREG50 [RW] Channel
and Volume Control
Bit7
Vin -> SO2 on[1]/off[0]
Bit6-4
Volume on SO2
Bit3
Vin -> SO1 on[1]/off[0]
Bit2-0
Volume on SO1
------------------------------------------------------------------------------
FF25 -- SNDREG51 [RW] Sound
Output Terminal Selector
Bit7
Sound 4 -> SO2 |
Bit6
Sound 3 -> SO2 |
Bit5
Sound 2 -> SO2 | SO1 and
SO2 are two sound outputs connected to the
Bit4
Sound 1 -> SO2 |
headphones. Vin is an input terminal in the cartridge
Bit3
Sound 4 -> SO1 | slot.
Bit2
Sound 3 -> SO1 |
Bit1
Sound 2 -> SO1 |
Bit0
Sound 1 -> SO1 |
----------------------+-------------------------------------------------------
FF26 -- SNDREG52 [RW] Sound
ON/OFF
Bit7
All sound on[1]/off[0]
Bit3
Sound 4 on[1]/off[0]
Bit2
Sound 3 on[1]/off[0]
Bit1
Sound 2 on[1]/off[0]
Bit0
Sound 1 on[1]/off[0]
----------------------------------------------+---------------+---------------
FF40 -- LCDCONT [RW] LCD
Control
| when set to 1 | when set to 0
Bit7
LCD operation
| ON
| OFF
Bit6
Window Tile Table address
| 9C00-9FFF |
9800-9BFF
Bit5
Window display
| ON
| OFF
Bit4
Tile Pattern Table address
| 8000-8FFF
| 8800-97FF
Bit3
Background Tile Table address
| 9C00-9FFF |
9800-9BFF
Bit2
Sprite size
| 8x16
| 8x8
Bit1
Color #0 transparency in the window
| SOLID
| TRANSPARENT
Bit0
Background display
| ON
| OFF
----------------------------------------------+---------------+---------------
FF41 -- LCDSTAT [RW] LCD Status
| when set to 1 | when set to 0
Bit6
Interrupt on scanline coincidence
| ON
| OFF
Bit5
Interrupt on controller mode 10
| ON
| OFF
Bit4
Interrupt on controller mode 01
| ON
| OFF
Bit3
Interrupt on controller mode 00
| ON
| OFF
Bit2
Scanline coincidence flag
| COINCIDENCE | NO
COINCIDENCE
Bit1-0
LCD Controller mode:
00 - Horizontal blanking impulse [VRAM 8000-9FFF can be accessed by CPU]
01 - Vertical blanking impulse [VRAM 8000-9FFF can be accessed by CPU]
10 - OAM FE00-FE90 is accessed by LCD controller
11 - Both OAM FE00-FE90 and VRAM 8000-9FFF are accessed by LCD controller
------------------------------------------------------------------------------
FF42 -- SCROLLY [RW] Background
Vertical Scrolling
------------------------------------------------------------------------------
FF43 -- SCROLLX [RW] Background
Horizontal Scrolling
------------------------------------------------------------------------------
FF44 -- CURLINE [RW] Current
Scanline
This register contains the number of a screen line currently
being
scanned. It can take values 0-153 where 144-153 indicate the vertical
blanking period. Writing into this register resets it.
------------------------------------------------------------------------------
FF45 -- CMPLINE [RW] Scanline
Comparison
When contents of CURLINE are equal to contents of CMPLINE, scanline
coincidence flag is set in the LCD status register and an interrupt
may occur.
------------------------------------------------------------------------------
FF47 -- BGRDPAL [W] Background
Palette
Bit7-6
Palette for color #3 |
Bit5-4
Palette for color #2 |
00 ------- 01 ------- 10 -------> 11
Bit3-2
Palette for color #1 |
lightest
darkest
Bit1-0
Palette for color #0 |
------------------------------+-----------------------------------------------
FF48 -- OBJ0PAL [W] Sprite
Palette #0
Bit7-6
Palette for color #3 |
Bit5-4
Palette for color #2 |
00 ------- 01 ------- 10 -------> 11
Bit3-2
Palette for color #1 |
lightest
darkest
Bit1-0
Palette for color #0 |
------------------------------+-----------------------------------------------
FF49 -- OBJ1PAL [W] Sprite
Palette #1
Bit7-6
Palette for color #3 |
Bit5-4
Palette for color #2 |
00 ------- 01 ------- 10 -------> 11
Bit3-2
Palette for color #1 |
lightest
darkest
Bit1-0
Palette for color #0 |
------------------------------+-----------------------------------------------
FF4A -- WNDPOSY [RW] Window Y
Position
WNDPOSY may assume values 0-143. It determines the vertical position
of the left upper corner of a window on the screen.
------------------------------------------------------------------------------
FF4B -- WNDPOSX [RW] Window X
Position
WNDPOSX may assume values 7-166. It determines the horizontal position
of the left upper corner of a window on the screen. The real position
is WNDPOSX-7.
------------------------------------------------------------------------------
FF46 -- DMACONT [W] DMA
Transfer Control
Writing to this register will cause a DMA transfer into OAM located
at FE00-FE9F. The written value determines the source address in a
following way: 00 -> 0000, 01 -> 0100, ... , 9A -> 9A00, ...
The DMA transfer takes about 160 nanoseconds.
Example:
; Routine transferring 0400-049F into OAM
DI
; Disable interrupts
LD A,04h ;
Transferring data from 0400h
LD (FF46h),A ; Start DMA transfer
LOOP: LD A,#40 ;
Wait
DEC A
;
JR NZ,LOOP ;
EI
; Enable interrupts
----------------------------------------------+---------------+---------------
FFFF -- ISWITCH [RW] Interrupt
Enable/Disable | when set to 1 | when set to 0
Bit4
Transition High->Low on pins P10-P13 | ENABLED
| DISABLED
Bit3
End of serial I/O transfer
| ENABLED
| DISABLED
Bit2
Timer overflow
| ENABLED
| DISABLED
Bit1
LCD controller interrupt [see LCDSTAT]
| ENABLED
| DISABLED
Bit0
LCD vertical blanking impulse
| ENABLED
| DISABLED
----------------------------------------------+---------------+---------------
8. RECURSOS EN LA WEB
http://www.gameboy.com
Sitio
oficial de la consola de Nintendo.
http://fms.komkon.org/GameBoy/
Antigua pagina de emuladores e info de Game Boy de Marat Fayzullin.
http://www.dominion.ebom.org/gameboy/
Un Kernel multihilo y un fichero que permite transferir datos del GB link port a
Windows se encuentra aquí.
http://freespace.virgin.net/stephen.blanksby/
Ejemplos de
programas en C y documentos sobre Gameboy.
http://www.geocities.com/SiliconValley/Lakes/8278/
usuario de Gameboy con curiosidad por el Hard
http://www.geocities.com/SiliconValley/Way/3340/
Utilidades de
programacion para GameBoy y otras consolas, por Jens Restemeier. GB-Tools V2.2
está aquí disponible, con el bug de la utilidad de compresion corregido.
http://www.museo8bits.com
Excelente
sitio de Miguel
Durán, un coleccionista de consolas español. Mucha información.
http://www.tapir.org/gbc/
Galería y tutorial de la Game Boy camera.
http://www.devrs.com/gb/
Herramientas de desarrollo de hardware y software
9. CREDITOS
Quiero dedicar este espacio para nombrar
los documentos y los nombres de algunas personas que me han ayudado a armar este
FAQ en castellano para una de las mejores consolas portátiles de la historia:
FAQ en inglés de Game Boy (Hecho por Marat Fayzullin)
Manual oficial de Game Boy
Páginas web antes nombradas
Revista Club Nintendo
Revista Action Games
Revista Hobby Consolas
Videogames.org
Diego Macchi (Pinkstone, colaborador de Arqueología Digital), por mostrarme la Game Boy light
modelo silver
10. NOTAS FINALES
Simplemente
dedicarle este FAQ a todos aquellos interesados por los video juegos, espero les
sea útil, porque lo hice con mucho entusiasmo, dedicación y paciencia.
Si quieren mandar notas, información extra, trucos, reviews o todo lo que sea
referido al Game Boy, no duden en hacerlo, será bien recibida.
Gracias y chau
Matías Bianco (Peter
Pepper)
arqueologiadigital@yahoo.com.ar
FAQ terminado el día Lunes 04 de Noviembre a las 02:51 PM
____________________________________________________________________________________________
Arqueología Digital©2002
http://arquedigi.8m.com
arqueologiadigital@yahoo.com.ar