1 2
6 7 8
26 27
Lil_Gecko
He/Him
Player (97)
Joined: 4/7/2011
Posts: 520
exileut wrote:
Hey get back to ff8 :) The address I was watching was 0007B720. My first frame of battle input is 10899 and the value is 87. My battle is completely different than zanoab's. Taking actions or the enemy taking actions advances the value. As does waiting. You're right about the character switch button not advancing the value. I don't even know what that value signifies but more addresses would be helpful.
0007b720 is the adress of a pointer. it's 4 bytes and in hexadecimal. When you start the game its value should be 8007b724. Then from 7b724 to 7b92f it's a table containing 523 numbers that will be used for the random purpose. When the game needs a random number it will look at 7b720 and will go to the adress corresponding to that value. For exemple if the value of 7b720 is 8007b724, the game will use the numbers stored at 7b724 , 7b725 , 7b726 , 7b727 as random numbers. If 7b720 is 8007b7d0 it will use 7b7d0 , 7b7d1 , 7b7d2 , 7b7d3, and so on... The value of 7b720 increased by 1 every X frames. I'm not sure how exactly X is being calculated but during FMV, and when your in the menu X=0 and the RNG is freezed. In the world map X=1. As far as I can tell there is no way to make it moves faster or slower. When 7b720 reaches the value 8007b92e its value is reset to 8007b724 and all the numbers stored in the table are changed then the process described above restart. So that's why the ATB has to be put on WAIT style, so you can delay the moment the ennemy is taking its action and make it use a different RN, where not in WAIT style no matter what you do it'll always make the same move.
Joined: 2/15/2009
Posts: 329
Having the ATB on wait makes sense for manipulating enemy commands. When I was testing this last year I tried stealing on every frame for 10 seconds and never got the correct item. It didn't seem to matter what the pointers address value was. I'm curious how anyone was able to steal the mage masher at all. I think about 100 people have done a test run of the first battle.
Working on: Legend of Legaia, Vagrant Story
Lil_Gecko
He/Him
Player (97)
Joined: 4/7/2011
Posts: 520
exileut wrote:
Having the ATB on wait makes sense for manipulating enemy commands. When I was testing this last year I tried stealing on every frame for 10 seconds and never got the correct item. It didn't seem to matter what the pointers address value was. I'm curious how anyone was able to steal the mage masher at all. I think about 100 people have done a test run of the first battle.
When you press X to choose the target of your steal attempt, the game will wait 73 frames then it will look at a random number to choose what object you will steal. If this number is 0 you steal the very rare item. If this number is between 0 and 15 you'll steal the rare item If this number is between 0 and 63 you'll steal the normal item Otherwise you'll steal the common one. The pointer at 7b720 gives you a 4 bytes adress on the table of random numbers. The 3rd byte of this adress is the number used for the stolen object. Let's take an exemple. I want to steal the Mage Masher. It's a rare item so I'll need the random number to be between 0 and 15 (0 can be included since the Masked Man doesn't have a very rare item). Now I'll look at 7b720 to see where the pointer is on the table. Let's say it gives me 8007b866. So I go to Memory Search and go down to 7b866 and start to browse the table to find what next random number is between 0 and 15. I find 5 at the adress 7b871. Since I need this adress to be the third byte of the adress pointed by 7b720, I now know that I'll need the value 8007b86f (7b871 - 0x2) in 7b720 to steal the Mage Masher. Also remember that you'll need this value 73 frames after you've pressed X to choose the target of your steal attempt. To summarize : Find the next number in the table that is between 0 and 15. Substract 0x2 to its adress and you got the value you'll need in 7b720,4h Go back to your game and find on which frame 7b720,4h will have that value using Memory Watch. Substract 73 frames and you got the first frame where you can press X to choose the target of your steal attempt and steal the Mage Masher. Finally, I've tried to be the more clear possible but my english isn't very good so excuse me if I wasn't.
Joined: 2/15/2009
Posts: 329
I've never done this ram watching or searching before and after messing around with it I understand enough to do what you explained. I guess the 2nd thing to learn is how random battles work. If I understand this correctly you (Lil_Gecko) quit because the world map displays models as white and Zanoab quit because the manipulation took too long/didn't seem optimized. All I have is time and I'm willing to help get this run somewhere.
Working on: Legend of Legaia, Vagrant Story
Lil_Gecko
He/Him
Player (97)
Joined: 4/7/2011
Posts: 520
Well it's not exactly that, it's just that I don't have enough knowledge of the game to know what strategy would be faster, what item I should pick to have the more powerful characters and so on. So yeah I could probably make a TAS of it, but it would be extremely far from optimized. About random battles : Every X frames (X depending on what place you are) the game will perform 2 checks - Are you moving or not ? If not, obviously nothing happened and the game continues normally. If you are then a second check is performed. - We have got 3 values here : * Distance variable => it increases everytime you move and can be find at 7AE50 when you are on the world map and at 7AE4C everywhere else. * Location variable => the probability of a random encounter on the place you are. It's located at 7954F * Random number => As seen on the previous post. Still the 3rd byte that is being used for that purpose. Now that we got those 3 values, here is the formula (thanks to o I O I 00 I O I o from gamefaqs for that) : if (Distance variable * Location variable)/8 > Random Number then you got a battle. But honestly, as distance variable and random number will change constantly, it would be impossible to optimised the "avoid random battles" without a lua script doing it for you.
Former player
Joined: 5/4/2005
Posts: 502
Location: Onett, Eagleland
Sounds like the FF3/6 random battle system.
I think.....therefore I am not Barry Burton
Joined: 12/31/2009
Posts: 174
I quit the first time because I couldn't find the RNG. Now that I have them, lag is starting to become a random problem on PSXjin which has a bad effect on the RNG. I checked and 4 less lag frames than the original record doesn't mean I can do input 4 frames sooner (not even a single frame saved). I'm not sure what is going on but something is changing every time I replay my movie and the lag counter is the only thing that proved this besides the RNG. I'm learning LUA right now and planning on gathering some interesting information with it. My current goal is to display the last set of values that were sampled during a single frame. If I can get the script to dump the set to a file along with the frame number, I can keep a complete history of RNG advancement to reduce rewinding (and maybe find out how lag frames influence the RNG and when my desync occurs).
Joined: 2/15/2009
Posts: 329
I guess I'll start working on the testrun again while you work on that script. I figure having another input file to compare to can only help.
Working on: Legend of Legaia, Vagrant Story
Joined: 12/31/2009
Posts: 174
With a little bit of dedication (and a love for programming), I got most of the script done. http://pastebin.com/SCU8XgCR Lua is almost as strange as Unix but I got it working. If anybody knows how to convert the ints to hex/byte form, I'm ready to learn more. Feel free to add more to it. Also, I'm aware that I could remove the leading 0s in the addresses but I prefer full addresses so it is obviously an address. EDIT This is my first time touching Lua and it is 239 AM so I think I did pretty good
Joined: 2/15/2009
Posts: 329
Zanoab wrote:
With a little bit of dedication (and a love for programming), I got most of the script done. http://pastebin.com/SCU8XgCR Lua is almost as strange as Unix but I got it working. If anybody knows how to convert the ints to hex/byte form, I'm ready to learn more. Feel free to add more to it. Also, I'm aware that I could remove the leading 0s in the addresses but I prefer full addresses so it is obviously an address. EDIT: This is my first time touching Lua and it is 2:39 AM so I think I did pretty good
I'm not really sure what I'm looking at here. What does this script do?
Working on: Legend of Legaia, Vagrant Story
Lil_Gecko
He/Him
Player (97)
Joined: 4/7/2011
Posts: 520
I have to admit I'm kinda confuse with your desync problem. I don't know anything about emulators so I can't help with that but I've now tried for myself to play 2 differents movies on 3 differents computers over and over, and I always got the exact same lag frames and RNG, no desync at all. Do you use the latest version of psxjin ? Edit : I don't know anything about lua either but I hope that is going to help you solve your problem. Also I've made a little test run up to the sword fight : http://www.youtube.com/watch?v=c2Px_LUaivA and the sound is sometimes really annoying. Is there any way to correct that even if it's just for the encode and not while playing ?
Joined: 2/15/2009
Posts: 329
Lil_Gecko wrote:
I have to admit I'm kinda confuse with your desync problem. I don't know anything about emulators so I can't help with that but I've now tried for myself to play 2 differents movies on 3 differents computers over and over, and I always got the exact same lag frames and RNG, no desync at all. Do you use the latest version of psxjin ? Edit : I don't know anything about lua either but I hope that is going to help you solve your problem. Also I've made a little test run up to the sword fight : http://www.youtube.com/watch?v=c2Px_LUaivA and the sound is sometimes really annoying. Is there any way to correct that even if it's just for the encode and not while playing ?
Eternal SPU is one of the best for quality. I think all it would do for a TAS is desync your encode. I was expecting it to sound like the reverb buffer was broken like the old SPU that came with epsxe. I've never heard the background noise present in your video before. Strangely enough in my test run Zidane goes first in the masked man battle.
Working on: Legend of Legaia, Vagrant Story
Joined: 11/22/2004
Posts: 1468
Location: Rotterdam, The Netherlands
Lil_Gecko, could you send me your movie file? I presume you're using the NTSC version (a CD-ROM version identifier would be nice)? I'd like to give this a try to see if I get the same result and if I can fix it. Also, I presume you're using PSXjin?
Lil_Gecko
He/Him
Player (97)
Joined: 4/7/2011
Posts: 520
Dada wrote:
Lil_Gecko, could you send me your movie file? I presume you're using the NTSC version (a CD-ROM version identifier would be nice)? I'd like to give this a try to see if I get the same result and if I can fix it. Also, I presume you're using PSXjin?
Thanks Dada. I'm using psxjin 2.0.1 The version I'm using is SLUS-01251 Here's the movie : http://www.megaupload.com/?d=XLJW6GQ9
Joined: 2/15/2009
Posts: 329
I must be really dumb. It took me 6400 frames (54 increases of the pointer) before a value fell into the 0-15 range. I did indeed steal the mage masher making me think I partially understand this. You guys seem to be doing it in 2 seconds max. I have RAM watch on address 0007B720. The value of that address (0007B720) at the start of my battle is 8007B857. I open RAM Search. I check the "Greater than or equal to" option button. (to get the full table of numbers... I think) Under "Specific address" I type 7B857. My results show: Address (0007B857). Value (11). . . My next (0-15) value isn't until Address (0007B88D). Value (0). Is this list static and created when I start a new game? Is my only option to find ways to increase the pointer faster? EDIT: After watching your input file and staring at all kinds of memory viewers I realize I have no clue what I'm doing.
Working on: Legend of Legaia, Vagrant Story
Lil_Gecko
He/Him
Player (97)
Joined: 4/7/2011
Posts: 520
exileut wrote:
I must be really dumb. It took me 6400 frames (54 increases of the pointer) before a value fell into the 0-15 range. I did indeed steal the mage masher making me think I partially understand this. You guys seem to be doing it in 2 seconds max. I have RAM watch on address 0007B720. The value of that address (0007B720) at the start of my battle is 8007B857. I open RAM Search. I check the "Greater than or equal to" option button. (to get the full table of numbers... I think) Under "Specific address" I type 7B857. My results show: Address (0007B857). Value (11). . . My next (0-15) value isn't until Address (0007B88D). Value (0). Is this list static and created when I start a new game? Is my only option to find ways to increase the pointer faster? EDIT: After watching your input file and staring at all kinds of memory viewers I realize I have no clue what I'm doing.
Actually you did everything right. You just had a different list of numbers than me, and your list was pretty bad for stealing the Mage Masher. What numbers are going to be in the list is determined based on which frame you pressed "New Game". Just delaying the moment you pressed new game by one frame is gonna give you a whole new list of numbers which may result on a faster steal. If not try delaying by 2 frames and so on. EDIT : I've redone the beginning using a 3 frames delay before selecting "New Game". The list of random numbers was WAY better. The first fight is now faster and better looking as the Masked Man only use his turn to kill Cinna. The second battle is also faster as Zidane can act right away and the ennemies still don't use magic. A few frames are also gain on the sword fight by having more left and right that are slightly faster. I think this one is good enough to start with. http://www.megaupload.com/?d=BCH9TXFY
Joined: 11/22/2004
Posts: 1468
Location: Rotterdam, The Netherlands
Lil_Gecko wrote:
Just delaying the moment you pressed new game by one frame is gonna give you a whole new list of numbers which may result on a faster steal. If not try delaying by 2 frames and so on.
That must be incredibly tedious. That's actually the same thing I went through when I made a brief test of FF3j for NES, for every single battle. I can't imagine how much time pirohiko must have spent to get his battles right when he made the full run.
Joined: 2/15/2009
Posts: 329
Your first battle is 23 seconds faster than the SDA run. I was being negative before. Now I'm here to show support!
Working on: Legend of Legaia, Vagrant Story
Joined: 3/27/2010
Posts: 32
I'm going to support with gameplay questions.
Lil_Gecko
He/Him
Player (97)
Joined: 4/7/2011
Posts: 520
I just wrote a lua program that let me know how to make critical hits and here's what I got. If Spirit is between........................................Random Number needed in the 4th byte 18-23.............................................................No critical hit possible 24-27.............................................................079 086 093 100 193 200 28-31.............................................................086 093 100 165 172 179 186 193 200 32-35.............................................................079 086 093 100 36-39.............................................................079 086 093 100 151 158 165 172 179 186 193 200 40-43.............................................................No critical hit possible 44-47.............................................................065 079 086 093 100 151 172 186 193 200 48-50.............................................................079 086 093 100 151 158 165 172 179 186 193 200 So my question is where would be the earliest place I can find something to boost the spirit of my characters ?
Joined: 2/15/2009
Posts: 329
Lil_Gecko wrote:
I just wrote a lua program that let me know how to make critical hits and here's what I got. If Spirit is between........................................Random Number needed in the 4th byte 18-23.............................................................No critical hit possible 24-27.............................................................079 086 093 100 193 200 28-31.............................................................086 093 100 165 172 179 186 193 200 32-35.............................................................079 086 093 100 36-39.............................................................079 086 093 100 151 158 165 172 179 186 193 200 40-43.............................................................No critical hit possible 44-47.............................................................065 079 086 093 100 151 172 186 193 200 48-50.............................................................079 086 093 100 151 158 165 172 179 186 193 200 So my question is where would be the earliest place I can find something to boost the spirit of my characters ?
Prison Cage steal: Leather Wrist +1 Plant Brain steal: Iron Helm +1 Dali weapon shop: Bronze Gloves +1 Feather Hat +1 Leather Wrist +1 Lindblum: Coral Ring +2 Weapon shop: Leather Wrist +1 Iron Helm +1 Synth: Desert Boots +1 Glass Buckle +2 Zaghnol steal: Mythril Gloves +1
Working on: Legend of Legaia, Vagrant Story
Lil_Gecko
He/Him
Player (97)
Joined: 4/7/2011
Posts: 520
Thanks. The Leather Wrist is gonna be enough for Zidane to make critical hits as shown right away in the Baku fight. So here it goes : up to World Map. http://www.megaupload.com/?d=EL4NEXQF Ideas for the next parts ? Things I've missed I should have take ?
Joined: 2/15/2009
Posts: 329
Desync around frame 44000-46000 :( Dialog box King Leo: "Thou hast not seen the last of me, Marcus!" is skipped a few frames too early and its the last thing I see. The battle commands before the desync seemed to be frame precise. Edit: I have tried a few more times and it desyncs every time I watch it. I hope the next 130k frames can be salvaged....
Working on: Legend of Legaia, Vagrant Story
Reviewer, Active player (286)
Joined: 12/14/2006
Posts: 717
I've had problems when I tried to make movies of this game, too. Every once in a while, it seems you have to watch from the beginning (don't fast forward) and make a savestate while playing the movie to continue properly.
Lil_Gecko
He/Him
Player (97)
Joined: 4/7/2011
Posts: 520
You have to use psxjin 2.0.1, otherwise, with psxjin 2.0.2 for exemple, it will desync at the exact moment you said.
1 2
6 7 8
26 27