Commit Graph

331 Commits

Author SHA1 Message Date
adelikat 2059558771 Lua - fix emu.getdisplaytype() that has been broken for a long time, also fix it to properly use the IEmulatorService system instead of reflection shenanigans 2016-12-15 13:09:52 -06:00
adelikat 2d9213c379 IController - Remove the indexer property and refactor code accordingly, also simplify and cleanup many of the IController implementations 2016-12-14 14:12:16 -06:00
adelikat e94de78ebd Lua - fix movie.getinput() to return float values instead of passing "False" no matter what 2016-12-14 13:22:01 -06:00
adelikat 72a59087b5 Use the IController indexing property less in preparation for removing it from the interface. Replaced with its more explicity counter-part .IsPressed() 2016-12-14 12:42:15 -06:00
adelikat 5ff33e7569 Rename IController.Type to IController.Definition to more clearly describe the property 2016-12-12 12:30:32 -06:00
adelikat 44fa93e15f Lua - make the MemorySavestate library dependent on IStatable 2016-12-04 12:08:21 -06:00
adelikat 63202570cc Lua NES library - properly use an OptionalService instead of Global.Emulator 2016-12-04 11:50:07 -06:00
adelikat 7bff28bdee Lua - memory library - actually default to system bus, previous commit was unsufficient 2016-11-12 11:55:20 -06:00
adelikat bf9956089d Lua - default the memory library to system bus (if available) 2016-11-12 09:25:18 -06:00
adelikat 045f5e9df1 Lua documentation - clean up return values to match conventions in parameters 2016-11-11 11:40:53 -06:00
adelikat b0552224e0 Lua documentation - fix notation for nullable bools 2016-11-11 11:30:18 -06:00
adelikat fa6cb75a77 When generating wiki documentation, add some info about parameter types, #401 2016-11-11 11:27:06 -06:00
feos 91a29a8692 n64: yet another dynarec check, this time for lua 2016-08-25 22:11:53 +03:00
parasyte 71c7edbb24 Add address mask setting for breakpoints 2016-08-08 04:37:39 -07:00
nattthebear 111648cf98 Break a bunch of memory domain stuff with pointless refactoring 2016-04-13 19:50:06 -04:00
zeromus 5024f6022e console log lua exceptions, workaround for #607 2016-03-31 14:11:34 -05:00
feos a6c3561db0 lua: movie.getinput() now fails gracefully if adapter is null.
fixes #595
movie.mode() returns a string, so make its modes look like strings in the description.
2016-03-12 12:05:24 +03:00
zeromus aa3c599882 readd y=x functionality to SetReadOnly 2016-03-10 19:03:07 -06:00
feos 78f20510e5 lua: emu.disassemble(uint pc, string name = "") 2016-02-21 18:14:03 +03:00
adelikat ddbaf6b2f9 Lua - registering completiosn to sublime text 2 - exclude strings from completion logic 2016-02-14 22:35:47 -05:00
feos 07d4ac846b lua: memory.GetMemoryDomainSize()
fix #542
2016-02-09 17:54:11 +03:00
zeromus 97998071a7 fix bugs in lua's memorysavestate apis (fixes #565) 2016-02-08 01:28:26 -06:00
adelikat 36b82c3563 Lua Console - add a button that installs auto-complete for all bizhawk's lua library to Sublime Text 2's lua syntax, still todo - notepad++ 2016-02-07 08:27:57 -05:00
adelikat 487fce328b Lua - add option to detect changes in scripts and automatically reload them. Have this option off by default for now. Also fix reloading of scripts which was recently broken. 2016-02-06 13:50:02 -05:00
zeromus 5e89e563d0 overhaul lua sandboxing so that each lua script has its own sandbox. elaborate tracking of winform/event ownership to ensure that lua doesnt receive calls without going through the owner's sandbox. add win32-specific speed hacks for currdir set/get at higher speed. There may be bugs in this commit, but I think we're on the right track now. 2016-01-31 19:54:55 -06:00
zeromus 42c0b62261 fix some lua currdir bugs, but its all broken, dont pay any attention to it 2016-01-31 03:18:34 -06:00
zeromus da865e28b8 try sandboxing currenty directory harder 2016-01-31 02:40:48 -06:00
adelikat 5ddd9e097b clean up some warnings 2016-01-30 21:28:49 -05:00
zeromus 0da6e745e5 move EnvironmentSandbox and LuaSandbox to Client.Common 2016-01-30 18:37:30 -06:00
zeromus b0ab66801f Revert "comment out feos' sandbox change so things compile"
This reverts commit 418eed6cc5.
2016-01-30 18:28:51 -06:00
adelikat 418eed6cc5 comment out feos' sandbox change so things compile 2016-01-30 18:10:23 -05:00
adelikat ca3b43973c Load Lua session - when loading a relative path, drop the .\ part, I'm disappointed in Path.Combine 2016-01-30 18:08:54 -05:00
feos 7409a32658 lua: attempt to use sandbox in callbacks. 2016-01-30 23:26:27 +03:00
feos c641d94e05 lua: movie.save
see #384
2016-01-30 16:10:28 +03:00
feos a821fce6c8 typo 2016-01-30 16:10:27 +03:00
feos 7421bd7244 lua docs derp 2016-01-27 17:06:22 +03:00
feos 3c779a897b lua: emu.setislagged() 2016-01-27 16:41:41 +03:00
feos c1e70077c8 instafix #546 2015-12-13 00:00:22 +03:00
feos 3c07f7e649 lua: optional domain for memory functions.
fixes #538.

