From 486bd648d3e6a7545476053df655fdcb2b948c2b Mon Sep 17 00:00:00 2001 From: Raimon Zamora Date: Tue, 3 Dec 2024 22:09:52 +0100 Subject: [PATCH] =?UTF-8?q?-=20Sistema=20de=20menus=20operatiu,=20falta=20?= =?UTF-8?q?ficar-los=20tots=20-=20Afegit=20.tap=20del=20Fernando=20Mart?= =?UTF-8?q?=C3=ADn.=20Investigar=20perqu=C3=A9=20falla.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fernandomartin.tap | Bin 0 -> 47196 bytes main.cpp | 51 +++++++++++++++++++++++++++++++++++++++++---- ui.cpp | 12 +++++++++++ ui.h | 2 ++ ui_menu.cpp | 21 +++++++++++++++---- ui_menu.h | 1 + zx_screen.cpp | 19 +++++++++++++++-- zx_screen.h | 1 + zx_tape.cpp | 6 +++--- zx_tape.h | 5 +++-- 10 files changed, 103 insertions(+), 15 deletions(-) create mode 100644 fernandomartin.tap diff --git a/fernandomartin.tap b/fernandomartin.tap new file mode 100644 index 0000000000000000000000000000000000000000..4230123e9996e2ba08e06116747e2b13e8a25b02 GIT binary patch literal 47196 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 literal 0 HcmV?d00001 diff --git a/main.cpp b/main.cpp index 819d97d..50ed0e7 100644 --- a/main.cpp +++ b/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; diff --git a/ui.cpp b/ui.cpp index 323c462..4e695ff 100644 --- a/ui.cpp +++ b/ui.cpp @@ -29,6 +29,8 @@ namespace ui uint8_t offset_x = 0; uint8_t offset_y = 0; + bool clicked = false; + void init() { surf = SDL_LoadBMP("font.bmp"); @@ -79,4 +81,14 @@ namespace ui for (int i=0; i options; }; + void(*exit_callback)(void) = nullptr; std::vector menus; int visible_menu = -1; int menu_x = 0; @@ -41,10 +42,11 @@ namespace ui int mx, my; Uint32 mb = SDL_GetMouseState(&mx, &my); mx=mx/CHR_W; my=my/CHR_H; - ui::printrect(0, 0, 59, 1, COLOR_BLACK); + int w; + ui::printrect(0, 0, 320, 1, COLOR_BLACK); int opt_pos=1; int index=0; - for (auto menu : menus) + for (auto &menu : menus) { const int text_size = (menu.label.size()+2); uint8_t text_color = COLOR_WHITE; @@ -62,10 +64,10 @@ namespace ui if (visible_menu!=-1) { opt_pos=2; - menu_t m = menus[visible_menu]; + menu_t &m = menus[visible_menu]; ui::printrect(menu_x, 1, 22, m.options.size()+2, COLOR_BLACK); ui::box(menu_x, 1, 22, m.options.size()+2, COLOR_WHITE); - for (auto option : m.options) + for (auto &option : m.options) { if (option.type!=OPTION_TYPE_SEPARATOR) { @@ -75,6 +77,12 @@ namespace ui { ui::printrect(menu_x+1, opt_pos, 20, 1, COLOR_DARK_BLUE); text_color = COLOR_WHITE; + if (ui::getClicked()) + { + if (option.callback) option.value = option.callback(option.value); + if (exit_callback) exit_callback(); + return; + } } ui::printtxt(menu_x+1, opt_pos, option.label.c_str(), text_color); @@ -89,6 +97,11 @@ namespace ui } } + void setexitcallback(void(*callback)(void)) + { + exit_callback = callback; + } + const int addsubmenu(const char *label) { menu_t m; diff --git a/ui_menu.h b/ui_menu.h index e2001ed..0c849ee 100644 --- a/ui_menu.h +++ b/ui_menu.h @@ -6,6 +6,7 @@ namespace ui { void init(); void show(); + void setexitcallback(void(*callback)(void)); const int addsubmenu(const char *label); void addoption(int menu, const char *label, int(*callback)(int)); void addbooloption(int menu, const char *label, bool default_value, int(*callback)(int)); diff --git a/zx_screen.cpp b/zx_screen.cpp index 941d3f4..6963736 100644 --- a/zx_screen.cpp +++ b/zx_screen.cpp @@ -175,7 +175,7 @@ namespace zxscreen void redraw(const bool present) { - if (zx_tape::berserk()) return; + if (zx_tape::getplaying() && zx_tape::getberserk()) return; Uint32* pixels; int pitch; @@ -192,7 +192,17 @@ namespace zxscreen // Pintem la textura a pantalla SDL_RenderCopy(ren, tex, NULL, &dest_rect); - if (present) SDL_RenderPresent(ren); + if (present) + SDL_RenderPresent(ren); + else + { + SDL_SetRenderDrawBlendMode(ren, SDL_BLENDMODE_BLEND); + SDL_SetRenderDrawColor(ren, 0, 0, 0, 128); + SDL_Rect rect {0,0,352*zoom,296*zoom}; + if (fullscreen) SDL_GetWindowSize(win, &rect.w, &rect.h); + SDL_RenderFillRect(ren, &rect); + } + } void present() @@ -229,6 +239,11 @@ namespace zxscreen reinit(); } + const bool getFullscreen() + { + return fullscreen; + } + SDL_Renderer *getrenderer() { return ren; diff --git a/zx_screen.h b/zx_screen.h index 2b22d80..9967312 100644 --- a/zx_screen.h +++ b/zx_screen.h @@ -12,6 +12,7 @@ namespace zxscreen void incZoom(); void decZoom(); void toggleFullscreen(); + const bool getFullscreen(); SDL_Renderer *getrenderer(); } diff --git a/zx_tape.cpp b/zx_tape.cpp index 5c0cf63..0b842e2 100644 --- a/zx_tape.cpp +++ b/zx_tape.cpp @@ -219,7 +219,7 @@ namespace zx_tape zx_ula::set_ear(pulse_level); } - void go_berserk() { berserk_mode = true; } - const bool berserk() { return berserk_mode; } - + void setberserk(const bool value) { berserk_mode = value; } + const bool getberserk() { return berserk_mode; } + const bool getplaying() { return playing; } } diff --git a/zx_tape.h b/zx_tape.h index ed40e4b..f62629f 100644 --- a/zx_tape.h +++ b/zx_tape.h @@ -8,6 +8,7 @@ namespace zx_tape void stop(); void rewind(); void update(const uint8_t dt); - void go_berserk(); - const bool berserk(); + void setberserk(const bool value); + const bool getberserk(); + const bool getplaying(); }