Commit Graph

185 Commits

Author SHA1 Message Date
adelikat 3a36835af2 Ram Search - with the Diff column displayed, don't throw exceptions, Fixes #637. The Diff column still has issues with 4 byte watches though, but this fixes unending exceptions at least 2016-10-05 20:58:26 -05:00
zeromus a7d2b8d7f7 * add a new IToolForm update mechanism which has extensible update points (so a tool can both pre- and post- update)
* make trace logging "core-pushes" model, to a sink installed by the frontend. This sink can go straight to the disk without wasting memory if that's what the Trace Logger tool has selected; or the Trace Logger will buffer it if it needs to.  Formerly, we had a "core-pushes-to-buffer" and "client-pulls-once-per-frame" which necessarily caused huge buffers no matter what was going on.
2016-08-13 15:31:26 -05:00
feos 13476f33ca tastudio: don't pass ctrl+c hotkey to mainform. 2016-08-01 20:23:16 +03:00
Isotarge 5a20a520bd Tools: Ram -> RAM #669 2016-07-22 01:32:54 +09:30
zeromus 859f4e3c01 fix 2 watch-related bugs and a typo in an error message 2016-04-15 22:43:14 -05:00
nattthebear 111648cf98 Break a bunch of memory domain stuff with pointless refactoring 2016-04-13 19:50:06 -04:00
Hathor86 fcb0c8bc32 Work on input get/set through ApiHawk
Convertion has been moved to dedicated class

SystemInfo class review

SystemInfo class now instanciate all SystemInfo and stores them in a
static readonly collection (avoid creating a new class each time we call
DisplayName property).
+ EmulatedSystem enum (in Api) renamed to CoreSystem and moved to
BizHawk.Client.Common
+ this enum is used in SystemInfo class

Created a Joypad class that is populated with JoypadButton enum flags

Input get/set throught ApiHawk works for NES only. So many work remains...
2016-03-29 23:42:24 +02:00
zeromus 75df712563 fix ramwatch crashing bug involving core reboots and watchlist hanging on to stale emulator instances 2016-02-23 14:42:47 -06:00
adelikat cacfb615c4 simplify Cheat.cs somewhat 2016-02-16 20:02:57 -05:00
adelikat 3257b06f85 unnecessary usings 2016-02-16 19:57:57 -05:00
Adam Sturge c82f70763e Fixed bug where having no comparison type would throw exception 2016-02-09 20:33:44 -08:00
Adam Sturge 5dc31d3eb9 Fixed index bug for comparison type in Load() in CheatList 2016-02-07 21:54:45 -08:00
Adam Sturge 52c587d712 Save/Load cheats now accounts for comparison type column 2016-02-07 21:40:14 -08:00
Adam Sturge 992acd9e96 Added code to sort by comparison type. Added code to compare based on comparison type selected 2016-02-07 20:56:40 -08:00
Adam Sturge f19333dd11 Prettied up display of comparison type in cheats table 2016-02-05 20:33:21 -08:00
Adam Sturge 092b5da974 restored [ConfigPerist]. 2016-02-05 19:33:31 -08:00
Adam Sturge 9959d61949 Added comparison type dropdown. Updated Cheat model to contain reference to comparison type 2016-02-02 20:32:46 -08:00
adelikat cc1867326a Ram Search - fix "Exclude Ram Watch" option 2016-01-31 19:28:25 -05:00
adelikat ab16e9238b Drop support for pre-1.0.5 ram watch files, I think it is safe to do this by now 2016-01-30 22:19:32 -05:00
adelikat 0013646db5 Rip out obsolete notion of a WatchList domain, change ram watch menu item to Default Domain, who's functionality is simply to decide the default domain used when adding a new watch, also add some Visual Studio designer shenanigans for a previous commit I made that broke it 2016-01-30 22:17:31 -05:00
Hathor86 da25052e09 Just few comments on above notwa's method :)
(Oh and transform string concatenation with + to a string.Format)
Also made a small fix to externaltoolmanager
2015-12-24 14:00:08 +01:00
Connor Olding f0c939d87c reimplement strings for OSD watches
also fixed saving separators
2015-12-23 17:18:39 -08:00
Hathor86 a7074c6341 ExternalToolManager and BizHawkExternalToolattribute
Add those 2 classes in order to help handling of external tools
- Also fix value setting in watches constructor
- Bugfix in loading externaltools (they loaded multiple times)
- Add new version of Hello World external tool
Whitespaces noise in RamWatch.cs... :s The code hasn't changed
2015-12-13 21:38:35 +01:00
Hathor86 21e25555d0 BytWatch ValueString property fix
Call GetByte() instead of _value field (like other watches)
2015-12-10 10:25:45 +01:00
Hathor86 7779b2f7db Fix RamSearch value
Fix has been done on constructor of each watch. Call GetByte / Word /
DWord if value is 0.
It ensure that previous passed in parameters remains unchanged
2015-12-10 00:34:07 +01:00
Hathor86 708bb4fa93 Final stuff to WatchList
Now fully use comparer class. That saves memory and offer extensibility
ItemCount property obsolete => Moved to Count property (which did the same thing)
Moved ConfigPersistAttribute.cs, IToolForm.cs, IToolFormAutoConfig.cs back to common
2015-12-09 00:54:54 +01:00
adelikat 48487f2a90 Sort out and fix problems with Ram Search watch files showing up in the Ram Watch recent list 2015-12-04 23:18:46 -05:00
Hathor86 31cc08a954 More WatchList comments
Finished coments on WatchList object
2015-12-02 22:48:30 +01:00
Hathor86 32271899c3 Comments on Watch derived class; started on watchlist
+ Moved WatchList.cs to specific directory (just a matter of ordering)
+ Mark some properties and methods in watchlist as obsolete
+ Create Comparer class that are used for sorting (Only domain and
address atm, other a still stored with linq). Unlike OrderBy in LINQ, it
doesn't create a new list for sorting (so it saves memory), furthermore,
it runs faster.
Finally, change to type of Watch.Address from nullable lon to regular
long (the rare times watch.Address.Value was used, there wasn't any
check of null and so, program would have crashed -
InvalidOperationException -)
2015-12-01 22:18:55 +01:00
Hathor86 ee860fd820 Quick fix of save watch
Wrong ToString() method was called when writing
Reading was ok
2015-11-30 18:27:55 +01:00
Hathor86 e7de250fb2 Comments on ByteWatch
Also moved nullable value type to non nullable (with exception
prevention).
2015-11-29 17:13:32 +01:00
Hathor86 01639c3e10 Watch comparaison interfaces implementation
Watch now implements IEquatable<Watch>, IEquatable<Cheat>,
IComparable<Watch>
Operators had also been overloaded. You can now put watches from SAME
domain in a list and easly sort them.
Sorting is based on address first then size.
2015-11-29 13:46:50 +01:00
Hathor86 1e2f4e12be Watch refactoring
Some improvement when you get Available types. Used to return a new
array each time you call the function. It has been transformed into an
IEnumrable and yield return.
DisplayType, PreviousType and Watchsize have been moved outside the
Watch Class
2015-11-28 22:52:00 +01:00
Hathor86 565f19fc83 Watch: Comments & reordering
Just comments some methods and reordering them
2015-11-27 13:43:49 +01:00
Hathor86 d4b4c06f0c Draft of API
So, I create a new dll named BizHawk.Client.ApiHawk and moved few stuff
to it.
Also moved some stuff to BizHawk.Client.Common. Don't think it can be
desiociated.

