Threads
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 and Hearn like this
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 and 2 others like this
About Zetorux
Joined
1 year ago
Online
5 days ago
Runs
5
Games run
Kid Icarus
Kid Icarus
Last run 1 year ago
5
Runs
Games followed
Zelda II: The Adventure of Link
Zelda II: The Adventure of Link
Last visit 9 months ago
70
visits
Kid Icarus
Kid Icarus
Last visit 1 year ago
232
visits
Winter Solstice
Winter Solstice
Last visit 1 year ago
3
visits
The Legend of Zelda: Resurrection of Ganon
3
visits
The Legend of Zelda
The Legend of Zelda
Last visit 7 months ago
32
visits
Super Mario Bros.
Super Mario Bros.
Last visit 6 months ago
66
visits
Tetris (NES)
Tetris (NES)
Last visit 6 months ago
75
visits
Ninja Gaiden (NES)
Ninja Gaiden (NES)
Last visit 6 months ago
24
visits