Skip to content

Commit

Permalink
Merge pull request audetto#51 from audetto/vidhd
Browse files Browse the repository at this point in the history
Vidhd
  • Loading branch information
audetto committed Dec 11, 2021
2 parents 0ae58c5 + 49d0b75 commit 9d8d111
Show file tree
Hide file tree
Showing 58 changed files with 1,769 additions and 1,203 deletions.
2 changes: 2 additions & 0 deletions AppleWinExpress2019.vcxproj
Expand Up @@ -121,6 +121,7 @@
<ClInclude Include="source\Tfe\Uilib.h" />
<ClInclude Include="source\Utilities.h" />
<ClInclude Include="source\Video.h" />
<ClInclude Include="Source\VidHD.h" />
<ClInclude Include="source\Windows\AppleWin.h" />
<ClInclude Include="source\Windows\DirectInput.h" />
<ClInclude Include="source\Windows\HookFilter.h" />
Expand Down Expand Up @@ -247,6 +248,7 @@
</ClCompile>
<ClCompile Include="source\Utilities.cpp" />
<ClCompile Include="source\Video.cpp" />
<ClCompile Include="Source\VidHD.cpp" />
<ClCompile Include="source\Windows\AppleWin.cpp" />
<ClCompile Include="source\Windows\DirectInput.cpp" />
<ClCompile Include="source\Windows\HookFilter.cpp" />
Expand Down
6 changes: 6 additions & 0 deletions AppleWinExpress2019.vcxproj.filters
Expand Up @@ -241,6 +241,9 @@
<ClCompile Include="source\Card.cpp">
<Filter>Source Files\Emulator</Filter>
</ClCompile>
<ClCompile Include="Source\VidHD.cpp">
<Filter>Source Files\Video</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="source\CommonVICE\6510core.h">
Expand Down Expand Up @@ -555,6 +558,9 @@
<ClInclude Include="source\SNESMAX.h">
<Filter>Source Files\Emulator</Filter>
</ClInclude>
<ClInclude Include="Source\VidHD.h">
<Filter>Source Files\Video</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<Image Include="resource\Applewin.bmp">
Expand Down
38 changes: 20 additions & 18 deletions resource/Applewin.rc
Expand Up @@ -84,38 +84,40 @@ IDB_DEBUG_FONT_7X8 BITMAP "Debug_Font.bmp"
// Dialog
//

