<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.3.4">Jekyll</generator><link href="https://shaddox.neocities.org/feed.xml" rel="self" type="application/atom+xml" /><link href="https://shaddox.neocities.org/" rel="alternate" type="text/html" /><updated>2026-03-22T00:40:30+02:00</updated><id>https://shaddox.neocities.org/feed.xml</id><title type="html">Shaddox’s corner</title><subtitle>A simple personal webpage</subtitle><entry><title type="html">Sleeper Hit: Solitary Gourmet</title><link href="https://shaddox.neocities.org/multimedia/2026/03/21/solitary-gourmet.html" rel="alternate" type="text/html" title="Sleeper Hit: Solitary Gourmet" /><published>2026-03-21T23:21:27+02:00</published><updated>2026-03-21T23:21:27+02:00</updated><id>https://shaddox.neocities.org/multimedia/2026/03/21/solitary-gourmet</id><content type="html" xml:base="https://shaddox.neocities.org/multimedia/2026/03/21/solitary-gourmet.html"><![CDATA[<p>Hey, hey, it’s been a while! While browsing youtube during a lunchbreak, I stumbled upon
something unexpectedly interesting, which I thought I could share!</p>

<div class="video-container">
    <div class="video-wrapper">
        <iframe src="https://www.youtube.com/embed/UXODT44KKkg" frameborder="0" allowfullscreen="" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share">
        </iframe>
    </div>
    
    <figcaption class="video-caption">Episode 1</figcaption>
    
</div>

<h2 id="what-is-this">What is this?</h2>

<p>Well, what we stumbled upon here is a TV series based on the eponymous manga <em>Solitary Gourmet</em>.</p>

<p>It’s a delightfully slow TV series where we can observe our hero, <em>Goro Inogashira</em> conduct his business as 
an importer of European goods, eventually getting hungry and stopping for lunch, sometimes dinner at a restaurant.
Wonderfully plain, isn’t it? However, there is more than meets the eye.</p>

<h2 id="what-recommends-it">What recommends it?</h2>

<h4 id="the-protagonist-is-charming">The protagonist is charming</h4>

<div class="gallery gallery-single" data-gallery="/assets/images/solitary-gourmet/screen-1.webp">
    <figure class="gallery-item">
        <a href="/assets/images/solitary-gourmet/screen-1.webp" class="gallery-link" data-caption="Me neither.">
            <img src="/assets/images/solitary-gourmet/screen-1.webp" alt="Can&#39;t think on empty stomach!" class="fullwidth" />
        </a>
        
        <figcaption class="gallery-caption">
            Me neither.
        </figcaption>
        
    </figure>
</div>

<p>Between his quips, his personality and the fact that he is pretty much 
the main character in the purest sense of the word, with focus placed exclusively on him, 
I found myself slowly growing attached to him. Most of the “dialogue” is, in actuality, his internal monologue.</p>

<h4 id="despite-being-the-solitary-gourmet-the-protagonist-is-quite-observant">Despite being the solitary gourmet, the protagonist is quite observant</h4>

<p>Despite how much he enjoys his solitude, he is quite present everywhere he goes. 
He notices people in their every day life, struggling and quietly cheering for them.</p>

<h4 id="it-cultivates-an-appreciation-for-the-smaller-things-in-life">It cultivates an appreciation for the smaller things in life</h4>

<p>From helping someone having a small trouble, to observing some old men playing shogi, 
and then deciding to play for himself, to visiting an import shop, to the way he picks his restaurants : small and off the beaten path.</p>

<p>It really does feel like Goro has a cultivated sense of appreciation for the smaller things.</p>

<h4 id="the-humor-is-simple-but-effective">The humor is simple, but effective</h4>

<p>The humor is happening mostly in the contrast between his dialogue and his monologue.</p>

<p>Very simple, but very effective!</p>

<h2 id="conclusion">Conclusion</h2>

<p>I’ll keep watching as new episodes find their way on YouTube. The very simple premise makes
for a very enjoyable experience.</p>

<p>If you need something with a more intriguing plot, this is definitely not something for you, but if 
you find yourself often overthinking, this might just be the show for you. I found myself feeling 
wonderfully soothed after each episode.</p>

<p>Until next time!</p>]]></content><author><name>Shaddox</name></author><category term="multimedia" /><summary type="html"><![CDATA[A show about slowing down]]></summary></entry><entry><title type="html">Girls of the Tower - The Quest for the Bottle of Magic Spring</title><link href="https://shaddox.neocities.org/tech/2025/11/01/quest-for-the-bottle-of-magic-spring.html" rel="alternate" type="text/html" title="Girls of the Tower - The Quest for the Bottle of Magic Spring" /><published>2025-11-01T23:04:27+02:00</published><updated>2025-11-01T23:04:27+02:00</updated><id>https://shaddox.neocities.org/tech/2025/11/01/quest-for-the-bottle-of-magic-spring</id><content type="html" xml:base="https://shaddox.neocities.org/tech/2025/11/01/quest-for-the-bottle-of-magic-spring.html"><![CDATA[<p>Hey hey, fellow readers!</p>

<p>In <em>Girls of the Tower</em>, there’s this elusive item that’s been teasing me 
on the collection screen, the bottle of magic spring.</p>

<div class="gallery gallery-single" data-gallery="/assets/images/magic-spring-quest/item.png">
    <figure class="gallery-item">
        <a href="/assets/images/magic-spring-quest/item.png" class="gallery-link" data-caption="The ever so elusive Bottle of Magic Spring">
            <img src="/assets/images/magic-spring-quest/item.png" alt="Bottle of Magic Spring" class="fullwidth" />
        </a>
        
        <figcaption class="gallery-caption">
            The ever so elusive Bottle of Magic Spring
        </figcaption>
        
    </figure>
</div>

<p>Now, you may be wondering, how do you get it? I don’t know. No one seems to do. 
So I decided to take a peek under the hood, to try to get maybe some hints. 
Browsing through the game’s files, it seems the game is made in Unity.</p>

<p>This is a good thing for my goal, because Unity is a well-understood
engine with strong tooling around it. I decided to use <a href="https://github.com/Perfare/AssetStudio">Asset Studio</a> for this.</p>

<p>And …</p>

<div class="gallery gallery-single" data-gallery="/assets/images/magic-spring-quest/asset-studio.png">
    <figure class="gallery-item">
        <a href="/assets/images/magic-spring-quest/asset-studio.png" class="gallery-link" data-caption="Loading the game data in Asset Studio">
            <img src="/assets/images/magic-spring-quest/asset-studio.png" alt="Asset Studio" class="fullwidth" />
        </a>
        
        <figcaption class="gallery-caption">
            Loading the game data in Asset Studio
        </figcaption>
        
    </figure>
</div>

<p>I’m in! It was surprisingly straightforward. It’s really fun to look
through the game’s assets, but let’s remember we are here to
look for our relic. Maybe we can look through some more … interesting aspects in 
another post.</p>

<div class="gallery gallery-single" data-gallery="/assets/images/magic-spring-quest/hint.png">
    <figure class="gallery-item">
        <a href="/assets/images/magic-spring-quest/hint.png" class="gallery-link" data-caption="And here is our first hint!">
            <img src="/assets/images/magic-spring-quest/hint.png" alt="Amelia&#39;s Contract" class="fullwidth" />
        </a>
        
        <figcaption class="gallery-caption">
            And here is our first hint!
        </figcaption>
        
    </figure>
</div>

<p>I recognize this asset! It’s one of the items in the game, Amelia’s Contract. That
means that all items are marked as SacredObject_Number, so if we search for SacredObject,
we should be able to narrow down to a more relevant list to us.</p>

<div class="gallery gallery-single" data-gallery="/assets/images/magic-spring-quest/found-it.png">
    <figure class="gallery-item">
        <a href="/assets/images/magic-spring-quest/found-it.png" class="gallery-link" data-caption="And here is our item!">
            <img src="/assets/images/magic-spring-quest/found-it.png" alt="The Bottle of Magic Spring" class="fullwidth" />
        </a>
        
        <figcaption class="gallery-caption">
            And here is our item!
        </figcaption>
        
    </figure>
</div>

<p>And it looks like we were correct! Here is our item, SacredObject_119.</p>

<p>We now know what to look for. If we scroll down our SacredObject list, something
immediately pops out.</p>

<div class="gallery gallery-single" data-gallery="/assets/images/magic-spring-quest/more-info.png">
    <figure class="gallery-item">
        <a href="/assets/images/magic-spring-quest/more-info.png" class="gallery-link" data-caption="It seems we have some text files over here!">
            <img src="/assets/images/magic-spring-quest/more-info.png" alt="Configuration file" class="fullwidth" />
        </a>
        
        <figcaption class="gallery-caption">
            It seems we have some text files over here!
        </figcaption>
        
    </figure>
</div>

<p>I believe the information we are looking for is somewhere here. SacredObjectCfg is the 
biggest one of all of those, so it will probably contain all pertinent information for us.
This editor is a little unwieldy, so let’s export this text asset and take a better look.</p>

<div class="gallery gallery-single" data-gallery="/assets/images/magic-spring-quest/better-look.png">
    <figure class="gallery-item">
        <a href="/assets/images/magic-spring-quest/better-look.png" class="gallery-link" data-caption="Ah, much better...">
            <img src="/assets/images/magic-spring-quest/better-look.png" alt="Item configuration" class="fullwidth" />
        </a>
        
        <figcaption class="gallery-caption">
            Ah, much better...
        </figcaption>
        
    </figure>
</div>

<p>It’s much better to look in a text editor! We can see here our item, 119, and we can infer some information based on knowledge of the game.
I know that <em>Amelia’s Contract</em> is a multiple phase item, where buying the first one unlocks the second one.
Annd that explains why it has join conditions and exit conditions.
Our item, however, is particularly interesting, for several reasons :</p>

<ol>
  <li>Because it doesn’t have any special conditions whatsoever.</li>
  <li>It’s part of item pool (<code class="language-plaintext highlighter-rouge">Group_Type</code>) 999, which looks like a special pool.</li>
  <li>It’s always available, always visible, but its weight (I assume chance to show up?) is quite low.</li>
</ol>

<p>If we look at the other items in pool 999, and we cross-reference them with the graphical assets, 
they’re… the starting items.</p>

<p>Wait, you’re telling me that this elusive item is supposed to be a START OF THE RUN item?</p>

<p>Unlike the other starting items you can pick from, there are two things of note in particular : 
one of them is the weight which is lower compared to everything else, and second is that it doesn’t have a function.
Everything else does, but this one doesn’t. And since function numbers increment, this one gets skipped, so it’s not like someone forgot to write it in.</p>

<h3 id="conclusion">Conclusion</h3>

<p>So, what can we infer from this information?</p>

<p>I think that this is an unfinished item. It was probably meant to be cut from the final release,
but, for whatever reason, they must have forgotten about it, making obtaining the achievement
for collecting all the items impossible.</p>

<p>In that case …</p>

<div class="gallery gallery-single" data-gallery="/assets/images/magic-spring-quest/save-edit.png">
    <figure class="gallery-item">
        <a href="/assets/images/magic-spring-quest/save-edit.png" class="gallery-link" data-caption="We do a little save editing.">
            <img src="/assets/images/magic-spring-quest/save-edit.png" alt="Editing the Save File" class="fullwidth" />
        </a>
        
        <figcaption class="gallery-caption">
            We do a little save editing.
        </figcaption>
        
    </figure>
</div>

<p>I’m just going to help myself, by making a small addition to my save file.</p>

<p>Hope this was an enjoyable read for you, as it was a fun exploration for me.</p>

