nodge
New Member
Posts: 8
|
Post by nodge on Mar 9, 2008 21:35:41 GMT 1
Hello, I am new to this message board.
I am wondering if someone could point me in the right direction as of how to convert USA speedhacks to European and vice versa.
Are there any programs needed?
If not, is it just a simple case of calculating the offset of the header address and the actual speedhack?
Otherwise, please inform me of a decent program and relevant tutorials to do this.
I did search for ages earlier and only found stuff on GB SP or GBA and was not sure if those methods would work with SNES9xTYL ME 0.4.2.
Anyways, if I can manage to successfully do this, I will then move onto creating speedhacks.
Byez.
|
|
|
Post by manias on Mar 10, 2008 9:41:23 GMT 1
well .. the easiest way would ofcourse be to just take the US version of the game..! would save you a lot of work
|
|
nodge
New Member
Posts: 8
|
Post by nodge on Mar 10, 2008 13:27:17 GMT 1
Thank you for the response Manias.
I have various reasons why I have appointed myself to this task.
1) I was unable to find a speedhack for Secret of Evermore(e), only (u) and that gives me a framerate of something like 57fps.
The only thing I can do currently is limit the fps to 50, but the sound is slower than what it should be. I tried setting apu to 75% and that didn't help whatsoever.
So, if I could learn to convert that (u) speedhack to (e), then I will be able to play at full framerate as well as the sound being correct.
2) I see this as a positive mini project to gain knowledge of how asm works. I have only messed around with PC software with several jump, compare move and nop ops. This is what has inspired me to gain a fluent knowledge as of how it all works.
Well anyway, I take prescribed medication and there is an annoying side effect called drowziness and I have to wait about a month before it disappears, so I will be messing around with all of this stuff when my head is clear.
I did want to save some time by posting in the first place as in clarification of the addresses. I am hoping that the header and the actual speedhack addresses can be worked with without having to read up on SNES ROM hacking and gaining more of an understanding but if that is what I must do, then I guess I have no choice.
The question still stands though:
Can I use the header address and the speedhack addresses to convert from (u) to (e) without using any programs except for a scientific calculator?
|
|
|
Post by Tinnus on Mar 10, 2008 15:05:06 GMT 1
I understand the learning side, but can you really feel a difference between 57 and 60 FPS?
|
|
nodge
New Member
Posts: 8
|
Post by nodge on Mar 10, 2008 15:23:33 GMT 1
People call me a perfectionist. I sure can feel and tell the difference. The scrolling jerks and would like to perfect it. Some people cannot tell the difference whilst others can. For example, a game called Mercury for the PSP. My guess is that it runs at 30fps and I was disgusted at how Sony had underclocked the CPU and their reasons being that they wanted to save battery power. A gamer such as myself likes to see games like that run at full speed (no choppyness whatsoever). I recently felt the benefits of playing Lumines 2 on my memory stick rather the UMD version in two ways:
1) No five second switch from one skin to next (as in instant loading). 2) The game never slows down and is more of a challenge because of this and the feel of the game is just perfect.
Anyway, back on track to the original topic; it's an ideal that I would like to make come true. I have no means of donating to the authors of the SNES emulator for PSP at the moment so I can be keeping myself busy (distraction from mental health problems) and contributing to the PSP scene. I see it all as positive anyways.
|
|
|
Post by manias on Mar 11, 2008 9:38:51 GMT 1
playing lumines on yer memstick instead of umd has nothing to do with 333mhz.. and you can clock yer psp at 333 just fine for psp games also, but I have never seen any slowdown with mercury ;p to be "disgusted" is a bit of an overreaction. sony now uses 333mhz all the time for e.g. ps1 emulation and newer psp games like god of war
|
|
nodge
New Member
Posts: 8
|
Post by nodge on Mar 11, 2008 12:29:49 GMT 1
I already know that running games off the memstick has nothing to do with the CPU speed. I was demonstrating an example of a better feel of a game. I see that you also have not noticed the framerate of 30fps in Mercury also. If it ran at 60fps, the feel of the game would be better.
As for Lumines 2, there is a difference with setting the CPU to 333MHz in the sense that it never slows down. It was just an example to get my point across that out of all gamers, some are alright with SNES emulation running at 57fps for games that use scrolling (they accept the jerkyness because it is better than nothing), and then there are people like me that want to perfect it.
It does not matter anyway, I will try and do it myself without any help.
Edit 1:
I guess I can adapt using the tutorials on this site.
Edit 2:
I write this incase you still do not understand my point of view.
If you would kindly read the posts above rather than pick potential faults with what I have written, you will see why I have written the posts that are based on the other posts.
I was disgusted at Sony for underclocking the CPU in the first place and their reason was because they wanted to save battery power. So if they would have had the CPU run at 333MHz in the first place, the older games would have ran at full speed. That is what I was disgusted at.
Based on Tinnus's post, I tried to give an example of a better feel of a game. I used Mercury as an example because that old game by default ran at 30fps instead of 60fps. I believe that such fps differences can easily be compared. Think about F-Zero for the SNES at the moment. It runs well at 30fps but wouldn't the game have a better feel if it ran at what it was supposed to be run at? So if people would actually help me improve rather than knocking me, then maybe as a community we can make improvements?
I hope that clarifies my posts.
|
|
|
Post by Tinnus on Mar 11, 2008 18:27:32 GMT 1
Hey, no bad feelings or banning or anything, don't worry I just wonder if 60FPS in the PSP is really better than 30 from a display point of view because of the bleedng that occurs in the screen with darker colors, especially in 3D games. Actually sometimes I force emulators to frameskip 1 so it shows 30FPS instead of 60.
|
|
nodge
New Member
Posts: 8
|
Post by nodge on Mar 11, 2008 18:45:31 GMT 1
Thanks for assurance of no bad feelings.
I haven't played many PSP games. My basis has been on a monitor mainly (PC), but I did notice that the frame limit on Mercury was there. It wasn't particularly bad or anything but was still there. I was trying to explain to my friend that it could be smoother. He couldn't see it but I did.
I can say that on Secret of Evermore(u), I do notice choppyness when I am walking and there is scrolling involved and setting to 30fps is still noticable to me but only barely. Now I see your point and manias's heh.
On the other side of the scale, my gf cannot tell the difference between quality of vhs videos and dvds.
Ah I went off track again.
Well anyways, once this drowziness wears off, I will do tests. It will be the first time I have done anything like this in six years but I am sure I will get there eventually. I will post all my findings if I can do it... don't see why not because all the theory is still in my head. Just gotta get used to different software.
Byez.
Edit 1:
First thing is to ask my landlord for a chair lol.
Edit 2:
Chair obtained.
|
|
|
Post by dantheman on Mar 14, 2008 2:31:09 GMT 1
Before you read, the patch you want is E168D085|Secret of Evermore (E)|14000005|0|0|0|0|0|8592=42 Read below for an explanation as well as a few methods you can try for other games you come across.
First line of defense: simply change the CRC32 and change the label as appropriate. This works for some games like Super Metroid and The Lion King. Other games like Illusion of Gaia aren't as lucky. (see below on how to find the CRC32, which is very easy and non-technical)
Failing that, you've got a few options. If the game runs in either SNES Advance or Snezziboy, the SNES emulators for the GBA, use the tutorial you found on snesadvance.org on how to create speedhacks with those. SNES9X for the PSP is merely using the SNES Advance database, so I don't think there are any PSP-specific methods for finding speedhacks aside from the SNES9X debugger on Windows for games that don't run in either SNES Advance or Snezziboy. I personally prefer the Snezziboy debugger to the SNES Advance debug version, but it's your choice.
Alternatively, if you merely wish to convert your current speedhacks to the new region version, and you have faith that the US speedhacks are valid and work correctly, you could do the following. It may not work for all games, but it's worth a shot. First open the US rom in a hex editor. If there is a 512-byte header (0x200 in hex) at the very beginning filled with almost empty data, remove it. It's not needed and will only confuse you. Look at the speedhack and seek to the address before the equal sign. Copy down the sequence of hex characters at that location, then open the European rom in another hex editor window (chop off the header if needed), search for that exact hex sequence, and use the new location in the patch. Leave the part after the equal sign the same.
Here's an example for your specific case. The first speedhack for Secret of Evermore is...
Well that explains the issue. SoE has no speedhacks at all for either the US or European release, at least not in the snesadvance.dat file you most likely have. The US version has an entry, but there are no speedhacks for it. The place where they would be is empty.
On second thought, I know of a list with a couple alternate hacks made specifically for Snezziboy, a list few people know about, and it just happens that there's an entry for the game. This is it:
A5C0045E|Secret of Evermore (U)|14000005|0|0|0|0|0|8592=42 The actual speedhack in there is "8592=42" where 8592 is the location of the loop we're hacking and 42 is the speedhack.
First you want to create the new entry's header. First is the CRC, which is usually given to you by your SNES emulator. ZSNES displays it for a few seconds when you launch the game, while SNES9X shows it in the rom info menu. Then you put a vertical pipe, and the game's name. Thus you have the following: E168D085|Secret of Evermore (E)
The next six fields are ignored entirely by SNES9X TYL. They are there for SNES Advance, and are useless to you. However, I do not know if SNES9X TYL can properly parse the patch if they are flat-out missing, so we'll just copy the previous one. If there is no prior patch to work off of, just use six zeros. Again, for SNES9X TYL it won't make any difference. E168D085|Secret of Evermore (E)|14000005|0|0|0|0|0|
Now we search in the US rom for offset 8592 (hex). This turns out to be the following string of bytes: F0 FB 4C 85 8F 1C 04 01 6B AD 39 01 You can go on longer if you want, but that many bytes is usually sufficient to guarantee that you're finding the only place in the rom where it occurs.
Searching for that string in the European rom yields... no results. Dangit. Well, searching for just F0 FB 4C yields a result at offset 8592 and no other instances in the entire game, so it's safe to assume that it's what we're looking for. As it turns out, the speedhack is in the same place for this game, so we did all this work for nothing. Of course, this may not always be the case, so it's good to go through the process anyway just for practice.
So the final output patch is
E168D085|Secret of Evermore (E)|14000005|0|0|0|0|0|8592=42
Exact same as the US version with the CRC32 and name changed.
On a side note, something you don't really need to know, we could alternatively say that the speedhack is 8592=42FB but it would be the exact same thing. It would overwrite F0 FB with 42 FB, so it's enough to simply replace F0 with 42. If the original instruction was D0 FB instead, we could not shorten it like this, and we'd have to say the speedhack was 8592=42DB. See the SNES Advance speedhacking tutorial for an explanation on how you determine the part after the equal sign from the two bytes you're given (it's basically 42 + first letter + last letter).
EDIT: I also wanted to apologize for the late reply. My hard drive crashed last week and I've been trying to catch up for the past few days. Also, I did make a quick Hypercam video of me speedhacking Super Mario All-Stars with the Snezziboy debugger if anybody is interested. It assumes you've read the tutorial on the SNES Advance site and have a basic idea of what you're doing, but it should give you a demonstration on how exactly it's done. I could also make a quick video of myself doing the whole "find and replace" method I described if you're interested.
|
|