Mesen-S - SNES Emulator

Discussion of hardware and software development for Super NES and Super Famicom.

Moderator: Moderators

Forum rules
  • For making cartridges of your Super NES games, see Reproduction.
User avatar
FitzRoy
Posts: 142
Joined: Wed Oct 22, 2008 9:27 pm
Contact:

Re: Mesen-S - SNES Emulator

Post by FitzRoy » Mon Jun 15, 2020 1:16 pm

What hangs Circuit USA? That game worked when I tried it, even after the Touge fix went in.

I did some prelim testing of GB, most of the games broken in higan work correctly. Let me know when you want me to library test that one.

Sour
Posts: 815
Joined: Sun Feb 07, 2016 6:16 pm

Re: Mesen-S - SNES Emulator

Post by Sour » Mon Jun 15, 2020 5:57 pm

Ah, damn, my bad - I got the titles mixed up and was talking about Battle Grand Prix, not Circuit USA.

As far as GB/GBC goes, I know of these issues atm:
GB: Pinball Deluxe - freezes
GB: Urusei Yatsura - flashing in maze
GB: Renju Club - freezes
GBC: Lego racer - freezes
GBC: 3d pocket pool - graphic issues
GBC: Perfect dark - Missing background music
GBC: Oddworld Adventures II - missing speech
GBC: Ready 2 Rumble Boxing - static during speech
GBC: Cannon Fodder - buzzing sound

I've gone through a couple of lists of "hard to emulate games" (e.g: https://www.reddit.com/r/EmuDev/comment ... o_emulate/) and most of the games mentioned in this issue: https://github.com/TASVideos/BizHawk/issues/1227, but beyond that, I really haven't tested many games.

It's not stable enough to properly test yet, though. Almost done implementing super gameboy, and I'll probably get back to trying to figure out the remaining issues after that (and trying to fix some of the test roms that still fail)

User avatar
kikutano
Posts: 115
Joined: Sat May 26, 2018 6:14 am
Location: Italy

Re: Mesen-S - SNES Emulator

Post by kikutano » Tue Jun 16, 2020 1:52 am

There is a way to pause the emulator and go foward frame by frame? This feature could be very useful when you develop :) .

Sour
Posts: 815
Joined: Sun Feb 07, 2016 6:16 pm

Re: Mesen-S - SNES Emulator

Post by Sour » Tue Jun 16, 2020 9:33 pm

kikutano wrote:
Tue Jun 16, 2020 1:52 am
There is a way to pause the emulator and go foward frame by frame? This feature could be very useful when you develop :) .
You can do this either by binding a key to the "Run single frame" shortcut (in Options->Preferences->Shortcuts), or via the debugger window by using the "Run one frame" option.
"Run single frame" will pause in vblank, on scanline ~240, "Run one frame" will pause 1 full frame later, on the same scanline/dot.

User avatar
FitzRoy
Posts: 142
Joined: Wed Oct 22, 2008 9:27 pm
Contact:

Re: Mesen-S - SNES Emulator

Post by FitzRoy » Sat Jun 27, 2020 2:12 pm

If I load a gameboy game and resnap the window to 3x, then close and restart, gameboy games will start rendering at something like 2.5x. I think it would be good and simple to just treat window sizes as multiples of 256x240 regardless of system. I'd rather GB games have black bars than my frame rubber banding back and forth conditionally in an attempt to eliminate black space on low res handhelds.

Also, a recent commit caused "power off" on gameboy games to retain the last frame instead of going black as expected.

Sour
Posts: 815
Joined: Sun Feb 07, 2016 6:16 pm

Re: Mesen-S - SNES Emulator

Post by Sour » Tue Jun 30, 2020 1:55 pm

The behavior when switching between SNES/GB and closing/reopening the emulator is still half broken. Getting this to play nicely with everything else isn't super simple partially due to the way all of this is implemented in the code. It's part of the list of things I want to fix before the next proper release.
FitzRoy wrote:
Sat Jun 27, 2020 2:12 pm
Also, a recent commit caused "power off" on gameboy games to retain the last frame instead of going black as expected.
Thanks! This was caused by the LCD blending option I added, which was causing it to blend the last GB frame into the black background - should be fixed now.

bklD
Posts: 14
Joined: Fri Sep 01, 2017 8:56 am

Re: Mesen-S - SNES Emulator

Post by bklD » Mon Jul 13, 2020 4:27 am

FitzRoy wrote:
Wed Jun 03, 2020 1:22 pm
3/4ths of the way done now. I added:

Code: Select all

Mega Man X2 (EUR)....................................................... minor CX4 timing issues cause attract mode to noticeably desync
Mega Man X2 (USA)....................................................... minor CX4 timing issues cause attract mode to noticeably desync
Pachi-Slot Monogatari - PAL Kougyou Special (JPN)....................... crashes emulator.
Rockman X2 (USA)........................................................ minor CX4 timing issues cause attract mode to noticeably desync
Virtual Bart (EUR)...................................................... hangs when bart drops onto Acclaim logo. RAM power on state values change behavior, but all options hang at some point.<br>
There was a thread 4 years ago where ikari_01 figured out the CX4 timings, which were eventually applied to bsnes
http://forums.nesdev.com/viewtopic.php?f=12&t=14647

The Pachi-Slot game has a thread here about how the board is weird and the game doesn't appear to use the SA1 in an expected way. The game works in bsnes115, but fails in higan/byuu
http://forums.nesdev.com/viewtopic.php?f=12&t=17610

I don't have any info on the PAL version of Virtual Bart, and don't remember that game ever hanging in bsnes. Changing the RAM option does affect when the game hangs, but it seems like every option hangs at some point. Also, Bart is supposed to say "ay caramba" when he drops onto the logo, but audio fails to play until the title screen with 0s or 1s. Random just hangs attempting to play that sound.
@Sour
i'm not sure that this is helpful, but it never hangs when you reset the game.

