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 - rand0m

Pages: [1] 2
General / Additional Fields Added in Romlist (Template)
« on: November 29, 2019, 04:55:25 AM »
As requested (#579) Andrew has added 4 new fields to AM romlists. Additions are Region, Language, Series and Rating. These are placed at the end after buttons:

Previous Romlist Fields/ Headers
Code: [Select]
Current Romlist Fields/ Headers
Code: [Select]
Series and Language can be derived from their respective ini's which are a part of MAME extras. Simply follow the same procedure as that of adding catver.ini or nplayers.ini (additional import files). Region and Rating can be added by using custom dats.

Since fields are a part of romlist they can easily be called through magic tokens and operate just like previous fields. You can grab latest download from daily build downloads thread and it will include these changes (checked).

#579 (github):
Daily build download:

I really wanted these fields included because previous ones were MAME specific, this will really help in organizing console systems. Much thanks to Andrews!

Announcements / Attract Mode 2.6.0 has been released
« on: October 17, 2019, 08:42:38 AM »
Attract-Mode 2.6 has been released and can be downloaded from:

Official Website:
Official Github Repo:

Release Notes/ Changelog:

Commits from v2.5.1 to v2.6.0
Andrew Mickelson (21 commits)

    Bump version to 2.6
    Issue #582 - Fix layout freezing after a month of inactivity
    Small refactor of code for getting artwork images
    Fixed problematic usage of c_str();
    Issue #558 - Added ability to get sort value with fe.game_info()
    Issue #566 - fix filter info update when display changes
    Improved error status checking for scraping
    Fix compile if libcurl not found
    Issue #531 - fix linux packaging typo (libcurl3 -> libcurl4)
    Issue #538 - update compile instructions with curl (windows cross-compile)
    Issue #532 - Initial work to update scraper to new API
    minor re-arrange to minimize windows.h header includes
    Issue #534 - Fixed magic tokens returning incorrect result
    The play state of swf files can now be controlled from a script using the video_playing property
    Speed up swf rendering by reusing a single OpenGL context
    fe.get_art() now returns fallback artwork from the layout (if present)
    Fix crash when error encounterd in the 'script.nv' file
    Refactor window creation and fix black screen on launch
    Include OpenGL version information with 'attract --version' command
    Fixed crash for certain invalid attract.cfg settings
    [Windows] fix a hang when returning from emulator (w/ Intel graphics)

Keil Miller (2 commits)

    Scrape "buttons" elements from hyperspin .xml (#563)
    Added Transition.EndNavigation trigger (#567)

Radek Dutkiewicz (16 commits)

    Fixed reggression in video rendering framerates on Nvidia (#552)
    Additional window modes fixes (#551)
    Fixed low framerate on AMD cards (#550)
    Improved decoding quality of videos with non 1:1 pixel aspect ratio (#548)
    Added Nvidia profile management with optimizations (#529)
    Fixed for windowed modes being rendered at desktop resolution (#528)
    Increased video timeout to 5 seconds (#546)
    Updated manifest for multi monitor mode (#526)
    Fixed compiler errors on non Windows builds
    Replaced Windows version check with macros
    Additional fixes
    Fixed black screen in fullscreen mode on game launch
    Fixed high CPU on video playback and video freezing after resuming from sleep (#520)
    Updated nowide to fix crashing on Windows (#523)
    Layout offset on rotation fix (#512)
    Added new fe_text property msg_wrapped (#507)

Happy Gaming  :D

After so many experiments, finally got Custom Overlay to work. Thanks to omegaman's RoboSpin theme layout.nut. This theme was shared by dmmarti here >

The working code is >

Code: [Select]
//Custom Overlay Menu

//const OVERLAY_ALPHA =190;

// Overlay Surface
local overlay_surface = fe.add_surface(1920, 1080);
overlay_surface.visible = false;

// Overlay Background
local overlay_background = overlay_surface.add_image("images/black.png",0, 0, 1920, 1080);
overlay_background.alpha = 180;

// Overlay Menu Surface
local overlay_menusurface = overlay_surface.add_surface(600, 300);
overlay_menusurface.set_pos(660, 385.5);

//Overlay Menu Background
local overlay_menubg = overlay_menusurface.add_image("images/exit_overlay.png", 0, 0, 600, 300);

//Overlay Menu List Box
local overlay_listbox = overlay_menusurface.add_listbox(0, 40, 600, 300);
overlay_listbox.rows = 6;
overlay_listbox.set_rgb(150, 150, 150);
overlay_listbox.font = "TulpenOne-Regular-Caps.ttf";
overlay_listbox.charsize  = 50;
overlay_listbox.align = Align.MiddleCentre;
overlay_listbox.sel_style = Style.Bold;
overlay_listbox.selbg_alpha = 0;
overlay_listbox.set_sel_rgb( 255, 255, 255 );

//Overlay Menu Title
local overlay_menutitle = overlay_menusurface.add_text("Exit Attract-Mode?", 0, 20, 600, 100);
overlay_menutitle.font = "TulpenOne-Regular-Caps.ttf";
overlay_menutitle.align = Align.MiddleCentre; = Style.Bold;

// tell Attractmode we are using a custom overlay menu
fe.overlay.set_custom_controls( overlay_menutitle, overlay_listbox );

//  The following function shows or hides the display menu properly

fe.add_transition_callback( "orbit_transition" );
function orbit_transition( ttype, var, ttime )
switch ( ttype )
  case Transition.ShowOverlay:
overlay_surface.visible = true;
if ( ttime < 255 )
overlay_surface.alpha = ttime;
return true;
overlay_surface.alpha = 255;
case Transition.HideOverlay:
if ( ttime < 255 )
overlay_surface.alpha = 255 - ttime;
return true;
local old_alpha;
old_alpha = overlay_surface.alpha;
overlay_surface.alpha = 0;

if ( old_alpha != 0 )
return true;
overlay_surface.visible = false;
return false;

Pressing Back on Displays Menu which earlier showed the default exit prompt now shows a custom one.

Note: Tried to use permanent slots for "Yes" and "No" (advance list box) but didn't work, tried shuffle and that too didn't works. It seems that AM expects default setup in this case.

Scripting / How to add "var" in "transition( ttype, var, ttime )"
« on: July 08, 2019, 02:51:14 AM »
Hi, I'm a bit stuck in transition code. Can anyone please guide me in following:

1- How do I add a "var" variable in case of "transition( ttype, var, ttime )"? The following code (a bit modified) is from FrizzleFried's "Now Loading" plugin >
Code: [Select]
function launch_transition( ttype, var, ttime ) {
switch ( ttype )
case Transition.ToNewList:

As per AM wiki
When ttype is Transition.ToNewList, var indicates the filter index offset of the filter being transitioned to (i.e. -1 when moving back one filter, 1 when moving forward) if known, otherwise var is 0.

So I would like to make two instances, one when I press select and move forward in the displays menu (i.e. Platforms > Arcades) and one when i press back (i.e. Platforms < Arcades or Arcades > Platform). I have tried experimenting but can't figure out how/ where to instruct AM that var is +1/ -1.

2- I also don't know if filters (as in AM wiki quoted above) can be used for moving within displays or if the displays listed within Displaysmenu will be treated as rom items (i.e. game).

What I am aiming to do is flash a screen-wide front/ back arrow depending upon the movement within the displaysmenu. I am thinking of making two transition functions of new list one with var +1 and one with var -1.


Scripting / Slice: Out of Range Error (RegEx)
« on: May 24, 2019, 08:29:44 PM »
While using the following code if I move from last filter to first (loop) or move backwards from first filter to last i get the error "Slice out of range". Lets say the filters are Action, Adventure, Horror, Shooter. When I try to go from Shooter to Action (its a loop) I get the error. If I move back from Action to Shooter, I get the same error. No error/ issues while moving within Action - Shooter, the error is only coming up when moving to start or end of loop i.e. before action or after shooter. Can anyone please help in this regard?

The code being used is:

Code: [Select]
//Get First Letter of Title and Adjust Non-Alphabetical Chars
function first_letter ()
local first_char = rstrip(fe.game_info(Info.Title)).slice(0,1);
local expression = regexp("[a-zA-Z]");
if (expression.match(first_char) == true) return first_char
else return "#";

local indicator_text = fe.add_text( "[!first_letter]",7, 0, 40, 40);
indicator_text.font="BebasNeue Book.ttf";
indicator_text.set_rgb(203,203,203); = Style.Bold;
indicator_text.align = Align.MiddleCentre;
indicator_text.charsize = 38;

I am using Leap plugin but doesn't seem like a leap issue because its working within the loop and works without issue in places where some empty filters are "leaped"

This theme is a fork of RetroMode theme. It aims to be light-wieght and extremely thorough including most systems (Console, Arcade or Computers) even those not emulated at the moment.

Video I: Showcasing Arcades & Computers >
Video II: Showcasing Consoles & Handhelds >

Since its very early and theme is WIP expect major changes. The theme utilizes viking's excellent Nostalgia Platforms set and Clear-Logo Silver Ring set. Filters are applied on Nostalgia set to get a more grunge look + original is video while I am using snaps.

Nostalgia Platforms Set:
Clear-Logo Silver Ring Set:

I'll periodically keep updating this thread as the theme develops.

Themes / RetroMania Theme
« on: March 09, 2019, 08:15:33 PM »
This is a theme I have been working on, this video only showcases the DisplaysMenu, Arcades and Computers. I'll update Consoles, Handhelds and Collections menus later as the video was getting too big.

Two considerations behind theme design was to make it light-weight and very thorough, having a display menu for every system even if its not currently emulated. Front-end being used is Attract-Mode, I am also utilizing viking's excellent Nostalgia platforms set (with filters applied) and Silver ring logo set.

This theme is a fork of another theme RetroMode (check my past videos), since both themes utilize same artworks I'll probably be releasing them together. At first I was thinking of adding this theme as another layout of RetroMode but when differences became major I decided to make this a separate theme. This will probably be my main theme and I'll keep on updating it.

 I'll add links to theme download here once the theme is complete. be-warned though, it will take some weeks before a downloadable version is ready.


Themes / Chicuelo Mix Theme Release (v1.1.1)
« on: February 08, 2019, 04:00:35 PM »
Hi guys, I've made a port of Chicuelo's excellent theme on EmulationStation, all the credit for this excellent theme rests with Chicuelo!. This is the first version and an in-depth intro + installation instructions are available at github repo. Please do read the installation instructions as I have created some pre-conf files which MAY OVERWRITE your originals.

Videos of This theme have been shared before, but I am listing them again.

Vid 1:
Vid 2:

I have tried to make it so that new users can paste the zipped contents on top of a fresh AM installation and jump right in. lets see how that works out. ;D

My God!! I forgot to add the download link, sorry guys  :-[ Layout can be downloaded from here >

Its much preferable that you download and make a fresh Attract-Mode folder and paste the contents of downloaded (extracted) zip on top of it, overwriting when asked. Attract-Mode is completely portable and two installations will not effect each other. Most of the things have been pre-configured and after pasting the contents of zip on top of AM folder you will have a working system requiring minimal adjustment. Once you get the hang of things (DisplaysMenu etc) you can then move the theme to your main Attract-Mode Installation folder.

If you only need the layout, download the zip and copy Chicuelo Mix folder to /layouts. Please BEWARE that I have added pre-conf files which will OVERWRITE if whole zip is pasted on top of a working Attract-Mode installation so ONLY copy/ paste the /layout/Chicuelo Mix folder. The theme supports some 60 systems thats why I have added an attract.cfg with pre-conf settings, you may copy parts of it and paste them in your working attact.cfg to save some time. The zip file contains Keil's excellent "Shuffle" plugin which should be placed in AM/modules

PS: This theme has two layout.nut files
layout.nut: This is for DisplaysMenu items (and already pre-conf in attract.cfg)
layout_games.nut: This is for Game Lists, when you have generated/ imported a romlist then:
AM > Settings > Displays > [System Name] > Layout Should be "Chicuelo Mix"
AM > Settings > Displays > [System Name] > Layout Options > Layout File should be "layout_games" (You can change the file by pressing up/ down)

Happy Gaming :)

This theme called "Chicuelo Mix" is a port of Chicuelo's excellent theme for Emulation Station called "Chicuelo". All the credit for the theme goes to Chicuelo, its his baby. I have ported this theme to Attract-Mode and as a token of appreciation/ respect to original author I have tried my level best to keep the port as close to original as possible. There are some changes which I had to make due to differences between working of Attract-Mode and Emulation Station but the aim of v1.0 was to mimic the original in function and artwork as closely as possible. That is why I have not used any artwork in places where it was missing.

A couple of things remain to be ironed out before I put the theme for download. This video displays all artwork of Main Menu, Platforms Menu and System Menu.

Chicuelo Mix (v1.0):

(please watch in 1080, some text might get blurry otherwise).

Scripting / Easy way of forcing Uppercase text
« on: February 04, 2019, 01:06:17 PM »
I found an easy way to utilize uppercase characters for things like [Title], [Overview] etc. Right now the goto methods are:

  • Use a font which is all uppercase. Its the easiest way but if you want to keep uniformity in theme you have to go all capitals, else need to use more then one font which is not desirable in most cases.
  • Save the said text in Uppercase e.g. use Excel to change all titles to Capitals. This also works but you will be stuck with a single theme, moving would mean redoing it all again.
  • Use a function and use .toupper() with text, A great way to do things (you retain single font) but utilizing things like [Title] in shuffle, after the function can become complicated.

I found another way to do the needful, there is an app "fontforge" for creating and editing fonts. Make a copy of font you are using in theme (e.g. Ariel Medium), open the copy in fontforge. Now select and delete the small letters (a -z), copy capital letters (A - Z) and paste them in place of small letters. Go to generate font and save the file naming it something like Ariel Medium Uppercase (save as true type i.e. TTF) . Use this font in places where you want text in all capitals and place it in /layout dir. Couple of things:

  • Most fonts are copyright so only share the modified versions where you are sure font is open source/ or licensed such as to allow modified sharing.
  • Portable version of fontforge is available plus its available on all platforms (Win, *Nix, Mac)
  • Fontforge may show errors when generating font, try saving the font without any modifications if the same errors are reported then can be ignored.


Select & Clear lowercase:

Select & Paste Uppercase in-place of lowercase:

Original Source (ctrlcctrlv 's post):

Scripting / Anyway to Auto-generate Shuffle (plugin) List Size
« on: February 02, 2019, 01:05:18 PM »
Hi currently I am using the Shuffle Plugin as follows:
Code: [Select]
local list = [];
list.push(fe.add_text("[Title]", 120, 400, 400, 60));
list.push(fe.add_text("[Title]", 120, 480, 400, 60));
list.push(fe.add_text("[Title]", 120, 560, 400, 60));
list.push(fe.add_text("[Title]", 120, 640, 400, 60));
list.push(fe.add_text("[Title]", 120, 720, 400, 60));

Is there anyway I can auto-generate Shuffle "local list = [];" by linking it with magic token [ListSize]? So there are no hardcoded slots but slots are generated according to the items in a romlist.

General / Taking Emulation to the next Level!!! Check ESRGAN!
« on: January 26, 2019, 11:28:14 PM »
I am just amazed by the early results for ESRGAN (Enhanced Super Resolution Generative Adverserial Network,) which is an up-scaling method (like XBRZ) but immensely better. Just read about it here:

(read the thread till the end, many screenshots of ESRGAN actually working)

Here is Resident Evil 2 with ESRGAN:

Here is a thread discussing Final Fantasy IX, interesting part is comparison between pc/psx & upscaled:
Lastly here is a blog with instructions about using ESRGAN (on win):

Scripting / Transition with Input State not workign as expected
« on: January 24, 2019, 09:40:25 AM »
Hi, I am using the following code:

Code: [Select]
local image_up = fe.add_image ("images/up.png", 430, 44, 0, 0);
local image_down = fe.add_image ("images/down.png", 430, 1014, 0, 0);
image_up.visible = false;
image_down.visible = false;

function blink_transition( ttype, var, transition_time )
{ switch ( ttype )
case Transition.ToNewSelection:
   if (fe.get_input_state("Up")==true)
image_up.visible = true;
   else if (fe.get_input_state("Down")==true)
image_down.visible = true;
      return true;

   return false;

What I am trying to do is to show images of up-arrow and down-arrow when I press up and down. I used the code in layout directly because using a plugin applies the effect on all layouts in use (not isolated). Can anyone please tell me why it isn't working? Does transition require further instructions?

Scripting / Exporting Game Info on Signal Questions!
« on: January 23, 2019, 03:24:13 AM »
Hi, I am working on a plugin which exports/ pastes gameinfo to a text file on signal (button press). I found lots of help from this thread > (#4, raygun).

The code from raygun is:
fe.add_transition_callback( "gamename_transition" );
function gamename_transition( ttype, var, ttime )
        if (( ttype == Transition.EndNavigation )
                || ( ttype == Transition.StartLayout ))
                system( "echo '" + fe.game_info( Info.Name ) + "' > ~/.attract/current_name.txt" );
                system( "echo '" + fe.game_info( Info.Title ) + "' > ~/.attract/current_title.txt" );
                system( "echo '" + fe.game_info( Info.System ) + "' > ~/.attract/current_system.txt" );
        return false;

Since I wanted the export to text on signal, I've tweaked raygun's code a bit. My code:

fe.add_signal_handler(this, "on_signal");
function on_signal( sig1 )
   if ( sig1 == "custom3" )
        system( "echo '" + fe.game_info( Info.Name ) + "' > ~/.attract/current_name.txt" );
     return true;
    return false;

I am facing following issues with the code and can use some help from more experienced members.

1) Whenever I press the signal button, cmd flashes for a second. Is it possible to do this in background with cmd completely hidden?

2) What I am aiming for is:
  a) on signal press
  b) search if "selected" exists in text file or not
  c) if "selected" exists, do nothing.
  d) if "selected" doesn't exist add it to the end of the list.

After searching thoroughly I can't figure out if the above mentioned code is even possible in AM. In the examples I've seen search functions are being called outside AM in batch or script, while the data (game info) is from AM and can't be accessed directly via batch/ script. So I am in a quandary how to select data from within AM and use batch/ script on it - or whether the above mentioned can be done from within AM directly. Can any one please guide me in this regard?

Hi, I am tinkering with a layout and reached a dead-end. Some help from experienced members will be much appreciated in following.

1- Creating effects on signal: Is there anyway to execute certain effects/ images when a specific key is pressed? I have found excellent options in this thread >  but the examples given require the use of plugin "Pop up" which has some additional problems. For one, we have to create a different instance (plugin) for every image/ effect on different key press. Secondly and more importantly activating the plugin means that those effects (AM based) will be showing in all layouts/ themes throughout Attract-Mode, there is no way to isolate the effects to certain layout. I would much rather that image on key-press is present within the layout (not ported to plugin) and a way to bind multiple actions with multiple key-presses.

2- Lets say I have a list consoles which list all consoles I've configured, is there anyway to tell the total number of roms within a Single console when I select it on consoles menu? i.e. from outside without entering the actual console in question. Lets say the consoles menu has an item Sega Genesis, is it possible to show the total number of items in Sega Genesis when I select that in consoles menu? Wiki lists two items of interest fe.list.size and fe.filter.size but I dont know how to create the instructions for "[selected item] find [list.size] [print] on screen".

3- Like text is there anyway to force a centered position for images? Right now the default position for any images seems to be topleft (because it seems the flow to the right), anyway to position them to a central location, say (700, 500, 0, 0) where (700, 500) is the point right in middle and image occupies area around it (for lack of a better example, like a dot in middle of circle).


Pages: [1] 2