* first round of GameShark.cs cleanups, redundant code and stylecop cleanup
* simplify how gba readonly values are set
* a few more cleanups
* GameShark - use NESGameGenieDecoder for nes logic
* remove now unused NESGameGeneie tool
* Client.Common - move nes encode/decoder to a cheats folder
* GameShark - move genesis game genie coding logic to its own class
* remove NesGameGenieEncoder that i snow unused
* fix naming
* remove GenGameGenie in favor of using the unified Cheat Code decoder
* move Gameboy/GameGear decoding logic from GameShark to its own class, cleanup
* remove GBGameGenie, was only exposed via the toolbox, GameShark tool does all of this logic
* GameShark - move snes game genie decoding logic to its own class
* cleanup
* remove unused snes GameGenie tool
* move Gb GameShark decoding to its own class
* cleanup
* move Genesis action replay decoding logic to its own class
* cleanup
* cleanup
* cleanup
* cleanup
* move Sms ActionReplay decoding to its own class, cleanlup
* cleanup
* move snes action replay decoding to its own class
* cleanup with a helper method
* cleanup
* more cleanup
* cleanup
* cleanup
* cleanup
* cleanup
* cleanup
* move Psx GameShark decoding to its own class
* Move saturn gameshark parsing to its own class
* cleanup
* cleanup
* move N64 decoder logic to its own class
* remove GBA cheat code that hasn't been ready for 5 years, easier to try to implement this in the re-architected code, so delete for now at least
* start to detangle GBA gameshark mess
* Gameshark - remove most gba cheat code functionality for now, easier to rebuild it later
* Gameshark - cleanup
* cleanup
* cleanup
* cleanup
* redesign nes decoder to simpler design
* simplify more
* convert psx and saturn decoders and simplify
* convert more decoders
* convert more decoders
* convert more decoders
* convert more decoders
* convert gba decoder
* convert more decoders
* convert and simplify N64 decoder
* GameShark - simplify more
nes.setdispbackground and nes.setscanlines now throw when the core is neither
NesHawk or QuickNES (the latter is still silently ignored by these functions)
<adelikat> The reason we throw an error originally is my concern is that it would be easy to leave out an address in a script, and that it would have huge concequences.
<adelikat> I think address should not have a default value here and make the user explicitly add nil if they want this functionality.
`mainmemory.readbyterange` will now return partial data if the requested range
extends beyond the domain (invalid addresses are read as 0). Did not fix docs of
`mainmemory.readbyterange` which incorrectly claim the returned table uses the
memory addresses as keys i.e. addr..(addr+length) - it was and remains
0..length. `mainmemory.write_u8` will now check the specified domain's length
and not erroneously check the selected domain's length.
`memory.readbyterange` will now return partial data if the requested range
extends beyond the domain (invalid addresses are read as 0). Did not fix docs of
`memory.readbyterange` which incorrectly claim the returned table uses the
memory addresses as keys i.e. addr..(addr+length) - it was and remains
0..length. `memory.write_u8` will now check the specified domain's length and
not erroneously check the selected domain's length.