Este documento describe un taller de desarrollo de videojuegos para la consola Sega Megadrive/Genesis. Explica brevemente qué es la consola, por qué es una buena plataforma para programar, y qué herramientas y conocimientos se necesitan para crear juegos para ella. También incluye detalles técnicos sobre sus especificaciones, como su procesador, memoria, gráficos, sonido y cartuchos.
3. ¿Qué es la Megadrive/Genesis?
● Lanzamiento 29 de Octubre de 1988 en Japón.
4. ¿Qué es la Megadrive/Genesis?
● Lanzamiento 29 de Octubre de 1988 en Japón.
● Tercera consola de Sega, sucesora de la Master System.
5. ¿Qué es la Megadrive/Genesis?
● Lanzamiento 29 de Octubre de 1988 en Japón.
● Tercera consola de Sega, sucesora de la Master System.
● Cuarta generación, competencia de Pc-Engine, NeoGeo y SNES.
6. ¿Qué es la Megadrive/Genesis?
● Lanzamiento 29 de Octubre de 1988 en Japón.
● Tercera consola de Sega, sucesora de la Master System.
● Cuarta generación, competencia de Pc-Engine, NeoGeo y SNES.
● Ventas de 30-40 millones de unidades y más de 900 juegos.
7. ¿Qué es la Megadrive/Genesis?
● Lanzamiento 29 de Octubre de 1988 en Japón.
● Tercera consola de Sega, sucesora de la Master System.
● Cuarta generación, competencia de Pc-Engine, NeoGeo y SNES.
● Ventas de 30-40 millones de unidades y más de 900 juegos.
● Tuvo 2 expansiones, Mega CD y 32X.
9. ¿Por qué programar la Megadrive?
● Potente.
● Componentes comunes y bien documentados.
10. ¿Por qué programar la Megadrive?
● Potente.
● Componentes comunes y bien documentados.
● Multitud de opciones de lenguajes donde elegir.
11. ¿Por qué programar la Megadrive?
● Potente.
● Componentes comunes y bien documentados.
● Multitud de opciones de lenguajes donde elegir.
● Compiladores y herramientas disponibles.
12. ¿Por qué programar la Megadrive?
● Potente.
● Componentes comunes y bien documentados.
● Multitud de opciones de lenguajes donde elegir.
● Compiladores y herramientas disponibles.
● Posibilidad de fabricación.
13. ¿Por qué programar la Megadrive?
● Potente.
● Componentes comunes y bien documentados.
● Multitud de opciones de lenguajes donde elegir.
● Compiladores y herramientas disponibles.
● Posibilidad de fabricación.
● Autorización de SEGA.
14. ¿Por qué programar la Megadrive?
● Potente.
● Componentes comunes y bien documentados.
● Multitud de opciones de lenguajes donde elegir.
● Compiladores y herramientas disponibles.
● Posibilidad de fabricación.
● Autorización de SEGA.
● MOLA.
17. ¿Qué necesito para programar para
ella?
● Un ordenador (Windows, Linux, OSX, VM...).
18. ¿Qué necesito para programar para
ella?
● Un ordenador (Windows, Linux, OSX, VM...).
● Ensamblador (SJASM, ASM68K o SNASM68k).
19. ¿Qué necesito para programar para
ella?
● Un ordenador (Windows, Linux, OSX, VM...).
● Ensamblador (SJASM, ASM68K o SNASM68k).
● Basic (http://devster.monkeeh.com/sega/basiegaxorz/).
20. ¿Qué necesito para programar para
ella?
● Un ordenador (Windows, Linux, OSX, VM...).
● Ensamblador (SJASM, ASM68K o SNASM68k).
● Basic (http://devster.monkeeh.com/sega/basiegaxorz/).
● C (SGDK http://github.com/Stephane-D/SGDK).
21. ¿Qué necesito para programar para
ella?
● Un ordenador (Windows, Linux, OSX, VM...).
● Ensamblador (SJASM, ASM68K o SNASM68k).
● Basic (http://devster.monkeeh.com/sega/basiegaxorz/).
● C (SGDK http://github.com/Stephane-D/SGDK).
● Emulador (Gens KMOD).
22. ¿Qué necesito para programar para
ella?
● Un ordenador (Windows, Linux, OSX, VM...).
● Ensamblador (SJASM, ASM68K o SNASM68k).
● Basic (http://devster.monkeeh.com/sega/basiegaxorz/).
● C (SGDK http://github.com/Stephane-D/SGDK).
● Emulador (Gens KMOD).
● Una Megadrive.
23. ¿Qué necesito para programar para
ella?
● Un ordenador (Windows, Linux, OSX, VM...).
● Ensamblador (SJASM, ASM68K o SNASM68k).
● Basic (http://devster.monkeeh.com/sega/basiegaxorz/).
● C (SGDK http://github.com/Stephane-D/SGDK).
● Emulador (Gens KMOD).
● Una Megadrive.
● Cartucho Flash (http://krikzz.com/store/).
24. ¿Qué necesito para programar para
ella?
● Un ordenador (Windows, Linux, OSX, VM...).
● Ensamblador (SJASM, ASM68K o SNASM68k).
● Basic (http://devster.monkeeh.com/sega/basiegaxorz/).
● C (SGDK http://github.com/Stephane-D/SGDK).
● Emulador (Gens KMOD).
● Una Megadrive.
● Cartucho Flash (http://krikzz.com/store/).
●
Mucha paciencia.
25. Procesadores
- Motorola 68000 de 16 bits a 7,61 MHz (PAL) o 7,67 MHz
(NTSC) → 7.68 millones de ciclos por segundo, a 60 FPS
nos deja 128.000 ciclos por frame (p.e. add.l 8 ciclos, para
PAL 153.600 ciclos).
- Zilog Z80 de 8 bits a 3,55 MHz (PAL) o 3,58 MHz (NTSC).
Sonido y CPU principal en modo de compatibilidad con
Master System (Sin BIOS ni FM).
26. Memoria
● RAM Principal: 64 KB
– Programa.
● VRAM: 64 KB (VDP soporta 128 KB)
- Tiles, tablas de planos/sprites y el scroll horizontal (entero,
bloques de 1 celda o 1 linea), situación a elección del
programador.
● CRAM: El VDP tiene 64 entradas de 9-bit, 64 palabras en total,
para guardar 64 colores.
● VSRAM: El scroll vertical (total o bloque de 2 celdas) también
está incluido en el VDP.
● RAM de Sonido: 8 Kb
28. Cartucho
● Capacidad de los cartuchos: hasta los 4 MB = 32 Mbits,
con mapper 32 MB = 256 Mbits (en bancos de 512 kb),
Super Street Fighter II llegó a los 40 Mbits (6 MB).
29. Gráficos - VDP
● Un procesador VDP (Video Display Processor) es el encargado
de generar y manejar los gráficos (sprites, planos de scroll, etc.).
Deriva del VDP de Sega Master System VDP para compatibilidad
(Modo IV) que a su vez deriva del Texas Instruments TMS9918A.
● Resolución: (Modo V) 40 columnas 320 x 224, 36 columnas 256 x
224, más un modo entrelazado de 448 lineas de alto (Sonic 2) y
posibilidad de 240 en PAL.
● Planos A, B y Window. Este plano puede ser usado como
remplazo del A (menús). Los planos se pueden mover por
completo o por zonas especificas horizontal y verticalmente.
Tamaño 32*32, 32*64, 32*128, 64*32, 64*64 y 128*32.
30. Gráficos - VDP
● Paleta: 512 colores (múltiplos de 34), de los cuales podrán
elegirse 60 para mostrarse simultáneamente con una
configuración habitual de 4 paletas de 16 colores cada una,
siendo el primer color transparente (más cambiando la paleta
durante el barrido y/o activando el modo shadow-highlight).
● Sprites simultáneos en pantalla: 80/64, 20/16 máximo por
scanline. Tamaños desde 8x8 hasta 32x32 (8x16, 8x24...).
● El VDP dispone de 25 registros, 24 de ellos programables.
Algunos aparentan no hacer nada y no están documentados, son
rastros del VDP original de Master System. El ultimo registro solo
es de lectura y sirve para obtener información sobre su estado.
32. Sonido
● Chip de sonido principal de 6 canales FM Yamaha YM2612.
– El sexto canal tiene un modo DAC donde puede reproducir un
PCM de 8 bit.
● Chip de sonido adicional de 4 canales PSG (Programmable Sound
Generator) Texas Instruments SN76489, incluido dentro del VDP.
34. MINILIBS
● Simpleza y accesibilidad como objetivo.
● Control básico de paletas, controles, capas,
sprites, interrupciones, sram y sonido.
● Basado en código de Steff (SGDK), Shiru
(PSG), Chilly Willy y propio.
● Herramientas de conversión GFX por
@PixelArtM
● GCC 4.5.2 (2010)
35. Contenido MINILIBS
● Appack.s – Descompresión de GFX.
● Crt0.s – Cabecera y arranque.
● Hw_md.s – Funciones de soporte.
● Minilib.c – Funciones gráficas.
● Sram_a.s y sram_control.c – Control de la
SRAM.
● Makefile.gen
● Genbuild.bat
36. Carpeta SOUND
● Sound.c – control del Driver XGM y PSG.
● Z80_xgm.s80 – driver XGM.
● Z80_def.i80, z80_fct.i80 y z80_mac.i80 –
código auxiliar del driver XGM.
● En carpeta XGM se convierten las canciones
VGM y samples WAV.
● En carpeta PSG se convierten los sonidos
PSG.
37. Ayuda
● Carpeta DOC, GENESIS Technical Overview
y VDP - The MegaDrive Wiki.
● Carpeta TOOLS, conversores gráficos de
paletas, fondos y sprites por PixelArtM.
● Carpeta EXAMPLES, desde Hola Mundo a
manejo de la SRAM pasando por el Sonido.