Posts
5389
Following
346
Followers
538
Linux kernel hacker and maintainer, virtual instrument creator etc.

https://jarkko.codeberg.page/

Jarkko Sakkinen

Edited 4 days ago
Pakki - a sample browser i'm putting together :-) it has also AI and interference run with CPU/GPU (works fine on my X390 Thinkpad).

The only AI app I've made so far...

If there's a magic button that generates all the code in the world, I can only assume that everyone is pushing that button. How I adjust my focus on topics such as AI is to look into smaller scale not as crowded areas such as local AI, which has the similar optimization challenge as all optimization challenges I love :-)

1. pfffft for FFT
2. libonnxruntime for inference
3. https://github.com/LAION-AI/CLAP/ for epoch models.
0
0
1

Jarkko Sakkinen

I’ve had so much fun with the 486 SX-33 lately that I haven’t even touched the Switch 2 I got over the weekend.

I’m putting together a devkit for the MiSTeR FPGA ao486 core, and more generally an environment for retro game and demo-style projects. Toolchains in this space have been fairly grim so far: DJGPP, Turbo C++, or Watcom C/C++.

AO486 DEVKIT
  • GCC and LLVM support. COM output is supported through a linker script, and EXE output is supported as well. A Lua script prepends an MZ header to the EXE.
  • A chain loader switches to protected mode and loads the program into extended memory.
  • Rather than relying on DOSBox or 86Box, I tuned QEMU very carefully. It now feels surprisingly close to the ao486 core in practice.
  • If this were a 386 SX devkit, I would probably have gone with flat real mode or so-called “unreal mode”. On a 486, though, the 0x66 and 0x67 prefixes used for 32-bit instructions already eat into performance on what is still a fairly modest CPU. The pipeline is only 16 bytes long.
  • There is a small proof of concept included, but only the bare minimum. I’m saving the more interesting material for my own retro projects. The idea is to provide a blank canvas built on a much better SDK.
  • 486.md covers 486-specific assembly optimisation details. In practice, it is quite a different beast from either a 386 or a Pentium. This is the sort of material that is fun to read on its own, so it felt worth writing.
  • The package includes the Unscii font, apparently pulled from GitHub, though I can no longer find the exact source URL. The original project is here: http://viznut.fi/gfx/fonts/
  • It also includes tmodplay, a MOD player. Unfortunately, the Sound Blaster 16 implementation in ao486 is pretty awful. For that era of PC hardware, the only really good option was the Gravis Ultrasound.
  • The target configuration has 16 MiB of RAM. That would have been an unusual combination back in the day, but those are the ao486 defaults, so I’m leaning into a kind of retro-modern setup. The other default was some completely absurd number.
  • There is also a proof-of-concept demo with a four-layer parallax scroller and various informational texts.

I’m not really a game or demo developer myself, but I can at least provide much better SDKs, so I felt like fixing one long-standing problem in the retro scene. It is released under the MIT license so people can do whatever they like with it.

I should also check whether that FPGA core supports VESA 2.0, because that would allow 320x240 with chunky pixels. VESA 1.x was awful.

#Intel #486 #ao486 #MiSTeR #FPGA

1
0
1

Jarkko Sakkinen

OK so you can without v4l2loopback.

Smoke test:

gst-launch-1.0 \
    videotestsrc ! \
    video/x-raw,format=YUY2 ! \
    pipewiresink mode=provide \
    stream-properties="properties,media.class=Video/Source,media.role=Camera"

iPhone/Airplay:

uxplay -vs 0 -vrtp "config-interval=1 ! udpsink host=127.0.0.1 port=6000"

gst-launch-1.0 -v \
  udpsrc port=6000 caps="application/x-rtp,media=video,clock-rate=90000,encoding-name=H264,payload=96" ! \
  rtph264depay ! decodebin ! videoconvert ! \
  video/x-raw,format=YUY2 ! \
  pipewiresink mode=provide \
  stream-properties="properties,media.class=Video/Source,media.role=Camera,node.description=iPhone Camera"

Test page used: mozilla.github.io/webrtc-landing/gum_test.html

In Firefox the config option you’re looking for is called media.webrtc.camera.allow-pipewire.

