- Afegim el tap i el savestate de Alien 8 per a provar

- Provant el berserk mode
- Medint els t-states de altra forma
- iff1, iff2 i im afegits al array de registres de la cpu
- [NEW] getRegs() del modul z80
- [NEW] loadstate() i savestate() al modul z80debug
- [NEW] "load arxiu" i "save arxiu" en consola per a carregar i guardar savestates
- [ONGOING] "tape load arxiu" i "tape play" per a canviar de cinta i playarla
- Buffer de audio més gran. Ara el buffer es circular. Continuem intentant desfer-se del jittering
This commit is contained in:
2024-12-02 15:32:09 +01:00
parent 4a9b13126b
commit 18406d4332
9 changed files with 95 additions and 33 deletions

View File

@@ -3,6 +3,7 @@
#include "z80.h"
#include "z80dis.h"
#include "zx_ula.h"
#include "zx_tape.h"
namespace z80debug
{
#define CHR_W 6
@@ -421,16 +422,33 @@ namespace z80debug
int address = getnum(cmd);
if (address<0 || address>65536) { strcpy(console_error, "Illegal memory address"); return; }
mem_viewer_pos = address;
} else if (strcmp(cmd, "st")==0 || strcmp(cmd, "save")==0) {
getcmd();
char filename[256];
strcpy(filename, cmd);
savestate(filename);
} else if (strcmp(cmd, "l")==0 || strcmp(cmd, "load")==0) {
getcmd();
char filename[256];
strcpy(filename, cmd);
//getcmd();
//char address[256];
//strcpy(address, cmd);
//loadngo(filename, address);
loadstate(filename);
} else if (strcmp(cmd, "t")==0 || strcmp(cmd, "tape")==0) {
getcmd();
char address[256];
strcpy(address, cmd);
loadngo(filename, address);
}
}
if (strcmp(cmd, "load")==0) {
getcmd();
char filename[256];
strcpy(filename, cmd);
zx_tape::load(filename);
} else if (strcmp(cmd, "play")==0) {
zx_tape::play();
}
}
}
const bool isbreak(const uint16_t address, const uint8_t type)
{
@@ -465,4 +483,24 @@ namespace z80debug
z80::setPC(address);
is_debugging = false;
}
void savestate(const char *filename)
{
uint8_t *regs = z80::getRegs();
uint8_t *memory = z80::getMem();
FILE *f = fopen(filename, "wb");
fwrite(regs, 31, 1, f);
fwrite(&memory[16*1024], 48*1024, 1, f);
fclose(f);
}
void loadstate(const char *filename)
{
uint8_t *regs = z80::getRegs();
uint8_t *memory = z80::getMem();
FILE *f = fopen(filename, "rb");
fread(regs, 31, 1, f);
fread(&memory[16*1024], 48*1024, 1, f);
fclose(f);
}
}