This commit is contained in:
zilmar 2021-04-14 15:51:41 +09:30
commit 2b6e70cde0
34 changed files with 579 additions and 569 deletions

View File

@ -57,7 +57,7 @@ We use semantic versioning for Project64. For the versions available, see the [t
* **Smiff** - *Previous contributor* - Smiff * **Smiff** - *Previous contributor* - Smiff
* **Gent** - *Previous contributor* - Gent * **Gent** - *Previous contributor* - Gent
See also the list of [contributors](https://github.com/your/project/contributors) who participated in this project. See also the list of [contributors](https://github.com/project64/project64/contributors) who participated in this project.
## License ## License

View File

@ -7,6 +7,7 @@
// Copyright(C) 2003 JttL // Copyright(C) 2003 JttL
// Copyright(C) 2002 Hacktarux // Copyright(C) 2002 Hacktarux
// GNU/GPLv2 licensed: https://gnu.org/licenses/gpl-2.0.html // GNU/GPLv2 licensed: https://gnu.org/licenses/gpl-2.0.html
#include <Common/Util.h> #include <Common/Util.h>
#ifdef _WIN32 #ifdef _WIN32
#include <Project64-audio/Driver/DirectSound.h> #include <Project64-audio/Driver/DirectSound.h>
@ -30,7 +31,7 @@ void SetTimerResolution ( void );
#define ENDIAN_SWAP_BYTE (~0 & 0x7 & 3) #define ENDIAN_SWAP_BYTE (~0 & 0x7 & 3)
#define BES(address) ((address) ^ ENDIAN_SWAP_BYTE) #define BES(address) ((address) ^ ENDIAN_SWAP_BYTE)
/* Read header for type definition */ // Read header for type definition
AUDIO_INFO g_AudioInfo; AUDIO_INFO g_AudioInfo;
bool g_PluginInit = false; bool g_PluginInit = false;
@ -71,7 +72,7 @@ EXPORT void CALL AiDacrateChanged(int SystemType)
WriteTrace(TraceAudioInterface, TraceDebug, "Start (SystemType: %d)", SystemType); WriteTrace(TraceAudioInterface, TraceDebug, "Start (SystemType: %d)", SystemType);
if (!g_PluginInit) if (!g_PluginInit)
{ {
WriteTrace(TraceAudioInterface, TraceNotice, "Plugin has not been initilized"); WriteTrace(TraceAudioInterface, TraceNotice, "Plugin has not been initialized");
WriteTrace(TraceAudioInterface, TraceDebug, "Done"); WriteTrace(TraceAudioInterface, TraceDebug, "Done");
return; return;
} }
@ -97,7 +98,7 @@ EXPORT void CALL AiDacrateChanged(int SystemType)
if (Frequency < 8000) if (Frequency < 8000)
{ {
WriteTrace(TraceAudioDriver, TraceDebug, "Not Audio Data!"); WriteTrace(TraceAudioDriver, TraceDebug, "Not audio data!");
return; return;
} }
@ -156,7 +157,7 @@ EXPORT void CALL AiUpdate(int32_t Wait)
} }
else else
{ {
pjutil::Sleep(1); // TODO: Fixme -- Ai Update appears to be problematic pjutil::Sleep(1); // TODO: Fix this: Ai update appears to be problematic
} }
WriteTrace(TraceAudioInterface, TraceDebug, "Done"); WriteTrace(TraceAudioInterface, TraceDebug, "Done");
} }
@ -200,9 +201,9 @@ EXPORT void CALL GetDllInfo(PLUGIN_INFO * PluginInfo)
PluginInfo->Version = 0x0101; PluginInfo->Version = 0x0101;
PluginInfo->Type = PLUGIN_TYPE_AUDIO; PluginInfo->Type = PLUGIN_TYPE_AUDIO;
#ifdef _DEBUG #ifdef _DEBUG
sprintf(PluginInfo->Name, "Project64 Audio Plugin (Debug): %s", VER_FILE_VERSION_STR); sprintf(PluginInfo->Name, "Project64 audio plugin (Debug): %s", VER_FILE_VERSION_STR);
#else #else
sprintf(PluginInfo->Name, "Project64 Audio Plugin: %s", VER_FILE_VERSION_STR); sprintf(PluginInfo->Name, "Project64 audio plugin: %s", VER_FILE_VERSION_STR);
#endif #endif
PluginInfo->MemoryBswaped = true; PluginInfo->MemoryBswaped = true;
PluginInfo->NormalMemory = false; PluginInfo->NormalMemory = false;

View File

@ -1,14 +1,12 @@
/********************************************************************************** // Common audio plugin spec, version 1.1
Common Audio plugin spec, version #1.1
**********************************************************************************
Notes:
------
Setting the approprate bits in the MI_INTR_REG and calling CheckInterrupts which /*
Notes:
Setting the appropriate bits in the MI_INTR_REG and calling CheckInterrupts which
are both passed to the DLL in InitiateAudio will generate an Interrupt from with in are both passed to the DLL in InitiateAudio will generate an Interrupt from with in
the plugin. the plugin.
*/
**********************************************************************************/
#pragma once #pragma once
#include <stdint.h> #include <stdint.h>
@ -32,20 +30,21 @@ enum
enum enum
{ {
AI_STATUS_FIFO_FULL = 0x80000000, /* Bit 31: full */ AI_STATUS_FIFO_FULL = 0x80000000, // Bit 31: full
AI_STATUS_DMA_BUSY = 0x40000000, /* Bit 30: busy */ AI_STATUS_DMA_BUSY = 0x40000000, // Bit 30: busy
MI_INTR_AI = 0x04, /* Bit 2: AI intr */ MI_INTR_AI = 0x04, // Bit 2: AI INTR
AI_CONTROL_DMA_ON = 0x01, AI_CONTROL_DMA_ON = 0x01,
AI_CONTROL_DMA_OFF = 0x00, AI_CONTROL_DMA_OFF = 0x00,
}; };
/***** Structures *****/ // Structures
typedef struct typedef struct
{ {
uint16_t Version; /* Should be set to 0x0101 */ uint16_t Version; // Should be set to 0x0101
uint16_t Type; /* Set to PLUGIN_TYPE_AUDIO */ uint16_t Type; // Set to PLUGIN_TYPE_AUDIO
char Name[100]; /* Name of the DLL */ char Name[100]; // Name of the DLL
int32_t NormalMemory; int32_t NormalMemory;
int32_t MemoryBswaped; int32_t MemoryBswaped;
} PLUGIN_INFO; } PLUGIN_INFO;
@ -55,12 +54,10 @@ typedef struct
void * hwnd; void * hwnd;
void * hinst; void * hinst;
int32_t MemoryBswaped; // If this is set to TRUE, then the memory has been pre int32_t MemoryBswaped; // If this is set to TRUE, then the memory has been pre-bswap'd on a DWORD (32-bit) boundary
// bswap on a dword (32 bits) boundry
// eg. the first 8 bytes are stored like this: // eg. the first 8 bytes are stored like this:
// 4 3 2 1 8 7 6 5 // 4 3 2 1 8 7 6 5
uint8_t * HEADER; // This is the rom header (first 40h bytes of the rom uint8_t * HEADER; // This is the ROM header (first 40h bytes of the ROM)
// This will be in the same memory format as the rest of the memory. // This will be in the same memory format as the rest of the memory.
uint8_t * RDRAM; uint8_t * RDRAM;
uint8_t * DMEM; uint8_t * DMEM;
@ -78,127 +75,139 @@ typedef struct
void(CALL *CheckInterrupts)(void); void(CALL *CheckInterrupts)(void);
} AUDIO_INFO; } AUDIO_INFO;
/****************************************************************** /*
Function: AiDacrateChanged Function: AiDacrateChanged
Purpose: This function is called to notify the dll that the Purpose: This function is called to notify the DLL that the
AiDacrate registers value has been changed. AiDacrate registers value has been changed.
input: The System type: input: The System type:
SYSTEM_NTSC 0 SYSTEM_NTSC 0
SYSTEM_PAL 1 SYSTEM_PAL 1
SYSTEM_MPAL 2 SYSTEM_MPAL 2
output: none output: none
*******************************************************************/ */
EXPORT void CALL AiDacrateChanged(int32_t SystemType); EXPORT void CALL AiDacrateChanged(int32_t SystemType);
/****************************************************************** /*
Function: AiLenChanged Function: AiLenChanged
Purpose: This function is called to notify the dll that the Purpose: This function is called to notify the DLL that the
AiLen registers value has been changed. AiLen registers value has been changed.
input: none input: none
output: none output: none
*******************************************************************/ */
EXPORT void CALL AiLenChanged(void); EXPORT void CALL AiLenChanged(void);
/****************************************************************** /*
Function: AiReadLength Function: AiReadLength
Purpose: This function is called to allow the dll to return the Purpose: This function is called to allow the DLL to return the
value that AI_LEN_REG should equal value that AI_LEN_REG should equal
input: none input: none
output: The amount of bytes still left to play. output: The amount of bytes still left to play.
*******************************************************************/ */
EXPORT uint32_t CALL AiReadLength(void); EXPORT uint32_t CALL AiReadLength(void);
/****************************************************************** /*
Function: AiUpdate Function: AiUpdate
Purpose: This function is called to allow the dll to update Purpose: This function is called to allow the DLL to update
things on a regular basis (check how long to sound to things on a regular basis (check how long to sound to
go, copy more stuff to the buffer, anyhting you like). go, copy more stuff to the buffer, anything you like).
The function is designed to go in to the message loop The function is designed to go in to the message loop
of the main window...but can be placed anywhere you of the main window...but can be placed anywhere you
like. like.
input: if Wait is set to true, then this function should wait input: if Wait is set to true, then this function should wait
till there is a messgae in the its message queue. till there is a message in its message queue.
output: none output: none
*******************************************************************/ */
EXPORT void CALL AiUpdate(int32_t Wait); EXPORT void CALL AiUpdate(int32_t Wait);
/****************************************************************** /*
Function: CloseDLL Function: CloseDLL
Purpose: This function is called when the emulator is closing Purpose: This function is called when the emulator is closing
down allowing the dll to de-initialise. down allowing the DLL to de-initialize.
input: none input: none
output: none output: none
*******************************************************************/ */
EXPORT void CALL CloseDLL(void); EXPORT void CALL CloseDLL(void);
/****************************************************************** /*
Function: DllAbout Function: DllAbout
Purpose: This function is optional function that is provided Purpose: This function is optional function that is provided
to give further information about the DLL. to give further information about the DLL.
input: a handle to the window that calls this function input: a handle to the window that calls this function
output: none output: none
*******************************************************************/ */
EXPORT void CALL DllAbout(void * hParent); EXPORT void CALL DllAbout(void * hParent);
/****************************************************************** /*
Function: DllConfig Function: DllConfig
Purpose: This function is optional function that is provided Purpose: This function is optional function that is provided
to allow the user to configure the dll to allow the user to configure the DLL
input: a handle to the window that calls this function input: a handle to the window that calls this function
output: none output: none
*******************************************************************/ */
EXPORT void CALL DllConfig(void * hParent); EXPORT void CALL DllConfig(void * hParent);
/****************************************************************** /*
Function: DllTest Function: DllTest
Purpose: This function is optional function that is provided Purpose: This function is optional function that is provided
to allow the user to test the dll to allow the user to test the DLL
input: a handle to the window that calls this function input: a handle to the window that calls this function
output: none output: none
*******************************************************************/ */
EXPORT void CALL DllTest(void * hParent); EXPORT void CALL DllTest(void * hParent);
/****************************************************************** /*
Function: GetDllInfo Function: GetDllInfo
Purpose: This function allows the emulator to gather information Purpose: This function allows the emulator to gather information
about the dll by filling in the PluginInfo structure. about the DLL by filling in the PluginInfo structure.
input: a pointer to a PLUGIN_INFO stucture that needs to be input: a pointer to a PLUGIN_INFO structure that needs to be
filled by the function. (see def above) filled by the function. (see def above)
output: none output: none
*******************************************************************/ */
EXPORT void CALL GetDllInfo(PLUGIN_INFO * PluginInfo); EXPORT void CALL GetDllInfo(PLUGIN_INFO * PluginInfo);
/****************************************************************** /*
Function: InitiateSound Function: InitiateSound
Purpose: This function is called when the DLL is started to give Purpose: This function is called when the DLL is started to give
information from the emulator that the n64 audio information from the emulator that the N64 audio
interface needs interface needs
Input: Audio_Info is passed to this function which is defined Input: Audio_Info is passed to this function which is defined
above. above.
Output: TRUE on success Output: TRUE on success
FALSE on failure to initialise FALSE on failure to initialize
** note on interrupts **: ** Note on interrupts **:
To generate an interrupt set the appropriate bit in MI_INTR_REG To generate an interrupt set the appropriate bit in MI_INTR_REG
and then call the function CheckInterrupts to tell the emulator and then call the function CheckInterrupts to tell the emulator
that there is a waiting interrupt. that there is a waiting interrupt.
*******************************************************************/ */
EXPORT int32_t CALL InitiateAudio(AUDIO_INFO Audio_Info); EXPORT int32_t CALL InitiateAudio(AUDIO_INFO Audio_Info);
/****************************************************************** /*
Function: ProcessAList Function: ProcessAList
Purpose: This function is called when there is a Alist to be Purpose: This function is called when there is a Alist to be
processed. The Dll will have to work out all the info processed. The DLL will have to work out all the info
about the AList itself. about the AList itself.
input: none input: none
output: none output: none
*******************************************************************/ */
EXPORT void CALL ProcessAList(void); EXPORT void CALL ProcessAList(void);
/****************************************************************** /*
Function: RomClosed Function: RomClosed
Purpose: This function is called when a rom is closed. Purpose: This function is called when a ROM is closed.
input: none input: none
output: none output: none
*******************************************************************/ */
EXPORT void CALL RomClosed(void); EXPORT void CALL RomClosed(void);

View File

@ -3,6 +3,7 @@
// Copyright(C) 2001-2021 Project64. // Copyright(C) 2001-2021 Project64.
// Copyright(C) 2000-2015 Azimer // Copyright(C) 2000-2015 Azimer
// GNU/GPLv2 licensed: https://gnu.org/licenses/gpl-2.0.html // GNU/GPLv2 licensed: https://gnu.org/licenses/gpl-2.0.html
#include <windows.h> #include <windows.h>
#include <mmreg.h> #include <mmreg.h>
#include <dsound.h> #include <dsound.h>
@ -87,7 +88,7 @@ void DirectSoundDriver::StopAudio()
m_AudioIsDone = true; m_AudioIsDone = true;
if (WaitForSingleObject((HANDLE)m_handleAudioThread, 5000) == WAIT_TIMEOUT) if (WaitForSingleObject((HANDLE)m_handleAudioThread, 5000) == WAIT_TIMEOUT)
{ {
WriteTrace(TraceAudioDriver, TraceError, "time out on close"); WriteTrace(TraceAudioDriver, TraceError, "Time out on close");
TerminateThread((HANDLE)m_handleAudioThread, 1); TerminateThread((HANDLE)m_handleAudioThread, 1);
} }
@ -184,7 +185,7 @@ void DirectSoundDriver::AudioThreadProc()
if (!m_AudioIsDone) if (!m_AudioIsDone)
{ {
WriteTrace(TraceAudioDriver, TraceDebug, "Audio Thread Started..."); WriteTrace(TraceAudioDriver, TraceDebug, "Audio thread started...");
DWORD dwStatus; DWORD dwStatus;
lpdsbuff->GetStatus(&dwStatus); lpdsbuff->GetStatus(&dwStatus);
if ((dwStatus & DSBSTATUS_PLAYING) == 0) if ((dwStatus & DSBSTATUS_PLAYING) == 0)
@ -223,7 +224,7 @@ void DirectSoundDriver::AudioThreadProc()
// This means we had a buffer segment skipped // This means we had a buffer segment skipped
if (next_pos != write_pos) if (next_pos != write_pos)
{ {
WriteTrace(TraceAudioDriver, TraceDebug, "segment skipped"); WriteTrace(TraceAudioDriver, TraceDebug, "Buffer segment skipped");
} }
// Store our last position // Store our last position
@ -244,7 +245,7 @@ void DirectSoundDriver::AudioThreadProc()
// Time to write out to the buffer // Time to write out to the buffer
LPVOID lpvPtr1, lpvPtr2; LPVOID lpvPtr1, lpvPtr2;
DWORD dwBytes1, dwBytes2; DWORD dwBytes1, dwBytes2;
WriteTrace(TraceAudioDriver, TraceVerbose, "Lock Buffer"); WriteTrace(TraceAudioDriver, TraceVerbose, "Lock buffer");
if (lpdsbuff->Lock(write_pos, m_LOCK_SIZE, &lpvPtr1, &dwBytes1, &lpvPtr2, &dwBytes2, 0) != DS_OK) if (lpdsbuff->Lock(write_pos, m_LOCK_SIZE, &lpvPtr1, &dwBytes1, &lpvPtr2, &dwBytes2, 0) != DS_OK)
{ {
WriteTrace(TraceAudioDriver, TraceError, "Error locking sound buffer"); WriteTrace(TraceAudioDriver, TraceError, "Error locking sound buffer");
@ -262,8 +263,8 @@ void DirectSoundDriver::AudioThreadProc()
} }
} }
// Fills dwBytes to the Sound Buffer // Fills dwBytes to the sound buffer
WriteTrace(TraceAudioDriver, TraceVerbose, "Unlock Buffer"); WriteTrace(TraceAudioDriver, TraceVerbose, "Unlock buffer");
if (FAILED(lpdsbuff->Unlock(lpvPtr1, dwBytes1, lpvPtr2, dwBytes2))) if (FAILED(lpdsbuff->Unlock(lpvPtr1, dwBytes1, lpvPtr2, dwBytes2)))
{ {
WriteTrace(TraceAudioDriver, TraceError, "Error unlocking sound buffer"); WriteTrace(TraceAudioDriver, TraceError, "Error unlocking sound buffer");
@ -276,5 +277,5 @@ void DirectSoundDriver::AudioThreadProc()
{ {
lpdsbuf->Stop(); lpdsbuf->Stop();
} }
WriteTrace(TraceAudioDriver, TraceDebug, "Audio Thread Terminated..."); WriteTrace(TraceAudioDriver, TraceDebug, "Audio thread terminated...");
} }

View File

@ -9,8 +9,8 @@ class DirectSoundDriver :
public: public:
DirectSoundDriver(); DirectSoundDriver();
bool Initialize(); bool Initialize();
void StopAudio(); // Stops the Audio PlayBack (as if paused) void StopAudio(); // Stops the audio playback (as if paused)
void StartAudio(); // Starts the Audio PlayBack (as if unpaused) void StartAudio(); // Starts the audio playback (as if unpaused)
void SetFrequency(uint32_t Frequency, uint32_t BufferSize); void SetFrequency(uint32_t Frequency, uint32_t BufferSize);
void SetVolume(uint32_t Volume); void SetVolume(uint32_t Volume);

