Recent Posts

Pages: 1 2 3 4 5 6 7 8 9 10
1
So theoretically the game can have 8 enemies in battle at the same time.
This doesn't seem to be a good idea.
If there are 7-8 enemies alive at the same time, casting a multitarget spell will crash the game.
"Simple" animations like Bolt survive 7 enemies (at least in my test group) but 8 was too much.
Fire3 glitches the game at 7 enemies already. I had to restart the entire emulator, loading savestate didn't suffice for some reason.
Ice2 doesn't crash the game at 6 enemies, but the 6th enemy didn't display the "got hit" part of the animation.
Ice1 passed even 8 enemies but was very laggy.

The biggest "natural" enemy group I know of has 6 of those Puroboros bomb enemies and a quick search found no enemy formation that even used the 8th slot.

Also anything targetting the 8th enemy exclusively somehow lands instead on the parties first character. But only while all 8 are alive.
This is confusing, yo...


Background is:
I wanted to use the unused enemy slots for random encounters and make it really random.
Enemy slot 1-8 would all be filled and then RNG decides at battle start that enemy 2,4 and 7 stay home.
So far the theory. Reality... has crashed and needs a reboot.


So what I wanted to know is, has anyone ever used those "extra" monster formation slots successfully or just stuck to vanilla?
2
Final Fantasy V Research & Development / Re: Inventory Sorting
« Last post by Squall on Today at 01:36:02 AM »
Looking in the original code, I don't understand:

1. In the end of the sorting, what exactly this code does:
Code: [Select]
C2/E0A1: 98           TYA
C2/E0A2: 1A           INC
C2/E0A3: 29 FE FF     AND #$FFFE
C2/E0A6: A8           TAY
It seems it make sure, next section always starts at even address (last bit 0) ... but whats the purpose?
so that a new category starts on the left side, like a linebreak

