This isn't really important, and isn't all that noticeable, but since we have the information available, I thought someone may wish to implement this into ZSNES.
To go into details about my test:
The results are here.
My test went under the following discrepancy between when the color data is halved:
Code: Select all
color 0 = {
(15 >> 1) + (0 >> 1) = 7 + 0 = 7 -- before
15 + 0 = (15 >> 1) = 7 -- after
}
color 1 = {
(15 >> 1) + (1 >> 1) = 7 + 0 = 7 -- before
15 + 1 = (16 >> 1) = 8 -- after
}
Therefore, by splitting the screen in half vertically, and drawing the top half with the palette color being blue:15, and the add/sub color being blue:0, and the bottom half being palette color blue:15, and the add/sub color being blue:1, I should be able to tell when the color halve occurs.
If the color was halved before color add/sub, then the result color for both the top and bottom halves of the screen would be the same: blue:7. If the color was halved after the color add/sub, then the top half would be blue:7, and the bottom half blue:8.
After creating the test ROM and loading it on my copier, I have confirmed it is the latter: color-halve occurs *after* color add/sub.
On a real SNES, there are two unique colors on the screen. In ZSNES, there is only one, confirming that ZSNES does the color-halve before adding/subtracting the pixel data.
---
Please let me know if there is a more appropriate place I should send things like this in the future (-- or if I shouldn't submit such findings at all).