u16 read16(const u32 address) { switch (address >> 24) { case 8: case 9: case 10: case 11: case 12: if (rtcIsEnabled() && (address == 0x80000c4 || address == 0x80000c6 || address == 0x80000c8)) return rtcRead(address); else return READ16LE(((u16 *)&rom[address & 0x1FFFFFE])); break; case 13: if (game.hasEEPROM()) return eepromRead(address); break; case 14: if (game.hasSRAM()) return sramRead(address); else if (game.hasFlash()) return flashRead(address); break; default: break; } return 0; }
u32 read32(const u32 address) { switch (address >> 24) { case 8: case 9: case 10: case 11: case 12: return READ32LE(((u32 *)&rom[address&0x1FFFFFC])); break; case 13: if (game.hasEEPROM()) return eepromRead(address); break; case 14: if (game.hasSRAM()) return sramRead(address); else if (game.hasFlash()) return flashRead(address); break; default: break; } return 0; }
void printBoard() { int i, j; alt_printf(" 0 1 2 3 4 5 6 7 8 9\n"); // prints the top row of number for (i = 0; i < 10; i++) { alt_printf("%x ", i); for (j = 0; j < 10; j++) { alt_printf("%c ", sramRead(j + i * 10)); } alt_putstr("\n"); } }
u8 read8(const u32 address) { switch (address >> 24) { case 8: case 9: case 10: case 11: case 12: return rom[address & 0x1FFFFFF]; break; case 13: if (game.hasEEPROM()) return eepromRead(address); break; case 14: if (game.hasSRAM()) return sramRead(address); else if (game.hasFlash()) return flashRead(address); /*if (game.hasMotionSensor()) { switch (address & 0x00008f00) { case 0x8200: return systemGetSensorX() & 255; case 0x8300: return (systemGetSensorX() >> 8)|0x80; case 0x8400: return systemGetSensorY() & 255; case 0x8500: return systemGetSensorY() >> 8; } }*/ break; default: break; } return 0; }
int main() { *transmit_enable = 0; *sram_we = 1; *sram_oe = 1; gameInit(); int playerNum = getPlayerNum(); printBoard(); while (sramRead(keepScore) < 11) { switch (playerNum) { case '1': playerOnePlay(); break; case '2': playerTwoPlay(); break; } } alt_putstr("You win!"); return 0; }