How do I enable the attract-mode intro video?

I had a little downtime at lunch today so I made a new intro video for the quasicade.

This video will play immediately as attract mode loads, before it shows the wheel.

This is great for showing someone the machine start up for the first time. You can really build some hype before showing them the wheel interface.

Here’s the clip:

Note: the killer music here is The Algorithm.
Check him out: https://www.the-algorithm.net/

Adding the clip to attract-mode is super easy.

Just upload it into your /home/USERNAME/.attract/media/video folder in mp4 format (make sure it’s owned by the user that’s running attract-mode)

Then, in attract mode, enter the menu, select INTRO:

Set Play Intro to YES
enter the path to your video intro in the Default Video section and apply.

Note: you can add other shapes of videos specifically if you wish (e.g. your screen is 9×16 vertical)


How do I install Lubuntu 16 for MAME Cabinet?

Lubuntu 16.04, MAME 0.179, and Attract-mode 2.20 on older hardware:

We’re still using the old HP DV9700 series entertainment laptop for this example, it’s pretty old at this stage..

Here are some details:

ManufacturerHewlett Packard
Intel(R) Core(TM)2 Duo CPU T5550 @ 1.83GHz
Intel(R) Core(TM)2 Duo CPU T5550 @ 1.83GHz
Intel(R) Core(TM)2 Duo CPU T5550 @ 1.83GHz
Hard Drive250GB 7200RPM (Replaced with new)
MediaBluRay / DVD-RW+-
Video Memory1024MB GDDR2
Video GPUNVIDIA Corporation G86M [GeForce 8600M GS]

I just pulled the hard drive so the hyperspin install could stay intact.

Step 1: Make your linux installer.

You’ll need an empty flash drive of at least 4G capacity, I used unetbootin and created a lubuntu installer. Here’s how:

Get the UNetbootin package for your operating system: https://unetbootin.github.io/

Start UNetbootin (with administrator level permissions if needed).

Select the Lubuntu Distrubution 16.04_live (Select _x64 if you want to install 64 bit mame, which we do in this case.)

Be sure to select the proper USB drive mountpoint above.

If your usb flash disk has been used before, it’s best to format it first.

If you have to format flash media I recommend the official SD formatter at sdcard.org

UNetbootin will load the bootable lubuntu image onto that USB stick and tell you when it’s done.

Step 2: Boot the linux installer and install Lubuntu:

Most semi-ancient machines can boot to USB volumes, but some need a special key or bios setting enabled.
On this machine it was pressing f10 at boot time to select a boot device.

I’ll link outward to the official docs for installing lubuntu, they did a great job at explaining it:

note: it’s easiest if you DON’T encrypt homedir, and you tell it to auto-login your user.


The time it takes depends a lot on your hardware and the speed of your flash drive. But it’s not too bad to perform the install.

Step 3: Boot up and install some tweaks and tools: (Technically Optional)

Some of these are just things I did that I find useful for managing the system.

  • remote SSH access for remote management
  • VNC for remote-screen access over the network
  • SSH Greeter (stolen from RetroPie)

Install OpenSSH server for remote management:

Open LXterminal and use these commands to install and configure.

sudo apt update
sudo apt install openssh-server
chkconfig sshd on
ufw allow 22

the “ufw” command allows connections to port 22 through the firewall

You should be able to connect to your lubuntu host from the network, use puTTY on windows or terminal on mac or linux.

A quick way to find your ip address on lubuntu is:

 ifconfig |grep -w inet

Then, you can use your remote machine to connect over SSH


x11VNC to remotely manage system:

Open LXterminal and use these commands to install and configure.

sudo apt install x11vnc

This is probably a machine on your home network, but you should create a password for your user:

x11vnc -usepw

This command will set the password file on it’s first run.

Your user should already be set to auto-login, so you should be able to start x11VNC remotely when you need it.
SSH to your machine, Start X11 VNC with Password, use VNC client to log into it.

The following command will start an x11vnc session in your ssh session or terminal.

x11vnc -usepw

by default it should open port 5900 for VNC

SSH Greeter (Super Optional)

