At some point we probably should move to 64-bit address space in order to fit more images in memory. Unfortunately, this requires several fixes to systems that try to jam pointers into 32-bit integers.

In this ticket I track the changes needed:

[ ] CSymbolTable, CIDTable, and CDictionary all seem to rely on storing pointer
    in an int array. We should deprecate all three.
[ ] In DXSparseMask.h we encode pointer values into DWORD. This should be changed
    to DWORD_PTR.
[ ] In TLisp we use the DWORD ref count to store the free-chain linked-list.
    We should store it somewhere else.
[ ] In TLisp, object pointers are stored in integers. We should create a custom
    TLisp class for object pointers to solve this.
[ ] In CTileMapSection we use DWORD tiles to store pointers to tile maps. We could
    probably convert to DWORD_PTR and have it work. See if we can take advantage
    of the extra bits in a DWORD_PTR to store more.
[ ] In GameSessionInput.cpp it looks like we store a CSpaceObject pointer in
    a DWORD. I think we can change this to either a DWORD_PTR or void *
[ ] In GameSessionMenus.cpp we store a CPower pointer in a DWORD. We should be
    able to change to DWORD_PTR or void *.
[ ] COrderDesc sometimes stores integers in a pointer type. This should be OK,
    because pointer types will always be larger, but we should make sure that
    it is never the other way around.