Showing posts with label Retropie. Show all posts
Showing posts with label Retropie. Show all posts

Monday, January 5, 2015

Hansei #1: Winter Break 2014

  1. Hansei (反省, "self-reflection") is a central idea in Japanese culture. Its means to acknowledge your own mistake and to pledge improvement.

Now, I would argue that that's a bit of pessimistic analysis of Hansei (likely from a gaikokujin who had it a few times too many...), but I do believe in the principle of self-reflection, and enjoy the manner in which Hansei accomplishes this. It's important to take a step back and reflect before moving forward, and I feel like it is the cultural idea that has allowed Japan to be known as "the great optimizer" in the field of technology. 

Now enough seiza about hansei. I wanted to take the opportunity to reflect on my progress with projects over the winter break this year. I effectively had 2 weeks of break of because I chose to work the first week full-time at the Technology Center. While this took a bit of my time, it also supplied me with cash for presents for my family, gasoline, you name it.

Unfortunately, much of my break was really not ideal. We had some trauma in the family followed by my own sickness, followed by my friend's tragic car accident. Thankfully he's going to make a full recovery, and I'm feeling much better myself. 

I know this sounds quite soap opera, but it was not enjoyable. Thankfully it was still a good opportunity for my family and friends to come closer together to take care one another.

Though I was sick, and no good for circuiting or the stresses of ROS debugging, I figured it was a good time to start on the Raspberry Pi (B+ model). I went ahead and built my case, and also started playing with RetroPi. Though there's a lot of confusing configuration to be done, it was so cool to be playing late 90's classics on a small 35$ dollar board!

Back on the homestead I also made some progress with my ROS project, but not as much as I needed to. I believe this is because I got an idea of trying to outline all of the publishers and subscribers at once. I should make clear outlining vs. what I choose to implement step by step.

I did learn that I am capable of working on multiple projects though-- providing they are not to similar, and well, feel differently. If that makes sense. Learning that comes from my favorite games feels less stressful and more tangible to others than fine-tuning a state machine, or debugging an IMU. I'll keep this in mind in the future.

I think that's enough reflection for now. As the semester moves on, I will keep these points in mind. Thank you everyone.


Sunday, January 4, 2015

Fooling with RetroPie #2: Configuring the Xbox 360 controller

So I've had a relatively successful night tinkering around with retropie. While I have a lot on my agenda, I've made a bit of progress tonight, at least in understanding how you get from a bare joypad to having input on all of your different emulators. Here I'll briefly explain the architecture of controller inputs for the Nintendo family of emulators (as I understand it) with a small chart.

(This is the first draft of the image... may not be 100% correct)

As you can see here, when you call on a ROM, it calls back to the emulator's config file. If there's nothing there, it falls back on the general config file. Lastly, if there are no notes here, then it calls back to the config file for the controller.

Due to the high amount of incoming enthusiasts combined with their low amount of know-how, I'll be going back and creating individual entries for 'fixes' to common RetroPie problems, such as downloading the 360 drivers, configuring the various emulators, and adding features like hotkeys and the like. You can look forward to those soon. 

Tomorrow I'll be getting to the bottom of this controller hierarchy thing. When I stopped I finally had figured out a hotkey menu that was being pulled from the controller's config file. I hope to overwrite these controls with particular interfaces for each ROM. Then I want to look into MAME emulation-- hopefully in time for my birthday party. I look forward to some four player Trog. : )

Wednesday, December 24, 2014

Fooling around with RetroPie #1: Setup and Performance

