<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Allegro Joystick Axes messed up.. help</title>
		<link>http://www.allegro.cc/forums/view/591290</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sat, 12 May 2007 09:38:17 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Ok, Im running into issues here.. Not too big, but enough to warrant concern on my part as I want to make this work properly. When I compile and run the following code, it autodetects the joysticks, displays the button info properly including a color change for button presses, but when it displays the axis information, its wrong. </p><p>The gamepad Im using is a Saitek 2900 wireless.. Works perfect.. Has 1 8way hat, 2 sticks and 14 buttons.. The 2 sticks each have an x &amp; y axis along with a button.. When I run this, allegro tells me I have 3 sticks.. Heres what it displays:</p><p>Stick 0: stick<br />Num Axes: 0</p><p>Axis 0: x axis - 0<br />Axis 1: y axis - 0<br />Axis 2: z axis - 0       &lt;&lt;&lt;&lt;&lt;&lt;&lt; This turns out to be Stick 1(right stick), its Y axis. 0 centered, -128 to 128.. HUH??????? Why isnt this on stick 1?</p><p>Stick 1: z-rotation<br />Num Axes: 1</p><p>Axis 0: -128             &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; this is the right hand stick, its x axis.. -128 centered, 0 is to the left, 256 to the right</p><p>Stick 2: hat Switch </p><p>Everything works great except for the right stick has its Y axis listed under stick 0 with a different range of values than its x axis.. I know I could set it to use the left stick, but I wanted to use the right as well. Problem is, if it were just for me, I could code it right.. But if I want to release it, Im sure its going to read the sticks different.. </p><p>So why does stick 1 have its Axes listed as 2 different sticks in allegro?????</p><p>For what its worth, its something in allegro doing this. Ive tested this using directinput and XNA and it reads the stick and axes properly, so does the windows control panel. Allegro is the only place it shows the right stick as a z rotation. </p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="p">#include &lt;allegro.h&gt;</span></td></tr><tr><td class="number">2</td><td>&#160;</td></tr><tr><td class="number">3</td><td><span class="k1">const</span> <span class="k1">int</span> scrx <span class="k3">=</span> <span class="n">800</span><span class="k2">;</span></td></tr><tr><td class="number">4</td><td><span class="k1">const</span> <span class="k1">int</span> scry <span class="k3">=</span> <span class="n">600</span><span class="k2">;</span></td></tr><tr><td class="number">5</td><td><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>buffer <span class="k3">=</span> NULL<span class="k2">;</span> <span class="c">// Declare a BITMAP called buffer.</span></td></tr><tr><td class="number">6</td><td>&#160;</td></tr><tr><td class="number">7</td><td>&#160;</td></tr><tr><td class="number">8</td><td><span class="c">// Init Everything</span></td></tr><tr><td class="number">9</td><td><span class="c">//</span></td></tr><tr><td class="number">10</td><td><span class="c">//**************************************************************</span></td></tr><tr><td class="number">11</td><td>&#160;</td></tr><tr><td class="number">12</td><td><span class="k1">int</span> init<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span></td></tr><tr><td class="number">13</td><td><span class="k2">{</span></td></tr><tr><td class="number">14</td><td>  <span class="c">// initialize allegro library</span></td></tr><tr><td class="number">15</td><td>  <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/allegro_init" target="_blank"><span class="a">allegro_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">16</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">17</td><td>    <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</span><span class="s">"Cannot initalize Allegro.\n"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">18</td><td>    <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">20</td><td>&#160;</td></tr><tr><td class="number">21</td><td>  <span class="c">// timer, keyboard and mouse! Oh My!</span></td></tr><tr><td class="number">22</td><td>  <a href="http://www.allegro.cc/manual/install_timer" target="_blank"><span class="a">install_timer</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td>  <a href="http://www.allegro.cc/manual/install_keyboard" target="_blank"><span class="a">install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">24</td><td>  <a href="http://www.allegro.cc/manual/install_mouse" target="_blank"><span class="a">install_mouse</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">25</td><td>&#160;</td></tr><tr><td class="number">26</td><td>  <span class="c">// install joystick support</span></td></tr><tr><td class="number">27</td><td>  <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/install_joystick" target="_blank"><span class="a">install_joystick</span></a><span class="k2">(</span>JOY_TYPE_AUTODETECT<span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">28</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">29</td><td>    <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</span><span class="s">"Joystick Error: %s"</span>, <a href="http://www.allegro.cc/manual/allegro_error" target="_blank"><span class="a">allegro_error</span></a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">30</td><td>    <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</span><span class="s">"Error - Unable to initialize joystick routines..."</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">31</td><td>    <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span> <span class="c">//exit to DOS</span></td></tr><tr><td class="number">32</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">33</td><td>&#160;</td></tr><tr><td class="number">34</td><td>  <span class="c">// install sound system</span></td></tr><tr><td class="number">35</td><td>  <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/install_sound" target="_blank"><span class="a">install_sound</span></a><span class="k2">(</span>DIGI_AUTODETECT, MIDI_AUTODETECT, NULL<span class="k2">)</span><span class="k2">)</span> </td></tr><tr><td class="number">36</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">37</td><td>    <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</span><span class="s">"Sound Error: %s"</span>, <a href="http://www.allegro.cc/manual/allegro_error" target="_blank"><span class="a">allegro_error</span></a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">38</td><td>    <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</span><span class="s">"Error - Unable to initialize sound system..."</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">39</td><td>    <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span> <span class="c">//exit to DOS</span></td></tr><tr><td class="number">40</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">41</td><td>&#160;</td></tr><tr><td class="number">42</td><td>  <span class="c">//set graphics mode, trying all acceptable depths</span></td></tr><tr><td class="number">43</td><td>  <a href="http://www.allegro.cc/manual/set_color_depth" target="_blank"><span class="a">set_color_depth</span></a><span class="k2">(</span><span class="n">32</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">44</td><td>  <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_AUTODETECT_FULLSCREEN, scrx, scry, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">45</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">46</td><td>    <a href="http://www.allegro.cc/manual/set_color_depth" target="_blank"><span class="a">set_color_depth</span></a><span class="k2">(</span><span class="n">24</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">47</td><td>    <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_AUTODETECT_FULLSCREEN, scrx, scry, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">48</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">49</td><td>      <a href="http://www.allegro.cc/manual/set_color_depth" target="_blank"><span class="a">set_color_depth</span></a><span class="k2">(</span><span class="n">16</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">50</td><td>      <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_AUTODETECT_FULLSCREEN, scrx, scry, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">51</td><td>      <span class="k2">{</span></td></tr><tr><td class="number">52</td><td>        <a href="http://www.allegro.cc/manual/set_color_depth" target="_blank"><span class="a">set_color_depth</span></a><span class="k2">(</span><span class="n">15</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">53</td><td>        <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_AUTODETECT_FULLSCREEN, scrx, scry, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">54</td><td>        <span class="k2">{</span></td></tr><tr><td class="number">55</td><td>          <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</span><span class="s">"Video Error: %s.\n"</span>, <a href="http://www.allegro.cc/manual/allegro_error" target="_blank"><span class="a">allegro_error</span></a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">56</td><td>          <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">57</td><td>        <span class="k2">}</span></td></tr><tr><td class="number">58</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">59</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">60</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">61</td><td>&#160;</td></tr><tr><td class="number">62</td><td>&#160;</td></tr><tr><td class="number">63</td><td>  buffer <span class="k3">=</span> <a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span><span class="n">800</span>, <span class="n">600</span><span class="k2">)</span><span class="k2">;</span> <span class="c">//Create an empty bitmap.</span></td></tr><tr><td class="number">64</td><td>&#160;</td></tr><tr><td class="number">65</td><td>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">66</td><td><span class="k2">}</span></td></tr><tr><td class="number">67</td><td>&#160;</td></tr><tr><td class="number">68</td><td>&#160;</td></tr><tr><td class="number">69</td><td>&#160;</td></tr><tr><td class="number">70</td><td><span class="c">// mainLoop() routine</span></td></tr><tr><td class="number">71</td><td><span class="c">//</span></td></tr><tr><td class="number">72</td><td><span class="c">//**************************************************************</span></td></tr><tr><td class="number">73</td><td>&#160;</td></tr><tr><td class="number">74</td><td><span class="k1">void</span> mainLoop<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">75</td><td><span class="k2">{</span></td></tr><tr><td class="number">76</td><td>  <a href="http://www.allegro.cc/manual/poll_joystick" target="_blank"><span class="a">poll_joystick</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">77</td><td>  text_mode<span class="k2">(</span><a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">0</span>, <span class="n">0</span>, <span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">78</td><td>&#160;</td></tr><tr><td class="number">79</td><td>  <a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="n">10</span>, <span class="n">10</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">255</span>,<span class="n">255</span><span class="k2">)</span>, <span class="n">0</span>, <span class="s">"Number of Joysticks: %d"</span>, <a href="http://www.allegro.cc/manual/num_joysticks" target="_blank"><span class="a">num_joysticks</span></a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">80</td><td>&#160;</td></tr><tr><td class="number">81</td><td>  <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/num_joysticks" target="_blank"><span class="a">num_joysticks</span></a> <span class="k3">&gt;</span> <span class="n">0</span><span class="k2">)</span></td></tr><tr><td class="number">82</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">83</td><td>    <a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="n">10</span>, <span class="n">20</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">255</span>,<span class="n">255</span><span class="k2">)</span>, <span class="n">0</span>, <span class="s">"Number of sticks: %d"</span>, <a href="http://www.allegro.cc/manual/joy" target="_blank"><span class="a">joy</span></a><span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.num_sticks<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">84</td><td>    <a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="n">10</span>, <span class="n">30</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">255</span>,<span class="n">255</span><span class="k2">)</span>, <span class="n">0</span>, <span class="s">"Number of buttons: %d"</span>, <a href="http://www.allegro.cc/manual/joy" target="_blank"><span class="a">joy</span></a><span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.num_buttons<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">85</td><td>&#160;</td></tr><tr><td class="number">86</td><td>&#160;</td></tr><tr><td class="number">87</td><td>    <span class="k1">int</span> y <span class="k3">=</span> <span class="n">50</span><span class="k2">;</span></td></tr><tr><td class="number">88</td><td>    <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> n<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> n <span class="k3">&lt;</span> <a href="http://www.allegro.cc/manual/joy" target="_blank"><span class="a">joy</span></a><span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.num_sticks<span class="k2">;</span> n<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span></td></tr><tr><td class="number">89</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">90</td><td>      <a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="n">10</span>, y, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">255</span>,<span class="n">255</span><span class="k2">)</span>, <span class="n">0</span>, <span class="s">"Stick %d: %s"</span>, n, <a href="http://www.allegro.cc/manual/joy" target="_blank"><span class="a">joy</span></a><span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.stick<span class="k2">[</span>n<span class="k2">]</span>.name<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">91</td><td>      y <span class="k3">+</span><span class="k3">=</span> <span class="n">10</span><span class="k2">;</span></td></tr><tr><td class="number">92</td><td>      <a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="n">10</span>, y, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">255</span>,<span class="n">255</span><span class="k2">)</span>, <span class="n">0</span>, <span class="s">"Num Axes:  %d"</span>, n, <a href="http://www.allegro.cc/manual/joy" target="_blank"><span class="a">joy</span></a><span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.stick<span class="k2">[</span>n<span class="k2">]</span>.num_axis<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">93</td><td>      y <span class="k3">+</span><span class="k3">=</span> <span class="n">20</span><span class="k2">;</span></td></tr><tr><td class="number">94</td><td>      <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> ax <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> ax <span class="k3">&lt;</span> <a href="http://www.allegro.cc/manual/joy" target="_blank"><span class="a">joy</span></a><span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.stick<span class="k2">[</span>n<span class="k2">]</span>.num_axis<span class="k2">;</span> ax<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span></td></tr><tr><td class="number">95</td><td>      <span class="k2">{</span></td></tr><tr><td class="number">96</td><td>        <a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="n">10</span>, y, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">255</span>,<span class="n">255</span><span class="k2">)</span>, <span class="n">0</span>, <span class="s">"Axis %d: %s - %d"</span>, ax, <a href="http://www.allegro.cc/manual/joy" target="_blank"><span class="a">joy</span></a><span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.stick<span class="k2">[</span>n<span class="k2">]</span>.axis<span class="k2">[</span>ax<span class="k2">]</span>.name, <a href="http://www.allegro.cc/manual/joy" target="_blank"><span class="a">joy</span></a><span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.stick<span class="k2">[</span>n<span class="k2">]</span>.axis<span class="k2">[</span>ax<span class="k2">]</span>.pos<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">97</td><td>        y <span class="k3">+</span><span class="k3">=</span> <span class="n">10</span><span class="k2">;</span></td></tr><tr><td class="number">98</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">99</td><td>      y <span class="k3">+</span><span class="k3">=</span> <span class="n">30</span><span class="k2">;</span></td></tr><tr><td class="number">100</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">101</td><td>&#160;</td></tr><tr><td class="number">102</td><td>    <a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="n">10</span>, y, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">255</span>,<span class="n">255</span><span class="k2">)</span>, <span class="n">0</span>, <span class="s">"Buttons:"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">103</td><td>    y <span class="k3">+</span><span class="k3">=</span> <span class="n">20</span><span class="k2">;</span></td></tr><tr><td class="number">104</td><td>    <span class="k1">for</span><span class="k2">(</span> <span class="k1">int</span> n<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> n <span class="k3">&lt;</span> <a href="http://www.allegro.cc/manual/joy" target="_blank"><span class="a">joy</span></a><span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.num_buttons<span class="k2">;</span> n<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span></td></tr><tr><td class="number">105</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">106</td><td>      <span class="k1">if</span><span class="k2">(</span> <a href="http://www.allegro.cc/manual/joy" target="_blank"><span class="a">joy</span></a><span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.button<span class="k2">[</span>n<span class="k2">]</span>.b<span class="k2">)</span></td></tr><tr><td class="number">107</td><td>      <span class="k2">{</span></td></tr><tr><td class="number">108</td><td>        <a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="n">10</span>, y, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span>, <span class="n">0</span>, <span class="s">"Button %d: %s"</span>, n, <a href="http://www.allegro.cc/manual/joy" target="_blank"><span class="a">joy</span></a><span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.button<span class="k2">[</span>n<span class="k2">]</span>.name<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">109</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">110</td><td>      <span class="k1">else</span></td></tr><tr><td class="number">111</td><td>      <span class="k2">{</span></td></tr><tr><td class="number">112</td><td>        <a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="n">10</span>, y, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">255</span>,<span class="n">255</span><span class="k2">)</span>, <span class="n">0</span>, <span class="s">"Button %d: %s"</span>, n, <a href="http://www.allegro.cc/manual/joy" target="_blank"><span class="a">joy</span></a><span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.button<span class="k2">[</span>n<span class="k2">]</span>.name<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">113</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">114</td><td>      y <span class="k3">+</span><span class="k3">=</span> <span class="n">10</span><span class="k2">;</span></td></tr><tr><td class="number">115</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">116</td><td>&#160;</td></tr><tr><td class="number">117</td><td>&#160;</td></tr><tr><td class="number">118</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">119</td><td>&#160;</td></tr><tr><td class="number">120</td><td><span class="k2">}</span></td></tr><tr><td class="number">121</td><td>&#160;</td></tr><tr><td class="number">122</td><td>&#160;</td></tr><tr><td class="number">123</td><td>&#160;</td></tr><tr><td class="number">124</td><td><span class="c">// Main() routine</span></td></tr><tr><td class="number">125</td><td><span class="c">//</span></td></tr><tr><td class="number">126</td><td><span class="c">//**************************************************************</span></td></tr><tr><td class="number">127</td><td>&#160;</td></tr><tr><td class="number">128</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">char</span> <span class="k3">*</span>argv<span class="k2">[</span><span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">129</td><td><span class="k2">{</span></td></tr><tr><td class="number">130</td><td>  init<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">131</td><td>&#160;</td></tr><tr><td class="number">132</td><td>  <span class="k1">while</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/keypressed" target="_blank"><span class="a">keypressed</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">133</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">134</td><td>    mainLoop<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">135</td><td>    <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, <span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">800</span>,<span class="n">600</span><span class="k2">)</span><span class="k2">;</span><span class="c">//Draw the buffer to the screen </span></td></tr><tr><td class="number">136</td><td>    <a href="http://www.allegro.cc/manual/clear_bitmap" target="_blank"><span class="a">clear_bitmap</span></a><span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span> <span class="c">// Clear the contents of the buffer bitmap </span></td></tr><tr><td class="number">137</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">138</td><td>&#160;</td></tr><tr><td class="number">139</td><td>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">140</td><td>  <span class="c">//Allegro will automatically deinitalize itself on exit</span></td></tr><tr><td class="number">141</td><td><span class="k2">}</span></td></tr><tr><td class="number">142</td><td><a href="http://www.allegro.cc/manual/END_OF_MAIN" target="_blank"><span class="a">END_OF_MAIN</span></a><span class="k2">(</span><span class="k2">)</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (cdxrd)</author>
		<pubDate>Sun, 06 May 2007 09:15:27 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I remember there was a thread about Allegro messing up the stick&lt;-&gt;axis relation a while ago. I believe it was found to be a bug in the library, but I can&#39;t remember if anyone got to fix it.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jakub Wasilewski)</author>
		<pubDate>Sun, 06 May 2007 16:05:31 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>When you&#39;re working with joysticks it&#39;s best not to assume anything and to always allow the user to configure their joystick to your game. There have been a number of games out there which I haven&#39;t been able to play with my joystick simply because it lacked decent joystick configuration routines.</p><p>The default joystick structure in DirectX doesn&#39;t separate sticks and axises like Allegro does. It basically has room for six standard axises, four hats, two slider axises, and 32 buttons, for each joystick. To detect more than that is seriously complicated and I doubt any of the Allegro devs would&#39;ve done so.</p><p>But what Allegro does is unify all this data into sticks and axises per stick. I believe Allegro separates them as follows (though I haven&#39;t looked to confirm this):</p><p>Stick 0: 3 Standard Axises, First Slider<br />Stick 1: 3 Rotational Axises, Second Slider<br />Stick 2+: Hats 0+<br />(If there&#39;s no rotational or second slider, hats start on Stick 1.)</p><p>My MS Precision Pro joystick (1 twistable stick, 1 throttle, 1 hat, 9 buttons) comes up as:</p><p>Stick 0: X, Y and Throttle<br />Stick 1: Stick Twist<br />Stick 2: Hat</p><p>--- Kris Asick (Gemini)<br />--- <a href="http://www.pixelships.com">http://www.pixelships.com</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kris Asick)</author>
		<pubDate>Sun, 06 May 2007 21:49:43 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Ok, its just driving me nuts that one axis of stick 1 shows as stick 0&#39;s 3rd axis, while the other axis actually shows as stick 1.. guess I wont use the right stick.. just the left, hat and buttons maybe.. </p><p>I would like to have it configurable so that if I have a config screen, I can tell the player to press their UP ont he gamepad and find a way to map that.. but Im not really quite sure how to go about that..
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (cdxrd)</author>
		<pubDate>Sun, 06 May 2007 23:30:30 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>
