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 / FPS Monitor
« on: February 09, 2020, 11:31:46 PM »
Latest versions of Attract-Mode include a handy plug-in by Oomek called FPS Monitor. This monitor can be turned on through Configure > Plugin > FPS Monitor> Enabled yes. In the same page add a key for turning FPS Monitor on and off, if you have not mapped "reload" to any key then you can add a key for reload here too. I found Graph size "Large" to be best.

When FPS Monitor is turned on in settings, it will auto-run on start (I wish default was off) go through your layout and keep an eye on the FPS Monitor, at any place where you see FPS drops (Usually between 50-59) check the layout code and see whats causing the drops. You can also narrow it down by turning off artwork one by one. Thats where reload key comes handy, after any changes in layout you can press the reload key and layout will reload with new changes.

Depending on the reason you might need to convert png to jpg or 8bit png or re-compress through website like tinyPNG (thanks Enkak!). Or you might want to resize if the image res is huge, specially when you are using reduced res output of said image in layout. You might also want to use something like Transition.EndNavigation.

BTW Videos WILL cause FPS drops, best to do this with videos disabled. I don't know of anyway to minimize drops on videos right now, though in some tests I did wmv caused minimal drops then avi them mp4. But this is on Win* system might be different on *nix. 

As Keil and Zpaolo mentioned in comments further down, multiple surfaces (specially nested) and heavy shaders can also cause slowdowns/ FPS drops, you can comment out one item at a time and reload/ check.

Themes / RetroDiction Theme v1.0 Released
« on: January 03, 2020, 11:34:38 PM »
Hi I have just released the first beta for RetroDiction. This theme is a fork of RetroMode theme.  Retrodiction's dictionary meaning is "using present information to make an assertion about the past; an instance of such an assertion" and it can also be thought of as a word play on retro addiction.

This theme aims to be light-weight and extremely thorough including most systems (Console, Arcade or Computers) even those not emulated at the moment.

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.

Link to Viking's Original Work
Nostalgia Platforms Set:
Clear-Logo Silver Ring Set:



Displays Menu:

Platforms Menu:

System Menu:


Game Launcher:

Custom Options Menu:


Arcades & Computers

Consoles & Handhelds

Control Module & Game Launcher

Download from GitHub:
Currently no release candidate, use "Clone or Download" to download the zip file. The file will be around 1.2 GB as it will include all the system flyers and logos.

1. Download and extract the latest version of Attract-Mode from this thread (first Porst):
2. Download this layout, unzip it and place in Attract-Mode folder, overwriting as needed. Overwriting is safe in most cases but take a look at contents just in case.

Experienced Attract-Mode User
3. Run Attract-Mode and link the displays to appropriate layout nut file.
        layout.nut: The main/ start display
        layout_platforms.nut: Used in platforms i.e. Arcades, Computers, Collections, Consoles and Handhelds
        layout_system.nut: Used in system e.g. Atari 2600, Sega Game Gear, MAME etc
        Note: You can use the and attract.cfg in /extras either directly or in case of later as a template

New Attract-Mode User
3. Copy attract.cfg and from /extras to Attract-Mode folder root. This will setup all displays and controls.


Note: Controls should be modified in attract.cfg for these to work. Either modify the controls in your attract.cfg existing in root folder of Attract-Mode or copy the attract.cfg in /extras of download and use it or use a custom control config ii AM command line arguments and point to /extras for cfg file.

Displays Hierarchy

Filters Hierarchy

  • Entering any System Menu, Atari 2600 in above case, will always open All Filter Display unless user moves between System Menu and Platform menu in which case last opened Filter Display is opened when moving from Platform Menu to System Menu.
  • All filter display is the default filter display if no other filter displays are configured.
  • After All filter, rest of the filters are accessed in an alphabetical order i.e. A > B > C ...
  • Filter Displays are in a loop so moving forward from last filter will open first filter and moving backward from first filter will open the last filter.
  • Using Leap plugin allows users to skip empty filters this allows for creating a default-display.cfg which creates all the filters in use. This allows for easier addition of systems as system pick default values from default-display and if a filter display has no roms within in rather then showing an empty filter display leap skips/ jumps over it.
  • This organization setup with D-pad set to next/ previous letter and next /previous page allows to acces desired item in a very efficient manner and flows naturally just like moving between folders and sub-folders. Though for best utilization this requires one item to be listed in only one category requiring manual edit as most online sources don't work this way.

Standard Filters
All (default)Lists all items in all categories/ filters in a system
ActionAction and Multiple genre items like Metal Gear Solid
AdventureAdventure items including visual novels, text adventures etc
Beat 'Em UpBeat 'Em Up (brawlers)
CardsAll Card games go here. Most retro PC systems have enough titles to warrant a place
FightingFighting titles go here including wrestling, boxing etc
HorrorHorror titles go here, this one is subject based rather then game mechanic based
MahjongMahjong titles go here, again a huge number of titles which warrant a separate category
PlatformAll platform titles go here including run 'n gun
PuzzlePuzzle titles
RacingRacing titles
RhythmRhythm based titles
RPGRole playing titles
ShooterShooter titles including shoot 'em up (vertical or horizontal rotation) and FPS go here
SportsSports based titles
StrategyStartegy items

Note: Layout has specific icons and flyers for the above mentioned category filters, adding new ones is simple but retaining the layout design will require new icons and flyers for additional categories.

I'll update the thread with relevant information soon.

General / Videos on Win Platforms
« on: December 19, 2019, 08:25:11 PM »
I have just tested and AM is noticeably faster when I am using avi or wmv format videos. It stutters and slows down while fast scrolling when using .mp4 format vids. I am on win platform (8.1) and using dxva2 video decoder. Does anyone else have the same issue?

Other tests which might be useful for comm:

  • At my end best to worst (scrolling speed) video formats: wmv > avi > mp4
  • Size (resolution) makes no difference whatsoever, I thought that decreasing video resolution in display was causing stutter but tested with increasing/ decreasing vid res and it made absolutely no difference.
  • Vids in background also don't make any difference i.e. other items like text or list on top of video (didn't check with surfaces!)
  • Video location does matter, if vids are on another HD (not partition) then AM, there is a slight slow-down which goes away within a minute.

You can check this by simple conversion of mp4 to avi via ffmpeg. If you have added ffmpeg in env/ path following commands will work as it is. If not then download ffmpeg and place them in the folder with vids. Run the commands in command-line opened at video location.

Single Video Conversion
Code: [Select]
ffmpeg -i "Vid-Name.mp4" -c:v copy -c:a copy "Vid-Name.avi"
Bulk Video Conversion (folder)
Code: [Select]
for %%a in ("*.mp4") do ffmpeg -i "%%a" -c:v copy -c:a copy "newfiles\%%~na.avi"
(for second command create a newfiles folder first at location)

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):

Pages: [1] 2