bsnes-emu / bsnes

bsnes is a Super Nintendo (SNES) emulator focused on performance, features, and ease of use.
Other
1.68k stars 157 forks source link

Verify bsnes supports loading external manifests instead of heuristic manifests. #51

Closed puigru closed 3 years ago

puigru commented 4 years ago

The December 1994 build of Star Fox 2 (also known as the Winter CES build) black screens on the latest version of bsnes. Music for the intro will play without displaying any graphics until it eventually gets stuck playing the same sequence of notes over and over.

sha1: 78bd997be4cf54b952dec88957d59e8ec30c7723 (SF.ROM)

The header is misplaced, bytes 7FB0-7FBF need to be copied over to 7FC0-7FDF. Tested working on Snes9x.

Screwtapello commented 3 years ago

Hm. No-Intro lists four betas for Star Fox 2, from 1994-04 to 1994-05 and 1995-06. None of those seem likely to be the build used at Winter CES in January '95.

The SHA1 you listed does not appear in the current No-Intro set, even as a bad dump for one of the other betas, and Google has never heard of it.

puigru commented 3 years ago

@Screwtapello Doesn't look like it has been datted into No-Intro yet. It was found in the July 24th leak. It does however have a TCRF page. The hash matches the listing here.

Screwtapello commented 3 years ago

Ah, right, thanks, that explains things.

It's OK and expected for betas, protos and unreleased games to not work correctly in bsnes unless the internal header is hacked to trick the emulator into emulating a compatible memory-map, or unless a manifest is provided. I don't count this as a bug in bsnes.

However, while I trust external manifests work properly in higan, I'm not 100% certain they work correctly in bsnes. I'm going to leave this issue open to remind me to verify that bsnes can load external manifests, and to document exactly how that works.

Screwtapello commented 3 years ago

I looked into it, and yes, bsnes supports loading external manifests.

  1. If a game appears in bsnes' game database, bsnes will always use the manifest from the database and ignore one on disk
  2. For higan-style game folders, the manifest should be named manifest.bml and be stored beside the program.rom file
  3. For individual ROM files, the manifest should have the same base name as the ROM, but with the .bml extension
    • for example, a ROM named myhomebrew.sfc will use a manifest named myhomebrew.bml beside it.

I also wrote up some documentation about creating a custom manifest, in #93. For this particular case, it would probably work to load up any other Star Fox beta and extract the manifest from the Manifest Viewer in the Tools menu, then save it to a manifest file as described above.