Better GBC support (See Yu-Gi-Oh - Dark Duel Tales) Usually, FF4D is read during a STOP command. At STOP: If isCGB = 0 { FF4D = (FF4D &(AND) 0x7F) |(OR) 0x7E } else { If (FF4D & 0x01) = 0x01 { FF4D = FF4D ^(MOD) 0x80 } } In a GBS2GB music file, with BGB: Breakpoint 01C8. This is where it displays the above setup in it's entirety. m_gbr.c: ------------- ln 285 case 0xff0f: /* IF */ return THIS_->gb_IF; ---+ case 0xff4d: /* Speed Switch */ if (THIS_->isCGB == 0) { return (Uint8)0x7e; } else { return THIS_->io[a & 0x1ff] | 0x80; } ---+ case 0xffff: /* IE */ return THIS_->gb_IE; ------------- ln 342 case 0xff0f: /* IF */ THIS_->ctx.regs8[REGID_INTREQ] = THIS_->gb_IF = (Uint8)v; break; ---+ case 0xff4d: /* Speed Switch */ /* The XOR(^) is normally done during an OP_STOP command */ if (THIS_->isCGB == 0) { THIS_->io[a & 0x1ff] = (Uint8)0x7e; } else { if (((Uint8)v & 1) == 1) { THIS_->io[a & 0x1ff] = (Uint8)0xfe; } } break; ---+ case 0xff70: /* SVBK */ { Uint32 rampage = v & 7; if (!rampage) rampage = 1; map_read_mem4k(THIS_, 0xd000, &THIS_->ram[rampage << 12]); map_write_mem4k(THIS_, 0xd000, &THIS_->ram[rampage << 12]); } break;