Allegro.cc - Online Community

Allegro.cc Forums » Allegro Development » Allegro 4.3.0 released

This thread is locked; no one can reply to it. rss feed Print
 1   2   3   4 
Allegro 4.3.0 released
Evert
Member #794
November 2000
avatar

Topic says it all, really. :)

This is the first release in the 4.3 series of WIPs that will eventually lead to Allegro 5.0, with a new cleaner API, al_ prefixes, GUI and the like in addons and more. Needless to say there is a long way to go still, and this release is probably not yet suitable for development. Some new features are only partially implemented so far.
However, if you feel like getting a first taste or want to help out by seeing if things compile and run (old code should still compile and run through the compatibility layer), then check it out!
You can grab the release from the download page on SourceForge.
Please note that the documentation and examples have not been updated yet.

For reference, here is a list of new functions and the header files where you can find their prototypes:

  • al_current_time

  • al_rest

  • al_create_video_bitmap

  • al_create_system_bitmap

  • al_scroll_display

  • al_request_scroll

  • al_poll_scroll

  • al_show_video_bitmap

  • al_request_video_bitmap

  • al_enable_triple_buffer

  • al_create_display

  • al_set_update_method

  • al_destroy_display

  • al_flip_display

  • al_get_buffer

  • al_get_update_method

  • al_enable_vsync

  • al_disable_vsync

  • al_toggle_vsync

  • al_vsync_is_enabled

  • al_blit

  • al_blit_region

  • al_blit_scaled

  • al_event_source_set_mask

  • al_event_source_mask

  • al_create_event_queue

  • al_destroy_event_queue

  • al_register_event_source

  • al_unregister_event_source

  • al_event_queue_is_empty

  • al_get_next_event

  • al_peek_next_event

  • al_drop_next_event

  • al_flush_event_queue

  • al_wait_for_event

  • al_wait_for_specific_event

  • al_install_joystick

  • al_uninstall_joystick

  • al_num_joysticks

  • al_get_joystick

  • al_release_joystick

  • al_joystick_name

  • al_joystick_num_sticks

  • al_joystick_stick_flags

  • al_joystick_stick_name

  • al_joystick_num_axes

  • al_joystick_axis_name

  • al_joystick_button_name

  • al_get_joystick_state

  • al_install_keyboard

  • al_uninstall_keyboard

  • al_get_keyboard

  • al_set_keyboard_leds

  • al_keycode_to_name

  • al_get_keyboard_state

  • al_key_down

  • al_install_timer

  • al_uninstall_timer

  • al_start_timer

  • al_stop_timer

  • al_timer_is_started

  • al_timer_get_speed

  • al_timer_set_speed

  • al_timer_get_count

  • al_timer_set_count

Those interested in such things may also want to look at allegro/src/compat, which contains the compatibility layer.

the Release notes said:

This release introduces a few new subsystems. We have an event system, a
new keyboard API, a new joystick API, a new timer API, and the start of a
new graphics API. All of these are subject to change, as is usual for
a WIP.

We are maintaining a certain level of source compatibility with the 4.2
API. If it's easy to maintain compatibility then we do it, otherwise
compatibility is dropped. Obscure features are more likely to be dropped.

This release has had minimal testing on Linux/x86, Windows/x86 (MinGW) and
Windows/x86 (MSVC). It seems to work on some Linux/x86-64 machines also.
Other ports are broken or untested.

The new functions are as follows (in no particular order). No real
documentation exists at the moment but interesting header files
are: altime.h, display.h, draw.h, events.h, joystick.h, keyboard.h,
timer.h.

Enjoy!

Richard Phipps
Member #1,632
November 2001
avatar

Woohooo!!

I'll be hoping that this leads to a version where some keyboard issues are gone. :)

Great work guys! :D

Bob
Free Market Evangelist
September 2000
avatar

How did the vtables change? Is there a plan for making AGL work with AL 4.3.x?

--
- Bob
[ -- All my signature links are 404 -- ]

LennyLen
Member #5,313
December 2004
avatar

Congrats :)

Neil Walker
Member #210
April 2000
avatar

Great show. Have you managed to change round the function parameters so they are all the same, e.g. al_blit to match draw_sprite?

Neil.
MAME Cabinet Blog / AXL LIBRARY (a games framework) / AXL Documentation and Tutorial

wii:0356-1384-6687-2022, kart:3308-4806-6002. XBOX:chucklepie

Thomas Fjellstrom
Member #476
June 2000
avatar

Quote:

Is there a plan for making AGL work with AL 4.3.x?

One would hope that it gets merged into 4.3 at some point. Hopefully that would bring more eyes to AllegroGL and keeping it synced with allegro.

--
Thomas Fjellstrom - [website] - [email] - [Allegro Wiki] - [Allegro TODO]
"If you can't think of a better solution, don't try to make a better solution." -- weapon_S
"The less evidence we have for what we believe is certain, the more violently we defend beliefs against those who don't agree" -- https://twitter.com/neiltyson/status/592870205409353730

