Aslickproductions.org/forum/index.php?PHPSESSID=5f0fck550j2m4m2fpbtkj2vkm1&action=profile;area=showposts;sa=topics;u=247e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/index99d0-2.htmlslickproductions.org/forum/index.php?PHPSESSID=5f0fck550j2m4m2fpbtkj2vkm1&action=profile;u=247e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/index99d0-2.html.zxh^ ֒OKtext/htmlISO-8859-1gzip0|֒Wed, 11 Mar 2020 07:01:50 GMT0 0Ph^'֒ Show Posts - Ronnen

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - Ronnen

Pages: 1
1
Making this thread so as to not clutter up dark's thread concerning his project (though I hope he'll participate here)

Since Assassin's Brushless Sketch patch and my Fanaticism patch both modify the code block responsible for checking Magitek / Fanatics Tower command changes, they don't work together.

I'm not sure I can make a Limited version that is compatible without using free-space (which I'm loathe to do), but I have a non-limited version that does seem compatible with his brushless patch.

An IPS for this is attached (apply after his brushless patch), as well as the asm to generate.

This version "turns on" the following "normally available" commands when in the fanatics tower / in magitek armor:
Runic, Lore, Sketch, Dance, Summon

It also turns on a slew of not-normally available commands like health, etc... as this isn't really a limited version...

Dark, since I'm really making this patch with you in mind so to speak, here are some choices:

I can trivially make it not allow Runic. This has no down side.

I can also turn off Dance... if you don't care if I always replace the first item with Magitek / Magic no matter what is there (only really is a negative for Gogo as this makes him unable to Mimic) and always do nothing to the 4th slot (again only really a "negative" for Gogo as everyone else should have Item there anyway)

Or I can try and find some empty space and potentially break other patches you are using, and you'll probably have to wait longer for a resolution :)

2
Submissions / FF6Patch - Menu Blitz
« on: June 30, 2011, 08:47:59 AM »
This patch makes Blitz use a menu in a manner more or identical to Mog's Dance command, rather than using Street Fighter combo button selection. This impacts both the Blitz command in battle, and the non-battle Blitz skills menu.

The non-battle menu was simple changed to show the name of the Blitz rather than the button combination for that ability.

The battle menu was created "from scratch" though I still use the same "draw" routines the other menus use. It displays in a manner similar to Dance, and does maintain cursor memory in the same way (if turned on).

Because Blitz now uses a menu, the Blitz abilities listed have an associated targeting byte that indicate whether or not its an attack or healing ability; it shows an "attack all" cursor for the attack Blitzes, and a "self only" cursor for the two healing Blitzes.
This in no way alters the targeting of the abilities when the Blitzes when used; all single target attacks still hit a random enemy, etc. This patch could be extended to do that, but I felt that making them targetable was little overpowered given that Blitz has no cost.

The rar includes two screen shots that demonstrate how this looks.

I've done a play-through with this, and the only negative note I can make about this patch is that the text of the Vargas encounter at the beginning of the game is "misleading" if one somehow fails to Blitz him before he starts going on about "PUSH LEFT, RIGHT, LEFT"...

However, given that Blitz functions off a menu and are therefore trivial to activate, and that Vargas encounter instructions are totally unnecessary and don't even show up unless one waits a long time to Blitz... unless one is trying to "test" this patch, one will undoubtedly Blitz him before this happens and not / hardly notice it.

[attachment deleted by admin]

3
Submissions / FF6 Patch - Tower of Fanatics / Magitek
« on: June 21, 2011, 02:22:52 PM »
Nomally only MagiTek, Magic, Item, and Mimic are available during Magitek events / the Tower of Fanatics.

This patch makes all but Steal, Capture, SwdTech, Throw, Tools, and Blitz available during these events.

There is a more limited version included as well which makes only MagiTek, Magic, Item, Mimic, as well as
Lore, Sketch, and Summon available. (I.e. Just adding availability to the last 3).

[attachment deleted by admin]

4
Game Modification Station / Blitz Battle Menu Tweak
« on: June 20, 2011, 09:46:03 AM »
Hmm so I'm working on making blitz use a menu, rather than do "street fighter" button matching because as awesome as the original functionality is/was... it is some what obnoxious to use at times compared to other abilities...

All of this work is heavily based on, and not possible without the documentation provided on this site credit of Imzogelmo, assassin, Lenophis, and Novalia Spirit. Anywhere I say Assassin here, I really mean any of these four individuals but since I no way to break that down, and for brevity's sake... I'll just say Assassin. Also since I'm looking at his C2 doc on occasion as well... its safer ^_^

