Users browsing this thread: 1 Guest(s)
Umaro's Dash, Relics & Unequipping All

#11
 
Status
None
If I understand you correctly, this should work:

Code:
@0C3792:
B2 40 F6 1C          Branch to E6/F640
FD FD FD FE          Skip rest of subroutine & return

@26F640:
C0 AC 01 48 F6 1C    If ($1E80($1AC) [$1EB5, bit 4] is clear), branch to E6/F648
8D 0C                Remove all equipment from character $0C
E1                   Load CaseWord with characters who are collected
C0 AD 01 B3 5E 00    If ($1E80($1AD) [$1EB4, bit 5] is clear), branch to $CA5EB3 (simply returns)
8D 0D                Remove all equipment from character $0D
FE                   Return

but I still get the world splitting screen, and I've made no other mods to these areas... I'm not sure where I could be missing the byte

EDIT: I tried removing the conditional line with AD altogether (C0 AD 01 B3 5E 00). Now, there is no byte AD at all, but the world splitting screen is still showing.
 
 

#12
Posts: 3,970
Threads: 279
Thanks Received: 236
Thanks Given: 58
Joined: Oct 2011
Reputation: 65
Status
Tissue-aware
I honestly don't know what to say. I'm busy right now so I can't test this...

Edit: try using a sound effect @26F640 with a FE right after... If the sound play, it means the problem is not with the jump...
  Find
 

#13
 
Status
None
No worries! If ever you get a chance, I'd really appreciate it.

The good news is, a slightly different approach caused that scene to stop popping up and the game now resumes as normal. However, neither Gogo (0C) nor Umaro (0D) now get de-equipped. I moved Gogo's call to de-equip to the new event space, and added Umaro's right after it. The new approach was to use the existing conditional check for Gogo to call my sub instead of the "simply return" sub, and I removed the "FE" return command that I shouldn't have placed at 0C3799, replacing with another FD (I think this is what fixed the "end of the world" problem).

If you get the chance to test, all you'd need is a save state with both Gogo & Umaro in party, standing right in front of the airship de-equip man. Then de-equip, land, fight, and see if they use their fists instead of bone club & whatever.

The non-freezing, not-working-for-Gogo-nor-Umaro modifications are:

Theoretical code mods, as I understand:
Code:
@CC/3792
CC/3792: C0    If ($1E80($1AC) [$1EB5, bit 4] is clear), branch to E6/F640
CC/3798: FD FD

@E6/F640
E6/F640: 8D    Remove all equipment from character 0C
E6/F642: E1    Load CaseWord with characters who are collected
E6/F643: C0    If ($1E80($1AD) [$1EB4, bit 5] is clear), branch to $CA5EB3 (simply returns)
E6/F649: 8D    Remove all equipment from character 0D
E6/F64B: FE    Return

Actual hex mods:
Code:
@0C3792:
C0 AC 01 40 F6 1C  (If ($1E80($1AD) [$1EB4, bit 5] is clear), branch to 26F640)

@26F640:
8D 0C              (Remove all equips from character 0C)
E1                 (Load CaseWord with characters who are collected)
C0 AD 01 B3 5E 00  (If ($1E80($1AD) [$1EB4, bit 5] is clear), branch to $CA5EB3)
8D 0D              (Remove all equips from character 0D)
FE                 (Return)

It appears as if I'm very close, and it's simply not running my sub. Who knows!

EDIT: With the non-freezing mods, I've tried to make it play a sound effect during my sub; no luck hearing the effect, so I'm guessing it's simply not calling my sub for some reason.
 
 

#14
Posts: 3,970
Threads: 279
Thanks Received: 236
Thanks Given: 58
Joined: Oct 2011
Reputation: 65
Status
Tissue-aware
If you don't hear the sound effect it means the game doesn't read the code after the jump; in fact it reads code elsewhere probably. No need to try to modify the code in bank E6 because it is not read.

I vaguely remember Gi Nattak saying event code can't be placed somewhere in the ROM, it might be Bank E... We would need to confirm with him. What I'm 100% sure is that event code works in bank F (expand your ROM for that) and bank CA to CC (you have space in bank CC toward the end, however part of it is overwritten by FF3usME when you save with the program).

And if it was a miscalculation in the jump, the game would crash or freeze. Clearly E6 - CA = 1C, you can try with a calculator. I'm really puzzled.O.o
  Find
 

#15
 
Status
None
I'm pretty sure I'm just not calling the event right or something...

I tried changing to the CB bank, where @0100E8 there is space:
Code:
@0C3792:
C0 AC 01 E8 00 01
and moved the event there.

