Aus The Homebrew Cloud
Zur Navigation springenZur Suche springen


Kami ni nare! Kami ni...ahem. Sorry. Blame NieR: Automata and BotW for delaying me.

In this release:

DLP region patch to allow out-of-region download play. I shouldn't even need to say this, but this is for YOUR CURRENT CONSOLE, not whatever you're connecting to.
Optional mode to operate on whole codebin with load/save code, since merged codebins are (unfortunately) a community standard.
AGB/TWL are not repatched unless required.
Fixed an edge case where a NAND CID starting with a zero would lead to configuration files being saved and subsequently completely ignored.

100% less memory corruption under certain conditions
Patches under bin were previously ignored. This is no longer the case.
11.3 FIRMs now function properly.
Bump friends ver.

Improve logging in loader by spitting a message out prior to a svcBreak.
Loader now uses a forked version of ctrulib to eliminate the overhead of maintaining modified code that would be better off integrated into ctrulib.
svcBackdoor now disables FIQ/IRQ before jumping to the specified function, and restores the state before returning to usermode. This is largely uneeded, but avoids possible unsafeness in nintendo's original implementation.
newlib's malloc implementation is now used, which is much more stable and exhibits better memory distribution.
Reboot patch is now self-calling like Luma's implementation. Functionality-wise, it is identical to previous aside from now requiring FIRMs present for AGB/TWL to function. It will not load off NAND currently, though I'd like to restore this behavior.


In this release, many things have had minor tweaks for usability and cleanup of earlier, less flexible behavior.

For users:

CETK and firmkeys no longer go in /corbenik/share/keys, they go in /corbenik/lib/firmware.
Cache, bytecode, and config format has changed. This is a mandatory clean install.
Corbenik can now use different configuration information on different consoles, and configs are now named by the first dword of the NAND CID.
'Save configuration' has been removed. Config is automatically saved and recached on exiting the toplevel options menu.
Glitchy menu gap was partially fixed on o3ds. You may notice the scroll window being slightly off; I'm aware.
Firmwares are now detected by a heuristic rather than static comparison against a known table. In practice, there may be edge cases, but so long as nintendo doesn't add another section ALL FIRMWARES are supported now and in the future. Whether patches are supported is another story, sadly.
Added a 2.x firmprot patch based on the code from Luma.
System modules are now loaded from subdirectories. This allows usage of TWL/AGB system modules (of which there's only one useful modification, TwlBg)
For developers:

Corbenik now uses almost entirely dynamic allocations instead of static memory offsets and buffers.
The entire FIRM decryption code was rewritten to be more flexible than the originally in-use heavily modified cakes code. Some bits still remain, but a large portion of logic has changed.
All writable strings have been eliminated and this is now an error.
Configuration is now (partially) backend independent within the main corbenik code, and additionally has had groundwork to support multiple firmware files. This is not exposed in the interface, but some careful manual modification of configurations allows changing the firm paths.
Add some basic unit testing which is a big TODO. Blame 11.1 for forcing an early merge of this. Work will continue.


No, seriously. 86 commits and constant work does not qualify as dead by Gbatemp/4chan/whatever standards. Anyone tracking git knows I've been working on this on-and-off. Even the anons seem to be using the skeith builds, so time for another stable release. I went too long, apologies.

Frontend/user stuff changes:

Chainloader now passes argc = 1, argv[0] to chainloaded payloads. This doesn't mean much now, but is obviously useful.
Gigantic directory restructure to be more unix-y. Yes, you're going to have to get used to it. No, this will not be reverted. Please re-read the readme to figure out where things moved to.
Background support. This has been in the nightly for a while. Put menuhax splashes at /corbenik/share/top.bin//corbenik/share/bottom.bin.
Framebuffer is re-initialized as RGBA8 (really ABGR8, but w/e.) Notably, this means whether you run a screeninit payload, what happens is pretty much the same. The screen is reinitialized on boot. The screen mode will be properly reset to RGB8 when launching things via chainload (so don't worry about that.)
Dimming support on backgrounds. This means that while you are in the menu, the background is dimmed for readability of text. The algorithm isn't quite perfect; it tunes it down by roughly 30% regardless of average brightness.
The need to get firmware titlekeys externally has been obviated. I can retrieve the needed keys to decrypt the cetk from FIRM0 despite a9lh tampering with it. You'll still need to provide 0x11 key96 externally - a9lh destroys this, and there's nothing I can do about this.
Implemented a psuedo-pager mode (think less) and updated the help menu to be more, well, helpful.
Allow changing of the accent color.
Bugfixes and performance optimizations.
Probably missed something, I bet.
Changes to distribution:

Dropped nochain. The option is still there in the source code and you can pass --disable-chainloader. Problem is that as I may end up adding more options in the future, I'm only going to officially release one configuration. Take firefox for example; there's a huge number of toggles. Building them all for release is absurd.
Locales were dropped from being prebuilt. I may provide them in a separate zip later, but for now - you'll need to use the included script to fetch and generate them manually. I can't be arsed to provide a bat file since windows scripting is not sane.
Sha512sums are generated against the as well as the files within - mainly to resolve the issue with any sort of totally unacceptable repacks. Please verify against the sha512sums if you didn't get this off github. If the sha512sums don't match, you'll recieve zero support. I still don't like the whole idea of repacking binaries, but w/e GPL and all that.
Backend/you don't care unless you're looking at the source:

Ported to libctr9. This eases some maintenance and cut out much code which needed to be done manually.
Dropped makefile in favor of autotools. You can argue about how it sucks all you want; it does the job well.
Some amount of refactoring (read: a lot)


More minor changes to enhance stab-- okay, let's not go there again.

This is a small release:

Add a chainloader to Corbenik. This is optional and can be cut out at compile time. Depending on which build people prefer, I'll only build one or the other during release at some point. The option to disable will remain in the source. For now, the default build is done with CHAINLOADER=1 (That's enabled.)
Fixed a bug with garbage on the framebuffer with screeninit (I think. Please test!)
A small number of grammatical/spelling issues were rectified by @gnmmarechal. For the fact that I never once touched spellcheck and don't use autocompletion, that's pretty good all things considered. ;)
A few changes to patches and an experimental one based on some of @Subv's work on the svc permission check in contrib. This may be a severe security hazard, but has some use. Use caution.
This release is fairly minor. If you have no interest in chainloading, and do not use a no-screeninit arm9loaderhax payload, you do not need to update. No core features have changed. Patches do not need to be updated.


