Previous 199869 Revisions Next

r34824 Tuesday 3rd February, 2015 at 21:19:53 UTC by Robbbert
Replaced corrupt dump for mtetrisc with fresh and verified good redump [brizzo, Zoinkity]
[src/emu]audit.c
[src/mame]mame.lst
[src/mame/drivers]aleck64.c 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
r243335r243336
382382               else
383383                  string->catprintf("NOT FOUND (%s)\n", shared_device->shortname());
384384            }
385            best_new_status = NOTFOUND;
386385            break;
387386
388387         case audit_record::SUBSTATUS_NOT_FOUND_NODUMP:
trunk/src/mame/drivers/aleck64.c
r243335r243336
975975   PIF_BOOTROM
976976
977977   ROM_REGION32_BE( 0x4000000, "user2", 0 )
978   ROM_LOAD16_WORD_SWAP( "nus-zcaj.u4", 0x000000, 0x1000000, CRC(ec4563fc) SHA1(4d5a30873a5850cf4cd1c0bdbe24e1934f163cd0) )
979
978   ROM_LOAD16_WORD_SWAP( "nus-zcaj.u4", 0x000000, 0x1000000, CRC(c9de64db) SHA1(59932c70b43ff8e9264c670f37b3abbe939b7f95) )
980979   ROM_REGION32_BE( 0x100000, "user3", 0 )
981980   ROM_LOAD ( "tet-01m.u5", 0x000000, 0x100000, CRC(f78f859b) SHA1(b07c85e0453869fe43792f42081f64a5327e58e6) )
982981
trunk/src/mame/drivers/silvmil.c
r243335r243336
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
343264static const gfx_layout tlayout =
344265{
345266   16,16,
r243335r243336
431352   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.2)
432353MACHINE_CONFIG_END
433354
434static MACHINE_CONFIG_DERIVED( puzzlove, silvmil )
435   MCFG_DEVICE_MODIFY("spritegen")
436   MCFG_DECO_SPRITE_BOOTLEG_TYPE(1)
437MACHINE_CONFIG_END
438355
439356ROM_START( silvmil )
440357   ROM_REGION( 0x100000, "maincpu", 0 ) /* 68k */
r243335r243336
488405   ROM_LOAD16_BYTE( "d-20_u56.bin", 0x100001, 0x80000, CRC(e67c2c7d) SHA1(cddfd6a3d934e71853af62e3d2bf312618c9b4ff) )
489406ROM_END
490407
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) )
495408
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
519409void silvmil_state::tumblepb_gfx1_rearrange()
520410{
521411   UINT8 *rom = memregion("gfx1")->base();
r243335r243336
542432   tumblepb_gfx1_rearrange();
543433}
544434
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 )
435GAME( 1995, silvmil, 0, silvmil, silvmil, silvmil_state, silvmil, ROT270, "Para", "Silver Millennium", GAME_SUPPORTS_SAVE )
trunk/src/mame/drivers/wink.c
r243335r243336
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"),
2526      m_maincpu(*this, "maincpu"),
2627      m_audiocpu(*this, "audiocpu"),
27      m_gfxdecode(*this, "gfxdecode"),
28      m_videoram(*this, "videoram") { }
28      m_gfxdecode(*this, "gfxdecode") { }
2929
30   required_device<cpu_device> m_maincpu;
31   required_device<cpu_device> m_audiocpu;
32   required_device<gfxdecode_device> m_gfxdecode;
33   
3430   required_shared_ptr<UINT8> m_videoram;
35   
3631   tilemap_t *m_bg_tilemap;
3732   UINT8 m_sound_flag;
3833   UINT8 m_tile_bank;
39   
4034   DECLARE_WRITE8_MEMBER(bgram_w);
4135   DECLARE_WRITE8_MEMBER(player_mux_w);
4236   DECLARE_WRITE8_MEMBER(tile_banking_w);
r243335r243336
4741   DECLARE_READ8_MEMBER(prot_r);
4842   DECLARE_WRITE8_MEMBER(prot_w);
4943   DECLARE_READ8_MEMBER(sound_r);
50   
51   TILE_GET_INFO_MEMBER(get_bg_tile_info);
52   
5344   DECLARE_DRIVER_INIT(wink);
54   virtual void machine_start();
45   TILE_GET_INFO_MEMBER(get_bg_tile_info);
5546   virtual void machine_reset();
5647   virtual void video_start();
57   
5848   UINT32 screen_update_wink(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
59   
6049   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;
6153};
6254
6355
r243335r243336
339331   m_sound_flag ^= 0x80;
340332}
341333
342void wink_state::machine_start()
343{
344   save_item(NAME(m_sound_flag));
345   save_item(NAME(m_tile_bank));
346}
347
348334void wink_state::machine_reset()
349335{
350336   m_sound_flag = 0;
r243335r243336
445431      ROM[i] += BITSWAP8(i & 0xff, 7,5,3,1,6,4,2,0);
446432}
447433
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 )
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 )
trunk/src/mame/mame.lst
r243335r243336
1047910479heuksun         // (c) 1998 Oksan / F2 System
1048010480bestri          // (c) F2 System
1048110481silvmil         // (c) 1995 Para
10482puzzlove      // (c) 1994 Para
1048310482funybubl        // (c) 1999 In Chang Electronic Co
1048410483funybublc       // (c) 1999 Comad Industries
1048510484dcheese         // (c) 1993 HAR
trunk/src/mame/video/decospr.c
r243335r243336
150150      device_video_interface(mconfig, *this),
151151      m_gfxregion(0),
152152      m_is_bootleg(false),
153      m_bootleg_type(0),
154153      m_x_offset(0),
155154      m_y_offset(0),
156155      m_flipallx(0),
r243335r243336
233232      {
234233         sprite = spriteram[offs + 1];
235234         y = spriteram[offs];
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
235         flash = y & 0x1000;
246236         w = y & 0x0800;
247237
248238
r243335r243336
268258
269259            fx = y & 0x2000;
270260            fy = y & 0x4000;
261            multi = (1 << ((y & 0x0600) >> 9)) - 1; /* 1x, 2x, 4x, 8x height */
271262
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
286263            /* bootleg support (esd16.c) */
287264            if (flipscreen) x = ((x&0x1ff) - m_x_offset)&0x1ff;
288265            else x = ((x&0x1ff) + m_x_offset)&0x1ff;
trunk/src/mame/video/decospr.h
r243335r243336
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; }
2524   static void set_flipallx(device_t &device, int flipallx) { downcast<decospr_device &>(device).m_flipallx = flipallx; }
2625   static void set_transpen(device_t &device, int transpen) { downcast<decospr_device &>(device).m_transpen = transpen; }
2726   static void set_offsets(device_t &device, int x_offset, int y_offset)
r243335r243336
5655
5756   // used by various bootleg / clone chips.
5857   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)
6058   int m_x_offset, m_y_offset; // used by various bootlegs
6159   int m_flipallx; // used by esd16.c - hedpanio, multchmp , and nmg5.c
6260   int m_transpen; // used by fncywld (tumbleb.c)
r243335r243336
8280#define MCFG_DECO_SPRITE_ISBOOTLEG(_boot) \
8381   decospr_device::set_is_bootleg(*device, _boot);
8482
85#define MCFG_DECO_SPRITE_BOOTLEG_TYPE(_bootleg_type) \
86   decospr_device::set_bootleg_type(*device, _bootleg_type);
87
8883#define MCFG_DECO_SPRITE_FLIPALLX(_flip) \
8984   decospr_device::set_flipallx(*device, _flip);
9085
trunk/src/mess/drivers/wildfire.c
r243335r243336
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/4)
19#define MASTER_CLOCK (850000)
2020
2121
2222class wildfire_state : public driver_device
r243335r243336
3838   UINT16 m_leds_cache[0x10];
3939   UINT8 m_leds_decay[0x100];
4040
41   DECLARE_READ8_MEMBER(read_k);
4241   DECLARE_WRITE8_MEMBER(write_d);
4342   DECLARE_WRITE16_MEMBER(write_a);
4443
r243335r243336
128127
129128***************************************************************************/
130129
131READ8_MEMBER(wildfire_state::read_k)
132{
133   // ?
134   return 0xf;
135}
136
137130WRITE8_MEMBER(wildfire_state::write_d)
138131{
139132   m_d = data;
r243335r243336
195188   /* basic machine hardware */
196189   MCFG_CPU_ADD("maincpu", AMI_S2150, MASTER_CLOCK)
197190   MCFG_AMI_S2000_READ_I_CB(IOPORT("IN1"))
198   MCFG_AMI_S2000_READ_K_CB(READ8(wildfire_state, read_k))
199191   MCFG_AMI_S2000_WRITE_D_CB(WRITE8(wildfire_state, write_d))
200192   MCFG_AMI_S2000_WRITE_A_CB(WRITE16(wildfire_state, write_a))
201193
trunk/src/mess/layout/wildfire.lay
r243335r243336
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>
1511
1612
1713<!-- build screen -->
r243335r243336
2622      <bezel name="digit1" element="digit"><bounds x="10" y="0" width="10" height="15" /></bezel>
2723      <bezel name="digit2" element="digit"><bounds x="20" y="0" width="10" height="15" /></bezel>
2824
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
12325   </view>
12426</mamelayout>
trunk/src/osd/sdl/drawsdl.c
r243335r243336
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),
r243335r243336
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;
117119   int                 m_last_hofs;
118120   int                 m_last_vofs;
119121   int                 m_old_blitwidth;
r243335r243336
133135   const char      *sdl_scale_mode;        /* what to use as a hint ? */
134136#endif
135137   int             pixel_format;       /* Pixel/Overlay format  */
136   void            (*yuv_blit)(const UINT16 *bitmap, UINT8 *ptr, const int pitch, const UINT32 *lookup, const int width, const int height);
138   void            (*yuv_blit)(UINT16 *bitmap, sdl_info *sdl, UINT8 *ptr, int pitch);
137139};
138140
139141//============================================================
r243335r243336
149151
150152// YUV overlays
151153
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);
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);
160158
161159// Static declarations
162160
r243335r243336
165163
166164static const sdl_scale_mode scale_modes[] =
167165{
168      { "none",    0, 0, 1, 1, SDL_DOUBLEBUF, 0, 0 },
169      { "async",   0, 0, 1, 1, SDL_DOUBLEBUF | SDL_ASYNCBLIT, 0, 0 },
166      { "none",    0, 0, 0, 0, SDL_DOUBLEBUF, 0, 0 },
167      { "async",   0, 0, 0, 0, SDL_DOUBLEBUF | SDL_ASYNCBLIT, 0, 0 },
170168      { "yv12",    1, 1, 1, 1, 0,              SDL_YV12_OVERLAY, yuv_RGB_to_YV12 },
171169      { "yv12x2",  1, 1, 2, 2, 0,              SDL_YV12_OVERLAY, yuv_RGB_to_YV12X2 },
172170      { "yuy2",    1, 1, 1, 1, 0,              SDL_YUY2_OVERLAY, yuv_RGB_to_YUY2 },
r243335r243336
176174#else
177175static const sdl_scale_mode scale_modes[] =
178176{
179      { "none",    0, 0, 1, 1, DRAW2_SCALEMODE_NEAREST, 0, 0 },
177      { "none",    0, 0, 0, 0, DRAW2_SCALEMODE_NEAREST, 0, 0 },
180178      { "hwblit",  1, 0, 1, 1, DRAW2_SCALEMODE_LINEAR, 0, 0 },
181179      { "hwbest",  1, 0, 1, 1, DRAW2_SCALEMODE_BEST, 0, 0 },
182180      { "yv12",    1, 1, 1, 1, DRAW2_SCALEMODE_NEAREST, SDL_PIXELFORMAT_YV12, yuv_RGB_to_YV12 },
r243335r243336
282280      m_yuv_bitmap = NULL;
283281   }
284282
285   fmt = (sdl_sm->pixel_format ? sdl_sm->pixel_format : mode.format);
286
287283   if (sdl_sm->is_scale)
288284   {
289      int m_hw_scale_width =0;
290      int m_hw_scale_height = 0;
291
292285      window().m_target->compute_minimum_size(m_hw_scale_width, m_hw_scale_height);
293286      if (video_config.prescale)
294287      {
r243335r243336
298291         /* This must be a multiple of 2 */
299292         m_hw_scale_width = (m_hw_scale_width + 1) & ~1;
300293      }
301      if (sdl_sm->is_yuv)
302         m_yuv_bitmap = global_alloc_array(UINT16, m_hw_scale_width * m_hw_scale_height);
294   }
303295
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   {
304303      int w = m_hw_scale_width * sdl_sm->mult_w;
305304      int h = m_hw_scale_height * sdl_sm->mult_h;
306305
r243335r243336
356355      //return 1;
357356   }
358357
358   m_hw_scale_width = minimum_width;
359   m_hw_scale_height = minimum_height;
360
359361   if (!shown_video_info)
360362   {
361363      osd_printf_verbose("YUV Mode         : %s\n", sdl_sm->name);
r243335r243336
544546
545547   if (!m_sdlsurf)
546548      return 1;
549
547550   window().m_width = m_sdlsurf->w;
548551   window().m_height = m_sdlsurf->h;
552
549553   if (sm->is_yuv)
550554      yuv_overlay_init();
551555
r243335r243336
585589   
586590   m_sdlsurf = SDL_SetVideoMode(width, height, 0,
587591         SDL_SWSURFACE | SDL_ANYFORMAT | m_extra_flags);
588
589592   window().m_width = m_sdlsurf->w;
590593   window().m_height = m_sdlsurf->h;
591594
592      if (sdl_sm->is_yuv)
595   if (sdl_sm->is_yuv)
593596   {
594597      yuv_overlay_init();
595598   }
r243335r243336
667670      return 0;
668671   if (*yt<0 || *xt >= window().m_blitheight)
669672      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;
670680   return 1;
671681}
672682
r243335r243336
676686
677687void sdl_info::set_target_bounds()
678688{
679   window().m_target->set_bounds(window().m_blitwidth, window().m_blitheight, window().monitor()->aspect());
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);
680695}
681696
682697//============================================================
r243335r243336
688703   const sdl_scale_mode *sm = &scale_modes[video_config.scale_mode];
689704   UINT8 *surfptr;
690705   INT32 pitch;
706   int bpp;
691707   Uint32 rmask, gmask, bmask;
692708#if (SDLMAME_SDL2)
693709   Uint32 amask;
694710#endif
695711   INT32 vofs, hofs, blitwidth, blitheight, ch, cw;
696   int bpp;
697712
698713   if (video_config.novideo)
699714   {
r243335r243336
735750      SDL_LockYUVOverlay(m_yuvsurf);
736751      surfptr = m_yuvsurf->pixels[0]; // (UINT8 *) m_yuv_bitmap;
737752      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
744753   }
745754   else
746755      surfptr = (UINT8 *)m_sdlsurf->pixels;
r243335r243336
823832
824833   window().m_primlist->acquire_lock();
825834
826   int mamewidth, mameheight;
835   // render to it
836   if (!sm->is_yuv)
837   {
838      int mamewidth, mameheight;
827839
828#if !SDLMAME_SDL2
829      if (!sm->is_yuv)
840      if (!sm->is_scale)
830841      {
842         mamewidth = blitwidth;
843         mameheight = blitheight;
844#if !SDLMAME_SDL2
831845         surfptr += ((vofs * pitch) + (hofs * bpp));
832         mamewidth = blitwidth; //m_sdlsurf->w;
833         mameheight = blitheight; //m_sdlsurf->h;
846#endif
834847      }
835848      else
836849      {
837         mamewidth = m_yuvsurf->w / sm->mult_w;
838         mameheight = m_yuvsurf->h / sm->mult_h;
850         mamewidth = m_hw_scale_width;
851         mameheight = m_hw_scale_height;
839852      }
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   {
867853      switch (rmask)
868854      {
869855         case 0x0000ff00:
r243335r243336
895881   {
896882      assert (m_yuv_bitmap != NULL);
897883      assert (surfptr != NULL);
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);
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);
900886   }
901887
902888   window().m_primlist->release_lock();
r243335r243336
1006992         }
1007993}
1008994
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)
995static void yuv_RGB_to_YV12(UINT16 *bitmap, sdl_info *sdl, UINT8 *ptr, int pitch)
1013996{
1014997   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;
10151004   UINT8 *pixels[3];
10161005   int u1,v1,y1,u2,v2,y2,u3,v3,y3,u4,v4,y4;      /* 12 */
10171006
10181007   pixels[0] = ptr;
1019   pixels[1] = ptr + pitch * height;
1020   pixels[2] = pixels[1] + pitch * height / 4;
1008   pixels[1] = ptr + pitch * sdl->m_hw_scale_height;
1009   pixels[2] = pixels[1] + pitch * sdl->m_hw_scale_height / 4;
10211010
1022   for(y=0;y<height;y+=2)
1011   for(y=0;y<sdl->m_hw_scale_height;y+=2)
10231012   {
1024      const UINT16 *src=bitmap + (y * width) ;
1025      const UINT16 *src2=src + width;
1013      src=bitmap + (y * sdl->m_hw_scale_width) ;
1014      src2=src + sdl->m_hw_scale_width;
10261015
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;
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;
10301019
1031      for(x=0;x<width;x+=2)
1020      for(x=0;x<sdl->m_hw_scale_width;x+=2)
10321021      {
10331022         v1 = lookup[src[x]];
10341023         y1 = (v1>>Y1SHIFT) & 0xff;
r243335r243336
10621051   }
10631052}
10641053
1065static void yuv_RGB_to_YV12X2(const UINT16 *bitmap, UINT8 *ptr, const int pitch, \
1066      const UINT32 *lookup, const int width, const int height)
1054static void yuv_RGB_to_YV12X2(UINT16 *bitmap, sdl_info *sdl, UINT8 *ptr, int pitch)
10671055{
10681056   /* this one is used when scale==2 */
10691057   unsigned int x,y;
1058   UINT16 *dest_y;
1059   UINT8 *dest_u;
1060   UINT8 *dest_v;
1061   UINT16 *src;
10701062   int u1,v1,y1;
10711063   UINT8 *pixels[3];
10721064
10731065   pixels[0] = ptr;
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;
1066   pixels[1] = ptr + pitch * sdl->m_hw_scale_height * 2;
1067   pixels[2] = pixels[1] + pitch * sdl->m_hw_scale_height / 2;
10821068
1083   for(y=0;y<height;y++)
1069   for(y=0;y<sdl->m_hw_scale_height;y++)
10841070   {
1085      const UINT16 *src = bitmap + (y * width) ;
1071      src = bitmap + (y * sdl->m_hw_scale_width) ;
10861072
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++)
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++)
10911077      {
1092         v1 = lookup[src[x]];
1078         v1 = sdl->m_yuv_lookup[src[x]];
10931079         y1 = (v1 >> Y1SHIFT) & 0xff;
10941080         u1 = (v1 >> USHIFT)  & 0xff;
10951081         v1 = (v1 >> VSHIFT)  & 0xff;
r243335r243336
11021088   }
11031089}
11041090
1105static void yuv_RGB_to_YUY2(const UINT16 *bitmap, UINT8 *ptr, const int pitch, \
1106      const UINT32 *lookup, const int width, const int height)
1091static void yuv_RGB_to_YUY2(UINT16 *bitmap, sdl_info *sdl, UINT8 *ptr, int pitch)
11071092{
11081093   /* this one is used when scale==2 */
11091094   unsigned int y;
1095   UINT32 *dest;
1096   UINT16 *src;
1097   UINT16 *end;
11101098   UINT32 p1,p2,uv;
1111   const int yuv_pitch = pitch/4;
1099   UINT32 *lookup = sdl->m_yuv_lookup;
1100   int yuv_pitch = pitch/4;
11121101
1113   for(y=0;y<height;y++)
1102   for(y=0;y<sdl->m_hw_scale_height;y++)
11141103   {
1115      const UINT16 *src=bitmap + (y * width) ;
1116      const UINT16 *end=src+width;
1104      src=bitmap + (y * sdl->m_hw_scale_width) ;
1105      end=src+sdl->m_hw_scale_width;
11171106
1118      UINT32 *dest = (UINT32 *) ptr;
1107      dest = (UINT32 *) ptr;
11191108      dest += y * yuv_pitch;
11201109      for(; src<end; src+=2)
11211110      {
r243335r243336
11281117   }
11291118}
11301119
1131static void yuv_RGB_to_YUY2X2(const UINT16 *bitmap, UINT8 *ptr, const int pitch, \
1132      const UINT32 *lookup, const int width, const int height)
1120static void yuv_RGB_to_YUY2X2(UINT16 *bitmap, sdl_info *sdl, UINT8 *ptr, int pitch)
11331121{
11341122   /* this one is used when scale==2 */
11351123   unsigned int y;
1124   UINT32 *dest;
1125   UINT16 *src;
1126   UINT16 *end;
1127   UINT32 *lookup = sdl->m_yuv_lookup;
11361128   int yuv_pitch = pitch / 4;
11371129
1138   for(y=0;y<height;y++)
1130   for(y=0;y<sdl->m_hw_scale_height;y++)
11391131   {
1140      const UINT16 *src=bitmap + (y * width) ;
1141      const UINT16 *end=src+width;
1132      src=bitmap + (y * sdl->m_hw_scale_width) ;
1133      end=src+sdl->m_hw_scale_width;
11421134
1143      UINT32 *dest = (UINT32 *) ptr;
1135      dest = (UINT32 *) ptr;
11441136      dest += (y * yuv_pitch);
11451137      for(; src<end; src++)
11461138      {
trunk/src/osd/sdl/input.c
r243335r243336
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)
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
1761#if (!SDLMAME_SDL2)
17651762         ui_input_push_char_event(machine, sdl_window_list->m_target, (unicode_char) event.key.keysym.unicode);
17661763#endif
17671764         break;
r243335r243336
18621859            int cx, cy;
18631860            osd_ticks_t click = osd_ticks() * 1000 / osd_ticks_per_second();
18641861            sdl_window_info *window = GET_FOCUS_WINDOW(&event.button);
1865            if (window != NULL && window->xy_to_render_target(event.button.x,event.button.y, &cx, &cy) )
1862            if (window != NULL && window->renderer().xy_to_render_target(event.button.x,event.button.y, &cx, &cy) )
18661863            {
18671864               ui_input_push_mouse_down_event(machine, window->m_target, cx, cy);
18681865               // FIXME Parameter ?
r243335r243336
18961893            int cx, cy;
18971894            sdl_window_info *window = GET_FOCUS_WINDOW(&event.button);
18981895
1899            if (window != NULL && window->xy_to_render_target(event.button.x,event.button.y, &cx, &cy) )
1896            if (window != NULL && window->renderer().xy_to_render_target(event.button.x,event.button.y, &cx, &cy) )
19001897            {
19011898               ui_input_push_mouse_up_event(machine, window->m_target, cx, cy);
19021899            }
r243335r243336
19211918            int cx=-1, cy=-1;
19221919            sdl_window_info *window = GET_FOCUS_WINDOW(&event.motion);
19231920
1924            if (window != NULL && window->xy_to_render_target(event.motion.x, event.motion.y, &cx, &cy) )
1921            if (window != NULL && window->renderer().xy_to_render_target(event.motion.x, event.motion.y, &cx, &cy) )
19251922               ui_input_push_mouse_move_event(machine, window->m_target, cx, cy);
19261923         }
19271924         break;
r243335r243336
19501947      case SDL_TEXTINPUT:
19511948         if (*event.text.text)
19521949         {
1953            printf("char %c\n", *event.text.text);
19541950            sdl_window_info *window = GET_FOCUS_WINDOW(&event.text);
19551951            unicode_char result;
19561952            if (window != NULL )
trunk/src/osd/sdl/sdl.mak
r243335r243336
894894#-------------------------------------------------
895895
896896TOOLS += \
897   $(BIN)testkeys$(EXE)
897   testkeys$(EXE)
898898
899899$(SDLOBJ)/testkeys.o: $(SDLSRC)/testkeys.c
900900   @echo Compiling $<...
r243335r243336
903903TESTKEYSOBJS = \
904904   $(SDLOBJ)/testkeys.o \
905905
906$(BIN)testkeys$(EXE): $(TESTKEYSOBJS) $(LIBUTIL) $(LIBOCORE) $(SDLUTILMAIN)
906testkeys$(EXE): $(TESTKEYSOBJS) $(LIBUTIL) $(LIBOCORE) $(SDLUTILMAIN)
907907   @echo Linking $@...
908908   $(LD) $(LDFLAGS) $^ $(BASELIBS) -o $@
909909
trunk/src/osd/sdl/testkeys.c
r243335r243336
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               (int) event.key.keysym.sym,
149               0, //(int) event.key.keysym.unicode,
150150               "");
151151            lasttext[0] = 0;
152152#else
r243335r243336
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               (int) event.key.keysym.sym,
168               0, //(int) event.key.keysym.unicode,
169169               lasttext);
170170#else
171171         memset(buf, 0, 19);
trunk/src/osd/sdl/window.c
r243335r243336
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
5860// minimum window dimension
5961#define MIN_WINDOW_DIM                  200
6062
r243335r243336
139141//  PROTOTYPES
140142//============================================================
141143
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 );
142148static void sdlwindow_update_cursor_state(running_machine &machine, sdl_window_info *window);
143149static void sdlwindow_sync(void);
144150
151static void *complete_create_wt(void *param, int threadid);
145152static void set_starting_view(running_machine &machine, int index, sdl_window_info *window, const char *defview, const char *view);
146153
147154//============================================================
r243335r243336
476483//  (main thread)
477484//============================================================
478485
479OSDWORK_CALLBACK( sdl_window_info::sdlwindow_resize_wt )
486static OSDWORK_CALLBACK( sdlwindow_resize_wt )
480487{
481488   worker_param *      wp = (worker_param *) param;
482489   sdl_window_info *   window = wp->window();
r243335r243336
510517//  (window thread)
511518//============================================================
512519
513OSDWORK_CALLBACK( sdl_window_info::sdlwindow_clear_surface_wt )
520static OSDWORK_CALLBACK( sdlwindow_clear_surface_wt )
514521{
515522   worker_param *wp = (worker_param *) param;
516523   sdl_window_info *window = wp->window();
r243335r243336
540547//  (main thread)
541548//============================================================
542549
543OSDWORK_CALLBACK( sdl_window_info::sdlwindow_toggle_full_screen_wt )
550static OSDWORK_CALLBACK( sdlwindow_toggle_full_screen_wt )
544551{
545552   worker_param *wp = (worker_param *) param;
546553   sdl_window_info *window = wp->window();
r243335r243336
576583   execute_async_wait(&sdlwindow_toggle_full_screen_wt, worker_param(machine, this));
577584}
578585
579OSDWORK_CALLBACK( sdl_window_info::destroy_all_textures_wt )
586static OSDWORK_CALLBACK( destroy_all_textures_wt )
580587{
581588   worker_param *wp = (worker_param *) param;
582589
r243335r243336
696703   return NULL;
697704}
698705
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}
703706
704707//============================================================
705708//  sdlwindow_video_window_create
r243335r243336
750753   {
751754      osd_work_item *wi;
752755
753      wi = osd_work_item_queue(work_queue, &sdl_window_info::complete_create_wt, (void *) wp, 0);
756      wi = osd_work_item_queue(work_queue, &complete_create_wt, (void *) wp, 0);
754757      sdlwindow_sync();
755758      result = *((int *) (osd_work_item_result)(wi));
756759      osd_work_item_release(wi);
757760   }
758761   else
759      result = *((int *) sdl_window_info::complete_create_wt((void *) wp, 0));
762      result = *((int *) complete_create_wt((void *) wp, 0));
760763
761764   // handle error conditions
762765   if (result == 1)
r243335r243336
777780//  (main thread)
778781//============================================================
779782
780OSDWORK_CALLBACK( sdl_window_info::sdlwindow_video_window_destroy_wt )
783static OSDWORK_CALLBACK( sdlwindow_video_window_destroy_wt )
781784{
782785   worker_param *      wp = (worker_param *) param;
783786   sdl_window_info *   window = wp->window();
r243335r243336
10721075//  (window thread)
10731076//============================================================
10741077
1075OSDWORK_CALLBACK( sdl_window_info::complete_create_wt )
1078static OSDWORK_CALLBACK( complete_create_wt )
10761079{
10771080   worker_param *      wp = (worker_param *) param;
10781081   sdl_window_info *   window = wp->window();
r243335r243336
11361139//  (window thread)
11371140//============================================================
11381141
1139void sdl_window_info::measure_fps(UINT32 dc, int update)
1142static void measure_fps(sdl_window_info *window, UINT32 dc, int update)
11401143{
11411144   const unsigned long frames_skip4fps = 100;
11421145   static int64_t lastTime=0, sumdt=0, startTime=0;
r243335r243336
11511154
11521155   t0 = osd_ticks();
11531156
1154   renderer().draw(dc, update);
1157   window->renderer().draw(dc, update);
11551158
11561159   frames++;
11571160   currentTime = osd_ticks();
r243335r243336
11781181   }
11791182}
11801183
1181OSDWORK_CALLBACK( sdl_window_info::draw_video_contents_wt )
1184static OSDWORK_CALLBACK( draw_video_contents_wt )
11821185{
11831186   UINT32  dc =        0;
11841187   int     update =    1;
r243335r243336
12001203   else
12011204   {
12021205      if( video_config.perftest )
1203         window->measure_fps(dc, update);
1206         measure_fps(window, dc, update);
12041207      else
12051208         window->renderer().draw(dc, update);
12061209   }
trunk/src/osd/sdl/window.h
r243335r243336
5757   sdl_window_info *m_window;
5858};
5959
60#define OSDWORK_CALLBACK(name)  void *name(void *param, ATTR_UNUSED int threadid)
61
6260class sdl_window_info
6361{
6462public:
r243335r243336
118116   void pick_best_mode(int *fswidth, int *fsheight);
119117   int index() const { return m_index; }
120118
121   int xy_to_render_target(int x, int y, int *xt, int *yt);
119   osd_renderer &renderer() { return *m_renderer; }
122120
123121   // Pointer to next window
124122   sdl_window_info *   m_next;
r243335r243336
169167   {
170168      m_renderer = renderer;
171169   }
172
173   static OSDWORK_CALLBACK( complete_create_wt );
174protected:
175   osd_renderer &renderer() { return *m_renderer; }
176170private:
177171   void constrain_to_aspect_ratio(int *window_width, int *window_height, int adjustment);
178172
r243335r243336
184178   int                 m_index;
185179   osd_renderer *      m_renderer;
186180
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
198181};
199182
200183struct sdl_draw_info


Previous 199869 Revisions Next


© 1997-2024 The MAME Team