Author Topic: A date in GoldSaucer + some gears updates  (Read 3277 times)

dziugo

  • *
  • Posts: 1470
    • View Profile
    • A new copy of FF7 thanks to Salk. Pack (zip/rar/etc) your saved game before sending it to me.
A date in GoldSaucer + some gears updates
« on: 2005-08-05 23:53:06 »
Just some new things about the "date in GS".

Section 1 - "gears" update

It's all about the save-game-format (the numbers within parentheses indicate the offset in the save-file when the CRC data is at 0x0000)
 - "counter" (0x0B84) DWORD - it countdowns from the given number of seconds to zero (it still works even if you Alt-TAB from the game)
 - "timer1" (0x0B88) WORD - holds the miliseconds part of the current time (well... it's not exactly the miliseconds, but the in-game-countdown miliseconds are based on this value)
 - "timer2" (0x0B8C) WORD - same as above (why two variables?)
 - "party's heading (not on world map)" (0x0BA0) byte - same as "party's heading" on the world-map (look for info in "gears")
 - "in-game-countdown (hours)" (0x0BB8) byte - DWORD found under the (0x0B84) divided by 3600
 - "in-game-countdown (minutes)" (0x0BB9) byte - minutes...
 - "in-game-countdown (seconds)" (0x0BBA) byte - seconds...
 - "in-game-countdown (miliseconds)" (0x0BBB) byte - miliseconds - based on the (0x0B88) variable
 - "PHS Locking Mask" (0x10A4) WORD - explained in "gears", I've only "updated" the offset

Ok... now the Key Items section. It starts at (0x0BE4) - known in "gears". It's length is 8 bytes (oh well... that's what "gears" say) and first 59 bits indicate the presence (or absence) of "some key item". Here is the Key Items list (looked kinda good in notepad ):

Code: [Select]
1st byte (0x0BE4):
"Cotton Dress" - 0x01 (00000001b)
"Satin Dress" - 0x02 (00000010b)
"Silk Dress" - 0x04 (00000100b)
"Wig" - 0x08 (00001000b)
"Dyed Wig" - 0x10 (00010000b)
"Blonde Wig" - 0x20 (00100000b)
"Glass Tiara" - 0x40 (01000000b)
"Ruby Tiara" - 0x80 (10000000b)

2nd byte (0x0BE5):
"Diamond Tiara" - 0x01 (00000001b)
"Cologne" - 0x02 (00000010b)
"Flower cologne" - 0x04 (00000100b)
"Sexy Cologne" - 0x08 (00001000b)
"Member's Card" - 0x10 (00010000b)
"Lingerie" - 0x20 (00100000b)
"Mystery panties" - 0x40 (01000000b)
"Bikini briefs" - 0x80 (10000000b)

3rd byte (0x0BE6)
"Pharmacy Coupons" - 0x01 (00000001b)
"Disinfectant" - 0x02 (00000010b)
"Deodorant" - 0x04 (00000100b)
"Digestive" - 0x08 (00001000b)
"Huge Materia (Fort Condor)" - 0x10 (00010000b)
"Huge Materia (Corel)" - 0x20 (00100000b)

"Huge Materia (Underwater)" - 0x40 (01000000b)
"Huge Materia (rocket)" - 0x80 (10000000b)

4th byte (0x0BE7)
"Key to Ancients" - 0x01 (00000001b)
"Letter to a Daughter" - 0x02 (00000010b)
"Letter to a Wife" - 0x04 (00000100b)
"Lunar Harp" - 0x08 (00001000b)
"Basement Key" - 0x10 (00010000b)
"Key to Sector 5" - 0x20 (00100000b)
"Keycard 60" - 0x40 (01000000b)
"Keycard 62" - 0x80 (10000000b)

5th byte (0x0BE8)
"Keycard 65" - 0x01 (00000001b)
"Keycard 66" - 0x02 (00000010b)
"Keycard 68" - 0x04 (00000100b)
"Midgar parts" - 0x08 (00001000b)
"Midgar parts" - 0x10 (00010000b)
"Midgar parts" - 0x20 (00100000b)
"Midgar parts" - 0x40 (01000000b)
"Midgar parts" - 0x80 (10000000b)

6th byte (0x0BE9)
"PHS" - 0x01 (00000001b)
"Gold Ticket" - 0x02 (00000010b)
"Keystone" - 0x04 (00000100b)
"Leviathan Scales" - 0x08 (00001000b)
"Glacier Map" - 0x10 (00010000b)
"A Coupon" - 0x20 (00100000b)
"B Coupon" - 0x40 (01000000b)
"C Coupon" - 0x80 (10000000b)

