Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <nds.h>
- #include <stdio.h>
- #include <maxmod9.h>
- #include <ctime>
- #include "Mem_int.h"
- #include "Divmod.h"
- #include "images.h"
- #include "soundbank.h"
- #include "soundbank_bin.h"
- using namespace std;
- #define MAX_IMG 36
- #define LCD_X 256
- #define LCD_Y 192
- vu32 vframe = 0;
- bool g_auto_run;
- //glb store for array idx-
- typedef struct{
- u32 imgNum;
- u32 imgNumSub;
- u32 prevImgNum;
- u32 prevImgNumSub;
- } ImgIdx;
- void InitImgSystem(ImgIdx* ImgSys, const u32* nameSet[]);
- void UpdateImgSystem(ImgIdx* ImgSys, const u32* nameSet[], touchPosition* data);
- void buttonChange(ImgIdx* ImgSys, const u32* nameSet[]);
- void touchChange(ImgIdx* ImgSys, const u32* nameSet[], touchPosition* data);
- void VBlankHandler()
- {
- vframe++;
- }
- int main(void) {
- irqEnable(IRQ_VBLANK);
- irqSet(IRQ_VBLANK, VBlankHandler);
- srand(time(NULL));
- ImgIdx idx;
- touchPosition pad;
- g_auto_run = false;
- mmInitDefaultMem((mm_addr)soundbank_bin);
- mmLoad( MOD_PIANO2 );
- mmStart( MOD_PIANO2, MM_PLAY_LOOP );
- const u32* imgNames[] = {
- _S11IBitmap,
- _sz3tBitmap,
- qPqqBBitmap,
- QekDFBitmap,
- PgxwNBitmap,
- oWdtNBitmap,
- N8vGYBitmap,
- myObXhBitmap,
- MQHYBBitmap,
- lNk8UBitmap,
- L6KqSBitmap,
- IwbHgBitmap,
- if2K3Bitmap,
- GvvZbBitmap,
- _8pvOBitmap,
- _7be3Bitmap,
- wUZ2rBitmap,
- UwnCABitmap,
- twGxYBitmap,
- Tg7krBitmap,
- TbwWnBitmap,
- TbMXIBitmap,
- skSpOBitmap,
- rkfEKBitmap,
- _gf5sBitmap,
- _MUiJBitmap,
- _nDbnBitmap,
- _C6luBitmap,
- _cHkJBitmap,
- _EI7eBitmap,
- _6lUbBitmap,
- _4ReeBitmap,
- _9U23Bitmap,
- rFOlvBitmap,
- WScaBBitmap,
- lkem4Bitmap };
- //engine modes ------------
- videoSetMode(MODE_5_2D);
- videoSetModeSub(MODE_5_2D);
- //engine banks ------------
- vramSetBankA(VRAM_A_MAIN_BG);
- vramSetBankC(VRAM_C_SUB_BG);
- // set up our bitmap backgrounds, both engines
- bgInit(3, BgType_Bmp16, BgSize_B16_256x256, 0,0);
- bgInitSub(3, BgType_Bmp16, BgSize_B16_256x256, 0,0);
- InitImgSystem(&idx, imgNames);
- while(1) {
- swiWaitForVBlank();
- scanKeys();
- touchRead(&pad);
- if(keysDown() & KEY_R)
- {
- if(g_auto_run)
- {
- g_auto_run = false;
- }
- else
- {
- g_auto_run = true;
- }
- }
- UpdateImgSystem(&idx, imgNames, &pad);
- }
- return 0;
- }
- void InitImgSystem(ImgIdx* ImgSys, const u32* nameSet[])
- {
- //pick 1st pic---------------------------------------------
- ImgSys->imgNum = DivmodUnsigned(rand(), MAX_IMG, MOD);
- ImgSys->imgNumSub = DivmodUnsigned(rand(), MAX_IMG, MOD);
- ImgSys->prevImgNum = 0;
- ImgSys->prevImgNumSub = 0;
- //make sure the first picture is never the same------------
- while(ImgSys->imgNum == ImgSys->imgNumSub)
- {
- ImgSys->imgNumSub = DivmodUnsigned(rand(), MAX_IMG, MOD);
- }
- decompress(nameSet[ImgSys->imgNum], BG_GFX, LZ77Vram);
- decompress(nameSet[ImgSys->imgNumSub], BG_GFX_SUB, LZ77Vram);
- }
- void UpdateImgSystem(ImgIdx* ImgSys, const u32* nameSet[], touchPosition* data)
- {
- buttonChange(ImgSys, nameSet);
- touchChange(ImgSys, nameSet, data);
- }
- void buttonChange(ImgIdx* ImgSys, const u32* nameSet[])
- {
- if(!g_auto_run)
- {
- if(keysDown() & KEY_A)
- {
- u32 l_imgNum = ImgSys->imgNum;
- u32 l_imgNumSub = ImgSys->imgNumSub;
- u32 l_prevImgNum = ImgSys->prevImgNum;
- l_prevImgNum = l_imgNum;
- l_imgNum = DivmodUnsigned(rand(), MAX_IMG, MOD);
- while((l_imgNum == l_prevImgNum) || (l_imgNum == l_imgNumSub))
- {
- l_imgNum = DivmodUnsigned(rand(), MAX_IMG, MOD);
- }
- ImgSys->imgNum = l_imgNum;
- ImgSys->prevImgNum = l_prevImgNum;
- Memset8(BG_GFX, 0, 0x20000);
- decompress(nameSet[l_imgNum], BG_GFX, LZ77Vram);
- }
- else if(keysDown() & KEY_B)
- {
- u32 l_imgNum = ImgSys->imgNum;
- u32 l_imgNumSub = ImgSys->imgNumSub;
- u32 l_prevImgNumSub = ImgSys->prevImgNumSub;
- l_prevImgNumSub = l_imgNumSub;
- l_imgNumSub = DivmodUnsigned(rand(), MAX_IMG, MOD);
- while((l_imgNumSub == l_prevImgNumSub) || (l_imgNumSub == l_imgNum))
- {
- l_imgNumSub = DivmodUnsigned(rand(), MAX_IMG, MOD);
- }
- ImgSys->imgNumSub = l_imgNumSub;
- ImgSys->prevImgNumSub = l_prevImgNumSub;
- Memset8(BG_GFX_SUB, 0, 0x20000);
- decompress(nameSet[l_imgNumSub], BG_GFX_SUB, LZ77Vram);
- }
- else if(keysDown() & KEY_L)
- {
- u32 l_imgNum = ImgSys->imgNum;
- u32 l_imgNumSub = ImgSys->imgNumSub;
- u32 l_prevImgNum = ImgSys->prevImgNum;
- u32 l_prevImgNumSub = ImgSys->prevImgNumSub;
- l_prevImgNum = l_imgNum;
- l_prevImgNumSub = l_imgNumSub;
- l_imgNum = DivmodUnsigned(rand(), MAX_IMG, MOD);
- l_imgNumSub = DivmodUnsigned(rand(), MAX_IMG, MOD);
- while((l_imgNum == l_prevImgNum) || (l_imgNumSub == l_prevImgNumSub) || (l_imgNum == l_imgNumSub))
- {
- if(l_imgNum == l_prevImgNum)
- {
- l_imgNum = DivmodUnsigned(rand(), MAX_IMG, MOD);
- }
- else if(l_imgNumSub == l_prevImgNumSub)
- {
- l_imgNumSub = DivmodUnsigned(rand(), MAX_IMG, MOD);
- }
- else if(l_imgNum == l_imgNumSub)
- {
- l_imgNumSub = DivmodUnsigned(rand(), MAX_IMG, MOD);
- }
- }
- ImgSys->imgNum = l_imgNum;
- ImgSys->prevImgNum = l_prevImgNum;
- ImgSys->imgNumSub = l_imgNumSub;
- ImgSys->prevImgNumSub = l_prevImgNumSub;
- Memset8(BG_GFX, 0, 0x20000);
- Memset8(BG_GFX_SUB, 0, 0x20000);
- decompress(nameSet[l_imgNum], BG_GFX, LZ77Vram);
- decompress(nameSet[l_imgNumSub], BG_GFX_SUB, LZ77Vram);
- }
- }
- else
- {
- if(DivmodUnsigned(vframe, 360, MOD) == 1)
- {
- u32 l_imgNum = ImgSys->imgNum;
- u32 l_imgNumSub = ImgSys->imgNumSub;
- u32 l_prevImgNum = ImgSys->prevImgNum;
- u32 l_prevImgNumSub = ImgSys->prevImgNumSub;
- l_prevImgNum = l_imgNum;
- l_prevImgNumSub = l_imgNumSub;
- l_imgNum = DivmodUnsigned(rand(), MAX_IMG, MOD);
- l_imgNumSub = DivmodUnsigned(rand(), MAX_IMG, MOD);
- while((l_imgNum == l_prevImgNum) || (l_imgNumSub == l_prevImgNumSub) || (l_imgNum == l_imgNumSub))
- {
- if(l_imgNum == l_prevImgNum)
- {
- l_imgNum = DivmodUnsigned(rand(), MAX_IMG, MOD);
- }
- else if(l_imgNumSub == l_prevImgNumSub)
- {
- l_imgNumSub = DivmodUnsigned(rand(), MAX_IMG, MOD);
- }
- else if(l_imgNum == l_imgNumSub)
- {
- l_imgNumSub = DivmodUnsigned(rand(), MAX_IMG, MOD);
- }
- }
- ImgSys->imgNum = l_imgNum;
- ImgSys->prevImgNum = l_prevImgNum;
- ImgSys->imgNumSub = l_imgNumSub;
- ImgSys->prevImgNumSub = l_prevImgNumSub;
- Memset8(BG_GFX, 0, 0x20000);
- Memset8(BG_GFX_SUB, 0, 0x20000);
- decompress(nameSet[l_imgNum], BG_GFX, LZ77Vram);
- decompress(nameSet[l_imgNumSub], BG_GFX_SUB, LZ77Vram);
- }
- }
- }
- void touchChange(ImgIdx* ImgSys, const u32* nameSet[], touchPosition* data)
- {
- if(!g_auto_run)
- {
- u32 l_px = data->px;
- u32 l_py = data->py;
- if((keysDown() & KEY_TOUCH) && ((l_px < (LCD_X / 2)) && (l_py < (LCD_Y / 2))))
- {
- u32 l_imgNum = ImgSys->imgNum;
- u32 l_imgNumSub = ImgSys->imgNumSub;
- u32 l_prevImgNum = ImgSys->prevImgNum;
- l_prevImgNum = l_imgNum;
- l_imgNum = DivmodUnsigned(rand(), MAX_IMG, MOD);
- while((l_imgNum == l_prevImgNum) || (l_imgNum == l_imgNumSub))
- {
- l_imgNum = DivmodUnsigned(rand(), MAX_IMG, MOD);
- }
- ImgSys->imgNum = l_imgNum;
- ImgSys->prevImgNum = l_prevImgNum;
- Memset8(BG_GFX, 0, 0x20000);
- decompress(nameSet[l_imgNum], BG_GFX, LZ77Vram);
- }
- else if((keysDown() & KEY_TOUCH) && ((l_px >= (LCD_X / 2)) && (l_py < (LCD_Y / 2))))
- {
- u32 l_imgNum = ImgSys->imgNum;
- u32 l_imgNumSub = ImgSys->imgNumSub;
- u32 l_prevImgNumSub = ImgSys->prevImgNumSub;
- l_prevImgNumSub = l_imgNumSub;
- l_imgNumSub = DivmodUnsigned(rand(), MAX_IMG, MOD);
- while((l_imgNumSub == l_prevImgNumSub) || (l_imgNumSub == l_imgNum))
- {
- l_imgNumSub = DivmodUnsigned(rand(), MAX_IMG, MOD);
- }
- ImgSys->imgNumSub = l_imgNumSub;
- ImgSys->prevImgNumSub = l_prevImgNumSub;
- Memset8(BG_GFX_SUB, 0, 0x20000);
- decompress(nameSet[l_imgNumSub], BG_GFX_SUB, LZ77Vram);
- }
- else if((keysDown() & KEY_TOUCH) && ((l_px < (LCD_X / 2)) && (l_py >= (LCD_Y / 2))))
- {
- u32 l_imgNum = ImgSys->imgNum;
- u32 l_imgNumSub = ImgSys->imgNumSub;
- u32 l_prevImgNum = ImgSys->prevImgNum;
- u32 l_prevImgNumSub = ImgSys->prevImgNumSub;
- l_prevImgNum = l_imgNum;
- l_prevImgNumSub = l_imgNumSub;
- l_imgNum = DivmodUnsigned(rand(), MAX_IMG, MOD);
- l_imgNumSub = DivmodUnsigned(rand(), MAX_IMG, MOD);
- while((l_imgNum == l_prevImgNum) || (l_imgNumSub == l_prevImgNumSub) || (l_imgNum == l_imgNumSub))
- {
- if(l_imgNum == l_prevImgNum)
- {
- l_imgNum = DivmodUnsigned(rand(), MAX_IMG, MOD);
- }
- else if(l_imgNumSub == l_prevImgNumSub)
- {
- l_imgNumSub = DivmodUnsigned(rand(), MAX_IMG, MOD);
- }
- else if(l_imgNum == l_imgNumSub)
- {
- l_imgNumSub = DivmodUnsigned(rand(), MAX_IMG, MOD);
- }
- }
- ImgSys->imgNum = l_imgNum;
- ImgSys->prevImgNum = l_prevImgNum;
- ImgSys->imgNumSub = l_imgNumSub;
- ImgSys->prevImgNumSub = l_prevImgNumSub;
- Memset8(BG_GFX, 0, 0x20000);
- Memset8(BG_GFX_SUB, 0, 0x20000);
- decompress(nameSet[l_imgNum], BG_GFX, LZ77Vram);
- decompress(nameSet[l_imgNumSub], BG_GFX_SUB, LZ77Vram);
- }
- }
- u32 l_px = data->px;
- u32 l_py = data->py;
- if((keysDown() & KEY_TOUCH) && ((l_px >= (LCD_X / 2)) && (l_py >= (LCD_Y / 2))))
- {
- if(g_auto_run)
- {
- g_auto_run = false;
- }
- else
- {
- g_auto_run = true;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement