Giter Site home page Giter Site logo

mickelson / attract Goto Github PK

View Code? Open in Web Editor NEW
389.0 389.0 113.0 17.38 MB

A graphical front-end for command line emulators that hides the underlying operating system and is intended to be controlled with a joystick or gamepad.

Home Page: http://attractmode.org

License: GNU General Public License v3.0

Squirrel 8.63% GLSL 0.06% C++ 68.15% C 22.37% Makefile 0.38% Objective-C++ 0.03% Python 0.14% Shell 0.25%

attract's People

Contributors

akufox avatar arzoo1 avatar banemon avatar benetnath avatar cmitu avatar cosmicdan avatar curioustorvald avatar davewongillies avatar davide125 avatar djrobx avatar eclairevoyant avatar enverex avatar flodef avatar h0tw1r3 avatar joyrider3774 avatar keilmillerjr avatar kenluotw avatar mbalfour avatar mbarnes avatar michaelem avatar mickelson avatar oomek avatar ozfalcon avatar philenotfound avatar progets avatar robloach avatar spilinek avatar susnux avatar urbanechimp avatar xinxinxinxinxin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

attract's Issues

When returning to attract after playing a game, the screen saver is shown

After playing a game for more than 10 minutes, when I exited back to attract, the screen saver was active. It would make more sens to me to come back to the selection screen. It also seems that only controls that are mapped to an action in attract will exit the screen saver. To test this I set the timeout to 10 seconds, and tried hitting keys on the keyboard that aren't mapped to actions in attract (I tried p,o, and i) and the screen saver didn't exit. I pressed 1 and it exited right away.

Filter CHD-based games

It would be useful to be able to filter game lists depending on whether a game is CHD-based.
I guess this information could be gathered from the -listxml / -listsoftware output.

attract.exe crashes with DEP on

If Microsoft data execution prevention is turned on, Attract.exe will crash on a consistent basis. I was able to determine this by reading through event logs and crash dumps. The fix is to exclude attract.exe or turn DEP off completely. The former solved the issue for me and now no more crashes. This raises a question though about how the app handles memory management. That is if I understand DEP correctly. I am not a programmer but I do have a lot of IT experience. I know squirrel supposedly handles memory allocation and garbage collection better than lua for example. Curious to read what your take on this is, At least there is a work around for people who have DEP turned on. So, I just wanted to spread the word. Thanks for creating an amazing front-end for us arcade lovers. I am now using attract instead of hyperspin because of its simplicity and flexibility. Looking forward to your future updates and enhancements.

Unable to build on OS X: missing file

OS X 10.9.0, Xcode 5.0.2, Attract Mode 1.0.2. Using the tar.gz sources.

Trying to run make gives the following:

herpaderp:attract-1.0.2 casm$ make
mkdir obj
g++ -c -o obj/fe_base.o src/fe_base.cpp -O2 -Iextlibs/expat -Iextlibs/squirrel/include -Iextlibs/sqrat/include -DNO_FONTCONFIG
In file included from src/fe_base.cpp:24:
src/fe_util.hpp:28:10: fatal error: 'SFML/Graphics/Color.hpp' file not found

include <SFML/Graphics/Color.hpp>

     ^

1 error generated.
make: *** [obj/fe_base.o] Error 1
herpaderp:attract-1.0.2 casm$

Checked the source tree, and, sure enough, the file is not there.

Slow loading images

Text lists and the "orbit" layout are extremely quick to use, but as soon as I enable images there's about half a second lag when scrolling between games.

Windows 7 64bit

Extra filters

Would be handy to be able to filter by number of displays (see multiscreen games), and by whether raster or vector.

Request: filter/display/sort bookkeeping info

There's a feature in Mala I love where it creates an automatic list of the most launched games.

It'd be nice if I could do similar with Attract-Mode. Filter as normal > sort by asc/desc (any field) > top/last (10,25,50,100)

Would need to capture launches somehow though - perhaps by abusing the tagging system a bit?

MAME itself captures coin inserts in the .cfg files for each game. Maybe when generating the MAME romlist AM could pull in this metadata as well?

Artwork Perspective

Not a hundred percent sure where or how to categorize this...
We have the ability to rotate and shear artwork, but no way in particular to add/modify some form of perspective to artwork.
How I mean this is, for example, the left edge need to be shorter than the right edge of a screenshot to fit it into a photo of a cabinet, perhaps taken at a 3rd angle or similar.

