
Added 4 console printing examples: -HelloWorld -BothScreenText -ColoredText -MultipleWindowsText Added an example to show a 24bit image. Added 3 HID examples: -Pad -CirclePad -TouchScreen Added a RTC example.
98 lines
2.7 KiB
C++
98 lines
2.7 KiB
C++
/*
|
|
Pad example made by Aurelio Mannara for ctrulib
|
|
Please refer to https://github.com/smealum/ctrulib/blob/master/libctru/include/3ds/services/hid.h for more information
|
|
This code was modified for the last time on: 12/13/2014 02:10 UTC+1
|
|
|
|
This wouldn't be possible without the amazing work done by:
|
|
-Smealum
|
|
-fincs
|
|
-WinterMute
|
|
-yellows8
|
|
-plutoo
|
|
-mtheall
|
|
-Many others who worked on 3DS and I'm surely forgetting about
|
|
*/
|
|
|
|
#include <3ds.h>
|
|
#include <stdio.h>
|
|
|
|
int main(int argc, char **argv)
|
|
{
|
|
//Matrix containing the name of each key. Useful for printing when a key is pressed
|
|
char keysNames[32][32] = {
|
|
"KEY_A", "KEY_B", "KEY_SELECT", "KEY_START",
|
|
"KEY_DRIGHT", "KEY_DLEFT", "KEY_DUP", "KEY_DDOWN",
|
|
"KEY_R", "KEY_L", "KEY_X", "KEY_Y",
|
|
"", "", "KEY_ZL", "KEY_ZR",
|
|
"", "", "", "",
|
|
"KEY_TOUCH", "", "", "",
|
|
"KEY_CSTICK_RIGHT", "KEY_CSTICK_LEFT", "KEY_CSTICK_UP", "KEY_CSTICK_DOWN",
|
|
"KEY_CPAD_RIGHT", "KEY_CPAD_LEFT", "KEY_CPAD_UP", "KEY_CPAD_DOWN"
|
|
};
|
|
|
|
// Initialize services
|
|
srvInit();
|
|
aptInit();
|
|
gfxInit();
|
|
hidInit(NULL);
|
|
|
|
//Initialize console on top screen. Using NULL as the second argument tells the console library to use the internal console structure as current one
|
|
consoleInit(GFX_TOP, NULL);
|
|
|
|
u32 kDownOld = 0, kHeldOld = 0, kUpOld = 0; //In these there will be information about keys detected in the previous frame
|
|
|
|
printf("\x1b[0;0HPress Start to exit.\n");
|
|
|
|
// Main loop
|
|
while (aptMainLoop())
|
|
{
|
|
//Scan all the inputs. This should be done once for each frame
|
|
hidScanInput();
|
|
|
|
//hidKeysDown returns information about which buttons have been just pressed (and they weren't in the previous frame)
|
|
u32 kDown = hidKeysDown();
|
|
//hidKeysHeld returns information about which buttons have are held down in this frame
|
|
u32 kHeld = hidKeysHeld();
|
|
//hidKeysUp returns information about which buttons have been just released
|
|
u32 kUp = hidKeysUp();
|
|
|
|
if (kDown & KEY_START) break; // break in order to return to hbmenu
|
|
|
|
//Do the printing only if keys have changed
|
|
if (kDown != kDownOld || kHeld != kHeldOld || kUp != kUpOld)
|
|
{
|
|
//Clear console
|
|
consoleClear();
|
|
|
|
printf("\x1b[0;0HPress Start to exit.\n");
|
|
|
|
//Check if some of the keys are down, held or up
|
|
for (int i = 0; i < 32; i++)
|
|
{
|
|
if (kDown & BIT(i)) printf("%s down\n", keysNames[i]);
|
|
if (kHeld & BIT(i)) printf("%s held\n", keysNames[i]);
|
|
if (kUp & BIT(i)) printf("%s up\n", keysNames[i]);
|
|
}
|
|
}
|
|
|
|
//Set keys old values for the next frame
|
|
kDownOld = kDown;
|
|
kHeldOld = kHeld;
|
|
kUpOld = kUp;
|
|
|
|
// Flush and swap framebuffers
|
|
gfxFlushBuffers();
|
|
gfxSwapBuffers();
|
|
|
|
//Wait for VBlank
|
|
gspWaitForVBlank();
|
|
}
|
|
|
|
// Exit services
|
|
gfxExit();
|
|
hidExit();
|
|
aptExit();
|
|
srvExit();
|
|
return 0;
|
|
}
|