Exemple #1
0
        public byte ReadMemory8(ushort address)
        {
            byte returnvalue = 0;

            if (address < 0x2000)
            {
                if (address < 0x800)
                {
                    returnvalue = scratchRam[0][address];
                }
                else if (address < 0x1000)
                {
                    returnvalue = scratchRam[1][address - 0x800];
                    //Console.WriteLine("I need ram Mirroring {0:x}", address);
                }

                else if (address < 0x1800)
                {
                    returnvalue = scratchRam[2][address - 0x1000];
                    //Console.WriteLine("I need ram Mirroring {0:x}", address);
                }
                //else if (address < 0x2000) {
                else
                {
                    returnvalue = scratchRam[3][address - 0x1800];
                    //Console.WriteLine("I need ram Mirroring {0:x}", address);
                }

                //returnvalue = scratchRam[address >> 11][address & 0x7ff];
            }
            else if (address < 0x6000)
            {
                switch (address)
                {
                case (0x2002): returnvalue = myPpu.StatusRegisterRead(); break;

                case (0x2004): returnvalue = myPpu.SpriteRamIORegisterRead(); break;

                case (0x2007): returnvalue = myPpu.VramIORegisterRead(); break;

                //case (0x4015): returnvalue = myPPU.Sound_Signal_Register_Read(); break;
                case (0x4016): returnvalue = myJoypad.Joypad1Read(); break;

                case (0x4017): returnvalue = Joypad.Joypad2Read(); break;
                    //default: Console.WriteLine("UNKOWN READ: {0:x}", address); break;
                }
            }
            else if (address < 0x8000)
            {
                returnvalue = saveRam[address - 0x6000];
                if (myCartridge.Mapper == 5)
                {
                    returnvalue = 1;
                }
            }
            else
            {
                returnvalue = myMapper.ReadPrgRom(address);
            }
            return(returnvalue);
        }