Posts for andymac

1 2
5 6 7
25 26
Experienced Forum User, Published Author, Experienced player (618)
Joined: 11/30/2008
Posts: 650
Location: a little city in the middle of nowhere
Are you sure that the route shown in the video was the fastest? if it is, then that's a lot less work for me, but if it isn't, then that's okay too. EDIT2: map recall EDIT: here's a map. Didn't bother colouring it this time around. All the grey blocks are empty space, but they might show differently in the real game. The range of this map is 0x4000-0x9000. I didn't go further, because past that, things are subject to change, and a lot of it. I didn't get a dump of the RAM which was a good representation of 0x9000-0xA000. Once you get to A000, it's a simple matter of just destroying some blocks. Red pipes you can't go through, blue is still water and pink is still jelly, but spikes show as spikes. Looks like some areas are mostly free space. map I couldn't find a dump of 0x4000-0x8000 that was representative of actual garbage data. It seems that maybe, ROM is switched at sub frame intervals.
Measure once. Cut twice.
Experienced Forum User, Published Author, Experienced player (618)
Joined: 11/30/2008
Posts: 650
Location: a little city in the middle of nowhere
Try a different level. Different levels have different memory between 4000-8000.
Measure once. Cut twice.
Experienced Forum User, Published Author, Experienced player (618)
Joined: 11/30/2008
Posts: 650
Location: a little city in the middle of nowhere
Here's a map of the first 64 rows of garbage data (excluding the first two rows because they always change). It's the same in any level. You still need to go down a further 100 rows to get to A000. I might post some more maps later. My first impressions are that it's possible to get down to A000, but with some serious planning needed. Legend:
green           solid
white           empty
red             spikes
blue            water
pink            jelly
black           exit
orange/black    pipe (the direction of the pipe is the side with the orange))
http://tinyurl.com/23r4r97 EDIT: changed to URL to avoid page breakage. EDIT2: It appears that there are some blocks which I mistakenly marked solid, when they were actually empty. I also need to mark coins on the map because if you touch them, you cause an illegal write and the game crashes. Unfortunately, according to my map, it's impossible to get below the 28th row with big Mario, but you need big mario to break the blocks! Is there any way to make mario big near SRAM?
Measure once. Cut twice.
Experienced Forum User, Published Author, Experienced player (618)
Joined: 11/30/2008
Posts: 650
Location: a little city in the middle of nowhere
Post subject: TAS input plugin
Experienced Forum User, Published Author, Experienced player (618)
Joined: 11/30/2008
Posts: 650
Location: a little city in the middle of nowhere
Recently I heard that this isn't possible, because Dolphin withdrew support for third party plugins for input. I was thinking of a program, which basically does the opposite of Joy2key. Something like VJoy, but with sliders or some way of controlling analog input accurately. Then we could map dolphin to accept input from this virtual joystick which we control, in order to have TAS accuracy. This program could then be used for future emulators, or emulators like Mupen and PCSX. Does anyone know of such a program?
Measure once. Cut twice.
Experienced Forum User, Published Author, Experienced player (618)
Joined: 11/30/2008
Posts: 650
Location: a little city in the middle of nowhere
You will need to use this LUA script to do that. Download the file, go File -> Lua scripting -> new lua script window. then find the file and click run. Displaying numbers on screen or not is a personal choice, and it's not better one way or the other. A lot of TASers prefer having memory adresses and other information on screen, because then you can have information like hitboxes and other data shown on the screen where you need it most, but some of them (like me) prefer to have the numbers on a separate window, because then the text doesn't get in the way of the video. Sometimes it's better to chose one, and then swap to the other when necassary.
Measure once. Cut twice.
Experienced Forum User, Published Author, Experienced player (618)
Joined: 11/30/2008
Posts: 650
Location: a little city in the middle of nowhere
If you have a recent version of Snes9x, all you need to do is open your ROM, and then go to "tools" and then "RAM watch". After it's open, click "new" to add an address to watch. To save a watch file with all the addresses in it, go to file -> save. Actually, this walljump information isn't entirely correct. You don't have to be exactly at a block boundary vertically, you can be up to 7 pixels below the block boundary and still do a walljump as normal. This is useful in some cases where you can't quite jump high enough to get the block boundary. Also, if you do manage to snag a wall below the block boundary, you will automatically be warped up to the block boundary. I use this in my SDW TAS at about frame 30,000. If in doubt, make sure mario is lower than the block. The most important thing is your horizontal position.
Measure once. Cut twice.
Experienced Forum User, Published Author, Experienced player (618)
Joined: 11/30/2008
Posts: 650
Location: a little city in the middle of nowhere
I was about to say the same thing. Anyway, if you have a point exactly on the circle, you can find the velocity without calculating acceleration first, because it will be a tangent to the circle. Say the centre of the circle is the origin, the gradient of the tangent will be -x/y.
Measure once. Cut twice.
Experienced Forum User, Published Author, Experienced player (618)
Joined: 11/30/2008
Posts: 650
Location: a little city in the middle of nowhere
Okay, I wanted to do some investigating on score lag, so I did some trace logging and it turns out that Mister was totally right. The score IS calculated every frame, and it's a monster of a code believe me. Basically, the program repeatedly subtracts powers of ten from the score until it gets zero. The programmers were really dumb, For example, once you have subtracted the hudreds of thousands, the tens of thousands, the thousands, hundreds and tens, you would think that whatever remains you would just put in the last digit. well no. After you get to the ones, the program subtracts one after one after one, while incrementing the score on screen one by one. Here's the kicker: the 65c816 CPU has a decimal mode, so you can calculate decimal arithmetic on any BCD numbers. so there's no need for a HEX-DEC conversion. It also takes no longer to do decimal arithmetic than binary arithmetic on the 65c816. Simply set the decimal flag beforehand, and unset it afterwards. simple! Stupid? yes. Anyway, here is the code for the HEX-DEC score conversion for SMW:
Language: asm

