@@ -102,8 +102,7 @@ class mbc6_device : public mbc_8k_device_base
102
102
void install_ram () ATTR_COLD;
103
103
104
104
required_device<intelfsh8_device> m_flash;
105
- memory_view m_view_rom_low;
106
- memory_view m_view_rom_high;
105
+ memory_view m_view_rom[2 ];
107
106
memory_view m_view_ram;
108
107
memory_bank_array_creator<2 > m_bank_ram;
109
108
u8 m_bank_mask_ram;
@@ -123,8 +122,7 @@ mbc6_device::mbc6_device(
123
122
u32 clock) :
124
123
mbc_8k_device_base (mconfig, GB_ROM_MBC6, tag, owner, clock),
125
124
m_flash (*this , " flash" ),
126
- m_view_rom_low (*this , " romlow" ),
127
- m_view_rom_high (*this , " romhigh" ),
125
+ m_view_rom{ { *this , " romlow" }, { *this , " romhigh" } },
128
126
m_view_ram (*this , " ram" ),
129
127
m_bank_ram (*this , { " ramlow" , " ramhigh" }),
130
128
m_bank_mask_ram (0U ),
@@ -145,12 +143,12 @@ std::error_condition mbc6_device::load(std::string &message)
145
143
return image_error::BADSOFTWARE;
146
144
147
145
// install views for ROM/flash and RAM
148
- cart_space ()->install_view (0x4000 , 0x5fff , m_view_rom_low );
149
- cart_space ()->install_view (0x6000 , 0x7fff , m_view_rom_high );
146
+ cart_space ()->install_view (0x4000 , 0x5fff , m_view_rom[ 0 ] );
147
+ cart_space ()->install_view (0x6000 , 0x7fff , m_view_rom[ 1 ] );
150
148
cart_space ()->install_view (0xa000 , 0xbfff , m_view_ram);
151
149
152
150
// set up ROM and RAM as appropriate
153
- install_rom (*cart_space (), m_view_rom_low [0 ], m_view_rom_high [0 ]);
151
+ install_rom (*cart_space (), m_view_rom [0 ][ 0 ], m_view_rom[ 1 ] [0 ]);
154
152
install_ram ();
155
153
156
154
// install memory controller handlers
@@ -177,11 +175,11 @@ std::error_condition mbc6_device::load(std::string &message)
177
175
emu::rw_delegate (*this , FUNC (mbc6_device::select_flash)));
178
176
179
177
// install Flash handlers
180
- m_view_rom_low [1 ].install_readwrite_handler (
178
+ m_view_rom[ 0 ] [1 ].install_readwrite_handler (
181
179
0x4000 , 0x5fff ,
182
180
emu::rw_delegate (*this , FUNC (mbc6_device::read_flash<0 >)),
183
181
emu::rw_delegate (*this , FUNC (mbc6_device::write_flash<0 >)));
184
- m_view_rom_high [1 ].install_readwrite_handler (
182
+ m_view_rom[ 1 ] [1 ].install_readwrite_handler (
185
183
0x6000 , 0x7fff ,
186
184
emu::rw_delegate (*this , FUNC (mbc6_device::read_flash<1 >)),
187
185
emu::rw_delegate (*this , FUNC (mbc6_device::write_flash<1 >)));
@@ -230,8 +228,8 @@ void mbc6_device::device_reset()
230
228
m_flash_enable = 0U ;
231
229
m_flash_writable = 0U ;
232
230
233
- m_view_rom_low .select (0 );
234
- m_view_rom_high .select (0 );
231
+ m_view_rom[ 0 ] .select (0 );
232
+ m_view_rom[ 1 ] .select (0 );
235
233
m_view_ram.disable ();
236
234
237
235
if (m_bank_mask_ram)
@@ -270,7 +268,6 @@ void mbc6_device::write_flash(offs_t offset, u8 data)
270
268
void mbc6_device::bank_switch_rom (offs_t offset, u8 data)
271
269
{
272
270
auto const bank (BIT (offset, 12 ));
273
- memory_view &view (bank ? m_view_rom_high : m_view_rom_low);
274
271
m_bank_sel_rom[bank] = data;
275
272
276
273
if (!m_flash_select[bank])
@@ -281,11 +278,11 @@ void mbc6_device::bank_switch_rom(offs_t offset, u8 data)
281
278
" %s: ROM bank %s unmapped\n " ,
282
279
machine ().describe_context (),
283
280
bank ? " high" : " low" );
284
- view .disable (); // is there a chip select for a second program ROM?
281
+ m_view_rom[bank] .disable (); // is there a chip select for a second program ROM?
285
282
}
286
283
else
287
284
{
288
- view .select (0 );
285
+ m_view_rom[bank] .select (0 );
289
286
}
290
287
}
291
288
@@ -299,7 +296,6 @@ void mbc6_device::bank_switch_rom(offs_t offset, u8 data)
299
296
void mbc6_device::select_flash (offs_t offset, u8 data)
300
297
{
301
298
auto const bank (BIT (offset, 12 ));
302
- memory_view &view (bank ? m_view_rom_high : m_view_rom_low);
303
299
m_flash_select[bank] = BIT (data, 3 );
304
300
if (m_flash_select[bank])
305
301
{
@@ -309,25 +305,25 @@ void mbc6_device::select_flash(offs_t offset, u8 data)
309
305
bank ? " high" : " low" ,
310
306
m_flash_enable ? " enabled" : " disabled" );
311
307
if (m_flash_enable)
312
- view .select (1 );
308
+ m_view_rom[bank] .select (1 );
313
309
else
314
- view .disable ();
310
+ m_view_rom[bank] .disable ();
315
311
}
316
312
else if (BIT (m_bank_sel_rom[bank], 7 ))
317
313
{
318
314
LOG (
319
315
" %s: ROM bank %s unmapped\n " ,
320
316
machine ().describe_context (),
321
317
bank ? " high" : " low" );
322
- view .disable (); // is there a chip select for a second program ROM?
318
+ m_view_rom[bank] .disable (); // is there a chip select for a second program ROM?
323
319
}
324
320
else
325
321
{
326
322
LOG (
327
323
" %s: ROM bank %s selected\n " ,
328
324
machine ().describe_context (),
329
325
bank ? " high" : " low" );
330
- view .select (0 );
326
+ m_view_rom[bank] .select (0 );
331
327
}
332
328
333
329
// game writes 0xc6 when selecting ROM during boot - what do the other bits do?
@@ -368,17 +364,17 @@ void mbc6_device::enable_flash(u8 data)
368
364
{
369
365
LOG (" %s: Flash enabled\n " , machine ().describe_context ());
370
366
if (m_flash_select[0 ])
371
- m_view_rom_low .select (1 );
367
+ m_view_rom[ 0 ] .select (1 );
372
368
if (m_flash_select[1 ])
373
- m_view_rom_high .select (1 );
369
+ m_view_rom[ 1 ] .select (1 );
374
370
}
375
371
else
376
372
{
377
373
LOG (" %s: Flash disabled\n " , machine ().describe_context ());
378
374
if (m_flash_select[0 ])
379
- m_view_rom_low .disable ();
375
+ m_view_rom[ 0 ] .disable ();
380
376
if (m_flash_select[1 ])
381
- m_view_rom_high .disable ();
377
+ m_view_rom[ 1 ] .disable ();
382
378
}
383
379
384
380
if (data & ~0x01 )
0 commit comments