Posts for neo_omegon

1 2
11 12
Experienced Forum User, Published Author, Player (160)
Joined: 5/20/2010
Posts: 295
From 20:10-, the game is seriously bugged. https://www.nicovideo.jp/watch/sm20502883 This is probably a hardware failure.
Experienced Forum User, Published Author, Player (160)
Joined: 5/20/2010
Posts: 295
I researched how many steps you can walk before a random battle starts. This might differs from region to region or the number of party members. without equipping Shumuba Armor: 16-47 with equipping Shumuba Armor: 8-23 You can see that Shumuba Armor's effect is halving the steps rounding down to the nearest decimal until a random battle starts.
Experienced Forum User, Published Author, Player (160)
Joined: 5/20/2010
Posts: 295
I researched about encounters by a primitive way as I could not find significant addresses especially about enemy parties in the ram and rom. The way of researching is by a luascript that repeats saving savestates, walking automatically until starting random battles, and then read and output the number of steps until you encounter, step RNG(7E0032) when you encounter, drop item ID, the number of the drop item, drop rate, enemy ID, total exp, calculated exp and money by print or io.write, loading savestates while inserting a blank frame before starting walking. I found 7E1046 points event battle ID and 7E1047 points the region where you are. If you change 7E1047, the enemies you encounter change, but the value of 7E1047 did not change through casual playthrough. While inserting a blank frame and changing the value of 7E1047, 25600 battles (100 battles in each value of 7E1047) are output. However, they does not seem to cover the whole enemy party and to make matters worse, glitched enemies appeared in some cases. The number of steps before you encounter is from 10 to 98. Step RNG when you encounter is from 2F to 33 and from 95 to 99 in hexed. If step RNG is other value, you seem to encounter glitched enemies. Drop items seem to be mainly consumable items and doping items. 7E0C5E-F and 7F0000-1 seem to point a current location, but the values are different from each other. Screen transition while fixing the value or the values does not seem to work properly. Fixing the X or Y position does not change the back ground image. If you would like to test some things, basically, you have to walk to the place manually. From 7F0002- seem to point map tile information, but if you fix the value of 7F0002, not the tile of (0, 0) but all the tiles whose X is 0 change.
Experienced Forum User, Published Author, Player (160)
Joined: 5/20/2010
Posts: 295
There are other facts that I have found and that have not been mentioned anywhere. Whether NPCs can join in your party again or not is not mentioned anywhere. Three NPCs, Hyoutoku, Yamako and Kiyomasa should be paid attention to. These three persons can join only once. If you fire them, they will never join again. Yamako cannot be fired freely, though. Hyoutoku and Yamako can be joined either before or after you go to the Nether World. If your NPC member slots are full, events where those NPCs join will not happen. Kiyomasa can be joined only before you go to the Nether World. Even if you did not employ him, he disappears after you return from the Nether World. Seimei might be paid attention to. His house cannot be accessed just by going a little forward in the game. Scrolling text messages can be done automatically by luascript. Which character can move faster in a battle is determined by Agi. If multiple characters have the same Agi, the priority is the 1st ally, the 2nd ally, ..., the 1st enemy, the 2nd enemy, ....
Experienced Forum User, Published Author, Player (160)
Joined: 5/20/2010
Posts: 295
I have found a lot of things. I will two or three posts continuously, so please forgive me. Total exp you can get after the battle are 2 bytes of unisigned int. If you get more than 0xFFFF exp, they get overflowed and you get less exp. totalExp ≡ totalExp (mod 0x10000) This can only happen in the final boss battle and the secret boss battle. Lvl up motion is cancelled after the final boss battle but exp are counted in the WRAM. Of course, it is meaningless for you cannot save the game after the final battle. There are some glitches about Lvl 99. Although they are irrelevant with speedruns, they have not been mentioned anywhere, so I will written them. After you reach Lvl 99, doping items except for maximum HP can no longer work properly. Maximum MP boosters will not boost them at all. Other stats boosters make the demanded exp for the next Lvl zero, but the Lvl is already maximized and can no longer go up. Stats will not go up, too. When you use doping items when your Lvl is less than 99, your Lvl corresponging with the items goes up by one. It does not change the demanded exp for the next Lvl. That is the proper function of the doping items. And you will reach the conclusion that doping items should be used just before your Lvl goes up. The actual maximum HP or maximum MP goes up by eight and the actual stats goes up by four by using the items. It may make the player stronger or weaker. The value of the stats by ordinary leveling up is random. Note: Lvl of HP and exp of HP cannot be seen without RAM watch unlike other stats. You can get exp by winning the battle and the exp you got are counted even after you reach Lvl 99. The exp only repeat from 65535 to 0. Game time also loops. After it reaches 99 hours and 59 minutes, seconds or framecounts repeat from 0 to 3599. Note: Framecounts in the game cannot be seen without RAM watch and game time can be seen only when you save or load the save data. The only way to get more stats after you reach Lvl 99 is random boosts by NPC, but I have not seen them after I reached Lvl 99. Maybe it did not take much time to check it. The only thing I identified is that Hokutomaru's maximum MP is going up after his faith Lvl reached 99. And they continue going up over 999. Money can be over 999999. If you win and win the battles, you will continue getting money. If your money is over 999999, hundred-thousands digit looks glitched. If you try to get more than 0xFFFFFF(=16777215) money by winning a battle or by selling an item or items, it overflows and sharply drops. If you sell an item or items when your money is over 999999, your money is cut down to 999999 if the money after you sell is more than 999999 and less than 16777216. Turns in the battle cannot be counted over 255. 256th turn is 0th turn and exp you can get increase markedly in that case.
Experienced Forum User, Published Author, Player (160)
Joined: 5/20/2010
Posts: 295
There are npc and magic that enable you to get a little more money after the battle in this game. The correct amount has not been clear so far. I have just got found this. [ ]: floor function M: sum of the money all of the enemies you encountered have If either npc or magic is available, M+[M*1/10]+1. If both npc and magic are available, M+[M*1/10]*2+1. (So far, no one has mentioned that plus one.) The magic that makes item drop rate twice does not exactly make it twice. Its correct effect is halving the denominator of the item drop rate, rounding down to the nearest decimal. There is an address that points the denominator of the item drop rate in the WRAM. If the value is 255, each time you use that magic, it changes 127, 63, 31, 15, 7, 3, 1, 1, ..., 1, .... (Of course, you do not need to use the magic after the rate reaches one.)
Experienced Forum User, Published Author, Player (160)
Joined: 5/20/2010
Posts: 295
Further research reveals that when you are attacked. Each time you are taken a physical attack, 1/8 of exp of the attacking enemy is accumulated. Then if you win the battle, the accumulated value is directly added into exp of def. Each time you are taken a magic attack, three or five or some small points are accumulated. Then if you win the battle, the accumulated value is directly added into exp of faith. So the final result is below: [ ]: floor function N: turns taken in the battle Val: total exp set in each enemy in the battle (mod 0x10000) hpExp = [Val*(7/24-(1/6-1/(N+5)))] otherStatsExp = [Val*1/(N+5)]*(counter+1)+(accumVal) If you succeed in running away, agiExp = [Val*1/4]+(accumVal)
Experienced Forum User, Published Author, Player (160)
Joined: 5/20/2010
Posts: 295
Making a tas of this game seems to be difficult. There are no other RTA. One of the best walkthrough sites the name of which is "阿修羅幻想館" is no longer available. Other walkthrough sites are imperfect. So we have to research a lot of things, especially hidden chests and enemy drop items. There are a lot of hidden chests behind objects in this game. Enemy drop items depend on enemy parties, but there seems to be no address that points enemy parties. We have to check them manually. Each HP, Str, Def, Agi and Faith has its own exp. So far, it is not clear how many exp you get after a battle, but I finally have clarified it. I am not good at using a debugger, so the result is gotten by just watching WRAM through trial and error. N: turns taken in the battle Val: total exp set in each enemy in the battle exp of HP = Val*(7/24-(1/6-1/(N+5))) exp of the other stats except when you try to run away = Val*1/(N+5)*(counter+1) Note: counter starts from zero and is added by one by one action. For example, if you attack, your attack action counter is added by one. Even though your attack misses, the counter is added. If you defend, your defend action counter is added by one. If you use magic, your faith action counter is added by one. What you can understand from the above formula are: -If you would like to get higher HP, you should not take many turns in one battle. -If you would like to get one higher stat, you should not take a different type of actions in one battle. -If you would like to get more exp in total in one battle, you should take a different type of actions and finish the battle by the slowest character. Agility action counter is isolated from attack, defend, and faith action counter in the WRAM, and a formula written above is not applied when you try to run away. If you succeed in running away, a quarter of total exp is gotten in the exp of Agi. If you fail in running away, agility action counter is added by five and then if you win the battle, exp of Agi is added by Val*1/(N+5)+counter. If you fail in running away and then succeed in running away, exp of Agi is added by Val*1/4+counter. In that case, exp of the other stats including HP you can get is zero. Note: For those who do not know this game, not all the party members can run away all at once but each character runs away when you command in this game. The battle system itself is turn-based, but you command when each character's turn comes, which is similar to the battle system of super mario rpg or dragon warrior/quest xi. You cannot get any exp by using a smoke bomb even though you earn a lot of counter values. When your stat level goes up, excessive exp are truncated. The actual value added when your stat level goes up is random. TAStudio or LuaScript are powerful tools to manipulate it.
Experienced Forum User, Published Author, Player (160)
Joined: 5/20/2010
Posts: 295
Wow! There are a lot of things to consider. It is really challenging to make a tas of this game.
Experienced Forum User, Published Author, Player (160)
Joined: 5/20/2010
Posts: 295
This shows what enemy party you can encounter according to the location.
Language: lua