<p>See you next time!</p>]]></content><author><name>Shaddox</name></author><category term="tech" /><summary type="html"><![CDATA[Time to find this elusive item, one way or another!]]></summary></entry><entry><title type="html">Audio Tests in Games are underrated</title><link href="https://shaddox.neocities.org/tech/2025/10/30/jukeboxes-in-games.html" rel="alternate" type="text/html" title="Audio Tests in Games are underrated" /><published>2025-10-30T00:23:27+02:00</published><updated>2025-10-30T00:23:27+02:00</updated><id>https://shaddox.neocities.org/tech/2025/10/30/jukeboxes-in-games</id><content type="html" xml:base="https://shaddox.neocities.org/tech/2025/10/30/jukeboxes-in-games.html"><![CDATA[<p>Heya!</p>

<p>I’m back again from my new computer! It was surprisingly difficult to set everything up 
the way I wanted, so I chipped at it little by little. I also switched operating system to CachyOS and
my desktop environment to KDE, so there was also a learning curve to it.</p>

<p>While moving things around, I think I may have did something to my audio setup, and I needed
a continuous, stable source of audio as I fine-tune configurations around. Videos aren’t going to cut it,
nor music because of oscillating audio rates, fade-ins, etc.</p>

<p>Suddenly, I remembered that some of my favorite games have audio tests, and surprisingly they serve their purpose quite well!</p>

<p>It made me think… why do games even <em>have</em> these audio test menus in the first place?<br />
They feel like such a niche thing to keep around, and yet they’ve been part of gaming history for decades.</p>

<div class="gallery gallery-single" data-gallery="/assets/images/audio-rooms/caladrius.jpg">
    <figure class="gallery-item">
        <a href="/assets/images/audio-rooms/caladrius.jpg" class="gallery-link" data-caption="The Caladrius Blaze audio room, which helped me debug my audio issues">
            <img src="/assets/images/audio-rooms/caladrius.jpg" alt="Caladrius Blaze Audio Room" class="fullwidth" />
        </a>
        
        <figcaption class="gallery-caption">
            The Caladrius Blaze audio room, which helped me debug my audio issues
        </figcaption>
        
    </figure>
</div>

<p>Originally, they weren’t meant for players at all.</p>

<p>Back in the 8-bit and 16-bit days, “Sound Tests” were developer tools.<br />
Programmers used them to make sure every sound effect and song played correctly on the actual hardware.<br />
Games were burned onto cartridges, and debugging audio wasn’t as simple as opening a waveform editor : you needed an in-game way to trigger each track and confirm the sound chip behaved.<br />
So these menus existed to test <em>every beep, crash, and explosion</em> one by one.</p>

<p>Sometimes developers just left them in, accessible by a cheat code or tucked away in the options menu.<br />
<strong>Sonic the Hedgehog</strong> is probably the most famous example : its Sound Test doubled as a hidden debug tool, but it also let curious players play every piece of music from Green Hill Zone to the boss theme.<br />
<strong>Mega Man</strong>, <strong>Gradius</strong>, and plenty of other games followed the same pattern.</p>

<div class="gallery gallery-single" data-gallery="/assets/images/audio-rooms/sonanyl.png">
    <figure class="gallery-item">
        <a href="/assets/images/audio-rooms/sonanyl.png" class="gallery-link" data-caption="Sona-Nyl of the Violet Shadows Music Room">
            <img src="/assets/images/audio-rooms/sonanyl.png" alt="Sona-Nyl of the Violet Shadows Audio Room" class="fullwidth" />
        </a>
        
        <figcaption class="gallery-caption">
            Sona-Nyl of the Violet Shadows Music Room
        </figcaption>
        
    </figure>
</div>

<p>Then, somewhere in the 90s, something changed.<br />
People started to <em>love</em> game music for its own sake, not just as background noise but as part of the experience.<br />
And suddenly, those sound test menus became a form of <em>fan service</em>.<br />
Developers polished them up and left them in intentionally, as a kind of audio museum you could explore after finishing the game.</p>

<div class="gallery gallery-single" data-gallery="/assets/images/audio-rooms/gearsofdragoon.png">
    <figure class="gallery-item">
        <a href="/assets/images/audio-rooms/gearsofdragoon.png" class="gallery-link" data-caption="Gears of Dragoon unlocks music as you hear it">
            <img src="/assets/images/audio-rooms/gearsofdragoon.png" alt="Gears of Dragoon Audio Room" class="fullwidth" />
        </a>
        
        <figcaption class="gallery-caption">
            Gears of Dragoon unlocks music as you hear it
        </figcaption>
        
    </figure>
</div>

<p>Today, these features quietly live on in different forms.<br />
Sometimes as calibration tools in rhythm games or shooters, a way to fine-tune sync, channel balance, or spatial audio.<br />
Other times, as an extra that is added as fan service.</p>

<div class="gallery gallery-single" data-gallery="/assets/images/audio-rooms/studysteady.png">
    <figure class="gallery-item">
        <a href="/assets/images/audio-rooms/studysteady.png" class="gallery-link" data-caption="Study Steady has a very pleasant audio room">
            <img src="/assets/images/audio-rooms/studysteady.png" alt="Study Steady Audio Room" class="fullwidth" />
        </a>
        
        <figcaption class="gallery-caption">
            Study Steady has a very pleasant audio room
        </figcaption>
        
    </figure>
</div>

<p>After spending a few evenings hopping between these sound rooms, I realized how rare it has become for games to offer something so calm and self-contained.<br />
No timers, no objectives. Just a space to listen, to appreciate, and in my case, to test a sound setup.<br />
What started as a debugging utility became one of the most peaceful features in gaming,<br />
A reminder that sometimes the best way to experience a game’s soul is simply to <em>listen</em>.</p>]]></content><author><name>Shaddox</name></author><category term="tech" /><summary type="html"><![CDATA[Testing my headphones with audio tests in games]]></summary></entry><entry><title type="html">Five free fun games to play with online friends</title><link href="https://shaddox.neocities.org/gaming/2025/06/22/five-games-to-play-with-friends.html" rel="alternate" type="text/html" title="Five free fun games to play with online friends" /><published>2025-06-22T00:00:00+03:00</published><updated>2025-06-22T00:00:00+03:00</updated><id>https://shaddox.neocities.org/gaming/2025/06/22/five-games-to-play-with-friends</id><content type="html" xml:base="https://shaddox.neocities.org/gaming/2025/06/22/five-games-to-play-with-friends.html"><![CDATA[<p>Heya! It feels nice to be active in online gaming communities, just hanging out with everyone and having fun.</p>

<p>So I thought it would be a fun idea to compile a list of games that meet the following criteria:</p>

<ul>
  <li>enjoyable with an arbitrary number of players</li>
  <li>as little friction as possible (no accounts or downloads)</li>
  <li>easy to pick up as you go</li>
  <li>doesn’t expose IP addresses for security reasons</li>
</ul>

<h2 id="1-bonkio">1. <a href="https://bonk.io/">Bonk.io</a></h2>

<div class="gallery gallery-single" data-gallery="/assets/images/games/games-with-friends/bonk.webp">
    <figure class="gallery-item">
        <a href="/assets/images/games/games-with-friends/bonk.webp" class="gallery-link" data-caption="Ready to bonk!!">
            <img src="/assets/images/games/games-with-friends/bonk.webp" alt="Bonk Screenshot" />
        </a>
        
        <figcaption class="gallery-caption">
            Ready to bonk!!
        </figcaption>
        
    </figure>
</div>

<table>
  <thead>
    <tr>
      <th style="text-align: center">#</th>
      <th style="text-align: left">Feature</th>
      <th style="text-align: left">Value</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: center">1</td>
      <td style="text-align: left">Number of players</td>
      <td style="text-align: left">1-8</td>
    </tr>
    <tr>
      <td style="text-align: center">2</td>
      <td style="text-align: left">Account</td>
      <td style="text-align: left">Optional</td>
    </tr>
    <tr>
      <td style="text-align: center">3</td>
      <td style="text-align: left">Friction</td>
      <td style="text-align: left">Frictionless</td>
    </tr>
    <tr>
      <td style="text-align: center">4</td>
      <td style="text-align: left">Details</td>
      <td style="text-align: left">Browser game</td>
    </tr>
  </tbody>
</table>

<p>Bonk is a browser game where you bump into other people and try to push them into oblivion.</p>

<p>There are a lot of alternate game modes such as football, volleyball, dodgeball and accessories you can use like a grappling hook or bow and arrow.</p>

<p>This one is very fun, highly recommended!</p>

<h2 id="2-poker-now">2. <a href="https://www.pokernow.club/">Poker now</a></h2>

<div class="gallery gallery-single" data-gallery="/assets/images/games/games-with-friends/pokernow.png">
    <figure class="gallery-item">
        <a href="/assets/images/games/games-with-friends/pokernow.png" class="gallery-link" data-caption="Poker with the boys.">
            <img src="/assets/images/games/games-with-friends/pokernow.png" alt="Poker Now Screenshot" />
        </a>
        
        <figcaption class="gallery-caption">
            Poker with the boys.
        </figcaption>
        
    </figure>
</div>

<table>
  <thead>
    <tr>
      <th style="text-align: center">#</th>
      <th style="text-align: left">Feature</th>
      <th style="text-align: left">Value</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: center">1</td>
      <td style="text-align: left">Number of players</td>
      <td style="text-align: left">1-8</td>
    </tr>
    <tr>
      <td style="text-align: center">2</td>
      <td style="text-align: left">Account</td>
      <td style="text-align: left">Optional</td>
    </tr>
    <tr>
      <td style="text-align: center">3</td>
      <td style="text-align: left">Friction</td>
      <td style="text-align: left">Frictionless</td>
    </tr>
    <tr>
      <td style="text-align: center">4</td>
      <td style="text-align: left">Details</td>
      <td style="text-align: left">Browser game</td>
    </tr>
  </tbody>
</table>

<p>An online poker game with just virtual chips.</p>

<p>You can play No-Limit Texas Hold’em and Omaha Limit Hi and Hi/Lo.</p>

<h2 id="3-golf-party">3. <a href="https://golfparty.io/">Golf Party</a></h2>

<div class="gallery gallery-single" data-gallery="/assets/images/games/games-with-friends/golfparty.png">
    <figure class="gallery-item">
        <a href="/assets/images/games/games-with-friends/golfparty.png" class="gallery-link" data-caption="Fore!">
            <img src="/assets/images/games/games-with-friends/golfparty.png" alt="Golf Party Screenshot" />
        </a>
        
        <figcaption class="gallery-caption">
            Fore!
        </figcaption>
        
    </figure>
</div>

<table>
  <thead>
    <tr>
      <th style="text-align: center">#</th>
      <th style="text-align: left">Feature</th>
      <th style="text-align: left">Value</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: center">1</td>
      <td style="text-align: left">Number of players</td>
      <td style="text-align: left">1-6</td>
    </tr>
    <tr>
      <td style="text-align: center">2</td>
      <td style="text-align: left">Account</td>
      <td style="text-align: left">Optional</td>
    </tr>
    <tr>
      <td style="text-align: center">3</td>
      <td style="text-align: left">Friction</td>
      <td style="text-align: left">Frictionless</td>
    </tr>
    <tr>
      <td style="text-align: center">4</td>
      <td style="text-align: left">Details</td>
      <td style="text-align: left">Browser game</td>
    </tr>
  </tbody>
</table>

<p>This is a pretty decent golf game. However, the fact that it’s scored by time and not by strokes can be a bit of a turn-off for some.</p>

<h2 id="4-mini-golf-club">4. <a href="https://www.crazygames.ro/joc/mini-golf-club">Mini Golf Club</a></h2>

<div class="gallery gallery-single" data-gallery="/assets/images/games/games-with-friends/minigolfclub.png">
    <figure class="gallery-item">
        <a href="/assets/images/games/games-with-friends/minigolfclub.png" class="gallery-link" data-caption="Here we go again!">
            <img src="/assets/images/games/games-with-friends/minigolfclub.png" alt="Mini Golf Club Screenshot" />
        </a>
        
        <figcaption class="gallery-caption">
            Here we go again!
        </figcaption>
        
    </figure>
