GPU Read and Draw Behavior
Measures GPUREAD after GP0(C0h), draw times by GP0(03h) and rectangle width, timer 0 on the dot clock, texel steps, closed meshes, polyline joints and the SPU write FIFO cut by a stop.
| Machine | SCPH-5501 |
|---|---|
| Program | followup28 |
Overview
The program runs eight groups. Six of them use the GPU, one uses timer 0 and one uses the SPU.1 The GPU groups read VRAM back with GP0(C0h) and time draws with timer 2 up to a GPUSTAT bit, and the SPU group reads sound RAM back by DMA.234
| Tag | Group |
|---|---|
| GRD | GPUREAD loads after a C0h read of 1 x 1, 2 x 1, 1 x 2 and 3 x 1 pixels, and after other commands, over a block where each pixel holds its own value |
| S3R | A 3 x 128 rect, a 512 x 128 rect and a 256 x 256 fill after GP0(03h) with low nibble 00h to 0Fh, in a mixed order |
| SMH | Semi-transparent rects (62h) 1 to 17 and 32 pixels wide by 256 rows, and flat rects (60h), timed to GPUSTAT bit 26 |
| TDC | Timer 0 on the dot clock read at once after a mode write, at widths 256, 320 and 640 |
| TUV | Raw textured quads (2Dh) over a texture whose texel at u, v holds v x 256 + u, read back as u and v steps |
| MSH | Six closed meshes of triangles and quads, each pixel's draw count read back |
| PLJ | Zigzag polylines (48h) written one word at a time with GPUSTAT bit 25 checked, and the same segments as separate lines |
| SKW | The SPU write FIFO cut by a stop, by DMA and by hand, after waits of 0 to 400 cycles |
See also:
Results
GPUREAD After C0h
The block holds 1000h + 100h x (y - 300) + x in the pixel at x and y. In this block a 1 x 1 read at x 0 returned 10011000h. The word held the pixel asked for in its low half and the pixel to its right in its high half, and a 2 x 1 read returned the same word. Three more GPUREAD loads after a 1 x 1 or 2 x 1 read returned 00000000h when they came straight after the A0h writes that built the block.2
After a 3 x 1 read at 4,300 the two words were 10051004h and 10071006h, and the extra loads returned 10051004h. When a GP0 or GP1 write came between the next 1 x 1 read and the extra loads, they returned 10071006h, which is the last word of the 3 x 1 read. A 4 x 1 read at 8,300 was cut by GP1(01h) after its first word, which was 10091008h. From then on the extra loads returned 100B100Ah, which holds pixels 10 and 11 of the block, the word the CPU never read. They still did so after a textured rect, a fill, a copy, a semi-transparent rect, an A0h write and GP1(10h).2
GP0(03h)
The low nibble of GP0(03h) slowed the narrow rect most. The order of the writes made no difference. The value 00h gave about the same times when it came first, when it followed 0Fh and when it followed 02h and 01h.5
| GP0(03h) | Rect 3 x 128 | Rect 512 x 128 | Fill 256 x 256 |
|---|---|---|---|
| 00h | 719 | 33,267 | 5,562 |
| 01h | 711 | 33,388 | 5,567 |
| 02h | 767 | 33,507 | 5,561 |
| 04h | 1,012 | 33,753 | 5,737 |
| 08h | 1,513 | 34,298 | 6,773 |
| 0Fh | 2,410 | 35,151 | 8,592 |
Rect Width
A semi-transparent rect 256 rows high took longer in steps of two pixels of width. Widths 14 and 15 took less time than width 12. A flat rect 16 pixels wide took about 2,710 counts, which is a little more than half the time of the semi-transparent rect of the same size.3
| Width | Semi-transparent (62h) | Flat (60h) |
|---|---|---|
| 1 | 2,105 to 2,182 | 1,251 to 1,311 |
| 2 and 3 | 2,401 to 2,410 | |
| 4 and 5 | 2,652 to 2,771 | |
| 6 and 7 | 2,957 to 3,016 | |
| 8 and 9 | 3,202 to 3,313 | |
| 10 and 11 | 3,553 to 3,569 | |
| 12 | 3,803 to 3,866 | |
| 13 | 3,440 to 3,866 | |
| 14 and 15 | 3,733 to 3,750 | |
| 16 and 17 | 4,888 to 4,960 | 2,652 to 2,711 |
| 32 | 7,863 to 7,929 |
The same semi-transparent rect 16 pixels wide took 1,311 to 1,321 counts at 64 rows and 2,520 to 2,531 at 128 rows.3
Timer 0 on the Dot Clock
At all three widths the counter read 0 in every one of the 8 turns straight after the mode write. In about 20,050 cycles timer 0 counted 3,175 dots at width 256 and 3,965 dots at width 320. At width 640 it counted 7,940 dots. That is 6.32, 5.06 and 2.52 cycles a dot (20,054 / 3,175, 20,046 / 3,965 and 20,046 / 7,940).6
Closed Meshes
In five of the six meshes every pixel of the mesh was drawn exactly once: no pixel inside had a count of 0 or 2. These were the 8 x 8 triangle and quad meshes of 24-pixel cells, regular and with vertices moved by up to 4 or 6 pixels, and the 16 x 16 triangle mesh of 7-pixel cells. The triangle mesh with vertices moved by up to 9 pixels had 36,840 pixels drawn once and 24 drawn three times or more.7
Polyline Joints
With every word written only when GPUSTAT bit 25 allowed it, the zigzag of 40 vertices drew 80 pixels. The same 39 segments sent as separate lines drew the same 80 pixels, whether each line was drawn from its start or from its end.8
SPU Write FIFO Cut Short
The 32 halfwords at 30000h were filled with 1234h, then B000h + i was written there and the transfer stopped after a wait. By hand 16 halfwords had reached sound RAM at every wait from 0 to 200 cycles. By DMA the number grew with the wait, and the halfwords before and after the area were never changed.4
| Wait (cycles) | Halfwords |
|---|---|
| 0 and 50 | 9 |
| 100 to 200 | 10 |
| 250 | 12 |
| 300 and 350 | 15 |
| 400 | 19 |
Runs
5 October 2026
===== 00 RUN | BIOS 19951204 System ROM Version 3.0 11/18/96 A
8 tests
A chain program, linked at 80010000
Saved on the card in slot 2, from image 1
COP0 at start: BPC 00000000 BDA 00000000 TAR 8010ABF4 DCIC 00000000 BadVaddr 00000480 BDAM 00000000
BPCM 00000000 SR 00000000 Cause 00000020 EPC 8010B760 PRId 00000002
===== 01 GRD F28 GPUREAD AFTER C0H | BIOS 19951204 System ROM Version 3.0 11/18/96 A
BadVaddr as the group starts: 00000480
GPUREAD after C0h 1x1 and 2x1 and after what came before (row 61, #138): C0h words,
GPUSTAT, then three GPUREAD loads. Block 32x2 at 0,300: pixel x,y = 1000h+100h*(y-300)+x.
GP1(10h) 02h-05h read at the group's start: 00000000 00000000 0003BE7F 00000000.
After the A0h writes:
1x1, x 0: C0h 1x1 at 0,300: 10011000; GPUSTAT 9406251C; then 00000000 00000000 00000000
1x1, x 1: C0h 1x1 at 1,300: 10021001; GPUSTAT 9406251C; then 00000000 00000000 00000000
1x1, x 2: C0h 1x1 at 2,300: 10031002; GPUSTAT 9406251C; then 00000000 00000000 00000000
1x1, x 3: C0h 1x1 at 3,300: 10041003; GPUSTAT 9406251C; then 00000000 00000000 00000000
1x1, x 5 y 301: C0h 1x1 at 5,301: 11061105; GPUSTAT 9406251C; then 00000000 00000000 00000000
2x1, x 0: C0h 2x1 at 0,300: 10011000; GPUSTAT 1406251C; then 00000000 00000000 00000000
2x1, x 1: C0h 2x1 at 1,300: 10021001; GPUSTAT 1406251C; then 00000000 00000000 00000000
2x1, x 6 y 301: C0h 2x1 at 6,301: 11071106; GPUSTAT 9406251C; then 00000000 00000000 00000000
1x2, x 4: C0h 1x2 at 4,300: 11041004; GPUSTAT 9406251C; then 00000000 00000000 00000000
3x1, x 4: C0h 3x1 at 4,300: 10051004 10071006; GPUSTAT 1406251C; then 10051004 10051004 10051004
The same with a write between the C0h words and the three loads:
1x1 x 0, GP0 00ABCDEFh: C0h 1x1 at 0,300: 10011000; GPUSTAT 9406251C; then 10071006 10071006 10071006
1x1 x 0, GP0(01h): C0h 1x1 at 0,300: 10011000; GPUSTAT 1406251C; then 10071006 10071006 10071006
1x1 x 0, GP0(E2h) as found: C0h 1x1 at 0,300: 10011000; GPUSTAT 1406251C; then 10071006 10071006 10071006
1x1 x 0, GP1 04000000h: C0h 1x1 at 0,300: 10011000; GPUSTAT 1406251C; then 10071006 10071006 10071006
1x1 x 0, GP1 02000000h: C0h 1x1 at 0,300: 10011000; GPUSTAT 1406251C; then 10071006 10071006 10071006
2x1 x 0, GP0 00ABCDEFh: C0h 2x1 at 0,300: 10011000; GPUSTAT 1406251C; then 10071006 10071006 10071006
2x1 x 0, GP1 04000000h: C0h 2x1 at 0,300: 10011000; GPUSTAT 1406251C; then 10071006 10071006 10071006
C0h 1x1 at 0,300 after another command:
4x1 C0h at 8,300 read 10091008, then GP1(01h).
After a cut 4x1 C0h: C0h 1x1 at 0,300: 10011000; GPUSTAT 1406251C; then 100B100A 100B100A 100B100A
4x1 C0h at 8,300 read 10091008, GP1(10h) 02h read 10000000, then GP1(01h).
After a cut 4x1 C0h and GP1(10h): C0h 1x1 at 0,300: 10011000; GPUSTAT 1406251C; then 100B100A 100B100A 100B100A
After a raw textured rect 4x1 from 7C00 03E0 001F 7FFF: C0h 1x1 at 0,300: 10011000; GPUSTAT 1406251C; then 100B100A 100B100A 100B100A
After a fill 16x1 of 102030h: C0h 1x1 at 0,300: 10011000; GPUSTAT 1406251C; then 100B100A 100B100A 100B100A
After a copy 2x1 from 2,301 (1102 1103): C0h 1x1 at 0,300: 10011000; GPUSTAT 1406251C; then 100B100A 100B100A 100B100A
After a semi rect 4x1 over 2222 3333: C0h 1x1 at 0,300: 10011000; GPUSTAT 1406251C; then 100B100A 100B100A 100B100A
After an A0h 2x1 of 5A5A 6B6B: C0h 1x1 at 0,300: 10011000; GPUSTAT 1406251C; then 100B100A 100B100A 100B100A
After GP1(10h) 02h: C0h 1x1 at 0,300: 10011000; GPUSTAT 1406251C; then 100B100A 100B100A 100B100A
Again, nothing between: C0h 1x1 at 0,300: 10011000; GPUSTAT 1406251C; then 100B100A 100B100A 100B100A
Read back: the rect at 0,320 7C00 03E0 001F 7FFF; the semi rect at 0,350 21C9 2A51 21C9 2A51.
Done.
===== 02 S3R F28 GP0 03H ORDER | BIOS 19951204 System ROM Version 3.0 11/18/96 A
BadVaddr as the group starts: 00000480
GP0(03h) low nibble 00h three times, then 01h 02h 04h 08h 0Fh, 00h twice, 02h 01h 00h;
rect 3x128, rect 512x128, fill 256x256, two samples each (row 62). Ends with 00h.
Before: GPUSTAT 1406251C, vblanks since the group began 0.
GP0(03h)=000000: rect 3x128 719 715, bit 28 at 95
rect 512x128 33267 33265, bit 28 at 92
fill 256x256 5562 5567, bit 28 at 97
Before: GPUSTAT 1406251C, vblanks since the group began 0.
GP0(03h)=000000: rect 3x128 707 709, bit 28 at 97
rect 512x128 33275 33273, bit 28 at 97
fill 256x256 5558 5560, bit 28 at 92
Before: GPUSTAT 1406251C, vblanks since the group began 0.
GP0(03h)=000000: rect 3x128 711 712, bit 28 at 92
rect 512x128 33268 33268, bit 28 at 92
fill 256x256 5581 5565, bit 28 at 97
Before: GPUSTAT 1406251C, vblanks since the group began 1.
GP0(03h)=000001: rect 3x128 711 712, bit 28 at 92
rect 512x128 33388 33385, bit 28 at 92
fill 256x256 5567 5568, bit 28 at 95
Before: GPUSTAT 1406251C, vblanks since the group began 1.
GP0(03h)=000002: rect 3x128 767 770, bit 28 at 92
rect 512x128 33507 33516, bit 28 at 92
fill 256x256 5561 5561, bit 28 at 92
Before: GPUSTAT 1406251C, vblanks since the group began 1.
GP0(03h)=000004: rect 3x128 1012 1009, bit 28 at 92
rect 512x128 33753 33753, bit 28 at 92
fill 256x256 5737 5797, bit 28 at 92
Before: GPUSTAT 1406251C, vblanks since the group began 1.
GP0(03h)=000008: rect 3x128 1513 1505, bit 28 at 101
rect 512x128 34298 34302, bit 28 at 92
fill 256x256 6773 6775, bit 28 at 97
Before: GPUSTAT 1406251C, vblanks since the group began 2.
GP0(03h)=00000F: rect 3x128 2410 2410, bit 28 at 92
rect 512x128 35151 35205, bit 28 at 92
fill 256x256 8592 8592, bit 28 at 97
Before: GPUSTAT 1406251C, vblanks since the group began 2.
GP0(03h)=000000: rect 3x128 707 709, bit 28 at 97
rect 512x128 33275 33273, bit 28 at 97
fill 256x256 5558 5560, bit 28 at 92
Before: GPUSTAT 1406251C, vblanks since the group began 2.
GP0(03h)=000000: rect 3x128 716 707, bit 28 at 92
rect 512x128 33276 33268, bit 28 at 92
fill 256x256 5509 5560, bit 28 at 92
Before: GPUSTAT 1406251C, vblanks since the group began 3.
GP0(03h)=000002: rect 3x128 766 773, bit 28 at 92
rect 512x128 33512 33511, bit 28 at 92
fill 256x256 5567 5568, bit 28 at 95
Before: GPUSTAT 1406251C, vblanks since the group began 3.
GP0(03h)=000001: rect 3x128 707 709, bit 28 at 97
rect 512x128 33395 33385, bit 28 at 92
fill 256x256 5557 5568, bit 28 at 92
Before: GPUSTAT 1406251C, vblanks since the group began 3.
GP0(03h)=000000: rect 3x128 711 712, bit 28 at 92
rect 512x128 33388 33282, bit 28 at 109
fill 256x256 5555 5563, bit 28 at 95
Done.
===== 03 SMH F28 SEMI RECTS 256 ROWS | BIOS 19951204 System ROM Version 3.0 11/18/96 A
BadVaddr as the group starts: 00000480
Semi-transparent rects (62h) 1 to 17 and 32 wide by 256 rows at 0,256, flat (60h) 1, 16
and 17 wide by 256 (row 68: 7.0 or 7.7 a row). Timer 2 to GPUSTAT bit 26, 4 samples.
Rect 62 1x256: 2182 2105 2110 2171, bit 28 at 95
Rect 62 2x256: 2403 2410 2407 2405, bit 28 at 92
Rect 62 3x256: 2401 2407 2405 2406, bit 28 at 92
Rect 62 4x256: 2713 2652 2713 2711, bit 28 at 97
Rect 62 5x256: 2707 2713 2716 2771, bit 28 at 92
Rect 62 6x256: 2957 3013 3009 3016, bit 28 at 92
Rect 62 7x256: 2957 3013 3009 3016, bit 28 at 92
Rect 62 8x256: 3202 3255 3253 3313, bit 28 at 92
Rect 62 9x256: 3262 3253 3254 3254, bit 28 at 92
Rect 62 10x256: 3560 3553 3564 3557, bit 28 at 92
Rect 62 11x256: 3561 3569 3553 3564, bit 28 at 92
Rect 62 12x256: 3803 3864 3863 3866, bit 28 at 92
Rect 62 13x256: 3866 3803 3507 3440, bit 28 at 92
Rect 62 14x256: 3744 3744 3747 3750, bit 28 at 92
Rect 62 15x256: 3743 3733 3743 3743, bit 28 at 92
Rect 62 16x256: 4898 4893 4888 4956, bit 28 at 92
Rect 62 17x256: 4894 4888 4960 4896, bit 28 at 92
Rect 62 32x256: 7929 7865 7865 7863, bit 28 at 92
Rect 60 1x256: 1311 1261 1251 1260, bit 28 at 92
Rect 60 16x256: 2711 2655 2711 2709, bit 28 at 92
Rect 60 17x256: 2711 2702 2656 2652, bit 28 at 92
Rect 62 16x64: 1311 1321 1320 1311, bit 28 at 92
Rect 62 16x128: 2530 2520 2526 2531, bit 28 at 92
Done.
===== 04 TDC F28 TIMER0 DOTCLOCK READ | BIOS 19951204 System ROM Version 3.0 11/18/96 A
BadVaddr as the group starts: 00000480
Timer 0 at the dotclock: mode 0100h written then the counter read at once, 8 turns, at
256, 320 and 640 wide (row 76). Timer 2 cycles around the loop, then in each turn.
256 wide, GPUSTAT 1400251C:
Timer 0 counted 3175 dots in 20054 cycles.
Run 1: 0 0 0 0 0 0 0 0; the 8 turns took 142 cycles
Run 2: 0 0 0 0 0 0 0 0; the 8 turns took 114 cycles
Run 3: 0 0 0 0 0 0 0 0; the 8 turns took 115 cycles
Run 4: 0 0 0 0 0 0 0 0; the 8 turns took 114 cycles
Run 5: 0 0 0 0 0 0 0 0; the 8 turns took 114 cycles
Run 6: 0 0 0 0 0 0 0 0; the 8 turns took 114 cycles
Run 7: 0 0 0 0 0 0 0 0; the 8 turns took 114 cycles
Run 8: 0 0 0 0 0 0 0 0; the 8 turns took 115 cycles
Timer 2 in each turn, run 1: 0 0 0 0 0 0 0 0; turns 31 21 21 21 21 21 21 42
Timer 2 in each turn, run 2: 0 0 0 0 0 0 0 0; turns 31 21 23 21 21 21 21 37
Timer 2 in each turn, run 3: 0 0 0 0 0 0 0 0; turns 33 21 21 21 21 21 21 37
Timer 2 in each turn, run 4: 0 0 0 0 0 0 0 0; turns 33 21 21 21 21 21 21 37
320 wide, GPUSTAT 1402251C:
Timer 0 counted 3965 dots in 20046 cycles.
Run 1: 0 0 0 0 0 0 0 0; the 8 turns took 114 cycles
Run 2: 0 0 0 0 0 0 0 0; the 8 turns took 115 cycles
Run 3: 0 0 0 0 0 0 0 0; the 8 turns took 114 cycles
Run 4: 0 0 0 0 0 0 0 0; the 8 turns took 115 cycles
Run 5: 0 0 0 0 0 0 0 0; the 8 turns took 114 cycles
Run 6: 0 0 0 0 0 0 0 0; the 8 turns took 114 cycles
Run 7: 0 0 0 0 0 0 0 0; the 8 turns took 114 cycles
Run 8: 0 0 0 0 0 0 0 0; the 8 turns took 114 cycles
Timer 2 in each turn, run 1: 0 0 0 0 0 0 0 0; turns 36 21 21 21 21 21 21 37
Timer 2 in each turn, run 2: 0 0 0 0 0 0 0 0; turns 31 21 21 21 21 21 21 37
Timer 2 in each turn, run 3: 0 0 0 0 0 0 0 0; turns 31 21 21 21 21 21 21 37
Timer 2 in each turn, run 4: 0 0 0 0 0 0 0 0; turns 31 21 21 21 21 21 21 37
640 wide, GPUSTAT 1406251C:
Timer 0 counted 7940 dots in 20046 cycles.
Run 1: 0 0 0 0 0 0 0 0; the 8 turns took 114 cycles
Run 2: 0 0 0 0 0 0 0 0; the 8 turns took 114 cycles
Run 3: 0 0 0 0 0 0 0 0; the 8 turns took 114 cycles
Run 4: 0 0 0 0 0 0 0 0; the 8 turns took 115 cycles
Run 5: 0 0 0 0 0 0 0 0; the 8 turns took 114 cycles
Run 6: 0 0 0 0 0 0 0 0; the 8 turns took 114 cycles
Run 7: 0 0 0 0 0 0 0 0; the 8 turns took 114 cycles
Run 8: 0 0 0 0 0 0 0 0; the 8 turns took 114 cycles
Timer 2 in each turn, run 1: 0 0 0 0 0 0 0 0; turns 36 21 21 21 21 21 21 37
Timer 2 in each turn, run 2: 0 0 0 0 0 0 0 0; turns 31 21 21 21 21 21 21 37
Timer 2 in each turn, run 3: 0 0 0 0 0 0 0 0; turns 31 21 21 21 21 21 21 37
Timer 2 in each turn, run 4: 0 0 0 0 0 0 0 0; turns 31 21 21 21 21 21 21 37
Done.
===== 05 TUV F28 TEXEL COORDINATES | BIOS 19951204 System ROM Version 3.0 11/18/96 A
BadVaddr as the group starts: 00000480
Texel coordinates (row 91, #221): gpuprim TXP's quads drawn raw (2Dh) over a 15 bit page
at 768,256 whose texel is (v<<8)|u; rows and columns read back as u and v steps.
Quad 64 (vertices 20,280 to 84,344, uv 0..63):
row 0 at 20,280 66x1: first 1 (u 1 v 0), last 63
du 11111111111111111111111111111110111111111111111111111111111111
dv 00000000000000000000000000000000000000000000000000000000000000
row 32 at 20,312 66x1: first 0 (u 0 v 32), last 63
du 111111111111111111111111111111110111111111111111111111111111111
dv 000000000000000000000000000000000000000000000000000000000000000
column 0 at 20,280 1x66: first 1 (u 0 v 1), last 63
du 00000000000000000000000000000000000000000000000000000000000000
dv 11111111111111111111111111111110111111111111111111111111111111
Quad 128 (vertices 20,280 to 148,408, uv 0..63):
row 1 at 20,281 130x1: first 2 (u 1 v 0), last 127
du 01010101010101010101010101010101010101010101010101010101010101001010101010101010101010101010101010101010101010101010101010101
dv 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
row 127 at 20,407 130x1: first 0 (u 0 v 63), last 127
du 0101010101010101010101010101010101010101010101010101010101010101001010101010101010101010101010101010101010101010101010101010101
dv 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Quad 100 (vertices 20,280 to 120,380, uv 0..255):
row 0 at 20,280 102x1: first 1 (u 3 v 0), last 99
du 23232323233232323233232323232332323232332323232323323232323323232323233232323233232323232332323232
dv 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
row 1 at 20,281 102x1: first 0 (u 0 v 3), last 99
du 323232323233232323233232323232332323232332323232323323232323323232323233232323233232323232332323232
dv 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
row 50 at 20,330 102x1: first 0 (u 0 v 127), last 99
du 323232323233232323233232323232332323232332323232323323232323323232323233232323233232323232332323232
dv 000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000
row 99 at 20,379 102x1: first 0 (u 0 v 252), last 99
du 323232323233232323233232323232332323232332323232323323232323323232323233232323233232323232332323232
dv 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
column 1 at 21,280 1x102: first 0 (u 3 v 0), last 99
du 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
dv 323232323233232323233232323232332323232332323232323323232323323232323233232323233232323232332323232
column 50 at 70,280 1x102: first 0 (u 127 v 0), last 99
du 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
dv 323232323233232323233232323232332323232332323232332323232323323232323323232323233232323233232323232
Quad 200 (vertices 20,280 to 220,480, uv 0..255):
row 0 at 20,280 202x1: first 1 (u 1 v 0), last 199
du 211121112112111211121121112112111211121121112111211211121112112111211211121112112111211121121112111211211121121112111211211121112112111211121121112112111211121121112111211211121112112111211211121112
dv 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
row 100 at 20,380 202x1: first 0 (u 0 v 127), last 199
du 1211121112112111211121121112112111211121121112111211211121112112111211211121112112111211121121112111211211121121112111211211121112112111211121121112112111211121121112111211211121112112111211211121112
dv 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
row 199 at 20,479 202x1: first 0 (u 0 v 254), last 199
du 1211121112112111211121121112112111211121121112111211211121112112111211211121112112111211121121112111211211121121112111211211121112112111211121121112112111211121121112111211211121112112111211211121112
dv 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
column 1 at 21,280 1x202: first 0 (u 1 v 0), last 199
du 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
dv 1211121112112111211121121112112111211121121112111211211121112112111211211121112112111211121121112111211211121121112111211211121112112111211121121112112111211121121112111211211121112112111211211121112
column 100 at 120,280 1x202: first 0 (u 127 v 0), last 199
du 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
dv 1211121112112111211121121112112111211121121112111211211121112112111211211121112112111211121121112112111211121121112111211211121112112111211211121112112111211121121112111211211121121112111211211121112
Quad turned to angle 0 (vertices 107,325 65,367 65,283 23,325, uv 0..63):
row 10 at 20,290 91x1: first 38 (u 11 v 63), last 51
du aaa0aaa0aaa0a
dv a0aaa0aaa0aaa
row 45 at 20,325 91x1: first 3 (u 63 v 63), last 86
du a0aaa0aaa0aaa0aaa0aaa0aaa0aaa0aaa0aaa0aaa0aaa0aaa0aaa0aaa0aaa0aaa0aaa0aaa0aaa0aaa0a
dv a0aaa0aaa0aaa0aaa0aaa0aaa0aaa0aaa0aaa0aaa0aaa0aaa0aaa0aaa0aaa0aaa0aaa0aaa0aaa0aaa0a
row 80 at 20,360 91x1: first 38 (u 63 v 11), last 51
du a0aaa0aaa0aaa
dv aaa0aaa0aaa0a
Quad turned to angle 8 (vertices 95,355 35,355 95,295 35,295, uv 0..63):
row 10 at 20,290 91x1: nothing drawn
row 45 at 20,325 91x1: first 15 (u 63 v 31), last 74
du aaaaaaaaaabaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaabaaaaaaaa
dv 00000000000000000000000000000000000000000000000000000000000
row 80 at 20,360 91x1: nothing drawn
Quad turned to angle 16 (vertices 65,367 23,325 107,325 65,283, uv 0..63):
row 10 at 20,290 91x1: first 38 (u 63 v 53), last 51
du a0aaa0aaa0aaa
dv 0111011101110
row 45 at 20,325 91x1: first 3 (u 63 v 0), last 86
du a0aaa0aaa0aaa0aaa0aaa0aaa0aaa0aaa0aaa0aaa0aaa0aaa0aaa0aaa0aaa0aaa0aaa0aaa0aaa0aaa0a
dv 11011101110111011101110111011101110111011101110111011101110111011101110111011101110
row 80 at 20,360 91x1: first 38 (u 11 v 0), last 51
du aaa0aaa0aaa0a
dv 1101110111011
Quad turned to angle 24 (vertices 35,355 35,295 95,355 95,295, uv 0..63):
row 10 at 20,290 91x1: nothing drawn
row 45 at 20,325 91x1: first 15 (u 32 v 0), last 74
du 00000000000000000000000000000000000000000000000000000000000
dv 11111111112111111111111111111121111111111111111111211111111
row 80 at 20,360 91x1: nothing drawn
Done.
===== 06 MSH F28 MESH COUNT MAPS | BIOS 19951204 System ROM Version 3.0 11/18/96 A
BadVaddr as the group starts: 00000480
Closed meshes as count maps (row 92, #223): gpuprim PSB's six meshes, seed 1996, each box
cleared first; histogram and CRC, and cell 3,3 with its corners as a map of red counts.
triangle mesh 8x8 cells of 24, regular: red counts 0:0 1:36864 2:0 3+:0, crc 034EEB51
cell 3,3 corners 112,342 136,342 112,366 136,366
map from 108,338, 33x33:
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
triangle mesh 8x8 cells of 24, jitter 4: red counts 0:0 1:36864 2:0 3+:0, crc 034EEB51
cell 3,3 corners 111,340 137,339 116,370 140,367
map from 107,335, 38x40:
11111111111111111111111111111111111111
11111111111111111111111111111111111111
11111111111111111111111111111111111111
11111111111111111111111111111111111111
11111111111111111111111111111111111111
11111111111111111111111111111111111111
11111111111111111111111111111111111111
11111111111111111111111111111111111111
11111111111111111111111111111111111111
11111111111111111111111111111111111111
11111111111111111111111111111111111111
11111111111111111111111111111111111111
11111111111111111111111111111111111111
11111111111111111111111111111111111111
11111111111111111111111111111111111111
11111111111111111111111111111111111111
11111111111111111111111111111111111111
11111111111111111111111111111111111111
11111111111111111111111111111111111111
11111111111111111111111111111111111111
11111111111111111111111111111111111111
11111111111111111111111111111111111111
11111111111111111111111111111111111111
11111111111111111111111111111111111111
11111111111111111111111111111111111111
11111111111111111111111111111111111111
11111111111111111111111111111111111111
11111111111111111111111111111111111111
11111111111111111111111111111111111111
11111111111111111111111111111111111111
11111111111111111111111111111111111111
11111111111111111111111111111111111111
11111111111111111111111111111111111111
11111111111111111111111111111111111111
11111111111111111111111111111111111111
11111111111111111111111111111111111111
11111111111111111111111111111111111111
11111111111111111111111111111111111111
11111111111111111111111111111111111111
11111111111111111111111111111111111111
triangle mesh 8x8 cells of 24, jitter 9: red counts 0:0 1:36840 2:0 3+:24, crc 28ACBECF
triangle mesh 16x16 cells of 7, jitter 2: red counts 0:0 1:12544 2:0 3+:0, crc A592F15D
quad mesh 8x8 cells of 24, regular: red counts 0:0 1:36864 2:0 3+:0, crc 034EEB51
cell 3,3 corners 112,342 136,342 112,366 136,366
map from 108,338, 33x33:
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
111111111111111111111111111111111
quad mesh 8x8 cells of 24, jitter 6: red counts 0:0 1:36864 2:0 3+:0, crc 034EEB51
cell 3,3 corners 110,337 142,341 115,368 137,360
map from 106,333, 41x40:
11111111111111111111111111111111111111111
11111111111111111111111111111111111111111
11111111111111111111111111111111111111111
11111111111111111111111111111111111111111
11111111111111111111111111111111111111111
11111111111111111111111111111111111111111
11111111111111111111111111111111111111111
11111111111111111111111111111111111111111
11111111111111111111111111111111111111111
11111111111111111111111111111111111111111
11111111111111111111111111111111111111111
11111111111111111111111111111111111111111
11111111111111111111111111111111111111111
11111111111111111111111111111111111111111
11111111111111111111111111111111111111111
11111111111111111111111111111111111111111
11111111111111111111111111111111111111111
11111111111111111111111111111111111111111
11111111111111111111111111111111111111111
11111111111111111111111111111111111111111
11111111111111111111111111111111111111111
11111111111111111111111111111111111111111
11111111111111111111111111111111111111111
11111111111111111111111111111111111111111
11111111111111111111111111111111111111111
11111111111111111111111111111111111111111
11111111111111111111111111111111111111111
11111111111111111111111111111111111111111
11111111111111111111111111111111111111111
11111111111111111111111111111111111111111
11111111111111111111111111111111111111111
11111111111111111111111111111111111111111
11111111111111111111111111111111111111111
11111111111111111111111111111111111111111
11111111111111111111111111111111111111111
11111111111111111111111111111111111111111
11111111111111111111111111111111111111111
11111111111111111111111111111111111111111
11111111111111111111111111111111111111111
11111111111111111111111111111111111111111
Done.
===== 07 PLJ F28 POLYLINE JOINTS | BIOS 19951204 System ROM Version 3.0 11/18/96 A
BadVaddr as the group starts: 00000480
Polyline joints (row 97, #233): gpuraster RSK's zigzag (48h, x i, y 0/3) with every word
paced by GPUSTAT.25, so no FIFO overrun; maps of the 42x4 box at 32,288 ('#' drawn).
Zigzag of 3 vertices, 5 words paced: 6 drawn
#.#.......................................
#.#.......................................
.#........................................
.#........................................
Zigzag of 4 vertices, 6 words paced: 8 drawn
#.#.......................................
#.#.......................................
.#.#......................................
.#.#......................................
Zigzag of 8 vertices, 10 words paced: 16 drawn
#.#.#.#...................................
#.#.#.#...................................
.#.#.#.#..................................
.#.#.#.#..................................
Zigzag of 16 vertices, 18 words paced: 32 drawn
#.#.#.#.#.#.#.#...........................
#.#.#.#.#.#.#.#...........................
.#.#.#.#.#.#.#.#..........................
.#.#.#.#.#.#.#.#..........................
Zigzag of 40 vertices, 42 words paced: 80 drawn
#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...
#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...
.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#..
.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#..
Zigzag of 20 vertices 2 apart in x: 58 drawn
#...#...#...#...#...#...#...#...#...#.....
.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#....
.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#....
..#...#...#...#...#...#...#...#...#...#...
The 39 segments as separate lines (40h): 80 drawn
#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...
#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...
.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#..
.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#..
The 39 segments as separate lines, each drawn end to start: 80 drawn
#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...
#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#...
.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#..
.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#..
Done.
References
-
^ SCPH-5501 output: followup28/00RUN.txt
-
^ a b c SCPH-5501 output: followup28/01GRD.txt
-
^ a b c SCPH-5501 output: followup28/03SMH.txt
-
^ a b SCPH-5501 output: followup28/08SKW.txt
-
^ SCPH-5501 output: followup28/02S3R.txt
-
^ SCPH-5501 output: followup28/04TDC.txt
-
^ SCPH-5501 output: followup28/06MSH.txt
-
^ SCPH-5501 output: followup28/07PLJ.txt