Mega Drive

De ROMHackingWiki

Imagem:Revisar.gif Este artigo necessita de uma revisão. Você pode ajudar a ROMHackingWiki revisando-o agora mesmo.
Sega Genesis / Mega Drive Imagem:megadrive_console.jpg

Mega Drive é um console de jogos de vídeo da geração de 16 bits da SEGA que concorria diretamente com o Super Nintendo. Conhecido como "Genesis" nos Estados Unidos, o console fez grande sucesso na década de 1990, perdendo espaço após o surgimento e popularização da nova geração de consoles de 32 bits, como o Playstation da Sony.

Dentre os jogos de maior sucesso desse sistema está a série Sonic, the Hedgehog, a aventura de um veloz porco-espinho azul para salvar os animais de seu planeta. O jogo foi criado com o objetivo de rivalizar com o personagem Mario, o mascote da Nintendo, criando assim a SEGA seu próprio mascote e maior símbolo. A velocidade do jogo tinha por objetivo mostrar as vantagens do processador do Mega Drive em relação ao console de 16 bits da Nintendo.

Imagem:68k.jpg Motorola 68000 é um microprocessador CISC 32-bit, o primeiro membro de uma bem-sucedida família de microprocessadores da Motorola, em sua grande maioria compatíveis entre si. A família em si é normalmente conhecida como m68k ou ainda 680x0.


Tabela de conteúdo

Informações Técnicas

Console: Mega Drive / Genesis
Fabricante: SEGA
Bits: 16-Bits
Processador Principal: Motorola 68k
Processador Sonoro: Zilog Z80
Velocidade de Processamento: 8 MHz (aproximadamente)
Memória RAM: 64KB
Resolução Máxima: 320 x 224 (MAX) 
Cores: 512 (64 simultâneas) 
Som: 8 canais (8 bits) Estéreo

Cabeçalho da ROM

O cabeçalho da ROM para Mega Drive consiste de duas seções, cada uma de 256 bytes. A primeira é "exigida" pelo processador, e indicam o início da pilha, o endereço da rotina principal e os endereços das rotinas de exceções (traps) e interrupções. Já a segunda seção é uma padronização realizada pela SEGA para identificação do cartucho (direitos autorais, nome do produto, etc.) e informações sobre utilização de recursos do hardware (mapeamento de memória, periféricos, etc.).

O conteúdo de cada elemento do Vetor de Exceções é o endereço absoluto (em relação ao primeiro byte do arquivo binário) da respectiva rotina de tratamento da exceção. Cada elemento consiste de 4 bytes.

O costume é, quando for desejado não tratar certas exceções, elas reiniciem o software, ou seja, apontem para o começo do programa. Vale destacar que as interrupções de retraço devem ser tratadas, nem que seja não fazer nada, já que são efetivamente geradas a tempo constante.

Cabeçalho do Processador

:0x000:  Endereço do início da pilha (geralmente próximo ao fim da memória RAM) 
:0x004:  Endereço da rotina principal (valor inicial do PC, também para quando resetado) 
:0x068:  Interrupção de nível 2: no Mega Drive, Externa. 
:0x070:  Interrupção de nível 4: no Mega Drive, Retraço Horizontal. 
:0x078:  Interrupção de nível 6: no Mega Drive, Retraço Vertical.

Cabeçalho Padronizado da SEGA

:0x100:    'SEGA MEGA DRIVE'                                   1
:0x110:    '(C)SEGA 1988.JUL'                                  2
:0x120:    NOME DO JOGO (CASEIRO)                              3
:0x150:    NOME DO JOGO (ARCADE)                               4
:0x180:    'XX'                                                5
:0x182:    'XXXXXXX-XX'                                        6
:0x18E:    XXXX                                                7
:0x190:    'XXXXXXXXXXXXXXXX'                                  8
:0x1A0:    00000000, XXXXXXXX                                  9
:0x1A8:    RAM                                                 10
:0x1BC:    DADOS DO MODEM                                      11
:0x1C8:    OBSERVAÇÕES                                         12
:0x1F0:    País aonde foi fabricado o jogo                     13

Informações do Cabeçalho da Padronizado da SEGA

1. Nome do Console
Esta informação armazena o nome do console no cabeçalho. No caso, pode ser Sega Genesis ou Sega Mega Drive
2. Dados da Fabricação
Aviso de Licença. Os 4 bytes caracteres são para o código da Companhia que produziu o jogo.
Após isso, temos um espaço e a data de produção do jogo no formato ano-mês
Abaixo é possivel encontrar as tabelas com o Código das Companhias e outra com a Abreviação dos Meses.
3. Nome do Jogo (Versão Caseira)
Esta informação armazena o nome do jogo em sua versão Caseira (país de origem)
Este campo pode armazenar até 48 bytes
4. Nome do Jogo (Versão Arcade)
Esta informação armazena o nome do jogo em sua versão ARCADE (internacionalmente)
Este campo pode armazenar até 48 bytes
Nota: Essa variação de nomes pode ser notada no jogo Street of Rage, que tem Bare Knuckle como nome na versão arcade
5. Tipo do Produto
Este campo armazena o tipo do produto em questão
  1. GM = Jogo
  2. AL = Educativo
