0.9.8: merge r4255,r4269,r4286,r4288,r4302,r4322,r4323

This commit is contained in:
gocha 2012-07-27 11:26:55 +00:00
parent 538f69f564
commit d8d2f5882b
13 changed files with 79 additions and 15 deletions

View File

@ -2040,6 +2040,7 @@ static void GPU_RenderLine_layer(NDS_Screen * screen, u16 l)
//for backdrops, blend isnt applied (it's illogical, isnt it?)
case 0:
case 1:
PLAIN_CLEAR:
memset_u16_le<256>(gpu->currDst,backdrop_color);
break;
@ -2047,10 +2048,12 @@ static void GPU_RenderLine_layer(NDS_Screen * screen, u16 l)
case 2:
if(gpu->BLDCNT & 0x20) //backdrop is selected for color effect
memset_u16_le<256>(gpu->currDst,gpu->currentFadeInColors[backdrop_color]);
else goto PLAIN_CLEAR;
break;
case 3:
if(gpu->BLDCNT & 0x20) //backdrop is selected for color effect
memset_u16_le<256>(gpu->currDst,gpu->currentFadeOutColors[backdrop_color]);
else goto PLAIN_CLEAR;
break;
//windowed cases apparently need special treatment? why? can we not render the backdrop? how would that even work?

View File