IDD_PROPPAGE_CONFIG DIALOGEX 0, 0, 210, 209
IDD_PROPPAGE_CONFIG DIALOGEX 0, 0, 210, 240
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_VISIBLE | WS_DISABLED | WS_CAPTION | WS_SYSMENU
CAPTION "Configuration"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
LTEXT "&Model:",IDC_STATIC,5,7,40,8
COMBOBOX IDC_COMPUTER,45,5,91,100,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
CONTROL "Confirm reboot",IDC_CHECK_CONFIRM_REBOOT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,142,8,62,10
GROUPBOX "Video",IDC_STATIC,5,22,200,56
GROUPBOX "Video",IDC_STATIC,5,22,200,74
LTEXT "Mo&de:",IDC_STATIC,12,33,33,8
COMBOBOX IDC_VIDEOTYPE,33,30,103,100,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "Monochrome &Color...",IDC_MONOCOLOR,12,46,80,14
CONTROL "50% Scan lines",IDC_CHECK_HALF_SCAN_LINES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,142,33,62,10
CONTROL "Vertical blend",IDC_CHECK_VERTICAL_BLEND,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,142,48,62,10
CONTROL "Full-Screen: Show drive/keyboard status",IDC_CHECK_FS_SHOW_SUBUNIT_STATUS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,64,140,10
LTEXT "&Serial Port:",IDC_STATIC,5,89,40,8
COMBOBOX IDC_SERIALPORT,45,87,90,100,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "&Ethernet Settings...",IDC_ETHERNET,4,105,80,14
GROUPBOX "Emulation Speed Control",IDC_STATIC,5,130,200,85
CONTROL "Full-Screen: Show drive/keyboard status",IDC_CHECK_FS_SHOW_SUBUNIT_STATUS,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,64,140,10
CONTROL "VidHD in slot 3",IDC_CHECK_VIDHD_IN_SLOT3,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,78,140,10
LTEXT "&Serial Port:",IDC_STATIC,5,108,40,8
COMBOBOX IDC_SERIALPORT,45,106,90,100,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "&Ethernet Settings...",IDC_ETHERNET,4,124,80,14
GROUPBOX "Emulation Speed Control",IDC_STATIC,5,149,200,85
CONTROL "Use &Authentic Machine Speed",IDC_AUTHENTIC_SPEED,
"Button",BS_AUTORADIOBUTTON,15,141,115,10
CONTROL "Select C&ustom Speed (in MHz)",IDC_CUSTOM_SPEED,"Button",BS_AUTORADIOBUTTON,15,153,115,10
CONTROL "Generic2",IDC_SLIDER_CPU_SPEED,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,25,164,160,15
CTEXT "0.5",IDC_0_5_MHz,23,180,20,10
CTEXT "1.0",IDC_1_0_MHz,59,180,20,10
CTEXT "2.0",IDC_2_0_MHz,96,180,20,10
RTEXT "Fastest",IDC_MAX_MHz,150,180,29,10
PUSHBUTTON "&Benchmark Emulator",IDC_BENCHMARK,15,194,85,15
CONTROL "50Hz video",IDC_CHECK_50HZ_VIDEO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,142,141,51,10
"Button",BS_AUTORADIOBUTTON,15,160,115,10
CONTROL "Select C&ustom Speed (in MHz)",IDC_CUSTOM_SPEED,"Button",BS_AUTORADIOBUTTON,15,172,115,10
CONTROL "Generic2",IDC_SLIDER_CPU_SPEED,"msctls_trackbar32",TBS_AUTOTICKS | WS_TABSTOP,25,183,160,15
CTEXT "0.5",IDC_0_5_MHz,23,199,20,10
CTEXT "1.0",IDC_1_0_MHz,59,199,20,10
CTEXT "2.0",IDC_2_0_MHz,96,199,20,10
RTEXT "Fastest",IDC_MAX_MHz,150,199,29,10
PUSHBUTTON "&Benchmark Emulator",IDC_BENCHMARK,15,213,85,15
CONTROL "50Hz video",IDC_CHECK_50HZ_VIDEO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,142,160,51,10
END

IDD_PROPPAGE_INPUT DIALOGEX 0, 0, 211, 240
IDD_PROPPAGE_INPUT DIALOGEX 0, 0, 210, 240
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_VISIBLE | WS_DISABLED | WS_CAPTION | WS_SYSMENU
CAPTION "Input"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
Expand Down Expand Up @@ -172,7 +174,7 @@ BEGIN
CONTROL "No sound cards",IDC_SOUNDCARD_DISABLE,"Button",BS_AUTORADIOBUTTON,10,175,78,10
END

IDD_PROPPAGE_DISK DIALOGEX 0, 0, 211, 188
IDD_PROPPAGE_DISK DIALOGEX 0, 0, 210, 240
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_VISIBLE | WS_DISABLED | WS_CAPTION | WS_SYSMENU
CAPTION "Disk"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
Expand Down
3 changes: 1 addition & 2 deletions resource/resource.h
Expand Up @@ -70,7 +70,6 @@
#define IDC_PHASOR_ENABLE 1029
#define IDC_SAM_ENABLE 1030
#define IDC_SOUNDCARD_DISABLE 1031

#define IDC_TFE_SETTINGS_ENABLE_T 1032
#define IDC_TFE_SETTINGS_ENABLE 1033
#define IDC_TFE_SETTINGS_INTERFACE_T 1034
Expand Down Expand Up @@ -99,7 +98,6 @@
#define IDC_PRINTER_FILTER_UNPRINTABLE 1057
#define IDC_PRINTER_APPEND 1058
#define IDC_SPIN_PRINTER_IDLE 1059

