Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[3DS] Way to have a GBC icon/banner for .CIA?
#1
As I use an old 3DS, I am forced to use open_agb_firm in order to have playable performance for GBA games (I get like 20fps with GBA games via mGBA).

However, mGBA on my old 3DS has great performance on GBC games with only minor slow-down (at least when played through the .CIA version of mGBA as I mentioned in my other thread - generally ~55fps at worst, though the pause menu fade transition effect in Pokemon Card GB2 drops as low as 40fps).

The issue really though is that the icon for "Open AGB Launcher" and mGBA when installed as .CIA files are similar enough that it causes me a bit of confusion initially whenever I go to select the according icon on the 3DS home screen.


I tried to see if I could extract the icon and banner from GameYob for 3DS's .CIA and use it to replace the icon and banner used in mGBA's .CIA...but from what I can tell, the go-to method of doing this using HackingToolkit9DS doesn't seem to properly support homebrew apps because I do not end up with any according banner and/or icon files.


So yeah, is there some way to get mGBA in .CIA format with a GBC icon/banner?


(to clarify, this isn't a request for you to change mGBA itself as it would be rude of me to suggest straight-up changing the icon that has been used by mGBA across multiple platforms just because the old 3DS can't emulate GBA games at playable speeds)



For reference, I'm not just using GameYob itself because, despite seemingly having better performance in Pokemon Card GB than mGBA (it's a bit hard to tell since GameYob for 3DS lacks an fps counter), the 3DS fork of GameYob hasn't been updated for like 5 years and contains audio bugs that mGBA lacks and GameYob for DSi has since fixed, and using the much-more-recently-updated DSi version of GameYob directly is also a non-starter due to the unfortunate reduction of visual clarity from the double-scaling that occurs when playing in fullscreen (160x144 -> 213x192 -> 267x240) rather than how mGBA or GameYob for 3DS directly scales to the 3DS's screen (160x144 --to-> 267x240).
Reply
#2
You'd have to build mGBA yourself but it should be possible if you do. It's not the easiest though. There are instructions in the readme.
Reply
#3
I'm getting an error that I have no idea what it means.

Due to logistic reasons, using a live USB installation of Linux Mint 20.1 Cinnamon 64bit on a PC with 16GB of RAM was the easiest way for me to have a fresh clean installation as well as enough disk space to actually store everything necessary. It also provides the benefit of being able to be easily replicated if necessary for testing reasons as well as providing an easy way to "start over" with a clean slate in case of errors or the like.

If you really want me to install the OS proper then I can do that, but I just figured that using a live session was easier.


In a terminal window, the first command I ran was the following:

Code:
sudo apt install docker.io

That went perfectly fine. So I then ran the following second command:

Code:
sudo docker pull mgba/3ds

That also went perfectly fine. But when I ran the third command:

Code:
sudo docker run --rm -t -v $PWD:/home/mgba/src mgba/3ds

That resulted in the following lengthy error:

Quote:docker: Error response from daemon: error creating aufs mount to /var/lib/docker/aufs/mnt/4c607300f9e6764eb6f59447539bde08666991f7a1793a424b507d9eb772c913-init: mount target=/var/lib/docker/aufs/mnt/4c607300f9e6764eb6f59447539bde08666991f7a1793a424b507d9eb772c913-init data=br:/var/lib/docker/aufs/diff/4c607300f9e6764eb6f59447539bde08666991f7a1793a424b507d9eb772c913-init=rw:/var/lib/docker/aufs/diff/0350e0c8bafec558f3e06acc1854fd0382e0b3439366157d9ba26845dc9a10b6=ro+wh:/var/lib/docker/aufs/diff/aa479ff9c90a32f8e3c07686e97e44aa97e4dbe96eed8bccc14460ba6508c2ff=ro+wh:/var/lib/docker/aufs/diff/9686dc57157ad5592e9a43bc3700cab956d384f39846079e2b43a67dd2f23523=ro+wh:/var/lib/docker/aufs/diff/fdfaa03b597835135a75ec4d96409291286397f2e3c1e0782e34566e88500615=ro+wh:/var/lib/docker/aufs/diff/8ad8cdf6660ae3e7dfddc97840f1f523c9321575a109b303f2e432a320614676=ro+wh:/var/lib/docker/aufs/diff/74b8d36070cf48b13794cade7a5c109167234c81f4a95ced7d3f5c03a5d3314e=ro+wh:/var/lib/docker/aufs/diff/5e331a20712f6c4687a3dec85b4a0c187821af80b1746f868ab6b81f8109eb6b=ro+wh:/var/lib/docker/aufs/diff/14fcd42c9692079514f13da7d885f5d4068bdb0d554315a543d6021d852d16cf=ro+wh:/var/lib/docker/aufs/diff/e95c5b8a44f6ebb4f7a3b0090fb688a31c1d5dbfeae7cfc2e00bd260441e5359=ro+wh:/var/lib/docker/aufs/diff/f1349b60299624062b39c5ccbe5dde3f40b03c9bb5d979df0c4a74207598dcde=ro+wh,dio,xino=/dev/shm/aufs.xino: invalid argument.
See 'docker run --help'.
Reply
#4
I've never seen an error like that before, so unfortunately I can't help. That seems to be an error with Docker itself though.
Reply
#5
(04-24-2021, 05:59 PM)endrift Wrote: I've never seen an error like that before, so unfortunately I can't help. That seems to be an error with Docker itself though.

