int main(void){ PA_Init(); //PAlib inits PA_InitVBL(); PA_LoadSpritePal(0, // Screen 0, // Palette number (void*)sprite0_Pal); // Palette name // We'll create 2 sprites PA_CreateSprite(0, 0, (void*)mollusk_Sprite, OBJ_SIZE_32X32, 1, 0, 0, 50); PA_CreateSprite(0, 1, (void*)mollusk_Sprite, OBJ_SIZE_32X32, 1, 0, 64, 50); PA_SetSpriteMode(0, // Screen 0, // Sprite 1); // Alphablending s16 alpha = 7; // Transparency level // Enable the alpha-blending PA_EnableSpecialFx(0, // Screen SFX_ALPHA, // Alpha blending mode 0, // Nothing SFX_BG0 | SFX_BG1 | SFX_BG2 | SFX_BG3 | SFX_BD); // Everything normal while(1) // Infinite loops { alpha += Pad.Newpress.Up - Pad.Newpress.Down; PA_SetSFXAlpha(0, // Screen alpha, // Alpha level, 0-15 15); // Leave this to 15 PA_WaitForVBL(); } return 0; }
void CDeck::discardCard(const typecard card, const bool discarded) { m_cardfrequency[card]++; // Delete the previously played card sprite at the top screen PA_DeleteSprite(1, SPRITE_NB_EMPTYCARD_PART2); PA_DeleteSprite(1, SPRITE_NB_EMPTYCARD_PART1); // Create a sprite for the card that has been discarded at the top screen switch (card.first) { case 0: switch (card.second) { case 0: PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)attack1_Pal); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)attack1_1_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)attack1_2_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1+45); break; case 1: PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)attack2_Pal); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)attack2_1_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)attack2_2_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1+45); break; case 2: PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)attack3_Pal); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)attack3_1_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)attack3_2_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1+45); break; case 3: PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)attack4_Pal); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)attack4_1_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)attack4_2_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1+45); break; case 4: PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)attack5_Pal); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)attack5_1_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)attack5_2_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1+45); break; case 5: PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)attack6_Pal); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)attack6_1_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)attack6_2_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1+45); break; case 6: PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)attack7_Pal); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)attack7_1_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)attack7_2_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1+45); break; case 7: PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)attack8_Pal); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)attack8_1_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)attack8_2_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1+45); break; case 8: PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)attack9_Pal); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)attack9_1_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)attack9_2_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1+45); break; case 9: PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)attack10_Pal); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)attack10_1_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)attack10_2_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1+45); break; default: PA_OutputText(1,0,0,"This card number does not exist."); break; } break; case 1: switch (card.second) { case 0: PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)defense1_Pal); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)defense1_1_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)defense1_2_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1+45); break; case 1: PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)defense2_Pal); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)defense2_1_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)defense2_2_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1+45); break; case 2: PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)defense3_Pal); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)defense3_1_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)defense3_2_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1+45); break; case 3: PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)defense4_Pal); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)defense4_1_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)defense4_2_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1+45); break; case 4: PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)defense5_Pal); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)defense5_1_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)defense5_2_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1+45); break; case 5: PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)defense6_Pal); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)defense6_1_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)defense6_2_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1+45); break; case 6: PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)defense7_Pal); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)defense7_1_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)defense7_2_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1+45); break; case 7: PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)defense8_Pal); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)defense8_1_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)defense8_2_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1+45); break; case 8: PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)defense9_Pal); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)defense9_1_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)defense9_2_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1+45); break; case 9: PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)defense10_Pal); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)defense10_1_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)defense10_2_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1+45); break; default: PA_OutputText(1,0,0,"This card number does not exist."); break; } break; case 2: switch (card.second) { case 0: PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)magic1_Pal); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)magic1_1_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)magic1_2_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1+45); break; case 1: PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)magic2_Pal); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)magic2_1_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)magic2_2_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1+45); break; case 2: PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)magic3_Pal); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)magic3_1_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)magic3_2_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1+45); break; case 3: PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)magic4_Pal); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)magic4_1_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)magic4_2_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1+45); break; case 4: PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)magic5_Pal); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)magic5_1_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)magic5_2_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1+45); break; case 5: PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)magic6_Pal); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)magic6_1_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)magic6_2_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1+45); break; case 6: PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)magic7_Pal); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)magic7_1_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)magic7_2_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1+45); break; case 7: PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)magic8_Pal); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)magic8_1_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)magic8_2_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1+45); break; case 8: PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)magic9_Pal); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)magic9_1_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)magic9_2_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1+45); break; case 9: PA_LoadSpritePal(1, PALETTE_NB_LAST_PLAYED_CARD, (void*)magic10_Pal); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART1, (void*)magic10_1_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1); PA_CreateSprite(1, SPRITE_NB_EMPTYCARD_PART2, (void*)magic10_2_Sprite, OBJ_SIZE_64X64, 1, PALETTE_NB_LAST_PLAYED_CARD, 129, 1+45); break; default: PA_OutputText(1,0,0,"This card number does not exist."); break; } break; default: PA_OutputText(1,0,0,"This card type does not exist."); break; } PA_SetSpritePrio (1, SPRITE_NB_BACKCARD_PART1, 2); PA_SetSpritePrio (1, SPRITE_NB_BACKCARD_PART2, 2); PA_SetSpritePrio (1, SPRITE_NB_EMPTYCARD_PART1, 2); PA_SetSpritePrio (1, SPRITE_NB_EMPTYCARD_PART2, 2); // Set the sprite's mode to alpha blending if the card is discarded if (discarded) { PA_SetSpriteMode(1, SPRITE_NB_EMPTYCARD_PART1, 1); PA_SetSpriteMode(1, SPRITE_NB_EMPTYCARD_PART2, 1); } else { PA_SetSpriteMode(1, SPRITE_NB_EMPTYCARD_PART1, 0); PA_SetSpriteMode(1, SPRITE_NB_EMPTYCARD_PART2, 0); } }
bool COptions::display(int *p_musicVolume, int *p_cardSpeed) { // Display the options menu with the resume button selected PA_EasyBgLoad(0, 2, optionsresume); // Set the values for the music volume and card speed // with the function parameters m_musicVolume = *p_musicVolume; m_cardSpeed = *p_cardSpeed; // Display the item sprite at the position that corresponds to the current // music volume switch (m_musicVolume) { case 0: PA_CreateSprite(0, INDEX_SPRITE_NB_ITEM_MUSIC, (void*)item_Sprite, OBJ_SIZE_32X32, 1, PALETTE_NB_ITEM, 137, 52); break; case 60: PA_CreateSprite(0, INDEX_SPRITE_NB_ITEM_MUSIC, (void*)item_Sprite, OBJ_SIZE_32X32, 1, PALETTE_NB_ITEM, 176, 52); break; case 127: PA_CreateSprite(0, INDEX_SPRITE_NB_ITEM_MUSIC, (void*)item_Sprite, OBJ_SIZE_32X32, 1, PALETTE_NB_ITEM, 213, 52); break; default: PA_CreateSprite(0, INDEX_SPRITE_NB_ITEM_MUSIC, (void*)item_Sprite, OBJ_SIZE_32X32, 1, PALETTE_NB_ITEM, 176, 52); break; } // Clone the music volume item sprite to get the card speed item sprite PA_CloneSprite(0, INDEX_SPRITE_NB_ITEM_SPEED, INDEX_SPRITE_NB_ITEM_MUSIC); // Display the cloned item sprite at the position that corresponds // to the current card speed switch (m_cardSpeed) { case 5: PA_SetSpriteXY(0, INDEX_SPRITE_NB_ITEM_SPEED, 137, 99); break; case 10: PA_SetSpriteXY(0, INDEX_SPRITE_NB_ITEM_SPEED, 176, 99); break; case 20: PA_SetSpriteXY(0, INDEX_SPRITE_NB_ITEM_SPEED, 213, 99); break; default: PA_SetSpriteXY(0, INDEX_SPRITE_NB_ITEM_SPEED, 176, 99); break; } // Set the item sprites mode to alpha blending PA_SetSpriteMode(0, INDEX_SPRITE_NB_ITEM_MUSIC, 1); PA_SetSpriteMode(0, INDEX_SPRITE_NB_ITEM_SPEED, 1); // Change the background to the corresponding player's action m_itemTouched = -1; PA_WaitForVBL(); while (!Pad.Newpress.Start) { m_itemTouched = itemTouched(); // Perform the action and return the // player's selection switch(m_itemTouched) { case 1: PA_EasyBgLoad(0, 1, optionsresume); break; case 2: PA_EasyBgLoad(0, 1, optionsmusic); break; case 3: PA_EasyBgLoad(0, 1, optionsspeed); break; case 4: PA_EasyBgLoad(0, 1, optionsno); break; case 5: PA_EasyBgLoad(0, 1, optionsno); break; case 6: PA_EasyBgLoad(0, 1, optionsyes); break; default: break; } // Quit the loop if the player chooses to resume or quit the game if ((m_itemTouched == 1) || (m_itemTouched == 5) || (m_itemTouched == 6)) break; PA_WaitForVBL(); } // Delete the item sprites PA_DeleteSprite(0, INDEX_SPRITE_NB_ITEM_SPEED); PA_DeleteSprite(0, INDEX_SPRITE_NB_ITEM_MUSIC); // Retrieve the music volume and card speed *p_musicVolume = m_musicVolume; *p_cardSpeed = m_cardSpeed; // Return the state of the game switch(m_itemTouched) { case 0: // Resume the game return false; break; case 5: // Resume the game return false; break; case 6: // Quit the game return true; break; default: break; } return false; }