;initial values for variables: ;(4 bytes) $0000 = score ;X = 14 <- okay what the hell ;Y = 0 ;P = nvMXdiZc ;$8FFA,y (4 bytes) = 100,000 for y = 0, 10,000 for y = 4 , 1,000 for y = 8 ect. 009012 sep #$20 009014 stz $0F15,x 009017 rep #$20 009019 lda $02 00901B sec 00901C sbc $8FFC,y 00901F sta $06 009021 lda $00 009023 sbc $8FFA,y 009026 sta $04 009028 bcc $9039 00902A lda $06 00902C sta $02 00902E lda $04 009030 sta $00 009032 sep #$20 009034 inc $0F15,x 009037 bra $9017 009039 inx 00903A iny 00903B iny 00903C iny 00903D iny 00903E cpy #$18 009040 bne $9012 009042 sep #$20 009044 rts
Okay, doesn't look too bad does it? Here is a pseudocode version of the same process (simplified, not exact)
Language: cpp

void hexDecScore(int score) { int *x; int y = 5; int scorecheck; while(true) { int ten_to_y = 10 ^ y; *x = 0; while(true) { scorecheck = score - ten_to_y; if(scorecheck < 0) break; score = scorecheck; *x = *x++; } x = x++; y = y--; if(y == 0) break; } }
again, seems pretty easy, but when you realise that this process repeats itself over and over again, and this subroutine is called EVERY FRAME, you can see where it gets bad. The following is taken directly from a log file in a hex editor: 009012 sep #$20 009014 stz $0f15,x 009017 rep #$20 009019 lda $02 00901b sec 00901c sbc $8ffc,y 00901f sta $06 009021 lda $00 009023 sbc $8ffa,y 009026 sta $04 009028 bcc $9039 009039 inx 00903a iny 00903b iny 00903c iny 00903d iny 00903e cpy #$18 009040 bne $9012 009012 sep #$20 009014 stz $0f15,x 009017 rep #$20 009019 lda $02 00901b sec 00901c sbc $8ffc,y 00901f sta $06 009021 lda $00 009023 sbc $8ffa,y 009026 sta $04 009028 bcc $9039 00902a lda $06 00902c sta $02 00902e lda $04 009030 sta $00 009032 sep #$20 009034 inc $0f15,x 009037 bra $9017 009017 rep #$20 009019 lda $02 00901b sec 00901c sbc $8ffc,y 00901f sta $06 009021 lda $00 009023 sbc $8ffa,y 009026 sta $04 009028 bcc $9039 00902a lda $06 00902c sta $02 00902e lda $04 009030 sta $00 009032 sep #$20 009034 inc $0f15,x 009037 bra $9017 009017 rep #$20 009019 lda $02 00901b sec 00901c sbc $8ffc,y 00901f sta $06 009021 lda $00 009023 sbc $8ffa,y 009026 sta $04 009028 bcc $9039 00902a lda $06 00902c sta $02 00902e lda $04 009030 sta $00 009032 sep #$20 009034 inc $0f15,x 009037 bra $9017 009017 rep #$20 009019 lda $02 00901b sec 00901c sbc $8ffc,y 00901f sta $06 009021 lda $00 009023 sbc $8ffa,y 009026 sta $04 009028 bcc $9039 009039 inx 00903a iny 00903b iny 00903c iny 00903d iny 00903e cpy #$18 009040 bne $9012 009012 sep #$20 009014 stz $0f15,x 009017 rep #$20 009019 lda $02 00901b sec 00901c sbc $8ffc,y 00901f sta $06 009021 lda $00 009023 sbc $8ffa,y 009026 sta $04 009028 bcc $9039 00902a lda $06 00902c sta $02 00902e lda $04 009030 sta $00 009032 sep #$20 009034 inc $0f15,x 009037 bra $9017 009017 rep #$20 009019 lda $02 00901b sec 00901c sbc $8ffc,y 00901f sta $06 009021 lda $00 009023 sbc $8ffa,y 009026 sta $04 009028 bcc $9039 00902a lda $06 00902c sta $02 00902e lda $04 009030 sta $00 009032 sep #$20 009034 inc $0f15,x 009037 bra $9017 009017 rep #$20 009019 lda $02 00901b sec 00901c sbc $8ffc,y 00901f sta $06 009021 lda $00 009023 sbc $8ffa,y 009026 sta $04 009028 bcc $9039 00902a lda $06 00902c sta $02 00902e lda $04 009030 sta $00 009032 sep #$20 009034 inc $0f15,x 009037 bra $9017 009017 rep #$20 009019 lda $02 00901b sec 00901c sbc $8ffc,y 00901f sta $06 009021 lda $00 009023 sbc $8ffa,y 009026 sta $04 009028 bcc $9039 00902a lda $06 00902c sta $02 00902e lda $04 009030 sta $00 009032 sep #$20 009034 inc $0f15,x 009037 bra $9017 009017 rep #$20 009019 lda $02 00901b sec 00901c sbc $8ffc,y 00901f sta $06 009021 lda $00 009023 sbc $8ffa,y 009026 sta $04 009028 bcc $9039 00902a lda $06 00902c sta $02 00902e lda $04 009030 sta $00 009032 sep #$20 009034 inc $0f15,x 009037 bra $9017 009017 rep #$20 009019 lda $02 00901b sec 00901c sbc $8ffc,y 00901f sta $06 009021 lda $00 009023 sbc $8ffa,y 009026 sta $04 009028 bcc $9039 00902a lda $06 00902c sta $02 00902e lda $04 009030 sta $00 009032 sep #$20 009034 inc $0f15,x 009037 bra $9017 009017 rep #$20 009019 lda $02 00901b sec 00901c sbc $8ffc,y 00901f sta $06 009021 lda $00 009023 sbc $8ffa,y 009026 sta $04 009028 bcc $9039 00902a lda $06 00902c sta $02 00902e lda $04 009030 sta $00 009032 sep #$20 009034 inc $0f15,x 009037 bra $9017 009017 rep #$20 009019 lda $02 00901b sec 00901c sbc $8ffc,y 00901f sta $06 009021 lda $00 009023 sbc $8ffa,y 009026 sta $04 009028 bcc $9039 009039 inx 00903a iny 00903b iny 00903c iny 00903d iny 00903e cpy #$18 009040 bne $9012 009012 sep #$20 009014 stz $0f15,x 009017 rep #$20 009019 lda $02 00901b sec 00901c sbc $8ffc,y 00901f sta $06 009021 lda $00 009023 sbc $8ffa,y 009026 sta $04 009028 bcc $9039 00902a lda $06 00902c sta $02 00902e lda $04 009030 sta $00 009032 sep #$20 009034 inc $0f15,x 009037 bra $9017 009017 rep #$20 009019 lda $02 00901b sec 00901c sbc $8ffc,y 00901f sta $06 009021 lda $00 009023 sbc $8ffa,y 009026 sta $04 009028 bcc $9039 00902a lda $06 00902c sta $02 00902e lda $04 009030 sta $00 009032 sep #$20 009034 inc $0f15,x 009037 bra $9017 009017 rep #$20 009019 lda $02 00901b sec 00901c sbc $8ffc,y 00901f sta $06 009021 lda $00 009023 sbc $8ffa,y 009026 sta $04 009028 bcc $9039 00902a lda $06 00902c sta $02 00902e lda $04 009030 sta $00 009032 sep #$20 009034 inc $0f15,x 009037 bra $9017 009017 rep #$20 009019 lda $02 00901b sec 00901c sbc $8ffc,y 00901f sta $06 009021 lda $00 009023 sbc $8ffa,y 009026 sta $04 009028 bcc $9039 00902a lda $06 00902c sta $02 00902e lda $04 009030 sta $00 009032 sep #$20 009034 inc $0f15,x 009037 bra $9017 009017 rep #$20 009019 lda $02 00901b sec 00901c sbc $8ffc,y 00901f sta $06 009021 lda $00 009023 sbc $8ffa,y 009026 sta $04 009028 bcc $9039 00902a lda $06 00902c sta $02 00902e lda $04 009030 sta $00 009032 sep #$20 009034 inc $0f15,x 009037 bra $9017 009017 rep #$20 009019 lda $02 00901b sec 00901c sbc $8ffc,y 00901f sta $06 009021 lda $00 009023 sbc $8ffa,y 009026 sta $04 009028 bcc $9039 009039 inx 00903a iny 00903b iny 00903c iny 00903d iny 00903e cpy #$18 009040 bne $9012 009012 sep #$20 009014 stz $0f15,x 009017 rep #$20 009019 lda $02 00901b sec 00901c sbc $8ffc,y 00901f sta $06 009021 lda $00 009023 sbc $8ffa,y 009026 sta $04 009028 bcc $9039 00902a lda $06 00902c sta $02 00902e lda $04 009030 sta $00 009032 sep #$20 009034 inc $0f15,x 009037 bra $9017 009017 rep #$20 009019 lda $02 00901b sec 00901c sbc $8ffc,y 00901f sta $06 009021 lda $00 009023 sbc $8ffa,y 009026 sta $04 009028 bcc $9039 00902a lda $06 00902c sta $02 00902e lda $04 009030 sta $00 009032 sep #$20 009034 inc $0f15,x 009037 bra $9017 009017 rep #$20 009019 lda $02 00901b sec 00901c sbc $8ffc,y 00901f sta $06 009021 lda $00 009023 sbc $8ffa,y 009026 sta $04 009028 bcc $9039 00902a lda $06 00902c sta $02 00902e lda $04 009030 sta $00 009032 sep #$20 009034 inc $0f15,x 009037 bra $9017 009017 rep #$20 009019 lda $02 00901b sec 00901c sbc $8ffc,y 00901f sta $06 009021 lda $00 009023 sbc $8ffa,y 009026 sta $04 009028 bcc $9039 00902a lda $06 00902c sta $02 00902e lda $04 009030 sta $00 009032 sep #$20 009034 inc $0f15,x 009037 bra $9017 009017 rep #$20 009019 lda $02 00901b sec 00901c sbc $8ffc,y 00901f sta $06 009021 lda $00 009023 sbc $8ffa,y 009026 sta $04 009028 bcc $9039 00902a lda $06 00902c sta $02 00902e lda $04 009030 sta $00 009032 sep #$20 009034 inc $0f15,x 009037 bra $9017 009017 rep #$20 009019 lda $02 00901b sec 00901c sbc $8ffc,y 00901f sta $06 009021 lda $00 009023 sbc $8ffa,y 009026 sta $04 009028 bcc $9039 00902a lda $06 00902c sta $02 00902e lda $04 009030 sta $00 009032 sep #$20 009034 inc $0f15,x 009037 bra $9017 009017 rep #$20 009019 lda $02 00901b sec 00901c sbc $8ffc,y 00901f sta $06 009021 lda $00 009023 sbc $8ffa,y 009026 sta $04 009028 bcc $9039 00902a lda $06 00902c sta $02 00902e lda $04 009030 sta $00 009032 sep #$20 009034 inc $0f15,x 009037 bra $9017 009017 rep #$20 009019 lda $02 00901b sec 00901c sbc $8ffc,y 00901f sta $06 009021 lda $00 009023 sbc $8ffa,y 009026 sta $04 009028 bcc $9039 009039 inx 00903a iny 00903b iny 00903c iny 00903d iny 00903e cpy #$18 009040 bne $9012 009012 sep #$20 009014 stz $0f15,x 009017 rep #$20 009019 lda $02 00901b sec 00901c sbc $8ffc,y 00901f sta $06 009021 lda $00 009023 sbc $8ffa,y 009026 sta $04 009028 bcc $9039 00902a lda $06 00902c sta $02 00902e lda $04 009030 sta $00 009032 sep #$20 009034 inc $0f15,x 009037 bra $9017 009017 rep #$20 009019 lda $02 00901b sec 00901c sbc $8ffc,y 00901f sta $06 009021 lda $00 009023 sbc $8ffa,y 009026 sta $04 009028 bcc $9039 00902a lda $06 00902c sta $02 00902e lda $04 009030 sta $00 009032 sep #$20 009034 inc $0f15,x 009037 bra $9017 009017 rep #$20 009019 lda $02 00901b sec 00901c sbc $8ffc,y 00901f sta $06 009021 lda $00 009023 sbc $8ffa,y 009026 sta $04 009028 bcc $9039 00902a lda $06 00902c sta $02 00902e lda $04 009030 sta $00 009032 sep #$20 009034 inc $0f15,x 009037 bra $9017 009017 rep #$20 009019 lda $02 00901b sec 00901c sbc $8ffc,y 00901f sta $06 009021 lda $00 009023 sbc $8ffa,y 009026 sta $04 009028 bcc $9039 00902a lda $06 00902c sta $02 00902e lda $04 009030 sta $00 009032 sep #$20 009034 inc $0f15,x 009037 bra $9017 009017 rep #$20 009019 lda $02 00901b sec 00901c sbc $8ffc,y 00901f sta $06 009021 lda $00 009023 sbc $8ffa,y 009026 sta $04 009028 bcc $9039 00902a lda $06 00902c sta $02 00902e lda $04 009030 sta $00 009032 sep #$20 009034 inc $0f15,x 009037 bra $9017 009017 rep #$20 009019 lda $02 00901b sec 00901c sbc $8ffc,y 00901f sta $06 009021 lda $00 009023 sbc $8ffa,y 009026 sta $04 009028 bcc $9039 00902a lda $06 00902c sta $02 00902e lda $04 009030 sta $00 009032 sep #$20 009034 inc $0f15,x 009037 bra $9017 009017 rep #$20 009019 lda $02 00901b sec 00901c sbc $8ffc,y 00901f sta $06 009021 lda $00 009023 sbc $8ffa,y 009026 sta $04 009028 bcc $9039 009039 inx 00903a iny 00903b iny 00903c iny 00903d iny 00903e cpy #$18 009040 bne $9012 009042 sep #$20 009044 rts ALL that JUST to convert the score. and remember, that is done EVERY FRAME! In other words, if you actually look at the code, it's not the number of digits below 4, it's the total sum of all the digits that makes the really big difference. As for coins and lives, the HEX-DEC conversion is much simpler. Subtract 10 until your number is below 10, then the remainder is the second digit. Therefore, the second digit doesn't affect lag at all, because it requires the same amount of calculations no matter what. So there's 59 cycles for every extra number above 0, plus the overhead that you would have anyway, even if you did have a score of zero. so in my TAS I have 37576, which is 28 digits which is 1793 cycles taken up by the score every frame. 60 FPS makes 107580 cycles every second taken up by the score. The 65c816 processor runs at 3.58 MHz, so that's 3% of processor time taken up purely by calculating the score, which is pretty substantial when you think about it. As far as end of level lag is concerned, I think it's because your score is being tallied as well as the timer countdown, so there are two simultaneous HEX-DEC conversions going on. Ideally, you want 0, this will always get you the least amount of calculations. You can't really manipulate the timer, so that leaves the score. The best case scenario is to have more low digits for the more significant digits of the score, the reason being, is that these numbers will remain low for the majority of the timer countdown (discount this if your timer is still not counting down by the time the screen starts increasing it's brightness), whereas say, the hundreds digit goes 1,2,3,4,5,6,7,8,9,0,1... ect, which gives a mean of about 4.5 no matter what digit you started with. For example even if your hundreds digit is a 9, even if you only have 20 seconds on the clock, it will average to 4.5. during the countdown. However, before and afterwards, you might have trouble. Also, the tens digit of the score is very important, because it doesn't change until right at the end. Make sure that it's a 5 or 0, depending on the timer, so that you get a good value for the finish, when it draws the circle. If your timer isn't counting down by the time the screen becomes brighter, then all you have to worry about is what the score is before the countdown, and what it is afterwards. The point in time where lag reduction is really important is when the game is drawing the circle around mario. I believe this process is very computationally expensive, and low score should help in relieving some of the stress on the CPU. Make sure that the sum of your score digits and the second digit in your lives, coins, and stars is as low as possible to get the least amount of lag. EDIT: more code snippets HEX-DEC star conversion:
Language: asm