@ -433,9 +433,10 @@ static void TouchDisplay() {
aggDraw.hud->line(temptouch.X, temptouch.Y - 256, temptouch.X, temptouch.Y + 384); //vert
}
if(nds.isTouch) {
temptouch.X = nds.scr_touchX;
temptouch.Y = nds.scr_touchY;
if(nds.isTouch)
{
temptouch.X = nds.scr_touchX / 16;
temptouch.Y = nds.scr_touchY / 16;
aggDraw.hud->lineColor(255, 0, 0, 128);
aggDraw.hud->line(temptouch.X - 256, temptouch.Y + 192, temptouch.X + 256, temptouch.Y + 192); //horiz
aggDraw.hud->line(temptouch.X, temptouch.Y - 256, temptouch.X, temptouch.Y + 384); //vert

View File

@ -4029,8 +4029,11 @@ void FASTCALL _MMU_ARM7_write16(u32 adr, u16 val)
if(nds.adc_jitterctr == 25)
{
nds.adc_jitterctr = 0;
nds.adc_touchY ^= 16;
nds.adc_touchX ^= 16;
if (nds.stylusJitter)
{
nds.adc_touchY ^= 16;
nds.adc_touchX ^= 16;
}
}
if(MMU.SPI_CNT&(1<<11))
{

View File

@ -2482,6 +2482,7 @@ void NDS_Reset()
nds.ConsoleType = CommonSettings.ConsoleType;
nds._DebugConsole = CommonSettings.DebugConsole;
nds.ensataEmulation = CommonSettings.EnsataEmulation;
nds.stylusJitter = CommonSettings.StylusJitter;
nds.ensataHandshake = ENSATA_HANDSHAKE_none;
nds.ensataIpcSyncCounter = 0;
SetupMMU(nds.Is_DebugConsole(),nds.Is_DSI());

View File

@ -177,6 +177,7 @@ struct NDSSystem
u16 adc_touchX;
u16 adc_touchY;
s32 adc_jitterctr;
BOOL stylusJitter;
//the DSI returns calibrated touch coords from its TSC (?), so we need to save these separately
u16 scr_touchX;
@ -507,6 +508,7 @@ extern struct TCommonSettings {
, spu_advanced(false)
, StylusPressure(50)
, ConsoleType(NDS_CONSOLE_TYPE_FAT)
, StylusJitter(true)
{
strcpy(ARM9BIOS, "biosnds9.bin");
strcpy(ARM7BIOS, "biosnds7.bin");
@ -553,6 +555,7 @@ extern struct TCommonSettings {
bool rigorous_timing;
int StylusPressure;
bool StylusJitter;
bool dispLayers[2][5];

View File

@ -1856,7 +1856,7 @@ DEFINE_LUA_FUNCTION(memory_readbyterange, "address,length")
{
if(IsHardwareAddressValid(a))
{
unsigned char value = (unsigned char)(_MMU_read08<ARMCPU_ARM9>(address) & 0xFF);
unsigned char value = (unsigned char)(_MMU_read08<ARMCPU_ARM9>(a) & 0xFF);
lua_pushinteger(L, value);
lua_rawseti(L, -2, n);
}
@ -4421,7 +4421,8 @@ static int gui_osdtext(lua_State *L)
return 0;
}
static int stylus_read(lua_State *L){
DEFINE_LUA_FUNCTION(stylus_read, "")
{
lua_newtable(L);
@ -4434,7 +4435,8 @@ static int stylus_read(lua_State *L){
return 1;
}
static int stylus_peek(lua_State *L){
DEFINE_LUA_FUNCTION(stylus_peek, "")
{
lua_newtable(L);
@ -4452,7 +4454,7 @@ static int toTouchValue(int pixCoord, int maximum)
pixCoord = std::min(std::max(pixCoord, 0), maximum-1);
return (pixCoord << 4) & 0x0FF0;
}
static int stylus_write(lua_State *L)
DEFINE_LUA_FUNCTION(stylus_write, "table")
{
if(movieMode == MOVIEMODE_PLAY) // don't allow tampering with a playing movie's input
return 0; // (although it might be useful sometimes...)

View File

@ -450,6 +450,18 @@ void HK_DecreasePressure(int, bool justPressed) {
if(CommonSettings.StylusPressure<0) CommonSettings.StylusPressure = 0;
osd->addLine("Stylus Pressure to %d%%",CommonSettings.StylusPressure);
}
void HK_ToggleStylusJitter(int, bool justPressed) {
CommonSettings.StylusJitter = !CommonSettings.StylusJitter;
nds.stylusJitter = CommonSettings.StylusJitter;
WritePrivateProfileBool("Emulation", "StylusJitter", CommonSettings.StylusJitter, IniName);
osd->addLine("Stylus Jitter %s",CommonSettings.StylusJitter ? "On" : "Off");
}
void HK_Rotate0(int, bool justPressed) { SetRotate(MainWindow->getHWnd(), 0);}
void HK_Rotate90(int, bool justPressed) { SetRotate(MainWindow->getHWnd(), 90);}
void HK_Rotate180(int, bool justPressed) { SetRotate(MainWindow->getHWnd(), 180);}
void HK_Rotate270(int, bool justPressed) { SetRotate(MainWindow->getHWnd(), 270);}
//======================================================================================
@ -535,6 +547,12 @@ void InitCustomKeys (SCustomKeys *keys)
keys->DecreaseSpeed.page = HOTKEY_PAGE_MAIN;
keys->DecreaseSpeed.key = VK_OEM_MINUS;
keys->ToggleStylusJitter.handleKeyDown = HK_ToggleStylusJitter;
keys->ToggleStylusJitter.code = "ToggleStylusJitter";
keys->ToggleStylusJitter.name = STRW(ID_LABEL_HK61);
keys->ToggleStylusJitter.page = HOTKEY_PAGE_MAIN;
keys->ToggleStylusJitter.key = NULL;
keys->FrameLimitToggle.handleKeyDown = HK_FrameLimitToggle;
keys->FrameLimitToggle.code = "FrameLimitToggle";
keys->FrameLimitToggle.name = STRW(ID_LABEL_HK8b);
@ -808,6 +826,31 @@ void InitCustomKeys (SCustomKeys *keys)
keys->ResetLagCounter.page = HOTKEY_PAGE_MOVIE;
keys->ResetLagCounter.key = NULL;
//Other Page -------------------------------------------------------
keys->Rotate0.handleKeyDown = HK_Rotate0;
keys->Rotate0.code = "Rotate0";
keys->Rotate0.name = STRW(ID_LABEL_HK57);
keys->Rotate0.page = HOTKEY_PAGE_OTHER;
keys->Rotate0.key = NULL;
keys->Rotate90.handleKeyDown = HK_Rotate90;
keys->Rotate90.code = "Rotate90";
keys->Rotate90.name = STRW(ID_LABEL_HK58);
keys->Rotate90.page = HOTKEY_PAGE_OTHER;
keys->Rotate90.key = NULL;
keys->Rotate180.handleKeyDown = HK_Rotate180;
keys->Rotate180.code = "Rotate180";
keys->Rotate180.name = STRW(ID_LABEL_HK59);
keys->Rotate180.page = HOTKEY_PAGE_OTHER;
keys->Rotate180.key = NULL;
keys->Rotate270.handleKeyDown = HK_Rotate270;
keys->Rotate270.code = "Rotate270";
keys->Rotate270.name = STRW(ID_LABEL_HK60);
keys->Rotate270.page = HOTKEY_PAGE_OTHER;
keys->Rotate270.key = NULL;
//StateSlots Page --------------------------------------------------
keys->NextSaveSlot.handleKeyDown = HK_NextSaveSlot;
keys->NextSaveSlot.code = "NextSaveSlot";

View File

@ -30,6 +30,7 @@ enum HotkeyPage {
HOTKEY_PAGE_STATE,
HOTKEY_PAGE_STATE_SLOTS,
HOTKEY_PAGE_TURBO,
HOTKEY_PAGE_OTHER,
NUM_HOTKEY_PAGE,
};
@ -39,6 +40,7 @@ static LPCTSTR hotkeyPageTitle[] = {
_T("Savestates"),
_T("Savestate Slots"),
_T("Turbo"),
_T("Other"),
_T("NUM_HOTKEY_PAGE"),
};
@ -65,7 +67,9 @@ struct SCustomKeys
SCustomKey Slot[10];
SCustomKey QuickSave, QuickLoad, NextSaveSlot, PreviousSaveSlot;
SCustomKey OpenROM, ReloadROM, Reset, Pause, FrameAdvance, FastForward, FastForwardToggle, IncreaseSpeed, DecreaseSpeed, FrameLimitToggle, Microphone, IncreasePressure, DecreasePressure;
SCustomKey Rotate0, Rotate90, Rotate180, Rotate270;
SCustomKey OpenROM, ReloadROM, Reset, Pause, FrameAdvance, FastForward, FastForwardToggle, IncreaseSpeed, DecreaseSpeed, FrameLimitToggle, Microphone, IncreasePressure, DecreasePressure, ToggleStylusJitter;
SCustomKey PlayMovie, RecordMovie, StopMovie, ToggleReadOnly;

View File

@ -435,8 +435,6 @@ bool romloaded = false;
void SetScreenGap(int gap);
void SetRotate(HWND hwnd, int rot, bool user=true);
bool ForceRatio = true;
bool SeparationBorderDrag = true;
int ScreenGapColor = 0xFFFFFF;

View File

@ -41,6 +41,7 @@ void WavRecordTo(int wavmode);
void WavEnd();
void UpdateToolWindows();
bool DemandLua();
void SetRotate(HWND hwnd, int rot, bool user = true);
extern bool frameCounterDisplay;
extern bool FpsDisplay;

View File

@ -800,6 +800,11 @@
#define ID_LABEL_HK54 4519
#define ID_LABEL_HK55 4520
#define ID_LABEL_HK56 4521
#define ID_LABEL_HK57 4522
#define ID_LABEL_HK58 4523
#define ID_LABEL_HK59 4524
#define ID_LABEL_HK60 4525
#define ID_LABEL_HK61 4526
#define IDD_MICROPHONE 5000
#define IDM_MICROPHONESETTINGS 5001
#define IDC_MICSAMPLEBROWSE 5003

Binary file not shown.

View File

@ -361,7 +361,7 @@ static INT_PTR CALLBACK SoundView_DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, L
if(data == NULL)
{
data = (SoundView_DataStruct*)lParam;
SetWindowLongPtr(hDlg, DWLP_USER, (LONG)data);
SetWindowLongPtr(hDlg, DWLP_USER, (LONG_PTR)data);
}
data->hDlg = hDlg;