Jump to content

B2S Server Update Request


BorgDog

Recommended Posts

  • Content Provider

Now that B2sServer has been made available for modification (and until such time as VP supports multiple screens) I was wondering if the reel type could be expanded upon to support letters A-Z in addition to the numbers that are currently there, and maybe some symbols etc to give us the ability to build alpha-numeric displays for original type games.

Thanks in advance to whomever has the skills and would be willing to take on this project.

-Dan

Link to comment
Share on other sites

On 2.1.2017 at 7:29 AM, BorgDog said:

I was wondering if the reel type could be expanded upon to support letters A-Z in addition to the numbers that are currently there, and maybe some symbols etc to give us the ability to build alpha-numeric displays for original type games.

Not sure I understand the idea behind.

Reel type is that kind of "scroll down wheel", used in EM games.  For original types, you talk about LED display, right?

The B2SServer supports alphanumeric LEDs, but - if I checked correctly, only for ROM based games, as the B2SData calls only support integer als value. I'm not 100% sure, as I never created an original type game or backglass. Is this right?

So the feature request would be: Add a B2SData command to support alphanumeric parameters, for driving alphanumeric LEDs. Is that correct?

Link to comment
Share on other sites

  • Content Provider

There is probably a couple of asks hidden in there. The harder part is an authoring tool for custom alphanumeric LED display. UltraDMD may be much closer to providing that solution.

The easier part may be just providing an alternative graphic to the Dream 7 segments for ROM supported tables. Dream 7 seems to work well in some instances, but looks terrible in Data East (Robocop, The Simpsons, King Kong as examples). I had thought about pulling from FP because its LED segments look good to me.

By the way, thanks for fixing the LED import feature. I swapped out the built-in B2S LED with gtxjoe's nixie tube graphics for a Star Trek backglass. Works well:

http://vpinball.com/VPBdownloads/star-trek-bally-mirror-universe-db2s/

Link to comment
Share on other sites

  • Content Provider
On 1/9/2017 at 0:14 PM, Westworld said:

Not sure I understand the idea behind.

Reel type is that kind of "scroll down wheel", used in EM games.  For original types, you talk about LED display, right?

The B2SServer supports alphanumeric LEDs, but - if I checked correctly, only for ROM based games, as the B2SData calls only support integer als value. I'm not 100% sure, as I never created an original type game or backglass. Is this right?

So the feature request would be: Add a B2SData command to support alphanumeric parameters, for driving alphanumeric LEDs. Is that correct?

I don't know about the ROM based alphnumeric, but yes I think your last line is what I'm looking for, a way to drive alphanumeric LEDs with a B2SData command  What I am currently working on is an original table in the Gottlieb System 1 era, and would like to be able to add things such as entering initials for high scores to the backglass displays (things the aftermarket boards for those added).  I have done a work around using a whole lot of light objects and Wizards Hats alphanumeric display tutorial over on vpforums.  It works but not very easy to setup or modify because as far as I know you can only select one light object at a time to change properties, so changing the color or location becomes a lot of work.  I currently have 2 displays on the table, 6 digits, 8 segments per digit, so 96 light objects.

Thanks,

Link to comment
Share on other sites

On 10.1.2017 at 0:08 AM, CarnyPriest said:

Dream 7 seems to work well in some instances, but looks terrible in Data East (Robocop, The Simpsons, King Kong as examples).

thought about it, and should not be too difficult. We would add a list of 60 or 100 characters (a-z, A-Z, 0-9 and many symbols) and then simply display them. Work, but not impossible

Just played Robocop and took more notice of the display while playing. And watched a YouTube movie from a real machine.

My backglass uses blue LEDs, while the real one red ones, but that would be easy to change.

But, when you play the ball in the upper right corner, it starts a kind of animation, accessing directly the lines in the LED, not using real characters (like upper and lower horizontal bar).

Any suggestion/idea how to handle these? These are not real characters, the ROM seems to manipulate directly the segments of the LED.

 

Or better to improve the 16 segment automatic creation and display? Can you describe (or provide) screenshots, what exactly is terrible?

I googled for "data east alphanumeric led pinball" and checked the images, but fails to see the difference. But - I'm not really a graphical guy...

Link to comment
Share on other sites

  • Content Provider
On 1/11/2017 at 2:55 PM, Westworld said:

thought about it, and should not be too difficult. We would add a list of 60 or 100 characters (a-z, A-Z, 0-9 and many symbols) and then simply display them. Work, but not impossible

Just played Robocop and took more notice of the display while playing. And watched a YouTube movie from a real machine.

My backglass uses blue LEDs, while the real one red ones, but that would be easy to change.

But, when you play the ball in the upper right corner, it starts a kind of animation, accessing directly the lines in the LED, not using real characters (like upper and lower horizontal bar).

Any suggestion/idea how to handle these? These are not real characters, the ROM seems to manipulate directly the segments of the LED.

 

Or better to improve the 16 segment automatic creation and display? Can you describe (or provide) screenshots, what exactly is terrible?

I googled for "data east alphanumeric led pinball" and checked the images, but fails to see the difference. But - I'm not really a graphical guy...

 

1. Just to represent what I'm talking about, I've attached my PinballX DMD video for Funhouse. Take a look at Y and V, especially.

But thinking about it, this may just be an artifact of what happens when B2S stretches the image to fit my display - 1600x900. I try to go edge-to-edge so my screenres.txt is set to width 1600 and height 400. This is about what I use for VPM. Other backglasses that make use of the third screen like Taxi and Whirlwind look better but the LED are placed into individual frames within larger designs. The LED themselves are not in a big box that gets stretched edge-to-edge. I haven't done much with the designer, but I guess I'll need to take a look at what these look like in their native aspect ratio.

2. I'm not positive. I may be dead wrong. I don't get out and play the real thing very often at all, but I thought FH and at least some of the Sys11 tables had LED displays that dimmed. I don't see that with dB2S. I don't know if that is something not built into B2S or if that is something missing in VPM.

3. On ROM-based LED what I was suggesting was incorporating an alternative for the segment that is displayed. I've attached an FP LED display (Metal Slug) that looks more like a gas-based display. 

 

FH.mp4

FP Metal Slug.mp4

Link to comment
Share on other sites

thanks for the details, helps a lot.

My cabinet has a real DMD, so Funhouse and Taxi uses that display, not the virtual, good reason why I never noticed anything. I can see that Funhouse does not look nice for you.

Stretches is a good guess. Just checked the source, it seems to use a lot of hard coded size/position/design values (in pixels), which is later rescaled, which obviously is not helping to improve. Just for testing: could you modify a backglass with the designer, not caring for nice looking, only for scaling, and design it to fit your display and screenres, without rescaling. That would help us to understand where we need to check and hopefully improve.

As far as I remember Herweh got the Dream7 Led code from a friend and was happy to have a such a nice drawing. That could explain the difference in scaling. He let's that code draw everything - and then insert it in the backglass, scaling if needed.

2) I do not see any code handling a dimmed display. It creates it one or off. and if on, with or without "glow" effect.
There are some hard coded values for Colors like Off, On, Glass, GlassCenter. Alpha values for Glass and Center, values for Glow effect, Bulbsize and if to display WireFrame. That's are all available settings. For everything else it requires a rewrite

