Commit Graph

2996 Commits

Author SHA1 Message Date
Tim Allen 3ca0504e67 Extend the Super Famicom LOROM-RAM#A memory map.
Although Nintendo made many different cartridge circuit boards with different
memory mappings, ROMs do not indicate which specific board they are intended
to work with. Super Famicom emulators traditionally group mutually-compatible
mappings together and use heuristics to guess which family of mappings the
game expects.

There's one family of mappings that maps ROM data to the top half ($8000-$FFFF)
of memory banks in the Super Famicom address space. For historical reasons,
this family is called "LoROM" and has three main variants:

1. ROM only, mapped to the top half of every possible bank.
   The boards database calls this "LOROM".
2. ROM mapped to the top half of every possible bank,
   RAM mapped to the bottom half of banks 70-7d,f0-ff.
   The boards database calls this "LOROM-RAM"
3. ROM mapped to the top half of low-numbered banks,
   RAM mapped to both halves of banks 70-7d,f0-ff.
   The boards database calls this "LOROM-RAM#A"

The largest official game that used variant 3 was 1MiB, so a common heuristic
is "if the ROM is 2MiB or less, use variant 3, otherwise use variant 2".
2MiB is used as the threshold instead of 1MiB, perhaps so somebody can expand a
commercial ROM that uses variant 3 without having to rework it to suit a
different mapping.

Since v107 or so, higan (and by extension, bsnes) has implemented variant 3 by
mapping ROM to banks 00-3f,80-bf, which exactly fits a 2MiB ROM. However,
other emulators like Mesen, snes9x and higan v106 implement it by mapping ROM
to banks 00-6f,80-ef, all the space that is left after the RAM is mapped.

This doesn't affect any verified games in the `Super Famicom.bml` database,
since those have specific, accurate memory maps. It also won't affect
well-written games that only read from memory addresses they have populated.
However, homebrew games and ROM hacks that have never existed on a real circuit
board depend on these heuristics across all devices that read Super Famicom
ROMs, including software emulators, flash-carts, and FPGA implementations, so
bsnes should match what other emulators do.

Fixes #278.
2023-05-23 23:26:49 +10:00
orbea 5cefce5c08 nall: Fix the build for gcc13 2023-03-08 17:35:32 +11:00
Tim Allen a22c5c3eeb Cirrus CI: Build macOS binaries on AArch64. 2023-03-08 17:34:58 +11:00
Rupert Carmichael c0c60c83a8 Fix the Justifier 2022-12-11 19:18:39 +11:00
Alcaro 43e42b2dca Simplify sa1 division
Removes the branch and the double modulo

I have verified that it gives the same results for all 2^32 pairs of inputs
2022-11-25 17:26:53 +11:00
Kawa 717606dda9
Update README.md 2022-11-03 13:15:52 +01:00
Benjamin FRANCOIS 6fc6bf14a3 Allow Haiku build of libretro target 2021-10-31 20:39:10 +11:00
Sintendo 74f6ffe89b ruby/input: Add macOS mouse support
While keyboard and joypad input had already been present for some time,
mouse input for macOS remained unimplemented in ruby.

Until now, that is.
2021-10-31 19:36:15 +11:00
Tim Allen 6df1807068 Update SameBoy to v0.14.7. 2021-10-31 09:37:51 +11:00
Lior Halphon 43831d0bc1 Update version to 0.14.7 2021-10-30 16:10:26 +03:00
Lior Halphon 0f6a0186cd Cherry picking conflicts 2021-10-30 16:09:13 +03:00
Lior Halphon deb037d87d Detect missing ANSI support on Windows 2021-10-30 16:08:35 +03:00
Lior Halphon 4498d16bed Improved sanitation for save states for better security and stability 2021-10-30 16:08:35 +03:00
Lior Halphon 8d319c65c2 Use a monospaced font in the palette viewer 2021-10-30 16:08:35 +03:00
Snowy 0d7cc66ffd Change y to a signed value 2021-10-30 16:08:35 +03:00
Lior Halphon 0dcd233cbb Writes to SVBK should work before the boot ROM is disabled 2021-10-30 16:08:35 +03:00
Lior Halphon 5808d4485f Drop BOOLs 2021-10-23 13:36:58 +03:00
Lior Halphon fc10a90dec Screenshots in the Cocoa frontend 2021-10-23 13:26:44 +03:00
Lior Halphon 3f954f1d0c Update version 2021-10-20 23:37:16 +03:00
Lior Halphon 0e6b9da42d Merge branch 'master' of https://github.com/LIJI32/SameBoy 2021-10-20 23:36:48 +03:00
Lior Halphon 1376c386a2 Slightly altered merge of #408 2021-10-20 21:49:02 +03:00
Lior Halphon 2f2e469790
Merge pull request #407 from SnowyMouse/master
Handle missing background.bmp
2021-10-20 20:34:13 +03:00
Lior Halphon e04dcd90d6 Fix APU command 2021-10-19 01:56:10 +03:00
Lior Halphon 94776fcf8c Better (But imperfect) emulation of the wave RAM address bug glitch 2021-10-19 01:53:24 +03:00
Lior Halphon de16ab5d08 Why was this under APU 2021-10-17 20:05:49 +03:00
Lior Halphon 886363b398 Now this glitch makes more sense 2021-10-17 12:52:08 +03:00
Lior Halphon 7ef198ec50 More accurate channel 3 restarts 2021-10-17 02:06:33 +03:00
Lior Halphon f1b8164613 Force the user selected model on reset (which can change by a save state) 2021-10-17 02:06:13 +03:00
Lior Halphon 40fc477b56 Fix an oopsie 2021-10-10 20:05:57 +03:00
Lior Halphon 4ce643d5eb Fix timer bug; fixes #409 2021-10-10 16:53:07 +03:00
Lior Halphon 01f80a3f3e Adjust border fade delay to match SGB2 2021-10-10 14:24:14 +03:00
Lior Halphon 8f9365251d Timing adjustments 2021-10-10 13:30:30 +03:00
Lior Halphon b580e63c37 Fix 7-part SGB commands 2021-10-10 02:55:12 +03:00
Lior Halphon d263a8f6f8 Fix sanity 2021-10-09 23:12:49 +03:00
Lior Halphon 46e1b79b63 Madden 96 needs even more time 2021-10-09 23:07:15 +03:00
Lior Halphon 6b947c46bc Correct blank image detection on SGB 2021-10-09 22:41:43 +03:00
Lior Halphon 893d7d162a Don't try to render tiles 100-3FF 2021-10-09 22:34:43 +03:00
Lior Halphon 85da5b64d3 Some games like racing the SGB 2021-10-09 22:02:40 +03:00
Lior Halphon a7c8b702da Some games like to race with the SGB border fade 2021-10-09 21:08:17 +03:00
Lior Halphon f1761340fc Fix ATTR_SET command 2021-10-09 18:45:08 +03:00
Lior Halphon 3b1094058b Add SGB and CGB flags to the tester 2021-10-09 15:57:15 +03:00
Lior Halphon 004b004f98 Fix inverted key buttons in the SDL menu, fixes #401 2021-10-09 15:27:18 +03:00
Lior Halphon 191f7cee02 Improved emulation of SGB multiplayer, fixes #405 2021-10-09 14:52:28 +03:00
Lior Halphon 164a870189 Cleanup uses of gb->registers 2021-10-09 14:09:51 +03:00
Lior Halphon 24af1c5a31 Newly discovered OAM corruption trigger 2021-10-09 14:05:29 +03:00
Lior Halphon c05c3c2abd Improved accuracy of mid-line SCX writes 2021-10-08 19:36:05 +03:00
Lior Halphon d4999fbbdb Give APU tests more time 2021-10-07 18:30:09 +03:00
Lior Halphon ef053ff113 APU regression fix 2021-10-07 18:25:54 +03:00
Lior Halphon d1caeafe5e Better handling of tiny ROMs 2021-10-05 19:53:43 +03:00
Lior Halphon 9a957674d9 Fix broken action 2021-10-05 19:53:19 +03:00