Memory Control | Contents Index | Prev Next |
0-23 Base Address (Read/Write) 24-31 Fixed (Read only, always 1Fh) |
0-3 Unknown (R/W) 4-7 Access Time (00h..0Fh=00h..0Fh Cycles) 8 Use COM0 Time (0=No, 1=Yes, add to Access Time) 9 Use COM1 Time (0=No, 1=Probably Yes, but has no effect?) 10 Use COM2 Time (0=No, 1=Yes, add to Access Time) 11 Use COM3 Time (0=No, 1=Yes, clip to MIN=(COM3+6) or so?) 12 Data Bus-width (0=8bit, 1=16bit) 13-15 Unknown (R/W) 16-20 Memory Window Size (1 SHL N bytes) (0..1Fh = 1 byte ... 2 gigabytes) 21-23 Unknown (always zero) 24-27 Unknown (R/W) ;must be non-zero for SPU-RAM reads 28 Unknown (always zero) 29 Unknown (R/W) 30 Unknown (always zero) 31 Unknown (R/W) (Port 1F801008h only; always zero for other ports) |
0-3 COM0 - Offset A ;used for SPU/EXP2 (and for adjusted CDROM timings) 4-7 COM1 - No effect? ;used for EXP2 8-11 COM2 - Offset B ;used for BIOS/EXP1/EXP2 12-15 COM3 - Min Value ;used for CDROM 16-17 COM? - Unknown ;used for whatever 18-31 Unknown/unused (read: always 0000h) |
1ST=0, SEQ=0, MIN=0 IF Use_COM0 THEN 1ST=1ST+COM0-1, SEQ=SEQ+COM0-1 IF Use_COM2 THEN 1ST=1ST+COM2, SEQ=SEQ+COM2 IF Use_COM3 THEN MIN=COM3 IF 1ST<6 THEN 1ST=1ST+1 ;(somewhat like so) 1ST=1ST+AccessTime+2, SEQ=SEQ+AccessTime+2 IF 1ST<(MIN+6) THEN 1ST=(MIN+6) IF SEQ<(MIN+2) THEN SEQ=(MIN+2) |
0-2 Unknown (no effect) 3 Crashes when zero (except PU-7 and EARLY-PU-8, which <do> use bit3=0) 4-6 Unknown (no effect) 7 Delay on simultaneous CODE+DATA fetch from RAM (0=None, 1=One Cycle) 8 Unknown (no effect) (should be set for 8MB, cleared for 2MB) 9-11 Define 8MB Memory Window (first 8MB of KUSEG,KSEG0,KSEG1) 12-15 Unknown (no effect) 16-31 Unknown (Garbage) |
0 = 1MB Memory + 7MB Locked 1 = 4MB Memory + 4MB Locked 2 = 1MB Memory + 1MB HighZ + 6MB Locked 3 = 4MB Memory + 4MB HighZ 4 = 2MB Memory + 6MB Locked ;<--- would be correct for PSX 5 = 8MB Memory ;<--- default by BIOS init 6 = 2MB Memory + 2MB HighZ + 4MB Locked ;<-- HighZ = Second /RAS 7 = 8MB Memory |
0-2 Unknown (Read/Write) (R/W) 3 Scratchpad Enable 1 (0=Disable, 1=Enable when Bit7 is set, too) (R/W) 4-5 Unknown (Read/Write) (R/W) 6 Unknown (read=always zero) (R) or (W) or unused..? 7 Scratchpad Enable 2 (0=Disable, 1=Enable when Bit3 is set, too) (R/W) 8 Unknown (R/W) 9 Crash (0=Normal, 1=Crash if code-cache enabled) (R/W) 10 Unknown (read=always zero) (R) or (W) or unused..? 11 Code-Cache Enable (0=Disable, 1=Enable) (R/W) 12-31 Unknown (R/W) |
Init Cache Step 1: [FFFE0130h]=00000804h, then set cop0_sr=00010000h, then zerofill each FOURTH word at [0000..0FFFh], then set cop0_sr=zero. Init Cache Step 2: [FFFE0130h]=00000800h, then set cop0_sr=00010000h, then zerofill ALL words at [0000h..0FFFh], then set cop0_sr=zero. Finish Initialization: read 8 times 32bit from [A0000000h], then set [FFFE0130h]=0001E988h |
extracted from no$psx v2.2 - homepage - patreon - whole doc htm/txt - copyright 2022 martin korth (nocash) |