(Note: I'm not a .Net or Basic Developer. I started with Basic 30 years ago, quick went away to other languages, still can read it a little - and do code changes mostly by copy&paste, looking for something existing which I can reuse).

 

So, it is possible to add another code to display a different design (gas based), but that's out of my scope.

It is possible to replace automatic drawing with existing pictures, I think I could do that, but still don't know how many images we need. For A-Z, 0-9 it would be easy, that code already exists, just needs to be rearranged and enhanced. For more chars, like a-z, A-Z, +-*/ etc, code needs to be rewritten, still possible. For every possible combination, we are talking about 16 bit or 65536 char's, I'm not sure it is the right direction to add 65536 pictures?

I could try, but where to get the pictures? I found this page: http://35007.de/chargenerator.htm
which helps to design chars and understand the concept, even to create SVG images, but they would not look different than the ones from dream7

Summary: I could help you and display predefined images, but need them upfront. Then we can try to understand how many we need and how to ship them (65536 images in a .zip? Named using the binary code, allowing to 1:1 replace the dream7 with predefined ones?). I could also enhance the code for a different automatic drawing, but need help (=code) for that. But I'm not sure I'm the right one for that job...
Last point: if it is just scaling and we could understand that better, maybe this can be improved as well, but it will be tricky...

Link to comment
Share on other sites

Did some testing, maybe I was looking in the totally wrong direction...

Your video FH.mp4, is it possible that you have set "glow" to maximum and LED skip to 3 or 4?

I tried around, and if I set glow to maximum, it looked like your video. setting it to minimum or medium looked very different. Setting it to none or disabling glow gave a very clear (but not looking real) LED. Finally the video is either slow - or skipping some LED information. This can also be set for each backglass (click on backglass, press S). Maybe that was all?

Link to comment
Share on other sites

  • Content Provider

On the FH video, don't focus on the frame skipping. That is a result of the way I captured and transcoded the video for use in PinballX. Actually, I have a P2k-style cab and I had to process the video an additional time, flipping it so it would not be reversed for you. It was the shapes of the characters that I wanted to point out. In game, b2s animates smoothly. I rarely have to tweak the defaults aside from running as exe.

Glow is set to max, but the shape of the letters are largely the same at default.

On alphanumeric image swap, I threw the idea out there hoping that it was not a matter of glyph swapping on thousands of options, but just swapping the individual segments (14 or 16) that make up the display for one number, letter, etc. I have not looked at the source code at all, and that may not be at all how it works.

Looking around, there are a number of examples linked I think in the wiki for 16 segment displays: svg, ttf, html5

https://en.m.wikipedia.org/wiki/Sixteen-segment_display

I'm not a dev either. I can poke around, but it may be a while before I can get serious about making changes. I still have my cab to finish. But I can look into rescaling the FH dB2S in the Designer and see what happens.


Sent from my iPad using Tapatalk

Link to comment
Share on other sites

  • Content Provider

I took a look at that FH backglass in the designer. I could not come up quickly with a spec sheet for the actual display, but I made some probably inexact measurements with an image for a replacement on the pinscore website. What I came up with is about a pixel's difference in what was already in the backglass. I made those small adjustments anyway and set up screenres so that the aspect ratio of the DMD image in the backglass would be retained. .I can't say that it is much better. Those diagonal segments are hardly getting displayed. Doesn't matter if the glow options are off or on. 

I'll have to look at some point at BOP. The LED looks much better in the backglass that I am using. The real table uses the same LED display assembly as FH. It may be that some liberties were taken with the b2s design, getting away from the measures of the actual display in order to get it looking good for the virtual display. If that's the case then there is something off with the Dream 7 set. By "off" just that designers have to take into account the discrepancy between Dream 7 and a real pinball display. Don't read it as a complaint. I'm just comparing against the one display system used for a couple of WPC alphanumeric tables. There have been lots of different LED systems used over the years.

 

Link to comment
Share on other sites

  • Content Provider

The real tables for FH and BOP use the same display. The backglasses I use for both of the VPX versions of these tables are from the same author. The difference is that BOP dB2S is hi-rez and FH is not. Applying the same LED frame aspect ratio from BOP to FH does not make FH look any better. What I finally did was re-size/upscale the FH DMD image so that a frame of the same dimensions as the ones used in BOP will fit in the FH DMD image. Now the display output looks much better. So for me, it is a scaling issue for the Server when it is trying to upscale from small images to a large resolution display. Other people may not be experiencing this at all depending on their configuration. YMMV.

FHnew.mp4

Link to comment
Share on other sites

On 2.1.2017 at 7:29 AM, BorgDog said:

to give us the ability to build alpha-numeric displays for original type games.

to come back to the original request - adding alpha-numeric display for original type games.

Browsing through the source code, it seems Herweh started but never finished, or thought it is not needed. The code is partly existing, but it is missing in documentation and not supported by EXE mode. Code says "TODO"...

Before we start to modify and enhance the code, I would like to suggest to start with what's existing, to see if that would work and to have a better understanding what's missing.

Missing today:

- support for EXE mode
- support for lowercase character or special characters (supported is A-Z and 0-9)

to test it, simply create a backglass, add a 14 segment LED display and use as code:

To set a single LED (specify the LED number, starting with 1):

Controller.B2SSetLED 12,"A"   '  to change the LED #12, set it to uppercase A

To set a banch of characters, specify the display number (not LED), starting with 1:

Controller.B2SSetLEDDisplay 4,"Test"   '  set the 4th display to TEST, all uppercase

Run it, remember to set the backglass to run NOT in EXE mode. If you forget that, the backglass will crash (you will get a .NET error and if you click on Details you see it fails for String to Number conversion).

For me it works without EXE. Is that answering the concept of the need? What's missing? lowercase, special char and EXE support? More? 

Link to comment
Share on other sites

  • Content Provider

Cool, I really don't need lower case myself, so if it supports 0-9 and A-Z that should cover most of it, maybe a few symbols, dash, slash etc. I'll play with it tomorrow and see what I can come up with. Thanks!

Sent from my Nexus 6 using Tapatalk

Link to comment
Share on other sites

  • Content Provider

Thanks again Westworld.

Played around this morning a bit to see how this works.  Mostly it seems to work really well within it's limited setup.  The biggest thing as you already said is the lack of EXE mode.  I wouldn't really want to put something out that couldn't do that.  I did send it some symbols to see what it did with them and basically it just sub'ed a blank for that spot.  sending it text in lower case ie "test" it would just make upper case.

So for me at least, in order of what would be nice:

- EXE mode, really needs this to work

- basic symbols , - _ <>/\,+ would be nice to have, though honestly don't know how much the real machines used

- support for 10 segment LED displays as well, since the era I'm recreating is Gottlieb system 1 and that's what they used (really 8, they combined the cross pieces).  I did try it with them, and it doesn't error, and some segments show up just not all or right place.

something else that would be nice (but not necessary as it sounds like a lot more work)  is if the b2sserver could do some of the animations as well, things like flashing text, text scrolling left or right, things like that.  I know I could script it in the table as well, just thought it might be more efficient to have the b2s server just get one call to do an animation instead of a bunch of calls for each step.  For that matter, being able to tell the b2sserver to blink a light might be a very nice feature too, kind of how VP does it with state of 2 being blink (right now B2SSetData lightnum, 0 turns it off, B2sSetData lightnum, 1 turns it on, something like B2SSetData lighnum, 2 to set the light to blink.

Here is how the Pascal/Flippp replacement system 1 board does the basics on the 10/8 segment display (I believe these are right).

system1AN.png

Link to comment
Share on other sites

More news. Seems that everything is done already, I just looked at the wrong place. The way I described is the 'wrong' way, that's maybe why it was never finished or documented. 

The B2SServer, both DLL and EXE, includes already a way to handle alphanumeric LED's in original tables. Not by passing text as I described, but by defining a LED with directly specifying the segments (binary). This looks of course upfront for much more work - but it allows you to handle any symbol or combination.

Suddenly I remembered that there is already a great original table using such as backglass, JPSalas Scarface.

Load both table and backglass: http://www.vpforums.org/index.php?app=downloads&showfile=7467

Open the backglass with the designer. Open the DMD. You will notice that the DMD contains both alphanumeric LED's and some pictures, used for the 'DMD animation'. Just pictures, but looks much more impressive.

Now open the table and look into the script. Look for DD or B2SDMD...

There are already many subroutines handling all the work. Encoding of characters to segments, displaying characters, even blinking. All is there - and the table proves that it works great (as long you know how to do it).

Link to comment
Share on other sites

  • Content Provider

Yeah, wow, that's a lot of stuff in that table.  And I have no idea what it means, going to have to spend some time studying that one..  Especially the part setting all the ledvalue based on the character, I assume it defines the segments, but I don't understand how :huh:  and since I'm looking to do the 10 segment instead of the 14 I need to figure that part out.... along with the rest LOL.  Maybe I'll shoot JP a message and see if this is documented or talked about somewhere.  It says "based on script by Black" so I'm guessing there is more earlier somewhere...

Thanks for finding/remembering that.

Link to comment
Share on other sites

  • Content Provider

So I played around and figured out what the ledvalues stand for.  I think I can easily make this work using the AN scripting I already have in place for the desktop since it is by segment as well.  I'll play more tonight, I should probably actually do some work, since that's where I am :)

ANsegments.png

Link to comment
Share on other sites

  • Content Provider

Just to add a bit more to this and have it together, the basic command for this (that I pulled from the Scarface table) is Controller.B2SSetLED adigit, ledvalue where adigit is the reel digit number (typically player 1 scores start with digit 1 which is on the left of the display reel, but if using all this no need to even define as scores) and ledvalue is the addition of the segments you want displayed, see the image two posts up for the segment numbers.  For example to display an "A" the ledvalue would be 1+2+4+16+32+64 (or 119) for the 10 segment LED and 1+2+4+16+32+64+2048 (or 2167) for the 14 segment display.

See the Scarface b2s table HERE for more details and subs on how they did it, and Westworlds link above for the directb2s to go with it.

Thanks again Westworld for finding this, it is working out great!

Link to comment
Share on other sites

  • 1 year later...

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...