New DMD demo

highrise

Pinball Wizard
Joined
Mar 6, 2006
Messages
180
Reaction score
1
Points
19
ok guys, I made quite a lot of progress with my DMD system, so it seemed like a good idea to start a new thread. As mentioned, I wrote some code (in Excel would you believe) that helped me import graphics into the demo, which gave me a lot more scope to create a new demo that hopefully gives you more of an idea of how it works. This is what I saw in my head when I started it, so now you guys can get more of an idea about it. This demo shows off a few tricks I've added. It does three different wipes and has some nice animation. To put a bit more life in, I also added sounds.

I'm afraid it's still locked. Although the code is mostly ok, it needs a lot of tidying up - I know where everything is, but if you wanted to make use of it you'd be scrabbling around all over the place. So I'm going to add some more display routines, nail the collision detection, and make it show scores before I even consider releasing it.

All the same, I'm pretty pleased. There's not a lot of point in posting a screenshot as it wouldn't really do it justice. Just download the demo and give it a go. I think you'll see it does indeed bring something new to the table for original authors.

enjoy!

Al

P.S I'm not planning on building a DK table, it's just one of my favourite games. I'm the proud owner of a cocktail cabinet version.
 

Attachments

  • dkdmddemo.zip
    191.4 KB · Views: 333
I've finished inputting the font data. It can display all characters from 32 (space), through to 90 ("Z"), so it does all numbers and all the most common characters like question marks etc.

The system currently works using the command:

printdmdtext text,x,y,c,a

where text is your text, x and y are the position, c is the character set (large, medium or small), and a is the alignment (left or right).

As you can see, the idea here is to create code that can just be put at the end of a script, so the user can use the commands like printdmdtext or putsprite without worrying about how they actually work.

Due to speed requirements, there are some limits to positioning the text (I have not allowed text to be printed across more than one 'column' like sprites can be due to the nature of text getting updated a lot during play), but nothing that is too drastic. It is running at a really great speed on my computer which is a dual processor 2.8 Ghz P4. I think it will be fine on most computers from the last couple of years at least.

Attached is an image which shows text and numbers. Obviously normal EMReels can do this, but what they can't do is show any combination of text and numbers on the same DMD, which this can. As you can see from the third example, you can also colour your text, mix sizes, and of course have sprites in there too if you want.

The characters are defined very much like the old 8-bit computer graphics. This is why I put so many characters in. All characters can be refined by the user, so you can use your own font or have special characters like, say, suits for a card-based table.

Anyway, just an SS for now, still lots of tidying up to do on this one.
 

Attachments

  • textsamples.jpg
    textsamples.jpg
    59.7 KB · Views: 1,194
Thanks again Al. The latest examples are large enough for even me to see clearly. It's interesting watching your cogs and gears meshing and ratcheting.
 
Looks pretty nice, was gonna make my own DMD, but this looks promising, so will have a good look at it
 
thanks. I just figured out a way of importing fonts into the system as well which is nice. They have to be fixed width of course, it would be too tricky otherwise.

Suggestions are of course welcome in terms of what functions people would like to be included.
 
will you be able to add Color to it?
 
the system is made up of 300 EMreels, each with a four colour display - three display colours and background / off . So in terms of colour, there are two ways you can do this. Firstly, you can simply define the 3 main colours to use, or you can set certain areas of the DMD to have certain colours. The second option is a bit like the old space invaders machines where they stuck coloured plastic over the screen though - everything in that area will use that palette. Examples of both options posted.

For those that have been following my work on this, I have been busy working on making the code more efficient, in order to enable it to display scores and messages during game play and will have a demo of that fairly soon. It will need a fast computer though.
 

Attachments

  • colorscore.jpg
    colorscore.jpg
    5.9 KB · Views: 1,117
  • colorscore2.jpg
    colorscore2.jpg
    11.9 KB · Views: 1,130
