Widescreen cheats for DS games on 3DS

Discussion in '3DS - Flashcards & Custom Firmwares' started by Vague Rant, Jul 11, 2019.

Loading...
  1. Vague Rant
    OP

    Vague Rant Deceptively cute

    Member
    7
    Aug 7, 2008
    Melbourne
    @Pokem TwlBg is the software that's running on the 3DS in DS mode, which among other things handles screen scaling from DS to 3DS resolution, input, etc. It's necessary to patch your TwlBg in order to have it scale the screen to widescreen (among other patches), as documented by Sono in this thread. Sono's plan is to release a patching app for 3DS eventually which will pretty much automate the process of patching TwlBg, but he has released a preliminary 64-bit Windows build in the meantime.

    Even if you're not using TWiLight Menu++, the instructions in the TWLMenu++ thread ("3DS/2DS: Playing in Widescreen") will help you through the process of patching your TwlBg. If you're following the steps from that thread, then once you've created your patched TwlBg.cxi by running wide.bat, you can stop following them and just put that file into sdmc:/luma/sysmodules on your 3DS SD card, and enable external FIRMs and modules in the Luma3DS settings (hold Select on startup).

    Now everything you run in DS mode will display stretched to 384*240 on the top screen--even if the game has no widescreen cheat. So any game you use a widescreen cheat with will display correctly, while any games without a widescreen cheat will just look stretched out.
     
    Pokem likes this.
  2. Pokem

    Pokem GBAtemp Maniac

    Member
    6
    Jul 22, 2016
    United States
    So patching the TwlBg will just stretch everything in DS mode to 384x240?
    I can't just patch an individual game manually without it effecting everything else?
    Also, if I don't like the screen stretching, can I revert back to the normal DS screen size by taking TwlBg.cxi out of sysmodules?

    -EDIT- I still have not read the threads you linked me yet, so please forgive me if any of my questions can be answered by looking at the thread. I will look at it as soon as I can.
     
    Last edited by Pokem, Sep 11, 2019
  3. Vague Rant
    OP

    Vague Rant Deceptively cute

    Member
    7
    Aug 7, 2008
    Melbourne
    That's correct. The individual game hacks in this thread basically make the game "ready" to be displayed in widescreen, and then TwlBg does the work of actually displaying them that way. You can't just patch the games, that's only half of the equation (the smaller half, at that).
    Yep! Or if you wanted to be sort of weird about it, you could go into your Luma3DS settings and toggle external firms/sysmodules on and off depending on whether you're currently in the mood to play stretched/widescreen games. Or you could rename the file whenever you do or don't want it to be used, but that seems like busywork.

    There is technically another route involving TWLMenu++ but it is at least somewhat complex. If you're playing games with nds-bootstrap, TWLMenu++ manages your widescreen TwlBg.cxi file for you, so you can play 4:3 and widescreen games seamlessly. You can't do the same thing with a flash card, however, you can get it to play nice with a bit of work:

    The way TWLMenu++ handles whether or not to load games using the widescreen-patched TwlBg is that it checks for a Widescreen.cxi in sdmc:/_nds/TWiLightMenu/TwlBg and also checks sdmc:/_nds/TWiLightMenu/widescreen for a file that matches either the ROM file name (not useful here, cartridges aren't ROMs [in the specific sense I'm using it right now, don't @ me, I know cartridges are literally ROMs]) or the game's ID and header checksum. For example, a commercial Mario Kart DS (USA) has the ID of AMCE and a header checksum of DEF2. If you've got TWLMenu++ and take a look in the folder I just mentioned, you'll find a file called AMCE-DEF2.bin, which serves two purposes: 1) it contains the code necessary to make Mario Kart DS display in widescreen, and 2) it tells TWLMenu++ to run this game using the widescreen-patched TwlBg, regardless of whether it's running via nds-bootstrap or from a retail Mario Kart DS card.

    Knowing this, you can make a 0-byte .bin file to match your personal flash card and place that into TWLMenu++'s widescreen directory. There's two ways you can probably find this information for your flash card. You could use either a dump of your flash card's ROM, or a dump of whatever game your flash card uses the header from, then you can open it using Windows PC app such as NDSTS (direct link to ZIP download) to find your card's ID and checksum. Now, if you create that file, enable widescreen and boot your flash card via TWLMenu++, it will run using widescreen-patched TwlBg, but if you launch it normally, it will run with your unmodified, 4:3 TwlBg.

    So yeah, kinda complicated.
     
    Last edited by Vague Rant, Sep 11, 2019
    Pokem likes this.
  4. Pokem

    Pokem GBAtemp Maniac

    Member
    6
    Jul 22, 2016
    United States
    Ahhh, I see. So it's a bit similar to something like NTR.
    Find the ID and checksum (TittleID in NTR's case) and place it in the widescreen folder.
     
  5. ChampionLeake

    ChampionLeake NTR/TWL Exploiter

    Member
    4
    Jan 19, 2016
    United States
    Widescreen Hack for SpongeBob's Boating Bash NDS
    Code:
    USA 
    16:10 Widescreen for 3DS
    9220FAFC 00001555
    1220FAFC 00001999
    D2000000 00000000
    
    Code:
    EUR
    16:10 Widescreen for 3DS
    921EF59C 00001555
    121EF59C 00001999
    D2000000 00000000
    
    [​IMG]
     
  6. gamemasterplc

    gamemasterplc Member

    Newcomer
    1
    Sep 6, 2019
    United States
    Star Fox Command (USA)
    16:10 Hack for 3DS

    52066B0C 00004000
    02066B0C 00004CCC
    D2000000 00000000
    520001FC 4770DF0C
    02000200 E59F0008
    02000204 E59F1008
    02000208 E5801000
    0200020C E12FFF1E
    02000210 01FFC274
    02000214 0000199A
    D2000000 00000000
    52024530 020B3CE0
    02024528 EAFF6F34
    D2000000 00000000

    Fixes culling too. Had to do a hook to fix culling because it was in the middle of ITCM which is unpatchable by arm7.
     
    Vague Rant and Robz8 like this.
  7. gamemasterplc

    gamemasterplc Member

    Newcomer
    1
    Sep 6, 2019
    United States
    Diddy Kong Racing (USA)
    16:10 Hack for 3DS

    92018D6E 0000F058
    12018D6A 0000F7E7
    12018D6C 0000E94A
    D2000000 00000000
    52000028 F68162E2
    02000000 E59F2018
    02000004 E3A03301
    02000008 E5933304
    0200000C E2133902
    02000010 0A000000
    02000014 E59F2008
    02000018 E3A03B02
    0200001C E12FFF1E
    02000020 00001555
    02000024 00001999
    D2000000 00000000

    Dual Screen 3D Scenes are stretched.
     
    Robz8 likes this.
  8. Vague Rant
    OP

    Vague Rant Deceptively cute

    Member
    7
    Aug 7, 2008
    Melbourne
    Diddy Kong Racing DS is a bit of a nightmare, it looks like you've encountered the same issue that I've had when working on this game. The individual worlds are running in 4:3, and the normal races are running in 16:10, but if you travel into the broader overworld area (where Taj the elephant wanders around) or one of the bottom-screen courses like the balloon-popping minigames, those are also running in 16:10, even though they're displayed on the touch screen.

    I haven't been able to get past this roadblock; perhaps you'll have better luck. My running theory is that we need to change the aspect ratio later than on the first read, because the game seems to respond better to aspect ratio changes that occur later, e.g. even as late as the first couple of seconds in-game. After that, the game doesn't seem to respond to any further changes.
     
  9. gamemasterplc

    gamemasterplc Member

    Newcomer
    1
    Sep 6, 2019
    United States
    Can you try adding the below 3 lines to the code and see if it works better. It disables the identical FOV check for recomputing the projection matrix.

    9201874E 00004788
    12018746 000046C0
    D2000000 00000000
     
    Last edited by gamemasterplc, Sep 23, 2019
  10. Vague Rant
    OP

    Vague Rant Deceptively cute

    Member
    7
    Aug 7, 2008
    Melbourne
    This seems to improve things slightly, the first time I visit the overworld it's in 4:3 as it should be, but certain things can trigger it to go back to 16:10, e.g. quitting from an overworld Challenge from Taj. After that it seems to remain at 16:10, even if I leave the overworld and return again.

    EDIT: The (touch-screen) balloon-popping games are also still in widescreen with this change.
     
    Last edited by Vague Rant, Sep 23, 2019
  11. gamemasterplc

    gamemasterplc Member

    Newcomer
    1
    Sep 6, 2019
    United States
    try changing the 00004770 in the code to 00004788 and see if anything is different. I typed in the wrong number.
     
  12. Vague Rant
    OP

    Vague Rant Deceptively cute

    Member
    7
    Aug 7, 2008
    Melbourne
    @gamemasterplc That seems to have fixed the overworld, it's running at 4:3 permanently, but the balloon popping games are still running in 16:10. Currently I don't have a save far enough into the game to test other touch-screen races like the walrus boss.
     
  13. gamemasterplc

    gamemasterplc Member

    Newcomer
    1
    Sep 6, 2019
    United States
    Can you move the new code to issues instead of dual screen 3D games.
     
    Vague Rant likes this.
  14. gamemasterplc

    gamemasterplc Member

    Newcomer
    1
    Sep 6, 2019
    United States
    Gauntlet DS
    16:10 Widescreen for 3DS

    520DFEDC 74634174
    0202BF80 E1A00000
    0202BF88 EA02CFC5
    020DFEA4 E3A01301
    020DFEA8 E5911304
    020DFEAC E2111902
    020DFEB0 E59F1008
    020DFEB4 1A000000
    020DFEB8 E59F1004
    020DFEBC EAFD3032
    020DFEC0 00001555
    020DFEC4 0000199A
    D2000000 00000000
     
    Vague Rant and Robz8 like this.
  15. Vague Rant
    OP

    Vague Rant Deceptively cute

    Member
    7
    Aug 7, 2008
    Melbourne
    Just an update for anybody else adding codes after this point, as gamemasterplc has clearly figured out, 0x1555 is rounded down from like ... 0x1555 and a third, so us calculating our 16:10 value based on that is introducing a rounding error. Long story short, 0x199A is like 1/32768th more correct than 0x1999 was and we should use that for 16:10 from now on.
     
    FateForWindows and Robz8 like this.
  16. gamemasterplc

    gamemasterplc Member

    Newcomer
    1
    Sep 6, 2019
    United States
    Grid is still going to need the slightly inaccurate value so it can detect when its not in 16:10 mode accurately. Because a menu uses the exact same value for the aspect ratio.
     
    Vague Rant likes this.
  17. Vague Rant
    OP

    Vague Rant Deceptively cute

    Member
    7
    Aug 7, 2008
    Melbourne
    Oh, well spotted, thanks. What an inconvenient coincidence. :D
     
  18. gamemasterplc

    gamemasterplc Member

    Newcomer
    1
    Sep 6, 2019
    United States
    Vague Rant and Robz8 like this.
  19. everlasting_frogg

    everlasting_frogg Newbie

    Newcomer
    1
    Wednesday
    Indonesia
    castlevania series??
     
  20. Vague Rant
    OP

    Vague Rant Deceptively cute

    Member
    7
    Aug 7, 2008
    Melbourne
    Somebody asked a couple of pages back, quoting my response from then:
    With 3D games, we're basically modifying camera parameters to capture a wider view of the scenery, but 2D games just don't work like that.
     
    FateForWindows likes this.
Quick Reply
Draft saved Draft deleted
Loading...