<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Videogames on Dag's home</title><link>https://dag7.it/tags/videogames/</link><description>Recent content in Videogames on Dag's home</description><generator>Hugo</generator><language>en</language><managingEditor>dag7+ifyourenotallmpleaseremovethis@protonmail.com (Dag)</managingEditor><webMaster>dag7+ifyourenotallmpleaseremovethis@protonmail.com (Dag)</webMaster><lastBuildDate>Wed, 11 Feb 2026 23:14:00 +0100</lastBuildDate><atom:link href="https://dag7.it/tags/videogames/index.xml" rel="self" type="application/rss+xml"/><item><title>Papers Please: achievements 100%</title><link>https://dag7.it/now/2026-02-11-papers-please-achievements-100percent/</link><pubDate>Wed, 11 Feb 2026 23:14:00 +0100</pubDate><author>dag7+ifyourenotallmpleaseremovethis@protonmail.com (Dag)</author><guid>https://dag7.it/now/2026-02-11-papers-please-achievements-100percent/</guid><description>&lt;p&gt;Finalmente ho terminato uno dei giochi che ho più spremuto di sempre per essere un gioco indie &amp;ldquo;piccolo&amp;rdquo;: Papers, Please.&lt;/p&gt;
&lt;p&gt;È stata dura ottenere l&amp;rsquo;ultimo achievement poichè sono stato costretto a rigiocare il gioco da capo da zero prendendo certe scelte, ma finalmente adesso c&amp;rsquo;è New Kolechia!&lt;/p&gt;
&lt;p&gt;&lt;img src="https://dag7.it/img/new_arstotzka.jpg" alt=""&gt;&lt;/p&gt;</description></item><item><title>GGJ2026: post-mortem e resa dei conti</title><link>https://dag7.it/posts/ggj2026-3/</link><pubDate>Wed, 11 Feb 2026 16:15:00 +0000</pubDate><author>dag7+ifyourenotallmpleaseremovethis@protonmail.com (Dag)</author><guid>https://dag7.it/posts/ggj2026-3/</guid><description>&lt;p&gt;3/3&lt;/p&gt;
&lt;p&gt;Avrei dovuto scrivere questo post tanti giorni fa a fine jam. Purtroppo il mio sito per l&amp;rsquo;ennesima volta non andava, ma magari vi racconto un&amp;rsquo;altra volta su cosa ultimamente sta succedendo.&lt;/p&gt;
&lt;p&gt;Partiamo dall&amp;rsquo;inizio: ci eravamo lasciati con io che cercavo di comporre una tarantella. Più che una tarantella è venuta fuori una ballata, ma ditemi cosa ne pensate.&lt;/p&gt;
&lt;iframe width="100%" height="166" scrolling="no" frameborder="no" allow="autoplay"
 src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/2264527403&amp;color=%231c1511&amp;auto_play=false&amp;hide_related=false&amp;show_comments=true&amp;show_user=true&amp;show_reposts=false&amp;show_teaser=true"&gt;&lt;/iframe&gt;
&lt;iframe width="100%" height="166" scrolling="no" frameborder="no" allow="autoplay"
 src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/2264527406&amp;color=%231c1511&amp;auto_play=false&amp;hide_related=false&amp;show_comments=true&amp;show_user=true&amp;show_reposts=false&amp;show_teaser=true"&gt;&lt;/iframe&gt;
&lt;p&gt;La jam è stata incredibile: personalmente me la sono vissuta molto meglio dell&amp;rsquo;ultimissima che ho fatto, poiché questa volta mi sono occupato principalmente di comporre la colonna sonora, creare alcuni suoni e sceglierne altri. È stato incredibilmente rilassante e formativo, grazie anche al fatto che ho toccato poco il codice e quindi mi sono potuto concentrare di più sulla parte musicale.&lt;/p&gt;
&lt;p&gt;La scelta della squadra è stata del tutto casuale: eravamo senza una squadra vera e propria, perciò ci siamo uniti. Personalmente è la prima volta che partecipo in un team di sei persone, dove ognuno ha fatto qualcosa e non è rimasto con le mani in mano. In altri contesti e altre esperienze, ho partecipato a lavori con team più estesi o più piccoli. Mi ha fatto davvero piacere riuscire a creare qualcosa insieme, e mi ha ricordato che le cose possono andare per il verso giusto anche se questo non corrisponde necessariamente alla nostra visione del mondo.&lt;/p&gt;
&lt;p&gt;Con il resto del team (StudioH501) ci siamo trovati talmente bene che vorremmo rifare il gioco da zero per avere un po&amp;rsquo; più di dimestichezza con le procedure di sviluppo, ma questo prototipo abbiamo deciso di rilasciarlo gratuitamente per vedere come le persone reagiscono quando glielo facciamo provare.&lt;/p&gt;
&lt;p&gt;Non abbiamo vinto nessun premio, anche se alle jam non si vince, ma si impara, si crea, si condivide&amp;hellip; però delle nomination interne c&amp;rsquo;erano ugualmente. Tuttavia, abbiamo ricevuto tantissime candidature per &amp;ldquo;best game&amp;rdquo; e anche qualche voto come &amp;ldquo;miglior colonna sonora&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Se siete curiosi di vederlo all&amp;rsquo;opera, potete giocarlo gratis su itch.io!&lt;/p&gt;
&lt;iframe frameborder="0" src="https://itch.io/embed/4263510" width="552" height="167"&gt;&lt;a href="https://dag7.itch.io/mascaria"&gt;MASCARIA by StudioH501&lt;/a&gt;&lt;/iframe&gt;

&lt;p&gt;Ecco alcune foto:&lt;/p&gt;



&lt;div class="gallery caption-position-bottom caption-effect-fade hover-effect-zoom hover-transition" itemscope itemtype="http://schema.org/ImageGallery"&gt;
	 
 &lt;link rel="stylesheet" href="https://dag7.it/css/hugo-easy-gallery.css" /&gt;
 &lt;div class="box" &gt;
 &lt;figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject"&gt;
 &lt;div class="img" style="background-image: url('https://dag7.it//img/ggj2026-1.jpg');"&gt;
 &lt;img itemprop="thumbnail" src="https://dag7.it/img/ggj2026-1.jpg" alt="2026-02-01 Team al completo!"/&gt;
 &lt;/div&gt;
 &lt;a href="https://dag7.it/img/ggj2026-1.jpg" itemprop="contentUrl"&gt;&lt;/a&gt;
 &lt;figcaption&gt;
 &lt;p&gt;2026-02-01 Team al completo!&lt;/p&gt;
 &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;/div&gt;
 
 
 &lt;div class="box" &gt;
 &lt;figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject"&gt;
 &lt;div class="img" style="background-image: url('https://dag7.it//img/ggj2026-2.jpg');"&gt;
 &lt;img itemprop="thumbnail" src="https://dag7.it/img/ggj2026-2.jpg" alt="2026-02-01 Pronti per lo showcase"/&gt;
 &lt;/div&gt;
 &lt;a href="https://dag7.it/img/ggj2026-2.jpg" itemprop="contentUrl"&gt;&lt;/a&gt;
 &lt;figcaption&gt;
 &lt;p&gt;2026-02-01 Pronti per lo showcase&lt;/p&gt;
 &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;/div&gt;
 
 
 &lt;div class="box" &gt;
 &lt;figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject"&gt;
 &lt;div class="img" style="background-image: url('https://dag7.it//img/ggj2026-3.jpg');"&gt;
 &lt;img itemprop="thumbnail" src="https://dag7.it/img/ggj2026-3.jpg" alt="2026-02-01 Qualcuno sta provando il nostro gioco..."/&gt;
 &lt;/div&gt;
 &lt;a href="https://dag7.it/img/ggj2026-3.jpg" itemprop="contentUrl"&gt;&lt;/a&gt;
 &lt;figcaption&gt;
 &lt;p&gt;2026-02-01 Qualcuno sta provando il nostro gioco...&lt;/p&gt;
 &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;/div&gt;
 
 
 &lt;div class="box" &gt;
 &lt;figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject"&gt;
 &lt;div class="img" style="background-image: url('https://dag7.it//img/ggj2026-4.png');"&gt;
 &lt;img itemprop="thumbnail" src="https://dag7.it/img/ggj2026-4.png" alt="2026-02-01 Uno screenshot!"/&gt;
 &lt;/div&gt;
 &lt;a href="https://dag7.it/img/ggj2026-4.png" itemprop="contentUrl"&gt;&lt;/a&gt;
 &lt;figcaption&gt;
 &lt;p&gt;2026-02-01 Uno screenshot!&lt;/p&gt;
 &lt;/figcaption&gt;
 &lt;/figure&gt;
 &lt;/div&gt;
 
