ZSR Forums
May 16, 2024, 01:17:36 PM *
Welcome, Guest. Please login or register.

Login with username, password and session length
News: ZSR Forums are back - read only!
 
   Home   Help Search Members Login Register  
Pages: [1] 2
  Print  
Author Topic: Rethinking Completion Requirements  (Read 13027 times)
Bonooru
Regular Guay

Posts: 116



« on: February 21, 2012, 06:40:25 PM »

Does getting to the credits via wrong warping actually count as "completing" the game? It seems to me that sequence breaking into the credits is a neat trick but you haven't completed the game so it shouldn't count. Analogy super fun time: If you are trying to read a book as quickly as possible being completely ok with skipping bits along the way, do you jump to the last page or do you read the acknowledgements at the end? you read the last page not the acknowledgements.

I guess that the point that Im trying to make is that I think that the final credits cutscene is the acknowledgements (giving the people who helped make the game credit, you know like credits...) and not the true end of the game. I think that the game ends when you beat ganon, that is the last significant thing that the player does in the game and so it ends the game. The cutscene afterwards is just a bonus to wrap up the story.

*prepares to dodge the incoming wave of dissent
« Last Edit: February 22, 2012, 03:07:00 AM by Bonooru » Logged
D U F I
Regular Guay

Posts: 71


Email
« Reply #1 on: February 21, 2012, 06:55:22 PM »

lol
Logged
Slowking
Regular Guay

Posts: 146



« Reply #2 on: February 21, 2012, 06:57:31 PM »

no! I will not have this discussion here, too!
Logged

14:10 MrGrunz: keep your ass close to him
14:10   MrGrunz: and nothing can go wrong
aleckermit
Mega Guay

Posts: 523


back in green


WWW Email
« Reply #3 on: February 21, 2012, 07:01:37 PM »

The goal of Any% has always been to reach the credits cutcene. The only reason "Beat Ganon" has been a phrase used for finishing the game is because we didn't think it was possible to skip Ganon.
Logged

http://youtube.com/aleckermit

<@Swordless> Have you had this problem before? A game not starting until you cleaned it?
RingRush
Moderator
Special Guay

Posts: 330



Email
« Reply #4 on: February 21, 2012, 07:43:26 PM »

Casual Angle of Attack: Is the introduction part of the game? I think many speedrunners and most casual players think the game starts at the beginning of the intro. Why then would the run not terminate at the end at the ending of the outro? Time stopping at Ganon was because that was a direct and convenient representation of your final time (and partially it was a remenant of SDA timing, where what matters is first and last non-cutscene input that takes you to the end of the credits).

Technical Angle of Attack: Remember how we use glitching because we don't care about what people "think" is playing the game? We will skip to the ending because we don't care about what people "think" ends the game. I don't understand how people can argue that Ganon is the ending over a screen that EXPLICITLY SAYS "THE END". How is this up to interpretation? THE END is the end. It maybe anticlimactic, and it may not "feel right", but we don't care about what "feels right" (like seriously, does RBA "feel right" to anyone?)

WARNING: TECHNICAL STUFF AHEAD

I copied this post from TASVideos. It was from a thread on Super Mario World, which was completed in a similar way (jump to The End screen using glitchs).

Quote
No you can not move Mario. The game no longer is in a level, it it has changed its mode of processing entirely. In this glitch the game mode is changed to #$26 (as I explained like three times now). But let me bring the actual code into this now:

First lets talk about how SMW actually processes its game loop. There is a small infinite loop that basically checks if NMI has run, and once it has it will run a routine called "RunGameMode". So lets take a look at the game loop:


GameLoop:
        LDA $10                       ;$00806B        |\ Main wait loop
        BEQ GameLoop                  ;$00806D        | | $10 is set in NMI to $00
        CLI                           ;$00806F        | | Enable interrupts
        INC $13                       ;$008070        | | Increment frame counter
        JSR RunGameMode               ;$008072        | | Run the game
        STZ $10                       ;$008075        | | Clear $10
        BRA GameLoop                  ;$008077        |/ Back to the wait loop



As you can see, the game simply runs in an infinite loop. So the real important thing to us is what happens in the different game modes. So lets take a look at the routine next.


RunGameMode:
   LDA.w $0100                   ;$009322        | Load the current game mode
   JSL ExecutePtr                ;$009325        | Call the execute pointer routine



Simple enough, So what does this mean? It means there are a series of pointers that control game execution.

So here are the important game mode pointers to us, I have snipped non-important ones.


*snip*
dw InLevelGameMode                    ; 14 - In level
*snip*
dw CODE_009F6F                        ; 26 - Fade to the end
dw CODE_00963D                        ; 27 - load the end
dw CODE_009F7C                        ; 28 - Fade in to the end
dw Return00968D                       ; 29 - END (last game mode in SMW)



In game mode 14 is when you are controlling Mario and the level is executing as normal. The code for game mode 14 is huge, I won't torture you with that unless you want to see the code for it.

Game mode 26 is the code there the game will fade out to enter F-Blank (brightness of 00 with the negative bit set) in preparation for game mode #$27 to upload graphics.


