diff --git a/src/gba/GBA.cpp b/src/gba/GBA.cpp index a07a1d22..75af7bd1 100644 --- a/src/gba/GBA.cpp +++ b/src/gba/GBA.cpp @@ -3890,9 +3890,6 @@ void CPULoop(int ticks) ticks -= clockTicks; - if(GetLinkMode() == LINK_GAMECUBE_DOLPHIN) - JoyBusUpdate(clockTicks); - if(GetLinkMode() != LINK_DISCONNECTED) LinkUpdate(clockTicks); diff --git a/src/gba/GBALink.cpp b/src/gba/GBALink.cpp index 4b9aae58..376a3af4 100644 --- a/src/gba/GBALink.cpp +++ b/src/gba/GBALink.cpp @@ -213,7 +213,7 @@ LinkMode GetLinkMode() { int linktime = 0; GBASockClient* dol = NULL; -sf::IPAddress joybusHostAddr = sf::IPAddress::LocalHost; +static sf::IPAddress joybusHostAddr = sf::IPAddress::LocalHost; // Hodgepodge u8 tspeed = 3; @@ -430,9 +430,8 @@ static void JoyBusShutdown() dol = NULL; } -void JoyBusUpdate(int ticks) +static void JoyBusUpdate() { - linktime += ticks; static int lastjoybusupdate = 0; // Kinda ugly hack to update joybus stuff intermittently @@ -514,6 +513,12 @@ void LinkUpdate(int ticks) return; } + if (GetLinkMode() == LINK_GAMECUBE_DOLPHIN) + { + JoyBusUpdate(); + return; + } + if (GetLinkMode() == LINK_CABLE_SOCKET) { if (after) @@ -1270,9 +1275,13 @@ ConnectionState ConnectLinkUpdate(char * const message, size_t size) return gba_connection_state; } -void SetLinkServerHost(const char *host) { - lc.serveraddr = sf::IPAddress(host); - joybusHostAddr = sf::IPAddress(host); +bool SetLinkServerHost(const char *host) { + sf::IPAddress addr = sf::IPAddress(host); + + lc.serveraddr = addr; + joybusHostAddr = addr; + + return addr.IsValid(); } void GetLinkServerHost(char * const host, size_t size) { diff --git a/src/gba/GBALink.h b/src/gba/GBALink.h index e1cfee21..320ab3d5 100644 --- a/src/gba/GBALink.h +++ b/src/gba/GBALink.h @@ -49,8 +49,10 @@ extern LinkMode GetLinkMode(); /** * Set the host to connect to when in socket mode + * + * @return false if the address is invalid */ -extern void SetLinkServerHost(const char *host); +extern bool SetLinkServerHost(const char *host); /** * Get the host relevant to context @@ -135,9 +137,6 @@ typedef struct { bool speed; } LANLINKDATA; -extern sf::IPAddress joybusHostAddr; -extern void JoyBusUpdate(int ticks); - extern void StartLink(u16); extern void StartGPLink(u16); extern void LinkUpdate(int); @@ -150,8 +149,6 @@ extern int linkid; #else // stubs to keep #ifdef's out of mainline -inline void JoyBusUpdate(int) { } - inline bool InitLink() { return true; } inline void CloseLink() { } inline void StartLink(u16) { } diff --git a/src/wx/cmdevents.cpp b/src/wx/cmdevents.cpp index e75d6665..351dcead 100644 --- a/src/wx/cmdevents.cpp +++ b/src/wx/cmdevents.cpp @@ -2131,7 +2131,7 @@ EVT_HANDLER(LinkConfigure, "Link options...") bool dolphinHostChanged = jh != gopts.joybus_host; if (newLinkMode != oldLinkMode || dolphinHostChanged) { - joybusHostAddr = std::string(gopts.joybus_host.mb_str()); + SetLinkServerHost(gopts.joybus_host.mb_str()); CloseLink(); InitLink(newLinkMode); } diff --git a/src/wx/guiinit.cpp b/src/wx/guiinit.cpp index ee15f1c0..6573200c 100644 --- a/src/wx/guiinit.cpp +++ b/src/wx/guiinit.cpp @@ -2766,8 +2766,8 @@ bool MainFrame::InitMore(void) addbier(lab, true); /// Boot ROM - getcbbe("BootRomEn", gopts.gb_use_bios); - getfp("BootRom", gopts.gb_bios); + getcbbe("BootRomEn", gopts.gba_use_bios); + getfp("BootRom", gopts.gba_bios); addbe(fp); getlab("BootRomLab"); addbe(lab); @@ -3129,8 +3129,7 @@ bool MainFrame::InitMore(void) if (linkMode == LINK_GAMECUBE_DOLPHIN) { bool isv = !gopts.joybus_host.empty(); if(isv) { - joybusHostAddr = std::string(gopts.joybus_host.mb_str()); - isv = joybusHostAddr.IsValid(); + isv = SetLinkServerHost(gopts.joybus_host.mb_str()); } if(!isv) {