</div>

<table>
  <thead>
    <tr>
      <th style="text-align: center">#</th>
      <th style="text-align: left">Feature</th>
      <th style="text-align: left">Value</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: center">1</td>
      <td style="text-align: left">Number of players</td>
      <td style="text-align: left">1-6</td>
    </tr>
    <tr>
      <td style="text-align: center">2</td>
      <td style="text-align: left">Account</td>
      <td style="text-align: left">Optional</td>
    </tr>
    <tr>
      <td style="text-align: center">3</td>
      <td style="text-align: left">Friction</td>
      <td style="text-align: left">Frictionless</td>
    </tr>
    <tr>
      <td style="text-align: center">4</td>
      <td style="text-align: left">Details</td>
      <td style="text-align: left">Browser game</td>
    </tr>
  </tbody>
</table>

<p>This is, in my opinion, a much better game because the score is calculated by strokes.</p>

<h2 id="5-cardgamesio">5. <a href="https://cardgames.io/">CardGames.io</a></h2>

<div class="gallery gallery-single" data-gallery="/assets/images/games/games-with-friends/cardgamesio.png">
    <figure class="gallery-item">
        <a href="/assets/images/games/games-with-friends/cardgamesio.png" class="gallery-link" data-caption="Quote the selection of games...">
            <img src="/assets/images/games/games-with-friends/cardgamesio.png" alt="cardgames.io Screenshot" />
        </a>
        
        <figcaption class="gallery-caption">
            Quote the selection of games...
        </figcaption>
        
    </figure>
</div>

<table>
  <thead>
    <tr>
      <th style="text-align: center">#</th>
      <th style="text-align: left">Feature</th>
      <th style="text-align: left">Value</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: center">1</td>
      <td style="text-align: left">Number of players</td>
      <td style="text-align: left">1,2,3,4 (depends on game)</td>
    </tr>
    <tr>
      <td style="text-align: center">2</td>
      <td style="text-align: left">Account</td>
      <td style="text-align: left">None</td>
    </tr>
    <tr>
      <td style="text-align: center">3</td>
      <td style="text-align: left">Friction</td>
      <td style="text-align: left">Frictionless</td>
    </tr>
    <tr>
      <td style="text-align: center">4</td>
      <td style="text-align: left">Details</td>
      <td style="text-align: left">Browser game</td>
    </tr>
  </tbody>
</table>

<p>This is great if you want to play classic games, as there is quite a selection of them!</p>

<p>However, if you need to accommodate a lot of players, this is not the place to be…</p>

<p>As a way to express my gratitude for sticking so far, I will add a few bonus games that are really interesting, in my opinion, 
but did not make the cut due to some restrictions.</p>

<h2 id="power-bomberman"><a href="https://www.bombermanboard.com/viewtopic.php?t=1925">Power Bomberman</a></h2>

<div class="gallery gallery-single" data-gallery="/assets/images/games/games-with-friends/powerbomberman_2.webp">
    <figure class="gallery-item">
        <a href="/assets/images/games/games-with-friends/powerbomberman_2.webp" class="gallery-link" data-caption="Trapped!">
            <img src="/assets/images/games/games-with-friends/powerbomberman_2.webp" alt="Power Bomberman Screenshot" />
        </a>
        
        <figcaption class="gallery-caption">
            Trapped!
        </figcaption>
        
    </figure>
</div>

<table>
  <thead>
    <tr>
      <th style="text-align: center">#</th>
      <th style="text-align: left">Feature</th>
      <th style="text-align: left">Value</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: center">1</td>
      <td style="text-align: left">Number of players</td>
      <td style="text-align: left">1-12</td>
    </tr>
    <tr>
      <td style="text-align: center">2</td>
      <td style="text-align: left">Account</td>
      <td style="text-align: left">None</td>
    </tr>
    <tr>
      <td style="text-align: center">3</td>
      <td style="text-align: left">Friction</td>
      <td style="text-align: left">Some friction</td>
    </tr>
    <tr>
      <td style="text-align: center">4</td>
      <td style="text-align: left">Details</td>
      <td style="text-align: left">Requires download (606.5MB)<br />Requires configuration<br />Windows/Mac/Linux(Wine)</td>
    </tr>
  </tbody>
</table>

<p>This game is … a surprising amount of fun, if you enjoy bomberman games!</p>

<p>The amount of options available for playing is quite insane, 
as you can recreate virtually any of your favorite bomberman games from the really extensive list of settings.</p>

<h2 id="tetrio"><a href="https://tetr.io/">TETR.IO</a></h2>

<div class="gallery gallery-single" data-gallery="/assets/images/games/games-with-friends/tetrio.png">
    <figure class="gallery-item">
        <a href="/assets/images/games/games-with-friends/tetrio.png" class="gallery-link" data-caption="Stack, stack...">
            <img src="/assets/images/games/games-with-friends/tetrio.png" alt="TETR.IO Screenshot" />
        </a>
        
        <figcaption class="gallery-caption">
            Stack, stack...
        </figcaption>
        
    </figure>
</div>

<table>
  <thead>
    <tr>
      <th style="text-align: center">#</th>
      <th style="text-align: left">Feature</th>
      <th style="text-align: left">Value</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: center">1</td>
      <td style="text-align: left">Number of players</td>
      <td style="text-align: left">1-100+</td>
    </tr>
    <tr>
      <td style="text-align: center">2</td>
      <td style="text-align: left">Account</td>
      <td style="text-align: left">Recommended</td>
    </tr>
    <tr>
      <td style="text-align: center">3</td>
      <td style="text-align: left">Friction</td>
      <td style="text-align: left">Some friction</td>
    </tr>
    <tr>
      <td style="text-align: center">4</td>
      <td style="text-align: left">Details</td>
      <td style="text-align: left">While can be played in a browser, performance is much better via download!<br />Windows/Mac/Linux</td>
    </tr>
  </tbody>
</table>

<p>If you enjoy a full-on Tetris Battle Royale, this is the game for you!</p>

<p>Has a really decent number of customizations, which may be overwhelming for new players.</p>

<h2 id="rabbit-and-steel"><a href="https://store.steampowered.com/app/2132850/Rabbit_and_Steel/">Rabbit and Steel</a></h2>

<div class="gallery gallery-single" data-gallery="/assets/images/games/games-with-friends/rabbitandsteel.jpg">
    <figure class="gallery-item">
        <a href="/assets/images/games/games-with-friends/rabbitandsteel.jpg" class="gallery-link" data-caption="Spread out!">
            <img src="/assets/images/games/games-with-friends/rabbitandsteel.jpg" alt="Rabbit and Steel Screenshot" />
        </a>
        
        <figcaption class="gallery-caption">
            Spread out!
        </figcaption>
        
    </figure>
</div>

<table>
  <thead>
    <tr>
      <th style="text-align: center">#</th>
      <th style="text-align: left">Feature</th>
      <th style="text-align: left">Value</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: center">1</td>
      <td style="text-align: left">Number of players</td>
      <td style="text-align: left">1-4</td>
    </tr>
    <tr>
      <td style="text-align: center">2</td>
      <td style="text-align: left">Account</td>
      <td style="text-align: left">Not Really (Just Steam)</td>
    </tr>
    <tr>
      <td style="text-align: center">3</td>
      <td style="text-align: left">Friction</td>
      <td style="text-align: left">Some friction</td>
    </tr>
    <tr>
      <td style="text-align: center">4</td>
      <td style="text-align: left">Details</td>
      <td style="text-align: left">This is a commercial game at €15</td>
    </tr>
  </tbody>
</table>

<p>If you enjoy MMO Raids with your friends, this is basically that.</p>

<p>You pick one of the five available rabbits, learn your rotations, find items and try to beat raid bosses.</p>

<p>The encounters are designed in the style of a MMO, so expect a lot of spacing or even DPS checks.</p>

<p>I felt that I basically had to include it since it’s such a fun game!</p>

<p>Thank you all for reading, and see you next time!</p>]]></content><author><name>Shaddox</name></author><category term="gaming" /><summary type="html"><![CDATA[Here are five games you can play online for free with your buddies!]]></summary></entry><entry><title type="html">Online Resources</title><link href="https://shaddox.neocities.org/tech/2025/06/01/online-resources.html" rel="alternate" type="text/html" title="Online Resources" /><published>2025-06-01T02:23:27+03:00</published><updated>2025-06-01T02:23:27+03:00</updated><id>https://shaddox.neocities.org/tech/2025/06/01/online-resources</id><content type="html" xml:base="https://shaddox.neocities.org/tech/2025/06/01/online-resources.html"><![CDATA[<p>Heya! I decided to put together this simple post to highlight some places where you can find cool stuff on the internet.</p>

<h2 id="vnwiki"><a href="https://www.vnwiki.xyz/">VNWiki</a></h2>

<p>VNWiki is an invaluable resource for running visual novels, especially for Linux users. It lists the dependencies you might need and has guides for setting up things like Textractor.</p>

<p>I’ve contributed a few times there myself — highly recommended!</p>

<h2 id="internet-archive"><a href="https://archive.org/">Internet Archive</a></h2>

<p>Internet Archive is great, especially for finding old or esoteric software and drivers — from old Japanese games to <a href="https://archive.org/details/psm-player-v-3.80">esoteric Japanese polyphonic ringtone players</a>.</p>

<p>One of a kind!</p>

<h2 id="wotakuwiki"><a href="https://wotaku.wiki/">WotakuWiki</a></h2>

<p>WotakuWiki is a repository of places to find things on the internet, mostly related to Japanese media.</p>

<p>They have indexes for anime streaming, manga, games, music, and light novels. Quite invaluable!</p>

<h2 id="free-media-heck-yeah"><a href="https://fmhy.net/">Free Media Heck Yeah</a></h2>

<p>FMHY is another repository for finding things on the internet, but this one is more oriented towards general use. It has an <strong>obscene</strong> amount of stuff, from knowledge to media. Great reference!</p>

<h2 id="retrogametalk"><a href="https://retrogametalk.com">RetroGameTalk</a></h2>

<p>RGT is a forum mostly oriented around old games. Their repository is quite unique!</p>

<h2 id="ebooks-on-irchighwaynet">#ebooks on <a href="https://webchat.irchighway.net/">irc.highway.net</a></h2>

<p>This IRC channel has come in clutch for me many times when trying to find specific books.<br />
This won’t work in a browser — you’ll need an IRC client with
<span class="glossary-term">
  XDCC
  <button class="glossary-hint" type="button" data-definition="A way to share files among users using IRC as a host service." title="A way to share files among users using IRC as a host service.">
    ❔
    <span class="glossary-tooltip">A way to share files among users using IRC as a host service.</span>
  </button>
</span>
 capabilities.</p>

<p>Highly recommended for rare finds!</p>

<h2 id="standard-e-books"><a href="https://standardebooks.org/">Standard E-books</a></h2>

<p>What they lack in quantity, they absolutely make up for in quality. This site has honestly made me <strong>a lot</strong> pickier when it comes to ebooks.</p>

<p>Standard E-books integrates fantastically with my readers of choice, and the attention to detail makes me blush — fantastic fonts, careful typesetting, proper commas and quotes, good grammar, and it behaves just as well zoomed in.<br />
I can’t praise them enough.</p>

<p>I’ve read quite a few titles from here, like <em>Notes from Underground</em> or <em>A Study in Scarlet</em>, and it’s always the first place I go when looking for a book.</p>

<h2 id="watchiptv"><a href="https://www.watchiptv.xyz/">WatchIPTV</a></h2>