It occurs to me it would be similar to rendering on a polygonal surface with the dimensions needed. No idea how feasible this is.

Request wrap in Option menu

When you reach the end of the option menus and press down, it doesn't wrap back to the top, you have to scroll all the way back up. Vice versa for top to bottom.

CHD-only games are not listed

CHDs are typically store uncompressed alongside the rom zip.

MAME\roms\sfiii3.zip
MAME\roms\sfiii3\cap-33s-1.chd
MAME\roms\sfiii3\cap-33s-2.chd

The zip file is detected within the emulator path (MAME\roms), so the "sfiii3" entry gets populated in the romlist.

However, some games only consist of a CHD file (and 3 three G-Net files in this particular case):

<game name="xiistag" sourcefile="taitogn.c" romof="taitogn">
    <description>XII Stag (V2.01J)</description>
    <year>2002</year>
    <manufacturer>Triangle Service</manufacturer>
    <biosset name="v1" description="G-NET Bios v1" default="yes"/>
    <biosset name="v2" description="G-NET Bios v2"/>
    <rom name="flash.u30" merge="flash.u30" bios="v1" size="2097152" crc="c48c8236" sha1="c6dad60266ce2ff635696bc0d91903c543273559" region="biosflash" offset="0"/>
    <rom name="flashv2.u30" merge="flashv2.u30" bios="v2" size="2097152" crc="cae462d3" sha1="f1b10846a8423d9fe021191c5876190857c3d2a4" region="biosflash" offset="0"/>
    <rom name="coh-3002t.353" merge="coh-3002t.353" size="524288" crc="03967fa7" sha1="0e17fec2286e4e25deb23d40e41ce0986f373d49" region="maincpu:rom" offset="0"/>
    <disk name="xiistag" sha1="586e37c8d926293b2bd928e5f0d693910cfb05a2" region="pccard:ataflash:image" index="0" writable="yes"/>

No MAME\roms\xiistag.zip exists, so "XII Stag (V2.01J)" will not be listed.
Adding .chd to the romext does not solve the issue because sub folders are not parsed.

Filter rule regex implementation

The following rule is not working as expected:

rule    Title contains \(.*(USA|World).*\)

It should match titles such as "Captain Silver (USA)" but it does not, because .* (any char zero or more times) is treated as .+ (any char one or more times).

 \(.*(USA|World).*\)

gives the exact same result as

 \(.+(USA|World).+\)

Is the regex implementation not posix compliant?
Am I missing something?

Request for windowed mode

I'd like the option of whether to run fullscreen or windowed. I'm not sure of the logistics of if you can do a "windowed, fullscreen windowed, or exclusive fullscreen" option, but that would be ideal.

The CloneOf field of the MESS romlists is incorrectly populated

The CloneOf field of the MESS romlists is incorrectly populated with the name attribute instead of cloneof.

-listsoftware XML output:

<software name="aokidenp" cloneof="aokiden">
        <description>Aoki Densetsu Shoot! (Jpn, Prototype)</description>
        <year>1994</year>
        <publisher>KSS</publisher>

And the result in the romlist is the following:

#Name;Title;Emulator;CloneOf;Year;Manufacturer;Category;Players;Rotation;Control;Status;DisplayCount;DisplayType
aokidenp;Aoki Densetsu Shoot! (Jpn, Prototype);mess-snes;aokidenp;1994;KSS;;;;;;;

You can see that both Name and CloneOf are populated with "aokidenp".
This means that we can't filter out clones for MESS romlists, because this field is populated even for games that are not marked as clones in the XML output:

<software name="shooterp">
        <description>Shooter (USA, Prototype)</description>
        <year>199?</year>
        <publisher>Punk Development</publisher>

Result:

#Name;Title;Emulator;CloneOf;Year;Manufacturer;Category;Players;Rotation;Control;Status;DisplayCount;DisplayType
shooterp;Shooter (USA, Prototype);mess-snes;shooterp;199?;Punk Development;;;;;;;

Z rotation for objects

Love your work here :) I find I'm missing a few things though: font attribute for text objects, z rotation for objects, autostart last game on launch , and the ability to hide bracketed information in game titles. I know the latter can be done by editing the list files but it'd be nice to have it built in.

Tagging / Custom list creation (extension of favourites)

From discussion on issue #14:

