1
0
mirror of https://github.com/blawar/GLideN64.git synced 2024-07-07 03:13:49 +00:00

Refactor: replace define WIN32 by WIN32_ASM

since it is used for MSVS style asm code only.
This commit is contained in:
Sergey Lipskiy 2014-09-01 22:11:45 +07:00
parent b73cf262f1
commit bdb221b6ac
6 changed files with 76 additions and 77 deletions

View File

@ -9,7 +9,7 @@ void TransformVectorNormalize(float vec[3], float mtx[4][4]);
inline void CopyMatrix( float m0[4][4], float m1[4][4] ) inline void CopyMatrix( float m0[4][4], float m1[4][4] )
{ {
#ifdef WIN32 #ifdef WIN32_ASM
__asm { __asm {
mov esi, [m1] mov esi, [m1]
mov edi, [m0] mov edi, [m0]
@ -52,12 +52,12 @@ inline void CopyMatrix( float m0[4][4], float m1[4][4] )
} }
#else #else
memcpy( m0, m1, 16 * sizeof( float ) ); memcpy( m0, m1, 16 * sizeof( float ) );
#endif // WIN32 #endif // WIN32_ASM
} }
inline void Transpose3x3Matrix( float mtx[4][4] ) inline void Transpose3x3Matrix( float mtx[4][4] )
{ {
#ifdef WIN32 #ifdef WIN32_ASM
__asm __asm
{ {
mov esi, [mtx] mov esi, [mtx]
@ -77,7 +77,7 @@ inline void Transpose3x3Matrix( float mtx[4][4] )
mov dword ptr [esi+18h], ebx mov dword ptr [esi+18h], ebx
mov dword ptr [esi+24h], eax mov dword ptr [esi+24h], eax
} }
#else // WIN32 #else // WIN32_ASM
float tmp; float tmp;
tmp = mtx[0][1]; tmp = mtx[0][1];
@ -91,12 +91,12 @@ inline void Transpose3x3Matrix( float mtx[4][4] )
tmp = mtx[1][2]; tmp = mtx[1][2];
mtx[1][2] = mtx[2][1]; mtx[1][2] = mtx[2][1];
mtx[2][1] = tmp; mtx[2][1] = tmp;
#endif // WIN32 #endif // WIN32_ASM
} }
inline void Normalize(float v[3]) inline void Normalize(float v[3])
{ {
#ifdef WIN32 #ifdef WIN32_ASM
__asm { __asm {
mov esi, dword ptr [v] mov esi, dword ptr [v]
// ST(6) ST(5) ST(4) ST(3) ST(2) ST(1) ST // ST(6) ST(5) ST(4) ST(3) ST(2) ST(1) ST
@ -127,7 +127,7 @@ inline void Normalize(float v[3])
End: End:
finit finit
} }
#else // WIN32 #else // WIN32_ASM
float len; float len;
len = v[0]*v[0] + v[1]*v[1] + v[2]*v[2]; len = v[0]*v[0] + v[1]*v[1] + v[2]*v[2];
@ -137,14 +137,14 @@ End:
v[1] /= len; v[1] /= len;
v[2] /= len; v[2] /= len;
} }
#endif // WIN32 #endif // WIN32_ASM
} }
inline float DotProduct(float v0[3], float v1[3]) inline float DotProduct(float v0[3], float v1[3])
{ {
float dot; float dot;
#ifdef WIN32 #ifdef WIN32_ASM
__asm { __asm {
mov esi, dword ptr [v0] mov esi, dword ptr [v0]
mov edi, dword ptr [v1] mov edi, dword ptr [v1]
@ -160,9 +160,9 @@ inline float DotProduct(float v0[3], float v1[3])
fadd fadd
fstp dword ptr [ebx] fstp dword ptr [ebx]
} }
#else // WIN32 #else // WIN32_ASM
dot = v0[0]*v1[0] + v0[1]*v1[1] + v0[2]*v1[2]; dot = v0[0]*v1[0] + v0[1]*v1[1] + v0[2]*v1[2];
#endif // WIN32 #endif // WIN32_ASM
return dot; return dot;
} }

