Code Monkey home page Code Monkey logo

bsnes-mt's Introduction

bsnes-mt by Marat Tanalin

bsnes version with image-quality, user-experience and other improvements:

  • Pixel-perfect integer-ratio scaling.
  • Precise 4:3 in the “Center” and “Scale” modes.
  • Compressed PNG screenshots.
  • Multilanguage user interface.
  • Built-in hotkeys for common actions, and more.

See the project webpage for details.

Contributing translations

Feel free to contribute user-interface translations. That’s easy even if you are not a programmer. Translations are regular text files with simple key="value" syntax.

The canonical translation is English, other translations should be based on it. Partial translations are possible: if a string is not translated, just the original English-language string is automatically used instead.

The app comes with multiple translations. The default English translation is built into the executable, other translations are loaded dynamically from text files when starting the application. The English and Russian translations are complete and don’t need contributions.

Each translation is in a text file in the bsnes-mt/translations folder. The files use the UTF-8 character encoding. The files have lowercase names and are named according to two-letter language codes defined in the ISO 639-1 standard with optional subtags according to BCP 47, for example:

  • en.txt for English;
  • ru.txt for Russian;
  • pt-br.txt for Brazilian Portuguese.

Start with translating menus (Menu.*), then settings (Settings.*) and common strings (Common.*) — they form the main part of the user interface.

Don’t bother translating Browser.* strings — they are related to non-native file dialogs that are disabled by default and going to be removed from both bsnes and bsnes-mt.

Please ignore capitalization (uppercased first letter of each word) and don’t try to maintain it when translating. For example, translate “Open Recent Game” as if it was “Open recent game” with lowercase “r” and “g”.

The “|” character in strings is a placeholder meant to be replaced with a number or word(s) — don’t capitalize words after that character.

How to compile/build

Install MinGW, then execute the following command inside the folder with bsnes-mt source code:

mingw32-make -C bsnes

Like original bsnes, bsnes-mt cannot be built with Visual Studio for now.

bsnes-mt is Windows-only.

bsnes-mt's People

Contributors

erendel avatar karlkox-fr avatar marat-tanalin avatar theherogac avatar wtuemura avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

bsnes-mt's Issues

Add “Toggle Fast Forward” hotkey

A suggestion by Vecna:

Can you add this shortcut: "Toggle Fast Forward"? I ask that 'cause in some RPG is awkward to keep pressed the Fast Forward key when you grind monsters... I prefer that the key is always pressed instead to do that manually.

Suggestion: support MacOS and Linux

Just a suggestion: could you change this to support MacOS and Linux platforms?

Vanilla bsnes compiles and runs on MacOS and Linux but your modifications appear to be Windows specific. I wanted to merge this integer scaling idea into my own fork of bsnes but all the Windows-specific code put a damper on that: it wouldn't compile on my main MacOS development machine. For my bsnes fork I maintain the cross-platform support of vanilla bsnes and offer continuous builds for all supported platforms.

If all of that is too much to ask, then may I ask if it is okay if I just implement your main integer scaling algorithm in my own bsnes fork?

Option for saving window position and size

When I used the original BSNES, I always had to resize the window to be more rectangular because I didn't really like the default square sizes it had built-in. Every time I close BSNES and re-open, it's back to being a square window.

SNES9x had this "Save window position/size" feature added in as a "permanent feature" from one of it's updates and I really loved it!

Individual save states

I like documenting a perfect playthrough with a set of savestates, ordered by progression through a game. There are many times where I will miss a savestate and have to go back to make it. Since bsnes makes a single savestate file that contains 25 saves, I end up needing to shift older saves forward so that I can insert a previously missed savestate into the proper position. I also have to be really careful not to overwrite good saves in the process.

In most other emulators each save is made separately. bsnes plus does this with savestates labeled "filename-1.bst", "filename-2.bst", etc.). In such cases it's easy to go back, capture a missed savestate using any save slot, and then renumber savestates to get the ordering correct.

I am hoping that bsnes-mt can be given a toggle button to go between savestates being placed in one .bsz file (25 at a time) and each savestate being made individually (so that I can make sets of 25 separate files).

What would really be awesome is if such individual savestates could be renamed and still be usable. With Final Fantasy, Mystic Quest Legend as an example, saves could normally be "Mystic Quest Legend.sv1", "Mystic Quest Legend.sv2", etc. but a player could choose to make Mystic Quest saves in particular use FFMQL (or any other 1-9 letters) so that savestates could be labeled something like "Tower of Babel, Southeastern Entrance.FFMQL.sv1", "Aquaria.FFMQL.sv2", etc. This would make it much easier to keep precise track of hundreds of savestates. Don't know if that's possible, especially to assign unique letters to every game, but it would be quite lovely.

In fact, I wish savestates for all emulators worked that way.

Emulator inaccuracy in US version of Final Fantasy, Mystic Quest

I just shifted from playing the European "Mystic Quest Legend" to it's US counterpart: "Final Fantasy, Mystic Quest". In the process, I noticed that when I go to the northwestern most battlefield in the water area and perform the Gather battlefield glitch, which causes it to have 255 rounds left out of 10, the textbox that says "Battlefield Round 255 of 10" doesn't appear. It does appear when playing "Mystic Quest Legend".

