Homebrew [RetroArch] Nightly builds here!

  • Thread starter Thread starter teampleb
  • Start date Start date
  • Views Views 846,641
  • Replies Replies 5,278
  • Likes Likes 29
Status
Not open for further replies.
I know about the FW limitations. I have no money for that, so getting a used one is all I can hope to trade for(which I know gamestop wouldn't hook me up). Unless someone wants to buy my 3ds and my games off of me. Which I haven't been able to find anyone.
Even with a kernel hack. The o3DS is a bit to slow for some consoles.
 
I just trief to make "Makefile.ctr".
Is there anything else I have to do BEFORE compiling Makefile.ctr?

You need to download the source code for the core you want to compile, and build that first, before trying to build RArch itself. So for example, let's do Gambatte:

You'd go to https://github.com/libretro/gambatte-libretro and download the source code (or use git checkout/your preferred method). Then in there you'd run
Code:
make -f Makefile.libretro platform=ctr
to build it for the 3DS. It should spit out a file ending with ".a", which you then take and put in the same folder as your retroarch source folder (the same folder as Makefile.ctr), and rename it to libretro_ctr.a. Then RetroArch itself should build fine after that:

Code:
make -f Makefile.ctr LIBRETRO=gambatte
 
Even with a kernel hack. The o3DS is a bit to slow for some consoles.
I know, I'd like an N3DS so I can run stuff like retroarch without worrying about serious speed issues. But like I said, I don't think I could get enough money for a N3DS selling my o3ds and SSB and MK7 and Pokemon OR.
 
You need to download the source code for the core you want to compile, and build that first, before trying to build RArch itself. So for example, let's do Gambatte:

You'd go to https://github.com/libretro/gambatte-libretro and download the source code (or use git checkout/your preferred method). Then in there you'd run
Code:
make -f Makefile.libretro platform=ctr
to build it for the 3DS. It should spit out a file ending with ".a", which you then take and put in the same folder as your retroarch source folder (the same folder as Makefile.ctr), and rename it to libretro_ctr.a. Then RetroArch itself should build fine after that:

Code:
make -f Makefile.ctr LIBRETRO=gambatte
understood :D
Thank you!
 
I know, I'd like an N3DS so I can run stuff like retroarch without worrying about serious speed issues. But like I said, I don't think I could get enough money for a N3DS selling my o3ds and SSB and MK7 and Pokemon OR.

Amazon UK were selling the N3DS regular size with two faceplates and Pokémon as a £100 flash deal with free delivery a week ago.

Come on man, its hardly expensive. You can buy them preowned for cheap now too.
 
Amazon UK were selling the N3DS regular size with two faceplates and Pokémon as a £100 flash deal with free delivery a week ago.

Come on man, its hardly expensive. You can buy them preowned for cheap now too.
The only regular N3ds I can find in America is the animal crossing one and its $220. I literally have no money. My only hope would be to trade/sell everything I currently own that's 3ds related to get one. (which means I'm limited to stores like gamestop)
 
Last edited by uberpubert69,
The only regular N3ds I can find in America is the animal crossing one and its $220. I literally have no money. My only hope would be to trade/sell everything I currently own that's 3ds related to get one. (which means I'm limited to stores like gamestop)
Maybe spend some time looking for a new job? Six years ago I was failing out of community college being broke as fuck, got desperate and joined the Navy as a CTN. Life is cushy now, M-F 40hr workweek at a desk, never deploy and they send me to free coding/networking classes, wish I would have joined earlier. Sorry to hear you're having money problems, good luck and I hope good fortune comes to you soon.
 
  • Like
Reactions: Tigroid and Xen0
Heyo, just a question. is it possible to autoboot a iso/rom?
you can pass a content path to retroarch as an argument and it will automatically load it.
probably only possible when launching a 3dsx with 3dslink, since that is the only way I know of where you can pass arguments to an app.
 
fMSX is now integrated officially for 3DS (and it now has controls in general across every platform, or it should), meaning we now have an MSX emulator to use. Saving to DSK files is still not possible yet (when booted from ROM files).

The default controls are as follows:
Joypad Directional Pad: 3DS Directional Pad
Joypad Fire A: 3DS A
Joypad Fire B: 3DS B
Keyboard F1: 3DS Start
Keyboard F2: 3DS Select
Keyboard F3: 3DS X
Keyboard F4: 3DS L
Keyboard F5: 3DS R
Keyboard Graph: N3DS ZL
Keyboard Ctrl: N3DS ZR
Keyboard Return: None (3DS lacks an "L3" button)
Keyboard Escape: None (3DS lacks an "R3" button)

If these controls don't work for the game you're trying to play, remap them by starting a game, opening the RetroArch menu, and going to Core Input Remapping Options. The buttons are all custom named (User 1 Spacebar, User 1 F2, etc.) so it should be easy to figure out.
 
Metal Gear?!
Psycho Mantis?!
You're that ninja...

Okay, here's an unofficial "port" of RetroArch's fMSX core. I haven't figured out a way to save games yet, so this is more of a proof of concept than anything.

Don't ask for tech support for this build, I just wanted to show that fMSX can run on the 3DS just fine.

