Mesen Core

Loving this core so far, thank you very much. :slight_smile:

I did notice some strange behavior with Famicom Disk System. The R1 button seems to reset the game (not sure what it’s supposed to do), and the L1 button seems to either eject the disk or switch sides (not sure), but I get ‘disk error’ messages from the FDS hardware (not RetroArch). Changing the setting 'FDS: Automatically insert disks - On" makes the L1 button functional, but there is no On Screen Display of what happened. There are some games that have more than one disk (“Body Conquest I”), and I’m not sure how if there’s a way to change the disk. The way FCEUMM handles it at the moment is to cycle through Disk0 side A, Disk0 side B, Disk1 side A, Disk2 side B, then back to Disk0 side A - and it gives an OSD for where you’re at in the cycle.

If you can get these issues with FDS (and the ability to remap the L1 eject/switch side, and R1 buttons), this will probably be the best choice for everything Nintendo. Very impressed that this core is already this good - and has Retro Achievements working already (!).

@DukeJP Achievements on standalone is probably not something I will do anytime soon - but maybe at some point in the future.

@lfan I’m not quite sure which palette that is, but there is already a large number of them included in the core - I think I might just give the ability to provide a custom palette in a file, rather than include every single palette in existence.

@Typhon I just fixed a couple of bugs related to system actions (switch disk, reset, insert coin, etc) and pushed the changes (the next build the bot makes should have them).

To explain a bit in more details the FDS stuff: -Automatically insert disks: This is an option that makes Mesen automatically detect when a game asks for a disk and automatically inserts that disk without user intervention. In general, it works well with most licensed games (e.g bio miracle, akumajou - if you boot them up with the option enabled, the game will ask for a disk, and it will go into its loading screen right away). Some games do not like this option (which might cause “Disk error” messages to appear), but most work fine with it (afaik). There’s also currently a bug where this option fails to work properly if you’re using a relatively high level of overclocking (it’s on my list of things to get fixed).

-L1: Inserts the next disk - So if you’re on disk 1 side A/B, it will insert disk 2 side A.
-R1: Switches between side A and B.