This is an old problem. I pointed it out a few times, but I don&#39;t think there are any active windows developers to fix it anymore.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Richard Phipps)</author>
		<pubDate>Sun, 06 May 2007 23:50:30 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>If it&#39;s any consolation, the results you get are consistent for any dual-shock style gamepad running on Windows.  You can hard-code the axes you have and it will work for many people.</p><p>On the other hand, a configuration screen will be universally useful, both for when people use a non-dual shock, aren&#39;t on Windows, or somebody fixes this bug.  I keep meaning to code the GUI to do this but I haven&#39;t got around to it yet, sorry <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matt Smith)</author>
		<pubDate>Tue, 08 May 2007 22:22:20 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Does either JOY_TYPE_DIRECTX or JOY_TYPE_WIN32 work better?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Tue, 08 May 2007 22:37:57 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I will have to try both, I put it down for a while.. time to pick it up again.. Ill check on this and edit this post here shortly.. </p><p>Same results either way I go. I know Ive played with SDL&#39;s joystick routines before and it detected alright.. I may have to hardcode it in somehow, its just gonna be odd.. =(  Problem Im gonna have is my stick 2 X axis reads from 0 - 256, while the Y axis reads -128 to 128.. grrrrr....</p><p>I suppose stick 2 really isnt going to be that important tho...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (cdxrd)</author>
		<pubDate>Sat, 12 May 2007 09:38:17 +0000</pubDate>
	</item>
</rss>
