bsnes is a Super Nintendo (SNES) emulator focused on performance, features, and ease of use.
Go to file
Tim Allen 65a3e6c676 Update to v106r49 release.
byuu says:

This is a fairly radical WIP with extreme changes to lots of very
important parts.

The result is a ~7% emulation speedup (with bsnes, unsure how much it
helps higan), but it's quite possible there are regressions. As such, I
would really appreciate testing as many games as possible ... especially
the old finnicky games that had issues with DMA and/or interrupts.

One thing to note is that I removed an edge case test that suppresses
IRQs from firing on the very last dot of every field, which is a
behavior I've verified on real hardware in the past. I feel that the
main interrupt polling function (the hottest portion of the entire
emulator) is not the appropriate place for it, and I should instead
factor it into assignment of NMITIMEN/VTIME/HTIME using the new
io.irqEnable (==virqEnable||hirqEnable) flag. But since I haven't done
that yet ... there's an old IRQ test ROM of mine that'll fail for this
WIP. No commercial games will ever rely on this, so it's fine for
testing.

Changelog:

  - sfc/cpu.smp: inlined the global status functions
  - sfc/cpu: added readRAM, writeRAM to use a function pointer instead
    of a lambda for WRAM access
  - sfc/cpu,smp,ppu/counter: updated reset functionality to new style
    using class inline initializers
  - sfc/cpu: fixed power(false) to invoke the reset vector properly
  - sfc/cpu: completely rewrote DMA handling to have per-channel
    functions
  - sfc/cpu: removed unused joylatch(), io.joypadStrobeLatch
  - sfc/cpu: cleaned up io.cpp handlers
  - sfc/cpu: simplified interrupt polling code using
    nall::boolean::flip(),raise(),lower() functions
  - sfc/ppu/counter: cleaned up the class significantly and also
    optimized things for efficiency
  - sfc/ppu/counter: emulated PAL 1368-clock long scanline when
    interlace=1, field=1, vcounter=311
  - sfc/smp: factored out the I/O and port handlers to io.cpp
2018-07-19 19:01:44 +10:00
docs Add another task to the release procedure. 2018-06-03 14:55:45 +10:00
genius Update to v106r48 release. 2018-07-16 16:16:26 +10:00
higan Update to v106r49 release. 2018-07-19 19:01:44 +10:00
hiro Update to v106r48 release. 2018-07-16 16:16:26 +10:00
icarus Update to v106r48 release. 2018-07-16 16:16:26 +10:00
libco Update to v105r1 release. 2017-11-07 09:05:54 +11:00
nall Update to v106r49 release. 2018-07-19 19:01:44 +10:00
ruby Update to v106r48 release. 2018-07-16 16:16:26 +10:00
shaders Install shaders somewhere that higan will find them. 2017-08-23 20:46:24 +10:00
.gitignore Convert README docs to MkDocs format. 2017-08-12 20:58:01 +10:00
.gitlab-ci.yml accuracy/fast is now a runtime toggle, not compile-time. 2018-06-11 14:54:49 +10:00
CONTRIBUTING.md Spell-check the documentation. 2017-08-31 14:48:52 +10:00
GPLv3.txt Update version and license 2017-10-24 23:37:22 -04:00
LICENSE.txt Add icarus to LICENSE.txt 2017-10-25 18:22:10 -04:00
README.md Update the link to the nightly builds. 2018-05-19 12:54:41 +10:00
README.txt Fix mojibake in README.txt 2017-10-27 14:45:52 +11:00
mkdocs.yml Add credits from Talarubi's README.TXT to the docs. 2017-11-12 17:10:37 +11:00

README.md

The unofficial higan repository

higan emulates a number of classic video-game consoles of the 1980s and 1990s, allowing you to play classic games on a modern general-purpose computer.

This repository includes the source-code for stable and WIP releases of higan, starting during the development of v068. It also includes community-maintained documentation.

Basically, apart from .gitignore files, anything in the higan, hiro, icarus, libco, nall, ruby, or shaders directories should be exactly as it appeared in official releases. Everything else has been added for various reasons.

Official higan resources

Unofficial higan resources