How to play NDS Games in HD Widescreen (16:9, 21:9, 32:9)!

Discussion in 'NDS - Tutorials' started by PRAGMA, May 20, 2019.

  1. PRAGMA
    OP

    PRAGMA GBAtemp Addict

    Member
    12
    Dec 29, 2015
    Ireland
    127.0.0.1
    [​IMG]
    ~ Pokémon Diamond Version in 3840x1080 HD (32:9 1080p) with 3D Rasterized in x16 Native Resolution

    Notes

    While any Emulator on any System MAY work, this tutorial is geared towards Windows + DeSmuME Official Branch AutoBuilds.
    DraSticDS for Android should work as you can in fact stretch its emulated screen and use cheats!
    This tutorial includes using a Helper Program called DeSmuMAR which only supports Windows.

    Yup that's right, only 4 steps to go from nothing to Widescreen HD :P

    1. Download DeSmuMAR's latest version here, copy it to C:/Program Files/DeSmuME (Create folder if needed).
      For Windows 8.1 and older: Right-click DeSmuMAR.exe -> Properties -> Compatability Tab -> Tick "Run this program as an Administrator" checkbox -> Save.
    2. Open DeSmuMAR and it will ask you if you want to download the latest official master branch Dev Build (AutoBuild from from an official AppVeyor link).
      Say (y) to download it. If you don't want to download it automatically (browse sourcecode if it's a trust thing), then head to the url shown in DeSmuMAR itself to download it manually (Make sure its x64)
    3. Right-click DeSmuME.exe -> Properties -> Compatability Tab -> Tick "Run this program as an Administrator" checkbox -> Save.
      This is required only if you ever plan on opening DeSmuME.exe without DeSmuMAR.exe, I recommend doing it anyway just incase it ever happens without you knowing.
      If DeSmuME doesnt have write permission for Program Files directory (by running as an administrator) then it cant save! DeSmuMAR running as administrator gives DeSmuME Administrator power until its closed.
    4. Open DeSmuMAR.exe and enter in the Aspect Ratio and Resolution (Size) you wish to use.
      Once done DeSmuME will open automatically sized with unmentioned settings changed for this to work.
      Now add a Widescreen cheat code for your game. You can see the steps for that below.

    DONE! :yaynds: You heard me! Now, literally never open DeSmuME.exe manually, you don't ever need to :O Just open DeSmuMAR.exe from now on, you can even associate it as the default for .nds files or drag and drop supported files onto DeSmuMAR and it will still work!
    NOTE: View -> LCDs Layout -> Only Horizontal and One LCD options are supported at the moment.
    (optional) If you want a better viewing enjoyment, then I recommend you fiddling with Config -> 3D Settings -> "General Options" Area ->"GPU Scaling Factor".
    This is the native resolution option, e.g. 3 = x3 Native Resolution for 3D Objects. I recommend for a high end system x3-x4, any other system will probably lag with anything higher than x2.
    For Pixel based games like Zelda, Pokémon, I don't recommend using Texture Scaling as it just makes them less crisp, it doesnt really make them look better at all, if not worse.

    Just a small side-note, if there's any programmers out there who can create something like DeSmuMAR for other systems and/or emulators, please do and let us know.

    Adding Action Replay Widescreen Cheat Code

    • Go to Tools -> Cheats List -> "Add cheats code as..." -> Action Replay
    • Title it "Widescreen" or such, it's up to you.
    • For the code, input any of the following based on your game, the following are 16:9 codes.
    • If you want a different aspect ratio? Replace 1C71 of the codes with any of these
      21:9 - 2554
      32:9 - 38E2
      18:9/2:1 - 1FFF
      If the aspect ratio you want isnt listed, take a peek at the formula below to calculate any you want.
    • Once you input the code, tick "turn on code", add the code, save on the cheats list window, and then reset the ROM to apply the changes.
    Widescreen Action Replay Code List

    IMPORTANT, The following codes are accurate formula's but don't accept decimal spaces, so they will be slightly off but not noticably.
    Crafting your own Widescreen Code!
    Code List:
    • Mario Kart DS (In race only)
    • Pokémon Diamond/Pearl
    • Pokémon Platinum
    • Pokémon HeartGold/SoulSilver
    • Pokémon Black
    • Pokémon White
    • Pokémon Black 2
    • Pokémon White 2
    • Sonic & Sega All-Stars Racing
    • Star Fox Command
    • The Legend of Zelda: Phantom Hourglass
    Aspect Ratio Value Formula (Decimal) by Me (@PRAGMA)

    Want to use an aspect ratio not listed?
    Calculate with the following formula crafted by me :)


    [​IMG]

    Code:
    (((oAH / oAW * 100) / 100) * oD) * (cAW / cAH)
    Where:
    oAH = Original Aspect Height (3)
    oAW = Original Aspect Width (4)
    oD = Original Decimal Value (5461)
    cAW = Custom Aspect Width (16)
    cAH = Custom Aspect Height (9)
    Once done, round it to the nearest whole number.
    Example: (((3 / 4 * 100) / 100) * 5461) * (16 / 9)
    The result of the formula is Decimal (Number Value).
    Before you add it to the end of the AR Code, convert it to HEX.
    
    Known Bugs

    • Due to DeSmuME rendering all of this still in 4:3 (as it has to thats what the DS's resolution itself is), there is some % of pixels (depending on Aspect Ratio) that will be instantly lost when using Widescreen as they simply cant be rendered as there isn't enough initial resolution. For example this caused Pokémon Diamond's Lucas Characters' eye here to become improportional. Nothing can be done about it. Don't worry however, its a very minor amount of pixels.
    End Result


    [​IMG]
     
    Last edited by PRAGMA, May 25, 2019
    lordcrew27, Tarmfot, Dennieh and 17 others like this.
  2. PRAGMA
    OP

    PRAGMA GBAtemp Addict

    Member
    12
    Dec 29, 2015
    Ireland
    127.0.0.1
    Added new instructions, simplifying the whole process, I made an exe named "DeSmuME Resizer" which will make it basically 1 click to enable 16:9 sparing you tons of time each launch.
     
  3. GalenTheGamer

    GalenTheGamer Advanced Member

    Newcomer
    4
    GBAtemp Patron
    GalenTheGamer is a Patron of GBAtemp and is helping us stay independent!

    Our Patreon
    Jan 8, 2009
    United States
    does it work with Black and White?
     
  4. PRAGMA
    OP

    PRAGMA GBAtemp Addict

    Member
    12
    Dec 29, 2015
    Ireland
    127.0.0.1
    You will probably need to find an AR Widescreen code similar to the one for Diamond and Pearl but the premise is basically the same.
     
    reprep likes this.
  5. PRAGMA
    OP

    PRAGMA GBAtemp Addict

    Member
    12
    Dec 29, 2015
    Ireland
    127.0.0.1
    Updated DeSmuME Resizer to be a tad bit more Efficient and also updated the tutorial to use the official branch DeSmuME since the Nightly and AutoBuilds for 0.9.12 supports increasing the internal resolution now! :D
     
  6. GravityLoL

    GravityLoL GBAtemp Regular

    Member
    3
    Jun 17, 2012
    Poland
    would love it for platinum, i just started new playthrough.

    also, doesn anyone know if it will work at DSTWO?
     
    Last edited by GravityLoL, May 22, 2019
  7. PRAGMA
    OP

    PRAGMA GBAtemp Addict

    Member
    12
    Dec 29, 2015
    Ireland
    127.0.0.1
    It would but you can't stretch official hardware's screens, that would only be possible on 3DS hardware but no one knows if it can actually be done.

    — Posts automatically merged - Please don't double post! —

    Added support for Pokemon Platinum :)
    Steps are no different apart from the Widescreen Action Replay code which I have added to the tutorial.
     
  8. PRAGMA
    OP

    PRAGMA GBAtemp Addict

    Member
    12
    Dec 29, 2015
    Ireland
    127.0.0.1
    [​IMG]
    ~ Pokémon Diamond Version in 3840x1080p HD in 32:9 Aspect Ratio with 3D Rasterized in X16 Native Res

    Found a way to play in 32:9 and 21:9, would anyone actually want these? 32:9 almost all the time you see areas loading in/out, 21:9 might not but still could occasionally show it.

    — Posts automatically merged - Please don't double post! —

    Added support for HeartGold/SoulSilver, I can't find the Camera Addresses for Black/White Black2/White2, so if you know them, let me know!

    — Posts automatically merged - Please don't double post! —

    Added instructions for 21:9 and 32:9
     
    noctis90210 likes this.
  9. Scarlet

    Scarlet A Convenient Oddity

    pip Reporter
    15
    GBAtemp Patron
    Scarlet is a Patron of GBAtemp and is helping us stay independent!

    Our Patreon
    Jan 7, 2015
    United Kingdom
    Middleish North-Left
    Heya, seems great to be able to go back to the games like this! Any idea on the code I'd need for 18:9? Or just 2:1 lol, fancying giving this a shot on my phone and wanted it to completely fill the screen.
     
  10. PRAGMA
    OP

    PRAGMA GBAtemp Addict

    Member
    12
    Dec 29, 2015
    Ireland
    127.0.0.1
    Try 3D28 [EDIT: Nope, its 1FFF] (replace last 4 of any above codes with that)
     
    Last edited by PRAGMA, May 23, 2019
    Scarlet likes this.
  11. Scarlet

    Scarlet A Convenient Oddity

    pip Reporter
    15
    GBAtemp Patron
    Scarlet is a Patron of GBAtemp and is helping us stay independent!

    Our Patreon
    Jan 7, 2015
    United Kingdom
    Middleish North-Left
    That one's a bit off lol

    Screenshot_20190523-064855.

    16:9 basically looked alright but I just wanted to properly match my aspect ratio where possible.
     
  12. PRAGMA
    OP

    PRAGMA GBAtemp Addict

    Member
    12
    Dec 29, 2015
    Ireland
    127.0.0.1
    Hmm odd stuff, Im still looking into properly getting the ratio's, my math must be off a bit. :/
     
    Scarlet likes this.
  13. Scarlet

    Scarlet A Convenient Oddity

    pip Reporter
    15
    GBAtemp Patron
    Scarlet is a Patron of GBAtemp and is helping us stay independent!

    Our Patreon
    Jan 7, 2015
    United Kingdom
    Middleish North-Left
    No worries, stretched 16:9 is still a huge improvement over stretched 4:3 lol
     
    PRAGMA likes this.
  14. PRAGMA
    OP

    PRAGMA GBAtemp Addict

    Member
    12
    Dec 29, 2015
    Ireland
    127.0.0.1
    From this I can confirm my calculations for 21:9 + are incorrect, while they look almost correct, they arent. Thanks for asking this so I could figure out :)
     
    Scarlet likes this.
  15. PRAGMA
    OP

    PRAGMA GBAtemp Addict

    Member
    12
    Dec 29, 2015
    Ireland
    127.0.0.1
    I've discovered the formula!

    What I did to calculate it, was I got the original decimal value from DeSmuME RAM Searching @ the Address for the Camera, the original Decimal is 5461 (0x1555)
    So, since we KNOW this is 1.33' (4:3), we can figure out how to get any aspect ratio from it, but first to be able to do that, we need to figure out what 1.00' (1:1) is.
    To do this, we simply ((3 / 4 * 100)% of 5461) which is 4095.75, in theory, this is 1.00 (1:1) aspect ratio, so I went and tested against unmodified vs modified 1:1 calculation by overlaying via photoshop: https://imgur.com/cVw0es9
    As you can see, they match pretty much perfectly, the reason its a tad bit different is because of decimal places and the fact we cant do much about it in only a 2 byte restricted value.
    But we got 1:1! Now all we need to do is:
    ((3 / 4 * 100)% of 5461) * (16 / 9) = 7281.33'
    Which results in the decimal value for 16:9! How do I know? They match up just like 1:1 pretty much bang on, just slightly off thanks to decimal places again.
    Funny enough, this decimal value 7281.33' (0x1C71) is also the exact same as the original code I got from a Database, so this confirms these codes to be a correct formula.

    Finalized Formula!
    Code:
    ((oAH / oAW * 100)% of oD) * (cAW / cAH)
    Where:
    oAH = Original Aspect Height (3)
    oAW = Original Aspect Width (4)
    oD = Original Decimal Value (5461)
    cAW = Custom Aspect Width (16)
    cAH = Custom Aspect Height (9)
    
    So for 21:9
    ((3 / 4 * 100)% of 5461) * (21 / 9)
    2:1
    ((3 / 4 * 100)% of 5461) * (2 / 1)
    40:40
    ((3 / 4 * 100)% of 5461) * (40 / 40)

    — Posts automatically merged - Please don't double post! —

    1FFF :D
     
    AikoT_T and Scarlet like this.
  16. Scarlet

    Scarlet A Convenient Oddity

    pip Reporter
    15
    GBAtemp Patron
    Scarlet is a Patron of GBAtemp and is helping us stay independent!

    Our Patreon
    Jan 7, 2015
    United Kingdom
    Middleish North-Left
    Thanks for all your work!

    Screenshot_20190523-104833.
     
    PRAGMA likes this.
  17. PRAGMA
    OP

    PRAGMA GBAtemp Addict

    Member
    12
    Dec 29, 2015
    Ireland
    127.0.0.1
    No problem! Hope you enjoy.

    — Posts automatically merged - Please don't double post! —

    Updated DeSmuME Resizer with Aspect Ratio Support, Screens Amount Support and ROM Passthrough support! (You can now drag drop roms onto DeSmuME Resizer or make DeSmuME Resizer your default .nds app and it will pass the rom along to DeSmuME!)
     
    Last edited by PRAGMA, May 23, 2019
  18. KazoWAR

    KazoWAR GBAtemp Advanced Maniac

    Member
    8
    Aug 12, 2008
    United States
    Winter Haven
    Black OW
    52282308 00001555
    02282308 00001C71
    D2000000 00000000

    White OW
    52282328 00001555
    02282328 00001C71
    D2000000 00000000

    Black 2 OW
    5226FE50 00001555
    0226FE50 00001C71
    D2000000 00000000

    White 2 OW
    5226FE90 00001555
    0226FE90 00001C71
    D2000000 00000000
     
    PRAGMA, fr3quency and Scarlet like this.
  19. PRAGMA
    OP

    PRAGMA GBAtemp Addict

    Member
    12
    Dec 29, 2015
    Ireland
    127.0.0.1
    May I ask how you found these, and why they are different the all other games?

    — Posts automatically merged - Please don't double post! —

    Well cool, guess that's all the core series Pokemon DS Games in Widescreen! :D, It's possible to do this in a multitude of other games, so perhaps I may remodel this tutorial into a more inclusive tutorial soon giving addresses for other games aswell?
     
  20. PRAGMA
    OP

    PRAGMA GBAtemp Addict

    Member
    12
    Dec 29, 2015
    Ireland
    127.0.0.1
    P.S. The first and last lines here arent actually needed.
    The first line is the original address and value in 4 byte length.
    The second line is the only line of interest and the last line is just an ender.
     
Loading...