Há alguns meses, abordei o mapper UNROM em um post anterior, e agora é hora de nos aprofundarmos no funcionamento do mapper AxROM. O mapper AxROM é conhecido por seu gerenciamento simples de bancos de programa e gráficos
Mapper é um dispositivo de gerenciamento de memória que possui a capacidade de controlar um programa, nesse caso, de 256 kilobytes e apenas 8 kilobytes de gráficos.
No entanto, não se deixe enganar pelo tamanho aparentemente modesto dos gráficos, pois, como dizem, a qualidade não está necessariamente relacionada ao tamanho. Basta olhar para jogos como Battletoads, Aladdin ou Lion King para ver exemplos brilhantes de como a criatividade pode superar as limitações de espaço.
Uma das característica do mapper ANROM é a ausência de gerenciamento de memória de salvamento. Em resumo, a memória destinada à CPU é usada para o programa, enquanto a memória destinada à PPU é usada para os gráficos.
É importante notar que o mapper AxROM possui quatro variações: AMROM, ANROM, AN1ROM e AOROM. Para simplificar, costumamos nos referir a todas essas variações como AxROM.
Quando se trata de gerenciar os bancos de programa, eles são divididos em pedaços de 32 Kilobytes. A memória SRAM do cartucho alocada no endereço da PPU, por outro lado, não permite a troca de bancos.
O gerenciamento dos bancos da CPU é feito através de um único registro, localizado em $8000-$FFFF. Os bits 0, 1 e 2 desempenham um papel crucial na seleção do banco, enquanto o bit 4 controla o espelhamento H/V.
Para uma implementação simples, vamos usar uma Latch 74LS161 para controlar o banco de programa que está atualmente mapeado na CPU.
Seleção de Bancos:
- Quando o registrador de controle ($8000-$FFFF) é gravado com um valor, os bits 0, 1, 2 e 4 controlam o banco de programa.
- A Latch 74LS161 armazenará o valor dos bits de seleção.
Mapeamento Dinâmico:
- A cada gravação no registrador de controle, o valor armazenado na Latch 74LS161 é atualizado.
- Esse valor determina qual banco de programa está atualmente mapeado para a CPU.
- A CPU agora executará instruções a partir do banco de programa selecionado.
Mudança de Bancos:
- Para trocar de banco de programa, basta escrever um novo valor no registrador de controle.
- Isso atualiza a Latch e muda o banco de programa que a CPU está lendo.
Lembre-se de que esta é uma implementação simplificada e básica do AxROM usando uma Latch 74LS161. Não foi feita a ligação do bit 4 que controlar o espelhamento de memória (H/V).
Esperamos que esta imersão no mapper AxROM tenha sido esclarecedora e que você esteja ansioso por mais aventuras no intrigante mundo da emulação NES. Até o próximo post!