123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- <html>
- <head>
- <title>Duality</title>
- <link rel="icon" type="image/png" href="favicon.png" />
- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/github-fork-ribbon-css/0.2.3/gh-fork-ribbon.min.css" />
- <style>
- body {
- background: linear-gradient(
- to right,
- #000000 0%,
- #000000 50%,
- #ffffff 50%,
- #ffffff 100%
- );
- }
- #wrap, .text {
- width: 100%;
- max-width: 640px; /* 160px * 4 */
- margin: 0px auto;
- }
- #wrap {
- height: 100%;
- max-height: 576px; /* 144px * 4 */
- border-radius: 5px;
- padding: 5px;
- }
- .text {
- text-align: center;
- border-radius: 5px;
- padding: 5px;
- margin-top: 10px;
- margin-bottom: 10px;
- }
- #cart {
- max-width: 90%;
- }
- #controls {
- margin: 0px auto;
- }
- ul {
- list-style-type: none;
- }
- body, #wrap, .text, .github-fork-ribbon:before, .github-fork-ribbon:after {
- background-color: #DDDDDD;
- color: #000000;
- }
- @media (prefers-color-scheme: dark) {
- body, #wrap, .text, .github-fork-ribbon:before, .github-fork-ribbon:after {
- background-color: #111111;
- color: #FFFFFF;
- }
- }
- </style>
- </head>
- <body>
- <div class="text">
- <h1>Duality</h1>
- <p>A GameBoy (Color) port of the GTA San Andreas arcade game Duality.</p>
- <p>
- <img src="https://github.com/xythobuz/Duality/actions/workflows/build.yml/badge.svg" alt="ROM" style="max-width: 100%; height: auto;">
- <img src="https://github.com/xythobuz/Duality/actions/workflows/docs.yml/badge.svg" alt="Web" style="max-width: 100%; height: auto;">
- </p>
- </div>
- <div id="wrap">
- <div id="game"></div>
- </div>
- <div class="text">
- <h2>Controls</h2>
- <table id="controls" border="1">
- <tr><th>Button</th><th>Key</th><th>Action</th></tr>
- <tr><td>D-Pad Left</td><td>Arrow Left</td><td>Rotate Left</td></tr>
- <tr><td>D-Pad Right</td><td>Arrow Right</td><td>Rotate Right</td></tr>
- <tr><td>A</td><td>S</td><td>Accelerate</td></tr>
- <tr><td>B</td><td>A</td><td>Shoot</td></tr>
- <tr><td>Start</td><td>Enter</td><td>Pause</td></tr>
- <tr><td>Select</td><td>Space</td><td>About</td></tr>
- </table>
- <p>On PCs use keyboard input with the keys given above. On mobile devices a touch overlay should automatically appear over the emulator.</p>
- </div>
- <div class="text">
- <h2>Description</h2>
- <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>
- <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>
- <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>
- </div>
- <div class="text">
- <h2>Features</h2>
- <p>This port has some special features that go beyond the original arcade machine.</p>
- <ul>
- <li><b>Multiplayer</b> - Play against a friend with the link cable</li>
- <li><b>Game Boy Printer</b> - make hard copies of the score tables</li>
- </ul>
- <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>
- <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>
- </div>
- <div class="text">
- <h2>Downloads</h2>
- <p>Download the <a href="https://xythobuz.github.io/Duality/duality.gb">ROM</a>!</p>
- <p>Get the source code on <a href="https://codeberg.org/xythobuz/Duality">CodeBerg</a> or <a href="https://github.com/xythobuz/Duality">GitHub</a>.</p>
- </div>
- <div class="text">
- <h2>Artwork</h2>
- <img id="cart" src="cartridge.png">
- </div>
- <div class="text">
- <p>Emulation supported by <a href="https://emulatorjs.org">EmulatorJS</a>.</p>
- </div>
- <a class="github-fork-ribbon fixed right-bottom" href="https://codeberg.org/xythobuz/Duality" data-ribbon="Fork this with Git" title="Fork this with Git">Fork this with Git</a>
- <script>
- EJS_player = "#game";
- EJS_core = "gb";
- EJS_pathtodata = "https://cdn.emulatorjs.org/stable/data/";
- EJS_gameUrl = "https://xythobuz.github.io/Duality/duality.gb";
- EJS_alignStartButton = "center";
- EJS_backgroundImage = "https://xythobuz.github.io/Duality/cartridge.png";
- if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
- EJS_backgroundColor = "#111111";
- } else {
- EJS_backgroundColor = "#DDDDDD";
- }
- EJS_defaultControls = {
- 0: {
- 0: {
- 'value': 'a',
- 'value2': 'BUTTON_2'
- },
- 2: {
- 'value': 'space',
- 'value2': 'SELECT'
- },
- 3: {
- 'value': 'enter',
- 'value2': 'START'
- },
- 4: {
- 'value': 'up arrow',
- 'value2': 'DPAD_UP'
- },
- 5: {
- 'value': 'down arrow',
- 'value2': 'DPAD_DOWN'
- },
- 6: {
- 'value': 'left arrow',
- 'value2': 'DPAD_LEFT'
- },
- 7: {
- 'value': 'right arrow',
- 'value2': 'DPAD_RIGHT'
- },
- 8: {
- 'value': 's',
- 'value2': 'BUTTON_1'
- }
- },
- 1: {},
- 2: {},
- 3: {}
- };
- EJS_onGameStart = function(e) {
- setTimeout(function() {
- window.EJS_emulator.gameManager.simulateInput(0, 3, 1);
- setTimeout(function() {
- window.EJS_emulator.gameManager.simulateInput(0, 3, 0);
- }, 42);
- }, 420);
- };
- EJS_startButtonName = "Start Duality";
- </script>
- <script src="https://cdn.emulatorjs.org/stable/data/loader.js"></script>
- </body>
- </html>
|