add card eject emulation
This commit is contained in:
parent
db8774bdbf
commit
b57aabc994
|
@ -1,4 +1,4 @@
|
||||||
0.9.5 -> 0.9.6 (r3075-r3200-r3xxx)
|
0.9.5 -> 0.9.6 (r3075-r3209-r3xxx)
|
||||||
|
|
||||||
General/Core:
|
General/Core:
|
||||||
bug: emulate keypad interrupt
|
bug: emulate keypad interrupt
|
||||||
|
@ -9,9 +9,11 @@ General/Core:
|
||||||
bug: fix lid savestate desync
|
bug: fix lid savestate desync
|
||||||
bug: fix texcache memory GB explosion when games use tons of tiny 3d sprites
|
bug: fix texcache memory GB explosion when games use tons of tiny 3d sprites
|
||||||
bug: fix huge rerecording movie file handle leak
|
bug: fix huge rerecording movie file handle leak
|
||||||
|
bug: fix EXXXXXXX cheat codes
|
||||||
|
bug: add 8MBit flash emulation
|
||||||
|
bug: fix firmware booted-from-card flag
|
||||||
enh: support devkitpro argv
|
enh: support devkitpro argv
|
||||||
enh: add gbaslot-rom commandline
|
enh: add gbaslot-rom commandline
|
||||||
bug: fix EXXXXXXX cheat codes
|
|
||||||
|
|
||||||
Graphics:
|
Graphics:
|
||||||
bug: fix a mistakenly rendered OBJ window
|
bug: fix a mistakenly rendered OBJ window
|
||||||
|
@ -27,6 +29,7 @@ Windows:
|
||||||
enh: add fancy ctrl+printscreen with emulator info on it
|
enh: add fancy ctrl+printscreen with emulator info on it
|
||||||
enh: add "lockdown" window mode to keep window safe from fast stylus action
|
enh: add "lockdown" window mode to keep window safe from fast stylus action
|
||||||
enh: add alt+enter fullscreen command
|
enh: add alt+enter fullscreen command
|
||||||
|
enh: add card eject command
|
||||||
|
|
||||||
Linux/OSX:
|
Linux/OSX:
|
||||||
bug: fix building for nosse2 systems
|
bug: fix building for nosse2 systems
|
||||||
|
|
|
@ -1357,7 +1357,11 @@ u32 MMU_readFromGC()
|
||||||
// As DeSmuME boots directly from the game, the chip
|
// As DeSmuME boots directly from the game, the chip
|
||||||
// ID in main mem is zero and this value needs to be
|
// ID in main mem is zero and this value needs to be
|
||||||
// zero too.
|
// zero too.
|
||||||
val = 0x00000000;
|
|
||||||
|
//staff of kings verifies this (it also uses the arm7 IRQ 20)
|
||||||
|
if(nds.cardEjected)
|
||||||
|
val = 0xFFFFFFFF;
|
||||||
|
else val = 0x00000000;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -93,8 +93,6 @@ int NDS_Init( void) {
|
||||||
MMU_Init();
|
MMU_Init();
|
||||||
nds.VCount = 0;
|
nds.VCount = 0;
|
||||||
|
|
||||||
nds.sleeping = FALSE;
|
|
||||||
|
|
||||||
if (Screen_Init(GFXCORE_DUMMY) != 0)
|
if (Screen_Init(GFXCORE_DUMMY) != 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
@ -867,6 +865,15 @@ int NDS_WriteBMP_32bppBuffer(int width, int height, const void* buf, const char
|
||||||
}
|
}
|
||||||
|
|
||||||
void NDS_Sleep() { nds.sleeping = TRUE; }
|
void NDS_Sleep() { nds.sleeping = TRUE; }
|
||||||
|
void NDS_ToggleCardEject()
|
||||||
|
{
|
||||||
|
if(!nds.cardEjected)
|
||||||
|
{
|
||||||
|
//staff of kings will test this (it also uses the arm9 0xB8 poll)
|
||||||
|
NDS_makeInt(1, 20);
|
||||||
|
}
|
||||||
|
nds.cardEjected ^= TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class FrameSkipper
|
class FrameSkipper
|
||||||
|
@ -1901,6 +1908,9 @@ void NDS_Reset()
|
||||||
|
|
||||||
if (!header) return ;
|
if (!header) return ;
|
||||||
|
|
||||||
|
nds.sleeping = FALSE;
|
||||||
|
nds.cardEjected = FALSE;
|
||||||
|
|
||||||
nds_timer = 0;
|
nds_timer = 0;
|
||||||
nds_arm9_timer = 0;
|
nds_arm9_timer = 0;
|
||||||
nds_arm7_timer = 0;
|
nds_arm7_timer = 0;
|
||||||
|
|
|
@ -180,6 +180,7 @@ struct NDSSystem
|
||||||
u32 FW_ARM7BootCodeSize;
|
u32 FW_ARM7BootCodeSize;
|
||||||
|
|
||||||
BOOL sleeping;
|
BOOL sleeping;
|
||||||
|
BOOL cardEjected;
|
||||||
|
|
||||||
//this is not essential NDS runtime state.
|
//this is not essential NDS runtime state.
|
||||||
//it was perhaps a mistake to put it here.
|
//it was perhaps a mistake to put it here.
|
||||||
|
@ -384,6 +385,7 @@ int NDS_WriteBMP(const char *filename);
|
||||||
int NDS_CreateDummyFirmware( struct NDS_fw_config_data *user_settings);
|
int NDS_CreateDummyFirmware( struct NDS_fw_config_data *user_settings);
|
||||||
|
|
||||||
void NDS_Sleep();
|
void NDS_Sleep();
|
||||||
|
void NDS_ToggleCardEject();
|
||||||
|
|
||||||
void NDS_SkipNextFrame();
|
void NDS_SkipNextFrame();
|
||||||
#define NDS_SkipFrame(s) if(s) NDS_SkipNext2DFrame();
|
#define NDS_SkipFrame(s) if(s) NDS_SkipNext2DFrame();
|
||||||
|
|
|
@ -172,6 +172,7 @@ SFORMAT SF_NDS[]={
|
||||||
{ "_ENH", 4, 1, &nds.ensataHandshake},
|
{ "_ENH", 4, 1, &nds.ensataHandshake},
|
||||||
{ "_ENI", 4, 1, &nds.ensataIpcSyncCounter},
|
{ "_ENI", 4, 1, &nds.ensataIpcSyncCounter},
|
||||||
{ "_SLP", 4, 1, &nds.sleeping},
|
{ "_SLP", 4, 1, &nds.sleeping},
|
||||||
|
{ "_CEJ", 4, 1, &nds.cardEjected},
|
||||||
{ 0 }
|
{ 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -3586,6 +3586,7 @@ LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM
|
||||||
DesEnableMenuItem(mainMenu, IDM_QUICK_PRINTSCREEN, romloaded);
|
DesEnableMenuItem(mainMenu, IDM_QUICK_PRINTSCREEN, romloaded);
|
||||||
DesEnableMenuItem(mainMenu, IDM_FILE_RECORDAVI, romloaded);
|
DesEnableMenuItem(mainMenu, IDM_FILE_RECORDAVI, romloaded);
|
||||||
DesEnableMenuItem(mainMenu, IDM_FILE_RECORDWAV, romloaded);
|
DesEnableMenuItem(mainMenu, IDM_FILE_RECORDWAV, romloaded);
|
||||||
|
DesEnableMenuItem(mainMenu, IDM_EJECTCARD, romloaded && movieMode == MOVIEMODE_INACTIVE);
|
||||||
DesEnableMenuItem(mainMenu, IDM_RESET, romloaded && movieMode != MOVIEMODE_PLAY);
|
DesEnableMenuItem(mainMenu, IDM_RESET, romloaded && movieMode != MOVIEMODE_PLAY);
|
||||||
DesEnableMenuItem(mainMenu, IDM_CLOSEROM, romloaded);
|
DesEnableMenuItem(mainMenu, IDM_CLOSEROM, romloaded);
|
||||||
DesEnableMenuItem(mainMenu, IDM_SHUT_UP, romloaded);
|
DesEnableMenuItem(mainMenu, IDM_SHUT_UP, romloaded);
|
||||||
|
@ -3614,8 +3615,10 @@ LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM
|
||||||
|
|
||||||
//Updated Checked menu items
|
//Updated Checked menu items
|
||||||
|
|
||||||
//Pause
|
//emulation menu
|
||||||
MainWindow->checkMenu(IDM_PAUSE, ((paused)));
|
MainWindow->checkMenu(IDM_PAUSE, ((paused)));
|
||||||
|
MainWindow->checkMenu(IDM_EJECTCARD, nds.cardEjected);
|
||||||
|
|
||||||
// LCDs layout
|
// LCDs layout
|
||||||
MainWindow->checkMenu(ID_LCDS_VERTICAL, ((video.layout==0)));
|
MainWindow->checkMenu(ID_LCDS_VERTICAL, ((video.layout==0)));
|
||||||
MainWindow->checkMenu(ID_LCDS_HORIZONTAL, ((video.layout==1)));
|
MainWindow->checkMenu(ID_LCDS_HORIZONTAL, ((video.layout==1)));
|
||||||
|
@ -4938,6 +4941,10 @@ DOKEYDOWN:
|
||||||
case IDC_SAVETYPE7: backup_setManualBackupType(6); return 0;
|
case IDC_SAVETYPE7: backup_setManualBackupType(6); return 0;
|
||||||
case IDC_SAVETYPE8: backup_setManualBackupType(7); return 0;
|
case IDC_SAVETYPE8: backup_setManualBackupType(7); return 0;
|
||||||
|
|
||||||
|
case IDM_EJECTCARD:
|
||||||
|
NDS_ToggleCardEject();
|
||||||
|
return 0;
|
||||||
|
|
||||||
case IDM_RESET:
|
case IDM_RESET:
|
||||||
ResetGame();
|
ResetGame();
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -701,6 +701,7 @@
|
||||||
#define IDM_VIEW3D 40065
|
#define IDM_VIEW3D 40065
|
||||||
#define IDM_LOCKDOWN 40066
|
#define IDM_LOCKDOWN 40066
|
||||||
#define IDC_SAVETYPE8 40067
|
#define IDC_SAVETYPE8 40067
|
||||||
|
#define IDM_EJECTCARD 40068
|
||||||
#define IDC_LABEL_UP 50000
|
#define IDC_LABEL_UP 50000
|
||||||
#define IDC_LABEL_RIGHT 50001
|
#define IDC_LABEL_RIGHT 50001
|
||||||
#define IDC_LABEL_LEFT 50002
|
#define IDC_LABEL_LEFT 50002
|
||||||
|
@ -796,7 +797,7 @@
|
||||||
#ifdef APSTUDIO_INVOKED
|
#ifdef APSTUDIO_INVOKED
|
||||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||||
#define _APS_NEXT_RESOURCE_VALUE 106
|
#define _APS_NEXT_RESOURCE_VALUE 106
|
||||||
#define _APS_NEXT_COMMAND_VALUE 40012
|
#define _APS_NEXT_COMMAND_VALUE 40014
|
||||||
#define _APS_NEXT_CONTROL_VALUE 1020
|
#define _APS_NEXT_CONTROL_VALUE 1020
|
||||||
#define _APS_NEXT_SYMED_VALUE 101
|
#define _APS_NEXT_SYMED_VALUE 101
|
||||||
#endif
|
#endif
|
||||||
|
|
Binary file not shown.
Loading…
Reference in New Issue