Author Topic: 6 Letters Available! (Complete!) - Now Doing 7!  (Read 22968 times)

justin3009

  • Fan Project Leader
  • God of War (+3000)
  • *
  • Posts: 3296
    • View Profile
Re: 6 Letters Available! (Almost Done)
« Reply #75 on: June 24, 2008, 02:47:22 pm »
Ugh..right blah

justin3009

  • Fan Project Leader
  • God of War (+3000)
  • *
  • Posts: 3296
    • View Profile
Re: 6 Letters Available! (Almost Done)
« Reply #76 on: June 24, 2008, 03:13:17 pm »
Double post.  Data at 0CE665 has the 1-5th letter.  Maybe if we can repointer that area to empty space, we can add the 6th letter.

justin3009

  • Fan Project Leader
  • God of War (+3000)
  • *
  • Posts: 3296
    • View Profile
Re: 6 Letters Available! (Almost Done)
« Reply #77 on: June 25, 2008, 06:51:29 pm »
Triple Post:  Kind of an out of place post, but maybe someone should Sticky this and the 8th character threads.  They're both gigantic add-ons to CT and I think it'd be kinda nice incase people want to try them.

(Yes same post in 2 different topics)

justin3009

  • Fan Project Leader
  • God of War (+3000)
  • *
  • Posts: 3296
    • View Profile
Re: 6 Letters Available! (Almost Done)
« Reply #78 on: July 13, 2008, 04:48:59 pm »
...Quad post: Not much but here's the values for the pre-release

Quote from: justin3009
025D66 - Change to 06 and it'll show the 6th letter in dialogue (Pre-Release).
02EC21 - Change to 06 and you can write the 6th letter...but it won't save (Pre-Release).
02E221 - Change to 06 and it will scroll to 6th letter when naming (Pre-Release).
02E2AA - Change to 06 and it will show the 6th letter in dialogue and you can name it (Pre-Release).
02EC1D - Change to 0C and it'll show 6th letter in Save, Char switch, exchange menus  (Pre-Release).
02EC21 - Shows 6th Letter in Menu Screen when set to 06 (Pre-Release).
*0CE455 - Change to 06 and it'll load 6th letter but won't show (?).  I'm not sure on this..but I think that's what it does. (Pre-Release)
C10406 - Change to 06 to display 6th letter! (In Battle - Pre-Release)
C10428 - Change to 01 02 or 03 so the first letter of the next name doesn't appear above it. (In Battle - Pre-Release)

Vehek

  • Errare Explorer (+1500)
  • *
  • Posts: 1761
    • View Profile
Re: 6 Letters Available! (Almost Done)
« Reply #79 on: August 02, 2008, 08:35:45 pm »
Found how to stop the sixth letter from being greyed out.
This is the original code in the game.
Quote
$C1/0919 9D 00 0D    STA $0D00,x[$7E:0D1B]   A:0029 X:001B Y:014E P:envMxdizc
$C1/091C 9D 02 0D    STA $0D02,x[$7E:0D1D]   A:0029 X:001B Y:014E P:envMxdizc
$C1/091F 9D 04 0D    STA $0D04,x[$7E:0D1F]   A:0029 X:001B Y:014E P:envMxdizc
$C1/0922 9D 06 0D    STA $0D06,x[$7E:0D21]   A:0029 X:001B Y:014E P:envMxdizc
$C1/0925 9D 08 0D    STA $0D08,x[$7E:0D23]   A:0029 X:001B Y:014E P:envMxdizc
'29' is what makes a white tile. You have to write another '29' to $0D0A,x to light up the 6th letter.
« Last Edit: August 02, 2008, 08:48:44 pm by Vehek »

Vehek

  • Errare Explorer (+1500)
  • *
  • Posts: 1761
    • View Profile
Re: 6 Letters Available! (Almost Done)
« Reply #80 on: August 08, 2008, 08:24:57 pm »
Double post, but I've been working on solving a issue I've seen where you can't delete the sixth letter.
7E0F06 stores what letter you're on in the naming screen. In the original game, it's 04 when you're on the fifth letter but haven't written it yet, and 05 after you've entered the fifth letter.
These are some code parts from the original game.
Code: [Select]
Drawing the triangles
$C2/E34D AD 06 0F    LDA $0F06  [$7E:0F06]   
$C2/E350 C9 05       CMP #$05
$C2/E352 90 02       BCC $02    [$E356] //Skip the next command if 7E0F06 < 05
$C2/E354 A9 04       LDA #$04              //Use 04 instead as the location to place the triangles
$C2/E356 0A          ASL A
$C2/E357 0A          ASL A
$C2/E358 0A          ASL A
$C2/E359 69 9C       ADC #$9C
$C2/E35B 8D 80 08    STA $0880  [$7E:0880]

