-
Notifications
You must be signed in to change notification settings - Fork 42
ISO Driver
ARK-4 does not require any form of ISO Driver configuration, there are only two ISO Drivers available (Inferno 2
and Sony's NP9660
) which the CFW will automatically choose from depending on the format used.
There are largely three types of formats: PBP
, ISO
and CSO
, plus many alternatives/derivatives of CSO
.
For the PBP
format, which is the Official Sony Format, the Original Sony NP9660
driver is used. For all other unofficial
formats, Inferno 2
is used.
The Inferno 2
ISO driver is an evolution of the Inferno Driver found, among others, in the PRO CFW
, for which ARK
itself is an evolution of.
Before ARK-4, several different versions of the Inferno
driver were created for different purposes, lets look at all of them, and try to add a versioning system to them, so we can have an idea of the evolution of this driver. We will start with PRO-C, which we will call Inferno 1
.
-
Inferno 1
: the originalInferno
driver as seen inPRO-C
. It includes theblock offset cache
speedup hack that greatly improved speed withCSO
format in comparison to traditional drivers such asM33 Driver
. It also included an overall cache that could use the extra RAM on PSP slims to improve speed, this is knwon asInferno Cache
, though it had conflicts with theForce Extra RAM
patch. -
Inferno 1V
: the originalInferno
driver port forPROVITA
, used up toARK-3
. It was a stripped down version of the one in PRO-C, minus theInferno Cache
since the Vita lacked the PSP Slim's extra RAM. -
Inferno 1S
: an experimentalInferno 1V
fork that added support for Splitted ISO files (SSO
), it was meant to improve the experience of transfering ISO files viaFTP
, it was scrapped and never used but source code can still be found in the originalARK-1
repository under the nameinferno.new
. -
Inferno 1D
: a port ofInferno 1
to theME CFW
with added support for theDAX
file format. It uses two separate algorithms to handleCSO
andDAX
. -
Inferno 1.5
: available inPRO-C2
, 1.5 is one of the greatest updates to a PSP ISO Driver ever made in regards to Compressed ISO reading speed. Thanks to the research of developerCodestation
, we were able to figure out a new speedup hack that proved to be the biggest one yet. It uses the fact that whenever a game requests data, the compressed data is always going to be smaller than the requested data, thus the buffer given by the game can be used to read all the compressed data at once and process each block in place, thus hugely reducing the amount of IO calls to satisfy the data request (which for an ISO is only one IO call). During this research, Codestation also developed a lightweight version ofCSO
calledZSO
, which is structurally identical to aCSO
file but data is compressed using theLZ4
instead of the standardDEFLATE
algorithm, which offers the fastest decompression speed available, while being identical toCSO
in its structure allowed the same algorithm to be used for both formats. -
Inferno 1.5V
: a stripped down version of the newly updatedInferno 1.5
ported over toAdrenaline
. It gets rid ofInferno Cache
as it was considered unnecessary on PS Vita, and also removes support forZSO
format, while maintaining the speedup hacks forCSO
.
Now that we've covered the evolution of the Inferno
Driver over the years, we can focus on all the changes done to it in ARK-4
that justifies it being called Inferno 2
.
-
Dynamic Patching
: all static offset patching done to the isofs library has been replaced with dynamic patching algorithms. This makesInferno
capable of working on a wide variety of configurations, including the original PSP, unmodified PS Vita Emulator, Adrenaline-patched PS Vita Emulator and PSP Toolkits such as testkits and devkits. -
Emulation of Empty UMD Drive
: on older versions of Inferno, as well as other ISO Drivers, it was never intended for the driver to run without an ISO file to be mounted, thus several bugs existed that caused malfunction when the driver was used without an ISO file specified, this prevented emulation of an empty UMD drive, which was needed on PS Vita to run certain homebrew that checked for a UMD. The main bug was in the implementation of the functionsceUmdCheckMedium
, a boolean function used to check if a UMD is inserted in the drive, on ISO driver this function was hardcoded to always return true, except if an ISO driver is not specified, then it was hardcoded to wait in an infinite loop until one is (which never happens). The solution used by eCFW such as ARK (up to ARK-3) and TN-CEF (including Adrenaline) was to include a small dummy fake.cso file to mount when no ISO file is speficied. On the newInferno 2
driver, among other things, this function has been corrected to behave exactly like the original, simply returning False if no ISO has been specified, thus allowing the ISO driver to simulate an empty UMD driver by loading it without an ISO file specified. -
Completely revamped Compressed ISO Reader
: theCSO
driver available with the original Inferno was heavily hardcoded to work only with CSO and only with the PSP. The entire reader was completely re-written from scratch with much much less and lighter code, much more portability (it has been ported to PC, PS2/OPL and Wii/Nintendont) as well as a much more generic and configurable structure, allowing for easily adding support for other formats without changing the core reader. -
Improved Compressed ISO Read Speeds
: not only is the algorithm written with efficiency in mind, it also implements a more aggressive form of the speedup hacks seen onInferno 1.5
. -
Support for other compressed formats
: the new reader was also made to be easily configurable and expandable to support other formats, having been given support for not onlyCSO
andZSO
as seen onInferno 1.5
, but also adds support forDAX
as seen on ME's Inferno update as well as earlySE/OE CFW
, as well as the rarely seen beforeJSO
andCSOv2
formats. -
Improved Inferno Cache compatibility
: issues between Inferno Cache and Force Extra RAM has been resolved, including being able to use it with PRO Online, as well as allowing the use of Inferno Cache on PS Vita and PSP 1K. The Cache size is no longer configurable, but it adjusts automatically depending on device/configuration, while also allowing for enough free space for other features or plugins.