Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - chrisvg

Pages: [1]
General / Shameless plug: Got a Nanao MS2930 manual tri-sync monitor?
« on: April 08, 2016, 07:45:01 AM »
So a couple of months ago I created a simple hardware mod to convert my MS2930 from manual to automatic tri-sync.  I posted a big writeup about it in the" Raspberry Pi & Dev board" section of the BYOAC forums.  Not sure how many people in here have Candy's but there might be a few of you that find this useful.

So, this mod simply feeds the HSync output from my VGA output on the PC in to the Arduino board, measures the frequency of the video mode being output, then sets a couple of MOSFETs acting as dip switches on a simple breadboard circuit that replicates the circuit for the dip switches on the remote board for the monitor.  The generated voltage from the circuit is then sent to the monitor via the ribbon cable that plugs in to the front.. just need to splice a couple of wires and then it's party time!

So, if you have a MS2930 and would like to run AttractMode at a 31k resolution like 640x480, while still being able to run your games in GroovyMAME (or whatever other software that supports native resolutions) at their native 15/24k resolutions, and you don't want to have to fiddle around with those remote board dip switches every time you change games, go have a look at my write up here!

Scripting / Enhanced Intro video script
« on: March 16, 2016, 11:29:59 PM »
I've been working on some layout code to handle monitor rotation and various aspect ratios in a nice way and thought the old intro video script could do with a bit of sprucing up.

My enhanced version of the intro script now supports playback of different video files depending on the aspect ratio of the monitor, and if you've rotated the screen.

Extract the archive to the intro directory and overwrite the existing intro.nut file.

From the main menu, select the Intro item and you can configure a bunch of things like your monitor rotation orientation, aspect ratio detection, and the video files to play when different aspect ratios are detected.  It should be all pretty straightforward.

updated script to have a fallback to use the default video file if there is no match for the current aspect ratio video. (this should allow the video to play using a stock install of AM without having set up anything yet).

Themes / PanAndScan module v1.2 release
« on: March 13, 2016, 03:18:58 PM »
Code: [Select]
    Version 0.1     (8th December 2015)     - Initial release (included in Blastcity layout)
    Version 1.0     (14th March 2016)       - Complete rewrite to extend PreserveArt module
    Version 1.1     (14th March 2016)       - Added start_scale and randomize_on_transition
    Version 1.2     (22th March 2016)       - Fixed bug with bounce animation when art is smaller than surface

After a bit of prodding from Verion (ouch!), I finally got around to rewriting the PanAndScan module I included with my previous Blastcity layout! :P

This version of the module extends liquid8d's excellent PreserveArt module.  I have included the most recent version (1.0) of his module in the archive.  You can find this and his other projects hosted at his github repo.

With liquid8d's module you can define an arbitrary space on the screen and place an art or image object in there, either scaled to fit within the space, or to fill it, while preserving the original aspect ratio.

My module extends this functionality by adding a "Pan and Scan" style animation to it.  This allows you to either scroll the art/image object side to side, up and down, or in all four directions.  It also allows you to zoom in to the image to a desired scale (happy now Verion? ;)).

Example usage:

Code: [Select]

local my_art = PanAndScanArt("flyer", 0, 0, 640,480);

my_art.set_zoom(4.5, 0.00008);
my_art.set_animate(::AnimateType.Bounce, 0.07, 0.07)

Breakdown of each command:

First thing we load the module into the layout...
Code: [Select]
Then create an instance of the module class. Arguments are: art type, x pos, y pos, surface width, surface height
(Also, you can replace PanAndScanArt() with PanAndScanImage() if you want to use an image in your layout directory)
Code: [Select]
local my_art = PanAndScanArt("flyer", 0, 0, 640, 480);
Tell the module whether you want to make the loaded art/image "fit" the size of the surface you've created, or to "fill" the surface.  I'd recommend sticking with "fill" for the purpose of this module, though you may find a use for "fit" in some cases.
Code: [Select]
Configure the anchor point for the art/image.  When you have zooming and scrolling going on, I find Center to be the best option here. Other choices for the ::Anchor table include .Left, .Top, .Center, .Centre (same as .Center), .Right, and .Bottom.
Code: [Select]
Here is where the fun stuff starts (no offence to liquid8d!).  Arguments are: zoom scale, zoom speed
For the scale, note that 1.0 is the actual art/image scale displayed on the surface prior to zooming. So, if you want to end up with the image doubled in size at the end of the zoom animation, you'd enter 2.0
Code: [Select]
my_art.set_zoom(2.5, 0.0002);
This sets the pan and scan animation.  Arguments are: animation type, x/y speed, [y speed].
Choices for the ::AnimateType table include .Bounce, .HorizBounce, and .VertBounce.  If using Horiz or Vert, only 1 speed argument is needed.
Code: [Select]
my_art.set_animate(::AnimateType.Bounce, 0.1, 0.1)
Enabling this will randomize the pan animation direction when transitioning to another list item.
Code: [Select]
Alter the starting scale of the image after it has been processed by PreserveArt.  I found this helps to remove some of the initial "wiggle" as the pan animation bounces from side to side at the beginning.
Code: [Select]

I think I've covered everything.  Have a play around with it and see what you think.  I mostly created this to have animated backgrounds, zooming and panning around large flyer images and such.  Let me know if you manage to break it some how and I'll take a look, or if anyone has some suggestions for improvements then I'm all ears!

Themes / My custom layout for use on a 640x480 31Khz arcade monitor
« on: December 08, 2015, 05:31:44 AM »
Hey gang,

I've been working on a pretty simple custom layout for use on my arcade cabinet (Sega Blast City with MS2930 monitor) and have got to the point where I'd like to show it off :)

It's loosely based on the layout that Cools created (nice work man!).  This is only a couple of days work so far, but I'm pretty happy with it so far.

I've designed it specifically for use in 640x480 on a horizontal arcade monitor, and the layout nicely handles previews for both horizontal and vertical games.

Vertical game:

Horizontal game:

In the background it scrolls an image I have included with the layout (brazenly stolen from Rocketlauncher, sorry guys!).  It also shows flyers overlayed over the top of the background.  Both layers scroll independently which looks pretty cool I think.  As not all games have a flyer, I have set up the flyers in my MAME config to also include snaps.  The layout will automatically scale the snaps so they are 1.5x larger than the screen so they can scroll around (albeit a bit chunky looking).

Here's a YouTube video of it running on my cabinet, please excuse the shaky cam!

I have not made any effort to test this layout at higher video resolutions, so for all I know it might not look so nice if you're not at 640x480! Word of warning!

Oh also, in the archive I've included a module I wrote that the layout relies on called "pan-and-scan".  This module is pretty straightforward, somewhat based on the FillArt module that Liquid posted on the forums recently.  This is what I use to display and animate the background and flyers.  If anyone want's to use it in their own layouts, be my guest! :)

Hope someone finds this useful for use in their own setup.  I will likely make additional changes and post them to the forums as I progress.

Finally, thanks to Raygun and all of the contributors for this awesome frontend! I've had a lot of fun noodling around with it :)

General / MAME Filters and Exceptions
« on: November 28, 2015, 12:08:33 AM »
Hi guys,

I've just found this frontend and have been playing around with getting my MAME games list set up nicely.

I have got quite an extensive set of filter rules, however I would like to add a couple of exceptions.

If i understand correctly, a game that matches an exception will over ride any rules I have?

As part of the rules I have configured, I am limiting games to 1 or 2 players.  But, I also want to manually add some exceptions for games that can be configured via dipswitches to be 2 player (instead of 3 or 4).  An example of this is Snow Bros 2, this game is technically a 4 player game, but you can configure it in MAME via dipswitches to actually act as a 2 player game.

So, I should be able to add an exception for a game that matches the name "snowbro2" (the rom name in the mamelist.txt used by AM), and have it show up in between Snow Bros. and Snow Brothers 3 in my game list, right?

Unfortunately this does not seem to be the case.  If someone could point out what i've done wrong or correct my assumptions, I would be eternally grateful!

I have included my global filter configuration below, hopefully someone can point out what I am doing wrong!

Code: [Select]
rule                 Title not_contains bootleg|prototype
rule                 Category not_contains Electromechanical|Tabletop|Casino|Mature|Quiz|Computer|Microcomputer|Test|Portable|Console|Handheld|Device|Training Board|Synthesiser|Clock|Document Processors
rule                 Category not_equals Misc.
rule                 Year not_contains ?
rule                 Manufacturer not_contains bootleg
rule                 DisplayType equals raster
rule                 CloneOf not_equals .*
rule                 Status equals good|imperfect
rule                 Control contains joystick
rule                 Control contains 2-way|4-way|8-way
rule                 Control not_contains keyboard|mouse|trackball
rule                 Players contains 1|2
exception            Name equals snowbro2


Pages: [1]