memory.usememorydomain("CARTROM") print("RomAdr") local Adr = 0xB305 -- 0xB69D local ePartyID = {} local s = {} local baseAdr = Adr local pre_b function getEnemyLocation() a = 0 b = 0 c = 0 s[b] = string.format("%X", Adr) ePartyID[b] = {} while Adr+2*a+c < 0xB69D do ePartyID[b][a] = memory.read_u16_le(Adr+2*a+c) if ePartyID[b][a] > 0x024D then b = b+1 c = c+1 baseAdr = Adr + 2*a+c ePartyID[b] = {} s[b] = string.format("%X", baseAdr) ePartyID[b][a] = memory.read_u16_le(Adr+2*a+c) end s[b] = s[b]..string.format("\t%04X\n", ePartyID[b][a]) --~ s[b] = s[b]..string.format("\t%04X", ePartyID[b][a]) pre_b = b a = a+1 end end getEnemyLocation() b = 0 function printEPartyID(y) while s[b] ~= nil do print(string.sub(s[b], 1, -2)) --~ print(s[b]) b = b+1 end end printEPartyID(0)
Although location itself has to be identified manually, once you encounter one enemy party, you can see the rest of the other enemy parties where you are.
Experienced Forum User, Published Author, Player (160)
Joined: 5/20/2010
Posts: 295
There is a minor glitch which is not mentioned and which is not useful. If you equip a stat-enhancing item and remove it (not selling it while you are equipping it) when your stat is high enough to reach 99, your stat is down. For example, when your int is 97, if you euip a Taraaku Helmet, your int will be 99 for that helmet raises int by ten. Now your int is 99, but when you remove the equipment, your int will be 89. If your level is high, you have to equip that helmet if you get the max int back.
Experienced Forum User, Published Author, Player (160)
Joined: 5/20/2010
Posts: 295
I've started studying this game. There is no instant death attack in this game. You have to grind levels. You cannot equip the strongest weapon if your level is under 40. You'll also run short of money. Encountering particular enemy parties and making an item drop after every battle is important. As there is no data about enemy parties and item drops, I searched. I'll show the source code of luascript on BizHawk in case I made any mistake. Inserting the code in a while loop is not necessary. enemy parties:
Language: lua

