Ejemplo n.º 1
0
        public override bool Configure(NES.EDetectionOrigin origin)
        {
            //analyze board type
            switch (Cart.board_type)
            {
            case "NES-TLSROM":                     //pro sport hockey (U)
                AssertPrg(128); AssertChr(128); AssertVram(0); AssertWram(0);
                break;

            case "MAPPER118":
                AssertVram(0);
                break;

            case "HVC-TKSROM":                     //ys III: wanderers from ys (J)
                AssertPrg(256); AssertChr(128); AssertVram(0); AssertWram(8);
                AssertBattery(true);
                break;

            case "TENGEN-800037":                     //Alien Syndrome (U)
                // this board is actually a RAMBO-1 (mapper064) with TLS-style rewiring
                // but it seems to work fine here, so lets not worry about it
                AssertPrg(128); AssertChr(128); AssertVram(0); AssertWram(0);
                break;

            case "MAPPER158":
                // as above
                AssertVram(0); Cart.wram_size = 0;
                break;

            case "HVC-TLSROM":
                AssertPrg(256); AssertChr(128); AssertVram(0); AssertWram(0);
                break;

            default:
                return(false);
            }

            BaseSetup();
            SetMirrorType(EMirrorType.Vertical);

            return(true);
        }
Ejemplo n.º 2
0
        public override bool Configure(NES.EDetectionOrigin origin)
        {
            switch (Cart.board_type)
            {
            case "MAPPER038":
            case "UNL-PCI556":
                break;

            default:
                return(false);
            }
            AssertPrg(128);
            AssertChr(32);
            AssertVram(0);
            AssertWram(0);
            prg_mask = Cart.prg_size / 32 - 1;
            chr_mask = Cart.chr_size / 8 - 1;
            SetMirrorType(Cart.pad_h, Cart.pad_v);
            return(true);
        }
Ejemplo n.º 3
0
		public override bool Configure(NES.EDetectionOrigin origin)
		{
			switch (Cart.board_type)
			{
				case "MAPPER083":
					if (Cart.prg_size == 256)
					{
						prg_bank_mask_16k = Cart.prg_size / 16 - 1;
						prg_bank_mask_8k = Cart.prg_size / 8 - 1;
						chr_bank_mask_2k = Cart.prg_size / 2 - 1;

						//prg_regs[1] = (byte)prg_bank_mask_16k;
						//is_2k_bank = true;
						return true;
					}
					return false;
				default:
					return false;
			}
		}
Ejemplo n.º 4
0
        public override bool Configure(NES.EDetectionOrigin origin)
        {
            switch (Cart.board_type)
            {
            case "AVE-NINA-02":                     // untested
            case "AVE-NINA-01":                     //Impossible Mission 2 (U)
                AssertPrg(64); AssertChr(64); AssertWram(8); AssertVram(0);
                break;

            default:
                return(false);
            }

            prg_bank_mask_32k = Cart.prg_size / 32 - 1;
            chr_bank_mask_4k  = Cart.chr_size / 4 - 1;

            SetMirrorType(Cart.pad_h, Cart.pad_v);

            return(true);
        }
Ejemplo n.º 5
0
        public override bool Configure(NES.EDetectionOrigin origin)
        {
            //configure
            switch (Cart.board_type)
            {
            case "MAPPER107":
                AssertPrg(128); AssertChr(64); AssertWram(8); AssertVram(0); AssertBattery(false);
                break;

            default:
                return(false);
            }

            prg_bank_mask_32k = (Cart.prg_size / 32) - 1;
            chr_bank_mask_8k  = (Cart.chr_size / 8) - 1;

            SetMirrorType(Cart.pad_h, Cart.pad_v);

            return(true);
        }
Ejemplo n.º 6
0
        public override bool Configure(NES.EDetectionOrigin origin)
        {
            switch (Cart.board_type)
            {
            case "MAPPER199":
                break;

            default:
                return(false);
            }

            exRegs[0] = (byte)(Cart.prg_size / 8 - 2);
            exRegs[1] = (byte)(Cart.prg_size / 8 - 1);
            exRegs[2] = 1;
            exRegs[3] = 3;

            BaseSetup();
            mmc3.MirrorMask = 3;
            return(true);
        }
