diff --git a/src/BizHawk.Client.Common/lua/LuaDocumentation.cs b/src/BizHawk.Client.Common/lua/LuaDocumentation.cs index 819a39d980..2d9a9a8291 100644 --- a/src/BizHawk.Client.Common/lua/LuaDocumentation.cs +++ b/src/BizHawk.Client.Common/lua/LuaDocumentation.cs @@ -12,12 +12,14 @@ namespace BizHawk.Client.Common { var sb = new StringBuilder(); - sb.AppendLine("[module:ListParents]") - .AppendLine() - .AppendLine("__This is an autogenerated page, do not edit.__ (To update, open the function list dialog on a Debug build and click the wiki button.)") + sb.AppendLine("__This is an autogenerated page, do not edit.__ (To update, open the function list dialog on a Debug build and click the wiki button.)") .AppendLine() .AppendLine("This page documents the the behavior and parameters of Lua functions available for the [BizHawk] emulator. The function list is also available from within EmuHawk. From the Lua Console, click Help > Lua Functions List or press F1.") .AppendLine() + .AppendLine("As you might expect, Lua scripts execute top to bottom once, so to run something every frame you'll need to end the script with an infinite loop (or you could set a callback on one of the events instead). Make sure to call {{emu.frameadvance}} or {{emu.yield}} in the loop or your script will hang EmuHawk and then crash!") + .AppendLine() + .AppendLine("FCEUX users: While this API surface may look similar, even functions with the same name may take different arguments, or behave differently in a way that isn't immediately obvious.") + .AppendLine() .AppendLine(@"__Types and notation__ * [[]] (brackets) ** Brackets around a parameter indicate that the parameter is optional. Optional parameters have an equals sign followed by the value that will be used if no value is supplied. @@ -42,7 +44,33 @@ namespace BizHawk.Client.Common * table ** A standard Lua table * something else -** check the .NET documentation on MSDN +** check the .NET documentation on MSDN") + .AppendLine() + .AppendLine(@"__Common parameter meanings__ +* {{ulong addr}}/{{long addr}}/{{uint addr}}/{{int addr}} in memory functions +** Relative to the specified domain (or the ""current"" domain, see above). +** Some memory events allow {{nil}} for the address. That will hook on all addresses. +* {{string domain}} in memory functions +** The name of a memory domain. The list of valid domains is returned by {{memory.getmemorydomainlist}}, or can be seen in various tools such as the Hex Editor. +** If {{domain}} is optional (i.e. the function has {{nil}} as the default argument) and you pass {{nil}} or omit the argument, the ""current"" domain is used. This can be set/gotten with {{memory.usememorydomain}}/{{memory.getcurrentmemorydomain}}. +* {{string scope}} in memory functions +** The name of a scope. The list of valid scopes is returned by {{event.availableScopes}}. +* {{int frame}} in {{movie}}/{{tastudio}} functions and others +** Frame index i.e. the number of VBlanks that have been seen. While many EmuHawk features use this concept, note that most take effect ''after'' a certain frame, but some, such as memory freezes and polling/inputs, take effect ''during'' a frame. +* {{int? controller}}/{{int? player}} in (virtual) input functions +** Player index, as seen in {{Config}} > {{Controllers...}} (starts at 1). +** If you pass {{nil}} or omit the argument, this will either indicate all players, or ""no player"" i.e. buttons on the Console. See the relevant function's documentation. +* {{luacolor line}}/{{luacolor background}} in drawing functions +** {{line}} is the ""stroke"" or ""outline"" color, {{background}} is the ""fill"" color. Both can have transparency. +* {{string surfacename}} in {{gui}} drawing functions +** Either {{""emucore""}} or {{""client""}}. +** If you pass {{nil}} or omit the argument, the ""current"" surface is used. This can be set with {{gui.use_surface}}. +* other {{string}} parameters in drawing functions +** See the relevant function's documentation. +* {{int handle}} in forms functions +** These handles are returned by {{forms.newform}} and the various control creation functions such as {{forms.checkbox}}. +* {{string guid}}/{{string name}} in event functions +** The ''name'' of a callback is an optional parameter in all the event subscription functions. The ''ID'' of a callback is what's returned by the subscription function. Multiple callbacks can share the same name, but IDs are unique. "); foreach (var library in this.Select(lf => (Name: lf.Library, Description: lf.LibraryDescription))