View File

@ -7,6 +7,7 @@
// Copyright(C) 2003 JttL // Copyright(C) 2003 JttL
// Copyright(C) 2002 Hacktarux // Copyright(C) 2002 Hacktarux
// GNU/GPLv2 licensed: https://gnu.org/licenses/gpl-2.0.html // GNU/GPLv2 licensed: https://gnu.org/licenses/gpl-2.0.html
#pragma once #pragma once
#include <Common/SyncEvent.h> #include <Common/SyncEvent.h>
#include <Project64-audio/Audio_1.1.h> #include <Project64-audio/Audio_1.1.h>

View File

@ -3,6 +3,7 @@
// Copyright(C) 2001-2021 Project64 // Copyright(C) 2001-2021 Project64
// Copyright(C) 2000-2015 Azimer // Copyright(C) 2000-2015 Azimer
// GNU/GPLv2 licensed: https://gnu.org/licenses/gpl-2.0.html // GNU/GPLv2 licensed: https://gnu.org/licenses/gpl-2.0.html
#include "SoundBase.h" #include "SoundBase.h"
#include <Common/Util.h> #include <Common/Util.h>
#include <Project64-audio/AudioSettings.h> #include <Project64-audio/AudioSettings.h>
@ -164,7 +165,7 @@ void SoundDriverBase::BufferAudio()
m_AI_DMAPrimaryBytes -= 4; m_AI_DMAPrimaryBytes -= 4;
if (m_AI_DMAPrimaryBytes == 0) if (m_AI_DMAPrimaryBytes == 0)
{ {
WriteTrace(TraceAudioDriver, TraceVerbose, "Emptied Primary Buffer"); WriteTrace(TraceAudioDriver, TraceVerbose, "Emptied primary buffer");
m_AI_DMAPrimaryBytes = m_AI_DMASecondaryBytes; m_AI_DMAPrimaryBuffer = m_AI_DMASecondaryBuffer; // Switch m_AI_DMAPrimaryBytes = m_AI_DMASecondaryBytes; m_AI_DMAPrimaryBuffer = m_AI_DMASecondaryBuffer; // Switch
m_AI_DMASecondaryBytes = 0; m_AI_DMASecondaryBuffer = nullptr; m_AI_DMASecondaryBytes = 0; m_AI_DMASecondaryBuffer = nullptr;
*g_AudioInfo.AI_STATUS_REG = AI_STATUS_DMA_BUSY; *g_AudioInfo.AI_STATUS_REG = AI_STATUS_DMA_BUSY;

View File

@ -3,6 +3,7 @@
// Copyright(C) 2001-2021 Project64 // Copyright(C) 2001-2021 Project64
// Copyright(C) 2000-2015 Azimer // Copyright(C) 2000-2015 Azimer
// GNU/GPLv2 licensed: https://gnu.org/licenses/gpl-2.0.html // GNU/GPLv2 licensed: https://gnu.org/licenses/gpl-2.0.html
#pragma once #pragma once
#include <Common/SyncEvent.h> #include <Common/SyncEvent.h>
#include <Common/CriticalSection.h> #include <Common/CriticalSection.h>
@ -24,11 +25,11 @@ public:
virtual void StopAudio(); virtual void StopAudio();
protected: protected:
enum { MAX_SIZE = 48000 * 2 * 2 }; // Max Buffer Size (44100Hz * 16bit * Stereo) enum { MAX_SIZE = 48000 * 2 * 2 }; // Max buffer size (44100Hz * 16-bit * stereo)
virtual bool Initialize(); virtual bool Initialize();
void LoadAiBuffer(uint8_t *start, uint32_t length); // Reads in length amount of audio bytes void LoadAiBuffer(uint8_t *start, uint32_t length); // Reads in length amount of audio bytes
uint32_t m_MaxBufferSize; // Variable size determined by Playback rate uint32_t m_MaxBufferSize; // Variable size determined by playback rate
CriticalSection m_CS; CriticalSection m_CS;
private: private:
@ -38,7 +39,7 @@ private:
uint8_t *m_AI_DMAPrimaryBuffer, *m_AI_DMASecondaryBuffer; uint8_t *m_AI_DMAPrimaryBuffer, *m_AI_DMASecondaryBuffer;
uint32_t m_AI_DMAPrimaryBytes, m_AI_DMASecondaryBytes; uint32_t m_AI_DMAPrimaryBytes, m_AI_DMASecondaryBytes;
uint32_t m_BufferRemaining; // Buffer remaining uint32_t m_BufferRemaining; // Buffer remaining
uint32_t m_CurrentReadLoc; // Currently playing Buffer uint32_t m_CurrentReadLoc; // Currently playing buffer
uint32_t m_CurrentWriteLoc; // Currently writing Buffer uint32_t m_CurrentWriteLoc; // Currently writing buffer
uint8_t m_Buffer[MAX_SIZE]; // Emulated buffers uint8_t m_Buffer[MAX_SIZE]; // Emulated buffers
}; };

View File

@ -2,10 +2,6 @@
// Microsoft Visual C++ generated include file. // Microsoft Visual C++ generated include file.
// Used by Project64-audio.rc // Used by Project64-audio.rc
// //
#define VERSION_MINOR 0
#define VER_VER_DEBUG 0
#define VERSION_MAJOR 1
#define VERSION_REVISION 1
#define IDD_CONFIG 9 #define IDD_CONFIG 9
#define IDD_LOG_SETTINGS 103 #define IDD_LOG_SETTINGS 103
#define IDD_GAME_SETTING 104 #define IDD_GAME_SETTING 104
@ -23,7 +19,6 @@
#define IDC_TXT_TRACE_INTERFACE 1082 #define IDC_TXT_TRACE_INTERFACE 1082
#define IDC_TXT_TRACE_AUDIO_DRIVER 1083 #define IDC_TXT_TRACE_AUDIO_DRIVER 1083
#define IDC_CMB_TRACE_THREAD 1090 #define IDC_CMB_TRACE_THREAD 1090
#define VERSION_BUILD 9999
// Next default values for new objects // Next default values for new objects
// //

View File

@ -50,12 +50,12 @@ private:
bool m_Opened; bool m_Opened;
// Used for extraction // Used for extraction
UInt32 m_blockIndex; // it can have any value before first call (if outBuffer = 0) UInt32 m_blockIndex; // It can have any value before first call (if outBuffer = 0)
Byte * m_outBuffer; // it must be 0 before first call for each new archive. Byte * m_outBuffer; // It must be 0 before first call for each new archive
size_t m_outBufferSize; // it can have any value before first call (if outBuffer = 0) size_t m_outBufferSize; // It can have any value before first call (if outBuffer = 0)
static void * AllocAllocImp(void *p, size_t size); static void * AllocAllocImp(void *p, size_t size);
static void AllocFreeImp(void *p, void *address); /* address can be 0 */ static void AllocFreeImp(void *p, void *address); // Address can be 0
static SRes SzFileReadImp(void *object, void *buffer, size_t *processedSize); static SRes SzFileReadImp(void *object, void *buffer, size_t *processedSize);
static SRes SzFileSeekImp(void *p, Int64 *pos, ESzSeek origin); static SRes SzFileSeekImp(void *p, Int64 *pos, ESzSeek origin);

View File