I tested heavy memory reading, and it's not adding noticeable overhead.
2015-11-29 22:56:28 +03: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
zeromus 93e7c91ee9 clean up lua console pause/stop behaviour a little bit and add listview icons to make it more clear what's going on 2015-10-22 16:28:52 -05:00
adelikat aa01b725a6 Also handle lack of input callbacks when removing a lua function, not just on clear all 2015-10-17 20:03:07 -04:00
adelikat 32a2711303 When clearing lua callbacks, handle the case that input callbacks might not be implemented, also handle memory callbacks in a more consistent way 2015-10-12 19:02:03 -04:00
zeromus e6ea96771b fix crashes removing lua callbacks on some cores 2015-10-01 01:16:34 -05:00
adelikat f1c77c349e Oops, add EmuLuaLibrary.MemorySavestate.cs 2015-09-10 17:36:20 -04:00
adelikat 3ba965321a make bizstring.split() 1-based 2015-09-09 19:57:14 -04:00
adelikat 12479cbc25 lua implement movie.getcomments() and movie.getsubtitles() 2015-08-04 18:33:22 -04:00
adelikat f3d8388dfe Lua - implement movie.getheader() 2015-08-04 18:22:22 -04:00
adelikat 0205762409 lua - remove movie.insertframe() as it is no longer needed and was not coded in an acceptable way, if such a feature is needed in the future, it needs to be thought through better 2015-08-01 22:21:44 -04:00
adelikat 8ec8032061 lua - implement movie.startsfromsavestate() and movie.startsfromsaveram() 2015-08-01 18:16:40 -04:00
adelikat 383a462207 lua - implement movie.InsertFrame(int index, string logEntry), for now, will only work on .bk2 movies (.bkm and .tasproj will crash) 2015-08-01 15:46:43 -04:00
zeromus 644a17dc19 fix nonsense in ReadByteRange; should fix #463, but havent tested 2015-07-26 19:56:27 -05:00
adelikat 3541c9e975 Make the lag counter settable, and expose this functionality in lua 2015-07-09 13:05:30 -04:00
adelikat 2790dcbf0d lua - implement userdata.containskey() 2015-07-02 14:29:19 -04:00
adelikat f847e905d2 tastudio/lua - add onqueryitembg event to the lua library, this is called during each cell's background color drawing callback, and gives the opportunity for lua to override the color. 2015-07-01 19:01:29 -04:00
adelikat e03da4f5fe Lua - add a userdata library, with basic api for a script to add arbitruary data to a dictionary. This dictionary is saved and loaded in savestates (if present). Scripts can use this to create counters and whatnot that need data saved in savestates 2015-06-30 18:54:42 -04:00
scepheo abf1e55934 A bit of testing with Lua. 2015-04-10 14:11:01 +00:00
adelikat 5b15638671 Lua - issue 404 - add a Genesis library with the ability to toggle bg layers 2015-03-28 00:42:36 +00:00
adelikat 6ea50f6e49 Fix issue 410 - Lua - don't crash on lua script errors in savestate and frame events 2015-03-28 00:26:10 +00:00
adelikat 4e9e2ffa37 Lua - readbyterange - pass a table of strings not ints 2015-03-27 23:34:25 +00:00
adelikat bf034b880f some misc bug fixes in some lua functions 2015-03-27 23:29:15 +00:00
adelikat 16e9bc7d38 Fix some lua documentation 2015-03-23 22:22:02 +00:00
adelikat b82e19f230 Lua - fix a relative path bug when saving a lua session 2015-03-03 01:19:38 +00:00
adelikat 22c62d16a9 better catching of error in lua callbacks 2015-01-31 02:25:23 +00:00
adelikat 4ee4c449aa Lua - memory read/write callbacks - oops, specify them as read and write, not execute 2015-01-31 01:45:45 +00:00
adelikat b1b94da6ef Lua Sessions - make scripts relative to the lua session instead of relative to the .exe, note: this wrecks existing luases files 2015-01-29 02:08:12 +00:00
adelikat 9757709242 Lua - check if memory callbacks are implemented before attempting to remove memory callbacks 2015-01-27 21:48:18 +00:00
adelikat 8246de14aa IMemoryCallbackSystem - add a flag to indicate whether execute callbacks are available, in lua and the debugger, take this flag into account, also improve some availability checking in Lua memory callbacks. Flag N64 as not having execute callbacks available 2015-01-25 22:14:58 +00:00
adelikat 0d54298f02 Lua - memory domain - if a domain isn't writable, error when attempting to write to it 2015-01-25 20:20:43 +00:00
adelikat 779d7c0cee Lua - memory library - default to main memory if user did not specify a domain 2015-01-24 21:33:52 +00:00
adelikat 12c3cb0b40 oops, and that todo 2015-01-18 17:28:26 +00:00
adelikat 71438b2de6 remove a todo 2015-01-18 17:28:02 +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 9358e24213 IMemoryDomainList - downgrade from IList to IEnumerable, refactor a spot that needed something more than that 2015-01-14 00:34:50 +00:00
adelikat 418d80b0e8 Lua - Memory library - simplify some code 2015-01-14 00:25:25 +00:00
adelikat d62ba4e2b4 Change IMemoryDomains to have an IMemoryDomainList instead of a MemoryDomainList, this is an incremental step into eventually having IMemoryDomains take over the properties of IMemoryDomainList, still todo: reduce the amount of needed functionality in IMemoryDomainList from old and not good code 2015-01-13 22:18:07 +00:00
adelikat 6f4b01417f Lua - convert SNES library to service injection system 2015-01-01 20:37:31 +00:00
adelikat 01019686cf lua - convert memory libraries to use service injection 2015-01-01 20:19:20 +00:00
adelikat b6e33d010a Lua - gameinfo library - convert to using service injection 2015-01-01 20:08:03 +00:00
adelikat f6c2b4e897 Lua - event library - convert to service injection system, fix OnInputPoll() to return a GUID like every other event 2015-01-01 20:01:37 +00:00
adelikat 58616ff001 lua - Emu library - convert to service injection model, fix emu.getregister(s) that was broken when refactoring core methods for better debugger support 2015-01-01 19:52:53 +00:00
adelikat 7bebb66589 IDebuggable - refactor GetCpuFlagsAndRegisters to be IDictionary<string, Register> where Register is a value and a bitsize 2014-12-20 03:19:33 +00:00
goyuken cfaf59f887 lua: internal infrsatructure changes to nes library 2014-12-17 23:03:58 +00:00
goyuken ea47246658 remove the IEmulator inheritance from some services, and fix code as needed 2014-12-15 22:25:06 +00:00
adelikat 45809ab73f move an attribute in Wonderswan core that was on the constructor on accident, added an AttributeTargets attribute on it that would have caught such an error, add AttributeTargets on some other attributes to help clarify their usage 2014-12-13 02:31:31 +00:00
adelikat 1c179da80c MemoryCallback System - another refinement, make an IMemoryCallback and make that the argument for add methods 2014-12-07 19:09:36 +00:00
adelikat 2d1a43dc65 MemoryCallbackSystem - simplify by having a single Add method with a MemoryCallbackType parameter, and some simplifying of client code as a result 2014-12-07 18:53:56 +00:00
pjgat09 c2096d9a30 Lua: Fixed a bug with analog controls not being cleared 2014-12-07 07:39:01 +00:00
adelikat 0b84beec88 Move MemoryCallbackSystem from CoreComm to IDebuggable and refactor accordingly, Lua - tell the user when memory callbacks are not available for a given core 2014-12-05 01:56:45 +00:00
adelikat 11a8a009c5 AsDebuggable() 2014-12-05 01:01:58 +00:00
adelikat f5cc38c9cd AsInputPollable() 2014-12-05 00:59:00 +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 a07263c04e Move InputCallbackSystem from CoreComm to IInputPollable, and refactor all cores accordingly. Lua - OnInputPoll() - log to the user when attemping to add a callback of this type to a core that has not implemented input callbacks. Mark all unmanaged cores' implementations of the InputCallbackSystem as FeatureNotImpleented, won't have any effect on functionality, but will help us keep track of the fact that they still have a bit of work to do. Still todo: ActiveChanged event handler on the base implementation of IInputCallbackSystem 2014-12-04 00:43:12 +00:00
adelikat a83d714c42 Break off IsLagFrame and LagCount from IEmulator and put into its own interface IInputPollable, and refactor cores as necessary. EmuHawk - account for the possibility that a core is not an IInputPollable, and do things like disable the lag counter menu item. Still some front end todos. Also still todo, move the InputCallbackSystem from CoreComm to IInputPollable 2014-11-30 20:29:30 +00:00
adelikat a932cef662 Add a description attribute for EmulatorLuaLibrary 2014-11-08 14:08:32 +00:00
scepheo 28f21e1775 Lua:
- LoadState through Lua isn't counted for movie RerecordCount.
 - Added movie.setrerecordcount and movie.getrerecordcount for people who really want to count their bot loadstates.
