Pulsewidth wrote:Battle Garegga in Raine does have "sliding" sprites (looks more like shaking sprites because the horizontal scrolling is less than one pixel per frame). This is a worthwhile tradeoff for having responsive controls.
But does the original hw do this (I'd genuinely like to frame-skip over a video capture of someone playing these games)? It wouldn't be as obvious on the original hw with the slower decay of the phospurs.
It may be that in doing so you're effectively cheating - giving yourself an over people playing on PCBs and could be viewed similarly to someone slowing the emulation down.
I can show anyone a couple of lines in MAME to remove the intentional buffering of sprites for most of the games mentioned.
I'm personally of the opinion that RAINE is basically irrelevant now. FBA has its place, they've taken a fresh look at the emulation of games in MAME that have been taken for granted for eternity and is faster in some cases.
PsikyoFan wrote:
It may be that in doing so you're effectively cheating - giving yourself an over people playing on PCBs and could be viewed similarly to someone slowing the emulation down.
I discussed this in the High Scores forum thread and Plasmo accepts playing in Raine as not cheating. I've also heard that the Saturn port has less lag, and I'd be very interested in exact measurements. Raine also fails to emulate slowdown, so it's increasing difficulty in some areas too.
ESP Ra.De. is an interesting case. I believe it's running on the same hardware as DoDonPachi, but the control latency is greater. DoDonPachi used to have higher latency in MAME 0.99 and earlier, but an IRQ related change fixed this (and at the same time broke save states). Details in this thread: http://shmups.system11.org/viewtopic.php?t=18702
I wonder if some emulation change could get ESP Ra.De. running with no lag and synchronized sprites.
nimitz wrote:I actually just managed to "fix" the drivers for both namco system 1 and psikyo.c to skip that "buffering.
That being said I used a pretty brute way (it works very well though), I'm curious what is the way you wanted to suggest to remove that buffering.
For psikyo.c, simply replace references to state->spritebuf2 with machine->generic.spriteram.u32 in draw_sprites() and VIDEO_UPDATE( psikyo ) in src/mame/video/psikyo.c.
namcos1.c is really odd actually. This is completely untested, but I'd probably change the following routine to look like the following. This is a hack, presumably you'll see unprepared sprite lists and the like.
Thanks a lot, very interesting. What I did with the namcos1 is a bit similar, I commented out the "copy_sprites" but I actually brought the VIDEO_EOF up to the beginning of the rendering process.
nimitz wrote:Thanks a lot, very interesting. What I did with the namcos1 is a bit similar, I commented out the "copy_sprites" but I actually brought the VIDEO_EOF up to the beginning of the rendering process.
Any ideas for the toaplan2.c ?
It should be enough to patch the last line of toaplan2_vram_alloc() such that:
spriteram16_n[controller] = spriteram16_new[controller];
(note that batrider actually does this for one of the 'controllers' anyway)
Again, untested. It only seems to buffer by 0/1 frames though. I really am not sure this makes any difference to how the games play other than screwing up the sync
Now I just have to ask you for some more drivers (if you don't mind). Do you know how this could be done for the namcos2.c driver and also the cps1.c video driver.
I've look into the namcos2 driver a bit and really can't figure it out
Last edited by nimitz on Fri Mar 19, 2010 10:38 am, edited 2 times in total.
nimitz wrote:edit : turns out I can't get namco2s to work. can you help me with this one?
namcos2? I don't see _any_ buffering mechanism in MAME code. The game writes to ram that namcos2_draw_sprites() works with directly. If there is, it must be internal to the game code.
PsikyoFan wrote:namcos2? I don't see _any_ buffering mechanism in MAME code. The game writes to ram that namcos2_draw_sprites() works with directly. If there is, it must be internal to the game code.
That's exactly what I feared, thanks for the confirmation
DO you know if it's the same for the neogeo driver?
PsikyoFan wrote:namcos2? I don't see _any_ buffering mechanism in MAME code. The game writes to ram that namcos2_draw_sprites() works with directly. If there is, it must be internal to the game code.
That's exactly what I feared, thanks for the confirmation
DO you know if it's the same for the neogeo driver?
Looks that way to me. There's a comment in there saying "double check the Y coordinate, in case somebody modified the sprite coordinate since we buffered it", but it looks like this is referring to a scanline delay (Neo Geo sprite system is based on dual linebuffers) rather than a frame delay.
PsikyoFan wrote:namcos2? I don't see _any_ buffering mechanism in MAME code. The game writes to ram that namcos2_draw_sprites() works with directly. If there is, it must be internal to the game code.
That's exactly what I feared, thanks for the confirmation
DO you know if it's the same for the neogeo driver?
Looks that way to me. There's a comment in there saying "double check the Y coordinate, in case somebody modified the sprite coordinate since we buffered it", but it looks like this is referring to a scanline delay (Neo Geo sprite system is based on dual linebuffers) rather than a frame delay.