item item
item <empty>
weapon weapon
etc.
Hehe I was thinking about that, just rarely use sorting and haven't observed that behavior. Nice one Praetarius5018  :laugh:
3
Game Modification Station / Re: C. V. Bug-Fix Comp and C. V. Script Fix
« Last post by Aerdan on Yesterday at 11:09:04 PM »
In re the original script fix: "'til" is valid English (it's a contraction of 'until'), and neither definition of 'till' replaces it. Ignore your spellcheck on this one.

</nitpick>
4
Game Modification Station / Re: FF1:DoS Projects
« Last post by Kea on Yesterday at 01:58:09 PM »
Been working on a few more things for the FF1 hack. First off, I've been going over all of the random and fixed encounters in the Citadel of Trials and rejiggering the map connections to make use of a few unused segments. The biggest thing missing for me to be able to completely redesign dungeons is the map data format itself; I haven't made any headway on that, for now.

Second, a minor enhancement for the Bestiary. It now loads and displays a monster's number of hits and Critical Rate (out of 200). It can help to make sense of the attacks of monsters like this little guy:

I had to shift all of the text and number positions around to get the extra line to fit, but I think it looks alright now.

Recently, most of my time has been spent working on spell animations. Some monsters cast NulShock or NulFrost in my hack, and it always bothered me that the animations for those spells didn't account for a monster using them - it appears as if your party is getting the benefits, which can be confusing. So, one dive into FF1's animation scripting bytecode later, that has been remedied:

Specifically, I switched the barrier animation to use that of NulBlaze - which does have a left-side animation - and horizontally flipping/repositioning all of the little thunderbolt animations There are several more spells that don't account for monster or player casting, but having done it once fixing other animations will be relatively easy. It's a good opportunity to document the scripting language too.

Related to the above, I've also fixed the Protera animation crash that arises when a monster attempts to cast Protera on more than six targets. The first part of the Protera animation generates eight animated objects per target that all remain active until the second part begins, which is more than the game can handle. My fix involved halving the number of animated objects used when a monster is casting Protera, which works nicely:


Next up...I dunno. Probably going to keep on with editing the dungeons/encounters/monsters etc. I'd like to have all of the main game see at least one pass before making an initial hack release, which could be a some time in the future yet.
5
Game Modification Station / Re: Drakkhen's Ignore Defense & Ignore Charm patches
« Last post by Dev J on Yesterday at 11:40:13 AM »
Hey CV, while on the topic of patches: did Leet make a standalone patch of the multi-steal with his fix that re-allows monsters to steal money? Reason I ask, I've been trying to put your giant bug patch over top of Dr. Meat's Relocalization Project, and I'm just now giving up on that since there's just too many conflicts to deal with. Which leaves me with only the old unfixed version of Multi-steal. If there's a standalone patch of it with Leet's fix, I could sure use that!
6
Final Fantasy V Research & Development / Re: Inventory Sorting
« Last post by Praetarius5018 on Yesterday at 10:54:40 AM »
Looking in the original code, I don't understand:

1. In the end of the sorting, what exactly this code does:
Code: [Select]
C2/E0A1: 98           TYA
C2/E0A2: 1A           INC
C2/E0A3: 29 FE FF     AND #$FFFE
C2/E0A6: A8           TAY
It seems it make sure, next section always starts at even address (last bit 0) ... but whats the purpose?
so that a new category starts on the left side, like a linebreak

item item
item <empty>
weapon weapon
etc.

2. What info we have in $288A? ($640 holds ItemID, $740 - hold quantity of the item)
honestly, no idea

3. Items with ID: 0, 1 and $80 are skipped. Is there any specific distinction in these values?
those are empty (weapon), fist and empty (armor) which you shouldn't find in your inventory
7
Game Modification Station / Re: Drakkhen's Ignore Defense & Ignore Charm patches
« Last post by Dev J on Yesterday at 10:51:30 AM »
I use his headerizer on practically a daily basis. Thanks for the files, gents!
8
Final Fantasy V Research & Development / Re: Inventory Sorting
« Last post by Squall on Yesterday at 04:33:38 AM »
Looking in the original code, I don't understand:

1. In the end of the sorting, what exactly this code does:
Code: [Select]
C2/E0A1: 98           TYA
C2/E0A2: 1A           INC
C2/E0A3: 29 FE FF     AND #$FFFE
C2/E0A6: A8           TAY
It seems it make sure, next section always starts at even address (last bit 0) ... but whats the purpose?

2. What info we have in $288A? ($640 holds ItemID, $740 - hold quantity of the item)

3. Items with ID: 0, 1 and $80 are skipped. Is there any specific distinction in these values?


9
This is a known bug in FF6 as well. Most notably, it can appear if a monster is hit with X-Zone, and brought back to life. One of the three stooges in Cyan's dream sequence can also resurrect a fallen comrade, but won't reappear as well. In both cases, a multi-targeting fight command along with a weapon like the Zantetsuken (Scimitar) will finish them off and let the battle end. I want to say there's a Zombie application as well, but I forget the circumstances behind it.
10
Final Fantasy V Research & Development / Re: Inventory Sorting
« Last post by Praetarius5018 on June 20, 2017, 03:23:29 PM »
I've expanded my ROM, so I'll not even bother to find enough free space in the ROM.
I'll have to leave that to each user for themselves. Mine'll sit at E8/3B30.
So a few JMPs will have to be adjusted.
Since this relies on the item name, it won't work as it is for untranslated versions. They use different addresses for the item name.

$C2/E08D
A5 E2 99 00 81
place a JSL to your routine here instead

Code: [Select]
E8/3B30
A5 E2 LDA $E2    [$00:01E2]
99 00 81 STA $8100,y[$7E:8100]
C0 00 00 CPY #$0000
D0 01 BNE
6B RTL
DA PHX
5A PHY
---loop start---
88 DEY
30 24 BMI go to end if Y < 0
B9 00 80 LDA $8000,y[$7E:8000]
20 90 3B JSR validate item
F0 1C BEQ if 0 exit
85 E0 STA $E0
B9 01 80 LDA $8001,y[$7E:8001]
20 90 3B JSR validate
F0 12 BEQ if 0 exit
C5 E0 CMP $E0
F0 04 BEQ
10 0C BPL go to end if right sorting
30 05 BMI go to switch
20 D0 3B JSR compare both items for attack/defense
---compare both values; value != id
F0 05 BEQ if 0 exit
20 70 3B JSR switch items
80 D9 BRA loop start
---loop end---
7A PLY
FA PLX
6B RTL


switch items
Code: [Select]
E8/3B70
B9 00 80 LDA $8000,y[$7E:8000]
48 PHA
B9 01 80 LDA $8001,y[$7E:8001]
99 00 80 STA $8000,y[$7E:8000]
68 PLA
99 01 80 STA $8001,y[$7E:8001]
B9 00 81 LDA $8100,y[$7E:8100]
48 PHA
B9 01 81 LDA $8101,y[$7E:8101]
99 00 81 STA $8100,y[$7E:8100]
68 PLA
99 01 81 STA $8101,y[$7E:8101]
60 RTS


validate item, returns primary sorting value of item
Code: [Select]
E8/3B90
F0 12 BEQ
C9 01 CMP #$01
F0 0E BEQ
C9 80 CMP #$80
F0 0A BEQ
C5 93 CMP $93
30 06 BMI
C5 95 CMP $95
10 02 BPL
80 03 BRA
A9 00 LDA #$00
60 RTS
C9 E0 CMP #$E0 if it is a consumable, return id
90 03 BCC $03
29 FF AND #$FF
60 RTS
C2 20 REP #$20
29 FF 00 AND #$00FF #$1380 + 9xID is the offset for name
48 PHA
0A ASL A
0A ASL A
0A ASL A
18 CLC
63 01 ADC $01,s
18 CLC
69 80 13 ADC #$1380
FA PLX
AA TAX
BF 00 00 D1 LDA $0000,x weapon symbol
29 FF 00 AND #$00FF
E2 20 SEP #$20
60 RTS


compare both items for attack/defense
Code: [Select]
E8/3BD0
B9 00 80 LDA $8000,y[$7E:8000]
20 F0 3B JSR get atk/def
85 E0 STA $E0
B9 01 80 LDA $8001,y[$7E:8001]
20 F0 3B JSR get atk/def
C5 E0 CMP $E0
F0 05 BEQ
90 03 BCC
A9 01 LDA #$01
60 RTS
A9 00 LDA #$00
60 RTS

get atk/def
Code: [Select]
E8/3BF0
C2 20 REP #$20
48 PHA
0A ASL A
18 CLC
63 01 ADC $01,s
0A ASL A
0A ASL A
FA PLX
AA TAX
29 FF 00 AND #$00FF
E2 20 SEP #$20
BF 07 00 D1 LDA $0007,x atk/def, highest value to the top
60 RTS
Pages: 1 2 3 4 5 6 7 8 9 10