Author Topic: Chillyfeez's Shadow Party Hack V 2.0  (Read 875 times)

Gedankenschild

  • Vargas
  • *
  • Posts: 101
  • Gender: Male
    • View Profile
Re: Chillyfeez's Shadow Party Hack V 2.0
« Reply #30 on: December 27, 2017, 01:40:27 PM »
It's 4, and I did consider it for that reason, but in the end I think those images are too small relative to the screen.
I'm pretty sure the plan I've got will work, and it should look pretty cool once I've got it all working.
Is Squall's tutorial responsible for the better understanding you spoke about on RHDN?

That makes sense. The Final Fantasy V job selection screen does the same thing, graying out all jobs except for the currently selected one. I think it's always a good idea to look at other games in the series and see how things are handled there.

And yes, Squall's tutorial was indeed helpful. Bits, bytes, planes - I know what to do but not what to call it oftentimes... :whoa:
You've got to be kidding me with that Dynasty Warriors registration question??!!
I barely know such a series exists...

chillyfeez

  • FF4 Hacker
  • *
  • Posts: 1,284
  • Gender: Male
  • Go ahead, ask me about Angel Feathers!
    • View Profile
Re: Chillyfeez's Shadow Party Hack V 2.0
« Reply #31 on: December 27, 2017, 05:19:14 PM »
There are a lot of reasons that Cecil will not be removable from the party, but the main reason is that, for the purpose of this mod, it would just be too complicated. I'm working with very limited space in certain situations, and in order to make everything work right, I'm going to have to slash character records in such a way that I can fit everyone except Cecil. You, specifically, may be sad to hear that this also leaves no place for Golbez. Sorry, man.

thepatirckinator

  • Tunnel Armor
  • *
  • Posts: 155
  • Gender: Male
  • God bless you all!
    • View Profile
Re: Chillyfeez's Shadow Party Hack V 2.0
« Reply #32 on: December 27, 2017, 08:47:39 PM »
I know it's unfortunate we can't do anything about Golbez. An advantage is we can replace the useless ninja with everyone else.
« Last Edit: December 28, 2017, 07:20:25 AM by thepatirckinator »

chillyfeez

  • FF4 Hacker
  • *
  • Posts: 1,284
  • Gender: Male
  • Go ahead, ask me about Angel Feathers!
    • View Profile
