2008/9/2 Alexander Dorofeyev alexd4@inbox.lv:
I think that it's not that primary_render_target_is_p8() is broken, but things sometimes get confusing because there are two kinds of cases. Sometimes, we only want to care that primary is p8 (this is used as kind of indicator we are in 8 bit 2-D ddraw game and don't need to care about 3D requirements) and if so do something for all p8 surfaces. d3dfmt_p8_init_palette is one such place (index in alpha optimization).
I think that's a rather hacky way to detect that. If that's what the function is supposed to do it should at the very least be named differently (to prevent this kind of bugs), but you should probably just check if the device is supposed to be 3D capable. I realize that's not possible yet and would need to be built, but we'll probably need this in other places as well.