diff --git a/main.c b/main.c
index cfbb457..89da013 100644
--- a/main.c
+++ b/main.c
@@ -29,6 +29,7 @@ HRESULT ddraw_GetCaps(void *This, LPDDCAPS lpDDDriverCaps, LPDDCAPS lpDDEmulCaps
     if(lpDDDriverCaps)
     {
         lpDDDriverCaps->dwSize = sizeof(DDCAPS);
+        lpDDDriverCaps->dwCaps = DDCAPS_BLT|DDCAPS_PALETTE;
         lpDDDriverCaps->dwCKeyCaps = 0;
         lpDDDriverCaps->dwPalCaps = DDPCAPS_8BIT|DDPCAPS_PRIMARYSURFACE;
         lpDDDriverCaps->dwVidMemTotal = 16777216;
diff --git a/surface.c b/surface.c
index 2668e21..14cff6f 100644
--- a/surface.c
+++ b/surface.c
@@ -115,6 +115,12 @@ HRESULT ddraw_CreateSurface(void *_This, LPDDSURFACEDESC lpDDSurfaceDesc, LPDIRE
     return DD_OK;
 }
 
+HRESULT ddraw_surface_AddAttachedSurface(void *_This, LPDIRECTDRAWSURFACE lpDDSurface)
+{
+    printf("DirectDrawSurface::AddAttachedSurface(This=%p, lpDDSurface=%p)\n", _This, lpDDSurface);
+    return DD_OK;
+}
+
 HRESULT ddraw_surface_Blt(void *This, LPRECT lpDestRect, LPDIRECTDRAWSURFACE lpDDSrcSurface, LPRECT lpSrcRect, DWORD dwFlags, LPDDBLTFX lpDDBltFx)
 {
     printf("DirectDrawSurface::Blt(This=%p, lpDestRect=%p, lpDDSrcSurface=%p, lpSrcRect=%p, dwFlags=%d, lpDDBltFx=%p)\n", This, lpDestRect, lpDDSrcSurface, lpSrcRect, (int)dwFlags, lpDDBltFx);
@@ -187,7 +193,7 @@ fakeDirectDrawSurface siface =
     ddraw_surface_AddRef,
     ddraw_surface_Release,
     /* IDirectDrawSurface */
-    null, // ddraw_surface_AddAttachedSurface
+    ddraw_surface_AddAttachedSurface,
     null, // ddraw_surface_AddOverlayDirtyRect
     ddraw_surface_Blt,
     null, // ddraw_surface_BltBatch
diff --git a/surface.h b/surface.h
index 443a101..8433533 100644
--- a/surface.h
+++ b/surface.h
@@ -65,9 +65,6 @@ typedef struct
     HRESULT (*UpdateOverlayZOrder)(void *, DWORD, LPDIRECTDRAWSURFACE);
 } fakeDirectDrawSurface;
 
-/*
-*/
-
 typedef struct
 {
     fakeDirectDrawSurface *Functions;