Previous 199869 Revisions Next

r32617 Friday 10th October, 2014 at 11:09:17 UTC by Curt Coder
(MESS) vic20: Added CPLD image to Final Expansion 3. (nw)
[src/emu/bus/vic20]exp.h fe3.c fe3.h

trunk/src/emu/bus/vic20/fe3.c
r32616r32617
2727//  MACROS/CONSTANTS
2828//**************************************************************************
2929
30#define AM29F040_TAG  "am29f040"
30#define AM29F040_TAG    "ic1"
31#define ATMEGA1284_TAG  "ic5"
32#define ATF1504AS_TAG   "ic4"
3133
3234#define REG1_BANK \
3335    ((m_reg1 & 0x7f) << 15)
3436
35#define REG2_BLK0_VISIBLE \
36    (!(m_reg2 & REG2_BLK0))
37#define LORAM_HIDDEN \
38    (m_reg2 & REG2_BLK0)
3739
38#define REG2_BLK1_VISIBLE \
39    (!(m_reg2 & REG2_BLK1))
40#define BLK1_HIDDEN \
41    (m_reg2 & REG2_BLK1)
4042
41#define REG2_BLK2_VISIBLE \
42    (!(m_reg2 & REG2_BLK2))
43#define BLK2_HIDDEN \
44    (m_reg2 & REG2_BLK2)
4345
44#define REG2_BLK3_VISIBLE \
45    (!(m_reg2 & REG2_BLK3))
46#define BLK3_HIDDEN \
47    (m_reg2 & REG2_BLK3)
4648
47#define REG2_BLK5_VISIBLE \
48    (!(m_reg2 & REG2_BLK5))
49#define BLK5_HIDDEN \
50    (m_reg2 & REG2_BLK5)
4951
52#define REGISTERS_HIDDEN \
53    ((m_lockbit && ((m_reg1 & REG1_MODE_MASK) == REG1_START)) || (m_reg2 & REG2_IO3))
5054
5155
56
5257//**************************************************************************
5358//  DEVICE DEFINITIONS
5459//**************************************************************************
r32616r32617
6267
6368ROM_START( vic20_fe3 )
6469   ROM_REGION( 0x80000, AM29F040_TAG, 0 )
65   ROM_LOAD( "fe3r022d.bin", 0x00000, 0x80000, CRC(f4ff4aee) SHA1(1a389120159dee09c0f03ecb8fcd51ea2a2d2306) )
70   ROM_LOAD( "fe3r022d.ic1", 0x00000, 0x80000, CRC(f4ff4aee) SHA1(1a389120159dee09c0f03ecb8fcd51ea2a2d2306) )
71
72   ROM_REGION( 0x10b6, ATF1504AS_TAG, 0 )
73   ROM_LOAD( "vc20final-v3-2.ic4", 0x000, 0x10b6, CRC(975b7197) SHA1(e64d69870b757a409abeb5f19e34866eef37ab18) )
6674ROM_END
6775
6876
r32616r32617
137145{
138146   m_reg1 = 0;
139147   m_reg2 = 0;
140   m_lockbit = true;
141148}
142149
143150
r32616r32617
155162      {
156163         data = m_flash_rom->read(get_address(0, 3, offset));
157164
158         m_lockbit = true;
165         m_lockbit = 1;
159166      }
160167
161168      // read from registers
162      if (!io3 && !m_lockbit && ((offset & 0x1c02) == 0x1c02))
169      if (!io3 && !REGISTERS_HIDDEN && BIT(offset, 1))
163170      {
164171         data = read_register(BIT(offset, 0));
165172      }
r32616r32617
167174
168175   case REG1_SUPER_ROM:
169176      // read from RAM bank 0
170      if ((!ram1 || !ram2 || !ram3) && REG2_BLK0_VISIBLE)
177      if ((!ram1 || !ram2 || !ram3) && !LORAM_HIDDEN)
171178      {
172179         data = m_ram[get_address(0, 0, offset)];
173180      }
174181     
175182      // read from ROM
176      if (!blk1 && REG2_BLK1_VISIBLE)
183      if (!blk1 && !BLK1_HIDDEN)
177184      {
178185         data = m_flash_rom->read(get_address(REG1_BANK, 0, offset));
179186      }
180      if (!blk2 && REG2_BLK2_VISIBLE)
187      if (!blk2 && !BLK2_HIDDEN)
181188      {
182189         data = m_flash_rom->read(get_address(REG1_BANK, 1, offset));
183190      }
184      if (!blk3 && REG2_BLK3_VISIBLE)
191      if (!blk3 && !BLK3_HIDDEN)
185192      {
186193         data = m_flash_rom->read(get_address(REG1_BANK, 2, offset));
187194      }
188      if (!blk5 && REG2_BLK5_VISIBLE)
195      if (!blk5 && !BLK5_HIDDEN)
189196      {
190197         data = m_flash_rom->read(get_address(REG1_BANK, 3, offset));
191198      }
192199
193200      // read from registers
194      if (!io3 && !(m_reg2 & REG2_IO3) && ((offset & 0x1c02) == 0x1c02))
201      if (!io3 && !REGISTERS_HIDDEN && BIT(offset, 1))
195202      {
196203         data = read_register(BIT(offset, 0));
197204      }
r32616r32617
199206     
200207   case REG1_RAM_1:
201208      // read from RAM bank 0
202      if ((!ram1 || !ram2 || !ram3) && REG2_BLK0_VISIBLE)
209      if ((!ram1 || !ram2 || !ram3) && !LORAM_HIDDEN)
203210      {
204211         data = m_ram[get_address(0, 0, offset)];
205212      }
206213
207214      // read from RAM bank 1
208      if (!blk1 && REG2_BLK1_VISIBLE)
215      if (!blk1 && !BLK1_HIDDEN)
209216      {
210217         data = m_ram[get_address(1, 0, offset)];
211218      }
212      if (!blk2 && REG2_BLK2_VISIBLE)
219      if (!blk2 && !BLK2_HIDDEN)
213220      {
214221         data = m_ram[get_address(1, 1, offset)];
215222      }
216      if (!blk3 && REG2_BLK3_VISIBLE)
223      if (!blk3 && !BLK3_HIDDEN)
217224      {
218225         data = m_ram[get_address(1, 2, offset)];
219226      }
220      if (!blk5 && REG2_BLK5_VISIBLE)
227      if (!blk5 && !BLK5_HIDDEN)
221228      {
222229         data = m_ram[get_address(1, 3, offset)];
223230      }
224231
225232      // read from registers
226      if (!io3 && !(m_reg2 & REG2_IO3) && ((offset & 0x1c02) == 0x1c02))
233      if (!io3 && !REGISTERS_HIDDEN && BIT(offset, 1))
227234      {
228235         data = read_register(BIT(offset, 0));
229236      }
r32616r32617
231238     
232239   case REG1_RAM_2:
233240      // read from RAM bank 0
234      if ((!ram1 || !ram2 || !ram3) && REG2_BLK0_VISIBLE)
241      if ((!ram1 || !ram2 || !ram3) && !LORAM_HIDDEN)
235242      {
236243         data = m_ram[get_address(0, 0, offset)];
237244      }
238245
239246      // read from RAM bank 1 or 2
240      if (!blk1 && REG2_BLK1_VISIBLE)
247      if (!blk1 && !BLK1_HIDDEN)
241248      {
242249         data = m_ram[get_address((m_reg1 & REG1_BLK1) ? 2 : 1, 0, offset)];
243250      }
244      if (!blk2 && REG2_BLK2_VISIBLE)
251      if (!blk2 && !BLK2_HIDDEN)
245252      {
246253         data = m_ram[get_address((m_reg1 & REG1_BLK2) ? 2 : 1, 1, offset)];
247254      }
248      if (!blk3 && REG2_BLK3_VISIBLE)
255      if (!blk3 && !BLK3_HIDDEN)
249256      {
250257         data = m_ram[get_address((m_reg1 & REG1_BLK3) ? 2 : 1, 2, offset)];
251258      }
252      if (!blk5 && REG2_BLK5_VISIBLE)
259      if (!blk5 && !BLK5_HIDDEN)
253260      {
254261         data = m_ram[get_address((m_reg1 & REG1_BLK5) ? 2 : 1, 3, offset)];
255262      }
256263
257264      // read from registers
258      if (!io3 && !(m_reg2 & REG2_IO3) && ((offset & 0x1c02) == 0x1c02))
265      if (!io3 && !REGISTERS_HIDDEN && BIT(offset, 1))
259266      {
260267         data = read_register(BIT(offset, 0));
261268      }
r32616r32617
263270     
264271   case REG1_SUPER_RAM:
265272      // read from RAM bank 0
266      if ((!ram1 || !ram2 || !ram3) && REG2_BLK0_VISIBLE)
273      if ((!ram1 || !ram2 || !ram3) && !LORAM_HIDDEN)
267274      {
268275         data = m_ram[get_address(0, 0, offset)];
269276      }
270277
271278      // read from any RAM bank
272      if (!blk1 && REG2_BLK1_VISIBLE)
279      if (!blk1 && !BLK1_HIDDEN)
273280      {
274281         data = m_ram[get_address(REG1_BANK, 0, offset)];
275282      }
276      if (!blk2 && REG2_BLK2_VISIBLE)
283      if (!blk2 && !BLK2_HIDDEN)
277284      {
278285         data = m_ram[get_address(REG1_BANK, 1, offset)];
279286      }
280      if (!blk3 && REG2_BLK3_VISIBLE)
287      if (!blk3 && !BLK3_HIDDEN)
281288      {
282289         data = m_ram[get_address(REG1_BANK, 2, offset)];
283290      }
284      if (!blk5 && REG2_BLK5_VISIBLE)
291      if (!blk5 && !BLK5_HIDDEN)
285292      {
286293         data = m_ram[get_address(REG1_BANK, 3, offset)];
287294      }
288295
289296      // read from registers
290      if (!io3 && !(m_reg2 & REG2_IO3) && ((offset & 0x1c02) == 0x1c02))
297      if (!io3 && !REGISTERS_HIDDEN && BIT(offset, 1))
291298      {
292299         data = read_register(BIT(offset, 0));
293300      }
r32616r32617
295302     
296303   case REG1_RAM_ROM:
297304      // read from RAM bank 0
298      if ((!ram1 || !ram2 || !ram3) && REG2_BLK0_VISIBLE)
305      if ((!ram1 || !ram2 || !ram3) && !LORAM_HIDDEN)
299306      {
300307         data = m_ram[get_address(0, 0, offset)];
301308      }
302309     
303310      // read from ROM bank 0 or RAM bank 1
304      if (!blk1 && REG2_BLK1_VISIBLE)
311      if (!blk1 && !BLK1_HIDDEN)
305312      {
306313         data = (m_reg1 & REG1_BLK1) ? m_flash_rom->read(get_address(0, 0, offset)) : m_ram[get_address(1, 0, offset)];
307314      }
308      if (!blk2 && REG2_BLK2_VISIBLE)
315      if (!blk2 && !BLK2_HIDDEN)
309316      {
310317         data = (m_reg1 & REG1_BLK2) ? m_flash_rom->read(get_address(0, 1, offset)) : m_ram[get_address(1, 1, offset)];
311318      }
312      if (!blk3 && REG2_BLK3_VISIBLE)
319      if (!blk3 && !BLK3_HIDDEN)
313320      {
314321         data = (m_reg1 & REG1_BLK3) ? m_flash_rom->read(get_address(0, 2, offset)) : m_ram[get_address(1, 2, offset)];
315322      }
316      if (!blk5 && REG2_BLK5_VISIBLE)
323      if (!blk5 && !BLK5_HIDDEN)
317324      {
318325         data = (m_reg1 & REG1_BLK5) ? m_flash_rom->read(get_address(0, 3, offset)) : m_ram[get_address(1, 3, offset)];
319326      }
320327
321328      // read from registers
322      if (!io3 && !(m_reg2 & REG2_IO3) && ((offset & 0x1c02) == 0x1c02))
329      if (!io3 && !REGISTERS_HIDDEN && BIT(offset, 1))
323330      {
324331         data = read_register(BIT(offset, 0));
325332      }
r32616r32617
327334     
328335   case REG1_FLASH:
329336      // read from RAM bank 0
330      if ((!ram1 || !ram2 || !ram3) && REG2_BLK0_VISIBLE)
337      if ((!ram1 || !ram2 || !ram3) && !LORAM_HIDDEN)
331338      {
332339         data = m_ram[get_address(0, 0, offset)];
333340      }
334341
335342      // read from ROM
336      if (!blk1 && REG2_BLK1_VISIBLE)
343      if (!blk1 && !BLK1_HIDDEN)
337344      {
338345         data = m_flash_rom->read(get_address(REG1_BANK, 0, offset));
339346      }
340      if (!blk2 && REG2_BLK2_VISIBLE)
347      if (!blk2 && !BLK2_HIDDEN)
341348      {
342349         data = m_flash_rom->read(get_address(REG1_BANK, 1, offset));
343350      }
344      if (!blk3 && REG2_BLK3_VISIBLE)
351      if (!blk3 && !BLK3_HIDDEN)
345352      {
346353         data = m_flash_rom->read(get_address(REG1_BANK, 2, offset));
347354      }
348      if (!blk5 && REG2_BLK5_VISIBLE)
355      if (!blk5 && !BLK5_HIDDEN)
349356      {
350357         data = m_flash_rom->read(get_address(REG1_BANK, 3, offset));
351358      }
352359
353360      // read from registers
354      if (!io3 && !(m_reg2 & REG2_IO3) && ((offset & 0x1c02) == 0x1c02))
361      if (!io3 && !REGISTERS_HIDDEN && BIT(offset, 1))
355362      {
356363         data = read_register(BIT(offset, 0));
357364      }
r32616r32617
376383      {
377384         m_ram[get_address(1, 3, offset)] = data;
378385
379         m_lockbit = false;
386         m_lockbit = 0;
380387      }
381388
382389      // write to registers
383      if (!io3 && !m_lockbit && ((offset & 0x1c02) == 0x1c02))
390      if (!io3 && !REGISTERS_HIDDEN && BIT(offset, 1))
384391      {
385392         write_register(BIT(offset, 0), data);
386393      }
r32616r32617
388395     
389396   case REG1_SUPER_ROM:
390397      // write to RAM bank 0
391      if ((!ram1 || !ram2 || !ram3) && REG2_BLK0_VISIBLE)
398      if ((!ram1 || !ram2 || !ram3) && !LORAM_HIDDEN)
392399      {
393400         m_ram[get_address(0, 0, offset)] = data;
394401      }
395402
396403      // write to RAM bank 1
397      if (!blk1 && REG2_BLK1_VISIBLE)
404      if (!blk1 && !BLK1_HIDDEN)
398405      {
399406         m_ram[get_address(1, 0, offset)] = data;
400407      }
401      if (!blk2 && REG2_BLK2_VISIBLE)
408      if (!blk2 && !BLK2_HIDDEN)
402409      {
403410         m_ram[get_address(1, 1, offset)] = data;
404411      }
405      if (!blk3 && REG2_BLK3_VISIBLE)
412      if (!blk3 && !BLK3_HIDDEN)
406413      {
407414         m_ram[get_address(1, 2, offset)] = data;
408415      }
409      if (!blk5 && REG2_BLK5_VISIBLE)
416      if (!blk5 && !BLK5_HIDDEN)
410417      {
411418         m_ram[get_address(1, 3, offset)] = data;
412419      }
413420
414421      // write to registers
415      if (!io3 && !(m_reg2 & REG2_IO3) && ((offset & 0x1c02) == 0x1c02))
422      if (!io3 && !REGISTERS_HIDDEN && BIT(offset, 1))
416423      {
417424         write_register(BIT(offset, 0), data);
418425      }
r32616r32617
420427     
421428   case REG1_RAM_1:
422429      // write to RAM bank 0
423      if ((!ram1 || !ram2 || !ram3) && REG2_BLK0_VISIBLE && REG1_BLK0)
430      if ((!ram1 || !ram2 || !ram3) && !LORAM_HIDDEN && REG1_BLK0)
424431      {
425432         m_ram[get_address(0, 0, offset)] = data;
426433      }
427434
428435      // write to RAM bank 1 or 2
429      if (!blk1 && REG2_BLK1_VISIBLE)
436      if (!blk1 && !BLK1_HIDDEN)
430437      {
431438         m_ram[get_address((m_reg1 & REG1_BLK1) ? 2 : 1, 0, offset)] = data;
432439      }
433      if (!blk2 && REG2_BLK2_VISIBLE)
440      if (!blk2 && !BLK2_HIDDEN)
434441      {
435442         m_ram[get_address((m_reg1 & REG1_BLK2) ? 2 : 1, 1, offset)] = data;
436443      }
437      if (!blk3 && REG2_BLK3_VISIBLE)
444      if (!blk3 && !BLK3_HIDDEN)
438445      {
439446         m_ram[get_address((m_reg1 & REG1_BLK3) ? 2 : 1, 2, offset)] = data;
440447      }
441      if (!blk5 && REG2_BLK5_VISIBLE)
448      if (!blk5 && !BLK5_HIDDEN)
442449      {
443450         m_ram[get_address((m_reg1 & REG1_BLK5) ? 2 : 1, 3, offset)] = data;
444451      }
445452
446453      // write to registers
447      if (!io3 && !(m_reg2 & REG2_IO3) && ((offset & 0x1c02) == 0x1c02))
454      if (!io3 && !REGISTERS_HIDDEN && BIT(offset, 1))
448455      {
449456         write_register(BIT(offset, 0), data);
450457      }
r32616r32617
452459     
453460   case REG1_RAM_2:
454461      // write to RAM bank 0
455      if ((!ram1 || !ram2 || !ram3) && REG2_BLK0_VISIBLE && REG1_BLK0)
462      if ((!ram1 || !ram2 || !ram3) && !LORAM_HIDDEN && REG1_BLK0)
456463      {
457464         m_ram[get_address(0, 0, offset)] = data;
458465      }
459466
460467      // write to RAM bank 1
461      if (!blk1 && REG2_BLK1_VISIBLE)
468      if (!blk1 && !BLK1_HIDDEN)
462469      {
463470         m_ram[get_address(1, 0, offset)] = data;
464471      }
465      if (!blk2 && REG2_BLK2_VISIBLE)
472      if (!blk2 && !BLK2_HIDDEN)
466473      {
467474         m_ram[get_address(1, 1, offset)] = data;
468475      }
469      if (!blk3 && REG2_BLK3_VISIBLE)
476      if (!blk3 && !BLK3_HIDDEN)
470477      {
471478         m_ram[get_address(1, 2, offset)] = data;
472479      }
473      if (!blk5 && REG2_BLK5_VISIBLE)
480      if (!blk5 && !BLK5_HIDDEN)
474481      {
475482         m_ram[get_address(1, 3, offset)] = data;
476483      }
477484
478485      // write to registers
479      if (!io3 && !(m_reg2 & REG2_IO3) && ((offset & 0x1c02) == 0x1c02))
486      if (!io3 && !REGISTERS_HIDDEN && BIT(offset, 1))
480487      {
481488         write_register(BIT(offset, 0), data);
482489      }
r32616r32617
484491     
485492   case REG1_SUPER_RAM:
486493      // write to RAM bank 0
487      if ((!ram1 || !ram2 || !ram3) && REG2_BLK0_VISIBLE)
494      if ((!ram1 || !ram2 || !ram3) && !LORAM_HIDDEN)
488495      {
489496         m_ram[get_address(0, 0, offset)] = data;
490497      }
491498
492499      // write whole RAM
493      if (!blk1 && REG2_BLK1_VISIBLE)
500      if (!blk1 && !BLK1_HIDDEN)
494501      {
495502         m_ram[get_address(REG1_BANK, 0, offset)] = data;
496503      }
497      if (!blk2 && REG2_BLK2_VISIBLE)
504      if (!blk2 && !BLK2_HIDDEN)
498505      {
499506         m_ram[get_address(REG1_BANK, 1, offset)] = data;
500507      }
501      if (!blk3 && REG2_BLK3_VISIBLE)
508      if (!blk3 && !BLK3_HIDDEN)
502509      {
503510         m_ram[get_address(REG1_BANK, 2, offset)] = data;
504511      }
505      if (!blk5 && REG2_BLK5_VISIBLE)
512      if (!blk5 && !BLK5_HIDDEN)
506513      {
507514         m_ram[get_address(REG1_BANK, 3, offset)] = data;
508515      }
509516
510517      // write to registers
511      if (!io3 && !(m_reg2 & REG2_IO3) && ((offset & 0x1c02) == 0x1c02))
518      if (!io3 && !REGISTERS_HIDDEN && BIT(offset, 1))
512519      {
513520         write_register(BIT(offset, 0), data);
514521      }
r32616r32617
516523     
517524   case REG1_RAM_ROM:
518525      // write to RAM bank 0
519      if ((!ram1 || !ram2 || !ram3) && REG2_BLK0_VISIBLE && REG1_BLK0)
526      if ((!ram1 || !ram2 || !ram3) && !LORAM_HIDDEN && REG1_BLK0)
520527      {
521528         m_ram[get_address(0, 0, offset)] = data;
522529      }
523530
524531      // write to RAM bank 1 or 2
525      if (!blk1 && REG2_BLK1_VISIBLE)
532      if (!blk1 && !BLK1_HIDDEN)
526533      {
527534         m_ram[get_address((m_reg1 & REG1_BLK1) ? 2 : 1, 0, offset)] = data;
528535      }
529      if (!blk2 && REG2_BLK2_VISIBLE)
536      if (!blk2 && !BLK2_HIDDEN)
530537      {
531538         m_ram[get_address((m_reg1 & REG1_BLK2) ? 2 : 1, 1, offset)] = data;
532539      }
533      if (!blk3 && REG2_BLK3_VISIBLE)
540      if (!blk3 && !BLK3_HIDDEN)
534541      {
535542         m_ram[get_address((m_reg1 & REG1_BLK3) ? 2 : 1, 2, offset)] = data;
536543      }
537      if (!blk5 && REG2_BLK5_VISIBLE)
544      if (!blk5 && !BLK5_HIDDEN)
538545      {
539546         m_ram[get_address((m_reg1 & REG1_BLK5) ? 2 : 1, 3, offset)] = data;
540547      }
541548
542549      // write to registers
543      if (!io3 && !(m_reg2 & REG2_IO3) && ((offset & 0x1c02) == 0x1c02))
550      if (!io3 && !REGISTERS_HIDDEN && BIT(offset, 1))
544551      {
545552         write_register(BIT(offset, 0), data);
546553      }
r32616r32617
548555     
549556   case REG1_FLASH:
550557      // write to RAM bank 0
551      if ((!ram1 || !ram2 || !ram3) && REG2_BLK0_VISIBLE)
558      if ((!ram1 || !ram2 || !ram3) && !LORAM_HIDDEN)
552559      {
553560         m_ram[get_address(0, 0, offset)] = data;
554561      }
555562
556563      // write to ROM
557      if (!blk1 && REG2_BLK1_VISIBLE)
564      if (!blk1 && !BLK1_HIDDEN)
558565      {
559566         m_flash_rom->write(get_address(REG1_BANK, 0, offset), data);
560567      }
561      if (!blk2 && REG2_BLK2_VISIBLE)
568      if (!blk2 && !BLK2_HIDDEN)
562569      {
563570         m_flash_rom->write(get_address(REG1_BANK, 1, offset), data);
564571      }
565      if (!blk3 && REG2_BLK3_VISIBLE)
572      if (!blk3 && !BLK3_HIDDEN)
566573      {
567574         m_flash_rom->write(get_address(REG1_BANK, 2, offset), data);
568575      }
569      if (!blk5 && REG2_BLK5_VISIBLE)
576      if (!blk5 && !BLK5_HIDDEN)
570577      {
571578         m_flash_rom->write(get_address(REG1_BANK, 3, offset), data);
572579      }
573580
574581      // write to registers
575      if (!io3 && !(m_reg2 & REG2_IO3) && ((offset & 0x1c02) == 0x1c02))
582      if (!io3 && !REGISTERS_HIDDEN && BIT(offset, 1))
576583      {
577584         write_register(BIT(offset, 0), data);
578585      }
trunk/src/emu/bus/vic20/fe3.h
r32616r32617
8585
8686   UINT8 m_reg1;
8787   UINT8 m_reg2;
88   bool m_lockbit;
88   int m_lockbit;
8989};
9090
9191
trunk/src/emu/bus/vic20/exp.h
r32616r32617
2525                  _RAM1      14      R       CA12
2626                  _RAM2      15      S       CA13
2727                  _RAM3      16      T       _I/O2
28                   VR/W      17      U       _I/O3
29                   CR/W      18      V       Sphi2
28                  VR/_W      17      U       _I/O3
29                  CR/_W      18      V       Sphi2
3030                   _IRQ      19      W       _NMI
3131                   N.C.      20      X       _RES
3232                    +5V      21      Y       N.C.

Previous 199869 Revisions Next


© 1997-2024 The MAME Team