Posts for Fabianx

Experienced Forum User
Joined: 12/17/2004
Posts: 99
Location: Karlsruhe, Germany
moozooh wrote:
JXQ wrote:
I've actually been trying to figure out if there's a variable I can poke at which determines the game's music.
It seems that sound channels 1—5 are responsible for the background SPC ("music") playback, and 6—8 for other sound effects. I didn't test it throughout the whole game, though. As far as I can tell, you can't mess with that kind of settings in Snes9x without modifying the code (I myself used one of the ZSNES latest WIPs to check that).
There are sound channels? Cool. I didn't knew that ... It shouldn't be too difficult to code that ... cu Fabian
Post subject: Re: I'm having trouble with the memory watcher
Experienced Forum User
Joined: 12/17/2004
Posts: 99
Location: Karlsruhe, Germany
Fabian wrote:
I'm using 1.43 v9. When I go to Cheat -> Search for new cheats, every Address, Curr. Value and Prev. Value looks like this: ¨é| instead of what they should be looking like. I just tried it in an older version (1.43 v7 I think) and it was working fine, problem is of course there's no Watch function there. Does anyone have any idea how I can fix this? Thanks.
You cannot, but nitsuja can. In my post below, I have a patch for that. cu Fabian
Post subject: Do we have any contact with ROM hackers / datacrystal.org?
Experienced Forum User
Joined: 12/17/2004
Posts: 99
Location: Karlsruhe, Germany
The question why I ask this is datacrystal.org has several RAM maps of varying quality for some of the times we TAS here: http://datacrystal.org/wiki/Category:RAM_maps and I had never heard of them before. Seems they are even aware of fadeout timers for Secret of Mana ... http://datacrystal.org/wiki/Secret_of_Mana:RAM_map Maybe we could ask for help with the Super Mario World timeout lag issue? Or even general share our findings with them ... If memory watching is the next generation in TASing, maybe that could be fruitful ... cu Fabian
Post subject: Secret of Mana - Analysis
Experienced Forum User
Joined: 12/17/2004
Posts: 99
Location: Karlsruhe, Germany
I'll not do this project as I have not enough time, but I'll try to help out in finding the necessary things. First of all it would be very good if someone could check the following myths (and if not they still are a good laugh ...): I think the first one is a bit uhm, unrealistic ...
Infinite Life Once you have to have four of each type of healing item, you use them all one by one. When you're done you will have infanite life. Submitted by gamemaster(gamemaster@hotmail.com)
Another unlimited weapon orbs trick ... Somehow I doubt that it'll work ... But can anyone check?
Unlimited Weapon Orbs Go to any chest in a dungeon that has an orb and open it, then use the magic rope to teleport to the entrance of the dungeon. Go to the nearest watt and have him forge the weapon. then return to the chest where you found the orb and another of the same type of orb will be there. repeat this process as many times as you'd like. (note: Do not forge your weapon past its highest phase or it will be turned back to it's very first stage i.e. if you forge your sword to its 9th and final stage the forge it once more it will become the rusty blade.) Submitted by Cory Downing (tightcmd@aol.com)
Uhm, I liked the chocolate trick better ...
Invincibility Get fired out of the cannon 50 times Submitted by N64 gamer (brokenaro8@aol.com)
What I found out regarding chests dropped by enemies, yet is that its dependant on the exact frame you hit ... Well, I guess we guessed that already, but its always good to know ... Ok here is more information: http://tartarus.rpgclassics.com/staff/som/cheats.shtml There are monster statistics modifiers for the 3 monsters on screen (max). So, carefully watch them while tas'ing! Another edit: http://datacrystal.org/wiki/Secret_of_Mana has much information on internals of the game. It links to: http://starmen.net/pkhack/som/ which finally solves some important questions of the game: - You cannot gain a sword orb via normal monsters. - The mystic ruby armet is not dropped by a normal monster. - There are weapons, which have quite a high critical hit rate, which should make it easier to find the memory values responsible for the critical hits. - We can hack the rom and so change effects of the game to help in understanding whats happening. That maps might also be quite helpful to plan the route if we are able to figure out how to manipulate luck deterministically. And another new thing: 7EE{7,9,B}CE is the percentage of the enemy to drop a chest. So if you set this to 99, you'll almost always get a chest, which of course is not helpful, but it could help in finding the memory location if set to 50% or so, because it is much more probable that way ... Whew, I'll be the edit king of the night: I found out where the game stores the niceness of the enemies. If you want to have a walk-through without being attacked once use the following code: 7EE7ED with a value higher than 1 ... I used 4c ... (Repeat for the other 3 monsters ...) Its so nice the world is in order again. All monsters (espcially the pogos at the beginning) are nice and nothing has ever happened ;-) ... Or you can play the evil world with bad creatures all over ... by setting it to 0 ... Its the "frames until next attack" value. Default is 99, which seems to be hardcoded as it does not show up in the enemy table.
7EE{6,8,A}02: y coordinate of enemy x
7EE{6,8,A}04: x coordinate of enemy x
7EE{6,8,A}45: z coordinate of enemy x
7EE7CE: percentage of enemy 1 to drop a chest
7EE7ED: "niceness" factor of enemy 1
Here we go: Luck manipulation via chests. It seems each frame the random number generator mod 100 is checked if it is lower or equal than the percentage. The frame that needs to be hit is the one, when the monster "explodes". So you have several frame possibilities as the animation for the hit is different and can cost more or less frames ... Edit: ----- Here we go again: Self-Destroying sequence (quite funny): 7EE7F1FF - enemy 1 gets 255 damage every frame Another edit: ------------- Random number generator works as follows: static int SoM_hitframe(void) { int hit_max=5; // TODO int frames=0; int A[15]; int x, res, y; printf("FF: Getting bytes from memory.\n"); x=S9xGetByte(0x7e03f0); hit_max+=S9xGetWord(0x7ee196); for (int i=0; i < 15; i++) A=S9xGetByte(0x7e03f1+i); printf("FF: Got all bytes from memory.\n"); res=INT_MAX; while (res >= hit_max) { frames++; y=(x-1)<0?0xe:(x-1); A[y]=(A[x]+A[y]) % 256; x=(x + 1) % 0xF; res=A[y]; } return frames-6; } You can disable all the randomness in the generator by setting 0x7e03f? to 0 where ? is 0-F. By setting this I found out that the length and the choice of of the animation is not dependant on the random number generator, but just on the frame it occurs on. So it seems to be somewhat deterministic. While the random number generator is run each frame once, the result seems to be not used. At least thats what I see from the following code snippet:
0059e3 20 a0 38      JSR $38a0          ;·call rand()
0059e6 a5 80         LDA $80·····         ; overwrite result of rand()
0059e8 30 10         BMI $59fa·····
0059ea ad 04 1d      LDA $1d04          ;·
0059ed 89 01         BIT #$01·····
0059ef f0 03         BEQ $59f4·····
0059f1 4c 28 58      JMP $5828          ;·
Functions needing the random number generator call it directly before the result aka:
hit_rate=held[hit_rate]
if ( held wears hit_rate weapon or status effect)
  hit_rate*=2
if (plus_much_effect)
      hit_rate += 16
else
      hit_rate += 5
if (rand() < hit_rate)
          attack*=2
I was now trying to add support to snes9x to display the next critical hit frame. That works, but I have still problems with the length of the animation until hit ... With almost the same algorithm it can be determined if a chest appears and what it contains ... cu Fabian PS: While we wait for the tas, consider taking a look at this very nice music video I've just found: http://video.google.com/videoplay?docid=6550087712744740973&q=secret+of+mana&pl=true Btw. thats german and not Japanese ;-)
Post subject: [Request] Fix windows version for wine
Experienced Forum User
Joined: 12/17/2004
Posts: 99
Location: Karlsruhe, Germany
Hi, as the windows version is nowadays so much better than the linux version (especially in regard to searching for memory values), I have tried to run it with wine and the feature I needed (cheat search) does not work. The bug for this things lies in both programs (as often the case): - Wine is a bit too trustful and exposes internal data structures to the programs and it does not rescue things from the stack as soon as the message dispatcher arrives back. - SNES9x on the other hand does change data structures it should not change and relies on data still being on the stack when the function returns ... Question now for nitsuja: Could you incorporate the following changes into a v10?
--- wsnes9x.cpp.old     2006-04-23 20:17:33.000000000 +0200
+++ wsnes9x.cpp 2006-04-23 20:20:36.000000000 +0200
@@ -6608,7 +6608,7 @@
                                                                nmlvdi->item.pszText=curr->rmbits;
                                                                nmlvdi->item.cchTextMax=11;
                                                        }
