- Sistema de menus operatiu, falta ficar-los tots
- Afegit .tap del Fernando Martín. Investigar perqué falla.
This commit is contained in:
51
main.cpp
51
main.cpp
@@ -15,6 +15,40 @@ uint8_t memory[65536];
|
||||
uint32_t time = 0;
|
||||
uint32_t t_states = 0;
|
||||
|
||||
namespace actions
|
||||
{
|
||||
void exitMenu()
|
||||
{
|
||||
const uint8_t dt = z80::step();
|
||||
z80debug::cont();
|
||||
zxscreen::refresh(dt);
|
||||
}
|
||||
|
||||
int berserk(int value)
|
||||
{
|
||||
zx_tape::setberserk(!zx_tape::getberserk());
|
||||
return zx_tape::getberserk();
|
||||
}
|
||||
|
||||
int decZoom(int value)
|
||||
{
|
||||
zxscreen::decZoom();
|
||||
return 0;
|
||||
}
|
||||
|
||||
int incZoom(int value)
|
||||
{
|
||||
zxscreen::incZoom();
|
||||
return 0;
|
||||
}
|
||||
|
||||
int fullscreen(int value)
|
||||
{
|
||||
zxscreen::toggleFullscreen();
|
||||
return zxscreen::getFullscreen();
|
||||
}
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
FILE* f = fopen("48.rom", "rb");
|
||||
@@ -29,14 +63,22 @@ int main(int argc, char *argv[])
|
||||
zxscreen::init();
|
||||
|
||||
ui::menu::init();
|
||||
ui::menu::setexitcallback(actions::exitMenu);
|
||||
|
||||
int menu = ui::menu::addsubmenu("FILE");
|
||||
ui::menu::addoption(menu, "LOAD TAPE", nullptr);
|
||||
ui::menu::addoption(menu, "SAVE TAPE", nullptr);
|
||||
ui::menu::addseparator(menu);
|
||||
ui::menu::addoption(menu, "LOAD STATE", nullptr);
|
||||
ui::menu::addoption(menu, "SAVE STATE", nullptr);
|
||||
menu = ui::menu::addsubmenu("OPTIONS");
|
||||
ui::menu::addbooloption(menu, "BERSERK MODE", false, nullptr);
|
||||
|
||||
menu = ui::menu::addsubmenu("TAPE");
|
||||
ui::menu::addbooloption(menu, "BERSERK MODE", zx_tape::getberserk(), actions::berserk);
|
||||
|
||||
menu = ui::menu::addsubmenu("SCREEN");
|
||||
ui::menu::addoption(menu, "DEC ZOOM", actions::decZoom);
|
||||
ui::menu::addoption(menu, "INC ZOOM", actions::incZoom);
|
||||
ui::menu::addbooloption(menu, "FULLSCREEN", zxscreen::getFullscreen(), actions::fullscreen);
|
||||
|
||||
zx_ula::sound_init();
|
||||
|
||||
@@ -55,6 +97,7 @@ int main(int argc, char *argv[])
|
||||
while (SDL_PollEvent(&e))
|
||||
{
|
||||
if (e.type == SDL_QUIT) { should_exit=true; break; }
|
||||
if (e.type == SDL_MOUSEBUTTONUP && e.button.button==1) ui::setClicked(true);
|
||||
if ((e.type==SDL_WINDOWEVENT) && (e.window.event==SDL_WINDOWEVENT_CLOSE)) {
|
||||
should_exit=true; break;
|
||||
}
|
||||
@@ -115,7 +158,6 @@ int main(int argc, char *argv[])
|
||||
z80debug::stop();
|
||||
zxscreen::redraw();
|
||||
} else if (e.key.keysym.scancode==SDL_SCANCODE_F12) {
|
||||
zx_tape::go_berserk();
|
||||
zx_tape::play();
|
||||
} else if (e.key.keysym.scancode==SDL_SCANCODE_F11) {
|
||||
zx_tape::rewind();
|
||||
@@ -134,7 +176,7 @@ int main(int argc, char *argv[])
|
||||
t_states += dt;
|
||||
zx_tape::update(dt);
|
||||
|
||||
while (zx_tape::berserk())
|
||||
while (zx_tape::getplaying() && zx_tape::getberserk())
|
||||
{
|
||||
zx_tape::update(z80::step());
|
||||
}
|
||||
@@ -159,6 +201,7 @@ int main(int argc, char *argv[])
|
||||
ui::menu::show();
|
||||
zxscreen::present();
|
||||
}
|
||||
ui::setClicked(false);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user