cartlemmy wrote:
Not at all. Sounds like my only option if I'm ever to reproduce this thing on a real cart. Right?
I wouldn't want to rely on mapper IRQs while no NES cart publisher (is RetroZone is the only one?) has a mapper with that feature.
For a status bar at the top of the screen, here's what you have to do: after the usual graphical updates, set the scroll to display the status bar and prepare a sprite 0 hit for a location near the end of the status bar (which is easy, because the status bar doesn't move). Then wait for the sprite hit flag to be cleared (from the previous frame's hit) and then wait for it to be set again. You can do other tasks before these waits, as long as you're sure they'll finish before the sprite hit (the sound engine would be a good thing to run during this time, for example). Once the hit happens, you just have to set the scroll for the gameplay area using $2005/$2006 trickery (example code
here).
This will work either in an NMI handler or in the main loop (in case you use NMIs just to set a flag indicating that VBlank started), but it's obviously better to use the NMI handler, because they deal with lag frames gracefully, without visual side effects.
BTW, I was peeking at your code and it seems you have an NMI handler, but for some reason you trash X by reading from a variable and comparing its value to $02, but soon after you save A to the stack. If you had a lag frame, trashing X like that would be very bad. You should probably use A to check that variable instead, after having backed it up to the stack (and obviously restore it before RTI'ing). Or better yet, if you can use bits 6 and 7 to represent the states you need, you can use the BIT instruction, which doesn't trash any registers, and use BPL/BMI and BVC/BVS to make decisions based on those bits.
Quote:
What mappers would a company like Retrozone be able to reproduce without costs being excessive?
I think they have basically two boards: one that can be configured for most discrete logic mappers (NROM, CNROM, UxROM, AxROM) and another for various MMC1 configurations. Those are your safe bets, but some people say that a good MMC3 game might just be the incentive RetroZone needs to develop an MMC3 clone and board. Personally, I wouldn't risk it.