Added a HW registers browser window and set a tab for the Blitter
authorJean-Paul Mari <djipi.mari@gmail.com>
Wed, 21 Aug 2019 06:49:37 +0000 (02:49 -0400)
committerJean-Paul Mari <djipi.mari@gmail.com>
Wed, 21 Aug 2019 06:49:37 +0000 (02:49 -0400)
13 files changed:
Win-VS2017/virtualjaguar.vcxproj
Win-VS2017/virtualjaguar.vcxproj.filters
docs/vj_HistoryNotes.txt
res/help.html
res/tool-hw-regs.png [new file with mode: 0644]
src/gui/debug/hwregsblitterbrowser.cpp [new file with mode: 0644]
src/gui/debug/hwregsblitterbrowser.h [new file with mode: 0644]
src/gui/debug/hwregsbrowser.cpp [new file with mode: 0644]
src/gui/debug/hwregsbrowser.h [new file with mode: 0644]
src/gui/mainwin.cpp
src/gui/mainwin.h
src/gui/virtualjaguar.qrc
virtualjaguar.pro

index 52a6b6d..f1f5e6e 100644 (file)
     <ClCompile Include="..\src\debugger\SaveDumpAsWin.cpp" />\r
     <ClCompile Include="..\src\debugger\VideoWin.cpp" />\r
     <ClCompile Include="..\src\file.cpp" />\r
+    <ClCompile Include="..\src\gui\debug\hwregsblitterbrowser.cpp" />\r
+    <ClCompile Include="..\src\gui\debug\hwregsbrowser.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+      </ExcludedFromBuild>\r
+    </ClCompile>\r
     <ClCompile Include="..\src\gui\keybindingstab.cpp" />\r
     <ClCompile Include="..\src\gui\modelsbiostab.cpp" />\r
     <ClCompile Include="..\src\LEB128.cpp" />\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
     </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Debug\moc_hwregsblitterbrowser.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Debug\moc_hwregsbrowser.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>\r
+    </ClCompile>\r
     <ClCompile Include="GeneratedFiles\Debug\moc_keybindingstab.cpp">\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>\r
     </ClCompile>\r
     <ClCompile Include="GeneratedFiles\Debug\moc_keygrabber.cpp">\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
     </ClCompile>\r
-    <ClCompile Include="GeneratedFiles\Release\moc_debuggertab.cpp" />\r
+    <ClCompile Include="GeneratedFiles\Release\moc_debuggertab.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
     <ClCompile Include="GeneratedFiles\Release\moc_DSPDasmWin.cpp">\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
     </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Release\moc_hwregsblitterbrowser.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Release\moc_hwregsbrowser.cpp">\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
+    </ClCompile>\r
     <ClCompile Include="GeneratedFiles\Release\moc_keybindingstab.cpp">\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>\r
     </ClCompile>\r
     <ClCompile Include="GeneratedFiles\Release\moc_keygrabber.cpp">\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
       <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -D_CRT_SECURE_NO_WARNINGS -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -D__GCCWIN32__ -DQT_NO_DEBUG -DQT_OPENGL_LIB -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -D_UNICODE  "-I." "-I.\..\src" "-I.\..\src\gui" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtOpenGL" "-IC:\SDK\OpenGL\include" "-IC:\SDK\SDL\SDL-1.2.15\include" "-IC:\SDK\DWARF\libdwarf-VS2015\include" "-IC:\SDK\Elf\libelf-0.8.13\include" "-IC:\SDK\zlib\zlib-1.2.11\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I.\GeneratedFiles"</Command>\r
     </CustomBuild>\r
