008951: BNE 00895c ($9)
00895C: LDA $1700
00895F: CMP #$00
008961: BNE 00899d ($3a)
008963: LDA $1707 // Load 7E1707 into the accumulator
008966: LSRA // Shift the byte right 2 times
008967: LSRA
008968: AND #$f8 // And it against 0xF8
00896A: STA $06 // Store the result in 0x7E0606
00896C: LDA $1706 // Load 0x7E1706 into the accumulator
00896F: LSRA // Shift the byte right 5 times
008970: LSRA
008971: LSRA
008972: LSRA
008973: LSRA
008974: CLC // Clear the carry flag
008975: ADC $06 // Add the value at 0x70606 to the accumulator
008977: TAX // Copy the value of the accumulator into register X
008978: LDA $0ec300,X // Load 0x0EC300 + Register X into the accumulator
00897C: STA $06 // Store the result into 0x7E0606
00897E: PHX // Push Index Register X
00897F: PLY // Pull Index Register Y
008980: LDA $c0 // This loads 7E06C0 into the accumulator, to zero out the accumulator
008982: BNE 008994 ($10)
008984: LDA $86 // Load 7E0686 into the accumulator
008986: TAX // Copy the accumulators value into X
008987: LDA $14ee00,X // Load 0x14EE00 + X into the accumulator
00898B: CLC // Clear the carry flag
00898C: ADC $17ef // Add 0x17EF to the accumulator
00898F: CMP $06 // Compare the accumulator's value against 0x7E0606, if 0x7E0606 is greater than the accumulator, don't set the carry flag
008991: BCC 008994 ($1) // Branch on carry, if this does not branch, an encounter occurs
Random encounter subroutine reversed…now to make a script that tells me exactly how many more steps until an encounter occurs :).
Alright, not to get too off topic here, so last post about FF4.
[media=youtube]hqIvFWr-mTE[/media]
I can now predict what the next monster group will be…not gonna explain it this time because I’m lazy but if anyone is interested themselves, the value for the monsters is stored at 0x7E1800. It’s rather long on how it works but kinda simple. Anyways, the end result is at 008A16: STA $1800. Basically I did everything the assembler does ahead of time so I can predict which group is next.
About using the HUD with mame to train : what speed should one use to have the timings be as close as possible to the arcade ? I know that with ggpo it would be 0 or 1, but when training with an emulator offline, I have no idea.
MAME is a lot more accurate than Final Burn Alpha, so the emulation on mame-rr will be a lot closer to the arcade than fba-rr. I just use the default speed settings in mame-rr.
I went to the arcade after doing some training with mame, and I noticed that it was slightly slower. The giveaway was the timing to chain two stand lk’s when doing dic’s crossup combo (I did it too quickly so only one lk would come out). Turbo 1 seems the closest (for the world/us version : arcade t2 = mame t1).
how many of u guys did know Pasky didnt make it all by himself? shame of u Pasky! well, I guess imitation is the best form of flattery, n a couple of irony pics:
Ok, I’m too lazy to reverse damage because it takes a lot of tracing, eventually I will. I got the subroutine breakpoint address if anyone else wants to do it (the behind a round damage), not that I can’t, I just really don’t feel like it.
Is there anything anyone wants to have figured out that remains a mystery that doesn’t involve some video a top player did that gives me nothing to work with :P.
Oh like how far they jump off the ground when they come out of grabs? I always found that annoying because sometimes I wanna blanka ball behind them after a head bite in the corner for mixup but sometimes they fall quick, I’ll look into that.
Yeah that’s interesting too but what I described above is the number of frames needed for the opponent to get up after a knockdown.
Outside of the corner it’s a constant number of frames. When they are bounced off the corner during the knockdown, they get up faster. Which makes the safe jump timing much more difficult because you have to adjust it on the fly.
I know sometimes chars just wake up differently depending on what they get hit with, I had no idea a corner knockdown was always a quicker rise. I just thought it was random throughout the stage.