TimData *JJSLoad16BitTexture(char *filename, char location)
{
	TimData	*timSize;
	int fp;
	HRESULT             ddretval;
	DDSURFACEDESC       ddsd;
	C3D_UINT32			bufsize;
	int	sp;
	long 				texsize;
	char			*bmpdata;
	HRESULT ddrval;
	LPDIRECTDRAWSURFACE tbuf;
	RECT	    dest_rect, src_rect;
	DWORD	   dwFlags;
	DDBLTFX	 DDBltFX;

	dest_rect.top = dest_rect.left = 0;
	dest_rect.bottom = WinHeight;
	dest_rect.right = WinWidth;

	src_rect.top = src_rect.left = 0;
	src_rect.bottom = 240;
	src_rect.right = 320;

	memset(&ddsd, 0, sizeof(ddsd));
	ddsd.dwSize = sizeof(ddsd);
	ddsd.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT;
	ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN|DDSCAPS_SYSTEMMEMORY;
	ddsd.dwWidth = 320;
	ddsd.dwHeight = 240;
	ddrval = lpDD->lpVtbl->CreateSurface(lpDD, &ddsd, &tbuf, NULL);
	if (ddrval != DD_OK)
	{
		ShowErrorMessage(4002);
		return (FALSE);
	}

	texsize = 320 * 240 * sizeof (C3D_UINT16);

	bufsize = texsize;
	
	timSize = ( TimData* )DAlloc( heap, sizeof(TimData) );

	ZeroMemory (&ddsd, sizeof (ddsd));
	ddsd.dwSize = sizeof (ddsd);
	tbuf->lpVtbl->Lock(tbuf, NULL, &ddsd, DDLOCK_SURFACEMEMORYPTR | DDLOCK_WAIT, NULL);
	bmpdata = ddsd.lpSurface;
	JJSReadTIM(filename,bmpdata,timSize);
	tbuf->lpVtbl->Unlock(tbuf,NULL);

	DDBltFX.dwSize = sizeof(DDBltFX);

	dwFlags = DDBLT_WAIT;
	lpBack_Buffer->lpVtbl->Blt(lpBack_Buffer, &dest_rect, tbuf, &src_rect, dwFlags, &DDBltFX);

	tbuf->lpVtbl->Release(tbuf);

	return (timSize) ;
}