Ejemplo n.º 7
0
        public override bool Configure(NES.EDetectionOrigin origin)
        {
            //analyze board type
            switch (Cart.board_type)
            {
            case "NAMCOT-3453":
            case "MAPPER154":
                break;

            default:
                return(false);
            }

            BaseSetup();
            SetMirrorType(EMirrorType.OneScreenA);

            chr_bank_mask_1k = Cart.chr_size - 1;

            return(true);
        }
Ejemplo n.º 8
0
        public override bool Configure(NES.EDetectionOrigin origin)
        {
            switch (Cart.board_type)
            {
            case "TENGEN-800008":
                AssertPrg(32, 64);
                AssertChr(8, 16, 32, 64);
                AssertWram(0);
                AssertVram(0);
                break;

            default:
                return(false);
            }

            prg_mask = (Cart.prg_size / 32) - 1;
            chr_mask = (Cart.chr_size / 8) - 1;

            return(true);
        }
Ejemplo n.º 9
0
        public override bool Configure(NES.EDetectionOrigin origin)
        {
            //analyze board type
            switch (Cart.board_type)
            {
            case "MAPPER252":
                break;

            default:
                return(false);
            }
            AssertPrg(256);
            AssertChr(128);
            AssertVram(2);
            AssertWram(8);
            prg_bank_mask_8k = Cart.prg_size / 8 - 1;
            chr_bank_mask_1k = Cart.chr_size - 1;
            SetMirrorType(EMirrorType.Vertical);
            return(true);
        }
Ejemplo n.º 10
0
        public override bool Configure(NES.EDetectionOrigin origin)
        {
            //configure
            switch (Cart.board_type)
            {
            case "MAPPER147":
            case "UNIF_UNL-TC-U01-1.5M":
                break;

            default:
                return(false);
            }

            _chrBankMask_8k  = Cart.chr_size / 8 - 1;
            _prgBankMask_32k = Cart.prg_size / 32 - 1;

            SetMirrorType(Cart.pad_h, Cart.pad_v);

            return(true);
        }
Ejemplo n.º 11
0
        public override bool Configure(NES.EDetectionOrigin origin)
        {
            //analyze board type
            switch (Cart.board_type)
            {
            case "MAPPER191":
                break;

            default:
                return(false);
            }

            //this board has 2k of chr ram
            Cart.vram_size = 2;
            BaseSetup();

            throw new InvalidOperationException("THIS MAPPER ISNT TESTED! WHAT GAME USES IT? PLEASE REPORT!");

            //return true;
        }
Ejemplo n.º 12
0
        public override bool Configure(NES.EDetectionOrigin origin)
        {
            switch (Cart.board_type)
            {
            case "Mapper029":
            case "UNIF_JERKFACE":
            case "UNIF_RET-CUFROM":
                break;

            default:
                return(false);
            }
            SetMirrorType(EMirrorType.Vertical);
            AssertChr(0);
            AssertPrg(32, 64, 128, 256, 512, 1024);
            Cart.wram_size    = 8;
            Cart.vram_size    = 32;
            prg_bank_mask_16k = Cart.prg_size / 16 - 1;
            return(true);
        }
Ejemplo n.º 13
0
        public override bool Configure(NES.EDetectionOrigin origin)
        {
            //configure
            switch (Cart.board_type)
            {
            case "MAPPER140":
                break;

            case "JALECO-JF-14":
                break;

            case "JALECO-JF-11":
                break;

            default:
                return(false);
            }
            SetMirrorType(Cart.pad_h, Cart.pad_v);
            return(true);
        }
        public override bool Configure(NES.EDetectionOrigin origin)
        {
            //configure
            switch (Cart.board_type)
            {
            case "MAPPER077":
                Cart.vram_size = 8;
                break;

            case "IREM-74*161/161/21/138":
                AssertVram(8);
                break;

            default:
                return(false);
            }

            SetMirrorType(EMirrorType.Vertical);
            return(true);
        }
Ejemplo n.º 15
0
        public override bool Configure(NES.EDetectionOrigin origin)
        {
            switch (Cart.board_type)
            {
            case "MAPPER222":
                break;

            default:
                return(false);
            }

            SetMirrorType(EMirrorType.Vertical);

            prg_bank_mask_8k = Cart.prg_size / 8 - 1;
            chr_bank_mask_1k = Cart.chr_size - 1;

            prg[3] = prg_bank_mask_8k;
            prg[2] = prg[3] - 1;
            return(true);
        }
