Hi-Tech: A Chrono Trigger tech editor for Temporal Flux! Beta 31 out!

Started by Mauron, February 25, 2011, 09:19:59 AM

Previous topic - Next topic

Mauron

Do you have the latest Temporal Flux? That sounds like a bug that was fixed in 3.04.

Assuming that's the case, you can fix it pretty easily.

1) In Hi-Tech, open up *Life and *Lightning2. Note the animation index under the Graphics Header.
2) From the File menu, select Export. Choose Hi-Tech and Player Tech Animation.
3) Export the animation indexes you noted to individual files.
4) Under Window -> Strings, select Tech Descriptions. The last few will be corrupted. The last three are Single Tech, Dual Tech, and Triple Tech.
5) Save your ROM.
6) Import the files you exported earlier. This may not be necessary, but we don't want to corrupt your animations in the process.
7) Save your ROM again.

While you're at it, you should check any other string groups not marked (FL) for signs of corruption. It will always be in the last few of a group that hasn't been edited.

Let me know if you have any problems with this.

Also, you can swap your animations by changing the graphics header animation index, and the import/export feature can create duplicates or similar techs.
Mauron wuz here.

fedorajoe

Awesome!

Seems like any time you try hacking a new game, there is a heck of a learning curve! :)

Thanks for the tips--I'll try this tonight!

November 25, 2017, 09:58:49 PM - (Auto Merged - Double Posts are not allowed before 7 days.)

Hey Mauron, thanks to you I got things working without a hitch.

I had a question about how to toggle single techs as usable or not usable from the menu, but I found a super helpful post from you on Chrono Compendium that answered it for me.

Thanks again!

Mauron

Glad it's working.

I'll add the usable in menu toggle to the next version of Hi-Tech. I realized there was a fairly easy way to handle it just now.
Mauron wuz here.

Mauron

Hi-Tech Beta 24!

Important: If you have changed animations in a prior version, save an animation in that group  (player attacks, player techs, items, enemy attacks, or enemy techs) again. There was a bug in the expansion code that would cause a crash in certain instances.

- Tech Animation Targeting: Caster + ... and Target + ... relabled as Caster 2, Target 2, etc.
- Tech Animation Targeting: Values 9-11 clarified as Cursor Coordinates for caster or target
- Tech Animation Targeting: Unknown 13 decoded as Between Caster and Target.
- Tech Animation Targeting: Unknown 14 decoded as Between Caster and Caster 2
- Tech Animation Targeting: Unknown 15 decoded as between Caster and Caster 3
- Tech Animation Targeting: Unknown 40 decoded as Between Caster 2 and Caster 3
- Tech Animation Targeting: Unknown 18 decoded as center of screen
- Tech Animation Targeting: Unknown 19 decoded as Caster Start Location
- Tech Animation Targeting: Unknown 1A decoded as Caster 2 Start Location
- Tech Animation Targeting: Unknown 1B decoded as Caster 3 Start Location
- Tech Animation Commands: Unknown 13, 14, 15 decoded as move to (spiral).
- Tech Animation Commands: Unknown 16, 17, 18 decoded as move to (x, then y).
- Tech Animation Commands: All Move To command can now be handled from one command type.
- Tech Animation Commands: Load Sprite At (1C) redecoded as Link Object
- Tech Animation Commands: Unknown 1D decoded as Remove Object Link
- Tech Animation Commands: Drawing Status Show/Hide PC? decoded as Draw/Hide Caster or Target
- Tech Animation Commands: Drawing Status Show/Hide redecoded as Draw/Hide Effect
- Tech Animation Commands: Unknown 6E and 6F decoded as Draw/Hide all Effects
- Tech Animation Commands: Draw/Hide Shadow is now part of the Drawing Status group.
- Various: Simplified code for display of strings on property grids
- Effect Header: Prerelease ROMs now display Unused 4.01 status effect as Summon Enemy
- Control Header: Removed redundant code.
- Control Header: Fixed issue with saving enemy attack 1.
- Graphics Header: Removed redundant code.
- Tech Animation Commands: Grouped set speed and set default speed.
- Tech Animation Commands: Play Sound (2 bytes), (3 bytes), and weapon sound are now grouped.
- Tech Animation Commands: Increment Counter # and Increment Counter 1C/1D are now grouped.
- Tech Animation Commands: Decrement Counter # and Decrement Counter 1C/1D are now grouped.
- Tech Animation Commands: Set Counter and Set Counter 1C/1D are now grouped.
- Tech Animation Commands: Wait for Counter and Wait for Counter 1C/1D are now grouped.
- Tech Animation Commands: Copy Counter and Copy Counter 1C are now grouped.
- Tech Animation Commands: Swap Counters 1C and 1D, Swap Counters 1C and 1E, and Swap Counters 1C and 1F are now grouped as Swap Counter 1C.
- Tech Animation Commands: Reset Screen Color redecoded as Set Angle variant.
- Tech Animation Commands: Unknowns 76 and 77 decoded as Set Angle variants.
- Tech Animation Commands: Fixed bug with Shake Sprite.
- Tech Animation Commands: Unknown 43 decoded as store coordinates of target with offset
- Tech Animation Commands: Removed Unknown (4 bytes)
- Various: Improved handling of user input.
- Tech Animation Commands: Unknown 44 decoded as store coordinates of current object.
- Tech Animation Commands: Fixed labeling error with Move to Target.
- Tech Animation Commands: Fixed issue with set priority dropdown.
- Tech Animation Commands: Unknown 99, 9a, 9b, 9c, and 9d partially decoded as Move to (0x98) variants.
- Tech Animation Commands: Unknown Command 65 merged into Unknown Command 61 as "off" mode.
- Animation Expansion: Fixed bug with expanded animations and addresses ending in 0xFC-0xFF.
- Effect Headers: Self-Sacrifice? Transfer Stat? renamed as Transfer HP/MP (removes current HP from caster) and unknowns identified as matching other healing values.
- Effect Headers: All Healing types healing power now has a description on how it works.
- Effect Headers: Healing Power now sets the value to the max allowed (0x1F) if this value is exceeded.
- Tech Targeting: Player and Enemy tech targeting was split, showing accurate information for both.

