mirror of
https://github.com/Maschell/hid_to_vpad.git
synced 2024-11-22 06:29:15 +01:00
Now using devkitpro r29, fixed bug with configs, improved logging and changed datatypes
- Finally switching to r29 - Modifed the travis and .pl script to download r29 of devkit pro - Improved the logging (more information) - Fixed the bug when you have too many config files on the sd card (maximum now 24) - Changed all int to s32 - Some more general code cleanup
This commit is contained in:
parent
7d72d0e2ff
commit
e48fc17615
@ -31,13 +31,13 @@ before_install:
|
|||||||
- export DEVKITPPC=${DEVKITPRO}/devkitPPC
|
- export DEVKITPPC=${DEVKITPRO}/devkitPPC
|
||||||
- mkdir -p $DEVKITPRO
|
- mkdir -p $DEVKITPRO
|
||||||
- cd $DEVKITPRO
|
- cd $DEVKITPRO
|
||||||
- wget -N https://raw.githubusercontent.com/Maschell/hid_to_vpad/master/other/devkitPPCupdatePPCr27.pl
|
- wget -N https://raw.githubusercontent.com/Maschell/hid_to_vpad/master/other/devkitPPCupdatePPCr29.pl
|
||||||
- wget -N https://raw.githubusercontent.com/Maschell/hid_to_vpad/master/other/libogc.7z
|
- wget -N https://raw.githubusercontent.com/Maschell/hid_to_vpad/master/other/libogc.7z
|
||||||
- wget -N https://raw.githubusercontent.com/Maschell/hid_to_vpad/master/other/portlibs.7z
|
- wget -N https://raw.githubusercontent.com/Maschell/hid_to_vpad/master/other/portlibs.7z
|
||||||
|
|
||||||
install:
|
install:
|
||||||
- cd $DEVKITPRO
|
- cd $DEVKITPRO
|
||||||
- perl devkitPPCupdatePPCr27.pl
|
- perl devkitPPCupdatePPCr29.pl
|
||||||
- 7z x -y libogc.7z
|
- 7z x -y libogc.7z
|
||||||
- 7z x -y portlibs.7z
|
- 7z x -y portlibs.7z
|
||||||
- cp -R portlibs/ppc/* devkitPPC/
|
- cp -R portlibs/ppc/* devkitPPC/
|
||||||
|
2
Makefile
2
Makefile
@ -66,7 +66,7 @@ INCLUDES := src
|
|||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
CFLAGS := -std=gnu11 -mrvl -mcpu=750 -meabi -mhard-float -ffast-math \
|
CFLAGS := -std=gnu11 -mrvl -mcpu=750 -meabi -mhard-float -ffast-math \
|
||||||
-O3 -Wall -Wextra -Wno-unused-parameter -Wno-strict-aliasing $(INCLUDE)
|
-O3 -Wall -Wextra -Wno-unused-parameter -Wno-strict-aliasing $(INCLUDE)
|
||||||
CXXFLAGS := -std=gnu++11 -mrvl -mcpu=750 -meabi -mhard-float -ffast-math \
|
CXXFLAGS := -std=gnu++11 -mrvl -mcpu=750 -meabi -mhard-float -ffast-math -D_GNU_SOURCE \
|
||||||
-O3 -Wall -Wextra -Wno-unused-parameter -Wno-strict-aliasing $(INCLUDE)
|
-O3 -Wall -Wextra -Wno-unused-parameter -Wno-strict-aliasing $(INCLUDE)
|
||||||
ASFLAGS := -mregnames
|
ASFLAGS := -mregnames
|
||||||
LDFLAGS := -nostartfiles -Wl,-Map,$(notdir $@).map,-wrap,malloc,-wrap,free,-wrap,memalign,-wrap,calloc,-wrap,realloc,-wrap,malloc_usable_size,-wrap,_malloc_r,-wrap,_free_r,-wrap,_realloc_r,-wrap,_calloc_r,-wrap,_memalign_r,-wrap,_malloc_usable_size_r,-wrap,valloc,-wrap,_valloc_r,-wrap,_pvalloc_r,--gc-sections
|
LDFLAGS := -nostartfiles -Wl,-Map,$(notdir $@).map,-wrap,malloc,-wrap,free,-wrap,memalign,-wrap,calloc,-wrap,realloc,-wrap,malloc_usable_size,-wrap,_malloc_r,-wrap,_free_r,-wrap,_realloc_r,-wrap,_calloc_r,-wrap,_memalign_r,-wrap,_malloc_usable_size_r,-wrap,valloc,-wrap,_valloc_r,-wrap,_pvalloc_r,--gc-sections
|
||||||
|
@ -97,12 +97,12 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Grab update file
|
# Grab update file
|
||||||
if(-e "devkitProUpdatePPCr27.ini")
|
if(-e "devkitProUpdatePPCr29.ini")
|
||||||
{
|
{
|
||||||
unlink("devkitProUpdatePPCr27.ini") or die $!;
|
unlink("devkitProUpdatePPCr29.ini") or die $!;
|
||||||
}
|
}
|
||||||
printf("Downloading update file...");
|
printf("Downloading update file...");
|
||||||
system($downloader . " https://raw.githubusercontent.com/MaschellTest/hid_to_vpad/master/other/devkitProUpdatePPCr27.ini") and die "Failed to download!";
|
system($downloader . " https://raw.githubusercontent.com/Maschell/hid_to_vpad/master/other/devkitProUpdatePPCr29.ini") and die "Failed to download!";
|
||||||
printf("OK!\n");
|
printf("OK!\n");
|
||||||
|
|
||||||
# Initialize versions & newVersions
|
# Initialize versions & newVersions
|
||||||
@ -143,7 +143,7 @@
|
|||||||
|
|
||||||
my %newFiles = ();
|
my %newFiles = ();
|
||||||
|
|
||||||
open(MYFILE, "<devkitProUpdatePPCr27.ini") or die $!;
|
open(MYFILE, "<devkitProUpdatePPCr29.ini") or die $!;
|
||||||
while(<MYFILE>)
|
while(<MYFILE>)
|
||||||
{
|
{
|
||||||
chomp;
|
chomp;
|
||||||
@ -161,7 +161,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
close(MYFILE);
|
close(MYFILE);
|
||||||
unlink("devkitProUpdatePPCr27.ini") or die $!;
|
unlink("devkitProUpdatePPCr29.ini") or die $!;
|
||||||
|
|
||||||
# see what to update
|
# see what to update
|
||||||
my %updates = ();
|
my %updates = ();
|
@ -4,18 +4,18 @@ URL=http://downloads.sourceforge.net/devkitpro
|
|||||||
Filename=devkitProUpdater-1.6.0.exe
|
Filename=devkitProUpdater-1.6.0.exe
|
||||||
|
|
||||||
[msys]
|
[msys]
|
||||||
Version=1.0.17
|
Version=1.0.17-1
|
||||||
File=msys-1.0.17.exe
|
File=msys-1.0.17-1.exe
|
||||||
Size=118660
|
Size=118660
|
||||||
|
|
||||||
[devkitARM]
|
[devkitARM]
|
||||||
Version=45
|
Version=46
|
||||||
File=devkitARM_r45-win32.exe
|
File=devkitARM_r46-win32.exe
|
||||||
Size=70461
|
Size=70461
|
||||||
|
|
||||||
[devkitPPC]
|
[devkitPPC]
|
||||||
Version=27
|
Version=29-1
|
||||||
File=devkitPPC_r27-win32.exe
|
File=devkitPPC_r29-1-win32.exe
|
||||||
Size=65356
|
Size=65356
|
||||||
|
|
||||||
[devkitPSP]
|
[devkitPSP]
|
||||||
@ -29,48 +29,48 @@ File=pspsdk-doc-20051113.tar.bz2
|
|||||||
Size=9344
|
Size=9344
|
||||||
|
|
||||||
[libgba]
|
[libgba]
|
||||||
Version=20090222
|
Version=0.5.0
|
||||||
File=libgba-20090222.tar.bz2
|
File=libgba-0.5.0.tar.bz2
|
||||||
Size=268
|
Size=268
|
||||||
|
|
||||||
[libgbafat]
|
[libgbafat]
|
||||||
Version=1.0.14
|
Version=1.1.0
|
||||||
File=libfat-gba-1.0.14.tar.bz2
|
File=libfat-gba-1.1.0.tar.bz2
|
||||||
Size=241
|
Size=241
|
||||||
|
|
||||||
[maxmodgba]
|
[maxmodgba]
|
||||||
Version=1.0.9
|
Version=1.0.10
|
||||||
File=maxmod-gba-1.0.9.tar.bz2
|
File=maxmod-gba-1.0.10.tar.bz2
|
||||||
Size=
|
Size=
|
||||||
|
|
||||||
[libnds]
|
[libnds]
|
||||||
Version=1.5.12
|
Version=1.6.2
|
||||||
File=libnds-1.5.12.tar.bz2
|
File=libnds-1.6.2.tar.bz2
|
||||||
Size=470
|
Size=470
|
||||||
|
|
||||||
[libndsfat]
|
[libndsfat]
|
||||||
Version=1.0.14
|
Version=1.1.0
|
||||||
File=libfat-nds-1.0.14.tar.bz2
|
File=libfat-nds-1.1.0.tar.bz2
|
||||||
Size=272
|
Size=272
|
||||||
|
|
||||||
[maxmodds]
|
[maxmodds]
|
||||||
Version=1.0.9
|
Version=1.0.10
|
||||||
File=maxmod-nds-1.0.9.tar.bz2
|
File=maxmod-nds-1.0.10.tar.bz2
|
||||||
Size=
|
Size=
|
||||||
|
|
||||||
[dswifi]
|
[dswifi]
|
||||||
Version=0.3.17
|
Version=0.4.0
|
||||||
File=dswifi-0.3.17.tar.bz2
|
File=dswifi-0.4.0.tar.bz2
|
||||||
Size=496
|
Size=496
|
||||||
|
|
||||||
[libctru]
|
[libctru]
|
||||||
Version=1.0.0
|
Version=1.2.1
|
||||||
File=libctru-1.0.0.tar.bz2
|
File=libctru-1.2.1.tar.bz2
|
||||||
Size=371
|
Size=371
|
||||||
|
|
||||||
[citro3d]
|
[citro3d]
|
||||||
Version=1.0.0
|
Version=1.2.0
|
||||||
File=citro3d-1.0.0.tar.bz2
|
File=citro3d-1.2.0.tar.bz2
|
||||||
Size=371
|
Size=371
|
||||||
|
|
||||||
[libmirko]
|
[libmirko]
|
||||||
@ -79,13 +79,13 @@ File=libmirko-0.9.7.tar.bz2
|
|||||||
Size=1056
|
Size=1056
|
||||||
|
|
||||||
[libogc]
|
[libogc]
|
||||||
Version=1.8.12
|
Version=1.8.16
|
||||||
File=libogc-1.8.12.tar.bz2
|
File=libogc-1.8.16.tar.bz2
|
||||||
Size=2748
|
Size=2748
|
||||||
|
|
||||||
[libogcfat]
|
[libogcfat]
|
||||||
Version=1.0.14
|
Version=1.1.0
|
||||||
File=libfat-ogc-1.0.14.tar.bz2
|
File=libfat-ogc-1.1.0.tar.bz2
|
||||||
Size=481
|
Size=481
|
||||||
|
|
||||||
[pnotepad]
|
[pnotepad]
|
||||||
@ -99,23 +99,23 @@ File=insight-7.3.50.20110803-cvs.exe
|
|||||||
Size=32932
|
Size=32932
|
||||||
|
|
||||||
[ndsexamples]
|
[ndsexamples]
|
||||||
Version=20140401
|
Version=20170124
|
||||||
File=nds-examples-20140401.tar.bz2
|
File=nds-examples-20170124.tar.bz2
|
||||||
Size=1191
|
Size=1191
|
||||||
|
|
||||||
[defaultarm7]
|
[defaultarm7]
|
||||||
Version=0.6.0
|
Version=0.7.1
|
||||||
File=default_arm7-0.6.0.tar.bz2
|
File=default_arm7-0.7.1.tar.bz2
|
||||||
Size=9
|
Size=9
|
||||||
|
|
||||||
[filesystem]
|
[filesystem]
|
||||||
Version=0.9.12
|
Version=0.9.13-1
|
||||||
File=libfilesystem-0.9.12.tar.bz2
|
File=libfilesystem-0.9.13-1.tar.bz2
|
||||||
Size=9
|
Size=9
|
||||||
|
|
||||||
[gbaexamples]
|
[gbaexamples]
|
||||||
Version=20090222
|
Version=20170228
|
||||||
File=gba-examples-20090222.tar.bz2
|
File=gba-examples-20170228.tar.bz2
|
||||||
Size=1019
|
Size=1019
|
||||||
|
|
||||||
[gp32examples]
|
[gp32examples]
|
||||||
@ -124,18 +124,18 @@ File=gp32-examples-20051021.tar.bz2
|
|||||||
Size=732
|
Size=732
|
||||||
|
|
||||||
[cubeexamples]
|
[cubeexamples]
|
||||||
Version=20110620
|
Version=20170228
|
||||||
File=gamecube-examples-20110620.tar.bz2
|
File=gamecube-examples-20170228.tar.bz2
|
||||||
Size=198
|
Size=198
|
||||||
|
|
||||||
[wiiexamples]
|
[wiiexamples]
|
||||||
Version=20110620
|
Version=20170228
|
||||||
File=wii-examples-20110620.tar.bz2
|
File=wii-examples-20170228.tar.bz2
|
||||||
Size=93
|
Size=93
|
||||||
|
|
||||||
[3dsexamples]
|
[3dsexamples]
|
||||||
Version=20151219
|
Version=20170226
|
||||||
File=3ds-examples-20151219.tar.bz2
|
File=3ds-examples-20170226.tar.bz2
|
||||||
Size=93
|
Size=93
|
||||||
|
|
||||||
[gcube]
|
[gcube]
|
Binary file not shown.
@ -48,19 +48,19 @@ Application::Application()
|
|||||||
}
|
}
|
||||||
|
|
||||||
Application::~Application(){
|
Application::~Application(){
|
||||||
log_printf("Destroy music\n");
|
log_printf("Application::~Application: Destroy music\n");
|
||||||
|
|
||||||
delete bgMusic;
|
delete bgMusic;
|
||||||
|
|
||||||
log_printf("Destroy controller\n");
|
log_printf("Application::~Application: Destroy controller\n");
|
||||||
|
|
||||||
for(int i = 0; i < 5; i++)
|
for(s32 i = 0; i < 5; i++)
|
||||||
delete controller[i];
|
delete controller[i];
|
||||||
|
|
||||||
//We may have to handle Asyncdelete in the Destructors.
|
//We may have to handle Asyncdelete in the Destructors.
|
||||||
log_printf("Destroy async deleter\n");
|
log_printf("Application::~Application: Destroy async deleter\n");
|
||||||
do{
|
do{
|
||||||
log_printf("Triggering AsyncDeleter\n");
|
log_printf("Application::~Application: Triggering AsyncDeleter\n");
|
||||||
AsyncDeleter::triggerDeleteProcess();
|
AsyncDeleter::triggerDeleteProcess();
|
||||||
while(!AsyncDeleter::realListEmpty()){
|
while(!AsyncDeleter::realListEmpty()){
|
||||||
usleep(1000);
|
usleep(1000);
|
||||||
@ -68,14 +68,14 @@ Application::~Application(){
|
|||||||
}while(!AsyncDeleter::deleteListEmpty());
|
}while(!AsyncDeleter::deleteListEmpty());
|
||||||
AsyncDeleter::destroyInstance();
|
AsyncDeleter::destroyInstance();
|
||||||
|
|
||||||
log_printf("Clear resources\n");
|
log_printf("Application::~Application: Clear resources\n");
|
||||||
Resources::Clear();
|
Resources::Clear();
|
||||||
|
|
||||||
log_printf("Stop sound handler\n");
|
log_printf("Application::~Application: Stop sound handler\n");
|
||||||
SoundHandler::DestroyInstance();
|
SoundHandler::DestroyInstance();
|
||||||
}
|
}
|
||||||
|
|
||||||
int Application::exec(){
|
s32 Application::exec(){
|
||||||
//! start main GX2 thread
|
//! start main GX2 thread
|
||||||
resumeThread();
|
resumeThread();
|
||||||
//! now wait for thread to finish
|
//! now wait for thread to finish
|
||||||
@ -87,7 +87,7 @@ int Application::exec(){
|
|||||||
void Application::fadeOut(){
|
void Application::fadeOut(){
|
||||||
GuiImage fadeOut(video->getTvWidth(), video->getTvHeight(), (GX2Color){ 0, 0, 0, 255 });
|
GuiImage fadeOut(video->getTvWidth(), video->getTvHeight(), (GX2Color){ 0, 0, 0, 255 });
|
||||||
|
|
||||||
for(int i = 0; i < 255; i += 10)
|
for(s32 i = 0; i < 255; i += 10)
|
||||||
{
|
{
|
||||||
if(i > 255)
|
if(i > 255)
|
||||||
i = 255;
|
i = 255;
|
||||||
@ -132,17 +132,17 @@ void Application::fadeOut(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Application::executeThread(void){
|
void Application::executeThread(void){
|
||||||
log_printf("Initialize video\n");
|
log_printf("Application::executeThread: Initialize video\n");
|
||||||
video = new CVideo(GX2_TV_SCAN_MODE_720P, GX2_DRC_SINGLE);
|
video = new CVideo(GX2_TV_SCAN_MODE_720P, GX2_DRC_SINGLE);
|
||||||
|
|
||||||
log_printf("Video size %i x %i\n", video->getTvWidth(), video->getTvHeight());
|
log_printf("Application::executeThread: Video size %i x %i\n", video->getTvWidth(), video->getTvHeight());
|
||||||
|
|
||||||
//! setup default Font
|
//! setup default Font
|
||||||
log_printf("Initialize main font system\n");
|
log_printf("Application::executeThread: Initialize main font system\n");
|
||||||
FreeTypeGX *fontSystem = new FreeTypeGX(Resources::GetFile("font.ttf"), Resources::GetFileSize("font.ttf"), true);
|
FreeTypeGX *fontSystem = new FreeTypeGX(Resources::GetFile("font.ttf"), Resources::GetFileSize("font.ttf"), true);
|
||||||
GuiText::setPresetFont(fontSystem);
|
GuiText::setPresetFont(fontSystem);
|
||||||
|
|
||||||
log_printf("Initialize main window\n");
|
log_printf("Application::executeThread: Initialize main window\n");
|
||||||
|
|
||||||
mainWindow = MainWindow::getInstance(video->getTvWidth(), video->getTvHeight());
|
mainWindow = MainWindow::getInstance(video->getTvWidth(), video->getTvHeight());
|
||||||
|
|
||||||
@ -150,13 +150,13 @@ void Application::executeThread(void){
|
|||||||
bgMusic->Play();
|
bgMusic->Play();
|
||||||
bgMusic->SetVolume(50);
|
bgMusic->SetVolume(50);
|
||||||
|
|
||||||
log_printf("Entering main loop\n");
|
log_printf("Application::executeThread: Entering main loop\n");
|
||||||
|
|
||||||
//! main GX2 loop (60 Hz cycle with max priority on core 1)
|
//! main GX2 loop (60 Hz cycle with max priority on core 1)
|
||||||
while(!exitApplication)
|
while(!exitApplication)
|
||||||
{
|
{
|
||||||
//! Read out inputs
|
//! Read out inputs
|
||||||
for(int i = 0; i < 5; i++)
|
for(s32 i = 0; i < 5; i++)
|
||||||
{
|
{
|
||||||
if(controller[i]->update(video->getTvWidth(), video->getTvHeight()) == false)
|
if(controller[i]->update(video->getTvWidth(), video->getTvHeight()) == false)
|
||||||
continue;
|
continue;
|
||||||
|
@ -51,10 +51,10 @@ public:
|
|||||||
return bgMusic;
|
return bgMusic;
|
||||||
}
|
}
|
||||||
|
|
||||||
int exec(void);
|
s32 exec(void);
|
||||||
void fadeOut(void);
|
void fadeOut(void);
|
||||||
|
|
||||||
void quit(int code) {
|
void quit(s32 code) {
|
||||||
exitCode = code;
|
exitCode = code;
|
||||||
exitApplication = true;
|
exitApplication = true;
|
||||||
}
|
}
|
||||||
@ -71,7 +71,7 @@ private:
|
|||||||
CVideo *video;
|
CVideo *video;
|
||||||
MainWindow *mainWindow;
|
MainWindow *mainWindow;
|
||||||
GuiController *controller[5];
|
GuiController *controller[5];
|
||||||
int exitCode;
|
s32 exitCode;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif //_APPLICATION_H
|
#endif //_APPLICATION_H
|
||||||
|
@ -38,10 +38,10 @@ extern "C" {
|
|||||||
#define MEM_BASE (0x00800000)
|
#define MEM_BASE (0x00800000)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define ELF_DATA_ADDR (*(volatile unsigned int*)(MEM_BASE + 0x1300 + 0x00))
|
#define ELF_DATA_ADDR (*(volatile u32*)(MEM_BASE + 0x1300 + 0x00))
|
||||||
#define ELF_DATA_SIZE (*(volatile unsigned int*)(MEM_BASE + 0x1300 + 0x04))
|
#define ELF_DATA_SIZE (*(volatile u32*)(MEM_BASE + 0x1300 + 0x04))
|
||||||
#define MAIN_ENTRY_ADDR (*(volatile unsigned int*)(MEM_BASE + 0x1400 + 0x00))
|
#define MAIN_ENTRY_ADDR (*(volatile u32*)(MEM_BASE + 0x1400 + 0x00))
|
||||||
#define OS_FIRMWARE (*(volatile unsigned int*)(MEM_BASE + 0x1400 + 0x04))
|
#define OS_FIRMWARE (*(volatile u32*)(MEM_BASE + 0x1400 + 0x04))
|
||||||
|
|
||||||
#define OS_SPECIFICS ((OsSpecifics*)(MEM_BASE + 0x1500))
|
#define OS_SPECIFICS ((OsSpecifics*)(MEM_BASE + 0x1500))
|
||||||
|
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit 5a3aa0d0aab1d1729f46f01c5b53f72a4a2dbd92
|
Subproject commit 73bf9bfb74b74967fe017dedde2041e31397d75a
|
@ -1 +1 @@
|
|||||||
Subproject commit 5e01fb7d3f458fafa4f7e321f963eecd05e89874
|
Subproject commit a136b12c5225d932a73c299cb0edb638930f2d67
|
@ -5,7 +5,7 @@
|
|||||||
#include "utils/utils.h"
|
#include "utils/utils.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
|
|
||||||
int __entry_menu(int argc, char **argv)
|
int __entry_menu(s32 argc, char **argv)
|
||||||
{
|
{
|
||||||
//! *******************************************************************
|
//! *******************************************************************
|
||||||
//! * Jump to our application *
|
//! * Jump to our application *
|
||||||
|
@ -16,7 +16,7 @@ CFile::CFile(const std::string & filepath, eOpenTypes mode)
|
|||||||
this->open(filepath, mode);
|
this->open(filepath, mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
CFile::CFile(const u8 * mem, int size)
|
CFile::CFile(const u8 * mem, s32 size)
|
||||||
{
|
{
|
||||||
iFd = -1;
|
iFd = -1;
|
||||||
this->open(mem, size);
|
this->open(mem, size);
|
||||||
@ -27,7 +27,7 @@ CFile::~CFile()
|
|||||||
this->close();
|
this->close();
|
||||||
}
|
}
|
||||||
|
|
||||||
int CFile::open(const std::string & filepath, eOpenTypes mode)
|
s32 CFile::open(const std::string & filepath, eOpenTypes mode)
|
||||||
{
|
{
|
||||||
this->close();
|
this->close();
|
||||||
|
|
||||||
@ -65,7 +65,7 @@ int CFile::open(const std::string & filepath, eOpenTypes mode)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int CFile::open(const u8 * mem, int size)
|
s32 CFile::open(const u8 * mem, s32 size)
|
||||||
{
|
{
|
||||||
this->close();
|
this->close();
|
||||||
|
|
||||||
@ -86,17 +86,17 @@ void CFile::close()
|
|||||||
pos = 0;
|
pos = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int CFile::read(u8 * ptr, size_t size)
|
s32 CFile::read(u8 * ptr, size_t size)
|
||||||
{
|
{
|
||||||
if(iFd >= 0)
|
if(iFd >= 0)
|
||||||
{
|
{
|
||||||
int ret = ::read(iFd, ptr,size);
|
s32 ret = ::read(iFd, ptr,size);
|
||||||
if(ret > 0)
|
if(ret > 0)
|
||||||
pos += ret;
|
pos += ret;
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int readsize = size;
|
s32 readsize = size;
|
||||||
|
|
||||||
if(readsize > (s64) (filesize-pos))
|
if(readsize > (s64) (filesize-pos))
|
||||||
readsize = filesize-pos;
|
readsize = filesize-pos;
|
||||||
@ -114,14 +114,14 @@ int CFile::read(u8 * ptr, size_t size)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int CFile::write(const u8 * ptr, size_t size)
|
s32 CFile::write(const u8 * ptr, size_t size)
|
||||||
{
|
{
|
||||||
if(iFd >= 0)
|
if(iFd >= 0)
|
||||||
{
|
{
|
||||||
size_t done = 0;
|
size_t done = 0;
|
||||||
while(done < size)
|
while(done < size)
|
||||||
{
|
{
|
||||||
int ret = ::write(iFd, ptr, size - done);
|
s32 ret = ::write(iFd, ptr, size - done);
|
||||||
if(ret <= 0)
|
if(ret <= 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
@ -135,9 +135,9 @@ int CFile::write(const u8 * ptr, size_t size)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int CFile::seek(long int offset, int origin)
|
s32 CFile::seek(long int offset, s32 origin)
|
||||||
{
|
{
|
||||||
int ret = 0;
|
s32 ret = 0;
|
||||||
s64 newPos = pos;
|
s64 newPos = pos;
|
||||||
|
|
||||||
if(origin == SEEK_SET)
|
if(origin == SEEK_SET)
|
||||||
@ -175,9 +175,9 @@ int CFile::seek(long int offset, int origin)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int CFile::fwrite(const char *format, ...)
|
s32 CFile::fwrite(const char *format, ...)
|
||||||
{
|
{
|
||||||
int result = -1;
|
s32 result = -1;
|
||||||
char * tmp = NULL;
|
char * tmp = NULL;
|
||||||
|
|
||||||
va_list va;
|
va_list va;
|
||||||
|
@ -21,11 +21,11 @@ class CFile
|
|||||||
|
|
||||||
CFile();
|
CFile();
|
||||||
CFile(const std::string & filepath, eOpenTypes mode);
|
CFile(const std::string & filepath, eOpenTypes mode);
|
||||||
CFile(const u8 * memory, int memsize);
|
CFile(const u8 * memory, s32 memsize);
|
||||||
virtual ~CFile();
|
virtual ~CFile();
|
||||||
|
|
||||||
int open(const std::string & filepath, eOpenTypes mode);
|
s32 open(const std::string & filepath, eOpenTypes mode);
|
||||||
int open(const u8 * memory, int memsize);
|
s32 open(const u8 * memory, s32 memsize);
|
||||||
|
|
||||||
bool isOpen() const {
|
bool isOpen() const {
|
||||||
if(iFd >= 0)
|
if(iFd >= 0)
|
||||||
@ -39,16 +39,16 @@ class CFile
|
|||||||
|
|
||||||
void close();
|
void close();
|
||||||
|
|
||||||
int read(u8 * ptr, size_t size);
|
s32 read(u8 * ptr, size_t size);
|
||||||
int write(const u8 * ptr, size_t size);
|
s32 write(const u8 * ptr, size_t size);
|
||||||
int fwrite(const char *format, ...);
|
s32 fwrite(const char *format, ...);
|
||||||
int seek(long int offset, int origin);
|
s32 seek(long int offset, s32 origin);
|
||||||
u64 tell() { return pos; };
|
u64 tell() { return pos; };
|
||||||
u64 size() { return filesize; };
|
u64 size() { return filesize; };
|
||||||
void rewind() { this->seek(0, SEEK_SET); };
|
void rewind() { this->seek(0, SEEK_SET); };
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
int iFd;
|
s32 iFd;
|
||||||
const u8 * mem_file;
|
const u8 * mem_file;
|
||||||
u64 filesize;
|
u64 filesize;
|
||||||
u64 pos;
|
u64 pos;
|
||||||
|
@ -96,7 +96,7 @@ bool DirList::InternalLoadPath(std::string &folderpath)
|
|||||||
|
|
||||||
if(Flags & CheckSubfolders)
|
if(Flags & CheckSubfolders)
|
||||||
{
|
{
|
||||||
int length = folderpath.size();
|
s32 length = folderpath.size();
|
||||||
if(length > 2 && folderpath[length-1] != '/')
|
if(length > 2 && folderpath[length-1] != '/')
|
||||||
folderpath += '/';
|
folderpath += '/';
|
||||||
folderpath += filename;
|
folderpath += filename;
|
||||||
@ -136,7 +136,7 @@ void DirList::AddEntrie(const std::string &filepath, const char * filename, bool
|
|||||||
if(!filename)
|
if(!filename)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
int pos = FileInfo.size();
|
s32 pos = FileInfo.size();
|
||||||
|
|
||||||
FileInfo.resize(pos+1);
|
FileInfo.resize(pos+1);
|
||||||
|
|
||||||
@ -165,7 +165,7 @@ void DirList::ClearList()
|
|||||||
std::vector<DirEntry>().swap(FileInfo);
|
std::vector<DirEntry>().swap(FileInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
const char * DirList::GetFilename(int ind) const
|
const char * DirList::GetFilename(s32 ind) const
|
||||||
{
|
{
|
||||||
if (!valid(ind))
|
if (!valid(ind))
|
||||||
return "";
|
return "";
|
||||||
@ -199,7 +199,7 @@ void DirList::SortList(bool (*SortFunc)(const DirEntry &a, const DirEntry &b))
|
|||||||
std::sort(FileInfo.begin(), FileInfo.end(), SortFunc);
|
std::sort(FileInfo.begin(), FileInfo.end(), SortFunc);
|
||||||
}
|
}
|
||||||
|
|
||||||
u64 DirList::GetFilesize(int index) const
|
u64 DirList::GetFilesize(s32 index) const
|
||||||
{
|
{
|
||||||
struct stat st;
|
struct stat st;
|
||||||
const char *path = GetFilepath(index);
|
const char *path = GetFilepath(index);
|
||||||
@ -210,7 +210,7 @@ u64 DirList::GetFilesize(int index) const
|
|||||||
return st.st_size;
|
return st.st_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
int DirList::GetFileIndex(const char *filename) const
|
s32 DirList::GetFileIndex(const char *filename) const
|
||||||
{
|
{
|
||||||
if(!filename)
|
if(!filename)
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -52,24 +52,24 @@ public:
|
|||||||
bool LoadPath(const std::string & path, const char *filter = NULL, u32 flags = Files | Dirs);
|
bool LoadPath(const std::string & path, const char *filter = NULL, u32 flags = Files | Dirs);
|
||||||
//! Get a filename of the list
|
//! Get a filename of the list
|
||||||
//!\param list index
|
//!\param list index
|
||||||
const char * GetFilename(int index) const;
|
const char * GetFilename(s32 index) const;
|
||||||
//! Get the a filepath of the list
|
//! Get the a filepath of the list
|
||||||
//!\param list index
|
//!\param list index
|
||||||
const char *GetFilepath(int index) const { if (!valid(index)) return ""; else return FileInfo[index].FilePath; }
|
const char *GetFilepath(s32 index) const { if (!valid(index)) return ""; else return FileInfo[index].FilePath; }
|
||||||
//! Get the a filesize of the list
|
//! Get the a filesize of the list
|
||||||
//!\param list index
|
//!\param list index
|
||||||
u64 GetFilesize(int index) const;
|
u64 GetFilesize(s32 index) const;
|
||||||
//! Is index a dir or a file
|
//! Is index a dir or a file
|
||||||
//!\param list index
|
//!\param list index
|
||||||
bool IsDir(int index) const { if(!valid(index)) return false; return FileInfo[index].isDir; };
|
bool IsDir(s32 index) const { if(!valid(index)) return false; return FileInfo[index].isDir; };
|
||||||
//! Get the filecount of the whole list
|
//! Get the filecount of the whole list
|
||||||
int GetFilecount() const { return FileInfo.size(); };
|
s32 GetFilecount() const { return FileInfo.size(); };
|
||||||
//! Sort list by filepath
|
//! Sort list by filepath
|
||||||
void SortList();
|
void SortList();
|
||||||
//! Custom sort command for custom sort functions definitions
|
//! Custom sort command for custom sort functions definitions
|
||||||
void SortList(bool (*SortFunc)(const DirEntry &a, const DirEntry &b));
|
void SortList(bool (*SortFunc)(const DirEntry &a, const DirEntry &b));
|
||||||
//! Get the index of the specified filename
|
//! Get the index of the specified filename
|
||||||
int GetFileIndex(const char *filename) const;
|
s32 GetFileIndex(const char *filename) const;
|
||||||
//! Enum for search/filter flags
|
//! Enum for search/filter flags
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
|
@ -6,9 +6,9 @@
|
|||||||
#include "dynamic_libs/fs_defs.h"
|
#include "dynamic_libs/fs_defs.h"
|
||||||
#include "dynamic_libs/fs_functions.h"
|
#include "dynamic_libs/fs_functions.h"
|
||||||
|
|
||||||
int MountFS(void *pClient, void *pCmd, char **mount_path)
|
s32 MountFS(void *pClient, void *pCmd, char **mount_path)
|
||||||
{
|
{
|
||||||
int result = -1;
|
s32 result = -1;
|
||||||
|
|
||||||
void *mountSrc = malloc(FS_MOUNT_SOURCE_SIZE);
|
void *mountSrc = malloc(FS_MOUNT_SOURCE_SIZE);
|
||||||
if(!mountSrc)
|
if(!mountSrc)
|
||||||
@ -44,22 +44,22 @@ int MountFS(void *pClient, void *pCmd, char **mount_path)
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
int UmountFS(void *pClient, void *pCmd, const char *mountPath)
|
s32 UmountFS(void *pClient, void *pCmd, const char *mountPath)
|
||||||
{
|
{
|
||||||
int result = -1;
|
s32 result = -1;
|
||||||
result = FSUnmount(pClient, pCmd, mountPath, -1);
|
result = FSUnmount(pClient, pCmd, mountPath, -1);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
int LoadFileToMem(const char *filepath, u8 **inbuffer, u32 *size)
|
s32 LoadFileToMem(const char *filepath, u8 **inbuffer, u32 *size)
|
||||||
{
|
{
|
||||||
//! always initialze input
|
//! always initialze input
|
||||||
*inbuffer = NULL;
|
*inbuffer = NULL;
|
||||||
if(size)
|
if(size)
|
||||||
*size = 0;
|
*size = 0;
|
||||||
|
|
||||||
int iFd = open(filepath, O_RDONLY);
|
s32 iFd = open(filepath, O_RDONLY);
|
||||||
if (iFd < 0)
|
if (iFd < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
@ -75,7 +75,7 @@ int LoadFileToMem(const char *filepath, u8 **inbuffer, u32 *size)
|
|||||||
|
|
||||||
u32 blocksize = 0x4000;
|
u32 blocksize = 0x4000;
|
||||||
u32 done = 0;
|
u32 done = 0;
|
||||||
int readBytes = 0;
|
s32 readBytes = 0;
|
||||||
|
|
||||||
while(done < filesize)
|
while(done < filesize)
|
||||||
{
|
{
|
||||||
@ -100,13 +100,14 @@ int LoadFileToMem(const char *filepath, u8 **inbuffer, u32 *size)
|
|||||||
*inbuffer = buffer;
|
*inbuffer = buffer;
|
||||||
|
|
||||||
//! sign is optional input
|
//! sign is optional input
|
||||||
if(size)
|
if(size){
|
||||||
*size = filesize;
|
*size = filesize;
|
||||||
|
}
|
||||||
|
|
||||||
return filesize;
|
return filesize;
|
||||||
}
|
}
|
||||||
|
|
||||||
int CheckFile(const char * filepath)
|
s32 CheckFile(const char * filepath)
|
||||||
{
|
{
|
||||||
if(!filepath)
|
if(!filepath)
|
||||||
return 0;
|
return 0;
|
||||||
@ -131,17 +132,17 @@ int CheckFile(const char * filepath)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int CreateSubfolder(const char * fullpath)
|
s32 CreateSubfolder(const char * fullpath)
|
||||||
{
|
{
|
||||||
if(!fullpath)
|
if(!fullpath)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
int result = 0;
|
s32 result = 0;
|
||||||
|
|
||||||
char dirnoslash[strlen(fullpath)+1];
|
char dirnoslash[strlen(fullpath)+1];
|
||||||
strcpy(dirnoslash, fullpath);
|
strcpy(dirnoslash, fullpath);
|
||||||
|
|
||||||
int pos = strlen(dirnoslash)-1;
|
s32 pos = strlen(dirnoslash)-1;
|
||||||
while(dirnoslash[pos] == '/')
|
while(dirnoslash[pos] == '/')
|
||||||
{
|
{
|
||||||
dirnoslash[pos] = '\0';
|
dirnoslash[pos] = '\0';
|
||||||
|
@ -7,14 +7,14 @@ extern "C" {
|
|||||||
|
|
||||||
#include <gctypes.h>
|
#include <gctypes.h>
|
||||||
|
|
||||||
int MountFS(void *pClient, void *pCmd, char **mount_path);
|
s32 MountFS(void *pClient, void *pCmd, char **mount_path);
|
||||||
int UmountFS(void *pClient, void *pCmd, const char *mountPath);
|
s32 UmountFS(void *pClient, void *pCmd, const char *mountPath);
|
||||||
|
|
||||||
int LoadFileToMem(const char *filepath, u8 **inbuffer, u32 *size);
|
s32 LoadFileToMem(const char *filepath, u8 **inbuffer, u32 *size);
|
||||||
|
|
||||||
//! todo: C++ class
|
//! todo: C++ class
|
||||||
int CreateSubfolder(const char * fullpath);
|
s32 CreateSubfolder(const char * fullpath);
|
||||||
int CheckFile(const char * filepath);
|
s32 CheckFile(const char * filepath);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
@ -45,8 +45,8 @@ typedef struct _sd_fat_private_t {
|
|||||||
|
|
||||||
typedef struct _sd_fat_file_state_t {
|
typedef struct _sd_fat_file_state_t {
|
||||||
sd_fat_private_t *dev;
|
sd_fat_private_t *dev;
|
||||||
int fd; /* File descriptor */
|
s32 fd; /* File descriptor */
|
||||||
int flags; /* Opening flags */
|
s32 flags; /* Opening flags */
|
||||||
bool read; /* True if allowed to read from file */
|
bool read; /* True if allowed to read from file */
|
||||||
bool write; /* True if allowed to write to file */
|
bool write; /* True if allowed to write to file */
|
||||||
bool append; /* True if allowed to append to file */
|
bool append; /* True if allowed to append to file */
|
||||||
@ -58,14 +58,14 @@ typedef struct _sd_fat_file_state_t {
|
|||||||
|
|
||||||
typedef struct _sd_fat_dir_entry_t {
|
typedef struct _sd_fat_dir_entry_t {
|
||||||
sd_fat_private_t *dev;
|
sd_fat_private_t *dev;
|
||||||
int dirHandle;
|
s32 dirHandle;
|
||||||
} sd_fat_dir_entry_t;
|
} sd_fat_dir_entry_t;
|
||||||
|
|
||||||
static sd_fat_private_t *sd_fat_get_device_data(const char *path)
|
static sd_fat_private_t *sd_fat_get_device_data(const char *path)
|
||||||
{
|
{
|
||||||
const devoptab_t *devoptab = NULL;
|
const devoptab_t *devoptab = NULL;
|
||||||
char name[128] = {0};
|
char name[128] = {0};
|
||||||
int i;
|
s32 i;
|
||||||
|
|
||||||
// Get the device name from the path
|
// Get the device name from the path
|
||||||
strncpy(name, path, 127);
|
strncpy(name, path, 127);
|
||||||
@ -98,7 +98,7 @@ static char *sd_fat_real_path (const char *path, sd_fat_private_t *dev)
|
|||||||
path = strchr(path, ':') + 1;
|
path = strchr(path, ':') + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int mount_len = strlen(dev->mount_path);
|
s32 mount_len = strlen(dev->mount_path);
|
||||||
|
|
||||||
char *new_name = (char*)malloc(mount_len + strlen(path) + 1);
|
char *new_name = (char*)malloc(mount_len + strlen(path) + 1);
|
||||||
if(new_name) {
|
if(new_name) {
|
||||||
@ -109,7 +109,7 @@ static char *sd_fat_real_path (const char *path, sd_fat_private_t *dev)
|
|||||||
return new_name;
|
return new_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int sd_fat_open_r (struct _reent *r, void *fileStruct, const char *path, int flags, int mode)
|
static s32 sd_fat_open_r (struct _reent *r, void *fileStruct, const char *path, s32 flags, s32 mode)
|
||||||
{
|
{
|
||||||
sd_fat_private_t *dev = sd_fat_get_device_data(path);
|
sd_fat_private_t *dev = sd_fat_get_device_data(path);
|
||||||
if(!dev) {
|
if(!dev) {
|
||||||
@ -145,7 +145,7 @@ static int sd_fat_open_r (struct _reent *r, void *fileStruct, const char *path,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int fd = -1;
|
s32 fd = -1;
|
||||||
|
|
||||||
OSLockMutex(dev->pMutex);
|
OSLockMutex(dev->pMutex);
|
||||||
|
|
||||||
@ -156,7 +156,7 @@ static int sd_fat_open_r (struct _reent *r, void *fileStruct, const char *path,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int result = FSOpenFile(dev->pClient, dev->pCmd, real_path, mode_str, &fd, -1);
|
s32 result = FSOpenFile(dev->pClient, dev->pCmd, real_path, mode_str, &fd, (s32)-1);
|
||||||
|
|
||||||
free(real_path);
|
free(real_path);
|
||||||
|
|
||||||
@ -174,7 +174,7 @@ static int sd_fat_open_r (struct _reent *r, void *fileStruct, const char *path,
|
|||||||
file->pos = 0;
|
file->pos = 0;
|
||||||
file->len = stats.size;
|
file->len = stats.size;
|
||||||
OSUnlockMutex(dev->pMutex);
|
OSUnlockMutex(dev->pMutex);
|
||||||
return (int)file;
|
return (s32)file;
|
||||||
}
|
}
|
||||||
|
|
||||||
r->_errno = result;
|
r->_errno = result;
|
||||||
@ -183,7 +183,7 @@ static int sd_fat_open_r (struct _reent *r, void *fileStruct, const char *path,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int sd_fat_close_r (struct _reent *r, int fd)
|
static s32 sd_fat_close_r (struct _reent *r, s32 fd)
|
||||||
{
|
{
|
||||||
sd_fat_file_state_t *file = (sd_fat_file_state_t *)fd;
|
sd_fat_file_state_t *file = (sd_fat_file_state_t *)fd;
|
||||||
if(!file->dev) {
|
if(!file->dev) {
|
||||||
@ -193,7 +193,7 @@ static int sd_fat_close_r (struct _reent *r, int fd)
|
|||||||
|
|
||||||
OSLockMutex(file->dev->pMutex);
|
OSLockMutex(file->dev->pMutex);
|
||||||
|
|
||||||
int result = FSCloseFile(file->dev->pClient, file->dev->pCmd, file->fd, -1);
|
s32 result = FSCloseFile(file->dev->pClient, file->dev->pCmd, file->fd, -1);
|
||||||
|
|
||||||
OSUnlockMutex(file->dev->pMutex);
|
OSUnlockMutex(file->dev->pMutex);
|
||||||
|
|
||||||
@ -205,7 +205,7 @@ static int sd_fat_close_r (struct _reent *r, int fd)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static off_t sd_fat_seek_r (struct _reent *r, int fd, off_t pos, int dir)
|
static off_t sd_fat_seek_r (struct _reent *r, s32 fd, off_t pos, s32 dir)
|
||||||
{
|
{
|
||||||
sd_fat_file_state_t *file = (sd_fat_file_state_t *)fd;
|
sd_fat_file_state_t *file = (sd_fat_file_state_t *)fd;
|
||||||
if(!file->dev) {
|
if(!file->dev) {
|
||||||
@ -231,7 +231,7 @@ static off_t sd_fat_seek_r (struct _reent *r, int fd, off_t pos, int dir)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int result = FSSetPosFile(file->dev->pClient, file->dev->pCmd, file->fd, file->pos, -1);
|
s32 result = FSSetPosFile(file->dev->pClient, file->dev->pCmd, file->fd, file->pos, -1);
|
||||||
|
|
||||||
OSUnlockMutex(file->dev->pMutex);
|
OSUnlockMutex(file->dev->pMutex);
|
||||||
|
|
||||||
@ -243,7 +243,7 @@ static off_t sd_fat_seek_r (struct _reent *r, int fd, off_t pos, int dir)
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
static ssize_t sd_fat_write_r (struct _reent *r, int fd, const char *ptr, size_t len)
|
static ssize_t sd_fat_write_r (struct _reent *r, s32 fd, const char *ptr, size_t len)
|
||||||
{
|
{
|
||||||
sd_fat_file_state_t *file = (sd_fat_file_state_t *)fd;
|
sd_fat_file_state_t *file = (sd_fat_file_state_t *)fd;
|
||||||
if(!file->dev) {
|
if(!file->dev) {
|
||||||
@ -277,7 +277,7 @@ static ssize_t sd_fat_write_r (struct _reent *r, int fd, const char *ptr, size_t
|
|||||||
size_t write_size = (len_aligned < (len - done)) ? len_aligned : (len - done);
|
size_t write_size = (len_aligned < (len - done)) ? len_aligned : (len - done);
|
||||||
memcpy(tmpBuf, ptr + done, write_size);
|
memcpy(tmpBuf, ptr + done, write_size);
|
||||||
|
|
||||||
int result = FSWriteFile(file->dev->pClient, file->dev->pCmd, tmpBuf, 0x01, write_size, file->fd, 0, -1);
|
s32 result = FSWriteFile(file->dev->pClient, file->dev->pCmd, tmpBuf, 0x01, write_size, file->fd, 0, -1);
|
||||||
if(result < 0)
|
if(result < 0)
|
||||||
{
|
{
|
||||||
r->_errno = result;
|
r->_errno = result;
|
||||||
@ -302,7 +302,7 @@ static ssize_t sd_fat_write_r (struct _reent *r, int fd, const char *ptr, size_t
|
|||||||
return done;
|
return done;
|
||||||
}
|
}
|
||||||
|
|
||||||
static ssize_t sd_fat_read_r (struct _reent *r, int fd, char *ptr, size_t len)
|
static ssize_t sd_fat_read_r (struct _reent *r, s32 fd, char *ptr, size_t len)
|
||||||
{
|
{
|
||||||
sd_fat_file_state_t *file = (sd_fat_file_state_t *)fd;
|
sd_fat_file_state_t *file = (sd_fat_file_state_t *)fd;
|
||||||
if(!file->dev) {
|
if(!file->dev) {
|
||||||
@ -335,7 +335,7 @@ static ssize_t sd_fat_read_r (struct _reent *r, int fd, char *ptr, size_t len)
|
|||||||
{
|
{
|
||||||
size_t read_size = (len_aligned < (len - done)) ? len_aligned : (len - done);
|
size_t read_size = (len_aligned < (len - done)) ? len_aligned : (len - done);
|
||||||
|
|
||||||
int result = FSReadFile(file->dev->pClient, file->dev->pCmd, tmpBuf, 0x01, read_size, file->fd, 0, -1);
|
s32 result = FSReadFile(file->dev->pClient, file->dev->pCmd, tmpBuf, 0x01, read_size, file->fd, 0, -1);
|
||||||
if(result < 0)
|
if(result < 0)
|
||||||
{
|
{
|
||||||
r->_errno = result;
|
r->_errno = result;
|
||||||
@ -362,7 +362,7 @@ static ssize_t sd_fat_read_r (struct _reent *r, int fd, char *ptr, size_t len)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int sd_fat_fstat_r (struct _reent *r, int fd, struct stat *st)
|
static s32 sd_fat_fstat_r (struct _reent *r, s32 fd, struct stat *st)
|
||||||
{
|
{
|
||||||
sd_fat_file_state_t *file = (sd_fat_file_state_t *)fd;
|
sd_fat_file_state_t *file = (sd_fat_file_state_t *)fd;
|
||||||
if(!file->dev) {
|
if(!file->dev) {
|
||||||
@ -376,7 +376,7 @@ static int sd_fat_fstat_r (struct _reent *r, int fd, struct stat *st)
|
|||||||
memset(st, 0, sizeof(struct stat));
|
memset(st, 0, sizeof(struct stat));
|
||||||
|
|
||||||
FSStat stats;
|
FSStat stats;
|
||||||
int result = FSGetStatFile(file->dev->pClient, file->dev->pCmd, file->fd, &stats, -1);
|
s32 result = FSGetStatFile(file->dev->pClient, file->dev->pCmd, file->fd, &stats, -1);
|
||||||
if(result != 0) {
|
if(result != 0) {
|
||||||
r->_errno = result;
|
r->_errno = result;
|
||||||
OSUnlockMutex(file->dev->pMutex);
|
OSUnlockMutex(file->dev->pMutex);
|
||||||
@ -400,7 +400,7 @@ static int sd_fat_fstat_r (struct _reent *r, int fd, struct stat *st)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int sd_fat_ftruncate_r (struct _reent *r, int fd, off_t len)
|
static s32 sd_fat_ftruncate_r (struct _reent *r, s32 fd, off_t len)
|
||||||
{
|
{
|
||||||
sd_fat_file_state_t *file = (sd_fat_file_state_t *)fd;
|
sd_fat_file_state_t *file = (sd_fat_file_state_t *)fd;
|
||||||
if(!file->dev) {
|
if(!file->dev) {
|
||||||
@ -410,7 +410,7 @@ static int sd_fat_ftruncate_r (struct _reent *r, int fd, off_t len)
|
|||||||
|
|
||||||
OSLockMutex(file->dev->pMutex);
|
OSLockMutex(file->dev->pMutex);
|
||||||
|
|
||||||
int result = FSTruncateFile(file->dev->pClient, file->dev->pCmd, file->fd, -1);
|
s32 result = FSTruncateFile(file->dev->pClient, file->dev->pCmd, file->fd, -1);
|
||||||
|
|
||||||
OSUnlockMutex(file->dev->pMutex);
|
OSUnlockMutex(file->dev->pMutex);
|
||||||
|
|
||||||
@ -422,7 +422,7 @@ static int sd_fat_ftruncate_r (struct _reent *r, int fd, off_t len)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int sd_fat_fsync_r (struct _reent *r, int fd)
|
static s32 sd_fat_fsync_r (struct _reent *r, s32 fd)
|
||||||
{
|
{
|
||||||
sd_fat_file_state_t *file = (sd_fat_file_state_t *)fd;
|
sd_fat_file_state_t *file = (sd_fat_file_state_t *)fd;
|
||||||
if(!file->dev) {
|
if(!file->dev) {
|
||||||
@ -432,7 +432,7 @@ static int sd_fat_fsync_r (struct _reent *r, int fd)
|
|||||||
|
|
||||||
OSLockMutex(file->dev->pMutex);
|
OSLockMutex(file->dev->pMutex);
|
||||||
|
|
||||||
int result = FSFlushFile(file->dev->pClient, file->dev->pCmd, file->fd, -1);
|
s32 result = FSFlushFile(file->dev->pClient, file->dev->pCmd, file->fd, -1);
|
||||||
|
|
||||||
OSUnlockMutex(file->dev->pMutex);
|
OSUnlockMutex(file->dev->pMutex);
|
||||||
|
|
||||||
@ -444,7 +444,7 @@ static int sd_fat_fsync_r (struct _reent *r, int fd)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int sd_fat_stat_r (struct _reent *r, const char *path, struct stat *st)
|
static s32 sd_fat_stat_r (struct _reent *r, const char *path, struct stat *st)
|
||||||
{
|
{
|
||||||
sd_fat_private_t *dev = sd_fat_get_device_data(path);
|
sd_fat_private_t *dev = sd_fat_get_device_data(path);
|
||||||
if(!dev) {
|
if(!dev) {
|
||||||
@ -466,7 +466,7 @@ static int sd_fat_stat_r (struct _reent *r, const char *path, struct stat *st)
|
|||||||
|
|
||||||
FSStat stats;
|
FSStat stats;
|
||||||
|
|
||||||
int result = FSGetStat(dev->pClient, dev->pCmd, real_path, &stats, -1);
|
s32 result = FSGetStat(dev->pClient, dev->pCmd, real_path, &stats, -1);
|
||||||
|
|
||||||
free(real_path);
|
free(real_path);
|
||||||
real_path = NULL;
|
real_path = NULL;
|
||||||
@ -496,13 +496,13 @@ static int sd_fat_stat_r (struct _reent *r, const char *path, struct stat *st)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int sd_fat_link_r (struct _reent *r, const char *existing, const char *newLink)
|
static s32 sd_fat_link_r (struct _reent *r, const char *existing, const char *newLink)
|
||||||
{
|
{
|
||||||
r->_errno = ENOTSUP;
|
r->_errno = ENOTSUP;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int sd_fat_unlink_r (struct _reent *r, const char *name)
|
static s32 sd_fat_unlink_r (struct _reent *r, const char *name)
|
||||||
{
|
{
|
||||||
sd_fat_private_t *dev = sd_fat_get_device_data(name);
|
sd_fat_private_t *dev = sd_fat_get_device_data(name);
|
||||||
if(!dev) {
|
if(!dev) {
|
||||||
@ -520,7 +520,7 @@ static int sd_fat_unlink_r (struct _reent *r, const char *name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int result = FSRemove(dev->pClient, dev->pCmd, real_path, -1);
|
s32 result = FSRemove(dev->pClient, dev->pCmd, real_path, -1);
|
||||||
|
|
||||||
free(real_path);
|
free(real_path);
|
||||||
real_path = NULL;
|
real_path = NULL;
|
||||||
@ -535,7 +535,7 @@ static int sd_fat_unlink_r (struct _reent *r, const char *name)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int sd_fat_chdir_r (struct _reent *r, const char *name)
|
static s32 sd_fat_chdir_r (struct _reent *r, const char *name)
|
||||||
{
|
{
|
||||||
sd_fat_private_t *dev = sd_fat_get_device_data(name);
|
sd_fat_private_t *dev = sd_fat_get_device_data(name);
|
||||||
if(!dev) {
|
if(!dev) {
|
||||||
@ -552,7 +552,7 @@ static int sd_fat_chdir_r (struct _reent *r, const char *name)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int result = FSChangeDir(dev->pClient, dev->pCmd, real_path, -1);
|
s32 result = FSChangeDir(dev->pClient, dev->pCmd, real_path, -1);
|
||||||
|
|
||||||
free(real_path);
|
free(real_path);
|
||||||
real_path = NULL;
|
real_path = NULL;
|
||||||
@ -567,7 +567,7 @@ static int sd_fat_chdir_r (struct _reent *r, const char *name)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int sd_fat_rename_r (struct _reent *r, const char *oldName, const char *newName)
|
static s32 sd_fat_rename_r (struct _reent *r, const char *oldName, const char *newName)
|
||||||
{
|
{
|
||||||
sd_fat_private_t *dev = sd_fat_get_device_data(oldName);
|
sd_fat_private_t *dev = sd_fat_get_device_data(oldName);
|
||||||
if(!dev) {
|
if(!dev) {
|
||||||
@ -591,7 +591,7 @@ static int sd_fat_rename_r (struct _reent *r, const char *oldName, const char *n
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int result = FSRename(dev->pClient, dev->pCmd, real_oldpath, real_newpath, -1);
|
s32 result = FSRename(dev->pClient, dev->pCmd, real_oldpath, real_newpath, -1);
|
||||||
|
|
||||||
free(real_oldpath);
|
free(real_oldpath);
|
||||||
free(real_newpath);
|
free(real_newpath);
|
||||||
@ -607,7 +607,7 @@ static int sd_fat_rename_r (struct _reent *r, const char *oldName, const char *n
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int sd_fat_mkdir_r (struct _reent *r, const char *path, int mode)
|
static s32 sd_fat_mkdir_r (struct _reent *r, const char *path, s32 mode)
|
||||||
{
|
{
|
||||||
sd_fat_private_t *dev = sd_fat_get_device_data(path);
|
sd_fat_private_t *dev = sd_fat_get_device_data(path);
|
||||||
if(!dev) {
|
if(!dev) {
|
||||||
@ -624,7 +624,7 @@ static int sd_fat_mkdir_r (struct _reent *r, const char *path, int mode)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int result = FSMakeDir(dev->pClient, dev->pCmd, real_path, -1);
|
s32 result = FSMakeDir(dev->pClient, dev->pCmd, real_path, -1);
|
||||||
|
|
||||||
free(real_path);
|
free(real_path);
|
||||||
|
|
||||||
@ -638,7 +638,7 @@ static int sd_fat_mkdir_r (struct _reent *r, const char *path, int mode)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int sd_fat_statvfs_r (struct _reent *r, const char *path, struct statvfs *buf)
|
static s32 sd_fat_statvfs_r (struct _reent *r, const char *path, struct statvfs *buf)
|
||||||
{
|
{
|
||||||
sd_fat_private_t *dev = sd_fat_get_device_data(path);
|
sd_fat_private_t *dev = sd_fat_get_device_data(path);
|
||||||
if(!dev) {
|
if(!dev) {
|
||||||
@ -660,7 +660,7 @@ static int sd_fat_statvfs_r (struct _reent *r, const char *path, struct statvfs
|
|||||||
|
|
||||||
u64 size;
|
u64 size;
|
||||||
|
|
||||||
int result = FSGetFreeSpaceSize(dev->pClient, dev->pCmd, real_path, &size, -1);
|
s32 result = FSGetFreeSpaceSize(dev->pClient, dev->pCmd, real_path, &size, -1);
|
||||||
|
|
||||||
free(real_path);
|
free(real_path);
|
||||||
|
|
||||||
@ -682,7 +682,7 @@ static int sd_fat_statvfs_r (struct _reent *r, const char *path, struct statvfs
|
|||||||
// Free blocks available for all and for non-privileged processes
|
// Free blocks available for all and for non-privileged processes
|
||||||
buf->f_bfree = buf->f_bavail = size >> 9;
|
buf->f_bfree = buf->f_bavail = size >> 9;
|
||||||
|
|
||||||
// Number of inodes at this point in time
|
// Number of inodes at this pos32 in time
|
||||||
buf->f_files = 0xffffffff;
|
buf->f_files = 0xffffffff;
|
||||||
|
|
||||||
// Free inodes available for all and for non-privileged processes
|
// Free inodes available for all and for non-privileged processes
|
||||||
@ -721,9 +721,9 @@ static DIR_ITER *sd_fat_diropen_r (struct _reent *r, DIR_ITER *dirState, const c
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
int dirHandle;
|
s32 dirHandle;
|
||||||
|
|
||||||
int result = FSOpenDir(dev->pClient, dev->pCmd, real_path, &dirHandle, -1);
|
s32 result = FSOpenDir(dev->pClient, dev->pCmd, real_path, &dirHandle, (s32)-1);
|
||||||
|
|
||||||
free(real_path);
|
free(real_path);
|
||||||
|
|
||||||
@ -741,7 +741,7 @@ static DIR_ITER *sd_fat_diropen_r (struct _reent *r, DIR_ITER *dirState, const c
|
|||||||
return dirState;
|
return dirState;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int sd_fat_dirclose_r (struct _reent *r, DIR_ITER *dirState)
|
static s32 sd_fat_dirclose_r (struct _reent *r, DIR_ITER *dirState)
|
||||||
{
|
{
|
||||||
sd_fat_dir_entry_t *dirIter = (sd_fat_dir_entry_t *)dirState->dirStruct;
|
sd_fat_dir_entry_t *dirIter = (sd_fat_dir_entry_t *)dirState->dirStruct;
|
||||||
if(!dirIter->dev) {
|
if(!dirIter->dev) {
|
||||||
@ -751,7 +751,7 @@ static int sd_fat_dirclose_r (struct _reent *r, DIR_ITER *dirState)
|
|||||||
|
|
||||||
OSLockMutex(dirIter->dev->pMutex);
|
OSLockMutex(dirIter->dev->pMutex);
|
||||||
|
|
||||||
int result = FSCloseDir(dirIter->dev->pClient, dirIter->dev->pCmd, dirIter->dirHandle, -1);
|
s32 result = FSCloseDir(dirIter->dev->pClient, dirIter->dev->pCmd, dirIter->dirHandle, -1);
|
||||||
|
|
||||||
OSUnlockMutex(dirIter->dev->pMutex);
|
OSUnlockMutex(dirIter->dev->pMutex);
|
||||||
|
|
||||||
@ -763,7 +763,7 @@ static int sd_fat_dirclose_r (struct _reent *r, DIR_ITER *dirState)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int sd_fat_dirreset_r (struct _reent *r, DIR_ITER *dirState)
|
static s32 sd_fat_dirreset_r (struct _reent *r, DIR_ITER *dirState)
|
||||||
{
|
{
|
||||||
sd_fat_dir_entry_t *dirIter = (sd_fat_dir_entry_t *)dirState->dirStruct;
|
sd_fat_dir_entry_t *dirIter = (sd_fat_dir_entry_t *)dirState->dirStruct;
|
||||||
if(!dirIter->dev) {
|
if(!dirIter->dev) {
|
||||||
@ -773,7 +773,7 @@ static int sd_fat_dirreset_r (struct _reent *r, DIR_ITER *dirState)
|
|||||||
|
|
||||||
OSLockMutex(dirIter->dev->pMutex);
|
OSLockMutex(dirIter->dev->pMutex);
|
||||||
|
|
||||||
int result = FSRewindDir(dirIter->dev->pClient, dirIter->dev->pCmd, dirIter->dirHandle, -1);
|
s32 result = FSRewindDir(dirIter->dev->pClient, dirIter->dev->pCmd, dirIter->dirHandle, -1);
|
||||||
|
|
||||||
OSUnlockMutex(dirIter->dev->pMutex);
|
OSUnlockMutex(dirIter->dev->pMutex);
|
||||||
|
|
||||||
@ -785,7 +785,7 @@ static int sd_fat_dirreset_r (struct _reent *r, DIR_ITER *dirState)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int sd_fat_dirnext_r (struct _reent *r, DIR_ITER *dirState, char *filename, struct stat *st)
|
static s32 sd_fat_dirnext_r (struct _reent *r, DIR_ITER *dirState, char *filename, struct stat *st)
|
||||||
{
|
{
|
||||||
sd_fat_dir_entry_t *dirIter = (sd_fat_dir_entry_t *)dirState->dirStruct;
|
sd_fat_dir_entry_t *dirIter = (sd_fat_dir_entry_t *)dirState->dirStruct;
|
||||||
if(!dirIter->dev) {
|
if(!dirIter->dev) {
|
||||||
@ -797,7 +797,7 @@ static int sd_fat_dirnext_r (struct _reent *r, DIR_ITER *dirState, char *filenam
|
|||||||
|
|
||||||
FSDirEntry * dir_entry = malloc(sizeof(FSDirEntry));
|
FSDirEntry * dir_entry = malloc(sizeof(FSDirEntry));
|
||||||
|
|
||||||
int result = FSReadDir(dirIter->dev->pClient, dirIter->dev->pCmd, dirIter->dirHandle, dir_entry, -1);
|
s32 result = FSReadDir(dirIter->dev->pClient, dirIter->dev->pCmd, dirIter->dirHandle, dir_entry, -1);
|
||||||
if(result < 0)
|
if(result < 0)
|
||||||
{
|
{
|
||||||
free(dir_entry);
|
free(dir_entry);
|
||||||
@ -859,12 +859,12 @@ static const devoptab_t devops_sd_fat = {
|
|||||||
NULL /* Device data */
|
NULL /* Device data */
|
||||||
};
|
};
|
||||||
|
|
||||||
static int sd_fat_add_device (const char *name, const char *mount_path, void *pClient, void *pCmd)
|
static s32 sd_fat_add_device (const char *name, const char *mount_path, void *pClient, void *pCmd)
|
||||||
{
|
{
|
||||||
devoptab_t *dev = NULL;
|
devoptab_t *dev = NULL;
|
||||||
char *devname = NULL;
|
char *devname = NULL;
|
||||||
char *devpath = NULL;
|
char *devpath = NULL;
|
||||||
int i;
|
s32 i;
|
||||||
|
|
||||||
// Sanity check
|
// Sanity check
|
||||||
if (!name) {
|
if (!name) {
|
||||||
@ -933,11 +933,11 @@ static int sd_fat_add_device (const char *name, const char *mount_path, void *pC
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int sd_fat_remove_device (const char *path, void **pClient, void **pCmd, char **mountPath)
|
static s32 sd_fat_remove_device (const char *path, void **pClient, void **pCmd, char **mountPath)
|
||||||
{
|
{
|
||||||
const devoptab_t *devoptab = NULL;
|
const devoptab_t *devoptab = NULL;
|
||||||
char name[128] = {0};
|
char name[128] = {0};
|
||||||
int i;
|
s32 i;
|
||||||
|
|
||||||
// Get the device name from the path
|
// Get the device name from the path
|
||||||
strncpy(name, path, 127);
|
strncpy(name, path, 127);
|
||||||
@ -975,9 +975,9 @@ static int sd_fat_remove_device (const char *path, void **pClient, void **pCmd,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int mount_sd_fat(const char *path)
|
s32 mount_sd_fat(const char *path)
|
||||||
{
|
{
|
||||||
int result = -1;
|
s32 result = -1;
|
||||||
|
|
||||||
// get command and client
|
// get command and client
|
||||||
void* pClient = malloc(FS_CLIENT_SIZE);
|
void* pClient = malloc(FS_CLIENT_SIZE);
|
||||||
@ -1006,13 +1006,13 @@ int mount_sd_fat(const char *path)
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
int unmount_sd_fat(const char *path)
|
s32 unmount_sd_fat(const char *path)
|
||||||
{
|
{
|
||||||
void *pClient = 0;
|
void *pClient = 0;
|
||||||
void *pCmd = 0;
|
void *pCmd = 0;
|
||||||
char *mountPath = 0;
|
char *mountPath = 0;
|
||||||
|
|
||||||
int result = sd_fat_remove_device(path, &pClient, &pCmd, &mountPath);
|
s32 result = sd_fat_remove_device(path, &pClient, &pCmd, &mountPath);
|
||||||
if(result == 0)
|
if(result == 0)
|
||||||
{
|
{
|
||||||
UmountFS(pClient, pCmd, mountPath);
|
UmountFS(pClient, pCmd, mountPath);
|
||||||
|
@ -28,8 +28,8 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int mount_sd_fat(const char *path);
|
s32 mount_sd_fat(const char *path);
|
||||||
int unmount_sd_fat(const char *path);
|
s32 unmount_sd_fat(const char *path);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* FreeTypeGX is a wrapper class for libFreeType which renders a compiled
|
* FreeTypeGX is a wrapper class for libFreeType which renders a compiled
|
||||||
* FreeType parsable font into a GX texture for Wii homebrew development.
|
* FreeType parsable font so a GX texture for Wii homebrew development.
|
||||||
* Copyright (C) 2008 Armin Tamzarian
|
* Copyright (C) 2008 Armin Tamzarian
|
||||||
* Modified by Dimok, 2015 for WiiU GX2
|
* Modified by Dimok, 2015 for WiiU GX2
|
||||||
*
|
*
|
||||||
@ -34,7 +34,7 @@ using namespace std;
|
|||||||
*/
|
*/
|
||||||
FreeTypeGX::FreeTypeGX(const uint8_t* fontBuffer, FT_Long bufferSize, bool lastFace)
|
FreeTypeGX::FreeTypeGX(const uint8_t* fontBuffer, FT_Long bufferSize, bool lastFace)
|
||||||
{
|
{
|
||||||
int faceIndex = 0;
|
int32_t faceIndex = 0;
|
||||||
ftPointSize = 0;
|
ftPointSize = 0;
|
||||||
GX2InitSampler(&ftSampler, GX2_TEX_CLAMP_CLAMP_BORDER, GX2_TEX_XY_FILTER_BILINEAR);
|
GX2InitSampler(&ftSampler, GX2_TEX_CLAMP_CLAMP_BORDER, GX2_TEX_XY_FILTER_BILINEAR);
|
||||||
|
|
||||||
@ -78,7 +78,7 @@ wchar_t* FreeTypeGX::charToWideChar(const char* strChar)
|
|||||||
wchar_t *strWChar = new (std::nothrow) wchar_t[strlen(strChar) + 1];
|
wchar_t *strWChar = new (std::nothrow) wchar_t[strlen(strChar) + 1];
|
||||||
if (!strWChar) return NULL;
|
if (!strWChar) return NULL;
|
||||||
|
|
||||||
int bt = mbstowcs(strWChar, strChar, strlen(strChar));
|
int32_t bt = mbstowcs(strWChar, strChar, strlen(strChar));
|
||||||
if (bt > 0)
|
if (bt > 0)
|
||||||
{
|
{
|
||||||
strWChar[bt] = 0;
|
strWChar[bt] = 0;
|
||||||
@ -389,7 +389,7 @@ uint16_t FreeTypeGX::drawText(CVideo *video, int16_t x, int16_t y, int16_t z, co
|
|||||||
y_offset = getStyleOffsetHeight(textStyle, pixelSize);
|
y_offset = getStyleOffsetHeight(textStyle, pixelSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
int i = 0;
|
int32_t i = 0;
|
||||||
while (text[i])
|
while (text[i])
|
||||||
{
|
{
|
||||||
ftgxCharData* glyphData = cacheGlyphData(text[i], pixelSize);
|
ftgxCharData* glyphData = cacheGlyphData(text[i], pixelSize);
|
||||||
@ -429,8 +429,8 @@ uint16_t FreeTypeGX::getWidth(const wchar_t *text, int16_t pixelSize)
|
|||||||
|
|
||||||
uint16_t strWidth = 0;
|
uint16_t strWidth = 0;
|
||||||
FT_Vector pairDelta;
|
FT_Vector pairDelta;
|
||||||
|
int32_t i = 0;
|
||||||
|
|
||||||
int i = 0;
|
|
||||||
while (text[i])
|
while (text[i])
|
||||||
{
|
{
|
||||||
ftgxCharData* glyphData = cacheGlyphData(text[i], pixelSize);
|
ftgxCharData* glyphData = cacheGlyphData(text[i], pixelSize);
|
||||||
@ -505,7 +505,7 @@ void FreeTypeGX::getOffset(const wchar_t *text, int16_t pixelSize, uint16_t widt
|
|||||||
int16_t strMax = 0, strMin = 9999;
|
int16_t strMax = 0, strMin = 9999;
|
||||||
uint16_t currWidth = 0;
|
uint16_t currWidth = 0;
|
||||||
|
|
||||||
int i = 0;
|
int32_t i = 0;
|
||||||
|
|
||||||
while (text[i])
|
while (text[i])
|
||||||
{
|
{
|
||||||
|
@ -183,7 +183,7 @@ void GameIcon::draw(CVideo *pVideo, const glm::mat4 & projectionMtx, const glm::
|
|||||||
f32 strokeScaleX = pVideo->getWidthScaleFactor() * strokeWidth * 0.25f + cfIconMirrorScale;
|
f32 strokeScaleX = pVideo->getWidthScaleFactor() * strokeWidth * 0.25f + cfIconMirrorScale;
|
||||||
f32 strokeScaleY = pVideo->getHeightScaleFactor() * strokeWidth * 0.25f + cfIconMirrorScale;
|
f32 strokeScaleY = pVideo->getHeightScaleFactor() * strokeWidth * 0.25f + cfIconMirrorScale;
|
||||||
|
|
||||||
for(int iDraw = 0; iDraw < 2; iDraw++)
|
for(s32 iDraw = 0; iDraw < 2; iDraw++)
|
||||||
{
|
{
|
||||||
glm::vec4 * alphaFadeOut;
|
glm::vec4 * alphaFadeOut;
|
||||||
glm::mat4 m_iconView;
|
glm::mat4 m_iconView;
|
||||||
|
@ -72,7 +72,7 @@ private:
|
|||||||
f32 *strokePosVtxs;
|
f32 *strokePosVtxs;
|
||||||
f32 *strokeTexCoords;
|
f32 *strokeTexCoords;
|
||||||
u8 *strokeColorVtxs;
|
u8 *strokeColorVtxs;
|
||||||
int strokeFractalEnable;
|
s32 strokeFractalEnable;
|
||||||
f32 strokeBlurBorder;
|
f32 strokeBlurBorder;
|
||||||
glm::vec4 selectionBlurOuterColorIntensity;
|
glm::vec4 selectionBlurOuterColorIntensity;
|
||||||
f32 selectionBlurOuterSize;
|
f32 selectionBlurOuterSize;
|
||||||
|
@ -755,6 +755,6 @@ const float cfGameIconStrokeVtxs[] =
|
|||||||
-0.376756459475,1.046143651009,0.0f
|
-0.376756459475,1.046143651009,0.0f
|
||||||
};
|
};
|
||||||
|
|
||||||
const unsigned int cuGameIconStrokeVtxCount = sizeof(cfGameIconStrokeVtxs) / (sizeof(float) * 3);
|
const u32 cuGameIconStrokeVtxCount = sizeof(cfGameIconStrokeVtxs) / (sizeof(float) * 3);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -20,7 +20,7 @@ GridBackground::GridBackground(GuiImageData *img)
|
|||||||
|
|
||||||
if(m_posVtxs)
|
if(m_posVtxs)
|
||||||
{
|
{
|
||||||
int i = 0;
|
s32 i = 0;
|
||||||
m_posVtxs[i++] = -1.0f; m_posVtxs[i++] = 0.0f; m_posVtxs[i++] = 1.0f;
|
m_posVtxs[i++] = -1.0f; m_posVtxs[i++] = 0.0f; m_posVtxs[i++] = 1.0f;
|
||||||
m_posVtxs[i++] = 1.0f; m_posVtxs[i++] = 0.0f; m_posVtxs[i++] = 1.0f;
|
m_posVtxs[i++] = 1.0f; m_posVtxs[i++] = 0.0f; m_posVtxs[i++] = 1.0f;
|
||||||
m_posVtxs[i++] = 1.0f; m_posVtxs[i++] = 0.0f; m_posVtxs[i++] = -1.0f;
|
m_posVtxs[i++] = 1.0f; m_posVtxs[i++] = 0.0f; m_posVtxs[i++] = -1.0f;
|
||||||
@ -44,7 +44,7 @@ GridBackground::GridBackground(GuiImageData *img)
|
|||||||
sinRot, cosRot
|
sinRot, cosRot
|
||||||
});
|
});
|
||||||
|
|
||||||
for(int i = 0; i < 4; i++) {
|
for(s32 i = 0; i < 4; i++) {
|
||||||
texCoordVec[i] = texRotateMtx * texCoordVec[i];
|
texCoordVec[i] = texRotateMtx * texCoordVec[i];
|
||||||
m_texCoords[i*2 + 0] = texCoordVec[i][0];
|
m_texCoords[i*2 + 0] = texCoordVec[i][0];
|
||||||
m_texCoords[i*2 + 1] = texCoordVec[i][1];
|
m_texCoords[i*2 + 1] = texCoordVec[i][1];
|
||||||
|
@ -33,14 +33,14 @@ GuiButton::GuiButton(f32 w, f32 h)
|
|||||||
icon = NULL;
|
icon = NULL;
|
||||||
iconOver = NULL;
|
iconOver = NULL;
|
||||||
|
|
||||||
for(int i = 0; i < 4; i++)
|
for(s32 i = 0; i < 4; i++)
|
||||||
{
|
{
|
||||||
label[i] = NULL;
|
label[i] = NULL;
|
||||||
labelOver[i] = NULL;
|
labelOver[i] = NULL;
|
||||||
labelHold[i] = NULL;
|
labelHold[i] = NULL;
|
||||||
labelClick[i] = NULL;
|
labelClick[i] = NULL;
|
||||||
}
|
}
|
||||||
for(int i = 0; i < iMaxGuiTriggers; i++)
|
for(s32 i = 0; i < iMaxGuiTriggers; i++)
|
||||||
{
|
{
|
||||||
trigger[i] = NULL;
|
trigger[i] = NULL;
|
||||||
}
|
}
|
||||||
@ -93,22 +93,22 @@ void GuiButton::setIconOver(GuiImage* img)
|
|||||||
if(img) img->setParent(this);
|
if(img) img->setParent(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuiButton::setLabel(GuiText* txt, int n)
|
void GuiButton::setLabel(GuiText* txt, s32 n)
|
||||||
{
|
{
|
||||||
label[n] = txt;
|
label[n] = txt;
|
||||||
if(txt) txt->setParent(this);
|
if(txt) txt->setParent(this);
|
||||||
}
|
}
|
||||||
void GuiButton::setLabelOver(GuiText* txt, int n)
|
void GuiButton::setLabelOver(GuiText* txt, s32 n)
|
||||||
{
|
{
|
||||||
labelOver[n] = txt;
|
labelOver[n] = txt;
|
||||||
if(txt) txt->setParent(this);
|
if(txt) txt->setParent(this);
|
||||||
}
|
}
|
||||||
void GuiButton::setLabelHold(GuiText* txt, int n)
|
void GuiButton::setLabelHold(GuiText* txt, s32 n)
|
||||||
{
|
{
|
||||||
labelHold[n] = txt;
|
labelHold[n] = txt;
|
||||||
if(txt) txt->setParent(this);
|
if(txt) txt->setParent(this);
|
||||||
}
|
}
|
||||||
void GuiButton::setLabelClick(GuiText* txt, int n)
|
void GuiButton::setLabelClick(GuiText* txt, s32 n)
|
||||||
{
|
{
|
||||||
labelClick[n] = txt;
|
labelClick[n] = txt;
|
||||||
if(txt) txt->setParent(this);
|
if(txt) txt->setParent(this);
|
||||||
@ -127,7 +127,7 @@ void GuiButton::setSoundClick(GuiSound * snd)
|
|||||||
soundClick = snd;
|
soundClick = snd;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuiButton::setTrigger(GuiTrigger * t, int idx)
|
void GuiButton::setTrigger(GuiTrigger * t, s32 idx)
|
||||||
{
|
{
|
||||||
if(idx >= 0 && idx < iMaxGuiTriggers)
|
if(idx >= 0 && idx < iMaxGuiTriggers)
|
||||||
{
|
{
|
||||||
@ -135,7 +135,7 @@ void GuiButton::setTrigger(GuiTrigger * t, int idx)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
for(int i = 0; i < iMaxGuiTriggers; i++)
|
for(s32 i = 0; i < iMaxGuiTriggers; i++)
|
||||||
{
|
{
|
||||||
if(!trigger[i])
|
if(!trigger[i])
|
||||||
{
|
{
|
||||||
@ -175,7 +175,7 @@ void GuiButton::draw(CVideo *v)
|
|||||||
icon->draw(v);
|
icon->draw(v);
|
||||||
|
|
||||||
// draw text
|
// draw text
|
||||||
for(int i = 0; i < 4; i++)
|
for(s32 i = 0; i < 4; i++)
|
||||||
{
|
{
|
||||||
if(isStateSet(STATE_OVER | STATE_SELECTED | STATE_CLICKED | STATE_HELD) && labelOver[i])
|
if(isStateSet(STATE_OVER | STATE_SELECTED | STATE_CLICKED | STATE_HELD) && labelOver[i])
|
||||||
labelOver[i]->draw(v);
|
labelOver[i]->draw(v);
|
||||||
@ -231,7 +231,7 @@ void GuiButton::update(GuiController * c)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for(int i = 0; i < iMaxGuiTriggers; i++)
|
for(s32 i = 0; i < iMaxGuiTriggers; i++)
|
||||||
{
|
{
|
||||||
if(!trigger[i])
|
if(!trigger[i])
|
||||||
continue;
|
continue;
|
||||||
@ -240,7 +240,7 @@ void GuiButton::update(GuiController * c)
|
|||||||
if(clickable)
|
if(clickable)
|
||||||
{
|
{
|
||||||
|
|
||||||
int isClicked = trigger[i]->clicked(c);
|
s32 isClicked = trigger[i]->clicked(c);
|
||||||
|
|
||||||
if( !clickedTrigger && (isClicked != GuiTrigger::CLICKED_NONE)
|
if( !clickedTrigger && (isClicked != GuiTrigger::CLICKED_NONE)
|
||||||
&& (trigger[i]->isClickEverywhere() || (isStateSet(STATE_SELECTED | STATE_OVER, c->chan) && trigger[i]->isSelectionClickEverywhere()) || this->isInside(c->data.x, c->data.y)))
|
&& (trigger[i]->isClickEverywhere() || (isStateSet(STATE_SELECTED | STATE_OVER, c->chan) && trigger[i]->isSelectionClickEverywhere()) || this->isInside(c->data.x, c->data.y)))
|
||||||
|
@ -52,19 +52,19 @@ class GuiButton : public GuiElement
|
|||||||
//!Sets the button's label
|
//!Sets the button's label
|
||||||
//!\param t Pointer to GuiText object
|
//!\param t Pointer to GuiText object
|
||||||
//!\param n Index of label to set (optional, default is 0)
|
//!\param n Index of label to set (optional, default is 0)
|
||||||
void setLabel(GuiText* t, int n = 0);
|
void setLabel(GuiText* t, s32 n = 0);
|
||||||
//!Sets the button's label on over (eg: different colored text)
|
//!Sets the button's label on over (eg: different colored text)
|
||||||
//!\param t Pointer to GuiText object
|
//!\param t Pointer to GuiText object
|
||||||
//!\param n Index of label to set (optional, default is 0)
|
//!\param n Index of label to set (optional, default is 0)
|
||||||
void setLabelOver(GuiText* t, int n = 0);
|
void setLabelOver(GuiText* t, s32 n = 0);
|
||||||
//!Sets the button's label on hold
|
//!Sets the button's label on hold
|
||||||
//!\param t Pointer to GuiText object
|
//!\param t Pointer to GuiText object
|
||||||
//!\param n Index of label to set (optional, default is 0)
|
//!\param n Index of label to set (optional, default is 0)
|
||||||
void setLabelHold(GuiText* t, int n = 0);
|
void setLabelHold(GuiText* t, s32 n = 0);
|
||||||
//!Sets the button's label on click
|
//!Sets the button's label on click
|
||||||
//!\param t Pointer to GuiText object
|
//!\param t Pointer to GuiText object
|
||||||
//!\param n Index of label to set (optional, default is 0)
|
//!\param n Index of label to set (optional, default is 0)
|
||||||
void setLabelClick(GuiText* t, int n = 0);
|
void setLabelClick(GuiText* t, s32 n = 0);
|
||||||
//!Sets the sound to play on over
|
//!Sets the sound to play on over
|
||||||
//!\param s Pointer to GuiSound object
|
//!\param s Pointer to GuiSound object
|
||||||
void setSoundOver(GuiSound * s);
|
void setSoundOver(GuiSound * s);
|
||||||
@ -77,7 +77,7 @@ class GuiButton : public GuiElement
|
|||||||
//!Set a new GuiTrigger for the element
|
//!Set a new GuiTrigger for the element
|
||||||
//!\param i Index of trigger array to set
|
//!\param i Index of trigger array to set
|
||||||
//!\param t Pointer to GuiTrigger
|
//!\param t Pointer to GuiTrigger
|
||||||
void setTrigger(GuiTrigger * t, int idx = -1);
|
void setTrigger(GuiTrigger * t, s32 idx = -1);
|
||||||
//!
|
//!
|
||||||
void resetState(void);
|
void resetState(void);
|
||||||
//!Constantly called to draw the GuiButton
|
//!Constantly called to draw the GuiButton
|
||||||
@ -94,7 +94,7 @@ class GuiButton : public GuiElement
|
|||||||
sigslot::signal3<GuiButton *, const GuiController *, GuiTrigger *> held;
|
sigslot::signal3<GuiButton *, const GuiController *, GuiTrigger *> held;
|
||||||
sigslot::signal3<GuiButton *, const GuiController *, GuiTrigger *> released;
|
sigslot::signal3<GuiButton *, const GuiController *, GuiTrigger *> released;
|
||||||
protected:
|
protected:
|
||||||
static const int iMaxGuiTriggers = 10;
|
static const s32 iMaxGuiTriggers = 10;
|
||||||
|
|
||||||
GuiImage * image; //!< Button image (default)
|
GuiImage * image; //!< Button image (default)
|
||||||
GuiImage * imageOver; //!< Button image for STATE_SELECTED
|
GuiImage * imageOver; //!< Button image for STATE_SELECTED
|
||||||
|
@ -23,11 +23,11 @@
|
|||||||
class GuiConfigurationScreen : public GuiFrame
|
class GuiConfigurationScreen : public GuiFrame
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
GuiConfigurationScreen(int w, int h) : GuiFrame(w, h) {}
|
GuiConfigurationScreen(s32 w, s32 h) : GuiFrame(w, h) {}
|
||||||
virtual ~GuiConfigurationScreen() {}
|
virtual ~GuiConfigurationScreen() {}
|
||||||
|
|
||||||
sigslot::signal2<GuiConfigurationScreen *, int> gameLaunchClicked;
|
sigslot::signal2<GuiConfigurationScreen *, s32> gameLaunchClicked;
|
||||||
sigslot::signal2<GuiConfigurationScreen *, int> gameSelectionChanged;
|
sigslot::signal2<GuiConfigurationScreen *, s32> gameSelectionChanged;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* GUICONFIGURATIONSCREEN_H_ */
|
#endif /* GUICONFIGURATIONSCREEN_H_ */
|
||||||
|
@ -24,7 +24,7 @@ class GuiController
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
//!Constructor
|
//!Constructor
|
||||||
GuiController(int channel)
|
GuiController(s32 channel)
|
||||||
: chan(channel)
|
: chan(channel)
|
||||||
{
|
{
|
||||||
memset(&lastData, 0, sizeof(lastData));
|
memset(&lastData, 0, sizeof(lastData));
|
||||||
@ -54,22 +54,22 @@ public:
|
|||||||
//!Destructor
|
//!Destructor
|
||||||
virtual ~GuiController() {}
|
virtual ~GuiController() {}
|
||||||
|
|
||||||
virtual bool update(int width, int height) = 0;
|
virtual bool update(s32 width, s32 height) = 0;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
unsigned int buttons_h;
|
u32 buttons_h;
|
||||||
unsigned int buttons_d;
|
u32 buttons_d;
|
||||||
unsigned int buttons_r;
|
u32 buttons_r;
|
||||||
bool validPointer;
|
bool validPointer;
|
||||||
bool touched;
|
bool touched;
|
||||||
float pointerAngle;
|
float pointerAngle;
|
||||||
int x;
|
s32 x;
|
||||||
int y;
|
s32 y;
|
||||||
} PadData;
|
} PadData;
|
||||||
|
|
||||||
int chan;
|
s32 chan;
|
||||||
int chanIdx;
|
s32 chanIdx;
|
||||||
PadData data;
|
PadData data;
|
||||||
PadData lastData;
|
PadData lastData;
|
||||||
|
|
||||||
|
@ -19,8 +19,6 @@
|
|||||||
#include "utils/StringTools.h"
|
#include "utils/StringTools.h"
|
||||||
#include "utils/logger.h"
|
#include "utils/logger.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
GuiControllerInputDisplay::GuiControllerInputDisplay(UController_Type _controller_type): GuiFrame(441,324)
|
GuiControllerInputDisplay::GuiControllerInputDisplay(UController_Type _controller_type): GuiFrame(441,324)
|
||||||
, controller_type(_controller_type)
|
, controller_type(_controller_type)
|
||||||
, proImageData(Resources::GetImageData("buttons_pro_controller.png"))
|
, proImageData(Resources::GetImageData("buttons_pro_controller.png"))
|
||||||
@ -45,29 +43,21 @@ GuiControllerInputDisplay::GuiControllerInputDisplay(UController_Type _controlle
|
|||||||
}
|
}
|
||||||
typedef std::map<std::string, u32>::iterator it_type;
|
typedef std::map<std::string, u32>::iterator it_type;
|
||||||
for(it_type iterator = btn_list->begin(); iterator != btn_list->end(); iterator++) {
|
for(it_type iterator = btn_list->begin(); iterator != btn_list->end(); iterator++) {
|
||||||
//log_printf("Adding button! \"%s\"\n",iterator->first.c_str());
|
|
||||||
//log_printf("Creating ButtonConfig* \n");
|
|
||||||
ButtonConfig * btn_cfg = new ButtonConfig;
|
ButtonConfig * btn_cfg = new ButtonConfig;
|
||||||
if(btn_cfg == NULL){
|
if(btn_cfg == NULL){
|
||||||
log_printf("Error on alloc ButtonConfig\n");
|
log_printf("Error on alloc ButtonConfig\n");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
memset(btn_cfg,0,sizeof(ButtonConfig));
|
memset(btn_cfg,0,sizeof(ButtonConfig));
|
||||||
//log_printf("Creating suffix \n");
|
|
||||||
std::string * suffix = new std::string(iterator->first);
|
std::string * suffix = new std::string(iterator->first);
|
||||||
//log_printf("Setting suffix \n");
|
|
||||||
btn_cfg->img.suffix = suffix;
|
btn_cfg->img.suffix = suffix;
|
||||||
//log_printf("creating new filename\n");
|
|
||||||
std::string filename = strfmt("%s%s.png",prefix.c_str(),btn_cfg->img.suffix->c_str());
|
std::string filename = strfmt("%s%s.png",prefix.c_str(),btn_cfg->img.suffix->c_str());
|
||||||
//log_printf("loading file..%s \n",filename.c_str());
|
|
||||||
btn_cfg->img.imagedata = Resources::GetImageData(filename.c_str());
|
btn_cfg->img.imagedata = Resources::GetImageData(filename.c_str());
|
||||||
if(btn_cfg->img.imagedata == NULL){
|
if(btn_cfg->img.imagedata == NULL){
|
||||||
log_printf("Error, was null!\n");
|
log_printf("Error, was null!\n");
|
||||||
delete btn_cfg;
|
delete btn_cfg;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
//log_printf("Done!\n");
|
|
||||||
//log_printf("loading image..\n");
|
|
||||||
btn_cfg->img.image = new GuiImage(btn_cfg->img.imagedata);
|
btn_cfg->img.image = new GuiImage(btn_cfg->img.imagedata);
|
||||||
if(btn_cfg->img.image == NULL){
|
if(btn_cfg->img.image == NULL){
|
||||||
log_printf("Error, was null! Removing ImageData\n");
|
log_printf("Error, was null! Removing ImageData\n");
|
||||||
@ -75,11 +65,9 @@ GuiControllerInputDisplay::GuiControllerInputDisplay(UController_Type _controlle
|
|||||||
delete btn_cfg;
|
delete btn_cfg;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
//log_printf("setting value to %08X.\n",iterator->second);
|
|
||||||
btn_cfg->value = iterator->second;
|
btn_cfg->value = iterator->second;
|
||||||
controllerConfig.buttons.push_back(btn_cfg);
|
controllerConfig.buttons.push_back(btn_cfg);
|
||||||
btn_cfg->img.image->setState(STATE_HIDDEN);
|
btn_cfg->img.image->setState(STATE_HIDDEN);
|
||||||
//log_printf("Appending\n");
|
|
||||||
append(btn_cfg->img.image);
|
append(btn_cfg->img.image);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -109,18 +97,17 @@ void GuiControllerInputDisplay::process(){
|
|||||||
buttons_hold = gamepadData.btns_h;
|
buttons_hold = gamepadData.btns_h;
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
int chan = 0;
|
s32 chan = 0;
|
||||||
if(controller_type == UController_Type_Pro1){ chan = 0;}
|
if(controller_type == UController_Type_Pro1){ chan = 0;}
|
||||||
if(controller_type == UController_Type_Pro2){ chan = 1;}
|
if(controller_type == UController_Type_Pro2){ chan = 1;}
|
||||||
if(controller_type == UController_Type_Pro3){ chan = 2;}
|
if(controller_type == UController_Type_Pro3){ chan = 2;}
|
||||||
if(controller_type == UController_Type_Pro4){ chan = 3;}
|
if(controller_type == UController_Type_Pro4){ chan = 3;}
|
||||||
int res = 0;
|
s32 res = 0;
|
||||||
if((res = ControllerPatcher::setProControllerDataFromHID((void *) &proData,chan,PRO_CONTROLLER_MODE_KPADDATA)) >= 0){
|
if((res = ControllerPatcher::setProControllerDataFromHID((void *) &proData,chan,PRO_CONTROLLER_MODE_KPADDATA)) >= 0){
|
||||||
buttons_hold = proData.pro.btns_h;
|
buttons_hold = proData.pro.btns_h;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
for(std::vector<ButtonConfig *>::iterator it = controllerConfig.buttons.begin(); it != controllerConfig.buttons.end(); ++it) {
|
for(std::vector<ButtonConfig *>::iterator it = controllerConfig.buttons.begin(); it != controllerConfig.buttons.end(); ++it) {
|
||||||
ButtonConfig * btn_cfg = *it;
|
ButtonConfig * btn_cfg = *it;
|
||||||
if(btn_cfg != NULL){
|
if(btn_cfg != NULL){
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
GuiDragListener::GuiDragListener(f32 w,f32 h){
|
GuiDragListener::GuiDragListener(f32 w,f32 h){
|
||||||
width = w;
|
width = w;
|
||||||
height = h;
|
height = h;
|
||||||
for(int i = 0; i < iMaxGuiTriggers; i++)
|
for(s32 i = 0; i < iMaxGuiTriggers; i++)
|
||||||
{
|
{
|
||||||
trigger[i] = NULL;
|
trigger[i] = NULL;
|
||||||
}
|
}
|
||||||
@ -38,18 +38,18 @@ GuiDragListener::GuiDragListener(f32 w,f32 h){
|
|||||||
GuiDragListener::~GuiDragListener(){
|
GuiDragListener::~GuiDragListener(){
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuiDragListener::setState(int i, int c){
|
void GuiDragListener::setState(s32 i, s32 c){
|
||||||
GuiElement::setState(i,c);
|
GuiElement::setState(i,c);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuiDragListener::setTrigger(GuiTrigger * t, int idx){
|
void GuiDragListener::setTrigger(GuiTrigger * t, s32 idx){
|
||||||
if(idx >= 0 && idx < iMaxGuiTriggers)
|
if(idx >= 0 && idx < iMaxGuiTriggers)
|
||||||
{
|
{
|
||||||
trigger[idx] = t;
|
trigger[idx] = t;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
for(int i = 0; i < iMaxGuiTriggers; i++)
|
for(s32 i = 0; i < iMaxGuiTriggers; i++)
|
||||||
{
|
{
|
||||||
if(!trigger[i])
|
if(!trigger[i])
|
||||||
{
|
{
|
||||||
@ -66,7 +66,7 @@ void GuiDragListener::update(GuiController * c){
|
|||||||
else if(parentElement && (parentElement->isStateSet(STATE_DISABLED|STATE_HIDDEN|STATE_DISABLE_INPUT, c->chan)))
|
else if(parentElement && (parentElement->isStateSet(STATE_DISABLED|STATE_HIDDEN|STATE_DISABLE_INPUT, c->chan)))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for(int i = 0; i < iMaxGuiTriggers; i++){
|
for(s32 i = 0; i < iMaxGuiTriggers; i++){
|
||||||
if(!trigger[i]){
|
if(!trigger[i]){
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -75,8 +75,8 @@ void GuiDragListener::update(GuiController * c){
|
|||||||
|
|
||||||
|
|
||||||
if(isHeld && this->isInside(c->data.x, c->data.y)){
|
if(isHeld && this->isInside(c->data.x, c->data.y)){
|
||||||
int dx = c->data.x - c->lastData.x;
|
s32 dx = c->data.x - c->lastData.x;
|
||||||
int dy = c->data.y - c->lastData.y;
|
s32 dy = c->data.y - c->lastData.y;
|
||||||
|
|
||||||
if(dx == 0 && dy == 0) continue;
|
if(dx == 0 && dy == 0) continue;
|
||||||
|
|
||||||
|
@ -32,20 +32,20 @@ class GuiDragListener : public GuiElement
|
|||||||
//!Destructor
|
//!Destructor
|
||||||
virtual ~GuiDragListener();
|
virtual ~GuiDragListener();
|
||||||
|
|
||||||
void setState(int i, int c);
|
void setState(s32 i, s32 c);
|
||||||
|
|
||||||
//!Set a new GuiTrigger for the element
|
//!Set a new GuiTrigger for the element
|
||||||
//!\param i Index of trigger array to set
|
//!\param i Index of trigger array to set
|
||||||
//!\param t Pointer to GuiTrigger
|
//!\param t Pointer to GuiTrigger
|
||||||
void setTrigger(GuiTrigger * t, int idx = -1);
|
void setTrigger(GuiTrigger * t, s32 idx = -1);
|
||||||
|
|
||||||
//!Constantly called to allow the GuiDragListener to respond to updated input data
|
//!Constantly called to allow the GuiDragListener to respond to updated input data
|
||||||
//!\param t Pointer to a GuiTrigger, containing the current input data from PAD/WPAD
|
//!\param t Pointer to a GuiTrigger, containing the current input data from PAD/WPAD
|
||||||
void update(GuiController * c);
|
void update(GuiController * c);
|
||||||
|
|
||||||
sigslot::signal5<GuiDragListener *, const GuiController *, GuiTrigger *,int,int> dragged;
|
sigslot::signal5<GuiDragListener *, const GuiController *, GuiTrigger *,s32,s32> dragged;
|
||||||
protected:
|
protected:
|
||||||
static const int iMaxGuiTriggers = 10;
|
static const s32 iMaxGuiTriggers = 10;
|
||||||
|
|
||||||
GuiTrigger * trigger[iMaxGuiTriggers]; //!< GuiTriggers (input actions) that this element responds to
|
GuiTrigger * trigger[iMaxGuiTriggers]; //!< GuiTriggers (input actions) that this element responds to
|
||||||
};
|
};
|
||||||
|
@ -17,8 +17,8 @@
|
|||||||
#include "GuiElement.h"
|
#include "GuiElement.h"
|
||||||
|
|
||||||
//! TODO remove this!
|
//! TODO remove this!
|
||||||
static int screenwidth = 1280;
|
static s32 screenwidth = 1280;
|
||||||
static int screenheight = 720;
|
static s32 screenheight = 720;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor for the Object class.
|
* Constructor for the Object class.
|
||||||
@ -34,7 +34,7 @@ GuiElement::GuiElement()
|
|||||||
scaleX = 1.0f;
|
scaleX = 1.0f;
|
||||||
scaleY = 1.0f;
|
scaleY = 1.0f;
|
||||||
scaleZ = 1.0f;
|
scaleZ = 1.0f;
|
||||||
for(int i = 0; i < 4; i++)
|
for(s32 i = 0; i < 4; i++)
|
||||||
state[i] = STATE_DEFAULT;
|
state[i] = STATE_DEFAULT;
|
||||||
stateChan = -1;
|
stateChan = -1;
|
||||||
parentElement = NULL;
|
parentElement = NULL;
|
||||||
@ -130,7 +130,7 @@ f32 GuiElement::getTop()
|
|||||||
return y + yoffset;
|
return y + yoffset;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuiElement::setEffect(int eff, int amount, int target)
|
void GuiElement::setEffect(s32 eff, s32 amount, s32 target)
|
||||||
{
|
{
|
||||||
if(eff & EFFECT_SLIDE_IN)
|
if(eff & EFFECT_SLIDE_IN)
|
||||||
{
|
{
|
||||||
@ -138,28 +138,28 @@ void GuiElement::setEffect(int eff, int amount, int target)
|
|||||||
if(eff & EFFECT_SLIDE_TOP)
|
if(eff & EFFECT_SLIDE_TOP)
|
||||||
{
|
{
|
||||||
if(eff & EFFECT_SLIDE_FROM)
|
if(eff & EFFECT_SLIDE_FROM)
|
||||||
yoffsetDyn = (int) -getHeight()*scaleY;
|
yoffsetDyn = (s32) -getHeight()*scaleY;
|
||||||
else
|
else
|
||||||
yoffsetDyn = -screenheight;
|
yoffsetDyn = -screenheight;
|
||||||
}
|
}
|
||||||
else if(eff & EFFECT_SLIDE_LEFT)
|
else if(eff & EFFECT_SLIDE_LEFT)
|
||||||
{
|
{
|
||||||
if(eff & EFFECT_SLIDE_FROM)
|
if(eff & EFFECT_SLIDE_FROM)
|
||||||
xoffsetDyn = (int) -getWidth()*scaleX;
|
xoffsetDyn = (s32) -getWidth()*scaleX;
|
||||||
else
|
else
|
||||||
xoffsetDyn = -screenwidth;
|
xoffsetDyn = -screenwidth;
|
||||||
}
|
}
|
||||||
else if(eff & EFFECT_SLIDE_BOTTOM)
|
else if(eff & EFFECT_SLIDE_BOTTOM)
|
||||||
{
|
{
|
||||||
if(eff & EFFECT_SLIDE_FROM)
|
if(eff & EFFECT_SLIDE_FROM)
|
||||||
yoffsetDyn = (int) getHeight()*scaleY;
|
yoffsetDyn = (s32) getHeight()*scaleY;
|
||||||
else
|
else
|
||||||
yoffsetDyn = screenheight;
|
yoffsetDyn = screenheight;
|
||||||
}
|
}
|
||||||
else if(eff & EFFECT_SLIDE_RIGHT)
|
else if(eff & EFFECT_SLIDE_RIGHT)
|
||||||
{
|
{
|
||||||
if(eff & EFFECT_SLIDE_FROM)
|
if(eff & EFFECT_SLIDE_FROM)
|
||||||
xoffsetDyn = (int) getWidth()*scaleX;
|
xoffsetDyn = (s32) getWidth()*scaleX;
|
||||||
else
|
else
|
||||||
xoffsetDyn = screenwidth;
|
xoffsetDyn = screenwidth;
|
||||||
}
|
}
|
||||||
@ -181,7 +181,7 @@ void GuiElement::setEffect(int eff, int amount, int target)
|
|||||||
//!\param e Effect to enable
|
//!\param e Effect to enable
|
||||||
//!\param a Amount of the effect (usage varies on effect)
|
//!\param a Amount of the effect (usage varies on effect)
|
||||||
//!\param t Target amount of the effect (usage varies on effect)
|
//!\param t Target amount of the effect (usage varies on effect)
|
||||||
void GuiElement::setEffectOnOver(int e, int a, int t)
|
void GuiElement::setEffectOnOver(s32 e, s32 a, s32 t)
|
||||||
{
|
{
|
||||||
effectsOver |= e;
|
effectsOver |= e;
|
||||||
effectAmountOver = a;
|
effectAmountOver = a;
|
||||||
|
@ -239,7 +239,7 @@ class GuiElement : public AsyncDeleter::Element
|
|||||||
//!Sets the element's state
|
//!Sets the element's state
|
||||||
//!\param s State (STATE_DEFAULT, STATE_SELECTED, STATE_CLICKED, STATE_DISABLED)
|
//!\param s State (STATE_DEFAULT, STATE_SELECTED, STATE_CLICKED, STATE_DISABLED)
|
||||||
//!\param c Controller channel (0-3, -1 = none)
|
//!\param c Controller channel (0-3, -1 = none)
|
||||||
virtual void setState(int s, int c = -1)
|
virtual void setState(s32 s, s32 c = -1)
|
||||||
{
|
{
|
||||||
if(c >= 0 && c < 4)
|
if(c >= 0 && c < 4)
|
||||||
{
|
{
|
||||||
@ -247,13 +247,13 @@ class GuiElement : public AsyncDeleter::Element
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
for(int i = 0; i < 4; i++)
|
for(s32 i = 0; i < 4; i++)
|
||||||
state[i] |= s;
|
state[i] |= s;
|
||||||
}
|
}
|
||||||
stateChan = c;
|
stateChan = c;
|
||||||
stateChanged(this, s, c);
|
stateChanged(this, s, c);
|
||||||
}
|
}
|
||||||
virtual void clearState(int s, int c = -1)
|
virtual void clearState(s32 s, s32 c = -1)
|
||||||
{
|
{
|
||||||
if(c >= 0 && c < 4)
|
if(c >= 0 && c < 4)
|
||||||
{
|
{
|
||||||
@ -261,13 +261,13 @@ class GuiElement : public AsyncDeleter::Element
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
for(int i = 0; i < 4; i++)
|
for(s32 i = 0; i < 4; i++)
|
||||||
state[i] &= ~s;
|
state[i] &= ~s;
|
||||||
}
|
}
|
||||||
stateChan = c;
|
stateChan = c;
|
||||||
stateChanged(this, s, c);
|
stateChanged(this, s, c);
|
||||||
}
|
}
|
||||||
virtual bool isStateSet(int s, int c = -1) const
|
virtual bool isStateSet(s32 s, s32 c = -1) const
|
||||||
{
|
{
|
||||||
if(c >= 0 && c < 4)
|
if(c >= 0 && c < 4)
|
||||||
{
|
{
|
||||||
@ -275,7 +275,7 @@ class GuiElement : public AsyncDeleter::Element
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
for(int i = 0; i < 4; i++)
|
for(s32 i = 0; i < 4; i++)
|
||||||
if((state[i] & s) != 0)
|
if((state[i] & s) != 0)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
@ -284,14 +284,14 @@ class GuiElement : public AsyncDeleter::Element
|
|||||||
}
|
}
|
||||||
//!Gets the element's current state
|
//!Gets the element's current state
|
||||||
//!\return state
|
//!\return state
|
||||||
virtual int getState(int c = 0) { return state[c]; };
|
virtual s32 getState(s32 c = 0) { return state[c]; };
|
||||||
//!Gets the controller channel that last changed the element's state
|
//!Gets the controller channel that last changed the element's state
|
||||||
//!\return Channel number (0-3, -1 = no channel)
|
//!\return Channel number (0-3, -1 = no channel)
|
||||||
virtual int getStateChan() { return stateChan; };
|
virtual s32 getStateChan() { return stateChan; };
|
||||||
//!Resets the element's state to STATE_DEFAULT
|
//!Resets the element's state to STATE_DEFAULT
|
||||||
virtual void resetState()
|
virtual void resetState()
|
||||||
{
|
{
|
||||||
for(int i = 0; i < 4; i++)
|
for(s32 i = 0; i < 4; i++)
|
||||||
state[i] = STATE_DEFAULT;
|
state[i] = STATE_DEFAULT;
|
||||||
stateChan = -1;
|
stateChan = -1;
|
||||||
}
|
}
|
||||||
@ -386,19 +386,19 @@ class GuiElement : public AsyncDeleter::Element
|
|||||||
//!\param e Effect to enable
|
//!\param e Effect to enable
|
||||||
//!\param a Amount of the effect (usage varies on effect)
|
//!\param a Amount of the effect (usage varies on effect)
|
||||||
//!\param t Target amount of the effect (usage varies on effect)
|
//!\param t Target amount of the effect (usage varies on effect)
|
||||||
virtual void setEffect(int e, int a, int t=0);
|
virtual void setEffect(s32 e, s32 a, s32 t=0);
|
||||||
//!Sets an effect to be enabled on wiimote cursor over
|
//!Sets an effect to be enabled on wiimote cursor over
|
||||||
//!\param e Effect to enable
|
//!\param e Effect to enable
|
||||||
//!\param a Amount of the effect (usage varies on effect)
|
//!\param a Amount of the effect (usage varies on effect)
|
||||||
//!\param t Target amount of the effect (usage varies on effect)
|
//!\param t Target amount of the effect (usage varies on effect)
|
||||||
virtual void setEffectOnOver(int e, int a, int t=0);
|
virtual void setEffectOnOver(s32 e, s32 a, s32 t=0);
|
||||||
//!Shortcut to SetEffectOnOver(EFFECT_SCALE, 4, 110)
|
//!Shortcut to SetEffectOnOver(EFFECT_SCALE, 4, 110)
|
||||||
virtual void setEffectGrow() { setEffectOnOver(EFFECT_SCALE, 4, 110); }
|
virtual void setEffectGrow() { setEffectOnOver(EFFECT_SCALE, 4, 110); }
|
||||||
//!Reset all applied effects
|
//!Reset all applied effects
|
||||||
virtual void resetEffects();
|
virtual void resetEffects();
|
||||||
//!Gets the current element effects
|
//!Gets the current element effects
|
||||||
//!\return element effects
|
//!\return element effects
|
||||||
virtual int getEffect() const { return effects; }
|
virtual s32 getEffect() const { return effects; }
|
||||||
//!\return true if element animation is on going
|
//!\return true if element animation is on going
|
||||||
virtual bool isAnimated() const { return (parentElement != 0) && (getEffect() > 0); }
|
virtual bool isAnimated() const { return (parentElement != 0) && (getEffect() > 0); }
|
||||||
//!Checks whether the specified coordinates are within the element's boundaries
|
//!Checks whether the specified coordinates are within the element's boundaries
|
||||||
@ -432,13 +432,13 @@ class GuiElement : public AsyncDeleter::Element
|
|||||||
}
|
}
|
||||||
//!Gets whether or not the element is in STATE_SELECTED
|
//!Gets whether or not the element is in STATE_SELECTED
|
||||||
//!\return true if selected, false otherwise
|
//!\return true if selected, false otherwise
|
||||||
virtual int getSelected() { return -1; }
|
virtual s32 getSelected() { return -1; }
|
||||||
//!Sets the element's alignment respective to its parent element
|
//!Sets the element's alignment respective to its parent element
|
||||||
//!Bitwise ALIGN_LEFT | ALIGN_RIGHT | ALIGN_CENTRE, ALIGN_TOP, ALIGN_BOTTOM, ALIGN_MIDDLE)
|
//!Bitwise ALIGN_LEFT | ALIGN_RIGHT | ALIGN_CENTRE, ALIGN_TOP, ALIGN_BOTTOM, ALIGN_MIDDLE)
|
||||||
//!\param align Alignment
|
//!\param align Alignment
|
||||||
virtual void setAlignment(int a) { alignment = a; }
|
virtual void setAlignment(s32 a) { alignment = a; }
|
||||||
//!Gets the element's alignment
|
//!Gets the element's alignment
|
||||||
virtual int getAlignment() const { return alignment; }
|
virtual s32 getAlignment() const { return alignment; }
|
||||||
//!Angle of the object
|
//!Angle of the object
|
||||||
virtual void setAngle(f32 a) { angle = a; }
|
virtual void setAngle(f32 a) { angle = a; }
|
||||||
//!Angle of the object
|
//!Angle of the object
|
||||||
@ -489,7 +489,7 @@ class GuiElement : public AsyncDeleter::Element
|
|||||||
}
|
}
|
||||||
//! Signals
|
//! Signals
|
||||||
sigslot::signal2<GuiElement *, bool> visibleChanged;
|
sigslot::signal2<GuiElement *, bool> visibleChanged;
|
||||||
sigslot::signal3<GuiElement *, int, int> stateChanged;
|
sigslot::signal3<GuiElement *, s32, s32> stateChanged;
|
||||||
sigslot::signal1<GuiElement *> effectFinished;
|
sigslot::signal1<GuiElement *> effectFinished;
|
||||||
protected:
|
protected:
|
||||||
bool rumble; //!< Wiimote rumble (on/off) - set to on when this element requests a rumble event
|
bool rumble; //!< Wiimote rumble (on/off) - set to on when this element requests a rumble event
|
||||||
@ -508,22 +508,22 @@ class GuiElement : public AsyncDeleter::Element
|
|||||||
f32 scaleX; //!< Element scale (1 = 100%)
|
f32 scaleX; //!< Element scale (1 = 100%)
|
||||||
f32 scaleY; //!< Element scale (1 = 100%)
|
f32 scaleY; //!< Element scale (1 = 100%)
|
||||||
f32 scaleZ; //!< Element scale (1 = 100%)
|
f32 scaleZ; //!< Element scale (1 = 100%)
|
||||||
int alignment; //!< Horizontal element alignment, respective to parent element
|
s32 alignment; //!< Horizontal element alignment, respective to parent element
|
||||||
int state[4]; //!< Element state (DEFAULT, SELECTED, CLICKED, DISABLED)
|
s32 state[4]; //!< Element state (DEFAULT, SELECTED, CLICKED, DISABLED)
|
||||||
int stateChan; //!< Which controller channel is responsible for the last change in state
|
s32 stateChan; //!< Which controller channel is responsible for the last change in state
|
||||||
GuiElement * parentElement; //!< Parent element
|
GuiElement * parentElement; //!< Parent element
|
||||||
|
|
||||||
//! TODO: Move me to some Animator class
|
//! TODO: Move me to some Animator class
|
||||||
int xoffsetDyn; //!< Element X offset, dynamic (added to xoffset value for animation effects)
|
s32 xoffsetDyn; //!< Element X offset, dynamic (added to xoffset value for animation effects)
|
||||||
int yoffsetDyn; //!< Element Y offset, dynamic (added to yoffset value for animation effects)
|
s32 yoffsetDyn; //!< Element Y offset, dynamic (added to yoffset value for animation effects)
|
||||||
f32 alphaDyn; //!< Element alpha, dynamic (multiplied by alpha value for blending/fading effects)
|
f32 alphaDyn; //!< Element alpha, dynamic (multiplied by alpha value for blending/fading effects)
|
||||||
f32 scaleDyn; //!< Element scale, dynamic (multiplied by alpha value for blending/fading effects)
|
f32 scaleDyn; //!< Element scale, dynamic (multiplied by alpha value for blending/fading effects)
|
||||||
int effects; //!< Currently enabled effect(s). 0 when no effects are enabled
|
s32 effects; //!< Currently enabled effect(s). 0 when no effects are enabled
|
||||||
int effectAmount; //!< Effect amount. Used by different effects for different purposes
|
s32 effectAmount; //!< Effect amount. Used by different effects for different purposes
|
||||||
int effectTarget; //!< Effect target amount. Used by different effects for different purposes
|
s32 effectTarget; //!< Effect target amount. Used by different effects for different purposes
|
||||||
int effectsOver; //!< Effects to enable when wiimote cursor is over this element. Copied to effects variable on over event
|
s32 effectsOver; //!< Effects to enable when wiimote cursor is over this element. Copied to effects variable on over event
|
||||||
int effectAmountOver; //!< EffectAmount to set when wiimote cursor is over this element
|
s32 effectAmountOver; //!< EffectAmount to set when wiimote cursor is over this element
|
||||||
int effectTargetOver; //!< EffectTarget to set when wiimote cursor is over this element
|
s32 effectTargetOver; //!< EffectTarget to set when wiimote cursor is over this element
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -118,7 +118,7 @@ void GuiFrame::resetState()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuiFrame::setState(int s, int c)
|
void GuiFrame::setState(s32 s, s32 c)
|
||||||
{
|
{
|
||||||
GuiElement::setState(s, c);
|
GuiElement::setState(s, c);
|
||||||
|
|
||||||
@ -128,7 +128,7 @@ void GuiFrame::setState(int s, int c)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuiFrame::clearState(int s, int c)
|
void GuiFrame::clearState(s32 s, s32 c)
|
||||||
{
|
{
|
||||||
GuiElement::clearState(s, c);
|
GuiElement::clearState(s, c);
|
||||||
|
|
||||||
@ -148,10 +148,10 @@ void GuiFrame::setVisible(bool v)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int GuiFrame::getSelected()
|
s32 GuiFrame::getSelected()
|
||||||
{
|
{
|
||||||
// find selected element
|
// find selected element
|
||||||
int found = -1;
|
s32 found = -1;
|
||||||
for (u32 i = 0; i < elements.size(); ++i)
|
for (u32 i = 0; i < elements.size(); ++i)
|
||||||
{
|
{
|
||||||
if(elements[i]->isStateSet(STATE_SELECTED | STATE_OVER))
|
if(elements[i]->isStateSet(STATE_SELECTED | STATE_OVER))
|
||||||
|
@ -61,11 +61,11 @@ class GuiFrame : public GuiElement
|
|||||||
void resetState();
|
void resetState();
|
||||||
//!Sets the window's state
|
//!Sets the window's state
|
||||||
//!\param s State
|
//!\param s State
|
||||||
void setState(int s, int c = -1);
|
void setState(s32 s, s32 c = -1);
|
||||||
void clearState(int s, int c = -1);
|
void clearState(s32 s, s32 c = -1);
|
||||||
//!Gets the index of the GuiElement inside the window that is currently selected
|
//!Gets the index of the GuiElement inside the window that is currently selected
|
||||||
//!\return index of selected GuiElement
|
//!\return index of selected GuiElement
|
||||||
int getSelected();
|
s32 getSelected();
|
||||||
//!Dim the Window's background
|
//!Dim the Window's background
|
||||||
void dimBackground(bool d);
|
void dimBackground(bool d);
|
||||||
//!Draws all the elements in this GuiFrame
|
//!Draws all the elements in this GuiFrame
|
||||||
|
@ -33,7 +33,7 @@ GuiImage::GuiImage(GuiImageData * img)
|
|||||||
imageData = img;
|
imageData = img;
|
||||||
}
|
}
|
||||||
|
|
||||||
GuiImage::GuiImage(int w, int h, const GX2Color & c, int type)
|
GuiImage::GuiImage(s32 w, s32 h, const GX2Color & c, s32 type)
|
||||||
{
|
{
|
||||||
internalInit(w, h);
|
internalInit(w, h);
|
||||||
imgType = type;
|
imgType = type;
|
||||||
@ -47,7 +47,7 @@ GuiImage::GuiImage(int w, int h, const GX2Color & c, int type)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
GuiImage::GuiImage(int w, int h, const GX2Color *c, u32 color_count, int type)
|
GuiImage::GuiImage(s32 w, s32 h, const GX2Color *c, u32 color_count, s32 type)
|
||||||
{
|
{
|
||||||
internalInit(w, h);
|
internalInit(w, h);
|
||||||
imgType = type;
|
imgType = type;
|
||||||
@ -61,7 +61,7 @@ GuiImage::GuiImage(int w, int h, const GX2Color *c, u32 color_count, int type)
|
|||||||
for(u32 i = 0; i < colorCount; i++)
|
for(u32 i = 0; i < colorCount; i++)
|
||||||
{
|
{
|
||||||
// take the last as reference if not enough colors defined
|
// take the last as reference if not enough colors defined
|
||||||
int idx = (i < color_count) ? i : (color_count - 1);
|
s32 idx = (i < color_count) ? i : (color_count - 1);
|
||||||
setImageColor(c[idx], i);
|
setImageColor(c[idx], i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -78,7 +78,7 @@ GuiImage::~GuiImage()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuiImage::internalInit(int w, int h)
|
void GuiImage::internalInit(s32 w, s32 h)
|
||||||
{
|
{
|
||||||
imageData = NULL;
|
imageData = NULL;
|
||||||
width = w;
|
width = w;
|
||||||
@ -114,7 +114,7 @@ void GuiImage::setImageData(GuiImageData * img)
|
|||||||
imgType = IMAGE_TEXTURE;
|
imgType = IMAGE_TEXTURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
GX2Color GuiImage::getPixel(int x, int y)
|
GX2Color GuiImage::getPixel(s32 x, s32 y)
|
||||||
{
|
{
|
||||||
if(!imageData || this->getWidth() <= 0 || x < 0 || y < 0 || x >= this->getWidth() || y >= this->getHeight())
|
if(!imageData || this->getWidth() <= 0 || x < 0 || y < 0 || x >= this->getWidth() || y >= this->getHeight())
|
||||||
return (GX2Color){0, 0, 0, 0};
|
return (GX2Color){0, 0, 0, 0};
|
||||||
@ -131,7 +131,7 @@ GX2Color GuiImage::getPixel(int x, int y)
|
|||||||
return color;
|
return color;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuiImage::setPixel(int x, int y, const GX2Color & color)
|
void GuiImage::setPixel(s32 x, s32 y, const GX2Color & color)
|
||||||
{
|
{
|
||||||
if(!imageData || this->getWidth() <= 0 || x < 0 || y < 0 || x >= this->getWidth() || y >= this->getHeight())
|
if(!imageData || this->getWidth() <= 0 || x < 0 || y < 0 || x >= this->getWidth() || y >= this->getHeight())
|
||||||
return;
|
return;
|
||||||
@ -142,13 +142,13 @@ void GuiImage::setPixel(int x, int y, const GX2Color & color)
|
|||||||
imagePtr[y * pitch + x] = (color.r << 24) | (color.g << 16) | (color.b << 8) | (color.a << 0);
|
imagePtr[y * pitch + x] = (color.r << 24) | (color.g << 16) | (color.b << 8) | (color.a << 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuiImage::setImageColor(const GX2Color & c, int idx)
|
void GuiImage::setImageColor(const GX2Color & c, s32 idx)
|
||||||
{
|
{
|
||||||
if(!colorVtxs) {
|
if(!colorVtxs) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(idx >= 0 && idx < (int)colorCount)
|
if(idx >= 0 && idx < (s32)colorCount)
|
||||||
{
|
{
|
||||||
colorVtxs[(idx << 2) + 0] = c.r;
|
colorVtxs[(idx << 2) + 0] = c.r;
|
||||||
colorVtxs[(idx << 2) + 1] = c.g;
|
colorVtxs[(idx << 2) + 1] = c.g;
|
||||||
@ -169,7 +169,7 @@ void GuiImage::setImageColor(const GX2Color & c, int idx)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuiImage::setSize(int w, int h)
|
void GuiImage::setSize(s32 w, s32 h)
|
||||||
{
|
{
|
||||||
width = w;
|
width = w;
|
||||||
height = h;
|
height = h;
|
||||||
@ -188,8 +188,8 @@ void GuiImage::setPrimitiveVertex(s32 prim, const f32 *posVtx, const f32 *texCoo
|
|||||||
|
|
||||||
for(u32 i = 0; i < vtxCount; i++)
|
for(u32 i = 0; i < vtxCount; i++)
|
||||||
{
|
{
|
||||||
int newColorIdx = (i << 2);
|
s32 newColorIdx = (i << 2);
|
||||||
int colorIdx = (i < colorCount) ? (newColorIdx) : ((colorCount - 1) << 2);
|
s32 colorIdx = (i < colorCount) ? (newColorIdx) : ((colorCount - 1) << 2);
|
||||||
|
|
||||||
newColorVtxs[newColorIdx + 0] = colorVtxs[colorIdx + 0];
|
newColorVtxs[newColorIdx + 0] = colorVtxs[colorIdx + 0];
|
||||||
newColorVtxs[newColorIdx + 1] = colorVtxs[colorIdx + 1];
|
newColorVtxs[newColorIdx + 1] = colorVtxs[colorIdx + 1];
|
||||||
@ -228,8 +228,8 @@ void GuiImage::draw(CVideo *pVideo)
|
|||||||
|
|
||||||
// if(image && tileHorizontal > 0 && tileVertical > 0)
|
// if(image && tileHorizontal > 0 && tileVertical > 0)
|
||||||
// {
|
// {
|
||||||
// for(int n=0; n<tileVertical; n++)
|
// for(s32 n=0; n<tileVertical; n++)
|
||||||
// for(int i=0; i<tileHorizontal; i++)
|
// for(s32 i=0; i<tileHorizontal; i++)
|
||||||
// {
|
// {
|
||||||
// if(bUnCut)
|
// if(bUnCut)
|
||||||
// Menu_DrawImg(image, width, height, format, currLeft+width*i, currTop+width*n, currZ, imageangle, currScaleX, currScaleY, currAlpha);
|
// Menu_DrawImg(image, width, height, format, currLeft+width*i, currTop+width*n, currZ, imageangle, currScaleX, currScaleY, currAlpha);
|
||||||
@ -239,9 +239,9 @@ void GuiImage::draw(CVideo *pVideo)
|
|||||||
// }
|
// }
|
||||||
// else if(image && tileHorizontal > 0)
|
// else if(image && tileHorizontal > 0)
|
||||||
// {
|
// {
|
||||||
// for(int i=0; i<tileHorizontal; i++)
|
// for(s32 i=0; i<tileHorizontal; i++)
|
||||||
// {
|
// {
|
||||||
// int widthTile = (imageangle == 90 || imageangle == 270) ? height : width;
|
// s32 widthTile = (imageangle == 90 || imageangle == 270) ? height : width;
|
||||||
// if(bUnCut)
|
// if(bUnCut)
|
||||||
// Menu_DrawImg(image, width, height, format, currLeft+widthTile*i, currTop, currZ, imageangle, currScaleX, currScaleY, currAlpha);
|
// Menu_DrawImg(image, width, height, format, currLeft+widthTile*i, currTop, currZ, imageangle, currScaleX, currScaleY, currAlpha);
|
||||||
// else
|
// else
|
||||||
@ -250,7 +250,7 @@ void GuiImage::draw(CVideo *pVideo)
|
|||||||
// }
|
// }
|
||||||
// else if(image && tileVertical > 0)
|
// else if(image && tileVertical > 0)
|
||||||
// {
|
// {
|
||||||
// for(int i=0; i<tileVertical; i++)
|
// for(s32 i=0; i<tileVertical; i++)
|
||||||
// {
|
// {
|
||||||
// if(bUnCut)
|
// if(bUnCut)
|
||||||
// Menu_DrawImg(image, width, height, format, currLeft, currTop+height*i, currZ, imageangle, currScaleX, currScaleY, currAlpha);
|
// Menu_DrawImg(image, width, height, format, currLeft, currTop+height*i, currZ, imageangle, currScaleX, currScaleY, currAlpha);
|
||||||
|
@ -39,16 +39,16 @@ public:
|
|||||||
//!\param w Image width
|
//!\param w Image width
|
||||||
//!\param h Image height
|
//!\param h Image height
|
||||||
//!\param c Array with 4 x image color (BL, BR, TL, TR)
|
//!\param c Array with 4 x image color (BL, BR, TL, TR)
|
||||||
GuiImage(int w, int h, const GX2Color & c, int imgType = IMAGE_COLOR);
|
GuiImage(s32 w, s32 h, const GX2Color & c, s32 imgType = IMAGE_COLOR);
|
||||||
GuiImage(int w, int h, const GX2Color * c, u32 colorCount = 1, int imgType = IMAGE_COLOR);
|
GuiImage(s32 w, s32 h, const GX2Color * c, u32 colorCount = 1, s32 imgType = IMAGE_COLOR);
|
||||||
//!Destructor
|
//!Destructor
|
||||||
virtual ~GuiImage();
|
virtual ~GuiImage();
|
||||||
//!Sets the number of times to draw the image horizontally
|
//!Sets the number of times to draw the image horizontally
|
||||||
//!\param t Number of times to draw the image
|
//!\param t Number of times to draw the image
|
||||||
void setTileHorizontal(int t) { tileHorizontal = t; }
|
void setTileHorizontal(s32 t) { tileHorizontal = t; }
|
||||||
//!Sets the number of times to draw the image vertically
|
//!Sets the number of times to draw the image vertically
|
||||||
//!\param t Number of times to draw the image
|
//!\param t Number of times to draw the image
|
||||||
void setTileVertical(int t) { tileVertical = t; }
|
void setTileVertical(s32 t) { tileVertical = t; }
|
||||||
//!Constantly called to draw the image
|
//!Constantly called to draw the image
|
||||||
void draw(CVideo *pVideo);
|
void draw(CVideo *pVideo);
|
||||||
//!Gets the image data
|
//!Gets the image data
|
||||||
@ -60,16 +60,16 @@ public:
|
|||||||
//!Gets the pixel color at the specified coordinates of the image
|
//!Gets the pixel color at the specified coordinates of the image
|
||||||
//!\param x X coordinate
|
//!\param x X coordinate
|
||||||
//!\param y Y coordinate
|
//!\param y Y coordinate
|
||||||
GX2Color getPixel(int x, int y);
|
GX2Color getPixel(s32 x, s32 y);
|
||||||
//!Sets the pixel color at the specified coordinates of the image
|
//!Sets the pixel color at the specified coordinates of the image
|
||||||
//!\param x X coordinate
|
//!\param x X coordinate
|
||||||
//!\param y Y coordinate
|
//!\param y Y coordinate
|
||||||
//!\param color Pixel color
|
//!\param color Pixel color
|
||||||
void setPixel(int x, int y, const GX2Color & color);
|
void setPixel(s32 x, s32 y, const GX2Color & color);
|
||||||
//!Change ImageColor
|
//!Change ImageColor
|
||||||
void setImageColor(const GX2Color & c, int idx = -1);
|
void setImageColor(const GX2Color & c, s32 idx = -1);
|
||||||
//!Change ImageColor
|
//!Change ImageColor
|
||||||
void setSize(int w, int h);
|
void setSize(s32 w, s32 h);
|
||||||
|
|
||||||
void setPrimitiveVertex(s32 prim, const f32 *pos, const f32 *tex, u32 count);
|
void setPrimitiveVertex(s32 prim, const f32 *pos, const f32 *tex, u32 count);
|
||||||
|
|
||||||
@ -84,12 +84,12 @@ public:
|
|||||||
colorIntensity = col;
|
colorIntensity = col;
|
||||||
}
|
}
|
||||||
protected:
|
protected:
|
||||||
void internalInit(int w, int h);
|
void internalInit(s32 w, s32 h);
|
||||||
|
|
||||||
int imgType; //!< Type of image data (IMAGE_TEXTURE, IMAGE_COLOR, IMAGE_DATA)
|
s32 imgType; //!< Type of image data (IMAGE_TEXTURE, IMAGE_COLOR, IMAGE_DATA)
|
||||||
GuiImageData * imageData; //!< Poiner to image data. May be shared with GuiImageData data
|
GuiImageData * imageData; //!< Poiner to image data. May be shared with GuiImageData data
|
||||||
int tileHorizontal; //!< Number of times to draw (tile) the image horizontally
|
s32 tileHorizontal; //!< Number of times to draw (tile) the image horizontally
|
||||||
int tileVertical; //!< Number of times to draw (tile) the image vertically
|
s32 tileVertical; //!< Number of times to draw (tile) the image vertically
|
||||||
|
|
||||||
//! Internally used variables for rendering
|
//! Internally used variables for rendering
|
||||||
u8 *colorVtxs;
|
u8 *colorVtxs;
|
||||||
|
@ -114,7 +114,7 @@ void GuiImageAsync::guiImageAsyncThread(CThread *thread, void *arg)
|
|||||||
u8 *buffer = NULL;
|
u8 *buffer = NULL;
|
||||||
u32 bufferSize = 0;
|
u32 bufferSize = 0;
|
||||||
|
|
||||||
int iResult = LoadFileToMem(pInUse->filename.c_str(), &buffer, &bufferSize);
|
s32 iResult = LoadFileToMem(pInUse->filename.c_str(), &buffer, &bufferSize);
|
||||||
if(iResult > 0)
|
if(iResult > 0)
|
||||||
{
|
{
|
||||||
pInUse->imgData = new GuiImageData(buffer, bufferSize, GX2_TEX_CLAMP_MIRROR);
|
pInUse->imgData = new GuiImageData(buffer, bufferSize, GX2_TEX_CLAMP_MIRROR);
|
||||||
@ -159,8 +159,9 @@ void GuiImageAsync::threadInit()
|
|||||||
|
|
||||||
void GuiImageAsync::threadExit()
|
void GuiImageAsync::threadExit()
|
||||||
{
|
{
|
||||||
if(threadRefCounter)
|
if(threadRefCounter){
|
||||||
--threadRefCounter;
|
--threadRefCounter;
|
||||||
|
}
|
||||||
|
|
||||||
if(/*(threadRefCounter == 0) &&*/ (pThread != NULL))
|
if(/*(threadRefCounter == 0) &&*/ (pThread != NULL))
|
||||||
{
|
{
|
||||||
|
@ -31,7 +31,7 @@ GuiImageData::GuiImageData()
|
|||||||
/**
|
/**
|
||||||
* Constructor for the GuiImageData class.
|
* Constructor for the GuiImageData class.
|
||||||
*/
|
*/
|
||||||
GuiImageData::GuiImageData(const u8 * img, int imgSize, int textureClamp, int textureFormat)
|
GuiImageData::GuiImageData(const u8 * img, s32 imgSize, s32 textureClamp, s32 textureFormat)
|
||||||
{
|
{
|
||||||
texture = NULL;
|
texture = NULL;
|
||||||
sampler = NULL;
|
sampler = NULL;
|
||||||
@ -74,7 +74,7 @@ void GuiImageData::releaseData(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuiImageData::loadImage(const u8 *img, int imgSize, int textureClamp, int textureFormat)
|
void GuiImageData::loadImage(const u8 *img, s32 imgSize, s32 textureClamp, s32 textureFormat)
|
||||||
{
|
{
|
||||||
if(!img || (imgSize < 8))
|
if(!img || (imgSize < 8))
|
||||||
return;
|
return;
|
||||||
|
@ -29,22 +29,22 @@ public:
|
|||||||
GuiImageData();
|
GuiImageData();
|
||||||
//!\param img Image data
|
//!\param img Image data
|
||||||
//!\param imgSize The image size
|
//!\param imgSize The image size
|
||||||
GuiImageData(const u8 * img, int imgSize, int textureClamp = GX2_TEX_CLAMP_CLAMP, int textureFormat = GX2_SURFACE_FORMAT_TCS_R8_G8_B8_A8_UNORM);
|
GuiImageData(const u8 * img, s32 imgSize, s32 textureClamp = GX2_TEX_CLAMP_CLAMP, s32 textureFormat = GX2_SURFACE_FORMAT_TCS_R8_G8_B8_A8_UNORM);
|
||||||
//!Destructor
|
//!Destructor
|
||||||
virtual ~GuiImageData();
|
virtual ~GuiImageData();
|
||||||
//!Load image from buffer
|
//!Load image from buffer
|
||||||
//!\param img Image data
|
//!\param img Image data
|
||||||
//!\param imgSize The image size
|
//!\param imgSize The image size
|
||||||
void loadImage(const u8 * img, int imgSize, int textureClamp = GX2_TEX_CLAMP_CLAMP, int textureFormat = GX2_SURFACE_FORMAT_TCS_R8_G8_B8_A8_UNORM);
|
void loadImage(const u8 * img, s32 imgSize, s32 textureClamp = GX2_TEX_CLAMP_CLAMP, s32 textureFormat = GX2_SURFACE_FORMAT_TCS_R8_G8_B8_A8_UNORM);
|
||||||
//! getter functions
|
//! getter functions
|
||||||
const GX2Texture * getTexture() const { return texture; };
|
const GX2Texture * getTexture() const { return texture; };
|
||||||
const GX2Sampler * getSampler() const { return sampler; };
|
const GX2Sampler * getSampler() const { return sampler; };
|
||||||
//!Gets the image width
|
//!Gets the image width
|
||||||
//!\return image width
|
//!\return image width
|
||||||
int getWidth() const { if(texture) return texture->surface.width; else return 0; };
|
s32 getWidth() const { if(texture) return texture->surface.width; else return 0; };
|
||||||
//!Gets the image height
|
//!Gets the image height
|
||||||
//!\return image height
|
//!\return image height
|
||||||
int getHeight() const { if(texture) return texture->surface.height; else return 0; };
|
s32 getHeight() const { if(texture) return texture->surface.height; else return 0; };
|
||||||
//! release memory of the image data
|
//! release memory of the image data
|
||||||
void releaseData(void);
|
void releaseData(void);
|
||||||
private:
|
private:
|
||||||
|
@ -30,7 +30,7 @@ static inline f32 getRandMinusOneToOneF32()
|
|||||||
return getRandZeroToOneF32() * 2.0f - 1.0f;
|
return getRandZeroToOneF32() * 2.0f - 1.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
GuiParticleImage::GuiParticleImage(int w, int h, u32 particleCount)
|
GuiParticleImage::GuiParticleImage(s32 w, s32 h, u32 particleCount)
|
||||||
: GuiImage(NULL)
|
: GuiImage(NULL)
|
||||||
{
|
{
|
||||||
width = w;
|
width = w;
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
class GuiParticleImage : public GuiImage, public sigslot::has_slots<>
|
class GuiParticleImage : public GuiImage, public sigslot::has_slots<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
GuiParticleImage(int w, int h, u32 particleCount);
|
GuiParticleImage(s32 w, s32 h, u32 particleCount);
|
||||||
virtual ~GuiParticleImage();
|
virtual ~GuiParticleImage();
|
||||||
|
|
||||||
void draw(CVideo *pVideo);
|
void draw(CVideo *pVideo);
|
||||||
|
@ -151,7 +151,7 @@ void GuiSelectBox::OnDPADClick(GuiButton *button, const GuiController *controlle
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuiSelectBox::Init(std::map<std::string,std::string> values, int valueID)
|
void GuiSelectBox::Init(std::map<std::string,std::string> values, s32 valueID)
|
||||||
{
|
{
|
||||||
if((u32)valueID >= values.size()){
|
if((u32)valueID >= values.size()){
|
||||||
valueID = 0;
|
valueID = 0;
|
||||||
@ -164,7 +164,7 @@ void GuiSelectBox::Init(std::map<std::string,std::string> values, int valueID)
|
|||||||
|
|
||||||
valueButtons.resize(values.size());
|
valueButtons.resize(values.size());
|
||||||
|
|
||||||
int i = 0;
|
s32 i = 0;
|
||||||
f32 imgScale = 1.0f;
|
f32 imgScale = 1.0f;
|
||||||
std::map<std::string, std::string>::iterator itr;
|
std::map<std::string, std::string>::iterator itr;
|
||||||
for(itr = values.begin(); itr != values.end(); itr++) {
|
for(itr = values.begin(); itr != values.end(); itr++) {
|
||||||
@ -240,7 +240,7 @@ GuiSelectBox::~GuiSelectBox()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void GuiSelectBox::setState(int s, int c)
|
void GuiSelectBox::setState(s32 s, s32 c)
|
||||||
{
|
{
|
||||||
GuiElement::setState(s, c);
|
GuiElement::setState(s, c);
|
||||||
}
|
}
|
||||||
|
@ -35,9 +35,9 @@ class GuiSelectBox : public GuiFrame, public sigslot::has_slots<>
|
|||||||
sigslot::signal2<GuiSelectBox *, std::string> valueChanged;
|
sigslot::signal2<GuiSelectBox *, std::string> valueChanged;
|
||||||
sigslot::signal2<GuiSelectBox *, bool> showhide;
|
sigslot::signal2<GuiSelectBox *, bool> showhide;
|
||||||
void OnTopValueClicked(GuiButton *button, const GuiController *controller, GuiTrigger *trigger);
|
void OnTopValueClicked(GuiButton *button, const GuiController *controller, GuiTrigger *trigger);
|
||||||
void Init(std::map<std::string,std::string> values, int valueID);
|
void Init(std::map<std::string,std::string> values, s32 valueID);
|
||||||
|
|
||||||
void setState(int s, int c = -1);
|
void setState(s32 s, s32 c = -1);
|
||||||
|
|
||||||
virtual f32 getTopValueHeight();
|
virtual f32 getTopValueHeight();
|
||||||
virtual f32 getTopValueWidth();
|
virtual f32 getTopValueWidth();
|
||||||
|
@ -48,7 +48,7 @@ bool GuiSound::Load(const char * filepath)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//! find next free decoder
|
//! find next free decoder
|
||||||
for(int i = 0; i < MAX_DECODERS; i++)
|
for(s32 i = 0; i < MAX_DECODERS; i++)
|
||||||
{
|
{
|
||||||
SoundDecoder * decoder = SoundHandler::instance()->getDecoder(i);
|
SoundDecoder * decoder = SoundHandler::instance()->getDecoder(i);
|
||||||
if(decoder == NULL)
|
if(decoder == NULL)
|
||||||
@ -64,8 +64,9 @@ bool GuiSound::Load(const char * filepath)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(voice < 0)
|
if(voice < 0){
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -82,7 +83,7 @@ bool GuiSound::Load(const u8 * snd, s32 len)
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
//! find next free decoder
|
//! find next free decoder
|
||||||
for(int i = 0; i < MAX_DECODERS; i++)
|
for(s32 i = 0; i < MAX_DECODERS; i++)
|
||||||
{
|
{
|
||||||
SoundDecoder * decoder = SoundHandler::instance()->getDecoder(i);
|
SoundDecoder * decoder = SoundHandler::instance()->getDecoder(i);
|
||||||
if(decoder == NULL)
|
if(decoder == NULL)
|
||||||
@ -98,8 +99,9 @@ bool GuiSound::Load(const u8 * snd, s32 len)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(voice < 0)
|
if(voice < 0){
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -161,11 +163,10 @@ void GuiSound::Resume()
|
|||||||
bool GuiSound::IsPlaying()
|
bool GuiSound::IsPlaying()
|
||||||
{
|
{
|
||||||
Voice * v = SoundHandler::instance()->getVoice(voice);
|
Voice * v = SoundHandler::instance()->getVoice(voice);
|
||||||
if(v)
|
if(v){
|
||||||
return v->getState() == Voice::STATE_PLAYING;
|
return v->getState() == Voice::STATE_PLAYING;
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuiSound::SetVolume(u32 vol)
|
void GuiSound::SetVolume(u32 vol)
|
||||||
|
@ -28,7 +28,7 @@ class GuiSound : public AsyncDeleter::Element
|
|||||||
//!\param sound Pointer to the sound data
|
//!\param sound Pointer to the sound data
|
||||||
//!\param filesize Length of sound data
|
//!\param filesize Length of sound data
|
||||||
GuiSound(const char * filepath);
|
GuiSound(const char * filepath);
|
||||||
GuiSound(const u8 * sound, int length);
|
GuiSound(const u8 * sound, s32 length);
|
||||||
//!Destructor
|
//!Destructor
|
||||||
virtual ~GuiSound();
|
virtual ~GuiSound();
|
||||||
//!Load a file and replace the old one
|
//!Load a file and replace the old one
|
||||||
|
@ -19,10 +19,10 @@
|
|||||||
#include "video/CVideo.h"
|
#include "video/CVideo.h"
|
||||||
|
|
||||||
FreeTypeGX * GuiText::presentFont = NULL;
|
FreeTypeGX * GuiText::presentFont = NULL;
|
||||||
int GuiText::presetSize = 28;
|
s32 GuiText::presetSize = 28;
|
||||||
int GuiText::presetInternalRenderingScale = 2.0f; //Lets render the font at the doubled size. This make it even smoother!
|
float GuiText::presetInternalRenderingScale = 2.0f; //Lets render the font at the doubled size. This make it even smoother!
|
||||||
int GuiText::presetMaxWidth = 0xFFFF;
|
s32 GuiText::presetMaxWidth = 0xFFFF;
|
||||||
int GuiText::presetAlignment = ALIGN_CENTER | ALIGN_MIDDLE;
|
s32 GuiText::presetAlignment = ALIGN_CENTER | ALIGN_MIDDLE;
|
||||||
GX2ColorF32 GuiText::presetColor = (GX2ColorF32){ 1.0f, 1.0f, 1.0f, 1.0f };
|
GX2ColorF32 GuiText::presetColor = (GX2ColorF32){ 1.0f, 1.0f, 1.0f, 1.0f };
|
||||||
|
|
||||||
#define TEXT_SCROLL_DELAY 6
|
#define TEXT_SCROLL_DELAY 6
|
||||||
@ -56,7 +56,7 @@ GuiText::GuiText()
|
|||||||
internalRenderingScale = presetInternalRenderingScale;
|
internalRenderingScale = presetInternalRenderingScale;
|
||||||
}
|
}
|
||||||
|
|
||||||
GuiText::GuiText(const char * t, int s, const glm::vec4 & c)
|
GuiText::GuiText(const char * t, s32 s, const glm::vec4 & c)
|
||||||
{
|
{
|
||||||
text = NULL;
|
text = NULL;
|
||||||
size = s;
|
size = s;
|
||||||
@ -88,7 +88,7 @@ GuiText::GuiText(const char * t, int s, const glm::vec4 & c)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
GuiText::GuiText(const wchar_t * t, int s, const glm::vec4 & c)
|
GuiText::GuiText(const wchar_t * t, s32 s, const glm::vec4 & c)
|
||||||
{
|
{
|
||||||
text = NULL;
|
text = NULL;
|
||||||
size = s;
|
size = s;
|
||||||
@ -199,7 +199,7 @@ void GuiText::setTextf(const char *format, ...)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int max_len = strlen(format) + 8192;
|
s32 max_len = strlen(format) + 8192;
|
||||||
char *tmp = new char[max_len];
|
char *tmp = new char[max_len];
|
||||||
va_list va;
|
va_list va;
|
||||||
va_start(va, format);
|
va_start(va, format);
|
||||||
@ -248,7 +248,7 @@ void GuiText::clearDynamicText()
|
|||||||
textDynWidth.clear();
|
textDynWidth.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuiText::setPresets(int sz, const glm::vec4 & c, int w, int a)
|
void GuiText::setPresets(s32 sz, const glm::vec4 & c, s32 w, s32 a)
|
||||||
{
|
{
|
||||||
presetSize = sz;
|
presetSize = sz;
|
||||||
presetColor = (GX2ColorF32) { (f32)c.r / 255.0f, (f32)c.g / 255.0f, (f32)c.b / 255.0f, (f32)c.a / 255.0f };
|
presetColor = (GX2ColorF32) { (f32)c.r / 255.0f, (f32)c.g / 255.0f, (f32)c.b / 255.0f, (f32)c.a / 255.0f };
|
||||||
@ -261,12 +261,12 @@ void GuiText::setPresetFont(FreeTypeGX *f)
|
|||||||
presentFont = f;
|
presentFont = f;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuiText::setFontSize(int s)
|
void GuiText::setFontSize(s32 s)
|
||||||
{
|
{
|
||||||
size = s;
|
size = s;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuiText::setMaxWidth(int width, int w)
|
void GuiText::setMaxWidth(s32 width, s32 w)
|
||||||
{
|
{
|
||||||
maxWidth = width;
|
maxWidth = width;
|
||||||
wrapMode = w;
|
wrapMode = w;
|
||||||
@ -294,17 +294,17 @@ void GuiText::setBlurGlowColor(float blur, const glm::vec4 & c)
|
|||||||
blurAlpha = c[3];
|
blurAlpha = c[3];
|
||||||
}
|
}
|
||||||
|
|
||||||
int GuiText::getTextWidth(int ind)
|
s32 GuiText::getTextWidth(s32 ind)
|
||||||
{
|
{
|
||||||
if(ind < 0 || ind >= (int) textDyn.size())
|
if(ind < 0 || ind >= (s32) textDyn.size())
|
||||||
return this->getTextWidth();
|
return this->getTextWidth();
|
||||||
|
|
||||||
return font->getWidth(textDyn[ind], currentSize);
|
return font->getWidth(textDyn[ind], currentSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
const wchar_t * GuiText::getDynText(int ind)
|
const wchar_t * GuiText::getDynText(s32 ind)
|
||||||
{
|
{
|
||||||
if(ind < 0 || ind >= (int) textDyn.size())
|
if(ind < 0 || ind >= (s32) textDyn.size())
|
||||||
return text;
|
return text;
|
||||||
|
|
||||||
return textDyn[ind];
|
return textDyn[ind];
|
||||||
@ -341,10 +341,10 @@ std::string GuiText::toUTF8(void) const
|
|||||||
|
|
||||||
void GuiText::makeDottedText()
|
void GuiText::makeDottedText()
|
||||||
{
|
{
|
||||||
int pos = textDyn.size();
|
s32 pos = textDyn.size();
|
||||||
textDyn.resize(pos + 1);
|
textDyn.resize(pos + 1);
|
||||||
|
|
||||||
int i = 0, currentWidth = 0;
|
s32 i = 0, currentWidth = 0;
|
||||||
textDyn[pos] = new (std::nothrow) wchar_t[maxWidth];
|
textDyn[pos] = new (std::nothrow) wchar_t[maxWidth];
|
||||||
if(!textDyn[pos]) {
|
if(!textDyn[pos]) {
|
||||||
textDyn.resize(pos);
|
textDyn.resize(pos);
|
||||||
@ -374,8 +374,8 @@ void GuiText::scrollText(u32 frameCount)
|
|||||||
{
|
{
|
||||||
if (textDyn.size() == 0)
|
if (textDyn.size() == 0)
|
||||||
{
|
{
|
||||||
int pos = textDyn.size();
|
s32 pos = textDyn.size();
|
||||||
int i = 0, currentWidth = 0;
|
s32 i = 0, currentWidth = 0;
|
||||||
textDyn.resize(pos + 1);
|
textDyn.resize(pos + 1);
|
||||||
|
|
||||||
textDyn[pos] = new (std::nothrow) wchar_t[maxWidth];
|
textDyn[pos] = new (std::nothrow) wchar_t[maxWidth];
|
||||||
@ -408,7 +408,7 @@ void GuiText::scrollText(u32 frameCount)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int stringlen = wcslen(text);
|
s32 stringlen = wcslen(text);
|
||||||
|
|
||||||
++textScrollPos;
|
++textScrollPos;
|
||||||
if (textScrollPos > stringlen)
|
if (textScrollPos > stringlen)
|
||||||
@ -417,8 +417,8 @@ void GuiText::scrollText(u32 frameCount)
|
|||||||
textScrollInitialDelay = TEXT_SCROLL_INITIAL_DELAY;
|
textScrollInitialDelay = TEXT_SCROLL_INITIAL_DELAY;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ch = textScrollPos;
|
s32 ch = textScrollPos;
|
||||||
int pos = textDyn.size() - 1;
|
s32 pos = textDyn.size() - 1;
|
||||||
|
|
||||||
if (!textDyn[pos])
|
if (!textDyn[pos])
|
||||||
textDyn[pos] = new (std::nothrow) wchar_t[maxWidth];
|
textDyn[pos] = new (std::nothrow) wchar_t[maxWidth];
|
||||||
@ -428,7 +428,7 @@ void GuiText::scrollText(u32 frameCount)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int i = 0, currentWidth = 0;
|
s32 i = 0, currentWidth = 0;
|
||||||
|
|
||||||
while (currentWidth < maxWidth)
|
while (currentWidth < maxWidth)
|
||||||
{
|
{
|
||||||
@ -458,16 +458,16 @@ void GuiText::wrapText()
|
|||||||
{
|
{
|
||||||
if (textDyn.size() > 0) return;
|
if (textDyn.size() > 0) return;
|
||||||
|
|
||||||
int i = 0;
|
s32 i = 0;
|
||||||
int ch = 0;
|
s32 ch = 0;
|
||||||
int linenum = 0;
|
s32 linenum = 0;
|
||||||
int lastSpace = -1;
|
s32 lastSpace = -1;
|
||||||
int lastSpaceIndex = -1;
|
s32 lastSpaceIndex = -1;
|
||||||
int currentWidth = 0;
|
s32 currentWidth = 0;
|
||||||
|
|
||||||
while (text[ch] && linenum < linestodraw)
|
while (text[ch] && linenum < linestodraw)
|
||||||
{
|
{
|
||||||
if (linenum >= (int) textDyn.size())
|
if (linenum >= (s32) textDyn.size())
|
||||||
{
|
{
|
||||||
textDyn.resize(linenum + 1);
|
textDyn.resize(linenum + 1);
|
||||||
textDyn[linenum] = new (std::nothrow) wchar_t[maxWidth];
|
textDyn[linenum] = new (std::nothrow) wchar_t[maxWidth];
|
||||||
@ -538,8 +538,8 @@ void GuiText::draw(CVideo *pVideo)
|
|||||||
|
|
||||||
float finalRenderingScale = 2.0f * internalRenderingScale;
|
float finalRenderingScale = 2.0f * internalRenderingScale;
|
||||||
|
|
||||||
int newSize = size * getScale() * finalRenderingScale;
|
s32 newSize = size * getScale() * finalRenderingScale;
|
||||||
int normal_size = size * getScale();
|
s32 normal_size = size * getScale();
|
||||||
|
|
||||||
if(newSize != currentSize)
|
if(newSize != currentSize)
|
||||||
{
|
{
|
||||||
@ -582,9 +582,9 @@ void GuiText::draw(CVideo *pVideo)
|
|||||||
}
|
}
|
||||||
else if(wrapMode == WRAP)
|
else if(wrapMode == WRAP)
|
||||||
{
|
{
|
||||||
int lineheight = newSize + 6;
|
s32 lineheight = newSize + 6;
|
||||||
int yoffset = 0;
|
s32 yoffset = 0;
|
||||||
int voffset = 0;
|
s32 voffset = 0;
|
||||||
|
|
||||||
if(textDyn.size() == 0)
|
if(textDyn.size() == 0)
|
||||||
wrapText();
|
wrapText();
|
||||||
|
@ -30,12 +30,12 @@ public:
|
|||||||
//!\param t Text
|
//!\param t Text
|
||||||
//!\param s Font size
|
//!\param s Font size
|
||||||
//!\param c Font color
|
//!\param c Font color
|
||||||
GuiText(const char * t, int s, const glm::vec4 & c);
|
GuiText(const char * t, s32 s, const glm::vec4 & c);
|
||||||
//!\overload
|
//!\overload
|
||||||
//!\param t Text
|
//!\param t Text
|
||||||
//!\param s Font size
|
//!\param s Font size
|
||||||
//!\param c Font color
|
//!\param c Font color
|
||||||
GuiText(const wchar_t * t, int s, const glm::vec4 & c);
|
GuiText(const wchar_t * t, s32 s, const glm::vec4 & c);
|
||||||
//!\overload
|
//!\overload
|
||||||
//!\Assumes SetPresets() has been called to setup preferred text attributes
|
//!\Assumes SetPresets() has been called to setup preferred text attributes
|
||||||
//!\param t Text
|
//!\param t Text
|
||||||
@ -54,16 +54,16 @@ public:
|
|||||||
//!\param w Maximum width of texture image (for text wrapping)
|
//!\param w Maximum width of texture image (for text wrapping)
|
||||||
//!\param wrap Wrapmode when w>0
|
//!\param wrap Wrapmode when w>0
|
||||||
//!\param a Text alignment
|
//!\param a Text alignment
|
||||||
static void setPresets(int sz, const glm::vec4 & c, int w, int a);
|
static void setPresets(s32 sz, const glm::vec4 & c, s32 w, s32 a);
|
||||||
static void setPresetFont(FreeTypeGX *font);
|
static void setPresetFont(FreeTypeGX *font);
|
||||||
//!Sets the font size
|
//!Sets the font size
|
||||||
//!\param s Font size
|
//!\param s Font size
|
||||||
void setFontSize(int s);
|
void setFontSize(s32 s);
|
||||||
//!Sets the maximum width of the drawn texture image
|
//!Sets the maximum width of the drawn texture image
|
||||||
//!If the text exceeds this, it is wrapped to the next line
|
//!If the text exceeds this, it is wrapped to the next line
|
||||||
//!\param w Maximum width
|
//!\param w Maximum width
|
||||||
//!\param m WrapMode
|
//!\param m WrapMode
|
||||||
void setMaxWidth(int w = 0, int m = WRAP);
|
void setMaxWidth(s32 w = 0, s32 m = WRAP);
|
||||||
//!Sets the font color
|
//!Sets the font color
|
||||||
//!\param c Font color
|
//!\param c Font color
|
||||||
void setColor(const glm::vec4 & c);
|
void setColor(const glm::vec4 & c);
|
||||||
@ -75,21 +75,21 @@ public:
|
|||||||
virtual const wchar_t * getText() const { return text; }
|
virtual const wchar_t * getText() const { return text; }
|
||||||
virtual std::string toUTF8(void) const;
|
virtual std::string toUTF8(void) const;
|
||||||
//!Get the Horizontal Size of Text
|
//!Get the Horizontal Size of Text
|
||||||
int getTextWidth() { return textWidth; }
|
s32 getTextWidth() { return textWidth; }
|
||||||
int getTextWidth(int ind);
|
s32 getTextWidth(s32 ind);
|
||||||
//!Get the max textwidth
|
//!Get the max textwidth
|
||||||
int getTextMaxWidth() { return maxWidth; }
|
s32 getTextMaxWidth() { return maxWidth; }
|
||||||
//!Get fontsize
|
//!Get fontsize
|
||||||
int getFontSize() { return size; };
|
s32 getFontSize() { return size; };
|
||||||
//!Set max lines to draw
|
//!Set max lines to draw
|
||||||
void setLinesToDraw(int l) { linestodraw = l; }
|
void setLinesToDraw(s32 l) { linestodraw = l; }
|
||||||
//!Get current Textline (for position calculation)
|
//!Get current Textline (for position calculation)
|
||||||
const wchar_t * getDynText(int ind = 0);
|
const wchar_t * getDynText(s32 ind = 0);
|
||||||
virtual const wchar_t * getTextLine(int ind) { return getDynText(ind); };
|
virtual const wchar_t * getTextLine(s32 ind) { return getDynText(ind); };
|
||||||
//!Change the font
|
//!Change the font
|
||||||
bool setFont(FreeTypeGX *font);
|
bool setFont(FreeTypeGX *font);
|
||||||
//! virtual function used in child classes
|
//! virtual function used in child classes
|
||||||
virtual int getStartWidth() { return 0; };
|
virtual s32 getStartWidth() { return 0; };
|
||||||
//!Constantly called to draw the text
|
//!Constantly called to draw the text
|
||||||
void draw(CVideo *pVideo);
|
void draw(CVideo *pVideo);
|
||||||
//! text enums
|
//! text enums
|
||||||
@ -102,10 +102,10 @@ public:
|
|||||||
};
|
};
|
||||||
protected:
|
protected:
|
||||||
static FreeTypeGX * presentFont;
|
static FreeTypeGX * presentFont;
|
||||||
static int presetSize;
|
static s32 presetSize;
|
||||||
static int presetMaxWidth;
|
static s32 presetMaxWidth;
|
||||||
static int presetInternalRenderingScale;
|
static float presetInternalRenderingScale;
|
||||||
static int presetAlignment;
|
static s32 presetAlignment;
|
||||||
static GX2ColorF32 presetColor;
|
static GX2ColorF32 presetColor;
|
||||||
|
|
||||||
//!Clear the dynamic text
|
//!Clear the dynamic text
|
||||||
@ -120,16 +120,16 @@ protected:
|
|||||||
wchar_t * text;
|
wchar_t * text;
|
||||||
std::vector<wchar_t *> textDyn;
|
std::vector<wchar_t *> textDyn;
|
||||||
std::vector<uint16_t> textDynWidth;
|
std::vector<uint16_t> textDynWidth;
|
||||||
int wrapMode; //!< Wrapping toggle
|
s32 wrapMode; //!< Wrapping toggle
|
||||||
int textScrollPos; //!< Current starting index of text string for scrolling
|
s32 textScrollPos; //!< Current starting index of text string for scrolling
|
||||||
int textScrollInitialDelay; //!< Delay to wait before starting to scroll
|
s32 textScrollInitialDelay; //!< Delay to wait before starting to scroll
|
||||||
int textScrollDelay; //!< Scrolling speed
|
s32 textScrollDelay; //!< Scrolling speed
|
||||||
int size; //!< Font size
|
s32 size; //!< Font size
|
||||||
int maxWidth; //!< Maximum width of the generated text object (for text wrapping)
|
s32 maxWidth; //!< Maximum width of the generated text object (for text wrapping)
|
||||||
FreeTypeGX *font;
|
FreeTypeGX *font;
|
||||||
int textWidth;
|
s32 textWidth;
|
||||||
int currentSize;
|
s32 currentSize;
|
||||||
int linestodraw;
|
s32 linestodraw;
|
||||||
glm::vec4 color;
|
glm::vec4 color;
|
||||||
float defaultBlur;
|
float defaultBlur;
|
||||||
float blurGlowIntensity;
|
float blurGlowIntensity;
|
||||||
|
@ -38,12 +38,9 @@ GuiToggle::~GuiToggle()
|
|||||||
|
|
||||||
void GuiToggle::OnToggleClick(GuiButton *button, const GuiController *controller, GuiTrigger *trigger){
|
void GuiToggle::OnToggleClick(GuiButton *button, const GuiController *controller, GuiTrigger *trigger){
|
||||||
if(!isStateSet(STATE_DISABLED | STATE_HIDDEN | STATE_DISABLE_INPUT)){
|
if(!isStateSet(STATE_DISABLED | STATE_HIDDEN | STATE_DISABLE_INPUT)){
|
||||||
log_print("Clicked on Toggle: ");
|
|
||||||
if(selected){
|
if(selected){
|
||||||
log_print("Uncheck\n");
|
|
||||||
setUnchecked();
|
setUnchecked();
|
||||||
}else{
|
}else{
|
||||||
log_print("Check\n");
|
|
||||||
setChecked();
|
setChecked();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -107,13 +107,13 @@ bool GuiTrigger::down(const GuiController *controller) const
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
int GuiTrigger::clicked(const GuiController *controller) const
|
s32 GuiTrigger::clicked(const GuiController *controller) const
|
||||||
{
|
{
|
||||||
if((controller->chan & chan) == 0) {
|
if((controller->chan & chan) == 0) {
|
||||||
return CLICKED_NONE;
|
return CLICKED_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
int bResult = CLICKED_NONE;
|
s32 bResult = CLICKED_NONE;
|
||||||
|
|
||||||
if(controller->data.touched && controller->data.validPointer && (btns & VPAD_TOUCH) && !controller->lastData.touched)
|
if(controller->data.touched && controller->data.validPointer && (btns & VPAD_TOUCH) && !controller->lastData.touched)
|
||||||
{
|
{
|
||||||
|
@ -91,7 +91,7 @@ public:
|
|||||||
bool right(const GuiController *controller) const;
|
bool right(const GuiController *controller) const;
|
||||||
bool up(const GuiController *controller) const;
|
bool up(const GuiController *controller) const;
|
||||||
bool down(const GuiController *controller) const;
|
bool down(const GuiController *controller) const;
|
||||||
int clicked(const GuiController *controller) const;
|
s32 clicked(const GuiController *controller) const;
|
||||||
bool held(const GuiController *controller) const;
|
bool held(const GuiController *controller) const;
|
||||||
bool released(const GuiController *controller) const;
|
bool released(const GuiController *controller) const;
|
||||||
private:
|
private:
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
#include "Scrollbar.h"
|
#include "Scrollbar.h"
|
||||||
#include "resources/Resources.h"
|
#include "resources/Resources.h"
|
||||||
|
|
||||||
Scrollbar::Scrollbar(int h)
|
Scrollbar::Scrollbar(s32 h)
|
||||||
: touchTrigger(GuiTrigger::CHANNEL_1, GuiTrigger::VPAD_TOUCH)
|
: touchTrigger(GuiTrigger::CHANNEL_1, GuiTrigger::VPAD_TOUCH)
|
||||||
, wpadTouchTrigger(GuiTrigger::CHANNEL_2 | GuiTrigger::CHANNEL_3 | GuiTrigger::CHANNEL_4 | GuiTrigger::CHANNEL_5, GuiTrigger::BUTTON_A)
|
, wpadTouchTrigger(GuiTrigger::CHANNEL_2 | GuiTrigger::CHANNEL_3 | GuiTrigger::CHANNEL_4 | GuiTrigger::CHANNEL_5, GuiTrigger::BUTTON_A)
|
||||||
{
|
{
|
||||||
@ -164,19 +164,21 @@ void Scrollbar::OnDownButtonClick(GuiButton *button, const GuiController *contro
|
|||||||
|
|
||||||
void Scrollbar::OnBoxButtonHold(GuiButton *button, const GuiController *controller, GuiTrigger *trigger)
|
void Scrollbar::OnBoxButtonHold(GuiButton *button, const GuiController *controller, GuiTrigger *trigger)
|
||||||
{
|
{
|
||||||
if(EntrieCount == 0)
|
if(EntrieCount == 0){
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if(!controller->data.validPointer)
|
if(!controller->data.validPointer){
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
int y = controller->data.y - this->getCenterY();
|
s32 y = controller->data.y - this->getCenterY();
|
||||||
|
|
||||||
int positionWiimote = LIMIT(y - MinHeight, 0, MaxHeight - MinHeight);
|
s32 positionWiimote = LIMIT(y - MinHeight, 0, MaxHeight - MinHeight);
|
||||||
|
|
||||||
int newSelected = (EntrieCount - 1) - (int) ((float) positionWiimote / (float) (MaxHeight-MinHeight) * (float) (EntrieCount-1));
|
s32 newSelected = (EntrieCount - 1) - (s32) ((float) positionWiimote / (float) (MaxHeight-MinHeight) * (float) (EntrieCount-1));
|
||||||
|
|
||||||
int diff = newSelected-SelInd-SelItem;
|
s32 diff = newSelected-SelInd-SelItem;
|
||||||
|
|
||||||
if(newSelected <= 0)
|
if(newSelected <= 0)
|
||||||
{
|
{
|
||||||
@ -190,7 +192,7 @@ void Scrollbar::OnBoxButtonHold(GuiButton *button, const GuiController *controll
|
|||||||
}
|
}
|
||||||
else if(newSelected < PageSize && SelInd == 0 && diff < 0)
|
else if(newSelected < PageSize && SelInd == 0 && diff < 0)
|
||||||
{
|
{
|
||||||
SelItem = std::max(SelItem+diff, 0);
|
SelItem = std::max(SelItem+diff, (s32)0);
|
||||||
}
|
}
|
||||||
else if(EntrieCount-newSelected < PageSize && SelInd == EntrieCount-PageSize && diff > 0)
|
else if(EntrieCount-newSelected < PageSize && SelInd == EntrieCount-PageSize && diff > 0)
|
||||||
{
|
{
|
||||||
@ -205,7 +207,7 @@ void Scrollbar::OnBoxButtonHold(GuiButton *button, const GuiController *controll
|
|||||||
listChanged(SelItem, SelInd);
|
listChanged(SelItem, SelInd);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scrollbar::SetPageSize(int size)
|
void Scrollbar::SetPageSize(s32 size)
|
||||||
{
|
{
|
||||||
if(PageSize == size)
|
if(PageSize == size)
|
||||||
return;
|
return;
|
||||||
@ -214,7 +216,7 @@ void Scrollbar::SetPageSize(int size)
|
|||||||
listChanged(SelItem, SelInd);
|
listChanged(SelItem, SelInd);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scrollbar::SetSelectedItem(int pos)
|
void Scrollbar::SetSelectedItem(s32 pos)
|
||||||
{
|
{
|
||||||
if(SelItem == pos)
|
if(SelItem == pos)
|
||||||
return;
|
return;
|
||||||
@ -223,7 +225,7 @@ void Scrollbar::SetSelectedItem(int pos)
|
|||||||
listChanged(SelItem, SelInd);
|
listChanged(SelItem, SelInd);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scrollbar::SetSelectedIndex(int pos)
|
void Scrollbar::SetSelectedIndex(s32 pos)
|
||||||
{
|
{
|
||||||
if(SelInd == pos)
|
if(SelInd == pos)
|
||||||
return;
|
return;
|
||||||
@ -232,7 +234,7 @@ void Scrollbar::SetSelectedIndex(int pos)
|
|||||||
listChanged(SelItem, SelInd);
|
listChanged(SelItem, SelInd);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scrollbar::SetEntrieCount(int cnt)
|
void Scrollbar::SetEntrieCount(s32 cnt)
|
||||||
{
|
{
|
||||||
if(EntrieCount == cnt)
|
if(EntrieCount == cnt)
|
||||||
return;
|
return;
|
||||||
@ -241,9 +243,9 @@ void Scrollbar::SetEntrieCount(int cnt)
|
|||||||
listChanged(SelItem, SelInd);
|
listChanged(SelItem, SelInd);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scrollbar::setScrollboxPosition(int SelItem, int SelInd)
|
void Scrollbar::setScrollboxPosition(s32 SelItem, s32 SelInd)
|
||||||
{
|
{
|
||||||
int position = MaxHeight-(MaxHeight-MinHeight)*(SelInd+SelItem)/(EntrieCount-1);
|
s32 position = MaxHeight-(MaxHeight-MinHeight)*(SelInd+SelItem)/(EntrieCount-1);
|
||||||
|
|
||||||
if(position < MinHeight || (SelInd+SelItem >= EntrieCount-1))
|
if(position < MinHeight || (SelInd+SelItem >= EntrieCount-1))
|
||||||
position = MinHeight;
|
position = MinHeight;
|
||||||
|
@ -30,25 +30,25 @@
|
|||||||
class Scrollbar : public GuiElement, public sigslot::has_slots<>
|
class Scrollbar : public GuiElement, public sigslot::has_slots<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Scrollbar(int height);
|
Scrollbar(s32 height);
|
||||||
virtual ~Scrollbar();
|
virtual ~Scrollbar();
|
||||||
void ScrollOneUp();
|
void ScrollOneUp();
|
||||||
void ScrollOneDown();
|
void ScrollOneDown();
|
||||||
int GetSelectedItem() { return SelItem; }
|
s32 GetSelectedItem() { return SelItem; }
|
||||||
int GetSelectedIndex() { return SelInd; }
|
s32 GetSelectedIndex() { return SelInd; }
|
||||||
void draw(CVideo * video);
|
void draw(CVideo * video);
|
||||||
void update(GuiController * t);
|
void update(GuiController * t);
|
||||||
|
|
||||||
//! Signals
|
//! Signals
|
||||||
sigslot::signal2<int, int> listChanged;
|
sigslot::signal2<s32, s32> listChanged;
|
||||||
//! Slots
|
//! Slots
|
||||||
void SetPageSize(int size);
|
void SetPageSize(s32 size);
|
||||||
void SetRowSize(int size);
|
void SetRowSize(s32 size);
|
||||||
void SetSelectedItem(int pos);
|
void SetSelectedItem(s32 pos);
|
||||||
void SetSelectedIndex(int pos);
|
void SetSelectedIndex(s32 pos);
|
||||||
void SetEntrieCount(int cnt);
|
void SetEntrieCount(s32 cnt);
|
||||||
protected:
|
protected:
|
||||||
void setScrollboxPosition(int SelItem, int SelInd);
|
void setScrollboxPosition(s32 SelItem, s32 SelInd);
|
||||||
void OnUpButtonClick(GuiButton *button, const GuiController *controller, GuiTrigger *trigger);
|
void OnUpButtonClick(GuiButton *button, const GuiController *controller, GuiTrigger *trigger);
|
||||||
void OnDownButtonClick(GuiButton *button, const GuiController *controller, GuiTrigger *trigger);
|
void OnDownButtonClick(GuiButton *button, const GuiController *controller, GuiTrigger *trigger);
|
||||||
void OnBoxButtonHold(GuiButton *button, const GuiController *controller, GuiTrigger *trigger);
|
void OnBoxButtonHold(GuiButton *button, const GuiController *controller, GuiTrigger *trigger);
|
||||||
@ -56,13 +56,13 @@ class Scrollbar : public GuiElement, public sigslot::has_slots<>
|
|||||||
u32 ScrollState;
|
u32 ScrollState;
|
||||||
u16 ScrollSpeed;
|
u16 ScrollSpeed;
|
||||||
|
|
||||||
int MinHeight;
|
s32 MinHeight;
|
||||||
int MaxHeight;
|
s32 MaxHeight;
|
||||||
int SelItem;
|
s32 SelItem;
|
||||||
int SelInd;
|
s32 SelInd;
|
||||||
int PageSize;
|
s32 PageSize;
|
||||||
int EntrieCount;
|
s32 EntrieCount;
|
||||||
int pressedChan;
|
s32 pressedChan;
|
||||||
|
|
||||||
GuiButton * arrowUpBtn;
|
GuiButton * arrowUpBtn;
|
||||||
GuiButton * arrowDownBtn;
|
GuiButton * arrowDownBtn;
|
||||||
|
@ -24,7 +24,7 @@ class VPadController : public GuiController
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
//!Constructor
|
//!Constructor
|
||||||
VPadController(int channel)
|
VPadController(s32 channel)
|
||||||
: GuiController(channel)
|
: GuiController(channel)
|
||||||
{
|
{
|
||||||
memset(&vpad, 0, sizeof(vpad));
|
memset(&vpad, 0, sizeof(vpad));
|
||||||
@ -33,11 +33,11 @@ public:
|
|||||||
//!Destructor
|
//!Destructor
|
||||||
virtual ~VPadController() {}
|
virtual ~VPadController() {}
|
||||||
|
|
||||||
bool update(int width, int height)
|
bool update(s32 width, s32 height)
|
||||||
{
|
{
|
||||||
lastData = data;
|
lastData = data;
|
||||||
|
|
||||||
int vpadError = -1;
|
s32 vpadError = -1;
|
||||||
VPADRead(0, &vpad, 1, &vpadError);
|
VPADRead(0, &vpad, 1, &vpadError);
|
||||||
|
|
||||||
if(vpadError == 0)
|
if(vpadError == 0)
|
||||||
@ -48,8 +48,8 @@ public:
|
|||||||
data.validPointer = !vpad.tpdata.invalid;
|
data.validPointer = !vpad.tpdata.invalid;
|
||||||
data.touched = vpad.tpdata.touched;
|
data.touched = vpad.tpdata.touched;
|
||||||
//! calculate the screen offsets
|
//! calculate the screen offsets
|
||||||
data.x = -(width >> 1) + ((int)(vpad.tpdata1.x * ((width)/1211.0f)*width) >> 12)-30;
|
data.x = -(width >> 1) + ((s32)(vpad.tpdata1.x * ((width)/1211.0f)*width) >> 12)-30;
|
||||||
data.y = -(height >> 1) + ((int)(vpad.tpdata1.y * ((height)/653.0f)*height) >> 12)-35;
|
data.y = -(height >> 1) + ((s32)(vpad.tpdata1.y * ((height)/653.0f)*height) >> 12)-35;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,7 @@ class WPadController : public GuiController
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
//!Constructor
|
//!Constructor
|
||||||
WPadController(int channel)
|
WPadController(s32 channel)
|
||||||
: GuiController(channel)
|
: GuiController(channel)
|
||||||
{
|
{
|
||||||
memset(&kpadData, 0, sizeof(kpadData));
|
memset(&kpadData, 0, sizeof(kpadData));
|
||||||
@ -130,7 +130,7 @@ public:
|
|||||||
return conv_buttons;
|
return conv_buttons;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool update(int width, int height)
|
bool update(s32 width, s32 height)
|
||||||
{
|
{
|
||||||
lastData = data;
|
lastData = data;
|
||||||
|
|
||||||
|
@ -7,22 +7,22 @@
|
|||||||
|
|
||||||
extern void my_PrepareTitle_hook(void);
|
extern void my_PrepareTitle_hook(void);
|
||||||
|
|
||||||
static void KernelCopyData(unsigned int addr, unsigned int src, unsigned int len)
|
static void KernelCopyData(u32 addr, u32 src, u32 len)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Setup a DBAT access with cache inhibited to write through and read directly from memory
|
* Setup a DBAT access with cache inhibited to write through and read directly from memory
|
||||||
*/
|
*/
|
||||||
unsigned int dbatu0, dbatl0, dbatu1, dbatl1;
|
u32 dbatu0, dbatl0, dbatu1, dbatl1;
|
||||||
// save the original DBAT value
|
// save the original DBAT value
|
||||||
asm volatile("mfdbatu %0, 0" : "=r" (dbatu0));
|
asm volatile("mfdbatu %0, 0" : "=r" (dbatu0));
|
||||||
asm volatile("mfdbatl %0, 0" : "=r" (dbatl0));
|
asm volatile("mfdbatl %0, 0" : "=r" (dbatl0));
|
||||||
asm volatile("mfdbatu %0, 1" : "=r" (dbatu1));
|
asm volatile("mfdbatu %0, 1" : "=r" (dbatu1));
|
||||||
asm volatile("mfdbatl %0, 1" : "=r" (dbatl1));
|
asm volatile("mfdbatl %0, 1" : "=r" (dbatl1));
|
||||||
|
|
||||||
unsigned int target_dbatu0 = 0;
|
u32 target_dbatu0 = 0;
|
||||||
unsigned int target_dbatl0 = 0;
|
u32 target_dbatl0 = 0;
|
||||||
unsigned int target_dbatu1 = 0;
|
u32 target_dbatu1 = 0;
|
||||||
unsigned int target_dbatl1 = 0;
|
u32 target_dbatl1 = 0;
|
||||||
|
|
||||||
unsigned char *dst_p = (unsigned char*)addr;
|
unsigned char *dst_p = (unsigned char*)addr;
|
||||||
unsigned char *src_p = (unsigned char*)src;
|
unsigned char *src_p = (unsigned char*)src;
|
||||||
@ -50,11 +50,11 @@ static void KernelCopyData(unsigned int addr, unsigned int src, unsigned int len
|
|||||||
|
|
||||||
asm volatile("eieio; isync");
|
asm volatile("eieio; isync");
|
||||||
|
|
||||||
unsigned int i;
|
u32 i;
|
||||||
for(i = 0; i < len; i++)
|
for(i = 0; i < len; i++)
|
||||||
{
|
{
|
||||||
// if we are on the edge to next chunk
|
// if we are on the edge to next chunk
|
||||||
if((target_dbatu0 != 0) && (((unsigned int)dst_p & 0x00F00000) != (target_dbatu0 & 0x00F00000)))
|
if((target_dbatu0 != 0) && (((u32)dst_p & 0x00F00000) != (target_dbatu0 & 0x00F00000)))
|
||||||
{
|
{
|
||||||
target_dbatu0 = ((addr + i) & 0x00F00000) | 0xC0000000 | 0x1F;
|
target_dbatu0 = ((addr + i) & 0x00F00000) | 0xC0000000 | 0x1F;
|
||||||
target_dbatl0 = ((addr + i) & 0xFFF00000) | 0x32;
|
target_dbatl0 = ((addr + i) & 0xFFF00000) | 0x32;
|
||||||
@ -65,7 +65,7 @@ static void KernelCopyData(unsigned int addr, unsigned int src, unsigned int len
|
|||||||
asm volatile("mtdbatl 0, %0" : : "r" (target_dbatl0));
|
asm volatile("mtdbatl 0, %0" : : "r" (target_dbatl0));
|
||||||
asm volatile("eieio; isync");
|
asm volatile("eieio; isync");
|
||||||
}
|
}
|
||||||
if((target_dbatu1 != 0) && (((unsigned int)src_p & 0x00F00000) != (target_dbatu1 & 0x00F00000)))
|
if((target_dbatu1 != 0) && (((u32)src_p & 0x00F00000) != (target_dbatu1 & 0x00F00000)))
|
||||||
{
|
{
|
||||||
target_dbatu1 = ((src + i) & 0x00F00000) | 0xB0000000 | 0x1F;
|
target_dbatu1 = ((src + i) & 0x00F00000) | 0xB0000000 | 0x1F;
|
||||||
target_dbatl1 = ((src + i) & 0xFFF00000) | 0x32;
|
target_dbatl1 = ((src + i) & 0xFFF00000) | 0x32;
|
||||||
@ -219,21 +219,21 @@ void KernelSetupSyscalls(void)
|
|||||||
|
|
||||||
ucSyscallsSetupRequired = 0;
|
ucSyscallsSetupRequired = 0;
|
||||||
|
|
||||||
kern_write((void*)(OS_SPECIFICS->addr_KernSyscallTbl1 + (0x36 * 4)), (unsigned int)KernelReadDBATs);
|
kern_write((void*)(OS_SPECIFICS->addr_KernSyscallTbl1 + (0x36 * 4)), (u32)KernelReadDBATs);
|
||||||
kern_write((void*)(OS_SPECIFICS->addr_KernSyscallTbl2 + (0x36 * 4)), (unsigned int)KernelReadDBATs);
|
kern_write((void*)(OS_SPECIFICS->addr_KernSyscallTbl2 + (0x36 * 4)), (u32)KernelReadDBATs);
|
||||||
kern_write((void*)(OS_SPECIFICS->addr_KernSyscallTbl3 + (0x36 * 4)), (unsigned int)KernelReadDBATs);
|
kern_write((void*)(OS_SPECIFICS->addr_KernSyscallTbl3 + (0x36 * 4)), (u32)KernelReadDBATs);
|
||||||
kern_write((void*)(OS_SPECIFICS->addr_KernSyscallTbl4 + (0x36 * 4)), (unsigned int)KernelReadDBATs);
|
kern_write((void*)(OS_SPECIFICS->addr_KernSyscallTbl4 + (0x36 * 4)), (u32)KernelReadDBATs);
|
||||||
kern_write((void*)(OS_SPECIFICS->addr_KernSyscallTbl5 + (0x36 * 4)), (unsigned int)KernelReadDBATs);
|
kern_write((void*)(OS_SPECIFICS->addr_KernSyscallTbl5 + (0x36 * 4)), (u32)KernelReadDBATs);
|
||||||
|
|
||||||
kern_write((void*)(OS_SPECIFICS->addr_KernSyscallTbl1 + (0x37 * 4)), (unsigned int)KernelWriteDBATs);
|
kern_write((void*)(OS_SPECIFICS->addr_KernSyscallTbl1 + (0x37 * 4)), (u32)KernelWriteDBATs);
|
||||||
kern_write((void*)(OS_SPECIFICS->addr_KernSyscallTbl2 + (0x37 * 4)), (unsigned int)KernelWriteDBATs);
|
kern_write((void*)(OS_SPECIFICS->addr_KernSyscallTbl2 + (0x37 * 4)), (u32)KernelWriteDBATs);
|
||||||
kern_write((void*)(OS_SPECIFICS->addr_KernSyscallTbl3 + (0x37 * 4)), (unsigned int)KernelWriteDBATs);
|
kern_write((void*)(OS_SPECIFICS->addr_KernSyscallTbl3 + (0x37 * 4)), (u32)KernelWriteDBATs);
|
||||||
kern_write((void*)(OS_SPECIFICS->addr_KernSyscallTbl4 + (0x37 * 4)), (unsigned int)KernelWriteDBATs);
|
kern_write((void*)(OS_SPECIFICS->addr_KernSyscallTbl4 + (0x37 * 4)), (u32)KernelWriteDBATs);
|
||||||
kern_write((void*)(OS_SPECIFICS->addr_KernSyscallTbl5 + (0x37 * 4)), (unsigned int)KernelWriteDBATs);
|
kern_write((void*)(OS_SPECIFICS->addr_KernSyscallTbl5 + (0x37 * 4)), (u32)KernelWriteDBATs);
|
||||||
|
|
||||||
kern_write((void*)(OS_SPECIFICS->addr_KernSyscallTbl1 + (0x25 * 4)), (unsigned int)KernelCopyData);
|
kern_write((void*)(OS_SPECIFICS->addr_KernSyscallTbl1 + (0x25 * 4)), (u32)KernelCopyData);
|
||||||
kern_write((void*)(OS_SPECIFICS->addr_KernSyscallTbl2 + (0x25 * 4)), (unsigned int)KernelCopyData);
|
kern_write((void*)(OS_SPECIFICS->addr_KernSyscallTbl2 + (0x25 * 4)), (u32)KernelCopyData);
|
||||||
kern_write((void*)(OS_SPECIFICS->addr_KernSyscallTbl3 + (0x25 * 4)), (unsigned int)KernelCopyData);
|
kern_write((void*)(OS_SPECIFICS->addr_KernSyscallTbl3 + (0x25 * 4)), (u32)KernelCopyData);
|
||||||
kern_write((void*)(OS_SPECIFICS->addr_KernSyscallTbl4 + (0x25 * 4)), (unsigned int)KernelCopyData);
|
kern_write((void*)(OS_SPECIFICS->addr_KernSyscallTbl4 + (0x25 * 4)), (u32)KernelCopyData);
|
||||||
kern_write((void*)(OS_SPECIFICS->addr_KernSyscallTbl5 + (0x25 * 4)), (unsigned int)KernelCopyData);
|
kern_write((void*)(OS_SPECIFICS->addr_KernSyscallTbl5 + (0x25 * 4)), (u32)KernelCopyData);
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,7 @@ extern "C" {
|
|||||||
|
|
||||||
void KernelSetupSyscalls(void);
|
void KernelSetupSyscalls(void);
|
||||||
|
|
||||||
void SC0x25_KernelCopyData(unsigned int addr, unsigned int src, unsigned int len);
|
void SC0x25_KernelCopyData(u32 addr, u32 src, u32 len);
|
||||||
void SC0x36_KernelReadDBATs(bat_table_t * table);
|
void SC0x36_KernelReadDBATs(bat_table_t * table);
|
||||||
void SC0x37_KernelWriteDBATs(bat_table_t * table);
|
void SC0x37_KernelWriteDBATs(bat_table_t * table);
|
||||||
|
|
||||||
|
43
src/main.cpp
43
src/main.cpp
@ -17,15 +17,9 @@
|
|||||||
#include "common/common.h"
|
#include "common/common.h"
|
||||||
|
|
||||||
#include "controller_patcher/ControllerPatcher.hpp"
|
#include "controller_patcher/ControllerPatcher.hpp"
|
||||||
#include "controller_patcher/ConfigReader.hpp"
|
|
||||||
#include "controller_patcher/config/ConfigValues.hpp"
|
|
||||||
#include "controller_patcher/utils/CPRetainVars.hpp"
|
|
||||||
#include "controller_patcher/network/UDPServer.hpp"
|
|
||||||
#include "controller_patcher/network/TCPServer.hpp"
|
|
||||||
#include "utils/function_patcher.h"
|
#include "utils/function_patcher.h"
|
||||||
#include "patcher/hid_controller_function_patcher.hpp"
|
#include "patcher/hid_controller_function_patcher.hpp"
|
||||||
#include "kernel/kernel_functions.h"
|
#include "kernel/kernel_functions.h"
|
||||||
#include "kernel/syscalls.h"
|
|
||||||
#include "video/CursorDrawer.h"
|
#include "video/CursorDrawer.h"
|
||||||
#include "utils/logger.h"
|
#include "utils/logger.h"
|
||||||
#include "utils/StringTools.h"
|
#include "utils/StringTools.h"
|
||||||
@ -33,7 +27,7 @@
|
|||||||
#include "system/memory.h"
|
#include "system/memory.h"
|
||||||
|
|
||||||
/* Entry point */
|
/* Entry point */
|
||||||
extern "C" int Menu_Main(void){
|
extern "C" s32 Menu_Main(void){
|
||||||
//!*******************************************************************
|
//!*******************************************************************
|
||||||
//! Initialize function pointers *
|
//! Initialize function pointers *
|
||||||
//!*******************************************************************
|
//!*******************************************************************
|
||||||
@ -56,7 +50,7 @@ extern "C" int Menu_Main(void){
|
|||||||
//!*******************************************************************
|
//!*******************************************************************
|
||||||
//! Initialize HID Config *
|
//! Initialize HID Config *
|
||||||
//!*******************************************************************
|
//!*******************************************************************
|
||||||
log_print("Initializing the controller data\n");
|
log_printf("Menu_Main (line %d): Initializing the controller data\n",__LINE__);
|
||||||
bool res = ControllerPatcher::Init();
|
bool res = ControllerPatcher::Init();
|
||||||
if(!res){
|
if(!res){
|
||||||
SplashScreen(5, std::string("Error. The app starts in 5 seconds without patches.").c_str());
|
SplashScreen(5, std::string("Error. The app starts in 5 seconds without patches.").c_str());
|
||||||
@ -67,23 +61,24 @@ extern "C" int Menu_Main(void){
|
|||||||
ControllerPatcher::enableControllerMapping();
|
ControllerPatcher::enableControllerMapping();
|
||||||
ControllerPatcher::startNetworkServer();
|
ControllerPatcher::startNetworkServer();
|
||||||
|
|
||||||
int result = 0;
|
s32 result = 0;
|
||||||
if(isInMiiMakerHBL()){
|
if(isInMiiMakerHBL()){
|
||||||
//!*******************************************************************
|
//!*******************************************************************
|
||||||
//! Initialize heap memory *
|
//! Initialize heap memory *
|
||||||
//!*******************************************************************
|
//!*******************************************************************
|
||||||
log_print("Initialize memory management\n");
|
log_printf("Menu_Main (line %d): Initialize memory management\n",__LINE__);
|
||||||
memoryInitialize();
|
memoryInitialize();
|
||||||
|
|
||||||
log_printf("Mount SD partition\n");
|
log_printf("Menu_Main (line %d): Mount SD partition\n",__LINE__);
|
||||||
mount_sd_fat("sd");
|
mount_sd_fat("sd");
|
||||||
log_printf("Start main application\n");
|
log_printf("Menu_Main (line %d): Start main application\n",__LINE__);
|
||||||
result = Application::instance()->exec();
|
result = Application::instance()->exec();
|
||||||
|
|
||||||
log_printf("Main application stopped result: %d\n",result);
|
log_printf("Menu_Main (line %d): Main application stopped result: %d\n",__LINE__,result);
|
||||||
Application::destroyInstance();
|
Application::destroyInstance();
|
||||||
log_printf("Unmount SD\n");
|
log_printf("Menu_Main (line %d): Unmount SD\n",__LINE__);
|
||||||
unmount_sd_fat("sd");
|
unmount_sd_fat("sd");
|
||||||
|
log_printf("Menu_Main (line %d): Release memory\n",__LINE__);
|
||||||
memoryRelease();
|
memoryRelease();
|
||||||
ControllerPatcher::destroyConfigHelper();
|
ControllerPatcher::destroyConfigHelper();
|
||||||
}
|
}
|
||||||
@ -92,7 +87,7 @@ extern "C" int Menu_Main(void){
|
|||||||
//!*******************************************************************
|
//!*******************************************************************
|
||||||
//! Patching functions *
|
//! Patching functions *
|
||||||
//!*******************************************************************
|
//!*******************************************************************
|
||||||
log_print("Patching functions\n");
|
log_printf("Menu_Main(line %d): Patching functions\n",__LINE__);
|
||||||
ApplyPatches();
|
ApplyPatches();
|
||||||
|
|
||||||
if(!isInMiiMakerHBL()){
|
if(!isInMiiMakerHBL()){
|
||||||
@ -101,11 +96,11 @@ extern "C" int Menu_Main(void){
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(result == APPLICATION_CLOSE_APPLY){
|
if(result == APPLICATION_CLOSE_APPLY){
|
||||||
log_print("back to sysmenu\n");
|
log_printf("Menu_Main (line %d): Loading the system menu.\n",__LINE__);
|
||||||
SYSLaunchMenu();
|
SYSLaunchMenu();
|
||||||
return EXIT_RELAUNCH_ON_LOAD;
|
return EXIT_RELAUNCH_ON_LOAD;
|
||||||
}
|
}
|
||||||
log_print("back to hbl\n");
|
log_printf("Menu_Main (line %d): Going back to the Homebrew Launcher\n",__LINE__);
|
||||||
ControllerPatcher::restoreWiiUEnergySetting();
|
ControllerPatcher::restoreWiiUEnergySetting();
|
||||||
deInit();
|
deInit();
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
@ -125,7 +120,7 @@ void deInit(){
|
|||||||
ControllerPatcher::stopNetworkServer();
|
ControllerPatcher::stopNetworkServer();
|
||||||
log_deinit();
|
log_deinit();
|
||||||
}
|
}
|
||||||
int isInMiiMakerHBL(){
|
s32 isInMiiMakerHBL(){
|
||||||
if (OSGetTitleID != 0 && (
|
if (OSGetTitleID != 0 && (
|
||||||
OSGetTitleID() == 0x000500101004A200 || // mii maker eur
|
OSGetTitleID() == 0x000500101004A200 || // mii maker eur
|
||||||
OSGetTitleID() == 0x000500101004A100 || // mii maker usa
|
OSGetTitleID() == 0x000500101004A100 || // mii maker usa
|
||||||
@ -138,9 +133,9 @@ int isInMiiMakerHBL(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SplashScreen(int time,const char * message){
|
void SplashScreen(s32 time,const char * message){
|
||||||
// Prepare screen
|
// Prepare screen
|
||||||
int screen_buf0_size = 0;
|
s32 screen_buf0_size = 0;
|
||||||
|
|
||||||
// Init screen and screen buffers
|
// Init screen and screen buffers
|
||||||
OSScreenInit();
|
OSScreenInit();
|
||||||
@ -165,10 +160,10 @@ void SplashScreen(int time,const char * message){
|
|||||||
OSScreenFlipBuffersEx(0);
|
OSScreenFlipBuffersEx(0);
|
||||||
OSScreenFlipBuffersEx(1);
|
OSScreenFlipBuffersEx(1);
|
||||||
|
|
||||||
int tickswait = time * 1000*1000;
|
s32 tickswait = time * 1000*1000;
|
||||||
int times = 1000;
|
s32 times = 1000;
|
||||||
int sleepingtime = tickswait / 1000;
|
s32 sleepingtime = tickswait / 1000;
|
||||||
int i=0;
|
s32 i=0;
|
||||||
while(i<times){
|
while(i<times){
|
||||||
i++;
|
i++;
|
||||||
usleep(sleepingtime);
|
usleep(sleepingtime);
|
||||||
|
@ -10,13 +10,13 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
//! C wrapper for our C++ functions
|
//! C wrapper for our C++ functions
|
||||||
int Menu_Main(void);
|
s32 Menu_Main(void);
|
||||||
void deInit(void);
|
void deInit(void);
|
||||||
void ApplyPatches(void);
|
void ApplyPatches(void);
|
||||||
void RestorePatches(void);
|
void RestorePatches(void);
|
||||||
|
|
||||||
int isInMiiMakerHBL();
|
s32 isInMiiMakerHBL();
|
||||||
void SplashScreen(int time,const char * message);
|
void SplashScreen(s32 time,const char * message);
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,21 +0,0 @@
|
|||||||
/****************************************************************************
|
|
||||||
* Copyright (C) 2016,2017 Maschell
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
****************************************************************************/
|
|
||||||
#ifndef CONTROLLER_DEFS_H_
|
|
||||||
#define CONTROLLER_DEFS_H_
|
|
||||||
|
|
||||||
|
|
||||||
#endif //CONTROLLER_DEFS_H_
|
|
@ -106,8 +106,8 @@ void InputGetterMenu::GetInputsAsync(InputGetterMenu * menu)
|
|||||||
void InputGetterMenu::GetInputs(CThread *thread, void *arg){
|
void InputGetterMenu::GetInputs(CThread *thread, void *arg){
|
||||||
InputGetterMenu * args = (InputGetterMenu * )arg;
|
InputGetterMenu * args = (InputGetterMenu * )arg;
|
||||||
|
|
||||||
int gotPress = 0;
|
s32 gotPress = 0;
|
||||||
int inputsize = gHIDMaxDevices;
|
s32 inputsize = gHIDMaxDevices;
|
||||||
InputData * hiddata = (InputData * ) malloc(sizeof(InputData)*inputsize);
|
InputData * hiddata = (InputData * ) malloc(sizeof(InputData)*inputsize);
|
||||||
memset(hiddata,0,sizeof(InputData)*inputsize);
|
memset(hiddata,0,sizeof(InputData)*inputsize);
|
||||||
|
|
||||||
@ -115,14 +115,14 @@ void InputGetterMenu::GetInputs(CThread *thread, void *arg){
|
|||||||
memset(&pad_result,0,sizeof(ControllerMappingPADInfo));
|
memset(&pad_result,0,sizeof(ControllerMappingPADInfo));
|
||||||
|
|
||||||
while(!gotPress){
|
while(!gotPress){
|
||||||
int foo = args->exitInputThread;
|
s32 foo = args->exitInputThread;
|
||||||
foo +=1;
|
foo +=1;
|
||||||
if(args->exitInputThread)break;
|
if(args->exitInputThread)break;
|
||||||
int result = ControllerPatcher::gettingInputAllDevices(hiddata,inputsize);
|
s32 result = ControllerPatcher::gettingInputAllDevices(hiddata,inputsize);
|
||||||
if(result > 0){
|
if(result > 0){
|
||||||
//log_printf("got %d results\n",result);
|
//log_printf("got %d results\n",result);
|
||||||
for(int i =0;i<result;i++){
|
for(s32 i =0;i<result;i++){
|
||||||
for(int j = 0;j<HID_MAX_PADS_COUNT;j++){
|
for(s32 j = 0;j<HID_MAX_PADS_COUNT;j++){
|
||||||
//log_printf("check pad %d. %08X\n",j,hiddata[i].button_data[j].btn_h);
|
//log_printf("check pad %d. %08X\n",j,hiddata[i].button_data[j].btn_h);
|
||||||
if(hiddata[i].button_data[j].btn_h != 0){
|
if(hiddata[i].button_data[j].btn_h != 0){
|
||||||
//log_printf("It pressed a buttons!\n",result);
|
//log_printf("It pressed a buttons!\n",result);
|
||||||
|
@ -56,8 +56,8 @@ private:
|
|||||||
GuiTrigger buttonBTrigger;
|
GuiTrigger buttonBTrigger;
|
||||||
GuiButton DPADButtons;
|
GuiButton DPADButtons;
|
||||||
UController_Type controller_type;
|
UController_Type controller_type;
|
||||||
volatile int total_result = 0;
|
volatile s32 total_result = 0;
|
||||||
volatile int exitInputThread = 0;
|
volatile s32 exitInputThread = 0;
|
||||||
static CThread *pThread;
|
static CThread *pThread;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -26,11 +26,11 @@
|
|||||||
|
|
||||||
MainWindow * MainWindow::instance = NULL;
|
MainWindow * MainWindow::instance = NULL;
|
||||||
|
|
||||||
MainWindow::MainWindow(int w, int h)
|
MainWindow::MainWindow(s32 w, s32 h)
|
||||||
: width(w)
|
: width(w)
|
||||||
, height(h)
|
, height(h)
|
||||||
{
|
{
|
||||||
for(int i = 0; i < 4; i++)
|
for(s32 i = 0; i < 4; i++)
|
||||||
{
|
{
|
||||||
std::string filename = strfmt("player%i_point.png", i+1);
|
std::string filename = strfmt("player%i_point.png", i+1);
|
||||||
pointerImgData[i] = Resources::GetImageData(filename.c_str());
|
pointerImgData[i] = Resources::GetImageData(filename.c_str());
|
||||||
@ -55,7 +55,7 @@ MainWindow::~MainWindow()
|
|||||||
delete drcElements[0];
|
delete drcElements[0];
|
||||||
remove(drcElements[0]);
|
remove(drcElements[0]);
|
||||||
}
|
}
|
||||||
for(int i = 0; i < 4; i++)
|
for(s32 i = 0; i < 4; i++)
|
||||||
{
|
{
|
||||||
delete pointerImg[i];
|
delete pointerImg[i];
|
||||||
Resources::RemoveImageData(pointerImgData[i]);
|
Resources::RemoveImageData(pointerImgData[i]);
|
||||||
@ -159,7 +159,7 @@ void MainWindow::update(GuiController *controller)
|
|||||||
|
|
||||||
if(controller->chanIdx >= 1 && controller->chanIdx <= 4 && controller->data.validPointer)
|
if(controller->chanIdx >= 1 && controller->chanIdx <= 4 && controller->data.validPointer)
|
||||||
{
|
{
|
||||||
int wpadIdx = controller->chanIdx - 1;
|
s32 wpadIdx = controller->chanIdx - 1;
|
||||||
f32 posX = controller->data.x;
|
f32 posX = controller->data.x;
|
||||||
f32 posY = controller->data.y;
|
f32 posY = controller->data.y;
|
||||||
pointerImg[wpadIdx]->setPosition(posX, posY);
|
pointerImg[wpadIdx]->setPosition(posX, posY);
|
||||||
@ -175,7 +175,7 @@ void MainWindow::drawDrc(CVideo *video)
|
|||||||
drcElements[i]->draw(video);
|
drcElements[i]->draw(video);
|
||||||
}
|
}
|
||||||
|
|
||||||
for(int i = 0; i < 4; i++)
|
for(s32 i = 0; i < 4; i++)
|
||||||
{
|
{
|
||||||
if(pointerValid[i])
|
if(pointerValid[i])
|
||||||
{
|
{
|
||||||
@ -193,7 +193,7 @@ void MainWindow::drawTv(CVideo *video)
|
|||||||
tvElements[i]->draw(video);
|
tvElements[i]->draw(video);
|
||||||
}
|
}
|
||||||
|
|
||||||
for(int i = 0; i < 4; i++)
|
for(s32 i = 0; i < 4; i++)
|
||||||
{
|
{
|
||||||
if(pointerValid[i])
|
if(pointerValid[i])
|
||||||
{
|
{
|
||||||
@ -224,7 +224,7 @@ bool MainWindow::checkForRealProController(){
|
|||||||
u32 type;
|
u32 type;
|
||||||
bool changed = false;
|
bool changed = false;
|
||||||
|
|
||||||
for(int i = 0;i<4;i++){
|
for(s32 i = 0;i<4;i++){
|
||||||
if(WPADProbe(i,&type) == 0){
|
if(WPADProbe(i,&type) == 0){
|
||||||
|
|
||||||
UController_Type controller_type = UController_Type_Pro1;
|
UController_Type controller_type = UController_Type_Pro1;
|
||||||
@ -291,7 +291,7 @@ void MainWindow::removeFromAllElements(GuiElement * element){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void MainWindow::setState(int val, int c){
|
void MainWindow::setState(s32 val, s32 c){
|
||||||
u32 drcSize = drcElements.size();
|
u32 drcSize = drcElements.size();
|
||||||
for(u32 i = 0; (i < drcSize) && (i < drcElements.size()); ++i)
|
for(u32 i = 0; (i < drcSize) && (i < drcElements.size()); ++i)
|
||||||
{
|
{
|
||||||
@ -305,7 +305,7 @@ void MainWindow::setState(int val, int c){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::clearState(int val, int c){
|
void MainWindow::clearState(s32 val, s32 c){
|
||||||
u32 drcSize = drcElements.size();
|
u32 drcSize = drcElements.size();
|
||||||
for(u32 i = 0; (i < drcSize) && (i < drcElements.size()); ++i)
|
for(u32 i = 0; (i < drcSize) && (i < drcElements.size()); ++i)
|
||||||
{
|
{
|
||||||
|
@ -34,7 +34,7 @@ public:
|
|||||||
|
|
||||||
static MainWindow *instance;
|
static MainWindow *instance;
|
||||||
|
|
||||||
static MainWindow *getInstance(int w,int h) {
|
static MainWindow *getInstance(s32 w,s32 h) {
|
||||||
if(!instance){
|
if(!instance){
|
||||||
instance = new MainWindow(w, h);
|
instance = new MainWindow(w, h);
|
||||||
}
|
}
|
||||||
@ -142,8 +142,8 @@ public:
|
|||||||
|
|
||||||
void appendToAllElements(GuiElement * element);
|
void appendToAllElements(GuiElement * element);
|
||||||
void removeFromAllElements(GuiElement * element);
|
void removeFromAllElements(GuiElement * element);
|
||||||
void setState(int i, int c = -1 );
|
void setState(s32 i, s32 c = -1 );
|
||||||
void clearState(int i, int c = -1);
|
void clearState(s32 i, s32 c = -1);
|
||||||
|
|
||||||
void OpenInputGetterMenu(UController_Type controller_type);
|
void OpenInputGetterMenu(UController_Type controller_type);
|
||||||
void openPageForController(UController_Type controller_type);
|
void openPageForController(UController_Type controller_type);
|
||||||
@ -158,7 +158,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
MainWindow(int w, int h);
|
MainWindow(s32 w, s32 h);
|
||||||
void SetupMainView(void);
|
void SetupMainView(void);
|
||||||
|
|
||||||
void OnOpenEffectFinish(GuiElement *element);
|
void OnOpenEffectFinish(GuiElement *element);
|
||||||
@ -170,7 +170,7 @@ private:
|
|||||||
|
|
||||||
void clickListEntryByController(UController_Type controller_type);
|
void clickListEntryByController(UController_Type controller_type);
|
||||||
|
|
||||||
int width, height;
|
s32 width, height;
|
||||||
std::vector<GuiElement *> drcElements;
|
std::vector<GuiElement *> drcElements;
|
||||||
std::vector<GuiElement *> tvElements;
|
std::vector<GuiElement *> tvElements;
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
#include "MainWindowContent.h"
|
#include "MainWindowContent.h"
|
||||||
|
|
||||||
MainWindowContent::MainWindowContent(int w, int h)
|
MainWindowContent::MainWindowContent(s32 w, s32 h)
|
||||||
: GuiFrame(w, h)
|
: GuiFrame(w, h)
|
||||||
, width(w)
|
, width(w)
|
||||||
, height(h)
|
, height(h)
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
|
|
||||||
class MainWindowContent : public GuiFrame, public sigslot::has_slots<>{
|
class MainWindowContent : public GuiFrame, public sigslot::has_slots<>{
|
||||||
public:
|
public:
|
||||||
MainWindowContent(int w, int h);
|
MainWindowContent(s32 w, s32 h);
|
||||||
virtual ~MainWindowContent();
|
virtual ~MainWindowContent();
|
||||||
|
|
||||||
void SetScreen(ContentTemplate * new_content);
|
void SetScreen(ContentTemplate * new_content);
|
||||||
@ -32,7 +32,7 @@ public:
|
|||||||
ContentTemplate * getContent();
|
ContentTemplate * getContent();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int width, height;
|
s32 width, height;
|
||||||
GuiImage bgImageColor;
|
GuiImage bgImageColor;
|
||||||
|
|
||||||
GuiImageData * footer_imgdata;
|
GuiImageData * footer_imgdata;
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
|
|
||||||
extern u32 hostIpAddress;
|
extern u32 hostIpAddress;
|
||||||
|
|
||||||
MainWindowDRC::MainWindowDRC(int w, int h)
|
MainWindowDRC::MainWindowDRC(s32 w, s32 h)
|
||||||
: GuiConfigurationScreen(w, h)
|
: GuiConfigurationScreen(w, h)
|
||||||
, width(w)
|
, width(w)
|
||||||
, height(h)
|
, height(h)
|
||||||
@ -63,7 +63,7 @@ void MainWindowDRC::clickListEntryByController(UController_Type controller_type)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindowDRC::setState(int i, int c){
|
void MainWindowDRC::setState(s32 i, s32 c){
|
||||||
GuiFrame::setState(i,c);
|
GuiFrame::setState(i,c);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,12 +25,12 @@
|
|||||||
|
|
||||||
class MainWindowDRC : public GuiConfigurationScreen, public sigslot::has_slots<>{
|
class MainWindowDRC : public GuiConfigurationScreen, public sigslot::has_slots<>{
|
||||||
public:
|
public:
|
||||||
MainWindowDRC(int w, int h);
|
MainWindowDRC(s32 w, s32 h);
|
||||||
virtual ~MainWindowDRC();
|
virtual ~MainWindowDRC();
|
||||||
|
|
||||||
void clickListEntryByController(UController_Type controller_type);
|
void clickListEntryByController(UController_Type controller_type);
|
||||||
private:
|
private:
|
||||||
int width, height;
|
s32 width, height;
|
||||||
GuiImageData * windowSplitter_imgdata;
|
GuiImageData * windowSplitter_imgdata;
|
||||||
GuiImage windowSplitter_img;
|
GuiImage windowSplitter_img;
|
||||||
MainWindowContent content;
|
MainWindowContent content;
|
||||||
@ -38,7 +38,7 @@ private:
|
|||||||
GuiText versionText;
|
GuiText versionText;
|
||||||
GuiText ipAddress;
|
GuiText ipAddress;
|
||||||
|
|
||||||
void setState(int i, int c);
|
void setState(s32 i, s32 c);
|
||||||
void process();
|
void process();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -65,7 +65,7 @@ MenuElementController::MenuElementController(UController_Type controllertype)
|
|||||||
notAttachedLabel.setColor(glm::vec4(0.2f,0.2f,0.2f,1.0f));
|
notAttachedLabel.setColor(glm::vec4(0.2f,0.2f,0.2f,1.0f));
|
||||||
notAttachedLabel.setParent(&icon_img);
|
notAttachedLabel.setParent(&icon_img);
|
||||||
|
|
||||||
for(int i = 0;i<4;i++){
|
for(s32 i = 0;i<4;i++){
|
||||||
ledImages.ledon[i] = new GuiImage(ledon_imgdata);
|
ledImages.ledon[i] = new GuiImage(ledon_imgdata);
|
||||||
ledImages.ledoff[i] = new GuiImage(ledoff_imgdata);
|
ledImages.ledoff[i] = new GuiImage(ledoff_imgdata);
|
||||||
|
|
||||||
@ -127,7 +127,7 @@ MenuElementController::~MenuElementController()
|
|||||||
Resources::RemoveImageData(ledon_imgdata);
|
Resources::RemoveImageData(ledon_imgdata);
|
||||||
Resources::RemoveImageData(ledoff_imgdata);
|
Resources::RemoveImageData(ledoff_imgdata);
|
||||||
|
|
||||||
for(int i = 0;i<4;i++){
|
for(s32 i = 0;i<4;i++){
|
||||||
if(ledImages.ledon[i]) delete ledImages.ledon[i];
|
if(ledImages.ledon[i]) delete ledImages.ledon[i];
|
||||||
if(ledImages.ledoff[i]) delete ledImages.ledoff[i];
|
if(ledImages.ledoff[i]) delete ledImages.ledoff[i];
|
||||||
}
|
}
|
||||||
@ -155,7 +155,7 @@ void MenuElementController::draw(CVideo *v){
|
|||||||
std::string name = "";
|
std::string name = "";
|
||||||
|
|
||||||
controllerConnected = 0;
|
controllerConnected = 0;
|
||||||
int found = ControllerPatcher::getActiveMappingSlot(getControllerType());
|
s32 found = ControllerPatcher::getActiveMappingSlot(getControllerType());
|
||||||
if(found == -1){
|
if(found == -1){
|
||||||
name = "No device";
|
name = "No device";
|
||||||
}else{
|
}else{
|
||||||
@ -187,13 +187,13 @@ void MenuElementController::draw(CVideo *v){
|
|||||||
proController_img.draw(v);
|
proController_img.draw(v);
|
||||||
controllerlabel.draw(v);
|
controllerlabel.draw(v);
|
||||||
}
|
}
|
||||||
int pad_active = 0;
|
bool pad_active = false;
|
||||||
ControllerMappingPADInfo * info = ControllerPatcher::getControllerMappingInfo(getControllerType(),0);
|
ControllerMappingPADInfo * info = ControllerPatcher::getControllerMappingInfo(getControllerType(),0);
|
||||||
|
|
||||||
for(int i = 0;i<4;i++){
|
for(s32 i = 0;i<4;i++){
|
||||||
if(info != NULL && (info->pad == i && info->active)){
|
if(info != NULL && (info->pad == i && info->active)){
|
||||||
ledImages.ledon[i]->draw(v);
|
ledImages.ledon[i]->draw(v);
|
||||||
pad_active = 1;
|
pad_active = true;
|
||||||
}else{
|
}else{
|
||||||
ledImages.ledoff[i]->draw(v);
|
ledImages.ledoff[i]->draw(v);
|
||||||
}
|
}
|
||||||
@ -204,7 +204,7 @@ void MenuElementController::draw(CVideo *v){
|
|||||||
alpha = 1.0f;
|
alpha = 1.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
for(int i = 0;i<4;i++){
|
for(s32 i = 0;i<4;i++){
|
||||||
ledImages.ledon[i]->setAlpha(alpha);
|
ledImages.ledon[i]->setAlpha(alpha);
|
||||||
ledImages.ledoff[i]->setAlpha(alpha);
|
ledImages.ledoff[i]->setAlpha(alpha);
|
||||||
}
|
}
|
||||||
|
@ -21,7 +21,6 @@
|
|||||||
#include "controller_patcher/patcher/ControllerPatcherDefs.h"
|
#include "controller_patcher/patcher/ControllerPatcherDefs.h"
|
||||||
#include "controller_patcher/utils/CPRetainVars.hpp"
|
#include "controller_patcher/utils/CPRetainVars.hpp"
|
||||||
#include "utils/StringTools.h"
|
#include "utils/StringTools.h"
|
||||||
#include "menu/ControllerDefs.h"
|
|
||||||
|
|
||||||
class MenuElementController : public MenuElement{
|
class MenuElementController : public MenuElement{
|
||||||
public:
|
public:
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
#include "content/ContentController.h"
|
#include "content/ContentController.h"
|
||||||
#include "utils/logger.h"
|
#include "utils/logger.h"
|
||||||
|
|
||||||
MenuListDRC::MenuListDRC(int w, int h,MainWindowContent * _contentWindow)
|
MenuListDRC::MenuListDRC(s32 w, s32 h,MainWindowContent * _contentWindow)
|
||||||
: GuiFrame(w, h)
|
: GuiFrame(w, h)
|
||||||
, contentWindow(_contentWindow)
|
, contentWindow(_contentWindow)
|
||||||
, width(w)
|
, width(w)
|
||||||
@ -85,7 +85,7 @@ MenuListDRC::MenuListDRC(int w, int h,MainWindowContent * _contentWindow)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void MenuListDRC::setState(int i, int c){
|
void MenuListDRC::setState(s32 i, s32 c){
|
||||||
GuiFrame::setState(i,c);
|
GuiFrame::setState(i,c);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -112,14 +112,14 @@ void MenuListDRC::listAppend(GuiElement * listElement){
|
|||||||
append(listElement);
|
append(listElement);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MenuListDRC::OnDrag(GuiDragListener * listener, const GuiController * controller, GuiTrigger * trigger,int dx,int dy){
|
void MenuListDRC::OnDrag(GuiDragListener * listener, const GuiController * controller, GuiTrigger * trigger,s32 dx,s32 dy){
|
||||||
addToTotalOffset((float)dy);
|
addToTotalOffset((float)dy);
|
||||||
scroll_needs_update = true;
|
scroll_needs_update = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MenuListDRC::OnButtonClicked(GuiButton *button, const GuiController *controller, GuiTrigger *trigger){
|
void MenuListDRC::OnButtonClicked(GuiButton *button, const GuiController *controller, GuiTrigger *trigger){
|
||||||
MenuElement * element = NULL;
|
MenuElement * element = NULL;
|
||||||
int i = 0;
|
s32 i = 0;
|
||||||
for (std::vector<MenuElement*>::iterator it = listElementsButtons.begin() ; it != listElementsButtons.end(); ++it){
|
for (std::vector<MenuElement*>::iterator it = listElementsButtons.begin() ; it != listElementsButtons.end(); ++it){
|
||||||
element = (*it);
|
element = (*it);
|
||||||
if(!element){continue; i++;}
|
if(!element){continue; i++;}
|
||||||
@ -159,7 +159,7 @@ void MenuListDRC::update(GuiController * c){
|
|||||||
if(dpad_selection_changed && (lastSelectedItem != selectedItem)){
|
if(dpad_selection_changed && (lastSelectedItem != selectedItem)){
|
||||||
lastSelectedItem = selectedItem;
|
lastSelectedItem = selectedItem;
|
||||||
if(selectedItem >= 0 && (u32) selectedItem < listElementsButtons.size()){
|
if(selectedItem >= 0 && (u32) selectedItem < listElementsButtons.size()){
|
||||||
int i = 0;
|
s32 i = 0;
|
||||||
MenuElement * element = NULL;
|
MenuElement * element = NULL;
|
||||||
for (std::vector<MenuElement*>::iterator it = listElementsButtons.begin() ; it != listElementsButtons.end(); ++it){
|
for (std::vector<MenuElement*>::iterator it = listElementsButtons.begin() ; it != listElementsButtons.end(); ++it){
|
||||||
element = (*it);
|
element = (*it);
|
||||||
|
@ -27,14 +27,14 @@
|
|||||||
|
|
||||||
class MenuListDRC : public GuiFrame, public sigslot::has_slots<>{
|
class MenuListDRC : public GuiFrame, public sigslot::has_slots<>{
|
||||||
public:
|
public:
|
||||||
MenuListDRC(int w, int h,MainWindowContent * contentWindow);
|
MenuListDRC(s32 w, s32 h,MainWindowContent * contentWindow);
|
||||||
virtual ~MenuListDRC();
|
virtual ~MenuListDRC();
|
||||||
|
|
||||||
MenuElement * getButtonElementByController(UController_Type controller_type);
|
MenuElement * getButtonElementByController(UController_Type controller_type);
|
||||||
void OnButtonClicked(GuiButton * button, const GuiController *controller, GuiTrigger *trigger);
|
void OnButtonClicked(GuiButton * button, const GuiController *controller, GuiTrigger *trigger);
|
||||||
private:
|
private:
|
||||||
MainWindowContent * contentWindow;
|
MainWindowContent * contentWindow;
|
||||||
int width, height;
|
s32 width, height;
|
||||||
GuiImage bgImageColor;
|
GuiImage bgImageColor;
|
||||||
MenuSeperator homeSeperator;
|
MenuSeperator homeSeperator;
|
||||||
MenuElementInfo elementHome;
|
MenuElementInfo elementHome;
|
||||||
@ -66,16 +66,16 @@ private:
|
|||||||
std::vector<GuiElement*> listElementsAll;
|
std::vector<GuiElement*> listElementsAll;
|
||||||
std::vector<MenuElement*> listElementsButtons;
|
std::vector<MenuElement*> listElementsButtons;
|
||||||
|
|
||||||
int sizeListElementsAll = 0;
|
s32 sizeListElementsAll = 0;
|
||||||
int sizeListElementsButtons = 0;
|
s32 sizeListElementsButtons = 0;
|
||||||
|
|
||||||
int selectedItem = 0;
|
s32 selectedItem = 0;
|
||||||
int lastSelectedItem = -1;
|
s32 lastSelectedItem = -1;
|
||||||
|
|
||||||
void setState(int i, int c);
|
void setState(s32 i, s32 c);
|
||||||
void update(GuiController * c);
|
void update(GuiController * c);
|
||||||
|
|
||||||
void OnDrag(GuiDragListener * listener, const GuiController * controller, GuiTrigger * trigger,int dx,int dy);
|
void OnDrag(GuiDragListener * listener, const GuiController * controller, GuiTrigger * trigger,s32 dx,s32 dy);
|
||||||
void addToTotalOffset(f32 added_offset);
|
void addToTotalOffset(f32 added_offset);
|
||||||
void calculateAndSetOffsets(std::vector<GuiElement*>& elements,f32 total_offset);
|
void calculateAndSetOffsets(std::vector<GuiElement*>& elements,f32 total_offset);
|
||||||
void listAppend(GuiElement * listElement);
|
void listAppend(GuiElement * listElement);
|
||||||
|
@ -32,7 +32,7 @@ ContentAbout::ContentAbout(): ContentTemplate(){
|
|||||||
f32 positionX2 = 250.0f;
|
f32 positionX2 = 250.0f;
|
||||||
f32 positionX3 = 80.0f;
|
f32 positionX3 = 80.0f;
|
||||||
|
|
||||||
int fontSize = 28;
|
s32 fontSize = 28;
|
||||||
glm::vec4 textColor = glm::vec4(0.3f,0.3f,0.3f,1.0f);
|
glm::vec4 textColor = glm::vec4(0.3f,0.3f,0.3f,1.0f);
|
||||||
|
|
||||||
text = new GuiText("Coding:", fontSize, textColor);
|
text = new GuiText("Coding:", fontSize, textColor);
|
||||||
|
@ -195,10 +195,10 @@ bool ContentController::isKeyboard(){
|
|||||||
void ContentController::process(){
|
void ContentController::process(){
|
||||||
ContentTemplate::process();
|
ContentTemplate::process();
|
||||||
|
|
||||||
int connected = ControllerPatcher::getActiveMappingSlot(getControllerType());
|
s32 connectedSlot = ControllerPatcher::getActiveMappingSlot(getControllerType());
|
||||||
|
|
||||||
//TODO: maybe just do it once and not every time?
|
//TODO: maybe just do it once and not every time?
|
||||||
if(connected != -1){
|
if(connectedSlot != -1){
|
||||||
notConnectedFrame.setState(STATE_DISABLE_INPUT);
|
notConnectedFrame.setState(STATE_DISABLE_INPUT);
|
||||||
notConnectedFrame.setVisible(false);
|
notConnectedFrame.setVisible(false);
|
||||||
connectedFrame.clearState(STATE_DISABLE_INPUT);
|
connectedFrame.clearState(STATE_DISABLE_INPUT);
|
||||||
|
@ -32,8 +32,8 @@ ContentHelp::ContentHelp(): ContentTemplate(){
|
|||||||
//f32 positionX2 = 250.0f;
|
//f32 positionX2 = 250.0f;
|
||||||
//f32 positionX3 = 80.0f;
|
//f32 positionX3 = 80.0f;
|
||||||
|
|
||||||
int fontSize = 35;
|
s32 fontSize = 35;
|
||||||
int fontSize2 = 24;
|
s32 fontSize2 = 24;
|
||||||
glm::vec4 textColor = glm::vec4(0.3f,0.3f,0.3f,1.0f);
|
glm::vec4 textColor = glm::vec4(0.3f,0.3f,0.3f,1.0f);
|
||||||
|
|
||||||
text = new GuiText("My controller is not working!", fontSize, textColor);
|
text = new GuiText("My controller is not working!", fontSize, textColor);
|
||||||
|
@ -32,8 +32,8 @@ ContentNetworkHelp::ContentNetworkHelp(): ContentTemplate(){
|
|||||||
//f32 positionX2 = 250.0f;
|
//f32 positionX2 = 250.0f;
|
||||||
//f32 positionX3 = 80.0f;
|
//f32 positionX3 = 80.0f;
|
||||||
|
|
||||||
int fontSize = 35;
|
s32 fontSize = 35;
|
||||||
int fontSize2 = 24;
|
s32 fontSize2 = 24;
|
||||||
glm::vec4 textColor = glm::vec4(0.3f,0.3f,0.3f,1.0f);
|
glm::vec4 textColor = glm::vec4(0.3f,0.3f,0.3f,1.0f);
|
||||||
|
|
||||||
text = new GuiText("What is the Network Client?", fontSize, textColor);
|
text = new GuiText("What is the Network Client?", fontSize, textColor);
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
|
|
||||||
TVControllerBanner *MainWindowTV::bannerInstance = NULL;
|
TVControllerBanner *MainWindowTV::bannerInstance = NULL;
|
||||||
|
|
||||||
MainWindowTV::MainWindowTV(int w, int h)
|
MainWindowTV::MainWindowTV(s32 w, s32 h)
|
||||||
: GuiConfigurationScreen(w, h)
|
: GuiConfigurationScreen(w, h)
|
||||||
, width(w)
|
, width(w)
|
||||||
, height(h)
|
, height(h)
|
||||||
|
@ -29,13 +29,13 @@ class CVideo;
|
|||||||
|
|
||||||
class MainWindowTV : public GuiConfigurationScreen{
|
class MainWindowTV : public GuiConfigurationScreen{
|
||||||
public:
|
public:
|
||||||
MainWindowTV(int w, int h);
|
MainWindowTV(s32 w, s32 h);
|
||||||
virtual ~MainWindowTV();
|
virtual ~MainWindowTV();
|
||||||
|
|
||||||
static TVControllerBanner * bannerInstance;
|
static TVControllerBanner * bannerInstance;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int width, height;
|
s32 width, height;
|
||||||
|
|
||||||
GuiImageData *backgroundImageData;
|
GuiImageData *backgroundImageData;
|
||||||
GuiImage backgroundImage;
|
GuiImage backgroundImage;
|
||||||
|
@ -65,7 +65,7 @@ TVButtonController::TVButtonController(UController_Type controllertype)
|
|||||||
notAttachedLabel.setColor(glm::vec4(0.2f,0.2f,0.2f,1.0f));
|
notAttachedLabel.setColor(glm::vec4(0.2f,0.2f,0.2f,1.0f));
|
||||||
notAttachedLabel.setParent(this);
|
notAttachedLabel.setParent(this);
|
||||||
|
|
||||||
for(int i = 0;i<4;i++){
|
for(s32 i = 0;i<4;i++){
|
||||||
ledImages.ledon[i] = new GuiImage(ledon_imgdata);
|
ledImages.ledon[i] = new GuiImage(ledon_imgdata);
|
||||||
ledImages.ledoff[i] = new GuiImage(ledoff_imgdata);
|
ledImages.ledoff[i] = new GuiImage(ledoff_imgdata);
|
||||||
|
|
||||||
@ -130,7 +130,7 @@ TVButtonController::~TVButtonController()
|
|||||||
Resources::RemoveImageData(ledon_imgdata);
|
Resources::RemoveImageData(ledon_imgdata);
|
||||||
Resources::RemoveImageData(ledoff_imgdata);
|
Resources::RemoveImageData(ledoff_imgdata);
|
||||||
|
|
||||||
for(int i = 0;i<4;i++){
|
for(s32 i = 0;i<4;i++){
|
||||||
if(ledImages.ledon[i]) delete ledImages.ledon[i];
|
if(ledImages.ledon[i]) delete ledImages.ledon[i];
|
||||||
if(ledImages.ledoff[i]) delete ledImages.ledoff[i];
|
if(ledImages.ledoff[i]) delete ledImages.ledoff[i];
|
||||||
}
|
}
|
||||||
@ -166,14 +166,14 @@ void TVButtonController::draw(CVideo *v){
|
|||||||
std::string name ="";
|
std::string name ="";
|
||||||
|
|
||||||
controllerConnected = 0;
|
controllerConnected = 0;
|
||||||
int found = ControllerPatcher::getActiveMappingSlot(getControllerType());
|
s32 foundSlot = ControllerPatcher::getActiveMappingSlot(getControllerType());
|
||||||
|
|
||||||
if(found == -1){
|
if(foundSlot == -1){
|
||||||
name = "No device";
|
name = "No device";
|
||||||
}else{
|
}else{
|
||||||
controllerConnected = 1;
|
controllerConnected = 1;
|
||||||
|
|
||||||
ControllerMappingPADInfo * info = ControllerPatcher::getControllerMappingInfo(getControllerType(),found);
|
ControllerMappingPADInfo * info = ControllerPatcher::getControllerMappingInfo(getControllerType(),foundSlot);
|
||||||
if(info !=NULL){
|
if(info !=NULL){
|
||||||
if(info->type == CM_Type_Controller){
|
if(info->type == CM_Type_Controller){
|
||||||
drawControllerName(v,info->vidpid.vid,info->vidpid.pid);
|
drawControllerName(v,info->vidpid.vid,info->vidpid.pid);
|
||||||
@ -187,14 +187,14 @@ void TVButtonController::draw(CVideo *v){
|
|||||||
notAttachedLabel.setText(name.c_str());
|
notAttachedLabel.setText(name.c_str());
|
||||||
notAttachedLabel.draw(v);
|
notAttachedLabel.draw(v);
|
||||||
|
|
||||||
int pad_active = 0;
|
bool pad_active = false;
|
||||||
|
|
||||||
ControllerMappingPADInfo * info = ControllerPatcher::getControllerMappingInfo(getControllerType(),0);
|
ControllerMappingPADInfo * info = ControllerPatcher::getControllerMappingInfo(getControllerType(),0);
|
||||||
|
|
||||||
for(int i = 0;i<4;i++){
|
for(s32 i = 0;i<4;i++){
|
||||||
if(info != NULL && (info->pad == i && info->active)){
|
if(info != NULL && (info->pad == i && info->active)){
|
||||||
ledImages.ledon[i]->draw(v);
|
ledImages.ledon[i]->draw(v);
|
||||||
pad_active = 1;
|
pad_active = true;
|
||||||
}else{
|
}else{
|
||||||
ledImages.ledoff[i]->draw(v);
|
ledImages.ledoff[i]->draw(v);
|
||||||
}
|
}
|
||||||
@ -204,7 +204,7 @@ void TVButtonController::draw(CVideo *v){
|
|||||||
if(pad_active){
|
if(pad_active){
|
||||||
alpha = 1.0f;
|
alpha = 1.0f;
|
||||||
}
|
}
|
||||||
for(int i = 0;i<4;i++){
|
for(s32 i = 0;i<4;i++){
|
||||||
ledImages.ledon[i]->setAlpha(alpha);
|
ledImages.ledon[i]->setAlpha(alpha);
|
||||||
ledImages.ledoff[i]->setAlpha(alpha);
|
ledImages.ledoff[i]->setAlpha(alpha);
|
||||||
}
|
}
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
#include "utils/StringTools.h"
|
#include "utils/StringTools.h"
|
||||||
|
|
||||||
|
|
||||||
TVControllerBanner::TVControllerBanner(int w, int h)
|
TVControllerBanner::TVControllerBanner(s32 w, s32 h)
|
||||||
: GuiFrame(w, h)
|
: GuiFrame(w, h)
|
||||||
, background_imgdata(Resources::GetImageData("MainWindowTVBackgroundBanner.png"))
|
, background_imgdata(Resources::GetImageData("MainWindowTVBackgroundBanner.png"))
|
||||||
, background_img(background_imgdata)
|
, background_img(background_imgdata)
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
class TVControllerBanner : public GuiFrame, public sigslot::has_slots<>
|
class TVControllerBanner : public GuiFrame, public sigslot::has_slots<>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
TVControllerBanner(int w, int h);
|
TVControllerBanner(s32 w, s32 h);
|
||||||
virtual ~TVControllerBanner();
|
virtual ~TVControllerBanner();
|
||||||
|
|
||||||
void draw(CVideo *pVideo);
|
void draw(CVideo *pVideo);
|
||||||
|
@ -50,8 +50,8 @@ DECL(void, __PPCExit, void){
|
|||||||
real___PPCExit();
|
real___PPCExit();
|
||||||
}
|
}
|
||||||
|
|
||||||
DECL(int, VPADRead, int chan, VPADData *buffer, u32 buffer_size, s32 *error) {
|
DECL(s32, VPADRead, s32 chan, VPADData *buffer, u32 buffer_size, s32 *error) {
|
||||||
int result = real_VPADRead(chan, buffer, buffer_size, error);
|
s32 result = real_VPADRead(chan, buffer, buffer_size, error);
|
||||||
|
|
||||||
|
|
||||||
if(gHIDAttached && buffer_size > 0){
|
if(gHIDAttached && buffer_size > 0){
|
||||||
@ -82,7 +82,7 @@ DECL(int, VPADRead, int chan, VPADData *buffer, u32 buffer_size, s32 *error) {
|
|||||||
DECL(s32,KPADReadEx, s32 chan, KPADData * buffer, u32 buffer_count, s32 *error ){
|
DECL(s32,KPADReadEx, s32 chan, KPADData * buffer, u32 buffer_count, s32 *error ){
|
||||||
//log_printf("KPADReadEx\n");
|
//log_printf("KPADReadEx\n");
|
||||||
if(buffer_count > 0){
|
if(buffer_count > 0){
|
||||||
int res = ControllerPatcher::setProControllerDataFromHID((void*)&buffer[0],chan,PRO_CONTROLLER_MODE_KPADDATA); //Check if a controller is connected and fill the buffer with data.
|
s32 res = ControllerPatcher::setProControllerDataFromHID((void*)&buffer[0],chan,PRO_CONTROLLER_MODE_KPADDATA); //Check if a controller is connected and fill the buffer with data.
|
||||||
if(res >= 0){
|
if(res >= 0){
|
||||||
|
|
||||||
if(buffer[0].pro.btns_h & WPAD_PRO_BUTTON_HOME){ //Pro controller doesn't work in home menu so it's okay to let this enabled.
|
if(buffer[0].pro.btns_h & WPAD_PRO_BUTTON_HOME){ //Pro controller doesn't work in home menu so it's okay to let this enabled.
|
||||||
@ -213,5 +213,5 @@ hooks_magic_t method_hooks_hid_controller[] __attribute__((section(".data"))) =
|
|||||||
u32 method_hooks_size_hid_controller __attribute__((section(".data"))) = sizeof(method_hooks_hid_controller) / sizeof(hooks_magic_t);
|
u32 method_hooks_size_hid_controller __attribute__((section(".data"))) = sizeof(method_hooks_hid_controller) / sizeof(hooks_magic_t);
|
||||||
|
|
||||||
//! buffer to store our instructions needed for our replacements
|
//! buffer to store our instructions needed for our replacements
|
||||||
volatile unsigned int method_calls_hid_controller[sizeof(method_hooks_hid_controller) / sizeof(hooks_magic_t) * FUNCTION_PATCHER_METHOD_STORE_SIZE] __attribute__((section(".data")));
|
volatile u32 method_calls_hid_controller[sizeof(method_hooks_hid_controller) / sizeof(hooks_magic_t) * FUNCTION_PATCHER_METHOD_STORE_SIZE] __attribute__((section(".data")));
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ extern "C" {
|
|||||||
|
|
||||||
extern hooks_magic_t method_hooks_hid_controller[];
|
extern hooks_magic_t method_hooks_hid_controller[];
|
||||||
extern u32 method_hooks_size_hid_controller;
|
extern u32 method_hooks_size_hid_controller;
|
||||||
extern volatile unsigned int method_calls_hid_controller[];
|
extern volatile u32 method_calls_hid_controller[];
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
@ -12,7 +12,7 @@ Resources * Resources::instance = NULL;
|
|||||||
|
|
||||||
void Resources::Clear()
|
void Resources::Clear()
|
||||||
{
|
{
|
||||||
for(int i = 0; RecourceList[i].filename != NULL; ++i)
|
for(s32 i = 0; RecourceList[i].filename != NULL; ++i)
|
||||||
{
|
{
|
||||||
if(RecourceList[i].CustomFile)
|
if(RecourceList[i].CustomFile)
|
||||||
{
|
{
|
||||||
@ -38,7 +38,7 @@ bool Resources::LoadFiles(const char * path)
|
|||||||
bool result = false;
|
bool result = false;
|
||||||
Clear();
|
Clear();
|
||||||
|
|
||||||
for(int i = 0; RecourceList[i].filename != NULL; ++i)
|
for(s32 i = 0; RecourceList[i].filename != NULL; ++i)
|
||||||
{
|
{
|
||||||
std::string fullpath(path);
|
std::string fullpath(path);
|
||||||
fullpath += "/";
|
fullpath += "/";
|
||||||
@ -59,7 +59,7 @@ bool Resources::LoadFiles(const char * path)
|
|||||||
|
|
||||||
const u8 * Resources::GetFile(const char * filename)
|
const u8 * Resources::GetFile(const char * filename)
|
||||||
{
|
{
|
||||||
for(int i = 0; RecourceList[i].filename != NULL; ++i)
|
for(s32 i = 0; RecourceList[i].filename != NULL; ++i)
|
||||||
{
|
{
|
||||||
if(strcasecmp(filename, RecourceList[i].filename) == 0)
|
if(strcasecmp(filename, RecourceList[i].filename) == 0)
|
||||||
{
|
{
|
||||||
@ -72,7 +72,7 @@ const u8 * Resources::GetFile(const char * filename)
|
|||||||
|
|
||||||
u32 Resources::GetFileSize(const char * filename)
|
u32 Resources::GetFileSize(const char * filename)
|
||||||
{
|
{
|
||||||
for(int i = 0; RecourceList[i].filename != NULL; ++i)
|
for(s32 i = 0; RecourceList[i].filename != NULL; ++i)
|
||||||
{
|
{
|
||||||
if(strcasecmp(filename, RecourceList[i].filename) == 0)
|
if(strcasecmp(filename, RecourceList[i].filename) == 0)
|
||||||
{
|
{
|
||||||
@ -87,14 +87,14 @@ GuiImageData * Resources::GetImageData(const char * filename)
|
|||||||
if(!instance)
|
if(!instance)
|
||||||
instance = new Resources;
|
instance = new Resources;
|
||||||
|
|
||||||
std::map<std::string, std::pair<unsigned int, GuiImageData *> >::iterator itr = instance->imageDataMap.find(std::string(filename));
|
std::map<std::string, std::pair<u32, GuiImageData *> >::iterator itr = instance->imageDataMap.find(std::string(filename));
|
||||||
if(itr != instance->imageDataMap.end())
|
if(itr != instance->imageDataMap.end())
|
||||||
{
|
{
|
||||||
itr->second.first++;
|
itr->second.first++;
|
||||||
return itr->second.second;
|
return itr->second.second;
|
||||||
}
|
}
|
||||||
|
|
||||||
for(int i = 0; RecourceList[i].filename != NULL; ++i)
|
for(s32 i = 0; RecourceList[i].filename != NULL; ++i)
|
||||||
{
|
{
|
||||||
if(strcasecmp(filename, RecourceList[i].filename) == 0)
|
if(strcasecmp(filename, RecourceList[i].filename) == 0)
|
||||||
{
|
{
|
||||||
@ -117,7 +117,7 @@ GuiImageData * Resources::GetImageData(const char * filename)
|
|||||||
|
|
||||||
void Resources::RemoveImageData(GuiImageData * image)
|
void Resources::RemoveImageData(GuiImageData * image)
|
||||||
{
|
{
|
||||||
std::map<std::string, std::pair<unsigned int, GuiImageData *> >::iterator itr;
|
std::map<std::string, std::pair<u32, GuiImageData *> >::iterator itr;
|
||||||
|
|
||||||
for(itr = instance->imageDataMap.begin(); itr != instance->imageDataMap.end(); itr++)
|
for(itr = instance->imageDataMap.begin(); itr != instance->imageDataMap.end(); itr++)
|
||||||
{
|
{
|
||||||
@ -140,14 +140,14 @@ GuiSound * Resources::GetSound(const char * filename)
|
|||||||
if(!instance)
|
if(!instance)
|
||||||
instance = new Resources;
|
instance = new Resources;
|
||||||
|
|
||||||
std::map<std::string, std::pair<unsigned int, GuiSound *> >::iterator itr = instance->soundDataMap.find(std::string(filename));
|
std::map<std::string, std::pair<u32, GuiSound *> >::iterator itr = instance->soundDataMap.find(std::string(filename));
|
||||||
if(itr != instance->soundDataMap.end())
|
if(itr != instance->soundDataMap.end())
|
||||||
{
|
{
|
||||||
itr->second.first++;
|
itr->second.first++;
|
||||||
return itr->second.second;
|
return itr->second.second;
|
||||||
}
|
}
|
||||||
|
|
||||||
for(int i = 0; RecourceList[i].filename != NULL; ++i)
|
for(s32 i = 0; RecourceList[i].filename != NULL; ++i)
|
||||||
{
|
{
|
||||||
if(strcasecmp(filename, RecourceList[i].filename) == 0)
|
if(strcasecmp(filename, RecourceList[i].filename) == 0)
|
||||||
{
|
{
|
||||||
@ -170,7 +170,7 @@ GuiSound * Resources::GetSound(const char * filename)
|
|||||||
|
|
||||||
void Resources::RemoveSound(GuiSound * sound)
|
void Resources::RemoveSound(GuiSound * sound)
|
||||||
{
|
{
|
||||||
std::map<std::string, std::pair<unsigned int, GuiSound *> >::iterator itr;
|
std::map<std::string, std::pair<u32, GuiSound *> >::iterator itr;
|
||||||
|
|
||||||
for(itr = instance->soundDataMap.begin(); itr != instance->soundDataMap.end(); itr++)
|
for(itr = instance->soundDataMap.begin(); itr != instance->soundDataMap.end(); itr++)
|
||||||
{
|
{
|
||||||
|
@ -27,8 +27,8 @@ private:
|
|||||||
Resources() {}
|
Resources() {}
|
||||||
~Resources() {}
|
~Resources() {}
|
||||||
|
|
||||||
std::map<std::string, std::pair<unsigned int, GuiImageData *> > imageDataMap;
|
std::map<std::string, std::pair<u32, GuiImageData *> > imageDataMap;
|
||||||
std::map<std::string, std::pair<unsigned int, GuiSound *> > soundDataMap;
|
std::map<std::string, std::pair<u32, GuiSound *> > soundDataMap;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -41,14 +41,14 @@ BufferCircle::~BufferCircle()
|
|||||||
BufferReady.clear();
|
BufferReady.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
void BufferCircle::SetBufferBlockSize(int size)
|
void BufferCircle::SetBufferBlockSize(s32 size)
|
||||||
{
|
{
|
||||||
if(size < 0)
|
if(size < 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
BufferBlockSize = size;
|
BufferBlockSize = size;
|
||||||
|
|
||||||
for(int i = 0; i < Size(); i++)
|
for(s32 i = 0; i < Size(); i++)
|
||||||
{
|
{
|
||||||
if(SoundBuffer[i] != NULL)
|
if(SoundBuffer[i] != NULL)
|
||||||
free(SoundBuffer[i]);
|
free(SoundBuffer[i]);
|
||||||
@ -59,18 +59,18 @@ void BufferCircle::SetBufferBlockSize(int size)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void BufferCircle::Resize(int size)
|
void BufferCircle::Resize(s32 size)
|
||||||
{
|
{
|
||||||
while(size < Size())
|
while(size < Size())
|
||||||
RemoveBuffer(Size()-1);
|
RemoveBuffer(Size()-1);
|
||||||
|
|
||||||
int oldSize = Size();
|
s32 oldSize = Size();
|
||||||
|
|
||||||
SoundBuffer.resize(size);
|
SoundBuffer.resize(size);
|
||||||
BufferSize.resize(size);
|
BufferSize.resize(size);
|
||||||
BufferReady.resize(size);
|
BufferReady.resize(size);
|
||||||
|
|
||||||
for(int i = oldSize; i < Size(); i++)
|
for(s32 i = oldSize; i < Size(); i++)
|
||||||
{
|
{
|
||||||
if(BufferBlockSize > 0)
|
if(BufferBlockSize > 0)
|
||||||
SoundBuffer[i] = (u8 *) memalign(32, ALIGN32(BufferBlockSize));
|
SoundBuffer[i] = (u8 *) memalign(32, ALIGN32(BufferBlockSize));
|
||||||
@ -81,7 +81,7 @@ void BufferCircle::Resize(int size)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void BufferCircle::RemoveBuffer(int pos)
|
void BufferCircle::RemoveBuffer(s32 pos)
|
||||||
{
|
{
|
||||||
if(!Valid(pos))
|
if(!Valid(pos))
|
||||||
return;
|
return;
|
||||||
@ -96,7 +96,7 @@ void BufferCircle::RemoveBuffer(int pos)
|
|||||||
|
|
||||||
void BufferCircle::ClearBuffer()
|
void BufferCircle::ClearBuffer()
|
||||||
{
|
{
|
||||||
for(int i = 0; i < Size(); i++)
|
for(s32 i = 0; i < Size(); i++)
|
||||||
{
|
{
|
||||||
BufferSize[i] = 0;
|
BufferSize[i] = 0;
|
||||||
BufferReady[i] = false;
|
BufferReady[i] = false;
|
||||||
@ -106,7 +106,7 @@ void BufferCircle::ClearBuffer()
|
|||||||
|
|
||||||
void BufferCircle::FreeBuffer()
|
void BufferCircle::FreeBuffer()
|
||||||
{
|
{
|
||||||
for(int i = 0; i < Size(); i++)
|
for(s32 i = 0; i < Size(); i++)
|
||||||
{
|
{
|
||||||
if(SoundBuffer[i] != NULL)
|
if(SoundBuffer[i] != NULL)
|
||||||
free(SoundBuffer[i]);
|
free(SoundBuffer[i]);
|
||||||
@ -125,7 +125,7 @@ void BufferCircle::LoadNext()
|
|||||||
which = Next();
|
which = Next();
|
||||||
}
|
}
|
||||||
|
|
||||||
void BufferCircle::SetBufferReady(int pos, bool state)
|
void BufferCircle::SetBufferReady(s32 pos, bool state)
|
||||||
{
|
{
|
||||||
if(!Valid(pos))
|
if(!Valid(pos))
|
||||||
return;
|
return;
|
||||||
@ -133,7 +133,7 @@ void BufferCircle::SetBufferReady(int pos, bool state)
|
|||||||
BufferReady[pos] = state;
|
BufferReady[pos] = state;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BufferCircle::SetBufferSize(int pos, int size)
|
void BufferCircle::SetBufferSize(s32 pos, s32 size)
|
||||||
{
|
{
|
||||||
if(!Valid(pos))
|
if(!Valid(pos))
|
||||||
return;
|
return;
|
||||||
|
@ -37,13 +37,13 @@ class BufferCircle
|
|||||||
//!> Destructor
|
//!> Destructor
|
||||||
~BufferCircle();
|
~BufferCircle();
|
||||||
//!> Set circle size
|
//!> Set circle size
|
||||||
void Resize(int size);
|
void Resize(s32 size);
|
||||||
//!> Get the circle size
|
//!> Get the circle size
|
||||||
int Size() { return SoundBuffer.size(); };
|
s32 Size() { return SoundBuffer.size(); };
|
||||||
//!> Set/resize the buffer size
|
//!> Set/resize the buffer size
|
||||||
void SetBufferBlockSize(int size);
|
void SetBufferBlockSize(s32 size);
|
||||||
//!> Remove a buffer
|
//!> Remove a buffer
|
||||||
void RemoveBuffer(int pos);
|
void RemoveBuffer(s32 pos);
|
||||||
//!> Set all buffers clear
|
//!> Set all buffers clear
|
||||||
void ClearBuffer();
|
void ClearBuffer();
|
||||||
//!> Free all buffers
|
//!> Free all buffers
|
||||||
@ -53,28 +53,28 @@ class BufferCircle
|
|||||||
//!> Get the current buffer
|
//!> Get the current buffer
|
||||||
u8 * GetBuffer() { return GetBuffer(which); };
|
u8 * GetBuffer() { return GetBuffer(which); };
|
||||||
//!> Get a buffer at a position
|
//!> Get a buffer at a position
|
||||||
u8 * GetBuffer(int pos) { if(!Valid(pos)) return NULL; else return SoundBuffer[pos]; };
|
u8 * GetBuffer(s32 pos) { if(!Valid(pos)) return NULL; else return SoundBuffer[pos]; };
|
||||||
//!> Get current buffer size
|
//!> Get current buffer size
|
||||||
u32 GetBufferSize() { return GetBufferSize(which); };
|
u32 GetBufferSize() { return GetBufferSize(which); };
|
||||||
//!> Get buffer size at position
|
//!> Get buffer size at position
|
||||||
u32 GetBufferSize(int pos) { if(!Valid(pos)) return 0; else return BufferSize[pos]; };
|
u32 GetBufferSize(s32 pos) { if(!Valid(pos)) return 0; else return BufferSize[pos]; };
|
||||||
//!> Is current buffer ready
|
//!> Is current buffer ready
|
||||||
bool IsBufferReady() { return IsBufferReady(which); };
|
bool IsBufferReady() { return IsBufferReady(which); };
|
||||||
//!> Is a buffer at a position ready
|
//!> Is a buffer at a position ready
|
||||||
bool IsBufferReady(int pos) { if(!Valid(pos)) return false; else return BufferReady[pos]; };
|
bool IsBufferReady(s32 pos) { if(!Valid(pos)) return false; else return BufferReady[pos]; };
|
||||||
//!> Set a buffer at a position to a ready state
|
//!> Set a buffer at a position to a ready state
|
||||||
void SetBufferReady(int pos, bool st);
|
void SetBufferReady(s32 pos, bool st);
|
||||||
//!> Set the buffersize at a position
|
//!> Set the buffersize at a position
|
||||||
void SetBufferSize(int pos, int size);
|
void SetBufferSize(s32 pos, s32 size);
|
||||||
//!> Get the current position in the circle
|
//!> Get the current position in the circle
|
||||||
u16 Which() { return which; };
|
u16 Which() { return which; };
|
||||||
|
|
||||||
//!> Get the next location
|
//!> Get the next location
|
||||||
inline u16 Next() { return (which+1 >= Size()) ? 0 : which+1; }
|
inline u16 Next() { return (which+1 >= Size()) ? 0 : which+1; }
|
||||||
inline u16 Prev() { if(Size() == 0) return 0; else return ((int)which-1 < 0) ? Size()-1 : which-1; }
|
inline u16 Prev() { if(Size() == 0) return 0; else return ((s32)which-1 < 0) ? Size()-1 : which-1; }
|
||||||
protected:
|
protected:
|
||||||
//!> Check if the position is a valid position in the vector
|
//!> Check if the position is a valid position in the vector
|
||||||
bool Valid(int pos) { return !(pos < 0 || pos >= Size()); };
|
bool Valid(s32 pos) { return !(pos < 0 || pos >= Size()); };
|
||||||
|
|
||||||
u16 which;
|
u16 which;
|
||||||
u32 BufferBlockSize;
|
u32 BufferBlockSize;
|
||||||
|
@ -48,7 +48,7 @@ Mp3Decoder::Mp3Decoder(const char * filepath)
|
|||||||
OpenFile();
|
OpenFile();
|
||||||
}
|
}
|
||||||
|
|
||||||
Mp3Decoder::Mp3Decoder(const u8 * snd, int len)
|
Mp3Decoder::Mp3Decoder(const u8 * snd, s32 len)
|
||||||
: SoundDecoder(snd, len)
|
: SoundDecoder(snd, len)
|
||||||
{
|
{
|
||||||
SoundType = SOUND_MP3;
|
SoundType = SOUND_MP3;
|
||||||
@ -92,7 +92,7 @@ void Mp3Decoder::OpenFile()
|
|||||||
}
|
}
|
||||||
|
|
||||||
u8 dummybuff[4096];
|
u8 dummybuff[4096];
|
||||||
int ret = Read(dummybuff, 4096, 0);
|
s32 ret = Read(dummybuff, 4096, 0);
|
||||||
if(ret <= 0)
|
if(ret <= 0)
|
||||||
{
|
{
|
||||||
if(file_fd)
|
if(file_fd)
|
||||||
@ -106,7 +106,7 @@ void Mp3Decoder::OpenFile()
|
|||||||
Rewind();
|
Rewind();
|
||||||
}
|
}
|
||||||
|
|
||||||
int Mp3Decoder::Rewind()
|
s32 Mp3Decoder::Rewind()
|
||||||
{
|
{
|
||||||
mad_synth_finish(&Synth);
|
mad_synth_finish(&Synth);
|
||||||
mad_frame_finish(&Frame);
|
mad_frame_finish(&Frame);
|
||||||
@ -136,7 +136,7 @@ static inline s16 FixedToShort(mad_fixed_t Fixed)
|
|||||||
return((s16)Fixed);
|
return((s16)Fixed);
|
||||||
}
|
}
|
||||||
|
|
||||||
int Mp3Decoder::Read(u8 * buffer, int buffer_size, int pos)
|
s32 Mp3Decoder::Read(u8 * buffer, s32 buffer_size, s32 pos)
|
||||||
{
|
{
|
||||||
if(!file_fd)
|
if(!file_fd)
|
||||||
return -1;
|
return -1;
|
||||||
@ -170,8 +170,8 @@ int Mp3Decoder::Read(u8 * buffer, int buffer_size, int pos)
|
|||||||
if(Stream.buffer == NULL || Stream.error == MAD_ERROR_BUFLEN)
|
if(Stream.buffer == NULL || Stream.error == MAD_ERROR_BUFLEN)
|
||||||
{
|
{
|
||||||
u8 * ReadStart = ReadBuffer;
|
u8 * ReadStart = ReadBuffer;
|
||||||
int ReadSize = SoundBlockSize*SoundBlocks;
|
s32 ReadSize = SoundBlockSize*SoundBlocks;
|
||||||
int Remaining = 0;
|
s32 Remaining = 0;
|
||||||
|
|
||||||
if(Stream.next_frame != NULL)
|
if(Stream.next_frame != NULL)
|
||||||
{
|
{
|
||||||
|
@ -31,10 +31,10 @@ class Mp3Decoder : public SoundDecoder
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Mp3Decoder(const char * filepath);
|
Mp3Decoder(const char * filepath);
|
||||||
Mp3Decoder(const u8 * sound, int len);
|
Mp3Decoder(const u8 * sound, s32 len);
|
||||||
virtual ~Mp3Decoder();
|
virtual ~Mp3Decoder();
|
||||||
int Rewind();
|
s32 Rewind();
|
||||||
int Read(u8 * buffer, int buffer_size, int pos);
|
s32 Read(u8 * buffer, s32 buffer_size, s32 pos);
|
||||||
protected:
|
protected:
|
||||||
void OpenFile();
|
void OpenFile();
|
||||||
struct mad_stream Stream;
|
struct mad_stream Stream;
|
||||||
|
@ -67,7 +67,7 @@ OggDecoder::OggDecoder(const char * filepath)
|
|||||||
OpenFile();
|
OpenFile();
|
||||||
}
|
}
|
||||||
|
|
||||||
OggDecoder::OggDecoder(const u8 * snd, int len)
|
OggDecoder::OggDecoder(const u8 * snd, s32 len)
|
||||||
: SoundDecoder(snd, len)
|
: SoundDecoder(snd, len)
|
||||||
{
|
{
|
||||||
SoundType = SOUND_OGG;
|
SoundType = SOUND_OGG;
|
||||||
@ -110,26 +110,26 @@ void OggDecoder::OpenFile()
|
|||||||
SampleRate = ogg_info->rate;
|
SampleRate = ogg_info->rate;
|
||||||
}
|
}
|
||||||
|
|
||||||
int OggDecoder::Rewind()
|
s32 OggDecoder::Rewind()
|
||||||
{
|
{
|
||||||
if(!file_fd)
|
if(!file_fd)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
int ret = ov_time_seek(&ogg_file, 0);
|
s32 ret = ov_time_seek(&ogg_file, 0);
|
||||||
CurPos = 0;
|
CurPos = 0;
|
||||||
EndOfFile = false;
|
EndOfFile = false;
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int OggDecoder::Read(u8 * buffer, int buffer_size, int pos)
|
s32 OggDecoder::Read(u8 * buffer, s32 buffer_size, s32 pos)
|
||||||
{
|
{
|
||||||
if(!file_fd)
|
if(!file_fd)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
int bitstream = 0;
|
s32 bitstream = 0;
|
||||||
|
|
||||||
int read = ov_read(&ogg_file, (char *) buffer, buffer_size, &bitstream);
|
s32 read = (s32) ov_read(&ogg_file, (char *) buffer, (int) buffer_size, (int *)&bitstream);
|
||||||
|
|
||||||
if(read > 0)
|
if(read > 0)
|
||||||
CurPos += read;
|
CurPos += read;
|
||||||
|
@ -32,10 +32,10 @@ class OggDecoder : public SoundDecoder
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
OggDecoder(const char * filepath);
|
OggDecoder(const char * filepath);
|
||||||
OggDecoder(const u8 * snd, int len);
|
OggDecoder(const u8 * snd, s32 len);
|
||||||
virtual ~OggDecoder();
|
virtual ~OggDecoder();
|
||||||
int Rewind();
|
s32 Rewind();
|
||||||
int Read(u8 * buffer, int buffer_size, int pos);
|
s32 Read(u8 * buffer, s32 buffer_size, s32 pos);
|
||||||
protected:
|
protected:
|
||||||
void OpenFile();
|
void OpenFile();
|
||||||
OggVorbis_File ogg_file;
|
OggVorbis_File ogg_file;
|
||||||
|
@ -36,7 +36,7 @@ SoundDecoder::SoundDecoder(const std::string & filepath)
|
|||||||
Init();
|
Init();
|
||||||
}
|
}
|
||||||
|
|
||||||
SoundDecoder::SoundDecoder(const u8 * buffer, int size)
|
SoundDecoder::SoundDecoder(const u8 * buffer, s32 size)
|
||||||
{
|
{
|
||||||
file_fd = new CFile(buffer, size);
|
file_fd = new CFile(buffer, size);
|
||||||
Init();
|
Init();
|
||||||
@ -78,7 +78,7 @@ void SoundDecoder::Init()
|
|||||||
ResampleRatio = 0;
|
ResampleRatio = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int SoundDecoder::Rewind()
|
s32 SoundDecoder::Rewind()
|
||||||
{
|
{
|
||||||
CurPos = 0;
|
CurPos = 0;
|
||||||
EndOfFile = false;
|
EndOfFile = false;
|
||||||
@ -87,9 +87,9 @@ int SoundDecoder::Rewind()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int SoundDecoder::Read(u8 * buffer, int buffer_size, int pos)
|
s32 SoundDecoder::Read(u8 * buffer, s32 buffer_size, s32 pos)
|
||||||
{
|
{
|
||||||
int ret = file_fd->read(buffer, buffer_size);
|
s32 ret = file_fd->read(buffer, buffer_size);
|
||||||
CurPos += ret;
|
CurPos += ret;
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@ -113,7 +113,7 @@ void SoundDecoder::EnableUpsample(void)
|
|||||||
|
|
||||||
void SoundDecoder::Upsample(s16 *src, s16 *dst, u32 nr_src_samples, u32 nr_dst_samples)
|
void SoundDecoder::Upsample(s16 *src, s16 *dst, u32 nr_src_samples, u32 nr_dst_samples)
|
||||||
{
|
{
|
||||||
int timer = 0;
|
s32 timer = 0;
|
||||||
|
|
||||||
for(u32 i = 0, n = 0; i < nr_dst_samples; i += 2)
|
for(u32 i = 0, n = 0; i < nr_dst_samples; i += 2)
|
||||||
{
|
{
|
||||||
@ -129,7 +129,7 @@ void SoundDecoder::Upsample(s16 *src, s16 *dst, u32 nr_src_samples, u32 nr_dst_s
|
|||||||
|
|
||||||
timer += ResampleRatio;
|
timer += ResampleRatio;
|
||||||
|
|
||||||
if(timer >= (int)FixedPointScale) {
|
if(timer >= (s32)FixedPointScale) {
|
||||||
n += 2;
|
n += 2;
|
||||||
timer -= FixedPointScale;
|
timer -= FixedPointScale;
|
||||||
}
|
}
|
||||||
@ -152,7 +152,7 @@ void SoundDecoder::Decode()
|
|||||||
|
|
||||||
Decoding = true;
|
Decoding = true;
|
||||||
|
|
||||||
int done = 0;
|
s32 done = 0;
|
||||||
u8 * write_buf = SoundBuffer.GetBuffer(whichLoad);
|
u8 * write_buf = SoundBuffer.GetBuffer(whichLoad);
|
||||||
if(!write_buf)
|
if(!write_buf)
|
||||||
{
|
{
|
||||||
@ -166,7 +166,7 @@ void SoundDecoder::Decode()
|
|||||||
|
|
||||||
while(done < SoundBlockSize)
|
while(done < SoundBlockSize)
|
||||||
{
|
{
|
||||||
int ret = Read(&write_buf[done], SoundBlockSize-done, Tell());
|
s32 ret = Read(&write_buf[done], SoundBlockSize-done, Tell());
|
||||||
|
|
||||||
if(ret <= 0)
|
if(ret <= 0)
|
||||||
{
|
{
|
||||||
@ -192,8 +192,8 @@ void SoundDecoder::Decode()
|
|||||||
{
|
{
|
||||||
memcpy(ResampleBuffer, write_buf, done);
|
memcpy(ResampleBuffer, write_buf, done);
|
||||||
|
|
||||||
int src_samples = done >> 1;
|
s32 src_samples = done >> 1;
|
||||||
int dest_samples = ( src_samples * FixedPointScale ) / ResampleRatio;
|
s32 dest_samples = ( src_samples * FixedPointScale ) / ResampleRatio;
|
||||||
dest_samples &= ~0x01;
|
dest_samples &= ~0x01;
|
||||||
Upsample((s16*)ResampleBuffer, (s16*)write_buf, src_samples, dest_samples);
|
Upsample((s16*)ResampleBuffer, (s16*)write_buf, src_samples, dest_samples);
|
||||||
done = dest_samples << 1;
|
done = dest_samples << 1;
|
||||||
@ -205,7 +205,7 @@ void SoundDecoder::Decode()
|
|||||||
s16* monoBuf = (s16*)write_buf;
|
s16* monoBuf = (s16*)write_buf;
|
||||||
done = done >> 1;
|
done = done >> 1;
|
||||||
|
|
||||||
for(int i = 0; i < done; i++)
|
for(s32 i = 0; i < done; i++)
|
||||||
monoBuf[i] = monoBuf[i << 1];
|
monoBuf[i] = monoBuf[i << 1];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,14 +35,14 @@ class SoundDecoder
|
|||||||
public:
|
public:
|
||||||
SoundDecoder();
|
SoundDecoder();
|
||||||
SoundDecoder(const std::string & filepath);
|
SoundDecoder(const std::string & filepath);
|
||||||
SoundDecoder(const u8 * buffer, int size);
|
SoundDecoder(const u8 * buffer, s32 size);
|
||||||
virtual ~SoundDecoder();
|
virtual ~SoundDecoder();
|
||||||
virtual void Lock() { mutex.lock(); }
|
virtual void Lock() { mutex.lock(); }
|
||||||
virtual void Unlock() { mutex.unlock(); }
|
virtual void Unlock() { mutex.unlock(); }
|
||||||
virtual int Read(u8 * buffer, int buffer_size, int pos);
|
virtual s32 Read(u8 * buffer, s32 buffer_size, s32 pos);
|
||||||
virtual int Tell() { return CurPos; }
|
virtual s32 Tell() { return CurPos; }
|
||||||
virtual int Seek(int pos) { CurPos = pos; return file_fd->seek(CurPos, SEEK_SET); }
|
virtual s32 Seek(s32 pos) { CurPos = pos; return file_fd->seek(CurPos, SEEK_SET); }
|
||||||
virtual int Rewind();
|
virtual s32 Rewind();
|
||||||
virtual u16 GetFormat() { return Format; }
|
virtual u16 GetFormat() { return Format; }
|
||||||
virtual u16 GetSampleRate() { return SampleRate; }
|
virtual u16 GetSampleRate() { return SampleRate; }
|
||||||
virtual void Decode();
|
virtual void Decode();
|
||||||
@ -87,8 +87,8 @@ protected:
|
|||||||
u8 SoundType;
|
u8 SoundType;
|
||||||
u16 whichLoad;
|
u16 whichLoad;
|
||||||
u16 SoundBlocks;
|
u16 SoundBlocks;
|
||||||
int SoundBlockSize;
|
s32 SoundBlockSize;
|
||||||
int CurPos;
|
s32 CurPos;
|
||||||
bool ResampleTo48kHz;
|
bool ResampleTo48kHz;
|
||||||
bool Loop;
|
bool Loop;
|
||||||
bool EndOfFile;
|
bool EndOfFile;
|
||||||
|
@ -61,7 +61,7 @@ SoundHandler::~SoundHandler()
|
|||||||
ClearDecoderList();
|
ClearDecoderList();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SoundHandler::AddDecoder(int voice, const char * filepath)
|
void SoundHandler::AddDecoder(s32 voice, const char * filepath)
|
||||||
{
|
{
|
||||||
if(voice < 0 || voice >= MAX_DECODERS)
|
if(voice < 0 || voice >= MAX_DECODERS)
|
||||||
return;
|
return;
|
||||||
@ -72,7 +72,7 @@ void SoundHandler::AddDecoder(int voice, const char * filepath)
|
|||||||
DecoderList[voice] = GetSoundDecoder(filepath);
|
DecoderList[voice] = GetSoundDecoder(filepath);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SoundHandler::AddDecoder(int voice, const u8 * snd, int len)
|
void SoundHandler::AddDecoder(s32 voice, const u8 * snd, s32 len)
|
||||||
{
|
{
|
||||||
if(voice < 0 || voice >= MAX_DECODERS)
|
if(voice < 0 || voice >= MAX_DECODERS)
|
||||||
return;
|
return;
|
||||||
@ -83,7 +83,7 @@ void SoundHandler::AddDecoder(int voice, const u8 * snd, int len)
|
|||||||
DecoderList[voice] = GetSoundDecoder(snd, len);
|
DecoderList[voice] = GetSoundDecoder(snd, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SoundHandler::RemoveDecoder(int voice)
|
void SoundHandler::RemoveDecoder(s32 voice)
|
||||||
{
|
{
|
||||||
if(voice < 0 || voice >= MAX_DECODERS)
|
if(voice < 0 || voice >= MAX_DECODERS)
|
||||||
return;
|
return;
|
||||||
@ -137,7 +137,7 @@ static inline bool CheckMP3Signature(const u8 * buffer)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
for(int i = 1; i < 13; i++)
|
for(s32 i = 1; i < 13; i++)
|
||||||
{
|
{
|
||||||
if(buffer[0] == MP3_Magic[i][0] && buffer[1] == MP3_Magic[i][1])
|
if(buffer[0] == MP3_Magic[i][0] && buffer[1] == MP3_Magic[i][1])
|
||||||
return true;
|
return true;
|
||||||
@ -182,10 +182,10 @@ SoundDecoder * SoundHandler::GetSoundDecoder(const char * filepath)
|
|||||||
return new SoundDecoder(filepath);
|
return new SoundDecoder(filepath);
|
||||||
}
|
}
|
||||||
|
|
||||||
SoundDecoder * SoundHandler::GetSoundDecoder(const u8 * sound, int length)
|
SoundDecoder * SoundHandler::GetSoundDecoder(const u8 * sound, s32 length)
|
||||||
{
|
{
|
||||||
const u8 * check = sound;
|
const u8 * check = sound;
|
||||||
int counter = 0;
|
s32 counter = 0;
|
||||||
|
|
||||||
while(check[0] == 0 && counter < length)
|
while(check[0] == 0 && counter < length)
|
||||||
{
|
{
|
||||||
@ -235,7 +235,7 @@ void SoundHandler::executeThread()
|
|||||||
// we would need MAX_DECODERS > Voice::PRIO_MAX
|
// we would need MAX_DECODERS > Voice::PRIO_MAX
|
||||||
for(u32 i = 0; i < MAX_DECODERS; ++i)
|
for(u32 i = 0; i < MAX_DECODERS; ++i)
|
||||||
{
|
{
|
||||||
int priority = (MAX_DECODERS - i) * Voice::PRIO_MAX / MAX_DECODERS;
|
s32 priority = (MAX_DECODERS - i) * Voice::PRIO_MAX / MAX_DECODERS;
|
||||||
voiceList[i] = new Voice(priority); // allocate voice 0 with highest priority
|
voiceList[i] = new Voice(priority); // allocate voice 0 with highest priority
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -45,12 +45,12 @@ public:
|
|||||||
|
|
||||||
static void DestroyInstance() { delete handlerInstance; handlerInstance = NULL; }
|
static void DestroyInstance() { delete handlerInstance; handlerInstance = NULL; }
|
||||||
|
|
||||||
void AddDecoder(int voice, const char * filepath);
|
void AddDecoder(s32 voice, const char * filepath);
|
||||||
void AddDecoder(int voice, const u8 * snd, int len);
|
void AddDecoder(s32 voice, const u8 * snd, s32 len);
|
||||||
void RemoveDecoder(int voice);
|
void RemoveDecoder(s32 voice);
|
||||||
|
|
||||||
SoundDecoder * getDecoder(int i) { return ((i < 0 || i >= MAX_DECODERS) ? NULL : DecoderList[i]); };
|
SoundDecoder * getDecoder(s32 i) { return ((i < 0 || i >= MAX_DECODERS) ? NULL : DecoderList[i]); };
|
||||||
Voice * getVoice(int i) { return ((i < 0 || i >= MAX_DECODERS) ? NULL : voiceList[i]); };
|
Voice * getVoice(s32 i) { return ((i < 0 || i >= MAX_DECODERS) ? NULL : voiceList[i]); };
|
||||||
|
|
||||||
void ThreadSignal() { resumeThread(); };
|
void ThreadSignal() { resumeThread(); };
|
||||||
bool IsDecoding() { return Decoding; };
|
bool IsDecoding() { return Decoding; };
|
||||||
@ -64,7 +64,7 @@ protected:
|
|||||||
void ClearDecoderList();
|
void ClearDecoderList();
|
||||||
|
|
||||||
SoundDecoder * GetSoundDecoder(const char * filepath);
|
SoundDecoder * GetSoundDecoder(const char * filepath);
|
||||||
SoundDecoder * GetSoundDecoder(const u8 * sound, int length);
|
SoundDecoder * GetSoundDecoder(const u8 * sound, s32 length);
|
||||||
|
|
||||||
static SoundHandler * handlerInstance;
|
static SoundHandler * handlerInstance;
|
||||||
|
|
||||||
|
@ -38,7 +38,7 @@ public:
|
|||||||
STATE_STOP,
|
STATE_STOP,
|
||||||
};
|
};
|
||||||
|
|
||||||
Voice(int prio)
|
Voice(s32 prio)
|
||||||
: state(STATE_STOPPED)
|
: state(STATE_STOPPED)
|
||||||
{
|
{
|
||||||
lastLoopCounter = 0;
|
lastLoopCounter = 0;
|
||||||
|
@ -40,7 +40,7 @@ WavDecoder::WavDecoder(const char * filepath)
|
|||||||
OpenFile();
|
OpenFile();
|
||||||
}
|
}
|
||||||
|
|
||||||
WavDecoder::WavDecoder(const u8 * snd, int len)
|
WavDecoder::WavDecoder(const u8 * snd, s32 len)
|
||||||
: SoundDecoder(snd, len)
|
: SoundDecoder(snd, len)
|
||||||
{
|
{
|
||||||
SoundType = SOUND_WAV;
|
SoundType = SOUND_WAV;
|
||||||
@ -93,7 +93,7 @@ void WavDecoder::OpenFile()
|
|||||||
{
|
{
|
||||||
DataOffset += 8+le32(DataChunk.size);
|
DataOffset += 8+le32(DataChunk.size);
|
||||||
file_fd->seek(DataOffset, SEEK_SET);
|
file_fd->seek(DataOffset, SEEK_SET);
|
||||||
int ret = file_fd->read((u8 *) &DataChunk, sizeof(SWaveChunk));
|
s32 ret = file_fd->read((u8 *) &DataChunk, sizeof(SWaveChunk));
|
||||||
if(ret <= 0)
|
if(ret <= 0)
|
||||||
{
|
{
|
||||||
CloseFile();
|
CloseFile();
|
||||||
@ -124,20 +124,20 @@ void WavDecoder::CloseFile()
|
|||||||
file_fd = NULL;
|
file_fd = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
int WavDecoder::Read(u8 * buffer, int buffer_size, int pos)
|
s32 WavDecoder::Read(u8 * buffer, s32 buffer_size, s32 pos)
|
||||||
{
|
{
|
||||||
if(!file_fd)
|
if(!file_fd)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
if(CurPos >= (int) DataSize)
|
if(CurPos >= (s32) DataSize)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
file_fd->seek(DataOffset+CurPos, SEEK_SET);
|
file_fd->seek(DataOffset+CurPos, SEEK_SET);
|
||||||
|
|
||||||
if(buffer_size > (int) DataSize-CurPos)
|
if(buffer_size > (s32) DataSize-CurPos)
|
||||||
buffer_size = DataSize-CurPos;
|
buffer_size = DataSize-CurPos;
|
||||||
|
|
||||||
int read = file_fd->read(buffer, buffer_size);
|
s32 read = file_fd->read(buffer, buffer_size);
|
||||||
if(read > 0)
|
if(read > 0)
|
||||||
{
|
{
|
||||||
if (Is16Bit)
|
if (Is16Bit)
|
||||||
|
@ -57,9 +57,9 @@ class WavDecoder : public SoundDecoder
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
WavDecoder(const char * filepath);
|
WavDecoder(const char * filepath);
|
||||||
WavDecoder(const u8 * snd, int len);
|
WavDecoder(const u8 * snd, s32 len);
|
||||||
virtual ~WavDecoder();
|
virtual ~WavDecoder();
|
||||||
int Read(u8 * buffer, int buffer_size, int pos);
|
s32 Read(u8 * buffer, s32 buffer_size, s32 pos);
|
||||||
protected:
|
protected:
|
||||||
void OpenFile();
|
void OpenFile();
|
||||||
void CloseFile();
|
void CloseFile();
|
||||||
|
@ -29,7 +29,7 @@ public:
|
|||||||
typedef void (* Callback)(CThread *thread, void *arg);
|
typedef void (* Callback)(CThread *thread, void *arg);
|
||||||
|
|
||||||
//! constructor
|
//! constructor
|
||||||
CThread(int iAttr, int iPriority = 16, int iStackSize = 0x8000, CThread::Callback callback = NULL, void *callbackArg = NULL)
|
CThread(s32 iAttr, s32 iPriority = 16, s32 iStackSize = 0x8000, CThread::Callback callback = NULL, void *callbackArg = NULL)
|
||||||
: pThread(NULL)
|
: pThread(NULL)
|
||||||
, pThreadStack(NULL)
|
, pThreadStack(NULL)
|
||||||
, pCallback(callback)
|
, pCallback(callback)
|
||||||
@ -49,7 +49,7 @@ public:
|
|||||||
//! destructor
|
//! destructor
|
||||||
virtual ~CThread() { shutdownThread(); }
|
virtual ~CThread() { shutdownThread(); }
|
||||||
|
|
||||||
static CThread *create(CThread::Callback callback, void *callbackArg, int iAttr = eAttributeNone, int iPriority = 16, int iStackSize = 0x8000)
|
static CThread *create(CThread::Callback callback, void *callbackArg, s32 iAttr = eAttributeNone, s32 iPriority = 16, s32 iStackSize = 0x8000)
|
||||||
{
|
{
|
||||||
return ( new CThread(iAttr, iPriority, iStackSize, callback, callbackArg) );
|
return ( new CThread(iAttr, iPriority, iStackSize, callback, callbackArg) );
|
||||||
}
|
}
|
||||||
@ -67,7 +67,7 @@ public:
|
|||||||
//! Resume thread
|
//! Resume thread
|
||||||
virtual void resumeThread(void) { if(!isThreadSuspended()) return; if(pThread) OSResumeThread(pThread); }
|
virtual void resumeThread(void) { if(!isThreadSuspended()) return; if(pThread) OSResumeThread(pThread); }
|
||||||
//! Set thread priority
|
//! Set thread priority
|
||||||
virtual void setThreadPriority(int prio) { if(pThread) OSSetThreadPriority(pThread, prio); }
|
virtual void setThreadPriority(s32 prio) { if(pThread) OSSetThreadPriority(pThread, prio); }
|
||||||
//! Check if thread is suspended
|
//! Check if thread is suspended
|
||||||
virtual bool isThreadSuspended(void) const { if(pThread) return OSIsThreadSuspended(pThread); return false; }
|
virtual bool isThreadSuspended(void) const { if(pThread) return OSIsThreadSuspended(pThread); return false; }
|
||||||
//! Check if thread is terminated
|
//! Check if thread is terminated
|
||||||
@ -105,13 +105,13 @@ public:
|
|||||||
eAttributePinnedAff = 0x10
|
eAttributePinnedAff = 0x10
|
||||||
};
|
};
|
||||||
private:
|
private:
|
||||||
static int threadCallback(int argc, void *arg)
|
static s32 threadCallback(s32 argc, void *arg)
|
||||||
{
|
{
|
||||||
//! After call to start() continue with the internal function
|
//! After call to start() continue with the internal function
|
||||||
((CThread *) arg)->executeThread();
|
((CThread *) arg)->executeThread();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
int iAttributes;
|
s32 iAttributes;
|
||||||
void *pThread;
|
void *pThread;
|
||||||
u8 *pThreadStack;
|
u8 *pThreadStack;
|
||||||
Callback pCallback;
|
Callback pCallback;
|
||||||
|
@ -80,7 +80,7 @@ static const char exception_print_formats[18][45] = {
|
|||||||
|
|
||||||
static unsigned char exception_cb(void * c, unsigned char exception_type) {
|
static unsigned char exception_cb(void * c, unsigned char exception_type) {
|
||||||
char buf[850];
|
char buf[850];
|
||||||
int pos = 0;
|
s32 pos = 0;
|
||||||
|
|
||||||
OSContext *context = (OSContext *) c;
|
OSContext *context = (OSContext *) c;
|
||||||
/*
|
/*
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user