mirror of
https://github.com/wiidev/usbloadergx.git
synced 2024-11-15 16:05:10 +01:00
148 lines
5.3 KiB
C
148 lines
5.3 KiB
C
|
// This program is free software: you can redistribute it and/or modify
|
||
|
// it under the terms of the GNU General Public License as published by
|
||
|
// the Free Software Foundation, version 2.0.
|
||
|
|
||
|
// This program is distributed in the hope that it will be useful,
|
||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
|
// GNU General Public License 2.0 for more details.
|
||
|
|
||
|
// Copyright (C) 2010 Joseph Jordan <joe.ftpii@psychlaw.com.au>
|
||
|
// Copyright (C) 2012-2013 damysteryman
|
||
|
// Copyright (C) 2012-2013 Christopher Bratusek <nano@tuxfamily.org>
|
||
|
// Copyright (C) 2013 DarkMatterCore
|
||
|
// Copyright (C) 2014 megazig
|
||
|
|
||
|
#ifndef __RUNTIMEIOSPATCH_H__
|
||
|
#define __RUNTIMEIOSPATCH_H__
|
||
|
|
||
|
/**
|
||
|
* Version information for Libruntimeiospatch.
|
||
|
*/
|
||
|
#define LIB_RUNTIMEIOSPATCH_VERSION "1.5.1"
|
||
|
|
||
|
//==============================================================================
|
||
|
// HW_RVL header
|
||
|
//==============================================================================
|
||
|
#if defined(HW_RVL) /* defined(HW_RVL) */
|
||
|
|
||
|
/**
|
||
|
*Returns true when HW_AHBPROT access can be applied
|
||
|
*/
|
||
|
#define AHBPROT_DISABLED (*(vu32*)0xcd800064 == 0xFFFFFFFF)
|
||
|
|
||
|
//==============================================================================
|
||
|
// Error code definitions:
|
||
|
//==============================================================================
|
||
|
#define ERROR_AHBPROT -5
|
||
|
#define ERROR_PATCH -7
|
||
|
|
||
|
//==============================================================================
|
||
|
// C++ header
|
||
|
//==============================================================================
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
/* __cplusplus */
|
||
|
|
||
|
//==============================================================================
|
||
|
// Extra standard declarations
|
||
|
//==============================================================================
|
||
|
typedef signed int s32;
|
||
|
//==============================================================================
|
||
|
|
||
|
//==============================================================================
|
||
|
// Patchsets:
|
||
|
//==============================================================================
|
||
|
/*
|
||
|
Wii:
|
||
|
* DI Readlimit
|
||
|
* ISFS Permissions
|
||
|
* ES SetUID
|
||
|
* ES SetIdentify
|
||
|
* Hash Check (aka Trucha)
|
||
|
* New Hash Check (aka New Trucha)
|
||
|
|
||
|
Sciifii:
|
||
|
* MEM2 Prot
|
||
|
* ES OpenTitleContent 1 & 2
|
||
|
* ES ReadContent Prot
|
||
|
* ES CloseContent
|
||
|
* ES TitleVersionCheck
|
||
|
* ES TitleDeleteCheck
|
||
|
|
||
|
vWii:
|
||
|
* Kill Anti-SystemTitle-Install 1, 2, 3, 4 & 5
|
||
|
*/
|
||
|
|
||
|
|
||
|
//==============================================================================
|
||
|
// Functions:
|
||
|
//==============================================================================
|
||
|
|
||
|
/**
|
||
|
* This function can be used to keep HW_AHBPROT access when going to reload IOS
|
||
|
* @param verbose Flag determing whether or not to print messages on-screen
|
||
|
* @example
|
||
|
* if(AHBPROT_DISABLED) {
|
||
|
* s32 ret;
|
||
|
* ret = IosPatch_AHBPROT(false);
|
||
|
* if (ret) {
|
||
|
* IOS_ReloadIOS(36);
|
||
|
* } else {
|
||
|
* printf("IosPatch_AHBPROT failed.");
|
||
|
* }
|
||
|
* }
|
||
|
* @return Signed 32bit integer representing code
|
||
|
* > 0 : Success - return equals to number of applied patches
|
||
|
* ERROR_AHBPROT : Error - No HW_AHBPROT access
|
||
|
*/
|
||
|
s32 IosPatch_AHBPROT(bool verbose);
|
||
|
|
||
|
|
||
|
/**
|
||
|
* This function applies patches on current IOS
|
||
|
* @see Patchsets
|
||
|
* @param wii Flag determing whether or not to apply Wii patches.
|
||
|
* @param sciifii Flag determing whether or not to apply extra Sciifii patches.
|
||
|
* @param vwii Flag determing whether or not to apply extra vWii patches.
|
||
|
* @param verbose Flag determing whether or not to print messages on-screen.
|
||
|
* @example if(AHBPROT_DISABLED) IosPatch_FULL(true, false, false, false);
|
||
|
* @return Signed 32bit integer representing code
|
||
|
* > 0 : Success - return equals to number of applied patches
|
||
|
* ERROR_AHBPROT : Error - No HW_AHBPROT access
|
||
|
* ERROR_PATCH : Error - Patching HW_AHBPROT access failed
|
||
|
*/
|
||
|
s32 IosPatch_RUNTIME(bool wii, bool sciifii, bool vwii, bool verbose);
|
||
|
|
||
|
|
||
|
/**
|
||
|
* This function combines IosPatch_AHBPROT + IOS_ReloadIOS + IosPatch_RUNTIME
|
||
|
* @see Patchsets
|
||
|
* @param wii Flag determing whether or not to apply Wii patches.
|
||
|
* @param sciifii Flag determing whether or not to apply extra Sciifii patches.
|
||
|
* @param vwii Flag determing whether or not to apply extra vWii patches.
|
||
|
* @param verbose Flag determing whether or not to print messages on-screen.
|
||
|
* @param IOS Which IOS to reload into.
|
||
|
* @example if(AHBPROT_DISABLED) IosPatch_FULL(true, false, false, false, 58);
|
||
|
* @return Signed 32bit integer representing code
|
||
|
* > 0 : Success - return equals to number of applied patches
|
||
|
* ERROR_AHBPROT : Error - No HW_AHBPROT access
|
||
|
* ERROR_PATCH : Error - Patching HW_AHBPROT access failed
|
||
|
*/
|
||
|
s32 IosPatch_FULL(bool wii, bool sciifii, bool vwii, bool verbose, int IOS);
|
||
|
|
||
|
//==============================================================================
|
||
|
// C++ footer
|
||
|
//==============================================================================
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif /* __cplusplus */
|
||
|
|
||
|
//==============================================================================
|
||
|
// HW_RVL footer
|
||
|
//==============================================================================
|
||
|
#endif /* defined(HW_RVL) */
|
||
|
|
||
|
#endif
|