<p>WatchIPTV is a repository of online TV stations. Great if you idly enjoy watching TV.</p>]]></content><author><name>Shaddox</name></author><category term="tech" /><summary type="html"><![CDATA[A simple guide for finding stuff on the internet]]></summary></entry><entry><title type="html">Having fun in Girls of the Tower</title><link href="https://shaddox.neocities.org/gaming/2025/05/02/having-fun-in-girls-of-the-tower.html" rel="alternate" type="text/html" title="Having fun in Girls of the Tower" /><published>2025-05-02T23:05:00+03:00</published><updated>2025-05-02T23:05:00+03:00</updated><id>https://shaddox.neocities.org/gaming/2025/05/02/having-fun-in-girls-of-the-tower</id><content type="html" xml:base="https://shaddox.neocities.org/gaming/2025/05/02/having-fun-in-girls-of-the-tower.html"><![CDATA[<!-- _includes/media-info.html -->
<div class="media-info-card">
    <div class="media-cover">
        <img src="/assets/images/screenshots/girls-of-the-tower/cover.webp" alt="Girls of the Tower cover" loading="lazy" />
    </div>
    <div class="media-details">
        <h3 class="media-title">Girls of the Tower</h3>
        
        <div class="media-field">
            <span class="field-label">Original Title:</span>
            <span class="field-value">魔塔少女 (Mótǎ Shàonǚ)</span>
        </div>
        

        
        <div class="media-field">
            <span class="field-label">Year:</span>
            <span class="field-value">2024</span>
        </div>
        

        
        <div class="media-field">
            <span class="field-label">Platform:</span>
            <span class="field-value">Steam, Nintendo Switch</span>
        </div>
        

        
        <div class="media-field">
            <span class="field-label">Web:</span>
            <a href="https://store.steampowered.com/app/2688680/Girls_of_The_Tower/" class="field-value link" target="_blank" rel="noopener">Official Website</a>
        </div>
        
    </div>
</div>

<p>Girls of the Tower is quite an interesting gem of a game. It’s an auto-battler
with a surprising amount of depth to it, which hopefully my words can unfold through my adventure.</p>

<h3 id="character-selection">Character selection</h3>

<div class="gallery gallery-single" data-gallery="/assets/images/screenshots/girls-of-the-tower/party.jpg">
    <figure class="gallery-item">
        <a href="/assets/images/screenshots/girls-of-the-tower/party.jpg" class="gallery-link" data-caption="What shall I pick?">
            <img src="/assets/images/screenshots/girls-of-the-tower/party.jpg" alt="Character Selection Screen" />
        </a>
        
        <figcaption class="gallery-caption">
            What shall I pick?
        </figcaption>
        
    </figure>
</div>

<p>We start our humble adventure at the selection screen. Unlike other games of its genre, here, you can pick a pair of
commanders, each commander bringing something unique to the table:</p>

<ul>
  <li>an exclusive minion tribe</li>
  <li>certain types of buff/debuff spells</li>
  <li>certain type of elemental damage</li>
</ul>

<p>I went with Kamisari and Asuka, since I never tried them together. For my starting treasure, I picked <em>Thieves’ Badge</em>,
which gives me a one star copy of Kun at each level up. Because I just unlocked it and wanted to try it out!</p>

<h3 id="general-plan">General Plan</h3>

<div class="gallery gallery-single" data-gallery="/assets/images/screenshots/girls-of-the-tower/strategy.jpg">
    <figure class="gallery-item">
        <a href="/assets/images/screenshots/girls-of-the-tower/strategy.jpg" class="gallery-link" data-caption="Kun seems quite strong!">
            <img src="/assets/images/screenshots/girls-of-the-tower/strategy.jpg" alt="Combat" />
        </a>
        
        <figcaption class="gallery-caption">
            Kun seems quite strong!
        </figcaption>
        
    </figure>
</div>

<p>Kun himself seems to be quite strong, especially early! He is able to retaliate against units using skills, and he also
has a quite potent stun ability! By taking an item encounter, we are able to find an item that turns him into a CC
machine.</p>

<div class="gallery gallery-single" data-gallery="/assets/images/screenshots/girls-of-the-tower/kun.jpg">
    <figure class="gallery-item">
        <a href="/assets/images/screenshots/girls-of-the-tower/kun.jpg" class="gallery-link" data-caption="We are ready to stun into oblivion">
            <img src="/assets/images/screenshots/girls-of-the-tower/kun.jpg" alt="Kun Equipment" />
        </a>
        
        <figcaption class="gallery-caption">
            We are ready to stun into oblivion
        </figcaption>
        
    </figure>
</div>

<p>Since I’m playing on Hell difficulty, there is something quite valuable to learn from this.</p>

<div class="tip-box">
    <strong class="tip-title">💡 Tip:</strong>
    <p>Always take encounters for things you are hurting for. What you get from them is much better than what's in town
shops.</p>
</div>

<p>Since we are playing protectors, most of our units are front-line brawlers. This means that we will need a bit of help
from magic to help us deal with the backline.</p>

<h3 id="magic-system">Magic System</h3>

<p>The magic system in this game is deceptively simple : each of the commander comes with their own set of magic cards, in
5 rarities, like in a MMO : white, green, blue, purple, yellow,
each more potent than the last. However, what makes the magic system fascinating is the fact that you can augment each
card with gems. One gem for white, green and blue rarity, and two gems for purple and yellow.</p>

<p>Mind you, the gems are VERY potent : they can turn single target magic into AoE magic, or AoE magic into global magic,
change its cost to the last card played, bring it back to hand but more expensive.</p>

<p>I was lucky that through a gem encounter, I was able to equip a card with a gem that mirrors the cost of the previous
card and a gem that brings it back.</p>

<div class="gallery gallery-single" data-gallery="/assets/images/screenshots/girls-of-the-tower/loop-gem.jpg">
    <figure class="gallery-item">
        <a href="/assets/images/screenshots/girls-of-the-tower/loop-gem.jpg" class="gallery-link" data-caption="Could we do something with this?">
            <img src="/assets/images/screenshots/girls-of-the-tower/loop-gem.jpg" alt="Our first gem card" />
        </a>
        
        <figcaption class="gallery-caption">
            Could we do something with this?
        </figcaption>
        
    </figure>
</div>

<p>Why, yes we can. Which brings me to the next tip I have.</p>

<div class="tip-box">
    <strong class="tip-title">💡 Tip:</strong>
    <p>A simple, but potent strategy is to equip two cards with gems that copy the previous cost and come back.</p>
</div>

<p>This strategy is not without flaws, however :</p>

<ul>
  <li>gems require commitment, once you socket it in you can’t take it out</li>
  <li>you need specific gems</li>
  <li>you need a very cheap spell as an ignition key for your loop</li>
  <li>once you start, and you need something else, you will have to decide if breaking the loop is worth it</li>
  <li>opportunity cost is less potency, since you will not be equipping gems that make the cards stronger</li>
</ul>

<p>So, we will have to farm gem encounters, hoping to find another pair similar to this, so we could form a loop.</p>

<h3 id="story">Story</h3>

<p>Before continuing with my story, I’d like to take a moment to talk about the game’s story.</p>

<div class="gallery gallery-single" data-gallery="/assets/images/screenshots/girls-of-the-tower/story-sequence.jpg">
    <figure class="gallery-item">
        <a href="/assets/images/screenshots/girls-of-the-tower/story-sequence.jpg" class="gallery-link" data-caption="Story Sequence">
            <img src="/assets/images/screenshots/girls-of-the-tower/story-sequence.jpg" alt="Kamisari and Asuka Story Sequence" />
        </a>
        
        <figcaption class="gallery-caption">
            Story Sequence
        </figcaption>
        
    </figure>
</div>

<p>It is played out through these visual novel-style intermissions. There are no CGs other than the backgrounds and the
characters, so they are quite minimalist.</p>

<p>The translation is … less than ideal. It’s a machine translation most likely, and it hurts the game a bit. You will
struggle to figure out
on which of your minions a minion exclusive item is supposed to go on. This is also available for relics, but at least
for relics it tells you how many of the specific minion type you have.</p>

<p>However, it’s not all bad. Each pair has their own unique storyline, and once you play through a few of them,
they are surprisingly consistent. Some events will make far more sense when you understand the true nature of a
character,
such as Kamisari <span class="spoiler">being a demon lord</span>.</p>

<p>The story is light and easy-going, with a healthy mixture of comedy, ecchi elements and seriousness. It is also
<em>extremely</em> chinese.</p>

<p>I have some familiarity with chinese culture, so some obvious puns like
<span class="glossary-term">
  Lord Aini
  <button class="glossary-hint" type="button" data-definition="&#39;Aini&#39; as a pun on &#39;I love you&#39; (爱你)" title="&#39;Aini&#39; as a pun on &#39;I love you&#39; (爱你)">
    ❔
    <span class="glossary-tooltip">'Aini' as a pun on 'I love you' (爱你)</span>
  </button>
</span>
 do 
not escape me, but there are also modern cultural references like 
<span class="glossary-term">
  leftover women.
  <button class="glossary-hint" type="button" data-definition="&#39;Leftover woman&#39; (剩女) is a culturally loaded term in China to refer to single older women." title="&#39;Leftover woman&#39; (剩女) is a culturally loaded term in China to refer to single older women.">
    ❔
    <span class="glossary-tooltip">'Leftover woman' (剩女) is a culturally loaded term in China to refer to single older women.</span>
  </button>
</span></p>

<p>I have even found some historical references, such as
<span class="glossary-term">
  the red bandits.
  <button class="glossary-hint" type="button" data-definition="The red bandits are a somewhat tongue-in-cheek reference to the red turban rebellion" title="The red bandits are a somewhat tongue-in-cheek reference to the red turban rebellion">
    ❔
    <span class="glossary-tooltip">The red bandits are a somewhat tongue-in-cheek reference to the red turban rebellion</span>
  </button>
</span></p>

<h3 id="back-to-our-other-story">Back to our other story</h3>

<p>Now, let’s go back to our other story. After grinding for maybe 10 gem fights, we finally have it … the final piece of
our loop combo.</p>

<div class="gallery gallery-single" data-gallery="/assets/images/screenshots/girls-of-the-tower/final-piece.jpg">
    <figure class="gallery-item">
        <a href="/assets/images/screenshots/girls-of-the-tower/final-piece.jpg" class="gallery-link" data-caption="The final gem has arrived!">
            <img src="/assets/images/screenshots/girls-of-the-tower/final-piece.jpg" alt="Our comeback gem" />
        </a>
        
        <figcaption class="gallery-caption">
            The final gem has arrived!
        </figcaption>
        
    </figure>
</div>

<p>Let’s carefully sock it in into our global spell …</p>

<div class="gallery gallery-single" data-gallery="/assets/images/screenshots/girls-of-the-tower/final-piece-in-place.jpg">
    <figure class="gallery-item">
        <a href="/assets/images/screenshots/girls-of-the-tower/final-piece-in-place.jpg" class="gallery-link" data-caption="The gem goes into the socket, locking it in.">
            <img src="/assets/images/screenshots/girls-of-the-tower/final-piece-in-place.jpg" alt="Carefully putting the gem in its place" />
        </a>
        
        <figcaption class="gallery-caption">
            The gem goes into the socket, locking it in.
        </figcaption>
        
    </figure>
</div>

<p>Now we can finally loop our two cards!</p>

<div class="gallery gallery-single" data-gallery="/assets/images/screenshots/girls-of-the-tower/looping-spells.jpg">
    <figure class="gallery-item">
        <a href="/assets/images/screenshots/girls-of-the-tower/looping-spells.jpg" class="gallery-link" data-caption="Looping spells like a madman.">
            <img src="/assets/images/screenshots/girls-of-the-tower/looping-spells.jpg" alt="Looping spells" />
        </a>
        
        <figcaption class="gallery-caption">
            Looping spells like a madman.
        </figcaption>
        
    </figure>
</div>

<p>Well, after all this effort, all good things must come to an end, including our run.</p>

<p>I have started encountering problems regarding the minion pool. Since protectors are not a character exclusive tribe,
I eventually ran out of protectors to buy and I realized it too late. I tried augmenting it with magic users, but it was
too little, too late.</p>

<div class="gallery gallery-single" data-gallery="/assets/images/screenshots/girls-of-the-tower/final-battle.jpg">
    <figure class="gallery-item">
        <a href="/assets/images/screenshots/girls-of-the-tower/final-battle.jpg" class="gallery-link" data-caption="Our last stand.">
            <img src="/assets/images/screenshots/girls-of-the-tower/final-battle.jpg" alt="Our final battle" />
        </a>
        
        <figcaption class="gallery-caption">
            Our last stand.
        </figcaption>
        
    </figure>
</div>

<p>Unfortunately for us, this boss has fire resistance, so looping him with our fire spells was quite ineffective.
The final battle was not completely hopeless, since both Kun and my Explorer in the backline there had the ability to
stun,
just that it did not proc often enough to keep the boss perma-stunned.</p>

<div class="tip-box">
    <strong class="tip-title">💡 Tip:</strong>
    <p>Consult the monster glossary for non-commander exclusive tribes so you actually have enough to buy!</p>
</div>

<p>The run was, overall, very enjoyable, but if I am planning to try for more tribal achievements, I should be more careful
with my character selection.</p>

<h3 id="final-notes">Final Notes</h3>

<p>This game is quite cheap, but it does come with two pieces of DLC.</p>

<p>One of them is a character,
<span class="glossary-term">
  Decotine.
  <button class="glossary-hint" type="button" data-definition="This name is nonsense for any european, but for a chinese person, this kind of name is a very aristocratic european sounding one." title="This name is nonsense for any european, but for a chinese person, this kind of name is a very aristocratic european sounding one.">
    ❔
    <span class="glossary-tooltip">This name is nonsense for any european, but for a chinese person, this kind of name is a very aristocratic european sounding one.</span>
  </button>
</span></p>

<p>She comes with her own commander exclusive tribe, an array of frost spells and since each story with each pair is
unique, 4 additional stories.</p>

<p>The other one is a whole new game mode, <em>Chaos Mode</em>, where you can buy enemy minions to join your clause. Maybe I’ll do
a writing on a run there, some day.</p>

<p>Until then, sayonara, and thank you for being here!</p>]]></content><author><name>Shaddox</name></author><category term="gaming" /><summary type="html"><![CDATA[My adventure in Girls of the Tower]]></summary></entry><entry><title type="html">Custom RetroArch CRT Shader Presets for Sega Saturn</title><link href="https://shaddox.neocities.org/gaming/2025/04/20/custom-retroarch-shader-presets-for-sega-saturn.html" rel="alternate" type="text/html" title="Custom RetroArch CRT Shader Presets for Sega Saturn" /><published>2025-04-20T18:05:00+03:00</published><updated>2025-04-20T18:05:00+03:00</updated><id>https://shaddox.neocities.org/gaming/2025/04/20/custom-retroarch-shader-presets-for-sega-saturn</id><content type="html" xml:base="https://shaddox.neocities.org/gaming/2025/04/20/custom-retroarch-shader-presets-for-sega-saturn.html"><![CDATA[<p>I’ve been playing around with RetroArch shader stacks for Sega Saturn games recently, trying to dial in a nostalgic, warm CRT effect that still looks clean and readable on modern screens.</p>

<p>Here are three presets I’ve been enjoying:</p>

<hr />

<h2 id="-tokimeki-puzzledama--soft--warm-look">🎀 Tokimeki Puzzledama – Soft &amp; Warm Look</h2>

<p>This preset focuses on a clean CRT feel with soft halation, subtle bloom, and slightly boosted color.</p>

<div class="language-ini highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="py">COLOR_BOOST</span> <span class="p">=</span> <span class="s">"1.05"</span>
<span class="py">GAMMA_INPUT</span> <span class="p">=</span> <span class="s">"2.4"</span>
<span class="py">GAMMA_OUTPUT</span> <span class="p">=</span> <span class="s">"2.2"</span>
</code></pre></div></div>

<div class="gallery gallery-grid-3"><figure class="gallery-item">
        <a href="/assets/images/screenshots/tokimeki-warm-flat/boot.png" class="gallery-link" data-caption="Tokimeki Puzzledama Boot Screen">
            <img src="/assets/images/screenshots/tokimeki-warm-flat/boot.png" alt="Tokimeki Puzzledama Boot Image" />
        </a>
        
        <figcaption class="gallery-caption">Tokimeki Puzzledama Boot Screen</figcaption>
        
    </figure><figure class="gallery-item">
        <a href="/assets/images/screenshots/tokimeki-warm-flat/title.png" class="gallery-link" data-caption="Tokimeki Puzzledama Title Screen">
            <img src="/assets/images/screenshots/tokimeki-warm-flat/title.png" alt="Tokimeki Puzzledama Title Screen" />
        </a>
        
        <figcaption class="gallery-caption">Tokimeki Puzzledama Title Screen</figcaption>
        
    </figure><figure class="gallery-item">
        <a href="/assets/images/screenshots/tokimeki-warm-flat/game.png" class="gallery-link" data-caption="Tokimeki Puzzledama Game">
            <img src="/assets/images/screenshots/tokimeki-warm-flat/game.png" alt="Tokimeki Puzzledama Screenshot" />
        </a>
        
        <figcaption class="gallery-caption">Tokimeki Puzzledama Game</figcaption>
        
    </figure></div>

<h2 id="-tokimeki-puzzledama--curved-crt-glass">🌀 Tokimeki Puzzledama – Curved CRT Glass</h2>

<p>Same base as the soft preset above, but adds curvature using <code class="language-plaintext highlighter-rouge">ewa_curvature.slang</code> to simulate the slight bend of old CRT glass.</p>

<p>Perfect if you want that arcadey 90s screen feel without going overboard.</p>

<div class="gallery gallery-grid-3"><figure class="gallery-item">
        <a href="/assets/images/screenshots/tokimeki-warm-curved/boot.png" class="gallery-link" data-caption="Tokimeki Puzzledama Boot Screen">
            <img src="/assets/images/screenshots/tokimeki-warm-curved/boot.png" alt="Tokimeki Puzzledama Boot Image" />
        </a>
        
        <figcaption class="gallery-caption">Tokimeki Puzzledama Boot Screen</figcaption>
        
    </figure><figure class="gallery-item">
        <a href="/assets/images/screenshots/tokimeki-warm-curved/menu.png" class="gallery-link" data-caption="Tokimeki Puzzledama Title Screen">
            <img src="/assets/images/screenshots/tokimeki-warm-curved/menu.png" alt="Tokimeki Puzzledama Title Screen" />
        </a>
        
        <figcaption class="gallery-caption">Tokimeki Puzzledama Title Screen</figcaption>
        
    </figure><figure class="gallery-item">
        <a href="/assets/images/screenshots/tokimeki-warm-curved/game.png" class="gallery-link" data-caption="Tokimeki Puzzledama Game">
            <img src="/assets/images/screenshots/tokimeki-warm-curved/game.png" alt="Tokimeki Puzzledama Screenshot" />
        </a>
        
        <figcaption class="gallery-caption">Tokimeki Puzzledama Game</figcaption>
        
    </figure></div>

<h2 id="-akumajo-dracula-x--darker-gothic-look">🦇 Akumajo Dracula X – Darker Gothic Look</h2>

<p>This one pulls the brightness down just a touch for a more moody, gothic presentation—perfect for Dracula X.</p>

<div class="language-ini highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="py">COLOR_BOOST</span> <span class="p">=</span> <span class="s">"1.08"</span>
<span class="py">GAMMA_INPUT</span> <span class="p">=</span> <span class="s">"2.4"</span>
<span class="py">GAMMA_OUTPUT</span> <span class="p">=</span> <span class="s">"2.1"</span>
</code></pre></div></div>

<div class="gallery gallery-grid-3"><figure class="gallery-item">
        <a href="/assets/images/screenshots/castlevania/title.png" class="gallery-link" data-caption="Akumajo Dracula X Title Screen">
            <img src="/assets/images/screenshots/castlevania/title.png" alt="Akumajo Dracula X Title Screen" />
        </a>
        
        <figcaption class="gallery-caption">Akumajo Dracula X Title Screen</figcaption>
        
    </figure><figure class="gallery-item">
        <a href="/assets/images/screenshots/castlevania/menu.png" class="gallery-link" data-caption="Akumajo Dracula X Menu Screen">
            <img src="/assets/images/screenshots/castlevania/menu.png" alt="Akumajo Dracula X Menu Screen" />
        </a>
        
        <figcaption class="gallery-caption">Akumajo Dracula X Menu Screen</figcaption>
        
    </figure><figure class="gallery-item">
        <a href="/assets/images/screenshots/castlevania/game.png" class="gallery-link" data-caption="Akumajo Dracula X Gameplay">
            <img src="/assets/images/screenshots/castlevania/game.png" alt="Akumajo Dracula X Screenshot" />
        </a>
        
        <figcaption class="gallery-caption">Akumajo Dracula X Gameplay</figcaption>
        
    </figure></div>

<p>A bit more contrast, a bit more drama. Looks great in candlelight 🌒</p>

<h2 id="-shader-stack-base">📂 Shader Stack Base</h2>

<p>All three use crt-easymode-halation as the core shader stack:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>linearize.slang

blur_horiz.slang

blur_vert.slang

threshold.slang

crt-easymode-halation.slang
</code></pre></div></div>

<p>The second one (curved) adds <code class="language-plaintext highlighter-rouge">ewa_curvature.slang</code> on top at the end, after everything else is applied.</p>

<p>To install, make sure your Retroarch installation is using the vulkan video driver, these will not work otherwise! 
Put them in the shaders directory, under slangp in their own directory. 
Technically, you can put them wherever you want, just make sure to edit the paths accordingly!</p>

<p>I hope you can enjoy them as well. They work quite nicely with the Steam Deck.</p>

<p>I will put them here below :</p>

<p><code class="language-plaintext highlighter-rouge">tokimeki-warm-flat.slangp</code></p>

<div class="language-ini highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="py">shaders</span> <span class="p">=</span> <span class="s">"5"</span>

<span class="py">shader0</span> <span class="p">=</span> <span class="s">"../crt/shaders/crt-easymode-halation/linearize.slang"</span>
<span class="py">filter_linear0</span> <span class="p">=</span> <span class="s">"false"</span>
<span class="py">srgb_framebuffer0</span> <span class="p">=</span> <span class="s">"true"</span>
<span class="py">scale_type_x0</span> <span class="p">=</span> <span class="s">"source"</span>
<span class="py">scale_x0</span> <span class="p">=</span> <span class="s">"1.000000"</span>
<span class="py">scale_type_y0</span> <span class="p">=</span> <span class="s">"source"</span>
<span class="py">scale_y0</span> <span class="p">=</span> <span class="s">"1.000000"</span>
<span class="py">alias0</span> <span class="p">=</span> <span class="s">"ORIG_LINEARIZED"</span>

<span class="py">shader1</span> <span class="p">=</span> <span class="s">"../crt/shaders/crt-easymode-halation/blur_horiz.slang"</span>
<span class="py">filter_linear1</span> <span class="p">=</span> <span class="s">"false"</span>
<span class="py">srgb_framebuffer1</span> <span class="p">=</span> <span class="s">"true"</span>
<span class="py">scale_type_x1</span> <span class="p">=</span> <span class="s">"source"</span>
<span class="py">scale_x1</span> <span class="p">=</span> <span class="s">"1.000000"</span>
<span class="py">scale_type_y1</span> <span class="p">=</span> <span class="s">"source"</span>
<span class="py">scale_y1</span> <span class="p">=</span> <span class="s">"1.000000"</span>

