Fixed the crash that would occur if a GBA link mode were used with a GB game.
git-svn-id: https://svn.code.sf.net/p/vbam/code/trunk@1243 a31d4220-a93d-0410-bf67-fe4944624d44
This commit is contained in:
parent
b03200a15f
commit
a483633c96
|
@ -806,7 +806,7 @@ void gbWriteMemory(register u16 address, register u8 value)
|
||||||
}
|
}
|
||||||
EmuReseted = false;
|
EmuReseted = false;
|
||||||
gbMemory[0xff02] = value;
|
gbMemory[0xff02] = value;
|
||||||
if (gbSerialOn) {
|
if (gbSerialOn && GetLinkMode() == LINK_GAMEBOY) {
|
||||||
gbSerialTicks = GBSERIAL_CLOCK_TICKS;
|
gbSerialTicks = GBSERIAL_CLOCK_TICKS;
|
||||||
|
|
||||||
LinkIsWaiting = true;
|
LinkIsWaiting = true;
|
||||||
|
@ -2199,8 +2199,10 @@ void gbGetHardwareType()
|
||||||
void gbReset()
|
void gbReset()
|
||||||
{
|
{
|
||||||
#ifndef NO_LINK
|
#ifndef NO_LINK
|
||||||
EmuReseted = true;
|
if (GetLinkMode() == LINK_GAMEBOY) {
|
||||||
gbLinkReset();
|
EmuReseted = true;
|
||||||
|
gbLinkReset();
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
gbGetHardwareType();
|
gbGetHardwareType();
|
||||||
|
@ -5237,7 +5239,8 @@ void gbEmulate(int ticksToStop)
|
||||||
static int SIOctr = 0;
|
static int SIOctr = 0;
|
||||||
SIOctr++;
|
SIOctr++;
|
||||||
if (SIOctr % 5)
|
if (SIOctr % 5)
|
||||||
if (gbSerialOn) { //Transfer Started
|
//Transfer Started
|
||||||
|
if (gbSerialOn && GetLinkMode() == LINK_GAMEBOY) {
|
||||||
#ifdef OLD_GB_LINK
|
#ifdef OLD_GB_LINK
|
||||||
if (linkConnected) {
|
if (linkConnected) {
|
||||||
gbSerialTicks -= clockTicks;
|
gbSerialTicks -= clockTicks;
|
||||||
|
|
|
@ -300,7 +300,6 @@ typedef struct {
|
||||||
int type;
|
int type;
|
||||||
bool server;
|
bool server;
|
||||||
bool speed; //speedhack
|
bool speed; //speedhack
|
||||||
bool active; //network/single computer
|
|
||||||
} LANLINKDATA;
|
} LANLINKDATA;
|
||||||
|
|
||||||
class lserver{
|
class lserver{
|
||||||
|
@ -1882,7 +1881,7 @@ bool LinkRFUUpdate()
|
||||||
{
|
{
|
||||||
//if (IsLinkConnected()) {
|
//if (IsLinkConnected()) {
|
||||||
//}
|
//}
|
||||||
if (!lanlink.active || rfu_enabled) {
|
if (rfu_enabled) {
|
||||||
if (transfer&&rfu_transfer_end <= 0)
|
if (transfer&&rfu_transfer_end <= 0)
|
||||||
{
|
{
|
||||||
if (rfu_waiting) {
|
if (rfu_waiting) {
|
||||||
|
@ -2231,6 +2230,9 @@ static ConnectionState InitSocket() {
|
||||||
|
|
||||||
ConnectionState InitLink(LinkMode mode)
|
ConnectionState InitLink(LinkMode mode)
|
||||||
{
|
{
|
||||||
|
if (mode == LINK_DISCONNECTED)
|
||||||
|
return LINK_ABORT;
|
||||||
|
|
||||||
// Do nothing if we are already connected
|
// Do nothing if we are already connected
|
||||||
if (GetLinkMode() != LINK_DISCONNECTED) {
|
if (GetLinkMode() != LINK_DISCONNECTED) {
|
||||||
systemMessage(0, N_("Error, link already connected"));
|
systemMessage(0, N_("Error, link already connected"));
|
||||||
|
@ -2720,7 +2722,7 @@ u8 gbStartLink(u8 b) //used on internal clock
|
||||||
if (!gba_link_enabled) return 0xff;
|
if (!gba_link_enabled) return 0xff;
|
||||||
|
|
||||||
//Single Computer
|
//Single Computer
|
||||||
if (!lanlink.active)
|
if (GetLinkMode() == LINK_GAMEBOY)
|
||||||
{
|
{
|
||||||
u32 tm = GetTickCount();
|
u32 tm = GetTickCount();
|
||||||
do {
|
do {
|
||||||
|
@ -2764,7 +2766,7 @@ u16 gbLinkUpdate(u8 b, int gbSerialOn) //used on external clock
|
||||||
if (gbSerialOn) {
|
if (gbSerialOn) {
|
||||||
if (gba_link_enabled)
|
if (gba_link_enabled)
|
||||||
//Single Computer
|
//Single Computer
|
||||||
if (!lanlink.active)
|
if (GetLinkMode() == LINK_GAMEBOY)
|
||||||
{
|
{
|
||||||
u32 tm;// = GetTickCount();
|
u32 tm;// = GetTickCount();
|
||||||
//do {
|
//do {
|
||||||
|
|
|
@ -133,6 +133,15 @@ void LinkOptions::OnOk()
|
||||||
SetLinkTimeout(timeout);
|
SetLinkTimeout(timeout);
|
||||||
|
|
||||||
LinkMode newMode = (LinkMode) m_type;
|
LinkMode newMode = (LinkMode) m_type;
|
||||||
|
|
||||||
|
if (newMode == LINK_DISCONNECTED) {
|
||||||
|
theApp.linkTimeout = timeout;
|
||||||
|
theApp.linkMode = LINK_DISCONNECTED;
|
||||||
|
theApp.linkHost = host;
|
||||||
|
CDialog::OnOK();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
bool needsServerHost = newMode == LINK_GAMECUBE_DOLPHIN || (newMode == LINK_CABLE_SOCKET && !m_server);
|
bool needsServerHost = newMode == LINK_GAMECUBE_DOLPHIN || (newMode == LINK_CABLE_SOCKET && !m_server);
|
||||||
|
|
||||||
if (needsServerHost) {
|
if (needsServerHost) {
|
||||||
|
|
Loading…
Reference in New Issue