annotate Plugins/Input/console/blargg_endian.h @ 352:f13ab2d8e9cf trunk

[svn] various fixes :(
author nenolod
date Mon, 26 Dec 2005 14:12:35 -0800
parents 252843aac42f
children 7c5e886205ef
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
90
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
1
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
2 // CPU Byte Order Utilities
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
3
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
4 // Game_Music_Emu 0.2.4. Copyright (C) 2005 Shay Green. BSD license.
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
5
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
6 #ifndef BLARGG_ENDIAN
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
7 #define BLARGG_ENDIAN
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
8
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
9 inline unsigned get_le16( const void* p ) {
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
10 return *((unsigned char*) p + 1) * 0x100u + *(unsigned char*) p;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
11 }
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
12
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
13 inline void set_le16( void* p, unsigned n ) {
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
14 *(unsigned char*) p = n;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
15 *((unsigned char*) p + 1) = n >> 8;
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
16 }
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
17
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
18 #ifndef GET_LE16
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
19
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
20 #if 0
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
21 // Read 16-bit little-endian unsigned integer from memory
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
22 unsigned GET_LE16( const void* );
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
23
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
24 // Write 16-bit little-endian integer to memory
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
25 void SET_LE16( void*, unsigned );
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
26 #endif
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
27
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
28 // Optimized implementation if byte order is known
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
29 #if BLARGG_NONPORTABLE && BLARGG_LITTLE_ENDIAN
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
30 #define GET_LE16( addr ) (*(unsigned short*) (addr))
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
31 #define SET_LE16( addr, data ) (void (*(unsigned short*) (addr) = (data)))
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
32
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
33 #elif BLARGG_NONPORTABLE && BLARGG_CPU_POWERPC
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
34 // PowerPC has special byte-reversed instructions
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
35 #define GET_LE16( addr ) ((unsigned) __lhbrx( (addr), 0 ))
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
36 #define SET_LE16( addr, data ) (__sthbrx( (data), (addr), 0 ))
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
37
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
38 #else
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
39 #define GET_LE16( addr ) get_le16( addr )
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
40 #define SET_LE16( addr, data ) set_le16( addr, data )
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
41
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
42 #endif
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
43
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
44 #endif
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
45
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
46 #endif
252843aac42f [svn] Import the initial sources for console music support.
nenolod
parents:
diff changeset
47