7th byte (0x0BEA)
"Black Materia" - 0x01 (00000001b)
"Mythril" - 0x02 (00000010b)
"Snowboard" - 0x04 (00000100b)

We just have to decide which items do we want (in each byte) and add their values together.

f.e.  If we want the "PHS", "Gold Ticket" and "Glacier Map" we would add 0x01, 0x02 and 0x10 (which gives 0x13 or 00010011b). I know it's obvious :P

Section 2 - date in GS info

We all know about the love-points and this kind of stuff, so let me explain some things, that *could* be unknown.

First of all, the PLOT progression variable (0x0BA4) WORD - let's think of it as a byte.
 - Just before the "Have to stay in Gold Saucer" this var is set to 0x47
 - When staff-member says "I will let you know once the repairs are completed." the var is set to 0x4A
 - When Cid says (:P) "...zzzz...zzzz..." the variable is set to 0x4D
 - When going out with our date (it's set in our room) the var is set to 0x50
 - After the first movie in the gondola the var is set to 0x53
 - When Cloud shouts "Hey Cait Sith!" the var is set to 0x56
 - When our date comments the "behaviour" of Cait Sith (just before going to hotel again) the var is set to 0x59
 - After choosing party-members when Cait Sith says "Then see you later." the var is set to 0x5C


Now the "date plan variable" (0x0CE8) byte - is set to indicate the progress of our date (prevets from joining "The great play" again f.e.)
 - Before the date it's set to 0x00
 - When going out (from our room) it's set to 0x02
 - Immediately after going to "station" it's set to 0x00
 - After the play, when our date suggest to go to gondola it's set to 0xC0
 - It's set to 0x80 right after the *suggestion* (and it's 0x80 ever after :))

The "gondola variable" (0x0CF6) byte - before the date it's set to 0x01 and when we enter the gondola screen with our date (before getting the tickets) it's set to 0x02. It prevents us from getting another ride when chasing Cait Sith.

The "Cait Sith chase variable" (0x0CE9) byte - it's 0 before the great chase and:
 - it's OR-ed with 00000010b (0x02) when entering Battle Square
 - it's OR-ed with 00000100b (0x04) after finding CS in Wonder Square
 - it's OR-ed with 00001000b (0x08) when entering Speed Square
 - it's OR-ed with 00010000b (0x10) when entering Chocobo Square
 - it's OR-ed with 00000001b (0x01) when the CS escapes form Chocobo Square (and gives the Keystone to Tseng)
(Not sure about the last two - these could be switched | Edit: these were all messed up... now it should be correct)

After that, when going back to hotel, we're given the PHS Lock with Aeris (how nice :P) - the (0x10A4) WORD now says 0x09, and the third Party Member is automatically assigned (of course we can switch him/her with someone else). The third member is the person who we had a date with (and if we were on a date with Aeris, the other character which have the most love-points).

Ok... and that's it. I won't post which variables to change to skip the sometimes-crashing-gondola-ride for now. I will have to do some more tests (and implement it into gypt). You're welcome to post any suggestions about this thread (and any other thread :P) and/or correct mistakes that I've just made. Oh well... I just need some feedback... :-?

(sleepy) dziugo

-------------------
EDIT:
Guess I was too sleepy...

I didn't wrote, why i mentioned those "countdown" and "counter" variables.

Well... It isn't displayed in the game at all, but we have a countdown enabled TWICE when being on a date.

The countdown starts first time (the timer is set to 0x1E or 30 seconds) when we board the gondola (when it reaches zero, the Cloud automatically looks through the "window" and we watch the first movie).

The countdown starts again when starting to chase Cait Sith (the timer is set to 0xB4 or 180 seconds) but this timer doesn't matter though... I don't know why it's there :P After Talking to Cait Sith (or even choosing our party and leaving the Gold Saucer if we are fast enough) it still countdowns (probably, there was a time limit on the Cait Sith chase which had been removed).

Ok... now the Key Items section update... (gee... forgot about it too...)

As we all know (spoiler! spoiler! :P) Cait Sith gives the Keystone to Tseng, so we have to update our Key Item list.

To get rid of a Keystone, we have to AND the (0x0BE9) byte with 0xFB (11111011b) or just zero the third bit.

Now it should be ok...

dziugo