~ubuntu-branches/ubuntu/raring/mame/raring-proposed

« back to all changes in this revision

Viewing changes to mess/src/mame/drivers/portrait.c

  • Committer: Package Import Robot
  • Author(s): Jordi Mallach, Jordi Mallach, Emmanuel Kasper
  • Date: 2011-12-19 22:56:27 UTC
  • mfrom: (0.1.2)
  • Revision ID: package-import@ubuntu.com-20111219225627-ub5oga1oys4ogqzm
Tags: 0.144-1
[ Jordi Mallach ]
* Fix syntax errors in DEP5 copyright file (lintian).
* Use a versioned copyright Format specification field.
* Update Vcs-* URLs.
* Move transitional packages to the new metapackages section, and make
  them priority extra.
* Remove references to GNU/Linux and MESS sources from copyright.
* Add build variables for s390x.
* Use .xz tarballs as it cuts 4MB for the upstream sources.
* Add nplayers.ini as a patch. Update copyright file to add CC-BY-SA-3.0.

[ Emmanuel Kasper ]
* New upstream release. Closes: #651538.
* Add Free Desktop compliant png icons of various sizes taken from
  the hydroxygen iconset
* Mess is now built from a new source package, to avoid possible source
  incompatibilities between mame and the mess overlay.
* Mame-tools are not built from the mame source package anymore, but
  from the mess source package

Show diffs side-by-side

added added

removed removed

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