Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 2ff8806b45ba9c96e77e01e6d40e440b > files > 231

libsc68_2.2.1-devel-2.2.1-11mdv2010.0.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>sc68fordevelopers: /home/mandrake/rpm/BUILD/sc68-2.2.1/io68/ymemul.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.9 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
      <li><a href="globals.html"><span>Globals</span></a></li>
    </ul>
  </div>
</div>
<div class="contents">
<h1>/home/mandrake/rpm/BUILD/sc68-2.2.1/io68/ymemul.h File Reference</h1>YM-2149 emulator.  
<a href="#_details">More...</a>
<p>
<code>#include &quot;<a class="el" href="type68_8h_source.html">emu68/type68.h</a>&quot;</code><br>

<p>
<a href="ymemul_8h_source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structym2149__t.html">ym2149_t</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">YM-2149 internal data structure.  <a href="structym2149__t.html#_details">More...</a><br></td></tr>
<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b00f805b6cc45bf3ac684788f2502c8f"></a><!-- doxytag: member="ymemul.h::YM_BASEPERL" ref="b00f805b6cc45bf3ac684788f2502c8f" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ymemul_8h.html#b00f805b6cc45bf3ac684788f2502c8f">YM_BASEPERL</a>&nbsp;&nbsp;&nbsp;0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">YM-2149 LSB period base (canal A). <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="412e2d11e17bbb61a23eb4d301fd8d19"></a><!-- doxytag: member="ymemul.h::YM_BASEPERH" ref="412e2d11e17bbb61a23eb4d301fd8d19" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ymemul_8h.html#412e2d11e17bbb61a23eb4d301fd8d19">YM_BASEPERH</a>&nbsp;&nbsp;&nbsp;1</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">YM-2149 MSB period base (canal A). <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b8cd42148680cd4f18e8f045bdc63f39"></a><!-- doxytag: member="ymemul.h::YM_BASEVOL" ref="b8cd42148680cd4f18e8f045bdc63f39" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ymemul_8h.html#b8cd42148680cd4f18e8f045bdc63f39">YM_BASEVOL</a>&nbsp;&nbsp;&nbsp;8</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">YM-2149 volume base register (canal A). <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a90ff54bf10570acf922cf56c427e784"></a><!-- doxytag: member="ymemul.h::YM_PERL" ref="a90ff54bf10570acf922cf56c427e784" args="(N)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ymemul_8h.html#a90ff54bf10570acf922cf56c427e784">YM_PERL</a>(N)&nbsp;&nbsp;&nbsp;(YM_BASEPERL+(N)*2)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Canal N LSB period. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2a2a3105bb329491228da7126fcf495c"></a><!-- doxytag: member="ymemul.h::YM_PERH" ref="2a2a3105bb329491228da7126fcf495c" args="(N)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ymemul_8h.html#2a2a3105bb329491228da7126fcf495c">YM_PERH</a>(N)&nbsp;&nbsp;&nbsp;(YM_BASEPERH+(N)*2)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Canal N MSB periodr. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="eb59e8ddea4713b531d80c694f896b2a"></a><!-- doxytag: member="ymemul.h::YM_VOL" ref="eb59e8ddea4713b531d80c694f896b2a" args="(N)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ymemul_8h.html#eb59e8ddea4713b531d80c694f896b2a">YM_VOL</a>(N)&nbsp;&nbsp;&nbsp;(YM_BASEVOL+(N))</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Canal N volume. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b19ec820315b550c5fdae2a3af905270"></a><!-- doxytag: member="ymemul.h::YM_NOISE" ref="b19ec820315b550c5fdae2a3af905270" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ymemul_8h.html#b19ec820315b550c5fdae2a3af905270">YM_NOISE</a>&nbsp;&nbsp;&nbsp;6</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Noise period. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="cac4dc367530bfc9cbbf37c52945e3c0"></a><!-- doxytag: member="ymemul.h::YM_MIXER" ref="cac4dc367530bfc9cbbf37c52945e3c0" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ymemul_8h.html#cac4dc367530bfc9cbbf37c52945e3c0">YM_MIXER</a>&nbsp;&nbsp;&nbsp;7</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Mixer control. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ca966b638c4b7591aa3cba417eea7266"></a><!-- doxytag: member="ymemul.h::YM_ENVL" ref="ca966b638c4b7591aa3cba417eea7266" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ymemul_8h.html#ca966b638c4b7591aa3cba417eea7266">YM_ENVL</a>&nbsp;&nbsp;&nbsp;11</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Volume envelop LSB period. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="357e50ad6f557148fddb148bb2781aed"></a><!-- doxytag: member="ymemul.h::YM_ENVH" ref="357e50ad6f557148fddb148bb2781aed" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ymemul_8h.html#357e50ad6f557148fddb148bb2781aed">YM_ENVH</a>&nbsp;&nbsp;&nbsp;12</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Volume envelop MSB period. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ae22e9ae494d47da441f949bc2e7897d"></a><!-- doxytag: member="ymemul.h::YM_ENVTYPE" ref="ae22e9ae494d47da441f949bc2e7897d" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ymemul_8h.html#ae22e9ae494d47da441f949bc2e7897d">YM_ENVTYPE</a>&nbsp;&nbsp;&nbsp;13</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Volume envelop wave form. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f7a60b97f36964f5c42db07801e54ffa"></a><!-- doxytag: member="ymemul.h::YM_ENVSHAPE" ref="f7a60b97f36964f5c42db07801e54ffa" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ymemul_8h.html#f7a60b97f36964f5c42db07801e54ffa">YM_ENVSHAPE</a>&nbsp;&nbsp;&nbsp;13</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Volume envelop wave form. <br></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Initialization functions</div></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ymemul_8h.html#4ef5ab7ab450710d42acdeb124ba0ef5">YM_sampling_rate</a> (unsigned int f)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set/get output buffer replay frequency.  <a href="#4ef5ab7ab450710d42acdeb124ba0ef5"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ymemul_8h.html#4c209ab3e95ea006a4f11fae3573e68f">YM_reset</a> (void)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Yamaha-2149 hardware reset.  <a href="#4c209ab3e95ea006a4f11fae3573e68f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ymemul_8h.html#49cc9c4090bf5b57f8cb29144195a2cc">YM_init</a> (void)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Yamaha-2149 first one first initialization.  <a href="#49cc9c4090bf5b57f8cb29144195a2cc"></a><br></td></tr>
<tr><td colspan="2"><div class="groupHeader">Emulation functions</div></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ymemul_8h.html#41731ec0511613dbffc759429c64e582">YM_mix</a> (<a class="el" href="type68_8h.html#f481ec429becf42a986cf4feb23036f0">cycle68_t</a> cycle2mix)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Execute Yamaha-2149 emulation.  <a href="#41731ec0511613dbffc759429c64e582"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ymemul_8h.html#1d8d998a30732129b218cf24a8a62687">YM_get_buffer</a> (void)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Yamaha get buffer.  <a href="#1d8d998a30732129b218cf24a8a62687"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ymemul_8h.html#5cd3f770ad3c9b3d8425e6ba2008e89f">YM_subcycle</a> (<a class="el" href="type68_8h.html#f481ec429becf42a986cf4feb23036f0">cycle68_t</a> subcycle)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Change YM cycle counter base.  <a href="#5cd3f770ad3c9b3d8425e6ba2008e89f"></a><br></td></tr>
<tr><td colspan="2"><div class="groupHeader">YM-2149 register access functions</div></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ymemul_8h.html#509038ccb45b3e1c6355e77170e74ffb">YM_writereg</a> (<a class="el" href="type68_8h.html#ed742c436da53c1080638ce6ef7d13de">u8</a> reg, <a class="el" href="type68_8h.html#ed742c436da53c1080638ce6ef7d13de">u8</a> v, <a class="el" href="type68_8h.html#f481ec429becf42a986cf4feb23036f0">cycle68_t</a> cycle)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Write in YM register.  <a href="#509038ccb45b3e1c6355e77170e74ffb"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="type68_8h.html#ed742c436da53c1080638ce6ef7d13de">u8</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ymemul_8h.html#02d49bb881fe4c753175e11f8c2431fd">YM_readreg</a> (<a class="el" href="type68_8h.html#ed742c436da53c1080638ce6ef7d13de">u8</a> reg, <a class="el" href="type68_8h.html#f481ec429becf42a986cf4feb23036f0">cycle68_t</a> cycle)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Read a YM-2119 register.  <a href="#02d49bb881fe4c753175e11f8c2431fd"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ymemul_8h.html#e55e5b635f2e7ecf0cb7407db7daa3c4">YM_get_activevoices</a> (void)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get voices status.  <a href="#e55e5b635f2e7ecf0cb7407db7daa3c4"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ymemul_8h.html#72a81ebb78e03889d9c9b75270ec3314">YM_set_activeVoices</a> (int v)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set voices status.  <a href="#72a81ebb78e03889d9c9b75270ec3314"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structym2149__t.html">ym2149_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ymemul_8h.html#01437bbd37572e09fddf4dba71510828">ym</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">YM-2149 emulator internal data.  <a href="#01437bbd37572e09fddf4dba71510828"></a><br></td></tr>
</table>
<hr><h2>Detailed Description</h2>
YM-2149 emulator. 
<p>
<dl class="author" compact><dt><b>Author:</b></dt><dd>Benjamin Gerard &lt;<a href="mailto:ben@sashipa.com">ben@sashipa.com</a>&gt; </dd></dl>
<dl class="date" compact><dt><b>Date:</b></dt><dd>1998/06/24 </dd></dl>
<dl class="rcs" compact><dt><b>Id</b></dt><dd><a class="el" href="ymemul_8h.html" title="YM-2149 emulator.">ymemul.h</a>,v 2.1 2003/08/25 02:43:09 benjihan Exp </dd></dl>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="4ef5ab7ab450710d42acdeb124ba0ef5"></a><!-- doxytag: member="ymemul.h::YM_sampling_rate" ref="4ef5ab7ab450710d42acdeb124ba0ef5" args="(unsigned int f)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int YM_sampling_rate           </td>
          <td>(</td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>f</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set/get output buffer replay frequency. 
<p>
The <a class="el" href="ymemul_8h.html#4ef5ab7ab450710d42acdeb124ba0ef5" title="Set/get output buffer replay frequency.">YM_sampling_rate()</a> function set YM-2149 emulator sampling rate. If f is 0 the current sampling rate is returned without change.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>f</em>&nbsp;</td><td>Sampling rate (in Hz) in the range [SAMPLING_RATE_MIN..SAMPLING_RATE_MAX]. 0 is used to read current value.</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>sampling rate used clampled in the range [SAMPLING_RATE_MIN..SAMPLING_RATE_MAX]. </dd></dl>

</div>
</div><p>
<a class="anchor" name="4c209ab3e95ea006a4f11fae3573e68f"></a><!-- doxytag: member="ymemul.h::YM_reset" ref="4c209ab3e95ea006a4f11fae3573e68f" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int YM_reset           </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Yamaha-2149 hardware reset. 
<p>
The <a class="el" href="ymemul_8h.html#4c209ab3e95ea006a4f11fae3573e68f" title="Yamaha-2149 hardware reset.">YM_reset()</a> reset function perform a YM-2149 reset. It performs following operations :<ul>
<li>all register zeroed</li><li>mixer is set to 077 (no sound and no noise)</li><li>envelop shape is set to 0xA (/\)</li><li>control register is set to 0</li><li>internal periods counter are zeroed</li></ul>
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>error-code (always success) </dd></dl>
<dl compact><dt><b>Return values:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>Success </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="49cc9c4090bf5b57f8cb29144195a2cc"></a><!-- doxytag: member="ymemul.h::YM_init" ref="49cc9c4090bf5b57f8cb29144195a2cc" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int YM_init           </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Yamaha-2149 first one first initialization. 
<p>
The <a class="el" href="ymemul_8h.html#49cc9c4090bf5b57f8cb29144195a2cc" title="Yamaha-2149 first one first initialization.">YM_init()</a> must be call before all other YM functions. It performs following operations :<ul>
<li>Init envelop data.</li><li>Init output level (volume) table.</li><li>Hardware reset</li><li>Set replay frequency to default (44100 Hz)</li></ul>
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>error-code (always success) </dd></dl>
<dl compact><dt><b>Return values:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>Success</td></tr>
  </table>
</dl>
<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="ymemul_8h.html#4c209ab3e95ea006a4f11fae3573e68f" title="Yamaha-2149 hardware reset.">YM_reset()</a> </dd></dl>

</div>
</div><p>
<a class="anchor" name="41731ec0511613dbffc759429c64e582"></a><!-- doxytag: member="ymemul.h::YM_mix" ref="41731ec0511613dbffc759429c64e582" args="(cycle68_t cycle2mix)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int YM_mix           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="type68_8h.html#f481ec429becf42a986cf4feb23036f0">cycle68_t</a>&nbsp;</td>
          <td class="paramname"> <em>cycle2mix</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Execute Yamaha-2149 emulation. 
<p>
The <a class="el" href="ymemul_8h.html#41731ec0511613dbffc759429c64e582" title="Execute Yamaha-2149 emulation.">YM_mix()</a> function execute Yamaha-2149 emulation for a given number of cycle. Clock frequency is based on Atari-ST 68K at 8MHz. This function fill internal mix-buffer, that could be retrieve by <a class="el" href="ymemul_8h.html#1d8d998a30732129b218cf24a8a62687" title="Yamaha get buffer.">YM_get_buffer()</a> function and returns the number of sample mixed. The register update lists are flushed to perform a cycle precision emulation.<p>
<dl class="warning" compact><dt><b>Warning:</b></dt><dd>The emulator used an internal round error counter, so the return value could be different from one call to another even the number of cycle is the same.</dd></dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Number of sample in output mix-buffer</dd></dl>
<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="ymemul_8h.html#1d8d998a30732129b218cf24a8a62687" title="Yamaha get buffer.">YM_get_buffer()</a> </dd></dl>

</div>
</div><p>
<a class="anchor" name="1d8d998a30732129b218cf24a8a62687"></a><!-- doxytag: member="ymemul.h::YM_get_buffer" ref="1d8d998a30732129b218cf24a8a62687" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a>* YM_get_buffer           </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Yamaha get buffer. 
<p>
The <a class="el" href="ymemul_8h.html#1d8d998a30732129b218cf24a8a62687" title="Yamaha get buffer.">YM_get_buffer()</a> function returns a pointer to the current PCM ouput buffer. Currently it returns a static buffer so the address is always the same but this could change in the future and it is safer to call it after each <a class="el" href="ymemul_8h.html#41731ec0511613dbffc759429c64e582" title="Execute Yamaha-2149 emulation.">YM_mix()</a> function call.<p>
Output buffer samples are unsigned 16 bit machine endian values stored in a 32 bit data. Copying LSW value to the MSW transform it in a stereo sample.<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Pointer to a 32-bit value output buffer. </dd></dl>
<dl compact><dt><b>Return values:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>No output buffer (currently impossible).</td></tr>
  </table>
</dl>
<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="ymemul_8h.html#41731ec0511613dbffc759429c64e582" title="Execute Yamaha-2149 emulation.">YM_mix()</a> </dd></dl>

</div>
</div><p>
<a class="anchor" name="5cd3f770ad3c9b3d8425e6ba2008e89f"></a><!-- doxytag: member="ymemul.h::YM_subcycle" ref="5cd3f770ad3c9b3d8425e6ba2008e89f" args="(cycle68_t subcycle)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void YM_subcycle           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="type68_8h.html#f481ec429becf42a986cf4feb23036f0">cycle68_t</a>&nbsp;</td>
          <td class="paramname"> <em>subcycle</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Change YM cycle counter base. 
<p>
The <a class="el" href="ymemul_8h.html#5cd3f770ad3c9b3d8425e6ba2008e89f" title="Change YM cycle counter base.">YM_subcycle()</a> function allow to corrige the internal cycle counter to prevent overflow. Because the number of cycle could grow very quickly, it is neccessary to get it down from time to time.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>subcycle</em>&nbsp;</td><td>Number of cycle to substract to current cycle counter. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="509038ccb45b3e1c6355e77170e74ffb"></a><!-- doxytag: member="ymemul.h::YM_writereg" ref="509038ccb45b3e1c6355e77170e74ffb" args="(u8 reg, u8 v, cycle68_t cycle)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void YM_writereg           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="type68_8h.html#ed742c436da53c1080638ce6ef7d13de">u8</a>&nbsp;</td>
          <td class="paramname"> <em>reg</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="type68_8h.html#ed742c436da53c1080638ce6ef7d13de">u8</a>&nbsp;</td>
          <td class="paramname"> <em>v</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="type68_8h.html#f481ec429becf42a986cf4feb23036f0">cycle68_t</a>&nbsp;</td>
          <td class="paramname"> <em>cycle</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Write in YM register. 
<p>
The <a class="el" href="ymemul_8h.html#509038ccb45b3e1c6355e77170e74ffb" title="Write in YM register.">YM_writereg()</a> function must be call to write an YM-2149 register. The YM-2149 emulator do not really write register, but store changes in separate list depending of the register nature and dependencies. There are 3 list of update (sound, noise and envelop). This method allow to perform a very efficient cycle precise emulation. For this reason, the YM-2149 must not be read directly but toward the <a class="el" href="ymemul_8h.html#02d49bb881fe4c753175e11f8c2431fd" title="Read a YM-2119 register.">YM_readreg()</a> function.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>reg</em>&nbsp;</td><td>YM-2149 register to write </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>Value to write </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>cycle</em>&nbsp;</td><td>Cycle number this access occurs</td></tr>
  </table>
</dl>
<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="ymemul_8h.html#02d49bb881fe4c753175e11f8c2431fd" title="Read a YM-2119 register.">YM_readreg()</a>; </dd></dl>

</div>
</div><p>
<a class="anchor" name="02d49bb881fe4c753175e11f8c2431fd"></a><!-- doxytag: member="ymemul.h::YM_readreg" ref="02d49bb881fe4c753175e11f8c2431fd" args="(u8 reg, cycle68_t cycle)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="type68_8h.html#ed742c436da53c1080638ce6ef7d13de">u8</a> YM_readreg           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="type68_8h.html#ed742c436da53c1080638ce6ef7d13de">u8</a>&nbsp;</td>
          <td class="paramname"> <em>reg</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="type68_8h.html#f481ec429becf42a986cf4feb23036f0">cycle68_t</a>&nbsp;</td>
          <td class="paramname"> <em>cycle</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Read a YM-2119 register. 
<p>
The <a class="el" href="ymemul_8h.html#02d49bb881fe4c753175e11f8c2431fd" title="Read a YM-2119 register.">YM_readreg()</a> function must be call to read an YM-2149 register. For the reasons explained in <a class="el" href="ymemul_8h.html#509038ccb45b3e1c6355e77170e74ffb" title="Write in YM register.">YM_writereg()</a>, register must not be read directly.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>reg</em>&nbsp;</td><td>YM-2149 register to read </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>cycle</em>&nbsp;</td><td>Cycle number this access occurs</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>Register value at given cycle</dd></dl>
<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="ymemul_8h.html#509038ccb45b3e1c6355e77170e74ffb" title="Write in YM register.">YM_writereg()</a>; </dd></dl>

</div>
</div><p>
<a class="anchor" name="e55e5b635f2e7ecf0cb7407db7daa3c4"></a><!-- doxytag: member="ymemul.h::YM_get_activevoices" ref="e55e5b635f2e7ecf0cb7407db7daa3c4" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int YM_get_activevoices           </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get voices status. 
<p>
The <a class="el" href="ymemul_8h.html#e55e5b635f2e7ecf0cb7407db7daa3c4" title="Get voices status.">YM_get_activevoices()</a> function return activation status for each voices (canals) of the YM.<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>voices activation status. -bit#0: canal A (0:off) -bit#1: canal B (0:off) -bit#2: canal C (0:off)</dd></dl>
<dl class="see" compact><dt><b>See also:</b></dt><dd>void <a class="el" href="ymemul_8h.html#72a81ebb78e03889d9c9b75270ec3314" title="Set voices status.">YM_set_activeVoices(int v)</a>; </dd></dl>

</div>
</div><p>
<a class="anchor" name="72a81ebb78e03889d9c9b75270ec3314"></a><!-- doxytag: member="ymemul.h::YM_set_activeVoices" ref="72a81ebb78e03889d9c9b75270ec3314" args="(int v)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void YM_set_activeVoices           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>v</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set voices status. 
<p>
The YM_set_activevoices() function activates or desactivates each voices (canals) of the YM.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>new voices activation status. -bit#0: canal A (0:off) -bit#1: canal B (0:off) -bit#2: canal C (0:off)</td></tr>
  </table>
</dl>
<dl class="see" compact><dt><b>See also:</b></dt><dd>void YM_get_activeVoices(int v); </dd></dl>

</div>
</div><p>
<hr><h2>Variable Documentation</h2>
<a class="anchor" name="01437bbd37572e09fddf4dba71510828"></a><!-- doxytag: member="ymemul.h::ym" ref="01437bbd37572e09fddf4dba71510828" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structym2149__t.html">ym2149_t</a> <a class="el" href="ymemul_8h.html#01437bbd37572e09fddf4dba71510828">ym</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
YM-2149 emulator internal data. 
<p>

</div>
</div><p>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 15 03:58:05 2009 for sc68fordevelopers by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>