3 blog posts already, amazing – though very shortly I may have to start talking about far less interesting projects, or post less frequently. This is starting to take quite a bit of time, and I’m running out of interesting things I’ve been doing. :)
So, recently I’ve started looking into ASIC design – it’s will still be quite a long time before I can practically start thinking about trying to design my own chip, however, in the meantime some chip reverse engineering has attracted my attention.
Now, I mostly operate from a home-lab environment, and it’s not really safe to involve things like… high concentrations of Nitric acid. But, having recently acquired a decent cheap USB microscope (the Veho VMS004DELUXE USB Powered Microscope), I decided to give chip disassembly a shot for the amusement value. Given my lack of professional tools this has little potential to be really educational, but it was pretty interesting. This is a pretty picture-heavy post, if that wasn’t clear enough already… (more…)
Project: 8×8 LED Matrix Controller
Another week has gone by, and it’s time for another project!
This week’s project is a little bit more complex than the last one, but it’s still pretty small. It’s a small board that drives an 8×8 LED matrix. It’s actually a pretty silly project because I only have a dozen or so of these LED Matrices around (I’m not sure I can even buy these specific matrices anymore) – I actually bought them back in 2005 – they’re 8×8 arrays of red/green LEDs. They’re organized with a common anode per row, and then red/green cathodes per column. (Davr also got some, and has a number of entries on his blog about his efforts)
Just for fun, I set out to design a board that would sit on the back of the LED matrix and make it easy to drive from a small microcontroller. My design goals were to have current drivers on the common anodes, and provide a shift register to easily configure the other LEDs. I also wanted to be able to easily chain multiple boards together to make a much longer array. (Read on for more details about the design…) (more…)
Here’s the first installment of my weekly project report thing :) Wish me luck!
So, not terribly long ago I decided it was really time to give microcontrollers another go; My history with microcontrollers in general has been a little sketchy, because not only are they pretty limited systems, but they don’t really allow a lot of creativity in solving your problems. Being mostly self-taught on ARM and x86 CPU architectures, the little 8-bit uCs generally seemed more like a pain than anything else.
However, I was determined not to let my history deter me, and to try again. I ordered some AVR DIP chips for prototyping and a serial programming cable. Unforuntately, like so many well laid out plans, this didn’t wind up working out – not knowing too much about the AVR landscape, I had inadvertently ordered a serial programmer that requires an actual native serial port to work (it wouldn’t do anything with my USB-serial converter… And seriously, who has a native serial port around these days?)
Being incredibly stubborn and unwilling to wait further to order yet another programmer, I decided to take matters into my own hands – After reading the AVR documentation on programming their chips (which is actually quite good), I put together a small CPLD based programmer which has served my needs. Read on for the full details…
I’ve decided that every weekend (starting next weekend) I’ll update this blog and detail one of my projects; I’ll either write up something that I’ve already completed, something that’s in progress, or something that I’m planning to do in the near future.
If nothing else it could be interesting to follow, and will serve as somewhat of a historical record of what I’ve been up to.
I’m a little worried at this point about running out of content, but I do have a bundle of little projects that I’ve completed in the recent past that I can write up, for the first several weeks. Hopefully I have something further by the time I’m done with those… :)
Most likely I won’t take the effort to provide project design files or documentation, but if there’s interest I can probably make that sort of thing available – These are mostly just hacky personal projects after all (though, at least a few of them have larger intended audiences).
(Small update: Apparently comments were broken, but they’ve been fixed now)
The Conspicuous Absence of Posts
Hi! It’s been a while since my last post; I’ve decided that I should post more often even if I don’t have a lot to say, as sometime soon I will have more to talk about.
As usual, there have been a lot of projects in progress, but nothing I want to share publicly at this time. A few things have happened since last post though:
- I entered and did horribly in LudumDare #15 (Caverns) (My horrible entry)
- I’ve worked on some hardware projects (Like this Optical Switch, which switches between optical audio inputs. Yes, I’m too cheap to get a receiver, but with this I don’t need one.)
- I’ve built my XNA game engine up and it’s quite capable, I’m now in the process of actually putting together a game with it. (No screenshots publicly available yet. Maybe soon)
- A pile of other small stuff; I’ve tinkered with driver development, played with some hardware ideas, thought about a lot of stuff I won’t be doing for months, learned some math,… you get the idea.
Some things coming up in the near future:
- As I said, I’m working on an XNA game. I’m hoping to release it before too terribly long, so expect to see more about it soon.
- I am working on designing a PCI card / general purpose hardware development platform – This took a back seat to the XNA game a month or two ago, so is only half done, but I’ll be posting about that when I get it further as well.
- Revisiting the DS wifi is on my list for “after the current set of important projects,” But I’m going to make more of an effort to get to it this year.
Well, that’s how life is. I’ve got far too much to do but pretty happy with what I am doing. I wonder if anyone is still paying attention to this blog :)
I’m still somewhat interested in teaching, and maybe I will still get to that arcane series on software rendering I was thinking of – Any other suggestions on things to write about?
Hey, it’s been a while. I’ve taken a few minutes (well an hour or two) to upgrade wordpress and check/tweak my site’s links – I’d like to use this blog more often
Since I’ve gone through all that effort, I should probably write something…
I’ve been involved in a lot lately,
- Work – Eats a lot of my time – I really like what I do. I actually have an office job now, never would have imagined that :)
- Personal projects – Still doing stuff all over the place. I may link these from time to time but mostly keep them to myself
- XNA games – Have a big project or two in progress. Also not saying much about this, but I may link something from time to time…
Also, I have a lot of plans for the future,
- DS Wifi project – Reverse engineering the hardware again, more thoroughly – Completely rewriting the 802.11 and TCP/IP stacks. Not going to start for a few months at least, and it will probably take a few more months when I do get started.
- Some hardware ideas have been brewing, but I won’t say much about these…
- Some emulation ideas have been brewing, but I won’t say much about these…
- There are always far more ideas than I can imagine having time for.
I’ve decided I will post interesting milestones of large projects or interesting completed small projects here when I have spare time to do so- It shouldn’t be hard to keep this blog more active than it has been :)
I’m also currently playing with Twitter, so some additional information about what I’m doing is available there – http://twitter.com/sgstair/
One other thing: I’m toying with the idea of writing an article every week or two, but I haven’t decided what exactly to write about yet. If you have ideas I’d appreciate if you tell me, in the comments or otherwise. Currently I’m considering writing a series of articles on building a software rendering 3D engine from scratch.
Well, that’s all for now. Maybe I’ll manage to post here more often :)
Hi! Well, the Opti compo has ended. I haven’t got around to judging cause pepsiman probably won, and I’ve been really short on time, and tied up in other things.
I’m not sure just how much I want to say yet, but I have moved (I’m in the Seattle area now), and have an office job now – which is new for me. I’m still working out how much I’ll be able to continue working on my personal projects, but I will post more on that when I know for sure. I’m not sure how things are going to unfold yet but I will certainly post more when I do know.
And then, I’ll try to clean up the pieces of all the stuff I dropped in the process of moving out here and getting started in a new place.
I continue to fail to post weekly; all the fun stuff I would want to say, I don’t think I should talk about, though.
Anyway, the Opti compo is still going along, but it’s getting close to the end – right now there are 11 days before the compo ends. I’m adding this informational post to remind people and also to alert people to a new revision of the test system, better rules for whether an entry will be accepted or not, and various other things. I’ll reiterate the important parts on the competition page.
Firstly, the test system update: this update will probably be the final update of the test system code for this competition. Unfortunately I didn’t get all the stuff I wanted in it, I’ve been short on time and have had more than enough stress to go around :) So, this update does not contain the statistical time-sampling profiler that I wanted to add to the test app. It also doesn’t include a fractal explorer section which I had wanted to add. But on to the features that I did get around to adding: There is now a new default test set of 6 tests, they zoom in quickly on a specific point in the fractal, and are pretty complex areas to render (the number for max_iterations on the 6th image is 1400, and the horizontal and vertical steps are in units of 2^-44). I’ve included a modified example that is designed to serve as a lower bound for correctness – passing implementations should have a smaller amount of error than the lower bound. I don’t think this will be too hard, the lower bound currently exists as a modification to the multiply code that loses 3.5 bits of precision with each multiply. This actually caused less difference from the reference implementation than I had thought; currently across the 6 tests, there is a total difference of 7044 iteration counts, notably the 6 tests render a total of 147456 pixels, so this value is really barely even noticeable.
There was also a bug in the test app that caused it to only display the last test’s cycle count rather than the sum of all of them, this has also been fixed, and (in no$) the cycle count for the “lower bound” test is 0x0004CC483E1E cycles – which is 307 seconds of cputime, about 5 minutes. As the default test behavior also runs the example code alongside it, this means a test run of the lower bound takes about 10 minutes; not very good for repeated testing. I’ve added a way to start the tests without checking them, by pressing start instead of A, so the code execution time you have to sit through is purely your own fault ;) It will be pretty obvious if there are big errors, but it will still take a long time to check results against the reference function.
Ok, that’s all I have for now; I’ve been working on my own implementation just lately in assembly, but I really have no idea how well it will perform just yet. I’ll post some numbers in the comments on the Opti site once I get them.
So, the Ludumdare 11 competition is over (as of 2 weeks ago), and voting has completed (as of yesterday)- it’s been a while since I last posted.
You can see the competition results Here - I got first place in the timelapse video, and third in the technical category – participating was a lot of fun.
Things are moving really slowly here lately, I’m trying to get a job, trying to get varioius odd projects done in the meantime… Haven’t really started on any of the big things I want to do, due to lack of time. I do hope I can get all of these things sorted out soon.
The First Opti Competition is still moving along – in hindsight it’s really not doing as well as I’d like, and that’s mostly due to the theme. Well. I do have ideas on how to fix that – after this first compo I’ll be starting some more useful / reasonable / interesting competitions that will hopefully involve a wider array of people and won’t be quite so technically involved. I’m also going to add some more categories to the site, so there should be something for everyone.
I’m going to try to continue with weekly updates, because I know you all have nothing better to do than read about the trivialities of my life ;) yes, I’m being facetious. Sometimes I wonder why I write this at all; I do hope someone finds it interesting, but if nothing else it’ll give me something to laugh at many years down the road.
I’ve decided to enter the LudumDare 48 hour competition (#11) – it should be a lot of fun – 48 hours to develop a game completely from scratch! I’ll be sure to post here with the outcome, good or bad. Though I suspect the outcome will be good ;)




