@niuus
Did you get it to work yet?
@Zimgeif
Thanks! I found those difficulty settings data that I said I had.
http://www.mediafire.com/file/wv2votm41jgqo3i/Gradius_3_difficulty.txt/file@snesfanboi
No it does not include anything but the level selection. The next optimization patch
that I will have ready is going to be awhile longer before its ready. I have a lot of
new optimizations to do to add to the optimizations that have already been created. I
think with these new optimizations the game will run faster than the current sa-1 that
vitor created. The assembly looks like it was ether written to cause a lot of slowdowns
(which is the most likely thing) or the programmers were not that smart (I don't think
that's why the game slows down so much).
Here is another example of how the assembly throughout the rom was programmed that could
cause slowdown.
This asm is traced from gameplay when a enemy is killed.
$02/8502 F0 01 BEQ $01 [$8505] A:0000 X:0900 Y:DD2A D:0000 DB:01 S:1DE3 P:envmxdIZCHC:1072 VC:017 00 FL:454
$02/8505 74 02 STZ $02,x [$00:0902] A:0000 X:0900 Y:DD2A D:0000 DB:01 S:1DE3 P:envmxdIZCHC:1094 VC:017 00 FL:454
$02/8507 B5 14 LDA $14,x [$00:0914] A:0000 X:0900 Y:DD2A D:0000 DB:01 S:1DE3 P:envmxdIZCHC:1132 VC:017 00 FL:454
$02/8509 30 06 BMI $06 [$8511] A:0000 X:0900 Y:DD2A D:0000 DB:01 S:1DE3 P:envmxdIZCHC:1170 VC:017 00 FL:454
$02/850B A6 FC LDX $FC [$00:00FC] A:0000 X:0900 Y:DD2A D:0000 DB:01 S:1DE3 P:envmxdIZCHC:1186 VC:017 00 FL:454
$02/850D 5C B4 8D 00 JMP $008DB4[$00:8DB4] A:0000 X:0900 Y:DD2A D:0000 DB:01 S:1DE3 P:envmxdIzCHC:1218 VC:017 00 FL:454
$00/8DB4 74 04 STZ $04,x [$00:0904] A:0000 X:0900 Y:DD2A D:0000 DB:01 S:1DE3 P:envmxdIzCHC:1250 VC:017 00 FL:454
$00/8DB6 74 08 STZ $08,x [$00:0908] A:0000 X:0900 Y:DD2A D:0000 DB:01 S:1DE3 P:envmxdIzCHC:1288 VC:017 00 FL:454
$00/8DB8 74 0A STZ $0A,x [$00:090A] A:0000 X:0900 Y:DD2A D:0000 DB:01 S:1DE3 P:envmxdIzCHC:1326 VC:017 00 FL:454
$00/8DBA 74 0C STZ $0C,x [$00:090C] A:0000 X:0900 Y:DD2A D:0000 DB:01 S:1DE3 P:envmxdIzCHC:1364 VC:017 00 FL:454
$00/8DBC 74 0E STZ $0E,x [$00:090E] A:0000 X:0900 Y:DD2A D:0000 DB:01 S:1DE3 P:envmxdIzCHC:0034 VC:018 00 FL:454
$00/8DBE 74 00 STZ $00,x [$00:0900] A:0000 X:0900 Y:DD2A D:0000 DB:01 S:1DE3 P:envmxdIzCHC:0072 VC:018 00 FL:454
$00/8DC0 74 02 STZ $02,x [$00:0902] A:0000 X:0900 Y:DD2A D:0000 DB:01 S:1DE3 P:envmxdIzCHC:0110 VC:018 00 FL:454
$00/8DC2 74 14 STZ $14,x [$00:0914] A:0000 X:0900 Y:DD2A D:0000 DB:01 S:1DE3 P:envmxdIzCHC:0148 VC:018 00 FL:454
$00/8DC4 74 06 STZ $06,x [$00:0906] A:0000 X:0900 Y:DD2A D:0000 DB:01 S:1DE3 P:envmxdIzCHC:0186 VC:018 00 FL:454
$00/8DC6 74 10 STZ $10,x [$00:0910] A:0000 X:0900 Y:DD2A D:0000 DB:01 S:1DE3 P:envmxdIzCHC:0224 VC:018 00 FL:454
$00/8DC8 74 12 STZ $12,x [$00:0912] A:0000 X:0900 Y:DD2A D:0000 DB:01 S:1DE3 P:envmxdIzCHC:0262 VC:018 00 FL:454
$00/8DCA 74 16 STZ $16,x [$00:0916] A:0000 X:0900 Y:DD2A D:0000 DB:01 S:1DE3 P:envmxdIzCHC:0300 VC:018 00 FL:454
$00/8DCC 74 18 STZ $18,x [$00:0918] A:0000 X:0900 Y:DD2A D:0000 DB:01 S:1DE3 P:envmxdIzCHC:0338 VC:018 00 FL:454
$00/8DCE 74 1A STZ $1A,x [$00:091A] A:0000 X:0900 Y:DD2A D:0000 DB:01 S:1DE3 P:envmxdIzCHC:0376 VC:018 00 FL:454
$00/8DD0 74 1C STZ $1C,x [$00:091C] A:0000 X:0900 Y:DD2A D:0000 DB:01 S:1DE3 P:envmxdIzCHC:0414 VC:018 00 FL:454
$00/8DD2 74 1E STZ $1E,x [$00:091E] A:0000 X:0900 Y:DD2A D:0000 DB:01 S:1DE3 P:envmxdIzCHC:0452 VC:018 00 FL:454
$00/8DD4 74 20 STZ $20,x [$00:0920] A:0000 X:0900 Y:DD2A D:0000 DB:01 S:1DE3 P:envmxdIzCHC:0490 VC:018 00 FL:454
$00/8DD6 74 22 STZ $22,x [$00:0922] A:0000 X:0900 Y:DD2A D:0000 DB:01 S:1DE3 P:envmxdIzCHC:0528 VC:018 00 FL:454
$00/8DD8 74 24 STZ $24,x [$00:0924] A:0000 X:0900 Y:DD2A D:0000 DB:01 S:1DE3 P:envmxdIzCHC:0566 VC:018 00 FL:454
$00/8DDA 74 26 STZ $26,x [$00:0926] A:0000 X:0900 Y:DD2A D:0000 DB:01 S:1DE3 P:envmxdIzCHC:0604 VC:018 00 FL:454
$00/8DDC 74 28 STZ $28,x [$00:0928] A:0000 X:0900 Y:DD2A D:0000 DB:01 S:1DE3 P:envmxdIzCHC:0642 VC:018 00 FL:454
$00/8DDE 74 2A STZ $2A,x [$00:092A] A:0000 X:0900 Y:DD2A D:0000 DB:01 S:1DE3 P:envmxdIzCHC:0680 VC:018 00 FL:454
$00/8DE0 74 2C STZ $2C,x [$00:092C] A:0000 X:0900 Y:DD2A D:0000 DB:01 S:1DE3 P:envmxdIzCHC:0718 VC:018 00 FL:454
$00/8DE2 74 2E STZ $2E,x [$00:092E] A:0000 X:0900 Y:DD2A D:0000 DB:01 S:1DE3 P:envmxdIzCHC:0756 VC:018 00 FL:454
$00/8DE4 74 30 STZ $30,x [$00:0930] A:0000 X:0900 Y:DD2A D:0000 DB:01 S:1DE3 P:envmxdIzCHC:0794 VC:018 00 FL:454
$00/8DE6 74 32 STZ $32,x [$00:0932] A:0000 X:0900 Y:DD2A D:0000 DB:01 S:1DE3 P:envmxdIzCHC:0832 VC:018 00 FL:454
$00/8DE8 74 34 STZ $34,x [$00:0934] A:0000 X:0900 Y:DD2A D:0000 DB:01 S:1DE3 P:envmxdIzCHC:0870 VC:018 00 FL:454
$00/8DEA 74 36 STZ $36,x [$00:0936] A:0000 X:0900 Y:DD2A D:0000 DB:01 S:1DE3 P:envmxdIzCHC:0908 VC:018 00 FL:454
$00/8DEC 74 38 STZ $38,x [$00:0938] A:0000 X:0900 Y:DD2A D:0000 DB:01 S:1DE3 P:envmxdIzCHC:0946 VC:018 00 FL:454
$00/8DEE 74 3A STZ $3A,x [$00:093A] A:0000 X:0900 Y:DD2A D:0000 DB:01 S:1DE3 P:envmxdIzCHC:0984 VC:018 00 FL:454
$00/8DF0 74 3C STZ $3C,x [$00:093C] A:0000 X:0900 Y:DD2A D:0000 DB:01 S:1DE3 P:envmxdIzCHC:1022 VC:018 00 FL:454
$00/8DF2 74 3E STZ $3E,x [$00:093E] A:0000 X:0900 Y:DD2A D:0000 DB:01 S:1DE3 P:envmxdIzCHC:1060 VC:018 00 FL:454
$00/8DF4 6B RTL A:0000 X:0900 Y:DD2A D:0000 DB:01 S:1DE3 P:envmxdIzCHC:1098 VC:018 00 FL:454
$00/F425 B5 2E LDA $2E,x [$00:092E] A:0000 X:0900 Y:DD2A D:0000 DB:01 S:1DE6 P:envmxdIzCHC:1142 VC:018 00 FL:453
$00/F427 89 00 04 BIT #$0400 A:0000 X:0900 Y:DD2A D:0000 DB:01 S:1DE6 P:envmxdIZCHC:1180 VC:018 00 FL:453
$00/F42A F0 06 BEQ $06 [$F432] A:0000 X:0900 Y:DD2A D:0000 DB:01 S:1DE6 P:envmxdIZCHC:1204 VC:018 00 FL:453
$00/F432 89 02 00 BIT #$0002 A:0000 X:0900 Y:DD2A D:0000 DB:01 S:1DE6 P:envmxdIZCHC:1226 VC:018 00 FL:453
$00/F435 D0 18 BNE $18 [$F44F] A:0000 X:0900 Y:DD2A D:0000 DB:01 S:1DE6 P:envmxdIZCHC:1250 VC:018 00 FL:453
$00/F437 B4 0A LDY $0A,x [$00:090A] A:0000 X:0900 Y:DD2A D:0000 DB:01 S:1DE6 P:envmxdIZCHC:1266 VC:018 00 FL:453
$00/F439 C0 C0 FF CPY #$FFC0 A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE6 P:envmxdIZCHC:1304 VC:018 00 FL:453
$00/F43C 30 05 BMI $05 [$F443] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE6 P:envmxdIzcHC:1328 VC:018 00 FL:453
$00/F43E C0 40 01 CPY #$0140 A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE6 P:envmxdIzcHC:1344 VC:018 00 FL:453
$00/F441 30 0C BMI $0C [$F44F] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE6 P:eNvmxdIzcHC:0000 VC:019 00 FL:453
$00/F44F B5 2E LDA $2E,x [$00:092E] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE6 P:eNvmxdIzcHC:0022 VC:019 00 FL:453
$00/F451 89 08 00 BIT #$0008 A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE6 P:envmxdIZcHC:0060 VC:019 00 FL:453
$00/F454 D0 57 BNE $57 [$F4AD] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE6 P:envmxdIZcHC:0084 VC:019 00 FL:453
$00/F456 AD B4 12 LDA $12B4 [$01:12B4] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE6 P:envmxdIZcHC:0100 VC:019 00 FL:453
$00/F459 0D B8 12 ORA $12B8 [$01:12B8] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE6 P:envmxdIZcHC:0140 VC:019 00 FL:453
$00/F45C F0 07 BEQ $07 [$F465] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE6 P:envmxdIZcHC:0180 VC:019 00 FL:453
$00/F465 B5 0E LDA $0E,x [$00:090E] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE6 P:envmxdIZcHC:0202 VC:019 00 FL:453
$00/F467 C5 D8 CMP $D8 [$00:00D8] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE6 P:envmxdIZcHC:0240 VC:019 00 FL:453
$00/F469 10 04 BPL $04 [$F46F] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE6 P:eNvmxdIzcHC:0272 VC:019 00 FL:453
$00/F46B C5 D6 CMP $D6 [$00:00D6] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE6 P:eNvmxdIzcHC:0288 VC:019 00 FL:453
$00/F46D 10 3E BPL $3E [$F4AD] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE6 P:eNvmxdIzcHC:0320 VC:019 00 FL:453
$00/F46F B5 14 LDA $14,x [$00:0914] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE6 P:eNvmxdIzcHC:0336 VC:019 00 FL:453
$00/F471 89 FF 7F BIT #$7FFF A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE6 P:envmxdIZcHC:0374 VC:019 00 FL:453
$00/F474 F0 33 BEQ $33 [$F4A9] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE6 P:envmxdIZcHC:0398 VC:019 00 FL:453
$00/F4A9 22 B4 8D 00 JSL $008DB4[$00:8DB4] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE6 P:envmxdIZcHC:0420 VC:019 00 FL:453
$00/8DB4 74 04 STZ $04,x [$00:0904] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE3 P:envmxdIZcHC:0476 VC:019 00 FL:454
$00/8DB6 74 08 STZ $08,x [$00:0908] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE3 P:envmxdIZcHC:0514 VC:019 00 FL:454
$00/8DB8 74 0A STZ $0A,x [$00:090A] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE3 P:envmxdIZcHC:0552 VC:019 00 FL:454
$00/8DBA 74 0C STZ $0C,x [$00:090C] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE3 P:envmxdIZcHC:0590 VC:019 00 FL:454
$00/8DBC 74 0E STZ $0E,x [$00:090E] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE3 P:envmxdIZcHC:0628 VC:019 00 FL:454
$00/8DBE 74 00 STZ $00,x [$00:0900] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE3 P:envmxdIZcHC:0666 VC:019 00 FL:454
$00/8DC0 74 02 STZ $02,x [$00:0902] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE3 P:envmxdIZcHC:0704 VC:019 00 FL:454
$00/8DC2 74 14 STZ $14,x [$00:0914] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE3 P:envmxdIZcHC:0742 VC:019 00 FL:454
$00/8DC4 74 06 STZ $06,x [$00:0906] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE3 P:envmxdIZcHC:0780 VC:019 00 FL:454
$00/8DC6 74 10 STZ $10,x [$00:0910] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE3 P:envmxdIZcHC:0818 VC:019 00 FL:454
$00/8DC8 74 12 STZ $12,x [$00:0912] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE3 P:envmxdIZcHC:0856 VC:019 00 FL:454
$00/8DCA 74 16 STZ $16,x [$00:0916] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE3 P:envmxdIZcHC:0894 VC:019 00 FL:454
$00/8DCC 74 18 STZ $18,x [$00:0918] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE3 P:envmxdIZcHC:0932 VC:019 00 FL:454
$00/8DCE 74 1A STZ $1A,x [$00:091A] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE3 P:envmxdIZcHC:0970 VC:019 00 FL:454
$00/8DD0 74 1C STZ $1C,x [$00:091C] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE3 P:envmxdIZcHC:1008 VC:019 00 FL:454
$00/8DD2 74 1E STZ $1E,x [$00:091E] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE3 P:envmxdIZcHC:1046 VC:019 00 FL:454
$00/8DD4 74 20 STZ $20,x [$00:0920] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE3 P:envmxdIZcHC:1084 VC:019 00 FL:454
$00/8DD6 74 22 STZ $22,x [$00:0922] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE3 P:envmxdIZcHC:1122 VC:019 00 FL:454
$00/8DD8 74 24 STZ $24,x [$00:0924] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE3 P:envmxdIZcHC:1160 VC:019 00 FL:454
$00/8DDA 74 26 STZ $26,x [$00:0926] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE3 P:envmxdIZcHC:1198 VC:019 00 FL:454
$00/8DDC 74 28 STZ $28,x [$00:0928] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE3 P:envmxdIZcHC:1236 VC:019 00 FL:454
$00/8DDE 74 2A STZ $2A,x [$00:092A] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE3 P:envmxdIZcHC:1274 VC:019 00 FL:454
$00/8DE0 74 2C STZ $2C,x [$00:092C] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE3 P:envmxdIZcHC:1312 VC:019 00 FL:454
$00/8DE2 74 2E STZ $2E,x [$00:092E] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE3 P:envmxdIZcHC:1350 VC:019 00 FL:454
$00/8DE4 74 30 STZ $30,x [$00:0930] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE3 P:envmxdIZcHC:0020 VC:020 00 FL:454
$00/8DE6 74 32 STZ $32,x [$00:0932] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE3 P:envmxdIZcHC:0058 VC:020 00 FL:454
$00/8DE8 74 34 STZ $34,x [$00:0934] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE3 P:envmxdIZcHC:0096 VC:020 00 FL:454
$00/8DEA 74 36 STZ $36,x [$00:0936] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE3 P:envmxdIZcHC:0134 VC:020 00 FL:454
$00/8DEC 74 38 STZ $38,x [$00:0938] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE3 P:envmxdIZcHC:0172 VC:020 00 FL:454
$00/8DEE 74 3A STZ $3A,x [$00:093A] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE3 P:envmxdIZcHC:0210 VC:020 00 FL:454
$00/8DF0 74 3C STZ $3C,x [$00:093C] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE3 P:envmxdIZcHC:0248 VC:020 00 FL:454
$00/8DF2 74 3E STZ $3E,x [$00:093E] A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE3 P:envmxdIZcHC:0286 VC:020 00 FL:454
$00/8DF4 6B RTL A:0000 X:0900 Y:0000 D:0000 DB:01 S:1DE3 P:envmxdIZcHC:0324 VC:020 00 FL:454Does anyone see whats wrong with this asm? I found 4 different occasions that
this happens and there could be more. This also happens with each of your bullets
when they disappear.
The game also uses MVN's to clear large sections of ram when it could be using dma.
It going to be very interesting to see how the next optimization patch compares to
the sa-1 hack in slowdowns.
I haven't been able to do as much as I would like on my projects lately and the gradius 3
decompression is taking more time than expected to complete so its going to be a little
while longer before the decompression is complete. I do have 7f:0000-7f:f800 of ram
completely free from compression. That ram was used for compressed gfx and compressed bg
data. That ram is no longer used in the game and is completey free to use for other things.
The next ram to free up from compression is 7e:a000-7e:bfff and 7e:e000-7e:ffff. When that
compression is removed that ram will be completely free. After that I will move the ram
data at 7f:f800-7f:ffff to 7e:3000-7e:37ff so all of ram bank $7F will be completely
unused in the entire rom. This decompression hack could be used in vitors sa-1 hack
to decrease ram size needed by half but I'm not really sure if that is something that he
would add to it but he is more than welcome to add this decompression hack to it if he
would like to. It could also possibly add a slight speedup in some locations in the sa-1
hack. The decompression hack does increase rom size but I don't really think that should be
a issue.
Some of the ram that the decompression hack is freeing up I'm going to use to remove some
slowdowns in this function $80/829E 22 8E 87 80 JSL $80878E[$80:878E] and this function
$80/82A2 22 F1 8E 80 JSL $808EF1[$80:8EF1]. Those are the 2 most used functions that cause
most of the slowdowns during gameplay so the ram trick should add a nice speedup when those
2 functions are used.