@ -271,7 +271,7 @@ void CLogging::Log_LW(uint32_t PC, uint32_t VAddr)
return; return;
} }
g_MMU->LW_VAddr(VAddr, Value); g_MMU->LW_VAddr(VAddr, Value);
LogMessage("%08X: read word from Pif Ram at 0x%X (%08X)", PC, VAddr - 0xBFC007C0, Value); LogMessage("%08X: read word from PIF RAM at 0x%X (%08X)", PC, VAddr - 0xBFC007C0, Value);
return; return;
} }
if (VAddr >= 0xB0000040 && ((VAddr - 0xB0000000) < g_Rom->GetRomSize())) if (VAddr >= 0xB0000040 && ((VAddr - 0xB0000000) < g_Rom->GetRomSize()))
@ -288,12 +288,12 @@ void CLogging::Log_LW(uint32_t PC, uint32_t VAddr)
g_MMU->LW_VAddr(VAddr, Value); g_MMU->LW_VAddr(VAddr, Value);
switch (VAddr) switch (VAddr)
{ {
case 0xB0000004: LogMessage("%08X: read from Rom Clock Rate (%08X)", PC, Value); break; case 0xB0000004: LogMessage("%08X: read from ROM clock rate (%08X)", PC, Value); break;
case 0xB0000008: LogMessage("%08X: read from Rom Boot address offset (%08X)", PC, Value); break; case 0xB0000008: LogMessage("%08X: read from ROM boot address offset (%08X)", PC, Value); break;
case 0xB000000C: LogMessage("%08X: read from Rom Release offset (%08X)", PC, Value); break; case 0xB000000C: LogMessage("%08X: read from ROM release offset (%08X)", PC, Value); break;
case 0xB0000010: LogMessage("%08X: read from Rom CRC1 (%08X)", PC, Value); break; case 0xB0000010: LogMessage("%08X: read from ROM CRC1 (%08X)", PC, Value); break;
case 0xB0000014: LogMessage("%08X: read from Rom CRC2 (%08X)", PC, Value); break; case 0xB0000014: LogMessage("%08X: read from ROM CRC2 (%08X)", PC, Value); break;
default: LogMessage("%08X: read from Rom header 0x%X (%08X)", PC, VAddr & 0xFF, Value); break; default: LogMessage("%08X: read from ROM header 0x%X (%08X)", PC, VAddr & 0xFF, Value); break;
} }
return; return;
} }
@ -524,7 +524,7 @@ void CLogging::Log_SW(uint32_t PC, uint32_t VAddr, uint32_t Value)
{ {
if (LogPRDMAOperations()) if (LogPRDMAOperations())
{ {
LogMessage("%08X: A DMA transfer from the PIF ram has occured", PC); LogMessage("%08X: A DMA transfer from the PIF RAM has occurred", PC);
} }
if (!LogSerialInterface()) if (!LogSerialInterface())
{ {
@ -536,7 +536,7 @@ void CLogging::Log_SW(uint32_t PC, uint32_t VAddr, uint32_t Value)
{ {
if (LogPRDMAOperations()) if (LogPRDMAOperations())
{ {
LogMessage("%08X: A DMA transfer to the PIF ram has occured", PC); LogMessage("%08X: A DMA transfer to the PIF RAM has occurred", PC);
} }
if (!LogSerialInterface()) if (!LogSerialInterface())
{ {
@ -559,7 +559,7 @@ void CLogging::Log_SW(uint32_t PC, uint32_t VAddr, uint32_t Value)
{ {
return; return;
} }
LogMessage("%08X: Writing 0x%08X to Pif Ram at 0x%X", PC, Value, VAddr - 0xBFC007C0); LogMessage("%08X: Writing 0x%08X to PIF RAM at 0x%X", PC, Value, VAddr - 0xBFC007C0);
return; return;
} }
if (!LogUnknown()) if (!LogUnknown())

View File

@ -27,7 +27,7 @@ bool CMipsMemoryVM::FilterX86Exception(uint32_t MemAddress, X86_CONTEXT & contex
if ((int32_t)(MemAddress) < 0 || MemAddress > 0x1FFFFFFF) if ((int32_t)(MemAddress) < 0 || MemAddress > 0x1FFFFFFF)
{ {
WriteTrace(TraceExceptionHandler, TraceError, "Invalid memory adderess: %X", MemAddress); WriteTrace(TraceExceptionHandler, TraceError, "Invalid memory address: %X", MemAddress);
if (HaveDebugger()) if (HaveDebugger())
{ {
g_Notify->BreakPoint(__FILE__, __LINE__); g_Notify->BreakPoint(__FILE__, __LINE__);
@ -445,7 +445,7 @@ bool CMipsMemoryVM::FilterArmException(uint32_t MemAddress, mcontext_t & context
{ {
if ((int32_t)(MemAddress) < 0 || MemAddress > 0x1FFFFFFF) if ((int32_t)(MemAddress) < 0 || MemAddress > 0x1FFFFFFF)
{ {
WriteTrace(TraceExceptionHandler, TraceError, "Invalid memory adderess: %X", MemAddress); WriteTrace(TraceExceptionHandler, TraceError, "Invalid memory address: %X", MemAddress);
DumpArmExceptionInfo(MemAddress, context); DumpArmExceptionInfo(MemAddress, context);
g_Notify->BreakPoint(__FILE__, __LINE__); g_Notify->BreakPoint(__FILE__, __LINE__);
return false; return false;
@ -771,7 +771,7 @@ void CMipsMemoryVM::segv_handler(int signal, siginfo_t *siginfo, void *sigcontex
{ {
ucontext_t *ucontext = (ucontext_t*)sigcontext; ucontext_t *ucontext = (ucontext_t*)sigcontext;
WriteTrace(TraceExceptionHandler, TraceNotice, "Segmentation Fault!"); WriteTrace(TraceExceptionHandler, TraceNotice, "Segmentation fault!");
WriteTrace(TraceExceptionHandler, TraceNotice, "info.si_signo = %d", signal); WriteTrace(TraceExceptionHandler, TraceNotice, "info.si_signo = %d", signal);
WriteTrace(TraceExceptionHandler, TraceNotice, "info.si_errno = %d", siginfo->si_errno); WriteTrace(TraceExceptionHandler, TraceNotice, "info.si_errno = %d", siginfo->si_errno);
WriteTrace(TraceExceptionHandler, TraceNotice, "info.si_code = %d", siginfo->si_code); WriteTrace(TraceExceptionHandler, TraceNotice, "info.si_code = %d", siginfo->si_code);
@ -818,8 +818,8 @@ void CMipsMemoryVM::segv_handler(int signal, siginfo_t *siginfo, void *sigcontex
return; return;
} }
#endif #endif
WriteTrace(TraceExceptionHandler, TraceError, "Failed quiting now"); WriteTrace(TraceExceptionHandler, TraceError, "Failed! Quitting now...");
exit(0); //can't return to main, it's where the segfault occured. exit(0); // Can't return to main, this is where the segmentation fault occurred
} }
#else #else
@ -834,7 +834,7 @@ int32_t CMipsMemoryVM::MemoryFilter(uint32_t dwExptCode, void * lpExceptionPoint
} }
} }
//convert the pointer since we are not having win32 structures in headers // Convert the pointer since we are not having win32 structures in headers
LPEXCEPTION_POINTERS lpEP = (LPEXCEPTION_POINTERS)lpExceptionPointer; LPEXCEPTION_POINTERS lpEP = (LPEXCEPTION_POINTERS)lpExceptionPointer;
uint32_t MemAddress = (char *)lpEP->ExceptionRecord->ExceptionInformation[1] - (char *)g_MMU->Rdram(); uint32_t MemAddress = (char *)lpEP->ExceptionRecord->ExceptionInformation[1] - (char *)g_MMU->Rdram();

View File

@ -4,16 +4,15 @@ enum LanguageStringID
{ {
EMPTY_STRING = 0, EMPTY_STRING = 0,
/********************************************************************************* // Meta Information
* Meta Information *
*********************************************************************************/
// About DLL // About DLL
LANGUAGE_NAME = 1, LANGUAGE_NAME = 1,
LANGUAGE_AUTHOR = 2, LANGUAGE_AUTHOR = 2,
LANGUAGE_VERSION = 3, LANGUAGE_VERSION = 3,
LANGUAGE_DATE = 4, LANGUAGE_DATE = 4,
//About DLL Dialog // About DLL dialog
INI_CURRENT_LANG = 5, INI_CURRENT_LANG = 5,
INI_AUTHOR = 6, INI_AUTHOR = 6,
INI_VERSION = 7, INI_VERSION = 7,
@ -26,9 +25,8 @@ enum LanguageStringID
// About INI title // About INI title
INI_TITLE = 20, INI_TITLE = 20,
/********************************************************************************* // Numbers
* Numbers *
*********************************************************************************/
NUMBER_0 = 50, NUMBER_0 = 50,
NUMBER_1 = 51, NUMBER_1 = 51,
NUMBER_2 = 52, NUMBER_2 = 52,
@ -40,10 +38,9 @@ enum LanguageStringID
NUMBER_8 = 58, NUMBER_8 = 58,
NUMBER_9 = 59, NUMBER_9 = 59,
/********************************************************************************* // Menu
* Menu *
*********************************************************************************/ // File menu
//File Menu
MENU_FILE = 100, MENU_FILE = 100,
MENU_OPEN = 101, MENU_OPEN = 101,
MENU_ROM_INFO = 102, MENU_ROM_INFO = 102,
@ -56,7 +53,7 @@ enum LanguageStringID
MENU_EXIT = 109, MENU_EXIT = 109,
MENU_OPEN_COMBO = 110, MENU_OPEN_COMBO = 110,
//System Menu // System menu
MENU_SYSTEM = 120, MENU_SYSTEM = 120,
MENU_RESET = 121, MENU_RESET = 121,
MENU_PAUSE = 122, MENU_PAUSE = 122,
@ -75,7 +72,7 @@ enum LanguageStringID
MENU_SWAPDISK = 135, MENU_SWAPDISK = 135,
MENU_ENHANCEMENT = 136, MENU_ENHANCEMENT = 136,
//Options Menu // Options menu
MENU_OPTIONS = 140, MENU_OPTIONS = 140,
MENU_FULL_SCREEN = 141, MENU_FULL_SCREEN = 141,
MENU_ON_TOP = 142, MENU_ON_TOP = 142,
@ -86,20 +83,20 @@ enum LanguageStringID
MENU_SHOW_CPU = 147, MENU_SHOW_CPU = 147,
MENU_SETTINGS = 148, MENU_SETTINGS = 148,
//Debugger Menu // Debugger menu
MENU_DEBUGGER = 160, MENU_DEBUGGER = 160,
//Language Menu // Language menu
MENU_LANGUAGE = 175, MENU_LANGUAGE = 175,
//Help Menu // Help menu
MENU_HELP = 180, MENU_HELP = 180,
MENU_ABOUT_PJ64 = 182, MENU_ABOUT_PJ64 = 182,
MENU_WEBSITE = 184, MENU_WEBSITE = 184,
MENU_SUPPORT_PROJECT64 = 185, MENU_SUPPORT_PROJECT64 = 185,
MENU_DISCORD = 186, MENU_DISCORD = 186,
//Current Save Slot menu // Current save slot menu
MENU_SLOT_DEFAULT = 190, MENU_SLOT_DEFAULT = 190,
MENU_SLOT_1 = 191, MENU_SLOT_1 = 191,
MENU_SLOT_2 = 192, MENU_SLOT_2 = 192,
@ -113,7 +110,7 @@ enum LanguageStringID
MENU_SLOT_10 = 200, MENU_SLOT_10 = 200,
MENU_SLOT_SAVE = 201, MENU_SLOT_SAVE = 201,
//Pop up Menu // Pop up menu
POPUP_PLAY = 210, POPUP_PLAY = 210,
POPUP_INFO = 211, POPUP_INFO = 211,
POPUP_SETTINGS = 212, POPUP_SETTINGS = 212,
@ -122,7 +119,7 @@ enum LanguageStringID
POPUP_PLAYDISK = 215, POPUP_PLAYDISK = 215,
POPUP_ENHANCEMENTS = 216, POPUP_ENHANCEMENTS = 216,
//selecting save slot // Selecting save slot
SAVE_SLOT_DEFAULT = 220, SAVE_SLOT_DEFAULT = 220,
SAVE_SLOT_1 = 221, SAVE_SLOT_1 = 221,
SAVE_SLOT_2 = 222, SAVE_SLOT_2 = 222,
@ -135,7 +132,7 @@ enum LanguageStringID
SAVE_SLOT_9 = 229, SAVE_SLOT_9 = 229,
SAVE_SLOT_10 = 230, SAVE_SLOT_10 = 230,
// Menu Descriptions (TODO: unused ? implement or remove) // Menu descriptions (TODO: Unused? Implement or remove)
MENUDES_OPEN = 250, MENUDES_OPEN = 250,
MENUDES_ROM_INFO = 251, MENUDES_ROM_INFO = 251,
MENUDES_START = 252, MENUDES_START = 252,
@ -174,10 +171,10 @@ enum LanguageStringID
MENUDES_GAME_SETTINGS = 285, MENUDES_GAME_SETTINGS = 285,
MENUDES_GAME_CHEATS = 286, MENUDES_GAME_CHEATS = 286,
/*********************************************************************************
* Rom Browser * // ROM browser
*********************************************************************************/
//Rom Browser Fields // ROM browser fields
RB_FILENAME = 300, RB_FILENAME = 300,
RB_INTERNALNAME = 301, RB_INTERNALNAME = 301,
RB_GOODNAME = 302, RB_GOODNAME = 302,
@ -201,16 +198,15 @@ enum LanguageStringID
RB_NAME = 321, RB_NAME = 321,
//Select Rom // Select ROM
SELECT_ROM_DIR = 320, SELECT_ROM_DIR = 320,
// Messages // Messages
RB_NOT_GOOD_FILE = 340, RB_NOT_GOOD_FILE = 340,
/********************************************************************************* // Options
* Options *
*********************************************************************************/ // Options title
//Options Title
OPTIONS_TITLE = 400, OPTIONS_TITLE = 400,
// Tabs // Tabs
@ -229,7 +225,7 @@ enum LanguageStringID
TAB_DISKDRIVE = 413, TAB_DISKDRIVE = 413,
TAB_DISKSETTINGS = 414, TAB_DISKSETTINGS = 414,
//Plugin Dialog // Plugin dialog
PLUG_ABOUT = 420, PLUG_ABOUT = 420,
PLUG_RSP = 421, PLUG_RSP = 421,
PLUG_GFX = 422, PLUG_GFX = 422,
@ -239,7 +235,7 @@ enum LanguageStringID
PLUG_HLE_AUDIO = 426, PLUG_HLE_AUDIO = 426,
PLUG_DEFAULT = 427, PLUG_DEFAULT = 427,
//Directory Dialog // Directory dialog
DIR_PLUGIN = 440, DIR_PLUGIN = 440,
DIR_ROM = 441, DIR_ROM = 441,
DIR_AUTO_SAVE = 442, DIR_AUTO_SAVE = 442,
@ -254,7 +250,7 @@ enum LanguageStringID
DIR_TEXTURE = 451, DIR_TEXTURE = 451,
DIR_SELECT_TEXTURE = 452, DIR_SELECT_TEXTURE = 452,
//Options (general) Tab // Options (general) tab
OPTION_AUTO_SLEEP = 460, OPTION_AUTO_SLEEP = 460,
OPTION_AUTO_FULLSCREEN = 461, OPTION_AUTO_FULLSCREEN = 461,
OPTION_BASIC_MODE = 462, OPTION_BASIC_MODE = 462,
@ -273,7 +269,7 @@ enum LanguageStringID
OPTION_SHOW_STATUS_BAR = 474, OPTION_SHOW_STATUS_BAR = 474,
OPTION_EXIT_FULLSCREEN_ON_LOSE_FOCUS = 475, OPTION_EXIT_FULLSCREEN_ON_LOSE_FOCUS = 475,
//Rom Browser Tab // ROM browser tab
RB_MAX_ROMS = 480, RB_MAX_ROMS = 480,
RB_ROMS = 481, RB_ROMS = 481,
RB_MAX_DIRS = 482, RB_MAX_DIRS = 482,
@ -289,7 +285,7 @@ enum LanguageStringID
RB_REFRESH = 492, RB_REFRESH = 492,
RB_FILEEXT = 493, RB_FILEEXT = 493,
//Advanced Options // Advanced options
ADVANCE_INFO = 500, ADVANCE_INFO = 500,
ADVANCE_DEFAULTS = 501, ADVANCE_DEFAULTS = 501,
ADVANCE_CPU_STYLE = 502, ADVANCE_CPU_STYLE = 502,
@ -306,7 +302,7 @@ enum LanguageStringID
ADVANCE_SMM_PROTECT = 513, ADVANCE_SMM_PROTECT = 513,
ADVANCE_SMM_TLB = 514, ADVANCE_SMM_TLB = 514,
//Rom Options // ROM options
ROM_CPU_STYLE = 520, ROM_CPU_STYLE = 520,
ROM_VIREFRESH = 521, ROM_VIREFRESH = 521,
ROM_MEM_SIZE = 522, ROM_MEM_SIZE = 522,
@ -335,12 +331,12 @@ enum LanguageStringID
ROM_DISK_SEEK_TIMING_TURBO = 5441, ROM_DISK_SEEK_TIMING_TURBO = 5441,
ROM_DISK_SEEK_TIMING_SLOW = 5442, ROM_DISK_SEEK_TIMING_SLOW = 5442,
//Core Styles // Core styles
CORE_INTERPTER = 540, CORE_INTERPTER = 540,
CORE_RECOMPILER = 541, CORE_RECOMPILER = 541,
CORE_SYNC = 542, CORE_SYNC = 542,
//Self Mod Methods // Self-mod methods
SMCM_NONE = 560, SMCM_NONE = 560,
SMCM_CACHE = 561, SMCM_CACHE = 561,
SMCM_PROECTED = 562, SMCM_PROECTED = 562,
@ -349,35 +345,35 @@ enum LanguageStringID
SMCM_CHECK_ADV = 565, SMCM_CHECK_ADV = 565,
SMCM_CACHE2 = 566, SMCM_CACHE2 = 566,
//Function Lookup memthod // Function lookup method
FLM_PLOOKUP = 570, FLM_PLOOKUP = 570,
FLM_VLOOKUP = 571, FLM_VLOOKUP = 571,
FLM_CHANGEMEM = 572, FLM_CHANGEMEM = 572,
//RDRAM Size // RDRAM size
RDRAM_4MB = 580, RDRAM_4MB = 580,
RDRAM_8MB = 581, RDRAM_8MB = 581,
//Advanced Block Linking // Advanced block linking
ABL_ON = 600, ABL_ON = 600,
ABL_OFF = 601, ABL_OFF = 601,
//Save Type // Save type
SAVE_FIRST_USED = 620, SAVE_FIRST_USED = 620,
SAVE_4K_EEPROM = 621, SAVE_4K_EEPROM = 621,
SAVE_16K_EEPROM = 622, SAVE_16K_EEPROM = 622,
SAVE_SRAM = 623, SAVE_SRAM = 623,
SAVE_FLASHRAM = 624, SAVE_FLASHRAM = 624,
//Shell Integration Tab // Shell integration tab
SHELL_TEXT = 640, SHELL_TEXT = 640,
//Rom Notes // ROM notes
NOTE_STATUS = 660, NOTE_STATUS = 660,
NOTE_CORE = 661, NOTE_CORE = 661,
NOTE_PLUGIN = 662, NOTE_PLUGIN = 662,
// Accelerator Selector // Accelerator selector
ACCEL_CPUSTATE_TITLE = 680, ACCEL_CPUSTATE_TITLE = 680,
ACCEL_MENUITEM_TITLE = 681, ACCEL_MENUITEM_TITLE = 681,
ACCEL_CURRENTKEYS_TITLE = 682, ACCEL_CURRENTKEYS_TITLE = 682,
@ -392,7 +388,7 @@ enum LanguageStringID
ACCEL_CPUSTATE_4 = 691, ACCEL_CPUSTATE_4 = 691,
ACCEL_DETECTKEY = 692, ACCEL_DETECTKEY = 692,
// Frame Rate Option // Frame rate option
STR_FR_VIS = 700, STR_FR_VIS = 700,
STR_FR_DLS = 701, STR_FR_DLS = 701,
STR_FR_PERCENT = 702, STR_FR_PERCENT = 702,
@ -409,17 +405,16 @@ enum LanguageStringID
BOTTOM_APPLY = 722, BOTTOM_APPLY = 722,
BOTTOM_CLOSE = 723, BOTTOM_CLOSE = 723,
//Disk Save Type // Disk save type
DISKSAVE_SHADOW = 730, DISKSAVE_SHADOW = 730,
DISKSAVE_RAM = 731, DISKSAVE_RAM = 731,
/********************************************************************************* // ROM information
* ROM Information *
*********************************************************************************/ // ROM info title
//Rom Info Title Title
INFO_TITLE = 800, INFO_TITLE = 800,
//Rom Info Text // ROM info text
INFO_ROM_NAME_TEXT = 801, INFO_ROM_NAME_TEXT = 801,
INFO_FILE_NAME_TEXT = 802, INFO_FILE_NAME_TEXT = 802,
INFO_LOCATION_TEXT = 803, INFO_LOCATION_TEXT = 803,
@ -432,17 +427,16 @@ enum LanguageStringID
INFO_CIC_CHIP_TEXT = 810, INFO_CIC_CHIP_TEXT = 810,
INFO_MD5_TEXT = 811, INFO_MD5_TEXT = 811,
/********************************************************************************* // Cheats
* Cheats *
*********************************************************************************/ // Cheat list
//Cheat List
CHEAT_TITLE = 1000, CHEAT_TITLE = 1000,
CHEAT_LIST_FRAME = 1001, CHEAT_LIST_FRAME = 1001,
CHEAT_NOTES_FRAME = 1002, CHEAT_NOTES_FRAME = 1002,
CHEAT_MARK_ALL = 1003, CHEAT_MARK_ALL = 1003,
CHEAT_MARK_NONE = 1004, CHEAT_MARK_NONE = 1004,
//Add Cheat // Add cheat
CHEAT_ADDCHEAT_FRAME = 1005, CHEAT_ADDCHEAT_FRAME = 1005,
CHEAT_ADDCHEAT_NAME = 1006, CHEAT_ADDCHEAT_NAME = 1006,
CHEAT_ADDCHEAT_CODE = 1007, CHEAT_ADDCHEAT_CODE = 1007,
@ -457,7 +451,7 @@ enum LanguageStringID
CHEAT_OK = 1014, CHEAT_OK = 1014,
CHEAT_CANCEL = 1015, CHEAT_CANCEL = 1015,
//Digital Value // Digital value
CHEAT_QUANTITY_TITLE = 1016, CHEAT_QUANTITY_TITLE = 1016,
CHEAT_CHOOSE_VALUE = 1017, CHEAT_CHOOSE_VALUE = 1017,
CHEAT_VALUE = 1018, CHEAT_VALUE = 1018,
@ -470,18 +464,18 @@ enum LanguageStringID
CHEAT_ADDCHEAT_OPT = 1025, CHEAT_ADDCHEAT_OPT = 1025,
CHEAT_ADDCHEAT_OPTDES = 1026, CHEAT_ADDCHEAT_OPTDES = 1026,
//Edit Cheat // Edit cheat
CHEAT_EDITCHEAT_WINDOW = 1027, CHEAT_EDITCHEAT_WINDOW = 1027,
CHEAT_EDITCHEAT_UPDATE = 1028, CHEAT_EDITCHEAT_UPDATE = 1028,
CHEAT_CHANGED_MSG = 1029, CHEAT_CHANGED_MSG = 1029,
CHEAT_CHANGED_TITLE = 1030, CHEAT_CHANGED_TITLE = 1030,
//Cheat Popup Menu // Cheat popup menu
CHEAT_ADDNEW = 1040, CHEAT_ADDNEW = 1040,
CHEAT_EDIT = 1041, CHEAT_EDIT = 1041,
CHEAT_DELETE = 1042, CHEAT_DELETE = 1042,
// short cut editor // Short cut editor
STR_SHORTCUT_RESET_TITLE = 1100, STR_SHORTCUT_RESET_TITLE = 1100,
STR_SHORTCUT_RESET_TEXT = 1101, STR_SHORTCUT_RESET_TEXT = 1101,
STR_SHORTCUT_FILEMENU = 1102, STR_SHORTCUT_FILEMENU = 1102,
@ -489,9 +483,8 @@ enum LanguageStringID
STR_SHORTCUT_OPTIONS = 1104, STR_SHORTCUT_OPTIONS = 1104,
STR_SHORTCUT_SAVESLOT = 1105, STR_SHORTCUT_SAVESLOT = 1105,
/********************************************************************************* // Support window
* Support Window *
*********************************************************************************/
MSG_SUPPORT_TITLE = 1200, MSG_SUPPORT_TITLE = 1200,
MSG_SUPPORT_INFO = 1201, MSG_SUPPORT_INFO = 1201,
MSG_SUPPORT_ENTER_CODE = 1202, MSG_SUPPORT_ENTER_CODE = 1202,
@ -508,14 +501,12 @@ enum LanguageStringID
MSG_SUPPORT_REQUESTCODE_SUCCESS = 1213, MSG_SUPPORT_REQUESTCODE_SUCCESS = 1213,
MSG_SUPPORT_REQUESTCODE_FAIL = 1214, MSG_SUPPORT_REQUESTCODE_FAIL = 1214,
/********************************************************************************* // Enhancements
* Enhancements *
*********************************************************************************/
ENHANCEMENT_TITLE = 1300, ENHANCEMENT_TITLE = 1300,
/********************************************************************************* // Messages
* Messages *
*********************************************************************************/
MSG_CPU_PAUSED = 2000, MSG_CPU_PAUSED = 2000,
MSG_CPU_RESUMED = 2001, MSG_CPU_RESUMED = 2001,
MSG_PERM_LOOP = 2002, MSG_PERM_LOOP = 2002,
@ -582,9 +573,8 @@ enum LanguageStringID
MSG_CHEAT_INVALID_MSG = 2063, MSG_CHEAT_INVALID_MSG = 2063,
MSG_CHEAT_INVALID_TITLE = 2064, MSG_CHEAT_INVALID_TITLE = 2064,
/********************************************************************************* // Android
* Android *
*********************************************************************************/
ANDROID_SETTINGS = 3000, ANDROID_SETTINGS = 3000,
ANDROID_FORUM = 3001, ANDROID_FORUM = 3001,
ANDROID_REPORT_BUG = 3002, ANDROID_REPORT_BUG = 3002,
@ -610,7 +600,7 @@ enum LanguageStringID
ANDROID_SUPPORT_PJ64 = 3022, ANDROID_SUPPORT_PJ64 = 3022,
ANDROID_REVIEW_PJ64 = 3023, ANDROID_REVIEW_PJ64 = 3023,
//In game menu // In-game menu
ANDROID_MENU_SETTINGS = 3100, ANDROID_MENU_SETTINGS = 3100,
ANDROID_MENU_SAVESTATE = 3101, ANDROID_MENU_SAVESTATE = 3101,
ANDROID_MENU_LOADSTATE = 3102, ANDROID_MENU_LOADSTATE = 3102,

View File

@ -11,16 +11,15 @@ void CLanguage::LoadDefaultStrings(void)
DEF_STR(EMPTY_STRING, ""); DEF_STR(EMPTY_STRING, "");
/********************************************************************************* // Meta information
* Meta Information *
*********************************************************************************/
// About DLL // About DLL
DEF_STR(LANGUAGE_NAME, ""); DEF_STR(LANGUAGE_NAME, "");
DEF_STR(LANGUAGE_AUTHOR, ""); DEF_STR(LANGUAGE_AUTHOR, "");
DEF_STR(LANGUAGE_VERSION, ""); DEF_STR(LANGUAGE_VERSION, "");
DEF_STR(LANGUAGE_DATE, ""); DEF_STR(LANGUAGE_DATE, "");
//About DLL Dialog // About DLL dialog
DEF_STR(INI_CURRENT_LANG, "Current Language"); DEF_STR(INI_CURRENT_LANG, "Current Language");
DEF_STR(INI_AUTHOR, "Author"); DEF_STR(INI_AUTHOR, "Author");
DEF_STR(INI_VERSION, "Version"); DEF_STR(INI_VERSION, "Version");
@ -33,9 +32,8 @@ void CLanguage::LoadDefaultStrings(void)
// About INI title // About INI title
DEF_STR(INI_TITLE, "About Config Files"); DEF_STR(INI_TITLE, "About Config Files");
/********************************************************************************* // Numbers
* Numbers *
*********************************************************************************/
DEF_STR(NUMBER_0, "0"); DEF_STR(NUMBER_0, "0");
DEF_STR(NUMBER_1, "1"); DEF_STR(NUMBER_1, "1");
DEF_STR(NUMBER_2, "2"); DEF_STR(NUMBER_2, "2");
@ -47,10 +45,9 @@ void CLanguage::LoadDefaultStrings(void)
DEF_STR(NUMBER_8, "8"); DEF_STR(NUMBER_8, "8");
DEF_STR(NUMBER_9, "9"); DEF_STR(NUMBER_9, "9");
/********************************************************************************* // Menu
* Menu *
*********************************************************************************/ // File menu
//File Menu
DEF_STR(MENU_FILE, "&File"); DEF_STR(MENU_FILE, "&File");
DEF_STR(MENU_OPEN, "&Open ROM"); DEF_STR(MENU_OPEN, "&Open ROM");
DEF_STR(MENU_ROM_INFO, "ROM &Info...."); DEF_STR(MENU_ROM_INFO, "ROM &Info....");
@ -63,7 +60,7 @@ void CLanguage::LoadDefaultStrings(void)
DEF_STR(MENU_EXIT, "E&xit"); DEF_STR(MENU_EXIT, "E&xit");
DEF_STR(MENU_OPEN_COMBO, "Open &Combo"); DEF_STR(MENU_OPEN_COMBO, "Open &Combo");
//System Menu // System menu
DEF_STR(MENU_SYSTEM, "&System"); DEF_STR(MENU_SYSTEM, "&System");
DEF_STR(MENU_RESET, "&Reset"); DEF_STR(MENU_RESET, "&Reset");
DEF_STR(MENU_PAUSE, "&Pause"); DEF_STR(MENU_PAUSE, "&Pause");
@ -82,7 +79,7 @@ void CLanguage::LoadDefaultStrings(void)
DEF_STR(MENU_SWAPDISK, "Swap &Disk"); DEF_STR(MENU_SWAPDISK, "Swap &Disk");
DEF_STR(MENU_ENHANCEMENT, "Enhancement..."); DEF_STR(MENU_ENHANCEMENT, "Enhancement...");
//Options Menu // Options menu
DEF_STR(MENU_OPTIONS, "&Options"); DEF_STR(MENU_OPTIONS, "&Options");
DEF_STR(MENU_FULL_SCREEN, "&Full Screen"); DEF_STR(MENU_FULL_SCREEN, "&Full Screen");
DEF_STR(MENU_ON_TOP, "&Always on &Top"); DEF_STR(MENU_ON_TOP, "&Always on &Top");
@ -93,20 +90,20 @@ void CLanguage::LoadDefaultStrings(void)
DEF_STR(MENU_SHOW_CPU, "Show CPU Usage"); DEF_STR(MENU_SHOW_CPU, "Show CPU Usage");
DEF_STR(MENU_SETTINGS, "&Settings..."); DEF_STR(MENU_SETTINGS, "&Settings...");
//Debugger Menu // Debugger menu
DEF_STR(MENU_DEBUGGER, "&Debugger"); DEF_STR(MENU_DEBUGGER, "&Debugger");
//Language Menu // Language menu
DEF_STR(MENU_LANGUAGE, "&Language"); DEF_STR(MENU_LANGUAGE, "&Language");
//Help Menu // Help menu
DEF_STR(MENU_HELP, "&Help"); DEF_STR(MENU_HELP, "&Help");
DEF_STR(MENU_ABOUT_PJ64, "&About Project64"); DEF_STR(MENU_ABOUT_PJ64, "&About Project64");
DEF_STR(MENU_WEBSITE, "&Website"); DEF_STR(MENU_WEBSITE, "&Website");
DEF_STR(MENU_SUPPORT_PROJECT64, "&Support Project64"); DEF_STR(MENU_SUPPORT_PROJECT64, "&Support Project64");
DEF_STR(MENU_DISCORD, "&Discord"); DEF_STR(MENU_DISCORD, "&Discord");
//Current Save Slot menu // Current save slot menu
DEF_STR(MENU_SLOT_DEFAULT, "Default"); DEF_STR(MENU_SLOT_DEFAULT, "Default");
DEF_STR(MENU_SLOT_1, "Slot 1"); DEF_STR(MENU_SLOT_1, "Slot 1");
DEF_STR(MENU_SLOT_2, "Slot 2"); DEF_STR(MENU_SLOT_2, "Slot 2");
@ -120,7 +117,7 @@ void CLanguage::LoadDefaultStrings(void)
DEF_STR(MENU_SLOT_10, "Slot 10"); DEF_STR(MENU_SLOT_10, "Slot 10");
DEF_STR(MENU_SLOT_SAVE, "Save slot (%s) selected"); DEF_STR(MENU_SLOT_SAVE, "Save slot (%s) selected");
//Pop up Menu // Pop-up menu
DEF_STR(POPUP_PLAY, "Play Game"); DEF_STR(POPUP_PLAY, "Play Game");
DEF_STR(POPUP_INFO, "ROM Information"); DEF_STR(POPUP_INFO, "ROM Information");
DEF_STR(POPUP_SETTINGS, "Edit Game Settings"); DEF_STR(POPUP_SETTINGS, "Edit Game Settings");
@ -129,7 +126,7 @@ void CLanguage::LoadDefaultStrings(void)
DEF_STR(POPUP_PLAYDISK, "Play Game with Disk"); DEF_STR(POPUP_PLAYDISK, "Play Game with Disk");
DEF_STR(POPUP_ENHANCEMENTS, "Choose Enhancement"); DEF_STR(POPUP_ENHANCEMENTS, "Choose Enhancement");
//Alternate Name to save Slot // Alternate name to save slot
DEF_STR(SAVE_SLOT_DEFAULT, "Save Slot - Default"); DEF_STR(SAVE_SLOT_DEFAULT, "Save Slot - Default");
DEF_STR(SAVE_SLOT_1, "Save Slot - 1"); DEF_STR(SAVE_SLOT_1, "Save Slot - 1");
DEF_STR(SAVE_SLOT_2, "Save Slot - 2"); DEF_STR(SAVE_SLOT_2, "Save Slot - 2");
@ -142,10 +139,9 @@ void CLanguage::LoadDefaultStrings(void)
DEF_STR(SAVE_SLOT_9, "Save Slot - 9"); DEF_STR(SAVE_SLOT_9, "Save Slot - 9");
DEF_STR(SAVE_SLOT_10, "Save Slot - 10"); DEF_STR(SAVE_SLOT_10, "Save Slot - 10");
/********************************************************************************* // ROM browser
* ROM Browser *
*********************************************************************************/ // ROM browser fields
//ROM Browser Fields
DEF_STR(RB_FILENAME, "File Name"); DEF_STR(RB_FILENAME, "File Name");
DEF_STR(RB_INTERNALNAME, "Internal Name"); DEF_STR(RB_INTERNALNAME, "Internal Name");
DEF_STR(RB_GOODNAME, "Good Name"); DEF_STR(RB_GOODNAME, "Good Name");
@ -171,13 +167,12 @@ void CLanguage::LoadDefaultStrings(void)
// Select ROM // Select ROM
DEF_STR(SELECT_ROM_DIR, "Select current ROM directory"); DEF_STR(SELECT_ROM_DIR, "Select current ROM directory");
//Messages // Messages (TODO: GoodN64 is no longer maintained and perhaps should be replaced with references to something else?)
DEF_STR(RB_NOT_GOOD_FILE, "Bad ROM? Use GoodN64 & check that the RDB is up-to-date."); DEF_STR(RB_NOT_GOOD_FILE, "Bad ROM? Use GoodN64 & check that the RDB is up-to-date.");
/********************************************************************************* // Options
* Options *
*********************************************************************************/ // Options title
//Options Title
DEF_STR(OPTIONS_TITLE, "Settings"); DEF_STR(OPTIONS_TITLE, "Settings");
// Tabs // Tabs
@ -196,7 +191,7 @@ void CLanguage::LoadDefaultStrings(void)
DEF_STR(TAB_DISKDRIVE, "64DD"); DEF_STR(TAB_DISKDRIVE, "64DD");
DEF_STR(TAB_DISKSETTINGS, "64DD"); DEF_STR(TAB_DISKSETTINGS, "64DD");
//Plugin Dialog // Plugin dialog
DEF_STR(PLUG_ABOUT, "About"); DEF_STR(PLUG_ABOUT, "About");
DEF_STR(PLUG_RSP, " RSP (Reality Signal Processor) plugin: "); DEF_STR(PLUG_RSP, " RSP (Reality Signal Processor) plugin: ");
DEF_STR(PLUG_GFX, " Video (graphics) plugin: "); DEF_STR(PLUG_GFX, " Video (graphics) plugin: ");
@ -206,7 +201,7 @@ void CLanguage::LoadDefaultStrings(void)
DEF_STR(PLUG_HLE_AUDIO, "Audio HLE"); DEF_STR(PLUG_HLE_AUDIO, "Audio HLE");
DEF_STR(PLUG_DEFAULT, "** Use System Plugin **"); DEF_STR(PLUG_DEFAULT, "** Use System Plugin **");
//Directory Dialog // Directory dialog
DEF_STR(DIR_PLUGIN, " Plugin directory: "); DEF_STR(DIR_PLUGIN, " Plugin directory: ");
DEF_STR(DIR_ROM, " ROM directory: "); DEF_STR(DIR_ROM, " ROM directory: ");
DEF_STR(DIR_AUTO_SAVE, " N64 native saves directory: "); DEF_STR(DIR_AUTO_SAVE, " N64 native saves directory: ");
@ -221,7 +216,7 @@ void CLanguage::LoadDefaultStrings(void)
DEF_STR(DIR_TEXTURE, " Texture pack directory: "); DEF_STR(DIR_TEXTURE, " Texture pack directory: ");
DEF_STR(DIR_SELECT_TEXTURE, "Select texture pack directory"); DEF_STR(DIR_SELECT_TEXTURE, "Select texture pack directory");
//Options (general) Tab // Options (general) tab
DEF_STR(OPTION_AUTO_SLEEP, "Pause emulation when window is not active"); DEF_STR(OPTION_AUTO_SLEEP, "Pause emulation when window is not active");
DEF_STR(OPTION_AUTO_FULLSCREEN, "Enter full-screen mode when loading a ROM"); DEF_STR(OPTION_AUTO_FULLSCREEN, "Enter full-screen mode when loading a ROM");
DEF_STR(OPTION_BASIC_MODE, "Hide advanced settings"); DEF_STR(OPTION_BASIC_MODE, "Hide advanced settings");
@ -239,7 +234,7 @@ void CLanguage::LoadDefaultStrings(void)
DEF_STR(OPTION_SHOW_STATUS_BAR, "Show Status Bar"); DEF_STR(OPTION_SHOW_STATUS_BAR, "Show Status Bar");
DEF_STR(OPTION_EXIT_FULLSCREEN_ON_LOSE_FOCUS, "Exit full screen on lose focus"); DEF_STR(OPTION_EXIT_FULLSCREEN_ON_LOSE_FOCUS, "Exit full screen on lose focus");
//ROM Browser Tab // ROM browser tab
DEF_STR(RB_MAX_ROMS, "Max # of ROMs remembered (0-10):"); DEF_STR(RB_MAX_ROMS, "Max # of ROMs remembered (0-10):");
DEF_STR(RB_ROMS, "ROMs"); DEF_STR(RB_ROMS, "ROMs");
DEF_STR(RB_MAX_DIRS, "Max # of ROM dirs remembered (0-10):"); DEF_STR(RB_MAX_DIRS, "Max # of ROM dirs remembered (0-10):");
@ -255,7 +250,7 @@ void CLanguage::LoadDefaultStrings(void)
DEF_STR(RB_DOWN, "Down"); DEF_STR(RB_DOWN, "Down");
DEF_STR(RB_REFRESH, "Automatically refresh browser"); DEF_STR(RB_REFRESH, "Automatically refresh browser");
//Advanced Options // Advanced options
DEF_STR(ADVANCE_INFO, "Most of these changes will not take effect until a new ROM is opened or current ROM is reset."); DEF_STR(ADVANCE_INFO, "Most of these changes will not take effect until a new ROM is opened or current ROM is reset.");
DEF_STR(ADVANCE_DEFAULTS, "Core Defaults"); DEF_STR(ADVANCE_DEFAULTS, "Core Defaults");
DEF_STR(ADVANCE_CPU_STYLE, "CPU core style:"); DEF_STR(ADVANCE_CPU_STYLE, "CPU core style:");
@ -272,7 +267,7 @@ void CLanguage::LoadDefaultStrings(void)
DEF_STR(ADVANCE_SMM_PROTECT, "Protect memory"); DEF_STR(ADVANCE_SMM_PROTECT, "Protect memory");
DEF_STR(ADVANCE_SMM_TLB, "TLB unmapping"); DEF_STR(ADVANCE_SMM_TLB, "TLB unmapping");
//ROM Options // ROM options
DEF_STR(ROM_CPU_STYLE, "CPU core style:"); DEF_STR(ROM_CPU_STYLE, "CPU core style:");
DEF_STR(ROM_VIREFRESH, "VI refresh rate:"); DEF_STR(ROM_VIREFRESH, "VI refresh rate:");
DEF_STR(ROM_MEM_SIZE, "Memory size:"); DEF_STR(ROM_MEM_SIZE, "Memory size:");
@ -301,12 +296,12 @@ void CLanguage::LoadDefaultStrings(void)
DEF_STR(ROM_DISK_SEEK_TIMING_TURBO, "Turbo"); DEF_STR(ROM_DISK_SEEK_TIMING_TURBO, "Turbo");
DEF_STR(ROM_DISK_SEEK_TIMING_SLOW, "Slow"); DEF_STR(ROM_DISK_SEEK_TIMING_SLOW, "Slow");
//Core Styles // Core styles
DEF_STR(CORE_INTERPTER, "Interpreter"); DEF_STR(CORE_INTERPTER, "Interpreter");
DEF_STR(CORE_RECOMPILER, "Recompiler"); DEF_STR(CORE_RECOMPILER, "Recompiler");
DEF_STR(CORE_SYNC, "Synchronize cores"); DEF_STR(CORE_SYNC, "Synchronize cores");
//Self Mod Methods // Self-mod methods
DEF_STR(SMCM_NONE, "None"); DEF_STR(SMCM_NONE, "None");
DEF_STR(SMCM_CACHE, "Cache"); DEF_STR(SMCM_CACHE, "Cache");
DEF_STR(SMCM_PROECTED, "Protect memory"); DEF_STR(SMCM_PROECTED, "Protect memory");
@ -315,35 +310,35 @@ void CLanguage::LoadDefaultStrings(void)
DEF_STR(SMCM_CHECK_ADV, "Check memory advance"); DEF_STR(SMCM_CHECK_ADV, "Check memory advance");
DEF_STR(SMCM_CACHE2, "Clear code on cache"); DEF_STR(SMCM_CACHE2, "Clear code on cache");
//Function Lookup method // Function lookup method
DEF_STR(FLM_PLOOKUP, "Physical lookup table"); DEF_STR(FLM_PLOOKUP, "Physical lookup table");
DEF_STR(FLM_VLOOKUP, "Virtual lookup table"); DEF_STR(FLM_VLOOKUP, "Virtual lookup table");
DEF_STR(FLM_CHANGEMEM, "Change memory"); DEF_STR(FLM_CHANGEMEM, "Change memory");
//RDRAM Size // RDRAM size
DEF_STR(RDRAM_4MB, "4 MB"); DEF_STR(RDRAM_4MB, "4 MB");
DEF_STR(RDRAM_8MB, "8 MB"); DEF_STR(RDRAM_8MB, "8 MB");
//Advanced Block Linking // Advanced block linking
DEF_STR(ABL_ON, "On"); DEF_STR(ABL_ON, "On");
DEF_STR(ABL_OFF, "Off"); DEF_STR(ABL_OFF, "Off");
//Save Type // Save type
DEF_STR(SAVE_FIRST_USED, "Use first-used save type"); DEF_STR(SAVE_FIRST_USED, "Use first-used save type");
DEF_STR(SAVE_4K_EEPROM, "4-kbit EEPROM"); DEF_STR(SAVE_4K_EEPROM, "4-kbit EEPROM");
DEF_STR(SAVE_16K_EEPROM, "16-kbit EEPROM"); DEF_STR(SAVE_16K_EEPROM, "16-kbit EEPROM");
DEF_STR(SAVE_SRAM, "SRAM"); DEF_STR(SAVE_SRAM, "SRAM");
DEF_STR(SAVE_FLASHRAM, "Flash RAM"); DEF_STR(SAVE_FLASHRAM, "Flash RAM");
//Shell Integration Tab // Shell integration tab
DEF_STR(SHELL_TEXT, "File extension association:"); DEF_STR(SHELL_TEXT, "File extension association:");
//ROM Notes // ROM notes
DEF_STR(NOTE_STATUS, "ROM status:"); DEF_STR(NOTE_STATUS, "ROM status:");
DEF_STR(NOTE_CORE, "Core note:"); DEF_STR(NOTE_CORE, "Core note:");
DEF_STR(NOTE_PLUGIN, "Plugin note:"); DEF_STR(NOTE_PLUGIN, "Plugin note:");
// Accelerator Selector // Accelerator selector
DEF_STR(ACCEL_CPUSTATE_TITLE, "CPU state:"); DEF_STR(ACCEL_CPUSTATE_TITLE, "CPU state:");
DEF_STR(ACCEL_MENUITEM_TITLE, "Menu item:"); DEF_STR(ACCEL_MENUITEM_TITLE, "Menu item:");
DEF_STR(ACCEL_CURRENTKEYS_TITLE, "Current keys:"); DEF_STR(ACCEL_CURRENTKEYS_TITLE, "Current keys:");
@ -358,7 +353,7 @@ void CLanguage::LoadDefaultStrings(void)
DEF_STR(ACCEL_CPUSTATE_4, "Game playing (full-screen)"); DEF_STR(ACCEL_CPUSTATE_4, "Game playing (full-screen)");
DEF_STR(ACCEL_DETECTKEY, "Detect Key"); DEF_STR(ACCEL_DETECTKEY, "Detect Key");
// Frame Rate Option // Frame rate option
DEF_STR(STR_FR_VIS, "Vertical interrupts per second"); DEF_STR(STR_FR_VIS, "Vertical interrupts per second");
DEF_STR(STR_FR_DLS, "Display lists per second"); DEF_STR(STR_FR_DLS, "Display lists per second");
DEF_STR(STR_FR_PERCENT, "Percentage of full speed"); DEF_STR(STR_FR_PERCENT, "Percentage of full speed");
@ -374,17 +369,16 @@ void CLanguage::LoadDefaultStrings(void)
DEF_STR(BOTTOM_APPLY, "Apply"); DEF_STR(BOTTOM_APPLY, "Apply");
DEF_STR(BOTTOM_CLOSE, "Close"); DEF_STR(BOTTOM_CLOSE, "Close");
//Disk Save Type // Disk save type
DEF_STR(DISKSAVE_SHADOW, "Full Disk Copy"); DEF_STR(DISKSAVE_SHADOW, "Full Disk Copy");
DEF_STR(DISKSAVE_RAM, "Save Area Only"); DEF_STR(DISKSAVE_RAM, "Save Area Only");
/********************************************************************************* // ROM Information
* ROM Information *
*********************************************************************************/ // ROM info title
//ROM Info Title
DEF_STR(INFO_TITLE, "ROM Information"); DEF_STR(INFO_TITLE, "ROM Information");
//ROM Info Text // ROM info text
DEF_STR(INFO_ROM_NAME_TEXT, "ROM name:"); DEF_STR(INFO_ROM_NAME_TEXT, "ROM name:");
DEF_STR(INFO_FILE_NAME_TEXT, "File name:"); DEF_STR(INFO_FILE_NAME_TEXT, "File name:");
DEF_STR(INFO_LOCATION_TEXT, "Location:"); DEF_STR(INFO_LOCATION_TEXT, "Location:");
@ -397,17 +391,16 @@ void CLanguage::LoadDefaultStrings(void)
DEF_STR(INFO_CIC_CHIP_TEXT, "CIC chip:"); DEF_STR(INFO_CIC_CHIP_TEXT, "CIC chip:");
DEF_STR(INFO_MD5_TEXT, "MD5:"); DEF_STR(INFO_MD5_TEXT, "MD5:");
/********************************************************************************* // Cheats
* Cheats *
*********************************************************************************/ // Cheat list
//Cheat List
DEF_STR(CHEAT_TITLE, "Cheats"); DEF_STR(CHEAT_TITLE, "Cheats");
DEF_STR(CHEAT_LIST_FRAME, "Cheats:"); DEF_STR(CHEAT_LIST_FRAME, "Cheats:");
DEF_STR(CHEAT_NOTES_FRAME, " Notes: "); DEF_STR(CHEAT_NOTES_FRAME, " Notes: ");
DEF_STR(CHEAT_MARK_ALL, "Mark All"); DEF_STR(CHEAT_MARK_ALL, "Mark All");
DEF_STR(CHEAT_MARK_NONE, "Unmark All"); DEF_STR(CHEAT_MARK_NONE, "Unmark All");
//Add Cheat // Add cheat
DEF_STR(CHEAT_ADDCHEAT_FRAME, "Add Cheat"); DEF_STR(CHEAT_ADDCHEAT_FRAME, "Add Cheat");
DEF_STR(CHEAT_ADDCHEAT_NAME, "Name:"); DEF_STR(CHEAT_ADDCHEAT_NAME, "Name:");
DEF_STR(CHEAT_ADDCHEAT_CODE, "Code:"); DEF_STR(CHEAT_ADDCHEAT_CODE, "Code:");
@ -422,7 +415,7 @@ void CLanguage::LoadDefaultStrings(void)
DEF_STR(CHEAT_OK, "OK"); DEF_STR(CHEAT_OK, "OK");
DEF_STR(CHEAT_CANCEL, "Cancel"); DEF_STR(CHEAT_CANCEL, "Cancel");
//Digital Value // Digital value
DEF_STR(CHEAT_QUANTITY_TITLE, "Quantity Digit"); DEF_STR(CHEAT_QUANTITY_TITLE, "Quantity Digit");
DEF_STR(CHEAT_CHOOSE_VALUE, "Please choose a value for:"); DEF_STR(CHEAT_CHOOSE_VALUE, "Please choose a value for:");
DEF_STR(CHEAT_VALUE, "&Value"); DEF_STR(CHEAT_VALUE, "&Value");
@ -435,60 +428,56 @@ void CLanguage::LoadDefaultStrings(void)
DEF_STR(CHEAT_ADDCHEAT_OPT, "Options:"); DEF_STR(CHEAT_ADDCHEAT_OPT, "Options:");
DEF_STR(CHEAT_ADDCHEAT_OPTDES, "<value> <label>"); DEF_STR(CHEAT_ADDCHEAT_OPTDES, "<value> <label>");
//Edit Cheat // Edit cheat
DEF_STR(CHEAT_EDITCHEAT_WINDOW, "Edit Cheat"); DEF_STR(CHEAT_EDITCHEAT_WINDOW, "Edit Cheat");
DEF_STR(CHEAT_EDITCHEAT_UPDATE, "Update Cheat"); DEF_STR(CHEAT_EDITCHEAT_UPDATE, "Update Cheat");
DEF_STR(CHEAT_CHANGED_MSG, "Cheat has been changed.\n\nDo you want to update?"); DEF_STR(CHEAT_CHANGED_MSG, "Cheat has been changed.\n\nDo you want to update?");
DEF_STR(CHEAT_CHANGED_TITLE, "Cheat updated"); DEF_STR(CHEAT_CHANGED_TITLE, "Cheat updated");
//Cheat Popup Menu // Cheat Pop-up menu
DEF_STR(CHEAT_ADDNEW, "Add New Cheat..."); DEF_STR(CHEAT_ADDNEW, "Add New Cheat...");
DEF_STR(CHEAT_EDIT, "Edit"); DEF_STR(CHEAT_EDIT, "Edit");
DEF_STR(CHEAT_DELETE, "Delete"); DEF_STR(CHEAT_DELETE, "Delete");
// short-cut editor // Shortcut editor
DEF_STR(STR_SHORTCUT_RESET_TITLE, "Reset short-cuts"); DEF_STR(STR_SHORTCUT_RESET_TITLE, "Reset shortcuts");
DEF_STR(STR_SHORTCUT_RESET_TEXT, "Are you sure you want to reset the short-cuts?\n\nThis action cannot be undone."); DEF_STR(STR_SHORTCUT_RESET_TEXT, "Are you sure you want to reset the shortcuts?\n\nThis action cannot be undone.");
DEF_STR(STR_SHORTCUT_FILEMENU, "File Menu"); DEF_STR(STR_SHORTCUT_FILEMENU, "File Menu");
DEF_STR(STR_SHORTCUT_SYSTEMMENU, "System Menu"); DEF_STR(STR_SHORTCUT_SYSTEMMENU, "System Menu");
DEF_STR(STR_SHORTCUT_OPTIONS, "Options"); DEF_STR(STR_SHORTCUT_OPTIONS, "Options");
DEF_STR(STR_SHORTCUT_SAVESLOT, "Save Slots"); DEF_STR(STR_SHORTCUT_SAVESLOT, "Save Slots");
/********************************************************************************* // Support window
* Support Window *
*********************************************************************************/
DEF_STR(MSG_SUPPORT_TITLE, "Support Project64"); DEF_STR(MSG_SUPPORT_TITLE, "Support Project64");
DEF_STR(MSG_SUPPORT_INFO, "Project64 is a free and open source Nintendo64 emulator. This allows you to play real N64 software in much the same way as it would be on the original hardware system.\n\nI am sorry about the inconvenience of this prompt, but you are being asked to wait for a few seconds in order to enjoy the result of hundreds of hours of work.\n\nIf you can and would like to support Project64 or you have gotten some value out of it then please support project64 as either a thank you, or your a desire to see removal of this prompt.\n\nIf you have supported Project64:"); DEF_STR(MSG_SUPPORT_INFO, "Project64 is a free and open-source Nintendo 64 emulator. This allows you to play real Nintendo 64 software in much the same way as it would be on the original hardware.\n\nI am sorry about the inconvenience of this prompt, but you are being asked to wait for a few seconds in order to enjoy the result of hundreds of hours of work.\n\nIf you can and would like to support Project64 or you have gotten some value out of it then please support Project64 as either a thank you, or if you would like to see removal of this prompt.\n\nIf you have supported Project64:");
DEF_STR(MSG_SUPPORT_ENTER_CODE, "Enter/Request Notification Code"); DEF_STR(MSG_SUPPORT_ENTER_CODE, "Enter/Request Notification Code");
DEF_STR(MSG_SUPPORT_PROJECT64, "Support Project64"); DEF_STR(MSG_SUPPORT_PROJECT64, "Support Project64");
DEF_STR(MSG_SUPPORT_CONTINUE, "Continue"); DEF_STR(MSG_SUPPORT_CONTINUE, "Continue");
DEF_STR(MSG_SUPPORT_ENTER_SUPPORT_CODE, "Please enter the support code"); DEF_STR(MSG_SUPPORT_ENTER_SUPPORT_CODE, "Please enter the support code");
DEF_STR(MSG_SUPPORT_INCORRECT_CODE, "Failed to validate the code\n\nMake sure the code matches in email based on your machine"); DEF_STR(MSG_SUPPORT_INCORRECT_CODE, "Failed to validate the code\n\nMake sure the code matches the code in the email, which is based on your machine");
DEF_STR(MSG_SUPPORT_COMPLETE, "Thank you"); DEF_STR(MSG_SUPPORT_COMPLETE, "Thank you");
DEF_STR(MSG_SUPPORT_ENTER_CODE_TITLE, "Please enter your support code"); DEF_STR(MSG_SUPPORT_ENTER_CODE_TITLE, "Please enter your support code");
DEF_STR(MSG_SUPPORT_ENTER_CODE_DESC, "Please enter the code you recieved in the email.\n\nThis email will be sent to the email address used to support project64.\n\nPlease note that the code is will only work for a unique machine. This computer id is:"); DEF_STR(MSG_SUPPORT_ENTER_CODE_DESC, "Please enter the code you received in the email.\n\nThis email will be sent to the email address used to support Project64.\n\nPlease note that the code is will only work for a unique machine. This computer ID is:");
DEF_STR(MSG_SUPPORT_OK, "OK"); DEF_STR(MSG_SUPPORT_OK, "OK");
DEF_STR(MSG_SUPPORT_CANCEL, "Cancel"); DEF_STR(MSG_SUPPORT_CANCEL, "Cancel");
DEF_STR(MSG_SUPPORT_REQUESTCODE_TITLE, "Request Code"); DEF_STR(MSG_SUPPORT_REQUESTCODE_TITLE, "Request Code");
DEF_STR(MSG_SUPPORT_REQUESTCODE_SUCCESS, "Code has been sent to your email"); DEF_STR(MSG_SUPPORT_REQUESTCODE_SUCCESS, "Code has been sent to your email");
DEF_STR(MSG_SUPPORT_REQUESTCODE_FAIL, "Failed to send code, please make sure it is the email you supported with"); DEF_STR(MSG_SUPPORT_REQUESTCODE_FAIL, "Failed to send code, please make sure it is the email you used when you supported Project64");
// Enhancements
/*********************************************************************************
* Enhancements *
*********************************************************************************/
DEF_STR(ENHANCEMENT_TITLE, "Enhancements"); DEF_STR(ENHANCEMENT_TITLE, "Enhancements");
/********************************************************************************* // Messages
* Messages *
*********************************************************************************/
DEF_STR(MSG_CPU_PAUSED, "*** CPU PAUSED ***"); DEF_STR(MSG_CPU_PAUSED, "*** CPU PAUSED ***");
DEF_STR(MSG_CPU_RESUMED, "CPU resumed"); DEF_STR(MSG_CPU_RESUMED, "CPU resumed");
DEF_STR(MSG_PERM_LOOP, "In a permanent loop that cannot be exited.\nEmulation will now stop.\n\nVerify ROM and its settings."); DEF_STR(MSG_PERM_LOOP, "In a permanent loop that cannot be exited.\nEmulation will now stop.\n\nVerify ROM and its settings.");
DEF_STR(MSG_MEM_ALLOC_ERROR, "Failed to allocate memory"); DEF_STR(MSG_MEM_ALLOC_ERROR, "Failed to allocate memory");
DEF_STR(MSG_FAIL_INIT_GFX, "The default or selected video plugin is missing or invalid.\n\nYou need to go into Settings and select a video (graphics) plugin.\nCheck that you have at least one compatible plugin file in your plugin folder."); DEF_STR(MSG_FAIL_INIT_GFX, "The default or selected video plugin is missing or invalid.\n\nYou need to go into settings and select a video (graphics) plugin.\nCheck that you have at least one compatible plugin file in your plugin folder.");
DEF_STR(MSG_FAIL_INIT_AUDIO, "The default or selected audio plugin is missing or invalid.\n\nYou need to go into Settings and select a audio (sound) plugin.\nCheck that you have at least one compatible plugin file in your plugin folder."); DEF_STR(MSG_FAIL_INIT_AUDIO, "The default or selected audio plugin is missing or invalid.\n\nYou need to go into settings and select a audio (sound) plugin.\nCheck that you have at least one compatible plugin file in your plugin folder.");
DEF_STR(MSG_FAIL_INIT_RSP, "The default or selected RSP plugin is missing or invalid.\n\nYou need to go into Settings and select a RSP (Reality Signal Processor) plugin.\nCheck that you have at least one compatible plugin file in your plugin folder."); DEF_STR(MSG_FAIL_INIT_RSP, "The default or selected RSP plugin is missing or invalid.\n\nYou need to go into settings and select an RSP (Reality Signal Processor) plugin.\nCheck that you have at least one compatible plugin file in your plugin folder.");
DEF_STR(MSG_FAIL_INIT_CONTROL, "The default or selected input plugin is missing or invalid.\n\nYou need to go into Settings and select an input (controller) plugin.\nCheck that you have at least one compatible plugin file in your plugin folder."); DEF_STR(MSG_FAIL_INIT_CONTROL, "The default or selected input plugin is missing or invalid.\n\nYou need to go into settings and select an input (controller) plugin.\nCheck that you have at least one compatible plugin file in your plugin folder.");
DEF_STR(MSG_FAIL_LOAD_PLUGIN, "Failed to load plugin:"); DEF_STR(MSG_FAIL_LOAD_PLUGIN, "Failed to load plugin:");
DEF_STR(MSG_FAIL_LOAD_WORD, "Failed to load word.\n\nVerify ROM and its settings."); DEF_STR(MSG_FAIL_LOAD_WORD, "Failed to load word.\n\nVerify ROM and its settings.");
DEF_STR(MSG_FAIL_OPEN_SAVE, "Failed to open save file"); DEF_STR(MSG_FAIL_OPEN_SAVE, "Failed to open save file");
@ -510,7 +499,7 @@ void CLanguage::LoadDefaultStrings(void)
DEF_STR(MSG_MSGBOX_ERROR_TITLE, "Error"); DEF_STR(MSG_MSGBOX_ERROR_TITLE, "Error");
DEF_STR(MSG_PIF2_ERROR, "Copyright sequence not found in LUT. Game will no longer function."); DEF_STR(MSG_PIF2_ERROR, "Copyright sequence not found in LUT. Game will no longer function.");
DEF_STR(MSG_PIF2_TITLE, "Copy Protection Failure"); DEF_STR(MSG_PIF2_TITLE, "Copy Protection Failure");
DEF_STR(MSG_PLUGIN_CHANGE, "Changing a plugin requires Project64 to reset a running ROM.\nIf you don't want to lose your place, answer No and save the current state first.\n\nChange plugins and reset ROM now?"); DEF_STR(MSG_PLUGIN_CHANGE, "Changing a plugin requires Project64 to reset a running ROM.\nIf you don't want to lose your place, answer no and save the current state first.\n\nChange plugins and reset ROM now?");
DEF_STR(MSG_PLUGIN_CHANGE_TITLE, "Change Plugins"); DEF_STR(MSG_PLUGIN_CHANGE_TITLE, "Change Plugins");
DEF_STR(MSG_EMULATION_ENDED, "Emulation ended"); DEF_STR(MSG_EMULATION_ENDED, "Emulation ended");
DEF_STR(MSG_EMULATION_STARTED, "Emulation started"); DEF_STR(MSG_EMULATION_STARTED, "Emulation started");
@ -530,7 +519,7 @@ void CLanguage::LoadDefaultStrings(void)
DEF_STR(MSG_PLUGIN_INIT, "Plugin initializing"); DEF_STR(MSG_PLUGIN_INIT, "Plugin initializing");
DEF_STR(MSG_NO_SHORTCUT_SEL, "You have not selected a virtual key to assign to the menu item."); DEF_STR(MSG_NO_SHORTCUT_SEL, "You have not selected a virtual key to assign to the menu item.");
DEF_STR(MSG_NO_MENUITEM_SEL, "You need to select a menu item to assign this key to."); DEF_STR(MSG_NO_MENUITEM_SEL, "You need to select a menu item to assign this key to.");
DEF_STR(MSG_MENUITEM_ASSIGNED, "Short-cut has already been assigned to another menu item."); DEF_STR(MSG_MENUITEM_ASSIGNED, "Shortcut has already been assigned to another menu item.");
DEF_STR(MSG_NO_SEL_SHORTCUT, "No shortcut has been selected to be removed."); DEF_STR(MSG_NO_SEL_SHORTCUT, "No shortcut has been selected to be removed.");
DEF_STR(MSG_WAITING_FOR_START, "ROM loaded. Waiting for emulation to start."); DEF_STR(MSG_WAITING_FOR_START, "ROM loaded. Waiting for emulation to start.");
DEF_STR(MSG_INVALID_EXE, "Project64 beta versions are for members only.\n\nIf you have an account at www.pj64-emu.com, you should not be seeing this error!!\nPlease contact us on the site."); DEF_STR(MSG_INVALID_EXE, "Project64 beta versions are for members only.\n\nIf you have an account at www.pj64-emu.com, you should not be seeing this error!!\nPlease contact us on the site.");
@ -541,15 +530,14 @@ void CLanguage::LoadDefaultStrings(void)
DEF_STR(MSG_SET_HLE_AUD_TITLE, "Audio High-Level Emulation"); DEF_STR(MSG_SET_HLE_AUD_TITLE, "Audio High-Level Emulation");
DEF_STR(MSG_SET_HLE_AUD_MSG, "Audio HLE requires a third-party plugin!!!\nIf you do not use a third-party audio plugin that supports HLE, you will hear no sound.\n\nChange to audio HLE?"); DEF_STR(MSG_SET_HLE_AUD_MSG, "Audio HLE requires a third-party plugin!!!\nIf you do not use a third-party audio plugin that supports HLE, you will hear no sound.\n\nChange to audio HLE?");
DEF_STR(MSG_FAIL_IMAGE_IPL, "File loaded does not appear to be a valid 64DD IPL ROM.\n\nVerify your ROMs with GoodN64."); DEF_STR(MSG_FAIL_IMAGE_IPL, "File loaded does not appear to be a valid 64DD IPL ROM.\n\nVerify your ROMs with GoodN64.");
DEF_STR(MSG_IPL_REQUIRED, "Nintendo 64DD Japanese Retail IPL ROM not found.\nIt is required to play japanese region 64DD disk images.\n\nPlease select the required ROM in the Settings."); DEF_STR(MSG_IPL_REQUIRED, "Nintendo 64DD Japanese retail IPL ROM not found.\nIt is required to play Japanese region 64DD disk images.\n\nPlease select the required ROM in the settings.");
DEF_STR(MSG_USA_IPL_REQUIRED, "Nintendo 64DD American Retail IPL ROM not found.\nIt is required to play american region 64DD disk images.\n\nPlease select the required ROM in the Settings."); DEF_STR(MSG_USA_IPL_REQUIRED, "Nintendo 64DD American retail IPL ROM not found.\nIt is required to play American region 64DD disk images.\n\nPlease select the required ROM in the settings.");
DEF_STR(MSG_TOOL_IPL_REQUIRED, "Nintendo 64DD Development IPL ROM not found.\nIt is required to play development 64DD disk images.\n\nPlease select the required ROM in the Settings."); DEF_STR(MSG_TOOL_IPL_REQUIRED, "Nintendo 64DD development IPL ROM not found.\nIt is required to play development 64DD disk images.\n\nPlease select the required ROM in the settings.");
DEF_STR(MSG_CHEAT_INVALID_MSG, "Failed to update cheat, it is invalid"); DEF_STR(MSG_CHEAT_INVALID_MSG, "Failed to update cheat, it is invalid");
DEF_STR(MSG_CHEAT_INVALID_TITLE, "Invalid Cheat"); DEF_STR(MSG_CHEAT_INVALID_TITLE, "Invalid Cheat");
/********************************************************************************* // Android
* Android *
*********************************************************************************/
DEF_STR(ANDROID_SETTINGS, "Settings"); DEF_STR(ANDROID_SETTINGS, "Settings");
DEF_STR(ANDROID_FORUM, "Help/Forum"); DEF_STR(ANDROID_FORUM, "Help/Forum");
DEF_STR(ANDROID_REPORT_BUG, "Report Issue"); DEF_STR(ANDROID_REPORT_BUG, "Report Issue");
@ -557,7 +545,7 @@ void CLanguage::LoadDefaultStrings(void)
DEF_STR(ANDROID_GALLERY_RECENTLYPLAYED, "Recently played"); DEF_STR(ANDROID_GALLERY_RECENTLYPLAYED, "Recently played");
DEF_STR(ANDROID_GALLERY_LIBRARY, "Games"); DEF_STR(ANDROID_GALLERY_LIBRARY, "Games");
DEF_STR(ANDROID_GAMEDIR, "Game Dir"); DEF_STR(ANDROID_GAMEDIR, "Game Dir");
DEF_STR(ANDROID_SELECTDIR, "Select an folder to scan"); DEF_STR(ANDROID_SELECTDIR, "Select a folder to scan");
DEF_STR(ANDROID_INCLUDE_SUBDIRECTORIES, "Include subdirectories"); DEF_STR(ANDROID_INCLUDE_SUBDIRECTORIES, "Include subdirectories");
DEF_STR(ANDROID_PARENTFOLDER, "Parent folder"); DEF_STR(ANDROID_PARENTFOLDER, "Parent folder");
DEF_STR(ANDROID_DIRECTORIES, "Directories"); DEF_STR(ANDROID_DIRECTORIES, "Directories");
@ -569,13 +557,13 @@ void CLanguage::LoadDefaultStrings(void)
DEF_STR(ANDROID_ABOUT_APP_NAME, "Project64 for Android"); DEF_STR(ANDROID_ABOUT_APP_NAME, "Project64 for Android");
DEF_STR(ANDROID_ABOUT_LICENCE, "License"); DEF_STR(ANDROID_ABOUT_LICENCE, "License");
DEF_STR(ANDROID_ABOUT_REVISION, "Revision"); DEF_STR(ANDROID_ABOUT_REVISION, "Revision");
DEF_STR(ANDROID_ABOUT_TEXT, "Project64 for Android\u2122 is a port of the windows version of project64.The Android\u2122 version can play most N64 games."); DEF_STR(ANDROID_ABOUT_TEXT, "Project64 for Android\u2122 is a port of the Windows version of Project64.The Android\u2122 version can play most N64 games.");
DEF_STR(ANDROID_ABOUT_PJ64_AUTHORS, "Project64 Authors."); DEF_STR(ANDROID_ABOUT_PJ64_AUTHORS, "Project64 Authors.");
DEF_STR(ANDROID_DISCORD, "Discord"); DEF_STR(ANDROID_DISCORD, "Discord");
DEF_STR(ANDROID_SUPPORT_PJ64, "Support Project64"); DEF_STR(ANDROID_SUPPORT_PJ64, "Support Project64");
DEF_STR(ANDROID_REVIEW_PJ64, "Review Project64"); DEF_STR(ANDROID_REVIEW_PJ64, "Review Project64");
//In game menu // In-game menu
DEF_STR(ANDROID_MENU_SETTINGS, "Settings"); DEF_STR(ANDROID_MENU_SETTINGS, "Settings");
DEF_STR(ANDROID_MENU_SAVESTATE, "Save State"); DEF_STR(ANDROID_MENU_SAVESTATE, "Save State");
DEF_STR(ANDROID_MENU_LOADSTATE, "Load State"); DEF_STR(ANDROID_MENU_LOADSTATE, "Load State");
@ -617,7 +605,7 @@ CLanguage::~CLanguage()
bool CLanguage::LoadCurrentStrings(void) bool CLanguage::LoadCurrentStrings(void)
{ {
//clear all the current strings loaded // Clear all the current strings loaded
m_CurrentStrings.clear(); m_CurrentStrings.clear();
if (g_Settings->LoadBool(Debugger_DebugLanguage)) if (g_Settings->LoadBool(Debugger_DebugLanguage))
@ -651,7 +639,7 @@ bool CLanguage::LoadCurrentStrings(void)
return false; return false;
} }
//Search for utf8 file marker // Search for UTF8 file marker
uint8_t utf_bom[3]; uint8_t utf_bom[3];
if (fread(&utf_bom, sizeof(utf_bom), 1, file) != 1 || if (fread(&utf_bom, sizeof(utf_bom), 1, file) != 1 ||
utf_bom[0] != 0xEF || utf_bom[0] != 0xEF ||
@ -662,7 +650,7 @@ bool CLanguage::LoadCurrentStrings(void)
return false; return false;
} }
//String; // String
while (!feof(file)) while (!feof(file))
{ {
m_CurrentStrings.insert(GetNextLangString(file)); m_CurrentStrings.insert(GetNextLangString(file));
@ -684,7 +672,7 @@ LanguageList & CLanguage::GetLangList(void)
{ {
do do
{ {
LanguageFile File; //We temporally store the values in here to added to the list LanguageFile File; // We temporally store the values in here to add to the list
File.Filename = (const std::string &)LanguageFiles; File.Filename = (const std::string &)LanguageFiles;
File.LanguageName = GetLangString(LanguageFiles, LANGUAGE_NAME); File.LanguageName = GetLangString(LanguageFiles, LANGUAGE_NAME);
@ -694,7 +682,7 @@ LanguageList & CLanguage::GetLangList(void)
continue; continue;
} }
//get the name of the language from inside the file // Get the name of the language from inside the file
m_LanguageList.push_back(File); m_LanguageList.push_back(File);
} while (LanguageFiles.FindNext()); } while (LanguageFiles.FindNext());
} }
@ -737,7 +725,7 @@ std::string CLanguage::GetLangString(const char * FileName, LanguageStringID ID)
return ""; return "";
} }
//Search for utf8 file marker // Search for UTF8 file marker
uint8_t utf_bom[3]; uint8_t utf_bom[3];
if (fread(&utf_bom, sizeof(utf_bom), 1, file) != 1 || if (fread(&utf_bom, sizeof(utf_bom), 1, file) != 1 ||
utf_bom[0] != 0xEF || utf_bom[0] != 0xEF ||
@ -748,7 +736,7 @@ std::string CLanguage::GetLangString(const char * FileName, LanguageStringID ID)
return ""; return "";
} }
//String; // String
while (!feof(file)) while (!feof(file))
{ {
LANG_STR String = GetNextLangString(file); LANG_STR String = GetNextLangString(file);
@ -766,7 +754,7 @@ LANG_STR CLanguage::GetNextLangString(void * OpenFile)
{ {
enum { MAX_STRING_LEN = 800 }; enum { MAX_STRING_LEN = 800 };
int32_t StringID; int32_t StringID;
char szString[MAX_STRING_LEN]; //temp store the string from the file char szString[MAX_STRING_LEN]; // Temporarily store the string from the file
FILE * file = (FILE *)OpenFile; FILE * file = (FILE *)OpenFile;
@ -776,7 +764,7 @@ LANG_STR CLanguage::GetNextLangString(void * OpenFile)
return LANG_STR(0, ""); return LANG_STR(0, "");
} }
//Search for token # // Search for token number
char token = 0; char token = 0;
while (token != '#' && !feof(file)) while (token != '#' && !feof(file))
{ {
@ -787,10 +775,10 @@ LANG_STR CLanguage::GetNextLangString(void * OpenFile)
return LANG_STR(0, ""); return LANG_STR(0, "");
} }
//get StringID after token // Get StringID after token
fscanf(file, "%d", &StringID); fscanf(file, "%d", &StringID);
//Search for token # // Search for token number
while (token != '#' && !feof(file)) while (token != '#' && !feof(file))
{ {
fread(&token, 1, 1, file); fread(&token, 1, 1, file);

View File

@ -9,14 +9,14 @@
__interface CNotification __interface CNotification
{ {
public: public:
//Error Messages // Error messages
virtual void DisplayError(const char * Message) const = 0; virtual void DisplayError(const char * Message) const = 0;
virtual void DisplayError(LanguageStringID StringID) const = 0; virtual void DisplayError(LanguageStringID StringID) const = 0;
virtual void FatalError(const char * Message) const = 0; virtual void FatalError(const char * Message) const = 0;
virtual void FatalError(LanguageStringID StringID) const = 0; virtual void FatalError(LanguageStringID StringID) const = 0;
//User Feedback // User feedback
virtual void DisplayWarning(const char * Message) const = 0; virtual void DisplayWarning(const char * Message) const = 0;
virtual void DisplayWarning(LanguageStringID StringID) const = 0; virtual void DisplayWarning(LanguageStringID StringID) const = 0;
@ -24,7 +24,7 @@ public:
virtual void DisplayMessage(int DisplayTime, LanguageStringID StringID) const = 0; virtual void DisplayMessage(int DisplayTime, LanguageStringID StringID) const = 0;
virtual void DisplayMessage2(const char * Message) const = 0; virtual void DisplayMessage2(const char * Message) const = 0;
// Ask a Yes/No Question to the user, yes = true, no = false // Ask a yes/no question to the user, yes = true, no = false
virtual bool AskYesNoQuestion(const char * Question) const = 0; virtual bool AskYesNoQuestion(const char * Question) const = 0;
virtual void BreakPoint(const char * FileName, int32_t LineNumber) = 0; virtual void BreakPoint(const char * FileName, int32_t LineNumber) = 0;

View File

@ -93,7 +93,7 @@ void CRomList::RefreshRomList(void)
{ {
if (m_RefreshThread.isRunning()) if (m_RefreshThread.isRunning())
{ {
WriteTrace(TraceRomList, TraceVerbose, "already refreshing, ignoring"); WriteTrace(TraceRomList, TraceVerbose, "Already refreshing, ignoring");
return; return;
} }
WriteTrace(TraceRomList, TraceDebug, "Starting thread"); WriteTrace(TraceRomList, TraceDebug, "Starting thread");
@ -105,11 +105,11 @@ void CRomList::RefreshRomList(void)
void CRomList::RefreshRomListThread(void) void CRomList::RefreshRomListThread(void)
{ {
WriteTrace(TraceRomList, TraceVerbose, "Start"); WriteTrace(TraceRomList, TraceVerbose, "Start");
//delete cache // Delete cache
CPath(g_Settings->LoadStringVal(RomList_RomListCache)).Delete(); CPath(g_Settings->LoadStringVal(RomList_RomListCache)).Delete();
WriteTrace(TraceRomList, TraceVerbose, "Cache Deleted"); WriteTrace(TraceRomList, TraceVerbose, "Cache deleted");
//clear all current items // Clear all current items
RomListReset(); RomListReset();
m_RomInfo.clear(); m_RomInfo.clear();
@ -134,7 +134,7 @@ void CRomList::AddRomToList(const char * RomLocation)
} }
else else
{ {
WriteTrace(TraceRomList, TraceVerbose, "Failed to fill rom information, ignoring"); WriteTrace(TraceRomList, TraceVerbose, "Failed to fill ROM information, ignoring");
} }
WriteTrace(TraceRomList, TraceVerbose, "Done"); WriteTrace(TraceRomList, TraceVerbose, "Done");
} }
@ -158,7 +158,7 @@ void CRomList::FillRomList(strlist & FileList, const char * Directory)
WriteTrace(TraceRomList, TraceVerbose, "Found: \"%s\" m_StopRefresh = %s", (const char *)SearchDir, m_StopRefresh ? "true" : "false"); WriteTrace(TraceRomList, TraceVerbose, "Found: \"%s\" m_StopRefresh = %s", (const char *)SearchDir, m_StopRefresh ? "true" : "false");
if (m_StopRefresh) if (m_StopRefresh)
{ {
WriteTrace(TraceRomList, TraceVerbose, "stop refresh set, stopping"); WriteTrace(TraceRomList, TraceVerbose, "Stop refresh set, stopping");
break; break;
} }
@ -262,7 +262,7 @@ void CRomList::FillRomList(strlist & FileList, const char * Directory)
WriteTrace(TraceUserInterface, TraceDebug, "11a %s", RomHeader.c_str()); WriteTrace(TraceUserInterface, TraceDebug, "11a %s", RomHeader.c_str());
int32_t CicChip = CN64Rom::GetCicChipID(RomData); int32_t CicChip = CN64Rom::GetCicChipID(RomData);
//save this info // Save this info
WriteTrace(TraceUserInterface, TraceDebug, "12"); WriteTrace(TraceUserInterface, TraceDebug, "12");
m_ZipIniFile->SaveString(SectionName.c_str(), FileName.c_str(), RomHeader.c_str()); m_ZipIniFile->SaveString(SectionName.c_str(), FileName.c_str(), RomHeader.c_str());
m_ZipIniFile->SaveNumber(SectionName.c_str(), stdstr_f("%s-Cic", FileName.c_str()).c_str(), CicChip); m_ZipIniFile->SaveNumber(SectionName.c_str(), stdstr_f("%s-Cic", FileName.c_str()).c_str(), CicChip);
@ -310,7 +310,7 @@ void CRomList::FillRomList(strlist & FileList, const char * Directory)
} }
catch (...) catch (...)
{ {
WriteTrace(TraceUserInterface, TraceError, "exception processing %s", (LPCSTR)SearchDir); WriteTrace(TraceUserInterface, TraceError, "Exception processing %s", (LPCSTR)SearchDir);
} }
} }
#endif #endif
@ -421,9 +421,9 @@ bool CRomList::LoadDataFromRomFile(const char * FileName, uint8_t * Data, int32_
uint32_t diskidoffset = 0x43670; uint32_t diskidoffset = 0x43670;
uint32_t romdataoffset = 0x738C0; uint32_t romdataoffset = 0x738C0;
bool isValidDisk = false; bool isValidDisk = false;
//Could still be a Disk Image // Could still be a disk image
//System Data // System data
const uint8_t blocks[7] = { 2, 3, 10, 11, 1, 8, 9 }; const uint8_t blocks[7] = { 2, 3, 10, 11, 1, 8, 9 };
for (int i = 0; i < 7; i++) for (int i = 0; i < 7; i++)
{ {
@ -462,7 +462,7 @@ bool CRomList::LoadDataFromRomFile(const char * FileName, uint8_t * Data, int32_
} }
else if (CN64Disk::IsValidDiskImage(Test)) else if (CN64Disk::IsValidDiskImage(Test))
{ {
//Is a Disk Image // If it is a disk image
uint32_t sysdataoffset = 0; uint32_t sysdataoffset = 0;
uint32_t diskidoffset = 0x100; uint32_t diskidoffset = 0x100;
uint32_t romdataoffset = 0x200; uint32_t romdataoffset = 0x200;
@ -588,17 +588,17 @@ void CRomList::FillRomExtensionInfo(ROM_INFO * pRomInfo)
} }
} }
//Rom Notes // ROM notes
strncpy(pRomInfo->UserNotes, m_NotesIniFile->GetString(Identifier, "Note", "").c_str(), sizeof(pRomInfo->UserNotes) / sizeof(char)); strncpy(pRomInfo->UserNotes, m_NotesIniFile->GetString(Identifier, "Note", "").c_str(), sizeof(pRomInfo->UserNotes) / sizeof(char));
//Rom Extension info // ROM extension info
strncpy(pRomInfo->Developer, m_ExtIniFile->GetString(Identifier, "Developer", "").c_str(), sizeof(pRomInfo->Developer) / sizeof(char)); strncpy(pRomInfo->Developer, m_ExtIniFile->GetString(Identifier, "Developer", "").c_str(), sizeof(pRomInfo->Developer) / sizeof(char));
strncpy(pRomInfo->ReleaseDate, m_ExtIniFile->GetString(Identifier, "ReleaseDate", "").c_str(), sizeof(pRomInfo->ReleaseDate) / sizeof(char)); strncpy(pRomInfo->ReleaseDate, m_ExtIniFile->GetString(Identifier, "ReleaseDate", "").c_str(), sizeof(pRomInfo->ReleaseDate) / sizeof(char));
strncpy(pRomInfo->Genre, m_ExtIniFile->GetString(Identifier, "Genre", "").c_str(), sizeof(pRomInfo->Genre) / sizeof(char)); strncpy(pRomInfo->Genre, m_ExtIniFile->GetString(Identifier, "Genre", "").c_str(), sizeof(pRomInfo->Genre) / sizeof(char));
m_ExtIniFile->GetNumber(Identifier, "Players", 1, (uint32_t &)pRomInfo->Players); m_ExtIniFile->GetNumber(Identifier, "Players", 1, (uint32_t &)pRomInfo->Players);
strncpy(pRomInfo->ForceFeedback, m_ExtIniFile->GetString(Identifier, "ForceFeedback", "unknown").c_str(), sizeof(pRomInfo->ForceFeedback) / sizeof(char)); strncpy(pRomInfo->ForceFeedback, m_ExtIniFile->GetString(Identifier, "ForceFeedback", "unknown").c_str(), sizeof(pRomInfo->ForceFeedback) / sizeof(char));
//Rom Settings // ROM settings
strncpy(pRomInfo->GoodName, m_RomIniFile->GetString(Identifier, "Good Name", pRomInfo->GoodName).c_str(), sizeof(pRomInfo->GoodName) / sizeof(char)); strncpy(pRomInfo->GoodName, m_RomIniFile->GetString(Identifier, "Good Name", pRomInfo->GoodName).c_str(), sizeof(pRomInfo->GoodName) / sizeof(char));
strncpy(pRomInfo->Name, m_RomIniFile->GetString(Identifier, "Good Name", pRomInfo->Name).c_str(), sizeof(pRomInfo->Name) / sizeof(char)); strncpy(pRomInfo->Name, m_RomIniFile->GetString(Identifier, "Good Name", pRomInfo->Name).c_str(), sizeof(pRomInfo->Name) / sizeof(char));
strncpy(pRomInfo->Status, m_RomIniFile->GetString(Identifier, "Status", pRomInfo->Status).c_str(), sizeof(pRomInfo->Status) / sizeof(char)); strncpy(pRomInfo->Status, m_RomIniFile->GetString(Identifier, "Status", pRomInfo->Status).c_str(), sizeof(pRomInfo->Status) / sizeof(char));
@ -639,8 +639,8 @@ void CRomList::ByteSwapRomData(uint8_t * Data, int32_t DataLen)
{ {
case 0x12408037: case 0x12408037:
case 0x07408027: // 64DD IPL case 0x07408027: // 64DD IPL
case 0xD316E848: //64DD JP Disk case 0xD316E848: // 64DD JP disk
case 0xEE562263: //64DD US Disk case 0xEE562263: // 64DD US disk
for (count = 0; count < DataLen; count += 4) for (count = 0; count < DataLen; count += 4)
{ {
Data[count] ^= Data[count + 2]; Data[count] ^= Data[count + 2];
@ -652,10 +652,10 @@ void CRomList::ByteSwapRomData(uint8_t * Data, int32_t DataLen)
} }
break; break;
case 0x40072780: // 64DD IPL case 0x40072780: // 64DD IPL
case 0x16D348E8: //64DD JP Disk case 0x16D348E8: // 64DD JP disk
case 0x56EE6322: //64DD US Disk case 0x56EE6322: // 64DD US disk
case 0x40123780: case 0x40123780:
case 0x00000000: //64DD DEV Disk case 0x00000000: // 64DD DEV disk
for (count = 0; count < DataLen; count += 4) for (count = 0; count < DataLen; count += 4)
{ {
Data[count] ^= Data[count + 3]; Data[count] ^= Data[count + 3];
@ -668,8 +668,8 @@ void CRomList::ByteSwapRomData(uint8_t * Data, int32_t DataLen)
break; break;
case 0x80371240: case 0x80371240:
case 0x80270740: // 64DD IPL case 0x80270740: // 64DD IPL
case 0xE848D316: //64DD JP Disk case 0xE848D316: // 64DD JP disk
case 0x2263EE56: //64DD US Disk case 0x2263EE56: // 64DD US disk
break; break;
} }
} }
@ -682,7 +682,7 @@ void CRomList::LoadRomList(void)
if (!file.IsOpen()) if (!file.IsOpen())
{ {
//if file does not exist then refresh the data // If file does not exist then refresh the data
RefreshRomList(); RefreshRomList();
return; return;
} }
@ -703,11 +703,11 @@ void CRomList::LoadRomList(void)
return; return;
} }
//Read the Number of entries // Read the number of entries
int32_t Entries = 0; int32_t Entries = 0;
file.Read(&Entries, sizeof(Entries)); file.Read(&Entries, sizeof(Entries));
//Read Every Entry // Read every entry
m_RomInfo.clear(); m_RomInfo.clear();
RomListReset(); RomListReset();
for (int32_t count = 0; count < Entries; count++) for (int32_t count = 0; count < Entries; count++)
@ -722,10 +722,9 @@ void CRomList::LoadRomList(void)
WriteTrace(TraceRomList, TraceVerbose, "Done"); WriteTrace(TraceRomList, TraceVerbose, "Done");
} }
/* // SaveRomList - save all the ROM information about the current ROMs in the ROM browser
* SaveRomList - save all the rom information about the current roms in the rom brower // to a cache file, so it is quick to reload the information
* to a cache file, so it is quick to reload the information
*/
void CRomList::SaveRomList(strlist & FileList) void CRomList::SaveRomList(strlist & FileList)
{ {
MD5 ListHash = RomListHash(FileList); MD5 ListHash = RomListHash(FileList);
@ -738,11 +737,11 @@ void CRomList::SaveRomList(strlist & FileList)
int32_t RomInfoSize = sizeof(ROM_INFO); int32_t RomInfoSize = sizeof(ROM_INFO);
file.Write(&RomInfoSize, sizeof(RomInfoSize)); file.Write(&RomInfoSize, sizeof(RomInfoSize));
//Write the Number of entries // Write the number of entries
int32_t Entries = m_RomInfo.size(); int32_t Entries = m_RomInfo.size();
file.Write(&Entries, sizeof(Entries)); file.Write(&Entries, sizeof(Entries));
//Write Every Entry // Write every entry
for (int32_t count = 0; count < Entries; count++) for (int32_t count = 0; count < Entries; count++)
{ {
file.Write(&m_RomInfo[count], RomInfoSize); file.Write(&m_RomInfo[count], RomInfoSize);

View File

@ -72,13 +72,13 @@ void CSettings::AddHowToHandleSetting(const char * BaseDirectory)
{ {
WriteTrace(TraceAppInit, TraceDebug, "Start"); WriteTrace(TraceAppInit, TraceDebug, "Start");
//Command Settings // Command settings
AddHandler(Cmd_BaseDirectory, new CSettingTypeTempString(BaseDirectory)); AddHandler(Cmd_BaseDirectory, new CSettingTypeTempString(BaseDirectory));
AddHandler(Cmd_ShowHelp, new CSettingTypeTempBool(false)); AddHandler(Cmd_ShowHelp, new CSettingTypeTempBool(false));
AddHandler(Cmd_RomFile, new CSettingTypeTempString("")); AddHandler(Cmd_RomFile, new CSettingTypeTempString(""));
AddHandler(Cmd_ComboDiskFile, new CSettingTypeTempString("")); AddHandler(Cmd_ComboDiskFile, new CSettingTypeTempString(""));
//Support Files // Support files
AddHandler(SupportFile_Settings, new CSettingTypeApplicationPath("Settings", "ConfigFile", SupportFile_SettingsDefault)); AddHandler(SupportFile_Settings, new CSettingTypeApplicationPath("Settings", "ConfigFile", SupportFile_SettingsDefault));
AddHandler(SupportFile_SettingsDefault, new CSettingTypeRelativePath("Config", "Project64.cfg")); AddHandler(SupportFile_SettingsDefault, new CSettingTypeRelativePath("Config", "Project64.cfg"));
AddHandler(SupportFile_RomDatabase, new CSettingTypeApplicationPath("Settings", "RomDatabase", SupportFile_RomDatabaseDefault)); AddHandler(SupportFile_RomDatabase, new CSettingTypeApplicationPath("Settings", "RomDatabase", SupportFile_RomDatabaseDefault));
@ -245,7 +245,7 @@ void CSettings::AddHowToHandleSetting(const char * BaseDirectory)
AddHandler(Game_RPCKey, new CSettingTypeTempString("")); AddHandler(Game_RPCKey, new CSettingTypeTempString(""));
AddHandler(Game_DiskSeekTiming, new CSettingTypeGame("DiskSeekTiming", Rdb_DiskSeekTiming)); AddHandler(Game_DiskSeekTiming, new CSettingTypeGame("DiskSeekTiming", Rdb_DiskSeekTiming));
//User Interface // User interface
AddHandler(UserInterface_ShowCPUPer, new CSettingTypeApplication("Settings", "Display CPU Usage", (uint32_t)false)); AddHandler(UserInterface_ShowCPUPer, new CSettingTypeApplication("Settings", "Display CPU Usage", (uint32_t)false));
AddHandler(UserInterface_DisplayFrameRate, new CSettingTypeApplication("Settings", "Display Frame Rate", (uint32_t)false)); AddHandler(UserInterface_DisplayFrameRate, new CSettingTypeApplication("Settings", "Display Frame Rate", (uint32_t)false));
AddHandler(UserInterface_FrameDisplayType, new CSettingTypeApplication("Settings", "Frame Rate Display Type", (uint32_t)FR_VIs)); AddHandler(UserInterface_FrameDisplayType, new CSettingTypeApplication("Settings", "Frame Rate Display Type", (uint32_t)FR_VIs));
@ -698,7 +698,7 @@ bool CSettings::LoadBool(SettingID Type, bool & Value)
SETTING_HANDLER FindInfo = m_SettingInfo.find(Type); SETTING_HANDLER FindInfo = m_SettingInfo.find(Type);
if (FindInfo == m_SettingInfo.end()) if (FindInfo == m_SettingInfo.end())
{ {
//if not found do nothing // If not found do nothing
UnknownSetting(Type); UnknownSetting(Type);
return 0; return 0;
} }
@ -725,7 +725,7 @@ bool CSettings::LoadBoolIndex(SettingID Type, uint32_t index, bool & Value)
SETTING_HANDLER FindInfo = m_SettingInfo.find(Type); SETTING_HANDLER FindInfo = m_SettingInfo.find(Type);
if (FindInfo == m_SettingInfo.end()) if (FindInfo == m_SettingInfo.end())
{ {
//if not found do nothing // If not found do nothing
UnknownSetting(Type); UnknownSetting(Type);
return false; return false;
} }
@ -752,7 +752,7 @@ bool CSettings::LoadDword(SettingID Type, uint32_t & Value)
SETTING_HANDLER FindInfo = m_SettingInfo.find(Type); SETTING_HANDLER FindInfo = m_SettingInfo.find(Type);
if (FindInfo == m_SettingInfo.end()) if (FindInfo == m_SettingInfo.end())
{ {
//if not found do nothing // If not found do nothing
UnknownSetting(Type); UnknownSetting(Type);
return false; return false;
} }
@ -779,7 +779,7 @@ bool CSettings::LoadDwordIndex(SettingID Type, uint32_t index, uint32_t & Value)
SETTING_HANDLER FindInfo = m_SettingInfo.find(Type); SETTING_HANDLER FindInfo = m_SettingInfo.find(Type);
if (FindInfo == m_SettingInfo.end()) if (FindInfo == m_SettingInfo.end())
{ {
//if not found do nothing // If not found do nothing
UnknownSetting(Type); UnknownSetting(Type);
return 0; return 0;
} }
@ -806,7 +806,7 @@ bool CSettings::LoadStringVal(SettingID Type, std::string & Value)
SETTING_HANDLER FindInfo = m_SettingInfo.find(Type); SETTING_HANDLER FindInfo = m_SettingInfo.find(Type);
if (FindInfo == m_SettingInfo.end()) if (FindInfo == m_SettingInfo.end())
{ {
//if not found do nothing // If not found do nothing
UnknownSetting(Type); UnknownSetting(Type);
return 0; return 0;
} }
@ -826,7 +826,7 @@ bool CSettings::LoadStringVal(SettingID Type, char * Buffer, uint32_t BufferSize
SETTING_HANDLER FindInfo = m_SettingInfo.find(Type); SETTING_HANDLER FindInfo = m_SettingInfo.find(Type);
if (FindInfo == m_SettingInfo.end()) if (FindInfo == m_SettingInfo.end())
{ {
//if not found do nothing // If not found do nothing
UnknownSetting(Type); UnknownSetting(Type);
return 0; return 0;
} }
@ -861,7 +861,7 @@ bool CSettings::LoadStringIndex(SettingID Type, uint32_t index, std::string & Va
SETTING_HANDLER FindInfo = m_SettingInfo.find(Type); SETTING_HANDLER FindInfo = m_SettingInfo.find(Type);
if (FindInfo == m_SettingInfo.end()) if (FindInfo == m_SettingInfo.end())
{ {
//if not found do nothing // If not found do nothing
UnknownSetting(Type); UnknownSetting(Type);
return 0; return 0;
} }
@ -895,7 +895,7 @@ void CSettings::LoadDefaultBool(SettingID Type, bool & Value)
SETTING_HANDLER FindInfo = m_SettingInfo.find(Type); SETTING_HANDLER FindInfo = m_SettingInfo.find(Type);
if (FindInfo == m_SettingInfo.end()) if (FindInfo == m_SettingInfo.end())
{ {
//if not found do nothing // If not found do nothing
UnknownSetting(Type); UnknownSetting(Type);
} }
else else
@ -934,7 +934,7 @@ void CSettings::LoadDefaultDword(SettingID Type, uint32_t & Value)
SETTING_HANDLER FindInfo = m_SettingInfo.find(Type); SETTING_HANDLER FindInfo = m_SettingInfo.find(Type);
if (FindInfo == m_SettingInfo.end()) if (FindInfo == m_SettingInfo.end())
{ {
//if not found do nothing // If not found do nothing
UnknownSetting(Type); UnknownSetting(Type);
} }
else else
@ -973,7 +973,7 @@ void CSettings::LoadDefaultString(SettingID Type, std::string & Value)
SETTING_HANDLER FindInfo = m_SettingInfo.find(Type); SETTING_HANDLER FindInfo = m_SettingInfo.find(Type);
if (FindInfo == m_SettingInfo.end()) if (FindInfo == m_SettingInfo.end())
{ {
//if not found do nothing // If not found do nothing
UnknownSetting(Type); UnknownSetting(Type);
} }
else else
@ -1015,7 +1015,7 @@ void CSettings::SaveBool(SettingID Type, bool Value)
SETTING_HANDLER FindInfo = m_SettingInfo.find(Type); SETTING_HANDLER FindInfo = m_SettingInfo.find(Type);
if (FindInfo == m_SettingInfo.end()) if (FindInfo == m_SettingInfo.end())
{ {
//if not found do nothing // If not found do nothing
UnknownSetting(Type); UnknownSetting(Type);
return; return;
} }
@ -1035,7 +1035,7 @@ void CSettings::SaveBoolIndex(SettingID Type, uint32_t index, bool Value)
SETTING_HANDLER FindInfo = m_SettingInfo.find(Type); SETTING_HANDLER FindInfo = m_SettingInfo.find(Type);
if (FindInfo == m_SettingInfo.end()) if (FindInfo == m_SettingInfo.end())
{ {
//if not found do nothing // If not found do nothing
UnknownSetting(Type); UnknownSetting(Type);
return; return;
} }
@ -1055,7 +1055,7 @@ void CSettings::SaveDword(SettingID Type, uint32_t Value)
SETTING_HANDLER FindInfo = m_SettingInfo.find(Type); SETTING_HANDLER FindInfo = m_SettingInfo.find(Type);
if (FindInfo == m_SettingInfo.end()) if (FindInfo == m_SettingInfo.end())
{ {
//if not found do nothing // If not found do nothing
UnknownSetting(Type); UnknownSetting(Type);
return; return;
} }
@ -1075,7 +1075,7 @@ void CSettings::SaveDwordIndex(SettingID Type, uint32_t index, uint32_t Value)
SETTING_HANDLER FindInfo = m_SettingInfo.find(Type); SETTING_HANDLER FindInfo = m_SettingInfo.find(Type);
if (FindInfo == m_SettingInfo.end()) if (FindInfo == m_SettingInfo.end())
{ {
//if not found do nothing // If not found do nothing
UnknownSetting(Type); UnknownSetting(Type);
return; return;
} }
@ -1095,7 +1095,7 @@ void CSettings::SaveString(SettingID Type, const std::string & Value)
SETTING_HANDLER FindInfo = m_SettingInfo.find(Type); SETTING_HANDLER FindInfo = m_SettingInfo.find(Type);
if (FindInfo == m_SettingInfo.end()) if (FindInfo == m_SettingInfo.end())
{ {
//if not found do nothing // If not found do nothing
UnknownSetting(Type); UnknownSetting(Type);
return; return;
} }
@ -1115,7 +1115,7 @@ void CSettings::SaveString(SettingID Type, const char * Buffer)
SETTING_HANDLER FindInfo = m_SettingInfo.find(Type); SETTING_HANDLER FindInfo = m_SettingInfo.find(Type);
if (FindInfo == m_SettingInfo.end()) if (FindInfo == m_SettingInfo.end())
{ {
//if not found do nothing // If not found do nothing
UnknownSetting(Type); UnknownSetting(Type);
} }
else if (FindInfo->second->IndexBasedSetting()) else if (FindInfo->second->IndexBasedSetting())
@ -1134,7 +1134,7 @@ void CSettings::SaveStringIndex(SettingID Type, uint32_t index, const char * Buf
SETTING_HANDLER FindInfo = m_SettingInfo.find(Type); SETTING_HANDLER FindInfo = m_SettingInfo.find(Type);
if (FindInfo == m_SettingInfo.end()) if (FindInfo == m_SettingInfo.end())
{ {
//if not found do nothing // If not found do nothing
UnknownSetting(Type); UnknownSetting(Type);
} }
if (FindInfo->second->IndexBasedSetting()) if (FindInfo->second->IndexBasedSetting())
@ -1158,7 +1158,7 @@ void CSettings::DeleteSetting(SettingID Type)
SETTING_HANDLER FindInfo = m_SettingInfo.find(Type); SETTING_HANDLER FindInfo = m_SettingInfo.find(Type);
if (FindInfo == m_SettingInfo.end()) if (FindInfo == m_SettingInfo.end())
{ {
//if not found do nothing // If not found do nothing
UnknownSetting(Type); UnknownSetting(Type);
} }
if (FindInfo->second->IndexBasedSetting()) if (FindInfo->second->IndexBasedSetting())
@ -1177,7 +1177,7 @@ void CSettings::DeleteSettingIndex(SettingID Type, uint32_t index)
SETTING_HANDLER FindInfo = m_SettingInfo.find(Type); SETTING_HANDLER FindInfo = m_SettingInfo.find(Type);
if (FindInfo == m_SettingInfo.end()) if (FindInfo == m_SettingInfo.end())
{ {
//if not found do nothing // If not found do nothing
UnknownSetting(Type); UnknownSetting(Type);
} }
if (FindInfo->second->IndexBasedSetting()) if (FindInfo->second->IndexBasedSetting())

View File

@ -25,7 +25,7 @@ public:
bool Initialize(const char * BaseDirectory, const char * AppName); bool Initialize(const char * BaseDirectory, const char * AppName);
//return the values // Return the values
bool LoadBool(SettingID Type); bool LoadBool(SettingID Type);
bool LoadBool(SettingID Type, bool & Value); bool LoadBool(SettingID Type, bool & Value);
bool LoadBoolIndex(SettingID Type, uint32_t index); bool LoadBoolIndex(SettingID Type, uint32_t index);
@ -71,17 +71,17 @@ public:
void DeleteSetting(SettingID Type); void DeleteSetting(SettingID Type);
void DeleteSettingIndex(SettingID Type, uint32_t index); void DeleteSettingIndex(SettingID Type, uint32_t index);
//Register Notification of change // Register notification of change
void RegisterChangeCB(SettingID Type, void * Data, SettingChangedFunc Func); void RegisterChangeCB(SettingID Type, void * Data, SettingChangedFunc Func);
void UnregisterChangeCB(SettingID Type, void * Data, SettingChangedFunc Func); void UnregisterChangeCB(SettingID Type, void * Data, SettingChangedFunc Func);
// information about setting // Information about setting
SettingType GetSettingType(SettingID Type); SettingType GetSettingType(SettingID Type);
bool IndexBasedSetting(SettingID Type); bool IndexBasedSetting(SettingID Type);
void SettingTypeChanged(SettingType Type); void SettingTypeChanged(SettingType Type);
bool IsSettingSet(SettingID Type); bool IsSettingSet(SettingID Type);
// static functions for plugins // Static functions for plugins
static uint32_t GetSetting(CSettings * _this, SettingID Type); static uint32_t GetSetting(CSettings * _this, SettingID Type);
static const char * GetSettingSz(CSettings * _this, SettingID Type, char * Buffer, uint32_t BufferSize); static const char * GetSettingSz(CSettings * _this, SettingID Type, char * Buffer, uint32_t BufferSize);
static void SetSetting(CSettings * _this, SettingID ID, uint32_t Value); static void SetSetting(CSettings * _this, SettingID ID, uint32_t Value);

View File

@ -1,6 +1,5 @@
/********************************************************************************** // Project64 controller plugin spec, version 1.1
Project64 Controller plugin spec, version #1.1
**********************************************************************************/
#pragma once #pragma once
#include <stdint.h> #include <stdint.h>
@ -28,12 +27,13 @@ enum
PLUGIN_RAW = 5, PLUGIN_RAW = 5,
}; };
/***** Structures *****/ // Structures
typedef struct typedef struct
{ {
uint16_t Version; /* Should be set to 0x0101 */ uint16_t Version; // Should be set to 0x0101
uint16_t Type; /* Set to PLUGIN_TYPE_CONTROLLER */ uint16_t Type; // Set to PLUGIN_TYPE_CONTROLLER
char Name[100]; /* Name of the DLL */ char Name[100]; // Name of the DLL
int32_t NormalMemory; int32_t NormalMemory;
int32_t MemoryBswaped; int32_t MemoryBswaped;
} PLUGIN_INFO; } PLUGIN_INFO;
@ -84,140 +84,152 @@ typedef struct
void * hwnd; void * hwnd;
void * hinst; void * hinst;
int32_t MemoryBswaped; // Set this to true int32_t MemoryBswaped; // Set this to true
uint8_t * HEADER; // This is the rom header (first 40h bytes of the rom) uint8_t * HEADER; // This is the ROM header (first 40h bytes of the ROM)
CONTROL * Controls; // A pointer to an array of 4 controllers .. eg: CONTROL * Controls; // A pointer to an array of 4 controllers .. eg:
} CONTROL_INFO; } CONTROL_INFO;
/****************************************************************** /*
Function: CloseDLL Function: CloseDLL
Purpose: This function is called when the emulator is closing Purpose: This function is called when the emulator is closing
down allowing the dll to de-initialise. down allowing the DLL to de-initialize.
input: none input: none
output: none output: none
*******************************************************************/ */
EXPORT void CALL CloseDLL(void); EXPORT void CALL CloseDLL(void);
/****************************************************************** /*
Function: ControllerCommand Function: ControllerCommand
Purpose: To process the raw data that has just been sent to a Purpose: To process the raw data that has just been sent to a
specific controller. specific controller.
input: - Controller Number (0 to 3) and -1 signalling end of input: - Controller Number (0 to 3) and -1 signaling end of
processing the pif ram. processing the PIF RAM.
- Pointer of data to be processed. - Pointer of data to be processed.
output: none output: none
note: This function is only needed if the DLL is allowing raw note: This function is only needed if the DLL is allowing raw
data, or the plugin is set to raw data, or the plugin is set to raw
the data that is being processed looks like this: The data that is being processed looks like this:
initilize controller: 01 03 00 FF FF FF Initialize controller: 01 03 00 FF FF FF
read controller: 01 04 01 FF FF FF FF Read controller: 01 04 01 FF FF FF FF
*******************************************************************/ */
EXPORT void CALL ControllerCommand(int32_t Control, uint8_t * Command); EXPORT void CALL ControllerCommand(int32_t Control, uint8_t * Command);
/****************************************************************** /*
Function: DllAbout Function: DllAbout
Purpose: This function is optional function that is provided Purpose: This function is optional function that is provided
to give further information about the DLL. to give further information about the DLL.
input: a handle to the window that calls this function input: a handle to the window that calls this function
output: none output: none
*******************************************************************/ */
EXPORT void CALL DllAbout(void * hParent); EXPORT void CALL DllAbout(void * hParent);
/****************************************************************** /*
Function: DllConfig Function: DllConfig
Purpose: This function is optional function that is provided Purpose: This function is optional function that is provided
to allow the user to configure the dll to allow the user to configure the DLL
input: a handle to the window that calls this function input: a handle to the window that calls this function
output: none output: none
*******************************************************************/ */
EXPORT void CALL DllConfig(void * hParent); EXPORT void CALL DllConfig(void * hParent);
/****************************************************************** /*
Function: DllTest Function: DllTest
Purpose: This function is optional function that is provided Purpose: This function is optional function that is provided
to allow the user to test the dll to allow the user to test the DLL
input: a handle to the window that calls this function input: a handle to the window that calls this function
output: none output: none
*******************************************************************/ */
EXPORT void CALL DllTest(void * hParent); EXPORT void CALL DllTest(void * hParent);
/****************************************************************** /*
Function: GetDllInfo Function: GetDllInfo
Purpose: This function allows the emulator to gather information Purpose: This function allows the emulator to gather information
about the dll by filling in the PluginInfo structure. about the DLL by filling in the PluginInfo structure.
input: a pointer to a PLUGIN_INFO stucture that needs to be input: a pointer to a PLUGIN_INFO structure that needs to be
filled by the function. (see def above) filled by the function. (see def above)
output: none output: none
*******************************************************************/ */
EXPORT void CALL GetDllInfo(PLUGIN_INFO * PluginInfo); EXPORT void CALL GetDllInfo(PLUGIN_INFO * PluginInfo);
/****************************************************************** /*
Function: GetKeys Function: GetKeys
Purpose: To get the current state of the controllers buttons. Purpose: To get the current state of the controllers buttons.
input: - Controller Number (0 to 3) input: - Controller Number (0 to 3)
- A pointer to a BUTTONS structure to be filled with - A pointer to a BUTTONS structure to be filled with
the controller state. the controller state.
output: none output: none
*******************************************************************/ */
EXPORT void CALL GetKeys(int32_t Control, BUTTONS * Keys); EXPORT void CALL GetKeys(int32_t Control, BUTTONS * Keys);
/****************************************************************** /*
Function: InitiateControllers Function: InitiateControllers
Purpose: This function initialises how each of the controllers Purpose: This function initializes how each of the controllers
should be handled. should be handled.
input: - The handle to the main window. input: - The handle to the main window.
- A controller structure that needs to be filled for - A controller structure that needs to be filled for
the emulator to know how to handle each controller. the emulator to know how to handle each controller.
output: none output: none
*******************************************************************/ */
EXPORT void CALL InitiateControllers(CONTROL_INFO * ControlInfo); EXPORT void CALL InitiateControllers(CONTROL_INFO * ControlInfo);
/****************************************************************** /*
Function: ReadController Function: ReadController
Purpose: To process the raw data in the pif ram that is about to Purpose: To process the raw data in the PIF RAM that is about to
be read. be read.
input: - Controller Number (0 to 3) and -1 signalling end of input: - Controller Number (0 to 3) and -1 signaling end of
processing the pif ram. processing the PIF RAM.
- Pointer of data to be processed. - Pointer of data to be processed.
output: none output: none
note: This function is only needed if the DLL is allowing raw note: This function is only needed if the DLL is allowing raw
data. data.
*******************************************************************/ */
EXPORT void CALL ReadController(int Control, uint8_t * Command); EXPORT void CALL ReadController(int Control, uint8_t * Command);
/****************************************************************** /*
Function: RomClosed Function: RomClosed
Purpose: This function is called when a rom is closed. Purpose: This function is called when a ROM is closed.
input: none input: none
output: none output: none
*******************************************************************/ */
EXPORT void CALL RomClosed(void); EXPORT void CALL RomClosed(void);
/****************************************************************** /*
Function: RomOpen Function: RomOpen
Purpose: This function is called when a rom is open. (from the Purpose: This function is called when a ROM is open. (from the
emulation thread) emulation thread)
input: none input: none
output: none output: none
*******************************************************************/ */
EXPORT void CALL RomOpen(void); EXPORT void CALL RomOpen(void);
/****************************************************************** /*
Function: WM_KeyDown Function: WM_KeyDown
Purpose: To pass the WM_KeyDown message from the emulator to the Purpose: To pass the WM_KeyDown message from the emulator to the
plugin. plugin.
input: wParam and lParam of the WM_KEYDOWN message. input: wParam and lParam of the WM_KEYDOWN message.
output: none output: none
*******************************************************************/ */
EXPORT void CALL WM_KeyDown(uint32_t wParam, uint32_t lParam); EXPORT void CALL WM_KeyDown(uint32_t wParam, uint32_t lParam);
/****************************************************************** /*
Function: WM_KeyUp Function: WM_KeyUp
Purpose: To pass the WM_KEYUP message from the emulator to the Purpose: To pass the WM_KEYUP message from the emulator to the
plugin. plugin.
input: wParam and lParam of the WM_KEYDOWN message. input: wParam and lParam of the WM_KEYDOWN message.
output: none output: none
*******************************************************************/ */
EXPORT void CALL WM_KeyUp(uint32_t wParam, uint32_t lParam);
EXPORT void CALL WM_KeyUp(uint32_t wParam, uint32_t lParam);

View File

@ -100,7 +100,7 @@ BOOL CDirectInput::EnumMakeDeviceList(LPCDIDEVICEINSTANCE lpddi)
uint32_t DeviceType = GET_DIDEVICE_TYPE(lpddi->dwDevType); uint32_t DeviceType = GET_DIDEVICE_TYPE(lpddi->dwDevType);
if (DeviceType == DI8DEVTYPE_DEVICE) if (DeviceType == DI8DEVTYPE_DEVICE)
{ {
// ignore generic devices // Ignore generic devices
return DIENUM_CONTINUE; return DIENUM_CONTINUE;
} }

View File

@ -384,7 +384,7 @@ CInputConfigUI::CInputConfigUI() :
m_pgController2(2), m_pgController2(2),
m_pgController3(3) m_pgController3(3)
{ {
m_psh.pszCaption = L"Configure Input"; m_psh.pszCaption = L"Configure input";
AddPage(&m_pgController0.m_psp); AddPage(&m_pgController0.m_psp);
AddPage(&m_pgController1.m_psp); AddPage(&m_pgController1.m_psp);
AddPage(&m_pgController2.m_psp); AddPage(&m_pgController2.m_psp);

View File

@ -5,24 +5,25 @@
#include "InputSettings.h" #include "InputSettings.h"
#include <stdio.h> #include <stdio.h>
/****************************************************************** /*
Function: CloseDLL Function: CloseDLL
Purpose: This function is called when the emulator is closing Purpose: This function is called when the emulator is closing
down allowing the dll to de-initialise. down allowing the DLL to de-initialize.
input: none input: none
output: none output: none
*******************************************************************/ */
EXPORT void CALL CloseDLL(void) EXPORT void CALL CloseDLL(void)
{ {
CleanupInputSettings(); CleanupInputSettings();
} }
/****************************************************************** /*
Function: ControllerCommand Function: ControllerCommand
Purpose: To process the raw data that has just been sent to a Purpose: To process the raw data that has just been sent to a
specific controller. specific controller.
input: - Controller Number (0 to 3) and -1 signalling end of input: - Controller Number (0 to 3) and -1 signaling end of
processing the pif ram. processing the PIF RAM.
- Pointer of data to be processed. - Pointer of data to be processed.
output: none output: none
@ -30,14 +31,15 @@ note: This function is only needed if the DLL is allowing raw
data, or the plugin is set to raw data, or the plugin is set to raw
the data that is being processed looks like this: the data that is being processed looks like this:
initilize controller: 01 03 00 FF FF FF Initialize controller: 01 03 00 FF FF FF
read controller: 01 04 01 FF FF FF FF Read controller: 01 04 01 FF FF FF FF
*******************************************************************/ */
EXPORT void CALL ControllerCommand(int32_t /*Control*/, uint8_t * /*Command*/) EXPORT void CALL ControllerCommand(int32_t /*Control*/, uint8_t * /*Command*/)
{ {
} }
/****************************************************************** /*
Function: DllAbout Function: DllAbout
Purpose: This function is optional function that is provided Purpose: This function is optional function that is provided
to give further information about the DLL. to give further information about the DLL.
@ -51,10 +53,11 @@ output: none
/****************************************************************** /******************************************************************
Function: DllConfig Function: DllConfig
Purpose: This function is optional function that is provided Purpose: This function is optional function that is provided
to allow the user to configure the dll to allow the user to configure the DLL
input: a handle to the window that calls this function input: a handle to the window that calls this function
output: none output: none
*******************************************************************/ */
#ifdef _WIN32 #ifdef _WIN32
EXPORT void CALL DllConfig(void * hParent) EXPORT void CALL DllConfig(void * hParent)
{ {
@ -62,59 +65,63 @@ EXPORT void CALL DllConfig(void * hParent)
} }
#endif #endif
/****************************************************************** /*
Function: DllTest Function: DllTest
Purpose: This function is optional function that is provided Purpose: This function is optional function that is provided
to allow the user to test the dll to allow the user to test the DLL
input: a handle to the window that calls this function input: a handle to the window that calls this function
output: none output: none
*******************************************************************/ */
EXPORT void CALL DllTest(void * /*hParent*/) EXPORT void CALL DllTest(void * /*hParent*/)
{ {
} }
/****************************************************************** /*
Function: GetDllInfo Function: GetDllInfo
Purpose: This function allows the emulator to gather information Purpose: This function allows the emulator to gather information
about the dll by filling in the PluginInfo structure. about the DLL by filling in the PluginInfo structure.
input: a pointer to a PLUGIN_INFO stucture that needs to be input: a pointer to a PLUGIN_INFO structure that needs to be
filled by the function. (see def above) filled by the function. (see def above)
output: none output: none
*******************************************************************/ */
EXPORT void CALL GetDllInfo(PLUGIN_INFO * PluginInfo) EXPORT void CALL GetDllInfo(PLUGIN_INFO * PluginInfo)
{ {
PluginInfo->Version = CONTROLLER_SPECS_VERSION; PluginInfo->Version = CONTROLLER_SPECS_VERSION;
PluginInfo->Type = PLUGIN_TYPE_CONTROLLER; PluginInfo->Type = PLUGIN_TYPE_CONTROLLER;
#ifdef _DEBUG #ifdef _DEBUG
sprintf(PluginInfo->Name, "Project64 Input Plugin (Debug): %s", VER_FILE_VERSION_STR); sprintf(PluginInfo->Name, "Project64 input plugin (Debug): %s", VER_FILE_VERSION_STR);
#else #else
sprintf(PluginInfo->Name, "Project64 Input Plugin: %s", VER_FILE_VERSION_STR); sprintf(PluginInfo->Name, "Project64 input plugin: %s", VER_FILE_VERSION_STR);
#endif #endif
PluginInfo->MemoryBswaped = true; PluginInfo->MemoryBswaped = true;
PluginInfo->NormalMemory = false; PluginInfo->NormalMemory = false;
} }
/****************************************************************** /*
Function: GetKeys Function: GetKeys
Purpose: To get the current state of the controllers buttons. Purpose: To get the current state of the controllers buttons.
input: - Controller Number (0 to 3) input: - Controller Number (0 to 3)
- A pointer to a BUTTONS structure to be filled with - A pointer to a BUTTONS structure to be filled with
the controller state. the controller state.
output: none output: none
*******************************************************************/ */
EXPORT void CALL GetKeys(int32_t Control, BUTTONS * Keys) EXPORT void CALL GetKeys(int32_t Control, BUTTONS * Keys)
{ {
g_InputPlugin->GetKeys(Control, Keys); g_InputPlugin->GetKeys(Control, Keys);
} }
/****************************************************************** /*
Function: InitiateControllers Function: InitiateControllers
Purpose: This function initialises how each of the controllers Purpose: This function initializes how each of the controllers
should be handled. should be handled.
input: - A controller structure that needs to be filled for input: - A controller structure that needs to be filled for
the emulator to know how to handle each controller. the emulator to know how to handle each controller.
output: none output: none
*******************************************************************/ */
EXPORT void CALL InitiateControllers(CONTROL_INFO * ControlInfo) EXPORT void CALL InitiateControllers(CONTROL_INFO * ControlInfo)
{ {
if (g_InputPlugin != nullptr) if (g_InputPlugin != nullptr)
@ -123,60 +130,65 @@ EXPORT void CALL InitiateControllers(CONTROL_INFO * ControlInfo)
} }
} }
/****************************************************************** /*
Function: ReadController Function: ReadController
Purpose: To process the raw data in the pif ram that is about to Purpose: To process the raw data in the PIF RAM that is about to
be read. be read.
input: - Controller Number (0 to 3) and -1 signalling end of input: - Controller Number (0 to 3) and -1 signaling end of
processing the pif ram. processing the PIF RAM.
- Pointer of data to be processed. - Pointer of data to be processed.
output: none output: none
note: This function is only needed if the DLL is allowing raw note: This function is only needed if the DLL is allowing raw
data. data.
*******************************************************************/ */
EXPORT void CALL ReadController(int /*Control*/, uint8_t * /*Command*/) EXPORT void CALL ReadController(int /*Control*/, uint8_t * /*Command*/)
{ {
} }
/****************************************************************** /*
Function: RomClosed Function: RomClosed
Purpose: This function is called when a rom is closed. Purpose: This function is called when a ROM is closed.
input: none input: none
output: none output: none
*******************************************************************/ */
EXPORT void CALL RomClosed(void) EXPORT void CALL RomClosed(void)
{ {
} }
/****************************************************************** /*
Function: RomOpen Function: RomOpen
Purpose: This function is called when a rom is open. (from the Purpose: This function is called when a ROM is open. (from the
emulation thread) emulation thread)
input: none input: none
output: none output: none
*******************************************************************/ */
EXPORT void CALL RomOpen(void) EXPORT void CALL RomOpen(void)
{ {
} }
/****************************************************************** /*
Function: WM_KeyDown Function: WM_KeyDown
Purpose: To pass the WM_KeyDown message from the emulator to the Purpose: To pass the WM_KeyDown message from the emulator to the
plugin. plugin.
input: wParam and lParam of the WM_KEYDOWN message. input: wParam and lParam of the WM_KEYDOWN message.
output: none output: none
*******************************************************************/ */
EXPORT void CALL WM_KeyDown(uint32_t /*wParam*/, uint32_t /*lParam*/) EXPORT void CALL WM_KeyDown(uint32_t /*wParam*/, uint32_t /*lParam*/)
{ {
} }
/****************************************************************** /*
Function: WM_KeyUp Function: WM_KeyUp
Purpose: To pass the WM_KEYUP message from the emulator to the Purpose: To pass the WM_KEYUP message from the emulator to the
plugin. plugin.
input: wParam and lParam of the WM_KEYDOWN message. input: wParam and lParam of the WM_KEYDOWN message.
output: none output: none
*******************************************************************/ */
EXPORT void CALL WM_KeyUp(uint32_t /*wParam*/, uint32_t /*lParam*/) EXPORT void CALL WM_KeyUp(uint32_t /*wParam*/, uint32_t /*lParam*/)
{ {
} }

View File

@ -90,7 +90,7 @@ void CScanButton::OnTimer(UINT_PTR nIDEvent)
time_t Now = time(nullptr); time_t Now = time(nullptr);
if (10 - (Now - m_ScanStart) > 0) if (10 - (Now - m_ScanStart) > 0)
{ {
Dialog.SetWindowText(stdstr_f("Configure Input: Press Key ... (%d seconds)", 10 - (Now - m_ScanStart)).ToUTF16().c_str()); Dialog.SetWindowText(stdstr_f("Configure input: Press key... (%d seconds)", 10 - (Now - m_ScanStart)).ToUTF16().c_str());
} }
else else
{ {
@ -116,7 +116,7 @@ void CScanButton::OnTimer(UINT_PTR nIDEvent)
{ {
m_ScanBtn.KillTimer(DETECT_KEY_TIMER); m_ScanBtn.KillTimer(DETECT_KEY_TIMER);
CWindow Dialog = m_ScanBtn.GetParent().GetParent(); CWindow Dialog = m_ScanBtn.GetParent().GetParent();
Dialog.SetWindowText(L"Configure Input"); Dialog.SetWindowText(L"Configure input");
if (m_Overlay.m_hWnd != nullptr) if (m_Overlay.m_hWnd != nullptr)
{ {