Finishing off module info for now.
This commit is contained in:
@@ -38,7 +38,7 @@
|
||||
<div class="debugger-fnlist-list">
|
||||
<table class="table table-hover">
|
||||
<tr ng-repeat="fn in functionList | filter:functionFilter | orderBy:'address'">
|
||||
<td><a ui-sref="session.code.function({function: (fn.address | hex32)})">{{fn.name}}</a></td>
|
||||
<td><a xe-coderef="{{fn.address|hex32}}">{{fn.name}}</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
@@ -5,7 +5,214 @@
|
||||
<h4 class="modal-title">{{ moduleName }}</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
{{ moduleInfo }}
|
||||
<table class="table debugger-module-info-outer-table">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Module</td>
|
||||
<td>
|
||||
<table class="table table-hover table-condensed debugger-module-info-inner-table">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Module Flags</td>
|
||||
<td>{{ moduleInfo.moduleFlags | hex32 }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>System Flags</td>
|
||||
<td>{{ moduleInfo.systemFlags | hex32 }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>EXE Address</td>
|
||||
<td><a xe-memref="{{ moduleInfo.exeAddress | hex32 }}" ng-click="$close()">{{ moduleInfo.exeAddress | hex32 }}</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Entry Point</td>
|
||||
<td><a xe-coderef="{{ moduleInfo.exeEntryPoint | hex32 }}" ng-click="$close()">{{ moduleInfo.exeEntryPoint | hex32 }}</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Stack Size</td>
|
||||
<td>{{ moduleInfo.exeStackSize }}b</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Heap Size</td>
|
||||
<td>{{ moduleInfo.exeHeapSize }}b</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Execution</td>
|
||||
<td>
|
||||
<table class="table table-hover table-condensed debugger-module-info-inner-table">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Media ID</td>
|
||||
<td>{{ moduleInfo.executionInfo.mediaId | hex32 }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Version</td>
|
||||
<td>{{ moduleInfo.executionInfo.version }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Base Version</td>
|
||||
<td>{{ moduleInfo.executionInfo.baseVersion }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Title ID</td>
|
||||
<td>{{ moduleInfo.executionInfo.titleId | hex32 }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Platform</td>
|
||||
<td>{{ moduleInfo.executionInfo.platform | hex32 }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Executable Table</td>
|
||||
<td>{{ moduleInfo.executionInfo.executableTable | hex32 }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Disc</td>
|
||||
<td>{{ moduleInfo.executionInfo.discNumber }} / {{ moduleInfo.executionInfo.discCount }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Save Game ID</td>
|
||||
<td>{{ moduleInfo.executionInfo.savegameId | hex32 }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Loader</td>
|
||||
<td>
|
||||
<table class="table table-hover table-condensed debugger-module-info-inner-table">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Image Flags</td>
|
||||
<td>{{ moduleInfo.loaderInfo.imageFlags | hex32 }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Game Regions</td>
|
||||
<td>{{ moduleInfo.loaderInfo.gameRegions | hex32 }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Media Flags</td>
|
||||
<td>{{ moduleInfo.loaderInfo.mediaFlags | hex32 }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>TLS</td>
|
||||
<td>
|
||||
<table class="table table-hover table-condensed debugger-module-info-inner-table">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Slot Count</td>
|
||||
<td>{{ moduleInfo.tlsInfo.slotCount }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Data Size</td>
|
||||
<td>{{ moduleInfo.tlsInfo.dataSize }}b</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Raw Data Address</td>
|
||||
<td>{{ moduleInfo.tlsInfo.rawDataAddress | hex32 }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Raw Data Size</td>
|
||||
<td>{{ moduleInfo.tlsInfo.rawDataSize }}b</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<table class="table table-hover table-condensed debugger-module-info-headers">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><a href="" ng-click="changeSort(headerSort, 'key')">Key</a></th>
|
||||
<th><a href="" ng-click="changeSort(headerSort, 'value')">Value</a></th>
|
||||
<th><a href="" ng-click="changeSort(headerSort, 'length')">Length</a></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr ng-repeat="header in moduleInfo.headers | orderBy:headerSort.column:headerSort.reverse">
|
||||
<td>{{ header.key | hex32 }}</td>
|
||||
<td>{{ header.value | hex32 }}</td>
|
||||
<td>{{ header.length }}b</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h3>Sections</h3>
|
||||
<table class="table table-hover table-condensed debugger-module-info-sections">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><a href="" ng-click="changeSort(sectionSort, '$index')">#</a></th>
|
||||
<th><a href="" ng-click="changeSort(sectionSort, 'type')">Type</a></th>
|
||||
<th><a href="" ng-click="changeSort(sectionSort, 'startAddress')">Start</a></th>
|
||||
<th><a href="" ng-click="changeSort(sectionSort, 'endAddress')">End</a></th>
|
||||
<th><a href="" ng-click="changeSort(sectionSort, 'totalLength')">Length</a></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr ng-repeat="section in moduleInfo.sections | orderBy:sectionSort.column:sectionSort.reverse">
|
||||
<td>{{ $index }}</td>
|
||||
<td>{{ section.type }}</td>
|
||||
<td><a xe-memref="{{section.startAddress|hex32}}" ng-click="$close()">{{ section.startAddress | hex32 }}</a></td>
|
||||
<td><a xe-memref="{{section.endAddress|hex32}}" ng-click="$close()">{{ section.endAddress | hex32 }}</a></td>
|
||||
<td>{{ section.totalLength }}b</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h3>Static Libraries</h3>
|
||||
<table class="table table-hover table-condensed debugger-module-info-static-libraries">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><a href="" ng-click="changeSort(staticLibrarySort, 'name')">Name</a></th>
|
||||
<th><a href="" ng-click="changeSort(staticLibrarySort, 'version')">Version</a></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr ng-repeat="library in moduleInfo.staticLibraries | orderBy:staticLibrarySort.column:staticLibrarySort.reverse">
|
||||
<td>{{ library.name }}</td>
|
||||
<td>{{ library.version }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h3>Imports</h3>
|
||||
<div ng-repeat="library in moduleInfo.libraryImports | orderBy:'name'">
|
||||
<h4>{{ library.name }}</h4>
|
||||
Version: {{ library.version }} / min version: {{ library.minVersion }}<br/>
|
||||
<table class="table table-hover table-condensed debugger-module-info-imports">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><a href="" ng-click="changeSort(importSort, 'implemented')">Impl</a></th>
|
||||
<th><a href="" ng-click="changeSort(importSort, 'ordinal')">Ordinal</a></th>
|
||||
<th><a href="" ng-click="changeSort(importSort, 'type')">Type</a></th>
|
||||
<th><a href="" ng-click="changeSort(importSort, 'name')">Name</a></th>
|
||||
<th><a href="" ng-click="changeSort(importSort, 'valueAddress')">Value</a></th>
|
||||
<th><a href="" ng-click="changeSort(importSort, 'thunkAddress')">Thunk</a></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr ng-repeat="import in library.imports | orderBy:importSort.column:importSort.reverse"
|
||||
ng-class="{danger: !import.implemented}">
|
||||
<td>{{ import.implemented }}</td>
|
||||
<td>{{ import.ordinal | hex16 }}</td>
|
||||
<td>{{ import.type }}</td>
|
||||
<td><a href="https://www.google.com/search?as_epq={{import.name}}" target="_blank">{{ import.name }}</a></td>
|
||||
<td><a xe-memref="{{import.valueAddress|hex32}}" ng-click="$close()">{{ import.valueAddress | hex32 }}</a></td>
|
||||
<td><a xe-coderef="{{import.thunkAddress|hex32}}" ng-click="$close()">{{ import.thunkAddress | hex32 }}</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -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);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user