For whatever reason, this allows the patcher to use the correct hashes upon initial download via GoNUSD. This should probably be looked into eventually...
This should be refined in some way going forward, but will work for now.
We rewrite the default API (i.e. https://api.oscwii.org) to be http. None of this is covered by the Wii Shop Channel's specified subdomain, so we explicitly state it.
The server certificate was mistakenly using the public key of the CA and private key of itself, instead of the reverse.
We additionally bump the CA size to 2048 bytes.
It was determined that Opera mapped out things within the 0xe0000000 range. We remap 0x93xxxxxx to be as wide as possible, in order to write over ES. Nintendo, by default, appears only maps 8 megabytes(?) (mask 0xff) - too little for us.
We then change our IOS patch address to write at 0x92a73ad4 instead of 0xd3a73ad4, as some unknown shenanigans appear to be in play. Writes fully commit via 0x92.
Lastly, we switch to utilize ipl::Exception::__ct in order to have exceptions displayed should any errors occur.
This is early enough in the boot cycle that it does not appear to throw any exceptions, and if such should occur, we have our exception handler present.
However, this appears to be broken on a vWii itself, and needs some tweaks. These will be determined at a later date. However, the changes are extremely large, so this commit is being made.
Other patches are more lengthy, and should reside in their own file. We rename the existing `patches.go` to a more appropriate name so that other patch sets can be separate.
We wish to preserve the first blr, but it's ridiculous to clear it and replace it with itself.
Now, we only clear the contents of the three textinput::EventObserver we overwrite.
With this, we can write assembly directly within patches. This assists for easier tweaks of code, and no need to manually assemble for rapid prototyping.