1. This forum is in read-only mode.

[TUTORIAL] Citra 3DS

Discussion in 'Tutorials' started by Prectorian, Jun 16, 2017.

Thread Status:
Not open for further replies.
  1. Prectorian

    Prectorian . Staff Member

    I notice emucr has an update every so often too, GIT I think. But I'm not sure if it's the same as the official's nightly copy.

    Any idea why the new versions hasn't fix the transposed screen for Tales of the Abyss game?

    Edit:

    If you make new releases base on your GITs, do load it here. :)
     
    Last edited: Jul 9, 2017
    Jhon 591 likes this.
  2. Jhon 591

    Jhon 591 Well-Known Member

    What version of citra worked last with this issue, possible Geometry Shaders, but jayfoxrox has not updated it in months and too many Conflicts to fix, I gave it a go

    only two people where working on the video core
    https://github.com/wwylele/citra/branches/all
    and
    https://github.com/JayFoxRox/citra/pull/49
     
  3. Prectorian

    Prectorian . Staff Member

    For Tales of The Abyss (U) (Decrypted), the new Citra Nightly releases gives me below 1.2ms frame, mostly stable at 0.3ms. Makes it unplayable. Which is odd because Pokemon games gives above 55ms on the new releases. Back then, the one you sent me was this "Citra-GCCKU-Citra+BleedingEdge-11.12.2016", it works with good fps on that except for the transposed screen for Tales of the Abyss which makes it uncomfortable to play. I've tried using various ToA roms, same result.

    If so many conflicts are present, it might not get address anytime soon. Still it's odd the issue is not fixed yet. And the newer updates seems to be running on the spot instead of moving forward. I haven't notice anything significant for the past few nightly updates. But I'm sure you guys are working on more pressing issues compare to just concentrating on fixing a few minor glitches for select games.

    See this (purple text is from CMD);

    [​IMG]
     
    Last edited: Jul 9, 2017
  4. Jhon 591

    Jhon 591 Well-Known Member

  5. Prectorian

    Prectorian . Staff Member

  6. Jhon 591

    Jhon 591 Well-Known Member

    hahaha ^ lol, Yep looks so, was trying to work out what jayfoxrox was taking about..
     
  7. Prectorian

    Prectorian . Staff Member

    Being someone with little to no knowledge in the field, logically I think you'll need to sort out what's causing the conflict with the display which causes the image flipped. It could be coding within the game that requires different display interpretation by the emulator. Once a fix is made, you'll also need to make sure the solution will only work on those selected games with similar issue, without interfering with the rest. Which I think is the trickiest part. Then again, what do I know ... *shrug* :(
     
  8. Sahel123

    Sahel123 Guest

    Last edited by a moderator: Jul 13, 2017
  9. Jhon 591

    Jhon 591 Well-Known Member

    Sahel123 and Prectorian like this.
  10. Prectorian

    Prectorian . Staff Member

    Have you tried looking into the decrypting tools provided by 2 sources? Seems like it got some flaw which renders some decrypted rom, not launching on newer version but can on older ones.
     
  11. Jhon 591

    Jhon 591 Well-Known Member

    Not sure, they are that many tools for decrypting.


    When done the emulator by its self I added this branch into the build
    https://github.com/Jhno591/citra-2/commit/3ddcf4670b9fd6bf2541a0fa7ce95cdd1e03d92a

    one got updated lately by wwylele
    https://github.com/citra-emu/citra/compare/master...wwylele:loader-crypto
    ----------

    Some games get a error are blank icon, is .cia image is not correct with use of the
     
  12. Prectorian

    Prectorian . Staff Member

    so technically .cia rom should run on Citra? how come I tried 2 earlier (the ones I posted in 3DS share), but doesn't run?
    as for the decrypting tool, see page 1 (no. 14) and 2 (no.28).

    Edit:
    Has anyone attempted to enable Citra to no longer need to have roms decrypted?
     
  13. Jhon 591

    Jhon 591 Well-Known Member

    Not on a normal citra, are bleeding edge, it has to be that build with that branch merged in, but not all .cias work, if it was uncryted and recrypted.

    I'll merge wwylele branch next time see if any go, if I recall has to be a 100% clean dump.
    --------
    Looks like hes working on GS too
    https://github.com/wwylele/citra/pull/36

    But its auto merged in some of the other branchs into it 2 lol
     
  14. Prectorian

    Prectorian . Staff Member

    what's GS?
     
  15. Jhon 591

    Jhon 591 Well-Known Member

  16. Prectorian

    Prectorian . Staff Member

    Ah ok. Got it.
     
    Jhon 591 likes this.
  17. Jhon 591

    Jhon 591 Well-Known Member

    Citra+BE-GCC-MinGW-31-07-2017
    http://www37.zippyshare.com/v/OeWBOdDt/file.html

    Citra-MSVS2017-31-07-2017
    http://www73.zippyshare.com/v/Tnx9IsYH/file.html

    (Note) You will need to replace your own "User" folder

    Chagelog
    https://github.com/Jhno591/citra/commits/master
    -------------
    (Note) the BE-450 had some GS++ changes over night.

    PS: Sorry left out 3d-fun and input-config-2 for gamepads, they are reported issues in regard.
    But you can still use gamepad's using
    https://community.citra-emu.org/t/temporary-controller-configurations-for-citra/1061
    -------
    (Note) this is using wwylele GS++ as Geometry Shaders
     
    Prectorian likes this.
  18. Prectorian

    Prectorian . Staff Member

    Based on the different versions I've encountered, there seems to be several different approaches for configuring a gamepad to use on Citra, depending on which version is in use. I can't exactly point out which of these to use, best I can say is to give them a go and I assume 1 of it will run on yours. I had used a Logitec gamepad to test.

    Method 1:
    This one was re-copied from page 1 (1st post). This one need to be copy pasted to the "qt-config.ini" found in the Citra folder depending on where you had extracted it. e.g. [D:\citrafolder\nightlybuild\user\config\]

    Code:
    [Controls]
    button_a="engine:sdl,joystick:0,button:0"
    button_b="engine:sdl,joystick:0,button:1"
    button_x="engine:sdl,joystick:0,button:2"
    button_y="engine:sdl,joystick:0,button:3"
    button_up="direction:up,hat:0,engine:sdl,joystick:0"
    button_down="direction:down,hat:0,engine:sdl,joystick:0"
    button_left="direction:left,hat:0,engine:sdl,joystick:0"
    button_right="direction:right,hat:0,engine:sdl,joystick:0"
    button_l="engine:sdl,joystick:0,button:4"
    button_r="engine:sdl,joystick:0,button:5"
    button_start="engine:sdl,joystick:0,button:7"
    button_select="engine:sdl,joystick:0,button:6"
    button_zl="code:49,engine:keyboard"
    button_zr="code:50,engine:keyboard"
    button_home="code:66,engine:keyboard"
    circle_pad="joystick:0,axis_x:0,axis_y:1,engine:sdl"
    c_stick="joystick:0,axis_x:3,axis_y:4,engine:sdl"
    motion_device="engine:motion_emu,update_period:100,sensitivity:0.01"
    touch_device=engine:emu_window
    * Side note, e.g. button_a="engine:sdl,joystick:0,button:1" ; the number I colored red can be reassign to other button depending on how your gamepad layout is. Since it might differ from 1 brand to the next. My Logitec layout is (clockwise) Y-B-A-X, other might be X-A-B-Y, or maybe even Y-A-B-X. As such, make that code adjustment to your needs, or disassemble your gamepad buttons to the layout of your preference - whichever you find more convenient.

    Method 2:
    Similar to Method 1, this is another version of the setup;

    Code:
    [Controls]
    pad_a=SDL/0/Gamepad/0
    pad_b=SDL/0/Gamepad/1
    pad_x=SDL/0/Gamepad/2
    pad_y=SDL/0/Gamepad/3
    pad_l=SDL/0/Gamepad/4
    pad_r=SDL/0/Gamepad/5
    pad_zl=Qt/0/Keyboard/49
    pad_zr=Qt/0/Keyboard/50
    pad_start=SDL/0/Gamepad/6
    pad_select=SDL/0/Gamepad/7
    pad_home=SDL/0/Gamepad/14
    pad_dup=SDL/0/Gamepad/8
    pad_ddown=SDL/0/Gamepad/9
    pad_dleft=SDL/0/Gamepad/10
    pad_dright=SDL/0/Gamepad/11
    pad_cup=Qt/0/Keyboard/73
    pad_cdown=Qt/0/Keyboard/75
    pad_cleft=Qt/0/Keyboard/74
    pad_cright=Qt/0/Keyboard/76
    pad_circle_up=Qt/0/Keyboard/16777235
    pad_circle_down=Qt/0/Keyboard/16777237
    pad_circle_left=SDL/0/Gamepad/12
    pad_circle_right=SDL/0/Gamepad/13
    pad_circle_modifier=Qt/0/Keyboard/70
    pad_circle_modifier_scale=0.40000000596046448
    * Side note, e.g. pad_a=SDL/0/Gamepad/1 ; the number I colored red can be reassign to other button depending on how your gamepad layout is. Since it might differ from 1 brand to the next. My Logitec layout is (clockwise) Y-B-A-X, other might be X-A-B-Y, or maybe even Y-A-B-X. As such, make that code adjustment to your needs, or disassemble your gamepad buttons to the layout of your preference - whichever you find more convenient.

    Method 3:
    Similar to Method 1, another alternative to the setup;

    Code:
    [Controls]
    button_a="joystick:0,button:0,engine:sdl"
    button_b="joystick:0,button:1,engine:sdl"
    button_x="joystick:0,button:2,engine:sdl"
    button_y="joystick:0,button:3,engine:sdl"
    button_up="hat:0,direction:up,joystick:0,engine:sdl"
    button_down="hat:0,direction:down,joystick:0,engine:sdl"
    button_left="hat:0,direction:left,joystick:0,engine:sdl"
    button_right="hat:0,direction:right,joystick:0,engine:sdl"
    button_l="joystick:0,button:4,engine:sdl"
    button_r="joystick:0,button:5,engine:sdl"
    button_start="joystick:0,button:7,engine:sdl"
    button_select="joystick:0,button:6,engine:sdl"
    button_zl="code:49,engine:keyboard"
    button_zr="code:50,engine:keyboard"
    button_home="code:66,engine:keyboard"
    circle_pad="axis_x:0,joystick:0,engine:sdl,axis_y:1"
    c_stick="axis_x:3,joystick:0,engine:sdl,axis_y:4"
    * Side note, e.g. button_a="joystick:0,button:1,engine:sdl" ; the number I colored red can be reassign to other button depending on how your gamepad layout is. Since it might differ from 1 brand to the next. My Logitec layout is (clockwise) Y-B-A-X, other might be X-A-B-Y, or maybe even Y-A-B-X. As such, make that code adjustment to your needs, or disassemble your gamepad buttons to the layout of your preference - whichever you find more convenient.

    Method 4:
    Alternative pad config in case the first method fail to enable using your gamepad. This one need to be copy pasted to the "qt-config.ini" found in your directory [C:\Users\yourpcname\AppData\Roaming\Citra\config]

    Code:
    [Controls]
    button_a="engine:sdl,joystick:0,button:0"
    button_b="engine:sdl,joystick:0,button:1"
    button_x="engine:sdl,joystick:0,button:2"
    button_y="engine:sdl,joystick:0,button:3"
    button_up="engine:sdl,joystick:0,hat:0,direction:up"
    button_down="engine:sdl,joystick:0,hat:0,direction:down"
    button_left="engine:sdl,joystick:0,hat:0,direction:left"
    button_right="engine:sdl,joystick:0,hat:0,direction:right"
    button_l="engine:sdl,joystick:0,button:4"
    button_r="engine:sdl,joystick:0,button:5"
    button_start="engine:sdl,joystick:0,button:7"
    button_select="engine:sdl,joystick:0,button:6"
    button_zl="engine:keyboard,code:49"
    button_zr="engine:keyboard,code:50"
    button_home="engine:keyboard,code:66"
    circle_pad="axis_x:0,engine:sdl,joystick:0,axis_y:1"
    c_stick="axis_x:3,engine:sdl,joystick:0,axis_y:4"
    pad_a=65
    pad_b=83
    pad_x=90
    pad_y=88
    pad_l=81
    pad_r=87
    pad_zl=49
    pad_zr=50
    pad_start=77
    pad_select=78
    pad_home=66
    pad_dup=84
    pad_ddown=71
    pad_dleft=70
    pad_dright=72
    pad_cup=73
    pad_cdown=75
    pad_cleft=74
    pad_cright=76
    pad_circle_up=16777235
    pad_circle_down=16777237
    pad_circle_left=16777234
    pad_circle_right=16777236
    pad_circle_modifier=68
    pad_circle_modifier_scale=0.5
    * Side note, e.g. button_a="engine:sdl,joystick:0,button:1"; the number I colored red can be reassign to other button depending on how your gamepad layout is. Since it might differ from 1 brand to the next. My Logitec layout is (clockwise) Y-B-A-X, other might be X-A-B-Y, or maybe even Y-A-B-X. As such, make that code adjustment to your needs, or disassemble your gamepad buttons to the layout of your preference - whichever you find more convenient.

    One of these should probably resolve your issue with getting the gamepad recognized by the emulator. On a side note, if ever you accidentally press a button while opening the game controller setting from inside the emulator interface, and causes the gamepad to not work, simply re-copy paste the code which works.
     
    Last edited: Sep 26, 2017
  19. Prectorian

    Prectorian . Staff Member

    If you can't get Citra to work/run, that's probably because you need this file:
    Download : Click Here
    • Extract the above file after download
    • Place it in the Citra folder where you see the other files
    In case you want to self encrypt/decrypt a .3DS game rom, this tool should do the trick (but the rom might fail to run on certain Citra version and no guarantee it won't encounter anti piracy protection):
    Download : Click Here
    • Extract the above file after download
    • Place the encrypted or decrypted rom where you see the other files
    • Run the corresponding .bat file; e.g. if you have an encrypted .3DS then obviously you want to use the 3ds_decrypt_v3.bat
     
    Last edited: Sep 27, 2017
    Neon32 likes this.
  20. Prectorian

    Prectorian . Staff Member

    A word of advice (probably unnecessary since this thing simply requires common sense) - your game savefile is kept in the "user" folder, as such whenever you upgrade your emu with a newer version. Don't forget to migrate it to the new version before deleting the old, else you'll lose it.

    The exact location of your game saves:
    Code:
    \user\sdmc\Nintendo 3DS\00000000000000000000000000000000\00000000000000000000000000000000\title\00040000
    
    \user\sdmc\Nintendo 3DS\00000000000000000000000000000000\00000000000000000000000000000000\extdata\00000000
     
    Last edited: Oct 1, 2017
Thread Status:
Not open for further replies.