Not much is missing. The game doesn’t turn on and off the display. I need to write a buffer system for that, otherwise you see garbage onscreen when it’s loading an area. I had also planned to optimize the emulation code further, but it might not be needed for this game. I’ll probably tweak the audio a tiny bit as well. Then (!) it will be time to rip the game engine apart and add real PCE features!
For your NES-2-PCE conversions, are you sure you’re setting up the screen parameters correctly? On the real hardware (and on some emus), in your conversions I always see several blank lines at the top (outside of the graphics display area), then 8 pixels of “garbage tiles”, then the usual game screen, then the bottom of the screen is cut off prematurely because the actual display is set too low on the screen and/or cut off with an early active display end.
The settings you are using are (from VSW:) $02,$17,$00DB (219 lines),$001B,
when for a 224-line display you might want to try: (from VSW:) $02,$17,$00DF (or $00E0),$04
But that misses the point that the NES generates a 240-line display (yes, even in NTSC) so the screen should be set as: (from VSW:) $02,$0D,$00EF,$04
Don’t worry about limiting your game’s resolution; leave that up to poor TVs and emulators. ;-D
Actually the current screen settings were to give the backend code more vblank time, hence clipping the display.
The very last thing to do is change the vblank flag in the PPU emulation to occur earlier than the PCE’s vblank interrupt. I’ll be using a fixed scanline interrupt to do this, but this will mean I need to write some additional logic for the tilemap mirroring system. Since NES is 240 and PCE is 256 on wrapping vertically, I have a dynamic hsync interrupt the readjusts the screen at a specific wrapping point. So probably just a bit flag if mirror code falls on the same hsync interrupt.
September 8th, 2008 at 1:57 pm
Working fine ! Thanks for resetting the control button, it’s now fully playable !
What is missing now ?
September 12th, 2008 at 12:47 am
Not much is missing. The game doesn’t turn on and off the display. I need to write a buffer system for that, otherwise you see garbage onscreen when it’s loading an area. I had also planned to optimize the emulation code further, but it might not be needed for this game. I’ll probably tweak the audio a tiny bit as well. Then (!) it will be time to rip the game engine apart and add real PCE features!
September 13th, 2008 at 4:26 pm
For your NES-2-PCE conversions, are you sure you’re setting up the screen parameters correctly? On the real hardware (and on some emus), in your conversions I always see several blank lines at the top (outside of the graphics display area), then 8 pixels of “garbage tiles”, then the usual game screen, then the bottom of the screen is cut off prematurely because the actual display is set too low on the screen and/or cut off with an early active display end.
The settings you are using are (from VSW:) $02,$17,$00DB (219 lines),$001B,
when for a 224-line display you might want to try: (from VSW:) $02,$17,$00DF (or $00E0),$04
But that misses the point that the NES generates a 240-line display (yes, even in NTSC) so the screen should be set as: (from VSW:) $02,$0D,$00EF,$04
Don’t worry about limiting your game’s resolution; leave that up to poor TVs and emulators. ;-D
September 13th, 2008 at 4:50 pm
Hey Chris,
Actually the current screen settings were to give the backend code more vblank time, hence clipping the display.
The very last thing to do is change the vblank flag in the PPU emulation to occur earlier than the PCE’s vblank interrupt. I’ll be using a fixed scanline interrupt to do this, but this will mean I need to write some additional logic for the tilemap mirroring system. Since NES is 240 and PCE is 256 on wrapping vertically, I have a dynamic hsync interrupt the readjusts the screen at a specific wrapping point. So probably just a bit flag if mirror code falls on the same hsync interrupt.