<?xml version="1.0" encoding="ISO-8859-1" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Steffest Digitale Pulptuur</title>
<link>http://blog.stef.be</link>
<description>Wanderings of the Steffest mind</description>
<language>nl-be</language>
<copyright>Copyright 2010 Steffest</copyright>
<lastBuildDate>Sun, 15 Mar 2026 12:18:54 +0100</lastBuildDate>
<docs>http://blogs.law.harvard.edu/tech/rss</docs>
<generator>Steffest CMS</generator>
<managingEditor>blog@stef.be (Steffest)</managingEditor>
<webMaster>blog@stef.be (Steffest)</webMaster>
<ttl>60</ttl>
<item>
    <title>Boox E-Ink Draw</title>
    <pubDate>Tue, 10 Mar 2026 14:26:05 +0100</pubDate>
    <link>http://blog.stef.be/booxdraw</link>
    <guid isPermaLink="true">http://blog.stef.be/booxdraw</guid>
    <description>&lt;img src=&quot;http://blog.stef.be/image.aspx?action=thumb&amp;b=5&amp;w=400&amp;h=500&amp;img=booxdraw.png&quot;&gt;&lt;br&gt;&lt;p&gt;As you might already have deduced: I like to draw.&lt;br /&gt;And maybe harder to believe for a Nerd like me. I also enjoy sitting outside in the sun.&lt;br /&gt;&lt;br /&gt;Combining these 2 proves a challenge though ... The best drawing experience I find on the iPad, but that is totally not suited to be used outside: the screen is barely visible.&lt;br /&gt;I solved that by using a device with an eInk display: a Boox Note Air 4C.&lt;br /&gt;Lovely device - except; it doesnīt have a good drawing app.&lt;br /&gt;Which is a bit weird because the internal note taking apps on the Boox offer a surprisingly pleasant drawing experience: zero-latency, a few good brush presets .... it would be ALMOST doable to use those as drawing tools.&lt;br /&gt;Except: they store every stroke as vector object, and when the image gets more and more complex, the speed goes down the drain and youīre staring at a loading screen half of the time.&lt;br /&gt;&lt;br /&gt;The devices runs on Android.&lt;br /&gt;There are a few good drawing apps on Android, but letīs be honest ... it is not even a pale shadow of the super smooth drawing apps that an iPad has... sometimes, the closed garden of IOS pay off in app quality...&lt;br /&gt;To be blunt: drawing on Android SUCKS.&lt;br /&gt;Itīs just to sluggish and slow to be any fun.&lt;br /&gt;Some devices solve that by just throwing more horsepower at the problem, but not my eInk device ...&lt;br /&gt;My browser based dpaint.js also runs on the device, and not even worse then any other generic Android drawing app, but still to slow.&lt;br /&gt;&lt;br /&gt;But how do the Boox native apps manage to offer that super-smoot zero-latency drawing in their apps?&lt;br /&gt;The answer is as simple as it is brilliant: they bypass the Android layer and talk directly to the screen controller.&lt;br /&gt;The screen controller has a few embedded system brushes, and a native library that translate those hardware brushes to software.&lt;br /&gt;So when you draw; they freeze the Android screen, and release it again when you stop drawing. Brilliant !!!&lt;br /&gt;&lt;br /&gt;Of course this only works on their devices, but thatīs good enough for me.&lt;br /&gt;I want that, but then in my own app.&lt;br /&gt;&lt;br /&gt;Only... documentation is incomplete, missing, outdated, or just plain wrong, and the system libraries needed are exatly that: system libraries that a 3rth party app canīt access.&lt;br /&gt;Boooohhhh!!&lt;br /&gt;&lt;br /&gt;But of course, it Android and Android runs of top of a linux-like system, which are all open so ....&lt;br /&gt;Enter the hacking mentality.&lt;br /&gt;&lt;br /&gt;Decompiling and reverse-engeneering system apps is quite easy in this age of AI agents.&lt;br /&gt;So after a few days of hacking ...&lt;br /&gt;&lt;br /&gt;Here is &quot;Boox E-Ink Draw&quot;&lt;br style=&quot;margin-bottom: 0px; margin-top: 0px; color: #32363a; font-family: -apple-system, &quot; /&gt;&lt;span style=&quot;color: #32363a; font-family: -apple-system, &quot;&gt;It uses the device specific system-brushes to get that zero-latency drawing that we all love so much.&lt;br /&gt;And it does slow down because the strokes areÂ &lt;/span&gt;&lt;span style=&quot;background-color: #fafafb; color: #32363a; font-family: -apple-system, &quot;&gt;baked into a bitmap layer, not stored as a ever growing pile of vectors.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 1rem; color: #32363a; font-family: -apple-system, &quot;&gt;I only tested in on a Note AIR 4C, because thatīs the only Boox device I have, so it would be good to collect some feedback from users on other devices.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 1rem; color: #32363a; font-family: -apple-system, &quot;&gt;Itīs open source, free, simple but functional, and most of all: it offers a zero-latency drawing experience.&lt;br style=&quot;margin-top: 0px;&quot; /&gt;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 1rem; color: #32363a; font-family: -apple-system, &quot;&gt;Source code and download links to the APK at:Â &lt;a class=&quot;relative pointer-events-auto a cursor-pointer
  
  
  
  
  underline
  &quot; style=&quot;color: #79331a; font-size: 1em; pointer-events: auto; position: relative; cursor: pointer; margin-bottom: 0px; margin-top: 0px;&quot; rel=&quot;noopener nofollow ugc&quot; href=&quot;https://github.com/steffest/Boox-EinkDraw/&quot; target=&quot;_blank&quot;&gt;https://github.com/steffest/Boox-EinkDraw/&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 0px; color: #32363a; font-family: -apple-system, &quot;&gt;So hereīs a warm shoutout to ONYX or BOOX, the company: &lt;br /&gt;&lt;br /&gt;you offer best-in class e-Ink writing and drawing tech. Your zero-latency strokes are the reason we love and buy your products. There are developers out there who want to pour their resources into developing for your platform, but for *peeps&quot; sake... why do you make it so hard to get the information we need to do so? Please, pretty please - update your dev channels with some up-to-date info and code samples, so we donīt have to guess and/or decompile your apps just to see how things work.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Oh, and the best part: it saves files in the same format as Dpaint.js , so if you need more advanced graphic stuff that is not present in this Android app, you can ping-pong between the 2 to get the best of both worlds.&lt;br /&gt;&lt;br /&gt;SideQuest completed!&lt;br /&gt;Back to the main game.&lt;br /&gt;&lt;br /&gt;Happy drawing !&lt;/p&gt;&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://blog.stef.be/comments/28349&quot;&gt;Leave a comment&lt;/a&gt;</description>
    <comments>http://blog.stef.be/comments/28349</comments>
    <author>blog@stef.be (Steffest)</author>
</item>
<item>
    <title>Rubbur</title>
    <pubDate>Wed, 14 Jan 2026 05:05:10 +0100</pubDate>
    <link>http://blog.stef.be/rubbur</link>
    <guid isPermaLink="true">http://blog.stef.be/rubbur</guid>
    <description>&lt;p&gt;Another RSync - another demo.&lt;br /&gt;&lt;br /&gt;I made &quot;RUBBUR&quot;&lt;/p&gt;
&lt;p&gt;&lt;iframe width=&quot;100%&quot; height=&quot;400&quot; src=&quot;https://www.youtube.com/embed/cc8f7zg3-v8&quot; title=&quot;RUBBUR&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen=&quot;allowfullscreen&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Released at RSYNC 2026&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/steffest/rubbur&quot;&gt;Source code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;on &lt;a href=&quot;https://demozoo.org/productions/384810/&quot;&gt;Demozoo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;on &lt;a href=&quot;https://www.pouet.net/prod.php?which=105543&quot;&gt;Pouet&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;on &lt;a href=&quot;https://youtu.be/cc8f7zg3-v8&quot;&gt;YouTube&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;The starting point was this track I made in Ableton Live.&lt;br /&gt;I was playing around with the very nice &quot;&lt;a href=&quot;https://www.native-instruments.com/en/products/komplete/effects/the-mouth/&quot; target=&quot;_blank&quot;&gt;The Mouth&lt;/a&gt;&quot; VST plugin, not knowing what I was doing, andÂ suddenly out came this funky wobble bassline with this rubbery synth on top.&lt;br /&gt;I couldnīt reproduce it if I wanted too, haha.&lt;br /&gt;I made a track around it and was bobbing my head on the beat.&lt;br /&gt;Bam! Demo idea!&lt;/p&gt;
&lt;p&gt;I have been exploring the Amiga hardware recently, from a software developer point of view, trying out what you can do with BPLCON1 etc. (Hey! you can set the horizontal offset for the odd and even planes separately! cool!) and finally wrapped my head around how to use switching bitplane pointers each scanline to do all these vertical stretching and scrolling things you see so often in Amiga demos.&lt;/p&gt;
&lt;p&gt;After converting the song to tracker format, it turned out the be HUGE (in terms of diskspace) and I had quite a hard time trimming it down. I already had build some batch-sample squeezing features in my own &lt;a href=&quot;https://www.stef.be/bassoontracker/&quot; target=&quot;_blank&quot;&gt;BassoonTracker,&lt;/a&gt; butÂ &lt;a href=&quot;https://openmpt.org/&quot; target=&quot;_blank&quot;&gt;OpenMPT&lt;/a&gt;Â - the Swiss army knife for tracker files - has a much more finer control - and proved to be the perfect tool to get the size down, obviously in exchange for some audio quality, but hey ... itīs Amiga! It can be crunchy!&lt;/p&gt;
&lt;p&gt;I landed on 290kb for the tune. Still large, but doable.&lt;br /&gt;&lt;a href=&quot;https://www.stef.be/bassoontracker/?file=mods/2026/rsync/rubbur.mod&quot; target=&quot;_blank&quot;&gt;Hereīs the tune in Bassoontracker&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Vamos&lt;/h3&gt;
&lt;p&gt;Another thing I discovered is &lt;a href=&quot;https://lallafa.de/blog/amiga-projects/amitools/vamos/&quot; target=&quot;_blank&quot;&gt;vamos&lt;/a&gt;Â - itīs kind of like Wine (the windows emulator, not the drink) but then for Amiga.&lt;br /&gt;It allows you to run Amiga command line applications directly on Windows or Mac at lightning speeds.&lt;br /&gt;And low and behold! It works perfectly fine with the SAS/C compiler.&lt;br /&gt;Sweet!&lt;br /&gt;Now I can compile for Amiga on all platforms - including the Amiga itself - using the exact same compiler and setup.&lt;/p&gt;
&lt;h3&gt;Build System.&lt;/h3&gt;
&lt;p&gt;Having fast iteration times make all the difference.&lt;br /&gt;I ended up using this &quot;autorun&quot; setup.&lt;br /&gt;&lt;br /&gt;On the amiga side, I run this script.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;LAB loop&lt;br /&gt;IF EXISTS run.flag&lt;br /&gt; DELETE run.flag&lt;br /&gt;smake&lt;br /&gt; a&lt;br /&gt;ENDIF&lt;br /&gt;WAIT 1 SEC&lt;br /&gt;SKIP loop BACK&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This checks for a file: &quot;run.flag&quot;, and if it exists, it compiles and runs the program.&lt;br /&gt;Then, whenever I save a source file on my mac/windows; a filechange-listener writes to this thisÂ &lt;span&gt;&quot;run.flag&quot; file.&lt;br /&gt;The Amiga picks it up, compiles and runs the demo.&lt;br /&gt;&lt;br /&gt;So, whenever I save a file, a second later, the program runs on Amiga.&lt;br /&gt;cool!&lt;br /&gt;&lt;br /&gt;And I was pleased to find Iīm getting more fluent at writing C.&lt;br /&gt;&lt;/span&gt;&lt;span&gt;I donīt mean &quot;better&quot;, per se, but at least I wasnīt fighting compiler and syntax errors all the time, so I could focus on getting something done, not HOW to get it done.&lt;br /&gt;&lt;br /&gt;And - hip hip hooray! - I made the step to actually include some assembler code in my project.&lt;br /&gt;Baby steps, but itīs a plasma like effect that ran far too slow in C.&lt;br /&gt; &lt;video width=&quot;300&quot; height=&quot;150&quot; src=&quot;https://amigaclub.be/_img/blog/1bitplasma.mp4&quot; controls=&quot;controls&quot;&gt;&lt;/video&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I still canīt believe that actually worked. Yay!&lt;br /&gt;So now I have a good example how to move performance critical code to an assembler function and call that function from C.&lt;br /&gt;Nice!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;To recap:&lt;/p&gt;
&lt;h3&gt;Things I learned&lt;/h3&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;how to flip an image horizontally using code&lt;/li&gt;
&lt;li&gt;how to use functions in assembler to speed up operations and call them from C&lt;/li&gt;
&lt;li&gt;how to scroll a screen horizontally&lt;/li&gt;
&lt;li&gt;how to use vamos to run the SAS/C compiler on osX and windows&lt;/li&gt;
&lt;li&gt;I moved from shrinkler to cranker for compression. Shrinkler compresses better, but cranker is faster to decompress.&lt;/li&gt;
&lt;li&gt;in the end, I avoided compression alltogether. If all assets fit on a single floppy, itīs simpeler and visualy nicer to keep them uncompressed.&lt;/li&gt;
&lt;li&gt;another thing I figured out but didīt use, was how to use the assembler INCBIN thing to include binary data in the executable. Good to know if I ever want a single file demo. For now, the approach to have a light startup exe to display a loading screen and post-load the data is fine.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;markdown-heading&quot; dir=&quot;auto&quot;&gt;
&lt;h3 class=&quot;heading-element&quot; dir=&quot;auto&quot; tabindex=&quot;-1&quot;&gt;Things I want/need to improve in future productions&lt;/h3&gt;
&lt;/div&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;get a hold of timing ... Sync is all over the place and behaves differently on different machines. No doubt my code is still too slow, but at the VERY least I should measure how many cycles each part of the code takes. This is the reason why most effects run a bit faster on a 1200. I beat-synced the thing to be in sync on my machine, but the timing will be slighty of on other machines. This sucks ... To be improved in the next production.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://blog.stef.be/comments/28347&quot;&gt;Leave a comment&lt;/a&gt;</description>
    <comments>http://blog.stef.be/comments/28347</comments>
    <author>blog@stef.be (Steffest)</author>
</item>
<item>
    <title>Naphta</title>
    <pubDate>Sun, 12 Jan 2025 16:36:00 +0100</pubDate>
    <link>http://blog.stef.be/naphta</link>
    <guid isPermaLink="true">http://blog.stef.be/naphta</guid>
    <description>&lt;p&gt;Another demoparty, another demo ...&lt;br/&gt;&lt;br/&gt;I made NAPHTA!&lt;/p&gt;
&lt;p&gt;

&lt;iframe width=&quot;100%&quot; height=&quot;400&quot; src=&quot;https://www.youtube.com/embed/CNF12snLUpE&quot; title=&quot;NAPHTA&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Released at RSYNC 2025.&lt;/p&gt;

&lt;p&gt;An OldSkool demo for Amiga OCS inspired by a live performance I attended and captured of &lt;a
        href=&quot;https://www.naft.live/&quot;&gt;NAFT&lt;/a&gt;, a Belgian Live Analog Techno band.&lt;br/&gt;The music is partially based on,
    or at least HEAVILY inspired by  &quot;Paroxysm&quot; by Naft.&lt;br/&gt;If you want to check out the MOD file -&gt; &lt;a
            href=&quot;https://www.stef.be/bassoontracker/?file=mods%2F2025%2Frsync%2Fnaphta.mod&quot;&gt;here in Bassoontracker&lt;/a&gt;.&lt;br/&gt;It
    runs on an Amiga&lt;span style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt; 500 with 512k fast ram or beyond.&lt;/p&gt;