Note that L1/R1 will NOT do anything while the “Automatically insert disks” option is enabled (unless the auto insert code realizes it is unable to find the proper disk, which can happen for unlicensed games, in which case it will deactivate itself and L1/R1 will work as it usually does - this is the case for the Bodycon 1 game you mentioned.

There is no “Eject Disk” button - Mesen automatically ejects the disk and inserts the one you selected after a sufficiently long period of time to work with all known games (as far as I know) - so I don’t think there is any good reason to expose this functionality in the libretro port.

And while I’m at it, L2/R2 are insert coin 1/2 buttons for VS System games.

And, the ability to remap the buttons in general is on my list of things to do. I’ve said this to some other people but, I am not actually a retroarch user at all, so I didn’t notice this was actually a feature while comparing with other cores. I should be able to get it done relatively soon.

Hope that helps!

6 Likes

Thank you very much for the explanation, I will give it a go with the new understanding.

Would you be willing to implement OSD messages for when a next disk/side change occurs? It’s not a big deal if you’re not interested, but it is nice to have visual confirmation when a hardware setting change occurs. One of my biggest gripes with the Atari 2600 ‘Stella’ core is that it gives no OSD for when you switch the difficultly switches, and for that reason, I still use MAME (even though the core is very good otherwise).

Last feature I can think of - again, this is minor, but do you think you could make options for ‘Enable turbo P1 on/off’ and ‘Enable turbo p2 on/off’? I love turbo and use it all the time, but I have some snobby purist friends. :slight_smile:

1 Like

Also, do you have a patreon account or something? I’d like to buy you a beer, sir.

Edit: Just found the donate button on your homepage. :slight_smile:

OSD messages are a thing? That’s another thing I wish I had known ahead of time! I’ll look into that - the standalone version has OSD messages (though not for disk switches, I think). I might just add disk switches to the OSD of the standalone version and hook all of the standalone’s messages to show up in retroarch automatically.

I’m not sure what’s best w/ regards to enable/disable turbo - I’m trying to be careful not to make the options menu too large (there’s already a lot in there after a handful of days!). Or is there a way to have nested menus in the core’s options? That would be ideal really…

And thank you very much for the donation!

Likewise, thanks for a very nice emulator. I didn’t even know about these HD graphics packs, that is very cool stuff - it’d be nice if it catches on in a big way, like the msu-1 support for SNES did.

Not sure about the nested menus - that would be nice to have, and would certainly help to clean things up for more than a few cores.

But in regards to a long list of options, please don’t sweat that, at all. :slight_smile: The ‘options’ menu is usually for power users, anyways - the average user doesn’t do much tinkering. I’ve seen options for a few cores that are probably twice as long as that, and I didn’t find it overwhelming. Personally, I like being able to tweak things.

But, I also understand and respect that you don’t want to expose every single feature found in the standalone version.

A few more changes/fixes:

  • Added OSD messages for a number of things (game load, region change, fds disk insert, vs system coin insert, etc.)
  • Added a “Disabled” option inside the “Controller Turbo Speed” setting to disable turbo buttons completely
  • Added a “Custom” option in the “Palette” setting - selecting it will make the core attempt to read the system\MesenPalette.pal file and use that as the palette.
  • Changed the way the core handles its internal resolution, which will hopefully fix some performance/shader related bugs some people appear to be experiencing.

I just committed these, so it’ll be a few hours until a new build shows up with the changes.

8 Likes

You sexy hunk of meat you.

2 Likes

Wow, 5 days ago the world was unaware of what was going to happen and that Mesen would become a Libretro core and now when it is finally here it succeeds everything and is the new hot smoking thing.

Holy crap, the commits just flying out like bullets in a Gatling gun.

1 Like

hi, is this marvelous core will be ported on android (shield tv) ? I hope thanks

AFAIK nope, it’s not on the buildbot atm. Also checked my phone and tablet and I can’t get it on them, so we need to wait till it gets build for android officially

We tried getting it to compile for Android but it wouldn’t work - maybe we can get it working at some point in the future (would be nice since I imagine high-end phones can most likely handle it).

The core now allows you to remap the controls as well as select which controllers are plugged into the console. Port 1 to 4 are the usual 2 ports + 2 extra ports on a 4-player adapter. Port 5 is used by the expansion port, which is used by most of the famicom’s input devices. For each port, you can select “Auto” which will automatically select an input device according to the data in the game database, or force a specific input device. Most of the standalone’s devices are supported (power pad, family trainer, party tap, pachinko controller, exciting boxing doll, snes controller, snes mouse, etc.) but some aren’t (family basic keyboard, barcode readers, etc.). The “Ascii Turbo File” and “Battle Box” are external storage devices used by some games (e.g Armadillo supports the battle box), and not actual input devices.

Once an input device is selected (whether via “Auto” or a manual selection), button names matching the input device will be shown (after you close & reopen the control options) and you can map the keys. It’s not ideal (e.g trying to emulate a 12-button power pad on a gamepad isn’t great), but it works.

Also, I fixed a bug introduced in yesterday’s changes that caused issues when changing aspect ratio, overscan, and some other settings.

(Probably will be a couple of hours before this is available on the buildbot)

7 Likes

Hi, love the improvements, I’m still having one issue, and one new issue:

  1. Auto loading FDS games doesn’t seem to work properly. Tested with Akumajou Dracula - game asks to set Side A (doesn’t do it automatically, have to hit the button), then afterwards, to set Side B (have to this manually also). Not really an issue for me - I have no problem just using the buttons to do it, I just thought I’d bring it to your attention.

  2. The new issue I’m having isn’t so much your fault - I use a front end (RocketLauncher User Interface), and I use bezels for all of my retro systems. The problem is, there’'s some weirdness happening when a game is first loaded - the window seems to reload itself, and this causes issues with my frontend/bezels, due to the way the frontend tries to grab the window, and draw the bezel around it. With the window flashing twice like that, I think it messes things up. I hate to say that that’s a deal killer for me, because I love the core, but I love my bezels too. :slight_smile:

Here’s what ends up happening:

If you could take a look at this (#2 that is, #1 I’m not concerned about), I’ll buy you another beer. :slight_smile:

Edit: Also, #2 just started happening - the version of the core I was using prior didn’t have any issues with my frontend/bezels.

Loving the core but 2 minor issues I’m running into.

  1. Mouse pointer not disappearing. I’m not sure if some games require it but if they don’t it would be nice if it disappeared while playing.

  2. This might be on my end but I’m getting some popping noises during the Mega Man 2 opening and the boss intro screens. They are minor but happen occasionally even after messing with settings. I’m not getting them with Nestopia. Anyone else experiencing any audio issues?

Yes, a custom palette file.

Bisqwit: bisqwit.iki.fi/utils/nespalette.php.

Thanks!

@Typhon Both issues should be fixed on the next build (I just comitted the changes a few minutes ago). The resolution switch should no longer occur when launching a game, but it can still occur if you change the video filter while playing (specifically, if you select bisqwit’s 4x or 8x filter, it will need to reinitialize the video card with a large internal resolution which might cause the same issue you initially had)

I spent a few hours tweaking & retesting the FDS auto insert disk feature, and with the changes I did, I haven’t found any licensed game that doesn’t work correctly with it (not to say that none exist), and overclocking no longer has an impact on the feature, either.

@Fergdog I’m not sure if there’s anything I can do about the mouse? I haven’t been able to get retroarch to hide my mouse cursor at all, no matter which NES core I use. Might be a retroarch-related issue? Unsure.

The MM2 sound seems fine on my end - try running the core in fast forward mode and seeing how fast it can go, if it’s relatively low, that might be why you’re getting sound issues (I think there are a lot of retroarch settings that can affect this, but I don’t actually know what they are)

@lfan You can put a “MesenPalette.pal” file in RetroArch’s “system” folder and it should load that if you select “Custom” in the palette selection - that way you can use any palette you want.

2 Likes

Resolution issues are fixed, and the ‘Auto Insert Disk’ setting is functional.

Only thing I noticed is, the ‘Fast Forward While Loading’ option seems to get toggled on/off along with the ‘Auto Insert Disk’ setting, regardless of what you have the ‘Fast Forward’ option actually set to (tested with Akumajou Dracula).

Everything else is working great though - love the new OSD messages. :slight_smile:

Edit: This is barely an issue, but I just noticed a little bit ago that Players 3 and 4 are not available in the remap menu - but I tested ‘Super Spike V-Ball,’ and player 3 does work. Totally not complaining - multiplayer seems to work, and I like the default controls you’ve laid out (I’ve always had it exactly like that), just bringing it up in case you forgot.

Ok I don’t think I even changed anything but my mouse is properly disappearing in Mesen now.

As for sound, I get 350 fps while fast forwarding. I tested Mega Man 2 in Mesen standalone and it sounds similar. I think Nestopia just handles filtering of high pitched noises differently or something. I’ll mess around with more settings to see if anything changes it. It’s not really bad popping just different from what I’m used to.

Thank you for making a libretro version of your emulator, it looks really awesome ! I’m gonna test it and make it my new default NES emulator if I like it. :slight_smile:

Nestopia does a lot of stuff to the sound, it’s quite far from the original rendering.
Better compare Mesen to Fceumm while “Sound Quality” is on “low” (untouched).
Higher settings are tweaked at different levels like in Nestopia.
Thanks to Retrowertz for those options.

If you want to get obsessive at sound details and “clicks”, try to compare Gun.Smoke intro after a while. :cowboy_hat_face: