vbousquet / flexdmd

A DMD renderer for Visual Pinball original tables.
Apache License 2.0
55 stars 13 forks source link

FlexDMD crashing "Embedded VPX resource was not found" ... what is it looking for? #54

Open Ltek opened 2 weeks ago

Ltek commented 2 weeks ago

Please let me know why this is crashing VPX, unrecoverable... usually must logout. I made some changes to the DMD text and now it crashes... I cant find the pattern to what is causing it. I only use a + symbol in one string and that was working fine before my last changes, which are all letters, no special characters.

Looks like its coming from the 'If' statement in this code...

Sub DMDDisplayChar(achar, adigit) If achar = "" Then achar = " " achar = ASC(achar) Digits(adigit).ImageA = Chars(achar) If UseFlexDMD Then DMDScene.GetImage("Dig" & adigit).Bitmap = FlexDMD.NewImage("", "VPX." & Chars(achar) & "&dmd=2&add").Bitmap End Sub

[1] 2024/06/20 17:47:24.980 INFO | FlexDMD version 1.9.0.0 [1] 2024/06/20 17:47:25.022 INFO | Table File defined to Swamp Thing (Clairvius 2024).vpx [1] 2024/06/20 17:47:25.022 INFO | Render mode set to DMD_RGB [1] 2024/06/20 17:47:25.022 INFO | Game name set to swampthing [1] 2024/06/20 17:47:25.022 INFO | Show DMD [1] 2024/06/20 17:47:25.022 INFO | Loaded dmddevice64.dll from C:\vPinball\VisualPinball\VPinMAME\dmddevice64.dll to create a virtual DMD [1] 2024/06/20 17:47:28.531 INFO | dmdscreen64.dll was not loaded since it is not available from C:\vPinball\VisualPinball\VPinMAME\dmdscreen64.dll [1] 2024/06/20 17:47:28.532 INFO | Starting render thread for game 'swampthing' using render mode DMD_RGB [15] 2024/06/20 17:47:28.532 INFO | RenderThread start [15] 2024/06/20 17:47:28.698 WARN | Abnormally long elapsed time between frames of 0.15862s (rendering lasted 158.62ms, sleeping was 0ms), limiting to 66ms [1] 2024/06/20 17:47:28.772 INFO | Path for resolving VPX embedded ressources defined to 'FlexDMD.VPXFile' [1] 2024/06/20 17:47:28.772 INFO | Bitmap added to cache:VPX.d_border [1] 2024/06/20 17:47:28.772 INFO | Bitmap added to cache:VPX.d_empty [1] 2024/06/20 17:47:28.783 INFO | Bitmap added to cache:VPX.d_empty&dmd=2 [15] 2024/06/20 17:47:29.200 INFO | Attaching to Visual Pinball Player window lifecycle [1] 2024/06/20 17:47:29.329 INFO | Bitmap added to cache:VPX.d_empty&dmd=2&add [1] 2024/06/20 17:47:29.329 INFO | Bitmap added to cache:VPX.d_g [1] 2024/06/20 17:47:29.329 INFO | Bitmap added to cache:VPX.d_g&dmd=2&add [1] 2024/06/20 17:47:29.329 INFO | Bitmap added to cache:VPX.d_a [1] 2024/06/20 17:47:29.329 INFO | Bitmap added to cache:VPX.d_a&dmd=2&add [1] 2024/06/20 17:47:29.329 INFO | Bitmap added to cache:VPX.d_m [1] 2024/06/20 17:47:29.329 INFO | Bitmap added to cache:VPX.d_m&dmd=2&add [1] 2024/06/20 17:47:29.329 INFO | Bitmap added to cache:VPX.d_e [1] 2024/06/20 17:47:29.329 INFO | Bitmap added to cache:VPX.d_e&dmd=2&add [1] 2024/06/20 17:47:29.329 INFO | Bitmap added to cache:VPX.d_o [1] 2024/06/20 17:47:29.329 INFO | Bitmap added to cache:VPX.d_o&dmd=2&add [1] 2024/06/20 17:47:29.345 INFO | Bitmap added to cache:VPX.d_v [1] 2024/06/20 17:47:29.345 INFO | Bitmap added to cache:VPX.d_v&dmd=2&add [1] 2024/06/20 17:47:29.345 INFO | Bitmap added to cache:VPX.d_r [1] 2024/06/20 17:47:29.345 INFO | Bitmap added to cache:VPX.d_r&dmd=2&add [1] 2024/06/20 17:47:29.345 INFO | Bitmap added to cache:VPX.bkempty [1] 2024/06/20 17:47:29.360 INFO | Bitmap added to cache:VPX.bkempty&dmd=2 [1] 2024/06/20 17:47:31.341 INFO | Bitmap added to cache:VPX.d_c [1] 2024/06/20 17:47:31.341 INFO | Bitmap added to cache:VPX.d_c&dmd=2&add [1] 2024/06/20 17:47:31.341 INFO | Bitmap added to cache:VPX.d_d [1] 2024/06/20 17:47:31.345 INFO | Bitmap added to cache:VPX.d_d&dmd=2&add [1] 2024/06/20 17:47:31.345 INFO | Bitmap added to cache:VPX.d_i [1] 2024/06/20 17:47:31.345 INFO | Bitmap added to cache:VPX.d_i&dmd=2&add [1] 2024/06/20 17:47:31.345 INFO | Bitmap added to cache:VPX.d_t [1] 2024/06/20 17:47:31.345 INFO | Bitmap added to cache:VPX.d_t&dmd=2&add [1] 2024/06/20 17:47:31.345 INFO | Bitmap added to cache:VPX.d_s [1] 2024/06/20 17:47:31.345 INFO | Bitmap added to cache:VPX.d_s&dmd=2&add [1] 2024/06/20 17:47:31.345 INFO | Bitmap added to cache:VPX.d_0 [1] 2024/06/20 17:47:31.345 INFO | Bitmap added to cache:VPX.d_0&dmd=2&add [1] 2024/06/20 17:47:31.345 INFO | Bitmap added to cache:VPX.d_n [1] 2024/06/20 17:47:31.345 INFO | Bitmap added to cache:VPX.d_n&dmd=2&add [1] 2024/06/20 17:47:33.351 INFO | Bitmap added to cache:VPX.d_l [1] 2024/06/20 17:47:33.351 INFO | Bitmap added to cache:VPX.d_l&dmd=2&add [1] 2024/06/20 17:47:33.351 INFO | Bitmap added to cache:VPX.d_u [1] 2024/06/20 17:47:33.351 INFO | Bitmap added to cache:VPX.d_u&dmd=2&add [1] 2024/06/20 17:47:33.351 INFO | Bitmap added to cache:VPX.d_p [1] 2024/06/20 17:47:33.351 INFO | Bitmap added to cache:VPX.d_p&dmd=2&add [1] 2024/06/20 17:47:33.361 INFO | Bitmap added to cache:VPX.d_b [1] 2024/06/20 17:47:33.361 INFO | Bitmap added to cache:VPX.d_b&dmd=2&add [1] 2024/06/20 17:47:33.361 INFO | Bitmap added to cache:VPX.d_jppresents [1] 2024/06/20 17:47:33.361 INFO | Bitmap added to cache:VPX.d_jppresents&dmd=2 [1] 2024/06/20 17:47:36.372 INFO | Bitmap added to cache:VPX.SeriousSam2 [1] 2024/06/20 17:47:36.382 INFO | Bitmap added to cache:VPX.SeriousSam2&dmd=2 [1] 2024/06/20 17:47:40.392 INFO | Bitmap added to cache:VPX.d_2 [1] 2024/06/20 17:47:40.392 INFO | Bitmap added to cache:VPX.d_2&dmd=2&add [1] 2024/06/20 17:47:40.392 INFO | Bitmap added to cache:VPX.d_dot [1] 2024/06/20 17:47:40.392 INFO | Bitmap added to cache:VPX.d_dot&dmd=2&add [1] 2024/06/20 17:47:42.044 INFO | Bitmap added to cache:VPX.d_1 [1] 2024/06/20 17:47:42.044 INFO | Bitmap added to cache:VPX.d_1&dmd=2&add [1] 2024/06/20 17:47:50.321 INFO | Bitmap added to cache:VPX.d_y [1] 2024/06/20 17:47:50.321 INFO | Bitmap added to cache:VPX.d_y&dmd=2&add [1] 2024/06/20 17:47:50.321 INFO | Bitmap added to cache:VPX.d_3 [1] 2024/06/20 17:47:50.321 INFO | Bitmap added to cache:VPX.d_3&dmd=2&add [1] 2024/06/20 17:47:50.321 INFO | Bitmap added to cache:VPX.d_x [1] 2024/06/20 17:47:50.321 INFO | Bitmap added to cache:VPX.d_x&dmd=2&add [1] 2024/06/20 17:47:52.122 INFO | Bitmap added to cache:VPX.d_h [1] 2024/06/20 17:47:52.122 INFO | Bitmap added to cache:VPX.d_h&dmd=2&add [1] 2024/06/20 17:47:52.127 INFO | Bitmap added to cache:VPX.d_f [1] 2024/06/20 17:47:52.127 INFO | Bitmap added to cache:VPX.d_f&dmd=2&add [1] 2024/06/20 17:47:52.127 INFO | Bitmap added to cache:VPX.d_k [1] 2024/06/20 17:47:52.127 INFO | Bitmap added to cache:VPX.d_k&dmd=2&add [1] 2024/06/20 17:47:56.702 INFO | Bitmap added to cache:VPX.d_1a [1] 2024/06/20 17:47:56.702 INFO | Bitmap added to cache:VPX.d_1a&dmd=2&add [1] 2024/06/20 17:47:56.835 INFO | Bitmap added to cache:VPX.d_2a [1] 2024/06/20 17:47:56.835 INFO | Bitmap added to cache:VPX.d_2a&dmd=2&add [1] 2024/06/20 17:47:57.018 INFO | Bitmap added to cache:VPX.d_3a [1] 2024/06/20 17:47:57.018 INFO | Bitmap added to cache:VPX.d_3a&dmd=2&add [1] 2024/06/20 17:47:57.285 INFO | Bitmap added to cache:VPX.d_4a [1] 2024/06/20 17:47:57.285 INFO | Bitmap added to cache:VPX.d_4a&dmd=2&add [1] 2024/06/20 17:47:57.645 INFO | Bitmap added to cache:VPX.d_5a [1] 2024/06/20 17:47:57.645 INFO | Bitmap added to cache:VPX.d_5a&dmd=2&add [1] 2024/06/20 17:47:59.131 INFO | Bitmap added to cache:VPX.d_0a [1] 2024/06/20 17:47:59.131 INFO | Bitmap added to cache:VPX.d_0a&dmd=2&add [1] 2024/06/20 17:48:01.374 INFO | Bitmap added to cache:VPX.d_w [1] 2024/06/20 17:48:01.374 INFO | Bitmap added to cache:VPX.d_w&dmd=2&add [1] 2024/06/20 17:48:01.374 ERROR | Embedded VPX ressource was not found: '' [1] 2024/06/20 17:48:01.374 ERROR | Failed to resolve asset. [src='VPX.&dmd=2&add' base src=''] VPX. True [1] 2024/06/20 17:51:39.427 INFO | Stopping render thread