009051 sep #$20 009053 stz $0F15,x 009056 rep #$20 009058 lda $02 00905A sec 00905B sbc $8FFC,y 00905E sta $06 009060 bcc $906D 009062 lda $06 009064 sta $02 009066 sep #$20 009068 inc $0F15,x 00906B bra $9056 00906D inx 00906E iny 00906F iny 009070 iny 009071 iny 009072 cpy #$18 009074 bne $9051 009076 sep #$20 009078 rts
and HED-DEC for coins:
Language: asm

009045 ldx #$00 009047 cmp #$0A 009049 bcc $9050 00904B sbc #$0A 00904D inx 00904E bra $9047 009047 cmp #$0A 009049 bcc $9050 009050 rts
so for coins, only the first digit counts for lag, but for stars, the second digit does too...
Measure once. Cut twice.
Experienced Forum User, Published Author, Experienced player (618)
Joined: 11/30/2008
Posts: 650
Location: a little city in the middle of nowhere
I have absolutely no idea if more is possible, so you should probably wait for Mister's answer, but having 4 of your score digits above 4 when Chef Stef only had 1 might also be the cause of that extra lag
I wouldn't think so, because there are no calculations done on the score during this time, this would affect lag at the end of the level when the score is recalculated, but I don't think it affects lag in the level.
Measure once. Cut twice.
Experienced Forum User, Published Author, Experienced player (618)
Joined: 11/30/2008
Posts: 650
Location: a little city in the middle of nowhere
http://code.google.com/p/andymac-tas/source/browse/trunk/Super+demo+world/SDW.smv?spec=svn61&r=61 Okay, so the progress for SDW has been pretty slow recently because I hate TASing autoscrollers. I also hate swimming levels. Finally I also hate lag reduction. This level has all three. So anyway, the problem is that I have about 10 more frames of lag than Chef Stef in this autoscroller. Now I'm not completely sure, but there is a fish that I kill at frame 80709, and if I could kill it maybe 1 or 2 frames before, I could get less lag, however, because of my cape spin timer, I can't kill this fish earlier unless I am on the other side of it, but I can't do that because I need the screen to scroll. Ideally I want to have less frames of lag than Chef-Stef. Can anyone help me with this?
Measure once. Cut twice.
Experienced Forum User, Published Author, Experienced player (618)
Joined: 11/30/2008
Posts: 650
Location: a little city in the middle of nowhere
Isn't this the same sort of idea as SDA? Basically, you have one page for each game, which covers all categories and includes submission comments and encodes ect. Coupled with a list of games, this would make searching for movies easier and might avaoid problems such as this one. EDIT: Basically, all of these ideas revolve around the central concept that we need a "game" object, as well as "movie" and "submission" objects. On the downside however, this would require a complete makeover of the site's code, and would also make it more difficult do things such as list a selection of movies. People posting periodic WIPs would have to update the page manually every time, and I could imagine this system being particularly flawed and open for abuse. Putting WIPs in the same light as a full movie is a mistake, because WIPs may not be final, and may not have proper encodes. SInce WIPs may not necassarily be up to the site's standard, we should wait for the movie to be accepted before committing changes to any movie pages. Perhaps we could create a specific, official WIP page for periodic WIPs of a game for the site, but I can't imagine this hapenning, and I can't really imagine the logistics of it either. The "we have too many categories" problem is not a problem because we have a bad site layout, it's a problem because of movie redundancy. The site's main goal is entertainment, and several redundant goals for a single movie creates too many similarities. The problem isn't that we don't have enough page space, the problem is that we have too many movies that are exactly the same. (On this issue, my opinion is that 3 categories for a game is usually enough, unless different versions of the games or hacks, are sufficiently different to warrant separate publications. For example, I consider most hacks to be different enough to the original game to warrant separate publications, and that maybe 2 or 3 hacks of certain games should be accepted as long as they are well made. Also, for more popular games, there should be more leniancy on the number of categories, because these are the movies that the general public finds more entertaining and are more likely to be viewed.) Also, if you do want the site to change, it's probably best to do it youself. I can imagine that people like adelikat put the site's layout as low priority, but if there is someone who has the means and the motivation to do so, and the support of TASVideos users, then I can imagine a change taking place. However, as it stands, I don't think many changes are going to occur for a while.
Measure once. Cut twice.
Experienced Forum User, Published Author, Experienced player (618)
Joined: 11/30/2008
Posts: 650
Location: a little city in the middle of nowhere
Firstly, because you need to start from SRAM to play on super hard. Secondly, cosmetically, the beeping from low health gets really annoying and thirdly, in later levels, super hard is not sufficiently different from hard in order to warrant a separate "start from SRAM" category. T^hese are the reasons that I chose Hard over Super hard.
Measure once. Cut twice.
Experienced Forum User, Published Author, Experienced player (618)
Joined: 11/30/2008
Posts: 650
Location: a little city in the middle of nowhere
It will obsolete the current run. It actually contains mostly normal play, even with the glitch, simply because the glitch takes such a short time to do each time.
Measure once. Cut twice.
Post subject: INSANE VERTICAL ZIPPING!!!
Experienced Forum User, Published Author, Experienced player (618)
Joined: 11/30/2008
Posts: 650
Location: a little city in the middle of nowhere
OMGOMGOMGOMG youtube link This means that I'll have to restart :(
Measure once. Cut twice.
Experienced Forum User, Published Author, Experienced player (618)
Joined: 11/30/2008
Posts: 650
Location: a little city in the middle of nowhere
in the SMV format, there are 4 reserved bits for every frame of input. So 1 bit for every button (12) plus four makes an even 16, or two bytes per frame, which is easy for the emulator to handle. The buttons "0", "1" and "2" don't actually exist. They are simply placeholders in the SMV file, and in any unmodified movie, they should never be pressed. The only way to press these buttons is to either modify the emulator, or modify the file. Just to note, there is no "reset" button. Reset is given by FF FF (i.e, all buttons pressed, and all four reserved buttons pressed as well.)
  01 00 (reserved)
  02 00 (reserved)
  04 00 (reserved)
  08 00 (reserved)
  10 00 R
  20 00 L
  40 00 X
  80 00 A
  00 01 Right
  00 02 Left
  00 04 Down
  00 08 Up
  00 10 Start
  00 20 Select
  00 40 Y
  00 80 B
