//using System; //using Unity.Android.Gradle; //using Unity.Android.Gradle.Manifest; //using VirtualNes.Core; //namespace VirtualNes.Core //{ // public class map0_3208cn : Mapper // { // public map0_3208cn(NES parent) : base(parent) { } // //void map0_3208cn::Reset() // public override void Reset() // { // SetPROM_32K_Bank(0); // } // //void map0_3208cn::Write(WORD addr, BYTE data) // public override void Write(ushort addr, byte data) // { // //addr = 0x8000,Çл» PROM // if (addr == 0x8032) // SetPROM_32K_Bank(data); // if (addr == 0x8416) // SetPROM_16K_Bank(4, data); // if (addr == 0x8616) // SetPROM_16K_Bank(6, data); // if (addr == 0x8408) // SetPROM_8K_Bank(4, data); // if (addr == 0x8508) // SetPROM_8K_Bank(5, data); // if (addr == 0x8608) // SetPROM_8K_Bank(6, data); // if (addr == 0x8708) // SetPROM_8K_Bank(7, data); // //addr = 0x8001,Çл» VROM // if (addr == 0x9008) // SetVROM_8K_Bank(data); // if (addr == 0x9004) // SetVROM_4K_Bank(0, data); // if (addr == 0x9404) // SetVROM_4K_Bank(4, data); // if (addr == 0x9001) // SetVROM_1K_Bank(0, data); // if (addr == 0x9101) // SetVROM_1K_Bank(1, data); // if (addr == 0x9201) // SetVROM_1K_Bank(2, data); // if (addr == 0x9301) // SetVROM_1K_Bank(3, data); // if (addr == 0x9401) // SetVROM_1K_Bank(4, data); // if (addr == 0x9501) // SetVROM_1K_Bank(5, data); // if (addr == 0x9601) // SetVROM_1K_Bank(6, data); // if (addr == 0x9701) // SetVROM_1K_Bank(7, data); // } // } // public class GeniusMerioBros : Mapper // { // public GeniusMerioBros(NES parent) : base(parent) { } // //void GeniusMerioBros::Reset() // public override void Reset() // { // SetPROM_32K_Bank(0); // memcpy(WRAM, PROM + 0x2000 * 4, 0x800); // } // //BYTE GeniusMerioBros::ReadLow(WORD A) // public override byte ReadLow(ushort addr) // { // if (A >= 0x6000 && A <= 0x6FFF) // { // return CPU_MEM_BANK[0][A & 0x7FF]; // } // else if (A >= 0x7000 && A <= 0x7FFF) // { // return XRAM[A & 0x7FF]; // } // else // return (BYTE)(A >> 8); // } // //void GeniusMerioBros::WriteLow(WORD A, BYTE V) // public override void WriteLow(ushort addr, byte data) // { // if (A >= 0x7000 && A <= 0x7FFF) // { // XRAM[A & 0x7FF] = V; // } // else // if (A >= 0x6000 && A <= 0x6FFF) // { // CPU_MEM_BANK[A >> 13][A & 0x1FFF] = V; // } // } // } // public class smb2j : Mapper // { // BYTE prg, IRQa; // WORD IRQCount; // public smb2j(NES parent) : base(parent) { } // //Super Mario Bros. 2j (Unl) [U][!] // //void smb2j::Reset() // public override void Reset() // { // prg = 0; // memcpy(MRAM, &PROMPTR[1][0x1000], 0x1000); // SetPrg8r(1, 0x6000, 1); // SetPROM_32K_Bank(prg); // SetVROM_8K_Bank(0); // SetVRAM_Mirror(VRAM_VMIRROR); // IRQa = 0; // IRQCount = 0; // } // //void smb2j::Write(WORD A, BYTE V)// (0x4020,0xffff) // public override void Write(ushort addr, byte data) // { // if (A == 0x4022) // { // prg = V & 1; // SetPROM_32K_Bank(prg); // } // if (A == 0x4122) // { // IRQa = V; // IRQCount = 0; // nes->cpu->ClrIRQ(IRQ_MAPPER); // } // } // //void smb2j::WriteLow(WORD A, BYTE V) // public override void WriteLow(ushort addr, byte data) // { // Write(A, V); // } // //void smb2j::Clock(INT a) // public override void Clock(int cycles) // { // if (IRQa) // { // IRQCount += a * 3; // if ((IRQCount >> 12) == IRQa) // nes->cpu->SetIRQ(IRQ_MAPPER); // } // } // //BYTE smb2j::ReadLow(WORD A) // public override byte ReadLow(ushort addr) // { // if ((A >= 0x5000) && (A < 0x6000)) // return MRAM[A - 0x5000]; // return Mapper::ReadLow(A); // } // } // //public class smb2j : Mapper // //{ // // WORD cmdreg; // // BYTE invalid_data; // // public smb2j(NES parent) : base(parent) { } // // void Reset(); // // void SoftReset(); // // void Write(WORD addr, BYTE data); // // BYTE Read(WORD addr); // // void Sync(void); // //} // //void Mapper8157::SoftReset() // // { // // cmdreg = 0x200; // // invalid_data ^= 1; // // Sync(); // // } // // void Mapper8157::Sync(void) // // { // // SetPrg16r((cmdreg & 0x060) >> 5, 0x8000, (cmdreg & 0x01C) >> 2); // // SetPrg16r((cmdreg & 0x060) >> 5, 0xC000, (cmdreg & 0x200) ? (PROM_16K_SIZE / 4 - 1) : 0); // // SetVRAM_Mirror(((cmdreg & 2) >> 1) ^ 1); // // } // // BYTE Mapper8157::Read(WORD A) // // { // // if (invalid_data && cmdreg & 0x100) // // return 0xFF; // // else // // return Mapper::Read(A); // // } // // void Mapper8157::Write(WORD A, BYTE V) // // { // // cmdreg = A; // // Sync(); // // } // public class MapperT262 : Mapper // { // uint16 addrreg; // uint8 datareg; // uint8 busy; // public MapperT262(NES parent) : base(parent) { } // //void MapperT262::Reset() // public override void Reset() // { // SetVROM_8K_Bank(0); // busy = 0; // addrreg = 0; // datareg = 0; // uint16 base = ((addrreg & 0x60) >> 2) | ((addrreg & 0x100) >> 3); // SetPROM_16K_Bank(0x8000 >> 13, (datareg & 7) | base); // SetPROM_16K_Bank(0xC000 >> 13, 7 | base); // SetVRAM_Mirror(((addrreg & 2) >> 1) ^ 1); // } // //void MapperT262::Write(WORD A, BYTE V) // public override void Write(ushort addr, byte data) // { // if (busy || (A == 0x8000)) // datareg = V; // else // { // addrreg = A; // busy = 1; // } // uint16 base = ((addrreg & 0x60) >> 2) | ((addrreg & 0x100) >> 3); // SetPROM_16K_Bank(0x8000 >> 13, (datareg & 7) | base); // SetPROM_16K_Bank(0xC000 >> 13, 7 | base); // SetVRAM_Mirror(((addrreg & 2) >> 1) ^ 1); // } // } //}