Hacking Widescreen cheats for DS games on 3DS

deisuke1234

Well-Known Member
Member
Joined
Mar 4, 2016
Messages
108
Trophies
0
Age
29
XP
1,628
Country
Nice work! I just tested this on hardware (I swapped your 32-bit read/writes (codetypes 5/0) for 16-bit (codetypes 9/1) and the code works, but this game varies which screen is displaying 3D throughout gameplay, so unfortunately for 3DS users, it needs a more advanced code like Diddy Kong Racing. I've added it to the OP under the issues section.

Sorry well just a question would you mind to teach me or do you know where I can learn to make this advanced code
 

Vague Rant

Deceptively cute
OP
Member
Joined
Aug 7, 2008
Messages
2,463
Trophies
2
Location
Melbourne
Website
vaguerant.tumblr.com
XP
3,302
Country
@deisuke1234 Basically what you need to do is find something reliable in memory that tells you when the top screen is in 3D vs. when the bottom screen is in 3D. One approach to do this would be to use the RAM Search in DeSmuME, and search for something that's "equal to previous value" or "not equal to previous value", depending on whether the screen has switched since the last time you searched.

So let's say address 0x02002200 contains 0xFF08 when the top screen is in 3D, and 0x0D0A when the bottom screen is in 3D, and 0x02002300 is the aspect ratio offset. These are all just examples, they're not meaningful addresses or values. You'd have to find values that work for the specific game in question. Using those examples though, the code you'd use for the 3DS would look like this:
Code:
92002200 0000FF08 | if 0x02002200 == 0xFF08       | if top screen is 3D
92002300 00001555 |   and if 0x02002300 == 0x1555 |   and if aspect ratio is 4:3
12002300 00001999 |      set 0x02002300 to 0x1999 |     set aspect ratio to 16:10
D2000000 00000000 | endif                         | endif
92002200 00000D0A | if 0x02002200 == 0x0D0A       | if bottom screen is 3D
92002300 00001999 |   and if 0x02002300 == 0x1999 |   and if aspect ratio is 16:10
12002300 00001555 |      set 0x02002300 to 0x1555 |     set aspect ratio to 4:3
D2000000 00000000 | endif                         | endif
So you end up having a "widescreen hack" and sort of a "reverse widescreen hack" in the same code. When the top screen is 3D, the game is switched to widescreen mode, but when the bottom screen is 3D, it gets switched back to 4:3.
 
  • Like
Reactions: deisuke1234

deisuke1234

Well-Known Member
Member
Joined
Mar 4, 2016
Messages
108
Trophies
0
Age
29
XP
1,628
Country
@deisuke1234 Basically what you need to do is find something reliable in memory that tells you when the top screen is in 3D vs. when the bottom screen is in 3D. One approach to do this would be to use the RAM Search in DeSmuME, and search for something that's "equal to previous value" or "not equal to previous value", depending on whether the screen has switched since the last time you searched.

So let's say address 0x02002200 contains 0xFF08 when the top screen is in 3D, and 0x0D0A when the bottom screen is in 3D, and 0x02002300 is the aspect ratio offset. These are all just examples, they're not meaningful addresses or values. You'd have to find values that work for the specific game in question. Using those examples though, the code you'd use for the 3DS would look like this:
Code:
92002200 0000FF08 | if 0x02002200 == 0xFF08       | if top screen is 3D
92002300 00001555 |   and if 0x02002300 == 0x1555 |   and if aspect ratio is 4:3
12002300 00001999 |      set 0x02002300 to 0x1999 |     set aspect ratio to 16:10
D2000000 00000000 | endif                         | endif
92002200 00000D0A | if 0x02002200 == 0x0D0A       | if bottom screen is 3D
92002300 00001999 |   and if 0x02002300 == 0x1999 |   and if aspect ratio is 16:10
12002300 00001555 |      set 0x02002300 to 0x1555 |     set aspect ratio to 4:3
D2000000 00000000 | endif                         | endif
So you end up having a "widescreen hack" and sort of a "reverse widescreen hack" in the same code. When the top screen is 3D, the game is switched to widescreen mode, but when the bottom screen is 3D, it gets switched back to 4:3.

Thanks for the explanination i wounder am i thinking correctly if i do this solving it.

step 1 find the adresss 1555
step 2 change the 1555 to 14562 just to check i have got the right adress
step 3 restart the game with the new value and try to search for 14562
step 4 try to see if i can find any adress that changes to 1555
and last step try to change that value as well.
 

Vague Rant

Deceptively cute
OP
Member
Joined
Aug 7, 2008
Messages
2,463
Trophies
2
Location
Melbourne
Website
vaguerant.tumblr.com
XP
3,302
Country
Not quite, @deisuke1234. The stuff about checking which screen is currently displaying 3D stuff is completely separate from searching for 0x1555. You need to search for a top/bottom screen value, which could be anything, it's not a specific number like 0x1555 for aspect ratio.

The DS can only render 3D on one screen at a time*, so what this part of the process is about is finding which screen is currently the one which is using 3D stuff. So you just have to play the game and do things which make the game switch screens, then search using (if you're running DeSmuME) the radio buttons "not equal" and "previous value".

This will slowly bring down the number of results, but there's going to be tons because you're not searching using a specific value. Eventually, you'll hopefully find an address which reliably holds one value if the top screen is in 3D, and a different value if the bottom screen is in 3D. Once you know which screen is currently 3D, you can adjust the aspect ratio depending on whether it's the top (16:10/0x1999) or the bottom (4:3/0x1555).

*Dual-screen 3D games like Animal Crossing, Dragon Ball Origins or Gauntlet are actually swapping back and forth once per frame, so each screen gets updated at half the normal rate (60 FPS-->30FPS), but they're still technically following the rule that only one screen is rendering 3D in any given frame.
 
  • Like
Reactions: deisuke1234

deisuke1234

Well-Known Member
Member
Joined
Mar 4, 2016
Messages
108
Trophies
0
Age
29
XP
1,628
Country
Not quite, @deisuke1234. The stuff about checking which screen is currently displaying 3D stuff is completely separate from searching for 0x1555. You need to search for a top/bottom screen value, which could be anything, it's not a specific number like 0x1555 for aspect ratio.

The DS can only render 3D on one screen at a time*, so what this part of the process is about is finding which screen is currently the one which is using 3D stuff. So you just have to play the game and do things which make the game switch screens, then search using (if you're running DeSmuME) the radio buttons "not equal" and "previous value".

This will slowly bring down the number of results, but there's going to be tons because you're not searching using a specific value. Eventually, you'll hopefully find an address which reliably holds one value if the top screen is in 3D, and a different value if the bottom screen is in 3D. Once you know which screen is currently 3D, you can adjust the aspect ratio depending on whether it's the top (16:10/0x1999) or the bottom (4:3/0x1555).

*Dual-screen 3D games like Animal Crossing, Dragon Ball Origins or Gauntlet are actually swapping back and forth once per frame, so each screen gets updated at half the normal rate (60 FPS-->30FPS), but they're still technically following the rule that only one screen is rendering 3D in any given frame.

I noticed also that the game got alot of pointers but I managed to find a adress that changes the zoom in for the game. For example if you change the value to 1200 you can see how inzoomed the game map is.
 

CheatFreak47

Catgirl Expert
Member
Joined
Oct 11, 2011
Messages
1,574
Trophies
2
Age
28
Location
Michigan, USA
XP
2,773
Country
United States
I made a new widescreen code for Sims 2 DS, and it turned out to not be as straight forward as some other games (1555 -> 1999 doesn't work here)

The game seems to process video vertically for some reason, so the only solution is to adjust that and then edit the camera zoom restrictions to allow you to zoom slightly more out to essentially get the HOR+ that you want with widescreen.
CARaN4p.jpg


Code:
Sims 2, The (USA) (En,Fr,De,Es,It)

::16:10 Widescreen for 3DS
0213A0F0 00046000
9213A08C 000000FF
1213A08C 00000133
D2000000 00000000


Sims 2, The (Europe) (En,Fr,De,Es,It)

::16:10 Widescreen for 3DS
0213A230 00046000
9213A1CC 000000FF
1213A1CC 00000133
D2000000 00000000


Sims 2, The - Hachamecha Hotel Life (Japan)

::16:10 Widescreen for 3DS
02139D10 00046000
92139CAC 000000FF
12139CAC 00000133
D2000000 00000000

@Vague Rant feel free to add these to the OP for everyone.
 
Last edited by CheatFreak47,

Vague Rant

Deceptively cute
OP
Member
Joined
Aug 7, 2008
Messages
2,463
Trophies
2
Location
Melbourne
Website
vaguerant.tumblr.com
XP
3,302
Country
Wow, awesome stuff, @CheatFreak47! Added those to the OP, impressive work.

Yeah, there's a few games that a couple of us have looked at with no success that seem not to use the 0x1555 system at all, but for me that's the end of the road, I have no idea what to do with them. Metroid Prime: Hunters is the most obvious one, we've had multiple requests for it but none of us has been able to figure it out.

On the subject of hor+/vert-, another thing we've noticed is that several of Griptonite's games adjust their camera zoom based on how much of the scenery is visible, so widescreening them causes the camera to zoom in/gives us a vert- appearance:
  • Assassin's Creed II: Discovery
  • Ben 10 Ultimate Alien: Cosmic Carnage
  • Daniel X: The Ultimate Power
  • Iron Man 2
  • Spider-Man: Web of Shadows
  • X-Men Origins: Wolverine
If you were interested in taking a look at Metroid or any of the Griptonite games I'm sure it'd be greatly appreciated, I know I have no idea how to fix them. :) But no worries if not, we've all survived without widescreen up 'til now.
 

CheatFreak47

Catgirl Expert
Member
Joined
Oct 11, 2011
Messages
1,574
Trophies
2
Age
28
Location
Michigan, USA
XP
2,773
Country
United States
Wow, awesome stuff, @CheatFreak47! Added those to the OP, impressive work.

Yeah, there's a few games that a couple of us have looked at with no success that seem not to use the 0x1555 system at all, but for me that's the end of the road, I have no idea what to do with them. Metroid Prime: Hunters is the most obvious one, we've had multiple requests for it but none of us has been able to figure it out.

On the subject of hor+/vert-, another thing we've noticed is that several of Griptonite's games adjust their camera zoom based on how much of the scenery is visible, so widescreening them causes the camera to zoom in/gives us a vert- appearance:
  • Assassin's Creed II: Discovery
  • Ben 10 Ultimate Alien: Cosmic Carnage
  • Daniel X: The Ultimate Power
  • Iron Man 2
  • Spider-Man: Web of Shadows
  • X-Men Origins: Wolverine
If you were interested in taking a look at Metroid or any of the Griptonite games I'm sure it'd be greatly appreciated, I know I have no idea how to fix them. :) But no worries if not, we've all survived without widescreen up 'til now.
Interesting, I'll have a look sometime, Sims 2 is also a Griptonite game, it was just made after Griptonite was absorbed into Amaze Entertainment, so I bet the solution is either similar or the same.
 

Vague Rant

Deceptively cute
OP
Member
Joined
Aug 7, 2008
Messages
2,463
Trophies
2
Location
Melbourne
Website
vaguerant.tumblr.com
XP
3,302
Country
I've been looking at Metroid again and seeing if I could find anything aspect-ratio-ish. There seems to be a lot of camera-based things around 0x020DAD00 (USA version).
  • 0x020DAD58: earthquake effect?
  • 0x020DAD5C: camera zoom
  • 0x020DAD78: aspect ratio? but image becomes cropped
  • 0x020DAD80: left border
  • 0x020DAD84: wonky geometry
  • 0x020DADA8: shadows
Mostly just noting these down to mess around with again later when I have the time.
 
Last edited by Vague Rant,
  • Like
Reactions: CheatFreak47

RocketRobz

Stylish TWiLight Hero
Developer
Joined
Oct 1, 2010
Messages
16,594
Trophies
3
Age
24
XP
20,989
Country
United States
Updated codes:

Pokémon - Version Or HeartGold/Argent SoulSilver (France)/Edicion Oro HeartGold/Plata SoulSilver (Spain)
Code:
16:10 Widescreen for 3DS
921F031C 0000D008
92022F80 00001999
12022F80 00001555
D2000000 00000000
921F031C 00001C20
92022F80 00001555
12022F80 00001999
D2000000 00000000

Pokémon - Goldene Edition HeartGold/Silberne Edition SoulSilver (Germany)
Code:
16:10 Widescreen for 3DS
921F02DC 0000D008
92022F80 00001999
12022F80 00001555
D2000000 00000000
921F02DC 00001C20
92022F80 00001555
12022F80 00001999
D2000000 00000000

Pokémon - Versione Oro HeartGold/Argento SoulSilver (Italy)
Code:
16:10 Widescreen for 3DS
921F029C 0000D008
92022F80 00001999
12022F80 00001555
D2000000 00000000
921F029C 00001C20
92022F80 00001555
12022F80 00001999
D2000000 00000000

Pocket Monsters - HeartGold/SoulSilver (Japan)
Code:
16:10 Widescreen for 3DS
921F37D4 0000D008
92022C20 00001999
12022C20 00001555
D2000000 00000000
921F37D4 00001C20
92022C20 00001555
12022C20 00001999
D2000000 00000000

Pocket Monsters - HeartGold/SoulSilver (Korea)
Code:
16:10 Widescreen for 3DS
921F0CFC 0000D008
92022F4C 00001999
12022F4C 00001555
D2000000 00000000
921F0CFC 00001C20
92022F4C 00001555
12022F4C 00001999
D2000000 00000000

All disable widescreen on the bottom screen part of the title screen.
 

Vague Rant

Deceptively cute
OP
Member
Joined
Aug 7, 2008
Messages
2,463
Trophies
2
Location
Melbourne
Website
vaguerant.tumblr.com
XP
3,302
Country
@Brawl345 Unfortunately, New Super Mario Bros. is a 2D game, so making a widescreen hack for it would involve rewriting the engine of the game to render more. Somebody did make an assembly rewrite to have the engine render to 16:9, so it's almost certainly possible to do the same for 3DS, but it would take somebody with a deep understanding of how the game works and the knowledge and talent to make ASM hacks for that to be done. That's a far more complicated task than any of the codes in this thread currently, so you might be waiting quite a while.
 
  • Like
Reactions: Brawl345

deisuke1234

Well-Known Member
Member
Joined
Mar 4, 2016
Messages
108
Trophies
0
Age
29
XP
1,628
Country
@Brawl345 Unfortunately, New Super Mario Bros. is a 2D game, so making a widescreen hack for it would involve rewriting the engine of the game to render more. Somebody did make an assembly rewrite to have the engine render to 16:9, so it's almost certainly possible to do the same for 3DS, but it would take somebody with a deep understanding of how the game works and the knowledge and talent to make ASM hacks for that to be done. That's a far more complicated task than any of the codes in this thread currently, so you might be waiting quite a while.
Unless someone has extremely lucky and find the address through random search xD.
 

Vague Rant

Deceptively cute
OP
Member
Joined
Aug 7, 2008
Messages
2,463
Trophies
2
Location
Melbourne
Website
vaguerant.tumblr.com
XP
3,302
Country
@deisuke1234 A 2D game doesn't just have "an address" to make it widescreen, it's not like a 3D game where we can modify the parameters of the virtual camera. 2D games are rendering tiles directly to the framebuffer, the way 2D game development on the DS works is almost entirely unrelated to the way 3D works. For games where it's even possible, which is likely pretty few, it takes many lines of assembly to rewrite the game to a) render more tiles than the game was designed for and b) render its tiles to a different aspect ratio.

Here's what gamemasterplc's 16:9 NSMB assembly code looks like:
Code:
52062358 E1854804
0200DC5C E3A00EC3
0200AE48 E3A03000
0200AE4C E3A01000
02062338 E3A0C015
02062340 E0050C95
02062350 E1A00000
02062348 E1A05425
02000C00 E1844A0E
02000C04 E3A00015
02000C08 E0040490
02000C0C E1A04224
02000C10 EA02B3C6
D2000000 00000000
520D1BEC 00001555
020D1BEC 00001BFF
D2000000 00000000
520ADB30 E59F0014
020ADB2C EAFD4C33
D2000000 00000000
This cheat literally rewrites the code of the game itself, it's not just changing a simple camera parameter.
 
Last edited by Vague Rant,

Vague Rant

Deceptively cute
OP
Member
Joined
Aug 7, 2008
Messages
2,463
Trophies
2
Location
Melbourne
Website
vaguerant.tumblr.com
XP
3,302
Country
@sks316 Pokémon Ranger is an almost certain no because it looks like a pre-rendered 2D game, plus gameplay is all on the touch screen anyway, there's only an overworld map on the top screen--obviously the only one that's wider on a 3DS.

Sonic Rush is another one that's probably somewhere between a likely no and a certain no: the two problems there are a) the game is just a 3D Sonic on a 2D backdrop, so it has almost all the same limitations as 2D games, and b) the gameplay spans across both screens simultaneously, and we can't make one screen widescreen and the other not for games like that anyway.

Mario Party DS has already got a widescreen code (it's in this thread under the "Dual-screen games" spoiler on the first page), but it's not really usable on a 3DS because the gameplay is all over the place--some minigames are on the top screen, some are on the bottom, and some are on both screens simultaneously.

The kinds of games that are good candidates for widescreen are:
  • entirely or almost entirely in 3D
  • entirely or almost entirely played on the top screen, with the bottom screen used as a secondary screen like an inventory, map, etc.
 

Vague Rant

Deceptively cute
OP
Member
Joined
Aug 7, 2008
Messages
2,463
Trophies
2
Location
Melbourne
Website
vaguerant.tumblr.com
XP
3,302
Country
@Vague Rant

b8W9Hxo.png


Naruto - Ninja Destiny (Europe)
Code:
16:10 Widescreen for 3DS
92191EEC 00001555
12191EEC 00001999
D2000000 00000000
Nice job! Working backwards from your code I was also able to make the title screen, character select and story cutscenes widescreen by hitting another address. Added to the OP! :D
 

dripfish

New Member
Newbie
Joined
Aug 16, 2019
Messages
4
Trophies
0
XP
369
Country
Canada
I’m sorry if this is a dumb question but would a patch be available for any of the fire emblem games on the ds? The game is played on the bottom screen but the touch controls are optional from what I remember. I’ve only played the first 2 chapters but I have played all of the fe games on the 3ds
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    K3Nv2 @ K3Nv2: Like for micro