tag:blogger.com,1999:blog-83990675118268589442024-03-13T22:35:49.991+01:00Slamy's Electronics LabYour average computer science nerd on his journey to develop software and hardware for fun!Slamyhttp://www.blogger.com/profile/06199660583857443750noreply@blogger.comBlogger54125tag:blogger.com,1999:blog-8399067511826858944.post-35815658612718234112023-09-05T21:41:00.001+02:002023-09-05T21:41:57.392+02:00Xilinx ISE 14.7 - USB Programmer in 2023<p>
Don't even bother trying to compile the drivers coming with ISE. It won't work
and is a waste of time.
</p>
<p>
<a href="https://rmdir.de/~michael/xilinx/">This guy</a> has provided a
solution with an open source driver which is still usable in 2023.</p><p>Prerequisites:<br /><span style="font-family: monospace;"><br /></span><span style="font-family: monospace;">sudo apt-get install fxload</span></p><p>Assuming you have your Xilinx installation in /opt/Xilinx<span style="font-family: monospace;">:</span></p><p><span style="font-family: monospace;">cd /opt/Xilinx</span><br /><span style="font-family: monospace;">git clone
git://git.zerfleddert.de/usb-driver<br />cd usb-driver<br />make<br />./setup_pcusb
/opt/Xilinx/14.7/ISE_DS/ISE/
</span>
</p>
<p>After replugging the USB adapter, the kernel log should indicate the firmware loading process. </p><p><span style="font-family: monospace;"><span style="background-color: white; color: #18b218;">[13491.418666] </span><span style="background-color: white; color: #b26818;">usb 1-3: </span><span style="background-color: white; color: black;">new high-speed USB device number 10 using xhci_hcd
</span><br /><span style="background-color: white; color: #18b218;">[13491.652881] </span><span style="background-color: white; color: #b26818;">usb 1-3: </span><span style="background-color: white; color: black;">New USB device found, idVendor=03fd, idProduct=000d, bcdDevice= 0.00
</span><br /><span style="background-color: white; color: #18b218;">[13491.652886] </span><span style="background-color: white; color: #b26818;">usb 1-3: </span><span style="background-color: white; color: black;">New USB device strings: Mfr=0, Product=0, SerialNumber=0
</span><br /><span style="background-color: white; color: #18b218;">[13492.045004] </span><span style="background-color: white; color: #b26818;">usb 1-3: </span><span style="background-color: white; color: black;">USB disconnect, device number 10
</span><br /><span style="background-color: white; color: #18b218;">[13493.898621] </span><span style="background-color: white; color: #b26818;">usb 1-3: </span><span style="background-color: white; color: black;">new full-speed USB device number 11 using xhci_hcd
</span><br /><span style="background-color: white; color: #18b218;">[13494.197962] </span><span style="background-color: white; color: #b26818;">usb 1-3: </span><span style="background-color: white; color: black;">not running at top speed; connect to a high speed hub
</span><br /><span style="background-color: white; color: #18b218;">[13494.212981] </span><span style="background-color: white; color: #b26818;">usb 1-3: </span><span style="background-color: white; color: black;">New USB device found, idVendor=03fd, idProduct=0008, bcdDevice= 0.00
</span><br /><span style="background-color: white; color: #18b218;">[13494.212984] </span><span style="background-color: white; color: #b26818;">usb 1-3: </span><span style="background-color: white; color: black;">New USB device strings: Mfr=1, Product=2, SerialNumber=0
</span><br /><span style="background-color: white; color: #18b218;">[13494.212985] </span><span style="background-color: white; color: #b26818;">usb 1-3: </span><span style="background-color: white; color: black;">Product: XILINX </span><br /> </span><br /></p><p>And then when you want to start impact, a custom libusb must be provided:</p>
<p>
<span style="font-family: monospace;">
LD_PRELOAD=/opt/Xilinx/usb-driver/libusb-driver.so impact</span></p><p><span style="font-family: arial;">I had great success with an old xc3s50an </span>
</p>
Slamyhttp://www.blogger.com/profile/06199660583857443750noreply@blogger.com0tag:blogger.com,1999:blog-8399067511826858944.post-30191465721825540832023-02-19T18:05:00.002+01:002023-02-19T18:15:44.459+01:00STM32-USBFloppyTracer - Successor to the SlamySTM32Floppy<h2 style="text-align: left;">The Learning of Rust <br /></h2>
<p>
During the last months I was rather busy with another project. On 21.08.2022
I've decided to finally start learning Rust, as I wanted to learn more about
the powers it possesses. As a professional C++ developer I've noticed certain
flaws of the way C handles concurrency. It doesn't matter if it is a Linux
daemon with threads or an embedded project with interrupts. Concurrency can
lead to stochastic bugs difficult to pin down. Rust doesn't have this issue as
the compiler itself makes use of formal verification to ensure that no data
structures are shared globally without mutual exclusive protection.
</p>
<p>
<span class="spellvar dspellvar">
<span class="v dv lmr-0">tl;dr</span> Rust is very safe.</span>
</p>
<p>
I<span class="spellvar dspellvar">
wanted to learn that language and needed a project to do so.</span>
</p>
<h2 style="text-align: left;">
<span class="spellvar dspellvar">The Project <br /></span>
</h2>
<p>
<span class="spellvar dspellvar">My
<a href="http://slamyslab.blogspot.com/2016/04/slamy-stm32-floppy-controller-part-1.html">SlamySTM32Floppy</a>
project was now finished for a long time. But I wasn't happy anymore with
its state. The code is messy and copy protected images were never fully
verified after being written. Also new projects have entered the game by
now. There is the
<a href="https://github.com/keirf/greaseweazle">Greaseweazle</a> and also
the <a href="https://www.kryoflux.com/">KryoFlux</a>. If it wasn't for my
desire to cleanup my old project and my love for old technology I would have
just bought a Greaseweazle. It is open source and prebuilt hardware is not
very expensive.</span>
</p>
<p>
<span class="spellvar dspellvar">As I had the old hardware lying around I decided to just go with it and
start the firmware and the host tools from scratch. Also my solution never
had any housing. A fine remainder:</span>
</p>
<p></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRLFrdmKbAUjRDMAQb38NEB_UALOikKgfJwT6teH4aZ1dDBnsREUVF9xOq0llAgd5db2oJ-eykPgoAR-xZh04R8YGtlcWOZ5EzpLVd5iXuJEelDVKDRLyrj2hq5DpwE46jgLqP9-b28c0pJOtpoRHqRqGk8NBSJxXR_06K0tiKaQNrBFky38OzzeHI/s3264/IMG_20160419_210252.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2448" data-original-width="3264" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRLFrdmKbAUjRDMAQb38NEB_UALOikKgfJwT6teH4aZ1dDBnsREUVF9xOq0llAgd5db2oJ-eykPgoAR-xZh04R8YGtlcWOZ5EzpLVd5iXuJEelDVKDRLyrj2hq5DpwE46jgLqP9-b28c0pJOtpoRHqRqGk8NBSJxXR_06K0tiKaQNrBFky38OzzeHI/w640-h480/IMG_20160419_210252.jpg" width="640" /></a>
</div>
<br /><span class="spellvar dspellvar">This was the state during 2016 and it was still like this in my closet by
now. That was about to change.</span>
<p></p>
<h3 style="text-align: left;">
<span class="spellvar dspellvar">The goal</span>
</h3>
<ul style="text-align: left;">
<li>
<span class="spellvar dspellvar" style="font-weight: normal;">Yet another USB floppy flux thing project because there wasn't one
before. lol.</span>
</li>
<li>
<span class="spellvar dspellvar" style="font-weight: normal;">Writing of copy protected images as correct as possible</span>
</li>
<ul>
<li>
<span class="spellvar dspellvar" style="font-weight: normal;">Make use of write precompensation this time </span>
</li>
</ul>
<li>
<span class="spellvar dspellvar" style="font-weight: normal;">Verification of all written data to the level of a single flux
reversal</span>
</li>
<li>
<span class="spellvar dspellvar" style="font-weight: normal;">Writing of images as fast as possible. No rotation of the disk shall be
wasted.</span><span class="spellvar dspellvar" style="font-weight: normal;"> </span>
</li>
<li>
<span class="spellvar dspellvar" style="font-weight: normal;">Have some integration tests to check for regressions during
development</span>
</li>
<ul>
<li>
<span class="spellvar dspellvar" style="font-weight: normal;">Adding features can break previous accomplishments easily</span>
</li>
</ul>
<li>
<span class="spellvar dspellvar" style="font-weight: normal;">Have a proper documentation about its usage</span>
</li>
<li>
<span class="spellvar dspellvar" style="font-weight: normal;">Utilize DMA this time for better performance</span>
</li>
<li>
<span class="spellvar dspellvar" style="font-weight: normal;">USB communication is not stalled during flux operations<br /></span>
</li>
</ul>
<h2 style="text-align: left;">
<span class="spellvar dspellvar">A different approach to write flux data<br /></span>
</h2>
<p>
<span class="spellvar dspellvar">The way the </span><span class="spellvar dspellvar">Greaseweazle approaches its task is vastly superior to my old technique.
The SlamySTM32Floppy used code in its firmware for very specific tasks. GCR
and MFM are handled by different functions. DMA was not used to write and
collect pulses. Verification of written data was performed by parsing known
track formats. There was a verify function for Amiga sectors and for ISO
sectors. The code is
<a href="https://github.com/Slamy/SlamySTM32Floppy">open source and can be used to learn from my old mistakes</a>.</span>
</p>
<p>
<span class="spellvar dspellvar">The </span><span class="spellvar dspellvar">Greaseweazle on the other hand has a very basic firmware with only one task
to solve: The correct writing of raw fluxes and reading of those. This keeps
the firmware simple as all intelligence is on the host side. This however
means that more data needs to be transferred between STM32 and PC. But I've
decided to go with this approach as well as it seems to be very
flexible.</span>
</p>
<h2 style="text-align: left;">
<span class="spellvar dspellvar">A different approach to verify written flux data</span>
</h2>
<p>
<span class="spellvar dspellvar">However I was not happy with the way, the </span><span class="spellvar dspellvar">Greaseweazle verifies the written tracks. A whole track is read back to the
PC and then cross correlation is performed to check the equality of any
possible flux stream. I like this idea but I wanted to do the verification
on the firmware itself. My goal here is different. As before, this project
is targeted to be optimized for writing speed, so this simply won't do.
Instead I needed an algorithm for cross correlation which is performed on
the device while the just written track is read back from disk. </span>
</p>
<p>
<span class="spellvar dspellvar">The idea of the Greaseweazle with cross correlation was good, but it needed
to be scaled down. By the time of writing I went with reading the first 200
flux pulses after the index signal and cross correlating them against the
first 20 pulses of the groundtruth data. As soon as both match up both flux
streams are considered in sync and are compared until no groundtruth data is
left to compare against.</span>
</p>
<p>
<span class="spellvar dspellvar">200 flux pulses might sound like a lot, but it had to be as this floppy
writer is capable of working without the index pulse to support flipped
5.25" disks. The larger amount of data allows more room for fluctuation in
the rotation of the disk.</span>
</p>
<h2 style="text-align: left;">
<span class="spellvar dspellvar">Usage of write precompensation</span>
</h2>
<p>
<span class="spellvar dspellvar">Early on, I've never thought about write precompensation but it really
improves the quality of the written data. For more information, I've written
a
<a href="https://github.com/Slamy/STM32-USBFloppyTracer/blob/main/doc/write_precompensation.md">markdown file about this topic in the github repo</a>. This must be performed for every drive and can be essential for games
like the Amiga version of Turrican II.<br /></span>
</p>
<h2 style="text-align: left;">
<span class="spellvar dspellvar">A smaller board</span>
</h2>
<p>
<span class="spellvar dspellvar">Originally this project was started using the
<a href="https://www.st.com/en/evaluation-tools/stm32f4discovery.html">STM32F4DISCOVERY</a>. This eval board still performs well today but it's size makes it
difficult to fit into a case. I've decided use a smaller one this time: A
board without microphone, a headphone amplifier, an acceleration sensor and
an integrated stlink.</span>
</p>
<p>
<span class="spellvar dspellvar">The
<a href="https://stm32-base.org/boards/STM32F407VGT6-diymore.html">Diymore STM32F4</a>
seemed to be the right choice. It is exactly the same microcontroller - the
STM32F407 - but reduced to the essentials. All this project needs, is I/O
and a USB port.</span>
</p>
<p>
<span class="spellvar dspellvar">In the end, I've wasted space nonetheless as the</span>
used perfboard could've been smaller.
</p>
<p>But still look for yourself:<br /></p>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;">
<tbody>
<tr>
<td style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAdt5BB6LsFRBt5Ir8UT9lXrtilowT5uvrnrfBXdvCxkHCIP3iQP8EVPgzWcvfAAB8NHbQFlqIOSk5seBgwXmF7_n0ROD0_8sl3qbHFzqCiMmf6b2DDFyombIY5qLqBAYU7QgIckxbCoJWQYgIUnCMrQ8wNCZi8w2jUH6U4ac_-EnRGtuMPmoxv0P5/s4128/20230121_151544.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="3096" data-original-width="4128" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAdt5BB6LsFRBt5Ir8UT9lXrtilowT5uvrnrfBXdvCxkHCIP3iQP8EVPgzWcvfAAB8NHbQFlqIOSk5seBgwXmF7_n0ROD0_8sl3qbHFzqCiMmf6b2DDFyombIY5qLqBAYU7QgIckxbCoJWQYgIUnCMrQ8wNCZi8w2jUH6U4ac_-EnRGtuMPmoxv0P5/w640-h480/20230121_151544.jpg" width="640" /></a>
</td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">
A much smaller board with only the relevant components<br />
</td>
</tr>
</tbody>
</table>
<p></p>
<div style="text-align: left;">
<h2 style="text-align: left;">
<span class="spellvar dspellvar">A case made from wood to properly store the electronics</span><span class="spellvar dspellvar"> </span>
</h2>
<div style="text-align: left;">
<span class="spellvar dspellvar" style="font-weight: normal;">This time I wanted to have a small case to store everything. It is much
easier for transportation that way and the especially naked 5.25" drive is
protected.</span>
</div>
<div style="text-align: left;">
<span class="spellvar dspellvar">At first I thought about 3D printing (thx to Chris for support) but
wasn't satisfied with the result. It seems that 3D printed models are
difficult to rework in case the designed 3D model was not thoughtfully
planned to the end. (Yes, cables take up space. Especially thick cables
like the one used for floppy drives...)</span>
</div>
<div style="text-align: left;">
<span class="spellvar dspellvar">So I've decided to go for wood instead. It makes reproduction for others
more difficult but in the end it would be possible to make a 3D model from
it as soon as I was satisfied with how the case was built. A wooden model
can be reworked very easily.<br /></span>
</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;">
<tbody>
<tr>
<td style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvmusFnLfnGULplq3ir_P21ZCdbZomV-UOf_ckRQ1JpPplTHeoD_3wtnUx9fVUUn9yO9buaUrHPLgDU6GxuWryylLoaIjoTRS-otemdi7N4bNbET8WY0htNeNh55f6IudTA2Mq3Ad51K0fuVSvQqvvJRA3BClrBlElKyuX0USahOKotwDj8SQBZrMI/s4128/20230127_215034.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="4128" data-original-width="3096" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvmusFnLfnGULplq3ir_P21ZCdbZomV-UOf_ckRQ1JpPplTHeoD_3wtnUx9fVUUn9yO9buaUrHPLgDU6GxuWryylLoaIjoTRS-otemdi7N4bNbET8WY0htNeNh55f6IudTA2Mq3Ad51K0fuVSvQqvvJRA3BClrBlElKyuX0USahOKotwDj8SQBZrMI/w480-h640/20230127_215034.jpg" width="480" /></a>
</td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">
Early state of the case viewed from the top. Some rails added for the
drives to sit on<br />
</td>
</tr>
</tbody>
</table>
<div class="separator" style="clear: both; text-align: center;"></div>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;">
<tbody>
<tr>
<td style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTV5kFM8xViFexbhtpRCOXIgZBHq-JFbMBjjNoTNW5HFpUWsTqR1tLuQEgKQBmYf6osQwalyX7FcjE3YOTjJxHNaMk9dR_HS2yiWhmLyyeGuB9ZEMvzW9k9Rcw_96XlujpXxcVDBSbQ-riAN_mji7E8_LXeKS8O8GfzS6QG9MMwr0ybH7Mm-vEB7ig/s4128/20230127_215043.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="3096" data-original-width="4128" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTV5kFM8xViFexbhtpRCOXIgZBHq-JFbMBjjNoTNW5HFpUWsTqR1tLuQEgKQBmYf6osQwalyX7FcjE3YOTjJxHNaMk9dR_HS2yiWhmLyyeGuB9ZEMvzW9k9Rcw_96XlujpXxcVDBSbQ-riAN_mji7E8_LXeKS8O8GfzS6QG9MMwr0ybH7Mm-vEB7ig/w640-h480/20230127_215043.jpg" width="640" /></a>
</td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">
Viewed from the front<br />
</td>
</tr>
</tbody>
</table>
<div class="separator" style="clear: both; text-align: center;"></div>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;">
<tbody>
<tr>
<td style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9QKDnSvSdu1FnaYZ-Rr4XFOBrJmS_ZfnifFVzOhizr3a8GprbJpwFTdjed7uw49se6o3FS0p_tS9G7j1zN3qt0hMmWMLOncWCjOkQwmkppT_BLunN7bRbsQyPUK64IJM0_7LTweOo8besVhpbsAPcK22ewDyRV5v6LH7Ry7jH2Lio_UxnXtQTlHMh/s4128/20230127_215104.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="3096" data-original-width="4128" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9QKDnSvSdu1FnaYZ-Rr4XFOBrJmS_ZfnifFVzOhizr3a8GprbJpwFTdjed7uw49se6o3FS0p_tS9G7j1zN3qt0hMmWMLOncWCjOkQwmkppT_BLunN7bRbsQyPUK64IJM0_7LTweOo8besVhpbsAPcK22ewDyRV5v6LH7Ry7jH2Lio_UxnXtQTlHMh/w640-h480/20230127_215104.jpg" width="640" /></a>
</td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">
And the back.<br />
</td>
</tr>
</tbody>
</table>
<div class="separator" style="clear: both; text-align: center;"></div>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;">
<tbody>
<tr>
<td style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPlQtcgWJmNIzJKm2nE8EepfYu05XFgZKzjmTCA_ori0_NglEmuxq3nmOHwQsyYQteehpOFYM2DK2BV9tnoTBV4VY9PDlsiSwClszo2mSAbX8GWFH0FsaffGFe6i6RXC9VdaHsP-7QARum2Tg8C0ulonGEmYH2RTvJKmPjnNyAm_3LLTZpSOi0WaYb/s4128/20230128_124855.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="3096" data-original-width="4128" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPlQtcgWJmNIzJKm2nE8EepfYu05XFgZKzjmTCA_ori0_NglEmuxq3nmOHwQsyYQteehpOFYM2DK2BV9tnoTBV4VY9PDlsiSwClszo2mSAbX8GWFH0FsaffGFe6i6RXC9VdaHsP-7QARum2Tg8C0ulonGEmYH2RTvJKmPjnNyAm_3LLTZpSOi0WaYb/w640-h480/20230128_124855.jpg" width="640" /></a>
</td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">
Small piece of wood to keep the PicoPSU in place<br />
</td>
</tr>
</tbody>
</table>
<div class="separator" style="clear: both; text-align: center;"></div>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;">
<tbody>
<tr>
<td style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEji143_WaSPS-WHsh0gmMLq--g6KWoVo37u_JujxTEIsKHh7AOOYaPzDT9ZtvbAFctaXwfTU0cWmv1E1gYv6GyUmNb7meOFZ2LxFJ9RkqT8nkyWF9gGY18dO9Y9fUlqlTOgPMlNJ3FM7trSHLNkDUwbNAXqk6_v66QB4wTTyq4_E4llIbLhzES1h8iR/s4128/20230129_135754.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="4128" data-original-width="3096" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEji143_WaSPS-WHsh0gmMLq--g6KWoVo37u_JujxTEIsKHh7AOOYaPzDT9ZtvbAFctaXwfTU0cWmv1E1gYv6GyUmNb7meOFZ2LxFJ9RkqT8nkyWF9gGY18dO9Y9fUlqlTOgPMlNJ3FM7trSHLNkDUwbNAXqk6_v66QB4wTTyq4_E4llIbLhzES1h8iR/w480-h640/20230129_135754.jpg" width="480" /></a>
</td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">
Connected the PicoPSU to the small piece of wood<br />
</td>
</tr>
</tbody>
</table>
<div class="separator" style="clear: both; text-align: center;"></div>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;">
<tbody>
<tr>
<td style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTOOj_a_dNitcPydj6TOuo09Fl4WLRwCHZ5M49O9Y-O-2j3TTihYPXpUD3wrPFWnipMJFFFAauj8ZoFtU71V-FYUE74pTf9X0dAoz7cTIN6d2uN54--JYkkAD8TcAmVbtlE6uXO6jHY_ODyhMYCWj-GSCwuUdvkiV1yXJ2DAEsDPAMuZ2B4t3Leof4/s4128/20230129_140325.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="4128" data-original-width="3096" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTOOj_a_dNitcPydj6TOuo09Fl4WLRwCHZ5M49O9Y-O-2j3TTihYPXpUD3wrPFWnipMJFFFAauj8ZoFtU71V-FYUE74pTf9X0dAoz7cTIN6d2uN54--JYkkAD8TcAmVbtlE6uXO6jHY_ODyhMYCWj-GSCwuUdvkiV1yXJ2DAEsDPAMuZ2B4t3Leof4/w480-h640/20230129_140325.jpg" width="480" /></a>
</td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">
The case and the top piece<br />
</td>
</tr>
</tbody>
</table>
<div class="separator" style="clear: both; text-align: center;"></div>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;">
<tbody>
<tr>
<td style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQlOJENVUSMDhPlcE0PQWGIpYr-nz1ctem7XKZ54T1jI2p2Fm-ywfhxPebJaJgljIrBs1WNjdWz_IAKq6x7o46lWS5clrwNTMB1FnbtwczQ7TUcVwmH3cXUDwz7sRITeisD2V6wJM3ezijplAvE_yiUOVgG0cGi-e9Ev5k-ggQB2zyC_mkurd1WGaA/s4128/20230129_140355.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="3096" data-original-width="4128" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQlOJENVUSMDhPlcE0PQWGIpYr-nz1ctem7XKZ54T1jI2p2Fm-ywfhxPebJaJgljIrBs1WNjdWz_IAKq6x7o46lWS5clrwNTMB1FnbtwczQ7TUcVwmH3cXUDwz7sRITeisD2V6wJM3ezijplAvE_yiUOVgG0cGi-e9Ev5k-ggQB2zyC_mkurd1WGaA/w640-h480/20230129_140355.jpg" width="640" /></a>
</td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">
The whole case fitted together. A view inside.<br />
</td>
</tr>
</tbody>
</table>
<div class="separator" style="clear: both; text-align: center;"></div>
</div>
<br />
<div style="text-align: left;">
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;">
<tbody>
<tr>
<td style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZyIOZjfiKdOo5YfsD_Xr_r152yjvoyjSFw2P5iQ2HfnSApp7w8DeAU-_uV1fJZ5Ii7UznKfn8Au2xgJxBjXT78LFWRBBf8pVxkBUvJN-gYJ_tSnGnubFXqHgzQfr6lk80MoqFTfp9LLj5nVQ_9Nhbmr5bvmgNJD8iMyL7ElJkI_sOZGpjuuu1MHz3/s4128/20230201_183335.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="4128" data-original-width="3096" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZyIOZjfiKdOo5YfsD_Xr_r152yjvoyjSFw2P5iQ2HfnSApp7w8DeAU-_uV1fJZ5Ii7UznKfn8Au2xgJxBjXT78LFWRBBf8pVxkBUvJN-gYJ_tSnGnubFXqHgzQfr6lk80MoqFTfp9LLj5nVQ_9Nhbmr5bvmgNJD8iMyL7ElJkI_sOZGpjuuu1MHz3/w480-h640/20230201_183335.jpg" width="480" /></a>
</td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">
A 3.5" drive and the Diymore board<br />
</td>
</tr>
</tbody>
</table>
<div class="separator" style="clear: both; text-align: center;"></div>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;">
<tbody>
<tr>
<td style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9kpPjQBwZ67YQ4p9eURVdR5a5pgqv_8Kr_UAS8lHUrDUrHN9gB9n667NVgbI-dwswc5QQpoTKuHZJA8LsrTQ550yMt_Yss9qhEs8ZvuX-ocz3QX1-liKe5OxqL-wZ4qxmJq-XR4Cvv8YKMbtGOxIU-hg3QyCukz1C8L83c8QFyvsclZEa4NRqSHL5/s4128/20230201_183830.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="4128" data-original-width="3096" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9kpPjQBwZ67YQ4p9eURVdR5a5pgqv_8Kr_UAS8lHUrDUrHN9gB9n667NVgbI-dwswc5QQpoTKuHZJA8LsrTQ550yMt_Yss9qhEs8ZvuX-ocz3QX1-liKe5OxqL-wZ4qxmJq-XR4Cvv8YKMbtGOxIU-hg3QyCukz1C8L83c8QFyvsclZEa4NRqSHL5/w480-h640/20230201_183830.jpg" width="480" /></a>
</td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">
The PicoPSU added<br />
</td>
</tr>
</tbody>
</table>
<div class="separator" style="clear: both; text-align: center;"></div>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;">
<tbody>
<tr>
<td style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPi8FEAuPs6Us9FrUAm00KgP090cUl-BYl4KcdiY4GFigsDCawK6aZlW-mJPRbLKk-Tz1Qw-UOOvmOLyhj8_Xc1O7jNvxyLtUmYoRP4_Ze8zbJJZQPlStO0fsT-ATy-SMflDCB6A6CspQRt5E4K20UowPgfaOqDE-MQ8jTBiZKU5eNN04Jz_l5poeP/s4128/20230201_184629.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="4128" data-original-width="3096" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPi8FEAuPs6Us9FrUAm00KgP090cUl-BYl4KcdiY4GFigsDCawK6aZlW-mJPRbLKk-Tz1Qw-UOOvmOLyhj8_Xc1O7jNvxyLtUmYoRP4_Ze8zbJJZQPlStO0fsT-ATy-SMflDCB6A6CspQRt5E4K20UowPgfaOqDE-MQ8jTBiZKU5eNN04Jz_l5poeP/w480-h640/20230201_184629.jpg" width="480" /></a>
</td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">
The floppy cable added.<br />
</td>
</tr>
</tbody>
</table>
<div class="separator" style="clear: both; text-align: center;"></div>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;">
<tbody>
<tr>
<td style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyYqZlQhsAugyQ7p1hr5URwAoc0PS-CjDKyuIRqzXNeClrhtT_JASX8F6J_blLXpZJDmjVOwiARV-WjNMPRLuV7K77MECTZ_5cos0I7GOGFLZTPDAKoXubxJTRQuV7Pzdi_6F_7rRjGxfXXo0qAuAL9hZSWi0O0aRFyzpg5GxqAqos0EWC5kCNWDjY/s4128/20230129_140610.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="3096" data-original-width="4128" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyYqZlQhsAugyQ7p1hr5URwAoc0PS-CjDKyuIRqzXNeClrhtT_JASX8F6J_blLXpZJDmjVOwiARV-WjNMPRLuV7K77MECTZ_5cos0I7GOGFLZTPDAKoXubxJTRQuV7Pzdi_6F_7rRjGxfXXo0qAuAL9hZSWi0O0aRFyzpg5GxqAqos0EWC5kCNWDjY/w640-h480/20230129_140610.jpg" width="640" /></a>
</td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">
The finished product.<br />
</td>
</tr>
</tbody>
</table>
<div style="text-align: left;"></div>
</div>
<h2 style="text-align: left;">
<span class="spellvar dspellvar">The Result</span>
</h2>
<div style="text-align: left;">
<span class="spellvar dspellvar">The project goal was achieved. I did learn a lot about the Rust programming
language through practical usage and learning from problems during
development. I've learned about development of linux system software as well
as embedded development using that language.</span>
</div>
<div style="text-align: left;">
<span class="spellvar dspellvar"> </span>
</div>
<div style="text-align: left;">
<span class="spellvar dspellvar">In the end, the resulting device is very similar to the old
SlamySTM32Floppy but surely more advanced. Especially the verification of
every written track, even copy protected ones, makes the resulting disk more
trustworthy.</span>
</div>
<div style="text-align: left;">
<span class="spellvar dspellvar"> </span>
</div>
<div style="text-align: left;">
<span class="spellvar dspellvar">The knowledge about more sophisticated things like write precompensation
was also expanded. </span>
</div>
<p>
<a href="https://github.com/Slamy/STM32-USBFloppyTracer">This project is open source from the start and can be inspected on
github.</a>
</p>
<p>I've also decided to maintain a <a href="https://github.com/Slamy/STM32-USBFloppyTracer/blob/main/doc/compatibility_list.md">list of correctly written images</a> so compatibility is properly documented.</p><p><br /></p>
<p>
<span class="spellvar dspellvar"><br /></span>
</p>
Slamyhttp://www.blogger.com/profile/06199660583857443750noreply@blogger.com0tag:blogger.com,1999:blog-8399067511826858944.post-65555440100928238902022-12-20T17:53:00.008+01:002022-12-20T17:56:57.332+01:00MiSTer FPGA Direct Video - HDMI to VGA adapters<p>This is a message to the MiSTer FPGA users out there living in Germany that are trying to find a working HDMI to VGA adapter for the Direct Video mode. <br /></p><p> </p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhPI2A8IeLYrRPXPYGZmpM3m7yxgjwK2l98dz-uHR4yDAyrOZVzgH2h2efuwXX6PwLWoNaXcZRXnG-O66L3sL0nMGbb2-QulUbvj5aJBgb0quyXQh-f7-I9UfEACsFeUXjl5BZGCm2qblETlK2j3qO4fuhASrRqieU2-BM9goPQPTJ1Inxffc9S_sT/s4128/20221220_171223.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="4128" data-original-width="3096" height="507" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhPI2A8IeLYrRPXPYGZmpM3m7yxgjwK2l98dz-uHR4yDAyrOZVzgH2h2efuwXX6PwLWoNaXcZRXnG-O66L3sL0nMGbb2-QulUbvj5aJBgb0quyXQh-f7-I9UfEACsFeUXjl5BZGCm2qblETlK2j3qO4fuhASrRqieU2-BM9goPQPTJ1Inxffc9S_sT/w380-h507/20221220_171223.jpg" width="380" /></a></div> <p></p><p>It seems there is not a lot information about compatible devices to find. I would like to share that I got these two today (for science) from the local MediaMarkt. I can confirm that both are working with my MiSTer and my 1084 monitor.</p><p>You can also buy them online:</p><p><a href="https://www.mediamarkt.de/de/product/_hama-hdmi%E2%84%A2-stecker-auf-vga-buchse-2708216.html"><span class="blob-code-inner blob-code-marker js-code-nav-pass" data-code-marker="+">https://www.mediamarkt.de/de/product/_hama-hdmi%E2%84%A2-stecker-auf-vga-buchse-2708216.html</span></a></p><p><span class="blob-code-inner blob-code-marker js-code-nav-pass" data-code-marker="+"><a href="https://www.mediamarkt.de/de/product/_isy-iad-1007-hdmi-adapter-2737565.html">https://www.mediamarkt.de/de/product/_isy-iad-1007-hdmi-adapter-2737565.html</a> </span></p><p><span class="blob-code-inner blob-code-marker js-code-nav-pass" data-code-marker="+"> </span></p><p>Cheers</p>Slamyhttp://www.blogger.com/profile/06199660583857443750noreply@blogger.com0tag:blogger.com,1999:blog-8399067511826858944.post-10144156008907339642021-09-19T00:20:00.001+02:002021-09-19T00:20:40.421+02:00Playing Snailiad on Debian Linux in 2021<p>Flash is dead. It's still a bummer that Adobe hasn't just released the source code for public maintenance.<br />There are still some flash games around which should be preserved for future generations. <a href="https://www.blogger.com/#">Snailiad</a> is one of them.<br /><br />I've joined the official discord server of Snailiad to check for the currently accepted way of playing it. It turns out that newer versions of Flash are playing Snailiad at a wrong speed and the recommended way is using Flash 11.3 for it.<br /><br />The old Flash binaries can be grabbed on archive.org.<br />Disclaimer: Download this program at your own risk. It's an old preserved linux binary and I can't assure its authenticity!<br />Please check the md5sum before installing: 11b83aafdd4de9b64590b2ed43c6cb08<br /><a href="https://www.blogger.com/#">https://archive.org/download/standaloneflashplayers/fp/fp_11/11.2.202.644/</a><br /><br />As this is a 32 bit application, some libs need to be installed in their 32 bit version.<br /><span style="font-family: courier;">sudo apt-get install libxt6:i386 libgtk2.0-0:i386 libasound2-plugins:i386</span><br /> Then you should be fine with:<br /><span style="font-family: courier;">./flashplayer Snailiad.swf</span><br />Happy Snailing around!<br /> </p>Slamyhttp://www.blogger.com/profile/06199660583857443750noreply@blogger.com1tag:blogger.com,1999:blog-8399067511826858944.post-11720187669934944912021-03-16T17:50:00.001+01:002021-03-16T17:50:56.148+01:00100% disk usage on SSD and system freezes on Windows 10<p>I'm no ordinary Windows user. I boot the system, I play some Doom Eternal, play some VR and then I'm rebooting to Linux.<br />When I bought my current PC last year in March I haven't noticed it really but everytime I install something, my computer freezed. Not even Discord is reacting on keystrokes. It's weird and only occured under Windows.</p><p>At the moment I'm booting Windows more often as I'm playing around with development for VR and my headset is not supported on Linux. (Not a lot are anyway...)</p><p>And it keeped getting onto my nerves so I investigated with procexp64.exe and the task manager. The disk usage of my system was pretty much always at 100% during the freezes. But why is the I/O that high If no actual data is requested?<br /></p><p><b>TL;DR</b></p><p>Then I finally found the solution <a href="https://www.dell.com/support/kbdoc/de-de/000125194/windows-10-task-manager-berichte-100-festplattennutzung-mit-aktiviertem-msi-modus">here</a>. It turned out that the Microsoft driver StorAHCI.sys has an issue with some SATA controllers if <a href="https://en.wikipedia.org/wiki/Message_Signaled_Interrupts">MSI</a> is enabled. It can be disabled with regedit.</p><p>If you suffer from the same issue, maybe the provided link will also help you. I'm writing these lines to increase the odds that the next stranger will find this faster than me.</p><p><br /><b></b></p>Slamyhttp://www.blogger.com/profile/06199660583857443750noreply@blogger.com0tag:blogger.com,1999:blog-8399067511826858944.post-14524458534708442802021-01-28T19:05:00.006+01:002021-02-14T10:45:38.345+01:00How to play Half Life: Alyx with an HP Reverb G2 and an RTX 2070 Super - My story<h2 style="text-align: left;">Why all this?<br /></h2><p style="text-align: left;">It feels kinda awkward to write this. I mean... duh... you just buy an VR Headset, buy the game and play it. It runs on Windows so how difficult can it be?</p><p style="text-align: left;">I had no idea and this is my story. <br /></p><p style="text-align: left;">Until 2020 I didn't had lots of experience with VR. Back when the Oculus Rift DK2 was available I borrowed it from a friend and played some Minecrift (The spelling is correct) with it. It was a mod to make the Java Edition usable with this particular VR headset. It was the early age when Motion controlls were not availabe. It was a horrible experience. I felt sick after it and the view inside was like looking through a screen door as the pixels had some distance in between. I also played a Half Life 2 mod but it looked worse than Minecraft as all textures were washed out. The resolution of the headset was just not high enough.</p><p style="text-align: left;">Then it went quiet for me concerning VR. Someday a friend showed me his PSVR for his PS4. I didn't like it as well. The resolution was again not high enough. The games were boring and uninspired. At least that's what I thought at that time.</p><p style="text-align: left;">In August 2020 I've visited a friend during a vacation and he showed me his Oculus Quest. The time has passed and so did the technology. Motion Controls are now the norm and more creative games were available. For the first time I've played Beat Saber and I loved it. We also played "Keep talking and nobody explodes" together and as we both are quite Retro when it comes to gaming, he also showed me the VirtualBoy emulator VirtualBoyGo. It was a nice experience and I wanted more. His brother owned the Valve Index and was so kind to let me compare it to the Quest. I could play Beat Saber as well. At the time I was overwhelmed so I didn't noticed much resolution difference. Everthing was new: Inside Out Tracking? Lighthouses? Knuckles with Fingertracking? Guardians?</p><p style="text-align: left;">At that day I knew that I wanted this as well. VR has matured into a state I believed I could now have fun with. And so it started.<br /></p><h2 style="text-align: left;">What Headset to get?</h2><p style="text-align: left;">During the time I've made the decision to get into VR, there were quite some options for headsets to buy. I wanted to go for PC VR as I just bought a new PC and wanted to have the best graphics for my VR experience. Also I really wanted to play Half Life: Alyx which was already known as one of the first AAA VR games. So it was either the Valve Index, or the just announced HP Reverb G2, which was advertised as having a higher resolution and therefore being less prone to the - so called - screen door effect. Some YouTubers already got hold of some early samples and made in-lense videos to show the resolution differences between Oculus Rift S, Valve Index and the HP Reverb G2. I was hooked onto the G2, even so this meant that I had to wait some weeks until I can get my hands on one of them. But that was ok. No need to rush. I've already missed like 4 years of VR and some weeks wouldn't hurt.</p><h2 style="text-align: left;">Waiting times for the Headset to arrive...<br /></h2><p style="text-align: left;">November came, no G2.... issues with the shipment.</p><p style="text-align: left;">December came, no G2.... a little bit of frustration.</p><p style="text-align: left;">On the 21.12.2020, just before Christmas, the package arrived. So by accident I've just made myself a present for the holiday season. Luckily, one day after that I even got my lenses from <a href="https://vroptician.com/#">VROptiker</a>. I was ready!</p><p style="text-align: left;">I even started Windows after half a year as it was booted to play Doom Eternal when it came out.<br />Yes, I'm a Linux user.... <br /></p><p style="text-align: left;">So, I plugged it in and after some Windows updates and installation routines of the Windows Mixed Reality portal I got this:<br /></p><p style="text-align: left;"></p><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: left;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzJ0u_BInBH3UAdURstWewWplBJObuiVQWFIF31xXfIq3daXnDFmnQJtlmOO45KfAhoU0HJRexSyCjFPRAQuNMaSoAbUmjaG84exYhu_6PBMtXm3lauQ2hJ5b6rCAg3hh43Q3zEqHALy8/" style="margin-left: auto; margin-right: auto;"><img alt="" data-original-height="695" data-original-width="1259" height="301" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzJ0u_BInBH3UAdURstWewWplBJObuiVQWFIF31xXfIq3daXnDFmnQJtlmOO45KfAhoU0HJRexSyCjFPRAQuNMaSoAbUmjaG84exYhu_6PBMtXm3lauQ2hJ5b6rCAg3hh43Q3zEqHALy8/w546-h301/Unbenannt.PNG" width="546" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Error Code 7-14, indicating an USB 3.0 issue<br /></td></tr></tbody></table><p style="text-align: left;"></p><p style="text-align: left;"><br />Huh. Whats, this? Omg. Please don't tell me that the Headset is broken. That would be awful.<br /><br />I searched about this 7-14 error code on the internet and it turned out that a lot of people have this issue. It was related to bad USB 3.0 ports on AM4 socket AMD boards. With my B450 I'm also into the party. What could I do? Would my VR experience end here? Just days before christmas?<br /><br />At that time I've stumbled onto quite some websites. I've found the german website <a href="https://vr-legion.de/hardware/hp-reverb-g2-troubleshooting-tipps-und-tricks-bei-problemen/">vr-legion, which gave some tips and tricks about this issue.</a> I gave it a shot and bought the USB 3.0 <a href="https://amzn.to/36V3aiq">Vivanco USB Hub 36663</a> at a local electronics store. It was Corona time but I was lucky that I could order online and grab it at the store.<br /><br />Back home I was full of hope. I've connected the USB hub and there we go. The headset worked and I was standing at the Cliffhouse of Windows Mixed Reality. I even was able to play some Beat Saber.<br /><br />But something was off. The tracking stuttered and sometimes the Audio was gone and came back. I could hear from my monitor that the USB plug-in and plug-out sounds were played. Sometimes the view in my headset stopped and locked me in place, even so I was moving in reality. Sometimes the view rotated 180° and I could see like I had eyes on my back. It was an awful experience.<br /><br />I've then ordered the <a href="https://amzn.to/2KEHyhA">vr-legion suggested USB 3.0 PCIe card from Inateck</a>. But it had the same issue as the Hub. A friend and neighbor was so kind and bought a second hand Inateck card one day before christmas so I won't be so sad about it. It was an older Inateck card which I couldn't find online any more. But it had the same issues. Both Inateck cards had in common that they used the Fresco chipsets for USB3.0 implementation. They don't seem to be so realiable for VR.<br /><br />Was the headset really broken then? I've searched online and found the german Youtuber <a href="https://youtu.be/g32EhxqDepE">Zitronenarzt VR</a> wo had similar issues as well. After Christmas was over, I didn't really knew what to do. My neighbor suggested to get a PCIe USB 3.0 card from CSL which is supposed to use an NEC chipset. This chipset was one of the two which were also suggested by Zitronenarzt. I got it again second hand from a former Oculus Rift player, a headset which shares these USB issues as well. And? It worked! The audio dropouts were gone and also the full tracking losses were a thing of the past.</p><p style="text-align: left;">One note though. It has a Renesas chipset. Not NEC. But it works as well. </p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQcC39yihHe51CcdR57ECdykS6uqZ0OLZBxBq8YFL_GyW9ukHDI_HamWRX6t8-NnjHYYQKNVVoUGdh3N_R0Gv1orNJpViIng78iBSanbuKUGQWZdBxBdnEhBi7SodPihOel6RK_XVFhKE/s2048/20210111_185808.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1152" data-original-width="2048" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQcC39yihHe51CcdR57ECdykS6uqZ0OLZBxBq8YFL_GyW9ukHDI_HamWRX6t8-NnjHYYQKNVVoUGdh3N_R0Gv1orNJpViIng78iBSanbuKUGQWZdBxBdnEhBi7SodPihOel6RK_XVFhKE/w640-h360/20210111_185808.jpg" title="CSL PCIe USB 3.0 Card with a Renesas Chipset, which was more reliable" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">CSL PCIe USB 3.0 Card with a Renesas Chipset, which was more reliable</td></tr></tbody></table><p style="text-align: left;"></p><div style="text-align: center;"></div><h2 style="text-align: left;">Tracking Stutter issues, glitches in the flashlight<span style="font-weight: normal;"><br /></span></h2><div style="text-align: left;">So what to do now? Playing some Beat Saber was the best option. And also buying and downloading Half Life: Alyx. During that time, a christmas steam sale was still active and I also went for Superhot VR and Moss, so I had some VR titles to play.<br /><br />Beat Saber worked quite well. Quite some fast paced action. I've played the Campaign to get into it. Parallel to that I've also started to play Half Life: Alyx (now shortened to HL:A) as I really loved Half Life 2 and thought this must be the best experience to get with current VR technology.<br /><br />The game itself worked kinda sorta. But something was still off. I could see it in the Cliff house. I could see it in the Menu of Beat Saber. And I could see it in HL:A all the time while standing still. My head tracking had stutter issues. It was very subtle but it was always there. It was almost like the tracking was one frame behind my real movement. It's difficult to describe.<br /><br />I've searched online about this but couldn't find answers. I've contacted the HP customer support but they weren't able to reproduce the issue. At that time I've also experienced that the image shown by my flashlights (Microsoft's name for looking through the headsets inside-out tracking cameras) had some pixel issues now and then. I really thought that this was the culprit of the stutter and told the support that. But they never answered this one question.<br /><br />At that time I've thought that the situation improves when pressing the headset against my head. But boy, was I wrong. That only reduced the symptoms.<br /><h3>Windows 20H2</h3></div><div style="text-align: left;">As you might know by now, I'm a full blooded linux user. I only boot Windows when I really need it. My current Windows 10 was build 1909. I always wondered why the settings menu of the Mixed Reality portal looked different on pictures I've found online. I also didn't knew that an update to 20H2 must be manually activated. Previously I just grabbed the normal updates and thought this was enough. And so I updated to 20H2.<br /><br />Did it fix the issue? I don't know anymore. Maybe it did and you should update as well.<br /><h3 style="text-align: left;">The Nvidia driver 446.14</h3></div><div style="text-align: left;">I don't know how I got this information in the first place, but I've notived an ongoing discussion about Nvidia drivers and VR compatiblity. It was on various forums, reddit and also the offical <a href="https://www.nvidia.com/en-us/geforce/forums/game-ready-drivers/13/402768/valve-index-missing-dropped-frames-since-nvidia-d/">support forum of Nvidia</a>. With a certain Nvidia driver, frame drops seem to occur more likely in VR.<br /><br />As a user of a RTX 2070 I was still able to downgrade. And so I did and it improved my experience. The Beat Saber menu no longer stuttered and also standing still I seem to have no issues any more.<br /><br />I've played a few days and enjoyed HL:A while still being contact with the HP support.<br /><h2 style="text-align: left;">Half Life: Alyx - Chapter 5: Northern Star<span style="font-weight: normal;"> <br /></span></h2>The first chapters were a blast to play. I liked the concept to have an option on how I would like to move in the game. As a VR newcomer I went for the "blink teleport": I point somewhere and by letting go the left stick, I teleport to that location. It was the same concept which is also used in the Mixed Reality Cliffhouse and SteamVR home as it reduces motion sickness. Everything was fine until chapter 5 of the game and then it went down again.<br /><br /><a href="https://youtu.be/aTXyQnFfG2I">Everytime I used the teleport, the game dropped 8 frames. Extreme motion stutter was the result.</a> So I've contacted the Steam support about this issue. Sadly they couldn't help me as this issue seems to be unknown to them.<br /><h2 style="text-align: left;">The Nvidia hotfix driver 461.33<span style="font-weight: normal;"><br /></span></h2>At this time I gave up on HL:A for a moment and started to play Superhot VR. The game worked without any flaws (apart from the stuttery menu room) and again was blast to play.<br />I've also observed the <a href="https://www.nvidia.com/en-us/geforce/forums/game-ready-drivers/13/402768/valve-index-missing-dropped-frames-since-nvidia-d/">support forum of Nvidia</a> about the stutter issue and suddenly it happened: On 20.01.2021 a hotfix was released. It didn't really took off for me at first. Beat Saber started to stutter and also HL:A stuttered extremly. But the 8 frame drops were gone and replaced by exactly 1 which was then filtered out by the motion reprojection of Windows Mixed Reality.</div><div style="text-align: left;"><h2 style="text-align: left;">Tweaking Half Life: Alyx Launch Options<span style="font-weight: normal;"><br /></span></h2></div><div style="text-align: left;">I've experimented a bit and also searched further about performance issues with HL:A. One of the sources which helped me with this issue was this <a href="https://petrakeas.medium.com/half-life-alyx-performance-analysis-or-why-low-graphic-settings-produce-a-sharper-image-4d17fb8c19bb">website</a>. It helped me to understand the dynamic scaling system of HL:A which was very important for the next part of the fix. I can also recommed reading <a href="https://www.reddit.com/r/OculusQuest/comments/jgxdn5/half_life_alyx_wireless_configure_dynamic/">this article about the</a> differend fidelity levels and debug mode for better investigation.<p style="text-align: left;">With this knowledge I've applied these launch options:</p><p style="text-align: left;"><span style="font-family: courier;"><span class="hj cu">-console -vconsole -novid -nowindow +vr_perf_hud 1</span></span></p><p style="text-align: left;"><span style="font-family: courier;"><span class="hj cu"><span style="font-family: courier;"><span class="hj cu">-console -vconsole<span style="font-family: inherit;"> </span></span></span></span></span>allows to open the console by pressing ~ on an english keyboard layout. Might come in handy (It doesn't work with a germany keyboard layout)<br /></p><p style="text-align: left;"><span style="font-family: courier;"><span class="hj cu">-novid </span></span>removes the Valve intro. For faster testing of settings.</p><p style="text-align: left;"><span style="font-family: courier;"><span class="hj cu">-nowindow </span></span>removes the spectator mirror window and increases performance.</p><p style="text-align: left;"><span style="font-family: courier;"><span class="hj cu"><span style="font-family: courier;"><span class="hj cu">+vr_perf_hud 1 </span></span></span></span>activates a visualization of the dynamic scaling head room analysis. (say that 3 times fast)</p>You can read more about this visualization <a href="https://petrakeas.medium.com/half-life-alyx-performance-analysis-or-why-low-graphic-settings-produce-a-sharper-image-4d17fb8c19bb">here</a>. While doing so, I've noticed that my HL:A instance only has 4 levels of details to choose from while usually there should be 8. I was confused. But nontheless I've found a kinda sorta working solution.<br /><br />I've decreased the application specific super sampling to about 50% which is then multiplicated with 76% which is my automatic super sampling setting of SteamVR and there I had a kinda sorta working solution. But the game didn't really look that sharp anymore. So something was still wrong. In the game itself you are capable of configuring the visual quality: Low, Medium, High, Ultra. The settings didn't had any effect on my performance though. <h2 style="text-align: left;">The last Fix - Don't use Vulcan<span style="font-weight: normal;"><br /></span></h2>I've continued to play the game went for the later chapters. It didn't look really sharp but I still had my fun with it. And a few hours away from the end It kinda hit me.... Vulcan.... Direct X11.....<br /><br />I remembered that at the start I went for Vulcan instead of DX11, which is the default of HL:A. I switched again to DX11 and.... wow. The 4 levels of detail again turned into 8 and the game looked much sharper. I've continued to play the end of the game and really had a good time with my settings.<br /><br />I only felt a little bit sad, as it would have been better if I had known all this from the start. In the end I've resolved my issues and hopefully finally can enjoy my VR experiences.<h2 style="text-align: left;">TLDR or Conclusion<span style="font-weight: normal;"><span style="font-family: courier;"><span class="hj cu"><span style="font-family: courier;"><span class="hj cu"><span style="font-family: times;"><br /></span></span></span></span></span></span></h2><p style="text-align: left;"><span style="font-weight: normal;"><span style="font-family: courier;"><span class="hj cu"><span style="font-family: courier;"><span class="hj cu"><span style="font-family: times;">So you have performance issues with Half Life: Alyx? Try the following :<br /></span></span></span></span></span></span></p><ul style="text-align: left;"><li>Apply launch options <span style="font-weight: normal;"><span style="font-family: courier;"><span class="hj cu"><span style="font-family: courier;"><span class="hj cu"><span style="font-family: times;"><span style="font-family: courier;"><span class="hj cu">-console -vconsole -novid -nowindow</span></span></span></span></span></span></span></span></li><li>Reduce Application specific super sampling. Keep in mind that Half Life: Alyx is capable of a scaling factor bigger than 100% when possible. The Steam super sampling is only a reference for the game. It only defines the internal 100% as it seems.</li><li>Try Vulcan and DX11 and compare both performance wise.</li><li>Try the new hotfix driver from Nvidia with the version 461.33</li><li>Deactivate any GPU monitoring (exception is SteamVR performance graph)</li><li>Deactivate Stopsign VR, fpsVR or any Steam Overlay</li><li>Decrease Steam Overlay rendering quality to Low (if you really need overlays)</li><li>You won't see a difference and it performs better.</li><li>Optional: Deactivate Windows Mixed Reality Motion Reprojection for HL:A</li><li>Set from "Auto" to "Per Application"</li><li>Disable Motion Smoothing in Video settings for Application.</li><li>Launch the game with +vr_perf_hud 1 and observe the selected level of detail.</li><ul><li>Alter the application specific super sampling according to the headroom.</li></ul><li>Check the SteamVR performance graph</li><ul><li>Pink spikes must be avoided on all costs as they are frame drops and cause stutter.</li><li>Orange should not occur often. It's more ok if Motion Reprojection / Smoothing is enabled.</li></ul></ul>Something I can't confirm. But maybe it works for you: <br /><ul><li>Deactivate RGB tools. </li><li>Discord can be a problem (I don't see this)</li></ul><p> </p></div>Slamyhttp://www.blogger.com/profile/06199660583857443750noreply@blogger.com0tag:blogger.com,1999:blog-8399067511826858944.post-26438776362350656102020-09-20T14:53:00.001+02:002020-09-20T15:05:35.038+02:00The irrational dream of having CRT monitors in 2020
<p style="break-before: page; page-break-before: always;">
Backstory – In March 2020, Doom Eternal was released to the public.</p><p style="break-before: page; page-break-before: always;">So what does that have to do with CRT monitors? Let's find out.</p>
<h2 style="text-align: left;">Backstory<br /></h2><p>Back in 2017, I played <b>Doom 2016</b> and was hooked. It was a great
game and felt almost like some sort of UT2004 single player
experience because of the fast action and pacing.</p>
<p>When ID Software announced a followup, I was again hyped and
looking forward to the release.</p>
<p>During March, it was more and more apparent that my current setup
with a GTX 960 and an i5-2500K would not be able to handle the game.
The system in question used to be state of the art in 2012, and I
didn’t really need a new PC for a long time. All my previous
upgrades were triggered by game releases. In 2004, I upgraded to play
Half-Life 2. In 2012, I upgraded again to play Starcraft II. So you
can say, those games were system sellers for me.</p>
<p>In April 2020, I upgraded to a <b>Ryzen 7 3700X</b> and an <b>RTX 2070 Super</b> to
finally play more recent games. But what else do you need for a good
gaming experience? A high-quality gaming monitor, of course! The past
seven years, I used a 1200p Dell office monitor for gaming. The
picture quality for static images was good, the text readable. But
for dynamic images, this monitor had quite an awful amount of motion
blur.</p>
<p>I was never really an early adopter, and I only ever upgraded my
hardware when necessary. In the meantime, gaming monitors had
changed. 60 Hz is no longer state of the art, and the need for a
1200p resolution for more lines of text on the screen was no longer a
requirement as 1440p and 4K are now mature technologies and I would
just need to buy a larger monitor to get the same results.</p>
<p>I ended up buying the <b>ASUS TUF Gaming VG27AQ</b> on Amazon, as the
current COVID-19 epidemic didn’t allow me to buy electronics in
local stores. I was especially interested in the ELMB-Sync (Extreme
Low Motion Blur) feature, as I had hoped that backlight strobing
might finally result in a CRT-like experience on TFT monitors. You
know, no motion blur?</p>
<p><b>ELMB-Sync</b> is a specific feature you find only on ASUS monitors (by
the time of writing this). It is a Variable Refresh Rate technology
coupled with Backlight Strobing. Compared to G-Sync monitors, which
can only do either G-Sync or <b>ULMB</b> (Ultra Low Motion Blur), this was advertised as being a
step forward.</p>
<p>But it turned out that this monitor sucked at it. I had issues
with strobe cross talk for every refresh rate I could think of. I was
quite unhappy with the device, and returned it shortly after only 3
days of testing and usage.</p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiITYALOnaCQ8t8ooWkiaqmWWicAY9uHXAUFJQIafgZkBl96Q9Vvn08OgfQsIBlFkis_X3aet512bmezM4in0vf-JeqObGYt0oIwq2JKY8W1PC9Dgke4RbQMU5Xh5sRYrg72tB5zG9dOEY/s1993/strobeCrossTaslk.png" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1130" data-original-width="1993" height="362" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiITYALOnaCQ8t8ooWkiaqmWWicAY9uHXAUFJQIafgZkBl96Q9Vvn08OgfQsIBlFkis_X3aet512bmezM4in0vf-JeqObGYt0oIwq2JKY8W1PC9Dgke4RbQMU5Xh5sRYrg72tB5zG9dOEY/w640-h362/strobeCrossTaslk.png" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">A photo of the strobe cross talk test from www.testufo.com on the VG27AQ<br /></td></tr></tbody></table>
<p>As a “videophile”, it’s pretty difficult to buy display
devices. Most technologies have advantages and disadvantages to them,
and it seems to be impossible to find something which is the best of
all aspects. Even so, making the decision to buy the <b>VG27AQ</b> based on
reading various reviews seemed to be inadequate. A friend of mine
told me not to rely on rtings.com alone and suggested reading
articles on sites like tftcentral.co.uk as well. So, the search was
still on.</p>
<p>It was on May 16th 2020 when I decided to buy the “least
crappy monitor”, as a “best one” was not available, and ended
up with the <b>ASUS ROG Swift PG279QE</b>, which is still my monitor as of
writing this article. Compared to the <b>ELMB-Sync</b> of the <b>VG27AQ</b>, the <b>ULMB</b> of this
monitor was significantly better. The strobe cross talk was weaker,
but was still there. The biggest problem was the restriction of
refresh rates, as a lot of fantastic games were still limited to 60
Hz. Some examples are <b>Factorio</b> (released in 2020), <b>Freedom Planet</b>, <b>Carrion</b> (also released in 2020) and most
emulators for older systems. <b>ULMB</b> could be hacked to allow 60 Hz
backlight strobing, but it ended up hurting my eyes and I did not use
it.</p>
<p>But in the end, this monitor wasn’t that bad. This was my first
monitor with a variable refresh rate, and G-Sync worked fine with
Doom Eternal. I played the game and I was happy.</p><h2 style="text-align: left;">Food for Thought <br /></h2><p>But after murdering thousands of demons, I felt something was wrong. Is this really how
display technologies are supposed to work? Why can’t I scroll in
Age of Empires 2 and read the text at the same time? How does
everyone just accept this? Am I having mental issues which cause only
me to see this motion blur?!</p>
<p>In 2019 and the beginning of 2020, I was rather busy developing an
Amiga game which was to be released in March 2020. <b>Tiny Little Slug</b>
was finally up for sale after many grueling debugging sessions to fix
all the bugs that remained.</p><p>I still operate my <b>Amiga</b> on a <b>Commodore
1084</b> monitor even after all these years. It’s one of those 14" CRTs you just have to love because of
the excellent image quality, bright picture, strong contrast and lack
of motion blur. While the development was done using an emulator, the
final testing of the game was performed on a real machine. Through
that, I was exposed to the smooth picture on the CRT. The <b>Commodore
1084</b> outperformed all recent gaming monitors in terms of motion
clarity. <u>30 years, and TFTs are still playing catch-up</u>.</p>
<p>I tried to remember when and why we all swapped out our PC CRTs. I
still remember playing CS 1.6 with friends in my parents’ basement.
A LAN party with 6 adolescents. We all had CRTs, except for one
friend who used an early-generation TFT. During that time, I had to
ask my father every time I needed to move the monitor – it was
simply too heavy for me. We still played on LAN parties later, when
everyone had switched to TFTs. I also remember playing Half-Life 2 on
an early TFT. But what happened? Why did everyone switch from CRT to
TFT? Nearly all my memory on that topic is gone. Last I can remember
is that those early 1024x768 TFTs were kind of slick, cool, or maybe
“new”. It was the new “next thing”, and people liked the
“new” stuff?</p><p>I‘ve decided to ask other people for their opinion. Co-Workers, friends and family. “Those were quite heavy and the devices were too deep” was the
aggregated result about the death of picture tubes.
</p>
<p>I personally would never care about the weight or size of
something if there is no alternative in terms of quality. I also thought this would count for others as well. So what happened?</p>
<p>Were TFTs that much brighter? Were black levels in room-light
conditions that bad? Was convergence a real issue even with high quality monitors? Was the sharpness of the picture not that good?</p>
<p>It seems especially the last question really depends on the used
resolution.</p>
<p>I started to grow more into this topic and while I do own 2 Amiga
monitors which are display devices for PAL and NTSC 15 kHz video signals, I haven’t used a PC CRT for quite some time. At the end of
May this year I used eBay to gather some free CRT monitors for PC
usage. The first one, a <b>hp p930</b>, was rather dim and thus not very
helpful. Also the flat tube had linearity issues. The second one, a
<b>Siemens MCM 1706</b> (17”), was rather small but offered great brightness and a
sharp picture as long as the resolution was not higher than 800x600.
The tube could be also driven with up to 1600x1200@70Hz but the picture
quality suffered badly. And so I experimented.</p><p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjt28aZ3uPLCgyrmGcM-d8kNG15JLiUk4Pc2XeNWqHPw6NO7Bl0SOjSPcf-GW5NmSXtzf4ggjy8w9i9wCaM6OJxL9h1ulONHM5J5fsiE5XOQEp0cM6ATHUM-P3yK1A3NXKSQhn1aX1k3TE/s2048/20200522_215926.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img alt="3 monitors in a row. 2 TFTs and 1 CRT." border="0" data-original-height="1152" data-original-width="2048" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjt28aZ3uPLCgyrmGcM-d8kNG15JLiUk4Pc2XeNWqHPw6NO7Bl0SOjSPcf-GW5NmSXtzf4ggjy8w9i9wCaM6OJxL9h1ulONHM5J5fsiE5XOQEp0cM6ATHUM-P3yK1A3NXKSQhn1aX1k3TE/w640-h360/20200522_215926.jpg" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">A thing of sluggish beauty. Left to Right: Dell 2412M, Asus PG279QE and Siemens 1706 MCM<br /></td></tr></tbody></table> </p><p>When <b>Carrion</b> came out this year I was kinda fascinated that the
internal rendering resolution was 640x480 while the frame rate was
locked at 60 Hz. At the same time it was scrolling rather fast. This
made the game look awful on my very expensive <b>Asus PG279</b> but looked
like a blast with the native resolution on the free 17” Siemens CRT. I was quite happy during that period of time that I had a CRT to play this game.<br /></p><h2 style="text-align: left;">Games of the post-2003 era<br /></h2>
<p>Fast Scrolling Games...<br /></p>
<p>While looking for games which could suit a CRT I noticed that most
of the current games don’t scroll very fast. Recent 2D platformers
like <b>Hollow Knight</b> or <b>Bloodstained</b> do have a rather slow scrolling
pace. Almost like… they were optimized for
monitors that are known to have motion blur.</p>
<p>One could say games have changed. Developers have adapted from the
quirks a CRT had in the past (horizontal scanlines) to the quirks
the current technology has (motion blur).</p>
<h2 style="text-align: left;">The Future <br /></h2><p>Now, 17” is not big measured by current standards. And either
the focus unit or the shadow mask of my Siemens 1706 is not suited for higher
resolutions. But there were other monitors like the <b>Sony's GDM-FW900</b>.
</p><p>People seem to crave for this monitor. They want it back. High
prices are paid for them. But the issue is that these are old. You
don’t really know what to expect with probably aged tubes.</p>
<p>At this point I was wondering. Why is there no movement in
bringing CRT monitors back. Are the disadvantages of the past still
part of the present? How would the picture look like today?</p>
<p>I dream about a <u>27” G-Sync compatible CRT monitor</u> with high
resolution. But how high could the chance be to revive the machinery
to make them? How high would the demand be? How expensive would this
dream monitor be?</p>
<p>If I had more courage I would kickstart a new CRT monitor. But who
am I? Just an embedded software engineer without any manpower behind.
I could probably design the firmware, video processing algorithms,
OSD, deflection control and all that stuff that would belong to such
a device. But the rest?</p>
<p>Glass, Vacuum, Chemical stuff with Phosphors, Etching of Shadow
Masks and analog circuits. Combine that with the complex process of actually getting phosphor dots on the screen.<br /></p>
<p>It’s too complex for one person.<br /></p>
<h2 style="text-align: left;">
Conclusion</h2><p>
</p>
<p>Maybe this dream stays a dream. Maybe I currently have a weird
quirky phase. But the state of the art of displays make me angry.
Sample & Hold type of displays need to leave the gaming market
<u><i><b>now</b></i></u> and make place for something better suited for moving pictures.</p>
<p>TFTs still have their place. In offices to read text with great
font clarity. But for the rest?</p>
<p>OLED monitors are still not available and who knows when they
finally arrive and whether they will solve the problems.</p>
<p>Micro LED is a thing of the future and there is no first monitor in sight.</p><p>What are you thoughts? How do you like your games?</p><p><br /></p><p>Slamy</p>
<style type="text/css">
p { margin-bottom: 0.25cm; line-height: 115%; background: transparent }
a:link { color: #000080; so-language: zxx; text-decoration: underline }</style>Slamyhttp://www.blogger.com/profile/06199660583857443750noreply@blogger.com1tag:blogger.com,1999:blog-8399067511826858944.post-25528732602288256962019-11-27T20:21:00.001+01:002019-11-27T20:22:51.425+01:00Coroutine68k - Stackful coroutines for Bare Metal 68k Applications in C++Recently I've read through the enhancements the C++ fans get with C++20.<br />
I was especially interested in the concept of <a href="https://en.cppreference.com/w/cpp/language/coroutines" rel="nofollow">coroutines</a> as it is an approach for asynchronous programming and an alternative to state machines.
The latter always have the problem that they are unstructured and it sometimes is difficult to "see" the flow of the states.
On the other hand a synchronous algorithm as a structured program might be easier to understand.<br />
<br />
The GCC is still not ready for C++20 so stackless coroutines are currently only possible using the mechanism used by <a href="http://dunkels.com/adam/pt/">Protothreads</a>. But stackful coroutines on the other hand just need some context switching which can be implemented inside a library.<br />
<br />
As I'm currently on a 68k trip I wondered how easy it would be to create a similar thing for that processor. Last weekend I've made a small case study and published it as a small <a href="https://github.com/Slamy/coroutine68k">open project on github</a>. Enjoy.Slamyhttp://www.blogger.com/profile/06199660583857443750noreply@blogger.com0tag:blogger.com,1999:blog-8399067511826858944.post-55805796824277821762019-09-20T23:53:00.000+02:002019-09-20T23:53:58.613+02:00Connecting an Amiga Monitor to a modern Nvidia GTX 960<b>Disclaimer</b>:<br />
The methods described in this article can generate malicous video signals that are able to damage your CRT.<br />
Please apply anything written here with care and thought. I can't be held responsible for damages on your hardware.<br />
That said, if your monitor is showing strange rolling screens or makes noises that it has never made before, SHUT IT DOWN immeditatly.<br />
<br />
Well, let's start....<br />
<br />
How to use an RGB Monitor with ~15 kHz horizontal frequency on a modern graphics card?<br />
I don't know if this topic was already addressed at various sites and forums on the internet. Some <a href="http://www.arcadeinfo.de/showthread.php?15381-15-khz-unter-Linux-howto">MAME enthusiasts seem</a> to try to get this running. But with some random scripts from the internet I had no luck. So here is how I did it.<br />
<br />
First of all? Why?<br />
Simple! Native Amiga video modes on a PC for proper visuals with emulators!<br />
<br />
Of course this means that an unusual horizontal frequency is needed. While standard VGA modes rely onto ~31kHz, a lower frequency is not reachable with standard methods as such a modeline will most likely be not accepted by Xorg.<br />
<br />
Also of course you need of connecting your PC to your Amiga monitor.<br />
There do exist passive cables with VGA on one side and SCART on the other.<br />
As my GTX 960 doesn't offer a VGA port I've also used a DVI-I to VGA adapter without issues.<br />
<br />
<h2>
How to enable flexible clock rates</h2>
I assume that currently no xorg.conf file is used on your system.<br />
This is quite common in in the current Linux world as the modes are now auto configured.<br />
<br />
Open nvidia-settings.<br />
Click on "XServer Display Configuration"<br />
Click on "Save to X Configuration File" and save a folder you are allowed to.<br />
<br />
Edit the file and search for this line:<br />
<br />
HorizSync 30.0 - 83.0<br />
<br />
Replace 30.0 by 13.0 and save that file to /etc/X11/xorg.conf<br />
<br />
Restart Xorg and pray that it's still running.<br />
<br />
You are now able to set horizontal frequencies below any VGA standard.<br />
<br />
<h2>
Add some modes</h2>
As I live in a PAL country I'm used to PAL video modes on my Amiga system.<br />
There are 3 common video modes which were used.<br />
<br />
320 x 256 progressive, nearly square pixels, mostly used for games<br />
640 x 256 progressive, pixels with half width, mostly used on workbench<br />
640 x 512 interlaced, the perfect way to damage your eyes<br />
<br />
At least for games 320 x 256 is probably a nice resolution to work with.<br />
640 x 256 is supported by Xorg but I haven't found any program which is in harmony with that mode. It seems non square pixels are not common any more.<br />
<br />
Now onto some modelines you can add with xrandr:<br />
<br />
These modes have a similar timing to the Amiga ones on a 1084 monitor.<br />
You don't need to readjust the monitor to switch between your Linux system and your Amiga:<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">xrandr --newmode 320x256_50.08 7.09379 320 363 388 454 256 273 278 312 -hsync -vsync<br />xrandr --newmode 640x512_25.00i 14.18758 640 720 770 908 512 542 547 625 -hsync -vsync interlace</span><br />
If you like to have some overscan this can be used:<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">xrandr --newmode 768x576@25i 14.75 768 789 858 944 576 581 586 625 -hsync -vsync interlace</span><br />
<br />
<br />
For NTSC these can be used. I haven't tested them with an Amiga emulator though. Please keep in mind that these resolutions are not exactly the ones you find on an US Amiga model. Use them as a starting point.<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">xrandr --newmode 320x210_60.12 7.15909 320 363 388 458 210 225 230 260 -HSync -VSync<br />xrandr --newmode 640x210_60.12 14.31818 640 726 776 916 210 225 230 260 -HSync -VSync<br />xrandr --newmode 640x435_30.07i 14.31818 640 720 760 907 435 456 460 525 -hsync -vsync interlace</span><br />
<br />
Again some overscan:<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">xrandr --newmode 720x480@30i 13.5 720 736 799 858 480 486 492 525 -hsync -vsync interlace</span><br />
<br />
<br />
Now as the modes are created we need to add them:<br />
In my case I have do to this:<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">xrandr --addmode DVI-I-0 320x256_50.08</span><br />
<br />
And to switch to that mode:<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">xrandr --output DVI-I-0 --mode 320x256_50.08</span><br />
<br />
Your monitor should now show the upper left of your desktop.<br />
Use something like this to create an extended desktop to have a different view on your CRT.<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">xrandr --output DVI-I-0 --left-of HDMI-0 </span><br />
<br />
I've tested this configuration with fs-uae in full screen mode and the results seems to look like it was executed on a real Amiga which is some really cool shit.<br />
<br />
To avoid tearing in fs-uae you need to add <span style="font-family: "Courier New", Courier, monospace;">video_sync = 1</span> to your .fs-uae config file. Without it, a tear line is very slowly traveling down the screen. :-(<br />
<br />
<br />
<br />Slamyhttp://www.blogger.com/profile/06199660583857443750noreply@blogger.com0tag:blogger.com,1999:blog-8399067511826858944.post-79107085735752110912019-09-16T21:47:00.002+02:002019-09-16T21:48:33.638+02:00Custom git diff tool for TiledAs I'm currently developing Tiny Little Slug and I use tiled for the levels I had the frequent issue that I wanted to compare .tmx files over the history of the game. As .tmx files are rather difficult to parse with the human brain I thought it must be possible to get an automated image export from tiled. And I was lucky. Here is my approach:<br />
<br />
Create a text file with this content. I name it tileddiff.<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">#!/bin/bash<br /><br />tmxrasterizer "$1" /tmp/local.png || exit 1<br />tmxrasterizer "$2" /tmp/remote.png || exit 1<br />compare /tmp/local.png /tmp/remote.png /tmp/view.png<br />eog /tmp/view.png</span><br />
<br />
Save it at a preferred place and make it executable.<br />
Edit your ~/.gitconfig and add these lines at the end:<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">[difftool "tiled"]</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> cmd = /home/derp/bin/tileddiff "$LOCAL" "$REMOTE"</span><br />
<br />
Then use this call to let's say compare the current state to the last one.<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">git difftool -t tiled HEAD~1</span><br />
<br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-family: inherit;">You should see a nice visualization where all changed tiles are highlighted in red.</span> </span><br />
<br />
Possible Problems:<br />
Please keep in mind that this only compares .tmx files. If you have external dependencies like .png or .tsx files this approach will probably not work.<br />
Differences between .tsx files are easy to observe though.<br />
And comparing .png files is a different story. But the approach presented here will work for .png files as well ;-)<br />
<br />Slamyhttp://www.blogger.com/profile/06199660583857443750noreply@blogger.com0tag:blogger.com,1999:blog-8399067511826858944.post-47158050117906578672019-06-21T15:20:00.001+02:002019-06-27T20:25:47.993+02:00How to fix WLAN issues with Debian Linux and the Acer Aspire 5I've recently bought the Acer Aspire 5 A515-52G-53PU and experienced issues with the Wifi. This blog entry is for anyone with the same issues.<br />
<br />
After some days I've experienced that my system ignored touch input with a frequency of 1 second. sudo dmesg -c exposed this:<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">[ 374.733298] iwlwifi 0000:00:14.3: Microcode SW error detected. Restarting 0x0.<br />[ 374.733372] iwlwifi 0000:00:14.3: Start IWL Error Log Dump:<br />[ 374.733374] iwlwifi 0000:00:14.3: Status: 0x00000100, count: 6<br />[ 374.733375] iwlwifi 0000:00:14.3: Loaded firmware version: 38.755cfdd8.0<br />[ 374.733377] iwlwifi 0000:00:14.3: 0x00000071 | ADVANCED_SYSASSERT <br />[ 374.733378] iwlwifi 0000:00:14.3: 0x0080A210 | trm_hw_status0<br />[ 374.733380] iwlwifi 0000:00:14.3: 0x00000000 | trm_hw_status1<br />[ 374.733381] iwlwifi 0000:00:14.3: 0x00454EAA | branchlink2<br />[ 374.733382] iwlwifi 0000:00:14.3: 0x0045E8C2 | interruptlink1<br />[ 374.733383] iwlwifi 0000:00:14.3: 0x0045E8C2 | interruptlink2<br />[ 374.733384] iwlwifi 0000:00:14.3: 0x00000000 | data1<br />[ 374.733385] iwlwifi 0000:00:14.3: 0x00001000 | data2<br />[ 374.733386] iwlwifi 0000:00:14.3: 0xF0000008 | data3<br />[ 374.733387] iwlwifi 0000:00:14.3: 0xFFF4F839 | beacon time<br />[ 374.733388] iwlwifi 0000:00:14.3: 0x104CA603 | tsf low<br />[ 374.733389] iwlwifi 0000:00:14.3: 0x000001E9 | tsf hi<br />[ 374.733390] iwlwifi 0000:00:14.3: 0x00000000 | time gp1<br />[ 374.733391] iwlwifi 0000:00:14.3: 0x003CEEE8 | time gp2<br />[ 374.733393] iwlwifi 0000:00:14.3: 0x00000001 | uCode revision type<br />[ 374.733394] iwlwifi 0000:00:14.3: 0x00000026 | uCode version major<br />[ 374.733395] iwlwifi 0000:00:14.3: 0x755CFDD8 | uCode version minor<br />[ 374.733396] iwlwifi 0000:00:14.3: 0x00000312 | hw version<br />[ 374.733397] iwlwifi 0000:00:14.3: 0x18C89008 | board version<br />[ 374.733398] iwlwifi 0000:00:14.3: 0x0061019C | hcmd<br />[ 374.733399] iwlwifi 0000:00:14.3: 0x24022000 | isr0<br />[ 374.733400] iwlwifi 0000:00:14.3: 0x01800000 | isr1<br />[ 374.733401] iwlwifi 0000:00:14.3: 0x08001802 | isr2<br />[ 374.733402] iwlwifi 0000:00:14.3: 0x00417CC0 | isr3<br />[ 374.733403] iwlwifi 0000:00:14.3: 0x00000000 | isr4<br />[ 374.733404] iwlwifi 0000:00:14.3: 0x0061019C | last cmd Id<br />[ 374.733405] iwlwifi 0000:00:14.3: 0x00000000 | wait_event<br />[ 374.733406] iwlwifi 0000:00:14.3: 0x00000080 | l2p_control<br />[ 374.733407] iwlwifi 0000:00:14.3: 0x00010034 | l2p_duration<br />[ 374.733408] iwlwifi 0000:00:14.3: 0x0000003F | l2p_mhvalid<br />[ 374.733410] iwlwifi 0000:00:14.3: 0x000000CE | l2p_addr_match<br />[ 374.733411] iwlwifi 0000:00:14.3: 0x0000000D | lmpm_pmg_sel<br />[ 374.733412] iwlwifi 0000:00:14.3: 0x08081115 | timestamp<br />[ 374.733413] iwlwifi 0000:00:14.3: 0x0034D800 | flow_handler<br />[ 374.733447] iwlwifi 0000:00:14.3: Start IWL Error Log Dump:<br />[ 374.733448] iwlwifi 0000:00:14.3: Status: 0x00000100, count: 7<br />[ 374.733449] iwlwifi 0000:00:14.3: 0x00101208 | ADVANCED_SYSASSERT<br />[ 374.733450] iwlwifi 0000:00:14.3: 0x00000000 | umac branchlink1<br />[ 374.733452] iwlwifi 0000:00:14.3: 0xC0087C88 | umac branchlink2<br />[ 374.733453] iwlwifi 0000:00:14.3: 0xC008462C | umac interruptlink1<br />[ 374.733454] iwlwifi 0000:00:14.3: 0x00000000 | umac interruptlink2<br />[ 374.733455] iwlwifi 0000:00:14.3: 0x00000001 | umac data1<br />[ 374.733456] iwlwifi 0000:00:14.3: 0x000003FF | umac data2<br />[ 374.733457] iwlwifi 0000:00:14.3: 0xDEADBEEF | umac data3<br />[ 374.733458] iwlwifi 0000:00:14.3: 0x00000026 | umac major<br />[ 374.733459] iwlwifi 0000:00:14.3: 0x755CFDD8 | umac minor<br />[ 374.733460] iwlwifi 0000:00:14.3: 0xC08875AC | frame pointer<br />[ 374.733461] iwlwifi 0000:00:14.3: 0xC08875AC | stack pointer<br />[ 374.733462] iwlwifi 0000:00:14.3: 0x0061019C | last host cmd<br />[ 374.733463] iwlwifi 0000:00:14.3: 0x00000000 | isr status reg<br />[ 374.733466] ieee80211 phy2: Hardware restart was requested<br />[ 375.183415] iwlwifi 0000:00:14.3: BIOS contains WGDS but no WRDS</span><br />
<br />
First I tried updating the firmware driver for iwlwifi from the sid repository as I thought this would help. But sadly it didn't...<br />
<br />
According to <a href="https://forum.manjaro.org/t/sovled-iwlwifi-crashing-problem/82689/5">this post</a> I should try out some module options and this is what helped me:<br />
<br />
$ cat /etc/modprobe.d/iwlwifi.conf <br />
options iwlwifi 11n_disable=1<br />
<br />
According to inxi my card is this:<br />
<br />
Network: Device-1: Intel Cannon Point-LP CNVi [Wireless-AC] driver: iwlwifi v: kernel port: 5000 bus ID: 00:14.3 <br />
chip ID: 8086:9df0 <br />
IF: wlp0s20f3 state: up mac: <filter> <br />
<br />
Maybe this also means that 802.11n does not work anymore but this is ok for me as I don't use WLAN for bulk data transfer.<br />
<br />
<br />Slamyhttp://www.blogger.com/profile/06199660583857443750noreply@blogger.com0tag:blogger.com,1999:blog-8399067511826858944.post-52575870629776048052019-02-23T19:39:00.001+01:002019-02-23T19:39:22.612+01:00Fritz!Box Interne Anrufe mit PulswahlverfahrenDurch Zufall habe ich herausgefunden, dass es mit der Fritz!Box und einem Wählscheibentelefon doch möglich interne Anrufe ohne das Abschaltung der "spontanten Amtsholung" zu deaktivieren.<br />
Nimmt man den Hörer ab und hört den Ton des Amts und drückt dann kurz(!) auf den Auflegemechanismus sollte man danach nicht mehr das Amt hören, sondern stattdessen 3 Piep-Töne gefolgt von einer Pause.<br />
Dies ist das Signal der Fritz!Box, dass interne Anrufe ohne ** nun möglich sind.<br />
Möchte man wieder das Amt anrufen hält man den Auflegemechanismus einfach länger gedrückt.<br />
<br />
<br />
Also Hut ab für die Ingenieure bei AVM. Nicht nur, dass das Pulswahlverfahren noch unterstützt wird. Nein, selbst an so etwas wurde gedacht.<br />
Wahrscheinlich sitzt da auch noch ein Liebhaber von alten Telefonen. Anders kann ich mir das nicht vorstellen :-)Slamyhttp://www.blogger.com/profile/06199660583857443750noreply@blogger.com0tag:blogger.com,1999:blog-8399067511826858944.post-28061029583442492952019-02-23T19:34:00.000+01:002019-02-23T19:34:23.017+01:00Fritz!Box Internal Call with Pulse DialAfter some experimenting I've found out that it seems that the Fritz!Box has a non standard way of doing internal calls using pulse dial.<br />
After picking up the phone and hearing the signal that your phone is ready for dialing you just have to do a manual click on the switch-hook a very short time.<br />
Now the result should be 3 beeps, then a pause and then 3 beeps again.<br />
The Fritz!Box uses this to give the indication that internal dialing is ready.<br />
Now the dial without **.<br />
<br />Slamyhttp://www.blogger.com/profile/06199660583857443750noreply@blogger.com0tag:blogger.com,1999:blog-8399067511826858944.post-25146270265945464372019-02-23T19:20:00.000+01:002019-02-23T19:20:23.195+01:00Fritz!Box 6490 Cable Pulse Dialing / PulswahlverfahrenI wasn't able to find lots of information about the support of pulse dialing on the Fritz!Box 6490 Cable and just have experimented a little.<br />
I currently use FRITZ!OS: 07.01 and I can confirm that an old telephone with rotary dial is working just fine. <br />
<br />
Now on german....<br />
<br />
Ich wollte mir gerne ein altes Post-Telefon mit Wählscheibe zulegen. In der Anleitung der Fritz!Box verliert AVM leider kein Wort darüber, ob das Pulswahlverfahren unterstützt wird. Ich konnte jedoch gerade experimentell ermitteln, dass es tatsächlich noch funktioniert.<br />
Interne Anrufe sind allerdings problematisch, da diese normalerweise mit ** beginnen.<br />
Man kann jedoch in der Fritz!Box die "Spontane Amtsholung" deaktivieren. Nach abheben des Hörers ist man im internen Modus und kann interne Nummern ohne ** wählen, während für externe Nummern stets eine 0 vorgewählt werden muss.<br />
Ist die Frage was man möchte.... Mir ist leider keine Methode bekannt, wie man Stern und Raute-Taste per Pulswahl überträgt.<br />
Slamyhttp://www.blogger.com/profile/06199660583857443750noreply@blogger.com0tag:blogger.com,1999:blog-8399067511826858944.post-30836176554556290782018-11-10T21:03:00.002+01:002018-11-10T22:41:25.173+01:00Tiny Little Slug - Amiga Game in DevelopmentMy current project is an Amiga game of Metroidvania style.<br />
It's called "Tiny Little Slug" and it's about a leopard slug which wants to eat a strawberry. Sounds insane? Well of course!<br />
<br />
The whole game is developed in C++ (at least the current build is) and will have minimum system requirements of 512 kB of Chip mem and OCS chipset.<br />
So every Amiga 500 should be capable of running this game.<br />
Here is some footage: <br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/8Dbx9EPPR_w/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/8Dbx9EPPR_w?feature=player_embedded" width="320"></iframe><br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
My major inspiration is the game Snailiad by auriplane.<br />
But the concept of my game will be different as no weapons are available and the main character is not capable of jumping. The gameplay will be focused on getting around the enemies as opposed to killing them.<br />
<br />
<a href="https://www.dropbox.com/s/9t602h21w68rx6p/tlSlug-0.0.3-1-gfd030a0.zip?dl=1">The current release 0.0.3 can be downloaded here.</a><br />
The game is far from finished. Consider it as an early demo.<br />
<a href="https://www.dropbox.com/s/ajvwr6t96lnbcr0/CHANGELOG.md?dl=0">You can read the changelog here</a>.Slamyhttp://www.blogger.com/profile/06199660583857443750noreply@blogger.com5tag:blogger.com,1999:blog-8399067511826858944.post-10347192224561656422018-11-07T22:00:00.002+01:002018-11-07T22:00:50.707+01:00SlamySTM32Floppy now open sourceToday I've decided to make <a href="https://github.com/Slamy/SlamySTM32Floppy">SlamySTM32Floppy</a> open source.<br />
Click on the link to reach the github project.<br />
<br />
Please keep in mind that this is now quite old and wasn't maintained for 2 years.<br />
Some comments might be in german.<br />
<br />Slamyhttp://www.blogger.com/profile/06199660583857443750noreply@blogger.com0tag:blogger.com,1999:blog-8399067511826858944.post-81018438804511394422018-04-15T20:00:00.002+02:002018-04-15T20:00:32.586+02:00How to configure Cinelerra for YouTube UploadThanks to <span id="goog_2076371957"></span><span id="goog_2076371958"></span><a href="https://gist.github.com/mikoim/27e4e0dc64e384adbcb91ff10a2d3678">this guy here</a> I've finally figured out how to configure my Cinelerra setup to actually render YouTube friendly.<br />
<br />
Whenever you upload a video to YouTube and the server is not happy about your codec settings it mentions that you should use <a href="https://support.google.com/youtube/answer/1722171">these settings</a> for better quality of your upload. I assume that using the correct settings prohibits reencoding the video on the servers. For years now I didn't care but on my last uploads I got encoding problems and video artifacts and now wanted to have the correct configuration in my setup.<br />
<br />
The ffmpeg configuration suggested from mikoim is this one: <br />
<br />
ffmpeg -i input -c:v libx264 -preset slow -profile:v high -crf 18 -coder
1 -pix_fmt yuv420p -movflags +faststart -g 30 -bf 2 -c:a aac -b:a 384k
-profile:a aac_low output<br />
<br />
The current release of Cinelerra removed the possibility to enter a custom ffmpeg command line in favor of a rather confusing graphical interface which is easy to learn but difficult to master.<br />
<br />
<ol>
<li>Select FFMPEG as file format</li>
<li>Select mp4 as output</li>
<li>Activate Audio and open Audio Dialog</li>
<li>Select h264.mp4 as profile which means AAC by default.</li>
<li>Enter this in the Options field:<br /><br />profile=aac_low<br /></li>
<li>Enter 384000 into bitrate and -1 to quality.</li>
<li>Close Audio Dialog.</li>
<li>Activate Video and open Video Dialog</li>
<li>Select faststart_h264.mp4 as profile.</li>
<li>Set Bitrate to 0, Quality to -1 and Pixels to yuv420p</li>
<li>Enter this in the Options field:<br /><br />bf=2<br />coder=1<br />crf=18<br />profile=high<br />preset=slow<br />x264opts cabac=1:keyint=25<br /> </li>
<li>Close Video Dialog</li>
<li>Render! Yeah!</li>
</ol>
<br />
In case you want it more graphic here you go.<br />
My Cinelerra is set to german but it should look exactly the same.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzyZ1kIMpF9vqTiw181Q0e92Q06pOQptDTODx3cUR3iSD1v2ki_n3vT2_qKooBLmCh1wxX4vEy3toBj8PujvV_AcvUQYxjrWpevMXjwrRcQniL1hDyz0a8jBjQ0L1-D4lzsowuVUqKn0Y/s1600/Screenshot_20180415_195229.png" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="553" data-original-width="528" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzyZ1kIMpF9vqTiw181Q0e92Q06pOQptDTODx3cUR3iSD1v2ki_n3vT2_qKooBLmCh1wxX4vEy3toBj8PujvV_AcvUQYxjrWpevMXjwrRcQniL1hDyz0a8jBjQ0L1-D4lzsowuVUqKn0Y/s1600/Screenshot_20180415_195229.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Render Settings</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXbWPNRwih6LC3wLnb3qR55JQlAbVuRST3Z4YoVhfXMMQS4DySNmgBVqSzBbCqwqLiBu2nF7zAssVh5meZl8kuJsxpO8UKmwLUuw0VQypzt4PW5Aeocx_jcz4xlAr33OUjKCCUNzPa-UE/s1600/Screenshot_20180415_195222.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="493" data-original-width="468" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXbWPNRwih6LC3wLnb3qR55JQlAbVuRST3Z4YoVhfXMMQS4DySNmgBVqSzBbCqwqLiBu2nF7zAssVh5meZl8kuJsxpO8UKmwLUuw0VQypzt4PW5Aeocx_jcz4xlAr33OUjKCCUNzPa-UE/s1600/Screenshot_20180415_195222.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Audio Dialog</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkIHsqu4iAw8-MaTt2RATs4nRLrWm2JKiqZArQxbuTGmfZpNDQehGsbZLaCTiaudr-BYlZTjEoIGlp71pKpkRHiRNZQzPOa_1a6V1Tv7PpiTSmtZkKpGiVdc_fi82nsLnKMELm0Y9azaw/s1600/Screenshot_20180415_195234.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="493" data-original-width="468" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkIHsqu4iAw8-MaTt2RATs4nRLrWm2JKiqZArQxbuTGmfZpNDQehGsbZLaCTiaudr-BYlZTjEoIGlp71pKpkRHiRNZQzPOa_1a6V1Tv7PpiTSmtZkKpGiVdc_fi82nsLnKMELm0Y9azaw/s1600/Screenshot_20180415_195234.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Video Dialog</td></tr>
</tbody></table>
<br />Slamyhttp://www.blogger.com/profile/06199660583857443750noreply@blogger.com0tag:blogger.com,1999:blog-8399067511826858944.post-36466615458538192852018-03-25T17:58:00.000+02:002018-03-25T17:58:47.878+02:00Everdrive VRC6 Test ApplicationI've learned some NES development and decided to build a testing application to verify the resistor used with the NES sound mod.<br />
<br />
This is also my first open source project, yeah!<br />
<br />
The sound level was evaluated using the emulator nestopia as It seemed to have high hardware compatibility.<br />
Strangely enough I can't find a reliable source of the proper ratio between APU and VCR6 volumes. So all I can do is to rely on nestopia.<br />
FamiTracker for example has exactly the same volume for a maximum level pulse wave of both sound chips.<br />
<br />
<a href="https://github.com/Slamy/vrc6test">https://github.com/Slamy/vrc6test</a><br />
<br />
If everyone out there decides that I'm wrong with this program please don't hesitate and contact me.<br />
<br />
Slamyhttp://www.blogger.com/profile/06199660583857443750noreply@blogger.com0tag:blogger.com,1999:blog-8399067511826858944.post-13772705069059286952018-03-13T19:58:00.000+01:002018-03-13T19:58:15.742+01:00Everdrive VRC6 Fix UpdateThe VRC6 Mapper for the Everdrive N8 was updated to support more volumes.<br />
<a href="https://www.dropbox.com/s/075az5aig0ir51f/24VRC6ModV3.zip?dl=0">Download the new package here.</a><br />
<br />
As before the name of the RBF file show the volume. 24Mod_75_70.RBF has 75% of maximum volume on High Setting and 70% at Low Setting.<br />
Please keep in mind that the current version of the Everdrive have the Low Setting removed from the Options menu.<br />
So only the first number is relevant now.<br />
<br />
To install this mapper overwrite the 024.RBF file inside EDFC/MAPS with the file of choice.<br />
<br />
As always I can't guarantee for proper function and the files are given as is.<br />
I've tested a few of those RBF files but if they do damage your hardware it's your fault for modifying the Everdrive's firmware.Slamyhttp://www.blogger.com/profile/06199660583857443750noreply@blogger.com3tag:blogger.com,1999:blog-8399067511826858944.post-81079480550034732862017-10-29T17:21:00.001+01:002017-10-29T17:22:20.529+01:00Boku no Hero Academia - You Say Run! - ProTracker Cover<iframe allowfullscreen="" frameborder="0" height="270" src="https://www.youtube.com/embed/ySx_BML6Qy8" width="480"></iframe><br />
<br />
This doesn't really have anything to do with electronic tinkering or software development.<br />
But still I'm pround of this result and also want to share it here.Slamyhttp://www.blogger.com/profile/06199660583857443750noreply@blogger.com0tag:blogger.com,1999:blog-8399067511826858944.post-15104756358989313522017-10-27T21:16:00.001+02:002017-10-27T21:16:52.890+02:00picoPSU + Adapter + Thingiverse Case = Amiga Power SupplyAs I've already lost two 1200 units for unknown reasons (Well at least one of them) and because original Amiga power supplies seem to be crafted in Hell by Cacodemons I decided to get for an ATX PSU instead.<br />
<br />
People on the internet and on the DoReCo this year seem to replace it very often. So why not? All you need is 12V, 5V and -12V and you are done. Every usual PSU for PCs can deliver this at high currents.<br />
<br />
I'v stumbled across this <a href="http://www.ianstedman.co.uk/Amiga/amiga_hacks/Amiga_Power_supplies/amiga_power_supplies.html">website</a>. This guy analyzed various options for replacement and also delivers some hardware to support it.<br />
<br />
I've bought one picoPSU ATX adapter from him and ordered the picoPSU90 from Amazon.<br />
On Mr. Stedmans page there is also a suggestion for a <a href="https://www.thingiverse.com/thing:1794271">printable model of a shrunken down Amiga PSU</a> suited to contain the circuit.<br />
<br />
I don't own a 3D printer as I was in believe that I wouldn't need one ever.<br />
(It's also my opinion that something like this should be shared in a group as one person would probably print too seldom to justify the costs.)<br />
But I have a friend who has one and was able to print this thing overnight on an Ultimaker 2+.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6TBPJtGrB-Ki3p7UzGQuC6FHltBlHdQRrZ1xB35gLeox79XaBE7vNAWXKtYFpbeKuy_jXNX20CrxuXdPFD2uZBGf76NU-4QhJROXU9RUkzflF6EROvFVhNaPEQXvH0uAEj7_cQL4Xl74/s1600/IMG_20171027_200953.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6TBPJtGrB-Ki3p7UzGQuC6FHltBlHdQRrZ1xB35gLeox79XaBE7vNAWXKtYFpbeKuy_jXNX20CrxuXdPFD2uZBGf76NU-4QhJROXU9RUkzflF6EROvFVhNaPEQXvH0uAEj7_cQL4Xl74/s640/IMG_20171027_200953.jpg" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbSRJis6-wQKCNEHNDNy410ZqnntPJg2V8FQY9V222oiaQHdv5bJj4cFTp0Ua3twZyMiEdri0HN89Q7zobSrlHxfb4Ipo8fakVxo5tZF4c3nBVRdl4roCMJGQdST0u5I7blmFG8OVw4y8/s1600/IMG_20171027_201009.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbSRJis6-wQKCNEHNDNy410ZqnntPJg2V8FQY9V222oiaQHdv5bJj4cFTp0Ua3twZyMiEdri0HN89Q7zobSrlHxfb4Ipo8fakVxo5tZF4c3nBVRdl4roCMJGQdST0u5I7blmFG8OVw4y8/s640/IMG_20171027_201009.jpg" width="640" /></a></div>
<br />
The whole result is far from perfect and not as good as shown on Thingiverse. But the printer was set on 1.5x speed so maybe this is the reason why.<br />
I'm still happy as this is the first time I've ever 3D printed something.<br />
<br />
What is there still to say? I'll let the pictures talk. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1GisLrTfwqtZt_fpyFR5jzD7u8tS4Akn4YFOB5baWxaD8ok7L79VRHbKqrptbDrM0O6jwb3HNGL6jZwNT2oUsXBVPmMPcd139R3sWQ4ccAots6EY-dSEZalTLTy4ej_FQYHyZHERfO4Q/s1600/IMG_20171027_201024.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1GisLrTfwqtZt_fpyFR5jzD7u8tS4Akn4YFOB5baWxaD8ok7L79VRHbKqrptbDrM0O6jwb3HNGL6jZwNT2oUsXBVPmMPcd139R3sWQ4ccAots6EY-dSEZalTLTy4ej_FQYHyZHERfO4Q/s640/IMG_20171027_201024.jpg" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOKslMmv0v5zi2kJzQz_RaTXxdOxh0vfNRAtXXwt8bJ28aqzTl7AoZOqz7LvfwaPzRQuDU7x2rzcwZRDXLxOSXfr8smmw6jD2t9i8YLAIK8O5YYpb8Wa-0YSQQTQQ8nNp44lTt9UcXcxE/s1600/IMG_20171027_203824.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOKslMmv0v5zi2kJzQz_RaTXxdOxh0vfNRAtXXwt8bJ28aqzTl7AoZOqz7LvfwaPzRQuDU7x2rzcwZRDXLxOSXfr8smmw6jD2t9i8YLAIK8O5YYpb8Wa-0YSQQTQQ8nNp44lTt9UcXcxE/s640/IMG_20171027_203824.jpg" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKkCQ4AxE08awdPAo-MOag1HjgCGgtHyj_YERUJKOtEwm0MMdIW0p8NRAMvpGuLee_siC4T2lCQEcnAH1M45BaIqFmWan1MF6bBYhDi-vrlIKCq-5EglIKaGpmu7FeR3xL3aj4kLWQkjU/s1600/IMG_20171027_205119.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKkCQ4AxE08awdPAo-MOag1HjgCGgtHyj_YERUJKOtEwm0MMdIW0p8NRAMvpGuLee_siC4T2lCQEcnAH1M45BaIqFmWan1MF6bBYhDi-vrlIKCq-5EglIKaGpmu7FeR3xL3aj4kLWQkjU/s640/IMG_20171027_205119.jpg" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_w3yumX2JAK2VPpMFvAtvjJBeG8-i6oZEhlyNdYhiNg1Bw_16VNJiV4LLeNudEdScuFbPxH6qiqLbn5gowHJd3yowox8zyuiZSpe9i3BUYKqrbfzRzKojT_azsjALc9GgGkCEw78qa-A/s1600/IMG_20171027_205126.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_w3yumX2JAK2VPpMFvAtvjJBeG8-i6oZEhlyNdYhiNg1Bw_16VNJiV4LLeNudEdScuFbPxH6qiqLbn5gowHJd3yowox8zyuiZSpe9i3BUYKqrbfzRzKojT_azsjALc9GgGkCEw78qa-A/s640/IMG_20171027_205126.jpg" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzBul1eOCO6IS15D1pYWrC83yjqAVMGAe0Y1yC1zwb-Zh2ZqsmmoW1ziptvtVTSYUxCpDZLuNBVvfbnSlWAtfqwYH7ceF2QnIdlN0QCQN5yS6fQn43fI-C8jK_E0673BjSZrDrGRXwAFc/s1600/IMG_20171027_205132.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzBul1eOCO6IS15D1pYWrC83yjqAVMGAe0Y1yC1zwb-Zh2ZqsmmoW1ziptvtVTSYUxCpDZLuNBVvfbnSlWAtfqwYH7ceF2QnIdlN0QCQN5yS6fQn43fI-C8jK_E0673BjSZrDrGRXwAFc/s640/IMG_20171027_205132.jpg" width="640" /></a></div>
<br />
This beast is powered by an external 12V adapter giving 5A resulting in 60W.<br />
The picoPSU could do more but I didn't have a fitting adapter around. But 60W is still a lot, even for an Amiga.<br />
<br />
I've tested it and I was kinda confused. The voltage ramps of the power up seem to be different compared to the original PSU as the screen goes green and the audio gives a clicking sound after powering up. Shortly after that the screen goes black like it should when an A1200 is booting and after that the system is running.<br />
<br />
I hope this is just an unimportant side effect. I'm not an experienced analog guy.<br />
<br />
Apart from that this is a really nice and clean solution.<br />
<br />Slamyhttp://www.blogger.com/profile/06199660583857443750noreply@blogger.com2tag:blogger.com,1999:blog-8399067511826858944.post-81258030427982913682017-04-16T22:16:00.000+02:002017-04-16T22:19:20.710+02:00Super Turrican MSU 0.4 + Super Turrican Soundfix 0.1 releasedAs Super Turrican MSU 0.3 kinda lead to confusion for a few people and I've stumbled onto some other stuff I decided to release a new version.<br />
<br />
Changes for v0.4:<br />
<ul>
<li>Assumed to fix Soundglitch (Removed 16 bit writes to $2140, further tests needed)</li>
<li>Fix swapped music of stages 1-2 and 1-3</li>
<li>Replaced IPS by BPS and more cleaned up package</li>
<li>Moved volume boosted sd2snes version for revision F and older into subfolder.<br />As I no longer possess a revision F sd2snes active support for this revision is kinda sorta dropped as testing is not possible for me any more.</li>
</ul>
<a href="https://www.dropbox.com/s/7gcghessk2uze1c/SuperTurricanMSUv04.zip?dl=0">Download Super Turrican MSU 0.4 </a><br />
<br />
Also the Super Turrican Soundfix proposal needs further test data.<br />
The patch is now also available for the NTSC version of the game.<br />
<br />
<a href="https://www.dropbox.com/s/k41lfkiqcqbbq1t/SuperTurricanSoundfix1.zip?dl=0">Download Super Turrican Soundfix 0.1</a><br />
<br />
<b>Known bugs</b><br />
During my testing it kinda happened again once. So the sound fix sadly doesn't work. My guess is that this never will be fixed which is quite sad. If enough people provide testimony for this modification to not help at all, I will make a version 0.5 which removes this hack as it might lead to unwanted side effects.<br />
<br />
<br />
<b>Disclaimer:</b><br />
Please keep in mind that I'm growing more and more tired of testing this game with a full playthrough every time I update this. Especially now with 6 different ROM files resulting from both these hacks.<br />
This is why I cannot guarantee proper function.<br />
If this package deals damage to your hardware I'm not responsible for it.<br />
If you encounter any bugs or uncertainty please use this blog to contact me. <br />
<br />Slamyhttp://www.blogger.com/profile/06199660583857443750noreply@blogger.com1tag:blogger.com,1999:blog-8399067511826858944.post-74997184543000367572017-03-15T18:59:00.004+01:002017-03-15T19:12:19.764+01:00Super Turrican Soundfix proposalIt seems not a lot gamers have played Super Turrican. This is my assumption and it has to be true as not much information is available on a significant bug this game has.<br />
<br />
While playing the game more frequenty on the sd2snes to do the MSU hack I ran into issues sometimes. The sound glitched up. I was pretty certain that this was not caused by my hack as I had the same issue very rarely with my original PAL cartridge and blamed it for this. There is actually a video on YouTube showing off how it could sound like. Please turn down the volume as headphone user :3<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/gKbPwZgDkdw/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/gKbPwZgDkdw?feature=player_embedded" width="320"></iframe></div>
<br />
There also do exists some discussion on that topic on some forums:<br />
<br />
<a href="http://www.racketboy.com/forum/viewtopic.php?f=17&t=37267">http://www.racketboy.com/forum/viewtopic.php?f=17&t=37267</a><br />
<a href="http://shmups.system11.org/viewtopic.php?f=6&t=40996">http://shmups.system11.org/viewtopic.php?f=6&t=40996</a><br />
<br />
<br />
Let sum this up here: <br />
<br />
<ul>
<li>It happens on the NTSC and the PAL version. (I've tested this)</li>
<li>It never appeared to me on higan while developing my MSU Hack.</li>
<li>It is caused by a soundeffect and not music. (As my hack doesn't have music on levels)</li>
<li>The glitch only happens on 1chip SNES hardware. (Assumed)</li>
<li>Chances for this bug to happen are quite low. It's possible to make a complete run of the game without having issues at all.</li>
</ul>
<br />
Also there do exists a theory that the blue laser makes this happen more frequently. I can not approve that as it happend to me with the spread shot once too.<br />
<br />
It's a mystery why this was unnoticed so long as the game has aged for quite a while and it seems to be unnoticed until 2010.<br />
<br />
<br />
I never really intented to try to solve this issue as I can't debug it with an emulator. But a few weeks ago I've read <a href="https://wiki.superfamicom.org/snes/show/SPC700+Reference">this</a> article.<br />
It says:<br />
<span style="font-family: "courier new" , "courier" , monospace;">Hardware Quirk! When writing in 16-bit values to 2140 / 2141, a noise pulse (or some technical thingy) may write data to 2143 too! Always write to 2140 / 2141 with 8-bit writes if this is undesired.</span><br />
<br />
So that's some interesting stuff to look into.<br />
I've modded higan for that purpose to detect 16 bit writes to 2140. As it turns out games like Super Turrican 2 and Super Bomberman 4 didn't have these while Super Turrican uses these writes for loading SPC data between the levels.<br />
<br />
I've removed these instructions and replaced them by subroutines which write these values as separated bytes. I did one playthrough and no bug happend yet.<br />
<br />
What I now really need are players that love to play Super Turrican and willing to test this patch to give me some test statistics.<br />
<br />
<a href="https://sites.google.com/site/slamyselectronicslab/SuperTurricanSoundFix_PAL.bps?attredirects=0&d=1">Here is the download link for the PAL versions patch.</a><br />
Apply using flips or some other patch tool. <br />
<br />
<b>Please keep it mind that this is ONLY a soundfix patch. No MSU hack is applied here.</b> I will update the MSU version of my hack with this fix when I've finished resolving issues with sd2snes revision differences on volume levels.<br />
<br />
The NTSC version will follow if we are able to proove that the fix is actually working.<br />
<br />
Here the md5sums for checking:<br />
<span style="font-family: "courier new" , "courier" , monospace;">90c9fe8386a7f69de475c58bb8de01f7 Super Turrican (Europe).sfc</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">d17a07bd58bf295fe09ff6d88f7d0151 SuperTurricanSoundFix_PAL.bps</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">5d214342d2eb3beae115471e4dbc1a6e SuperTurricanSoundFix_PAL.sfc</span><br />
<br />
<br />
<br />Slamyhttp://www.blogger.com/profile/06199660583857443750noreply@blogger.com4tag:blogger.com,1999:blog-8399067511826858944.post-85532540005255556222016-10-05T19:17:00.001+02:002016-10-05T19:21:08.174+02:00Compiling higan v101 under Debian Stretch<br />
While writing Super Turrican MSU i used a modded version of higan v094 back then. byuu was not sleeping and i'm pretty sure he doesn't uses Debian as higan v101 can't be compiled out of the box. Change the following line of GNUmakefile.<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">flags += -I. -I.. -O3</span><br />
to<br />
<span style="font-family: "courier new" , "courier" , monospace;">flags += -I. -I.. -O3 -I/usr/include/gtk-2.0/ -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include/ -I/usr/include/pango-1.0/ -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0/</span><br />
<br />
higan should now compile but still not runnable as the manifest.bml is missing.<br />
<br />
run <b>make install</b> once as a normal user. your home directory is set up.Slamyhttp://www.blogger.com/profile/06199660583857443750noreply@blogger.com0tag:blogger.com,1999:blog-8399067511826858944.post-1036045484674657842016-10-04T19:25:00.003+02:002016-10-09T18:38:00.524+02:00Super Turrican MSU v0.3 now with NTSC supportSome people asked for the US NTSC version of Super Turrican MSU...<br />
<br />
You people are crazy!<br />
The game was made in germany. It has to be played in 50 Hz! D:<br />
Factor 5 did a bad job on having both versions consistent in manner of speed. It almost feels like the only difference between them is that the US version has the SEIKA logo.<br />
This is why i conclude here that the US version is a little bit more difficult but also more fast paced if you like that. On my TV set the 60 Hz video signal is more crisp but this is not the version i've grown up with... <br />
I'll stick to PAL.<br />
<br />
Anyway, you asked for it:<br />
<br />
<a href="https://www.dropbox.com/s/jld33vod5mv2ecn/SuperTurricanMSUv03.zip?dl=0">Download Super Turrican MSU v0.3</a><br />
<br />
I will remove v0.2 in a few days or weeks from Dropbox as it won't be needed anymore. Version 0.3 contains the PAL version as well so don't bother loading the old one.<br />
<br />
<br />
I only play tested the NTSC port once. I had to rewrite some of the code to get it right. The program code of Super Turrican is compressed on the cart. But hacking compressed code in an algorithm i don't know is tedious. I had to work around this time making the NTSC version behave different.<br />
Especially the title screen is buggy as the cursor won't show up by itself. But apart from that the US version is fully playable and hasn't shown signs of failure during my playthrough.....<br />
<br />
Please keep in mind that even the original version of Super Turrican can crash on 1chip SNES models and i'm not able to debug that. The SPC is prone to hang himself in this game.<br />
<br />
<b>Turrican Soundtrack Anthology:</b><br />
The music in this game is an altered version of the Turrican Soundtrack Anthology made by Chris Hülsbeck. If you like the Soundtrack you can buy it from <a href="https://chrishuelsbeck.bandcamp.com/">his bandcamp site</a>
in lossless FLAC and MP3. There are 4 albums to get, containing not
only the arranged Soundtrack for Super Turrican but also for the other
games as well. If you are confused by the sheer amounts of music Chris has made there is also <a href="http://www.turricansoundtrack.com/">website especially for the Turrican Soundtrack albums.</a>Slamyhttp://www.blogger.com/profile/06199660583857443750noreply@blogger.com7