XPK graphics format: B0 01

These start out looking like the usual XPKs. In UI.prx, the first 8 XPKs are the normal kind. Then there are 14 XUIs, and then a lot more XPKs. This second set of XPKs are the weird kind.

Here's the start of the first one of those:
58 50 4B 00 28 02 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 2A 20 04 00

OK, sure. That looks normal. This resource is 4202A bytes long.

A5 7E 70 01
B0 01 00 27 00 00 00 10 00 00 02 80

B0 01! The normal ones are B0 02.That tells us which format we're looking at. And 39 images (27 in hex). Now let's start treating the position at which we found A5 as being position 0, the beginning of the file.
But this "10 00" is screwy. It's supposed to tell us where the palette ends. This one indicates the palette should end at position 11, in hex. The palette cannot end at 11. 11 is the end of THIS section! That's because there is no palette.
I never knew what the last two bytes of this section were for in a regular XPK. Here they appear to tell us where we will find the end of the section coming up. That is, the beginning of the section AFTER the next section is at position 280, hex.

No palette. What IS next, then? Some divider-sized entries, 39 of them in this case.

"Single player" unhighlighted:     00 00 00 00 00 E0 00 36 00 2F 00 12 00 8F 00 1B
"Single player" highlighted:    00 00 00 00 00 E0 00 36 00 2F 00 12 00 8F 00 1B
"Single player" clicked:    00 00 00 00 00 E0 00 36 00 28 00 0B 00 97 00 23

"Multiplayer" unhighlighted:    00 00 00 00 00 E0 00 36 00 3C 00 12 00 75 00 1B
"Multiplayer" highlighted:    00 00 00 00 00 E0 00 36 00 3C 00 12 00 75 00 1B
                

Here are some of them, in order of appearance.
They all start with:
00 00 00 00 00 E0 00 36 00
and I have no idea what the importance of that is.
The 9th and 10th bytes are horizontal offset, and the 11th and 12th are vertical!
The final 4 bytes are the dimensions of the image.

You may notice that there is no image number anywhere.

Then there is a series of 4-byte entries, ordered by ascending value. There are 39 of them. They tell us where the beginning of each image within this XPK is, relative to the position of the beginning of the series, like in an xpk that is being modified by an XMV.
The first one in this case is 00 00 00 9C. The first image begins in 9c minus 4 bytes.
The next one is 00 00 24 CE. The second image begins in 24CE minus 8 bytes.
And so on.

This means that our list of 39 4-byte entries is 9C bytes long. It is possible to have multiple entries that have the same value, which means that the image data is 0 bytes long. Be careful with that; it does happen in Editor.PRX.
At the end of the 9C-byte-long section, we have:
00 4C

The beginning of the first image! Each line starts with a wx yz which indicates how many bytes follow before the line ends, divided by two. It's much like the other kind of XPK.
So, this line's wx yz is 00 4C. that means that it is 2*76=152 (dec) bytes long, not including the wx yz.

Instead of a palette, each individual pixel is defined, in order of appearance, from left to right, by two bytes, using the same format as the colours in the palettes in the B0 02 XPK files. There's just one wrinkle.
7F FF (255 r, 251 g, 255 b) is the highest you can go before things start getting weird.

wx yz ,where w>7, will draw yz + f(x) blank pixels (f(x) defined below), and the next pixel will have altered alpha. If this puts its position off the screen, it will wrap around the screen and end up 1 pixel lower. There does NOT have to be a colour defined in the next 2 bytes. For example, a line can end with one of these, in which case if you looked at the next two bytes for a colour, you'd read the length of the next line instead. So, check to see if you're at the end of a line before you go looking for a colour after one of these. The first pixel of the next line will not be affected. The purpose of doing this would be to have a blank row of pixels.

Alpha contribution in decimal (out of 255) for values of w:
8-0
9-33
A-66
B-99
C-132
D-165
E-198
F-231

f(x) in decimal, for values of x in hexadecimal:
0-0
1-256
2-512
3-768
4-0
5-256
6-512
7-768
8-0
9-256
a-512
b-768
c-0
d-256
e-512
f-768

alpha contribution from x:
0-0
1-0
2-0
3-0
4-8
5-8
6-8
7-8
8-16
9-16
a-16
b-16
c-24
d-24
e-24
f-24

As in a B0 02 XPK, you keep reading the data and making images until you reach the end of this resource.