Users browsing this thread: 1 Guest(s)
ASM Tasks

#31
Posts: 3,966
Threads: 279
Thanks Received: 234
Thanks Given: 56
Joined: Oct 2011
Reputation: 65
Status
Tissue-aware
(10-15-2016, 08:49 AM)B-Run Wrote: The earliest point we have suggested for her introduction is the magitek facility. Can you start from there?

Perfect! Can we starts from there for character $0F too?
  Find
Quote  

#32
Posts: 763
Threads: 83
Thanks Received: 55
Thanks Given: 7
Joined: Apr 2015
Reputation: 22
Status
Obliviscence
  Find
Quote  

#33
Posts: 3,966
Threads: 279
Thanks Received: 234
Thanks Given: 56
Joined: Oct 2011
Reputation: 65
Status
Tissue-aware
Ok so I've done something. Every character $0E or $0F after the Magitek Facility is now shifted in $0C and $0D. This cover Maduin, Leo and Kefka (twice). As for properties, Banon (formely properties $0E) now has properties $30 and Leo (formely properties $0F) now has properties $31. $30 and $31 are unused actors in original game. The only battle event needing edits was Leo's death where 10 actions needed a character (actor) change. I edited from $0F to $31 all instances.

The battle event is in a bin file and assembled with the ASM file. I did not include any actor data because this can be done later when new characters properties are decided. I hope this will work, I did not tested much stuff and tbh I lack the motivation to test everything today. I will report back another day after all tests. If you think I missed something please share.

http://madsiur.net/asm2.zip

Code:
hirom
;header

;Maduin
org $CAC556
dl $1E0C40      ;Assign properties $1E to character $0C (Actor in stot 12)
dl $300C37      ;Assign graphics $30 to object $0C (Actor in stot 12)
dl $040C43      ;Assign palette $04 to character $0C (Actor in stot 12)

org $CAC562
dl $010C3F      ;Assign character $0C (Actor in stot 12) to party 1

org $CAC576
dw $0C3D        ;Create object $0C

;Banon
org $CAFDB9
dl $300E40      ;Assign properties $30 to character $0E (Actor in stot 12)

;Leo
org $CBFF2E
dl $310C40      ;Assign properties $31 to character $0C (Actor in stot 12)
dw $0C3D        ;Create object $0C
dl $010C3F      ;Assign character $0C (Actor in stot 12) to party 1
dl $100C37      ;Assign graphics $10 to object $0C (Actor in stot 12)
dl $000C43      ;Assign palette $00 to character $0C (Actor in stot 12)
dl $0F0C7F      ;Change character $0C's name to $0F (LEO   )

org $CC04CC
dl $000C3F      ;Remove character $0C (Actor in stot 12) from the party
dw $0C3E        ;Delete object $0C

;Kefka
org $CC02F8
dl $2B0D40      ;Assign properties $2B to character $0D (Actor in stot 15)
dw $0D3D        ;Create object $0D
db $45          ;Refresh objects
dl $2B0D7F      ;Change character $0D's name to $2B (KEFKA )
dl $150D37      ;Assign graphics $15 to object $0D (Actor in stot 15)
dl $030D43      ;Assign palette $03 to character $0D (Actor in stot 15)
dd $00000D88    ;Remove the following status ailments from character $0D (Actor in stot 15): Float, Dog Block, Hide, Chant (Casting Spell), Morph (Esper-form), Instant Death Protection, Frozen, Rage, Death (Wound), Petrify (Stone), Imp, Vanish (Clear), M-Tek, Poison, Zombie, Dark
dw $0D8B        ;For character $0D (Actor in stot 15), take HP and set to maximum
dw $0D8C        ;For character $0D (Actor in stot 15), take MP and set to maximum

