This file documents the Unicode build of WinVICE.

How To Build
------------
For systems using GNU-style tools, you run configure with the
--enable-unicode option. It should also be possible to build the Unicode
version of WinVICE using an IDE, but this is untested.

Tested With
-----------
- MinGW32 (gcc 4.5.2) / MSYS 1.0.17 / wrc.exe built from Wine 1.8.2 sources

Features
--------
Currently the Unicode build only has one unique feature:
intl_translate_wcs() in src/arch/win32/intl.c is a new function which
duplicates the functionality of intl_translate_text(). It caches translated
strings stored in string table resources in the executable binary, but it
stores them in RAM in wide-character form. Because it is only compiled in
Unicode builds you can't use it directly; instead you use intl_translate_tcs
which is a macro which maps to intl_translate_wcs() in Unicode builds and
intl_translate_text() in non-Unicode builds.

To Be Done
----------
- The Unicode build still has many bugs due to being unmaintained / broken
  for over 10 years.
- Translated strings used in the parts of VICE common to multiple ports are
  stored as ordinary data in language-specific 8-bit charsets. They get
  converted to the 8-bit charset of the host system at runtime, and this
  can lead to a loss of information before they are converted to Unicode.
- Command line options are not processed using Unicode.
- Files cannot yet be opened using Unicode filenames.
- There is currently no way to convert text between PETSCII and Unicode.

Potential Problems
------------------
- In a non-Unicode build the char and TCHAR types are the same, but in a
  Unicode build a TCHAR is a 16-bit wide character, so mixing the two creates
  bugs which only show up in a Unicode build.
- Any string constants which need to be wide-character strings in a Unicode
  build must be enclosed in a TEXT() wrapper, but this macro only works for
  string constants (or other macros defined as string constants.) You can't
  use TEXT() around names of variables.
- translate_text() returns strings of 8-bit characters, so you can't use it
  in places where a TCHAR string is expected. 
- Functions such as lib_msprintf() and util_concat() can only support 8-bit
  chars for both input and output.