&lt;p&gt;Technically, itīs a big step up compared to &lt;a href=&quot;https://www.youtube.com/watch?v=6vdG_Bejn5g&quot;&gt;my previous
    production&lt;/a&gt;, but still: baby steps.&lt;br/&gt;I really wanted to use assembler, but progress was just too slow.&lt;br/&gt;I
    got to the point where I could load some graphics and put them on a custom screen in assembler.&lt;br/&gt;Yay! almost a
    demo! But then each additional step took another week of dabbling and tinkering.&lt;br/&gt;&lt;br/&gt;&lt;span
            style=&quot;text-decoration-line: line-through;&quot;&gt;Deadline&lt;/span&gt; Rsync was approaching, so I made the executive
    decision to move back to C.&lt;br/&gt;Hardware banging this time.&lt;br/&gt;I found this YouTube series &quot;&lt;a
            href=&quot;https://www.youtube.com/watch?v=y1_gZAsiaw0&amp;list=PLF3LSwdkRB1DLYvsFJynIBnmlIXkuTwTZ&quot;&gt;Amiga hardware
        programming in C&lt;/a&gt;&quot; that I could wrap my head around, and it gave me some much-needed direction.&lt;br/&gt;Thanks Wei-ju
    Wu!&lt;br/&gt;&lt;br/&gt;Another &quot;aha moment&quot; came when Gigabates explained what the copper actually does, and - in essence -
    how simple it is.&lt;br/&gt;He said &quot;For graphics, you can think of the copper as timed palette changes: You just wait for
    a certain position on the screen, and then you can set any color index to any color, and then it will use that color
    from that position going forward&quot;&lt;/p&gt;
&lt;p&gt;&quot;Ping! ...&quot; &lt;br/&gt;Ooh!!! I can do something with that!&lt;br/&gt;&lt;br/&gt;I started some experiments to have a patterned image
    on screen. the image stays static but when you start switching colors, you can target each pattern section
    individually and give it a unique color, circumventing the usual 32 color limit.&lt;br/&gt;This is of course a well known
    &quot;copper chunky&quot; trick, but I found it interesting that each &quot;pixel&quot; doesnīt have to be square, it can be anything
    you want.&lt;br/&gt;This formed the basis of most of the effects in Naphta. (can you call them effects?)&lt;br/&gt;&lt;br/&gt;I aimed
    for some sort of stained-glass visual.&lt;br/&gt;To keep things simple, I used horizontal patterns in 16 or 8 colors, so I
    could avoid swapping colors midway on a scanline.&lt;br/&gt;Also, I stayed away from color 0 to avoid having to reset it
    each line when entering the overscan areas.&lt;br/&gt;Yeah.... not the most hires copper-chunky, but it was a nice
    experiment and usefully to wrap my head around the copper.&lt;br/&gt;&lt;br/&gt;This is the image for the soft pixel blur
    anims. The picture doesnīt move, the animation is just the copper, setting palette colors like crazy.&lt;br/&gt;The
    &quot;slowness&quot; is not the copper, by the way, itīs the C code that has to calculate the correct copperlist index of each
    position. I probably should/could precalculate that too.&lt;br/&gt;&lt;br/&gt;&lt;img
            src=&quot;http://www.amigaclub.be/api/image/_img/blog/grid15.png&quot; alt=&quot;grid15.png&quot; width=&quot;320&quot;
            height=&quot;256&quot;/&gt;&lt;br/&gt;&lt;br/&gt;Iīm still largely clueless in C-land. I really should dive into &lt;a
            href=&quot;https://github.com/BartmanAbyss/vscode-amiga-debug&quot;&gt;BartMans toolchain&lt;/a&gt; and set up a proper
    monitor/compiler.&lt;br/&gt;But even now:&lt;br/&gt;Boy, oh Boy, oh Boy, now I FINALLY understand why everybody loves those
    custom Amiga chips.&lt;br/&gt;What a beautiful system.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Another interesting bit - Or at least I though so -
    was the use of the music to drive the timing of the effects, and not the other way around.&lt;br/&gt;Iīm using the
    excellent &lt;a href=&quot;https://aminet.net/package/mus/play/ptplayer&quot;&gt;PTPlayer&lt;/a&gt; replay library and this supports
    reading out the &quot;E8&quot; command.&lt;br/&gt;&lt;br/&gt;&lt;img src=&quot;http://www.amigaclub.be/api/image/_img/blog/e8.png&quot; alt=&quot;&quot;
                                                width=&quot;521&quot; height=&quot;212&quot;/&gt;&lt;br/&gt;&lt;br/&gt;This way you can let the music
    control which part of the code should be triggered, and you still can use all the Fxx commands you like to set the
    music speed.&lt;br/&gt;Double handy in my case as I donīt have a clue how fast my code runs (I know itīs sloooow though
    :-) ) and often routines take several frames to complete, so having an external thingie to keep the timing is
    nice.&lt;br/&gt;&lt;br/&gt;And a third concept was that I got somewhat obsessed with &quot;transparency&quot; on Amiga.&lt;br/&gt;Fact is:
    transparency doesnīt exist on Amiga OCS but ... we have bitplanes!&lt;br/&gt;Bitplanes are layers stacked on top of each
    other, and you can use that to &quot;fake transparency&quot; if you reduce the color count.&lt;br/&gt;For example this scene uses 5
    bitplanes, 32 colors.&lt;br/&gt;&lt;img src=&quot;https://www.amigaclub.be/api/image/_img/blog/trumpeta.png&quot; alt=&quot;trumpeta.png&quot;
                                   width=&quot;300&quot; height=&quot;199&quot;/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;The first 3 bitplanes are the base image in
    8 colors.&lt;br/&gt;&lt;img src=&quot;https://www.amigaclub.be/api/image/_img/blog/trumpetb.png&quot; alt=&quot;trumpetb.png&quot; width=&quot;320&quot;
                       height=&quot;256&quot;/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Then the spotlights are on bitplane 4, forming colors 9 to
    16.&lt;br/&gt;&lt;img src=&quot;https://www.amigaclub.be/api/image/_img/blog/trumpetd.png&quot; alt=&quot;trumpetd.png&quot; width=&quot;320&quot;
                 height=&quot;256&quot;/&gt;&lt;br/&gt;&lt;br/&gt;So if you set those colors to a slight variation of the first 8 colors, you get
    the impression of a transparent layer.&lt;br/&gt;&lt;br/&gt;And we still have 1 bitplane left, so we can repeat this trick on
    bitplane 5, forming the colors 17 to 32, giving the impression of 2 transparent layers.&lt;br/&gt;&lt;img
            src=&quot;https://www.amigaclub.be/api/image/_img/blog/trumpetc.png&quot; alt=&quot;trumpetc.png&quot; width=&quot;320&quot; height=&quot;280&quot;/&gt;&lt;br/&gt;&lt;br/&gt;The
    way the display works on the Amiga is that each bitplane is &quot;just a chunk of memory&quot;.&lt;br/&gt;You can just point to
    other memory sections if you want to display something else so you donīt have to copy things around.&lt;br/&gt;This means
    that scrolling a bitplane is just &quot;setting the pointer to the address of the row below&quot;.&lt;br/&gt;This is trivial if you
    know it, but it took me quite some time to switch my mental model of a &quot;a screen is something you draw to&quot; to &quot;a
    screen is just a display of several memory blocks&quot;.&lt;br/&gt;Once you make that switch, suddenly you realise you can do
    some pretty cool tricks.&lt;br/&gt;Combined with the careful palette mapping, you then get - for example - the appearance
    of a semi-transparent layer that is moving on a background.&lt;br/&gt;&lt;br/&gt;Some key takeaways for future productions:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Having a good build system is important. Itīs nice to be able to compile/run/test with a single click and to be
        able to iterate fast. Hooray for emulators!
    &lt;/li&gt;
    &lt;li&gt;Thereīs something fishy with my areafill code ... it sometimes barfs on low-spec machines, and itīs way too slow.
        I mean: if I ever want to go 3D, I have to draw triangles, right ?
    &lt;/li&gt;
    &lt;li&gt;I like the &quot;progressive enhancement&quot; approach. It still should run on a stock 500, but if a faster machine is
        detected, it might as well use it and swap to higher quality music/graphics.
    &lt;/li&gt;
    &lt;li&gt;The &quot;add21&quot; command that EXE2ADF adds, causes a Guru in vAmiga (and only there?, weird) -&gt; TODO: investigate
        because 21k extra chipram is most welcome.
    &lt;/li&gt;
    &lt;li&gt;I should investigate trackloaders or find a way to load stuff from disk without blocking the main thread.
        Currently, I load EVERYTHING at the start which takes a stupid amount of time. Using compression tools like
        Shrinkler solve the disk-issue, but also cost a lot of time and memory, which maybe is not the best tradeoff.
    &lt;/li&gt;
    &lt;li&gt;and again: assembler is the way if you want any kind of performance... &lt;/li&gt;
    &lt;li&gt;even more important, maybe, is understanding how many cpu cycles each operation costs. an obvious one is: avoid
        mutiply/divide, unless itīs by a factor of 2, and you can use bit-shifting. (and even bit-shifting is not free),
        so: I really need a way to measure these things to know what to avoid.
    &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In general: I feel Iīm just scratching the surface, still so much to discover and to learn, and making small
    productions like this is an excellent way to do so, so ... on to the next one!&lt;br/&gt;&lt;br/&gt;&lt;span&gt;Source code is on&lt;/span&gt;
    &lt;a href=&quot;https://github.com/steffest/naphta/&quot;&gt;https://github.com/steffest/naphta/&lt;br/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/steffest/naphta/raw/refs/heads/main/release/naphta.adf&quot;&gt;ADF version is here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Some more background info:&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: Verdana, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span
        style=&quot;font-size: 11px;&quot;&gt;Tools Used:&lt;br/&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;strong&gt;Graphics: &lt;/strong&gt;&lt;br/&gt;&lt;/span&gt;Based on
    live footage from the band &quot;NAFT&quot;&lt;br/&gt;Images where first sketched on paper and then produced in PhotoShop, including
    the Generative Fill tool, so I guess they are not AI free.&lt;br/&gt;So yeah: those nice smoke effects are generated, not
    pixelled by hand.&lt;br/&gt;Images were finalized and pixel optimised in &lt;a
            href=&quot;https://www.stef.be/dpaint/&quot;&gt;Dpaint.js&lt;/a&gt;.&lt;br/&gt;Some chunky-pixel animations were taken from Giphy.
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Music:&lt;/strong&gt;&lt;br/&gt;The main theme and some samples where lifted from the song &quot;Paroxysm&quot; by Naft using
    various stem-splitting tools.&lt;br/&gt;The mod file was composed by hand using &lt;a
            href=&quot;https://www.stef.be/bassoontracker/&quot;&gt;BassoonTracker&lt;/a&gt;: &lt;br/&gt;The disk version of naphta uses a
    lower-quality compressed mod file to make it fit on a single disk and in 512k chip ram.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Code:&lt;/strong&gt;&lt;br/&gt;Home-cooked hardware banging C.&lt;br/&gt;Compiled with SAS-C on the Amiga (but written in
    modern editors)&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://blog.stef.be/comments/28344&quot;&gt;Leave a comment&lt;/a&gt;</description>
    <comments>http://blog.stef.be/comments/28344</comments>
    <author>blog@stef.be (Steffest)</author>
</item>
<item>
    <title>Amiga Arcade</title>
    <pubDate>Wed, 18 Sep 2024 00:30:06 +0100</pubDate>
    <link>http://blog.stef.be/?28343</link>
    <guid isPermaLink="true">http://blog.stef.be/?28343</guid>
    <description>New project!&lt;br&gt;&lt;br&gt;
Turn an old iMac into the Ultimate Amiga Game Experience
&lt;br&gt;
&lt;iframe width=&quot;100%&quot; height=&quot;400&quot; src=&quot;https://www.youtube.com/embed/pXloC9R0SN8&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;br&gt;&lt;br&gt;
More info, images and downloads @ 
&lt;a href=&quot;https://www.amigaclub.be/projects/arcade&quot; target=&quot;_blank&quot;&gt;https://www.amigaclub.be/projects/arcade&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://blog.stef.be/comments/28343&quot;&gt;Leave a comment&lt;/a&gt;</description>
    <comments>http://blog.stef.be/comments/28343</comments>
    <author>blog@stef.be (Steffest)</author>
</item>
<item>
    <title>BassoonTracker 0.5</title>
    <pubDate>Fri, 6 Sep 2024 12:38:58 +0100</pubDate>
    <link>http://blog.stef.be/?28342</link>
    <guid isPermaLink="true">http://blog.stef.be/?28342</guid>
    <description>&lt;p&gt;[video src=&quot;http://blog.stef.be/5/Bassoontracker05.mp4&quot;]&lt;/p&gt;
&lt;p&gt;I picked up one of my old projects again: &lt;a href=&quot;https://www.stef.be/bassoontracker/&quot; target=&quot;_blank&quot;&gt;BassoonTracker&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;BassoonTracker is some sort of music sequencer in the &lt;a href=&quot;https://en.wikipedia.org/wiki/Music_tracker&quot; target=&quot;_blank&quot;&gt;&quot;tracker&quot; tradition.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Very retro, very geeky - I love it :-)&lt;/p&gt;
&lt;p&gt;Most people - including me - use it more to listen to other peoplesī songs than to create their own, so I polished the &quot;playing experience&quot; a bit and added playlists, amongst others.&lt;br /&gt;Above is a small video of the new stuff on version 0.5.&lt;br /&gt;Check out the full changelist of this release &lt;a href=&quot;https://www.stef.be/bassoontracker/docs/?history&quot; target=&quot;_blank&quot;&gt;at the history page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Underneath the surface, the code also got a mayor and long overdue overhaul: I moved to ES modules, making the code much easier to maintain and much easier to expand.&lt;br /&gt;As a result, the initial footprint is much smaller - coming in at 97kb compressed - which is quite nice for an app that&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;has a complete custom graphical UI rendering engine&lt;/li&gt;
&lt;li&gt;has a complete custom audio engine&lt;/li&gt;
&lt;li&gt;can read and write various old and weird binary file formats&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For the past months, tracked music is more or less on non-stop repeat when Iīm working as - for me - itīs the perfect coding music. (After all; itīs code itself !)&lt;br /&gt;I like the fact that tracked songs are by nature open source: playback is in real time generated from the source samples, the musical notes and the effects.&lt;br /&gt;If you hear an interesting part, you can instantly investigate how it was done.&lt;/p&gt;
&lt;p&gt;Because tracked music comes from a time where diskspace was limited, the files are usually very small and donīt contain long samples or lyrics, making them even more perfect as coding backgroiund.&lt;/p&gt;
&lt;p&gt;I must say it makes me surprisingly happy that the BassoonTracker source code repository jumped the 1000-star marker recently.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://blog.stef.be/5/1kstars.png&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;Yay! Iīm glad people still like tracked music.&lt;br /&gt;(Check out &lt;a href=&quot;https://www.stef.be/bassoontracker/?file=playlist-demoscene2024&quot; target=&quot;_blank&quot;&gt;this playlist with &quot;demoscene releases&quot; of this year&lt;/a&gt; - it really is a vibrant scene ! )&lt;br /&gt;&lt;br /&gt;The &lt;a href=&quot;https://www.stef.be/bassoontracker/&quot; target=&quot;_blank&quot;&gt;BassoonTracker app can be found her&lt;/a&gt;e - &lt;a href=&quot;https://github.com/steffest/bassoontracker&quot; target=&quot;_blank&quot;&gt;source code is here&lt;/a&gt;.&lt;/p&gt;&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://blog.stef.be/comments/28342&quot;&gt;Leave a comment&lt;/a&gt;</description>
    <comments>http://blog.stef.be/comments/28342</comments>
    <author>blog@stef.be (Steffest)</author>
</item>
<item>
    <title>Desire FM</title>
    <pubDate>Sun, 21 Jan 2024 12:25:09 +0100</pubDate>
    <link>http://blog.stef.be/?28339</link>
    <guid isPermaLink="true">http://blog.stef.be/?28339</guid>
    <description>&lt;br&gt;
&lt;iframe width=&quot;100%&quot; height=&quot;400&quot; src=&quot;https://www.youtube.com/embed/bBBh1QYgo0U&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;br&gt;&lt;br&gt;
I participated in another Commodore Amiga demo, released at the &quot;&lt;a href=&quot;https://demozoo.org/parties/4740/&quot;&gt;Gerp&lt;/a&gt;&quot; demoparty this weekend.&lt;br&gt;&lt;br&gt;Happy to say it took 1st place in the Amiga 40k compo.&lt;br&gt;&lt;br&gt;I provided some graphics (logos, sprites) and some overall design. &lt;br&gt;&lt;br&gt;All credits to &lt;a href=&quot;https://demozoo.org/sceners/135703/&quot; target=&quot;_bkank&quot;&gt;GigaBates&lt;/a&gt;, though ... quite amazing what he manages to squeeze out of a humble Amiga 500 (and squeeze in only 40 kb!)&lt;br&gt;And &lt;a href=&quot;https://demozoo.org/sceners/5371/&quot; target=&quot;_blank&quot;&gt;mA2E&lt;/a&gt; provided an excellent groovy chiptune for the demo.&lt;br&gt;Well done, team! ð&lt;br&gt;&lt;br&gt;Actually: most of the graphics I made got scrapped due to size constraints, but this means I already have some material for future releases.&lt;br&gt;&lt;br&gt;So: On to the next one!&lt;br&gt;&lt;br&gt;Downloads on &lt;a href=&quot;https://demozoo.org/productions/336657/&quot;&gt;https://demozoo.org/productions/336657/&lt;/a&gt; if you want ot run it yourself on your Amiga.&lt;br&gt;Assembly source at &lt;a href=&quot;https://github.com/grahambates/desire-fm&quot;&gt;https://github.com/grahambates/desire-fm&lt;/a&gt; &lt;br&gt;(oh man ... that code ... ðĪŊ ðĨ )
&lt;br&gt;&lt;br&gt;
And also: probably the only time in my life I have 2 productions on the &quot;monthly top 10&quot; on Pouet.&lt;br&gt;
Not too bad! :-) &lt;br&gt;
&lt;br&gt;
&lt;a href=&quot;https://www.pouet.net/&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://blog.stef.be/5/pouet_top.png&quot; border=&quot;0&quot; width=&quot;286&quot;&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://blog.stef.be/comments/28339&quot;&gt;Leave a comment&lt;/a&gt;</description>
    <comments>http://blog.stef.be/comments/28339</comments>
    <author>blog@stef.be (Steffest)</author>
