Guest User

Untitled

a guest
Apr 22nd, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.25 KB | None | 0 0
  1. <html>
  2. <head>
  3. <script>
  4. var PPSSPP_IP = '192.168.0.74';
  5. var PPSSPP_PORT = 41588;
  6. </script>
  7. <style>
  8. html {
  9. height: 100%;
  10. }
  11.  
  12. html, body {
  13. display: flex;
  14. flex-direction: column;
  15. flex-grow: 1;
  16. }
  17.  
  18. #ui {
  19. flex-grow: 1;
  20. }
  21.  
  22. #log {
  23. background: black;
  24. border-radius: 1ex;
  25. color: #ccc;
  26. font: 12px Consolas, monospace;
  27. height: 30vh;
  28. max-width: 100%;
  29. overflow: auto;
  30. padding: 1ex;
  31. resize: vertical;
  32. white-space: pre-wrap;
  33. }
  34.  
  35. .log-message--internal::before {
  36. content: "\00BB\00A0";
  37. }
  38.  
  39. .log-message__timestamp {
  40. color: #fff;
  41. }
  42.  
  43. .log-message--level-1 {
  44. color: #0f0;
  45. }
  46.  
  47. .log-message--level-2 {
  48. color: #f00;
  49. }
  50.  
  51. .log-message--level-3 {
  52. color: #ff0;
  53. }
  54.  
  55. .log-message--level-4 {
  56. color: #0ff;
  57. }
  58. </style>
  59. </head>
  60. <body>
  61. <div id="ui">
  62. <button id="connect">Connect</button>
  63. </div>
  64. <div id="log"></div>
  65. <script>
  66. var socket = null;
  67.  
  68. function addLog(message) {
  69. var log = document.getElementById('log');
  70. log.appendChild(message);
  71. if (log.childNodes.length >= 5000)
  72. log.removeChild(log.firstChild);
  73. message.scrollIntoView();
  74. }
  75.  
  76. function log(text, level) {
  77. var message = document.createElement('span');
  78. message.appendChild(document.createTextNode(text + '\n'));
  79. message.className = 'log-message log-message--internal';
  80. if (level)
  81. message.className += ' log-message--level-' + level;
  82. addLog(message);
  83. }
  84.  
  85. function handleLogEvent(data) {
  86. var timestamp = document.createElement('span');
  87. timestamp.textContent = data.header.substr(0, 10);
  88. timestamp.className = 'log-message__timestamp';
  89.  
  90. var header = document.createElement('span');
  91. header.appendChild(timestamp);
  92. header.appendChild(document.createTextNode(data.header.substr(10) + ' '));
  93. header.className = 'log-message__header';
  94.  
  95. var message = document.createElement('span');
  96. message.appendChild(header);
  97. message.appendChild(document.createTextNode(data.message));
  98. message.className = 'log-message log-message--channel-' + data.log + ' log-message--level-' + data.level;
  99.  
  100. addLog(message);
  101. }
  102.  
  103. function connect() {
  104. if (socket) {
  105. socket.close(1000);
  106. socket = null;
  107. return;
  108. }
  109.  
  110. socket = new WebSocket('ws://' + PPSSPP_IP + ':' + PPSSPP_PORT + '/debugger', 'debugger.ppsspp.org');
  111. connectButton.textContent = 'Connecting...';
  112. connectButton.disabled = true;
  113.  
  114. var connected = false;
  115. socket.onopen = function () {
  116. log('Debugger connected');
  117. connectButton.textContent = 'Disconnect';
  118. connectButton.disabled = false;
  119. connected = true;
  120. }
  121. socket.onclose = function (e) {
  122. if (connected) {
  123. log('Debugger disconnected');
  124. }
  125. connectButton.textContent = 'Connect';
  126. connectButton.disabled = false;
  127. socket = null;
  128. }
  129. socket.onerror = function (e) {
  130. log('Debugger connection failed');
  131. }
  132.  
  133. socket.onmessage = function (e) {
  134. var data = JSON.parse(e.data);
  135.  
  136. if (data.event == 'log') {
  137. handleLogEvent(data);
  138. } else if (data.event == 'error') {
  139. log('Debugger error: ' + data.message, data.level);
  140. } else {
  141. log('Unexpected event: ' + data);
  142. }
  143. }
  144. }
  145.  
  146. var connectButton = document.getElementById('connect');
  147. connectButton.onclick = connect;
  148. // Connect automatically.
  149. connect();
  150. </script>
  151. </body>
  152. </html>
Add Comment
Please, Sign In to add comment