Usable in menu got delayed with other changes, and I needed to get the crash fix out quickly.

Edit: I found a bug in saving animations. Don't make changes with those for now.

Edit: Hi-Tech Beta 25!

- Fixed a save issue corrupting animations.
Mauron wuz here.

Mauron

Hi-Tech Beta 26!

- Updated hit effect list descriptions.
- Fixed display of Enemy Attacks.
- Fixed bug with updating enemy effect headers.
- Added option to change which single techs are usable in the menu.

I'm working on investigating the layer 3 effects, such as *Lightning's bolt, or *Luminaire's green orb, to see what editing can be done with those. There will some kind of functionality in the next version.
Mauron wuz here.

ThegreatBen

Well that would explain why the mist dissapears on Mt Woe when you cast a spell.

Mauron

Hi-Tech Beta 27!

- Added list of battle sounds (Thanks to xcalibur)
- Added list of Layer 3 packets
- Added editing of Layer 3 packets
- Added list of Layer 3 subpackets
- Added display of Layer 3 palettes.
- Updated Graphics Header.
- Simplified some loading code.
- Fixed issue with move up/move down commands

Assuming no bugs pop up, this will also be a stable release.
Mauron wuz here.

Mauron

And a bug pops up.

Hi-Tech Beta 29!

Important: If you have changed animations in a prior version, save an animation in that group  (player attacks, player techs, items, enemy attacks, or enemy techs) again.

- Updated Enemy Tech and Super Command Descriptions
- Fixed crash when attempting to play miss animations.

I'll probably have a few more improvements soon. I've almost decoded a couple new animation commands, but wanted to get this out first.

Quick patch from beta 28. The above notice still applies.

- Fixed a remaining issue with miss animations.
- Fixed an issue with detecting unfixed enemy attack animations.
- Tech animation command 0x69 decoded as set object palette.
- Tech animation command 0x6a decoded as reset object palette.
- Tech animation command 0x6c, flash object palette, grouped into set object palette mode flash, along with the above two.
Mauron wuz here.

Dev Anj

So I was trying to modify Mune's X Strike because the current version of it is quite buggy and breaks the game when used on certain maps, however the editor doesn't seem to be saving my changes. What should I do to make it work properly?

Mauron

Just to make sure, are you clicking Save Animation (or Save Control Header/Graphics Header/Effect Header), followed by File -> Save in the main Temporal Flux window?

There's probably a better way to label those buttons.

Edit: Hi-Tech Beta 30!

- Fixed bug with some animation commands being loaded incorrectly.
Mauron wuz here.

einlanzer

Hello,

I'm having trouble finding a version that doesn't have problems with updating tech reqs. Earlier versions will save changes, but it's buggy and often the incorrect values are loaded and the game file will become corrupt. More recent versions seem to just prevent saving changes (it will appear to save, but it won't.)

Is this a known issue, or do you have any recommendations for getting around it?

One other thing I wanted to ask about is if there was any way with this tool to change the names for the ages displayed on the Epoch's Hud when you travel through time? It doesn't seem to be drawn from the string values located in "ages" or "years".