+    <CustomBuild Include="..\src\gui\debug\hwregsbrowser.h">\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -D__GCCWIN32__ -DQT_OPENGL_ES_2 -DQT_OPENGL_ES_2_ANGLE -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_OPENGL_LIB -D%(PreprocessorDefinitions) "-I." "-I.\..\src" "-I.\..\src\gui" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtOpenGL" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtWidgets" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtGui" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtANGLE" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtCore" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\mkspecs\win32-msvc2015" "-IC:\SDK\SDL-1.2.15\include" "-IC:\SDK\mesa-11.2.0-rc4\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtOpenGL" "-I.\GeneratedFiles\$(ConfigurationName)" "-I.\GeneratedFiles"</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -D_CRT_SECURE_NO_WARNINGS -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -D__GCCWIN32__ -DQT_OPENGL_LIB -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -D%(PreprocessorDefinitions) "-I." "-I.\..\src" "-I.\..\src\gui" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtOpenGL" "-IC:\SDK\SDL\SDL-1.2.15\include" "-IC:\SDK\DWARF\libdwarf-VS2015\include" "-IC:\SDK\Elf\libelf-0.8.13\include" "-IC:\SDK\zlib\zlib-1.2.8\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-IC:\SDK\OpenGL\include" "-I.\GeneratedFiles"</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -D__GCCWIN32__ -DQT_NO_DEBUG -DQT_OPENGL_ES_2 -DQT_OPENGL_ES_2_ANGLE -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_OPENGL_LIB -D%(PreprocessorDefinitions) "-I." "-I.\..\src" "-I.\..\src\gui" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtOpenGL" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtWidgets" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtGui" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtANGLE" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtCore" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\mkspecs\win32-msvc2015" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtOpenGL" "-I.\GeneratedFiles\$(ConfigurationName)" "-I.\GeneratedFiles"</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -D_CRT_SECURE_NO_WARNINGS -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -D__GCCWIN32__ -DQT_NO_DEBUG -DQT_OPENGL_LIB -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -D%(PreprocessorDefinitions) "-I." "-I.\..\src" "-I.\..\src\gui" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtOpenGL" "-IC:\SDK\OpenGL\include" "-IC:\SDK\SDL\SDL-1.2.15\include" "-IC:\SDK\DWARF\libdwarf-VS2015\include" "-IC:\SDK\Elf\libelf-0.8.13\include" "-IC:\SDK\zlib\zlib-1.2.11\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I.\GeneratedFiles"</Command>\r
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+      </ExcludedFromBuild>\r
+      <DeploymentContent Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">\r
+      </DeploymentContent>\r
+    </CustomBuild>\r
+    <CustomBuild Include="..\src\gui\debug\hwregsblitterbrowser.h">\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Moc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -D__GCCWIN32__ -DQT_OPENGL_ES_2 -DQT_OPENGL_ES_2_ANGLE -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_OPENGL_LIB -D%(PreprocessorDefinitions) "-I." "-I.\..\src" "-I.\..\src\gui" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtOpenGL" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtWidgets" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtGui" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtANGLE" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtCore" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\mkspecs\win32-msvc2015" "-IC:\SDK\SDL-1.2.15\include" "-IC:\SDK\mesa-11.2.0-rc4\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtOpenGL" "-I.\GeneratedFiles\$(ConfigurationName)" "-I.\GeneratedFiles"</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -D_CRT_SECURE_NO_WARNINGS -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -D__GCCWIN32__ -DQT_OPENGL_LIB -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -D%(PreprocessorDefinitions) "-I." "-I.\..\src" "-I.\..\src\gui" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtOpenGL" "-IC:\SDK\SDL\SDL-1.2.15\include" "-IC:\SDK\DWARF\libdwarf-VS2015\include" "-IC:\SDK\Elf\libelf-0.8.13\include" "-IC:\SDK\zlib\zlib-1.2.8\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-IC:\SDK\OpenGL\include" "-I.\GeneratedFiles"</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Moc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -D__GCCWIN32__ -DQT_NO_DEBUG -DQT_OPENGL_ES_2 -DQT_OPENGL_ES_2_ANGLE -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_OPENGL_LIB -D%(PreprocessorDefinitions) "-I." "-I.\..\src" "-I.\..\src\gui" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtOpenGL" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtWidgets" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtGui" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtANGLE" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\include\QtCore" "-I.\..\..\..\Qt\Qt5.5.1\msvc2015_64\mkspecs\win32-msvc2015" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtOpenGL" "-I.\GeneratedFiles\$(ConfigurationName)" "-I.\GeneratedFiles"</Command>\r
+      <AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>\r
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing %(Identity)...</Message>\r
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe"  "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp"  -D_CRT_SECURE_NO_WARNINGS -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -D__GCCWIN32__ -DQT_NO_DEBUG -DQT_OPENGL_LIB -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -D%(PreprocessorDefinitions) "-I." "-I.\..\src" "-I.\..\src\gui" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtOpenGL" "-IC:\SDK\OpenGL\include" "-IC:\SDK\SDL\SDL-1.2.15\include" "-IC:\SDK\DWARF\libdwarf-VS2015\include" "-IC:\SDK\Elf\libelf-0.8.13\include" "-IC:\SDK\zlib\zlib-1.2.11\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I.\GeneratedFiles"</Command>\r
+    </CustomBuild>\r
     <ClInclude Include="..\src\LEB128.h" />\r
     <ClInclude Include="..\src\log.h" />\r
     <ClInclude Include="..\src\settings.h" />\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>\r
     </Image>\r
+    <Image Include="..\res\tool-hw-regs.png" />\r
   </ItemGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
   <ImportGroup Label="ExtensionTargets" />\r
index 530696e..6c74ae9 100644 (file)
     <ClCompile Include="..\src\debugger\SaveDumpAsWin.cpp">\r
       <Filter>Source Files\debugger</Filter>\r
     </ClCompile>\r
