uint16 ShootEmUp::run() { CursorMan.showMouse(false); _vm->_graphics->saveScreen(); _vm->fadeOut(); _vm->_graphics->seuDrawTitle(); _vm->fadeIn(); _vm->_graphics->seuLoad(); // Should we show the instructions? while (!_vm->shouldQuit()) { Common::Event event; _vm->getEvent(event); if (event.type == Common::EVENT_KEYDOWN) { if ((event.kbd.keycode == Common::KEYCODE_i) || (event.kbd.keycode == Common::KEYCODE_F1)) instructions(); break; // We don't show the instructions and simply go on with the minigame if not I or F1 was pressed. } } setup(); while ((_time != 0) && (!_vm->shouldQuit())) { uint32 beginLoop = _vm->_system->getMillis(); blankIt(); hitPeople(); plotThem(); moveThem(); moveAvvy(); bumpFolk(); peopleRunning(); animate(); escapeCheck(); collisionCheck(); updateTime(); check321(); readKbd(); _cp = !_cp; _vm->_graphics->refreshScreen(); uint32 delay = _vm->_system->getMillis() - beginLoop; if (delay <= 55) _vm->_system->delayMillis(55 - delay); // Replaces slowdown(); 55 comes from 18.2 Hz (B Flight). }; _vm->fadeOut(); _vm->_graphics->restoreScreen(); _vm->_graphics->removeBackup(); _vm->fadeIn(); CursorMan.showMouse(true); return _score; }
unsigned char memRead(unsigned short address) { if (address == 0xD013) return readDspCr(); if (address == 0xD012) return readDsp(); if (address == 0xD011) return readKbdCr(); if (address == 0xD010) return readKbd(); return mem[address]; }