[Bug] The phantom Viki and invisible Sonya
-
- Global Admin
- Posts: 6204
- Joined: Wed Jun 30, 2004 3:29 pm
[Bug] The phantom Viki and invisible Sonya
There is an "invisible Viki" exploit known to speedrunners of this game who have been putting Cleo in slot 6 while Viki hasn't yet been recruited and the castle level is still 1. This lets players teleport to previously-visited areas to save a good chunk of time.
Twitch streamer Tomm88 used Pyriel's information to watch the coordinates of "Viki" and found some other characters that enable the same invisible Viki teleport function in the sub-basement...
Cleo - to the left of Viki's normal position (11, 11)
Sansuke, Juppo - slightly south of Viki's normal position (17, 14)
Eileen - south of Viki's normal position almost against the wall of Juppo's area (20, 20)
We're wondering if you choose not to recruit Viki and continue growing the castle if it's still possible to use this kind of exploit and also what other characters enable this bug.
Also, this same address is used to store Sonya's position when she is imprisoned...
Twitch streamer Tomm88 used Pyriel's information to watch the coordinates of "Viki" and found some other characters that enable the same invisible Viki teleport function in the sub-basement...
Cleo - to the left of Viki's normal position (11, 11)
Sansuke, Juppo - slightly south of Viki's normal position (17, 14)
Eileen - south of Viki's normal position almost against the wall of Juppo's area (20, 20)
We're wondering if you choose not to recruit Viki and continue growing the castle if it's still possible to use this kind of exploit and also what other characters enable this bug.
Also, this same address is used to store Sonya's position when she is imprisoned...
- Pyriel
- Webmaster
- Posts: 1229
- Joined: Wed Aug 18, 2004 1:20 pm
Re: [Bug] The phantom Viki
Well, if they can scratch a time-savings out of structuring their party, and otherwise skipping Viki, that makes me happy. I still kind of wish it could have been easily exploited for the 100/108% runs to get Pesmerga or Clive earlier or more reliably, but c'est la vie.
-
- Posts: 62
- Joined: Sat Feb 06, 2016 6:06 am
Re: [Bug] The phantom Viki
It does seem to help the any% route tomm is working on, allowing him to skip bringing Cleo to the Elves section. He also found a way to recruit Sonya right before the Shasazarade war battle! Not currently useful for the speedrun, but it is incredibly cool!
-
- Posts: 10
- Joined: Sat Nov 26, 2011 11:39 am
New Invisible Viki and Invisible Sonya
Hi all, I usually go by Tomm88 or similar but apparently I made an account here like 10 years ago called death_to_sanchez so I guess that's my forum name now
I'm a speedrunner and earlier today I was looking for a way to make the invisible Viki glitch happen without Cleo and (as much to my own surprise as any) I found one. Or, a few actually. And also a fun way you can recruit Sonya Shulen slightly earlier than you should be able to. Here's a video:
https://youtu.be/66kwF3Gm0qU
And here's my Twitch channel if anyone's interested
https://www.twitch.tv/tomm88
![Laughing :lol:](./images/smilies/icon_lol.gif)
I'm a speedrunner and earlier today I was looking for a way to make the invisible Viki glitch happen without Cleo and (as much to my own surprise as any) I found one. Or, a few actually. And also a fun way you can recruit Sonya Shulen slightly earlier than you should be able to. Here's a video:
https://youtu.be/66kwF3Gm0qU
And here's my Twitch channel if anyone's interested
![Very Happy :D](./images/smilies/icon_biggrin.gif)
https://www.twitch.tv/tomm88
- Pyriel
- Webmaster
- Posts: 1229
- Joined: Wed Aug 18, 2004 1:20 pm
Re: [Bug] The phantom Viki and invisible Sonya
That's cool. Unfortunately, I don't know enough about the speedrun routes to be too useful with that. I'm aware of some of the big time sinks, so I immediately went to characters with annoying requirements. I never really checked Viki, other than at the earliest point she can be accessed, and just assumed Cleo would be acceptable, if the bug was exploitable. It's a hell of a lucky break that the coordinates end up as something useful with one of the characters you'd like to have in place of Cleo.
Here's the original thread, if anybody wants to see it: http://www.suikosource.com/phpBB3/viewt ... =8&t=14640. The video Tomm88 posted covers it pretty well, though.
For what it's worth, that region of memory was definitely being filled by the decompression routine in the game. I have this nagging feeling that I thought it was being temporarily utilized as the sliding window for the LZ77 variant the developers liked to use, but it's been a while since I last looked at it. No idea if they just failed to clear it, or mistakenly used the wrong segment of memory for object coordinates, though. It seems like a similar mistake was made in a variety of places, mostly or entirely in the castle.
Here's the original thread, if anybody wants to see it: http://www.suikosource.com/phpBB3/viewt ... =8&t=14640. The video Tomm88 posted covers it pretty well, though.
For what it's worth, that region of memory was definitely being filled by the decompression routine in the game. I have this nagging feeling that I thought it was being temporarily utilized as the sliding window for the LZ77 variant the developers liked to use, but it's been a while since I last looked at it. No idea if they just failed to clear it, or mistakenly used the wrong segment of memory for object coordinates, though. It seems like a similar mistake was made in a variety of places, mostly or entirely in the castle.
-
- Posts: 2784
- Joined: Sat Apr 19, 2008 9:48 am
- Location: Germany, yeah baby
- Contact:
Re: [Bug] The phantom Viki and invisible Sonya
This struck me as weird so I quickly tested it: is it possible to not recruit Viki? If you refuse to recruit her, she'll block the path back to the Great Forest Village. When you talk to her again, she'll again ask whether she may join you and if you refuse again, she'll keep standing there. However, I am not sure if you ever have to travel back to the Great Forest Village ever again during the Kwanda storyline. Has anyone ever tested if you really do not need to recruit her?
-
- Global Admin
- Posts: 6204
- Joined: Wed Jun 30, 2004 3:29 pm
Re: [Bug] The phantom Viki and invisible Sonya
Perhaps there are some minimum recruit runs we can check.. also, can she get killed in war battles?Antimatzist wrote: ↑Wed Jul 14, 2021 2:59 amThis struck me as weird so I quickly tested it: is it possible to not recruit Viki? If you refuse to recruit her, she'll block the path back to the Great Forest Village. When you talk to her again, she'll again ask whether she may join you and if you refuse again, she'll keep standing there. However, I am not sure if you ever have to travel back to the Great Forest Village ever again during the Kwanda storyline. Has anyone ever tested if you really do not need to recruit her?
-
- Posts: 2784
- Joined: Sat Apr 19, 2008 9:48 am
- Location: Germany, yeah baby
- Contact:
Re: [Bug] The phantom Viki and invisible Sonya
Ah I found a post on gamefaqs by CelesDestiny:
So you can miss her, but all SoD from the area will be locked unless you get the blinking mirror.
https://gamefaqs.gamespot.com/boards/19 ... 317?page=1Notice: After clearing Panna Yakuta, take the offer to warp to your castle or you will be stuck. Viki will block your way in the Great Forest unless you recruit her. Which means you cannot visit the entire area every again. No problem, because there is no need to do so.
So you can miss her, but all SoD from the area will be locked unless you get the blinking mirror.
-
- Posts: 62
- Joined: Sat Feb 06, 2016 6:06 am
Re: [Bug] The phantom Viki and invisible Sonya
So I spent today writing up a lua script and looking for invisible characters, have some cool findings.
Here's a list of characters I managed to find, format goes Character: Last Character in your party, Character X:Y coordinates, memory address of the character slot. I don't remember what castle level I tested all of these with, but castle level does matter if it changes the room layout.
Castle Invisible Characters:
Quincy: Humphrey last, 28:28, 0x18bf60
Gremio (in Hero's room): Stallion last, 21:21, 0x18b850
Crowley: Maas last, 12:12, 0x18b3a0
Griffith: Humphrey last, 25:25, 0x18c0e0
Invisible Moose (Castle LVL3): Kasumi last, 26:26, 0x18abf8
Invisible Moose (Castle LVL2): Stallion last, 26:26, 0x18add0
The coolest of these IMO is invisible moose with LVL2 Castle, you can actually sharpen your weapon to 15 as soon as you have Stallion and LVL2 Castle. So technically as soon as Pannu Yakuta, but the really cool thing IMO is potential LVL15 Pahn weapon pre Teo. Note that you need Maas and Meese recruited, or you won't be able to speak to him. Here's an image of the position:![Image](https://media.discordapp.net/attachments/445490663702790166/865863024849322024/unknown.png)
I also found some outside the castle. Well technically, only have a setup for 1. You can talk to and get Clive as soon as you can access Rikon. Sadly though, recruiting him freezes the game since he walks out the inn after recruitment and since he's invisible he can't do it![Sad :(](./images/smilies/icon_sad.gif)
Here's a screenshot though, you need Cleo in the last slot for this one.
![Image](https://media.discordapp.net/attachments/445490663702790166/865878095147827220/unknown.png)
I didn't find a setup for him, but Lester can probably be done too. Has the same issue as Clive though. The really interesting one is Pesmerga, he should be possible right after Neclord as long as there's a character that can give him the proper coordinates. Sadly I have yet to find one, and I only have 2 party slots so it's incredibly tedious to test. I've gone through 10 non-forced characters so far and no luck. On recruitment the screen just fades out, so there shouldn't be any crashing here.
Last thing I wanted to mention is the table structure of NPCs/Characters. There's a pointer at that points to the start of the table. Each slot is 0x18 long. Here's the structure to my current knowledge:
Also, a lot of the time there is a table length at the start of the table - 0x10. Not always though, need to find something more reliable for that.
And here's a link to the script if anyone's interested. https://pastebin.com/aCgDD47e
Here's a list of characters I managed to find, format goes Character: Last Character in your party, Character X:Y coordinates, memory address of the character slot. I don't remember what castle level I tested all of these with, but castle level does matter if it changes the room layout.
Castle Invisible Characters:
Quincy: Humphrey last, 28:28, 0x18bf60
Gremio (in Hero's room): Stallion last, 21:21, 0x18b850
Crowley: Maas last, 12:12, 0x18b3a0
Griffith: Humphrey last, 25:25, 0x18c0e0
Invisible Moose (Castle LVL3): Kasumi last, 26:26, 0x18abf8
Invisible Moose (Castle LVL2): Stallion last, 26:26, 0x18add0
The coolest of these IMO is invisible moose with LVL2 Castle, you can actually sharpen your weapon to 15 as soon as you have Stallion and LVL2 Castle. So technically as soon as Pannu Yakuta, but the really cool thing IMO is potential LVL15 Pahn weapon pre Teo. Note that you need Maas and Meese recruited, or you won't be able to speak to him. Here's an image of the position:
![Image](https://media.discordapp.net/attachments/445490663702790166/865863024849322024/unknown.png)
I also found some outside the castle. Well technically, only have a setup for 1. You can talk to and get Clive as soon as you can access Rikon. Sadly though, recruiting him freezes the game since he walks out the inn after recruitment and since he's invisible he can't do it
![Sad :(](./images/smilies/icon_sad.gif)
Here's a screenshot though, you need Cleo in the last slot for this one.
![Image](https://media.discordapp.net/attachments/445490663702790166/865878095147827220/unknown.png)
I didn't find a setup for him, but Lester can probably be done too. Has the same issue as Clive though. The really interesting one is Pesmerga, he should be possible right after Neclord as long as there's a character that can give him the proper coordinates. Sadly I have yet to find one, and I only have 2 party slots so it's incredibly tedious to test. I've gone through 10 non-forced characters so far and no luck. On recruitment the screen just fades out, so there shouldn't be any crashing here.
Last thing I wanted to mention is the table structure of NPCs/Characters. There's a pointer at
Code: Select all
0x17daa0
Code: Select all
0x0: X
0x1: Y
0x2-3: ? Seem to change when he is moving, maybe sub pixel sorta deal?
0x4: Direction
0x5: Movement speed, can be negative to moonwalk.
0x6: ?? Resets to 0 on movement
0x7: ??
0x8: Memory Address
0xc: Memory Address
0x10: Memory Address
0x14: ?? (0) Possibly 2 byte with 0x15
0x15: Points to script for talking? Krin has 4, setting to 5 makes me talk to Viki. 8 Just makes him turn towards me.
0x16: ?? (0)
0x17: ?? Inverse Y? Y + this == 0x100
And here's a link to the script if anyone's interested. https://pastebin.com/aCgDD47e
- Pyriel
- Webmaster
- Posts: 1229
- Joined: Wed Aug 18, 2004 1:20 pm
Re: [Bug] The phantom Viki and invisible Sonya
Huh, very cool. I was just poking coordinates to see if I could get Pesmerga to appear. Maybe I had the wrong addresses somehow, or maybe there was something else preventing him from appearing.
-
- Posts: 62
- Joined: Sat Feb 06, 2016 6:06 am
Re: [Bug] The phantom Viki and invisible Sonya
Here's the address for Pesmerga:
This is for the room before CL4, it's a different room after CL4 because Pesmerga spawns properly. I've also went through every character reasonable acquirable by Neclord, none of them work
Closest were Alen & Grenseal, both of which spawn him at 0,23 which is exactly ONE tile too far up OR to the left.
On a positive note, I found an interesting one.
You can talk to invisible Mathiu in Garan as soon as it's accessible, or at least technically. Before getting the castle the only character that spawns him is Viktor, at 1,29 which is inaccessible because you can't pass the guards. The screenshot is taken with Luc, can use him to get invisible Mathiu here at any time. And he can infact change out your party.
![Image](https://media.discordapp.net/attachments/445490663702790166/866194561595867156/unknown.png)
Code: Select all
0x189ea8
![Sad :(](./images/smilies/icon_sad.gif)
On a positive note, I found an interesting one.
You can talk to invisible Mathiu in Garan as soon as it's accessible, or at least technically. Before getting the castle the only character that spawns him is Viktor, at 1,29 which is inaccessible because you can't pass the guards. The screenshot is taken with Luc, can use him to get invisible Mathiu here at any time. And he can infact change out your party.
![Image](https://media.discordapp.net/attachments/445490663702790166/866194561595867156/unknown.png)
- Pyriel
- Webmaster
- Posts: 1229
- Joined: Wed Aug 18, 2004 1:20 pm
Re: [Bug] The phantom Viki and invisible Sonya
I think I'm already on record saying this a few times, but, Jesus, Konami.
I don't imagine this would be top tier for game-breaking bugs, since it's hard to activate, and doesn't make the game impossible to complete. It has to be in the top tier for how endemic it is, though. I don't think I could even fix it if I wanted to.
I don't imagine this would be top tier for game-breaking bugs, since it's hard to activate, and doesn't make the game impossible to complete. It has to be in the top tier for how endemic it is, though. I don't think I could even fix it if I wanted to.
- MasterGrand
- Posts: 106
- Joined: Mon Aug 02, 2010 7:12 pm
Re: [Bug] The phantom Viki and invisible Sonya
I think we can fix it by command script...
- MasterGrand
- Posts: 106
- Joined: Mon Aug 02, 2010 7:12 pm
Re: [Bug] The phantom Viki and invisible Sonya
which is emulator use ?Z3R01337 wrote: ↑Sat Jul 17, 2021 5:38 am So I spent today writing up a lua script and looking for invisible characters, have some cool findings.
Here's a list of characters I managed to find, format goes Character: Last Character in your party, Character X:Y coordinates, memory address of the character slot. I don't remember what castle level I tested all of these with, but castle level does matter if it changes the room layout.
Castle Invisible Characters:
Quincy: Humphrey last, 28:28, 0x18bf60
Gremio (in Hero's room): Stallion last, 21:21, 0x18b850
Crowley: Maas last, 12:12, 0x18b3a0
Griffith: Humphrey last, 25:25, 0x18c0e0
Invisible Moose (Castle LVL3): Kasumi last, 26:26, 0x18abf8
Invisible Moose (Castle LVL2): Stallion last, 26:26, 0x18add0
The coolest of these IMO is invisible moose with LVL2 Castle, you can actually sharpen your weapon to 15 as soon as you have Stallion and LVL2 Castle. So technically as soon as Pannu Yakuta, but the really cool thing IMO is potential LVL15 Pahn weapon pre Teo. Note that you need Maas and Meese recruited, or you won't be able to speak to him. Here's an image of the position:
I also found some outside the castle. Well technically, only have a setup for 1. You can talk to and get Clive as soon as you can access Rikon. Sadly though, recruiting him freezes the game since he walks out the inn after recruitment and since he's invisible he can't do it
Here's a screenshot though, you need Cleo in the last slot for this one.
I didn't find a setup for him, but Lester can probably be done too. Has the same issue as Clive though. The really interesting one is Pesmerga, he should be possible right after Neclord as long as there's a character that can give him the proper coordinates. Sadly I have yet to find one, and I only have 2 party slots so it's incredibly tedious to test. I've gone through 10 non-forced characters so far and no luck. On recruitment the screen just fades out, so there shouldn't be any crashing here.
Last thing I wanted to mention is the table structure of NPCs/Characters. There's a pointer atthat points to the start of the table. Each slot is 0x18 long. Here's the structure to my current knowledge:Code: Select all
0x17daa0
Also, a lot of the time there is a table length at the start of the table - 0x10. Not always though, need to find something more reliable for that.Code: Select all
0x0: X
0x1: Y
0x2-3: ? Seem to change when he is moving, maybe sub pixel sorta deal?
0x4: Direction
0x5: Movement speed, can be negative to moonwalk.
0x6: ?? Resets to 0 on movement
0x7: ??
0x8: Memory Address
0xc: Memory Address
0x10: Memory Address
0x14: ?? (0) Possibly 2 byte with 0x15
0x15: Points to script for talking? Krin has 4, setting to 5 makes me talk to Viki. 8 Just makes him turn towards me.
0x16: ?? (0)
0x17: ?? Inverse Y? Y + this == 0x100
And here's a link to the script if anyone's interested. https://pastebin.com/aCgDD47e
- Pyriel
- Webmaster
- Posts: 1229
- Joined: Wed Aug 18, 2004 1:20 pm
Re: [Bug] The phantom Viki and invisible Sonya
The emulator is probably BizHawk.
It's also possible that finding a good time and place to throw in a memset() will fix it, but even if it looked that simple, I just don't see the value. The amount of testing to make sure that both worked, and didn't wreck something else doesn't seem worth it to me at the moment.
Edit: Just to be clear, I'm only speaking for myself here. From where I'm sitting, fixing this bug looks like it'd be somewhere between two weeks of work hours to "translation project" levels of effort, depending on a lot of factors that are unknown at the moment. The prospect just doesn't spark joy for me.
I kinda doubt it. It's obviously something that's fixable, even if only at Konami back in 1995. I don't think it's feasible to fix every occurrence of this when it seems to be an error they either baked into the engine, or a copy/paste error they committed probably hundreds of times. I'm leaning toward the former being the cause. Even if it's possible to add dozens or hundreds of extra checks in scripts to block this, realigning everything in the modules would be so tedious that I'm just not interested.
It's also possible that finding a good time and place to throw in a memset() will fix it, but even if it looked that simple, I just don't see the value. The amount of testing to make sure that both worked, and didn't wreck something else doesn't seem worth it to me at the moment.
Edit: Just to be clear, I'm only speaking for myself here. From where I'm sitting, fixing this bug looks like it'd be somewhere between two weeks of work hours to "translation project" levels of effort, depending on a lot of factors that are unknown at the moment. The prospect just doesn't spark joy for me.