+    <ClCompile Include="..\src\gui\debug\hwregsbrowser.cpp">\r
+      <Filter>Source Files\alpine</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Debug\moc_hwregsbrowser.cpp">\r
+      <Filter>Generated Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Release\moc_hwregsbrowser.cpp">\r
+      <Filter>Generated Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Debug\moc_hwregsblitterbrowser.cpp">\r
+      <Filter>Generated Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="GeneratedFiles\Release\moc_hwregsblitterbrowser.cpp">\r
+      <Filter>Generated Files</Filter>\r
+    </ClCompile>\r
+    <ClCompile Include="..\src\gui\debug\hwregsblitterbrowser.cpp">\r
+      <Filter>Source Files\alpine</Filter>\r
+    </ClCompile>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <ClInclude Include="..\src\debugger\DWARFManager.h">\r
     <ClInclude Include="..\src\gui\profile.h">\r
       <Filter>Header Files\gui</Filter>\r
     </ClInclude>\r
-    <ClInclude Include="..\src\debugger\HWLABELManager.h">\r
-      <Filter>Header Files\debugger</Filter>\r
-    </ClInclude>\r
     <ClInclude Include="..\src\debugger\DBGManager.h">\r
       <Filter>Header Files\debugger</Filter>\r
     </ClInclude>\r
     <ClInclude Include="..\src\LEB128.h">\r
       <Filter>Header Files</Filter>\r
     </ClInclude>\r
+    <ClInclude Include="..\src\debugger\HWLABELManager.h">\r
+      <Filter>Header Files\debugger</Filter>\r
+    </ClInclude>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <None Include="..\res\alpine-file.png">\r
     <CustomBuild Include="..\src\debugger\SaveDumpAsWin.h">\r
       <Filter>Header Files\debugger</Filter>\r
     </CustomBuild>\r
+    <CustomBuild Include="..\src\gui\debug\hwregsbrowser.h">\r
+      <Filter>Header Files\alpine</Filter>\r
+    </CustomBuild>\r
+    <CustomBuild Include="..\src\gui\debug\hwregsblitterbrowser.h">\r
+      <Filter>Header Files\alpine</Filter>\r
+    </CustomBuild>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <ResourceCompile Include="..\res\vj.rc">\r
     <Image Include="..\res\debug-disableallbreakpoints.png">\r
       <Filter>Resource Files</Filter>\r
     </Image>\r
+    <Image Include="..\res\tool-hw-regs.png">\r
+      <Filter>Resource Files</Filter>\r
+    </Image>\r
   </ItemGroup>\r
 </Project>
\ No newline at end of file
index c427baa..fd9fc6c 100644 (file)
@@ -6,6 +6,7 @@ Release 5 (TBA)
 -- Alert box will display a message and then the code will stop
 2) Added a specific breakpoint for the M68K address error exception
 -- Alert box will display a message and then the code will stop
+3) Added a HW registers browser window and set a tab for the Blitter
 
 Release 4a (15th August 2019)
 -----------------------------
index 47649cf..cf23d34 100644 (file)
 <li>OP Browser</li>
 <li>M68K Disassembly Browser</li>
 <li>RISC Disassembly Browser</li>
+<li>HW Registers Browser</li>
 </ul>
 <h3>Memory Browser</h3>
 <p>This window lets you inspect <em>Virtual Jaguar</em>&rsquo;s emulated memory space. The <strong>PgDn</strong> key will advance the top of the window&rsquo;s memory location by 480 bytes, and <strong>PgUp</strong> will go back by the same amount. The <strong>Plus (+)</strong> key will advance the top of the window&rsquo;s memory location by 16 bytes, and <strong>Minus (-)</strong> will go back by the same amount. Entering a memory location, in hexadecimal, in the edit field and pressing the <strong>Go</strong> button will display memory from that location. It can be dismissed by clicking on the &ldquo;X&rdquo; in the upper corner of the dialog, or by pressing the <strong>Esc</strong> key on your keyboard.</p>
 <p>This window provides a disassembly of 68000 opcodes. It can be dismissed by clicking on the &ldquo;X&rdquo; in the upper corner of the dialog, or by pressing the <strong>Esc</strong> key on your keyboard.</p>
 <h3>RISC Disassembly Browser</h3>
 <p>This window provides a disassembly of RISC opcodes. It can be dismissed by clicking on the &ldquo;X&rdquo; in the upper corner of the dialog, or by pressing the <strong>Esc</strong> key on your keyboard.</p>
