diff --git a/src/feature.h b/src/feature.h
index 81b432d..e2f9e2a 100644
--- a/src/feature.h
+++ b/src/feature.h
@@ -601,10 +601,6 @@
  *			Now always enabled.
  */
 
-/* Define this if you want to use 16 bit Unicode only, reduces memory used for
- * the screen structures. */
-/* #define UNICODE16 */
-
 /*
  * +multi_byte_ime	Win32 IME input method.  Only for far-east Windows, so
  *			IME can be used to input chars.  Not tested much!
diff --git a/src/screen.c b/src/screen.c
index 95a739a..a80e8de 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -2515,12 +2515,7 @@
 			prev_c = u8c;
 #endif
 		    /* Non-BMP character: display as ? or fullwidth ?. */
-#ifdef UNICODE16
-		    if (u8c >= 0x10000)
-			ScreenLinesUC[idx] = (cells == 2) ? 0xff1f : (int)'?';
-		    else
-#endif
-			ScreenLinesUC[idx] = u8c;
+		    ScreenLinesUC[idx] = u8c;
 		    for (i = 0; i < Screen_mco; ++i)
 		    {
 			ScreenLinesC[i][idx] = u8cc[i];
@@ -4482,34 +4477,17 @@
 
 		    if ((mb_l == 1 && c >= 0x80)
 			    || (mb_l >= 1 && mb_c == 0)
-			    || (mb_l > 1 && (!vim_isprintc(mb_c)
-# ifdef UNICODE16
-							 || mb_c >= 0x10000
-# endif
-							 )))
+			    || (mb_l > 1 && (!vim_isprintc(mb_c))))
 		    {
 			/*
 			 * Illegal UTF-8 byte: display as <xx>.
 			 * Non-BMP character : display as ? or fullwidth ?.
 			 */
-# ifdef UNICODE16
-			if (mb_c < 0x10000)
-# endif
-			{
-			    transchar_hex(extra, mb_c);
+			transchar_hex(extra, mb_c);
 # ifdef FEAT_RIGHTLEFT
-			    if (wp->w_p_rl)		/* reverse */
-				rl_mirror(extra);
+			if (wp->w_p_rl)		/* reverse */
+			    rl_mirror(extra);
 # endif
-			}
-# ifdef UNICODE16
-			else if (utf_char2cells(mb_c) != 2)
-			    STRCPY(extra, "?");
-			else
-			    /* 0xff1f in UTF-8: full-width '?' */
-			    STRCPY(extra, "\357\274\237");
-# endif
-
 			p_extra = extra;
 			c = *p_extra;
 			mb_c = mb_ptr2char_adv(&p_extra);
@@ -7478,15 +7456,6 @@
 		else
 		    u8c = utfc_ptr2char(ptr, u8cc);
 		mbyte_cells = utf_char2cells(u8c);
-#ifdef UNICODE16
-		/* Non-BMP character: display as ? or fullwidth ?. */
-		if (u8c >= 0x10000)
-		{
-		    u8c = (mbyte_cells == 2) ? 0xff1f : (int)'?';
-		    if (attr == 0)
-			attr = HL_ATTR(HLF_8);
-		}
-#endif
 #ifdef FEAT_ARABIC
 		if (p_arshape && !p_tbidi && ARABIC_CHAR(u8c))
 		{
diff --git a/src/version.c b/src/version.c
index c472ece..1114641 100644
--- a/src/version.c
+++ b/src/version.c
@@ -788,6 +788,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    812,
+/**/
     811,
 /**/
     810,
diff --git a/src/vim.h b/src/vim.h
index 3febc62..55cb693 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -431,15 +431,9 @@
 
 /*
  * The u8char_T can hold one decoded UTF-8 character.
- * We normally use 32 bits now, since some Asian characters don't fit in 16
- * bits.  u8char_T is only used for displaying, it could be 16 bits to save
- * memory.
+ * We use 32 bits, since some Asian characters don't fit in 16 bits.
  */
-#ifdef UNICODE16
-typedef unsigned short u8char_T;    /* short should be 16 bits */
-#else
-typedef unsigned int u8char_T;	    /* int is 32 bits or more */
-#endif
+typedef unsigned int u8char_T;	// int is 32 bits or more
 
 #ifndef UNIX		    /* For Unix this is included in os_unix.h */
 # include <stdio.h>
