PlayBrew - Homebrew for the Playdate!
- 2 Devlogs
- 7 Total hours
Say hello to PlayBrew, the world's first homebrew for the most awesome(?) obscure(?) console! Not affiliated with Panic Inc.
Say hello to PlayBrew, the world's first homebrew for the most awesome(?) obscure(?) console! Not affiliated with Panic Inc.
To sum it up: the firmware mod is almost done, and I am going to start on the homebrew menu!
since the last devlog, I went through 4 iterations on the homebrew loader design:
uC-fs file IO funcs since the regular ones didnt seem to work when elevatedLoadPDX() function that loads games/apps to elevate permissions if a system app was being ran (there is an unpatched exploit to install any app as a system app so this route made sense)svc #2, which is the assembly instruction that elevates your permissions and then returns, so that the caller gets elevated (this works because the CPU only will run elevation/permission change functions from firmware code, not loaded code like a game)Iteration #4 is the current iteration and I am actively working to get it… well… working. The current issue right now is for some reason it seems to crash when I run the homebrew app, but the firmware itself is fine so I am going to try a couple of things.
This is my first devlog for PlayBrew, my Playdate Homebrew, and it is mostly focused on explaining what I have thus far.
Playbrew is a homebrew for the playdate game console that enables the user of the device (YOU!) to unlock your console’s true potential! You can code payloads, which are C scripts compiled into binary files, and then run them on-device with full low level firmware access (no sandboxing!!!). Possible payloads could be one that enables the bluetooth functionality, one that allows you to set a custom lock screen, and even one for game modding! (I have a whole list of cool ideas that I may share later)
Sooo sadly right now PlayBrew is unfunctional 😭…
So far I have been able to modify the firmware to allow for ACE (arbitrary code execution (also don’t worry the games can’t access it so no worry of malware :D)) of some C code that gets compiled and appended to the firmware, but I am having issues with the filesystem and am unable to read the actual payloads. The way the arbitrary code runs is by modifying a function pointer to the main FW update loop to run my code, and then at the end of PlayBrew’s code it just returns into the FW update loop and the firmware runs as normal.
There’s a couple things I have planned, kinda ranked in order of importance:
hold up there… even If you own a playdate, there are a few different things you need to know ahead of time, and in short, you can’t install it.
this is because:
Finally, If you ever wanna install this on your device, either stay on 3.0.2 which is the latest fully-stable version, or jump to 3.1.0 when It comes out since I’m not releasing my exploit till after that so It won’t be patched :)
also here’s a pic of the current header file, its super broken (Ill star one of your repo’s if you can spot the issues!) but it used to work and it will, and really that’s all that matters.