VOGONS


First post, by Malice

User metadata
Rank Newbie
Rank
Newbie

I'm compiling with MinGW-w64 and the MSYS environment. I used the following configure options:
./configure --disable-dynamic-x86 --disable-fpu-x86 --host=x86_64-w64-mingw32 --target=x86_64-w64-mingw32

The only thing i can't figure out is the error in cdrom_aspi_win32.cpp.

In file included from core_dynrec.cpp:136:
core_dynrec/cache.h: In function 'void cache_init(bool)':
core_dynrec/cache.h:599: error: cast from 'Bit8u*' to 'long int' loses precision
make[4]: *** [core_dynrec.o] Error 1

Changing "long int" to "long long int" fixes this.

cdrom_aspi_win32.cpp: In member function 'void CDROM_Interface_Aspi::GetIOCTLAda
pter(void*, int*, int*, int*)':
cdrom_aspi_win32.cpp:381: error: 'FILE_DEVICE_CONTROLLER' was not declared in th
is scope
cdrom_aspi_win32.cpp:381: error: 'METHOD_BUFFERED' was not declared in this scop
e
cdrom_aspi_win32.cpp:381: error: 'FILE_ANY_ACCESS' was not declared in this scop
e
cdrom_aspi_win32.cpp:381: error: 'CTL_CODE' was not declared in this scope
make[3]: *** [cdrom_aspi_win32.o] Error 1

I don't know how to properly fix this error. I commented out the code to get passed the error.

In file included from midi.cpp:87:
midi_win32.h: In member function 'virtual bool MidiHandler_win32::Open(const char*)':
midi_win32.h:51: error: cast from 'void*' to 'DWORD' loses precision
midi_win32.h:54: error: cast from 'void*' to 'DWORD' loses precision
make[3]: *** [midi.o] Error 1

Changing "DWORD" to "long long" fixes this.

In file included from cross.cpp:31:
c:/mingw/lib/gcc/../../x86_64-w64-mingw32/include/shlobj.h:14:2: error: #error _WIN32_IE setting conflicts
In file included from c:/mingw/lib/gcc/../../x86_64-w64-mingw32/include/shlobj.h:85,
from cross.cpp:31:
c:/mingw/lib/gcc/../../x86_64-w64-mingw32/include/commctrl.h:14:2: error: #error _WIN32_IE setting conflicts
In file included from c:/mingw/lib/gcc/../../x86_64-w64-mingw32/include/shlobj.h:88,
from cross.cpp:31:
c:/mingw/lib/gcc/../../x86_64-w64-mingw32/include/shlguid.h:13:2: error: #error _WIN32_IE setting conflicts
In file included from c:/mingw/lib/gcc/../../x86_64-w64-mingw32/include/shlobj.h:98,
from cross.cpp:31:
c:/mingw/lib/gcc/../../x86_64-w64-mingw32/include/shobjidl.h:1750: error: 'SHCOLUMNID' has not been declared
c:/mingw/lib/gcc/../../x86_64-w64-mingw32/include/shobjidl.h:1751: error: 'SHCOLUMNID' has not been declared
c:/mingw/lib/gcc/../../x86_64-w64-mingw32/include/shobjidl.h:1752: error: 'SHCOLUMNID' has not been declared
c:/mingw/lib/gcc/../../x86_64-w64-mingw32/include/shobjidl.h:1786: error: 'SHCOLUMNID' has not been declared
c:/mingw/lib/gcc/../../x86_64-w64-mingw32/include/shobjidl.h:1788: error: 'SHCOLUMNID' has not been declared
c:/mingw/lib/gcc/../../x86_64-w64-mingw32/include/shobjidl.h:1790: error: 'SHCOLUMNID' has not been declared
In file included from cross.cpp:31:
c:/mingw/lib/gcc/../../x86_64-w64-mingw32/include/shlobj.h:1672: error: 'SHCOLUMNID' does not name a type
In file included from cross.cpp:31:
c:/mingw/lib/gcc/../../x86_64-w64-mingw32/include/shlobj.h:1715: error: 'LPCSHCOLUMNID' has not been declared
make[3]: *** [cross.o] Error 1

Changing _WIN32_IE version from "4.00" to "5.02" fixes this.

I have a test build if anyone wants to try it.

http://www.mediafire.com/?yhjmdyxdqmm

Reply 1 of 5, by wd

User metadata
Rank DOSBox Author
Rank
DOSBox Author

The recompiler doesn't work under 64bit windows so you can disable it
through configure parameters, and the aspi interface should not be used
as well (just hack around that).

The _WIN32_IE thing is some mingw header strangeness but i don't remember
if i've ever properly worked around that. Your hack is fine though.

In any case for maximum speed use a 32bit compile.

Reply 4 of 5, by Malice

User metadata
Rank Newbie
Rank
Newbie

So then is there hope for direct recompilation?

Oh and i thought i 'd mention 64-bit does see a nice performance increase when doing low level emulation of 3d graphics processors, MAME is a good example. Low level emulation of 3DFX in DOSBOX would be sweet.

Reply 5 of 5, by wd

User metadata
Rank DOSBox Author
Rank
DOSBox Author

For me x86 to x86 is direct dynamic recompilation, everything else is more
complex and less performant like x86 to x64 recompilation. So yes, it is possible
(like under linux 64bit recompilation is working fine) but will not reach the
speed of the x86 to x86 approach.