Latest version of bsnes emulator allows for "HD" Mode 7 upscaling

DdXILyN (1).png
0QHVv46 (1).png

Remember the days of the Super Nintendo and its at the time stunning Mode 7 capabilities? Games like F-Zero, Final Fantasy VI, Super Mario Kart, and dozens more all made use of Mode 7 to enhance how the games looked. These days, however, it can look a little dated, and it's a bit difficult to make out specific details, visually. That's where a modder named DerKoun enters the picture, with the release of his "HD Mode 7 Mod" for the Super Nintendo emulator bsnes. According to the release notes, this is a patch for version 107.1 of bsnes that emulates Mode 7 scenes at "up to 4x" the resolution that the original hardware could output. As seen in some of the comparison screenshots, it makes for a drastic difference, smoothing things out to make for a much more visually appealing experience.


This is a mod of bsnes 107.1 by byuu (high-level emulation for co-processors came right on time for this).

It performs Mode 7 transformations (incl. HDMA) at up to 4 times the horizontal and vertical resolution.

Optionally, for games with pseudo 3D perspectives, some limitations of the integer math used by the SNES can be avoided by more aggressive averaging.

This can be disabled in Settings/Emulator/Experimental, where you can also change the scale or disable this feature.

For best performance try different output modes in Settings/Driver/Video. (For me Direct3D performs best.)


Shortly after its release, byuu, developer of bsnes, incorporated the patch into his latest official revision of the emulator. v107r2 is now available to download, taking the patch and adding a few new features and fixes, which are notated below. If you're interested, you can grab the emulator at the source link and check it out for yourself.


Added DerKoun's HD mode 7 (up to 2160p), ~100fps boost for fast forwarding, configurable latency settings for waveOut (please configure this yourself), cubic interpolation for audio, filename case insensitivity, and a few other things.

I corrected some of the issues with the HD mode 7 (such as mosaic in Contra 3, etc), and allowed you to increase the multiplier up to 9x for true 4K resolution. Friendly reminder that this mode has to render 81 times as many pixels with lots of divisions for all five million pixels per frame at 60fps. Hope you have a Threadripper.

Also, this is a beta, so there are bound to be issues. Please wait for v108 if you want something stable.


:arrow: Source
 

genxor

Well-Known Member
Member
Joined
Jan 14, 2006
Messages
120
Trophies
1
XP
1,871
Country
Pretty cool to see that people aren't out of ideas when it comes to tweaking emulation!

If you think this is ever going to run on the snes classic or other emulators on consoles you will be disappointed lol
 

granville

GBAtemp Goat
Member
Joined
Aug 24, 2007
Messages
5,102
Trophies
1
Age
35
Location
Orlando, Florida
XP
3,084
Country
United States
For Bsnes Accurate? Pretty sure Mode 7 HD requires more than that, which is the only core it's on.
I assume it's the accuracy core... I don't use bsnes normally and am not as familiar with it (snes9x is my go-to choice).

I have a 4670k at 4ghz and tested a number of games for it. I set Mode7 to a scale of 4x resolution (960p in the BSNES options). Don't know how much less clock speed you could get away with, but my PC ran everything I threw at it full speed.

The most intense scene I tested was the title screen for Yoshi's Island. It's one of the most demanding games on the SNES due to the SuperFX chip, and the title screen uses mode7.

4x resolution runs full speed, though 5x resolution was a bit too much to reach it (54fps). I'm fine with 960p, I only have a 1080p display. Even 3x resolution (720p) is still incredibly sharp compared to native btw.

I gather that Ryzen is roughly comparable to Haswell clock for clock. So a Ryzen clocked at or near 4ghz would likely get very similar results to my PC.

Someone also made a request for this setting on the snes9x github page. A developer said it was possible (though difficult) and threw out an idea on how they might be able to do it-
https://github.com/snes9xgit/snes9x/issues/529
 
Last edited by granville,

the_randomizer

The Temp's official fox whisperer
Member
Joined
Apr 29, 2011
Messages
31,284
Trophies
2
Age
38
Location
Dr. Wahwee's castle
XP
18,969
Country
United States
I assume it's the accuracy core... I don't use bsnes normally and am not as familiar with it (snes9x is my go-to choice).

I have a 4670k at 4ghz and tested a number of games for it. I set Mode7 to a scale of 4x resolution (960p in the BSNES options). Don't know how much less clock speed you could get away with, but my PC ran everything I threw at it full speed.

The most intense scene I tested was the title screen for Yoshi's Island. It's one of the most demanding games on the SNES due to the SuperFX chip, and the title screen uses mode7.

