1 // license:BSD-3-Clause
2 // copyright-holders:Steve Ellenoff, Pierpaolo Prazzoli
3 /**************************************************************************
4 Portraits
5 (c) 1983 Olympia
6
7 Preliminary Driver by Steve Ellenoff & Peo
8
9 Changes:
10
11 Pierpaolo Prazzoli, xx-07-2004
12 - fixed scrolling
13 - fixed screen resolution
14 - added NVRAM
15 - added fake photo when you get the best score
16 - fixed service switches and coins
17 - added missing roms and the 2nd set
18
19 SW = service switch
20
21 SW1 - SW2
22 ON OFF -> grid test
23 ON ON -> camera test
24
25 TODO:
26 - add sound;
27 - add colors (maybe not RGB555);
28 - fix sprites positions (zooming?);
29 - video priority bits;
30 - offset background scrolling positions (i.e. monkey climbing on trees);
31 - camera device (type?);
32 - misc unknown input/outputs;
33
34
35 RAM Location 9240: Controls what level you are on: 0-3 (for each scene)
36
37 -------------------------------------------------------------------------
38
39 Board layout
40
41
42 Top board
43
44 8039 rom p3f
45
46 74s288 rom p2f
47
48 rom SA rom p1f
49
50 rom M/A rom p0f
51
52 rom W 18318 18318 rom 15 rom 14
53
54 8253 18318 18318 rom 05 rom 04
55 18318 18318
56 8253 18318 18318 rom 13 rom 12
57 18318 18318
58 TMS5200 18318 18318 rom 03 rom 02
59 18318 18318
60 rom 11 rom 10
61 18318 18318
62 rom 01 rom 00
63
64 Bottom board
65
66 93Z511DC 93425
67 DM81LS95 93425
68 93425 18318
69 2148
70 2148 18318
71
72 18318
73
74 18318
75
76 18318
77
78 74s288 18318
79 2114
80 2114 4016
81 2114
82 2114 4016
83
84 Z80
85 DIP1
86 DIP2 XD2210
87
88
89 XD2210 or 8202
90 DM81LS95 = TriState buffer
91 **************************************************************************/
92
93 #include "emu.h"
94 #include "includes/portrait.h"
95
96 #include "cpu/z80/z80.h"
97 #include "cpu/mcs48/mcs48.h"
98 #include "machine/gen_latch.h"
99 #include "machine/nvram.h"
100 #include "screen.h"
101 #include "speaker.h"
102
103
ctrl_w(uint8_t data)104 void portrait_state::ctrl_w(uint8_t data)
105 {
106 /* bits 4 and 5 are unknown */
107
108 machine().bookkeeping().coin_counter_w(0, data & 0x01);
109 machine().bookkeeping().coin_counter_w(1, data & 0x02);
110 machine().bookkeeping().coin_counter_w(2, data & 0x04);
111
112 /* the 2 lamps near the camera */
113 m_lamps[0] = BIT(data, 3);
114 m_lamps[1] = BIT(data, 6);
115
116 /* shows the black and white photo from the camera */
117 output().set_value("photo", (data >> 7) & 1);
118 }
119
positive_scroll_w(uint8_t data)120 void portrait_state::positive_scroll_w(uint8_t data)
121 {
122 m_scroll = data;
123 }
124
negative_scroll_w(uint8_t data)125 void portrait_state::negative_scroll_w(uint8_t data)
126 {
127 m_scroll = - (data ^ 0xff);
128 }
129
portrait_map(address_map & map)130 void portrait_state::portrait_map(address_map &map)
131 {
132 map(0x0000, 0x7fff).rom();
133 map(0x8000, 0x87ff).ram().w(FUNC(portrait_state::bgvideo_write)).share("bgvideoram");
134 map(0x8800, 0x8fff).ram().w(FUNC(portrait_state::fgvideo_write)).share("fgvideoram");
135 map(0x9000, 0x91ff).ram().share("spriteram");
136 map(0x9200, 0x97ff).ram();
137 map(0xa000, 0xa000).w("soundlatch", FUNC(generic_latch_8_device::write));
138 map(0xa010, 0xa010).nopw(); // ?
139 map(0xa000, 0xa000).portr("DSW1");
140 map(0xa004, 0xa004).portr("DSW2");
141 map(0xa008, 0xa008).portr("SYSTEM").w(FUNC(portrait_state::ctrl_w));
142 map(0xa010, 0xa010).portr("INPUTS");
143 map(0xa018, 0xa018).nopr().w(FUNC(portrait_state::positive_scroll_w));
144 map(0xa019, 0xa019).w(FUNC(portrait_state::negative_scroll_w));
145 map(0xa800, 0xa83f).ram().share("nvram");
146 map(0xffff, 0xffff).nopr();
147 }
148
149
portrait_sound_map(address_map & map)150 void portrait_state::portrait_sound_map(address_map &map)
151 {
152 map(0x0000, 0x0fff).rom();
153 }
154
155
156 static INPUT_PORTS_START( portrait )
157 PORT_START("DSW1")
158 PORT_DIPNAME( 0x0f, 0x08, DEF_STR( Coin_A ) )
159 PORT_DIPSETTING( 0x08, DEF_STR( 1C_1C ) )
160 PORT_DIPSETTING( 0x09, DEF_STR( 1C_2C ) )
161 PORT_DIPSETTING( 0x0a, DEF_STR( 1C_3C ) )
162 PORT_DIPSETTING( 0x0b, DEF_STR( 1C_4C ) )
163 PORT_DIPSETTING( 0x0c, DEF_STR( 1C_5C ) )
164 PORT_DIPSETTING( 0x0d, DEF_STR( 1C_7C ) )
165 PORT_DIPSETTING( 0x0e, "1 Coin / 10 Credits" )
166 PORT_DIPSETTING( 0x0f, "1 Coin / 12 Credits" )
167 PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) )
168 PORT_DIPSETTING( 0x04, DEF_STR( 2C_1C ) )
169 PORT_DIPSETTING( 0x05, DEF_STR( 2C_3C ) )
170 PORT_DIPSETTING( 0x06, DEF_STR( 2C_5C ) )
171 PORT_DIPSETTING( 0x07, DEF_STR( 2C_7C ) )
172 PORT_DIPSETTING( 0x01, "3 Coins / 5 Credits" )
173 PORT_DIPSETTING( 0x02, "3 Coins / 7 Credits" )
174 PORT_DIPSETTING( 0x03, "3 Coins / 10 Credits" )
175 PORT_DIPNAME( 0x70, 0x40, DEF_STR( Coin_B ) )
176 PORT_DIPSETTING( 0x40, DEF_STR( 1C_1C ) )
177 PORT_DIPSETTING( 0x50, DEF_STR( 1C_2C ) )
178 PORT_DIPSETTING( 0x60, DEF_STR( 1C_5C ) )
179 PORT_DIPSETTING( 0x70, "1 Coin / 10 Credits" )
180 PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) )
181 PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) )
182 PORT_DIPSETTING( 0x20, DEF_STR( 2C_3C ) )
183 PORT_DIPSETTING( 0x30, DEF_STR( 2C_5C ) )
184 PORT_DIPNAME( 0x80, 0x00, "Service Coin" )
185 PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
186 PORT_DIPSETTING( 0x80, DEF_STR( 1C_2C ) )
187
188 PORT_START("DSW2")
189 PORT_DIPNAME( 0x01, 0x00, "Game Play" )
190 PORT_DIPSETTING( 0x00, "Normal Play" )
191 PORT_DIPSETTING( 0x01, "Freeplay (255 Cameras)" )
192 PORT_DIPNAME( 0x02, 0x00, "High Score" )
193 PORT_DIPSETTING( 0x00, "11.350 Points" )
194 PORT_DIPSETTING( 0x02, "1.350 Points" )
195 PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Lives ) )
196 PORT_DIPSETTING( 0x00, "2" )
197 PORT_DIPSETTING( 0x04, "3" )
198 PORT_DIPSETTING( 0x08, "4" )
199 PORT_DIPSETTING( 0x0c, "5" )
200 PORT_DIPNAME( 0x30, 0x30, "Extra Camera" )
201 PORT_DIPSETTING( 0x00, DEF_STR( None ) )
202 PORT_DIPSETTING( 0x10, "Every 10.000 Points" )
203 PORT_DIPSETTING( 0x20, "Every 20.000 Points" )
204 PORT_DIPSETTING( 0x30, "Every 30.000 Points" )
205 PORT_DIPNAME( 0x40, 0x00, "Ostrich Speed" )
206 PORT_DIPSETTING( 0x00, "Slow" )
207 PORT_DIPSETTING( 0x40, "Quick" )
208 PORT_DIPNAME( 0x80, 0x80, "Obstacles" )
209 PORT_DIPSETTING( 0x80, DEF_STR( No ) )
210 PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
211
212 PORT_START("SYSTEM")
213 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2)
214 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2)
215 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_IMPULSE(2)
216 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_TILT )
217 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
218 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
219 PORT_DIPNAME( 0x40, 0x40, "Service Switch 1" )
220 PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
221 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
222 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
223
224 PORT_START("INPUTS")
225 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY
226 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY
227 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY
228 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY
229 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
230 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE2 ) // hold during boot to clear the NVRAM
231 PORT_DIPNAME( 0x40, 0x40, "Service Switch 2" )
232 PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
233 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
234 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
235 INPUT_PORTS_END
236
237 static const gfx_layout tile_layout =
238 {
239 16,16, /* tile width, height */
240 1024, /* number of characters */
241 3, /* bits per pixel */
242 { 0x8000*8, 0x4000*8, 0x0000*8 }, /* bitplane offsets */
243 {
244 RGN_FRAC(1,2)+7, RGN_FRAC(1,2)+6, RGN_FRAC(1,2)+5, RGN_FRAC(1,2)+4,
245 RGN_FRAC(1,2)+3, RGN_FRAC(1,2)+2, RGN_FRAC(1,2)+1, RGN_FRAC(1,2)+0,
246 0, 1, 2, 3, 4, 5, 6, 7
247 },
248 { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 8*8, 8*9, 8*10, 8*11, 8*12, 8*13, 8*14, 8*15 },
249 8*16 /* character offset */
250 };
251
252 static GFXDECODE_START( gfx_portrait )
253 GFXDECODE_ENTRY( "gfx1", 0x00000, tile_layout, 0, 0x800/8 )
254 GFXDECODE_END
255
256
portrait(machine_config & config)257 void portrait_state::portrait(machine_config &config)
258 {
259 Z80(config, m_maincpu, 4000000); /* 4 MHz ? */
260 m_maincpu->set_addrmap(AS_PROGRAM, &portrait_state::portrait_map);
261 m_maincpu->set_vblank_int("screen", FUNC(portrait_state::irq0_line_hold));
262
263 i8039_device &audiocpu(I8039(config, "audiocpu", 3120000)); /* ? */
264 audiocpu.set_addrmap(AS_PROGRAM, &portrait_state::portrait_sound_map);
265
266 NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
267
268 screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
269 screen.set_refresh_hz(50);
270 screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
271 screen.set_size(64*8, 64*8);
272 screen.set_visarea(0*8, 54*8-1, 0*8, 40*8-1);
273 screen.set_screen_update(FUNC(portrait_state::screen_update));
274 screen.set_palette(m_palette);
275
276 GFXDECODE(config, m_gfxdecode, m_palette, gfx_portrait);
277 PALETTE(config, m_palette, FUNC(portrait_state::portrait_palette), 0x800, 0x40);
278
279 /* sound hardware */
280 SPEAKER(config, "mono").front_center();
281
282 GENERIC_LATCH_8(config, "soundlatch");
283
284 TMS5200(config, m_tms, 640000).add_route(ALL_OUTPUTS, "mono", 1.0);
285 }
286
287
288 ROM_START( portrait )
289 ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for the cpu */
290 ROM_LOAD( "prt-p0.bin", 0x0000, 0x2000, CRC(a21874fa) SHA1(3db863f465a35d7d14dd71b47aa7dfe7b39fccf0) )
291 ROM_LOAD( "prt-p1.bin", 0x2000, 0x2000, CRC(4d4d7793) SHA1(f828950ebbf285fc92c65f24421a20ceacef1cb9) )
292 ROM_LOAD( "prt-p2.bin", 0x4000, 0x2000, CRC(83d88c9c) SHA1(c876f72b66537a49620fa27a5cb8a4aecd378f0a) )
293 ROM_LOAD( "prt-p3.bin", 0x6000, 0x2000, CRC(bd32d007) SHA1(cdf814b00c22f9a4503fa54d43fb5781251b67a7) )
294
295 ROM_REGION( 0x1000, "audiocpu", 0 )
296 ROM_LOAD( "port_w.bin", 0x0000, 0x0800, CRC(d3a4e950) SHA1(0a399d43c7690d568874f3b1d55135f803fc223f) )
297 ROM_LOAD( "port_ma.bin", 0x0800, 0x0800, CRC(ee242e4f) SHA1(fb67e0d136927e04f4fa819f684c97b0d52ee48c) )
298
299 ROM_REGION( 0x20000, "gfx1", 0 )
300 ROM_LOAD( "port_00.a1", 0x00000, 0x2000, CRC(eb3e1c12) SHA1(2d38b66f52546b40553244c8a5c961279559f5b6) ) /*bit plane 1*/
301 ROM_LOAD( "port_10.b1", 0x02000, 0x2000, CRC(0f44e377) SHA1(1955f9f4deab2166f637f43c1f326bd65fc90f6a) ) /*bit plane 1*/
302
303 ROM_LOAD( "port_02.d1", 0x04000, 0x2000, CRC(bd93a3f9) SHA1(9cb479b8840cafd6043ff0cb9d5ca031dcd332ba) ) /*bit plane 2*/
304 ROM_LOAD( "port_12.e1", 0x06000, 0x2000, CRC(656b9f20) SHA1(c1907aba3d19be79d92cd73784b8e7ae94910da6) ) /*bit plane 2*/
305
306 ROM_LOAD( "port_04.g1", 0x08000, 0x2000, CRC(2a99feb5) SHA1(b373d2a2bd28aad6dd7a15a2166e03a8b7a34d9b) ) /*bit plane 3*/
307 ROM_LOAD( "port_14.g1", 0x0a000, 0x2000, CRC(224b7a58) SHA1(b84e70d22d1cab41e5773fc9daa2e4e55ec9d96e) ) /*bit plane 3*/
308
309 ROM_LOAD( "port_01.a2", 0x10000, 0x2000, CRC(70d27508) SHA1(d011f85b31bb3aa6f386e8e0edb91df10f4c4eb6) ) /*bit plane 1*/
310 ROM_LOAD( "port_11.b2", 0x12000, 0x2000, CRC(f498e395) SHA1(beb1d12433a350e5b773126de3f2803a9f5620c1) ) /*bit plane 1*/
311
312 ROM_LOAD( "port_03.d2", 0x14000, 0x2000, CRC(03d4153a) SHA1(7ce69ce6a101870dbfca1a9787fb1e660024bc02) ) /*bit plane 2*/
313 ROM_LOAD( "port_13.e2", 0x16000, 0x2000, CRC(10fa22b8) SHA1(e8f4c24fcdda0ce5e33bc600acd574a232a9bb21) ) /*bit plane 2*/
314
315 ROM_LOAD( "port_05.g2", 0x18000, 0x2000, CRC(43ea7951) SHA1(df0ae7fa802365979514063e1d67cdd45ecada90) ) /*bit plane 3*/
316 ROM_LOAD( "port_15.h2", 0x1a000, 0x2000, CRC(ab20b438) SHA1(ea5d60f6a9f06397bd0c6ee028b463c684090c01) ) /*bit plane 3*/
317
318 ROM_REGION( 0x0800, "user1", 0 ) // sound related?
319 ROM_LOAD( "port_sa.bin", 0x0000, 0x0800, CRC(50510897) SHA1(8af0f42699602a5b33500968c958e3784e03377f) )
320
321 ROM_REGION( 0x800, "tileattr", 0 ) // tile attributes
322 ROM_LOAD( "93z511.bin", 0x0000, 0x0800, CRC(d66d9036) SHA1(7a25efbd8f2f94a01aad9e2be9cb18da7b9ec1d1) )
323
324 ROM_REGION( 0x40, "proms", 0 ) // colors
325 ROM_LOAD( "port_pr1.bin", 0x00, 0x0020, CRC(1e2deabb) SHA1(8357e53dba26bca9bc5d7a25c715836f0b3700b9) )
326 ROM_LOAD( "port_pr2.n4", 0x20, 0x0020, CRC(008634f3) SHA1(7cde6b09ede672d562569866d944428198f2ba9c) )
327 ROM_END
328
329 ROM_START( portraita )
330 ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for the cpu */
331 ROM_LOAD( "portp0f.m1", 0x0000, 0x2000, CRC(333eace3) SHA1(8f02df09d8b50d7e37d5abf7d539624c59a7201e) )
332 ROM_LOAD( "portp0f.p1", 0x2000, 0x2000, CRC(fe258052) SHA1(f453eb05c68d61dfd644688732ff5c07366c68c0) )
333 ROM_LOAD( "portp2f.r1", 0x4000, 0x2000, CRC(bc0104d5) SHA1(7707b85cde2dc9bd95391d4e1dbed219c52618cd) )
334 ROM_LOAD( "portp3f.s1", 0x6000, 0x2000, CRC(3f5a3bdf) SHA1(cc4b5d24d0df0962b0cfd4d5c66baac5e4718237) )
335
336 ROM_REGION( 0x1000, "audiocpu", 0 )
337 ROM_LOAD( "port_w.bin", 0x0000, 0x0800, CRC(d3a4e950) SHA1(0a399d43c7690d568874f3b1d55135f803fc223f) )
338 ROM_LOAD( "port_ma.bin", 0x0800, 0x0800, CRC(ee242e4f) SHA1(fb67e0d136927e04f4fa819f684c97b0d52ee48c) )
339
340 ROM_REGION( 0x20000, "gfx1", 0 )
341 ROM_LOAD( "port_00.a1", 0x00000, 0x2000, CRC(eb3e1c12) SHA1(2d38b66f52546b40553244c8a5c961279559f5b6) ) /*bit plane 1*/
342 ROM_LOAD( "port_10.b1", 0x02000, 0x2000, CRC(0f44e377) SHA1(1955f9f4deab2166f637f43c1f326bd65fc90f6a) ) /*bit plane 1*/
343 ROM_LOAD( "port_02.d1", 0x04000, 0x2000, CRC(bd93a3f9) SHA1(9cb479b8840cafd6043ff0cb9d5ca031dcd332ba) ) /*bit plane 2*/
344 ROM_LOAD( "port_12.e1", 0x06000, 0x2000, CRC(656b9f20) SHA1(c1907aba3d19be79d92cd73784b8e7ae94910da6) ) /*bit plane 2*/
345 ROM_LOAD( "port_04.g1", 0x08000, 0x2000, CRC(2a99feb5) SHA1(b373d2a2bd28aad6dd7a15a2166e03a8b7a34d9b) ) /*bit plane 3*/
346 ROM_LOAD( "port_14.g1", 0x0a000, 0x2000, CRC(224b7a58) SHA1(b84e70d22d1cab41e5773fc9daa2e4e55ec9d96e) ) /*bit plane 3*/
347
348 ROM_LOAD( "port_01.a2", 0x10000, 0x2000, CRC(70d27508) SHA1(d011f85b31bb3aa6f386e8e0edb91df10f4c4eb6) ) /*bit plane 1*/
349 ROM_LOAD( "port_11.b2", 0x12000, 0x2000, CRC(f498e395) SHA1(beb1d12433a350e5b773126de3f2803a9f5620c1) ) /*bit plane 1*/
350 ROM_LOAD( "port_03.d2", 0x14000, 0x2000, CRC(03d4153a) SHA1(7ce69ce6a101870dbfca1a9787fb1e660024bc02) ) /*bit plane 2*/
351 ROM_LOAD( "port_13.e2", 0x16000, 0x2000, CRC(10fa22b8) SHA1(e8f4c24fcdda0ce5e33bc600acd574a232a9bb21) ) /*bit plane 2*/
352 ROM_LOAD( "port_05.g2", 0x18000, 0x2000, CRC(43ea7951) SHA1(df0ae7fa802365979514063e1d67cdd45ecada90) ) /*bit plane 3*/
353 ROM_LOAD( "port_15.h2", 0x1a000, 0x2000, CRC(ab20b438) SHA1(ea5d60f6a9f06397bd0c6ee028b463c684090c01) ) /*bit plane 3*/
354
355 ROM_REGION( 0x800, "tileattr", 0 ) // tile attributes (see notes)
356 ROM_LOAD( "93z511.bin", 0x0000, 0x0800, CRC(d66d9036) SHA1(7a25efbd8f2f94a01aad9e2be9cb18da7b9ec1d1) )
357
358 ROM_REGION( 0x40, "proms", 0 ) // colors
359 ROM_LOAD( "port_pr1.bin", 0x00, 0x0020, CRC(1e2deabb) SHA1(8357e53dba26bca9bc5d7a25c715836f0b3700b9) )
360 ROM_LOAD( "port_pr2.n4", 0x20, 0x0020, CRC(008634f3) SHA1(7cde6b09ede672d562569866d944428198f2ba9c) )
361 ROM_END
362
363 /* tileattr rom
364
365 this appears to be divided into 2 0x400 banks
366
367 0x000 - 0x3ff relates to tiles 0x000-0x0ff
368
369 0x400 - 0x7ff relates to tiles 0x100-0x1ff, 0x200-0x2ff, and 0x300-0x3ff
370
371 every 2 tiles are somehow related to 8 bytes in the data
372
373 so tiles 0x00 and 0x01 use bytes 0x000-0x007
374 0x02 0x008
375 0x04 0x010
376 0x06 0x018
377 0x08 0x020
378 0x0a 0x028
379 0x0c 0x030
380 0x0e 0x038
381 0x10 0x040
382 .......
383 0xfe and 0xff use bytes 0x3f8-0x3ff
384 etc.
385
386 it's probably some kind of lookup table for the colours (6bpp = 8 colours, maybe every 2 tiles share the same 8 colours)
387 I guess either the bank (0/1) can be selected, or bank 0 is hardcoded to tiles 0x000-0x0ff (because tilemaps can use
388 these tiles too, so it's not a case of it being a sprite/tilemap lookup split)
389
390 anyway.. this is why the portraits logo is broken across 3 areas (0x1f2, 0x2f2, 0x3f2) so that they can share the same
391 attributes from this rom
392
393 */
394
395
396
397 GAME( 1983, portrait, 0, portrait, portrait, portrait_state, empty_init, ROT270, "Olympia", "Portraits (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE )
398 GAME( 1983, portraita,portrait, portrait, portrait, portrait_state, empty_init, ROT270, "Olympia", "Portraits (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE )
399