<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: TapamN</title><link>https://news.ycombinator.com/user?id=TapamN</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sun, 11 Oct 2026 20:38:31 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=TapamN" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by TapamN in "Dolly Parton has died"]]></title><description><![CDATA[
<p>Fun fact: Dolly, the cloned sheep, was named after Dolly Parton. The sheep was cloned from a mammary gland cell, so...</p>
]]></description><pubDate>Tue, 25 Aug 2026 20:35:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=49440241</link><dc:creator>TapamN</dc:creator><comments>https://news.ycombinator.com/item?id=49440241</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49440241</guid></item><item><title><![CDATA[New comment by TapamN in "Memory prices climb 500% in 12 months"]]></title><description><![CDATA[
<p>I bought 32GB of DDR4 SODIMMs (16GBx2 Corsair 3200MHz) April last year for $50.</p>
]]></description><pubDate>Tue, 18 Aug 2026 23:03:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=49354065</link><dc:creator>TapamN</dc:creator><comments>https://news.ycombinator.com/item?id=49354065</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49354065</guid></item><item><title><![CDATA[New comment by TapamN in "STV: A full-motion video codec for the Atari ST"]]></title><description><![CDATA[
<p>There's a FMV player for the 8-bit Sega Master System ( <a href="https://github.com/bravesoftdz/tiler" rel="nofollow">https://github.com/bravesoftdz/tiler</a> ,) which compresses to a fixed number of dynamically updated tiles. The codec in TFA and Tiler seem very similar, with Tiler also taking advantage of the SMS's ability to flip tiles horizontally or vertically.<p>A higher spec version of Tiler is available as TileMotion, which has a JavaScript demo decoding 1080p video in software here: <a href="https://gligli.github.io/tilemotion/demo/" rel="nofollow">https://gligli.github.io/tilemotion/demo/</a></p>
]]></description><pubDate>Fri, 07 Aug 2026 10:32:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=49208340</link><dc:creator>TapamN</dc:creator><comments>https://news.ycombinator.com/item?id=49208340</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49208340</guid></item><item><title><![CDATA[Discovering hard disk physical geometry through microbenchmarking (2019)]]></title><description><![CDATA[
<p>Article URL: <a href="https://blog.stuffedcow.net/2019/09/hard-disk-geometry-microbenchmarking/">https://blog.stuffedcow.net/2019/09/hard-disk-geometry-microbenchmarking/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47968187">https://news.ycombinator.com/item?id=47968187</a></p>
<p>Points: 164</p>
<p># Comments: 8</p>
]]></description><pubDate>Thu, 30 Apr 2026 21:02:06 +0000</pubDate><link>https://blog.stuffedcow.net/2019/09/hard-disk-geometry-microbenchmarking/</link><dc:creator>TapamN</dc:creator><comments>https://news.ycombinator.com/item?id=47968187</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47968187</guid></item><item><title><![CDATA[New comment by TapamN in "A whole boss fight in 256 bytes"]]></title><description><![CDATA[
<p>Well, it's "256 bytes of x86" (plus X KB of VESA bios) (plus Y KB of FM synth patches) (plus Z KB of microcode) (plus...)</p>
]]></description><pubDate>Wed, 08 Apr 2026 08:18:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=47687013</link><dc:creator>TapamN</dc:creator><comments>https://news.ycombinator.com/item?id=47687013</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47687013</guid></item><item><title><![CDATA[New comment by TapamN in "Building an FPGA 3dfx Voodoo with Modern RTL Tools"]]></title><description><![CDATA[
<p>Oof. The gamma on that screenshot.<p>If you want to see what it's supposed to look like, copy the screenshot into GIMP, go into "Color, Levels" and in the "Input Levels" section, there should be a textbox+spinner with a "1.00". Set that to 0.45.</p>
]]></description><pubDate>Sun, 22 Mar 2026 20:03:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=47481538</link><dc:creator>TapamN</dc:creator><comments>https://news.ycombinator.com/item?id=47481538</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47481538</guid></item><item><title><![CDATA[New comment by TapamN in "Unicorn Jelly"]]></title><description><![CDATA[
<p>Ad blockers typically have an option to select something to disable, like a single image URL.</p>
]]></description><pubDate>Sat, 14 Feb 2026 21:36:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=47018630</link><dc:creator>TapamN</dc:creator><comments>https://news.ycombinator.com/item?id=47018630</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47018630</guid></item><item><title><![CDATA[New comment by TapamN in ".Beat Swatch Internet Time"]]></title><description><![CDATA[
<p>The Sega Dreamcast online RPG "Phantasy Star Online" displayed the current time in beats.</p>
]]></description><pubDate>Tue, 10 Feb 2026 11:26:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=46958273</link><dc:creator>TapamN</dc:creator><comments>https://news.ycombinator.com/item?id=46958273</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46958273</guid></item><item><title><![CDATA[New comment by TapamN in "Building a 24-bit arcade CRT display adapter from scratch"]]></title><description><![CDATA[
<p>The Galaksija computer used it's Z80 to help generate the video signal. I'm not sure how its implementation compares to your link.<p><a href="https://en.wikipedia.org/wiki/Galaksija_(computer)" rel="nofollow">https://en.wikipedia.org/wiki/Galaksija_(computer)</a><p><a href="https://media.ccc.de/v/29c3-5178-en-the_ultimate_galaksija_talk_h264" rel="nofollow">https://media.ccc.de/v/29c3-5178-en-the_ultimate_galaksija_t...</a></p>
]]></description><pubDate>Wed, 04 Feb 2026 23:25:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=46893402</link><dc:creator>TapamN</dc:creator><comments>https://news.ycombinator.com/item?id=46893402</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46893402</guid></item><item><title><![CDATA[New comment by TapamN in "Termux"]]></title><description><![CDATA[
<p>What I use for my phone (Planet Computer Astro Slide) has a Psion 5-style physical keyboard built in.</p>
]]></description><pubDate>Mon, 02 Feb 2026 19:18:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=46859997</link><dc:creator>TapamN</dc:creator><comments>https://news.ycombinator.com/item?id=46859997</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46859997</guid></item><item><title><![CDATA[New comment by TapamN in "Neko: History of a Software Pet (2022)"]]></title><description><![CDATA[
<p>As a kid, I remember the Windows version from being included on the disk that came with the book, "Windows Magic Tricks," published by Sybex.<p>Years later, I was surprised to see the exact same cat on a "port" to the Sega Dreamcast VMU (a memory card that can function as a stand-alone device, with a 48x32 pixel screen,) where pressing a button would play one of the animations. It makes a little more sense now, finding out that the cat images were released into the public domain.</p>
]]></description><pubDate>Fri, 23 Jan 2026 21:44:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=46738353</link><dc:creator>TapamN</dc:creator><comments>https://news.ycombinator.com/item?id=46738353</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46738353</guid></item><item><title><![CDATA[New comment by TapamN in "XBMC 4.0 for the Original Xbox"]]></title><description><![CDATA[
<p>Wow, you're not kidding saying that it's cursed. I thought it would adapt a socket to the BGA pads, but it looks like the pins of the replacement CPU just sit naked on the interposer.<p><a href="https://www.vogons.org/viewtopic.php?t=95704" rel="nofollow">https://www.vogons.org/viewtopic.php?t=95704</a></p>
]]></description><pubDate>Sat, 22 Nov 2025 04:33:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=46012122</link><dc:creator>TapamN</dc:creator><comments>https://news.ycombinator.com/item?id=46012122</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46012122</guid></item><item><title><![CDATA[New comment by TapamN in "My Deus Ex lipsyncing fix mod"]]></title><description><![CDATA[
<p>Weird coincidence, but I had to look through some old files backed up from the computer I was using 15+ years ago, and noticed it had C:\DeusEx sitting right there, with the SDK files in it. I found the function that handles damage in it.<p><a href="https://pastebin.com/bwjaiDj7" rel="nofollow">https://pastebin.com/bwjaiDj7</a><p>It looks like I misremembered/misinterpreted some stuff. It looks like the top of the head behaves like the sides of the head, extending upward, forming a + shape.<p>Judging by how the arm/leg damage works, it the collision hit zones rotate with the enemy. Offset appears to be were the collision point is releative to the character's rotation, since it's also used to determine front/back and left/right collision. So for a hit to count as a headshot, it has to hit a cardinal octant of the collision cylinder.<p>Edit:<p>Updated diagram: <a href="https://imgur.com/a/Mec7HGm" rel="nofollow">https://imgur.com/a/Mec7HGm</a></p>
]]></description><pubDate>Fri, 26 Sep 2025 23:35:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=45392127</link><dc:creator>TapamN</dc:creator><comments>https://news.ycombinator.com/item?id=45392127</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45392127</guid></item><item><title><![CDATA[New comment by TapamN in "My Deus Ex lipsyncing fix mod"]]></title><description><![CDATA[
<p>The headshot collision code in DX is broken as well. This is from memory from looking at the DX SDK years ago (+15 at least), but...<p>The collision shape used for a character in DX is a single cylinder. The game looks at where on the cylinder the collision point of the shot is, and tries to figure out if it's a head, body, or leg shot. It does this by checking how high the collision point is, with the lower X% being legs, top Y% being the head, and the middle being the body.<p>If a shot hits the head section, it runs some additional checks, and can sometimes still count as a body hit. There was some weird code that, after you stared at it long enough, looks like it ended up splitting the head area into compass aligned 1/8ths (so north, north-east, east, etc) and hits to the N-E-S-W octants would count as a head shot, and a hit to the NE-NW-SE-SW octants would count as body shots. (I couldn't tell if the angles rotate with the character, or are absolute relative to the world.) I think there was also a check for hits on the top cap of the cylinder, so that the hit would have to be close to the center of the cylinder to count as head hit, and near the outer rim would count as a body hit.<p>Hm, I should just make a diagram. Here: <a href="https://imgur.com/a/KG6MF1k" rel="nofollow">https://imgur.com/a/KG6MF1k</a><p>I guess what they were trying to do was make the actual head hitbox a smaller section of the head level, so that a shot that should go over the shoulder and miss would just count as a body shot and not a true headshot. And if you made a test map, with the player and a static test enemy placed in a line, this could work reliably from a fixed position. But when you actually play DX, and approach enemies from various angles, headshots inexplicably fail.</p>
]]></description><pubDate>Fri, 26 Sep 2025 05:37:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=45383043</link><dc:creator>TapamN</dc:creator><comments>https://news.ycombinator.com/item?id=45383043</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45383043</guid></item><item><title><![CDATA[New comment by TapamN in "Ask HN: How were graphics card drivers programmed back in the 90s?"]]></title><description><![CDATA[
<p>I created a (currently not publicly released) driver for the 1998 Sega Dreamcast's video hardware from scratch. It supports additional features over the driver in the open source homebrew OS, KallistiOS (KOS), like better render-to-texture support (the KOS driver only supports rendering to framebuffer sized textures), tile multipass (which allows for accumulation buffer style effects or soft shadows), and dynamically toggling anti-aliasing on the fly (with KOS it's fixed after init). Some screenshots of my driver can do are here: <a href="https://imgur.com/a/DyaqzZD" rel="nofollow">https://imgur.com/a/DyaqzZD</a><p>I used publicly available documentation (like <a href="https://www.ludd.ltu.se/~jlo/dc/" rel="nofollow">https://www.ludd.ltu.se/~jlo/dc/</a> and the now defunct dcdev Yahoo Group), looked at the existing open source KOS driver, and looked at the source for Dreamcast emulators to figure out how things worked.<p>The GPU in the Dreamcast is a bit more complicated than PSX/PS2/GC since it doesn't accept polygons and draw them directly to the framebuffer. It's a tile-based deferred renderer, like many mobile GPUs, so it instead writes the polygons to a buffer in video RAM, then later walks through the polygons and renders the scene in tiles to an on-chip 32x32 pixel buffer, which finally gets written to RAM once.<p>This allows the Dreamcast to have a depth-only fillrate close to the 360 and PS3 (DC is 3.2 GPix/s vs 360/PS3 4.0 GPix/s), and it basically preforms a depth-only prepass to avoid doing texture reads for obscured texels. It can also preform per-pixel transparency sorting (order-independent transparency) with effectively no limit to the number of overlapping pixels (but the sorter is O(n^2), so a lot of overlap can become very expensive).<p>To get a working driver for the Dreamcast, you have to set up some structures in video RAM so that the hardware knows what polygons are in what tile. Another thing the driver needs to do is coordinate the part of the hardware that takes polygon commands and writes them to video RAM, and the part that actually does rendering. You typically double buffer the polygons, so that while the hardware is rendering one frame, user code can submit polygons in parallel for the next frame to another buffer.<p>My driver started as just code in "int main()" to get stuff on the screen, then I gradually separated stuff out from that into a real driver.</p>
]]></description><pubDate>Sun, 21 Sep 2025 11:54:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=45321938</link><dc:creator>TapamN</dc:creator><comments>https://news.ycombinator.com/item?id=45321938</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45321938</guid></item><item><title><![CDATA[New comment by TapamN in "Optimizing our way through Metroid"]]></title><description><![CDATA[
<p>Oh, yeah, I am. I forgot about that setting. Switching Standard allows the videos to work for me, while Privacy Badger and uBlock Origin are enabled.</p>
]]></description><pubDate>Mon, 25 Aug 2025 02:37:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=45009671</link><dc:creator>TapamN</dc:creator><comments>https://news.ycombinator.com/item?id=45009671</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45009671</guid></item><item><title><![CDATA[New comment by TapamN in "Optimizing our way through Metroid"]]></title><description><![CDATA[
<p>I'm using Firefox 139.0.4 canonical-002 Snap on Xubuntu, and the videos don't play for me. Even when not using private browsing, even when I disable uBlock Origin, even when I disable Privacy Badger (and, of course, I've set NoScript to enable JS for the tab.)</p>
]]></description><pubDate>Sun, 24 Aug 2025 07:03:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=45002015</link><dc:creator>TapamN</dc:creator><comments>https://news.ycombinator.com/item?id=45002015</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45002015</guid></item><item><title><![CDATA[New comment by TapamN in "I bought a £16 smartwatch just because it used USB-C"]]></title><description><![CDATA[
<p>Just a week? I have a USB smartwatch with a 1 year battery life, the Timex Data Link USB.</p>
]]></description><pubDate>Sat, 09 Aug 2025 06:21:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=44844453</link><dc:creator>TapamN</dc:creator><comments>https://news.ycombinator.com/item?id=44844453</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44844453</guid></item><item><title><![CDATA[New comment by TapamN in "A fast, growable array with stable pointers in C"]]></title><description><![CDATA[
<p>It not necessarily physical RAM. If you memmap large files, like maybe a large file from RAID or network share, you could still need that much virtual address space.</p>
]]></description><pubDate>Wed, 06 Aug 2025 19:38:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=44816685</link><dc:creator>TapamN</dc:creator><comments>https://news.ycombinator.com/item?id=44816685</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44816685</guid></item><item><title><![CDATA[New comment by TapamN in "<Blink> and <Marquee> (2020)"]]></title><description><![CDATA[
<p>My favorite trick with <marquee> was to nest them, with different, alternating directions. You could make the contents alternate between scrolling and stopping by setting the inner marquee to travel in the opposite direction at the same speed as the outer marquee. Or do more levels with alternating speeds to make it zip around randomly. I think you had to set a max width for the inner marquees for this to work?</p>
]]></description><pubDate>Sun, 08 Jun 2025 06:18:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=44214949</link><dc:creator>TapamN</dc:creator><comments>https://news.ycombinator.com/item?id=44214949</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44214949</guid></item></channel></rss>