NaomiDIAG : A diagnostic bios for Naomi 1 & 2

Rom1

Professional
Joined
Nov 7, 2019
Messages
291
Reaction score
338
Location
France
Hi everyone! I'd like to share NaomiDiag, a replacement diagnostic BIOS for Naomi and Naomi 2. I'm a contributor to the project, not the main author.

Main features:
• CPU, video and sound RAM tests, with chip-level fault reporting.
• Results on screen, via serial and spoken aloud.
• Cartridge ROM verification, DIMM RAM tests, live JVS input tests and video patterns.
• English and French text and speech.

Still a work in progress: some functions need further testing on real hardware.

Here's a simulated CPU RAM fault under MAME:
fault_ic9.gif


Project and documentation
Download ready-to-burn ROMs
 
Very cool! I know DIMM issues in particular would be useful since people have a lot of trouble with those.
 
I've got a motherboard that refuses to read cartridges, so if there was some way to do a bus check, maybe of the 27c322/160 on the cartridge that would be very useful.
 
This is a friend of mine who's developing this at our local arcade club. Just for awareness, are there any features you'd like to see implemented?

  • Hold TEST on boot or maybe flip a DIP switch to bypass the automatic tests and immediately go to menu of individual tests. It takes a long time to do the entire suite of tests when sometimes I just want to do one specific test.
  • Show OK/FAIL on each pass of the RAM tests. If it fails on pass 1, then I can stop the test since I know it's bad.
  • Any further DIMM tests. I have several DIMM boards including one top network board that causes a black screen.
 
Some answers:
  • Hold TEST on boot or maybe flip a DIP switch to bypass the automatic tests and immediately go to menu of individual tests. It takes a long time to do the entire suite of tests when sometimes I just want to do one specific test.
    • This is already working, but only after MIE init. So you've a 60sec mandatory test before you can interrupt and navigate using filter board buttons.
  • Show OK/FAIL on each pass of the RAM tests. If it fails on pass 1, then I can stop the test since I know it's bad.
    • After a RAM test fails, it runs other tests to identify the faulty RAM chip and even the data/address lines affected. Those things are reported on serial only, not on screen.
  • Any further DIMM tests. I have several DIMM boards including one top network board that causes a black screen.
    • It's planned
  • Dimm/Netdimm tests would be great.
    • It's planned
 
Example of RAM error, followed by the fault analysis. It's mixed french/english :D

Here it found the IC21s being faulty
Code:
[00:02:45.068] VRAM TEX1 bus de donnees ........ OK
[00:02:45.089] VRAM TEX1 bus d'adresses ........ OK
[00:02:45.098] passe 1/3 0101 : 10% 20% 30% 40% 50% 60% 70% 80% 90%  ok
[00:02:53.952] passe 2/3 1010 : 10% 20% 30% 40% 50% 60% 70% 80% 90%  ok
[00:03:02.798] passe 3/3 pseudo-aleatoire : 10% 20% 30% 40% 50% 60% 70% 80% 90%
[00:03:11.728]   Erreur detectee, localisation VRAM : 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%  ERR
[00:03:22.384] VRAM TEX1 (IC17S/19S/21S/23S) ........ ECHEC
[00:03:28.062]   bad data bits mask: 0000FFFF
[00:03:28.070]   -> VRAM TEX1 (IC17S/19S/21S/23S) 3 (IC21S) : voie suspecte (puce ou connexions)
[00:03:28.087]   @A5C00000 wrote 4EBCCB6D read 4EBCE7B7
[00:03:28.097]   @A5C00004 wrote 2DF11025 read 2DF137EE
[00:03:28.106]   @A5C00008 wrote F1434C3F read F143B7EE
[00:03:28.116]   @A5C0000C wrote 8058EBFD read 805818AF
[00:03:28.126]   @A5C00010 wrote 39C7A8AE read 39C7DF47
[00:03:28.136]   @A5C00014 wrote 5693D627 read 56935481
[00:03:28.146]   @A5C00018 wrote A6B3218C read A6B36F8B
[00:03:28.156]   @A5C0001C wrote 92DAD96D read 92DA691A
[00:03:28.165]   ... 786422 errors total

