Ys 1 (J) split screen improvement

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
Ys 1 (J) split screen improvement
by on (#226284)
Last year I wondered whether it was possible to have a clean screen split without a blank scanline in-between to hide jitter and bankswitching artifacts, based on my observation that no commercial game exhibited such a clean split. The answer was that it should be theoretically possible, leaving me to wonder why no NES-era developer ever managed to do it.

One such game that had always bothered me was Ys and its status bar. The split looks ugly in all emulators and on real hardware. Clean splits are especially difficult if a bankswitch or mirroring switch is required on the MMC1, because it takes five writes plus four shifts to perform the switch.

After several attempts, I managed to modify Ys to exhibit a clean split between the playfield and the status bar on NintendulatorNRS/Nestopa/Mesen/FCEUX as well as on real hardware using an Everdrive N8. The modification required more than changing a few timing constants; I need to write four MMC1 serial bits before waiting for the Sprite 0 Hit, then perform the final fifth write afterwards, plus the 2006/2005/2005/2006 technique.

I do not have access to a real MMC1 development cartridge, so it cannot be ruled out that it fails to work with a real MMC1. The only thing I could imagine going wrong is if a real MMC1 were to not allow its shift register to be in the "fourth bit state" for half a frame duration, though I have never read that this might be the case.

Attached find an IPS patch for "Ys (J) [!].nes". The only playtesting I did was talking to characters, pressing SELECT for the Options menu, going into shops, and leaving town to walk around the world map, so I cannot rule out that my modifications/additions to the very cramped fixed PRG bank might have broken something else, in case of which I appreciate being notified.
Re: Ys 1 (J) split screen improvement
by on (#226288)
Rad Racer also uses the technique of preloading four bits, so I think you're safe in that respect.
Re: Ys 1 (J) split screen improvement
by on (#226319)
It works pretty well with the English Translation. I did notice the status bar jump occasionally when scrlling the screen vertically in the first town and later in the first temple.
Re: Ys 1 (J) split screen improvement
by on (#227179)
I have updated the .IPS file in the initial post of this thread. The status bar should no longer jump.