📄 emu.cpp
字号:
None1->Checked=false;
Make();
break;
}
}
}*/
}
//---------------------------------------------------------------------------
void __fastcall TEmuWnd::ImagePaint(TObject *Sender)
{
/* if (!skinImageSm) return;
if (!skinImageLg) return;
TRect r;
r.Left=0; r.Right=Image->Width;
r.Top=0; r.Bottom=Image->Height;
if (Image->Width>skinImageSm->Width)
Image->Canvas->StretchDraw(r,skinImageLg);
else
Image->Canvas->StretchDraw(r,skinImageSm);*/
}
//---------------------------------------------------------------------------
void __fastcall TEmuWnd::WMSizing(TMessage &Msg)
{
/* RECT *r=(LPRECT)Msg.LParam;
if (!enforceRatio)
{
Msg.Result=false;
return;
}
Normal1xview1->Checked=false;
Large2xview1->Checked=false;
int cliW=r->right-r->left-(Width-ClientWidth);
int cliH=r->bottom-r->top-(Height-ClientHeight);
int imgW=(skinImageLg)?skinImageLg->Width:(160<<1);
int imgH=(skinImageLg)?skinImageLg->Height:(144<<1);
int newW=imgW*cliH/imgH;
int newH=imgH*cliW/imgW;
newW+=(Width-ClientWidth);
newH+=(Height-ClientHeight);
int dx=abs(newW-(r->right-r->left));
int dy=abs(newH-(r->bottom-r->top));
if (((dx>=dy)||(Msg.WParam==WMSZ_LEFT)||(Msg.WParam==WMSZ_RIGHT))&&
((Msg.WParam!=WMSZ_TOP)&&(Msg.WParam!=WMSZ_BOTTOM)))
{
if (newH<GetSystemMetrics(SM_CYMIN))
GetWindowRect(Handle,r);
else
{
if ((Msg.WParam==WMSZ_TOP)||
(Msg.WParam==WMSZ_TOPLEFT)||
(Msg.WParam==WMSZ_TOPRIGHT))
r->top=r->bottom-newH;
else
r->bottom=r->top+newH;
}
}
else
{
if (newW<GetSystemMetrics(SM_CXMIN))
GetWindowRect(Handle,r);
else
{
if ((Msg.WParam==WMSZ_BOTTOMLEFT)||
(Msg.WParam==WMSZ_LEFT)||
(Msg.WParam==WMSZ_TOPLEFT))
r->left=r->right-newW;
else
r->right=r->left+newW;
}
}
Image->Width=r->right-r->left-(Width-ClientWidth);
Image->Height=r->bottom-r->top-(Height-ClientHeight);
LCD->Left=skinLcd.left*Image->Width/imgW;
LCD->Width=(skinLcd.right-skinLcd.left)*Image->Width/imgW;
LCD->Top=skinLcd.top*Image->Height/imgH;
LCD->Height=(skinLcd.bottom-skinLcd.top)*Image->Height/imgH;
if ((LCD->Width>160)&&(scaleFact==1))
{
// PauseStart();
scaleFact=2;
bmp->Width=160*scaleFact;
bmp->Height=144*scaleFact;
bmp->PixelFormat=pf15bit;
for (int i=0;i<(144*scaleFact);i++)
ScreenLine[i]=(char *)bmp->ScanLine[i];
// PauseEnd();
}
else if ((LCD->Width<=160)&&(scaleFact==2))
{
// PauseStart();
scaleFact=1;
bmp->Width=160*scaleFact;
bmp->Height=144*scaleFact;
bmp->PixelFormat=pf15bit;
for (int i=0;i<(144*scaleFact);i++)
ScreenLine[i]=(char *)bmp->ScanLine[i];
// PauseEnd();
}
Msg.Result=true;*/
}
void __fastcall TEmuWnd::Fullscreenview1Click(TObject *Sender)
{
/* if (Fullscreenview1->Checked)
{
Fullscreenview1->Checked=false;
Top=5; Left=100;
Enterdebugger1->Enabled=true;
Currentskin1->Enabled=true;
Showpercentageofactualspeed1->Enabled=true;
Stayontop1->Enabled=true;
FormStyle=(Stayontop1->Checked)?fsStayOnTop:fsNormal;
Make();
return;
}
if (currentSkin!=-1)
{
skin[currentSkin].defW=Image->Width;
skin[currentSkin].defH=Image->Height;
}
Fullscreenview1->Checked=true;
Normal1xview1->Checked=false;
Large2xview1->Checked=false;
Enterdebugger1->Enabled=false;
Currentskin1->Enabled=false;
Showpercentageofactualspeed1->Enabled=false;
Stayontop1->Enabled=false;
DebugWnd->Clearallbreakpoints1Click(Sender);
Make();*/
}
//---------------------------------------------------------------------------
void __fastcall TEmuWnd::Exitemulator1Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TEmuWnd::Stayontop1Click(TObject *Sender)
{
Stayontop1->Checked=!Stayontop1->Checked;
FormStyle=(Stayontop1->Checked)?fsStayOnTop:fsNormal;
GBC_SetWindow(Handle);
}
//---------------------------------------------------------------------------
void __fastcall TEmuWnd::ImageMouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
TPoint p;
if (Button==mbLeft)
{
/* if (keyHeld!=-1) return;
int imgW=(skinImageLg)?skinImageLg->Width:(160<<1);
int imgH=(skinImageLg)?skinImageLg->Height:(144<<1);
int key=GetKeyAt(X*imgW/Image->Width,
Y*imgH/Image->Height);
if (key!=-1)
{
kdown(key);
keyHeld=key;
}*/
}
}
void __fastcall TEmuWnd::Enablesound1Click(TObject *Sender)
{
Enablesound1->Checked=!Enablesound1->Checked;
// PauseStart();
if (Enablesound1->Checked)
GBC_EnableSound();
else
GBC_DisableSound();
// PauseEnd();
}
//---------------------------------------------------------------------------
void __fastcall TEmuWnd::ImageMouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
if (Button==mbLeft)
{
// if (keyHeld==-1) return;
// kup(keyHeld);
// keyHeld=-1;
}
}
//---------------------------------------------------------------------------
void __fastcall TEmuWnd::Noframeskip1Click(TObject *Sender)
{
GBC_SetLCDUpdateFreq(0);
Noframeskip1->Checked=true;
Skip1frame1->Checked=false;
Skip2frames1->Checked=false;
Skip3frames1->Checked=false;
Skip8frames1->Checked=false;
}
//---------------------------------------------------------------------------
void __fastcall TEmuWnd::Skip1frame1Click(TObject *Sender)
{
GBC_SetLCDUpdateFreq(1);
Noframeskip1->Checked=false;
Skip1frame1->Checked=true;
Skip2frames1->Checked=false;
Skip3frames1->Checked=false;
Skip8frames1->Checked=false;
}
//---------------------------------------------------------------------------
void __fastcall TEmuWnd::Skip2frames1Click(TObject *Sender)
{
GBC_SetLCDUpdateFreq(2);
Noframeskip1->Checked=false;
Skip1frame1->Checked=false;
Skip2frames1->Checked=true;
Skip3frames1->Checked=false;
Skip8frames1->Checked=false;
}
//---------------------------------------------------------------------------
void __fastcall TEmuWnd::Skip3frames1Click(TObject *Sender)
{
GBC_SetLCDUpdateFreq(4);
Noframeskip1->Checked=false;
Skip1frame1->Checked=false;
Skip2frames1->Checked=false;
Skip3frames1->Checked=true;
Skip8frames1->Checked=false;
}
//---------------------------------------------------------------------------
void __fastcall TEmuWnd::Lowqualitysound1Click(TObject *Sender)
{
GBC_SetSoundQuality(1);
Lowqualitysound1->Checked=true;
Mediumqualitysound1->Checked=false;
Highqualitysound1->Checked=false;
}
//---------------------------------------------------------------------------
void __fastcall TEmuWnd::Mediumqualitysound1Click(TObject *Sender)
{
GBC_SetSoundQuality(4);
Lowqualitysound1->Checked=false;
Mediumqualitysound1->Checked=true;
Highqualitysound1->Checked=false;
}
//---------------------------------------------------------------------------
void __fastcall TEmuWnd::Highqualitysound1Click(TObject *Sender)
{
GBC_SetSoundQuality(16);
Lowqualitysound1->Checked=false;
Mediumqualitysound1->Checked=false;
Highqualitysound1->Checked=true;
}
//---------------------------------------------------------------------------
void __fastcall TEmuWnd::Startindebugmode1Click(TObject *Sender)
{
startInDebug=!startInDebug;
Startindebugmode1->Checked=startInDebug;
}
//---------------------------------------------------------------------------
void __fastcall TEmuWnd::EnableDebugWarnings1Click(TObject *Sender)
{
/* int oldRun=run;
run=0;
if (DebugWarnDlg->ShowModal()==2)
{
int enable=0;
for (int i=0;i<DebugWarnDlg->List->Items->Count;i++)
{
debugWarn[i]=DebugWarnDlg->List->Checked[i];
if (debugWarn[i]) enable=1;
}
EnableDebugWarnings1->Checked=enable;
}
run=oldRun;*/
Enabledebugwarnings1->Checked=GBC_DebugWarnDlg();
}
//---------------------------------------------------------------------------
void __fastcall TEmuWnd::Runatmaximumpossiblespeed1Click(TObject *Sender)
{
Runatmaximumpossiblespeed1->Checked=!Runatmaximumpossiblespeed1->Checked;
GBC_SetSpeedRestrict(!Runatmaximumpossiblespeed1->Checked);
}
//---------------------------------------------------------------------------
void __fastcall TEmuWnd::Skip8frames1Click(TObject *Sender)
{
GBC_SetLCDUpdateFreq(8);
Noframeskip1->Checked=false;
Skip1frame1->Checked=false;
Skip2frames1->Checked=false;
Skip3frames1->Checked=false;
Skip8frames1->Checked=true;
}
//---------------------------------------------------------------------------
void __fastcall TEmuWnd::Showskin1Click(TObject *Sender)
{
Showskin1->Checked=!Showskin1->Checked;
showSkin=Showskin1->Checked;
Make();
}
//---------------------------------------------------------------------------
void __fastcall TEmuWnd::OnMinimize(TObject *Sender)
{
paused=1;
}
void __fastcall TEmuWnd::OnRestore(TObject *Sender)
{
paused=0;
}
void __fastcall TEmuWnd::CloseROM1Click(TObject *Sender)
{
GBC_CloseROM();
batt->Visible=false;
SendtoBungXChanger1->Enabled=false;
}
//---------------------------------------------------------------------------
void __fastcall TEmuWnd::SendtoBungXChanger1Click(TObject *Sender)
{
SendToBung(currentROM);
}
//---------------------------------------------------------------------------
void __fastcall TEmuWnd::Emulateforaccuracy1Click(TObject *Sender)
{
GBC_SetMode(EMUMODE_ACCURACY);
Emulateforaccuracy1->Checked=true;
Emulateforspeed1->Checked=false;
}
//---------------------------------------------------------------------------
void __fastcall TEmuWnd::Emulateforspeed1Click(TObject *Sender)
{
GBC_SetMode(EMUMODE_SPEED);
Emulateforaccuracy1->Checked=false;
Emulateforspeed1->Checked=true;
}
//---------------------------------------------------------------------------
void __fastcall TEmuWnd::gbMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
if ((X>=48)&&(X<=73)&&(Y>=297)&&(Y<=321))
GBC_KeyDown(KEY_UP);
else if ((X>=26)&&(X<=49)&&(Y>=320)&&(Y<=345))
GBC_KeyDown(KEY_LEFT);
else if ((X>=73)&&(X<=95)&&(Y>=320)&&(Y<=345))
GBC_KeyDown(KEY_RIGHT);
else if ((X>=48)&&(X<=73)&&(Y>=345)&&(Y<=368))
GBC_KeyDown(KEY_DOWN);
else if ((X>=175)&&(X<=209)&&(Y>=325)&&(Y<=359))
GBC_KeyDown(KEY_B);
else if ((X>=227)&&(X<=262)&&(Y>=308)&&(Y<=342))
GBC_KeyDown(KEY_A);
else if ((X>=151)&&(X<=178)&&(Y>=409)&&(Y<=424))
GBC_KeyDown(KEY_START);
else if ((X>=107)&&(X<=135)&&(Y>=409)&&(Y<=424))
GBC_KeyDown(KEY_SELECT);
else
{
clicked=1;
clickX=X;
clickY=Y;
}
}
//---------------------------------------------------------------------------
void __fastcall TEmuWnd::gbMouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
GBC_KeyUp(KEY_UP);
GBC_KeyUp(KEY_LEFT);
GBC_KeyUp(KEY_RIGHT);
GBC_KeyUp(KEY_DOWN);
GBC_KeyUp(KEY_B);
GBC_KeyUp(KEY_A);
GBC_KeyUp(KEY_START);
GBC_KeyUp(KEY_SELECT);
clicked=0;
}
//---------------------------------------------------------------------------
void __fastcall TEmuWnd::gbMouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
if (clicked)
{
Left+=X-clickX;
Top+=Y-clickY;
}
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -