* PI: name constants and fixed DMA/reset controller behaviour.
When a reset controller request is performed, only busy and error bits are cleared.
When DMAs begin, the DMA busy bit is set, but the interrupt bit shouldn't be touched yet.
* Ignore PI register write and flag error when busy.
When a game triggers a DMA from the cart ROM area to RDRAM, part or all of the
DMA'd area is not covered by the currently-loaded ROM, cen64 treats it as a
series of reads from open-bus. A bug in the code that handles this case was
causing segfaults.
Hat-tip to cen64 user Grim who provided a test rom that triggered this bug. His
test ROM was less than (1 MB + 4 KB) in size, which was causing the initial 1MB
DMA to trigger this bug.
When -is-viewer is passed on the command line, create an IS Viewer
object that intercepts writes at 0x13FF0000. This is used by Ocarina of
Time Master Quest Debug to log debug messages.
The messages are encoded in EUC-JP, so we bring in iconv to convert that
to UTF-8 so the messages can be printed to modern consoles.
Props to jrra (@jkbenaim) and spinout for reverse engineering the
interface and documenting it: http://wiki.spinout182.com/w/IS64
Oftentimes, many of our countrollers are just doing a
simple countdown and don't perform any real work for the
cycle. Pull those parts out into headers so that the
compiler can 'see' that and optimize accordingly.
Replaced all references to simulation with emulation
Updated copyright year
Updated .gitignore to reduce chances of random files being uploaded to
the repo
Added .gitattributes to normalize all text files, and to ignore binary
files (which includes the logo and the NEC PDF)
Tell GCC to optimize cold functions for size and stash them away in
a separate part of the binary. Put the simulate core, meanwhile, on
the hot path. Also, bump optimization to -O3 as we can now "afford"
to do so.