Thanks!

einlanzer

New, quick question - are there any existing maps (not locations) in the game that are unused that can be modified or built on?

Mauron

Oh, sorry I missed this!

I'll double check the saving of tech requirements.

I haven't worked with the Epoch's HUD data much.

There probably are some unused maps, but I'm not sure which ones of the top of my head. You can also cheat the way they did and use one map for multiple locations, like the villages.

Edit: I found a couple issues with the tech requirement saving. One's fixed, the other will be addressed shortly. I'll have a new version out soon.
Mauron wuz here.

Mauron

Hi-Tech Beta 31!

- Animation Command 5E decoded as hide caster or target variant
- Animation Command 5D decoded a draw caster or target variant
- Fully decoded Circular Sprite Movement
- Animation commands C4 and C5 decoded as vertical sprite movement.
- Added support for player control header flag "requires magic to learn"
- Animation Command A2 decoded as Move forward until collision
- Fully decoded Move Forward.
- Fixed bug with changing set angle variants
- Merged draw and remove copy commands in editor.
- Fixed saving of Tech requirements.
Mauron wuz here.

ThegreatBen

Is it possible to have a condition for learning the last tech in the list, like say killing Magus at the cape?

Mauron

Nothing like that exists, but it might be doable as a hack, similar to the magic requirement.
Mauron wuz here.

Cthulhu88

Hey Mauron,

I was wondering if it's possible to tweak the animation objects without moving huge chunks of code.

This is my Ayla's Charm changes that makes it stop one enemy and remove the last Play Animation and Move to effect animation objects:

// +++ Ayla's Charm Tech +++
// Control Header
seek($CC1DE2) // Hit Effects
    db $00 // None
    db $00 // None
    db $00 // None

// Effect Header 1
seek($CC235B) // [Mode]
    db $02    // Status Impact
    db $01    // Negative Status
seek($CC235D) // [Status]
    db $80    // Stop
seek($CC2360) // [Success]
    db 80     // Base
    db 0      // Bonus
seek($CC2362) // [Options]
    dw $0040  // Ignore Shield Status