jsm174 commented 2 weeks ago

Somewhere in your script are you trying to dynamically generate an asset name?

[1] 2024/06/20 17:48:01.374 ERROR | Failed to resolve asset. [src='VPX.&dmd=2&add' base src=''] VPX. True

There is nothing after VPX. and between the the &

Ltek commented 2 weeks ago

The script from an old JPS table. Looks like its calling individual letters and characters. Really hard to follow for someone without any DMD experience but I've only changed the string text in lines like this... Case 9:tmp1 = CL(battleLight - LightHits9 & " MORE LIGHTS To Chase")

I think the generation code is this...

`
Sub DMD_Init() 'default/startup values
    If UseFlexDMD Then
        Set FlexDMD = CreateObject("FlexDMD.FlexDMD")
        If Not FlexDMD is Nothing Then
            If FlexDMDHighQuality Then
                FlexDMD.TableFile = Table1.Filename & ".vpx"
                FlexDMD.RenderMode = 2
                FlexDMD.Width = 256
                FlexDMD.Height = 64
                FlexDMD.Clear = True
                FlexDMD.GameName = cGameName
                FlexDMD.Run = True
                Set DMDScene = FlexDMD.NewGroup("Scene")
                DMDScene.AddActor FlexDMD.NewImage("Back", "VPX.d_border")
                DMDScene.GetImage("Back").SetSize FlexDMD.Width, FlexDMD.Height
                For i = 0 to 40
                    DMDScene.AddActor FlexDMD.NewImage("Dig" & i, "VPX.d_empty&dmd=2")
                    Digits(i).Visible = False
                Next
                digitgrid.Visible = False
                For i = 0 to 19 ' Top
                    DMDScene.GetImage("Dig" & i).SetBounds 8 + i * 12, 6, 12, 22
                Next
                For i = 20 to 39 ' Bottom
                    DMDScene.GetImage("Dig" & i).SetBounds 8 + (i - 20) * 12, 34, 12, 22
                Next
                FlexDMD.LockRenderThread
                FlexDMD.Stage.AddActor DMDScene
                FlexDMD.UnlockRenderThread
            Else
                FlexDMD.TableFile = Table1.Filename & ".vpx"
                FlexDMD.RenderMode = 2
                FlexDMD.Width = 128
                FlexDMD.Height = 32
                FlexDMD.Clear = True
                FlexDMD.GameName = cGameName
                FlexDMD.Run = True
                Set DMDScene = FlexDMD.NewGroup("Scene")
                DMDScene.AddActor FlexDMD.NewImage("Back", "VPX.d_border")
                DMDScene.GetImage("Back").SetSize FlexDMD.Width, FlexDMD.Height
                For i = 0 to 40
                    DMDScene.AddActor FlexDMD.NewImage("Dig" & i, "VPX.d_empty&dmd=2")
                    Digits(i).Visible = False
                Next
                digitgrid.Visible = False
                For i = 0 to 19 ' Top
                    DMDScene.GetImage("Dig" & i).SetBounds 4 + i * 6, 3, 6, 11
                Next
                For i = 20 to 39 ' Bottom
                    DMDScene.GetImage("Dig" & i).SetBounds 4 + (i - 20) * 6, 17, 6, 11
                Next
                FlexDMD.LockRenderThread
                FlexDMD.Stage.AddActor DMDScene
                FlexDMD.UnlockRenderThread
            End If
        End If
    End If
'
Ltek commented 2 weeks ago

I may have figured it out... looks like some characters are not mapped to images... and there is no error trapping for that. Lower Case letters may not work... arg. I'll test this tomorrow and report back. thx for the help