2014-10-20 20:31:31 +00:00
jlennox a64017366c Create ISettable<T,T2>/ISettable interfaces. This checkin has not been extensively tested. 2014-10-19 01:22:47 +00:00
jlennox 01a994fe9c Break IDebuggable off from IEmulator 2014-10-18 22:13:25 +00:00
adelikat 538c4632af Add a LuaLibraryAttributes attribute to lua libraries with a Released property, only register libraries that are released except in Developer Builds, set tastudio library Released flag to false 2014-09-20 01:00:50 +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
gochaism 6e01ca1808 Lua: Add bit.arshift for arithmetic right-shift. 2014-08-14 01:49:28 +00:00
adelikat 9644c3d29f Lua - memory library - populate the default memory with the MainMemory defined for that core, as opposed to null, which results in silent crashes 2014-07-14 16:24:28 +00:00
adelikat e475edc3c6 Lua - joypad.setfrommnemonicstr() - catch errors and log to the lua console the error instead of killing the script 2014-06-29 13:40:49 +00:00
adelikat 055e88fea3 Remove Fps from IMovie 2014-06-29 00:48:36 +00:00
adelikat 19feaaa3ba Remove some more usages of IMovie.GetInput() 2014-06-19 00:37:42 +00:00
adelikat 9a16540e14 Movie 2.0 - simplify some code 2014-06-18 19:34:27 +00:00
adelikat 6133164a7f Add GetInputState() to IMovie that returns an IController representing a frame of input and replace a lua method to use this instead of getting the inputlog as a string and processing it, still todo: obsolete the GetInput() method 2014-06-18 02:26:22 +00:00
adelikat 6b73891a91 More bk2 progress 2014-06-15 14:44:26 +00:00
adelikat c807e27496 Some movie code reorg and cleanup 2014-06-15 13:03:24 +00:00
adelikat df19bc3a38 slight fix to wiki lua documentation 2014-06-14 17:04:54 +00:00
adelikat a682c667dd Nuke IMovieHeader, put necessary methods into IMovie instead, and some todos on trouble spots for movie 2.0 2014-06-11 01:41:41 +00:00
goyuken fb026ccb3c support looah emu setrenderplanes for quicknes (sp only, not bg) and wonderswan (fully supported) 2014-06-10 20:41:20 +00:00
adelikat e4a12c58bc for Developer builds - Lua functions list - a ToTASVideosWikiMarkup button that copies to clipboard 2014-06-05 00:23:05 +00:00
adelikat 5e2bd8a927 lua documentation - show optional parameters as optional, and show default values 2014-06-04 01:23:50 +00:00
adelikat 83671539d1 LuaDocumentation - some simplifying of code 2014-06-04 00:22:44 +00:00
zeromus 0fe74f95e7 fix LuaConsole PWD-related bugs 2014-06-03 02:39:15 +00:00
adelikat 0649d1c77e Lua - add some more documentation, add a method that generates tasvideos wiki markup of the documentation and outputs to a file (method not wired to anything, there to save me tons of time when releasing) 2014-06-03 02:19:13 +00:00
adelikat ba4e7d620b Refactor the LuaDocumentation class to remove a bunch of unnecessary stuff 2014-06-03 00:34:41 +00:00
adelikat f72b13bed3 Lua - events.unregisterbyid() - strongly type guid to string since that's what the methods return that give guids back to the script 2014-06-02 01:05:51 +00:00
adelikat 5d79072a38 Lua - Finish strongly typing the Color params in the gui library, Lua Functions List - cleanup display of Color params and some other things 2014-06-02 01:04:13 +00:00
adelikat 83ada011e8 Lua - Refactor how lua libraries are registered by searching assemblies and finding implementations and building a list of these 2014-06-01 22:02:59 +00:00
adelikat 51660dd023 Add SetCpuRegister() to IEmulator. Implemented it in Atari 2600, 7800, C64, Neshawk, and technically dual gameboy (passes it to L and R where it will fail). The rest throw NotImplementedExceptions. Lua - add emu.setregister(), catches NotImplementedExceptions and informs the user. 2014-05-31 17:03:21 +00:00
adelikat 9a24539c10 Lua - catch NotImplementedException on emu.getregister(s) and warn the user that this particular core doesn't implement this feature yet. Also, put IEmulator extensions in their own namespace 2014-05-31 14:29:27 +00:00
adelikat 0782c9820d Lua - implement event.onexit() - fires when the calling script stops execution, supports multiple callbacks per script 2014-05-26 03:08:16 +00:00
adelikat 6d981c73e1 Lua - fix joypad roundtrip testing 2014-05-24 03:24:05 +00:00
adelikat 667a96a277 Lua - combine common code in memory and mainmemory libraries into a base class, apply range checking to all methods, add memory.getsize() to match mainmemory method, fix a name bug in a memory 32bit method, clean up a bunch of things too 2014-05-23 23:19:20 +00:00
adelikat 6f296a5773 Lua - joypad.setfrommnemonicstr() - support the notion of pressing the analog stick for 1 frame, rather than sticky behavior 2014-05-21 03:25:41 +00:00
adelikat af9c462826 meh, null check some other bizstring library functions while I'm thinking about it 2014-05-21 02:12:27 +00:00
adelikat ac6c5e6b48 lua - nullcheck bizstring.split() 2014-05-21 02:05:26 +00:00
adelikat e88b7cc93e one more tweak to make lua library constructors unified 2014-05-21 01:15:52 +00:00
adelikat 17568997bf Lua - unify constructors and have all libraries receive a lua context and an output callback, simplify some convolved registration code 2014-05-21 00:17:35 +00:00
adelikat 6401e6d719 Refactor LuaLibraryBase to have a Lua context rather than misc libraries being in charge of that when needed. Still todo: clean up the inconsistent constructor logic, vs setting these as public properties 2014-05-20 20:34:51 +00:00
adelikat f19d15d1ed Lua - add a Log callback to the LuaLibraryBase class instead of having misc libraries have to build out this behavior when they need it 2014-05-20 20:25:18 +00:00
adelikat 4ee4088c4c read/write byte range functions - range check, and log warnings if user attempts to access outside the domain range, rather than throw a vague lua exception and crash 2014-05-19 01:42:41 +00:00
adelikat e1a5123dcf implement memory.readbyterange() and memory.writebyterange(), these were in the mainmemory library but how did they manage to never be implemented in the memory library? 2014-05-19 01:13:26 +00:00
adelikat 059952f0a4 Change memory.getmemorydomainlist() to return a lua table instead of a string 2014-05-19 01:06:44 +00:00
adelikat b2feb39c11 Lua - implement joypad.setfrommnemonicstr() 2014-05-18 22:54:41 +00:00
adelikat d2bc1b89a3 Lua - implement movie.getinputasmnemonic() 2014-05-18 21:26:27 +00:00
adelikat 3d10d67fea Implement bizstring.split() 2014-05-18 21:06:16 +00:00
adelikat 8cf1d327e3 Lua - Fix typo, memory.write_u8 instead of a duplicate memory.write_s8 2014-05-06 17:29:52 +00:00
adelikat 76a4560ff9 Lua - emu.getsystemId - be consistent with movies 2014-05-03 02:28:12 +00:00
adelikat 07e2c9758f back out of 6464 2014-05-02 01:32:01 +00:00
adelikat d5a48614b7 Remove a now unused method 2014-05-01 17:11:05 +00:00
adelikat 06828f2484 Lua - convert emu.setrenderpanes to use params 2014-05-01 17:09:54 +00:00
adelikat f2c5b4eeb4 fix to emu.setrenderpanes 2014-05-01 12:06:54 +00:00
adelikat 04aa023cb9 Fix joypad.Set() when using the controller number parameter, also strongly type that parameter to nullable int instead of object, add a unit test lua script that tests for this 2014-04-22 21:55:04 +00:00
adelikat 67704b35bf Lua Console - dont' flag changes when change the on/off status of a script as that leads to being nagged too much (for instance, toggling a lua script at any time during recording and then restarting your movie). Remember the file name when creating a new session as to do a Save As during AskSave() 2014-04-22 21:35:04 +00:00
adelikat 603fd81066 Lua - implement movie.fps() and add MovieTimer.lua script that shows the clock time for a given movie (updates while recording) 2014-04-22 21:27:08 +00:00