Homebrew CitrAGB - 3DS GBA Emulator (WIP)

  • Thread starter Thread starter shinyquagsire23
  • Start date Start date
  • Views Views 579,792
  • Replies Replies 1,234
  • Likes Likes 74
There must be a way because of how ninjhax works.
If a game can do this (cubic ninja can) then a cia homebrew can.

I would love to experiment but I know basically nothing about how the GBA works.

If I get enough knowledge about it I would love to collaborate on this project.
Ah, I thought you were referring to some official thing that Gateway put out or something. Currently for this I'm waiting on smea to release a method of doing this for homebrew people. I'm hoping it's not just masked through the homebrew service that he has for ninjhax because that would eliminate the possibility for using it on Gateway and .cia's, which would suck. But if it's open enough that 100% of the code to do it is either in ctrulib or my own program that would work great.
 
Ah, I thought you were referring to some official thing that Gateway put out or something. Currently for this I'm waiting on smea to release a method of doing this for homebrew people. I'm hoping it's not just masked through the homebrew service that he has for ninjhax because that would eliminate the possibility for using it on Gateway and .cia's, which would suck. But if it's open enough that 100% of the code to do it is either in ctrulib or my own program that would work great.

my bad. for some reason I was pretty sure there was something we could use to set pages as executable. I was looking at ctrulib's source while writing. Now that I looked throu it it's clear this cannot be done at the moment. This, however, basically means functions are missing.

I'm still optimistic btw. Cubic ninja lives entirely in user space, and if what smea said it's true, then we don't need kernel access for allocating executable pages.

The reason 3dsx homebrews cannot do that (and the other limitations they have) may be the direct effect of them being loaded directly into memory.
 
On twitter:

Code:
smealum: may I ask if setting memory pages as executable is possible for userland apps (retail games/cias) or does it require kernel access?
michyprima: not typically possible for games/apps no. however, it will be possible with the next ninjhax update.

I was wrong :/
 
My copy arrived so I'll be testing your GBA this evening.
Sweet, testing is always a good thing at this point. Just make sure to report any bugs though.


Is there a compatibility list?

As of now, no. At this point I wouldn't say it's playable enough that a compatibility list would be a priority. I personally haven't spent more than 5 minutes actually playing a game because it's unbearably slow in some cases.

Also, in general news, loading from folders works now. Although I'll say this now, the file path which shows up at the top of the file browser isn't the prettiest, mostly because I haven't added anything to shorten the relative path to an absolute one. Download link is same as the main post.
 
Hey sorry if this has been posted before but im getting an error. I put in the bios and everything and i get this:"Failed to load gamepak/*Place of rom* press any key to exit"
Any help? thanks
EDIT:Got it working sorry for my stupidness
 
Looking forward to what will happen with this now that the update for Ninjhax is out. :D

Keep up the good work!
 
Vcl16Jk.gif
So ninjhax v1.1 just dropped, with the ability to update ram pages and set their ability to be read/written/executed!

For those who don't know, this is huge for GBA emulation, especially gpsp. Basically this allows me to use the dynrec core of gpsp, and increase emulation speed by a TON, more so than the current interpreter. There is, however, one huge downside to this at the current moment: CitrAGB's dynrec will be locked to ninjhax unless smea releases the source code for the core exploit itself. So any .cia or .3ds builds will not be able to harness the additional processing power which may or may not be gained in the next few updates.

That aside, my current plans are to attempt to get the dynrec from gpsp's RPi port going (both run on ARM11 so it shouldn't be the hardest to get going), hopefully get sound working, and basically improve the overall stability of the emulator. Exciting stuff!
 
There is, however, one huge downside to this at the current moment: CitrAGB's dynrec will be locked to ninjhax unless smea releases the source code for the core exploit itself. So any .cia or .3ds builds will not be able to harness the additional processing power which may or may not be gained in the next few updates.

Oh, all right. Let's just wait for that.
I bet it's gonna happen soon, right?
xmS4Fhv.jpg
...right?
...guys?
 
Vcl16Jk.gif
So ninjhax v1.1 just dropped, with the ability to update ram pages and set their ability to be read/written/executed!

For those who don't know, this is huge for GBA emulation, especially gpsp. Basically this allows me to use the dynrec core of gpsp, and increase emulation speed by a TON, more so than the current interpreter. There is, however, one huge downside to this at the current moment: CitrAGB's dynrec will be locked to ninjhax unless smea releases the source code for the core exploit itself. So any .cia or .3ds builds will not be able to harness the additional processing power which may or may not be gained in the next few updates.

That aside, my current plans are to attempt to get the dynrec from gpsp's RPi port going (both run on ARM11 so it shouldn't be the hardest to get going), hopefully get sound working, and basically improve the overall stability of the emulator. Exciting stuff!
.cia apps can give themselves about any permissions, atleast in the Gateway usage scenario. You can probably specify a exheader that gives them access to whatever SVC is used to map executable pages.
 
  • Like
Reactions: Idaho
Meeeh, I hate the actual mess between .3dsx and .cia, I wish I could just use the homebrew loader as an installed .cia and don't worry about anything else :(
 
  • Like
Reactions: lemanuel

Site & Scene News

Popular threads in this forum