The Dink Network

Reply to Error in map_tile(); documentation.

If you don't have an account, just leave the password field blank.
Username:
Password:
Subject:
Antispam: Enter Dink Smallwood's last name (surname) below.
Formatting: :) :( ;( :P ;) :D >( : :s :O evil cat blood
Bold font Italic font hyperlink Code tags
Message:
 
 
May 9th 2012, 07:40 PM
custom_magicman.gif
magicman
Peasant They/Them Netherlands duck
Mmmm, pizza. 
While I don't think people have actually used this function, dinkc.chm has things wrong here:

The tile_index will range from 1 to 4428. tile_index 1 is the tile in the upper-left corner of tileset 1, tile 109 is the tile in the upper-left corner of tileset 2, and so on.

The tile_index will range from 0 to 5355. tile_index 0 is the tile in the upper-left corner of tileset 1, tile 128 is the tile in the upper-left corner of tileset 2, and so on.

The get_map_tile_index() function provided after it is wrong as well, here is a modified version that's correct:

// get_map_tile_index 
// &arg1 = Tileset (1-41)
// &arg2 = Tile X coordinate (1-12)
// &arg3 = Tile Y coordinate (1-9)
void get_map_tile_index( void )
{
      // Calculate the Tileset offset
      int &temp = &arg1;
      &temp -= 1;
      &temp * 128;
      int &index = &temp;

      // Calculate the X offset
      &temp = &arg2;
      &temp -= 1;
      &index += &temp;

      // Calculate the Y offset
      &temp = &arg3;
      &temp -= 1;
      &temp * 12;
      &index += &temp;

      return(&index);
}


If you know what tile on what tileset you're looking for, you can use that function to get the appropriate tile_index:

void main( void )
{
  // Assuming the above procedure lives in tiles.c
  // Retrieve the tile_index for the tile on tileset 5, second column, first row.
  external("tiles","get_map_tile_index",5,2,1);
  // Replace the top-left tile of the current screen with the tile on tileset 5, second column, first row, of which we just got the tile_index.
  map_tile(1, &return);
  // Needed to see it happen:
  draw_background();
}