Add gyro & accel support. Update python script.

- Added Gyroscope and accelerometer support. Now the 3DS sends the data of the Gyroscope
  and accelerometer to the IP address

- Now the python script uses `python-evdev` instead of `python-uinput`.
  It support more EVENTS and INPUT_PROPS, so the gyroscope and
  accelerometer is identified as an gyro and accel device. Just like the
  DualShock linux driver (hid-playstation.c)

- Python script has now a debug variable, if it's enabled it will show
  some debug info, like the state of the keys and sensors X,Y,Z
  positions.

- Added some explanations on the python script to make development more
  easier (Mostly for myself)
This commit is contained in:
Fijxu 2023-07-30 17:22:04 -04:00
parent 4eaedf8b7f
commit 2b3744a344
82 changed files with 7792 additions and 1682 deletions

View File

@ -1,174 +0,0 @@
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
#include <setjmp.h>
#include <3ds.h>
#include "3ds/services/soc.h"
#include "wireless.h"
#include "settings.h"
#include "drawing.h"
#include "input.h"
#include "keyboard.h"
static jmp_buf exitJmp;
void hang(char *message) {
while(aptMainLoop()) {
hidScanInput();
clearScreen();
drawString(10, 10, "%s", message);
drawString(10, 20, "Start and Select to exit");
u32 kHeld = hidKeysHeld();
if((kHeld & KEY_START) && (kHeld & KEY_SELECT)) longjmp(exitJmp, 1);
gfxFlushBuffers();
gspWaitForVBlank();
gfxSwapBuffers();
}
}
int main(void) {
acInit();
gfxInitDefault();
gfxSetDoubleBuffering(GFX_TOP, true);
gfxSetDoubleBuffering(GFX_BOTTOM, true);
if(setjmp(exitJmp)) goto exit;
// preRenderKeyboard();
clearScreen();
drawString(10, 10, "Initing FS...");
gfxFlushBuffers();
gfxSwapBuffers();
fsInit();
clearScreen();
drawString(10, 10, "Initing SOC...");
gfxFlushBuffers();
gfxSwapBuffers();
socInit((u32 *)memalign(0x1000, 0x100000), 0x100000);
u32 wifiStatus = 0;
ACU_GetWifiStatus(&wifiStatus);
if(!wifiStatus) {
hang("No WiFi! Is your wireless slider on?");
}
clearScreen();
drawString(10, 10, "Reading settings...");
gfxFlushBuffers();
gfxSwapBuffers();
if(!readSettings()) {
hang("Could not read 3DSController.ini!");
}
clearScreen();
drawString(10, 10, "Connecting to %s on port %d...", settings.IPString, settings.port);
gfxFlushBuffers();
gfxSwapBuffers();
openSocket(settings.port);
sendConnectionRequest();
// clearScreen();
gfxFlushBuffers();
gfxSwapBuffers();
disableBacklight();
while(aptMainLoop()) {
hidScanInput();
irrstScanInput();
u32 kHeld = hidKeysHeld();
circlePosition circlePad;
circlePosition cStick;
u8 vol8;
u8* volp = &vol8; //As a test for pointing at things.
hidCstickRead(&cStick);
hidCircleRead(&circlePad);
HIDUSER_GetSoundVolume(volp);
u32 volume = (u32)vol8; //Upscale to 32 for transmission
touchPosition touch;
touchRead(&touch);
clearScreen();
if((kHeld & KEY_L) && (kHeld & KEY_R) && (kHeld & KEY_X)) {
if(keyboardToggle) {
keyboardActive = !keyboardActive;
keyboardToggle = false;
if(keyboardActive) {
enableBacklight();
} else {
disableBacklight();
}
}
}
else keyboardToggle = true;
if(keyboardActive) {
drawKeyboard();
if(touch.px >= 1 && touch.px <= 312 && touch.py >= 78 && touch.py <= 208) {
int x = (int)((float)touch.px * 12.0f / 320.0f);
int y = (int)((float)(touch.py - 78) * 12.0f / 320.0f);
int width = 24;
int height = 24;
if(keyboardChars[x + y * 12] == ' ') {
while(keyboardChars[(x - 1) + y * 12] == ' ') x--;
width = (int)(5.0f * 320.0f / 12.0f) - 1;
}
else if(keyboardChars[x + y * 12] == '\13') {
while(keyboardChars[(x - 1) + y * 12] == '\13') x--;
while(keyboardChars[x + (y - 1) * 12] == '\13') y--;
width = (int)(2.0f * 320.0f / 12.0f) - 1;
height = (int)(3.0f * 320.0f / 12.0f) - 1;
}
if(keyboardChars[x + y * 12]) drawBox((int)((float)x * 320.0f / 12.0f) + 1, (int)(78.0f + (float)y * 320.0f / 12.0f) + 1, width, height, 31, 31, 0);
}
}
sendKeys(kHeld, circlePad, touch, cStick, volume);
//drawString(10, 10, "Volume: %x", volume);
//receiveBuffer(sizeof(struct packet));
if((kHeld & KEY_START) && (kHeld & KEY_SELECT)) {
sendKeys(0, circlePad, touch, cStick, volume);
longjmp(exitJmp, 1);
}
gfxFlushBuffers();
gspWaitForVBlank();
gfxSwapBuffers();
}
exit:
enableBacklight();
socExit();
svcCloseHandle(fileHandle);
fsExit();
gfxExit();
acExit();
return 0;
}

View File

@ -1,50 +0,0 @@
#include <stddef.h>
#include "keyboard.h"
#include "wireless.h"
int sock;
struct sockaddr_in sain, saout;
struct packet outBuf, rcvBuf;
socklen_t sockaddr_in_sizePtr = (int)sizeof(struct sockaddr_in);
bool openSocket(int port) {
sock = socket(AF_INET, SOCK_DGRAM, 0);
saout.sin_family = sain.sin_family = AF_INET;
saout.sin_port = sain.sin_port = htons(port);
sain.sin_addr.s_addr = INADDR_ANY;
bind(sock, (struct sockaddr *)&sain, sizeof(sain));
fcntl(sock, F_SETFL, O_NONBLOCK);
return true;
}
void sendBuf(int length) {
sendto(sock, (char *)&outBuf, length, 0, (struct sockaddr *)&saout, sizeof(saout));
}
int receiveBuffer(int length) {
return recvfrom(sock, (char *)&rcvBuf, length, 0, (struct sockaddr *)&sain, &sockaddr_in_sizePtr);
}
void sendConnectionRequest(void) {
outBuf.command = CONNECT;
outBuf.keyboardActive = keyboardActive;
sendBuf(offsetof(struct packet, connectPacket) + sizeof(struct connectPacket));
}
void sendKeys(unsigned int keys, circlePosition circlePad, touchPosition touch, circlePosition cStick, unsigned int volume) {
outBuf.command = KEYS;
outBuf.keyboardActive = keyboardActive;
memcpy(&outBuf.keys, &keys, 4);
memcpy(&outBuf.circlePad, &circlePad, 4);
memcpy(&outBuf.touch, &touch, 4);
memcpy(&outBuf.cStick, &cStick, 4);
memcpy(&outBuf.volume, &volume, 4);
sendBuf(offsetof(struct packet, keysPacket) + sizeof(struct keysPacket));
}

232
3DS_Controller-evdev.py Executable file
View File

@ -0,0 +1,232 @@
#!/usr/bin/env python
# Compatible with python 3.11, NOT TESTED IN OLD VERSIONS OF PYTHON
from __future__ import print_function
import socket, struct, time
# EVDEV: https://python-evdev.readthedocs.io/en/latest/tutorial.html#specifying-uinput-device-options
import evdev
from evdev import UInput, AbsInfo, ecodes as e
##########################################################
# CONFIGURABLE REGION START - Don't touch anything above #
##########################################################
port = 42020
# Set the debug variable to 1 to print Debug information
debug = 1
# Valid values can be found in any of these locations on your Linux system (some may not exist):
# /usr/include/linux/input-event-codes.h
# The virtual device is defined on the device variable and the mapping of the keys on btn_map
# RECAP keynames (DO NOT TOUCH) are the keys that we expect commming from the 3ds, device is
# the virtual device that we define and btn_map maps what we recieve with our virtual device
btn_map = {
"A": e.BTN_A,
"B": e.BTN_B,
"X": e.BTN_X,
"Y": e.BTN_Y,
"L": e.BTN_TL,
"R": e.BTN_TR,
"ZL": e.BTN_THUMBL,
"ZR": e.BTN_THUMBR,
"Left": e.BTN_DPAD_LEFT,
"Right": e.BTN_DPAD_RIGHT,
"Up": e.BTN_DPAD_UP,
"Down": e.BTN_DPAD_DOWN,
"Start": e.BTN_START,
"Select": e.BTN_SELECT,
"Tap": e.BTN_MODE
}
device = {
# EV_ABS is for Absolute movement with static values,
# like the sticks and the volume
e.EV_ABS: [
(e.ABS_X, AbsInfo(0, -159, 159, 0, 10, 0)),
(e.ABS_Y, AbsInfo(0, -159, 159, 0, 10, 0)),
(e.ABS_RX, AbsInfo(0, -146, 146, 0, 16, 0)),
(e.ABS_RY, AbsInfo(0, -146, 146, 0, 16, 0)),
(e.ABS_VOLUME, AbsInfo(0, 0, 63, 0, 0, 0)),
],
# The keys lol
e.EV_KEY: [
e.BTN_A,
e.BTN_B,
e.BTN_X,
e.BTN_Y,
e.BTN_TL,
e.BTN_TR,
e.BTN_THUMBL,
e.BTN_THUMBR,
e.BTN_DPAD_LEFT,
e.BTN_DPAD_RIGHT,
e.BTN_DPAD_UP,
e.BTN_DPAD_DOWN,
e.BTN_START,
e.BTN_SELECT,
e.BTN_MODE,
],
}
ui = UInput(device, name="3DS", phys="3ds-uinput", vendor=0x1, version=0x1, product=0x1)
gyroAxis = {
e.EV_ABS: [
e.ABS_X,
e.ABS_Y,
e.ABS_Z,
e.ABS_RX,
e.ABS_RY,
e.ABS_RZ
]
}
uiGyro = UInput(gyroAxis, name="3DS Gyroscope", phys="3ds-sensors", vendor=0x2, version=0x2, product=0x2, input_props=[6])
if (debug):
print (ui)
########################################################
# CONFIGURABLE REGION END - Don't touch anything below #
########################################################
class x: pass
command = x()
command.CONNECT = 0
command.KEYS = 1
command.SCREENSHOT = 2
keynames = [
"A", "B", "Select", "Start", "Right", "Left", "Up", "Down",
"R", "L", "X", "Y", None, None, "ZL", "ZR",
None, None, None, None, "Tap", None, None, None,
"CSRight", "CSLeft", "CSUp", "CSDown", "CRight", "CLeft", "CUp", "CDown",
]
keys = x()
keys.A = 1<<0
keys.B = 1<<1
keys.Select = 1<<2
keys.Start = 1<<3
keys.Right = 1<<4
keys.Left = 1<<5
keys.Up = 1<<6
keys.Down = 1<<7
keys.R = 1<<8
keys.L = 1<<9
keys.X = 1<<10
keys.Y = 1<<11
keys.ZL = 1<<14 # (new 3DS only)
keys.ZR = 1<<15 # (new 3DS only)
keys.Tap = 1<<20 # Not actually provided by HID
keys.CSRight = 1<<24 # c-stick (new 3DS only)
keys.CSLeft = 1<<25 # c-stick (new 3DS only)
keys.CSUp = 1<<26 # c-stick (new 3DS only)
keys.CSDown = 1<<27 # c-stick (new 3DS only)
keys.CRight = 1<<28 # circle pad
keys.CLeft = 1<<29 # circle pad
keys.CUp = 1<<30 # circle pad
keys.CDown = 1<<31 # circle pad
def press_key(key):
ui.write(e.EV_KEY, key, 1)
ui.syn()
def release_key(key):
ui.write(e.EV_KEY,key, 0)
ui.syn()
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind(("", port))
prevkeys = 0
touch_start = 0
touch_last_x = 0
touch_last_y = 0
while True:
rawdata, addr = sock.recvfrom(4092)
rawdata = bytearray(rawdata)
# print("Received message", rawdata)
if rawdata[0]==command.CONNECT:
print("Connected with 3DS at address", addr)
pass # CONNECT packets are empty
if rawdata[0]==command.KEYS:
# Just to explain this fuckery of struct.unpack:
# <bbxxIhhHHhhBxxxhhhxx:
# <: This represents that the data received is on Little-Endian
# bb: 2 signed chars which they are 1 byte each one, so 2 bytes in total, the `command` and `keyboardActive` data is here
# xx: Just 2 padding bytes, they are bytes without any data so with `xx` we skip them
# I: A signed integer of 4 bytes, the `keys` pressed data is here
# hh: 2 shorts which they are 2 bytes each one, 4 bytes on total, the X and Y data of the Circle Pad is here
# HH: 2 shorts which they are 2 bytes each one, 4 bytes on total, the X and Y data of the Touch Pad is here
# (where are you pressing in the screen, it could be useful somehow I guess.)
# hh: 2 shorts which they are 2 bytes each one, 4 bytes on total, the X and Y data of the C Stick Pad is here
# B: A unsigned char, just 1 byte and represents the value of the Volume Slider of the 3DS
# xxx: Other 3 extra bytes of padding
# hhh: 3 shorts which they are 2 bytes each one, 6 bytes on total, the X, Y, Z data of the GYROSCOPE is here
# xx: And another 2 extra bytes of padding
# hhh: 3 shorts which they are 2 bytes each one, 6 bytes on total, the X, Y, Z data of the ACCELEROMETER is here
# xxx: And another 2 extra bytes of padding from the fucking nowhere
fields = struct.unpack("<bbxxIhhHHhhBxxxhhhxxhhhxx", rawdata)
data = {
"command": fields[0],
"keyboardActive": fields[1],
"keys": fields[2],
"circleX": fields[3],
"circleY": fields[4],
"touchX": fields[5],
"touchY": fields[6],
"cstickX": fields[7],
"cstickY": fields[8],
"vol": fields[9],
"gyroX": fields[10],
"gyroY": fields[11],
"gyroZ": fields[12],
"accelX": fields[13],
"accelY": fields[14],
"accelZ": fields[15]
}
if (debug):
def pprint(obj):
import pprint
pprint.PrettyPrinter().pprint(obj)
pprint(data)
newkeys = data["keys"] & ~prevkeys
oldkeys = ~data["keys"] & prevkeys
prevkeys = data["keys"]
for btnid in range(16):
if newkeys & (1<<btnid):
press_key(btn_map[keynames[btnid]])
if oldkeys & (1<<btnid):
release_key(btn_map[keynames[btnid]])
if newkeys & keys.Tap:
press_key(btn_map["Tap"])
if oldkeys & keys.Tap:
release_key(btn_map["Tap"])
ui.write(e.EV_ABS, e.ABS_X, data["circleX"])
ui.write(e.EV_ABS, e.ABS_Y, 0-data["circleY"])
ui.write(e.EV_ABS, e.ABS_RX, data["cstickX"])
ui.write(e.EV_ABS, e.ABS_RY, data["cstickY"])
ui.write(e.EV_ABS, e.ABS_VOLUME, data["vol"])
ui.syn()
uiGyro.write(e.EV_ABS, e.ABS_RX, data["gyroX"])
uiGyro.write(e.EV_ABS, e.ABS_RY, data["gyroY"])
uiGyro.write(e.EV_ABS, e.ABS_RZ, data["gyroZ"])
uiGyro.write(e.EV_ABS, e.ABS_X, data["accelX"])
uiGyro.write(e.EV_ABS, e.ABS_Y, data["accelY"])
uiGyro.write(e.EV_ABS, e.ABS_Z, data["accelZ"])
uiGyro.syn()
if rawdata[0]==command.SCREENSHOT:
pass # unused by both 3DS and PC applications

View File

@ -8,7 +8,7 @@ import uinput
##########################################################
# CONFIGURABLE REGION START - Don't touch anything above #
##########################################################
port = 8889
port = 42020
#Valid values can be found in any of these locations on your Linux system (some may not exist):
# /usr/include/linux/input-event-codes.h
@ -31,8 +31,20 @@ btn_map = {
"Start": uinput.BTN_START,
"Select": uinput.BTN_SELECT,
"Tap": uinput.BTN_MODE,
# "Gyroscope X": uinput.REL_RX,
# "Gyroscope Y": uinput.REL_RY,
# "Gyroscope Z": uinput.REL_RZ,
}
# gyro_events = {
# uinput.EV_REL: [
# uinput.REL_RX,
# uinput.REL_RY,
# uinput.REL_RZ
# ],
# uinput.EV_SYN: uinput.SYN_REPORT,
# }
device = uinput.Device([
uinput.ABS_X + (-159, 159, 0, 10),
uinput.ABS_Y + (-159, 159, 0, 10),
@ -54,7 +66,13 @@ device = uinput.Device([
uinput.BTN_START,
uinput.BTN_SELECT,
uinput.BTN_MODE,
])
], name="3DS")
deviceGyro = uinput.Device([
uinput.REL_RX,
uinput.REL_RY,
uinput.REL_RZ
], name="3DS Gyroscope")
########################################################
# CONFIGURABLE REGION END - Don't touch anything below #
########################################################
@ -101,7 +119,11 @@ keys.CRight = 1<<28 # circle pad
keys.CLeft = 1<<29 # circle pad
keys.CUp = 1<<30 # circle pad
keys.CDown = 1<<31 # circle pad
keys.GyroRight = 1<<32 # circle pad
keys.GyroLeft = 1<<33 # circle pad
keys.GyroUp = 1<<34 # circle pad
keys.GyroDown = 1<<35 # circle pad
def press_key(key):
device.emit(key, 1)
@ -118,16 +140,16 @@ touch_last_x = 0
touch_last_y = 0
while True:
rawdata, addr = sock.recvfrom(4096)
rawdata, addr = sock.recvfrom(4092)
rawdata = bytearray(rawdata)
#print("received message", rawdata, "from", addr)
print("received message", rawdata, "from", addr)
if rawdata[0]==command.CONNECT:
print("Connected with 3DS at address",addr)
pass # CONNECT packets are empty
if rawdata[0]==command.KEYS:
fields = struct.unpack("<BBxxIhhHHhhBxxx", rawdata)
fields = struct.unpack("<bbxxIhhHHhhBxxxhhhxx", rawdata)
data = {
"command": fields[0],
@ -140,9 +162,12 @@ while True:
"cstickX": fields[7],
"cstickY": fields[8],
"vol": fields[9],
"gyroX": fields[10],
"gyroY": fields[11],
"gyroZ": fields[12]
}
#pprint(data)
pprint(data)
newkeys = data["keys"] & ~prevkeys
oldkeys = ~data["keys"] & prevkeys
@ -157,12 +182,19 @@ while True:
press_key(btn_map["Tap"])
if oldkeys & keys.Tap:
release_key(btn_map["Tap"])
device.emit(uinput.ABS_X, data["circleX"], syn=False)
device.emit(uinput.ABS_Y, 0-data["circleY"])
device.emit(uinput.ABS_RX, data["cstickX"], syn=False)
device.emit(uinput.ABS_RY, data["cstickY"])
device.emit(uinput.ABS_VOLUME, data["vol"])
# device.emit(uinput.EV_SYN, 0)
deviceGyro.emit(uinput.REL_X, data["gyroX"], syn=False)
deviceGyro.emit(uinput.REL_Y, data["gyroY"])
deviceGyro.emit(uinput.REL_Z, data["gyroZ"])
# deviceGyro.emit(uinput.EV_SYN, 0)
if rawdata[0]==command.SCREENSHOT:
pass # unused by both 3DS and PC applications

37
3DSsource/.gdb_history Normal file
View File

@ -0,0 +1,37 @@
target remote 192.168.93.3:4003
target remote 192.168.98.3:4003
next
n
run
continue
target remote 192.168.98.3:4003
exit
target remote 192.168.98.3:4003
print
p
p volume
file 3DSController.elf
p volume
p volume
p
continue
continue
print HIDUSER_EnableAccelerometer
print HIDUSER_EnableAccelerometer
print HIDUSER_GetSoundVolume
print HIDUSER_GetSoundVolume
print HIDUSER_GetSoundVolume
print HIDUSER_GetSoundVolume
print HIDUSER_GetSoundVolume
print HIDUSER_GetSoundVolume
print HIDUSER_GetSoundVolume
print HIDUSER_GetSoundVolume
print HIDUSER_GetSoundVolume
print HIDUSER_GetSoundVolume
print HIDUSER_GetSoundVolume
n
print HIDUSER_GetSoundVolume
continue
n
n
exit

3
3DSsource/.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,3 @@
{
"cSpell.enabled": false
}

BIN
3DSsource/3DSController.elf Executable file

Binary file not shown.

View File

@ -1,4 +1,4 @@
Change the IP to be your PC's local IP, (run 3DSController.exe to find it),
IP: 192.168.0.4
Port: 8889
IP: 192.168.1.2
Port: 42020

Binary file not shown.

View File