So I got it to the point that selecting blitz brings up a menu with 8 entries, which correctly correspond to Pummel through Bum Rush in two columns in a normal english reading order (left->right, next line below). Selecting an ability causes that ability to occur normal, etc.

However I have two problems:

The first problem that I have is that the method I've chosen for loading the available Blitz commands is modeled after Magitek, so it loads a static list of the 8 entries... meaning if you only know Pummel, it still allows you to try and use... say Fire Dance, and then when he tries to execute it, "Incorrect Blitz Command" happens as if you messed up the button entries.

I'm not too worried about this, because I've not really tried to fix this yet but seems like I can use the old Blitz code as a guide there, as this is minor compared to my second issue... though it should be noted that in general I modeled all the crap I changed the Blitz code to is based off Magitek / Dance.

The second problem that I have is that the text for the entries isn't being loaded correctly, and isn't in the right location (though the finger selector is). See the attached screen shot [edit: removed]...

Anyone have any thoughts on this?

Here is the ASM for the changes I made for this (along with my insane and possibly wrong/confusing notes... as well as some original comments from Assassain's C2 doc on Magitek):

Code: [Select]
hirom   ; don't change this
header  ; comment out if your rom has no header

;;; WTF THIS WORKS!!!
;org $C155A6
;DW #$8625
;org $C17CFD
;DW #$5983
;;;;;;;;;;;;;;;;;;;;;
; caveat is it uses magitek menu text and non-Terra only have acces to 4 abilites lol
;;;;;;;;;;;;;;;;;;;;;

;change blitz? menu pointer
org $C155A2

;DW #$5755
DW #$6F72

;change blitz? pre-function pointer
;org $C155A4

;DW #$575F
DW #$7076

;change blitz function pointer
;org $C155A6

;DW #$6FF8
DW #$6FC7
; TODO change other pointers?

; change blitz menu pointer
;C1/7CFD: 6B77    (Blitz)
org $C17CFD

DW #$6F72
; TODO change this? draw menu...

; change blitz 7BF0 function pointers ; no idea what impact this has, alters spacing on menu that I can tell...
;C1/4565: 3E50    (27) ($5757)
;C1/4568: 6250    (28) ($5761)
org $C14565

DW #$5088
DW #$50B6

;reference what magitek does in this table (and several other similar ability menus)
;C1/454D: 8850 (1B) ($59A5)
;C1/454F: B650 (1C) ($5718)

;change blitz functions
org $C16F6A

;Data: Blitz targetting ;taken from C1/9104
;DD #$6A434343
;DD #$43436A03
DD #$6A6A6A6A
DD #$6A036A03

;Data: Blitz attacks ;using magitek terra values to save space for now
;DD #$03020100
;DD #$07060504
;DD #$24180C00
;DD #$54483C30

;Maybe model off of this? no because it expects an index number, not a "where is my button matching code" number
;C1/6F88: 00      (Pummel)
;C1/6F89: 0C      (Aura Bolt)
;C1/6F8A: 18      (Suplex)
;C1/6F8B: 24      (Fire Dance)
;C1/6F8C: 30      (Mantra)
;C1/6F8D: 3C      (Air Blade)
;C1/6F8E: 48      (Spiraler)
;C1/6F8F: 54      (Bum Rush)

; @ 6F72
;Blitz command ;;;;;;;;;;;;;;;;;;;; from C1/5983
LDA #$3B ; magitek is 28...but blitz is 3D not sure what to use here but...maybe 3B? (from C1/5529, X = 28)
STA $7BC2
LDA $7BA5
BMI Branch1 ; branch if minus ?
JSR $5A17 ; common routine
STZ $7BA6
LDA #$80
STA $7BA5

Branch1:
LDA $7BA6
JSR MenuBuild
JSR $5729 ; common routine
BCC Return
LDA #$27  ; lore (19) loads #$11, rage (1C) #$13, dance (1F) #$15, row (22) #$17, def (25) #$19, magitek (28) #$1B, throw (2B) #$1D, tools (2D?) #$20...
STA $7BF0 ; ?
LDA #$11  ; lore (19) loads #$07, rage (1C) #$09, dance (1F) #$0A, row (22) #$0B, def (25) #$0C,03,08,?,05,04 , magitek (28) #$0D, throw (2B) #$0E, tools (2D?) #$0F...
JMP $5A2C ; common routine .. maybe calls into continuing menu pointer thing?.. stores into $7BC2 so...

Return:
RTS

; @ 6F9D
;Build the Blitz menu ;;;;;;;;;;;;;; taken from 4D2E
MenuBuild:
PHY
ASL A
TAY
TDC
TAX

LoadCyc:
;C1/4D33: BF4DE0C2 LDA $C2E04D,X  (format for drawing magitek menu)
LDA $C1704A,X  ; format for drawing blitz menu
STA $5755,X
INX
CPX #$000D ; did we get 13 bytes
BNE LoadCyc ; branch if not
TYA
TAX
; Note that the following two lines statically load list of available blitzes, that means it will act as if you know all blitzes at all levels...
LDA $C1910C,X   ; (Left column Blitz attacks) ; dance does this: C1/4D1A: B97E26  LDA $267E,Y    (List of known dances, even (left))
STA $575A
LDA $C1910D,X   ; (Right column Blitz attacks)
STA $5760
JSR $4E07  ; common function - used to set up menu format??
JSR $63AB  ; common function - used to get text to display based on what is in the accumlator when called? 06 for magitek, 15 for blitz?...
PLY
RTS

; @ 6FC7
; Load commands entry point ;;;;;;;;;;;;;;;;;;;;;;;
; taken from C1/8625
Enter:
STZ $88E3 ; (from C1/5529, X = 2A) ; What does 2A mean? What does it have to do with magitek?
LDA $7BCB
BEQ LoadComm
LDA #$3C ;LDA #$29
STA $7BC2  ; (queue up to execute at C1/5716)
RTS

; @ 6FD5
LoadComm:
LDY $62CA
LDA $893F,Y
STA $36
LDA $8943,Y
STA $37
STZ $38
LDA #$01
STA $39
JSR $80DB ; common function
LDA $3C
BNE LoadContrl
LDA $36
STA $893F,Y
LDA $37
STA $8943,Y

LoadContrl:
LDA $09      ;  (load controller 1)
   ;C1/8659: 1006    BPL $8661      (branch if not pressing B)
BPL LoadOptn    ;  (branch if not pressing B)
INC $96
JSR RageSet
RTS

; @ 7003
;Load command options ;;;;;;;;;;;;;;;;;;
LoadOptn:
STY $36
LDA $04     ;   (load shared controller byte)
BPL SkipMid   ;   (branch if nobody is pressing A)
;C1/8667: 209184  JSR $8491
JSR $8491    ; not common function, but probably don't want to replicate
LDA $C1910C,X    ;  (load blitz commands)
BMI SlotEmpty    ;  (branch if slot is empty, note that this will never be taken)
INC $96
STA $7A85
LDY $36
LDA $C16F6A,X   ;    (Targeting byte for Blitz commands)
STA $7A84       ;  (save as character targeting byte)
JMP $7795 ;  common function ; jump into fight routine

SlotEmpty:
INC $95

SkipMid:
LDY $36
LDA $893F,Y
TAX
LDA $C18289,X   ;  load finger positioning for magitek menu
STA $88E4
LDA $8943,Y
TAX
LDA $C1828D,X  ; load something... out of a data table? Vertical finger positioning?
STA $88E5
INC $88E3
RTS

; @ 7041 is next byte after end of this...
; magitek data format bytes ;;;;;;;;;;;;;;;;;;;;;;;;
;C2/E04D: 05 04        ORA $04
;C2/E04F: 04 21        TSB $21
;C2/E051: 06 00        ASL $00   ; the 06 here is what controls what word retrieval code we use
;C2/E053: 05 03        ORA $03
;C2/E055: 04 21        TSB $21
;C2/E057: 06 00        ASL $00   ; the 06 here is what controls what word retrieval code we use
;C2/E059: 00

DD #$21040405
DD #$03050015   ; swap word retrieval code to use 0x15 pointer... Not sure what used this originally though!! BUG RISK
DD #$00152104   ; swap word retrieval code to use 0x15 pointer... Not sure what used this originally though!! BUG RISK
DB #$00

; @ 704E
; take from C1/64EF - C1/6517

JSR $63F7 ; (from C1/6411, X = 15)  ; does some counters
LDA ($4F)
STA $2C     ; storing if the attack is available or not?
CMP #$FF
BNE GetName
LDA #$0A
JMP $66A5   ; common function?

GetName:
;STA $2C
LDA #$0A ; (10 = Blitz attack name length)
STA $2E
STA $40
JSR $18B0 ; common function
LDX $30
LoadName:
;C1/650A: BFADF9E6 LDA $E6F9AD,X (Loads Magitek attack name X)
LDA $E6F831,X ; (Loads Blitz attack name X)
JSR $63FE   ; common function?
INX
DEC $40
BNE LoadName
RTS

; @ 7076
; Not sure what this does but its between Magitek 28 and 2A command so probably related? ;;;;;;;;;;;;;;;;;;;;
; taken from C1/5716
; yes I'm aware this 1C does not reference Rage, but when I first started out I didn't realize 7BF0 was an index for a separate function pointer table
; so yes, this name is mislead and dumb for now.
RageSet:
;LDA #$1C ; Why 1C?? ;(from C1/5529, X = 29) ; X=3B uses #$27, X=3C uses #$28
;STA $7BF0
;TDC
;JMP $5A2C ; common function

LDA #$28 ; Why 1C?? ;(from C1/5529, X = 29) ; X=3B uses #$27, X=3C uses #$28
STA $7BF0
TDC ;LDA #$11 ;causes an infinite loop when using abilities...
JMP $5A2C ; common function

;@ 7080 is next byte

;@ 7095 is where blitz originally ended

; change blitz menu text pointer
; BUG RISK this overrides whatever was using 15, which I don't see anywhere but...
; C1/643E: 4767    (15) (exits)
org $C1643E

DW #$704E

; Pointer, but for what command I don't know, pretty sure this is for blitz...
; other commands point to "action" portion, i.e. magitek points to '2A' BUG RISK
;C2/E38C: 01 00
org $C2E38C

DW #$3D01 ; total risk here....but make point to 3D

5
Game Modification Station / Throw-a-rang tweak
« on: June 06, 2011, 01:03:01 PM »
Hi,

Been a long time since I've done anything in assembly, so wanted some idiot check some work of mine if anyone is willing...

I wanted to start hacking up some bits of FF6 that I found annoying, but no existing patch to rectify. Among those, I was looking to change throw so that it doesn't use up the thrown item, without impacting normal item usage. This seemed 'easy' so I wanted to start with this.

Thanks to the awesome work by assassin17 and others, I can find this block of code:
Code: [Select]
Throw

C2/188D: A9 02        LDA #$02
C2/188F: 85 BD        STA $BD     (Increment damage by 100%)
C2/1891: A9 10        LDA #$10
C2/1893: 14 B3        TRB $B3     (Clear ignore increment on ignore defense)
C2/1895: 80 07        BRA $189E


Item

C2/1897: 9C 14 34     STZ $3414    (Set ignore damage modification)
C2/189A: A9 80        LDA #$80
C2/189C: 14 B3        TRB $B3      (Set Ignore Clear)
C2/189E: BB           TYX
C2/189F: A9 01        LDA #$01
C2/18A1: 8D 12 34     STA $3412
C2/18A4: AD 7D 3A     LDA $3A7D
C2/18A7: 20 C1 19     JSR $19C1
C2/18AA: A9 10        LDA #$10
C2/18AC: 14 B1        TRB $B1      (clear "don't deplete from Item inventory" flag)
C2/18AE: D0 05        BNE $18B5    (branch if it was set)
C2/18B0: A9 FF        LDA #$FF
C2/18B2: 9D F4 32     STA $32F4,X  (null item index to add to inventory.  this means
                                    the item will stay deducted from your inventory.)
C2/18B5: BD 18 30     LDA $3018,X

It seems to me that since both 1895 (a branch) and 189E (the branch target) are preceded by the same command ( TRB $B3 ) that I can save two bytes in the "Throw" block by retargetting the branch at 1895. That leaves me two bytes at 1893 that I can use to do something else as long as I don't alter the accumulator. Since 18AC and 18AE skip the item decrement code if the $B1 flag is set appropriately, I can use those saved two bytes from the branch retarget to set the $B1 flag ( TSB $B1 ) at 1893.... leaving me with the following in xkas assembly which essentially just replaces the last two lines in the "Throw" block:

Code: [Select]
hirom 
header 

org $C21893
TSB $B1     ; set the don't deplete from inventory flag
BRA $#05  ; branch to 189C

I seem to get the desired result, both with and without the "For what Ail's ya" patch applied.

However, I'm wondering if I should move 1891 down to 1893 and vice versa such that TSB proceeds the LDA, but I'm not sure it matters as long as the accumulator has $10 loaded when the branch executes.

 :blits:

Pages: 1