1 /*---------------------------------------------------------------------------*
2 Project: RevolutionDWC public include file
3 File: ./nonport/revolution/dwc_nonport.h
4
5 Copyright 2005-2008 Nintendo. All rights reserved.
6
7 These coded instructions, statements, and computer programs contain
8 proprietary information of Nintendo of America Inc. and/or Nintendo
9 Company Ltd., and are protected by Federal copyright law. They may
10 not be disclosed to third parties or copied or duplicated in any form,
11 in whole or in part, without the prior written consent of Nintendo.
12
13 *---------------------------------------------------------------------------*/
14
15 #include <dwc_version.h>
16 #include <revolution.h>
17 #include <revolution/so.h>
18 #include <revolution/ncd.h>
19 #include <revolution/net.h>
20 #include <revolution/revodefs.h>
21
22 #include <stdio.h>
23 #include <string.h>
24
25 #include <nonport/revolution/dwci_np_math.h>
26 #include <nonport/revolution/dwci_np_types.h>
27
28 #ifndef DWC_NOGS
29 #include <cfriend/dwc_cfriend.h>
30 #endif
31
32 #include <conntest/dwc_conntest.h>
33
34 #define DWC_ASSERT ASSERT
35 #define DWC_ASSERTMSG ASSERTMSG
36
37 #define DWC_HALT OSHalt
38
39 // Time-related
40 #define DWCi_Np_TicksToMilliSeconds OSTicksToMilliseconds
41 #define DWCi_Np_MilliSecondsToTicks(a) OSMillisecondsToTicks((u64)(a))
42 typedef OSTime DWCTick;
43 DWCUtcTime DWCi_Np_GetTimeInSeconds( void );
44 DWCTmTime* DWCi_Np_UtcToTm( DWCUtcTime* utc_time );
45 void DWCi_Np_CPUCopyFast(register void* dst, register const void* src, register u32 n);
46
47 #define OS_PutString OSReport
48 #define OS_TVPrintf OSVReport
49
50 #define DWC_INLINE inline
51
52 #define SO_NtoHl SONtoHl
53 #define SO_NtoHs SONtoHs
54 #define SO_GetHostID SOGetHostID
55
56 u64 DWCi_Np_GetConsoleId( void );
57 const char* DWCi_Np_GetConsoleName( void );
58 const char* DWCi_Np_GetAppGameName( void );
59
DWCi_Np_CpuCopy8(register const void * srcp,register void * dstp,register u32 size)60 static inline void DWCi_Np_CpuCopy8( register const void *srcp, register void *dstp, register u32 size )
61 {
62 DWCi_Np_CPUCopyFast( dstp, srcp, size );
63 }
64
DWCi_Np_CpuCopy16(register const void * srcp,register void * dstp,register u32 size)65 static inline void DWCi_Np_CpuCopy16( register const void *srcp, register void *dstp, register u32 size )
66 {
67 DWCi_Np_CPUCopyFast( dstp, srcp, size );
68 }
69
DWCi_Np_CpuCopy32(register const void * srcp,register void * dstp,register u32 size)70 static inline void DWCi_Np_CpuCopy32( register const void *srcp, register void *dstp, register u32 size )
71 {
72 DWCi_Np_CPUCopyFast( dstp, srcp, size );
73 }
74
75
76
DWCi_Np_CpuClear8(void * dest,u32 size)77 static inline void DWCi_Np_CpuClear8(void *dest, u32 size)
78 {
79 memset( dest, 0, size );
80 }
81
DWCi_Np_CpuClear16(void * dest,u32 size)82 static inline void DWCi_Np_CpuClear16(void *dest, u32 size)
83 {
84 memset( dest, 0, size );
85 }
86
DWCi_Np_CpuClear32(void * dest,u32 size)87 static inline void DWCi_Np_CpuClear32(void *dest, u32 size)
88 {
89 memset( dest, 0, size );
90 }
91
92
DWCi_Np_GetMacAddress(u8 * macAddress)93 static inline void DWCi_Np_GetMacAddress(u8 *macAddress)
94 {
95 NETGetWirelessMacAddress(macAddress);
96 }
97
DWCi_Np_GetTick(void)98 static inline DWCTick DWCi_Np_GetTick(void)
99 {
100 return OSGetTime();
101 }
102
103
104 //
105 // Conversion functions to support little-endian data that passes through the network.
106 //
DWCi_HtoLEs(u16 data)107 static inline u16 DWCi_HtoLEs( u16 data )
108 {
109 return (u16)((data >> 8) | (data << 8));
110 }
111
DWCi_HtoLEl(u32 data)112 static inline u32 DWCi_HtoLEl( u32 data )
113 {
114 u32 tmp;
115 tmp = ((data >> 8) & 0x00ff00ff) | ((data << 8) & 0xff00ff00);
116 return (tmp >> 16) | (tmp << 16);
117 }
118
DWCi_LEtoHs(u16 data)119 static inline u16 DWCi_LEtoHs( u16 data )
120 {
121 return DWCi_HtoLEs( data ); // Since we are just flipping back around, do the same thing.
122 }
123
DWCi_LEtoHl(u32 data)124 static inline u32 DWCi_LEtoHl( u32 data )
125 {
126 return DWCi_HtoLEl( data );
127 }
128