forked from sin365/AxibugEmuOnline
254 lines
7.2 KiB
C#
254 lines
7.2 KiB
C#
//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);
|
|
// }
|
|
// }
|
|
//}
|
|
|