Name: | Double Pivot Rotating Gray Platform |
Author: | JamesD28 |
Added: | |
Tool: | PIXI |
Type: | Standard |
Dynamic: | No |
Disassembly: | No |
Includes GFX: | Yes |
Description: | This is a variant of the Rotating Gray Platform (sprite A3), which can rotate around a double-pivot. You can customize the length (up to 15 segments per pivot), their rotation speed, direction (including switch-dependent directions), starting angle, and much more, resulting in a massive variety of both simple and complex platform movements. Additionally, the platform can be replaced with an appended sprite (see the .asm file for usage), effectively resulting in an "Any Sprite n' Chain". The appended sprite could even be another instance of this sprite, enabling platforms with even more pivots! Other options include disabling drawing the pivot segments to save OAM, flipping the starting angles based on the player's direction, and even line-guiding the platform and any appended sprites. While this sprite has a lot of potential for very interesting (and cursed) setups, I recommend spending some time fiddling with settings and getting acquainted with how it works. Some features (such as having several platforms with appended sprites rotating around the same point) can be a bit tricky to set up. The .asm file explains all features as well as possible, but tweaking the settings and observing how they change the platform's behavior will help a lot too. NMSTL or Maxtile is strongly recommended. |
Tags: | chain lorom platform rotating sa-1 |
Comments: | 5 (jump to comments) |
Rating: |
Download
19.01 KiB | 121 downloads
Comments (5)
- Lunar Magic 3.40
- SA-1 Pack 1.40
- Snes9x 1.62.3, Bsnes-plus 05
- Pixi 1.40
- No More Sprite Tile Limits 1.2.1 (w/ Asar 1.91)
Notes:
Apologies for the long moderation time. This is really impressive work; everything I tested seems to work as intended, so accepted. A few comments/suggestions though:
- It's not mentioned in the asm file, but rotation speed appears to be in 1024ths of a full turn per frame, so a speed of 4 is the default vanilla platform/ball 'n' chain rotation speed
- Converted tabs to spaces for readability
- You mention worry about processing time. I didn't run into any slowdown, even on lorom with more than one spawned in, but I guess I didn't stress test it *too* hard.
- On that note, though, I did see one major place where there could be some significant optimization, and that's in the extra byte fetching. You have a macro for this that causes a lot of extra cycles fetching/storing the same pointer to the extra byte data (and preserving Y when often needed). Ideally, what you need can be stashed in spare sprite tables. But even if there aren't enough for that, at the very least, you can just store the pointer to the wiggler segment buffer pointer at $D5 (always safe to use during sprite code) once at the beginning of main/init.
- Another approach, and one that I've been favoring lately, is for resources with a lot of configuration options like this, to let the user specify a number of pre-set configs in the .asm file, and then simply have a single extra byte that selects which configuration to use. Of course, this tends to work better when there are a lot of options, but only a small number of combinations are likely to be used in a hack, so it's a tradeoff. And it can even be a hybrid, with a few common settings still settable as extra bytes. But either way, it moots the issue of extra byte fetching, since you'd just be reading out of a static table instead.