80095883 visitors

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.

Messages - Lenophis

Pages: [1] 2 3 4 5 6 ... 15
ROM Hacking Discussion / Re: FF3usME class editing?
« on: Today at 12:16:51 am »
Im fairly new to hacking but I was wondering if ff3usme has a way of changing classes.
FF6 doesn't have any assigned classes, just a set of skills to kind of determine how they will develop.

I managed to get him to use swords and all of the armor but his battlepower never increases
Battle power never increases naturally, it only goes up with different equipment. If you're using a hack as a base, chances are the hack may have left all weapons with the same battle power, or at least very similar.

I think this is due to some class hard coding. He is weak as balls without a staff...
Final Fantasy 6 uses the entity level as the primary stat to determine how much damage is done physically. Magic uses level, but it isn't as much of a factor, although it is a large role. If the damage formula wasn't changed, level will still be the primary factor in damage.

Unfortunately, this involves bank C1 which is a complete nightmare to even try to understand. I don't know where to begin to try and figure this one out. :'(

ROM Hacking Discussion / Re: SNES Debugging, tracking lag?
« on: August 05, 2014, 11:24:19 am »
There's more to it than simply "removing sprites." FF6 at times has upwards of 40 and 50 sprites onscreen at once, usually with low or no lag. If there's logic behind the sprites, ie hit detection, movement, etc, and there's that many sprites onscreen, then that can create lag. An optimized routine will help to reduce the lag, if not eliminate it. A poorly coded routine, such as the green soldier in AlttP, can produce enough lag to make babies cry.

It may help to just scan the code and seeing if there's any way you can speed some of it up. To do this, you'll have to look at an instruction set to see how many cycles each instruction uses, then determine if there's a way specific code can be optimized.

7E/1500 is the NMI address the game jumps to. So far this is the only way I've been able to reliably detect if you're in battle or not. If #$C10BA7 is held there, you're in battle. :thumbsup:

The game will automatically detect how many pixels per line before it puts in line breaks. If you have manual line breaks to go along with them, then it'll look funny. :P

I'd go with Terii Senshi's Evade Bugfix
Sadly, unless you are hacking the game to accommodate, evade will still be useless. Almost every weapon has a hit rate of 180% (or higher), making the meager 10% evade you'll occasionally see rather pointless.

and the Rippler Bugfix
Unfortunately, this is just a situational thing to prevent Shadow from getting his dog killed. Although it's not like that can't happen anyway. :-\

I went and checked RHDN's database and there are 69! Which ones are the most useful and more gameplay/graphics/sound-oriented
If you're looking for bug fixes, assassin, Novalia Spirit, Master ZED, and myself have a fair amount of fixes to choose from.

Gaming Discussion / Re: Ouya emulation quality?
« on: April 20, 2014, 11:53:50 am »
These two systems aren't even emulated that well on desktops yet (and at this point in time, there's no reason to expect they ever will be, sadly), and they've had the most time put into them. I seriously doubt you'll find a halfways-decent emulator for these two consoles on any other platform.

Personal Projects / Re: Standard map Pointers
« on: April 18, 2014, 11:06:14 am »
Having OCD about something as unimportant as this seems rather silly, especially if you're doing it all manually.

If something isn't working, you probably didn't do it correctly. Double check your math, double check that you're tweaking the correct pointers, double check everything.

General Discussion / Re: Gaming while married
« on: April 09, 2014, 03:08:32 pm »
As time has passed, I find myself playing games far less often than I used to. If she wanted to spend time with me, I wouldn't have any problem turning it off. She's ok with me playing, but if she said to get rid of them, I wouldn't do it.

I am not married, but that is pretty much the situation.

Personal Projects / Re: Paper Mario 64 - General Hacking Tool
« on: April 06, 2014, 12:26:19 am »
Without being a total creeper, the only thing I can say is I love you. :o Love Paper Mario.

At one point some years ago, we used assassin's expanded icons patch, and moved the icons to bank C0 like you see with this code. However, about a year ago we moved the icons back to bank C3 since we dumped the whole bank ourselves. The icons still have the C0 labels, but the data is C3. Once C3 became organized, it made sense to keep C3 stuff in C3.

