diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2b1e5cd --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ +dist/HBF0.vWii.wad +dist/HBF0.wad +dist/HomebrewFilter-Standalone-rev*.tar.bz2 +dist/HomebrewFilter-rev*.tar.bz2 +dist/HomebrewFilter-vWii-Standalone-rev*.tar.bz2 +dist/HomebrewFilter-vWii-rev*.tar.bz2 +dist/HomebrewFilter.Standalone/boot.dol +dist/HomebrewFilter.vWii.Standalone/boot.dol +dist/HomebrewFilter.vWii/boot.dol +dist/HomebrewFilter/boot.dol +tools/common-key.bin diff --git a/AUTHORS b/AUTHORS index c7ee9e9..18a3125 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1,2 +1,2 @@ 2010 - 2011 hamachi-mp -2011 - 2012 Nano +2011 - 2016 Nano diff --git a/BUGS b/BUGS index 4408bcd..cba7f46 100644 --- a/BUGS +++ b/BUGS @@ -1,5 +1,5 @@ Report bugs to: -a) nano@tuxfamily.org +a) nano [AT] jpberlin [DOT] de b) In the '[Wii] HomebreFilter' Thread over at: http://forum.wii-homebrew.com/board42-kreativitaet/development/ diff --git a/Makefile b/Makefile index 7637f0a..0020609 100644 --- a/Makefile +++ b/Makefile @@ -1,17 +1,17 @@ all: - @echo either use "make dist" or "make dist_vwii" + @echo either use "make full_dist", "make dist_wii" or "make dist_vwii" REV=$(shell grep define svnrev/svnrev.c | gawk '{print $$3}') -full_dist: dist dist_vwii pack_forwarder +full_dist: dist_wii dist_vwii pack_forwarder -dist: compile_installer compile_stboot - @tar cfj HomebrewFilter-rev$(REV).tar.bz2 HomebrewFilter/ - @tar cfj HomebrewFilter-Standalone-rev$(REV).tar.bz2 HomebrewFilter.Standalone/ +dist_wii: compile_installer compile_stboot + @tar cfj dist/HomebrewFilter-rev$(REV).tar.bz2 dist/HomebrewFilter/ + @tar cfj dist/HomebrewFilter-Standalone-rev$(REV).tar.bz2 dist/HomebrewFilter.Standalone/ dist_vwii: compile_installer_vwii compile_stboot_vwii - @tar cfj HomebrewFilter-vWii-rev$(REV).tar.bz2 HomebrewFilter.vWii/ - @tar cfj HomebrewFilter-vWii-Standalone-rev$(REV).tar.bz2 HomebrewFilter.vWii.Standalone/ + @tar cfj dist/HomebrewFilter-vWii-rev$(REV).tar.bz2 dist/HomebrewFilter.vWii/ + @tar cfj dist/HomebrewFilter-vWii-Standalone-rev$(REV).tar.bz2 dist/HomebrewFilter.vWii.Standalone/ compile_forwarder: @make -C forwarder @@ -19,13 +19,13 @@ compile_forwarder: @cp forwarder/forwarder.dol forwarder/wad.vwii/00000001.app pack_forwarder: compile_forwarder - @tools/WadMii.exe -input "Z:$(PWD)\forwarder\wad" -output "Z:$(PWD)\HBF0.wad" || wine tools/WadMii.exe -input "Z:$(PWD)\forwarder\wad" -output "Z:$(PWD)\HBF0.wad" - @tools/WadMii.exe -input "Z:$(PWD)\forwarder\wad.vwii" -output "Z:$(PWD)\HBF0.vWii.wad" || wine tools/WadMii.exe -input "Z:$(PWD)\forwarder\wad" -output "Z:$(PWD)\HBF0.vWii.wad" + @wine tools/WadMii.exe -input "Z:$(PWD)\forwarder\wad" -output "Z:$(PWD)\dist\HBF0.wad" + @wine tools/WadMii.exe -input "Z:$(PWD)\forwarder\wad" -output "Z:$(PWD)\dist\HBF0.vWii.wad" distclean: clean - @rm -f HomebrewFilter*/boot.dol - @rm -f HomebrewFilter*.tar.bz2 - @rm -f HBF0*.wad + @rm -f dist/HomebrewFilter*/boot.dol + @rm -f dist/HomebrewFilter*.tar.bz2 + @rm -f dist/HBF0*.wad clean: @make -C main clean @@ -35,44 +35,40 @@ clean: @make -C forwarder clean @make -C libruntimeiospatch clean -clean_vwii: - @make -C main clean - @make -C boot clean - @make -C installer clean - nand_loader: @make -C nand-loader libruntimeiospatch: @make -C libruntimeiospatch -compile_stboot: clean +compile_stboot: @echo "============================" @echo "== HBF Standalone for Wii ==" @echo "============================" - @rm -f HomebrewFilter.Standalone/boot.dol - @make -C main clean + @rm -f dist/HomebrewFilter.Standalone/boot.dol + @make clean @XFLAGS="-DSTBOOT" make -C main @cp main/hbf.dol boot/source/hbf.dol @make -C boot - @cp boot/hbf_boot.dol HomebrewFilter.Standalone/boot.dol + @cp boot/hbf_boot.dol dist/HomebrewFilter.Standalone/boot.dol -compile_stboot_vwii: clean_vwii +compile_stboot_vwii: @echo "=============================" @echo "== HBF Standalone for vWii ==" @echo "=============================" - @rm -f HomebrewFilter.vWii.Standalone/boot.dol - @make -C main clean + @rm -f dist/HomebrewFilter.vWii.Standalone/boot.dol + @make clean @XFLAGS="-DSTBOOTVWII -DVWII" make -C main @cp main/hbf.dol boot/source/hbf.dol @make -C boot - @cp boot/hbf_boot.dol HomebrewFilter.vWii.Standalone/boot.dol + @cp boot/hbf_boot.dol dist/HomebrewFilter.vWii.Standalone/boot.dol -compile_hbf: clean +compile_hbf: @echo "===========================" @echo "== HBF Installer for Wii ==" @echo "===========================" - @rm -f HomebrewFilter/boot.dol + @rm -f dist/HomebrewFilter/boot.dol + @make clean @make -C main @cp main/hbf.dol boot/source/hbf.dol @@ -81,15 +77,16 @@ compile_boot: compile_hbf @cp boot/hbf_boot.dol installer/wad/00000001.app compile_installer: compile_boot - @tools/WadMii.exe -input "Z:$(PWD)\installer\wad" -output "Z:$(PWD)\installer\data\install.wad" || wine tools/WadMii.exe -input "Z:$(PWD)\installer\wad" -output "Z:$(PWD)\installer\data\install.wad" + @wine tools/WadMii.exe -input "Z:$(PWD)\installer\wad" -output "Z:$(PWD)\installer\data\install.wad" @make -C installer - @cp installer/installer.dol HomebrewFilter/boot.dol + @cp installer/installer.dol dist/HomebrewFilter/boot.dol -compile_hbf_vwii: clean_vwii +compile_hbf_vwii: @echo "============================" @echo "== HBF Installer for vWii ==" @echo "============================" - @rm -f HomebrewFilter.vWii/boot.dol + @rm -f dist/HomebrewFilter.vWii/boot.dol + @make clean @XFLAGS="-DVWII" make -C main @cp main/hbf.dol boot/source/hbf.dol @@ -98,6 +95,6 @@ compile_boot_vwii: compile_hbf_vwii @cp boot/hbf_boot.dol installer/wad.vwii/00000002.app compile_installer_vwii: compile_boot_vwii - @tools/WadMii.exe -input "Z:$(PWD)\installer\wad.vwii" -output "Z:$(PWD)\installer\data\install.wad" || wine tools/WadMii.exe -input "Z:$(PWD)\installer\wad.vwii" -output "Z:$(PWD)\installer\data\install.wad" + @wine tools/WadMii.exe -input "Z:$(PWD)\installer\wad.vwii" -output "Z:$(PWD)\installer\data\install.wad" @make -C installer - @cp installer/installer.dol HomebrewFilter.vWii/boot.dol + @cp installer/installer.dol dist/HomebrewFilter.vWii/boot.dol diff --git a/HomebrewFilter.Standalone/icon.png b/dist/HomebrewFilter.Standalone/icon.png similarity index 100% rename from HomebrewFilter.Standalone/icon.png rename to dist/HomebrewFilter.Standalone/icon.png diff --git a/HomebrewFilter.Standalone/meta.xml b/dist/HomebrewFilter.Standalone/meta.xml similarity index 91% rename from HomebrewFilter.Standalone/meta.xml rename to dist/HomebrewFilter.Standalone/meta.xml index 30ac405..8e567ed 100644 --- a/HomebrewFilter.Standalone/meta.xml +++ b/dist/HomebrewFilter.Standalone/meta.xml @@ -2,7 +2,7 @@ HomebrewFilter (Standalone) Nano - rev42 + rev47 HBF (Standalone) The HomebrewFilter (Standalone) diff --git a/HomebrewFilter.vWii.Standalone/icon.png b/dist/HomebrewFilter.vWii.Standalone/icon.png similarity index 100% rename from HomebrewFilter.vWii.Standalone/icon.png rename to dist/HomebrewFilter.vWii.Standalone/icon.png diff --git a/HomebrewFilter.vWii.Standalone/meta.xml b/dist/HomebrewFilter.vWii.Standalone/meta.xml similarity index 91% rename from HomebrewFilter.vWii.Standalone/meta.xml rename to dist/HomebrewFilter.vWii.Standalone/meta.xml index f932096..b838afa 100644 --- a/HomebrewFilter.vWii.Standalone/meta.xml +++ b/dist/HomebrewFilter.vWii.Standalone/meta.xml @@ -2,7 +2,7 @@ HomebrewFilter vWii (Standalone) Nano - rev42 + rev47 HBF vWii (Standalone) Standalone HomebrewFilter for vWii diff --git a/HomebrewFilter.vWii/icon.png b/dist/HomebrewFilter.vWii/icon.png similarity index 100% rename from HomebrewFilter.vWii/icon.png rename to dist/HomebrewFilter.vWii/icon.png diff --git a/HomebrewFilter.vWii/meta.xml b/dist/HomebrewFilter.vWii/meta.xml similarity index 91% rename from HomebrewFilter.vWii/meta.xml rename to dist/HomebrewFilter.vWii/meta.xml index cdb0839..964391c 100644 --- a/HomebrewFilter.vWii/meta.xml +++ b/dist/HomebrewFilter.vWii/meta.xml @@ -2,7 +2,7 @@ HomebrewFilter vWii (Installer) Nano - rev42 + rev47 HBF vWii (Installer) Installs The HomebrewFilter on vWii diff --git a/HomebrewFilter/icon.png b/dist/HomebrewFilter/icon.png similarity index 100% rename from HomebrewFilter/icon.png rename to dist/HomebrewFilter/icon.png diff --git a/HomebrewFilter/meta.xml b/dist/HomebrewFilter/meta.xml similarity index 91% rename from HomebrewFilter/meta.xml rename to dist/HomebrewFilter/meta.xml index 7b6783c..c8f3197 100644 --- a/HomebrewFilter/meta.xml +++ b/dist/HomebrewFilter/meta.xml @@ -2,7 +2,7 @@ HomebrewFilter (Installer) Nano - rev42 + rev47 HBF (Installer) Installs The HomebrewFilter on Wii diff --git a/forwarder/wad.vwii/00000001.app b/forwarder/wad.vwii/00000001.app index 3ae4c4d..888ddb6 100644 Binary files a/forwarder/wad.vwii/00000001.app and b/forwarder/wad.vwii/00000001.app differ diff --git a/forwarder/wad/00000001.app b/forwarder/wad/00000001.app index 3ae4c4d..888ddb6 100644 Binary files a/forwarder/wad/00000001.app and b/forwarder/wad/00000001.app differ diff --git a/forwarder/wad/0001000148424630.tmd b/forwarder/wad/0001000148424630.tmd index 4bcd2d0..58383ec 100644 Binary files a/forwarder/wad/0001000148424630.tmd and b/forwarder/wad/0001000148424630.tmd differ diff --git a/installer/Makefile b/installer/Makefile index 4c3548d..c8f3770 100644 --- a/installer/Makefile +++ b/installer/Makefile @@ -29,12 +29,12 @@ INCLUDES := CFLAGS = -g -O2 -Wall $(MACHDEP) $(INCLUDE) CXXFLAGS = $(CFLAGS) -LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map +LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map,-wrap,wiiuse_register #--------------------------------------------------------------------------------- # any extra libraries we wish to link with the project #--------------------------------------------------------------------------------- -LIBS := -lwiiuse -lbte -logc -lm -lruntimeiospatch +LIBS := -lwiiuse -lwupc -lbte -logc -lm -lruntimeiospatch #--------------------------------------------------------------------------------- # list of directories containing libraries, this must be the top level containing diff --git a/installer/source/main.cpp b/installer/source/main.cpp index 0a58428..067d93e 100644 --- a/installer/source/main.cpp +++ b/installer/source/main.cpp @@ -1,6 +1,7 @@ #include #include +#include #include #include "menu.h" @@ -16,8 +17,9 @@ int main(int argc, char **argv) { VIDEO_Init(); Video_SetMode(); - WPAD_Init(); PAD_Init(); + WUPC_Init(); + WPAD_Init(); if(AHBPROT_DISABLED) IosPatch_RUNTIME(true, false, false, true); diff --git a/installer/source/menu.cpp b/installer/source/menu.cpp index 3b5f5c0..9d80e88 100644 --- a/installer/source/menu.cpp +++ b/installer/source/menu.cpp @@ -5,6 +5,7 @@ #include #include #include +#include #include "getios.h" #include "menu.h" @@ -35,15 +36,15 @@ void show_menu_head() { Con_FgColor(6, 1); printf("\x1b[%i;%iH", startpos_x, startpos_y); - printf("HBF installer v0.4"); + printf("HBF installer v0.5"); Con_FgColor(7, 1); - printf("\t\t\t\t\t(C) 2011"); + printf("\t\t\t\t\t(C) 2011 "); Con_FgColor(6, 1); printf(" hamachi-mp"); Con_FgColor(7, 1); - printf("\n\t\t\t\t\t\t\t\t\t\t\t\t(C) 2012"); + printf("\n\t\t\t\t\t\t\t\t\t\t\t\t(C) 2012, 2016"); Con_FgColor(6, 1); printf(" Nano & Obcd"); } @@ -164,11 +165,13 @@ int menu_main(int scrollpos) bool scroll = true; while(1) { + WUPC_UpdateButtonStats(); WPAD_ScanPads(); PAD_ScanPads(); if((WPAD_ButtonsDown(0) & (WPAD_BUTTON_DOWN | WPAD_CLASSIC_BUTTON_DOWN) - || (PAD_ButtonsDown(0) & PAD_BUTTON_DOWN)) && scrollpos < (signed)text1.size() -1) + || (PAD_ButtonsDown(0) & PAD_BUTTON_DOWN) + || (WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_DOWN)) && scrollpos < (signed)text1.size() -1) { scrollpos++; while(text1[scrollpos] == "") @@ -180,7 +183,8 @@ int menu_main(int scrollpos) Pad_unpressed(); } else if((WPAD_ButtonsDown(0) & (WPAD_BUTTON_UP | WPAD_CLASSIC_BUTTON_UP) - || (PAD_ButtonsDown(0) & PAD_BUTTON_UP)) && scrollpos != 0) + || (PAD_ButtonsDown(0) & PAD_BUTTON_UP) + || (WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_UP)) && scrollpos != 0) { scrollpos--; while(text1[scrollpos] == "") @@ -206,7 +210,9 @@ int menu_main(int scrollpos) scroll = false; } - if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A) || PAD_ButtonsDown(0) & PAD_BUTTON_A) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A) + || PAD_ButtonsDown(0) & PAD_BUTTON_A + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_A) { menu_main_choice = scrollpos; switch(scrollpos) @@ -254,11 +260,13 @@ int menu_install_uninstall(int install) bool scroll = true; while(1) { + WUPC_UpdateButtonStats(); WPAD_ScanPads(); PAD_ScanPads(); if((WPAD_ButtonsDown(0) & (WPAD_BUTTON_DOWN | WPAD_CLASSIC_BUTTON_DOWN) - || (PAD_ButtonsDown(0) & PAD_BUTTON_DOWN)) && scrollpos < (signed)text2.size() -1) + || (PAD_ButtonsDown(0) & PAD_BUTTON_DOWN) + || (WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_DOWN)) && scrollpos < (signed)text2.size() -1) { scrollpos++; scroll = true; @@ -267,7 +275,8 @@ int menu_install_uninstall(int install) Pad_unpressed(); } else if((WPAD_ButtonsDown(0) & (WPAD_BUTTON_UP | WPAD_CLASSIC_BUTTON_UP) - || (PAD_ButtonsDown(0) & PAD_BUTTON_UP)) && scrollpos != 0) + || (PAD_ButtonsDown(0) & PAD_BUTTON_UP) + || (WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_UP)) && scrollpos != 0) { scrollpos--; scroll = true; @@ -290,7 +299,9 @@ int menu_install_uninstall(int install) scroll = false; } - if( WPAD_ButtonsDown(0) & (WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A) || PAD_ButtonsDown(0) & PAD_BUTTON_A ) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A) + || PAD_ButtonsDown(0) & PAD_BUTTON_A + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_A) { switch(scrollpos) { @@ -363,10 +374,13 @@ int menu_install() while(1) { + WUPC_UpdateButtonStats(); WPAD_ScanPads(); PAD_ScanPads(); - if( WPAD_ButtonsDown(0) & (WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A) || PAD_ButtonsDown(0) & PAD_BUTTON_A ) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A) + || PAD_ButtonsDown(0) & PAD_BUTTON_A + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_A) return MENU_MAIN; } } @@ -430,9 +444,12 @@ int menu_reinstall() while(1) { + WUPC_UpdateButtonStats(); WPAD_ScanPads(); PAD_ScanPads(); - if( WPAD_ButtonsDown(0) & (WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A) || PAD_ButtonsDown(0) & PAD_BUTTON_A ) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A) + || PAD_ButtonsDown(0) & PAD_BUTTON_A + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_A) return MENU_MAIN; } @@ -455,9 +472,12 @@ int menu_uninstall() while(1) { + WUPC_UpdateButtonStats(); WPAD_ScanPads(); PAD_ScanPads(); - if( WPAD_ButtonsDown(0) & (WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A) || PAD_ButtonsDown(0) & PAD_BUTTON_A ) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A) + || PAD_ButtonsDown(0) & PAD_BUTTON_A + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_A) return MENU_MAIN; } } @@ -480,10 +500,13 @@ int menu_copyright() while(1) { + WUPC_UpdateButtonStats(); WPAD_ScanPads(); PAD_ScanPads(); - if( WPAD_ButtonsDown(0) & (WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A) || PAD_ButtonsDown(0) & PAD_BUTTON_A ) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A) + || PAD_ButtonsDown(0) & PAD_BUTTON_A + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_A) return MENU_MAIN; } } diff --git a/installer/wad.vwii/0001000154484246.tmd b/installer/wad.vwii/0001000154484246.tmd index 25a678d..aaa85d0 100644 Binary files a/installer/wad.vwii/0001000154484246.tmd and b/installer/wad.vwii/0001000154484246.tmd differ diff --git a/installer/wad/00000002.app b/installer/wad/00000002.app index c3773ef..6bd104b 100644 Binary files a/installer/wad/00000002.app and b/installer/wad/00000002.app differ diff --git a/installer/wad/0001000154484246.tik b/installer/wad/0001000154484246.tik index 129cc4e..85c1706 100644 Binary files a/installer/wad/0001000154484246.tik and b/installer/wad/0001000154484246.tik differ diff --git a/installer/wad/0001000154484246.tmd b/installer/wad/0001000154484246.tmd index 010c75f..7948319 100644 Binary files a/installer/wad/0001000154484246.tmd and b/installer/wad/0001000154484246.tmd differ diff --git a/installer/wad/0001000154484246.trailer b/installer/wad/0001000154484246.trailer index 1586896..c304100 100644 Binary files a/installer/wad/0001000154484246.trailer and b/installer/wad/0001000154484246.trailer differ diff --git a/libruntimeiospatch/API b/libruntimeiospatch/API index a4f5074..7f5696b 100644 --- a/libruntimeiospatch/API +++ b/libruntimeiospatch/API @@ -111,6 +111,7 @@ Wii: * ES SetIdentify * Hash Check (aka Trucha) * New Hash Check (aka New Trucha) + * SSL patches Sciifii: * MEM2 Prot diff --git a/libruntimeiospatch/CHANGES b/libruntimeiospatch/CHANGES index 67ec321..40fa40e 100644 --- a/libruntimeiospatch/CHANGES +++ b/libruntimeiospatch/CHANGES @@ -1,5 +1,14 @@ +1.5.3: +* changed layout of debug text to ensure it's always visible +* added colors to debug text + - cyan: headings + - green: patch succeeded + - red: patch failed + 1.5.2: -* added SSL module patches made by FIX94 to fix some certificate errors that occur when attempting to connect to a host using a secure connection (DarkMatterCore) +* added SSL module patches made by FIX94 to fix some certificate + errors that occur when attempting to connect to a host using a + secure connection (DarkMatterCore) 1.5.1: * code clean-up (JoostinOnline) @@ -7,7 +16,9 @@ * misc minor changes (JoostinOnline) 1.5: -* add ISFS_SetAttr() patches. (megazig) Forces the ISFS_SetAttr() function to continue instead of returning -102 when you're trying to change the UID/GID of a file. +* add ISFS_SetAttr() patches. (megazig) + Forces the ISFS_SetAttr() function to continue instead of + returning -102 when you're trying to change the UID/GID of a file. 1.4: * fix value for hash_old (spotted by DarkMatterCore) diff --git a/libruntimeiospatch/debian/changelog b/libruntimeiospatch/debian/changelog new file mode 100644 index 0000000..3bb7b58 --- /dev/null +++ b/libruntimeiospatch/debian/changelog @@ -0,0 +1,17 @@ +libruntimeiospatch (1.5.3-1nano) unstable; urgency=low + + * New upstream release + + -- Christopher Roy Bratusek Wed, 17 Aug 2016 09:51:33 +0200 + +libruntimeiospatch (1.5.2-1nano) unstable; urgency=low + + * New upstream release + + -- Christopher Roy Bratusek Sat, 11 Jul 2015 18:35:38 +0200 + +libruntimeiospatch (1.5.1-1nano) unstable; urgency=low + + * Initial release + + -- Christopher Roy Bratusek Sun, 19 Jan 2014 19:00:03 +0100 diff --git a/libruntimeiospatch/debian/compat b/libruntimeiospatch/debian/compat new file mode 100644 index 0000000..ec63514 --- /dev/null +++ b/libruntimeiospatch/debian/compat @@ -0,0 +1 @@ +9 diff --git a/libruntimeiospatch/debian/control b/libruntimeiospatch/debian/control new file mode 100644 index 0000000..206f14f --- /dev/null +++ b/libruntimeiospatch/debian/control @@ -0,0 +1,14 @@ +Source: libruntimeiospatch +Section: devel +Priority: optional +Maintainer: Christopher Roy Bratusek +Build-Depends: debhelper (>= 8.0.0), devkitppc-amd64 | devkitppc-i686, libogc +Standards-Version: 3.9.4 +Homepage: http://www.nanolx.org/homebrew/libruntimeiospatch + +Package: libruntimeiospatch +Architecture: all +Depends: devkitppc-amd64 | devkitppc-i686, libogc +Conflicts: libogc-runtimeiospatch +Description: Wii/vWii development library for homebrew + A library providing necessary functions for patching IOS at runtime using HW_AHBPROT. diff --git a/libruntimeiospatch/debian/copyright b/libruntimeiospatch/debian/copyright new file mode 100644 index 0000000..62d200b --- /dev/null +++ b/libruntimeiospatch/debian/copyright @@ -0,0 +1,32 @@ +Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: libruntimeiospatch +Source: http://www.nanolx.org/homebrew/libruntimeiospatch + +Files: * +Copyright: 2010 Joseph Jordan + 2012-2013 damysteryman + 2012-2013 Christopher Bratusek + 2013 DarkMatterCore + 2014 megazig +License: GPL-2.0+ + +Files: debian/* +Copyright: 2014 Christopher Roy Bratusek +License: GPL-2.0+ + +License: GPL-2.0+ + This package 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 2 of the License, or + (at your option) any later version. + . + This package 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 + . + On Debian systems, the complete text of the GNU General + Public License version 2 can be found in "/usr/share/common-licenses/GPL-2". \ No newline at end of file diff --git a/libruntimeiospatch/debian/docs b/libruntimeiospatch/debian/docs new file mode 100644 index 0000000..e845566 --- /dev/null +++ b/libruntimeiospatch/debian/docs @@ -0,0 +1 @@ +README diff --git a/libruntimeiospatch/debian/rules b/libruntimeiospatch/debian/rules new file mode 100755 index 0000000..f3b756a --- /dev/null +++ b/libruntimeiospatch/debian/rules @@ -0,0 +1,13 @@ +#!/usr/bin/make -f +# -*- makefile -*- + +export DH_VERBOSE=1 + +%: + dh $@ + +override_dh_auto_install: + mkdir -p $(CURDIR)/debian/libruntimeiospatch/opt/devkitpro/libogc/lib/wii + mkdir -p $(CURDIR)/debian/libruntimeiospatch/opt/devkitpro/libogc/include + cp $(CURDIR)/libruntimeiospatch.a $(CURDIR)/debian/libruntimeiospatch/opt/devkitpro/libogc/lib/wii/ + cp $(CURDIR)/source/runtimeiospatch.h $(CURDIR)/debian/libruntimeiospatch/opt/devkitpro/libogc/include/ diff --git a/libruntimeiospatch/debian/source/format b/libruntimeiospatch/debian/source/format new file mode 100644 index 0000000..163aaf8 --- /dev/null +++ b/libruntimeiospatch/debian/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/libruntimeiospatch/source/runtimeiospatch.c b/libruntimeiospatch/source/runtimeiospatch.c index 2c21086..0723ff7 100644 --- a/libruntimeiospatch/source/runtimeiospatch.c +++ b/libruntimeiospatch/source/runtimeiospatch.c @@ -9,7 +9,7 @@ // Copyright (C) 2010 Joseph Jordan // Copyright (C) 2012-2013 damysteryman -// Copyright (C) 2012-2013 Christopher Bratusek +// Copyright (C) 2012-2015 Christopher Bratusek // Copyright (C) 2013 DarkMatterCore // Copyright (C) 2014 megazig // Copyright (C) 2015 FIX94 @@ -24,7 +24,12 @@ #define MEM_REG_BASE 0xd8b4000 #define MEM_PROT (MEM_REG_BASE + 0x20a) -//const u8 check_tmd_patch1[] = { 0x23, 0x01, 0x42, 0x5B }; +void TextColor(u32 color, u8 bold) +{ + /* Set foreground color */ + printf("\x1b[%u;%um", color + 30, bold); + fflush(stdout); +} static inline void disable_memory_protection(void) { write32(MEM_PROT, read32(MEM_PROT) & 0x0000FFFF); @@ -102,7 +107,10 @@ static u8 apply_patch(const char *name, const u8 *old, u32 old_size, const u8 *p u8 *ptr_start = (u8*)*((u32*)0x80003134), *ptr_end = (u8*)0x94000000; u8 found = 0; if(verbose) - printf(" Patching %-30s", name); + { + TextColor(7,1); + printf("\t\t Patching %-30s", name); + } u8 *location = NULL; while (ptr_start < (ptr_end - patch_size)) { if (!memcmp(ptr_start, old, old_size)) { @@ -120,9 +128,15 @@ static u8 apply_patch(const char *name, const u8 *old, u32 old_size, const u8 *p } if(verbose){ if (found) - printf(" patched\n"); + { + TextColor(2, 1); + printf("\t\t patched\n"); + } else - printf(" not patched\n"); + { + TextColor(1, 1); + printf("\t\t not patched\n"); + } } return found; } @@ -144,9 +158,14 @@ s32 IosPatch_RUNTIME(bool wii, bool sciifii, bool vwii, bool verbose) { if (AHBPROT_DISABLED) { disable_memory_protection(); + if(verbose) printf("\t\t\n\n\n\n\n"); if(wii) { - if(verbose) printf(">> Applying standard Wii patches:\n"); + if(verbose) + { + TextColor(6, 1); + printf("\t>> Applying standard Wii patches:\n"); + } count += apply_patch("di_readlimit", di_readlimit_old, sizeof(di_readlimit_old), di_readlimit_patch, sizeof(di_readlimit_patch), 12, verbose); count += apply_patch("isfs_permissions", isfs_permissions_old, sizeof(isfs_permissions_old), isfs_permissions_patch, sizeof(isfs_permissions_patch), 0, verbose); count += apply_patch("es_setuid", setuid_old, sizeof(setuid_old), setuid_patch, sizeof(setuid_patch), 0, verbose); @@ -162,7 +181,11 @@ s32 IosPatch_RUNTIME(bool wii, bool sciifii, bool vwii, bool verbose) { } if(sciifii) { - if(verbose) printf(">> Applying Sciifii patches:\n"); + if(verbose) + { + TextColor(6, 1); + printf("\t>> Applying Sciifii patches:\n"); + } count += apply_patch("MEM2_prot", MEM2_prot_old, sizeof(MEM2_prot_old), MEM2_prot_patch, sizeof(MEM2_prot_patch), 0, verbose); count += apply_patch("ES_OpenTitleContent1", ES_OpenTitleContent1_old, sizeof(ES_OpenTitleContent1_old), ES_OpenTitleContent1_patch, sizeof(ES_OpenTitleContent1_patch), 0, verbose); count += apply_patch("ES_OpenTitleContent2", ES_OpenTitleContent2_old, sizeof(ES_OpenTitleContent2_old), ES_OpenTitleContent2_patch, sizeof(ES_OpenTitleContent2_patch), 0, verbose); @@ -173,7 +196,11 @@ s32 IosPatch_RUNTIME(bool wii, bool sciifii, bool vwii, bool verbose) { } if(vwii) { - if(verbose) printf(">> Applying vWii patches:\n"); + if(verbose) + { + TextColor(6, 1); + printf("\t>> Applying vWii patches:\n"); + } count += apply_patch("Kill_AntiSysTitleInstallv3_pt1", Kill_AntiSysTitleInstallv3_pt1_old, sizeof(Kill_AntiSysTitleInstallv3_pt1_old), Kill_AntiSysTitleInstallv3_pt1_patch, sizeof(Kill_AntiSysTitleInstallv3_pt1_patch), 0, verbose); count += apply_patch("Kill_AntiSysTitleInstallv3_pt2", Kill_AntiSysTitleInstallv3_pt2_old, sizeof(Kill_AntiSysTitleInstallv3_pt2_old), Kill_AntiSysTitleInstallv3_pt2_patch, sizeof(Kill_AntiSysTitleInstallv3_pt2_patch), 0, verbose); count += apply_patch("Kill_AntiSysTitleInstallv3_pt3", Kill_AntiSysTitleInstallv3_pt3_old, sizeof(Kill_AntiSysTitleInstallv3_pt3_old), Kill_AntiSysTitleInstallv3_pt3_patch, sizeof(Kill_AntiSysTitleInstallv3_pt3_patch), 0, verbose); diff --git a/libruntimeiospatch/source/runtimeiospatch.h b/libruntimeiospatch/source/runtimeiospatch.h index 9245eed..0f1db38 100644 --- a/libruntimeiospatch/source/runtimeiospatch.h +++ b/libruntimeiospatch/source/runtimeiospatch.h @@ -9,7 +9,7 @@ // Copyright (C) 2010 Joseph Jordan // Copyright (C) 2012-2013 damysteryman -// Copyright (C) 2012-2013 Christopher Bratusek +// Copyright (C) 2012-2015 Christopher Bratusek // Copyright (C) 2013 DarkMatterCore // Copyright (C) 2014 megazig // Copyright (C) 2015 FIX94 @@ -20,7 +20,7 @@ /** * Version information for Libruntimeiospatch. */ -#define LIB_RUNTIMEIOSPATCH_VERSION "1.5.2" +#define LIB_RUNTIMEIOSPATCH_VERSION "1.5.3" //============================================================================== // HW_RVL header @@ -63,6 +63,7 @@ Wii: * ES SetIdentify * Hash Check (aka Trucha) * New Hash Check (aka New Trucha) + * SSL patches Sciifii: * MEM2 Prot diff --git a/main/Makefile b/main/Makefile index 116684d..3288e2d 100644 --- a/main/Makefile +++ b/main/Makefile @@ -41,14 +41,14 @@ DATA := data/fonts \ #--------------------------------------------------------------------------------- CFLAGS = -g -O2 -Wall $(MACHDEP) $(INCLUDE) $(XFLAGS) -CXXFLAGS = -save-temps -Xassembler -aln=$@.lst $(CFLAGS) -LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map -Wl,--section-start,.init=0x81330000 +CXXFLAGS = -save-temps -Xassembler -aln=$@.lst $(CFLAGS) $(XFLAGS) +LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map -Wl,--section-start,.init=0x81330000,-wrap,wiiuse_register #LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map #--------------------------------------------------------------------------------- # any extra libraries we wish to link with the project #--------------------------------------------------------------------------------- -LIBS := -ldi -lpng -lz -lfat -lntfs -lwiiuse -lbte -lasnd -logc -lfreetype -lmxml -lext2fs -lruntimeiospatch +LIBS := -ldi -lpng -lz -lfat -lntfs -lwiiuse -lwupc -lbte -lasnd -logc -lfreetype -lmxml -lext2fs -lruntimeiospatch #--------------------------------------------------------------------------------- # list of directories containing libraries, this must be the top level containing # include and lib diff --git a/main/source/Menus/menu_main.cpp b/main/source/Menus/menu_main.cpp index 9f8b85f..11a4b44 100644 --- a/main/source/Menus/menu_main.cpp +++ b/main/source/Menus/menu_main.cpp @@ -409,7 +409,7 @@ int MenuMain() // device symbol anzeigen GuiImage * viewdevice = NULL; - if((Options.device_icon == 1 || Options.device_icon == 3) && (Settings.device == "sd_usb" || Settings.device == "all")) + if(Options.device_icon == 1 || Options.device_icon == 3) { bool icon = false; if(strncmp(vechomebrew_list_choice[i].foldername.c_str(), "sd", 2) == 0) @@ -639,7 +639,9 @@ int MenuMain() if(mainWindow->GetState() != STATE_DISABLED) { // Sortieren - if(WPAD_ButtonsDown(0) & WPAD_BUTTON_1 && Settings.current_category != 0) + if((WPAD_ButtonsDown(0) & (WPAD_BUTTON_1 | WPAD_CLASSIC_BUTTON_Y) && Settings.current_category != 0) + || (WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_Y && Settings.current_category != 0) + || (PAD_ButtonsDown(0) & PAD_BUTTON_Y && Settings.current_category != 0)) { switch (sortPrompt()) { @@ -676,19 +678,10 @@ int MenuMain() if(!first) { - if (Options.sdgecko) - { - xprintf("The HomebrewFilter rev%i\n= == == == == == == == =\nSD Card Gecko initialized.\n\n", SvnRev()); - } - else if(Options.wifigecko) - { + if(Options.wifigecko) WifiGecko_Connect(); - xprintf("The HomebrewFilter rev%i\n= == == == == == == == =\nWifi Gecko connected.\n\n", SvnRev()); - } - else - { - xprintf("The HomebrewFilter rev%i\n= == == == == == == == =\nUSB Gecko initialized.\n\n", SvnRev()); - } + + xprintf("The HomebrewFilter rev%i\n= == == == == == == == =\n\n", SvnRev()); first = true; } @@ -720,7 +713,10 @@ int MenuMain() menu = MENU_EXIT; // ansicht wechseln - if(((WPAD_ButtonsDown(0) & WPAD_BUTTON_2) &! (WPAD_ButtonsDown(0) & WPAD_BUTTON_1)) || normal_grid_Btn.GetState() == STATE_CLICKED) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_2 | WPAD_CLASSIC_BUTTON_X) || + WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_X || + PAD_ButtonsDown(0) & PAD_BUTTON_X || + normal_grid_Btn.GetState() == STATE_CLICKED) { Settings.current_page = 1; if(Settings.grid) @@ -732,21 +728,26 @@ int MenuMain() } // wenn A gedrckt - if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A) || PAD_ButtonsDown(0) & PAD_BUTTON_A) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A) || PAD_ButtonsDown(0) & PAD_BUTTON_A + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_A) button = "A"; // wenn B gedrckt - if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B) || PAD_ButtonsDown(0) & PAD_BUTTON_B) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B) || PAD_ButtonsDown(0) & PAD_BUTTON_B + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_B) button = "B"; // Settings - if(settings_Btn.GetState() == STATE_CLICKED) + if(settings_Btn.GetState() == STATE_CLICKED || WPAD_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_FULL_L + || PAD_ButtonsDown(0) & PAD_TRIGGER_Z || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_FULL_L) { menu = MENU_SETTINGS; } // SD, USB - else if(sd_usb_Btn.GetState() == STATE_CLICKED || Settings.sd_insert == -1 || Settings.sd_insert == 2 + else if(sd_usb_Btn.GetState() == STATE_CLICKED || WPAD_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_ZL + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_ZL + || Settings.sd_insert == -1 || Settings.sd_insert == 2 || Settings.usb_insert == -1 || Settings.usb_insert == 2 #ifndef VWII || Settings.dvd_insert == -1 || Settings.dvd_insert == 2 @@ -756,8 +757,7 @@ int MenuMain() ) { int device = -1; - if(sd_usb_Btn.GetState() == STATE_CLICKED) - device = devicePrompt(); + device = devicePrompt(); if(device == 1) Settings.device = "sd1"; @@ -772,9 +772,9 @@ int MenuMain() Settings.device = "gca"; else if(device == 6) Settings.device = "gcb"; -#endif else if(device == 7) Settings.device = "all"; +#endif if(device != -1 || Settings.sd_insert == -1 || Settings.sd_insert == 2 || Settings.usb_insert == -1 || Settings.usb_insert == 2 @@ -794,7 +794,9 @@ int MenuMain() } #ifndef VWII // Wii, GC - else if(wii_gc_Btn.GetState() == STATE_CLICKED) + else if(wii_gc_Btn.GetState() == STATE_CLICKED || + WPAD_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_ZR || + WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_ZR) { int choice = systemPrompt(); @@ -817,7 +819,8 @@ int MenuMain() #endif // Power button - else if(power_Btn.GetState() == STATE_CLICKED || WPAD_ButtonsDown(0) & (WPAD_BUTTON_HOME | WPAD_CLASSIC_BUTTON_HOME) || PAD_ButtonsDown(0) & PAD_BUTTON_START) + else if(power_Btn.GetState() == STATE_CLICKED || WPAD_ButtonsDown(0) & (WPAD_BUTTON_HOME | WPAD_CLASSIC_BUTTON_HOME) + || PAD_ButtonsDown(0) & PAD_BUTTON_START || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_HOME) { power_Btn.ResetState(); if(endPrompt() == MENU_EXIT) @@ -825,7 +828,8 @@ int MenuMain() } // Loader button - else if(loader_Btn.GetState() == STATE_CLICKED || WPAD_ButtonsDown(0) & (WPAD_BUTTON_HOME | WPAD_CLASSIC_BUTTON_HOME) || PAD_ButtonsDown(0) & PAD_BUTTON_START) + else if(loader_Btn.GetState() == STATE_CLICKED || WPAD_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_FULL_R + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_FULL_R) { loader_Btn.ResetState(); if(loaderPrompt() == MENU_EXIT) @@ -842,26 +846,34 @@ int MenuMain() // eine Seite weiter bzw zurck else if((WPAD_ButtonsDown(0) & (WPAD_BUTTON_RIGHT | WPAD_CLASSIC_BUTTON_RIGHT) && !Options.navigation) || (WPAD_ButtonsDown(0) & (WPAD_BUTTON_PLUS | WPAD_CLASSIC_BUTTON_PLUS) && Options.navigation) || + (WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_RIGHT && !Options.navigation) || + (WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_PLUS && Options.navigation) || PAD_ButtonsDown(0) & PAD_BUTTON_RIGHT || rightBtn.GetState() == STATE_CLICKED || (WPAD_ButtonsDown(0) & (WPAD_BUTTON_LEFT | WPAD_CLASSIC_BUTTON_LEFT) && !Options.navigation) || (WPAD_ButtonsDown(0) & (WPAD_BUTTON_MINUS | WPAD_CLASSIC_BUTTON_MINUS) && Options.navigation) || + (WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_LEFT && !Options.navigation) || + (WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_MINUS && Options.navigation) || PAD_ButtonsDown(0) & PAD_BUTTON_LEFT || leftBtn.GetState() == STATE_CLICKED) { // Abbrechen Seite zurck if((WPAD_ButtonsDown(0) & (WPAD_BUTTON_RIGHT | WPAD_CLASSIC_BUTTON_RIGHT) && !Options.navigation) || (WPAD_ButtonsDown(0) & (WPAD_BUTTON_PLUS | WPAD_CLASSIC_BUTTON_PLUS) && Options.navigation) || + (WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_RIGHT && !Options.navigation) || + (WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_PLUS && Options.navigation) || PAD_ButtonsDown(0) & PAD_BUTTON_RIGHT || rightBtn.GetState() == STATE_CLICKED) previous_page = false; // Abbrechen Seite weiter if((WPAD_ButtonsDown(0) & (WPAD_BUTTON_LEFT | WPAD_CLASSIC_BUTTON_LEFT) && !Options.navigation) || (WPAD_ButtonsDown(0) & (WPAD_BUTTON_MINUS | WPAD_CLASSIC_BUTTON_MINUS) && Options.navigation) || + (WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_LEFT && !Options.navigation) || + (WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_MINUS && Options.navigation) || PAD_ButtonsDown(0) & PAD_BUTTON_LEFT || leftBtn.GetState() == STATE_CLICKED) next_page = false; int page = Settings.current_page; bool change = false; - if(next_page || rightBtn.GetState() == STATE_CLICKED || (WPAD_ButtonsDown(0) & (WPAD_BUTTON_PLUS | WPAD_CLASSIC_BUTTON_PLUS) && Options.navigation)) + if(next_page || rightBtn.GetState() == STATE_CLICKED || (WPAD_ButtonsDown(0) & (WPAD_BUTTON_PLUS | WPAD_CLASSIC_BUTTON_PLUS) && Options.navigation) || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_PLUS) { rightBtn.ResetState(); Settings.current_page++; @@ -877,7 +889,7 @@ int MenuMain() change = true; } - if(previous_page || leftBtn.GetState() == STATE_CLICKED || (WPAD_ButtonsDown(0) & (WPAD_BUTTON_MINUS | WPAD_CLASSIC_BUTTON_MINUS) && Options.navigation)) + if(previous_page || leftBtn.GetState() == STATE_CLICKED || (WPAD_ButtonsDown(0) & (WPAD_BUTTON_MINUS | WPAD_CLASSIC_BUTTON_MINUS) && Options.navigation) || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_MINUS) { leftBtn.ResetState(); Settings.current_page--; @@ -955,6 +967,8 @@ int MenuMain() // eine Kategorie weiter else if((WPAD_ButtonsDown(0) & (WPAD_BUTTON_PLUS | WPAD_CLASSIC_BUTTON_PLUS) && !Options.navigation) || (WPAD_ButtonsDown(0) & (WPAD_BUTTON_RIGHT | WPAD_CLASSIC_BUTTON_RIGHT) && Options.navigation) || + (WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_PLUS && !Options.navigation) || + (WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_RIGHT && Options.navigation) || PAD_ButtonsDown(0) & PAD_TRIGGER_R || plusBtn.GetState() == STATE_CLICKED) { Next_Category(); @@ -964,6 +978,8 @@ int MenuMain() // eine Kategorie zurck else if((WPAD_ButtonsDown(0) & (WPAD_BUTTON_MINUS | WPAD_CLASSIC_BUTTON_MINUS) && !Options.navigation) || (WPAD_ButtonsDown(0) & (WPAD_BUTTON_LEFT | WPAD_CLASSIC_BUTTON_LEFT) && Options.navigation) || + (WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_MINUS && !Options.navigation) || + (WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_LEFT && Options.navigation) || PAD_ButtonsDown(0) & PAD_TRIGGER_L || minusBtn.GetState() == STATE_CLICKED) { Previous_Category(); @@ -1052,7 +1068,7 @@ int MenuMain() if(AppsBtn[i]->GetState() == STATE_CLICKED && button == "B" && !grab) { AppsBtn[i]->ResetState(); - if(Settings.current_category != 0 && strcasecmp(Settings.code,"NULL") == 0 && WPAD_ButtonsDown(0) & WPAD_BUTTON_B) + if(Settings.current_category != 0 && strcasecmp(Settings.code,"NULL") == 0 && (WPAD_ButtonsDown(0) & (WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B) || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_B)) { pointer = new GuiImageData(Theme.player_grab); grab = true; @@ -1191,7 +1207,7 @@ int MenuMain() } // wenn b losgelassen wurde - if(WPAD_ButtonsUp(0) & WPAD_BUTTON_B) + if(WPAD_ButtonsUp(0) & (WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B) || WUPC_ButtonsUp(0) & WPAD_CLASSIC_BUTTON_B) { grab = false; pointer = new GuiImageData(Theme.player_point); diff --git a/main/source/Menus/menu_settings_file.cpp b/main/source/Menus/menu_settings_file.cpp index 6a109ae..a3e3bc7 100644 --- a/main/source/Menus/menu_settings_file.cpp +++ b/main/source/Menus/menu_settings_file.cpp @@ -80,7 +80,7 @@ int MenuSettingsFile() sprintf(options.name[i++], tr("Device icon")); sprintf(options.name[i++], tr("Wiiload IOS")); sprintf(options.name[i++], tr("Wiiload IOS Reload")); - sprintf(options.name[i++], tr("SD Gecko")); + sprintf(options.name[i++], tr("SD Card Debug Log")); #ifndef VWII sprintf(options.name[i++], tr("BootMii in Boot2")); #endif @@ -150,7 +150,8 @@ int MenuSettingsFile() ret = optionBrowser.GetChangedOption(); ret2 = optionBrowser.GetClickedOption(); - if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_RIGHT | WPAD_CLASSIC_BUTTON_RIGHT) || PAD_ButtonsDown(0) & PAD_BUTTON_RIGHT) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_RIGHT | WPAD_CLASSIC_BUTTON_RIGHT) || PAD_ButtonsDown(0) & PAD_BUTTON_RIGHT + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_RIGHT) { change = 0; switch (ret) @@ -236,7 +237,8 @@ int MenuSettingsFile() optionBrowser.TriggerUpdate(); } - if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_LEFT | WPAD_CLASSIC_BUTTON_LEFT) || PAD_ButtonsDown(0) & PAD_BUTTON_LEFT) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_LEFT | WPAD_CLASSIC_BUTTON_LEFT) || PAD_ButtonsDown(0) & PAD_BUTTON_LEFT + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_LEFT) { change = 0; switch (ret) @@ -478,7 +480,8 @@ int MenuSettingsFile() optionBrowser.TriggerUpdate(); } - if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B) || PAD_ButtonsDown(0) & PAD_BUTTON_B) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B) || PAD_ButtonsDown(0) & PAD_BUTTON_B + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_B) { if(focus == 0) { diff --git a/main/source/Menus/menu_settings_font.cpp b/main/source/Menus/menu_settings_font.cpp index e331011..d39a97f 100644 --- a/main/source/Menus/menu_settings_font.cpp +++ b/main/source/Menus/menu_settings_font.cpp @@ -162,7 +162,8 @@ int MenuSettingsFont() optionBrowser.TriggerUpdate(); } - if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B) || PAD_ButtonsDown(0) & PAD_BUTTON_B) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B) || PAD_ButtonsDown(0) & PAD_BUTTON_B + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_B) { if(focus == 0) { diff --git a/main/source/Menus/menu_settings_language.cpp b/main/source/Menus/menu_settings_language.cpp index be93d4c..7b64845 100644 --- a/main/source/Menus/menu_settings_language.cpp +++ b/main/source/Menus/menu_settings_language.cpp @@ -164,7 +164,8 @@ int MenuSettingsLanguage() optionBrowser.TriggerUpdate(); } - if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B) || PAD_ButtonsDown(0) & PAD_BUTTON_B) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B) || PAD_ButtonsDown(0) & PAD_BUTTON_B + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_B) { if(focus == 0) { diff --git a/main/source/Menus/menu_settings_network.cpp b/main/source/Menus/menu_settings_network.cpp index 866fd72..125e991 100644 --- a/main/source/Menus/menu_settings_network.cpp +++ b/main/source/Menus/menu_settings_network.cpp @@ -35,7 +35,7 @@ int MenuSettingsNetwork() OptionList options; sprintf(options.name[i++], tr("Auto Connect")); - sprintf(options.name[i++], tr("Enable Wifi Gecko")); + sprintf(options.name[i++], tr("Wifi Debug Log")); sprintf(options.name[i++], tr("Update Info")); options.length = i; @@ -100,7 +100,8 @@ int MenuSettingsNetwork() ret = optionBrowser.GetChangedOption(); - if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_RIGHT | WPAD_CLASSIC_BUTTON_RIGHT) || PAD_ButtonsDown(0) & PAD_BUTTON_RIGHT) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_RIGHT | WPAD_CLASSIC_BUTTON_RIGHT) || PAD_ButtonsDown(0) & PAD_BUTTON_RIGHT + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_RIGHT) { change = 0; switch (ret) @@ -132,7 +133,8 @@ int MenuSettingsNetwork() HaltResumeGui(); } - if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_LEFT | WPAD_CLASSIC_BUTTON_LEFT) || PAD_ButtonsDown(0) & PAD_BUTTON_LEFT) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_LEFT | WPAD_CLASSIC_BUTTON_LEFT) || PAD_ButtonsDown(0) & PAD_BUTTON_LEFT + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_LEFT) { change = 0; switch (ret) @@ -189,7 +191,8 @@ int MenuSettingsNetwork() if(optionBrowser.GetClickedOption() != -1) optionBrowser.TriggerUpdate(); - if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B) || PAD_ButtonsDown(0) & PAD_BUTTON_B) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B) || PAD_ButtonsDown(0) & PAD_BUTTON_B + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_B) { if(focus == 0) { diff --git a/main/source/Menus/menu_settings_theme.cpp b/main/source/Menus/menu_settings_theme.cpp index 839409b..67ce4af 100644 --- a/main/source/Menus/menu_settings_theme.cpp +++ b/main/source/Menus/menu_settings_theme.cpp @@ -159,7 +159,8 @@ int MenuSettingsTheme() optionBrowser.TriggerUpdate(); } - if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B) || PAD_ButtonsDown(0) & PAD_BUTTON_B) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B) || PAD_ButtonsDown(0) & PAD_BUTTON_B + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_B) { if(focus == 0) { diff --git a/main/source/Network/network.cpp b/main/source/Network/network.cpp index b1b85dd..844d498 100644 --- a/main/source/Network/network.cpp +++ b/main/source/Network/network.cpp @@ -55,11 +55,11 @@ void CheckVersion(void) if(Settings.checkrev == -1) { #ifdef STBOOTVWII - struct block file = downloadfile("http://www.nanolx.org/hbf/DOL.st.vwii/revisions.st.vwii"); + struct block file = downloadfile("http://www.nanolx.org/hbf/DOL.st.vwii/revisions"); #elif VWII - struct block file = downloadfile("http://www.nanolx.org/hbf/DOL.vwii/revisions.vwii"); + struct block file = downloadfile("http://www.nanolx.org/hbf/DOL.vwii/revisions"); #elif STBOOT - struct block file = downloadfile("http://www.nanolx.org/hbf/DOL.st/revisions.st"); + struct block file = downloadfile("http://www.nanolx.org/hbf/DOL.st/revisions"); #else struct block file = downloadfile("http://www.nanolx.org/hbf/DOL/revisions"); #endif diff --git a/main/source/Network/update.cpp b/main/source/Network/update.cpp index 8c6115a..a5c7d64 100644 --- a/main/source/Network/update.cpp +++ b/main/source/Network/update.cpp @@ -14,11 +14,11 @@ string CheckNewVersions() string revs = "error"; char buffer[100]; #ifdef STBOOTVWII - sprintf(buffer, "http://www.nanolx.org/hbf/DOL.st.vwii/revisions.st.vwii"); + sprintf(buffer, "http://www.nanolx.org/hbf/DOL.st.vwii/revisions"); #elif VWII - sprintf(buffer, "http://www.nanolx.org/hbf/DOL.vwii/revisions.vwii"); + sprintf(buffer, "http://www.nanolx.org/hbf/DOL.vwii/revisions"); #elif STBOOT - sprintf(buffer, "http://www.nanolx.org/hbf/DOL.st/revisions.st"); + sprintf(buffer, "http://www.nanolx.org/hbf/DOL.st/revisions"); #else sprintf(buffer, "http://www.nanolx.org/hbf/DOL/revisions"); #endif @@ -57,7 +57,6 @@ string new_update(string rev, string filename) sprintf(url, "http://www.nanolx.org/hbf/DOL.vwii/Beta/%s", filename.c_str()); else sprintf(url, "http://www.nanolx.org/hbf/DOL.vwii/rev%s/%s", rev.c_str(), filename.c_str()); - #elif STBOOT if(rev == "Beta") sprintf(url, "http://www.nanolx.org/hbf/DOL.st/Beta/%s", filename.c_str()); diff --git a/main/source/Network/wifi_gecko.c b/main/source/Network/wifi_gecko.c index af37709..5dd9052 100644 --- a/main/source/Network/wifi_gecko.c +++ b/main/source/Network/wifi_gecko.c @@ -31,7 +31,7 @@ #include #include "xprintf.h" -#define DESTINATION_IP "192.168.1.4" +#define DESTINATION_IP "192.168.178.21" #define DESTINATION_PORT 4405 static int connection = -1; diff --git a/main/source/Prompts/prompt_add_app.cpp b/main/source/Prompts/prompt_add_app.cpp index 090b57b..7f67220 100644 --- a/main/source/Prompts/prompt_add_app.cpp +++ b/main/source/Prompts/prompt_add_app.cpp @@ -94,7 +94,8 @@ string AddApp(const char *AppName) { usleep(100); - if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_PLUS | WPAD_CLASSIC_BUTTON_PLUS) || PAD_ButtonsDown(0) & PAD_TRIGGER_R) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_PLUS | WPAD_CLASSIC_BUTTON_PLUS) || PAD_ButtonsDown(0) & PAD_TRIGGER_R + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_PLUS) { kategorieInt++; if ( kategorieInt >= (signed)AvailableCategory.categories.size() ) @@ -105,7 +106,8 @@ string AddApp(const char *AppName) HaltResumeGui(); } - if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_MINUS | WPAD_CLASSIC_BUTTON_MINUS) || PAD_ButtonsDown(0) & PAD_TRIGGER_L) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_MINUS | WPAD_CLASSIC_BUTTON_MINUS) || PAD_ButtonsDown(0) & PAD_TRIGGER_L + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_MINUS) { kategorieInt--; if ( kategorieInt < 1 ) diff --git a/main/source/Prompts/prompt_app_info.cpp b/main/source/Prompts/prompt_app_info.cpp index dbf7a5c..2f139e6 100644 --- a/main/source/Prompts/prompt_app_info.cpp +++ b/main/source/Prompts/prompt_app_info.cpp @@ -59,7 +59,7 @@ AppInfo(const char *title, string dir, u8* icon) GuiImage * viewdevice = NULL; - if((Options.device_icon == 2 || Options.device_icon == 3) && (Settings.device == "sd_usb" || Settings.device == "all")) + if(Options.device_icon == 2 || Options.device_icon == 3) { bool icon = false; if(strncmp(dir.c_str(), "sd", 2) == 0) @@ -283,7 +283,8 @@ AppInfo(const char *title, string dir, u8* icon) { usleep(100); - if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_UP | WPAD_CLASSIC_BUTTON_UP) || PAD_ButtonsDown(0) & PAD_BUTTON_UP) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_UP | WPAD_CLASSIC_BUTTON_UP) || PAD_ButtonsDown(0) & PAD_BUTTON_UP + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_UP) { int z = description.text_up(); @@ -294,7 +295,8 @@ AppInfo(const char *title, string dir, u8* icon) HaltResumeGui(); } - if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_DOWN | WPAD_CLASSIC_BUTTON_DOWN) || PAD_ButtonsDown(0) & PAD_BUTTON_DOWN) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_DOWN | WPAD_CLASSIC_BUTTON_DOWN) || PAD_ButtonsDown(0) & PAD_BUTTON_DOWN + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_DOWN) { int z = description.text_down(number); @@ -305,14 +307,16 @@ AppInfo(const char *title, string dir, u8* icon) HaltResumeGui(); } - if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_PLUS | WPAD_CLASSIC_BUTTON_PLUS) || PAD_ButtonsDown(0) & PAD_TRIGGER_R) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_PLUS | WPAD_CLASSIC_BUTTON_PLUS) || PAD_ButtonsDown(0) & PAD_TRIGGER_R + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_PLUS) { sprintf(SelectIos, tr("Start with IOS %i (-/+)"), nextIos()); SelectIosTxt.SetText(SelectIos); HaltResumeGui(); } - if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_MINUS | WPAD_CLASSIC_BUTTON_MINUS) || PAD_ButtonsDown(0) & PAD_TRIGGER_L) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_MINUS | WPAD_CLASSIC_BUTTON_MINUS) || PAD_ButtonsDown(0) & PAD_TRIGGER_L + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_MINUS) { sprintf(SelectIos, tr("Start with IOS %i (-/+)"), previousIos()); SelectIosTxt.SetText(SelectIos); diff --git a/main/source/Prompts/prompt_device.cpp b/main/source/Prompts/prompt_device.cpp index 9ff6af0..1d2cedb 100644 --- a/main/source/Prompts/prompt_device.cpp +++ b/main/source/Prompts/prompt_device.cpp @@ -22,7 +22,11 @@ int devicePrompt() bool stop = false; int device = -1; +#ifndef VWII GuiWindow promptWindow(328,64); +#else + GuiWindow promptWindow(144,64); +#endif promptWindow.SetAlignment(ALIGN_CENTRE, ALIGN_TOP); promptWindow.SetPosition(-135, 280); GuiTrigger trigA; @@ -31,7 +35,11 @@ int devicePrompt() trigB.SetButtonOnlyTrigger(-1, WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B, PAD_BUTTON_B); // Hintergrund +#ifndef VWII GuiImageData dialogBox(Theme.choice_large); +#else + GuiImageData dialogBox(Theme.choice); +#endif GuiImage dialogBoxImg(&dialogBox); // button data @@ -48,9 +56,9 @@ int devicePrompt() GuiImageData gca_BtnImgDataOver(Theme.gca_active); GuiImageData gcb_BtnImgData(Theme.gcb_inactive); GuiImageData gcb_BtnImgDataOver(Theme.gcb_active); -#endif GuiImageData all_BtnImgData(Theme.all_inactive); GuiImageData all_BtnImgDataOver(Theme.all_active); +#endif // button GuiImage sd_BtnImg(&sd_BtnImgData); @@ -60,8 +68,8 @@ int devicePrompt() GuiImage dvd_BtnImg(&dvd_BtnImgData); GuiImage gca_BtnImg(&gca_BtnImgData); GuiImage gcb_BtnImg(&gca_BtnImgData); -#endif GuiImage all_BtnImg(&all_BtnImgData); +#endif // button over GuiImage sd_BtnImgOver(&sd_BtnImgDataOver); @@ -71,8 +79,8 @@ int devicePrompt() GuiImage dvd_BtnImgOver(&dvd_BtnImgDataOver); GuiImage gca_BtnImgOver(&gca_BtnImgDataOver); GuiImage gcb_BtnImgOver(&gca_BtnImgDataOver); -#endif GuiImage all_BtnImgOver(&all_BtnImgDataOver); +#endif GuiButton sd_Btn(sd_BtnImgData.GetWidth(), sd_BtnImgData.GetHeight()); sd_Btn.SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE); @@ -115,14 +123,14 @@ int devicePrompt() gcb_Btn.SetImage(&gcb_BtnImg); gcb_Btn.SetImageOver(&gcb_BtnImgOver); gcb_Btn.SetTrigger(&trigA); -#endif + GuiButton all_Btn(all_BtnImgData.GetWidth(), all_BtnImgData.GetHeight()); all_Btn.SetAlignment(ALIGN_RIGHT, ALIGN_MIDDLE); all_Btn.SetPosition(-8, 0); all_Btn.SetImage(&all_BtnImg); all_Btn.SetImageOver(&all_BtnImgOver); all_Btn.SetTrigger(&trigA); - +#endif GuiButton back(0, 0); back.SetTrigger(&trigB); @@ -134,8 +142,8 @@ int devicePrompt() promptWindow.Append(&dvd_Btn); promptWindow.Append(&gca_Btn); promptWindow.Append(&gcb_Btn); -#endif promptWindow.Append(&all_Btn); +#endif promptWindow.Append(&back); HaltGui(); @@ -183,13 +191,13 @@ int devicePrompt() device = 6; stop = true; } -#endif + if(all_Btn.GetState() == STATE_CLICKED) { device = 7; stop = true; } - +#endif if(back.GetState() == STATE_CLICKED) stop = true; } diff --git a/main/source/Prompts/prompt_edit.cpp b/main/source/Prompts/prompt_edit.cpp index 5aeae34..f2f4588 100644 --- a/main/source/Prompts/prompt_edit.cpp +++ b/main/source/Prompts/prompt_edit.cpp @@ -121,7 +121,8 @@ MetaEdit(string dir) { usleep(100); - if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_UP | WPAD_CLASSIC_BUTTON_UP) || PAD_ButtonsDown(0) & PAD_BUTTON_UP) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_UP | WPAD_CLASSIC_BUTTON_UP) || PAD_ButtonsDown(0) & PAD_BUTTON_UP + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_UP) { startline = meta.text_up(); @@ -131,7 +132,8 @@ MetaEdit(string dir) HaltResumeGui(); } - if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_DOWN | WPAD_CLASSIC_BUTTON_DOWN) || PAD_ButtonsDown(0) & PAD_BUTTON_DOWN) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_DOWN | WPAD_CLASSIC_BUTTON_DOWN) || PAD_ButtonsDown(0) & PAD_BUTTON_DOWN + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_DOWN) { startline = meta.text_down(number); diff --git a/main/source/Prompts/prompt_end.cpp b/main/source/Prompts/prompt_end.cpp index 08bbc1b..7062c0b 100644 --- a/main/source/Prompts/prompt_end.cpp +++ b/main/source/Prompts/prompt_end.cpp @@ -75,6 +75,7 @@ endPrompt() GuiButton wiiu(btn.GetWidth(), btn.GetHeight()); wiiu.SetAlignment(ALIGN_CENTRE, ALIGN_TOP); wiiu.SetPosition(0, 75); + wiiu.SetLabel(&wiiuTxt); wiiu.SetImage(&wiiuImg); wiiu.SetImageOver(&wiiuImgOver); wiiu.SetTrigger(&trigA); @@ -83,8 +84,12 @@ endPrompt() GuiButton hbf(btn.GetWidth(), btn.GetHeight()); hbf.SetAlignment(ALIGN_CENTRE, ALIGN_TOP); hbf.SetPosition(0, 90); +#ifndef VWII if(get_bootmii() != 0) hbf.SetPosition(0, 140); +#else + hbf.SetPosition(0, 140); +#endif hbf.SetLabel(&hbfTxt); hbf.SetImage(&hbfImg); hbf.SetImageOver(&hbfImgOver); @@ -94,8 +99,12 @@ endPrompt() GuiButton systemmenu(btn.GetWidth(), btn.GetHeight()); systemmenu.SetAlignment(ALIGN_CENTRE, ALIGN_TOP); systemmenu.SetPosition(0, 180); +#ifndef VWII if(get_bootmii() != 0) systemmenu.SetPosition(0, 205); +#else + systemmenu.SetPosition(0, 205); +#endif systemmenu.SetLabel(&systemmenuTxt); systemmenu.SetImage(&systemmenuImg); systemmenu.SetImageOver(&systemmenuImgOver); @@ -121,6 +130,8 @@ endPrompt() #ifndef VWII if(get_bootmii() != 0) promptWindow.Append(&bootmii); +#else + promptWindow.Append(&wiiu); #endif promptWindow.Append(&systemmenu); promptWindow.Append(&shutdown); diff --git a/main/source/Prompts/prompt_erase_category.cpp b/main/source/Prompts/prompt_erase_category.cpp index 2c5afc7..8fcbdff 100644 --- a/main/source/Prompts/prompt_erase_category.cpp +++ b/main/source/Prompts/prompt_erase_category.cpp @@ -88,7 +88,8 @@ string eraseCategory() { usleep(100); - if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_PLUS | WPAD_CLASSIC_BUTTON_PLUS) || PAD_ButtonsDown(0) & PAD_TRIGGER_R) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_PLUS | WPAD_CLASSIC_BUTTON_PLUS) || PAD_ButtonsDown(0) & PAD_TRIGGER_R + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_PLUS) { kategorieInt++; if ( kategorieInt >= (signed)AvailableCategory.categories.size() ) @@ -99,7 +100,8 @@ string eraseCategory() HaltResumeGui(); } - if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_MINUS | WPAD_CLASSIC_BUTTON_MINUS) || PAD_ButtonsDown(0) & PAD_TRIGGER_L) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_MINUS | WPAD_CLASSIC_BUTTON_MINUS) || PAD_ButtonsDown(0) & PAD_TRIGGER_L + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_MINUS) { kategorieInt--; if ( kategorieInt < 1 ) diff --git a/main/source/Prompts/prompt_font_download.cpp b/main/source/Prompts/prompt_font_download.cpp index 3f436dc..da2e2f6 100644 --- a/main/source/Prompts/prompt_font_download.cpp +++ b/main/source/Prompts/prompt_font_download.cpp @@ -219,7 +219,8 @@ string FontList() { usleep(100); - if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_UP | WPAD_CLASSIC_BUTTON_UP) || PAD_ButtonsDown(0) & PAD_BUTTON_UP) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_UP | WPAD_CLASSIC_BUTTON_UP) || PAD_ButtonsDown(0) & PAD_BUTTON_UP + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_UP) { selection--; if(selection < 0) @@ -237,7 +238,8 @@ string FontList() HaltResumeGui(); } - if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_DOWN | WPAD_CLASSIC_BUTTON_DOWN) || PAD_ButtonsDown(0) & PAD_BUTTON_DOWN) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_DOWN | WPAD_CLASSIC_BUTTON_DOWN) || PAD_ButtonsDown(0) & PAD_BUTTON_DOWN + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_DOWN) { selection++; if(selection == (signed)fonts.size()) @@ -257,13 +259,15 @@ string FontList() HaltResumeGui(); } - if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A) || PAD_ButtonsDown(0) & PAD_BUTTON_A) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A) || PAD_ButtonsDown(0) & PAD_BUTTON_A + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_A) { downloadfont = fonts[selection + textScrollPos]; stop = true; } - if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B) || PAD_ButtonsDown(0) & PAD_BUTTON_B) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B) || PAD_ButtonsDown(0) & PAD_BUTTON_B + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_B) { downloadfont = "NULL"; stop = true; diff --git a/main/source/Prompts/prompt_language_download.cpp b/main/source/Prompts/prompt_language_download.cpp index df3defc..b1cdca8 100644 --- a/main/source/Prompts/prompt_language_download.cpp +++ b/main/source/Prompts/prompt_language_download.cpp @@ -220,7 +220,8 @@ string LanguageList() { usleep(100); - if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_UP | WPAD_CLASSIC_BUTTON_UP) || PAD_ButtonsDown(0) & PAD_BUTTON_UP) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_UP | WPAD_CLASSIC_BUTTON_UP) || PAD_ButtonsDown(0) & PAD_BUTTON_UP + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_UP) { selection--; if(selection < 0) @@ -238,7 +239,8 @@ string LanguageList() HaltResumeGui(); } - if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_DOWN | WPAD_CLASSIC_BUTTON_DOWN) || PAD_ButtonsDown(0) & PAD_BUTTON_DOWN) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_DOWN | WPAD_CLASSIC_BUTTON_DOWN) || PAD_ButtonsDown(0) & PAD_BUTTON_DOWN + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_DOWN) { selection++; if(selection == (signed)languages.size()) @@ -258,13 +260,15 @@ string LanguageList() HaltResumeGui(); } - if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A) || PAD_ButtonsDown(0) & PAD_BUTTON_A) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A) || PAD_ButtonsDown(0) & PAD_BUTTON_A + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_A) { downloadlanguage = languages[selection + textScrollPos]; stop = true; } - if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B) || PAD_ButtonsDown(0) & PAD_BUTTON_B) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B) || PAD_ButtonsDown(0) & PAD_BUTTON_B + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_B) { downloadlanguage = "NULL"; stop = true; diff --git a/main/source/Prompts/prompt_loader.cpp b/main/source/Prompts/prompt_loader.cpp index 2aae675..7702303 100644 --- a/main/source/Prompts/prompt_loader.cpp +++ b/main/source/Prompts/prompt_loader.cpp @@ -43,7 +43,7 @@ bool check_segui() segui_loc = "dvd1:/apps/SettingsEditorGUI/boot.dol"; return true; } - else if(opendir(check_path("gca:/apps/Settings Editor GUI/").c_str()) != NULL) + else if(opendir(check_path("gca:/apps/SettingsEditorGUI/").c_str()) != NULL) { segui_loc = "gca:/apps/SettingsEditorGUI/boot.dol"; return true; @@ -83,7 +83,6 @@ loaderPrompt() bool stop = false; int menu = 0; - listIOS(); #ifndef VWII if( ! priicheck ) { @@ -92,11 +91,7 @@ loaderPrompt() } #endif bool have_segui; - if( ! seguicheck ) - { - seguicheck = 1; - have_segui = check_segui(); - } + have_segui = check_segui(); GuiWindow promptWindow(520,360); promptWindow.SetAlignment(ALIGN_CENTRE, ALIGN_MIDDLE); diff --git a/main/source/Prompts/prompt_move_category.cpp b/main/source/Prompts/prompt_move_category.cpp index c62a625..cdabdc5 100644 --- a/main/source/Prompts/prompt_move_category.cpp +++ b/main/source/Prompts/prompt_move_category.cpp @@ -111,19 +111,22 @@ void MoveCategory(int moveCategoryNr, string &Kategorie1, bool &vor, string &Kat { usleep(100); - if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_PLUS | WPAD_CLASSIC_BUTTON_PLUS) || PAD_ButtonsDown(0) & PAD_TRIGGER_R) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_PLUS | WPAD_CLASSIC_BUTTON_PLUS) || PAD_ButtonsDown(0) & PAD_TRIGGER_R + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_PLUS) { vor = false; zeile3_2Txt.SetText(tr("after")); } - if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_MINUS | WPAD_CLASSIC_BUTTON_MINUS) || PAD_ButtonsDown(0) & PAD_TRIGGER_L) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_MINUS | WPAD_CLASSIC_BUTTON_MINUS) || PAD_ButtonsDown(0) & PAD_TRIGGER_L + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_MINUS) { vor = true; zeile3_2Txt.SetText(tr("before")); } - if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_UP | WPAD_CLASSIC_BUTTON_UP) || PAD_ButtonsDown(0) & PAD_BUTTON_UP) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_UP | WPAD_CLASSIC_BUTTON_UP) || PAD_ButtonsDown(0) & PAD_BUTTON_UP + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_UP) { CategoryInt--; @@ -134,7 +137,8 @@ void MoveCategory(int moveCategoryNr, string &Kategorie1, bool &vor, string &Kat HaltResumeGui(); } - if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_DOWN | WPAD_CLASSIC_BUTTON_DOWN) || PAD_ButtonsDown(0) & PAD_BUTTON_DOWN) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_DOWN | WPAD_CLASSIC_BUTTON_DOWN) || PAD_ButtonsDown(0) & PAD_BUTTON_DOWN + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_DOWN) { CategoryInt++; @@ -160,4 +164,4 @@ void MoveCategory(int moveCategoryNr, string &Kategorie1, bool &vor, string &Kat mainWindow->Remove(&promptWindow); mainWindow->SetState(STATE_DEFAULT); ResumeGui(); -} \ No newline at end of file +} diff --git a/main/source/Prompts/prompt_revtext.cpp b/main/source/Prompts/prompt_revtext.cpp index 3fceb5a..f883e39 100644 --- a/main/source/Prompts/prompt_revtext.cpp +++ b/main/source/Prompts/prompt_revtext.cpp @@ -106,7 +106,8 @@ revtext(const char *msg) { usleep(100); - if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_UP | WPAD_CLASSIC_BUTTON_UP) || PAD_ButtonsDown(0) & PAD_BUTTON_UP) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_UP | WPAD_CLASSIC_BUTTON_UP) || PAD_ButtonsDown(0) & PAD_BUTTON_UP + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_UP) { int z = revtext.text_up(); @@ -117,7 +118,8 @@ revtext(const char *msg) HaltResumeGui(); } - if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_DOWN | WPAD_CLASSIC_BUTTON_DOWN) || PAD_ButtonsDown(0) & PAD_BUTTON_DOWN) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_DOWN | WPAD_CLASSIC_BUTTON_DOWN) || PAD_ButtonsDown(0) & PAD_BUTTON_DOWN + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_DOWN) { int z = revtext.text_down(number); diff --git a/main/source/Prompts/prompt_theme_download.cpp b/main/source/Prompts/prompt_theme_download.cpp index a398e5e..45d1688 100644 --- a/main/source/Prompts/prompt_theme_download.cpp +++ b/main/source/Prompts/prompt_theme_download.cpp @@ -238,7 +238,8 @@ string ThemeList() { usleep(100); - if(WPAD_ButtonsHeld(0) & (WPAD_BUTTON_UP | WPAD_CLASSIC_BUTTON_UP) || PAD_ButtonsDown(0) & PAD_BUTTON_UP) + if(WPAD_ButtonsHeld(0) & (WPAD_BUTTON_UP | WPAD_CLASSIC_BUTTON_UP) || PAD_ButtonsDown(0) & PAD_BUTTON_UP + || WUPC_ButtonsHeld(0) & WPAD_CLASSIC_BUTTON_UP) { selection--; if(selection < 0) @@ -258,7 +259,8 @@ string ThemeList() usleep(100000); } - if(WPAD_ButtonsHeld(0) & (WPAD_BUTTON_DOWN | WPAD_CLASSIC_BUTTON_DOWN) || PAD_ButtonsDown(0) & PAD_BUTTON_DOWN) + if(WPAD_ButtonsHeld(0) & (WPAD_BUTTON_DOWN | WPAD_CLASSIC_BUTTON_DOWN) || PAD_ButtonsDown(0) & PAD_BUTTON_DOWN + || WUPC_ButtonsHeld(0) & WPAD_CLASSIC_BUTTON_DOWN) { selection++; if(selection == (signed)themes.size()) @@ -279,13 +281,15 @@ string ThemeList() usleep(100000); } - if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A) || PAD_ButtonsDown(0) & PAD_BUTTON_A) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A) || PAD_ButtonsDown(0) & PAD_BUTTON_A + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_A) { downloadtheme = themes[selection + textScrollPos]; stop = true; } - if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B) || PAD_ButtonsDown(0) & PAD_BUTTON_B) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B) || PAD_ButtonsDown(0) & PAD_BUTTON_B + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_B) { downloadtheme = "NULL"; stop = true; diff --git a/main/source/Prompts/prompt_update.cpp b/main/source/Prompts/prompt_update.cpp index 722ca28..a35002b 100644 --- a/main/source/Prompts/prompt_update.cpp +++ b/main/source/Prompts/prompt_update.cpp @@ -281,7 +281,8 @@ string choiceRev(string revs) { usleep(100); - if(WPAD_ButtonsHeld(0) & (WPAD_BUTTON_UP | WPAD_CLASSIC_BUTTON_UP) || PAD_ButtonsDown(0) & PAD_BUTTON_UP) + if(WPAD_ButtonsHeld(0) & (WPAD_BUTTON_UP | WPAD_CLASSIC_BUTTON_UP) || PAD_ButtonsDown(0) & PAD_BUTTON_UP + || WUPC_ButtonsHeld(0) & WPAD_CLASSIC_BUTTON_UP) { selection--; @@ -299,7 +300,8 @@ string choiceRev(string revs) usleep(100000); } - if(WPAD_ButtonsHeld(0) & (WPAD_BUTTON_DOWN | WPAD_CLASSIC_BUTTON_DOWN) || PAD_ButtonsDown(0) & PAD_BUTTON_DOWN) + if(WPAD_ButtonsHeld(0) & (WPAD_BUTTON_DOWN | WPAD_CLASSIC_BUTTON_DOWN) || PAD_ButtonsDown(0) & PAD_BUTTON_DOWN + || WUPC_ButtonsHeld(0) & WPAD_CLASSIC_BUTTON_DOWN) { selection++; @@ -317,13 +319,15 @@ string choiceRev(string revs) usleep(100000); } - if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A) || PAD_ButtonsDown(0) & PAD_BUTTON_A) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A) || PAD_ButtonsDown(0) & PAD_BUTTON_A + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_A) { rev = versions.line[selection + versions.textScrollPos]; stop = true; } - if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B) || PAD_ButtonsDown(0) & PAD_BUTTON_B) + if(WPAD_ButtonsDown(0) & (WPAD_BUTTON_B | WPAD_CLASSIC_BUTTON_B) || PAD_ButtonsDown(0) & PAD_BUTTON_B + || WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_B) stop = true; } diff --git a/main/source/Tools/SelectIos.cpp b/main/source/Tools/SelectIos.cpp index affe637..ca34dee 100644 --- a/main/source/Tools/SelectIos.cpp +++ b/main/source/Tools/SelectIos.cpp @@ -190,8 +190,10 @@ end: // Check if this is an IOS stub (according to WiiBrew.org) bool IsKnownStub(u32 noIOS, s32 noRevision) { + if (noIOS == 0) return true; if (noIOS == 3 && noRevision == 65280) return true; if (noIOS == 4 && noRevision == 65280) return true; + if (noIOS == 5 && noRevision == 65280) return true; if (noIOS == 10 && noRevision == 768) return true; if (noIOS == 11 && noRevision == 256) return true; if (noIOS == 16 && noRevision == 512) return true; @@ -261,110 +263,106 @@ int previousIos() bool listIOS() { - if(ios_pos > 0) - return true; - ioslist.clear(); - u32 nbTitles; - if (ES_GetNumTitles(&nbTitles) < 0) - return false; - - // Allocate the memory for titles - u64 *titles = (u64*)memalign(32, nbTitles*sizeof(u64)); - - if (titles == NULL) - return false; - - if (ES_GetTitles(titles, nbTitles) < 0) - return false; - - int i; - u32 titleID; - - // For each titles found - for (i = 0; i < (signed)nbTitles; i++) + if(ioslist.size() == 0) { - // Skip non-system titles - if (titles[i] >> 32 != 1) continue; - - // Skip the system menu - titleID = titles[i] & 0xFFFFFFFF; - - if (titleID == 2) continue; - - // Skip BC, MIOS and possible other non-IOS titles - if (titleID > 0xFF) continue; - - // Skip the running IOS - if (titleID == 0) continue; - - // Skip NAND-Emu IOS - if (titleID == 253) - { - nandemu = 1; - continue; - } - - // Skip bootmii IOS - if (titleID == 254) - { - continue; - } - - // Check if this title is an IOS stub - u32 tmdSize; - tmd *iosTMD ATTRIBUTE_ALIGN(32); - - // Get the stored TMD size for the title - if (ES_GetStoredTMDSize(0x0000000100000000ULL | titleID, &tmdSize) < 0) + u32 nbTitles; + if (ES_GetNumTitles(&nbTitles) < 0) return false; - signed_blob *iosTMDBuffer = (signed_blob *)memalign(32, (tmdSize+32)&(~31)); - memset(iosTMDBuffer, 0, tmdSize); + // Allocate the memory for titles + u64 *titles = (u64*)memalign(32, nbTitles*sizeof(u64)); - // Get the stored TMD for the title - if (ES_GetStoredTMD(0x0000000100000000ULL | titleID, iosTMDBuffer, tmdSize) < 0) + if (titles == NULL) return false; - iosTMD = (tmd *)SIGNATURE_PAYLOAD(iosTMDBuffer); + if (ES_GetTitles(titles, nbTitles) < 0) + return false; - free(iosTMDBuffer); + int i; + u32 titleID; - // Get the title version - u8 noVersion = iosTMD->title_version; - bool isStub = false; - - // Check if this is an IOS stub (according to WiiBrew.org) - if (IsKnownStub(titleID, iosTMD->title_version)) - isStub = true; - else + // For each titles found + for (i = 0; i < (signed)nbTitles; i++) { - // If the version is 00, it's probably a stub - // - // Stubs have these things in common: - // - Title version is mostly 65280, or even better, the last 2 hexadecimal digits are 0; - // - Stub have one app of their own (type 0x1) and 2 shared apps (type 0x8001). - if (noVersion == 0) - isStub = ((iosTMD->num_contents == 3) && (iosTMD->contents[0].type == 1 && iosTMD->contents[1].type == 0x8001 && iosTMD->contents[2].type == 0x8001)); - else - isStub = false; - } + // Skip non-system titles + if (titles[i] >> 32 != 1) continue; - xprintf("testing IOS: %d\n", titleID); + // Skip the system menu + titleID = titles[i] & 0xFFFFFFFF; - if(!isStub) - { - if(titleID == 254) - { - bootmii = 1; + if (titleID == 2) continue; + + // Skip BC, MIOS and possible other non-IOS titles + if (titleID > 0xFF) continue; + + // Skip the running IOS + if (titleID == 0) continue; + + // Skip NAND-Emu IOS + if (titleID == 253) + { + nandemu = 1; + continue; } - xprintf("added IOS %d to list.\n", titleID); - ioslist.push_back(titleID); - } + // Check if this title is an IOS stub + u32 tmdSize; + tmd *iosTMD ATTRIBUTE_ALIGN(32); + + // Get the stored TMD size for the title + if (ES_GetStoredTMDSize(0x0000000100000000ULL | titleID, &tmdSize) < 0) + return false; + + signed_blob *iosTMDBuffer = (signed_blob *)memalign(32, (tmdSize+32)&(~31)); + memset(iosTMDBuffer, 0, tmdSize); + + // Get the stored TMD for the title + if (ES_GetStoredTMD(0x0000000100000000ULL | titleID, iosTMDBuffer, tmdSize) < 0) + return false; + + iosTMD = (tmd *)SIGNATURE_PAYLOAD(iosTMDBuffer); + + free(iosTMDBuffer); + + // Get the title version + u8 noVersion = iosTMD->title_version; + bool isStub = false; + + // Check if this is an IOS stub (according to WiiBrew.org) + if (IsKnownStub(titleID, iosTMD->title_version)) + isStub = true; + else + { + // If the version is 00, it's probably a stub + // + // Stubs have these things in common: + // - Title version is mostly 65280, or even better, the last 2 hexadecimal digits are 0; + // - Stub have one app of their own (type 0x1) and 2 shared apps (type 0x8001). + if (noVersion == 0) + isStub = ((iosTMD->num_contents == 3) && (iosTMD->contents[0].type == 1 && iosTMD->contents[1].type == 0x8001 && iosTMD->contents[2].type == 0x8001)); + else + isStub = false; + } + + xprintf("testing IOS: %d\n", titleID); + + if(!isStub) + { + if (titleID == 254) { + bootmii = 1; + continue; + } + xprintf("added IOS %d to list.\n", titleID); + ioslist.push_back(titleID); + } + + } + std::sort( ioslist.begin(), ioslist.end() ); // sortieren + return true; } - std::sort( ioslist.begin(), ioslist.end() ); // sortieren - return true; + else + return true; } @@ -425,8 +423,10 @@ int get_bootmii() if(Options.bootmii_boot2) return 3; else -#endif return bootmii; +#else + return 0; +#endif } void set_bootmii(int choice) diff --git a/main/source/Tools/fileop.cpp b/main/source/Tools/fileop.cpp index 60183a4..f4ca724 100644 --- a/main/source/Tools/fileop.cpp +++ b/main/source/Tools/fileop.cpp @@ -20,6 +20,8 @@ #include #include +#include "../xprintf.h" + #include "fileop.h" #include "main.h" #include "Tools/app_list.h" @@ -30,7 +32,9 @@ static const DISC_INTERFACE* sd = &__io_wiisd; static const DISC_INTERFACE* usb = &__io_usbstorage; +#ifndef VWII static const DISC_INTERFACE* dvd = &__io_wiidvd; +#endif enum { @@ -152,15 +156,6 @@ typedef struct _EXTENDED_BOOT_RECORD { u16 signature; /* EBR signature; 0xAA55 */ } __attribute__((__packed__)) EXTENDED_BOOT_RECORD; -//#define DEBUG_MOUNTALL - -#ifdef DEBUG_MOUNTALL -#define debug_printf(fmt, args...) \ - fprintf(stderr, "%s:%d:" fmt, __FUNCTION__, __LINE__, ##args) -#else -#define debug_printf(fmt, args...) -#endif - DEVICE_STRUCT part[2][MAX_DEVICES]; static void AddPartition(sec_t sector, int device, int type, int *devnum) @@ -208,6 +203,7 @@ static void AddPartition(sec_t sector, int device, int type, int *devnum) else part[device][*devnum].name[0] = 0; } +#ifndef VWII else if (type == T_ISO9660) { @@ -217,6 +213,7 @@ static void AddPartition(sec_t sector, int device, int type, int *devnum) strcpy(part[device][*devnum].name, "DVD"); } +#endif strcpy(part[device][*devnum].mount, mount); part[device][*devnum].type = type; @@ -268,11 +265,11 @@ static int FindPartitions(int device) } // If this is the devices master boot record - debug_printf("0x%x\n", sector.mbr.signature); + xprintf("0x%x\n", sector.mbr.signature); if (sector.mbr.signature == MBR_SIGNATURE) { memcpy(&mbr, §or, sizeof(MASTER_BOOT_RECORD)); - debug_printf("Valid Master Boot Record found\n"); + xprintf("Valid Master Boot Record found\n"); // Search the partition table for all partitions (max. 4 primary partitions) for (i = 0; i < 4; i++) @@ -280,7 +277,7 @@ static int FindPartitions(int device) partition = &mbr.partitions[i]; part_lba = le32_to_cpu(mbr.partitions[i].lba_start); - debug_printf( + xprintf( "Partition %i: %s, sector %u, type 0x%x\n", i + 1, partition->status == PARTITION_STATUS_BOOTABLE ? "bootable (active)" @@ -292,21 +289,21 @@ static int FindPartitions(int device) // NTFS partition case PARTITION_TYPE_NTFS: { - debug_printf("Partition %i: Claims to be NTFS\n", i + 1); + xprintf("Partition %i: Claims to be NTFS\n", i + 1); // Read and validate the NTFS partition if (interface->readSectors(part_lba, 1, §or)) { - debug_printf("sector.boot.oem_id: 0x%x\n", sector.boot.oem_id); - debug_printf("NTFS_OEM_ID: 0x%x\n", NTFS_OEM_ID); + xprintf("sector.boot.oem_id: 0x%x\n", sector.boot.oem_id); + xprintf("NTFS_OEM_ID: 0x%x\n", NTFS_OEM_ID); if (sector.boot.oem_id == NTFS_OEM_ID) { - debug_printf("Partition %i: Valid NTFS boot sector found\n", i + 1); + xprintf("Partition %i: Valid NTFS boot sector found\n", i + 1); AddPartition(part_lba, device, T_NTFS, &devnum); } else { - debug_printf("Partition %i: Invalid NTFS boot sector, not actually NTFS\n", i + 1); + xprintf("Partition %i: Invalid NTFS boot sector, not actually NTFS\n", i + 1); } } @@ -316,7 +313,7 @@ static int FindPartitions(int device) case PARTITION_TYPE_DOS33_EXTENDED: case PARTITION_TYPE_WIN95_EXTENDED: { - debug_printf("Partition %i: Claims to be Extended\n", i + 1); + xprintf("Partition %i: Claims to be Extended\n", i + 1); // Walk the extended partition chain, finding all NTFS partitions within it sec_t ebr_lba = part_lba; @@ -328,7 +325,7 @@ static int FindPartitions(int device) { if (sector.ebr.signature == EBR_SIGNATURE) { - debug_printf( + xprintf( "Logical Partition @ %d: %s type 0x%x\n", ebr_lba + next_erb_lba, sector.ebr.partition.status @@ -346,7 +343,7 @@ static int FindPartitions(int device) if(sector.ebr.partition.type==PARTITION_TYPE_LINUX) { - debug_printf("Partition : type EXT2/3/4 found\n"); + xprintf("Partition : type EXT2/3/4 found\n"); AddPartition(part_lba, device, T_EXT2, &devnum); } // Check if this partition has a valid NTFS boot record @@ -354,13 +351,13 @@ static int FindPartitions(int device) { if (sector.boot.oem_id == NTFS_OEM_ID) { - debug_printf( + xprintf( "Logical Partition @ %d: Valid NTFS boot sector found\n", part_lba); if (sector.ebr.partition.type != PARTITION_TYPE_NTFS) { - debug_printf( + xprintf( "Logical Partition @ %d: Is NTFS but type is 0x%x; 0x%x was expected\n", part_lba, sector.ebr.partition.type, @@ -375,7 +372,7 @@ static int FindPartitions(int device) + BPB_FAT32_fileSysType, FAT_SIG, sizeof(FAT_SIG))) { - debug_printf("Partition : Valid FAT boot sector found\n"); + xprintf("Partition : Valid FAT boot sector found\n"); AddPartition(part_lba, device, T_FAT, &devnum); } } @@ -391,7 +388,7 @@ static int FindPartitions(int device) case PARTITION_TYPE_LINUX: { - debug_printf("Partition %i: Claims to be LINUX\n", i + 1); + xprintf("Partition %i: Claims to be LINUX\n", i + 1); // Read and validate the EXT2 partition AddPartition(part_lba, device, T_EXT2, &devnum); @@ -400,7 +397,7 @@ static int FindPartitions(int device) // Ignore empty partitions case PARTITION_TYPE_EMPTY: - debug_printf("Partition %i: Claims to be empty\n", i + 1); + xprintf("Partition %i: Claims to be empty\n", i + 1); // Unknown or unsupported partition type default: { @@ -410,10 +407,10 @@ static int FindPartitions(int device) { if (sector.boot.oem_id == NTFS_OEM_ID) { - debug_printf("Partition %i: Valid NTFS boot sector found\n",i + 1); + xprintf("Partition %i: Valid NTFS boot sector found\n",i + 1); if (partition->type != PARTITION_TYPE_NTFS) { - debug_printf( + xprintf( "Partition %i: Is NTFS but type is 0x%x; 0x%x was expected\n", i + 1, partition->type, PARTITION_TYPE_NTFS); @@ -425,12 +422,12 @@ static int FindPartitions(int device) sector.buffer + BPB_FAT32_fileSysType, FAT_SIG, sizeof(FAT_SIG))) { - debug_printf("Partition : Valid FAT boot sector found\n"); + xprintf("Partition : Valid FAT boot sector found\n"); AddPartition(part_lba, device, T_FAT, &devnum); } else { - debug_printf("Trying : EXT partition\n"); + xprintf("Trying : EXT partition\n"); AddPartition(part_lba, device, T_EXT2, &devnum); } } @@ -441,7 +438,7 @@ static int FindPartitions(int device) } if(devnum==0) // it is assumed this device has no master boot record or no partitions found { - debug_printf("No Master Boot Record was found or no partitions found!\n"); + xprintf("No Master Boot Record was found or no partitions found!\n"); // As a last-ditched effort, search the first 64 sectors of the device for stray NTFS/FAT partitions for (i = 0; i < 64; i++) @@ -450,7 +447,7 @@ static int FindPartitions(int device) { if (sector.boot.oem_id == NTFS_OEM_ID) { - debug_printf("Valid NTFS boot sector found at sector %d!\n", i); + xprintf("Valid NTFS boot sector found at sector %d!\n", i); AddPartition(i, device, T_NTFS, &devnum); break; } @@ -458,13 +455,13 @@ static int FindPartitions(int device) sizeof(FAT_SIG)) || !memcmp(sector.buffer + BPB_FAT32_fileSysType, FAT_SIG, sizeof(FAT_SIG))) { - debug_printf("Partition : Valid FAT boot sector found\n"); + xprintf("Partition : Valid FAT boot sector found\n"); AddPartition(i, device, T_FAT, &devnum); break; } else { - debug_printf("Trying : EXT partition\n"); + xprintf("Trying : EXT partition\n"); AddPartition(part_lba, device, T_EXT2, &devnum); } } @@ -498,12 +495,14 @@ static void UnmountPartitions(int device) ext2Unmount(part[device][i].mount); break; } +#ifdef VWII else if(part[device][i].type == T_ISO9660) { sprintf(mount, "ISO9660: %s:", part[device][i].mount); UnMountDVD(); break; } +#endif part[device][i].name[0] = 0; part[device][i].mount[0] = 0; @@ -533,7 +532,6 @@ static bool MountPartitions(int device) case DEVICE_USB: disc = usb; break; - break; default: return false; // unknown device } @@ -631,11 +629,14 @@ void UnmountAllDevices() { UnmountPartitions(DEVICE_SD); UnmountPartitions(DEVICE_USB); +#ifndef VWII UnMountDVD(); fatUnmount("gca:"); fatUnmount("gcb:"); +#endif } +#ifndef VWII bool GCA_Inserted() { @@ -688,6 +689,7 @@ void check_gcb() } } } +#endif bool SDCard_Inserted() { @@ -740,6 +742,7 @@ void check_usb() } } +#ifndef VWII void check_dvd() { if(Settings.dvd_insert <= 0) @@ -760,6 +763,7 @@ void check_dvd() } } } +#endif void check_device() { diff --git a/main/source/gecko.c b/main/source/gecko.c index 646aba8..c60f286 100644 --- a/main/source/gecko.c +++ b/main/source/gecko.c @@ -1,3 +1,6 @@ +#ifndef VWII +#ifndef NO_DEBUG + #include #include #include @@ -8,8 +11,6 @@ /* init-globals */ static bool geckoinit = false; -#ifndef VWII -#ifndef NO_DEBUG #include void gprintf(const char *format, ...) diff --git a/main/source/input.cpp b/main/source/input.cpp index 7631235..c8f42e9 100644 --- a/main/source/input.cpp +++ b/main/source/input.cpp @@ -14,6 +14,7 @@ #include #include #include +#include #include "menu.h" #include "video.h" @@ -31,11 +32,14 @@ static int rumbleCount[4] = {0,0,0,0}; ***************************************************************************/ void UpdatePads() { + WUPC_UpdateButtonStats(); WPAD_ScanPads(); PAD_ScanPads(); - for(int i=/*3*/ 0; i >= 0; i--) + for(int i=0; i < 4; i++) { + userInput[i].wpad = WPAD_Data(i); + userInput[i].chan = i; userInput[i].pad.btns_d = PAD_ButtonsDown(i); userInput[i].pad.btns_u = PAD_ButtonsUp(i); userInput[i].pad.btns_h = PAD_ButtonsHeld(i); @@ -45,6 +49,19 @@ void UpdatePads() userInput[i].pad.substickY = PAD_SubStickY(i); userInput[i].pad.triggerL = PAD_TriggerL(i); userInput[i].pad.triggerR = PAD_TriggerR(i); + + // WiiU Pro Controller + userInput[i].wupcdata.btns_d = WUPC_ButtonsDown(i); + userInput[i].wupcdata.btns_u = WUPC_ButtonsUp(i); + userInput[i].wupcdata.btns_h = WUPC_ButtonsHeld(i); + userInput[i].wupcdata.stickX = WUPC_lStickX(i); + userInput[i].wupcdata.stickY = WUPC_lStickY(i); + userInput[i].wupcdata.substickX = WUPC_rStickX(i); + userInput[i].wupcdata.substickY = WUPC_rStickY(i); + // Don't use only held to disconnect, on reconnect the pad sends last held state for a short time. + if((WUPC_ButtonsHeld(i) & WUPC_EXTRA_BUTTON_RSTICK && WUPC_ButtonsDown(i) & WUPC_EXTRA_BUTTON_LSTICK) // R3+L3 + ||(WUPC_ButtonsHeld(i) & WUPC_EXTRA_BUTTON_LSTICK && WUPC_ButtonsDown(i) & WUPC_EXTRA_BUTTON_RSTICK)) + WUPC_Disconnect(i); } } @@ -56,16 +73,16 @@ void UpdatePads() void SetupPads() { PAD_Init(); + WUPC_Init(); WPAD_Init(); // read wiimote accelerometer and IR data WPAD_SetDataFormat(WPAD_CHAN_ALL,WPAD_FMT_BTNS_ACC_IR); WPAD_SetVRes(WPAD_CHAN_ALL, screenwidth, screenheight); - for(int i=0; i < /*4*/ 1; i++) + for(int i=0; i < 4; i++) { userInput[i].chan = i; - userInput[i].wpad = WPAD_Data(i); } } @@ -75,8 +92,9 @@ void SetupPads() void ShutoffRumble() { - for(int i=0;i #include -#define PI 3.14159265f +#define PI 3.14159265f #define PADCAL 50 +#define WUPCCAL 400 extern int rumbleRequest[4]; diff --git a/main/source/libwiigui/gui.h b/main/source/libwiigui/gui.h index 9c3b9cf..1f2571a 100644 --- a/main/source/libwiigui/gui.h +++ b/main/source/libwiigui/gui.h @@ -41,6 +41,7 @@ #include #include #include +#include #include "pngu.h" #include "FreeTypeGX.h" #include "video.h" @@ -117,6 +118,16 @@ typedef struct _paddata { u8 triggerR; } PADData; +typedef struct _wupcfulldata { + u32 btns_d; + u32 btns_u; + u32 btns_h; + s16 stickX; + s16 stickY; + s16 substickX; + s16 substickY; +} WUPCFullData; + typedef struct _POINT { s32 x; s32 y; @@ -183,6 +194,8 @@ class GuiTrigger s32 chan; //!< Trigger controller channel (0-3, -1 for all) WPADData * wpad; //!< Wii controller trigger WPADData wpaddata; //!< Wii controller trigger data + WUPCFullData * wupad; //!< WiiU Pro controller trigger + WUPCFullData wupcdata; //!< WiiU Pro controller trigger data PADData pad; //!< GameCube controller trigger data }; diff --git a/main/source/libwiigui/gui_button.cpp b/main/source/libwiigui/gui_button.cpp index 6a56160..14553ab 100644 --- a/main/source/libwiigui/gui_button.cpp +++ b/main/source/libwiigui/gui_button.cpp @@ -185,13 +185,13 @@ void GuiButton::Update(GuiTrigger * t) } #endif - // button triggers - if(this->IsClickable()) +// button triggers + if (this->IsClickable()) { - s32 wm_btns, wm_btns_trig, cc_btns, cc_btns_trig; + s32 wm_btns, wm_btns_trig, cc_btns, cc_btns_trig, wupc_btns, wupc_btns_trig; for(int i=0; i<2; i++) { - if(trigger[i] && (trigger[i]->chan == -1 || trigger[i]->chan == t->chan)) + if (trigger[i] && (trigger[i]->chan == -1 || trigger[i]->chan == t->chan)) { // higher 16 bits only (wiimote) wm_btns = t->wpad->btns_d << 16; @@ -201,20 +201,22 @@ void GuiButton::Update(GuiTrigger * t) cc_btns = t->wpad->btns_d >> 16; cc_btns_trig = trigger[i]->wpad->btns_d >> 16; - if( - (t->wpad->btns_d > 0 && - (wm_btns == wm_btns_trig || - (cc_btns == cc_btns_trig && t->wpad->exp.type == EXP_CLASSIC))) || - (t->pad.btns_d == trigger[i]->pad.btns_d && t->pad.btns_d > 0)) + // lower 16 bits only (WiiU Pro controller) + wupc_btns = t->wupcdata.btns_d >> 16; + wupc_btns_trig = trigger[i]->wupcdata.btns_d >> 16; + + if( ((t->wpad->btns_d > 0 && wm_btns == wm_btns_trig) + || (t->wpad->exp.type == WPAD_EXP_CLASSIC && cc_btns == cc_btns_trig)) + || (t->pad.btns_d > 0 && t->pad.btns_d == trigger[i]->pad.btns_d) + || (t->wupcdata.btns_d > 0 && wupc_btns == wupc_btns_trig)) { - if(t->chan == stateChan || stateChan == -1) + if (t->chan == stateChan || stateChan == -1) { if(state == STATE_SELECTED) { - if(!t->wpad->ir.valid || this->IsInside(t->wpad->ir.x, t->wpad->ir.y)) + if(!t->wpad->ir.valid || this->IsInside(t->wpad->ir.x, t->wpad->ir.y)) { this->SetState(STATE_CLICKED, t->chan); - } } else if(trigger[i]->type == TRIGGER_BUTTON_ONLY) @@ -222,7 +224,7 @@ void GuiButton::Update(GuiTrigger * t) this->SetState(STATE_CLICKED, t->chan); } else if(trigger[i]->type == TRIGGER_BUTTON_ONLY_IN_FOCUS && - parentElement->IsFocused()) + parentElement->IsFocused()) { this->SetState(STATE_CLICKED, t->chan); } @@ -232,14 +234,14 @@ void GuiButton::Update(GuiTrigger * t) } } - if(this->IsHoldable()) + if (this->IsHoldable()) { bool held = false; - s32 wm_btns, wm_btns_h, wm_btns_trig, cc_btns, cc_btns_h, cc_btns_trig; + s32 wm_btns, wm_btns_h, wm_btns_trig, cc_btns, cc_btns_h, cc_btns_trig, wupc_btns, wupc_btns_h, wupc_btns_trig; for(int i=0; i<2; i++) { - if(trigger[i] && (trigger[i]->chan == -1 || trigger[i]->chan == t->chan)) + if (trigger[i] && (trigger[i]->chan == -1 || trigger[i]->chan == t->chan)) { // higher 16 bits only (wiimote) wm_btns = t->wpad->btns_d << 16; @@ -251,35 +253,40 @@ void GuiButton::Update(GuiTrigger * t) cc_btns_h = t->wpad->btns_h >> 16; cc_btns_trig = trigger[i]->wpad->btns_h >> 16; - if( - (t->wpad->btns_d > 0 && - (wm_btns == wm_btns_trig || - (cc_btns == cc_btns_trig && t->wpad->exp.type == EXP_CLASSIC))) || - (t->pad.btns_d == trigger[i]->pad.btns_h && t->pad.btns_d > 0)) + // lower 16 bits only (WiiU Pro controller) + wupc_btns = t->wupcdata.btns_d >> 16; + wupc_btns_h = t->wupcdata.btns_h >> 16; + wupc_btns_trig = trigger[i]->wupcdata.btns_h >> 16; + + if( (t->wpad->btns_d > 0 && wm_btns == wm_btns_trig) + || (t->wpad->exp.type == WPAD_EXP_CLASSIC && cc_btns == cc_btns_trig) + || (t->pad.btns_d > 0 && t->pad.btns_d == trigger[i]->pad.btns_d) + || (t->wupcdata.btns_d > 0 && wupc_btns == wupc_btns_trig)) { - if(trigger[i]->type == TRIGGER_HELD && state == STATE_SELECTED && + if (trigger[i]->type == TRIGGER_HELD && state == STATE_SELECTED && (t->chan == stateChan || stateChan == -1)) this->SetState(STATE_CLICKED, t->chan); } - if( - (t->wpad->btns_h > 0 && - (wm_btns_h == wm_btns_trig || - (cc_btns_h == cc_btns_trig && t->wpad->exp.type == EXP_CLASSIC))) || - (t->pad.btns_h == trigger[i]->pad.btns_h && t->pad.btns_h > 0)) + if( (t->wpad->btns_h > 0 && wm_btns_h == wm_btns_trig) + || (t->wpad->exp.type == WPAD_EXP_CLASSIC && cc_btns_h == cc_btns_trig) + || (t->pad.btns_h > 0 && t->pad.btns_h == trigger[i]->pad.btns_h) + || (t->wupcdata.btns_h > 0 && wupc_btns_h == wupc_btns_trig) + ) { - if(trigger[i]->type == TRIGGER_HELD) + if (trigger[i]->type == TRIGGER_HELD) held = true; } - if(!held && state == STATE_HELD && stateChan == t->chan) + if (!held && state == STATE_HELD && stateChan == t->chan) { this->ResetState(); } - else if(held && state == STATE_CLICKED && stateChan == t->chan) + else if (held && state == STATE_CLICKED && stateChan == t->chan) { this->SetState(STATE_HELD, t->chan); } + } } } diff --git a/main/source/libwiigui/gui_trigger.cpp b/main/source/libwiigui/gui_trigger.cpp index 96b48ac..36d3124 100644 --- a/main/source/libwiigui/gui_trigger.cpp +++ b/main/source/libwiigui/gui_trigger.cpp @@ -18,9 +18,11 @@ static int scrollDelay = 0; GuiTrigger::GuiTrigger() { chan = -1; + memset(&wupcdata, 0, sizeof(WUPCFullData)); memset(&wpaddata, 0, sizeof(WPADData)); memset(&pad, 0, sizeof(PADData)); wpad = &wpaddata; + wupad = &wupcdata; } /** @@ -39,6 +41,7 @@ void GuiTrigger::SetSimpleTrigger(s32 ch, u32 wiibtns, u16 gcbtns) { type = TRIGGER_SIMPLE; chan = ch; + wupcdata.btns_d = wiibtns; wpaddata.btns_d = wiibtns; pad.btns_d = gcbtns; } @@ -52,6 +55,7 @@ void GuiTrigger::SetHeldTrigger(s32 ch, u32 wiibtns, u16 gcbtns) { type = TRIGGER_HELD; chan = ch; + wupcdata.btns_h = wiibtns; wpaddata.btns_h = wiibtns; pad.btns_h = gcbtns; } @@ -63,6 +67,8 @@ void GuiTrigger::SetButtonOnlyHeldTrigger(s32 ch, u32 wiibtns, u16 gcbtns) { type = TRIGGER_BUTTON_ONLY_HELD; chan = ch; + wupcdata.btns_d = wiibtns; + wupcdata.btns_h = wiibtns; wpaddata.btns_d = wiibtns; wpaddata.btns_h = wiibtns; pad.btns_d = gcbtns; @@ -77,6 +83,7 @@ void GuiTrigger::SetButtonOnlyTrigger(s32 ch, u32 wiibtns, u16 gcbtns) { type = TRIGGER_BUTTON_ONLY; chan = ch; + wupcdata.btns_d = wiibtns; wpaddata.btns_d = wiibtns; pad.btns_d = gcbtns; } @@ -90,6 +97,7 @@ void GuiTrigger::SetButtonOnlyInFocusTrigger(s32 ch, u32 wiibtns, u16 gcbtns) { type = TRIGGER_BUTTON_ONLY_IN_FOCUS; chan = ch; + wupcdata.btns_d = wiibtns; wpaddata.btns_d = wiibtns; pad.btns_d = gcbtns; } @@ -149,28 +157,25 @@ s8 GuiTrigger::WPAD_Stick(u8 right, int axis) bool GuiTrigger::Left() { u32 wiibtn = WPAD_BUTTON_LEFT; + if(wpad->exp.type == WPAD_EXP_CLASSIC || (wupcdata.btns_d | wupcdata.btns_h) > 0) + wiibtn |= WPAD_CLASSIC_BUTTON_LEFT; - if((wpad->btns_d | wpad->btns_h) & (wiibtn | WPAD_CLASSIC_BUTTON_LEFT) - || (pad.btns_d | pad.btns_h) & PAD_BUTTON_LEFT - || pad.stickX < -PADCAL - || WPAD_Stick(0,0) < -PADCAL) + if( ((wpad->btns_d | wpad->btns_h) & wiibtn) + || ((wupcdata.btns_d | wupcdata.btns_h) & wiibtn) + || ((pad.btns_d | pad.btns_h) & PAD_BUTTON_LEFT)) { - if(wpad->btns_d & (wiibtn | WPAD_CLASSIC_BUTTON_LEFT) - || pad.btns_d & PAD_BUTTON_LEFT) + if( (wpad->btns_d & wiibtn) + || (wupcdata.btns_d & wiibtn) + || (pad.btns_d & PAD_BUTTON_LEFT)) { scrollDelay = SCROLL_INITIAL_DELAY; // reset scroll delay. return true; } - else if(scrollDelay == 0) + else if (--scrollDelay <= 0) { scrollDelay = SCROLL_LOOP_DELAY; return true; } - else - { - if(scrollDelay > 0) - scrollDelay--; - } } return false; } @@ -178,28 +183,25 @@ bool GuiTrigger::Left() bool GuiTrigger::Right() { u32 wiibtn = WPAD_BUTTON_RIGHT; + if(wpad->exp.type == WPAD_EXP_CLASSIC || (wupcdata.btns_d | wupcdata.btns_h)) + wiibtn |= WPAD_CLASSIC_BUTTON_RIGHT; - if((wpad->btns_d | wpad->btns_h) & (wiibtn | WPAD_CLASSIC_BUTTON_RIGHT) - || (pad.btns_d | pad.btns_h) & PAD_BUTTON_RIGHT - || pad.stickX > PADCAL - || WPAD_Stick(0,0) > PADCAL) + if( ((wpad->btns_d | wpad->btns_h) & wiibtn) + || ((pad.btns_d | pad.btns_h) & PAD_BUTTON_RIGHT) + || ((wupcdata.btns_d | wupcdata.btns_h) & wiibtn)) { - if(wpad->btns_d & (wiibtn | WPAD_CLASSIC_BUTTON_RIGHT) - || pad.btns_d & PAD_BUTTON_RIGHT) + if( (wpad->btns_d & wiibtn) + || (pad.btns_d & PAD_BUTTON_RIGHT) + || (wupcdata.btns_d & wiibtn)) { scrollDelay = SCROLL_INITIAL_DELAY; // reset scroll delay. return true; } - else if(scrollDelay == 0) + else if (--scrollDelay <= 0) { scrollDelay = SCROLL_LOOP_DELAY; return true; } - else - { - if(scrollDelay > 0) - scrollDelay--; - } } return false; } @@ -207,28 +209,25 @@ bool GuiTrigger::Right() bool GuiTrigger::Up() { u32 wiibtn = WPAD_BUTTON_UP; + if(wpad->exp.type == WPAD_EXP_CLASSIC || (wupcdata.btns_d | wupcdata.btns_h)) + wiibtn |= WPAD_CLASSIC_BUTTON_UP; - if((wpad->btns_d | wpad->btns_h) & (wiibtn | WPAD_CLASSIC_BUTTON_UP) - || (pad.btns_d | pad.btns_h) & PAD_BUTTON_UP - || pad.stickY > PADCAL - || WPAD_Stick(0,1) > PADCAL) + if( ((wpad->btns_d | wpad->btns_h) & wiibtn) + || ((pad.btns_d | pad.btns_h) & PAD_BUTTON_UP) + || ((wupcdata.btns_d | wupcdata.btns_h) & wiibtn)) { - if(wpad->btns_d & (wiibtn | WPAD_CLASSIC_BUTTON_UP) - || pad.btns_d & PAD_BUTTON_UP) + if( (wpad->btns_d & wiibtn) + || (wupcdata.btns_d & wiibtn) + || (pad.btns_d & PAD_BUTTON_UP)) { scrollDelay = SCROLL_INITIAL_DELAY; // reset scroll delay. return true; } - else if(scrollDelay == 0) + else if (--scrollDelay <= 0) { scrollDelay = SCROLL_LOOP_DELAY; return true; } - else - { - if(scrollDelay > 0) - scrollDelay--; - } } return false; } @@ -236,28 +235,25 @@ bool GuiTrigger::Up() bool GuiTrigger::Down() { u32 wiibtn = WPAD_BUTTON_DOWN; + if(wpad->exp.type == WPAD_EXP_CLASSIC || (wupcdata.btns_d | wupcdata.btns_h)) + wiibtn |= WPAD_CLASSIC_BUTTON_DOWN; - if((wpad->btns_d | wpad->btns_h) & (wiibtn | WPAD_CLASSIC_BUTTON_DOWN) - || (pad.btns_d | pad.btns_h) & PAD_BUTTON_DOWN - || pad.stickY < -PADCAL - || WPAD_Stick(0,1) < -PADCAL) + if( ((wpad->btns_d | wpad->btns_h) & wiibtn) + || ((pad.btns_d | pad.btns_h) & PAD_BUTTON_DOWN) + || ((wupcdata.btns_d | wupcdata.btns_h) & wiibtn)) { - if(wpad->btns_d & (wiibtn | WPAD_CLASSIC_BUTTON_DOWN) - || pad.btns_d & PAD_BUTTON_DOWN) + if( (wpad->btns_d & wiibtn) + || (pad.btns_d & PAD_BUTTON_DOWN) + || (wupcdata.btns_d & wiibtn)) { scrollDelay = SCROLL_INITIAL_DELAY; // reset scroll delay. return true; } - else if(scrollDelay == 0) + else if (--scrollDelay <= 0) { scrollDelay = SCROLL_LOOP_DELAY; return true; } - else - { - if(scrollDelay > 0) - scrollDelay--; - } } return false; } diff --git a/main/source/main.cpp b/main/source/main.cpp index a3becb0..4362b25 100644 --- a/main/source/main.cpp +++ b/main/source/main.cpp @@ -92,7 +92,7 @@ void addAppIos(string foldername, int ios) } if(found) appios[i].ios = ios; - if(!found) + else appios.push_back(app_ios(foldername, ios)); } } @@ -106,7 +106,9 @@ void ExitApp() save(); xprintf("Unmount Devices and NAND\n"); UnmountAllDevices(); +#ifndef VWII exit_uneek_fs(); +#endif ISFS_Deinitialize(); } @@ -177,7 +179,7 @@ DefaultOptions() Options.apps = 4; Options.quick_start = 0; Options.show_all = 1; - Options.sdgecko = 1; + Options.sdgecko = 0; #ifndef VWII Options.bootmii_boot2 = 0; #endif @@ -197,7 +199,9 @@ main(int argc, char *argv[]) SetupPads(); // Initialize input InitGUIThreads(); // Initialize GUI +#ifndef VWII in_neek = init_uneek_fs(ISFS_OPEN_READ|ISFS_OPEN_WRITE); +#endif MountAllDevices(); InitNetworkThread(); // Initialize Network @@ -207,7 +211,7 @@ main(int argc, char *argv[]) InitGeckoThread(); #endif InitThrobberThread(); // Initialize Throbber - ISFS_Initialize(); // Initialize Nand + ISFS_Initialize(); // Initialize Nand LoadHBF(); @@ -248,18 +252,16 @@ main(int argc, char *argv[]) strftime(buffer, 80, "(%Y-%m-%d / %H:%M:%S)", current); xprintf("\nStarting HBF Debug Log %s\n", buffer); +#ifndef VWII if(!check_uneek_fs()) - { +#endif if(AHBPROT_DISABLED) { IosPatch_RUNTIME(true, false, false, false); } - else - { - xprintf("Warning: no AHBPROT\n"); - } - } +#ifndef VWII DI2_Init(); // Init DVD +#endif if(strstr(Options.language, tr("STANDARD"))) translate(); @@ -292,8 +294,12 @@ main(int argc, char *argv[]) xprintf("Setting force_reload to NORELOAD\n"); Settings.force_reload = "NORELOAD"; xprintf("Loading boot.dol from online update\n"); -#ifdef VWII +#ifdef STBOOTVWII + LoadHomebrew ((Settings.device_dat + ":/apps/HomebrewFilter.vWii.Standalone/boot.dol").c_str()); +#elif VWII LoadHomebrew ((Settings.device_dat + ":/apps/HomebrewFilter.vWii/boot.dol").c_str()); +#elif STBOOT + LoadHomebrew ((Settings.device_dat + ":/apps/HomebrewFilter.Standalone/boot.dol").c_str()); #else LoadHomebrew ((Settings.device_dat + ":/apps/HomebrewFilter/boot.dol").c_str()); #endif diff --git a/main/source/main.h b/main/source/main.h index 137dfa6..653081e 100644 --- a/main/source/main.h +++ b/main/source/main.h @@ -22,6 +22,7 @@ #define HW_REG_BASE 0xcd800000 #define HW_ARMIRQMASK (HW_REG_BASE + 0x03c) #define HW_ARMIRQFLAG (HW_REG_BASE + 0x038) +#define IsWiiU ( (*(u32*)0x0d8005A0 >> 16 ) == 0xCAFE ) using namespace std; diff --git a/main/source/menu.cpp b/main/source/menu.cpp index da21469..4eedd49 100644 --- a/main/source/menu.cpp +++ b/main/source/menu.cpp @@ -186,7 +186,12 @@ UpdateGUI (void *arg) } // screenshoot - if(WPAD_ButtonsDown(0) & WPAD_BUTTON_1 && WPAD_ButtonsDown(0) & WPAD_BUTTON_2) + if(((WPAD_ButtonsDown(0) & (WPAD_BUTTON_1 | WPAD_CLASSIC_BUTTON_Y)) && + (WPAD_ButtonsDown(0) & (WPAD_BUTTON_2 | WPAD_CLASSIC_BUTTON_X))) + || ((WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_Y) && + (WUPC_ButtonsDown(0) & WPAD_CLASSIC_BUTTON_X)) + || ((PAD_ButtonsDown(0) & PAD_BUTTON_Y) && + (PAD_ButtonsDown(0) & PAD_BUTTON_X))) Screenshot(); } } diff --git a/main/source/wpad.c b/main/source/wpad.c index 3b101e5..21edd21 100644 --- a/main/source/wpad.c +++ b/main/source/wpad.c @@ -18,6 +18,7 @@ void __Wpad_PowerCallback(s32 chan) s32 Wpad_Init(void) { + WUPC_Init(); s32 ret; /* Initialize Wiimote subsystem */ @@ -39,6 +40,7 @@ void Wpad_Disconnect(void) WPAD_Disconnect(cnt); /* Shutdown Wiimote subsystem */ + WUPC_Shutdown(); WPAD_Shutdown(); } @@ -65,11 +67,13 @@ u32 ButtonsHold(void) int i; u32 buttons = 0; + WUPC_UpdateButtonStats(); WPAD_ScanPads(); PAD_ScanPads(); for (i = 3; i >= 0; i--) { + buttons |= WUPC_ButtonsHeld(i); buttons |= PAD_ButtonsHeld(i); buttons |= WPAD_ButtonsHeld(i); } @@ -81,11 +85,13 @@ u32 ButtonsPressed(void) int i; u32 buttons = 0; + WUPC_UpdateButtonStats(); WPAD_ScanPads(); PAD_ScanPads(); for (i = 3; i >= 0; i--) { + buttons |= WUPC_ButtonsDown(i); buttons |= PAD_ButtonsDown(i); buttons |= WPAD_ButtonsDown(i); } diff --git a/main/source/wpad.h b/main/source/wpad.h index d92fe30..1390722 100644 --- a/main/source/wpad.h +++ b/main/source/wpad.h @@ -2,6 +2,7 @@ #define _WPAD_H_ #include +#include #ifdef __cplusplus extern "C" diff --git a/main/source/xprintf.cpp b/main/source/xprintf.cpp index 98d4272..fb8a26a 100644 --- a/main/source/xprintf.cpp +++ b/main/source/xprintf.cpp @@ -29,9 +29,10 @@ extern "C" void xprintf(const char *str, ...) if(Options.sdgecko) sdprintf(str); - else if(Options.wifigecko) + if(Options.wifigecko) wifi_printf(str); - else + + if(!Options.wifigecko && !Options.sdgecko) gprintf(str); } diff --git a/svnrev/svnrev.c b/svnrev/svnrev.c index 1c54807..13e90de 100644 --- a/svnrev/svnrev.c +++ b/svnrev/svnrev.c @@ -1,4 +1,4 @@ -#define SVN_REV 43 +#define SVN_REV 47 int SvnRev() { diff --git a/tools/EditTMD.py b/tools/EditTMD.py new file mode 100755 index 0000000..c3411f0 --- /dev/null +++ b/tools/EditTMD.py @@ -0,0 +1,87 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# version 1.0 + +import os +import sys +import re +import binascii +import argparse +import string + +parser = argparse.ArgumentParser() +parser.add_argument('inputfile', action='store', help='Input a TMD file, or a directory that will be recursively searched for TMD files with filenames ending in \'tmd\' and \'tmd.out\'') +parser.add_argument('-title', action='store', dest='title', help='Enter a new Title ID, which must be 16 hexadecimal characters long') +version = parser.add_mutually_exclusive_group() +version.add_argument('-versionH', action='store', dest='versionH', help='Enter a new version number in hex. 0 to FFFF/0x0 to 0xFFFF') +version.add_argument('-versionD', action='store', type=int, dest='versionD', help='Enter a new version number in decimal. 0 to 65535') +arguments = parser.parse_args() + +newversion = -1 +newtitle = '' + +if arguments.versionH is not None: + if 0 <= int(arguments.versionH,16) <= 65535: + newversion = int(arguments.versionH,16) + versionPrintType = 'Hex' + else: + print 'The version number must be from 0 to FFFF - not ' + arguments.versionH + sys.exit(0) + +if arguments.versionD is not None: + if 0 <= arguments.versionD <= 65535: + newversion = arguments.versionD + versionPrintType = 'Dec' + else: + print 'The version number must be from 0 to 65535 - not ' + str(arguments.versionD) + sys.exit(0) + +if arguments.title is not None: + if (len(arguments.title) is 16) & all(c in string.hexdigits for c in arguments.title): + newtitle = arguments.title + else: + print 'The Title ID must be 16 hexadecimal characters long' + sys.exit(0) + +print '*******\nEditTMD\n*******\n' + +def tmdProcess(fpath): + print '**********' + with open(fpath) as f: + tmd = f.read() + tmdoffsets = [m.start() for m in re.finditer(b'Root-CA00000001-CP00000004', tmd)] + if (len(tmdoffsets) != 1): + print fpath + ' - Is this really a (decrypted) tmd file?' + else: + tmd = bytearray(tmd) + offs = tmdoffsets[0] + print fpath + + if newtitle: + print 'Title ID: ' + binascii.hexlify(tmd[offs+0x4C:offs+0x54]) + " -> " + arguments.title + tmd[offs+0x4C:offs+0x54] = binascii.a2b_hex(arguments.title) + + if newversion is not -1: # ' "if newversion:" is not good enough since the version can be 0, but it would still return false' + if versionPrintType is 'Dec': + print 'Version: ' + str(int(binascii.hexlify(tmd[offs+0x9C:offs+0x9E]),16)) + " -> " + str(newversion) + if versionPrintType is 'Hex': + print 'Version: ' + binascii.hexlify(tmd[offs+0x9C:offs+0x9E]).upper() + " -> " + "%0.4X" % newversion + tmd[offs+0x9C:offs+0x9E] = binascii.a2b_hex("%0.4X" % newversion) + + with open(fpath, "wb") as f: + f.write(tmd) + print '' + +if os.path.exists(arguments.inputfile): + if (os.path.isdir(arguments.inputfile)): + for dname, dirs, files in os.walk(arguments.inputfile): + for fname in files: + if(fname.lower().endswith('tmd')) or (fname.lower().endswith('tmd.out')): # if(fname.lower() == 'tmd'): + fpath = os.path.join(dname, fname) + if os.path.isfile(fpath): + tmdProcess(fpath) + + elif os.path.isfile(arguments.inputfile): + tmdProcess(arguments.inputfile) + +print 'Finished' diff --git a/tools/WifiGeckoReader.exe b/tools/WifiGeckoReader.exe new file mode 100755 index 0000000..40853d3 Binary files /dev/null and b/tools/WifiGeckoReader.exe differ diff --git a/web/DOL.st.vwii/revisions b/web/DOL.st.vwii/revisions new file mode 100644 index 0000000..da7e38d --- /dev/null +++ b/web/DOL.st.vwii/revisions @@ -0,0 +1,7 @@ +47- +46- +45- +44- +43- +42- +end diff --git a/web/revisions.st b/web/DOL.st/revisions similarity index 63% rename from web/revisions.st rename to web/DOL.st/revisions index e25b5cc..095eb04 100644 --- a/web/revisions.st +++ b/web/DOL.st/revisions @@ -1,3 +1,7 @@ +47- +46- +45- +44- 43- 42- 41- diff --git a/web/DOL.vwii/revisions b/web/DOL.vwii/revisions new file mode 100644 index 0000000..da7e38d --- /dev/null +++ b/web/DOL.vwii/revisions @@ -0,0 +1,7 @@ +47- +46- +45- +44- +43- +42- +end diff --git a/web/revisions b/web/DOL/revisions similarity index 91% rename from web/revisions rename to web/DOL/revisions index 5de2526..bace423 100644 --- a/web/revisions +++ b/web/DOL/revisions @@ -1,3 +1,7 @@ +47- +46- +45- +44- 43- 42- 41- diff --git a/web/Languages/german.lang b/web/Languages/german.lang index 9f3f6c5..6d5917f 100644 --- a/web/Languages/german.lang +++ b/web/Languages/german.lang @@ -7,7 +7,7 @@ Delete Category = Kategorie löschen Remove Category = Kategorie entfernen Select Category (-/+) = Kategorie auswählen (-/+) Options = Optionen -Info = +Info = Über Really remove? = Wirklich entfernen? Delete Forever? = Endgültig löschen? Yes = Ja @@ -30,21 +30,20 @@ All = Alle unassigned = nicht zugeordnet = Page %i of %i = Seite %i von %i -STANDARD = -Theme = -Themes = +STANDARD = Standard Language = Sprache Languages = Sprachen Font = Schriftart Fonts = Schriftarten -Slide Effect = Slide Effekt +Slide Effect = Übergangs-Effekt Category remember = Kategorie merken last = letzte Number of Apps = Anzahl Apps Move = Verschieben Credits = Danksagungen Version: = -Coder: = Programmierer: +Coder: = Entwickler: +Developers: = Entwickler: Designer: = Special thanks to: = Besonderen Dank an: activated = aktiviert @@ -52,11 +51,11 @@ Activate = Aktivieren Deactivate = Deaktivieren Change Code = Code ändern please wait = Bitte warten -Update = +Update = Aktualisierung Download = New Rev is available for download = Neue Rev steht zum Download bereit Downloading file... = Lade Datei herunter... -Do you want to update now ? = Jetzt updaten? +Do you want to update now ? = Jetzt aktualisieren? Initialise network... = Initialisiere Netzwerk... Do you want to reboot now ? = Jetzt neu starten? Display = Bildschirm @@ -66,7 +65,7 @@ Exit to System Menu = Beenden, zum Systemmenü Exit = Beenden Network Settings = Netzwerk Auto Connect = Automatisch verbinden -Update Info = Update-Info +Update Info = Aktualisierungs-Info No network connection = Keine Netzwerkverbindung Error = Fehler Error while reading file = Fehler beim Lesen der Datei @@ -85,4 +84,15 @@ Menu = Menü Dialog box = Dialogfeld Device icon = Geräte-Symbol Storage Device = Speichergerät -Navigation key exchange = Navigationstaste Austausch \ No newline at end of file +Navigation key exchange = Navigationstasten umkehren +Show All = Alle Anzeigen +Wifi Debug Log = Debug-Log über Wifi +Theme = Thema +Themes = Themen +External Applications = Externe Anwendungen +Launch Settings Editor GUI = Settings Editor GUI starten +Exit to Wii U menu = Beenden, zum Wii-U-Menü +Restart HBF = HBF neu starten +Launch BootMii (IOS) = BootMii (IOS) starten +Launch BootMii (Boot2) = BootMii (Boot2) starten +SD Card Debug Log = Debug-Log auf SD-Karte diff --git a/web/revisions.vwii b/web/revisions.vwii deleted file mode 100644 index 0ac0b5b..0000000 --- a/web/revisions.vwii +++ /dev/null @@ -1,3 +0,0 @@ -43- -42- -end diff --git a/web/updates b/web/updates index 44d58be..18ae571 100644 --- a/web/updates +++ b/web/updates @@ -1,3 +1,82 @@ +//rev47: +- build against libruntimeiospatch 1.5.3 +- rename "SD Gecko" to "SD Card Debug Log" in Settings +- rename "Wifi Gecko" to "Wifi Debug Log" in Settings +- only scan list of available IOS once per session +- disable 'SD Card Gecko' by default (debug log on SD Card), + because it's causing a MASSIVE slow down when opening an + app's details dialog the first time in a session, when + using a shitty class 2 or whatever SD Card +- fixed that newly build vWii forwarder accidently was the + same than the Wii forwarder +- fixup BootMii (IOS) detection on Wii +- fixup showing device icon for apps +- add ISO0 (any version) to list of known stub IOS + (it's a custom IOS installed by several old apps) +- update german translation + +//rev46: +- fix size and layout of device prompt in vWii builds +- remove 'All' button from device prompt in vWii builds +- re-enable 'SD Gecko' setting in vWii builds +- support for Wii U Pro Controller trough FIX94's libwupc +- support for Wii U Pro Controller in the installer +- treat Y button on Game Cube Controller, Classic Controller + and Wii U Pro Controller like 1 button on the Wii Remote +- treat X button on Game Cube Controller, Classic Controller + and Wii U Pro Controller like 2 button on the Wii Remote +- press Z on Game Cube Controller or L Classic Controller or + Wii U Pro Controller to open Settings menu +- press R on Classic Controller or Wii U Pro Controller to + open External Applications menu (no unused button left for + Game Cube Controller) +- press ZL on the Classic Controller or Wii U Pro Controller to + open the device selection prompt (no unused button left for + Game Cube Controller) +- press ZR on the Classic Controller or Wii U Pro Controller to + open the system selection prompt (no unused button left for + Game Cube Controller) [only on Wii] +- previously only the first controller was honoured, now all + four are being connected, though only the first one of each + kind (Wii Remote, Game Cube Controller or Wii U Pro Controller) + can be used, each additional non-unique controller is ignored +- in partition mounter replace debug_printf with xprintf +- disable several DVD and Memory Card related functions in vWii +- don't initialize DVD drive on start in vWii builds +- allow 'SD Gecko' and 'Wifi Gecko' in parallel +- update german translation + +//rev45: +- built against libruntimeiospatch 1.5.2 +- fixed loading newly downloaded HomebrewFilter from online + update of standalone builds +- always return 0 (not found) for bootmii on vWii +- add IOS5 rev 65280 to list of stub IOS +- fix Settings Editor GUI path for SD Gecko in GC MC Slot A +- fix 'Exit to Wii U menu' not visible in vWii builds +- hide 'SD Gecko' setting in vWii builds +- various Makefile improvements +- other minor or internal changes + +//rev44: +- built against libruntimeiospatch 1.5.1 +- apply XFLAGS (flag specifying build-type (Wii/vWii, + installer/forwarder) to CXXFLAGS not just CFLAGS + * this will speed up HBF on vWii. + x only the first time you choose an application will + delay 1 or 2 seconds (as we are scanning all available + IOSes, for you to choose a different IOS to start an + application with, before it always delayed) + x same for external launchers menu + x no more delay when opening the settings + * this will fix upgrading HBF via network on vWii. + x previously it was accidently downloading the Wii version + * this will fix upgrading standalone HBF via network. + x previously it was accidently downloading the installer + * ... yeah, one variable, huge impact ... +- move creation of distribution files into dist/ +- bump channel version to 44 (accidently skipped for 43) + //rev43: - added chinese translation and font file (thanks to kavid) - fixed downloading japanese font file from server