mjocean / PyProcGameHD-SkeletonGame

The current HD VGA Fork of PyProcGame (w/ HW Accel) + SkeletonGame to accelerate new game development
http://pinballprogramming.com
MIT License
14 stars 8 forks source link

Initial support for monochrome DMD driven by P-ROC #22

Open clempo2 opened 2 years ago

clempo2 commented 2 years ago

Initial support for monochrome DMD driven by the P-ROC

README.markdown mention DMD is now supported fix links

Add EmptyGameDMD, a port of EmptyGame displaying on the DMD

In hddisplaycontroller.py and fakepinproc.py and config.yaml and game.py Implement new boolean proc_dmd setting in config.yaml, if True, the display frames will be sent to the P-ROC to display. To make this work don't forget to set dmd_dots_w to 128 and dmd_dots_h to 32 Remove use_virtual_dmd_only setting, consider it hardcoded to True if proc_dmd is not True The change in setting name is to allow a possible future setting we might call rgb_dmd if we finish the RBG DMD support one day.

In asset_manager.py and asset_list.yaml Use the screen size instead of the window size for the asset manager display Implement new UserInterface.progress_bar.border_width setting to allow no border for DMD Implement new optional UserInterface.progress_bar.background setting for the color of the portion of the bar not processed yet Implement new UserInterface.line_format setting in asset_list.py to allow shorter messages on the DMD, default value is "Loading %s: [%06d] of [%06d]: %s" if self.single_line else "Loading %s: [%06d] of [%06d]" Make sure the color is opaque (255 alpha) when drawing Always draw in the asset manager frame, never directly on the screen Allow for any progress bar border width: 0, 1 or more Left-align the text with the progress bar Position second line vertically to be 120% the font height below the first line If desktop is enabled, let the desktop handle pixel scaling when displaying on the screen Handle raster fonts and HD fonts when rendering text Remove unused clearScreen to avoid having to port it to DMD

In desktop_pysdl2.py and sdl2_displaymanager.py Change make_bits_from_texture() to extract the pixels from the texture in its first argument instead of the default renderer target

In displaycontroller.py Show message when DMD is enabled Implement proc_dmd_draw() to send a frame to the P-ROC

In font.py Add drawHD() for raster fonts, many arguments are ignored, this helps porting to the DMD for code passed a raster font when it expects an HDFont.

In basicgame.py Let the last frame handler send the frame to the P-ROC if the DMD is enabled

In game.py do not generate virtual DMD events if the DMD is enabled The assumption is the P-ROC dip switches disable the DMD event when the DMD is disabled, otherwise it will produce too many DMD events

In skeletongame.py Read the screen size earlier Use the screen size when displaying the no connection message Don't bother showing an error message when the DMD is enabled, the screen is too small for this

In score_display.py Implement new multiplayer.active.row2.y and multiplayer.inactive.row2.y settings to position player 3 and 4 vertically Fixed a bug where the reference position for the player 1 and 2 scores were identical

In layers.py Set the text_width and text_height attributes in TextLayer like the HDTextLayer does