mirror of https://github.com/bsnes-emu/bsnes.git
95d0020297
byuu says: So tired ... so much left to do still ... sigh. If someone's up for some code golf, open to suggestions on how to handle the INTNEST control register. It's the only pure 16-bit register on the system, and it breaks my `map`/`load`/`store<uint8,16,32>` abstraction. Basically what I suspect happens is when you access INTNEST in 32-bit mode, the upper 16-bits are just undefined (probably zero.) But `map<uint32>(INTNEST)` must return a uint32& or nothing at all. So for the time being, I'm just making store(ControlRegister) check if it's the INTNEST ID, and clearing the upper bits of the written byte in that case. It's hacky, but ... it's the best I can think of. I added LDX, which is a 900H-only instruction, and the control register map is for the 900/H CPU. I found the detailed differences between the CPUs, and it doesn't look likely that I'm gonna support the 900 or 900/H1 at all. Not that there was a reason to anyway, but it's nice to support more stuff when possible. Oh well. The 4-byte instruction fetch queue is going to have to get implemented inside fetch, or just not implemented at all ... not like I'd be able to figure out the details of it anyway. The manual isn't clear on how the MULA flags are calculated, but since MUL doesn't set any flags, I assume the flags are based on the addition after the multiplication, eg: uint32 a = indirect<int16>(XDE) * indirect<int16>(XHL); uint32 b = reg16; //opcode parameter uint32 c = a + b; //flags set based on a+b No idea if it's right or not. It doesn't set carry or half-carry, so it's not just simply the same as calling algorithmAdd. Up to almost 70KB, not even halfway done, don't even have a disassembler started yet. There's a real chance this could overtake the 68K for the biggest CPU core in higan, although at this point I'm still thinking the 68K will end up larger. |
||
---|---|---|
docs | ||
genius | ||
higan | ||
hiro | ||
icarus | ||
libco | ||
nall | ||
ruby | ||
shaders | ||
.gitignore | ||
.gitlab-ci.yml | ||
CONTRIBUTING.md | ||
GPLv3.txt | ||
LICENSE.txt | ||
README.md | ||
README.txt | ||
mkdocs.yml |
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
- Unofficial forum
- Documentation for the current stable version
- Source code repository archives official higan releases and WIP snapshots since approximately v067r21
- Latest WIP build for Windows
- Documentation for the latest WIP version