Discussioni
California, USAZetorux1 year ago

I'm starting a new thread to discuss/document strategy for the Any% Damageless category. Feel free to add whatever you like!

To start, here's a guide on how to do the long route of Level 2-4 (no wall clipping required). My method is 2 minutes slower, but once you learn each room, I think it is much easier than the wall clip route:

In the video I point out a bug that significantly reduces the entropy in the randomness of the swarm rooms (to the extent of entirely removing several movement patterns). Here are all the possible spawn locations (for EVERY Level 2-4 swarm room) and what they imply about the direction the enemies will take: https://i.imgur.com/bZQfDOY.png

It didn't happen in the guide when I recorded it, but there is a 1/5 chance that you will have to deal with a spawn like this one in the first swarm room:

You have to deal with this room no matter which route you take, so I think it's worth learning to react to that pattern.

Technical information:

There is a random number (at $26) that changes multiple times per frame in a routine at $EB21. The routine goes like this:

LDA $26 ROR A ROR A CLC ADC #3 CLC ADC #$20 STA $26 RTS

Something unusual about this is that the state of the carry bit at the start of the routine is factored into the randomness (via ROR). In C, this would look something like:

uint8_t rand; void rotate(uint8_t carry_bit) { rand = (rand >> 2) | (rand << 7) | (carry_bit << 6); rand += 0x23; }

But what is interesting is that the carry bit is almost always unset. In fact, I think in maze levels it will always be unset. I'm not familiar enough with the code flow yet to be 100% sure (there is a lot going on lol), but this has always been the case for me.

Assuming this is reliably true: The random number ends up cycling through the same 5 values over and over. It starts at 0 (because most of the zero page gets wiped when you start the maze level), and then the cycle goes 00 -> 23 -> AB -> CD -> D6 -> 58 -> 39 -> B1 -> CF -> D6 (and then it keeps looping those last five values).

https://i.imgur.com/QIXCply.png

Anyway, when an enemy in the swarm room is spawned, it does something like this in $8800 (bank 6) to set the position/direction of that enemy:

x = fixed_position_x + (rand >> 4) y = fixed_position_y + (rand & 0x3C) >> 2 movement = fixed_movements[rand % 8];

But because rand can only be 5 values, this means:

  1. We don't get to see all the swarm movements (there is a vertical one!)
  2. We know which way an enemy is going to move based on its position, before it starts moving. In practice it's difficult for me to consistently distinguish between the down-left and left spawns, but the others are noticeably different. (This is relevant for the first swarm room as shown in the clip)

There is a 1/5 chance that an enemy will move left, a 1/5 chance they will move down-left, and a 3/5 chance they will move some kind of down-right

I thought that was pretty cool so I wanted to share it! :D

fruitbatsalad e Hearn ti piace questo
California, USAZetorux1 year ago

Would anyone be interested in a Damageless category? I think it would offer a pretty different gameplay experience from Any% and Best Ending, and it could give a fresh challenge to anyone interested in the game.

The thing I like the most about the category is that encourages some unique strategies/glitches that aren't as relevant in Any% or Best Ending. Examples include:

  • Making Reapers fall through/off their platforms
  • Despawning enemies
  • Manipulating easier enemies to stay on the screen to prevent spawns of more troublesome enemies
  • Zipping through the wall during a wall clip to avoid landing on an enemy (e.g. in 1-4)

There are also several potential tradeoffs to make regarding safety vs speed, such as:

  • Picking up the protective crystals to prevent some accidental hits
  • Picking up the feather in case you need to fall to prevent a hit (or want to launch yourself past a section in World 3)
  • Picking up 700+ hearts in case a Pluton steals your weapon
  • Picking up an extra strength level to be able to kill certain enemies in one shot (this is particularly useful for the jumping enemies in 3-2 and 3-3, the red enemies in the room you drop into in 3-4, and the green bricks in 4-1)
  • Waiting in a safe spot for enemies to spawn 4 times (such as the snakes that fall through the small opening in 3-1 or those pink balls that fly up from the bottom in World 2)
  • Taking longer routes in 2-4 and/or 3-4 to avoid some difficult rooms
  • Walking into doors for safety (or to force different spawns when you walk out)

I'm sure there are many more of these that I haven't thought of yet!

If you want to see it in action, here is the video by fruitbatsalad that inspired me to try it out. I also did a much slower run with some different strategies:

yelsraek, Slackanater e 2 Altri ti piace questo
Info su Zetorux
Iscritto
1 year ago
Online
today
Runs
5
Giochi corso
Kid Icarus
Kid Icarus
Ultima corsa 1 year ago
5
Runs
Giochi seguiti
Zelda II: The Adventure of Link
Zelda II: The Adventure of Link
Ultima visita 9 months ago
70
visite
Kid Icarus
Kid Icarus
Ultima visita 1 year ago
232
visite
Winter Solstice
Winter Solstice
Ultima visita 1 year ago
3
visite
The Legend of Zelda: Resurrection of Ganon
3
visite
The Legend of Zelda
The Legend of Zelda
Ultima visita 8 months ago
32
visite
Super Mario Bros.
Super Mario Bros.
Ultima visita 7 months ago
66
visite
Tetris (NES)
Tetris (NES)
Ultima visita 7 months ago
75
visite
Ninja Gaiden (NES)
Ninja Gaiden (NES)
Ultima visita 7 months ago
24
visite