In this release:

The localeemu path was fixed so it is actually usable now (I'm a doof.)
Major UX overhaul. This includes a better font, menu restructuring, scrolling on menus, etc. Basically, it looks better now. It may look more newbie-friendly, but it isn't still. Trust me.
Descriptions are exposed via the select button on entries.
The boot.log is formatted differently and placed in a logging buffer now, and is dumped when it reaches a certain size (and before boot/reboot/shutdown)
The menu font was externalized. You can change it if you don't like it - the current font in use is Tewi. See the Fonts wiki page.
Experimental support for EmuNAND placed at the end of the disk rather than the start. This is untested as of yet, and is ill-supported by any userland tools like Decrypt9. It has some advantages, such as only requiring resizing the FAT partition to add and delete EmuNAND space. You'll have to use something like dd if you want to test this at the moment.
Patch descriptions were updated to be more explanatory. You can continue using patches from 0.0.11 if you'd like since the bytecode is the same, but the descriptions are much better in this version.


This is more a hotfix to 0.0.10 than an actual release, but eh. @TuxSH found the crash bug I somehow was missing, so now there should be no issues any longer.



Further improvements to overall system stability and other minor adjustments have been made to enhance the user experience.
Joking aside, here's the real changelog:

Menu code has been unified. Notably, your cursor will keep its' position when you go in and out of a submenu. Some of the layout of menus has also been generally improved.
Contributed patch directory added. Anyone who has anything cool they want to share - submit a PR! These are bundled with official releases in the /corbenik/contrib directory. Currently, the one patch here is mysterymachine.vco which allows using SALT's servers like their official HANS-based code patcher. (Thanks, @Wolfvak!)
Rate limit keypresses to a human amount. That said, how people were hitting this IDK since I don't actually process the key until it is lifted.
text/ro/data loading/saving are now separate. This is for a very good reason - combined codebins don't give information about segment size to fix up the current exheader without having an exheader (which with size changes in segments, we need to do)
Fixed a crash caused by enabling Loader and EmuNAND at the same time.
Fix a crash caused by enabling step through. That said, this is a temporary fix and only prevents hitting the real bug.


In this release:

Improve logging hugely with 'Verbose' on so now I can actually get very close to a VM trace from it, and determine properties of the system I wasn't able to before without actually asking.
Fix a longstanding bug since I added TWL and AGB that caused unaligned memory access to sometimes catastrophically crash in certain circumstances. This is likely a GCC bug or ARM processor quirk.
Patch versions are now updated in lockstep to releases that change them. I will know if you're using an old patch.
For people tracking patches for personal use or development:

No opcodes abort anymore. This is now the patch developer's responsibility to check flags for results and use abort now if something went wrong.
More VM improvements which will be added to the wiki later.
The crappy jmp N syntax is gone in favor of labels. Now it's MUCH less painful process to write patches. The crappy python assembler will still be replaced eventually, so consider this a temporary fix.
jmpf and jmpnf were added to 'Jump if pattern found' and reversed, accordingly.


In this release:

Fixed svcBackdoor, which I apparently broke before I even did release 1. Major oversight. You'll now not blackscreen on retroarch or other applications.
Courtesy @Wolfvak, code sections can be loaded off the SD now.
Misc fixes to cache (they were reversely named compared to the rest of corbenik)
TWL patches were merged together.
AGB Bootscreen was split out as optional for games that don't pass the logo check.
SysModule segment resizing should work now - we in-place expand the FIRM image. (I need to PR to Cakes, too - remind me @mid-kid.) This means you can use 10.2 FIRM (but seriously, don't.)
Configuration should be saved manually prior to booting now - this is because I was repeatedly writing it all over, and there's no real correct way to determine when to save. A dedicated menu option was added.


In this release, versus the last botched one:

Actually functional patches that don't screw up the system - caused by adding one somewhere I shouldn't have been.
Patches are now little-endian like they were supposed to be in the first place.
@Wolfvak's dumping code got a few changes. System title code can be dumped, but beware since this makes startup very very slow and you probably shouldn't enable that suboption unless you have a need for it.
N3DS options should be hidden on O3DS now, since they don't do anything anyways.


In this release:

Hopefully working reboot support. This has only been tested on n3DS, and I haven't fully put it through the paces yet. Please report issues if this doesn't work for you. It may not. ;/
AGB/TWL patches. They're currently using static offsets, and the TWL one is split by console, so these should be considered temporary and probably buggy.
Fix for Force AltMenu, thanks @TuxSH for pointing this one out to me. Relative bl instructions are not proper patterns, which should have been obvious to me.
More interpreter changes. Apparently, some values were actually being stored BE. This is no longer the case. Additionally, seek (u32) has been added to seek to an absolute offset in the current space.
text/data/ro dumping support, courtesy @Wolfvak.


There's been a few important commits to master since the last one this morning so with great regret, I'm doing this. Again. Expect this to slow once things are more stable.


Multiple EmuNANDs (up to ~10 right now - it's up to you to make sure your index is valid. X decreases, A increases the selection)
Options menu will trigger a reconfiguration. This is temporary, but resolves the enabled emunand -> reboot -> into sysnand issue.
Opcode changes: test and ver behave more like the intel cmp instruction, and the weird skip behavior was removed in favor of conditional jmps - jmpeq, jmpne, jmplt, jmpgt, jmple, jmpge. Also added was clf which clears the flags.


Notable additions:

EmuNAND support (only one right now, but this is due to lack of menu, not code)
Screen-init for people with non-screeninit a9lh
Loader now has rel commands for the other segments due to an oversight
I fixed up some very wrong offset code that somehow worked before.


This release adds suport for title version checks in the VM, as well as or, xor, not, and ver opcodes.

It also should fix a minor scoping issue that caused a crash when TWL or AGB failed to decrypt.

Additionally, release builds now come with language emulation files for single language, single region titles. This is autogenerated from 3dsdb. Report any problems with output and I'll make any workarounds needed.


stable-1 had severe issues relating to missing FIRMs. Hopefully this resolves them.


The first release.

This release is mainly of interest to people who like experimentation, because there's still a few missing bits.

Most of the important bits are implemented. If you're an A9LH SysNAND N3DS user, most of this will work rather well at the moment.