Well I installed a non-live copy of Linux Mint 20.1 on a random 500GB laptop hard drive and ran the exact same commands again. Everything went exactly the same except that, instead of the lengthy error after that third command, I got a much shorter, clearer error instead that implied to me that docker was at least functioning correctly this time.

To keep things clear, I'm going to spell out the steps I did once again.


In a terminal window, the first command I ran was the following:

Code:
sudo apt install docker.io

That went perfectly fine. So I then ran the following second command:

Code:
sudo docker pull mgba/3ds

That also went perfectly fine. But when I ran the third command:

Code:
sudo docker run --rm -t -v $PWD:/home/mgba/src mgba/3ds

I got the following error:

Code:
CMake Error: The source directory "/home/mgba/src" does not appear to contain CMakeLists.txt.
Specify --help for usage, or press the help button on the CMake GUI.

I'm no Linux guru, so I've no idea what to do if the aforementioned CMakeLists.txt isn't present...


--------


EDIT: Just want to say that I tried the same steps but, rather than using docker.io, I used the snap version of docker provided by the Canonical Snap store...but it too throws up the error saying that it does not appear to contain CMakeLists.txt, even when trying this on a completely fresh installation of Mint 20.1.


EDIT 2: Heck I even just tried it with a fresh installation of Ubuntu 21.04 using the very same snap version of Docker, and sure enough I still got that "does not appear to contain CMakeLists.txt" error.
Reply
#6
Yeah that means that the directory you ran the command from is not where you checked the source out. You need to check the source out first and `cd` into that directory before running the command.
Reply
#7
(05-05-2021, 09:06 PM)endrift Wrote: Yeah that means that the directory you ran the command from is not where you checked the source out. You need to check the source out first and `cd` into that directory before running the command.

I managed to get it to work via the devkitpro method, but I discovered an unfortuate issue:

Without making any modifications at all, my compiled vanilla .CIA of v0.9.0 (I avoided using v0.9.1 due to it performing worse) has slower performance than the official provided .CIA of v0.9.0. My compiled version runs at around 56-57fps or so on the Pokemon Pinball (GBC version) title screen while the official provided .CIA runs the title screen at full speed.


As of now I'm attempting to to see if I can somehow patch or hex-edit the official provided v0.9.0 .CIA to insert the modified banner and icon by cross-referencing the difference between the modded version with my vanilla compiled version and then applying whatever changed data to the official provided .CIA file.



EDIT: ...though it's looking like, if you do any sort of hex-editing to an existing CIA file, it becomes impossible to actually install it as FBI then always says "Cert signature or hash check failed (106)" even for CIA files that have only ungone very basic hex editing, and trying to install it via GodMode9 doesn't work either (it just says "Install failed"). Interestingly one can still install then into Citra, but Citra doesn't seem to be able to run stock vanilla mGBA anyway.

This is all extremely unfortunate and I seem to be stuck between a rock and a hard place of either having an ideal icon/banner with less-than-ideal performance or a less-than-ideal icon/banner with ideal performance.



EDIT 2: It sounds like it's technically to edit the source code of FBI to disable signature checks and then compile that... but I'm not sure how motivated I am to actually try doing that considering my general inability to code.

This is all turning into a whole lot of hoop-jumping...
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)