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 »

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"


Themes / RetroMania Theme
« on: March 09, 2019, 08:15:33 PM »

Themes / Chicuelo Mix Theme Release (v1.1.1)
« on: February 08, 2019, 04:00:35 PM »


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