#define IDC_CHECK_HALF_SCAN_LINES 1060
#define IDC_GPL_TEXT 1061
#define IDC_GPL_BORDER 1063
Expand All @@ -120,6 +118,7 @@
#define IDC_COMBO_DISK2_SLOT5 1086
#define IDC_FOURPLAY_CONFIG 1087
#define IDC_SNESMAX_CONFIG 1088
#define IDC_CHECK_VIDHD_IN_SLOT3 1089
#define IDM_EXIT 40001
#define IDM_HELP 40002
#define IDM_ABOUT 40003
Expand Down
2 changes: 2 additions & 0 deletions source/CMakeLists.txt
Expand Up @@ -47,6 +47,7 @@ set(SOURCE_FILES
Debugger/Debugger_Commands.cpp
Debugger/Util_MemoryTextFile.cpp

VidHD.cpp
SSI263.cpp
Speaker.cpp
SoundCore.cpp
Expand Down Expand Up @@ -115,6 +116,7 @@ set(SOURCE_FILES
)

set(HEADER_FILES
VidHD.cpp
SSI263.h
SSI263Phonemes.h
Speaker.h
Expand Down
1 change: 1 addition & 0 deletions source/Card.h
Expand Up @@ -23,6 +23,7 @@ enum SS_CARDTYPE
CT_Saturn128K, // Saturn 128K (but may be populated with less RAM, in multiples of 16K)
CT_FourPlay, // 4 port Atari 2600 style digital joystick card
CT_SNESMAX, // 2 port Nintendo NES/SNES controller serial interface card
CT_VidHD,
CT_Uthernet2,
};

Expand Down
7 changes: 6 additions & 1 deletion source/CardManager.cpp
Expand Up @@ -40,6 +40,8 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#include "SAM.h"
#include "SerialComms.h"
#include "SNESMAX.h"
#include "VidHD.h"
#include "linux/network/uthernet2.h"

void CardManager::InsertInternal(UINT slot, SS_CARDTYPE type)
{
Expand Down Expand Up @@ -91,14 +93,17 @@ void CardManager::InsertInternal(UINT slot, SS_CARDTYPE type)
m_slot[slot] = new DummyCard(type, slot);
break;
case CT_Uthernet2:
m_slot[slot] = new DummyCard(type, slot);
m_slot[slot] = new Uthernet2(slot);
break;
case CT_FourPlay:
m_slot[slot] = new FourPlayCard(slot);
break;
case CT_SNESMAX:
m_slot[slot] = new SNESMAXCard(slot);
break;
case CT_VidHD:
m_slot[slot] = new VidHDCard(slot);
break;

case CT_LanguageCard:
case CT_Saturn128K:
Expand Down
34 changes: 23 additions & 11 deletions source/CmdLine.cpp
Expand Up @@ -169,6 +169,13 @@ bool ProcessCmdLine(LPSTR lpCmdLine)
g_cmdLine.bSlotEmpty[slot] = true;
if (strcmp(lpCmdLine, "diskii") == 0)
g_cmdLine.slotInsert[slot] = CT_Disk2;
if (strcmp(lpCmdLine, "vidhd") == 0)
{
if (slot == SLOT3)
g_cmdLine.slotInsert[slot] = CT_VidHD;
else
LogFileOutput("VidHD currently only supported in slot 3\n");
}
}
else if (lpCmdLine[3] == 'd' && (lpCmdLine[4] == '1' || lpCmdLine[4] == '2')) // -s[1..7]d[1|2] <dsk-image>
{
Expand Down Expand Up @@ -208,31 +215,36 @@ bool ProcessCmdLine(LPSTR lpCmdLine)
{
g_cmdLine.setFullScreen = 0;
}
#define CMD_FS_WIDTH "-fs-width="
else if (strncmp(lpCmdLine, CMD_FS_WIDTH, sizeof(CMD_FS_WIDTH)-1) == 0)
{
if (g_cmdLine.setFullScreen < 0) // Not yet been specified on cmd line?
g_cmdLine.setFullScreen = 1; // Implicity set full-screen. NB. Can be overridden by "-no-full-screen"

LPSTR lpTmp = lpCmdLine + sizeof(CMD_FS_WIDTH)-1;
{
g_cmdLine.userSpecifiedWidth = atoi(lpTmp);
if (!g_cmdLine.userSpecifiedWidth)
LogFileOutput("Invalid cmd-line parameter for -fs-width=x switch\n");
}
}
#define CMD_FS_HEIGHT "-fs-height="
else if (strncmp(lpCmdLine, CMD_FS_HEIGHT, sizeof(CMD_FS_HEIGHT)-1) == 0)
{
if (g_cmdLine.setFullScreen < 0) // Not yet been specified on cmd line?
g_cmdLine.setFullScreen = 1; // Implicity set full-screen. NB. Can be overridden by "-no-full-screen"

LPSTR lpTmp = lpCmdLine + sizeof(CMD_FS_HEIGHT)-1;
bool bRes = false;
UINT bestWidth=0, bestHeight=0;
if (strcmp(lpTmp, "best") == 0)
{
bRes = GetFrame().GetBestDisplayResolutionForFullScreen(bestWidth, bestHeight);
g_cmdLine.bestFullScreenResolution = true;
}
else
{
UINT userSpecifiedHeight = atoi(lpTmp);
if (userSpecifiedHeight)
bRes = GetFrame().GetBestDisplayResolutionForFullScreen(bestWidth, bestHeight, userSpecifiedHeight);
else
g_cmdLine.userSpecifiedHeight = atoi(lpTmp);
if (!g_cmdLine.userSpecifiedHeight)
LogFileOutput("Invalid cmd-line parameter for -fs-height=x switch\n");
}
if (bRes)
LogFileOutput("Best resolution for -fs-height=x switch: Width=%d, Height=%d\n", bestWidth, bestHeight);
else
LogFileOutput("Failed to set parameter for -fs-height=x switch\n");
}
else if (strcmp(lpCmdLine, "-no-di") == 0)
{
Expand Down
6 changes: 6 additions & 0 deletions source/CmdLine.h
Expand Up @@ -35,6 +35,9 @@ struct CmdLine
rgbCard = RGB_Videocard_e::Apple;
rgbCardForegroundColor = 15;
rgbCardBackgroundColor = 0;
bestFullScreenResolution = false;
userSpecifiedWidth = 0;
userSpecifiedHeight = 0;

for (UINT i = 0; i < NUM_SLOTS; i++)
{
Expand Down Expand Up @@ -74,6 +77,9 @@ struct CmdLine
int rgbCardForegroundColor;
int rgbCardBackgroundColor;
std::string strCurrentDir;
bool bestFullScreenResolution;
UINT userSpecifiedWidth;
UINT userSpecifiedHeight;
};

bool ProcessCmdLine(LPSTR lpCmdLine);
Expand Down
26 changes: 20 additions & 6 deletions source/Configuration/PageConfig.cpp
Expand Up @@ -89,18 +89,18 @@ INT_PTR CPageConfig::DlgProcInternal(HWND hWnd, UINT message, WPARAM wparam, LPA
switch (LOWORD(wparam))
{
case IDC_AUTHENTIC_SPEED: // Authentic Machine Speed
SendDlgItemMessage(hWnd,IDC_SLIDER_CPU_SPEED,TBM_SETPOS,1,SPEED_NORMAL);
EnableTrackbar(hWnd,0);
SendDlgItemMessage(hWnd, IDC_SLIDER_CPU_SPEED, TBM_SETPOS, 1, SPEED_NORMAL);
EnableTrackbar(hWnd, 0);
break;

case IDC_CUSTOM_SPEED: // Select Custom Speed
SetFocus(GetDlgItem(hWnd,IDC_SLIDER_CPU_SPEED));
EnableTrackbar(hWnd,1);
SetFocus(GetDlgItem(hWnd, IDC_SLIDER_CPU_SPEED));
EnableTrackbar(hWnd, 1);
break;

case IDC_SLIDER_CPU_SPEED: // CPU speed slider
CheckRadioButton(hWnd,IDC_AUTHENTIC_SPEED,IDC_CUSTOM_SPEED,IDC_CUSTOM_SPEED);
EnableTrackbar(hWnd,1);
CheckRadioButton(hWnd, IDC_AUTHENTIC_SPEED, IDC_CUSTOM_SPEED, IDC_CUSTOM_SPEED);
EnableTrackbar(hWnd, 1);
break;

case IDC_BENCHMARK:
Expand All @@ -113,6 +113,7 @@ INT_PTR CPageConfig::DlgProcInternal(HWND hWnd, UINT message, WPARAM wparam, LPA
case IDC_ETHERNET:
ui_tfe_settings_dialog(hWnd);
m_PropertySheetHelper.GetConfigNew().m_Slot[SLOT3] = m_PageConfigTfe.m_tfe_enabled ? CT_Uthernet : CT_Empty;
InitOptions(hWnd);
break;

case IDC_MONOCOLOR:
Expand All @@ -127,6 +128,14 @@ INT_PTR CPageConfig::DlgProcInternal(HWND hWnd, UINT message, WPARAM wparam, LPA
// Checked in DlgOK()
break;

case IDC_CHECK_VIDHD_IN_SLOT3:
{
const UINT newState = IsDlgButtonChecked(hWnd, IDC_CHECK_VIDHD_IN_SLOT3) ? 1 : 0;
m_PropertySheetHelper.GetConfigNew().m_Slot[SLOT3] = newState ? CT_VidHD : CT_Empty;
InitOptions(hWnd);
}
break;

case IDC_COMPUTER:
if(HIWORD(wparam) == CBN_SELCHANGE)
{
Expand Down Expand Up @@ -374,6 +383,11 @@ void CPageConfig::InitOptions(HWND hWnd)
const SS_CARDTYPE slot3 = m_PropertySheetHelper.GetConfigNew().m_Slot[SLOT3];
const BOOL enableUthernetDialog = slot3 == CT_Empty || slot3 == CT_Uthernet;
EnableWindow(GetDlgItem(hWnd, IDC_ETHERNET), enableUthernetDialog);

const bool bIsSlot3VidHD = slot3 == CT_VidHD;
CheckDlgButton(hWnd, IDC_CHECK_VIDHD_IN_SLOT3, bIsSlot3VidHD ? BST_CHECKED : BST_UNCHECKED);
const BOOL enableVidHD = slot3 == CT_Empty || bIsSlot3VidHD;
EnableWindow(GetDlgItem(hWnd, IDC_CHECK_VIDHD_IN_SLOT3), enableVidHD);
}

// Config->Computer: Menu item to eApple2Type
Expand Down
2 changes: 2 additions & 0 deletions source/Configuration/PropertySheetHelper.cpp
Expand Up @@ -548,6 +548,8 @@ std::string CPropertySheetHelper::GetCardName(const SS_CARDTYPE CardType)
return "4Play";
case CT_SNESMAX:
return "SNES MAX";
case CT_VidHD:
return "VidHD";
default:
return "Unknown";
}
Expand Down
8 changes: 8 additions & 0 deletions source/Debugger/Debug.cpp
Expand Up @@ -6545,6 +6545,11 @@ Update_t _ViewOutput( ViewVideoPage_t iPage, int bVideoModeFlags )
{
return _ViewOutput( VIEW_PAGE_2, VF_HIRES | VF_DHIRES | VF_80COL );
}
// Super Hi-Res
Update_t CmdViewOutput_SHR(int nArgs)
{
return _ViewOutput( VIEW_PAGE_1, VF_SHR );
}

// Watches ________________________________________________________________________________________

Expand Down Expand Up @@ -8744,6 +8749,9 @@ void DebuggerProcessKey( int keycode )
// Normally any key press takes us out of "Viewing Apple Output" g_nAppMode
// VK_F# are already processed, so we can't use them to cycle next video g_nAppMode
// if ((g_nAppMode != MODE_LOGO) && (g_nAppMode != MODE_DEBUG))

GetVideo().ClearSHRResidue(); // Clear the framebuffer to remove any SHR residue in the borders

DebugVideoMode::Instance().Reset();
UpdateDisplay( UPDATE_ALL ); // 1
return;
Expand Down
1 change: 1 addition & 0 deletions source/Debugger/Debugger_Commands.cpp
Expand Up @@ -267,6 +267,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
{TEXT("DHGR") , CmdViewOutput_DHGRX , CMD_VIEW_DHGRX , "View Double Hi-res (current page)" },
{TEXT("DHGR1") , CmdViewOutput_DHGR1 , CMD_VIEW_DHGR1 , "View Double Hi-res Page 1" },
{TEXT("DHGR2") , CmdViewOutput_DHGR2 , CMD_VIEW_DHGR2 , "View Double Hi-res Page 2" },
{TEXT("SHR") , CmdViewOutput_SHR , CMD_VIEW_SHR , "View Super Hi-res" },
// Watch
{TEXT("W") , CmdWatch , CMD_WATCH , "Alias for WA (Watch Add)" },
{TEXT("WA") , CmdWatchAdd , CMD_WATCH_ADD , "Add/Update address or symbol to watch" },
Expand Down
5 changes: 3 additions & 2 deletions source/Debugger/Debugger_Display.cpp
Expand Up @@ -639,8 +639,8 @@ void StretchBltMemToFrameDC(void)
int nViewportCX, nViewportCY;
win32Frame.GetViewportCXCY(nViewportCX, nViewportCY);

int xdest = win32Frame.IsFullScreen() ? win32Frame.GetFullScreenOffsetX() : 0;
int ydest = win32Frame.IsFullScreen() ? win32Frame.GetFullScreenOffsetY() : 0;
int xdest = win32Frame.IsFullScreen() ? win32Frame.GetFullScreenOffsetX() : GetVideo().GetFrameBufferCentringOffsetX() * win32Frame.GetViewportScale();
int ydest = win32Frame.IsFullScreen() ? win32Frame.GetFullScreenOffsetY() : GetVideo().GetFrameBufferCentringOffsetY() * win32Frame.GetViewportScale();
int wdest = nViewportCX;
int hdest = nViewportCY;

Expand Down Expand Up @@ -738,6 +738,7 @@ static void PrintGlyph( const int xDst, const int yDst, const int glyph )
// Manual print of character. A lot faster than BitBlt, which must be avoided.
int index_src = (CONSOLE_FONT_BITMAP_HEIGHT - 1 - ySrc) * CONSOLE_FONT_NUM_CHARS_PER_ROW * CONSOLE_FONT_GRID_X + xSrc; // font bitmap
int index_dst = (DISPLAY_HEIGHT - 1 - yDst) * DEBUG_VIRTUAL_TEXT_WIDTH * CONSOLE_FONT_GRID_X + xDst; // debugger bitmap

for (int yy = 0; yy < CONSOLE_FONT_GRID_Y; yy++)
{
for (int xx = 0; xx < CONSOLE_FONT_GRID_X; xx++)
Expand Down
2 changes: 2 additions & 0 deletions source/Debugger/Debugger_Types.h
Expand Up @@ -509,6 +509,7 @@
, CMD_VIEW_DHGRX
, CMD_VIEW_DHGR1
, CMD_VIEW_DHGR2
, CMD_VIEW_SHR
// Watch
, CMD_WATCH // TODO: Deprecated ?
, CMD_WATCH_ADD
Expand Down Expand Up @@ -770,6 +771,7 @@
Update_t CmdViewOutput_DHGRX (int nArgs);
Update_t CmdViewOutput_DHGR1 (int nArgs);
Update_t CmdViewOutput_DHGR2 (int nArgs);
Update_t CmdViewOutput_SHR (int nArgs);
// Watch
Update_t CmdWatch (int nArgs);
Update_t CmdWatchAdd (int nArgs);
Expand Down

0 comments on commit 9d8d111

Please sign in to comment.