Ejemplo n.º 16
0
        //1200-in-1
        //[NJXXX] Xiang Shuai Chuan Qi

        public override bool Configure(NES.EDetectionOrigin origin)
        {
            //configure
            switch (Cart.board_type)
            {
            case "MAPPER227":
                //AssertVram(16);
                Cart.vram_size = 16;
                break;

            default:
                return(false);
            }
            prg_bank_mask_16k = (Cart.prg_size / 16) - 1;

            SetMirrorType(EMirrorType.Vertical);
            vram_protected   = false;
            prg_banks_16k[0] = prg_banks_16k[1] = 0;
            return(true);
        }
Ejemplo n.º 17
0
        public override bool Configure(NES.EDetectionOrigin origin)
        {
            switch (Cart.board_type)
            {
            case "UNIF_UNL-FS304":
                AssertChr(0);
                AssertPrg(512, 1024, 2048, 4096);
                Cart.vram_size    = 8;
                Cart.wram_size    = 8;
                Cart.wram_battery = true;
                break;

            default:
                return(false);
            }

            prg_mask_32k = Cart.prg_size / 32 - 1;
            SetMirrorType(Cart.pad_h, Cart.pad_v);
            return(true);
        }
Ejemplo n.º 18
0
        public override bool Configure(NES.EDetectionOrigin origin)
        {
            switch (Cart.board_type)
            {
            case "MAPPER106":
                break;

            default:
                return(false);
            }

            regs[0x8] = 0xFF;
            regs[0x9] = 0xFF;
            regs[0xA] = 0xFF;
            regs[0xB] = 0xFF;

            prg_bank_mask_8k = Cart.prg_size / 8 - 1;
            chr_bank_mask_1k = Cart.chr_size / 1 - 1;

            return(true);
        }
Ejemplo n.º 19
0
        public override bool Configure(NES.EDetectionOrigin origin)
        {
            //configure
            switch (Cart.board_type)
            {
            case "MAPPER015":
                break;

            default:
                return(false);
            }
            prg_bank_mask_8k = (Cart.prg_size / 8) - 1;

            prg_banks_8k[0] = 0;
            prg_banks_8k[1] = 1;
            prg_banks_8k[2] = 2;
            prg_banks_8k[3] = 3;
            ApplyMemoryMapMask(prg_bank_mask_8k, prg_banks_8k);

            return(true);
        }
Ejemplo n.º 20
0
        public override bool Configure(NES.EDetectionOrigin origin)
        {
            switch (Cart.board_type)
            {
            case "MAPPER060":
                // Hack, Reset 4-in-1 is a different board but still assign to mapper 60
                if (Cart.prg_size != 64 || Cart.chr_size != 32)
                {
                    break;
                }

                return(false);

            default:
                return(false);
            }

            AutoMapperProps.Apply(this);

            return(true);
        }
Ejemplo n.º 21
0
        public override bool Configure(NES.EDetectionOrigin origin)
        {
            switch (Cart.board_type)
            {
            case "MAPPER212":
                break;

            default:
                return(false);
            }

            SetMirrorType(Cart.pad_h, Cart.pad_v);

            chr_bank_mask_8k  = Cart.chr_size / 8 - 1;
            prg_bank_mask_16k = Cart.prg_size / 16 - 1;
            prg_bank_mask_32k = Cart.prg_size / 32 - 1;

            _reg = 65535;

            return(true);
        }
Ejemplo n.º 22
0
        public override bool Configure(NES.EDetectionOrigin origin)
        {
            //analyze board type
            switch (Cart.board_type)
            {
            case "MAPPER112":
                break;

            default:
                return(false);
            }

            prg_bank_mask_8k = (Cart.prg_size / 8) - 1;
            int num_chr_banks = (Cart.chr_size);

            chr_bank_mask_1k = num_chr_banks - 1;
            SetMirrorType(EMirrorType.Vertical);
            Sync();

            return(true);
        }
