- [NEW] ui::placetext() i ui::placechar, pa ficar text en qualsevol pixel

- [NEW] [Z80Analize] backspace esborra tots els tags
- [NEW] [zx-128bankviewer] Es mostra quina pàgina de memòria està asignada a cada bank
- [FIX] [zx_128mem] es filtra el port al que escolta la memòria
- [NEW] [zx_screen] Es mostra en quina pantalla estem (normal o shadow)
- [FIX] [zx_screen] tots els tipos per al calcul de adreces passats a uint32_t
- [NEW] [zx_ula] afegides combinacions de cursors per a major comoditat
This commit is contained in:
2025-07-22 13:31:21 +02:00
parent 4b4e1df8f9
commit 3fd28136f6
8 changed files with 85 additions and 10 deletions

View File

@@ -7,6 +7,7 @@
#include "ui_window.h"
#include "z80debug.h"
#include "ui.h"
#include "zx_128mem.h"
namespace zxscreen
{
@@ -39,11 +40,11 @@ namespace zxscreen
int pixels_draw = 0;
uint16_t pixel_base_addr = 0x4000;
uint16_t color_base_addr = 0x5800;
uint32_t pixel_base_addr = 0x4000;
uint32_t color_base_addr = 0x5800;
uint16_t *pixel_addr = nullptr; //[69888];
uint16_t *color_addr = nullptr; //[69888];
uint32_t *pixel_addr = nullptr; //[69888];
uint32_t *color_addr = nullptr; //[69888];
uint8_t zx_pixels[352*296];
uint8_t *ptr_pixel = zx_pixels;
@@ -56,11 +57,11 @@ namespace zxscreen
if (pixel_addr) free(pixel_addr);
if (color_addr) free(color_addr);
pixel_addr = (uint16_t*)malloc(t_states_total*sizeof(uint16_t));
color_addr = (uint16_t*)malloc(t_states_total*sizeof(uint16_t));
pixel_addr = (uint32_t*)malloc(t_states_total*sizeof(uint32_t));
color_addr = (uint32_t*)malloc(t_states_total*sizeof(uint32_t));
uint16_t *ptr_pixel = pixel_addr;
uint16_t *ptr_color = color_addr;
uint32_t *ptr_pixel = pixel_addr;
uint32_t *ptr_color = color_addr;
// vsync
for (int i=0; i<t_states_per_scanline*vsync_lines;++i) { *(ptr_pixel++) = 0; *(ptr_color++) = SCREEN_SYNC; } // En el 128K 16 passa a ser 15 i 224 passa a ser 228
@@ -300,6 +301,9 @@ namespace zxscreen
// Pintem la textura a pantalla
SDL_RenderCopy(ren, tex, NULL, &dest_rect);
zx_128mem* mem = ((zx_128mem*)z80mem::get());
ui::printtxt(0,0,mem->getShadowScreen()?"SHADOW":"NORMAL", COLOR_WHITE);
if (present)
SDL_RenderPresent(ren);
else