<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Jitter while moving</title>
		<link>http://www.allegro.cc/forums/view/618904</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Fri, 22 Mar 2024 12:06:48 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I wrote a very simple Allegro app that spawns a circle (filled with a solid color, no texture), detects if that circle is selected and, if it is, moves it to another spot based on a mouse click. </p><p>If I set the moving speed to a low value, moving works pretty nicely. But the more I increase the speed, the more I get this jitter/oscillation of the circle around the destination point. And the program is unable to continue because the circle didn&#39;t reach it&#39;s destination and it&#39;s flag is left unset, therefore clogging the whole program.</p><p>Any suggestions on why is this happening? First thoughts that came to mind are screen tearing and/or vector normalization but I&#39;m unsure.</p><p>Any advice is highly appreciated as I&#39;ve started game dev pretty recently.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ismqdb)</author>
		<pubDate>Tue, 12 Mar 2024 23:03:12 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Might need to increase checks per move.</p><p>Collision on moving objects is not so simple. Most time you divide the distance by n increments. If too jittery, </p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="c">// change in distance from current position to final position</span>
<span class="number">  2</span><span class="k1">int</span> delta_x, delta_y<span class="k2">;</span>
<span class="number">  3</span>
<span class="number">  4</span><span class="c">// number of increments</span>
<span class="number">  5</span><span class="k1">int</span> n<span class="k2">;</span>
<span class="number">  6</span>
<span class="number">  7</span><span class="c">// amount to move all objects per increment;</span>
<span class="number">  8</span><span class="k1">int</span> increment_x <span class="k3">=</span> delta_x <span class="k3">/</span> n, increment_y <span class="k3">=</span> delta_y <span class="k3">/</span> n<span class="k2">;</span>
<span class="number">  9</span>
<span class="number"> 10</span><span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> n<span class="k2">;</span> <span class="k3">+</span><span class="k3">+</span>i<span class="k2">)</span>
<span class="number"> 11</span><span class="k2">{</span>
<span class="number"> 12</span>    move_object<span class="k2">(</span>increment_x, increment_y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 13</span>
<span class="number"> 14</span>    <span class="k1">if</span> collision<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 15</span>    <span class="k2">{</span>
<span class="number"> 16</span>        <span class="c">// move back</span>
<span class="number"> 17</span>        move_object<span class="k2">(</span><span class="k3">-</span>increment_x, <span class="k3">-</span>increment_y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 18</span>    <span class="k2">}</span>
<span class="number"> 19</span><span class="k2">}</span>
</div></div><p>

If multiple moving objects then you need to take each object and increment based on each object&#39;s velocity / n. If still too jittery, then increase n.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (DanielH)</author>
		<pubDate>Wed, 13 Mar 2024 01:12:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The issue of never reaching your destination might also hint a problem with floating point precision (if you&#39;re using floating point math, that is).</p><p>It&#39;s hard to tell without code -- care to share your sample?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Indeterminatus)</author>
		<pubDate>Wed, 13 Mar 2024 12:52:10 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>@DanielH Good idea. I&#39;ve implemented it and moving works perfectly now. When I increase the speed of the move, it always arrives to its destination. </p><p>However, the jitter it still there. For example, if I take the same circle and let it react to key press to move on x or y axis, it moves but it&#39;s jittery. When it starts, it travels lets say 20% of the distance, slows down and then passes other 80% consistently, all while I&#39;m holding one arrow key and not doing anything else. Random example but you get the idea, inconsistent.</p><p>I&#39;m assuming it could be something related to framerate (I&#39;m using 60 fps rn). For example, I&#39;m thinking I could iterate [0-fps] and move by (axis offset/fps) distance.</p><p>@Indeterminatus Nothing special there but sure, here it is, before the adjustments that implement steps.</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">bool</span> Vec3::translate<span class="k2">(</span><span class="k1">double</span> a, <span class="k1">double</span> b, <span class="k1">double</span> c<span class="k2">)</span><span class="k2">{</span>
    this-&gt;x <span class="k3">+</span><span class="k3">=</span> a<span class="k2">;</span>
    this-&gt;y <span class="k3">+</span><span class="k3">=</span> b<span class="k2">;</span>
    this-&gt;z <span class="k3">+</span><span class="k3">=</span> c<span class="k2">;</span>
    <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ismqdb)</author>
		<pubDate>Wed, 13 Mar 2024 16:58:41 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Need to see some code (more code than the translate function). Could be many things.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (DanielH)</author>
		<pubDate>Thu, 14 Mar 2024 01:34:09 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Sure. </p><p>Main loop is standard event handling. </p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="k1">switch</span><span class="k2">(</span>primitives.event.type<span class="k2">)</span><span class="k2">{</span>
<span class="number">  2</span>            <span class="k1">case</span> ALLEGRO_EVENT_TIMER:
<span class="number">  3</span>                <span class="k1">if</span><span class="k2">(</span>primitives.key<span class="k2">[</span>ALLEGRO_KEY_UP<span class="k2">]</span><span class="k2">)</span><span class="k2">{</span>
<span class="number">  4</span>                    circle.translate<span class="k2">(</span><span class="n">0</span>, <span class="k3">-</span><span class="n">10</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  5</span>                <span class="k2">}</span>
<span class="number">  6</span>
<span class="number">  7</span>                <span class="k1">if</span><span class="k2">(</span>primitives.key<span class="k2">[</span>ALLEGRO_KEY_DOWN<span class="k2">]</span><span class="k2">)</span><span class="k2">{</span>
<span class="number">  8</span>                    circle.translate<span class="k2">(</span><span class="n">0</span>, <span class="k3">+</span><span class="n">10</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  9</span>                <span class="k2">}</span>
<span class="number"> 10</span>
<span class="number"> 11</span>                <span class="k1">if</span><span class="k2">(</span>primitives.key<span class="k2">[</span>ALLEGRO_KEY_LEFT<span class="k2">]</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 12</span>                    circle.translate<span class="k2">(</span><span class="k3">-</span><span class="n">10</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 13</span>                <span class="k2">}</span>
<span class="number"> 14</span>
<span class="number"> 15</span>                <span class="k1">if</span><span class="k2">(</span>primitives.key<span class="k2">[</span>ALLEGRO_KEY_RIGHT<span class="k2">]</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 16</span>                    circle.translate<span class="k2">(</span><span class="k3">+</span><span class="n">10</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 17</span>                <span class="k2">}</span>
<span class="number"> 18</span>
<span class="number"> 19</span>                <span class="k1">if</span><span class="k2">(</span>primitives.key<span class="k2">[</span>ALLEGRO_KEY_ESCAPE<span class="k2">]</span><span class="k2">)</span>
<span class="number"> 20</span>                    primitives.done <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 21</span>
<span class="number"> 22</span>                <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> ALLEGRO_KEY_MAX<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 23</span>                    primitives.key<span class="k2">[</span>i<span class="k2">]</span> <span class="k3">&amp;</span><span class="k3">=</span> KEY_SEEN<span class="k2">;</span>
<span class="number"> 24</span>
<span class="number"> 25</span>                primitives.redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 26</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 27</span>
<span class="number"> 28</span>            <span class="k1">case</span> ALLEGRO_EVENT_MOUSE_BUTTON_DOWN:
<span class="number"> 29</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 30</span>
<span class="number"> 31</span>            <span class="k1">case</span> ALLEGRO_EVENT_KEY_DOWN:
<span class="number"> 32</span>                primitives.key<span class="k2">[</span>primitives.event.keyboard.keycode<span class="k2">]</span> <span class="k3">=</span> KEY_SEEN <span class="k3">|</span> KEY_RELEASED<span class="k2">;</span>
<span class="number"> 33</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 34</span>            <span class="k1">case</span> ALLEGRO_EVENT_KEY_UP:
<span class="number"> 35</span>                primitives.key<span class="k2">[</span>primitives.event.keyboard.keycode<span class="k2">]</span> <span class="k3">&amp;</span><span class="k3">=</span> KEY_RELEASED<span class="k2">;</span>
<span class="number"> 36</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 37</span>
<span class="number"> 38</span>            <span class="k1">case</span> ALLEGRO_EVENT_DISPLAY_CLOSE:
<span class="number"> 39</span>                primitives.done <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 40</span>                <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 41</span>        <span class="k2">}</span>
</div></div><p>



Circle.cpp handles instantiation, clipping to screen and rendering. </p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="p">#include "Circle.hpp"</span>
<span class="number">  2</span>
<span class="number">  3</span>Circle::Circle<span class="k2">(</span>Vec3 pos, <span class="k1">double</span> rad<span class="k2">)</span><span class="k2">{</span>
<span class="number">  4</span>    <span class="k1">if</span><span class="k2">(</span>rad <span class="k3">&lt;</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span>
<span class="number">  5</span>        <span class="k1">throw</span> std::invalid_argument<span class="k2">(</span><span class="s">"Circle radius can't be negative or zero."</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  6</span>
<span class="number">  7</span>    this-&gt;position <span class="k3">=</span> pos<span class="k2">;</span>
<span class="number">  8</span>    this-&gt;radius <span class="k3">=</span> rad<span class="k2">;</span>
<span class="number">  9</span>
<span class="number"> 10</span>    this-&gt;top <span class="k3">=</span>     Vec3<span class="k2">{</span>pos.X<span class="k2">(</span><span class="k2">)</span>, pos.Y<span class="k2">(</span><span class="k2">)</span> <span class="k3">-</span> rad, <span class="n">0</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 11</span>    this-&gt;bottom <span class="k3">=</span>  Vec3<span class="k2">{</span>pos.X<span class="k2">(</span><span class="k2">)</span>, pos.Y<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> rad, <span class="n">0</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 12</span>    this-&gt;left <span class="k3">=</span>    Vec3<span class="k2">{</span>pos.X<span class="k2">(</span><span class="k2">)</span> <span class="k3">-</span> rad, pos.Y<span class="k2">(</span><span class="k2">)</span>, <span class="n">0</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 13</span>    this-&gt;right <span class="k3">=</span>   Vec3<span class="k2">{</span>pos.X<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> rad, pos.Y<span class="k2">(</span><span class="k2">)</span>, <span class="n">0</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 14</span><span class="k2">}</span>
<span class="number"> 15</span>
<span class="number"> 16</span><span class="k1">bool</span> Circle::isMoveAllowed<span class="k2">(</span><span class="k1">double</span> a, <span class="k1">double</span> b, <span class="k1">double</span> c<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 17</span>    <span class="k1">if</span><span class="k2">(</span><span class="k2">(</span>this-&gt;left.X<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> a<span class="k2">)</span> <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span>
<span class="number"> 18</span>        <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 19</span>
<span class="number"> 20</span>    <span class="k1">if</span><span class="k2">(</span><span class="k2">(</span>this-&gt;right.X<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> a<span class="k2">)</span> <span class="k3">&gt;</span> screenWidth<span class="k2">)</span>
<span class="number"> 21</span>        <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 22</span>
<span class="number"> 23</span>    <span class="k1">if</span><span class="k2">(</span><span class="k2">(</span>this-&gt;top.Y<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> b<span class="k2">)</span> <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span>
<span class="number"> 24</span>        <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 25</span>
<span class="number"> 26</span>    <span class="k1">if</span><span class="k2">(</span><span class="k2">(</span>this-&gt;bottom.Y<span class="k2">(</span><span class="k2">)</span> <span class="k3">+</span> b<span class="k2">)</span> <span class="k3">&gt;</span> screenHeight<span class="k2">)</span>
<span class="number"> 27</span>        <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 28</span>
<span class="number"> 29</span>    <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 30</span><span class="k2">}</span>
<span class="number"> 31</span>
<span class="number"> 32</span><span class="k1">bool</span> Circle::translate<span class="k2">(</span><span class="k1">double</span> a, <span class="k1">double</span> b, <span class="k1">double</span> c<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 33</span>    <span class="k1">if</span><span class="k2">(</span>this-&gt;isMoveAllowed<span class="k2">(</span>a, b, c<span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 34</span>        this-&gt;position.translate<span class="k2">(</span>a, b, c<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 35</span>        this-&gt;top.translate<span class="k2">(</span>a, b, c<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 36</span>        this-&gt;bottom.translate<span class="k2">(</span>a, b, c<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 37</span>        this-&gt;left.translate<span class="k2">(</span>a, b, c<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 38</span>        this-&gt;right.translate<span class="k2">(</span>a, b, c<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 39</span>        <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 40</span>    <span class="k2">}</span>
<span class="number"> 41</span>
<span class="number"> 42</span>    <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 43</span><span class="k2">}</span>
<span class="number"> 44</span>
<span class="number"> 45</span><span class="k1">bool</span> Circle::drawItself<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 46</span>    <a href="http://www.allegro.cc/manual/al_draw_filled_circle"><span class="a">al_draw_filled_circle</span></a><span class="k2">(</span>this-&gt;position.X<span class="k2">(</span><span class="k2">)</span>, this-&gt;position.Y<span class="k2">(</span><span class="k2">)</span>, this-&gt;radius, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</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="k2">)</span><span class="k2">;</span>
<span class="number"> 47</span>    <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 48</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ismqdb)</author>
		<pubDate>Fri, 15 Mar 2024 18:37:59 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Your code doesn&#39;t match what you first said. </p><p>Is it only jittering when it reaches destination or always?</p><p>If only destination, I would suspect simple rounding issues. You have to account for that.</p><p>If distance from circle to destination is &lt; amount I move in one step then set circle to destination. Other wise you overshoot and then have to rebound and overshoot and rebound .....
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (DanielH)</author>
		<pubDate>Fri, 15 Mar 2024 22:49:53 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Yeah, well, I guess this isn&#39;t really for me. I&#39;ll probably go back and do embedded in C. </p><p>Thank you for your help though. All the best. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ismqdb)</author>
		<pubDate>Sun, 17 Mar 2024 00:36:46 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Don&#39;t give up just yet. You have to understand the nature of graphics, screens, and pixels.</p><p>If you&#39;re moving something by 10 every time a timer fires say at 60 times per second, that&#39;s 600 pixels per second. That&#39;s pretty fast. If you move an object more than a pixel at a time, it will appear to jump or teleport.</p><p>Jitter could also be caused by vsync, but more often it is tearing that is caused.</p><p>You can try drawing a trail behind the circle and attempt to &#39;smear&#39; or &#39;wipe&#39; the image along it&#39;s path, but that might not look so good.</p><p>If your circle is moving back and forth between two adjacent pixels (jittering?) then it is indeed a floating point issue. I can&#39;t tell in your code if those are floating point xyz positions or not.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Tue, 19 Mar 2024 18:31:58 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hello Edgar, </p><p>I&#39;m not giving up because I can&#39;t solve some issue, be it a graphics problem or not. I have solved many complex issues before. The thing is, I got fed up with C++ and with OOP in general. This is something I wanted to ask either on Reddit or StackOverflow. Ask for some advice, and I&#39;ll probably do it at some point.</p><p>I really like C&#39;s simplicity. C++ has much more functionality, but I dislike it. I don&#39;t like its complexity; it&#39;s gotchas and 300 different ways of doing things. </p><p>I like simple functions and simple structures, i.e., C. The only things I used in C++ that are not in C are private struct/class members and class member functions. </p><p>I genuinely wanted to learn C++ and OOP. I devoted 1–1.5 years to learning it every day. Yet, when I was learning templates, STL, and (god forbid) design patterns, I had the urge to vomit because of their convoluted nature and attitude of &quot;do this, is good&quot; and, after a year or two, don&#39;t do that, it&#39;s bad; do this instead (e.g., malloc -&gt; new -&gt; smart pointers).</p><p>I then lost a job because of this. I did 80% of the project myself in the OOP language, using light abstractions and mostly simple functions. Simple, straightforward, and easy to test and change. It works. Yet, a person comes to the project after 2 months and wants to rewrite everything so it fits into that nice, round OOP <span class="cuss"><span>bull<span class="cuss"><span>shit</span></span></span></span>. When I objected, they kicked me out.</p><p>That&#39;s the reason I want to call it a day. I&#39;m just fed up with all that OOP crap. At least, if I go and do development in C, I won&#39;t have to deal with it. That Linus quote about C++ is always hovering above my head. And I don&#39;t think I can find a job with C in game development; it is mostly C++ and, to some degree, C#.</p><p>Sorry for the long post.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ismqdb)</author>
		<pubDate>Wed, 20 Mar 2024 14:15:35 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Good sir, I&#39;m sorry you lost your job over OOP garbage. Simpler design always wins in my opinion. And C++ isn&#39;t about doing everything the C++ way. You&#39;re perfectly free to keep programming C++ in &quot;C&quot;. Inheritance is really the best part of C++, STL is useful so you don&#39;t have to keep writing your own data types, and design patterns are about writing reusable effective code. If you want to give it another go, try reading Scott Meyer&#39;s Effective C++ book. It will help you see some of the more obscure gotchas of the language and how to easily deal with them. It&#39;s not nearly as dense as anything by Byarne Stroustrup himself.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Wed, 20 Mar 2024 18:25:44 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Well, to be honest, it looks like you&#39;re reading my mind. I did learn C++ from Bjarne&#39;s books.</p><p>Me losing a job was a bit rough, but the way I see it, it might be a blessing in disguise.</p><p>I understand the rationale behind STL, design patterns, and similar, but I don&#39;t think it&#39;s a good language (or not for me, at least). It&#39;s a cacophony of different techniques and approaches; it&#39;s gargantuan, and it will probably be replaced by some other language since it refuses to break compatibility. I try not to reinvent the wheel, but if I&#39;m learning some algorithm, I want to focus on its functionality and not be anxious about something exploding into my face.</p><p>At this point, I&#39;m more interested in learning assembly and (maybe) Rust. At least, when I&#39;m working in assembly (or C), my mind is at peace.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ismqdb)</author>
		<pubDate>Thu, 21 Mar 2024 22:12:20 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Assembly!!! It&#39;s a challenge and I like challenges. Which machine would you want to learn? Just curious.</p><p>I took a whole semester at college where we programmed for the Motorola 68HC11 microprocessor. That was one of my more enjoyable classes.</p><p>As opposed to my current &quot;fun&quot; project. I&#39;m working on writing an instruction decoder/processer for the TMS9900 microprocessor. This one is more challenging. It&#39;s one step in the larger project: a emulator/disassembler for the TI994a computer.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (DanielH)</author>
		<pubDate>Thu, 21 Mar 2024 23:43:53 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Damn, that sounds interesting. I&#39;d love to hear more about that. </p><p>The first time I got in contact with assembly was when I saw a guy writing a game using a Motorola 68K on Computerphile. I found some kind of sandbox for it (easy 68k) and wrote a couple of programs for it. </p><p>After that, I left it and focused more on C/C++. As the time passed, I wondered how certain C/C++ constructs translated to assembly. I started disassembling code at first, and after that, I dived in fully to learn it. </p><p>Architecture is x86-64; first I did it in nasm, but I didn&#39;t like the syntax of it and switched to GAS.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ismqdb)</author>
		<pubDate>Fri, 22 Mar 2024 12:06:48 +0000</pubDate>
	</item>
</rss>