<span class="py">shader2</span> <span class="p">=</span> <span class="s">"../crt/shaders/crt-easymode-halation/blur_vert.slang"</span>
<span class="py">filter_linear2</span> <span class="p">=</span> <span class="s">"false"</span>
<span class="py">srgb_framebuffer2</span> <span class="p">=</span> <span class="s">"true"</span>
<span class="py">scale_type_x2</span> <span class="p">=</span> <span class="s">"source"</span>
<span class="py">scale_x2</span> <span class="p">=</span> <span class="s">"1.000000"</span>
<span class="py">scale_type_y2</span> <span class="p">=</span> <span class="s">"source"</span>
<span class="py">scale_y2</span> <span class="p">=</span> <span class="s">"1.000000"</span>
<span class="py">alias2</span> <span class="p">=</span> <span class="s">"HALATION_BLUR"</span>

<span class="py">shader3</span> <span class="p">=</span> <span class="s">"../crt/shaders/crt-easymode-halation/threshold.slang"</span>
<span class="py">filter_linear3</span> <span class="p">=</span> <span class="s">"false"</span>
<span class="py">srgb_framebuffer3</span> <span class="p">=</span> <span class="s">"true"</span>
<span class="py">scale_type_x3</span> <span class="p">=</span> <span class="s">"source"</span>
<span class="py">scale_x3</span> <span class="p">=</span> <span class="s">"1.000000"</span>
<span class="py">scale_type_y3</span> <span class="p">=</span> <span class="s">"source"</span>
<span class="py">scale_y3</span> <span class="p">=</span> <span class="s">"1.000000"</span>

<span class="py">shader4</span> <span class="p">=</span> <span class="s">"../crt/shaders/crt-easymode-halation/crt-easymode-halation.slang"</span>
<span class="py">filter_linear4</span> <span class="p">=</span> <span class="s">"true"</span>
<span class="py">scale_type4</span> <span class="p">=</span> <span class="s">"viewport"</span>

<span class="py">parameters</span> <span class="p">=</span> <span class="s">"COLOR_BOOST;GAMMA_INPUT;GAMMA_OUTPUT"</span>
<span class="py">COLOR_BOOST</span> <span class="p">=</span> <span class="s">"1.05"</span>
<span class="py">GAMMA_INPUT</span> <span class="p">=</span> <span class="s">"2.4"</span>
<span class="py">GAMMA_OUTPUT</span> <span class="p">=</span> <span class="s">"2.2"</span>
</code></pre></div></div>

<p><code class="language-plaintext highlighter-rouge">tokimeki-warm-curved.slangp</code></p>

<div class="language-ini highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="py">shaders</span> <span class="p">=</span> <span class="s">"6"</span>

<span class="py">shader0</span> <span class="p">=</span> <span class="s">"../crt/shaders/crt-easymode-halation/linearize.slang"</span>
<span class="py">filter_linear0</span> <span class="p">=</span> <span class="s">"false"</span>
<span class="py">srgb_framebuffer0</span> <span class="p">=</span> <span class="s">"true"</span>
<span class="py">scale_type_x0</span> <span class="p">=</span> <span class="s">"source"</span>
<span class="py">scale_x0</span> <span class="p">=</span> <span class="s">"1.000000"</span>
<span class="py">scale_type_y0</span> <span class="p">=</span> <span class="s">"source"</span>
<span class="py">scale_y0</span> <span class="p">=</span> <span class="s">"1.000000"</span>
<span class="py">alias0</span> <span class="p">=</span> <span class="s">"ORIG_LINEARIZED"</span>

<span class="py">shader1</span> <span class="p">=</span> <span class="s">"../crt/shaders/crt-easymode-halation/blur_horiz.slang"</span>
<span class="py">filter_linear1</span> <span class="p">=</span> <span class="s">"false"</span>
<span class="py">srgb_framebuffer1</span> <span class="p">=</span> <span class="s">"true"</span>
<span class="py">scale_type_x1</span> <span class="p">=</span> <span class="s">"source"</span>
<span class="py">scale_x1</span> <span class="p">=</span> <span class="s">"1.000000"</span>
<span class="py">scale_type_y1</span> <span class="p">=</span> <span class="s">"source"</span>
<span class="py">scale_y1</span> <span class="p">=</span> <span class="s">"1.000000"</span>

<span class="py">shader2</span> <span class="p">=</span> <span class="s">"../crt/shaders/crt-easymode-halation/blur_vert.slang"</span>
<span class="py">filter_linear2</span> <span class="p">=</span> <span class="s">"false"</span>
<span class="py">srgb_framebuffer2</span> <span class="p">=</span> <span class="s">"true"</span>
<span class="py">scale_type_x2</span> <span class="p">=</span> <span class="s">"source"</span>
<span class="py">scale_x2</span> <span class="p">=</span> <span class="s">"1.000000"</span>
<span class="py">scale_type_y2</span> <span class="p">=</span> <span class="s">"source"</span>
<span class="py">scale_y2</span> <span class="p">=</span> <span class="s">"1.000000"</span>
<span class="py">alias2</span> <span class="p">=</span> <span class="s">"HALATION_BLUR"</span>

<span class="py">shader3</span> <span class="p">=</span> <span class="s">"../crt/shaders/crt-easymode-halation/threshold.slang"</span>
<span class="py">filter_linear3</span> <span class="p">=</span> <span class="s">"false"</span>
<span class="py">srgb_framebuffer3</span> <span class="p">=</span> <span class="s">"true"</span>
<span class="py">scale_type_x3</span> <span class="p">=</span> <span class="s">"source"</span>
<span class="py">scale_x3</span> <span class="p">=</span> <span class="s">"1.000000"</span>
<span class="py">scale_type_y3</span> <span class="p">=</span> <span class="s">"source"</span>
<span class="py">scale_y3</span> <span class="p">=</span> <span class="s">"1.000000"</span>

<span class="py">shader4</span> <span class="p">=</span> <span class="s">"../crt/shaders/crt-easymode-halation/crt-easymode-halation.slang"</span>
<span class="py">filter_linear4</span> <span class="p">=</span> <span class="s">"true"</span>
<span class="py">scale_type4</span> <span class="p">=</span> <span class="s">"viewport"</span>

<span class="py">shader5</span> <span class="p">=</span> <span class="s">"../anti-aliasing/shaders/ewa_curvature.slang"</span>
<span class="py">filter_linear5</span> <span class="p">=</span> <span class="s">"true"</span>
<span class="py">scale_type_x5</span> <span class="p">=</span> <span class="s">"viewport"</span>
<span class="py">scale_x5</span> <span class="p">=</span> <span class="s">"1.000000"</span>
<span class="py">scale_type_y5</span> <span class="p">=</span> <span class="s">"viewport"</span>
<span class="py">scale_y5</span> <span class="p">=</span> <span class="s">"1.000000"</span>

<span class="py">parameters</span> <span class="p">=</span> <span class="s">"COLOR_BOOST;GAMMA_INPUT;GAMMA_OUTPUT"</span>
<span class="py">COLOR_BOOST</span> <span class="p">=</span> <span class="s">"1.05"</span>
<span class="py">GAMMA_INPUT</span> <span class="p">=</span> <span class="s">"2.4"</span>
<span class="py">GAMMA_OUTPUT</span> <span class="p">=</span> <span class="s">"2.2"</span>
</code></pre></div></div>

<p><code class="language-plaintext highlighter-rouge">castlevania-goth.slangp</code></p>

<div class="language-ini highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="py">shaders</span> <span class="p">=</span> <span class="s">"5"</span>

<span class="py">shader0</span> <span class="p">=</span> <span class="s">"../crt/shaders/crt-easymode-halation/linearize.slang"</span>
<span class="py">filter_linear0</span> <span class="p">=</span> <span class="s">"false"</span>
<span class="py">srgb_framebuffer0</span> <span class="p">=</span> <span class="s">"true"</span>
<span class="py">scale_type_x0</span> <span class="p">=</span> <span class="s">"source"</span>
<span class="py">scale_x0</span> <span class="p">=</span> <span class="s">"1.000000"</span>
<span class="py">scale_type_y0</span> <span class="p">=</span> <span class="s">"source"</span>
<span class="py">scale_y0</span> <span class="p">=</span> <span class="s">"1.000000"</span>
<span class="py">alias0</span> <span class="p">=</span> <span class="s">"ORIG_LINEARIZED"</span>

<span class="py">shader1</span> <span class="p">=</span> <span class="s">"../crt/shaders/crt-easymode-halation/blur_horiz.slang"</span>
<span class="py">filter_linear1</span> <span class="p">=</span> <span class="s">"false"</span>
<span class="py">srgb_framebuffer1</span> <span class="p">=</span> <span class="s">"true"</span>
<span class="py">scale_type_x1</span> <span class="p">=</span> <span class="s">"source"</span>
<span class="py">scale_x1</span> <span class="p">=</span> <span class="s">"1.000000"</span>
<span class="py">scale_type_y1</span> <span class="p">=</span> <span class="s">"source"</span>
<span class="py">scale_y1</span> <span class="p">=</span> <span class="s">"1.000000"</span>

<span class="py">shader2</span> <span class="p">=</span> <span class="s">"../crt/shaders/crt-easymode-halation/blur_vert.slang"</span>
<span class="py">filter_linear2</span> <span class="p">=</span> <span class="s">"false"</span>
<span class="py">srgb_framebuffer2</span> <span class="p">=</span> <span class="s">"true"</span>
<span class="py">scale_type_x2</span> <span class="p">=</span> <span class="s">"source"</span>
<span class="py">scale_x2</span> <span class="p">=</span> <span class="s">"1.000000"</span>
<span class="py">scale_type_y2</span> <span class="p">=</span> <span class="s">"source"</span>
<span class="py">scale_y2</span> <span class="p">=</span> <span class="s">"1.000000"</span>
<span class="py">alias2</span> <span class="p">=</span> <span class="s">"HALATION_BLUR"</span>

<span class="py">shader3</span> <span class="p">=</span> <span class="s">"../crt/shaders/crt-easymode-halation/threshold.slang"</span>
<span class="py">filter_linear3</span> <span class="p">=</span> <span class="s">"false"</span>
<span class="py">srgb_framebuffer3</span> <span class="p">=</span> <span class="s">"true"</span>
<span class="py">scale_type_x3</span> <span class="p">=</span> <span class="s">"source"</span>
<span class="py">scale_x3</span> <span class="p">=</span> <span class="s">"1.000000"</span>
<span class="py">scale_type_y3</span> <span class="p">=</span> <span class="s">"source"</span>
<span class="py">scale_y3</span> <span class="p">=</span> <span class="s">"1.000000"</span>

<span class="py">shader4</span> <span class="p">=</span> <span class="s">"../crt/shaders/crt-easymode-halation/crt-easymode-halation.slang"</span>
<span class="py">filter_linear4</span> <span class="p">=</span> <span class="s">"true"</span>
<span class="py">scale_type4</span> <span class="p">=</span> <span class="s">"viewport"</span>

<span class="py">parameters</span> <span class="p">=</span> <span class="s">"COLOR_BOOST;GAMMA_INPUT;GAMMA_OUTPUT"</span>
<span class="py">COLOR_BOOST</span> <span class="p">=</span> <span class="s">"1.08"</span>
<span class="py">GAMMA_INPUT</span> <span class="p">=</span> <span class="s">"2.4"</span>
<span class="py">GAMMA_OUTPUT</span> <span class="p">=</span> <span class="s">"2.1"</span>
</code></pre></div></div>]]></content><author><name>Shaddox</name></author><category term="gaming" /><summary type="html"><![CDATA[Some nice shader presets for a warm, soft CRT-like look when playing Saturn games like Tokimeki Puzzledama and Akumajo Dracula X]]></summary></entry><entry><title type="html">Muv Luv Wallpapers</title><link href="https://shaddox.neocities.org/multimedia/2025/02/27/muv-luv-wallpapers.html" rel="alternate" type="text/html" title="Muv Luv Wallpapers" /><published>2025-02-27T16:17:27+02:00</published><updated>2025-02-27T16:17:27+02:00</updated><id>https://shaddox.neocities.org/multimedia/2025/02/27/muv-luv-wallpapers</id><content type="html" xml:base="https://shaddox.neocities.org/multimedia/2025/02/27/muv-luv-wallpapers.html"><![CDATA[<p>I stumbled upon these nice Muv Luv wallpapers, offered by Dengeki Hime magazine. They look so nice I had to share them.</p>

