Saturday, November 24, 2007

BG_WRAP_ON ?

I read somewhere that "Background Wrap only applies to rotation backgrounds (Rotation Backgrounds.) Setting the bit to 1 enables wrapping of the background while specifying a value of 0 disables wrapping of the background. Specified by BG_WRAP_ON or BG_WRAP_OFF". -- this suggest we need MODE_5 if we want two planes for the level data. I did the test this afternoon and it turned out that mode 0 is very well capable of wrap-scrolling. And actually it seems to be supported by all the BG layers, too.

class UnderProgress : public Animator {
unsigned offset;
public:
UnderProgress():Animator(1,"-cx-") {offset=0;}
virtual Animator::donecode play() {
if(!running) return Animator::DISMISS;
offset++;
BG2_X0=offset;
SUB_BG0_X0=-(offset>>1);
return Animator::QUEUE;
}
};


Difficile de trouver des informations précises sur le scrolling de la DS, en fait. Si bien que les infos trouvées sur GBAtek et autres wiki laissaient à penser que seul le mode 5 (avec des plans carrés capables de rotations et zooms) pouvait fonctionner avec le "scrolling infini". C'est effectivement le rôle de BG_WRAP_ON pour les plans dits "extended rotation", mais je vous assure pour l'avoir fait fonctionner pas plus tard qu'il y a 2 minutes que le mode 0 et ses plans "texte classique" supporte parfaitement le scrolling infini, et sur tous les background.

En fait, c'est le comportement par défaut de la console et notre bit "BG_WRAP_ON" n'est là que pour désactiver cette fonctionnalité (qui pourrait être gênante si on essayait de se servir des plans déformés pour faire de la 3D (cf. le "mode 7" de la SNES).

Je souffle un coup, donc: je pourrai sans soucis choisir la taille 512x256 qui m'est si chère pour l'instant (les mode 5 n'offrant que 128x128, 256x256, 512x512 et 1024x1024).

(PS: j'en profite pour signaler à ceux que l'anglais rebiffent que le premier des posts "tutoriel" sur le scrolling est (enfin) complètement traduit).

1 comment:

Unknown said...

Et même les Backgrounds Bitmap ;) aussi ... je l'utilise dans DSPhoto :)