+<h3>HW Registers Browser</h3>
+<p>This window provides a list of the hardware registers content; for the moment, only the blitter is displayed. It can be dismissed by clicking on the &ldquo;X&rdquo; in the upper corner of the dialog, or by pressing the <strong>Esc</strong> key on your keyboard.</p>
 <p>The aforementioned options will only work when <em>Virtual Jaguar</em> is run in Alpine or Debugger mode, that is, when the --alpine or --debugger flag is passed in. If you do not pass such flag, <em>Virtual Jaguar</em> will run as it normally does, i.e., as a stock Jaguar, and nothing will be loaded by default.</p>
 <h2>For The Curious</h2>
 <p>If you&rsquo;re wondering why some cartridges have labels in the &ldquo;Insert Cartridge...&rdquo; dialogue and some don&rsquo;t, read on...</p>
diff --git a/res/tool-hw-regs.png b/res/tool-hw-regs.png
new file mode 100644 (file)
index 0000000..76d2b80
Binary files /dev/null and b/res/tool-hw-regs.png differ
diff --git a/src/gui/debug/hwregsblitterbrowser.cpp b/src/gui/debug/hwregsblitterbrowser.cpp
new file mode 100644 (file)
index 0000000..0b17a32
--- /dev/null
@@ -0,0 +1,139 @@
+//
+// hwregsbrowser.h: Hardware registers blitter browser
+//
+// by Jean-Paul Mari
+//
+// JPM = Jean-Paul Mari <djipi.mari@gmail.com>
+//
+// Who  When        What
+// ---  ----------  -----------------------------------------------------------
+// JPM  08/20/2019  Created this file
+//
+
+// STILL TO DO:
+//
+
+#include "hwregsbrowser.h"
+#include "blitter.h"
+
+
+//
+struct BlitterInfoTable
+{
+       unsigned int Address;
+       unsigned int NbBits;
+       const char *Name;
+       const char *Type;
+}
+S_BlitterInfoTable;
+
+//
+BlitterInfoTable TabBlitterInfoTable[] = {
+                                                                                       {       0xF02200, sizeof(long), "A1 base address", "32-bit register containing a pointer to the base of the window pointer to by A1.\nThis address must be phrase aligned."     },
+                                                                                       {       0xF02204, sizeof(long), "Flags Register", "A set of flags controlling various aspects of the A1 window and how addresses are updated."  },
+                                                                                       {       0xF02208, sizeof(long), "A1 Clipping Window Size", "This register contains the size in pixels, and may be used for clipping writes, so that if the pointer leaves the window bounds no write is performed."     },
+                                                                                       {       0xF0220C, sizeof(long), "A1 Window Pixel Pointer", "This register contains the X (low word) and Y (high word) pointers onto the window, and are the location where the next pixel will be written.\nThey are sixteen - bit signed values."      },
+                                                                                       {       0xF02210, sizeof(long), "A1 Step Value", "The step register contains two signed sixteen bit values, which are the X step (low word) and Y step (high word)."    },
+                                                                                       {       0xF02214, sizeof(long), "A1 Step Fraction Value", "The step fraction register may be added to the fractional parts of the A1 pointer in the same manner as the step value."     },
+                                                                                       {       0xF02218, sizeof(long), "A1 Window Pixel Pointer Fraction", ""  },
+                                                                                       {       0xF0221C, sizeof(long), "A1 Pixel Pointer Increment", ""        },
+                                                                                       {       0xF02220, sizeof(long), "A1 Pixel Pointer Increment Fraction", "This is the fractional parts of the increment described above." },
+                                                                                       {       0xF02224, sizeof(long), "A2 Base Register", "32-bit register containing a pointer to the base of the window pointer to by A2.\nThis address must be phrase aligned."    },
+                                                                                       {       0xF02228, sizeof(long), "A2 Flags Register", "A set of flags controlling various aspects of the A2 window and how addresses are updated."       },
+                                                                                       {       0xF0222C, sizeof(long), "A2 Window Mask", ""    },
+                                                                                       {       0xF02230, sizeof(long), "A2 Window Pointer", "" },
+                                                                                       {       0xF02234, sizeof(long), "A2 Step Value", ""     },
+                                                                                       {       0xF02238, sizeof(long), "Status Register", ""   },
+                                                                                       {       0xF0223C, sizeof(long), "Counters Register", "" },
+                                                                                       {       0xF02240, sizeof(long long), "Source Data Register", "" },
+                                                                                       {       0xF02248, sizeof(long long), "Destination Data Register", ""    },
+                                                                                       {       0xF02250, sizeof(long long), "Destination Z Register", ""       },
+                                                                                       {       0xF02258, sizeof(long long), "Source Z Register 1", "The source Z register 1 is also used to hold the four integer parts of computed Z."        },
+                                                                                       {       0xF02260, sizeof(long long), "Source Z Register 2", "The source Z register 2 is also used to hold the four fraction parts of computed Z."       },
+                                                                                       {       0xF02268, sizeof(long long), "Pattern Data Register", "The pattern data register also serves to hold the computed intensity integer parts and their associated colours."        },
+                                                                                       {       0xF02270, sizeof(long), "Intensity Increment", "This thirty-two bit register holds the integer and fractional parts of the intensity increment used for Gouraud shading."       },
+                                                                                       {       0xF02274, sizeof(long), "Z Increment", "This thirty-two bit register holds the integer and fractional parts of the Z increment used for computed Z polygon drawing."    },
+                                                                                       {       0xF02278, sizeof(long), "Collision control", "" },
+                                                                                       {       0xF0227C, sizeof(long), "Intensity 0", ""       },
+                                                                                       {       0xF02280, sizeof(long), "Intensity 1", ""       },
+                                                                                       {       0xF02284, sizeof(long), "Intensity 2", ""       },
+                                                                                       {       0xF02288, sizeof(long), "Intensity 3", ""       },
+                                                                                       {       0xF0228C, sizeof(long), "Z 0", "These registers are analogous to the intensity registers, and are for Z buffer operation."      },
+                                                                                       {       0xF02290, sizeof(long), "Z 1", "These registers are analogous to the intensity registers, and are for Z buffer operation."      },
+                                                                                       {       0xF02294, sizeof(long), "Z 2", "These registers are analogous to the intensity registers, and are for Z buffer operation."      },
+                                                                                       {       0xF02298, sizeof(long), "Z 3", "These registers are analogous to the intensity registers, and are for Z buffer operation."      },
+                                                                               };
+
+
+// 
+HWRegsBlitterBrowserWindow::HWRegsBlitterBrowserWindow(QWidget * parent/*= 0*/) : QWidget(parent, Qt::Dialog),
+layout(new QVBoxLayout),
+TableView(new QTableView),
+model(new QStandardItemModel)
+{
+       unsigned int i;
+
+       // Set the font
+       QFont fixedFont("Lucida Console", 8, QFont::Normal);
+       fixedFont.setStyleHint(QFont::TypeWriter);
+
+       // Set the new layout with proper identation and readibility
+       model->setColumnCount(4);
+       model->setHeaderData(0, Qt::Horizontal, QObject::tr("Name"));
+       model->setHeaderData(1, Qt::Horizontal, QObject::tr("Address"));
+       model->setHeaderData(2, Qt::Horizontal, QObject::tr("# bits"));
+       model->setHeaderData(3, Qt::Horizontal, QObject::tr("Value"));
+       //model->setHeaderData(4, Qt::Horizontal, QObject::tr("Reference"));
+       // Information table
+       TableView->setModel(model);
+       TableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
+       TableView->setShowGrid(0);
+       TableView->setFont(fixedFont);
+       TableView->verticalHeader()->setDefaultSectionSize(TableView->verticalHeader()->minimumSectionSize());
+       TableView->verticalHeader()->setDefaultAlignment(Qt::AlignRight);
+
+       // Set basic infos in the layout
+       for (i = 0; i < (sizeof(TabBlitterInfoTable) / sizeof(struct BlitterInfoTable)); i++)
+       {
+               model->insertRow(i);
+               model->setItem(i, 0, new QStandardItem(QString("%1").arg(TabBlitterInfoTable[i].Name)));
+               model->setItem(i, 1, new QStandardItem(QString("0x%1").arg(TabBlitterInfoTable[i].Address, 4, 16, QChar('0'))));
+               model->setItem(i, 2, new QStandardItem(QString("%1").arg(TabBlitterInfoTable[i].NbBits * 8)));
+               //model->setItem(i, 4, new QStandardItem(QString("%1").arg(TabBlitterInfoTable[i].Type)));
+       }
+
+       // Set the layout
+       layout->addWidget(TableView);
+       setLayout(layout);
+}
+
+
+//
+HWRegsBlitterBrowserWindow::~HWRegsBlitterBrowserWindow(void)
+{
+       Reset();
+}
+
+
+//
+void HWRegsBlitterBrowserWindow::Reset(void)
+{
+}
+
+
+//
+void HWRegsBlitterBrowserWindow::RefreshContents(void)
+{
+       char string[1024];
+       unsigned int i;
+
+       if (isVisible())
+       {
+               for (i = 0; i < (sizeof(TabBlitterInfoTable) / sizeof(struct BlitterInfoTable)); i++)
+               {
+                       // Emulator handles the blitter in a separate array
+                       sprintf(string, "0x%08x", BlitterReadLong(TabBlitterInfoTable[i].Address));
+                       model->setItem(i, 3, new QStandardItem(QString("%1").arg(string)));
+               }
+       }
+}
diff --git a/src/gui/debug/hwregsblitterbrowser.h b/src/gui/debug/hwregsblitterbrowser.h
new file mode 100644 (file)
index 0000000..998374a
--- /dev/null
@@ -0,0 +1,37 @@
+//
+// hwregsblitterbrowser.h: Hardware registers blitter browser
+//
+// by Jean-Paul Mari
+//
+
+#ifndef __HWREGSBLITTERBROWSER_H__
+#define __HWREGSBLITTERBROWSER_H__
+
+#include <QtWidgets>
+#include <stdint.h>
+
+
+// 
+class HWRegsBlitterBrowserWindow : public QWidget
+{
+       Q_OBJECT
+
+public:
+       HWRegsBlitterBrowserWindow(QWidget *parent = 0);
+       ~HWRegsBlitterBrowserWindow(void);
+       void Reset(void);
+
+public slots:
+       void RefreshContents(void);
+
+protected:
+       //void keyPressEvent(QKeyEvent *);
+
+private:
+       QVBoxLayout *layout;
+       QTableView *TableView;
+       QStandardItemModel *model;
+};
+
+
+#endif
diff --git a/src/gui/debug/hwregsbrowser.cpp b/src/gui/debug/hwregsbrowser.cpp
new file mode 100644 (file)
index 0000000..97e03cf
--- /dev/null
@@ -0,0 +1,70 @@
+//
+// hwregsbrowser.h: Hardware registers browser
+//
+// by Jean-Paul Mari
+//
+// JPM = Jean-Paul Mari <djipi.mari@gmail.com>
+//
+// Who  When        What
+// ---  ----------  -----------------------------------------------------------
+// JPM  08/20/2019  Created this file
+//
+
+// STILL TO DO:
+//
+
+#include "hwregsbrowser.h"
+
+
+// 
+HWRegsBrowserWindow::HWRegsBrowserWindow(QWidget * parent/*= 0*/) : QWidget(parent, Qt::Dialog),
+layout(new QVBoxLayout),
+//statusbar(new QStatusBar),
+hwregstabWidget(new QTabWidget),
+hwregsblitterWin(new HWRegsBlitterBrowserWindow)
+{
+       setWindowTitle(tr("Hardware Registers Browser"));
+
+       // Set the font
+       QFont fixedFont("Lucida Console", 8, QFont::Normal);
+       fixedFont.setStyleHint(QFont::TypeWriter);
+
+       //
+       hwregstabWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+       hwregstabWidget->addTab(hwregsblitterWin, tr("Blitter"));
+       layout->addWidget(hwregstabWidget);
+
+       // Status bar
+       //layout->addWidget(statusbar);
+       setLayout(layout);
+}
+
+
+//
+HWRegsBrowserWindow::~HWRegsBrowserWindow(void)
+{
+       Reset();
+}
+
+
+//
+void HWRegsBrowserWindow::Reset(void)
+{
+}
+
+
+//
+void HWRegsBrowserWindow::RefreshContents(void)
+{
+       hwregsblitterWin->RefreshContents();
+}
+
+
+// 
+void HWRegsBrowserWindow::keyPressEvent(QKeyEvent * e)
+{
+       if (e->key() == Qt::Key_Escape)
+       {
+               hide();
+       }
+}
diff --git a/src/gui/debug/hwregsbrowser.h b/src/gui/debug/hwregsbrowser.h
new file mode 100644 (file)
index 0000000..42d3400
--- /dev/null
@@ -0,0 +1,39 @@
+//
+// hwregsbrowser.h: Hardware registers browser
+//
+// by Jean-Paul Mari
+//
+
+#ifndef __HWREGSBROWSER_H__
+#define __HWREGSBROWSER_H__
+
+#include <QtWidgets>
+#include <stdint.h>
+#include "hwregsblitterbrowser.h"
+
+
+// 
+class HWRegsBrowserWindow : public QWidget
+{
+       Q_OBJECT
+
+public:
+       HWRegsBrowserWindow(QWidget *parent = 0);
+       ~HWRegsBrowserWindow(void);
+       void Reset(void);
+
+public slots:
+       void RefreshContents(void);
+
+protected:
+       void keyPressEvent(QKeyEvent *);
+
+private:
+       //QStatusBar *statusbar;
+       QVBoxLayout *layout;
+       QTabWidget *hwregstabWidget;
+       HWRegsBlitterBrowserWindow *hwregsblitterWin;
+};
+
+
+#endif
index a25fad1..98f1df8 100644 (file)
@@ -23,7 +23,7 @@
 // JPM   Oct./2018  Added search paths in the settings, breakpoints feature, cartridge view menu\r
 // JPM  11/18/2018  Fix crash with non-debugger mode\r
 // JPM  April/2019  Added ELF sections check, added a save memory dump\r
