Former player
Joined: 5/4/2005
Posts: 502
Location: Onett, Eagleland
Yes it can, I've done one for teenage mutant ninja turtles in time for SNES. As long as the game is using collision boxes that is...
I think.....therefore I am not Barry Burton
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11475
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
Here's our partially disasmed code, if you'd feel like looking into it: http://code.google.com/p/feos-tas/source/browse/trunk#trunk%2FDisAssemble%2FBattletoads
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Former player
Joined: 5/4/2005
Posts: 502
Location: Onett, Eagleland
I've updated the scripts, I made a mistake with dracula's box, he has 2 and one is invulnerable and marked clearly with an axis going through the box now. FEOS: If I get time, I will take a look. Also, if you get time please pm on IRC, I'd like to discuss disassembly NES roms in IDA with you if you wouldn't mind.
I think.....therefore I am not Barry Burton
Joined: 3/9/2014
Posts: 13
I recently found that you can crash the game by entering a door while being invincible will crash the game.After some testing on stream on Bizhawk I had some realy weird result mostly warping me to the title screen.Here how the glitch is done on FCEUX http://dehacked.2y.net/microstorage.php/info/412928519/Castlevania%20%28USA%29-0.fm2 I don't know if this glitch is known or their any use for this glitch so that's why I posting it here. If you are interesed in different result I got on stream whit bizhawk here a higlight of me going trough the door whit the glitch http://www.twitch.tv/producks/c/4206168
Editor, Active player (297)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Sounds like soon we will have a total control TAS of this game! EDIT: Because "mostly warping me to the title screen" sounds like it executes some random code. Executing BRK (00) often has the same effect as resetting the game in many games. Debugging the context where the crash happens. Capital-letter comments contain comments relevant to this movie.
;------------------------------------------
GameLogic_DoorScrolling
        $C382  A5 28:       lda CurrentStage
        $C384  C9 12:       cmp #$12
        $C386  D0 0B:       bne +               ; $C393   (THIS BRANCH IS TAKEN)
----    $C388  85 29:       sta $29
        $C38A  A9 0C:       lda #$0C
        $C38C  85 18:       sta GameMode
        $C38E  A9 08:       lda #$08
        $C390  85 19:       sta GameModeAux
        $C392  60:          rts 

+       $C393  20 6A FA:    jsr _func_1FA6A     ; THIS FUNCTION DOES NOTHING OF IMPORTANCE IN THIS CONTEXT
        $C396  A9 00:       lda #$00
        $C398  20 BA 9B:    jsr _func_1BBA      ; CALLS $19BBA (BANK 6, WHICH IS CORRECT)
        $C39B  20 F0 E8:    jsr GameLogic_GameRunning_ObjectAI ; THIS CHANGES THE CURRENT BANK
        $C39E  AD 84 05:    lda ObjectBonusType
        $C3A1  29 03:       and #$03
        $C3A3  85 3C:       sta SimonMovingDirection
        $C3A5  A6 19:       ldx GameModeAux
        $C3A7  D0 26:       bne ++              ; $C3CF   (THIS BRANCH IS TAKEN)
        $C3A9  A5 2E:       lda NumberofLives
        $C3AB  C9 80:       cmp #$80
        $C3AD  F0 17:       beq +               ; $C3C6
---     $C3AF  20 0B 99:    jsr _func_190B
        $C3B2  A0 04:       ldy #$04
        $C3B4  20 D6 C1:    jsr SwitchBank_SaveNewBank
        $C3B7  20 EA F5:    jsr _func_1F5EA
        $C3BA  20 D4 C1:    jsr SwitchBank_Bank6
        $C3BD  A5 3C:       lda SimonMovingDirection
        $C3BF  49 03:       eor #$03
        $C3C1  85 3C:       sta SimonMovingDirection
        $C3C3  4C B7 98:    jmp _loc_198B7

+       $C3C6  20 74 C4:    jsr _func_1C474
        $C3C9  20 A4 C4:    jsr _func_1C4A4
        $C3CC  4C FB C3:    jmp +++             ; $C3FB -> _loc_1C365

++      $C3CF  CA:          dex 
        $C3D0  D0 2C:       bne ++++            ; $C3FE (THIS BRANCH IS TAKEN)
        $C3D2  A5 1A:       lda FrameCounter
        $C3D4  29 0F:       and #$0F
        $C3D6  D0 0D:       bne +               ; $C3E5
        $C3D8  E6 25:       inc $25
        $C3DA  A5 25:       lda $25
        $C3DC  C9 02:       cmp #$02
        $C3DE  D0 05:       bne +               ; $C3E5
        $C3E0  A9 1D:       lda #$1D
        $C3E2  20 A7 C1:    jsr PlaySFX
