First, to say that i'm not a developer (not a homebrew developer, i mean) and i'm surely wrong but i am curious about if the following implementation could be possible. If i am very wrong, i'll ask the deletion of this post upon request. Please, do not be harsh.
Background
At the beginning, we had backup loaders. They work because they are able to read backups using an special IOS (249), which is a modification of a previous IOS (37) with patched backup reading functionality (notice that IOS 249 uses a different number that 37, thus you can have both installed, the original and the hacked one). On the other hand, games themselves are compiled to use another IOS numbers (not 249). To solve that, backup loaders force games to use 249 dynamically (on loading), so the games can also access the DVD. However, this is one of the main problems of compatibility, because some games do not work well when forced to work on an IOS 37 derivative.
CIOSCORP avoids compatibility problems by introducing the backup functionality to all the IOS installed in the system. Therefore, any IOS is able to read backups, so the disk channel can load backups, and games can access the data on the DVD backup using the IOS they were programmed for. The problem is that installing CIOSCORP is more riskii
than installing IOS249 and a backup loader, because you are modifying IOSes potentially used now or in the future by the wii system. That is, you are replacing your original IOS 16 for another, instead of only adding one IOS more, that is the riskii thing, isn't it?
Proposal
Two main steps:
a) Do not replace every IOS in the system, but install alternative versions for all of them with numbers that can be calculated from a table or a simple function. For example, 37+212=249, then you can obtain the numbers for 36->248, etc. It is only an example, I will prefer myself an smaller sum (+128) or to change one of the bits in the binary form of the original IOS number.
b) Have a backup loader that does not force 249 to all the games, but force its corresponding modified IOS. If the game requires IOS 36, force 248. That is, you force the IOS which is the same than the required by the game, plus the backup reading functionality.
I think this would solve most compatibility problems, with less risks than replacing all the IOSes in the system.
Potential problems
Space, of course. We double the number of IOSes in the system. Is there enough room? It should be possible to the backup loader to install IOSes dynamically from SD when necessary. But, what happens if an installation goes wrong?
Maybe backup loaders cannot detect which IOS the game is requiring a priori (I assume they can). Anyway backup loaders should let the user to change the forced IOS number from menu, to try different versions and let users to have a database of best IOS-game correspondences.
Games that change IOS during execution are not supported (CIOSCORP should support them right now). If changing the IOS dynamically is performed by the IOS API, maybe this problem could be solved but modifying the implementation to choose the corresponding hacked IOS.
Background
At the beginning, we had backup loaders. They work because they are able to read backups using an special IOS (249), which is a modification of a previous IOS (37) with patched backup reading functionality (notice that IOS 249 uses a different number that 37, thus you can have both installed, the original and the hacked one). On the other hand, games themselves are compiled to use another IOS numbers (not 249). To solve that, backup loaders force games to use 249 dynamically (on loading), so the games can also access the DVD. However, this is one of the main problems of compatibility, because some games do not work well when forced to work on an IOS 37 derivative.
CIOSCORP avoids compatibility problems by introducing the backup functionality to all the IOS installed in the system. Therefore, any IOS is able to read backups, so the disk channel can load backups, and games can access the data on the DVD backup using the IOS they were programmed for. The problem is that installing CIOSCORP is more riskii
Proposal
Two main steps:
a) Do not replace every IOS in the system, but install alternative versions for all of them with numbers that can be calculated from a table or a simple function. For example, 37+212=249, then you can obtain the numbers for 36->248, etc. It is only an example, I will prefer myself an smaller sum (+128) or to change one of the bits in the binary form of the original IOS number.
b) Have a backup loader that does not force 249 to all the games, but force its corresponding modified IOS. If the game requires IOS 36, force 248. That is, you force the IOS which is the same than the required by the game, plus the backup reading functionality.
I think this would solve most compatibility problems, with less risks than replacing all the IOSes in the system.
Potential problems
Space, of course. We double the number of IOSes in the system. Is there enough room? It should be possible to the backup loader to install IOSes dynamically from SD when necessary. But, what happens if an installation goes wrong?
Maybe backup loaders cannot detect which IOS the game is requiring a priori (I assume they can). Anyway backup loaders should let the user to change the forced IOS number from menu, to try different versions and let users to have a database of best IOS-game correspondences.
Games that change IOS during execution are not supported (CIOSCORP should support them right now). If changing the IOS dynamically is performed by the IOS API, maybe this problem could be solved but modifying the implementation to choose the corresponding hacked IOS.