mirror of
https://github.com/AppleWin/AppleWin.git
synced 2025-01-10 13:29:56 +00:00
Version 1.14.1.1 (beta)
. Fix: Mouse card is now reset on a system reset (reboot from Fantavision to Dazzle Draw : 'no mouse installed' problem) . Fix: CLEARMOUSE cmd was resetting the clamp value (Fantavision problem)
This commit is contained in:
parent
43e2546d46
commit
73f2f63298
@ -18,8 +18,14 @@ Restrictions/bugs:
|
|||||||
- During Mockingboard playback, Speaker emulation isn't precise
|
- During Mockingboard playback, Speaker emulation isn't precise
|
||||||
|
|
||||||
|
|
||||||
1.14.1 - 09 Aug 2007 (beta)
|
1.14.1.1 - 13 Aug 2007 (beta)
|
||||||
---------------------------
|
-----------------------------
|
||||||
|
. Fix: Infiltrator (floating bus was not being returned for all unmapped I/O)
|
||||||
|
. Fix: Mouse card is now reset on a system reset (reboot from Fantavision to Dazzle Draw : 'no mouse installed' problem)
|
||||||
|
. Fix: CLEARMOUSE cmd was resetting the clamp value (Fantavision problem)
|
||||||
|
|
||||||
|
1.14.1.0 - 09 Aug 2007 (beta)
|
||||||
|
-----------------------------
|
||||||
. Fix: Mouse support in Contiki v1.3
|
. Fix: Mouse support in Contiki v1.3
|
||||||
|
|
||||||
|
|
||||||
|
@ -210,8 +210,8 @@ DISK_ICON ICON "DISK.ICO"
|
|||||||
//
|
//
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION 1,14,1,0
|
FILEVERSION 1,14,1,1
|
||||||
PRODUCTVERSION 1,14,1,0
|
PRODUCTVERSION 1,14,1,1
|
||||||
FILEFLAGSMASK 0x3fL
|
FILEFLAGSMASK 0x3fL
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
FILEFLAGS 0x1L
|
FILEFLAGS 0x1L
|
||||||
@ -229,12 +229,12 @@ BEGIN
|
|||||||
VALUE "Comments", "http://applewin.berlios.de"
|
VALUE "Comments", "http://applewin.berlios.de"
|
||||||
VALUE "CompanyName", "Michael O'Brien, Oliver Schmidt, Tom Charlesworth"
|
VALUE "CompanyName", "Michael O'Brien, Oliver Schmidt, Tom Charlesworth"
|
||||||
VALUE "FileDescription", "Apple //e Emulator for Windows"
|
VALUE "FileDescription", "Apple //e Emulator for Windows"
|
||||||
VALUE "FileVersion", "1, 14, 1, 0"
|
VALUE "FileVersion", "1, 14, 1, 1"
|
||||||
VALUE "InternalName", "APPLEWIN"
|
VALUE "InternalName", "APPLEWIN"
|
||||||
VALUE "LegalCopyright", "© 1994-2007 Michael O'Brien, Oliver Schmidt, Tom Charlesworth, Michael Pohoreski, Nick Westgate, Linards Ticmanis"
|
VALUE "LegalCopyright", "© 1994-2007 Michael O'Brien, Oliver Schmidt, Tom Charlesworth, Michael Pohoreski, Nick Westgate, Linards Ticmanis"
|
||||||
VALUE "OriginalFilename", "APPLEWIN.EXE"
|
VALUE "OriginalFilename", "APPLEWIN.EXE"
|
||||||
VALUE "ProductName", "Apple //e Emulator"
|
VALUE "ProductName", "Apple //e Emulator"
|
||||||
VALUE "ProductVersion", "1, 14, 1, 0"
|
VALUE "ProductVersion", "1, 14, 1, 1"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
|
@ -1114,6 +1114,7 @@ void ResetMachineState () {
|
|||||||
JoyReset();
|
JoyReset();
|
||||||
MB_Reset();
|
MB_Reset();
|
||||||
SpkrReset();
|
SpkrReset();
|
||||||
|
sg_Mouse.Reset();
|
||||||
|
|
||||||
SoundCore_SetFade(FADE_NONE);
|
SoundCore_SetFade(FADE_NONE);
|
||||||
}
|
}
|
||||||
|
@ -59,30 +59,9 @@ CMouseInterface::CMouseInterface() :
|
|||||||
m_6821.SetListenerB( this, M6821_Listener_B );
|
m_6821.SetListenerB( this, M6821_Listener_B );
|
||||||
m_6821.SetListenerA( this, M6821_Listener_A );
|
m_6821.SetListenerA( this, M6821_Listener_A );
|
||||||
// g_cDIMouse.SetMouseListener( this, MouseHandler );
|
// g_cDIMouse.SetMouseListener( this, MouseHandler );
|
||||||
m_by6821A = 0;
|
|
||||||
m_by6821B = 0x40; // Set PB6
|
|
||||||
m_6821.SetPB(m_by6821B);
|
|
||||||
m_bVBL = FALSE;
|
|
||||||
|
|
||||||
//
|
|
||||||
|
|
||||||
m_iX = 0;
|
|
||||||
m_iMinX = 0;
|
|
||||||
m_iMaxX = 1023;
|
|
||||||
m_iRangeX = 0;
|
|
||||||
|
|
||||||
m_iY = 0;
|
|
||||||
m_iMinY = 0;
|
|
||||||
m_iMaxY = 1023;
|
|
||||||
m_iRangeY = 0;
|
|
||||||
|
|
||||||
m_bButtons[0] = m_bButtons[1] = FALSE;
|
|
||||||
|
|
||||||
//
|
|
||||||
|
|
||||||
|
Uninitialize();
|
||||||
Reset();
|
Reset();
|
||||||
memset( m_byBuff, 0, sizeof( m_byBuff ) );
|
|
||||||
m_bActive = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CMouseInterface::~CMouseInterface()
|
CMouseInterface::~CMouseInterface()
|
||||||
@ -129,8 +108,44 @@ void CMouseInterface::Initialize(LPBYTE pCxRomPeripheral, UINT uSlot)
|
|||||||
m_bActive = true;
|
m_bActive = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CMouseInterface::Uninitialize()
|
||||||
|
{
|
||||||
|
m_bActive = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CMouseInterface::Reset()
|
||||||
|
{
|
||||||
|
m_by6821A = 0;
|
||||||
|
m_by6821B = 0x40; // Set PB6
|
||||||
|
m_6821.SetPB(m_by6821B);
|
||||||
|
m_bVBL = FALSE;
|
||||||
|
|
||||||
|
//
|
||||||
|
|
||||||
|
m_iX = 0;
|
||||||
|
m_iMinX = 0;
|
||||||
|
m_iMaxX = 1023;
|
||||||
|
m_iRangeX = 0;
|
||||||
|
|
||||||
|
m_iY = 0;
|
||||||
|
m_iMinY = 0;
|
||||||
|
m_iMaxY = 1023;
|
||||||
|
m_iRangeY = 0;
|
||||||
|
|
||||||
|
m_bButtons[0] = m_bButtons[1] = FALSE;
|
||||||
|
|
||||||
|
//
|
||||||
|
|
||||||
|
Clear();
|
||||||
|
memset( m_byBuff, 0, sizeof( m_byBuff ) );
|
||||||
|
SetSlotRom();
|
||||||
|
}
|
||||||
|
|
||||||
void CMouseInterface::SetSlotRom()
|
void CMouseInterface::SetSlotRom()
|
||||||
{
|
{
|
||||||
|
if (!m_bActive)
|
||||||
|
return;
|
||||||
|
|
||||||
LPBYTE pCxRomPeripheral = MemGetCxRomPeripheral();
|
LPBYTE pCxRomPeripheral = MemGetCxRomPeripheral();
|
||||||
if (pCxRomPeripheral == NULL)
|
if (pCxRomPeripheral == NULL)
|
||||||
return;
|
return;
|
||||||
@ -255,7 +270,7 @@ void CMouseInterface::OnCommand()
|
|||||||
CpuIrqDeassert(IS_MOUSE);
|
CpuIrqDeassert(IS_MOUSE);
|
||||||
break;
|
break;
|
||||||
case MOUSE_CLEAR:
|
case MOUSE_CLEAR:
|
||||||
Reset();
|
Clear(); // [TC] NB. Don't reset clamp values (eg. Fantavision)
|
||||||
m_nDataLen = 1;
|
m_nDataLen = 1;
|
||||||
break;
|
break;
|
||||||
case MOUSE_POS:
|
case MOUSE_POS:
|
||||||
@ -341,7 +356,7 @@ void CMouseInterface::OnMouseEvent()
|
|||||||
if ( m_bVBL )
|
if ( m_bVBL )
|
||||||
byState |= 0x08;
|
byState |= 0x08;
|
||||||
//byState &= m_byMode & 0x2E;
|
//byState &= m_byMode & 0x2E;
|
||||||
byState &= ((m_byMode & 0x0E) | 0x20); // Keep "X/Y moved since last READMOUSE" for next MOUSE_READ (Contiki v1.3 uses this)
|
byState &= ((m_byMode & 0x0E) | 0x20); // [TC] Keep "X/Y moved since last READMOUSE" for next MOUSE_READ (Contiki v1.3 uses this)
|
||||||
|
|
||||||
if ( byState & 0x0E )
|
if ( byState & 0x0E )
|
||||||
{
|
{
|
||||||
@ -360,7 +375,7 @@ void CMouseInterface::SetVBlank(bool bVBL)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMouseInterface::Reset()
|
void CMouseInterface::Clear()
|
||||||
{
|
{
|
||||||
m_nBuffPos = 0;
|
m_nBuffPos = 0;
|
||||||
m_nDataLen = 1;
|
m_nDataLen = 1;
|
||||||
@ -371,8 +386,6 @@ void CMouseInterface::Reset()
|
|||||||
m_nY = 0;
|
m_nY = 0;
|
||||||
m_bBtn0 = 0;
|
m_bBtn0 = 0;
|
||||||
m_bBtn1 = 0;
|
m_bBtn1 = 0;
|
||||||
ClampX( 0, 1023 );
|
|
||||||
ClampY( 0, 1023 );
|
|
||||||
SetPosition( 0, 0 );
|
SetPosition( 0, 0 );
|
||||||
|
|
||||||
// CpuIrqDeassert(IS_MOUSE);
|
// CpuIrqDeassert(IS_MOUSE);
|
||||||
@ -407,8 +420,23 @@ void CMouseInterface::SetPosition(int xvalue, int yvalue)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if NDEBUG
|
||||||
m_iX = (UINT) ((xvalue*m_iMaxX) / m_iRangeX);
|
m_iX = (UINT) ((xvalue*m_iMaxX) / m_iRangeX);
|
||||||
m_iY = (UINT) ((yvalue*m_iMaxY) / m_iRangeY);
|
m_iY = (UINT) ((yvalue*m_iMaxY) / m_iRangeY);
|
||||||
|
#else
|
||||||
|
if (m_iMaxX <= m_iRangeX)
|
||||||
|
{
|
||||||
|
m_iX = (UINT) ((xvalue*m_iMaxX) / m_iRangeX);
|
||||||
|
m_iY = (UINT) ((yvalue*m_iMaxY) / m_iRangeY);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// m_iX = (UINT) ((xvalue*m_iRangeX) / m_iMaxX);
|
||||||
|
// m_iY = (UINT) ((yvalue*m_iRangeY) / m_iMaxY);
|
||||||
|
m_iX = xvalue;
|
||||||
|
m_iY = yvalue;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMouseInterface::SetPosition(int xvalue, int xrange, int yvalue, int yrange)
|
void CMouseInterface::SetPosition(int xvalue, int xrange, int yvalue, int yrange)
|
||||||
@ -416,6 +444,15 @@ void CMouseInterface::SetPosition(int xvalue, int xrange, int yvalue, int yrange
|
|||||||
m_iRangeX = (UINT) xrange;
|
m_iRangeX = (UINT) xrange;
|
||||||
m_iRangeY = (UINT) yrange;
|
m_iRangeY = (UINT) yrange;
|
||||||
|
|
||||||
|
#if NDEBUG
|
||||||
|
#else
|
||||||
|
if (m_iMaxX > m_iRangeX)
|
||||||
|
{
|
||||||
|
xvalue = (int) ( ((float)xvalue / (float)m_iRangeX) * (float)m_iMaxX );
|
||||||
|
yvalue = (int) ( ((float)yvalue / (float)m_iRangeY) * (float)m_iMaxY );
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
SetPosition(xvalue, yvalue);
|
SetPosition(xvalue, yvalue);
|
||||||
OnMouseEvent();
|
OnMouseEvent();
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,8 @@ public:
|
|||||||
virtual ~CMouseInterface();
|
virtual ~CMouseInterface();
|
||||||
|
|
||||||
void Initialize(LPBYTE pCxRomPeripheral, UINT uSlot);
|
void Initialize(LPBYTE pCxRomPeripheral, UINT uSlot);
|
||||||
void Uninitialize(){ m_bActive = false; }
|
void Uninitialize();
|
||||||
|
void Reset();
|
||||||
void SetSlotRom();
|
void SetSlotRom();
|
||||||
static BYTE __stdcall IORead(WORD PC, WORD uAddr, BYTE bWrite, BYTE uValue, ULONG nCyclesLeft);
|
static BYTE __stdcall IORead(WORD PC, WORD uAddr, BYTE bWrite, BYTE uValue, ULONG nCyclesLeft);
|
||||||
static BYTE __stdcall IOWrite(WORD PC, WORD uAddr, BYTE bWrite, BYTE uValue, ULONG nCyclesLeft);
|
static BYTE __stdcall IOWrite(WORD PC, WORD uAddr, BYTE bWrite, BYTE uValue, ULONG nCyclesLeft);
|
||||||
@ -29,7 +30,7 @@ protected:
|
|||||||
void OnCommand();
|
void OnCommand();
|
||||||
void OnWrite();
|
void OnWrite();
|
||||||
void OnMouseEvent();
|
void OnMouseEvent();
|
||||||
void Reset();
|
void Clear();
|
||||||
|
|
||||||
friend WRITE_HANDLER( M6821_Listener_A );
|
friend WRITE_HANDLER( M6821_Listener_A );
|
||||||
friend WRITE_HANDLER( M6821_Listener_B );
|
friend WRITE_HANDLER( M6821_Listener_B );
|
||||||
|
Loading…
x
Reference in New Issue
Block a user