@ -0,0 +1,730 @@
w __cxa_begin_cleanup
w __cxa_call_unexpected
w __cxa_type_match
w __deregister_frame_info
w __gnu_Unwind_Find_exidx
w __register_frame_info
w userAppExit
w userAppInit
00000000 00000802 B __ctru_dev_utf16_buf
00000000 a shift
00000000 a shift
00000000 b _TLS_MODULE_BASE_
00000804 00000401 B __ctru_dev_path_buf
00100000 A __start__
00100000 T _start
00100008 T __service_ptr
0010000c T __apt_appid
00100010 T __heap_size
00100014 T __linear_heap_size
00100018 T __system_arglist
0010001c T __system_runflags
00100020 t startup
00100058 t ClearMem
0010006c t ClrLoop
00100094 T _init
001000ac 00000028 T clearScreen
001000d4 00000060 T drawPixelRGBFramebuffer
00100134 000000f4 T drawBoxFramebuffer
00100228 00000190 T drawStringFramebuffer
001003b8 00000070 T disableBacklight
00100428 00000038 T enableBacklight
00100460 00000108 T inet_pton4
00100568 00000240 T preRenderKeyboard
001007a8 0000002c T drawKeyboard
001007d4 0000009c T hang
00100870 00000080 t getSetting
001008f0 00000198 T readSettings
00100a88 00000068 T openSocket
00100af0 00000034 T sendBuf
00100b24 0000003c T receiveBuffer
00100b60 00000050 T sendConnectionRequest
00100bb0 00000094 T sendKeys
00100c44 T __aeabi_uldivmod
00100c80 00000004 W __aeabi_idiv0
00100c80 00000004 W __aeabi_ldiv0
00100c84 00000018 T setjmp
00100c9c 0000001c T longjmp
00100cc8 00000390 T strcmp
00101050 T __aeabi_uidiv
00101050 000001ec T __udivsi3
00101050 t .udivsi3_skip_div0_test
0010123c 00000020 T __aeabi_uidivmod
0010125c T __aeabi_idiv
0010125c 00000220 T __divsi3
00101264 t .divsi3_skip_div0_test
0010147c 00000020 T __aeabi_idivmod
0010149c T __aeabi_drsub
001014a4 000002b0 T __aeabi_dsub
001014a4 000002b0 T __subdf3
001014a8 000002ac T __adddf3
001014a8 000002ac T __aeabi_dadd
00101754 00000024 T __aeabi_ui2d
00101754 00000024 T __floatunsidf
00101778 00000028 T __aeabi_i2d
00101778 00000028 T __floatsidf
001017a0 00000048 T __aeabi_f2d
001017a0 00000048 T __extendsfdf2
001017e8 00000074 T __aeabi_ul2d
001017e8 00000074 T __floatundidf
001017fc 00000060 T __aeabi_l2d
001017fc 00000060 T __floatdidf
0010185c 00000014 T __restore_core_regs
0010185c 00000014 T restore_core_regs
00101870 T __gnu_Unwind_Restore_VFP
00101878 T __gnu_Unwind_Save_VFP
00101880 T __gnu_Unwind_Restore_VFP_D
00101888 T __gnu_Unwind_Save_VFP_D
00101890 T __gnu_Unwind_Restore_VFP_D_16_to_31
00101898 T __gnu_Unwind_Save_VFP_D_16_to_31
001018a0 T __gnu_Unwind_Restore_WMMXD
001018e4 T __gnu_Unwind_Save_WMMXD
00101928 T __gnu_Unwind_Restore_WMMXC
0010193c T __gnu_Unwind_Save_WMMXC
00101950 00000024 T ___Unwind_RaiseException
00101950 00000024 T _Unwind_RaiseException
00101974 00000024 T ___Unwind_Resume
00101974 00000024 T _Unwind_Resume
00101998 00000024 T ___Unwind_Resume_or_Rethrow
00101998 00000024 T _Unwind_Resume_or_Rethrow
001019bc 00000024 T ___Unwind_ForcedUnwind
001019bc 00000024 T _Unwind_ForcedUnwind
001019e0 00000024 T ___Unwind_Backtrace
001019e0 00000024 T _Unwind_Backtrace
00101a04 t __do_global_dtors_aux
00101a44 t frame_dummy
00101a70 00000490 T main
00101f00 000000d0 t gfxPresentFramebuffer
00101fd0 000000ec T gfxSetScreenFormat
001020bc 00000010 T gfxSetDoubleBuffering
001020cc 000000e0 T gfxInit
001021ac 00000010 T gfxInitDefault
001021bc 000000b4 T gfxExit
00102270 000000a0 T gfxGetFramebuffer
00102310 00000104 T gfxFlushBuffers
00102414 00000050 T gfxSwapBuffers
00102464 00000160 T irrstInit
001025c4 000000cc T irrstExit
00102690 000000b4 T irrstScanInput
00102744 00000024 T irrstKeysHeld
00102768 00000018 T irrstCstickRead
00102780 00000c64 t gspHardwareInit
001033e4 00000248 T gspInit
0010362c 000000f0 T gspExit
0010371c 00000010 T gspHasGpuRight
0010372c 000000a0 T gspPresentBuffer
001037cc 00000044 T gspWaitForEvent
00103810 00000004 W gxCmdQueueInterrupt
00103814 00000158 t gspEventThreadMain
0010396c 00000064 T GSPGPU_WriteHWRegs
001039d0 00000068 T GSPGPU_ReadHWRegs
00103a38 00000050 T GSPGPU_FlushDataCache
00103a88 00000034 T GSPGPU_SetLcdForceBlack
00103abc 00000068 T GSPGPU_AcquireRight
00103b24 00000048 T GSPGPU_ReleaseRight
00103b6c 0000007c T GSPGPU_ImportDisplayCaptureInfo
00103be8 0000002c T GSPGPU_SaveVramSysArea
00103c14 0000002c T GSPGPU_RestoreVramSysArea
00103c40 00000024 W hidShouldUseIrrst
00103c64 0000018c T hidInit
00103df0 000000e8 T hidExit
00103ed8 000002a4 T hidScanInput
0010417c 00000010 T hidKeysHeld
0010418c 00000018 T hidTouchRead
001041a4 00000018 T hidCircleRead
001041bc 00000020 T hidAccelRead
001041dc 00000020 T hidGyroRead
001041fc 0000002c T HIDUSER_EnableAccelerometer
00104228 0000002c T HIDUSER_EnableGyroscope
00104254 00000038 T HIDUSER_GetSoundVolume
0010428c 0000008c T acInit
00104318 0000003c T acExit
00104354 00000038 T ACU_GetWifiStatus
0010438c 000001ac t aptConvertScreenForCapture
00104538 00000008 W aptDspSleep
00104540 00000004 W aptDspWakeup
00104544 00000004 W aptDspCancel
00104548 00000158 T aptSendCommand
001046a0 00000044 t aptExitProcess
001046e4 0000038c T aptExit
00104a70 000000e0 T aptHandleSleep
00104b50 00000084 T APT_SleepIfShellClosed
00104bd4 00000084 T aptSetSleepAllowed
00104c58 00000084 T APT_UnlockTransition
00104ce0 000004a4 t aptEventHandler
00105184 000000b0 T APT_ReceiveParameter
00105234 000000ac t aptReceiveParameter.constprop.0
001052e0 000002ac t aptScreenTransfer
0010558c 00000320 t aptWaitForWakeUp.isra.0
001058ac 000000f8 T aptJumpToHomeMenu
001059a4 00000048 T aptMainLoop
001059ec 0000022c T aptInit
00105c18 0000007c T APT_CheckNew3DS
00105c94 0000002c T GSPLCD_PowerOnAllBacklights
00105cc0 0000002c T GSPLCD_PowerOffAllBacklights
00105cec 000000cc T fsInit
00105db8 0000003c T fsExit
00105df4 00000060 T fsExemptFromSession
00105e54 00000050 T fsUnexemptFromSession
00105ea4 00000084 T fsMakePath
00105f28 000000cc T FSUSER_OpenFile
00105ff4 000000d4 T FSUSER_OpenFileDirectly
001060c8 000000bc T FSUSER_DeleteFile
00106184 000000f8 T FSUSER_RenameFile
0010627c 000000bc T FSUSER_DeleteDirectory
00106338 000000d4 T FSUSER_CreateFile
0010640c 000000c4 T FSUSER_CreateDirectory
001064d0 000000f8 T FSUSER_RenameDirectory
001065c8 000000b4 T FSUSER_OpenDirectory
0010667c 00000094 T FSUSER_OpenArchive
00106710 0000008c T FSUSER_CloseArchive
0010679c 00000074 T FSUSER_GetSdmcArchiveResource
00106810 00000064 T FSUSER_IsSdmcWritable
00106874 00000058 T FSFILE_Read
001068cc 00000060 T FSFILE_Write
0010692c 00000038 T FSFILE_GetSize
00106964 00000028 T FSFILE_SetSize
0010698c 0000003c T FSFILE_Close
001069c8 00000024 T FSFILE_Flush
001069ec 00000050 T FSDIR_Read
00106a3c 0000003c T FSDIR_Close
00106a78 0000014c T socket
00106bc4 00000014 t soc_open
00106bd8 00000034 t soc_read
00106c0c 00000034 t soc_write
00106c40 0000008c t soc_close
00106ccc 0000014c T socInit
00106e18 00000088 T socExit
00106ea0 0000003c T _net_convert_error
00106edc 00000174 T bind
00107050 00000140 T fcntl
00107190 00000140 T socuipc_cmd7
001072d0 0000015c T socuipc_cmd8
0010742c 00000024 T soc_recvfrom
00107450 000000a8 T recvfrom
001074f8 00000158 T socuipc_cmd9
00107650 0000015c T socuipc_cmda
001077ac 00000024 T soc_sendto
001077d0 000000a8 T sendto
00107878 00000038 W __libctru_init
001078b0 00000170 W __system_initArgv
00107a20 T svcControlMemory
00107a40 T svcQueryMemory
00107a70 T svcExitProcess
00107a78 T svcCreateThread
00107a98 T svcExitThread
00107aa0 T svcSleepThread
00107aa8 T svcReleaseMutex
00107ab0 T svcCreateEvent
00107ac4 T svcSignalEvent
00107acc T svcClearEvent
00107ad4 T svcCreateMemoryBlock
00107aec T svcMapMemoryBlock
00107af4 T svcUnmapMemoryBlock
00107afc T svcCreateAddressArbiter
00107b10 T svcArbitrateAddressNoTimeout
00107b18 T svcCloseHandle
00107b20 T svcWaitSynchronization
00107b28 T svcWaitSynchronizationN
00107b50 T svcDuplicateHandle
00107b64 T svcConnectToPort
00107b78 T svcSendSyncRequest
00107b80 T svcGetResourceLimit
00107b94 T svcGetResourceLimitLimitValues
00107b9c T svcGetResourceLimitCurrentValues
00107ba4 T svcBreak
00107bac W initSystem
00107bfc W __ctru_exit
00107c14 00000024 t addrMapNodeComparator(rbtree_node const*, rbtree_node const*)
00107c38 00000004 t addrMapNodeDestructor(rbtree_node*)
00107c3c 0000024c T vramMemAlignAt
00107e88 0000000c T vramAlloc
00107e94 00000090 T vramFree
00107f24 00000024 t addrMapNodeComparator(rbtree_node const*, rbtree_node const*)
00107f48 00000004 t addrMapNodeDestructor(rbtree_node*)
00107f4c 00000120 T linearMemAlign
0010806c 00000008 T linearAlloc
00108074 0000005c T linearFree
001080d0 00000080 T MemPool::CoalesceRight(MemBlock*)
00108150 0000016c T MemPool::Allocate(MemChunk&, unsigned long, int)
001082bc 000000fc T MemPool::Deallocate(MemChunk const&)
001083b8 00000030 T MemPool::GetFreeSpace()
001083e8 00000084 W envGetHandle
0010846c 00000050 W envDestroyHandles
001084bc 0000000c T __sync_init
001084c8 00000018 T __sync_fini
001084e0 0000002c T syncArbitrateAddress
0010850c 000000ac T LightLock_Lock
001085b8 00000040 T LightLock_Unlock
001085f8 00000030 T RecursiveLock_Lock
00108628 00000054 T RecursiveLock_Unlock
0010867c 00000040 T LightEvent_Init
001086bc 000000a4 T LightEvent_Clear
00108760 000000c8 T LightEvent_Signal
00108828 00000050 T LightEvent_TryWait
00108878 000000a0 T LightEvent_Wait
00108918 00000034 T __ctru_speedup_config
0010894c 0000012c T srvInit
00108a78 00000058 T srvExit
00108ad0 00000060 T srvEnableNotification
00108b30 000000a0 T srvGetServiceHandleDirect
00108bd0 00000038 T srvGetServiceHandle
00108c08 00000034 T srvSubscribe
00108c3c 00000060 T srvReceiveNotification
00108c9c 00000038 T srvPublishToSubscriber
00108cd4 000001d8 T threadCreate
00108eac 0000002c T threadFree
00108ed8 00000024 T threadJoin
00108efc 00000030 T threadGetCurrent
00108f2c 00000040 T threadExit
00108f6c 00000020 t _thread_begin
00108f8c 000000b4 t mappableFindAddressWithin
00109040 00000028 T mappableInit
00109068 00000080 T mappableAlloc
001090e8 00000004 T mappableFree
001090ec 0000000c T srvPmGetSessionHandle
001090f8 00000074 T ptmSysmInit
0010916c 0000003c T ptmSysmExit
001091a8 00000034 T PTMSYSM_ConfigureNew3DSCPU
001091dc 00000010 T rbtree_init
001091ec 000001b0 t do_insert
0010939c 00000008 T rbtree_insert
001093a4 00000090 T rbtree_rotate
00109434 00000318 T rbtree_remove
0010974c 00000074 T rbtree_find
001097c0 00000030 W __appInit
001097f0 00000030 T __syscall_getreent
00109820 00000004 T __syscall_lock_acquire
00109824 00000004 T __syscall_lock_release
00109828 00000004 T __syscall_lock_acquire_recursive
0010982c 00000004 T __syscall_lock_release_recursive
00109830 00000004 T __syscall_exit
00109834 00000050 T initThreadVars
00109884 00000080 T __system_initSyscalls
00109908 000001e0 W __system_allocateHeaps
00109ae8 00000030 W __appExit
00109b18 00000090 W __libctru_exit
00109ba8 00000014 t archive_link
00109bbc 00000014 t archive_dirreset
00109bd0 00000014 t archive_chmod
00109be4 00000024 t error_cmp
00109c08 00000050 t archive_translate_error
00109c58 000000c8 t archive_seek
00109d20 0000007c t _archiveInit.part.0
00109d9c 000000c4 t archiveFindDevice.part.0
00109e60 00000280 t archive_utf16path
0010a0e0 0000009c t _archiveUnmountDeviceStruct.part.0
0010a17c 00000014 t archive_fchmod
0010a190 00000014 t archive_statvfs
0010a1a4 00000164 t _archiveMountDevice
0010a308 000000e8 t archive_diropen
0010a3f0 000000a4 t archive_fstat
0010a494 0000006c t archive_fsync
0010a500 0000006c t archive_close
0010a56c 00000070 t archive_dirclose
0010a5dc 000000e8 t sdmc_statvfs
0010a6c4 000000ec t archive_chdir
0010a7b0 0000007c t archive_ftruncate
0010a82c 000000ac t archive_read
0010a8d8 000000a4 t archive_unlink
0010a97c 000000bc t archive_rmdir
0010aa38 000000dc t archive_mkdir
0010ab14 00000194 t archive_stat
0010aca8 00000160 t archive_dirnext
0010ae08 00000124 t archive_write
0010af2c 0000020c t archive_open
0010b138 00000278 t archive_rename
0010b3b0 0000019c T archiveMountSdmc
0010b54c 00000054 T archiveUnmountAll
0010b5a0 0000005c T rbtree_node_next
0010b5fc 000000c0 T utf8_to_utf16
0010b6bc 0000013c T decode_utf8
0010b7f8 000000e8 T utf16_to_utf8
0010b8e0 T __aeabi_read_tp
0010b8ec 00000054 T encode_utf16
0010b940 000000e0 T encode_utf8
0010ba20 00000064 T decode_utf16
0010ba84 00000120 T __udivmoddi4
0010bba4 00000020 T memalign
0010bbc4 0000014c T _memalign_r
0010bd10 00000078 T bsearch
0010bd88 00000074 T sscanf
0010bdfc 00000044 T __sread
0010be40 00000008 T __seofread
0010be48 00000068 T __swrite
0010beb0 00000044 T __sseek
0010bef4 00000008 T __sclose
0010befc 00000004 W __call_exitprocs
0010bf00 00000030 T exit
0010bf30 000000f8 T _malloc_trim_r
0010c028 000002e8 T _free_r
0010c310 00000130 T strchr
0010c440 00000018 T malloc
0010c458 00000018 T free
0010c470 00000050 t get_arg
0010c4c0 00002bf8 T __ssvfscanf_r
0010f0b8 0000079c T _malloc_r
0010f854 000000a4 T _vsnprintf_r
0010f8f8 00000038 T vsnprintf
0010f930 000000f4 T memset
0010fa24 0000000c T __malloc_lock
0010fa30 0000000c T __malloc_unlock
0010fa3c 00000090 T strlen
0010facc 0000022c T __sflush_r
0010fcf8 00000094 T _fflush_r
0010fd8c 000000e4 T strncat
0010fe70 000000e4 T strncmp
0010ff54 00000070 T _fwalk_sglue
0010ffc4 000000c4 T strncpy
00110088 0000001c t stdio_exit_handler
001100a4 0000005c t cleanup_stdio
00110100 00000154 t global_stdio_init.part.0
00110254 0000005c T __sinit
001102b0 0000000c T __sfp_lock_acquire
001102bc 0000000c T __sfp_lock_release
001102c8 00000048 T strnlen
00110310 00000064 t sulp
00110378 000013a4 T _strtod_l
0011171c 0000003c T _strtod_r
00111758 000001b0 t _strtol_l.part.0
00111908 00000060 T _strtol_r
00111968 00000020 T realloc
00111988 000001d8 t _strtoul_l.isra.0
00111b60 00000030 T _strtoul_r
00111b90 00000034 T strtoul
00111bc4 00000024 T __locale_mb_cur_max
00111be8 00000128 t critical_factorization
00111d10 00000364 t two_way_long_needle
00112074 00000248 T strstr
001122bc 00000024 T _localeconv_r
001122e0 000000f0 T __utf8_wctomb
001123d0 0000011c T memcpy
001124ec 000000dc T stpncpy
001125c8 00000084 T __libc_init_array
0011264c 0000003c T __libc_fini_array
00112688 0000000c T __errno
00112698 00000010 T nan
001126a8 0000000c T nanf
001126b4 00000234 t _strtoll_l.isra.0
001128e8 00000030 T _strtoll_r
00112918 0000025c t _strtoull_l.isra.0
00112b74 00000030 T _strtoull_r
00112ba4 00000008 T iswspace
00112bac 000000b4 T _mbrtowc_r
00112c60 00000038 T iswspace_l
00112c98 00000064 T sprintf
00112cfc 000000f0 T __sccl
00112dec 00000090 T category
00112e7c 000000e0 T _sungetc_r
00112f5c 0000006c T __ssrefill_r
00112fc8 000000c4 T _sfread_r
0011308c 000000f0 t rshift
0011317c 0000089c T __gethex
00113a18 000000d8 T memcmp
00113af0 00000148 T _fclose_r
00113c38 0000064c t get_arg
00114288 00003324 T _svfprintf_r
001175ac 0000004c T __match
001175f8 0000029c T __hexnan
00117894 00000088 T _Balloc
0011791c 0000001c T _Bfree
00117938 000000f4 T __multadd
00117a2c 00000110 T __s2b
00117b3c 00000060 T __hi0bits
00117b9c 0000009c T __lo0bits
00117c38 000000a4 T __i2b
00117cdc 00000204 T __multiply
00117ee0 00000128 T __pow5mult
00118008 00000140 T __lshift
00118148 00000058 T __mcmp
001181a0 000001fc T __mdiff
0011839c 00000068 T __ulp
00118404 000000d0 T __b2d
001184d4 00000124 T __d2b
001185f8 00000078 T __ratio
00118670 00000088 T __copybits
001186f8 0000005c T __any_on
00118754 000004a0 T _realloc_r
00118bf4 000002f8 T __utf8_mbtowc
00118eec 000000e0 T memchr
00118fd0 00000088 T frexp
00119058 000000a0 T _wcrtomb_r
001190f8 00000028 T _wcsrtombs_r
00119120 000000a8 T __submore
001191c8 000000c0 T _calloc_r
00119288 0000005c T __assert_func
001192e4 0000018c T __ssprint_r
00119470 0000003c T fiprintf
001194ac 000001b4 t quorem
00119660 00001218 T _dtoa_r
0011a878 00000150 T memmove
0011a9c8 00000188 T _wcsnrtombs_l
0011ab50 00000064 T _wcsnrtombs_r
0011abb4 00000014 T abort
0011abc8 0000064c t get_arg
0011b214 00000030 T __sprint_r
0011b244 00002304 T _vfiprintf_r
0011d548 000000b8 t __sbprintf
0011d600 00000138 T __swsetup_r
0011d738 00000090 T _raise_r
0011d7c8 00000018 T raise
0011d7e0 000004b4 T __sfvwrite_r
0011dc94 0000012c T __smakebuf_r
0011ddc0 00000020 T _exit
0011dde0 0000013c T chdir
0011df1c 000001cc T _concatenate_path
0011e0e8 00000078 T _fstat_r
0011e160 00000014 T _getpid_r
0011e174 0000002c T __getreent
0011e1a0 0000008c T __release_handle
0011e22c 000000b0 T __alloc_handle
0011e2dc 0000003c T __get_handle
0011e318 000000f4 T _close_r
0011e40c 00000008 t null_write
0011e414 00000018 T setDefaultDevice
0011e42c 000000c8 T FindDevice
0011e4f4 00000028 T RemoveDevice
0011e51c 0000009c T AddDevice
0011e5b8 00000020 T GetDeviceOpTab
0011e5d8 00000008 T _isatty_r
0011e5e0 00000014 T _kill_r
0011e5f4 00000084 T _lseek_r
0011e678 00000080 T _read_r
0011e6f8 00000078 W _sbrk_r
0011e770 0000001c T __libc_lock_acquire
0011e78c 0000001c T __libc_lock_release
0011e7a8 0000001c T __libc_lock_acquire_recursive
0011e7c4 0000001c T __libc_lock_release_recursive
0011e7e0 00000080 T _write_r
0011e860 00000038 T __aeabi_d2lz
0011e860 00000038 T __fixdfdi
0011e898 00000040 T __aeabi_d2ulz
0011e898 00000040 T __fixunsdfdi
0011e8d8 00000018 t selfrel_offset31
0011e8f0 00000090 t search_EIT_table
0011e980 00000040 t __gnu_unwind_get_pr_addr
0011e9c0 0000010c t get_eit_entry
0011eacc 00000088 t restore_non_core_regs
0011eb54 00000014 t _Unwind_decode_typeinfo_ptr.constprop.0
0011eb68 00000004 t _Unwind_DebugHook
0011eb6c 00000064 t unwind_phase2
0011ebd0 00000140 t unwind_phase2_forced
0011ed10 000000a4 T __gnu_Unwind_RaiseException
0011edb4 00000028 T __gnu_Unwind_ForcedUnwind
0011eddc 00000074 T __gnu_Unwind_Resume
0011ee50 00000020 T __gnu_Unwind_Resume_or_Rethrow
0011ee70 0000006c T _Unwind_VRS_Get
0011eedc 0000002c t _Unwind_GetGR
0011ef08 0000006c T _Unwind_VRS_Set
0011ef74 0000002c t _Unwind_SetGR
0011efa0 000000c0 T __gnu_Unwind_Backtrace
0011f060 00000410 t __gnu_unwind_pr_common
0011f470 00000008 T __aeabi_unwind_cpp_pr0
0011f478 00000008 W __aeabi_unwind_cpp_pr1
0011f480 00000008 W __aeabi_unwind_cpp_pr2
0011f488 00000424 T _Unwind_VRS_Pop
0011f8ac 00000064 t next_unwind_byte
0011f910 00000464 T __gnu_unwind_execute
0011fd74 00000048 T strrchr
0011fdbc T _fini
00120000 00000300 r fonts
00120300 0000000b r digits.0
00120348 0000003c R keyboardChars
001204fc 00000008 r morton_y.2
00120504 00000008 r morton_x.3
0012050c 00000008 r s_sleepWakeEvents.4
00120530 0000004d r _net_error_code_map
001205b8 00000030 r error_table
001205f0 00000080 r archive_devoptab
00120678 00000022 r basefix.0
001206ac 00000014 r fpinan.0
001206c0 00000014 r fpi.1
001206d8 00000028 r tinytens
00120744 00000101 R _ctype_
00120848 00003528 r categories
00123dd0 00000100 R __hexdig
00123f0c 00000010 r zeroes.0
00123f1c 00000010 r blanks.1
00123f70 0000000c r p05.0
00123f80 00000028 R __mprec_bigtens
00123fa8 000000c8 R __mprec_tens
001240b0 0000006c R __action_table
0012411c 0000006c R __state_table
00124188 00000100 R __chclass
00124298 r .LC2
001242e0 00000010 r zeroes.0
001242f0 00000010 r blanks.1
00124300 00000080 R dotab_stdnull
00124380 R __tdata_align
00124384 r __EH_FRAME_BEGIN__
00124384 R __exidx_start
00124414 R __exidx_end
00125000 00000001 D keyboardToggle
00125004 00000014 D defaultSettings
00125018 00000004 D sockaddr_in_sizePtr
0012501c 00000004 d kCount
00125020 00000004 d kInterval
00125024 00000004 d kDelay
00125028 00000004 d aptChainloadDeliverArgSize
0012502c 00000080 d soc_devoptab
001250ac W __stacksize__
001250b0 00000004 D __malloc_sbrk_base
001250b4 00000004 D __malloc_trim_threshold
001250b8 00000408 D __malloc_av_
001254c0 0000000c D __sglue
001254cc 0000016c D __global_locale
00125638 00000004 D _impure_ptr
00125640 00000120 D _impure_data
00125760 00000400 d _current_working_directory
00125b60 00001000 d handles
00126b60 0000000c d __stderr_handle
00126b6c 0000000c d __stdout_handle
00126b78 0000000c d __stdin_handle
00126b84 0000008c D devoptab_list
00126c10 00000004 d defaultDevice
00126c1c d _GLOBAL_OFFSET_TABLE_
00126c28 d __frame_dummy_init_array_entry
00126c28 D __init_array_start
00126c28 B __preinit_array_end
00126c28 B __preinit_array_start
00126c28 D __tdata_lma
00126c28 D __tdata_lma_end
00126c2c d __do_global_dtors_aux_fini_array_entry
00126c2c D __fini_array_start
00126c2c D __init_array_end
00126c30 00000004 b brightnessMain
00126c30 D __bss_start__
00126c30 D __fini_array_end
00126c34 00000004 b brightnessSub
00126c38 00038400 B keyboardGfx
0015f038 00000001 B keyboardActive
0015f040 000000a0 b exitJmp
0015f0e0 00000004 B fileHandle
0015f0e4 00000014 B settings
0015f0f8 00000004 B sock
0015f0fc 00000010 B sain
0015f10c 00000010 B saout
0015f11c 00000028 B outBuf
0015f144 00000028 B rcvBuf
0015f16c b completed.1
0015f170 b object.0
0015f188 00000004 b screenAlloc
0015f18c 00000004 b screenFree
0015f190 00000002 b gfxIsDoubleBuf
0015f194 00000002 b gfxCurBuf
0015f196 00000001 b gfxIsVram
0015f197 00000001 b gfxTopMode
0015f198 00000002 b gfxFramebufferFormats
0015f19c 00000004 b gfxBottomFramebufferMaxSize
0015f1a0 00000004 b gfxTopFramebufferMaxSize
0015f1a8 00000008 b gfxBottomFramebuffers
0015f1b0 00000008 b gfxTopFramebuffers
0015f1b8 00000004 b irrstRefCount
0015f1bc 00000004 b csPos
0015f1c0 00000004 b kHeld
0015f1c4 00000004 B irrstSharedMem
0015f1c8 00000004 B irrstEvent
0015f1cc 00000004 B irrstMemHandle
0015f1d0 00000004 B irrstHandle
0015f1d4 00000007 b gspEventCbOneShot
0015f1dc 0000001c b gspEventCbData
0015f1f8 0000001c b gspEventCb
0015f214 00000038 b gspEvents
0015f24c 00000004 b gspLastEvent
0015f250 00000001 b gspRunEvents
0015f254 00000004 b gspEventThread
0015f258 00000004 b gspEvent
0015f25c 00000001 b gspGpuRight
0015f25d 00000001 b gspThreadId
0015f260 00000004 b gspSharedMem
0015f264 00000004 b gspSharedMemHandle
0015f268 00000004 b gspRefCount
0015f26c 00000004 b gspGpuHandle
0015f270 00000001 b usingIrrst
0015f274 00000004 b hidRefCount
0015f278 00000006 b gRate
0015f280 00000006 b aVec
0015f288 00000004 b cPos
0015f28c 00000004 b tPos
0015f290 00000004 b kRepeat
0015f294 00000004 b kUp
0015f298 00000004 b kDown
0015f29c 00000004 b kHeld
0015f2a0 00000004 b kOld
0015f2a4 00000004 B hidSharedMem
0015f2a8 00000014 B hidEvents
0015f2bc 00000004 B hidMemHandle
0015f2c0 00000004 B hidHandle
0015f2c4 00000004 b acRefCount
0015f2c8 00000004 b acHandle
0015f2cc 00000001 b flagValue.0
0015f2cd 00000001 b flagInit.1
0015f2d0 00000004 b serviceName.6
0015f2d4 00000001 b aptChainloadFlags
0015f2d5 00000001 b aptChainloadMediatype
0015f2d8 00000020 b aptChainloadHmac
0015f2f8 00000300 b aptChainloadDeliverArg
0015f5f8 00000008 b aptChainloadTid
0015f600 00001000 b aptParameters
00160600 00000004 b aptFlags
00160604 00000001 b aptHomeButtonState
00160608 00000004 b aptMessageFuncData
0016060c 00000004 b aptMessageFunc
00160610 0000000c b aptFirstHook
0016061c 00000001 b aptEventHandlerThreadQuit
00160620 00000004 b aptEventHandlerThread
00160624 00000008 b aptSleepEvent
0016062c 00000008 b aptReceiveEvent
00160634 00000008 b aptEvents
0016063c 00000004 b aptLockHandle
00160640 00000004 b aptRefCount
00160644 00000004 B gspLcdHandle
00160648 00000080 b fsExemptArchives
001606c8 00000004 b fsuRefCount
001606cc 00000004 b fsuHandle
001606d0 00000004 B socMemhandle
001606d4 00000004 B SOCU_handle
001606d8 00000004 B __system_retAddr
001606dc 00000004 B __system_argv
001606e0 00000004 B __system_argc
001606e4 b saved_stack
001606f0 00000008 b sVramPoolB
001606f8 00000008 b sVramPoolA
00160700 0000000c b sAddrMap
00160710 00000008 b sLinearPool
00160718 0000000c b sAddrMap
00160724 00000004 b arbiter
00160728 00000001 V __ctru_speedup
0016072c 00000004 B __3dslink_host
00160730 00000004 b srvRefCount
00160734 00000004 b srvHandle
00160738 00000004 b currentAddr
0016073c 00000004 b maxAddr
00160740 00000004 b minAddr
00160744 00000004 b srvPmHandle
00160748 00000004 b ptmSysmRefCount
0016074c 00000004 b ptmSysmHandle
00160750 00000004 V __ctru_linear_heap_size
00160754 00000004 V __ctru_heap_size
00160758 00000004 B __ctru_linear_heap
0016075c 00000004 B __ctru_heap
00160760 000005c0 b archive_devices
00160d20 00000004 b archive_device_cwd
00160d24 00000001 b archive_initialized
00160d28 00000028 B __malloc_current_mallinfo
00160d50 00000004 B __malloc_max_total_mem
00160d54 00000004 B __malloc_max_sbrked_mem
00160d58 00000004 B __malloc_top_pad
00160d5c 0000000c b __malloc_recursive_mutex
00160d68 0000000c b __sfp_recursive_mutex
00160d78 00000168 B __sf
00160ee0 00000004 B __stdio_exit_handler
00160ee4 00000400 b temp_cwd
001612e4 00000004 b __hndl_lock
001612e8 00000004 B fake_heap_start
001612ec 00000004 B fake_heap_end
001612f0 00000004 b heap_start.0
001612f4 B __tls_start
00161efc B __bss_end__
00161efc A __end__
00161efc B __tls_end