</item>
<item>
    <title>Ordo</title>
    <pubDate>Sun, 7 Jan 2024 17:11:47 +0100</pubDate>
    <link>http://blog.stef.be/ordo</link>
    <guid isPermaLink="true">http://blog.stef.be/ordo</guid>
    <description>&lt;img src=&quot;http://blog.stef.be/image.aspx?action=thumb&amp;b=5&amp;w=400&amp;h=500&amp;img=ordo-screenshot-big.png&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;
I went to my first &quot;demoparty&quot; this weekend.&lt;br&gt;
RSYNC in Leuven , hosted by some random scrubby guy called fRAnKY.&lt;br&gt;
Itīs super amazing how many super amazing people can be at the same place at the same time!&lt;br&gt;
&lt;br&gt;
Of course a demoparty is only a demoparty if you release a demo, and I didnīt want to show up empty handed.&lt;br&gt;
I made &quot;Ordo&quot;, a visual story about the endless cycle of ORDER and CHAOS.&lt;br&gt;
&lt;br&gt;
The first demo out of my own kitchen.&lt;br&gt;
Mostly a glorified slideshow, though ...&lt;br&gt;
I had the naÃŊve idea to write it in system friendly C code and compile it on the amiga itself.&lt;br&gt;
I know nothing about c and still donīt - but it was a fun exercise.&lt;br&gt;
In the end I only figured out how to do 2 things without crashing: how to blit pieces of bitmaps on the screen and how to change colours, so thatīs what I went with.&lt;br&gt;
No sprites, no bobs, no copper, thatīs for the next one!&lt;br&gt;
&lt;br&gt;
Downloads on &lt;a href=&quot;https://demozoo.org/productions/335741/&quot;&gt;https://demozoo.org/productions/335741/&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
Hereīs the video
&lt;iframe width=&quot;100%&quot; height=&quot;400&quot; src=&quot;https://www.youtube.com/embed/6vdG_Bejn5g&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen&gt;&lt;/iframe&gt;

&lt;br&gt;
&lt;br&gt;
Should run on any Amiga with at least 1MB of chip ram.&lt;br&gt;
(Thatīs because Iīm lame and donīt know yet how to do proper memory management or compression on Amiga)&lt;br&gt;
&lt;br&gt;
And there seem to be some severe audio/video sync issues on some systems ð&lt;br&gt;
(Thatīs because Iīm lame and I have no idea how to keep 2 seperate processes in sync on Amiga)&lt;br&gt;
&lt;br&gt;
Just scratching the surface and so much still to learn, but boy, what an interesting machine, that Amiga ... right ?
&lt;br&gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://blog.stef.be/comments/28337&quot;&gt;Leave a comment&lt;/a&gt;</description>
    <comments>http://blog.stef.be/comments/28337</comments>
    <author>blog@stef.be (Steffest)</author>
</item>
<item>
    <title>Amiga DFunk</title>
    <pubDate>Mon, 26 Jun 2023 14:12:37 +0100</pubDate>
    <link>http://blog.stef.be/dfunk</link>
    <guid isPermaLink="true">http://blog.stef.be/dfunk</guid>
    <description>&lt;img src=&quot;http://blog.stef.be/image.aspx?action=thumb&amp;b=5&amp;w=400&amp;h=500&amp;img=dfunk1.png&quot;&gt;&lt;br&gt;&lt;div&gt;
    &lt;div&gt;The past few weeks I have been collaborating with &lt;a href=&quot;https://demozoo.org/sceners/135703/&quot;&gt;GigaBates&lt;/a&gt; and &lt;a href=&quot;https://demozoo.org/sceners/5371/&quot;&gt;mA2E&lt;/a&gt; to create an &quot;Amiga Demo&quot;.&lt;br /&gt;&lt;br /&gt;For those unfamiliar with the demoscene, itīs a geeky gathering, usually with some friendly competition, to show off creative and technical skills by making &quot;demos&quot;: a short media production combining graphics, music and cuttin edge programming into 1 showcase.&lt;br /&gt;
        Specifically in the retro computer scene, itīs also a continuous quest to see how far you can push these wonderful machines and to make them do things never dreamed possible.&lt;br /&gt;&lt;/div&gt;
    &lt;div&gt;&lt;br&gt;We opted for a 64kb &quot;intro&quot; for the Classic Commodore Amiga 500 - a personal computer released in 1986 with 1MB of total memory and a humble CPU running at 7mhz. (basically: a computer that is a thousand times slower then your current phone)&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
    &lt;br&gt;mA2E came up with this funky tune, I did the graphics, GigaBates coded the effects and made it all happen.
