The problem is that you're loading a bitmap before the display is created. There's no graphics context at that point, so no video bitmaps can be created until there is. Which means you get a memory bitmap which uses memory, CPU, etc...
And Allegro won't auto convert bitmaps for you until you tell it to by calling al_convert_memory_bitmaps
That makes a lot of sense; I should've realized! I feel like I read this before and then completely forgot about it. Thanks a lot for the helpful responses.
With regards to Elias' response, the ALLEGRO_CONVERT_BITMAP is set by default, and I was clearing it. The ALLEGRO_AUTO_CONVERT_BITMAPS display flag, which is also set by default, will automatically convert memory bitmaps into video bitmaps when the display is created so long as the ALLEGRO_CONVERT_BITMAP flag is set. Does that mean that I don't need to call al_convert_memory_bitmaps as long as I keep these flags enabled? According to the docs, the ALLEGRO_AUTO_CONVERT_BITMAPS flag...
The Manual said:
... causes any existing memory bitmaps with the ALLEGRO_CONVERT_BITMAP flag to be converted to a display bitmap of the newly created display with the option set.
So then, my understanding is that as long as I've got the flags set appropriately I'll never need to call al_convert_memory_bitmaps; this is only for situations where the flags aren't set to have this done automatically. Is this correct?
And as a side-note, would you consider it bad practice to create the bitmaps before creating the display? Is the conversion from memory to video bitmaps super costly?