-// JPM   Aug./2019  Update texts descriptions, set cartridge view menu for debugger mode only\r
+// JPM   Aug./2019  Update texts descriptions, set cartridge view menu for debugger mode only, added a HW registers browser\r
 //\r
 \r
 // FIXED:\r
@@ -71,6 +71,7 @@
 #include "debug/stackbrowser.h"\r
 #include "debug/opbrowser.h"\r
 #include "debug/riscdasmbrowser.h"\r
+#include "debug/hwregsbrowser.h"\r
 \r
 #include "dac.h"\r
 #include "jaguar.h"\r
@@ -194,6 +195,7 @@ MainWin::MainWin(bool autoRun): running(true), powerButtonOn(false),
        opBrowseWin = new OPBrowserWindow(this);\r
        m68kDasmBrowseWin = new M68KDasmBrowserWindow(this);\r
        riscDasmBrowseWin = new RISCDasmBrowserWindow(this);\r
+       hwRegsBrowseWin = new HWRegsBrowserWindow(this);\r
 \r
        // Windows debugger mode features\r
        if (vjs.softTypeDebugger)\r
@@ -515,6 +517,11 @@ MainWin::MainWin(bool autoRun): running(true), powerButtonOn(false),
        m68kDasmBrowseAct->setStatusTip(tr("Shows the 68K disassembly browser window"));\r
        connect(m68kDasmBrowseAct, SIGNAL(triggered()), this, SLOT(ShowM68KDasmBrowserWin()));\r
 \r