File diff suppressed because it is too large Load Diff

171
3DSsource/build/drawing.d Normal file
View File

@ -0,0 +1,171 @@
drawing.o: /home/user/3DSController/3DS/source/drawing.c \
/opt/devkitpro/libctru/include/3ds.h \
/opt/devkitpro/libctru/include/3ds/types.h \
/opt/devkitpro/libctru/include/3ds/result.h \
/opt/devkitpro/libctru/include/3ds/ipc.h \
/opt/devkitpro/libctru/include/3ds/svc.h \
/opt/devkitpro/libctru/include/3ds/exheader.h \
/opt/devkitpro/libctru/include/3ds/srv.h \
/opt/devkitpro/libctru/include/3ds/errf.h \
/opt/devkitpro/libctru/include/3ds/os.h \
/opt/devkitpro/libctru/include/3ds/synchronization.h \
/opt/devkitpro/libctru/include/3ds/thread.h \
/opt/devkitpro/libctru/include/3ds/gfx.h \
/opt/devkitpro/libctru/include/3ds/services/gspgpu.h \
/opt/devkitpro/libctru/include/3ds/console.h \
/opt/devkitpro/libctru/include/3ds/env.h \
/opt/devkitpro/libctru/include/3ds/util/decompress.h \
/opt/devkitpro/libctru/include/3ds/util/utf.h \
/opt/devkitpro/libctru/include/3ds/allocator/linear.h \
/opt/devkitpro/libctru/include/3ds/allocator/mappable.h \
/opt/devkitpro/libctru/include/3ds/allocator/vram.h \
/opt/devkitpro/libctru/include/3ds/services/ac.h \
/opt/devkitpro/libctru/include/3ds/services/am.h \
/opt/devkitpro/libctru/include/3ds/services/fs.h \
/opt/devkitpro/libctru/include/3ds/services/ampxi.h \
/opt/devkitpro/libctru/include/3ds/services/apt.h \
/opt/devkitpro/libctru/include/3ds/services/boss.h \
/opt/devkitpro/libctru/include/3ds/services/cam.h \
/opt/devkitpro/libctru/include/3ds/services/y2r.h \
/opt/devkitpro/libctru/include/3ds/services/cfgnor.h \
/opt/devkitpro/libctru/include/3ds/services/cfgu.h \
/opt/devkitpro/libctru/include/3ds/services/csnd.h \
/opt/devkitpro/libctru/include/3ds/services/dsp.h \
/opt/devkitpro/libctru/include/3ds/services/fspxi.h \
/opt/devkitpro/libctru/include/3ds/services/fsreg.h \
/opt/devkitpro/libctru/include/3ds/services/frd.h \
/opt/devkitpro/libctru/include/3ds/mii.h \
/opt/devkitpro/libctru/include/3ds/services/gsplcd.h \
/opt/devkitpro/libctru/include/3ds/services/hid.h \
/opt/devkitpro/libctru/include/3ds/services/irrst.h \
/opt/devkitpro/libctru/include/3ds/services/sslc.h \
/opt/devkitpro/libctru/include/3ds/services/httpc.h \
/opt/devkitpro/libctru/include/3ds/services/uds.h \
/opt/devkitpro/libctru/include/3ds/services/ndm.h \
/opt/devkitpro/libctru/include/3ds/services/nim.h \
/opt/devkitpro/libctru/include/3ds/services/nwmext.h \
/opt/devkitpro/libctru/include/3ds/services/ir.h \
/opt/devkitpro/libctru/include/3ds/services/ns.h \
/opt/devkitpro/libctru/include/3ds/services/pmapp.h \
/opt/devkitpro/libctru/include/3ds/services/pmdbg.h \
/opt/devkitpro/libctru/include/3ds/services/ps.h \
/opt/devkitpro/libctru/include/3ds/services/ptmu.h \
/opt/devkitpro/libctru/include/3ds/services/ptmsysm.h \
/opt/devkitpro/libctru/include/3ds/services/ptmgets.h \
/opt/devkitpro/libctru/include/3ds/services/ptmsets.h \
/opt/devkitpro/libctru/include/3ds/services/pxidev.h \
/opt/devkitpro/libctru/include/3ds/services/pxipm.h \
/opt/devkitpro/libctru/include/3ds/services/soc.h \
/opt/devkitpro/libctru/include/netinet/in.h \
/opt/devkitpro/libctru/include/sys/socket.h \
/opt/devkitpro/libctru/include/3ds/services/mic.h \
/opt/devkitpro/libctru/include/3ds/services/mvd.h \
/opt/devkitpro/libctru/include/3ds/services/nfc.h \
/opt/devkitpro/libctru/include/3ds/services/news.h \
/opt/devkitpro/libctru/include/3ds/services/qtm.h \
/opt/devkitpro/libctru/include/3ds/services/srvpm.h \
/opt/devkitpro/libctru/include/3ds/services/loader.h \
/opt/devkitpro/libctru/include/3ds/services/mcuhwc.h \
/opt/devkitpro/libctru/include/3ds/services/cdcchk.h \
/opt/devkitpro/libctru/include/3ds/gpu/gx.h \
/opt/devkitpro/libctru/include/3ds/gpu/gpu.h \
/opt/devkitpro/libctru/include/3ds/gpu/registers.h \
/opt/devkitpro/libctru/include/3ds/gpu/enums.h \
/opt/devkitpro/libctru/include/3ds/gpu/shbin.h \
/opt/devkitpro/libctru/include/3ds/gpu/shaderProgram.h \
/opt/devkitpro/libctru/include/3ds/ndsp/ndsp.h \
/opt/devkitpro/libctru/include/3ds/ndsp/channel.h \
/opt/devkitpro/libctru/include/3ds/applets/swkbd.h \
/opt/devkitpro/libctru/include/3ds/applets/error.h \
/opt/devkitpro/libctru/include/3ds/applets/miiselector.h \
/opt/devkitpro/libctru/include/3ds/archive.h \
/opt/devkitpro/libctru/include/3ds/romfs.h \
/opt/devkitpro/libctru/include/3ds/font.h \
/opt/devkitpro/libctru/include/3ds/gdbhio_dev.h \
/opt/devkitpro/libctru/include/3ds/3dslink.h \
/home/user/3DSController/3DS/include/drawing.h
/opt/devkitpro/libctru/include/3ds.h:
/opt/devkitpro/libctru/include/3ds/types.h:
/opt/devkitpro/libctru/include/3ds/result.h:
/opt/devkitpro/libctru/include/3ds/ipc.h:
/opt/devkitpro/libctru/include/3ds/svc.h:
/opt/devkitpro/libctru/include/3ds/exheader.h:
/opt/devkitpro/libctru/include/3ds/srv.h:
/opt/devkitpro/libctru/include/3ds/errf.h:
/opt/devkitpro/libctru/include/3ds/os.h:
/opt/devkitpro/libctru/include/3ds/synchronization.h:
/opt/devkitpro/libctru/include/3ds/thread.h:
/opt/devkitpro/libctru/include/3ds/gfx.h:
/opt/devkitpro/libctru/include/3ds/services/gspgpu.h:
/opt/devkitpro/libctru/include/3ds/console.h:
/opt/devkitpro/libctru/include/3ds/env.h:
/opt/devkitpro/libctru/include/3ds/util/decompress.h:
/opt/devkitpro/libctru/include/3ds/util/utf.h:
/opt/devkitpro/libctru/include/3ds/allocator/linear.h:
/opt/devkitpro/libctru/include/3ds/allocator/mappable.h:
/opt/devkitpro/libctru/include/3ds/allocator/vram.h:
/opt/devkitpro/libctru/include/3ds/services/ac.h:
/opt/devkitpro/libctru/include/3ds/services/am.h:
/opt/devkitpro/libctru/include/3ds/services/fs.h:
/opt/devkitpro/libctru/include/3ds/services/ampxi.h:
/opt/devkitpro/libctru/include/3ds/services/apt.h:
/opt/devkitpro/libctru/include/3ds/services/boss.h:
/opt/devkitpro/libctru/include/3ds/services/cam.h:
/opt/devkitpro/libctru/include/3ds/services/y2r.h:
/opt/devkitpro/libctru/include/3ds/services/cfgnor.h:
/opt/devkitpro/libctru/include/3ds/services/cfgu.h:
/opt/devkitpro/libctru/include/3ds/services/csnd.h:
/opt/devkitpro/libctru/include/3ds/services/dsp.h:
/opt/devkitpro/libctru/include/3ds/services/fspxi.h:
/opt/devkitpro/libctru/include/3ds/services/fsreg.h:
/opt/devkitpro/libctru/include/3ds/services/frd.h:
/opt/devkitpro/libctru/include/3ds/mii.h:
/opt/devkitpro/libctru/include/3ds/services/gsplcd.h:
/opt/devkitpro/libctru/include/3ds/services/hid.h:
/opt/devkitpro/libctru/include/3ds/services/irrst.h:
/opt/devkitpro/libctru/include/3ds/services/sslc.h:
/opt/devkitpro/libctru/include/3ds/services/httpc.h:
/opt/devkitpro/libctru/include/3ds/services/uds.h:
/opt/devkitpro/libctru/include/3ds/services/ndm.h:
/opt/devkitpro/libctru/include/3ds/services/nim.h:
/opt/devkitpro/libctru/include/3ds/services/nwmext.h:
/opt/devkitpro/libctru/include/3ds/services/ir.h:
/opt/devkitpro/libctru/include/3ds/services/ns.h:
/opt/devkitpro/libctru/include/3ds/services/pmapp.h:
/opt/devkitpro/libctru/include/3ds/services/pmdbg.h:
/opt/devkitpro/libctru/include/3ds/services/ps.h:
/opt/devkitpro/libctru/include/3ds/services/ptmu.h:
/opt/devkitpro/libctru/include/3ds/services/ptmsysm.h:
/opt/devkitpro/libctru/include/3ds/services/ptmgets.h:
/opt/devkitpro/libctru/include/3ds/services/ptmsets.h:
/opt/devkitpro/libctru/include/3ds/services/pxidev.h:
/opt/devkitpro/libctru/include/3ds/services/pxipm.h:
/opt/devkitpro/libctru/include/3ds/services/soc.h:
/opt/devkitpro/libctru/include/netinet/in.h:
/opt/devkitpro/libctru/include/sys/socket.h:
/opt/devkitpro/libctru/include/3ds/services/mic.h:
/opt/devkitpro/libctru/include/3ds/services/mvd.h:
/opt/devkitpro/libctru/include/3ds/services/nfc.h:
/opt/devkitpro/libctru/include/3ds/services/news.h:
/opt/devkitpro/libctru/include/3ds/services/qtm.h:
/opt/devkitpro/libctru/include/3ds/services/srvpm.h:
/opt/devkitpro/libctru/include/3ds/services/loader.h:
/opt/devkitpro/libctru/include/3ds/services/mcuhwc.h:
/opt/devkitpro/libctru/include/3ds/services/cdcchk.h:
/opt/devkitpro/libctru/include/3ds/gpu/gx.h:
/opt/devkitpro/libctru/include/3ds/gpu/gpu.h:
/opt/devkitpro/libctru/include/3ds/gpu/registers.h:
/opt/devkitpro/libctru/include/3ds/gpu/enums.h:
/opt/devkitpro/libctru/include/3ds/gpu/shbin.h:
/opt/devkitpro/libctru/include/3ds/gpu/shaderProgram.h:
/opt/devkitpro/libctru/include/3ds/ndsp/ndsp.h:
/opt/devkitpro/libctru/include/3ds/ndsp/channel.h:
/opt/devkitpro/libctru/include/3ds/applets/swkbd.h:
/opt/devkitpro/libctru/include/3ds/applets/error.h:
/opt/devkitpro/libctru/include/3ds/applets/miiselector.h:
/opt/devkitpro/libctru/include/3ds/archive.h:
/opt/devkitpro/libctru/include/3ds/romfs.h:
/opt/devkitpro/libctru/include/3ds/font.h:
/opt/devkitpro/libctru/include/3ds/gdbhio_dev.h:
/opt/devkitpro/libctru/include/3ds/3dslink.h:
/home/user/3DSController/3DS/include/drawing.h:

BIN
3DSsource/build/drawing.o Normal file

Binary file not shown.

177
3DSsource/build/inet_pton.d Normal file
View File

@ -0,0 +1,177 @@
inet_pton.o: /home/user/3DSController/3DS/source/inet_pton.c \
/home/user/3DSController/3DS/include/wireless.h \
/opt/devkitpro/libctru/include/3ds.h \
/opt/devkitpro/libctru/include/3ds/types.h \
/opt/devkitpro/libctru/include/3ds/result.h \
/opt/devkitpro/libctru/include/3ds/ipc.h \
/opt/devkitpro/libctru/include/3ds/svc.h \
/opt/devkitpro/libctru/include/3ds/exheader.h \
/opt/devkitpro/libctru/include/3ds/srv.h \
/opt/devkitpro/libctru/include/3ds/errf.h \
/opt/devkitpro/libctru/include/3ds/os.h \
/opt/devkitpro/libctru/include/3ds/synchronization.h \
/opt/devkitpro/libctru/include/3ds/thread.h \
/opt/devkitpro/libctru/include/3ds/gfx.h \
/opt/devkitpro/libctru/include/3ds/services/gspgpu.h \
/opt/devkitpro/libctru/include/3ds/console.h \
/opt/devkitpro/libctru/include/3ds/env.h \
/opt/devkitpro/libctru/include/3ds/util/decompress.h \
/opt/devkitpro/libctru/include/3ds/util/utf.h \
/opt/devkitpro/libctru/include/3ds/allocator/linear.h \
/opt/devkitpro/libctru/include/3ds/allocator/mappable.h \
/opt/devkitpro/libctru/include/3ds/allocator/vram.h \
/opt/devkitpro/libctru/include/3ds/services/ac.h \
/opt/devkitpro/libctru/include/3ds/services/am.h \
/opt/devkitpro/libctru/include/3ds/services/fs.h \
/opt/devkitpro/libctru/include/3ds/services/ampxi.h \
/opt/devkitpro/libctru/include/3ds/services/apt.h \
/opt/devkitpro/libctru/include/3ds/services/boss.h \
/opt/devkitpro/libctru/include/3ds/services/cam.h \
/opt/devkitpro/libctru/include/3ds/services/y2r.h \
/opt/devkitpro/libctru/include/3ds/services/cfgnor.h \
/opt/devkitpro/libctru/include/3ds/services/cfgu.h \
/opt/devkitpro/libctru/include/3ds/services/csnd.h \
/opt/devkitpro/libctru/include/3ds/services/dsp.h \
/opt/devkitpro/libctru/include/3ds/services/fspxi.h \
/opt/devkitpro/libctru/include/3ds/services/fsreg.h \
/opt/devkitpro/libctru/include/3ds/services/frd.h \
/opt/devkitpro/libctru/include/3ds/mii.h \
/opt/devkitpro/libctru/include/3ds/services/gsplcd.h \
/opt/devkitpro/libctru/include/3ds/services/hid.h \
/opt/devkitpro/libctru/include/3ds/services/irrst.h \
/opt/devkitpro/libctru/include/3ds/services/sslc.h \
/opt/devkitpro/libctru/include/3ds/services/httpc.h \
/opt/devkitpro/libctru/include/3ds/services/uds.h \
/opt/devkitpro/libctru/include/3ds/services/ndm.h \
/opt/devkitpro/libctru/include/3ds/services/nim.h \
/opt/devkitpro/libctru/include/3ds/services/nwmext.h \
/opt/devkitpro/libctru/include/3ds/services/ir.h \
/opt/devkitpro/libctru/include/3ds/services/ns.h \
/opt/devkitpro/libctru/include/3ds/services/pmapp.h \
/opt/devkitpro/libctru/include/3ds/services/pmdbg.h \
/opt/devkitpro/libctru/include/3ds/services/ps.h \
/opt/devkitpro/libctru/include/3ds/services/ptmu.h \
/opt/devkitpro/libctru/include/3ds/services/ptmsysm.h \
/opt/devkitpro/libctru/include/3ds/services/ptmgets.h \
/opt/devkitpro/libctru/include/3ds/services/ptmsets.h \
/opt/devkitpro/libctru/include/3ds/services/pxidev.h \
/opt/devkitpro/libctru/include/3ds/services/pxipm.h \
/opt/devkitpro/libctru/include/3ds/services/soc.h \
/opt/devkitpro/libctru/include/netinet/in.h \
/opt/devkitpro/libctru/include/sys/socket.h \
/opt/devkitpro/libctru/include/3ds/services/mic.h \
/opt/devkitpro/libctru/include/3ds/services/mvd.h \
/opt/devkitpro/libctru/include/3ds/services/nfc.h \
/opt/devkitpro/libctru/include/3ds/services/news.h \
/opt/devkitpro/libctru/include/3ds/services/qtm.h \
/opt/devkitpro/libctru/include/3ds/services/srvpm.h \
/opt/devkitpro/libctru/include/3ds/services/loader.h \
/opt/devkitpro/libctru/include/3ds/services/mcuhwc.h \
/opt/devkitpro/libctru/include/3ds/services/cdcchk.h \
/opt/devkitpro/libctru/include/3ds/gpu/gx.h \
/opt/devkitpro/libctru/include/3ds/gpu/gpu.h \
/opt/devkitpro/libctru/include/3ds/gpu/registers.h \
/opt/devkitpro/libctru/include/3ds/gpu/enums.h \
/opt/devkitpro/libctru/include/3ds/gpu/shbin.h \
/opt/devkitpro/libctru/include/3ds/gpu/shaderProgram.h \
/opt/devkitpro/libctru/include/3ds/ndsp/ndsp.h \
/opt/devkitpro/libctru/include/3ds/ndsp/channel.h \
/opt/devkitpro/libctru/include/3ds/applets/swkbd.h \
/opt/devkitpro/libctru/include/3ds/applets/error.h \
/opt/devkitpro/libctru/include/3ds/applets/miiselector.h \
/opt/devkitpro/libctru/include/3ds/archive.h \
/opt/devkitpro/libctru/include/3ds/romfs.h \
/opt/devkitpro/libctru/include/3ds/font.h \
/opt/devkitpro/libctru/include/3ds/gdbhio_dev.h \
/opt/devkitpro/libctru/include/3ds/3dslink.h \
/opt/devkitpro/libctru/include/netdb.h \
/opt/devkitpro/libctru/include/arpa/inet.h \
/home/user/3DSController/3DS/include/inet_pton.h
/home/user/3DSController/3DS/include/wireless.h:
/opt/devkitpro/libctru/include/3ds.h:
/opt/devkitpro/libctru/include/3ds/types.h:
/opt/devkitpro/libctru/include/3ds/result.h:
/opt/devkitpro/libctru/include/3ds/ipc.h:
/opt/devkitpro/libctru/include/3ds/svc.h:
/opt/devkitpro/libctru/include/3ds/exheader.h:
/opt/devkitpro/libctru/include/3ds/srv.h:
/opt/devkitpro/libctru/include/3ds/errf.h:
/opt/devkitpro/libctru/include/3ds/os.h:
/opt/devkitpro/libctru/include/3ds/synchronization.h:
/opt/devkitpro/libctru/include/3ds/thread.h:
/opt/devkitpro/libctru/include/3ds/gfx.h:
/opt/devkitpro/libctru/include/3ds/services/gspgpu.h:
/opt/devkitpro/libctru/include/3ds/console.h:
/opt/devkitpro/libctru/include/3ds/env.h:
/opt/devkitpro/libctru/include/3ds/util/decompress.h:
/opt/devkitpro/libctru/include/3ds/util/utf.h:
/opt/devkitpro/libctru/include/3ds/allocator/linear.h:
/opt/devkitpro/libctru/include/3ds/allocator/mappable.h:
/opt/devkitpro/libctru/include/3ds/allocator/vram.h:
/opt/devkitpro/libctru/include/3ds/services/ac.h:
/opt/devkitpro/libctru/include/3ds/services/am.h:
/opt/devkitpro/libctru/include/3ds/services/fs.h:
/opt/devkitpro/libctru/include/3ds/services/ampxi.h:
/opt/devkitpro/libctru/include/3ds/services/apt.h:
/opt/devkitpro/libctru/include/3ds/services/boss.h:
/opt/devkitpro/libctru/include/3ds/services/cam.h:
/opt/devkitpro/libctru/include/3ds/services/y2r.h:
/opt/devkitpro/libctru/include/3ds/services/cfgnor.h:
/opt/devkitpro/libctru/include/3ds/services/cfgu.h:
/opt/devkitpro/libctru/include/3ds/services/csnd.h:
/opt/devkitpro/libctru/include/3ds/services/dsp.h:
/opt/devkitpro/libctru/include/3ds/services/fspxi.h:
/opt/devkitpro/libctru/include/3ds/services/fsreg.h:
/opt/devkitpro/libctru/include/3ds/services/frd.h:
/opt/devkitpro/libctru/include/3ds/mii.h:
/opt/devkitpro/libctru/include/3ds/services/gsplcd.h:
/opt/devkitpro/libctru/include/3ds/services/hid.h:
/opt/devkitpro/libctru/include/3ds/services/irrst.h:
/opt/devkitpro/libctru/include/3ds/services/sslc.h:
/opt/devkitpro/libctru/include/3ds/services/httpc.h:
/opt/devkitpro/libctru/include/3ds/services/uds.h:
/opt/devkitpro/libctru/include/3ds/services/ndm.h:
/opt/devkitpro/libctru/include/3ds/services/nim.h:
/opt/devkitpro/libctru/include/3ds/services/nwmext.h:
/opt/devkitpro/libctru/include/3ds/services/ir.h:
/opt/devkitpro/libctru/include/3ds/services/ns.h:
/opt/devkitpro/libctru/include/3ds/services/pmapp.h:
/opt/devkitpro/libctru/include/3ds/services/pmdbg.h:
/opt/devkitpro/libctru/include/3ds/services/ps.h:
/opt/devkitpro/libctru/include/3ds/services/ptmu.h:
/opt/devkitpro/libctru/include/3ds/services/ptmsysm.h:
/opt/devkitpro/libctru/include/3ds/services/ptmgets.h:
/opt/devkitpro/libctru/include/3ds/services/ptmsets.h:
/opt/devkitpro/libctru/include/3ds/services/pxidev.h:
/opt/devkitpro/libctru/include/3ds/services/pxipm.h:
/opt/devkitpro/libctru/include/3ds/services/soc.h:
/opt/devkitpro/libctru/include/netinet/in.h:
/opt/devkitpro/libctru/include/sys/socket.h:
/opt/devkitpro/libctru/include/3ds/services/mic.h:
/opt/devkitpro/libctru/include/3ds/services/mvd.h:
/opt/devkitpro/libctru/include/3ds/services/nfc.h:
/opt/devkitpro/libctru/include/3ds/services/news.h:
/opt/devkitpro/libctru/include/3ds/services/qtm.h:
/opt/devkitpro/libctru/include/3ds/services/srvpm.h:
/opt/devkitpro/libctru/include/3ds/services/loader.h:
/opt/devkitpro/libctru/include/3ds/services/mcuhwc.h:
/opt/devkitpro/libctru/include/3ds/services/cdcchk.h:
/opt/devkitpro/libctru/include/3ds/gpu/gx.h:
/opt/devkitpro/libctru/include/3ds/gpu/gpu.h:
/opt/devkitpro/libctru/include/3ds/gpu/registers.h:
/opt/devkitpro/libctru/include/3ds/gpu/enums.h:
/opt/devkitpro/libctru/include/3ds/gpu/shbin.h:
/opt/devkitpro/libctru/include/3ds/gpu/shaderProgram.h:
/opt/devkitpro/libctru/include/3ds/ndsp/ndsp.h:
/opt/devkitpro/libctru/include/3ds/ndsp/channel.h:
/opt/devkitpro/libctru/include/3ds/applets/swkbd.h:
/opt/devkitpro/libctru/include/3ds/applets/error.h:
/opt/devkitpro/libctru/include/3ds/applets/miiselector.h:
/opt/devkitpro/libctru/include/3ds/archive.h:
/opt/devkitpro/libctru/include/3ds/romfs.h:
/opt/devkitpro/libctru/include/3ds/font.h:
/opt/devkitpro/libctru/include/3ds/gdbhio_dev.h:
/opt/devkitpro/libctru/include/3ds/3dslink.h:
/opt/devkitpro/libctru/include/netdb.h:
/opt/devkitpro/libctru/include/arpa/inet.h:
/home/user/3DSController/3DS/include/inet_pton.h:

