0% found this document useful (0 votes)
14 views11 pages

HS Event Dispatch System Documentation

The HS Event Dispatch System (EDS) is a tool designed to enhance the Hyperspin experience by allowing multiple applications to be launched simultaneously on HS events. The documentation outlines system requirements, limitations, and provides an overview of the EDS modules, including configuration options for developers. It is offered for free with an emphasis on community support and feedback during its beta testing phase.

Uploaded by

Gianpiero Stasi
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
14 views11 pages

HS Event Dispatch System Documentation

The HS Event Dispatch System (EDS) is a tool designed to enhance the Hyperspin experience by allowing multiple applications to be launched simultaneously on HS events. The documentation outlines system requirements, limitations, and provides an overview of the EDS modules, including configuration options for developers. It is offered for free with an emphasis on community support and feedback during its beta testing phase.

Uploaded by

Gianpiero Stasi
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

HS Event Dispatch System

Beta Version 0.4.53 for testers


(For Evaluation Only)

DOCUMENTATION
version 0.1.4 – 2014/08/11

Page 1 | 11
Table Of Content

1 Introduction............................................................................................................................................3
2 Disclaimer/Limitation on Liability.........................................................................................................3
3 System Requirements.............................................................................................................................4
3.1 System Mandatory Requirements..................................................................................................4
3.2 System Recommended Requirements............................................................................................4
4 System Limitation..................................................................................................................................4
4.1 Known problems ('bugs')................................................................................................................4
5 Users suitable basic knowledge.............................................................................................................4
6 Technical Information............................................................................................................................4
7 HS Event Dispatch System (EDS) Overview........................................................................................4
7.1 EDS HQ - Configuration module (visual API – do not launch during gaming)............................4
7.2 The launch module (light weight (176kb) , invisible to users - no GUI , functional API only).....5
7.3 EDS_ClassLibrary.dll (core engine, very lightweight 14kb).........................................................5
8 EDS Command line parameters (Param 1, Param 2, Param 3)..............................................................5
9 EDS Configuration & Controls GUI......................................................................................................6
9.1 Table Fields definition....................................................................................................................6
10 Application Setup.................................................................................................................................9
11 For Developers.....................................................................................................................................9

Page 2 | 11
1 Introduction

Recently (November 2014), I developed HyperMarquee to manage multiple displays. I had to face one
reality constraint, Hyperspin events are single thread and single application call... HS cannot launch
more than one application at wheel event, letting users with the difficult decision to choose between
HyperSpeech, LEDBlinky, HyperSpinHelper, HyperMarquee etc... To give Hyperspinners more
flexibility, here is a Hyperspin Event Dispatcher System (EDS) that allows you to launch as many
applications on HS events that you like. This should be beneficial for the community where basically,
this is a tool to extend Hyperspin possibilities and let users the possibility to manage multiple
applications on HS events.

Cheers,

Special thanks to:

• Brolly & Gooch for advises, support and graciously volunteer for beta testing.
• Users! (For testing, bugs report and improvement ideas)
• Bad Boy Billy for great inspiration and Hyperspin Front end.
• Nemo1966 for Async NamedPipe Client & Server code example.
• My Girlfriend France, who always supports me.

This is free and it will always be. To encourage development, you can send a donation of your choice
through PayPal to JYCadieux@[Link].

2 Disclaimer/Limitation on Liability.

The software and all libraries are supplied "as is" and all use is at your own risk. I disclaim all
warranties of any kind, either express or implied, as to the software, including, but not limited to,
implied warranties of fitness for a particular purpose, merchantability or non infringement of
proprietary rights. Neither this agreement nor any documentation furnished under it is intended to
express or imply any warranty that the operation of the software will be uninterrupted, timely, or error
free.

Under no circumstances shall I be liable to any user for direct, indirect, incidental, consequential,
special, or exemplary damages, arising from or relating to this agreement, the software, or use or
misuse of the software or embedded component. Such limitation of liability shall apply whether the
damages arise from the use or misuse of the software or any other services supplied by me.
(including such damages incurred by third parties), or errors of the software.

Page 3 | 11
3 System Requirements
3.1 System Mandatory Requirements.
• Microsoft Windows (Tested on Windows 7 & Windows 8.1)
• .Net Framework 4.5.1 (not provided - link)
• [Link] (provided)
3.2 System Recommended Requirements.
• None for now

4 System Limitation
4.1 Known problems ('bugs').
• Circular effect when calling EDS is calling itself.
• The content of the settings file may disappears letting the configuration file completely empty.
This behavior has been reported by one user only so far, and the origin of the problem has not
been identified. Suspecting using obsolete configuration file version. Status: under observation

5 Users suitable basic knowledge.


– Basic understanding on Inter-Communication Process (ICP).
– Basic understanding on Hyperspin system & configuration.

6 Technical Information.
– Development Environment : Microsoft Visual Studio Express 2013 for Windows Desktop
– Development Languages : C# 2013, WPF 2013, XAML 2013

7 HS Event Dispatch System (EDS) Overview


There are three (3) EDS modules;
7.1 EDS HQ – HyperSpin Applications Integrator

The Graphical user Interface (GUI) to set user configurations. (do not launch during gaming)

Page 4 | 11
7.2 The launch module - “EDS_LaunchModule (rename me).exe”

• Light weight (176kb) , hidden to users - no GUI , functional API only


• This is the command line application ('Proxy' / middle app) application to be called by
Hyperspin to launch application on events. With this module, HS can launch 3rd party
applications like LedBlinky, HyperSpeach, HyperSpin Helper, HyperMarquee, etc..
• For Hyperspin users, this is the .exe module to be renamed [Link].
7.3 Core engine, very lightweight 14kb - “EDS_ClassLibrary.dll”

• EDS core functionality engine. Works in conjunction with the LaunchModule.

8 EDS Command line parameters (Param 1, Param 2, Param 3)

There are 3 possible parameters (Same as LedBlinky); event, rom & system.

Parameter Parameter 1 Parameter 2 Parameter 3


Front-End Start (1) Code: [1] type:<event> Nil Nil
Front-End Stop (2) Code: [2] type:<event> Nil Nil
Game Launch (3) Code: [3] type:<event> Type:<rom> Type:<system>
Game Stop (4) Code: [4] type:<event> Nil Nil
Screensaver Start (5) Code: [5] type:<event> Nil Nil
Screensaver Stop (6) Code: [6] type:<event> Nil Nil
System Select (7) Code: [7] type:<event> Type:<system> Nil
List Change (8) Code: [8] type:<event> Nil Nil
Game Select (9) Code: [9] type:<event> Type:<rom> Nil

Animation Stop (11) Code: [11] type:<event> Nil Nil

Page 5 | 11
Load MAME Controller File (12) Code: [12] type:<file> Nil Nil
Reset Ultrastik 360 (13) Code: [13] type:<map> Nil Nil

Note:
• Use double quotes around parameters if the parameter value may include spaces.
• If you start a game without specifying the emulator, MAME is the default.
• There is also GameStart <rom> <emulator>, but I am not sure what is the difference with Game
Launch (3).

Page 6 | 11
9 EDS Configuration & Controls GUI. (App Integrator Module)

9.1 Table Fields definition.

– Application : Specifying application .exe location.


– IPC Methods
1. CLI : Command-Line Interface. Will call the specified application and passing defined
parameters on application launch. (By OS nature, parameters can be passed only one time,
i.e when the application is called). This can be much slower than Named Pipe, since the
application has to be launched each time an event is fired by HyperSpin.

PROS;
– Compatible with every .exe and can launch some applications with other file extension.
– Most users are already familiar with this approach.
– Easier integration with Hyperspin.

CONS;
– The slowest solution and the less responsive one.
– Needs to be closed/loaded the remote application each time user refreshed the HS wheel
event.

Page 7 | 11
– Hungrier on system resources

USAGE; (See HM documentation - command line parameter section 9 for me information)


– Hyper [Link] false Mame-Image “GALAGA” “MAME”