+       // HW registers browser window\r
+       hwRegsBrowseAct = new QAction(QIcon(":/res/tool-hw-regs.png"), tr("HW Registers Browser"), this);\r
+       hwRegsBrowseAct->setStatusTip(tr("Shows the HW registers browser window"));\r
+       connect(hwRegsBrowseAct, SIGNAL(triggered()), this, SLOT(ShowHWRegsBrowserWin()));\r
+\r
        // Risc (DSP / GPU) disassembly browser window\r
        riscDasmBrowseAct = new QAction(QIcon(":/res/tool-risc-dis.png"), tr("RISC Listing Browser"), this);\r
        riscDasmBrowseAct->setStatusTip(tr("Shows the RISC disassembly browser window"));\r
@@ -592,6 +599,7 @@ MainWin::MainWin(bool autoRun): running(true), powerButtonOn(false),
                        debugWindowsBrowsesMenu->addAction(opBrowseAct);\r
                        debugWindowsBrowsesMenu->addAction(m68kDasmBrowseAct);\r
                        debugWindowsBrowsesMenu->addAction(riscDasmBrowseAct);\r
+                       debugWindowsBrowsesMenu->addAction(hwRegsBrowseAct);\r
                        debugMenu->addSeparator();\r
                        debugMenu->addAction(pauseAct);\r
                        debugMenu->addAction(frameAdvanceAct);\r
