Super Turbo HUD

That’s the way the actual game played at the arcades. FBA is terrible at keeping track of CPU cycles and it’s timing is off (at least the version ggpo uses that is 2 years old), so sometimes you’ll get 59.6 frames per second, 59.8, 59.9, mame is far more accurate and pretty close to the real board, if you’re having frame skip issues it’s probably because you have a slow pc.

Something interesting I found.

Even if you do it frame by frame, even with pianoing inputs, you won’t always get a reversal. Lol, this fucken game and it’s randomness, been searching for the reversal flag.

I have tested that extensively in Kawaks and it never failed. Is it not some stuff MAME got wrong? As for reversals, I doubt there is a flag for it: it seems you simply can do some moves as soon as you recover and can not do others (grounded normals, basically).

When I said flag, I didn’t mean specifically, I meant the first possible frame a special can be executed after a knockdown. There has to be something that tells the game, “Ok, the special can be done now”. There’s also something that triggers the “Reversal attack” message.

As far as timing in mame, I wouldn’t trust Kawaks at all, Mame more accurately emulates the 68000 cpu. I’ll test more later, but I’m almost positive I was hitting the reversal frame perfect and it was not coming out. It could be that issue ST has with the different speed settings that in order to compensate for the speed settings sometimes a frame can be skipped over, this is partly why input windows for moves can vary as well.

I see. All I know is that you can do any moves in most times, and grounded normals come later, which is possibly the explanation why they do not work as reversals*. Not sure if this may help you.

To test reversals, I would usually input the command early, then emulate a 30 Hz turbo (“autofire”) by having the button pressed at a frame step and depressed the next one. It always worked, even with turbo speed (internal frame skipping) on, which is known to be always the case for ST/X. I expected that often the frame when you have to input commands would get skipped, but it did not happen. But, well, emulation is not a real board.

*sometimes they did, and then they would work for that whole round, only.

That’s a terrible way to test reversals for accuracy.

I use a frame counter and frame advance, which is 100% accurate.

You can turn mame-rr’s frame counter on with ‘.’ by default (it’s on by default when it starts).

Just noticed you updated your post with the details. That’s exactly those old school SNES game cheats are written!

Nice work. I wouldn’t worry about the stun, it’s actually annoying in the training mode (well maybe if you are specifically testing for stun combos).

So you didn’t answer my question, what’s the 2 numbers next to gief’s move while everyone else only has 1 number?

I thought you have that already, what about those [sonic boom] [ready/not ready] you have in the script?

Yeah that made sense. I think there should be a state where the game marks the 2p as “knockdown”, or something like that.

It’s not just SNES cheats. The NES game genie would be a better example, a lot game genie cheats modified the actual NES ROM areas. That’s why you see a lot of codes like “Start game with xx”, because they modified static values inside the games ROM area when a new game was started.

Say for example there was an instruction in say Super Mario Bros (assume $20FD is the address that contains the amount of lives you have remaining):



6502 ASM:
00:9625:DE FD 20  DEC $20FD // Decrement address $20FD's value by 1 when you die


Let us assume that’s the code the game uses to decrease your lives when you die. You could make an ASM cheat that tells it to instead:



6502 ASM:
00:9625:FE FD 20  INC $20FD  // Increment address $20FD's value by 1 when you die


This would make your lives go higher each time you died, giving you infinite lives. Most cheat engines nowadays don’t need to rely on ROM ASM hacks for simple things because instead you set the cheat engine to constantly write a value to $20FD instead, it’s easier. You only get into ASM hacks when the memory write just won’t work.

Most cheat engines in emulators perform writes to RAM memory addresses in intervals specific to that emulator (think in the ms range, like a write every 30ms). This works perfectly fine for most games. So when you want infinite super, the cheat engine just writes a value of ‘0x30’ every interval so you’re super meter is always full. Same with the original health cheat, it only writes to the RAM of P1’s life or P2’s life address with a value of ‘0x90’

