@@ -94,8 +94,6 @@ private void Start()
94
94
95
95
public void OnInit ( Player player , TableApi tableApi , BallManager ballManager )
96
96
{
97
- _frameBuffer . Clear ( ) ;
98
-
99
97
// turn off all lamps
100
98
foreach ( var lamp in _lamps . Values ) {
101
99
OnLampChanged ? . Invoke ( this , new LampEventArgs ( lamp . Id , 0 ) ) ;
@@ -109,8 +107,8 @@ public void OnInit(Player player, TableApi tableApi, BallManager ballManager)
109
107
_player = player ;
110
108
111
109
try {
112
- _pinMame . StartGame ( "fh_906h" ) ;
113
- // _pinMame.StartGame(romId);
110
+ // _pinMame.StartGame("fh_906h");
111
+ _pinMame . StartGame ( romId ) ;
114
112
115
113
} catch ( Exception e ) {
116
114
Logger . Error ( e ) ;
@@ -150,8 +148,9 @@ private void Update()
150
148
151
149
private void DisplayUpdated ( object sender , EventArgs e , int index , IntPtr framePtr , PinMameDisplayLayout displayLayout )
152
150
{
153
- if ( ( displayLayout . type & PinMameDisplayType . DMD ) > 0 ) {
151
+ if ( displayLayout . IsDmd ) {
154
152
UpdateDmd ( index , displayLayout , framePtr ) ;
153
+
155
154
} else {
156
155
UpdateSegDisp ( index , displayLayout , framePtr ) ;
157
156
}
@@ -198,6 +197,7 @@ private void UpdateSegDisp(int index, PinMameDisplayLayout displayLayout, IntPtr
198
197
199
198
_displayAnnounced . Add ( index ) ;
200
199
_frameBuffer [ index ] = new byte [ displayLayout . length * 2 ] ;
200
+ Logger . Info ( $ "[PinMAME] Display { DisplayPrefix } { index } is of type { displayLayout . type } at { displayLayout . length } wide.") ;
201
201
}
202
202
203
203
Marshal . Copy ( framePtr , _frameBuffer [ index ] , 0 , displayLayout . length * 2 ) ;
@@ -268,6 +268,11 @@ private void UpdateCaches()
268
268
}
269
269
270
270
private void OnDestroy ( )
271
+ {
272
+ StopGame ( ) ;
273
+ }
274
+
275
+ public void StopGame ( )
271
276
{
272
277
if ( _pinMame != null ) {
273
278
_pinMame . StopGame ( ) ;
@@ -276,6 +281,8 @@ private void OnDestroy()
276
281
_pinMame . OnDisplayUpdated -= DisplayUpdated ;
277
282
_pinMame . OnSolenoidUpdated -= SolenoidUpdated ;
278
283
}
284
+ _frameBuffer . Clear ( ) ;
285
+ _displayAnnounced . Clear ( ) ;
279
286
}
280
287
281
288
public void Switch ( string id , bool isClosed )
@@ -303,36 +310,31 @@ private Dictionary<byte, byte> GetMap(PinMameDisplayLayout displayLayout)
303
310
private static DisplayFrameFormat GetDisplayType ( PinMameDisplayType dp )
304
311
{
305
312
switch ( dp ) {
306
- case PinMameDisplayType . SEG16 : // 16 segments
313
+ case PinMameDisplayType . SEG16 : // 16 segments
307
314
case PinMameDisplayType . SEG16R : // 16 segments with comma and period reversed
308
315
case PinMameDisplayType . SEG16N : // 16 segments without commas
309
316
case PinMameDisplayType . SEG16D : // 16 segments with periods only
317
+ case PinMameDisplayType . SEG16S : // 16 segments with split top and bottom line
310
318
return DisplayFrameFormat . Segment16 ;
311
319
320
+ case PinMameDisplayType . SEG8 : // 7 segments and comma
321
+ case PinMameDisplayType . SEG8D : // 7 segments and period
322
+ case PinMameDisplayType . SEG7 : // 7 segments
323
+ case PinMameDisplayType . SEG87 : // 7 segments, comma every three
324
+ case PinMameDisplayType . SEG87F : // 7 segments, forced comma every three
325
+ case PinMameDisplayType . SEG7S : // 7 segments, small
326
+ case PinMameDisplayType . SEG7SC : // 7 segments, small, with comma
327
+ return DisplayFrameFormat . Segment7 ;
328
+
312
329
case PinMameDisplayType . SEG10 : // 9 segments and comma
313
330
break ;
314
331
case PinMameDisplayType . SEG9 : // 9 segments
315
332
break ;
316
- case PinMameDisplayType . SEG8 : // 7 segments and comma
317
- break ;
318
- case PinMameDisplayType . SEG8D : // 7 segments and period
319
- break ;
320
- case PinMameDisplayType . SEG7 : // 7 segments
321
- break ;
322
- case PinMameDisplayType . SEG87 : // 7 segments, comma every three
323
- break ;
324
- case PinMameDisplayType . SEG87F : // 7 segments, forced comma every three
325
- break ;
326
333
case PinMameDisplayType . SEG98 : // 9 segments, comma every three
327
334
break ;
328
335
case PinMameDisplayType . SEG98F : // 9 segments, forced comma every three
329
336
break ;
330
- case PinMameDisplayType . SEG7S : // 7 segments, small
331
- break ;
332
- case PinMameDisplayType . SEG7SC : // 7 segments, small, with comma
333
- break ;
334
- case PinMameDisplayType . SEG16S : // 16 segments with split top and bottom line
335
- break ;
337
+
336
338
case PinMameDisplayType . DMD :
337
339
return DisplayFrameFormat . Dmd2 ;
338
340
@@ -366,6 +368,5 @@ private static DisplayFrameFormat GetDisplayType(PinMameDisplayType dp)
366
368
{ 0x41 , 0x8 } , { 0x46 , 0x9 } , { 0x4B , 0xa } , { 0x50 , 0xb } ,
367
369
{ 0x55 , 0xc } , { 0x5A , 0xd } , { 0x5F , 0xe } , { 0x64 , 0xf }
368
370
} ;
369
-
370
371
}
371
372
}
0 commit comments