Newsgroups: comp.os.msdos.djgpp From: "A. Jans-Beken" Subject: Re: Allegro Bitmap Array... Content-Type: text/plain; charset=us-ascii Message-ID: <355AD6EE.9E2822EC@oce.nl> Sender: news AT oce DOT nl (The Daily News @ nntp01.oce.nl) Content-Transfer-Encoding: 7bit Organization: Oce-Technologies B.V. - Research & Development References: <6hqlq3$jdo AT nnrp1 DOT farm DOT idt DOT net> Mime-Version: 1.0 Date: Thu, 14 May 1998 11:35:11 GMT Lines: 44 To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Precedence: bulk Chia wrote: > I want to create a two dimensional array of bitmaps for a terrain-selector > for a map-builder I'm making. I also want them to be in the heap so they > don't use up all the conventional ram. > > How would I go about mallocing this array, and would the declaration look > like this: > > BITMAP ***TerrainArray; > This is not a good idea because every BITMAP struct takes up a "lot" of memory (128 bytes or so). I think that it would be better to define a small set of "tiles" and reuse these tiles in a following manner: // Demo of TerrainArray // By A. Jans-Beken <-- standard include stuff --> // An array of bitmaps containing tile graphics only once. BITMAP *TileSet[MAX_NUM_OF_DIFFERENT_TILES]; unsigned char TerrainArray[MAX_COLUMNS][MAX_ROWS]; main() { int i,j; // Read all tile-graphics from file. // Define terrain by filling-in values (0 .. 255) in TerrainArray. for (j = 0; j < MAX_ROWS; j++) for (i = 0; i < MAX_COLUMNS; i++) blit(screen, TileSet[TerrainArray[i][j]], .......); // Note: For large TerrainArray only a small "window" can be seen on the screen. } For an example with source code: http://www.geocities.com/SiliconValley/Bay/4413/ have fun...