chaoskagami / corbenik

CFW for the 3DS, uses bytecode as patches
GNU General Public License v3.0
66 stars 12 forks source link

[Suggestion]Allow splash screens #20

Closed gnmmarechal closed 8 years ago

gnmmarechal commented 8 years ago

Welp, just like the title says. It's not a useful feature, but I loved my A9LH splash screen back in Luma. So, I'm suggesting the addition of this feature.

chaoskagami commented 8 years ago

I personally don't use bootsplashes - I use BootAnim9 by @Wolfvak.

Normally I'd integrate BootAnim9's code here, but the license is GPLv2 (non-upgradable), I have some code in my repo which specifies GPLv3, and I'm not the one who wrote that code. License conflicts mean it isn't possible to integrate this.

A simple bootsplash is doable, but not really something I'm personally interested in. I'll keep it in mind, but I'm closing this as wontfix for now. I don't want to accidentally end up bloat central like rxTools.

ghost commented 8 years ago

In theory it could be implemented as a patch, with the addition of a new opcode (sorry :P) which would copy x bytes to addres y from a file z. In the case of a top boot splash, it'd be "load file z at address 0x18000000 with length 288000", and bottom screen would be "load file z' at address 0x18000000+0x46500 with length 230400".

Make it have the highest priority and you got yourself a boot splash patch.

chaoskagami commented 8 years ago

God, no. The VM isn't designed for that.

I mean, there's nothing stopping me from doing that, but that's a terrible idea in so many ways. I'd like to keep some semblance of sandboxing here, and adding an arbitrary write is the worst idea ever. If anything, that would have to be implemented as a rel offset and only for the framebuffer.

There's also no accurate way to delay from the VM or in general here at the moment.

Actually, now that I think about it...not a bad idea, actually. Might as well add button controls and make framebuffer writes throttled to 288000 bytes per second.

chaoskagami commented 8 years ago

So for all intents and purposes, https://github.com/chaoskagami/corbenik/commit/988d7d5307d80098682187d61c7812aab4f3a488 implements this. Enabling autoboot+silent gets you a splash screen basically.

Removing the wontfix label since I apparently got it for free with wallpapers.

gnmmarechal commented 8 years ago

@chaoskagami Hum, and will the splash screens be the same .bin used by Luma?

chaoskagami commented 8 years ago

For all intents and purposes, yes. Backgrounds are BGR8 90-degree-rotated raw pixel data, which is the same thing Luma, menuhax, etc use.

I typo'd in the commit message as RGB8. Ignore that. I'm not going to amend a commit for a typo.