// Animation Objects
// Deleted last Play Animation and last Move to commands from object #.
if {defined EX} {
seek($C14615)
    db $A8,$0A,$AA,$BF,$F0,$5E,$CD,$85,$40,$BB,$BF,$51,$FC,$C6,$85,$42
    db $E2,$20,$7B,$A8,$AA,$B7,$40,$95,$81,$C8,$B7,$40,$95,$80,$C8,$BB
    db $C0,$04
seek($C14638)
    db $D0,$F0,$98,$C2,$21,$65,$40,$85,$40,$7B,$A8,$C2,$20,$06,$80,$90
    db $1F,$AD,$B3,$A0,$D0,$16,$A9,$01,$00,$99,$AC,$5D,$5A,$98
seek($C14657)
    db $0A,$A8,$A7,$40,$99,$BD,$5D,$A5,$42,$99,$BF,$5D,$7A,$E6,$40,$E6
    db $40
seek($C1466D)
    db $D5
seek($C1467E)
    db $C2
seek($C6FC51)
    db $CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE
    db $CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE
    db $CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CB,$CE,$CE
    db $CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE
    db $CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE
    db $CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE
    db $CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE
    db $CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE
seek($CBF164)
    db $90,$F0,$80,$00,$76,$F1,$8D,$F1,$9C,$F1,$B2,$F1,$C3,$F1,$D5,$F1
    db $EF,$F1,$72,$0D,$03,$4B,$78,$45,$35,$02,$4C,$23,$05,$03,$16,$03
    db $16,$35,$06,$03,$23,$06,$2E,$01,$00,$23,$03,$20,$0A,$7A,$AB,$03
    db $D8,$04,$02,$14,$20,$14,$35,$00,$0A,$73,$00,$02,$00,$60,$00,$1B
    db $00,$23,$01
seek($CBF1A8)
    db $14,$70,$78,$58,$9C,$00,$0C,$71,$35,$00,$0A,$73,$00,$02,$01,$1B
    db $00,$23,$01,$20,$19,$70,$9C,$00,$0C,$71,$00,$0A,$73,$00
seek($CBF1C7)
    db $01,$1B,$00,$23,$01,$20,$1E,$70,$9C,$00,$0C,$71,$35,$00,$D9,$30
    db $0B,$43,$0C,$00,$19,$1A,$73,$03,$02,$02,$60,$01,$23,$02,$70,$23
    db $03,$20,$14,$35,$23,$05,$71,$00,$72,$0D,$03,$4B,$78,$45,$03,$17
    db $03,$17,$02,$1A,$50,$06,$03,$2E,$01,$00
seek($CD5F4A)
    db $64,$F1
} else {
seek($C14615)
    db $A8,$0A,$AA,$BF,$F0,$5E,$CD,$85,$40,$BB,$BF,$D3,$FD,$C1,$85,$42
    db $E2,$20,$7B,$A8,$AA,$B7,$40,$95,$81,$C8,$B7,$40,$95,$80,$C8,$BB
    db $C0,$04
seek($C14638)
    db $D0,$F0,$98,$C2,$21,$65,$40,$85,$40,$7B,$A8,$C2,$20,$06,$80,$90
    db $1F,$AD,$B3,$A0,$D0,$16,$A9,$01,$00,$99,$AC,$5D,$5A,$98
seek($C14657)
    db $0A,$A8,$A7,$40,$99,$BD,$5D,$A5,$42,$99,$BF,$5D,$7A,$E6,$40,$E6
    db $40
seek($C1466D)
    db $D5
seek($C1467E)
    db $C2
seek($C1FDD3)
    db $CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE
    db $CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE
    db $CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$C1,$CE,$CE
    db $CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE
    db $CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE
    db $CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE
    db $CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE
    db $CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE,$CE
    db $90,$F0,$80,$00,$65,$FE,$7C,$FE,$8B,$FE,$A1,$FE,$B2,$FE,$C4,$FE
    db $DE,$FE,$72,$0D,$03,$4B,$78,$45,$35,$02,$4C,$23,$05,$03,$16
seek($C1FE73)
    db $16,$35,$06,$03,$23,$06,$2E,$01,$00,$23,$03,$20,$0A,$7A,$AB,$03
    db $D8,$04,$02,$14,$20,$14,$35,$00,$0A,$73,$00,$02,$00,$60,$00,$1B
    db $00,$23,$01,$20,$14,$70,$78,$58,$9C,$00,$0C,$71,$35,$00,$0A,$73
    db $00,$02,$01,$1B,$00,$23,$01
seek($C1FEAB)
    db $19,$70,$9C
seek($C1FEAF)
    db $0C,$71,$00,$0A,$73,$00,$02,$01,$1B,$00,$23,$01,$20,$1E,$70,$9C
    db $00,$0C,$71,$35,$00,$D9,$30,$0B,$43,$0C,$00,$19,$1A,$73,$03,$02
    db $02,$60,$01,$23,$02,$70,$23,$03,$20,$14,$35,$23,$05,$71,$00,$72
    db $0D,$03,$4B,$78,$45,$03,$17,$03,$17,$02,$1A,$50,$06,$03,$2E,$01
    db $00
seek($CD5F4A)
    db $53,$FE
}

// Tech Description
if {defined EX} {
seek($F68417)
} else {
seek($CC3E23)
}
    db $B2,$32,$C9,$EF,$33,$BE,$C6,$D2 // Stop enemy
    db $00,$00,$00,$00,$00

// --- Ayla's Charm Tech ---

As you can see, the animation objects change is quite significant and makes it much less portable. In fact, I had to write a script to compare all modified bytes, dump and format them into ASM.

Is it possible at all within the game to make this more portable? I still need to do the same for Twin Charm, making this doubly uglier.

Thank you!

Mauron

Depending on your exact changes, most of those might be unnecessary. Chrono Trigger's default code only allows player tech animations to be loaded from bank $CE, and some objects are shared between multiple techs. Player Tech animation pointers are at 0x0D5EF0, with Cyclone at index 1. The data starts with the following format:

Hit object flags (2 bytes) Miss object flags (2 bytes) Object pointers (2 bytes each). The data starting at each object pointer is what's displayed in Hi-Tech.

Depending on what your new Charm and Twin Charm do, you may be able to work within the limitations of the original code.
Mauron wuz here.

Cthulhu88

Quote from: Mauron on September 08, 2019, 03:23:55 PMDepending on what your new Charm and Twin Charm do, you may be able to work within the limitations of the original code.

Just those two commands removed.
According to Hi-Tech, 0x0E2D7C (02 03) and 0x0E2D7E (98 00 09).

I believe it's safe to leave the Move to command in without the Play Animation command, but I haven't tested yet.
I am fairly sure other animations don't use this object. I even checked Twin Charm and it uses different effect objects.

Would it be safe to just dw $0E2D7C to 0?

Mauron

Definitely no on the that change, but there is a simpler change to remove two commands. db $35, 0 at $0E2D7C. Actually, db $71 at $0E2D77 might work better (Drawing Status: Show Effect to Drawing Status: Hide Effect). 00 works as an object terminator, so any commands beyond it would be ignored.
Mauron wuz here.