Another thought - instead of a specific favourites list, would it not be
more flexible to have a menu on screen that upon pushing the add to
favourites button allows you to select from any user generated (rather than
system generated) list to add the game into? This way multiple favourites
lists could be maintained.


Favourites as currently implemented are per romlist, so you could maintain multiple favourites lists by duplicating your romlists. I like your idea, it could be a custom tagging type thing. I'll add it as a issue for a future version.

Snap OR video

May be just me, but I'm not a fan of how a snap gets suddenly replaced by a video if movie_enabled is true.

My preference would be to check whether a snap and/or video exists, and only display the snap if the video doesn't. Give priority to the video.

History.dat

some discussion over on Arcade Otaku has led to the idea that being able to have a filter based on history.DAT contents would allow for some really fancy lists to be generated automatically - games made by a certain programmer, military games, the kind of info not found in carver.ini

Nearest matching artwork

An option to disable this (or permanently disabling it) would be nice.

MAME example - game name is pass. No matching flyer exists, but one for Passing Shot (passsht) does. Frontend displays the flyer for Passing Shot.

Filters requiring program restart?

I've noticed when creating filters a good 50% of the time they won't be applied correctly until I've restarted the program. Not a huge problem, but does make experimenting with them a bit tedious. Ones on "Rotation" are usually an issue.

Attract mode (Cycle through user collection)

Appreciate your great work!

I suggest that adding 'attract mode' feature to the program, that is,

  1. Randomly pick a game
  2. Play the corresponding video, if any. Then return to 1, if the playback is finished
  3. If there are no corresponding video, wait for N seconds (this may be adjusted through option), then return to 1.

So basically, it is the 'attract mode' for the 'attract-mode' frontend :)

Possible options would be :
(1) Start / End random-cycling : In the control key setup
(2) Display time for non-videos(sec) :
(3) Jump to next game if video ends : Yes/No
If No, then use (2) (jump to next game, regardless of video status)
(4) Jump to another list : Yes/No
(5) Jump to another filter : Yes/No

Again, thanks for your effort! This is one of the best software I have used so far.

get_input_state and input_map

It seems as though get_input_state only allows you to specify static button names. Is it possible to read or incorporate the attract.cfg 'input_map' settings so you can know if the user pressed the "select" key (whatever they have it set to), etc..

Screen is not redrawn after refocusing window (Windows)

If you switch to another window in Windows (alt-tab), when you try to switch back to attract mode (alt-tab or click the taskbar button to focus), it does not redraw the screen until a key is pressed.

This happens for me on both Windows XP (ATI Radeon 2600) and Windows 8 (Intel HD 3000).

better filter/list documentation

probably just needs a wiki page. request:

The improvement request is for a page on Filters on your website,
because I find it difficult to understand the logic behind them and
Lists

Allow sorting rom lists by game name instead of rom name

It appears that at least the mame rom list is sorted by the rom name, instead of the game name. It would be nice if, for example Donkey Kong (dkong) was before Double Dragon (ddragon). I could sort the list using the unix "sort" command selecting the correct field to sort on, but it would be nice if it were created sorted.

Squirrel: How to detect null objects?

I made a tick callback that switches between art on my layout every 10 seconds, but I want to ignore art that didn't resolve (like if there's no cabinet image). Right now, if it doesn't resolve, it shows a blank image for 10 seconds. How can I detect when fe.add_artwork() returns an empty image?

Launching .lnk for PC Games

Hi,

great frontend, and i would be glad to use it once i'll find how to launch .lnk for my PC games on the cab.

I was able to generate a list of .lnk, but did not find how to lanch it.
I've tried various option, with working command in cmd, like "blabla.lnk", but was not successful.
Can someone indicate me the good parameters in the cfg ?

Thanks :)

Cosmetic suggestion: change "screen" to "snap"

By default MAME/MESS creates screenshots in the "snap" folder.

Using "artwork snap" and "$HOME/.mame/snap" rather than "artwork screen" would be more coherent with standard pathing.

Default tayouts would also need to be switched.

No big deal if not - screen/screens just seems a bit arbitrary.

Name filter

I'm trying to filter out Darius and Darius 2, but keep G-Darius.

This filter doesn't work:
Name not_equals darius|darius2

It keeps Darius 2...

Request: Resolve Windows shortcuts

Sort of a "would be nice" request :) Not sure if this is something you can correct based on the libraries or build tools you are using:

This is pretty common with other programs where "soft" links (Windows shortcuts) don't resolve but "hard" links do. Right now, you can create hard links in Windows to resolve correctly:

