The way I've implemented resolution differences is to pass a scale factor into my Device::Acquire() and Device::Reset() calls that is saved by the library.
Any calls within the library that affect screen co-ordinates (only three functions actually) just scale the co-ordinates by this factor before passing them on to Direct3D.
Simple but effective. The graphics look a bit ropey at less than 1024x768, but for a 2D platformer I think that is acceptable.
At the moment it is hardwired with 640x480, 800x600 and 1024x768 but I intend that when Udo runs first time, it will test for the availability of the three modes and write a config file specifying which are possible and by default the game will run in the highest.
If, at any point, the game fails to acquire a graphics mode that this file tells it it should be able to acquire, it will modify this file so that the first time bit will run again next time you run Udo. This will protect against the user changing graphics hardware or drivers after Udo is installed.
That's the plan, anyway. Got so many features now, I really better write some kind of game for them to apply to [smile].
[LATER]
Spin attack is now working and is pretty cool. You now have to spin attack to kill enemies rather than just landing on them.
You press down when you are in the air and Udo drops quickly and spins round quite quick. Bit hard to describe really, but feels really solid and fun.
Next up is destructible blocks that you spin down onto to destroy. I'm not too sure how to do the destruction effect at the moment so will have to experiment. I'm quite tempted to have glass blocks that can be destroyed since a) it makes a certain amount of physical sense, b) they are easy to make look good with alpha blending and c) I can't remember another Mario style game that had glass blocks you could smash (sure someone will correct me [smile]).
[LATER STILL]
Well that was a success. Smashable glass blocks in and working, another fine freeware wave sound sourced and a pretty cool effect as they smash really.
Here's a short demo video of the glass smashing in action.
Rotation is really bringing this game to life. I'm doing the glass smash with a standard starburst of particles, but the particles, which in this case are just alpha-faded blue triangles, are spinning as they expand and it creates a pretty nifty smashing effect with just one static frame in terms of resources.