reconfigure wifi configuration so that register emulation is always enabled, and the actually experimental communication is all that is optionally enabled (i.e. softAP/libpcap)

This commit is contained in:
zeromus 2009-11-08 19:09:15 +00:00
parent 07331b522e
commit 58c56aca0b
10 changed files with 39 additions and 55 deletions

View File

@ -224,10 +224,10 @@ fi
dnl - wifi support
AC_ARG_ENABLE(wifi,
[AC_HELP_STRING(--enable-wifi, enable experimental wifi support)],
[AC_HELP_STRING(--enable-wifi, enable experimental wifi comm support)],
[
AC_CHECK_LIB(pcap, main,[
AC_DEFINE(EXPERIMENTAL_WIFI)
AC_DEFINE(EXPERIMENTAL_WIFI_COMM)
LIBS="$LIBS -lpcap"
])
])

View File

@ -3411,15 +3411,13 @@ void FASTCALL _MMU_ARM7_write08(u32 adr, u8 val)
}
}
#ifdef EXPERIMENTAL_WIFI
if ((adr & 0xFF800000) == 0x04800000)
{
/* is wifi hardware, dont intermix with regular hardware registers */
// 8-bit writes to wifi I/O and RAM are ignored
// Reference: http://nocash.emubase.de/gbatek.htm#dswifiiomap
return ;
return;
}
#endif
if (adr >> 24 == 4)
{
@ -3459,8 +3457,6 @@ void FASTCALL _MMU_ARM7_write16(u32 adr, u16 val)
return;
}
#ifdef EXPERIMENTAL_WIFI
//wifi mac access
if ((adr>=0x04800000)&&(adr<0x05000000))
{
@ -3468,9 +3464,6 @@ void FASTCALL _MMU_ARM7_write16(u32 adr, u16 val)
T1WriteWord(MMU.MMU_MEM[ARMCPU_ARM7][0x48], adr&MMU.MMU_MASK[ARMCPU_ARM7][0x48], val);
return;
}
#else
//if ((adr>=0x04800000)&&(adr<0x05000000)) return ;
#endif
adr &= 0x0FFFFFFF;
@ -3765,7 +3758,6 @@ void FASTCALL _MMU_ARM7_write32(u32 adr, u32 val)
return;
}
#ifdef EXPERIMENTAL_WIFI
if ((adr & 0xFF800000) == 0x04800000)
{
// access to non regular hw registers
@ -3775,7 +3767,6 @@ void FASTCALL _MMU_ARM7_write32(u32 adr, u32 val)
T1WriteLong(MMU.MMU_MEM[ARMCPU_ARM7][0x48], adr&MMU.MMU_MASK[ARMCPU_ARM7][0x48], val);
return;
}
#endif
adr &= 0x0FFFFFFF;
@ -3880,8 +3871,7 @@ u8 FASTCALL _MMU_ARM7_read08(u32 adr)
{
mmu_log_debug_ARM7(adr, "(read08) %0x%X", MMU.MMU_MEM[ARMCPU_ARM7][(adr>>20)&0xFF][adr&MMU.MMU_MASK[ARMCPU_ARM7][(adr>>20)&0xFF]]);
#ifdef EXPERIMENTAL_WIFI
/* wifi mac access */
// wifi mac access
if ((adr>=0x04800000)&&(adr<0x05000000))
{
if (adr & 1)
@ -3889,7 +3879,6 @@ u8 FASTCALL _MMU_ARM7_read08(u32 adr)
else
return WIFI_read16(adr) & 0xFF;
}
#endif
if ( (adr >= 0x08000000) && (adr < 0x0A010000) )
return addon.read08(adr);
@ -3915,11 +3904,9 @@ u16 FASTCALL _MMU_ARM7_read16(u32 adr)
{
mmu_log_debug_ARM7(adr, "(read16) %0x%X", T1ReadWord(MMU.MMU_MEM[ARMCPU_ARM7][(adr >> 20) & 0xFF], adr & MMU.MMU_MASK[ARMCPU_ARM7][(adr >> 20) & 0xFF]));
#ifdef EXPERIMENTAL_WIFI
//wifi mac access
if ((adr>=0x04800000)&&(adr<0x05000000))
return WIFI_read16(adr) ;
#endif
if ( (adr >= 0x08000000) && (adr < 0x0A010000) )
return addon.read16(adr);
@ -3984,11 +3971,9 @@ u32 FASTCALL _MMU_ARM7_read32(u32 adr)
{
mmu_log_debug_ARM7(adr, "(read32) %0x%X", T1ReadWord(MMU.MMU_MEM[ARMCPU_ARM7][(adr >> 20) & 0xFF], adr & MMU.MMU_MASK[ARMCPU_ARM7][(adr >> 20) & 0xFF]));
#ifdef EXPERIMENTAL_WIFI
//wifi mac access
if ((adr>=0x04800000)&&(adr<0x05000000))
return (WIFI_read16(adr) | (WIFI_read16(adr+2) << 16));
#endif
if ( (adr >= 0x08000000) && (adr < 0x0A010000) )
return addon.read32(adr);

View File

@ -47,14 +47,6 @@
PathInfo path;
#if 0
#ifndef PUBLIC_RELEASE
#undef EXPERIMENTAL_WIFI
#endif
#endif
#undef EXPERIMENTAL_WIFI
TCommonSettings CommonSettings;
static BaseDriver _stub_driver;
BaseDriver* driver = &_stub_driver;
@ -533,9 +525,7 @@ int NDS_Init( void) {
if (SPU_Init(SNDCORE_DUMMY, 740) != 0)
return -1;
#ifdef EXPERIMENTAL_WIFI
WIFI_Init() ;
#endif
nds.FW_ARM9BootCode = NULL;
nds.FW_ARM7BootCode = NULL;
@ -562,9 +552,7 @@ void NDS_DeInit(void) {
MMU_DeInit();
gpu3D->NDS_3D_Close();
#ifdef EXPERIMENTAL_WIFI
WIFI_DeInit();
#endif
cheatsSearchClose();
}
@ -1958,7 +1946,7 @@ void Sequencer::init()
dma_1_3.controller = &MMU_new.dma[1][3];
#ifdef EXPERIMENTAL_WIFI
#ifdef EXPERIMENTAL_WIFI_COMM
wifi.enabled = true;
wifi.timestamp = kWifiCycles;
#else
@ -2169,7 +2157,7 @@ u64 Sequencer::findNext()
if(sqrtunit.isEnabled()) next = _fast_min(next,sqrtunit.next());
if(gxfifo.enabled) next = _fast_min(next,gxfifo.next());
#ifdef EXPERIMENTAL_WIFI
#ifdef EXPERIMENTAL_WIFI_COMM
next = _fast_min(next,wifi.next());
#endif
@ -2207,7 +2195,7 @@ void Sequencer::execHardware()
}
}
#ifdef EXPERIMENTAL_WIFI
#ifdef EXPERIMENTAL_WIFI_COMM
if(wifi.isTriggered())
{
WIFI_usTrigger();
@ -2722,9 +2710,7 @@ void NDS_Reset()
gpu3D->NDS_3D_Reset();
SPU_Reset();
#ifdef EXPERIMENTAL_WIFI
WIFI_Reset();
#endif
memcpy(FW_Mac, (MMU.fw.data + 0x36), 6);

View File

@ -25,10 +25,11 @@
#include "debug.h"
#include "bits.h"
#ifdef EXPERIMENTAL_WIFI
#ifdef WIN32
#include <winsock2.h>
#include <ws2tcpip.h>
#define socket_t SOCKET
#define sockaddr_t SOCKADDR
#include "windriver.h"
@ -41,7 +42,6 @@
#define socket_t int
#define sockaddr_t struct sockaddr
#define closesocket close
#include "pcap/pcap.h"
#endif
#ifndef INVALID_SOCKET
@ -53,10 +53,14 @@
bool wifi_netEnabled = false;
socket_t wifi_socket = INVALID_SOCKET;
sockaddr_t sendAddr;
pcap_t *wifi_bridge = NULL;
const u8 BroadcastMAC[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
#ifdef EXPERIMENTAL_WIFI_COMM
#ifndef WIN32
#include "pcap/pcap.h"
#endif
pcap_t *wifi_bridge = NULL;
#endif
wifimac_t wifiMac;
@ -216,8 +220,6 @@ FW_WFCProfile FW_WFCProfile3 = {"",
{0, 0}
} ;
#ifdef EXPERIMENTAL_WIFI
/*******************************************************************************
Communication interface
@ -239,6 +241,7 @@ void SoftAP_Reset();
void SoftAP_SendPacket(u8 *packet, u32 len);
void SoftAP_usTrigger();
#ifdef EXPERIMENTAL_WIFI_COMM
WifiComInterface SoftAP = {
SoftAP_Init,
SoftAP_DeInit,
@ -246,6 +249,7 @@ WifiComInterface SoftAP = {
SoftAP_SendPacket,
SoftAP_usTrigger
};
#endif
bool Adhoc_Init();
void Adhoc_DeInit();
@ -263,7 +267,9 @@ WifiComInterface Adhoc = {
WifiComInterface* wifiComs[] = {
&Adhoc,
#ifdef EXPERIMENTAL_WIFI_COMM
&SoftAP,
#endif
NULL
};
WifiComInterface* wifiCom;
@ -305,6 +311,7 @@ INLINE u32 WIFI_alignedLen(u32 len)
return ((len + 3) & ~3);
}
#ifdef EXPERIMENTAL_WIFI_COMM
#ifdef WIN32
static pcap_t *desmume_pcap_open(const char *source, int snaplen, int flags,
int read_timeout, char *errbuf)
@ -359,6 +366,7 @@ static int desmume_pcap_sendpacket(pcap_t *p, u_char *buf, int size)
return pcap_sendpacket(p, buf, size);
}
#endif
#endif
/*******************************************************************************
@ -1954,6 +1962,7 @@ const u8 SoftAP_AssocResponse[] = {
//todo - make a class to wrap this
//todo - zeromus - inspect memory leak safety of all this
#ifdef EXPERIMENTAL_WIFI_COMM
static pcap_if_t * WIFI_index_device(pcap_if_t *alldevs, int index) {
pcap_if_t *curr = alldevs;
for(int i=0;i<index;i++)
@ -2267,3 +2276,4 @@ void SoftAP_usTrigger()
}
#endif

View File

@ -55,7 +55,7 @@
EnableFiberSafeOptimizations="false"
WholeProgramOptimization="false"
AdditionalIncludeDirectories=".;..;&quot;lua\lua-5.1.4\src&quot;;&quot;glib-2.20.1\build&quot;;&quot;glib-2.20.1\build\glib&quot;;.\zlib123;.\zziplib;.\winpcap;userconfig;defaultconfig;.\7z;.\agg\include;.\agg\examples"
PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;DEBUG;_CRT_SECURE_NO_DEPRECATE;GLIB_STATIC_COMPILATION;WIN32;SPU_INTERPOLATE;HAVE_LIBZ;HAVE_LIBZZIP;NOMINMAX;EXPERIMENTAL_WIFI;_WIN32_WINNT=0x0501"
PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;DEBUG;_CRT_SECURE_NO_DEPRECATE;GLIB_STATIC_COMPILATION;WIN32;SPU_INTERPOLATE;HAVE_LIBZ;HAVE_LIBZZIP;NOMINMAX;_WIN32_WINNT=0x0501"
ExceptionHandling="1"
BasicRuntimeChecks="0"
BufferSecurityCheck="true"
@ -149,7 +149,7 @@
EnableFiberSafeOptimizations="true"
WholeProgramOptimization="true"
AdditionalIncludeDirectories=".;..;&quot;lua\lua-5.1.4\src&quot;;&quot;glib-2.20.1\build&quot;;&quot;glib-2.20.1\build\glib&quot;;.\zlib123;.\zziplib;.\winpcap;userconfig;defaultconfig;.\7z;.\agg\include;.\agg\examples"
PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;GLIB_STATIC_COMPILATION;WIN32;HAVE_LIBZ;HAVE_LIBZZIP;SPU_INTERPOLATE;NOMINMAX;NDEBUG;RELEASE;EXPERIMENTAL_WIFI;_WIN32_WINNT=0x0501"
PreprocessorDefinitions="_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;GLIB_STATIC_COMPILATION;WIN32;HAVE_LIBZ;HAVE_LIBZZIP;SPU_INTERPOLATE;NOMINMAX;NDEBUG;RELEASE;_WIN32_WINNT=0x0501"
StringPooling="true"
ExceptionHandling="1"
BasicRuntimeChecks="0"
@ -247,7 +247,7 @@
EnableFiberSafeOptimizations="true"
WholeProgramOptimization="false"
AdditionalIncludeDirectories=".;..;&quot;lua\lua-5.1.4\src&quot;;&quot;glib-2.20.1\build&quot;;&quot;glib-2.20.1\build\glib&quot;;.\zlib123;.\zziplib;.\winpcap;userconfig;defaultconfig;.\7z;.\agg\include;.\agg\examples"
PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;GLIB_STATIC_COMPILATION;WIN32;HAVE_LIBZ;HAVE_LIBZZIP;SPU_INTERPOLATE;NOMINMAX;NDEBUG;RELEASE;EXPERIMENTAL_WIFI;_WIN32_WINNT=0x0501"
PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;GLIB_STATIC_COMPILATION;WIN32;HAVE_LIBZ;HAVE_LIBZZIP;SPU_INTERPOLATE;NOMINMAX;NDEBUG;RELEASE;_WIN32_WINNT=0x0501"
StringPooling="true"
ExceptionHandling="1"
BasicRuntimeChecks="0"

View File

@ -56,7 +56,7 @@
EnableFiberSafeOptimizations="false"
WholeProgramOptimization="false"
AdditionalIncludeDirectories=".;..;&quot;lua\lua-5.1.4\src&quot;;&quot;glib-2.20.1\build&quot;;&quot;glib-2.20.1\build\glib&quot;;.\zlib123;.\zziplib;.\winpcap;userconfig;defaultconfig;.\7z;.\agg\include;.\agg\examples"
PreprocessorDefinitions="DEBUG;_CRT_SECURE_NO_DEPRECATE;GLIB_STATIC_COMPILATION;WIN32;BETA_VERSION;SPU_INTERPOLATE;NOMINMAX;EXPERIMENTAL_WIFI;HAVE_LIBZ;HAVE_LIBZZIP"
PreprocessorDefinitions="DEBUG;_CRT_SECURE_NO_DEPRECATE;GLIB_STATIC_COMPILATION;WIN32;BETA_VERSION;SPU_INTERPOLATE;NOMINMAX;HAVE_LIBZ;HAVE_LIBZZIP"
ExceptionHandling="1"
BasicRuntimeChecks="3"
BufferSecurityCheck="true"
@ -236,7 +236,7 @@
EnableFiberSafeOptimizations="true"
WholeProgramOptimization="true"
AdditionalIncludeDirectories=".;..;&quot;lua\lua-5.1.4\src&quot;;&quot;glib-2.20.1\build&quot;;&quot;glib-2.20.1\build\glib&quot;;.\zlib123;.\zziplib;.\winpcap;userconfig;defaultconfig;.\7z;.\agg\include;.\agg\examples"
PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;GLIB_STATIC_COMPILATION;WIN32;HAVE_LIBZ;HAVE_LIBZZIP;SSE2;SPU_INTERPOLATE;NOMINMAX;RELEASE;EXPERIMENTAL_WIFI;NDEBUG"
PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;GLIB_STATIC_COMPILATION;WIN32;HAVE_LIBZ;HAVE_LIBZZIP;SSE2;SPU_INTERPOLATE;NOMINMAX;RELEASE;NDEBUG"
StringPooling="true"
ExceptionHandling="1"
StructMemberAlignment="0"
@ -424,7 +424,7 @@
EnableFiberSafeOptimizations="true"
WholeProgramOptimization="false"
AdditionalIncludeDirectories=".;..;&quot;lua\lua-5.1.4\src&quot;;&quot;glib-2.20.1\build&quot;;&quot;glib-2.20.1\build\glib&quot;;.\zlib123;.\zziplib;.\winpcap;userconfig;defaultconfig;.\7z;.\agg\include;.\agg\examples"
PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;GLIB_STATIC_COMPILATION;WIN32;HAVE_LIBZ;HAVE_LIBZZIP;SSE2;SPU_INTERPOLATE;NOMINMAX;RELEASE;EXPERIMENTAL_WIFI;NDEBUG"
PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;GLIB_STATIC_COMPILATION;WIN32;HAVE_LIBZ;HAVE_LIBZZIP;SSE2;SPU_INTERPOLATE;NOMINMAX;RELEASE;NDEBUG"
StringPooling="true"
ExceptionHandling="1"
StructMemberAlignment="0"

View File

@ -13,5 +13,8 @@
//#define DEVELOPER //enables dev+ features
//#define GDB_STUB //enables the gdb stub. for some reason this is separate from dev+ for now
//#define EXPERIMENTAL_WIFI_COMM //enables experimental wifi communication features which do not actually work yet
//basic wifi register emulation is still enabled, to at least make it seem like the wifi is working in an empty universe
#endif //_USERCONFIG_H

View File

@ -1938,7 +1938,7 @@ class WinDriver : public BaseDriver
{
virtual bool WIFI_Host_InitSystem()
{
#ifdef EXPERIMENTAL_WIFI
#ifdef EXPERIMENTAL_WIFI_COMM
WSADATA wsaData;
WORD version = MAKEWORD(1,1);
if (WSAStartup(version, &wsaData))
@ -1955,12 +1955,12 @@ class WinDriver : public BaseDriver
FreeLibrary(temp);
return true;
#else
return false ;
return false;
#endif
}
virtual void WIFI_Host_ShutdownSystem()
{
#ifdef EXPERIMENTAL_WIFI
#ifdef EXPERIMENTAL_WIFI_COMM
WSACleanup();
#endif
}
@ -2301,7 +2301,7 @@ int _main()
DragAcceptFiles(MainWindow->getHWnd(), TRUE);
#ifdef EXPERIMENTAL_WIFI
#ifdef EXPERIMENTAL_WIFI_COMM
EnableMenuItem(mainMenu, IDM_WIFISETTINGS, MF_ENABLED);
#endif
@ -3399,7 +3399,7 @@ void RunConfig(CONFIGSCREEN which)
DialogBox(hAppInst, MAKEINTRESOURCE(IDD_PATHSETTINGS), hwnd, (DLGPROC)PathSettingsDlgProc);
break;
case CONFIGSCREEN_WIFI:
#ifdef EXPERIMENTAL_WIFI
#ifdef EXPERIMENTAL_WIFI_COMM
if(wifi_netEnabled)
{
DialogBox(hAppInst,MAKEINTRESOURCE(IDD_WIFISETTINGS), hwnd, (DLGPROC) WifiSettingsDlgProc);
@ -5281,7 +5281,7 @@ LRESULT CALLBACK MicrophoneSettingsDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam,
LRESULT CALLBACK WifiSettingsDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
#ifdef EXPERIMENTAL_WIFI
#ifdef EXPERIMENTAL_WIFI_COMM
switch(uMsg)
{
case WM_INITDIALOG:

View File

@ -86,7 +86,7 @@ LRESULT MapView_OnPaint(mapview_struct * win, HWND hwnd, WPARAM wParam, LPARAM l
BITMAPV4HEADER bmi;
u16 lg;
u16 ht;
BGxPARMS * parms;
//BGxPARMS * parms;
//CreateBitmapIndirect(&bmi);
memset(&bmi, 0, sizeof(bmi));

View File

@ -26,7 +26,7 @@
#include "../common.h"
#include "CWindow.h"
#ifdef EXPERIMENTAL_WIFI
#ifdef EXPERIMENTAL_WIFI_COMM
#include <pcap.h>
#include <remote-ext.h> //uh?