mrchrisster/MiSTer_SAM

Feature request: Nintendo M82 demo unit mode

Yamato-san opened this issue · 7 comments

Hi there and thank you very much for this awesome script!

I‘d like to make a suggestion: Wouldn‘t it be cool to let the SAM act like a Nintendo M82 demo unit? It‘s almost there, however there are missing key features I guess.

The M82 autoboots into the M82 splash screen, which is available as a .nes rom, so no problem here. The tricky part is that the splash screen plays for 20 seconds (without any controller input) and then jumps directly into the first of the 12 inserted nes games. If there happens to be no controller input for again 20 seconds it jumps back to the M82 splash screen. Then it jumps to the next game after 20 seconds and so on. Controller inputs set the M82 into play mode. Play time can be set to 30 seconds, 3 minutes, 6 minutes or 128 minutes.

I guess you could make good use of the game roulette mode and maybe a subfolder with your selection of nes games that SAM will use only. Hoewever, these games should cycle through one by one and not randomly. Of course games in that directory could be named „1 Super Mario Bros“, „2 The Legend of Zelda“ and so on, so it will have a certain order like in the original M82.

Additionally it would be necessary to make this interchanging splash screen - game 1 - splash screen - game 2 - splash screen and so on a configurable option.

Lastly, a „Jump to next game by pressing a button“ feature would make it perfect like on a real M82 (see also #225).

Thanks for reading :-)

Best regards!

Great idea! I implemented a first idea for M82 mode. It doesn't have controller input functionality yet. You can update SAM and enable from the menu or the ini.
Tip: Enable debug and check with ssh monitor for more info on the m82 mode

Edit: Added a Next button for SAM which by default is "select" on your gamepad. If it doesn't work, try Configure Gamepad in SAM's menu

Wow, that was fast! Thank you very much. I am so happy the M82 functionality already came to life. You are awesome!

It‘s cool that your M82 special mode loads the M82 bios automatically from the games directory. I also noticed that you already fixed that the splash screen should appear after each game and not only once.

Here are some observations and suggestions:

  • Your ini file has the M82timer set to 30. I‘ve set mine to 21 seconds after testing. That‘s as close as you can get to a real machine. Maybe make this the default with a short info?

  • For the real experience the ini file needs a play time limit too. It should start the moment you begin playing a game. An original M82 has a timer switch at the rear with four options: 30 seconds, 3 minutes, 6 minutes and 128 minutes. After time is up, the M82 resets to its attraction mode (splash screen is shown again and then the next game from the list).

  • The Next Game button (Select) should always jump directly to the next game from the list and not the „next“ splash screen. It‘s the same on an original M82.

  • If you press a button during the splash screen (except SELECT of course) the script seems to assume that you „play the game“ and M82timer is being interrupted. Is it possible to ignore other button commands (except SELECT of course) during splash screen so it plays not longer than M82timer value?

One strange thing I noticed is that the M82 mode starts correctly from the SAM menu, but if I power on the MiSTer and wait for SAM to start automatically it somehow skips the M82 splash screen and plays the first game from the games/NES directory and then one after the other in M82timer intervals, but without the splash screen. So the M82 game list and bios seems to be ignored in this case. This is reproducable. I don‘t know why this is happening.

By the way, had the M82 attraction mode running the whole time I wrote this. It‘s awesome! Brings back a lot of nostalgic feelings :-)

Again, thank you very much!

EDIT:
One more observation: Take Super Mario Bros. for example. Say you want to play in 2-player mode. So you press SELECT but problem is that already triggers the next game. So I wanted to map „Next Game“ button to A on my NES style joypad by using Gamepad Configuration in the SAM menu. But that mapping gets ignored somehow. It‘s still on Select afterwards. Am I doing something wrong?

This has been fun to get it working. I believe all features are implemented now.

  • Timer is set to 22 secs and can't be changed. I put it at 22 because over HDMI it is already on very briefly when it syncs picture.
  • the ini now has an option to change the gametimer
  • the next button is working during m82 bios and games but when on m82 bios you can't "play" it anymore
  • please follow controller config precisely (only have one controller connected during setup and reboot after) - it should work. I tested on 2 different MiSTers with two different gamepads and was able to remap both.
  • startup from cold boot for m82 mode is fixed

Wow, you pretty much nailed every point with the recent update! Thank you very much :)

Faulty controller mapping was my fault, sorry. Seems I forgot to reboot. I suggest to include this piece of info in the on screen text box which appears during the process. It‘s there when you set playcurrentgame to „no“ like recommended, but it does’t get mentioned when you leave it as it was.

Here are some more observations and suggestions:

  • 21 seconds really is closer to original hardware. Music plays significantly too long now. At least for me as a nerd ;) No sync issues here though. Sorry for being so puristic about this :)

  • I just noticed that the first M82 bios animation after launching the script always plays several seconds longer than any other afterwards. Is this expected / fixable?

  • While being on the last game from the list, the „Next Game“ button should jump back to game 1 and not the initial bios screen. It‘s the same with the original M82 :)

While re-reading my last comment regarding Super Mario Bros. and „Next Game“ button, I noticed that I made a wrong assumption, so please ignore that. Because the M82 had a separate button for selecting the next game it is good the way it is as the „Next Game“ button has to be functional all the time. I will just use a gamepad with more buttons instead of my NES style gamepad so I‘ll have a separate button for selecting games.

One thing though:

  • Is the Next Game button kind of picky? Because pressing it very quickly does‘t jump reliably to the next game for me. Pressing it just a tiny bit longer does so (intended?). Also it‘s not functional the moment a new game loads. It takes like 2 to 3 seconds or so (expected?). Sometimes I had to press twice. Don’t know what’s going on sorry :) Tested different controllers too.

Again, thank you so much!

EDIT:
Found a bug: Last game from the M82 list ignores play time limit. It jumps back to the M82 bios like no input was made.

I pushed a commit to fix the next button sometimes not responding. I'll check on the other issues when I got some time tonight

Update:

  • Changed skip to "next game" logic and should work better now
  • Can't confirm the bug where it ignores gametimer setting on last game. It might work better now with the new "next game" logic
  • Added please reboot message to game controller

Great update!

  • Initial bios screen is not longer than the following ones anymore :)

  • bios screen length seems to be shortend back to 21 seconds and is as close to original M82 as possible now (at least without fractional digits) :)

  • Last game now jumps back to game 1 and not to bios screen anymore :)

  • Game timer works on last game for me now :)

  • Next button is by far more reliable now :)

I‘d say M82 mode is pretty much perfect now. You are awesome! Thank you so much!

Great stuff! I was playing a lot of old favorite NES games while checking m82 mode. Thanks for the fun challenge to get this working. If you discover any other bugs, lmk. Otherwise please go ahead and close the feature request.