Welcome to HAM, the free Gameboy Advance development kit



A brief history of HAM:
Before HAM
was originally released in 2001, Gameboy Advance development was
limited to a handful of people who could be bothered to custom compile
their own development toolchains, had inside knowledge of how binaries
needed to be linked together to produce working ROMs that will run on
real hardware, and were fluent in operating even the most ghastly
compiler switches of the GCC compiler.
I had gained a lot of
knowledge on these tools during my active Dreamcast homebrew
development activity, and envisioned that it would not be too hard to
create a flexible, yet easy-to-use toolchain for starting Gameboy
Advance developers. The initial idea was to integrate all the needed
tools in a single package, support the automatic conversion of file
types into formats suitable to the GBA (mostly graphics and sound
data), and take off the burden of knowing the linking / compiler
internals in order to write code. In short: I wanted people to install
the package, write a hello world app with only a few lines of code, and
press a button - et voila - it should come up on the emulator, or, if
available, be transferred to a Multiboot-enabled GBA or Flash cartridge.
All
of the above was accomplished in the initial HAM release 1.0, released
in late Summer 2001. In addition to the above, the first release of HAM
contained an extensive header file contianing well over 1000
parametrized hardware macros, including setup macros for the GBA
Sprite, BG, Sound, and many other subsystems.
HAM 2.0 saw the
release of the widely-used HAMlib - a thin C-based library (total of
80kb unpacked) , which introduced a well laid out set of hardware
abstraction functions to make it easier getting to grips with the GBA
hardware. The initial release covered almost every hardware feature of
the GBA system, and the library has been improved and extended since.
These
days, HAM is widely known in the commercial games industry. Also,
HAMlib is currently used in several commercial GBA Cartridges (e.g.
"Franklin the Turtle") - and therefore also has passed the Nintendo
quality lot check (version 2.8).
HAM's Mission:
- Create a GBA development kit that is trivially easy to set up - More so than Visual Studio.
- Tightly integrate the tool chain with helper applications.
- Make the kit simple and transparent to the end user, but flexible enough for power users.
- Work to high quality standards in terms of performance, memory footprint and stability
What's in the package:
- Full GCC based toolchain optimized for the GBA processor (ARM7TDMI)
- GNU Debugger with Insight GUI - Emulator<->debugger connection is prescripted for easy access
- Prescripted Makefile for all relevant output targets
(compilation, debugging, graphics conversion, sound conversion, sending
to development hardware, starting in emulator, etc). Easy access
through including into a simple user makefile.
- Emulators, Graphics converters, Sound Converters
- Extensive list of hardware macros for low level hardware access
- Fully documented user-library (HAMLib) for rapid game creation.
- Custom-designed, graphical IDE (Windows version only) VisualHAM
- Over 50 source code examples running out of the box on emulators and GBA hardware.
- Exe-Installer / Installer script (Windows / Linux)



HAMlib Rapid Development Library:
HAMlib has been the most complex part of the HAM development kit.
Maintained and updated for well over three years, it is one of the most
complete GBA library solutions available today. HAMlib is supplied free
of charge with the Freeware distribution of HAM. There are no licensing
restrictions as to its use, apart from removing the forced 3 second HAM
intro screen displayed on ROM startup.
HAMlib includes the following services:
- Tile mode based display support , including custom memory manager for Tile RAM (Maps and BG Tiles)
- Background scaling and rotation (aka Mode7) support in all possible hardware modes
- Sprite system with custom Sprite RAM memory manager. Vast range
of Sprite functions are available, including scaling, moving, rotation,
cloning, graphics updates, and much more.
- Interrupt Control functions for all hardware- and software supported Interrupts.
- Color Palette Management functions for both 16 / 256 color modes, both in Sprite and Background areas.
- Direct Sound control functions, including mixer.
- SRAM loading/saving for binary data streams and/or character data
- Control Pad management functions
- Window / Overlay / Alpha Blending support
- Text output system (onscreen debug / serial console output)
- On screen notification of critical system events (debug version only)
HAMlib licensing:
HAMlib is bundled with the Freeware HAM IDE, and can be used free
of charge for both non-commercial and commercial software. The
copyright notice and the HAM intro screen shown on ROM startup must not
be removed from the freeware version of HAMlib. Also, the Freeware
version of HAMlib is a "debug" version, which runs slightly slower than
the release builds, and also adds roughly 30kBytes of overhead in ROM
space.
Should you require a release build, you will need to register HAM.
The registered version of HAM includes the following benefits:
- Intro screen is not shown - nobody will note that you are using HAMlib
- In addition to a registered Debug library, you will also get a registered Release library
- Release library is ~20% smaller and ~10% faster (depends on functions used)
- A good feeling of supporting a long-maintained community project ;-)
The registered version is priced at only 29 US$ and is
delivered via EMail (the attachement will include the two registered
library files and installation instructions).
You can register right now via the
following online services:
Share-It (Credit Card, Direct Debit)
PayPal
Download HAM 2.80 Freeware Edition for Windows 2000/XP here