6. Código do Produto e Número da Versão
Esta linha armazena o código do produto e o número de versão do cartucho
  • Os 7 primeiros bytes são dedicados ao código do produto
  • Os 2 últimos bytes são para o número da versão, que pode variar de acordo com a rom ou software.
7. CheckSum
São 2 bytes para verificar a integridade da ROM.
Existe um cálculo para este código, sobre o qual se pode obter mais informações em CheckSum.
8. Suporte a Controladores
Este campo pode armazenar até 16 bytes
J = Controle de 3 Botões 4 = Jogo em Grupo
6 = Controle de 6 Botões 0 = Controle para MS
K = Teclado R = Serial RS232C
P = Impressora T = Tablet
B = Bola de Controle V = Controlador Paddle
F = Drive de Disquete C = CD-ROM
L = Ativador M = Mega Mouse
9. Capacidade da ROM
Este campo armazena o endereço inicial e o endereço final da ROM. São 4 bytes para cada endereço.
O cálculo do CheckSum é feito em cima dessa informação
10. RAM
Informações da RAM do console... Para uso exclusivo do sistema.
11. Dados do Modem
Esta linha indica se o cartucho tem suporte a MODEM ou não. No Brasil, existiu uma linha de cartuchos do Banco Bradesco que possuía o modem para conexão.
XXXX - FirmName
YY - Nº Modem
Z - Versão
12. Observações
Aqui ficam armazenadas algumas observações sobre as instruções da ROM.
13. Código do País de Fabricação
Serve para especificar o país de fabricação do console, em alguns jogos, para restrigir o uso do cartucho em outras regiões.
A Tabela contendo os códigos oficiais dos países
E = Europa
J = Japão
U = EUA       
A = Ásia
B = Bélgica
4 = Brasil
F = França
8 = Hong Kong
Apêndice¹: Tabela de Companhias
CÓDIGO COMPANHIA
ACLD Ballistic
ASCI Asciiware
RSI Razorsoft
SEGA SEGA
TREC Treco
VRGN Virgin Games
WSTN Westone
10 Takara
11 Taito or Accolade
12 Capcom
13 Data East
14 Namco or Tengen
15 Sunsoft
16 Bandai
17 Dempa
18 Technosoft
19 Technosoft
20 Asmik
22 Micronet
23 Vic Tokai
24 American Sammy
29 Kyugo
32 Wolfteam
33 Kaneko
35 Toaplan
36 Tecmo
40 Toaplan
42 UFL Company Limited
43 Human
45 Game Arts
47 Sage's Creation
48 Tengen
49 Renovation or Telenet
50 Eletronic Arts
56 Razorsoft
58 Mentrix
60 Victor Musical Industries
69 Arena
70 Virgin
73 Soft Vision
74 Palsoft
76 Koei
79 U.S. Gold
81 Acclaim/Flying Edge
83 Gametek
86 Absolute
93 Sony
95 Konami
97 Tradewest
100 T*HQ Software
101 Tecmagik
112 Designer Software
113 Psygnosis
119 Accolade
120 Code Masters
125 Interplay
130 Activision
132 Shiny & Playmates
144 Atlus
151 Infogrames
161 Fox Interactive
239 Disney Interactive
Apêndice²: Tabela de Abreviação dos Meses
ABREVIAÇÃO MÊS
JAN Janeiro
FEB Fevereiro
MAR Março
APR ou APL Abril
MAY Maio
JUN Junho
JUL Julho
AUG ou 08 Agosto
SEP ou SEPT Setembro
OCT Outubro
NOV Novembro
DEC Dezembro

VDP (Video Display Processor)

Trata-se de uma derivação da VDP do Master System, que por sua vez é derivado do Texas Instruments TMS9918.
É o responsável por exibir os gráficos na tela e gerenciar os endereços das memórias relativas ao vídeo (CRAM, VRAM e SRAM).

Modos de exibição

Para facilitar a compreensão dos termos usados, aqui está a lista completa dos modos de exibição:
 Modo 0 - TMS9918 específico
 Modo 1 - TMS9918 específico
 Modo 2 - TMS9918 específico
 Modo 3 - TMS9918 específico
 Modo 4 - Modo Master System
 Modo 5 - Modo Mega Drive