2. Pipe : Set EDS as a Pipe Client in order to send parameters information to the specified
remote application acting has a Pipe Server using Named Pipe technology. This feature has
to be supported by the remote application. See remote application documentation to see if
its support NamedPipes. The name of the Pipe is declared within the Pipe ID column. Side
note: The local Named Pipes protocol is the preferred option within EDS. Local named
pipes runs in kernel mode and is extremely fast, see this Microsoft link for more
information. Named pipes are faster than TCP/IP for IPC on the same machine. Remote
application developers can integrate Piper Server support to be fully compatible with EDS
and enhanced the their application responsiveness with HyperMarquee.

PROS;
– Bring best performance compared to other IPC options. (OS Kernel Low Level
communication)
– No need to reload HyperMarquee each time your artworks and text get updated. The
artworks or messages are updated at HM run time
– It is lightest option on system resources
– Capable of more than 8000 calls/seconds for 128bytes messages. NB: Performance may
decrease according to the size of your image and/or the power of your computer. Large
images could be stored on SSD rather than Hard Disk.

CONS;
– New approach where users may not be not yet familiar with.
– Remote applications needs to implement NamePipeServer to support this IPC. (the code
is available to developers)

3. Pipe (CLI) : This is a combination of two IPC Methods (CLI & NamedPipe). First, EDS
will send a message (parameters) to the NamedPipe server (the remote application) if exists.
Otherwise, EDS will launch the application and pass the parameters to it using CLI. EDS is
much faster than CLI, since the application stay loaded in memory at each HyperSpin event
call. Named Pipe is Low Level OS call.

– CBR : Close Before Rerun. This works with CLI, it is not meant for Pipe where it defeats the
purpose of it. Basically, this will close the application if running, before launching a new
instance to avoid multiple undesired instances of the same application. NB : This is not suitable
for Pipes, since this is opposed to the pipe objective.

– App (TRY) : Self explanatory, this will launch the application using the specified parameters as
a test.

– Close : Self explanatory, this will close (kill) the running application using the application
Process ID (PID).

Page 8 | 11
– Parameters : This is the parameters that will be passed to the remote application. You can write
everything that you like, but see remote application documentation to understand how to use the
parameters syntax which the given parameters protocol belongs to. Beside static parameters,
there are for (4) dynamic parameters that you can use; [event], [system], [game] and
[ledblinky]. NB : Dynamic parameter has to be set between square brackets. Use double quotes
directly around the parameters if it may contains spaces ( ex: “[game]” ).

Available parameters;
 Event : The event issued by the Front End. See section 8.
 System : This is the given system (the emulator, console, etc..).
 Game : The is the game name that you to pass as a parameter.
 LedBlinky : This format automatically set Ledblinky parameters and pass them according to
the specific event type.

– Disable : Disable application to be launched or used by EDS.

– Pipe ID : This is the name of the Pipe to send the message between EDS and the remote
application. Please refer the remote application documentation to see which shared name to be
use. For HyperMarquee, it is the name of the configuration file by default.

– Event Filter : The specified events list accepted parameters to launch the application. Here you
are specifying all the events that can be suitable to launch the application. Application will be
launched (CLI mode) or parameter will get passed (Pipe mode), only if event is part of the event
filter list or the list is empty. Usage: empty list = all events pass, otherwise only the events in
the list are allowed.

– Close Filter : This feature allows closing the application using its Process ID (PID) for
application that does not manage closing by themselves. EDS will close (killed) the remote
application if the HS event is part of the specified events list. Usually it's meant for Game Stop
(4) and/or Front-End Stop (2), but you can close the application on any defined events that you
like. NB : You shouldn't overlap/duplicate specific event with Event Filter, which this make no
sense and may leads to undesired EDS behavior.

– System Filter : This feature allows restricting the remote application from being launched by
all System (emulator) but the defined ones. HitToText, for instance, only works for MAME and
wouldn't be of any use for other systems. This will also gives you the possibility the have an
another specialized HiScore tool for other systems when exist. Usage: empty list = all systems
pass, otherwise only the defined systems in the list are allowed.

Page 9 | 11
10 Application Setup

