Previous 199869 Revisions Next

r34825 Tuesday 3rd February, 2015 at 21:22:18 UTC by Robbbert
Merge branch 'master' of https://github.com/mamedev/mame
[src/emu]audit.c
[src/mame]mame.lst
[src/mame/drivers]silvmil.c wink.c
[src/mame/video]decospr.c decospr.h
[src/mess/drivers]wildfire.c
[src/mess/layout]wildfire.lay
[src/osd/sdl]drawsdl.c input.c sdl.mak testkeys.c window.c window.h

trunk/src/emu/audit.c
r243336r243337
382382               else
383383                  string->catprintf("NOT FOUND (%s)\n", shared_device->shortname());
384384            }
385            best_new_status = NOTFOUND;
385386            break;
386387
387388         case audit_record::SUBSTATUS_NOT_FOUND_NODUMP:
trunk/src/mame/drivers/silvmil.c
r243336r243337
261261   PORT_SERVICE_DIPLOC(  0x8000, IP_ACTIVE_LOW, "SW2:8" ) /* Verified */
262262INPUT_PORTS_END
263263
264
265static INPUT_PORTS_START( puzzlove )
266   PORT_START("P1_P2")
267   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )    PORT_PLAYER(1)
268   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )  PORT_PLAYER(1)
269   PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )  PORT_PLAYER(1)
270   PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
271   PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
272   PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
273   PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
274   PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START1 )
275   PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )    PORT_PLAYER(2)
276   PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )  PORT_PLAYER(2)
277   PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )  PORT_PLAYER(2)
278   PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
279   PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
280   PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
281   PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
282   PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_START2 )
283
284   PORT_START("COIN")
285   PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNKNOWN )
286   PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN1 )
287   PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_COIN2 )
288   PORT_BIT( 0xfc00, IP_ACTIVE_LOW, IPT_UNKNOWN )
289
290   PORT_START("DSW")
291   PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Unknown ) )
292   PORT_DIPSETTING(      0x0001, DEF_STR( Off ) )
293   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
294   PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )
295   PORT_DIPSETTING(      0x0002, DEF_STR( Off ) )
296   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
297   PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) )
298   PORT_DIPSETTING(      0x0004, DEF_STR( Off ) )
299   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
300   PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) )
301   PORT_DIPSETTING(      0x0008, DEF_STR( Off ) )
302   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
303   PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) )
304   PORT_DIPSETTING(      0x0010, DEF_STR( Off ) )
305   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
306   PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) )
307   PORT_DIPSETTING(      0x0020, DEF_STR( Off ) )
308   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
309   PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) )
310   PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
311   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
312   PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) )
313   PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
314   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
315   PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) )
316   PORT_DIPSETTING(      0x0100, DEF_STR( Off ) )
317   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
318   PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) )
319   PORT_DIPSETTING(      0x0200, DEF_STR( Off ) )
320   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
321   PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) )
322   PORT_DIPSETTING(      0x0400, DEF_STR( Off ) )
323   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
324   PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
325   PORT_DIPSETTING(      0x0800, DEF_STR( Off ) )
326   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
327   PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
328   PORT_DIPSETTING(      0x1000, DEF_STR( Off ) )
329   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
330   PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
331   PORT_DIPSETTING(      0x2000, DEF_STR( Off ) )
332   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
333   PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
334   PORT_DIPSETTING(      0x4000, DEF_STR( Off ) )
335   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
336   PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
337   PORT_DIPSETTING(      0x8000, DEF_STR( Off ) )
338   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
339INPUT_PORTS_END
340
341
342
264343static const gfx_layout tlayout =
265344{
266345   16,16,
r243336r243337
352431   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.2)
353432MACHINE_CONFIG_END
354433
434static MACHINE_CONFIG_DERIVED( puzzlove, silvmil )
435   MCFG_DEVICE_MODIFY("spritegen")
436   MCFG_DECO_SPRITE_BOOTLEG_TYPE(1)
437MACHINE_CONFIG_END
355438
356439ROM_START( silvmil )
357440   ROM_REGION( 0x100000, "maincpu", 0 ) /* 68k */
r243336r243337
405488   ROM_LOAD16_BYTE( "d-20_u56.bin", 0x100001, 0x80000, CRC(e67c2c7d) SHA1(cddfd6a3d934e71853af62e3d2bf312618c9b4ff) )
406489ROM_END
407490
491ROM_START( puzzlove )
492   ROM_REGION( 0x100000, "maincpu", 0 ) /* 68k */
493   ROM_LOAD16_BYTE( "3.u3", 0x00000, 0x40000, CRC(826c8472) SHA1(54f1a9fa0431de840d6fce466e09098a8d601660) )
494   ROM_LOAD16_BYTE( "4.u2", 0x00001, 0x40000, CRC(64ddc708) SHA1(60b29f8cd5dd654be34452fd197a77abc872e63d) )
408495
496   ROM_REGION( 0x20000, "audiocpu", 0 ) /* z80  */
497   ROM_LOAD( "1.uz02", 0x00000, 0x20000, CRC(3077e7f3) SHA1(e2bf634a2166e1851486a801e74a7ec0d4599c28) )
498
499   ROM_REGION( 0x40000, "oki", 0 ) /* samples */
500   ROM_LOAD( "2.uz11", 0x00000, 0x40000, CRC(4c06ec68) SHA1(3cfca1c98e73c65a45b65d43e012c5529572c057) )
501
502   ROM_REGION( 0x100000, "gfx1", 0 )
503   ROM_LOAD16_BYTE( "10.u41",   0x000000, 0x20000, CRC(7200f878) SHA1(27c6389f802f6e0af0210e2b01788914c0eb1d04) )
504   ROM_CONTINUE ( 0x080000,0x20000 )
505   ROM_CONTINUE ( 0x040000,0x20000 )
506   ROM_CONTINUE ( 0x0c0000,0x20000 )
507   ROM_LOAD16_BYTE( "9.u42",   0x000001, 0x20000, CRC(21b1b297) SHA1(0f589d1c62d0f79b1379e4444b119bdc4cc70cfb) )
508   ROM_CONTINUE ( 0x080001,0x20000 )
509   ROM_CONTINUE ( 0x040001,0x20000 )
510   ROM_CONTINUE ( 0x0c0001,0x20000 )
511
512   ROM_REGION( 0x200000, "gfx2", 0 ) /* sprites */
513   ROM_LOAD16_BYTE( "5.u53", 0x000000, 0x80000, CRC(8707d5a0) SHA1(05480ac34982a4e4768b7f3fccd2e557ca4b2545) )
514   ROM_LOAD16_BYTE( "6.u54", 0x000001, 0x80000, CRC(60a6d614) SHA1(0693c08c51d6b3a05373c9999f01b0b8d23a1c89) )
515   ROM_LOAD16_BYTE( "7.u55", 0x100000, 0x80000, CRC(0f2ea5c4) SHA1(4cb46fc6272e3cc14dfdcd7831157433ee7cf247) )
516   ROM_LOAD16_BYTE( "8.u56", 0x100001, 0x80000, CRC(037dcd3d) SHA1(fcdf604710518982e0b4acc81a56fa703d0c9407) )
517ROM_END
518
409519void silvmil_state::tumblepb_gfx1_rearrange()
410520{
411521   UINT8 *rom = memregion("gfx1")->base();
r243336r243337
432542   tumblepb_gfx1_rearrange();
433543}
434544
435GAME( 1995, silvmil, 0, silvmil, silvmil, silvmil_state, silvmil, ROT270, "Para", "Silver Millennium", GAME_SUPPORTS_SAVE )
545GAME( 1995, silvmil,  0, silvmil, silvmil, silvmil_state, silvmil, ROT270, "Para", "Silver Millennium", GAME_SUPPORTS_SAVE )
546GAME( 1994, puzzlove, 0, puzzlove,puzzlove,silvmil_state, silvmil, ROT0,   "Para", "PuzzLove", GAME_SUPPORTS_SAVE )
trunk/src/mame/drivers/wink.c
r243336r243337
2222public:
2323   wink_state(const machine_config &mconfig, device_type type, const char *tag)
2424      : driver_device(mconfig, type, tag),
25      m_videoram(*this, "videoram"),
2625      m_maincpu(*this, "maincpu"),
2726      m_audiocpu(*this, "audiocpu"),
28      m_gfxdecode(*this, "gfxdecode") { }
27      m_gfxdecode(*this, "gfxdecode"),
28      m_videoram(*this, "videoram") { }
2929
30   required_device<cpu_device> m_maincpu;
31   required_device<cpu_device> m_audiocpu;
32   required_device<gfxdecode_device> m_gfxdecode;
33   
3034   required_shared_ptr<UINT8> m_videoram;
35   
3136   tilemap_t *m_bg_tilemap;
3237   UINT8 m_sound_flag;
3338   UINT8 m_tile_bank;
39   
3440   DECLARE_WRITE8_MEMBER(bgram_w);
3541   DECLARE_WRITE8_MEMBER(player_mux_w);
3642   DECLARE_WRITE8_MEMBER(tile_banking_w);
r243336r243337
4147   DECLARE_READ8_MEMBER(prot_r);
4248   DECLARE_WRITE8_MEMBER(prot_w);
4349   DECLARE_READ8_MEMBER(sound_r);
50   
51   TILE_GET_INFO_MEMBER(get_bg_tile_info);
52   
4453   DECLARE_DRIVER_INIT(wink);
45   TILE_GET_INFO_MEMBER(get_bg_tile_info);
54   virtual void machine_start();
4655   virtual void machine_reset();
4756   virtual void video_start();
57   
4858   UINT32 screen_update_wink(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
59   
4960   INTERRUPT_GEN_MEMBER(wink_sound);
50   required_device<cpu_device> m_maincpu;
51   required_device<cpu_device> m_audiocpu;
52   required_device<gfxdecode_device> m_gfxdecode;
5361};
5462
5563
r243336r243337
331339   m_sound_flag ^= 0x80;
332340}
333341
342void wink_state::machine_start()
343{
344   save_item(NAME(m_sound_flag));
345   save_item(NAME(m_tile_bank));
346}
347
334348void wink_state::machine_reset()
335349{
336350   m_sound_flag = 0;
r243336r243337
431445      ROM[i] += BITSWAP8(i & 0xff, 7,5,3,1,6,4,2,0);
432446}
433447
434GAME( 1985, wink,  0,    wink, wink, wink_state, wink, ROT0, "Midcoin", "Wink (set 1)", GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION )
435GAME( 1985, winka, wink, wink, wink, wink_state, wink, ROT0, "Midcoin", "Wink (set 2)", GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION )
448GAME( 1985, wink,  0,    wink, wink, wink_state, wink, ROT0, "Midcoin", "Wink (set 1)", GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION | GAME_SUPPORTS_SAVE )
449GAME( 1985, winka, wink, wink, wink, wink_state, wink, ROT0, "Midcoin", "Wink (set 2)", GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION | GAME_SUPPORTS_SAVE )
trunk/src/mame/mame.lst
r243336r243337
1047910479heuksun         // (c) 1998 Oksan / F2 System
1048010480bestri          // (c) F2 System
1048110481silvmil         // (c) 1995 Para
10482puzzlove      // (c) 1994 Para
1048210483funybubl        // (c) 1999 In Chang Electronic Co
1048310484funybublc       // (c) 1999 Comad Industries
1048410485dcheese         // (c) 1993 HAR
trunk/src/mame/video/decospr.c
r243336r243337
150150      device_video_interface(mconfig, *this),
151151      m_gfxregion(0),
152152      m_is_bootleg(false),
153      m_bootleg_type(0),
153154      m_x_offset(0),
154155      m_y_offset(0),
155156      m_flipallx(0),
r243336r243337
232233      {
233234         sprite = spriteram[offs + 1];
234235         y = spriteram[offs];
235         flash = y & 0x1000;
236         
237         if (m_is_bootleg && (m_bootleg_type == 1))
238         {
239            flash = y & 0x0400;
240         }
241         else
242         {
243            flash = y & 0x1000;
244         }
245
236246         w = y & 0x0800;
237247
238248
r243336r243337
258268
259269            fx = y & 0x2000;
260270            fy = y & 0x4000;
261            multi = (1 << ((y & 0x0600) >> 9)) - 1; /* 1x, 2x, 4x, 8x height */
262271
272            int tempwidth = 0;
273
274            if (m_is_bootleg && (m_bootleg_type==1))  // puzzlove
275            {
276               tempwidth = (y & 0x1000) >> 12;
277               tempwidth |= (y & 0x0200) >> 8;
278            }
279            else
280            {
281               tempwidth |= (y & 0x0600) >> 9;
282            }
283
284            multi = (1 << (tempwidth)) - 1; /* 1x, 2x, 4x, 8x height */
285
263286            /* bootleg support (esd16.c) */
264287            if (flipscreen) x = ((x&0x1ff) - m_x_offset)&0x1ff;
265288            else x = ((x&0x1ff) + m_x_offset)&0x1ff;
trunk/src/mame/video/decospr.h
r243336r243337
2121   static void set_pri_callback(device_t &device, decospr_pri_cb_delegate callback) { downcast<decospr_device &>(device).m_pri_cb = callback; }
2222   static void set_col_callback(device_t &device, decospr_col_cb_delegate callback) { downcast<decospr_device &>(device).m_col_cb = callback; }
2323   static void set_is_bootleg(device_t &device, bool is_bootleg) { downcast<decospr_device &>(device).m_is_bootleg = is_bootleg; }
24   static void set_bootleg_type(device_t &device, int bootleg_type) { downcast<decospr_device &>(device).m_bootleg_type = bootleg_type; }
2425   static void set_flipallx(device_t &device, int flipallx) { downcast<decospr_device &>(device).m_flipallx = flipallx; }
2526   static void set_transpen(device_t &device, int transpen) { downcast<decospr_device &>(device).m_transpen = transpen; }
2627   static void set_offsets(device_t &device, int x_offset, int y_offset)
r243336r243337
5556
5657   // used by various bootleg / clone chips.
5758   bool m_is_bootleg; // used by various bootlegs (disables masking of sprite tile number when multi-sprite is used)
59   int m_bootleg_type; // for Puzzlove, has sprite bits moved around (probably to prevent board swaps)
5860   int m_x_offset, m_y_offset; // used by various bootlegs
5961   int m_flipallx; // used by esd16.c - hedpanio, multchmp , and nmg5.c
6062   int m_transpen; // used by fncywld (tumbleb.c)
r243336r243337
8082#define MCFG_DECO_SPRITE_ISBOOTLEG(_boot) \
8183   decospr_device::set_is_bootleg(*device, _boot);
8284
85#define MCFG_DECO_SPRITE_BOOTLEG_TYPE(_bootleg_type) \
86   decospr_device::set_bootleg_type(*device, _bootleg_type);
87
8388#define MCFG_DECO_SPRITE_FLIPALLX(_flip) \
8489   decospr_device::set_flipallx(*device, _flip);
8590
trunk/src/mess/drivers/wildfire.c
r243336r243337
1616
1717// master clock is a single stage RC oscillator: R=?K, C=?pf,
1818// S2150 default frequency is 850kHz
19#define MASTER_CLOCK (850000)
19#define MASTER_CLOCK (850000/4)
2020
2121
2222class wildfire_state : public driver_device
r243336r243337
3838   UINT16 m_leds_cache[0x10];
3939   UINT8 m_leds_decay[0x100];
4040
41   DECLARE_READ8_MEMBER(read_k);
4142   DECLARE_WRITE8_MEMBER(write_d);
4243   DECLARE_WRITE16_MEMBER(write_a);
4344
r243336r243337
127128
128129***************************************************************************/
129130
131READ8_MEMBER(wildfire_state::read_k)
132{
133   // ?
134   return 0xf;
135}
136
130137WRITE8_MEMBER(wildfire_state::write_d)
131138{
132139   m_d = data;
r243336r243337
188195   /* basic machine hardware */
189196   MCFG_CPU_ADD("maincpu", AMI_S2150, MASTER_CLOCK)
190197   MCFG_AMI_S2000_READ_I_CB(IOPORT("IN1"))
198   MCFG_AMI_S2000_READ_K_CB(READ8(wildfire_state, read_k))
191199   MCFG_AMI_S2000_WRITE_D_CB(WRITE8(wildfire_state, write_d))
192200   MCFG_AMI_S2000_WRITE_A_CB(WRITE16(wildfire_state, write_a))
193201
trunk/src/mess/layout/wildfire.lay
r243336r243337
88   <element name="digit" defstate="0">
99      <led7seg><color red="1.0" green="0.20" blue="0.22" /></led7seg>
1010   </element>
11   <element name="led" defstate="0">
12      <disk state="0"><color red="0.2" green="0.04" blue="0.05" /></disk>
13      <disk state="1"><color red="1.0" green="0.20" blue="0.22" /></disk>
14   </element>
1115
1216
1317<!-- build screen -->
r243336r243337
2226      <bezel name="digit1" element="digit"><bounds x="10" y="0" width="10" height="15" /></bezel>
2327      <bezel name="digit2" element="digit"><bounds x="20" y="0" width="10" height="15" /></bezel>
2428
29      <bezel name="lamp30" element="led"><bounds x="0" y="20" width="1" height="1" /></bezel>
30      <bezel name="lamp31" element="led"><bounds x="2" y="20" width="1" height="1" /></bezel>
31      <bezel name="lamp32" element="led"><bounds x="4" y="20" width="1" height="1" /></bezel>
32      <bezel name="lamp33" element="led"><bounds x="6" y="20" width="1" height="1" /></bezel>
33      <bezel name="lamp34" element="led"><bounds x="8" y="20" width="1" height="1" /></bezel>
34      <bezel name="lamp35" element="led"><bounds x="10" y="20" width="1" height="1" /></bezel>
35      <bezel name="lamp36" element="led"><bounds x="12" y="20" width="1" height="1" /></bezel>
36      <bezel name="lamp37" element="led"><bounds x="14" y="20" width="1" height="1" /></bezel>
37
38      <bezel name="lamp40" element="led"><bounds x="0" y="22" width="1" height="1" /></bezel>
39      <bezel name="lamp41" element="led"><bounds x="2" y="22" width="1" height="1" /></bezel>
40      <bezel name="lamp42" element="led"><bounds x="4" y="22" width="1" height="1" /></bezel>
41      <bezel name="lamp43" element="led"><bounds x="6" y="22" width="1" height="1" /></bezel>
42      <bezel name="lamp44" element="led"><bounds x="8" y="22" width="1" height="1" /></bezel>
43      <bezel name="lamp45" element="led"><bounds x="10" y="22" width="1" height="1" /></bezel>
44      <bezel name="lamp46" element="led"><bounds x="12" y="22" width="1" height="1" /></bezel>
45      <bezel name="lamp47" element="led"><bounds x="14" y="22" width="1" height="1" /></bezel>
46
47      <bezel name="lamp50" element="led"><bounds x="0" y="24" width="1" height="1" /></bezel>
48      <bezel name="lamp51" element="led"><bounds x="2" y="24" width="1" height="1" /></bezel>
49      <bezel name="lamp52" element="led"><bounds x="4" y="24" width="1" height="1" /></bezel>
50      <bezel name="lamp53" element="led"><bounds x="6" y="24" width="1" height="1" /></bezel>
51      <bezel name="lamp54" element="led"><bounds x="8" y="24" width="1" height="1" /></bezel>
52      <bezel name="lamp55" element="led"><bounds x="10" y="24" width="1" height="1" /></bezel>
53      <bezel name="lamp56" element="led"><bounds x="12" y="24" width="1" height="1" /></bezel>
54      <bezel name="lamp57" element="led"><bounds x="14" y="24" width="1" height="1" /></bezel>
55
56      <bezel name="lamp60" element="led"><bounds x="0" y="26" width="1" height="1" /></bezel>
57      <bezel name="lamp61" element="led"><bounds x="2" y="26" width="1" height="1" /></bezel>
58      <bezel name="lamp62" element="led"><bounds x="4" y="26" width="1" height="1" /></bezel>
59      <bezel name="lamp63" element="led"><bounds x="6" y="26" width="1" height="1" /></bezel>
60      <bezel name="lamp64" element="led"><bounds x="8" y="26" width="1" height="1" /></bezel>
61      <bezel name="lamp65" element="led"><bounds x="10" y="26" width="1" height="1" /></bezel>
62      <bezel name="lamp66" element="led"><bounds x="12" y="26" width="1" height="1" /></bezel>
63      <bezel name="lamp67" element="led"><bounds x="14" y="26" width="1" height="1" /></bezel>
64
65      <bezel name="lamp70" element="led"><bounds x="0" y="28" width="1" height="1" /></bezel>
66      <bezel name="lamp71" element="led"><bounds x="2" y="28" width="1" height="1" /></bezel>
67      <bezel name="lamp72" element="led"><bounds x="4" y="28" width="1" height="1" /></bezel>
68      <bezel name="lamp73" element="led"><bounds x="6" y="28" width="1" height="1" /></bezel>
69      <bezel name="lamp74" element="led"><bounds x="8" y="28" width="1" height="1" /></bezel>
70      <bezel name="lamp75" element="led"><bounds x="10" y="28" width="1" height="1" /></bezel>
71      <bezel name="lamp76" element="led"><bounds x="12" y="28" width="1" height="1" /></bezel>
72      <bezel name="lamp77" element="led"><bounds x="14" y="28" width="1" height="1" /></bezel>
73
74      <bezel name="lamp80" element="led"><bounds x="0" y="30" width="1" height="1" /></bezel>
75      <bezel name="lamp81" element="led"><bounds x="2" y="30" width="1" height="1" /></bezel>
76      <bezel name="lamp82" element="led"><bounds x="4" y="30" width="1" height="1" /></bezel>
77      <bezel name="lamp83" element="led"><bounds x="6" y="30" width="1" height="1" /></bezel>
78      <bezel name="lamp84" element="led"><bounds x="8" y="30" width="1" height="1" /></bezel>
79      <bezel name="lamp85" element="led"><bounds x="10" y="30" width="1" height="1" /></bezel>
80      <bezel name="lamp86" element="led"><bounds x="12" y="30" width="1" height="1" /></bezel>
81      <bezel name="lamp87" element="led"><bounds x="14" y="30" width="1" height="1" /></bezel>
82
83      <bezel name="lamp90" element="led"><bounds x="0" y="32" width="1" height="1" /></bezel>
84      <bezel name="lamp91" element="led"><bounds x="2" y="32" width="1" height="1" /></bezel>
85      <bezel name="lamp92" element="led"><bounds x="4" y="32" width="1" height="1" /></bezel>
86      <bezel name="lamp93" element="led"><bounds x="6" y="32" width="1" height="1" /></bezel>
87      <bezel name="lamp94" element="led"><bounds x="8" y="32" width="1" height="1" /></bezel>
88      <bezel name="lamp95" element="led"><bounds x="10" y="32" width="1" height="1" /></bezel>
89      <bezel name="lamp96" element="led"><bounds x="12" y="32" width="1" height="1" /></bezel>
90      <bezel name="lamp97" element="led"><bounds x="14" y="32" width="1" height="1" /></bezel>
91
92      <bezel name="lamp100" element="led"><bounds x="0" y="34" width="1" height="1" /></bezel>
93      <bezel name="lamp101" element="led"><bounds x="2" y="34" width="1" height="1" /></bezel>
94      <bezel name="lamp102" element="led"><bounds x="4" y="34" width="1" height="1" /></bezel>
95      <bezel name="lamp103" element="led"><bounds x="6" y="34" width="1" height="1" /></bezel>
96      <bezel name="lamp104" element="led"><bounds x="8" y="34" width="1" height="1" /></bezel>
97      <bezel name="lamp105" element="led"><bounds x="10" y="34" width="1" height="1" /></bezel>
98      <bezel name="lamp106" element="led"><bounds x="12" y="34" width="1" height="1" /></bezel>
99      <bezel name="lamp107" element="led"><bounds x="14" y="34" width="1" height="1" /></bezel>
100
101      <bezel name="lamp110" element="led"><bounds x="0" y="36" width="1" height="1" /></bezel>
102      <bezel name="lamp111" element="led"><bounds x="2" y="36" width="1" height="1" /></bezel>
103      <bezel name="lamp112" element="led"><bounds x="4" y="36" width="1" height="1" /></bezel>
104      <bezel name="lamp113" element="led"><bounds x="6" y="36" width="1" height="1" /></bezel>
105      <bezel name="lamp114" element="led"><bounds x="8" y="36" width="1" height="1" /></bezel>
106      <bezel name="lamp115" element="led"><bounds x="10" y="36" width="1" height="1" /></bezel>
107      <bezel name="lamp116" element="led"><bounds x="12" y="36" width="1" height="1" /></bezel>
108      <bezel name="lamp117" element="led"><bounds x="14" y="36" width="1" height="1" /></bezel>
109
110      <bezel name="lamp120" element="led"><bounds x="0" y="40" width="1" height="1" /></bezel>
111      <bezel name="lamp121" element="led"><bounds x="2" y="40" width="1" height="1" /></bezel>
112      <bezel name="lamp122" element="led"><bounds x="4" y="40" width="1" height="1" /></bezel>
113      <bezel name="lamp123" element="led"><bounds x="6" y="40" width="1" height="1" /></bezel>
114      <bezel name="lamp124" element="led"><bounds x="8" y="40" width="1" height="1" /></bezel>
115      <bezel name="lamp125" element="led"><bounds x="10" y="40" width="1" height="1" /></bezel>
116      <bezel name="lamp126" element="led"><bounds x="12" y="40" width="1" height="1" /></bezel>
117      <bezel name="lamp127" element="led"><bounds x="14" y="40" width="1" height="1" /></bezel>
118
119      <bezel name="lamp7" element="led"><bounds x="0" y="42" width="1" height="1" /></bezel>
120      <bezel name="lamp17" element="led"><bounds x="2" y="42" width="1" height="1" /></bezel>
121      <bezel name="lamp27" element="led"><bounds x="4" y="42" width="1" height="1" /></bezel>
122
25123   </view>
26124</mamelayout>
trunk/src/osd/sdl/drawsdl.c
r243336r243337
6464   #endif
6565   m_yuv_lookup(NULL),
6666   m_yuv_bitmap(NULL),
67   m_hw_scale_width(0),
68   m_hw_scale_height(0),
67   //m_hw_scale_width(0),
68   //m_hw_scale_height(0),
6969   m_last_hofs(0),
7070   m_last_vofs(0),
7171   m_old_blitwidth(0),
r243336r243337
114114   // if we leave scaling to SDL and the underlying driver, this
115115   // is the render_target_width/height to use
116116
117   int                 m_hw_scale_width;
118   int                 m_hw_scale_height;
119117   int                 m_last_hofs;
120118   int                 m_last_vofs;
121119   int                 m_old_blitwidth;
r243336r243337
135133   const char      *sdl_scale_mode;        /* what to use as a hint ? */
136134#endif
137135   int             pixel_format;       /* Pixel/Overlay format  */
138   void            (*yuv_blit)(UINT16 *bitmap, sdl_info *sdl, UINT8 *ptr, int pitch);
136   void            (*yuv_blit)(const UINT16 *bitmap, UINT8 *ptr, const int pitch, const UINT32 *lookup, const int width, const int height);
139137};
140138
141139//============================================================
r243336r243337
151149
152150// YUV overlays
153151
154static void yuv_RGB_to_YV12(UINT16 *bitmap, sdl_info *sdl, UINT8 *ptr, int pitch);
155static void yuv_RGB_to_YV12X2(UINT16 *bitmap, sdl_info *sdl, UINT8 *ptr, int pitch);
156static void yuv_RGB_to_YUY2(UINT16 *bitmap, sdl_info *sdl, UINT8 *ptr, int pitch);
157static void yuv_RGB_to_YUY2X2(UINT16 *bitmap, sdl_info *sdl, UINT8 *ptr, int pitch);
152static void yuv_RGB_to_YV12(const UINT16 *bitmap, UINT8 *ptr, const int pitch, \
153      const UINT32 *lookup, const int width, const int height);
154static void yuv_RGB_to_YV12X2(const UINT16 *bitmap, UINT8 *ptr, const int pitch, \
155      const UINT32 *lookup, const int width, const int height);
156static void yuv_RGB_to_YUY2(const UINT16 *bitmap, UINT8 *ptr, const int pitch, \
157      const UINT32 *lookup, const int width, const int height);
158static void yuv_RGB_to_YUY2X2(const UINT16 *bitmap, UINT8 *ptr, const int pitch, \
159      const UINT32 *lookup, const int width, const int height);
158160
159161// Static declarations
160162
r243336r243337
163165
164166static const sdl_scale_mode scale_modes[] =
165167{
166      { "none",    0, 0, 0, 0, SDL_DOUBLEBUF, 0, 0 },
167      { "async",   0, 0, 0, 0, SDL_DOUBLEBUF | SDL_ASYNCBLIT, 0, 0 },
168      { "none",    0, 0, 1, 1, SDL_DOUBLEBUF, 0, 0 },
169      { "async",   0, 0, 1, 1, SDL_DOUBLEBUF | SDL_ASYNCBLIT, 0, 0 },
168170      { "yv12",    1, 1, 1, 1, 0,              SDL_YV12_OVERLAY, yuv_RGB_to_YV12 },
169171      { "yv12x2",  1, 1, 2, 2, 0,              SDL_YV12_OVERLAY, yuv_RGB_to_YV12X2 },
170172      { "yuy2",    1, 1, 1, 1, 0,              SDL_YUY2_OVERLAY, yuv_RGB_to_YUY2 },
r243336r243337
174176#else
175177static const sdl_scale_mode scale_modes[] =
176178{
177      { "none",    0, 0, 0, 0, DRAW2_SCALEMODE_NEAREST, 0, 0 },
179      { "none",    0, 0, 1, 1, DRAW2_SCALEMODE_NEAREST, 0, 0 },
178180      { "hwblit",  1, 0, 1, 1, DRAW2_SCALEMODE_LINEAR, 0, 0 },
179181      { "hwbest",  1, 0, 1, 1, DRAW2_SCALEMODE_BEST, 0, 0 },
180182      { "yv12",    1, 1, 1, 1, DRAW2_SCALEMODE_NEAREST, SDL_PIXELFORMAT_YV12, yuv_RGB_to_YV12 },
r243336r243337
280282      m_yuv_bitmap = NULL;
281283   }
282284
285   fmt = (sdl_sm->pixel_format ? sdl_sm->pixel_format : mode.format);
286
283287   if (sdl_sm->is_scale)
284288   {
289      int m_hw_scale_width =0;
290      int m_hw_scale_height = 0;
291
285292      window().m_target->compute_minimum_size(m_hw_scale_width, m_hw_scale_height);
286293      if (video_config.prescale)
287294      {
r243336r243337
291298         /* This must be a multiple of 2 */
292299         m_hw_scale_width = (m_hw_scale_width + 1) & ~1;
293300      }
294   }
301      if (sdl_sm->is_yuv)
302         m_yuv_bitmap = global_alloc_array(UINT16, m_hw_scale_width * m_hw_scale_height);
295303
296   if (sdl_sm->is_yuv)
297      m_yuv_bitmap = global_alloc_array(UINT16, m_hw_scale_width * m_hw_scale_height);
298
299   fmt = (sdl_sm->pixel_format ? sdl_sm->pixel_format : mode.format);
300
301   if (sdl_sm->is_scale)
302   {
303304      int w = m_hw_scale_width * sdl_sm->mult_w;
304305      int h = m_hw_scale_height * sdl_sm->mult_h;
305306
r243336r243337
355356      //return 1;
356357   }
357358
358   m_hw_scale_width = minimum_width;
359   m_hw_scale_height = minimum_height;
360
361359   if (!shown_video_info)
362360   {
363361      osd_printf_verbose("YUV Mode         : %s\n", sdl_sm->name);
r243336r243337
546544
547545   if (!m_sdlsurf)
548546      return 1;
549
550547   window().m_width = m_sdlsurf->w;
551548   window().m_height = m_sdlsurf->h;
552
553549   if (sm->is_yuv)
554550      yuv_overlay_init();
555551
r243336r243337
589585   
590586   m_sdlsurf = SDL_SetVideoMode(width, height, 0,
591587         SDL_SWSURFACE | SDL_ANYFORMAT | m_extra_flags);
588
592589   window().m_width = m_sdlsurf->w;
593590   window().m_height = m_sdlsurf->h;
594591
595   if (sdl_sm->is_yuv)
592      if (sdl_sm->is_yuv)
596593   {
597594      yuv_overlay_init();
598595   }
r243336r243337
670667      return 0;
671668   if (*yt<0 || *xt >= window().m_blitheight)
672669      return 0;
673   if (!sm->is_scale)
674   {
675      return 1;
676   }
677   /* Rescale */
678   *xt = (*xt * m_hw_scale_width) / window().m_blitwidth;
679   *yt = (*yt * m_hw_scale_height) / window().m_blitheight;
680670   return 1;
681671}
682672
r243336r243337
686676
687677void sdl_info::set_target_bounds()
688678{
689   const sdl_scale_mode *sm = &scale_modes[video_config.scale_mode];
690
691   if (!sm->is_scale)
692      window().m_target->set_bounds(window().m_blitwidth, window().m_blitheight, window().monitor()->aspect());
693   else
694      window().m_target->set_bounds(m_hw_scale_width, m_hw_scale_height);
679   window().m_target->set_bounds(window().m_blitwidth, window().m_blitheight, window().monitor()->aspect());
695680}
696681
697682//============================================================
r243336r243337
703688   const sdl_scale_mode *sm = &scale_modes[video_config.scale_mode];
704689   UINT8 *surfptr;
705690   INT32 pitch;
706   int bpp;
707691   Uint32 rmask, gmask, bmask;
708692#if (SDLMAME_SDL2)
709693   Uint32 amask;
710694#endif
711695   INT32 vofs, hofs, blitwidth, blitheight, ch, cw;
696   int bpp;
712697
713698   if (video_config.novideo)
714699   {
r243336r243337
750735      SDL_LockYUVOverlay(m_yuvsurf);
751736      surfptr = m_yuvsurf->pixels[0]; // (UINT8 *) m_yuv_bitmap;
752737      pitch = m_yuvsurf->pitches[0]; // (UINT8 *) m_yuv_bitmap;
738#if 0
739      printf("abcd %d\n", m_yuvsurf->h);
740      printf("abcd %d %d %d\n", m_yuvsurf->pitches[0], m_yuvsurf->pitches[1], m_yuvsurf->pitches[2]);
741      printf("abcd %p %p %p\n", m_yuvsurf->pixels[0], m_yuvsurf->pixels[1], m_yuvsurf->pixels[2]);
742      printf("abcd %ld %ld\n", m_yuvsurf->pixels[1] - m_yuvsurf->pixels[0], m_yuvsurf->pixels[2] - m_yuvsurf->pixels[1]);
743#endif
753744   }
754745   else
755746      surfptr = (UINT8 *)m_sdlsurf->pixels;
r243336r243337
832823
833824   window().m_primlist->acquire_lock();
834825
835   // render to it
836   if (!sm->is_yuv)
837   {
838      int mamewidth, mameheight;
826   int mamewidth, mameheight;
839827
840      if (!sm->is_scale)
828#if !SDLMAME_SDL2
829      if (!sm->is_yuv)
841830      {
842         mamewidth = blitwidth;
843         mameheight = blitheight;
844#if !SDLMAME_SDL2
845831         surfptr += ((vofs * pitch) + (hofs * bpp));
846#endif
832         mamewidth = blitwidth; //m_sdlsurf->w;
833         mameheight = blitheight; //m_sdlsurf->h;
847834      }
848835      else
849836      {
850         mamewidth = m_hw_scale_width;
851         mameheight = m_hw_scale_height;
837         mamewidth = m_yuvsurf->w / sm->mult_w;
838         mameheight = m_yuvsurf->h / sm->mult_h;
852839      }
840#else
841      Uint32 fmt = 0;
842      int access = 0;
843      SDL_QueryTexture(m_texture_id, &fmt, &access, &mamewidth, &mameheight);
844      mamewidth /= sm->mult_w;
845      mameheight /= sm->mult_h;
846#endif
847   //printf("w h %d %d %d %d\n", mamewidth, mameheight, blitwidth, blitheight);
848
849   // rescale bounds
850   float fw = (float) mamewidth / (float) blitwidth;
851   float fh = (float) mameheight / (float) blitheight;
852
853   // FIXME: this could be a lot easier if we get the primlist here!
854   //         Bounds would be set fit for purpose and done!
855
856   for (render_primitive *prim = window().m_primlist->first(); prim != NULL; prim = prim->next())
857   {
858      prim->bounds.x0 *= fw;
859      prim->bounds.x1 *= fw;
860      prim->bounds.y0 *= fh;
861      prim->bounds.y1 *= fh;
862   }
863
864   // render to it
865   if (!sm->is_yuv)
866   {
853867      switch (rmask)
854868      {
855869         case 0x0000ff00:
r243336r243337
881895   {
882896      assert (m_yuv_bitmap != NULL);
883897      assert (surfptr != NULL);
884      software_renderer<UINT16, 3,3,3, 10,5,0>::draw_primitives(*window().m_primlist, m_yuv_bitmap, m_hw_scale_width, m_hw_scale_height, m_hw_scale_width);
885      sm->yuv_blit((UINT16 *)m_yuv_bitmap, this, surfptr, pitch);
898      software_renderer<UINT16, 3,3,3, 10,5,0>::draw_primitives(*window().m_primlist, m_yuv_bitmap, mamewidth, mameheight, mamewidth);
899      sm->yuv_blit((UINT16 *)m_yuv_bitmap, surfptr, pitch, m_yuv_lookup, mamewidth, mameheight);
886900   }
887901
888902   window().m_primlist->release_lock();
r243336r243337
9921006         }
9931007}
9941008
995static void yuv_RGB_to_YV12(UINT16 *bitmap, sdl_info *sdl, UINT8 *ptr, int pitch)
1009//UINT32 *lookup = sdl->m_yuv_lookup;
1010
1011static void yuv_RGB_to_YV12(const UINT16 *bitmap, UINT8 *ptr, const int pitch, \
1012      const UINT32 *lookup, const int width, const int height)
9961013{
9971014   int x, y;
998   UINT8 *dest_y;
999   UINT8 *dest_u;
1000   UINT8 *dest_v;
1001   UINT16 *src;
1002   UINT16 *src2;
1003   UINT32 *lookup = sdl->m_yuv_lookup;
10041015   UINT8 *pixels[3];
10051016   int u1,v1,y1,u2,v2,y2,u3,v3,y3,u4,v4,y4;      /* 12 */
10061017
10071018   pixels[0] = ptr;
1008   pixels[1] = ptr + pitch * sdl->m_hw_scale_height;
1009   pixels[2] = pixels[1] + pitch * sdl->m_hw_scale_height / 4;
1019   pixels[1] = ptr + pitch * height;
1020   pixels[2] = pixels[1] + pitch * height / 4;
10101021
1011   for(y=0;y<sdl->m_hw_scale_height;y+=2)
1022   for(y=0;y<height;y+=2)
10121023   {
1013      src=bitmap + (y * sdl->m_hw_scale_width) ;
1014      src2=src + sdl->m_hw_scale_width;
1024      const UINT16 *src=bitmap + (y * width) ;
1025      const UINT16 *src2=src + width;
10151026
1016      dest_y = pixels[0] + y * pitch;
1017      dest_v = pixels[1] + (y>>1) * pitch / 2;
1018      dest_u = pixels[2] + (y>>1) * pitch / 2;
1027      UINT8 *dest_y = pixels[0] + y * pitch;
1028      UINT8 *dest_v = pixels[1] + (y>>1) * pitch / 2;
1029      UINT8 *dest_u = pixels[2] + (y>>1) * pitch / 2;
10191030
1020      for(x=0;x<sdl->m_hw_scale_width;x+=2)
1031      for(x=0;x<width;x+=2)
10211032      {
10221033         v1 = lookup[src[x]];
10231034         y1 = (v1>>Y1SHIFT) & 0xff;
r243336r243337
10511062   }
10521063}
10531064
1054static void yuv_RGB_to_YV12X2(UINT16 *bitmap, sdl_info *sdl, UINT8 *ptr, int pitch)
1065static void yuv_RGB_to_YV12X2(const UINT16 *bitmap, UINT8 *ptr, const int pitch, \
1066      const UINT32 *lookup, const int width, const int height)
10551067{
10561068   /* this one is used when scale==2 */
10571069   unsigned int x,y;
1058   UINT16 *dest_y;
1059   UINT8 *dest_u;
1060   UINT8 *dest_v;
1061   UINT16 *src;
10621070   int u1,v1,y1;
10631071   UINT8 *pixels[3];
10641072
10651073   pixels[0] = ptr;
1066   pixels[1] = ptr + pitch * sdl->m_hw_scale_height * 2;
1067   pixels[2] = pixels[1] + pitch * sdl->m_hw_scale_height / 2;
1074   pixels[1] = ptr + pitch * height * 2;
1075#if (SDLMAME_SDL2)
1076   int p2 = (pitch >> 1);
1077#else
1078   int p2 = (pitch + 7) & ~ 7;;
1079   p2 = (p2 >> 1);
1080#endif
1081   pixels[2] = pixels[1] + p2 * height;
10681082
1069   for(y=0;y<sdl->m_hw_scale_height;y++)
1083   for(y=0;y<height;y++)
10701084   {
1071      src = bitmap + (y * sdl->m_hw_scale_width) ;
1085      const UINT16 *src = bitmap + (y * width) ;
10721086
1073      dest_y = (UINT16 *)(pixels[0] + 2 * y * pitch);
1074      dest_v = pixels[1] + y * pitch / 2;
1075      dest_u = pixels[2] + y * pitch / 2;
1076      for(x=0;x<sdl->m_hw_scale_width;x++)
1087      UINT16 *dest_y = (UINT16 *)(pixels[0] + 2 * y * pitch);
1088      UINT8 *dest_v = pixels[1] + y * p2;
1089      UINT8 *dest_u = pixels[2] + y * p2;
1090      for(x=0;x<width;x++)
10771091      {
1078         v1 = sdl->m_yuv_lookup[src[x]];
1092         v1 = lookup[src[x]];
10791093         y1 = (v1 >> Y1SHIFT) & 0xff;
10801094         u1 = (v1 >> USHIFT)  & 0xff;
10811095         v1 = (v1 >> VSHIFT)  & 0xff;
r243336r243337
10881102   }
10891103}
10901104
1091static void yuv_RGB_to_YUY2(UINT16 *bitmap, sdl_info *sdl, UINT8 *ptr, int pitch)
1105static void yuv_RGB_to_YUY2(const UINT16 *bitmap, UINT8 *ptr, const int pitch, \
1106      const UINT32 *lookup, const int width, const int height)
10921107{
10931108   /* this one is used when scale==2 */
10941109   unsigned int y;
1095   UINT32 *dest;
1096   UINT16 *src;
1097   UINT16 *end;
10981110   UINT32 p1,p2,uv;
1099   UINT32 *lookup = sdl->m_yuv_lookup;
1100   int yuv_pitch = pitch/4;
1111   const int yuv_pitch = pitch/4;
11011112
1102   for(y=0;y<sdl->m_hw_scale_height;y++)
1113   for(y=0;y<height;y++)
11031114   {
1104      src=bitmap + (y * sdl->m_hw_scale_width) ;
1105      end=src+sdl->m_hw_scale_width;
1115      const UINT16 *src=bitmap + (y * width) ;
1116      const UINT16 *end=src+width;
11061117
1107      dest = (UINT32 *) ptr;
1118      UINT32 *dest = (UINT32 *) ptr;
11081119      dest += y * yuv_pitch;
11091120      for(; src<end; src+=2)
11101121      {
r243336r243337
11171128   }
11181129}
11191130
1120static void yuv_RGB_to_YUY2X2(UINT16 *bitmap, sdl_info *sdl, UINT8 *ptr, int pitch)
1131static void yuv_RGB_to_YUY2X2(const UINT16 *bitmap, UINT8 *ptr, const int pitch, \
1132      const UINT32 *lookup, const int width, const int height)
11211133{
11221134   /* this one is used when scale==2 */
11231135   unsigned int y;
1124   UINT32 *dest;
1125   UINT16 *src;
1126   UINT16 *end;
1127   UINT32 *lookup = sdl->m_yuv_lookup;
11281136   int yuv_pitch = pitch / 4;
11291137
1130   for(y=0;y<sdl->m_hw_scale_height;y++)
1138   for(y=0;y<height;y++)
11311139   {
1132      src=bitmap + (y * sdl->m_hw_scale_width) ;
1133      end=src+sdl->m_hw_scale_width;
1140      const UINT16 *src=bitmap + (y * width) ;
1141      const UINT16 *end=src+width;
11341142
1135      dest = (UINT32 *) ptr;
1143      UINT32 *dest = (UINT32 *) ptr;
11361144      dest += (y * yuv_pitch);
11371145      for(; src<end; src++)
11381146      {
trunk/src/osd/sdl/input.c
r243336r243337
17581758         devinfo = generic_device_find_index( keyboard_list, keyboard_map.logical[0]);
17591759#endif
17601760         devinfo->keyboard.state[OSD_SDL_INDEX_KEYSYM(&event.key.keysym)] = 0x80;
1761#if (!SDLMAME_SDL2)
1761#if (SDLMAME_SDL2)
1762         if (event.key.keysym.sym < 0x20)
1763            ui_input_push_char_event(machine, sdl_window_list->m_target, event.key.keysym.sym);
1764#else
17621765         ui_input_push_char_event(machine, sdl_window_list->m_target, (unicode_char) event.key.keysym.unicode);
17631766#endif
17641767         break;
r243336r243337
18591862            int cx, cy;
18601863            osd_ticks_t click = osd_ticks() * 1000 / osd_ticks_per_second();
18611864            sdl_window_info *window = GET_FOCUS_WINDOW(&event.button);
1862            if (window != NULL && window->renderer().xy_to_render_target(event.button.x,event.button.y, &cx, &cy) )
1865            if (window != NULL && window->xy_to_render_target(event.button.x,event.button.y, &cx, &cy) )
18631866            {
18641867               ui_input_push_mouse_down_event(machine, window->m_target, cx, cy);
18651868               // FIXME Parameter ?
r243336r243337
18931896            int cx, cy;
18941897            sdl_window_info *window = GET_FOCUS_WINDOW(&event.button);
18951898
1896            if (window != NULL && window->renderer().xy_to_render_target(event.button.x,event.button.y, &cx, &cy) )
1899            if (window != NULL && window->xy_to_render_target(event.button.x,event.button.y, &cx, &cy) )
18971900            {
18981901               ui_input_push_mouse_up_event(machine, window->m_target, cx, cy);
18991902            }
r243336r243337
19181921            int cx=-1, cy=-1;
19191922            sdl_window_info *window = GET_FOCUS_WINDOW(&event.motion);
19201923
1921            if (window != NULL && window->renderer().xy_to_render_target(event.motion.x, event.motion.y, &cx, &cy) )
1924            if (window != NULL && window->xy_to_render_target(event.motion.x, event.motion.y, &cx, &cy) )
19221925               ui_input_push_mouse_move_event(machine, window->m_target, cx, cy);
19231926         }
19241927         break;
r243336r243337
19471950      case SDL_TEXTINPUT:
19481951         if (*event.text.text)
19491952         {
1953            printf("char %c\n", *event.text.text);
19501954            sdl_window_info *window = GET_FOCUS_WINDOW(&event.text);
19511955            unicode_char result;
19521956            if (window != NULL )
trunk/src/osd/sdl/sdl.mak
r243336r243337
894894#-------------------------------------------------
895895
896896TOOLS += \
897   testkeys$(EXE)
897   $(BIN)testkeys$(EXE)
898898
899899$(SDLOBJ)/testkeys.o: $(SDLSRC)/testkeys.c
900900   @echo Compiling $<...
r243336r243337
903903TESTKEYSOBJS = \
904904   $(SDLOBJ)/testkeys.o \
905905
906testkeys$(EXE): $(TESTKEYSOBJS) $(LIBUTIL) $(LIBOCORE) $(SDLUTILMAIN)
906$(BIN)testkeys$(EXE): $(TESTKEYSOBJS) $(LIBUTIL) $(LIBOCORE) $(SDLUTILMAIN)
907907   @echo Linking $@...
908908   $(LD) $(LDFLAGS) $^ $(BASELIBS) -o $@
909909
trunk/src/osd/sdl/testkeys.c
r243336r243337
146146            printf("ITEM_ID_XY %s 0x%x 0x%x %s\n",
147147               lookup_key_name(sdl_lookup, event.key.keysym.scancode),
148148               (int) event.key.keysym.scancode,
149               0, //(int) event.key.keysym.unicode,
149               (int) event.key.keysym.sym,
150150               "");
151151            lasttext[0] = 0;
152152#else
r243336r243337
165165         printf("ITEM_ID_XY %s 0x%x 0x%x %s\n",
166166               lookup_key_name(sdl_lookup, event.key.keysym.scancode),
167167               (int) event.key.keysym.scancode,
168               0, //(int) event.key.keysym.unicode,
168               (int) event.key.keysym.sym,
169169               lasttext);
170170#else
171171         memset(buf, 0, 19);
trunk/src/osd/sdl/window.c
r243336r243337
5555#define ASSERT_WINDOW_THREAD()  ASSERT_USE(window_threadid)
5656#define ASSERT_MAIN_THREAD()    ASSERT_USE(main_threadid)
5757
58#define OSDWORK_CALLBACK(name)  void *name(void *param, ATTR_UNUSED int threadid)
59
6058// minimum window dimension
6159#define MIN_WINDOW_DIM                  200
6260
r243336r243337
141139//  PROTOTYPES
142140//============================================================
143141
144static OSDWORK_CALLBACK( draw_video_contents_wt );
145static OSDWORK_CALLBACK( sdlwindow_video_window_destroy_wt );
146static OSDWORK_CALLBACK( sdlwindow_resize_wt );
147static OSDWORK_CALLBACK( sdlwindow_toggle_full_screen_wt );
148142static void sdlwindow_update_cursor_state(running_machine &machine, sdl_window_info *window);
149143static void sdlwindow_sync(void);
150144
151static void *complete_create_wt(void *param, int threadid);
152145static void set_starting_view(running_machine &machine, int index, sdl_window_info *window, const char *defview, const char *view);
153146
154147//============================================================
r243336r243337
483476//  (main thread)
484477//============================================================
485478
486static OSDWORK_CALLBACK( sdlwindow_resize_wt )
479OSDWORK_CALLBACK( sdl_window_info::sdlwindow_resize_wt )
487480{
488481   worker_param *      wp = (worker_param *) param;
489482   sdl_window_info *   window = wp->window();
r243336r243337
517510//  (window thread)
518511//============================================================
519512
520static OSDWORK_CALLBACK( sdlwindow_clear_surface_wt )
513OSDWORK_CALLBACK( sdl_window_info::sdlwindow_clear_surface_wt )
521514{
522515   worker_param *wp = (worker_param *) param;
523516   sdl_window_info *window = wp->window();
r243336r243337
547540//  (main thread)
548541//============================================================
549542
550static OSDWORK_CALLBACK( sdlwindow_toggle_full_screen_wt )
543OSDWORK_CALLBACK( sdl_window_info::sdlwindow_toggle_full_screen_wt )
551544{
552545   worker_param *wp = (worker_param *) param;
553546   sdl_window_info *window = wp->window();
r243336r243337
583576   execute_async_wait(&sdlwindow_toggle_full_screen_wt, worker_param(machine, this));
584577}
585578
586static OSDWORK_CALLBACK( destroy_all_textures_wt )
579OSDWORK_CALLBACK( sdl_window_info::destroy_all_textures_wt )
587580{
588581   worker_param *wp = (worker_param *) param;
589582
r243336r243337
703696   return NULL;
704697}
705698
699int sdl_window_info::xy_to_render_target(int x, int y, int *xt, int *yt)
700{
701   return renderer().xy_to_render_target(x, y, xt, yt);
702}
706703
707704//============================================================
708705//  sdlwindow_video_window_create
r243336r243337
753750   {
754751      osd_work_item *wi;
755752
756      wi = osd_work_item_queue(work_queue, &complete_create_wt, (void *) wp, 0);
753      wi = osd_work_item_queue(work_queue, &sdl_window_info::complete_create_wt, (void *) wp, 0);
757754      sdlwindow_sync();
758755      result = *((int *) (osd_work_item_result)(wi));
759756      osd_work_item_release(wi);
760757   }
761758   else
762      result = *((int *) complete_create_wt((void *) wp, 0));
759      result = *((int *) sdl_window_info::complete_create_wt((void *) wp, 0));
763760
764761   // handle error conditions
765762   if (result == 1)
r243336r243337
780777//  (main thread)
781778//============================================================
782779
783static OSDWORK_CALLBACK( sdlwindow_video_window_destroy_wt )
780OSDWORK_CALLBACK( sdl_window_info::sdlwindow_video_window_destroy_wt )
784781{
785782   worker_param *      wp = (worker_param *) param;
786783   sdl_window_info *   window = wp->window();
r243336r243337
10751072//  (window thread)
10761073//============================================================
10771074
1078static OSDWORK_CALLBACK( complete_create_wt )
1075OSDWORK_CALLBACK( sdl_window_info::complete_create_wt )
10791076{
10801077   worker_param *      wp = (worker_param *) param;
10811078   sdl_window_info *   window = wp->window();
r243336r243337
11391136//  (window thread)
11401137//============================================================
11411138
1142static void measure_fps(sdl_window_info *window, UINT32 dc, int update)
1139void sdl_window_info::measure_fps(UINT32 dc, int update)
11431140{
11441141   const unsigned long frames_skip4fps = 100;
11451142   static int64_t lastTime=0, sumdt=0, startTime=0;
r243336r243337
11541151
11551152   t0 = osd_ticks();
11561153
1157   window->renderer().draw(dc, update);
1154   renderer().draw(dc, update);
11581155
11591156   frames++;
11601157   currentTime = osd_ticks();
r243336r243337
11811178   }
11821179}
11831180
1184static OSDWORK_CALLBACK( draw_video_contents_wt )
1181OSDWORK_CALLBACK( sdl_window_info::draw_video_contents_wt )
11851182{
11861183   UINT32  dc =        0;
11871184   int     update =    1;
r243336r243337
12031200   else
12041201   {
12051202      if( video_config.perftest )
1206         measure_fps(window, dc, update);
1203         window->measure_fps(dc, update);
12071204      else
12081205         window->renderer().draw(dc, update);
12091206   }
trunk/src/osd/sdl/window.h
r243336r243337
5757   sdl_window_info *m_window;
5858};
5959
60#define OSDWORK_CALLBACK(name)  void *name(void *param, ATTR_UNUSED int threadid)
61
6062class sdl_window_info
6163{
6264public:
r243336r243337
116118   void pick_best_mode(int *fswidth, int *fsheight);
117119   int index() const { return m_index; }
118120
119   osd_renderer &renderer() { return *m_renderer; }
121   int xy_to_render_target(int x, int y, int *xt, int *yt);
120122
121123   // Pointer to next window
122124   sdl_window_info *   m_next;
r243336r243337
167169   {
168170      m_renderer = renderer;
169171   }
172
173   static OSDWORK_CALLBACK( complete_create_wt );
174protected:
175   osd_renderer &renderer() { return *m_renderer; }
170176private:
171177   void constrain_to_aspect_ratio(int *window_width, int *window_height, int adjustment);
172178
r243336r243337
178184   int                 m_index;
179185   osd_renderer *      m_renderer;
180186
187   // static callbacks ...
188
189   static OSDWORK_CALLBACK( sdlwindow_resize_wt );
190   static OSDWORK_CALLBACK( draw_video_contents_wt );
191   static OSDWORK_CALLBACK( sdlwindow_video_window_destroy_wt );
192   static OSDWORK_CALLBACK( sdlwindow_toggle_full_screen_wt );
193   static OSDWORK_CALLBACK( sdlwindow_clear_surface_wt );
194   static OSDWORK_CALLBACK( destroy_all_textures_wt );
195
196   void measure_fps(UINT32 dc, int update);
197
181198};
182199
183200struct sdl_draw_info


Previous 199869 Revisions Next


© 1997-2024 The MAME Team