Carrus85
Member #2,633
August 2002
avatar

Some suggestions about the API that some A.ccers and I were discussing on IRC:

  • There needs to be some consistancy with the naming api. Some of the suggestions that have been floating around IRC are namespace_module_action (or, if there are multiple levels, they are listed in increasing specifity.) So, for example,

  • Module installation/uninstallation:

  • Setters for module-wide variables: (VSYNC EXAMPLE)

  • Getters for module-wide variables

I know the API isn't complete, but I thought I should put these ideas up for some discussion.

Matthew Leverton
Supreme Loser
January 1999
avatar

It seems to follow a consistent pattern of: al_module_verb_noun, where module is optional. The noun-verb versions, while maybe more "orderly," aren't as nice to type or say.

A J
Member #3,025
December 2002
avatar

I like alot of these ideas..
Its really making it more OO, but focusing on the object first, then the action.

It would also reduce the number of functions, which is a good idea.. allegro can seem awfully messy at times, with so many functions.

___________________________
The more you talk, the more AJ is right. - ML

Carrus85
Member #2,633
August 2002
avatar

A J: Exactly. Those were some of the ideas behind it. The other goal was to attempt to make the code as potentially modular as possible, while retaining a common interface.

Then again, it is my opinion that as much as possible should be put into addons (whether or not these addons are distributed with standard distribution is a non-issue). From a design standpoint, streamlining the seams in the library is advantegous because it reduces undesired conflicts, and allows us to update addons independantly of the "core" library with minimal breaks. I mean, pretty much all (if not all) of the input, graphics, geometric primatives, audio, config, datafile, gui, 3d, fixed point, etc. routines could be seperated from the core, allowing updates of them individually (to a certain point, at least) without requiring all of the other modules to be updated.

This is one reason (the main reason), IMHO, that the current allegro release cycle is at least a year between major versions; no matter the changes to the module, you have to wait for the updates on all of the other modules to be completed in order to have the library rolled up to the next stable version. I might be wrong, but this is my opinion. Through better modularity you also gain the ability to completely exclude portions of the library that are not being used. Don't need FOO support? Don't #include them, link against them, al_install(ALA_FOO) (ALeggro Addon FOO), whatever.

Matthew Leverton
Supreme Loser
January 1999
avatar

The drawback to addons is that they tend to get neglected. For that reason, I think official addons are the way to go, even for things as simple as loading bitmaps.

However, keep in mind that the complexity of support goes through the roof when you have to deal with a dozen shared DLLs or whatever. That's the main problem to consider.

* VASKO *
Member #7,423
July 2006
avatar

