[NEW] Inclos un mode de pantalla en que s'actualitze al instant en compte de segons el retraç del crt, per a debuggar que se pinta
This commit is contained in:
10
main.cpp
10
main.cpp
@@ -56,6 +56,12 @@ namespace actions
|
|||||||
return zxscreen::getFullscreen();
|
return zxscreen::getFullscreen();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int fullrefresh(int value)
|
||||||
|
{
|
||||||
|
zxscreen::toggleFullRefresh();
|
||||||
|
return zxscreen::getFullRefresh();
|
||||||
|
}
|
||||||
|
|
||||||
int showAnalyzer(int value)
|
int showAnalyzer(int value)
|
||||||
{
|
{
|
||||||
z80analyze::show();
|
z80analyze::show();
|
||||||
@@ -95,6 +101,8 @@ int main(int argc, char *argv[])
|
|||||||
ui::menu::addoption(menu, "DEC ZOOM", actions::decZoom);
|
ui::menu::addoption(menu, "DEC ZOOM", actions::decZoom);
|
||||||
ui::menu::addoption(menu, "INC ZOOM", actions::incZoom);
|
ui::menu::addoption(menu, "INC ZOOM", actions::incZoom);
|
||||||
ui::menu::addbooloption(menu, "FULLSCREEN", zxscreen::getFullscreen(), actions::fullscreen);
|
ui::menu::addbooloption(menu, "FULLSCREEN", zxscreen::getFullscreen(), actions::fullscreen);
|
||||||
|
ui::menu::addseparator(menu);
|
||||||
|
ui::menu::addbooloption(menu, "FULL REFRESH", zxscreen::getFullRefresh(), actions::fullrefresh);
|
||||||
|
|
||||||
menu = ui::menu::addsubmenu("EMULATION");
|
menu = ui::menu::addsubmenu("EMULATION");
|
||||||
ui::menu::addbooloption(menu, "STOP ON INVALID OP", z80::getOption(Z80_OPTION_STOP_ON_INVALID), actions::decZoom);
|
ui::menu::addbooloption(menu, "STOP ON INVALID OP", z80::getOption(Z80_OPTION_STOP_ON_INVALID), actions::decZoom);
|
||||||
@@ -146,7 +154,7 @@ int main(int argc, char *argv[])
|
|||||||
z80debug::history::gototop();
|
z80debug::history::gototop();
|
||||||
const uint8_t dt = z80::step();
|
const uint8_t dt = z80::step();
|
||||||
z80debug::refresh();
|
z80debug::refresh();
|
||||||
zxscreen::refresh(dt);
|
zxscreen::fullrefresh();
|
||||||
zxscreen::redraw();
|
zxscreen::redraw();
|
||||||
z80analyze::refresh();
|
z80analyze::refresh();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,13 @@
|
|||||||
0x5e38 STACK
|
0x5e38 STACK
|
||||||
|
0x9a01 DRW_ROOM
|
||||||
|
0x9f00 DRW_SCO_HERO
|
||||||
|
0x9f0f VAR_VIDES
|
||||||
|
0x9f8d DRW_SCO_INV
|
||||||
|
0xa00a DRW_SCO_LIVS
|
||||||
|
0xa01a DRW_SCO_NBAG
|
||||||
|
0xa022 DRW_SCO_NARW
|
||||||
|
0xa02a DRW_SCO_PNTS
|
||||||
0xc661 CLEAR_SCR
|
0xc661 CLEAR_SCR
|
||||||
0xed5e MAINLOOP
|
0xed5e MAINLOOP
|
||||||
|
0xf2b1 DRW_HERO
|
||||||
0xfed5 COUNT500
|
0xfed5 COUNT500
|
||||||
|
|||||||
@@ -369,6 +369,7 @@ namespace z80debug
|
|||||||
is_debugging = true;
|
is_debugging = true;
|
||||||
show();
|
show();
|
||||||
/*refresh();*/
|
/*refresh();*/
|
||||||
|
if ( zxscreen::getFullRefresh()) zxscreen::fullrefresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
void cont() {
|
void cont() {
|
||||||
@@ -787,7 +788,7 @@ namespace z80debug
|
|||||||
uint8_t dt = z80::step();
|
uint8_t dt = z80::step();
|
||||||
zx_tape::update(dt);
|
zx_tape::update(dt);
|
||||||
zx_ula::sound_update(dt);
|
zx_ula::sound_update(dt);
|
||||||
zxscreen::refresh(dt);
|
zxscreen::fullrefresh();
|
||||||
z80analyze::refresh();
|
z80analyze::refresh();
|
||||||
} else if (strcmp(cmd, "c")==0 || strcmp(cmd, "cont")==0) {
|
} else if (strcmp(cmd, "c")==0 || strcmp(cmd, "cont")==0) {
|
||||||
z80::step();
|
z80::step();
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ namespace zxscreen
|
|||||||
|
|
||||||
uint8_t zoom = 1;
|
uint8_t zoom = 1;
|
||||||
bool fullscreen = false;
|
bool fullscreen = false;
|
||||||
|
bool full_refresh = true;
|
||||||
int fullscreen_scale = 1;
|
int fullscreen_scale = 1;
|
||||||
SDL_Rect dest_rect;
|
SDL_Rect dest_rect;
|
||||||
|
|
||||||
@@ -194,7 +195,6 @@ namespace zxscreen
|
|||||||
if (color_addr[t_screen] == 1) {
|
if (color_addr[t_screen] == 1) {
|
||||||
*(ptr_pixel++) = border_color;
|
*(ptr_pixel++) = border_color;
|
||||||
*(ptr_pixel++) = border_color;
|
*(ptr_pixel++) = border_color;
|
||||||
//pixels_draw+=2;
|
|
||||||
} else {
|
} else {
|
||||||
uint8_t color = memory[color_addr[t_screen]];
|
uint8_t color = memory[color_addr[t_screen]];
|
||||||
uint8_t c1 = color&0x7, c2 = (color>>3)&0x7;
|
uint8_t c1 = color&0x7, c2 = (color>>3)&0x7;
|
||||||
@@ -210,20 +210,13 @@ namespace zxscreen
|
|||||||
pixels_draw+=2;
|
pixels_draw+=2;
|
||||||
}
|
}
|
||||||
t_screen++;
|
t_screen++;
|
||||||
/*if (pixels_draw>352*296)
|
|
||||||
{
|
|
||||||
printf("PIXELS OVERFLOW: %i\n", pixels_draw);
|
|
||||||
}*/
|
|
||||||
if (t_screen>=69888) {
|
if (t_screen>=69888) {
|
||||||
//printf("PIXELS DRAWN: %i\n", pixels_draw);
|
|
||||||
pixels_draw=0;
|
pixels_draw=0;
|
||||||
t_flash++;
|
t_flash++;
|
||||||
if (t_flash==16) { t_flash=0; flash = !flash; }
|
if (t_flash==16) { t_flash=0; flash = !flash; }
|
||||||
t_screen=0;
|
t_screen=0;
|
||||||
ptr_pixel = zx_pixels;
|
ptr_pixel = zx_pixels;
|
||||||
redraw();
|
redraw();
|
||||||
//while (SDL_GetTicks()-time < 20) {}
|
|
||||||
//time = SDL_GetTicks();
|
|
||||||
z80::interrupt();
|
z80::interrupt();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -232,9 +225,15 @@ namespace zxscreen
|
|||||||
void fullrefresh()
|
void fullrefresh()
|
||||||
{
|
{
|
||||||
t_screen = 0;
|
t_screen = 0;
|
||||||
|
ptr_pixel = zx_pixels;
|
||||||
refresh(69888);
|
refresh(69888);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void debugrefresh(const uint32_t dt)
|
||||||
|
{
|
||||||
|
if (full_refresh) fullrefresh(); else refresh(dt);
|
||||||
|
}
|
||||||
|
|
||||||
void redraw(const bool present)
|
void redraw(const bool present)
|
||||||
{
|
{
|
||||||
if (zx_tape::getplaying() && zx_tape::getOption(ZXTAPE_OPTION_FAST_LOAD)) return;
|
if (zx_tape::getplaying() && zx_tape::getOption(ZXTAPE_OPTION_FAST_LOAD)) return;
|
||||||
@@ -316,6 +315,17 @@ namespace zxscreen
|
|||||||
return fullscreen;
|
return fullscreen;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void toggleFullRefresh()
|
||||||
|
{
|
||||||
|
full_refresh = !full_refresh;
|
||||||
|
}
|
||||||
|
|
||||||
|
const bool getFullRefresh()
|
||||||
|
{
|
||||||
|
return full_refresh;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
SDL_Renderer *getrenderer()
|
SDL_Renderer *getrenderer()
|
||||||
{
|
{
|
||||||
return ren;
|
return ren;
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ namespace zxscreen
|
|||||||
void focus();
|
void focus();
|
||||||
void refresh(const uint32_t dt);
|
void refresh(const uint32_t dt);
|
||||||
void fullrefresh();
|
void fullrefresh();
|
||||||
|
void debugrefresh();
|
||||||
void redraw(const bool present=true);
|
void redraw(const bool present=true);
|
||||||
void present();
|
void present();
|
||||||
void setTitle(const char* title);
|
void setTitle(const char* title);
|
||||||
@@ -17,5 +18,8 @@ namespace zxscreen
|
|||||||
void toggleFullscreen();
|
void toggleFullscreen();
|
||||||
const bool getFullscreen();
|
const bool getFullscreen();
|
||||||
|
|
||||||
|
void toggleFullRefresh();
|
||||||
|
const bool getFullRefresh();
|
||||||
|
|
||||||
SDL_Renderer *getrenderer();
|
SDL_Renderer *getrenderer();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user