The upper 5 bits set the starting address in the nametable. The lower 3 bits set the amount by which pixels are delayed (higher = less delay).

Let's say the first four 8x1 pixel slivers on a particular scanline are as follows:

**Code:**

01002003 03300330 00112233 30020010

Then, for each X from 0 to 23, I break down how this scroll value is decomposed into a starting position and a delay amount:

**Code:**

x = 0: 00000 000. Coarse X = 0, fine X = 0. Start at tile 0, delay by 8 - 0 = 8

x = 1: 00000 001. Coarse X = 0, fine X = 1. Start at tile 0, delay by 8 - 1 = 7

x = 2: 00000 010. Coarse X = 0, fine X = 2. Start at tile 0, delay by 8 - 2 = 6

x = 3: 00000 011. Coarse X = 0, fine X = 3. Start at tile 0, delay by 8 - 3 = 5

x = 4: 00000 100. Coarse X = 0, fine X = 4. Start at tile 0, delay by 8 - 4 = 4

x = 5: 00000 101. Coarse X = 0, fine X = 5. Start at tile 0, delay by 8 - 5 = 3

x = 6: 00000 110. Coarse X = 0, fine X = 6. Start at tile 0, delay by 8 - 6 = 2

x = 7: 00000 111. Coarse X = 0, fine X = 7. Start at tile 0, delay by 8 - 7 = 1

x = 8: 00000 000. Coarse X = 1, fine X = 0. Start at tile 1, delay by 8 - 0 = 8

x = 9: 00001 001. Coarse X = 1, fine X = 1. Start at tile 1, delay by 8 - 1 = 7

x = 10: 00001 010. Coarse X = 1, fine X = 2. Start at tile 1, delay by 8 - 2 = 6

x = 11: 00001 011. Coarse X = 1, fine X = 3. Start at tile 1, delay by 8 - 3 = 5

x = 12: 00001 100. Coarse X = 1, fine X = 4. Start at tile 1, delay by 8 - 4 = 4

x = 13: 00001 101. Coarse X = 1, fine X = 5. Start at tile 1, delay by 8 - 5 = 3

x = 14: 00001 110. Coarse X = 1, fine X = 6. Start at tile 1, delay by 8 - 6 = 2

x = 15: 00001 111. Coarse X = 1, fine X = 7. Start at tile 1, delay by 8 - 7 = 1

x = 16: 00010 000. Coarse X = 2, fine X = 0. Start at tile 2, delay by 8 - 0 = 8

x = 17: 00010 001. Coarse X = 2, fine X = 1. Start at tile 2, delay by 8 - 1 = 7

x = 18: 00010 010. Coarse X = 2, fine X = 2. Start at tile 2, delay by 8 - 2 = 6

x = 19: 00010 011. Coarse X = 2, fine X = 3. Start at tile 2, delay by 8 - 3 = 5

x = 20: 00010 100. Coarse X = 2, fine X = 4. Start at tile 2, delay by 8 - 4 = 4

x = 21: 00010 101. Coarse X = 2, fine X = 5. Start at tile 2, delay by 8 - 5 = 3

x = 22: 00010 110. Coarse X = 2, fine X = 6. Start at tile 2, delay by 8 - 6 = 2

x = 23: 00010 111. Coarse X = 2, fine X = 7. Start at tile 2, delay by 8 - 7 = 1

When starting coarse X increases by 1, pixels arrive 8 pixels earlier than they would other have. But most of this being earlier is canceled out by the increased delay from fine X = 7 to fine X = 0 (from 1 to 8 pixels, a difference of 7 pixels). I'll run a few tiles for both x = 7 and x = 8 to show how two adjacent scroll values across a tile boundary changes the fetch pattern and which pixel is used.

With a horizontal scroll value of 7 (coarse X 0, fine X 7), the preroll at dots 321-336 has loaded two slivers from coarse X = 0 and coarse X = 1, leaving coarse X at 2.

**Code:**

SIPO PISO CX Fetch

01002003 03300330 2 Nametable for X=2

10020030 3300330x 2

00200303 300330xx 2 Attribute for X=2

02003033 00330xxx 2

20030330 0330xxxx 2 Pattern plane 0 for X=2

00303300 330xxxxx 2

03033003 30xxxxxx 2 Pattern plane 1 for X=2

30330033 0xxxxxxx 2 Prepare to load sliver into PISO

03300330 00112233 3 Nametable for X=3

33003300 0112233x 3

30033000 112233xx 3 Attribute for X=3

00330001 12233xxx 3

03300011 2233xxxx 3 Pattern plane 0 for X=3

33000112 233xxxxx 3

30001122 33xxxxxx 3 Pattern plane 1 for X=3

00011223 3xxxxxxx 3 Prepare to load sliver into PISO

^

Fine X=7

Result:

30330033 00011223

With a horizontal scroll value of 8 (coarse X 1, fine X 0), the preroll at dots 321-336 has loaded two slivers from coarse X = 1 and coarse X = 2, leaving coarse X at 3.

**Code:**

SIPO PISO CX Fetch

03300330 00112233 3 Nametable for X=3

33003300 0112233x 3

30033000 112233xx 3 Attribute for X=3

00330001 12233xxx 3

03300011 2233xxxx 3 Pattern plane 0 for X=3

33000112 233xxxxx 3

30001122 33xxxxxx 3 Pattern plane 1 for X=3

00011223 3xxxxxxx 3 Prepare to load sliver into PISO

00112233 30020010 4 Nametable for X=4

01122333 0020010x 4

11223330 020010xx 4 Attribute for X=4

12233300 20010xxx 4

22333002 0010xxxx 4 Pattern plane 0 for X=4

23330020 010xxxxx 4

33300200 10xxxxxx 4 Pattern plane 1 for X=4

33002001 0xxxxxxx 4 Prepare to load sliver into PISO

^

Fine X=0

Result:

03300330 00112233

Result from X = 7 (fine X = 7, starting coarse X = 0):

`30330033 00011223`Result from X = 8 (fine X = 0, starting coarse X = 1):

`03300330 00112233`These are offset by one pixel from each other.

Which is the first line of this diagram that still confuses you?