Sophie

Sophie

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

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/paulaemul.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/paulaemul.h File Reference</h1>Paula emulator (Amiga soundchip).  
<a href="#_details">More...</a>
<p>

<p>
<a href="paulaemul_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="structpaulav__t.html">paulav_t</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Paula voice information data structure.  <a href="structpaulav__t.html#_details">More...</a><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="paulaemul_8h.html#7ca6d1d5adcec61fc38e37e7fbc1be86">PL_sampling_rate</a> (unsigned int f)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set/Get sampling rate.  <a href="#7ca6d1d5adcec61fc38e37e7fbc1be86"></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="paulaemul_8h.html#a55ab12788cf3061bc67294d47a05262">PL_reset</a> (void)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Paula hardware reset.  <a href="#a55ab12788cf3061bc67294d47a05262"></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="paulaemul_8h.html#ab68c4c3c33cee08e66cfac3c8e66e6e">PL_init</a> (void)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Paula first one first initialization.  <a href="#ab68c4c3c33cee08e66cfac3c8e66e6e"></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">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="paulaemul_8h.html#5f072412b5ba9d06da6a58766d0eec2a">PL_mix</a> (<a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> *b, <a class="el" href="type68_8h.html#ed742c436da53c1080638ce6ef7d13de">u8</a> *mem68, int n)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Execute Paula emulation.  <a href="#5f072412b5ba9d06da6a58766d0eec2a"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Internal Paula emulation data.</div></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="71fdb1bd837c9b62eb3388e0bb900652"></a><!-- doxytag: member="paulaemul.h::paula" ref="71fdb1bd837c9b62eb3388e0bb900652" args="[]" -->
<a class="el" href="type68_8h.html#ed742c436da53c1080638ce6ef7d13de">u8</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="paulaemul_8h.html#71fdb1bd837c9b62eb3388e0bb900652">paula</a> []</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Paula regiter data storage. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="41b857fcf94b39fa78971bff6632c2b9"></a><!-- doxytag: member="paulaemul.h::paulav" ref="41b857fcf94b39fa78971bff6632c2b9" args="[]" -->
<a class="el" href="structpaulav__t.html">paulav_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="paulaemul_8h.html#41b857fcf94b39fa78971bff6632c2b9">paulav</a> []</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Paula voices(channel) table (4 voices). <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="paulaemul_8h.html#14d851c4f7b3b4816a04c9ed0ed3e03e">paula_dmacon</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Shadow DMACON.  <a href="#14d851c4f7b3b4816a04c9ed0ed3e03e"></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="paulaemul_8h.html#6bfdf72ae7d4df9ed56a6de01366d8c3">paula_intena</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Shadow INTENA.  <a href="#6bfdf72ae7d4df9ed56a6de01366d8c3"></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="paulaemul_8h.html#9a531532d70a08d01a53448a9fed4d0f">paula_intreq</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Shadow INTREQ.  <a href="#9a531532d70a08d01a53448a9fed4d0f"></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="paulaemul_8h.html#64b8c62e2c2a672ac5d06ef8bb58b7ee">paula_adkcon</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Shadow ADKCON.  <a href="#64b8c62e2c2a672ac5d06ef8bb58b7ee"></a><br></td></tr>
</table>
<hr><h2>Detailed Description</h2>
Paula emulator (Amiga soundchip). 
<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/07/18 </dd></dl>
<dl class="rcs" compact><dt><b>Id</b></dt><dd><a class="el" href="paulaemul_8h.html" title="Paula emulator (Amiga soundchip).">paulaemul.h</a>,v 2.0 2003/08/21 04:58:35 benjihan Exp </dd></dl>
<p>
<dl class="user" compact><dt><b>About Amiga hardware registers</b></dt><dd></dd></dl>
Amiga hardware registers could have a different address for read and write access. It is the case for DMA control register (DMACON).<p>
Registers could be (B)yte or (W)ord wide.<p>
<dl class="user" compact><dt><b>SET/CLR bit</b></dt><dd></dd></dl>
Some hardware registers work with a SET/CLEAR bit. When writing these registers the value is not copied as is. The operation depends on the value of S the most signifiant bit (#15).<ul>
<li>If S is SET then all others setted bits are setted (bitwise OR).</li><li>If S is CLEAR then all others setted bits are cleared (bitwise NAND). </li></ul>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="7ca6d1d5adcec61fc38e37e7fbc1be86"></a><!-- doxytag: member="paulaemul.h::PL_sampling_rate" ref="7ca6d1d5adcec61fc38e37e7fbc1be86" args="(unsigned int f)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int PL_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 sampling rate. 
<p>
The <a class="el" href="paulaemul_8h.html#7ca6d1d5adcec61fc38e37e7fbc1be86" title="Set/Get sampling rate.">PL_sampling_rate()</a> function set Paula emulator sampling rate. f is given in hz. If f is 0 the current replay is return.<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 (0 to get current value).</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>new sampling rate </dd></dl>

</div>
</div><p>
<a class="anchor" name="a55ab12788cf3061bc67294d47a05262"></a><!-- doxytag: member="paulaemul.h::PL_reset" ref="a55ab12788cf3061bc67294d47a05262" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int PL_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>
Paula hardware reset. 
<p>
The <a class="el" href="paulaemul_8h.html#a55ab12788cf3061bc67294d47a05262" title="Paula hardware reset.">PL_reset()</a> reset function perform a Paula reset. It performs following operations :<ul>
<li>all registers zeroed</li><li>all internal voices set to dummy 2 samples len address.</li><li>general DMA enabled</li><li>all audio DMA disabled</li><li>interrupt master enabled</li><li>all audio interrupt disbled</li></ul>
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>error-code (always success) <p>
0 Success </dd></dl>

</div>
</div><p>
<a class="anchor" name="ab68c4c3c33cee08e66cfac3c8e66e6e"></a><!-- doxytag: member="paulaemul.h::PL_init" ref="ab68c4c3c33cee08e66cfac3c8e66e6e" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int PL_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>
Paula first one first initialization. 
<p>
The <a class="el" href="paulaemul_8h.html#ab68c4c3c33cee08e66cfac3c8e66e6e" title="Paula first one first initialization.">PL_init()</a> must be call before all other PL functions. It performs following operations:<ul>
<li>Init output level (volume) table.</li><li>Hardware reset</li><li>Set replay frequency to default (44100 Hz) if not already set</li></ul>
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>error-code (always success) <p>
0 Success</dd></dl>
<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="paulaemul_8h.html#a55ab12788cf3061bc67294d47a05262" title="Paula hardware reset.">PL_reset()</a> </dd></dl>

</div>
</div><p>
<a class="anchor" name="5f072412b5ba9d06da6a58766d0eec2a"></a><!-- doxytag: member="paulaemul.h::PL_mix" ref="5f072412b5ba9d06da6a58766d0eec2a" args="(u32 *b, u8 *mem68, int n)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void PL_mix           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> *&nbsp;</td>
          <td class="paramname"> <em>b</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>mem68</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>n</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Execute Paula emulation. 
<p>
The <a class="el" href="paulaemul_8h.html#5f072412b5ba9d06da6a58766d0eec2a" title="Execute Paula emulation.">PL_mix()</a> function processes sample mixing with current internal parameters for n samples. Mixed samples are stored in a large enough (at least n) 32 bit pcm buffer pointed by b. mem68 is a pointer to the 68K memory buffer. The Paula emulator assume that this buffer is at least the size of the Amiga "chip" RAM. This implies at leat 512Kb and PCM data must be in the first 512Kb.<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>b</em>&nbsp;</td><td>Pointer to destination 32-bit data buffer </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>mem68</em>&nbsp;</td><td>Pointer to 68K memory buffer start address </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>n</em>&nbsp;</td><td>Number of sample to mix in b buffer </td></tr>
  </table>
</dl>

</div>
</div><p>
<hr><h2>Variable Documentation</h2>
<a class="anchor" name="14d851c4f7b3b4816a04c9ed0ed3e03e"></a><!-- doxytag: member="paulaemul.h::paula_dmacon" ref="14d851c4f7b3b4816a04c9ed0ed3e03e" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="paulaemul_8h.html#14d851c4f7b3b4816a04c9ed0ed3e03e">paula_dmacon</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Shadow DMACON. 
<p>

</div>
</div><p>
<a class="anchor" name="6bfdf72ae7d4df9ed56a6de01366d8c3"></a><!-- doxytag: member="paulaemul.h::paula_intena" ref="6bfdf72ae7d4df9ed56a6de01366d8c3" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="paulaemul_8h.html#6bfdf72ae7d4df9ed56a6de01366d8c3">paula_intena</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Shadow INTENA. 
<p>

</div>
</div><p>
<a class="anchor" name="9a531532d70a08d01a53448a9fed4d0f"></a><!-- doxytag: member="paulaemul.h::paula_intreq" ref="9a531532d70a08d01a53448a9fed4d0f" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="paulaemul_8h.html#9a531532d70a08d01a53448a9fed4d0f">paula_intreq</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Shadow INTREQ. 
<p>

</div>
</div><p>
<a class="anchor" name="64b8c62e2c2a672ac5d06ef8bb58b7ee"></a><!-- doxytag: member="paulaemul.h::paula_adkcon" ref="64b8c62e2c2a672ac5d06ef8bb58b7ee" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="paulaemul_8h.html#64b8c62e2c2a672ac5d06ef8bb58b7ee">paula_adkcon</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Shadow ADKCON. 
<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>