-
Notifications
You must be signed in to change notification settings - Fork 326
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Ability to manually edit Wiimote/CC mappings #1240
base: master
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -21,6 +21,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |
/* WiiU Pro Controller Documentation from TeHaxor69 */ | ||
/* lwBT ported from LibOGC */ | ||
|
||
#define IR_CFG_FILE 0x93005180 | ||
#define IR_CFG_SIZE 0x93005184 | ||
|
||
#include "global.h" | ||
#include "string.h" | ||
#include "BT.h" | ||
|
@@ -738,10 +741,41 @@ void BTUpdateRegisters(void) | |
if(inited == 0) | ||
return; | ||
|
||
if(intr == 1) | ||
{ | ||
intr = 0; | ||
__readintrdataCB(); | ||
// Try to load Wiimote/Classic Controller bindings from ircc.ini | ||
const char *filenames[2] = { | ||
file_sd, file_usb, | ||
"sd:/ircc.ini", | ||
"usb:/ircc.ini" | ||
}; | ||
|
||
int i; | ||
FIL f; | ||
FRESULT res = FR_DISK_ERR; | ||
for (i = 0; i < 2; i++) { | ||
res = f_open_char(&f, filenames[i], FA_READ | FA_OPEN_EXISTING); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What about There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Well, it's written the same way in the HID controller loader: https://github.com/FIX94/Nintendont/blob/a69f2f134daf0f06a1b01da4b5337a984ac6dcf1/loader/source/HID.c |
||
if (res == FR_OK) | ||
break; | ||
} | ||
|
||
if (res == FR_OK) { | ||
// File found, read the configuration | ||
size_t fsize = f.obj.objsize; | ||
UINT read; | ||
f_read(&f, (void*)IR_CFG_FILE, fsize, &read); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. You might want to check return value? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yes, IR_CFG_FILE and IR_CFG_SIZE still need to be defined first with addresses. HID.c of course defines its equivalent terms, but I still need applicable addresses for Wiimotes/CC's: https://github.com/FIX94/Nintendont/blob/master/mem_map.txt For now I've allocated 0x93005180 and 0x93005184 respectively. |
||
DCFlushRange((void*)IR_CFG_FILE, fsize); | ||
f_close(&f); | ||
// Apply custom config (size is fsize) | ||
*(vu32*)IR_CFG_SIZE = fsize; | ||
} else { | ||
// No config file found; fall back to defaults | ||
*(vu32*)IR_CFG_SIZE = 0; | ||
} | ||
|
||
// Continue with the rest of the BTUpdateRegisters function | ||
if(intr == 1) | ||
{ | ||
intr = 0; | ||
__readintrdataCB(); | ||
__issue_intrread(); | ||
} | ||
if(bulk == 1) | ||
|
@@ -751,6 +785,7 @@ void BTUpdateRegisters(void) | |
__issue_bulkread(); | ||
} | ||
|
||
// Handle connected controllers | ||
u32 i = 0, j = 0; | ||
sync_before_read((void*)0x13003020,0x40); | ||
for( ; i < BTChannelsUsed; ++i) | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why not in the app directory?
Cluttering up the root directory with all kinds of files is not nice.