summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/pc9801.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/pc9801.cpp')
-rw-r--r--src/mame/drivers/pc9801.cpp23
1 files changed, 15 insertions, 8 deletions
diff --git a/src/mame/drivers/pc9801.cpp b/src/mame/drivers/pc9801.cpp
index e1feb1639b5..196a0af79fe 100644
--- a/src/mame/drivers/pc9801.cpp
+++ b/src/mame/drivers/pc9801.cpp
@@ -1365,7 +1365,11 @@ READ16_MEMBER(pc9801_state::pc9821_grcg_gvram_r)
{
if(m_ex_video_ff[ANALOG_256_MODE])
{
- return space.read_word(0xf00000|(offset*2)|((m_analog256.write_bank)*0x8000),mem_mask);
+ u16 *ext_gvram = (u16 *)m_ext_gvram.target();
+ int bank = offset >> 14;
+ if(bank <= 1)
+ return ext_gvram[((m_analog256.bank[bank])*0x4000) + (offset & 0x3fff)];
+ return 0xffff;
}
return grcg_gvram_r(space,offset,mem_mask);
@@ -1375,7 +1379,10 @@ WRITE16_MEMBER(pc9801_state::pc9821_grcg_gvram_w)
{
if(m_ex_video_ff[ANALOG_256_MODE])
{
- space.write_word(0xf00000|(offset*2)|(m_analog256.write_bank*0x8000),data,mem_mask);
+ u16 *ext_gvram = (u16 *)m_ext_gvram.target();
+ int bank = offset >> 14;
+ if(bank <= 1)
+ COMBINE_DATA(&ext_gvram[((m_analog256.bank[bank])*0x4000) + (offset & 0x3fff)]);
return;
}
@@ -1388,8 +1395,8 @@ READ16_MEMBER(pc9801_state::pc9821_grcg_gvram0_r)
{
switch(offset*2)
{
- case 4: return m_analog256.write_bank;
-// case 6: return m_analog256.read_bank;
+ case 4: return m_analog256.bank[0] & 0xf;
+ case 6: return m_analog256.bank[1] & 0xf;
}
//return 0;
@@ -1405,8 +1412,8 @@ WRITE16_MEMBER(pc9801_state::pc9821_grcg_gvram0_w)
//printf("%08x %08x\n",offset*2,data);
switch(offset*2)
{
- case 4: COMBINE_DATA(&m_analog256.write_bank); break;
-// case 6: COMBINE_DATA(&m_analog256.read_bank); break;
+ case 4: COMBINE_DATA(&m_analog256.bank[0]); break;
+ case 6: COMBINE_DATA(&m_analog256.bank[1]); break;
}
//return;
}
@@ -1417,12 +1424,12 @@ WRITE16_MEMBER(pc9801_state::pc9821_grcg_gvram0_w)
void pc9801_state::pc9821_map(address_map &map)
{
- //AM_RANGE(0x00080000, 0x0009ffff) AM_READWRITE8(winram_r, winram_w, 0xffffffff)
+ //map(0x00080000, 0x0009ffff).rw(this, FUNC(pc9801_state::winram_r), FUNC(pc9801_state::winram_w))
map(0x000a0000, 0x000a3fff).rw(this, FUNC(pc9801_state::tvram_r), FUNC(pc9801_state::tvram_w));
map(0x000a4000, 0x000a4fff).rw(this, FUNC(pc9801_state::pc9801rs_knjram_r), FUNC(pc9801_state::pc9801rs_knjram_w));
map(0x000a8000, 0x000bffff).rw(this, FUNC(pc9801_state::pc9821_grcg_gvram_r), FUNC(pc9801_state::pc9821_grcg_gvram_w));
map(0x000cc000, 0x000cdfff).rom().region("sound_bios", 0); //sound BIOS
-// AM_RANGE(0x000d8000, 0x000d9fff) AM_ROM AM_REGION("ide",0)
+ //map(0x000d8000, 0x000d9fff).rom().region("ide",0)
map(0x000da000, 0x000dbfff).ram(); // ide ram
map(0x000e0000, 0x000e7fff).rw(this, FUNC(pc9801_state::pc9821_grcg_gvram0_r), FUNC(pc9801_state::pc9821_grcg_gvram0_w));
map(0x000e8000, 0x000fffff).m(m_ipl, FUNC(address_map_bank_device::amap16));