<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Gbagamejam2021 on jono shields</title>
    <link>https://jonoshields.com/tags/gbagamejam2021/</link>
    <description>Recent content in Gbagamejam2021 on jono shields</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Wed, 07 Jul 2021 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://jonoshields.com/tags/gbagamejam2021/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Feline - Finishing Touches</title>
      <link>https://jonoshields.com/post/finishing-touches/</link>
      <pubDate>Wed, 07 Jul 2021 00:00:00 +0000</pubDate>
      <guid>https://jonoshields.com/post/finishing-touches/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;gbagamejam2021--making-a-game-for-the-gameboy-advance&#34;&gt;GBAGameJam2021 | Making a game for the Gameboy Advance&lt;/h2&gt;&#xA;&lt;h3 id=&#34;day-88&#34;&gt;Day 88&lt;/h3&gt;&#xA;&lt;p&gt;It is the last week of the jam and I am cramming like a high school student before exams.&lt;/p&gt;&#xA;&lt;h2 id=&#34;a-new-level&#34;&gt;A New Level&lt;/h2&gt;&#xA;&lt;p&gt;I really had to get my a** into g.&lt;/p&gt;&#xA;&lt;p&gt;So I took my dungeon tile sheet, added a filter or three and threw some rocks in there.&lt;/p&gt;&#xA;&lt;img src=&#34;https://jonoshields.com/img/tilemap_other.bmp&#34; class=&#34;pixelated&#34;/&gt;&#xA;&lt;p&gt;Throw in a background and&amp;hellip;&lt;/p&gt;&#xA;&lt;img src=&#34;https://jonoshields.com/img/feline-2.png&#34; class=&#34;pixelated&#34;/&gt;&#xA;&lt;h2 id=&#34;and-a-new-enemy&#34;&gt;And a New Enemy&lt;/h2&gt;&#xA;&lt;p&gt;I don&amp;rsquo;t want to share too much about the story behind this enemy. But I wanted to make something that was a step up in difficulty from the slimes and bats.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using HBlank to add Parallax</title>
      <link>https://jonoshields.com/post/title-screen/</link>
      <pubDate>Wed, 30 Jun 2021 00:00:00 +0000</pubDate>
      <guid>https://jonoshields.com/post/title-screen/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;gbagamejam2021--making-a-game-for-the-gameboy-advance&#34;&gt;GBAGameJam2021 | Making a game for the Gameboy Advance&lt;/h2&gt;&#xA;&lt;h3 id=&#34;day-81&#34;&gt;Day 81&lt;/h3&gt;&#xA;&lt;p&gt;At first I thought that adding a title screen would be boring, but not when you discover how to use HBlank effects.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;What is an HBlank Effect? Well, when the gba draws to the screen it draws in rows, starting at the top and going down. We can make code run in between these rows. Find more detailed info &lt;a href=&#34;https://www.coranac.com/tonc/text/video.htm#sec-blanks&#34;&gt;here&lt;/a&gt; (this is genuinely very much worth the read if you plan to develop for GBA).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Adding more lore to Feline</title>
      <link>https://jonoshields.com/post/day-74/</link>
      <pubDate>Wed, 23 Jun 2021 00:00:00 +0000</pubDate>
      <guid>https://jonoshields.com/post/day-74/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;gbagamejam2021--making-a-game-for-the-gameboy-advance&#34;&gt;GBAGameJam2021 | Making a game for the Gameboy Advance&lt;/h2&gt;&#xA;&lt;h3 id=&#34;day-74&#34;&gt;Day 74&lt;/h3&gt;&#xA;&lt;p&gt;Unfortunately I haven&amp;rsquo;t had much time over the last few weeks to work my GBAJam2021 entry. And I realized today that the deadline is approaching very quickly.&lt;/p&gt;&#xA;&lt;p&gt;In the last post I talked about how important narrative was to me in this game.&lt;/p&gt;&#xA;&lt;p&gt;I decided to add stone tablets dotted around the level that the player could stop and read if they wanted.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mapping out an MVP for Feline</title>
      <link>https://jonoshields.com/post/mapping-out-mvp/</link>
      <pubDate>Tue, 01 Jun 2021 00:00:00 +0000</pubDate>
      <guid>https://jonoshields.com/post/mapping-out-mvp/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;gbagamejam2021--making-a-game-for-the-gameboy-advance&#34;&gt;GBAGameJam2021 | Making a game for the Gameboy Advance&lt;/h2&gt;&#xA;&lt;h3 id=&#34;day-52&#34;&gt;Day 52&lt;/h3&gt;&#xA;&lt;p&gt;In a previous post I talked a little about how important it is to make a plan. You may be thinking &amp;ldquo;well if I don&amp;rsquo;t have a plan, it is impossible for things to not go as planned&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;Well yes. Technically this statement is correct. But it also means that when things don&amp;rsquo;t work, it is hard to pinpoint why. Plans do much more than that though, they create focus and help you to make decisions.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Jono has a Plan</title>
      <link>https://jonoshields.com/post/jono-has-a-plan/</link>
      <pubDate>Fri, 21 May 2021 00:00:00 +0000</pubDate>
      <guid>https://jonoshields.com/post/jono-has-a-plan/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;gbagamejam2021--making-a-game-for-the-gameboy-advance&#34;&gt;GBAGameJam2021 | Making a game for the Gameboy Advance&lt;/h2&gt;&#xA;&lt;h3 id=&#34;day-44&#34;&gt;Day 44&lt;/h3&gt;&#xA;&lt;p&gt;I read a really good post-mortem the other day. One of my key takeaways was simply to have a plan. Not so that you can stick to it, you update it as you go. But so that when things go wrong you can look back and try to figure out why. Like &amp;ldquo;oh, I shouldn&amp;rsquo;t have left the music till the last week&amp;rdquo; ~ probably Jono in a month.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Attacking Animations and Enemies</title>
      <link>https://jonoshields.com/post/player-attacking/</link>
      <pubDate>Mon, 17 May 2021 00:00:00 +0000</pubDate>
      <guid>https://jonoshields.com/post/player-attacking/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;gbagamejam2021--making-a-game-for-the-gameboy-advance&#34;&gt;GBAGameJam2021 | Making a game for the Gameboy Advance&lt;/h2&gt;&#xA;&lt;h3 id=&#34;day-40&#34;&gt;Day 40&lt;/h3&gt;&#xA;&lt;p&gt;Okay, so in a lot of projects there comes a part where a lot of work is needed for little reward. I always struggle to find motivation  in these parts. Queue a week of procrastinating.&lt;/p&gt;&#xA;&lt;p&gt;But this week I&amp;hellip;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Refactored the player class so that an instance of Player lasts for the whole game.&lt;/li&gt;&#xA;&lt;li&gt;Added enemy class and an enemy list in the Player class.&lt;/li&gt;&#xA;&lt;li&gt;Adding attacking hitboxes.&lt;/li&gt;&#xA;&lt;li&gt;Struggled with the below problem for a whole day!&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;ARHGH!! Okay. So I got stuck on this for ages and it really did my head in. I am trying to use pointers for the first time, so no wonder this kind of thing went wrong.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Animation, Camera and Movement Improvements</title>
      <link>https://jonoshields.com/post/player-improvements/</link>
      <pubDate>Mon, 10 May 2021 00:00:00 +0000</pubDate>
      <guid>https://jonoshields.com/post/player-improvements/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;gbagamejam---days-28-32&#34;&gt;GBAGameJam - Days 28-32&lt;/h2&gt;&#xA;&lt;h3 id=&#34;camera-movement&#34;&gt;Camera Movement&lt;/h3&gt;&#xA;&lt;p&gt;Last time I posted an update on the GBA Dev Discord I was recommended &lt;a href=&#34;https://www.gamasutra.com/blogs/ItayKeren/20150511/243083/Scroll_Back_The_Theory_and_Practice_of_Cameras_in_SideScrollers.php?print=1&#34;&gt;an article about camera movement&lt;/a&gt;. And I can highly recommend this to anyone making any sort of 2d game. It made me think for a lot about how the camera should move in my game.&lt;/p&gt;&#xA;&lt;p&gt;When I started the easiest thing was just to set the camera&amp;rsquo;s position to the player. This way the player was always in the centre of the screen. This is called position-locking, and while better than nothing, sometimes it isn&amp;rsquo;t the best experience for the player.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Another Level, Dialogue and NPC&#39;s</title>
      <link>https://jonoshields.com/post/day-27/</link>
      <pubDate>Thu, 06 May 2021 00:00:00 +0000</pubDate>
      <guid>https://jonoshields.com/post/day-27/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;gbagamejam---days-24-27&#34;&gt;GBAGameJam - Days 24-27&lt;/h2&gt;&#xA;&lt;h3 id=&#34;off-the-grid&#34;&gt;Off the Grid&lt;/h3&gt;&#xA;&lt;p&gt;The last 3 nights I have been staying in a campsite with no cell reception. But thanks to the awesome docs bundled with Butano, I haven&amp;rsquo;t really hit any major snags.&lt;/p&gt;&#xA;&lt;p&gt;And without the distractions of the internet I have made a lot of progress in the last few days.&lt;/p&gt;&#xA;&lt;h3 id=&#34;new-level&#34;&gt;New Level&lt;/h3&gt;&#xA;&lt;p&gt;Our story has to start somewhere, and the idea being that the bad guy broke in and kidnapped our hero&amp;rsquo;s family. We should start there. At home.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Will this be a game?</title>
      <link>https://jonoshields.com/post/day-23/</link>
      <pubDate>Sun, 02 May 2021 00:00:00 +0000</pubDate>
      <guid>https://jonoshields.com/post/day-23/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;gbagamejam---days-20-23&#34;&gt;GBAGameJam - Days 20-23&lt;/h2&gt;&#xA;&lt;h3 id=&#34;lets-talk-game-design&#34;&gt;Lets talk game design&lt;/h3&gt;&#xA;&lt;p&gt;Okay. We are at the point where I need to try to figure out if this is going to be a real game or not. So I came up with a game design pitch, another level, a world map, abilities, collectables and more.&lt;/p&gt;&#xA;&lt;h3 id=&#34;pitch&#34;&gt;Pitch&lt;/h3&gt;&#xA;&lt;p&gt;You arrive home to find your place in ruins, your wife and children are missing. Find out what happened and save them by unlocking the secrets of the past hidden under the island you have lived your whole life.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Animation States and Dash Ability</title>
      <link>https://jonoshields.com/post/day-20/</link>
      <pubDate>Thu, 29 Apr 2021 00:00:00 +0000</pubDate>
      <guid>https://jonoshields.com/post/day-20/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;gbagamejam---days-18-20&#34;&gt;GBAGameJam - Days 18-20&lt;/h2&gt;&#xA;&lt;h3 id=&#34;more-refactoring&#34;&gt;More refactoring&lt;/h3&gt;&#xA;&lt;p&gt;Okay, so last time we pulled some stuff out into classes. Now after learning some more I have created .h and .cpp files for my new hitbox and player classes.&lt;/p&gt;&#xA;&lt;p&gt;At this point comparing c++ to other languages I have used before an header file is kind of like an interface or an abstract class. But also at the same time it is absolutely not that. I think.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Refactor and Acceleration</title>
      <link>https://jonoshields.com/post/day-17/</link>
      <pubDate>Mon, 26 Apr 2021 00:00:00 +0000</pubDate>
      <guid>https://jonoshields.com/post/day-17/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;gbagamejam---days-14-17&#34;&gt;GBAGameJam - Days 14-17&lt;/h2&gt;&#xA;&lt;h3 id=&#34;major-refactor---classes&#34;&gt;Major Refactor - Classes&lt;/h3&gt;&#xA;&lt;p&gt;So. How do classes in C++ work? Yeah, that took some googling on its own. Actually just trying to figure out the weirdness of their constructors was time consuming.&lt;/p&gt;&#xA;&lt;p&gt;I ended up making a hitbox class that I could use for my character. This is what it looks like&amp;hellip;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Hitbox&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;private&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; _x;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; _y;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; _width;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; _height;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;public&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        Hitbox(&lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; x, &lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; y, &lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; width, &lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; height)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; _x(x), _y(y), _width(width), _height(height)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        {}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;x&lt;/span&gt;()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; _x;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;y&lt;/span&gt;()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; _y;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;width&lt;/span&gt;()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; _width;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;height&lt;/span&gt;()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; _height;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;};&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This is clearly not something that you should be learning from me though. So I will leave a few links here..&lt;/p&gt;</description>
    </item>
    <item>
      <title>Collisions, Music and More</title>
      <link>https://jonoshields.com/post/day-13/</link>
      <pubDate>Thu, 22 Apr 2021 00:00:00 +0000</pubDate>
      <guid>https://jonoshields.com/post/day-13/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;gbagamejam---day-13&#34;&gt;GBAGameJam - Day 13&lt;/h2&gt;&#xA;&lt;h3 id=&#34;collisions&#34;&gt;Collisions&lt;/h3&gt;&#xA;&lt;p&gt;This should be fun.&lt;/p&gt;&#xA;&lt;p&gt;FYI I first learned collision logic making a similar platformer in pico8. I found &lt;a href=&#34;https://www.youtube.com/watch?v=-hejwsu9A9g&#34;&gt;these tutorials&lt;/a&gt; invaluable for that. And I think its a great resource that can be applied in any programming language even though the examples are lua &amp;amp; pico8 specific.&lt;/p&gt;&#xA;&lt;p&gt;This should be easy now that we can get map data.&lt;/p&gt;&#xA;&lt;p&gt;So first off I am making a simple method to apply gravity so that we can move better.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Detecting Map Tiles</title>
      <link>https://jonoshields.com/post/day-12/</link>
      <pubDate>Wed, 21 Apr 2021 00:00:00 +0000</pubDate>
      <guid>https://jonoshields.com/post/day-12/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;gbagamejam---day-12&#34;&gt;GBAGameJam - Day 12&lt;/h2&gt;&#xA;&lt;p&gt;Okay. I did it!&lt;/p&gt;&#xA;&lt;p&gt;I figured out how to get map data so I can start using tile data to figure out collisions.&lt;/p&gt;&#xA;&lt;p&gt;So as before. We have our bg that we made..&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;bn::affine_bg_ptr map_bg = bn::affine_bg_items::map.create_bg(256, 256);&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;And I finally found out that you can call &lt;code&gt;map_bg.map().cells_ref()&lt;/code&gt; to get the pointer to the cells of the map. You can then call &lt;code&gt;.value()&lt;/code&gt; on it to get the actual data in a &lt;a href=&#34;https://gvaliente.github.io/butano/classbn_1_1span.html&#34;&gt;span&lt;/a&gt; (kind of like an array?).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Yeah, its going okay</title>
      <link>https://jonoshields.com/post/day-4-11/</link>
      <pubDate>Tue, 20 Apr 2021 00:00:00 +0000</pubDate>
      <guid>https://jonoshields.com/post/day-4-11/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;gbagamejam---days-4-to-11&#34;&gt;GBAGameJam - Days 4 to 11&lt;/h2&gt;&#xA;&lt;p&gt;Okay. So I may have been scared off a little by C++ again and a little frustrated at my self for not trying harding or digging deeper.&lt;/p&gt;&#xA;&lt;p&gt;This week hasn&amp;rsquo;t been very good.&lt;/p&gt;&#xA;&lt;p&gt;But that isn&amp;rsquo;t to say I haven&amp;rsquo;t done anything. The &lt;a href=&#34;https://discord.io/gbadev&#34;&gt;gbaDev discord&lt;/a&gt; is buzzing with activity and I am enjoying learning little bits and pieces about the GBA, dev tools and other random projects people are working on.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Animation, Movement and Backgrounds</title>
      <link>https://jonoshields.com/post/day-3/</link>
      <pubDate>Tue, 13 Apr 2021 00:00:00 +0000</pubDate>
      <guid>https://jonoshields.com/post/day-3/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;gbagamejam---day-3&#34;&gt;GBAGameJam - Day 3&lt;/h2&gt;&#xA;&lt;h3 id=&#34;animation&#34;&gt;Animation&lt;/h3&gt;&#xA;&lt;p&gt;Today I am tackling animation, not for any specific purpose, but just because I have the assets for them already.&lt;/p&gt;&#xA;&lt;p&gt;We can use Butano&amp;rsquo;s &lt;code&gt;create_sprite_animate_action_forever&lt;/code&gt; to kick off the animation.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Also just note that throughout using Butano you will see the use of Actions, they allow you to do transformations to a sprite over time. Read more &lt;a href=&#34;https://gvaliente.github.io/butano/group__action.html&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;So getting the animation working is pretty simple&amp;hellip;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Let&#39;s draw a sprite!</title>
      <link>https://jonoshields.com/post/day-2/</link>
      <pubDate>Mon, 12 Apr 2021 00:00:00 +0000</pubDate>
      <guid>https://jonoshields.com/post/day-2/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;gbagamejam---day-2&#34;&gt;GBAGameJam - Day 2&lt;/h2&gt;&#xA;&lt;p&gt;Okay lets do this. Lets try to get as far as I can doing this with assets from an old game.&lt;/p&gt;&#xA;&lt;p&gt;This is the Butano Sprite Example..&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; * Copyright (c) 2020-2021 Gustavo Valiente gustavo.valiente@protonmail.com&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; * zlib License, see LICENSE file.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt; */&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;void&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;sprites_visibility_scene&lt;/span&gt;(bn&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;sprite_text_generator&lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt; text_generator)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;constexpr&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; bn&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;string_view info_text_lines[] &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;A: hide/show sprite&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;START: go to next scene&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        };&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        info info(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Sprites visibility&amp;#34;&lt;/span&gt;, info_text_lines, text_generator);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        bn&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;sprite_ptr red_sprite &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; bn&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;sprite_items&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;red_sprite.create_sprite(&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;while&lt;/span&gt;(&lt;span style=&#34;color:#f92672&#34;&gt;!&lt;/span&gt; bn&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;keypad&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;start_pressed())&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt;(bn&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;keypad&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;a_pressed())&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                red_sprite.set_visible(&lt;span style=&#34;color:#f92672&#34;&gt;!&lt;/span&gt; red_sprite.visible());&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            info.update();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            bn&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;core&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;update();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;But really the only thing we need is &lt;code&gt;bn::sprite_ptr red_sprite = bn::sprite_items::red_sprite.create_sprite(0, 0);&lt;/code&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Joining GBAJam</title>
      <link>https://jonoshields.com/post/gamejam-day-1/</link>
      <pubDate>Sun, 11 Apr 2021 00:00:00 +0000</pubDate>
      <guid>https://jonoshields.com/post/gamejam-day-1/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;day-1-of-the-gbagamejam21&#34;&gt;Day 1 of the GBAGameJam21&lt;/h2&gt;&#xA;&lt;p&gt;I normally use much higher level languages, python, javascript, c#. But looking at the example code for Butano and seeing all of these :: confuses me a lot.&lt;/p&gt;&#xA;&lt;p&gt;Maybe I could map all of this to a language that I know. Googles &amp;ldquo;Lua bridge&amp;rdquo; furiously.&lt;/p&gt;&#xA;&lt;p&gt;Eventually gives up.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
