friendofmegaman wrote:1. Are these the same types of RAM? Do we need any adapters to plug it to GB?
The pinout isn't going to be the same, because it is dual-port so there are twice as many pins!
friendofmegaman wrote:2. In my understanding the dual-port RAM replaces RAM in GB and connects (not replaces) to Arduino since the latter can work with external RAM is it correct?
Yes.
friendofmegaman wrote:3. Let's assume we have steps 1 and 2 done, then to get the frame data we just need to read the corresponding region of RAM using Arduino's RAM API at the rate we want (may be 60Hz as screen, may slower if we are saving bandwidth) - did I get it right?
Yes.
friendofmegaman wrote:4. Why do we need a piece of emulator code? Is it to get background and tiles data and build a 160x144 screen (or as you suggested 256x256 which is even better)?
A good explanation from http://gameboy.mongenel.com/dmg/lesson5.html
"The address space from $8000-$9FFF is video ram (VRAM). This area of memory isn't a plain linear collection of bytes that represent pixels on the LCD, rather this memory area contains building blocks that the LCD controller builds each screen with. Each of these 8x8 pixel blocks is called a TILE. The VRAM contains two major sections, one section for tiles, and another section for a MAP. The map area is a 32x32 byte array (1024 bytes) that makes up the Background Map, or BGMAP for short. The way the LCD draws a screen is this: it takes the byte value in the map area, and gets the corressponding tile from the tile set, and draws the 8x8 tile where it got the map byte from."
The only spanner in the works might be that the Sprite Attribute Table (OAM) is stored outside of VRAM - maybe physically separately in the other SRAM chip? in which case you'd need a second dual-port chip to be able to keep track of that as well - I haven't dug deep enough to be sure about that, anybody?