- [NEW] Gestió dels events de cada finestra per separat

- [NEW] Symbols per a etiquetar adreces
- [NEW] Mapa de memòria "tocada"
- [NEW] En el mapa de memòria al passar el ratolí mostra l'adreça
- [NEW] En el mapa de memòria es mostra en roig la posició del contador de programa
- [NEW] Reemplaç en els opcodes de adreces conegudes per la seua etiqueta
This commit is contained in:
2024-12-09 15:33:35 +01:00
parent 8fd2eecb85
commit 2f4e79bc50
12 changed files with 299 additions and 104 deletions

View File

@@ -3,6 +3,9 @@
#include "zx_ula.h"
#include <SDL2/SDL.h>
#include "zx_tape.h"
#include "ui_window.h"
#include "z80debug.h"
#include "ui.h"
namespace zxscreen
{
@@ -85,8 +88,50 @@ namespace zxscreen
//printf("COUNT: %i\n", count);
}
bool eventHandler(SDL_Event *e)
{
if ((e->type==SDL_WINDOWEVENT) && (e->window.event==SDL_WINDOWEVENT_CLOSE)) {
return false;
}
if (!z80debug::debugging()) {
if (z80debug::paused()) {
if (e->type == SDL_KEYDOWN) {
if (e->key.keysym.scancode==SDL_SCANCODE_ESCAPE) {
const uint8_t dt = z80::step();
z80debug::cont();
zxscreen::refresh(dt);
}
}
} else {
if (e->type == SDL_KEYDOWN) {
if (e->key.keysym.scancode==SDL_SCANCODE_ESCAPE) {
z80debug::pause();
ui::setrenderer(zxscreen::getrenderer());
zxscreen::redraw();
} else if (e->key.keysym.scancode==SDL_SCANCODE_F1) {
zxscreen::decZoom();
} else if (e->key.keysym.scancode==SDL_SCANCODE_F2) {
zxscreen::incZoom();
} else if (e->key.keysym.scancode==SDL_SCANCODE_F3) {
zxscreen::toggleFullscreen();
} else if (e->key.keysym.scancode==SDL_SCANCODE_F8) {
z80debug::stop();
zxscreen::redraw();
} else if (e->key.keysym.scancode==SDL_SCANCODE_F12) {
zx_tape::play();
} else if (e->key.keysym.scancode==SDL_SCANCODE_F11) {
zx_tape::rewind();
}
}
}
}
return true;
}
void reinit()
{
if (win) ui::window::unregisterWindow(SDL_GetWindowID(win));
if (tex) SDL_DestroyTexture(tex);
if (ren) SDL_DestroyRenderer(ren);
if (win) SDL_DestroyWindow(win);
@@ -96,6 +141,8 @@ namespace zxscreen
ren = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED);
tex = SDL_CreateTexture(ren, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_STREAMING, 352, 296);
ui::window::registerWindow(SDL_GetWindowID(win), eventHandler);
if (fullscreen)
{
int w, h;