&lt;/div&gt;
&lt;div&gt;
    &lt;div&gt;Iīm happy to say it won the 1st price at the &lt;a href=&quot;https://novaparty.org/&quot;&gt;Nova2023 DemoParty&lt;/a&gt; this weekend in the &quot;Old School Demo&quot; category.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
    &lt;div&gt;You can find it at &lt;span&gt;&lt;a rel=&quot;nofollow noreferrer&quot; tabindex=&quot;0&quot; href=&quot;https://www.pouet.net/prod.php?which=94543&quot; target=&quot;_blank&quot;&gt;https://www.pouet.net/prod.php?which=94543.&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;Some screenshots:&lt;br /&gt; 
&lt;table border=&quot;0&quot; width=&quot;100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://blog.stef.be/5/dfunk2.png&quot;&gt;&lt;img src=&quot;https://blog.stef.be/5/dfunk2.png&quot; alt=&quot;&quot; width=&quot;100%&quot; /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://blog.stef.be/5/dfunk3.png&quot;&gt;&lt;img src=&quot;https://blog.stef.be/5/dfunk3.png&quot; alt=&quot;&quot; width=&quot;100%&quot; /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://blog.stef.be/5/dfunk4.png&quot;&gt;&lt;img src=&quot;https://blog.stef.be/5/dfunk4.png&quot; alt=&quot;&quot; width=&quot;100%&quot; /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/span&gt;&lt;/div&gt;
    &lt;div&gt;&lt;span&gt;&lt;br&gt;&lt;br&gt;And hereīs a video capture of the demo.&lt;/span&gt;&lt;/div&gt;
    &lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;

    &lt;div&gt;

        &lt;iframe width=&quot;100%&quot; height=&quot;400&quot; src=&quot;https://www.youtube.com/embed/U4hwGc5yAiU&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen&gt;&lt;/iframe&gt;

        &lt;br&gt;

        &lt;div&gt;&lt;br /&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div&gt;
        &lt;div&gt;It was quite a challenge to fit everything into 64kb.&lt;/div&gt;
        &lt;div&gt;Every image was methodically analysed to get it as small as possible.&lt;/div&gt;
        &lt;div&gt;
            &lt;ul&gt;
                &lt;li&gt;Can we reduce the colour count even more?&lt;/li&gt;
                &lt;li&gt;Can we half the height and double it again in code while palette-shifting it, without sacrificing too much detail?&lt;/li&gt;
                &lt;li&gt;Can we replace some parts with copper lines?&lt;/li&gt;
                &lt;li&gt;If we loose the dithering, it compresses 1kb smaller, is that worth it?&lt;/li&gt;
                &lt;li&gt;Can we optimize the palette even more to squeeze out those last few bytes?&lt;/li&gt;
            &lt;/ul&gt;
        &lt;/div&gt;
        &lt;div&gt;Super interesting.&lt;/div&gt;
    &lt;/div&gt;
    &lt;div&gt;
        &lt;div&gt;Lessons learned:&lt;/div&gt;
        &lt;div&gt;
            &lt;ul&gt;
                &lt;li&gt;Nobody codes directly on Amiga anymore: itīs all cross-compilation.&lt;/li&gt;
                &lt;li&gt;Writing your own tools pays off: this is such a niche of a niche, that general purpose image software just isnīt up for the job.&lt;br /&gt;Being able the add the stuff I needed to my &lt;a class=&quot;x1i10hfl xjbqb8w x6umtig x1b1mbwd xaqea5y xav7gou x9f619 x1ypdohk xt0psk2 xe8uvvx xdj266r x11i5rnm xat24cr x1mh8g0r xexx8yu x4uap5 x18d9i69 xkhd6sd x16tdsg8 x1hl2dhg xggy1nq x1a2a7pz xt0b8zv x1fey0fg&quot; rel=&quot;nofollow noreferrer&quot; tabindex=&quot;0&quot; href=&quot;https://l.facebook.com/l.php?u=https%3A%2F%2Fgithub.com%2Fsteffest%2FDPaint-js%3Ffbclid%3DIwAR2hkbHeSGYRQtMjMPuVKVZAy5YLuh4EfIvuuPzv3VjoRLqwPc6cIwKA7c8&amp;h=AT3HJK5IlMSZn2cO0O370o0CZTFLrUSOzE_HWE1IJVQkmecYrh3X5W2PiNDHVqYZpy4MMgPZjAck-7y5wB0QVQbbvjF1OgAtxA5D0IPzMpL2jpxPuYLmumR_uxXjqfOp57AV1skMFuzqztvyUg&amp;__tn__=-UK-R&amp;c[0]=AT1B-rGRE5aw9xmaSjKcrzJslPGEnVwz9oo1uPEsMVLi-JwPLfAN9iR-YCdDHfx4PZxIDRueIWKlFyxjjQta_KZFJobZhwyev6hHttfgOq57biuiIOcKZ_g8M--4NKjHAoy7VjWPUBCCOLmPihtPP12d_qGBG_Fb83QINwjUR7vSh2o_D0geNXmWSoe4-BihecbeTHwWAGwo0YKS4EkMwLWP&quot; target=&quot;_blank&quot;&gt;https://github.com/steffest/DPaint-js&lt;/a&gt; was super helpful to quickly iterate and get the most optimal results possible.&lt;br /&gt;So: colour cycling, fine-grained palette controls and frame based animation will be part of the next release.&lt;/li&gt;
                &lt;li&gt;Hats off to GigaBates: I made rough versions of my ideas in JavaScript that need a modern browser and a multi-gigahertz CPU to run, he was able to transform that into super optimal assembler that runs on a standard 7mh Amiga 500 ... impressive!&lt;/li&gt;
            &lt;/ul&gt;
        &lt;/div&gt;
        &lt;div&gt;ah, and the best part: itīs all open source! =&gt; &lt;span&gt;&lt;a class=&quot;&quot; rel=&quot;nofollow noreferrer&quot; tabindex=&quot;0&quot; href=&quot;https://github.com/grahambates/desire-dfunk&quot; target=&quot;_blank&quot;&gt;https://github.com/grahambates/desire-dfunk&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div&gt;
        &lt;div&gt;&lt;br /&gt;That was fun, letīs do it again!&lt;/div&gt;
    &lt;/div&gt;


&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://blog.stef.be/comments/28336&quot;&gt;Leave a comment&lt;/a&gt;</description>
    <comments>http://blog.stef.be/comments/28336</comments>
    <author>blog@stef.be (Steffest)</author>
</item>
<item>
    <title>PiStorm32-lite for the Amiga 1200</title>
    <pubDate>Sun, 29 Jan 2023 13:03:53 +0100</pubDate>
    <link>http://blog.stef.be/pistorm32lite</link>
    <guid isPermaLink="true">http://blog.stef.be/pistorm32lite</guid>
    <description>&lt;p&gt;&lt;img src=&quot;http://blog.stef.be/5/ps32_caffeineOS.jpg&quot; alt=&quot;Amiga 1200 PiStorm32 Lite runing Caffeine OS&quot; width=&quot;100%&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The trend of enhancing retrocomputers with new hardware expansions is still going strong.&lt;/p&gt;
