mirror of
https://github.com/libretro/RetroArch.git
synced 2024-11-24 00:20:01 +00:00
Merge pull request #6138 from gblues/master
A handful of fixes & cleanups
This commit is contained in:
commit
214c2fe273
1
.gitignore
vendored
1
.gitignore
vendored
@ -7,6 +7,7 @@
|
|||||||
*.elf
|
*.elf
|
||||||
*.dol
|
*.dol
|
||||||
*.map
|
*.map
|
||||||
|
*.swp
|
||||||
.tmp
|
.tmp
|
||||||
.tmp.c
|
.tmp.c
|
||||||
.tmp.cxx
|
.tmp.cxx
|
||||||
|
@ -7,6 +7,7 @@ GRIFFIN_BUILD = 0
|
|||||||
SALAMANDER_BUILD = 0
|
SALAMANDER_BUILD = 0
|
||||||
WHOLE_ARCHIVE_LINK = 0
|
WHOLE_ARCHIVE_LINK = 0
|
||||||
WIIU_HID = 0
|
WIIU_HID = 0
|
||||||
|
WIIU_LOG_RPX = 0
|
||||||
BUILD_DIR = objs/wiiu
|
BUILD_DIR = objs/wiiu
|
||||||
PC_DEVELOPMENT_IP_ADDRESS ?=
|
PC_DEVELOPMENT_IP_ADDRESS ?=
|
||||||
PC_DEVELOPMENT_TCP_PORT ?=
|
PC_DEVELOPMENT_TCP_PORT ?=
|
||||||
@ -38,10 +39,24 @@ OBJ += wiiu/hbl.o
|
|||||||
|
|
||||||
DEFINES :=
|
DEFINES :=
|
||||||
|
|
||||||
|
ifeq ($(WIIU_LOG_RPX),1)
|
||||||
|
defines += -DWIIU_LOG_RPX
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(WIIU_HID),1)
|
ifeq ($(WIIU_HID),1)
|
||||||
DEFINES += -DWIIU_HID
|
DEFINES += -DWIIU_HID
|
||||||
OBJ += wiiu/input/hidpad_driver.o
|
OBJ += wiiu/input/hidpad_driver.o
|
||||||
OBJ += wiiu/input/wiiu_hid.o
|
OBJ += wiiu/input/wiiu_hid.o
|
||||||
|
OBJ += input/connect/joypad_connection.o \
|
||||||
|
input/connect/connect_ps2adapter.o \
|
||||||
|
input/connect/connect_psxadapter.o \
|
||||||
|
input/connect/connect_ps3.o \
|
||||||
|
input/connect/connect_ps4.o \
|
||||||
|
input/connect/connect_wii.o \
|
||||||
|
input/connect/connect_nesusb.o \
|
||||||
|
input/connect/connect_snesusb.o \
|
||||||
|
input/connect/connect_wiiupro.o \
|
||||||
|
input/connect/connect_wiiugca.o
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(SALAMANDER_BUILD),1)
|
ifeq ($(SALAMANDER_BUILD),1)
|
||||||
@ -95,7 +110,6 @@ else
|
|||||||
# DEFINES += -DWANT_IFADDRS
|
# DEFINES += -DWANT_IFADDRS
|
||||||
# DEFINES += -DHAVE_FREETYPE
|
# DEFINES += -DHAVE_FREETYPE
|
||||||
DEFINES += -DHAVE_XMB -DHAVE_MATERIALUI
|
DEFINES += -DHAVE_XMB -DHAVE_MATERIALUI
|
||||||
# DEFINES += -DHAVE_HID
|
|
||||||
else
|
else
|
||||||
HAVE_MENU_COMMON = 1
|
HAVE_MENU_COMMON = 1
|
||||||
HAVE_RTGA = 1
|
HAVE_RTGA = 1
|
||||||
@ -121,7 +135,6 @@ else
|
|||||||
HAVE_OVERLAY = 1
|
HAVE_OVERLAY = 1
|
||||||
HAVE_STATIC_VIDEO_FILTERS = 1
|
HAVE_STATIC_VIDEO_FILTERS = 1
|
||||||
HAVE_STATIC_AUDIO_FILTERS = 1
|
HAVE_STATIC_AUDIO_FILTERS = 1
|
||||||
# HAVE_HID = 1
|
|
||||||
WANT_LIBFAT = 1
|
WANT_LIBFAT = 1
|
||||||
WANT_IOSUHAX = 1
|
WANT_IOSUHAX = 1
|
||||||
|
|
||||||
|
69
wiiu/hbl.c
69
wiiu/hbl.c
@ -26,6 +26,10 @@
|
|||||||
|
|
||||||
#include "hbl.h"
|
#include "hbl.h"
|
||||||
|
|
||||||
|
#ifdef WIIU_LOG_RPX
|
||||||
|
#include "../verbosity.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#define MEM_AREA_TABLE ((s_mem_area*)(MEM_BASE + 0x1600))
|
#define MEM_AREA_TABLE ((s_mem_area*)(MEM_BASE + 0x1600))
|
||||||
#define ELF_DATA_ADDR (*(volatile unsigned int*)(MEM_BASE + 0x1300 + 0x00))
|
#define ELF_DATA_ADDR (*(volatile unsigned int*)(MEM_BASE + 0x1300 + 0x00))
|
||||||
#define ELF_DATA_SIZE (*(volatile unsigned int*)(MEM_BASE + 0x1300 + 0x04))
|
#define ELF_DATA_SIZE (*(volatile unsigned int*)(MEM_BASE + 0x1300 + 0x04))
|
||||||
@ -182,6 +186,62 @@ static int HomebrewCopyMemory(u8 *address, u32 bytes, u32 args_size)
|
|||||||
return bytes;
|
return bytes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef WIIU_LOG_RPX
|
||||||
|
|
||||||
|
#define LINE_LEN 32
|
||||||
|
/**
|
||||||
|
* This is called between when the RPX is read off the storage medium and
|
||||||
|
* when it is sent to the loader. It prints a hexdump to the logger, which
|
||||||
|
* can then be parsed out by a script.
|
||||||
|
*
|
||||||
|
* If we can at least semi-reliably generate the "System Memory Error", this
|
||||||
|
* can be useful in identifying if the problem is corrupt file i/o vs in-memory
|
||||||
|
* corruption.
|
||||||
|
*/
|
||||||
|
void log_rpx(const char *filepath, unsigned char *buf, size_t len)
|
||||||
|
{
|
||||||
|
unsigned int line_buffer[LINE_LEN];
|
||||||
|
int i, offset;
|
||||||
|
|
||||||
|
RARCH_LOG("=== BEGIN file=%s size=%d ===\n", filepath, len);
|
||||||
|
for(i = 0; i < len; i++)
|
||||||
|
{
|
||||||
|
offset = i % LINE_LEN;
|
||||||
|
line_buffer[offset] = buf[i];
|
||||||
|
|
||||||
|
if(offset == (LINE_LEN-1)) {
|
||||||
|
RARCH_LOG("%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x\n",
|
||||||
|
line_buffer[0], line_buffer[1], line_buffer[2], line_buffer[3],
|
||||||
|
line_buffer[4], line_buffer[5], line_buffer[6], line_buffer[7],
|
||||||
|
line_buffer[8], line_buffer[9], line_buffer[10], line_buffer[11],
|
||||||
|
line_buffer[12], line_buffer[13], line_buffer[14], line_buffer[15],
|
||||||
|
line_buffer[16], line_buffer[17], line_buffer[18], line_buffer[19],
|
||||||
|
line_buffer[20], line_buffer[21], line_buffer[22], line_buffer[23],
|
||||||
|
line_buffer[24], line_buffer[25], line_buffer[26], line_buffer[27],
|
||||||
|
line_buffer[28], line_buffer[29], line_buffer[30], line_buffer[31]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if((len % LINE_LEN) != 0) {
|
||||||
|
for(i = (LINE_LEN - (len % LINE_LEN)); i < LINE_LEN; i++)
|
||||||
|
{
|
||||||
|
line_buffer[i] = 0;
|
||||||
|
}
|
||||||
|
RARCH_LOG("%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x\n",
|
||||||
|
line_buffer[0], line_buffer[1], line_buffer[2], line_buffer[3],
|
||||||
|
line_buffer[4], line_buffer[5], line_buffer[6], line_buffer[7],
|
||||||
|
line_buffer[8], line_buffer[9], line_buffer[10], line_buffer[11],
|
||||||
|
line_buffer[16], line_buffer[17], line_buffer[18], line_buffer[19],
|
||||||
|
line_buffer[20], line_buffer[21], line_buffer[22], line_buffer[23],
|
||||||
|
line_buffer[24], line_buffer[25], line_buffer[26], line_buffer[27],
|
||||||
|
line_buffer[28], line_buffer[29], line_buffer[30], line_buffer[31]);
|
||||||
|
|
||||||
|
}
|
||||||
|
RARCH_LOG("=== END %s ===\n", filepath);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
int HBL_loadToMemory(const char *filepath, u32 args_size)
|
int HBL_loadToMemory(const char *filepath, u32 args_size)
|
||||||
{
|
{
|
||||||
if (!filepath || !*filepath)
|
if (!filepath || !*filepath)
|
||||||
@ -202,8 +262,8 @@ int HBL_loadToMemory(const char *filepath, u32 args_size)
|
|||||||
u32 fileSize = ftell(fp);
|
u32 fileSize = ftell(fp);
|
||||||
fseek(fp, 0, SEEK_SET);
|
fseek(fp, 0, SEEK_SET);
|
||||||
|
|
||||||
|
size_t buffer_size = (fileSize + 0x3f) & ~0x3f;
|
||||||
unsigned char *buffer = (unsigned char *) memalign(0x40, (fileSize + 0x3F) & ~0x3F);
|
unsigned char *buffer = (unsigned char *) memalign(0x40, buffer_size);
|
||||||
|
|
||||||
if (!buffer)
|
if (!buffer)
|
||||||
{
|
{
|
||||||
@ -211,6 +271,8 @@ int HBL_loadToMemory(const char *filepath, u32 args_size)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
memset(buffer, 0, buffer_size);
|
||||||
|
|
||||||
/* Copy rpl in memory */
|
/* Copy rpl in memory */
|
||||||
while (bytesRead < fileSize)
|
while (bytesRead < fileSize)
|
||||||
{
|
{
|
||||||
@ -242,6 +304,9 @@ int HBL_loadToMemory(const char *filepath, u32 args_size)
|
|||||||
printf("File read failure");
|
printf("File read failure");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
#ifdef WIIU_LOG_RPX
|
||||||
|
log_rpx(filepath, buffer, bytesRead);
|
||||||
|
#endif
|
||||||
|
|
||||||
int ret = HomebrewCopyMemory(buffer, bytesRead, args_size);
|
int ret = HomebrewCopyMemory(buffer, bytesRead, args_size);
|
||||||
|
|
||||||
|
@ -71,7 +71,6 @@ static bool hidpad_init(void *data)
|
|||||||
{
|
{
|
||||||
(void *)data;
|
(void *)data;
|
||||||
|
|
||||||
#if 0
|
|
||||||
hid_driver = init_hid_driver();
|
hid_driver = init_hid_driver();
|
||||||
if (!hid_driver)
|
if (!hid_driver)
|
||||||
{
|
{
|
||||||
@ -83,9 +82,6 @@ static bool hidpad_init(void *data)
|
|||||||
ready = true;
|
ready = true;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
#else
|
|
||||||
return false;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool hidpad_query_pad(unsigned pad)
|
static bool hidpad_query_pad(unsigned pad)
|
||||||
|
@ -252,7 +252,15 @@ static void stop_polling_thread(wiiu_hid_t *hid)
|
|||||||
if (!hid || !hid->polling_thread)
|
if (!hid || !hid->polling_thread)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
/* Unregister our HID client so we don't get any new events. */
|
||||||
|
if(hid->client) {
|
||||||
|
HIDDelClient(hid->client);
|
||||||
|
hid->client = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* tell the thread it's time to stop. */
|
||||||
hid->polling_thread_quit = true;
|
hid->polling_thread_quit = true;
|
||||||
|
/* This returns once the thread runs and the cleanup method completes. */
|
||||||
OSJoinThread(hid->polling_thread, &thread_result);
|
OSJoinThread(hid->polling_thread, &thread_result);
|
||||||
free(hid->polling_thread);
|
free(hid->polling_thread);
|
||||||
free(hid->polling_thread_stack);
|
free(hid->polling_thread_stack);
|
||||||
@ -494,7 +502,7 @@ static void wiiu_hid_polling_thread_cleanup(OSThread *thread, void *stack)
|
|||||||
if(adapter->state == ADAPTER_STATE_READING)
|
if(adapter->state == ADAPTER_STATE_READING)
|
||||||
incomplete++;
|
incomplete++;
|
||||||
}
|
}
|
||||||
/* We are clear for shutdown. Clean up the list
|
/* We are clear for shutdown. Clean up the list
|
||||||
* while we are holding the lock. */
|
* while we are holding the lock. */
|
||||||
if(incomplete == 0)
|
if(incomplete == 0)
|
||||||
{
|
{
|
||||||
|
@ -1,14 +1,35 @@
|
|||||||
#!/bin/sh
|
#!/bin/bash
|
||||||
|
|
||||||
if [ -z $1 ] ; then
|
#
|
||||||
echo
|
# This script listens for the WiiU network logger and prints the messages to
|
||||||
echo "usage: $0 <WiiU-ip>"
|
# the terminal.
|
||||||
echo
|
#
|
||||||
exit 0
|
# If you would like a logfile, pipe this script's output to tee.
|
||||||
|
|
||||||
|
script_dir=$(dirname $(readlink -f $0))
|
||||||
|
|
||||||
|
# Using wiiu-devel.properties ensure your make file and this listen script
|
||||||
|
# stay in sync with each other.
|
||||||
|
#
|
||||||
|
# See wiiu-devel.properties.template for instructions.
|
||||||
|
|
||||||
|
if [ -e "$script_dir/../wiiu-devel.properties" ]; then
|
||||||
|
. $script_dir/../wiiu-devel.properties
|
||||||
fi
|
fi
|
||||||
|
|
||||||
interrupt_count=0
|
if [ -z "$PC_DEVELOPMENT_TCP_PORT" ]; then
|
||||||
|
PC_DEVELOPMENT_TCP_PORT=4405
|
||||||
|
fi
|
||||||
|
|
||||||
trap 'if [ $interrupt_count -eq 20 ]; then exit 0; else interrupt_count=$(($interrupt_count + 1)); fi' INT
|
exit_listen_loop=0
|
||||||
|
|
||||||
while true; do echo; echo ========= `date` =========; echo; netcat -p 4405 -l $1; done
|
#
|
||||||
|
# This prevents a tug-of-war between bash and netcat as to who gets the
|
||||||
|
# CTRL+C code.
|
||||||
|
#
|
||||||
|
trap 'exit_listen_loop=1' SIGINT
|
||||||
|
|
||||||
|
while [ $exit_listen_loop -eq 0 ]; do
|
||||||
|
echo ========= `date` =========
|
||||||
|
netcat -p $PC_DEVELOPMENT_TCP_PORT -l
|
||||||
|
done
|
||||||
|
Loading…
Reference in New Issue
Block a user