1 2
6 7 8
Joined: 1/4/2011
Posts: 35
I don't know if anyone is still working on this, but here's an update on what's happened recently. The current US version RTA best time is now 4:08:12 by TheClaude on twitch. I have also been recently streaming on twitch, but my best RTA time is only 4:19:54. I have plans in the near future to update my segmented run again with a target of sub 4 hours. I definitely recommend checking out his and my twitch pages if you want to see what's going on.
Post subject: BIFF GIFF SECURITY DIRECTION
Joined: 3/19/2005
Posts: 63
Location: SuPeRZzT LaNd
Algus: C'mon! Animals are life Lifetime on top of Ramza's troop. ] Ramza: Alma...I'm coming! Just hold on...!! - Hall of St. Ajoraheerful personality, she is well respected meister of producing advanced weapons. Also a cardinal second only to the ground dead as a human just like myself. So,ve been more help. Please be safe.........
HWIOHIIOWHIOHIDH HEBlkbnrkashpoirhjpakirhkl;23332232322
Active player (451)
Joined: 12/24/2010
Posts: 297
Location: CT, USA
Been having trouble with every PSX emulator under the sun trying to play this, yadda yadda yadda, tried PSXjin. AI hangs, came to check this thread, saw Bif's .ini fixed it, gave it a whirl. Copying Bif's .ini does solve the AI hanging issues, but any use of savestates (saving or loading) would instantly unload all loaded textures/sprites/polygons (and dw0914's post confirms it wasn't an isolated with my computer). So I started with a newly generated .ini from a fresh unzip of PSXjin and in isolated sections I would swap to the settings from Bif's .ini until the AI would work. Under [Plugins] change the lines PsxAuto=0 PsxOut=0 to have 1 instead of 0. As far as I can tell from the first two battles, the AI is working and there's no graphical unloading either. No idea what those lines do, but that's the culprit. I'll be playing the game all the way through, so if there's a problem at some point, I'll either edit it in or submit a new reply.
Joined: 1/4/2011
Posts: 35
Interesting... Just to update, I have been working on a another (!) new segmented route based on a lot of input from TheClaude's RTA attempts. I am up to the waterfall battle in chapter 2 and I am already over 17 minutes faster than my 4:22 segmented run. Since the RTA record is still 4:08:12 (as far as I know) and my best splits for my 4:15:00 RTA add up to around 4:02:00 or so, this segmented run will easily be sub 4 hours, possibly even sub 3:50. I figure an excellent TAS could be 3:30 or so, but who knows? However, since my son will be born next week, I will probably not have much to work on this in the near future.
Player (42)
Joined: 12/27/2008
Posts: 873
Location: Germany
All right, I think I'll work on this run. Huge thanks to VanillaCoke, his suggestion to change the config saved me a lot of time getting this game to work. Anyway, I started today trying to understand the RNG. From my own experience this is much simpler than trying to brute force blindly, and can make the run much simpler to finish. TL;DR FFT uses the standard PSX bios RNG for everything, it's in the Python code below:
Language: Python

