We know the 6502 isn’t exactly the CPU of choice for today’s high-performance software, but with the little CPU having appeared in so many classic computers — the Apple, the KIM-1, The Commodores, to name a few — we have a real soft spot for it. [Janne] has a post detailing the eight best entries in the Commodore 64 coding competition. The goal was to draw an X on the screen using the smallest program possible. [Janne] got 56 bytes, but two entrants clocked in at 34 bytes.
In addition to the results, [Janne] also exposes the tricks people used to get these tiny programs done. Just looking at the solution in C and then 6502 assembly is instructive. Naturally, one trick is to use the existing ROM code to do tasks such as clearing the screen. But that’s just the starting point.
Continue reading “Dirty Tricks For 6502 Programming”
You’ve got to admire the steps some people take to squeeze a shop into a small space. Finding ways to pack in ever more tools and to work on bigger and bigger projects become ends to themselves for some, and the neat little tricks they find to do so can be really instructive.
Take this workbench pop-up outlet strip for example. The shop that [Woodshop Junkies] occupies appears to be a single-car garage, on the smallish size in the first place, that is almost entirely filled with a multipurpose workbench. It provides tons of storage underneath and a massive work surface on top, but working with small power tools means stretching extension cords across the already limited floor space and creating a tripping hazard. So he claimed a little space on the benchtop for a clever trap door concealing a small tray holding an outlet strip.
The tray rides on short drawer glides and, thanks to a small pneumatic spring, pops up when the door is unlatched. There was a little trouble with some slop in the glides causing the tray to jam, but that was taken care of with a simple roller bearing. The video below shows its construction and how it stays entirely out of the way until needed.
As cool as this build is, it’s just icing on the small shop cake when compared to the workbench. [Woodshop Junkies] has a complete playlist covering the build which is worth watching. And you might want to refer to our tiny shop roundup for more tips on getting a lot done in a little space.
Continue reading “Pop-Up Outlet Helps Make The Most Of A Tiny Shop”
Why would anyone bother to create new content for a console system that’s staring down its 40th birthday? Perhaps just for the challenge of fitting a game into 40 kilobytes of storage.
That at least seems to be the motivation behind [Morphcat Games] pending release of Micro Mages, a new game for the Nintendo Entertainment System console that takes its inspiration from Super Mario Bros. The interesting bit here is how they managed to stuff so much content into so little space. The video below goes into great detail on that, and it’s a fascinating lesson in optimization. The game logic itself is coded in assembler, which of course is far more efficient than higher level languages. Even so, that took 32 kB of ROM, leaving a mere 8 kB for background elements and foreground sprites.
Through a combination of limited sprite size, tiling of smaller sprites to make larger characters, and reusing tiles by flipping them horizontally or vertically, an impressively complete palette of animated characters was developed. Background elements were similarly deconstructed and reused, resulting in a palette of tiles used to generate all the maps for the game that takes up just 60 bytes. Turning those into playable levels involves more mirroring and some horizontal shifting of tiles, and it looks like quite an engaging playfield.
Yes, there’s a Kickstarter for the game, but we’re mainly intrigued by what it takes to cram a playable game into so little space. Don’t get us wrong – we love the Retro Pie builds too, but seeing the tricks that early game developers relied upon to make things work really gets the creative juices flowing.
Continue reading “New Game, Old Ways: Cramming An NES Game Into 40 KB”
It is a staple of science fiction to see a brain in a jar or other container, maybe used as some sort of computer device. You are probably imagining a brain-powered supercomputer with a room full of humans with electrodes in their heads, or maybe some other primate. The reality though is it might be just a small dish full of single-celled amoeba.
Researchers from China and Japan have successfully made a lowly amoeba solve the traveling salesman problem for 8 cities. We’ll be honest. We don’t totally understand the value to it over traditional methods, but it does prove that you can compute with organic matter. This isn’t just any amoeba, though. It is a particular kind, Physarum polycephalum, that has an unusual property — it can shapeshift, at least to a limited degree. The tiny creature is just like us in that it tries to get things it likes and avoid things it doesn’t like. It likes food, but it doesn’t like light.
Provide food, and the tiny creature will spread out. Shine light on it, and it will retract. That’s the property used to solve the thorny problem, but before we look at how that works it helps to understand the problem it is trying to solve.
Continue reading “Excuse Me, I Have To Feed The Computer”
NASA is famously risk-averse, taking cautious approaches because billions of taxpayer dollars are at stake and each failure receives far more political attention than their many successes. So while moving the final frontier outward requires adopting new ideas, those ideas must first prove themselves through a lengthy process of risk-reduction. Autodesk’s research into generative design algorithms has just taken a significant step on this long journey with a planetary lander concept.
It was built jointly with a research division of NASA’s Jet Propulsion Laboratory, the birthplace of many successful interplanetary space probes. This project got a foot in the door by promising 30% weight savings over conventional design techniques. Large reduction in launch mass is always a good way to get a space engineer’s attention! Mimicking mother nature’s evolutionary process, these algorithms output very organic looking shapes. This is a relatively new approach to design optimization under exploration by multiple engineering software vendors. Not just Autodesk’s “Generative Design” but also “Topology Optimization” in SolidWorks, plus others. Though these shapes appear ideally suited to 3D printing, Autodesk also had to prove their algorithm could work with more traditional fabrication techniques like 5-axis CNC mills.
This is leading-edge research technology though some less specialized, customer-ready versions are starting to trickle out of research labs. Starting with an exclusive circle: People with right tiers of SolidWorks license, the paid (not free) tier of Autodesk Fusion 360, etc. We’ve looked at another recent project with nontraditional organic shapes, and we’ve looked at generative designs used for their form as well as their function. This category of CAD tools hold a lot of promise, and we’re optimistic they’ll soon become widely accessible so we can all put them to good use in our earthbound projects.
Possibly even before they fly to another planet.
Building your own weather station is a fun project in itself, but building it to be self-sufficient and off-grid adds another set of challenges to the mix. You’ll need a battery and a solar panel to power the station, which means adding at least a regulator and charge controller to your build. If the panel and battery are small, you’ll also need to make some power-saving tweaks to the code as well. (Google Translate from Italian) The tricks that [Danilo Larizza] uses in his build are useful for more than just weather stations though, they’ll be perfect for anyone trying to optimize their off-grid projects for battery and solar panel size.
When it comes to power conservation, the low-hanging fruit is plucked first. [Danilo] set the measurement intervals to as long as possible and put the microcontroller (a NodeMCU) to sleep in between. Removing the power from the sensors when the microcontroller was asleep was another easy step, but the device was still crashing overnight. Then he turned to a hardware solution and added a more efficient battery charger to the setup, which saved even more power. This is all the more impressive because the station communicates via WiFi which is notoriously difficult to run in low-power applications.
Besides the low power optimizations, the weather station itself is interesting for its relative simplicity. It could be built with things most of us have knocking around. Best of all, [Danilo] published the source code on his site, so most of the hard work has been done already. If you’re thinking he seems a little familiar, it’s because we’ve featured some of his projects before, like his cheap WiFi extender antenna and his homemade hybrid tube amplifier.
When programming a microcontroller, there are some physical limitations that you’ll come across much earlier than programming a modern computer, whether that’s program size or even processor speed. To make the most use of a small chip, we can easily dig into the assembly language to optimize our code. On the other hand, modern processors in everyday computers and smartphones are so fast and have so much memory compared to microcontrollers that this is rarely necessary, but on the off-chance that you really want to dig into the assembly language for ARM, [Uri Shaked] has a tutorial to get you started.
The tutorial starts with a “hello, world” program for Android written entirely in assembly. [Uri] goes into detail on every line of the program, since it looks a little confusing if you’ve never dealt with assembly before. The second half of the program is a walkthrough on how to actually execute this program on your device by using the Android Native Deveolpment Kit (NDK) and using ADB to communicate with the phone. This might be second nature for some of us already, but for those who have never programmed on a handheld device before, it’s worthwhile to notice that there are a lot more steps to go through than you might have on a regular computer.
If you want to skip the assembly language part of all of this and just get started writing programs for Android, you can download an IDE and get started pretty easily, but there’s a huge advantage to knowing assembly once you get deep in the weeds especially if you want to start reverse engineering software or bitbanging communications protocols. And if you don’t have an Android device handy to learn on, you can still learn assembly just by playing a game.