Author Topic: 8th Playable Character Possible?! (Updating!)  (Read 88726 times)

nightmare975

  • Architect of Kajar
  • God of War (+3000)
  • *
  • Posts: 3263
    • View Profile
Re: 8th Playable Character Possible?! (Updating!)
« Reply #195 on: July 19, 2008, 03:09:38 pm »
This is going pretty good!

Insane

  • Springtime of Youth
  • Guardian (+100)
  • *
  • Posts: 115
    • View Profile
Re: 8th Playable Character Possible?! (Updating!)
« Reply #196 on: July 19, 2008, 03:22:11 pm »

Edit 3: - Wtf?

Oh my god! Ayla's a.. pirate thing! And Magus is a girl!
TA-DA!! Heh.

Saelind

  • Earthbound (+15)
  • *
  • Posts: 20
    • View Profile
Re: 8th Playable Character Possible?! (Updating!)
« Reply #197 on: July 19, 2008, 05:06:03 pm »
I'm pretty sure that's Toma and Kino =P

Is that... a megaman is Lucca's slot?! O.O

Ozzie

  • Porrean (+50)
  • *
  • Posts: 53
    • View Profile
Re: 8th Playable Character Possible?! (Updating!)
« Reply #198 on: July 19, 2008, 05:17:18 pm »
I'm thinking it's Johnny, he is robotic in nature.

justin3009

  • Fan Project Leader
  • God of War (+3000)
  • *
  • Posts: 3296
    • View Profile
Re: 8th Playable Character Possible?! (Updating!)
« Reply #199 on: July 19, 2008, 05:48:39 pm »
Frog = Tata
Lucca = Johnny
8th = Chancellor
Robo = Leene
Crono = Blank
Ayla = Toma
Magus = Kino.

Insane

  • Springtime of Youth
  • Guardian (+100)
  • *
  • Posts: 115
    • View Profile
Re: 8th Playable Character Possible?! (Updating!)
« Reply #200 on: July 20, 2008, 05:49:16 am »
Magus = Kino.

No. Way. Everyone, Kino's a girl now, K?

justin3009

  • Fan Project Leader
  • God of War (+3000)
  • *
  • Posts: 3296
    • View Profile
Re: 8th Playable Character Possible?! (Updating!)
« Reply #201 on: July 21, 2008, 01:09:16 am »
There's alot of these bugs that i'm not really even sure how to fix anymore...so this is going to need help from everyone :|

Vehek

  • Errare Explorer (+1500)
  • *
  • Posts: 1761
    • View Profile
Re: 8th Playable Character Possible?! (Updating!)
« Reply #202 on: August 06, 2008, 04:24:06 am »
Today (as in several hours ago), I tried to find out more about the menu palette used by the 8th character. I'm not sure how usable what I have so far is.

Quote from: Palette for Crono
$C2/F4EC AD 92 98    LDA $9892  [$7E:9892]   A:A800 X:2800 Y:0095 P:eNvmxdIzc //Get palette number from copied sprite data
$C2/F4EF 29 FF 00    AND #$00FF              A:0000 X:2800 Y:0095 P:envmxdIZc
$C2/F4F2 0A          ASL A                   A:0000 X:2800 Y:0095 P:envmxdIZc //Double the accumulator
$C2/F4F3 6F E8 FF E4 ADC $E4FFE8[$E4:FFE8]   A:0000 X:2800 Y:0095 P:envmxdIZc //Add 2A00 to get the address of the palette pointer.
$C2/F4F7 AA          TAX                     A:2A00 X:2800 Y:0095 P:envmxdIzc
$C2/F4F8 BF 00 00 E4 LDA $E40000,x[$E4:2A00] A:2A00 X:2A00 Y:0095 P:envmxdIzc //Load the palette pointer
$C2/F4FC AE 94 98    LDX $9894  [$7E:9894]   A:0000 X:2A00 Y:0095 P:envmxdIZc
$C2/F4FF F0 04       BEQ $04    [$F505]      A:0000 X:0000 Y:0095 P:envmxdIZc
$C2/F505 AA          TAX                     A:0000 X:0000 Y:0095 P:envmxdIZc //Copy palette pointer into x register.
$C2/F506 A5 19       LDA $19    [$00:1819]   A:0000 X:0000 Y:0095 P:envmxdIZc
$C2/F508 29 00 0E    AND #$0E00              A:2280 X:0000 Y:0095 P:envmxdIzc
$C2/F50B 4A          LSR A                   A:0200 X:0000 Y:0095 P:envmxdIzc // These divide it by 0x10
$C2/F50C 4A          LSR A                   A:0100 X:0000 Y:0095 P:envmxdIzc
$C2/F50D 4A          LSR A                   A:0080 X:0000 Y:0095 P:envmxdIzc
$C2/F50E 4A          LSR A                   A:0040 X:0000 Y:0095 P:envmxdIzc
$C2/F50F 69 82 95    ADC #$9582              A:0020 X:0000 Y:0095 P:envmxdIzc // Add $9582 to get the palette address in memory
$C2/F512 A8          TAY                     A:95A2 X:0000 Y:0095 P:eNvmxdIzc
$C2/F513 A9 17 00    LDA #$0017              A:95A2 X:0000 Y:95A2 P:eNvmxdIzc
$C2/F516 54 7E E4    MVN 7E E4               A:0017 X:0000 Y:95A2 P:envmxdIzc // Copy palette to memory.