def rng(seed): seed = (((0x41c64e6d*seed)&0xffffffff) + 12345)&0xffffffff val = (seed >> 16)&0x7fff return (val, seed)
As said, the code above is in the PSX bios (more precisely scph1001), so it could be used by many other PSX games. Anyway, I still don't know what are the routines that call this and when they do. When you're waiting to confirm an attack sometimes the RNG is rolled once after a frame, other times it's rolled seven. I still have a lot of work to do =/ If you're not interested in how I found this code you can stop reading now. Apparently every time the game needs a random value it will "call" the subroutine at 0x2230c:
.data:0x0002230c	240a00a0	li $10,160
.data:0x00022310	01400008	jr $10
.data:0x00022314	2409002f	li $9,47
I say "call" in quotes because the instruction used is actually JAL (jump and link), every code that uses the RNG jumps to that code and stores where it has to come back at the link register (R31). Why did I include an instruction after the jump? Because it's MIPS, and there's a delay after a jump instruction so compilers usually optimize this and put an LI after a jump. For our purposes, it jumps to A0, keeps R31 the same and sets R9 to 47. At 0xa0 we have:
.data:0x000000a0	3c080000	lui $8,0x0
.data:0x000000a4	250805c4	addiu $8,$8,1476
.data:0x000000a8	01000008	jr $8
.data:0x000000ac	00000000	nop
It jumps to 1476 (0x5c4)
.data:0x000005c4	24080200	li $8,512
.data:0x000005c8	00094880	sll $9,$9,0x2
.data:0x000005cc	01094020	add $8,$8,$9
.data:0x000005d0	8d080000	lw $8,0($8)
.data:0x000005d4	00000000	nop
.data:0x000005d8	01000008	jr $8
.data:0x000005dc	00000000	nop
Here we see something interesting. It multiplies R9 by 4, adds it to 512, fetches the value and jumps to that address. So, we should understand this as fetching a "function pointer" from the position R9 of the array. At 47*4+512=700 (0x2bc) we have the address 0xbfc02200. That's a BIOS address, and PSXjin doesn't show these addresses at the memory viewer (it can be modified to do that though). At that address we find the BIOS RNG:
.data:0x00002200	3c03a001	lui $3,0xa001	
.data:0x00002204	8c639010	lw $3,-28656($3)	
.data:0x00002208	3c0141c6	lui $1,0x41c6	
.data:0x0000220c	34214e6d	ori $1,$1,0x4e6d	
.data:0x00002210	00610019	multu $3,$1	
.data:0x00002214	3c01a001	lui $1,0xa001	
.data:0x00002218	00001812	mflo $3	
.data:0x0000221c	24633039	addiu $3,$3,12345	
.data:0x00002220	00031402	srl $2,$3,0x10	
.data:0x00002224	30427fff	andi $2,$2,0x7fff	
.data:0x00002228	03e00008	jr $31	 
.data:0x0000222c	ac239010	sw $3,-28656($1)
If someone could double-check that my python function does the same as this, I'd be very happy. The seed is located at 0xa0010000 - 28656 = 0xa0009010 0xA0009010 is the same address as 0x00009010, and that's where the seed is (if you use SCPH1001, of course). So, whenever you TAS a PSX game, look at 0x9010. There's a reasonable chance that the RNG seed might be there. For now, I have to look at more code to make something useful of this address...
Joined: 1/4/2011
Posts: 35
Someone's working on this? Sweet, good luck!
Player (42)
Joined: 12/27/2008
Posts: 873
Location: Germany
Thanks, but I haven't done anything useful until now, basically because the first battle at Orbonne is difficult to manipulate. I thought I had posted my method to manipulate luck in this game here, but I haven't, so I'm posting now. As mentioned in the previous post, the RNG seed is at address 9010, and I have the algorithm that updates it. At the confirmation screen for an attack, the number of times the game usually rolls the RNG is 1/7/1/7/1/7/... (it can mess this sequence a bit though), and for every two frames, you can confirm the action at only one. So, if we manipulate luck naively, by waiting a few frames before confirming the attack, you'll get 8 rolls between each try. That will make you look only at 1/8 of all RNG possibilities, and it can waste a lot of time to get something as simple as a max damage critical hit. You can get the other 7/8 of RNG values though, because depending on what the game is doing, it rolls by 4/1/4/1 or even something like 15/7/15/7, so if you wait frames at some point that's not the confirmation screen, you can get all possible seeds. But if we just brute force all frame waits, this will be a very inefficient bot. So, my method is this: I first go to the luck-based event with no frame loss, confirming it at the earliest possible point and take note of the RNG value. This value will be the number with the fewest amount of rolls. If I don't get the critical hit, or whatever I want to manipulate, I read the RNG from the memory, update it with the algorithm I found in the game binary (to simulate exactly 1 roll), and use a Lua script to hack that value in the RNG memory and try again. I repeat this until I get what I want. Then I take note of how many rolls I need to get that value legitimately. After that, I add the frame waits so that they give me that value when I confirm the action. The part of adding the frame waits is easy to do, but the rest is a pain to do, and I've been traumatized by time-consuming luck manipulation in the old pokemon 151 run, so I've been trying to automate most of this process, but didn't have much time to do that either. Sorry for filling this with RNG stuff, but that should only matter for chapter 1 battles, and the run should be fast to finish after that.
Joined: 1/4/2011
Posts: 35
If you don't mind my asking, what is your plan? Are you simply going for fastest time, or are you thinking of sacrificing speed for entertainment in some fashion? Are you grinding to Math Skill ala my segmented run, or could it be faster to go without Math Skill in the long run if the grinding takes too long?
Player (42)
Joined: 12/27/2008
Posts: 873
Location: Germany
That's a very good question. I have to see to what extent I can luck manipulate the game so that I can skip grinding to Math Skill. I'll test if it's easy to manipulate the experience of the enemies so that I can hit them with exp5/exp4 math, but even if grinding to math turns out to be faster, I'll probably sacrifice speed so that I can spread it out across story battles, as grinding looks very ugly in a TAS.
Joined: 1/4/2011
Posts: 35
Just a quick update for a new target time for the TAS: I finished recording my new segmented run yesterday. My final time is around 3:38:25. I've highlighted all of the segments on my twitch channel if anyone wants to check them out: http://www.twitch.tv/chessjerksda
Joined: 9/12/2014
Posts: 535
Location: Waterford, MI
Hey guys! I'm working on a tas of this game as of now. Problem is file space on my computer.. Would anyone like to see it? Its made in psxjin2.0.2 Make sure to open the psxjin.ini file and change: [Plugins] PsxAuto= PsxType=0 To this: [Plugins] PsxAuto=1 PsxType=1 We don't really know how that fixes this game, but can't really complain that it works. Here is the file: https://www.dropbox.com/s/im0em80zgu2qvzz/fft.pjm?dl=0 Now dropbox removes the file after a certain amount of clicks. So be careful. I will make a new one if needed. I'm right past Arguary woods on chapter 2 and that's where the movie ends for now. My goal was to never have an ally miss and if an ally is defending, the enemy must miss the attack. Which is not that hard due to the unlikely hood of it actually hitting. Same thing goes if an enemy is defending. If they're defending, you must hit the enemy. Not too difficult if you got some patience. The second goal was to get past more than 1 random encounter per save state. As it takes time to stop and manipulate it once again. I'm using the outdated speed walkthrough on gamefaqs to get through this game. I'm already 10 minutes ahead of the "best" time on there. Or even more than that. Idk. He only shows the best time after every chapter because he knows that we can tell what he did within those times. I'm curios to know if he used the PAL version. I got a couple of critical hits throughout the run(unintentionally) meaning I didn't really have the patience to get a critical hit. I got a critical charge-6 on miludo(or whatever her name is) in the second battle with her. That is so low to happen. Let alone have it hit period. The charges never missed. I mean, their hit percentage is pretty low so I guess I got real lucky not having to manipulate it. I tried to manipulate "guest" movement. Like I wanted that chocobo to hit the goblin captain but he just wouldn't do it. Anyways, I would really appreciate it if someone can combine all those movie files it creates into a single avi file. I just use windows movie maker. And send it over to me as soon as possible. [Edit] that run is truly awful. I forgot to change the settings at the beginning.. I could have saved probably an hour if I done that.. Very embarrassing I know.. It's like if I played a role playing game and forgot to set text speed to fastest. You would lose hours worth of time forgetting that..
Joined: 1/4/2011
Posts: 35
I was going to say, don't use the gamefaqs speed walkthrough, it is VERY outdated. I think that walkthrough says that sub-7 hours is highly unlikely, whereas my latest segmented run for SDA is 3:38:25 and the fastest RTA by Claude is 3:58:26. Your goal of never allowing allies to miss and never allowing enemies to hit won't really save you much time unless you have strategies to win battles as quickly as possible. Plus, you really need to manipulate critical hits, there's no excuse not to do so in a TAS. I'm curious about this "charge-6" on Miluda, what do you mean by that? There is no "charge-6" ability in FFT as far as I am aware. Also, certain guests cannot be manipulated. Boco is programmed to run away all the time, that's why you couldn't manipulate him to hit the Black Goblin.
Joined: 9/12/2014
Posts: 535
Location: Waterford, MI
Charge-6 is an archers ability. It dealt like 90 damage that early in the game.
Joined: 1/4/2011
Posts: 35
There is no Charge +6. The archer abilities are Charge +1, +2, +3, +4, +5, +7, +10, and +20. Maybe it was Charge +7? Also, as I mentioned before, you should just go for critical hits instead of using Charge. Critical hits can nearly do double damage of a normal hit. EDIT: Also, you mentioned that you were maybe 10 minutes ahead of the time in the walkthrough. That walkthrough mentioned his best time through chapter one as 1 hour 50 minutes. My segmented run gets through chapter one in 1:11:08, so it sounds like you are quite a bit behind. I should also ask...are you doing this TAS to get it on TASVideos or are you just doing it for your own personal enjoyment? I ask because if you do a TAS using very old outdated strats and the final time is much worse than known records, there's no way the TAS would get published here.
Joined: 9/12/2014
Posts: 535
Location: Waterford, MI
I'm just doing it for personal enjoyment. I don't like competition..
Joined: 1/4/2011
Posts: 35
All right then, disregard all the stuff I posted previously. Have fun!
Joined: 1/4/2011
Posts: 35
My new segmented speed run is up on SDA. The timing was changed to 3:33:15 since SDA changed how runs are timed when you can't see the timer at the end of the game. The difference between the 3:33:15 time and the 3:38:25 is mostly due to loading times counted for the in-game timer but not for SDA purposes since they are at the beginning and end of segments. So, who's ready to do a TAS? :)
Joined: 9/12/2014
Posts: 535
Location: Waterford, MI
Hey chessjerk, didn't you get my PM a couple of months ago? A TAS request? I didn't ask for much luck manipulation for this game. Getting critical hits is such as pain!
Joined: 1/4/2011
Posts: 35
Ha, my bad. I never even noticed I had a PM in my inbox. I'll look and see if my glitchless no math notes are in a somewhat readable format. Also, I have no plans to do a TAS myself, mainly because I have never TASed before and have no idea how to do it, and I simply don't have the time due to my current personal situation.
Joined: 9/12/2014
Posts: 535
Location: Waterford, MI
Well, I've tased before. If you have the notes, I'll make a flawless run. I just won't be getting criticals. Misses are a definite no.
Patashu
He/Him
Joined: 10/2/2005
Posts: 3999
My Chiptune music, made in Famitracker: http://soundcloud.com/patashu My twitch. I stream mostly shmups & rhythm games http://twitch.tv/patashu My youtube, again shmups and rhythm games and misc stuff: http://youtube.com/user/patashu
Joined: 9/12/2014
Posts: 535
Location: Waterford, MI
Btw guys, I'm having that same problem loading fft on bizhawk. That same place where everything just stops..
Active player (250)
Joined: 12/13/2016
Posts: 352
Not sure if people have been following this or not, but the nico TAS of this game that Patashu posted about at the end of 2015 has finally been completed in 3:43:03 (using PXSjin) http://www.nicovideo.jp/mylist/54131609 It's pretty suboptimal imo, I think but could be a good starting point for people to work with.
Joined: 1/14/2016
Posts: 97
For optimal FFT tasing, the NA version is a little different (e.a. it has a weapon duping glitch) and faster because of it: the segmented WR is 3:33:15. Even with timing differences which I am not sure apply in this case, the ending cutscene is about 6 minutes in the nico TAS, though parts of it are played at twice the speed, so the segemented run should still be faster than the TAS. edit: NA has exclusive weapon duping, but JP has an exclusive secret hunt glitch which I forgot about and which allows you to buy all items from chapter 3 onwards. Together with faster text, this should make JP faster.
Active player (250)
Joined: 12/13/2016
Posts: 352
Different runner just posted a complete set of videos (psxjin) completed in 3:18:29 Link to video
1 2
6 7 8