View File

@ -71,10 +71,9 @@ endif(UNIX)
if(WIN32) if(WIN32)
list(APPEND GLideN64_SOURCES ${GLideN64_SOURCES_WIN}) list(APPEND GLideN64_SOURCES ${GLideN64_SOURCES_WIN})
add_definitions( add_definitions(
-DWIN32 -D_WINDOWS
-DWINDOWS
-D__WIN32__ -D__WIN32__
-D_WIN32 -D_WIN32_
-D_CRT_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS
-D__MSC__ -D__MSC__
) )

View File

@ -108,7 +108,7 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile> <ClCompile>
<Optimization>Disabled</Optimization> <Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;NEWGLNINTENDO64_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32_ASM;_DEBUG;_WINDOWS;_USRDLL;NEWGLNINTENDO64_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild> <MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
@ -159,7 +159,7 @@
<IntrinsicFunctions>true</IntrinsicFunctions> <IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed> <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers> <OmitFramePointers>true</OmitFramePointers>
<PreprocessorDefinitions>WIN32;_WINDOWS;_USRDLL;NEWGLNINTENDO64_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32_ASM;_WINDOWS;_USRDLL;NEWGLNINTENDO64_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling> <StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking> <FunctionLevelLinking>true</FunctionLevelLinking>
@ -186,7 +186,7 @@
<IntrinsicFunctions>true</IntrinsicFunctions> <IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed> <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers> <OmitFramePointers>true</OmitFramePointers>
<PreprocessorDefinitions>MUPENPLUSAPI;WIN32;_WINDOWS;_USRDLL;NEWGLNINTENDO64_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>MUPENPLUSAPI;WIN32_ASM;_WINDOWS;_USRDLL;NEWGLNINTENDO64_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling> <StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking> <FunctionLevelLinking>true</FunctionLevelLinking>
@ -238,7 +238,7 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_mupenplus|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_mupenplus|Win32'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="Config_mupen.cpp"> <ClCompile Include="Config_mupen.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="CRC.cpp" /> <ClCompile Include="CRC.cpp" />
<ClCompile Include="Debug.cpp" /> <ClCompile Include="Debug.cpp" />

View File

@ -114,10 +114,10 @@
<ClCompile Include="3DMath.cpp"> <ClCompile Include="3DMath.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="Config_mupen.cpp"> <ClCompile Include="Config.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="Config.cpp"> <ClCompile Include="Config_mupen.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
</ItemGroup> </ItemGroup>

View File

