memset(reverse, 0, sizeof(reverse));
}
-void DISPLAY::write_io8(uint32 addr, uint32 data)
+void DISPLAY::write_io8(uint32_t addr, uint32_t data)
{
switch(addr & 0x3ff) {
case 0x110:
}
}
-uint32 DISPLAY::read_io8(uint32 addr)
+uint32_t DISPLAY::read_io8(uint32_t addr)
{
- uint32 val = 0xff;
+ uint32_t val = 0xff;
switch(addr & 0x3ff) {
case 0x110:
if(ymax == 400) {
// 400 lines
for(int y = 0; y < 400; y++) {
- scrntype* dest = emu->screen_buffer(y);
- uint8* src = screen[y];
+ scrntype_t* dest = emu->get_screen_buffer(y);
+ uint8_t* src = screen[y];
for(int x = 0; x < 640; x++) {
dest[x] = palette_pc[src[x]];
}
}
- emu->screen_skip_line = false;
+ emu->screen_skip_line(false);
} else {
// 200 lines
for(int y = 0; y < 200; y++) {
- scrntype* dest0 = emu->screen_buffer(y * 2 + 0);
- scrntype* dest1 = emu->screen_buffer(y * 2 + 1);
- uint8* src = screen[y];
+ scrntype_t* dest0 = emu->get_screen_buffer(y * 2 + 0);
+ scrntype_t* dest1 = emu->get_screen_buffer(y * 2 + 1);
+ uint8_t* src = screen[y];
for(int x = 0; x < 640; x++) {
dest0[x] = palette_pc[src[x]];
}
if(config.scan_line) {
- memset(dest1, 0, 640 * sizeof(scrntype));
+ memset(dest1, 0, 640 * sizeof(scrntype_t));
} else {
- memcpy(dest1, dest0, 640 * sizeof(scrntype));
+ my_memcpy(dest1, dest0, 640 * sizeof(scrntype_t));
}
}
- emu->screen_skip_line = true;
+ emu->screen_skip_line(true);
}
}
bool wy1 = false, wy2 = false, wy3 = false, wy4 = false;
for(int i = 0, total = 0; i < 4 && total < al; i++) {
- uint32 tmp = ra[4 * i];
+ uint32_t tmp = ra[4 * i];
tmp |= ra[4 * i + 1] << 8;
tmp |= ra[4 * i + 2] << 16;
tmp |= ra[4 * i + 3] << 24;
bool wide = ((tmp & 0x80000000) != 0);
for(int y = total; y < total + line && y < ymax; y++) {
- uint8 mapy = mapram[y << 1];
+ uint8_t mapy = mapram[y << 1];
if(mapy & 1) wy1 = !wy1;
if(mapy & 2) wy2 = !wy2;
if(mapy & 4) wy3 = !wy3;
if(wide) {
for(int x = 0; x < 640; x+= 16) {
- uint8 mapx = mapram[(x >> 4) << 1];
+ uint8_t mapx = mapram[(x >> 4) << 1];
if(mapx & 0x10) wx1 = !wx1;
if(mapx & 0x20) wx2 = !wx2;
if(mapx & 0x40) wx3 = !wx3;
int vaddr = ((ptr++) + vma[wn] * 2) & 0xffff;
ptr &= 0xffff;
- uint8 b = (vds[wn] & 1) ? vram_b[vaddr] : 0;
- uint8 r = (vds[wn] & 2) ? vram_r[vaddr] : 0;
- uint8 g = (vds[wn] & 4) ? vram_g[vaddr] : 0;
- uint8 col, bcol = back[wn];
+ uint8_t b = (vds[wn] & 1) ? vram_b[vaddr] : 0;
+ uint8_t r = (vds[wn] & 2) ? vram_r[vaddr] : 0;
+ uint8_t g = (vds[wn] & 4) ? vram_g[vaddr] : 0;
+ uint8_t col, bcol = back[wn];
if(mode_c & 1) {
bcol = 0;
b ^= reverse[wn];
} else {
for(int x = 0; x < 640; x+= 8) {
if(!(x & 8)) {
- uint8 mapx = mapram[(x >> 4) << 1];
+ uint8_t mapx = mapram[(x >> 4) << 1];
if(mapx & 0x10) wx1 = !wx1;
if(mapx & 0x20) wx2 = !wx2;
if(mapx & 0x40) wx3 = !wx3;
int vaddr = ((ptr++) + vma[wn] * 2) & 0xffff;
ptr &= 0xffff;
- uint8 b = (vds[wn] & 1) ? vram_b[vaddr] : 0;
- uint8 r = (vds[wn] & 2) ? vram_r[vaddr] : 0;
- uint8 g = (vds[wn] & 4) ? vram_g[vaddr] : 0;
- uint8 col, bcol = back[wn];
+ uint8_t b = (vds[wn] & 1) ? vram_b[vaddr] : 0;
+ uint8_t r = (vds[wn] & 2) ? vram_r[vaddr] : 0;
+ uint8_t g = (vds[wn] & 4) ? vram_g[vaddr] : 0;
+ uint8_t col, bcol = back[wn];
if(mode_c & 1) {
bcol = 0;
b ^= reverse[wn];
bool wy1 = false, wy2 = false, wy3 = false, wy4 = false;
for(int i = 0, total = 0; i < 4 && total < al; i++) {
- uint32 tmp = ra[4 * i];
+ uint32_t tmp = ra[4 * i];
tmp |= ra[4 * i + 1] << 8;
tmp |= ra[4 * i + 2] << 16;
tmp |= ra[4 * i + 3] << 24;
bool wide = ((tmp & 0x80000000) != 0);
for(int y = total; y < total + line && y < ymax; y++) {
- uint8 mapy = mapram[y << 1];
+ uint8_t mapy = mapram[y << 1];
if(mapy & 1) wy1 = !wy1;
if(mapy & 2) wy2 = !wy2;
if(mapy & 4) wy3 = !wy3;
if(wide) {
for(int x = 0; x < 640; x+= 32) {
- uint8 mapx = mapram[(x >> 4) << 1];
+ uint8_t mapx = mapram[(x >> 4) << 1];
if(mapx & 0x10) wx1 = !wx1;
if(mapx & 0x20) wx2 = !wx2;
if(mapx & 0x40) wx3 = !wx3;
int vaddr = ((ptr++) + vma[wn] * 2) & 0xffff;
ptr &= 0xffff;
- uint8 b = (vds[wn] & 1) ? vram_b[vaddr] : 0;
- uint8 r = (vds[wn] & 2) ? vram_r[vaddr] : 0;
- uint8 g = (vds[wn] & 4) ? vram_g[vaddr] : 0;
- uint8 col, bcol = back[wn];
+ uint8_t b = (vds[wn] & 1) ? vram_b[vaddr] : 0;
+ uint8_t r = (vds[wn] & 2) ? vram_r[vaddr] : 0;
+ uint8_t g = (vds[wn] & 4) ? vram_g[vaddr] : 0;
+ uint8_t col, bcol = back[wn];
if(mode_c & 1) {
bcol = 0;
b ^= reverse[wn];
}
} else {
for(int x = 0; x < 640; x+= 16) {
- uint8 mapx = mapram[(x >> 4) << 1];
+ uint8_t mapx = mapram[(x >> 4) << 1];
if(mapx & 0x10) wx1 = !wx1;
if(mapx & 0x20) wx2 = !wx2;
if(mapx & 0x40) wx3 = !wx3;
int vaddr = ((ptr++) + vma[wn] * 2) & 0xffff;
ptr &= 0xffff;
- uint8 b = (vds[wn] & 1) ? vram_b[vaddr] : 0;
- uint8 r = (vds[wn] & 2) ? vram_r[vaddr] : 0;
- uint8 g = (vds[wn] & 4) ? vram_g[vaddr] : 0;
- uint8 col, bcol = back[wn];
+ uint8_t b = (vds[wn] & 1) ? vram_b[vaddr] : 0;
+ uint8_t r = (vds[wn] & 2) ? vram_r[vaddr] : 0;
+ uint8_t g = (vds[wn] & 4) ? vram_g[vaddr] : 0;
+ uint8_t col, bcol = back[wn];
if(mode_c & 1) {
bcol = 0;
b ^= reverse[wn];
#define STATE_VERSION 1
-void DISPLAY::save_state(FILEIO* state_fio)
+bool DISPLAY::process_state(FILEIO* state_fio, bool loading)
{
- state_fio->FputUint32(STATE_VERSION);
- state_fio->FputInt32(this_device_id);
-
- state_fio->Fwrite(palette_pc, sizeof(palette_pc), 1);
- state_fio->Fwrite(palette, sizeof(palette), 1);
- state_fio->Fwrite(back, sizeof(back), 1);
- state_fio->Fwrite(reverse, sizeof(reverse), 1);
- state_fio->FputUint8(rno);
- state_fio->Fwrite(wregs, sizeof(wregs), 1);
- state_fio->Fwrite(pri, sizeof(pri), 1);
- state_fio->Fwrite(vma, sizeof(vma), 1);
- state_fio->Fwrite(vds, sizeof(vds), 1);
- state_fio->FputUint8(mode_r);
- state_fio->FputUint8(mode_c);
- state_fio->FputUint8(mode_p);
-}
-
-bool DISPLAY::load_state(FILEIO* state_fio)
-{
- if(state_fio->FgetUint32() != STATE_VERSION) {
+ if(!state_fio->StateCheckUint32(STATE_VERSION)) {
return false;
}
- if(state_fio->FgetInt32() != this_device_id) {
+ if(!state_fio->StateCheckInt32(this_device_id)) {
return false;
}
- state_fio->Fread(palette_pc, sizeof(palette_pc), 1);
- state_fio->Fread(palette, sizeof(palette), 1);
- state_fio->Fread(back, sizeof(back), 1);
- state_fio->Fread(reverse, sizeof(reverse), 1);
- rno = state_fio->FgetUint8();
- state_fio->Fread(wregs, sizeof(wregs), 1);
- state_fio->Fread(pri, sizeof(pri), 1);
- state_fio->Fread(vma, sizeof(vma), 1);
- state_fio->Fread(vds, sizeof(vds), 1);
- mode_r = state_fio->FgetUint8();
- mode_c = state_fio->FgetUint8();
- mode_p = state_fio->FgetUint8();
+ //state_fio->StateBuffer(palette_pc, sizeof(palette_pc), 1);
+ for(int i = 0; i < (sizeof(palette) / sizeof(scrntype_t)); i++) {
+ if(loading) {
+ uint8_t r, g, b;
+ r = state_fio->FgetUint8();
+ g = state_fio->FgetUint8();
+ b = state_fio->FgetUint8();
+ palette[i] = RGB_COLOR(r, g, b);
+ } else {
+ uint8_t r, g, b;
+ r = R_OF_COLOR(palette[i]);
+ g = G_OF_COLOR(palette[i]);
+ b = B_OF_COLOR(palette[i]);
+ state_fio->FputUint8(r);
+ state_fio->FputUint8(g);
+ state_fio->FputUint8(b);
+ }
+ }
+ state_fio->StateBuffer(palette, sizeof(palette), 1);
+ state_fio->StateBuffer(back, sizeof(back), 1);
+ state_fio->StateBuffer(reverse, sizeof(reverse), 1);
+ state_fio->StateUint8(rno);
+ state_fio->StateBuffer(wregs, sizeof(wregs), 1);
+ //state_fio->StateBuffer(pri, sizeof(pri), 1);
+ for(int i = 0; i < (sizeof(pri) / sizeof(int)); i++) {
+ state_fio->StateInt32(pri[i]);
+ }
+ //state_fio->StateBuffer(vma, sizeof(vma), 1);
+ for(int i = 0; i < (sizeof(vma) / sizeof(int)); i++) {
+ state_fio->StateInt32(vma[i]);
+ }
+ state_fio->StateBuffer(vds, sizeof(vds), 1);
+ state_fio->StateUint8(mode_r);
+ state_fio->StateUint8(mode_c);
+ state_fio->StateUint8(mode_p);
return true;
}
-