by albiongeck » Tue May 21, 2013 7:26 am
I needed a (very) long break as I couldn't concentrate anymore but I've come back to finish what I started last year.
Here I have a working concept video for the palette change code. The code is tidier and the other changes over the last year seem to have really helped.
This is by no means the end, there are many caveats to be worked out - but I feel I've done enough to ask for a little help, and maybe people can start thinking about uses for it.
The video uses a Doom-in-Hexen map to give access to LineSpecials, but the actual PaletteChange() in no way depends on this format.
What works:
What you see in the video. There are just under 930 colours used here. You can change palettes (almost) seamlessly IF you don't use color 0 in your resources. As predicted there is a split-second glitch to the display on changing, (too slight to show in the video at 15 FPS). I advise against changing the palette during combat but otherwise I find it acceptable. I suspect you could find inventive ways to hide or explain the glitch to make it seem more polished.
EDIT: All standard Doom powerups seem to work.
What doesn't:
Fonts don't update correctly. They load correctly with the first palette only. The code looks awkward and I haven't worked it out yet.
EDIT: Underwater translucency will crash out unless actors are reloaded as described below. Otherwise they work fine.
Color[0] rempping:
As predicted this is troublesome. However, I have found that it can be fixed by saving, loading a different map, (to clear the cache) and reloading the save. This fixes all Things and Textures, but not Decals. I feel it should be possible to write a function to Serialise(), re-render and DeSerialise() the game with a pause of only a second or two. I have attempted to write code for this, but I can't make the required delay between Save and Load, and I can't find anything to override the caching of the current map. I need help with this.
The alternative is simply to make sure your resources do not use color[0] to begin with, (as seen in the demo).
Blood decals:
Don't load correctly at all. I have read they are hard coded and have seen a request for them to be converted to normal decals. It would save me a lot of time to have some advice with this.
Other decals:
Load correctly for the palette used at creation time. They mismap when the palette changes but are correct if it changes back. I feel this is should be fixable.
As ever, I can only test so many things. If you are concerned about a feature breaking, or just want to help please post a test wad with untested features and I will video the results.
If you'd like me to upload my code so far, please advise me how you'd like it.
EDIT: had to delete the video and re-post, Youtube doesn't support replacing video files in-place.
I needed a (very) long break as I couldn't concentrate anymore but I've come back to finish what I started last year.
Here I have a working concept video for the palette change code. The code is tidier and the other changes over the last year seem to have really helped.
This is by no means the end, there are many caveats to be worked out - but I feel I've done enough to ask for a little help, and maybe people can start thinking about uses for it.
[youtube]z0yK4uWaiDw[/youtube]
The video uses a Doom-in-Hexen map to give access to LineSpecials, but the actual PaletteChange() in no way depends on this format.
What works:
What you see in the video. There are just under 930 colours used here. You can change palettes (almost) seamlessly IF you don't use color 0 in your resources. As predicted there is a split-second glitch to the display on changing, (too slight to show in the video at 15 FPS). I advise against changing the palette during combat but otherwise I find it acceptable. I suspect you could find inventive ways to hide or explain the glitch to make it seem more polished.
[b]EDIT:[/b] All standard Doom powerups seem to work.
What doesn't:
Fonts don't update correctly. They load correctly with the first palette only. The code looks awkward and I haven't worked it out yet.
[b]EDIT:[/b] Underwater translucency will crash out unless actors are reloaded as described below. Otherwise they work fine.
Color[0] rempping:
As predicted this is troublesome. However, I have found that it can be fixed by saving, loading a different map, (to clear the cache) and reloading the save. This fixes all Things and Textures, but not Decals. I feel it should be possible to write a function to Serialise(), re-render and DeSerialise() the game with a pause of only a second or two. I have attempted to write code for this, but I can't make the required delay between Save and Load, and I can't find anything to override the caching of the current map. I need help with this.
The alternative is simply to make sure your resources do not use color[0] to begin with, (as seen in the demo).
Blood decals:
Don't load correctly at all. I have read they are hard coded and have seen a request for them to be converted to normal decals. It would save me a lot of time to have some advice with this.
Other decals:
Load correctly for the palette used at creation time. They mismap when the palette changes but are correct if it changes back. I feel this is should be fixable.
As ever, I can only test so many things. If you are concerned about a feature breaking, or just want to help please post a test wad with untested features and I will video the results.
If you'd like me to upload my code so far, please advise me how you'd like it.
EDIT: had to delete the video and re-post, Youtube doesn't support replacing video files in-place.