From 1081a838792ca78994c1b16c5b2925e538495300 Mon Sep 17 00:00:00 2001 From: Jean-Paul Mari Date: Tue, 23 Oct 2018 05:17:38 -0400 Subject: [PATCH] Added multiple breakpoints feature and their key bindings --- .../GeneratedFiles/qrc_virtualjaguar.cpp | 414 ++++++++++++++-- Win-VS2017/virtualjaguar.vcxproj | 70 ++- Win-VS2017/virtualjaguar.vcxproj.filters | 51 +- ...j_ReleaseNotes.txt => vj_HistoryNotes.txt} | 465 +++++++++--------- res/debug-breakpoints.png | Bin 0 -> 1560 bytes res/debug-deleteallbreakpoints.png | Bin 0 -> 1771 bytes res/debug-disableallbreakpoints.png | Bin 0 -> 1570 bytes src/debugger/BreakpointsWin.cpp | 157 ++++++ src/debugger/BreakpointsWin.h | 45 ++ src/debugger/NewFnctBreakpointWin.cpp | 125 +++++ src/debugger/NewFnctBreakpointWin.h | 34 ++ src/debugger/brkWin.cpp | 226 --------- src/debugger/brkWin.h | 53 -- src/gui/debug/cpubrowser.cpp | 25 +- src/gui/debug/cpubrowser.h | 13 +- src/gui/keybindingstab.cpp | 6 +- src/gui/keybindingstab.h | 7 +- src/gui/mainwin.cpp | 94 +++- src/gui/mainwin.h | 22 +- src/gui/virtualjaguar.qrc | 3 + src/jaguar.cpp | 145 +++++- src/jaguar.h | 23 +- src/m68000/m68kinterface.h | 10 + virtualjaguar.pro | 6 +- 24 files changed, 1379 insertions(+), 615 deletions(-) rename docs/{vj_ReleaseNotes.txt => vj_HistoryNotes.txt} (94%) create mode 100644 res/debug-breakpoints.png create mode 100644 res/debug-deleteallbreakpoints.png create mode 100644 res/debug-disableallbreakpoints.png create mode 100644 src/debugger/BreakpointsWin.cpp create mode 100644 src/debugger/BreakpointsWin.h create mode 100644 src/debugger/NewFnctBreakpointWin.cpp create mode 100644 src/debugger/NewFnctBreakpointWin.h delete mode 100644 src/debugger/brkWin.cpp delete mode 100644 src/debugger/brkWin.h diff --git a/Win-VS2017/GeneratedFiles/qrc_virtualjaguar.cpp b/Win-VS2017/GeneratedFiles/qrc_virtualjaguar.cpp index 034b169..f13aef4 100644 --- a/Win-VS2017/GeneratedFiles/qrc_virtualjaguar.cpp +++ b/Win-VS2017/GeneratedFiles/qrc_virtualjaguar.cpp @@ -31965,6 +31965,107 @@ static const unsigned char qt_resource_data[] = { 0x43,0x99,0x60,0x4d,0x7a,0x78,0x13,0x73,0x52,0x87,0x7d,0xb4,0xf6,0xc9,0x27,0xff, 0x7,0x6e,0x8,0x77,0x55,0xb3,0x24,0xb6,0xea,0x0,0x0,0x0,0x0,0x49,0x45,0x4e, 0x44,0xae,0x42,0x60,0x82, + // C:/Projects/Emulators/Virtual-Jaguar-Rx/res/debug-breakpoints.png + 0x0,0x0,0x6,0x18, + 0x89, + 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, + 0x0,0x0,0x80,0x0,0x0,0x0,0x80,0x8,0x6,0x0,0x0,0x0,0xc3,0x3e,0x61,0xcb, + 0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,0x0,0x0,0x0, + 0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc,0x61,0x5,0x0,0x0,0x0, + 0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xe,0xc3,0x0,0x0,0xe,0xc3,0x1,0xc7,0x6f, + 0xa8,0x64,0x0,0x0,0x5,0xad,0x49,0x44,0x41,0x54,0x78,0x5e,0xed,0xdd,0x4d,0x68, + 0x1c,0x65,0x1c,0x6,0xf0,0xcc,0xec,0x6e,0x93,0x90,0x56,0xa8,0x7a,0xd0,0x98,0xa4, + 0x35,0x12,0x91,0xfa,0x95,0x88,0x60,0xb1,0x48,0x14,0xc1,0xaf,0x83,0xe2,0xc9,0xf, + 0x10,0xf1,0x68,0xac,0x18,0x50,0x90,0x16,0x15,0x9,0x7e,0xb4,0xa0,0xa6,0x3d,0xd4, + 0x42,0x7b,0x91,0x78,0x10,0xbd,0x8,0x9e,0x4,0x23,0xd2,0x83,0x7,0x45,0xb1,0xd4, + 0x4a,0xab,0x31,0x69,0x4c,0xcd,0x26,0x25,0xd4,0x36,0x4d,0x93,0xec,0x66,0x67,0x76, + 0xec,0xf8,0x7f,0xc0,0x79,0xdf,0x5,0xc7,0xcd,0x4e,0xa6,0xbb,0xf9,0x3f,0x3f,0x78, + 0xe9,0xd3,0x86,0x40,0xa,0xf,0xb3,0xff,0x7d,0xe7,0xdd,0x89,0x73,0xe1,0x62,0x39, + 0x68,0x22,0xb5,0x5c,0xfc,0x49,0x4a,0xb1,0x0,0xca,0xb1,0x0,0xca,0xb1,0x0,0xca, + 0xb1,0x0,0xca,0xb1,0x0,0xca,0xb1,0x0,0xca,0xd5,0xbe,0xf,0xc0,0x5d,0x84,0xfa, + 0xe2,0xe0,0xcf,0xff,0x89,0x57,0x0,0xe5,0x58,0x0,0xe5,0x58,0x0,0xe5,0x12,0x9f, + 0x1,0x16,0x97,0xa,0x48,0x62,0xfc,0xf7,0x5f,0x91,0x44,0xb1,0x70,0x1,0x89,0x56, + 0xa3,0xa3,0xeb,0x66,0x24,0x71,0xed,0x35,0x57,0x22,0x1,0x67,0x0,0xaa,0x6,0xb, + 0xa0,0x1c,0xb,0xa0,0x5c,0xe2,0x33,0x40,0x3e,0x7f,0x1a,0x49,0xec,0x1b,0xde,0x83, + 0x24,0x26,0x27,0x4f,0x21,0xd1,0x6a,0xbc,0xb0,0x73,0x10,0x49,0xf4,0xf7,0x3f,0x80, + 0x4,0x9c,0x1,0xa8,0x1a,0x2c,0x80,0x72,0x2c,0x80,0x72,0x89,0xcf,0x0,0xd3,0xd3, + 0x53,0x48,0xe2,0xfd,0xf7,0xde,0x42,0x12,0x13,0x13,0x13,0x48,0xb4,0x1a,0x83,0x83, + 0x2f,0x23,0x89,0x7b,0xef,0x7b,0x18,0x9,0x38,0x3,0x50,0x35,0x58,0x0,0xe5,0x58, + 0x0,0xe5,0x58,0x0,0xe5,0x58,0x0,0xe5,0x58,0x0,0xe5,0x58,0x0,0xe5,0x58,0x0, + 0xe5,0x58,0x0,0xe5,0x58,0x0,0xe5,0x58,0x0,0xe5,0x52,0xbf,0x17,0x30,0x35,0x65, + 0x7e,0x7d,0xf3,0xe6,0xab,0x90,0x28,0x54,0x28,0x2c,0x23,0x89,0x85,0x5,0xf3,0xc, + 0x25,0xef,0x5,0x50,0xa2,0x58,0x0,0xe5,0x58,0x0,0xe5,0x52,0x9f,0x1,0x7c,0x1f, + 0x1,0xf6,0xee,0x3d,0x80,0x44,0xa1,0x23,0x47,0xbe,0x42,0x12,0x7,0xf,0x7e,0x80, + 0x24,0x38,0x3,0x50,0xa2,0x58,0x0,0xe5,0x58,0x0,0xe5,0xd6,0xbc,0x0,0xb9,0x5c, + 0xce,0x58,0x6d,0x1b,0x37,0x19,0xcb,0x75,0x1c,0x63,0x65,0xb2,0xae,0xb1,0xb2,0x39, + 0xc7,0x5a,0xe1,0xbf,0xfd,0xbb,0x5c,0xf7,0xd2,0xf7,0x45,0xd6,0x3f,0xaf,0x81,0xd1, + 0x45,0xff,0x89,0x57,0x0,0xe5,0x58,0x0,0xe5,0x58,0x0,0xe5,0x12,0xdf,0x7,0x98, + 0x9f,0x3f,0x87,0x24,0x8e,0x1f,0x3f,0x8a,0x24,0x3a,0xbb,0x6e,0x44,0x12,0x5d,0x9d, + 0xd7,0x21,0x25,0xa3,0x6c,0xfd,0x77,0x2,0xeb,0xef,0x9e,0x5f,0x46,0x12,0xf6,0xd7, + 0x2f,0x37,0xee,0x3,0x50,0xaa,0x58,0x0,0xe5,0x58,0x0,0xe5,0x12,0x9f,0x1,0x2a, + 0x94,0x56,0x10,0x20,0x3f,0x8e,0x20,0xbc,0x6f,0xbf,0x41,0x12,0xfe,0x89,0x9f,0x91, + 0x44,0x70,0xde,0x9c,0x29,0x9c,0x4d,0x57,0x20,0x89,0xcc,0x2d,0x7d,0x48,0x22,0xb7, + 0xe3,0x1e,0x24,0x11,0xb4,0xdf,0x80,0x24,0xca,0xd9,0x16,0x24,0xe1,0x97,0xcc,0x99, + 0xc0,0xb7,0x66,0x84,0xb4,0x71,0x6,0xa0,0x54,0xb1,0x0,0xca,0xb1,0x0,0xca,0x25, + 0x3e,0x3,0x4,0xa7,0x7e,0x41,0x12,0xde,0xc8,0x87,0x48,0x62,0xe5,0xb3,0x8f,0x91, + 0x44,0xb0,0x78,0x11,0x29,0x19,0x4e,0x5b,0x1b,0x92,0xc8,0x3e,0xf8,0x18,0x92,0xd8, + 0xf0,0xe2,0x6b,0x48,0xc2,0xb9,0xde,0xdc,0x97,0xf0,0x4a,0x8,0xe0,0x79,0xd6,0x1, + 0x86,0x35,0xc6,0x19,0x80,0x52,0xc5,0x2,0x28,0xc7,0x2,0x28,0x17,0x3b,0x3,0x4, + 0x81,0xf9,0x65,0xc7,0x7e,0x91,0x99,0x31,0x9f,0xfb,0xb7,0x3c,0xf0,0x24,0x92,0xf0, + 0x8f,0xfd,0x84,0x4,0xbe,0x87,0x90,0x12,0xd7,0xec,0x78,0xf6,0xae,0x1d,0x48,0xa2, + 0x65,0xd7,0x3b,0x48,0x22,0xb8,0xf5,0x6e,0x24,0xe1,0xa5,0xbc,0x4f,0xc0,0x19,0x80, + 0x52,0xc5,0x2,0x28,0xc7,0x2,0x28,0x57,0x31,0x3,0xd8,0x3,0x81,0x63,0xbf,0xcf, + 0x3f,0x3d,0x86,0x24,0x8a,0x83,0xcf,0x20,0x9,0xef,0xc7,0xef,0x91,0x1a,0x83,0xdb, + 0xdd,0x83,0x24,0x5a,0x47,0xbe,0x44,0x82,0xf6,0xad,0x8,0xa2,0x54,0x32,0xf7,0x5, + 0xec,0xf3,0x7,0xb5,0xe2,0xc,0x40,0xa9,0x62,0x1,0x94,0x63,0x1,0x94,0xab,0xdc, + 0x7,0xb0,0x5f,0xd2,0x56,0xcc,0xdf,0x1,0x54,0xda,0xff,0x26,0x92,0x28,0x1e,0x1a, + 0x46,0x82,0x92,0xb5,0x99,0xde,0x60,0x36,0x3c,0xf7,0x3c,0x92,0x68,0x7e,0x63,0x1f, + 0x92,0xf0,0xfc,0xc,0x92,0xb0,0x67,0x82,0x5a,0x71,0x6,0xa0,0x54,0xb1,0x0,0xca, + 0xb1,0x0,0xca,0xc5,0xcf,0x0,0xb3,0xe6,0xe7,0xfd,0x97,0x1e,0x37,0xf7,0xd2,0xcb, + 0x33,0xd3,0x48,0xeb,0x83,0xbb,0xd5,0x3c,0x43,0xd8,0x32,0xfc,0x11,0x92,0x70,0x7a, + 0xcd,0x7b,0x5,0xc5,0x82,0x3d,0x3,0xd4,0xb6,0x2f,0xc0,0x19,0x80,0x52,0xc5,0x2, + 0x28,0xc7,0x2,0x28,0x17,0x5b,0x80,0x60,0xea,0x37,0x63,0x95,0x67,0xf3,0xc6,0x5a, + 0x6f,0xca,0x67,0xe7,0xcc,0x35,0x76,0xd2,0x58,0x8e,0xe3,0x18,0x2b,0x3c,0x6e,0x10, + 0x5d,0x8d,0xa6,0x1,0x7f,0x64,0x4a,0x12,0xb,0xa0,0x1c,0xb,0xa0,0x5c,0x6c,0x1, + 0xfc,0xc9,0x71,0x63,0x35,0x85,0x67,0x4,0xa3,0x6b,0xbd,0x9,0x3f,0xa7,0x10,0x59, + 0xe5,0x33,0xb3,0xc6,0xaa,0x10,0x3e,0x97,0x28,0xba,0x1a,0xc,0xaf,0x0,0xca,0xb1, + 0x0,0xca,0xb1,0x0,0xca,0xc5,0x16,0xc0,0x71,0x33,0xc6,0x5a,0xff,0xc2,0xd7,0xf1, + 0xc8,0xba,0xf4,0x5e,0x3f,0xba,0xc2,0x33,0x80,0xd1,0x35,0x33,0x7b,0xce,0x58,0xf9, + 0xd9,0xb9,0x9a,0xd6,0xf9,0xf9,0x5,0x63,0xad,0x35,0x5e,0x1,0x94,0x63,0x1,0x94, + 0x63,0x1,0x94,0x8b,0x3d,0xf,0x10,0x7c,0x37,0x8a,0x24,0x16,0x9f,0x7a,0x8,0x9, + 0xca,0x97,0xf7,0x99,0x3a,0x89,0xb3,0x9e,0x41,0xd4,0xfc,0xba,0x79,0x3f,0xde,0x7f, + 0xf4,0x69,0x24,0x31,0x34,0xb4,0x1b,0x49,0x4c,0x4f,0xff,0x89,0xb4,0x3a,0x2b,0x2b, + 0x45,0x24,0xb1,0xbc,0xb4,0x88,0x24,0x78,0x1e,0x80,0x12,0xc5,0x2,0x28,0xc7,0x2, + 0x28,0x17,0x3f,0x3,0xcc,0x99,0xfb,0xdf,0xcb,0x4f,0xf4,0x23,0x89,0xf2,0x84,0xf9, + 0x59,0xc1,0x46,0x97,0xe9,0xb9,0x9,0x49,0xb4,0x1c,0xf8,0x4,0x49,0xf8,0xdd,0xdb, + 0x90,0xc4,0xe8,0xa8,0xf9,0x59,0xc2,0xd2,0x1a,0x7f,0x2e,0xa2,0xaf,0xef,0xe,0x24, + 0xd1,0xd1,0x61,0x7e,0x76,0x91,0x33,0x0,0x55,0x85,0x5,0x50,0x8e,0x5,0x50,0x2e, + 0xfe,0x73,0x1,0x9e,0xf9,0xac,0x5f,0xef,0xd0,0x1e,0x24,0x51,0xd8,0xff,0x2e,0x12, + 0x14,0xcd,0xf7,0xb1,0x75,0x2f,0xdc,0xe3,0x8f,0x68,0xde,0xf9,0x2a,0x92,0xc8,0xd, + 0xe,0x21,0x41,0x26,0x8b,0x50,0xa7,0x38,0x3,0x50,0x35,0x58,0x0,0xe5,0x58,0x0, + 0xe5,0x2a,0x66,0x80,0xd8,0xe7,0x2,0x9e,0x99,0x44,0x10,0x85,0xdd,0x3,0x48,0xc2, + 0xfb,0xda,0x7a,0xc6,0x4e,0x9d,0xcb,0xf4,0xde,0x89,0x24,0x5a,0xf,0x7f,0x8e,0x24, + 0x82,0xab,0xdb,0x91,0xc0,0x9a,0x19,0xea,0x4d,0xb5,0x3f,0x1e,0xaf,0x0,0xca,0xb1, + 0x0,0xca,0xb1,0x0,0xca,0x55,0xee,0x3,0x58,0xec,0xa3,0xff,0x4e,0x93,0x79,0xff, + 0xdf,0xc9,0x4f,0x20,0x89,0xe5,0x97,0x9e,0x45,0x12,0xde,0xd1,0x1f,0x90,0x20,0xed, + 0x67,0x8,0x65,0xcc,0x73,0x8c,0x99,0xed,0xe6,0xef,0x14,0x6a,0x7e,0xe5,0x6d,0x24, + 0xe1,0xf6,0x6e,0x47,0x82,0x6,0x3c,0xeb,0x5f,0xd,0x5e,0x1,0x94,0x63,0x1,0x94, + 0x63,0x1,0x94,0x8b,0x9d,0x1,0x6c,0xf6,0x3e,0x41,0x38,0x15,0x44,0x65,0xce,0x9a, + 0xcf,0x14,0x2a,0x8e,0x1c,0x46,0x12,0xa5,0x2f,0x3e,0x45,0x12,0xe5,0x3f,0xcc,0x19, + 0xa2,0xea,0x33,0x86,0xd6,0x87,0xf2,0xdd,0xce,0x2d,0x48,0x22,0x77,0xff,0x23,0x48, + 0x22,0x3b,0xb0,0xb,0x49,0x38,0xf6,0xfb,0x7c,0x4b,0x60,0x8d,0x0,0xeb,0x6d,0x22, + 0xe0,0x15,0x40,0x39,0x16,0x40,0x39,0x16,0x40,0xb9,0xaa,0x67,0x0,0x5b,0xc5,0x48, + 0x60,0xdf,0x4b,0xf0,0xcc,0xf3,0x1,0xc1,0xa4,0x75,0x86,0x70,0xec,0x18,0x82,0xf0, + 0x4e,0x98,0xbf,0x77,0x30,0x98,0xff,0xb,0x9,0x36,0x9a,0xe7,0xf6,0xb3,0xdb,0x6e, + 0x47,0x82,0x9e,0xdb,0x10,0x84,0xbb,0xa5,0x1b,0x9,0x5a,0xcd,0xdf,0x2b,0xa8,0x1d, + 0xaf,0x0,0xca,0xb1,0x0,0xca,0xb1,0x0,0xca,0xd5,0x3c,0x3,0xd8,0x2a,0x66,0x2, + 0x4b,0xdc,0xfb,0x68,0xfb,0xdb,0xab,0x7d,0xdf,0x5d,0xb1,0x4f,0x61,0xdd,0x20,0xaf, + 0xf3,0xdb,0xf9,0xa9,0xe3,0x15,0x40,0x39,0x16,0x40,0x39,0x16,0x40,0xb9,0xc4,0x67, + 0x80,0x5a,0xc5,0xbc,0x84,0x53,0xc2,0x78,0x5,0x50,0x8e,0x5,0x50,0x8e,0x5,0x50, + 0xae,0xee,0xa,0x10,0xbe,0xe6,0x47,0x17,0xad,0x2d,0x5e,0x1,0x94,0x63,0x1,0x94, + 0x63,0x1,0x94,0x63,0x1,0x94,0x63,0x1,0x94,0x63,0x1,0x94,0x63,0x1,0x54,0x6b, + 0x6a,0xfa,0x1b,0x6c,0xf5,0x55,0xe9,0x85,0x29,0x3e,0x41,0x0,0x0,0x0,0x0,0x49, + 0x45,0x4e,0x44,0xae,0x42,0x60,0x82, // C:/Projects/Emulators/Virtual-Jaguar-Rx/res/screenshot.png 0x0,0x0,0x1b,0x4b, 0x89, @@ -72281,6 +72382,108 @@ static const unsigned char qt_resource_data[] = { 0x69,0x4,0xf,0xd1,0x3c,0x0,0xf8,0xbd,0x3e,0xcd,0x66,0x15,0xb7,0xbd,0xb3,0xf9, 0x4f,0x9f,0x8d,0xec,0xfc,0x5a,0x0,0xfc,0x1b,0x86,0xab,0xd5,0xc0,0xad,0xe8,0x69, 0xfc,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, + // C:/Projects/Emulators/Virtual-Jaguar-Rx/res/debug-disableallbreakpoints.png + 0x0,0x0,0x6,0x22, + 0x89, + 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, + 0x0,0x0,0x20,0x0,0x0,0x0,0x20,0x8,0x6,0x0,0x0,0x0,0x73,0x7a,0x7a,0xf4, + 0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,0x0,0x0,0x0, + 0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc,0x61,0x5,0x0,0x0,0x0, + 0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xe,0xc3,0x0,0x0,0xe,0xc3,0x1,0xc7,0x6f, + 0xa8,0x64,0x0,0x0,0x5,0xb7,0x49,0x44,0x41,0x54,0x58,0x47,0xc5,0x56,0x6d,0x6c, + 0x93,0x55,0x14,0x7e,0xfa,0xb9,0x96,0xb2,0x8f,0xee,0xb,0x6,0xb,0xeb,0x36,0xdc, + 0x2c,0x4b,0x18,0x63,0x6a,0x47,0x1c,0x3,0x6,0x26,0x33,0x41,0x45,0x85,0x1,0x8e, + 0x88,0xc1,0x8,0x51,0x1,0xa3,0x33,0x18,0x31,0xd1,0x1f,0x6,0x4c,0x14,0x51,0x7e, + 0xf0,0x47,0xd,0x1f,0x41,0x16,0x25,0x1b,0xa,0x91,0x41,0x62,0x8,0xc8,0x6,0xc, + 0xd6,0xd,0xb7,0x31,0x18,0x1b,0xa5,0x4c,0xa4,0xdd,0xf7,0xdc,0x68,0xd7,0x76,0x5d, + 0x5b,0xcf,0xbd,0x7d,0x5b,0xca,0xe8,0xb6,0x96,0x69,0x78,0xd6,0xbd,0xb7,0xef,0x7b, + 0xef,0x7d,0xcf,0x73,0xce,0x79,0xce,0x3d,0x15,0xd,0x5a,0xdc,0x1e,0x3c,0x46,0x88, + 0x85,0x71,0x92,0x20,0x1f,0x44,0x74,0xa5,0xc1,0xc3,0x2f,0xc2,0xe3,0x10,0x30,0xa9, + 0x8,0x30,0x5b,0x3e,0xb8,0x5c,0x6e,0x58,0xad,0x16,0x78,0xdc,0x4e,0x88,0x25,0x11, + 0x50,0x44,0x28,0x20,0x97,0x4b,0xfd,0x5c,0x44,0x44,0x30,0x18,0x26,0x4d,0xc0,0xe1, + 0x18,0x41,0xfd,0x15,0x3d,0xea,0xf5,0x35,0xe8,0xe8,0x30,0xc1,0xed,0xb2,0x43,0x22, + 0x55,0x21,0x26,0x46,0x8d,0x39,0x73,0x32,0xa0,0x5b,0x50,0x84,0xd8,0x18,0x5,0xdc, + 0xb4,0x98,0x91,0x10,0x8d,0x62,0xf2,0x68,0x4,0x68,0x87,0xd3,0xe9,0x82,0xc1,0x78, + 0x1b,0xe5,0x3f,0xff,0x80,0xa6,0xab,0x4d,0x98,0xa2,0x54,0x42,0x35,0x35,0xa,0x32, + 0xb9,0xa,0xce,0x61,0x2b,0x86,0xac,0xf7,0x28,0x22,0x56,0x24,0x24,0x4c,0xc3,0xab, + 0x2b,0xd7,0x40,0x97,0xb7,0x8,0xa,0x85,0x1c,0x62,0xf1,0x24,0x8,0xf0,0x85,0x74, + 0xf1,0xd0,0x16,0x7d,0x7d,0x3,0xf6,0x7d,0xff,0xd,0xfa,0xfb,0x7b,0xe8,0xe5,0x4b, + 0x50,0x50,0xb0,0x10,0x49,0x49,0xc9,0x50,0xaa,0x62,0x61,0xb3,0xf6,0xa1,0xb7,0xb7, + 0x83,0x22,0xd3,0x80,0x53,0x95,0x47,0x21,0x95,0x4a,0xb1,0xfc,0x85,0x55,0x58,0x55, + 0xfc,0x1a,0x98,0x7d,0x51,0x0,0x89,0xf0,0x8,0x8,0x2b,0x8d,0xb7,0xda,0xb0,0x67, + 0xcf,0x97,0xe8,0xed,0xe9,0xc6,0x96,0x2d,0xef,0x63,0x6e,0xb6,0x8e,0xbc,0x53,0x3c, + 0x94,0x67,0xa7,0xd3,0x89,0xc6,0xa6,0x6b,0x38,0x74,0x70,0x2f,0xba,0xba,0x3a,0xf0, + 0xd6,0xc6,0xcd,0x44,0x74,0x19,0x8f,0x82,0x8f,0x44,0x98,0x55,0xe0,0x21,0xb1,0x79, + 0x50,0x76,0x78,0x1f,0x3a,0x3b,0xcc,0x28,0x5e,0xbd,0x8e,0x87,0x56,0xa9,0x7c,0xd8, + 0x38,0x83,0x4c,0x26,0x43,0xce,0xbc,0xb9,0x78,0x65,0xd5,0x7a,0xd2,0x85,0x1c,0x95, + 0x95,0x27,0x70,0xd7,0x64,0xe2,0x3a,0xe0,0xd5,0x42,0x8,0x8f,0x0,0xed,0x31,0xdc, + 0x6c,0x46,0x73,0xf3,0x55,0x64,0x64,0x6a,0x91,0x9f,0xbf,0x44,0x98,0x18,0x1b,0xcc, + 0xdb,0x3c,0x9d,0xe,0xf9,0xcf,0xe6,0xe3,0xb6,0xb1,0x15,0x2d,0x37,0xae,0xf1,0x48, + 0xfa,0xc4,0x18,0x32,0x1,0xdf,0xa6,0xce,0x4e,0x33,0xf7,0x2c,0x3d,0x5d,0x8b,0xe8, + 0xe8,0x58,0x61,0x76,0x7c,0xc8,0x65,0x52,0xcc,0xcd,0xc9,0xe3,0x29,0x31,0xdc,0xbc, + 0x41,0x51,0x1c,0x9,0x2d,0x2,0x6c,0x11,0x5b,0xc7,0x8d,0xb,0xcf,0x72,0x73,0x17, + 0x60,0xc7,0x8e,0x6f,0x49,0x54,0x2f,0x43,0x22,0x9,0x12,0xf7,0x31,0xa0,0xd1,0x64, + 0xf2,0xd1,0x32,0xd8,0x43,0xef,0x73,0xd3,0xfb,0x26,0x88,0x80,0x97,0xa1,0x8,0x3, + 0x83,0x56,0xb4,0x5c,0x6f,0x44,0x75,0xf5,0x19,0x9c,0x3e,0x7d,0xa,0x57,0xea,0x2f, + 0x63,0xc8,0x66,0x21,0x65,0xcb,0xbd,0x55,0x11,0x22,0x2c,0x54,0x92,0xc,0x62,0xf1, + 0x83,0x26,0xa5,0xc2,0x78,0x1f,0xcc,0x63,0x1a,0x86,0x86,0x86,0xc9,0xd8,0x5,0x1c, + 0x3f,0xfe,0x2b,0xfa,0xfb,0xba,0x60,0xb3,0xd9,0xe0,0x76,0x13,0x73,0x4a,0x83,0x4a, + 0x35,0x15,0x9,0x89,0x49,0x28,0x2c,0x5c,0x46,0xaa,0x2e,0xa4,0x94,0xc8,0xbd,0x7b, + 0xc7,0x41,0xfb,0xad,0x26,0x3e,0xaa,0xe3,0x66,0x11,0x9,0x89,0x3f,0xa4,0x41,0xcb, + 0xb0,0xbd,0xdd,0x8c,0xb2,0xb2,0x3,0xa8,0xab,0xfd,0x3,0xd1,0x74,0xa2,0xb1,0x7c, + 0x27,0xcf,0x4c,0xa2,0x43,0x25,0x9e,0xea,0xbb,0xf,0xb7,0xff,0xfa,0x1b,0xed,0xc6, + 0x16,0x74,0x77,0x77,0x63,0x61,0xc1,0x62,0xac,0x5e,0xf3,0x26,0x66,0xce,0x48,0x22, + 0x72,0xc2,0xb,0x46,0xa1,0xb7,0xb7,0x7,0xbb,0x76,0x7d,0x8e,0xe,0xb3,0x9,0x5b, + 0xdf,0xdb,0x86,0x9c,0x9c,0xa7,0xc9,0x49,0x76,0x32,0x8a,0xee,0x47,0x80,0xb3,0x20, + 0x2e,0xf7,0x2c,0x4e,0xec,0xdf,0xb7,0x17,0x8d,0xd,0x97,0xa1,0xd5,0x6a,0xb1,0xb6, + 0x64,0x13,0xd2,0xd2,0xd2,0xa1,0x54,0x44,0xf8,0xd,0x58,0xac,0x76,0xb4,0xb6,0xb6, + 0xe2,0x68,0xc5,0x8f,0xb8,0x70,0xbe,0x8a,0xf7,0x81,0x4d,0x9b,0xb6,0x92,0x28,0x63, + 0xbc,0xb,0x2,0xe0,0x18,0x76,0xe1,0xe4,0xa9,0x93,0x74,0x76,0x18,0xb0,0x68,0xf1, + 0x52,0x64,0x66,0x66,0xf1,0xe7,0xbe,0x2a,0xb8,0x1f,0x1,0xba,0x3a,0x1c,0xe,0x5e, + 0xe3,0x95,0x95,0xc7,0x29,0xb4,0x8b,0xb1,0x61,0xc3,0x3b,0x74,0xbc,0x46,0xf2,0xe9, + 0x60,0x70,0xd1,0xd6,0x5d,0x5f,0xed,0x44,0xcd,0xc5,0xb3,0x28,0x2a,0x2a,0xa2,0x83, + 0xa6,0x94,0xc2,0xeb,0x9d,0x1b,0x26,0xc3,0x5d,0x5d,0x26,0x1c,0x39,0x72,0x90,0x48, + 0x56,0x23,0x45,0x93,0x8a,0xed,0x9f,0x7c,0x8d,0xb8,0xd8,0x29,0xfe,0xf0,0x33,0x8, + 0xcb,0xbd,0x1c,0x8c,0xc6,0x36,0xd4,0xd6,0xd6,0x20,0x71,0xfa,0xc,0x2c,0x7f,0xb1, + 0x64,0x5c,0xe3,0xc,0x12,0xaa,0xf1,0xe2,0xe2,0x12,0x52,0xb8,0x6,0x55,0x55,0x55, + 0x30,0x99,0xda,0xf9,0xf3,0x13,0xbf,0x55,0x60,0xf7,0xee,0x1d,0xf8,0x62,0xe7,0xa7, + 0x38,0x5f,0x5d,0x85,0xf9,0x4f,0x2d,0xc4,0xbb,0x9b,0x3f,0x44,0x2c,0x33,0x3e,0xa, + 0x2,0x1,0x11,0xef,0x56,0xd7,0x5b,0xc,0x30,0x53,0x9e,0x16,0x15,0x14,0x20,0x55, + 0x93,0xec,0x9d,0x9a,0x0,0x29,0x9a,0x14,0xcc,0x9b,0x9f,0x47,0x1e,0x93,0x68,0xaf, + 0xd4,0xf2,0x67,0xd,0xd,0x75,0x68,0x6b,0x6d,0x26,0x7,0xd4,0xd8,0xb2,0x75,0x1b, + 0x4a,0x4b,0x3f,0x46,0x5a,0x6a,0x3a,0xcf,0x7b,0xa0,0xf7,0xc,0x9c,0x0,0x2b,0x39, + 0xb7,0xcb,0x85,0xee,0xae,0x3b,0xfc,0xfb,0xac,0x94,0x39,0x7c,0x32,0x14,0x88,0x29, + 0x97,0xc9,0x24,0x40,0xb9,0x5c,0x4e,0xe4,0xcd,0xfc,0xd9,0x9a,0xb5,0x6f,0xe0,0x83, + 0xd2,0xed,0xd8,0xf6,0xd1,0x67,0x3c,0xef,0x72,0x19,0x59,0xa5,0xf,0x5b,0x3b,0x1a, + 0x9c,0x80,0xf7,0x50,0xf0,0x60,0x64,0xc4,0xce,0x6e,0x11,0x15,0x9d,0xc8,0xc7,0x50, + 0x11,0x19,0x19,0x49,0x87,0x92,0x4,0xc3,0xa4,0x21,0x86,0xb4,0xb4,0xc,0x64,0x65, + 0x65,0x23,0x3e,0x2e,0x9a,0xee,0x48,0xed,0x1,0xdd,0x6f,0x34,0x84,0x14,0x10,0x9, + 0x91,0x18,0x11,0xca,0x78,0xfe,0xdd,0x7c,0xf7,0x3a,0x1f,0x43,0x85,0x99,0x1a,0x13, + 0x13,0x70,0x54,0x54,0x14,0xbf,0xf7,0x87,0x9a,0xfe,0x7d,0x6a,0x1f,0xb,0x7e,0x2, + 0xcc,0x83,0x8c,0x27,0x52,0xa9,0xb3,0x29,0xd1,0xd4,0x58,0x4f,0x39,0x75,0xa,0x33, + 0xe3,0xc3,0x3a,0x44,0x25,0xd9,0x66,0xe4,0x87,0x54,0x66,0xa6,0x90,0xba,0x9,0x8c, + 0x6,0xc2,0x4b,0x40,0x58,0x3f,0x7b,0xf6,0x93,0x48,0xa3,0x43,0x47,0xaf,0xd7,0xe3, + 0x5c,0xd5,0x39,0x5e,0x66,0x13,0xa1,0x4e,0x7f,0x1e,0x7f,0xd2,0x89,0x39,0x7d,0x7a, + 0x12,0xb4,0x59,0xb9,0x5c,0x43,0xa1,0x9b,0xf,0x88,0x0,0xdb,0x38,0x2d,0x31,0x11, + 0x2b,0x56,0xac,0xe0,0xb5,0x7c,0xb4,0xe2,0x10,0x6a,0x2e,0xd5,0xc0,0xee,0x8,0x1e, + 0x9,0xbb,0xdd,0x4e,0xbf,0x8a,0x9a,0x71,0x60,0xff,0x77,0x3c,0x7a,0x2b,0x57,0x6f, + 0x24,0x2d,0x28,0xc3,0xf2,0x9e,0xe1,0x81,0xa3,0x98,0x38,0x50,0x28,0x3d,0x38,0x76, + 0xac,0x2,0xbf,0x54,0x1c,0xe6,0xed,0x73,0xd9,0x73,0x2f,0x41,0xa7,0x9b,0x8f,0xf8, + 0x44,0xd,0xd4,0x6a,0x35,0x6,0x7,0x6,0x48,0x23,0x6,0xd4,0xea,0x2f,0xe1,0xec, + 0x99,0xdf,0x79,0x73,0x29,0x29,0x79,0x1d,0x4b,0xa,0x9f,0xa7,0xdf,0x83,0x11,0xfc, + 0x3d,0xe1,0x70,0x78,0xa8,0x17,0x30,0x2,0x2c,0xff,0x75,0xfa,0x8b,0x28,0x2f,0xff, + 0x9,0x66,0xd3,0x1d,0xae,0x8b,0x8,0x85,0x8a,0x97,0x9a,0x93,0xe6,0x6c,0xb6,0x7b, + 0xbc,0xee,0xd5,0xea,0x38,0xac,0x5b,0xff,0x36,0x72,0x73,0xb2,0x21,0xa5,0x86,0xc4, + 0xd4,0x1e,0x9e,0xff,0x41,0x8,0xf0,0x36,0x4c,0x1f,0xa6,0xde,0xbe,0x7f,0x6c,0xb8, + 0x50,0x7d,0x92,0x44,0x66,0xc0,0x40,0x7f,0x27,0x29,0xdd,0xce,0x49,0xb0,0x8e,0x96, + 0xa5,0x4d,0x47,0xee,0x33,0x5,0x88,0x53,0x47,0x7b,0x55,0x4f,0xa6,0xc3,0x8c,0x3e, + 0x47,0xd0,0x6e,0xc8,0xc0,0x78,0x78,0xbf,0x50,0xbe,0xc9,0xb0,0x7d,0xc8,0x82,0x11, + 0xfa,0x25,0xc3,0xf2,0xad,0x9c,0x12,0x43,0xcd,0x49,0xe6,0x9d,0x7f,0x4,0xa3,0x81, + 0x18,0x93,0x80,0xf,0x3c,0x22,0xcc,0x8,0x1f,0x4,0x6b,0x34,0x70,0xb5,0x3f,0x8a, + 0xcb,0xa3,0xe0,0xaf,0x82,0xb1,0xc0,0x8c,0xf0,0x3f,0x66,0x8c,0xd9,0xf3,0x71,0xf8, + 0xf,0x8c,0x33,0x4c,0x48,0xe0,0xff,0xc6,0x63,0x26,0x0,0xfc,0xb,0x16,0x3b,0x5c, + 0x80,0x54,0xa2,0x16,0x5e,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60, + 0x82, // C:/Projects/Emulators/Virtual-Jaguar-Rx/res/upper-left.png 0x0,0x0,0x1,0xf1, 0x89, @@ -72316,6 +72519,120 @@ static const unsigned char qt_resource_data[] = { 0x83,0x24,0xc0,0xdb,0x7f,0x63,0x20,0x84,0x22,0x40,0x8d,0x7f,0x9f,0xa7,0xb9,0xf7, 0xd7,0x6e,0xaa,0x9b,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, + // C:/Projects/Emulators/Virtual-Jaguar-Rx/res/debug-deleteallbreakpoints.png + 0x0,0x0,0x6,0xeb, + 0x89, + 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, + 0x0,0x0,0x20,0x0,0x0,0x0,0x20,0x8,0x6,0x0,0x0,0x0,0x73,0x7a,0x7a,0xf4, + 0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,0x0,0x0,0x0, + 0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc,0x61,0x5,0x0,0x0,0x0, + 0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xe,0xc3,0x0,0x0,0xe,0xc3,0x1,0xc7,0x6f, + 0xa8,0x64,0x0,0x0,0x6,0x80,0x49,0x44,0x41,0x54,0x58,0x47,0xc5,0x56,0x6b,0x50, + 0x94,0x55,0x18,0x7e,0xf6,0xe,0xbb,0xb0,0x82,0x9,0x2c,0xea,0xa2,0xdc,0x2f,0xa2, + 0x48,0x99,0x5d,0xd0,0x34,0x5,0x49,0x29,0x47,0xc1,0x69,0x34,0x9a,0xb1,0x66,0x6c, + 0xbc,0x84,0x36,0xa3,0x65,0xc6,0x8f,0xd4,0x29,0xcc,0xcb,0x94,0x93,0x8e,0xe6,0x94, + 0x58,0x16,0x36,0x93,0xa1,0x46,0x5a,0x31,0x95,0x33,0x35,0xa5,0x79,0x41,0x1b,0x6e, + 0xa,0x22,0xf7,0xdb,0x82,0x5c,0x6c,0x59,0x6e,0xcb,0xee,0xd2,0x7b,0xce,0xf7,0xed, + 0xc7,0x62,0x60,0x6c,0xfe,0xe8,0x19,0x3e,0xbe,0x73,0xde,0x73,0xbe,0xf3,0x3e,0xe7, + 0x79,0xdf,0xf3,0x9e,0x95,0x99,0x2d,0x8e,0x41,0xfc,0x8f,0x90,0x8b,0x6f,0xc,0x32, + 0x1a,0x2e,0xcf,0x20,0x19,0x46,0x64,0x76,0xcf,0x3c,0x6,0x3e,0x57,0xec,0xb3,0xb6, + 0xd3,0x3e,0x16,0x70,0x2,0xec,0x1b,0x19,0xef,0x12,0xf8,0x4a,0xec,0x2d,0x3e,0x22, + 0xf8,0xb8,0xb3,0xef,0xf4,0xe6,0xd2,0x64,0xe3,0x82,0x73,0x46,0x66,0x88,0x10,0x7b, + 0xb8,0x7d,0x14,0x8,0x21,0xe0,0x13,0x7,0x61,0xa9,0x2e,0x85,0xe9,0x42,0x3e,0x26, + 0x3c,0x32,0x1b,0x3e,0x31,0x9,0x64,0x54,0xf0,0x95,0xd9,0xb0,0x4c,0x5c,0xc3,0x6a, + 0xee,0x44,0x7b,0xc1,0x79,0x4c,0x98,0x35,0x7,0x2a,0xbd,0x1,0x36,0xbb,0x3,0x6d, + 0x77,0x5a,0xd1,0xdc,0xdc,0x88,0xca,0xea,0x26,0xf4,0x74,0x35,0x41,0xa9,0xd6,0xc3, + 0x10,0x38,0x19,0xc1,0x41,0x6,0x4,0x4e,0xa,0x86,0x87,0x46,0x29,0xac,0x21,0xed, + 0x72,0x8,0x12,0x1,0x87,0xcd,0x8a,0x8a,0x63,0x7b,0x70,0xf3,0xc8,0x3e,0x8c,0xb, + 0x8f,0x41,0xfc,0xce,0xfd,0xf0,0x89,0x7a,0x8c,0xa6,0x48,0x51,0x42,0x7f,0x47,0xb, + 0x6a,0x4e,0x65,0x43,0x1f,0x12,0xe,0x43,0x62,0x2a,0x7a,0x7a,0x80,0xf3,0x3f,0xe5, + 0xe1,0x8f,0x4b,0x17,0x51,0x59,0x71,0x3,0xfd,0xfd,0xfd,0xe2,0x4c,0x40,0xa9,0x54, + 0xc2,0x60,0x30,0xe0,0x89,0x84,0x45,0x48,0x4a,0x5c,0x0,0x3f,0x7f,0x3,0xe4,0x4e, + 0x6,0x2e,0x44,0xa4,0xd5,0x65,0xa,0x25,0xf4,0x31,0x31,0xf0,0x98,0xe0,0xf,0x73, + 0x55,0x39,0x6e,0x1e,0xde,0x8b,0x9e,0xa6,0x5a,0x71,0x74,0x10,0xd6,0x6e,0x13,0xd9, + 0xde,0x81,0x5c,0x21,0x47,0xc0,0x9c,0x25,0x18,0xb0,0x2,0xe7,0xbe,0xfd,0xa,0x27, + 0x72,0xb2,0x71,0xa3,0xe4,0xcf,0x61,0xce,0x19,0x6c,0x36,0x1b,0x1a,0x1a,0x1a,0x90, + 0x77,0x26,0x7,0x87,0xf,0x7d,0x80,0xba,0xba,0x6,0x41,0x68,0x61,0x58,0x82,0xe2, + 0xad,0xcc,0xed,0x3b,0xb8,0x4,0x32,0x39,0xbc,0xa7,0x44,0xc0,0x2b,0x38,0x14,0x9d, + 0x25,0xd7,0xd1,0x59,0x7c,0x1d,0xbd,0xad,0x8d,0x8,0x78,0x72,0x21,0xed,0xbc,0xe, + 0xc5,0x7b,0x32,0xa1,0xf4,0xd0,0x21,0xfc,0xe5,0x2d,0x18,0x54,0x7b,0xe2,0xfc,0xcf, + 0xdf,0xe1,0xeb,0x93,0x39,0xa4,0x2,0xc9,0x70,0x1f,0xd8,0xed,0x76,0x98,0x4c,0xcd, + 0xa8,0xaa,0xbc,0x89,0xf8,0xf8,0xd9,0xd0,0xe9,0x74,0x9c,0x84,0x53,0xc,0x4e,0x80, + 0x69,0xc2,0x12,0x45,0x46,0x31,0xf7,0xa,0x8a,0x84,0x6e,0xa2,0x11,0xe6,0xdb,0x37, + 0xd0,0x56,0x70,0x11,0x36,0x4b,0x7,0x1a,0xf2,0x4f,0x63,0xa0,0xab,0x1b,0xb1,0x9b, + 0xb3,0x48,0xa1,0x40,0x14,0x16,0x5e,0xc5,0x17,0x9f,0x67,0xa3,0xb3,0xb3,0x53,0x58, + 0x65,0xc,0xb8,0x7b,0xf7,0x2e,0x39,0x96,0x23,0x3a,0x7a,0x6,0x94,0xa4,0xa2,0x4c, + 0x64,0xc0,0x43,0xc0,0xda,0x72,0x39,0x91,0xe0,0x26,0x20,0x20,0x21,0x19,0x71,0xdb, + 0xf6,0x91,0x22,0x61,0xa8,0x3e,0x73,0x2,0x5d,0x55,0x15,0x88,0xde,0xb4,0x15,0xda, + 0xc0,0x29,0xe8,0x1f,0x70,0x90,0xec,0xc7,0xd1,0xda,0xda,0x2a,0xce,0x1e,0x1b,0x98, + 0x12,0x5,0x57,0x2e,0x50,0x28,0x2a,0xb9,0x73,0xe7,0xc9,0x18,0xca,0x30,0x17,0xb0, + 0x41,0xc7,0x40,0x3f,0xe5,0x85,0xc0,0x52,0x26,0x57,0xc0,0xd1,0x2b,0x7c,0xd0,0xdb, + 0x3b,0x0,0xb5,0x46,0xcd,0xdb,0xee,0x82,0x9d,0x94,0xb2,0xb2,0x5b,0xb0,0x3b,0x1c, + 0x52,0xc,0x24,0x2,0x8c,0x90,0x18,0x16,0xb4,0xfc,0xfe,0x3,0x8a,0xf6,0x65,0xc2, + 0x5c,0x5d,0x81,0xb0,0x95,0x6b,0xe0,0x1d,0x12,0x81,0xf2,0x8f,0x77,0x53,0x52,0xd6, + 0xc0,0x47,0xaf,0x41,0x7a,0xfa,0x6a,0x4,0x6,0x6,0x8a,0xb3,0xc7,0xe,0xb6,0xb1, + 0xa6,0xc6,0x6a,0x4a,0xd0,0x1,0xc1,0x21,0x41,0x20,0x20,0x3a,0x77,0xd0,0x40,0xe3, + 0x8f,0xb9,0x28,0xda,0xb3,0x15,0x96,0xda,0x4a,0x18,0x97,0xac,0x40,0xd4,0xfa,0xed, + 0x98,0x99,0xf9,0x3e,0xb4,0x86,0x49,0xb8,0x75,0x74,0x37,0xac,0x1d,0x26,0x44,0x45, + 0xcd,0xc0,0xda,0x75,0xaf,0x61,0xfa,0xf4,0x38,0x68,0x34,0x1a,0x29,0x9e,0x63,0x81, + 0xa5,0xab,0x3,0x83,0xa4,0x80,0x4c,0xdc,0xee,0x90,0x2,0x64,0x34,0xfd,0x7a,0xe, + 0x45,0x7b,0xb7,0xa2,0xaf,0xad,0x5,0x86,0xa7,0x16,0x22,0x66,0xe3,0xe,0x28,0x3c, + 0x75,0xd0,0xf8,0x5,0x21,0x2e,0x73,0x1f,0xe4,0x9e,0x1e,0xa8,0xc9,0xfd,0x4,0x72, + 0x7b,0x2f,0x65,0xf4,0xa3,0xd8,0xbe,0xf3,0x7d,0xac,0x5b,0xbf,0x11,0xe1,0x11,0xd1, + 0x50,0x28,0xa8,0x68,0x8d,0x1,0x72,0xf9,0xf0,0xa8,0xbb,0x10,0xb0,0xa1,0xeb,0x76, + 0x31,0x1d,0xb9,0x36,0xe8,0x83,0x23,0x11,0xbd,0xf6,0x4d,0x78,0xfa,0x4f,0x42,0x6d, + 0xbd,0x9,0x65,0xe5,0x15,0x80,0xda,0x17,0x91,0xaf,0x6c,0x83,0x4c,0xa5,0x81,0xe9, + 0x97,0xb3,0xfc,0x1b,0x95,0x52,0x86,0xf9,0x4f,0x3f,0x43,0x6a,0x6c,0x26,0x55,0xa6, + 0x71,0xdb,0xbf,0x41,0xef,0x33,0x91,0x6a,0x89,0x52,0xec,0xb9,0x10,0x90,0x2b,0x54, + 0x98,0xbc,0x64,0x15,0x65,0xff,0x6e,0xcc,0xda,0x75,0x4,0xfa,0xf0,0x87,0x61,0xe9, + 0xee,0xc3,0xa1,0x83,0xbb,0x70,0xe0,0xc3,0x5d,0xb8,0x52,0x50,0x4,0xa5,0x77,0x0, + 0x82,0x57,0xbe,0xa,0xd5,0xb8,0x87,0xf8,0xf1,0x64,0x38,0x9d,0xfb,0x25,0x2,0x2, + 0xc,0xd8,0x90,0xf1,0x3a,0x22,0x22,0xa3,0xb8,0x6d,0x34,0xb0,0x70,0x45,0x45,0x46, + 0xf0,0x2a,0x29,0xd4,0x7f,0x91,0x0,0x6f,0x52,0x1c,0x75,0xc6,0x70,0x4,0x3f,0xbf, + 0x1,0x5e,0xa1,0x71,0xb8,0xd3,0xd6,0x8e,0x4f,0x8f,0x1d,0x44,0x79,0x59,0x29,0x1a, + 0x1b,0xea,0x70,0xe4,0x50,0x16,0x7e,0xbb,0x70,0x19,0x76,0xb9,0x1a,0x7e,0x8f,0x27, + 0x43,0xe9,0x35,0x9e,0x7d,0x85,0x93,0x27,0x4f,0x20,0x37,0x37,0x7,0xbe,0x3e,0xbe, + 0x48,0x5b,0xb1,0x1a,0xbe,0xbe,0xbe,0xdc,0x7e,0x2f,0x58,0x9e,0xc4,0xc5,0xc5,0x63, + 0x5a,0xcc,0x34,0xb1,0x24,0xb,0x39,0x20,0x14,0x22,0x6a,0x3b,0xd3,0xc8,0x64,0x6a, + 0xc0,0xb5,0x6b,0x97,0x90,0x97,0x77,0xa,0x57,0x2e,0x5f,0xe4,0xe7,0x97,0xa1,0xaf, + 0xaf,0x17,0xb7,0xa9,0xde,0x2b,0x95,0x72,0x38,0xec,0xfd,0x68,0xa7,0x3c,0x69,0x6b, + 0x33,0x21,0x3f,0xff,0x7b,0x22,0x58,0x8b,0xa9,0x53,0x8c,0x94,0x94,0x33,0xe9,0xfb, + 0x26,0xd4,0xd6,0x54,0x4b,0xe7,0xdc,0x9,0xad,0xd6,0xb,0x2f,0xae,0xce,0x40,0x68, + 0x48,0x8,0x3f,0x81,0xce,0xbc,0x1d,0xfa,0x41,0x42,0xff,0xdb,0x3b,0xfe,0xc2,0x47, + 0x87,0xf7,0xa3,0xb8,0xe8,0x2a,0xac,0x56,0x2b,0x1c,0xec,0xbc,0xde,0x3,0x26,0xa3, + 0x4a,0xa5,0x12,0x7b,0x94,0xd5,0x16,0xb,0x7f,0x87,0x86,0x85,0x23,0xeb,0xbd,0x3, + 0x74,0x29,0x95,0x22,0xeb,0xdd,0xb7,0xa5,0x12,0xcd,0x76,0xae,0xd3,0x79,0x23,0x35, + 0x35,0xd,0xcb,0x96,0xbf,0xc0,0x93,0x90,0xaa,0xbe,0x4,0xa1,0xc9,0x28,0xd0,0x53, + 0x4d,0x97,0x50,0x79,0x59,0x21,0xed,0xb6,0x6f,0x44,0xe7,0xc,0xec,0xd2,0x61,0x4e, + 0x9d,0x8f,0x13,0x4d,0x8d,0x8d,0x28,0x2d,0x29,0x44,0xd0,0xd4,0x58,0xee,0xd0,0x89, + 0xd0,0xb0,0x8,0xac,0x59,0xbb,0x5,0xcf,0x2d,0x5d,0xc9,0xab,0xad,0xab,0x73,0x6, + 0xa1,0x4b,0x72,0xd8,0x49,0xb2,0x9a,0xfa,0x16,0x98,0xcd,0x66,0x6e,0x72,0x17,0x3, + 0x74,0x3d,0x56,0x55,0x96,0x41,0xef,0xa5,0xa2,0x50,0xc4,0x52,0xcd,0x8f,0xc6,0xb2, + 0xb4,0x97,0xb0,0x71,0xd3,0x1b,0x98,0x3b,0x27,0x1,0x6a,0x35,0x65,0xbe,0x53,0x77, + 0x17,0x48,0xbf,0x7,0xac,0xb4,0xc0,0xf1,0xcf,0xb2,0x71,0xee,0x6c,0xae,0x38,0xe4, + 0x1e,0x98,0xd4,0x89,0x49,0x8b,0x91,0x91,0xb1,0x85,0xca,0x75,0xf,0x57,0x50,0xad, + 0xf6,0x80,0x52,0x45,0x19,0x4f,0x9b,0x63,0xe3,0x23,0xf8,0x1f,0x3a,0x86,0xac,0x34, + 0xda,0x6d,0x7d,0x62,0xc7,0x7d,0xf0,0xfb,0x43,0xc,0x9b,0xa7,0xa7,0x16,0x5a,0xba, + 0x76,0x55,0xe4,0x9c,0xc5,0x56,0xc6,0xa4,0x1f,0xc1,0x39,0x83,0x44,0x40,0x26,0x53, + 0xc0,0x43,0xeb,0x27,0xf6,0xdc,0x7,0x4b,0x2e,0xbd,0x5e,0xcf,0xdb,0x4c,0x52,0x5e, + 0x9e,0xd9,0x1f,0xdb,0x39,0xb7,0x8e,0xc,0x89,0x0,0x63,0x1b,0x19,0x39,0x95,0xd8, + 0x7b,0x8a,0x16,0xf7,0xa0,0x56,0x6b,0x28,0xee,0xb1,0x42,0x67,0xb4,0xed,0x8e,0x0, + 0x29,0x9,0x19,0x8c,0xc6,0x10,0x18,0x83,0x42,0x84,0x8e,0x9b,0xf0,0xf3,0xf3,0xa7, + 0x3b,0x21,0x4e,0x88,0xb7,0x68,0x1b,0xb,0x24,0x5,0x98,0x6c,0x6,0x2a,0xa9,0xf3, + 0xe6,0xcd,0xa7,0xdd,0xb8,0x77,0xdf,0x33,0xf9,0x17,0x24,0xa5,0x52,0x15,0xf4,0x72, + 0x6b,0xf7,0xc,0x2e,0x39,0x20,0xe3,0x55,0x6e,0x51,0xf2,0x52,0x22,0xb1,0x70,0x58, + 0xb1,0xb9,0x1f,0x18,0xd9,0x94,0x94,0x67,0xb1,0x28,0x71,0x9e,0x68,0x71,0xf,0x12, + 0x1,0x6,0x56,0x8f,0x58,0x2e,0xac,0x4a,0x5f,0x43,0x44,0x52,0xf8,0xf,0xc8,0xfb, + 0x81,0x39,0x5f,0x9c,0x92,0x8a,0xd4,0xb4,0x74,0x9a,0x4b,0xbb,0x27,0xb8,0x29,0x80, + 0x4b,0x29,0x16,0xc1,0x62,0x48,0x7f,0xe8,0xb6,0x74,0xe1,0xea,0xb5,0x12,0x7c,0x73, + 0xea,0x28,0xea,0xeb,0xeb,0x87,0x55,0x46,0x76,0xf7,0x87,0x50,0x4d,0x4f,0x4a,0x5e, + 0x8e,0x84,0x84,0xb9,0xd0,0x69,0x29,0x71,0x59,0xb6,0xbb,0xe9,0x9c,0xe1,0x1f,0x4, + 0x24,0x90,0x95,0x11,0xb1,0xd1,0x65,0xd4,0x6c,0x6a,0x41,0x53,0x43,0x5,0xba,0xbb, + 0xbb,0xc8,0x99,0xe,0x81,0xc6,0xe9,0x30,0x4e,0x1c,0xcf,0xc3,0xe6,0x3c,0x6e,0xff, + 0x15,0xa3,0x12,0x10,0x6e,0x33,0xb6,0xb2,0x38,0x4c,0x2f,0xee,0x4c,0x68,0x72,0x76, + 0xf,0xea,0x9c,0x61,0x58,0xe,0xb8,0x42,0xd8,0x9d,0xf3,0xcd,0x1b,0x82,0x33,0xb1, + 0x29,0xf5,0x1f,0x8,0xc0,0xdf,0x81,0xe6,0x97,0xc8,0x26,0x97,0x96,0xa9,0x0,0x0, + 0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, // C:/Projects/Emulators/Virtual-Jaguar-Rx/res/tool-op.png 0x0,0x0,0x17,0xf4, 0x89, @@ -74823,6 +75140,12 @@ static const unsigned char qt_resource_name[] = { 0x5,0x1c,0xe9,0x27, 0x0,0x74, 0x0,0x6f,0x0,0x6f,0x0,0x6c,0x0,0x2d,0x0,0x63,0x0,0x70,0x0,0x75,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, + // debug-breakpoints.png + 0x0,0x15, + 0x5,0xdd,0xf,0x27, + 0x0,0x64, + 0x0,0x65,0x0,0x62,0x0,0x75,0x0,0x67,0x0,0x2d,0x0,0x62,0x0,0x72,0x0,0x65,0x0,0x61,0x0,0x6b,0x0,0x70,0x0,0x6f,0x0,0x69,0x0,0x6e,0x0,0x74,0x0,0x73, + 0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, // screenshot.png 0x0,0xe, 0xa,0x70,0xc2,0x7, @@ -74978,11 +75301,23 @@ static const unsigned char qt_resource_name[] = { 0x4,0x94,0x86,0xc7, 0x0,0x77, 0x0,0x72,0x0,0x65,0x0,0x6e,0x0,0x63,0x0,0x68,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, + // debug-disableallbreakpoints.png + 0x0,0x1f, + 0xd,0xee,0x7d,0xc7, + 0x0,0x64, + 0x0,0x65,0x0,0x62,0x0,0x75,0x0,0x67,0x0,0x2d,0x0,0x64,0x0,0x69,0x0,0x73,0x0,0x61,0x0,0x62,0x0,0x6c,0x0,0x65,0x0,0x61,0x0,0x6c,0x0,0x6c,0x0,0x62, + 0x0,0x72,0x0,0x65,0x0,0x61,0x0,0x6b,0x0,0x70,0x0,0x6f,0x0,0x69,0x0,0x6e,0x0,0x74,0x0,0x73,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, // upper-left.png 0x0,0xe, 0x5,0xf,0xe8,0x7, 0x0,0x75, 0x0,0x70,0x0,0x70,0x0,0x65,0x0,0x72,0x0,0x2d,0x0,0x6c,0x0,0x65,0x0,0x66,0x0,0x74,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, + // debug-deleteallbreakpoints.png + 0x0,0x1e, + 0x9,0xc6,0xc5,0xc7, + 0x0,0x64, + 0x0,0x65,0x0,0x62,0x0,0x75,0x0,0x67,0x0,0x2d,0x0,0x64,0x0,0x65,0x0,0x6c,0x0,0x65,0x0,0x74,0x0,0x65,0x0,0x61,0x0,0x6c,0x0,0x6c,0x0,0x62,0x0,0x72, + 0x0,0x65,0x0,0x61,0x0,0x6b,0x0,0x70,0x0,0x6f,0x0,0x69,0x0,0x6e,0x0,0x74,0x0,0x73,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, // tool-op.png 0x0,0xb, 0x4,0x95,0x9c,0xa7, @@ -75007,19 +75342,19 @@ static const unsigned char qt_resource_struct[] = { 0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, // :/res - 0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x32,0x0,0x0,0x0,0x2, + 0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x35,0x0,0x0,0x0,0x2, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, // :/res/power-on-red.png - 0x0,0x0,0x4,0x54,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0xf,0x9c,0x96, + 0x0,0x0,0x4,0x84,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0xf,0xa2,0xb2, 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0xa0, // :/res/upper-right.png 0x0,0x0,0x1,0x3c,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x7,0x46,0x8b, 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0xa3, // :/res/vj_title_small.png - 0x0,0x0,0x5,0x92,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x10,0x8b,0xde, + 0x0,0x0,0x5,0xc2,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x10,0x91,0xfa, 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0xa5, // :/res/debug-memory.png - 0x0,0x0,0x2,0xc2,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x8,0x6f,0x9e, + 0x0,0x0,0x2,0xf2,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x8,0x75,0xba, 0x0,0x0,0x1,0x65,0x8e,0x90,0xe0,0x82, // :/res/test-pattern.jpg 0x0,0x0,0x0,0x30,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x2,0xe4,0x84, @@ -75028,118 +75363,127 @@ static const unsigned char qt_resource_struct[] = { 0x0,0x0,0x0,0xc,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0, 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0x9b, // :/res/help.html - 0x0,0x0,0x6,0x5e,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x11,0xb5,0x97, + 0x0,0x0,0x7,0x14,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x11,0xc8,0xc8, 0x0,0x0,0x1,0x66,0x31,0x6,0xe3,0x3b, // :/res/test-pattern-pal.jpg - 0x0,0x0,0x4,0x96,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0xf,0xc5,0x91, + 0x0,0x0,0x4,0xc6,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0xf,0xcb,0xad, 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0xa1, // :/res/tool-risc-dis.png 0x0,0x0,0x1,0xb8,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x7,0x86,0xbf, 0x0,0x0,0x1,0x65,0x70,0x5a,0xc7,0x8e, // :/res/fullscreen.png - 0x0,0x0,0x3,0xbe,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x9,0x9f,0x26, + 0x0,0x0,0x3,0xee,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x9,0xa5,0x42, 0x0,0x0,0x1,0x65,0x70,0x5,0x8a,0x8c, // :/res/zoom200.png - 0x0,0x0,0x3,0xa2,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x9,0x72,0xd, + 0x0,0x0,0x3,0xd2,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x9,0x78,0x29, 0x0,0x0,0x1,0x65,0x6e,0x11,0x2,0x62, // :/res/wrench.png - 0x0,0x0,0x6,0x6,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x11,0x92,0xa8, + 0x0,0x0,0x6,0x36,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x11,0x98,0xc4, 0x0,0x0,0x1,0x65,0x6e,0x8d,0x95,0xe8, // :/res/tool-op.png - 0x0,0x0,0x6,0x42,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x11,0x9d,0x9f, + 0x0,0x0,0x6,0xf8,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x11,0xb0,0xd0, 0x0,0x0,0x1,0x65,0x70,0x5a,0x83,0x71, // :/res/blur-on.png - 0x0,0x0,0x4,0x7a,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0xf,0xab,0x7b, + 0x0,0x0,0x4,0xaa,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0xf,0xb1,0x97, 0x0,0x0,0x1,0x65,0x6f,0xcd,0x68,0xeb, // :/res/tool-68k-dis.png 0x0,0x0,0x1,0x92,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x7,0x64,0x74, 0x0,0x0,0x1,0x65,0x70,0x59,0x79,0xa6, // :/res/upper-left.png - 0x0,0x0,0x6,0x20,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x11,0x9b,0xaa, + 0x0,0x0,0x6,0x94,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x11,0xa7,0xec, 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0xa2, // :/res/tool-cpu.png 0x0,0x0,0x2,0x1e,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x7,0xb0,0xc2, 0x0,0x0,0x1,0x65,0x70,0x59,0xd6,0x94, // :/res/zoom100.png - 0x0,0x0,0x3,0x6,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x8,0xfa,0x4e, + 0x0,0x0,0x3,0x36,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x9,0x0,0x6a, 0x0,0x0,0x1,0x65,0x6e,0x10,0xa4,0xe6, // :/res/frame-advance.png 0x0,0x0,0x1,0x14,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x7,0x3e,0x4f, 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0x9d, + // :/res/debug-breakpoints.png + 0x0,0x0,0x2,0x3c,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x7,0xca,0x1c, +0x0,0x0,0x1,0x66,0x6a,0xa5,0x70,0xc0, // :/res/debug-stepinto.png 0x0,0x0,0x0,0x56,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x3,0x13,0xbb, 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0xa0, // :/res/power-on-green.png - 0x0,0x0,0x5,0x40,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x10,0x6f,0x8e, + 0x0,0x0,0x5,0x70,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x10,0x75,0xaa, 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0xa0, // :/res/pal.png - 0x0,0x0,0x3,0x8e,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x9,0x40,0x3, + 0x0,0x0,0x3,0xbe,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x9,0x46,0x1f, 0x0,0x0,0x1,0x65,0x70,0x1b,0x2f,0x31, // :/res/unknown-file.png - 0x0,0x0,0x5,0xbc,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x10,0xc1,0xdd, + 0x0,0x0,0x5,0xec,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x10,0xc7,0xf9, 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0xa2, // :/res/zoom300.png 0x0,0x0,0x0,0xf8,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x7,0xf,0xa7, 0x0,0x0,0x1,0x65,0x6e,0x11,0x9f,0xb, // :/res/software.png - 0x0,0x0,0x4,0xc4,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x10,0x23,0xa, + 0x0,0x0,0x4,0xf4,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x10,0x29,0x26, 0x0,0x0,0x1,0x65,0x6f,0xba,0x25,0x7b, // :/res/generic.png - 0x0,0x0,0x2,0xa6,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x8,0x69,0xa1, + 0x0,0x0,0x2,0xd6,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x8,0x6f,0xbd, 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0x9c, // :/res/pause-off.png 0x0,0x0,0x1,0xfe,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x7,0xab,0x7b, 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0x9f, // :/res/blur-off.png - 0x0,0x0,0x3,0x70,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x9,0x2d,0x3d, + 0x0,0x0,0x3,0xa0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x9,0x33,0x59, 0x0,0x0,0x1,0x65,0x6f,0xcc,0x2d,0x33, // :/res/label-blank.png - 0x0,0x0,0x5,0xe2,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x11,0x2a,0xc, + 0x0,0x0,0x6,0x12,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x11,0x30,0x28, 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0x9e, // :/res/cart-blank.png - 0x0,0x0,0x4,0x32,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0xb,0xfa,0xc, + 0x0,0x0,0x4,0x62,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0xc,0x0,0x28, 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0x9c, // :/res/ELF-file.png - 0x0,0x0,0x2,0xe8,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x8,0x75,0x87, + 0x0,0x0,0x3,0x18,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x8,0x7b,0xa3, 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0x9d, + // :/res/debug-deleteallbreakpoints.png + 0x0,0x0,0x6,0xb6,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x11,0xa9,0xe1, +0x0,0x0,0x1,0x66,0x6c,0x28,0x7,0x5, // :/res/debug-watch.png 0x0,0x0,0x0,0xac,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x5,0xb8,0xe, 0x0,0x0,0x1,0x65,0x70,0x2b,0x45,0x73, // :/res/debug-local.png - 0x0,0x0,0x3,0x22,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x9,0x1f,0x8f, + 0x0,0x0,0x3,0x52,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x9,0x25,0xab, 0x0,0x0,0x1,0x65,0x78,0x43,0x3b,0x64, // :/res/screenshot.png - 0x0,0x0,0x2,0x3c,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x7,0xca,0x1c, + 0x0,0x0,0x2,0x6c,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x7,0xd0,0x38, 0x0,0x0,0x1,0x65,0xe2,0x30,0xaa,0x81, // :/res/vj-icon.png 0x0,0x0,0x1,0x60,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x7,0x48,0x9b, 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0xa3, // :/res/power-off.png - 0x0,0x0,0x4,0xe2,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x10,0x29,0x32, + 0x0,0x0,0x5,0x12,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x10,0x2f,0x4e, 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0x9f, // :/res/tool-stack.png - 0x0,0x0,0x2,0x84,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x8,0x59,0xdb, + 0x0,0x0,0x2,0xb4,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x8,0x5f,0xf7, 0x0,0x0,0x1,0x65,0x79,0x79,0x1d,0xe5, // :/res/ntsc.png - 0x0,0x0,0x4,0x1c,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0xb,0xc7,0xbd, + 0x0,0x0,0x4,0x4c,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0xb,0xcd,0xd9, 0x0,0x0,0x1,0x65,0x70,0x17,0x5e,0xb2, // :/res/status.png - 0x0,0x0,0x5,0x26,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x10,0x54,0x6c, + 0x0,0x0,0x5,0x56,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x10,0x5a,0x88, 0x0,0x0,0x1,0x65,0x70,0x52,0xab,0x5c, // :/res/compact-disc.png - 0x0,0x0,0x2,0x5e,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x7,0xe5,0x6b, + 0x0,0x0,0x2,0x8e,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x7,0xeb,0x87, 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0x9c, // :/res/insert.png - 0x0,0x0,0x3,0xe0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x9,0xc8,0xc4, + 0x0,0x0,0x4,0x10,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x9,0xce,0xe0, 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0x9e, // :/res/tool-memory.png - 0x0,0x0,0x5,0x2,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x10,0x38,0x4e, + 0x0,0x0,0x5,0x32,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x10,0x3e,0x6a, 0x0,0x0,0x1,0x65,0x70,0x5a,0x34,0xc0, // :/res/debug-restart.png - 0x0,0x0,0x5,0x6a,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x10,0x7e,0xb4, + 0x0,0x0,0x5,0x9a,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x10,0x84,0xd0, 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0xa0, + // :/res/debug-disableallbreakpoints.png + 0x0,0x0,0x6,0x50,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x11,0xa1,0xc6, +0x0,0x0,0x1,0x66,0x6c,0x39,0x5a,0xf0, // :/res/controller.png - 0x0,0x0,0x3,0xfa,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x9,0xd3,0x89, + 0x0,0x0,0x4,0x2a,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x9,0xd9,0xa5, 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0x9c, // :/res/homebrew-file.png 0x0,0x0,0x0,0xd0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x5,0xbd,0x29, @@ -75151,13 +75495,13 @@ static const unsigned char qt_resource_struct[] = { 0x0,0x0,0x1,0x7c,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x7,0x60,0xf0, 0x0,0x0,0x1,0x65,0x70,0x1e,0xc4,0xa5, // :/res/debug-stepover.png - 0x0,0x0,0x3,0x46,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x9,0x25,0x37, + 0x0,0x0,0x3,0x76,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x9,0x2b,0x53, 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0xa0, // :/res/skunkboard-file.png 0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x3,0x1a,0x27, 0x0,0x0,0x1,0x5f,0xa7,0xb3,0xed,0xa0, // :/res/debug-callstack.png - 0x0,0x0,0x6,0x76,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x12,0x2f,0x54, + 0x0,0x0,0x7,0x2c,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x12,0x42,0x85, 0x0,0x0,0x1,0x65,0x8e,0x7f,0x88,0xdf, }; diff --git a/Win-VS2017/virtualjaguar.vcxproj b/Win-VS2017/virtualjaguar.vcxproj index 24f7707..7a8c8ca 100644 --- a/Win-VS2017/virtualjaguar.vcxproj +++ b/Win-VS2017/virtualjaguar.vcxproj @@ -278,11 +278,12 @@ - + + @@ -299,7 +300,7 @@ true true - + true true @@ -407,6 +408,10 @@ true true + + true + true + true true @@ -477,7 +482,7 @@ true true - + true true @@ -505,7 +510,9 @@ true true - + + true + true true @@ -582,6 +589,10 @@ true true + + true + true + true true @@ -596,23 +607,23 @@ - - Moc%27ing brkWin.h... + + Moc%27ing %(Identity)... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp "$(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 "-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)\." - Moc%27ing brkWin.h... + Moc%27ing %(Identity)... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(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_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\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" - Moc%27ing brkWin.h... + "$(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_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\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" + Moc%27ing %(Identity)... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp "$(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 "-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)\." - Moc%27ing brkWin.h... + Moc%27ing %(Identity)... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(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)\." - $(QTDIR)\bin\moc.exe;%(FullPath) - $(QTDIR)\bin\moc.exe;%(FullPath) - $(QTDIR)\bin\moc.exe;%(FullPath) - $(QTDIR)\bin\moc.exe;%(FullPath) + "$(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)\." + $(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath) + $(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath) + $(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath) + $(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing exceptionvectortablebrowser.h... @@ -687,6 +698,24 @@ .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp "$(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)\." + + $(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath) + Moc%27ing %(Identity)... + .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp + "$(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 "-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)\." + $(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath) + Moc%27ing %(Identity)... + .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp + "$(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_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\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" + $(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath) + Moc%27ing %(Identity)... + .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp + "$(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 "-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)\." + $(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath) + Moc%27ing %(Identity)... + .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp + "$(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)\." + Moc%27ing keybindingstab.h... @@ -1491,7 +1520,7 @@ - + true true @@ -1513,7 +1542,16 @@ + + false + + + false + + + false + false diff --git a/Win-VS2017/virtualjaguar.vcxproj.filters b/Win-VS2017/virtualjaguar.vcxproj.filters index 909a45c..0fea985 100644 --- a/Win-VS2017/virtualjaguar.vcxproj.filters +++ b/Win-VS2017/virtualjaguar.vcxproj.filters @@ -160,9 +160,6 @@ Source Files\debugger - - Source Files\debugger - Source Files\debugger @@ -361,12 +358,6 @@ Generated Files - - Generated Files - - - Generated Files - Generated Files @@ -412,6 +403,24 @@ Source Files\debugger + + Source Files\debugger + + + Generated Files + + + Generated Files + + + Generated Files + + + Generated Files + + + Source Files\debugger + @@ -602,9 +611,6 @@ Docs - - Docs - Docs @@ -626,6 +632,9 @@ Resource Files + + Docs + @@ -685,9 +694,6 @@ Header Files\debugger - - Header Files\debugger - Header Files\debugger @@ -718,6 +724,12 @@ Header Files\debugger + + Header Files\debugger + + + Header Files\debugger + @@ -754,5 +766,14 @@ Resource Files + + Resource Files + + + Resource Files + + + Resource Files + \ No newline at end of file diff --git a/docs/vj_ReleaseNotes.txt b/docs/vj_HistoryNotes.txt similarity index 94% rename from docs/vj_ReleaseNotes.txt rename to docs/vj_HistoryNotes.txt index ccb55e6..af829eb 100644 --- a/docs/vj_ReleaseNotes.txt +++ b/docs/vj_HistoryNotes.txt @@ -1,227 +1,238 @@ -Release 4 (TBD) ---------------- -Git commit: TBD -- -0) The zoom value setting has been fixed in the registry -1) Debugger mode now shares the same alpine rom path setting -2) Local variables window displays register name now -3) Switch to Zlib 1.2.11 static library 64bits for VS 2017 -4) Switch to SDL 1.2.15 static library 64bits for VS 2017 -5) Local variables window displays values from function's parameters -6) Fixed the typedef's name display in Local and Watch variables window -7) Breakpoint may now occur in case of a ROM cartridge writing --- ROM cartridge writing detection follow the alpine "allow writes to cartridge rom"'s flag check --- Alert box will display a message with possibility to pass or not the breakpoint only if this is related to a 8 or 16 bits ROM access -8) Local variables window detects now if a variable is used or not by the code -9) The address provided in the debugger memory windows is now verified to prevent crash --- Wrong address will be displayed in red -10) UI changes --- Added new icons for the exit and status features --- Modified icons for the SP (Stack) browser --- Unified icons sizes depend on their usage (drop down menu and main menu) --- Underline the active M68K line in the disassembly window --- Allow the up/down navigation on the SP (Stack) browser --- Restart function cleans-up the SP (Stack) browser and the heap allocator system --- Fixed the up navigation on the memory window -11) Added some log information for the emulator initialisations -12) Breakpoint will happen in case of writing at unknown memory location --- Alert box will display a message and then the code will stop -13) Added the DRAM size in the emulator status window -14) Debugger sources code clean-up -15) Added a call stack feature -16) Follow platform requirement to prevent source file reading issue -17) UI modifications --- Modified icon for the memory window to make a distinction with the memory browser --- The all watch, and Exception Vector Table windows, can be closed using keyboard --- Renamed the debugger dedicated icons to make a distinction --- Added the call stack window -18) Fixed a crash in the all watch window after loading a new binary without ELF/DWARF information --- Previously used ELF/DWARF information was still accessible -19) Fixed slash/backslash issue, in the Alpine tab, to follow platform requirement -20) Heap allocation window uses the DRAM size limit option and detect if heap allocation shares space with SP (Stack) -21) Added a Jaguar model and BIOS configuration tab -22) Jaguar model and BIOS configuration integration -23) Added LEB128 decoding functions --- It is used for the DWARF decoding information -24) Debugger support improvement --- DWARF support for the enum type (partial), structure and subroutine type --- Debugger can report variable's unsigned char value -25) UI modifications --- Added a status bar, better status report & information display for the heap allocation window --- Added a status bar, better status report & information display for the local variables window --- Added better information display for the exception vectors table window, and added some missing vectors --- Added a status bar, better status report & information display for the call stack window --- Added a status bar, better status report & information display for the all watches window -26) Added screenshot feature --- Not accessible in debugger mode --- Added screenshot editable path in the general tab, and a key binding -27) Minor misspellings fixes -28) DWARF source code directory path clean-up -29) Added a source code files list viewer --- List comes from the DWARF information -30) Check potential variables missing/incomplete description found in the DWARF information --- No crash involved but can help to reduce such as variables duplicate or the blank ones -31) Added a sorting filter in the all watches window -32) Improve source code file reading to avoid additional text/bytes reading -33) Help & content texts updates -34) Fixed a crash legacy issue when emulator launches in Alpine mode without a valid rom -35) Added the support for the used lines source's DWARF structure --- Mostly used to handle missing subprogram's lines information, and missing CU's low/high PC -36) Added the Rx version's contact in the help text -37) Added search paths in case of missing DWARF directories information --- Used to look for the file(s) - -Release 3 (13th November 2017) ------------------------------- -Git commit: b1b673a3b0d19e3c2c45b6590b773b11e45bced7 -- -0) Fixed the windows respawning in the next emulator launch within --alpine or --debugger options -1) Added an Exception Vector Table window -2) Modified the About window to update the credits list in a more appropriate way --- Updated the emulator application credits line -3) Added 'Rx' word to the emulator name -4) Fixed a crash when reading the DWARF information in the case of the DWARF2 format has not been used -5) Added ui, alpine and debugger groups in the settings -6) Added the possibility to erase settings -7) Added the --es-all, --es-ui, --es-alpine and --es-debugger options to erase specific settings -8) Added a key bindings tab and adapted the configuration dialog tabs --- User can modify the key bindings where appropriate --- Key bindings UI is displayed based on the option used (--debugger, -- alpine) -9) Fixed a crash, in Release mode, when the HW labels setting is turn on -10) Solved an interference between the HW labels setting and the one used by the debugger --- The setting is now only the reference used -11) Fixed the SP (Stack) browser UI potential missing data -12) Create a directory for EEPROMs (based on the EEPROMs setting) if it doesn't already exist -13) Keep the scrollbar position in accordance of the M68K PC pointer --- UI displays the source without the need to move down/up the scrollbar -14) Fixed a crash when DWARF information report a source line number exceeding the number of lines present in a source file --- This may come from the linker vlink -15) Improved the .heap section detection to avoid a detection error --- Depend vlink version, .heap section may have an Alloc flag -16) Fixed a crash when DWARF information does references to missing source code files -17) Added a local variables window -18) Project has switched to Visual Studio 2017 and QT 5.9.1 library - -Release 2 (3rd September 2017) ------------------------------- -0) Added some error detections when reading the ELF executable file -1) Added all hardware labels (based on the document scans from the Version 2.4 - June 7, 1995) -2) "Step Over" code function for BSR/JSR functions -3) Added the .debug_ranges detection to avoid a detection error -4) DWARF support --- TAG: Compilation Unit, Subprogram, Variables, Types --- Line numbers, symbols, functions -5) Added an All Watch window for non-local variables -6) Added a heap allocator window based on my own memory allocation functions -7) Added additional 4 memory windows with address input based on hexa, decimal or symbol name -8) Windows refreshing executed only if windows is visible -9) Added a restart function --- Restart only the 68000 program counter to his original set -10) Modified the icons color backgound for the "Step In" and "Step Over" functions -11) Updated the About window to update the credits list -12) 64 bits Release executable -13) Fixed (hacking) the display of the SP (Stack) browser -14) Set the emulator in Halt mode when launched in alpine debug mode without a loaded rom --- Otherwise the 68000 program counter will have a 0 value and will execute the code at this address -15) Added some information in the --help/-h/-? option -16) --debugger option no longer force the log file -17) Added a --dram-max option to extend the DRAM size to 8MB -18) Added the "enter" key support when setting the BPM (Breapoint) -19) Save the windows positions, size and visibilities (show or hide) status --- Such windows will automatically respawn in the next emulator launch - -Release 1 (12th February 2017) ------------------------------- -0) BPM (Breapoint) now stop at the designated address and no longer stop after executing the code -1) Clean-up the tracing / no-tracing flags for better U.I understanding -2) Added SP (Stack) browser -3) User can change now the number of lines of disassembly displayed in the tracing window -4) User can turn on/off the op-codes associated in the disassembly lines displayed in the M68K tracing window -5) Added an emulator status window (GPU status, M68K debugger and tracking status) -6) Added a GPU disassembly tracing window - Display the current PC pointer -7) Added a DSP disassembly tracing window - Display the current PC pointer -8) Added possibility to change refresh rate of browsers when emulation is launched -9) Display partial hardware labels (Internal Memory and Graphics sub-system address space) in the disassembly lines displayed in the M68K tracing window --- Display first the hardware labels (based from the Jag V8 dev. PDF) and then the ones possibly found in the ELF debug symbol -10) Minor U.I cosmetic changes -11) User can turn on/off the hardware labels associated in the disassembly lines displayed in the M68K tracing window --- It doesn't apply to the hardware labels possibly found in the ELF debug symbol - -Release 0 (5th January 2017) ----------------------------- -0) New option --debugger -1) ELF format support -2) ELF debug symbol support -3) "Step Into" code function -4) Menus layout dedicated to the debugger -5) Added a dedicated main window for tracing (M68K) -6) Added a Debugger tab in the config tab -7) Visual Studio 2015 project support -8) libelf-0.8.13 library support -9) 64 bits debug executable only - - -Known issues -============ -1) Video output is not displayed due to my OpenGL / QT5 5.5.1 integration with VS 2015 but solved when using the QT 5.9.1 package for VS 2017 -2) The BPM (Breapoint) remains stuck on his address when user wants to continue the code execution --- Need to trace over the BPM or unset the BPM --- The issue can be prevented if the code doesn't set IRQ, otherwise the IRQ will need to be traced to get back control -3) To support DWARF 2 --- With GCC: the code must be compiled with the -gdwarf-2 option -4) The Local and Watch variables window may display not available type information or empty information --- Such missing information may be included in future release --- The 'const' type may not be reported correctly in the DWARF information -5) The 2MB mirroring is no longer applied in case of --dram-max option usage -6) Stack must reflect the --dram-max option usage otherwise the stack may be corrupted --- The application needs to set the SP (Stack) in accordance -7) The Exception Vector Table window displays only 65 vectors --- Missing vectors may be added in future release -8) User needs to manualy check if the Atari Jaguar executable match his source code files --- Otherwise, source code and assembly may not match or leads to instabilities -9) The emulator needs to be restarted in case of the following actions occur --- Key bindings changes --- BIOS selection changes and without new executable load -10) In the case of a ROM cartridge writing, and with occuring breakpoint, the PC pointer will point at the next instruction and not at the instruction causing the breakpoint -11) Emulator will crash in case of wrong address value provided in the memory browser -12) The RAM access log is limited to the 2MB -13) In various occasions, global variables may be duplicated or without name in the DWARF information --- It may come from the Vlink linker and/or GCC 7.1.0 or 8.2.0 compilation with -gdwarf-2 option - -Cosmetic / UX issues -==================== -1) The SP (Stack) icon color backgound doesn't look similar with the other ones -2) The SP (Stack) browser size always open at a forced size no matter if the size has been changed -3) Not every features have associated key bindings - -Legacy issues/hints -=================== -1) Emulator seems to have easter egg(s) --- The option --yarrr displays a single message and end the application --- Pressing F8, while in the main window, will create an extra message in the log file -2) The --alpine option force the log file but it can be override if --no-log option is set after the --alpine option - -Project information -=================== -1) Code based on the Shamus Hammons source code available via Gethub by the 12th September 2017 (2.1.3 Final) -2) Visual Studio 2015/2017 project support for 64 bits -3) libelf 0.8.13 library 64bits for VS 2015/2017 -4) libdwarf 1.41 library 64bits for VS 2015, cygwin64 and Msys2/MinGW64 -5) QT 5.5.1 library 64bits for VS 2015 -6) QT 5.9.1 library 64bits for VS 2017 -7) Zlib 1.2.8 library 64bits for VS 2015 -8) Zlib 1.2.11 library 64bits for VS 2017 -9) SDL 1.2.15 library 64bits for VS 2015/2017 -10) The original make files have been modified to follow the requirements and modifications -11) The 'Rx' word has been added to the emulator name to make distinction with the official version -12) The project is set at https://github.com/djipi/Virtual-Jaguar-Rx -13) GPLv3 file document has been renamed as LICENSE, to fit better the GitHub requirements --- Text / License terms are the same - - -Download statistics -------------------- -jaguar64eu : 15 downloads for the Release 0 on the 12th Feb, 2017 -jaguar64eu : 18 downloads for the Release 1 on the 21st May, 2017 -No downloads statistics available for the Release 2 -No downloads statistics available for the Release 3 +Release 4 (TBD) +--------------- +Git commit: TBD +- +0) The zoom value setting has been fixed in the registry +1) Debugger mode now shares the same alpine rom path setting +2) Local variables window displays register name now +3) Switch to Zlib 1.2.11 static library 64bits for VS 2017 +4) Switch to SDL 1.2.15 static library 64bits for VS 2017 +5) Local variables window displays values from function's parameters +6) Fixed the typedef's name display in Local and Watch variables window +7) Breakpoint may now occur in case of a ROM cartridge writing +-- ROM cartridge writing detection follow the alpine "allow writes to cartridge rom"'s flag check +-- Alert box will display a message with possibility to pass or not the breakpoint only if this is related to a 8 or 16 bits ROM access +8) Local variables window detects now if a variable is used or not by the code +9) The address provided in the debugger memory windows is now verified to prevent crash +-- Wrong address will be displayed in red +10) UI changes +-- Added new icons for the exit and status features +-- Modified icons for the SP (Stack) browser +-- Unified icons sizes depend on their usage (drop down menu and main menu) +-- Underline the active M68K line in the disassembly window +-- Allow the up/down navigation on the SP (Stack) browser +-- Restart function cleans-up the SP (Stack) browser and the heap allocator system +-- Fixed the up navigation on the memory window +11) Added some log information for the emulator initialisations +12) Breakpoint will happen in case of writing at unknown memory location +-- Alert box will display a message and then the code will stop +13) Added the DRAM size in the emulator status window +14) Debugger sources code clean-up +15) Added a call stack feature +16) Follow platform requirement to prevent source file reading issue +17) UI modifications +-- Modified icon for the memory window to make a distinction with the memory browser +-- The all watch, and Exception Vector Table windows, can be closed using keyboard +-- Renamed the debugger dedicated icons to make a distinction +-- Added the call stack window +18) Fixed a crash in the all watch window after loading a new binary without ELF/DWARF information +-- Previously used ELF/DWARF information was still accessible +19) Fixed slash/backslash issue, in the Alpine tab, to follow platform requirement +20) Heap allocation window uses the DRAM size limit option and detect if heap allocation shares space with SP (Stack) +21) Added a Jaguar model and BIOS configuration tab +22) Jaguar model and BIOS configuration integration +23) Added LEB128 decoding functions +-- It is used for the DWARF decoding information +24) Debugger support improvement +-- DWARF support for the enum type (partial), structure and subroutine type +-- Debugger can report variable's unsigned char value +25) UI modifications +-- Added a status bar, better status report & information display for the heap allocation window +-- Added a status bar, better status report & information display for the local variables window +-- Added better information display for the exception vectors table window, and added some missing vectors +-- Added a status bar, better status report & information display for the call stack window +-- Added a status bar, better status report & information display for the all watches window +26) Added screenshot feature +-- Not accessible in debugger mode +-- Added screenshot editable path in the general tab, and a key binding +27) Minor misspellings fixes +28) DWARF source code directory path clean-up +29) Added a source code files list viewer +-- List comes from the DWARF information +30) Check potential variables missing/incomplete description found in the DWARF information +-- No crash involved but can help to reduce such as variables duplicate or the blank ones +31) Added a sorting filter in the all watches window +32) Improve source code file reading to avoid additional text/bytes reading +33) Help & content texts updates +34) Fixed a crash legacy issue when emulator launches in Alpine mode without a valid rom +35) Added the support for the used lines source's DWARF structure +-- Mostly used to handle missing subprogram's lines information, and missing CU's low/high PC +36) Added the Rx version's contact in the help text +37) Added search paths in case of missing DWARF directories information +-- Used to look for the file(s) +38) Setup CU's low/high PC in case of the DWARF structures doesn't have it +-- Used mostly to allow display the source assembled with vasm +39) Added function name support from ELF structure +40) Added the return address information in the call stack +41) Added multiple breakpoints feature and their key bindings +-- For functions only + +Release 3 (13th November 2017) +------------------------------ +Git commit: b1b673a3b0d19e3c2c45b6590b773b11e45bced7 +- +0) Fixed the windows respawning in the next emulator launch within --alpine or --debugger options +1) Added an Exception Vector Table window +2) Modified the About window to update the credits list in a more appropriate way +-- Updated the emulator application credits line +3) Added 'Rx' word to the emulator name +4) Fixed a crash when reading the DWARF information in the case of the DWARF2 format has not been used +5) Added ui, alpine and debugger groups in the settings +6) Added the possibility to erase settings +7) Added the --es-all, --es-ui, --es-alpine and --es-debugger options to erase specific settings +8) Added a key bindings tab and adapted the configuration dialog tabs +-- User can modify the key bindings where appropriate +-- Key bindings UI is displayed based on the option used (--debugger, -- alpine) +9) Fixed a crash, in Release mode, when the HW labels setting is turn on +10) Solved an interference between the HW labels setting and the one used by the debugger +-- The setting is now only the reference used +11) Fixed the SP (Stack) browser UI potential missing data +12) Create a directory for EEPROMs (based on the EEPROMs setting) if it doesn't already exist +13) Keep the scrollbar position in accordance of the M68K PC pointer +-- UI displays the source without the need to move down/up the scrollbar +14) Fixed a crash when DWARF information report a source line number exceeding the number of lines present in a source file +-- This may come from the linker vlink +15) Improved the .heap section detection to avoid a detection error +-- Depend vlink version, .heap section may have an Alloc flag +16) Fixed a crash when DWARF information does references to missing source code files +17) Added a local variables window +18) Project has switched to Visual Studio 2017 and QT 5.9.1 library + +Release 2 (3rd September 2017) +------------------------------ +0) Added some error detections when reading the ELF executable file +1) Added all hardware labels (based on the document scans from the Version 2.4 - June 7, 1995) +2) "Step Over" code function for BSR/JSR functions +3) Added the .debug_ranges detection to avoid a detection error +4) DWARF support +-- TAG: Compilation Unit, Subprogram, Variables, Types +-- Line numbers, symbols, functions +5) Added an All Watch window for non-local variables +6) Added a heap allocator window based on my own memory allocation functions +7) Added additional 4 memory windows with address input based on hexa, decimal or symbol name +8) Windows refreshing executed only if windows is visible +9) Added a restart function +-- Restart only the 68000 program counter to his original set +10) Modified the icons color backgound for the "Step In" and "Step Over" functions +11) Updated the About window to update the credits list +12) 64 bits Release executable +13) Fixed (hacking) the display of the SP (Stack) browser +14) Set the emulator in Halt mode when launched in alpine debug mode without a loaded rom +-- Otherwise the 68000 program counter will have a 0 value and will execute the code at this address +15) Added some information in the --help/-h/-? option +16) --debugger option no longer force the log file +17) Added a --dram-max option to extend the DRAM size to 8MB +18) Added the "enter" key support when setting the BPM (Breapoint) +19) Save the windows positions, size and visibilities (show or hide) status +-- Such windows will automatically respawn in the next emulator launch + +Release 1 (12th February 2017) +------------------------------ +0) BPM (Breapoint) now stop at the designated address and no longer stop after executing the code +1) Clean-up the tracing / no-tracing flags for better U.I understanding +2) Added SP (Stack) browser +3) User can change now the number of lines of disassembly displayed in the tracing window +4) User can turn on/off the op-codes associated in the disassembly lines displayed in the M68K tracing window +5) Added an emulator status window (GPU status, M68K debugger and tracking status) +6) Added a GPU disassembly tracing window - Display the current PC pointer +7) Added a DSP disassembly tracing window - Display the current PC pointer +8) Added possibility to change refresh rate of browsers when emulation is launched +9) Display partial hardware labels (Internal Memory and Graphics sub-system address space) in the disassembly lines displayed in the M68K tracing window +-- Display first the hardware labels (based from the Jag V8 dev. PDF) and then the ones possibly found in the ELF debug symbol +10) Minor U.I cosmetic changes +11) User can turn on/off the hardware labels associated in the disassembly lines displayed in the M68K tracing window +-- It doesn't apply to the hardware labels possibly found in the ELF debug symbol + +Release 0 (5th January 2017) +---------------------------- +0) New option --debugger +1) ELF format support +2) ELF debug symbol support +3) "Step Into" code function +4) Menus layout dedicated to the debugger +5) Added a dedicated main window for tracing (M68K) +6) Added a Debugger tab in the config tab +7) Visual Studio 2015 project support +8) libelf-0.8.13 library support +9) 64 bits debug executable only + + +Known issues +============ +1) Video output is not displayed due to my OpenGL / QT5 5.5.1 integration with VS 2015 but solved when using the QT 5.9.1 package for VS 2017 +2) The BPM (Breapoint) remains stuck on his address when user wants to continue the code execution +-- Need to trace over the BPM or unset the BPM +-- The issue can be prevented if the code doesn't set IRQ, otherwise the IRQ will need to be traced to get back control +3) DWARF 2 support +-- With GCC: the code must be compiled with the -gdwarf-2 option +4) The Local and Watch variables window may display not available type information or empty information +-- Such missing information may be included in future release +-- The 'const' type may not be reported correctly in the DWARF information +5) The 2MB mirroring is no longer applied in case of --dram-max option usage +6) Stack must reflect the --dram-max option usage otherwise the stack may be corrupted +-- The application needs to set the SP (Stack) in accordance +7) The Exception Vector Table window displays only 65 vectors +-- Missing vectors may be added in future release +8) User needs to manualy check if the Atari Jaguar executable match his source code files +-- Otherwise, source code and assembly may not match or leads to instabilities +9) The emulator needs to be restarted in case of the following actions occur +-- Key bindings changes +-- BIOS selection changes and without new executable load +10) In the case of a ROM cartridge writing, and with occuring breakpoint, the PC pointer will point at the next instruction and not at the instruction causing the breakpoint +11) Emulator will crash in case of wrong address value provided in the memory browser +12) The RAM access log is limited to the 2MB +13) In various occasions, global variables may be duplicated or without name in the DWARF information +-- It may come from the Vlink linker and/or GCC 7.1.0 or 8.2.0 compilation with -gdwarf-2 option +14) Source code disply only assembled code from vasm with option -dwarf +15) After a new breakpoint set, the breakpoint list window is not refreshed +-- User must perform an operation, such code tracing, to see the breakpoints list update +16) Some ASCII characters may be not displayed correctly +-- It depend how the text is displayed, this is related to the QT/HTML encoding done when reading DWARF file + +Cosmetic / UX issues +==================== +1) The SP (Stack) icon color backgound doesn't look similar with the other ones +2) The SP (Stack) browser size always open at a forced size no matter if the size has been changed +3) Not every features have associated key bindings + +Legacy issues/hints +=================== +1) Emulator seems to have easter egg(s) +-- The option --yarrr displays a single message and end the application +-- Pressing F8, while in the main window, will create an extra message in the log file +2) The --alpine option force the log file but it can be override if --no-log option is set after the --alpine option + +Project information +=================== +1) Code based on the Shamus Hammons source code available via Gethub by the 12th September 2017 (2.1.3 Final) +2) Visual Studio 2015/2017 project support for 64 bits +3) libelf 0.8.13 library 64bits for VS 2015/2017 +4) libdwarf 1.41 library 64bits for VS 2015, cygwin64 and Msys2/MinGW64 +5) QT 5.5.1 library 64bits for VS 2015 +6) QT 5.9.1 library 64bits for VS 2017 +7) Zlib 1.2.8 library 64bits for VS 2015 +8) Zlib 1.2.11 library 64bits for VS 2017 +9) SDL 1.2.15 library 64bits for VS 2015/2017 +10) The original make files have been modified to follow the requirements and modifications +11) The 'Rx' word has been added to the emulator name to make distinction with the official version +12) The project is set at https://github.com/djipi/Virtual-Jaguar-Rx +13) GPLv3 file document has been renamed as LICENSE, to fit better the GitHub requirements +-- Text / License terms are the same + + +Download statistics +------------------- +jaguar64eu : 15 downloads for the Release 0 on the 12th Feb, 2017 +jaguar64eu : 18 downloads for the Release 1 on the 21st May, 2017 +No downloads statistics available for the Release 2 +No downloads statistics available for the Release 3 diff --git a/res/debug-breakpoints.png b/res/debug-breakpoints.png new file mode 100644 index 0000000000000000000000000000000000000000..768ab66b7636e3ae2ecb5ee3ae8f524871a86d79 GIT binary patch literal 1560 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qt-46JKCT^vIy;@;l%&5%izVf%3AP2S`QVJoUG z%vfS7H1XHej)aXKA_vzuKRU@T@G)bJM8E_wQO>$83zpelajKqJA+VQY9*gp&W_H(& zSG-mmX8N2}Q@vv5JNZpodfA&F^#>~NvmQU|w`})Md;5x)m)jh;_&5KreSWvI_+gS| zhSJuUKb~G28BU?0tNZv5#J2o;^x*ve&TxjO5nv=VpHXZ&mq*f{@9`5|HWn~;hAm$F zI!&eUt!cOtV>-hsHtq#7+zVnJ89Uh3OL@MLzSpdxrtYtJF>B9;Vgb)D-|ZV%<}j|1 z(rG9HqR#USmoEoNmq&EGKxtb&J@)|4;-1^YgQJ^A|`h5mKUpXgF> zZ;s|1-*AP_GrF}NO4}dHsR(Yl-=K2prkKjZ>1Sph*q+w1rI2kw2qZdG?U-4X*EtH^ zJJIfu^mKFoM3)T}f|`z`b@7Sd@C*+Cyo_*F2Sn zOZWI6fNKpmWWK@Nn7seIy=|LHSMzxV&iBXPPn2rDeYaU9%6*?p)3>!8i$aXPv%dMv zzV#80!^$MaDanjeR^MUY5PvD`%zeg?TmRK2X~;>rHBH(&^In3P&3Btg8Fk6>lRo_6 znY1CjDGK4oqvshmKYRXnx}5p7S29<)2D_e#W%yQbgZl32mD^f!N+_DOMv8extu75nS>r0&du0zHR7fp?;&qe&a zxpUUFpFdfX*P6zGeF*eqw=KUwjd_=f*!(IE&QsIB&$Q~?JkRmUpIw#q_v*i7su-GV zk@ocQ|KGXAN?Y4iW#gVL9V!)a4MNaJv1dLr^Y{JJ{$G?kKehafJm@z4kfU6+a^nU6QKTTeSW?pUTCHiFIWYjTu5)Sp)i51N8nCGtT?DCjR{eIhDX0 z|Mi4K&VJums(1^F`u4;Fvm{^nZnc+#hezl;=7=|o|NBj@{D1$Xze4BJ>GNEL?p>6h zpzt=GBlS#i&&;>a-iu__J%53opNyN( zQhhsDp{Mp|Bp1ChZoAh0>FzmQ52f<|${tGA8@N3!zWuK8PUvNLovZXf)WK2=gm$h< zXNW%Pk#OJp!d%_yxRgTyO&CHMxDK{ zy+Ri5hpRTsH?-22yzl(Z__*z}Ke}GXALm}B&zoc`%hQ4gov;&sv3=E#GelF{r5}E+>7QaRS literal 0 HcmV?d00001 diff --git a/res/debug-deleteallbreakpoints.png b/res/debug-deleteallbreakpoints.png new file mode 100644 index 0000000000000000000000000000000000000000..77589b9afdc1571dac466110cecd85fc34db930b GIT binary patch literal 1771 zcmV;P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D27pOKK~z{r#a3%j zlvNmh_71zSf(b0@qTDZ{NSR&GGzCd1N5N?{nz3eVyo5HRWyX)xDa^~1laA(;SQa*u zp+;IUl`}P^c|jX)3L^L0f?RA_Zp-e{d(QXm$6{b?{^%J#zH{DlzVklkdEfJ%m6@k(0_+@7Yb__(w0^yboJb1SVW}>K=|VmxJTeV{r&yoOhBnr!eB7qiG)Q+ zN?ZUxe*@%B1};RT)ny7L^f58;nBWg{RXJ`R-iw~5T5)s`)@~Eo-ho^pN5GsV7_b88 zzWoX(axLL zCD+ked>y^5jR<&hA?>^l#d|WL^w1&v2#cgQw&akX~GgkMltsaiiB>W5$4-B&{l8}HcJN@@=s%+s~fSKvq+&p6c%2^ z7oTUNv$IoJWem7`_bxe>BRYBpl%%3eWWYnf+HyIO;3gm-AsKPo_K_lCs6KN7T~!r` z-n13kz$xe-aFFcB(c0Q7&K?_>5(QT-P$(+7bLYtz$}ktOLB~Kp<%PgfCRf1GD}2z~ zI{>vt&D-vRos_b&Td+GEQVb*ljF1=>wEX@9iuPr~TwQ^%m22P~5`prMcT-Zz4lFb`cFb_y$NOI6@c0ok*{onOr?S8m$UpEl~RWJPd`IyY$jEvaofK^ z?=z8ViBjyj5RfZWn7m{aW&du>+I0l_@P}dP?!%#jyKvycUAR(E1f_QXf>*u@)wqZF z@nkri`y~Pb4A_wIIwB&YxNS7Ba79H%@G2?Pe~|!hQXF;0a0EZU0bZeTxYO2-Pmdi$ zd08nM8|rZ6P!@i>a2a;F8h(!_L+Lf1eT9=JParop2fjYONL#TQzP`TPelJ*_#Kpy9 zTFf-DBnvqp6e4On)5v6Mz_n|ake7D~S1w=V=a-?cuNSwe-Yb=IIPCpsr#xwEGa*0! zdm>nisZ)%Ulr!o3Ce+qcOXu7Pt=0=KuFgPcNC-cH&b%G^K|=rAJO08)hxenn=qjvM zD;(^+-UBA1N~IEel+_jse}{&JBkR2bbSaf0>)p4d63uq5(|IE`H4V#_zrd4_s=frF z$tciMO_xx4St0GVZ$#$|?9yRQosSbujg2TRDMZlJSnkk?(69)sS-S<#EnUg0t*dhe zp-XbuNwS*y7MRUuZgLj`bUjv8mO<~OqEN(A&5y>iw3o1P(;JvOCjn|TWxi8)7f8Pc zthB)K&$4muY_2%u9+=dLNsEz@v4zTY4_8pF_JC4F8Bd#I<0JSVI)j#t;~TLWGW+@bmMhJ0VVpw`dy+Bn6mk1}drZ z=FO+wxOd+(`4=RmQWf-aYxfK;IUwUzZc*}5BC&8-vAG`@*_4!Lu_$q#XmJk`0R~o& zST3weUqeJv_z%eYfjM8Cl8V%{bec=MC%7qqODPt?Vn~1Jwshg@wGw=D>L}{#>xWfF zcK3%+O;1W*j)a7{&}k`gS+=|BoZ%k?B#@O6vC(DJY-&MMLj}6KyU3XifyU`DP8`p} z<~(ly6{8XmZZo#BI7~0@OlWd;59*v@SPr;C*q!su8-g>jDfJ%+z~6!9m&hiUmZ<;$ N002ovPDHLkV1l=ZHpl<~ literal 0 HcmV?d00001 diff --git a/res/debug-disableallbreakpoints.png b/res/debug-disableallbreakpoints.png new file mode 100644 index 0000000000000000000000000000000000000000..224bebc48b520eb0a002e13d72e6b03bba9ea280 GIT binary patch literal 1570 zcmV+-2Hp9IP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1-D5=K~z{r#a3-> zlT{Rc`ni^}kM0Ww3+p!AEK3+;YDXLc1|~B>MTG&5h`|U^0i!b*G0`6eOcYUm@J9_F zK^7$&3Xwr#2*?Hu)(y8Y7#pQbq}})2XxDaKThG0HTgvFRmT7p_y|?ds?|sj6&Uwx~ z6%AV49y~^fg>jM~A4GJe!NV`Y;}9^Z2ryedxLj^ntrmFPPKYHDP(&yomrMOzL_{zc zCQZQM7(x9NJ?ix}=;$!P?Xp86RUsxujX85Npj%Lc*cb)ew3v|)jbid>1ZaoT>4L#{ z8|6R$fTpWWn4(ldH8lz{xeCreX z2nZ{Ux7x60&zI=!>Bg2V?_+MZj=WPmlxL^YiN>aDICO9?y1F{>*2c|5bQzC=k3^VN z;32VjP3((+dQ2P`OoI#wy_m0H?HwW`otJA0pF(1PBZr`Jzb0F=vZNP ze8^=|%+1N;DKXr5Hn zp|`gOyLNq!4zmec-`j?qoTtf2b~1|YM}V^+F83@>?BBN+jSZKf)oQV}WE0ZT(xFsD z_zhUBcC@y(;%LQ>xNyFT_km5Dwvs4gybA*07})&Be1QDk`Fbrj)|#of{^@U0o&|IdYIl zRwG4|itV3#jkwq;{_ryh%e@?o#x~T})*x~E3@m@KWL)D65~}gy;u2E0231v6Fqzu< z^Ao>SVE67F_+sa$IA2|b`A;pxyPH2mEHgd|0s#^4R@Yk$FjJlu6%-&nutdu!? zG8Bj@m&qhRxm-@<&HUM#wQt~q((Tyx(PupGav52r4_iALoPhUG@L*)b&TbJEoyf;f z5g8dthmr)tq#=g1vdjd_c|X#g_#-?6L3^i z6u!kh%$s2Et1~SU-FA zlSrdON3Yl8T-7;VW)q=Ke;$9*i8+0G60}*lTtlIo4~PKUI4v;|D^{%FwS2VV5Na;f z!0reh3A^1+zlxf1VE=bKdMj6NBrPbz@}A*=qnJ2QC_OlKtOCDO9OmtF*>f*Jr<;%X zL=DtxH3kO;NFxT+>M!B!ncsPHDJgj!OA4Q---8kSJ>hV8s24B-EdO=-izqMu31-tB zu8RnTikF&`=4`fmyzbTNIILU$Hga>aA*F`I)E=JyK?v|ROdqD+zJF}EP<@g_X23vy zCn?>|NwAKVrAD_z<7ASP`=5qeaM0l`X$5it(+1=%}M5+ ze*~j}7?XexJR-~p9|UVOaJ4^*%cJ10g0aAi@IPjZ+4FJu4~#QRNZ|j*V +// +// Who When What +// --- ---------- ----------------------------------------------------------- +// JPM 30/08/2017 Created this file +// JPM Oct./2018 Added the breakpoints features +// + +// STILL TO DO: +// + +#include "debugger/BreakpointsWin.h" +#include "jaguar.h" +#include "debugger/DBGManager.h" + + +// +BreakpointsWindow::BreakpointsWindow(QWidget * parent/*= 0*/) : QWidget(parent, Qt::Dialog), +TableView(new QTableView), +model(new QStandardItemModel), +#ifdef BRK_STATUSBAR +statusbar(new QStatusBar), +#endif +#ifdef BRK_REFRESHBUTTON +refresh(new QPushButton(tr("Refresh"))), +#endif +layout(new QVBoxLayout) +{ + setWindowTitle(tr("Breakpoints")); + + // Refresh feature +#ifdef BRK_REFRESH + QHBoxLayout *hbox1 = new QHBoxLayout; + hbox1->addWidget(refresh); +#endif + + // 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(3); + model->setHeaderData(0, Qt::Horizontal, QObject::tr("Status")); + model->setHeaderData(1, Qt::Horizontal, QObject::tr("Name")); +#ifdef BRK_HITCOUNTS + model->setHeaderData(2, Qt::Horizontal, QObject::tr("Hit Count")); +#endif + // 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); + layout->addWidget(TableView); + + // Status bar +#ifdef BRK_STATUSBAR + layout->addWidget(statusbar); +#endif + // Set layouts +#ifdef BRK_REFRESHBUTTON + layout->addLayout(hbox1); +#endif + setLayout(layout); + // Event setup +#ifdef BRK_REFRESHBUTTON + connect(refresh, SIGNAL(clicked()), this, SLOT(RefreshContents())); +#endif +} + + +// +BreakpointsWindow::~BreakpointsWindow(void) +{ +} + + +// +void BreakpointsWindow::UpdateInfos(void) +{ + char *FuncName; + bool ok; + char Addresse[100]; + + // Display the BPM as first breakpoint + model->setItem(0, 0, new QStandardItem(QString("%1").arg(bpmSaveActive ? "BPM On" : "BPM Off"))); + if (bpmAddress1) + { + sprintf(Addresse, "0x%06X", bpmAddress1); + } + else + { + strcpy(Addresse, "(null)"); + } + model->setItem(0, 1, new QStandardItem(QString("%1").arg((bpmAddress1 && (FuncName = DBGManager_GetSymbolNameFromAdr(bpmAddress1))) ? FuncName : Addresse))); +#ifdef BRK_HITCOUNTS + model->setItem(0, 2, new QStandardItem(QString("%1").arg(bpmHitCounts))); +#endif + + // Display all user breakpoints + for (size_t i = 0; i < brkNbr; i++) + { + if (brkInfo[i].Used) + { + model->setItem((i + 1), 0, new QStandardItem(QString("%1").arg(brkInfo[i].Active ? "On" : "Off"))); + sprintf(Addresse, "0x%06X", brkInfo[i].Adr); + model->setItem((i + 1), 1, new QStandardItem(QString("%1").arg((FuncName = brkInfo[i].Name) ? FuncName : Addresse))); + model->setItem((i + 1), 2, new QStandardItem(QString("%1").arg(brkInfo[i].HitCounts))); + } + } +} + + +// +void BreakpointsWindow::Reset(void) +{ + UpdateTable(true); +} + + +// +void BreakpointsWindow::UpdateTable(bool refresh) +{ + if (refresh) + { + model->setRowCount(0); + model->insertRow(brkNbr + 1); + } +} + + +// +void BreakpointsWindow::RefreshContents(void) +{ + if (isVisible()) + { + UpdateTable(true); + UpdateInfos(); + } +} + + +// +void BreakpointsWindow::keyPressEvent(QKeyEvent * e) +{ + if (e->key() == Qt::Key_Escape) + { + hide(); + } +} + diff --git a/src/debugger/BreakpointsWin.h b/src/debugger/BreakpointsWin.h new file mode 100644 index 0000000..b7d23e8 --- /dev/null +++ b/src/debugger/BreakpointsWin.h @@ -0,0 +1,45 @@ +// +// BreakpointsWin.h: Breakpoints +// +// by Jean-Paul Mari +// + +#ifndef __BREAKPOINTSWIN_H__ +#define __BREAKPOINTSWIN_H__ + +//#define BRK_STATUSBAR // Status bar usage +//#define BRK_REFRESHBUTTON // Refresh button +#define BRK_HITCOUNTS // Support the hit count + +#include +#include + + +class BreakpointsWindow: public QWidget +{ + Q_OBJECT + + public: + BreakpointsWindow(QWidget *parent = 0); + ~BreakpointsWindow(void); + void Reset(void); + void RefreshContents(void); + + public slots: + + protected: + void keyPressEvent(QKeyEvent *); + void UpdateInfos(void); + void UpdateTable(bool refresh); + + private: + QVBoxLayout *layout; +#ifdef BRK_STATUSBAR + QStatusBar *statusbar; +#endif + QTableView *TableView; + QStandardItemModel *model; + QPushButton *refresh; +}; + +#endif // __BREAKPOINTSWIN_H__ diff --git a/src/debugger/NewFnctBreakpointWin.cpp b/src/debugger/NewFnctBreakpointWin.cpp new file mode 100644 index 0000000..a962ded --- /dev/null +++ b/src/debugger/NewFnctBreakpointWin.cpp @@ -0,0 +1,125 @@ +// +// NewFnctBreakpointsWin.cpp - New function breakpoint +// +// by Jean-Paul Mari +// +// JPM = Jean-Paul Mari +// +// Who When What +// --- ---------- ----------------------------------------------------------- +// JPM 10/19/2018 Created this file +// + +// STILL TO DO: +// Set information (name, etc.) for the asm function +// Find a way to refresh the breakpoints list window +// + +#include "debugger/NewFnctBreakpointWin.h" +#include "jaguar.h" +#include "debugger/DBGManager.h" +#include "m68000/m68kinterface.h" +#include "settings.h" + + +// +NewFnctBreakpointWindow::NewFnctBreakpointWindow(QWidget * parent/*= 0*/): QWidget(parent, Qt::Dialog), +layout(new QVBoxLayout), +address(new QLineEdit), +add(new QPushButton(tr("Add"))) +{ + setWindowTitle(tr("New function breakpoint")); + + address->setPlaceholderText("0x, decimal value or symbol name"); + + QHBoxLayout * hbox1 = new QHBoxLayout; + hbox1->addWidget(address); + hbox1->addWidget(add); + + layout->addLayout(hbox1); + setLayout(layout); + + connect(add, SIGNAL(clicked()), this, SLOT(AddBreakpointAddress())); +} + + +// +void NewFnctBreakpointWindow::keyPressEvent(QKeyEvent * e) +{ + if (e->key() == Qt::Key_Escape) + { + hide(); + } + else + { + if (e->key() == Qt::Key_Return) + { + AddBreakpointAddress(); + } + } +} + + +// Add a breakpoint to the address +// Address can be an hexa, decimal or a symbol name +void NewFnctBreakpointWindow::AddBreakpointAddress(void) +{ + bool ok; + size_t len; + QString newAddress; + size_t adr; + S_BrkInfo Brk; + + memset(&Brk, 0, sizeof(Brk)); + QPalette p = address->palette(); + newAddress = address->text(); + + if ((len = newAddress.size())) + { + if ((len > 1) && (newAddress.at(0) == QChar('0')) && (newAddress.at(1) == QChar('x'))) + { + adr = newAddress.toUInt(&ok, 16); + } + else + { + if (!(adr = DBGManager_GetAdrFromSymbolName(newAddress.toLatin1().data()))) + { + adr = newAddress.toUInt(&ok, 10); + } + else + { + ok = true; + } + } + + // Check validity address + if (ok && (adr < 0xffffff)) + { + // Set information based on address + Brk.Name = DBGManager_GetSymbolNameFromAdr(adr); + Brk.Filename = DBGManager_GetFullSourceFilenameFromAdr(adr, &ok); + Brk.NumLine = DBGManager_GetNumLineFromAdr(adr, DBG_TAG_subprogram); + Brk.LineSrc = DBGManager_GetLineSrcFromAdrNumLine(adr, Brk.NumLine); + + // In all cases, consider address as valid + Brk.Adr = adr; + + // Add the breakpoint + if (m68k_brk_add(&Brk)) + { + p.setColor(QPalette::Text, Qt::black); + } + else + { + p.setColor(QPalette::Text, Qt::darkYellow); + } + } + else + { + // Address is not valid + p.setColor(QPalette::Text, Qt::red); + } + + address->setPalette(p); + } +} diff --git a/src/debugger/NewFnctBreakpointWin.h b/src/debugger/NewFnctBreakpointWin.h new file mode 100644 index 0000000..eb6d3cc --- /dev/null +++ b/src/debugger/NewFnctBreakpointWin.h @@ -0,0 +1,34 @@ +// +// NewFnctBreakpointWin.h: New function breakpoint +// +// by Jean-Paul Mari +// + +#ifndef __NEWFNCTBREAKPOINTWIN_H__ +#define __NEWFNCTBREAKPOINTWIN_H__ + +#include +#include + +class NewFnctBreakpointWindow: public QWidget +{ + Q_OBJECT + + public: + NewFnctBreakpointWindow(QWidget * parent = 0); + + public slots: + + protected: + void keyPressEvent(QKeyEvent *); + + protected slots: + void AddBreakpointAddress(void); + + private: + QVBoxLayout *layout; + QLineEdit *address; + QPushButton *add; +}; + +#endif // __NEWFNCTBREAKPOINTWIN_H__ diff --git a/src/debugger/brkWin.cpp b/src/debugger/brkWin.cpp deleted file mode 100644 index 8ad3cc8..0000000 --- a/src/debugger/brkWin.cpp +++ /dev/null @@ -1,226 +0,0 @@ -// -// brkWin.cpp - Breakpoints -// -// by Jean-Paul Mari -// -// JPM = Jean-Paul Mari -// -// Who When What -// --- ---------- ----------------------------------------------------------- -// JPM 30/08/2017 Created this file -// - -// STILL TO DO: -// - -#include "debugger/brkWin.h" -//#include "memory.h" -#include "debugger/DBGManager.h" - - -// -BrkWindow::BrkWindow(QWidget * parent/*= 0*/) : QWidget(parent, Qt::Dialog), - layout(new QVBoxLayout), text(new QTextBrowser), -// layout(new QVBoxLayout), text(new QLabel), -// refresh(new QPushButton(tr("Refresh"))), - address(new QLineEdit) -// go(new QPushButton(tr("Go"))), -// memBase(0), -// NbWatch(0), -// PtrWatchInfo(NULL) -{ - setWindowTitle(tr("Breakpoints window")); - -#if 0 -// address->setInputMask("hhhhhh"); -// QHBoxLayout * hbox1 = new QHBoxLayout; -// hbox1->addWidget(refresh); -// hbox1->addWidget(address); -// hbox1->addWidget(go); - - // Need to set the size as well... -// resize(560, 480); - - QFont fixedFont("Lucida Console", 8, QFont::Normal); -// QFont fixedFont("", 8, QFont::Normal); - fixedFont.setStyleHint(QFont::TypeWriter); - text->setFont(fixedFont); -//// layout->setSizeConstraint(QLayout::SetFixedSize); - setLayout(layout); - - layout->addWidget(text); -// layout->addWidget(refresh); -// layout->addLayout(hbox1); - -// connect(refresh, SIGNAL(clicked()), this, SLOT(RefreshContents())); -// connect(go, SIGNAL(clicked()), this, SLOT(GoToAddress())); -#endif -} - - -// -BrkWindow::~BrkWindow(void) -{ -#if 0 - NbWatch = 0; - free(PtrWatchInfo); -#endif -} - - -// -void BrkWindow::RefreshContents(void) -{ -#if 0 - char string[1024]; -// char buf[64]; - QString WatchAll; - - if (isVisible()) - { - if (!NbWatch) - { - if (NbWatch = DBGManager_GetNbGlobalVariables()) - { - PtrWatchInfo = (WatchInfo *)calloc(NbWatch, sizeof(WatchInfo)); -#ifdef _MSC_VER -#pragma message("Warning: !!! Need to check the memory desalocation for PtrWatchInfo !!!") -#else - #warning "!!! Need to do the memory desalocation for PtrWatchInfo !!!" -#endif // _MSC_VER - - for (uint32_t i = 0; i < NbWatch; i++) - { - PtrWatchInfo[i].PtrVariableName = DBGManager_GetGlobalVariableName(i + 1); - PtrWatchInfo[i].addr = DBGManager_GetExternalVariableAdr(i + 1); - PtrWatchInfo[i].TypeTag = DBGManager_GetExternalVariableTypeTag(i + 1); - if (!strlen(PtrWatchInfo[i].PtrVariableBaseTypeName = DBGManager_GetGlobalVariableTypeName(i + 1))) - { - PtrWatchInfo[i].PtrVariableBaseTypeName = (char *)"N/A"; - } - } - } - } - - for (uint32_t i = 0; i < NbWatch; i++) - { - if (PtrWatchInfo[i].PtrVariableName && PtrWatchInfo[i].PtrVariableBaseTypeName) - { - sprintf(string, "%i : %s | %s | 0x%06X | %s", (i + 1), PtrWatchInfo[i].PtrVariableBaseTypeName, PtrWatchInfo[i].PtrVariableName, PtrWatchInfo[i].addr, (PtrWatchInfo[i].TypeTag & 0x8) ? "" : DBGManager_GetExternalVariableValue(i + 1)); - WatchAll += QString(string); - sprintf(string, "
"); - WatchAll += QString(string); - } - } - - text->clear(); - text->setText(WatchAll); - } -#endif -} - - -// -void BrkWindow::keyPressEvent(QKeyEvent * e) -{ - if (e->key() == Qt::Key_Escape) - { - hide(); - } - else - { - if (e->key() == Qt::Key_PageUp) - { -#if 0 - memBase -= 480; - - if (memBase < 0) - memBase = 0; - - RefreshContents(); -#endif - } - else - { - if (e->key() == Qt::Key_PageDown) - { -#if 0 - memBase += 480; - - if (memBase > (0x200000 - 480)) - memBase = 0x200000 - 480; - - RefreshContents(); -#endif - } - else - { - if (e->key() == Qt::Key_Up || e->key() == Qt::Key_Minus) - { -#if 0 - memBase -= 16; - - if (memBase < 0) - memBase = 0; - - RefreshContents(); -#endif - } - else - { - if (e->key() == Qt::Key_Down || e->key() == Qt::Key_Equal) - { -#if 0 - memBase += 16; - - if (memBase > (0x200000 - 480)) - memBase = 0x200000 - 480; - - RefreshContents(); -#endif - } - else - { - if (e->key() == Qt::Key_Return) - { - GoToAddress(); - } - } - } - } - } - } -} - - -// -void BrkWindow::RefreshBrkList(size_t Address) -{ -} - - -// Go to the requested address -// Address can be an hexa, decimal or a symbol name -void BrkWindow::GoToAddress(void) -{ - size_t Address; - bool ok; - QString newAddress; - - newAddress = address->text(); - - if ((newAddress.at(0) == QChar('0')) && (newAddress.at(1) == QChar('x'))) - { - Address = newAddress.toUInt(&ok, 16); - } - else - { - if (!(Address = DBGManager_GetAdrFromSymbolName(newAddress.toLatin1().data()))) - { - Address = newAddress.toUInt(&ok, 10); - } - } - - RefreshBrkList(Address); -} - diff --git a/src/debugger/brkWin.h b/src/debugger/brkWin.h deleted file mode 100644 index dd3b085..0000000 --- a/src/debugger/brkWin.h +++ /dev/null @@ -1,53 +0,0 @@ -// -// brkWin.h: Breakpoints -// -// by Jean-Paul Mari -// - -#ifndef __BRKWIN_H__ -#define __BRKWIN_H__ - -#include -#include - - -class BrkWindow: public QWidget -{ - Q_OBJECT - - // - struct BrkInfo - { - size_t Adr; - bool IsActive; - bool IsReached; - size_t NbrHit; - }S_BrkInfo; - - public: - BrkWindow(QWidget *parent = 0); - ~BrkWindow(void); - - public slots: -// void DefineAllKeys(void); - void RefreshContents(void); - void RefreshBrkList(size_t Adress); - void GoToAddress(void); - - protected: - void keyPressEvent(QKeyEvent *); - - private: - QVBoxLayout *layout; -// QTextBrowser * text; -// QLabel *text; - QTextBrowser *text; -// QPushButton *refresh; - QLineEdit *address; -// QPushButton *go; -// BrkInfo *PtrBrkInfo; -// int32_t memBase; -// size_t NbBrk; -}; - -#endif // __BRKWIN_H__ diff --git a/src/gui/debug/cpubrowser.cpp b/src/gui/debug/cpubrowser.cpp index 864e4f0..a2c9c8e 100644 --- a/src/gui/debug/cpubrowser.cpp +++ b/src/gui/debug/cpubrowser.cpp @@ -11,6 +11,7 @@ // --- ---------- ----------------------------------------------------------- // JLH 08/14/2012 Created this file // JPM 08/09/2017 Added windows display detection in order to avoid the refresh +// JPM 10/13/2018 Added BPM hit counts // // STILL TO DO: @@ -268,10 +269,32 @@ void CPUBrowserWindow::UnholdBPM(void) } +// Disable BPM +void CPUBrowserWindow::DisableBPM(void) +{ + // Uncheck the BPM checkbox and handle BPM + if (bpm->checkState()) + { + bpm->setCheckState(Qt::Unchecked); + } + HandleBPM(false); +} + + +// BPM reset +// Disable checkbox and breakpoint address +void CPUBrowserWindow::ResetBPM(void) +{ + DisableBPM(); + bpmAddress->setText(""); +} + + // Toggle breakpoint set void CPUBrowserWindow::HandleBPM(bool state) { bpmSaveActive = bpmActive = state; + bpmHitCounts = 0; if (bpmActive) { @@ -284,7 +307,7 @@ void CPUBrowserWindow::HandleBPM(bool state) } -// Breakpoint address set +// Breakpoint address set and reset the hit counts void CPUBrowserWindow::HandleBPMAddress(const QString & newText) { bool ok; diff --git a/src/gui/debug/cpubrowser.h b/src/gui/debug/cpubrowser.h index fb8342f..f8c95da 100644 --- a/src/gui/debug/cpubrowser.h +++ b/src/gui/debug/cpubrowser.h @@ -17,16 +17,19 @@ class CPUBrowserWindow: public QWidget public: CPUBrowserWindow(QWidget * parent = 0); - + void DisableBPM(void); + void ResetBPM(void); + void HoldBPM(void); + void UnholdBPM(void); public slots: -// void DefineAllKeys(void); void RefreshContents(void); + void HandleBPMContinue(void); + + private slots: +// void DefineAllKeys(void); void HandleBPM(bool); void HandleBPMAddress(const QString &); - void HandleBPMContinue(void); - void HoldBPM(void); - void UnholdBPM(void); protected: void keyPressEvent(QKeyEvent *); diff --git a/src/gui/keybindingstab.cpp b/src/gui/keybindingstab.cpp index 2757bc9..6ec0cba 100644 --- a/src/gui/keybindingstab.cpp +++ b/src/gui/keybindingstab.cpp @@ -9,6 +9,7 @@ // --- ---------- ------------------------------------------------------------ // JPM 09/10/2017 Created this file // JPM Sept./2018 Added screenshot key bindings +// JPM 10/13/2018 Added breakpoints features // @@ -28,7 +29,10 @@ KeyBindings KeyBindingsTable[KB_END] = { { KB_TYPEGENERAL, "KB_Screenshot", "Screenshot", "Screenshot key binding", "F8", NULL, NULL }, { KB_TYPEDEBUGGER, "KB_Restart", "Restart", "Restart key binding", "Ctrl+Shift+F5", NULL, NULL }, { KB_TYPEDEBUGGER, "KB_StepInto", "Step Into", "Step into key binding", "F11", NULL, NULL }, - { KB_TYPEDEBUGGER, "KB_StepOver", "Step Over", "Step over key binding", "F10", NULL, NULL } + { KB_TYPEDEBUGGER, "KB_StepOver", "Step Over", "Step over key binding", "F10", NULL, NULL }, + { KB_TYPEDEBUGGER, "KB_FunctionBreakpoint", "Function Breakpoint", "Function breakpoint binding", "Ctrl+B", NULL, NULL }, + { KB_TYPEDEBUGGER, "KB_Breakpoints", "Breakpoints", "Breakpoints binding", "Ctrl+Alt+B", NULL, NULL }, + { KB_TYPEDEBUGGER, "KB_DeleteAllBreakpoints", "Delete All Breakpoints", "Delete all breakpoints binding", "Ctrl+Shift+F9", NULL, NULL } }; diff --git a/src/gui/keybindingstab.h b/src/gui/keybindingstab.h index 58fa3d4..1578075 100644 --- a/src/gui/keybindingstab.h +++ b/src/gui/keybindingstab.h @@ -35,11 +35,14 @@ enum KBEMUSTATUS, KBPAUSE, KBFRAMEADVANCE, + KBFULLSCREEN, + KBSCREENSHOT, KBRESTART, KBSTEPINTO, KBSTEPOVER, - KBFULLSCREEN, - KBSCREENSHOT, + KBFUNCTIONBREAKPOINT, + KBBREAKPOINTS, + KBDELETEALLBREAKPOINTS, KB_END }; diff --git a/src/gui/mainwin.cpp b/src/gui/mainwin.cpp index 9b03922..031e6e3 100644 --- a/src/gui/mainwin.cpp +++ b/src/gui/mainwin.cpp @@ -20,7 +20,7 @@ // JPM 11/04/2017 Added the local window // JPM 08/31/2018 Added the call stack window // JPM Sept./2018 Added the new Models and BIOS handler, a screenshot feature and source code files browsing -// JPM 10/10/2018 Added search paths in the settings +// JPM Oct./2018 Added search paths in the settings, breakpoints feature // // FIXED: @@ -91,7 +91,8 @@ #include "debugger/GPUDasmWin.h" #include "debugger/DSPDasmWin.h" #include "debugger/memory1browser.h" -//#include "debugger/brkWin.h" +#include "debugger/BreakpointsWin.h" +#include "debugger/NewFnctBreakpointWin.h" #include "debugger/FilesrcListWin.h" #include "debugger/exceptionvectortablebrowser.h" #include "debugger/allwatchbrowser.h" @@ -194,7 +195,8 @@ MainWin::MainWin(bool autoRun): running(true), powerButtonOn(false), allWatchBrowseWin = new AllWatchBrowserWindow(this); LocalBrowseWin = new LocalBrowserWindow(this); heapallocatorBrowseWin = new HeapAllocatorBrowserWindow(this); - //brkWin = new BrkWindow(this); + BreakpointsWin = new BreakpointsWindow(this); + NewFunctionBreakpointWin = new NewFnctBreakpointWindow(this); exceptionvectortableBrowseWin = new ExceptionVectorTableBrowserWindow(this); CallStackBrowseWin = new CallStackBrowserWindow(this); @@ -391,7 +393,7 @@ MainWin::MainWin(bool autoRun): running(true), powerButtonOn(false), traceStepOverAct->setDisabled(true); connect(traceStepOverAct, SIGNAL(triggered()), this, SLOT(DebuggerTraceStepOver())); - // Trace into trace + // Trace into tracing traceStepIntoAct = new QAction(QIcon(":/res/debug-stepinto.png"), tr("&Step Into"), this); traceStepIntoAct->setShortcut(QKeySequence(tr(vjs.KBContent[KBSTEPINTO].KBSettingValue))); traceStepIntoAct->setShortcutContext(Qt::ApplicationShortcut); @@ -399,9 +401,18 @@ MainWin::MainWin(bool autoRun): running(true), powerButtonOn(false), traceStepIntoAct->setDisabled(true); connect(traceStepIntoAct, SIGNAL(triggered()), this, SLOT(DebuggerTraceStepInto())); - //newBreakpointFunctionAct = new QAction(QIcon(""), tr("&Function Breakpoint"), this); - //newBreakpointFunctionAct->setShortcut(QKeySequence(tr("Ctrl+B"))); - //connect(newBreakpointFunctionAct, SIGNAL(triggered()), this, SLOT(NewBreakpointFunction())); + // Function breakpoint + newFunctionBreakpointAct = new QAction(QIcon(""), tr("&Function Breakpoint"), this); + newFunctionBreakpointAct->setShortcut(QKeySequence(tr(vjs.KBContent[KBFUNCTIONBREAKPOINT].KBSettingValue))); + connect(newFunctionBreakpointAct, SIGNAL(triggered()), this, SLOT(ShowNewFunctionBreakpointWin())); + BreakpointsAct = new QAction(QIcon(":/res/debug-breakpoints.png"), tr("&Breakpoints"), this); + BreakpointsAct->setShortcut(QKeySequence(tr(vjs.KBContent[KBBREAKPOINTS].KBSettingValue))); + connect(BreakpointsAct, SIGNAL(triggered()), this, SLOT(ShowBreakpointsWin())); + deleteAllBreakpointsAct = new QAction(QIcon(":/res/debug-deleteallbreakpoints.png"), tr("&Delete All Breakpoints"), this); + deleteAllBreakpointsAct->setShortcut(QKeySequence(tr(vjs.KBContent[KBDELETEALLBREAKPOINTS].KBSettingValue))); + connect(deleteAllBreakpointsAct, SIGNAL(triggered()), this, SLOT(DeleteAllBreakpoints())); + disableAllBreakpointsAct = new QAction(QIcon(":/res/debug-disableallbreakpoints.png"), tr("&Disable All Breakpoints"), this); + connect(disableAllBreakpointsAct, SIGNAL(triggered()), this, SLOT(DisableAllBreakpoints())); //VideoOutputAct = new QAction(tr("Output Video"), this); //VideoOutputAct->setStatusTip(tr("Shows the output video window")); @@ -512,6 +523,7 @@ MainWin::MainWin(bool autoRun): running(true), powerButtonOn(false), if (vjs.softTypeDebugger) { debugWindowsMenu = debugMenu->addMenu(tr("&Windows")); + debugWindowsMenu->addAction(BreakpointsAct); debugWindowExceptionMenu = debugWindowsMenu->addMenu(tr("&Exception")); debugWindowExceptionMenu->addAction(exceptionVectorTableBrowseAct); debugWindowsMenu->addSeparator(); @@ -548,11 +560,11 @@ MainWin::MainWin(bool autoRun): running(true), powerButtonOn(false), debugMenu->addSeparator(); debugMenu->addAction(traceStepIntoAct); debugMenu->addAction(traceStepOverAct); -#if 0 debugMenu->addSeparator(); debugNewBreakpointMenu = debugMenu->addMenu(tr("&New Breakpoint")); - debugNewBreakpointMenu->addAction(newBreakpointFunctionAct); -#endif + debugNewBreakpointMenu->addAction(newFunctionBreakpointAct); + debugMenu->addAction(deleteAllBreakpointsAct); + debugMenu->addAction(disableAllBreakpointsAct); //debugMenu->addSeparator(); //debugMenu->addAction(DasmAct); } @@ -607,6 +619,8 @@ MainWin::MainWin(bool autoRun): running(true), powerButtonOn(false), debuggerbar->addSeparator(); debuggerbar->addAction(traceStepIntoAct); debuggerbar->addAction(traceStepOverAct); + debuggerbar->addSeparator(); + debuggerbar->addAction(BreakpointsAct); } if (vjs.hardwareTypeAlpine) @@ -1196,6 +1210,7 @@ void MainWin::TogglePowerState(void) WriteLog("GUI: Resetting Jaguar...\n"); JaguarReset(); + DeleteAllBreakpoints(); DebuggerResetWindows(); DACPauseAudioThread(false); } @@ -1258,6 +1273,7 @@ void MainWin::ToggleRunState(void) } cpuBrowseWin->UnholdBPM(); + BreakpointsWin->RefreshContents(); } // Pause/unpause any running/non-running threads... @@ -1440,10 +1456,36 @@ void MainWin::ToggleCDUsage(void) // -void MainWin::NewBreakpointFunction(void) +void MainWin::ShowBreakpointsWin(void) +{ + BreakpointsWin->show(); + BreakpointsWin->RefreshContents(); +} + + +// +void MainWin::DeleteAllBreakpoints(void) +{ + cpuBrowseWin->ResetBPM(); + m68k_brk_reset(); + ShowBreakpointsWin(); +} + + +// +void MainWin::DisableAllBreakpoints(void) +{ + cpuBrowseWin->DisableBPM(); + m68k_brk_disable(); + ShowBreakpointsWin(); +} + + +// +void MainWin::ShowNewFunctionBreakpointWin(void) { - //brkWin->show(); - //brkWin->RefreshContents(); + NewFunctionBreakpointWin->show(); + ShowBreakpointsWin(); } @@ -1461,7 +1503,7 @@ void MainWin::DebuggerTraceStepInto(void) } -// Restart +// Restart the Jaguar executable void MainWin::DebuggerRestart(void) { #if 1 @@ -1471,7 +1513,8 @@ void MainWin::DebuggerRestart(void) m68k_set_reg(M68K_REG_SP, vjs.DRAM_size); #endif m68k_set_reg(M68K_REG_A6, 0); - + m68k_brk_hitcounts_reset(); + bpmHitCounts = 0; DebuggerResetWindows(); DebuggerRefreshWindows(); #ifdef _MSC_VER @@ -1980,6 +2023,19 @@ void MainWin::ReadUISettings(void) size = settings.value("CallStackBrowseWinSize", QSize(400, 400)).toSize(); CallStackBrowseWin->resize(size); + // Breakpoints UI information + pos = settings.value("BreakpointsWinPos", QPoint(200, 200)).toPoint(); + BreakpointsWin->move(pos); + settings.value("BreakpointsWinIsVisible", false).toBool() ? ShowBreakpointsWin() : void(); + size = settings.value("BreakpointsWinSize", QSize(400, 400)).toSize(); + BreakpointsWin->resize(size); + // New function breakpoint UI information + pos = settings.value("NewFunctionBreakpointWinPos", QPoint(200, 200)).toPoint(); + NewFunctionBreakpointWin->move(pos); + settings.value("NewFunctionBreakpointWinIsVisible", false).toBool() ? ShowNewFunctionBreakpointWin() : void(); + size = settings.value("NewFunctionBreakpointWinSize", QSize(400, 400)).toSize(); + NewFunctionBreakpointWin->resize(size); + // Memories browser UI information for (i = 0; i < vjs.nbrmemory1browserwindow; i++) { @@ -2180,6 +2236,12 @@ void MainWin::WriteUISettings(void) settings.setValue("CallStackBrowseWinPos", CallStackBrowseWin->pos()); settings.setValue("CallStackBrowseWinIsVisible", CallStackBrowseWin->isVisible()); settings.setValue("CallStackBrowseWinSize", CallStackBrowseWin->size()); + settings.setValue("BreakpointsWinPos", BreakpointsWin->pos()); + settings.setValue("BreakpointsWinIsVisible", BreakpointsWin->isVisible()); + settings.setValue("BreakpointsWinSize", BreakpointsWin->size()); + settings.setValue("NewFunctionBreakpointWinPos", NewFunctionBreakpointWin->pos()); + settings.setValue("NewFunctionBreakpointWinIsVisible", NewFunctionBreakpointWin->isVisible()); + settings.setValue("NewFunctionBreakpointWinSize", NewFunctionBreakpointWin->size()); for (i = 0; i < vjs.nbrmemory1browserwindow; i++) { sprintf(mem1Name, "mem1BrowseWinPos[%i]", (unsigned int)i); @@ -2216,6 +2278,7 @@ void MainWin::DebuggerResetWindows(void) FilesrcListWin->Reset(); allWatchBrowseWin->Reset(); heapallocatorBrowseWin->Reset(); + BreakpointsWin->Reset(); //ResetAlpineWindows(); } @@ -2237,6 +2300,7 @@ void MainWin::DebuggerRefreshWindows(void) LocalBrowseWin->RefreshContents(); CallStackBrowseWin->RefreshContents(); heapallocatorBrowseWin->RefreshContents(); + BreakpointsWin->RefreshContents(); for (i = 0; i < vjs.nbrmemory1browserwindow; i++) { mem1BrowseWin[i]->RefreshContents(i); diff --git a/src/gui/mainwin.h b/src/gui/mainwin.h index 2e41579..a7d36af 100644 --- a/src/gui/mainwin.h +++ b/src/gui/mainwin.h @@ -43,7 +43,8 @@ class LocalBrowserWindow; class CallStackBrowserWindow; class HeapAllocatorBrowserWindow; class Memory1BrowserWindow; -//class BrkWindow; +class BreakpointsWindow; +class NewFnctBreakpointWindow; class ExceptionVectorTableBrowserWindow; class FilesrcListWindow; @@ -100,7 +101,10 @@ class MainWin: public QMainWindow void ShowHeapAllocatorBrowserWin(void); void ShowMemory1BrowserWin(int NumWin); void ShowExceptionVectorTableBrowserWin(void); - void NewBreakpointFunction(void); + void ShowNewFunctionBreakpointWin(void); + void ShowBreakpointsWin(void); + void DeleteAllBreakpoints(void); + void DisableAllBreakpoints(void); //void ShowVideoOutputWin(void); //void ShowDasmWin(void); // Alpine @@ -149,7 +153,8 @@ class MainWin: public QMainWindow GPUDasmWindow *GPUDasmWin; DSPDasmWindow *DSPDasmWin; FilesrcListWindow *FilesrcListWin; - //BrkWindow *brkWin; + BreakpointsWindow *BreakpointsWin; + NewFnctBreakpointWindow *NewFunctionBreakpointWin; QTimer *timer; bool running; int zoomLevel; @@ -205,9 +210,6 @@ class MainWin: public QMainWindow QAction *emustatusAct; QAction *useCDAct; QAction *frameAdvanceAct; - QAction *traceStepOverAct; - QAction *traceStepIntoAct; - QAction *restartAct; QAction *fullScreenAct; //QAction *DasmAct; QAction *screenshotAct; @@ -221,13 +223,19 @@ class MainWin: public QMainWindow QAction *riscDasmBrowseAct; // Debugger + QAction *traceStepOverAct; + QAction *traceStepIntoAct; + QAction *restartAct; //QAction *VideoOutputAct; QAction *heapallocatorBrowseAct; QAction *allWatchBrowseAct; QAction *LocalBrowseAct; QAction *CallStackBrowseAct; QAction **mem1BrowseAct; - //QAction *newBreakpointFunctionAct; + QAction *newFunctionBreakpointAct; + QAction *BreakpointsAct; + QAction *deleteAllBreakpointsAct; + QAction *disableAllBreakpointsAct; QAction *exceptionVectorTableBrowseAct; QIcon powerGreen; diff --git a/src/gui/virtualjaguar.qrc b/src/gui/virtualjaguar.qrc index 5f6fbd3..ddedc8f 100644 --- a/src/gui/virtualjaguar.qrc +++ b/src/gui/virtualjaguar.qrc @@ -50,5 +50,8 @@ ../../res/debug-callstack.png ../../res/debug-memory.png ../../res/screenshot.png + ../../res/debug-breakpoints.png + ../../res/debug-deleteallbreakpoints.png + ../../res/debug-disableallbreakpoints.png diff --git a/src/jaguar.cpp b/src/jaguar.cpp index 90c35c9..fe3aa9b 100644 --- a/src/jaguar.cpp +++ b/src/jaguar.cpp @@ -14,6 +14,7 @@ // --- ---------- ----------------------------------------------------------- // JLH 11/25/2009 Major rewrite of memory subsystem and handlers // JPM 09/04/2018 Added the new Models and BIOS handler +// JPM 10/13/2018 Added breakpoints features // @@ -43,7 +44,7 @@ #include "mmu.h" #include "settings.h" #include "tom.h" -//#include "debugger/brkWin.h" +//#include "debugger/BreakpointsWin.h" #ifdef NEWMODELSBIOSHANDLER #include "modelsBIOS.h" #endif @@ -119,8 +120,10 @@ bool startM68KTracing = false; // Breakpoint on memory access vars (exported) bool bpmActive = false; bool bpmSaveActive = false; +size_t bpmHitCounts; uint32_t bpmAddress1; -//BrkInfo bpm; +S_BrkInfo *brkInfo; +size_t brkNbr; // @@ -1048,12 +1051,139 @@ void M68K_Debughalt(void) #endif -// +// M68000 breakpoints initialisations +void m68k_brk_init(void) +{ + brkNbr = 0; + brkInfo = NULL; +} + + +// Reset the M68000 breakpoints structures +void m68k_brk_reset(void) +{ + // Reset the breakpoints + free(brkInfo); + brkInfo = NULL; + brkNbr = 0; +} + + +// Delete a M68000 breakpoint (starting from 1) +void m68k_brk_del(unsigned int NumBrk) +{ + // Remove the breakpoint + memset((void *)(brkInfo + (NumBrk - 1)), 0, sizeof(S_BrkInfo)); +} + + +// Add a M68000 breakpoint +// return true if breakpoint has been added, and false if breakpoint already exists +unsigned int m68k_brk_add(void *PtrInfo) +{ + S_BrkInfo *Ptr = NULL; + + // Check if breakpoint already exists + for (size_t i = 0; i < brkNbr; i++) + { + if (brkInfo[i].Used) + { + if (brkInfo[i].Adr == ((S_BrkInfo *)PtrInfo)->Adr) + { + return false; + } + } + } + + // Look for an available breakpoint + for (size_t i = 0; i < brkNbr, Ptr; i++) + { + if (!brkInfo[i].Used) + { + Ptr = &brkInfo[i]; + } + } + + // Add a breakpoint + if (!Ptr) + { + brkInfo = (S_BrkInfo *)realloc(brkInfo, (++brkNbr * sizeof(S_BrkInfo))); + Ptr = &brkInfo[brkNbr - 1]; + } + + // Transfert the breakpoint information and init the activities + memcpy((void *)Ptr, PtrInfo, sizeof(S_BrkInfo)); + Ptr->HitCounts = 0; + return (Ptr->Active = Ptr->Used = true); +} + + +// Check if breakpoint has been reached +unsigned int m68k_brk_check(unsigned int adr) +{ + // Check if BPM has been reached + if ((adr == bpmAddress1) && bpmActive) + { + bpmHitCounts++; + return true; + } + else + { + // Check user breakpoints + for (size_t i = 0; i < brkNbr; i++) + { + if (brkInfo[i].Used && brkInfo[i].Active) + { + if (brkInfo[i].Adr == adr) + { + brkInfo[i].HitCounts++; + return true; + } + } + } + } + + // No breakpoint found + return false; +} + + +// Disable the M68000 breakpoints +void m68k_brk_disable(void) +{ + // reset active for the breakpoints + for (size_t i = 0; i < brkNbr; i++) + { + brkInfo[i].Active = 0; + } +} + + +// Reset the M68000 breakpoints +void m68k_brk_hitcounts_reset(void) +{ + // reset hit counts for the breakpoints + for (size_t i = 0; i < brkNbr; i++) + { + brkInfo[i].HitCounts = 0; + } +} + + +// Close the M68000 breakpoints structures +void m68k_brk_close(void) +{ + free(brkInfo); +} + + +// Read 1 byte from address +// Check if address reaches a breakpoint unsigned int m68k_read_memory_8(unsigned int address) { #ifdef ALPINE_FUNCTIONS // Check if breakpoint on memory is active, and deal with it - if (bpmActive && address == bpmAddress1) + if (!startM68KTracing && m68k_brk_check(address)) { M68KDebugHalt(); } @@ -1145,7 +1275,7 @@ unsigned int m68k_read_memory_16(unsigned int address) { #ifdef ALPINE_FUNCTIONS // Check if breakpoint on memory is active, and deal with it - if (bpmActive && (address == bpmAddress1)) + if (!startM68KTracing && m68k_brk_check(address)) { M68KDebugHalt(); } @@ -1292,7 +1422,7 @@ unsigned int m68k_read_memory_32(unsigned int address) { #ifdef ALPINE_FUNCTIONS // Check if breakpoint on memory is active, and deal with it - if (bpmActive && address == bpmAddress1) + if (!startM68KTracing && m68k_brk_check(address)) { M68KDebugHalt(); } @@ -2213,6 +2343,7 @@ memset(jaguarMainRAM + 0x804, 0xFF, 4); TOMInit(); JERRYInit(); CDROMInit(); + m68k_brk_init(); } @@ -2258,7 +2389,6 @@ void JaguarReset(void) CDROMReset(); m68k_pulse_reset(); // Reset the 68000 WriteLog("Jaguar: 68K reset. PC=%06X SP=%08X\n", m68k_get_reg(NULL, M68K_REG_PC), m68k_get_reg(NULL, M68K_REG_A7)); - lowerField = false; // Reset the lower field flag // SetCallbackTime(ScanlineCallback, 63.5555); // SetCallbackTime(ScanlineCallback, 31.77775); @@ -2368,6 +2498,7 @@ void JaguarDone(void) DSPDone(); TOMDone(); JERRYDone(); + m68k_brk_close(); // temp, until debugger is in place //00802016: jsr $836F1A.l diff --git a/src/jaguar.h b/src/jaguar.h index d074dea..76f47db 100644 --- a/src/jaguar.h +++ b/src/jaguar.h @@ -4,12 +4,26 @@ #include #include "memory.h" // For "UNKNOWN" enum +// Breakpoint struture +typedef struct BrkInfo +{ + bool Used; // Allocated breakpoint + bool Active; // Active breakpoint + char *Name; // Functions's name + char *Filename; // Source filename + char *LineSrc; // Source code line + size_t NumLine; // Line number + size_t Adr; // Breakpoint address + size_t HitCounts; // Hit counts +}S_BrkInfo; + void JaguarSetScreenBuffer(uint32_t * buffer); void JaguarSetScreenPitch(uint32_t pitch); -void JaguarInit(void); -void JaguarReset(void); -void JaguarDone(void); +extern void JaguarInit(void); +extern void JaguarReset(void); +extern void JaguarDone(void); +// Memory functions uint8_t JaguarReadByte(uint32_t offset, uint32_t who = UNKNOWN); uint16_t JaguarReadWord(uint32_t offset, uint32_t who = UNKNOWN); uint32_t JaguarReadLong(uint32_t offset, uint32_t who = UNKNOWN); @@ -31,8 +45,11 @@ extern uint32_t jaguarMainROMCRC32, jaguarROMSize, jaguarRunAddress; extern char * jaguarEepromsPath; extern bool jaguarCartInserted; extern bool bpmActive, bpmSaveActive; +extern size_t bpmHitCounts; extern uint32_t bpmAddress1; extern bool startM68KTracing; +extern S_BrkInfo *brkInfo; +extern size_t brkNbr; // Various clock rates diff --git a/src/m68000/m68kinterface.h b/src/m68000/m68kinterface.h index 3a9c869..95977ea 100644 --- a/src/m68000/m68kinterface.h +++ b/src/m68000/m68kinterface.h @@ -135,6 +135,16 @@ int m68k_cycles_remaining(void); // Number of cycles left void m68k_modify_timeslice(int cycles); // Modify cycles left void m68k_end_timeslice(void); // End timeslice now +// Breakpoints functions +extern void m68k_brk_init(void); +extern void m68k_brk_hitcounts_reset(void); +extern unsigned int m68k_brk_add(void *PtrInfo); +extern void m68k_brk_del(unsigned int NumBrk); +extern void m68k_brk_disable(void); +extern void m68k_brk_reset(void); +extern void m68k_brk_close(void); +extern unsigned int m68k_brk_check(unsigned int adr); + #ifdef __cplusplus } #endif diff --git a/virtualjaguar.pro b/virtualjaguar.pro index e66a3b0..788be89 100644 --- a/virtualjaguar.pro +++ b/virtualjaguar.pro @@ -120,11 +120,12 @@ HEADERS = \ src/debugger/DWARFManager.h \ src/debugger/memory1browser.h \ src/debugger/heapallocatorbrowser.h \ - src/debugger/brkWin.h \ + src/debugger/BreakpointsWin.h \ src/debugger/VideoWin.h src/debugger/FilesrcListWin.h \ src/debugger/callstackbrowser.h \ src/debugger/exceptionvectortablebrowser.h \ + src/debugger/NewFnctBreakpointWin.h \ src/log.h \ src/unzip.h \ src/crc32.h \ @@ -172,11 +173,12 @@ SOURCES = \ src/debugger/DWARFManager.cpp \ src/debugger/memory1browser.cpp \ src/debugger/heapallocatorbrowser.cpp \ - src/debugger/brkWin.cpp \ + src/debugger/BreakpointsWin.cpp \ src/debugger/VideoWin.cpp \ src/debugger/FilesrcListWin.cpp \ src/debugger/exceptionvectortablebrowser.cpp \ src/debugger/callstackbrowser.cpp \ + src/debugger/NewFnctBreakpointWin.cpp \ src/log.cpp \ src/unzip.cpp \ src/crc32.cpp \ -- 2.20.1