&lt;p&gt;Nowadays we can &quot;implement&quot; hardware designs in software and use FPGAs and raspberry PIs to replace and improve old     and aging components.&lt;br /&gt;The newest star is the &lt;a href=&quot;https://github.com/PiStorm/pistorm32-lite-hardware&quot;&gt;PiStorm32&lt;/a&gt;:     a bridge between the expansion port of the Amiga 1200 and a raspberry PI.&lt;br /&gt;This means you can use the modern     features and speed of a raspberry PI to &quot;emulate&quot; all sorts of Amiga hardware.&lt;br /&gt;The piStorm32 supports the     rasberry PI 3A, 3B and 4. PiStorm is an open source project by&amp;nbsp;&lt;span&gt;&lt;a href=&quot;https://twitter.com/Claude1079&quot;&gt;Claude Schwarz&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt; I got mine from     &lt;a href=&quot;https://www.facebook.com/cedric.billemont/&quot;&gt;C&amp;eacute;dric&lt;/a&gt; who was kind enough to produce a first batch     of the PiStorm32-lite     &lt;br /&gt;&lt;br /&gt; &lt;img src=&quot;http://blog.stef.be/5/ps32_pistorm_front.jpg&quot; alt=&quot;Amiga 1200 PiStorm32 Lite Front&quot; width=&quot;100%&quot; /&gt;&lt;br /&gt; &lt;br /&gt;&lt;img src=&quot;http://blog.stef.be/5/ps32_pistorm_back.jpg&quot; alt=&quot;Amiga 1200 PiStorm32 Lite Back&quot; width=&quot;100%&quot; /&gt;&lt;br /&gt; (note: the &quot;lite&quot; in the name doesnīt mean thereīs a &quot;full&quot; version somewhere, it means the     original hardware design was updated to work around the world-wide component shortage)&lt;br /&gt;Note that there are 2     main ways you can use the PI in the piStorm: &lt;br /&gt;One way is to run linux on it, and configure your Amiga emulation     from the linux side. This feels a bit ... yuck and is a few bridges too far for me: when you switch on the Amiga,     you have to wait untl the Linux side has booted for it to provide emulation services. The benefit is that you can     use this linux bridge also for things like networking etc, but I feel: if you want to go that route, why not just     install a dedicated emulation package like &lt;a href=&quot;https://cubiclenate.com/pimiga/&quot;&gt;Pimiga&lt;/a&gt; or &lt;a href=&quot;https://github.com/BlitterStudio/amiberry&quot;&gt;AmyBerry&lt;/a&gt; on the PI and be done with it.&lt;/p&gt;
&lt;p&gt;The other way - much more exciting - is &lt;a href=&quot;https://github.com/michalsc/Emu68&quot;&gt;Emu68&lt;/a&gt; - this is a bare metal     68k emulator for ARM devices. Ok, it still has to boot, but as itīs bare metal, it boots in milliseconds and itīs     WAY faster to emulate the 68k CPU.&lt;br /&gt;Emu68 is a project of &lt;a href=&quot;https://www.patreon.com/michal_schulz&quot;&gt;Michal         Schulz&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I already got a PI3A+ running in a Amiga 500 and 2000, so I mostly was interested in the potential speed increase of     using a PI4. Boy ... Is was not disappointed!&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://blog.stef.be/5/ps32_sysinfo.jpg&quot; alt=&quot;&quot; width=&quot;100%&quot; /&gt;&lt;br /&gt;&lt;br /&gt;This ... thing ...     flies!&lt;br /&gt;Ok Ok, I know the Sysinfo benchmarks mean doodly squat whern JIT emulation is enabled but still: it does     show the shear horsepower: 2333 MIPS / 2235226 dhrystones ... Iīve never ever ever seen such numbers.&lt;br /&gt;And itīs     noticeable: everything seems zippy zippy fast.&lt;br /&gt;It also seems the slow CHIP ram access mostly has been     solved.&lt;br /&gt;The fast ram is configurable and by default set to 2GB. 2GB Ram in an Amiga .... thatīs     insane.&lt;br /&gt;&lt;br /&gt;I really like that you can access all the settings and configuration of the PI from inside the     Amiga.&lt;br /&gt;From the Amiga side you also get all the tools to monitor the PI.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://blog.stef.be/5/ps32_pi-info.jpg&quot; alt=&quot;&quot; width=&quot;100%&quot; /&gt;&lt;br /&gt;&lt;br /&gt;By default the PI4     runs at 1.5GHz but thereīs a setting to make that 2.2Ghz. (Thatīs how I got those 2333 MIPS)&lt;br /&gt;The PI runs at 70&amp;deg;C     then - compared to 50&amp;deg;C cliocked at 1.5GHz. Still well within limits.&lt;br /&gt;The configuration files are stored on     a FAT32 partition on the SD card that you can access from the Amiga side.&lt;br /&gt;This also means you can use this     partition to quickly share files between the Amiga and your PC/Mac. Super handy.&lt;br /&gt;&lt;br /&gt;One of the nice things of     the piStorm, is that it acts as any other accelerator card: you can still use all the native Amiga hardware. &lt;br /&gt;For     example, you can still boot from your internal IDE interface, or floppy disk even. It then just provides the ROM,     RAM and CPU.&amp;nbsp;&lt;br /&gt;If you really want to go &quot;stock&quot; again, you can completely disable the piStorm by holding     down the reset keys while booting. Nice.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://blog.stef.be/5/ps32_os31.jpg&quot; alt=&quot;&quot; width=&quot;100%&quot; /&gt;&lt;br /&gt;&lt;br /&gt;But you donīt put in a     piStorm in your 1200 if you want stock, of course ... you want SPEED!&lt;br /&gt;Did I already mention itīs fast?&lt;br /&gt;MPEG     and AVI video plays smoothly, decoding mp3 is hardly noticeable (in contrast to a main task that drains even a 060     CPU).&lt;br /&gt;Obviously the software that gains the most of the CPU and RAM boost is the software that plays nice with     the system and avoids direct hardware banging. Emulating other systems for example: these run mostly on the CPU and     require some ram.&lt;br /&gt;Hereīs the Classic MacOS 8 being emulated on the Amiga, running PhotoShop 4.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://blog.stef.be/5/ps32_photoshop_4_loading.jpg&quot; alt=&quot;&quot; width=&quot;100%&quot; /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://blog.stef.be/5/ps32_photoshop_4.jpg&quot; alt=&quot;&quot; width=&quot;100%&quot; /&gt;&lt;br /&gt; &lt;br /&gt;Faster then     it ever was, including on the original mac hardware.&lt;br /&gt;&lt;br /&gt;Is it all good?&lt;br /&gt;No.&lt;br /&gt;As with all &quot;super     accelerator cards&quot;, compatibility with hardware banging software like games and demos is not super great.&lt;br /&gt;WHDLoad     goes a long way of ironing out the kinks, but still I experienced frequent crashes running some games and demos.&lt;br /&gt;So     if youīre main interest is playing classic Amiga games or watching demos, the piStorm is not your best friend.&lt;br /&gt;But     then again: with the kind of performance the PI delivers, it might even make more sense to run these things in an     &quot;emulated Amiga&quot; on top the real Amiga. perfectly doable and about the only way to ensure the &quot;hardware&quot; is exactly     era-correct and what the software expects.&lt;br /&gt;&lt;br /&gt;Another annoying part is the cable clutter the PI introduces,     especially if you want to extend the SD cards to be accessible from outside the case.&lt;br /&gt;Of course, this is no     different then with other cards for the Amiga 1200, but the PI can be more extreme if you want to access the regular PI ports like USB and Ethernet too. I guess it will be another round of extension cables and 3D-printing to make it     all fit nicely.&lt;br /&gt;About 3D printing: the PI3 has plenty of space, but the PI4 pushes a bit against the trapdoor it īs     closed.&lt;br /&gt;&lt;img src=&quot;http://blog.stef.be/5/ps32_trapdoor.jpg&quot; alt=&quot;&quot; width=&quot;100%&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;I guess designing and printing a trapdoor that gives a bit more space and ventilation for the PI is a good idea.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;Likewise,     the PI GPIO pins are VERY close to the metal of the Amiga keyboard. For that reason itīs really recommended to put     some extra insulation between the metal keyboard plate and the PI.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://blog.stef.be/5/ps32_keyboard_tape.jpg&quot; alt=&quot;&quot; width=&quot;100%&quot; /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://blog.stef.be/5/ps32_close_to_keyboard.jpg&quot; alt=&quot;&quot; width=&quot;100%&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Verdict:&lt;br /&gt;I love it. &lt;br /&gt;Itīs clear that this is THE future of Amiga accelerator cards.&lt;br /&gt;Yes, it still has     itīs flaws, but things are progressing rapidly and everything is open source.&lt;br /&gt;What a big contrast with &lt;a href=&quot;https://www.shop.apollo-computer.com/&quot;&gt;those other fast Amiga Accelerator cards&lt;/a&gt; ...&amp;nbsp;&lt;br /&gt;I     must say one of the first thoughts in my head when testing the piStorm was &quot;Ouch ... this means game over for     Apollo&quot;&lt;br /&gt;with the PIStorm delivering 4 times the performance at a quarter of the price of those other cards, it     pretty hard to justify getting an IceDrake or a &lt;a href=&quot;https://amigastore.eu/873-terrible-fire-1260-128mb-ide.html&quot;&gt;TF1260&lt;/a&gt; ...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://blog.stef.be/5/ps32_pistorm_installed.jpg&quot; alt=&quot;&quot; width=&quot;100%&quot; /&gt;&lt;br /&gt;&lt;br /&gt;What I     like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Insane performance, especially at that price point. At this moment itīs simply THE fastest classic Amiga ever. &lt;/li&gt;
&lt;li&gt;Can be easily disabled to revert to stock hardware&lt;/li&gt;
&lt;li&gt;Itīs still &quot;just a PI&quot;: pop in another SD card and you boot directly into the PI to do non-Amiga stuff&lt;/li&gt;
&lt;li&gt;easy file transfer between Amiga and PC/Mac using the SD card.&lt;/li&gt;
&lt;li&gt;All configuration and monitoring available from the Amiga side.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What could be better:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Switching between RTG and Classic display modes is still a pain&lt;/li&gt;
&lt;li&gt;the ususal cable/port extension issues if you want to access the PI ports from outside the case&lt;/li&gt;
&lt;li&gt;Still some compatibility issues with older &quot;hardware banging&quot; software&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Excellent excellent work by C&amp;eacute;dric, Claude, Michal and many others.&lt;br /&gt;If you like the project, please     consider becoming a &lt;a href=&quot;https://www.patreon.com/michal_schulz&quot;&gt;Patreon of Michal&lt;/a&gt; and/or voicing your     support on the &lt;a href=&quot;https://discord.com/invite/j6rPtzxaNW&quot;&gt;PiStorm Discord channel&amp;nbsp;&lt;/a&gt;&lt;/p&gt;&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://blog.stef.be/comments/28334&quot;&gt;Leave a comment&lt;/a&gt;</description>
    <comments>http://blog.stef.be/comments/28334</comments>
    <author>blog@stef.be (Steffest)</author>