Another one that identify which traces are broken (DQ8 and DQ9 here):
Code:
[00:10:15.100] Reference PVR-A (PVR-B indetermine) ........ ECHEC
[00:10:15.195]   VRAM PVR-B et RAM Elan non testees, acces non valide.
[00:10:15.207]   Aucun verdict sur les puces RAM. Code acces : 5
[00:10:15.219]   PVR probe pass=0 addr=A57FFFFC expected=13579BDF observed=13579BDF xor=00000000
[00:10:15.236]   PVR probe pass=0 addr=A5FFFFFC expected=2468ACE0 observed=2468AFE0 xor=00000300
[00:10:15.253]   Voie associee par le BIOS SEGA (puce ou connexions a verifier) : IC21 CPU D: 8 9
[00:10:15.271]   PVR probe pass=0 addr=A77FFFFC expected=A5963CC3 observed=A5963CC3 xor=00000000
[00:10:15.287]   PVR probe pass=0 addr=A7FFFFFC expected=5A69C33C observed=5A69C33C xor=00000000
[00:10:15.304]   PVR probe pass=1 addr=A57FFFFC expected=ECA86420 observed=ECA86420 xor=00000000
[00:10:15.321]   PVR probe pass=1 addr=A5FFFFFC expected=DB97531F observed=DB97531F xor=00000000
[00:10:15.338]   PVR probe pass=1 addr=A77FFFFC expected=5A69C33C observed=5A69C33C xor=00000000
[00:10:15.355]   PVR probe pass=1 addr=A7FFFFFC expected=A5963CC3 observed=A5963CC3 xor=00000000
[00:10:15.372]   Diagnostic VRAM : cellules puis paires d'adresses.
[00:10:15.384]   Bits CPU uniquement : correspondance broches RAM non etablie.
[00:10:15.405]   VRAM readback failure addr=A5FFFFFC peer=A5FFFFFC expected=AAAAAAAA observed=AAAAABAA reread=AAAAABAA peer_expected=AAAAAAAA peer_observed=AAAAABAA xor=00000100
[00:10:15.436]   Voie associee par le BIOS SEGA (puce ou connexions a verifier) : IC21 CPU D: 8
[00:10:15.453]   VRAM readback failure addr=A5FFFFFC peer=A5FFFFFC expected=55555555 observed=55555555 reread=55555755 peer_expected=55555555 peer_observed=55555755 xor=00000000
[00:10:15.484]   Voie associee par le BIOS SEGA (puce ou connexions a verifier) : IC21 CPU D: 9
[00:10:15.501]   VRAM readback failure addr=A5FFFFFC peer=A5FFFFFC expected=00000001 observed=00000301 reread=00000301 peer_expected=00000001 peer_observed=00000301 xor=00000300
[00:10:15.532]   Voie associee par le BIOS SEGA (puce ou connexions a verifier) : IC21 CPU D: 8 9
[00:10:15.550]   VRAM readback failure addr=A5FFFFFC peer=A5FFFFFC expected=00000002 observed=00000002 reread=00000302 peer_expected=00000002 peer_observed=00000302 xor=00000000
[00:10:15.580]   Voie associee par le BIOS SEGA (puce ou connexions a verifier) : IC21 CPU D: 8 9
[00:10:15.599]   VRAM readback failure addr=A5FFFFFC peer=A5FFFFFC expected=00000004 observed=00000304 reread=00000304 peer_expected=00000004 peer_observed=00000304 xor=00000300
[00:10:15.629]   Voie associee par le BIOS SEGA (puce ou connexions a verifier) : IC21 CPU D: 8 9
[00:10:15.647]   VRAM readback failure addr=A5FFFFFC peer=A5FFFFFC expected=00000008 observed=00000308 reread=00000308 peer_expected=00000008 peer_observed=00000308 xor=00000300
[00:10:15.678]   Voie associee par le BIOS SEGA (puce ou connexions a verifier) : IC21 CPU D: 8 9
[00:10:15.696]   VRAM readback failure addr=A5FFFFFC peer=A5FFFFFC expected=00000010 observed=00000310 reread=00000310 peer_expected=00000010 peer_observed=00000310 xor=00000300
[00:10:15.727]   Voie associee par le BIOS SEGA (puce ou connexions a verifier) : IC21 CPU D: 8 9
[00:10:15.745]   VRAM readback failure addr=A5FFFFFC peer=A5FFFFFC expected=00000020 observed=00000320 reread=00000320 peer_expected=00000020 peer_observed=00000320 xor=00000300
[00:10:15.776]   Voie associee par le BIOS SEGA (puce ou connexions a verifier) : IC21 CPU D: 8 9
[00:10:15.794]   VRAM readback failure addr=A5FFFFFC peer=A5FFFFFC expected=00000040 observed=00000340 reread=00000340 peer_expected=00000040 peer_observed=00000340 xor=00000300
[00:10:15.824]   Voie associee par le BIOS SEGA (puce ou connexions a verifier) : IC21 CPU D: 8 9
[00:10:15.843]   VRAM readback failure addr=A5FFFFFC peer=A5FFFFFC expected=00000080 observed=00000380 reread=00000380 peer_expected=00000080 peer_observed=00000380 xor=00000300
[00:10:15.873]   Voie associee par le BIOS SEGA (puce ou connexions a verifier) : IC21 CPU D: 8 9
[00:10:15.892]   VRAM readback failure addr=A5FFFFFC peer=A5FFFFFC expected=00000100 observed=00000300 reread=00000300 peer_expected=00000100 peer_observed=00000300 xor=00000200
[00:10:15.922]   Voie associee par le BIOS SEGA (puce ou connexions a verifier) : IC21 CPU D: 9
[00:10:15.940]   VRAM readback failure addr=A5FFFFFC peer=A5FFFFFC expected=FFFFFEFF observed=FFFFFFFF reread=FFFFFFFF peer_expected=FFFFFEFF peer_observed=FFFFFFFF xor=00000100
[00:10:15.970]   Voie associee par le BIOS SEGA (puce ou connexions a verifier) : IC21 CPU D: 8
[00:10:15.988]   VRAM readback failure addr=A5FFFFFC peer=A5FFFFFC expected=00000200 observed=00000300 reread=00000300 peer_expected=00000200 peer_observed=00000300 xor=00000100
[00:10:16.018]   Voie associee par le BIOS SEGA (puce ou connexions a verifier) : IC21 CPU D: 8
[00:10:16.036]   VRAM readback failure addr=A5FFFFFC peer=A5FFFFFC expected=FFFFFDFF observed=FFFFFDFF reread=FFFFFFFF peer_expected=FFFFFDFF peer_observed=FFFFFFFF xor=00000000
[00:10:16.066]   Voie associee par le BIOS SEGA (puce ou connexions a verifier) : IC21 CPU D: 9
[00:10:16.084]   VRAM readback failure addr=A5FFFFFC peer=A5FFFFFC expected=00000400 observed=00000700 reread=00000700 peer_expected=00000400 peer_observed=00000700 xor=00000300
[00:10:16.114]   Voie associee par le BIOS SEGA (puce ou connexions a verifier) : IC21 CPU D: 8 9
[00:10:16.132]   VRAM readback failure addr=A5FFFFFC peer=A5FFFFFC expected=00000800 observed=00000800 reread=00000B00 peer_expected=00000800 peer_observed=00000B00 xor=00000000
[00:10:16.163]   Voie associee par le BIOS SEGA (puce ou connexions a verifier) : IC21 CPU D: 8 9
[00:10:16.181]   VRAM readback failure addr=A5FFFFFC peer=A5FFFFFC expected=00001000 observed=00001300 reread=00001300 peer_expected=00001000 peer_observed=00001300 xor=00000300
[00:10:16.212]   Voie associee par le BIOS SEGA (puce ou connexions a verifier) : IC21 CPU D: 8 9
[00:10:16.230]   VRAM readback failure addr=A5FFFFFC peer=A5FFFFFC expected=00002000 observed=00002300 reread=00002300 peer_expected=00002000 peer_observed=00002300 xor=00000300
[00:10:16.261]   Voie associee par le BIOS SEGA (puce ou connexions a verifier) : IC21 CPU D: 8 9
[00:10:16.279]   VRAM readback failure addr=A5FFFFFC peer=A5FFFFFC expected=00004000 observed=00004300 reread=00004300 peer_expected=00004000 peer_observed=00004300 xor=00000300
[00:10:16.309]   Voie associee par le BIOS SEGA (puce ou connexions a verifier) : IC21 CPU D: 8 9
[00:10:16.328]   VRAM readback failure addr=A5FFFFFC peer=A5FFFFFC expected=00008000 observed=00008300 reread=00008300 peer_expected=00008000 peer_observed=00008300 xor=00000300
[00:10:16.358]   Voie associee par le BIOS SEGA (puce ou connexions a verifier) : IC21 CPU D: 8 9
[00:10:16.377]   VRAM readback failure addr=A5FFFFFC peer=A5FFFFFC expected=00010000 observed=00010300 reread=00010300 peer_expected=00010000 peer_observed=00010300 xor=00000300
[00:10:16.407]   Voie associee par le BIOS SEGA (puce ou connexions a verifier) : IC21 CPU D: 8 9
[00:10:16.425]   VRAM readback failure addr=A5FFFFFC peer=A5FFFFFC expected=00020000 observed=00020300 reread=00020300 peer_expected=00020000 peer_observed=00020300 xor=00000300
[00:10:16.456]   Voie associee par le BIOS SEGA (puce ou connexions a verifier) : IC21 CPU D: 8 9
[00:10:16.474]   VRAM readback failure addr=A5FFFFFC peer=A5FFFFFC expected=00040000 observed=00040300 reread=00040300 peer_expected=00040000 peer_observed=00040300 xor=00000300
[00:10:16.505]   Voie associee par le BIOS SEGA (puce ou connexions a verifier) : IC21 CPU D: 8 9
[00:10:16.523]   VRAM readback failure addr=A5FFFFFC peer=A5FFFFFC expected=00080000 observed=00080000 reread=00080300 peer_expected=00080000 peer_observed=00080300 xor=00000000
[00:10:16.553]   Voie associee par le BIOS SEGA (puce ou connexions a verifier) : IC21 CPU D: 8 9
[00:10:16.572]   VRAM readback failure addr=A5FFFFFC peer=A5FFFFFC expected=00100000 observed=00100000 reread=00100300 peer_expected=00100000 peer_observed=00100300 xor=00000000
[00:10:16.602]   Voie associee par le BIOS SEGA (puce ou connexions a verifier) : IC21 CPU D: 8 9
[00:10:16.621]   VRAM readback failure addr=A5FFFFFC peer=A5FFFFFC expected=00200000 observed=00200300 reread=00200300 peer_expected=00200000 peer_observed=00200300 xor=00000300
[00:10:16.651]   Voie associee par le BIOS SEGA (puce ou connexions a verifier) : IC21 CPU D: 8 9
[00:10:16.669]   VRAM readback failure addr=A5FFFFFC peer=A5FFFFFC expected=00400000 observed=00400000 reread=00400300 peer_expected=00400000 peer_observed=00400300 xor=00000000
[00:10:16.700]   Voie associee par le BIOS SEGA (puce ou connexions a verifier) : IC21 CPU D: 8 9
[00:10:16.718]   VRAM readback failure addr=A5FFFFFC peer=A5FFFFFC expected=00800000 observed=00800300 reread=00800300 peer_expected=00800000 peer_observed=00800300 xor=00000300
[00:10:16.749]   Voie associee par le BIOS SEGA (puce ou connexions a verifier) : IC21 CPU D: 8 9
 
There is a ton on non-net dimm boards out there, the ability to write to DIMM so they can be used with CF would likely be very welcome.
Which feature is that? Can you please elaborate? You mean like putting a new FW to the Dimm from the tool?
 
Which feature is that? Can you please elaborate? You mean like putting a new FW to the Dimm from the tool?
Yup. Right now, I believe the options to update dimm firwmare on a non-net dimm are
  1. GD-Rom drive + physical update gd-rom
  2. desolder /resolder the flash on the dimm
  3. borrow a net-dimm, use its network daughtercard, netboot the update image, and swap back to the GD-only daughter card.
So if you could change the DIMM firmware via e.g. a serial cable, it would be a lot more accessible
 
Back
Top