BIN
3DSsource/build/inet_pton.o Normal file

Binary file not shown.

173
3DSsource/build/input.d Normal file
View File

@ -0,0 +1,173 @@
input.o: /home/user/3DSController/3DS/source/input.c \
/opt/devkitpro/libctru/include/3ds.h \
/opt/devkitpro/libctru/include/3ds/types.h \
/opt/devkitpro/libctru/include/3ds/result.h \
/opt/devkitpro/libctru/include/3ds/ipc.h \
/opt/devkitpro/libctru/include/3ds/svc.h \
/opt/devkitpro/libctru/include/3ds/exheader.h \
/opt/devkitpro/libctru/include/3ds/srv.h \
/opt/devkitpro/libctru/include/3ds/errf.h \
/opt/devkitpro/libctru/include/3ds/os.h \
/opt/devkitpro/libctru/include/3ds/synchronization.h \
/opt/devkitpro/libctru/include/3ds/thread.h \
/opt/devkitpro/libctru/include/3ds/gfx.h \
/opt/devkitpro/libctru/include/3ds/services/gspgpu.h \
/opt/devkitpro/libctru/include/3ds/console.h \
/opt/devkitpro/libctru/include/3ds/env.h \
/opt/devkitpro/libctru/include/3ds/util/decompress.h \
/opt/devkitpro/libctru/include/3ds/util/utf.h \
/opt/devkitpro/libctru/include/3ds/allocator/linear.h \
/opt/devkitpro/libctru/include/3ds/allocator/mappable.h \
/opt/devkitpro/libctru/include/3ds/allocator/vram.h \
/opt/devkitpro/libctru/include/3ds/services/ac.h \
/opt/devkitpro/libctru/include/3ds/services/am.h \
/opt/devkitpro/libctru/include/3ds/services/fs.h \
/opt/devkitpro/libctru/include/3ds/services/ampxi.h \
/opt/devkitpro/libctru/include/3ds/services/apt.h \
/opt/devkitpro/libctru/include/3ds/services/boss.h \
/opt/devkitpro/libctru/include/3ds/services/cam.h \
/opt/devkitpro/libctru/include/3ds/services/y2r.h \
/opt/devkitpro/libctru/include/3ds/services/cfgnor.h \
/opt/devkitpro/libctru/include/3ds/services/cfgu.h \
/opt/devkitpro/libctru/include/3ds/services/csnd.h \
/opt/devkitpro/libctru/include/3ds/services/dsp.h \
/opt/devkitpro/libctru/include/3ds/services/fspxi.h \
/opt/devkitpro/libctru/include/3ds/services/fsreg.h \
/opt/devkitpro/libctru/include/3ds/services/frd.h \
/opt/devkitpro/libctru/include/3ds/mii.h \
/opt/devkitpro/libctru/include/3ds/services/gsplcd.h \
/opt/devkitpro/libctru/include/3ds/services/hid.h \
/opt/devkitpro/libctru/include/3ds/services/irrst.h \
/opt/devkitpro/libctru/include/3ds/services/sslc.h \
/opt/devkitpro/libctru/include/3ds/services/httpc.h \
/opt/devkitpro/libctru/include/3ds/services/uds.h \
/opt/devkitpro/libctru/include/3ds/services/ndm.h \
/opt/devkitpro/libctru/include/3ds/services/nim.h \
/opt/devkitpro/libctru/include/3ds/services/nwmext.h \
/opt/devkitpro/libctru/include/3ds/services/ir.h \
/opt/devkitpro/libctru/include/3ds/services/ns.h \
/opt/devkitpro/libctru/include/3ds/services/pmapp.h \
/opt/devkitpro/libctru/include/3ds/services/pmdbg.h \
/opt/devkitpro/libctru/include/3ds/services/ps.h \
/opt/devkitpro/libctru/include/3ds/services/ptmu.h \
/opt/devkitpro/libctru/include/3ds/services/ptmsysm.h \
/opt/devkitpro/libctru/include/3ds/services/ptmgets.h \
/opt/devkitpro/libctru/include/3ds/services/ptmsets.h \
/opt/devkitpro/libctru/include/3ds/services/pxidev.h \
/opt/devkitpro/libctru/include/3ds/services/pxipm.h \
/opt/devkitpro/libctru/include/3ds/services/soc.h \
/opt/devkitpro/libctru/include/netinet/in.h \
/opt/devkitpro/libctru/include/sys/socket.h \
/opt/devkitpro/libctru/include/3ds/services/mic.h \
/opt/devkitpro/libctru/include/3ds/services/mvd.h \
/opt/devkitpro/libctru/include/3ds/services/nfc.h \
/opt/devkitpro/libctru/include/3ds/services/news.h \
/opt/devkitpro/libctru/include/3ds/services/qtm.h \
/opt/devkitpro/libctru/include/3ds/services/srvpm.h \
/opt/devkitpro/libctru/include/3ds/services/loader.h \
/opt/devkitpro/libctru/include/3ds/services/mcuhwc.h \
/opt/devkitpro/libctru/include/3ds/services/cdcchk.h \
/opt/devkitpro/libctru/include/3ds/gpu/gx.h \
/opt/devkitpro/libctru/include/3ds/gpu/gpu.h \
/opt/devkitpro/libctru/include/3ds/gpu/registers.h \
/opt/devkitpro/libctru/include/3ds/gpu/enums.h \
/opt/devkitpro/libctru/include/3ds/gpu/shbin.h \
/opt/devkitpro/libctru/include/3ds/gpu/shaderProgram.h \
/opt/devkitpro/libctru/include/3ds/ndsp/ndsp.h \
/opt/devkitpro/libctru/include/3ds/ndsp/channel.h \
/opt/devkitpro/libctru/include/3ds/applets/swkbd.h \
/opt/devkitpro/libctru/include/3ds/applets/error.h \
/opt/devkitpro/libctru/include/3ds/applets/miiselector.h \
/opt/devkitpro/libctru/include/3ds/archive.h \
/opt/devkitpro/libctru/include/3ds/romfs.h \
/opt/devkitpro/libctru/include/3ds/font.h \
/opt/devkitpro/libctru/include/3ds/gdbhio_dev.h \
/opt/devkitpro/libctru/include/3ds/3dslink.h \
/home/user/3DSController/3DS/include/drawing.h \
/home/user/3DSController/3DS/include/input.h
/opt/devkitpro/libctru/include/3ds.h:
/opt/devkitpro/libctru/include/3ds/types.h:
/opt/devkitpro/libctru/include/3ds/result.h:
/opt/devkitpro/libctru/include/3ds/ipc.h:
/opt/devkitpro/libctru/include/3ds/svc.h:
/opt/devkitpro/libctru/include/3ds/exheader.h:
/opt/devkitpro/libctru/include/3ds/srv.h:
/opt/devkitpro/libctru/include/3ds/errf.h:
/opt/devkitpro/libctru/include/3ds/os.h:
/opt/devkitpro/libctru/include/3ds/synchronization.h:
/opt/devkitpro/libctru/include/3ds/thread.h:
/opt/devkitpro/libctru/include/3ds/gfx.h:
/opt/devkitpro/libctru/include/3ds/services/gspgpu.h:
/opt/devkitpro/libctru/include/3ds/console.h:
/opt/devkitpro/libctru/include/3ds/env.h:
/opt/devkitpro/libctru/include/3ds/util/decompress.h:
/opt/devkitpro/libctru/include/3ds/util/utf.h:
/opt/devkitpro/libctru/include/3ds/allocator/linear.h:
/opt/devkitpro/libctru/include/3ds/allocator/mappable.h:
/opt/devkitpro/libctru/include/3ds/allocator/vram.h:
/opt/devkitpro/libctru/include/3ds/services/ac.h:
/opt/devkitpro/libctru/include/3ds/services/am.h:
/opt/devkitpro/libctru/include/3ds/services/fs.h:
/opt/devkitpro/libctru/include/3ds/services/ampxi.h:
/opt/devkitpro/libctru/include/3ds/services/apt.h:
/opt/devkitpro/libctru/include/3ds/services/boss.h:
/opt/devkitpro/libctru/include/3ds/services/cam.h:
/opt/devkitpro/libctru/include/3ds/services/y2r.h:
/opt/devkitpro/libctru/include/3ds/services/cfgnor.h:
/opt/devkitpro/libctru/include/3ds/services/cfgu.h:
/opt/devkitpro/libctru/include/3ds/services/csnd.h:
/opt/devkitpro/libctru/include/3ds/services/dsp.h:
/opt/devkitpro/libctru/include/3ds/services/fspxi.h:
/opt/devkitpro/libctru/include/3ds/services/fsreg.h:
/opt/devkitpro/libctru/include/3ds/services/frd.h:
/opt/devkitpro/libctru/include/3ds/mii.h:
/opt/devkitpro/libctru/include/3ds/services/gsplcd.h:
/opt/devkitpro/libctru/include/3ds/services/hid.h:
/opt/devkitpro/libctru/include/3ds/services/irrst.h:
/opt/devkitpro/libctru/include/3ds/services/sslc.h:
/opt/devkitpro/libctru/include/3ds/services/httpc.h:
/opt/devkitpro/libctru/include/3ds/services/uds.h:
/opt/devkitpro/libctru/include/3ds/services/ndm.h:
/opt/devkitpro/libctru/include/3ds/services/nim.h:
/opt/devkitpro/libctru/include/3ds/services/nwmext.h:
/opt/devkitpro/libctru/include/3ds/services/ir.h:
/opt/devkitpro/libctru/include/3ds/services/ns.h:
/opt/devkitpro/libctru/include/3ds/services/pmapp.h:
/opt/devkitpro/libctru/include/3ds/services/pmdbg.h:
/opt/devkitpro/libctru/include/3ds/services/ps.h:
/opt/devkitpro/libctru/include/3ds/services/ptmu.h:
/opt/devkitpro/libctru/include/3ds/services/ptmsysm.h:
/opt/devkitpro/libctru/include/3ds/services/ptmgets.h:
/opt/devkitpro/libctru/include/3ds/services/ptmsets.h:
/opt/devkitpro/libctru/include/3ds/services/pxidev.h:
/opt/devkitpro/libctru/include/3ds/services/pxipm.h:
/opt/devkitpro/libctru/include/3ds/services/soc.h:
/opt/devkitpro/libctru/include/netinet/in.h:
/opt/devkitpro/libctru/include/sys/socket.h:
/opt/devkitpro/libctru/include/3ds/services/mic.h:
/opt/devkitpro/libctru/include/3ds/services/mvd.h:
/opt/devkitpro/libctru/include/3ds/services/nfc.h:
/opt/devkitpro/libctru/include/3ds/services/news.h:
/opt/devkitpro/libctru/include/3ds/services/qtm.h:
/opt/devkitpro/libctru/include/3ds/services/srvpm.h:
/opt/devkitpro/libctru/include/3ds/services/loader.h:
/opt/devkitpro/libctru/include/3ds/services/mcuhwc.h:
/opt/devkitpro/libctru/include/3ds/services/cdcchk.h:
/opt/devkitpro/libctru/include/3ds/gpu/gx.h:
/opt/devkitpro/libctru/include/3ds/gpu/gpu.h:
/opt/devkitpro/libctru/include/3ds/gpu/registers.h:
/opt/devkitpro/libctru/include/3ds/gpu/enums.h:
/opt/devkitpro/libctru/include/3ds/gpu/shbin.h:
/opt/devkitpro/libctru/include/3ds/gpu/shaderProgram.h:
/opt/devkitpro/libctru/include/3ds/ndsp/ndsp.h:
/opt/devkitpro/libctru/include/3ds/ndsp/channel.h:
/opt/devkitpro/libctru/include/3ds/applets/swkbd.h:
/opt/devkitpro/libctru/include/3ds/applets/error.h:
/opt/devkitpro/libctru/include/3ds/applets/miiselector.h:
/opt/devkitpro/libctru/include/3ds/archive.h:
/opt/devkitpro/libctru/include/3ds/romfs.h:
/opt/devkitpro/libctru/include/3ds/font.h:
/opt/devkitpro/libctru/include/3ds/gdbhio_dev.h:
/opt/devkitpro/libctru/include/3ds/3dslink.h:
/home/user/3DSController/3DS/include/drawing.h:
/home/user/3DSController/3DS/include/input.h:

BIN
3DSsource/build/input.o Normal file

Binary file not shown.

173
3DSsource/build/keyboard.d Normal file
View File

@ -0,0 +1,173 @@
keyboard.o: /home/user/3DSController/3DS/source/keyboard.c \
/opt/devkitpro/libctru/include/3ds.h \
/opt/devkitpro/libctru/include/3ds/types.h \
/opt/devkitpro/libctru/include/3ds/result.h \
/opt/devkitpro/libctru/include/3ds/ipc.h \
/opt/devkitpro/libctru/include/3ds/svc.h \
/opt/devkitpro/libctru/include/3ds/exheader.h \
/opt/devkitpro/libctru/include/3ds/srv.h \
/opt/devkitpro/libctru/include/3ds/errf.h \
/opt/devkitpro/libctru/include/3ds/os.h \
/opt/devkitpro/libctru/include/3ds/synchronization.h \
/opt/devkitpro/libctru/include/3ds/thread.h \
/opt/devkitpro/libctru/include/3ds/gfx.h \
/opt/devkitpro/libctru/include/3ds/services/gspgpu.h \
/opt/devkitpro/libctru/include/3ds/console.h \
/opt/devkitpro/libctru/include/3ds/env.h \
/opt/devkitpro/libctru/include/3ds/util/decompress.h \
/opt/devkitpro/libctru/include/3ds/util/utf.h \
/opt/devkitpro/libctru/include/3ds/allocator/linear.h \
/opt/devkitpro/libctru/include/3ds/allocator/mappable.h \
/opt/devkitpro/libctru/include/3ds/allocator/vram.h \
/opt/devkitpro/libctru/include/3ds/services/ac.h \
/opt/devkitpro/libctru/include/3ds/services/am.h \
/opt/devkitpro/libctru/include/3ds/services/fs.h \
/opt/devkitpro/libctru/include/3ds/services/ampxi.h \
/opt/devkitpro/libctru/include/3ds/services/apt.h \
/opt/devkitpro/libctru/include/3ds/services/boss.h \
/opt/devkitpro/libctru/include/3ds/services/cam.h \
/opt/devkitpro/libctru/include/3ds/services/y2r.h \
/opt/devkitpro/libctru/include/3ds/services/cfgnor.h \
/opt/devkitpro/libctru/include/3ds/services/cfgu.h \
/opt/devkitpro/libctru/include/3ds/services/csnd.h \
/opt/devkitpro/libctru/include/3ds/services/dsp.h \
/opt/devkitpro/libctru/include/3ds/services/fspxi.h \
/opt/devkitpro/libctru/include/3ds/services/fsreg.h \
/opt/devkitpro/libctru/include/3ds/services/frd.h \
/opt/devkitpro/libctru/include/3ds/mii.h \
/opt/devkitpro/libctru/include/3ds/services/gsplcd.h \
/opt/devkitpro/libctru/include/3ds/services/hid.h \
/opt/devkitpro/libctru/include/3ds/services/irrst.h \
/opt/devkitpro/libctru/include/3ds/services/sslc.h \
/opt/devkitpro/libctru/include/3ds/services/httpc.h \
/opt/devkitpro/libctru/include/3ds/services/uds.h \
/opt/devkitpro/libctru/include/3ds/services/ndm.h \
/opt/devkitpro/libctru/include/3ds/services/nim.h \
/opt/devkitpro/libctru/include/3ds/services/nwmext.h \
/opt/devkitpro/libctru/include/3ds/services/ir.h \
/opt/devkitpro/libctru/include/3ds/services/ns.h \
/opt/devkitpro/libctru/include/3ds/services/pmapp.h \
/opt/devkitpro/libctru/include/3ds/services/pmdbg.h \
/opt/devkitpro/libctru/include/3ds/services/ps.h \
/opt/devkitpro/libctru/include/3ds/services/ptmu.h \
/opt/devkitpro/libctru/include/3ds/services/ptmsysm.h \
/opt/devkitpro/libctru/include/3ds/services/ptmgets.h \
/opt/devkitpro/libctru/include/3ds/services/ptmsets.h \
/opt/devkitpro/libctru/include/3ds/services/pxidev.h \
/opt/devkitpro/libctru/include/3ds/services/pxipm.h \
/opt/devkitpro/libctru/include/3ds/services/soc.h \
/opt/devkitpro/libctru/include/netinet/in.h \
/opt/devkitpro/libctru/include/sys/socket.h \
/opt/devkitpro/libctru/include/3ds/services/mic.h \
/opt/devkitpro/libctru/include/3ds/services/mvd.h \
/opt/devkitpro/libctru/include/3ds/services/nfc.h \
/opt/devkitpro/libctru/include/3ds/services/news.h \
/opt/devkitpro/libctru/include/3ds/services/qtm.h \
/opt/devkitpro/libctru/include/3ds/services/srvpm.h \
/opt/devkitpro/libctru/include/3ds/services/loader.h \
/opt/devkitpro/libctru/include/3ds/services/mcuhwc.h \
/opt/devkitpro/libctru/include/3ds/services/cdcchk.h \
/opt/devkitpro/libctru/include/3ds/gpu/gx.h \
/opt/devkitpro/libctru/include/3ds/gpu/gpu.h \
/opt/devkitpro/libctru/include/3ds/gpu/registers.h \
/opt/devkitpro/libctru/include/3ds/gpu/enums.h \
/opt/devkitpro/libctru/include/3ds/gpu/shbin.h \
/opt/devkitpro/libctru/include/3ds/gpu/shaderProgram.h \
/opt/devkitpro/libctru/include/3ds/ndsp/ndsp.h \
/opt/devkitpro/libctru/include/3ds/ndsp/channel.h \
/opt/devkitpro/libctru/include/3ds/applets/swkbd.h \
/opt/devkitpro/libctru/include/3ds/applets/error.h \
/opt/devkitpro/libctru/include/3ds/applets/miiselector.h \
/opt/devkitpro/libctru/include/3ds/archive.h \
/opt/devkitpro/libctru/include/3ds/romfs.h \
/opt/devkitpro/libctru/include/3ds/font.h \
/opt/devkitpro/libctru/include/3ds/gdbhio_dev.h \
/opt/devkitpro/libctru/include/3ds/3dslink.h \
/home/user/3DSController/3DS/include/drawing.h \
/home/user/3DSController/3DS/include/keyboard.h
/opt/devkitpro/libctru/include/3ds.h:
/opt/devkitpro/libctru/include/3ds/types.h:
/opt/devkitpro/libctru/include/3ds/result.h:
/opt/devkitpro/libctru/include/3ds/ipc.h:
/opt/devkitpro/libctru/include/3ds/svc.h:
/opt/devkitpro/libctru/include/3ds/exheader.h:
/opt/devkitpro/libctru/include/3ds/srv.h:
/opt/devkitpro/libctru/include/3ds/errf.h:
/opt/devkitpro/libctru/include/3ds/os.h:
/opt/devkitpro/libctru/include/3ds/synchronization.h:
/opt/devkitpro/libctru/include/3ds/thread.h:
/opt/devkitpro/libctru/include/3ds/gfx.h:
/opt/devkitpro/libctru/include/3ds/services/gspgpu.h:
/opt/devkitpro/libctru/include/3ds/console.h:
/opt/devkitpro/libctru/include/3ds/env.h:
/opt/devkitpro/libctru/include/3ds/util/decompress.h:
/opt/devkitpro/libctru/include/3ds/util/utf.h:
/opt/devkitpro/libctru/include/3ds/allocator/linear.h:
/opt/devkitpro/libctru/include/3ds/allocator/mappable.h:
/opt/devkitpro/libctru/include/3ds/allocator/vram.h:
/opt/devkitpro/libctru/include/3ds/services/ac.h:
/opt/devkitpro/libctru/include/3ds/services/am.h:
/opt/devkitpro/libctru/include/3ds/services/fs.h:
/opt/devkitpro/libctru/include/3ds/services/ampxi.h:
/opt/devkitpro/libctru/include/3ds/services/apt.h:
/opt/devkitpro/libctru/include/3ds/services/boss.h:
/opt/devkitpro/libctru/include/3ds/services/cam.h:
/opt/devkitpro/libctru/include/3ds/services/y2r.h:
/opt/devkitpro/libctru/include/3ds/services/cfgnor.h:
/opt/devkitpro/libctru/include/3ds/services/cfgu.h:
/opt/devkitpro/libctru/include/3ds/services/csnd.h:
/opt/devkitpro/libctru/include/3ds/services/dsp.h:
/opt/devkitpro/libctru/include/3ds/services/fspxi.h:
/opt/devkitpro/libctru/include/3ds/services/fsreg.h:
/opt/devkitpro/libctru/include/3ds/services/frd.h:
/opt/devkitpro/libctru/include/3ds/mii.h:
/opt/devkitpro/libctru/include/3ds/services/gsplcd.h:
/opt/devkitpro/libctru/include/3ds/services/hid.h:
/opt/devkitpro/libctru/include/3ds/services/irrst.h:
/opt/devkitpro/libctru/include/3ds/services/sslc.h:
/opt/devkitpro/libctru/include/3ds/services/httpc.h:
/opt/devkitpro/libctru/include/3ds/services/uds.h:
/opt/devkitpro/libctru/include/3ds/services/ndm.h:
/opt/devkitpro/libctru/include/3ds/services/nim.h:
/opt/devkitpro/libctru/include/3ds/services/nwmext.h:
/opt/devkitpro/libctru/include/3ds/services/ir.h:
/opt/devkitpro/libctru/include/3ds/services/ns.h:
/opt/devkitpro/libctru/include/3ds/services/pmapp.h:
/opt/devkitpro/libctru/include/3ds/services/pmdbg.h:
/opt/devkitpro/libctru/include/3ds/services/ps.h:
/opt/devkitpro/libctru/include/3ds/services/ptmu.h:
/opt/devkitpro/libctru/include/3ds/services/ptmsysm.h:
/opt/devkitpro/libctru/include/3ds/services/ptmgets.h:
/opt/devkitpro/libctru/include/3ds/services/ptmsets.h:
/opt/devkitpro/libctru/include/3ds/services/pxidev.h:
/opt/devkitpro/libctru/include/3ds/services/pxipm.h:
/opt/devkitpro/libctru/include/3ds/services/soc.h:
/opt/devkitpro/libctru/include/netinet/in.h:
/opt/devkitpro/libctru/include/sys/socket.h:
/opt/devkitpro/libctru/include/3ds/services/mic.h:
/opt/devkitpro/libctru/include/3ds/services/mvd.h:
/opt/devkitpro/libctru/include/3ds/services/nfc.h:
/opt/devkitpro/libctru/include/3ds/services/news.h:
/opt/devkitpro/libctru/include/3ds/services/qtm.h:
/opt/devkitpro/libctru/include/3ds/services/srvpm.h:
/opt/devkitpro/libctru/include/3ds/services/loader.h:
/opt/devkitpro/libctru/include/3ds/services/mcuhwc.h:
/opt/devkitpro/libctru/include/3ds/services/cdcchk.h:
/opt/devkitpro/libctru/include/3ds/gpu/gx.h:
/opt/devkitpro/libctru/include/3ds/gpu/gpu.h:
/opt/devkitpro/libctru/include/3ds/gpu/registers.h:
/opt/devkitpro/libctru/include/3ds/gpu/enums.h:
/opt/devkitpro/libctru/include/3ds/gpu/shbin.h:
/opt/devkitpro/libctru/include/3ds/gpu/shaderProgram.h:
/opt/devkitpro/libctru/include/3ds/ndsp/ndsp.h:
/opt/devkitpro/libctru/include/3ds/ndsp/channel.h:
/opt/devkitpro/libctru/include/3ds/applets/swkbd.h:
/opt/devkitpro/libctru/include/3ds/applets/error.h:
/opt/devkitpro/libctru/include/3ds/applets/miiselector.h:
/opt/devkitpro/libctru/include/3ds/archive.h:
/opt/devkitpro/libctru/include/3ds/romfs.h:
/opt/devkitpro/libctru/include/3ds/font.h:
/opt/devkitpro/libctru/include/3ds/gdbhio_dev.h:
/opt/devkitpro/libctru/include/3ds/3dslink.h:
/home/user/3DSController/3DS/include/drawing.h:
/home/user/3DSController/3DS/include/keyboard.h:

