Transition from HEL 1 to HEL 2 Library

A lot of things have changed in HEL 2 Library and I do not recommend to migrate to the new library when your project is nearly complete. If you start a new project, or have not done much yet, then use the new library!

In the past I always tried to hold HEL Library compatible with previous versions. That's really a good thing though, but I had to come up with a lot of workarounds for compatibility issues. HEL 2 Library does not have these workarounds anymore. Most Sub-Systems have been a bit redesigned to fit more into my vision of HEL. This includes renaming functions, removing functions which where only intended for the mentioned workarounds and structure the whole things (more) clearly.

A lot of functions have been removed, but the functionality itself is still the same or even more extended.

For the entire changed, please take a look at the Version History.

License

The License has been updated.

New header filename

The HEL 2 Library headerfile is called "hel2.h", in order to allow you to have the old HEL Library package installed beside the new one and compile your old sources. Thank to sumiguchi for this great idea!

New library filenames

The libraries have different filenames now. Advantage is this allowed to have both libraries in the library folder. If you want to switch between them, you don't need to copy the libraries anyround anymore, it can be done with just a makefile modification. See Installation and Library Overview for more info on this topic.

The new Debug-Message-Type selection

Debug-Message-Type selection is no longer made with a define in hel2.h. The Debug-Message-Type must be selected with hel_DebugSetMessageType instead.

Understanding functionnames

Most Sub-System's follow the same functioname pattern. It exists an Init, Quit, Create and Delete function.

If it helps you to see it a bit C++'ish, think of it like having a base class with the preceding methods and Sub-Systems just derive from it. The hel_ string is the namespace, Map the class and Init, Quit etc the methods of the class.

Some Sub-System's don't have a Create or Delete function, because there is nothing to create or delete. This applies for example for the Pad Functions.

Init Functions

You must call the Init function of the Sub-System in question before you use any other function from it. If you don't call Init, the program behaviour is undefined and it is very unlike that the program operates correctly.

Some Init functions expect an incoming parameter called pBuffer. This includes hel_ObjInit, hel_ObjRotScaleInit, hel_MapInit and hel_TileInit. The buffer is used for management of internal states of the corresponding Sub-System. Advantage is, if it is not allocated in the library, it does not waste memory when you don't use the corresponding Sub-System. Plus, you have even control over the memory location, where it is actually stored!. For example, if use store the buffer in IWRAM, you can achieve a little performance increase. The recommended memory location is EWRAM. The function documentation provides example code that shows how to initialize each of these Sub-Systems.

Quit Functions

The Quit function has been provided to uninitialize a Sub-System. It releases earlier created resources.

Create Functions

Create functions are intended to create a new item of the Sub-System. This can be a Map-System, Tile-System or whatever Sub-System's Create function you call.

Some Sub-System actually have only one item which they can work with and in this case the corresponding Create function has been left away.

Delete Functions

If you want to delete an earlier created item, you can do this with the Delete function of the Sub-System.

Map System

The Map-System became a facelift too.

You don't need to use the old "TMapScroll" thingy anymore. It's manageged internally now. You only need to pass the background number.

Coordinates have to be entirely specified in fixed point format now. See Fixed Point macros

I removed a huge amount of functions which where basically only workarounds for compability issues with previous versions of HEL. It uses entirely fixed point math now. Functions to explicitly enable or disable parallax scrolling went into the recycle-bin. The hel_MapScroll function expects the delta's in fixed point format now, which makes it a lot easier to use. The boundschecking mechanism has been extented, you can now specify a rectangle on the map which cannot crossed.

Object System

I included an own object manager in HEL v2, which is not based on HAM anymore. The new object manager is very fast, up to 70 times faster than the one found in HAM v2.8.

The only thing you must be very careful about, is to use only functions from one object manager, either HEL or HAM -- not both! If you mix calls to object functions from HEL and HAM, the program will probably behave unexpected.

Object attributes *and* graphic updates are shadowed internally to avoid screen tearing!

Special Effects System

HEL v2 also got an own Special Effects Sub-System which totally reminds to HAM, but the one in HEL has its attributes shadowed to avoid screen tearing. Because the attributes are shadowed and should be transmitted to hardware during VBL, you cannot use it to perform special effects individually per scanline.

Splash System

The Splash-System has been changedtoo. The timings have to be specified in milliseconds now, not in frames anymore. This makes much more sense imo. Support for mode 3 and 5 have been removed. Fade In- and -Out colors can be freely chosen now.

Timer System

The old Timer-System it out. It was not completed in the old versions and I don't want to have incomplete features in HEL anymore. Oh well, I don't feel like I want to complete it now ;)

Palette System

The Palette-System has only change very little. A few functions which were available for backgrounds were not for object palettes. Now both have the same set of functions. The blending functions have been replaced with one from Cearn, which is unbelievable fast.

Joypad System

Previous versions had the hel_Pad variable to access the current joypad state, this one does not exist anymore. It is called hel_PadQuery and returns a pointer to the pad information now. Please see demos and hel_PadQuery for example code.
Generated on Sat Aug 12 13:54:03 2006 for HEL 2 Library by  doxygen 1.4.7