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

This WIP is just work on nall/primitives ...

Basically, I'm coming to the conclusion that it's just not practical to
try and make Natural/Integer implicitly castable to primitive signed and
unsigned integers. C++ just has too many edge cases there.

I also want to get away from the problem of C++ deciding that all math
operations return 32-bit values, unless one of the parameters is 64-bit,
in which case you get a 64-bit value. You know, so things like
array[-1] won't end up accessing the 4 billionth element of the array.
It's nice to be fancy and minimally size operations (eg 32-bit+32-bit =
33-bit), but it's just too unintuitive. I think all
Natural<X>+Natural<Y> expessions should result in a Natural<64> (eg
natural) type.

nall/primitives/operators.hpp has been removed, and new
Natural<>Natural / Integer<>Integer casts exist. My feeling is that
signed and unsigned types should not be implicitly convertible where
data loss can occur. In the future, I think an integer8*natural8 is
fine to return an integer64, and the bitwise operators are probably all
fine between the two types. I could probably add
(Integer,Natural)+Boolean conversions as well.

To simplify expressions, there are new user-defined literals for _b
(boolean), _n (natural), _i (integer), _r (real), _n# (eg _n8),
_i# (eg _i8), _r# (eg _r32), and _s (nall::string).

In the long-term, my intention is to make the conversion and cast
constructors explicit for primitive types, but obviously that'll shatter
most of higan, so for now that won't be the case.

Something I can do in the future is allow implicit conversion and
casting to (u)int64_t. That may be a nice balance.
2019-01-15 15:33:20 +11:00
docs Document that we now require GCC7 and/or C++17 features. 2019-01-03 20:43:08 +11:00
genius Update to v106r68 release. 2018-12-22 21:28:15 +11:00
higan Update to v106r79 release. 2019-01-15 15:33:20 +11:00
hiro Update to v106r70 release. 2019-01-03 21:05:20 +11:00
icarus Update to v106r70 release. 2019-01-03 21:05:20 +11:00
libco Update to v105r1 release. 2017-11-07 09:05:54 +11:00
nall Update to v106r79 release. 2019-01-15 15:33:20 +11:00
ruby Update to v106r66 release. 2018-12-20 11:55:47 +11:00
shaders Install shaders somewhere that higan will find them. 2017-08-23 20:46:24 +10:00
.gitignore Update .gitignore. 2018-12-20 12:15:34 +11:00
.gitlab-ci.yml Build with Ubuntu LTS instead of Debian Stable. 2019-01-03 20:37:30 +11:00
CONTRIBUTING.md docs: Review and update docs for v107. 2018-11-16 16:09:30 +11: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 docs: Review and update docs for v107. 2018-11-16 16:09:30 +11:00
README.txt docs: Review and update docs for v107. 2018-11-16 16:09:30 +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