BIN
3DSsource/build/keyboard.o Normal file

Binary file not shown.

185
3DSsource/build/main.d Normal file
View File

@ -0,0 +1,185 @@
main.o: /home/user/3DSController/3DS/source/main.c \
/opt/devkitpro/libctru/include/3ds.h \
/opt/devkitpro/libctru/include/3ds/types.h \
/opt/devkitpro/libctru/include/3ds/result.h \
/opt/devkitpro/libctru/include/3ds/ipc.h \
/opt/devkitpro/libctru/include/3ds/svc.h \
/opt/devkitpro/libctru/include/3ds/exheader.h \
/opt/devkitpro/libctru/include/3ds/srv.h \
/opt/devkitpro/libctru/include/3ds/errf.h \
/opt/devkitpro/libctru/include/3ds/os.h \
/opt/devkitpro/libctru/include/3ds/synchronization.h \
/opt/devkitpro/libctru/include/3ds/thread.h \
/opt/devkitpro/libctru/include/3ds/gfx.h \
/opt/devkitpro/libctru/include/3ds/services/gspgpu.h \
/opt/devkitpro/libctru/include/3ds/console.h \
/opt/devkitpro/libctru/include/3ds/env.h \
/opt/devkitpro/libctru/include/3ds/util/decompress.h \
/opt/devkitpro/libctru/include/3ds/util/utf.h \
/opt/devkitpro/libctru/include/3ds/allocator/linear.h \
/opt/devkitpro/libctru/include/3ds/allocator/mappable.h \
/opt/devkitpro/libctru/include/3ds/allocator/vram.h \
/opt/devkitpro/libctru/include/3ds/services/ac.h \
/opt/devkitpro/libctru/include/3ds/services/am.h \
/opt/devkitpro/libctru/include/3ds/services/fs.h \
/opt/devkitpro/libctru/include/3ds/services/ampxi.h \
/opt/devkitpro/libctru/include/3ds/services/apt.h \
/opt/devkitpro/libctru/include/3ds/services/boss.h \
/opt/devkitpro/libctru/include/3ds/services/cam.h \
/opt/devkitpro/libctru/include/3ds/services/y2r.h \
/opt/devkitpro/libctru/include/3ds/services/cfgnor.h \
/opt/devkitpro/libctru/include/3ds/services/cfgu.h \
/opt/devkitpro/libctru/include/3ds/services/csnd.h \
/opt/devkitpro/libctru/include/3ds/services/dsp.h \
/opt/devkitpro/libctru/include/3ds/services/fspxi.h \
/opt/devkitpro/libctru/include/3ds/services/fsreg.h \
/opt/devkitpro/libctru/include/3ds/services/frd.h \
/opt/devkitpro/libctru/include/3ds/mii.h \
/opt/devkitpro/libctru/include/3ds/services/gsplcd.h \
/opt/devkitpro/libctru/include/3ds/services/hid.h \
/opt/devkitpro/libctru/include/3ds/services/irrst.h \
/opt/devkitpro/libctru/include/3ds/services/sslc.h \
/opt/devkitpro/libctru/include/3ds/services/httpc.h \
/opt/devkitpro/libctru/include/3ds/services/uds.h \
/opt/devkitpro/libctru/include/3ds/services/ndm.h \
/opt/devkitpro/libctru/include/3ds/services/nim.h \
/opt/devkitpro/libctru/include/3ds/services/nwmext.h \
/opt/devkitpro/libctru/include/3ds/services/ir.h \
/opt/devkitpro/libctru/include/3ds/services/ns.h \
/opt/devkitpro/libctru/include/3ds/services/pmapp.h \
/opt/devkitpro/libctru/include/3ds/services/pmdbg.h \
/opt/devkitpro/libctru/include/3ds/services/ps.h \
/opt/devkitpro/libctru/include/3ds/services/ptmu.h \
/opt/devkitpro/libctru/include/3ds/services/ptmsysm.h \
/opt/devkitpro/libctru/include/3ds/services/ptmgets.h \
/opt/devkitpro/libctru/include/3ds/services/ptmsets.h \
/opt/devkitpro/libctru/include/3ds/services/pxidev.h \
/opt/devkitpro/libctru/include/3ds/services/pxipm.h \
/opt/devkitpro/libctru/include/3ds/services/soc.h \
/opt/devkitpro/libctru/include/netinet/in.h \
/opt/devkitpro/libctru/include/sys/socket.h \
/opt/devkitpro/libctru/include/3ds/services/mic.h \
/opt/devkitpro/libctru/include/3ds/services/mvd.h \
/opt/devkitpro/libctru/include/3ds/services/nfc.h \
/opt/devkitpro/libctru/include/3ds/services/news.h \
/opt/devkitpro/libctru/include/3ds/services/qtm.h \
/opt/devkitpro/libctru/include/3ds/services/srvpm.h \
/opt/devkitpro/libctru/include/3ds/services/loader.h \
/opt/devkitpro/libctru/include/3ds/services/mcuhwc.h \
/opt/devkitpro/libctru/include/3ds/services/cdcchk.h \
/opt/devkitpro/libctru/include/3ds/gpu/gx.h \
/opt/devkitpro/libctru/include/3ds/gpu/gpu.h \
/opt/devkitpro/libctru/include/3ds/gpu/registers.h \
/opt/devkitpro/libctru/include/3ds/gpu/enums.h \
/opt/devkitpro/libctru/include/3ds/gpu/shbin.h \
/opt/devkitpro/libctru/include/3ds/gpu/shaderProgram.h \
/opt/devkitpro/libctru/include/3ds/ndsp/ndsp.h \
/opt/devkitpro/libctru/include/3ds/ndsp/channel.h \
/opt/devkitpro/libctru/include/3ds/applets/swkbd.h \
/opt/devkitpro/libctru/include/3ds/applets/error.h \
/opt/devkitpro/libctru/include/3ds/applets/miiselector.h \
/opt/devkitpro/libctru/include/3ds/archive.h \
/opt/devkitpro/libctru/include/3ds/romfs.h \
/opt/devkitpro/libctru/include/3ds/font.h \
/opt/devkitpro/libctru/include/3ds/gdbhio_dev.h \
/opt/devkitpro/libctru/include/3ds/3dslink.h \
/home/user/3DSController/3DS/include/drawing.h \
/home/user/3DSController/3DS/include/input.h \
/home/user/3DSController/3DS/include/keyboard.h \
/home/user/3DSController/3DS/include/settings.h \
/home/user/3DSController/3DS/include/wireless.h \
/opt/devkitpro/libctru/include/netdb.h \
/opt/devkitpro/libctru/include/arpa/inet.h \
/home/user/3DSController/3DS/include/inet_pton.h
/opt/devkitpro/libctru/include/3ds.h:
/opt/devkitpro/libctru/include/3ds/types.h:
/opt/devkitpro/libctru/include/3ds/result.h:
/opt/devkitpro/libctru/include/3ds/ipc.h:
/opt/devkitpro/libctru/include/3ds/svc.h:
/opt/devkitpro/libctru/include/3ds/exheader.h:
/opt/devkitpro/libctru/include/3ds/srv.h:
/opt/devkitpro/libctru/include/3ds/errf.h:
/opt/devkitpro/libctru/include/3ds/os.h:
/opt/devkitpro/libctru/include/3ds/synchronization.h:
/opt/devkitpro/libctru/include/3ds/thread.h:
/opt/devkitpro/libctru/include/3ds/gfx.h:
/opt/devkitpro/libctru/include/3ds/services/gspgpu.h:
/opt/devkitpro/libctru/include/3ds/console.h:
/opt/devkitpro/libctru/include/3ds/env.h:
/opt/devkitpro/libctru/include/3ds/util/decompress.h:
/opt/devkitpro/libctru/include/3ds/util/utf.h:
/opt/devkitpro/libctru/include/3ds/allocator/linear.h:
/opt/devkitpro/libctru/include/3ds/allocator/mappable.h:
/opt/devkitpro/libctru/include/3ds/allocator/vram.h:
/opt/devkitpro/libctru/include/3ds/services/ac.h:
/opt/devkitpro/libctru/include/3ds/services/am.h:
/opt/devkitpro/libctru/include/3ds/services/fs.h:
/opt/devkitpro/libctru/include/3ds/services/ampxi.h:
/opt/devkitpro/libctru/include/3ds/services/apt.h:
/opt/devkitpro/libctru/include/3ds/services/boss.h:
/opt/devkitpro/libctru/include/3ds/services/cam.h:
/opt/devkitpro/libctru/include/3ds/services/y2r.h:
/opt/devkitpro/libctru/include/3ds/services/cfgnor.h:
/opt/devkitpro/libctru/include/3ds/services/cfgu.h:
/opt/devkitpro/libctru/include/3ds/services/csnd.h:
/opt/devkitpro/libctru/include/3ds/services/dsp.h:
/opt/devkitpro/libctru/include/3ds/services/fspxi.h:
/opt/devkitpro/libctru/include/3ds/services/fsreg.h:
/opt/devkitpro/libctru/include/3ds/services/frd.h:
/opt/devkitpro/libctru/include/3ds/mii.h:
/opt/devkitpro/libctru/include/3ds/services/gsplcd.h:
/opt/devkitpro/libctru/include/3ds/services/hid.h:
/opt/devkitpro/libctru/include/3ds/services/irrst.h:
/opt/devkitpro/libctru/include/3ds/services/sslc.h:
/opt/devkitpro/libctru/include/3ds/services/httpc.h:
/opt/devkitpro/libctru/include/3ds/services/uds.h:
/opt/devkitpro/libctru/include/3ds/services/ndm.h:
/opt/devkitpro/libctru/include/3ds/services/nim.h:
/opt/devkitpro/libctru/include/3ds/services/nwmext.h:
/opt/devkitpro/libctru/include/3ds/services/ir.h:
/opt/devkitpro/libctru/include/3ds/services/ns.h:
/opt/devkitpro/libctru/include/3ds/services/pmapp.h:
/opt/devkitpro/libctru/include/3ds/services/pmdbg.h:
/opt/devkitpro/libctru/include/3ds/services/ps.h:
/opt/devkitpro/libctru/include/3ds/services/ptmu.h:
/opt/devkitpro/libctru/include/3ds/services/ptmsysm.h:
/opt/devkitpro/libctru/include/3ds/services/ptmgets.h:
/opt/devkitpro/libctru/include/3ds/services/ptmsets.h:
/opt/devkitpro/libctru/include/3ds/services/pxidev.h:
/opt/devkitpro/libctru/include/3ds/services/pxipm.h:
/opt/devkitpro/libctru/include/3ds/services/soc.h:
/opt/devkitpro/libctru/include/netinet/in.h:
/opt/devkitpro/libctru/include/sys/socket.h:
/opt/devkitpro/libctru/include/3ds/services/mic.h:
/opt/devkitpro/libctru/include/3ds/services/mvd.h:
/opt/devkitpro/libctru/include/3ds/services/nfc.h:
/opt/devkitpro/libctru/include/3ds/services/news.h:
/opt/devkitpro/libctru/include/3ds/services/qtm.h:
/opt/devkitpro/libctru/include/3ds/services/srvpm.h:
/opt/devkitpro/libctru/include/3ds/services/loader.h:
/opt/devkitpro/libctru/include/3ds/services/mcuhwc.h:
/opt/devkitpro/libctru/include/3ds/services/cdcchk.h:
/opt/devkitpro/libctru/include/3ds/gpu/gx.h:
/opt/devkitpro/libctru/include/3ds/gpu/gpu.h:
/opt/devkitpro/libctru/include/3ds/gpu/registers.h:
/opt/devkitpro/libctru/include/3ds/gpu/enums.h:
/opt/devkitpro/libctru/include/3ds/gpu/shbin.h:
/opt/devkitpro/libctru/include/3ds/gpu/shaderProgram.h:
/opt/devkitpro/libctru/include/3ds/ndsp/ndsp.h:
/opt/devkitpro/libctru/include/3ds/ndsp/channel.h:
/opt/devkitpro/libctru/include/3ds/applets/swkbd.h:
/opt/devkitpro/libctru/include/3ds/applets/error.h:
/opt/devkitpro/libctru/include/3ds/applets/miiselector.h:
/opt/devkitpro/libctru/include/3ds/archive.h:
/opt/devkitpro/libctru/include/3ds/romfs.h:
/opt/devkitpro/libctru/include/3ds/font.h:
/opt/devkitpro/libctru/include/3ds/gdbhio_dev.h:
/opt/devkitpro/libctru/include/3ds/3dslink.h:
/home/user/3DSController/3DS/include/drawing.h:
/home/user/3DSController/3DS/include/input.h:
/home/user/3DSController/3DS/include/keyboard.h:
/home/user/3DSController/3DS/include/settings.h:
/home/user/3DSController/3DS/include/wireless.h:
/opt/devkitpro/libctru/include/netdb.h:
/opt/devkitpro/libctru/include/arpa/inet.h:
/home/user/3DSController/3DS/include/inet_pton.h:

BIN
3DSsource/build/main.o Normal file

Binary file not shown.

179
3DSsource/build/settings.d Normal file
View File

@ -0,0 +1,179 @@
settings.o: /home/user/3DSController/3DS/source/settings.c \
/opt/devkitpro/libctru/include/3ds.h \
/opt/devkitpro/libctru/include/3ds/types.h \
/opt/devkitpro/libctru/include/3ds/result.h \
/opt/devkitpro/libctru/include/3ds/ipc.h \
/opt/devkitpro/libctru/include/3ds/svc.h \
/opt/devkitpro/libctru/include/3ds/exheader.h \
/opt/devkitpro/libctru/include/3ds/srv.h \
/opt/devkitpro/libctru/include/3ds/errf.h \
/opt/devkitpro/libctru/include/3ds/os.h \
/opt/devkitpro/libctru/include/3ds/synchronization.h \
/opt/devkitpro/libctru/include/3ds/thread.h \
/opt/devkitpro/libctru/include/3ds/gfx.h \
/opt/devkitpro/libctru/include/3ds/services/gspgpu.h \
/opt/devkitpro/libctru/include/3ds/console.h \
/opt/devkitpro/libctru/include/3ds/env.h \
/opt/devkitpro/libctru/include/3ds/util/decompress.h \
/opt/devkitpro/libctru/include/3ds/util/utf.h \
/opt/devkitpro/libctru/include/3ds/allocator/linear.h \
/opt/devkitpro/libctru/include/3ds/allocator/mappable.h \
/opt/devkitpro/libctru/include/3ds/allocator/vram.h \
/opt/devkitpro/libctru/include/3ds/services/ac.h \
/opt/devkitpro/libctru/include/3ds/services/am.h \
/opt/devkitpro/libctru/include/3ds/services/fs.h \
/opt/devkitpro/libctru/include/3ds/services/ampxi.h \
/opt/devkitpro/libctru/include/3ds/services/apt.h \
/opt/devkitpro/libctru/include/3ds/services/boss.h \
/opt/devkitpro/libctru/include/3ds/services/cam.h \
/opt/devkitpro/libctru/include/3ds/services/y2r.h \
/opt/devkitpro/libctru/include/3ds/services/cfgnor.h \
/opt/devkitpro/libctru/include/3ds/services/cfgu.h \
/opt/devkitpro/libctru/include/3ds/services/csnd.h \
/opt/devkitpro/libctru/include/3ds/services/dsp.h \
/opt/devkitpro/libctru/include/3ds/services/fspxi.h \
/opt/devkitpro/libctru/include/3ds/services/fsreg.h \
/opt/devkitpro/libctru/include/3ds/services/frd.h \
/opt/devkitpro/libctru/include/3ds/mii.h \
/opt/devkitpro/libctru/include/3ds/services/gsplcd.h \
/opt/devkitpro/libctru/include/3ds/services/hid.h \
/opt/devkitpro/libctru/include/3ds/services/irrst.h \
/opt/devkitpro/libctru/include/3ds/services/sslc.h \
/opt/devkitpro/libctru/include/3ds/services/httpc.h \
/opt/devkitpro/libctru/include/3ds/services/uds.h \
/opt/devkitpro/libctru/include/3ds/services/ndm.h \
/opt/devkitpro/libctru/include/3ds/services/nim.h \
/opt/devkitpro/libctru/include/3ds/services/nwmext.h \
/opt/devkitpro/libctru/include/3ds/services/ir.h \
/opt/devkitpro/libctru/include/3ds/services/ns.h \
/opt/devkitpro/libctru/include/3ds/services/pmapp.h \
/opt/devkitpro/libctru/include/3ds/services/pmdbg.h \
/opt/devkitpro/libctru/include/3ds/services/ps.h \
/opt/devkitpro/libctru/include/3ds/services/ptmu.h \
/opt/devkitpro/libctru/include/3ds/services/ptmsysm.h \
/opt/devkitpro/libctru/include/3ds/services/ptmgets.h \
/opt/devkitpro/libctru/include/3ds/services/ptmsets.h \
/opt/devkitpro/libctru/include/3ds/services/pxidev.h \
/opt/devkitpro/libctru/include/3ds/services/pxipm.h \
/opt/devkitpro/libctru/include/3ds/services/soc.h \
/opt/devkitpro/libctru/include/netinet/in.h \
/opt/devkitpro/libctru/include/sys/socket.h \
/opt/devkitpro/libctru/include/3ds/services/mic.h \
/opt/devkitpro/libctru/include/3ds/services/mvd.h \
/opt/devkitpro/libctru/include/3ds/services/nfc.h \
/opt/devkitpro/libctru/include/3ds/services/news.h \
/opt/devkitpro/libctru/include/3ds/services/qtm.h \
/opt/devkitpro/libctru/include/3ds/services/srvpm.h \
/opt/devkitpro/libctru/include/3ds/services/loader.h \
/opt/devkitpro/libctru/include/3ds/services/mcuhwc.h \
/opt/devkitpro/libctru/include/3ds/services/cdcchk.h \
/opt/devkitpro/libctru/include/3ds/gpu/gx.h \
/opt/devkitpro/libctru/include/3ds/gpu/gpu.h \
/opt/devkitpro/libctru/include/3ds/gpu/registers.h \
/opt/devkitpro/libctru/include/3ds/gpu/enums.h \
/opt/devkitpro/libctru/include/3ds/gpu/shbin.h \
/opt/devkitpro/libctru/include/3ds/gpu/shaderProgram.h \
/opt/devkitpro/libctru/include/3ds/ndsp/ndsp.h \
/opt/devkitpro/libctru/include/3ds/ndsp/channel.h \
/opt/devkitpro/libctru/include/3ds/applets/swkbd.h \
/opt/devkitpro/libctru/include/3ds/applets/error.h \
/opt/devkitpro/libctru/include/3ds/applets/miiselector.h \
/opt/devkitpro/libctru/include/3ds/archive.h \
/opt/devkitpro/libctru/include/3ds/romfs.h \
/opt/devkitpro/libctru/include/3ds/font.h \
/opt/devkitpro/libctru/include/3ds/gdbhio_dev.h \
/opt/devkitpro/libctru/include/3ds/3dslink.h \
/home/user/3DSController/3DS/include/wireless.h \
/opt/devkitpro/libctru/include/netdb.h \
/opt/devkitpro/libctru/include/arpa/inet.h \
/home/user/3DSController/3DS/include/inet_pton.h \
/home/user/3DSController/3DS/include/settings.h
/opt/devkitpro/libctru/include/3ds.h:
/opt/devkitpro/libctru/include/3ds/types.h:
/opt/devkitpro/libctru/include/3ds/result.h:
/opt/devkitpro/libctru/include/3ds/ipc.h:
/opt/devkitpro/libctru/include/3ds/svc.h:
/opt/devkitpro/libctru/include/3ds/exheader.h:
/opt/devkitpro/libctru/include/3ds/srv.h:
/opt/devkitpro/libctru/include/3ds/errf.h:
/opt/devkitpro/libctru/include/3ds/os.h:
/opt/devkitpro/libctru/include/3ds/synchronization.h:
/opt/devkitpro/libctru/include/3ds/thread.h:
/opt/devkitpro/libctru/include/3ds/gfx.h:
/opt/devkitpro/libctru/include/3ds/services/gspgpu.h:
/opt/devkitpro/libctru/include/3ds/console.h:
/opt/devkitpro/libctru/include/3ds/env.h:
/opt/devkitpro/libctru/include/3ds/util/decompress.h:
/opt/devkitpro/libctru/include/3ds/util/utf.h:
/opt/devkitpro/libctru/include/3ds/allocator/linear.h:
/opt/devkitpro/libctru/include/3ds/allocator/mappable.h:
/opt/devkitpro/libctru/include/3ds/allocator/vram.h:
/opt/devkitpro/libctru/include/3ds/services/ac.h:
/opt/devkitpro/libctru/include/3ds/services/am.h:
/opt/devkitpro/libctru/include/3ds/services/fs.h:
/opt/devkitpro/libctru/include/3ds/services/ampxi.h:
/opt/devkitpro/libctru/include/3ds/services/apt.h:
/opt/devkitpro/libctru/include/3ds/services/boss.h:
/opt/devkitpro/libctru/include/3ds/services/cam.h:
/opt/devkitpro/libctru/include/3ds/services/y2r.h:
/opt/devkitpro/libctru/include/3ds/services/cfgnor.h:
/opt/devkitpro/libctru/include/3ds/services/cfgu.h:
/opt/devkitpro/libctru/include/3ds/services/csnd.h:
/opt/devkitpro/libctru/include/3ds/services/dsp.h:
/opt/devkitpro/libctru/include/3ds/services/fspxi.h:
/opt/devkitpro/libctru/include/3ds/services/fsreg.h:
/opt/devkitpro/libctru/include/3ds/services/frd.h:
/opt/devkitpro/libctru/include/3ds/mii.h:
/opt/devkitpro/libctru/include/3ds/services/gsplcd.h:
/opt/devkitpro/libctru/include/3ds/services/hid.h:
/opt/devkitpro/libctru/include/3ds/services/irrst.h:
/opt/devkitpro/libctru/include/3ds/services/sslc.h:
/opt/devkitpro/libctru/include/3ds/services/httpc.h:
/opt/devkitpro/libctru/include/3ds/services/uds.h:
/opt/devkitpro/libctru/include/3ds/services/ndm.h:
/opt/devkitpro/libctru/include/3ds/services/nim.h:
/opt/devkitpro/libctru/include/3ds/services/nwmext.h:
/opt/devkitpro/libctru/include/3ds/services/ir.h:
/opt/devkitpro/libctru/include/3ds/services/ns.h:
/opt/devkitpro/libctru/include/3ds/services/pmapp.h:
/opt/devkitpro/libctru/include/3ds/services/pmdbg.h:
/opt/devkitpro/libctru/include/3ds/services/ps.h:
/opt/devkitpro/libctru/include/3ds/services/ptmu.h:
/opt/devkitpro/libctru/include/3ds/services/ptmsysm.h:
/opt/devkitpro/libctru/include/3ds/services/ptmgets.h:
/opt/devkitpro/libctru/include/3ds/services/ptmsets.h:
/opt/devkitpro/libctru/include/3ds/services/pxidev.h:
/opt/devkitpro/libctru/include/3ds/services/pxipm.h:
/opt/devkitpro/libctru/include/3ds/services/soc.h:
/opt/devkitpro/libctru/include/netinet/in.h:
/opt/devkitpro/libctru/include/sys/socket.h:
/opt/devkitpro/libctru/include/3ds/services/mic.h:
/opt/devkitpro/libctru/include/3ds/services/mvd.h:
/opt/devkitpro/libctru/include/3ds/services/nfc.h:
/opt/devkitpro/libctru/include/3ds/services/news.h:
/opt/devkitpro/libctru/include/3ds/services/qtm.h:
/opt/devkitpro/libctru/include/3ds/services/srvpm.h:
/opt/devkitpro/libctru/include/3ds/services/loader.h:
/opt/devkitpro/libctru/include/3ds/services/mcuhwc.h:
/opt/devkitpro/libctru/include/3ds/services/cdcchk.h:
/opt/devkitpro/libctru/include/3ds/gpu/gx.h:
/opt/devkitpro/libctru/include/3ds/gpu/gpu.h:
/opt/devkitpro/libctru/include/3ds/gpu/registers.h:
/opt/devkitpro/libctru/include/3ds/gpu/enums.h:
/opt/devkitpro/libctru/include/3ds/gpu/shbin.h:
/opt/devkitpro/libctru/include/3ds/gpu/shaderProgram.h:
/opt/devkitpro/libctru/include/3ds/ndsp/ndsp.h:
/opt/devkitpro/libctru/include/3ds/ndsp/channel.h:
/opt/devkitpro/libctru/include/3ds/applets/swkbd.h:
/opt/devkitpro/libctru/include/3ds/applets/error.h:
/opt/devkitpro/libctru/include/3ds/applets/miiselector.h:
/opt/devkitpro/libctru/include/3ds/archive.h:
/opt/devkitpro/libctru/include/3ds/romfs.h:
/opt/devkitpro/libctru/include/3ds/font.h:
/opt/devkitpro/libctru/include/3ds/gdbhio_dev.h:
/opt/devkitpro/libctru/include/3ds/3dslink.h:
/home/user/3DSController/3DS/include/wireless.h:
/opt/devkitpro/libctru/include/netdb.h:
/opt/devkitpro/libctru/include/arpa/inet.h:
/home/user/3DSController/3DS/include/inet_pton.h:
/home/user/3DSController/3DS/include/settings.h:

