try this... [code] // Includes // Include for PA_Lib #include <PA9.h> // Converted using PAGfx #include "gfx/all_gfx.c" #include "gfx/all_gfx.h" // Add some defines for easy reading // It will make changing the code also more simple #define BOTTOM_SCREEN 0 #define TOP_SCREEN 1 #define PALETTE_0 0 // palete of wheel 0 PLEASE note that all wheel could use this palette #define PALETTE_1 1 #define PALETTE_2 2 #define WHEEL_0 0 // Sprite for wheel 0 #define WHEEL_1 1 // Sprite for wheel 1 #define WHEEL_2 2 // Sprite for wheel 2 #define WHEEL_SPEED 5 // The speed at which the wheels turn #define MIN_WHEEL_TURNS 60 // How long the wheel spin minimal before stopping. (1 sec) #define MAX_WHEEL_TURNS 300 // How long the wheel spin maximal before stopping. (5 sec) #define START_WHEEL 0 #define PAUSE_WHEEL 1 // Some frequently used functions void Delay(int Value){ // Just a delay function that will make the program wait some time int i; for(i = 0; i < Value; i++) { // Here we'll can flash some lights here on the upper screen :0) PA_WaitForVBL(); } } // Function: main() int main(int argc, char ** argv) { PA_Init(); // Initializes PA_Lib PA_InitVBL(); // Initializes a standard VBL // Load Backgrounds with their palettes ! PA_EasyBgLoad(BOTTOM_SCREEN, 0, bg0); // Background name, used by PAGfx... PA_EasyBgLoad(TOP_SCREEN, 3, bg1); // Load the sprite palette, PA_LoadSpritePal(BOTTOM_SCREEN, PALETTE_0, (void*)reel1_Pal); // Palette name PA_LoadSpritePal(BOTTOM_SCREEN, PALETTE_1, (void*)reel2_Pal); PA_LoadSpritePal(BOTTOM_SCREEN, PALETTE_2, (void*)reel3_Pal); // Here, we'll load a few similar sprites sprite to animate... at different speed PA_CreateSprite(BOTTOM_SCREEN, WHEEL_0, (void*)reel1_Sprite, OBJ_SIZE_32X64,1, PALETTE_0, 35, 47); PA_CreateSprite(BOTTOM_SCREEN, WHEEL_1, (void*)reel2_Sprite, OBJ_SIZE_32X64,1, PALETTE_1, 70, 47); PA_CreateSprite(BOTTOM_SCREEN, WHEEL_2, (void*)reel3_Sprite, OBJ_SIZE_32X64,1, PALETTE_2, 108, 47); // Spinn ALL wheels and stop each one after the other PA_StartSpriteAnim(BOTTOM_SCREEN, WHEEL_0, 0, 7, WHEEL_SPEED); PA_StartSpriteAnim(BOTTOM_SCREEN, WHEEL_1, 0, 7, WHEEL_SPEED); PA_StartSpriteAnim(BOTTOM_SCREEN, WHEEL_2, 0, 7, WHEEL_SPEED); // Now stop one wheel after the other Delay(MIN_WHEEL_TURNS); PA_SpriteAnimPause(BOTTOM_SCREEN, WHEEL_0, PAUSE_WHEEL ); Delay(MIN_WHEEL_TURNS); PA_SpriteAnimPause(BOTTOM_SCREEN, WHEEL_1, PAUSE_WHEEL ); Delay(MIN_WHEEL_TURNS); PA_SpriteAnimPause(BOTTOM_SCREEN, WHEEL_2, PAUSE_WHEEL ); int Random_Turns = 0; // Value for random turning time // Now the game is setup we can enter the main game loop and stay there while(1) { // Spin the wheels when the A button is pressed or the stylus is pressed on start image. if ((Pad.Newpress.A) || (PA_StylusInZone(220,164,239,179) && Stylus.Newpress)) { // Start ALL wheels spinning from the position the where stopped PA_SpriteAnimPause(BOTTOM_SCREEN, WHEEL_0, START_WHEEL ); PA_SpriteAnimPause(BOTTOM_SCREEN, WHEEL_1, START_WHEEL ); PA_SpriteAnimPause(BOTTOM_SCREEN, WHEEL_2, START_WHEEL ); // Get a random value that the wheels will turn Random_Turns = PA_RandMinMax(MIN_WHEEL_TURNS, MAX_WHEEL_TURNS); } // Do this only if the wheel are turning // NOTE this can be placed in a function so you will keep MAIN clean if(Random_Turns > 0){ // Do the wheel spinning action and stopping here Delay(Random_Turns); PA_SpriteAnimPause(BOTTOM_SCREEN, WHEEL_0, PAUSE_WHEEL ); Delay(Random_Turns); PA_SpriteAnimPause(BOTTOM_SCREEN, WHEEL_1, PAUSE_WHEEL ); Delay(Random_Turns); PA_SpriteAnimPause(BOTTOM_SCREEN, WHEEL_2, PAUSE_WHEEL ); Random_Turns = 0; } // Other action to follow PA_WaitForVBL(); } return 0; } // End of main() [/code] I didn't test it, but it should work, you need to chek if the stylus is newly pressed, the stylus location is always remembered by palib, so it will always be in the zone, even if you're not pressing it. This post is from -- http://socoder.net/index.php?topic=976