welcometoquasicade

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)

img_583477c870c7e

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
ModelDV9700 
Processor
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
Memory3GB DDR2 SDRAM
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.

https://help.ubuntu.com/community/Lubuntu/InstallingLubuntu

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

ssh user@YOUR_LUBUNTU_HOST

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

# QUASICADE PROFILE START

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

    if [[ -f "/opt/vc/bin/vcgencmd" ]]; then
        if gpuTempC=$(/opt/vc/bin/vcgencmd measure_temp); then
            gpuTempC=${gpuTempC:5:2}
            gpuTempF=$((gpuTempC*9/5+32))
        else
            gpuTempC=""
        fi
    fi

    local df_out=()
    local line
    while read line; do
        df_out+=("$line")
    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 8.8.8.8 2>/dev/null | head -1 | cut -d' ' -f8)"
                ;;
            9)
                out+="Temperature........: CPU: $cpuTempC°C/$cpuTempF°F GPU: $gpuTempC°C/$gpuTempF°F"
                ;;
            10)
                out+="${fgwht}I am quasicade, Feed me quarters.${fgrst}"
                ;;
        esac
        out+="\n"
    done
    echo -e "\n$out"
}

quasicade_welcome
# QUASICADE PROFILE END

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

Configure

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:

http://attractmode.org/docs/Readme.html

http://docs.mamedev.org/

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

18sold

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.

before-and-after

Here are the photos we took for the listing:

Fairview-done-4

Living room.

Fairview-done-3

Living room facing the bay window.

Fairview-done-1

Dining room.

Fairview-done-5

Entry foyer.

Fairview-done-6

Kitchen towards front.

Fairview-done-7

Kitchen towards rear.

Fairview-done-8

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

Fairview-done-9

Dressing room.

Fairview-done-12

Shoe closet in dressing room.

Fairview-done-10

Master bathroom

Fairview-done-11

Master bathroom from shower.

Fairview-done-15

Master Bedroom

Fairview-done-13

Master bedroom closets.

exterior-front-1

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

17outside

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!

IMG_1259

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

IMG_1220

Man, do I hate ladders.

IMG_1256

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.

IMG_1255

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

IMG_1260

Rachel uses a steady hand to paint the trim.

IMG_1258

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

IMG_1257

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.

16carpet

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!

1color1

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

1shadow1

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

1jesssweep1

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

1dining1

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

2shadowsniff1

There are so many new things to smell.

2shadowsniff2

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

2living1

The carpet is transitioned in this doorway to the tile.

3stairs1

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

3stairs2

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

3shadow1

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

3shadow2

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

3purple1

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

3yellow1

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

15floors

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.

1countertop1

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

1aboverange1

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.

2subfloor2

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

2cutfloor1

The kitchen only needed patches made for sub-floor.

3laytilemike1

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

3valcame1

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

3inkitchen1

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…

3floordown1

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

3floordown2

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

4showerfaucet1

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

4shower1

We acquired this super nice giant rain shower head.

4shower2

It’s like our own personal instant monsoon season.

4sink1

Ron and I installed the bathroom sink.

5bannister1

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.

5pantry1

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.

14clean

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!

1ronfaucet1

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

1shower1

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

1toilet1

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

2newdoor1

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

2miketrim1

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

2pbtrim1

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

2pbtrim2

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

2pbcabinets1

Here are the kitchen cabinets after painting.

2pbcabinets2

Here are the cabinets and shelf over the range.

3dadscratch1

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

3dadvac1

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

3momdadclean2

Mom worked on the windows while dad swept floors.

3momscrape2

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.

3sandyscrub1

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

4mastercloset1

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

4shelf1

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

4yellowroomfan1

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

5brasschand1

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

5brasschandparts1

Here are all the little individual accent pieces.

5graychand2

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

6entrychand3

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.

6entrychand7

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

 

13big2

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.

1bookcases1

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

1livingfan1

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

1millwork1

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

2baycasing1

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

2baycasing2

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.

2baycasing3

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

3windowcasing

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

3sandytrim

Sandy painted the trim in the bathroom.

3hallwaypaint1

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

3hallwaylight

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.

4amyjesstuscan

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

4jesstuscan

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

4amytuscan

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

4jesstuscanhigh

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

4ellajesstrim

Ella helped Jess finish the trim and fine details.

5staindone1

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

5staindone2

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

5staindone3

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

We’re almost there!

 

12big1

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.

1shelf1

Ron and Mike started the bookcases next to the fireplace.

1shelf2

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

1mikenotes1

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

1mikecarry1

The yard is filled with sawdust after this week.

1ronshelf1

They’re starting to take shape.

1sandyshelf

Sandy threw a coat of primer on the cases.

1primedshelf1

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

2kitchenprime

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.

2contactpaper

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

It smells terrible.

2jesstrim

Jess primed the trim upstairs in the hallway.

3crownbath

The moulding is up in the bathroom!

3wainschair

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

3wainstrim

Mike caulked the wainscoting.

4baytrim

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

4baytrim3

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

4baytrimsill1

Here’s the sill installed.

4livingcrown

The crown moulding is installed in the living room.

4livingcrown2

This stuff really dressed up the room.

5scrap

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…