Added side view to Cocoa debugger
This commit is contained in:
parent
50a21da4d5
commit
7d88ee00cc
@ -28,6 +28,8 @@
|
|||||||
@property (strong) IBOutlet NSPanel *printerFeedWindow;
|
@property (strong) IBOutlet NSPanel *printerFeedWindow;
|
||||||
@property (strong) IBOutlet NSImageView *feedImageView;
|
@property (strong) IBOutlet NSImageView *feedImageView;
|
||||||
@property (strong) IBOutlet NSButton *feedSaveButton;
|
@property (strong) IBOutlet NSButton *feedSaveButton;
|
||||||
|
@property (strong) IBOutlet NSTextView *debuggerSideViewInput;
|
||||||
|
@property (strong) IBOutlet NSTextView *debuggerSideView;
|
||||||
|
|
||||||
-(uint8_t) readMemory:(uint16_t) addr;
|
-(uint8_t) readMemory:(uint16_t) addr;
|
||||||
-(void) writeMemory:(uint16_t) addr value:(uint8_t)value;
|
-(void) writeMemory:(uint16_t) addr value:(uint8_t)value;
|
||||||
|
@ -41,6 +41,8 @@
|
|||||||
bool rom_warning_issued;
|
bool rom_warning_issued;
|
||||||
|
|
||||||
NSMutableString *capturedOutput;
|
NSMutableString *capturedOutput;
|
||||||
|
bool logToSideView;
|
||||||
|
bool shouldClearSideView;
|
||||||
}
|
}
|
||||||
|
|
||||||
@property GBAudioClient *audioClient;
|
@property GBAudioClient *audioClient;
|
||||||
@ -260,6 +262,18 @@ static void printImage(GB_gameboy_t *gb, uint32_t *image, uint8_t height,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NSMutableParagraphStyle *paragraph_style = [[NSMutableParagraphStyle alloc] init];
|
||||||
|
[paragraph_style setLineSpacing:2];
|
||||||
|
|
||||||
|
self.debuggerSideViewInput.font = [NSFont userFixedPitchFontOfSize:12];
|
||||||
|
self.debuggerSideViewInput.textColor = [NSColor whiteColor];
|
||||||
|
self.debuggerSideViewInput.defaultParagraphStyle = paragraph_style;
|
||||||
|
[self.debuggerSideViewInput setString:@"registers\nbacktrace\n"];
|
||||||
|
[[NSNotificationCenter defaultCenter] addObserver:self
|
||||||
|
selector:@selector(updateSideView)
|
||||||
|
name:NSTextDidChangeNotification
|
||||||
|
object:self.debuggerSideViewInput];
|
||||||
|
|
||||||
self.consoleOutput.textContainerInset = NSMakeSize(4, 4);
|
self.consoleOutput.textContainerInset = NSMakeSize(4, 4);
|
||||||
[self.view becomeFirstResponder];
|
[self.view becomeFirstResponder];
|
||||||
self.view.shouldBlendFrameWithPrevious = ![[NSUserDefaults standardUserDefaults] boolForKey:@"DisableFrameBlending"];
|
self.view.shouldBlendFrameWithPrevious = ![[NSUserDefaults standardUserDefaults] boolForKey:@"DisableFrameBlending"];
|
||||||
@ -479,7 +493,9 @@ static void printImage(GB_gameboy_t *gb, uint32_t *image, uint8_t height,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pendingLogLines > 128) {
|
NSTextView *textView = logToSideView? self.debuggerSideView : self.consoleOutput;
|
||||||
|
|
||||||
|
if (!logToSideView && pendingLogLines > 128) {
|
||||||
/* The ROM causes so many errors in such a short time, and we can't handle it. */
|
/* The ROM causes so many errors in such a short time, and we can't handle it. */
|
||||||
tooMuchLogs = true;
|
tooMuchLogs = true;
|
||||||
return;
|
return;
|
||||||
@ -490,6 +506,10 @@ static void printImage(GB_gameboy_t *gb, uint32_t *image, uint8_t height,
|
|||||||
self.view.mouseHidingEnabled = NO;
|
self.view.mouseHidingEnabled = NO;
|
||||||
|
|
||||||
dispatch_async(dispatch_get_main_queue(), ^{
|
dispatch_async(dispatch_get_main_queue(), ^{
|
||||||
|
if (shouldClearSideView) {
|
||||||
|
shouldClearSideView = false;
|
||||||
|
[self.debuggerSideView setString:@""];
|
||||||
|
}
|
||||||
[hex_controller reloadData];
|
[hex_controller reloadData];
|
||||||
[self reloadVRAMData: nil];
|
[self reloadVRAMData: nil];
|
||||||
|
|
||||||
@ -511,13 +531,13 @@ static void printImage(GB_gameboy_t *gb, uint32_t *image, uint8_t height,
|
|||||||
NSForegroundColorAttributeName: [NSColor whiteColor],
|
NSForegroundColorAttributeName: [NSColor whiteColor],
|
||||||
NSUnderlineStyleAttributeName: @(underline),
|
NSUnderlineStyleAttributeName: @(underline),
|
||||||
NSParagraphStyleAttributeName: paragraph_style}];
|
NSParagraphStyleAttributeName: paragraph_style}];
|
||||||
[self.consoleOutput.textStorage appendAttributedString:attributed];
|
[textView.textStorage appendAttributedString:attributed];
|
||||||
if (pendingLogLines == 1) {
|
if (pendingLogLines == 1) {
|
||||||
if (tooMuchLogs) {
|
if (tooMuchLogs) {
|
||||||
tooMuchLogs = false;
|
tooMuchLogs = false;
|
||||||
[self log:"[...]\n"];
|
[self log:"[...]\n"];
|
||||||
}
|
}
|
||||||
[self.consoleOutput scrollToEndOfDocument:nil];
|
[textView scrollToEndOfDocument:nil];
|
||||||
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"DeveloperMode"]) {
|
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"DeveloperMode"]) {
|
||||||
[self.consoleWindow orderBack:nil];
|
[self.consoleWindow orderBack:nil];
|
||||||
}
|
}
|
||||||
@ -562,8 +582,29 @@ static void printImage(GB_gameboy_t *gb, uint32_t *image, uint8_t height,
|
|||||||
[has_debugger_input unlockWithCondition:1];
|
[has_debugger_input unlockWithCondition:1];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void) updateSideView
|
||||||
|
{
|
||||||
|
if (!GB_debugger_is_stopped(&gb)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
shouldClearSideView = true;
|
||||||
|
logToSideView = true;
|
||||||
|
for (NSString *line in [self.debuggerSideViewInput.string componentsSeparatedByString:@"\n"]) {
|
||||||
|
NSString *stripped = [line stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
|
||||||
|
if ([stripped length]) {
|
||||||
|
char *dupped = strdup([stripped UTF8String]);
|
||||||
|
GB_attributed_log(&gb, GB_LOG_BOLD, "%s:\n", dupped);
|
||||||
|
GB_debugger_execute_command(&gb, dupped);
|
||||||
|
GB_log(&gb, "\n");
|
||||||
|
free(dupped);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
logToSideView = false;
|
||||||
|
}
|
||||||
|
|
||||||
- (char *) getDebuggerInput
|
- (char *) getDebuggerInput
|
||||||
{
|
{
|
||||||
|
[self updateSideView];
|
||||||
[self log:">"];
|
[self log:">"];
|
||||||
in_sync_input = true;
|
in_sync_input = true;
|
||||||
[has_debugger_input lockWhenCondition:1];
|
[has_debugger_input lockWhenCondition:1];
|
||||||
@ -571,6 +612,13 @@ static void printImage(GB_gameboy_t *gb, uint32_t *image, uint8_t height,
|
|||||||
[debugger_input_queue removeObjectAtIndex:0];
|
[debugger_input_queue removeObjectAtIndex:0];
|
||||||
[has_debugger_input unlockWithCondition:[debugger_input_queue count] != 0];
|
[has_debugger_input unlockWithCondition:[debugger_input_queue count] != 0];
|
||||||
in_sync_input = false;
|
in_sync_input = false;
|
||||||
|
shouldClearSideView = true;
|
||||||
|
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(NSEC_PER_SEC / 10)), dispatch_get_main_queue(), ^{
|
||||||
|
if (shouldClearSideView) {
|
||||||
|
shouldClearSideView = false;
|
||||||
|
[self.debuggerSideView setString:@""];
|
||||||
|
}
|
||||||
|
});
|
||||||
if ((id) input == [NSNull null]) {
|
if ((id) input == [NSNull null]) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="9531" systemVersion="14F1713" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" customObjectInstantitationMethod="direct">
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="12120" systemVersion="16D32" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" customObjectInstantitationMethod="direct">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="9531"/>
|
<deployment identifier="macosx"/>
|
||||||
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="12120"/>
|
||||||
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<objects>
|
<objects>
|
||||||
<customObject id="-2" userLabel="File's Owner" customClass="Document">
|
<customObject id="-2" userLabel="File's Owner" customClass="Document">
|
||||||
@ -10,6 +12,8 @@
|
|||||||
<outlet property="consoleInput" destination="l22-S8-uji" id="Heu-am-YgB"/>
|
<outlet property="consoleInput" destination="l22-S8-uji" id="Heu-am-YgB"/>
|
||||||
<outlet property="consoleOutput" destination="doS-dM-hnl" id="Gn5-ju-Wb0"/>
|
<outlet property="consoleOutput" destination="doS-dM-hnl" id="Gn5-ju-Wb0"/>
|
||||||
<outlet property="consoleWindow" destination="21F-Ah-yHX" id="eQ4-ug-LsT"/>
|
<outlet property="consoleWindow" destination="21F-Ah-yHX" id="eQ4-ug-LsT"/>
|
||||||
|
<outlet property="debuggerSideView" destination="JgV-7E-iwp" id="RaA-fw-3i1"/>
|
||||||
|
<outlet property="debuggerSideViewInput" destination="w0g-eK-jM4" id="GBf-WK-ryI"/>
|
||||||
<outlet property="feedImageView" destination="Ar0-nN-eop" id="wHa-St-o4G"/>
|
<outlet property="feedImageView" destination="Ar0-nN-eop" id="wHa-St-o4G"/>
|
||||||
<outlet property="feedSaveButton" destination="RLc-0I-sYZ" id="Yy9-dG-xXY"/>
|
<outlet property="feedSaveButton" destination="RLc-0I-sYZ" id="Yy9-dG-xXY"/>
|
||||||
<outlet property="gridButton" destination="fL6-2S-Rgd" id="jtV-jh-GHC"/>
|
<outlet property="gridButton" destination="fL6-2S-Rgd" id="jtV-jh-GHC"/>
|
||||||
@ -67,21 +71,21 @@
|
|||||||
<windowStyleMask key="styleMask" titled="YES" closable="YES" resizable="YES" utility="YES" HUD="YES"/>
|
<windowStyleMask key="styleMask" titled="YES" closable="YES" resizable="YES" utility="YES" HUD="YES"/>
|
||||||
<windowCollectionBehavior key="collectionBehavior" fullScreenAuxiliary="YES"/>
|
<windowCollectionBehavior key="collectionBehavior" fullScreenAuxiliary="YES"/>
|
||||||
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
|
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
|
||||||
<rect key="contentRect" x="272" y="172" width="600" height="400"/>
|
<rect key="contentRect" x="272" y="172" width="921" height="400"/>
|
||||||
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
|
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
|
||||||
<value key="minSize" type="size" width="600" height="400"/>
|
<value key="minSize" type="size" width="921" height="400"/>
|
||||||
<view key="contentView" id="dCP-E5-7Fi">
|
<view key="contentView" id="dCP-E5-7Fi">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="600" height="400"/>
|
<rect key="frame" x="0.0" y="0.0" width="921" height="400"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<scrollView borderType="none" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" id="oTo-zx-o6N">
|
<scrollView misplaced="YES" borderType="none" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" id="oTo-zx-o6N">
|
||||||
<rect key="frame" x="0.0" y="25" width="600" height="376"/>
|
<rect key="frame" x="0.0" y="25" width="600" height="376"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="EQe-Ad-L7S">
|
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="EQe-Ad-L7S">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="600" height="376"/>
|
<rect key="frame" x="0.0" y="0.0" width="600" height="376"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<textView editable="NO" drawsBackground="NO" importsGraphics="NO" richText="NO" baseWritingDirection="leftToRight" findStyle="bar" verticallyResizable="YES" allowsNonContiguousLayout="YES" id="doS-dM-hnl">
|
<textView editable="NO" drawsBackground="NO" importsGraphics="NO" richText="NO" baseWritingDirection="leftToRight" findStyle="bar" allowsNonContiguousLayout="YES" id="doS-dM-hnl">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="600" height="376"/>
|
<rect key="frame" x="0.0" y="0.0" width="600" height="376"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||||
@ -89,8 +93,6 @@
|
|||||||
<size key="minSize" width="600" height="376"/>
|
<size key="minSize" width="600" height="376"/>
|
||||||
<size key="maxSize" width="1160" height="10000000"/>
|
<size key="maxSize" width="1160" height="10000000"/>
|
||||||
<color key="insertionPointColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
<color key="insertionPointColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
<size key="minSize" width="600" height="376"/>
|
|
||||||
<size key="maxSize" width="1160" height="10000000"/>
|
|
||||||
<allowedInputSourceLocales>
|
<allowedInputSourceLocales>
|
||||||
<string>NSAllRomanInputSourcesLocaleIdentifier</string>
|
<string>NSAllRomanInputSourcesLocaleIdentifier</string>
|
||||||
</allowedInputSourceLocales>
|
</allowedInputSourceLocales>
|
||||||
@ -98,17 +100,17 @@
|
|||||||
</subviews>
|
</subviews>
|
||||||
<color key="backgroundColor" red="0.16470588235294117" green="0.16470588235294117" blue="0.16470588235294117" alpha="1" colorSpace="calibratedRGB"/>
|
<color key="backgroundColor" red="0.16470588235294117" green="0.16470588235294117" blue="0.16470588235294117" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
</clipView>
|
</clipView>
|
||||||
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="YES" id="3fZ-tl-Zi7">
|
<scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="YES" id="3fZ-tl-Zi7">
|
||||||
<rect key="frame" x="-100" y="-100" width="87" height="18"/>
|
<rect key="frame" x="-100" y="-100" width="87" height="18"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
</scroller>
|
</scroller>
|
||||||
<scroller key="verticalScroller" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="cwi-6E-rbh">
|
<scroller key="verticalScroller" verticalHuggingPriority="750" horizontal="NO" id="cwi-6E-rbh">
|
||||||
<rect key="frame" x="584" y="0.0" width="16" height="376"/>
|
<rect key="frame" x="584" y="0.0" width="16" height="376"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
</scroller>
|
</scroller>
|
||||||
</scrollView>
|
</scrollView>
|
||||||
<textField focusRingType="none" verticalHuggingPriority="750" mirrorLayoutDirectionWhenInternationalizing="never" id="l22-S8-uji">
|
<textField focusRingType="none" verticalHuggingPriority="750" mirrorLayoutDirectionWhenInternationalizing="never" allowsCharacterPickerTouchBarItem="NO" id="l22-S8-uji">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="600" height="24"/>
|
<rect key="frame" x="0.0" y="0.0" width="921" height="24"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" state="on" focusRingType="none" id="p3j-nS-44f">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" state="on" focusRingType="none" id="p3j-nS-44f">
|
||||||
<font key="font" metaFont="fixedUser" size="11"/>
|
<font key="font" metaFont="fixedUser" size="11"/>
|
||||||
@ -122,16 +124,81 @@
|
|||||||
<action selector="consoleInput:" target="-2" id="ylQ-vw-ARS"/>
|
<action selector="consoleInput:" target="-2" id="ylQ-vw-ARS"/>
|
||||||
</connections>
|
</connections>
|
||||||
</textField>
|
</textField>
|
||||||
<box verticalHuggingPriority="750" title="Box" boxType="separator" titlePosition="noTitle" id="960-dL-7ZY">
|
<box verticalHuggingPriority="750" boxType="separator" id="960-dL-7ZY">
|
||||||
<rect key="frame" x="0.0" y="23" width="600" height="5"/>
|
<rect key="frame" x="0.0" y="23" width="921" height="5"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
|
||||||
<color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
|
</box>
|
||||||
<color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
<scrollView misplaced="YES" borderType="none" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" id="vts-CC-ZjQ">
|
||||||
<font key="titleFont" metaFont="system"/>
|
<rect key="frame" x="601" y="25" width="320" height="328"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" heightSizable="YES"/>
|
||||||
|
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="Cs9-3x-ATg">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="320" height="328"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<textView editable="NO" drawsBackground="NO" importsGraphics="NO" richText="NO" baseWritingDirection="leftToRight" findStyle="bar" allowsNonContiguousLayout="YES" spellingCorrection="YES" id="JgV-7E-iwp">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="320" height="328"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<color key="backgroundColor" red="0.14901960780000001" green="0.14901960780000001" blue="0.14901960780000001" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
|
<size key="minSize" width="320" height="328"/>
|
||||||
|
<size key="maxSize" width="1160" height="10000000"/>
|
||||||
|
<color key="insertionPointColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<allowedInputSourceLocales>
|
||||||
|
<string>NSAllRomanInputSourcesLocaleIdentifier</string>
|
||||||
|
</allowedInputSourceLocales>
|
||||||
|
</textView>
|
||||||
|
</subviews>
|
||||||
|
<color key="backgroundColor" red="0.1647058824" green="0.1647058824" blue="0.1647058824" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
|
</clipView>
|
||||||
|
<scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="YES" id="J2i-lz-QJW">
|
||||||
|
<rect key="frame" x="-100" y="-100" width="87" height="18"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
</scroller>
|
||||||
|
<scroller key="verticalScroller" verticalHuggingPriority="750" horizontal="NO" id="4jm-Gm-D2R">
|
||||||
|
<rect key="frame" x="304" y="0.0" width="16" height="328"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
</scroller>
|
||||||
|
</scrollView>
|
||||||
|
<scrollView misplaced="YES" borderType="none" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" scrollerKnobStyle="dark" id="V9U-Ua-F4z">
|
||||||
|
<rect key="frame" x="601" y="354" width="320" height="47"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
|
||||||
|
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="YHx-TM-zIC">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="320" height="47"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<textView drawsBackground="NO" importsGraphics="NO" richText="NO" allowsCharacterPickerTouchBarItem="NO" allowsUndo="YES" allowsNonContiguousLayout="YES" textCompletion="NO" spellingCorrection="YES" id="w0g-eK-jM4">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="320" height="47"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||||
|
<size key="minSize" width="320" height="47"/>
|
||||||
|
<size key="maxSize" width="463" height="10000000"/>
|
||||||
|
<color key="insertionPointColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<allowedInputSourceLocales>
|
||||||
|
<string>NSAllRomanInputSourcesLocaleIdentifier</string>
|
||||||
|
</allowedInputSourceLocales>
|
||||||
|
</textView>
|
||||||
|
</subviews>
|
||||||
|
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||||
|
</clipView>
|
||||||
|
<scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="YES" id="24d-1i-uBk">
|
||||||
|
<rect key="frame" x="-100" y="-100" width="87" height="18"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
</scroller>
|
||||||
|
<scroller key="verticalScroller" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="qgN-F8-fdB">
|
||||||
|
<rect key="frame" x="304" y="0.0" width="16" height="47"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
</scroller>
|
||||||
|
</scrollView>
|
||||||
|
<box verticalHuggingPriority="750" misplaced="YES" boxType="separator" id="5qI-qZ-nkh">
|
||||||
|
<rect key="frame" x="603" y="352" width="318" height="5"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
|
||||||
|
</box>
|
||||||
|
<box horizontalHuggingPriority="750" misplaced="YES" boxType="separator" id="Onx-Oe-fBx">
|
||||||
|
<rect key="frame" x="600" y="25" width="5" height="376"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" heightSizable="YES"/>
|
||||||
</box>
|
</box>
|
||||||
</subviews>
|
</subviews>
|
||||||
</view>
|
</view>
|
||||||
<point key="canvasLocation" x="348" y="-29"/>
|
<point key="canvasLocation" x="347.5" y="-29"/>
|
||||||
</window>
|
</window>
|
||||||
<window title="Memory" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" hidesOnDeactivate="YES" oneShot="NO" releasedWhenClosed="NO" showsToolbarButton="NO" visibleAtLaunch="NO" animationBehavior="default" id="mRm-dL-mCj" customClass="NSPanel">
|
<window title="Memory" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" hidesOnDeactivate="YES" oneShot="NO" releasedWhenClosed="NO" showsToolbarButton="NO" visibleAtLaunch="NO" animationBehavior="default" id="mRm-dL-mCj" customClass="NSPanel">
|
||||||
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
|
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
|
||||||
@ -176,7 +243,7 @@
|
|||||||
<nil key="toolTip"/>
|
<nil key="toolTip"/>
|
||||||
<size key="minSize" width="64" height="22"/>
|
<size key="minSize" width="64" height="22"/>
|
||||||
<size key="maxSize" width="64" height="22"/>
|
<size key="maxSize" width="64" height="22"/>
|
||||||
<textField key="view" verticalHuggingPriority="750" id="rdV-q6-hc6">
|
<textField key="view" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" id="rdV-q6-hc6">
|
||||||
<rect key="frame" x="0.0" y="14" width="64" height="22"/>
|
<rect key="frame" x="0.0" y="14" width="64" height="22"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" id="JCn-Y1-eHS">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" id="JCn-Y1-eHS">
|
||||||
@ -193,7 +260,7 @@
|
|||||||
<nil key="toolTip"/>
|
<nil key="toolTip"/>
|
||||||
<size key="minSize" width="96" height="22"/>
|
<size key="minSize" width="96" height="22"/>
|
||||||
<size key="maxSize" width="128" height="22"/>
|
<size key="maxSize" width="128" height="22"/>
|
||||||
<textField key="view" verticalHuggingPriority="750" id="EJd-jG-hmH">
|
<textField key="view" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" id="EJd-jG-hmH">
|
||||||
<rect key="frame" x="0.0" y="14" width="96" height="22"/>
|
<rect key="frame" x="0.0" y="14" width="96" height="22"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" state="on" borderStyle="bezel" bezelStyle="round" id="vg5-Nn-abb">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" state="on" borderStyle="bezel" bezelStyle="round" id="vg5-Nn-abb">
|
||||||
@ -227,14 +294,11 @@
|
|||||||
<rect key="frame" x="0.0" y="0.0" width="512" height="432"/>
|
<rect key="frame" x="0.0" y="0.0" width="512" height="432"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<box verticalHuggingPriority="750" title="Box" boxType="separator" titlePosition="noTitle" id="ucG-cD-wfs">
|
<box verticalHuggingPriority="750" boxType="separator" id="ucG-cD-wfs">
|
||||||
<rect key="frame" x="0.0" y="406" width="512" height="5"/>
|
<rect key="frame" x="0.0" y="406" width="512" height="5"/>
|
||||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||||
<color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
|
|
||||||
<color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
|
||||||
<font key="titleFont" metaFont="system"/>
|
|
||||||
</box>
|
</box>
|
||||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" id="6vK-IP-PmP">
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="NO" id="6vK-IP-PmP">
|
||||||
<rect key="frame" x="-2" y="4" width="516" height="14"/>
|
<rect key="frame" x="-2" y="4" width="516" height="14"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
|
||||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="center" id="umk-4r-VNg">
|
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="center" id="umk-4r-VNg">
|
||||||
@ -403,8 +467,8 @@
|
|||||||
<rect key="frame" x="0.0" y="0.0" width="512" height="408"/>
|
<rect key="frame" x="0.0" y="0.0" width="512" height="408"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<clipView key="contentView" drawsBackground="NO" id="3VT-AA-xVT">
|
<clipView key="contentView" drawsBackground="NO" id="3VT-AA-xVT">
|
||||||
<rect key="frame" x="0.0" y="17" width="512" height="391"/>
|
<rect key="frame" x="0.0" y="0.0" width="512" height="408"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<tableView appearanceType="vibrantLight" verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="none" alternatingRowBackgroundColors="YES" columnReordering="NO" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" typeSelect="NO" rowHeight="18" headerView="of1-KC-dXC" id="TOc-XJ-w9w">
|
<tableView appearanceType="vibrantLight" verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="none" alternatingRowBackgroundColors="YES" columnReordering="NO" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" typeSelect="NO" rowHeight="18" headerView="of1-KC-dXC" id="TOc-XJ-w9w">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="512" height="391"/>
|
<rect key="frame" x="0.0" y="0.0" width="512" height="391"/>
|
||||||
@ -548,10 +612,10 @@
|
|||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<clipView key="contentView" id="bP9-su-zQw">
|
<clipView key="contentView" id="bP9-su-zQw">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="512" height="408"/>
|
<rect key="frame" x="0.0" y="0.0" width="512" height="408"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnReordering="NO" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" typeSelect="NO" rowHeight="18" id="gfC-d3-dmq">
|
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnReordering="NO" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" typeSelect="NO" rowHeight="18" id="gfC-d3-dmq">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="512" height="20"/>
|
<rect key="frame" x="0.0" y="0.0" width="512" height="408"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<size key="intercellSpacing" width="3" height="2"/>
|
<size key="intercellSpacing" width="3" height="2"/>
|
||||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
@ -630,7 +694,6 @@
|
|||||||
</connections>
|
</connections>
|
||||||
</tableView>
|
</tableView>
|
||||||
</subviews>
|
</subviews>
|
||||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
|
||||||
</clipView>
|
</clipView>
|
||||||
<scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="YES" id="OS3-sw-bjv">
|
<scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="YES" id="OS3-sw-bjv">
|
||||||
<rect key="frame" x="-100" y="-100" width="510" height="16"/>
|
<rect key="frame" x="-100" y="-100" width="510" height="16"/>
|
||||||
|
@ -1679,7 +1679,7 @@ void GB_debugger_test_read_watchpoint(GB_gameboy_t *gb, uint16_t addr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Returns true if debugger waits for more commands */
|
/* Returns true if debugger waits for more commands */
|
||||||
bool GB_debugger_do_command(GB_gameboy_t *gb, char *input)
|
bool GB_debugger_execute_command(GB_gameboy_t *gb, char *input)
|
||||||
{
|
{
|
||||||
if (!input[0]) {
|
if (!input[0]) {
|
||||||
return true;
|
return true;
|
||||||
@ -1748,7 +1748,7 @@ next_command:
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GB_debugger_do_command(gb, input)) {
|
if (GB_debugger_execute_command(gb, input)) {
|
||||||
goto next_command;
|
goto next_command;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1761,7 +1761,7 @@ void GB_debugger_handle_async_commands(GB_gameboy_t *gb)
|
|||||||
char *input = NULL;
|
char *input = NULL;
|
||||||
|
|
||||||
while (gb->async_input_callback && (input = gb->async_input_callback(gb))) {
|
while (gb->async_input_callback && (input = gb->async_input_callback(gb))) {
|
||||||
GB_debugger_do_command(gb, input);
|
GB_debugger_execute_command(gb, input);
|
||||||
free(input);
|
free(input);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,6 +15,14 @@ void GB_debugger_test_read_watchpoint(GB_gameboy_t *gb, uint16_t addr);
|
|||||||
const GB_bank_symbol_t *GB_debugger_find_symbol(GB_gameboy_t *gb, uint16_t addr);
|
const GB_bank_symbol_t *GB_debugger_find_symbol(GB_gameboy_t *gb, uint16_t addr);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef GB_INTERNAL
|
||||||
|
bool /* Returns true if debugger waits for more commands. Not relevant for non-GB_INTERNAL */
|
||||||
|
#else
|
||||||
|
void
|
||||||
|
#endif
|
||||||
|
GB_debugger_execute_command(GB_gameboy_t *gb, char *input); /* Destroys input. */
|
||||||
|
|
||||||
|
|
||||||
void GB_debugger_load_symbol_file(GB_gameboy_t *gb, const char *path);
|
void GB_debugger_load_symbol_file(GB_gameboy_t *gb, const char *path);
|
||||||
const char *GB_debugger_name_for_address(GB_gameboy_t *gb, uint16_t addr);
|
const char *GB_debugger_name_for_address(GB_gameboy_t *gb, uint16_t addr);
|
||||||
bool GB_debugger_evaluate(GB_gameboy_t *gb, const char *string, uint16_t *result, uint16_t *result_bank); /* result_bank is -1 if unused. */
|
bool GB_debugger_evaluate(GB_gameboy_t *gb, const char *string, uint16_t *result, uint16_t *result_bank); /* result_bank is -1 if unused. */
|
||||||
|
Loading…
Reference in New Issue
Block a user