-                                                       nmlvdi->item.mask=LVIF_TEXT;
+                                                       // nmlvdi->item.mask=LVIF_TEXT; // This isbad as wine relies on this to not change.
                                                }
                                                break;
                                        case NM_DBLCLK:
@@ -9822,7 +9822,7 @@
                                NMHDR * nmh=(NMHDR*)lParam;
                                if(nmh->hwndFrom == GetDlgItem(hDlg, IDC_ADDYS) && nmh->code == LVN_GETDISPINFO)
                                {
-                                       TCHAR buf[12];
+                                       TCHAR* buf=new char[12]; // Or do anything else to have itactually not on the stack ...
                                        int i, j;
                                        NMLVDISPINFO * nmlvdi=(NMLVDISPINFO*)lParam;
                                        j=nmlvdi->item.iItem;
@@ -9945,7 +9945,7 @@
                                                nmlvdi->item.pszText=buf;
                                                nmlvdi->item.cchTextMax=4;
                                        }
-                                       nmlvdi->item.mask=LVIF_TEXT;
+                                       // nmlvdi->item.mask=LVIF_TEXT; // This is bad as wine relies on this not being changed

                                }
                                else if(nmh->hwndFrom == GetDlgItem(hDlg, IDC_ADDYS) && (nmh->code== LVN_ITEMACTIVATE||nmh->code == NM_CLICK))
