Saturday, January 2, 2016

Summarize of what I accomplished between mid-2014 to end-2015.

January 2nd, 2016! --- Happy New Year!

In my last post, I wrote a couple of ideas I was having in mind... Since then, I made some progress!


Music Synthesizer

I started to explore about VST and as I work on a concept, I realize that the best way to give flexibility for sound creation is by giving the user access to a computer language. One of the synth which already exist is 4klang by Alcatraz.


When I realize that, I cancel the creation of a VST as I though as a programmer, there is not much advantage to spend time creating an interface to program what I could already write in C. I am still interested to explore sound & music...



Video Game Clock - Next Gen!

In beginning of 2015, I though to enhance the video game clock project! I explore the power consumption using hardware interrupt and saw that I could greatly reduce it. I also modify my boot-loader to support USB instead of CD-ROM. In order to debug my USB boot loader, I made a small memory explorer which could fit in the boot loader sector. I then started to code a tool to convert NES (Nintendo Entertainment System) background to a packed data set and display a scrolling background. Here, is the demo using Castlevania (NES)...



Custom USB bootloader hexviewer + "Castlevania" scroller in asm386.


On my laptop (not on this one in the video), the performance of the CPU is so terrible that the CPU can barely draw the background in one frame. I realize that some CPU need some custom instructions in order to run at a decent speed. I was estimating that the CPU on my laptop is running by default to 20-33 MHz. Worst, moving the mouse is causing a lot's of CPU cycles being lost and the scrolling started to move very choppy.

I started to read about custom instructions on x86 CPUs and realize the nightmare it would become. Writing specific code for each CPU to manage their performance. Also, I realize that newest technologies has no support in BIOS calls. Meaning that there is no easy way to get WIFI for example!


Demos, physics!

It's been a couple of years that I has been asked to participate into a text-mode demo competition. The challenge seem simple, doing a real-time animation & music using the text-mode of early PC (16 colors, msdos charset). I decided to jump in for this year competition and just do something simple.



One of the interesting feature in this project was to code a fluid simulation. As I like playing with math, it was fairly easy to write the rules in order to get the water particle moving. I first planned to have also a temperature factor and get the environment deteriorate if they are expose to a high contrast between cold & hot. However, with 1 CPU computing 10 000 particles and using my crappy laptop... I realize that I have to get things simple.

One of the most critic I got from people... "hey, stop making your life hard and you could use this library or tool for that"! But, I like to start writing equations on a piece of white paper and get things done. The Internet is still useful, but I use it for some reference. However the pleasure is to get visualize in my mind the equation written and see that the simulation on screen is even more accurate & wonderful than what I thought!


That's all for now...