@ -15,7 +15,7 @@ RSPInfo RSP;
void RSP_LoadMatrix( f32 mtx[4][4], u32 address ) void RSP_LoadMatrix( f32 mtx[4][4], u32 address )
{ {
f32 recip = 1.5258789e-05f; f32 recip = 1.5258789e-05f;
#ifdef WIN32 #ifdef WIN32_ASM
__asm { __asm {
mov esi, dword ptr [RDRAM]; mov esi, dword ptr [RDRAM];
add esi, dword ptr [address]; add esi, dword ptr [address];
@ -59,7 +59,7 @@ LoadLoop:
add edi, 10h add edi, 10h
loop LoadLoop loop LoadLoop
} }
#else // WIN32 #else // WIN32_ASM
# ifdef X86_ASM # ifdef X86_ASM
__asm__ __volatile__( __asm__ __volatile__(
".intel_syntax noprefix" "\n\t" ".intel_syntax noprefix" "\n\t"
@ -115,7 +115,7 @@ LoadLoop:
for (j = 0; j < 4; j++) for (j = 0; j < 4; j++)
mtx[i][j] = (GLfloat)(n64Mat->integer[i][j^1]) + (GLfloat)(n64Mat->fraction[i][j^1]) * recip; mtx[i][j] = (GLfloat)(n64Mat->integer[i][j^1]) + (GLfloat)(n64Mat->fraction[i][j^1]) * recip;
# endif // !X86_ASM # endif // !X86_ASM
#endif // WIN32 #endif // WIN32_ASM
} }
void RSP_ProcessDList() void RSP_ProcessDList()

108
convert.h
View File

@ -104,7 +104,7 @@ const volatile unsigned char One2Eight[2] =
static inline void UnswapCopy( void *src, void *dest, u32 numBytes ) static inline void UnswapCopy( void *src, void *dest, u32 numBytes )
{ {
#ifdef WIN32 #ifdef WIN32_ASM
__asm __asm
{ {
mov ecx, 0 mov ecx, 0
@ -167,7 +167,7 @@ TrailingLoop:
loop TrailingLoop loop TrailingLoop
Done: Done:
} }
# else // WIN32 # else // WIN32_ASM
// copy leading bytes // copy leading bytes
int leadingBytes = ((long)src) & 3; int leadingBytes = ((long)src) & 3;
if (leadingBytes != 0) if (leadingBytes != 0)
@ -214,12 +214,12 @@ Done:
src = (void *)((long)src -1); src = (void *)((long)src -1);
} }
} }
#endif // WIN32 #endif // WIN32_ASM
} }
static inline void DWordInterleave( void *mem, u32 numDWords ) static inline void DWordInterleave( void *mem, u32 numDWords )
{ {
#ifdef WIN32 #ifdef WIN32_ASM
__asm { __asm {
mov esi, dword ptr [mem] mov esi, dword ptr [mem]
mov edi, dword ptr [mem] mov edi, dword ptr [mem]
@ -234,7 +234,7 @@ DWordInterleaveLoop:
add edi, 8 add edi, 8
loop DWordInterleaveLoop loop DWordInterleaveLoop
} }
#else // WIN32 #else // WIN32_ASM
int tmp; int tmp;
while( numDWords-- ) while( numDWords-- )
{ {
@ -243,12 +243,12 @@ DWordInterleaveLoop:
*(int *)((long)mem + 4) = tmp; *(int *)((long)mem + 4) = tmp;
mem = (void *)((long)mem + 8); mem = (void *)((long)mem + 8);
} }
#endif // WIN32 #endif // WIN32_ASM
} }
inline void QWordInterleave( void *mem, u32 numDWords ) inline void QWordInterleave( void *mem, u32 numDWords )
{ {
#ifdef WIN32 #ifdef WIN32_ASM
__asm __asm
{ {
// Interleave the line on the qword // Interleave the line on the qword
@ -272,7 +272,7 @@ QWordInterleaveLoop:
add edi, 12 add edi, 12
loop QWordInterleaveLoop loop QWordInterleaveLoop
} }
#else // WIN32 #else // WIN32_ASM
numDWords >>= 1; // qwords numDWords >>= 1; // qwords
while( numDWords-- ) while( numDWords-- )
{ {
@ -285,19 +285,19 @@ QWordInterleaveLoop:
*(int *)((long)mem + 12) = tmp1; *(int *)((long)mem + 12) = tmp1;
mem = (void *)((long)mem + 16); mem = (void *)((long)mem + 16);
} }
#endif // WIN32 #endif // WIN32_ASM
} }
inline u32 swapdword( u32 value ) inline u32 swapdword( u32 value )
{ {
#ifdef WIN32 #ifdef WIN32_ASM
__asm __asm
{ {
mov eax, dword ptr [value] mov eax, dword ptr [value]
bswap eax bswap eax
} }
#else // WIN32 #else // WIN32_ASM
#ifdef ARM_ASM #ifdef ARM_ASM
asm("rev %0, %0" : "+r"(value)::); asm("rev %0, %0" : "+r"(value)::);
return value; return value;
@ -307,30 +307,30 @@ inline u32 swapdword( u32 value )
((value & 0x0000ff00) << 8) | ((value & 0x0000ff00) << 8) |
((value & 0x000000ff) << 24); ((value & 0x000000ff) << 24);
#endif // ARM_ASM #endif // ARM_ASM
#endif // WIN32 #endif // WIN32_ASM
} }
inline u16 swapword( u16 value ) inline u16 swapword( u16 value )
{ {
#ifdef WIN32 #ifdef WIN32_ASM
__asm __asm
{ {
mov ax, word ptr [value] mov ax, word ptr [value]
xchg ah, al xchg ah, al
} }
#else // WIN32 #else // WIN32_ASM
#ifdef ARM_ASM #ifdef ARM_ASM
asm("rev16 %0, %0" : "+r"(value)::); asm("rev16 %0, %0" : "+r"(value)::);
return value; return value;
#else #else
return (value << 8) | (value >> 8); return (value << 8) | (value >> 8);
#endif // ARM_ASM #endif // ARM_ASM
#endif // WIN32 #endif // WIN32_ASM
} }
inline u16 RGBA8888_RGBA4444( u32 color ) inline u16 RGBA8888_RGBA4444( u32 color )
{ {
#ifdef WIN32 #ifdef WIN32_ASM
__asm __asm
{ {
mov ebx, dword ptr [color] mov ebx, dword ptr [color]
@ -352,17 +352,17 @@ inline u16 RGBA8888_RGBA4444( u32 color )
shr bl, 4 shr bl, 4
or al, bl or al, bl
} }
#else // WIN32 #else // WIN32_ASM
return ((color & 0x000000f0) << 8) | // r return ((color & 0x000000f0) << 8) | // r
((color & 0x0000f000) >> 4) | // g ((color & 0x0000f000) >> 4) | // g
((color & 0x00f00000) >> 16) | // b ((color & 0x00f00000) >> 16) | // b
((color & 0xf0000000) >> 28); // a ((color & 0xf0000000) >> 28); // a
#endif // WIN32 #endif // WIN32_ASM
} }
inline u32 RGBA5551_RGBA8888( u16 color ) inline u32 RGBA5551_RGBA8888( u16 color )
{ {
#ifdef WIN32 #ifdef WIN32_ASM
__asm __asm
{ {
mov ebx, 00000000h mov ebx, 00000000h
@ -390,7 +390,7 @@ inline u32 RGBA5551_RGBA8888( u16 color )
and bx, 1Fh and bx, 1Fh
mov al, byte ptr [Five2Eight+ebx] mov al, byte ptr [Five2Eight+ebx]
} }
#else // WIN32 #else // WIN32_ASM
color = swapword( color ); color = swapword( color );
u8 r, g, b, a; u8 r, g, b, a;
r = Five2Eight[color >> 11]; r = Five2Eight[color >> 11];
@ -398,26 +398,26 @@ inline u32 RGBA5551_RGBA8888( u16 color )
b = Five2Eight[(color >> 1) & 0x001f]; b = Five2Eight[(color >> 1) & 0x001f];
a = One2Eight [(color ) & 0x0001]; a = One2Eight [(color ) & 0x0001];
return (a << 24) | (b << 16) | (g << 8) | r; return (a << 24) | (b << 16) | (g << 8) | r;
#endif // WIN32 #endif // WIN32_ASM
} }
// Just swaps the word // Just swaps the word
inline u16 RGBA5551_RGBA5551( u16 color ) inline u16 RGBA5551_RGBA5551( u16 color )
{ {
#ifdef WIN32 #ifdef WIN32_ASM
__asm __asm
{ {
mov ax, word ptr [color] mov ax, word ptr [color]
xchg ah, al xchg ah, al
} }
#else // WIN32 #else // WIN32_ASM
return swapword( color ); return swapword( color );
#endif // WIN32 #endif // WIN32_ASM
} }
inline u32 IA88_RGBA8888( u16 color ) inline u32 IA88_RGBA8888( u16 color )
{ {
#ifdef WIN32 #ifdef WIN32_ASM
__asm __asm
{ {
mov cx, word ptr [color] mov cx, word ptr [color]
@ -430,17 +430,17 @@ inline u32 IA88_RGBA8888( u16 color )
mov ah, cl mov ah, cl
mov al, cl mov al, cl
} }
#else // WIN32 #else // WIN32_ASM
// ok // ok
u8 a = color >> 8; u8 a = color >> 8;
u8 i = color & 0x00FF; u8 i = color & 0x00FF;
return (a << 24) | (i << 16) | (i << 8) | i; return (a << 24) | (i << 16) | (i << 8) | i;
#endif // WIN32 #endif // WIN32_ASM
} }
inline u16 IA88_RGBA4444( u16 color ) inline u16 IA88_RGBA4444( u16 color )
{ {
#ifdef WIN32 #ifdef WIN32_ASM
__asm __asm
{ {
mov cx, word ptr [color] mov cx, word ptr [color]
@ -454,16 +454,16 @@ inline u16 IA88_RGBA4444( u16 color )
shr ch, 4 shr ch, 4
or al, ch or al, ch
} }
#else // WIN32 #else // WIN32_ASM
u8 i = color >> 12; u8 i = color >> 12;
u8 a = (color >> 4) & 0x000F; u8 a = (color >> 4) & 0x000F;
return (i << 12) | (i << 8) | (i << 4) | a; return (i << 12) | (i << 8) | (i << 4) | a;
#endif // WIN32 #endif // WIN32_ASM
} }
inline u16 IA44_RGBA4444( u8 color ) inline u16 IA44_RGBA4444( u8 color )
{ {
#ifdef WIN32 #ifdef WIN32_ASM
__asm __asm
{ {
mov cl, byte ptr [color] mov cl, byte ptr [color]
@ -474,14 +474,14 @@ inline u16 IA44_RGBA4444( u8 color )
shl cl, 4 shl cl, 4
or ah, cl or ah, cl
} }
#else // WIN32 #else // WIN32_ASM
return ((color & 0xf0) << 8) | ((color & 0xf0) << 4) | (color); return ((color & 0xf0) << 8) | ((color & 0xf0) << 4) | (color);
#endif // WIN32 #endif // WIN32_ASM
} }
inline u32 IA44_RGBA8888( u8 color ) inline u32 IA44_RGBA8888( u8 color )
{ {
#ifdef WIN32 #ifdef WIN32_ASM
__asm __asm
{ {
mov ebx, 00000000h mov ebx, 00000000h
@ -503,16 +503,16 @@ inline u32 IA44_RGBA8888( u8 color )
mov ah, ch mov ah, ch
mov al, ch mov al, ch
} }
#else // WIN32 #else // WIN32_ASM
u8 i = Four2Eight[color >> 4]; u8 i = Four2Eight[color >> 4];
u8 a = Four2Eight[color & 0x0F]; u8 a = Four2Eight[color & 0x0F];
return (a << 24) | (i << 16) | (i << 8) | i; return (a << 24) | (i << 16) | (i << 8) | i;
#endif // WIN32 #endif // WIN32_ASM
} }
inline u16 IA31_RGBA4444( u8 color ) inline u16 IA31_RGBA4444( u8 color )
{ {
#ifdef WIN32 #ifdef WIN32_ASM
__asm __asm
{ {
mov ebx, 00000000h mov ebx, 00000000h
@ -531,16 +531,16 @@ inline u16 IA31_RGBA4444( u8 color )
mov ch, byte ptr [One2Four+ebx] mov ch, byte ptr [One2Four+ebx]
or al, ch or al, ch
} }
#else // WIN32 #else // WIN32_ASM
u8 i = Three2Four[color >> 1]; u8 i = Three2Four[color >> 1];
u8 a = One2Four[color & 0x01]; u8 a = One2Four[color & 0x01];
return (i << 12) | (i << 8) | (i << 4) | a; return (i << 12) | (i << 8) | (i << 4) | a;
#endif // WIN32 #endif // WIN32_ASM
} }
inline u32 IA31_RGBA8888( u8 color ) inline u32 IA31_RGBA8888( u8 color )
{ {
#ifdef WIN32 #ifdef WIN32_ASM
__asm __asm
{ {
mov ebx, 00000000h mov ebx, 00000000h
@ -562,16 +562,16 @@ inline u32 IA31_RGBA8888( u8 color )
mov ah, ch mov ah, ch
mov al, ch mov al, ch
} }
#else // WIN32 #else // WIN32_ASM
u8 i = Three2Eight[color >> 1]; u8 i = Three2Eight[color >> 1];
u8 a = One2Eight[color & 0x01]; u8 a = One2Eight[color & 0x01];
return (i << 24) | (i << 16) | (i << 8) | a; return (i << 24) | (i << 16) | (i << 8) | a;
#endif // WIN32 #endif // WIN32_ASM
} }
inline u16 I8_RGBA4444( u8 color ) inline u16 I8_RGBA4444( u8 color )
{ {
#ifdef WIN32 #ifdef WIN32_ASM
__asm __asm
{ {
mov cl, byte ptr [color] mov cl, byte ptr [color]
@ -582,15 +582,15 @@ inline u16 I8_RGBA4444( u8 color )
or al, cl or al, cl
mov ah, al mov ah, al
} }
#else // WIN32 #else // WIN32_ASM
u8 c = color >> 4; u8 c = color >> 4;
return (c << 12) | (c << 8) | (c << 4) | c; return (c << 12) | (c << 8) | (c << 4) | c;
#endif // WIN32 #endif // WIN32_ASM
} }
inline u32 I8_RGBA8888( u8 color ) inline u32 I8_RGBA8888( u8 color )
{ {
#ifdef WIN32 #ifdef WIN32_ASM
__asm __asm
{ {
mov cl, byte ptr [color] mov cl, byte ptr [color]
@ -601,14 +601,14 @@ inline u32 I8_RGBA8888( u8 color )
mov ah, cl mov ah, cl
mov al, cl mov al, cl
} }
#else // WIN32 #else // WIN32_ASM
return (color << 24) | (color << 16) | (color << 8) | color; return (color << 24) | (color << 16) | (color << 8) | color;
#endif // WIN32 #endif // WIN32_ASM
} }
inline u16 I4_RGBA4444( u8 color ) inline u16 I4_RGBA4444( u8 color )
{ {
#ifdef WIN32 #ifdef WIN32_ASM
__asm __asm
{ {
mov cl, byte ptr [color] mov cl, byte ptr [color]
@ -617,17 +617,17 @@ inline u16 I4_RGBA4444( u8 color )
or al, cl or al, cl
mov ah, al mov ah, al
} }
#else // WIN32 #else // WIN32_ASM
u16 ret = color & 0x0f; u16 ret = color & 0x0f;
ret |= ret << 4; ret |= ret << 4;
ret |= ret << 8; ret |= ret << 8;
return ret; return ret;
#endif // WIN32 #endif // WIN32_ASM
} }
inline u32 I4_RGBA8888( u8 color ) inline u32 I4_RGBA8888( u8 color )
{ {
#ifdef WIN32 #ifdef WIN32_ASM
__asm __asm
{ {
mov ebx, 00000000h mov ebx, 00000000h
@ -641,11 +641,11 @@ inline u32 I4_RGBA8888( u8 color )
mov ah, cl mov ah, cl
mov al, cl mov al, cl
} }
#else // WIN32 #else // WIN32_ASM
u8 c = Four2Eight[color]; u8 c = Four2Eight[color];
c |= c << 4; c |= c << 4;
return (c << 24) | (c << 16) | (c << 8) | c; return (c << 24) | (c << 16) | (c << 8) | c;
#endif // WIN32 #endif // WIN32_ASM
} }
#endif // CONVERT_H #endif // CONVERT_H