AxibugEmuOnline/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Mapper/UnifMapper.cs
2025-01-13 22:29:19 +08:00

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);
// }
// }
//}