Пример #1
0
 public override void HardReset()
 {
     base.HardReset();
     base.Switch08KPRG(prg_08K_rom_mask, 0xE000, true);
     enable_mirroring_switch = enable_N106_sound = this.MapperNumber == 19;
     // This is not a hack, some games should be mapper 210 configured but assigned to mapper 19
     // TODO: find another way to setup Namcot 106 configurations for mapper 210 games
     switch (RomSHA1.ToUpper())
     {
     case "97E7E61EECB73CB1EA0C15AE51E65EA56301A685":    // Wagyan Land 2
     case "3D554F55411AB2DDD1A87E7583E643970DB784F3":    // Wagyan Land 3
     case "7FA51058307DB50825C2D3A3A98C0DA554BC3C92":    // Dream Master
     case "1C476C795CFC17E987C22FFD6F09BAF1396ED2C9":    // Family Circuit '91
     {
         enable_mirroring_switch = false;
         enable_N106_sound       = false;
         break;
     }
     }
     // TODO: Implement mapper 19 sound channels
     if (enable_N106_sound)
     {
         sound_channels = new Namcot106SoundChannel[8];
         for (int i = 0; i < 8; i++)
         {
             sound_channels[i] = new Namcot106SoundChannel(this);
             sound_channels[i].HardReset();
         }
         EXRAM           = new byte[128];
         soundReg        = 0;
         enabledChannels = 0;
         channelIndex    = 0;
     }
 }
Пример #2
0
        public override void HardReset()
        {
            base.HardReset();
            Switch16KPRG(prg_16K_ram_mask, 0xC000, true);
            // This is not a hack !
            // This is a qoute from 071.txt of [iNES Mappers by Mapper Number v0.6.1 by Disch]:
            // "One in paticular that needs to be noted is the board
            // used by Fire Hawk -- which has mapper controlled 1-screen mirroring.  On other boards, mirroring is
            // hardwired!  This is yet another one of those terrific mapper number incompatibilities."

            fireHawk = (RomSHA1.ToUpper() == "334781C830F135CF30A33E392D8AAA4AFDC223F9");
        }
Пример #3
0
        public override void HardReset()
        {
            base.HardReset();
            // This is not a hack, "Uncharted Waters" title actually use 2 chips of SRAM which depends on bit 2 of
            // $5113 register instead of first 2 bits for switching.
            // There's no other way to make switching right.
            switch (RomSHA1.ToUpper())
            {
            // Uncharted Waters
            case "37267833C984F176DB4B0BC9D45DABA0FFF45304": useSRAMmirroring = true; break;

            // Daikoukai Jidai (J)
            case "800AEFE756E85A0A78CCB4DAE68EBBA5DF24BF41": useSRAMmirroring = true; break;
            }
            System.Console.WriteLine("MMC5: using PRG RAM mirroring = " + useSRAMmirroring);

            CHROffset_spr = new int[8];
            CHROffsetEX   = new int[8];
            CHROffsetSP   = new int[8];
            chrRegA       = new int[8];
            chrRegB       = new int[4];
            prgReg        = new int[4];

            prgReg[3] = prg_08K_rom_mask;
            prg_mode  = 3;
            base.Switch08KPRG(prg_08K_rom_mask, 0x8000, true);
            base.Switch08KPRG(prg_08K_rom_mask, 0xA000, true);
            base.Switch08KPRG(prg_08K_rom_mask, 0xC000, true);
            base.Switch08KPRG(prg_08K_rom_mask, 0xE000, true);

            Switch04kCHREX(0, 0x0000);
            Switch04kCHRSP(0, 0x0000);
            Switch08kCHR_spr(0);

            TogglePRGRAMWritableEnable(true);
            TogglePRGRAMEnable(true);

            channel_sq1.HardReset();
            channel_sq2.HardReset();
            channel_pcm.HardReset();

            sound_seq_curr = 0;
            sound_seq_cyc += sound_seq[sound_seq_curr];
        }