commit
4c6a5b5313
|
@ -4,5 +4,5 @@ image:
|
||||||
- Ubuntu2004
|
- Ubuntu2004
|
||||||
#- Ubuntu1804
|
#- Ubuntu1804
|
||||||
build_script:
|
build_script:
|
||||||
- cmd: msbuild "./vc/vc14_fceux.sln"
|
- cmd: pipelines/win32_build.bat
|
||||||
- sh: ./pipelines/linux_build.sh
|
- sh: ./pipelines/linux_build.sh
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
|
|
||||||
my $VERSION="2.2.4";
|
my $VERSION="2.2.3";
|
||||||
my $INSTALL_PREFIX="/tmp/fceux";
|
my $INSTALL_PREFIX="/tmp/fceux";
|
||||||
my $CTL_FILENAME="$INSTALL_PREFIX/DEBIAN/control";
|
my $CTL_FILENAME="$INSTALL_PREFIX/DEBIAN/control";
|
||||||
my $ARCH="amd64";
|
my $ARCH="amd64";
|
||||||
|
|
|
@ -113,3 +113,6 @@ echo '**************************************************************'
|
||||||
echo 'Testing Install of Package'
|
echo 'Testing Install of Package'
|
||||||
echo '**************************************************************'
|
echo '**************************************************************'
|
||||||
sudo dpkg -i /tmp/fceux-*.deb
|
sudo dpkg -i /tmp/fceux-*.deb
|
||||||
|
|
||||||
|
echo 'Pushing Debian Package to Build Artifacts'
|
||||||
|
appveyor PushArtifact /tmp/fceux-*.deb
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
|
||||||
|
set PROJECT_ROOT=%~dp0..
|
||||||
|
|
||||||
|
REM echo %PROJECT_ROOT%
|
||||||
|
|
||||||
|
msbuild %PROJECT_ROOT%\vc\vc14_fceux.vcxproj
|
||||||
|
|
||||||
|
cd %PROJECT_ROOT%\vc
|
||||||
|
|
||||||
|
REM Copy Executable and dlls to output directory
|
||||||
|
copy vc14_bin_Debug\fceux.exe ..\output\.
|
||||||
|
copy vc14_bin_Debug\7z.dll ..\output\.
|
||||||
|
|
||||||
|
REM Create Zip Archive
|
||||||
|
REM archive.bat
|
||||||
|
cd %PROJECT_ROOT%\output
|
||||||
|
..\vc\zip -X -9 -r ..\vc\fceux.zip fceux.exe fceux.chm taseditor.chm 7z.dll *.dll palettes luaScripts tools
|
||||||
|
|
||||||
|
cd %PROJECT_ROOT%
|
||||||
|
|
||||||
|
appveyor PushArtifact %PROJECT_ROOT%\vc\fceux.zip
|
||||||
|
|
|
@ -145,12 +145,14 @@ public:
|
||||||
|
|
||||||
class ThreadData {
|
class ThreadData {
|
||||||
public:
|
public:
|
||||||
ThreadData() { kill = dead = false; }
|
ThreadData() { ds = NULL; kill = dead = false; }
|
||||||
OAKRA_Module_OutputDS *ds;
|
OAKRA_Module_OutputDS *ds;
|
||||||
bool kill,dead;
|
bool kill,dead;
|
||||||
};
|
};
|
||||||
|
|
||||||
OAKRA_Module_OutputDS::OAKRA_Module_OutputDS() {
|
OAKRA_Module_OutputDS::OAKRA_Module_OutputDS()
|
||||||
|
{
|
||||||
|
threadData = NULL;
|
||||||
data = new Data();
|
data = new Data();
|
||||||
((Data *)data)->global = false;
|
((Data *)data)->global = false;
|
||||||
InitializeCriticalSection(&((Data *)data)->criticalSection);
|
InitializeCriticalSection(&((Data *)data)->criticalSection);
|
||||||
|
@ -179,6 +181,7 @@ OAKRA_Voice *OAKRA_Module_OutputDS::getVoice(OAKRA_Format &format, OAKRA_Module
|
||||||
if(dsv->dead)
|
if(dsv->dead)
|
||||||
{
|
{
|
||||||
delete dsv;
|
delete dsv;
|
||||||
|
dsv = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -214,7 +217,7 @@ void OAKRA_Module_OutputDS::freeVoiceInternal(OAKRA_Voice *voice, bool internal)
|
||||||
if(!internal)
|
if(!internal)
|
||||||
{
|
{
|
||||||
delete voice;
|
delete voice;
|
||||||
voice = 0;
|
//voice = 0; // Assignment of function parameter has no effect outside the function, commenting out to avoid cppcheck warning
|
||||||
}
|
}
|
||||||
unlock();
|
unlock();
|
||||||
}
|
}
|
||||||
|
|
|
@ -181,7 +181,7 @@ protected:
|
||||||
public:
|
public:
|
||||||
|
|
||||||
explicit InStream()
|
explicit InStream()
|
||||||
: refCount(0)
|
: refCount(0), size(0)
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -374,17 +374,21 @@ void initArchiveSystem()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::string wstringFromPROPVARIANT(BSTR bstr, bool& success) {
|
static std::string wstringFromPROPVARIANT(BSTR bstr, bool& success)
|
||||||
|
{
|
||||||
|
std::string strret;
|
||||||
std::wstring tempfname = bstr;
|
std::wstring tempfname = bstr;
|
||||||
int buflen = tempfname.size()*2;
|
int buflen = tempfname.size()*2;
|
||||||
char* buf = new char[buflen];
|
char* buf = new char[buflen];
|
||||||
int ret = WideCharToMultiByte(CP_ACP,0,tempfname.c_str(),tempfname.size(),buf,buflen,0,0);
|
int ret = WideCharToMultiByte(CP_ACP,0,tempfname.c_str(),tempfname.size(),buf,buflen,0,0);
|
||||||
if(ret == 0) {
|
if (ret == 0)
|
||||||
|
{
|
||||||
delete[] buf;
|
delete[] buf;
|
||||||
success = false;
|
success = false;
|
||||||
|
return strret;
|
||||||
}
|
}
|
||||||
buf[ret] = 0;
|
buf[ret] = 0;
|
||||||
std::string strret = buf;
|
strret = buf;
|
||||||
delete[] buf;
|
delete[] buf;
|
||||||
success = true;
|
success = true;
|
||||||
return strret;
|
return strret;
|
||||||
|
@ -594,4 +598,4 @@ FCEUFILE* FCEUD_OpenArchive(ArchiveScanRecord& asr, std::string& fname, std::str
|
||||||
FCEUFILE* FCEUD_OpenArchive(ArchiveScanRecord& asr, std::string& fname, std::string* innerFilename)
|
FCEUFILE* FCEUD_OpenArchive(ArchiveScanRecord& asr, std::string& fname, std::string* innerFilename)
|
||||||
{
|
{
|
||||||
return FCEUD_OpenArchive(asr, fname, innerFilename, -1);
|
return FCEUD_OpenArchive(asr, fname, innerFilename, -1);
|
||||||
}
|
}
|
||||||
|
|
|
@ -538,7 +538,7 @@ INT_PTR CALLBACK CheatConsoleCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARA
|
||||||
break;
|
break;
|
||||||
case CHEAT_CONTEXT_POSSI_ADDTOMEMORYWATCH:
|
case CHEAT_CONTEXT_POSSI_ADDTOMEMORYWATCH:
|
||||||
{
|
{
|
||||||
char addr[16] = { 0 };
|
char addr[32] = { 0 };
|
||||||
int sel = SendDlgItemMessage(hwndDlg, IDC_CHEAT_LIST_POSSIBILITIES, LVM_GETSELECTIONMARK, 0, 0);
|
int sel = SendDlgItemMessage(hwndDlg, IDC_CHEAT_LIST_POSSIBILITIES, LVM_GETSELECTIONMARK, 0, 0);
|
||||||
if (sel != -1)
|
if (sel != -1)
|
||||||
{
|
{
|
||||||
|
@ -816,9 +816,9 @@ INT_PTR CALLBACK CheatConsoleCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARA
|
||||||
if (strchr(buf, ':'))
|
if (strchr(buf, ':'))
|
||||||
{
|
{
|
||||||
if (strchr(buf, '?'))
|
if (strchr(buf, '?'))
|
||||||
sscanf(buf, "%X:%X?%X", &a, &c, &v);
|
sscanf(buf, "%X:%X?%X", (unsigned int*)&a, (unsigned int*)&c, (unsigned int*)&v);
|
||||||
else
|
else
|
||||||
sscanf(buf, "%X:%X", &a, &v);
|
sscanf(buf, "%X:%X", (unsigned int*)&a, (unsigned int*)&v);
|
||||||
}
|
}
|
||||||
|
|
||||||
SetDlgItemText(hwndDlg, IDC_CHEAT_ADDR, (LPCSTR)(a == -1 ? "" : U16ToStr(a)));
|
SetDlgItemText(hwndDlg, IDC_CHEAT_ADDR, (LPCSTR)(a == -1 ? "" : U16ToStr(a)));
|
||||||
|
@ -978,7 +978,7 @@ INT_PTR CALLBACK CheatConsoleCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARA
|
||||||
break;
|
break;
|
||||||
case NM_DBLCLK:
|
case NM_DBLCLK:
|
||||||
{
|
{
|
||||||
char addr[16];
|
char addr[32];
|
||||||
sprintf(addr, "%04X", possiList[((NMITEMACTIVATE*)lParam)->iItem].addr);
|
sprintf(addr, "%04X", possiList[((NMITEMACTIVATE*)lParam)->iItem].addr);
|
||||||
AddMemWatch(addr);
|
AddMemWatch(addr);
|
||||||
}
|
}
|
||||||
|
@ -1035,19 +1035,19 @@ void UpdateCheatListGroupBoxUI()
|
||||||
char temp[64];
|
char temp[64];
|
||||||
if (FrozenAddressCount < 256)
|
if (FrozenAddressCount < 256)
|
||||||
{
|
{
|
||||||
sprintf(temp, "Active Cheats %d", FrozenAddressCount);
|
sprintf(temp, "Active Cheats %u", FrozenAddressCount);
|
||||||
EnableWindow(GetDlgItem(hCheat, IDC_BTN_CHEAT_ADD), TRUE);
|
EnableWindow(GetDlgItem(hCheat, IDC_BTN_CHEAT_ADD), TRUE);
|
||||||
EnableWindow(GetDlgItem(hCheat, IDC_BTN_CHEAT_ADDFROMFILE), TRUE);
|
EnableWindow(GetDlgItem(hCheat, IDC_BTN_CHEAT_ADDFROMFILE), TRUE);
|
||||||
}
|
}
|
||||||
else if (FrozenAddressCount == 256)
|
else if (FrozenAddressCount == 256)
|
||||||
{
|
{
|
||||||
sprintf(temp, "Active Cheats %d (Max Limit)", FrozenAddressCount);
|
sprintf(temp, "Active Cheats %u (Max Limit)", FrozenAddressCount);
|
||||||
EnableWindow(GetDlgItem(hCheat, IDC_BTN_CHEAT_ADD), FALSE);
|
EnableWindow(GetDlgItem(hCheat, IDC_BTN_CHEAT_ADD), FALSE);
|
||||||
EnableWindow(GetDlgItem(hCheat, IDC_BTN_CHEAT_ADDFROMFILE), FALSE);
|
EnableWindow(GetDlgItem(hCheat, IDC_BTN_CHEAT_ADDFROMFILE), FALSE);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sprintf(temp, "%d Error: Too many cheats loaded!", FrozenAddressCount);
|
sprintf(temp, "%u Error: Too many cheats loaded!", FrozenAddressCount);
|
||||||
EnableWindow(GetDlgItem(hCheat, IDC_BTN_CHEAT_ADD), FALSE);
|
EnableWindow(GetDlgItem(hCheat, IDC_BTN_CHEAT_ADD), FALSE);
|
||||||
EnableWindow(GetDlgItem(hCheat, IDC_BTN_CHEAT_ADDFROMFILE), FALSE);
|
EnableWindow(GetDlgItem(hCheat, IDC_BTN_CHEAT_ADDFROMFILE), FALSE);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1454,7 +1454,7 @@ int GetComboBoxByteSize(HWND hwnd, UINT id, int* value)
|
||||||
if (!GetComboBoxListItemData(hwnd, id, value, buf, true))
|
if (!GetComboBoxListItemData(hwnd, id, value, buf, true))
|
||||||
{
|
{
|
||||||
char buf2[4];
|
char buf2[4];
|
||||||
if (sscanf(buf, "%d%[KMB]", value, buf2) < 2 || !strcmp(buf2, ""))
|
if (sscanf(buf, "%d%3[KMB]", value, buf2) < 2 || !strcmp(buf2, ""))
|
||||||
err = errors::FORMAT_ERR;
|
err = errors::FORMAT_ERR;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1524,15 +1524,15 @@ bool GetComboBoxListItemData(HWND hwnd, UINT id, int* value, char* buf, bool exa
|
||||||
case IDC_VS_SYSTEM_COMBO:
|
case IDC_VS_SYSTEM_COMBO:
|
||||||
case IDC_VS_PPU_COMBO:
|
case IDC_VS_PPU_COMBO:
|
||||||
case IDC_SYSTEM_EXTEND_COMBO:
|
case IDC_SYSTEM_EXTEND_COMBO:
|
||||||
if (!(success = sscanf(buf, "$%X", value) > 0))
|
if (!(success = sscanf(buf, "$%X", (unsigned int *)value) > 0))
|
||||||
success = SearchByString(hwnd, id, value, buf);
|
success = SearchByString(hwnd, id, value, buf);
|
||||||
else
|
else
|
||||||
SetDlgItemText(hwnd, id, buf);
|
SetDlgItemText(hwnd, id, buf);
|
||||||
break;
|
break;
|
||||||
case IDC_INPUT_DEVICE_COMBO:
|
case IDC_INPUT_DEVICE_COMBO:
|
||||||
if (success = sscanf(buf, "$%X", value) > 0)
|
if (success = sscanf(buf, "$%X", (unsigned int *)value) > 0)
|
||||||
{
|
{
|
||||||
char buf2[3];
|
char buf2[8];
|
||||||
sprintf(buf2, "$%02X", *value);
|
sprintf(buf2, "$%02X", *value);
|
||||||
if (SendDlgItemMessage(hwnd, id, CB_SELECTSTRING, 0, (LPARAM)buf2) == CB_ERR)
|
if (SendDlgItemMessage(hwnd, id, CB_SELECTSTRING, 0, (LPARAM)buf2) == CB_ERR)
|
||||||
SetDlgItemText(hwnd, id, buf);
|
SetDlgItemText(hwnd, id, buf);
|
||||||
|
@ -1694,4 +1694,4 @@ bool SearchByString(HWND hwnd, UINT id, int* value, char* buf)
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,11 +52,17 @@ struct AddressWatcher
|
||||||
{
|
{
|
||||||
unsigned int Address; // hardware address
|
unsigned int Address; // hardware address
|
||||||
unsigned int CurValue;
|
unsigned int CurValue;
|
||||||
char* comment = NULL; // NULL means no comment, non-NULL means allocated comment
|
char* comment; // NULL means no comment, non-NULL means allocated comment
|
||||||
bool WrongEndian;
|
bool WrongEndian;
|
||||||
char Size; //'d' = 4 bytes, 'w' = 2 bytes, 'b' = 1 byte, and 'S' means it's a separator.
|
char Size; //'d' = 4 bytes, 'w' = 2 bytes, 'b' = 1 byte, and 'S' means it's a separator.
|
||||||
char Type;//'s' = signed integer, 'u' = unsigned, 'h' = hex, 'b' = binary, 'S' = separator
|
char Type;//'s' = signed integer, 'u' = unsigned, 'h' = hex, 'b' = binary, 'S' = separator
|
||||||
short Cheats; // how many bytes are affected by cheat
|
short Cheats; // how many bytes are affected by cheat
|
||||||
|
|
||||||
|
AddressWatcher(void)
|
||||||
|
{
|
||||||
|
Address = 0; CurValue = 0; comment = NULL; WrongEndian = false;
|
||||||
|
Size = 'b'; Type = 's'; Cheats = 0;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// the struct for communicating with add watch window
|
// the struct for communicating with add watch window
|
||||||
|
|
|
@ -42,7 +42,7 @@ struct FCEUFILE {
|
||||||
|
|
||||||
FCEUFILE()
|
FCEUFILE()
|
||||||
: stream(0)
|
: stream(0)
|
||||||
, archiveCount(-1)
|
, archiveCount(-1), archiveIndex(0), size(0), mode(READ)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
~FCEUFILE()
|
~FCEUFILE()
|
||||||
|
|
|
@ -484,6 +484,7 @@ static void SetInputStuff(int port)
|
||||||
joyports[port].driver=FCEU_InitVirtualBoy(port);
|
joyports[port].driver=FCEU_InitVirtualBoy(port);
|
||||||
break;
|
break;
|
||||||
case SI_NONE:
|
case SI_NONE:
|
||||||
|
case SI_UNSET:
|
||||||
joyports[port].driver=&DummyJPort;
|
joyports[port].driver=&DummyJPort;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -494,6 +495,7 @@ static void SetInputStuffFC()
|
||||||
switch(portFC.type)
|
switch(portFC.type)
|
||||||
{
|
{
|
||||||
case SIFC_NONE:
|
case SIFC_NONE:
|
||||||
|
case SIFC_UNSET:
|
||||||
portFC.driver=&DummyPortFC;
|
portFC.driver=&DummyPortFC;
|
||||||
break;
|
break;
|
||||||
case SIFC_ARKANOID:
|
case SIFC_ARKANOID:
|
||||||
|
@ -721,7 +723,7 @@ const char* FCEUI_CommandTypeNames[]=
|
||||||
"TAS Editor",
|
"TAS Editor",
|
||||||
};
|
};
|
||||||
|
|
||||||
static void CommandUnImpl(void);
|
//static void CommandUnImpl(void);
|
||||||
static void CommandToggleDip(void);
|
static void CommandToggleDip(void);
|
||||||
static void CommandStateLoad(void);
|
static void CommandStateLoad(void);
|
||||||
static void CommandStateSave(void);
|
static void CommandStateSave(void);
|
||||||
|
@ -938,10 +940,11 @@ void FCEUI_HandleEmuCommands(TestCommandState* testfn)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void CommandUnImpl(void)
|
// Function not currently used
|
||||||
{
|
//static void CommandUnImpl(void)
|
||||||
FCEU_DispMessage("command '%s' unimplemented.",0, FCEUI_CommandTable[i].name);
|
//{
|
||||||
}
|
// FCEU_DispMessage("command '%s' unimplemented.",0, FCEUI_CommandTable[i].name);
|
||||||
|
//}
|
||||||
|
|
||||||
static void CommandToggleDip(void)
|
static void CommandToggleDip(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -74,7 +74,7 @@ struct INPUTCFC
|
||||||
extern struct JOYPORT
|
extern struct JOYPORT
|
||||||
{
|
{
|
||||||
JOYPORT(int _w)
|
JOYPORT(int _w)
|
||||||
: w(_w)
|
: w(_w), attrib(0), type(SI_UNSET), ptr(0), driver(0)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
int w;
|
int w;
|
||||||
|
|
|
@ -5,7 +5,7 @@ IF ERRORLEVEL 1 IF NOT ERRORLEVEL 2 GOTO UPXFailed
|
||||||
cd ..\output
|
cd ..\output
|
||||||
..\vc\zip -X -9 -r ..\vc\fceux.zip fceux.exe fceux.chm taseditor.chm 7z.dll *.dll palettes luaScripts tools
|
..\vc\zip -X -9 -r ..\vc\fceux.zip fceux.exe fceux.chm taseditor.chm 7z.dll *.dll palettes luaScripts tools
|
||||||
move /y ..\vc\fceux.exe .
|
move /y ..\vc\fceux.exe .
|
||||||
..\vc\zip -X -9 -r ..\vc\fceux.zip auxlib.lua
|
REM ..\vc\zip -X -9 -r ..\vc\fceux.zip auxlib.lua
|
||||||
cd ..
|
cd ..
|
||||||
REM vc\zip -X -9 -r vc\fceux.zip documentation
|
REM vc\zip -X -9 -r vc\fceux.zip documentation
|
||||||
cd vc
|
cd vc
|
||||||
|
|
Loading…
Reference in New Issue