Do page flipping to smooth the animations

This commit is contained in:
Jeremy Rand 2014-07-24 16:58:45 -05:00
parent 18ae77860f
commit ed612627af
1 changed files with 26 additions and 1 deletions

View File

@ -94,6 +94,9 @@ void printInstructions(void)
"AND NO MORE MOVES ARE POSSIBLE. TRY\n"
"TO GET THE LARGEST TILE YOU CAN!\n"
"\n"
"IF ON A ROM 1 GS, SET ALTERNATE DISPLAY\n"
"MODE FROM THE CDA MENU.\n"
"\n"
"PRESS ESCAPE OR Q TO QUIT AT ANY TIME.\n"
"PRESS R TO START A NEW GAME.\n"
"PRESS S TO TOGGLE SOUND.\n"
@ -101,7 +104,6 @@ void printInstructions(void)
"\n"
"\n"
"\n"
"\n"
" PRESS ANY KEY TO START");
// The amount of time the user waits to read the in
@ -183,6 +185,21 @@ void resetAnimations(void)
}
void switchToPage2(void)
{
char *ptr = (char *)0xc055;
memcpy((char *)0x800, (char *)0x400, 0x400);
*ptr = 0;
}
void switchToPage1(void)
{
char *ptr = (char *)0xc054;
*ptr = 0;
}
void performAnimationsLeft(void)
{
bool animInProgress;
@ -195,6 +212,7 @@ void performAnimationsLeft(void)
do {
animInProgress = false;
switchToPage2();
for (pos = 0; pos < gNumAnims; pos++) {
tileAnim = &(gTileAnims[pos]);
if (tileAnim->tileString == NULL)
@ -235,6 +253,7 @@ void performAnimationsLeft(void)
}
playSound(200, 1);
}
switchToPage1();
firstFrame = false;
} while (animInProgress);
}
@ -252,6 +271,7 @@ void performAnimationsRight(void)
do {
animInProgress = false;
switchToPage2();
for (pos = 0; pos < gNumAnims; pos++) {
tileAnim = &(gTileAnims[pos]);
if (tileAnim->tileString == NULL)
@ -290,6 +310,7 @@ void performAnimationsRight(void)
}
playSound(200, 1);
}
switchToPage1();
firstFrame = false;
} while (animInProgress);
}
@ -307,6 +328,7 @@ void performAnimationsUp(void)
do {
animInProgress = false;
switchToPage2();
for (pos = 0; pos < gNumAnims; pos++) {
tileAnim = &(gTileAnims[pos]);
if (tileAnim->tileString == NULL)
@ -341,6 +363,7 @@ void performAnimationsUp(void)
}
playSound(200, 1);
}
switchToPage1();
firstFrame = false;
} while (animInProgress);
}
@ -358,6 +381,7 @@ void performAnimationsDown(void)
do {
animInProgress = false;
switchToPage2();
for (pos = 0; pos < gNumAnims; pos++) {
tileAnim = &(gTileAnims[pos]);
if (tileAnim->tileString == NULL)
@ -392,6 +416,7 @@ void performAnimationsDown(void)
}
playSound(200, 1);
}
switchToPage1();
firstFrame = false;
} while (animInProgress);
}