Nestopia input lag4/6/2023 Note that the delay between punches and kick is the reason why the game is challenging at all. Simple quick testing with VirtuaNES indicates me a constant 6-frame delay. It varying randomly between 3 and 10 is unthinkable. I am fairly sure that there is a delay for punches and kicks, but it should be a constant amount of frames. Only waiting for A+B for jumping is They way you count frames of delay should be wrong. Only history of left/right button presses (or possibly time between last button state change) is required, waiting is not required. This does not require any additional delay, and I'm fairly sure Double Dragon's D-pad is very responsive. The game possibly checks whether a direction is kept pressed for a few frame, released for a few frames and then the same direction is pressed again to register it as a head butt (similar things should apply for fighting games with special moves performed with the direction keys, such as Street Fighter) and registers it as walking if the direction is kept pressed for more than some threshold number of frames. That would have been unnecessary, imo.įor the D-pad part, I think it needs some buffer for performing the head butt move via double clicking pressing a direction twice. The thing is, it doesn't just wait that long for A or B, it waits that long for any d-pad button too. Very interesting, hadn't thought of that. It is almost impossible to require for the player to press those buttons at the same time, so when the game detect that A or B is pressed, very likely it waits a few frames to see if the player press the other button Game states (different game loops) can also be slightly more annoying to implement without a main thread.ĭouble Dragon games uses the button combination A+B to jump. This is particularly evil because it appears to work at first, when there's little to no game logic, but as soon as anything more complex than a single moving sprite is implemented, things start to glitch, and less experienced programmers become understandably confused.īut even when done right (PPU updates first, everything else later), the "all in NMI" approach has its pitfalls, the main one being the handling of lag frames, which's possible but not very intuitive. This is indeed a terrible program structure (which unfortunately appears to be disseminated by the Nerdy Nights tutorials), mainly because it puts the game logic, the slowest part of any game, above VRAM/OAM updates, meaning you basically have to do everything in just 20 or so scanlines, which's ridiculous. VRAM updates and OAM DMA must happen during the short VBlank time, which happens directly after NMI. I was really surprised to see the Double Dragon games perform the way they did. Out of the other games (3+ frames) I tested several different moves and situations to see if it would lower the response time, and I wrote the lowest I got. Now, out of the games that reacted in 2 frames, some of those I didn't test a lot, and many of them did start playing the sfx immediately. Mario, Super Pitfall (original and my hack), Kid Icarus, Gradius, Punch-Out, Elevator Action, Gauntlet, Holy Diver So 2 is the minimum.Ģ: Super Mario bros 3, Adventure Island, Battle of Olympus, Zelda 2, Kick Master, Batman, Amazon Diet, Yo! Noid, TMNT 2, Contra, Castlevania, Chip and Dale, Battletoads, Donkey Kong, Ghosts'n Goblins (very inconsistent though), Ghostbusters (tested on the car scene), Adventure Island 3, Pac Man (tengen), Lode Runner, Street Fighter 2010, Super Mario Bros, Simpsons Bart vs Space Mutants, Captain Comic, Rockman (inconsistent), Rockman 2, Rockman 3, Rockman 4, Rockman 5, Rockman6, Metroid, M.C kids, Ninja Gaiden, Ninja Gaiden 2, Ninja Gaiden 3, Mario Bros, Balloon Fight (inconsistent)ģ: Arkanoid, Yie Ar Kung-Fu, Castlevania 3, Double Dragon (very inconsistent, sometimes takes as many as 11 frames to punch), Dr. When I see the reaction I count how many times I pressed frame advance. The count is I pause fceux, hold a button and hit frame advance. Sometimes it is inconsistent and seems to be related to how much is going on in the screen at the time. Sometimes a character deliberately takes a frame or two before jumping. Also, I tried several different moves to see the one that was more responsive. I only tested in-game, as in, when actual gameplay was happening, not title screens or such. So, I made a list of screen reaction to controller input. So that test went nowhere, but I decided to share the following research. I think this is related to how OAM decays quickly. I then went on to test some games and see if any did this (I tested them before I tested my rom on the everdrive or other emulators). So it is a bad idea (points up to nestopia and mesen). The problem is, this works in fceux, virtuanes and punes, but it fails on real hardware with everdrive n8, on nestopia and on mesen (no sprites appear on screen). 5 - game clock (just 16-bit increment to a reserved ram location)
0 Comments
Leave a Reply.AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |