- What is HAM? Why did you write it?
-
When I started out on GBA development, there was little aid. The only way to start development on this precious little machine was by getting some tarballs off a GNU site, compile your cross environment, write your own linker scripts, fiddle endlessly with compiler parameters, and all that before you could even add two numbers together on the Gameboy Advance. If you were not up for this, there was no way to program this neat little machine in C or C++.
Well, I was up for it, but I am sure that there were a lot of people that would have sufficient C skills, but could not figure how to set up their environment. I decided this was inacceptable, and looked into a few homebrew development systems that started popping out of nowhere in early 2001. However, I was not quite satisfied with either solution, so I decided to start with my own development kit in February 2001, which eventually was named HAM during my summer holiday 2001 in spain. The real meaning of the abbreviation HAM is confidential :).
- What I wanted HAM to do:
-
- create an easy to read and extensible development environment
- make the whole kit install and go with only a few clicks
- provide support for all testing environments: emulators, FLA, MBV2, and debuggers
- provide samples that compile without any hazzle using a standard command
- deliver all the tools a programmer needs to compile, link, and convert
- ...and have them work automatically through a common makefile
- When was it first released?
-
HAM was released to the public on 21st December 2001 as v1.4, and was mainly a C Pre Processor driven application that simplified the direct hardware access to the GBA system. Where you had to code cryptic values into more cryptic memory or hardware adresses, HAMs' approach was to provide a consistent macro framework that adressed all everyday tasks a GBA programmer would need. The HAM macro language is discussed in a whole section of this document.
- What is HAMlib?
-
HAM v2 introduced a function library built on top of HAM, and replaces all C functions that were previously present in HAM 1.4. The macro portion of HAM did not change significantly, but the functions are all new. Have a look at the Features now!
HAM 2.4 introduced sound support and a fully integrated version of GDB, the GNU debugger. Also, this was the first version of HAM to fully support programming in the C++ language.
The 2.5 release was yet another milestone, because it now also works on nay Linux compliant environment. The setup is almost as easy as the Windows port, and that version empowers the user to choose which compiler version he needs.
The latest releases now finally contain a full fledged sound solution, written by Sebastian Kienzl. This nice system is called Krawall, and is now included with the HAM releases. HAM actually includes a lot of nice backend functionality to support seamless Krawall integration for both the freeware and registered versions. The complete conversion/linking steps are fully automated. For an example of this, see Hello World Tutorial .
The function libary included in HAM is called HAMlib (binary file name libham.a), and is documented in a section in this help document.
Documentation Homepage |
HAMLib reference |
Back to HAM Homepage