+       $C3E5  A5 25:       lda $25
        $C3E7  C9 03:       cmp #$03
        $C3E9  F0 07:       beq +               ; $C3F2
        $C3EB  18:          clc 
        $C3EC  69 1C:       adc #$1C
        $C3EE  8D 1F 03:    sta $031F
        $C3F1  60:          rts 

+       $C3F2  A9 01:       lda #$01
        $C3F4  85 1A:       sta FrameCounter
        $C3F6  C6 25:       dec $25
        $C3F8  4C FB C3:    jmp +++             ; $C3FB -> _loc_1C365

+++ --  $C3FB  4C 65 C3:    jmp _loc_1C365

++++    $C3FE  CA:          dex 
        $C3FF  D0 17:       bne ++              ; $C418
        $C401  A2 B0:       ldx #$B0
        $C403  AD 84 05:    lda ObjectBonusType
        $C406  C9 01:       cmp #$01
        $C408  F0 02:       beq +               ; $C40C
        $C40A  A2 50:       ldx #$50
+       $C40C  8A:          txa 
        $C40D  CD 8C 03:    cmp ObjectScreenXcoordInt
        $C410  F0 E9:       beq --              ; $C3FB -> _loc_1C365
        $C412  20 58 94:    jsr _func_1458      ; CALLS $15458 (BANK 5), SHOULD CALL $19458 (BANK 6)
        $C415  4C B7 98:    jmp _loc_18B7       ; JUMPS $158B7, SHOULD JUMP TO $198B7 -- EXECUTES GARBAGE CODE -- GAME CRASHES

++      $C418  CA:          dex 
        $C419  D0 27:       bne ++              ; $C442
        $C41B  A5 1A:       lda FrameCounter
        $C41D  29 07:       and #$07
        $C41F  D0 02:       bne +               ; $C423
        $C421  C6 25:       dec $25
+       $C423  A5 25:       lda $25
        $C425  F0 07:       beq +               ; $C42E
        $C427  18:          clc 
        $C428  69 1C:       adc #$1C
        $C42A  8D 1F 03:    sta $031F
        $C42D  60:          rts 

+       $C42E  A9 1D:       lda #$1D
        $C430  20 A7 C1:    jsr PlaySFX
        $C433  A9 00:       lda #$00
        $C435  8D 1F 03:    sta $031F
        $C438  20 A8 C4:    jsr _func_1C4A8
        $C43B  A9 30:       lda #$30
        $C43D  85 25:       sta $25
        $C43F  4C FB C3:    jmp --              ; $C3FB -> _loc_1C365

++      $C442  CA:          dex 
        $C443  D0 05:       bne +               ; $C44A
        $C445  C6 25:       dec $25
-       $C447  F0 B2:       beq --              ; $C3FB -> _loc_1C365
        $C449  60:          rts 

+       $C44A  CA:          dex 
        $C44B  D0 08:       bne +               ; $C455
        $C44D  A5 2E:       lda NumberofLives
        $C44F  F0 F6:       beq -               ; $C447 -> $C3FB
        $C451  4C AF C3:    jmp ---             ; $C3AF

        $C454               .byte $60
+       $C455  AD 50 04:    lda ObjectUnknown450
        $C458  D0 02:       bne +               ; $C45C
        $C45A  E6 28:       inc CurrentStage
+       $C45C  20 96 A2:    jsr _func_2296
        $C45F  20 94 C9:    jsr _func_1C994
        $C462  20 BD CF:    jsr _func_1CFBD
        $C465  20 62 D1:    jsr _func_1D162
        $C468  20 C3 C8:    jsr _func_1C8C3
_loc_1C46B
        $C46B  A9 05:       lda #$05
        $C46D  85 18:       sta GameMode
        $C46F  A9 06:       lda #$06
        $C471  85 19:       sta GameModeAux
        $C473  60:          rts 
;------------------------------------------
So GameLogic_GameRunning_ObjectAI at $E8F0 does something wrong when the amphora is active. Let's see what:
GameLogic_GameRunning_ObjectAI
        $E8F0  A5 5B:       lda $5B
        $E8F2  F0 0B:       beq +               ; $E8FF
        $E8F4  A5 1A:       lda FrameCounter
        $E8F6  29 01:       and #$01
        $E8F8  D0 05:       bne +               ; $E8FF
        $E8FA  C6 5B:       dec $5B
        $E8FC  20 06 FB:    jsr _func_1FB06     ; THIS FUNCTION MESSES UP THE BANK NUMBER