<p>Sourced from <a href="https://x.com/melonc0la/status/1811223980168343861">mel0ncola on twitter</a>.</p>

<div class="gallery gallery-grid-3"><figure class="gallery-item">
        <a href="/assets/images/wallpapers/muv-luv/IMG_0923.jpeg" class="gallery-link" data-caption="Kagami Sumika">
            <img src="/assets/images/wallpapers/muv-luv/IMG_0923.jpeg" alt="Kagami Sumika" />
        </a>
        
        <figcaption class="gallery-caption">Kagami Sumika</figcaption>
        
    </figure><figure class="gallery-item">
        <a href="/assets/images/wallpapers/muv-luv/IMG_0924.jpeg" class="gallery-link" data-caption="Mitsurugi Meiya and Kagami Sumika">
            <img src="/assets/images/wallpapers/muv-luv/IMG_0924.jpeg" alt="Mitsurugi Meiya and Kagami Sumika" />
        </a>
        
        <figcaption class="gallery-caption">Mitsurugi Meiya and Kagami Sumika</figcaption>
        
    </figure><figure class="gallery-item">
        <a href="/assets/images/wallpapers/muv-luv/IMG_0925.jpeg" class="gallery-link" data-caption="Kagami Sumika, Mitsurugi Meiya and Yoroi Mikoto">
            <img src="/assets/images/wallpapers/muv-luv/IMG_0925.jpeg" alt="Kagami Sumika, Mitsurugi Meiya and Yoroi Mikoto" />
        </a>
        
        <figcaption class="gallery-caption">Kagami Sumika, Mitsurugi Meiya and Yoroi Mikoto</figcaption>
        
    </figure><figure class="gallery-item">
        <a href="/assets/images/wallpapers/muv-luv/IMG_0926.jpeg" class="gallery-link" data-caption="Misurugi Meiya, Ayamine Kei, Sakaki Chizuru and Tamase Miki">
            <img src="/assets/images/wallpapers/muv-luv/IMG_0926.jpeg" alt="Misurugi Meiya, Ayamine Kei, Sakaki Chizuru and Tamase Miki" />
        </a>
        
        <figcaption class="gallery-caption">Misurugi Meiya, Ayamine Kei, Sakaki Chizuru and Tamase Miki</figcaption>
        
    </figure><figure class="gallery-item">
        <a href="/assets/images/wallpapers/muv-luv/IMG_0927.jpeg" class="gallery-link" data-caption="Yashiro Kasumi and Kagami Sumika">
            <img src="/assets/images/wallpapers/muv-luv/IMG_0927.jpeg" alt="Yashiro Kasumi and Kagami Sumika" />
        </a>
        
        <figcaption class="gallery-caption">Yashiro Kasumi and Kagami Sumika</figcaption>
        
    </figure><figure class="gallery-item">
        <a href="/assets/images/wallpapers/muv-luv/IMG_0928.jpeg" class="gallery-link" data-caption="Mitsurugi Meiya and Yashiro Kasumi">
            <img src="/assets/images/wallpapers/muv-luv/IMG_0928.jpeg" alt="Mitsurugi Meiya and Yashiro Kasumi" />
        </a>
        
        <figcaption class="gallery-caption">Mitsurugi Meiya and Yashiro Kasumi</figcaption>
        
    </figure><figure class="gallery-item">
        <a href="/assets/images/wallpapers/muv-luv/IMG_0929.jpeg" class="gallery-link" data-caption="Hayase Mitsuki, Suzumiya Akane and Suzumiya Haruka">
            <img src="/assets/images/wallpapers/muv-luv/IMG_0929.jpeg" alt="Hayase Mitsuki, Suzumiya Akane and Suzumiya Haruka" />
        </a>
        
        <figcaption class="gallery-caption">Hayase Mitsuki, Suzumiya Akane and Suzumiya Haruka</figcaption>
        
    </figure><figure class="gallery-item">
        <a href="/assets/images/wallpapers/muv-luv/IMG_0930.jpeg" class="gallery-link" data-caption="Mitsurugi Meiya">
            <img src="/assets/images/wallpapers/muv-luv/IMG_0930.jpeg" alt="Mitsurugi Meiya" />
        </a>
        
        <figcaption class="gallery-caption">Mitsurugi Meiya</figcaption>
        
    </figure></div>]]></content><author><name>Shaddox</name></author><category term="multimedia" /><summary type="html"><![CDATA[Muv Luv wallpapers included in the June issue of Dengeki Hime [2006]]]></summary></entry><entry><title type="html">Multimedia platform streaming guide</title><link href="https://shaddox.neocities.org/tech/2025/01/06/general-streaming-guide.html" rel="alternate" type="text/html" title="Multimedia platform streaming guide" /><published>2025-01-06T13:04:27+02:00</published><updated>2025-01-06T13:04:27+02:00</updated><id>https://shaddox.neocities.org/tech/2025/01/06/general-streaming-guide</id><content type="html" xml:base="https://shaddox.neocities.org/tech/2025/01/06/general-streaming-guide.html"><![CDATA[<p>Heya! In the spaces I hang out, this topic comes up on a regular basis, 
so I’m putting together this guide for reference. It’s meant to help you understand how to put together a streaming setup.
This should work for pretty much anything that takes a camera/microphone as an input, including, but not limited to
applications like Skype or Discord, but also any video game or webrtc application like gikopoi. With a bit of an adaptation you can
also make it work for fully dedicated streaming platforms like youtube, twitch, kick, rumble, odyssey, etc.</p>

<p>While for dedicated platforms, OBS can handle pretty much everything, for everything else it’s a bit more involved. The reason is because we will have to separately handle <em>sound</em> and <em>video</em>. I will try to cover each platform for a possible setup.</p>

<p>The TL;DR of everything is that you want to create a virtual camera and a virtual microphone and use them as sources.</p>
<h1 id="windows">Windows</h1>

<p>For Windows, things are pretty straightforward since there aren’t many options. I’m not a Windows user, so some screenshots are stolen from the internet from other guides.</p>

<h2 id="video">Video</h2>

<p>For video, we can use OBS. After you compose your scenes and make sure they look good, you will want to hit the <strong>Start Camera</strong> button. That’s your video source!</p>

<div class="gallery gallery-single" data-gallery="/assets/images/streaming/obs-camera-ready.webp">
    <figure class="gallery-item">
        <a href="/assets/images/streaming/obs-camera-ready.webp" class="gallery-link" data-caption="Don&#39;t forget to start the virtual camera!">
            <img src="/assets/images/streaming/obs-camera-ready.webp" alt="OBS Camera Ready" />
        </a>
        
        <figcaption class="gallery-caption">
            Don't forget to start the virtual camera!
        </figcaption>
        
    </figure>
</div>

<h2 id="audio">Audio</h2>

<p>For audio is where I see people struggle the most with, since there are several options.</p>

<h3 id="stereo-mix--what-u-hear">Stereo Mix / What U Hear</h3>

<p>It goes by either name, and its availability is sound card dependent.
I know in RealTek chips it’s called Stereo Mix but for other sound cards I’ve seen it called What U Hear.</p>

<p>It’s often disabled by default and hidden, so we have to enable it first.</p>

<p>For that, you want to go intro sound settings from the control panel.</p>

<div class="gallery gallery-single" data-gallery="/assets/images/streaming/show-disabled-disconnected-devices.webp">
    <figure class="gallery-item">
        <a href="/assets/images/streaming/show-disabled-disconnected-devices.webp" class="gallery-link" data-caption="Enable show disconnected and hidden devices to see it.">
            <img src="/assets/images/streaming/show-disabled-disconnected-devices.webp" alt="Show disconnected devices" />
        </a>
        
        <figcaption class="gallery-caption">
            Enable show disconnected and hidden devices to see it.
        </figcaption>
        
    </figure>
</div>

<p>Afterwards, simply enable it.</p>

<div class="gallery gallery-single" data-gallery="/assets/images/streaming/enable-what-u-hear.webp">
    <figure class="gallery-item">
        <a href="/assets/images/streaming/enable-what-u-hear.webp" class="gallery-link" data-caption="Now, turn it on!">
            <img src="/assets/images/streaming/enable-what-u-hear.webp" alt="Enable What U Hear" />
        </a>
        
        <figcaption class="gallery-caption">
            Now, turn it on!
        </figcaption>
        
    </figure>
</div>

<p>The name is quite unclear, but I cannot stress enough that this is a <strong>loopback interface</strong>.</p>

<p>What does this mean?</p>

<p>It means that the sound has to actually go trough it. So if you have multiple sound cards, but the one you actually use doesn’t have a loopback interface, then your audience won’t hear anything.</p>

<p>When you finally start your stream, make sure you select it as a sound source.</p>

<p>While this approach is fairly straightforward, the downside is that people will be able to hear everything coming from your PC, including notifications, errors, etc.</p>

<p>If you decide to use a microphone as well, you will also hear your own voice. All the time.</p>

<h3 id="voicemeeter">Voicemeeter</h3>

<p>This option provides a lot more granularity in what your audience will hear, the downside is that the setup is a bit more involved.</p>

<p>First things first, you will have to <a href="https://vb-audio.com/Voicemeeter/">download the software</a>.</p>

<p>They also offer fairly extensive documentation with their user manual. I encourage you to consult it if you are curious about anything.</p>

<div class="gallery gallery-single" data-gallery="/assets/images/streaming/VoicemeeterConnectionDiagram.jpg">
    <figure class="gallery-item">
        <a href="/assets/images/streaming/VoicemeeterConnectionDiagram.jpg" class="gallery-link" data-caption="Voicemeeter connection diagram and interface">
            <img src="/assets/images/streaming/VoicemeeterConnectionDiagram.jpg" alt="Voicemeeter Connection Diagram" />
        </a>
        
        <figcaption class="gallery-caption">
            Voicemeeter connection diagram and interface
        </figcaption>
        
    </figure>
</div>

<p>The interface looks pretty intimidating, but it’s quite straightforward once you get used to it.</p>

<p>Hardware inputs are physical recording hardware, like a microphone, musical instruments, etc.</p>

<p>A virtual input is basically a virtual microphone, or in other words, a “microphone” for your software.</p>

<p>Voicemeeter, by default, has two virtual outputs. One of them is going to go to your hardware, and the other is a virtual output.</p>

<p>As far as the interface goes :</p>
<ol>
  <li>You have your volume sliders which you can adjust the volumes.</li>
  <li>A is loopback, which will bounce the sound back to you (you want this for software). Useful for testing your microphone and hearing your own software too!</li>
  <li>B is for bouncing, which will redirect the sound to the virtual output. This is what your audience will hear.</li>
  <li>SOLO is for isolating a line, useful for debugging.</li>
  <li>MONO will duplicate any mono sound sources to stereo, useful for microphones and musical instruments.</li>
</ol>

<p>We’re not done yet. Next, we will have to redirect our applications to the Voicemeeter virtual input.</p>

<p>You can use the Windows audio mixer for this.</p>

<div class="gallery gallery-single" data-gallery="/assets/images/streaming/windows-volume-mixer.png">
    <figure class="gallery-item">
        <a href="/assets/images/streaming/windows-volume-mixer.png" class="gallery-link" data-caption="Windows Volume Mixer">
            <img src="/assets/images/streaming/windows-volume-mixer.png" alt="Windows Volume Mixer" />
        </a>
        
        <figcaption class="gallery-caption">
            Windows Volume Mixer
        </figcaption>
        
    </figure>
</div>

<p>Simply browse that list for the applications you are interested in having your audience hear, then select the output and pick the voicemeeter input.</p>

