Nes mapper AxROM

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.

Fonte Nesdev

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!