Re: Chillyfeez's Shadow Party Hack V 2.0
« Reply #33 on: December 28, 2017, 11:41:01 AM »
So, slow going, but yesterday I finally got the routine written that loads the battle character "sprites" into VRAM (they're not really sprites in this instance, as they are part of BG1). By tomorrow, I plan to finish the routine that actually displays the images of the characters currently in the party. At that point, I'll finally have some new screenshots to show off!

Squall

  • Hell's Rider
  • *
  • Posts: 433
    • View Profile
Re: Chillyfeez's Shadow Party Hack V 2.0
« Reply #34 on: December 28, 2017, 05:34:59 PM »
And yes, Squall's tutorial was indeed helpful. Bits, bytes, planes - I know what to do but not what to call it oftentimes... :whoa:
I'm glad the tutorial was helpful. Thats is one of the reason it was done here, rather in PM/chat.

So, slow going, but yesterday I finally got the routine written that loads the battle character "sprites" into VRAM (they're not really sprites in this instance, as they are part of BG1).
Wooah good progress! Would you like to share the code in ASM?

P.S. Since the tutorial was more of introduction rather detail coding, would you like to do some practical coding? I'm going to give standalone tasks, that doesn't require zillions of line of code, you must make the ASM code. We will test the result in emulators. I found a small library that produce all the initialization you need, so you can focus mainly on the task that I'm going to give. It doesn't require specific library (so you can implement whatever is on your mind, not limiting yourself to specific) but has defined all PPU registers for easy use (by name rather numbers). So far it produces small 32k ROM files that you can load in any emulator.

chillyfeez

  • FF4 Hacker
  • *
  • Posts: 1,284
  • Gender: Male
  • Go ahead, ask me about Angel Feathers!
    • View Profile
Re: Chillyfeez's Shadow Party Hack V 2.0
« Reply #35 on: December 29, 2017, 04:46:36 AM »
Quote
Would you like to share the code in ASM?

Sure:

Code: [Select]
$01/BA78 A9 0D       LDA #$0D                A:0C02 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envMxdIzc HC:0396 VC:000 FC:24 I:00
$01/BA7A 85 F0       STA $F0    [$00:01F0]   A:0C02 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envMxdIzc HC:0412 VC:000 FC:24 I:00
$01/BA7C A9 10       LDA #$10                A:0C02 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envMxdIzc HC:0428 VC:000 FC:24 I:00
$01/BA7E 85 F2       STA $F2    [$00:01F2]   A:0C02 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envMxdIzc HC:0444 VC:000 FC:24 I:00
$01/BA80 A9 50       LDA #$50                A:0C02 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envMxdIzc HC:0460 VC:000 FC:24 I:00
$01/BA82 85 F3       STA $F3    [$00:01F3]   A:0C02 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envMxdIzc HC:0476 VC:000 FC:24 I:00
$01/BA84 A2 00 00    LDX #$0000              A:0C02 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envMxdIzc HC:0492 VC:000 FC:24 I:00
$01/BA87 A0 60 00    LDY #$0060              A:0C02 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envMxdIzc HC:0508 VC:000 FC:24 I:00
$01/BA8A 20 D0 BA    JSR $BAD0  [$01:BAD0]   A:0C02 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envMxdIzc HC:0524 VC:000 FC:24 I:00
$01/BA8D C2 20       REP #$20                A:0C02 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envMxdIzc HC:0548 VC:000 FC:24 I:00
$01/BA8F 8A          TXA                     A:0C02 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envmxdIzc HC:0564 VC:000 FC:24 I:00
$01/BA90 18          CLC                     A:0C02 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envmxdIzc HC:0580 VC:000 FC:24 I:00
$01/BA91 69 40 07    ADC #$0740              A:0C02 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envmxdIzc HC:0596 VC:000 FC:24 I:00
$01/BA94 AA          TAX                     A:0C02 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envmxdIzc HC:0612 VC:000 FC:24 I:00
$01/BA95 A5 F2       LDA $F2    [$00:01F2]   A:0C02 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envmxdIzc HC:0628 VC:000 FC:24 I:00
$01/BA97 69 00 01    ADC #$0100              A:0C02 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envmxdIzc HC:0644 VC:000 FC:24 I:00
$01/BA9A 85 F2       STA $F2    [$00:01F2]   A:0C02 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envmxdIzc HC:0660 VC:000 FC:24 I:00
$01/BA9C E2 20       SEP #$20                A:0C02 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envmxdIzc HC:0684 VC:000 FC:24 I:00
$01/BA9E C6 F0       DEC $F0    [$00:01F0]   A:0C02 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envMxdIzc HC:0700 VC:000 FC:24 I:00
$01/BAA0 D0 E6       BNE $E6    [$BA88]      A:0C02 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envMxdIzc HC:0716 VC:000 FC:24 I:00
$01/BAA2 64 F2       STZ $F2    [$00:01F2]   A:0C02 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envMxdIzc HC:0732 VC:000 FC:24 I:00
$01/BAA4 64 F3       STZ $F3    [$00:01F3]   A:0C02 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envMxdIzc HC:0748 VC:000 FC:24 I:00
$01/BAA6 60          RTS                     A:0C02 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envMxdIzc

This part of the routine essentially sets all of the variables that will be used 13 times over to copy the tiles for each character. The 0D written to 01F0 is used to count the number of times the routine loops. The 5010 written to 1F2 sets the address in VRAM where the data will be written (multiplied by 2, so it actually starts at $A020). The 0060 stored in Y counts the bytes of graphic data copied to VRAM - I'm only using the first $C0 bytes of each character, and since two bytes are written at a time we're counting down from half of C0. Register X functions as an index for the source of copied graphical data.

Code: [Select]
$01/BAD0 8B          PHB                     A:0C00 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envMxdIZc HC:0020 VC:000 FC:28 I:00
$01/BAD1 A9 00       LDA #$00                A:0C00 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envMxdIZc HC:0036 VC:000 FC:28 I:00
$01/BAD3 48          PHA                     A:0C00 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envMxdIZc HC:0052 VC:000 FC:28 I:00
$01/BAD4 AB          PLB                     A:0C00 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envMxdIZc HC:0068 VC:000 FC:28 I:00
$01/BAD5 8D 15 21    STA $2115  [$7E:2115]   A:0C00 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envMxdIZc HC:0084 VC:000 FC:28 I:00
$01/BAD8 C2 20       REP #$20                A:0C00 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envMxdIZc HC:0108 VC:000 FC:28 I:00
$01/BADA A5 F2       LDA $F2    [$00:01F2]   A:0C00 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envmxdIZc HC:0124 VC:000 FC:28 I:00
$01/BADC 8D 16 21    STA $2116  [$7E:2116]   A:0C00 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envmxdIZc HC:0140 VC:000 FC:28 I:00
$01/BADF E2 20       SEP #$20                A:0C00 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envmxdIZc HC:0164 VC:000 FC:28 I:00
$01/BAE1 BF 00 80 1A LDA $1A8000,x[$1A:3D0C] A:0C00 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envMxdIZc HC:0180 VC:000 FC:28 I:00
$01/BAE5 EB          XBA                     A:0C00 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envMxdIZc HC:0196 VC:000 FC:28 I:00
$01/BAE6 E8          INX                     A:0C00 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envMxdIZc HC:0212 VC:000 FC:28 I:00
$01/BAE7 BF 00 80 1A LDA $1A8000,x[$1A:3D0C] A:0C00 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envMxdIZc HC:0228 VC:000 FC:28 I:00
$01/BAEB 8D 19 21    STA $2119  [$7E:2119]   A:0C00 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envMxdIZc HC:0244 VC:000 FC:28 I:00
$01/BAEE EB          XBA                     A:0C00 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envMxdIZc HC:0260 VC:000 FC:28 I:00
$01/BAEF 8D 18 21    STA $2118  [$7E:2118]   A:0C00 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envMxdIZc HC:0276 VC:000 FC:28 I:00
$01/BAF2 E8          INX                     A:0C00 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envMxdIZc HC:0292 VC:000 FC:28 I:00
$01/BAF3 88          DEY                     A:0C00 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envMxdIZc HC:0308 VC:000 FC:28 I:00
$01/BAF4 D0 EB       BNE $EB    [$BAE1]      A:0C00 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envMxdIZc HC:0324 VC:000 FC:28 I:00
$01/BAF6 7B          TDC                     A:0C00 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envMxdIZc HC:0340 VC:000 FC:28 I:00
$01/BAF7 EB          XBA                     A:0C00 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envMxdIZc HC:0356 VC:000 FC:28 I:00
$01/BAF8 AB          PLB                     A:0C00 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envMxdIZc HC:0372 VC:000 FC:28 I:00
$01/BAF9 60          RTS                     A:0C00 X:BD0C Y:0300 D:0100 DB:7E S:02DD P:envMxdIZc HC:0388 VC:000 FC:28 I:00

And this is the part of the routine that actually copies the data into VRAM. You may notice that the routine writes the data one byte at a time by writing to $2119 and then $2118. I was originally under the impression that I could write a two-byte value to $2118, but it turns out that doing so copies the two bytes to bytes $00 and $02 in VRAM, which is weird and unhelpful. But I figured out this workaround, so no problem.


The end result of all this has the tile data written as characters 01, 02, 03, 04, 05, 06, 11, 12, 13... D6. This leaves a lot of unused space in VRAM, but is much easier to index.

Quote
Since the tutorial was more of introduction rather detail coding, would you like to do some practical coding? I'm going to give standalone tasks, that doesn't require zillions of line of code, you must make the ASM code. We will test the result in emulators. I found a small library that produce all the initialization you need, so you can focus mainly on the task that I'm going to give. It doesn't require specific library (so you can implement whatever is on your mind, not limiting yourself to specific) but has defined all PPU registers for easy use (by name rather numbers). So far it produces small 32k ROM files that you can load in any emulator.

Yeah, that sounds like a good exercise. Not sure when I'd be able to get to it, but let's see what you've got.

Squall

  • Hell's Rider
  • *
  • Posts: 433
    • View Profile
Re: Chillyfeez's Shadow Party Hack V 2.0
« Reply #36 on: January 01, 2018, 12:11:17 PM »
Every start is usually slow, so I'm using the whole after all the celebrations to set a common ground

1. Good assembler compiler. We going to use WLA.
I know you don't care but productivity depends on the usefulness of the tool you use. WLA seems to have all the ability I need (as macro-assembler) and I haven't heard negatives about it.
LINKs: Official siteSource code, Win32 executable.

2. Good Editor.
I use Notepad++, but feel free whatever you have or know better.
Download

3. SNES framework.
This is our framework to get started. It has all necessarily to compile a ROM. We will pretty much get an example, make it blank and inject our code.
LINK: Framework

4. SNES Emulator
Use whatever your preferences is, but higan will be used as final judge (if something doesn't work)

5. BAT file
Because of the way WLA works, we will need to execute different files, create temporary files, clear the trash ... its easier this to be automated.
Code: [Select]
set WLAPath=..\..\wla_dx_9.2\binaries\
set ProjectName=done

echo [objects] > temp.prj
echo %ProjectName%.obj >> temp.prj

%WLAPath%\wla-65816.exe -o %ProjectName%.asm %ProjectName%.obj
%WLAPath%\wlalink.exe -vr temp.prj %ProjectName%.smc

del %ProjectName%.obj
del temp.prj

pause

P.S. If somebody know how to compile trough Notepad++, please share. Also if you know an editor dedicated on 65x02 assembly, please let me know

chillyfeez

  • FF4 Hacker
  • *
  • Posts: 1,284
  • Gender: Male
  • Go ahead, ask me about Angel Feathers!
    • View Profile
Re: Chillyfeez's Shadow Party Hack V 2.0
« Reply #37 on: January 03, 2018, 10:31:06 AM »
*whew*

writing these routines took quite a bit longer than I expected, but it works!

Some screenshots, which show off the ability to load different palettes depending on who's in the party, and also the ability to determine if a slot is empty, and leave the space blank:







Ignore the image of Namingway in the top corner. He won't be there anymore once I swap out the routine that loads him for the one that will load the character portraits.

For those interested in seeing the ASM:

Main Routine
Code: [Select]
$01/9DF5 A9 00       LDA #$00   
$01/9DF7 85 F0       STA $F0   
$01/9DF9 A2 00 00    LDX #$0000
$01/9DFC DA          PHX        ;Preparing registers
$01/9DFD 22 60 FD 0B JSL $0BFD60 ;Routine that assigns palettes 1-5 (04,08,0c,10,14) to each character graphic
$01/9E01 A0 00 00    LDY #$0000
$01/9E04 FA          PLX       
$01/9E05 22 85 FD 0B JSL $0BFD85 ;Routine that determines if a character is present in each slot, and if so loads the appropriate tiles
$01/9E09 22 AC FD 0B JSL $0BFDAC ;Routine that loads the appropriate palette for each character
$01/9E0D C2 20       REP #$20   
$01/9E0F 8A          TXA       
$01/9E10 18          CLC       
$01/9E11 69 40 00    ADC #$0040
$01/9E14 AA          TAX       
$01/9E15 98          TYA       
$01/9E16 18          CLC       
$01/9E17 69 06 00    ADC #$0006
$01/9E1A A8          TAY       
$01/9E1B E2 20       SEP #$20   
$01/9E1D E6 F2       INC $F2   
$01/9E1F C6 F0       DEC $F0   
$01/9E21 D0 E2       BNE $E2    ;Loops back to 19E05 to run four more times, for each character slot
$01/9E23 64 F2       STZ $F2   
$01/9E25 20 B2 80    JSR $80B2  ;DMA transfer of all palette data into CGRAM
$01/9E28 20 36 94    JSR $9436  ;DMA transfer of tilemap into VRAM
$01/9E2B 60          RTS       

Palette Assignment Routine:
Code: [Select]
$0B/FD60 A9 02       LDA #$02   
$0B/FD62 85 F2       STA $F2   
$0B/FD64 A5 F0       LDA $F0   
$0B/FD66 1A          INC A     
$0B/FD67 0A          ASL A     
$0B/FD68 0A          ASL A     
$0B/FD69 9D 63 B7    STA $B763,x
$0B/FD6C 9D A3 B7    STA $B7A3,x
$0B/FD6F 9D E3 B7    STA $B7E3,x
$0B/FD72 E8          INX       
$0B/FD73 E8          INX       
$0B/FD74 C6 F2       DEC $F2   
$0B/FD76 D0 F1       BNE $F1   
$0B/FD78 E8          INX       
$0B/FD79 E8          INX       
$0B/FD7A E6 F0       INC $F0   
$0B/FD7C A5 F0       LDA $F0   
$0B/FD7E C9 05       CMP #$05   
$0B/FD80 D0 DE       BNE $DE   
$0B/FD82 7B          TDC       
$0B/FD83 EB          XBA       
$0B/FD84 6B          RTL       

Character Tile Assignment Routine:
Code: [Select]
$0B/FD85 BD 00 10    LDA $1000,x
$0B/FD88 F0 21       BEQ $21   
$0B/FD8A BD 01 10    LDA $1001,x
$0B/FD8D 48          PHA       
$0B/FD8E 0A          ASL A     
$0B/FD8F 0A          ASL A     
$0B/FD90 0A          ASL A     
$0B/FD91 0A          ASL A     
$0B/FD92 1A          INC A     
$0B/FD93 99 62 B7    STA $B762,y
$0B/FD96 1A          INC A     
$0B/FD97 99 64 B7    STA $B764,y
$0B/FD9A 1A          INC A     
$0B/FD9B 99 A2 B7    STA $B7A2,y
$0B/FD9E 1A          INC A     
$0B/FD9F 99 A4 B7    STA $B7A4,y
$0B/FDA2 1A          INC A     
$0B/FDA3 99 E2 B7    STA $B7E2,y
$0B/FDA6 1A          INC A     
$0B/FDA7 99 E4 B7    STA $B7E4,y
$0B/FDAA 68          PLA       
$0B/FDAB 6B          RTL       

Character Palette Loading Routine:
Code: [Select]
$0B/FDAC DA          PHX       
$0B/FDAD 5A          PHY       
$0B/FDAE C2 20       REP #$20   
$0B/FDB0 0A          ASL A     
$0B/FDB1 0A          ASL A     
$0B/FDB2 0A          ASL A     
$0B/FDB3 0A          ASL A     
$0B/FDB4 0A          ASL A     
$0B/FDB5 AA          TAX       
$0B/FDB6 A5 F2       LDA $F2   
$0B/FDB8 0A          ASL A     
$0B/FDB9 0A          ASL A     
$0B/FDBA 0A          ASL A     
$0B/FDBB 0A          ASL A     
$0B/FDBC 0A          ASL A     
$0B/FDBD A8          TAY       
$0B/FDBE E2 20       SEP #$20   
$0B/FDC0 A9 20       LDA #$20   
$0B/FDC2 85 F4       STA $F4   
$0B/FDC4 BF 00 FD 1C LDA $1CFD00,x
$0B/FDC8 99 20 A0    STA $A020,y
$0B/FDCB E8          INX       
$0B/FDCC C8          INY       
$0B/FDCD C6 F4       DEC $F4   
$0B/FDCF D0 F3       BNE $F3   
$0B/FDD1 7A          PLY       
$0B/FDD2 FA          PLX       
$0B/FDD3 6B          RTL       


The next step in this process will be writing in the system that stores and retrieves characters to and from the "shadow." This will probably also take a considerable amount of time, and there won't really be any screenshots to show for my work when it's all done, but I will post the ASM as relevant routines are completed.

 :cycle:

thepatirckinator

  • Tunnel Armor
  • *
  • Posts: 155
  • Gender: Male
  • God bless you all!
    • View Profile
Re: Chillyfeez's Shadow Party Hack V 2.0
« Reply #38 on: January 04, 2018, 12:40:25 PM »
I look forward to the final product!

Grimoire LD

  • FF4 Hacker
  • *
  • Posts: 1,684
    • View Profile
Re: Chillyfeez's Shadow Party Hack V 2.0
« Reply #39 on: January 08, 2018, 01:26:29 PM »
That looks great Chillyfeez! I am glad to see you finally managed to make it presentable in-game, that is an incredible start! I know how difficult it is to deal even with the most basic of graphical GUI changes.

chillyfeez

  • FF4 Hacker
  • *
  • Posts: 1,284
  • Gender: Male
  • Go ahead, ask me about Angel Feathers!
    • View Profile
Re: Chillyfeez's Shadow Party Hack V 2.0
« Reply #40 on: January 09, 2018, 09:14:25 AM »
Thanks!
I spent the better part of yesterday just preparing a ROM to reinvestigate the add character/remove character/re-add character routines, which was an unflinching reminder of what a massive undertaking this project is going to be. With a lot of hard work, I'm still probably a month away from a final product. But at least it has a visible end. You know, unlike TfW which will probably be a WIP until just before I die =p

I've got a routine worked out that will add the equipment of a removed character into the player's inventory, or bring up the "choose what to keep" screen if the player's inventory is full. I'm pretty sure it will work, but I'm nowhere near the point where I can actually write it into ROM and run it, so there's not really anything to show ATM.

The other thing I did is create a ROM with FF4kster that gives me easy access to all of the different party-change situations. Essentially, I turned the town of Baron into a sort-of debug room. The four buildings across the front of the town are now Rydia House, Kain House, Tellah House and Edward House.
In Rydia House, there are two Kid Rydias and Two Adult Rydias, which will add and remove the respective character when spoken to.
In Kain House, there are three Kain's - one which adds Kain from ROM, one which adds Kain from RAM, and one which removes either Kain from the party.
In Tellah House, there are four Tellahs. One adds Tellah (from ROM), one removes Tellah, one "transforms" Tellah into his ultimate version (like what happens on Ordeals) and one removes ultimate a version Tellah.
Edward House just has two Edwards - one to add Edward and one to remove him.

If I'm not mistaken, this should be an example of every kind of party change dynamic in the game, which will allow me to breakpoint the add character and remove character functions in order to see all of their routines in action.

All of that was just prepwork to begin investigating what normally happens so I can formulate a plan for how I'm going to hack it.

Good times...

Swordmaster

  • Octomammoth
  • *
  • Posts: 23
  • Gender: Male
  • Wit and courage have served thee well.
    • View Profile
Re: Chillyfeez's Shadow Party Hack V 2.0
« Reply #41 on: January 11, 2018, 06:43:00 AM »
Just curious, but what will you do about FuSoYa and the Zemus/Zeromus autobattles?  It would be cool if you could use even FuSoYa at the end of the game without breaking the story or the autobattles.  I'm not requesting or anything, just wondering.

chillyfeez

  • FF4 Hacker
  • *
  • Posts: 1,284
  • Gender: Male
  • Go ahead, ask me about Angel Feathers!
    • View Profile
Re: Chillyfeez's Shadow Party Hack V 2.0
« Reply #42 on: January 12, 2018, 08:39:55 AM »
In terms of FuSoYa's availability for the final battle, I plan to have him available.

Because the PHS system is replacing the Namingway screen, it will be relatively simple to insert a set-your-party prompt into an event.

As for making FuSoYa available through PHS when he wasn't before, that's been accounted for. When a character is removed from the party, they will be set automatically to a "Not Available in PHS" status (which PHS will recognize by the MSB being set in the character's level byte) When an event script calls for "Add Character to Party," the routine will check that level byte. If the MSB is set, then the "Add Character to Party" command will simply clear the bit. If the bit is not set, then the character will be added to the party. It's a relatively simple way to work PHS availability into event scripts without disrupting much else. Of course, it will require me to edit every already-existing event to add an extra "Add Character" command every time a character is actually supposed to be added, but I consider that a small price to pay in the long run.

As far as not-in-party characters participating in autobattles (I guess FuSoYa is the only one, but I may face a similar type of situation with the Cecil vs. Cecil battle and Adult Rydia's return), I'm not fully sure how this will work yet, but I'm confident that I can figure it out when necessary.

Swordmaster

  • Octomammoth
  • *
  • Posts: 23
  • Gender: Male
  • Wit and courage have served thee well.
    • View Profile
Re: Chillyfeez's Shadow Party Hack V 2.0
« Reply #43 on: January 12, 2018, 12:54:56 PM »
I feel this will be a masterpiece when completed, chillyfeez.  A must for nearly every hack.  This has always been my #1 wish for this game, even way back when it was first released.  #2 wish would be some sort of new game plus where you could choose any character(s) from the very beginning, story be damned (sort of like Lufia II Gift Mode, but for the whole game.  Which, by the way, is really fun to do with Lufia II.  Start a new Gift Mode game, use a code for "airship anywhere", fly to the starting town and begin the story.  You can always warp back to Gruberik to change your party at any point in the game.)

chillyfeez

  • FF4 Hacker
  • *
  • Posts: 1,284
  • Gender: Male
  • Go ahead, ask me about Angel Feathers!
    • View Profile
Re: Chillyfeez's Shadow Party Hack V 2.0
« Reply #44 on: January 12, 2018, 02:27:27 PM »
Well, thanks! I sure hope it all turns out as well as I envision it. So far I haven't hit any major roadblocks!