News: 11 March 2016 - Forum Rules
Current Moderators - DarkSol, KingMike, MathOnNapkins, Azkadellia, Danke

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 - Aaendi

Pages: [1] 2
1
Personal Projects / Re: slidelljohn (a.k.a.[J]) snes projects page
« on: September 30, 2019, 08:33:55 pm »
Oh boy, do I need to update emulators again?

3
Personal Projects / Re: slidelljohn (a.k.a.[J]) snes projects page
« on: August 24, 2019, 09:53:45 pm »
He's probably gotten frustrated with Konami's spaghetti code, and that Vitor Vilela took credit and got news coverage for it.  It's a shame that some of the video game community is so gullible believing that Vitor Vilela made a breakthrough in programming that hasn't been done before, (I mean wasn't there a game about a fox in a space ship from 1993 that used the same trick) and once again erasing history of everybody who pulled these types of games off without dumb overpowered cheater chips.

4
ROM Hacking Discussion / Re: SNES Slowdown: FastROM?
« on: August 24, 2019, 02:10:47 am »
https://wiki.superfamicom.org/general-advice

Oops, forgot to post the link.

5
ROM Hacking Discussion / Re: SNES Slowdown: FastROM?
« on: August 23, 2019, 11:30:14 pm »
I just feel like I need to vent about this. Why is it that NONE of the big developers understood how a chip as simple as the 65816 works?  I'm not talking about clever tricks, I'm talking about basic stuff like using "tax" instead of "sta mem : ldx mem" or using "inc mem" instead of "lda mem : clc : adc #$0001 : sta mem".  It doesn't take a genius to figure that out.  I mean, me and Tepples wrote a page about "optimization" and we had fun coming up with stupid programming examples and obvious "optimizations" to the point of parody.  It doesn't even matter that we wrote nonsensical examples if you can make a 3.58Mhz 65816 run order of magnitudes faster just by programming it like a sane person would.  :banghead:

6
Personal Projects / Re: slidelljohn (a.k.a.[J]) snes projects page
« on: August 23, 2019, 09:14:52 pm »
Quote
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.
Code: [Select]
$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:454

Does 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.

I'm not surprised if that was one of the Treasure guys.  They hated Nintendo and I wouldn't be surprised if they tried sabotaging them.

7
Personal Projects / Re: slidelljohn (a.k.a.[J]) snes projects page
« on: May 27, 2019, 10:18:00 am »
I think the whole bubble to bubble collision routine can be replaced with a more normal collision routine and people wouldn't know the difference.

8
Personal Projects / Re: slidelljohn (a.k.a.[J]) snes projects page
« on: May 24, 2019, 09:24:39 pm »
I can't believe they used a grid for bubble collision.  I just assumed they used bounding box collision, followed by circlular collision like any sane programmer would do.

9
Personal Projects / Re: slidelljohn (a.k.a.[J]) snes projects page
« on: May 11, 2019, 06:13:24 pm »
The routine at $82980e.

10
Personal Projects / Re: slidelljohn (a.k.a.[J]) snes projects page
« on: May 11, 2019, 02:22:51 pm »
The hard part about optimizing Gradius 3 is a lot of it has to do with the way tables were arranged.  It stores metasprite coordinates as signed 8-bit values that have to be sign extended to 16-bit.

There's also a routine that I have no idea what it does, but it somehow effects bubble movement, and involves changing bytes in an array.  I have no clue why a routine changing bytes in an array would effect bubble movement.

11
Personal Projects / Re: slidelljohn (a.k.a.[J]) snes projects page
« on: May 10, 2019, 12:45:57 am »
How is that possible?  Does the game not run entirely on the SA-1 side?  Or is the S-CPU and SA-1 accessing memory at the same time?

12
Personal Projects / Re: slidelljohn (a.k.a.[J]) snes projects page
« on: May 09, 2019, 05:40:27 pm »
Yeah, sure if you want to.

I'm wondering will an optimized SA-1 hack have any improvements over a non-optimized SA-1 hack?  I don't think the original game ever went slower than 30fps.

13
Personal Projects / Re: slidelljohn (a.k.a.[J]) snes projects page
« on: May 09, 2019, 01:28:19 pm »
http://www.mediafire.com/file/3d00sa1ndp2n79q/Gradius_III_optimization.ips/file

Here is what I've done so far.  I think I'll take a break with this, because it's dominating all my time.

14
Personal Projects / Re: slidelljohn (a.k.a.[J]) snes projects page
« on: May 06, 2019, 10:04:16 am »
I got it to work again.  Expanding the ROM size did help.

15
Personal Projects / Re: slidelljohn (a.k.a.[J]) snes projects page
« on: May 05, 2019, 05:57:01 pm »
I have some bad news.  I completely wrecked the source code for my optimization hack trying to fit code inside what little free ROM I have left, and I can't get it to work at all. :banghead:

I guess I'll have to start over but with a larger ROM this time.

16
Personal Projects / Re: slidelljohn (a.k.a.[J]) snes projects page
« on: April 13, 2019, 10:20:38 pm »
They also NEVER used the direct page register.

http://www.mediafire.com/file/pipd3v1t4pkillc/Gradius_III_optimization.ips/file

Here is an update.  I think I'm getting close to eliminating slowdown for good.

17
Personal Projects / Re: slidelljohn (a.k.a.[J]) snes projects page
« on: April 02, 2019, 08:26:45 pm »
I'm not home right now so I'll make an IPS file when I get home.


http://www.mediafire.com/file/g1ql7oqmo99qud3/Gradius_III_optimization.ips/file

Quote
Do you have any patches that I can use to test and compare with the fastrom mod I did and the improvements darkmoon did?


Well this patch includes your patch and darkmoon's patch, since I was modifying a rom that already had both of your patches applied.

Edit:

I think it will be easy to optimize code if I take your disassembly and modify it to be reassembleable. That way I don't have to worry about alignment.


18
Personal Projects / Re: slidelljohn (a.k.a.[J]) snes projects page
« on: April 02, 2019, 01:42:37 pm »
Here's some more optimizations:

Code: [Select]
arch snes.cpu

macro seek(n) {
origin (({n} & 0x7f0000) >> 1) | ({n} & 0x7fff)
base {n}
}

seek($809d7e)

rep #$30
lda $66
bne ++
ldx #$1200
-;
lda $00,x
beq +
stx $fc
jsl $809da0
ldx $fc
+;
txa
clc
adc #$0010
tax
cpx #$1280
bcc -
+;
rtl


seek($80ed75)
jml collision_a

seek($80ebeb)
jsl collision_b

seek($80ed7e)
jml collision_b

seek($80edd4)
jml collision_c

seek($8df100)
collision_a:
clc
lda $10
adc #$0003
sta $0c
sec
lda $000a,y
sbc $08
bpl +
eor #$ffff
inc
+;
cmp $0c
bcs ++
clc
lda $12
adc #$0003
sta $0e
sec
lda $000e,y
sbc $0a
bpl +
eor #$ffff
inc
+;
cmp $0e
+;
rtl



collision_b:
clc
lda $10
adc $0028,y
sta $0c
sec
lda $000a,y
sbc $08
bpl +
eor #$ffff
inc
+;
cmp $0c
bcs ++
clc
lda $12
adc $002a,y
sta $0e
sec
lda $000e,y
sbc $0a
bpl +
eor #$ffff
inc
+;
cmp $0e
+;
rtl

collision_c:

clc
lda $10
adc #$000b
sta $0c
clc
lda $0028,y
adc $000a,y
sec
sbc #$000b
sec
sbc $08
bpl +
eor #$ffff
inc
+;
cmp $0c
bcc +
jml $80eb57
+;
lda $12
adc #$0003
sta $0e
sec
lda $000e,y
sbc $0a
bpl +
eor #$ffff
inc
+;
cmp $0e
bcc +
jml $80eb57
+;
jml $80eb2f


sprite_processing:
lda $0000,x
-;
lsr
lsr
bcc -
sta $0000,x


inx
inx
cpx #$3e19
bcs +
txa
-;
stz $0000,x
stz $0002,x
stz $0004,x
stz $0006,x
adc #$0008
tax
cpx #$3e1a
bcc -
+;

cpx #$3e20
bcs +
-;
stz $0000,x
inx
inx
cpx #$3e20
bcc -
+;


cpy #$3d64
bcs +

-;
sep #$20
lda #$f0
sta $0001,y
sta $0005,y
sta $0009,y
sta $000d,y
sta $0011,y
sta $0015,y
sta $0019,y
sta $001d,y
rep #$21
tya
adc #$0020
tay
cpy #$3d64
bcc -

+;

cpy #$3d74
bcs +

lda #$00f0
sta $0001,y
sta $0005,y
sta $0009,y
sta $000d,y
tya
adc #$0010
tay

+;


cpy #$3d80
bcs +

sep #$20
lda #$f0
-;
sta $0001,y
iny #4
cpy #$3d80
bcc -
rep #$20

+;
lda $92
ora $66
ora $12f8
sta $18

tya
lsr
and #$003e
tax

-;
lda lut_b,x
cmp $0002,y
beq +
sta $0002,y

lda lut_c,x
sta $0000,y
+;


lda $18
bne big_jump


lda lut_a,x
and $1e
bne +
sep #$20
lda $0000,y
dec
sta $0000,y
rep #$20
+;


big_jump:

inx
inx
iny
iny
iny
iny
cpy #$3e00
bcc -
sep #$20
lda #$01
pha
plb
rep #$20
rtl

lut_a:
dw $000f,$0007,$0007,$0007,$0003,$0003,$0001,$0000,$000f,$0007,$0007,$0007,$0003,$0003,$0001,$0000
dw $000f,$0007,$0007,$0007,$0003,$0003,$0001,$0000,$000f,$0007,$0007,$0007,$0003,$0003,$0001,$0000


lut_b:
dw $08ff,$02ef,$04fe,$02ef,$08ff,$02ef,$04fe,$02ef,$08ff,$02ef,$04fe,$02ef,$08ff,$02ef,$04fe,$02ef
dw $08ff,$02ef,$04fe,$02ef,$08ff,$02ef,$04fe,$02ef,$08ff,$02ef,$04fe,$02ef,$08ff,$02ef,$04fe,$02ef


lut_c:
dw $a850,$0858,$4040,$c848,$2070,$9878,$7060,$b468,$6810,$0018,$b800,$5808,$3030,$8838,$6020,$9028
dw $28d0,$d8d8,$48c0,$a0c8,$38f0,$b0f8,$80e0,$48e8,$1890,$9498,$7880,$1088,$50b0,$c0b8,$d0a0,$6ca8




seek($8281f5)

ldy #$1280
phx
tyx
clc
lda $00,x
adc $0a
sta $10

and #$01f8
bit #$0100
beq +
eor #$2100
+;
lsr
lsr

sta $00
clc
lda $18,x
adc $0e
sec
sbc #$0010
and $90
sta $12

and #$01fc
asl
asl
asl
adc #$0800

and #$17e0

bit #$0020
beq +
eor #$0021
+;
ora $00


sta $14
eor #$8000
tax
stx $16
lda $7dffff,x
plx
and #$c000
rtl



seek($829903)
phy
lda $18,x
ldy $1c,x
sty $18,x
sta $1c,x

lda $1a,x
ldy $1e,x
sty $1a,x
sta $1e,x

ply

bra +
+;


seek($829819)
lda $18
clc
adc #$0004
sta $18

seek($8096d5)
-;
ldx $00
ldy $0000,x
inx
inx
stx $00
jsl $808ea0
lda $f6
beq +
sty $f2
+;
stz $02
ldx $00

-;
lda $0000,x
inx
and #$00ff
cmp #$00ff
beq label_0
cmp #$00fe
beq label_1
cmp #$00fd
beq label_2
ldy $f0
beq +
lda #$0000
+;
ora $04
stx $00
jsl $808ed8
ldx $00
lda $f6
beq -
stx $f4
lda $04
sta $f8
inc $f2
lda $0000,x
and #$00ff
cmp #$00ff
bne +
label_0:
stz $f0
stz $f6
+;
stx $00
jml $808ee3


label_2:
lda $0000,x
sta $05
inx
bra -

label_1:
stx $00
jsl $808ee3
bra --


seek($808f6e)
jml sprite_processing

19
ROM Hacking Discussion / Re: SNES Slowdown: FastROM?
« on: April 01, 2019, 11:50:03 am »
I meant a program that can automatically make ASM optimizations as well.

20
ROM Hacking Discussion / Re: SNES Slowdown: FastROM?
« on: March 31, 2019, 12:21:53 am »
I wish there was an automatic ROM optimizer.  The hard part is finding every possible jump location though.

Pages: [1] 2