Emulator warning menu

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
Emulator warning menu
by on (#119737)
An idea of emulator is if you want to implement a warning menu that you might enable some warnings (you can select which ones, including to count how often and how many times it occurs, in case someone find it useful) such as:
  • Decimal arithmetic
  • Unofficial opcodes
  • DPCM interference with controller read (not applicable to keyboard)
  • Reading or writing with bus conflicts
  • OPLL register writing too fast
  • OAM DRAM not reloaded correctly
  • PPU slave mode is selected
  • Attempting to write to CHR ROM
  • Attempting to write to PRG ROM (may be useful to warn if making a multigame cartridge containing NROM games)
  • JMP indirect wrapping
  • Zero-page wrapping
  • PPU emphasis bits
  • Attempts to advance coin counter without correct timing
  • Improper iNES header
  • Writing to tape with too low or too high frequency
  • Vertical scroll out of range
  • PPU is enabled too early
  • Attempts to enable AY8930 mode
  • (For .NSF only) Read/write to a memory which a .NSF isn't allowed to read/write

Which emulators support these warnings and counting, if any, and can any emulator add such feature?

(If this is in the wrong section, or another thread already exist, you can merge it in the correct thread, please; I don't know if it should but hopefully a moderator should know because that is your job)
Re: Emulator warning menu
by on (#119739)
NO$GBA supports counting "errors" in the free version and breaking them down by type in the paid version. But some of these can be made as breakpoints in existing NES emulators.
Re: Emulator warning menu
by on (#119751)
zzo38 wrote:
PPU emphasis bits

What's wrong with using emphasis bits?
Re: Emulator warning menu
by on (#119752)
It prevents people who broke a VS system or PC10 in order to get an RGB famicom from playing the game.
Re: Emulator warning menu
by on (#119754)
Quietust wrote:
zzo38 wrote:
PPU emphasis bits

What's wrong with using emphasis bits?


Most of the stuff on that list is meaningless. PPU slave mode? :lol:
Re: Emulator warning menu
by on (#119756)
You forgot "access to zero page using absolute addressing".
Also, what is "decimal arithmetic" ?
Re: Emulator warning menu
by on (#119757)
Movax12 wrote:
You forgot "access to zero page using absolute addressing".
Also, what is "decimal arithmetic" ?


:lol:
Re: Emulator warning menu
by on (#119758)
"Decimal arithmetic" is using ADC or SBC while SED is on. It can break famiclone compatibility.

Quote:
Reading or writing with bus conflicts

Defined as writing a value to ROM whose relevant bits don't match those from the ROM, in mappers that don't avoid bus conflicts.

Quote:
OAM DRAM not reloaded correctly

How would this be defined?

Quote:
Zero-page wrapping

This is intentional more likely than not.

Quote:
PPU is enabled too early

By "too early" do you mean less than one full field has elapsed after power-on or reset?

Quote:
Attempts to enable AY8930 mode

What's this?
Re: Emulator warning menu
by on (#119760)
WedNESday wrote:
Most of the stuff on that list is meaningless. PPU slave mode?
a.k.a writing to $2000 with the $40s bit set. Causes the PPU to try to drive pins high that have been tied to ground, possibly damaging the PPU.

Just because you're ignorant doesn't mean it has no meaning.

Movax12 wrote:
Also, what is "decimal arithmetic" ?
Using the SED instruction, or doing the equivalent using PHA PLP.

zzo38 wrote:
AY8930
Trying to pretending that the YM2149 in the sunsoft 5b is actually an AY-3-8930. Seems a bit of a stretch.
Re: Emulator warning menu
by on (#119761)
WedNESday wrote:
Most of the stuff on that list is meaningless. PPU slave mode? :lol:

I don't know if this was widely known before, but only recently I learned that the PPU has 4 pins that can act as either input or output of pixels. When set to input, the pixels coming in from these pins are drawn in place of color 0. Apparently this would allow PPUs to be chained together to generate multiple background layers (plus a layer of background colored sprites!). All consoles have these pins connected to GND, so color 0 always shows up as %0000. Setting the pins for output while they are connected to GND might actually be bad, electronically speaking (or so I heard).
Re: Emulator warning menu
by on (#119766)
lidnariq wrote:
WedNESday wrote:
Most of the stuff on that list is meaningless. PPU slave mode?

Just because you're ignorant doesn't mean it has no meaning.


Relax. I've just checked the wiki to find that this appears to be the case. Every other technical document doesn't mention it and even though the wiki does that is a recent appearance. So to be honest most people are ignorant of it. If we are then that's hardly our fault now is it?
Re: Emulator warning menu
by on (#119769)
tepples wrote:
"Decimal arithmetic" is using ADC or SBC while SED is on. It can break famiclone compatibility.


I guessed as much, "BCD mode" or "BCD arithmetic" would be clearer.
Re: Emulator warning menu
by on (#119770)
tepples wrote:
Quote:
Reading or writing with bus conflicts

Defined as writing a value to ROM whose relevant bits don't match those from the ROM, in mappers that don't avoid bus conflicts.
Yes, or mappers that sometimes have bus conflicts.

Quote:
Quote:
OAM DRAM not reloaded correctly

How would this be defined?
I don't know, but because of the way the DRAM works it can cause problems which may not be easy to emulate.

Quote:
Quote:
Zero-page wrapping

This is intentional more likely than not.
Correct; all of these things need to be options, anyways.[/quote]

Quote:
Quote:
PPU is enabled too early

By "too early" do you mean less than one full field has elapsed after power-on or reset?
Yes, that is what I mean.

lidnariq wrote:
WedNESday wrote:
Most of the stuff on that list is meaningless. PPU slave mode?
a.k.a writing to $2000 with the $40s bit set. Causes the PPU to try to drive pins high that have been tied to ground, possibly damaging the PPU.
Yes, exactly what I mean and the purpose of it.

Quote:
zzo38 wrote:
AY8930
Trying to pretending that the YM2149 in the sunsoft 5b is actually an AY-3-8930. Seems a bit of a stretch.
Yes, although such a warning option would ensure compatibility if you need to make up a Sunsoft 5B cartridge and don't have a YM2149, in case the only chip you have that can imitate it is AY8930 instead (I don't expect this to be particularly common, but maybe it might happen sometimes).