+       $E8FF  A0 00:       ldy #$00
        $E901  A5 2B:       lda $2B
        $E903  F0 02:       beq +               ; $E907
        $E905  A0 20:       ldy #$20
+       $E907  84 7C:       sty $7C
        $E909  20 08 EB:    jsr _func_1EB08     ; THIS FUNCTION DOES NOTHING OF IMPORTANCE IN THIS CONTEXT
                            ; Delay loop begin: 6 cycles (2.0 cycles per byte); ends at $1E90F
        $E90C  EA:          nop 
        $E90D  EA:          nop 
        $E90E  EA:          nop 
                            ; End of delay loop (3 bytes)
        $E90F  20 FF E3:    jsr GameLogic_GameRunning_WhipCollisionTester ; NOTHING IMPORTANT
        $E912  4C 22 E9:    jmp GameLogic_GameRunning_ObjectAI_loop       ; NOTHING IMPORTANT
So what happens in $FB06? Let's go deeper!
_func_1FB06
        $FB06  A5 5B:       lda $5B             ; My guess: $5B = Simon's invincibility counter.
        $FB08  A2 14:       ldx #$14
        $FB0A  C9 80:       cmp #$80            ; Guess: When count=128, transfers the regular palette.
        $FB0C  F0 10:       beq +               ; $FB1E
        $FB0E  C9 40:       cmp #$40
        $FB10  D0 F3:       bne -               ; $FB05 -> rts
        $FB12  A9 1C:       lda #$1C            ; When count=64, transfer the inverse palette for Simon.
        $FB14  20 A7 C1:    jsr PlaySFX         ; And play the sound effect for phasing.
        $FB17  A0 05:       ldy #$05
        $FB19  20 D6 C1:    jsr SwitchBank_SaveNewBank  ; HERE IS WHERE BANK 5 IS SELECTED
        $FB1C  A2 15:       ldx #$15
+       $FB1E  8A:          txa 
        $FB1F  4C 95 CC:    jmp _func_1CC95 ; Reads PPU transfer data from ROM and copies into RAM, returns.
So, the problem here is that when the amphora causes Simon's palette to change, the routine will set a particular ROM bank and will not change it back. Now the fun fact is that GameLogic_GameRunning_ObjectAI is not only called from GameLogic_DoorScrolling. It is also called from GameLogic_Climbing, GameLogic_EnterGateSlowly and of course GameLogic_GameRunning_Body. In GameLogic_GameRunning_Body, the amphora bug cannot cause problems, because the routine explicitly switches to bank 6 after calling GameLogic_GameRunning_ObjectAI. However, there is potential that it might cause problems if the amphora switches colors while Simon is climbing (probably scrolling-related climbing only). This warrants study. Now, the wrong code that it executes at $15458 (bank 5) is by chance some quite harmless code. But $158B7 is where the mayhem happens. This is the disassembly of code AROUND that region:
        $98B3  DE 4C 05:    dec ObjectUnknown54C,x
        $98B6  F0 03:       beq +               ; $98BB
        $98B8  4C A1 97:    jmp _loc_157A1

+       $98BB  20 84 EF:    jsr CalculateObjectXdistance
        $98BE  C9 30:       cmp #$30
        $98C0  B0 03:       bcs +               ; $98C5
-       $98C2  4C C7 97:    jmp _loc_157C7

+       $98C5  29 03:       and #$03
        $98C7  F0 F9:       beq -               ; $98C2 -> _loc_157C7
        $98C9  A0 10:       ldy #$10
        $98CB  A5 1A:       lda FrameCounter
        $98CD  29 01:       and #$01
        $98CF  F0 02:       beq +               ; $98D3
        $98D1  A0 28:       ldy #$28
+       $98D3  98:          tya 
        $98D4  A0 08:       ldy #$08
        $98D6  20 34 ED:    jsr _func_1ED34
        $98D9  4C A1 97:    jmp _loc_157A1
However, because it begins executing at $98B7 and NOT $98B6 or $98B8, here's what it ENDS UP executing... Relatively quite harmless.
        $98B7  03 4C:       slo ($4C,x)
        $98B9  A1 97:       lda ($97,x)
        $98BB  20 84 EF:    jsr CalculateObjectXdistance
... and so on
EXCEPT that this "slo ($4C,x)" apparently ends up reprogramming the mapper. The consecutive instructions starting from $98B9 will actually be read from bank 0. Here's the disassembly from bank 0:
 0098B9 F0 F8       beq $0098B3 <Lbl_000000+6323>
 0098BB C3 F8       dcp ($F8,x)
 0098BD F1 F6       sbc ($F6),y
 0098BF 00 02       brk #$02
 0098C1 F0 FC       beq $0098BF <Lbl_000000+6335>
 0098C3 C3 F8       dcp ($F8,x)
 0098C5 F1 FA       sbc ($FA),y
 0098C7 00 09       brk #$09
 0098C9 C0 91       cpy #$91
 0098CB 03 F4       slo ($F4,x)
 0098CD C1 91       cmp ($91,x)
 0098CF FC C1 91    nop $91C1,x
 0098D2 04 80       KIL $80
 0098D4 E1 93       sbc ($93,x)
 0098D6 09 C0       ora #$C0
 0098D8 93 03       sha ($03),y
 0098DA F4 C1       nop $C1,x
 0098DC 93 FC       sha ($FC),y
 0098DE C1 93       cmp ($93,x)
 0098E0 04 80       KIL $80
 0098E2 F5 93       sbc $93,x
 0098E4 09 C0       ora #$C0
 0098E6 95 03       sta $03,x
 0098E8 F4 C1       nop $C1,x
 0098EA 95 FC       sta $FC,x
 0098EC C1 95       cmp ($95,x)
 0098EE 04 80       KIL $80
 0098F0 09 94       ora #$94
 0098F2 09 D0       ora #$D0
 0098F4 E4 43       cpx $43
 0098F6 F8          sed 
 0098F7 D1 E2       cmp ($E2),y
 0098F9 00 D1       brk #$D1
 0098FB E0 08       cpx #$08
 0098FD F1 E4       sbc ($E4),y
 0098FF F8          sed 
 009900 F1 E6       sbc ($E6),y
 009902 00 F1       brk #$F1
 009904 E6 08       inc $08
 009906 11 EA       ora ($EA),y
 009908 F8          sed 
 009909 11 E8       ora ($E8),y
 00990B 00 11       brk #$11
 00990D E8          inx 
 00990E 08          php 
 00990F 0C D0 F0    nop $F0D0
 009912 43 F0       sre ($F0,x)
 009914 D1 EE       cmp ($EE),y
 009916 F8          sed 
 009917 D1 EC       cmp ($EC),y
 009919 00 D1       brk #$D1
 00991B E0 08       cpx #$08
 00991D F1 F6       sbc ($F6),y
 00991F F0 F1       beq $009912 <Lbl_000000+6418>
 009921 F4 F8       nop $F8,x
 009923 F1 F2       sbc ($F2),y
 009925 00 F1       brk #$F1
 009927 E6 08       inc $08
 009929 11 FA       ora ($FA),y
 00992B F0 11       beq $00993E <Lbl_000000+6462>
 00992D F4 F8       nop $F8,x
 00992F 11 F8       ora ($F8),y
 009931 00 11       brk #$11
 009933 E6 08       inc $08
 009935 01 F0       ora ($F0,x)
 009937 FC 41 FC    nop $FC41,x
 00993A 02 F0       KIL #$F0
The "KIL" instructions here are invalid opcodes that kill the CPU. If the CPU encounters those instructions, it is unrecoverably hung and can only be reset. Somehow Castlevania skillfully evades the minefield of KIL instructions in that listing until it finally hits $993A. At that point, the game is halted and nothing can be done anymore. I did not do a complete trace, but that "slo ($4C,x)" appears to be somehow switching to bank 0. X is $B0 at that point, so what it does it reads a "pointer" from RAM address $FC, and does an ASL with the value at that absolute location. If the value at $FC contains something else, what could happen? With ASL, the only possible outcomes for the value are even values, so we can't consider odd bank numbers. Well, turns out that nothing much. In bank 3 (which this method could not reach) there is some code that _might_ yield potential for arbitrary code execution...
 0398B7 90 FE       bcc $0398B7 <Lbl_000000+55479>
 0398B9 E0 C0       cpx #$C0
 0398BB C0 C0       cpy #$C0
 0398BD A0 C0       ldy #$C0
 0398BF A0 00       ldy #$00
 0398C1 01 00       ora ($00,x)
 0398C3 60          rts 
But that's pretty much it. Nevertheless, I would like to see what happens if the amphora bug is activated in one of those other contexts that I mentioned.
Joined: 3/9/2014
Posts: 13
So I tested a few stuff and I got a bit of result.First climbing stairs whit the amphora even when simon is blue doesn't do anything nothing happen the game just keep going.I found another door I don't know if the crash will be the same trough. http://dehacked.2y.net/microstorage.php/info/398449502/Castlevania%20%28USA%29-2.fm2 Here another movie file but whit me holding select the result are not the same http://dehacked.2y.net/microstorage.php/info/690477754/Castlevania%20%28USA%29-1.fm2
Challenger
He/Him
Skilled player (1689)
Joined: 2/23/2016
Posts: 1061
Good news! A new improvement (11 frames faster): http://tasvideos.org/userfiles/info/40724705976887576 Also, McHazard posted 2 improvements on April: http://tasvideos.org/userfiles/info/38057086532184992 http://tasvideos.org/userfiles/info/38216693731293348 It's possible to save more frames than this new TAS, but results on much less points on some or more stages. ): Also, the lua script (BizHawk) doesn't work for me. EDIT: I'm not going to submit this run. I'm planning to do a true TAS of this game.
My homepage --Currently not much motived for TASing as before...-- But I'm still working.
Active player (261)
Joined: 12/13/2016
Posts: 352
Nice! looking forward to seeing the current run obsoleted! And we can always count on high quality work from you, Challenger!
Editor, Skilled player (1439)
Joined: 3/31/2010
Posts: 2108
Challenger wrote:
Good news! A new improvement (11 frames faster): http://tasvideos.org/userfiles/info/40724705976887576
Duuuuuuude
Active player (309)
Joined: 8/21/2012
Posts: 429
Location: France
Challenger wrote:
It's possible to save more frames than this new TAS, but results on much less points on some or more stages. ):
I'd say, go for the frames first, score second. Except if it's something like losing 2 frames to gain 3x more points on a whole level, maybe... But it will have to be in a note in the submission text anyway. The idea is of course to have a clear primary goal, and not some kind of arbitrary balance between time and score, which could cause little problems for the judging on the site. I encourage other people to give their opinion on this subject. Better discuss it now than when it will be in the workbench... Anyway, good luck with the TAS, revive Castlevania :) Edit: aarrg, I'm an idiot, didn't see the run was already submitted =^.^=
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
Joined: 4/29/2018
Posts: 3
[2:44 PM] Burb: I saw a video made by producks linked in jay_cee's chat last week. But, I believe it to be a fake video made to look like a credits warp by video editing. Because after he died in the water he waited for the sound to go completely silent. Then after pressing start to continue the credits appeared. [2:46 PM] Burb: and reason 2 why I think it's fake is he also made a fake cv2 fds credits warp video linked later the same day. Said he found a credits warp. By doing the day/night transition glitch on his last life, then spawning inside of the blocks where you start. He jumped to the very top left corner of the town and jumped left . Then suddenly credits. Which makes no sense because jumping left even from the top part of the map would still just take you to the lizard screen.. [2:50 PM] Burb: And when I did the same thing with the transition glitch I didn't spawn inside of the blocks. Spawned on the ground like normal. (but it was still daytime even though it was past 6 pm in the game (so gained an extra 12 hours of daytime)) [2:51 PM] Burb: he removed the cv2 video shortly after. might have done the same about the cv1 video. I no longer have the link and it does not show up in my youtube history. (not sure if that is normal for unlisted videos though - if not then he removed it)
Joined: 4/29/2018
Posts: 3
Basically it's probably just ProDucks trolling, though I would love to see some wrong warp action in cv1
Editor, Emulator Coder, Expert player (2156)
Joined: 5/22/2007
Posts: 1134
Location: Glitchvania
Komrade wrote:
[2:44 PM] Burb: I saw a video made by producks linked in jay_cee's chat last week. But, I believe it to be a fake video made to look like a credits warp by video editing. Because after he died in the water he waited for the sound to go completely silent. Then after pressing start to continue the credits appeared. [2:46 PM] Burb: and reason 2 why I think it's fake is he also made a fake cv2 fds credits warp video linked later the same day. Said he found a credits warp. By doing the day/night transition glitch on his last life, then spawning inside of the blocks where you start. He jumped to the very top left corner of the town and jumped left . Then suddenly credits. Which makes no sense because jumping left even from the top part of the map would still just take you to the lizard screen.. [2:50 PM] Burb: And when I did the same thing with the transition glitch I didn't spawn inside of the blocks. Spawned on the ground like normal. (but it was still daytime even though it was past 6 pm in the game (so gained an extra 12 hours of daytime)) [2:51 PM] Burb: he removed the cv2 video shortly after. might have done the same about the cv1 video. I no longer have the link and it does not show up in my youtube history. (not sure if that is normal for unlisted videos though - if not then he removed it)
This reminds me of the myth of the Deborah Warp in Castlevania II.
<klmz> it reminds me of that people used to keep quoting adelikat's IRC statements in the old good days <adelikat> no doubt <adelikat> klmz, they still do
Post subject: Pacifist update - work in progress
Challenger
He/Him
Skilled player (1689)
Joined: 2/23/2016
Posts: 1061
Since I learned more of this game (thanks any% run and Morrison), I'm working on a improvement of "minimalist pacifist" run. Here's a WIP: http://dehacked.2y.net/microstorage.php/info/221180216/grincevent%2Cchallenger-pacifist-castlevania.fm2.bk2.bk2 First 6 stages done. Details: - I'm using TAStudio from BizHawk for the work. - That turnaround without losing X position is still useful. This also helped a new ghost manipulation on stage 01, saving a framerule (16 frames) - also the strategy and stairs are frame perfect! - Improved first boss, using the same any% run strategy - really faster, but 4 frames slower this time due to small hitbox. - Stage 05 second room, that framerule...no way. - Stage 06 first room: Interesting. These crushers, seems for me that works through the global timer - every 16 frames - like the doors. Pausing on right frames can delay the function for +16 frames. Actually I discovered while I was working on the any% run w/Morrison. - A very new strategy for the Medusa boss, as well as an alternate way to perform the critical attack (New! But limited to use, obviously). 231 frames ahead of the published run.
My homepage --Currently not much motived for TASing as before...-- But I'm still working.
Post subject: Re: Pacifist update - work in progress
Editor, Skilled player (1439)
Joined: 3/31/2010
Posts: 2108
Great looking improvement so far. Do keep it up!
Challenger wrote:
- Stage 06 first room: Interesting. These crushers, seems for me that works through the global timer - every 16 frames - like the doors. Pausing on right frames can delay the function for +16 frames. Actually I discovered while I was working on the any% run w/Morrison.
What the hell? I can't believe no one's thought of this before.
Active player (309)
Joined: 8/21/2012
Posts: 429
Location: France
Already 231 frames ahead, you never disappoint ^^. The crouching turnaround will probably help in multiple other places. You'll also be able to gain time on most (or all) bosses, since I think that was the weak(est) point of the old TAS, speed wise. And well done on the Medusa battle, using the ceiling to cancel the knockback when doing a critical. I see that you used my old TAS as a base for some little stuff (moves that are useless but done for "style" or "entertainment") and even put me in the file name, but you didn't have to. Please don't hesitate to do other choices in entertainment, it's your run. Even though I admit that I appreciate the thought of keeping some of the spirit of the previous TAS :P Well, since I've started talking about it, I can share what I was trying to do when doing the old version: trying to make the game look harder than it is in some places. I did make the medusa heads come from both sides in the corridor before Death for example. Also in the last level, on the bridge with the big bats, I did try to manipulate them to be more agressive. Stuff like that. The only parts where I used the music was when waiting before jumping above the axe knights, I made Simon move in sync with the music (as well as I could, crouching, turning back, etc). That's just what I did, you don't have to do the same, I thought it could be useful to mention it in case it can give you ideas for other parts of the game. There are parts that I find "meh" in my run too. The underground section for example, nothing really interesting was done there. Have fun with it :D Go go go, continue the fight, I can't wait to see the next levels!
Challenger
He/Him
Skilled player (1689)
Joined: 2/23/2016
Posts: 1061
Grincevent wrote:
I see that you used my old TAS as a base for some little stuff (moves that are useless but done for "style" or "entertainment") and even put me in the file name, but you didn't have to. Please don't hesitate to do other choices in entertainment, it's your run. Even though I admit that I appreciate the thought of keeping some of the spirit of the previous TAS :P
I imported the published movie to BizHawk (and TAStudio is a great tool). I'll still plan for more things and also update the header to a new .bk2 file.
Grincevent wrote:
The underground section for example, nothing really interesting was done there.
Speaking of underground stage, do you know how the moving platforms exactly works? When I worked on the 2017 any% TAS, initially I changed some things, and ended losing a frame before the moment to jump out of the platform. So, I followed the same input pattern of 2007 any% TAS just to avoid losing time.
My homepage --Currently not much motived for TASing as before...-- But I'm still working.
Active player (309)
Joined: 8/21/2012
Posts: 429
Location: France
Challenger wrote:
Grincevent wrote:
The underground section for example, nothing really interesting was done there.
Speaking of underground stage, do you know how the moving platforms exactly works? When I worked on the 2017 any% TAS, initially I changed some things, and ended losing a frame before the moment to jump out of the platform. So, I followed the same input pattern of 2007 any% TAS just to avoid losing time.
If we're talking about the first platform, all I can think about is a lag frame that I encountered when the merman jumps out of the water. The solution was to just crouch for one frame to prevent it, or jump. I guess that if Simon's sprite is smaller, it's just enough to prevent the game from lagging here. If your lost frame was not due to lag, I really don't know, I didn't analyse the moving platforms too much. But I know that they can trigger weird things; for example, at the end of stage 4, when you jump from below that platform just before the door, the jump is actually longer/higher. Otherwise, I only know that they start their cycle when entering the level and don't have a constant speed from one frame to another, I think (maybe that's the critical part, but I never tried to learn more about it...). Looks like we are only affected by their movement when standing still on them; if we walk, the game doesn't take their movement into account.
Post subject: Second WIP - Level 3 finished
Challenger
He/Him
Skilled player (1689)
Joined: 2/23/2016
Posts: 1061
Dude, this was harder: http://dehacked.2y.net/microstorage.php/info/1520518790/grincevent%2Cchallenger-pacifist-castlevania-wip2.bk2 Starting with stage 7, you need to resync these skeletons. It's possible to manipulate the pattern with some input (even whipping), but some are very tough. Now explaining the WIP: Stage 07: - First room: same as any% run w/Morrison. - Second room: Skipped enemies. Details: My initial plan was taking damage from the bone skeleton, and he could bypass these ravens without problem. I did it, but was 2 frames behind for avoid losing a framerule (16 frames). But I solved this with another strategy: Wait a few frames and the raven will descend below enough to avoid hurting. You can also do the same manipulation with pausing. - The second half of the room is a hell, because since I need to reach the door enough for not lose a framerule, I wasn't able to avoid a lag on the way. So, I finished this stage on the "same" completion time as the any% run (but with an added lag), Stage 08: - Bad luck: An extra lag appeared during the stairs transition. - Second room: Framerule, no way. Stage 09: - With some different strategy, I reached the second skeleton 2 frames earlier. I entered on the boss arena a frame later to get a good pattern for the mummies fight. - The mummies were more tough to optimize than medusa, since you can get a different pattern by entering on different frames. The pause use was to force the right mummy to not turnaround. Manipulating the movement is very important for obvious reasons. Well, actually I could save more frames by reaching the second skeleton a bit earlier, and will stop a bit further, when reaching skeledragon. But the pattern of the mummies will be affected. So, I'll leave out and return to these stages once finished this run. With some big improvements, I'm 665 frames ahead of published run (actually 664 because of power-on from NesHawk). EDIT: I forgot to mention: For the next stage, the boss will be changed to not attack Igor (the "hunchback").
My homepage --Currently not much motived for TASing as before...-- But I'm still working.
Active player (309)
Joined: 8/21/2012
Posts: 429
Location: France
I have nothing interesting to say except that I like the slow walking at the end of the mummies fight (Simon is in bad shape at that point, HP wise). Not hitting Igor on the next boss fight (and Death's scythes later) is a good idea to make the rules of that category more "solid". I don't care if it ends up costing some time, as long as you beat the previous TAS.
Challenger
He/Him
Skilled player (1689)
Joined: 2/23/2016
Posts: 1061
More progress: http://tasvideos.org/userfiles/info/51399407343577960 - Removed 6 lags on stage 10; - Wasn't able to break a framerule on stage 11; - I realized that pausing used to manipulate that skeledragon was a mistake for me: I should have paused a bit later so wasn't need to wait some frames to do this. Definitely saves some frames, and probably could be used on a any% run (haven't tested yet, although I don't know if would mess the RNG - skeletons are annoying). I feel a bit disappointed with myself. - Not only I finished the boss without hitting Igor but I also saved time with a new strategy and manipulation! - I'm still trying to improve the first room of stage 13, but I'm showing because I had removed a bunch of lag.
My homepage --Currently not much motived for TASing as before...-- But I'm still working.
Active player (309)
Joined: 8/21/2012
Posts: 429
Location: France
Challenger wrote:
More progress: http://tasvideos.org/userfiles/info/51399407343577960 - Removed 6 lags on stage 10; - Wasn't able to break a framerule on stage 11; - I realized that pausing used to manipulate that skeledragon was a mistake for me: I should have paused a bit later so wasn't need to wait some frames to do this. Definitely saves some frames, and probably could be used on a any% run (haven't tested yet, although I don't know if would mess the RNG - skeletons are annoying). I feel a bit disappointed with myself. - Not only I finished the boss without hitting Igor but I also saved time with a new strategy and manipulation! - I'm still trying to improve the first room of stage 13, but I'm showing because I had removed a bunch of lag.
Stage 13 is THE laggy part of this run, according to my memory, and all I did to try and mitigate the lag was jumping at some points (using some kind of brute force to try to find the best moments to jump). You're already doing way better by using more techniques and being more methodical. The boss was great, I don't know what else to say. Using the pause to manipulate stuff is useful again and that's nice to see. I didn't even think about using it, even for testing stuff, at the time. In my defense, I'm not a "pro" TASer and more importantly it was my first TAS, but still... I think that if there is a point in the run where I could have discovered the use of the pause, it could have been that skeledragon; but instead I just did find that losing 7 frames before the encounter worked, and I was OK with it, didn't look for another strategy :P Now I'm curious about the very next part, stage 14, if it's possible in that category to damage boost over the wall... And if it's the fastest route through the entire level. Because if it's possible, it would remove another damage boost (life is a precious resource here).
Challenger
He/Him
Skilled player (1689)
Joined: 2/23/2016
Posts: 1061
Remaining of level 5 finished: http://tasvideos.org/userfiles/info/51506129336853324 (1009 frames ahead) Stage 13: - Compared to the last WIP, different manipulaton for that skeleton, so I can across this first room without stopping at all. Jumping can help to avoid lag (although I got 2 lag frames before reaching the stairs). - Thanks to better manipulation, and the turnaround trick, I beat a framerule of the second room (frame perfect). Stage 14: - Same damage boost used on the any% run. This also improved that axe knight so Simon across directly to the stairs. - Somehow I saved time on the axe knight dodge (second room). I tried to manipulate even better, but I don't understand so much. How annoying. But I ended saving a framerule. Also I sacrified some frames to avoid a "new" lag (doesn't affect timing) on the middle of the room. Stage 15: - Turnaround trick, better stairs (first room = total 3 frames), and avoiding another "new" lag (second room). - Not only I fixed that scythe but I also improved the death boss. Improving so much was unexpected for me! I forgot to mention something before: Comparing stage 11 between pacifist and the any% run, it's a framerule (16 frames slower). Could be possible with only 1 turnaround, but how to avoid some flying enemies? No way (and I didn't know if could be manipulated before exiting the underground).
Grincevent wrote:
Stage 13 is THE laggy part of this run, according to my memory, and all I did to try and mitigate the lag was jumping at some points (using some kind of brute force to try to find the best moments to jump).
Exactly, most because of skeletons tossing bones.
Grincevent wrote:
Now I'm curious about the very next part, stage 14, if it's possible in that category to damage boost over the wall... And if it's the fastest route through the entire level. Because if it's possible, it would remove another damage boost (life is a precious resource here).
Tried... and failed, even with some better boost. The red skeleton only stays on the ground.
My homepage --Currently not much motived for TASing as before...-- But I'm still working.
Active player (309)
Joined: 8/21/2012
Posts: 429
Location: France
Challenger wrote:
Grincevent wrote:
Now I'm curious about the very next part, stage 14, if it's possible in that category to damage boost over the wall... And if it's the fastest route through the entire level. Because if it's possible, it would remove another damage boost (life is a precious resource here).
Tried... and failed, even with some better boost. The red skeleton only stays on the ground.
Oops, I meant stage 13 (I should know the numbers by now, I've also done some speedruns of the game...). But I doubt the damage boost we see in the latest any% TAS could be used. It means going up some stairs instead of damage boosting in the previous or next screen, without taking damage. Hard to imagine since there is at least one hunchback (and other enemies) each time. And it would have to still be faster, I have extremely huge doubts ^^. For the other parts of that wip, well, you improved it everywhere where I thought that "maybe it could be improved" and more. The fight against Death is great. (told you you would save time on the bosses :P )