diff --git a/debugger/assets/styles/app.css b/debugger/assets/styles/app.css index e64d2b08a..3809a6847 100644 --- a/debugger/assets/styles/app.css +++ b/debugger/assets/styles/app.css @@ -336,3 +336,44 @@ body { max-height: 80vh; overflow-y: auto; } +.debugger-module-info-outer-table { +} +.debugger-module-info-outer-table tbody tr td:nth-child(1) { + width: 110px; +} +.debugger-module-info-inner-table { + width: 300px; +} +.debugger-module-info-inner-table td:nth-child(1) { + text-align: right; +} +.debugger-module-info-headers { + width: 400px; +} +.debugger-module-info-sections { + width: 400px; +} +.debugger-module-info-static-libraries { + width: 400px; +} +.debugger-module-info-imports { + width: 900px; +} +.debugger-module-info-imports td:nth-child(1) { + width: 40px; +} +.debugger-module-info-imports td:nth-child(2) { + width: 64px; +} +.debugger-module-info-imports td:nth-child(3) { + width: 60px; +} +.debugger-module-info-imports td:nth-child(4) { + width: 100%; +} +.debugger-module-info-imports td:nth-child(5) { + width: 80px; +} +.debugger-module-info-imports td:nth-child(6) { + width: 80px; +} diff --git a/debugger/assets/ui/code/code-tab.html b/debugger/assets/ui/code/code-tab.html index 282d35097..a5b4bd2c5 100644 --- a/debugger/assets/ui/code/code-tab.html +++ b/debugger/assets/ui/code/code-tab.html @@ -38,7 +38,7 @@
- +
{{fn.name}}{{fn.name}}
diff --git a/debugger/assets/ui/code/module-info.html b/debugger/assets/ui/code/module-info.html index 061f44473..018b604d9 100644 --- a/debugger/assets/ui/code/module-info.html +++ b/debugger/assets/ui/code/module-info.html @@ -5,7 +5,214 @@ diff --git a/debugger/assets/ui/code/module-info.js b/debugger/assets/ui/code/module-info.js index 53a0da773..8078d955e 100644 --- a/debugger/assets/ui/code/module-info.js +++ b/debugger/assets/ui/code/module-info.js @@ -21,6 +21,31 @@ module.controller('ModuleInfoController', function( $scope.moduleName = moduleName; $scope.moduleInfo = moduleInfo; + $scope.headerSort = { + column: 'key', + reverse: false + }; + $scope.sectionSort = { + column: 'startAddress', + reverse: false + }; + $scope.staticLibrarySort = { + column: 'name', + reverse: false + }; + $scope.importSort = { + column: 'ordinal', + reverse: false + }; + $scope.changeSort = function(sort, column) { + if (sort.column == column) { + sort.reverse = !sort.reverse; + } else { + sort.column = column; + sort.reverse = false; + } + }; + $scope.close = function() { $scope.$close(null); }; diff --git a/debugger/src/directives.js b/debugger/src/directives.js index fd24f22dd..30925723e 100644 --- a/debugger/src/directives.js +++ b/debugger/src/directives.js @@ -9,7 +9,9 @@ 'use strict'; -var module = angular.module('xe.directives', []); +var module = angular.module('xe.directives', [ + 'ui.router' +]); module.directive('uiEnter', function() { @@ -49,3 +51,39 @@ module.directive('uiScrollDownOn', function() { }; }); +module.directive('xeCoderef', function($state) { + return { + priority: 1, + link: function($scope, element, attrs) { + var target = attrs.xeCoderef; + var stateName = 'session.code.function'; + var stateParams = { + function: target, + a: null + }; + element.attr('href', $state.href(stateName, stateParams)); + element.bind('click', function(e) { + e.preventDefault(); + $state.go(stateName, stateParams); + }); + } + }; +}); + +module.directive('xeMemref', function($state) { + return { + priority: 1, + link: function($scope, element, attrs) { + var target = attrs.xeMemref; + var stateName = 'session.memory'; + var stateParams = { + a: target + }; + element.attr('href', $state.href(stateName, stateParams)); + element.bind('click', function(e) { + e.preventDefault(); + $state.go(stateName, stateParams); + }); + } + }; +}); diff --git a/debugger/src/filters.js b/debugger/src/filters.js index 9cb2d144e..8bb6416c6 100644 --- a/debugger/src/filters.js +++ b/debugger/src/filters.js @@ -12,6 +12,16 @@ var module = angular.module('xe.filters', []); +module.filter('hex16', function() { + return function(number) { + if (number !== null && number !== undefined) { + var str = '' + number.toString(16).toUpperCase(); + while (str.length < 4) str = '0' + str; + return str; + } + }; +}); + module.filter('hex32', function() { return function(number) { if (number !== null && number !== undefined) { diff --git a/debugger/src/router.js b/debugger/src/router.js index e5427ab3b..b1953e300 100644 --- a/debugger/src/router.js +++ b/debugger/src/router.js @@ -109,7 +109,7 @@ module.config(function($stateProvider, $urlRouterProvider) { }); $stateProvider.state('session.memory', { - url: '/memory', + url: '/memory?a', templateUrl: 'assets/ui/memory/memory-tab.html', controller: function($stateParams) { }, diff --git a/src/xenia/cpu/processor.cc b/src/xenia/cpu/processor.cc index 6884080f0..91bbc7c50 100644 --- a/src/xenia/cpu/processor.cc +++ b/src/xenia/cpu/processor.cc @@ -499,8 +499,6 @@ json_t* Processor::DumpModule(XexModule* module, bool& succeeded) { json_t* header_entry_json = json_object(); json_object_set_integer_new( header_entry_json, "key", opt_header->key); - json_object_set_integer_new( - header_entry_json, "offset", opt_header->offset); json_object_set_integer_new( header_entry_json, "length", opt_header->length); json_object_set_integer_new( @@ -610,7 +608,7 @@ json_t* Processor::DumpModule(XexModule* module, bool& succeeded) { import_json, "valueAddress", info->value_address); if (kernel_export && kernel_export->type == KernelExport::Variable) { json_object_set_string_new( - import_json, "type", "function"); + import_json, "type", "variable"); } else if (kernel_export) { json_object_set_string_new( import_json, "type", "function");