Measure once. Cut twice.
Experienced Forum User, Published Author, Experienced player (618)
Joined: 11/30/2008
Posts: 650
Location: a little city in the middle of nowhere
Because if you take that route, you end up having to do star world 1, which is impossible:
Because of that, we can't use the same route as the normal run. Star World 1 can only done as big mario, because you must destroy the blocks with spin jumps, but with small Mario you can't destroy them.
Measure once. Cut twice.
Experienced Forum User, Published Author, Experienced player (618)
Joined: 11/30/2008
Posts: 650
Location: a little city in the middle of nowhere
Voting no because there are some improvements to be made to a very short run. Allthough the run is very entertaining and well made, there are quite a few improvements that have been known for a while. By the time this TAS reaches donut 1, it is almost a second slower than mister's obsoleted SMW run: Neglected to minimise lag during the shell jump in the third level. Doing 6/5 in the second level is actually slower, and was tested when doing the full small-only TAS. Less optimal P switch jump in the first castle compared to Mister's run. This TAS also does not minimise score lag between levels as much as other runs. Sure, I'm up for this particular category but some of these improvements have been known for a long time. Generally, it's also relatively easy to go back and edit out mistakes in shorter runs.
Measure once. Cut twice.
Experienced Forum User, Published Author, Experienced player (618)
Joined: 11/30/2008
Posts: 650
Location: a little city in the middle of nowhere
Duck jumping boosting is easy. Get a cape. Get a full p meter. Duck jump and hit a ceiling. sometimes it stops you dead, but sometimes it will give you a boost. If it doesn't work first try, it's not worth doing. Corner boosting, I'm not so sure about. In water it's easy. Just swim upwards really really fast near a corner. on land, you just have to jump up really fast. You have to be precise though, because you're travelling faster. That's about as much as I know. You might want to ask mister or someone knowledgable.
Measure once. Cut twice.
Experienced Forum User, Published Author, Experienced player (618)
Joined: 11/30/2008
Posts: 650
Location: a little city in the middle of nowhere
It can save time on any block, as long as you have the right positioning. If you are going to the right, which is the standard way of travelling, if you do a corner clip or get far enough into a block, you will be ejected to the right by 1 pixel every frame. however, you can't jump trough 2 blocks while going to the right, and you also can't touch the ground. If you do, you will start going to the left. A lot of blocks aren't worth it, because you have to slow down too much to clip the block in the first place. Also, a thing to note is that while inside the block, if you are flying, it's worth slowing down just a little bit. (try pressing > or <> for 5 frames or a combination). This will lose 10 subpixels, but you will gain 16 because you will be inside the block for another frame. Also, this provides an oppurtunity to position yourself for the next corner clip in the level. If you are going to the left, you can clip through a long flat peice of ground because mario is ejected to the left when his feet are on the floor. as long as marios head doesn't go inside a wall, you are fine. Also, similarly related, if you do a duck jump when flying and you hit a ceiling, sometimes mario's head is far enough into the ceiling, you will get a boost.
Measure once. Cut twice.
Experienced Forum User, Published Author, Experienced player (618)
Joined: 11/30/2008
Posts: 650
Location: a little city in the middle of nowhere
DW2B: you can go through the first block, but not the second. I tried this when I first did this level. You can only go through two blocks if you are going to the left. DP: doesn't work, you need to have hit the block on the same frame you get the powerup. The only way to do that with a fireflower is from the bottom. I tested the positions needed for all of the blocks over the lava pit. Only a few were worth it. Also, because running, even inside blocks loses speed, it's not worth it to go through the blocks next to the pipe.
Measure once. Cut twice.
Experienced Forum User, Published Author, Experienced player (618)
Joined: 11/30/2008
Posts: 650
Location: a little city in the middle of nowhere
I got uncapped! Now I can upload some of my longer TASes.
Measure once. Cut twice.
Experienced Forum User, Published Author, Experienced player (618)
Joined: 11/30/2008
Posts: 650
Location: a little city in the middle of nowhere
I thought I might post my SDW WIPs regularly in the topic so that people can proof watch them for errors: http://dehacked.2y.net/microstorage.php/info/973108558/SDW.smv
Measure once. Cut twice.
Experienced Forum User, Published Author, Experienced player (618)
Joined: 11/30/2008
Posts: 650
Location: a little city in the middle of nowhere
yeah, I know what you mean, every emulator has it's quirks, but then again, you can always change the hotkeys for save/load state in Snes9x, to the gens keys.
Measure once. Cut twice.
Experienced Forum User, Published Author, Experienced player (618)
Joined: 11/30/2008
Posts: 650
Location: a little city in the middle of nowhere
I don't think Nahoc is TASing a two player game. I think he just wants to TAS with a mouse instead of the keyboard. I had a conversation with him, and the real issue is not the limit on the keys, it's just that, because he TASes on the N64 a lot, he is used to that particular GUI, and would rather prefer pressing buttons on the screen than buttons on a keyboard. This is Nahoc's setup for TASing N64: Right hand: mouse, which controlls joystick and all buttons, and FA and shift. (so he regularly moves his hand from the mouse to the keyboard). Left hand: F1-F10. He really wants to be able to TAS like this for the SNES, this is a foreign concept for most of us. I assume most of you use a system similar to this: Right hand: arrow keys, F1-F10, frame advance and maybe shift Left hand: any other controller buttons, shift and maybe FA. I think Nahoc may also be uncomfortable with the idea of changing buttons around on the keyboard to overcome the key limit. Maybe we should use this thread to gauge support for a GUI based TASIng system.
Measure once. Cut twice.
1 2
5 6 7
25 26