Skip to content

Commit ca000fd

Browse files
committed
display: Clean up types and fix frame format.
1 parent 102aad1 commit ca000fd

File tree

3 files changed

+27
-33
lines changed

3 files changed

+27
-33
lines changed

VisualPinball.Engine.PinMAME.Unity/Editor/PinMameGamelogicEngineInspector.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,10 @@
1616

1717
// ReSharper disable CheckNamespace
1818

19+
using System;
1920
using System.Collections.Generic;
2021
using System.Linq;
22+
using PinMame;
2123
using UnityEditor;
2224
using UnityEngine;
2325
using VisualPinball.Engine.PinMAME.Games;
@@ -178,7 +180,6 @@ private void CreateDisplays(IEnumerable<DisplayAuthoring> sceneDisplays)
178180

179181
var left = layout.Left / 2;
180182
var top = layout.Top / 2;
181-
182183
var id = layout.IsDmd
183184
? $"{PinMameGamelogicEngine.DmdPrefix}{index}"
184185
: $"{PinMameGamelogicEngine.SegDispPrefix}{index}";
@@ -231,14 +232,15 @@ private void CreateDisplays(IEnumerable<DisplayAuthoring> sceneDisplays)
231232
Debug.Log($"OnDisplaysAvailable ({displayLayouts.Count}): displays=\n{str}\n{tableWidth} - {totalWidth}");
232233
}
233234

234-
private int ConvertSeparatorType(PinMameDisplayType layoutType)
235+
private static int ConvertSeparatorType(PinMameDisplayType layoutType)
235236
{
236237
switch (layoutType) {
237238

238239
case PinMameDisplayType.Seg7S:
239240
case PinMameDisplayType.Seg7:
240241
case PinMameDisplayType.Seg9:
241242
case PinMameDisplayType.Seg16N:
243+
case PinMameDisplayType.Seg7 | PinMameDisplayType.NoDisp:
242244
return 0;
243245

244246
case PinMameDisplayType.Seg16D:
@@ -271,6 +273,7 @@ private int ConvertSeparatorType(PinMameDisplayType layoutType)
271273
private static bool ConvertSeparatorEveryThree(PinMameDisplayType layoutType)
272274
{
273275
switch (layoutType) {
276+
274277
case PinMameDisplayType.Seg98F:
275278
case PinMameDisplayType.Seg98:
276279
case PinMameDisplayType.Seg87F:
@@ -299,6 +302,7 @@ private static int ConvertNumSegments(PinMameDisplayType layoutType)
299302
case PinMameDisplayType.Seg87F:
300303
case PinMameDisplayType.Seg87H:
301304
case PinMameDisplayType.Seg87FH:
305+
case PinMameDisplayType.Seg7 | PinMameDisplayType.NoDisp:
302306
return 7;
303307

304308
case PinMameDisplayType.Seg9:

VisualPinball.Engine.PinMAME.Unity/Runtime/PinMameGamelogicEngine.cs

Lines changed: 19 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ private void UpdateDmd(int index, PinMameDisplayLayout displayLayout, IntPtr fra
200200

201201
lock (_dispatchQueue) {
202202
_dispatchQueue.Enqueue(() => OnDisplayFrame?.Invoke(this,
203-
new DisplayFrameData($"{DmdPrefix}{index}", GetDisplayType(displayLayout.Type), _frameBuffer[index])));
203+
new DisplayFrameData($"{DmdPrefix}{index}", GetDisplayFrameFormat(displayLayout), _frameBuffer[index])));
204204
}
205205
}
206206

@@ -211,7 +211,7 @@ private void UpdateSegDisp(int index, PinMameDisplayLayout displayLayout, IntPtr
211211
lock (_dispatchQueue) {
212212
//Logger.Info($"[PinMAME] Seg data ({index}): {BitConverter.ToString(_frameBuffer[index])}" );
213213
_dispatchQueue.Enqueue(() => OnDisplayFrame?.Invoke(this,
214-
new DisplayFrameData($"{SegDispPrefix}{index}", GetDisplayType(displayLayout.Type), _frameBuffer[index])));
214+
new DisplayFrameData($"{SegDispPrefix}{index}", GetDisplayFrameFormat(displayLayout), _frameBuffer[index])));
215215
}
216216
}
217217

@@ -300,41 +300,37 @@ public void Switch(string id, bool isClosed)
300300
}
301301
}
302302

