Exemple #1
0
        public void Mbc1_1MB_Header_Test()
        {
            var bytes = File.ReadAllBytes("./Roms/rom_1MB.gb");

            Assert.NotNull(bytes);
            Mbc1Rom rom = new Mbc1Rom(bytes);

            Assert.AreEqual("mooneye-gb test", rom.Header.Title, "Title incorrect");
            Assert.False(rom.Header.Japanese, "Shouldn't be Japanese");
            Assert.AreEqual(8, rom.Header.RomBanks, "Wrong rom bank count");
            Assert.AreEqual(0, rom.Header.RamKB, "RAM shouldn't exist at all");
            Assert.AreEqual(128, rom.Header.RomKB, "ROM should be 128K");
            Assert.False(rom.Header.ColorOnly, "Shouldn't be a color rom");
        }
Exemple #2
0
        public void Mbc1_1MB_ReadWrite_Test()
        {
            var bytes = File.ReadAllBytes("./Roms/rom_1MB.gb");

            Assert.NotNull(bytes);
            Mbc1Rom rom = new Mbc1Rom(bytes);

            //Bank 0 read
            Assert.AreEqual(0xFF, rom[0x3FF0].lo, "bank 0 lo byte incorrect");
            Assert.AreEqual(0x01FF, rom[0x3FFF].wide, "bank 0 wide incorrect");
            //Bank 1 read
            var imm = rom[0x4000];

            Assert.AreEqual(0x01, imm.lo, "bank 1 lo byte incorrect");
            Assert.AreEqual(0x7E, imm.hi, "bank 1 wide incorrect");
            //Bank swap
            rom[0x2001] = 2;
            Assert.AreEqual(0xFF02, rom[0x4000].wide, "bank 2 wide incorrect");
            rom[0x3FFF] = 3;
            Assert.AreEqual(0xFF03, rom[0x4000].wide, "bank 3 wide incorrect");
            //banking mode
            Assert.True(rom.romBankingMode, "rom banking should be true");
            rom[0x7000] = 1;
            Assert.False(rom.romBankingMode, "rom banking mode should be ram banking mode");
            //ram enable
            Assert.False(rom.ram.enabled, "ram should be disabled");
            rom[0x0100] = 10;
            Assert.True(rom.ram.enabled, "ram should be enabled");
            //ram write/read
            rom[0xA000] = 0xFF;
            rom[0xA001] = 0xEE;
            Assert.AreEqual(0xEEFF, rom[0xA000].wide, "ram bank 0 should start with FF EE");
            //swap to ram bank 1
            rom[0x4001] = 1;
            rom[0xA000] = 0xFF;
            Assert.AreEqual(0xFF, rom[0xA000].lo, "ram bank 1 should start with FF");
            //swap back to bank 0
            rom[0x4001] = 0;
            Assert.AreEqual(0xEEFF, rom[0xA000].wide, "ram bank 0 should still start with FF EE");
        }