It's a nifty thing, this DMD of yours. Have you seen Gerhards? I hope you have something in the end that's quick enough to be useful. Even if it was something that did not update while the ball was rolling, that would still be cool (animated match and bonus countdown, video mode games etc). Is each reel a dot, or a matrix?
 
Maybe stackable lights would be better? Controlling them would be tough, but judging from the speed loss when ever a barrel or Mario showed up on the DMD, only the really, really fast computers will be able to use this, especially as there is no table there taking it's resources.

My frame rate dropped at least 50%, and though it didn't cause stuttering, I'm thinking multiball at that time will cause it. This is on a basic, but newer computer as well.

Really wish Randy gave us png support when we asked him and he was around...
 
Hi guys

I've been working on a lot of new code, to do with making updates a lot faster (thanks to some handy tips from Destruk about how VP hates Do...Loops). I've managed to get the code to update text and scores fairly quickly (it nicely adds commas to the scores too!). So the last demo I posted is quite out of date in terms of speed.

Shiva - stackable lights is something I have been looking at. Destruk very kindly sent me the DMD code he wrote for his Crusader table some time ago. This was a two colour binary system, and that used 4000 lights. All the code I've written could be easily translated to work with stackable lights, because it treats the DMD as a string array in base 4. And even though it would not look as good, it would probably be quicker, so I started to investigate, but then I ran away when I thought of the prospect of creating over 10,000 one unit square lights and putting them into collections.

The sprite system is always going to be slow, so will only really be useable for times when there is no ball action. Minigames, match animations and so on should still be possible though, as the code will definitely be quicker than it currently is. Sprites are always going to be tricky because they move between difference emreels, meaning a lot more need updating. The compromise is using the text system I am now working on, which uses fixed widths to ensure the minimum number of EMReels are updated, and should allow a certain amount of graphics within the game itself. here's how it works.

There are going to be five different sizes of font available, those being 3 wide by 6 high, 6 wide by 8 high, 6 wide by 12 high, 12 wide by 15 high and 12 wide by 19 high. These are all stored in a text file that is loaded into VP. I've written code in Excel that will allow you to edit these fonts. I'll also be able to provide instructions on how to convert any image file into the text format that the DMD uses. It's important that you can define your own characters because there are 60 characters available, ranging from chr(32) - space, to chr (91)="Z". As well as the alphanumeric characters, there are 20 or so characters that, should you wish to, you can define yourself. Since they can all be four colours, you can use them to create small animations as well. In fact, there's no real reason why the number of characters can't be extended.

At any rate, I've tidied up the code a lot, and will have something that I can release fairly soon. Destruk is going to have a look at the code to see if he can make it more efficient, and anyone else with plenty of script experience (I'm just an 8-bit hacker myself) with VP will be welcome to take my ideas and make them go faster. Look on the bright side - it can only get quicker as we refine it.
 
P.S chr(91) is '[', not 'Z'. I added it as an extra character to round things up. In the fonts I've created this character displays a © symbol, which I thought most people might like to have.
 
oh, sorry Shockman I forgot to answer your question. There are 300 EMreels. Each reel has 12 spaces, and each space has a 3 x 3 pixel image corresponding to the value 0,1,2 or 3. It measures 10 EMreels by 30, making 300, and a grand total of 300 x 12 = 3600 pixels. In terms of speed, the trick is to minimise the number of EMReels that get updated at once. Amongst other things, it does this by only updating reels if they change. If you can keep the number of reels updated at once below 20 or 30, you can get things into the game without disrupting the play on a reasonably fast PC. Small font messages for example only take up around 1.5 Emreels per character. Remember, the fast PCs of today will be the average of tomorrow, so we can look forward to that too.
 
at the moment, this is how you define the sprites (I have just finished some code that will allow them to be load in as text files however). It just gives you an idea of how it actually manipulates the data.

