2 FUJITSU FM Towns Emulator 'eFMTowns'
4 Author : Kyuma.Ohta <whatisthis.sowhat _at_ gmail.com>
10 #inclide "../towns_common.h"
11 #include "../../fileio.h"
12 #include "./fontroms.h"
16 void FONT_ROMS::initialize()
19 memset(font_kanji16, sizeof(font_kanji16), 0xff);
20 FILEIO* fio = new FILEIO();
22 if(fio->Fopen(create_local_path(_T("FMT_FNT.ROM")), FILEIO_READ_BINARY)) { // FONT
23 fio->Fread(font_kanji16, sizeof(font_kanji16), 1);
27 #if defined(HAVE_20PIXS_FONT)
28 memset(font_kanji20, sizeof(font_kanji20), 0xff);
29 if(fio->Fopen(create_local_path(_T("FMT_F20.ROM")), FILEIO_READ_BINARY)) { // FONT
30 fio->Fread(font_kanji20, sizeof(font_kanji20), 1);
38 uint32_t FONT_ROMS::read_data8(uint32_t addr)
40 if((addr >= 0xc2100000) && (addr < 0xc2140000)) {
41 return (uint32_t)(font_kanji16[addr & 0x3ffff]);
42 } else if((addr >= 0xc2180000) && (addr < 0xc2200000)) {
43 #if defined(HAVE_20PIXS_FONT)
44 return (uint32_t)(font_kanji20[addr & 0x7ffff]);
48 } else if((addr >= 0x000ca000) && (addr < 0x000ca800)) {
49 return (uint32_t)(font_kanji16[0x1e800 + (addr & 0x7ff)]);
50 } else if((addr >= 0x000cb000) && (addr < 0x000cc000)) {
51 return (uint32_t)(font_kanji16[0x1f000 + (addr & 0x7ff)]);
56 uint32_t FONT_ROMS::read_data8w(uint32_t addr, int* wait)
58 if(wait != NULL) *wait = wait_val;
59 return read_data8(addr);
62 void FONT_ROMS::write_data8w(uint32_t addr, uint32_t data, int* wait)
64 if(wait != NULL) *wait = wait_val;
67 void FONT_ROMS::write_signal(int ch, uint32_t data, uint32_t mask)
69 if(ch == SIG_FMTOWNS_SET_MEMWAIT) {
74 #define STATE_VERSION 1
76 bool FONT_ROMS::process_state(FILEIO* state_fio, bool loading)
78 if(!state_fio->StateCheckUint32(STATE_VERSION)) {
81 if(!state_fio->StateCheckInt32(this_device_id)) {
84 state_fio->StateValue(wait_val);