As for F6, that is the new location of the item data and names for a hack we were working on. You can change that label back to D85000 or wherever the item data originally is.

Front Page News / Re: Utilities: FF7Tools 1.0 Released
« on: April 01, 2014, 11:10:46 am »
Nah, I don't think kids nowadays have the patience to type everything out for an editor. It'll probably just be about 953 low quality FF7 hacks per month. :laugh:

One particular piece of code in bank C3 could get an incredible speed boost, if you haven't implemented it yet:
Code: [Select]
Move inventory to backup ram for now
C3/26B8: 7B      TDC (Put 0 in A)
C3/26B9: AA      TAX (Transfer A = 0 to X)
C3/26BA: BD6918  LDA $1869,X (Load inventory item at position X)
C3/26BD: 9F8DAA7E STA $7EAA8D,X (Store in RAM location)
C3/26C1: A9FF    LDA #$FF (Load an "empty" value)
C3/26C3: 9D6918  STA $1869,X (Put it in inventory location X)
C3/26C6: E8      INX (Increment X)
C3/26C7: E00001  CPX #$0100 (Is X over 256?)
C3/26CA: D0EE    BNE $26BA (If not, branch -> Load inventory item X)
C3/26CC: 7B      TDC (Otherwise, put a 0 in A)
C3/26CD: AA      TAX (Transfer A = 0 to X)
C3/26CE: BD6919  LDA $1969,X (Get quantity of item X)
C3/26D1: 9F8DAB7E STA $7EAB8D,X (Store the quantity in a RAM location)
C3/26D5: 7B      TDC (Put 0 in A)
C3/26D6: 9D6919  STA $1969,X (Put it in for quantity of item X)
C3/26D9: E8      INX (Increment X)
C3/26DA: E00001  CPX #$0100 (Is X 256 yet?)
C3/26DD: D0EF    BNE $26CE (If not, branch -> Get quantity of item X)
C3/26DF: 60      RTS (Exit)

C3/26E0: 7B      TDC
C3/26E1: A8      TAY
C3/26E2: AA      TAX
C3/26E3: BFF526C3 LDA $C326F5,X   (get current icon)
C3/26E7: DA      PHX            (save position in icon list)
C3/26E8: 85E0    STA $E0         (save current icon)
C3/26EA: 200627  JSR $2706       (output any items whose icon matches the one
                                                  in $E0 to our new item list.)
C3/26ED: FA      PLX            (restore position in icon list)
C3/26EE: E8      INX            (move to next icon)
C3/26EF: E01100  CPX #$0011      (loop for all 17 icons or item types)
C3/26F2: D0EF    BNE $26E3
C3/26F4: 60      RTS

I changed it to this:
Code: [Select]
; move entire inventory to backup ram for now
C326B8: TDC
C326B9: TAX
C326BA: LDA $1869,X  ; load this item
C326BD: STA $7EAA8D,X  ; move it
C326C1: LDA #$FF  ; no item
C326C3: STA $1869,X  ; save in this inventory slot
LDA $1969,X  ; load this quantity
STA $7EAB8D,X  ; move it
STZ $1969,X  ; zero current quantity
C326C6: INX
C326C7: CPX #$0100
C326CA: BNE C326BA

C326E0: TDC
C326E1: TAY
C326E2: TYX
C326E3: LDA C0DEA0,X  ; new location of the icons
C326E7: PHX
C326E8: STA $E0  ; save this icon for now
C326EA: ; JSR C32706
C32706: TDC
C32707: TAX
C32708: PHX
C32709: LDA $7EAA8D,X  ; get item in backup inventory
C3270D: CMP #$FF  ; no item?
C3270F: BEQ C32739  ; branch if so
C32711: STA $4202  ; save item ID
C32714: LDA #$10  ;  multiply by 16
C32716: STA $4203
C32719: NOP
C3271A: NOP
C3271B: NOP
C3271F: LDA $F63200,X
C32723: CMP $E0  ; do these icons match?
C32725: BNE C32739  ; branch if not
C32727: PLX
C32728: LDA $7EAA8D,X
C3272C: STA $1869,Y  ; save in this inventory slot
C3272F: LDA $7EAB8D,X
C32733: STA $1969,Y  ; save quantity
C32736: INY
C32737: BRA C3273A
C32739: PLX
C3273A: INX
C3273B: CPX #$0100  ; have we checked the entire inventory yet?
C3273E: BNE C32708  ; branch if not
C326EF: CPX #$0023  ; have we checked all icons yet?
C326F2: BNE C326E3  ; branch if not
C326F4: RTS

