Description
Sega Dreamcast Check-GD disk that tests several parts of the system. Originally posted in dccons.cpp, moved here for convenience in tracking.
Parenthesis notes denotes internal code markings. Jumps in these markings denotes greyed out tests that cannot be run.
Main Menu
- SCIF failure at boot
needs NOPs at PC=0xc0196da and PC=0xc0196ec to bypass
- identify what alt combinations does at boot
(A+B, Right+X, Left+X, Down+A+B+X, Down+X, Up+X and few others)
- Compile switch for serial terminal mode
SH4 CHECK
UBC test (01++)
- UBC test (0101): ok
FPU test (02++)
- FPU test (0201): NG
0xc03fe24 work ram flag check (1=error, 0=ok)
Cache test (03++):
- Cache Read/Write test (0301): NG
- Cache RAM mode Check (0305): NG
MMU test (04++):
-
punts on main menu with wrong colors, hangs
- MMU check 1 (0401)
- MMU check 2 (0402)
- MMU check 3 (0403)
- MMU check 4 (0404)
TMU test (05++):
These three runs under (0501)
- *_reg check -> ok
- TCNT* reload ->
NGok - TCNT* underflow irq ->
NGok
MULT test (06++)
- (0601) ok
DIVU test (07++)
- (0701) ok
Store Queue test (08++):
- (0801) ok
SCIF test (0a++)
- (0a01) NG
PI test (0b++)
- PI (0b01) NG
As in "Private Instruction"
Critical test (0d++)
- Critical (Store Queue) test (0d01): ok
- Critical (Write back) test (0d02): ok
- Critical (ADD,CMP/EQ) test (0d03): ok
- Critical (OC_OIX) test (0d04): NG
- Critical (MAX current) test (0d05): ok
very slow test
- Critical (IC Cross Talk) test (0d06): NG
- Critical (Cache D-array) test (0d07): NG
SH-4 BUG (0e++)
These three runs under (0e01)
- SH4_BUG 64bit FMOV: ok
- SH4 BUG FIX (64bitFMOV): ok
MEMORY CHECK
several sub-tests
- AICA (0102): ok
- Work RAM (0204): ok
- PV64 area (0303): ok
- PV32 area (0403): ok
CLX CHECK
- CLX internal RAM (0101): ok
- TORUS check (0401): NG
draws a vertical violet stripe with unmapped $5f8000 writes, expect an irq at PC=0xc094546, unsure what even "Torus" is.
TA CHECK
Interrupt (01++)
- TA_YUVINT (0101): ok -> IST_EOXFER_YUV
- TA_OENDINT (0102): ok -> IST_EOXFER_OPLST
- TA_OMENDINT (0103): ok -> IST_EOXFER_OPMV
- TA_TENDINT (0104): ok -> IST_EOXFER_TRLST
- TA_TMENDINT (0105): ok -> IST_EOXFER_TRMV
- TA_PTENDINT (0106): ok -> IST_EOXFER_PTLST
- TA_ISPINT (0107): NG -> ISP/TSP Parameter Overflow (error)
- TA_OBJINT (0108): NG -> OBJect list pointer Overflow (error)
- TA_IPINT (0109): NG -> TA: Illegal parameter (error)
YUV CNVT (02++)
- YUV Converter (0201): ok
DDTi/f CHECK
DMA (01++)
- (0101): hangs (wants Sort DMA irq)
these three runs with same test
- Sort, Normal DMA (1)
- Sort, Normal DMA (2)
- Through: NG, hangs again
Interrupt (02++)
- DC_DEINT (0201): ok
- DC_SDTEINT (0202): ok
- DC_SDTERINT (0203): prompts ok but returns error count ++, bug in SW?
G2 BUS CHECK
DMA (01++)
- DMA (0101):
NGok
G2 EXT AREA DETECT:
"!!!! ch00 ERROR DETECT !!!!"
<hangs>
wants AICA mirror RAM and E1/E2/DD G2 DMA emulation, fixed in
naomiaw_inputs
Interrupt (03++)
- Interrupt (0301):
NGok
G2 EXT AREA DETECT
DMA END INT
<hangs>
wants G2 end irq to work on all channels, fixed in
naomiaw_inputs
- (0302): DMA iA INT:
NGok!!!! ERROR DETECT !!!!
attempt to write root or g2 addresses with an illegal parameter (illegal Address), attempt to start a DMA with said incorrect configuration, fixed in
naomiaw_inputs
- (0303): DMA OR INT:
NGok!!!! ERROR DETECT !!!!
wants an OveRflow exception (not asserting area protection for root address while transfering), fixed in
naomiaw_inputs
- (0304): TIME OUT INT: NG
!!!! ERROR DETECT !!!!
Ext Interrupt (06++)
- AICA INT (0601):
error detectok
fixed in naomiaw_inputs, regression with sfz3ugd BGMs
- Modem INT (0602): error detect
AICA CHECK
Sound RAM (01++)
- Pattern R/W (0101): ok
Register (02++)
- CH Data (0201): ok
- EXT Input (0202): ok
- DSP Data (0203): ok
S_Clock (03++)
- 50MSEC (0301): NG
~0xa58 in 0x702814, must be > 0x889 and < 0x8b0
- 25MSEC (0302): NG
~0x372 in 0x702814, must be > 0x443 and < 0x45a
Timer (04++)
- Timer A (0401): NG
- Timer B (0402): NG
- Timer C (0403): NG
DMA (05++)
- SRAM -> CH Reg (0501): ok
- SRAM -> Comm Reg (0502): ok
- SRAM -> DSP Reg (0503): ok
- CH Reg -> SRAM (0504): ok
- Comm Reg -> SRAM (0505): ok
- DSP Reg -> SRAM (0506): ok
- Clear SRAM (0507): ok
- Clear CH Reg (0508): ok
- Clear Comm Reg (0509): ok
- Clear DSP Reg (050a): ok
Interrupt (06++)
- Sampling clock (0601): enable reg OK, actual clock test NG
(irq 0x400)
- Timer A (0602): NG first time around, ok on successive runs
- Timer B (0603): ok
- Timer C (0604): ok
- DMA End (0605): ok
- Midi Out (0606): NG
- Main CPU (0607): ok
RTC (07++)
- Write Protect (0701): ok
- RW Comp (0702): ok
- Clock (0703): NG TIC 1001034
ARM7 (08++)
- Load & Start (0801): NG
- Timer & Intr (0802): NG
- DMA (0803): NG
- Ch-Reg R/W (0804): ok
- SRAM incr (0805): NG
- SRAM pattern (0806): ok
EG (09++)
- LSA-Reg Left (0901): random ok/NG
- LSA-Reg Right (0902): random ok/NG
- LSA-Reg Left & Right (0903): random ok/NG
MIDI (0a++)
- OEMP bit (0a01): NG
- OFLL bit (0a02): NG
PVRi/f CHECK
DMA (01++)
Two tests under (0101)
- CPU trig: ok
- INT trig: ok
Interrupt (02++)
- PVR DMA end Int (0201): ok
- PVR DMA IA Int (0202): NG
!!!! ERROR DETECT !!!!
- PVR DMA end (0203): NG
!!!! ERROR DETECT !!!!
FLASH CHECK
WRITE & READ (01++)
- WRITE & READ (0101): NG
(SH-4 jumps to la la land as soon as this is started)
ERASE (02++)
- chip erase (0201): ok
- data set (0202): NG
!!!! ERROR DETECT !!!!
BYTE PROGRAM FAIL
CODE (03++)
- Device Code (0301): ok
- Manufacture's Code (sic) (0302): ok
PROTECT (04++)
All runs under 0401
- Sector Check Chip Erase: ok
- 00000-0ffff Protect:
!!!! ERROR DETECT !!!!
- 10000-17fff Protect:
!!!! ERROR DETECT !!!!
- 18000-19fff Protect:
!!!! ERROR DETECT !!!!
- 1a000-1bfff Protect: ok
- 1c000-1ffff Protect:
!!!! ERROR DETECT !!!!
GD CHECK
- All commands here punts with "Fatal error: GDROM: Unhandled read_type 0"
Fixed in
dc_redbook
ATA CMND (01++)
- Soft Reset (0101) NG
Interrupt & Sector Count reg initial error result: 83
- Execute Device Diagnostic (0102) OK
- NOP (0103) NG
CHECK bit set Error result: 18
Sense key ABORT set Error result : 00
Hangs with DRQ on
- Identify Device (0104) ok
Fixed in
dc_redbook
- Set Features (0105) NG
Check various PIO/DMA Error modes
PACKET CMND (02++)
- TEST_UNIT (0201) ok
- REQ_STAT (0202)
unemulated
, hangs - CD_READ & SET_MODE (0203) NG
Tests CD drive speeds
Eventually tries to read non mode 2048 tracks
- CD_READ & REQ_ERROR (0204)
unemulated
- GET_TOC (0205) NG
Single density track value ng = 7
- REQ_SES (0206) ok
Fixed in
dc_redbook
- CD_SEEK (0209)
unemulated
, hangs - CD_READ (020b)
fails several
Error CD read data PIO mode check at FAD 0 (!?)
Eventually tries to read non mode 2048 tracks
- CD_READ2 (020c)
unemulated
- CD_SCD (020d)
unemulated
INTERRUPT (03++)
- G1_DEINT (0301) ok
- G1_IAINT (0302) NG
Illegal Address set Interrupt check error.
- G1_ORINT (0303) hangs
DMA over run Interrupt check error
- G1_ATDMAINT (0304) NG
CD access at DMA Interrupt check error
- G1_CDINT (0305) OK
HEARING TEST
- outputs left -> right -> left & right audio channels, no prompt reported, assume working.