Aleksandar Krstikj.com

BarTop Arcade Cabinet running MAME32 (convering analog joysticks to digital d-pads)

by on Jun.12, 2014, under Gaming, Hardware, IT

Well, I finally got around to documenting a project that was started a while back, and has been on hold ever since. I’m talking about my attempt at building myself a Bar-top Arcade Cabinet. The important parts of the project (mainly controls) are done, and the thing functions perfectly. What remains to be done is to build an enclosure and put everything inside so that the thing actually starts looking like an Arcade Machine. Right now, it looks like a transformer that has trouble shape-shifting 🙂

Before you read further on, I suggest you watch the YouTube video I made showing it off. Afterwards, feel free to move on and read how the controls were done, as this is the main custom part of the arcade itself.

Ok, so I take it you watched the video. And I also take it you didn’t listen to my advice of getting digital game-pads and not bothering with analog joysticks. Or maybe, just like me, you had analog joysticks laying around and just want to replicate the same thing I did. Whatever the case, read on.

(continue reading…)

Leave a Comment :, , , , , , , , more...

Hyper Terminal on Windows 8

by on Mar.06, 2014, under IT, Software

If you still tinker with RS-232 (serial) ports, you will undoubtedly need some software to communicate with devices connected to that port. In the days of Windows XP and below, that program (at least for me) was HyperTerminal. However, unfortunately, this is no longer included in newer versions of the Windows OS. Luckily though, it still works. I’m currently using it on Windows 8 with no problems whatsoever.

The only thing you need to do is to copy two files from a Windows XP machine. They are found in the following locations:

  • C:\Program Files\Windows NT\Hypertrm.exe
  • C:\Windows\System32\hypertrm.dll

Grab those files and copy them over to your new OS. Make sure they can ‘see’ each other, meaning you would most likely want to put them in the same folder. After that, just run the exe and you’re done.

NOTE: Run the program as an administrator. I was getting connection errors if I ran it otherwise.

Leave a Comment :, , , more...

Global Game Jam 2014 – Wait For Me

by on Mar.06, 2014, under Code, Gaming, IT

Another year, another Global Game Jam. In the spirit of last year, the same team gathered again. This year we even had reinforcements as another member joined in. We set out to create a split-screen-co-op-top-down-platformer, which we think turned out pretty good.

Enter “Wait For Meeee!!!!”:
Wait For Me Screenshot

As if it were a trend, we made quite a difficult game, same as last year’s “Heartless Zombie.”
In order to avoid retyping, here’s what I wrote about it on the official Game Jam site:
(continue reading…)

Leave a Comment :, , , more...

Charge Day – The International Holiday Batteries Love

by on Dec.26, 2013, under Hardware, IT

If you’re not confused enough by the title, let me make it worse – I invented my own holiday and it comes every month (or so). I call it “Charge Day” and dedicate it to all electronic devices I have laying around, or more specifically to their batteries. It is a day to spend a little more electricity than usual, and charge all those things which you use every day, or used in the past but don’t really any more.

So why is this holiday important, and why should everyone get behind it? Well the answer is quite literally Life or Death (for your batteries :)). You see, when we get a new electronic device we tend to use it a lot. It’s new, exciting, interesting, and perhaps even useful :). However, as time passes we either get bored of it, upgrade to a newer model, or find it redundant as its functionality just got moved to the newest cell phone on the market. This is where things to downhill.


As we cast that “old” device aside, its battery starts to drain. But, we’re not using it – you might say! And you would be right, but all batteries have a self-discharge rate which varies between battery types, brands, etc. However, they all loose a bit of their power each day, and given enough time – drain completely. Now, it’s all fine and dandy if our battery hasn’t been used for a bit and went from its full charge down to about 80%. Cool, no problem, recharge and go. However, when we don’t use them for a longer period, they may go down to 0, and this is extremely bad. At this point, we’re coming to a state of a battery’s life known as deep discharge, and to keep it simple, batteries don’t like that, and this may and probably will damage them permanently. Keep in mind, this not a state when your cell phone turns off (0%) and you need to recharge, this is well beyond that. At 0% the battery still holds power but it’s just not enough to power your device. Its voltage drops below a certain level and you have to recharge it. However, a state of deep discharge practically means that the battery is completely dead and will probably either not get recharged at all, or won’t hold the charge for very long.
(continue reading…)

Leave a Comment :, , , , , more...

Traversing a matrix with Big O (N) complexity

by on Jul.20, 2013, under Code, IT

Disclaimer: Let me start off by saying that this is totally random. I don’t know if anyone will have a practical use for what I’m about to write, but it’s just an idea that I wanted to share online. Mostly because sharing is fun 🙂

