Windows WIP.

This commit is contained in:
unknown 2008-05-06 22:57:13 -07:00 committed by Patryk Obara
parent 5d3725f9d9
commit c51b91cfe7
18 changed files with 256 additions and 147 deletions

View file

@ -182,8 +182,6 @@ extern DISPLAYBLOCK *Player;
/***************************************************************/
/************************ AVP high level control **************/
extern RECT_AVP screenRect;
/* KJL 15:42:23 10/02/96 - These two are mine. */
extern void MaintainPlayer(void);
extern void MaintainHUD(void);

View file

@ -77,7 +77,7 @@ typedef struct pffont
int num_chars_in_font; /*number of chars in this font */
FONT_TYPE font_type;
FONT_FLAGS flags;
RECT_AVP srcRect[MAXNUM_CHARS_IN_FONT]; /*source rectangles*/
RECT srcRect[MAXNUM_CHARS_IN_FONT]; /*source rectangles*/
int fttexWidth; /* filled in during loading */
int fttexHeight;
@ -115,7 +115,7 @@ typedef struct pffont
{
if ( bPrintable(ProjCh) )
{
const RECT_AVP& charRect = srcRect[ ProjCharToOffset(ProjCh) ] ;
const RECT& charRect = srcRect[ ProjCharToOffset(ProjCh) ] ;
return (charRect . right - charRect . left);
}

View file

@ -34,8 +34,7 @@
/* used to get file time */
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
extern void StartMenuBackgroundBink(void);
extern int PlayMenuBackgroundBink(void);
extern void EndMenuBackgroundBink(void);

View file

@ -86,7 +86,7 @@ static int find_empty_game_sound()
}
static int find_permanent_game_sound(char * wavname)
static int find_permanent_game_sound(const char * wavname)
{
if(!SoundSwitchedOn) return (-1);
@ -109,7 +109,7 @@ LOADED_SOUND const * GetSound (char const * fname)
{
if(!SoundSwitchedOn) return (0);
char * wavname = strrchr (fname, '\\');
const char * wavname = strrchr (fname, '\\');
if (wavname)
{
@ -117,7 +117,7 @@ LOADED_SOUND const * GetSound (char const * fname)
}
else
{
wavname = (char *)fname;
wavname = fname;
}
// check if wavname already loaded

View file

@ -1,6 +1,6 @@
#define _BSD_SOURCE
#include <unistd.h>
//#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

View file

@ -1,6 +1,11 @@
#ifndef __FILES_H__
#define __FILES_H__
#ifndef FILES_H
#define FILES_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdio.h>
#include <time.h>
#define FILEMODE_READONLY 0x01
@ -33,4 +38,8 @@ void *OpenGameDirectory(const char *dirname, const char *pattern, int type);
GameDirectoryFile *ScanGameDirectory(void *dir);
int CloseGameDirectory(void *dir);
#ifdef __cplusplus
};
#endif
#endif

View file

@ -1,6 +1,88 @@
#ifndef __FIXER_H__
#define __FIXER_H__
#if defined(_MSC_VER)
// just include the windows header to get everything.
#undef Yes
#undef No
#include <windows.h>
#include <tchar.h>
#include <mbstring.h>
#pragma warning( disable: 4996 ) // unsafe function (strcpy, fopen, etc.) used
#define Yes 1
#define No 0
#include "files.h"
// gonna deal with this one later.
#define PACKED
// unused directplay code.
typedef int DPID;
// not sure where this was originally defined.
#define RGBA_MAKE(r, g, b, a) ((((a) << 24) | ((r) << 16) | ((g) << 8) | (b)))
typedef struct DPNAME
{
int dwSize;
char *lpszShortNameA;
char *lpszLongNameA;
} DPNAME;
#define DP_OK 0
#define DPRECEIVE_ALL 1
#define DPSYS_ADDPLAYERTOGROUP 2
#define DPSYS_CREATEPLAYERORGROUP 3
#define DPPLAYERTYPE_PLAYER 4
#define DPSYS_DELETEPLAYERFROMGROUP 5
#define DPSYS_HOST 6
#define DPSYS_SESSIONLOST 7
#define DPSYS_SETPLAYERORGROUPDATA 8
#define DPSYS_SETPLAYERORGROUPNAME 9
#define DPEXT_HEADER_SIZE 10
#define DPERR_BUSY 11
#define DPERR_CONNECTIONLOST 12
#define DPERR_INVALIDPARAMS 13
#define DPERR_INVALIDPLAYER 14
#define DPERR_NOTLOGGEDIN 15
#define DPERR_SENDTOOBIG 16
#define DPERR_BUFFERTOOSMALL 17
#define DPID_SYSMSG 18
#define DPSYS_DESTROYPLAYERORGROUP 19
#define DPID_ALLPLAYERS 20
typedef struct DPMSG_GENERIC
{
int dwType;
} DPMSG_GENERIC;
typedef DPMSG_GENERIC * LPDPMSG_GENERIC;
typedef struct DPMSG_CREATEPLAYERORGROUP
{
int dwType;
DPID dpId;
int dwPlayerType;
DPNAME dpnName;
} DPMSG_CREATEPLAYERORGROUP;
typedef DPMSG_CREATEPLAYERORGROUP * LPDPMSG_CREATEPLAYERORGROUP;
typedef struct DPMSG_DESTROYPLAYERORGROUP
{
int dwType;
DPID dpId;
int dwPlayerType;
} DPMSG_DESTROYPLAYERORGROUP;
typedef DPMSG_DESTROYPLAYERORGROUP * LPDPMSG_DESTROYPLAYERORGROUP;
#else
#ifdef __cplusplus
extern "C" {
#endif
@ -9,7 +91,7 @@ extern "C" {
#include <stdlib.h>
#include <string.h>
#include <limits.h>
#include <inttypes.h> /* int64_t */
//#include <stdint.h> /* int64_t */
#include "files.h"
@ -26,6 +108,8 @@ extern "C" {
#define __cdecl
#define NO_ERROR 0
#define TRUE 1
#define FALSE 0
@ -227,3 +311,5 @@ typedef struct JOYCAPS
#endif
#endif
#endif

View file

@ -8,6 +8,7 @@
#endif
#include "fixer.h" // make sure system headers get included first, because windows headers use Yes/No
#include "system.h"
#include <stddef.h>

View file

@ -2,7 +2,6 @@
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <unistd.h>
#include <assert.h>
#include "SDL.h"

View file

@ -30,16 +30,16 @@ int FloatToInt(float);
#undef ASM386
#if !defined(ASM386)
static long long ConvertToLongLong(const LONGLONGCH* llch)
static __int64 ConvertToLongLong(const LONGLONGCH* llch)
{
long long ll;
__int64 ll;
ll = ((long long)llch->hi32 << 32) | ((long long)llch->lo32 << 0);
ll = ((__int64)llch->hi32 << 32) | ((__int64)llch->lo32 << 0);
return ll;
}
static void ConvertFromLongLong(LONGLONGCH* llch, const long long* ll)
static void ConvertFromLongLong(LONGLONGCH* llch, const __int64* ll)
{
llch->lo32 = (unsigned int)((*ll>> 0) & 0xffffffff);
llch->hi32 = ( signed int)((*ll>>32) & 0xffffffff);
@ -85,10 +85,10 @@ __asm__("movl 0(%%esi), %%eax \n\t"
);
*/
#else
long long aa = ConvertToLongLong(a);
long long bb = ConvertToLongLong(b);
__int64 aa = ConvertToLongLong(a);
__int64 bb = ConvertToLongLong(b);
long long cc = aa + bb;
__int64 cc = aa + bb;
ConvertFromLongLong(c, &cc);
#endif
@ -122,8 +122,8 @@ __asm__("movl 0(%%esi), %0 \n\t"
: "memory", "cc"
);
#else
long long cc = ConvertToLongLong(c);
long long aa = ConvertToLongLong(a);
__int64 cc = ConvertToLongLong(c);
__int64 aa = ConvertToLongLong(a);
cc += aa;
@ -162,10 +162,10 @@ __asm__("movl 0(%%esi), %0 \n\t"
: "memory", "cc"
);
#else
long long aa = ConvertToLongLong(a);
long long bb = ConvertToLongLong(b);
__int64 aa = ConvertToLongLong(a);
__int64 bb = ConvertToLongLong(b);
long long cc = aa - bb;
__int64 cc = aa - bb;
ConvertFromLongLong(c, &cc);
#endif
@ -197,8 +197,8 @@ __asm__("movl 0(%%esi), %0 \n\t"
: "memory", "cc"
);
#else
long long cc = ConvertToLongLong(c);
long long aa = ConvertToLongLong(a);
__int64 cc = ConvertToLongLong(c);
__int64 aa = ConvertToLongLong(a);
cc -= aa;
@ -236,10 +236,10 @@ __asm__("imull %3 \n\t"
: "%edx", "memory", "cc"
);
#else
long long aa = (long long) a;
long long bb = (long long) b;
__int64 aa = (__int64) a;
__int64 bb = (__int64) b;
long long cc = aa * bb;
__int64 cc = aa * bb;
ConvertFromLongLong(c, &cc);
#endif
@ -368,7 +368,7 @@ __asm__("notl 0(%%esi) \n\t"
: "memory", "cc"
);
#else
long long aa = ConvertToLongLong(a);
__int64 aa = ConvertToLongLong(a);
aa = -aa;
@ -411,7 +411,7 @@ __asm__ volatile
: "memory", "cc"
);
#else
long long aa = ConvertToLongLong(a);
__int64 aa = ConvertToLongLong(a);
aa >>= shift;
@ -444,7 +444,7 @@ __asm__("movl 0(%%esi), %%eax \n\t"
: "%eax", "%edx", "memory", "cc"
);
#else
long long aa = (long long) *b;
__int64 aa = (__int64) *b;
ConvertFromLongLong(a, &aa);
#endif
@ -461,7 +461,7 @@ __asm__("movl 0(%%esi), %%eax \n\t"
A proper version of this function ought to read
16.16 * 16.16 -> 32.16
but this would require a long long result
but this would require a __int64 result
Algorithm:
@ -499,10 +499,10 @@ __asm__("imull %2 \n\t"
);
return retval;
#else
long long aa = (long long) a;
long long bb = (long long) b;
__int64 aa = (__int64) a;
__int64 bb = (__int64) b;
long long cc = aa * bb;
__int64 cc = aa * bb;
return (int) ((cc >> 16) & 0xffffffff);
#endif
@ -545,11 +545,13 @@ __asm__("cdq \n\t"
);
return retval;
#else
long long aa = (long long) a;
long long bb = (long long) b;
long long cc = (aa << 16) / bb;
{
__int64 aa = (__int64) a;
__int64 bb = (__int64) b;
__int64 cc = (aa << 16) / bb;
return (int) (cc & 0xffffffff);
}
#endif
}
@ -600,10 +602,10 @@ __asm__("movl 0(%%esi), %%eax \n\t"
);
return retval;
#else
long long aa = ConvertToLongLong(a);
long long bb = (long long) b;
__int64 aa = ConvertToLongLong(a);
__int64 bb = (__int64) b;
long long cc = aa / bb;
__int64 cc = aa / bb;
return (int) (cc & 0xffffffff);
#endif
@ -639,11 +641,11 @@ __asm__("imull %2 \n\t"
);
return retval;
#else
long long aa = (long long) a;
long long bb = (long long) b;
long long cc = (long long) c;
__int64 aa = (__int64) a;
__int64 bb = (__int64) b;
__int64 cc = (__int64) c;
long long dd = (aa * bb) / cc;
__int64 dd = (aa * bb) / cc;
return (int) (dd & 0xffffffff);
#endif

View file

@ -3,8 +3,6 @@
#include <string.h>
#include <ctype.h>
#include <pthread.h>
#include "fixer.h"
#include "3dc.h"

View file

@ -1,8 +1,12 @@
#ifndef OGLFUNC_H
#define OGLFUNC_H
#if defined(_MSC_VER)
#include <windows.h>
#endif
#include <GL/gl.h>
#include <GL/glext.h>
//#include <GL/glext.h>
typedef void (APIENTRY *PFNGLALPHAFUNCPROC)(GLenum, GLclampf);
typedef void (APIENTRY *PFNGLARRAYELEMENTPROC)(GLint);

View file

@ -3019,7 +3019,7 @@ void PostLandscapeRendering()
}
}
#endif
else if (!strcasecmp(LevelName,"hangar"))
else if (!stricmp(LevelName,"hangar"))
{
#if 0 /* not yet */
#if FMV_ON
@ -3036,7 +3036,7 @@ void PostLandscapeRendering()
#endif
#endif
}
else if (!strcasecmp(LevelName,"invasion_a"))
else if (!stricmp(LevelName,"invasion_a"))
{
char drawWater = 0;
char drawEndWater = 0;
@ -3061,12 +3061,12 @@ void PostLandscapeRendering()
{
drawEndWater = 1;
}
if((!strcasecmp(modulePtr->name,"shaft01"))
||(!strcasecmp(modulePtr->name,"shaft02"))
||(!strcasecmp(modulePtr->name,"shaft03"))
||(!strcasecmp(modulePtr->name,"shaft04"))
||(!strcasecmp(modulePtr->name,"shaft05"))
||(!strcasecmp(modulePtr->name,"shaft06")))
if((!stricmp(modulePtr->name,"shaft01"))
||(!stricmp(modulePtr->name,"shaft02"))
||(!stricmp(modulePtr->name,"shaft03"))
||(!stricmp(modulePtr->name,"shaft04"))
||(!stricmp(modulePtr->name,"shaft05"))
||(!stricmp(modulePtr->name,"shaft06")))
{
extern void HandleRainShaft(MODULE *modulePtr, int bottomY, int topY, int numberOfRaindrops);
HandleRainShaft(modulePtr, -11726,-107080,10);
@ -3138,7 +3138,7 @@ void PostLandscapeRendering()
D3D_DrawWaterPatch(x+MeshXScale*3, y, z+MeshZScale);
}
}
else if (!strcasecmp(LevelName, "derelict"))
else if (!stricmp(LevelName, "derelict"))
{
char drawMirrorSurfaces = 0;
char drawWater = 0;
@ -3151,12 +3151,12 @@ void PostLandscapeRendering()
/* if it's a module, which isn't inside another module */
if (modulePtr && modulePtr->name)
{
if( (!strcasecmp(modulePtr->name,"start-en01"))
||(!strcasecmp(modulePtr->name,"start")))
if( (!stricmp(modulePtr->name,"start-en01"))
||(!stricmp(modulePtr->name,"start")))
{
drawMirrorSurfaces = 1;
}
else if (!strcasecmp(modulePtr->name,"water-01"))
else if (!stricmp(modulePtr->name,"water-01"))
{
extern void HandleRainShaft(MODULE *modulePtr, int bottomY, int topY, int numberOfRaindrops);
drawWater = 1;
@ -3202,7 +3202,7 @@ void PostLandscapeRendering()
}
}
else if (!strcasecmp(LevelName,"genshd1"))
else if (!stricmp(LevelName,"genshd1"))
{
while(numOfObjects)
{
@ -3212,17 +3212,17 @@ void PostLandscapeRendering()
/* if it's a module, which isn't inside another module */
if (modulePtr && modulePtr->name)
{
if( (!strcasecmp(modulePtr->name,"largespace"))
||(!strcasecmp(modulePtr->name,"proc13"))
||(!strcasecmp(modulePtr->name,"trench01"))
||(!strcasecmp(modulePtr->name,"trench02"))
||(!strcasecmp(modulePtr->name,"trench03"))
||(!strcasecmp(modulePtr->name,"trench04"))
||(!strcasecmp(modulePtr->name,"trench05"))
||(!strcasecmp(modulePtr->name,"trench06"))
||(!strcasecmp(modulePtr->name,"trench07"))
||(!strcasecmp(modulePtr->name,"trench08"))
||(!strcasecmp(modulePtr->name,"trench09")))
if( (!stricmp(modulePtr->name,"largespace"))
||(!stricmp(modulePtr->name,"proc13"))
||(!stricmp(modulePtr->name,"trench01"))
||(!stricmp(modulePtr->name,"trench02"))
||(!stricmp(modulePtr->name,"trench03"))
||(!stricmp(modulePtr->name,"trench04"))
||(!stricmp(modulePtr->name,"trench05"))
||(!stricmp(modulePtr->name,"trench06"))
||(!stricmp(modulePtr->name,"trench07"))
||(!stricmp(modulePtr->name,"trench08"))
||(!stricmp(modulePtr->name,"trench09")))
{
extern void HandleRain(int numberOfRaindrops);
HandleRain(999);

View file

@ -42,8 +42,6 @@ enum AwTlErc
AW_TL_ERC;
#define NO_ERROR 0
/*********/
/* Flags */
/*********/

View file

@ -2176,7 +2176,7 @@ void SetupAnimatingShape(Shape_Chunk* sc,SHAPEHEADER* shp, Shape_Merge_Data_Chun
int x=max(-sas->min_x,sas->max_x);
int y=max(-sas->min_y,sas->max_y);
int z=max(-sas->min_z,sas->max_z);
sas->radius=(int)sqrt(x*x+y*y+z*z);
sas->radius=(int)sqrt((double)(x*x+y*y+z*z));
sas->vertex_normals=(int*)PoolAllocateMem(sizeof(VECTORCH)*cas->num_verts);

View file

@ -64,7 +64,6 @@ int db_option = 0; /* Default is off. */
#include <stdlib.h>
#include <ctype.h>
#include <stdarg.h> /* For variable arguments. */
#include <unistd.h>
/* C O N S T A N T S ************************************************** */

View file

@ -3,12 +3,12 @@
#include "fixer.h"
#if defined(_WIN32) || defined(WIN32) || defined(WINDOWS) || defined(_WINDOWS)
#define _IFF_WIN_TARGET
#include <windows.h>
#else // ! WIN32 && ! _WIN32 && ! WINDOWS && ! _WINDOWS
//#if defined(_WIN32) || defined(WIN32) || defined(WINDOWS) || defined(_WINDOWS)
// #define _IFF_WIN_TARGET
// #include <windows.h>
//#else // ! WIN32 && ! _WIN32 && ! WINDOWS && ! _WINDOWS
#include <stdio.h>
#endif // ! WIN32 && ! _WIN32 && ! WINDOWS && ! _WINDOWS
//#endif // ! WIN32 && ! _WIN32 && ! WINDOWS && ! _WINDOWS
#include "media.hpp"
@ -123,6 +123,8 @@ namespace IFF
#undef BYTE
#pragma message("BYTE was defined - undefining")
#endif
#if !defined(_MSC_VER)
typedef int8_t BYTE;
typedef uint8_t UBYTE;
@ -134,6 +136,20 @@ namespace IFF
typedef int64_t INT64;
typedef uint64_t UINT64;
#else
#pragma message("might want to move these typedefs elsewhere")
typedef signed char BYTE;
typedef unsigned char UBYTE;
typedef signed short INT16;
typedef unsigned short UINT16;
typedef signed int INT32;
typedef unsigned int UINT32;
typedef signed __int64 INT64;
typedef unsigned __int64 UINT64;
#endif
struct RGBTriple
{
@ -557,12 +573,12 @@ namespace IFF
m_nBytesRemaining -= 2;
if (m_nBytesRemaining >= 0)
{
UBYTE byte;
::MediaRead(m_pMedium, &byte);
n = byte;
::MediaRead(m_pMedium, &byte);
UBYTE b;
::MediaRead(m_pMedium, &b);
n = b;
::MediaRead(m_pMedium, &b);
n <<= 8;
n |= byte;
n |= b;
if (m_pMedium->m_fError) m_bError = true;
}
else m_bError = true;
@ -573,12 +589,12 @@ namespace IFF
m_nBytesRemaining -= 2;
if (m_nBytesRemaining >= 0)
{
BYTE byte;
::MediaRead(m_pMedium, &byte);
n = byte;
::MediaRead(m_pMedium, &byte);
BYTE b;
::MediaRead(m_pMedium, &b);
n = b;
::MediaRead(m_pMedium, &b);
n <<= 8;
n |= byte;
n |= b;
if (m_pMedium->m_fError) m_bError = true;
}
else m_bError = true;
@ -589,18 +605,18 @@ namespace IFF
m_nBytesRemaining -= 4;
if (m_nBytesRemaining >= 0)
{
UBYTE byte;
::MediaRead(m_pMedium, &byte);
n = byte;
::MediaRead(m_pMedium, &byte);
UBYTE b;
::MediaRead(m_pMedium, &b);
n = b;
::MediaRead(m_pMedium, &b);
n <<= 8;
n |= byte;
::MediaRead(m_pMedium, &byte);
n |= b;
::MediaRead(m_pMedium, &b);
n <<= 8;
n |= byte;
::MediaRead(m_pMedium, &byte);
n |= b;
::MediaRead(m_pMedium, &b);
n <<= 8;
n |= byte;
n |= b;
if (m_pMedium->m_fError) m_bError = true;
}
else m_bError = true;
@ -611,18 +627,18 @@ namespace IFF
m_nBytesRemaining -= 4;
if (m_nBytesRemaining >= 0)
{
BYTE byte;
::MediaRead(m_pMedium, &byte);
n = byte;
::MediaRead(m_pMedium, &byte);
BYTE b;
::MediaRead(m_pMedium, &b);
n = b;
::MediaRead(m_pMedium, &b);
n <<= 8;
n |= byte;
::MediaRead(m_pMedium, &byte);
n |= b;
::MediaRead(m_pMedium, &b);
n <<= 8;
n |= byte;
::MediaRead(m_pMedium, &byte);
n |= b;
::MediaRead(m_pMedium, &b);
n <<= 8;
n |= byte;
n |= b;
if (m_pMedium->m_fError) m_bError = true;
}
else m_bError = true;
@ -633,30 +649,30 @@ namespace IFF
m_nBytesRemaining -= 8;
if (m_nBytesRemaining >= 0)
{
UBYTE byte;
::MediaRead(m_pMedium, &byte);
n = byte;
::MediaRead(m_pMedium, &byte);
UBYTE b;
::MediaRead(m_pMedium, &b);
n = b;
::MediaRead(m_pMedium, &b);
n <<= 8;
n |= byte;
::MediaRead(m_pMedium, &byte);
n |= b;
::MediaRead(m_pMedium, &b);
n <<= 8;
n |= byte;
::MediaRead(m_pMedium, &byte);
n |= b;
::MediaRead(m_pMedium, &b);
n <<= 8;
n |= byte;
::MediaRead(m_pMedium, &byte);
n |= b;
::MediaRead(m_pMedium, &b);
n <<= 8;
n |= byte;
::MediaRead(m_pMedium, &byte);
n |= b;
::MediaRead(m_pMedium, &b);
n <<= 8;
n |= byte;
::MediaRead(m_pMedium, &byte);
n |= b;
::MediaRead(m_pMedium, &b);
n <<= 8;
n |= byte;
::MediaRead(m_pMedium, &byte);
n |= b;
::MediaRead(m_pMedium, &b);
n <<= 8;
n |= byte;
n |= b;
if (m_pMedium->m_fError) m_bError = true;
}
else m_bError = true;
@ -667,30 +683,30 @@ namespace IFF
m_nBytesRemaining -= 8;
if (m_nBytesRemaining >= 0)
{
BYTE byte;
::MediaRead(m_pMedium, &byte);
n = byte;
::MediaRead(m_pMedium, &byte);
BYTE b;
::MediaRead(m_pMedium, &b);
n = b;
::MediaRead(m_pMedium, &b);
n <<= 8;
n |= byte;
::MediaRead(m_pMedium, &byte);
n |= b;
::MediaRead(m_pMedium, &b);
n <<= 8;
n |= byte;
::MediaRead(m_pMedium, &byte);
n |= b;
::MediaRead(m_pMedium, &b);
n <<= 8;
n |= byte;
::MediaRead(m_pMedium, &byte);
n |= b;
::MediaRead(m_pMedium, &b);
n <<= 8;
n |= byte;
::MediaRead(m_pMedium, &byte);
n |= b;
::MediaRead(m_pMedium, &b);
n <<= 8;
n |= byte;
::MediaRead(m_pMedium, &byte);
n |= b;
::MediaRead(m_pMedium, &b);
n <<= 8;
n |= byte;
::MediaRead(m_pMedium, &byte);
n |= b;
::MediaRead(m_pMedium, &b);
n <<= 8;
n |= byte;
n |= b;
if (m_pMedium->m_fError) m_bError = true;
}
else m_bError = true;

View file

@ -590,7 +590,7 @@ fptmp = (b); \
FloatToInt(); \
a = itmp;}
#elif defined(_MSC_VER) /* inline assember for the Microsoft compiler */
#elif defined(_MSC_VER) && 0 /* inline assember for the Microsoft compiler */
/* ADD */