303-
public static DisplayFrameFormat GetDisplayType(PinMameDisplayType dp)
303+
public static DisplayFrameFormat GetDisplayFrameFormat(PinMameDisplayLayout layout)
304304
{
305-
switch (dp) {
305+
if (layout.IsDmd) {
306+
return layout.Depth == 4 ? DisplayFrameFormat.Dmd4 : DisplayFrameFormat.Dmd2;
307+
}
308+
309+
switch (layout.Type) {
306310
case PinMameDisplayType.Seg8: // 7 segments and comma
307311
case PinMameDisplayType.Seg7SC: // 7 segments, small, with comma
308-
return DisplayFrameFormat.Segment7Comma;
309312
case PinMameDisplayType.Seg8D: // 7 segments and period
310-
return DisplayFrameFormat.Segment7Dot;
311313
case PinMameDisplayType.Seg7: // 7 segments
312314
case PinMameDisplayType.Seg7S: // 7 segments, small
313-
return DisplayFrameFormat.Segment7;
314315
case PinMameDisplayType.Seg87: // 7 segments, comma every three
315-
return DisplayFrameFormat.Segment7CommaEvery3;
316316
case PinMameDisplayType.Seg87F: // 7 segments, forced comma every three
317-
return DisplayFrameFormat.Segment7CommaEvery3Forced;
318-
319317
case PinMameDisplayType.Seg10: // 9 segments and comma
320-
return DisplayFrameFormat.Segment9Comma;
321318
case PinMameDisplayType.Seg9: // 9 segments
322-
return DisplayFrameFormat.Segment9;
323319
case PinMameDisplayType.Seg98: // 9 segments, comma every three
324-
return DisplayFrameFormat.Segment9CommaEvery3;
325320
case PinMameDisplayType.Seg98F: // 9 segments, forced comma every three
326-
return DisplayFrameFormat.Segment9CommaEvery3Forced;
327-
328321
case PinMameDisplayType.Seg16: // 16 segments
329-
return DisplayFrameFormat.Segment16;
330322
case PinMameDisplayType.Seg16R: // 16 segments with comma and period reversed
331323
case PinMameDisplayType.Seg16N: // 16 segments without commas
332324
case PinMameDisplayType.Seg16D: // 16 segments with periods only
333325
case PinMameDisplayType.Seg16S: // 16 segments with split top and bottom line
334-
return DisplayFrameFormat.Segment16;
335-
336-
case PinMameDisplayType.Dmd:
337-
return DisplayFrameFormat.Dmd2;
326+
case PinMameDisplayType.Seg8H:
327+
case PinMameDisplayType.Seg7H:
328+
case PinMameDisplayType.Seg87H:
329+
case PinMameDisplayType.Seg87FH:
330+
case PinMameDisplayType.Seg7SH:
331+
case PinMameDisplayType.Seg7SCH:
332+
case PinMameDisplayType.Seg7 | PinMameDisplayType.NoDisp:
333+
return DisplayFrameFormat.Segment;
338334

339335
case PinMameDisplayType.Video:
340336
break;
@@ -346,19 +342,13 @@ public static DisplayFrameFormat GetDisplayType(PinMameDisplayType dp)
346342
case PinMameDisplayType.SegRev:
347343
case PinMameDisplayType.DmdNoAA:
348344
case PinMameDisplayType.NoDisp:
349-
case PinMameDisplayType.Seg8H:
350-
case PinMameDisplayType.Seg7H:
351-
case PinMameDisplayType.Seg87H:
352-
case PinMameDisplayType.Seg87FH:
353-
case PinMameDisplayType.Seg7SH:
354-
case PinMameDisplayType.Seg7SCH:
355-
throw new ArgumentOutOfRangeException(nameof(dp), dp, null);
345+
throw new ArgumentOutOfRangeException(nameof(layout), layout, null);
356346

357347
default:
358-
throw new ArgumentOutOfRangeException(nameof(dp), dp, null);
348+
throw new ArgumentOutOfRangeException(nameof(layout), layout, null);
359349
}
360350

361-
throw new NotImplementedException($"Still unsupported segmented display format: {dp}.");
351+
throw new NotImplementedException($"Still unsupported segmented display format: {layout}.");
362352
}
363353
}
364354
}

VisualPinball.Engine.PinMAME/VisualPinball.Engine.PinMAME.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
</PropertyGroup>
1717

1818
<ItemGroup>
19-
<PackageReference Include="PinMame" Version="0.1.0-preview.31" />
20-
<PackageReference Include="PinMame.Native" Version="3.4.0-preview.212" />
19+
<PackageReference Include="PinMame" Version="0.1.0-preview.37" />
20+
<PackageReference Include="PinMame.Native" Version="3.4.0-preview.223" />
2121
<PackageReference Include="VisualPinball.Engine" Version="0.0.1-preview.44" />
2222
</ItemGroup>
2323

0 commit comments

Comments
 (0)