psx.wiki

Bus Auto Increment: Difference between revisions

Revision as of 04:48, 23 October 2026
RemmyLee
(Main page: drop the Hardware Tests lede)
Revision as of 05:11, 23 October 2026
RemmyLee
(Hardware tests: 72 more test pages, listed on the main page by area; RUN.toml no longer published)
Line 1:Line 1:
+---
+title: Bus Auto Increment
+type: test
+summary: Measures what bit 13 of the delay and size registers does to 32-bit accesses to 8-bit and 16-bit devices.
+category: Hardware tests
+info: Machine = SCPH-5501
+info: Program = autoinc (pcsx-redux nugget)
+---
+
+## Overview
+
+A 32-bit access to a 16-bit device is two bus transactions, and to an 8-bit device four. Bit 13 of a device's delay and size register decides whether the device address advances between those transactions. The program tests this on the 8-bit BIOS ROM through DEV2 (1F801010h) and on the 16-bit SPU through DEV4 (1F801014h).[^src]
+
+On the ROM it reads words, halfwords and bytes from BFC00000h under the BIOS's own setting and again with bit 13 cleared. On the SPU it seeds the voice 0 ADSR registers at 1F801C08h and 1F801C0Ah with halfword stores under a safe setting. It then issues one SW, LW, LH or SH under the setting being tested and reads the result back under the safe setting.[^src]
+
+The program ran its full set three times and printed the same lines each time.[^run]
+
+## Results
+
+### BIOS ROM
+
+With bit 13 set, as the BIOS leaves it (DEV2 0013243Fh), a word read returns four consecutive ROM bytes: the first word read 3C080013h. With bit 13 cleared (0013043Fh) the address does not advance, so every byte of a word comes from one address: the first word read 13131313h and the first halfword 1313h. Byte reads are the same under both settings.[^run]
+
+### SPU
+
+The SPU results for each setting of DEV4 are as follows. Each pair gives the register at 1F801C0Ah before the register at 1F801C08h.[^run]
+
+Table: SPU accesses by DEV4 setting
+
+| DEV4 | Width and bit 13 | SW of AAAA5555h over 2222h:1111h | LW of 9ABCh:5678h | LH +2 |
+| --- | --- | --- | --- | --- |
+| 200931EFh | 16-bit, set | AAAAh:5555h | 9ABC5678h | 9ABCh |
+| 200911EFh | 16-bit, clear | 2222h:AAAAh | 56785678h | 9ABCh |
+| 200921EFh | 8-bit, set | FFAAh:FF55h | BCBC7878h | BCBCh |
+| 200901EFh | 8-bit, clear | 2222h:FFAAh | 78787878h | BCBCh |
+
+With bit 13 clear, both halves of a 32-bit store go to the first register, and the second half overwrites the first: 1F801C08h ended as AAAAh and 1F801C0Ah kept 2222h. A 32-bit load then reads the first register twice. Under an 8-bit setting the SPU receives one byte for each 16-bit register. The upper byte of the register is written as FFh.[^run]
+
+## Runs
+
+### 22 October 2026 (link)
+
+[AUTOINC.txt](/tests/raw/20261022T2232Z-5501a-link/autoinc/AUTOINC.txt):
+
+```
+AUTOINC-START dev2=0013243f dev4=200931e1
+ROM bios dev2=0013243f lw 3c080013 3508243f 3c011f80 ac281010 lh 0013 3c08 243f 3508 lb 13 00 08 3c 3f 24 08 35
+ROM noinc dev2=0013043f lw 13131313 3f3f3f3f 80808080 10101010 lh 1313 0808 3f3f 0808 lb 13 00 08 3c 3f 24 08 35
+SPU 16inc dev4=200931ef sw(aaaa5555 over 2222:1111)=aaaa:5555 sh(beef over 4444:3333)=4444:beef lw(9abc:5678)=9abc5678 lh+2=9abc
+SPU 16no dev4=200911ef sw(aaaa5555 over 2222:1111)=2222:aaaa sh(beef over 4444:3333)=4444:beef lw(9abc:5678)=56785678 lh+2=9abc
+SPU 8inc dev4=200921ef sw(aaaa5555 over 2222:1111)=ffaa:ff55 sh(beef over 4444:3333)=4444:ffbe lw(9abc:5678)=bcbc7878 lh+2=bcbc
+SPU 8no dev4=200901ef sw(aaaa5555 over 2222:1111)=2222:ffaa sh(beef over 4444:3333)=4444:ffbe lw(9abc:5678)=78787878 lh+2=bcbc
+ROM bios dev2=0013243f lw 3c080013 3508243f 3c011f80 ac281010 lh 0013 3c08 243f 3508 lb 13 00 08 3c 3f 24 08 35
+ROM noinc dev2=0013043f lw 13131313 3f3f3f3f 80808080 10101010 lh 1313 0808 3f3f 0808 lb 13 00 08 3c 3f 24 08 35
+SPU 16inc dev4=200931ef sw(aaaa5555 over 2222:1111)=aaaa:5555 sh(beef over 4444:3333)=4444:beef lw(9abc:5678)=9abc5678 lh+2=9abc
+SPU 16no dev4=200911ef sw(aaaa5555 over 2222:1111)=2222:aaaa sh(beef over 4444:3333)=4444:beef lw(9abc:5678)=56785678 lh+2=9abc
+SPU 8inc dev4=200921ef sw(aaaa5555 over 2222:1111)=ffaa:ff55 sh(beef over 4444:3333)=4444:ffbe lw(9abc:5678)=bcbc7878 lh+2=bcbc
+SPU 8no dev4=200901ef sw(aaaa5555 over 2222:1111)=2222:ffaa sh(beef over 4444:3333)=4444:ffbe lw(9abc:5678)=78787878 lh+2=bcbc
+ROM bios dev2=0013243f lw 3c080013 3508243f 3c011f80 ac281010 lh 0013 3c08 243f 3508 lb 13 00 08 3c 3f 24 08 35
+ROM noinc dev2=0013043f lw 13131313 3f3f3f3f 80808080 10101010 lh 1313 0808 3f3f 0808 lb 13 00 08 3c 3f 24 08 35
+SPU 16inc dev4=200931ef sw(aaaa5555 over 2222:1111)=aaaa:5555 sh(beef over 4444:3333)=4444:beef lw(9abc:5678)=9abc5678 lh+2=9abc
+SPU 16no dev4=200911ef sw(aaaa5555 over 2222:1111)=2222:aaaa sh(beef over 4444:3333)=4444:beef lw(9abc:5678)=56785678 lh+2=9abc
+SPU 8inc dev4=200921ef sw(aaaa5555 over 2222:1111)=ffaa:ff55 sh(beef over 4444:3333)=4444:ffbe lw(9abc:5678)=bcbc7878 lh+2=bcbc
+SPU 8no dev4=200901ef sw(aaaa5555 over 2222:1111)=2222:ffaa sh(beef over 4444:3333)=4444:ffbe lw(9abc:5678)=78787878 lh+2=bcbc
+AUTOINC-DONE
+ResetGraph:jtb=801e78b8,env=801e7900
+```
+
+[bench.txt](/tests/raw/20261022T2232Z-5501a-link/autoinc/bench.txt):
+
+```
+2336 bytes of TTY text in psx.log
+```
+
+[when.txt](/tests/raw/20261022T2232Z-5501a-link/autoinc/when.txt):
+
+```
+20261022T2232Z
+```
+
+## References
+
+[^src]: pcsx-redux nugget, tests/autoinc/autoinc.c, header comment. MIT License. https://github.com/pcsx-redux/nugget
+[^run]: Hardware test run 20261022T2232Z-5501a-link on the SCPH-5501: [AUTOINC.txt](/tests/raw/20261022T2232Z-5501a-link/autoinc/AUTOINC.txt).