BIN
3DSsource/build/settings.o Normal file

Binary file not shown.

179
3DSsource/build/wireless.d Normal file
View File

@ -0,0 +1,179 @@
wireless.o: /home/user/3DSController/3DS/source/wireless.c \
/home/user/3DSController/3DS/include/keyboard.h \
/home/user/3DSController/3DS/include/wireless.h \
/opt/devkitpro/libctru/include/3ds.h \
/opt/devkitpro/libctru/include/3ds/types.h \
/opt/devkitpro/libctru/include/3ds/result.h \
/opt/devkitpro/libctru/include/3ds/ipc.h \
/opt/devkitpro/libctru/include/3ds/svc.h \
/opt/devkitpro/libctru/include/3ds/exheader.h \
/opt/devkitpro/libctru/include/3ds/srv.h \
/opt/devkitpro/libctru/include/3ds/errf.h \
/opt/devkitpro/libctru/include/3ds/os.h \
/opt/devkitpro/libctru/include/3ds/synchronization.h \
/opt/devkitpro/libctru/include/3ds/thread.h \
/opt/devkitpro/libctru/include/3ds/gfx.h \
/opt/devkitpro/libctru/include/3ds/services/gspgpu.h \
/opt/devkitpro/libctru/include/3ds/console.h \
/opt/devkitpro/libctru/include/3ds/env.h \
/opt/devkitpro/libctru/include/3ds/util/decompress.h \
/opt/devkitpro/libctru/include/3ds/util/utf.h \
/opt/devkitpro/libctru/include/3ds/allocator/linear.h \
/opt/devkitpro/libctru/include/3ds/allocator/mappable.h \
/opt/devkitpro/libctru/include/3ds/allocator/vram.h \
/opt/devkitpro/libctru/include/3ds/services/ac.h \
/opt/devkitpro/libctru/include/3ds/services/am.h \
/opt/devkitpro/libctru/include/3ds/services/fs.h \
/opt/devkitpro/libctru/include/3ds/services/ampxi.h \
/opt/devkitpro/libctru/include/3ds/services/apt.h \
/opt/devkitpro/libctru/include/3ds/services/boss.h \
/opt/devkitpro/libctru/include/3ds/services/cam.h \
/opt/devkitpro/libctru/include/3ds/services/y2r.h \
/opt/devkitpro/libctru/include/3ds/services/cfgnor.h \
/opt/devkitpro/libctru/include/3ds/services/cfgu.h \
/opt/devkitpro/libctru/include/3ds/services/csnd.h \
/opt/devkitpro/libctru/include/3ds/services/dsp.h \
/opt/devkitpro/libctru/include/3ds/services/fspxi.h \
/opt/devkitpro/libctru/include/3ds/services/fsreg.h \
/opt/devkitpro/libctru/include/3ds/services/frd.h \
/opt/devkitpro/libctru/include/3ds/mii.h \
/opt/devkitpro/libctru/include/3ds/services/gsplcd.h \
/opt/devkitpro/libctru/include/3ds/services/hid.h \
/opt/devkitpro/libctru/include/3ds/services/irrst.h \
/opt/devkitpro/libctru/include/3ds/services/sslc.h \
/opt/devkitpro/libctru/include/3ds/services/httpc.h \
/opt/devkitpro/libctru/include/3ds/services/uds.h \
/opt/devkitpro/libctru/include/3ds/services/ndm.h \
/opt/devkitpro/libctru/include/3ds/services/nim.h \
/opt/devkitpro/libctru/include/3ds/services/nwmext.h \
/opt/devkitpro/libctru/include/3ds/services/ir.h \
/opt/devkitpro/libctru/include/3ds/services/ns.h \
/opt/devkitpro/libctru/include/3ds/services/pmapp.h \
/opt/devkitpro/libctru/include/3ds/services/pmdbg.h \
/opt/devkitpro/libctru/include/3ds/services/ps.h \
/opt/devkitpro/libctru/include/3ds/services/ptmu.h \
/opt/devkitpro/libctru/include/3ds/services/ptmsysm.h \
/opt/devkitpro/libctru/include/3ds/services/ptmgets.h \
/opt/devkitpro/libctru/include/3ds/services/ptmsets.h \
/opt/devkitpro/libctru/include/3ds/services/pxidev.h \
/opt/devkitpro/libctru/include/3ds/services/pxipm.h \
/opt/devkitpro/libctru/include/3ds/services/soc.h \
/opt/devkitpro/libctru/include/netinet/in.h \
/opt/devkitpro/libctru/include/sys/socket.h \
/opt/devkitpro/libctru/include/3ds/services/mic.h \
/opt/devkitpro/libctru/include/3ds/services/mvd.h \
/opt/devkitpro/libctru/include/3ds/services/nfc.h \
/opt/devkitpro/libctru/include/3ds/services/news.h \
/opt/devkitpro/libctru/include/3ds/services/qtm.h \
/opt/devkitpro/libctru/include/3ds/services/srvpm.h \
/opt/devkitpro/libctru/include/3ds/services/loader.h \
/opt/devkitpro/libctru/include/3ds/services/mcuhwc.h \
/opt/devkitpro/libctru/include/3ds/services/cdcchk.h \
/opt/devkitpro/libctru/include/3ds/gpu/gx.h \
/opt/devkitpro/libctru/include/3ds/gpu/gpu.h \
/opt/devkitpro/libctru/include/3ds/gpu/registers.h \
/opt/devkitpro/libctru/include/3ds/gpu/enums.h \
/opt/devkitpro/libctru/include/3ds/gpu/shbin.h \
/opt/devkitpro/libctru/include/3ds/gpu/shaderProgram.h \
/opt/devkitpro/libctru/include/3ds/ndsp/ndsp.h \
/opt/devkitpro/libctru/include/3ds/ndsp/channel.h \
/opt/devkitpro/libctru/include/3ds/applets/swkbd.h \
/opt/devkitpro/libctru/include/3ds/applets/error.h \
/opt/devkitpro/libctru/include/3ds/applets/miiselector.h \
/opt/devkitpro/libctru/include/3ds/archive.h \
/opt/devkitpro/libctru/include/3ds/romfs.h \
/opt/devkitpro/libctru/include/3ds/font.h \
/opt/devkitpro/libctru/include/3ds/gdbhio_dev.h \
/opt/devkitpro/libctru/include/3ds/3dslink.h \
/opt/devkitpro/libctru/include/netdb.h \
/opt/devkitpro/libctru/include/arpa/inet.h \
/home/user/3DSController/3DS/include/inet_pton.h
/home/user/3DSController/3DS/include/keyboard.h:
/home/user/3DSController/3DS/include/wireless.h:
/opt/devkitpro/libctru/include/3ds.h:
/opt/devkitpro/libctru/include/3ds/types.h:
/opt/devkitpro/libctru/include/3ds/result.h:
/opt/devkitpro/libctru/include/3ds/ipc.h:
/opt/devkitpro/libctru/include/3ds/svc.h:
/opt/devkitpro/libctru/include/3ds/exheader.h:
/opt/devkitpro/libctru/include/3ds/srv.h:
/opt/devkitpro/libctru/include/3ds/errf.h:
/opt/devkitpro/libctru/include/3ds/os.h:
/opt/devkitpro/libctru/include/3ds/synchronization.h:
/opt/devkitpro/libctru/include/3ds/thread.h:
/opt/devkitpro/libctru/include/3ds/gfx.h:
/opt/devkitpro/libctru/include/3ds/services/gspgpu.h:
/opt/devkitpro/libctru/include/3ds/console.h:
/opt/devkitpro/libctru/include/3ds/env.h:
/opt/devkitpro/libctru/include/3ds/util/decompress.h:
/opt/devkitpro/libctru/include/3ds/util/utf.h:
/opt/devkitpro/libctru/include/3ds/allocator/linear.h:
/opt/devkitpro/libctru/include/3ds/allocator/mappable.h:
/opt/devkitpro/libctru/include/3ds/allocator/vram.h:
/opt/devkitpro/libctru/include/3ds/services/ac.h:
/opt/devkitpro/libctru/include/3ds/services/am.h:
/opt/devkitpro/libctru/include/3ds/services/fs.h:
/opt/devkitpro/libctru/include/3ds/services/ampxi.h:
/opt/devkitpro/libctru/include/3ds/services/apt.h:
/opt/devkitpro/libctru/include/3ds/services/boss.h:
/opt/devkitpro/libctru/include/3ds/services/cam.h:
/opt/devkitpro/libctru/include/3ds/services/y2r.h:
/opt/devkitpro/libctru/include/3ds/services/cfgnor.h:
/opt/devkitpro/libctru/include/3ds/services/cfgu.h:
/opt/devkitpro/libctru/include/3ds/services/csnd.h:
/opt/devkitpro/libctru/include/3ds/services/dsp.h:
/opt/devkitpro/libctru/include/3ds/services/fspxi.h:
/opt/devkitpro/libctru/include/3ds/services/fsreg.h:
/opt/devkitpro/libctru/include/3ds/services/frd.h:
/opt/devkitpro/libctru/include/3ds/mii.h:
/opt/devkitpro/libctru/include/3ds/services/gsplcd.h:
/opt/devkitpro/libctru/include/3ds/services/hid.h:
/opt/devkitpro/libctru/include/3ds/services/irrst.h:
/opt/devkitpro/libctru/include/3ds/services/sslc.h:
/opt/devkitpro/libctru/include/3ds/services/httpc.h:
/opt/devkitpro/libctru/include/3ds/services/uds.h:
/opt/devkitpro/libctru/include/3ds/services/ndm.h:
/opt/devkitpro/libctru/include/3ds/services/nim.h:
/opt/devkitpro/libctru/include/3ds/services/nwmext.h:
/opt/devkitpro/libctru/include/3ds/services/ir.h:
/opt/devkitpro/libctru/include/3ds/services/ns.h:
/opt/devkitpro/libctru/include/3ds/services/pmapp.h:
/opt/devkitpro/libctru/include/3ds/services/pmdbg.h:
/opt/devkitpro/libctru/include/3ds/services/ps.h:
/opt/devkitpro/libctru/include/3ds/services/ptmu.h:
/opt/devkitpro/libctru/include/3ds/services/ptmsysm.h:
/opt/devkitpro/libctru/include/3ds/services/ptmgets.h:
/opt/devkitpro/libctru/include/3ds/services/ptmsets.h:
/opt/devkitpro/libctru/include/3ds/services/pxidev.h:
/opt/devkitpro/libctru/include/3ds/services/pxipm.h:
/opt/devkitpro/libctru/include/3ds/services/soc.h:
/opt/devkitpro/libctru/include/netinet/in.h:
/opt/devkitpro/libctru/include/sys/socket.h:
/opt/devkitpro/libctru/include/3ds/services/mic.h:
/opt/devkitpro/libctru/include/3ds/services/mvd.h:
/opt/devkitpro/libctru/include/3ds/services/nfc.h:
/opt/devkitpro/libctru/include/3ds/services/news.h:
/opt/devkitpro/libctru/include/3ds/services/qtm.h:
/opt/devkitpro/libctru/include/3ds/services/srvpm.h:
/opt/devkitpro/libctru/include/3ds/services/loader.h:
/opt/devkitpro/libctru/include/3ds/services/mcuhwc.h:
/opt/devkitpro/libctru/include/3ds/services/cdcchk.h:
/opt/devkitpro/libctru/include/3ds/gpu/gx.h:
/opt/devkitpro/libctru/include/3ds/gpu/gpu.h:
/opt/devkitpro/libctru/include/3ds/gpu/registers.h:
/opt/devkitpro/libctru/include/3ds/gpu/enums.h:
/opt/devkitpro/libctru/include/3ds/gpu/shbin.h:
/opt/devkitpro/libctru/include/3ds/gpu/shaderProgram.h:
/opt/devkitpro/libctru/include/3ds/ndsp/ndsp.h:
/opt/devkitpro/libctru/include/3ds/ndsp/channel.h:
/opt/devkitpro/libctru/include/3ds/applets/swkbd.h:
/opt/devkitpro/libctru/include/3ds/applets/error.h:
/opt/devkitpro/libctru/include/3ds/applets/miiselector.h:
/opt/devkitpro/libctru/include/3ds/archive.h:
/opt/devkitpro/libctru/include/3ds/romfs.h:
/opt/devkitpro/libctru/include/3ds/font.h:
/opt/devkitpro/libctru/include/3ds/gdbhio_dev.h:
/opt/devkitpro/libctru/include/3ds/3dslink.h:
/opt/devkitpro/libctru/include/netdb.h:
/opt/devkitpro/libctru/include/arpa/inet.h:
/home/user/3DSController/3DS/include/inet_pton.h:

BIN
3DSsource/build/wireless.o Normal file

Binary file not shown.

View File

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

Before

Width:  |  Height:  |  Size: 766 B

After

Width:  |  Height:  |  Size: 766 B

View File

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -1,5 +1,6 @@
#pragma once
#include "3ds/types.h"
#include <stdbool.h>
struct settings {

View File

@ -1,18 +1,17 @@
#pragma once
#include <string.h>
#include <3ds.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <arpa/inet.h>
#include <fcntl.h>
#include "3ds/services/hid.h"
#include "inet_pton.h"
#include "sys/_types.h"
#define SCREENSHOT_CHUNK 4000
// #define SCREENSHOT_CHUNK 4000
#define DEFAULT_PORT 8889
@ -43,36 +42,60 @@ struct packet {
// KEYS
union {
struct keysPacket {
//Keys
unsigned int keys;
//Cirle Pad
struct {
short x;
short y;
} circlePad;
//Touchpad
struct {
unsigned short x;
unsigned short y;
} touch;
//cStick
struct {
short x;
short y;
} cStick;
//Volume
unsigned int volume; //way longer than needed, but it works.
//Gyroscope
struct {
short x;
short y;
short z;
} gyro;
unsigned char padding;
//Accelerometer
struct {
short x;
short y;
short z;
} accel;
// unsigned int threeD32;
};
struct keysPacket keysPacket;
};
// SCREENSHOT
union {
struct screenshotPacket {
unsigned short offset;
unsigned char data[SCREENSHOT_CHUNK];
};
struct screenshotPacket screenshotPacket;
};
// union {
// struct screenshotPacket {
// unsigned short offset;
// unsigned char data[SCREENSHOT_CHUNK];
// };
// struct screenshotPacket screenshotPacket;
// };
// This is not even used so...
};
};
@ -86,4 +109,4 @@ bool openSocket(int port);
void sendBuf(int length);
int receiveBuffer(int length);
void sendConnectionRequest(void);
void sendKeys(unsigned int keys, circlePosition circlePad, touchPosition touch, circlePosition cStick, unsigned int volume);
void sendKeys(unsigned int keys, circlePosition circlePad, touchPosition touch, circlePosition cStick, unsigned int volume, angularRate gyro, accelVector accel);

View File

