h
ow do i use this code though i just want to messaround with it firstSo here the code I thought about based on ctrulib's HID implementation:
Code:#define BIT(x) (1 << x) /* hidSharedMem can be 0x10000000, 0x10001000, 0x10002000 (maybe even 0x10003000 but didn't see the case until now) ** the address can be different between games ** I don't know for now how to retrieve it automatically so you must define the good one manually */ vu32 *hidSharedMem = (u32 *)0x10002000; u32 kDown = 0; enum { KEY_A = BIT(0), ///< A KEY_B = BIT(1), ///< B KEY_SELECT = BIT(2), ///< Select KEY_START = BIT(3), ///< Start KEY_DRIGHT = BIT(4), ///< D-Pad Right KEY_DLEFT = BIT(5), ///< D-Pad Left KEY_DUP = BIT(6), ///< D-Pad Up KEY_DDOWN = BIT(7), ///< D-Pad Down KEY_R = BIT(8), ///< R KEY_L = BIT(9), ///< L KEY_X = BIT(10), ///< X KEY_Y = BIT(11), ///< Y KEY_CPAD_RIGHT = BIT(28), ///< Circle Pad Right KEY_CPAD_LEFT = BIT(29), ///< Circle Pad Left KEY_CPAD_UP = BIT(30), ///< Circle Pad Up KEY_CPAD_DOWN = BIT(31), ///< Circle Pad Down }; u32 hidCheckSectionUpdateTime(vu32 *sharedmem_section, u32 id) { s64 tick0 = 0; s64 tick1 = 0; if (id==0) { tick0 = *((u64 *)&sharedmem_section[0]); tick1 = *((u64 *)&sharedmem_section[2]); if (tick0 == tick1 || tick0 < 0 || tick1 < 0) return 1; } return 0; } void scanHID(void) { u32 id = 0; kDown = 0; id = hidSharedMem[4]; if (id > 7) id = 7; if (hidCheckSectionUpdateTime(hidSharedMem, id) == 0) kDown = hidSharedMem[10 + id * 4]; } void editMemoryRights(void) { int i; for (i = 0; i < 8; i++) rtCheckRemoteMemoryRegionSafeForWrite(getCurrentProcessHandle(), (u32)hidSharedMem + (10 + i * 4), 4); } void setHID(u32 keys) { u32 id; id = hidSharedMem[4]; if(id > 7) id = 7; hidSharedMem[10 + id * 4] |= keys; } u32 hidKeysDown() { return(kDown); }
Code:void send_key(u32 keys) { setHID(keys); } void my_super_bot(void) { editMemoryRights(); //Press L + A +B to exit the loop while (hidKeysDown() != (KEY_A | KEY_B | KEY_L)) { //send A send_key(KEY_A); //wait 1s svcSleep(1000000000); //send B send_key(KEY_B); //wait 1s svcSleep(1000000000); //send A send_key(KEY_A); //wait 10s svcSleep(10000000000); scanHID(); } }