memory.usememorydomain("CARTROM") print(string.format("ePartyRomAdr\tePartyID\te1\te2\te3\te4\te5")) print(string.format("(Unknown)\t0000\t5A")) local ePartyRomAdr = {} local eID = {} local s = {} function eParty(x) local a = 0xB0ACC local b = 0xB139F local i = 1 while a < b+1 do eID[i] = memory.read_u8(a) a = a+1 i = i+1 end a = 0xB0ACC j = 1 k = 1 l = 1 while a < b do s[j] = string.format("%X\t%04X", a, j) while eID[k] ~= 0 do s[j] = s[j]..string.format("\t%02X", eID[k]) a = a+1 k = k+1 end a = a+1 j = j+1 k = k+1 end local y = x+0x60 if y > 0x24D then y = 0x24D end for i = x, y do print(s[i]) end end eParty(1) emu.frameadvance() eParty(0x60+1) emu.frameadvance() eParty(0x60*2+2) emu.frameadvance() eParty(0x60*3+3) emu.frameadvance() eParty(0x60*4+4) emu.frameadvance() eParty(0x60*5+5) emu.frameadvance() eParty(0x60*6+6) emu.frameadvance()
item drops:
Language: lua

memory.usememorydomain("CARTROM") print(string.format("dropItemRomAdr\tePartyID\titemID\titemID(h)")) local dropItemID = {} local dropItemIDh = {} local itemRomAdr = {} function itemDropRead(x) local y = x+0x60 if y > 0x24D then y = 0x24D end for i = x, y do itemRomAdr[i] = 0xB13A0 + 2*i dropItemID[i] = memory.read_u8(itemRomAdr[i]) dropItemIDh[i] = dropItemID[i] dropItemIDh[i] = string.format("%02X", dropItemIDh[i]) dropItemID[i] = tostring(dropItemID[i]) if dropItemIDh[i] == "00" then dropItemIDh[i] = "" dropItemID[i] = "" end print(string.format("%5X\t%04X\t%s\t%s", itemRomAdr[i], i, dropItemID[i], dropItemIDh[i])) end end itemDropRead(0) emu.frameadvance() itemDropRead(0x60) emu.frameadvance() itemDropRead(0x60*2+1) emu.frameadvance() itemDropRead(0x60*3+2) emu.frameadvance() itemDropRead(0x60*4+3) emu.frameadvance() itemDropRead(0x60*5+4) emu.frameadvance() itemDropRead(0x60*6+5) emu.frameadvance()
About RNG addresses, there are 8 or 9 candidates. (It might be more.) If I made all the values 0, enemies always dropped an item. Luck manipulation can be done by delaying inputs, opening and closing the menu in battles, changing walking courses. Holding A-button makes displaying text messages fast. The route and the strategy is not planned at all. I found almost all the useful addresses such as parameters boosted by reijutsu, enemy HPs, steps, season counter, event flags, location. I'll compile a luascript and a wch file and post it. The file will be zip, so maybe it will not be on userfiles but on mediafire or somewhere. (Zip files cannot be uploaded as userfiles, can they?)
Experienced Forum User, Published Author, Player (160)
Joined: 5/20/2010
Posts: 295
IIRC, holding a direction key or maybe pressing it at a particular frame or frames between a screen transition pushes you one pixel. That is what I found when I made a run. I'm too lazy to recheck it. Sorry, if I was wrong.
Experienced Forum User, Published Author, Player (160)
Joined: 5/20/2010
Posts: 295
Very nice run! I enjoyed seeing big skips and quick battles with Tifa. Well planned, manipulated and well-written submission text. Yes vote! And watching this new long tas encourages me to make other tases of other games.
Experienced Forum User, Published Author, Player (160)
Joined: 5/20/2010
Posts: 295
This does not have relevancy to a speedrun, but I found some interesting stuff about game time. Game time in this game are looked hexed values on WRAM, but you have to take them as decimal values without converting bases. This mechanism is also applied in another game (e.g. Lvl (7E1B6A) in Soul Blazer/Blader). NOTE: not %2d or %02d but %2X and %02X.
Language: lua

-- for snes9x local gameTime = {} function dispGT() for i = 0, 3 do gameTime[i] = memory.readbyte(0x7EFC1A+i) -- hour, min, sec, frame end gui.text(2, 1, string.format("%2X %02X %02X", gameTime[0], gameTime[1], gameTime[2])) if gameTime[3] % 0x60 < 0x30 then gui.text(2, 1, " : : ", "cyan") end end
Language: lua

-- for BizHawk local gameTime = {} function dispGT() for i = 0, 3 do gameTime[i] = mainmemory.read_u8(0xFC1A+i) -- hour, min, sec, frame end gui.pixelText(1, 1, string.format("%2X %02X %02X", gameTime[0], gameTime[1], gameTime[2])) if gameTime[3] % 0x60 < 0x30 then gui.pixelText(1, 1, " : : ", "cyan", 0x00000000) end end
Language: lua

-- for lsnes local gameTime = {} for i = 0, 3 do gameTime[i] = memory.readbyte(0x7EFC1A+i) -- hour, min, sec, frame end gui.text(1042, 0, string.format("%2X %02X %02X", gameTime[0], gameTime[1], gameTime[2])) if gameTime[3] % 0x60 < 0x30 then gui.text(1042, 0, " : : ", "cyan") end
Experienced Forum User, Published Author, Player (160)
Joined: 5/20/2010
Posts: 295
A few years ago, I made a tas of Japanese version of this game with debug code. http://dehacked.2y.net/microstorage.php/info/1616421210/Ys3jDebugmodeTAS.smv https://www.nicovideo.jp/watch/sm31577676 I am sorry for notifying you of this late. The reason why I have not posted it here is that I thought it was useless for making a full game tas.
Experienced Forum User, Published Author, Player (160)
Joined: 5/20/2010
Posts: 295
WRAMs concerned with Lady Luck Bug are: -7E129B : How many times did you exit from Oapu? -7E12E5,E6,EC-F0,F4 : Unknown function -7E12F5,F6 : game time(frame) Game time is recorded in this game. The value of 7E12F5(2u) starts from 3600(=0x0E10), then is decreasing one by one at each frame. When it changes from 0 to 3600, minutes of the game time(7E119E) are added. In Lady Luck Bug, the value can be over 3600. Inputs also affect Lady Luck Bug. Here are tables that show the WRAMs when each button is pressed.
rlXA
7E120010204080
RLDUSsYB
7E1201124810204080
Experienced Forum User, Published Author, Player (160)
Joined: 5/20/2010
Posts: 295
The world record of RTA ( https://www.speedrun.com/ffmq/ ) has not been beaten over one year, so the route and the strategy seems to be fixed. Why not try to make a new run?
Experienced Forum User, Published Author, Player (160)
Joined: 5/20/2010
Posts: 295
Sorry for my late reply and maybe it is not useful at all. I basically manipulated luck by trial and error by a lot of re-recordings when I was making a tas of this game. Btw, the whole run of Samurai Goroh's old published tas[942M] is set on the right side of these comparison videos. part1 -> https://www.nicovideo.jp/watch/sm33304474 part2 -> https://www.nicovideo.jp/watch/sm33312587 part3 -> https://www.nicovideo.jp/watch/sm33320582 I suspect that it is an excessive citation. Another problem of these videos is that the uploader failed to mention Samurai Goroh's newly published tas[2882M]. The upload date of these videos is June 2018 while the published date of Samurai Goroh's new tas is July 2015. P.S. The video title is also wrong. The oldest tas of this game is not the published one but the test run posted here if it is included. Plus, to begin with, for the purpose of reviewing the development of the strategy of the speedrun of this game, it is more suitable to make reference to SDA's Alex's run and Dominator's run.
Experienced Forum User, Published Author, Player (160)
Joined: 5/20/2010
Posts: 295
The tas of this game[1397M] was published, but I think there are plenty of things to be researched. So I make a thread of this game. First, I'll add information about Lady Luck Bug. This bug was used in the published tas. Each time you exit from Oapu, the value of 7E129B is added by one. If it reaches 0xA, various random things will happen. If the whole mechanism is elucidated and the bug has got to be under control to some extent, it is very grateful.
Experienced Forum User, Published Author, Player (160)
Joined: 5/20/2010
Posts: 295
Sorry for my late notification, but I lost one frame in the terminal in my published tas. Text message should have been scrolled by pressing A-button instead of B-button. Btw, you can get Chimaera Wing/Wing of the Wyvern with cheat, the name of which is famous in Dragon Quest/Warrior series. Unfortunately, it does not affect anything.
Experienced Forum User, Published Author, Player (160)
Joined: 5/20/2010
Posts: 295
Userfiles uploaded before around 1/2/2022 can't be downloaded, can they? edit: Seems not all of them, but large part of them. edit2 : Seems to be fixed. Thx!
Experienced Forum User, Published Author, Player (160)
Joined: 5/20/2010
Posts: 295
I remember some LPer battled against Subier at the Frozen Sea without talking to the Diver at Toba, but I've not ever reproduced the trick. The LPer played remastered version.
Experienced Forum User, Published Author, Player (160)
Joined: 5/20/2010
Posts: 295
I'll add how the values change each time you change world maps in the local areas in preparation for MC Bug. Some of these values are different whether you press A-button or B-button. The speed of change maps are also different whether you press A-button or B-button. 7E1313 : ±0, +1, ±0, +1, ... 0x7FB001+0x80*n (n=0, 1, ... , 0xB) : 55h, FF, 55h, FF, ... (alternately) 7E13AF : ±0, +8, ±0, +8, ... (A-button), +4, +8, +4, +8, ... (B-button) 7F8E41 : ±0, then +6 or -4, ... , Note: legit values are 1, 2, 3, ... , A (i.e. mod 0xA but 0 is not used. A is used.) 7F8E51 : the same value as 7F8E41 7FA4D5 : +1F, +1F, ... (each) 7FB836 : ±0, +5, ±0, +5, ... (A-button), +1, +5, +1, +5, ... (B-button) If you press A-button and B-button alternately, values except 7FA4D5 are not changed. Hope this promotes better understanding and research.
Experienced Forum User, Published Author, Player (160)
Joined: 5/20/2010
Posts: 295
Thank you for the quick reply! Well, I am happy to see you are interested in this game and Shiren the Wanderer Series is accepted here on tasvideos.
1 2
11 12