- 2001/12/21 ----- RELEASED HAM 1.40
- 2001/11/18 ADDED Added debugger solutions to FAQ
- 2001/12/30 FIXED Timer registers bug fixes, thanks to Costis
- 2002/01/01 FIXED Fixed installer for Windows 98 thanks to Thyng
- 2002/01/01 ADDED Revamped this README to be more helpful
- 2002/01/01 FIXED Fixed startham.bat to work in Windows9x
- 2002/01/01 ADDED Added descriptive text into startham.bat
- 2002/01/01 ----- RELEASED HAM 1.40sr1
- 2002/01/05 FIXED Fixed TIMXCOUNT register docs, thx Costis
- 2002/01/15 FIXED fixed CONTROL_ defines into HAM_ defines, cleanup of all HAM control defines,
all centralized at top of mygba.h
- 2002/01/15 ADDED Added documentation for each HAM_ define in mygba.h
- 2002/01/15 ADDED Added installation help to FAQ
- 2002/01/20 FIXED fixed TOOL_OAM_OBJ_SET_XPOS masking from 8->9 bits
- 2002/01/20 FIXED fixed bad bug in M_BG<x>SCR<x/y> macros, didn't properly work on GBA HW:
register is not readable. now fixed.
- 2002/01/20 FIXED replaced old style control macros with HAM_ macros in mygba_sys.c
- 2002/01/20 FIXED MULTIBOOT define now has a value, for C++ compatibility
- 2002/01/27 ADDED HAMlib coding, and subsequent removal of old sys structs, has begun.
Flexible Text output improvements are the first main goal for HAMlib.
- 2002/01/27 ADDED TOOL_DMA defines added to make it easier using DMA in HAM you should use this
for simplicity. Please read the comments.
- 2002/01/27 ADDED M_DMAXCNT_TRANSFER_SET(mode) added to all DMA channels
- 2002/01/27 ADDED M_DMA0CNT_STARTAT_SET(timing) added to all DMA channels
- 2002/01/27 FIXED M_DMAXSRC/DST_SET(adr) had a parenthesis problem, fixed. funny nobody noticed :)
- 2002/01/27 ADDED REAL printf functionality right on your GBA screen! ham_DrawText does it ;-)
- 2002/01/27 ADDED added F_DISCNT_BGMODE_GET function, in case you wondered :)
- 2002/01/28 ADDED added excellent ASSERT macro, based on SGADE's
- 2002/01/28 ADDED added a few new useful memory access defines suchas MEM_PAL_BG_16(x)
- 2002/01/28 ADDED added a selectable extension for the rom image name to master.mak ... now
defaults to .gba, which is more common.
- 2002/01/30 ADDED Added a BG memory manager
- 2002/01/30 ADDED Added a BG Tile allocation manager
- 2002/01/30 ADDED Added a BG Map Allocation manager
- 2002/01/30 ADDED Changes the bg_info structure to better integrate with the new allocation managers.
- 2002/02/02 ADDED Added debugger support for BG Mem Allocation manager, you can now get an
Overview of Allocated blocks
- 2002/02/02 FIXED Moved the debugger into HAMlib
- 2002/02/02 FIXED Moved the old mygba_sys tools into HAMlib
- 2002/02/02 ADDED Useful DEFINE to get the memory adress of a HAM BG block Essentially the same
macro as getting the SBB
- 2002/02/02 ADDED Major objective reached: Brought down the .o's needed to compile a HAM prog
to crt0,main and HAMlib, no more mygba_sys mess.
- 2002/02/04 ADDED Added a PutTile function that will, depending on the bg struct it is run on,
detect the relative position of the tileset to the CBB, and calc the correct
tilenumber for you!
- 2002/02/04 FIXED All major issues with the VRAM memory manager have been solved, i think. It works great here.
- 2002/02/05 FIXED The ham_PutTile routine now works in all bgmodes and all bg types. this means,
whether you are putting tiles on a rot bg in mode1 ort a text bg in mode 0, the
routine will sort out the placement and data format.
- 2002/02/05 FIXED Due to the last mentioned fix the ham text display system now works on all BGs in
all tile BG modes
- 2002/02/05 ADDED Added a few asserts checking if your program makes sense into the tile functions.
You ll get shouted at by HAM if you mess up ;)
- 2002/02/05 FIXED Changed all BG rotation macros to just accept a value, the idea of converting
floats in the macro proved too slow and inflexible.
- 2002/02/05 ADDED Added some more attributes to the bg_info structure for scrolling.
- 2002/02/05 ADDED A whole range of new rotation macros R_BGXROT*. Added for HAMlib.
- 2002/02/06 ADDED The ham_BgInit function now checks if the structure was set up correctly
(map and tileset must be attached to bg struct)
- 2002/02/06 FIXED added stdarg.h and stdlib.h to mygba.h, as they are required by HAMlib and
generally it makes sense for them to be there.
- 2002/02/06 FIXED HAMlib now compiles with 0 warnings :)
- 2002/02/09 ADDED added new makefile targets to all samples called "send" and "vba" now just type
"nmake vba" and immediately see the results in the emu.
- 2002/02/09 ADDED added VBA SDL 0.8 to the HAM distribution. thanks for permission to the author, Forgotten!
- 2002/02/09 ADDED HAMlib BG functionality complete for initial v2 release.
- 2002/02/09 ADDED Several page layout fixes to dbg_Show machine monitor. Included tracking of HAM OBJ
manager data.
- 2002/02/10 FIXED Fixed bad bug in F_DISPCNT_BGMODE_GET
- 2002/02/10 ADDED Support for all map sizes
- 2002/02/10 ADDED Full blown hamlib sprite manager (!). Works in all BGModes. Sprite
cloning now also works.
- 2002/02/10 FIXED tons of little bugs in mygba.h, again.
- 2002/02/12 FIXED last relative paths removed from makefile's. when HAMDIR is set,
you should be able to compile whereever.
- 2002/02/13 ADDED Added installer support for the current HAMv2 including the
startup scripts. Beta is near.
- 2002/02/15 FIXED Fixed a nasty memory deallocation bug in the obj ram manager. Now
uses reference counting for obj vram blocks, much safer. Overhead
is 1024byte more from now on.
- 2002/02/15 FIXED Another nasty one fixed: Whenever you used ASSERT (even if it did
not fire off) your Interrupts were turned off :) fixed.
- 2002/02/18 ----- Released HAM v2 (and followup sr1 release)
- 2002/02/20 FIXED Converted all makefiles and internal build logic to use make
nmake is gone for good.
- 2002/02/23 FIXED Fixed sprite 0 bug, now all 128 sprites can be used.
- 2002/02/25 FIXED Fixed a few installer glitches
- 2002/02/25 FIXED Made this complete distribution GPL compliant
- 2002/02/25 CHANGE Changed HAM license, HAM is now freeware for ALL uses
- 2002/02/25 ADDED Added freeware notice
- 2002/02/25 ADDED Added some sprite modification functions
- 2002/02/25 ADDED Added help pages for the sprite functions, and fixed some help pages
- 2002/02/26 ----- Released HAM v2.1
- 2002/03/02 FIXED Fixed a really nasty HAMlib Map fragment bug that used to choke
when the fragment rectangle was smaller than the fragment. Thx to
Adalbert for the tip.
- 2002/03/02 FIXED Another really nasty one fixed, this time in ham_InitTileSet. You
can now init TileSets bigger than 16kb, if there is memory left
for them (64kb maximum)
- 2002/03/03 FIXED Due to the fix before, I noticed the DMA used in ham_InitTileSet
could only transfer max 0x8000 bytes. Fixed to 0x10000, which will
do for all tile Loads.
- 2002/03/03 CHANGE Changed number of parameters of ham_InitTileSet to allow auto aligning
of a TileSet to a CBB boundary. See the HAMlib reference for more info.
- 2002/03/04 FIXED Fixed even one more nasty bug... the OAM system always forgot about
the last sprite in your sprite chain... lame one, sorry. Now works. Thx
to Andrea Beretta for the heads up.
- 2002/03/06 ----- Released HAM registered beta 2.15
- 2002/03/07 FIXED Made various memory access macros more safe (parenth. fixes)
- 2002/03/07 ADDED Added two new sprite functions: ham_SetObjVisible and the much
requested ham_UpdateObjGfx, which allows to DMA new gfx into
a HAMlib sprite.
- 2002/03/07 ADDED Added a new field (non intrusive to existing code) into the
ham_obj structure called "active". If you set this to 0, your
sprite is not copied into OAM, and therefore is not visible.
setting back to 1 re-enables the sprite.
- 2002/03/07 ADDED Added a new sample source that shows how to do animated sprites.
- 2002/03/07 ADDED Added another new sample source showing big map scrolling
- 2002/03/07 FIXED Fixed the sprite positions to off screen as default to prevent
sprites obscuring block 0 on the display. All sprites now
init during system setup to 241,241. Also, during operation,
an unused OAM entry now defaults to these coordinates.
- 2002/03/08 ----- Released HAM 2.15 final
- 2002/03/10 FIXED Fixed a really stupid bug in ham_UpdateObjGfx. It did not work with
all the different sprite sizes. Now it should. Thanks to jillgof
and fed_tts for letting me know.
- 2002/03/10 ADDED Added range checking for ham_SetObjX / Y , so that passed u16's can
no more garble the sprite data if too big.
- 2002/03/10 ----- Released HAMlib 2.16 registered bugfix version
- 2002/03/11 ----- Released HAMlib 2.16 bugfix version
- 2002/03/11 ADDED Added full set of DMA3 defines, including tool defines for DMA3
DMA is now 100% implemented, finally.
- 2002/03/15 ADDED Added a more meaningful target for people that want to use the
MBV2 to flash their Carts, and then debug using MBV2 console. The
make flambv2 target now creates the ROM, fixes the header, sends
it, and then opens the MBV2 debug console.
- 2002/03/15 FIXED ...well not really fixed, but i enlarged the Stack frame a bit, it
is now 100 bytes larger. Some apps tended to flood the user stack
because the interrupt stack was too small. Thanks to fed_tts
- 2002/03/15 FIXED Removed a few unnecessary globals. HAMlib RAM footprint down
another 100 bytes.
- 2002/03/15 FIXED Refined ham_CreateObj error checking. Now detects correctly
if prohibited obj_shape is passed.
- 2002/03/15 FIXED Fixed a bad bug in the VRAM manager. The problem was that you
could not reserve space for a single tile only. Fixed and verified.
Thanks to Goffredo for the hint.
- 2002/03/15 ADDED Added a power rotation / scaling function with great control over
all zooming/scrolling parameters called ham_RotBgEx
- 2002/03/16 ADDED Added two new example sources, one with 2 layer BG rotation, and
one showing how to use ham_RotBgEx. IMHO the most clear example
on rotation/scaling ever ;) I finally understand it now hehe
- 2002/03/16 FIXED fixed bug in ham_InitBg documentation. Thx to hamdev@ for the hint.
- 2002/03/18 ADDED Finally, introduced Sprite rotation service functions, along with
another new code sample named objrot ... see the source and the
ham_RotObj* functions for more information.
- 2002/03/18 FIXED Fixed a little bug in ham_CopyObjToOAM, now it only resets the
actual unused sprites to an offscreen location, rather than every
rotation set and so on.
- 2002/03/18 ADDED INTERNAL: Added a automatic testsuite to catch HAMlib bugs easier.
- 2002/03/18 ADDED Added documentation for all this new crap.
- 2002/03/18 ----- Released HAM 2.18 registered
- 2002/03/19 ----- Released HAM 2.18 freeware
- 2002/03/18 FIXED ARGH, wish I would have noticed this one earlier. ham_DeInitMap
and Tile actually tried to deallocate OBJ RAM :( now fixed.
- 2002/03/19 ----- Released HAMlib 2.18a
- 2002/03/19 FIXED ham_DeleteObj could not delete Obj nr 0 once created. Fixed.
- 2002/03/25 WIP Began working on sound support code in HAMlib. Do NOT use the
sound functions in HAMlib yet, as they will NOT work until further
notice.
- 2002/03/25 CHANGE renamed the SNDCNT2 register and macros to SNDCNT3, since i
need to make room for the real SNDCNT2 (0x82), SNDCNT3 is at 0x84
- 2002/03/25 ADDED Added the new Directsound control macros M_SNDCNT2*, thanks a ton to
Belogic.com's excellent reference!
- 2002/03/25 ADDED Added new DMA1/2 timing DMA_STARTAT_SOUND_FIFO
- 2002/03/25 ADDED Added register declarations for Direct Sound FIFO buffers R_SNDFIFO*
- 2002/03/25 ADDED Added more powerful DMA TOOL_ defines that allow repeat and
in/decrement controls.
- 2002/03/20 FIXED Memory deallocation of cloned objects was wrong, it actually did not
allow to deallocate a clone because the memory of the original is already
freed. Fixed in memory manager by just exiting if this is found.
- 2002/04/06 ADDED New function! ham_GetMapTile has been introduced. See the docs for
further information.
- 2002/04/06 FIXED The last two GFX functions that were still using DMA1 for data transfer
now (correctly) use DMA3, ham_UpdateObjGfx and the palette loading
functions. This way, they will not interfere with sound FIFO operations.
- 2002/04/07 ADDED Added F_DISCNT_BUFSEL_GET and a few other macros there.
- 2002/04/07 ADDED Added Eloists GBA.h header defines, for the ones that like them
better than HAMs (i do, however think you should use the HAM scheme
since it is more than a list of registers, this is just to make
porting of devkitadvance sources easier.) Included into mygba.h
- 2002/04/07 FIXED Fixed a performance problem in the core, results in a nice speedup
when using the registered release version. Another reason to register ;)
Only the NON-Asserting version of HAMlib got faster.
- 2002/04/08 FIXED Fixed 8*16 and 16*8 sprite bug, only half the sprite was loaded with
ham_CreateObj
- 2002/04/08 WIP Added, on public request a bitmap mode PlotPixel and PlotLine function.
Works in all Bitmap modes (3,4,5) . See the documentation for details.
- 2002/04/08 WIP Added Sprite sorting function called ham_SetObjBefore. Pretty
early, but they should work.
Let me know if you have any problems.
- 2002/04/12 ADDED Added / changed a lot of documentation to better help users.
- 2002/04/12 WIP Added new troubleshooting section to this document.
- 2002/04/12 FIXED Fixed memory address entry in debugger to accept input with less
than 8 numbers. Also unified input routines for less space, more
reliability. Really, if you don't have a MBV2, you need one now
to use this feature, it rocks.
- 2002/04/13 FIXED Fixed obj reference count display in debugger object memory viewer.
- 2002/04/13 ADDED Added TOOL_INT_DISABLE_START and END macros. With these you can
flag an area of code to never be interrupted, even if interrupts
are scheduled. Automatically recovers existing interrupts after
flagged section. See mygba.h for details.
- 2002/04/14 ADDED Added a switch that allows to invoke the debugger (MBV2 dbg_Show)
instead of showing the ASSERTion screen. Just set
_hamlib_assert_to_dbgshow=1; after ham_Init() . This allows to
have a look at the memory and other stuff when your code fails,
instead of just halting the GBA.
- 2002/04/15 ----- Released HAM v2.20
- 2002/04/17 FIXED Fixed wrong addresses of R_TIM1CNT and R_TIM2CNT. Thanks Adalbert!
- 2002/04/17 FIXED Fixed all the shitty double escaped backslashes to the much cleaner
forward slashing, using /cygdrive/
- 2002/04/17 FIXED The fix before here also resolved the long wait time some people
experienced before the compiler could kick off. You will need to replace
the backslashes in your makefiles to forward slashes.
- 2002/04/17 ADDED Updated VisualBoyAdvance to 0.9a SDL
- 2002/04/17 ADDED Added an autoreset to the flambv2 target, saves you some seconds...
- 2002/04/17 FIXED Fixed a OBJ memory manager bug that only happened in the debug version
of HAMlib. Thanks to Adalbert for catching it!
- 2002/04/17 ADDED Some of the crashbug reports were not really crash bugs, but I forgot
to mention that you now have to enable multiple interrupts in crt0.s
However, I now changed the standard crt0.s makefile target to take
a single, common crt0.s for all projects. If you REALLY need to touch
this, you ll have to create a different target. It will be much more
user friendly that way i guess.
- 2002/04/17 FIXED Finally, I think the crash bug is found. It happened when you deleted
all OBJs and then used ham_CopyObjToOAM. Please let me know if you
still have problems.
- 2002/04/18 FIXED Several fixes to the fault tolerance/stability of ham_SetObjBefore
- 2002/04/18 ADDED MAJOR: Added a complete working Source level debugger, GDB to HAM
- 2002/04/18 ADDED Added some troubleshooting items for the new features.
- 2002/04/18 ----- Released HAM 2.30
- 2002/04/30 FIXED Fixed the Installation Troubles Help section to comply with 2.30
- 2002/05/12 ADDED Added a note how to fix the "badly punctuated parameter list" bug.
- 2002/05/12 ADDED Upgraded the complete HAM toolchain to GCC 3.0.4 / Newlib 1.10.
- 2002/05/12 ADDED Added proper interworking support to HAM libs. Actually, going to
gcc-arm/lib, it is now up to you which libs you want. ARM, Thumb,
and interwork are available, just copy them into gcc-arm/lib.
- 2002/05/12 ADDED Full C++ support with the new compiler suite. Just name your source
file as ".cpp" and you will be able to compile C++ source code!
- 2002/05/12 ADDED As a side effect of this, your AgbMain functions have to be renamed
to main.
- 2002/05/12 ADDED C++ standard libraries have been added and can be included. They are
NOT changed by me for GBA, so some of them are useless.
- 2002/05/12 FIXED The Text system font was, dumbass me, loaded into IWRAM. Now it
stays in ROM, and saves 3k of precious IWRAM.
- 2002/05/17 FIXED Fixed a glitch in the DMA_STARTAT defines, modes 2 and 3 were broken.
- 2002/05/19 ADDED Added a new parameter to ham_CreateObj called dbl_size and updated
the relevant documentation.
- 2002/05/19 FIXED Improved GDB makefile target. More in line with Linux ports, faster,
less hacks. Users should not note a difference besides invokation
speed increases.
- 2002/05/19 ADDED Upgraded kit to VBA 0.9.1 and gfx2gba 0.10 final
- 2002/05/29 FIXED ham_CreateObj DMAed double the RAM needed for OBJs. Thanks hamdev@ !
- 2002/05/29 ADDED Added 16col Palette selection parameter to ham_CreateObj
- 2002/05/30 ADDED Added automatic ROM header correction to standard targets.
- 2002/05/30 ADDED Added 16col OBJ support to HAM OBJ memory manager
- 2002/05/30 ADDED Added new hamlib function ham_LoadBGPal16 and ham_LoadObjPal16 for
loading 16 colore palettes into memory
- 2002/05/30 ADDED Fixed the ham_UpdateObjGfx function to a) be faster and use 32 bit
DMA, and also to be 16color support aware, depending on the
sprites settings.
- 2002/05/31 FIXED DISSTAT_VCNT_SET and GET macros had a nasty shifting bug. Thanks to
Adrian Jackson for letting me know
- 2002/06/03 FIXED Fixed the compiler setup to always generate O1 optimized code, it
works best in terms of speed with HAMlib.
- 2002/06/05 ADDED Final HAMlib Direct Sound framework done, function list finalised
- 2002/06/07 ADDED Improved the mixer to accept any bitrate, as well as play any sample
rate and stretch.
- 2002/06/08 FIXED Some cleanups in the startup code of HAMlib
- 2002/06/11 FIXED QAed most new functionality except 16 color mode. Fixes across the
board. Looks stable
- 2002/06/11 ADDED Added new Makefile targets that will convert a .WAV file into an
.o file that is getting linked just by adding it to the list of
objects to be compiled in the Makefile.
- 2002/06/12 ADDED Added documentation for all the new stuff
- 2002/06/12 ADDED Added more troubleshooting sections
- 2002/06/12 ----- Released HAM 2.4
- 2002/08/xx ADDED Added ham_VBAText function
- 2002/08/xx ADDED Added ham_SetObjXY function
- 2002/08/xx ADDED Added ham_GetObjPal16 function
- 2002/08/xx ADDED Added ham_UpdateObjPal16 function
- 2002/08/xx ADDED Added ham_GetObjGfxSlot function
- 2002/08/xx ADDED Added ham_SetObjGfxSlot function
- 2002/08/xx FIXED Fixed all the bugs (hopefully) in the floating point defines in mygba.h
- 2002/08/xx ADDED Rewrote the backend build logic to support multiple Operating Systems
- 2002/08/xx ADDED Added/wrote tools for Linux support
- 2002/08/xx ADDED Created shell scripts for compiler generation/updating
- 2002/08/xx ADDED Rewrote major parts of the Windows installer to cope with the new build logic
- 2002/08/xx FIXED Fixed a nasty memory leak in ham_DeleteObj
- 2002/08/xx FIXED Fixed a glitch in 16col palette loading functions
- 2002/08/xx FIXED Fixed VFLIP/HFLIP bug in ham_CreateObj
- 2002/09/09 ----- Released HAM 2.5
- 2002/09/15 ADDED Working Krawall support. Included tools and freeware libs into HAM makefile targets
- 2002/09/20 ADDED Added support for both free and registered Krawall tool chains
- 2002/10/15 ADDED Completely rewrote HAM documentation, now 100% function coverage
- 2002/10/23 FIXED Speeded up ham_PutPixel() by 100%
- 2002/10/28 FIXED Fixed a Linked list problem for OBJ in ham_SetObjBefore() that
occured when moving the first list element multiple times.
- 2002/10/30 FIXED Fixed a bug in the runme compiler builder edition that incorrectly
converted a DOS path to the corresponding GCC UNIX compilation path.
- 2002/10/30 FIXED Converted a few functions to use DMA3 instead of DMA0. All HAMlib DMA use
should now only need DMA3.
- 2002/11/05 ADDED Improved Krawall build logic, displaying additional information for user.
- 2002/11/05 FIXED Fixed a rotation system bug, which caused the subsystem to consume 2k of IWRAM.
- 2002/12/09 FIXED Improved the Performance of almost the complete Tile / Map System by 50% (!)
together with Peter Schraut of VHAM fame.
- 2002/12/15 ADDED Added several new Palette and Obj Functions
- 2002/12/15 FIXED Fixed a few setup scripts to avoid GDB debugger to behave weird when stepping
through code. If a debugger version of your GBA ROM are built, they are now
using GCC optimization level 0, if not, its Level 2.
- 2002/12/20 ADDED Added HAM BG/OBJ FX control functions
- 2002/12/22 ADDED Added BG and OBJ reset functions.
- 2002/12/22 FIXED Fixed the performance of several OBJ related functions. The overall OBJ system
should be quite a bit faster. ham_CopyObjToOAM speeded up 50%. Again contributions
by Peter Schraut, thanks!
- 2002/12/23 ----- Released HAM 2.6
- Version history deprecated as of 2.6. Please check http://www.ngine.de to see whats new in recent HAM releases.