øA slickproductions.org /forum/index.php?PHPSESSID=5f0fck550j2m4m2fpbtkj2vkm1&action=printpage;topic=2374.0 e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/index9c37-2.html layed slickproductions.org /forum/index.php?PHPSESSID=5f0fck550j2m4m2fpbtkj2vkm1&topic=2374.0 e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/index9c37-2.html.z x µ:h^ ÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ Ð€e ]‰ OK text/html ISO-8859-1 gzip 8:Ö ]‰ ÿÿÿÿÿÿÿÿ ÑH Wed, 11 Mar 2020 01:27:41 GMT 0ó° °® 0® P® €§² ð® ´:h^ < ]‰
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.Correct. No 8 slot battle. There are couple of 6 slot - 209, 270, 467. There are couple of 7th slot battles, but we will never see all 7 on screen at the same time - 101, 447, 495, 501; GBA only - 629, 597
$C1/1186 AD 3A CD LDA $CD3A [$7E:CD3A] A:0004 X:0000 Y:0040 P:envMxdIzc
$C1/1189 0A ASL A A:00F0 X:0000 Y:0040 P:eNvMxdIzc
$C1/118A AA TAX A:00E0 X:0000 Y:0040 P:eNvMxdIzC
$C1/118B BF 9B 11 C1 LDA $C1119B,x[$C1:127B] A:00E0 X:00E0 Y:0040 P:envMxdIzC
$C1/118F 85 88 STA $88 [$00:0088] A:009D X:00E0 Y:0040 P:eNvMxdIzC
$C1/1191 BF 9C 11 C1 LDA $C1119C,x[$C1:127C] A:009D X:00E0 Y:0040 P:eNvMxdIzC
$C1/1195 85 89 STA $89 [$00:0089] A:00BC X:00E0 Y:0040 P:eNvMxdIzC
$C1/1197 6C 88 00 JMP ($0088)[$C1:BC9D] A:00BC X:00E0 Y:0040 P:eNvMxdIzC
$C1/BC9D 86 F5 STX $F5 [$00:00F5] A:00BC X:00E0 Y:0040 P:eNvMxdIzC
$C1/BC9F 1A INC A A:00BC X:00E0 Y:0040 P:eNvMxdIzC
$C1/BCA0 0A ASL A A:00BD X:00E0 Y:0040 P:eNvMxdIzC
$C1/BCA1 AA TAX A:007A X:00E0 Y:0040 P:envMxdIzC
$C1/BCA2 7B TDC A:007A X:007A Y:0040 P:envMxdIzC
$C1/BCA3 A8 TAY A:0000 X:007A Y:0040 P:envMxdIZC
$C1/BCA4 BF 42 7D D9 LDA $D97D42,x[$D9:7DBC] A:0000 X:007A Y:0000 P:envMxdIZC
$C1/BCA8 99 1A D4 STA $D41A,y[$7E:D41A] A:0094 X:007A Y:0000 P:eNvMxdIzC
$C1/BCAB 98 TYA A:0094 X:007A Y:0000 P:eNvMxdIzC
$C1/BCAC 18 CLC A:0000 X:007A Y:0000 P:envMxdIZC
$C1/BCAD 69 10 ADC #$10 A:0000 X:007A Y:0000 P:envMxdIZc
$C1/BCAF 00 A8 BRK #$A8 A:0010 X:007A Y:0000 P:envMxdIzc$C1/118B BF 9B 11 C1 LDA $C1119B,x[$C1:119B] A:0000 X:0000 Y:0880 P:envMxdIZc
$C1/118F 85 88 STA $88 [$00:0088] A:009A X:0000 Y:0880 P:eNvMxdIzc
$C1/1191 BF 9C 11 C1 LDA $C1119C,x[$C1:119C] A:009A X:0000 Y:0880 P:eNvMxdIzc
$C1/1195 85 89 STA $89 [$00:0089] A:0011 X:0000 Y:0880 P:envMxdIzc
$C1/1197 6C 88 00 JMP ($0088)[$C1:119A] A:0011 X:0000 Y:0880 P:envMxdIzc
$C1/119A 60 RTS A:0011 X:0000 Y:0880 P:envMxdIzc$C1/6505 7A PLY A:0050 X:0100 Y:0010 P:envMxdIZC
$C1/6506 98 TYA A:0050 X:0100 Y:0000 P:envMxdIZC
$C1/6507 38 SEC A:0000 X:0100 Y:0000 P:envMxdIZC
$C1/6508 E9 10 SBC #$10 A:0000 X:0100 Y:0000 P:envMxdIZC
$C1/650A A8 TAY A:00F0 X:0100 Y:0000 P:eNvMxdIzc
$C1/650B C9 F0 CMP #$F0 A:00F0 X:0100 Y:00F0 P:envMxdIzc
$C1/650D D0 ED BNE $ED [$64FC] A:00F0 X:0100 Y:00F0 P:envMxdIZC
$C1/650F A5 92 LDA $92 [$00:0092] A:00F0 X:0100 Y:00F0 P:envMxdIZC
$C1/6511 8D 3A DB STA $DB3A [$7E:DB3A] A:0040 X:0100 Y:00F0 P:envMxdIzC
$C1/6514 C2 20 REP #$20 A:0040 X:0100 Y:00F0 P:envMxdIzC
$C1/6516 0A ASL A A:0040 X:0100 Y:00F0 P:envmxdIzC
$C1/6517 0A ASL A A:0080 X:0100 Y:00F0 P:envmxdIzc
$C1/6518 AA TAX A:0100 X:0100 Y:00F0 P:envmxdIzc
$C1/6519 7B TDC A:0100 X:0100 Y:00F0 P:envmxdIzc
$C1/651A E2 20 SEP #$20 A:0000 X:0100 Y:00F0 P:envmxdIZc
$C1/651C A9 F0 LDA #$F0 A:0000 X:0100 Y:00F0 P:envMxdIZc
$C1/651E 9D 0A 7D STA $7D0A,x[$7E:7E0A] A:00F0 X:0100 Y:00F0 P:eNvMxdIzc
$C1/6521 E8 INX A:00F0 X:0100 Y:00F0 P:eNvMxdIzc
$C1/6522 E8 INX A:00F0 X:0101 Y:00F0 P:envMxdIzc
$C1/6523 E8 INX A:00F0 X:0102 Y:00F0 P:envMxdIzc
$C1/6524 E8 INX A:00F0 X:0103 Y:00F0 P:envMxdIzc
$C1/6525 E0 00 01 CPX #$0100 A:00F0 X:0104 Y:00F0 P:envMxdIzc
$C1/6528 D0 F4 BNE $F4 [$651E] A:00F0 X:0104 Y:00F0 P:envMxdIzC
$C1/651E 9D 0A 7D STA $7D0A,x[$7E:7E0E] A:00F0 X:0104 Y:00F0 P:envMxdIzC
$C1/6521 E8 INX A:00F0 X:0104 Y:00F0 P:envMxdIzC
$C1/6522 E8 INX A:00F0 X:0105 Y:00F0 P:envMxdIzC
$C1/6523 E8 INX A:00F0 X:0106 Y:00F0 P:envMxdIzC
$C1/6524 E8 INX A:00F0 X:0107 Y:00F0 P:envMxdIzC
$C1/6525 E0 00 01 CPX #$0100 A:00F0 X:0108 Y:00F0 P:envMxdIzC
$C1/6528 D0 F4 BNE $F4 [$651E] A:00F0 X:0108 Y:00F0 P:envMxdIzC$C1/651E 9D 0A 7D STA $7D0A,x[$7E:CD3A] A:00F0 X:5030 Y:00F0 P:envMxdIzC
$C1/6521 E8 INX A:00F0 X:5030 Y:00F0 P:envMxdIzC
$C1/6522 E8 INX A:00F0 X:5031 Y:00F0 P:envMxdIzC
$C1/6523 E8 INX A:00F0 X:5032 Y:00F0 P:envMxdIzC
$C1/6524 E8 INX A:00F0 X:5033 Y:00F0 P:envMxdIzC
$C1/6525 E0 00 01 CPX #$0100 A:00F0 X:5034 Y:00F0 P:envMxdIzC
$C1/6528 D0 F4 BNE $F4 [$651E] A:00F0 X:5034 Y:00F0 P:envMxdIzC$C1/6BDE E6 92 INC $92 [$00:0092] A:0050 X:00FC Y:000E P:envMxdIzC
$C1/6BE0 E8 INX A:0050 X:00FC Y:000E P:envMxdIzC
$C1/6BE1 E8 INX A:0050 X:00FD Y:000E P:envMxdIzCA5 92 LDA $92
1A INC
C9 3E CMP #$3E
90 02 BCC $02
A9 3E LDA #$3E
85 92 STA $92
C2 20 REP #$20
0A ASL A
0A ASL A
AA TAX
7B TDC
E2 20 SEP #$20
CA DEX
CA DEX
6B RTL$C1/6528 D0 F4 BNE $F4 [$651E]with BCC $F4I simply replacedCode: [Select]$C1/6BDE E6 92 INC $92 [$00:0092] A:0050 X:00FC Y:000E P:envMxdIzC
$C1/6BE0 E8 INX A:0050 X:00FC Y:000E P:envMxdIzC
$C1/6BE1 E8 INX A:0050 X:00FD Y:000E P:envMxdIzC
with (via JSL of course)Code: [Select]A5 92 LDA $92
1A INC
C9 3E CMP #$3E
90 02 BCC $02
A9 3E LDA #$3E
85 92 STA $92
C2 20 REP #$20
0A ASL A
0A ASL A
AA TAX
7B TDC
E2 20 SEP #$20
CA DEX
CA DEX
6B RTL
A5 92 LDA $92
1A INC
C9 50 CMP #$50
B0 06 BCS $06
C9 3C CMP #$3C
90 02 BCC $02
A9 3B LDA #$3B //3C already leads to some graphic glitches for Flare
85 92 STA $92
C2 20 REP #$20
0A ASL A
0A ASL A
AA TAX
7B TDC
E2 20 SEP #$20
CA DEX
CA DEX
6B RTL$C1/6BDE 22 34 12 D8 JSL $D8/1234
$D8/1234 <do some stuff here>
...
$D8/12FF 6B RTL //returns to where you stopped
$C1/6BE2 <continue here like normal>P.S. I wonder what cause the crashes ... is it software bug, is it some 'hidden' limitation of the GPU. Will the game crash if we use contemporary powerful PC? What about a different emulator?Without even looking at it, I'm fairly confident that the OAM data overflowed into whatever else (maybe the stack), which caused the crash. This is probably why FF6's engine only used 6 slots for monsters, and probably why it had two separate routines for displaying damage with different numbers of targets hit at once. Although, I haven't really looked at FF5 enough to know if it has something similar or not.
Basically, it pauses code execution where you currently are, jumps to a different spot, executes there until it hits a "return" (RTL in this case) and then unpauses.
It happens roughly like so.Code: [Select]$C1/6BDE 22 34 12 D8 JSL $D8/1234
$D8/1234 <do some stuff here>
...
$D8/12FF 6B RTL //returns to where you stopped
$C1/6BE2 <continue here like normal>
There is also a "small" counterpart JSR that functions the same but can't leave the current bank.
The target area of JSL doesn't have to be in the ROM, you can also move to the RAM and execute that (for your own sanity, don't), which is basically like a regular language's eval.
Now here's the thing that separates JSL from a regular function call: you do not have to move to the start of a function, you can go wherever you want.
Start of a "function", middle of it or heck execute a data table if you want, asm doesn't stop you, only the crashes will.
Ice2 doesn't crash the game at 6 enemies, but the 6th enemy didn't display the "got hit" part of the animation.
This looks cool, but given that there are no formations in the game with more than six monsters, are there any actual benefits to applying this to a vanilla ROM? As an example, you mentioned an issue with Ice2 on six enemies...No, my fix doesn't address Ice2 (Ice2 doesn't exist in my hack so I didn't have to bother with it)
I didn't try every animation so there might be more.Ice2 doesn't crash the game at 6 enemies, but the 6th enemy didn't display the "got hit" part of the animation.
Is this for real? And are there any other examples?
Also, are any of these issues possibly contingent on your choice of emulator?