the order of operations is movement, rotation, gravity. this is of concern to spintucks.

Поділитися
Вставка
  • Опубліковано 8 лют 2025
  • script:
    piece movement in NES Tetris gets processed once a frame in the order move rotate drop, by move I just mean horizontal. Important thing is that movement comes before rotation, which is a problem for most spintucks. They tend to need rotation to happen first, meaning they take 2 frames and can't be done on 29. Out of the common spintucks, LJTI all need rotation first, ST have rotation first but there's a gravity tick before you do the movement so they work on 29, and Z has no preference on order and is the only one that can happen in a single frame. Oh also a JD spin works because it has movement first.

КОМЕНТАРІ • 17

  • @playerplays1658
    @playerplays1658 Рік тому +2

    So this is the legendary scholar

  • @XirevWoW
    @XirevWoW Рік тому +15

    I’m curious, how did you learn all of this? Like everything about how Tetris is made, and where you got the knowledge to understand it all

    • @hydrantdude3642
      @hydrantdude3642  Рік тому +32

      Reading the code & standing on the shoulders of giants. We have a wonderful technical community for NES tetris that has modded the game and knows it inside and out. The amazing Michael Birken was the first to research the majority of the game's mechanics for the AI he created and posted it to his blog on meatfighter.com/nintendotetrisai. But since then, the community has created a full disassembly of the game's code, which is my source for figuring out a lot of things. I'll just shoutout a ton of cool people who have made discoveries: kitaru (the OG mechanic knower, I learned a great deal from him), kirjava (incredible romhacker responsible for making the community's practice rom & parts of disassembly), negativemaya(disassembly contributer, built a cycle counter for the crash), fractal161(excellent hacker and contributed to crash research), jazzthief81(made the first disassembly), ejona (base for the modern disassembly), and I'm probably missing people, too. Generally, though, if I want to know something, I first check meatfighter, then ask kitaru if I think he knows, then figure it out myself from the disassembly because the knowledge probably doesn't exist yet.

    • @XirevWoW
      @XirevWoW Рік тому +1

      @@hydrantdude3642 I see, thanks for the answer! And how did you learn how to read the code? College? Self-taught?

    • @KA-jm2cz
      @KA-jm2cz Рік тому +3

      Satan whispers you secrets when you play if you just offer some donuts and cola.

    • @hydrantdude3642
      @hydrantdude3642  Рік тому +12

      I learned basic python at a summer camp in middle school but other than that I have had no formal instruction on coding. Completely self-taught in assembly using the 90s-lookin webpage for 6502 opcodes. Assembly is really fun to learn, it's like a puzzle; I find it way more interesting than high-level languages.

    • @XirevWoW
      @XirevWoW Рік тому

      @@hydrantdude3642 Been programming for a couple years but have never tried to learn assembly, feeling a bit tempted to after watching some of your videos

  • @CraftBasti
    @CraftBasti Рік тому +2

    Wait, that's to technical; what are these letters supposed to mean? And which one is the tournament version?

  • @HsDL_Galand
    @HsDL_Galand Рік тому +2

    About the color bug after level 138, I have a question.
    Without modifying the memory allocated by that variable, could it be a possible fix turning the type from "signed int" into "unsigned int" and change the check operation from "subtract 10 till negative" into "actual_level mod 10" and search the result in the table?
    If we use "mod" operations, negative numbers doesn't show up, and so we can ignore them
    This should work for every level... well technically at level 256 the colors will be selected from column 0 instead of column 6 and subsequent levels will carry away this problem (level 257 column 1, and so on...)
    BUT, at least, using this method will prevent any weird access outside of the 0-9 table, since the variable that is responsible for doing so can't have any value outside of 0-9 (since we are using mod 10 operation)
    What do you think about this? And plz consider I am new to programming, so if I made some kind of mistake, plz tell me

    • @MichaelDarrow-tr1mn
      @MichaelDarrow-tr1mn Рік тому +1

      Assembly doesn't have a modulo operation

    • @wiirambo7437
      @wiirambo7437 9 місяців тому

      Bugged colors can be fixed with one game genie code EPAOKA

  • @zhihuangxu6551
    @zhihuangxu6551 Рік тому +1

    Would you explain (in details) why level 255 is theoretically the last level?

    • @hydrantdude3642
      @hydrantdude3642  Рік тому +17

      there is no detail to go into. the level is stored in one byte, and a byte has the capacity to represent the numbers 0-255.

  • @reaizy
    @reaizy Рік тому

    You are a mogger bro 🗿
    Sharp jawline
    A10 hunter eyes
    Full eyebrows

  • @glitchyfruit2503
    @glitchyfruit2503 Рік тому +1

    First