org $CBFFFF
dl $2C0D40      ;Assign properties $2C to character $0D (Actor in stot 15)
dw $0D3D        ;Create object $0D
db $45          ;Refresh objects
dl $2C0D7F      ;Change character $0D's name to $2C (KEFKA )
dl $150D37      ;Assign graphics $15 to object $0D (Actor in stot 15)
dl $030D43      ;Assign palette $03 to character $0D (Actor in stot 15)
dd $00000D88    ;Remove the following status ailments from character $0D (Actor in stot 15): Float, Dog Block, Hide, Chant (Casting Spell), Morph (Esper-form), Instant Death Protection, Frozen, Rage, Death (Wound), Petrify (Stone), Imp, Vanish (Clear), M-Tek, Poison, Zombie, Dark
dw $0D8B        ;For character $0D (Actor in stot 15), take HP and set to maximum
dw $0D8C        ;For character $0D (Actor in stot 15), take MP and set to maximum

;Leo's death Battle Event
org $D0C133
incbin battleevent.bin

Battle Event (original)
Code:
[Kefka kills Leo in Thamasa]
D0C133: 11            Open dialogue window at bottom of the screen
D0C134: 01 85         Display long battle dialogue $85 at bottom of the screen
                         "KEFKA: Ah……Leo……always the consummate soldier……"
D0C136: 0E            Clear animations
D0C137: 03 0F B6 C1   Animation for character 1(LEO) at $D0C1B6
D0C13B: 0F            Excecute animations
D0C13C: 01 86         Display long battle dialogue $86 at bottom of the screen
                         "LEO: Where are you, Kefka…… Show yourself!!"
D0C13E: 01 87         Display long battle dialogue $87 at bottom of the screen
                         "KEFKA: EMPEROR GESTAHL…… I need you here……"