<h2 id="conclusions">Conclusions</h2>

<p>And that’s a wrap! When I used Windows, I prefered the voicemeeter and OBS setup.</p>

<p>When you start your call/stream/whatever, make sure you select the OBS virtual camera as a video source and the voicemeeter virtual input as your microphone and you’re good to go!</p>

<h1 id="linux">Linux</h1>

<p>On Linux, things work a bit differently from Windows, but the basic principle remains the same - we need to set up virtual devices for both video and audio. Let’s break it down:</p>

<h2 id="video-1">Video</h2>

<p>Just like on Windows, OBS is our go-to solution for video. The setup is practically identical:</p>

<ol>
  <li>Install OBS from your distribution’s package manager</li>
  <li>Set up your scenes and sources</li>
  <li>Click “Start Virtual Camera”</li>
</ol>

<p>The virtual camera will then be available to any application that can use v4l2 devices (which is pretty much everything).</p>

<h2 id="audio-1">Audio</h2>

<p>For audio routing on Linux, we have a few options, but I’ll focus on the most flexible and modern approach using PipeWire and qpwgraph.</p>

<h3 id="pipewire--qpwgraph">PipeWire + qpwgraph</h3>

<p>PipeWire has become the de facto standard for audio on modern Linux distributions, offering powerful audio routing capabilities. qpwgraph provides a nice visual interface for managing these connections.</p>

<p>First, make sure you have both installed:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># On Ubuntu/Debian</span>
<span class="nb">sudo </span>apt <span class="nb">install </span>pipewire qpwgraph

<span class="c"># On Fedora</span>
<span class="nb">sudo </span>dnf <span class="nb">install </span>pipewire qpwgraph

<span class="c"># On Arch</span>
<span class="nb">sudo </span>pacman <span class="nt">-S</span> pipewire qpwgraph
</code></pre></div></div>
<div class="gallery gallery-single" data-gallery="/assets/images/streaming/qpwgraph.png">
    <figure class="gallery-item">
        <a href="/assets/images/streaming/qpwgraph.png" class="gallery-link" data-caption="qpwGraph on launch with virtual sink">
            <img src="/assets/images/streaming/qpwgraph.png" alt="QPWGraph Screenshot" />
        </a>
        
        <figcaption class="gallery-caption">
            qpwGraph on launch with virtual sink
        </figcaption>
        
    </figure>
</div>

<p>Once installed, launch qpwgraph. You’ll see something that might look intimidating at first, but it’s actually quite intuitive:</p>

<ul>
  <li>Left side: Audio sources (outputs from applications, microphones)</li>
  <li>Right side: Audio sinks (speakers, virtual devices)</li>
  <li>Lines between them: Active connections</li>
</ul>

<p>To create a virtual device for streaming:</p>

<ol>
  <li>Load the null-audio module if it’s not already loaded:
    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>pactl load-module module-null-sink <span class="nv">sink_name</span><span class="o">=</span>Stream
</code></pre></div>    </div>
  </li>
  <li>
    <p>In qpwgraph, you’ll see your new “Stream” sink appear (in my screenshot I named it Gikopoi Virtual Sink, but it’s the same)</p>
  </li>
  <li>You can then:
    <ul>
      <li>Connect your microphone to the Stream sink</li>
      <li>Connect specific application outputs to the Stream sink</li>
      <li>Connect the Stream sink to your headphones so you can monitor</li>
    </ul>
  </li>
</ol>

<div class="gallery gallery-single" data-gallery="/assets/images/streaming/qpwgraph-connected.png">
    <figure class="gallery-item">
        <a href="/assets/images/streaming/qpwgraph-connected.png" class="gallery-link" data-caption="qpwGraph - connecting my mono microphone to the sink">
            <img src="/assets/images/streaming/qpwgraph-connected.png" alt="QPWGraph Screenshot" />
        </a>
        
        <figcaption class="gallery-caption">
            qpwGraph - connecting my mono microphone to the sink
        </figcaption>
        
    </figure>
</div>

<p>The “Stream” sink will appear as an input device in your streaming applications.</p>

<h3 id="alternative-pulseaudio-volume-control-pavucontrol">Alternative: PulseAudio Volume Control (pavucontrol)</h3>

<p>If you prefer a simpler approach, pavucontrol can handle basic audio routing:</p>

<ol>
  <li>Install pavucontrol:
    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo </span>apt <span class="nb">install </span>pavucontrol  <span class="c"># or equivalent for your distro</span>
</code></pre></div>    </div>
  </li>
  <li>Create a null sink:
    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>pactl load-module module-null-sink <span class="nv">sink_name</span><span class="o">=</span>Stream
</code></pre></div>    </div>
  </li>
  <li>Use pavucontrol to route audio to your virtual sink</li>
</ol>

<div class="gallery gallery-single" data-gallery="/assets/images/streaming/pavucontrol-output-redirect.png">
    <figure class="gallery-item">
        <a href="/assets/images/streaming/pavucontrol-output-redirect.png" class="gallery-link" data-caption="pavucontrol - redirecting my music player to the virtual sink">
            <img src="/assets/images/streaming/pavucontrol-output-redirect.png" alt="pavucontrol" />
        </a>
        
        <figcaption class="gallery-caption">
            pavucontrol - redirecting my music player to the virtual sink
        </figcaption>
        
    </figure>
</div>

<p>The downside is that you don’t get the visual representation of connections that qpwgraph provides.</p>

<h2 id="conclusions-1">Conclusions</h2>

<p>While the Linux setup might seem more complex at first, it actually offers more flexibility than the Windows solution. Once you get comfortable with PipeWire and qpwgraph, you can create some really sophisticated audio routing setups.</p>

<p>Remember to save your routing configuration in qpwgraph so you don’t have to recreate it every time!</p>

<h1 id="macos">macOS</h1>

<p>macOS users have several excellent options for both video and audio routing. Let’s explore them:</p>

<h2 id="video-2">Video</h2>

<h3 id="obs-virtual-camera">OBS Virtual Camera</h3>

<p>Just like on Windows and Linux, OBS works great on macOS. The setup is identical:</p>

<ol>
  <li>Install OBS from their website or using Homebrew:
    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>brew <span class="nb">install </span>obs
</code></pre></div>    </div>
  </li>
  <li>Set up your scenes</li>
  <li>Start the virtual camera</li>
</ol>

<h3 id="alternative-mmhmm">Alternative: mmhmm</h3>

<p>mmhmm is a macOS-native alternative that’s particularly good for presentations and streams where you want to appear alongside your content. While it’s not free, it offers some unique features that OBS doesn’t have.</p>

<h2 id="audio-2">Audio</h2>

<h3 id="blackhole">BlackHole</h3>

<p>BlackHole is the go-to solution for audio routing on macOS. It’s open source and works similarly to Voicemeeter on Windows.</p>

<ol>
  <li>Install BlackHole:
    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>brew <span class="nb">install </span>blackhole-2ch
</code></pre></div>    </div>
  </li>
  <li>Create a Multi-Output Device in Audio MIDI Setup:
    <ul>
      <li>Open Audio MIDI Setup (from Applications/Utilities)</li>
      <li>Click the + button and choose “Create Multi-Output Device”</li>
      <li>Check both your speakers and BlackHole</li>
      <li>Make BlackHole the first device in the list</li>
    </ul>
  </li>
  <li>Set BlackHole as your audio output in the application you want to stream</li>
</ol>

<h3 id="alternative-loopback">Alternative: Loopback</h3>

<p>Rogue Amoeba’s Loopback is a premium alternative that offers a more user-friendly interface and additional features. It’s particularly good if you need to:</p>
<ul>
  <li>Create multiple virtual devices</li>
  <li>Mix audio from different sources</li>
  <li>Apply effects to your audio</li>
</ul>

<h2 id="tips-for-macos-users">Tips for macOS Users</h2>

<ul>
  <li>If you’re using a newer Mac with Apple Silicon, make sure to get the native ARM versions of these applications for better performance</li>
  <li>The built-in mic on Macs is surprisingly good, but if you’re serious about streaming, consider an external USB microphone</li>
  <li>MacOS’s built-in audio interface is quite good at handling multiple audio devices, so you can create sophisticated setups without worrying about latency issues</li>
</ul>

<h2 id="conclusions-2">Conclusions</h2>

<p>macOS offers a good balance between the simplicity of Windows and the flexibility of Linux. While some of the premium tools can be expensive, the free options like OBS and BlackHole are more than capable of handling most streaming needs.</p>

<p>Remember to always test your setup before going live - nothing’s worse than starting a stream only to find out your audience can’t hear your awesome background music!</p>]]></content><author><name>Shaddox</name></author><category term="tech" /><summary type="html"><![CDATA[A guide for a streaming setup for anything that takes a camera and a microphone like Discord, Skype, etc.]]></summary></entry><entry><title type="html">Hoshiful ~Seitou Gakuen Tenmon Doukoukai~ Wallpapers</title><link href="https://shaddox.neocities.org/multimedia/2024/12/23/hoshiful-seitou-gakuen-wallpapers.html" rel="alternate" type="text/html" title="Hoshiful ~Seitou Gakuen Tenmon Doukoukai~ Wallpapers" /><published>2024-12-23T15:04:27+02:00</published><updated>2024-12-23T15:04:27+02:00</updated><id>https://shaddox.neocities.org/multimedia/2024/12/23/hoshiful-seitou-gakuen-wallpapers</id><content type="html" xml:base="https://shaddox.neocities.org/multimedia/2024/12/23/hoshiful-seitou-gakuen-wallpapers.html"><![CDATA[<p>Found these super cute wallpapers from a game from 2007!</p>

<p>The crispy 1024x768 sure takes me back.</p>

<p>Sourced from <a href="https://x.com/melonc0la/status/1869274606366003651">mel0ncola on twitter</a>.</p>

<div class="gallery gallery-grid-2"><figure class="gallery-item">
        <a href="/assets/images/wallpapers/hoshiful-seitou-gakuen/hinata-futaba.jpeg" class="gallery-link" data-caption="Hinata Futaba">
            <img src="/assets/images/wallpapers/hoshiful-seitou-gakuen/hinata-futaba.jpeg" alt="Hinata Futaba" />
        </a>
        
        <figcaption class="gallery-caption">Hinata Futaba</figcaption>
        
    </figure><figure class="gallery-item">
        <a href="/assets/images/wallpapers/hoshiful-seitou-gakuen/ruka-hoshikawa.jpeg" class="gallery-link" data-caption="Ruka Hoshikawa">
            <img src="/assets/images/wallpapers/hoshiful-seitou-gakuen/ruka-hoshikawa.jpeg" alt="Ruka Hoshikawa" />
        </a>
        
        <figcaption class="gallery-caption">Ruka Hoshikawa</figcaption>
        
    </figure><figure class="gallery-item">
        <a href="/assets/images/wallpapers/hoshiful-seitou-gakuen/ryumi-suzuki.jpeg" class="gallery-link" data-caption="Ryumi Suzuki">
            <img src="/assets/images/wallpapers/hoshiful-seitou-gakuen/ryumi-suzuki.jpeg" alt="Ryumi Suzuki" />
        </a>
        
        <figcaption class="gallery-caption">Ryumi Suzuki</figcaption>
        
    </figure><figure class="gallery-item">
        <a href="/assets/images/wallpapers/hoshiful-seitou-gakuen/mizuki-takatsuka.jpeg" class="gallery-link" data-caption="Mizuki Takatsuka">
            <img src="/assets/images/wallpapers/hoshiful-seitou-gakuen/mizuki-takatsuka.jpeg" alt="Mizuki Takatsuka" />
        </a>
        
        <figcaption class="gallery-caption">Mizuki Takatsuka</figcaption>
        
    </figure></div>]]></content><author><name>Shaddox</name></author><category term="multimedia" /><summary type="html"><![CDATA[Official Wallpapers distributed by F&C [2007]]]></summary></entry></feed>