12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- program windows;
- {$L build/drunkenlogo.o}
- {$mode objfpc}
- uses
- ctypes, nds9;
- const
- drunkenlogoPalLen = 512;
- drunkenlogoBitmapLen = 65536;
- var
- drunkenlogoPal: array [0..255] of cushort; cvar; external;
- drunkenlogoBitmap: array [0..16383] of cuint; cvar; external;
- bg3: integer;
- x, y, size: integer;
- begin
- videoSetMode(MODE_5_2D);
- vramSetBankA(VRAM_A_MAIN_BG);
-
- //enable a background
- bg3 := bgInit(3, BgType_Bmp8, BgSize_B8_256x256, 0, 0);
-
- //use the standard drunken logo
- dmaCopy(@drunkenlogoBitmap, bgGetGfxPtr(bg3), drunkenlogoBitmapLen);
- dmaCopy(@drunkenlogoPal, BG_PALETTE, drunkenlogoPalLen);
-
- //enable window 0
- windowEnable(WINDOW_0);
-
- //enable window 0 on our new background
- bgWindowEnable(bg3, WINDOW_0);
-
- x := 60;
- y := 60;
- size := 100;
- while true do
- begin
- scanKeys();
- //the code below just moves the window around
- if (keysHeld() and KEY_UP) <> 0 then dec(y);
- if (keysHeld() and KEY_DOWN) <> 0 then inc(y);
- if (keysHeld() and KEY_LEFT) <> 0 then dec(x);
- if (keysHeld() and KEY_RIGHT) <> 0 then inc(x);
-
- if (keysHeld() and KEY_A) <> 0 then dec(size);
- if (keysHeld() and KEY_B) <> 0 then inc(size);
-
- if (keysHeld() and KEY_X) <> 0 then
- begin
- bgWindowDisable(bg3, WINDOW_OUT);
- bgWindowEnable(bg3, WINDOW_0);
- end;
- if (keysHeld() and KEY_Y) <> 0 then
- begin
- bgWindowDisable(bg3, WINDOW_0);
- bgWindowEnable(bg3, WINDOW_OUT);
- end;
-
- if (x < 0) then x := 0;
- if (x > SCREEN_WIDTH - 1) then x := SCREEN_WIDTH - 1;
- if (y < 0) then y := 0;
- if (y > SCREEN_HEIGHT - 1) then y := SCREEN_HEIGHT - 1;
-
- swiWaitForVBlank();
-
- //set up the boundaries on our window
- windowSetBounds(WINDOW_0, x, y, x + size, y + size);
- end;
- end.
|