jwestfall69 / neogeo-diag-bios

Disassembly of smkdan's Neo Geo Diagnostics BIOS with added features

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

M1 z80 / 68k Ack error while everything seems ok in game ?

ragefan opened this issue · comments

Hi,
Thanks for this work improving the mvs/aes diag bios !
I have a slot that is reporting a Ack error message during M1 test while everything in game seems ok in term of sound.

z80->68k COMM ISSUE (ACK)

The received error is E7 which seems weird as it means all tests are ok.

Post Comm Test:
Once the comm test is successful, the diag m1 will continue on with its remaining tests. If it encounters an error, it will send the [error code] & 0x40 to the diag bios or 0xe7 to indicate all tests were successful. While this is going the diag bios will display

Could it be a timing issue in the test itself ?

The M1 cart is working in another slot and i even changed the slot cart header in case of.

Any clue ?

Thx

Sorry for the delayed response, I missed this issue.

I would guess there might be a data path issue between the 68k and z80 cpus.

There are 4 messages that get passed between the 68k/z80 (aside from error codes)

                   7654 3210 (bits)
    HELLO - 0xc3 - 1100 0011 (z80 -> 68k)
HANDSHAKE - 0x5a - 0101 1010 (68k -> z80)
      ACK - 0x3c - 0011 1100 (z80 -> 68k)
 COMPLETE - 0xe7 - 1110 0111 (z80 -> 68k)

Best guess would be for bit 1 and/or bit 6 are stuck high, as it would allow all but the ACK response from the Z80 to function. The diag bios will wait up to 1 second for the ACK response, while at the same time the diag m1 would have continued on with its test. So it maybe the case the diag m1 completed the rest of its tests and sent the 0xe7 before that 1 second wait period of the diag bios. When the diag bios errors out from a lack of the ACK it prints out the last seen message of 0xe7.

Hi !
Thanks a lot !
I checked again thanks to your insights.
However, all data pins are correctly pulsing on the z80 :(
I checked at z80 side, and neo-c0 side as well.
Btw, i game, no sound issue.
That's weird. Could it be another control pin ?

You wouldn't be able to see it just by checking for pulsing. The data passed between the z80 and 68k goes through a latch. If you want to look into it more, can you try this bios?

https://www.mvs-scans.com/misc/sp1-ragefan1.bin

I adjusted it so its constantly printing the value read from the latch while its waiting for the proper ACK (0x3c) response from the z80. It should in theory print the bad value for a short period of time before switching to 0xe7 and eventually printing the original error you were seeing. That bad value might give you in idea of ping/trace to look at or maybe the latch is faulty.

I'm not sure. The test bios works as expected for me. What neo geo motherboard do you have?

When doing M1 test it switches to the cart chips for S1 too.
If you don't see any text it's because S1 from the cart is not working properly (or not there).

hrm the test bios worked as expected on my mv1fz. The screen going black sounds like what Rolel described. Any chance the diag cart was in backwards or maybe a bad connection because you were testing without the plastic cover for the mv1fz?

I'm also curious if there were any errors before the error you talked about in your original comment? Like "SM1/Z80 PREPARE SLOT SWITCH IGNORED" which then asks you to press start to continue. You are using the diag m1 rom from me or the original?

Can you also do me a favor and provide a picture of the error screen from the diag bios (not the test one).

Sorry guys, i must admit i'am a real noob on this one... The test cart was Indeed simply wrongly plugged.
I tested again and it says :
C3, 3D,B1,01,E7

  • screenshots of the original error :

https://ibb.co/DLJPYTM

Sorry guys, i must admit i'am a real noob on this one... The test cart was Indeed simply wrongly plugged. I tested again and it says : C3, 3D,B1,01,E7

Those values indicate that bit 0 is stuck high. I would use a multi-meter and check continuity between the Z80 and NEO-C1 for the SDD0-SDD7 pins, then also check between the 68K and NEO-C1 for the D8-D15 pins. If all of those test out ok it might indicate a fault in the NEO-C1's internal latch.

Thanks ! All pins are ok, i will go for a faulty neo-C1 :(
Is there a chance to have this modification of the diagbios displaying intermediate messages in an upcoming version ?

Anyway, we can close this issue and thanks for your support !