&lt;/div&gt;
</description></item><item><title>GGJ2026: secondo giorno, verso la fine!</title><link>https://dag7.it/posts/ggj2026-2/</link><pubDate>Sun, 01 Feb 2026 01:07:00 +0100</pubDate><author>dag7+ifyourenotallmpleaseremovethis@protonmail.com (Dag)</author><guid>https://dag7.it/posts/ggj2026-2/</guid><description>&lt;p&gt;Anche questo secondo giorno è andato liscio come l&amp;rsquo;olio. Mi sono occupato della musica in-game e di scegliere (e comporre) gli effetti sonori di tutto il gioco.&lt;/p&gt;
&lt;p&gt;Ecco una lista di asset utilizzata:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;click Box UI *play button&lt;/li&gt;
&lt;li&gt;select card&lt;/li&gt;
&lt;li&gt;select mask&lt;/li&gt;
&lt;li&gt;apply mask&lt;/li&gt;
&lt;li&gt;place a card&lt;/li&gt;
&lt;li&gt;pop up points on card&lt;/li&gt;
&lt;li&gt;draw card&lt;/li&gt;
&lt;li&gt;reset&lt;/li&gt;
&lt;li&gt;player takes damage&lt;/li&gt;
&lt;li&gt;round lost&lt;/li&gt;
&lt;li&gt;round won&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La colonna sonora invece è una tarantella, che sono riuscito a renderla anche 8-bit grazie al potere dell&amp;rsquo;onda quadra.&lt;/p&gt;
&lt;p&gt;Non è stato affatto semplice, mi piacerebbe in futuro condividerla sul mio soundcloud che &lt;a href="https://soundcloud.com/dag7music"&gt;potete trovare qui&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Nel frattempo, siccome ho finito di curare il comparto musicale per il momento, alla fine riprendo a fare ciò che ho sempre fatto: scrivere codice.&lt;/p&gt;
&lt;p&gt;Devo curare animazioni e video intro dei nemici. I nemici sono maschere di Carnevale.&lt;/p&gt;
&lt;p&gt;Voglio spiegare meglio il progetto non appena avremo finito e chissà, magari riusciremo a rilasciarlo anche su itch.io&lt;/p&gt;</description></item><item><title>GGJ2026: bollettino primo giorno</title><link>https://dag7.it/posts/ggj2026-1/</link><pubDate>Sat, 31 Jan 2026 02:15:00 +0100</pubDate><author>dag7+ifyourenotallmpleaseremovethis@protonmail.com (Dag)</author><guid>https://dag7.it/posts/ggj2026-1/</guid><description>&lt;p&gt;Dalle 18 alle 01, sono state ore intense.&lt;/p&gt;
&lt;p&gt;Si è formata una bella squadra, in un clima di molta tranquillità. Stiamo lavorando ad un gioco di carte, e non vediamo l&amp;rsquo;ora esca.&lt;/p&gt;
&lt;p&gt;A differenza di Roma Game Jam, ho (e abbiamo) dedicato molte più ore alla progettazione del gioco e alle dinamiche, evitando di buttarci subito in programmazione o ancorandoci saldamente a uno strumento e vero proprio.&lt;/p&gt;
&lt;p&gt;Abbiamo deciso di lavorare con Unity.&lt;/p&gt;
&lt;p&gt;Per quanto riguarda la parte musicale&amp;hellip; il tema di quest&amp;rsquo;anno è &amp;ldquo;maschere&amp;rdquo;, quindi abbiamo deciso di fare delle carte mascherate.&lt;/p&gt;
&lt;p&gt;Non vedo l&amp;rsquo;ora di potervi svelare il progetto, qualora ce ne sarà occasione, ma fino ad allora non posso dirvi molto altro.&lt;/p&gt;
&lt;p&gt;Sono un pochino in alto mare: sto cercando di utilizzare un Game Boy per comporre, ma mi trovo in alto mare, poiché avevamo pensato a qualcosa tipo una tarantella o una polka/mazurca italiana, ma non ho mai scritto un pezzo del genere e col game boy mi sto trovando un po&amp;rsquo; in difficoltà. Penso che domani farò qualche tentativo utilizzando altri software su computer.&lt;/p&gt;
&lt;p&gt;È bello comunque vedere tutto il team lavorare uniformemente per raggiungere un risultato.&lt;/p&gt;</description></item><item><title>Come fare musica con il GameBoy</title><link>https://dag7.it/posts/come-creare-musica-con-il-game-boy/</link><pubDate>Fri, 04 Jul 2025 13:36:03 +0200</pubDate><author>dag7+ifyourenotallmpleaseremovethis@protonmail.com (Dag)</author><guid>https://dag7.it/posts/come-creare-musica-con-il-game-boy/</guid><description>&lt;p&gt;Hai partecipato al talk a Zona Warpa Roma 2025? Sei solo curioso di vedere le mie slide del talk che ho tenuto?&lt;/p&gt;
&lt;p&gt;&lt;a href="https://dag7.it/slides/come-creare-musica-con-il-gameboy"&gt;Clicca qui e sarai accontentato&lt;/a&gt;!&lt;/p&gt;</description></item><item><title>Recensione: Storia del videogioco</title><link>https://dag7.it/posts/recensione-storia-del-videogioco/</link><pubDate>Sun, 23 Feb 2025 20:35:00 +0200</pubDate><author>dag7+ifyourenotallmpleaseremovethis@protonmail.com (Dag)</author><guid>https://dag7.it/posts/recensione-storia-del-videogioco/</guid><description>&lt;p&gt;&lt;img src="https://dag7.it/img/libro-storia-videogioco.png" alt="image"&gt;&lt;/p&gt;
&lt;p&gt;Oggi ho finalmente finito &amp;ldquo;Storia del Videogioco&amp;rdquo;, un libro che avevo inziato a Dicembre ma che non avevo terminato.&lt;/p&gt;
&lt;p&gt;Il libro è molto corto, ha circa 150 pagine e racconta dagli albori ai videogiochi più moderni.&lt;/p&gt;
&lt;p&gt;Secondo me è ottimo per chi non è esperto per nulla e vuole approfondire o semplicemente per gli amanti del retrogaming: sono venuto a conoscenza di importanti figure e di parti delle storie di alcune delle più famose case di produzione videoludiche dell&amp;rsquo;epoca proprio grazie a questo libro.&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;inizio è davvero immersivo, racconta la storia del videogioco, partendo da prima dell&amp;rsquo;esposizione del 1958 di Tennis For Two addirittura.&lt;/p&gt;
&lt;p&gt;Verso la fine si perde tantissimo e viene tutto condensato in qualche manciata di pagine: davvero un peccato, secondo me si sarebbe potuta spendere qualche parola in più per l&amp;rsquo;evoluzione dei giochi e il mercato in generale.&lt;/p&gt;
&lt;p&gt;Nel complesso va benissimo da leggere ai fini di accrescere la propria cultura storica sui videogiochi classici e storici, ma non prendetelo come testo di riferimento per i videogiochi dopo il 2010.&lt;/p&gt;</description></item><item><title>Dungeon Devlog #5</title><link>https://dag7.it/posts/devlog-5/</link><pubDate>Mon, 10 Jun 2024 23:47:02 +0200</pubDate><author>dag7+ifyourenotallmpleaseremovethis@protonmail.com (Dag)</author><guid>https://dag7.it/posts/devlog-5/</guid><description>&lt;p&gt;I am caught up in something else and have been slowing down these days.&lt;/p&gt;
&lt;p&gt;The situation has become untenable: I feel the need to write tests and modularize the code further.&lt;/p&gt;
&lt;p&gt;Things break and I don&amp;rsquo;t know why.&lt;/p&gt;
&lt;p&gt;Anyway, &lt;strong&gt;I manage to create a small inventory&lt;/strong&gt; by deciding to treat the inventory as a dictionary and inserting an object into it every time it is printed in the overlay.&lt;/p&gt;
&lt;p&gt;There&amp;rsquo;s a problem: &lt;strong&gt;exits are added to the inventory&lt;/strong&gt;, that it is not what we want, but never mind: this is a problem I will fix another time.&lt;/p&gt;
&lt;p&gt;I also decide to implement the fact that &lt;strong&gt;enemies counter-attack&lt;/strong&gt; by assigning each monster an attack and a defense and making it so that when they counter-attack and when I attack, according to small mathematical formulas the hp is decreased or not.&lt;/p&gt;
&lt;p&gt;To get around the regeneration problem I temporarily decide to &lt;strong&gt;make the character recover one hp every time he moves&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;I also decide to implement the fact that &lt;strong&gt;the character can die&lt;/strong&gt;: if the hp is less than 0, the game ends. To start a new game, just press the &amp;ldquo;R&amp;rdquo; key.&lt;/p&gt;
&lt;p&gt;The game is starting to take shape, but I have to &lt;strong&gt;fix some bugs and make it more playable&lt;/strong&gt;, for now I&amp;rsquo;d like to polish on textures and make the game more enjoyable, so I manage to understand when to use border&amp;rsquo;s tileset and when not.&lt;/p&gt;
&lt;p&gt;Other wishable features are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;handle items in the inventory&lt;/li&gt;
&lt;li&gt;fix enemies texture bug&lt;/li&gt;
&lt;li&gt;add proper tiles for the border in the map&lt;/li&gt;
&lt;li&gt;invent a story&lt;/li&gt;
&lt;li&gt;add a boss / boss room&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I am very happy with the progress I made, but I have to keep going.&lt;/p&gt;</description></item><item><title>Dungeon Devlog #4</title><link>https://dag7.it/posts/devlog-4/</link><pubDate>Fri, 07 Jun 2024 22:35:13 +0200</pubDate><author>dag7+ifyourenotallmpleaseremovethis@protonmail.com (Dag)</author><guid>https://dag7.it/posts/devlog-4/</guid><description>&lt;p&gt;Tonight is the night! I need to implement &lt;strong&gt;graphics&lt;/strong&gt;!&lt;/p&gt;
&lt;p&gt;Well, how to do it? Old videogames were made with spritesheets, so I decide to do the same. I downloaded a spritesheet from a free itch.io download link, and I am ready to go&amp;hellip;?&lt;/p&gt;
&lt;p&gt;But what&amp;rsquo;s the basic idea? I have to &lt;strong&gt;draw the map exactly as I did&lt;/strong&gt; before, but &lt;strong&gt;instead of drawing colored squares&lt;/strong&gt;, I have to draw textures.&lt;/p&gt;
&lt;p&gt;The steps are:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;load the spritesheet&lt;/li&gt;
&lt;li&gt;while drawing the map, if the tile is a wall then go to the spritesheet and take the 4th square by row and column
&lt;ol&gt;
&lt;li&gt;for example, if the wall is at row 1 and column 1, then the square is at row 0, column 0, wide 16 and high 16&lt;/li&gt;
&lt;li&gt;if the character is at row 2 and column 1, then the square is at row 16&lt;em&gt;1 and column 1&lt;/em&gt;16, wide 16 and high 16, and so on&lt;/li&gt;
&lt;li&gt;this is because the spritesheet is 16x16 and every square is 16x16&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This is feasible, so I decide to go ahead: I modify the main structure by adding row column and spritesheet where the graphics are saved.&lt;/p&gt;
&lt;p&gt;After that, &lt;strong&gt;instead of drawing colored squares I decide to draw textures&lt;/strong&gt;, each 16x16 and&amp;hellip; it&amp;rsquo;s a great idea, everything works, I just have to be careful to change the sprites of the enemies.&lt;/p&gt;
&lt;p&gt;Wouldn&amp;rsquo;t it be nice a &lt;strong&gt;minimap in the HUD too&lt;/strong&gt;? Of course, it may come in handy for me for debugging purposes but also for the player in the future.&lt;/p&gt;
&lt;p&gt;I notice that &lt;strong&gt;minimap is the same map I normally draw&lt;/strong&gt;, but &lt;strong&gt;with pixels 1x1&lt;/strong&gt; instead of tiles. Basically there is no need to rewrite the code, just to make a function that draws a general map.&lt;/p&gt;
&lt;p&gt;Since the code is starting to be a mess, I decide to refactor it a bit: dictionary will store each element&amp;rsquo;s characteristics, like this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;enemy&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;x&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;y&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;hp&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;attack&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;walkable&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;False&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="o"&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Look how it&amp;rsquo;s beautiful!&lt;/p&gt;
&lt;p&gt;&lt;img src="https://dag7.it/img/videogames-devlog/dungeon6.png" alt="dungeon6.png"&gt;&lt;/p&gt;
&lt;p&gt;Now &lt;strong&gt;it&amp;rsquo;s time to improve the HUD&lt;/strong&gt; and set health points and attack points to the protagonist and enemies.&lt;/p&gt;
&lt;p&gt;I decide to also change the function that inserts stuff into the map: in case of enemies/living people, it also inserts additional parameters such as residual hp or collected tool, so that I can manage enemies&amp;rsquo; items and death as well.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://dag7.it/img/videogames-devlog/dungeon7.png" alt="dungeon7.png"&gt;&lt;/p&gt;
&lt;p&gt;I finally decide to implement a simple level up (experience) and level up mechanism, by using some math functions and randomness.&lt;/p&gt;</description></item><item><title>Dungeon Devlog #3</title><link>https://dag7.it/posts/devlog-3/</link><pubDate>Thu, 06 Jun 2024 23:46:23 +0200</pubDate><author>dag7+ifyourenotallmpleaseremovethis@protonmail.com (Dag)</author><guid>https://dag7.it/posts/devlog-3/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Good morning Night City
-Cyberpunk 2077&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;My morning is not a morning, but an evening, and it starts after a good sip of caffè latte: I am ready to face the day. I have a lot of ideas in my head and I want to make them reality.&lt;/p&gt;
&lt;p&gt;I had an interesting discussion some time ago with some friends of mine about the difference of cappuccino, caffè latte, and latte macchiato. I am not a coffee expert, but I knew that the difference is in the amount of milk and coffee. The articles I read on the internet are not very clear, however &lt;a href="https://www.caffeborbone.com/gb/en/magazine-segreti-di-caffe/differenza-tra-cappuccino-latte-macchiato-e-caffelatte.html"&gt;this article here&lt;/a&gt; explained by &amp;ldquo;nientepopodimeno&amp;rdquo; but Caffè Borbone is very clear and I recommend it to you if you&amp;rsquo;re interested.&lt;/p&gt;
&lt;p&gt;We need first to resolve &lt;strong&gt;the performance problem&lt;/strong&gt;: a dear friend of mine advised me to &lt;strong&gt;reduce the size of the map&lt;/strong&gt; since I would make less effort that way. I decide to throw down the whole dungeon generation algorithm and redo it almost from scratch.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve watched some videos and read some codes online, but &lt;a href="https://www.youtube.com/watch?v=fudOO713qYo"&gt;this excellent video&lt;/a&gt; brought to you by &amp;ldquo;TheZZAZZGlitch&amp;rdquo; is really interesting and explains in a visual way an approach to generate dungeons.&lt;/p&gt;
&lt;p&gt;The generation algorithm is very interesting: first it generates rooms as I do, then unlike me who immediately tries to connect them, it generates &amp;ldquo;dumb&amp;rdquo; rooms (called 1x1) and tries to connect them with existing rooms. It also does another thing: it &lt;strong&gt;generates a special border&lt;/strong&gt; (soft border) that does not allow it to be crossed or passed in any way.&lt;/p&gt;
&lt;p&gt;I reason a little bit about how to do that: generate the rooms, okay, which I already had. I can &lt;strong&gt;import the 1x1 idea&lt;/strong&gt;: sounds good to me!&lt;/p&gt;
&lt;p&gt;To my surprise it is an approach that works very well: by increasing the number of 1x1 rooms I can increase or decrease the complexity of a dungeon.&lt;/p&gt;
&lt;p&gt;Basically it is like &lt;strong&gt;connecting multiple rooms together&lt;/strong&gt;: an approach that works very well!&lt;/p&gt;
&lt;p&gt;Before I re-create the collisions and &amp;ldquo;the walkable and the unwalkable&amp;rdquo;, I want to make sure that I generate the items and everything that is needed to go from one world to another correctly.&lt;/p&gt;
&lt;p&gt;It occurs to me that I have to generate items, money, etc., and these should not be in corridors. Grr, this is difficult.&lt;/p&gt;
&lt;p&gt;Going back to the performance problem, &lt;strong&gt;I decide to reduce the size of the map to 56x32 pixels&lt;/strong&gt;. Since I did my algorithm in a way that I can change the size of the map, I can do this without any problem and with some surprise I see that the performance has improved a lot, generations are almost instantaneous.&lt;/p&gt;
&lt;p&gt;I am very happy and this is the result!&lt;/p&gt;
&lt;p&gt;&lt;img src="https://dag7.it/img/videogames-devlog/dungeon2.png" alt="Dungeon image, with proper corridors and rooms"&gt;&lt;/p&gt;
&lt;p&gt;Things can&amp;rsquo;t stop here:** I have to generate the items and the money**. I have to generate the exit that will take me to the next level. I have to generate the enemies and some elementary game elements: key, chest, exit, enemy, boss, trap. After all, I can treat everything as walkable/not walkable as well.&lt;/p&gt;
&lt;p&gt;I create a dictionary of tuples: the name is something I know, the tuple there is number (which I will need in the final map), the &amp;ldquo;common&amp;rdquo; name, and a color that will then be replaced by a texture in the future.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;key&amp;#34;: (1, &amp;#34;key&amp;#34;, (255, 255, 0)),
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;R#@*JE@&amp;#34;: (0, &amp;#34;nothing&amp;#34;, (0, 0, 0)),
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ...
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The idea is to draw the map and depending on what is in the map, draw something different.&lt;/p&gt;
&lt;h2 id="the-overlapping-problem"&gt;The overlapping problem&lt;/h2&gt;
&lt;p&gt;It also occurs to me that there might be overlapping problems: however, if I calibrate the spawn order well, I should not have such problems.&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;overlapping problem&lt;/strong&gt; is a problem that occurs when I spawn an item, and then I spawn an item on top of it.&lt;/p&gt;
&lt;p&gt;For example, I can safely decide to spawn enemies, chests, etc., and only after stairs, since if stairs replace an enemy, it is less serious than having an enemy replace stairs, it would make the game impossible.&lt;/p&gt;
&lt;p&gt;Graphically there is not much changes, but in practice I always have an exit and something on my map.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://dag7.it/img/videogames-devlog/dungeon3.png" alt="Dungeon image, with proper corridors and rooms"&gt;&lt;/p&gt;
&lt;h2 id="movement-and-collisions"&gt;Movement and collisions&lt;/h2&gt;
&lt;p&gt;Now we have to move on to movement and collisions: I simply have to make a &lt;strong&gt;function that checks if I can move on a certain tile&lt;/strong&gt;, and if yes then move, otherwise not. It will suffice to treat enemies as blocks and everything else as something walkable.&lt;/p&gt;
&lt;p&gt;The next step will be to define each &lt;strong&gt;entity behavior&lt;/strong&gt;. Let&amp;rsquo;s start with stairs -&amp;gt; I decide that every time a valid movement is made events happen, so I use the strategy of the boolean &amp;ldquo;moved and not moved&amp;rdquo;. It works.&lt;/p&gt;
&lt;h2 id="enemies-ai-idea"&gt;Enemies AI Idea&lt;/h2&gt;
&lt;p&gt;Now I have to deal with the AI of the enemies. I want to define &lt;strong&gt;different strategies&lt;/strong&gt;, but for now I am content with a &lt;strong&gt;&amp;ldquo;random&amp;rdquo; approach&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;A first implementation is this: find all the reds, if they can move go in the direction they randomly choose. This approach in terms of memory sucks: it would be better for me in generation phase to save the position of the enemies and update it as they perform movements.&lt;/p&gt;
&lt;h2 id="bugs"&gt;Bugs&lt;/h2&gt;
&lt;p&gt;But here&amp;rsquo;s some bugs arise:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;if I decide to move on a tile that has already been chosen by an enemy, I am not a solid object so &lt;strong&gt;both I and the enemy overlap&lt;/strong&gt;.
&lt;ol&gt;
&lt;li&gt;solved in a simple way by &lt;strong&gt;assigning me the property of being solid&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;since I have defined that every object when stepped on and is &amp;ldquo;walkable&amp;rdquo; becomes a normal tile again, enemies do the same thing with stairs. &lt;strong&gt;In other words: the enemy steals the stairs!&lt;/strong&gt; This is not good and to solve it I have to handle the limit case of the stairs (between them they should not kill each other as they are all solid).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Technically, I could also change the order of generation: I now generate the rooms, generate the dumb rooms, connect them, generate the items and game elements, however, to save resources and time, I could generate the rooms, place the player, place the items generate the 1x1 tiles and then connect them.&lt;/p&gt;
&lt;p&gt;Another bug: &lt;strong&gt;enemies and I move in the same tile and overlap&lt;/strong&gt;: this is not good, and it is because I was never updating the fact that the area where I was standing was free and I had moved to another area. Instead, every time I move, &lt;strong&gt;I have to set the tile where I am as &amp;ldquo;walkable&amp;rdquo;&lt;/strong&gt; and the new one as &amp;ldquo;not walkable,&amp;rdquo; which comes from the fact that I occupy it.&lt;/p&gt;
&lt;p&gt;Another approach I came up with is to simply define whether the playing field is walkable or not.&lt;/p&gt;
&lt;h2 id="enemies-ai-lets-attack"&gt;Enemies AI: let&amp;rsquo;s attack!&lt;/h2&gt;
&lt;p&gt;The time has finally come: define the IA behind the enemies: meanwhile, I want to define three kind of enemies, one that is very stupid and keeps doing what I have been doing so far (wandering around randomly), one that is smart and chases the player, and the other that is greedy and steals everything stealable&lt;/p&gt;
&lt;p&gt;I create the AI for the first and the second kind, but not the third: I have to think about how to implement it.&lt;/p&gt;
&lt;p&gt;Now I find myself in endless dungeons. I definitely need to implement a quick attack just to make enemies disappear. For now I settle for &amp;ldquo;last key pressed is up, so I shoot up&amp;rdquo;. I can implement it by writing that the last key pressed &amp;ldquo;looks&amp;rdquo; in a certain direction, regardless of whether or not you can move.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://dag7.it/img/videogames-devlog/dungeon4.png" alt="Dungeon image, with proper corridors and rooms"&gt;&lt;/p&gt;
&lt;h2 id="hud"&gt;HUD&lt;/h2&gt;
&lt;p&gt;It&amp;rsquo;s late but I can make it!&lt;/p&gt;
&lt;p&gt;I take a short break, and after a while, I find out about &lt;code&gt;pr.end_mode_2d()&lt;/code&gt; which allows you to draw a HUD.&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s fantastic! In the top left corner I want the stats counter in general, and at the bottom I want a textbox: the messages go away after two seconds (120 then, because I&amp;rsquo;m at 60 frames per second) and the hud has to disappear.&lt;/p&gt;
&lt;p&gt;It occurs to me to make a buffer for the messages, and eventually show it slowly by removing each string.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s an example and why I told the 120 frames per second thing:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;messages_buffer.insert(0, [&amp;#34;Level up! You are now level &amp;#34; + str(player[&amp;#39;level&amp;#39;]), 120, pr.GREEN])
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Messages are placed in a list, and each message is a list of three elements: the message, the number of frames it has to stay, and the color.&lt;/p&gt;
&lt;p&gt;At the end of the game loop, I check if the message has to be removed, and if so, I remove it, otherwise decrease the number of frames it has to stay until it reaches 0 and shows the message in the box.&lt;/p&gt;
&lt;p&gt;This is the result:
&lt;img src="https://dag7.it/img/videogames-devlog/dungeon5.png" alt="Dungeon with HUD"&gt;&lt;/p&gt;</description></item><item><title>Dungeon Devlog #2</title><link>https://dag7.it/posts/devlog-2/</link><pubDate>Wed, 05 Jun 2024 22:24:00 +0200</pubDate><author>dag7+ifyourenotallmpleaseremovethis@protonmail.com (Dag)</author><guid>https://dag7.it/posts/devlog-2/</guid><description>&lt;p&gt;My original idea was to &lt;strong&gt;make a dungeon game&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Damn bro, you just started and you already want to make a dungeon game?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Yes, I know, but I love dungeon games, and I want to make my own since ever. The most fun part of a dungeon game is the dungeon itself: the rooms, the corridors, the monsters, the traps, the inventory. &lt;strong&gt;Everything is random&lt;/strong&gt;, everything is different every time you play, and &lt;strong&gt;that&amp;rsquo;s addicting&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;But, let&amp;rsquo;s go back to the game.&lt;/p&gt;
&lt;p&gt;It is time to make my hands dirty on the actual dungeon creation. Where do I start?&lt;/p&gt;
&lt;p&gt;Well, I had seen a video a while back on procedural dungeon map generation. The idea was that &lt;strong&gt;first you generated rooms, then you generated corridors&lt;/strong&gt;. I then decide to set a scary size for the map, &lt;strong&gt;like 300x300&lt;/strong&gt; because I think it is a good size for a dungeon.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s move on the dungeon generator part: &lt;strong&gt;it is slow and has problems&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The idea is to generate the whole map first by defining walkable and non-walkable areas, the player (always a yellow square), draw a green square for each &amp;ldquo;non walkable square&amp;rdquo;, then I can move on to fill the entire map with monsters, items, and traps&amp;hellip; you know, the usual dungeon stuff.&lt;/p&gt;
&lt;p&gt;It works but&amp;hellip; the problem is also that &lt;strong&gt;I can&amp;rsquo;t see anything this way&lt;/strong&gt;, because everything is too big.&lt;/p&gt;
&lt;p&gt;I find out about the existence of the game &amp;ldquo;camera&amp;rdquo; which serves just as if it were a separate and detached window to the game world. Very pleased about this, I decide to &lt;strong&gt;postpone the problem of optimizing things and make them faster until the next day&lt;/strong&gt;, not before adding some small debugging controls (W and S keys, zoom in or out the view)&lt;/p&gt;
&lt;p&gt;I also implemented a small collider with walls, that does not seem to work properly and the classic directional arrow controls for moving my yellow square around.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s the result:
&lt;img src="https://dag7.it/img/videogames-devlog/dungeon1.png" alt="Dungeon image at the end of devlog 2, with corridors very stretchy or clumsy"&gt;&lt;/p&gt;</description></item><item><title>Dungeon Devlog #1</title><link>https://dag7.it/posts/devlog/</link><pubDate>Tue, 04 Jun 2024 21:13:25 +0200</pubDate><author>dag7+ifyourenotallmpleaseremovethis@protonmail.com (Dag)</author><guid>https://dag7.it/posts/devlog/</guid><description>&lt;p&gt;Finally, after some years, I am experimenting for the first time with making video games.&lt;/p&gt;
&lt;p&gt;I have always been fascinated by the idea of creating a video game, but I have never had the courage to start. I have always been afraid of not being able to finish it, of not being able to make it as I wanted, of not being able to make it fun.&lt;/p&gt;
&lt;p&gt;But this time things are different: I wanted to make a game for GBA, but thanks to a friend of mine who suggested me to use Raylib, a C library for making games, I decided to start with that.&lt;/p&gt;
&lt;p&gt;Honestly I was intimidated by the idea of starting from scratch, because many frameworks nowadays I thought were too complex for me. But Raylib is damn simple, and I like it.&lt;/p&gt;
&lt;p&gt;I can&amp;rsquo;t make games from one day to another, it requires a lot of time, work, programming, testing and all the other software development phases. After all I write software for a living, so I know what I am talking about.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s start with a silly thing and make Totti&amp;rsquo;s Quest, a red square that if it touches another green square, the other one turns yellow and starts the Roma anthem + an image of Totti&lt;/p&gt;
&lt;p&gt;The first problem is &lt;strong&gt;drawing a square&lt;/strong&gt;. Well, just check raylib lib! But raylib is a library in C.&lt;/p&gt;
&lt;p&gt;My main language is Python: it&amp;rsquo;s not &amp;ldquo;I don&amp;rsquo;t like C&amp;rdquo;, it&amp;rsquo;s more like &amp;ldquo;I use Python every single day, so I am confident with it&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;They are programming languages: exactly like with the normal ones, they work in the same way. The only difference is that C is verbose, I need to manage more things (like structs, dictionaries are not native and so on). Python have a lot of gimmicks that make it easier to use. Since the result is gonna be the same, I decided to use the latter.&lt;/p&gt;
&lt;p&gt;Fortunately, raylib was ported to Python so you find these &amp;ldquo;bindings&amp;rdquo; that basically make the library suitable for a language that is different from the original one.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve managed to complete the code with a bit of a problem: I &lt;strong&gt;can&amp;rsquo;t get the audio to work&lt;/strong&gt; because it always clashes.&lt;/p&gt;
&lt;p&gt;It occurs to me that I can use &lt;strong&gt;boolean variables&lt;/strong&gt; to indicate states, like &amp;ldquo;played&amp;rdquo; or not.&lt;/p&gt;
&lt;p&gt;This is an approach that works, and I am happy with it.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://dag7.it/img/videogames-devlog/tottisquest.png" alt="Green square and yellow square"&gt;&lt;/p&gt;</description></item><item><title>Touhou Project</title><link>https://dag7.it/posts/touhou-guide/</link><pubDate>Fri, 01 Sep 2023 23:10:00 +0200</pubDate><author>dag7+ifyourenotallmpleaseremovethis@protonmail.com (Dag)</author><guid>https://dag7.it/posts/touhou-guide/</guid><description>&lt;p&gt;This small guide aims to become the main guide for all those who would like to play Touhou Project (abbreviated as TH), but don&amp;rsquo;t know where to start and how to set up the right emulator.&lt;/p&gt;
&lt;p&gt;Note that I only tested this guide on an Anbernic portable console (&lt;a href="https://dag7.it/en/blog/awesome-retroconsole/"&gt;I told you about it in another article&lt;/a&gt;) precisely because I wanted to test how comfortable it actually was play it and because there isn&amp;rsquo;t much material online, neither in English nor in Italian.&lt;/p&gt;
&lt;h2 id="brief-history-of-the-touhou-project"&gt;Brief history of the Touhou Project&lt;/h2&gt;
&lt;p&gt;The TH Project is a series of games (called bullet hell) created by Jun&amp;rsquo;ya Ota, alias ZUN: in 1996 he decided that video games were boring, there was nothing really fun for him, so he decided to create a series of titles on his own, partly for fun and partly to experiment.&lt;/p&gt;
&lt;p&gt;Games of this kind are normally difficult for the average player: the skill lies in observing and understanding the patterns that are proposed and the fact of remaining calm while being bombarded with bullets.&lt;/p&gt;
&lt;p&gt;However, not all of them will hit the player: it will be up to the latter to understand (and remember) who hits him and who doesn&amp;rsquo;t.&lt;/p&gt;
&lt;h2 id="what-is-it-about"&gt;What is it about&lt;/h2&gt;
&lt;p&gt;During the game, we will take on the role of Reimu or Marisa and we will have to shoot and avoid monsters that will try in any way to knock us down.&lt;/p&gt;
&lt;p&gt;Between one chapter and another (episodes) we will have small interludes that will push the story forward, allowing us to understand what is happening.&lt;/p&gt;
&lt;p&gt;In Italy it is not very popular, but it is especially so in Japan: in addition to the fandom they even have a manga and an anime.&lt;/p&gt;
&lt;h2 id="how-many-games-exist"&gt;How many games exist&lt;/h2&gt;
&lt;p&gt;The TH Project has been released in 18 different chapters, not counting the 11 official spinoffs which brings the total number of games to 29.&lt;/p&gt;
&lt;p&gt;The first 5 chapters are the only ones to have been released for PC-98 and nowadays have become almost impossible to find, except online. They are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Touhou 1 - Highly Responsive to Prayers&lt;/li&gt;
&lt;li&gt;Touhou 2 - Story of Eastern Wonderland&lt;/li&gt;
&lt;li&gt;Touhou 3 - Phantasmagoria of Dimensional Dream&lt;/li&gt;
&lt;li&gt;Touhou 4 - Lotus Land Story&lt;/li&gt;
&lt;li&gt;Touhou 5 - Mystic Square&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This article is about the 5 games listed above, all others are available and released for Windows.&lt;/p&gt;
&lt;p&gt;The first game is &lt;strong&gt;very different&lt;/strong&gt; from all the other chapters: it is a kind of arkanoid with tiles.&lt;/p&gt;
&lt;h2 id="material-required"&gt;Material required&lt;/h2&gt;
&lt;p&gt;To play the Touhou Project you need:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;copy of TH Project games for PC-98&lt;/li&gt;
&lt;li&gt;PC-98 emulator (Neko Project II) or
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Retroarch&lt;/strong&gt; configured with &lt;strong&gt;NP2 KAI&lt;/strong&gt; core (Neko Project II Kai)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;scissors with a rounded tip&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="method"&gt;Method&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Load the Retroarch (RA) core called Neko Project II &lt;strong&gt;KAI&lt;/strong&gt;. The KAI version is essential, in fact nothing will work without it.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Make sure you already have configured the core. If you haven&amp;rsquo;t or don&amp;rsquo;t know how, &lt;a href="https://docs.libretro.com/library/neko_project_ii_kai/"&gt;RA guide will help you&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Load a game. What a bummer right? It all jerks and feels crappy. Now let&amp;rsquo;s go make some improvements.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Open Retroarch menu &amp;gt; Core Options &amp;gt; Core Settings &amp;gt; and make these settings:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PC Model: PC-9801VM&lt;/li&gt;
&lt;li&gt;CPU Base Clock: 2.4 MHz&lt;/li&gt;
&lt;li&gt;Feature CPU: Intel 80386&lt;/li&gt;
&lt;li&gt;CPU Clock Multiplier: 16&lt;/li&gt;
&lt;li&gt;RAM Size: 13&lt;/li&gt;
&lt;li&gt;Skipline Revisions: 255&lt;/li&gt;
&lt;li&gt;Soundboard: PC9801-86&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Restart the content, and enjoy.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;N.B.&lt;/strong&gt;: this configuration is specific to the &lt;strong&gt;Anbernic 353V&lt;/strong&gt;: experimenting a bit with the settings I reached a good compromise.&lt;/p&gt;
&lt;p&gt;If you have a higher-end computer or console, &lt;strong&gt;set the CPU Clock Multiplier to 40 and RAM Size also to 32&lt;/strong&gt;, and then gradually decrease the CPU Clock Multiplier in case you notice frame drops, or slowness in general.&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;minimum&lt;/strong&gt; values are &lt;strong&gt;CPU 24 and RAM 13&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;(yes, I had to put 16 otherwise everything was laggy)&lt;/p&gt;
&lt;h2 id="what-if-i-use-the-emulator"&gt;What if I use the emulator?&lt;/h2&gt;
&lt;p&gt;These settings are obviously also valid when using the standalone emulator.&lt;/p&gt;
&lt;h2 id="faqs"&gt;FAQs&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;It gives me black screen with &lt;code&gt;a)&amp;gt;&lt;/code&gt; how do I fix it?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;you are not using NP2KAI, but NP2. I told you Kai was needed 😇&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The second chapter does not take my input.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;you are not using NP2KAI, but NP2. I told you Kai was needed 😇&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I don&amp;rsquo;t see the fonts&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Optional files are missing, &lt;a href="https://docs.libretro.com/library/neko_project_ii_kai/"&gt;official guide&lt;/a&gt; tells you how to fix this annoying problem. Or play without fonts.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The zip doesn&amp;rsquo;t work!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;unzip the zip and put the hdi file in the rom folder. In case you use Anbernic and similar, this folder is called &lt;code&gt;pc98&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I can&amp;rsquo;t stop playing, I&amp;rsquo;ve become good, I&amp;rsquo;d like to start chapters for Windows from Steam. I&amp;rsquo;m just here to thank you!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I would have put you my &lt;a href="https://www.instant-gaming.com/?igr=gamer-df38ee9"&gt;affiliate link to Instant Gaming&lt;/a&gt;, but they don&amp;rsquo;t sell TH Project, so I suggest you &lt;a href="https://store.steampowered.com/app/1043230/__Ten_Desires/"&gt;the 13th chapter on Steam&lt;/a&gt;. Or start with whatever you prefer.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The guide in the Bignami version, reduced to the bone, is available &lt;a href="https://gist.github.com/dag7dev/25d734321568e56cc1f7309ffb4fedd6"&gt;on Gist Github&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Have fun!&lt;/p&gt;
&lt;p&gt;p.s. maybe you already knew TH Project for &lt;a href="https://www.youtube.com/watch?v=GPxTX2kVzYE"&gt;Bing of Bongs | Big Ben plays &amp;lsquo;Night of Nights&amp;rsquo; for the Last time&lt;/a&gt; or for [McDonald&amp;rsquo;s clown video](&lt;a href="https://www.youtube.com"&gt;https://www.youtube.com&lt;/a&gt; /watch?v=Q16KpquGsIc)&lt;/p&gt;</description></item><item><title>Awesome Retroconsoles</title><link>https://dag7.it/posts/awesome-retroconsole/</link><pubDate>Thu, 30 Mar 2023 15:12:47 +0200</pubDate><author>dag7+ifyourenotallmpleaseremovethis@protonmail.com (Dag)</author><guid>https://dag7.it/posts/awesome-retroconsole/</guid><description>&lt;p&gt;People have many hobbies, such as reading, playing sports, listening to music or gardening. Instead, one of my favorite pastimes is playing video games. For me, it has always been a genuine journey of discovery of new worlds and new characters, a bit like reading a book, but in a more interactive way.&lt;/p&gt;
&lt;p&gt;I own many of the best-selling consoles of all time, but I was looking for a solution to my desire to dust off old glories.&lt;/p&gt;
&lt;h2 id="the-problems"&gt;The problems&lt;/h2&gt;
&lt;p&gt;Playing video games on the original consoles requires you to carry each console with you at all times, unless you own backup solutions or backward-compatible consoles, which may not always be able to run all the games from multiple consoles.&lt;/p&gt;
&lt;p&gt;For example, if I wanted to play Game Boy Advance (GBA) and PlayStation Portable (PSP) games, I would have to carry two separate consoles with me.&lt;/p&gt;
&lt;p&gt;In addition, the backup solutions available on the market for older consoles, although perhaps cheaper at the time, are not cheap. Try, for example, to take a look at the flashcarts for the Game Boy.&lt;/p&gt;
&lt;p&gt;So, what to do?&lt;/p&gt;
&lt;p&gt;One option is to use a newer, better console in terms of power and performance to play older games.&lt;/p&gt;
&lt;p&gt;I am not considering the Nintendo Switch, which is a console that is still in production, but it is difficult to play old games on it, and the Steam Deck, which is a full-fledged computer that does many things in the area of emulation. Both solutions are not cheap even though they do the job they were designed and created for very well.&lt;/p&gt;
&lt;p&gt;Nowadays, the cheapest consoles with a good stock of titles are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;New Nintendo 3DS&lt;/li&gt;
&lt;li&gt;PSVita&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;They allow most of the games of previous consoles to be emulated, but they are hard to find at normal prices, especially the latter.&lt;/p&gt;
&lt;p&gt;There are two major problems while playing a recent title:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&amp;ldquo;New&amp;rdquo; consoles do not always have the same aspect ratio and controls as the original version. For example, Nintendo DS games play on a 3DS but have black bands on the sides, while on a DSi (or DSi XL) they play perfectly.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;When home consoles are emulated by a newer device, it is difficult to get used to the controls. The feel of a certain controller on original hardware is often different from that of the target console.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This comes purely from the convenience of using one controller over another.&lt;/p&gt;
&lt;p&gt;I have always liked the idea of carrying my entire game library with me and being able to have one console that can play my entire collection instead of having to own many different consoles. However, there are also advantages to being able to have more than one console, such as being able to play games exclusive to each console and having access to different features and services offered by each platform. In general, the choice of owning one or more consoles depends on each gamer&amp;rsquo;s personal preferences and needs.&lt;/p&gt;
&lt;p&gt;Not all Game Boys are perfect: the SP is the excellence of compactness. However, over the years, the controls became small for my gradually growing hands, making it a bit uncomfortable.&lt;/p&gt;
&lt;p&gt;A good Game Boy in terms of size might be the very first gray (DMG). However, it has a not inconsiderable weight and is not very portable compared to other consoles, as it is heavy in the pocket.&lt;/p&gt;
&lt;p&gt;An excellent alternative to both models is the Game Boy Pocket (GBP), which is an excellent compromise both in terms of size, which is much smaller and more compact than a DMG, and in terms of the size of the controls (d-pad and buttons), which maintain the size of the DMG.&lt;/p&gt;
&lt;p&gt;The Game Boy family has always suffered from the non-backlit screen, a serious shortcoming that over the years has been a problem for all those who wanted to play at hours other than daylight, risking losing a few diopters.&lt;/p&gt;
&lt;p&gt;Where then can I find a &amp;ldquo;powerful&amp;rdquo; Game Boy with a good screen and capable of running recent games?&lt;/p&gt;
&lt;h2 id="the-compromise"&gt;The compromise&lt;/h2&gt;
&lt;p&gt;And this is how we arrive at a very good compromise: the discovery of non-emblazoned retro consoles.&lt;/p&gt;
&lt;p&gt;In the past, consoles were sold with OpenDingux, which never really intrigued me. On the one hand it was very interesting to have a console with a free operating system that could play many dated games, on the other hand they always gave me the impression that they had problems of some sort (arising not only from overheating, but also and especially from the controls).&lt;/p&gt;
&lt;p&gt;In recent years, however, several retroconsoles from brands such as Powkiddy, Miyoo, and Anbernic have emerged.&lt;/p&gt;
&lt;p&gt;The peculiarity of these consoles is that they often mount Linux or Android, making them perfect for all the geeks who enjoy adding or removing emulators and testing games.&lt;/p&gt;
&lt;p&gt;Around 2019 I used to follow, and still follow with great pleasure, the Dr. Game channel, where there are several reviews of handheld consoles, from Famiclones to Power Player Super Joy to these types of consoles.&lt;/p&gt;
&lt;p&gt;Initially, I did not like them at all.&lt;/p&gt;
&lt;p&gt;I set out to research the various solutions on the market, and the choice fell on two models in particular:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Miyoo Mini&lt;/li&gt;
&lt;li&gt;RG35XX&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I searched online what these consoles were capable of doing, and found that they can emulate games up to PS1, but not perfectly Dreamcast, PS1, and Game Cube&lt;/p&gt;
&lt;p&gt;The Miyoo Mini is just too small and uncomfortable to hold. Compactness is important, but not being ergonomic it is uncomfortable to use. This is very reminiscent of the Game Boy Advance SP in 2023.&lt;/p&gt;
&lt;h2 id="the-wrong-purchase"&gt;The wrong purchase&lt;/h2&gt;
&lt;p&gt;Initially I thought the RG35XX was a good choice, but then I found that the power left something to be desired and the stock kernel was not excellent.&lt;/p&gt;
&lt;p&gt;In short, not really the best choice.&lt;/p&gt;
&lt;p&gt;I honestly would have appreciated if the console had better support from the original manufacturer, although there are custom firmwares.&lt;/p&gt;
&lt;h2 id="the-right-purchase"&gt;The right purchase&lt;/h2&gt;
&lt;p&gt;I realized that many of the things I wanted were not available, such as Android support, so I decided to spend more and opt for the Anbernic 353V.&lt;/p&gt;
&lt;p&gt;Before making the purchase, I went to look at various reviews on Instagram and Youtube: needless to say, there wasn&amp;rsquo;t much. All of them complained about the buttons on the back being difficult to press and uncomfortable.&lt;/p&gt;
&lt;p&gt;I must say that I was quite satisfied with its technical specifications. What surprised me most, however, were the controls and toggles themselves, which far exceeded my expectations.&lt;/p&gt;
&lt;p&gt;It is able to emulate many systems, such as Dreamcast and PS1 with a stable framerate, but also PSP titles and they seem to work great. However, it is not perfect, there are some things it cannot do, such as emulating the Gamecube or having a stable Android system (crashes every few minutes of play).&lt;/p&gt;
&lt;p&gt;Despite the problems, this console has become my favorite handheld and I use it almost every day, especially to play PS1 titles and something on Android: on the latter, apps crash often, especially games.&lt;/p&gt;
&lt;p&gt;Another thing I love is the fact that I can use it as a controller for other things-it&amp;rsquo;s a priceless feature.&lt;/p&gt;
&lt;p&gt;I was a bit skeptical about the feedback of the controls, but I must say that the console emulates the feel of the Game Boy Pocket perfectly. Surprisingly, even after some time, my hand doesn&amp;rsquo;t sweat like it does with some controllers, such as the one on the PS4 or the first Xbox One before they overhauled the controller and put a grip on it.&lt;/p&gt;
&lt;h2 id="final-conclusions"&gt;Final conclusions&lt;/h2&gt;
&lt;p&gt;If you are looking for a handheld console that is able to satisfy your need for retro gaming, the Anbernic 353V is a solution worth considering.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m not saying it&amp;rsquo;s perfect, because it obviously has its pros and cons, but I personally found it to be a good quality portable console that offers a wide choice of emulators at an affordable price.&lt;/p&gt;
&lt;p&gt;If you want to know everything, but really everything about Anbernic consoles, I recommend you check out &lt;a href="https://github.com/dag7dev/awesome-anbernic"&gt;awesome-anbernic&lt;/a&gt;, where you can find information about the various consoles, custom firmware, and much more.&lt;/p&gt;</description></item><item><title>Programming on NES</title><link>https://dag7.it/posts/nes-programming/</link><pubDate>Fri, 25 Sep 2020 11:00:00 +0200</pubDate><author>dag7+ifyourenotallmpleaseremovethis@protonmail.com (Dag)</author><guid>https://dag7.it/posts/nes-programming/</guid><description>&lt;p&gt;It&amp;rsquo;s been a while since I have written here, the reasons because I haven&amp;rsquo;t been here are two:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I was really busy with life in this period&lt;/li&gt;
&lt;li&gt;I have been busy with fun activities, like playing videogames for example&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Retrogaming took me a lot of my time because there were some classic games that I needed to play.&lt;/p&gt;
&lt;p&gt;Each of us at some point in our lives has got a console, handheld or not, who got the Game Boy, who got the Nintendo 64, or PSP, or Xbox&amp;hellip;whatever. But you had fun!&lt;/p&gt;
&lt;p&gt;Have you ever wondered about how old Game Boy games used to be so tiny that you used to carry them around in your pocket in cartridges?&lt;/p&gt;
&lt;p&gt;Well, I did a lot of times when I was a child and I wasn&amp;rsquo;t a programmer: I was a stranger in that world; however bringing in that tiny cartridge a lot of worlds from Super Mario or Pokemon, it doesn&amp;rsquo;t matter which one, has always fascinated me.&lt;/p&gt;
&lt;p&gt;The question wasn&amp;rsquo;t just about the Game Boy but it was also about the NES: both of them use cartridges, and you need them to play games.&lt;/p&gt;
&lt;p&gt;I don&amp;rsquo;t know you, but I always dreamt about writing my own game or app, even if &amp;ldquo;simple&amp;rdquo; (no Pokemon :P) for Game Boy or NES&amp;hellip;&lt;/p&gt;
&lt;p&gt;Well, after a lot of hours digging Google I have finally found nesdoug&amp;rsquo;s blog &lt;a href="https://nesdoug.com/author/dougfraker/"&gt;here - take a look&lt;/a&gt; who explains how to create NES games using C language.&lt;/p&gt;
&lt;p&gt;I was so enthusiastic that I wanted to start (and end), all the resources were in the blog so I tried to find out a way to organize everything in a simple and elegant way.&lt;/p&gt;
&lt;p&gt;The result was&amp;hellip; a book: there is nothing better than learn how to program step-by-step by using a good programming book that teaches you the basics.&lt;/p&gt;
&lt;p&gt;Rust&amp;rsquo;s community (Rust is an interesting language, &lt;a href="https://rust-lang.org"&gt;https://rust-lang.org&lt;/a&gt;) has made a book to learn Rust, the original author in this case has made everything from scratch by himself but he did it in a manner which nobody can explain in such an easy way.&lt;/p&gt;
&lt;p&gt;I think it is one of the best guides on the internet about NES developing, it is simple and clear: &lt;a href="https://dag7.gitbook.io/nesdoug-nes-guide"&gt;judge by yourself&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And finally, I understood what is &amp;ldquo;VBlank&amp;rdquo;, thing which it is not so simple to explain because you are going to read a looooot of explanations which you are not going to fully understand.&lt;/p&gt;
&lt;p&gt;See ya!&lt;/p&gt;</description></item></channel></rss>