mid-kid / cakesforeverywan Goto Github PK
View Code? Open in Web Editor NEWA CFW for the 3DS.
License: GNU General Public License v3.0
A CFW for the 3DS.
License: GNU General Public License v3.0
A menu for selecting a firmware.bin from a folder.
Essentially, it'll just scan the folder (probably /cakes/{firm,agb_firm}), and put all the options in a menu.
When one is selected, it's added to the config, and the load_firm() function is called accordingly, the cakes list is reloaded for the current firmware, and the config is modified accordingly.
On first boot, when a new config is created, show the selection list if there's more than one firmware, otherwise select the only firmware in the directory.
Of course, the same menu has to exist for native_firm, agb_firm and twl_firm.
Really like CakesFW, but it leads into black screen after updating to 11.3. Seems like only Luma3DS works now.
Any idea of updating CakesFW?
Yeah, everything broke again.
@Wolfvak figured out the signatures for 11.0 - commit 78f24bb. I got the signature patch functional by 48bf378.
Unrelated - after pulling from @Wolfvak, the network graph for cakes on github seems screwed up and I'm not sure why. Should we report that to github?
EDIT: firmprot seems also to be at the same offset, but unlike the others I have no clue how to safely test this without fixing the emunand patch too. 4f7f391
EDIT 2: Again, emunand offsets seem unchanged as well. I can't check the o3ds offsets due to lack of having mine modified (runs 9.6 though.) f1fdfcc
I did a cursory test of emunand though - seeing as everything else was unchanged I simply updated the offsets and tested (it seems to work correctly, at least) The others were all properly verified and checked via hexdump and standalone_patcher.
Also, svcBackdoor is dead on arm11. Not fun.
Hi mid-kid i compile your cakes firmware on linux with make i dont get any error but if i whant now but it on my sd card decrypt 9 wip and uncart dont run any more.
If your whant i can upload my cakes.dat or what ever your need to found this my cakes.dat is bigger then the one in the release folder #
Hi,
I'm having some problems while setting up cake because it ends with a black screen.
It would be amazing to have a checkbox to save a log so we can spot problems faster.
Thanks a lot!
I can't make an issue on the repo itself, but the 3ds_injector doesn't work on 11.4
https://github.com/mid-kid/3ds_injector
3DS type: N3DSXL
Whats expected: Signature check disabled can install cia
What Happens: Signature Check still enabled after cfw "CakesFW" is loaded
is disable signature check ticked in boot options? : yes it is all options excluding autoboot are enabled.
Im not sure why this issue is happening..
Right now there's a limit of the amount of cakes that may be loaded.
I'd like to be able to remove it, as much as possible.
I've just compiled the latest version here in GitHub (9d82264), and my console hard-crashes (ie long press poweroff button to shutdown) when it reaches the selection menu.
I've added a few prints and it's apparently caused by the wait_key call in draw_menu, called from main to select what to do on boot. I've added one before and another after the call, and it seems it never returns.
Console is running an european 2DS with 9.2 on sysNAND, attempting to load firmware 0x50. I'm using themehax v2.2 to boot into Homebrew Channel, and then into Cakes launcher. I've tried replacing the boot.3dsx, skipping the HBC altogether, Cakes' but still crashed. Stable 108 works fine.
This bugs happened in 2ds(pokemon JPN Ver)
I found the 2ds have Two kinds of NandFlash
the one used Toshiba nand,With 988,807,168byte emuNAND backup(just like o3DS)
can launch emu
the other one used Samsung nand ,With 1,300,234,240byte emuNAND backup(just like n3DS)
cannot launch the emuNAND(not found)
I have no idea about this problem, but I think the CFW maybe read this emunand as n3DS
forget my pool English :)
Launching CakesFW with the TWL/AGB firmware files on the New3DS only brings up this issue.
"Couldn't decrypt ARM9 FIRM binary
Double-Check you've got the right firmware.bin.
If you are trying to decrypt a >=9.6 firmware on a <9.6 console, please double-check your key is saved at:/slot0x11key96.bin
We remind you that you can't decrypt it on an old3DS.
If the issue persists, please file out a bug report.
FIRM that failed: TWL_FIRM (AGB_FIRM if TWL_FIRM is deleted)"
This issue is only on the New3DS. Old3DS seems to decrypt these firmware files just fine and the patches work as expected.
The mega.nz link to the firmkey.bin for o3DS is dead, so could you add a torrent link to the firmkey.bin in the tutorial page?
On my two 3DSes, CETK/firmware.bin (Depending on if I include the firmkey) decryption fails via A9LH. They work normally via any other entrypoint.
Suggested by @Wolfvak, mainly due to the complexity of supporting all different versions/regions of a single userland title.
The cake format should have a flag, that tells what the patching method is for each patch. Depending on the patch method, it will either search for a pattern, pointed to in the patch header, or look for static offsets depending on the version, as has been done until now.
Variables should also have patterns to search for if necessary.
Bonus points for supporting search&replace as fallback for traditional static offsets if the current version can't be found.
Same symptom as issue #1, random pattern seen in bottom screen and spider hangs after that.
Hi! First of all, thanks for making such a great CFW. I noticed that auto-booting Cakes through A9LH outputs some debug text on the screen, such as loading FIRM files. Can we get an option to keep the entire bootup black? I'm hoping to make my 3DS boot up into SysNAND CFW as discreetly as possible, and am using arm9select as my initial A9LH payload.
Thanks again!
l saw that some players said the CakesFW 197 could not support B92 v1.2, so l want to know this......
My setup allows me to compile rxTools but I don't know why it doesn't work for Cakes :/
python patches/bundle.py patches/emunand/info.json patches/emunand/patches.s bui
ld/patches/emunand out/cakes/patches
ARMIPS Assembler v0.7d (Apr 1 2013 10:09:41) by Kingcom
patches.s(6) error: Invalid equation name 0x080d8670_unk2
patches.s(7) error: Invalid equation name 0x080d8670_unk1
patches.s(8) error: Invalid equation name 0x080d8670_unk0
patches.s(41) error: Invalid expression "(0x080d8670_unk0+1)"
patches.s(66) error: Invalid expression "(0x080d8670_unk1+1)"
patches.s(106) error: Invalid expression "(0x080d8670_unk0+1)"
patches.s(131) error: Invalid expression "(0x080d8670_unk2+1)"
Aborting.
Traceback (most recent call last):
File "patches/bundle.py", line 85, in
NameError: name 'ver' is not defined
make: *** [build/patches/emunand.baked] Error 1
This is my path:
c:\devkitPro\msys\bin;C:\Program Files\ImageMagick-6.9.1-Q16;C:\devkitPro\devkitARM\bin;C:\MinGW\bin;C:\Program Files\Broadcom\Broadcom 802.11 Network Adapter;;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Program Files\WIDCOMM\Bluetooth Software;C:\Program Files\WIDCOMM\Bluetooth Software\syswow64;C:\Program Files (x86)\Overlook Fing 2.2\bin;C:\Users\Lavanoid\bin;C:\Python27;C:\Users\Lavanoid\AppData\Local\GitHub\PortableGit_c2ba306e536fdf878271f7fe636a147ff37326ad\cmd;
Help? Pretty please?
With the new format (and arguably with the old), if the patch fails applying somewhere halfway through, it will be in a half-applied state, and if the user removes the nonworking patch and continues booting, it will fail, due to possibly missing parts of it.
We need some way to recover, and the most easy way to do that is by putting the unpatched firm at a original_firm_loc when loading it, and copying it to firm_loc in patch_reset.
We should also make sure the config is only saved AFTER the patching is done correctly.
https://github.com/mid-kid/CakesForeveryWan/blob/wip-new-format/source/patch.c#L221
Old format does this correctly, as the version is included in the header. The new format, however, requires loading more of the cake to be able to loop through the version list of each firm and memory patch, and if the current firm version isn't present, to ignore it. The most straight-forward way to do this would be to just load the whole cake instead of just the header and fill the array of cakes accordingly, but we could also save them somewhere to avoid loading them again later on.
Also general cleanup of the load_cakes_info function.
https://github.com/mid-kid/CakesForeveryWan/blob/wip-new-format/source/patch.c#L549
Don't know if it is possible....
A things must be to add a cake string in setting...
I patched AGB_FIRM as per this thread to allow GBA VCs to work.
When "Survive reboots when launching some titles" is enabled the screen goes black (the 3D slider light remains on.)
As reported by thaikoa
Currently, userland patches are stubbed.
What I want, is to be able to specify which application (most likely title ID) to patch, in a .cake file, and have 3ds_injector handle the patching. How do we tell 3ds_injector what patches to load? Possibly a file on the SD card, or a list of paths to .cake files somewhere in memory, or hell, have it load the config.dat and read the selected cakes.
This is one feature in other CFW's (Luma3DS for example) I'd love to see in Cakes!
A couple of people suggested I jump on here and give @mid-kid a mention.
I'm on o3ds / Cakes 1.08 / EmuNand 10.5 and as the titles says I can't launch my legit eshop copy of Monster Hunter 4.
As there are few reports of that error (helpful ones I mean) on the Internet I feared that my SD card was a defect or worse the 3ds itself. Just went and installed AuReiNand to be sure and the game finally booted.
No idea if Cakes 1.08 has an issue or if I'm the issue, but I thought it wouldn't hurt to tell you all this.
Sysmodule patches right now are severly limited to just replacing a whole system module.
I want to be able to do a few more things:
No clue what the root cause is but somebody claimed that the spider entry point is not working in firmware 8.1
Reported by GothicIII on GBATemp.
The slot0x11 key isn't being loaded, that's for sure, but it somehow fails.
Can anybody reproduce?
What it says on the tin. Reported by another_ on IRC. Apparently the 99 emunand.cake does work.
EmuNAND type is Gateway, size is 1.84GB.
Using commit e1a8d6b. o3DS a9lh, sysNAND on 9.2, emuNAND on 10.6. Also, in case it wasn't obvious, I'm Gelex :)
The problem is that Cakes seems to be unable to boot emuNAND. I've tried most combination of patches, and even just emuNAND with nothing else. From what I can tell visibly, cakes shuts off the backlight, and it never comes back on, so whatever hangs happens before Cakes does screen re-init. Strange thing is that Cakes is able to boot sysNAND with 10.4 firm, and that works fine. I can attest that ARN can boot emuNAND fine in both GW-emuNAND and redNAND versions of the emuNAND on the SD card, while changing formats does nothing for Cakes. I re-downloaded the 10.4 firmware to make sure it wasn't corrupted, and it is fine (cmp returned no differences between a fresh download and my copy). Anything else I should check for?
aleady try nightly and stable build.
the error is "Failed to decrypt the CETK", "Please make sure the CETK is right."
i am sure that cetk and firmware file is correct.
I built the newest code and placed files downloaded from https://github.com/mid-kid/CakesForeveryWan/blob/master/agb_firmurl named agb_firmware.bin and agb_cetk, it boot well on my new 3ds, but I still cannot play gba vc game. BTW, patched 0004013800000202.bin is not install on my emunand and sysnand.
#When using auto-boot from a system restart after crash causes all CIA files to crash, not load and give a error saying 'Please Re download From Nintendo Eshop"
When booting my redNAND, cakes hangs on a black screen after pressing "Boot CFW". THis only happens when the Enable EmuNAND patch is on. If it helps, my redNAND was created with gm9.
Btw, sorry about submitting 2 issues in 1 day.
I have been trying to run roms on citra for a few months now and cannot seem to get roms and homebrew to work.
My path has armips in it but it errors out on me:
36724 bytes (37 kB) copied, 0.015 seconds, 2.4 MB/s
python patches/bundle.py patches/emunand/info.json patches/emunand/patches.s bui
ld/patches/emunand out/cakes/patches
'armips' is not recognized as an internal or external command,
operable program or batch file.
Couldn't compile version 0x49 for some reason.
make: *** [build/patches/emunand.baked] Error 1
@TiniVi found out the screen deinit, but he isn't credited.
When downloading the latest cet from this url (for o3ds), It's always say me to verify if CETK is right....
Same things for an older CETK...
Seems to be armips related. What build of armips does it need now? I try to compile it and get this:
patches.s(51) error: Invalid expression
patches.s(53) error: Invalid expression
patches.s(51) error: Invalid expression
patches.s(53) error: Invalid expression
patches.s(51) error: No if clause active
patches.s(51) error: No if clause active
patches.s(52) warning: Opcode not word aligned
patches.s(53) error: No if clause active
patches.s(53) error: No if clause active
Aborting.
Couldn't compile version 0x50 for some reason.
make: *** [build/patches/reboot.baked] Error 1
I've tried a build by d0k3 and the original build from devkitpro release 45. But still no go. It won't compile after the latest commit....
Other CFW don't need CETK...
The reboot patch from aureinand is cleaner than the current one, and it should be ported.
It should also be modified to load agb_firm_patched.bin (and twl_firm_patched.bin) if it's present on the SD card.
This will need expansion of the "save" patch option, to pass the paths to agb and twl firms.
This is a weird problem, reported by Richter on IRC.
All his files are correct, updated and the md5sums and everything check out.
He appears to be loading Cakes form MSET 4.x.
His system is a 2ds.
His problem is that trying to load emuNAND 9.x is causing him a "black screen".
Perhaps a strange idea, but service patches (such as re-adding svcbackdoor) are going to be a pain in the arse if they aren't handled specially.
Basically, a service patch would have to have to specify the firmware type in subtype and somehow specify which service to set. The binary for a service patch would load to the first free area it can be called from, and the service table would be set to where it's located in memory.
Obviously svcBackdoor was removed by nintendo. While I'm close to havinf figured out the offsets necessary to fix @Wolfvak/icing, it will need a new patch1.bin every firmware, which means it's annoying to maintain even moreso than the signature patches.
This feature would also allow adding new services to unused slots, which could be interesting to developers. I'm sure there's a few use cases which would benefit from custom services.
As a final thought: svcBackdoor is gone now. We need to make sure no Nintendo applications start declaring access to it next firmware - since it's now a reliable way to detect CFW usage. Hardening svcBackdoor to be more secure than nintendo's implementation is probably a start.
Don't know if it is the TWL/AGB firm who is bugy.... I'll check a lower version of cake
d729535 worked without agb firm,maybe with it too.
When compiling your source with latest ctrulib (commit 1cef3e5) from smealum you get the following errors:
(Note, this is for everything that uses CakeBrah/Brahmaloader (libkhax))
khaxinit.cpp
arm-none-eabi-g++ -MMD -MP -MF /d/ABuildCFWs/CakesForeveryWan/CakeBrah/build/khaxinit.d -g -Wall -Wextra -O3 -mword-relocations -fomit-frame-pointer -ffast-math -march=armv6k -mtune=mpcore -mfloat-abi=hard -I/d/ABuildCFWs/CakesFo
reveryWan/CakeBrah/include -I/c/devkitPro/libctru/include -I/d/ABuildCFWs/CakesForeveryWan/CakeBrah/build -DARM11 -D_3DS -DARM_ARCH -DLAUNCHER_PATH='"Cakes.dat"' -fno-rtti -fno-exceptions -std=gnu++11 -c /d/ABuildCFWs/CakesForeve
ryWan/CakeBrah/source/libkhax/khaxinit.cpp -o khaxinit.o
d:/ABuildCFWs/CakesForeveryWan/CakeBrah/source/libkhax/khaxinit.cpp: In function 'Result KHAX::IsNew3DS(bool*, u32)':
d:/ABuildCFWs/CakesForeveryWan/CakeBrah/source/libkhax/khaxinit.cpp:985:47: error: cannot convert 'u8* {aka unsigned char*}' to 'bool*' for argument '1' to 'Result APT_CheckNew3DS(bool*)'
if (Result error = APT_CheckNew3DS(&isNew3DS))
^
make[2]: *** [khaxinit.o] Error 1
make[1]: *** [build] Error 2
make[1]: Leaving directory `/d/ABuildCFWs/CakesForeveryWan/CakeBrah'
make: *** [out/3ds/Cakes/Cakes.3dsx] Error 2
Currently the way I'm loading Cakes is with CtrBootManager. The 3dsx loader just black screen on my n3ds...
Is it becuase it doesn't support hax 2.5?
Whenever I load Cakes.Firm in bootctr9 b9s 1.2 it gets the firm but can't decrypt the cetk, I don't have any of the slot files as they are no longer there. I am on 11.0-20E(cart updated) o2DS
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.