This is completely unnecessary. But I like to see this info when I first log into SSH. When you log into a RetroPie system with the SSH Greeter tweak installed you get this nice ascii art greeting with some quick system facts. I’ve modified it for this install.

At a glance I can see if I have updates, What my filesystem space looks like, How long the machine has been up, Temps etc.

There’s a hidden file in your Lubuntu user’s home directory that you’ll want to paste the code below into.

NOTE: you can seriously screw up your install if you do this wrong, if you’re not comfortable with linux, you might want to skip this step.

Do this from an SSH session or Terminal window:
I prefer editing text in VIM so I installed it first (sudo apt-get install vim) but you can use Nano or some other text editor if you prefer.

cp ~/.bashrc ~/.bashrc.backup
sudo vim ~/.bashrc

Next, scroll to the absolute bottom of the file. You’ll want to paste the following code in (Press “I” to enter VIM insert mode first):


function quasicade_welcome() {
    local upSeconds="$(/usr/bin/cut -d. -f1 /proc/uptime)"
    local secs=$((upSeconds%60))
    local mins=$((upSeconds/60%60))
    local hours=$((upSeconds/3600%24))
    local days=$((upSeconds/86400))
    local UPTIME=$(printf "%d days, %02dh%02dm%02ds" "$days" "$hours" "$mins" "$secs")

    # calculate rough CPU and GPU temperatures:
    local cpuTempC
    local cpuTempF
    local gpuTempC
    local gpuTempF
    if [[ -f "/sys/class/thermal/thermal_zone0/temp" ]]; then
        cpuTempC=$(($(cat /sys/class/thermal/thermal_zone0/temp)/1000)) && cpuTempF=$((cpuTempC*9/5+32))

    if [[ -f "/opt/vc/bin/vcgencmd" ]]; then
        if gpuTempC=$(/opt/vc/bin/vcgencmd measure_temp); then

    local df_out=()
    local line
    while read line; do
    done < <(df -h /) local rst="$(tput sgr0)" local fgblk="${rst}$(tput setaf 0)" # Black - Regular local fgred="${rst}$(tput setaf 1)" # Red local fggrn="${rst}$(tput setaf 2)" # Green local fgylw="${rst}$(tput setaf 3)" # Yellow local fgblu="${rst}$(tput setaf 4)" # Blue local fgpur="${rst}$(tput setaf 5)" # Purple local fgcyn="${rst}$(tput setaf 6)" # Cyan local fgwht="${rst}$(tput setaf 7)" # White local bld="$(tput bold)" local bfgblk="${bld}$(tput setaf 0)" local bfgred="${bld}$(tput setaf 1)" local bfggrn="${bld}$(tput setaf 2)" local bfgylw="${bld}$(tput setaf 3)" local bfgblu="${bld}$(tput setaf 4)" local bfgpur="${bld}$(tput setaf 5)" local bfgcyn="${bld}$(tput setaf 6)" local bfgwht="${bld}$(tput setaf 7)" local logo=( "${fggrn} _ ${fgrst} " "${fggrn} /\ \ ${fgrst} " "${fggrn} / \ \ ${fgrst} " "${fggrn} / /\ \ \ ${fgrst} " "${fggrn} / / /\ \ \ ${fgrst} " "${fggrn} / / / \ \_\ ${fgrst}" "${fggrn} / / / _ / / / ${fgrst}" "${fggrn} / / / /\ \/ / ${fgrst} " "${fggrn} / / /__\ \ \/ ${fgrst} " "${fggrn}/ / /____\ \ \ ${fgrst} " "${fggrn}\/________\_\/ ${fgrst} " "${fggrn} ${fgrst}" ) local out local i for i in "${!logo[@]}"; do out+=" ${logo[$i]} " case "$i" in 0) out+="${fggrn}$(date +"%A, %e %B %Y, %r")" ;; 1) out+="${fggrn}$(uname -srmo)" ;; 3) out+="${fgylw}${df_out[0]}" ;; 4) out+="${fgwht}${df_out[1]}" ;; 5) out+="${fgred}Uptime.............: ${UPTIME}" ;; 6) out+="${fgred}Memory.............: $(grep MemFree /proc/meminfo | awk {'print $2'})kB (Free) / $(grep MemTotal /proc/meminfo | awk {'print $2'})kB (Total)" ;; 7) out+="${fgred}Running Processes..: $(ps ax | wc -l | tr -d " ")" ;; 8) out+="${fgred}IP Address.........: $(ip route get 2>/dev/null | head -1 | cut -d' ' -f8)"
                out+="Temperature........: CPU: $cpuTempC°C/$cpuTempF°F GPU: $gpuTempC°C/$gpuTempF°F"
                out+="${fgwht}I am quasicade, Feed me quarters.${fgrst}"
    echo -e "\n$out"


Press ESC to exit INSERT mode when your modifications are done.

Next type “:wq” to write the file and quit VIM
You should see the greeter on the next login.

If you can’t see the CPU temp (and want to) you need to install the ‘lm-sensors’ modules

sudo apt-get install lm-sensors
sudo sensors-detect

NOTE: if something goes sideways with your bashrc file, restore the backup we made above like this:

cp ~/.bashrc.backup ~/.bashrc

Step 4: Install MAME and Attract-Mode

First we need to install the PPA repository for MAME, then update our repo list, then install MAME:

sudo add-apt-repository ppa:c.falco/mame && sudo apt-get update && sudo apt-get install mame

Then, we’ll do the same for Attract-Mode:

sudo add-apt-repository ppa:daveg/attract &&; sudo apt-get update && sudo apt-get install attract


This could be 30 posts in itself, and really depends on your particular goals.

I will link the readme docs and wikis for Attract-mode and MAME here:



I will cover my experience, tips, and findings on configuring and tweaking the various aspects of MAME and Front-end on linux in future posts.

You’re probably best to start by thinking about what you want your machine to be.

I’ve decided to refine the quasicade into a gallery of my most favorite machines. While they’re all there, I’ll only be presenting 80 or so in the front-end.

Good luck!

Progress and Video

You got a quarter?

Someone mentioned to me the other day that I’ve not posted on the Quasicade in a LONG TIME.

I guess I should post a little something.

Here’s a video of the current setup and operation.

I’m toying with the idea of beefing up the hardware a little, even though it runs perfectly (other than Windows).


Project completion.

The Fairview finish line.

This update is years in the future from the post about carpet.

We enjoyed so many fond memories in the Fairview house. Several holidays with friends and family, massive snowstorms that halted the city for days and constant home improvements.

Once, a raccoon moved in under the deck.

The house went from a cold dead hollow sad space to a warm home, filled with love.

The time had come to move on to the next project, to give another family the comforts and personality of Fairview.

We listed her for sale in the autumn of 2012.


Here are the photos we took for the listing:


Living room.


Living room facing the bay window.


Dining room.


Entry foyer.


Kitchen towards front.


Kitchen towards rear.


Second bathroom added off kitchen-side mudroom (not shown).


Dressing room.


Shoe closet in dressing room.


Master bathroom


Master bathroom from shower.


Master Bedroom


Master bedroom closets.


We’ll definitely miss the house. We got our start as a family here. But now it’s someone else’s turn.

Final Total:

We purchased the house as a foreclosure for $25,000

Total cost of renovations were approximately $36,000

Sale price was $124,900

Profit: $63,900


Outside renovation.

Two new calendars.

It’s been a while since the last update, we’re finally pushing to wrap up the outside of the house.

It’s springtime in Pittsburgh, meaning it’s time to get to work outside!


We acid-washed the old Alcoa aluminum siding and used some great sage colored paint for the siding, with white trim.


Man, do I hate ladders.


We rebuilt the structure and supports under the front porch with new wood for stability, then we removed the rotten old boards and replaced with new treated lumber decking.


New railings, new posts and new staircase are coming next.


Rachel uses a steady hand to paint the trim.


Structurally the back deck was sturdy, just power washing it before painting made it look SO much better.


New sealing paint will shine this up nicely. We also put in a 6ft privacy fence around the back yard for the dogs.

Removing the front 1/3 of the railing opened the deck up into the yard and made things feel bigger.


Carpet and ready for move-in!

It’s smells like carpet in here.

This update is a little late, as my computer has been packed up.

As of these pictures, we’re officially ready to start moving in. Updates from here on out will be as we finish the kitchen, dining and living rooms.

By finish I mean settle in. We will be on vacation next week so there will be little progress, and I can’t wait for that!


This is the color we went with, it looks nice, feels very soft and doesn’t snag or stain very easily.


This is the first time shadow gets to run free in the house, she was so excited that she was crying.


The carpet had little yarn fuzzies at first, so we had to sweep everything.


The dining room, I’m surprised how quiet the rooms are with carpet.


There are so many new things to smell.


The living room, with shadow still running around sniffing everything.


The carpet is transitioned in this doorway to the tile.


We decided on full carpet on the stairs, and I’m glad we did


I like the way the carpet feels, we got the extra squishy padding.


Shadow approves of the carpet, she has less trouble running on it.


This way she can monitor the upstairs and the downstairs at the same time.


Now we’re ready to put up the shelves and rods for Jess’s Dressing Room.


The guest room is almost ready to have guests! Although, we don’t have the furniture for in here yet…


The sprint for floor covering.

Tick. Tick. Tick.

This weekend marks the final weekend before the flooring deadline. We need to be completely done with painting/construction by this Thursday!

This week had a lot of other events too… Collin’s birthday and graduation party was last Friday, Valerie and family came to visit, the Penguins won the Stanley Cup, and I got a minor sunburn on Sunday watchin’ the Buccos trounce the Detroit Tigers.


The counter tops are in, this is just set in place, the dishwasher and sink need to be installed.


Ron and I set up the range hood microwave, I’ve still gotta finish running power to it tonight when I get back to the house.


The old hardwood was so uneven we had to get sub-floor for the slate laminate to go down.


The kitchen only needed patches made for sub-floor.


Mike, Ron and I laid the tile down starting at the front door.


Here’s proof that at least the back of my sister Valerie’s head visited from Georgia.


We had to special order this tile, and of course, because of the odd shape, had to order more to finish a spot in the kitchen, to be continued…


Here’s how it looks before the edges are finished.


Seamless out to the front hallway, I think it looks snazzy.


The shower is installed. Here are the faucet and spout.


We acquired this super nice giant rain shower head.


It’s like our own personal instant monsoon season.


Ron and I installed the bathroom sink.


The girls put a coat of stain on the wood on the bannister. Only one more to go, with a little bit more detail painting on the newel post.


The pantry built-in is now painted to match the trim, the doors are off and drying.

It’s coming down to the wire now. We’re almost done and ready to move in. We’re hoping soon.

The Carpet deadline looms in mere days now. We’ll scramble to finish the odds and ends this week. Next weekend, there should be pictures of a completed interior for you.

Its been a long road, but here we are, sprinting all the way.


Cleaning Up

Things are coming together.

Carpet has been scheduled. The deadline for all other projects is now Thursday June 18th.

Mom and Dad came down and helped on Saturday! They were in town for Collin’s graduation. Congrats Collin! Also, Jessie and Dad had a birthday this weekend! Jess was Saturday and Dad was Sunday! HAPPY BIRTHDAYS!


In preparation for the water in the bathroom being turned on. Ron attaches the fixtures to the tub.


Here is the device to activate water flow in the shower area.


Finally! We have a real toilet, one that flushes and everything! Also, if you notice there’s a cool classic chessboard ceramic floor!


We received this nice glass door from Karin and Robin, we’ll repaint and embellish it later.


Mike, Ron, Sandy, Amy, and Jess started to paint the kitchen cabinets and trim around the house.


Jess is a true visionary with color, nobody believed that her colors would work out, except me of course.


Here’s the hallway trim, still need to finish the front of that electrical junction.


Here are the kitchen cabinets after painting.


Here are the cabinets and shelf over the range.


Mom and Dad came to help! Here Dad tries to figure out how this place got to be such a mess!


A master at work, he must have experience with sawdust.


Mom worked on the windows while dad swept floors.


I think I need to take lessons from Mom on how to clean windows. When she got done with this one, it looked like the glass was gone.


Sandy finished the final sanding and cleaning of the railing so that it can be stained and painted where it needs it.


My closet has doors! I still have to put the handles and catches on tonight.


I put up the tracks for the movable shelves in the living room.


Jess refinished the blades of the fan for the guest room.


We don’t have any more brass in the house. So I am refinishing this chandelier.


Here are all the little individual accent pieces.


I rewired all of the sockets for safety. Here it is with the new gray powder coat looking finish.


Jess has been saving this crystal chandelier in her Dad’s garage for years. After about 3 hours of love and cleaning. Here it is.


This thing looks great and now graces our front foyer as the first sparkly thing you see, unless Jess answers the door.



Big Progress: Pt. II

Part Two: Harry Potter and the Order of the Tuscan Glaze

As promised, here is the second set of pictures from the recent update. The problem with using 2 different cameras seems to be remembering where the pictures are.

As I briefly mentioned, we built bookcases, trimmed windows and doors, and did a bunch of painting.


Here are the bookcases with a coat of paint. Laura came over and helped us on this.


I installed the new light and fan in the living room.


The mantle looked a little barren, so I got some extra millwork for it.


We recycled the original casing from around the house where we took out doors and windows, and made it fit the bay.


Just a few simple angles cut and Ron was able to allow the casing to retain it’s original face shape but become a corner piece.


Even though the bay windows aren’t original, they look like they fit the design since we used this original woodwork.


We reused the original casing on this window too, and the original sill, (there is however another piece waiting to go on here, under the sill).


Sandy painted the trim in the bathroom.


We also put a coat or two of paint on the hallways. The color is called Aqua Breeze.


Here is the new light fixture for the upstairs hallway, its a platinum/gunmetal sort of finish. Goes great with the light blue on the walls.


We wanted the dining room to be fairly formal, so we went with a Tuscan glaze on the walls.


First we had to put on a Wheat colored base coat. Then Jess and Amy used a technique to put the glaze on.


It uses the base coat, and 3 other colors of glaze/stain which are dry brushed onto the roughly textured plaster.


The light and dark colors fill into the texture and create a really nice depth.


Ella helped Jess finish the trim and fine details.


Here it is, it’s still masked for the painting of the trim.


The inside of the built in is also now a dark glossy walnut color.


The girls did a fantastic job on this room, its almost complete! Just a bit more trim to paint!

We’re almost there!



Big Progress: Pt. I

Part One: Harry Potter and the Built-In Bookcases

It was another two-week long wait for updates, we’ve kicked it into high gear to prepare for carpet. However, working every night leaves little energy for website code.

In any case, here is PART ONE of the update, The rest is on the other camera, so they aren’t necessarily from the same day/week.


Ron and Mike started the bookcases next to the fireplace.


Here is a basic layout of how high they will go.


Ron yells out a massive amount of measurements and angles, while Mike scribbles things down, man they’re fast.


The yard is filled with sawdust after this week.


They’re starting to take shape.


Sandy threw a coat of primer on the cases.


Here they are! The shelves are not installed yet as they’re movable and we dont know what goes on them yet. Also you’ll notice in this picture that the walls are painted (more on that in Part 2).


The kitchen was so gross that I had to use a palm sander to get the grease/food grime off the walls. Then I had to wash them and put this primer on.


Sandy and Heather pulled the gross contact paper off of the kitchen cupboard shelves.

It smells terrible.


Jess primed the trim upstairs in the hallway.


The moulding is up in the bathroom!


The wainscoting and chair rail are in and ready for paint.


Mike caulked the wainscoting.


We are going to be recycling original casing from other windows and doors in the bays, but, Ron had to build a new windowsill.


We decided to recess the sill into the curve of the bay.


Here’s the sill installed.


The crown moulding is installed in the living room.


This stuff really dressed up the room.


Also this week, Ron and I loaded the scrap metal form the house (690 lbs. worth) into the van. Then he and Mike unloaded it at the scrap yard. Finally it’s out of the way.

to be continued…