The Sharp LR35902 and its MBC1 bank switching are documented in exactly this form on gbdev.io's Pandocs, the reference every real Game Boy emulator (SameBoy, mGBA, Gambatte) is built against, and passing Blargg's cpu_instrs test ROM is the community's bar for a correct core. Building ROM banking here is the same trick that let Game Boy cartridges expose far more than 32KB of address space through a 16-bit bus.