This will also fix the other Fabian's problems with the memory watcher and will additionally also fix the open dialog under wine. cu Fabian PS: The first issue was reported to the wine team.
Experienced Forum User
Joined: 12/17/2004
Posts: 99
Location: Karlsruhe, Germany
ventuz wrote:
Multiple Weapon Orbs Have one of character pick up treasure chest that contains weapon Orb (can't be boss / regular items), switch to other character keep pressing attack button near treasure chest.
What is the source for this last trick? Have you tried it, because if it worked, you could also duplicate the sword orb I think. As there is as far as I remember one in a chest. Also for sure this would help to accelerate the game. If it is possible, is it possible multiple times with three characters? cu Fabian
Experienced Forum User
Joined: 12/17/2004
Posts: 99
Location: Karlsruhe, Germany
JXQ wrote:
Ducking to charge a Shinespark does make Samus slide a bit, is that what you were referring to? Unfortunately, using L or R to stop-on-a-dime gets rid of Samus's echoes and so she can't charge the spark.
No, I meant something differently. When you have charged up enough and let Samus "fly" in the direction you want to go (like outside of wrecked ship, metroid area in maridia with blue suit, ...). It would be very nice if you could stop this voluntarily without having to wait to crash into a wall ... But I guess its not possible. That is why I have asked if you had tried every possible key combination? cu Fabian
Experienced Forum User
Joined: 12/17/2004
Posts: 99
Location: Karlsruhe, Germany
Hi, congrats for a very nice TAS. As I haven't watched any WIPs it was much more exciting. Still I have some questions: - Around frame 55000 you have gone through a door, collected a missile and used a wall-jump to reach the next platform. Would it have been possible to use the slow-shinespark to avoid the wall jump and possibly also shinesparking through the next room? - Around frame 160000: You let the digger-machine open the way for you. Then you shinespark through it. It looks as if you actually destroy some blocks with your shine-spark? Or is this wall really undestroyable except by that machine? - I think the one thing missing to massively improve Metroid runs, is control about the end of the shinespark. Was already every possible key combination tried? Especially L or R come to mind as they can "stop-on-dime" normally. cu Fabian
Experienced Forum User
Joined: 12/17/2004
Posts: 99
Location: Karlsruhe, Germany
feitclub wrote:
The advantage of "speed run" over "speedrun" is it makes a bad-ass acronym: Tool Assisted Speed Run = TASR which looks like "Taser."
Tool Assisted Speed Emulation Run ... TASER duck and run ... cu Fabian
Experienced Forum User
Joined: 12/17/2004
Posts: 99
Location: Karlsruhe, Germany
MPlayer (http://www.mplayerhq.hu/) can do that.
mplayer -vo png file.avi
for example. cu Fabian
Post subject: Non-TAS Video
Experienced Forum User
Joined: 12/17/2004
Posts: 99
Location: Karlsruhe, Germany
Woah, we still have way to go: http://video.google.com/videoplay?docid=-2223605724749998314 Its a non-TAS Movie of Super Mario World, which is mixed together with certain songs. Very great! Hope it can be an inspiration ...
Experienced Forum User
Joined: 12/17/2004
Posts: 99
Location: Karlsruhe, Germany
DeHackEd wrote:
.. Looks fine to me. On a partially related note, I put this movie on archive.org for direct HTTP downloading. That way you can watch it on a proper movie player and not a CPU-guzzling piece of crap flash plugin.
I can download the AVI just fine from Google Video ... cu Fabian
Experienced Forum User
Joined: 12/17/2004
Posts: 99
Location: Karlsruhe, Germany
JXQ wrote:
If there was a way to disable certain sound channels in SNES9x, maybe this concept could be done while keeping the sound effects of the original game. I think that would be cool.
I've checked the code. Unfortunately it all seems to be mixed with one sound processor (DSP700). You might be able to dump into SPC and use SPC2Midi to filter out certain events, but I haven't checked this Path. But what could work: Just use a "cheat" at the beginning of the movie and mute just the music if the game supports it (SF2 afaik does it ...). If you are lucky, this won't lead to desyncs. If you are unlucky, well ... Just an idea. cu Fabian
Post subject: New idea regarding running -> flying
Experienced Forum User
Joined: 12/17/2004
Posts: 99
Location: Karlsruhe, Germany
I just got an idea, which is completely untested. While watching Saturns trailer again, I thought about the arm pumping and that so far in many games there have been tricks to move faster and that unfortunately in N64 games they are always accompanied with a "yahoo" or "uff", which is nerving as hell. Then I thought that JXQ said that he could get to "shine-spark" (turbo run) in Super Metroid very fast by pressing the keys just at the right frames. Now here the question to the SMW experts: Would that also work for SMW? I.e. does the game check for the running key on each frame or just on certain frames? Could this make it possible to use flying in for example Vanilla Dome 2 on the small platform, which was normally impossible? Just an idea. cu Fabian
Experienced Forum User
Joined: 12/17/2004
Posts: 99
Location: Karlsruhe, Germany
jimsfriend wrote:
Quote: Do you know how big of a frame window I have to fall after the green turtle falls? 2 frames.
Ouch. And do you have to be in a p-run? Or can Mario be moving relatively slow?
Hi jimsfriend, I am not a good tasser, but I made a video for you out of JXQs smv, which really did cost me some nerves. Its made with 3 frames per second and keypresses on, so perhaps you can analyze from there how to use this 2-frame window for your advantage. http://studwww.ira.uka.de/~s_franz2/smw_sw4.avi cu Fabian(X)
Experienced Forum User
Joined: 12/17/2004
Posts: 99
Location: Karlsruhe, Germany
JXQ wrote:
Turns out it is possible, though the timing needed is ridiculously precise. It looks cool, though. Did you get that thing I sent you?
I have made another attempt at that, but as I did never do any successful SMW rerecording before, it sucks and did not finish as I could not find out how to bounce off a shell I've thrown. I'm more of a coder, then a gamer. Anyway: http://dehacked.2y.net/microstorage.php/info/722/SMW_SW4_otherway.smv The idea is to just throw up a shell at the point where the green shell would drop itself. There seems to be enough time to do: - either: Grab the other shell gain some gravity monumentum and bounce off from it, like with the green shell. - Jump to the other platform, grab the shell and use the gravity directly without landing on platform first. - Jump to the other platform, grab the shell, land, gain forward monumentum and do almost exactly like in JXQs version, but with the difference that the shell has more downward monumentum. Why I still thought about that, if there is already one solution? Well, jimsfriend wrote at SDA:
jimsfriend wrote:
hat shouldn't be too hard... *cries* Even if you don't read here, thankyou JXQ. You are a genius. Now I just need to know why the red one doesn't come out of his shell sometimes. I stomp the shell and I have an empty shell, but no shell-less koopa guy.
So I thought perhaps it is possible with the shell. From what I've seen I should be in the right height in my video to do the jump, and I checked again - if I do the YB jump a bit shorter and press Y, -> faster, I can get in any height I wish with the downward shell - though I still do not know how to bounce off of it. So, please TAS artists show me if it can be done. cu Fabian(X) [edit: too bad that it won't work - bad physics ;-)]
Experienced Forum User
Joined: 12/17/2004
Posts: 99
Location: Karlsruhe, Germany
Truncated wrote:
I'd also rather see 150cc. As mentioned, in this game the "play at hardest difficulty" conflicts with "you mustn't start from a savestate". I suppose it could be SRAM as well in this case, right? That would be easier to compare than a savestate, since the movie at least starts from reset. All we need is a verified good SRAM that doesn't change some other variable than "150cc playable".
As far as I remember (from some other GAME) it is (sometimes) OK to start from SRAM. It is _never_ allowed to start from savestate. (Note that there is a difference). But SRAM should be fine for this game ... Perhaps Bisqwit will answer alos, so we have clarity ;-) ... cu Fabian
Experienced Forum User
Joined: 12/17/2004
Posts: 99
Location: Karlsruhe, Germany
Hi, wow that video looks really great. And I really like that you replaced the usage of <> at the same time ... However I miss something in the submission comments: Donut Secret 1: - Usage of A+B at the "same" time lets you swim upward _very_ fast. (ABABABABAB) And IIRC this trick was just discovered because you used this technique to enter the levels easy at the first frame ;-). cu Fabian
Experienced Forum User
Joined: 12/17/2004
Posts: 99
Location: Karlsruhe, Germany
SMW 96 exit run by Viper as well.
Experienced Forum User
Joined: 12/17/2004
Posts: 99
Location: Karlsruhe, Germany
michael flatley wrote:
196 frames between the earliest allowable rocket hit and the super that finishes him. [...] This allows you to move towards him at a slower rate and send off more rockets. Luckily this reduced rate is still enough to produce the desired doppler effect.
And I thought there was no "real life" application for physics ;-). Well done and a very cool trick. cu Fabian
Experienced Forum User
Joined: 12/17/2004
Posts: 99
Location: Karlsruhe, Germany
michael flatley wrote:
I'm going for the fastest time. There's always lots of neat stuff you have to skip in a speedrun. I see no reason why I should save the animals yet skip mini-boss fights. Also, it's been done before in Samus Aran's run. Whenever possible I try to make my run unique.
I disagree: 1. There is no time attack run, which saves the animals. (at least no published one) 2. As you do 100% you should truely do 100% and this involves rescuing the animals. I mean: Without them you "theoretically" never learned the Wall-Jump and the jump from speedbooster ;-). So: Please, please save them. And btw. the minibosses are blown up by the planet anyway, but you cannot recover those animals. cu Fabian
Experienced Forum User
Joined: 12/17/2004
Posts: 99
Location: Karlsruhe, Germany
I voted Meh as there is just Skill in this movie, but no real entertainment. It _is_ impressive, but Timeattacks also need to be entertaining in my eyes. Hope to see an update of your SoE run soon. cu Fabian
Experienced Forum User
Joined: 12/17/2004
Posts: 99
Location: Karlsruhe, Germany
michael flatley wrote:
I spent several hours working on Kraid to save 1/5 of a second. I don't think this can be done any faster and I'm so glad to have him out of the way. I finally have the speed booster. [...]
Great! I'm really looking forward to see a new pre-version. Get Phantoon! ;-) cu Fabian
Post subject: Really great
Experienced Forum User
Joined: 12/17/2004
Posts: 99
Location: Karlsruhe, Germany
Really great. I especially liked the bosses and your usage of the mirror. cu Fabian
Experienced Forum User
Joined: 12/17/2004
Posts: 99
Location: Karlsruhe, Germany
Ozmodiar wrote:
[...] you can completely skip ridley and mother brain, definitely cutting a LOT of time off your final time. it may not be allowed, but damn is it cool!"
Well, you won't see this in MF's run, because he aims for 100%, which means he needs the energy tank in Ridleys lair. ;-) But I think for another category, this would be allowed like with Zelda (up-down 5 minute walkthrough glitch) ... cu Fabian