Skip to content

Releases: chaoskagami/corbenik

v0.3.1 - This Cannot Continue edition

27 Mar 21:16
Compare
Choose a tag to compare

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

In this release:

Features

  • 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.

Bugfixes

  • 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.

Backend:

  • 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.

Hotfix / Half-refactor release

27 Sep 05:59
Compare
Choose a tag to compare

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.

0.2.0 - I'm not dead. Yet.

25 Jul 01:08
Compare
Choose a tag to compare

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 release.zip 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)

0.1.1 - Fixups, chainloader

21 Jun 21:21
Compare
Choose a tag to compare

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.

0.1.0 - Minor version bump, fancy graphics

17 Jun 19:56
Compare
Choose a tag to compare

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.

0.0.11 - Because we found the bug, guys.

14 Jun 21:18
Compare
Choose a tag to compare

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.

0.0.10 - Next release.

14 Jun 20:44
Compare
Choose a tag to compare

Changelog:

  • 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.

0.0.9 - I'm in your boxen fixing your twlagben

12 Jun 02:59
Compare
Choose a tag to compare

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.

0.0.8 - Terror of Crashes (or - more bugfixing)

10 Jun 02:02
Compare
Choose a tag to compare

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.
  • Stability.

#7 - Now with less press any key to reboot

08 Jun 02:27
Compare
Choose a tag to compare

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.