diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..c7d292a --- /dev/null +++ b/.travis.yml @@ -0,0 +1,45 @@ +language: c +sudo: false + +os: + - linux + +env: + global: + - DEVKITPRO=$HOME/devkitPro + - DEVKITPPC=${DEVKITPRO}/devkitPPC + - DEVKITTMP=$HOME/tmpFolder + +cache: + directories: + - ${DEVKITPRO} + +addons: + apt: + packages: + - p7zip-full + +before_install: + - mkdir -p $DEVKITPRO + - cd $DEVKITPRO + - wget https://raw.githubusercontent.com/Maschell/controller_patcher/lib/other/devkitPPCupdatePPCr29.pl + - mkdir -p $DEVKITTMP + - cd $DEVKITTMP + - git clone https://github.com/Maschell/dynamic_libs.git -b lib + - git clone https://github.com/Maschell/libutils.git + +install: + - cd $DEVKITPRO + - perl devkitPPCupdatePPCr29.pl + - cd $DEVKITTMP/dynamic_libs + - 7z x -y ./libs/portlibs.zip -o${DEVKITPRO} + - make && make install + - cd $DEVKITTMP/libutils + - make && make install + +before_script: + - cd $TRAVIS_BUILD_DIR/ + +script: + - make + \ No newline at end of file diff --git a/README.md b/README.md index 89aa246..15e9f00 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +[![Build Status](https://travis-ci.org/Maschell/controller_patcher.svg?branch=master)](https://travis-ci.org/Maschell/controller_patcher) + # What is in this controller_patcher repository These files are the magic behind tools like HID to VPAD and can used to use your USB HID Device on your WiiU console. diff --git a/other/devkitPPCupdatePPCr29.pl b/other/devkitPPCupdatePPCr29.pl new file mode 100644 index 0000000..5690818 --- /dev/null +++ b/other/devkitPPCupdatePPCr29.pl @@ -0,0 +1,250 @@ +#!/usr/bin/perl +#----------------------------------------------------------------------------- +# +# Copyright (C) 2011 - 2016 +# Michael Theall (mtheall) +# Dave Murphy (WinterMute) +# +# This software is provided 'as-is', without any express or implied +# warranty. In no event will the authors be held liable for any +# damages arising from the use of this software. +# +# Permission is granted to anyone to use this software for any +# purpose, including commercial applications, and to alter it and +# redistribute it freely, subject to the following restrictions: +# +# 1. The origin of this software must not be misrepresented; you +# must not claim that you wrote the original software. If you use +# this software in a product, an acknowledgment in the product +# documentation would be appreciated but is not required. +# 2. Altered source versions must be plainly marked as such, and +# must not be misrepresented as being the original software. +# 3. This notice may not be removed or altered from any source +# distribution. +# +#----------------------------------------------------------------------------- + use strict; + + my $dir = "$ENV{HOME}/devkitPro"; + my $downloader; + my $archname; + + if($ENV{"DEVKITPRO"} ne "") + { + $dir = $ENV{"DEVKITPRO"}; + } + + if($#ARGV eq 0) + { + $dir = $ARGV[0]; + } + + # Ensure full pathname + if(!($dir =~ /^\//)) + { + my $pwd = `pwd`; + chomp($pwd); + $dir = "$pwd/$dir"; + } + + printf("devkitPPC Updater/Installer\n"); + printf("Installing to %s\n", $dir); + + # Get OS information + my $os = `uname`; + my $arch = `uname -m`; + chomp($os); + chomp($arch); + + # Check OS information + if($os eq "Linux" and ($arch eq "i686" or $arch eq "x86_64")) + { + $downloader = "wget -q"; + $archname = $arch . "-linux"; + } + elsif($os eq "Darwin" and ($arch eq "i386" or $arch eq "x86_64")) + { + $downloader = "curl -L -O -s"; + $archname = $arch . "-osx"; + } + else + { + printf(STDERR "Not on Linux i686/x86_64 or Darwin i386/x86_64!\n"); + exit(1); + } + + # Set up directories + if(!(-d "$dir")) + { + mkdir("$dir") or die $!; + } + + if(!(-d "$dir/libogc")) + { + mkdir("$dir/libogc") or die $!; + } + if(!(-d "$dir/examples")) + { + mkdir("$dir/examples") or die $!; + } + if(!(-d "$dir/examples/wii")) + { + mkdir("$dir/examples/wii") or die $!; + } + if(!(-d "$dir/examples/gamecube")) + { + mkdir("$dir/examples/gamecube") or die $!; + } + + # Grab update file + if(-e "devkitProUpdatePPCr29.ini") + { + unlink("devkitProUpdatePPCr29.ini") or die $!; + } + printf("Downloading update file..."); + system($downloader . " https://raw.githubusercontent.com/Maschell/controller_patcher/master/other/devkitProUpdatePPCr29.ini") and die "Failed to download!"; + printf("OK!\n"); + + # Initialize versions & newVersions + my %versions = + ( + 'devkitPPC' => 0, + 'libogc' => 0, + 'libogcfat' => 0, + 'wiiexamples' => 0, + 'cubeexamples' => 0, + ); + my %newVersions = %versions; + + my %files = (); + my $current = ""; + + if(-e "$dir/dkppc-update.ini") + { + open(MYFILE, "<$dir/dkppc-update.ini") or die $!; + while() + { + chomp; + if($_ =~ /\[(.*)\]/) + { + $current = $1; + } + elsif($_ =~ /Version=(.*)/ and defined($versions{$current})) + { + $versions{$current} = $1; + } + elsif($_ =~ /File=(.*)/) + { + $files{$current} = $1; + } + } + close(MYFILE); + } + + my %newFiles = (); + + open(MYFILE, ") + { + chomp; + if($_ =~ /\[(.*)\]/) + { + $current = $1; + } + elsif($_ =~ /Version=(.*)/ and defined($newVersions{$current})) + { + $newVersions{$current} = $1; + } + elsif($_ =~ /File=(.*)/) + { + $newFiles{$current} = $1; + } + } + close(MYFILE); + unlink("devkitProUpdatePPCr29.ini") or die $!; + + # see what to update + my %updates = (); + foreach my $key (keys %versions) + { + if($versions{$key} ne $newVersions{$key} and $newVersions{$key} ne 0) + { + $newFiles{$key} =~ s/win32\.exe/$archname.tar.bz2/; + $updates{$key} = $newFiles{$key}; + } + else + { + printf("%s is up-to-date\n", $key); + } + } + + # Download files + foreach my $key (keys %updates) + { + printf("Update %s with %s\n", $key, $updates{$key}); + if(-e $updates{$key}) + { + unlink($updates{$key}); + } + + my $cmd = sprintf("%s http://download.sourceforge.net/devkitpro/%s", $downloader, $updates{$key}); + printf(" Downloading..."); + system($cmd) and die "Failed to download $updates{$key}\n"; + printf("OK!\n"); + } + + # Install files + my %install = + ( + 'devkitPPC' => '', + 'libogc' => 'libogc', + 'libogcfat' => 'libogc', + 'wiiexamples' => 'examples/wii', + 'cubeexamples' => 'examples/gamecube', + ); + + foreach my $key (keys %updates) + { + my $cmd = sprintf("tar -xjf %s -C $dir/%s", $updates{$key}, $install{$key}); + printf("Extracting %s...", $updates{$key}); + system($cmd) and die "Failed\n"; + printf("OK!\n"); + } + + # Output update info + open(MYFILE, ">$dir/dkppc-update.ini") or die $!; + foreach my $key (keys %newVersions) + { + printf(MYFILE "[%s]\n", $key); + printf(MYFILE "Version=%s\n", $newVersions{$key}); + printf(MYFILE "File=%s\n", $newFiles{$key}); + printf(MYFILE "\n"); + } + close(MYFILE); + + # Check environment variables + printf("Checking DEVKITPRO..."); + my $env = `echo \$DEVKITPRO`; + chomp($env); + if($env ne "$dir") + { + printf("Please set DEVKITPRO in your environment as $dir\n"); + } + else + { + printf("OK!\n"); + } + + printf("Checking DEVKITPPC..."); + $env = `echo \$DEVKITPPC`; + chomp($env); + if($env ne "$dir/devkitPPC") + { + printf("Please set DEVKITPPC in your environment as \${DEVKITPRO}/devkitPPC\n"); + } + else + { + printf("OK!\n"); + } + + exit(0); diff --git a/other/devkitProUpdatePPCr29.ini b/other/devkitProUpdatePPCr29.ini new file mode 100644 index 0000000..da88c98 --- /dev/null +++ b/other/devkitProUpdatePPCr29.ini @@ -0,0 +1,147 @@ +[devkitProUpdate] +Build=46 +URL=http://downloads.sourceforge.net/devkitpro +Filename=devkitProUpdater-1.6.0.exe + +[msys] +Version=1.0.17-1 +File=msys-1.0.17-1.exe +Size=118660 + +[devkitARM] +Version=46 +File=devkitARM_r46-win32.exe +Size=70461 + +[devkitPPC] +Version=29-1 +File=devkitPPC_r29-1-win32.exe +Size=65356 + +[devkitPSP] +Version=16-1 +File=devkitPSP_r16-1-win32.exe +Size=70915 + +[pspdoc] +Version=20051113 +File=pspsdk-doc-20051113.tar.bz2 +Size=9344 + +[libgba] +Version=0.5.0 +File=libgba-0.5.0.tar.bz2 +Size=268 + +[libgbafat] +Version=1.1.0 +File=libfat-gba-1.1.0.tar.bz2 +Size=241 + +[maxmodgba] +Version=1.0.10 +File=maxmod-gba-1.0.10.tar.bz2 +Size= + +[libnds] +Version=1.6.2 +File=libnds-1.6.2.tar.bz2 +Size=470 + +[libndsfat] +Version=1.1.0 +File=libfat-nds-1.1.0.tar.bz2 +Size=272 + +[maxmodds] +Version=1.0.10 +File=maxmod-nds-1.0.10.tar.bz2 +Size= + +[dswifi] +Version=0.4.0 +File=dswifi-0.4.0.tar.bz2 +Size=496 + +[libctru] +Version=1.2.1 +File=libctru-1.2.1.tar.bz2 +Size=371 + +[citro3d] +Version=1.2.0 +File=citro3d-1.2.0.tar.bz2 +Size=371 + +[libmirko] +Version=0.9.7 +File=libmirko-0.9.7.tar.bz2 +Size=1056 + +[libogc] +Version=1.8.16 +File=libogc-1.8.16.tar.bz2 +Size=2748 + +[libogcfat] +Version=1.1.0 +File=libfat-ogc-1.1.0.tar.bz2 +Size=481 + +[pnotepad] +Version=2.0.8.718 +File=pn2.0.8.718.zip +Size=4958 + +[insight] +Version=7.3.50.20110803 +File=insight-7.3.50.20110803-cvs.exe +Size=32932 + +[ndsexamples] +Version=20170124 +File=nds-examples-20170124.tar.bz2 +Size=1191 + +[defaultarm7] +Version=0.7.1 +File=default_arm7-0.7.1.tar.bz2 +Size=9 + +[filesystem] +Version=0.9.13-1 +File=libfilesystem-0.9.13-1.tar.bz2 +Size=9 + +[gbaexamples] +Version=20170228 +File=gba-examples-20170228.tar.bz2 +Size=1019 + +[gp32examples] +Version=20051021 +File=gp32-examples-20051021.tar.bz2 +Size=732 + +[cubeexamples] +Version=20170228 +File=gamecube-examples-20170228.tar.bz2 +Size=198 + +[wiiexamples] +Version=20170228 +File=wii-examples-20170228.tar.bz2 +Size=93 + +[3dsexamples] +Version=20170226 +File=3ds-examples-20170226.tar.bz2 +Size=93 + +[gcube] +Version=0.4.0 +File=gcube-0.4.0-win32.tar.bz2 +Size=1234 + +[Settings] +RTL=0