PLAY+MOBILE . Archive

Douglas Edric Stanley

// play+mobile //

projet u32 resultat; resultat = resultat | (dsALeft * 0x0200); // control sound 2 // control sound 2 resultat = resultat | (sound3Right * 0x4000); resultat = resultat | (loop * 0x4000); // envelope value(0-15), envelope Mode(0/1), step-time(0-7), duty cycle(0-3), if (clockDividerFrequency > 7) clockDividerFrequency = 7; if (volume > 15 ) volume = 15; void PlaymobileSound2Frequency( u16 freq ) { if (sweepTime > 7) sweepTime = 7; resultat = resultat | (clockDividerFrequency * 0x0001); REG_SOUND4CNT_H = resultat; // control sound 4 resultat = 0; resultat = resultat | (loop * 0x4000); u32 resultat; resultat = resultat | (fadeUpOrDown * 0x0800); // reset (0/1), fadeUpOrDown(0/1), frequency(0-2047) } resultat = resultat | (sound1Right * 0x1000); PlaymobileSoundAllSetL( 1, 1, 1, 1, 1, 1, 1, 1, 7, 7 ); resultat = resultat | (dutyCycle * 0x0040); if (dutyCycle > 3) dutyCycle = 3;````

douglas decal = (decal + dstrlen(str))* 8; /* if (var!=NULL) SoMode4RendererDrawNumber ((x+decal), 239, y, var, SoFontGetDefaultFontImage()); */ play+mobile [functions] if ((str!=NULL) && (str!="")) { void PlaymobilePrint(char *str, int var, u16 x, u16 y) { SoMode4RendererDrawString (x, 239, y, str, SoFontGetDefaultFontImage()); decal = (decal + dstrlen(str))* 8; (cc) Creative Commons 2004. if (var!=NULL) SoMode4RendererDrawNumber ((x+decal), 239, y, var, SoFontGetDefaultFontImage()); if (var!=NULL) SoMode4RendererDrawNumber ((x+decal), 239, y, var, SoFontGetDefaultFontImage()); Playmobile Library. SoMode4RendererDrawString(x, 239, y, str, SoFontGetDefaultFontImage ());````

projet #define SOUND3PLAYLOOP 0x0000 // Play sound looped ````En janvier 2004, Douglas Edric Stanley et Stéphane Cousot ont mené le workshop PLAY+MOBILE à l'Ecole d'Art d'Aix-en-Provence, avec la participation de 7 étudiants de l'école d'Aix et un étudiant de l'Ecole d'Art de Bordeaux. Le workshop s'est principalement focalisé sur l'appropriation de la console Gameboy Advance, en créant des programmes expérimentaux artistiques pour ce support. Ce site est le dépot de projets liés à ce workshop ainsi que sa continuation....................... Les programmes conçus pendant le workshop ont pour la plupart été tournés vers la création d'instruments musicaux, de boîtes à rythmes, etc., en utilisant les synthétiseurs internes de la console. D'autres usages, plus expérimentaux ont été explorés, en lançant par exemple des programmes dans les registres de mémoire/contrôle du Gameboy pour observer les perturbations subies par la machine....................... La programmation s'est faite avec deux langages, C et DragonBasic. De nouveaux outils de développement ont été créés par Stéphane Cousot et Douglas Edric Stanley pour faciliter le développement de programmes Gameboy Advance en C, notamment sur Mac OS X.u32 PlaymobileMathRandomForDouglas(s32 range); ````

}*/ SoSpriteMemManagerSetInBitmappedMode(BitmapMode); ```` PlaymobileSoundAllSetH( 0, 0, 0, 0, 0, 0, 0, 0, 1, 1); } void PlaymobileSound3SetH( ) { void PlaymobileSoundInit() { void PlaymobileSound1Frequency( u16 freq ) { void PlaymobileSound2Frequency( u16 freq ) { // (cc) Creative Commons 2004 void PlaymobileSound1SetX( bool reset, bool loop, u16 soundFrequency ) { // initialize all the sounds } PlaymobileSound1SetH(15, 1, 5, 2, 0); if (clockDividerFrequency > 7) clockDividerFrequency = 7; resultat = resultat | (frequency * 0x0001); // ajouter frequency qui commence ˆ 1 void PlaymobileSound3SetL( ) { u32 resultat; resultat = resultat | (reset * 0x8000); // ajouter reset value qui commence ˆ 32768 ````

nanoloop 2.0 /* /* void PlaymobilePrint(char *str, int var, u16 x, u16 y) { nanoloop 2.0 est disponible. il y a -- apparement -- une version 1.2 qui sortira sur rom pour faire un flash-rom soi-même. s32 range; u32 rnd; } http://nanoloop.de // play+mobile [header] void PlaymobileSound3SetL();

void PlaymobileSpriteUpdate(); void PlaymobilePrint(char *str, int var, u16 x, u16 y) { SoMode4RendererDrawString(x, 239, y, str, SoFontGetDefaultFontImage()); void PlaymobilePrint(char *str, int var, u16 x, u16 y) { if ((str!=NULL) && (str!="")) { if ((str!=NULL) && (str!="")) { if ((str!=NULL) && (str!="")) { if (var!=NULL) SoMode4RendererDrawNumber((x+decal), 239, y, var, SoFontGetDefaultFontImage()); void PlaymobilePrint(char *str, int var, u16 x, u16 y) { /* */ if (var!=NULL) SoMode4RendererDrawNumber((x+decal), 239, y, var, SoFontGetDefaultFontImage()); } } (cc) Creative Commons 2004. } u16 decal; decal = 0; play+mobile [functions]

midi+gameboy void PlaymobileSoundInit() { resultat = resultat | (reset * 0x8000); // ajouter reset value qui commence ˆ 32768 voici quelques liens pour fabriquer des circuits à base de PIC ( on aime ;) qui feront rentrer du midi dans son gameboy. il s'agit de notes en plus du horloge midi comme dans nanoloop. apparement le système est compatible LSDj. //***************************** http://www.firestarter-music.de/lsdj/ /* u16 decal; decal = 0; decal = (decal + dstrlen(str))* 8; http://www.entitylabs.net/LSDJ-MC2.php PlaymobileMath Library. u32 PlaymobileMathRandomForDouglas(s32 range); http://www.lo-bat.be/pages/midicable_tutorial.htm play+mobile [header] */ */

// changes to sound 1 resultat = resultat | (volume * 0x1000); PlaymobileSprite Library. //init image & palette } //init image & palette PlaymobileSprite Library. // sprite management Sprite[i].ptr, play+mobile [functions] PlaymobileSpriteSetImage(image); } struct Properties { // init sprite manager void PlaymobileSpriteDisplayWait() { struct Properties Sprite[128]; SO_FIXED_FROM_WHOLE(Sprite[i].scaleH), SoSpriteMemManagerRelease(SoSpriteGetAnimationIndex(Sprite[0].ptr)); // appearance // transformation SoSpriteMemManagerSetInBitmappedMode(BitmapMode); SpriteImage = image; // screen management /*void PlaymobileSpritePriority(u8 spriteNum, u32 priority) {

UART PlaymobileMath Library. if (!randomSeed) { je travaille actuellement sur la communication entre le Gameboy Advance et le PC via le port série. Il faut un convertisseur MAX pour rendre le port du Gameboy compatible avec le PC : j'utilise actuellement le MBVII de Jeff Frowhein. J'inclus ici les infos concernant la programmation du port série, ainsi qu'un lien vers un très bon site détaillant le développement d'un serveur sur Gameboy Advance. On y trouve également les codes source d'un emetteur-récepteur simple pour GBA en mode UART (cf. 18th November 2001 (21:05) et suivre le lien "this little demo"). (cc) Creative Commons 2004. http://www.fivemouse.com/gba/diary.html play+mobile [header] */ //***************************** http://www.work.de/nocash/gbatek.htm#communicationports resultat = resultat | (length * 0x0001); http://www.devrs.com/gba/files/mbv2faqs.php void PlaymobileSound1Play( u16 freq ); decal = (decal + dstrlen(str))* 8; u16 decal; decal = 0; SoMode4RendererDrawString(x, 239, y, str, SoFontGetDefaultFontImage()); decal = (decal + dstrlen(str))* 8; if (var!=NULL) SoMode4RendererDrawNumber((x+decal), 239, y, var, SoFontGetDefaultFontImage()); */ (cc) Creative Commons 2004. if (var!=NULL) SoMode4RendererDrawNumber((x+decal), 239, y, var, SoFontGetDefaultFontImage()); decal = (decal + dstrlen(str))* 8; play+mobile [functions] (cc) Creative Commons 2004. SoMode4RendererDrawString(x, 239, y, str, SoFontGetDefaultFontImage()); void PlaymobilePrint(char *str, int var, u16 x, u16 y) { if (var!=NULL) SoMode4RendererDrawNumber((x+decal), 239, y, var, SoFontGetDefaultFontImage());

gba flash rom sur mac SoMode4RendererDrawString(x, 239, y, str, SoFontGetDefaultFontImage()); en plus de notre kit de développement pour mac os x ;) on peut maintenant aussi transférer ses programmes sur cart flash à partir de son mac, ce qui est évidemment chouette. play+mobile [header] void PlaymobileSpriteFrame(u8 spriteNum, u32 frame); http://www.gameboy-advance.net/fal_soft/gba_flash_advance_mac_os_x.htm s32 PlaymobileMathRandom(s32 start, s32 stop) { http://libusb.sourceforce.net/download.html#stable if (preStepFrequency > 15) preStepFrequency = 15; http://www.cs.helsinki.fi/u/jikorhon/condev/gba/dl/gbalink_mac_v0.5.zip Playmobile Library. //*****************************

resultat = resultat | (dsALevel * 0x0004); void PlaymobileSpriteLocation(u8 spriteNum, s32 x, s32 y); /* void PlaymobileSpriteUpdate(); (cc) Creative Commons 2004. void PlaymobileSpriteFrame(u8 spriteNum, u32 frame); void PlaymobileSpriteSetImage(const SoSpriteAnimation* image); void PlaymobileSpriteFlipHorizontal(u8 spriteNum); void PlaymobileSpriteLocation(u8 spriteNum, s32 x, s32 y); // transformation void PlaymobileSpriteScale(u8 spriteNum, u32 propH, u32 propV); // transformation void PlaymobileSpriteSetPalette(const u16* palette); void PlaymobileSpriteDisplayWait(); void PlaymobileSpriteNewSprite(u8 num); //**************************** // appearance (cc) Creative Commons 2004. void PlaymobileSpriteDisplayWait(); void PlaymobileSpriteRotate(u8 spriteNum, u32 angle); // 256 is a full circle

installer libusb sur mac } Sprite[i].frame = 0; Depuis la version 0.6 de "gbalink" on n'a plus besoin d'installer "libusb" sur son mac. Par contre, il est pratique de créer un lien symbolique de gbalink pour qu'on puisse écrire à partir de n'importe quel dossier "gbalink -f -w monprogramme.gba". Pour ce faire, il suffit de placer le programme gbalink quelque part et mettre un lien vers lui dans le dossier "/usr/bin/". Ce lien transformera gbalink en une commande du terminal .... voici la commande pour créer un lien gbalink à partir du dossier gbalink_mac_v0.6 que j'ai mis dans /Developer/Applications/ : "sudo ln -s /Developer/Applications/gbalink_mac_v0.6/gbalink /usr/bin/gbalink". #include "PlaymobileSound.h" http://libusb.sourceforge.net/download.html */ void PlaymobilePrint(char *str, int var, u16 x, u16 y); http://www.cs.helsinki.fi/u/jikorhon/condev/gba/ void PlaymobileSpriteFlipHorizontal(u8 spriteNum); void PlaymobileSpriteSetImage(const SoSpriteAnimation* image) { void PlaymobileSpriteFrame(u8 spriteNum, u32 frame) { u32 MemorySprite; SoSpriteMemManagerInitialize(); } } Sprite[i].rotation, Sprite[spriteNum].locH = x; } Sprite[spriteNum].rotation = angle; } SoSpriteMemManagerInitialize(); void PlaymobileSpriteNewSprite(u8 num) { SoSpriteSetAnimationIndex( }; MemorySprite + (Sprite[i].frame * SoSpriteAnimationGetNumIndicesPerFrame(SpriteImage)) int i; void PlaymobileSpriteFlipHorizontal(u8 spriteNum) { /* } /* Sprite[i].ptr, play+mobile [functions] Sprite[i].ptr = SoSpriteManagerRequestSprite();

gba + director via le port série } resultat = resultat | (rightVolume * 0x0010); Ce programme n'est pas encore optimisé, c'est vraiement une ébauche, mais le voici. Il permet de communiquer entre une animation Director et le Gameboy via un programme créé sur mac à partir de notre PlaymobileSDK. Si vous utilisez HAM ou un autre SDK, il serait facile à adapter .... Côté hardware, vous pouvez utilisez le MBVII de Jeff Frowhein pour communiquer PC + GBA .... Nous avons utilisé un plaque d'essai USB+Serie+Max232+GBA (voir image) qu'on a rapidement fabriqué à LEOIL pour avoir un schéma plus simple/spécifique. Il faut également le serial xtra que vous pouvez téléchargez en démo chez PhysicalBits avec le lien ici .... Ce programme est l'adaptation du programme UART simple d'Adrian O'Grady chez fivemouse.com .... La plaque d'essai est basé sur le schema de dark fader. #include "PlaymobileSprite.h" http://www.fivemouse.com/gba/diary.html void PlaymobileSpriteRotate(u8 spriteNum, u32 angle); // 256 is a full circle http://www.physicalbits.com/Xtras/Detailed/SerialXtra/SerialXtraIntro.php SoSpriteSetSize(Sprite[spriteNum].ptr, width, height); http://darkfader.net/gba/files/UART.gif void PlaymobileSoundAllSetH( bool dsBFifoReset, bool dsBTimer, bool dsBLeft, bool dsBRight, bool dsAFifoReset, bool dsATimer, bool dsALeft, bool dsARight, bool dsBLevel, bool dsALevel) {

// sprite management // screen management play! Playmobile Library. (cc) Creative Commons 2004. source #define REG_SOUND4CNT_L *(u32*)0x04000078 //*************************** /* //*************************** /* s32 PlaymobileMathRandom(s32 start, s32 end); PlaymobileMath Library. //*************************** PlaymobileMath Library. PlaymobileMath Library. /* PlaymobileMath Library. PlaymobileMath Library. play+mobile [header] //*************************** PlaymobileMath Library. play+mobile [header] //*************************** s32 PlaymobileMathRandom(s32 start, s32 end); (cc) Creative Commons 2004. u32 PlaymobileMathRandomForDouglas(s32 range); PlaymobileMath Library. (cc) Creative Commons 2004. PlaymobileMath Library. play+mobile [header] //*************************** s32 PlaymobileMathRandom(s32 start, s32 end);

cable uart + usb #include "PlaymobileMath.h" je vais fabriquer un cable plus simple que le MBVII en partant des schémas de Dark Fader dont voici le lien. Il intégrera également un convertisseur usb qui sont de moins en moins chers avec des drivers OS9, OSX, Windows et Linux. void PlaymobileSpriteSetImage(const SoSpriteAnimation* image); http://darkfader.net/gba/ SO_FIXED_FROM_WHOLE(Sprite[i].scaleV) void PlaymobileSoundInit(); #define REG_SOUND1CNT_H *(u16*)0x04000062 void PlaymobileSound3SetH(); #define SOUND3OUTPUT1 0x2000 // Output unmodified #define SOUND3INIT 0x8000 // Makes the sound restart void PlaymobileSoundAllSetL( bool sound4Right, bool sound3Right, bool sound2Right, bool sound1Right, bool sound4Left, bool sound3Left, bool sound2Left, bool sound1Left, u8 rightVolume, u8 leftVolume ); #define REG_SOUND3CNT_L *(u16*)0x04000070 #define REG_SOUND4CNT_H *(u32*)0x0400007C void PlaymobileSound2Play( u16 freq ); // sound 2 #define SOUND3BANK32 0x0000 // Use two banks of 32 steps each #define SOUND3PLAY 0x0080 // Output sound #define SOUND3PLAY 0x0080 // Output sound

usb -> uart play+mobile [functions] play+mobile [functions] Encore quelques liens pour créer mon adaptateur pc/usb -> gameboy. Je vais essayer de passer outre le MAX232 qui convertit le voltage +/-10v du PC vers +/-5v nécessaire pour le Gameboy Advance. Cela devrait rendre plus petit mon cable. Les composants chez FTDI font justemment cette conversion avec des drivers grauits pour OS9/OSX/Win/Linux. Le USBP3e a l'air particulièrement bien. void PlaymobileSound2Frequency( u16 freq ); http://www.ftdichip.com/FTProduct.htm } resultat = resultat | (loop * 0x4000); http://www.compsys1.com/html/usb_rs232.html play+mobile [header] (cc) Creative Commons 2004. http://www.dlpdesign.com/usb/usb232.html MemorySprite = SoSpriteMemManagerLoad(image); u16 decal; decal = 0; Playmobile Library. decal = (decal + dstrlen(str))* 8; /* if (var!=NULL) SoMode4RendererDrawNumber((x+decal), 239, y, var, SoFontGetDefaultFontImage()); if ((str!=NULL) && (str!="")) { } Playmobile Library. //***************************** Playmobile Library. u16 decal; decal = 0; u16 decal; decal = 0; play+mobile [functions] //***************************** /* decal = (decal + dstrlen(str))* 8; SoMode4RendererDrawString(x, 239, y, str, SoFontGetDefaultFontImage()); if ((str!=NULL) && (str!="")) { if ((str!=NULL) && (str!="")) { //*****************************

gameboy joystick void PlaymobileSoundAllSetH( bool dsBFifoReset, bool dsBTimer, bool dsBLeft, bool dsBRight, bool dsAFifoReset, bool dsATimer, bool dsALeft, bool dsARight, bool dsBLevel, bool dsALevel) { voici une amélioration (légère) du programme uart. on peut utiliser son gameboy comme un joystick dans director .... Sprite[i].frame = 0;

(cc) Creative Commons 2004. play! //-- } bool randomSeed; SoMathRandSeed((u32) SoTimerClockGetTimerID); source void PlaymobileSpriteFlipHorizontal(u8 spriteNum); resultat = resultat | (fadeUpOrDown * 0x0800); // ajouter envelope mode qui commence ˆ 2048 resultat = resultat | (fadeUpOrDown * 0x0800); void PlaymobileSound3Play() { resultat = resultat | (sweepTime * 0x0010); resultat = resultat | (sweepIncrease * 0x0008); void PlaymobileSound4SetL( u8 volume, bool fadeUpOrDown, u8 fadeSpeed, u8 length ) { resultat = resultat | (sweepIncrease * 0x0008); resultat = resultat | (dsBLevel * 0x0008); resultat = resultat | (reset * 0x8000); // ajouter reset value qui commence ˆ 32768 resultat = resultat | (sound1Left * 0x0100); u32 resultat; //REG_SOUND4CNT_H = 0x8032;

usb gameboy advance, quelques liens encore //************************* } J'avance doucement dans mon projet de faire un cable xtra-petit pour communiquer entre un Gameboy Advance et un PC via le port USB. Je teste actuellement avec le IC (circuit intégré) conçu chez FTDI permettant de passer outre le MAX232 dans la communication avec Gameboy Advance. Actuellement je teste avec le USBMOD1C qui a été remplacé par le USBMOD3 ... Avec le peu d'usage qu'on fait des broches du FT232AM on peut envisager à mon avis encore plus petit que le USBMOD1. On peut acheter le circuit FT232xx (ou le kit USBMOD) en France chez Lextronic. Ensuite les drivers PC/MAC/Linux se trouve chez FTDI, sous une licence "royalty free". void PlaymobileSpriteFlipVertical(u8 spriteNum); http://www.lextronic.fr/elekladen/PP9.htm #define SOUND3OUTPUT0 0x0000 // Mute output http://www.ftdichip.com/FTDriver.htm #define REG_SOUND3CNT_L *(u16*)0x04000070 void PlaymobileSpriteLocation(u8 spriteNum, s32 x, s32 y); //**************************** PlaymobileSprite Library. /* void PlaymobileSpriteNewSprite(u8 num); void PlaymobileSpriteFrame(u8 spriteNum, u32 frame); void PlaymobileSpriteFlipVertical(u8 spriteNum); void PlaymobileSpriteFlipVertical(u8 spriteNum); void PlaymobileSpriteNewSprite(u8 num); void PlaymobileSpriteSize(u8 spriteNum, u32 width, u32 height); */ void PlaymobileSpriteDisplayWait(); void PlaymobileSpriteFlipHorizontal(u8 spriteNum); // transformation void PlaymobileSpriteSetPalette(const u16* palette); // screen management void PlaymobileSpriteSize(u8 spriteNum, u32 width, u32 height); void PlaymobileSpriteSize(u8 spriteNum, u32 width, u32 height);

usb+ttl+gba resultat = 0; if (frequency > 2047) frequency = 2047; Ça y est : j'ai testé le circuit FT232AM de FTDI et il fonctionne à merveille avec le Gameboy Advance. Les drivers étaient également sans soucis puisqu'il s'agit des mêmes drivers de mon convertisseur USB<>Série (Win95/XP/MacOS9/OSX/Linux). D'ailleurs, mon code Directeur n'a pas vu de différence, dans la routine "findPorts()" il voyait le même type de port que le convertisseur USB<>Série. Sauf qu'ici il s'agit d'une conversion directemment vers le +/-5v (TTL) de la communication avec le port Gameboy Advance. cf. Image -> */ /* //***************************** http://www.lextronic.fr/ravar/usbmod1.htm play+mobile [header] PlaymobileMath Library.

//*************************** #include "PlaymobileMath.h" SoMathRandSeed((u32) SoTimerClockGetTimerID); */ u32 PlaymobileMathRandomForDouglas(s32 range) { } } s32 PlaymobileMathRandom(s32 start, s32 stop) { //-- play+mobile [functions] } } //************************* (cc) Creative Commons 2004. } range = stop - start; range = stop - start; SoMathRandSeed((u32) SoTimerClockGetTimerID); (cc) Creative Commons 2004. rnd = PlaymobileMathRandomForDouglas(range); PlaymobileMath Library. if (!randomSeed) { /* //-- bool randomSeed; return (rnd += start); randomSeed=true; u32 PlaymobileMathRandomForDouglas(s32 range) { } PlaymobileMath Library. //*************************

ENIAROF /* (cc) Creative Commons 2004. Voici le fichier.gba + codes sources du programme que j'ai construit pour Eniarof. Il s'agit de la générique de l'exposition qui était affiché dans un Gameboy Advance installé dans la galérie. Les codes sources sont assez brouillon. Aussi, je n'ai pas eu le temps de faire éviter les obstacles. Alors c'est vraiment un programme à la con. Evidemment, il ne faut pas faire des choses de cette mannière. Les icones sont de Pierre-Erick Lefebvre. */ play+mobile [header] */

void PlaymobileSoundAllSetH( bool dsBFifoReset, bool dsBTimer, bool dsBLeft, bool dsBRight, bool dsAFifoReset, bool dsATimer, bool dsALeft, bool dsARight, bool dsBLevel, bool dsALevel) { play! play+mobile [header] PlaymobileMath Library. source void PlaymobileSpriteFrame(u8 spriteNum, u32 frame); /* /* Playmobile Library. play+mobile [header] Playmobile Library. /* void PlaymobilePrint(char *str, int var, u16 x, u16 y); /* void PlaymobilePrint(char *str, int var, u16 x, u16 y); void PlaymobilePrint(char *str, int var, u16 x, u16 y); (cc) Creative Commons 2004. void PlaymobilePrint(char *str, int var, u16 x, u16 y); (cc) Creative Commons 2004. (cc) Creative Commons 2004. //***************************** void PlaymobilePrint(char *str, int var, u16 x, u16 y); //***************************** */ */ */ void PlaymobilePrint(char *str, int var, u16 x, u16 y); */ //***************************** play+mobile [header] Playmobile Library. //*****************************

ENIAROF 0.2 Video Arcade resultat = resultat | (loop * 0x4000); This is the playable version of the ENIAROF 0.2 Video Arcade. Just click on the 'PLAY!' button to play online or download the ROM to play on your own Gameboy Emulator. if (!randomSeed) { } //************************* http://www.eniarof.com/ #define SOUND3BANK32 0x0000 // Use two banks of 32 steps each www.abstractmachine.net/ Playmobile Library. //*****************************

bool randomSeed; return SoMathRand() & range; play! randomSeed=true; bool randomSeed; //-- } play+mobile [functions] } if (!randomSeed) { randomSeed=true; //-- if (!randomSeed) { s32 PlaymobileMathRandom(s32 start, s32 stop) { //************************* randomSeed=true; rnd = PlaymobileMathRandomForDouglas(range); } randomSeed=true; #include "PlaymobileMath.h" } s32 PlaymobileMathRandom(s32 start, s32 stop) { (cc) Creative Commons 2004. /* return SoMathRand() & range; s32 PlaymobileMathRandom(s32 start, s32 stop) { if (!randomSeed) { /* bool randomSeed; #include "PlaymobileMath.h" s32 range; u32 rnd; //************************* #include "PlaymobileMath.h" randomSeed=true; SoMathRandSeed((u32) SoTimerClockGetTimerID); } } bool randomSeed; return SoMathRand() & range; s32 range; u32 rnd; //-- return SoMathRand() & range; //-- */ bool randomSeed; (cc) Creative Commons 2004. //************************* #include "PlaymobileMath.h" // nouveau projet : [ ctrl-n ]