@@ -620,6 +628,7 @@ MainWin::MainWin(bool autoRun): running(true), powerButtonOn(false),
                        debugMenu->addAction(opBrowseAct);\r
                        debugMenu->addAction(m68kDasmBrowseAct);\r
                        debugMenu->addAction(riscDasmBrowseAct);\r
+                       debugMenu->addAction(hwRegsBrowseAct);\r
                }\r
        }\r
 \r
@@ -676,6 +685,7 @@ MainWin::MainWin(bool autoRun): running(true), powerButtonOn(false),
                debugbar->addAction(opBrowseAct);\r
                debugbar->addAction(m68kDasmBrowseAct);\r
                debugbar->addAction(riscDasmBrowseAct);\r
+               debugbar->addAction(hwRegsBrowseAct);\r
        }\r
 \r
        // Add actions to the main window, as hiding widgets with them\r
@@ -1764,6 +1774,7 @@ void MainWin::ShowCPUBrowserWin(void)
 }\r
 \r
 \r
+// Show the OP browser window\r
 void MainWin::ShowOPBrowserWin(void)\r
 {\r
        opBrowseWin->show();\r
@@ -1771,6 +1782,15 @@ void MainWin::ShowOPBrowserWin(void)
 }\r
 \r
 \r
+// Show the HW registers browser window\r
+void MainWin::ShowHWRegsBrowserWin(void)\r
+{\r
+       hwRegsBrowseWin->show();\r
+       hwRegsBrowseWin->RefreshContents();\r
+}\r
+\r
+\r
+// Show the M68K browser window\r
 void MainWin::ShowM68KDasmBrowserWin(void)\r
 {\r
        m68kDasmBrowseWin->show();\r
@@ -2027,6 +2047,13 @@ void MainWin::ReadUISettings(void)
                size = settings.value("opBrowseWinSize", QSize(400, 400)).toSize();\r
                opBrowseWin->resize(size);\r
 \r
+               // HW registers UI information\r
+               pos = settings.value("hwRegsBrowseWinPos", QPoint(200, 200)).toPoint();\r
+               hwRegsBrowseWin->move(pos);\r
+               settings.value("hwRegsBrowseWinIsVisible", false).toBool() ? ShowHWRegsBrowserWin() : void();\r
+               size = settings.value("hwRegsBrowseWinSize", QSize(400, 400)).toSize();\r
+               hwRegsBrowseWin->resize(size);\r
+\r
                // RISC disassembly UI information\r
                pos = settings.value("riscDasmBrowseWinPos", QPoint(200, 200)).toPoint();\r
                riscDasmBrowseWin->move(pos);\r
@@ -2290,6 +2317,9 @@ void MainWin::WriteUISettings(void)
                settings.setValue("opBrowseWinPos", opBrowseWin->pos());\r
                settings.setValue("opBrowseWinIsVisible", opBrowseWin->isVisible());\r
                settings.setValue("opBrowseWinSize", opBrowseWin->size());\r
+               settings.setValue("hwRegsBrowseWinPos", hwRegsBrowseWin->pos());\r
+               settings.setValue("hwRegsBrowseWinIsVisible", hwRegsBrowseWin->isVisible());\r
+               settings.setValue("hwRegsBrowseWinSize", hwRegsBrowseWin->size());\r
                settings.setValue("riscDasmBrowseWinPos", riscDasmBrowseWin->pos());\r
                settings.setValue("riscDasmBrowseWinIsVisible", riscDasmBrowseWin->isVisible());\r
                settings.setValue("m68kDasmBrowseWinPos", m68kDasmBrowseWin->pos());\r
@@ -2357,6 +2387,7 @@ void MainWin::AlpineRefreshWindows(void)
        opBrowseWin->RefreshContents();\r
        riscDasmBrowseWin->RefreshContents();\r
        m68kDasmBrowseWin->RefreshContents();\r
+       hwRegsBrowseWin->RefreshContents();\r
 }\r
 \r
 \r