With the first routine running into the second, you just need to remove the JSR to the second, which is originally at C3/2682.

This code is executed every time you use "Arrange" in the item menu. Optimizing just the loops speed it up by about 60%. :thumbsup:

Edit: You'll need to modify the first parameter byte of the 4D command, which is: formation number - 256 (meaning your boss formation must be between #256 and #512 if my memory is good...). What I find odd is that here the formation is $8B while the actual formation is 523... It doesn't match 523 - 256...
It loads the 2-pack formation, which for FF3usME is 512-256. $8B is 2-pack 139, which is number 395 in the "Packs" tab of the formations editor.

You know, when I was posting this, I was completely neglecting which free bit corresponds with which check box in the editor. I'm glad you figured that out quickly. :-[

$11D7:1 looks at the "?" check box with "Raise steal rate" and "Raise sketch rate" et al.
$11D8:7 looks at the "?" check box with "Randomly retort" and "Randomly evade" et al.
$11D9:5 and 6 looks at the "?" check boxes with "Shell on low HP" and "Safe on low HP" et al.

I'll just hide now. :laugh:

Luck is irrelevant, you are Disch. You will succeed.

Hooray, I'm helping! </Zoidberg!>

I would highly recommend you do not make this hard-coded to a specific item. There's enough hard-coded crap already in this game, and it would pretty bad to add to it. My personal recommendation is to claim an unused bit in one of the item property bytes (check boxes with "?" in FF3usME) and use that instead. Here's some handy code for you to help:

Code: [Select]
(Weapon "addition magic")

C2/363E: A5 B5        LDA $B5
C2/3640: C9 16        CMP #$16   (is Command Jump?)
C2/3642: D0 05        BNE $3649  (if not, branch)
C2/3644: AD 70 3A     LDA $3A70  (are there more attacks to do from Offering /
                                  Quadra Slam / Dragon Horn / etc?)
C2/3647: D0 1C        BNE $3665  (if so, exit function)
C2/3649: AD 89 3A     LDA $3A89
C2/364C: 89 40        BIT #$40   (is "cast randomly with fight" bit set in the
                                  weapon spellcast byte?)
C2/364E: F0 15        BEQ $3665  (if not, Exit function)
C2/3650: EB           XBA
C2/3651: 20 xx xx     JSR $xxxx  (JSR to new routine elsewhere with free space in C2)
C2/3654: EA           NOP
C2/3655: EA           NOP
C2/3656: B0 0D        BCS $3665  (branch if spell proc is unsuccessful, either due to no buff or no good RNG roll)
C2/3658: EB           XBA
C2/3659: 29 3F        AND #$3F   (isolate spell # of weapon in bottom 6 bits)
C2/365B: 8D 00 34     STA $3400  (save it)
C2/365E: A9 10        LDA #$10
C2/3660: 14 B2        TRB $B2    (prevent followup spell from hitting random target;
                                  it can only hit the one whacked by the weapon.)
C2/3662: EE 70 3A     INC $3A70  (increment # of attacks remaining.  since the calling
                                  code will soon decrement this, the addition magic
                                  should be cast with the same # of attacks remaining
                                  as the weapon strike preceding it was)
C2/3665: 60           RTS

Some new location in bank C2!