Ejemplo n.º 23
0
        public override bool Configure(NES.EDetectionOrigin origin)
        {
            //analyze board type
            switch (Cart.board_type)
            {
            case "MAPPER191":
                break;

            default:
                return(false);
            }

            //this board has 2k of chr ram
            Cart.vram_size = 2;
            BaseSetup();

            //theres a possibly bogus Q Boy rom using this mapper but I have no idea what emulator its supposed to boot in, for proof
            //throw new InvalidOperationException("THIS MAPPER ISNT TESTED! WHAT GAME USES IT? PLEASE REPORT!");

            return(true);
        }
Ejemplo n.º 24
0
        public override bool Configure(NES.EDetectionOrigin origin)
        {
            //analyze board type
            switch (Cart.board_type)
            {
            case "MAPPER047":                     // Junk roms
                break;

            case "NES-QJ":                     //super spike v'ball / nintendo world cup
                AssertPrg(256); AssertChr(256); AssertVram(0); AssertWram(0);
                AssertBattery(false);
                break;

            default:
                return(false);
            }

            BaseSetup();

            return(true);
        }
Ejemplo n.º 25
0
        public override bool Configure(NES.EDetectionOrigin origin)
        {
            //configure
            switch (Cart.board_type)
            {
            case "SUNSOFT-5B":                     //Gimmick! (J)
                AssertPrg(256); AssertChr(128); AssertWram(0); AssertVram(0); AssertBattery(false);
                break;

            default:
                return(false);
            }

            BaseConfigure();
            if (NES.apu != null)
            {
                audio = new Sunsoft5BAudio(NES.apu.ExternalQueue);
            }

            return(true);
        }
Ejemplo n.º 26
0
        public override bool Configure(NES.EDetectionOrigin origin)
        {
            switch (Cart.board_type)
            {
            case "CAMERICA-GAMEGENIE":
                break;

            case "UNIF_CAMERICA-GAMEGENIE":
                break;

            default:
                return(false);
            }
            AssertChr(0); AssertPrg(4);
            Cart.wram_size = 0;
            Cart.vram_size = 0;

            SetMirroring(0, 0, 0, 0);

            return(true);
        }
Ejemplo n.º 27
0
        public override bool Configure(NES.EDetectionOrigin origin)
        {
            switch (Cart.board_type)
            {
            case "MAPPER034":                     // 3-D Battles of World Runner, The (U) [b5].nes
                // TODO: No idea what to assert here
                break;

            default:
                return(false);
            }

            Cart.wram_size    = 8;
            prg_bank_mask_32k = Cart.prg_size / 32 - 1;
            chr_bank_mask_4k  = Cart.chr_size / 4 - 1;

            SetMirrorType(Cart.pad_h, Cart.pad_v);
            chr[1] = 1;

            return(true);
        }
Ejemplo n.º 28
0
        public override bool Configure(NES.EDetectionOrigin origin)
        {
            switch (Cart.board_type)
            {
            case "UNIF_BMC-70in1":
                isLargeBanks = false;
                break;

            case "MAPPER236":
            case "UNIF_BMC-70in1B":
                isLargeBanks = true;
                break;

            default:
                return(false);
            }

            AutoMapperProps.Apply(this);

            return(true);
        }
Ejemplo n.º 29
0
        public override bool Configure(NES.EDetectionOrigin origin)
        {
            switch (Cart.board_type)
            {
            case "MAPPER091":
                break;

            default:
                return(false);
            }

            chr_bank_mask_2k = Cart.chr_size / 2 - 1;
            prg_bank_mask_8k = Cart.prg_size / 8 - 1;

            prg_regs_8k[3] = 0xFF;
            prg_regs_8k[2] = 0xFE;

            mmc3 = new MMC3(this, 0x7FFFFFFF);

            return(true);
        }
Ejemplo n.º 30
0
        public override bool Configure(NES.EDetectionOrigin origin)
        {
            //analyze board type
            switch (Cart.board_type)
            {
            case "MAPPER119":
                Cart.vram_size = 8; Cart.wram_size = 0;                         // Junk ROMs get these wrong
                break;

            case "NES-TQROM":                     // High Speed and Pin Bot
                AssertPrg(128); AssertChr(64); AssertVram(8); AssertWram(0);
                break;

            default:
                return(false);
            }

            BaseSetup();

            return(true);
        }