Code: [Select]
Writing letters
$C2/E334 AC 06 0F    LDY $0F06  [$7E:0F06]   
$C2/E337 C0 05       CPY #$05               
$C2/E339 90 02       BCC $02    [$E33D]      //If 7E0F06 < 5, skip next instruction
$C2/E33B A0 04       LDY #$04 //Use 04 as place to write to
$C2/E33D 99 00 0F    STA $0F00,y   //Store the letter in memory
$C2/E340 C8          INY //Move on to the next letter position
$C2/E341 C0 06       CPY #$06               
$C2/E343 B0 03       BCS $03    [$E348] If on $06 (Seventh letter), skip next instruction
$C2/E345 8C 06 0F    STY $0F06  [$7E:0F06] //Store the new letter position to memory

Code: [Select]
Deleting letters:
$C2/E2FB AE 06 0F    LDX $0F06  [$7E:0F06]
$C2/E2FE F0 10       BEQ $10    [$E310] //If current letter is the first letter, skip these instructions
$C2/E300 A9 FF       LDA #$FF
$C2/E302 9D FF 0E    STA $0EFF,x[ //Store $FF to the letter position before the current one
$C2/E305 CE 06 0F    DEC $0F06  [$7E:0F06] //Return to the previous letter position

I fixed the problem by changing 02E355 to 05, 02E33C to 05, and 02E342 to 07.

justin3009

  • Fan Project Leader
  • God of War (+3000)
  • *
  • Posts: 3296
    • View Profile
Re: 6 Letters Available! (Almost Done)
« Reply #81 on: August 08, 2008, 10:31:39 pm »
Nice!

- ^^
« Last Edit: August 09, 2008, 12:13:01 am by justin3009 »

Mauron

  • Guru of Reason Emeritus
  • Errare Explorer (+1500)
  • *
  • Posts: 1772
  • Nu-chan
    • View Profile
    • Maurtopia
Re: 6 Letters Available! (Almost Done)
« Reply #82 on: October 05, 2008, 04:57:39 pm »
Thanks to JLukas, we can move the battle gauge over to display the sixth letter in battle gauge 2.

Code: [Select]
C104B1C2
C104B6CC
C104BBC3
C104BECD

C10747C2
C1074AC4
C1074DC6
C10750C8

C10760C3
C10763C5
C10766C7
C10769C9

C10772C2

C10782C2

Mauron

  • Guru of Reason Emeritus
  • Errare Explorer (+1500)
  • *
  • Posts: 1772
  • Nu-chan
    • View Profile
    • Maurtopia
Re: 6 Letters Available! (Almost Done)
« Reply #83 on: October 07, 2008, 08:47:37 am »
Here are the changes I've been playing with lately.

CCE61A - CCE63A
Code: [Select]
$CC/E61A BF 3F F8 CC LDA $CCF83F,x[$CC:F83F] //Loads an index on Character placement. Might be unnecessary here; not sure.
$CC/E61E AA TAX
$CC/E61F A0 00 00 LDY #$0000
$CC/E622 BD 23 2C LDA $2C23,x[$7E:2C23] //Loads the letter from permanent memory location
$CC/E625 99 03 94 STA $9403,y[$7E:9403] //Stores the letter into the first memory location
$CC/E628 E8 INX
$CC/E629 C8 INY
$CC/E62A C0 06 00 CPY #$0006 //Do we have the full name yet?
$CC/E62D D0 F3 BNE $F3    [$E622]
$CC/E62F 80 0A BRA $0A    [$E63B] //Skip over the NOPs.
$CC/E631 EA NOP
$CC/E632 EA NOP
$CC/E633 EA NOP
$CC/E634 EA NOP
$CC/E635 EA NOP
$CC/E636 EA NOP
$CC/E637 EA NOP
$CC/E638 EA NOP
$CC/E639 EA NOP
$CC/E63A EA NOP

That loop is working perfectly when only one character is in the party. Two or three and it freaks out.

Code: [Select]
Disassembly:
$CC/E660 BF 3F F8 CC LDA $CCF83F,x[$CC:F83F] // This is where I originally found that index.
$CC/E664 A8 TAY
$CC/E665 A2 00 00 LDX #$0000
$CC/E668 B9 03 94 LDA $9403,y[$7E:9403] //Not sure why this copies, but it does.
$CC/E66B 9D A0 94 STA $94A0,x[$7E:94A0] //7E94A0 holds the full name plus FFs at the end.
$CC/E66E E8 INX
$CC/E66F C8 INY
$CC/E670 E0 06 00 CPX #$0006 //Do we have the full name?
$CC/E673 D0 F3 BNE $F3    [$E668]
$CC/E675 80 0F BRA $0F    [$E684] //Skip the NOPs again.
$CC/E677 EA NOP
$CC/E678 EA NOP
$CC/E679 EA NOP
$CC/E67A EA NOP
$CC/E67B EA NOP
$CC/E67C EA NOP
$CC/E67D EA NOP
$CC/E67E EA NOP
$CC/E67F EA NOP
$CC/E680 EA NOP
$CC/E681 EA NOP
$CC/E682 EA NOP
$CC/E683 EA NOP
$CC/E684 EA NOP
$CC/E685 EA NOP
This part works fine.

CCE69C I changed to 06. This code is already part of a working loop.

Vehek: Do you know the full subroutine for controlling white letters? I'm not good at dissecting things like that at the moment.

Vehek

  • Errare Explorer (+1500)
  • *
  • Posts: 1761
    • View Profile
Re: 6 Letters Available! (Almost Done)
« Reply #84 on: October 07, 2008, 09:32:38 pm »
This is an example for when I select PC1 using Battle Gauge 1.
Code: [Select]
Writing white letters
$C1/0865 AD DD A6    LDA $A6DD  [$7E:A6DD]   A:00FF X:0054 Y:014E P:eNvMxdizc
$C1/0868 AA          TAX                     A:0000 X:0054 Y:014E P:envMxdiZc
$C1/0869 BD D9 A6    LDA $A6D9,x[$7E:A6D9]   A:0000 X:0000 Y:014E P:envMxdiZc
$C1/086C 20 E8 08    JSR $08E8  [$C1:08E8]   A:0000 X:0000 Y:014E P:envMxdiZc
$C1/08E8 0A          ASL A                   A:0000 X:0000 Y:014E P:envMxdiZc
$C1/08E9 AA          TAX                     A:0000 X:0000 Y:014E P:envMxdiZc
$C1/08EA C2 20       REP #$20                A:0000 X:0000 Y:014E P:envMxdiZc
$C1/08EC AD 20 9F    LDA $9F20  [$7E:9F20]   A:0000 X:0000 Y:014E P:envmxdiZc
$C1/08EF D0 06       BNE $06    [$08F7]      A:0002 X:0000 Y:014E P:envmxdizc
$C1/08F7 3A          DEC A                   A:0002 X:0000 Y:014E P:envmxdizc
$C1/08F8 D0 06       BNE $06    [$0900]      A:0001 X:0000 Y:014E P:envmxdizc
$C1/0900 BF 29 FA CC LDA $CCFA29,x[$CC:FA29] A:0001 X:0000 Y:014E P:envmxdizc
$C1/0904 AA          TAX                     A:001B X:0000 Y:014E P:envmxdizc
$C1/0905 7B          TDC                     A:001B X:001B Y:014E P:envmxdizc
$C1/0906 E2 20       SEP #$20                A:0000 X:001B Y:014E P:envmxdiZc
$C1/0908 A9 29       LDA #$29                A:0000 X:001B Y:014E P:envMxdiZc
$C1/090A 9D C0 0C    STA $0CC0,x[$7E:0CDB]   A:0029 X:001B Y:014E P:envMxdizc
$C1/090D 9D C2 0C    STA $0CC2,x[$7E:0CDD]   A:0029 X:001B Y:014E P:envMxdizc
$C1/0910 9D C4 0C    STA $0CC4,x[$7E:0CDF]   A:0029 X:001B Y:014E P:envMxdizc
$C1/0913 9D C6 0C    STA $0CC6,x[$7E:0CE1]   A:0029 X:001B Y:014E P:envMxdizc
$C1/0916 9D C8 0C    STA $0CC8,x[$7E:0CE3]   A:0029 X:001B Y:014E P:envMxdizc
$C1/0919 9D 00 0D    STA $0D00,x[$7E:0D1B]   A:0029 X:001B Y:014E P:envMxdizc
$C1/091C 9D 02 0D    STA $0D02,x[$7E:0D1D]   A:0029 X:001B Y:014E P:envMxdizc
$C1/091F 9D 04 0D    STA $0D04,x[$7E:0D1F]   A:0029 X:001B Y:014E P:envMxdizc
$C1/0922 9D 06 0D    STA $0D06,x[$7E:0D21]   A:0029 X:001B Y:014E P:envMxdizc
$C1/0925 9D 08 0D    STA $0D08,x[$7E:0D23]   A:0029 X:001B Y:014E P:envMxdizc
$C1/0928 60          RTS                     A:0029 X:001B Y:014E P:envMxdizc
Edit: on an unmodified ROM.
« Last Edit: October 07, 2008, 11:18:17 pm by Vehek »

Mauron

  • Guru of Reason Emeritus
  • Errare Explorer (+1500)
  • *
  • Posts: 1772
  • Nu-chan
    • View Profile
    • Maurtopia
Re: 6 Letters Available! (Almost Done)
« Reply #85 on: October 08, 2008, 06:32:01 pm »
I tried replacing that code, and came up with this:

Code: [Select]
Disassembly:
$C1/090A 5A PHY A:0029 X:001B Y:014E D:0000 DB:7E S:06DF P:envMxdizc HC:0490 VC:159 00 FL:32
$C1/090B A0 00 00 LDY #$0000 A:0029 X:001B Y:014E D:0000 DB:7E S:06DF P:envMxdizc HC:0496 VC:159 00 FL:32
$C1/090E 9D C0 0C STA $0CC0,x[$7E:0CDB] A:0029 X:001B Y:014E D:0000 DB:7E S:06DF P:envMxdizc HC:0502 VC:159 00 FL:32
$C1/0911 C8 INY A:0029 X:001B Y:014E D:0000 DB:7E S:06DF P:envMxdizc HC:0508 VC:159 00 FL:32
$C1/0912 C8 INY A:0029 X:001B Y:014E D:0000 DB:7E S:06DF P:envMxdizc HC:0514 VC:159 00 FL:32
$C1/0913 E8 INX A:0029 X:001B Y:014E D:0000 DB:7E S:06DF P:envMxdizc HC:0520 VC:159 00 FL:32
$C1/0914 E8 INX A:0029 X:001B Y:014E D:0000 DB:7E S:06DF P:envMxdizc HC:0526 VC:159 00 FL:32
$C1/0915 C0 0A 00 CPY #$000A A:0029 X:001B Y:014E D:0000 DB:7E S:06DF P:envMxdizc HC:0532 VC:159 00 FL:32
$C1/0918 D0 F5 BNE $F5    [$090F] A:0029 X:001B Y:014E D:0000 DB:7E S:06DF P:envMxdizc HC:0538 VC:159 00 FL:32
$C1/091A A0 00 00 LDY #$0000 A:0029 X:001B Y:014E D:0000 DB:7E S:06DF P:envMxdizc HC:0544 VC:159 00 FL:32
$C1/091D 99 1B 0D STA $0D1B,y[$7E:0E69] A:0029 X:001B Y:014E D:0000 DB:7E S:06DF P:envMxdizc HC:0550 VC:159 00 FL:32
$C1/0920 C8 INY A:0029 X:001B Y:014E D:0000 DB:7E S:06DF P:envMxdizc HC:0556 VC:159 00 FL:32
$C1/0921 C8 INY A:0029 X:001B Y:014E D:0000 DB:7E S:06DF P:envMxdizc HC:0562 VC:159 00 FL:32
$C1/0922 C0 0C 00 CPY #$000C A:0029 X:001B Y:014E D:0000 DB:7E S:06DF P:envMxdizc HC:0568 VC:159 00 FL:32
$C1/0925 D0 F6 BNE $F6    [$091D] A:0029 X:001B Y:014E D:0000 DB:7E S:06DF P:envMxdizc HC:0574 VC:159 00 FL:32
$C1/0927 7A PLY A:0029 X:001B Y:014E D:0000 DB:7E S:06DF P:envMxdizc HC:0580 VC:159 00 FL:32
$C1/0928 60 RTS A:0029 X:001B Y:014E D:0000 DB:7E S:06DF P:envMxdizc HC:0586 VC:159 00 FL:32

It works perfectly with one PC in battle, but not at all with two or three.

Vehek

  • Errare Explorer (+1500)
  • *
  • Posts: 1761
    • View Profile
Re: 6 Letters Available! (Almost Done)
« Reply #86 on: October 08, 2008, 06:47:24 pm »
That STA $0D1B,y will only work for PC1 under Battle Gauge 1.
7E0D1B is only the start of PC1's name under Battle Gauge 1.

The value it gets from CCFA29 is used to determine where to place the 29's.

For battle gauge 2, it gets this value instead:
$C1/08FA BF 23 FA CC LDA $CCFA23,x[$CC:FA23] A:0000 X:0000 Y:014E P:envmxdiZc
« Last Edit: October 08, 2008, 07:00:14 pm by Vehek »

Mauron

  • Guru of Reason Emeritus
  • Errare Explorer (+1500)
  • *
  • Posts: 1772
  • Nu-chan
    • View Profile
    • Maurtopia
Re: 6 Letters Available! (Almost Done)
« Reply #87 on: October 08, 2008, 07:51:13 pm »
Hmm. In that case, I'm not sure how to rewrite that code.

Maybe I'll have to relocate it and add the next 29 with the same method.

JLukas

  • Fan Project Leader
  • Squaretable Knight (+400)
  • *
  • Posts: 426
    • View Profile
Re: 6 Letters Available! (Almost Done)
« Reply #88 on: October 08, 2008, 08:43:35 pm »
Quote
It works perfectly with one PC in battle, but not at all with two or three.

The branch command you have at C10918 is off by one, going back to C1090F instead of C1090E.

Mauron

  • Guru of Reason Emeritus
  • Errare Explorer (+1500)
  • *
  • Posts: 1772
  • Nu-chan
    • View Profile
    • Maurtopia
Re: 6 Letters Available! (Almost Done)
« Reply #89 on: October 11, 2008, 03:48:20 pm »
Deleted my previous post, as I'm not using that code anymore.

Code: [Select]
Highlighting loop:
C1090A - C10928
$C1/090A A0 00 00 LDY #$0000
$C1/090D 9D C0 0C STA $0CC0,x[$7E:0CDB]
$C1/0910 9D 00 0D STA $0D00,x[$7E:0D1B]
$C1/0913 C8 INY
$C1/0914 C8 INY
$C1/0915 E8 INX
$C1/0916 E8 INX
$C1/0917 C0 0C 00 CPY #$000C
$C1/091A D0 F1 BNE $F1    [$090D]
$C1/091C 60 RTS
$C1/091D EA NOP
$C1/091E EA NOP
$C1/091F EA NOP
$C1/0920 EA NOP
$C1/0921 EA NOP
$C1/0922 EA NOP
$C1/0923 EA NOP
$C1/0924 EA NOP
$C1/0925 EA NOP
$C1/0926 EA NOP
$C1/0927 EA NOP
$C1/0928 EA NOP

Finally got it working in the original spot.

Code: [Select]

Name Loop #1
CCE61A - CCE63A
$CC/E61A C2 20       REP #$20
$CC/E61C 69 23 2C    ADC #$2C23
$CC/E61F AA          TAX
$CC/E620 A5 82       LDA $82    [$00:0082]
$CC/E622 29 FF 00    AND #$00FF
$CC/E625 69 03 94    ADC #$9403
$CC/E628 A8          TAY
$CC/E629 A9 05 00    LDA #$0005
$CC/E62C 54 7E 7E    MVN 7E 7E
$CC/E62F 29 FF 00    AND #$00FF
$CC/E632 E2 20       SEP #$20
$CC/E634 80 05       BRA $05    [$E63B]
$CC/E636 EA          NOP
$CC/E637 EA          NOP
$CC/E638 EA          NOP
$CC/E639 EA          NOP
$CC/E63A EA          NOP

This was posted by Geiger a few pages back. I finally decided to use this code in the patch.

One of the loops needs to be adjusted, but once that's done this patch will be complete. :D

Edit: Made a couple more changes:

CCE646 = 06 
CCE64A = 12

CCE669 = 00
CCE625 = 00

CCF83F-CCF845 = 00 06 0C 12 18 1E 24

This gets everyone working except for Frog and Magus, who display as rog and agus, respectively.

I'm not sure what's going on with those two.
« Last Edit: October 11, 2008, 04:28:29 pm by Mauron »