Mega Drive
De ROMHackingWiki
| Este artigo necessita de uma revisão. Você pode ajudar a ROMHackingWiki revisando-o agora mesmo. |
| ||
|
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. |
| 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. |
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
- GM = Jogo
- 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
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)
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]