I also tried changing to the CC bank, where @026669 there is space:
Code:
@0C3792:
C0 AC 01 69 66 02
and moved the event there.

No change...
 
 

#16
Posts: 290
Threads: 3
Thanks Received: 40
Thanks Given: 1
Joined: Apr 2012
Reputation: 9
Status
None
I've expanded events into bank E, so I'm sure that works.

I don't see anything wrong at a glance either, and I can't putz around with it myself tonight. I'll look into it in the morning if you haven't already figured it out.


GET A SILK BAG FROM THE GRAVEYARD DUCK TO LIVE LONGER.

Brave New World
  Find
 

#17
Posts: 290
Threads: 3
Thanks Received: 40
Thanks Given: 1
Joined: Apr 2012
Reputation: 9
Status
None
Code:
@CC3592
B2 1A FE 02              Call subroutine $CCFE1A
FE                       Return

@CCFE1A
C0 AC 01 B3 5E 00        If ($1E80($1AC) [$1EB4, bit 5] is clear), branch to $CA5EB3 (simply returns)
8D 0C                    Remove all equipment from character $0C
E1                       Load CaseWord with characters who are collected (excludes Veldt-jumped Gau)
C0 AD 01 B3 5E 00        If ($1E80($1AD) [$1EB4, bit 5] is clear), branch to $CA5EB3 (simply returns)
8D 0D                    Remove all equipment from character $0D
FE                       Return

This works for me.

I used the free space at the end of the event banks instead of resorting to bank E, but it worked even when I tested it at E6/F640.

I think the issue with yours is that you're not taking your header into account on the jump. Your jump destination should be 512 bytes (200h bytes) before the actual code. For example, in the above code, my jump destination is CC/FE1A, but the actual code (the "landing point" for lack of a better term) will be at D0/001A in a headered ROM if you look at it in a hex editor.


GET A SILK BAG FROM THE GRAVEYARD DUCK TO LIVE LONGER.

Brave New World
  Find
 

#18
 
Status
None
This works beautifully, much obliged. I really thought I had taken it into consideration, because the offset addresses of free space I used, I obtained through a post that says the 0x200 offset is accounted for Tongue.

I KNEW it was something small! Thanks a lot both of you (Madsiur & Synchysi) for pointing me in the right direction. Now to work on the "unequip all not in party" sub—and since you both have explained the concepts I was missing so well, I think I should be fine.

There is only one other little thing I need, hex-editing-wise, that I can't find in any dissassembly or documentation yet though: How can I prevent Kappa's Rage/Leap tutorial from ever occurring? Or, perhaps, what are its offsets, so I can 0xFD the f*** out of it XD?
 
 

#19
Posts: 2,549
Threads: 98
Thanks Received: 147
Thanks Given: 159
Joined: Aug 2009
Reputation: 52
Status
Nattak\'d
The Kappa scene is actually a "battle event", which C1 handles (much like how C0 handles normal event execution), but is stored in the D0 bank.

There is some documentation here regarding the battle events:
https://www.ff6hacking.com/forums/showth...tle+events

As for the exact byte(s) to edit to skip the Kappa scene, I can't remember
(I had to remove it as well) but this would be the battle event in question:
D0/981A: 21 AA (D0/AA21) Gau is fed some Dried Meat?

Also, you would not use an 'FD' byte to bypass it, that's used for normal event data only.
I think it might be 'FF' used instead (FF = End), to end/cut off the battle event script before it goes into that part of the scene where it does the map change, music change, and loads the Imp sprite - at least that's how I think I managed to get rid of it... I do remember it was a bit tricky and trial and error at first until it was removed successfully without any hiccups.

Battle event data is kind of a b*t*h to look at and work with & test or else I'd give you the exact answer of which bytes to change, but hopefully this'll help out some.


We are born, live, die and then do the same thing over again.
 

#20
 
Status
None
Thanks Gi Nattak, I'll give that a look and let you know what I've come up with.

As far as the "unequip all not in party", I've moved that entire event to right after the endpoint of my previously moved one (CC/FE2C) and inserted code to remove Umaro's equips right after Gogo's. It seems to remove everyone's equipment (not in party) except Umaro's.

Code:
@CC/359D:
B2 2C FE 02 FE

@CC/FE2C:
(Pasted 215 bytes from original CC/359D - CC/3673)
@CC/FF03:
C0 AD 01 B3 5E 00
DE
C0 AD 81 B3 5E 00
8D 0D
(Then the normal rest of the event, 92 3A FE)


I'll bet it's something simple again :p
 
 



Forum Jump:

Users browsing this thread: 1 Guest(s)


Theme by Madsiur2017Custom Graphics by JamesWhite