Lista de modos suportados:
 TMS9918    - Modos 0, 1, 2, 3
 SMS        - Modos 0, 1, 2, 3, 4
 Genesis    - Modos 4, 5 (possibilita combinações com 0 e outros relativos)
Não se assuste se não houver nenhuma informação sobre Game Gear, ele assume uma identidade igual ao do Master System.

Mapeamento dos Endereços do VDP

O VDP ocupa os endereços de C00000h a C0001Fh
A tabela abaixo exibe detalhadamente a função de cada um:
C00000h    -   Porta de dados (8=r/w, 16=r/w)
C00002h    -   Porta de dados (alternativo/espelho - não recomendado)
C00004h    -   Porta de controle (8=r/w, 16=r/w)
C00006h    -   Porta de controle (alternativo/espelho - não recomendado)
C00008h    -   Contador HV (8/16=r/o)
C0000Ah    -   Contador HV (alternativo/espelho - não recomendado)
C0000Ch    -   Contador HV (alternativo/espelho - não recomendado)
C0000Eh    -   Contador HV (alternativo/espelho - não recomendado)
C00011h    -   SN76489 PSG (8=w/o)
C00013h    -   SN76489 PSG (alternativo/espelho - não recomendado)
C00015h    -   SN76489 PSG (alternativo/espelho - não recomendado)
C00017h    -   SN76489 PSG (alternativo/espelho - não recomendado)

Interrupções

O VDP gera todas suas interrupções para o 68000. São 3 ao todo: as de nível 2, 4 e 6 estão disponíveis para ela no hardware.

Interrupção de Retraço Vertical

Também conhecida como VBLANK, é acionada de tempo em tempo (50Hz ou 60Hz, dependendo do sistema de cores NTSC ou PAL) para indicar o fim do desenho na tela.

Interrupção de Retraço Horizontal

Também conhecida como HBLANK, é acionada de tempo em tempo para indicar o fim do desenho de uma linha na tela.

Interrupção Externa

Contador HV

Registradores de STATUS

Portas do VDP

VRAM, CRAM e VSRAM

O VDP contém três memórias internas.

VRAM

A VRAM (mémoria de vídeo) é a de maior capacidade (contém 64KiB) e é que tem diversas funções:

  • armazenar todos os tiles que podem ser exibidos na tela (seja para fundo ou para sprite)
  • armazenar a tabela de mapeamento dos planos de fundo
  • armazenar a tabela de sprites
  • armazenar a tabela de rolagem horizontal

Que região da VRAM tem que função é definido pelos registradores do VDP.

CRAM

A CRAM (memória de cores) é a responsável por armazenar as 4 paletas de cores, cada uma com 16 cores de 9 bits. Isso implica em poder exibir na tela até 64 cores diferentes usadas simultaneamente (4 paletas x 16 cores), de um total de 512 cores possíveis(2^9).

A cor é registrada em formato RGB invertido, 3 bits cada componente.

----bbb-ggg-rrr-
r: a componente vermelha (0-7)
g: a componente verde (0-7)
b: a componente azul (0-7)

O acesso de leitura/escrita de cores é como se cada cor tivesse 16 bits.

VSRAM

Armazena os dados de rolagem vertical. Contém 40 palavras de 10bits, acessadas como se fossem words.

DMA

Padrões

Planos de Fundo

Prioridades

Modos de Sombreamento e Iluminação

Registradores do VDP

Formatos de ROM

Atualmente existem três formatos de ROM para este console:
*(.BIN) Super Magic Drive - Formato de arquivo binário
*(.SMD) Super Magic Drive - Formato de arquivo entrelaçado com cabeçalho
*(.MD) Multi Game Doctor - Formato de arquivo entrelaçado sem cabeçalho

Formato Super Magic Drive Binário (.BIN)

Um simples dump de um cartucho, os dados são armazenados como em qualquer outro arquivo binário.

Formato Super Magic Drive Entrelaçado c/ Cabeçalho (.SMD)

Esse formato de arquivo é muito mais complexo. Ele tem 512 bytes de cabeçalho e depois contém blocos de 16 KiB. Cada bloco é dividido em duas partes: a primeira metade contém os bytes das posições pares, enquanto a segunda contém os das ímpares.
Foi criado a partir da limitação de hardware do dumper usado (só lia 8 bits por vez, em vez de 16).

Formato Multi Game Doctor Entrelaçado s/ Cabeçalho (.MD)

Esse formato de arquivo é semelhante ao .SMD, mas não possui cabeçalho.

Bibliografia

[| Genesis ROM FORMAT by d0nut] [| Sega Genesis VDP documentation by Charles McDonald] [| Genesis Technical Overview from Sega] [| Sega Genesis Hardware Notes by Charles McDonald]

Ferramentas pessoais