Skip to content

sega/dccons.cpp: loopchk unit/integration tests #9106

Open
@angelosa

Description

@angelosa

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 -> NG ok
  • TCNT* underflow irq -> NG ok

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): NG ok
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): NG ok
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: NG !!!! ERROR DETECT !!!! ok

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: NG !!!! ERROR DETECT !!!! ok

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 detect ok

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    CPUopcodes execution and/or timingdeviceDeprecated label, use `<realm> device` labels instead.driverspikeDiscussion based issues with no clear "close" condition

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions