Posts for CLChambers00

Experienced Forum User
Joined: 7/21/2017
Posts: 54
I think that I may have some puzzle solutions that are faster than the present TAS. Posting this for historical purposes. https://www.youtube.com/watch?v=SPUF1O2HUxE
Chambers_N
Experienced Forum User
Joined: 7/21/2017
Posts: 54
I created this tas, posting here for historical purposes. https://www.youtube.com/watch?v=HmI1STYD6UQ
Chambers_N
Experienced Forum User
Joined: 7/21/2017
Posts: 54
Made a theory tas that does not attempt to be a technical tas but I think it might be faster than what is on this site, posting this here for historical purposes. https://www.youtube.com/watch?v=hMt06bvXwE0
Chambers_N
Experienced Forum User
Joined: 7/21/2017
Posts: 54
Also, is there a Lolo 1 forum thread? Also, good work on the new find, it is a bit hard to do RTA but it is 16 frames of goodness.
Chambers_N
Experienced Forum User
Joined: 7/21/2017
Posts: 54
Alyosha wrote:
CLChambers00 wrote:
The most interesting point for the TAS on this game is that in order to get the best and fastest stats so far in any% is faster than any TAS could ever do it because it requires RNG set up from the previous attempt and the TAS timing would include that entire setup.
Do you think sub-frame inputs / resets would be able to cut down the set-up time?
The death setup first requires a certain house order which I believe is the default on Bizhawk. Once Monday begins then the RNG is manipulated by dying in certain locations and game over. Then one presses start on title screen and the house order has been effectively manipulated. I am not presently aware of any way to manipulate this further.
Chambers_N
Experienced Forum User
Joined: 7/21/2017
Posts: 54
The most interesting point for the TAS on this game is that in order to get the best and fastest stats so far in any% is faster than any TAS could ever do it because it requires RNG set up from the previous attempt and the TAS timing would include that entire setup.
Chambers_N
Experienced Forum User
Joined: 7/21/2017
Posts: 54
I am not sure if anything I do in my run might be faster than that TAS, I thought maybe there was a new find or two but I honestly can't remember. https://www.youtube.com/watch?v=7uBzuR2SEDo
Chambers_N
Experienced Forum User
Joined: 7/21/2017
Posts: 54
Experienced Forum User
Joined: 7/21/2017
Posts: 54
I don't know if there are any time saves in the Theory Tas that I made but I thought I would post it here for historical purposes having created it. https://www.youtube.com/watch?v=_Ln0q5_OQts
Chambers_N
Experienced Forum User
Joined: 7/21/2017
Posts: 54
Rumor has it that someone found a credits warp by falling into the water on stage one, may have used pauses and other manipulations during the death to do this. Any one else hear about this and have video footage concerning it?
Chambers_N
Experienced Forum User
Joined: 7/21/2017
Posts: 54
Thanks for your help. I did a TAS in 10:39.763 for this game. :D
Chambers_N
Experienced Forum User
Joined: 7/21/2017
Posts: 54
So counting frames does not seem to be a good way to compare runs, seems to me that YUA may recognize the frame rate of the video and converts it to appropriate time, do you guys confirm that?
Chambers_N
Experienced Forum User
Joined: 7/21/2017
Posts: 54
Should be about 10:40.039, rounding down to whole number and seeing the time display in yua for that many frames.
Chambers_N
Experienced Forum User
Joined: 7/21/2017
Posts: 54
Lol, I am not very good at math, I couldn't think of that series of calculations to be honest, thank you.
Chambers_N
Experienced Forum User
Joined: 7/21/2017
Posts: 54
My new TAS frame count is 38466 so what time does that calculate to if that was 59.94 fps? If this was 60.099 fps then how does that work? This is all new to me. Also, I use a splitter based on what I see on my tv and that correlates to my frame count on my direct feed.
Chambers_N
Experienced Forum User
Joined: 7/21/2017
Posts: 54
I got the frame count from the TAS editor for the tas frames. My frames are taken from the direct feed which according to amerec is 29.97. I also did an avi of both a bizhawk video and an avi from a movie down on the emu without tas editor and the frames were both 4285. I also checked the video by peanutfan22, and he is faster than the tas but a tad slower than mine. He is using Nestopia I believe.
Chambers_N
Experienced Forum User
Joined: 7/21/2017
Posts: 54
This is curious. So Bizhawk reaches a pixel in 100 frames, and my NES reaches it in 99.7 frames it seems. And so my run slowly and consistently keeps pulling ahead. I was told that my NES could not be running fast because it would still have to sync with video output or something like that. I will see about getting some screenshots of some things.
Chambers_N
Post subject: NES Paperboy
Experienced Forum User
Joined: 7/21/2017
Posts: 54
I have ran NES Paperboy on a front loader NES with an everdrive, and I also TASed it using Bizhawk, this would be a new TAS to surpass the old one. However, despite the fact that the tas editor allows you to modify frame by frame my run of Monday was 4272 frames, but TAS required 4285 frames. There is no lag frames on this day and it is the fastest the day can be accomplished. After TASing it I compared the frame count to the frame count of my recent world record run, and the amount of frames it took me to complete each day ran almost exactly 99.7% of what was required in Bizhawk, using NesHawk. This is very strange. I first thought that maybe my NES was consistently running faster but again I have compared my runs to other player runs and they are comparable. I used three forms of verification to get the frame count of my run on original hardware: 1) Viewing the timer value in LiveSplit on first and last frame, 2) frame analysis of OBS capture of the game, and 3) frame analysis in Yua after deinterlacing the direct feed recorded by Amarec. Here is the BK2 file for the first version of my TAS since my next version is not completed yet. You will also find in here the direct feed of my world record run and a video of the BK2 file. Placing these side by side you can see what I am talking about: https://drive.google.com/open?id=1k6oFIsPaWaBeFjnNrkib-_yhxXwFhRU3 Also, here is the run the TAS is based on: https://www.youtube.com/watch?v=4sESTUcQM10 Any thoughts?
Chambers_N
Experienced Forum User
Joined: 7/21/2017
Posts: 54
I see that the stack is $0174 according to the debugger, and of the values displayed there I do see the 18 and 16 respectively at the beginning, which seem to be address $0175 when I check this in the Hex Editor. When I debug to find what writes to $0175 it shows a subroutine which runs three times per frame E496, and when I check this routine in the trace logger the address $0175 is never involved. It is a curious thing that it should be so complicated to track what letter graphic is shown down to why it shows one letter over another.
Chambers_N
Post subject: NES Mickey's Safari in Letterland
Experienced Forum User
Joined: 7/21/2017
Posts: 54
Quick question. I was looking into memory addresses that seem to be involved with what letter one will get at the end of each level. I tested this out and found that when 000E is unsigned 64 the letter will be "W", and if it is unsigned 80 it will be a "Y". 000E seems to be used for other things, but I did notice that it seems to be involved when the letter is revealed. I forced an 80 on those frames when it should be a "W" and the top was a "W" and the bottom was a "Y". I looked into the code of what is writing to 000E, as to why this value is different in each case to find what may be the ultimate factor or main memory address involved. Here is a bit of code, they both seem to have A and X registers identical but yet later in the code it seems to function as if the X register is different. Help is appreciated in understanding this. Seems to be different because of instruction ASL, what is this?
$9FAF:20 7D E4  JSR $E47D                                    A:07 X:00 Y:02 S:74 P:nvUbdizc 
             $E47D:85 5D     STA $005D = #$08                             A:07 X:00 Y:02 S:72 P:nvUbdizc 
             $E47F:A9 00     LDA #$00                                     A:07 X:00 Y:02 S:72 P:nvUbdizc 
             $E481:8D 27 00  STA $0027 = #$01                             A:00 X:00 Y:02 S:72 P:nvUbdiZc 
             $E484:A9 07     LDA #$07                                     A:00 X:00 Y:02 S:72 P:nvUbdiZc 
             $E486:05 5C     ORA $005C = #$40                             A:07 X:00 Y:02 S:72 P:nvUbdizc 
             $E488:8D 00 80  STA $8000 = #$A9                             A:47 X:00 Y:02 S:72 P:nvUbdizc 
             $E48B:A5 5D     LDA $005D = #$07                             A:47 X:00 Y:02 S:72 P:nvUbdizc 
             $E48D:8D 01 80  STA $8001 = #$04                             A:07 X:00 Y:02 S:72 P:nvUbdizc 
             $E490:AD 27 00  LDA $0027 = #$00                             A:07 X:00 Y:02 S:72 P:nvUbdizc 
             $E493:D0 EA     BNE $E47F                                    A:00 X:00 Y:02 S:72 P:nvUbdiZc 
             $E495:60        RTS (from $E47D) --------------------------- A:00 X:00 Y:02 S:72 P:nvUbdiZc 
           $9FB2:68        PLA                                          A:00 X:00 Y:02 S:74 P:nvUbdiZc 
          $9FB3:0A        ASL                                          A:18 X:00 Y:02 S:75 P:nvUbdizc 
          $9FB4:AA        TAX                                          A:30 X:00 Y:02 S:75 P:nvUbdizc 
          $9FB5:BD 74 BF  LDA $BF74,X @ $BFA4 = #$50                   A:30 X:30 Y:02 S:75 P:nvUbdizc 
          $9FB8:85 0E     STA $000E = #$E0                             A:50 X:30 Y:02 S:75 P:nvUbdizc 
          $9FBA:BD 75 BF  LDA $BF75,X @ $BFA5 = #$BF                   A:50 X:30 Y:02 S:75 P:nvUbdizc 
          $9FBD:85 0F     STA $000F = #$01                             A:BF X:30 Y:02 S:75 P:NvUbdizc 
          $9FBF:A0 04     LDY #$04                                     A:BF X:30 Y:02 S:75 P:NvUbdizc 
          $9FC1:B1 0E     LDA ($0E),Y @ $BF54 = #$62                   A:BF X:30 Y:04 S:75 P:nvUbdizc 
          $9FC3:85 A6     STA $00A6 = #$76                             A:62 X:30 Y:04 S:75 P:nvUbdizc 
          $9FC5:C8        INY                                          A:62 X:30 Y:04 S:75 P:nvUbdizc 
          $9FC6:B1 0E     LDA ($0E),Y @ $BF55 = #$63                   A:62 X:30 Y:05 S:75 P:nvUbdizc 
          $9FC8:85 A7     STA $00A7 = #$77                             A:63 X:30 Y:05 S:75 P:nvUbdizc 
Compared to this:
$9FAF:20 7D E4  JSR $E47D                                    A:07 X:00 Y:02 S:74 P:nvUbdizc 
             $E47D:85 5D     STA $005D = #$08                             A:07 X:00 Y:02 S:72 P:nvUbdizc 
             $E47F:A9 00     LDA #$00                                     A:07 X:00 Y:02 S:72 P:nvUbdizc 
             $E481:8D 27 00  STA $0027 = #$01                             A:00 X:00 Y:02 S:72 P:nvUbdiZc 
             $E484:A9 07     LDA #$07                                     A:00 X:00 Y:02 S:72 P:nvUbdiZc 
             $E486:05 5C     ORA $005C = #$40                             A:07 X:00 Y:02 S:72 P:nvUbdizc 
             $E488:8D 00 80  STA $8000 = #$A9                             A:47 X:00 Y:02 S:72 P:nvUbdizc 
             $E48B:A5 5D     LDA $005D = #$07                             A:47 X:00 Y:02 S:72 P:nvUbdizc 
             $E48D:8D 01 80  STA $8001 = #$04                             A:07 X:00 Y:02 S:72 P:nvUbdizc 
             $E490:AD 27 00  LDA $0027 = #$00                             A:07 X:00 Y:02 S:72 P:nvUbdizc 
             $E493:D0 EA     BNE $E47F                                    A:00 X:00 Y:02 S:72 P:nvUbdiZc 
             $E495:60        RTS (from $E47D) --------------------------- A:00 X:00 Y:02 S:72 P:nvUbdiZc 
           $9FB2:68        PLA                                          A:00 X:00 Y:02 S:74 P:nvUbdiZc 
          $9FB3:0A        ASL                                          A:16 X:00 Y:02 S:75 P:nvUbdizc 
          $9FB4:AA        TAX                                          A:2C X:00 Y:02 S:75 P:nvUbdizc 
          $9FB5:BD 74 BF  LDA $BF74,X @ $BFA0 = #$40                   A:2C X:2C Y:02 S:75 P:nvUbdizc 
          $9FB8:85 0E     STA $000E = #$E0                             A:40 X:2C Y:02 S:75 P:nvUbdizc 
          $9FBA:BD 75 BF  LDA $BF75,X @ $BFA1 = #$BF                   A:40 X:2C Y:02 S:75 P:nvUbdizc 
          $9FBD:85 0F     STA $000F = #$01                             A:BF X:2C Y:02 S:75 P:NvUbdizc 
          $9FBF:A0 04     LDY #$04                                     A:BF X:2C Y:02 S:75 P:NvUbdizc 
          $9FC1:B1 0E     LDA ($0E),Y @ $BF44 = #$5E                   A:BF X:2C Y:04 S:75 P:nvUbdizc 
          $9FC3:85 A6     STA $00A6 = #$76                             A:5E X:2C Y:04 S:75 P:nvUbdizc 
          $9FC5:C8        INY                                          A:5E X:2C Y:04 S:75 P:nvUbdizc 
          $9FC6:B1 0E     LDA ($0E),Y @ $BF45 = #$5F                   A:5E X:2C Y:05 S:75 P:nvUbdizc 
          $9FC8:85 A7     STA $00A7 = #$77                             A:5F X:2C Y:05 S:75 P:nvUbdizc 
Chambers_N
Experienced Forum User
Joined: 7/21/2017
Posts: 54
You can find the following attachments by following the link below: 1) Disassembly for Chou-Wakusei Senki - MetaFight (J).nes 2) Three text files compiled by Trace Logger taking a one frame snapshot of when $03FB is referenced. https://forums.nesdev.com/viewtopic.php?f=2&t=16512&p=205015#p205011 1) TASed FM2 file of Metafight up to and defeating the second Boss https://forums.nesdev.com/viewtopic.php?f=2&t=16512&p=205015#p205012 1) Five Save States for Chou-Wakusei Senki - MetaFight (J).nes https://forums.nesdev.com/viewtopic.php?f=2&t=16512&p=205015#p205015
Chambers_N
Experienced Forum User
Joined: 7/21/2017
Posts: 54
I don't remember seeing this link in this thread of when this occurred to Skavenger during AGDQ 2017. Click on Link to Video below the video to jump straight to the Boss Skip. Or just search to 28m 57s. Link to video
Chambers_N
Experienced Forum User
Joined: 7/21/2017
Posts: 54
Is Boss 5 the only boss that have been observed not to spawn along with the item not spawning? Or has this double not spawn occurred any where else?
Chambers_N
Experienced Forum User
Joined: 7/21/2017
Posts: 54
The following are ideas that I have examined concerning what could have occurred. This list at least helps to rule out some possibilities and should help to stir further thought. First some basic information. Also all of my investigation concerns the Japan rom Chou-Wakusei Senki - MetaFight (J).nes Pertenient Addresses - $0014 = This is the Area Locator, this tells the code where you are. - $03FB = This is the Boss Kill Accumulator. Each time you kill a Boss this address updates, adding 2 to the power of $0014 value. - $B62B = This is a basic value store that is a value of 1 most of the time, but on pause and death transitions is temporarily used but then reverts back to its base value. Likewise, $B62C is a value of 2. This will be important later. - $03FD = This seems to be a Boss Counter. When the Boss begins to load it jumps from 0 to 255 and then decrements each frame down to 0, at which point the Boss begins to move. Once the Boss is defeated and stops moving this address runs from 0 to 128 incrementing once every two frames. Once this value gets 128 then $03FB updates. The value remains 128 until the next Boss loads. Pertenient Code This subroutine runs a total of three times during the boss fight. Once before, once upon death of boss, and then before item appears. It basically checks to see where you are located, first to see if that Boss has been defeated when entering the room, then again to see if the Boss was killed, and if so, it checks again to before spawning the item appropriate for that area.
$9624:20 1A 97  JSR $971A                         A:00 X:0A Y:00 S:FB P:nvUbdIZC ;Jump to Subroutine $971A
      $971A:A5 14     LDA $0014 = #$00            A:00 X:0A Y:00 S:F9 P:nvUbdIZC ;Load value at $0014 into A Register
      $971C:29 07     AND #$07                    A:00 X:0A Y:00 S:F9 P:nvUbdIZC ;Bitwise AND Immediate Mode
      $971E:AA        TAX                         A:00 X:0A Y:00 S:F9 P:nvUbdIZC ;Transfer A value into X Register
      $971F:BD 2B B6  LDA $B62B,X @ $B62B = #$01  A:00 X:00 Y:00 S:F9 P:nvUbdIZC ;Load ($B62B + X) into A. If X = 1 then $B62C
      $9722:60        RTS (from $971A) -----------A:01 X:00 Y:00 S:F9 P:nvUbdIzC ;Return from Subroutine $971A
There are only two occasions when I observe $03FB gets written to. First, when the game initializes its memory...
STA $0300,X @ $03FB = #$00 ;Initializing memory, setting address to zero
And then shortly after you defeat the Boss.
$97A7:0D FB 03  ORA $03FB = #$00               A:01 X:00 Y:00 S:F9 P:nvUbdIzC ;Bitwise OR Zero Page Mode
$97AA:8D FB 03  STA $03FB = #$00               A:01 X:00 Y:00 S:F9 P:nvUbdIzC ;Store A value into $03FB
Hypothesis #1 Rom Modification/Corruption Basically any alteration of the code in address $03FB to initialize as a value of 2 instead of 0 at the beginning of the game would cause the boss not to spawn in area 2 but everything else would function the same. The same is true if the Rom was modified so that $B62C had a base value of 1 instead of 2. Nothing else would be effected it seems. Hypothesis #2 $0014 Confusion $0014 tracks where you are located in the game and is part of the code that executes to check if the boss needs to spawn. If this value was different then the comparision results would be different. Subroutine $971A loads the value of $0014 into the A Register, this is then transfered to X, and this determines whether it will compare $03FB with $B62B or if it will, for example in the case of X having a value of 1, compare $03FB with $03FC, etc. The problem is that when $0014 is altered via Lua Script it causes graphical problems and your character essentially warps to the other location since the game thinks that you are there. This would be easily seen in the run if this were ever to occur. Therefore, it is reasonable to assume that $0014 is always functioning correctly. Hypothesis #3 Wrong Value in $B62C It would be possible for the second Boss to be skipped if $B62C were a different value than its base value of 2. This is one of the addresses that is involved in the comparison with $03FB. Since in the second Boss area $0014 will be a 1, and since this value is transfered to the X register, then $B62B,X will always be $B62C, so there is no way it will reference any other address during this check, since we have concluded that $0014 was functioning correctly. If $B62C was a different value, such that it was a 1 value instead of 2, then the second Boss would be skipped because the Equal check with $03FB having a value of 1 would check out. I would need to see how the 2 value is written to this address throughout gameplay to determine it this value could be altered through any other means. I have observed that $B62C does temporarily change when loading the screen after death and after unpausing the game, but then this value reverts back to the base number 2. I have paused the game one frame before Subroutine $971A occurs and then unpaused the game to manipulate $B62C to change but the $971A Subroutine does not execute until 7 frames after $B62C reverts back to 2. Therefore the only manipulation of this address can not be used to confuse the subroutine. However, as good as this sounds, the $971A Subroutine also runs just before spawning the item and if $B62C was the cause of the Boss not spawning, this would also cause the item not to spawn. This has been observed, and one simple explanation is that one of these B6xx addresses were a different value than it is supposed to be upon check. But if this is the case, then we have two different issues that occur. One where an $B6xx address is not what it is supposed to be and something else. I would like to think that the two observations, no boss with item, and no boss without item, are related to the same issue. Hypothesis #4 Additional Increments to $03FB As we have observed by looking at the $971A Subroutine, assuming our conclusion that $0014 will always be correct, and assuming that there is no way to alter the $B62C value, then $03FB will always update with the appropriate value upon defeating the Boss. Could it be possible that this bit of code ran twice upon defeating the Boss or executed some other occasion during the run? If the code ran before the first boss kill in the area before you are the large walking character then $0014 would be an 8 and so the value of $03FB would be 2 to the power of 8, which is a very large number. If it occured while you are the large walking character then this would update $03FB with a 1 and therefore it would also skip the first Boss. If dual execution occurred after defeating the first Boss then this would be a value of 2 which is sufficient to skip the second Boss. Likewise, if the Boss death update to $03FB occurred while large walking character just before the second Boss fight then it would update to a 3 which is also sufficient to defeat the Boss. Is it possible for this code to execute some other time? Could it execute twice upon defeating the first Boss? While I think that the second is more likely to occur because it is actually being executed at that time, it does seem unlikely that it would update twice, and upon closer examination I suspect that this will be the case, but is still a stone to be turned. Hypothesis #5 Overflow to Address $03FB This hypothesis has basically been explained by vaxherd but wanted to document it again in this list. "The only indexed stores that could reach $03FB are the stores to the PPU RAM write buffer at $0300. I played up to area 2 to check, but the buffer high water mark was $0340, and a cursory review of the code suggests it's pretty good at flushing the buffer before it overflows, so it seems unlikely to me that a buffer overflow is the cause. (Also, in order to have disabled only the second boss, the store value would have to have been $02 or $03, which seems unlikely for an arbitrary PPU data store; and if the buffer overflowed all the way up to $03FB then it would stomp on lots of other stuff in the $03xx range, which would probably cause more problems than just a missing boss.)" The search continues...
Chambers_N
Experienced Forum User
Joined: 7/21/2017
Posts: 54
I edited the post, I hope that helped.
Chambers_N