D0C120: 0E            Clear animations
D0C121: 0D 0F 00 01   Do event animation $0F (attacker $00, target $01
D0C125: 03 00 27 C2   Animation for character 1(TERRA) at $D0C227
D0C129: 0F            Excecute animations
D0C12A: 01 88         Display long battle dialogue $88 at bottom of the screen
                         "EMPEROR GESTAHL: Leo……"
D0C12C: 0E            Clear animations
D0C12D: 03 0F 7C C3   Animation for character 1(LEO) at $D0C37C
D0C151: 0F            Excecute animations
D0C152: 01 89         Display long battle dialogue $89 at bottom of the screen
                         "LEO: My liege!"
D0C154: 0E            Clear animations
D0C155: 03 0F FB C1   Animation for character 1(LEO) at $D0C1FB
D0C159: 0F            Excecute animations
D0C15A: 01 8A         Display long battle dialogue $8A at bottom of the screen
                         "I’m sorry I deceived even you, Leo. My purpose has been to gather Magicite, and grow powerful…… Please understand me…"
D0C15C: 0E            Clear animations
D0C15D: 03 0F 7C C3   Animation for character 1(LEO) at $D0C37C
D0C161: 0F            Excecute animations
D0C162: 01 8B         Display long battle dialogue $8B at bottom of the screen
                         "LEO: But, Emperor…!"
D0C164: 0E            Clear animations
D0C165: 03 0F FB C1   Animation for character 1(LEO) at $D0C1FB
D0C169: 0F            Excecute animations
D0C16A: 01 8C         Display long battle dialogue $8C at bottom of the screen
                         "GESTAHL: Don’t say anything. I understand how you feel."
D0C16C: 0E            Clear animations
D0C16D: 03 0F 11 C2   Animation for character 1(LEO) at $D0C211
D0C171: 0F            Excecute animations
D0C172: 01 8D         Display long battle dialogue $8D at bottom of the screen
                         "KEFKA: Uwee, hee, hee…… That’s right!  What we have to do now is to collect Magicite"
D0C174: 0E            Clear animations
D0C175: 03 0F 7C C3   Animation for character 1(LEO) at $D0C37C
D0C179: 0F            Excecute animations
D0C17A: 01 8E         Display long battle dialogue $8E at bottom of the screen
                         "LEO: But my liege……what have I been fighting for…?"
D0C17C: 01 8F         Display long battle dialogue $8F at bottom of the screen
                         "GESTAHL: Leo, I’d like you to take a nice, long snooze…! Very long! Uwa, ha"
D0C17E: 0E            Clear animations
D0C17F: 0D 0F 00 01   Do event animation $0F (attacker $00, target $01
D0C183: 03 00 55 C2   Animation for character 1(TERRA) at $D0C255
D0C187: 0F            Excecute animations
D0C188: 0E            Clear animations
D0C189: 03 0F 81 C2   Animation for character 1(LEO) at $D0C281
D0C18D: 0F            Excecute animations
D0C18E: 01 90         Display long battle dialogue $90 at bottom of the screen
                         "LEO: !!!"
D0C190: 01 91         Display long battle dialogue $91 at bottom of the screen
                         "KEFKA: So……you think you hit me?! That was simply my shadow! And how did you like my Gestahl? I should’ve been on the stage! Well, General…"
D0C192: 0E            Clear animations
D0C193: 03 00 97 C2   Animation for character 1(TERRA) at $D0C297
D0C197: 04 0F AD C2   Animation for character 2(LEO) at $D0C2AD
D0C19B: 0F            Excecute animations
D0C19C: 01 92         Display long battle dialogue $92 at bottom of the screen
                         "You’re such a goody two-shoes!"
D0C19E: 01 93         Display long battle dialogue $93 at bottom of the screen
                         "LEO: Shut up, Kefka! I oughtta……"
D0C1A0: 01 94         Display long battle dialogue $94 at bottom of the screen
                         "KEFKA: Oh! A threat…? You’re such a violent little brute! I’ll tell your “liege” I had to exterminate a traitor…"
D0C1A2: 0E            Clear animations
D0C1A3: 03 00 D4 C2   Animation for character 1(TERRA) at $D0C2D4
D0C1A7: 04 0F F5 C2   Animation for character 2(LEO) at $D0C2F5
D0C1AB: 0F            Excecute animations
D0C1AC: 01 95         Display long battle dialogue $95 at bottom of the screen
                         "KEFKA: Hate……hate……HATE!!"
D0C1AE: 0E            Clear animations
D0C1AF: 03 00 5C C3   Animation for character 1(TERRA) at $D0C35C
D0C1B3: 0F            Excecute animations
D0C1B4: 10            Close dialogue window at bottom of the screen
D0C1B4: FF            End of battle event
  Find
Quote  
[-] The following 2 users say Thank You to madsiur for this post:
  • B-Run (10-17-2016), Robo Jesus (10-18-2016)

#34
Posts: 763
Threads: 83
Thanks Received: 55
Thanks Given: 7
Joined: Apr 2015
Reputation: 22
Status
Obliviscence
(10-16-2016, 02:25 PM)Madsiur Wrote: Ok so I've done something.

Did that sound weirdly ominous to anyone else? If you get a chance to test, let me know.

I will get back on command coding this week.
  Find
Quote  

#35
Posts: 3,966
Threads: 279
Thanks Received: 234
Thanks Given: 56
Joined: Oct 2011
Reputation: 65
Status
Tissue-aware
(10-17-2016, 07:49 AM)B-Run Wrote: Did that sound weirdly ominous to anyone else? If you get a chance to test, let me know.

Ominous as in I just watched a general die... and did nothing.

I tested Leo's death and I had an event bug with commands $8B and $8C, outside that everything plays fine meaning the battle event accept character ID $31 and Leo's / Kefka's event assignations are good. I'm not going to further test anything else because any other "bug" (if any) would be a quickly noticeable event typo. I've included also now properties data swapping.

http://madsiur.net/asm3.zip

Code:
hirom
;header

;Maduin
org $CAC556
dl $1E0C40      ;Assign properties $1E to character $0C (Actor in stot 12)
dl $300C37      ;Assign graphics $30 to object $0C (Actor in stot 12)
dl $040C43      ;Assign palette $04 to character $0C (Actor in stot 12)

org $CAC562
dl $010C3F      ;Assign character $0C (Actor in stot 12) to party 1

org $CAC576
dw $0C3D        ;Create object $0C

;Banon
org $CAFDB9
dl $300E40      ;Assign properties $30 to character $0E (Actor in stot 12)

;Leo
org $CBFF2E
dl $310C40      ;Assign properties $31 to character $0C (Actor in stot 12)
dw $0C3D        ;Create object $0C
dl $010C3F      ;Assign character $0C (Actor in stot 12) to party 1
dl $100C37      ;Assign graphics $10 to object $0C (Actor in stot 12)
dl $000C43      ;Assign palette $00 to character $0C (Actor in stot 12)
dl $0F0C7F      ;Change character $0C's name to $0F (LEO   )

org $CC04CC
dl $000C3F      ;Remove character $0C (Actor in stot 12) from the party
dw $0C3E        ;Delete object $0C

;Kefka
org $CC02F8
dl $2B0D40      ;Assign properties $2B to character $0D (Actor in stot 13 )
dw $0D3D        ;Create object $0D
db $45          ;Refresh objects
dl $2B0D7F      ;Change character $0D's name to $2B (KEFKA )
dl $150D37      ;Assign graphics $15 to object $0D (Actor in stot 13 )
dl $030D43      ;Assign palette $03 to character $0D (Actor in stot 13 )
dd $00000D88    ;Remove the following status ailments from character $0D (Actor in stot 13 ): Float, Dog Block, Hide, Chant (Casting Spell), Morph (Esper-form), Instant Death Protection, Frozen, Rage, Death (Wound), Petrify (Stone), Imp, Vanish (Clear), M-Tek, Poison, Zombie, Dark
dl $7F0D8B        ;For character $0D (Actor in stot 13 ), take HP and set to maximum
dl $7F0D8C        ;For character $0D (Actor in stot 13 ), take MP and set to maximum

org $CBFFFF
dl $2C0D40      ;Assign properties $2C to character $0D (Actor in stot 13 )
dw $0D3D        ;Create object $0D
db $45          ;Refresh objects
dl $2C0D7F      ;Change character $0D's name to $2C (KEFKA )
dl $150D37      ;Assign graphics $15 to object $0D (Actor in stot 13 )
dl $030D43      ;Assign palette $03 to character $0D (Actor in stot 13 )
dd $00000D88    ;Remove the following status ailments from character $0D (Actor in stot 13 ): Float, Dog Block, Hide, Chant (Casting Spell), Morph (Esper-form), Instant Death Protection, Frozen, Rage, Death (Wound), Petrify (Stone), Imp, Vanish (Clear), M-Tek, Poison, Zombie, Dark
dl $7F0D8B        ;For character $0D (Actor in stot 13 ), take HP and set to maximum
dl $7F0D8C        ;For character $0D (Actor in stot 13 ), take MP and set to maximum

;Leo's death Battle Event
org $D0C133
incbin battleevent.bin

;Banon and Leo original data
org $ED80C0
incbin banon.bin
incbin leo.bin

Edit: Next I could look at Colosseum ASM, Actor Names in Dialogue ($0E and $0F) or Animation Expansion (?). What would be the biggest priority?
  Find
Quote  

#36
Posts: 3,966
Threads: 279
Thanks Received: 234
Thanks Given: 56
Joined: Oct 2011
Reputation: 65
Status
Tissue-aware
I had a look at actor $0E and $0F names in dialogues. Here is what is used from my search and the table file. I think $17 and $18 are unused:

Code:
00=/
01=*
02=TERRA
03=LOCKE
04=CYAN
05=SHADOW
06=EDGAR
07=SABIN
08=CELES
09=STRAGO
0A=RELM
0B=SETZER
0C=MOG
0D=GAU
0E=GOGO
0F=UMARO
10=Pause for button input's control code
11=Non-interruptable pause's control code
12=End parameter's control code
13=New page's control code
14=Tab's control code
15=Selectable option's control code
16=Interruptable pause's control code
17=unused?
18=unused?
19=Amount of GP found in treasure chests
1A=item name for treasure chests
1B=Spell learned (unused)

I coded exceptions for $17 and $18 in routines C0/80DC and $C0/82CC that subtract #$09 to fetch characters $0E and $0F names. This require some free space in bank $C0 but there is plenty. It's not very elegant code since there is many small JSRs but it does the job. Dialogues show the correct name. I ran the intro and some random dialogues too to see problems and everything was running fine.

To write character $0E name in FF3usME, you need to enter OP$17 and character $0F would be OP$18, which are both labeled with no description. I'm confident this case is closed.

http://madsiur.net/asm4.zip

Code:
hirom
;header

org $C080E4
CMP #$17    
BEQ newChar
CMP #$18        
BEQ newChar
CMP #$10
BCS invalid    
DEC
DEC
BRA multiply
newChar:
SBC #$09
multiply:
JSR multiA
LDA $CF      
BPL invalid  
JSR multiB
loop:
LDA $1602,Y  
CMP #$FF      
BEQ invalid
JSR multiC
BNE loop
BRA invalid
print pc

org $C080D2
invalid:

ORG $C082CC
CMP #$17
BEQ newChar2
CMP #$18
BEQ newChar2    
CMP #$10    
BCS branch3
DEC A
DEC A
BRA multiD
newChar2:
SBC #$09
multiD:
JSR multiE
LDX $00
branch4:
LDA $1602,Y
print pc

org $C082F6
BNE branch4

org $C08302
branch3:

org $C0D613
multiA:
STA $4202      
LDA #$25      
STA $4203
RTS

multiB:
LDA #$06    
STA $1A      
LDY $4216    
RTS

multiC:
SEC            
SBC #$60    
TAX          
LDA $C48FC0,X  
CLC            
ADC $C0        
STA $C0      
INY          
DEC $1A
RTS    

multiE:
STA $4202
LDA #$25
STA $4203
NOP
NOP
NOP
NOP
LDY $4216
RTS
  Find
Quote  

#37
Posts: 1,633
Threads: 56
Thanks Received: 13
Thanks Given: 84
Joined: Apr 2014
Reputation: 12
Status
Atma
this list is the one of map dialogues(and not battle ones), right?


THE GREATEST CHALLENGE OF ALL TIMES AWAITS:
http://www.ff6hacking.com/forums/showthr...p?tid=2593
DO YOU HAVE WHAT IT TAKES TO SLAY A GOD?
------------------------------------------------------------------------
Tenkarider's project #2 is started: FF6 Curse of the Madsiur Joke (CotMJ)
http://www.ff6hacking.com/forums/showthr...p?tid=2755
What happens when Madsiur tweaks your account? This full game hack will show that!
  Find
Quote  

#38
Posts: 3,966
Threads: 279
Thanks Received: 234
Thanks Given: 56
Joined: Oct 2011
Reputation: 65
Status
Tissue-aware
(10-20-2016, 07:11 PM)Tenkarider Wrote: this list is the one of map dialogues(and not battle ones), right?

Yes, Battle Event dialogues and monster quotes use a different table (known as battle table).
  Find
Quote  

#39
Posts: 3,966
Threads: 279
Thanks Received: 234
Thanks Given: 56
Joined: Oct 2011
Reputation: 65
Status
Tissue-aware
For the battle quotes, the game use the properties ID ($1600) to parse the character name (as an example Locke is opcode 02 01). In vanilla the game will only exit before parsing the name if actor is equal or greater than $10 (see C1/5EAC function). Since we are using properties ID $0E and $0F, no need to change anything. It would only be problematic if Banon or Leo (now $30 and $31) would use opcode $02 but since we can't change their name they have their name hardcoded.
  Find
Quote  

#40
Posts: 1,633
Threads: 56
Thanks Received: 13
Thanks Given: 84
Joined: Apr 2014
Reputation: 12
Status
Atma
(10-25-2016, 01:23 AM)Madsiur Wrote: For the battle quotes, the game use the properties ID ($1600) to parse the character name (as an example Locke is opcode 02 01). In vanilla the game will only exit before parsing the name if actor is equal or greater than $10 (see C1/5EAC function). 

Wait, so if we remove that restriction(equal or greater than $10) then we might have inside dialogues the same stuff that it's used in map dialogues, like spell learned, etc?


THE GREATEST CHALLENGE OF ALL TIMES AWAITS:
http://www.ff6hacking.com/forums/showthr...p?tid=2593
DO YOU HAVE WHAT IT TAKES TO SLAY A GOD?
------------------------------------------------------------------------
Tenkarider's project #2 is started: FF6 Curse of the Madsiur Joke (CotMJ)
http://www.ff6hacking.com/forums/showthr...p?tid=2755
What happens when Madsiur tweaks your account? This full game hack will show that!
  Find
Quote  



Forum Jump:

Users browsing this thread: 1 Guest(s)


Theme by Madsiur2017Custom Graphics by JamesWhite