add: if( amiga_bpp > 8 ) { struct Library* working = OpenLibrary( "Picasso96API.library", 0 );  if( working == NULL ) { amiga_broken_blitter = TRUE; } else { CloseLibrary( working ); } }
context: ui_init(void){  struct ScreenModeRequester* req = NULL;    uint8 null_pointer_mask[2] = { 0xff, 0xff };  uint8 null_pointer_data[16*1*3];  bzero( null_pointer_data, sizeof( null_pointer_data ) );    memset( amiga_pens, -1, sizeof( amiga_pens ) );  amiga_pubscreen = LockPubScreen( amiga_pubscreen_name );  if( amiga_pubscreen == NULL )  {    error( "ui_init: Unable to lock public screen.\n" );    return False;  }  if( CyberGfxBase != NULL &&      GetCyberMapAttr( amiga_pubscreen->RastPort.BitMap, CYBRMATTR_ISCYBERGFX ) )  {    amiga_bpp = GetCyberMapAttr( amiga_pubscreen->RastPort.BitMap, CYBRMATTR_DEPTH );  }  else  {    amiga_bpp = amiga_pubscreen->RastPort.BitMap->Depth;  }  if( g_server_bpp != 0 )  {    amiga_bpp = g_server_bpp;  }    if( g_fullscreen )  {    if( amiga_screen_id == DEFAULT_MONITOR_ID)    {      struct DimensionInfo di;      int depth  = amiga_bpp;      int width  = 640;      int height = 480;      amiga_screen_id = GetVPModeID( &amiga_pubscreen->ViewPort );      if( CyberGfxBase != NULL &&	  IsCyberModeID( amiga_screen_id ) )      {	depth = GetCyberIDAttr( CYBRIDATTR_DEPTH, amiga_screen_id );	width = GetCyberIDAttr( CYBRIDATTR_WIDTH, amiga_screen_id );	height = GetCyberIDAttr( CYBRIDATTR_HEIGHT, amiga_screen_id );      }          req = AllocAslRequestTags( ASL_ScreenModeRequest,  				 ASLSM_TitleText,            (ULONG) g_title,				 ASLSM_MinWidth,             640,				 ASLSM_MinHeight,            480,				 ASLSM_MaxDepth,             32,				 ASLSM_InitialDisplayID,     amiga_screen_id,				 ASLSM_InitialDisplayWidth,  width,				 ASLSM_InitialDisplayHeight, height,				 ASLSM_InitialDisplayDepth,  depth,				 ASLSM_DoWidth,              TRUE,				 ASLSM_DoHeight,             TRUE,				 ASLSM_DoDepth,              TRUE,				 TAG_DONE );      if( req == NULL )      {	error( "ui_init: Unable to create screen mode requester.\n" );	return False;      }      if( ! AslRequestTags( req, TAG_DONE ) )      {	error( "ui_init: Requester canceled.\n" );	return False;      }        if( GetDisplayInfoData( NULL, (APTR) &di, sizeof( di ), 			      DTAG_DIMS, req->sm_DisplayID ) == 0 )      {	error( "ui_init: Unable to get dimensions of screen.\n" );	return False;      }      amiga_screen_id = req->sm_DisplayID;      g_width         = req->sm_DisplayWidth;      g_height        = req->sm_DisplayHeight;      amiga_bpp       = req->sm_DisplayDepth;      FreeAslRequest( req );    }    else    {      if( CyberGfxBase != NULL &&	  IsCyberModeID( amiga_screen_id ) )      {	amiga_bpp = GetCyberIDAttr( CYBRIDATTR_DEPTH, amiga_screen_id );	if( g_width <= 0 )	{	  g_width = GetCyberIDAttr( CYBRIDATTR_WIDTH, amiga_screen_id );	}	if( g_height <= 0 )	{	  g_height = GetCyberIDAttr( CYBRIDATTR_HEIGHT, amiga_screen_id );	}      }      else      {	if( g_server_bpp != 0 )	{	  amiga_bpp = g_server_bpp;	}	else	{	  amiga_bpp = 8;	}      }    }    g_server_bpp = 0;  }  if( g_width == 0 )  {    // Default     g_width = amiga_pubscreen->Width * 80 / 100;  }  else if( g_width < 0 )  {    g_width  = amiga_pubscreen->Width * (-g_width) / 100;  }  if( g_height == 0 )  {    // Default     g_height = amiga_pubscreen->Height * 80 / 100;  }  else if( g_height < 0 )  {    g_height = amiga_pubscreen->Height * (-g_height) / 100;  }  if( g_fullscreen )  {    // We don't need it anymore    UnlockPubScreen( NULL, amiga_pubscreen );    amiga_pubscreen = NULL;  }  // The bpp stuff is a bit confusing, but here is a summary:  //  // * If a mode requester is used, amiga_bpp is set by that requester  // * If a screen mode ID is specified, the depth is taken from the  //   ID if it's a Cybergraphics id. Else, the depth is taken from  //   the command line (default is 8 bpp but it may be less in the  //   amiga version of rdesktop).  // * If window mode, amiga_bpp is taken from the public screen.  //  // Now, set g_server_bpp to something appropriate if 0.    switch( amiga_bpp )  {    case 1:    case 2:    case 3:    case 4:    case 5:    case 6:    case 7:    case 8:      g_server_bpp = 8;      break;    case 15:      g_server_bpp = 15;      break;	    case 16:      g_server_bpp = 16;      break;    case 24:    case 32:      g_server_bpp = 24;      break;    default:      error( "ui_init: Illegal screen depth.\n" );      return False;  }//  printf("ui_init: g_server_bpp = %d, amiga_bpp = %d\n", g_server_bpp, amiga_bpp );    g_width = g_width & ~3;//  g_width = ( g_width + 3 ) & ~3;  /* create invisible 1x1 cursor to be used as null cursor */  amiga_null_cursor = ui_create_cursor( 0, 0, 16, 1,					null_pointer_mask, null_pointer_data );  // Try to enable clipboard handling (ignore failuers)//  cliprdr_init();  amiga_wb_port = CreateMsgPort();  if( amiga_wb_port == NULL )  {    error("ui_init: Unable to create AppIcon message port\n" );  }    // OK, we're game  return True;}