I then tried to see where that "$00:??19" value came from and found this:
Quote
$C2/F3DC BF 48 F5 C2 LDA $C2F548,x[$C2:F548] A:FF00 X:0000 Y:0092 P:envMXdIZc
$C2/F3E0 85 19       STA $19    [$00:1819]   A:FF80 X:0000 Y:0092 P:eNvMXdIzc

I also tried to find the shop issue:
Quote
$FF/F62F A5 00       LDA $00    [$00:0000]   //Get the PC number
$FF/F631 EB          XBA                      // Switch upper bits with lower bits
$FF/F632 29 00 07    AND #$0700       
$FF/F635 4A          LSR A                    //These divide it by 8
$FF/F636 4A          LSR A                   
$FF/F637 4A          LSR A                   
$FF/F638 69 A2 95    ADC #$95A2      //Add $95A2 to get palette address in memory
$FF/F63B A8          TAY                     //Copy to Y register
$FF/F63C A5 00       LDA $00    [$00:0000]   //Load PC number again.
$FF/F63E 29 07 00    AND #$0007     
$FF/F641 0A          ASL A                   A:0000 X:0000 Y:95A2 P:envmxdiZc //Double it
$FF/F642 6F E8 FF E4 ADC $E4FFE8[$E4:FFE8]   //Add 2A00 to get address of palette pointer
$FF/F646 AA          TAX                     //Copy pointer address into x register
$FF/F647 BF 00 00 E4 LDA $E40000,x[$E4:2A00] A:2A00 X:2A00 Y:95A2 P:envmxdizc //Load palette pointer
$FF/F64B AA          TAX                     A:0000 X:2A00 Y:95A2 P:envmxdiZc //Copy palette pointer into x register
$FF/F64C A5 02       LDA $02    [$00:0002]   // ????
$FF/F64E 29 00 FF    AND #$FF00             
$FF/F651 D0 09       BNE $09    [$F65C] // If accumulator not 0, go to $F65C; happens on non-selected PC
$FF/F653 A9 17 00    LDA #$0017         
$FF/F656 54 7E E4    MVN 7E E4          // Copy palette into memory
...
$FF/F65C A9 0C 00    LDA #$000C             
$FF/F65F 85 00       STA $00    [$00:0000]  //Store $0C to 00:0000 for loop purposes.
$FF/F661 BF 00 00 E4 LDA $E40000,x[$E4:00x]  //Load the color in the palette
$FF/F665 4A          LSR A                    // Halve it to adjust the color?
$FF/F666 29 EF 3D    AND #$3DEF               //Some other alteration?
$FF/F669 99 00 00    STA $0000,y[$7E:y]    //Store altered color to palette in memory
$FF/F66C E8          INX                     A:0C63 X:00AA Y:9684 P:envmxdizc //These two commands increase the x register to the next color in the palette
$FF/F66D E8          INX                     
$FF/F66E C8          INY                      //These two increate the y register to the next color in memory.
$FF/F66F C8          INY                     
$FF/F670 C6 00       DEC $00    [$00:0000]    //Decrement 00:0000
$FF/F672 D0 ED       BNE $ED    [$F661]       //Loop ends when $00:0000 reaches 0
I think this changes the nonselected PCs' palettes to greyed out and is run for each PC recruited. When it hits the eighth character, the address it gets is apparently the background or something, turning the menu black. When canceling out, it then apparently overwrites that palette with palette 07.

Edit-Some commenting in code.
« Last Edit: August 08, 2008, 01:22:45 am by Vehek »

Vehek

  • Errare Explorer (+1500)
  • *
  • Posts: 1761
    • View Profile
Re: 8th Playable Character Possible?! (Updating!)
« Reply #203 on: August 10, 2008, 04:11:00 pm »
Two days ago, I tried to make Gaspar appear separately. It's somewhat connected to the palette thing. Starting at 7E1800, there are $40 byte groups with information on the PC menu sprites. The thing I changed to make the 8th character show in the menu tells it when to stop creating those groups. Gaspar's sprite information get stored starting at 7E19C0, which is where the 8th character's data is placed.
Quote
$C2/CA9F F4 C0 19    PEA $19C0  [$7E:19C0]   A:FFFF X:9618 Y:9598 P:envMxdizC
$C2/CAA2 2B          PLD                     A:FFFF X:9618 Y:9598 P:envMxdizC
This sets up where to place Gaspar's sprite. I changed this to 1A00.