The control bindings are as follows (mainly hard-coded for Metal Gear 1 and 2; unfortunately, MSX games don't have a standard control setup as far as I know):
A: Joystick button A
B: Joystick button B
X: Keyboard button F3
Y: Keyboard button spacebar
L: Keyboard button F4
R: Keyboard button F5
Directional pad: Joystick directional pad
Start: Keyboard button F1
Select: Keyboard button F2

To set it up, grab all of the ROMs from https://github.com/libretro/fmsx-libretro/tree/master/fMSX/ROMs and stick them in RetroArch's system folder, like you would any other BIOS files. After that, grab a ROM for your favourite game (I only tested Metal Gear 1 and 2) and enjoy. You might need to set the machine type in Core Options -> MSX Mode to get different games working. Metal Gear 1 and 2 run fine with MSX2+.

As for source code, I'll just post the tiny edits I made here, so you can reproduce it from scratch:

Retroarch's /ctr/Makefile.cores (add this somewhere in the big chain of platform comparisons):
Code:
else ifeq ($(LIBRETRO), fmsx)
    APP_TITLE         = fMSX
    #APP_DESCRIPTION   = Retroarch 3DS
    APP_AUTHOR        = Marat Fayzullin
    APP_PRODUCT_CODE  = RARCH-FMSX
    APP_UNIQUE_ID     = 0xBAC16
    APP_ICON          = ctr/fmsx.png
    #APP_BANNER        = ctr/libretro_banner.png
    #APP_AUDIO         = ctr/silent.wav

In fMSX's libretro.c (make joystate global):

Code:
int joystate;

// ...further on down in the file
unsigned int Joystick(void)
{
    return joystate;
}

// ...even further on down, in retro_run
// When you see this stuff:
//   for (i=0; i < sizeof(keymap)/sizeof(keymap_t); i++)
//      if (input_state_cb(0, RETRO_DEVICE_KEYBOARD, 0, keymap[i].retro))
//         KBD_SET(keymap[i].fmsx);
   joystate = 0;
   if (input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_UP))
      joystate |= JST_UP;
   if (input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_DOWN))
      joystate |= JST_DOWN;
   if (input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_LEFT))
      joystate |= JST_LEFT;
   if (input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_RIGHT))
      joystate |= JST_RIGHT;
   if (input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_A))
      joystate |= JST_FIREA;
   if (input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_B))
      joystate |= JST_FIREB;
   if (input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_START))
      KBD_SET(KBD_F1);
   if (input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_SELECT))
      KBD_SET(KBD_F2);
   if (input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_X))
      KBD_SET(KBD_F3);
   if (input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L))
      KBD_SET(KBD_F4);
   if (input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R))
      KBD_SET(KBD_F5);
   if (input_state_cb(0, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_Y))
      KBD_SET(KBD_SPACE);

I just gave it a shot, downloaded all 15 files from the github, put them in the Retroarch 'system' folder, but the games won't load, even after manually changing the machine type in Core Options. I get the following error:

Allocating 16kb for empty space...
Opening MSX2P.ROM... FAILED
Opening MSX2PEXT.ROM... OK
Opening DISK.ROM.... OK.

Which is strange because the file is in retroarch/cores/system.
This happens not only with MSX2P.ROM but also with MSX.ROM and MSX2.ROM. It simply won't open them.
 
  • Like
Reactions: NeohopeSTF
yeah you could compile your own version with a hardcoded path, and a custom app ID/icon, if that is what you need. just look for where the argument list is processed in retroarch.
 
Thank you!
Oh yeah, forgot to mention, I'm using an O3DS 9.9FW, and the entrypoint I'm using is Themehax with Masher's HBL if it matters.

Which game(s) are you trying to play? I can't reproduce the problem with Metal Gear 1 or Metal Gear 2: Solid Snake (both are ROM files).
 
Which game(s) are you trying to play? I can't reproduce the problem with Metal Gear 1 or Metal Gear 2: Solid Snake (both are ROM files).
Metal Gear 1, got it from the GoodMSX v0.99 complete ROMset.
I tried Back to the Future too (with Machine Type set to MSX) and I got the same error, except it wouldn't open MSX.ROM instead.

Do you think it might be an issue with the game itself, or with the *.ROM files?
 
Metal Gear 1, got it from the GoodMSX v0.99 complete ROMset.
I tried Back to the Future too (with Machine Type set to MSX) and I got the same error, except it wouldn't open MSX.ROM instead.

Do you think it might be an issue with the game itself, or with the *.ROM files?

Maybe try copying all of the MSX roms back over, along with the games? Maybe they got copied badly or something to your SD card. I tried Back to the Future set to MSX1 and it didn't have any problems for me either. Would be nice if I could figure out how to reproduce it..
 
yeah you could compile your own version with a hardcoded path, and a custom app ID/icon, if that is what you need. just look for where the argument list is processed in retroarch.
Yea, that's exactly what I want :)
it's like... I want to use a "lite" version of RetroArch for each SNES Game I want to have in Cia Format.
For example:
Cia with AppID 0xd5001 => Donkey Kong Country 3 (with own Icon + Sound for cia)
Cia with AppID 0xd5002 => Secret of Mana (with own Icon + Sound for cia)
Every Cia should Auto-Load it's game directly + The Options "Create/Overwrite Savestate, Load Savestate, Reset Game, Exit Game".
All other things like retroarch.cfg is the same for every game and should be loaded from sdmc:/retroarch/ (as always).
Something like this, you know?

Which files do I need to edit to make this possible?

Yea, I'm still new with coding but I want to learn :P

probably someone could help me with this? :3
 
Last edited by xXDungeon_CrawlerXx,
Status
Not open for further replies.

Site & Scene News

Popular threads in this forum