Since this game is programmed at such a low level and has a weird way of calculating things, writing there causes anomalies due to the game relying on checking if that address was written to, to perform other calculations (such as hit stun). What I did was control when that memory address gets written to by changing how the game performs a routine. I have the cheat engine make a write to the games ROM address to change an instruction located in the ROM area and write new instructions within the games RAM area that is never used. This way, the life value is written to AFTER the hit stun calculations have already been performed and not by the cheat engine, but by the game itself!

Normal operation of the game:
[LIST]
[]P2 gets hit
[
]P2’s life decreases
[*]Hit stun is performed because the game detects a change in P2’s life.
[/LIST]

Operation with RAM write cheat
[LIST]
[]Set P2’s life to 144
[
]P2 gets hit
[]P2’s life remains 144, game detects no change
[
]Hit stun is not performed, game thinks P2 was never hit
[/LIST]

Operation with the ROM Hack:
[LIST]
[]P2 gets hit
[
]P2’s life is decreased
[]Hit stun is performed
[
]P2’s life is reset back to 144
[/LIST]

In my original first post (which is now edited) I explained that I wasn’t sure what gief and hawks command throw 2nd number meant. I’m unsure how they work. The first number is the counter for the first 360, if that is ‘8’ (going by memory, in class) the spd motion was ‘accepted’. The 2nd number believe needs to be greater than 0 before the SPD can be executed. I think the 2nd numbers significance is only in the super move. Where a 2nd 360 is needed, perhaps there is another address I didn’t find that is for the 2nd 360. Either way, I think the 2nd address doesn’t increment until a 2nd 360 is performed. So in a nutshell…720 can’t be performed until the 1st number has reached its peak value, and the 2nd number is greater than 0 (IF I RECALL CORRECTLY).

No, that just checks the address that tells the game there is already a projectile on screen for that player.

NOTE:

I have an idea on how to fix it so that stun and everything else will function correctly. Basically to hook at the end of the stun counter to reset the life. Also to find out what triggers a round over and force the game to not execute it.

So ya, hope I shed some light on that for you :P.

nerd talk.

Pasky I cant run training mode got damit. Dont make this shit so nerdy to where us cool kids cant run the shit.

It helps when you say why you can’t. ***.

cause its to nerdy. make an on/off button lol. like a microwave. see thats easy to use. a microwave. make it like a microwave

Press tab -> Go to cheats -> On/Off

P.S. U dumb yo, ***

lol I didnt have a cheats tab.

Run mame like this “mame.exe -cheat”

or edit the mame-rr.ini file in the directory, scroll down to where it says cheat 0, and change it to cheat 1

or you could…I don’t know…READ INSTRUCTIONS


yea i tried that with poopasi last night. hes a nerd too.

Im at class studying for a final, I’ll message you on MSN later when I get back.

Oh wow. Thanks for this info cause I always do holds for my inputs. Now I know not to do that anymore. I wonder how many other games carry on this directional reading script???

Oh my…what’s this =O

http://img808.imageshack.us/img808/6730/dizzy.png

Dizzy meter added:

http://imageshack.us/m/23/5659/mame2011051117023990.png

An interesting thing I found, is stun actually goes to 34. I found this out by accident because I had the stun bar only going to 30 and it would actually draw beyond the border sometimes, it’s very strange. It seems that either sometimes the game raises the dizzy threshold to 34 or that when the player is at 27~+ that dizzy damage is increased for moves so that it hits 34. You can see it go beyond 30 yourself by just jabbing with deejay versus, say ken. That’s how I found it, most the time ken will dizzy before he reaches 30, but rarely it will go beyond 30 (highest I’ve seen is 33).

So, since I’m not sure which it is, I made the stun meter x/34 and I added a black line in the stun bar that indicates where 30 is, since most hits seem to dizzy after reaching that point, however don’t be surprised if it goes beyond it.

Lookin nice!