Mesen-S (SNES) core

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

Libretro isn’t building now:

In file included from ../Core/CpuDebugger.cpp:6:
../Core/Disassembler.h:75:21: error: extra qualification 'Disassembler::' on member 'GetSource' [-fpermissive]
   75 |  DisassemblerSource Disassembler::GetSource(SnesMemoryType type);
      |                     ^~~~~~~~~~~~
g++ -O3 -Wall -D LIBRETRO  -std=c++14  -c ../Core/CpuDisUtils.cpp -o../Core/CpuDisUtils.o
make: *** [Makefile:315: ../Core/CpuDebugger.o] Error 1

Thanks, fixed - one day compilers will agree about what is valid C++ and what isn’t… one day… maybe… Who am I kidding, it’s never going to happen :stuck_out_tongue:

2 Likes

Finished up most of the SA-1 implementation a couple of days ago - as far as I know, all SA-1 games should be working properly (the features I haven’t implemented yet aren’t used by any SA-1 game, I believe). Fixed a Super FX bug that was affecting Yoshi’s Island a few days ago, too.

Also, I just committed Multitap+Super Scope support, so other than the 4 games that use chips that aren’t supported yet (SPC7110 & ST018) and 2 games that freeze at the start, everything else within the licensed game library should be playable now (not impossible that some games have issues nobody has found yet, though!)

5 Likes

Excelent work!!! By the way, how can I use bios files with ehancement chip games in the libretro core version? In the stand-alone, the emulator asks for the files.

Thanks!!

They need to be put in a “Firmware” subfolder inside retroarch’s “system” folder, with the same filenames that the standalone version uses. (e.g dsp1.rom, dsp1b.rom, etc.)

1 Like

I can’t seem to find the multitap options.

You should be able to select “Multitap” as the controller type for player 2.

Unrelated: I added MSU1 support yesterday. It expects a folder with the rom (e.g myrom.sfc) + a file called myrom.msu and then tracks called myrom-#.pcm, etc. Alternatively, it’ll also accept a file called msu1.rom (instead of myrom.msu) + tracks named track-#.pcm, etc.

3 Likes