The only emulator I found that has the textbox appear correctly for the US version is Snes9x v1.43, Rerecording v18.1 from TASVideos.org. The Snes9x v1.51, Bsnes HD, Bsnes+, SnesGT, Ares, and Higan emulators didn't work correctly, with the textbox invisible in each one. Snes9x v1.43 does show that it should be there, so it doesn't appear to be a problem specific to the US version of the game.

Suggestion: Update Drivers

Is it possible that drivers could be updated to DirectX 11 / Vulkan, update XAudio and full Xinput support? This in order to improve performance and compatibility with modern platforms, hopefully it could be possible ...

CRT Display Aspect Ratio for SNES is NOT 4:3

In reference to this article:

https://tanalin.com/en/projects/bsnes-mt/

The SNES dot clock for it's 256x240p signal sends a display aspect ratio of 128:105 to the CRT (and the CRT when properly calibrated does NOT stretch signal sources to 4:3).

To properly calibrate for CRT aspect correction on the horizontal axis in SNES emulation, you need multiply 256 by 8/7 (which is the pixel aspect ratio). Thus, 8/7 = 1.142857 (repeating) and then you multiply 256 with that, which comes out to 292.571428 (repeating). For emulation, it's even more accurate to scale first before applying the 8/7 PAR correction. Example at 4x:

256 * 4 = 1024, and then applying DAR for CRTs: 1024 * 8/7 = 1170 (rounded to nearest even pixel count).

Does not start on some systems

Two users (RichterEX2 via Reddit and Philip via email) reported that bsnes-mt does not start on their systems. This might be related to different default settings, but using settings.bml (renamed to bsnes-mt-settings.bml used by bsnes-mt) from original bsnes v115 seems not to help. This also might be related to certain antivirus software.

Details from RichterEX2:

  • Tested bsnes-mt versions: 1.0, 1.1.1.
  • Restarting computer didn’t help.
  • bsnes v115 does work.
  • Windows 10 x64
  • UI Language: English

Details from Philip:

  • Tested bsnes-mt version: 1.3.
  • bsnes v115 does work.
  • In bsnes v115, all drivers work, regardless of the “Synchronize” video setting.
  • Antivirus: none (probably Windows Defender then).
  • Resetting drivers with --resetdrivers command-line option does not help.
  • System specs:
    • Windows 10
    • Intel Pentium 4415U 2.30GHz
    • 8GB RAM
    • Intel HD Graphics 610
    • Display: 1366×768
    • OS-level zoom: 100%

Information that those who would like to help could provide

  • Does original bsnes v115 work on the same system?
  • System specs (at least GPU).
  • Exact version of Windows 10: e.g. version 1909, build 18363.1082.
  • Graphics-driver version.
  • Desktop resolution and whether it’s equal to display’s native resolution.
  • OS-level zoom (e.g. 100, 150%, or 200%).
  • Name of the antivirus software used.

How to get Windows 10 version information:

  1. Press Win+R keyboard shortcut.
  2. Type winver command.
  3. Press Enter key or OK button.

Rebasing with the original bsnes source

According to the author's website, they occasionally merge updates from the community bsnes repo, which has not seen activity since last October. While I am not certain what Mr. Tanalin defines as important changes, I believe it would serve this project well to merge over technical improvements made to the community repo.

Command-line option for GUI-less full-screen mode

Hi,

Just a small enhancement/feature request...
Can you please add a new setting or option wherein users can specify if bsnes-mt should load a game without any GUI?
Currently, If I load a game via command line:
bsnes-mt.exe --fullscreen SomeSNESGame.sfc, the main GUI of bsnes-mt will appear briefly then a second window will take up the whole screen and the game will be loaded.
Perhaps a new command can be added like: bsnes-mt.exe --fullscreen --nogui SomeSNESGame.sfc
The goal is to start the game in full-screen via command line or batch file without having to show the main interface of bsnes-mt.
This would be really useful for people who use emulator frontends. I wish I can do this myself but unfortunately I don't have a PC I could use for coding and building bsnes.

Would this be possible? Thank you!

Lua script support

enhancement/feature request: it would be really nice to have lua scripting support like other emulators do, if possible.

Suggestion: Reincorporate 'Find Cheats' option

Regards mt. The original bsnes has the option to add already preset cheats in some games.

Desktop 5-01-2023 11-55-38-800

However in this version this feature seems to be missing, so I think it would be a good idea to add it in the future.
Desktop 5-01-2023 13-00-28-402

Fullscreen Screen Recording Issue

I'm using Xbox Game Bar to record my game, but somehow when I do Fullscreen all it records is a black blank screen with the gray menu bar on top. Why is this? Can you fix it for me?
Proof
Bad Recording

Suggestion: Optionally cut off 2x4 lines for better aspect ratio and more screen height usage

You mention that for Full HD screen height usage is only 83%, with an AR error of 7%.
An optional solution that would work for most games is as follows:
Cut off 8 lines (e.g. 4 at the top and 4 at the bottom). Then you can scale one step larger, using 100% of the height and reducing the error to less than 2.8 percent.
The same can be done at 4K, with the same result.
I hope I explained it well enough. If not just let me know.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.