4x resolution runs full speed, though 5x resolution was a bit too much to reach it (54fps). I'm fine with 960p, I only have a 1080p display. Even 3x resolution (720p) is still incredibly sharp compared to native btw.

I gather that Ryzen is roughly comparable to Haswell clock for clock. So a Ryzen clocked at or near 4ghz would likely get very similar results to my PC.

Someone also made a request for this setting on the snes9x github page. A developer said it was possible (though difficult) and threw out an idea on how they might be able to do it-
https://github.com/snes9xgit/snes9x/issues/529

I'd rather not Snes9x turn into Bsnes and become even more demanding than it already is, if they can do it without sacrificing speed, sure.
 

granville

GBAtemp Goat
Member
Joined
Aug 24, 2007
Messages
5,102
Trophies
1
Age
35
Location
Orlando, Florida
XP
3,084
Country
United States
I'd rather not Snes9x turn into Bsnes and become even more demanding than it already is, if they can do it without sacrificing speed, sure.
It's an option, not a requirement. If you enable the setting, it's obviously going to require more speed. But that's no different than any other internal resolution scaling in other emulators (or all of the filters and shaders available). You don't have to use it at all, it's entirely optional and shouldn't make the emulator more demanding if you just keep it turned off.
 

Lucifer666

all the world needs is me
Member
Joined
Apr 22, 2011
Messages
1,626
Trophies
1
Location
The Fourth Dimension
XP
2,160
Country
United Kingdom
Can someone explain to me how this upscaling works? How does the emulator get the additional data (pixels)? Or, is it simply displaying the assets already contained in the ROM in a more intelligent manner than the NES and other emulators?

EDIT: Never mind, yeah it's the latter. There's a nice explanation here.
 
Last edited by Lucifer666,

Vince989

Still lurking around, sometimes...
Former Staff
Joined
Oct 24, 2002
Messages
1,433
Trophies
2
Age
38
Location
Quebec, Canada
Website
Visit site
XP
770
Country
Canada
Bad examples? I can barely tell the difference. No matter how much you scale up a pixelated or sprite based game, it still going to be pixelated.
Yes, it's not adding higher-resolution source images, but it makes them rendered much closer to the sources.

I'd rather not Snes9x turn into Bsnes and become even more demanding than it already is, if they can do it without sacrificing speed, sure.
It would be a video setting which wouldn't change anything unless you decide to turn it on.

This was already in zSNES by the way
I remember "Hi-Res Mode-7" settings in ZSNES and/or Snes9x , but this goes way higher than those did (which was 2x I think)

- Vince989
 

TheMrIron2

Well-Known Member
Member
Joined
Aug 5, 2017
Messages
218
Trophies
0
XP
978
Country
Ireland
It seems people have touched on the explanation already but some people haven't understood it properly, so here's the gist in slightly more simple terms.

The reason it looks so much better is because on the original SNES, the game was heavily restricted because it had to operate using 8x8 or 16x16 tiles to compose sprites, and sprites could be no bigger than 64x64 each. Combine that with the low resolution of 256x224 and the SNES often just didn't have enough pixels to work with to accurately produce the effect it wanted. When transforming pixels at such a low resolution, the end result can look deformed and/or messy.

What bsnes is doing now is it's multiplying the resolution of the original sprites, not in an attempt to add detail or improve their quality but so that the emulator has far more pixels to sample. For example, one pixel in an 8x8 tile could become four at a higher resolution - no detail is added, but the result is that there are far more pixels involved now and this means they can be manipulated much more precisely.

On top of that, programmers on SNES took shortcuts, sometimes liberally, to run their games at 60FPS (usually) so their calculations were often imprecise to save precious computation time on the ~3.5MHz CPU.
The SNES also had limitations with integer math calculations, and the developer cites more aggressive averaging as an improvement. As a 16-bit machine, the SNES could only process integers from -32768 to 32767. ~65,000 might sound like a lot of numbers, but when doing some calculations problems can arise. bsnes allows for more precision than the SNES originally could provide.
bsnes also fixes these calculations by giving them far more pixels to work with, so that even poor or inaccurate formulas get good results.

Hope this makes it clearer for anyone confused. :D
 
Last edited by TheMrIron2, , Reason: 16-bit

RowanDDR

SNES Lover
Member
Joined
Apr 13, 2006
Messages
258
Trophies
0
Location
London
XP
963
Country
ZSNES has had "hi res mode 7" option since 2004, no? Maybe more of a story is WHY its taken this long for other emus to catch up.

Oh, I'm the 3rd person to say that in this thread. What can I say, the "search this thread" button is a bit hidden.
 
Last edited by RowanDDR,

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    K3Nv2 @ K3Nv2: Att did offer a $500gc tempting to use it for 6 months and cancel