diff --git a/Components/9918/Implementation/9918.cpp b/Components/9918/Implementation/9918.cpp index d659becda..b6acd78be 100644 --- a/Components/9918/Implementation/9918.cpp +++ b/Components/9918/Implementation/9918.cpp @@ -1068,10 +1068,13 @@ uint8_t Base::read_register_indirect() { template uint8_t TMS9918::read(int address) { - // TODO: is this still a global effect of reads, even in the world of the Yamahas? - this->write_phase_ = false; + const int target = this->masked_address(address); - switch(this->masked_address(address)) { + if(target < 2) { + this->write_phase_ = false; + } + + switch(target) { default: return 0xff; case 0: return this->read_vram(); case 1: return this->read_register();