mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-01-25 15:31:17 +01:00
Ban compression of Wii images until it has been tested. All sorts of minor cleanup.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@669 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
284e3ec211
commit
e4785df7a2
@ -49,6 +49,11 @@
|
||||
#endif
|
||||
|
||||
#ifdef _WIN32
|
||||
#ifdef _WIN32
|
||||
#define fseek _fseeki64
|
||||
#define ftell _ftelli64
|
||||
#endif
|
||||
|
||||
#define POSIX 0
|
||||
#define NOMINMAX
|
||||
|
||||
|
@ -110,6 +110,8 @@ void CLogWindow::OnClear(wxCommandEvent& event)
|
||||
|
||||
void CLogWindow::OnEnableAll(wxCommandEvent& event)
|
||||
{
|
||||
if (!LogManager::m_Log[0])
|
||||
return;
|
||||
static bool enable = true;
|
||||
IniFile ini;
|
||||
ini.Load("Dolphin.ini");
|
||||
|
@ -26,6 +26,7 @@
|
||||
|
||||
#include "Common.h"
|
||||
#include "CompressedBlob.h"
|
||||
#include "FileUtil.h"
|
||||
#include "Hash.h"
|
||||
|
||||
#ifdef _WIN32
|
||||
@ -35,11 +36,6 @@
|
||||
#include "../../../../Externals/zlib/zlib.h"
|
||||
#endif
|
||||
|
||||
#ifdef _WIN32
|
||||
#define fseek _fseeki64
|
||||
#endif
|
||||
|
||||
|
||||
namespace DiscIO
|
||||
{
|
||||
|
||||
@ -163,6 +159,11 @@ void CompressedBlobReader::GetBlock(u64 block_num, u8 *out_ptr)
|
||||
bool CompressFileToBlob(const char* infile, const char* outfile, u32 sub_type,
|
||||
int block_size, CompressCB callback, void* arg)
|
||||
{
|
||||
if (File::GetSize(infile) > 2000000000ULL) {
|
||||
PanicAlert("Sorry - compressing Wii games not yet supported.");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (IsCompressedBlob(infile))
|
||||
{
|
||||
PanicAlert("%s is already compressed! Cannot compress it further.", infile);
|
||||
|
@ -137,6 +137,7 @@ size_t CFileSystemGCWii::GetFileList(std::vector<const SFileInfo *> &_rFilenames
|
||||
if (_rFilenames.size())
|
||||
PanicAlert("GetFileList : input list has contents?");
|
||||
_rFilenames.clear();
|
||||
_rFilenames.reserve(m_FileInfoVector.size());
|
||||
for (size_t i = 0; i < m_FileInfoVector.size(); i++)
|
||||
_rFilenames.push_back(&m_FileInfoVector[i]);
|
||||
return m_FileInfoVector.size();
|
||||
@ -182,9 +183,11 @@ bool CFileSystemGCWii::InitFileSystem()
|
||||
|
||||
if (Root.IsDirectory())
|
||||
{
|
||||
m_FileInfoVector.clear();
|
||||
if (m_FileInfoVector.size())
|
||||
PanicAlert("Wtf?");
|
||||
u64 NameTableOffset = FSTOffset;
|
||||
|
||||
m_FileInfoVector.reserve(Root.m_FileSize);
|
||||
for (u32 i = 0; i < Root.m_FileSize; i++)
|
||||
{
|
||||
SFileInfo sfi;
|
||||
@ -194,7 +197,6 @@ bool CFileSystemGCWii::InitFileSystem()
|
||||
sfi.m_FileSize = Read32(Offset + 0x8);
|
||||
|
||||
m_FileInfoVector.push_back(sfi);
|
||||
|
||||
NameTableOffset += 0xC;
|
||||
}
|
||||
|
||||
|
@ -79,7 +79,7 @@ IVolume* CreateVolumeFromFilename(const std::string& _rFilename)
|
||||
{
|
||||
case DISC_TYPE_WII:
|
||||
case DISC_TYPE_GC:
|
||||
return(new CVolumeGC(pReader));
|
||||
return new CVolumeGC(pReader);
|
||||
|
||||
case DISC_TYPE_WII_CONTAINER:
|
||||
{
|
||||
@ -106,7 +106,7 @@ IVolume* CreateVolumeFromFilename(const std::string& _rFilename)
|
||||
|
||||
IVolume* CreateVolumeFromDirectory(const std::string& _rDirectory, bool _bIsWii)
|
||||
{
|
||||
if(CVolumeDirectory::IsValidDirectory(_rDirectory))
|
||||
if (CVolumeDirectory::IsValidDirectory(_rDirectory))
|
||||
return new CVolumeDirectory(_rDirectory, _bIsWii);
|
||||
|
||||
return NULL;
|
||||
|
@ -421,7 +421,7 @@ void CVolumeDirectory::WriteEntry(const File::FSTEntry& entry, u32& fstOffset, u
|
||||
m_virtualDisk.insert(make_pair(dataOffset, entry.physicalName));
|
||||
|
||||
// 4 byte aligned
|
||||
dataOffset = (dataOffset + entry.size + 3) & ~3;
|
||||
dataOffset = (dataOffset + entry.size + 3) & ~3ULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -26,63 +26,63 @@
|
||||
|
||||
class CGameListCtrl : public wxListCtrl
|
||||
{
|
||||
public:
|
||||
public:
|
||||
|
||||
CGameListCtrl(wxWindow* parent, const wxWindowID id, const wxPoint& pos, const wxSize& size, long style);
|
||||
~CGameListCtrl();
|
||||
CGameListCtrl(wxWindow* parent, const wxWindowID id, const wxPoint& pos, const wxSize& size, long style);
|
||||
~CGameListCtrl();
|
||||
|
||||
void Update();
|
||||
void BrowseForDirectory();
|
||||
const GameListItem *GetSelectedISO() const;
|
||||
const GameListItem *GetISO(int index) const;
|
||||
void Update();
|
||||
void BrowseForDirectory();
|
||||
const GameListItem *GetSelectedISO() const;
|
||||
const GameListItem *GetISO(int index) const;
|
||||
|
||||
enum
|
||||
{
|
||||
COLUMN_BANNER = 0,
|
||||
COLUMN_TITLE,
|
||||
COLUMN_COMPANY,
|
||||
COLUMN_NOTES,
|
||||
COLUMN_COUNTRY,
|
||||
COLUMN_SIZE,
|
||||
COLUMN_EMULATION_STATE,
|
||||
NUMBER_OF_COLUMN
|
||||
};
|
||||
enum
|
||||
{
|
||||
COLUMN_BANNER = 0,
|
||||
COLUMN_TITLE,
|
||||
COLUMN_COMPANY,
|
||||
COLUMN_NOTES,
|
||||
COLUMN_COUNTRY,
|
||||
COLUMN_SIZE,
|
||||
COLUMN_EMULATION_STATE,
|
||||
NUMBER_OF_COLUMN
|
||||
};
|
||||
|
||||
private:
|
||||
private:
|
||||
|
||||
std::vector<int> m_FlagImageIndex;
|
||||
std::vector<GameListItem> m_ISOFiles;
|
||||
std::vector<int> m_FlagImageIndex;
|
||||
std::vector<GameListItem> m_ISOFiles;
|
||||
|
||||
int last_column;
|
||||
int last_sort;
|
||||
int last_column;
|
||||
int last_sort;
|
||||
|
||||
void InitBitmaps();
|
||||
void InsertItemInReportView(long _Index);
|
||||
void SetBackgroundColor();
|
||||
void ScanForISOs();
|
||||
void InitBitmaps();
|
||||
void InsertItemInReportView(long _Index);
|
||||
void SetBackgroundColor();
|
||||
void ScanForISOs();
|
||||
|
||||
DECLARE_EVENT_TABLE()
|
||||
DECLARE_EVENT_TABLE()
|
||||
|
||||
// events
|
||||
void OnRightClick(wxMouseEvent& event);
|
||||
void OnColumnClick(wxListEvent& event);
|
||||
void OnColBeginDrag(wxListEvent& event);
|
||||
void OnColEndDrag(wxListEvent& event);
|
||||
void OnSelected(wxListEvent& event);
|
||||
void OnActivated(wxListEvent& event);
|
||||
void OnSize(wxSizeEvent& event);
|
||||
void OnEditPatchFile(wxCommandEvent& event);
|
||||
void OnOpenContainingFolder(wxCommandEvent& event);
|
||||
void OnSetDefaultGCM(wxCommandEvent& event);
|
||||
void OnDeleteGCM(wxCommandEvent& event);
|
||||
void OnCompressGCM(wxCommandEvent& event);
|
||||
void OnFilesystemViewer(wxCommandEvent& event);
|
||||
// events
|
||||
void OnRightClick(wxMouseEvent& event);
|
||||
void OnColumnClick(wxListEvent& event);
|
||||
void OnColBeginDrag(wxListEvent& event);
|
||||
void OnColEndDrag(wxListEvent& event);
|
||||
void OnSelected(wxListEvent& event);
|
||||
void OnActivated(wxListEvent& event);
|
||||
void OnSize(wxSizeEvent& event);
|
||||
void OnEditPatchFile(wxCommandEvent& event);
|
||||
void OnOpenContainingFolder(wxCommandEvent& event);
|
||||
void OnSetDefaultGCM(wxCommandEvent& event);
|
||||
void OnDeleteGCM(wxCommandEvent& event);
|
||||
void OnCompressGCM(wxCommandEvent& event);
|
||||
void OnFilesystemViewer(wxCommandEvent& event);
|
||||
|
||||
virtual bool MSWDrawSubItem(wxPaintDC& rPaintDC, int item, int subitem);
|
||||
virtual bool MSWDrawSubItem(wxPaintDC& rPaintDC, int item, int subitem);
|
||||
|
||||
void AutomaticColumnWidth();
|
||||
void AutomaticColumnWidth();
|
||||
|
||||
static void CompressCB(const char* text, float percent, void* arg);
|
||||
static void CompressCB(const char* text, float percent, void* arg);
|
||||
};
|
||||
|
||||
|
||||
|
@ -18,7 +18,8 @@
|
||||
#include <vector>
|
||||
#include <string>
|
||||
#ifdef WIN32
|
||||
#include "svnrev.h"
|
||||
#include <crtdbg.h>
|
||||
#include "svnrev.h"
|
||||
#endif
|
||||
#include "CPUDetect.h"
|
||||
#include "Globals.h"
|
||||
@ -69,6 +70,13 @@ LONG WINAPI MyUnhandledExceptionFilter(LPEXCEPTION_POINTERS e) {
|
||||
bool DolphinApp::OnInit()
|
||||
{
|
||||
DetectCPU();
|
||||
|
||||
#ifdef _DEBUG
|
||||
int tmpflag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
|
||||
tmpflag |= _CRTDBG_DELAY_FREE_MEM_DF;
|
||||
_CrtSetDbgFlag(tmpflag);
|
||||
#endif
|
||||
|
||||
#ifndef _WIN32
|
||||
// RegisterPanicAlertHandler(&wxPanicAlert);
|
||||
#endif
|
||||
|
@ -42,9 +42,7 @@ CDSPHandler::~CDSPHandler()
|
||||
void CDSPHandler::Update()
|
||||
{
|
||||
if (m_pUCode != NULL)
|
||||
{
|
||||
m_pUCode->Update();
|
||||
}
|
||||
}
|
||||
|
||||
unsigned short CDSPHandler::WriteControlRegister(unsigned short _Value)
|
||||
@ -64,32 +62,29 @@ unsigned short CDSPHandler::WriteControlRegister(unsigned short _Value)
|
||||
}
|
||||
|
||||
m_DSPControl.Hex = Temp.Hex;
|
||||
|
||||
return(m_DSPControl.Hex);
|
||||
return m_DSPControl.Hex;
|
||||
}
|
||||
|
||||
unsigned short CDSPHandler::ReadControlRegister()
|
||||
{
|
||||
return(m_DSPControl.Hex);
|
||||
return m_DSPControl.Hex;
|
||||
}
|
||||
|
||||
void CDSPHandler::SendMailToDSP(u32 _uMail)
|
||||
{
|
||||
if (m_pUCode != NULL)
|
||||
{
|
||||
m_pUCode->HandleMail(_uMail);
|
||||
}
|
||||
}
|
||||
|
||||
IUCode* CDSPHandler::GetUCode()
|
||||
{
|
||||
return(m_pUCode);
|
||||
return m_pUCode;
|
||||
}
|
||||
|
||||
void CDSPHandler::SetUCode(u32 _crc)
|
||||
{
|
||||
delete m_pUCode;
|
||||
|
||||
m_pUCode = NULL;
|
||||
m_MailHandler.Clear();
|
||||
m_pUCode = UCodeFactory(_crc, m_MailHandler);
|
||||
}
|
||||
|
@ -32,11 +32,11 @@ public:
|
||||
IUCode* GetUCode();
|
||||
void SetUCode(u32 _crc);
|
||||
|
||||
CMailHandler& AccessMailHandler() {return(m_MailHandler);}
|
||||
CMailHandler& AccessMailHandler() { return m_MailHandler; }
|
||||
|
||||
static CDSPHandler& GetInstance()
|
||||
{
|
||||
return(*m_pInstance);
|
||||
return *m_pInstance;
|
||||
}
|
||||
|
||||
static void Destroy()
|
||||
@ -48,11 +48,9 @@ public:
|
||||
static CDSPHandler& CreateInstance()
|
||||
{
|
||||
if (!m_pInstance)
|
||||
{
|
||||
m_pInstance = new CDSPHandler();
|
||||
}
|
||||
|
||||
return(*m_pInstance);
|
||||
return *m_pInstance;
|
||||
}
|
||||
|
||||
private:
|
||||
|
@ -18,7 +18,9 @@
|
||||
#include "MailHandler.h"
|
||||
|
||||
CMailHandler::CMailHandler()
|
||||
{}
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
CMailHandler::~CMailHandler()
|
||||
{
|
||||
@ -38,13 +40,11 @@ u16 CMailHandler::ReadDSPMailboxHigh()
|
||||
if (!m_Mails.empty())
|
||||
{
|
||||
u16 result = (m_Mails.front() >> 16) & 0xFFFF;
|
||||
|
||||
Update();
|
||||
|
||||
return(result);
|
||||
return result;
|
||||
}
|
||||
|
||||
return(0x00);
|
||||
return 0x00;
|
||||
}
|
||||
|
||||
u16 CMailHandler::ReadDSPMailboxLow()
|
||||
@ -60,20 +60,18 @@ u16 CMailHandler::ReadDSPMailboxLow()
|
||||
return(result);
|
||||
}
|
||||
|
||||
return(0x00);
|
||||
return 0x00;
|
||||
}
|
||||
|
||||
void CMailHandler::Clear()
|
||||
{
|
||||
while (!m_Mails.empty())
|
||||
{
|
||||
m_Mails.pop();
|
||||
}
|
||||
}
|
||||
|
||||
bool CMailHandler::IsEmpty()
|
||||
{
|
||||
return(m_Mails.empty());
|
||||
return m_Mails.empty();
|
||||
}
|
||||
|
||||
void CMailHandler::Halt(bool _Halt)
|
||||
|
@ -29,10 +29,13 @@ CUCode_Zelda::CUCode_Zelda(CMailHandler& _rMailHandler)
|
||||
: IUCode(_rMailHandler)
|
||||
, m_numSteps(0)
|
||||
, m_bListInProgress(false)
|
||||
, m_step(0)
|
||||
, m_readOffset(0)
|
||||
{
|
||||
DebugLog("UCode_Zelda - add boot mails for handshake");
|
||||
m_rMailHandler.PushMail(DSP_INIT);
|
||||
m_rMailHandler.PushMail(0x80000000); // handshake
|
||||
memset(m_Buffer, 0, sizeof(m_Buffer));
|
||||
}
|
||||
|
||||
|
||||
@ -46,9 +49,7 @@ void CUCode_Zelda::Update()
|
||||
{
|
||||
// check if we have to sent something
|
||||
if (!m_rMailHandler.IsEmpty())
|
||||
{
|
||||
g_dspInitialize.pGenerateDSPInterrupt();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -62,6 +63,8 @@ void CUCode_Zelda::HandleMail(u32 _uMail)
|
||||
}
|
||||
else
|
||||
{
|
||||
if (m_step < 0 || m_step >= sizeof(m_Buffer)/4)
|
||||
PanicAlert("m_step out of range");
|
||||
((u32*)m_Buffer)[m_step] = _uMail;
|
||||
m_step++;
|
||||
|
||||
|
@ -45,21 +45,21 @@ private:
|
||||
|
||||
u8 Read8()
|
||||
{
|
||||
return(m_Buffer[m_readOffset++]);
|
||||
return m_Buffer[m_readOffset++];
|
||||
}
|
||||
|
||||
u16 Read16()
|
||||
{
|
||||
u16 res = *(u16*)&m_Buffer[m_readOffset];
|
||||
m_readOffset += 2;
|
||||
return(res);
|
||||
return res;
|
||||
}
|
||||
|
||||
u32 Read32()
|
||||
{
|
||||
u32 res = *(u32*)&m_Buffer[m_readOffset];
|
||||
m_readOffset += 4;
|
||||
return(res);
|
||||
return res;
|
||||
}
|
||||
public:
|
||||
|
||||
|
@ -32,20 +32,20 @@ IUCode* UCodeFactory(u32 _CRC, CMailHandler& _rMailHandler)
|
||||
switch (_CRC)
|
||||
{
|
||||
case UCODE_ROM:
|
||||
return(new CUCode_Rom(_rMailHandler));
|
||||
return new CUCode_Rom(_rMailHandler);
|
||||
|
||||
case UCODE_INIT_AUDIO_SYSTEM:
|
||||
return(new CUCode_InitAudioSystem(_rMailHandler));
|
||||
return new CUCode_InitAudioSystem(_rMailHandler);
|
||||
|
||||
case 0x65d6cc6f: // CARD
|
||||
return(new CUCode_CARD(_rMailHandler));
|
||||
return new CUCode_CARD(_rMailHandler);
|
||||
|
||||
case 0x088e38a5: // IPL - JAP
|
||||
case 0xd73338cf: // IPL
|
||||
case 0x42f64ac4: // Luigi (after fix)
|
||||
case 0x4be6a5cb: // AC, Pikmin (after fix)
|
||||
DebugLog("JAC ucode chosen");
|
||||
return(new CUCode_Jac(_rMailHandler));
|
||||
return new CUCode_Jac(_rMailHandler);
|
||||
|
||||
case 0x3ad3b7ac: // Naruto3
|
||||
case 0x3daf59b9: // Alien Hominid
|
||||
@ -57,31 +57,31 @@ IUCode* UCodeFactory(u32 _CRC, CMailHandler& _rMailHandler)
|
||||
// Zelda:OOT, Tony hawk, viewtiful joe
|
||||
case 0xe2136399: // billy hatcher, dragonballz, mario party 5, TMNT, ava1080
|
||||
DebugLog("AX ucode chosen, yay!");
|
||||
return(new CUCode_AX(_rMailHandler));
|
||||
return new CUCode_AX(_rMailHandler);
|
||||
|
||||
case 0x6CA33A6D: // DK Jungle Beat
|
||||
case 0x86840740: // zelda
|
||||
case 0x56d36052: // mario
|
||||
case 0x2fcdf1ec: // mariokart, zelda 4 swords
|
||||
DebugLog("Zelda ucode chosen");
|
||||
return(new CUCode_Zelda(_rMailHandler));
|
||||
return new CUCode_Zelda(_rMailHandler);
|
||||
|
||||
// WII CRCs
|
||||
case 0x6c3f6f94: // zelda - PAL
|
||||
case 0xd643001f: // mario galaxy - PAL
|
||||
DebugLog("Zelda Wii ucode chosen");
|
||||
return(new CUCode_Zelda(_rMailHandler));
|
||||
return new CUCode_Zelda(_rMailHandler);
|
||||
|
||||
case 0x347112ba: // raving rabbits
|
||||
DebugLog("Wii - AX chosen");
|
||||
return(new CUCode_AX(_rMailHandler, true));
|
||||
return new CUCode_AX(_rMailHandler, true);
|
||||
|
||||
default:
|
||||
PanicAlert("Unknown ucode (CRC = %08x) - forcing AX", _CRC);
|
||||
return(new CUCode_AX(_rMailHandler));
|
||||
return new CUCode_AX(_rMailHandler);
|
||||
}
|
||||
|
||||
return(NULL);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
|
@ -24,6 +24,7 @@
|
||||
#define UCODE_INIT_AUDIO_SYSTEM 0x0000001
|
||||
|
||||
class CMailHandler;
|
||||
|
||||
class IUCode
|
||||
{
|
||||
public:
|
||||
|
@ -132,6 +132,12 @@ void DSP_Initialize(DSPInitialize _dspInitialize)
|
||||
CDSPHandler::CreateInstance();
|
||||
|
||||
#ifdef _WIN32
|
||||
#ifdef _DEBUG
|
||||
int tmpflag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
|
||||
tmpflag |= _CRTDBG_DELAY_FREE_MEM_DF;
|
||||
_CrtSetDbgFlag(tmpflag);
|
||||
#endif
|
||||
|
||||
DSound::DSound_StartSound((HWND)g_dspInitialize.hWnd, 48000, Mixer);
|
||||
#else
|
||||
AOSound::AOSound_StartSound(48000, Mixer);
|
||||
@ -157,11 +163,11 @@ unsigned short DSP_ReadMailboxHigh(bool _CPUMailbox)
|
||||
{
|
||||
if (_CPUMailbox)
|
||||
{
|
||||
return((g_dspState.CPUMailbox >> 16) & 0xFFFF);
|
||||
return (g_dspState.CPUMailbox >> 16) & 0xFFFF;
|
||||
}
|
||||
else
|
||||
{
|
||||
return(CDSPHandler::GetInstance().AccessMailHandler().ReadDSPMailboxHigh());
|
||||
return CDSPHandler::GetInstance().AccessMailHandler().ReadDSPMailboxHigh();
|
||||
}
|
||||
}
|
||||
|
||||
@ -169,11 +175,11 @@ unsigned short DSP_ReadMailboxLow(bool _CPUMailbox)
|
||||
{
|
||||
if (_CPUMailbox)
|
||||
{
|
||||
return(g_dspState.CPUMailbox & 0xFFFF);
|
||||
return g_dspState.CPUMailbox & 0xFFFF;
|
||||
}
|
||||
else
|
||||
{
|
||||
return(CDSPHandler::GetInstance().AccessMailHandler().ReadDSPMailboxLow());
|
||||
return CDSPHandler::GetInstance().AccessMailHandler().ReadDSPMailboxLow();
|
||||
}
|
||||
}
|
||||
|
||||
@ -249,5 +255,4 @@ void DSP_SendAIBuffer(unsigned int address, int sample_rate)
|
||||
if ((counter & 255) == 0)
|
||||
DSound::DSound_UpdateSound();
|
||||
#endif
|
||||
|
||||
}
|
||||
|
@ -7,11 +7,10 @@
|
||||
//
|
||||
// Copyright (C) Microsoft Corporation. All Rights Reserved.
|
||||
//-----------------------------------------------------------------------------
|
||||
#define STRICT
|
||||
#define DIRECTINPUT_VERSION 0x0800
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
#define DIRECTINPUT_VERSION 0x0800
|
||||
|
||||
#include <basetsd.h>
|
||||
#include <tchar.h>
|
||||
#include <stdio.h>
|
||||
@ -21,9 +20,6 @@
|
||||
#include "MultiDI.h"
|
||||
#include <assert.h>
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: CMultiplayerInputDeviceManager
|
||||
// Desc: Constructor
|
||||
|
@ -303,8 +303,8 @@ void SendReportCoreAccelIr12() {
|
||||
|
||||
RECT screenRect;
|
||||
POINT point;
|
||||
_dbg_assert_(WIIMOTE, GetClipCursor(&screenRect));
|
||||
_dbg_assert_(WIIMOTE, GetCursorPos(&point));
|
||||
GetClipCursor(&screenRect);
|
||||
GetCursorPos(&point);
|
||||
y0 = y1 = (point.y * (screenRect.bottom - screenRect.top)) / (BOTTOM - TOP);
|
||||
int x = (point.x * (screenRect.right - screenRect.left)) / (RIGHT - LEFT);
|
||||
x0 = x - SENSOR_BAR_RADIUS;
|
||||
|
Loading…
x
Reference in New Issue
Block a user