GameBoy (Color) port of the GTA San Andreas arcade game Duality
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.html 7.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. <html>
  2. <head>
  3. <title>Duality</title>
  4. <link rel="icon" type="image/png" href="favicon.png" />
  5. <style>
  6. body {
  7. background: linear-gradient(
  8. to right,
  9. #000000 0%,
  10. #000000 50%,
  11. #ffffff 50%,
  12. #ffffff 100%
  13. );
  14. }
  15. #wrap, .text {
  16. width: 100%;
  17. max-width: 640px; /* 160px * 4 */
  18. margin: 0px auto;
  19. }
  20. #wrap {
  21. height: 100%;
  22. max-height: 576px; /* 144px * 4 */
  23. border-radius: 5px;
  24. padding: 5px;
  25. }
  26. .text {
  27. text-align: center;
  28. border-radius: 5px;
  29. padding: 5px;
  30. margin-top: 10px;
  31. margin-bottom: 10px;
  32. }
  33. #cart {
  34. max-width: 90%;
  35. }
  36. #controls {
  37. margin: 0px auto;
  38. }
  39. ul {
  40. list-style-type: none;
  41. }
  42. body, #wrap, .text {
  43. background-color: #DDDDDD;
  44. color: #000000;
  45. }
  46. @media (prefers-color-scheme: dark) {
  47. body, #wrap, .text {
  48. background-color: #111111;
  49. color: #FFFFFF;
  50. }
  51. }
  52. </style>
  53. </head>
  54. <body>
  55. <div class="text">
  56. <h1>Duality</h1>
  57. <p>A GameBoy (Color) port of the GTA San Andreas arcade game Duality.</p>
  58. </div>
  59. <div id="wrap">
  60. <div id="game"></div>
  61. </div>
  62. <div class="text">
  63. <h2>Controls</h2>
  64. <table id="controls" border="1">
  65. <tr><th>Button</th><th>Key</th><th>Action</th></tr>
  66. <tr><td>D-Pad Left</td><td>Arrow Left</td><td>Rotate Left</td></tr>
  67. <tr><td>D-Pad Right</td><td>Arrow Right</td><td>Rotate Right</td></tr>
  68. <tr><td>A</td><td>S</td><td>Accelerate</td></tr>
  69. <tr><td>B</td><td>A</td><td>Shoot</td></tr>
  70. <tr><td>Start</td><td>Enter</td><td>Pause</td></tr>
  71. <tr><td>Select</td><td>Space</td><td>About</td></tr>
  72. </table>
  73. <p>On PCs use keyboard input with the keys given above. On mobile devices a touch overlay should automatically appear over the emulator.</p>
  74. </div>
  75. <div class="text">
  76. <h2>Description</h2>
  77. <p>Press Left or Right on the title screen to show either the black or white highscores. Press Select to show the about screen and build info. In-game press Start to pause and resume. While paused press Select to return to the menu.</p>
  78. <p>Collect small white spheres to get +5 white score. Collect small black spheres to get +5 black score. The opposite color will reduce your score when collected. Shooting while you have a white score will reduce it by one. Large black holes will attract you and damage your ship when touched. Large white spheres will repel you and replenish your health when touched. Accelerating will reduce your fuel, which will recharge when not accelerating. You can shoot large spheres for +10 points.<p>
  79. <p>For a more detailed description of the original game check out the <a href="https://gta.fandom.com/wiki/Duality">Duality article on GTA Wiki</a>.</p>
  80. </div>
  81. <div class="text">
  82. <h2>Features</h2>
  83. <p>This port has some special features that go beyond the original arcade machine.</p>
  84. <ul>
  85. <li><b>Multiplayer</b> - Play against a friend with the link cable</li>
  86. <li><b>Game Boy Printer</b> - make hard copies of the score tables</li>
  87. </ul>
  88. <p>To access multiplayer mode connect two Game Boy systems via link cable, then leave one device on the main menu, while opening the about screen (press SELECT two times) on the other device.</p>
  89. <p>To print the scores open one of the score screens (by pressing LEFT or RIGHT in the main menu), then press SELECT to start printing.</p>
  90. </div>
  91. <div class="text">
  92. <h2>Downloads</h2>
  93. <p>Download the <a href="https://xythobuz.github.io/Duality/duality.gb">ROM</a>!</p>
  94. <p>Get the source code on <a href="https://github.com/xythobuz/Duality">GitHub</a>.</p>
  95. </div>
  96. <div class="text">
  97. <h2>Artwork</h2>
  98. <img id="cart" src="cartridge.png">
  99. </div>
  100. <div class="text">
  101. <p>Emulation supported by <a href="https://emulatorjs.org">EmulatorJS</a>.</p>
  102. </div>
  103. <script>
  104. EJS_player = "#game";
  105. EJS_core = "gb";
  106. EJS_pathtodata = "https://cdn.emulatorjs.org/stable/data/";
  107. EJS_gameUrl = "https://xythobuz.github.io/Duality/duality.gb";
  108. EJS_alignStartButton = "center";
  109. EJS_backgroundImage = "https://xythobuz.github.io/Duality/cartridge.png";
  110. if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
  111. EJS_backgroundColor = "#111111";
  112. } else {
  113. EJS_backgroundColor = "#DDDDDD";
  114. }
  115. EJS_defaultControls = {
  116. 0: {
  117. 0: {
  118. 'value': 'a',
  119. 'value2': 'BUTTON_2'
  120. },
  121. 2: {
  122. 'value': 'space',
  123. 'value2': 'SELECT'
  124. },
  125. 3: {
  126. 'value': 'enter',
  127. 'value2': 'START'
  128. },
  129. 4: {
  130. 'value': 'up arrow',
  131. 'value2': 'DPAD_UP'
  132. },
  133. 5: {
  134. 'value': 'down arrow',
  135. 'value2': 'DPAD_DOWN'
  136. },
  137. 6: {
  138. 'value': 'left arrow',
  139. 'value2': 'DPAD_LEFT'
  140. },
  141. 7: {
  142. 'value': 'right arrow',
  143. 'value2': 'DPAD_RIGHT'
  144. },
  145. 8: {
  146. 'value': 's',
  147. 'value2': 'BUTTON_1'
  148. }
  149. },
  150. 1: {},
  151. 2: {},
  152. 3: {}
  153. };
  154. EJS_onGameStart = function(e) {
  155. setTimeout(function() {
  156. window.EJS_emulator.gameManager.simulateInput(0, 3, 1);
  157. setTimeout(function() {
  158. window.EJS_emulator.gameManager.simulateInput(0, 3, 0);
  159. }, 42);
  160. }, 420);
  161. };
  162. EJS_startButtonName = "Start Duality";
  163. </script>
  164. <script src="https://cdn.emulatorjs.org/stable/data/loader.js"></script>
  165. </body>
  166. </html>