Mesen-S (SNES) core

Just out of curiosity, how does this core compare with bsnes/higan or snes9x? Does this core also have the extra frame of lag like the bsnes/higan cores do?

No additional lag.
Faster than nside balanced (200fps vs 240fps in Contra 3), slower than bsnes mercury balanced (289fps).

For now… :smiley:

Snes9x is around 1000fps. Can’t really compare.

1 Like

At the moment, I would say that for everything it currently supports, it should be more accurate than snes9x. But it’s still missing SA-1 and Super FX support, which prevents a fair number of popular titles from being playable.

Compared to bsnes/higan, it should be somewhat close at this point (for what’s implemented anyway), but there are still a number of details I haven’t fleshed out in terms of accuracy. The recent fixes/improvements I’ve done to the PPU (video) may actually make it ever so slightly more accurate than higan in some regards (though I’m sure there are still some bugs in my PPU implementation that higan emulates correctly) - but higan also supports a lot more stuff than Mesen-S does at the moment.

It’s a lot slower than snes9x, but comparing them based on their speed is similar to comparing FCEUX and Mesen based on their FPS - there is no way to match snes9x’s speed while also making it very accurate. Comparing with higan/bsnes is a bit hard given the billion different forks and libretro cores - if comparing to the recent standalone higan/bsnes versions, it’s faster than higan and probably slower than bsnes.

3 Likes

Last time I check bsnes mercury balanced was still faster than modern bsnes (stand-alone), so mesen-s shouldn’t be too different in speed.

edit: 268fps in bsnes 107.1 for Contra 3, so it’s a bit faster.

Just added overclocking options to the core - like Mesen you can pick between adding scanlines “before NMI” or “after NMI”. Like on the NES, some games prefer one over the other. Games seem to be slightly more likely to break compared to the NES, but I was able to use this to eliminate the slowdown from Gradius 3, Super Ghouls & Ghosts & Super R-Type, so it’s a pretty decent start. Using “very high” overclocking is pretty harsh on the CPU, though! (and probably overkill in most cases)

Version has been bumped up to 0.2.0 since I released the 0.2.0 standalone build yesterday, too.

6 Likes

Hi,

Loving the emulator! However, resolution switching doesn’t seem to work for me both on games mentioned here (DKC) or on the 240p test suite. I’m running the latest version of the core and haven’t changed any settings within the core.

Any ideas?

What do you mean by it doesn’t work?

The 240p suite did make me realize the core was only outputting 480i when using the SNES’ high resolution graphic modes, which made the “Alternate 240p/480i” test always output as regular 240p.

What was it about DKC and the test suite that didn’t work properly on your end?

The image doesn’t seem to get sharper or more hi-res. Maybe I’m not looking closely enough to see it. It’s not something I’d thought about before on other emulators but when I saw it mentioned here I decided to give it a try and I didn’t see the difference. I’ll give it another go and get closer to the screen! :slight_smile:

You’ll know if it isn’t working if you load something like Seiken Densetsu 3 / Trials of Mana, since the text will be almost illegible. Something like the DKC screen is pretty hard to tell the difference unless you’re using certain shaders.

I just fixed the interlace issue I had found in the 240p test, but beyond that the high resolution modes should be working properly. Like Awakened said, it’s usually not really something you can notice unless you’re using specific shaders.

Also, just finished adding SA-1 support - there are still a couple of unimplemented features that will cause problems in ~3 games, but beyond that it should mostly be working properly. Just need to add Super FX support and everything but 10 or so games should be playable.

3 Likes

Blindingly fast progress!

I tested Kirby’s Superstar, Dream Land 3 and Marvelous. No issues with those three in some brief playtime. Superstar ran around 125 FPS in Great Cave Offensive on a 2500k, 4.4ghz. I’d still like an option to disable high res for Dream Land 3 to make it look best with a CRT shader and a patch that blends the interlaced transparency at low res.

You can always put the snes-hires-blend shader in front:

Yeah, that’s another option. snes9x and higan also have blending options, though I forget if the shader or those options look as seamless as the canoe romhack. With that there’s no blurring or anything; it just looks like regular transparency. I also don’t have to worry about having to combine the hires shader with whatever other shaders I’m using if I use the hack.

Did a comparison today and Kirby 3 in snes9x with high res enabled and high res blending set to merge looks identical to using the blending romhack plus high res off. So maybe some high res blending options would make more sense to implement in Mesen-S than an option to disable it.

Adding some sort of blend filter for the high res modes is on my list already - it’s useful for stuff like the pseudo transparent dialog boxes in Jurassic Park and the like, too.

Also, just finished adding Super FX support, should hopefully be working properly. Also put an option to overclock the Super FX on its own, rather than having to use the before/after NMI overclocking method (overclocking just the Super FX is probably a bit less mean on the CPU requirements)

6 Likes

One more day, one more coprocessor? Just added S-DD1 support (which is used by Star Ocean and Street Fighter Alpha 2) - this one was pretty straightforward since there’s a public domain library for the decompression algorithm it uses.

Don’t expect another coprocessor tomorrow, though :stuck_out_tongue:

5 Likes

This one took me a bit longer than I had hoped, but finally finished adding CX4 support. So MMX2/3 should be playable, but there’s still a bit of a timing problem which causes the demo sequence to desync, but haven’t been able to find a solution yet. It shouldn’t really have any negative impact on gameplay, though.

3 Likes

In Mega Man X2, on the stage select screen the little screenshots of the stages go flying off in weird directions, just don’t show up or show up where they aren’t supposed to.

Mesen-S:

snes9x:

Also, in Crystal Snail’s level, the first miniboss has these little things that fire lasers at you. They each start to slowly drift upwards and will eventually go off screen, which is kinda funny. In snes9x, both the laser things that the miniboss spawns stay onscreen until you defeat the boss.

In X3, there is a transparent yellow line on the left of the cinematic that plays after the Capcom logo. There is supposed to be a transparent yellow spotlight effect in that that’s missing. X3 also has the same type of issue on the stage select screen as X2.

Also, I was expecting cx4 to require firmware, but both games run without it. Not that I mind :slight_smile:

Well, clearly I didn’t test this enough :stuck_out_tongue: Sounds like a CPU bug, I’ll take a look, thanks!

I thought so too at first, but it turns out the CX4 “firmware” is actually just a large lookup table of mathematical values (e.g the value of sin(30), sin(31), etc.) - it doesn’t actually contain any code, and isn’t really something that you could argue is copyrightable. nocash’s fullsnes documentation even lists the formulas used to produce the values.

All the issues you found turned out to be caused by the same bug. Should be fixed in the latest commit, thanks!

Edit: Also just added OBC1 support, but the only game that uses it is a super scope game, and I haven’t implemented the super scope yet, so…

4 Likes