I'm about to start programming a Commodore 64 emulator but before I begin, I'd like to ask a few questions regarding the graphics part of it. But before I ask my questions, let me give you some background info on what I know.
- Assembly for the 6502/6510 cpu.
- VIC II, 6526 CIA architecture (internal registers)
- Still working on reviewing the SID chip
As for my programming knowledge, I've done quite a bit of work with VB 6 but my language of choice is C/C++. I've also done quite a bit of programming for the Directx API (version 7-9) especially Direct3D.
Now to my questions:
1) Which is preferred for displaying the graphics when using the DirectX API? DirectDraw or Direct3D? I'm asking because Direct3D doesn't really seem suited for direct pixel manipulation which I believe is whats needed for drawing the screen.
2) Is the screen drawn all at once or one scanline at a time? I would think it needs to be drawn one scanline at a time for it to be accurate. I say this because the C64 uses raster interrupts that can modify the screen in real time.
3) If drawing the screen using scanlines is the preferred method, what's the fastest way to achieve this. I'd hate to lock and unlock the back buffer many times as the scanline is drawn. This would be way to slow in Direct3D or DirectDraw. Am I better off drawing the scanlines in a temporary array (virtual screen) and then paint it to the screen at once? What's the best approach to this.
4) And what about the 8 sprites the C64 supports. Is this a matter of just making PC sprites that mimic the C64's sprites.
I'd appreciate any info you guys could give me.