3
1
2
In 2024, Octamed 8 was released after 25 year break. It's pretty amazing, at least to me, that there can be 25 year gap, and still have a vibrant and loyal following and committed user base.
1
0
1

Jarkko Sakkinen

This my main UI reference or something I will taken now a lot of inspiration from at least because Octamed is superb and nice to use. And stands time just like Vim :-)

1. Octamed was made by a Finn Teijo Kinnunen.
2. Had major share on invention of such electronic music genres at their epoch such as breakbeat, jungle and drum'n'bass.
3. Still widely used as it does the job and has predictability unreachable on a signal chain with adaptive latency prevention algorithms, and especially with hardware samplers and such this makes ones life better.
4. I like it too a lot, it's great for what it does :-)

That is next 6 months at least because I want my tracker to level that I can do a full track with no other tools, and it is surprising how bottomless pit different usage patterns are (and not necessarily bugs, something just works or doesn't). And now that I actually have really good design and implementation for the engine it makes me less eager to less, it's fun to try things out :---)

#octamed #amiga
2
0
4

Jarkko Sakkinen

Edited 29 days ago
Tracker will take some time and especially since I'm doing C rewrite, which is right now completely broken (literally a start from scratch).

However, the elegant C implementation will motivate me more as a developer as I enjoy it more, and thus will eventually get the project there.

With Rust implementation I know I would give up at some point. E.g., in this type of project you want to leave space for downscaling to very low-end computers, and more towards 80s/90s hardware we go, more opcodes cost relative to memory access costs. Thus I don't want compiler to do any memory safety stuff for instance. Software must have full control of generated opcodes.

The code base looks in style a lot like kernel code and utilizes its popular patterns such as ops structs and container_of macros. And coding style is of course kernel coding style.
1
0
0

Jarkko Sakkinen

Edited 1 month ago
Old school file browsing experience :-) Rendered as a single GLSL shader program (except top and bottom bar). There's now 1:1 correspondence between shader programs and screens. Most importantly this stabilizes latency for each tick in audio playback (smaller CPU time variance).

#tracker #polyend #chiptune
0
1
0

Jarkko Sakkinen

I really enjoy working on this tracker project. When I got pattern editor, I knew that it will become something. It will take at least a year to really nail every bit but it has the critical mass of getting done (eventually) :-)

Very early work on sample editor.
0
0
0

Jarkko Sakkinen

UV bars :-)
0
0
1

Jarkko Sakkinen

Edited 1 month ago
also has polyend's 8 channel view :-) in this view text fields need some work but yeah looking pretty good
0
0
1

Jarkko Sakkinen

2
5
3

Jarkko Sakkinen

Edited 1 month ago
it's glitchy atm because heavy changes how pattern editor is rendering but getting there ;-) music courtesy of 4mat - red sector theme
0
0
0

Jarkko Sakkinen

after fixing a few rendering glitches next step with this will be wavetable and granular oscillators 🙂 #polyend #tracker
1
0
2

Jarkko Sakkinen

Moxie seems to be only person in the planet nailing login like it was 2021 :-)

Linear email-link-passkey track.

First time I witnessed this like it should be done everywhere really since five years ago.
0
0
0

Jarkko Sakkinen

Listen up, dear frontiersmen.
0
0
0

Jarkko Sakkinen

lrzsz2 0.3.2 and zmodem2 0.4.8 with (finally) working batch transfers. #zmodem #rustlang #tty
0
1
2

Jarkko Sakkinen

Edited 1 month ago
Test code I have cleaned up relocated:

https://git.kernel.org/pub/scm/linux/kernel/git/jarkko/vcam-test.git

From this i spin off at least some kind of initial kselftest.
1
0
0

Jarkko Sakkinen

Edited 1 month ago
Here vcam-test outputs to /dev/vcam and in sequence streams /dev/video0 and renders the output to KMS/DRM initialized frame buffer.

I need to flatten the ioctl interface of /dev/vcam a bit but otherwise this is looking pretty reasonable...
0
0
1

Jarkko Sakkinen

lol, who would guessed: tony blair is in the executive board

... and trump just called brits who participated to Nato wars as "losers"

🇬🇧
0
0
1
Show older