index e76f4ff..466c2a4 100644 (file)
@@ -33,6 +33,7 @@ class CPUBrowserWindow;
 class OPBrowserWindow;\r
 class M68KDasmBrowserWindow;\r
 class RISCDasmBrowserWindow;\r
+class HWRegsBrowserWindow;\r
 \r
 // Debugger\r
 class m68KDasmWindow;\r
@@ -125,6 +126,7 @@ class MainWin: public QMainWindow
                void ShowCPUBrowserWin(void);\r
                void ShowOPBrowserWin(void);\r
                void ShowM68KDasmBrowserWin(void);\r
+               void ShowHWRegsBrowserWin(void);\r
                void ShowRISCDasmBrowserWin(void);\r
 \r
        private:\r
@@ -151,6 +153,7 @@ class MainWin: public QMainWindow
                OPBrowserWindow *opBrowseWin;\r
                M68KDasmBrowserWindow *m68kDasmBrowseWin;\r
                RISCDasmBrowserWindow *riscDasmBrowseWin;\r
+               HWRegsBrowserWindow *hwRegsBrowseWin;\r
                //VideoOutputWindow *VideoOutputWin;\r
                AllWatchBrowserWindow *allWatchBrowseWin;\r
                LocalBrowserWindow *LocalBrowseWin;\r
@@ -235,6 +238,7 @@ class MainWin: public QMainWindow
                QAction *cpuBrowseAct;\r
                QAction *opBrowseAct;\r
                QAction *m68kDasmBrowseAct;\r
+               QAction *hwRegsBrowseAct;\r
                QAction *riscDasmBrowseAct;\r
 \r
                // Debugger\r
index ddedc8f..44ba3f7 100644 (file)
@@ -24,6 +24,7 @@
        <file>../../res/tool-op.png</file>\r
        <file>../../res/tool-68k-dis.png</file>\r
        <file>../../res/tool-risc-dis.png</file>\r
+       <file>../../res/tool-hw-regs.png</file>\r
        <file>../../res/generic.png</file>\r
        <file>../../res/cart-blank.png</file>\r
        <file>../../res/label-blank.png</file>\r
index 19bd96a..515223c 100644 (file)
@@ -107,6 +107,7 @@ HEADERS = \
        src/gui/debug/opbrowser.h \\r
        src/gui/debug/riscdasmbrowser.h \\r
        src/gui/debug/stackbrowser.h \\r
+       src/gui/debug/hwregsbrowser.h \\r
        src/debugger/debuggertab.h \\r
        src/debugger/DasmWin.h \\r
        src/debugger/m68kDasmWin.h \\r
@@ -162,6 +163,7 @@ SOURCES = \
        src/gui/debug/opbrowser.cpp \\r
        src/gui/debug/riscdasmbrowser.cpp \\r
        src/gui/debug/stackbrowser.cpp \\r
+       src/gui/debug/hwregsbrowser.cpp \\r
        src/debugger/debuggertab.cpp \\r
        src/debugger/DasmWin.cpp \\r
        src/debugger/m68kDasmWin.cpp \\r