- Maximum file size: 2048 bytes ?
- Type code: 5
- Loaded into: Z80 code RAM
Blocks of 5 word (16 bit) values:
- Patch address in bytes. $0000 means end of file. All the $0001~$FFFF range seems to work.
- First data word is (/2), byteswapped and written to address
- Second data word is (/2)-1, byteswapped written to address + 2
- Third (optional) data word is (/2), byteswapped and written to address + 5
- Fourth (optional) data word is (/2)-1, byteswapped written to address + 7
If the third data word is $0000, both the third and fourth patches are skipped.
When loading a PAT file (see loading files) the bank number and destination address parameters can be used to add an offset to all the patched values. This allows PCM data associated with a PAT file to be loaded into different regions of PCM DRAM without the need of multiple PAT files.
Code snippet from the TOP-SP1 system ROM which handles this:
C0BFAE MOVEQ #0x0,D0 Clear D0 00000000 C0BFB0 MOVE.B (0x7EDB,A5),D0 Bank number byte to D0 000000bb C0BFB4 SWAP D0 00bb0000 C0BFB6 LSL.L #4,D0 0bb00000 C0BFB8 OR.L (0x7EF4,A5),D0 Insert destination addr. 0bbddddd C0BFBC LSR.L #8,D0 000bbddd C0BFBE MOVE.W D0,(0x7736,A5) Offset will be: bddd