PPUADDR with Y increment? (MMC3)
Moderator: Moderators
PPUADDR with Y increment? (MMC3)
Technically, is possible to increment Y on PPU cycle 256 during a write to $2006? I have an unfixable problem with MMC3 IRQs - the game Kick Master has a waving title screen. I can fix it if I delay the IRQ by 2 PPU cycles, but the MMC3 tests are broken.
Re: PPUADDR with Y increment? (MMC3)
I do not understand your question. This increment happens automatically, assuming redering is on. So of course this is "possible".
Re: PPUADDR with Y increment? (MMC3)
I'm not sure what the question is either... Are you talking about manually clocking the MMC3's scanline counter by manipulating $2006?
Re: PPUADDR with Y increment? (MMC3)
There's a conflict between increasing Y at 256th and writting to $2006. If Y is clocked after the write, the background is waving. Else, it's fine.
Re: PPUADDR with Y increment? (MMC3)
That sounds very similar to the Battletoads stage 2 freezing issue.Zepper wrote:There's a conflict between increasing Y at 256th and writting to $2006. If Y is clocked after the write, the background is waving. Else, it's fine.
Re: PPUADDR with Y increment? (MMC3)
Zepper:
Can you guess what I'm going to say?
Tracelogs!
Let's see a trace of a frame with screwed-up lines, with scanline&cycle marked, and NMI/IRQ marked. Then we can see where your window to write is and why the game is writing outside that window.
Can you guess what I'm going to say?
Tracelogs!
Let's see a trace of a frame with screwed-up lines, with scanline&cycle marked, and NMI/IRQ marked. Then we can see where your window to write is and why the game is writing outside that window.
Re: PPUADDR with Y increment? (MMC3)
Can you guess what I am going to reply? ^_^;;Disch wrote:Zepper:
Can you guess what I'm going to say?
Remember of the problem with sprite zero hits? You saw the tracelogs and said "the sprite zero hit is off by 1". Well, if I fix this "off by 1", the test ROMs are broken too.
So, it's the same. But okay, I'll post the tracelogs soon.
Re: PPUADDR with Y increment? (MMC3)
I don't understand the problem. Time your code so that your write always fall before the increment, or always fall after the increment, and your BG won't be shaking. It's a matter of adding or removing a few nops. No big deal.
Re: PPUADDR with Y increment? (MMC3)
Except Zepper is coding an emulator, not an NES program.Bregalad wrote:It's a matter of adding or removing a few nops. No big deal.
Apparently, adjusting the emulator to accommodate some games makes it fail some accuracy tests.
Re: PPUADDR with Y increment? (MMC3)
Is there a way to deterministically synchronize game states between RockNES and Nintendulator to enable a comparison between the logs cycle-by-cycle?
Re: PPUADDR with Y increment? (MMC3)
Well... perhaps. I'm unsure about Battletoads.zeroone wrote:That sounds very similar to the Battletoads stage 2 freezing issue.Zepper wrote:There's a conflict between increasing Y at 256th and writting to $2006. If Y is clocked after the write, the background is waving. Else, it's fine.
Regarding Nintendulator, no.... it's not necessary. Even converting its savestate file to RockNES format won't help too.
Re: PPUADDR with Y increment? (MMC3)
If you managed to do it, you could discover exactly why RockNES does not behave correctly.Zepper wrote:Regarding Nintendulator, no.... it's not necessary. Even converting its savestate file to RockNES format won't help too.
Re: PPUADDR with Y increment? (MMC3)
AFAIK, such log does not bring the helpful information I need, but only a complete CPU disassembling.zeroone wrote:If you managed to do it, you could discover exactly why RockNES does not behave correctly.Zepper wrote:Regarding Nintendulator, no.... it's not necessary. Even converting its savestate file to RockNES format won't help too.