Quote
$C2/F691 C9 40 1A    CMP #$1A40              A:18C0 X:0008 Y:0010 P:envmXdizc
This is part of the code that updates the screen (I think). I changed this to 1A80.
This got a seperate sprite to appear, but didn't solve it completely. That value that tells it where to store the palette is somehow also involved with the actual graphics, and the 8th character and Gaspar were sharing the same value.
Quote
$C2/F403 AF 56 F5 C2 LDA $C2F556[$C2:F556]   A:19C0 X:0090 Y:0070 P:envmXdIZC
This seems to load it for Gaspar's sprite.

Also, I noticed that when you select a character in the tech screen, it copies part of the character's data over the 8th character's sprite information in memory.
Of course, this stuff is probably just minor visual details compared to the other problems.

Edit-Fixed a typo.
« Last Edit: August 13, 2008, 03:57:42 pm by Vehek »

Vehek

  • Errare Explorer (+1500)
  • *
  • Posts: 1761
    • View Profile
Re: 8th Playable Character Possible?! (Updating!)
« Reply #204 on: August 16, 2008, 11:09:21 pm »
Some things I found a few days ago:

Quote
$C1/BFFF BF 83 25 CC LDA $CC2583,x[
This gets a value involved with physical attacks. X in this case is the character number. The value eventually goes through a routine which I think is used to multiply the value by 0x0B.

Quote
$C1/CB55 BF F0 1B CC LDA $CC1BF0,x
This is used to get the index of the attack made.
I still don't have a way to allow the 8th character to fight without having to have a specific character also in the party.


Quote
$C2/BA19 8D DA 19    STA $19DA  [$7E:19DA] //Palette
$C2/BA1C F4 C0 19    PEA $19C0  [$7E:19C0] //Direct page starting point.

$C2/B9FB 9C D8 19    STZ $19D8  [$7E:19D8] //Makes sprite visible

$C2/BA57 8D D8 19    STA $19D8  [$7E:19D8] //Hides sprite

$C2/BA01 8E CE 19    STX $19CE  [$7E:19CE] //Coordinates on screen
Bunch of commands that write to where the 8th character's sprite data in the menu is. Increase the values by $40.

Quote
$C2/F56A F4 80 19    PEA $1980  [$7E:1980]   A:0000 X:00FF Y:0006 P:eNvMXdizC
$C2/F56E A2 06       LDX #$06                A:0000 X:00FF Y:0006 P:envMXdizC
These are involved with hiding the other PCs when you enter the tech selection in the menu. These should be changed to $19C0 and $07.
The version of the PC in the tech screen also uses the command at C2/F403. While it doesn't use the same palette, it does still use the same graphics space as the 8th character.

Mauron

  • Guru of Reason Emeritus
  • Errare Explorer (+1500)
  • *
  • Posts: 1774
  • Nu-chan
    • View Profile
    • Maurtopia
Re: 8th Playable Character Possible?! (Updating!)
« Reply #205 on: August 16, 2008, 11:34:44 pm »
Here are some notes I made a while back, but hadn't done anything with.
Quote
Attack Headers: $C1/D5EF
  Crono - CC23F7
  Marle - CC2403
  Lucca - CC2403
  Frog - CC23F7
  Robo - CC23F7
  Ayla - CC23EB
  Magus - CC23F7
Those are a tech header format information on what a PC does with an attack. It's not enough to guarantee the presence of an existing PC though.

Vehek

  • Errare Explorer (+1500)
  • *
  • Posts: 1761
    • View Profile
Re: 8th Playable Character Possible?! (Updating!)
« Reply #206 on: August 20, 2008, 11:31:28 pm »
Some (non-battle) tech menu stuff I was working on the last time I posted in this topic:
Quote
$C2/BCCD AE 90 9A    LDX $9A90  [$7E:9A90] //Get portrait index of selected character
$C2/BCD0 BF BB F9 FF LDA $FFF9BB,x //Get character's tech-related value
$C2/BCD4 85 00       STA $00    [$00:0000]
$C2/BCD6 AD 18 04    LDA $0418  [$7E:0418] //Get tech type (00 = Single, 01=Double, 03=Triple)
$C2/BCD9 0A          ASL A
$C2/BCDA AA          TAX
$C2/BCDB BF 66 BD C2 LDA $C2BD66,x //Get number of groups for tech type
$C2/BCDF 85 01       STA $01    [$00:0001]
$C2/BCE1 BF 65 BD C2 LDA $C2BD65,x //Get index number of first group of tech type
$C2/BCE5 AA          TAX
$C2/BCE6 A0 00       LDY #$00
$C2/BCE8 BF 63 29 CC LDA $CC2963,x //Get a value for the tech group.
$C2/BCEC 25 00       AND $00    [$00:0000] //Check which bits match the character's tech-related value
$C2/BCEE F0 05       BEQ $05    [$BCF5] //If no bits match, skip to BCF5
$C2/BCF0 8A          TXA
$C2/BCF1 99 90 98    STA $9890,y //Store tech group number to memory
$C2/BCF4 C8          INY
$C2/BCF5 E8          INX
$C2/BCF6 C6 01       DEC $01    [$00:0001]
$C2/BCF8 D0 EE       BNE $EE    [$BCE8] //When 00:0001 reaches 0, end loop
If I understand it correctly, it only prints the techs in the groups that the character matches bits with. It also determines which PCs are shown when you select a tech in the group. This might be useful elsewhere.

(Previous edit on: August 20, 2008, 07:34:36 PM)

2009 Edit: Changed a little bit to hopefully make it more clear.
« Last Edit: April 14, 2009, 03:02:03 am by Vehek »

Vehek

  • Errare Explorer (+1500)
  • *
  • Posts: 1761
    • View Profile
Re: 8th Playable Character Possible?! (Updating!)
« Reply #207 on: August 31, 2008, 11:14:21 pm »
Today, I've been trying to keep the overworld idle animations and give the 8th character its own frames. I'm still working on the idle animations part.

Quote
$C2/2B8A AF 80 29 7E LDA $7E2980[$7E:2980]   A:FFFF X:9400 Y:B400 P:envmxdIZc
$C2/2B8E A0 00 BC    LDY #$BC00              A:0300 X:9400 Y:B400 P:envmxdIzc
$C2/2B91 20 CF 2B    JSR $2BCF  [$C2:2BCF]   A:0300 X:9400 Y:BC00 P:eNvmxdIzc
$C2/2BCF 8B          PHB                     A:0300 X:9400 Y:BC00 P:eNvmxdIzc
$C2/2BD0 29 FF 00    AND #$00FF              A:0300 X:9400 Y:BC00 P:eNvmxdIzc
$C2/2BD3 EB          XBA                     A:0000 X:9400 Y:BC00 P:envmxdIZc
$C2/2BD4 4A          LSR A                   A:0000 X:9400 Y:BC00 P:envmxdIZc
$C2/2BD5 4A          LSR A                   A:0000 X:9400 Y:BC00 P:envmxdIZc
$C2/2BD6 18          CLC                     A:0000 X:9400 Y:BC00 P:envmxdIZc
$C2/2BD7 69 00 AC    ADC #$AC00              A:0000 X:9400 Y:BC00 P:envmxdIZc //Form address where second idle frame is.
$C2/2BDA 85 08       STA $08    [$00:0008]   A:AC00 X:9400 Y:BC00 P:eNvmxdIzc
$C2/2BDC 84 0A       STY $0A    [$00:000A]   A:AC00 X:9400 Y:BC00 P:eNvmxdIzc
$C2/2BDE AA          TAX                     A:AC00 X:9400 Y:BC00 P:eNvmxdIzc
$C2/2BDF A9 3F 00    LDA #$003F              A:AC00 X:AC00 Y:BC00 P:eNvmxdIzc
$C2/2BE2 54 7F 7F    MVN 7F 7F               A:003F X:AC00 Y:BC00 P:envmxdIzc/quote]

justin3009

  • Fan Project Leader
  • God of War (+3000)
  • *
  • Posts: 3296
    • View Profile
Re: 8th Playable Character Possible?! (Updating!)
« Reply #208 on: September 15, 2008, 06:19:03 pm »
Not really an update, but it's the 8th character with 6 letters with it.  Double package.

[attachment deleted by admin]

Vehek

  • Errare Explorer (+1500)
  • *
  • Posts: 1761
    • View Profile
Re: 8th Playable Character Possible?! (Updating!)
« Reply #209 on: September 18, 2008, 03:54:48 am »
I think I have why the 8th character's save portrait loads the Lightning element icon.

$C2/D481 BF B4 D4 C2 LDA $C2D4B4,x
(x is the PC portrait #) I think the value it gets here is used to determine where in VRAM it loads from for the save portrait.

Also, 02FCA4 contains the value $380, which is the number of bytes the game copies from the save portrait graphic data. 02FC9F has the VRAM address the save portraits are copied to (I think).
« Last Edit: September 18, 2008, 04:54:14 am by Vehek »