mklink /D C:\attract-mode\layouts\mylayout C:\dev\attract-mode\layouts\mylayout

If it resolved "soft" links, a user could have layouts, plugins, etc in a different folder and just create a Windows shortcut to the folder in layouts\ or plugins.

XP64 glitches

At least - they're common to the two XP64 Ati 4350 machines I have but don't occur on Win7 or Linux.

  1. I get graphical corruption when starting the front end. See https://plus.google.com/106019571274193779309/posts/bqdj74ctxxd
  2. The recently added Exit command can't execute anything except the most basic of commands known by cmd.exe - it won't execute any external programs, even if they're included in a batch file.

Naming convention for Mac OS X

Minor thing, but fairly prevalent: references to OS X appear stylised as OS-X throughout the documentation and source. There's no hyphen in its name - it should appear as 'OS X'.

Import rom lists from other frontend formats

A couple of requests for this.

From lettuce @ byoac forum:

Any chance of the program using xml file in the future for romlists so it works with programs like romlister?

Email from v8motorhead:

G'day mate.
Loving your Attractmode FE. Quick, easy to use, powerful.
I do have a request though. The ability to read or export rom and emulator lists to XML in the same format which HyperSpin uses.
The reason I ask this, is to be able to use HyperlaunchHQ with ease.

It's either that or write a plugin for HLHQ, except I'm no good with C#, and although I kind of know C/C++ enough to read code and understand it. I'm not a good programmer.

Are you able to do this for us?
What would be even better is if Attractmode could read/save XML in the Hyperspin format rather than in CSV style.

Cheers mate! Keep up the great work.

attract.exe crashes with DEP on

If Microsoft data execution prevention is turned on, Attract.exe will crash on a consistent basis. I was able to determine this by reading through event logs and crash dumps. The fix is to exclude attract.exe or turn DEP off completely. The former solved the issue for me and now no more crashes. This raises a question though about how the app handles memory management. That is if I understand DEP correctly. I am not a programmer but I do have a lot of IT experience. I know squirrel supposedly handles memory allocation and garbage collection better than lua for example. Curious to read what your take on this is, At least there is a work around for people who have DEP turned on. So, I just wanted to spread the word. Thanks for creating an amazing front-end for us arcade lovers. I am now using attract instead of hyperspin because of its simplicity and flexibility. Looking forward to your future updates and enhancements.

roms in multiple directories support

request:

About my own feature request, in my setup the main "roms" directory
contains 70 subdirs - one for each system - and MAME sees them via the
mame.ini config file.
Sadly in Attract-Mode pointing the rom path to the main directory
"roms" doesn't work, so I made 70 "MAME (%system%)" emulators - each
pointing to its own subdir.
It works, but it's also a very tedious task and not so elegant indeed...

Shutting down Windows causes crash

If I alt-tab out of the front end to Windows, then tell Windows to shut down - attract mode crashes and prevents the shutting down.

The same occurs if pressing the power button to do a soft poweroff.

Launching mame : Unable to create the Direct3D device

Mame launches fine from the command line, no issues. Many different versions of Mame work fine. However, when launching via the frontend, I get a black screen. If I alt-tab, the Mame window becomes active and runs fine. If I alt tab through the active windows while Mame is running, there is also a DOS window with the message 'Unable to create the Direct 3D device, repeated many times. If I alt-tab back to the Mame window and escape back to the frontend the DOS window disappears. Strange thing is, after a reboot, the frontend works as intended and launches Mame just fine but only once, then the above problem occurs until I reboot. I've used all the available layouts, including a very basic one with no fancy transitions and the problem still persists.

Brilliant work BTW :)

Extra joystick inputs

I've a stick that maps in Windows as the POV Hat - the frontend cannot see this input.

It also has 13 buttons and I'm unable to see the 13th.

Aspect ratio wrong when rotated

Surprised no-one has mentioned this yet! When a layout is rotated the aspect ratio goes screwy throughout. You can see this even with the built in "empty" layout and configuration menu - the font rendering is stretched vertically

It's not so bad on a VGA or higher resolution, it's stretched but usable. On a 15KHz 320x240 (or lower) the font rendering becomes so bad as to make it illegible.

Issue with mame seems stuck behind..

I set up one rom and mame emulator. Upon opening the rom from the list, nothing happens, however if I swap over to a new tty and back mame shows up fine.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.