User avatar
LucianoTheWindowsFan
Posts: 35
Joined: Mon Jun 22, 2020 9:39 am

Re: Mesen-S - SNES Emulator

Post by LucianoTheWindowsFan » Sun Jul 26, 2020 11:39 am

Would be good with HD packs. 8-)
The SNES is my favorite console, not only because it is an upgrade to the NES, but because it had some quality games as well (e.g. EarthBound and Kirby's Dream Land 3).

Pennywise
Posts: 68
Joined: Tue Jul 14, 2009 11:04 am

Re: Mesen-S - SNES Emulator

Post by Pennywise » Fri Jul 31, 2020 7:30 am

Is this emulator also a standalone GB emulator? I've tried loading GB games, but they aren't recognized and I can't seem to find anything in the documentation that sheds light on the subject.

User avatar
FitzRoy
Posts: 142
Joined: Wed Oct 22, 2008 9:27 pm
Contact:

Re: Mesen-S - SNES Emulator

Post by FitzRoy » Sat Aug 01, 2020 8:00 am

Things going ok with you, Sour? Almost a month without a git commit is a long time for you.

Myself086
Posts: 37
Joined: Sat Nov 10, 2018 2:49 pm

Re: Mesen-S - SNES Emulator

Post by Myself086 » Mon Aug 03, 2020 6:37 pm

I released a NES emulator for SNES: viewtopic.php?f=3&t=20531

It works on a real SNES but I got reports that it doesn't work on Mesen-S no matter what game is loaded. I haven't tried Mesen-S myself.

It may be due to some unusual code not supported. Here are some examples:
- At start up, I use the stack pointer and PEA to set my clear-memory DMAs.
- Some leftover WDM for debugging, they aren't removed for the released version as they don't cause any significant time loss.
- I use some of the unused DMA bytes for highly used variables, including $43xB.
- IRQ is set where NMI is supposed to be so I can use SEI for locking thread faster.
- 16-bit STZ to $2180. I use this for queuing VRAM updates. During vblank, I write a 0 at the end before resetting the address (page aligned).
I can't think of anything else at the moment.

Let me know if you need more information.

EDIT: $43xB is open bus on Mesen-S but should be fully read/write-able.
Last edited by Myself086 on Thu Aug 06, 2020 3:41 am, edited 1 time in total.

bklD
Posts: 14
Joined: Fri Sep 01, 2017 8:56 am

Re: Mesen-S - SNES Emulator

Post by bklD » Wed Aug 05, 2020 5:11 am

Pennywise wrote:
Fri Jul 31, 2020 7:30 am
Is this emulator also a standalone GB emulator? I've tried loading GB games, but they aren't recognized and I can't seem to find anything in the documentation that sheds light on the subject.
You have to use the development build: https://ci.appveyor.com/project/Sour/me ... /artifacts

User avatar
NovaSquirrel
Posts: 415
Joined: Fri Feb 27, 2009 2:35 pm
Location: Fort Wayne, Indiana
Contact:

Re: Mesen-S - SNES Emulator

Post by NovaSquirrel » Wed Aug 05, 2020 1:38 pm

FitzRoy wrote:
Sat Aug 01, 2020 8:00 am
Things going ok with you, Sour? Almost a month without a git commit is a long time for you.
As far as I can tell he stopped because SameBoy's author started accusing him of plagiarism, and Sour didn't want to deal with that sort of thing. The Mesen Patreon is also paused.

User avatar
FitzRoy
Posts: 142
Joined: Wed Oct 22, 2008 9:27 pm
Contact:

Re: Mesen-S - SNES Emulator

Post by FitzRoy » Wed Aug 05, 2020 10:25 pm

Well someone should let him know that 0.001% of games being emulated right now are Gameboy games, and most of them are on phones/handhelds. There's no patreon pie to fight over for a system that primitive. It probably raised Sour's total a whole dollar and that's from someone who wanted a debugger.

p5839
Posts: 2
Joined: Thu Aug 06, 2020 1:29 pm

Re: Mesen-S - SNES Emulator

Post by p5839 » Thu Aug 06, 2020 1:42 pm

NovaSquirrel wrote:
Wed Aug 05, 2020 1:38 pm
As far as I can tell he stopped because SameBoy's author started accusing him of plagiarism, and Sour didn't want to deal with that sort of thing. The Mesen Patreon is also paused.
I respect Sour and his emulation work. He makes this emulation research accessible in the form of easy to use software with powerful debuggers. He is to be commended for his effort.

But what LIJI said was true. Sour claimed he "reverse engineered the timings from (SameBoy)", but looking at the code in question it was a deliberate copy, with slight formatting changes and variable renaming. Without accreditation, this is plagiarism. The smoking gun was a case statement in Mesen-S that only existed for backward-compatibility with older SameBoy save states, which had no other reason to exist at all. But there were several more examples. Furthermore, his SNES code is in many cases rewritten bsnes code. And while there's too many NES emulators to be worth narrowing it down, I suspect the same is true for his NES code.

Sour using open-source emulation code wasn't a problem, in fact it's the ideal case. Sour himself has said he doesn't do hardware testing, so without this code, the Mesen emulators wouldn't exist, and that would be a detriment to us all.

But LIJI's software license was MIT, it could not be more permissive. All Sour had to do was put a single line in his license to give credit to LIJI. That's it. That he chose to quit emulation instead is on Sour, not LIJI. Don't put the blame on LIJI for being the person to call out this behavior. Sour can still make this right with a simple apology and a tiny license update, if he so chooses.

Sour's good deeds do not give him a free pass to take credit for someone else's work.

Post Reply