There is no setup application to execute in order to use HS Event Dispatch System (EDS). The
application will use the installed .Net Framework and some few external libraries already provided
within the main application folder to run properly.

Here are the steps to configure EDS.

1. Install the fonts that are part of the distribution (optional but recommended)
2. Install .Net framework 4.5.1 if not already done.
3. Rename EDS_LaunchModule.exe application by [Link] (for HS users)
4. Run [Link] (EDS GUI) to configure your apps that you would like to
use.
5. Configure and enable EDS within your favorite Front End. Within HyperHQ, set the path for
EventDispatchSystem root folder and enable LEDBlinky.

11 For Developers

The Complete code is available for developers. Refer to the download section.
– PipeServer: The remote application receiving the message on HS events from EDS pipeClient.
– PipeClient: EDS sending the message on HS events to your remote application (PipeServer).
– For testing, [Link] application and [Link] application with source code are
available for developers that wishes to integrate this technology within their remote application
or simply to run pipe tests during EDS configuration.

Page 10 | 11
Page 11 | 11

Common questions

Powered by AI

The documentation disclaims all warranties, whether express or implied, regarding the software, explicitly stating use is at the user's own risk. It renounces legal responsibility for direct or indirect damages linked to the software's use or misuse, emphasizing that the provided software comes "as is" without assurance of being error-free or uninterrupted .

The System Filter feature enables users to restrict launching remote applications based on system types, ensuring compatibility with specific emulators like MAME. Users can specify which systems a remote application supports, meaning the application will only run or receive parameters from defined systems, ensuring proper utility across different emulation platforms .

The HS Event Dispatch System allows multiple applications to launch on a single Hyperspin event, addressing the limitation of Hyperspin's single-thread, single-application call. It uses the EDS LaunchModule as a proxy to trigger third-party applications like LEDBlinky and HyperMarquee on Hyperspin events, thus providing users the flexibility to manage multiple applications simultaneously .

The HS Event Dispatch System offers three IPC methods: CLI, Named Pipe, and Pipe (CLI). CLI involves passing parameters to an application at launch, which is compatible with any .exe and user-friendly, but slow and resource-intensive. Named Pipe excels in speed and efficiency, suitable for frequent updates without reopening apps, but requires support from remote applications. Pipe (CLI) combines CLI and Named Pipe, sending messages via a NamedPipe server if available, otherwise using CLI, thus retaining speed and keeping applications loaded .

The Named Pipe IPC method significantly enhances performance by utilizing OS kernel-level communication, allowing fast data transfer between processes. It avoids the need to reload applications for updates, handles over 8000 calls per second for small messages, and minimizes system resource load. However, it requires applications to support Named Pipe, which can be a barrier .

The HS Event Dispatch System requires Microsoft Windows (specifically tested on Windows 7 and 8.1) and the .Net Framework 4.5.1. Additionally, Xceed.Wpf.Toolkit.dll is included, only appearing under mandatory requirements with no specified recommended requirements .

To configure the HS Event Dispatch System, install necessary fonts and .Net Framework 4.5.1 if not already installed, rename EDS_LaunchModule.exe to Ledblinky.exe for Hyperspin users, and use HyperSpinEventIntegrator.exe to manage desired applications. The system uses these configurations to integrate EDS with the user's preferred front end .

The documentation identifies known issues like a circular effect when EDS calls itself and the unexplained loss of content in the settings file. The latter is suspected to be linked to using an obsolete configuration file version. The issue's status is marked as under observation, indicating ongoing attempts to pinpoint and resolve the problems .

The Pipe (CLI) IPC method enhances responsiveness by combining Named Pipe and CLI approaches. It prioritizes sending messages to a NamedPipe server and resorts to CLI only if necessary, ensuring a high-speed message transfer while maintaining application presence in memory during events. This dual approach maximizes efficiency and minimizes application load time .

The EDS command line utilizes defined parameters to trigger various events such as game launch, screensaver start, and system select. It provides precise control over event initiation, allowing users to tailor responses to Hyperspin events comprehensively, thus enhancing the customizability and functionality of the HS environment for advanced users .

You might also like