I haven't abandoned work on my Drone project, but at the same time, I've been really sick... I came down with the flu two days, and have been practically immobile since. Today I've managed to do a bit more moving around, so I finally got around to playing with the Raspberry Pi my girlfriend bought me for Christmas. It came with one memory card with NOOBS pre-loaded onto it, but for the purposes of playing with emulation. After I spent this morning constructing a pi-box to house my Raspberry Pi in, I began with Lifehacker's great tutorial on setting up Retropie for the Raspberry Pi. I found it pretty easy to follow, but there was a few things I wanted to note for anyone else pursuing emulation on the Raspberry Pi (or any other hardware for that matter):


  • There's a million ways to do anything, especially when you're working this deeply with a computer system. This tutorial 

  • Emulation is a precise art. As much as we all enjoy running games on our computers, there's so much going on that you'll find it varies drastically from machine to machine. Even in the case of two Pi's, you'll see different people having different issues. All sorts of changes can made, some of which you may not have even thought of, that may help performance on any given emulator.

    Sadly, this is not only the case with emulators, but specific ROMs as well. There are a few games, even generations old, that emulation has yet to figure out, such as Pokemon Snap. 

Thankfully, the ceiling is always expanding, and what wasn't possible on high-end hardware years ago is possible on mid-range and low-end hardware today. Thankfully, if you can put frustration aside you'll find that the reward of a small, customizable 35$ all-purpose emulation machine that only requires a TV (of any kind!) and a USB controller (of any kind!) is worth the wait. 

My Experience

So after getting my micro-SD properly imaged, I booted into RetroPie and did some configuring.

However, I was in a precarious position... I'm in the basement of the home under quarantine with the flu, far from ideal when you need a wired connection. After a little research I found that there is another-- debatably more convenient option-- that uses only a USB stick. That's right! All you need to do is stick a USB drive in your Raspberry Pi with everything configured, and it'll automatically create a directory of ROMs (appropriately called 'roms') which you can place ROMs in from your computer and then migrate to your Pi without the hassle of dealing with Cyberduck or any other ftp/ssh clients.

After I made a decent selection of ROMs playable, here were some of the performance issues I noticed:

  • NES: Initially so slow it was unplayable. Nearly half-speed across all titles. Strangely though, I came back later to find most titles between 90% and full-speed.
  • SNES: Great! No complaints out of the box. The sound effects seem slightly louder than the original hardware, but that could be due to the television. 
  • N64: Wouldn't even boot, ha. Checked out the logs, and it never clearly displays an error-- just says stopping emulation. This seems to be the great enigma of Raspberry Pi emulation at this point in time.
  • PS1: Worked surprisingly well, though all I played on it was famously 2D game with little fanfare. 
  • GBA: Required a bios, which I didn't feel like importing at the moment. More on that at a later date.

What's Next

So this is all pretty cool, but how can we make it more interesting?  Well, there's a few fields that can be pursued from this point.  Here are just a few ideas:

  • External Modification:The Raspberry Pi has all of the electrical potential (no pun intended) of the Arduino, and can have buttons and switches all with their own purpose.What's a console without a reset or power button? And that's just a starting point.
  • Internal Modification: Besides just contributing to the altruistic cause of getting the emulators to run better, there's also a lot of customization to be had within the EmulationStation suite itself. Right now it looks great in HD, but I'd like to customize to my liking-- more sounds, descriptions and nostalgia would be great.
  • A prepared package: Putting these two things together I'd like to make some cool custom consoles-- on a budget. Imagine a dedicated console to your favorite franchise like Mario or Zelda, featuring all of the games, a relevant gui, and an appropriate soundtrack-- and maybe even other features, like Ebooks, images, and the like. 

My Project

I'm wanting to do just that eventually for the famous fighting crossover Super Smash Bros. Imagine cycling through the abundant character roster, panorama style, and picking a character, only to be treated to their entire history of memorable games. Of course this would be a huge challenge, not only on the graphical end, but also in getting all of the emulators to function reasonably. I think that first I would try to do the same thing for the beloved Mother franchise, with a few extra touches. Since the Mother series is only limited to a few select titles, this would be a much easier task to accomplish. There are plenty of existing assets to work with, both original and fan-made, and the fact that they only span three 2D consoles, allows for work on some extra features, like maybe the addition of NES and SNES controller ports. 

But that's thinking super far ahead, at least for the time being. For now I intend to just enjoy my awesome emulation machine and catch up on some classics. Feel free to leave comments with any suggestions.