Forum Replies Created

Viewing 14 posts - 1 through 14 (of 14 total)
  • Author
    Posts
  • Rebel Oz
    Participant
      @rebeloz69

      @nailbuster, steady on there, big fella! :)

      Complaining? No, merely pointing out that there is a remarkable absence of adequate documentation for such a cool little niche program.

      You seem to be operating on the assumption that I wish to utilise the DMD capabilities of the package, and you’re right, I do; but I’ve already got all the ‘code examples’ I could possibly need for that, no further assistance required. I want to do MUCH more than just that, however, as I thought I’d made clear.

      To my understanding, the PupDMD framework is not the problem I’m tackling here; it’s more about the PinUp PLAYER API.

      Yes, I have read the PDF, and used all the files from the pup_dmd page, but if you think that the capabilities of the PinUp Player are amply documented and all features covered by the wiki, then you’re right, I’m missing something…

      For example, nowhere on your entire wiki have I been able to find ANY explanation for the contents of the JSON string fed to Sendmsg, and the derivative works you’ve mentioned do nothing to advance that.

      In the specific areas I’ve requested your assistance on, there’s a marked absence of any code coverage that sufficiently details the function calls.

      If I have to battle on in the dark, that’s fine, but I assumed that you’d be willing to assist by providing something more than “See what everyone else has done, and figure it out for yourself”, given that it’s YOUR code base we’re talking about here.

       

      If that’s asking too much, I apologise.

      Rebel Oz
      Participant
        @rebeloz69

        @nailbuster,

        I don’t have any documentation to work with, so I’m using a combination of PUPDMD framework and self-written PinUp Player calls (gleaned from poring over the code of 100s of tables).

        It’s slow going.

        Trying to determine function call parameters, some of which are simply impossible (SendMSG, for example, has a slew of parameters like: MT, SN, FN, PM, CP, which, without documentation, are utterly indecipherable, have conflicting ‘guidelines’, or simply aren’t compatible with other parameters.), so, if you could point me to where I could find good coverage of this, I’d greatly appreciate it! :)

         

         

        Rebel Oz
        Participant
          @rebeloz69

          Never mind, I think I’ve solved it.

          There were two problems:

          In my code, I was explicitly calling init for the playfield (PupDisplay#3) – apparently, this isn’t required, as removing the initialisation got the playfield display to momentarily come up, then drop again.

           

          The reason it was dropping, was related (I think) to the dimensions of the png I was casting as the background in the Puppack (616X1085) – resized the image to 720X1080, and the image displays correctly on both my test rig (desktop mode) and my cab (fullscreen exclusive), where it would display on neither before.

           

          Weird!

           

          Thanks guys for your helpful suggestions. I continue to learn… :)

          Rebel Oz
          Participant
            @rebeloz69

            @lynnindenver: You’re quite right, even WITH the Pup-pack pupinit.bat forcing the playfield winpos, which (from my limited understanding) it’s supposed to mitigate…

            The *real* pain, though, is that no matter what I try within the table script, I’m finding it impossible to get ANY content to display on the PinUp Player playfield display; hence, my request for assistance/documentation of the PUP engine calls available, parameters accepted, etc…

            I’m seriously considering a major re-think of this project, but I’m reluctant to completely abandon the concept, because:

            • It’s something that scratches a personal ‘itch’ for me.
            • The PUP framework combined with VPX provides a nice easy method of accessing pincab resources in a lovely, consistent manner, and I’d rather not ‘reinvent the wheel’ there unless I absolutely must.
            • It feels so, lame, to ‘settle’ for just spraying content on the limited real-estate of the backglass, when I have this lovely 4K display just sitting there begging for attention! :)
            Rebel Oz
            Participant
              @rebeloz69

              @TerryRed: You mentioned a ‘work-around’ for this issue over in the PinUp Player thread (https://vpinball.com/VPBdownloads/pinup-system-player-and-popper-front-end-install/page/7/#post-196655)

              While I applaud your enthusiasm for Future Pinball, I must confess that I stopped using it about 10 years ago, and haven’t found a good enough reason to abandon the much better physics available in VP. Your mileage may vary… :)

               

              As I mentioned over in the other thread, I’m attempting to ‘superimpose’ the PinUp Player display OVER the playfield display.

               

              What I may not have made clear, though, is that I really don’t wish to modify the playfield (as such); it will merely serve as a backdrop for my own (programmatically created) content (using the scripting engine).

               

              You’ve indicated that you believe this would be possible, if VPX was running in borderless windowed mode, by forcing the PuP-Pack on top of the VPX Window.

               

              Would you care to elaborate?

              My configuration *is* borderless windowed, and yet I still cannot seem to get a cracker out of the playfield PinUp Player window…

              in reply to: PinUP System (Player and Popper Front-End) Install #196796
              Rebel Oz
              Participant
                @rebeloz69

                @Nailbuster, thanks for the response. I did create a thread for just such a discussion (https://vpinball.com/forums/topic/pinup-player-script-is-using-the-playfield-display-possible/), and would welcome your esteemed input.

                Thanks for pointing out that labels need initialisation – in my ‘table’ code (not shown in the code fragment above), I did set up the labels, and confirmed functionality on the backglass, just not able to replicate this on the playfield.

                 

                I guess that the relevance of THIS thread is to point at that the function calls available for use within PinUp Player are still a mystery to me, even after countless hours of searching; the use of the Playfield to display content is really just an edge case example of one old-school coders battle to get to grips with it in the absence of a ‘programming guide’. ;)

                 

                If there’s a better thread for discussing the documentation/usage of the advanced capabilities of this truly remarkable piece of work (ie, PinUp Player), I’d be more than happy to direct further queries there…

                in reply to: PinUP System (Player and Popper Front-End) Install #196587
                Rebel Oz
                Participant
                  @rebeloz69

                  Thanks Terry. Yes, I have been over that wiki numerous times (each time I seem to learn something new!), but unfortunately, I have still yet to be able to trigger any event which results in an update on the playfield display.

                   

                  Aside from that, I’m not just hoping to slam a video over the playfield; I’d like to be able to throw programmatically generated variable text onto areas of the playfield as well, and I don’t see a way I could do that with a “run-of-the-mill’ pup pack… :)

                  in reply to: PinUP System (Player and Popper Front-End) Install #196586
                  Rebel Oz
                  Participant
                    @rebeloz69

                    Thanks Nailbuster, you’re quite right, as far as it goes, so please excuse my ignorance here.
                    I’ve trawled the wiki – yes, every single page I could find in the sitemap.
                    It really is an excellent resource for MOST users, but it doesn’t cover the ONE thing I want to do.

                    I’ve scanned the source code of every table you’ve mentioned, and gleamed quite a bit from various others as well, but the problem I have is not covered by ANY table that I’ve found.

                    I’ve snooped over the code of Jaws, snuffled around in the script crypt of Creature From The Black Lagoon, even ‘forced’ myself to go across to the dark side and checked out Terry Red’s impressive Star Wars DSA, all to no avail.

                    In short, I’ve fried my eyeballs for weeks trawling through, not 10’s of thousands of line of code, but HUNDREDS of thousands of lines.

                    Creating a basic Pup Pack poses paltry problems, yet in the entirety of the wealth of content available, I have not found a SINGLE instance, example, or even HINT of what I’m searching for.

                    You see, I’m trying to display video content superimposed on the playfield.

                    I believe I’ve initialised the system correctly, and have set:

                    Const pDMD=1
                    Const pBackglass=2
                    Const pPlayfield=3

                    PuPlayer.Init pPlayfield, pGameName

                    I have no great drama displaying content to the DMD or the backglass, but try as I might, I cannot for the life of me get anything (not a cracker) to display over the playfield screen.

                    I’ve tried:
                    PuPlayer.setScreenEx pPlayfield,0,0,100,100,0
                    PuPlayer.SetScreenex pPlayfield,0,0,0,0,1
                    PuPlayer.SetScreenex pPlayfield,0,0,100,100,1
                    PuPlayer.playlistplayex pPlayfield,”Playfield”,”ImageInPupPackPlayfieldDirectory.png”,0,1
                    PuPlayer.setbackground pPlayfield, 1 ‘make current video background
                    PuPlayer.playlistadd pPlayfield,”Playfield”, 1 , 0 ‘Pick a video from the PuPPack Playfield sub-directory
                    PuPlayer.playlistplay pPlayfield,”Playfield”
                    PuPlayer.LabelShowPage pPlayfield,0,0,””
                    PuPlayer.LabelSet pPlayfield ,”PreviouslyDefinedLabelHere” ,”TEXT HERE” ,1 ,””

                    None of which result is a display that persists over the playfield or indeed, in most cases, any display at all.

                    If you could shed any light on where I’m going wrong here, or indeed, if what I’m trying to achieve is even POSSIBLE, I’d greatly appreciate it. :)

                    I’ve detected hints in various posts on a number of forums that documentation for the system does exist (and TerryRed has made a few tantalising mentions of various workings of the mystical JSON parser), but for the record, here’s the sum total of documentation I’ve been able to piece together (excluding of course the PupDMD Framework,which I don’t think is germain to this discussion).

                    ‘######################################################################
                    ‘## PinUp Player hints and tips ##
                    ‘######################################################################

                    ‘======================================================================
                    ‘.SendMSG(<Special (json)>)
                    ‘======================================================================
                    ‘ Send a structured message to the PUP engine as a JSON string
                    ‘ eg: “{‘mt’:301, ‘SN’: ” & pupid & “, ‘FN’:30, ‘PM’:1 }”)
                    ‘ <Special (json)>:
                    ‘ mt message type (1=animate…always for now)
                    ‘ sn ScreenNumber :- pDMD ( or 1), pBackglass (2), pPlayfield(3), etc.
                    ‘ fn ??? function number ???
                    ‘ pm ??? Play mode ???

                    ‘======================================================================
                    ‘ .LabelNew
                    ‘======================================================================
                    ‘ PuPlayer.LabelNew <screen#>, <Labelname>, <fontName>, <size%>, <colour>, <rotation>, <xalign>, <yalign>, <xpos%>, <ypos%>, <PageNum>, <visible>
                    ‘———————————————————————-
                    ‘<screen#> pDMD ( or 1), pBackglass (2), pPlayfield(3), etc.
                    ‘<Labelname> Name for the label. No spaces, but can be anything really. Use this labelname to access the label.
                    ‘<fontName> Windows font name. Must exactly match OS font name. If using custom TTF fonts double check name of font.
                    ‘<size%> Height as a percent of display height. 20=20% of screen height.
                    ‘<colour> Integer value of windows color.
                    ‘<rotation> Degrees in tenths on a degree (900=90 degrees)
                    ‘<xAlign> Horizontal alignment. 0 = left align, 1 = center, 2 = right
                    ‘<yAlign> Vertical alignment. 0 = top, 1 = center, 2 = bottom
                    ‘<xpos>, % of horizontal width. 20 = 20% of screen width. Should be 0, but you can ‘force’ a position if you set this.
                    ‘<ypos> % of vertical height.
                    ‘<PageNum> IMPORTANT! this will assign this label to this ‘page’ or group.
                    ‘<visible> Initial state of label. 1 = show, 0 = off.

                    ‘======================================================================
                    ‘ .SetScreenex
                    ‘======================================================================
                    ‘Set PuPlayer pScreenName to Pop-Up On <screen number> , xpos, ypos, width, height, POPUP
                    ‘ PuPlayer.SetScreenex <screen#>,xpos,ypos,width,height,Pop-Up
                    ‘<screen#> pDMD ( or 1), pBackglass (2), pPlayfield(3), etc.
                    ‘<xpos>, % of horizontal width. 20 = 20% of screen width. Should be 0, but you can ‘force’ a position if you set this.
                    ‘<ypos> % of vertical height.
                    ‘<width>, ??? % width of screen to use. ???
                    ‘<height> ??? % height of screen to use. ???
                    ‘<POPUP> 0 or 1, not sure what this is supposed to do.

                    ‘======================================================================
                    ‘ .LabelShowPage
                    ‘======================================================================
                    ‘ PuPlayer.LabelShowPage <screen#>,<PageNum>,<TimeToDisplay (0=set as default)>,<Special (json)>
                    ‘ Example:
                    ‘ Show our splash page #2 for 3 seconds.
                    ‘ puPlayer.LabelShowPage pDMD,2,3,””

                    ‘======================================================================
                    ‘ .LabelSet
                    ‘======================================================================
                    ‘ PuPlayer.LabelSet <screen#>,<Labelname>,<String>,<Visible (1=visible, 0=invisible>,<Special (json)>

                    ‘ <Special (json)>:
                    ‘ mt message type (1=animate…always for now)
                    ‘ at animate type (1=flashing, 2=motion)
                    ‘ fq when flashing it’s the frequency of flashing (150ms in the example below).
                    ‘ len length in ms of animation. Example below will auto stop animation in 3 seconds.
                    ‘ fc foreground color of text during animation

                    ‘ Example:
                    ‘ Set our label SPLASH to Yipppeeeee.
                    ‘ puPlayer.LabelSet pDMD,”Splash”,”Yipppeeee”,0,”{‘mt’:1,’at’:1,’fq’:150,’len’:3000,’fc’:4443433}”

                    ‘======================================================================
                    ‘ playlistadd ( <folder name>, <sort/alpha/shuffle>, <restSeconds>)
                    ‘======================================================================

                    ‘======================================================================
                    ‘ playlistplayex (<screen#>,<playlistname>, <filename>, <volume>, <priority>)
                    ‘======================================================================

                    ‘======================================================================
                    ‘ pupDMDDisplay(pEventID, pText , VideoName,TimeSec, pAni, pPriority)
                    ‘======================================================================

                    ‘======================================================================
                    ‘ .Init(DisplayNum: Integer; const RootDir: WideString);
                    ‘======================================================================

                    ‘======================================================================
                    ‘ .playlistadd(DisplayNum: Integer; folder: WideString; sort,restSeconds: Integer);
                    ‘======================================================================

                    ‘======================================================================
                    ‘ .playlistplay(DisplayNum: Integer; playlist: WideString);
                    ‘======================================================================

                    ‘======================================================================
                    ‘ .playlistplayex(DisplayNum: Integer; playlist, playfilename: WideString; volume, priority: Integer);
                    ‘======================================================================

                    ‘======================================================================
                    ‘ .playpause(DisplayNum: Integer);
                    ‘======================================================================

                    ‘======================================================================
                    ‘ .playresume(DisplayNum: Integer);
                    ‘======================================================================

                    ‘======================================================================
                    ‘ .playstop(DisplayNum: Integer);
                    ‘======================================================================

                    ‘======================================================================
                    ‘ .setVolume(DisplayNum: Integer;vol: Integer);
                    ‘======================================================================
                    ‘ vol=default volume for display

                    ‘======================================================================
                    ‘ .setVolumeCurrent(DisplayNum, Vol: Integer);
                    ‘======================================================================
                    ‘ vol of current playing media, no affect on default media volume.

                    ‘======================================================================
                    ‘ .SetLength(DisplayNum: Integer;StopSecs: Integer);
                    ‘======================================================================
                    ‘ after you play a file call setlength if you want it to stop.
                    ‘ setlength(5) will stop video at 5 seconds mark.

                    ‘======================================================================
                    ‘ .SetLoop(DisplayNum: Integer;LoopState: Integer);
                    ‘======================================================================
                    ‘ if you set LoopState=1, it will loop the currently playing file. 0=cancel loop

                    ‘======================================================================
                    ‘ .SetBackGround(DisplayNum: Integer;Mode: Integer);
                    ‘======================================================================
                    ‘ if you set Mode=1, it will set current playing file as background (loop it always).
                    ‘ Mode=0 to cancel background. Note if user has ‘POP-UP’ mode this will be disabled automagically (you don’t need to worry about it).

                    ‘######################################################################

                     

                    Some of this is probably crufty old code residue now, but I have no way of knowing what is and what isn’t…

                    in reply to: PinUP System (Player and Popper Front-End) Install #196425
                    Rebel Oz
                    Participant
                      @rebeloz69

                      Hey Nailbuster, luv ya work on this dude; very cool! :)

                      What would make it even COOLER would be having a programmers guide for table authors, with documentation of function calls (possibly with examples)… :)

                      in reply to: VR ROOM Version Black Knight 2000 #159808
                      Rebel Oz
                      Participant
                        @rebeloz69

                        Hi Gear323,

                        Thanks for the VR version of my all time favourite table! :)

                        I know it’s a very small detail, but here’s a photo on my REAL BK2K (ignore the faded sideart – this baby has seen some life! :P), showing the right flipper arrangement (the yellow flipper button is the magnasave), just in case you wanted to add it into your VR rendition… ;)

                        bk2k-flipper-right

                        in reply to: Plain Game wheels #124254
                        Rebel Oz
                        Participant
                          @rebeloz69

                          Thanks Mike!

                          Just out of interest, do you scale them down, or just leave them as-is?

                          Some look amazing on the Pin2DMD, but others, the poor ol’ girl struggles to render cleanly… :)

                          in reply to: Tarcisio style wheels #122488
                          Rebel Oz
                          Participant
                            @rebeloz69

                            Hi OneGentleman,

                            I mostly use Paint.Net (https://www.getpaint.net/), but occasionally I use an old version of Paint Shop Pro (mainly for image rotation, since Paint.Net is fairly limited).

                            in reply to: Tarcisio style wheels #121015
                            Rebel Oz
                            Participant
                              @rebeloz69

                              Hi OneGentleman,

                              I find the easiest way is with Paint.Net (https://www.getpaint.net/).

                              I stumbled across a brilliant overview by Nailbuster on YouTube recently (https://www.youtube.com/watch?v=UTy-QDX2sf8), which perfectly demonstrates the process (thanks Nailbuster! :good: ).

                               

                              in reply to: Tarcisio style wheels #118602
                              Rebel Oz
                              Participant
                                @rebeloz69

                                Screenshot

                                No worries mate, see attached. :)

                              Viewing 14 posts - 1 through 14 (of 14 total)