[Feature request] Add extra way to detect issues when fix layer is broken ?
Closed this issue · 9 comments
Hi,
I was wondering how the bios could indicate an error while the fix layer is broken and the neogeo not displaying any readable text. For the sure the "bips" help but sometimes, the board is failing before any sound is played.
The idea would be to display a full screen text pattern at the screen for each error we can get, independent of the caracter displayed. (Or any alternate relevant method)
Thx
Like a big square for wram error, a big triangle for vram error and so on. Each pattern could be displayed in any caracter. Even if fixed layer or color is broken, there would be a chance to diagnose by looking at the screen the pattern displayed.
The error code will also be displayed on the credit LEDs if your board has them.
Try using this version
https://www.mvs-scans.com/misc/sp1-ea1.bin
It implements error addresses, which is something I've done on other diag roms. You will need to press and hold down the 'A' button when you power the board. If an error is encountered during automatic testing, after printing the error if the 'A' button is pressed it will cause the CPU to jump to specific addresses in the diag rom that are a tight loop. The address it jumps to (and stays near) will have the error code encoded into the address as such:
0xc06000 | (error_code << 5)
Using a logic probe you can probe the 68000 address lines to figure out the error code.
ADDRESS LINE | MEANING | DIP CPU PIN | PLCC CPU PIN |
---|---|---|---|
A1 | None (pulsing) | 29 | 32 |
A2 | None (pulsing) | 30 | 33 |
A3 | None (low) | 31 | 34 |
A4 | None (low) | 32 | 35 |
A5 | Error Code Bit 0 | 33 | 36 |
A6 | Error Code Bit 1 | 34 | 37 |
A7 | Error Code Bit 2 | 35 | 38 |
A8 | Error Code Bit 3 | 36 | 39 |
A9 | Error Code Bit 4 | 37 | 40 |
A10 | Error Code Bit 5 | 38 | 41 |
A11 | Error Code Bit 6 | 39 | 42 |
A12 | Error Code Bit 7 (always low) | 40 | 43 |
A13 | None (pulsing) | 41 | 44 |
A14 | None (pulsing) | 42 | 45 |
A15 | None (low) | 43 | 46 |
A16 | None (low) | 44 | 47 |
A17 | None (low) | 45 | 48 |
A18 | None (low) | 46 | 49 |
A19 | None (low) | 47 | 50 |
A20 | None (low) | 48 | 51 |
When probing the error code address lines, if its pulsing consider it a 1, if its 100% low its a 0. I would verify that A12-A15 are low, pulsing, pulsing, low as shown in the table to verify it successfully jumped to an error address. Once you have the error code byte you can look it up here
https://github.com/jwestfall69/neogeo-diag-bios/blob/master/docs/error_codes.md
Additionally, not that you could see this with your current issue, if the error address is jumped to it should print "ERROR ADDRESS TRIGGERED" near the bottom of the screen.
I made a small edit to my previous post to correct something. You will need to press and hold down the 'A' button at power on. After printing the error if the 'A' button is being pressed it till trigger the error address jump.
Yes that looks correct. I would however suggest writing down the bits from right to left (assuming you start probing from A5) just to avoid accidentally transfixing the bits when converting.
0111 0001 (A12 to A5) = 0x71 = WRAM UNWRITABLE (UPPER)
That specific error is one that will not generate a beep code because it runs before the 68k/z80 comm test.
Indeed ! Your modification is amazing.
It really helps in some debugging cases. 👍
Do you plan to merge it ?
Thanks again so much !
Thanks.
I will get it merged in the next couple days. I want to review my changes and get docs written up for it.
Latest version has been merged, i think we can close the issue.