So, anyway. Here's what I would like to build:
I believe that it is possible to do as you are wanting to do, and I have believed this for a long time (I have some posts about this in the old forum, as well as here in the new forum - look 'em up for my thoughts on it, some of which I will share here as well).
But before I have several things to decide and problems to overcome:
- What arduino board should I choose? I think mega is the best choise in this case.
Maybe a mega would be better, but my thoughts on the project have always leaned toward a multi ATMega328 solution, with a single "master" controlling multiple "slave" processors (one for controls/input, one for music/sound, and one for display) via I2C, SPI, or some other hardware serial (or parallel, if needed) interface. Really, I2C and/or SPI would be the better choice, as you can hang multiple things off the bus (addressable), and use few pins (this means that, in theory, you could use smaller processors - like the ATTiny - for maybe sound and the control input processors).
The thing the larger ATMega1280 or 2560 will give you is RAM and flash memory, both of which could be important to this project; so perhaps make one of those be the "master" processor, but off-load the rest to other processors on a serial bus.
Note also that the ATMega644 is a reasonable alternative (as you posted regarding the Uzebox) that, and comes in a DIP format (which could be useful for a handheld device, as well as for prototyping on a breadboard). Alternatively, there are some small footprint Mega boards out there as well (even the standard Mega is pretty small, though, IMO); ultimately, you're going to want to do a lot of "standalone" devices for this project, if you intend to actually package it in a handheld case design, I think.
2. What display to choose, and how exactly can I send signal to it and display something? If you can provide link to some tutorials it will be extremely helpful!
I would actually go for a monochrome display using the KS0108 chipset; the popular size (which fits well with the ATMega328 memory footprint) has a 128x64 pixel display (and there are a few games done on the Arduino out there which have used this display). You may or may not be able to get a "full color" display to work; such displays need more memory, and there aren't many large ones that are easy to interface with (many seem to need constant refresh signal sent, pulling from an off-board memory buffer; there are some, though, which are SPI based with on-board memory - but they tend to be tiny). Something you may want to look into, if you use a monochrome display, is a controllable RGB backlight, which could be used (potentially) to add "special effects" lighting...
3. Can arduino run code from sd card or is it must only be on its flash to run...?
No - it must be on the flash to run.
4. How do I interface with SD card and what can I do with it?
There are many methods and libraries out there to deal with SD cards and such (see here: http://arduino.cc/forum/index.php/board,66.0.html); I won't rehash them here, only to say do some more research.
In theory, you could load a sketch (well, the hex binary, actually) off an SD card - but it would require a special/custom bootloader with SD read capabilities (I don't know if one has been written or not - I think maybe one has, somewhere); I floated an idea to someone on these forums (you?) not too long back about using one Arduino reading from an SD card to flash another Arduino via a sketch modeled off the ArduinoISP sketch (though there may be pin conflict issues there between using the ICSP pins and the SPI pins - not sure, I haven't researched it).
5. How can I conserve pins on buttons without using another microcontroller? Ideally I would like to include even more buttons but there are not that many pins...
What's wrong with using more than one microcontroller? How do you think the build consoles, handheld game systems, your PC, and the like? Multiple processors are where it is at, and has been for a long, long while (in the home PC market, since 1985 with the Amiga - which allowed it unprecedented multimedia capabilities for its time, which wouldn't be matched for a long time by PCs - although technically, the Amiga wasn't "first" at it).
But - if you insist - the best way would be (as mentioned) to use an I2C or SPI bus to communicate with chips that can hang off that bus; such chips include pin expanders (for i/o), flash memory, ADCs and DACs, real-time clocks (RTC) - you name it, it's out there.
6. Can arduino produce actual sound or only buzz? (as I've seen in youtube videos)
Programmed right (ie - you need to be a "god programmer" in the "demo scene" to pull it off) you can get an ATMega equivalent to emulate a SID chip (and more), if you so desire:
In this case, it was an ATMega88...check out his other demos, and check out his SID emulator (The hardware chiptune project) - aka "chiptunes" if you know that term...
Suffice to say, you can get an ATMega to make great sound (granted, doing so while doing other things, like graphics, game logic, etc - may or may not be that easy; if you want to have any hope of pulling -that- off, use timer interrupts to drive the sound output from a buffer that you feed outside the interrupt routine; really, it would be easier to simply off-load the sound to a dedicated microcontroller on a serial bus).
7. Is it even doable, this whole project? Will arduino have enough power to run games like mario at decent fps?
Mario? That's probably reaching a bit (maybe) - but things like Asteroids, PacMan, or similar "old school" style games that don't require much in the way of memory; I have no doubt that it is possible. People have already created similar "standalone" games of such nature on the aforementioned KS0108 LCD for the Arduino; heck, with the right programming and data management techniques (like those used on the Uzebox), you might even be able to create a version of Mario or other tile-scrolling game. I would suggest studying how such games from the past were created, and the techniques used, and scale those to work with the footprint of the Arduino you plan to use.
info: I do have a will to make it if it's possible and I don't care for money, even if it will cost me 1000$.
So, can you please help me figure out all the details to be able to actually start it?
I wish you all the luck and I hope to see somebody build such a system - I have long thought this would make a great project, but I've had too much on my plate to pursue such a thing. Something else to keep in mind (and something I have mentioned before in similar discussion threads) is that if you set the whole system up right, you can make this "game hardware" into something much more powerful: A platform for many uses outside of games. Imagine playing a game at one moment, then switch your SD card and having a small, low-power (and bandwidth) bench oscilloscope, or maybe a data-logger? What about a serial terminal (with some kind of small keyboard, maybe?). Or a small controllable display for your Arduino project prototyping needs?
Hope these ideas and thoughts help - I would really love to see this happen!