2 NEC PC-6001 Emulator 'yaPC-6001'
4 Author : Takeda.Toshiya
12 #include "../mc6847.h"
16 vram_ptr = ram_ptr + 0xe000;
19 void DISPLAY::write_io8(uint32_t addr, uint32_t data)
21 unsigned int VRAMHead[4] = { 0xc000, 0xe000, 0x8000, 0xa000 };
22 uint16_t port=(addr & 0x00ff);
26 vram_ptr = (ram_ptr + VRAMHead[(data & 0x06) >> 1]);
27 d_timer->set_portB0(data);
32 void DISPLAY::draw_screen()
34 d_vdp->write_signal(SIG_MC6847_AG, *vram_ptr, 0x80);
35 d_vdp->write_signal(SIG_MC6847_GM, *vram_ptr >> 4, 1);
36 d_vdp->write_signal(SIG_MC6847_GM, *vram_ptr >> 2, 2);
37 d_vdp->write_signal(SIG_MC6847_GM, *vram_ptr >> 0, 4);
38 d_vdp->write_signal(SIG_MC6847_CSS, *vram_ptr, 0x02);
39 if(*vram_ptr & 0x80) {
40 d_vdp->set_vram_ptr(vram_ptr + 0x200, 0x1800);
42 d_vdp->set_vram_ptr(vram_ptr, 0x1800);
47 #define STATE_VERSION 1
49 #include "../../statesub.h"
51 void DISPLAY::decl_state()
53 enter_decl_state(STATE_VERSION);
55 DECL_STATE_ENTRY_INT32(tmp_vram_size);
60 void DISPLAY::save_state(FILEIO* state_fio)
62 tmp_vram_size = (int)(vram_ptr - ram_ptr);
64 if(state_entry != NULL) {
65 state_entry->save_state(state_fio);
67 // state_fio->FputUint32(STATE_VERSION);
68 // state_fio->FputInt32(this_device_id);
70 // state_fio->FputInt32((int)(vram_ptr - ram_ptr));
73 bool DISPLAY::load_state(FILEIO* state_fio)
76 if(state_entry != NULL) {
77 mb = state_entry->load_state(state_fio);
82 // if(state_fio->FgetUint32() != STATE_VERSION) {
85 // if(state_fio->FgetInt32() != this_device_id) {
88 // vram_ptr = ram_ptr + state_fio->FgetInt32();
89 vram_ptr = ram_ptr + tmp_vram_size;
93 bool DISPLAY::process_state(FILEIO* state_fio, bool loading)
95 if(!state_fio->StateCheckUint32(STATE_VERSION)) {
98 if(!state_fio->StateCheckInt32(this_device_id)) {
102 vram_ptr = ram_ptr + state_fio->FgetInt32_LE();
104 state_fio->FputInt32_LE((int)(vram_ptr - ram_ptr));