This page is a mirror of Tepples' nesdev forum mirror (URL TBD).
Last updated on Oct-18-2019 Download

test rom 'scanline -1'

test rom 'scanline -1'
by on (#134240)
I don't know, maybe it's already exist, but I want to made my own test rom.
If someone can test it on hardware please post you results here.
The details readme of usage included in archive.
Re: test rom 'scanline -1'
by on (#134274)
If you're having problems with emulators allowing PPU VRAM updates during render time (including the prerender line), maybe you need to hack the game further so it disables rendering at the start of vblank, and re enables it at the end. It would have to be a really outdated emulator to let you write during render time.
Re: test rom 'scanline -1'
by on (#134275)
Turning rendering off and on gives you 89 more cycles to update VRAM: dot 304 deadine to turn rendering on, divided by 3 dots per cycle, minus 6 cycles off and 6 cycles on. I had to make exactly this change to get NES15 running in a multicart, as the process I was using to call the NMI handlers for both games in a bank took 10 extra cycles, which caused the updates to just barely run over vblank time.
Re: test rom 'scanline -1'
by on (#134280)
Emulators have problems, not me. :D (I've already fix my problems).
I've just want to know is test works fine on hardware , and for authors of 'accurate' emulators too see difference, and maybe they will try to make them more accurate.
Re: test rom 'scanline -1'
by on (#134470)
Just tried this on my CopyNES CNRAM cart, and I get different results every time I reset. These are the different results I've managed to get so far:

112 12 / 124 24 / 134 34 / 156 56 / 1FF FF / 3D5 D5 / 7D1 D1 / FAIL
124 12 / 154 54 / 3D1 D1 / 3D2 D2 / 3D3 D3 / 540 40 / 7D0 D0 / 4
124 12 / 178 78 / 1FF FF / 3D2 D2 / 3D3 D3 / 3D6 D6 / 5CD CD / FAIL
124 24 / 129 29 / 12E 2E / 15A 5A / 164 64 / 3D5 D5 / 7D0 D0 / C
151 51 / 164 64 / 3D1 D1 / 3D2 D2 / 3D3 D3 / 3D6 D6 / 566 66 / 56B 6B / 5
178 78 / 1FF FF / 3D1 D1 / 3D2 D2 / 3D3 D3 / 3D7 D7 / 5CD CD / FAIL

It should be noted that my test method does not work "properly" for any test ROM which expects to begin at exact poweron, because the CopyNES BIOS always takes control at startup and has to check whether it's in Play or Copy mode (which can also affect the contents of RAM).
Re: test rom 'scanline -1'
by on (#134475)
Quietust wrote:
Just tried this on my CopyNES CNRAM cart, and I get different results every time I reset. These are the different results I've managed to get so far:

112 12 / 124 24 / 134 34 / 156 56 / 1FF FF / 3D5 D5 / 7D1 D1 / FAIL
124 12 / 154 54 / 3D1 D1 / 3D2 D2 / 3D3 D3 / 540 40 / 7D0 D0 / 4
124 12 / 178 78 / 1FF FF / 3D2 D2 / 3D3 D3 / 3D6 D6 / 5CD CD / FAIL
124 24 / 129 29 / 12E 2E / 15A 5A / 164 64 / 3D5 D5 / 7D0 D0 / C
151 51 / 164 64 / 3D1 D1 / 3D2 D2 / 3D3 D3 / 3D6 D6 / 566 66 / 56B 6B / 5
178 78 / 1FF FF / 3D1 D1 / 3D2 D2 / 3D3 D3 / 3D7 D7 / 5CD CD / FAIL

It should be noted that my test method does not work "properly" for any test ROM which expects to begin at exact poweron, because the CopyNES BIOS always takes control at startup and has to check whether it's in Play or Copy mode (which can also affect the contents of RAM).


Thanks. Your results looks more accurate.
Quote:
124 12 / 178 78 / 1FF FF / 3D2 D2 / 3D3 D3 / 3D6 D6 / 5CD CD / FAIL

looks like for everdrive this will be as:
100 FF/ 124 12/ 178 78 / 1FF FF / 300 D6 / 3D2 D2 / 3D2 D2 / 3D2 D3 / 3D6 D6 / 5CD CD / (what exist in rom)
here's two additional writes that ED produce.

Quote:
112 12 / 124 24 / 134 34 / 156 56 / 1FF FF / 3D5 D5 / 7D1 D1 / FAIL

112 12 / 124 12 / 12E 2E / 134 34 / 156 56 / 1FF FF / 356 D5 / 3D5 D5 / 700 D1 / 7D1 D1 /
and there's also very close. but for some reasons ed makes some extra strange writes.
Re: test rom 'scanline -1'
by on (#134476)
If you can make a version that will fit into a mapper 218 (CHRless) board with 8 KiB of PRG, I have a flash cart that I've been using for my own tests.
Re: test rom 'scanline -1'
by on (#134531)
I've uploaded updated rom, some fixes to match Quietust results, previous rom renamed.
Re: test rom 'scanline -1'
by on (#134847)
Hmm... so, you mean writes to $2007 (scanline -1, rendering OFF), but what about reads? No writes are allowed at PPU $0000-$3FFF, or only at $2000-$3EFF???
Re: test rom 'scanline -1'
by on (#134849)
Zepper wrote:
Hmm... so, you mean writes to $2007 (scanline -1, rendering OFF), but what about reads? No writes are allowed at PPU $0000-$3FFF, or only at $2000-$3EFF???

Test does some reads too... About $0000-$1FFF I don't know it doesn't check because mapper is NROM.
But because ppu address changed + on each access it attemps to write different places into $0000-$7FFF?. But looks like it doesn't hit in palette vram.

Zepper wrote:
rendering OFF)

rendering ON.
Re: test rom 'scanline -1'
by on (#134856)
I don't think that rendering ON would change the $2007 behaviour on reads. How so? Plus, on $2007 writes, the PPU updates Y and X scroll bits at same time if rendering is enabled, but is the value written ignored so far???
Re: test rom 'scanline -1'
by on (#134863)
Zelda 2 skips some scanlines while drawing the title screen because of some 2007 reads by the way...
Re: test rom 'scanline -1'
by on (#134877)
Zepper wrote:
I don't think that rendering ON would change the $2007 behaviour on reads. How so? Plus, on $2007 writes, the PPU updates Y and X scroll bits at same time if rendering is enabled, but is the value written ignored so far???

the fact is emulators allow writes (or shows incorrect result), while hardware not.

As I see it writes to vram , but value same as lower byte of target adress.

And for someone who starts with develop homebrew or romhacks for nes, and doesn't know about that rendering should be off (or should be finished before scanline -1) , and believe what emulators show.
This may result non-compatible with hardware games.
Re: test rom 'scanline -1'
by on (#134878)
Is the PPU address (loopy_v) incremented when rendering is disabled?
Re: test rom 'scanline -1'
by on (#134879)
Zepper wrote:
Is the PPU address (loopy_v) incremented when rendering is disabled?

When rendering disabled you can write at any time. :D Address only auto-incremented on each write on +1 or +32.