sprite(mario, 71) = "0000002222000000"
sprite(mario, 72) = "0000022222222000"
sprite(mario, 73) = "0000011133300000"
sprite(mario, 74) = "0000133113133300"
sprite(mario, 75) = "0000133111113330"
sprite(mario, 76) = "0001113333111100"
sprite(mario, 77) = "0000003333333000"
sprite(mario, 78) = "0001111221100033"
sprite(mario, 79) = "0331111222111333"
sprite(mario, 80) = "0333011232223133"
sprite(mario, 81) = "0330022222222010"
sprite(mario, 82) = "0000222222222110"
sprite(mario, 83) = "0002222222222110"
sprite(mario, 84) = "0011122000222110"
sprite(mario, 85) = "0011100000000000"
sprite(mario, 86) = "0001110000000000"
 
Evening all

Here is a second look at the Donkey Kong DMD demo. I've downgraded the DMD back to a 1x1 pixel system, with small gaps between the pixels. The quality is compromised considerably, but the speed should be quite a bit more. Please download this and let me know how it performs relative to the first one. One advantage with this new one is that it is small enough to fit on the back of an actual table if you wanted that realistic look.

The quality of the DMD is also affected by which resolution you use. I'd like to know which is the most popular resolution, and I'll try and optimise the system for that.

regards

high
 

Attachments

  • 1x1dkdmdtestdemo.zip
    177.8 KB · Views: 356
Update - I found a compromise. A 2 x 2 DMD with 1 pixel gaps looks almost identical to the 3 x 3 system, but cuts down on the graphics. This is attached. I changed it to a violet DMD, just for fun. It can be any colour you like you see.

I've also made a lot of progress on the text / score display system, but more on that later.

Highrise
 

Attachments

  • 2x2dkdmddemo.zip
    177.9 KB · Views: 384
highrise said:
oh, sorry Shockman I forgot to answer your question. There are 300 EMreels. Each reel has 12 spaces, and each space has a 3 x 3 pixel image corresponding to the value 0,1,2 or 3. It measures 10 EMreels by 30, making 300, and a grand total of 300 x 12 = 3600 pixels. In terms of speed, the trick is to minimise the number of EMReels that get updated at once. Amongst other things, it does this by only updating reels if they change. If you can keep the number of reels updated at once below 20 or 30, you can get things into the game without disrupting the play on a reasonably fast PC. Small font messages for example only take up around 1.5 Emreels per character. Remember, the fast PCs of today will be the average of tomorrow, so we can look forward to that too.

I'm real skeptical about any big advances in the very near future, I think something new is comming, but we have to wait for that.

This sounds great, but I am a bit skeptical about this too.
How do you do that? Update 30 emreels at once? simutaniously? or one after the other? I think if you capture the data, hold it and feed it on a timer that you would not have an impact on the ball physics, but would the display lag too much?
 
it rarely needs to update 30 emreels at once. It only updates them if they change. I've got a new demo I'm posting now, I'm getting close to minimal lag on a reasonably fast PC. Once you see it, you might just start to believe, like me, that it might just be possible.
 
General chit-chat
Help Users
You can interact with the ChatGPT Bot in any Chat Room and there is a dedicated room. The command is /ai followed by a space and then your ? or inquiry.
ie: /ai What is a EM Pinball Machine?
  • No one is chatting at the moment.
  • Chat Bot Mibs Chat Bot Mibs:
    Torntabittz has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    brotherboard has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    GARRY040 has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    BL2K has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    Chilldog has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    rodneyfitz has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    ace19120 has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    Tomasaco has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    Greek_Jedi has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    Beermano has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    02browns has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    nitram1864 has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    aeponce has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    JEAN LUC has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    lorenzom has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    maxangelo19 has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    Dragonslapper has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    royaljet has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    Tyfox has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    Goldtopboy has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    slick267 has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    dabreeze has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    Spike has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    Tofa has left the room.
  • Chat Bot Mibs Chat Bot Mibs:
    Atropine has left the room.
      Chat Bot Mibs Chat Bot Mibs: Atropine has left the room.
      Back
      Top