Language…
6 users online: DanMario24YT, JPhanto,  K.T.B., Majink12, Maw, Rhubarb44230 - Guests: 245 - Bots: 320
Users: 64,795 (2,378 active)
Latest user: mathew

EXTREME FastROM v1.1.0 (dl 1st post)

While randomly talking about the FastROM patch on IRC I remembered that the current one isn't 'complete'. As in, it doesn't take care of every long jump. I decided to fix this by writing my very own FastROM patch. It does have a significant performance gain according to BMF's CPU usage meter.

download v1.1.0

I'd like you guys to try out this patch and screw around with it in every way possible, and report any bugs/crashes/glitches to me. But before applying, please read the readme. I've tried it out and so far I haven't noticed any bugs, but I might have missed something which is why I made this thread.
My blog. I could post stuff now and then

My Assembly for the SNES tutorial (it's actually finished now!)
Nice 5000th post. Anyways, this is really awesome man!

I just compared it with HiFast, and the only difference was the thing DiscoMan made, although I can tell you didn't just rip off from that. Nice work.
I own a community of TF2 servers!

ASMT - A new revolutionary ASM system, aka 65c816 ASseMbly Thing
SMWCP - SMW Central Presents a Product- tion long name

frog

http://esolangs.org/wiki/MarioLANG
Well, I haven't actually tried it yet, but...shouldn't "Main:" start with SEI? Or is that not necessary because of the other hacks?

----------------

I'm working on a hack! Check it out here. Progress: 64/95 levels.
Hm... How'd I miss that? I'll go update the patch with SEI. Although I haven't noticed any bugs it's just better to restore missing opcodes >_>

I didn't base my patch off some other patch. It's purely made by me.

edit: download version 1.0.1.
My blog. I could post stuff now and then

My Assembly for the SNES tutorial (it's actually finished now!)
Whoa, this seems to be very awesome. Although I don't usually have slowdown or such problems, this looks pretty useful. I will try it soon, for sure, and also, congratulations on the 5000th post.
Well, I've tested with CPU meter and work but it will have the graphical glitches if patched on a LM 1.7 ROM and isn't compatible with FuSoYa SMB3 pipes. Yes, I've patched in a clean rom.
FuSoYa's SMB3 pipes never were compatible with the latest LM versions.

What kind of graphical glitches do you get? Describe it. Also describe the exact steps you've done during patching.
My blog. I could post stuff now and then

My Assembly for the SNES tutorial (it's actually finished now!)
Well, for me the FuSoYa pipes works in my LM 1.71 and the Graphical glitches are present in the old version of FastROM patch. The steps are:
1- Grab a clean rom, 2- Expand it, 3- Use the LM FastROM patch and 4- Patch the patch to a clean unused address.
About the pipes: hm, then I guess I'm wrong.

About the patching process I think you did something wrong. After expanding the ROM (using Lunar Expand) you need to apply the patch first, then use Lunar Magic however you want to. That's the problem; you used the patch after you used Lunar Magic.
My blog. I could post stuff now and then

My Assembly for the SNES tutorial (it's actually finished now!)
Ahhh, so this is the problem. Ok, but I've said the FuSoYa pipe problem because the graphic goes crazy when I patch this. I think that these pipes are incompatible... Oh, my. -Fixed-
I have said it before, only need to make a few edits to make the standard fastrom patch work with LM 1.71:

comment out

Code
org $008209
JSL $8087AD

and the last line of

Code
org $00A299
JSL $80F6DB
JSL $85BC00
JSL $8586F1
JSL $85BB39


But I am not sure if any other things are patched.

I sorta wish there was a way to conditionally patch or just add $80 to the bank byte. I really rather not port everything to a new rom again.
Your layout has been removed.

Oh this is pretty awesome. Whenever I get the time, I will try this out. Hopefully this is gonna have a splendid use. B)Nothing to put here at the time being.
Thanks to Tom Servo for the awesome new layout!
Yesterday I've contacted FuSoYa asking if he's interested in implementing this patch into Lunar Magic.

As far as I know, the ROM can be edited normally after applying this patch since all this thing does is editing long jumps. Tools and patches should be able to overwrite the patched jumps and still cause no breaking.
My blog. I could post stuff now and then

My Assembly for the SNES tutorial (it's actually finished now!)
hey ersan, i've been wondering about this, why would all these ORGS and JSL's speed up the rom?
Well here's the trick:

The ROM is stored from bank $00 to $who-knows-until-where (maybe $6F?). But there's also a mirror of the ROM stored in banks $80-$FF (?).

FastROM only really works if the game runs on the mirror ROM. That's why all the JSLs points to bank $80 and above. Same case with the NMI and IRQ. At those ORGs there were originally the same JSLs but they pointed below bank $80. I simply made them point to bank $80 and above.

Of course, there's a hardware reg which should be set so the FastROM really gets enabled. I forgot what hardware reg it was but it's $42xx.
My blog. I could post stuff now and then

My Assembly for the SNES tutorial (it's actually finished now!)
Important update: Thanks to DiscoMan we found that the layer 3 smash sprite actually causes the game to crash, due to a misplaced JSL. I've fixed this. Download the newest version.

I kind of feel ashamed for sending the previous version to FuSoYa now. I'll just wait until he replies and if he's interested in it I'll let him know of the bug.

And now I think I'm going to play through entire SMW to see if there's more bugs.
My blog. I could post stuff now and then

My Assembly for the SNES tutorial (it's actually finished now!)
I assume you checked all.log for all JSLs. Did you check for all JMLs or JMP.L too?

Edit: Oh wow, there is only ONE JMP.L in the whole thing (at CODE_00BFC5)

Edit edit: I just looked in the patch a bit more carefully. It looks like you don't change the reset vector or pointer routines although I may be wrong. I am surprised you seem to change a bunch of pointer tables at the end though and bank stuff. I am impressed you thought that far ahead. I probably would have forgotten about it :3
Your layout has been removed.
I've changed everything. JSLs, JMLs, ExecutePtrLong tables. I've edited the reset routine so it activates fastrom and jumps above bank $80. I've also edited the NMI and IRQ vectors so that they point to JMLs which execute NMI and IRQ above bank $80. I guess that takes care of everything.

And yeah, I was kinda amazed that there's only 1 JML in the entire SMW.
My blog. I could post stuff now and then

My Assembly for the SNES tutorial (it's actually finished now!)
I saw the NMI and IRQ vectors, but isn't there also a "reset vector" for soft resets? Does that work the same as hard resets? I mention it because the old fastrom patch did something with it.
Your layout has been removed.
Originally posted by Ersanio
I've edited the reset routine so it activates fastrom and jumps above bank $80.

soft reset and hard reset use the same vector: emulation mode RESET vector. However, I didn't hack it. I simply edited the reset routine itself.

Still no word from FuSoYa by the way.
My blog. I could post stuff now and then

My Assembly for the SNES tutorial (it's actually finished now!)