Post subject: Romancing SaGa 2
Player (158)
Joined: 5/20/2010
Posts: 295
This JRPG game was only released in Japan, so I wonder how many people who are interested in this game there are. I made a full game TAS. http://tasvideos.org/userfiles/info/71279996787123946 Unlike 1646M, which is a published TAS, battle skip glitch is not used. I hope you enjoy it.
Player (158)
Joined: 5/20/2010
Posts: 295
I'm not going to improve my TAS in the near future, but I tested something. 4th character's command should be inputted at 0x5A for Gerard to learn Power Hit in Hobgoblin and Goblin x2 battle. (Maybe, starting Gerard at 0x54, AB cancels at Therese.) The order of defeating Goblins might be changed. On lsnes, File -> New -> Movie, Check Random Initial State, and different Initial RTC values cause different damage of Earth Splitter. Although I've not discovered a suitable initial RTC value yet, Earth Splitter with maximum effect value is probably available on lsnes.
Player (158)
Joined: 5/20/2010
Posts: 295
I've got discovered a suitable initial RTC value for Earth Splitter with the maximum effect value. It's 6:00, which makes initial value of 7E0D6B 0xFF. And in that case, initial value of the battle RNG(7E0D1F) is 0x1C, which makes some battles faster, and others slower. c.f. The address of the current effect value in battles is 7E0D80, which is stated in my LuaScript. Now it is possible to make a TAS with Earth Splitter with the maximum effect value, but I've not been accustomed to using lsnes, which makes it difficult to make a new TAS.
Player (158)
Joined: 5/20/2010
Posts: 295
I've written an impromptu LuaScript for lsnes. -> https://pastebin.com/GKY81kSw Sadly battle simulation or RNG graph is not available because of my lack of programming skills. I wish I could translate my LuaScript for BizHawk or snes9x into a LuaScript for lsnes, but I guess it's still enough to make a decent TAS. c.f. LuaScript for BizHawk -> https://pastebin.com/PS5cSnqg , snes9x -> https://pastebin.com/4xxeTudM
Player (158)
Joined: 5/20/2010
Posts: 295
I've got understood how to set colours and how to draw rectangles. Now RNG Graph is available on my LuaScript for lsnes. -> https://pastebin.com/xZLcJWGj P.S. Initial RTC value: 13: 0 also enables you to use the maximum effect value. In that case, initial battle RNG(7E0D1F) is 0x39. It would be better. edit: Also, Initial RTC value: 32767: 0, initial battle RNG 0x22.
Player (158)
Joined: 5/20/2010
Posts: 295
NPCs' RNG may be 7E130A and 7E130B. If you fix the both values, NPCs tend to move in one direction. Although sometimes they change their direction for unknown reasons, their movement seems to be largely regulated by the address. As for initial RTC, if you set 2n+1: 0 for n, then initial WRAM slides by one address. It follows that if you would like to find a suitable initial RTC manually, you have only to assign even numbers.
Player (158)
Joined: 5/20/2010
Posts: 295
MC Bug (MAP Change Bug) , which was used current published tas ( https://youtu.be/HzZKAnFbEbQ?t=3849 ), though there are some improved any% tases on nicovideo, is well-known by Japanese geeks of this game. However, address information is rare. So I'll add some. 7E1313 Each time you change MAPs, it is added by one. 7E13AF, 7F8E41, 7F8E51, 7FA4D5 and 7FB836 also changes, though their effects are unknown. 7FB001, 7FB041, 7FB0C1, ... , 7FB281 (0x7FB001+0x80*n (n=0, 1, ... , 0xB)) also changes, which determines NPCs speed (if the values are 0, they don't move). According to the author of a tas on nicovideo, Emperor/Empress class character and the number of the party members and the last NPC you spoke to or the last enemy you touched also affect. Some Japanese walkthrough site notes that the class ally character you spoke to last and the last spoken NPC who teaches you fusion magic affect a bug character you can invite. I'll add addresses. 7FFF0A is the class you spoke to last and 7FFF0B is the last fusion magic teacher. edit: The bug's result is different from not the class but the each ally character. 7E138A and 7E138B are important. If you fix the both values and you speak to an NPC or press start, text dialogue is glitched. Sometimes you warp at random or a battle starts. Further research of this bug is necessary for bug limit 100% or all events without save corruption category. It is the only way a promising way to cope with the both Salamander and Umbrology (and I personally think using the bug for other purposes for these category should be prohibited). Well-known way, which was caused by entering Shipwreck has a defect. Event flags are rewinded. edit: You can also get the Ancient Magic Tome by other serious bugs, Counter Bug and Wraith Form Bug. Counter Bug: This bug is triggered by an ally(=A) who is casted revive got defeated by another ally's(=B) counter type attack from a multiple target attack by a confused or charmed ally(=A). It corrupts RAM. One of the result is that you can find Ancient Magic Tomes and many other equipments and items in the warehouse. Wraith Form Bug: This bug is caused by an ally who cannot have any magic after he/she cast Wraith Form cast the spell. It also corrupts RAM. Equipments and items in the warehouse are rewritten, though Wraith Form itself can be learned when you give up Salamander. These two bugs can cause serious multiple results. Currently, they are not controllable. Another way to get the Ancient Magic Tome is subframe reset. By the way, any% tas and rta with subframe reset are already completed and you can watch them on nicovideo. Note: All above serious bugs are not available in the remastered version.
Player (158)
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.
Player (158)
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.
Player (158)
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