CODE_009F4C:
        LDA.w $0DAE                   ;$009F4C        |\ Calculate the current brightness step
        CLC                           ;$009F4F        | |
        ADC.w DATA_009F2F,Y           ;$009F50        | |
        STA.w $0DAE                   ;$009F53        |/ Store the current brightness ($2100 mirror)
        CMP.w DATA_009F33,Y           ;$009F56        |\ If the brightness has not reached the desired brightness
        BNE CODE_009F66               ;$009F59        |/
        INC.w $0100                   ;$009F5B        | Increment the game mode (putting you at game mode #$27)
        LDA.w $0DAF                   ;$009F5E        |\ Flip the Mosaic/Fade direction
        EOR.b #$01                    ;$009F61        | |
        STA.w $0DAF                   ;$009F63        |/
CODE_009F66:
        LDA.b #$03                    ;$009F66        |\ Copy the mosaic mirror to the mosaic register
        ORA.w $0DB0                   ;$009F68        | |
        STA.w $2106                   ;$009F6B        |/
Return009F6E:
        RTS                           ;$009F6E        | Done with game mode 26

CODE_009F6F:
        DEC.w $0DB1                   ;$009F6F        |\ Keep the current game mode active
        BPL Return009F6E              ;$009F72        | |
        JSR KeepModeActive            ;$009F74        |/
CODE_009F77:
        LDY.w $0DAF                   ;$009F77        |\ Load the current Mosaic/Fade direction
        BRA CODE_009F4C               ;$009F7A        |/ Branch to an earlier portion of code



Game mode #$27 is where the actual graphics are uploaded. This game mode simply prepares the screen in F-Blank.


CODE_00963D:
        JSR CODE_0085FA               ;$00963D        | Turns off IO and does some DMA
        JSR Clear_1A_13D3             ;$009640        | Clean RAM $131A to $13D3
        JSR SetUpScreen               ;$009643        | Do some screen setup
        JSR CODE_00955E               ;$009646        | Upload the layer graphics to VRAM
        LDA.b #$19                    ;$009649        |\ Set some screen properties(such as palette settings)
        STA.w $192B                   ;$00964B        | |
        LDA.b #$03                    ;$00964E        | |
        STA.w $192F                   ;$009650        | |
        LDA.b #$03                    ;$009653        | |
        STA.w $1930                   ;$009655        |/
        JSR UploadSpriteGFX           ;$009658        |\ Upload the palette and graphics
        JSR LoadPalette               ;$00965B        |/
        LDX.b #$0B                    ;$00965E        | Load the loop index
CODE_009660:                          
        LDA.w TheEndPalettes,X        ;$009660        |\ Do some palette corrections
        STA.w $08A7,X                 ;$009663        | |
        LDA.w DATA_00B71A,X           ;$009666        | |
        STA.w $08C7,X                 ;$009669        | |
        LDA.w DATA_00B726,X           ;$00966C        | |
        STA.w $08E7,X                 ;$00966F        | |
        DEX                           ;$009672        | |
        BPL CODE_009660               ;$009673        |/
        JSR CODE_00922F               ;$009675        | DMA the palettes to CGRAM (they were in mirrors before)
        LDA.b #$D5                    ;$009678        |\ Set and load a layer three image (THE END text)
        STA $12                       ;$00967A        | |
        JSR LoadScrnImage             ;$00967C        |/
        JSL CODE_0CAADF               ;$00967F        | Copy some sprites to OAM (the characters)
        JSR CODE_008494               ;$009683        | Run the OAM size table routine
        LDX.b #$14                    ;$009686        |\ Useless loads, probably old leftover code
        LDY.b #$00                    ;$009688        |/
        JMP CODE_009622               ;$00968A        | Jump ahead
                                      
CODE_009622:                          
        JSR KeepModeActive            ;$009622        | Keep the game mode active(unused since there is no $0DB1 check)
        LDA.b #$09                    ;$009625        |\ Set the background mode
        STA $3E                       ;$009627        |/
        JMP CODE_0093EA               ;$009629        | Jump ahead
                                      
CODE_0093EA:                          
        LDA.b #$01                    ;$0093EA        |\ Set to the cutscene mode
        STA.w $0D9B                   ;$0093EC        |/
        LDA.b #$20                    ;$0093EF        |\ Update some screen settings
        JSR ScreenSettings            ;$0093F1        |/
        INC.w $0100                   ;$0093F4        | Increment the game mode
        LDA.b #$81                    ;$0093F7        |\ Renable NMI
        STA.w $4200                   ;$0093F9        |/
        RTS                           ;$0093FC        | Done with game mdoe #$27




Game mode #$28 is a small game mode that shares most of the code with #$26. This game mode is responsible for doing the fade-in effect.


CODE_009F7C:
        DEC.w $0DB1                   ;$009F7C        |\ Check if the game mode should be kept active
        BPL Return009F6E              ;$009F7F        |/
        LDA.b #$08                    ;$009F81        |\ Set the number of frames to delay the fade-in steps
        JSR CODE_009F2B               ;$009F83        |/
        BRA CODE_009F77               ;$009F86        | Run the fade code from game mode #$26 (opposite direction)



And lastly, game mode #$29. The simplest one of them all.



Return00968D:
   RTS



Thats it. The game just simply returns. It has nothing more to do. For all intents and purposes, the game is done with execution.

Hopefully this helps clarify what a "winning" state in SMW is.


And hopefully this helps clarify that winning is hard coded into games (or at least, games that require a manual reset after The End like Ocarina of Time). You don't need to completely understand the code (I know I don't), just pay attention to the annotations especially about the game modes and how game mode 29 is a state that sets the game to be finished. Whatever the game mode 29 equivalent is for Ocarina of Time, we've reached it. Someone brought up in a different chat about the infinite credits loop, which we can put ourselves in. That isn't beating the game precisely because the game won't play out until The End and obtain the "game completed" game state.

