Petruza wrote:Anes wrote:
- 1 - C (Visual Studio)
2 - Win32/Win64 (Desarrollado bajo Windows 7 x64)
3 - DirectX (DirectDraw, DirectSound, DirectInput) en fin Ninguna, todo metido dentro del exe hecho desde 0
4 -
- - MAPPER 0 (por supuesto)
- UNROM, CNROM,
- MMC1
- MMC3 (parcialmente)
- Desensamblador (parcialmente también)
Ah, muy avanzado.
Cuántos y cuales juegos testeaste?
Cómo testeas y debugeas? con el desensamblador, con el debugger del visual studio?
En qué consiste el desensamblador?
Te pregunto porque yo programé lo mínimo necesario para correr un juego, básicamente las opcodes y un mínimo render, corrí un par de juegos y obviamente no anduvo ninguno. Así que ahora estoy haciendo un debugger gráfico para ver dónde se cuelgan los juegos.
Creo que no te conviene escribir el código específico para un sólo juego. Emulá el CPU completoe (que no es tan díficil) primero, depués hacés un Render pixel por pixel básico y de ahí progresas.
He probado unos 100 mas o menos me corre un 85%.
Básicamente depuro con el Visual Studio, en realidad estoy usando el Visual C++ 2010 express con el Resedit (editor de recursos). Lo uso principalmente por las capacidades muy buenas de depuración en tiempo real que tiene. Aunque tengo el Visual Studio Original. Te dejo unos link que te pueden interesar:
6502:
http://users.telenet.be/kim1-6502/6502/proman.html
Éste de explica el 6502 de una forma sencilla y amigable, mucho mejor que los documentos esos tan exactos. El 6502.txt del Nesdev tiambién es un buen comienzo.
DirectDraw:
http://archive.gamedev.net/reference/ar ... le1260.asp
http://archive.gamedev.net/reference/ar ... le1270.asp
Podés usar directamente el el modo de colores de 32bits depth en DirectDraw. Mostrar píxeles (ahí en el artículo te muestra cómo mostrar píxeles usando coordenadas X e Y. Te sugiero que emprecés con esto, después optimizás el código.
Del CPU no te olvidés del nestest.nes para probar el CPU.
PPU:
Te aconsejo que empecés como todos con el de Yoshi (auque está desactualizado) para un panorama general. Después podés pasar al nintech.txt y depués al "2A03" reference. De todas formas así fue como hice yo.
En realidad cuando empecé lo hice por scanline, fui dando vueltas y preguntando en el NesemDev hasta que obtuve algo palpable.
Acordate que el pattern table son dos bytes, y que obiente el bit alto y el bit bajo del pixel, con esto te sobra para hacer un render de 4 colores para ver algo en la pantalla (sobre todo el nestest.nes para que testees el CPU. Después más adelante te preocupas por los attribute table.
Tomá como referencia un juego simple: "Popeye" se me viene a la cabeza y metele hasta que veas algo en pantalla. En el switch(opcode)
agrega un default para que veas los opcodes que estan fallando.
Aunque sea una pregunta boluda, preguntala en el Nesdev, es la mejor forma de avanzar.
En fin así mas o menos empecé yo, que hay otras formas no lo niego, pero algo de resultado me dió.
Si querés agregame al messenger o mandame un mail y charlamos.
Suerte.