oscar64/include/nes/mmc3.c

37 lines
602 B
C

#include "mmc3.h"
char mmc3_shadow;
void mmc3_reset(void)
{
mmc3_shadow = 0;
}
void mmc3_config(MMC3MPrgMode pmode, MMC3MChrMode cmode)
{
mmc3_shadow = (pmode << 6) | (cmode << 7);
*(volatile char *)0x8000 = mmc3_shadow;
}
void mmc3_bank(MMC3BankReg reg, char bank)
{
*(volatile char *)0x8000 = reg | mmc3_shadow;
*(volatile char *)0x8001 = bank;
}
void mmc3_bank_prg(char bank)
{
mmc3_bank(MMC3B_PRG0, bank * 2 + 0);
mmc3_bank(MMC3B_PRG1, bank * 2 + 1);
}
void mmc3_bank_chr0(char bank)
{
mmc3_bank(MMC3B_CHR0, bank);
}
void mmc3_bank_chr1(char bank)
{
mmc3_bank(MMC3B_CHR1, bank);
}