Personally, I try to make programs when I can't find another program that does it how I want. I have a dozen little programs on my PC that I use that are customized to do little routines how I like them. Sometimes they are slight improvement to an existing program, and other times they are a whole new creation (though usually these are really only useful for personal use).
Point is, pick something that you are unhappy with or that you can think of ways to improve it, then code it. I started by creating configuration apps for some of my scripts to make setting them up easier, automating certain tasks on my own PC, etc. I write little apps for nearly everything on my PC that I don't like to do manually. For example, I have a huge script that I want to remove all white space and comments from. Instead of doing it manually, I spend 5 minutes and make a little program to do it for me, then I have it for next time as well.
I imagine by the nature of your post you are referring to something larger-scale than that. I think an emulator is pretty big project to start, so if you have some good ideas, that will definitely keep you busy for a while. What sort of emulator do you want to create? The first step to any project like that would be to fully understand all the details of how the original works, so if you don't know that, do some research and tinker with it until you do.