Previous 15994 Revisions Next

r8487 Tuesday 13th July, 2010 at 12:50:20 UTC by Curt Coder
[PRESTIGE] Added memory banking and video.
[docs]messnew.txt
[src/mess/drivers]prestige.c

src/mess/drivers/prestige.c
r8486r8487
1010 
1111#include "emu.h"
1212#include "cpu/z80/z80.h"
13#include "devices/messram.h"
1314 
15static UINT8 bank[6];
16 
17static READ8_HANDLER( bankswitch_r )
18{
19   return bank[offset];
20}
21 
22static WRITE8_HANDLER( bankswitch_w )
23{
24   const address_space *program = cputag_get_address_space(space->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
25 
26   switch (offset)
27   {
28   case 0:
29      memory_set_bank(space->machine, "bank1", data & 0x3f);
30      break;
31 
32   case 1:
33      memory_set_bank(space->machine, "bank2", data & 0x3f);
34      break;
35 
36   case 2:
37      if (bank[5] == 0x0c)
38      {
39         memory_set_bank(space->machine, "bank3", 0x40 + BIT(data, 7));
40      }
41      else
42      {
43         memory_set_bank(space->machine, "bank3", data & 0x3f);
44      }
45      break;
46 
47   case 3:
48      memory_set_bank(space->machine, "bank4", data & 0x03);
49      break;
50 
51   case 4:
52      memory_set_bank(space->machine, "bank5", data & 0x03);
53      break;
54 
55   case 5:
56      if (data == 0x0c)
57      {
58         memory_install_readwrite_bank(program, 0x8000, 0xbfff, 0, 0, "bank3");
59      }
60      else
61      {
62         memory_unmap_write(program, 0x8000, 0xbfff, 0, 0);
63      }
64   }
65 
66   bank[offset] = data;
67}
68 
1469static ADDRESS_MAP_START(prestige_mem, ADDRESS_SPACE_PROGRAM, 8)
15   ADDRESS_MAP_UNMAP_HIGH
16   AM_RANGE(0x0000, 0x7fff) AM_ROM
70   AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("bank1")
71   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank2")
72   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank3")
73   AM_RANGE(0xc000, 0xdfff) AM_RAMBANK("bank4")
74   AM_RANGE(0xe000, 0xffff) AM_RAMBANK("bank5")
1775ADDRESS_MAP_END
1876 
1977static ADDRESS_MAP_START( prestige_io , ADDRESS_SPACE_IO, 8)
2078   ADDRESS_MAP_UNMAP_HIGH
79   ADDRESS_MAP_GLOBAL_MASK(0xff)
80   AM_RANGE(0x50, 0x55) AM_READWRITE(bankswitch_r, bankswitch_w)
2181ADDRESS_MAP_END
2282 
2383/* Input ports */
r8486r8487
2585INPUT_PORTS_END
2686 
2787 
28static MACHINE_RESET(prestige)
88static MACHINE_START(prestige)
2989{
90   UINT8 *ram = messram_get_ptr(machine->device("messram"));
91 
92   memory_configure_bank(machine, "bank1", 0, 64, memory_region(machine, "maincpu"), 0x4000);
93   memory_configure_bank(machine, "bank2", 0, 64, memory_region(machine, "maincpu"), 0x4000);
94   memory_configure_bank(machine, "bank3", 0, 64, memory_region(machine, "maincpu"), 0x4000);
95   memory_configure_bank(machine, "bank3", 64, 2, ram + 0x8000, 0x4000);
96   memory_configure_bank(machine, "bank4", 0, 4, ram, 0x2000);
97   memory_configure_bank(machine, "bank5", 0, 4, ram, 0x2000);
98 
99   memory_set_bank(machine, "bank1", 0);
100   memory_set_bank(machine, "bank2", 0);
101   memory_set_bank(machine, "bank3", 0);
102   memory_set_bank(machine, "bank4", 0);
103   memory_set_bank(machine, "bank5", 0);
30104}
31105 
106static PALETTE_INIT( prestige )
107{
108   palette_set_color(machine, 0, MAKE_RGB(39, 108, 51));
109   palette_set_color(machine, 1, MAKE_RGB(16, 37, 84));
110}
111 
32112static VIDEO_START( prestige )
33113{
34114}
35115 
36116static VIDEO_UPDATE( prestige )
37117{
118   const address_space *program = cputag_get_address_space(screen->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
119   UINT16 addr = 0xe000;
120 
121   for (int y = 0; y < 100; y++)
122   {
123      for (int sx = 0; sx < 30; sx++)
124      {
125         UINT8 data = memory_read_byte(program, addr);
126 
127         for (int x = 0; x < 8; x++)
128         {
129            *BITMAP_ADDR16(bitmap, y, (sx * 8) + x) = BIT(data, 7);
130 
131            data <<= 1;
132         }
133 
134         addr++;
135      }
136   }
137 
38138    return 0;
39139}
40140 
r8486r8487
44144    MDRV_CPU_PROGRAM_MAP(prestige_mem)
45145    MDRV_CPU_IO_MAP(prestige_io)
46146 
47    MDRV_MACHINE_RESET(prestige)
147    MDRV_MACHINE_START(prestige)
48148 
49149    /* video hardware */
50150    MDRV_SCREEN_ADD("screen", LCD)
r8486r8487
56156   MDRV_DEFAULT_LAYOUT( layout_lcd )
57157 
58158    MDRV_PALETTE_LENGTH(2)
59    MDRV_PALETTE_INIT(black_and_white)
159    MDRV_PALETTE_INIT(prestige)
60160 
61161    MDRV_VIDEO_START(prestige)
62162    MDRV_VIDEO_UPDATE(prestige)
163 
164   /* internal ram */
165   MDRV_RAM_ADD("messram")
166   MDRV_RAM_DEFAULT_SIZE("64K")
63167MACHINE_DRIVER_END
64168 
65169/* ROM definition */
r8486r8487
71175/* Driver */
72176 
73177/*    YEAR  NAME    PARENT  COMPAT   MACHINE    INPUT    INIT    COMPANY   FULLNAME       FLAGS */
74COMP( 1998, prestige,  0,       0,   prestige,    prestige,     0,  "VTech",   "PreComputer Prestige",      GAME_NOT_WORKING | GAME_NO_SOUND)
178COMP( 1998, prestige,  0,       0,   prestige,    prestige,     0,  "VTech",   "PC Prestige Elite",      GAME_NOT_WORKING | GAME_NO_SOUND)
docs/messnew.txt
r8486r8487
1919Skeleton drivers:
2020-----------------
2121- Salora Manager [Curt Coder]
22- VTech PreComputer Prestige [Joseba Epalza, Curt Coder]
22- VTech PC Prestige Elite [Joseba Epalza, Curt Coder]
2323- Casio PV-2000
2424- Sony SMC-777
2525- Mitsubishi Multi 8

Previous 15994 Revisions Next


© 1998-2018 The MESS Team