private void setButtons_labels() { byte x = 0; byte mbc = rom[0x0147]; for(int i=0x0134; i<=0x014C; i++) { x = (byte)(x-rom[i]-1); } if(x == rom[0x014D]) { DumpROM_b.Enabled = true; if(mbc == 0x03 || mbc == 0x06 || mbc == 0x09 || mbc == 0x0D || mbc == 0x0F || mbc == 0x10 || mbc == 0x13 || mbc == 0x17 || mbc == 0x1B || mbc == 0x1E || mbc == 0xFF) { DumpRAM_b.Enabled = true; WriteRAM_b.Enabled = true; } switch(rom[0x0148]) { case 0: { banks = 2; break; } case 1: { banks = 4; break; } case 2: { banks = 8; break; } case 3: { banks = 16; break; } case 4: { banks = 32; break; } case 5: { if(mbc <= 3) banks = 63; else banks = 64; break; } case 6: { if(rom[0x147] <= 3) banks = 125; else banks = 128; break; } case 7: { banks = 255; break; } default: break; } Banks_l.Text = "Banks: " + banks.ToString(); byte[] Title = new byte[16]; for (int i = 0; i < 16; i++) Title[i] = rom[0x0134 + i]; //System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding(); //System.Text.UTF8Encoding ROM_Title = new System.Text.ASCIIEncoding().GetString(Title); if(ROM_Title.LastIndexOf('?') != -1) ROM_Title.Remove(ROM_Title.LastIndexOf('?') - 4); System.Text.UnicodeEncoding enc = new System.Text.UnicodeEncoding(); Title_l.Text = "Title: " + enc.GetString(Title); rom_size = rom[0x0148]; byte ram_size = rom[0x0149]; switch (rom[0x0148]) { case 0x00: {Size_l.Text = "Size: 32 KBytes"; rom = new byte[32768]; break;} case 0x01: {Size_l.Text = "Size: 64 KBytes"; rom = new byte[65536]; break;} case 0x02: {Size_l.Text = "Size: 128 KBytes"; rom = new byte[131072]; break;} case 0x03: {Size_l.Text = "Size: 256 KBytes"; rom = new byte[262144]; break;} case 0x04: {Size_l.Text = "Size: 512 KBytes"; rom = new byte[524288]; break;} case 0x05: {Size_l.Text = "Size: 1 MBytes"; rom = new byte[1048576]; break;} case 0x06: {Size_l.Text = "Size: 2 MBytes"; rom = new byte[2097152]; break;} case 0x07: {Size_l.Text = "Size: 4 MBytes"; rom = new byte[4194304]; break;} case 0x52: {Size_l.Text = "Size: 1.1 MBytes"; rom = new byte[32768]; break;} case 0x53: {Size_l.Text = "Size: 1.2 MBytes"; rom = new byte[32768]; break;} case 0x54: { Size_l.Text = "Size: 1.5 MBytes"; rom = new byte[1572864]; break; } } switch (ram_size) { case 0x00: {RAM_l.Text = "RAM Size: None"; break;} case 0x01: {RAM_l.Text = "RAM Size: 2 KBytes"; RAM = new byte[2048]; break;} case 0x02: {RAM_l.Text = "RAM Size: 8 KBytes"; RAM = new byte[8192]; break;} case 0x03: { RAM_l.Text = "RAM Size: 32 KBytes"; RAM = new byte[32768]; break; } } MBC_l.Text = "MBC: None"; if (mbc <= 0x03 && mbc > 0x00) MBC_l.Text = "MBC: MBC1"; if(mbc <= 0x06 && mbc > 0x03) MBC_l.Text = "MBC: MBC2"; if(mbc <= 0x13 && mbc > 0x0D) MBC_l.Text = "MBC: MBC3"; if(mbc <= 0x17 && mbc > 0x13) MBC_l.Text = "MBC: MBC4"; if(mbc <= 0x0D && mbc > 0x09) MBC_l.Text = "MBC: MMM01"; if(mbc <= 0x1E && mbc > 0x17) MBC_l.Text = "MBC: MBC5"; if(mbc == 0xFD) MBC_l.Text = "MBC: BANDAI TAMA5"; if(mbc == 0xFE) MBC_l.Text = "MBC: HuC3"; if(mbc == 0xFF) MBC_l.Text = "MBC: HuC1"; if(mbc == 0xFC) MBC_l.Text = "MBC: POCKET CAMERA"; } }