Well.
0147 Cartridge type:
0 - ROM ONLY 5 - ROM+MBC2
1 - ROM+MBC1 6 - ROM+MBC2+BATTERY
2 - ROM+MBC1+RAM 8 - ROM+RAM
3 - ROM+MBC1+RAM+BATTERY 9 - ROM+RAM+BATTERY
FF - ROM+HuC1+RAM+BATTERY
0148 ROM size:
0 - 256Kbit = 32KByte = 2 banks
1 - 512Kbit = 64KByte = 4 banks
2 - 1Mbit = 128KByte = 8 banks
3 - 2Mbit = 256KByte = 16 banks
4 - 4Mbit = 512KByte = 32 banks
5 - 8Mbit = 1MByte = 64 banks
6 - 16Mbit = 2MByte = 128 banks
52 - 9Mbit = 1.1MByte = 72 banks
53 - 10Mbit = 1.2MByte = 80 banks
54 - 12Mbit = 1.5MByte = 96 banks
calculate ROM size: if 0<=val<=6 then size = 1<<(5+val) KBytes
That's how it goes. You should adhere to the sizes, however, it won't ever know unless you are addressing a rombank that's just not there
Secondly, mappers can handle banks all differently.
MBC1 is tricky though, it can use two models of accessing data.
Well, for further information, just look for the most recent version of it. That's 17-Mar-99 by kOOpa or the version updated on 16-Mar-99 (some differences), afaik.
cYa,
Tauwasser