2021-11-25 21:58:29 +00:00
<!doctype html> < html lang = en class = "js csstransforms3d" >
< head >
< meta charset = utf-8 >
< meta name = viewport content = "width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no" >
< meta name = generator content = "Hugo 0.89.4" >
< meta name = description content >
< link rel = "shortcut icon" href = ../images/favicon.png type = image/x-icon >
< link rel = icon href = ../images/favicon.png type = image/x-icon >
< title > Callbacks :: Mesen Documentation< / title >
2021-11-25 22:14:05 +00:00
< link href = ../css/nucleus.css?1637878444 rel = stylesheet >
< link href = ../css/font-awesome.min.css?1637878444 rel = stylesheet >
< link href = ../css/hybrid.css?1637878444 rel = stylesheet >
< link href = ../css/featherlight.min.css?1637878444 rel = stylesheet >
< link href = ../css/perfect-scrollbar.min.css?1637878444 rel = stylesheet >
< link href = ../css/horsey.css?1637878444 rel = stylesheet >
< link href = ../css/theme.css?1637878444 rel = stylesheet >
< link href = ../css/hugo-theme.css?1637878444 rel = stylesheet >
< link href = ../css/custom.css?1637878444 rel = stylesheet >
< link href = ../css/theme-green.css?1637878444 rel = stylesheet >
< script src = ../js/jquery-2.x.min.js?1637878444 > < / script >
2021-11-25 21:58:29 +00:00
< style type = text/css > : root # header + # content > # left > # rlblock_left { display : none !important } < / style >
< / head >
< body data-url = ../apireference/callbacks.html >
< nav id = sidebar >
< div id = header-wrapper >
< div id = header >
< a id = logo href = ../index.html >
< img src = ../images/MesenIcon.png >
< / a >
< / div >
< div class = searchbox >
< label for = search-by > < i class = "fa fa-search" > < / i > < / label >
< input data-search-input id = search-by type = text placeholder = Search... >
< span data-search-clear > < i class = "fa fa-close" > < / i > < / span >
< / div >
2021-11-25 22:14:05 +00:00
< script type = text/javascript src = ../js/lunr.min.js?1637878444 > < / script >
< script type = text/javascript src = ../js/horsey.js?1637878444 > < / script >
2021-11-25 21:58:29 +00:00
< script type = text/javascript > var baseurl = "" < / script >
2021-11-25 22:14:05 +00:00
< script type = text/javascript src = ../js/searchjson.js?1637878444 > < / script >
< script type = text/javascript src = ../js/search.js?1637878444 > < / script >
2021-11-25 21:58:29 +00:00
< / div >
< div class = highlightable >
< ul class = topics >
< li data-nav-id = /gettingstarted.html title = "Getting Started" class = dd-item >
< a href = ../gettingstarted.html >
Getting Started
< / a >
< / li >
< li data-nav-id = /configuration.html title = Configuration class = dd-item >
< a href = ../configuration.html >
Configuration
< / a >
< ul >
< li data-nav-id = /configuration/audio.html title = "Audio Options" class = dd-item >
< a href = ../configuration/audio.html >
Audio Options
< / a >
< / li >
< li data-nav-id = /configuration/input.html title = "Input Options" class = dd-item >
< a href = ../configuration/input.html >
Input Options
< / a >
< / li >
< li data-nav-id = /configuration/video.html title = "Video Options" class = dd-item >
< a href = ../configuration/video.html >
Video Options
< / a >
< / li >
< li data-nav-id = /configuration/emulation.html title = "Emulation Options" class = dd-item >
< a href = ../configuration/emulation.html >
Emulation Options
< / a >
< / li >
< li data-nav-id = /configuration/preferences.html title = Preferences class = dd-item >
< a href = ../configuration/preferences.html >
Preferences
< / a >
< / li >
< / ul >
< / li >
< li data-nav-id = /tools.html title = Tools class = dd-item >
< a href = ../tools.html >
Tools
< / a >
< / li >
< li data-nav-id = /debugging.html title = "Debugging Tools" class = dd-item >
< a href = ../debugging.html >
Debugging Tools
< / a >
< ul >
< li data-nav-id = /debugging/debugger.html title = Debugger class = dd-item >
< a href = ../debugging/debugger.html >
Debugger
< / a >
< / li >
< li data-nav-id = /debugging/apuviewer.html title = "APU Viewer" class = dd-item >
< a href = ../debugging/apuviewer.html >
APU Viewer
< / a >
< / li >
< li data-nav-id = /debugging/assembler.html title = Assembler class = dd-item >
< a href = ../debugging/assembler.html >
Assembler
< / a >
< / li >
< li data-nav-id = /debugging/eventviewer.html title = "Event Viewer" class = dd-item >
< a href = ../debugging/eventviewer.html >
Event Viewer
< / a >
< / li >
< li data-nav-id = /debugging/memorytools.html title = "Memory Tools" class = dd-item >
< a href = ../debugging/memorytools.html >
Memory Tools
< / a >
< / li >
< li data-nav-id = /debugging/performanceprofiler.html title = "Performance Profiler" class = dd-item >
< a href = ../debugging/performanceprofiler.html >
Performance Profiler
< / a >
< / li >
< li data-nav-id = /debugging/ppuviewer.html title = "PPU Viewer" class = dd-item >
< a href = ../debugging/ppuviewer.html >
PPU Viewer
< / a >
< / li >
< li data-nav-id = /debugging/scriptwindow.html title = "Script Window" class = dd-item >
< a href = ../debugging/scriptwindow.html >
Script Window
< / a >
< / li >
< li data-nav-id = /debugging/texthooker.html title = "Text Hooker" class = dd-item >
< a href = ../debugging/texthooker.html >
Text Hooker
< / a >
< / li >
< li data-nav-id = /debugging/tracelogger.html title = "Trace Logger" class = dd-item >
< a href = ../debugging/tracelogger.html >
Trace Logger
< / a >
< / li >
< li data-nav-id = /debugging/debuggerintegration.html title = "Integration with compilers" class = dd-item >
< a href = ../debugging/debuggerintegration.html >
Integration with compilers
< / a >
< / li >
< / ul >
< / li >
< li data-nav-id = /hdpacks.html title = "HD Packs" class = dd-item >
< a href = ../hdpacks.html >
HD Packs
< / a >
< / li >
< li data-nav-id = /apireference.html title = "Lua API reference" class = "dd-item
parent">
< a href = ../apireference.html >
Lua API reference
< / a >
< ul >
< li data-nav-id = /apireference/changelog.html title = Changelog class = dd-item >
< a href = ../apireference/changelog.html >
Changelog
< / a >
< / li >
< li data-nav-id = /apireference/callbacks.html title = Callbacks class = "dd-item active" >
< a href = ../apireference/callbacks.html >
Callbacks
< / a >
< / li >
< li data-nav-id = /apireference/drawing.html title = Drawing class = dd-item >
< a href = ../apireference/drawing.html >
Drawing
< / a >
< / li >
< li data-nav-id = /apireference/emulation.html title = Emulation class = dd-item >
< a href = ../apireference/emulation.html >
Emulation
< / a >
< / li >
< li data-nav-id = /apireference/input.html title = Input class = dd-item >
< a href = ../apireference/input.html >
Input
< / a >
< / li >
< li data-nav-id = /apireference/logging.html title = Logging class = dd-item >
< a href = ../apireference/logging.html >
Logging
< / a >
< / li >
< li data-nav-id = /apireference/memoryaccess.html title = "Memory Access" class = dd-item >
< a href = ../apireference/memoryaccess.html >
Memory Access
< / a >
< / li >
< li data-nav-id = /apireference/misc.html title = Miscellaneous class = dd-item >
< a href = ../apireference/misc.html >
Miscellaneous
< / a >
< / li >
< li data-nav-id = /apireference/enums.html title = Enums class = dd-item >
< a href = ../apireference/enums.html >
Enums
< / a >
< / li >
< / ul >
< / li >
< / ul >
< section id = shortcuts >
< h3 > More< / h3 >
< ul >
< li role >
< a class = padding href = https://www.mesen.ca > < img style = vertical-align:middle src = ../images/favicon.png > < span style = display:inline;vertical-align:middle > Website< / span > < / a >
< / li >
< li role >
< a class = padding href = https://github.com/SourMesen/Mesen > < i class = "fa fa-github" > < / i > GitHub< / a >
< / li >
< / ul >
< / section >
< div id = menuspacer > < / div >
< section id = footer >
< div class = menuFooter >
< div class = donateButton > < a href = https://www.mesen.ca/Donate.php > < img src = ../images/patreon.png alt = "Become a Patron!" width = 66% height = 66% > < / a > < / div >
< div class = donateButton > < a class = bmc-button target = _blank href = https://www.mesen.ca/BuyCoffee.php > < img src = ../images/BMC-btn-logo.svg alt = Donate > < span style = margin-left:5px > Donate< / span > < / a > < / div >
Version: < b > 0.9.9< / b > < br >
Last Updated: < b > 2021-11-25< / b >
< / div >
< / section >
< / div >
< / nav >
< section id = body >
< div id = overlay > < / div >
< div class = "padding highlightable sticky-parent" >
< div class = sticky-spacer >
< div id = top-bar >
< div id = breadcrumbs itemscope itemtype = http://data-vocabulary.org/Breadcrumb >
< span id = sidebar-toggle-span >
< a href = # id = sidebar-toggle data-sidebar-toggle >
< i class = "fa fa-bars" > < / i >
< / a >
< / span >
< span id = toc-menu > < i class = "fa fa-list-alt" > < / i > < / span >
< span class = links >
< a href = ../ > Home< / a > > < a href = ../apireference.html > Lua API reference< / a > > Callbacks
< / span >
< / div >
< div class = progress >
< div class = wrapper >
< nav id = TableOfContents >
< ul >
< li > < a href = #addeventcallback > addEventCallback< / a > < / li >
< li > < a href = #removeeventcallback > removeEventCallback< / a > < / li >
< li > < a href = #addmemorycallback > addMemoryCallback< / a > < / li >
< li > < a href = #removememorycallback > removeMemoryCallback< / a > < / li >
< / ul >
< / nav >
< / div >
< / div >
< / div >
< / div >
< div id = body-inner >
< h1 > Callbacks< / h1 >
< div class = toc >
< div > < nav id = TableOfContents >
< ul >
< li > < a href = #addeventcallback > addEventCallback< / a > < / li >
< li > < a href = #removeeventcallback > removeEventCallback< / a > < / li >
< li > < a href = #addmemorycallback > addMemoryCallback< / a > < / li >
< li > < a href = #removememorycallback > removeMemoryCallback< / a > < / li >
< / ul >
< / nav > < / div >
< / div >
< h2 id = addeventcallback > addEventCallback< / h2 >
< p > < strong > Syntax< / strong > < / p >
< pre > < code > emu.addEventCallback(function, type)
< / code > < / pre >
< p > < strong > Parameters< / strong > < br >
function - A Lua function.< br >
type - < em > Enum< / em > See < a href = ../apireference/enums.html#eventtype > eventType< / a > .< / p >
< p > < strong > Return value< / strong > < br >
Returns an integer value that can be used to remove the callback by calling < a href = #removeeventcallback > removeEventCallback< / a > .< / p >
< p > < strong > Description< / strong > < br >
Registers a callback function to be called whenever the specified event occurs.< br >
The callback function receives no parameters.< / p >
< h2 id = removeeventcallback > removeEventCallback< / h2 >
< p > < strong > Syntax< / strong > < / p >
< pre > < code > emu.removeEventCallback(reference, type)
< / code > < / pre >
< p > < strong > Parameters< / strong > < br >
reference - The value returned by the call to < a href = #addeventcallback > addEventCallback< / a > .< br >
type - < em > Enum< / em > See < a href = ../apireference/enums.html#eventtype > eventType< / a > .< / p >
< p > < strong > Return value< / strong > < br >
< em > None< / em > < / p >
< p > < strong > Description< / strong > < br >
Removes a previously registered callback function.< / p >
< h2 id = addmemorycallback > addMemoryCallback< / h2 >
< p > < strong > Syntax< / strong > < / p >
< pre > < code > emu.addMemoryCallback(function, type, startAddress [, endAddress])
< / code > < / pre >
< p > < strong > Parameters< / strong > < br >
function - A Lua function.< br >
type - < em > Enum< / em > See < a href = ../apireference/enums.html#memcallbacktype > memCallbackType< / a > < br >
startAddress - < em > Integer< / em > Start of the CPU memory address range to register the callback on.< br >
endAddress - (optional) < em > Integer< / em > End of the CPU memory address range to register the callback on.< / p >
< p > < strong > Return value< / strong > < br >
Returns an integer value that can be used to remove the callback by calling < a href = #removememorycallback > removeMemoryCallback< / a > .< / p >
< p > < strong > Description< / strong > < br >
Registers a callback function to be called whenever the specified event occurs.< br >
The callback function receives 2 parameters < code > address< / code > and < code > value< / code > that correspond to the address being written to or read from, and the value that is being read/written.< / p >
< p > For reads, the callback is called < em > after< / em > the read is performed.< br >
For writes, the callback is called < em > before< / em > the write is performed.< / p >
< p > If the callback returns an integer value, it will replace the value – you can alter the results of read/write operation using this. e.g:< / p >
< div class = highlight > < pre tabindex = 0 style = color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4 > < code class = language-lua data-lang = lua > < span style = color:#66d9ef > function< / span > < span style = color:#a6e22e > writeCallback< / span > (address, value)
< span style = color:#75715e > --This sets bit 0 to 0 for all CHR RAM writes< / span >
< span style = color:#66d9ef > return< / span > value < span style = color:#f92672 > & < / span > < span style = color:#ae81ff > 0xFE< / span >
< span style = color:#66d9ef > end< / span >
emu.addMemoryCallback(writeCallback, emu.memCallbackType.ppuWrite, < span style = color:#ae81ff > 0< / span > , < span style = color:#ae81ff > 0x1FFF< / span > )
< / code > < / pre > < / div > < h2 id = removememorycallback > removeMemoryCallback< / h2 >
< p > < strong > Syntax< / strong > < / p >
< pre > < code > emu.removeMemoryCallback(reference, type, startAddress [, endAddress])
< / code > < / pre >
< p > < strong > Parameters< / strong > < br >
reference - The value returned by the call to < a href = #addmemorycallback > addMemoryCallback< / a > .< br >
type - < em > Enum< / em > See < a href = ../apireference/enums.html#memcallbacktype > memCallbackType< / a > .< br >
startAddress - < em > Integer< / em > Start of the CPU memory address range to unregister the callback from.< br >
endAddress - (optional) < em > Integer< / em > End of the CPU memory address range to unregister the callback from.< / p >
< p > < strong > Return value< / strong > < br >
< em > None< / em > < / p >
< p > < strong > Description< / strong > < br >
Removes a previously registered callback function.< / p >
< footer class = footline >
< / footer >
< / div >
< / div >
< div id = navigation >
< a class = "nav nav-prev" href = ../apireference/changelog.html title = Changelog > < i class = "fa fa-chevron-left" > < / i > < / a >
< a class = "nav nav-next" href = ../apireference/drawing.html title = Drawing style = margin-right:0 > < i class = "fa fa-chevron-right" > < / i > < / a >
< / div >
< / section >
< div style = left:-1000px;overflow:scroll;position:absolute;top:-1000px;border:none;box-sizing:content-box;height:200px;margin:0;padding:0;width:200px >
< div style = border:none;box-sizing:content-box;height:200px;margin:0;padding:0;width:200px > < / div >
< / div >
2021-11-25 22:14:05 +00:00
< script src = ../js/clipboard.min.js?1637878444 > < / script >
< script src = ../js/perfect-scrollbar.min.js?1637878444 > < / script >
< script src = ../js/perfect-scrollbar.jquery.min.js?1637878444 > < / script >
< script src = ../js/jquery.sticky-kit.min.js?1637878444 > < / script >
< script src = ../js/featherlight.min.js?1637878444 > < / script >
< script src = ../js/html5shiv-printshiv.min.js?1637878444 > < / script >
< script src = ../js/highlight.pack.js?1637878444 > < / script >
2021-11-25 21:58:29 +00:00
< script > hljs . initHighlightingOnLoad ( ) < / script >
2021-11-25 22:14:05 +00:00
< script src = ../js/modernizr.custom.71422.js?1637878444 > < / script >
< script src = ../js/learn.js?1637878444 > < / script >
< script src = ../js/hugo-learn.js?1637878444 > < / script >
< link href = ../mermaid/mermaid.css?1637878444 type = text/css rel = stylesheet >
< script src = ../mermaid/mermaid.js?1637878444 > < / script >
2021-11-25 21:58:29 +00:00
< script > mermaid . initialize ( { startOnLoad : ! 0 } ) < / script >
< / body >
< / html >