generell sind doch bei so einem spiel hohe frameraten nicht weiter wichtig - ich bezweifle auch dass dune2 auf dem 'ollen amiga500 mit mehr als 10FPS gelaufen ist - lege doch das ganze spiel einfach auf 25fps aus und die framedrops fallen nicht mehr so auf!
idee#1
stelle doch einfach das frame 2x hinterander dar nur mit bewegten mauszeiger (maus bewegt sich mit 50fps und das game selber nur mit 25fps). wenn du jetzt noch deine renderroutine intelligent teilst dann schaffst du die 25fps garantiert
idee#2
schreibe deinen eigenen "intelligenten" framebuffer:
1. rendere den untergrund des ersten frames in ein image im speicher
2. setze alle beweglichen objekte und markiere dabei die tiles deine untergrundes die verändert wurden
3. image#1 darstellen
-> 1 frame gerendert -> ingame-code
4. bestimme "map-scroll" (wenn passiert) und kopiere nun das image#1 in image#2 mit dem passenden scroll-offset
5. überschreibe nun nur die teile die verändert wurden
6. setze alle beweglichen objecte und markiere dabei die tiles deine untergrundes die verändert wurden
7. image#2 darstellen
-> 2 frame gerendert -> ingame-code ->
8. bestimme "map-scroll" (wenn passiert) und kopiere nun das image#2 in image#1 mit dem passenden scroll-offset
9. setze alle beweglichen objecte und markiere dabei die tiles deine untergrundes die verändert wurden
10. image#1 darstellen
-> 3 frame gerendert -> ingame-code ->
...weiter bei 4...
ob das bei dir was bringt weiss ich nicht und außerdem müßtest du dafür sicher einige programmteile neu schreiben aber dieses verfahren wurde von DOS-spielen genutzt die noch keine 4GHz CPU's zur verfügung hatten!
mit dieser prozedur könntest zb auch den mousezeiger/cursor usw mit 40-50fps darstellen aber die eigentliche game-darstellung auf 25 fps begrenzen - müßtest halt nur immer die stelle wo sich der mousezeiger bewegt neu zeichnen (ähnlich idee#1)
idee#3
alternativ könntest du aber auch ein image in map größe erstellen und den ganzen nicht veränderbarem untergrund vorrendern, dann mußt du später nur den betreffenden ausschnitt mit grab* rausholen und wieder darstellen - macht aber nur sinn wenn dein untergrund aus mehr als einem layer besteht.
...und wenn es hart auf hart kommt einfach alle drei ideen miteinander verbinden!!!