If you wrong warp to the Fire Temple it would be ridiculous to say "I am not in the Fire Temple", as the game code proves otherwise. Likewise, if you wrong warp to the credits and reach The End, it would be ridiculous to say "I have not reached the end".
« Last Edit: February 21, 2012, 08:16:07 PM by RingRush » Logged

ded
Bonooru
Regular Guay

Posts: 116



« Reply #5 on: February 21, 2012, 08:14:58 PM »

All right, my issues have been dealt with. Carry on
Logged
RingRush
Moderator
Special Guay

Posts: 330



Email
« Reply #6 on: February 21, 2012, 09:36:34 PM »

I will now hijack this topic for my own question. Someone can split this if this ends up going back to the original topic.

Should we require killing Ganon in 100%? Should we ban RBA/BA altogether in 100% in light of all the new and previous controversies? Discuss.


Edit: For the record I believe in banning RBA/BA completely in 100%, since it is solves so many amiguities and replaces a multitude of difficult arbitrary rulings with one comparatively easier arbitrary ruling.
« Last Edit: February 22, 2012, 04:21:20 AM by RingRush » Logged

ded
Goldenboy
Deku Scrub

Posts: 1


Email
« Reply #7 on: February 21, 2012, 09:41:08 PM »

I think if we do allow RBA/BA in the 100% like we currently do, then we should skip killing Ganon since the only thing we "obtain" from killing him is the ending cutscene, which we could warp to already. Although, this is all a moot point if RBA/BA gets banned anyways. It would probably get really complicated to route out, but a 100% with RBA/BA would be really cool.
Logged
KingOfHeart
Special Guay

Posts: 222


« Reply #8 on: February 21, 2012, 10:18:07 PM »

So when will this speed run be done? So OOT could now be beaten within maybe an hour at most?
Logged
ZFG
Moderator
Mega Guay

Posts: 659


also pheenoh <3


« Reply #9 on: February 21, 2012, 11:27:53 PM »

So when will this speed run be done? So OOT could now be beaten within maybe an hour at most?
It's already been under an hour quite a few times now.
Logged

Quote
I for one think that there are no glitches in OoT. It's just gameshark codes.

RBA stands for Rare Bird Adventure. We call it that because we need to get the blue cucco in order to use it.
Bonooru
Regular Guay

Posts: 116



« Reply #10 on: February 22, 2012, 02:45:51 AM »

Having a 100% run that doesnt defeat ganon, atleast to me, will seem incomplete.
Logged
Runnerguy2489
Special Guay

Posts: 439


I'm not your buddy, guay!


WWW
« Reply #11 on: February 22, 2012, 02:53:48 AM »

I will now hijack this topic for my own question. Someone can split this if this ends up going back to the original topic.

Should we require killing Ganon in 100%? Should we ban RBA/BA altogether in 100% in light of all the new and previous controversies? Discuss.
Just ban RBA/BA. Makes it easier.
Logged

Quote
runnerguy your such a mother fucker. whats with all this bombchu shit? all everyone who likes this shit is stupid. ur a fucking cheater. u did that the wrong way, thats not how to get past the king zora u cheater. u suck and i wont continue watching all ur shit! videos.
gamestabled
Site Editor
Special Guay

Posts: 292


B e t A Q u e S t


« Reply #12 on: February 22, 2012, 03:15:12 AM »

I think that getting to the end cutscene in 100% without Ganon shouldn't be allowed because thats like getting medallions through rba, which isn't allowed unless you also get them legit.
Logged

when i grow up, i wanna be just like taylortotftw
Hornlitz
Regular Guay

Posts: 118



Email
« Reply #13 on: February 22, 2012, 04:02:06 AM »

In my opinion, beating a game 100% includes beating every boss in the game, especially the final boss.
By all means, use this new glitch in any% runs, but for 100% runs, I say just stick to the original.
Logged
Abahbob
Site Editor
Special Guay

Posts: 334

I make videos of games that are done very fast.


Email
« Reply #14 on: February 22, 2012, 04:06:16 AM »

Although I don't enjoy it, I say 100% should be able to skip to credits. Ganon/dorf doesn't unlock anything. No items, unlocks, medallions, or even change to any of the pause screens. Screw final boss, FW ftw.
Logged
Pages: [1] 2
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.20 | SMF © 2013, Simple Machines Valid XHTML 1.0! Valid CSS!