Previous 15994 Revisions Next

r9846 Thursday 30th December, 2010 at 11:28:20 UTC by Robbbert
[OKEAN240] Extremely preliminary. Executes code from rom. F4 displayer added. Added bitmapped video driver which currently produces scrolling garbage.
[src/mess/drivers]okean240.c

src/mess/drivers/okean240.c
r9845r9846
1414public:
1515   okean240_state(running_machine &machine, const driver_device_config_base &config)
1616      : driver_device(machine, config) { }
17   UINT8 *videoram;
1718};
1819
20
21static READ8_HANDLER( okean240_80_r ) { return mame_rand(space->machine); } // so we can start booting
22
23
1924static ADDRESS_MAP_START(okean240_mem, ADDRESS_SPACE_PROGRAM, 8)
2025   ADDRESS_MAP_UNMAP_HIGH
26   AM_RANGE(0x0000, 0x07ff) AM_RAMBANK("boot")
27   AM_RANGE(0x0800, 0x3fff) AM_RAM
28   AM_RANGE(0x4000, 0x7fff) AM_RAM AM_BASE_MEMBER(okean240_state, videoram)
29   AM_RANGE(0x8000, 0xbfff) AM_RAM
30   AM_RANGE(0xc000, 0xffff) AM_ROM
2131ADDRESS_MAP_END
2232
2333static ADDRESS_MAP_START( okean240_io , ADDRESS_SPACE_IO, 8)
2434   ADDRESS_MAP_UNMAP_HIGH
35   ADDRESS_MAP_GLOBAL_MASK(0xff)
36   AM_RANGE(0x80, 0x80) AM_READ(okean240_80_r)
2537ADDRESS_MAP_END
2638
2739/* Input ports */
28INPUT_PORTS_START( okean240 )
40static INPUT_PORTS_START( okean240 )
2941INPUT_PORTS_END
3042
3143
44/* after the first 6 bytes have been read from ROM, switch the ram back in */
45static TIMER_CALLBACK( okean240_boot )
46{
47   memory_set_bank(machine, "boot", 0);
48}
49
3250static MACHINE_RESET(okean240)
3351{   
52   timer_set(machine, ATTOTIME_IN_USEC(10), NULL, 0, okean240_boot);
53   memory_set_bank(machine, "boot", 1);
3454}
3555
56DRIVER_INIT( okean240 )
57{
58   UINT8 *RAM = memory_region(machine, "maincpu");
59   memory_configure_bank(machine, "boot", 0, 2, &RAM[0x0000], 0xe000);
60}
61
3662static VIDEO_START( okean240 )
3763{
3864}
3965
66// The video appears to be bitmapped, but atm this produces scrolling garbage
4067static VIDEO_UPDATE( okean240 )
4168{
42    return 0;
69   okean240_state *state = screen->machine->driver_data<okean240_state>();
70   UINT8 gfx;
71   UINT16 ma=0,x,y;
72
73   for (y = 0; y < 256; y++)
74   {
75      UINT16  *p = BITMAP_ADDR16(bitmap, y, 0);
76
77      for (x = ma; x < ma+64; x++)
78      {
79         gfx = state->videoram[x];
80
81         *p++ = ( gfx & 0x80 ) ? 1 : 0;
82         *p++ = ( gfx & 0x40 ) ? 1 : 0;
83         *p++ = ( gfx & 0x20 ) ? 1 : 0;
84         *p++ = ( gfx & 0x10 ) ? 1 : 0;
85         *p++ = ( gfx & 0x08 ) ? 1 : 0;
86         *p++ = ( gfx & 0x04 ) ? 1 : 0;
87         *p++ = ( gfx & 0x02 ) ? 1 : 0;
88         *p++ = ( gfx & 0x01 ) ? 1 : 0;
89      }
90      ma+=64;
91   }
92   return 0;
4393}
4494
95/* F4 Character Displayer */
96static const gfx_layout okean240_charlayout =
97{
98   8, 7,               /* 8 x 7 characters */
99   160,               /* 160 characters */
100   1,               /* 1 bits per pixel */
101   { 0 },               /* no bitplanes */
102   /* x offsets */
103   { 7, 6, 5, 4, 3, 2, 1, 0 },
104   /* y offsets */
105   { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8 },
106   8*7               /* every char takes 7 bytes */
107};
108
109static GFXDECODE_START( okean240 )
110   GFXDECODE_ENTRY( "maincpu", 0xef63, okean240_charlayout, 0, 1 )
111GFXDECODE_END
112
45113static MACHINE_CONFIG_START( okean240, okean240_state )
46    /* basic machine hardware */
47    MDRV_CPU_ADD("maincpu",I8080, XTAL_12MHz / 6)
48    MDRV_CPU_PROGRAM_MAP(okean240_mem)
49    MDRV_CPU_IO_MAP(okean240_io)   
114   /* basic machine hardware */
115   MDRV_CPU_ADD("maincpu",I8080, XTAL_12MHz / 6)
116   MDRV_CPU_PROGRAM_MAP(okean240_mem)
117   MDRV_CPU_IO_MAP(okean240_io)   
50118
51    MDRV_MACHINE_RESET(okean240)
119   MDRV_MACHINE_RESET(okean240)
52120   
53    /* video hardware */
54    MDRV_SCREEN_ADD("screen", RASTER)
55    MDRV_SCREEN_REFRESH_RATE(50)
56    MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
57    MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
58    MDRV_SCREEN_SIZE(640, 480)
59    MDRV_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
60    MDRV_PALETTE_LENGTH(2)
61    MDRV_PALETTE_INIT(black_and_white)
121   /* video hardware */
122   MDRV_SCREEN_ADD("screen", RASTER)
123   MDRV_SCREEN_REFRESH_RATE(50)
124   MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
125   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
126   MDRV_SCREEN_SIZE(640, 480)
127   MDRV_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
128   MDRV_PALETTE_LENGTH(2)
129   MDRV_PALETTE_INIT(black_and_white)
130   MDRV_GFXDECODE(okean240)
62131
63    MDRV_VIDEO_START(okean240)
64    MDRV_VIDEO_UPDATE(okean240)
132   MDRV_VIDEO_START(okean240)
133   MDRV_VIDEO_UPDATE(okean240)
65134MACHINE_CONFIG_END
66135
67136/* ROM definition */
68137ROM_START( okean240 )
69    ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
138   ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
70139   ROM_LOAD( "monitor.bin", 0xe000, 0x2000, CRC(bcac5ca0) SHA1(602ab824704d3d5d07b3787f6227ff903c33c9d5))
71140   ROM_LOAD( "cpm80.bin",   0xc000, 0x2000, CRC(b89a7e16) SHA1(b8f937c04f430be18e48f296ed3ef37194171204))
72141ROM_END
r9845r9846
74143/* Driver */
75144
76145/*    YEAR  NAME    PARENT  COMPAT   MACHINE    INPUT    INIT    COMPANY   FULLNAME       FLAGS */
77COMP( ????, okean240,  0,       0,    okean240,    okean240,     0,  "<unknown>",   "Okean-240",      GAME_NOT_WORKING | GAME_NO_SOUND)
146COMP( ????, okean240,  0,       0,    okean240,    okean240, okean240,  "<unknown>",   "Okean-240",      GAME_NOT_WORKING | GAME_NO_SOUND)
78147

Previous 15994 Revisions Next


© 1998-2018 The MESS Team