</item>
<item>
    <title>Thuis</title>
    <pubDate>Wed, 2 Mar 2022 20:59:52 +0100</pubDate>
    <link>http://blog.stef.be/thuis</link>
    <guid isPermaLink="true">http://blog.stef.be/thuis</guid>
    <description>&lt;p&gt;&lt;a href=&quot;https://www.stef.be/blog/5/portal.jpg&quot;&gt;&lt;img style=&quot;max-width: 100%;&quot; src=&quot;https://www.stef.be/blog/5/portal.jpg&quot; border=&quot;0&quot; alt=&quot;Portal&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div&gt;I&lt;span&gt;Ik voel mij precies niet meer thuis in deze wereld.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;NL&quot;&gt;Aan de ene kant heb je de tirannieke dictator.&lt;br /&gt;&lt;/span&gt;Op papier leidt hij een democratie, maar hij weet wel beter.&lt;br /&gt;Hij is een narcist die niet maalt over &quot;de waarheid&quot;, die de media manipuleert en uit is om zelf aan de macht te blijven.&lt;br /&gt;Of misschien vooral nog om zijn persoonlijke rijkdom uit te bouwen.&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;Hij overtuigt zijn land om - met hulp van de bondgenoten - andere landen binnen te vallen als hij denkt dat dat winst gaat opleveren, uiteraard allemaal met een goed verhaal.&lt;br /&gt;Er is immers een bepaalde &quot;dreiging&quot; die moet worden afgewend.&lt;br /&gt;De waarden en normen zijn in gevaar en moeten worden verdedigd.&lt;br /&gt;Niet altijd is dat binnenvallen fysiek: de belofte van financi&amp;euml;le en militaire steun werkt soms evengoed.&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;NL&quot;&gt;---&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;NL&quot;&gt;Aan de andere kant heb je de populist. Hij opereert in een democratie, maar hij speelt het spel beter dan wie ook.&lt;br /&gt;&lt;/span&gt;Hij is een narcist die niet maalt over &quot;de waarheid&quot;, die de media manipuleert en uit is om zelf aan de macht te blijven.&lt;br /&gt;Of misschien vooral nog om zijn persoonlijke rijkdom uit te bouwen.&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;Hij overtuigt zijn land om - met hulp van de bondgenoten - andere landen binnen te vallen als hij denkt dat dat winst gaat opleveren, uiteraard allemaal met een goed verhaal.&lt;br /&gt;Er is immers een bepaalde &quot;dreiging&quot; die moet worden afgewend.&lt;br /&gt;De waarden en normen zijn in gevaar en moeten worden verdedigd.&lt;br /&gt;Niet altijd is dat binnenvallen fysiek: de belofte van financi&amp;euml;le en militaire steun werkt soms evengoed.&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;NL&quot;&gt;---&lt;/span&gt;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;NL&quot;&gt;En ertussen zit het plebs. Niet denigrerend bedoeld want ook ik hoor erbij.&lt;br /&gt;&lt;/span&gt;Het plebs kiest partij, roept hoe slecht die andere wel niet is en trekt ten strijde.&lt;br /&gt;Digitaal uiteraard, op social media met vlaggetjes en slogans, met steunbetuigingen aan de goeden, met aanvallen op de slechten.&lt;br /&gt;Ze worden aangespoord en vooruit gestuwd, gevoed door welgemikte beelden, video&amp;rsquo;s, verhalen en grapjes.&lt;br /&gt;Maar pas op voor die verhalen van de andere kant, want die zijn niet echt, dat is propaganda en niet te vertrouwen.&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;NL&quot;&gt;En de nuance, de rede, de menselijkheid? Sorry, daar is geen plaats voor.&lt;br /&gt;&lt;/span&gt;Je bent voor of tegen, wit of zwart.&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;NL&quot;&gt;Ik voel mij precies niet meer thuis in deze wereld.&lt;br /&gt;&lt;/span&gt;Waar zit toch die poort naar dat parallelle universum, waar misschien w&amp;egrave;l iedereen naar het midden vloeit, in plaats van naar de buitenkant.&lt;br /&gt;Waar onvermijdelijke verschillen en conflicten worden bekeken als interessante nieuwe invalshoeken in plaats van als dreiging.&lt;br /&gt;Waar misschien elke man of vrouw juist dat is: mens tussen andere mensen.&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;Ondertussen zet ik beter &quot;het nieuws&quot; af, en focus mij op mijn kleine wereld waar ik wel invloed op heb. Op de mensen die ik graag zie, en zij mij.&lt;br /&gt;Ik weet dat het een bubbel is, maar het is een bubbel waar ik mij gelukkig wel thuis voel.&lt;/p&gt;
&lt;p class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;NL&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://blog.stef.be/comments/28331&quot;&gt;Leave a comment&lt;/a&gt;</description>
    <comments>http://blog.stef.be/comments/28331</comments>
    <author>blog@stef.be (Steffest)</author>
</item>
<atom:link href="http://blog.stef.be/rss/" rel="self" type="application/rss+xml" /></channel>
</rss>