First you should determine which free bit you wish to use. There's technically 4 free bits, but one of them, $11D7:1 is used as scratch for the Earrings. You could use this if you wanted, but you would also get a damage boost for magical attacks. Otherwise you can use $11D8:7, $11D9:5, or $11D9:6.
You could also use the party-wide bit the Sprint Shoes currently use, but then the effect would apply to everyone in the party.

Code: [Select]
If you use $11D8:7...
CLC  (this is our indicator that it is equipped, but if it's not equipped then carry will be changed with the RNG call)
LDA $11D8
BMI equipped (the highest bit holds our effect, and this branch will take if it's equipped)
JSR $4B5A  (our RNG, rolls 0-255)
CMP #$40

If you use $11D9:5 or 6
LDA $11D9
BIT #$20 or BIT #$40 (depending on above)
BNE equipped
JSR $4B5A  (our RNG, rolls 0-255)
CMP #$40

I didn't test it, but this should work unless I got my branch logic mixed up.

Gaming Discussion / Re: Good games with reluctant heroes
« on: March 12, 2014, 10:02:57 am »
Jack from Radiata Stories.

X and Zero from the Megaman X series (X even moreso in X7 because they made him a total pacifist). Neither fights because they want to, and Zero wonders what he is fighting for in X4.

Garnet/Dagger/Sarah in FF9.

ROM Hacking Discussion / Re: Help with Lunar IPS
« on: February 28, 2014, 10:34:12 pm »
This sounds like a header issue. Either the patch requires a header, and your rom doesn't have one, or the patch requires no header, and your rom does have one. You'll need to determine which is true, then try again with.a clean rom.

ROM Hacking Discussion / Re: Expanding Fixed Length Text?
« on: February 27, 2014, 02:41:18 am »
Oh, if I had a nickel for every time I've had to grab these routines...
Code: [Select]
Display spell name

C1/6019: EB      XBA (from only C1/5FBF)
C1/601A: A907    LDA #$07 (7 = spell name length)
C1/601C: 8510    STA $10
C1/601E: 8D6D61  STA $616D
C1/6021: 20CA18  JSR $18CA (half multiplier)
C1/6024: C220    REP #$20
C1/6026: AF164200 LDA $004216
C1/602A: AA      TAX
C1/602B: 7B      TDC
C1/602C: E220    SEP #$20
C1/602E: CE6D61  DEC $616D
C1/6031: BF68F5E6 LDA $E6F568,X (Load Spell name X)
C1/6035: C9FF    CMP #$FF
C1/6037: F009    BEQ $6042
C1/6039: 201161  JSR $6111
C1/603C: E8      INX
C1/603D: CE6D61  DEC $616D
C1/6040: D0EF    BNE $6031
C1/6042: 60      RTS
C1/6043: 20EC66  JSR $66EC (from C1/5E51, X = E)
C1/6046: A748    LDA [$48]
C1/6048: C9FF    CMP #$FF
C1/604A: D005    BNE $6051
C1/604C: A90D    LDA #$0D
C1/604E: 4CA85F  JMP $5FA8
Code: [Select]
C1/65E8: A907    LDA #$07 (from C1/65AA)(7 = spell name length)
C1/65EA: 852E    STA $2E
C1/65EC: 8540    STA $40
C1/65EE: 20B018  JSR $18B0
C1/65F1: A630    LDX $30
C1/65F3: BF67F5E6 LDA $E6F567,X (Load Spell name X)
C1/65F7: 20FE63  JSR $63FE
C1/65FA: E8      INX
C1/65FB: C640    DEC $40
C1/65FD: D0F4    BNE $65F3
C1/65FF: 60      RTS
Code: [Select]
C1/6B1C: EB      XBA (from C1/6AD2)
C1/6B1D: A907    LDA #$07
C1/6B1F: 8510    STA $10
C1/6B21: 20CA18  JSR $18CA (half multiplier)
C1/6B24: C220    REP #$20
C1/6B26: AF164200 LDA $004216 (load product)
C1/6B2A: AA      TAX
C1/6B2B: 7B      TDC
C1/6B2C: E220    SEP #$20
C1/6B2E: BF67F5E6 LDA $E6F567,X (Load spell name X)
C1/6B32: 20F366  JSR $66F3
C1/6B35: E8      INX
C1/6B36: C610    DEC $10
C1/6B38: D0F4    BNE $6B2E
C1/6B3A: 60      RTS

That's just for battle. This next one is for the menu.
Code: [Select]
C3/4FB5: A00700  LDY #$0007    (spell letter length)
C3/4FB8: 84EB    STY $EB
C3/4FBA: A067F5  LDY #$F567    (spell name address)
C3/4FBD: 84EF    STY $EF
C3/4FBF: A9E6    LDA #$E6      (spell name bank)
C3/4FC1: 85F1    STA $F1
C3/4FC3: 60      RTS
Draw a column of spells
C3/4FC4: A5E6    LDA $E6
C3/4FC6: 1A      INC A
C3/4FC7: 209F80  JSR $809F
C3/4FCA: C220    REP #$20      (16 bit memory/accum.)
C3/4FCC: 8A      TXA
C3/4FCD: 8F899E7E STA $7E9E89
C3/4FD1: E220    SEP #$20      (8 bit memory/accum.)
C3/4FD3: A59E    LDA $9E
C3/4FD5: F067    BEQ $503E
C3/4FD7: 20EC50  JSR $50EC      (get the current spell to check)
C3/4FDA: 204D51  JSR $514D      (determine if spells are useable?)
C3/4FDD: 20EC50  JSR $50EC      (get the current spell to check)
C3/4FE0: C9FF    CMP #$FF
C3/4FE2: F036    BEQ $501A      (branch if no spell to draw)
C3/4FE4: 20A250  JSR $50A2      (get spells learned amount)
C3/4FE7: C9FF    CMP #$FF
C3/4FE9: D02F    BNE $501A      (branch if spell is already learned?)
C3/4FEB: 20EC50  JSR $50EC      (get the current spell to check)
C3/4FEE: 206784  JSR $8467      (draw the current spell name)
C3/4FF1: A2929E  LDX #$9E92     (position of MP cost)
C3/4FF4: 8E8121  STX $2181
C3/4FF7: A9FF    LDA #$FF
C3/4FF9: 8D8021  STA $2180      (insert a space)
C3/4FFC: 20EC50  JSR $50EC      (get the current spell to check)
C3/4FFF: 200D51  JSR $510D      (get spell's MP cost)
C3/5002: 20E004  JSR $04E0      (turn MP cost into digits)
C3/5005: A5F8    LDA $F8
C3/5007: 8D8021  STA $2180      (draw tens digit of MP cost)
C3/500A: A5F9    LDA $F9
C3/500C: 8D8021  STA $2180      (draw ones digit of MP cost)
C3/500F: A9FF    LDA #$FF
C3/5011: 8D8021  STA $2180      (insert a space)
C3/5014: 9C8021  STZ $2180      (end this string)
C3/5017: 4CD97F  JMP $7FD9      (draw MP cost)

Blank out the current spell (MP cost and spell learn rate too)
C3/501A: 7B      TDC
C3/501B: A5E5    LDA $E5
C3/501D: AA      TAX
C3/501E: A9FF    LDA #$FF
C3/5020: 9F899D7E STA $7E9D89,X
C3/5024: 20B951  JSR $51B9      (set's the text color to gray among other things)
C3/5027: A00B00  LDY #$000B
C3/502A: A28B9E  LDX #$9E8B     (position of where it is to be blanked)
C3/502D: 8E8121  STX $2181
C3/5030: A9FF    LDA #$FF
C3/5032: 8D8021  STA $2180      (insert a space)
C3/5035: 88      DEY
C3/5036: D0FA    BNE $5032      (do 11 times?)
C3/5038: 9C8021  STZ $2180      (end this string)
C3/503B: 4CD97F  JMP $7FD9      (display the blanked name)

Script Help and Language Discussion / Re: Help Replacing Dejare Phrases
« on: February 19, 2014, 06:38:30 pm »
Walleye have no idea.

Pages: [1] 2 3 4 5 6 ... 15