I started comment Watch and rearrange code (put some #region etc...

It compiles and it seems working :)
2015-11-26 23:05:29 +01:00
zeromus 6f71956faa add lousy logic to fix cheat compares 2015-11-15 18:22:12 -06:00
zeromus 5402f1ff9e dont reorder cheats list when editing cheats 2015-08-04 22:25:58 -05:00
pjgat09 c829887f00 Ram search: fix equal/not equal for float searches 2015-03-21 00:13:53 +00:00
adelikat 36f4eff0f6 add ByteSize to MemoryDomain with a default of 1, set it to not 1 on appropriate domains (I probably missed some, or got some wrong). Have RamSearch use that instead of SystemInfo, remove ByteSize from SystemInfo since it is no longer needed 2015-02-22 15:19:38 +00:00
adelikat 8371c23830 WatchList - use the new watch to string method, did not wire up the from string, since the load code while very poorly coded, both works and supports legacy formats including older rerecording emulators 2015-01-27 02:55:31 +00:00
adelikat f547dfbb21 some fixes to last commit 2015-01-27 02:53:57 +00:00
adelikat bb2cd1b476 Ram Watch - support copy and paste (generates and receives the same text as would be in a .wch file) 2015-01-27 02:37:18 +00:00
zeromus 2a1f40982c dont know how valuable it will be, but just in case.. 16.16 fixed point support 2015-01-22 01:24:20 +00:00
adelikat 4c47ef2f3f Watch.cs - an remove an int cast I missed when converting domain size to long 2015-01-19 02:58:18 +00:00
adelikat 515a41592c Convert a whole bunch of ram stuff from int to long 2015-01-18 18:59:23 +00:00
adelikat 91ffc17aae Refacotor MemoryDomain.Size to be long instead of int, still some small todos, but it compiles and seems to work 2015-01-18 15:25:47 +00:00
adelikat fbdb29b64c refactor IMemorydomains to be a domain list instead of having a domain property, refactor cores to register an IMemoryDomains instead of being one 2015-01-14 21:55:48 +00:00
adelikat 3c83911c4f Ram Search - don't allow undo to the original list, a user can easily start a new search to get to that state, and allowing it means undo already starts out with a full list eating a lot of RAM for no benefit 2015-01-02 22:18:53 +00:00
scepheo 14e2b280ac Removed reference to Global.Emulator from RamSearchEngine. 2014-12-16 01:50:22 +00:00
scepheo 77be509e44 RAM Search: Implement previous type "last change". Fixes issue 331. 2014-12-16 01:19:29 +00:00
scepheo 528b7ea104 RAM Search: Fix issues with signed values. Resolves issue 340. 2014-12-16 00:41:47 +00:00
scepheo 53ea2caeac ^Really^ fix cheats not working (forgot WordWatch & DWordWatch) 2014-12-15 23:57:56 +00:00
goyuken ea47246658 remove the IEmulator inheritance from some services, and fix code as needed 2014-12-15 22:25:06 +00:00
scepheo 5179a3379f Fixed cheats not working. 2014-12-14 01:51:55 +00:00
adelikat 04f9081943 in IEmulator extensions add methods such as AsMemoryDomains(), AsStatable() that do the service calling magic. In the client code replace appplicable casts of IMemoryDomains with AsMemoryDomains(), more commits of this nature for the other IEmulatorServices soon to follow 2014-12-05 00:32:29 +00:00
adelikat fdc9ea2aa9 fix issue 326 - Ram Watch, Ram Search showing actual value instead of frozen value on frozen addresses 2014-11-29 00:45:38 +00:00
adelikat 7c83b91e83 Ram Watch - fix a bug where loading a watch file with separators would throw a null reference exception 2014-11-29 00:28:48 +00:00
adelikat e6e2972e3d Make IMemoryDomains inherit IEmulator and simplify some code slightly as a result 2014-11-23 16:03:04 +00:00
adelikat f4d3b70469 Ram Watch - fix issue with stale memory domains when rebooting a core, some cores were unaffected, cores like atari 2600 were affected by this bug 2014-09-28 16:39:53 +00:00
adelikat 1dc789eb02 Ram Tools - support poking frozen values, fixes issue 266 2014-09-27 21:52:15 +00:00
zeromus 87e9d235f6 make some effort to support memdomain of full 32bits size, and use it for n64 system bus. make sure to check that its disabled in ramsearch engine and in hex editor. we could probably fix it to work in hex editor later. 2014-09-09 21:34:41 +00:00
zeromus ea1387c339 fix signed comparisons probably broken by last commit 2014-09-07 06:33:21 +00:00
zeromus c829183fa7 fix handling of sign extension and longs in ramsearch engine. fixes observed misbehaviours in n64 ramsearching. not tested real well, but definitely a needed improvement 2014-09-07 06:17:10 +00:00
adelikat d003be9cda remove some todos, I decided not to do any of them, it is too pedantic to do them 2014-09-01 19:07:05 +00:00
adelikat 5ba74c631c Remove MemoryDomains from IEmulator into a new Interface, IMemoryDomains, Add this interface to existing cores, except null emulator (and removed memory domain related code from it). Refactored EmuHawk for ram tools to use an instance of IMemoryDomains rather than IEmulator, don't expose ram tools unless the core implements IMemoryDomains. Still a few misc todos, and probably some cleanup 2014-09-01 18:43:41 +00:00
adelikat db0dd17676 Hex Editor - fix wrapping logic when incrementing/decrementing frozen addresses 2014-08-16 14:44:40 +00:00
adelikat 9cfb30093a Ram Watch/Ram Search - Fix freezing of float values as well as some other types 2014-08-02 01:54:07 +00:00
adelikat 2fd1ffe824 VirtualListView - add a UseCustomBackground flag true by default, if set to false it will bypass custom background drawing logic resulting in that speedboost I keep doing checkins for. Refactor RamWatch to check if there is any need to draw ahead of time and set this flag. Most of the time this will result is a good speed boost for this dialog, only if they are watching a frozen address (which isn't very exciting anyway) or an out of range address (which they need to fix) do they suffer the speed cost of background drawing 2014-07-30 21:31:13 +00:00
adelikat ef14f661c0 Hex Editor - properly handle (and not throw exceptions) the display of cheat values in a byte size not equal to the cheat byte size 2014-07-28 00:49:48 +00:00
adelikat 6269e957e6 Remove some unused extension methods and move some others to CollectionExtensions 2014-07-03 18:43:49 +00:00
adelikat 1964f3754a Merge InputValidate into StringExtensions 2014-07-03 16:00:57 +00:00
adelikat 0eb37ad36d Convert IntHelpers to NumberExtensions and change namespace appropriately, remove StringHelpers.cs 2014-07-03 15:16:47 +00:00
adelikat 467f8da2fb Convert StringHelpers into extension methods, and merge into StringExtensions, change namespace of string extensions 2014-07-03 15:05:02 +00:00
adelikat d5e2808944 Fix namespaces 2014-07-03 14:56:13 +00:00
adelikat 461b73f1df Ram Search - make manually deleting items a lot faster, since it was taking many many minutes when user was manually deleting an absurd number at once 2014-07-03 01:46:14 +00:00
adelikat da1bc66c0e SystemInfo object - don't need endian type, Ram Search - remove bi ol system ID switch for defaults in favor of system info and more clever logic. Finish display name refactor 2014-05-31 23:05:02 +00:00
adelikat ddd3512552 Ram Search - fix float searches 2014-05-18 23:59:15 +00:00
adelikat 3127e6d36c Ram tools - for floats, use sci notation, rather than spooky rounding 2014-05-18 19:40:21 +00:00
adelikat 74cafb6ace Ram Search Engine - don't throw exception on not having the type in SetType() this can be the result of the user changing settings before rebooting 2014-05-18 19:14:48 +00:00
scepheo 12559588a3 Fixed indexing error on multi-byte RAM search. 2014-05-15 00:33:18 +00:00
adelikat 653fb0ff38 Ram Watch - set the CurrentFileName property during LoadFile, fixes some subtle bugs that resulted from a loaded watch with an empty name 2014-05-11 12:09:41 +00:00
adelikat e5b3138d15 Ram Watch, Ram Search - don't crash on out of range addresses (such as when the user leaves ram watch open and changes cores), highlight out of range addresses and warn user. On Ram Search - give the option to remove these addresses from the list. 2014-05-04 15:30:18 +00:00
adelikat 4fc81991d7 Save cheats even if the cheat dialog was never opened (for instance, if the cheat were added via a game genie dialog or lua) 2014-04-26 17:28:43 +00:00
adelikat dd651b2ca8 issue #149 fixed - better notion of equals when comparing watch object 2014-04-11 17:21:45 +00:00
adelikat e4c7110174 Hex Editor - fix issue 150 - exceptions thrown when freezing multi-byte addresses 2014-04-11 16:45:05 +00:00
adelikat 6d1675e54c Change UnfreezeAll option on many tools to remove cheats not simply disable them. 2014-03-23 13:21:48 +00:00
adelikat 75b9b132b6 Hex Editor - make freezing a range of addresses not slow 2014-03-01 18:04:21 +00:00
adelikat 97bf870b74 Ram Tools - speed up many situations that are slow when freezing/unfreezing addresses with multiple tools open due to sloppy handling of change events 2014-03-01 16:30:06 +00:00
adelikat 02ea7d360f some code cleanup 2014-02-22 23:59:52 +00:00
zeromus dca390018a fix bug in hex cheats, which was making them basically non-functional 2014-02-05 20:05:44 +00:00
adelikat 23f7017651 Some code cleanup tinkerings in Client.Common 2014-02-03 20:48:01 +00:00
adelikat 3dfcd8b22a drastically cleanup the InputValidate class 2014-02-03 19:37:43 +00:00
adelikat 74b88584be Ram Watch/Search - fix bug where signed and unsigned are saved backwards 2014-01-21 00:21:19 +00:00
adelikat b67e97f9aa Ram Search - fix change count logic and previous value as previous frame 2014-01-02 17:56:57 +00:00
adelikat 6252c58a3f Ram Search - don't attempt to binary search if the list is not sorted! This fixes exceptions thrown when using column click. The consequence is that preview mode is significantly slower after sorting by anything other than Address ascending, only really impacts large domains such as N64 domains 2014-01-01 21:56:35 +00:00
adelikat 377ab3b4ea Fix Hex Editor to show cheat value on frozen addresses, and some fix ups in misc bugs that also contributed to this problem. Note: hex editor still will show some dubious behavior when viewing in one byte size and having cheats in another, that kind of mess will have to be sorted out in another commit 2014-01-01 03:19:08 +00:00
adelikat 57f62d13f1 RamSearchEngine - tiny code cleanup using Enumerable.Repeat because I just learned of it and it is nifty 2013-12-31 20:41:42 +00:00
adelikat f195416713 Ram Search - when creating a new list, allocate the list to number of addresses to be added, not the size of the domain (meaning, factor in the byte size and CheckMisAligned settings). 2013-12-31 16:59:38 +00:00
adelikat 16f7c7fcdc A round of code cleanup on Rewind and some other misc things in Client.Common 2013-12-30 01:17:11 +00:00
adelikat 098fca2895 Ram Search - make manual removal of addresses undo-able, slight cleanup of Start method 2013-12-27 16:48:47 +00:00