I was just discussing with a friend about Big O notation, and somewhere in there we mentioned that traversing a matrix is Big O (N^2) since we have nested loops. One loop traversing rows and the other – columns. Right then, an idea popped in my head that we don’t necessarily need nested loops to do this, and we could get away with only one loop, thus reducing the complexity to Big O (N). He asked how, and I gave birth to the following piece of code (ok that sounded better in my head):
(continue reading…)

2 Comments :, , , more...

How to play MP3s in the shower

by on May.26, 2013, under Hardware

If you’re anything like me then you love music! I just can’t go anywhere without something playing some nice tunes in my ears. Whether it’s my home or car stereo, PC, iPad, cell phone, whatever, music follows me everywhere. So obviously, when such a time came that I had to get a new shower cabin I figured, hey, that’s one place I still don’t have music playing.

So I looked around and found a cabin with a built in FM tuner. Of course, there were models which supported playing MP3s straight out of the box but I didn’t feel like throwing money at such a model so I got this one. I should note here that if you’re the type of person who already owns a shower cabin capable of playing MP3s this post may not be for you. But if you’re only able to tune into radio stations this little hint will help you play your custom song selection in the shower in no time.
(continue reading…)

Leave a Comment :, , more...

M&M Sorter using OpenCV and Arduino

by on May.23, 2013, under Code, Hardware, IT

After my first OpenCV project which dealt with object tracking, I decided to do something a little more challenging and complex, but also more fun. I went for M&M sorting. You might have already seen this idea being realized somewhere online, I know I’ve seen a ton of different examples. However, everyone seems to have a different approach to doing it, so I figured I’ll give it a shot myself.

For those of you that want to jump straight into the action or just want to watch the pretty M&Ms fly about, you can go directly to my video showing the program execution:

If you’re interested in some more details on how the sub-parts of the project function, take a look at this video explaining things a bit better:

Finally, for those of you more into reading, and those looking for the specifics let me present the fine details of the project:
(continue reading…)

2 Comments :, , , , , , , more...

Tracking a ball and rotating camera with OpenCV and Arduino

by on May.20, 2013, under Code, Hardware, IT

I recently started playing around with the OpenCV library and one of the first tutorials I did dealt with tracking a ball with the camera. I expanded on that concept a bit by having the camera rotate and continue tracking the ball even if it goes off screen. I did this by connecting the camera to a small servo controlled by an Arduino Uno, which receives commands from my PC via a serial connection.


The base project I used can be found here. I decided not to reinvent the wheel and used that code as a starting point so props to the author. However I did modify the code slightly and also added some more things to make it work for my project. The modification refers to changing the color model from RGB to HSV as I found out that it’s much easier to specify a tracking color by using the Hue value rather then finding a good RGB value. The additions refer to the code for serial connectivity and the Arduino instructions send via the serial connection itself.

You can see how the project ended up looking and working in this short YouTube video I made:

(continue reading…)

63 Comments :, , , , , , more...

Global Game Jam 2013 – Heartless Zombie

by on Mar.08, 2013, under Code, Gaming, IT

You may have heard of an event called The Global Game Jam. Inspired by other game jams before it, it was founded in 2008 and it had been growing ever since. However, even though the event is running for several years now, for people in Macedonia – myself included, this year was a first. When I found out that the Global Game Jam finally came to my country I couldn’t miss the opportunity to take part in it. So I did.

As I went alone, I was fortunate enough to meet 3 other guys who didn’t mind having me in their team and we really kicked it off! We divided the work among us and while some started creating the music, others began drawing objects and characters. I ended up with game-play design and programming. It was my first experience with game development and I have to say I enjoyed it quite a bit.

Heartless Zombie Screenshot

(continue reading…)

1 Comment :, , , , more...

Get the last day of a month in GWT

by on Sep.21, 2012, under Code, IT

A while back I implemented a report system in a project I was working on where you would send a server two dates (a ‘from date’ and a ‘to date’) and it will return results between those two dates. Well yesterday I had to extend that report system for monthly reports so I figured a drop-down menu with month selection is more convenient to the user than forcing him to manually set the dates from the first of the month to the last of that same month. So I created the drop-down menu, populated it with 12 month entries and moved on to program the logic behind the change handler. This is where I ran into a small problem.

You see, under normal circumstances when working with Java I would use the Java.Util.Calendar class for this, but unfortunately this class is not emulated in GWT (not yet at least). There is a slightly less powerful class that does calendar manipulations though, and is found under com.google.gwt.user.datepicker.client.CalendarUtil. So I figured I’ll use this. I took a quick look at the methods it offers and I wrote a quick and dirty way to get the last day of a certain month.
(continue reading…)

6 Comments :, , , , , more...