@ -169,6 +169,8 @@ void disableBacklight() {
GSPGPU_WriteHWRegs(REG_LCDBACKLIGHTSUB, &off, 4);
}
void enableBacklight() {
GSPGPU_WriteHWRegs(REG_LCDBACKLIGHTMAIN, &brightnessMain, 4);
GSPGPU_WriteHWRegs(REG_LCDBACKLIGHTSUB, &brightnessSub, 4);

198
3DSsource/source/main.c Normal file
View File

@ -0,0 +1,198 @@
#include <malloc.h>
#include <setjmp.h>
#include <stdlib.h>
#include <string.h>
#include <3ds.h>
#include "3ds/services/gsplcd.h"
#include "3ds/services/hid.h"
#include "3ds/services/soc.h"
#include "drawing.h"
#include "input.h"
#include "keyboard.h"
#include "settings.h"
#include "wireless.h"
static jmp_buf exitJmp;
void hang(char *message) {
while (aptMainLoop()) {
hidScanInput();
clearScreen();
drawString(10, 10, "%s", message);
drawString(10, 20, "Start and Select to exit");
u32 kHeld = hidKeysHeld();
if ((kHeld & KEY_START) && (kHeld & KEY_SELECT))
longjmp(exitJmp, 1);
gfxFlushBuffers();
gspWaitForVBlank();
gfxSwapBuffers();
}
}
int main(void) {
acInit();
gfxInitDefault();
gfxSetDoubleBuffering(GFX_TOP, true);
gfxSetDoubleBuffering(GFX_BOTTOM, true);
if (setjmp(exitJmp))
goto exit;
// preRenderKeyboard();
// clearScreen();
drawString(10, 10, "Initing FS...");
gfxFlushBuffers();
gfxSwapBuffers();
fsInit();
// clearScreen();
drawString(10, 10, "Initing SOC...");
gfxFlushBuffers();
gfxSwapBuffers();
socInit((u32 *)memalign(0x1000, 0x100000), 0x100000);
u32 wifiStatus = 0;
ACU_GetWifiStatus(&wifiStatus);
if (!wifiStatus) {
hang("No WiFi! Is your wireless slider on?");
}
clearScreen();
drawString(10, 10, "Reading settings...");
gfxFlushBuffers();
gfxSwapBuffers();
if (!readSettings()) {
hang("Could not read 3DSController.ini!");
}
clearScreen();
drawString(10, 10, "Connecting to %s on port %d...", settings.IPString,
settings.port);
gfxFlushBuffers();
gfxSwapBuffers();
openSocket(settings.port);
sendConnectionRequest();
// clearScreen();
drawString(10, 10, "Sending data to %s on port %d...", settings.IPString,
settings.port);
gfxFlushBuffers();
gfxSwapBuffers();
GSPLCD_PowerOffAllBacklights();
while (aptMainLoop()) {
hidScanInput();
irrstScanInput();
u32 kHeld = hidKeysHeld();
circlePosition circlePad;
circlePosition cStick;
angularRate gyro;
accelVector accel;
u8 vol8;
u8 *volPointer = &vol8; // As a test for pointing at things.
// u8 threeD;
// u8 *threeDPointer = &threeD;
hidCstickRead(&cStick);
hidCircleRead(&circlePad);
HIDUSER_EnableGyroscope();
hidGyroRead(&gyro);
HIDUSER_EnableAccelerometer();
hidAccelRead(&accel);
HIDUSER_GetSoundVolume(volPointer);
// MCUHWC_GetSoundSliderLevel(threeDPointer);
u32 volume = (u32)vol8; // Upscale to 32 for transmission
// u32 threeD32 = (u32)threeD;
touchPosition touch;
touchRead(&touch);
clearScreen();
if ((kHeld & KEY_L) && (kHeld & KEY_R) && (kHeld & KEY_X)) {
if (keyboardToggle) {
keyboardActive = !keyboardActive;
keyboardToggle = false;
if (keyboardActive) {
GSPLCD_PowerOnAllBacklights();
} else {
GSPLCD_PowerOffAllBacklights();
}
}
} else
keyboardToggle = true;
if (keyboardActive) {
drawKeyboard();
if (touch.px >= 1 && touch.px <= 312 && touch.py >= 78 &&
touch.py <= 208) {
int x = (int)((float)touch.px * 12.0f / 320.0f);
int y = (int)((float)(touch.py - 78) * 12.0f / 320.0f);
int width = 24;
int height = 24;
if (keyboardChars[x + y * 12] == ' ') {
while (keyboardChars[(x - 1) + y * 12] == ' ')
x--;
width = (int)(5.0f * 320.0f / 12.0f) - 1;
}
else if (keyboardChars[x + y * 12] == '\13') {
while (keyboardChars[(x - 1) + y * 12] == '\13')
x--;
while (keyboardChars[x + (y - 1) * 12] == '\13')
y--;
width = (int)(2.0f * 320.0f / 12.0f) - 1;
height = (int)(3.0f * 320.0f / 12.0f) - 1;
}
if (keyboardChars[x + y * 12])
drawBox((int)((float)x * 320.0f / 12.0f) + 1,
(int)(78.0f + (float)y * 320.0f / 12.0f) + 1, width, height,
31, 31, 0);
}
}
sendKeys(kHeld, circlePad, touch, cStick, volume, gyro, accel);
// drawString(10, 10, "Volume: %x", volume);
// receiveBuffer(sizeof(struct packet));
if ((kHeld & KEY_START) && (kHeld & KEY_SELECT)) {
sendKeys(0, circlePad, touch, cStick, volume, gyro, accel);
longjmp(exitJmp, 1);
}
gfxFlushBuffers();
gspWaitForVBlank();
gfxSwapBuffers();
}
exit:
GSPLCD_PowerOnAllBacklights();
socExit();
svcCloseHandle(fileHandle);
fsExit();
gfxExit();
acExit();
return 0;
}

View File

@ -0,0 +1,60 @@
#include <stddef.h>
#include <string.h>
#include "keyboard.h"
#include "sys/_types.h"
#include "wireless.h"
int sock;
struct sockaddr_in sain, saout;
struct packet outBuf, rcvBuf;
socklen_t sockaddr_in_sizePtr = (int)sizeof(struct sockaddr_in);
bool openSocket(int port) {
sock = socket(AF_INET, SOCK_DGRAM, 0);
saout.sin_family = sain.sin_family = AF_INET;
saout.sin_port = sain.sin_port = htons(port);
sain.sin_addr.s_addr = INADDR_ANY;
bind(sock, (struct sockaddr *)&sain, sizeof(sain));
fcntl(sock, F_SETFL, O_NONBLOCK);
return true;
}
void sendBuf(int length) {
sendto(sock, (char *)&outBuf, length, 0, (struct sockaddr *)&saout,
sizeof(saout));
}
int receiveBuffer(int length) {
return recvfrom(sock, (char *)&rcvBuf, length, 0, (struct sockaddr *)&sain,
&sockaddr_in_sizePtr);
}
void sendConnectionRequest(void) {
outBuf.command = CONNECT;
outBuf.keyboardActive = keyboardActive;
sendBuf(offsetof(struct packet, connectPacket) +
sizeof(struct connectPacket));
}
void sendKeys(unsigned int keys, circlePosition circlePad, touchPosition touch,
circlePosition cStick, unsigned int volume,
angularRate gyro, accelVector accel) {
outBuf.command = KEYS;
outBuf.keyboardActive = keyboardActive;
memcpy(&outBuf.keys, &keys, 4);
memcpy(&outBuf.circlePad, &circlePad, 4);
memcpy(&outBuf.touch, &touch, 4);
memcpy(&outBuf.cStick, &cStick, 4);
memcpy(&outBuf.volume, &volume, 4);
memcpy(&outBuf.gyro, &gyro, 6);
// Padding to separate gyro from accel, making it less confusing when parsing the data
outBuf.padding = 0;
memcpy(&outBuf.accel, &accel, 6);
// memcpy(&outBuf.threeD32, &threeD32, 4);
sendBuf(offsetof(struct packet, keysPacket) + sizeof(struct keysPacket));
}

42
DataDebug.py Executable file
View File

@ -0,0 +1,42 @@
#!/usr/bin/env python
# Compatible with both Python 2.7.6 and 3.4.3
from __future__ import print_function
import socket, struct, time
##########################################################
# CONFIGURABLE REGION START - Don't touch anything above #
##########################################################
port = 42020
########################################################
# CONFIGURABLE REGION END - Don't touch anything below #
########################################################
def pprint(obj):
import pprint
pprint.PrettyPrinter().pprint(obj)
class x: pass
command = x()
command.CONNECT = 0
command.KEYS = 1
command.SCREENSHOT = 2
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind(("", port))
while True:
rawdata, addr = sock.recvfrom(4092)
rawdata = bytearray(rawdata)
print("received message", rawdata)
if rawdata[0]==command.CONNECT:
print("Connected with 3DS at address",addr)
pass # CONNECT packets are empty
#pprint(data)
if rawdata[0]==command.SCREENSHOT:
pass # unused by both 3DS and PC applications

Binary file not shown.

View File

@ -1,59 +0,0 @@
Default port is 8889, if you change this, you must change it in the 3DS's 3DSController.ini as well,
Throttle controls the delay between checking for new packets (in milliseconds), a high number will have slightly more lag between pressing a button on the 3DS and receiving it on the PC, however will make the application use less CPU. In my experience, 20 is a reasonable throttling amount,
Mouse Speed controls how fast the Circle Pad or Touch Screen moves the mouse. If set to 0 and using the Touch Screen, it will set to the absolute position, rather than moving relatively to last position,
vJoy Device chooses which device to connect to. Set this to 2 in a second instance of 3DSController to use a second 3DS at the same time, perhaps for multiplayer.
Circle Pad, C Stick and Touch can be MOUSE, JOYSTICK1, or JOYSTICK2.
JOYSTICK1 uses X and Y. JOYSTICK2 uses Rx and Ry. These are axes 0, 1, 3 and 4 respectively, leaving 2 and 5 unused.
KEYS will enable Pad directions (eg. Pad Left, C Stick Right) to map to regular keys (no vJoy necessary).
D Pad can be KEYS or POV. POV will automatically choose a continuous or 4 directional POV hat depending on what is set in your vJoy Config. KEYS will allow Left, Right and etc. to be buttons as previously.
Buttons can be a letter for a keyboard key (like Q, W, E, R, T, or Y), a special keyboard key (like SPACE, CLICK, RIGHT CLICK, ENTER, BACKSPACE, SHIFT, TAB, LEFT, RIGHT, UP, DOWN, PAGE UP, PAGE DOWN, WINDOWS, ESCAPE, CONTROL or ALT), or a joypad button (JOY1, JOY2, JOY3, to JOY16).
If you want to use JOY9 through JOY16 you need to reconfigure vJoy. Search for vJoy Config in your start menu and set buttons to 16.
Alternatively, you can disable any key by binding it to NONE.
Make sure to use a single space, not a tab for seperating settings,
Port: 8889
Throttle: 20
Mouse Speed: 3
vJoy Device: 1
Circle Pad: KEYS
C Stick: MOUSE
D Pad: KEYS
Touch: MOUSE
A: SPACE
B: E
X: CONTROL
Y: SHIFT
L: CLICK
R: RIGHT CLICK
ZL: CONTROL
ZR: SHIFT
Start: ESCAPE
Select: Q
Tap: NONE
Left: A
Right: D
Up: W
Down: S
Pad Left: A
Pad Right: D
Pad Up: W
Pad Down: S
C Stick Left: NONE
C Stick Right: NONE
C Stick Up: NONE
C Stick Down: NONE

View File

@ -1,38 +0,0 @@
CC := gcc
LN := gcc
ODIR := build
SDIR := source
IDIR := include
LDIR := lib
CFLAGS := -I$(IDIR) -fms-extensions -O2 -Wall
LFLAGS := $(LDIR)/vJoyInterface.lib -lws2_32 -lGdi32 -lgdiplus -static-libgcc
CFILES := $(wildcard $(SDIR)/*.c)
OBJS := $(patsubst $(SDIR)/%.c, $(ODIR)/%.o, $(wildcard $(SDIR)/*.c))
PLATFORM = $(shell uname)
ifeq ($(findstring Linux,$(PLATFORM)),Linux)
TARGET=3DSController
endif
ifeq ($(findstring Darwin,$(PLATFORM)),Darwin)
TARGET=3DSController
endif
ifeq ($(findstring MINGW,$(PLATFORM)),MINGW)
TARGET=3DSController.exe
endif
$(TARGET): $(ODIR) $(OBJS)
$(LN) $(ODIR)/*.o -o $(TARGET) $(CFLAGS) $(LFLAGS)
$(ODIR)/%.o: $(SDIR)/%.c
$(CC) -c -o $@ $< $(CFLAGS)
$(ODIR):
@mkdir $@
.PHONY: clean
clean:
rm -f $(TARGET) $(ODIR)/*.o

View File

@ -1,7 +0,0 @@
#pragma once
#include <stdio.h>
void error(const char *functionName);
int clamp(int val, int min, int max);

View File

@ -1,29 +0,0 @@
#pragma once
#ifndef WINVER
#define WINVER 0x0500
#endif
#include <windows.h>
#include "public.h"
#include "vjoyinterface.h"
#define joyX iReport.wAxisX
#define joyY iReport.wAxisY
#define joyRX iReport.wAxisXRot
#define joyRY iReport.wAxisYRot
//#define joyVolume iReport.wSlider
#define joyVolume iReport.wAxisZ
#define povHat iReport.bHats
#define joyButtons iReport.lButtons
#define JOY_MIDDLE (128 * 128)
extern int ContPovNumber;
//extern BOOL ContinuousPOV;
extern JOYSTICK_POSITION iReport;
BOOL updateJoystick(int);

View File

@ -1,6 +0,0 @@
#pragma once
extern unsigned char keyboardActive;
extern unsigned char keyboardToggle;
char currentKeyboardKey(void);

View File

@ -1,109 +0,0 @@
#pragma once
#include <windows.h>
#include <winable.h>
#include <winuser.h>
// For some reason, these are not defined in winuser.h like they used to be...
#ifndef VK_OEM_MINUS
#define VK_OEM_MINUS 0xBD
#endif
#ifndef VK_OEM_COMMA
#define VK_OEM_COMMA 0xBC
#endif
#ifndef KEYEVENTF_SCANCODE
#define KEYEVENTF_SCANCODE 0x08
#endif
#ifndef MAPVK_VK_TO_VSC
#define MAPVK_VK_TO_VSC 0
#endif
#define newpress(key) ((currentKeys & key) && !(lastKeys & key))
#define release(key) (!(currentKeys & key) && (lastKeys & key))
#define handleKey(DSKey, PCKey) do {\
if(!PCKey.useJoypad) {\
if(newpress(DSKey)) simulateKeyNewpress(PCKey.virtualKey);\
if(release(DSKey)) simulateKeyRelease(PCKey.virtualKey);\
}\
else if(PCKey.useJoypad == 1) {\
if(currentKeys & DSKey) joyButtons |= PCKey.joypadButton;\
else joyButtons &= ~PCKey.joypadButton;\
}\
else if(PCKey.useJoypad == 2) {\
if(currentKeys & DSKey) joyButtons |= PCKey.joypadButton << 8;\
else joyButtons &= ~(PCKey.joypadButton << 8);\
}\
} while(0)
#define BIT(n) (1 << (n))
typedef enum {
KEY_A = BIT(0),
KEY_B = BIT(1),
KEY_SELECT = BIT(2),
KEY_START = BIT(3),
KEY_DRIGHT = BIT(4),
KEY_DLEFT = BIT(5),
KEY_DUP = BIT(6),
KEY_DDOWN = BIT(7),
KEY_R = BIT(8),
KEY_L = BIT(9),
KEY_X = BIT(10),
KEY_Y = BIT(11),
KEY_ZL = BIT(14), // (new 3DS only)
KEY_ZR = BIT(15), // (new 3DS only)
KEY_TOUCH = BIT(20), // Not actually provided by HID
KEY_CSTICK_RIGHT = BIT(24), // c-stick (new 3DS only)
KEY_CSTICK_LEFT = BIT(25), // c-stick (new 3DS only)
KEY_CSTICK_UP = BIT(26), // c-stick (new 3DS only)
KEY_CSTICK_DOWN = BIT(27), // c-stick (new 3DS only)
KEY_CPAD_RIGHT = BIT(28), // circle pad
KEY_CPAD_LEFT = BIT(29), // circle pad
KEY_CPAD_UP = BIT(30), // circle pad
KEY_CPAD_DOWN = BIT(31), // circle pad
// Generic catch-all directions
KEY_UP = KEY_DUP | KEY_CPAD_UP,
KEY_DOWN = KEY_DDOWN | KEY_CPAD_DOWN,
KEY_LEFT = KEY_DLEFT | KEY_CPAD_LEFT,
KEY_RIGHT = KEY_DRIGHT | KEY_CPAD_RIGHT,
} KEYPAD_BITS;
struct keyMapping {
unsigned char useJoypad; // 0 keyboard key, 1 joypad1-8, 2 joypad9-16, 3 hat
union {
unsigned char virtualKey;
unsigned char joypadButton;
};
};
struct circlePad {
short x;
short y;
};
struct cStick {
short x;
short y;
};
struct touch {
short x;
short y;
};
extern unsigned int lastKeys;
extern unsigned int currentKeys;
extern unsigned int volume;
extern struct circlePad circlePad;
extern struct cStick cStick;
extern struct touch lastTouch;
extern struct touch currentTouch;
unsigned int mapVirtualKey(unsigned int key);
void simulateKeyNewpress(unsigned int key);
void simulateKeyRelease(unsigned int key);

View File

@ -1,227 +0,0 @@
/*++
Copyright (c) Shaul Eizikovich. All rights reserved.
THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
PURPOSE.
Module Name:
public.h
Abstract:
Public header file for the vJoy project
Developpers that need to interface with vJoy need to include this file
Author:
Environment:
kernel mode and User mode
Notes:
Revision History:
--*/
#ifndef _PUBLIC_H
#define _PUBLIC_H
// Compilation directives
#define PPJOY_MODE
#undef PPJOY_MODE // Comment-out for compatibility mode
#ifdef PPJOY_MODE
#include "PPJIoctl.h"
#endif
#include <INITGUID.H> // Definitions for controlling GUID initialization
//
// Usage example:
// CreateFile(TEXT("\\\\.\\vJoy"), GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
#ifdef PPJOY_MODE
#define DEVICENAME_STRING "PPJoyIOCTL1"
#else
#define DEVICENAME_STRING "vJoy"
#endif
#define NTDEVICE_NAME_STRING "\\Device\\"DEVICENAME_STRING
#define SYMBOLIC_NAME_STRING "\\DosDevices\\"DEVICENAME_STRING
#define DOS_FILE_NAME "\\\\.\\"DEVICENAME_STRING
#define VJOY_INTERFACE L"Device_"
// Version parts
#define VER_X_ 0
#define VER_H_ 2
#define VER_M_ 0
#define VER_L_ 5
#define STRINGIFY_1(x) #x
#define STRINGIFY(x) STRINGIFY_1(x)
#define PASTE(x, y) x##y
#define MAKEWIDE(x) PASTE(L,x)
// Device Attributes
//
#define VENDOR_N_ID 0x1234
#define PRODUCT_N_ID 0xBEAD
#define VERSION_N (VER_L_ + 0x10*VER_M_ + 0x100*VER_H_ + 0x1000*VER_X_)
// Device Strings
//
#define VENDOR_STR_ID L"Shaul Eizikovich"
#define PRODUCT_STR_ID L"vJoy - Virtual Joystick"
#define SERIALNUMBER_STR MAKEWIDE(STRINGIFY(VER_H_)) L"." MAKEWIDE(STRINGIFY(VER_M_)) L"." MAKEWIDE(STRINGIFY(VER_L_))
// Function codes;
//#define LOAD_POSITIONS 0x910
//#define GETATTRIB 0x911
// #define GET_FFB_DATA 0x00222912 // METHOD_OUT_DIRECT + FILE_DEVICE_UNKNOWN + FILE_ANY_ACCESS
//#define SET_FFB_STAT 0x913 // METHOD_NEITHER
//#define GET_FFB_STAT 0x916
#define F_LOAD_POSITIONS 0x910
#define F_GETATTRIB 0x911
#define F_GET_FFB_DATA 0x912
#define F_SET_FFB_STAT 0x913
#define F_GET_FFB_STAT 0x916
#define F_GET_DEV_INFO 0x917
// IO Device Control codes;
#define IOCTL_VJOY_GET_ATTRIB CTL_CODE (FILE_DEVICE_UNKNOWN, GETATTRIB, METHOD_BUFFERED, FILE_WRITE_ACCESS)
#define LOAD_POSITIONS CTL_CODE (FILE_DEVICE_UNKNOWN, F_LOAD_POSITIONS, METHOD_BUFFERED, FILE_WRITE_ACCESS)
#define GET_FFB_DATA CTL_CODE (FILE_DEVICE_UNKNOWN, F_GET_FFB_DATA, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
#define SET_FFB_STAT CTL_CODE (FILE_DEVICE_UNKNOWN, F_SET_FFB_STAT, METHOD_NEITHER, FILE_ANY_ACCESS)
#define GET_FFB_STAT CTL_CODE (FILE_DEVICE_UNKNOWN, F_GET_FFB_STAT, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define GET_DEV_INFO CTL_CODE (FILE_DEVICE_UNKNOWN, F_GET_DEV_INFO, METHOD_BUFFERED, FILE_ANY_ACCESS)
#ifndef __HIDPORT_H__
// Copied from hidport.h
#define IOCTL_HID_SET_FEATURE 0xB0191
#define IOCTL_HID_WRITE_REPORT 0xB000F
#define MAX_N_DEVICES 16 // Maximum number of vJoy devices
typedef struct _HID_DEVICE_ATTRIBUTES {
ULONG Size;
//
// sizeof (struct _HID_DEVICE_ATTRIBUTES)
//
//
// Vendor ids of this hid device
//
USHORT VendorID;
USHORT ProductID;
USHORT VersionNumber;
USHORT Reserved[11];
} HID_DEVICE_ATTRIBUTES, * PHID_DEVICE_ATTRIBUTES;
#endif
// Error levels for status report
enum ERRLEVEL {INFO, WARN, ERR, FATAL, APP};
// Status report function prototype
#ifdef WINAPI
typedef BOOL (WINAPI *StatusMessageFunc)(void * output, TCHAR * buffer, enum ERRLEVEL level);
#endif
///////////////////////////////////////////////////////////////
/////////////////////// Joystick Position ///////////////////////
//
// This structure holds data that is passed to the device from
// an external application such as SmartPropoPlus.
//
// Usage example:
// JOYSTICK_POSITION iReport;
// :
// DeviceIoControl (hDevice, 100, &iReport, sizeof(HID_INPUT_REPORT), NULL, 0, &bytes, NULL)
typedef struct _JOYSTICK_POSITION
{
BYTE bDevice; // Index of device. 1-based.
LONG wThrottle;
LONG wRudder;
LONG wAileron;
LONG wAxisX;
LONG wAxisY;
LONG wAxisZ;
LONG wAxisXRot;
LONG wAxisYRot;
LONG wAxisZRot;
LONG wSlider;
LONG wDial;
LONG wWheel;
LONG wAxisVX;
LONG wAxisVY;
LONG wAxisVZ;
LONG wAxisVBRX;
LONG wAxisVBRY;
LONG wAxisVBRZ;
LONG lButtons; // 32 buttons: 0x00000001 means button1 is pressed, 0x80000000 -> button32 is pressed
DWORD bHats; // Lower 4 bits: HAT switch or 16-bit of continuous HAT switch
DWORD bHatsEx1; // Lower 4 bits: HAT switch or 16-bit of continuous HAT switch
DWORD bHatsEx2; // Lower 4 bits: HAT switch or 16-bit of continuous HAT switch
DWORD bHatsEx3; // Lower 4 bits: HAT switch or 16-bit of continuous HAT switch
} JOYSTICK_POSITION, *PJOYSTICK_POSITION;
// Superset of JOYSTICK_POSITION
// Extension of JOYSTICK_POSITION with Buttons 33-128 appended to the end of the structure.
typedef struct _JOYSTICK_POSITION_V2
{
/// JOYSTICK_POSITION
BYTE bDevice; // Index of device. 1-based.
LONG wThrottle;
LONG wRudder;
LONG wAileron;
LONG wAxisX;
LONG wAxisY;
LONG wAxisZ;
LONG wAxisXRot;
LONG wAxisYRot;
LONG wAxisZRot;
LONG wSlider;
LONG wDial;
LONG wWheel;
LONG wAxisVX;
LONG wAxisVY;
LONG wAxisVZ;
LONG wAxisVBRX;
LONG wAxisVBRY;
LONG wAxisVBRZ;
LONG lButtons; // 32 buttons: 0x00000001 means button1 is pressed, 0x80000000 -> button32 is pressed
DWORD bHats; // Lower 4 bits: HAT switch or 16-bit of continuous HAT switch
DWORD bHatsEx1; // Lower 4 bits: HAT switch or 16-bit of continuous HAT switch
DWORD bHatsEx2; // Lower 4 bits: HAT switch or 16-bit of continuous HAT switch
DWORD bHatsEx3; // Lower 4 bits: HAT switch or 16-bit of continuous HAT switch LONG lButtonsEx1; // Buttons 33-64
/// JOYSTICK_POSITION_V2 Extenssion
LONG lButtonsEx1; // Buttons 33-64
LONG lButtonsEx2; // Buttons 65-96
LONG lButtonsEx3; // Buttons 97-128
} JOYSTICK_POSITION_V2, *PJOYSTICK_POSITION_V2;
// HID Descriptor definitions
#define HID_USAGE_X 0x30
#define HID_USAGE_Y 0x31
#define HID_USAGE_Z 0x32
#define HID_USAGE_RX 0x33
#define HID_USAGE_RY 0x34
#define HID_USAGE_RZ 0x35
#define HID_USAGE_SL0 0x36
#define HID_USAGE_SL1 0x37
#define HID_USAGE_WHL 0x38
#define HID_USAGE_POV 0x39
#endif

View File

@ -1,35 +0,0 @@
#pragma once
#include <stdbool.h>
#include "keys.h"
enum analogue {
mouse,
joystick1,
joystick2,
keys,
};
enum dPad {
key,
pov,
cPov,
};
struct settings {
int port;
int throttle;
enum analogue circlePad;
enum analogue cStick;
enum analogue touch;
enum dPad dPad;
int mouseSpeed;
UINT vJoyDevice;
struct keyMapping A, B, X, Y, L, R, ZL, ZR, Start, Select, Tap, Left, Right, Up, Down, PadLeft, PadRight, PadUp, PadDown, CSLeft, CSRight, CSUp, CSDown;
};
extern struct settings settings;
extern struct settings defaultSettings;
bool readSettings(void);

View File

@ -1,104 +0,0 @@
// The following ifdef block is the standard way of creating macros which make exporting
// from a DLL simpler. All files within this DLL are compiled with the VJOYINTERFACE_EXPORTS
// symbol defined on the command line. this symbol should not be defined on any project
// that uses this DLL. This way any other project whose source files include this file see
// VJOYINTERFACE_API functions as being imported from a DLL, whereas this DLL sees symbols
// defined with this macro as being exported.
#ifdef VJOYINTERFACE_EXPORTS
#define VJOYINTERFACE_API __declspec(dllexport)
#else
#define VJOYINTERFACE_API __declspec(dllimport)
#endif
///////////////////////////// vJoy device (collection) status ////////////////////////////////////////////
#ifndef VJDSTAT
#define VJDSTAT
enum VjdStat /* Declares an enumeration data type called BOOLEAN */
{
VJD_STAT_OWN, // The vJoy Device is owned by this application.
VJD_STAT_FREE, // The vJoy Device is NOT owned by any application (including this one).
VJD_STAT_BUSY, // The vJoy Device is owned by another application. It cannot be acquired by this application.
VJD_STAT_MISS, // The vJoy Device is missing. It either does not exist or the driver is down.
VJD_STAT_UNKN // Unknown
};
/* Error codes for some of the functions */
#define NO_HANDLE_BY_INDEX -1
#define BAD_PREPARSED_DATA -2
#define NO_CAPS -3
#define BAD_N_BTN_CAPS -4
#define BAD_CALLOC -5
#define BAD_BTN_CAPS -6
#define BAD_BTN_RANGE -7
#define BAD_N_VAL_CAPS -8
#define BAD_ID_RANGE -9
#define NO_SUCH_AXIS -10
/* Environment Variables */
#define INTERFACE_LOG_LEVEL "VJOYINTERFACELOGLEVEL"
#define INTERFACE_LOG_FILE "VJOYINTERFACELOGFILE"
#define INTERFACE_DEF_LOG_FILE "vJoyInterface.log"
struct DEV_INFO {
BYTE DeviceID; // Device ID: Valid values are 1-16
BYTE nImplemented; // Number of implemented device: Valid values are 1-16
BYTE isImplemented; // Is this device implemented?
BYTE MaxDevices; // Maximum number of devices that may be implemented (16)
BYTE DriverFFB; // Does this driver support FFB (False)
BYTE DeviceFFB; // Does this device support FFB (False)
} ;
typedef void (CALLBACK *RemovalCB)(BOOL, BOOL, PVOID);
#endif
///////////////////////////// vJoy device (collection) Control interface /////////////////////////////////
/*
These functions allow writing feeders and other applications that interface with vJoy
It is assumed that only one vJoy top-device (= Raw PDO) exists.
This top-level device can have up to 16 siblings (=top-level Reports/collections)
Each sibling is refered to as a "vJoy Device" and is attributed a unique Report ID (Range: 1-16).
Naming convetion:
VJD = vJoy Device
rID = Report ID
*/
///// General driver data
VJOYINTERFACE_API SHORT __cdecl GetvJoyVersion(void);
VJOYINTERFACE_API BOOL __cdecl vJoyEnabled(void);
VJOYINTERFACE_API PVOID __cdecl GetvJoyProductString(void);
VJOYINTERFACE_API PVOID __cdecl GetvJoyManufacturerString(void);
VJOYINTERFACE_API PVOID __cdecl GetvJoySerialNumberString(void);
VJOYINTERFACE_API BOOL __cdecl DriverMatch(WORD * DllVer, WORD * DrvVer);
VJOYINTERFACE_API VOID __cdecl RegisterRemovalCB(RemovalCB cb, PVOID data);
///// vJoy Device properties
VJOYINTERFACE_API int __cdecl GetVJDButtonNumber(UINT rID); // Get the number of buttons defined in the specified VDJ
VJOYINTERFACE_API int __cdecl GetVJDDiscPovNumber(UINT rID); // Get the number of descrete-type POV hats defined in the specified VDJ
VJOYINTERFACE_API int __cdecl GetVJDContPovNumber(UINT rID); // Get the number of descrete-type POV hats defined in the specified VDJ
VJOYINTERFACE_API BOOL __cdecl GetVJDAxisExist(UINT rID, UINT Axis); // Test if given axis defined in the specified VDJ
VJOYINTERFACE_API BOOL __cdecl GetVJDAxisMax(UINT rID, UINT Axis, LONG * Max); // Get logical Maximum value for a given axis defined in the specified VDJ
VJOYINTERFACE_API BOOL __cdecl GetVJDAxisMin(UINT rID, UINT Axis, LONG * Min); // Get logical Minimum value for a given axis defined in the specified VDJ
///// Write access to vJoy Device - Basic
VJOYINTERFACE_API BOOL __cdecl AcquireVJD(UINT rID); // Acquire the specified vJoy Device.
VJOYINTERFACE_API VOID __cdecl RelinquishVJD(UINT rID); // Relinquish the specified vJoy Device.
VJOYINTERFACE_API BOOL __cdecl UpdateVJD(UINT rID, PVOID pData); // Update the position data of the specified vJoy Device.
VJOYINTERFACE_API enum VjdStat __cdecl GetVJDStatus(UINT rID); // Get the status of the specified vJoy Device.
///// Write access to vJoy Device - Modifyiers
// This group of functions modify the current value of the position data
// They replace the need to create a structure of position data then call UpdateVJD
//// Reset functions
VJOYINTERFACE_API BOOL __cdecl ResetVJD(UINT rID); // Reset all controls to predefined values in the specified VDJ
VJOYINTERFACE_API VOID __cdecl ResetAll(void); // Reset all controls to predefined values in all VDJ
VJOYINTERFACE_API BOOL __cdecl ResetButtons(UINT rID); // Reset all buttons (To 0) in the specified VDJ
VJOYINTERFACE_API BOOL __cdecl ResetPovs(UINT rID); // Reset all POV Switches (To -1) in the specified VDJ
// Write data
VJOYINTERFACE_API BOOL __cdecl SetAxis(LONG Value, UINT rID, UINT Axis); // Write Value to a given axis defined in the specified VDJ
VJOYINTERFACE_API BOOL __cdecl SetBtn(BOOL Value, UINT rID, UCHAR nBtn); // Write Value to a given button defined in the specified VDJ
VJOYINTERFACE_API BOOL __cdecl SetDiscPov(int Value, UINT rID, UCHAR nPov); // Write Value to a given descrete POV defined in the specified VDJ
VJOYINTERFACE_API BOOL __cdecl SetContPov(DWORD Value, UINT rID, UCHAR nPov); // Write Value to a given continuous POV defined in the specified VDJ

View File

@ -1,84 +0,0 @@
#pragma once
#ifndef WINVER
#define WINVER 0x0500
#endif
#include <windows.h>
#include <winsock.h>
#include <stddef.h>
#define SCREENSHOT_CHUNK 4000
#define IP INADDR_ANY
enum NET_COMMANDS {
CONNECT,
KEYS,
SCREENSHOT,
};
// It is deliberately set up to have an anonymous struct as well as a named struct for convenience, not a mistake!
struct packet {
struct packetHeader {
unsigned char command;
unsigned char keyboardActive;
};
struct packetHeader packetHeader;
union {
// CONNECT
struct connectPacket {
};
struct connectPacket connectPacket;
// KEYS
struct keysPacket {
unsigned int keys;
struct {
short x;
short y;
} circlePad;
struct {
unsigned short x;
unsigned short y;
} touch;
struct {
short x;
short y;
} cStick;
unsigned int volume;
};
struct keysPacket keysPacket;
// SCREENSHOT
struct screenshotPacket {
unsigned short offset;
unsigned char data[SCREENSHOT_CHUNK];
};
struct screenshotPacket screenshotPacket;
};
};
extern SOCKET listener;
extern SOCKET client;
extern struct sockaddr_in client_in;
extern int sockaddr_in_sizePtr;
extern struct packet buffer;
extern char hostName[80];
void initNetwork(void);
void printIPs(void);
void startListening(void);
void sendBuffer(int length);
int receiveBuffer(int length);
void sendScreenshot(void);

Binary file not shown.

View File

@ -1,30 +0,0 @@
#include "wireless.h"
#include "general.h"
void error(const char *functionName) {
char errorMsg[92];
ZeroMemory(errorMsg, 92);
sprintf(errorMsg, "Call to %s returned error %d!", (char *)functionName, WSAGetLastError());
MessageBox(NULL, errorMsg, "socketIndication", MB_OK);
closesocket(client);
closesocket(listener);
WSACleanup();
exit(0);
}
int clamp (int val, int min, int max) {
if (val < min) {
return min;
}
if (val > max) {
return max;
}
return val;
}

View File

@ -1,26 +0,0 @@
#include <stdio.h>
#include <stdbool.h>
#include "joystick.h"
int ContPovNumber;
//BOOL ContinuousPOV = FALSE;
JOYSTICK_POSITION iReport;
BOOL updateJoystick(iInterface) {
BYTE id = (BYTE)iInterface;
iReport.bDevice = id;
if(!UpdateVJD(iInterface, (PVOID)&iReport)) {
/*printf("vJoy device %d failed - try to enable device\n", iInterface);
printf("PRESS ENTER TO CONTINUE\n");
getchar();
AcquireVJD(iInterface);
ContinuousPOV = (BOOL)GetVJDContPovNumber(iInterface);*/
return false;
}
return true;
}

View File

@ -1,21 +0,0 @@
#include <stdbool.h>
#include "keys.h"
#include "keyboard.h"
unsigned char keyboardActive = false;
unsigned char keyboardToggle = true;
inline char currentKeyboardKey(void) {
const char chars[60] = "!1234567890\x08QWERTYUIOP\13\13ASDFGHJKL-\13\13ZXCVBNM,.?\13\13\0\0\0 \0\0\0\0";
if(currentTouch.x >= 1 && currentTouch.x <= 312 && currentTouch.y >= 78 && currentTouch.y <= 208) {
int x = (int)((float)currentTouch.x * 12.0f / 320.0f);
int y = (int)((float)(currentTouch.y - 78) * 12.0f / 320.0f);
return chars[x + y * 12];
}
else return 0;
}

View File

@ -1,80 +0,0 @@
#include "keys.h"
#include "joystick.h"
// Sideband comunication with vJoy Device
//{781EF630-72B2-11d2-B852-00C04FAD5101}
//DEFINE_GUID(GUID_DEVINTERFACE_VJOY, 0x781EF630, 0x72B2, 0x11d2, 0xB8, 0x52, 0x00, 0xC0, 0x4F, 0xAD, 0x51, 0x01);
unsigned int lastKeys;
unsigned int currentKeys;
unsigned int volume; //slider
struct circlePad circlePad;
struct cStick cStick;
struct touch lastTouch;
struct touch currentTouch;
inline unsigned int mapVirtualKey(unsigned int key) {
return MapVirtualKey(key, MAPVK_VK_TO_VSC);
}
void simulateKeyNewpress(unsigned int key) {
if(!key) return;
unsigned char unshift = 0;
INPUT ip = { 0 };
if(key == VK_LBUTTON || key == VK_RBUTTON) {
ip.type = INPUT_MOUSE;
ip.mi.dwFlags = key == VK_LBUTTON ? MOUSEEVENTF_LEFTDOWN : MOUSEEVENTF_RIGHTDOWN;
}
else {
if(key == '!') {
key = '1';
simulateKeyNewpress(VK_SHIFT);
unshift = 1;
}
else if(key == '?') {
key = VK_DIVIDE;
simulateKeyNewpress(VK_SHIFT);
unshift = 1;
}
else if(key == '-') key = VK_OEM_MINUS;
else if(key == ',') key = VK_OEM_COMMA;
else if(key == '\13') key = VK_RETURN;
ip.type = INPUT_KEYBOARD;
ip.ki.wScan = mapVirtualKey(key);
ip.ki.time = 0;
ip.ki.dwExtraInfo = 0;
ip.ki.wVk = 0;
ip.ki.dwFlags = KEYEVENTF_SCANCODE;
}
SendInput(1, &ip, sizeof(INPUT));
if(unshift) simulateKeyRelease(VK_SHIFT);
}
void simulateKeyRelease(unsigned int key) {
if(!key) return;
INPUT ip = { 0 };
if(key == VK_LBUTTON || key == VK_RBUTTON) {
ip.type = INPUT_MOUSE;
ip.mi.dwFlags = key == VK_LBUTTON ? MOUSEEVENTF_LEFTUP : MOUSEEVENTF_RIGHTUP;
}
else {
ip.type = INPUT_KEYBOARD;
ip.ki.wScan = mapVirtualKey(key);
ip.ki.time = 0;
ip.ki.dwExtraInfo = 0;
ip.ki.wVk = 0;
ip.ki.dwFlags = KEYEVENTF_SCANCODE | KEYEVENTF_KEYUP;
}
SendInput(1, &ip, sizeof(INPUT));
}

View File

@ -1,300 +0,0 @@
// 3DS Controller Server
#define VERSION "0.7.2"
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include "wireless.h"
#include "keys.h"
#include "general.h"
#include "joystick.h"
#include "settings.h"
#include "keyboard.h"
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmd, int nShow) {
printf("3DS Controller Server %s\n", VERSION);
DWORD screenWidth = GetSystemMetrics(SM_CXSCREEN);
DWORD screenHeight = GetSystemMetrics(SM_CYSCREEN);
double widthMultiplier = screenWidth / 320.0;
double heightMultiplier = screenHeight / 240.0;
if(!readSettings()) {
printf("Couldn't read settings file, using default key bindings.\n");
}
bool vJoy = true;
UINT iInterface = settings.vJoyDevice;
iReport.wAxisX = JOY_MIDDLE;
iReport.wAxisY = JOY_MIDDLE;
iReport.wAxisZ = JOY_MIDDLE;
iReport.wAxisXRot = JOY_MIDDLE;
iReport.wAxisYRot = JOY_MIDDLE;
iReport.wAxisZRot = JOY_MIDDLE;
iReport.wSlider = JOY_MIDDLE;
iReport.wDial = JOY_MIDDLE;
iReport.lButtons = 0;
iReport.bHats = -1;
if(vJoy && !vJoyEnabled()) {
printf("vJoy failed (1)! Buttons will still work, but joy stick won't work.\n");
vJoy = false;
}
enum VjdStat status = GetVJDStatus(iInterface);
if(vJoy && (status == VJD_STAT_OWN || (status == VJD_STAT_FREE && !AcquireVJD(iInterface)))) {
printf("vJoy failed (2)! Buttons will still work, but joy stick won't work.\n");
vJoy = false;
}
ContPovNumber = GetVJDContPovNumber(iInterface);
//int DiscPovNumber = GetVJDDiscPovNumber(iInterface);
if((settings.dPad == pov) && !(ContPovNumber == 0)) settings.dPad = cPov;
if(vJoy && !updateJoystick(iInterface)) {
printf("vJoy failed (3)! Buttons will still work, but joystick won't work.\nIs vJoy device %d configured?\n",iInterface);
vJoy = false;
} else printf("Connected to vJoy device %d\n",iInterface);
initNetwork();
char nButtons = GetVJDButtonNumber(iInterface);
if(vJoy && nButtons <16) printf("Your vJoy has %d buttons, 3DSController supports 16!\n", nButtons);
printf("Port: %d\n", settings.port);
printf("Running on: %s\n", hostName);
printf("Your local IP(s):\n");
printIPs();
printf("\n");
startListening();
while(1) {
memset(&buffer, 0, sizeof(struct packet));
while(receiveBuffer(sizeof(struct packet)) <= 0) {
// Waiting
Sleep(settings.throttle);
}
keyboardActive = buffer.keyboardActive;
switch(buffer.command) {
case CONNECT:
lastKeys = 0;
currentKeys = 0;
circlePad.x = 0;
circlePad.y = 0;
lastTouch.x = 0;
lastTouch.y = 0;
currentTouch.x = 0;
currentTouch.y = 0;
cStick.x = 0;
cStick.y = 0;
buffer.command = CONNECT;
printf("3DS Connected!\n");
Sleep(50);
sendBuffer(1);
Sleep(50);
sendBuffer(1);
Sleep(50);
sendBuffer(1);
break;
case KEYS:
lastKeys = currentKeys;
if(currentKeys & KEY_TOUCH) lastTouch = currentTouch;
memcpy(&currentKeys, &buffer.keys, 4);
memcpy(&circlePad, &buffer.circlePad, 4);
memcpy(&currentTouch, &buffer.touch, 4);
memcpy(&cStick, &buffer.cStick, 4);
memcpy(&volume, &buffer.volume, 4);
//printf("\rVolume is currently: %x ", volume); //test
handleKey(KEY_A, settings.A);
handleKey(KEY_B, settings.B);
handleKey(KEY_SELECT, settings.Select);
handleKey(KEY_START, settings.Start);
if(settings.dPad == key) { //Handle normally if not using POV in settings.
handleKey(KEY_DRIGHT, settings.Right);
handleKey(KEY_DLEFT, settings.Left);
handleKey(KEY_DUP, settings.Up);
handleKey(KEY_DDOWN, settings.Down);
}
handleKey(KEY_R, settings.R);
handleKey(KEY_L, settings.L);
handleKey(KEY_ZR, settings.ZR);
handleKey(KEY_ZL, settings.ZL);
handleKey(KEY_X, settings.X);
handleKey(KEY_Y, settings.Y);
if(settings.circlePad == keys) {
handleKey(KEY_CPAD_RIGHT, settings.PadRight);
handleKey(KEY_CPAD_LEFT, settings.PadLeft);
handleKey(KEY_CPAD_UP, settings.PadUp);
handleKey(KEY_CPAD_DOWN, settings.PadDown);
}
if(settings.cStick == keys) {
handleKey(KEY_CSTICK_RIGHT, settings.CSRight);
handleKey(KEY_CSTICK_LEFT, settings.CSLeft);
handleKey(KEY_CSTICK_UP, settings.CSUp);
handleKey(KEY_CSTICK_DOWN, settings.CSDown);
}
//handleKey(KEY_LID, 'I');
if(newpress(KEY_TOUCH)) {
lastTouch.x = currentTouch.x;
lastTouch.y = currentTouch.y;
}
if((currentKeys & KEY_TOUCH)) {
if(keyboardActive) {
if(newpress(KEY_TOUCH)) {
char letter = currentKeyboardKey();
if(letter) {
simulateKeyNewpress(letter);
simulateKeyRelease(letter);
}
}
}
else if(settings.touch == mouse) {
if(settings.mouseSpeed) {
POINT p;
GetCursorPos(&p);
SetCursorPos(p.x + (currentTouch.x - lastTouch.x) * settings.mouseSpeed, p.y + (currentTouch.y - lastTouch.y) * settings.mouseSpeed);
}
else {
SetCursorPos((int)((double)currentTouch.x * widthMultiplier), (int)((double)currentTouch.y * heightMultiplier));
}
}
else if(settings.touch == joystick1) { //made a little bit more accurate to the screen size.
joyX = (int)((float)(currentTouch.x) * 102.3f);
joyY = (int)((float)(currentTouch.y) * 136.5f);
}
else if(settings.touch == joystick2) {
joyRX = (int)((float)(currentTouch.x) * 102.3f);
joyRY = (int)((float)(currentTouch.y) * 136.5f);
}
else {
handleKey(KEY_TOUCH, settings.Tap);
}
} else { //If we are not touching, move to center (Like if you release the joystick on a normal controller).
if(settings.touch == joystick1) {
joyX = 16383; //Halfway between the x
joyY = 16383; //Halfway between the y
}
else if(settings.touch == joystick2) {
joyRX = 16383; //Halfway between the rx
joyRY = 16383; //Halfway between the ry
}
}
if(settings.circlePad == mouse) {
if(abs(circlePad.x) < settings.mouseSpeed * 3) circlePad.x = 0;
if(abs(circlePad.y) < settings.mouseSpeed * 3) circlePad.y = 0;
POINT p;
GetCursorPos(&p);
SetCursorPos(p.x + (circlePad.x * settings.mouseSpeed) / 32, p.y - (circlePad.y * settings.mouseSpeed) / 32);
}
else if(settings.circlePad == joystick1) {
joyX = clamp((circlePad.x + 128) * 128, 0, 32767);
joyY = clamp((128 - circlePad.y) * 128, 0, 32767);
}
else if(settings.circlePad == joystick2) {
joyRX = clamp((circlePad.x + 128) * 128, 0, 32767);
joyRY = clamp((128 - circlePad.y) * 128, 0, 32767);
}
if(settings.cStick == mouse) {
if(abs(cStick.x) < settings.mouseSpeed * 3) cStick.x = 0;
if(abs(cStick.y) < settings.mouseSpeed * 3) cStick.y = 0;
POINT p;
GetCursorPos(&p);
SetCursorPos(p.x + (cStick.x * settings.mouseSpeed) / 32, p.y - (cStick.y * settings.mouseSpeed) / 32);
}
else if(settings.cStick == joystick1) {
joyX = clamp((cStick.x + 128) * 128, 0, 32767);
joyY = clamp((128 - cStick.y) * 128, 0, 32767);
}
else if(settings.cStick == joystick2) {
joyRX = clamp((cStick.x + 128) * 128, 0, 32767);
joyRY = clamp((128 - cStick.y) * 128, 0, 32767);
}
if(settings.dPad == cPov) {
if((currentKeys & KEY_DUP) && !(currentKeys & KEY_DLEFT)) {
if((currentKeys & KEY_DRIGHT)) {
povHat = 4500;
} else {
povHat = 0;
}
} else if((currentKeys & KEY_DRIGHT)) {
if((currentKeys & KEY_DDOWN)) {
povHat = 13500;
} else {
povHat = 9000;
}
} else if((currentKeys & KEY_DDOWN)) {
if((currentKeys & KEY_DLEFT)) {
povHat = 22500;
} else {
povHat = 18000;
}
} else if((currentKeys & KEY_DLEFT)) {
if ((currentKeys & KEY_DUP)) {
povHat = 31500;
} else {
povHat = 27000;
}
}
if(!((currentKeys & KEY_DUP) || (currentKeys & KEY_DRIGHT) || (currentKeys & KEY_DDOWN) || (currentKeys & KEY_DLEFT))) {
//If none are pressed, reset the POV hat
povHat = -1;
}
}
else if(settings.dPad == pov) {
if((currentKeys & KEY_DUP) && !(currentKeys & KEY_DLEFT)) iReport.bHats = 0;
else if(currentKeys & KEY_DRIGHT) iReport.bHats = 1;
else if (currentKeys & KEY_DDOWN) iReport.bHats = 2;
else if (currentKeys & KEY_DLEFT) iReport.bHats = 3;
else iReport.bHats = -1;
}
joyVolume = volume * 512;
break;
}
if(vJoy) updateJoystick(iInterface);
}
error("accept()");
return 0;
}

View File

@ -1,201 +0,0 @@
#include <stdio.h>
#include <string.h>
#include <windows.h>
#include "keys.h"
#include "wireless.h"
#include "settings.h"
struct settings settings;
struct settings defaultSettings = {
port: 8889,
throttle: 20,
circlePad: joystick1,
cStick: joystick2,
touch: mouse,
mouseSpeed: 4,
vJoyDevice: 1,
A: { 1, {'A'} },
B: { 1, {'B'} },
X: { 1, {'X'} },
Y: { 1, {'Y'} },
L: { 1, {'L'} },
R: { 1, {'R'} },
ZL: { 1, {'Q'} },
ZR: { 1, {'W'} },
Left: { 1, {VK_LEFT} },
Right: { 1, {VK_RIGHT} },
Up: { 1, {VK_UP} },
Down: { 1, {VK_DOWN} },
Start: { 1, {VK_RETURN} },
Select: { 1, {VK_BACK} },
Tap: { 1, {'T'} },
};
static bool getSetting(char *name, char *src, char *dest) {
char *start = strstr(src, name);
if(start) {
start += strlen(name);
char *end = start + strlen(start);
if(strstr(start, "\n") - 1 < end) end = strstr(start, "\n") - 1;
size_t size = (size_t)end - (size_t)start;
strncpy(dest, start, size);
dest[size] = '\0';
return true;
}
return false;
}
static struct keyMapping getButton(char *string) {
struct keyMapping k = { 1, {0} };
k.useJoypad = 0;
if(strcmp(string, "SPACE") == 0) k.virtualKey = VK_SPACE;
else if(strcmp(string, "CLICK") == 0) k.virtualKey = VK_LBUTTON;
else if(strcmp(string, "RIGHT CLICK") == 0) k.virtualKey = VK_RBUTTON;
else if(strcmp(string, "ENTER") == 0) k.virtualKey = VK_RETURN;
else if(strcmp(string, "BACKSPACE") == 0) k.virtualKey = VK_BACK;
else if(strcmp(string, "SHIFT") == 0) k.virtualKey = VK_SHIFT;
else if(strcmp(string, "TAB") == 0) k.virtualKey = VK_TAB;
else if(strcmp(string, "LEFT") == 0) k.virtualKey = VK_LEFT;
else if(strcmp(string, "RIGHT") == 0) k.virtualKey = VK_RIGHT;
else if(strcmp(string, "UP") == 0) k.virtualKey = VK_UP;
else if(strcmp(string, "DOWN") == 0) k.virtualKey = VK_DOWN;
else if(strcmp(string, "PAGE UP") == 0) k.virtualKey = VK_PRIOR;
else if(strcmp(string, "PAGE DOWN") == 0) k.virtualKey = VK_NEXT;
else if(strcmp(string, "WINDOWS") == 0) k.virtualKey = VK_LWIN;
else if(strcmp(string, "ESCAPE") == 0) k.virtualKey = VK_ESCAPE;
else if(strcmp(string, "CONTROL") == 0) k.virtualKey = VK_CONTROL;
else if(strcmp(string, "ALT") == 0) k.virtualKey = VK_MENU;
else if(strcmp(string, "NONE") == 0) k.virtualKey = 0;
else if(strcmp(string, "JOY1") == 0) { k.useJoypad = 1; k.joypadButton = 1 << 0; }
else if(strcmp(string, "JOY2") == 0) { k.useJoypad = 1; k.joypadButton = 1 << 1; }
else if(strcmp(string, "JOY3") == 0) { k.useJoypad = 1; k.joypadButton = 1 << 2; }
else if(strcmp(string, "JOY4") == 0) { k.useJoypad = 1; k.joypadButton = 1 << 3; }
else if(strcmp(string, "JOY5") == 0) { k.useJoypad = 1; k.joypadButton = 1 << 4; }
else if(strcmp(string, "JOY6") == 0) { k.useJoypad = 1; k.joypadButton = 1 << 5; }
else if(strcmp(string, "JOY7") == 0) { k.useJoypad = 1; k.joypadButton = 1 << 6; }
else if(strcmp(string, "JOY8") == 0) { k.useJoypad = 1; k.joypadButton = 1 << 7; }
else if(strcmp(string, "JOY9") == 0) { k.useJoypad = 2; k.joypadButton = 1 << 0; }
else if(strcmp(string, "JOY10") == 0) { k.useJoypad = 2; k.joypadButton = 1 << 1; }
else if(strcmp(string, "JOY11") == 0) { k.useJoypad = 2; k.joypadButton = 1 << 2; }
else if(strcmp(string, "JOY12") == 0) { k.useJoypad = 2; k.joypadButton = 1 << 3; }
else if(strcmp(string, "JOY13") == 0) { k.useJoypad = 2; k.joypadButton = 1 << 4; }
else if(strcmp(string, "JOY14") == 0) { k.useJoypad = 2; k.joypadButton = 1 << 5; }
else if(strcmp(string, "JOY15") == 0) { k.useJoypad = 2; k.joypadButton = 1 << 6; }
else if(strcmp(string, "JOY16") == 0) { k.useJoypad = 2; k.joypadButton = 1 << 7; }
else k.virtualKey = (int)string[0];
return k;
}
bool readSettings(void) {
FILE *f;
size_t len = 0;
char *buffer = NULL;
memcpy(&settings, &defaultSettings, sizeof(struct settings));
f = fopen("3DSController.ini", "rb");
if(!f) {
return false;
}
fseek(f, 0, SEEK_END);
len = ftell(f);
rewind(f);
buffer = malloc(len);
if(!buffer) {
fclose(f);
return false;
}
fread(buffer, 1, len, f);
char setting[64] = { '\0' };
if(getSetting("Port: ", buffer, setting)) {
sscanf(setting, "%d", &settings.port);
}
if(getSetting("Throttle: ", buffer, setting)) {
sscanf(setting, "%d", &settings.throttle);
}
if(getSetting("Circle Pad: ", buffer, setting)) {
if(strcmp(setting, "MOUSE") == 0) settings.circlePad = mouse;
else if(strcmp(setting, "JOYSTICK1") == 0) settings.circlePad = joystick1;
else if(strcmp(setting, "JOYSTICK2") == 0) settings.circlePad = joystick2;
else if(strcmp(setting, "KEYS") == 0) settings.circlePad = keys;
}
if(getSetting("C Stick: ", buffer, setting)) {
if(strcmp(setting, "MOUSE") == 0) settings.cStick = mouse;
else if(strcmp(setting, "JOYSTICK1") == 0) settings.cStick = joystick1;
else if(strcmp(setting, "JOYSTICK2") == 0) settings.cStick = joystick2;
else if(strcmp(setting, "KEYS") == 0) settings.cStick = keys;
}
if(getSetting("D Pad: ", buffer, setting)) {
if(strcmp(setting, "KEYS") == 0) settings.dPad = key;
if(strcmp(setting, "POV") == 0) settings.dPad = pov;
}
if(getSetting("Touch: ", buffer, setting)) {
if(strcmp(setting, "MOUSE") == 0) settings.touch = mouse;
else if(strcmp(setting, "JOYSTICK1") == 0) settings.touch = joystick1;
else if(strcmp(setting, "JOYSTICK2") == 0) settings.touch = joystick2;
}
if(getSetting("Mouse Speed: ", buffer, setting)) {
sscanf(setting, "%d", &settings.mouseSpeed);
}
if(getSetting("vJoy Device: ", buffer, setting)) {
sscanf(setting, "%d", &settings.vJoyDevice);
}
if(getSetting("A: ", buffer, setting)) settings.A = getButton(setting);
if(getSetting("B: ", buffer, setting)) settings.B = getButton(setting);
if(getSetting("X: ", buffer, setting)) settings.X = getButton(setting);
if(getSetting("Y: ", buffer, setting)) settings.Y = getButton(setting);
if(getSetting("L: ", buffer, setting)) settings.L = getButton(setting);
if(getSetting("R: ", buffer, setting)) settings.R = getButton(setting);
if(getSetting("ZL: ", buffer, setting)) settings.ZL = getButton(setting);
if(getSetting("ZR: ", buffer, setting)) settings.ZR = getButton(setting);
if(getSetting("Left: ", buffer, setting)) settings.Left = getButton(setting);
if(getSetting("Right: ", buffer, setting)) settings.Right = getButton(setting);
if(getSetting("Up: ", buffer, setting)) settings.Up = getButton(setting);
if(getSetting("Down: ", buffer, setting)) settings.Down = getButton(setting);
if(getSetting("Start: ", buffer, setting)) settings.Start = getButton(setting);
if(getSetting("Select: ", buffer, setting)) settings.Select = getButton(setting);
if(getSetting("Tap: ", buffer, setting)) settings.Tap = getButton(setting);
if(settings.circlePad == keys) {
if(getSetting("Pad Left: ", buffer, setting)) settings.PadLeft = getButton(setting);
if(getSetting("Pad Right: ", buffer, setting)) settings.PadRight = getButton(setting);
if(getSetting("Pad Up: ", buffer, setting)) settings.PadUp = getButton(setting);
if(getSetting("Pad Down: ", buffer, setting)) settings.PadDown = getButton(setting);
}
if(settings.cStick == keys) {
if(getSetting("C Stick Left: ", buffer, setting)) settings.CSLeft = getButton(setting);
if(getSetting("C Stick Right: ", buffer, setting)) settings.CSRight = getButton(setting);
if(getSetting("C Stick Up: ", buffer, setting)) settings.CSUp = getButton(setting);
if(getSetting("C Stick Down: ", buffer, setting)) settings.CSDown = getButton(setting);
}
fclose(f);
return true;
}

View File

@ -1,80 +0,0 @@
#include <stddef.h>
#include "general.h"
#include "settings.h"
#include "wireless.h"
SOCKET listener;
SOCKET client;
struct sockaddr_in client_in;
int sockaddr_in_sizePtr = (int)sizeof(struct sockaddr_in);
struct packet buffer;
char hostName[80];
void initNetwork(void) {
WSADATA wsaData;
WSAStartup(MAKEWORD(2, 2), &wsaData);
if(gethostname(hostName, sizeof(hostName)) == SOCKET_ERROR) {
error("gethostname()");
}
}
void printIPs(void) {
struct hostent *phe = gethostbyname(hostName);
if(phe == 0) {
error("gethostbyname()");
}
int i;
for(i = 0; phe->h_addr_list[i] != 0; i++) {
struct in_addr addr;
memcpy(&addr, phe->h_addr_list[i], sizeof(struct in_addr));
printf("%s\n", inet_ntoa(addr));
}
if(i) {
printf("Usually you want the first one.\n");
}
}
void startListening(void) {
int nret;
listener = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if(listener == INVALID_SOCKET) {
error("socket()");
}
SOCKADDR_IN serverInfo;
serverInfo.sin_family = AF_INET;
serverInfo.sin_addr.s_addr = IP;
serverInfo.sin_port = htons(settings.port);
u_long one = 1;
ioctlsocket(listener, FIONBIO, &one);
nret = bind(listener, (LPSOCKADDR)&serverInfo, sizeof(struct sockaddr));
if(nret == SOCKET_ERROR) {
error("bind()");
}
}
void sendBuffer(int length) {
if(sendto(listener, (char *)&buffer, length, 0, (struct sockaddr *)&client_in, sizeof(struct sockaddr_in)) != length) {
error("sendto");
}
}
int receiveBuffer(int length) {
return recvfrom(listener, (char *)&buffer, length, 0, (struct sockaddr *)&client_in, &sockaddr_in_sizePtr);
}

Binary file not shown.