I am sorry for my "critical" post, but I still have troubles in compiling Allegro with DJGPP under DOS. Now I trying lastest Allegro 4.3.0 from SVN (revision 7395) and lastest DJGPP packets:
djdev 2.03
gcc 4.1.0
g++ 4.1.0
make 3.79.1
binutils 2.16.1
Texinfo 4.8
sed 4.1.5
But unfortunately I get error and warning messages again. :(
For this time they are:
==============================================================================
In file included from ./include/allegro/internal/alconfig.h:65,
from ./include/allegro/base.h:39,
from ./include/allegro.h:25,
from src/allegro.c:23:
./include/allegro/platform/astdbool.h:29: error: two or more data types in declaration specifiers
./include/allegro/platform/astdbool.h:29: warning: useless type name in empty declaration
make.exe: *** [obj/djgpp/alleg/allegro.o] Error 1
==============================================================================
Can anybody help me to build any version of Allegro without any error or warning messages at last? Thanks a lot.

Peter Wang
Member #23
April 2000

Quote:

I might be wrong, but this is my opinion.

No, it just doesn't happen that way. Development is slow because we don't have enough people and time.

In response to djgpp question: 4.3.0 doesn't work on djgpp, at all. Nor on BeOS or QNX.

Izual
Member #2,756
September 2002
avatar

Weeee. I'm gonna test it right away. :)

Carrus85
Member #2,633
August 2002
avatar

Quote:

No, it just doesn't happen that way. Development is slow because we don't have enough people and time.

Well, I guess I just thought updating a few smaller addon APIs independantly from one monolithic API would be a bit easier, especially because we have few developers on the project. :-/

Peter Wang
Member #23
April 2000

Quote:

Well, I guess I just thought updating a few smaller addon APIs independantly from one monolithic API would be a bit easier

When you state it in such terms, of course the "independent" addons are going to be viewed in a better light. But if they aren't really independent there's actually more work involved because now you have to maintain an unofficial interface as well. Consider AllegroGL and what they have to go through.

Bob
Free Market Evangelist
September 2000
avatar

So about my original question: What happened to the VTABLEs? How does this affect AGL?

--
- Bob
[ -- All my signature links are 404 -- ]

Izual
Member #2,756
September 2002
avatar

In MINGW i had to copy some include files manually, but its just minor thing.
Except that, it work good for now, thanks a lot for this release :D

Peter Wang
Member #23
April 2000

Bob, I will check when I get home.

But even if AGL works with 4.3.0, it likely won't work for long after that. I think there is no point making AGL work with 4.3 if we're going to integrate the functionality. I think the best thing to do is just to merge AGL code into 4.3 and take out what we don't like later, rather than bringing in bits and pieces. Also, AllegroGL API compatibility would be nice but treated as less essential than 4.2 API compatibility (since there are far fewer AGL programs).

Izual: which ones?

Izual
Member #2,756
September 2002
avatar

It turned out to be just one (first time i copied all files that wasn't there >.<)

allegro\platform\astdbool.h

Bob
Free Market Evangelist
September 2000
avatar

Quote:

Also, AllegroGL API compatibility would be nice but treated as less essential than 4.2 API compatibility

Indeed. If we break AGL API compatibility, then we have a good chance of fixing a lot of the existing flaws.

--
- Bob
[ -- All my signature links are 404 -- ]

Evert
Member #794
November 2000
avatar

Quote:

There needs to be some consistancy with the naming api.

How is it not consistent?

Quote:

al_create_bitmap
al_destroy_bitmap

becomes

al_bitmap_create
al_bitmap_destroy

Ack!
Am I really the only one who finds the latter completely backward? The first reads more or less like natural language, afterall, you say `create me a bitmap', not `a bitmap create for me', right?
I understand that the latter reads more like bitmap.create(), which I personally don't find a convincing argument because that reads equally unnatural.

Quote:

Have you managed to change round the function parameters so they are all the same, e.g. al_blit to match draw_sprite?

Have a look at al_blit() and your question will be answered.
(Which reminds me, there was some discussion for putting the flags as the first parameter; after playing around with that, I find that I like the idea and it does feel more natural. Did we reach a consensus when discussing this?)

Quote:

it is my opinion that as much as possible should be put into addons

That's the idea. Not in the least so that a change to the graphics driver doesn't affect the GUI (say), or such that programmes don't pull in all code.
Takes time though, so patience!

Quote:

I might be wrong, but this is my opinion.

You are indeed wrong, and it's not clear to me how you can have an opinion on something that is falsifiable. ;)
As Peter said, the problem is workload. We all have work and lives outside from work and programming. I seriously hope no one is willing to compromise their social life for working on Allegro; that means, however, that things sometimes go a bit slower than one would want. In addition, doing an Allegro release is more work than just tar -cvfz allegro.tar.gz allegro/*. The directory tree has to be cleaned, pending patches have to be commited, the result has to be tested (more so for stable versions than for WIP releases), the change log and credits need to be updated, packages need to be made for Windows and *nix and uploaded, an announcement has to be written and posted. This is all rather tedious and when taken together, time consuming as well.

Quote:

What happened to the VTABLEs?

I don't think the graphic VTABLEs have cchanged at all, which means that the current display API is sitting on the old drivers, that don't really accomodate the new API nicely. So that will have to be changed.
Anyway, merging AllegroGL with Allegro 4.3 should take care of that problem.

Peter Wang
Member #23
April 2000

Quote:

I don't think the graphic VTABLEs have cchanged at all,

Confirmed. There are exactly zero differences between include/allegro/gfx.h in 4.2.1 (SVN) and 4.3.0.

However, the AGL (SVN) examples tend to crash with 4.3.0, at least on X. I haven't investigated (and won't).

Jerome C
Member #3,706
July 2003

Quote:

al_create_bitmap
al_destroy_bitmap

becomes

al_bitmap_create
al_bitmap_destroy

Evert said:

Ack!
Am I really the only one who finds the latter completely backward? The first reads more or less like natural language, afterall, you say `create me a bitmap', not `a bitmap create for me', right?

Unless of course you're Yoda or something ;D But yes, I like it the way it is. It sounds exactly how you'd actually say it.

Richard Phipps
Member #1,632
November 2001
avatar

Can I just clarify about merging AllegroGL and Allegro?

I'm currently using OpenLayer and pretty much all primitives, drawing and images are done directly with OpenLayer. I think I'm only using Allegro itself for the mouse, keyboard and sound code.

Since 4.3.0 is going to break with old versions, would it not be worthwhile cosidering using a similar DirectX / OpenGL route for primitives and images? Or at least providing a way to compile the lib without the Bitmap, Palette and Primitive code..

This way people could use 4.2.0 for traditional methods and the new allegro for totally hardware accelerated coding.

Personally after using OpenLayer I don't see any need to go back to using software gfx apart from for compatability reasons.

:)

 1   2   3   4 


Go to: