Views: 828,324,415
10 users online: AnasMario130, Ancapello, Cascade, danwaleby, DasFueller, ExONightZ, GatoSlashFish,  Noivern, SF - The Dark Warrior, TheBiob - Guests: 38 - Bots: 108 Users: 44,352 (2,538 active)
Latest: brokedog523
Tip: Test your levels as all forms of Mario (small, super, fire, cape). If it's possible to enter a level with Yoshi, make sure to test that as well.Not logged in.
Custom "Shooting" Power-ups by 1524, RussianMan
Forum Index - Valley of Bowser - Moderation Questions - Sprites - Custom "Shooting" Power-ups by 1524, RussianMan
Pages: « 1 »
File Name: Custom "Shooting" Power-ups
Submitted: by RussianMan
Obsoletes: Hammer and Boomerang Powerups for Mario
Authors: 1524, RussianMan
Tool: PIXI
Type: Standard
Dynamic: No
Disassembly: No
Includes GFX: Yes
Description: This package lets you to create new "Shooting" based power-ups, where the player can shoot extended sprites, both new and old, depending on "power" state.

Comes with boomerang and hammer powers, that were originally made by 1524 (ICB).

More details in the readme.
There are a couple of problems with this sprite which ultimately led to its rejection.

The SpriteInteract routine in both projectiles calls %SubHorzPoz() incorrectly when you set !DeathType to 0. %SubHorzPoz() returns a value in Y using the sprite in slot X, but the sprite loop uses Y as its index. While you do properly preserve Y and read the output, you never set X, so you'll read the position of an undefined sprite. This can be fixed by just transferring Y into X before calling %SubHorzPoz() - you restore X afterward, so you don't have to back it up. In fact, backing up Y is also unnecessary because %SubHorzPoz() preserves X - you can transfer Y into X, call %SubHorzPoz(), transfer the output into A, then transfer X back into Y.

Both included projectiles respect the scenery flag in $1779 but the UberASM code sets it only for boomerang. This means that hammers will use the current undefined value, meaning they'll sometimes ignore sprites for seemingly no reason. Besides, the UberASM code shouldn't just put the projectile in front of layers, it should use $13F9 to check what to store. Currently, shooting a projectile while behind a net will place it in front of the net. Speaking of nets, you can shoot projectiles while climbing, which clearly shouldn't be the case.

When you apply the X offset when spawning the extended sprite, you're not adding the carry into the high byte. This means that you can't shoot projectiles if the player is close to a screen boundary. To fix this, you can't just ADC #$00 because you sometimes subtract (when the player is facing left, to be specific) through signed addition. You need a separate table for the high bytes and add #$FF if you're subtracting, #$00 if you're adding (check other sprites to see what I'm talking about in practice).

From a gameplay perspective, there's one small flaw - the player's old powerup is not placed in the item box. Picking up a hammer or boomerang powerup will destroy the player's current powerup, even if it's a fire flower or a cape (both of which can go in the item box). Of course, placing these new pseudo powerups in the item box is not possible because of how the item box works.

Other than that, this sprite works quite well. As for additional, recommendations, it'd be nice if you could make it work with patches such as Item Box Special to make these feel more like true powerups. Another small gripe I have is that the included graphics don't work out of the box (the boomerang is in the wrong place).
Pages: « 1 »
Forum Index - Valley of Bowser - Moderation Questions - Sprites - Custom "Shooting" Power-ups by 1524, RussianMan

The purpose of this site is not to distribute copyrighted material, but to honor one of our favourite games.

Copyright © 2005 - 2020 - SMW Central
Legal Information - Privacy Policy - Link To Us

Total queries: 14


Follow Us On

  • YouTube
  • Twitch
  • Twitter


  • Super Mario Bros. X Community
  • Mario Fan Games Galaxy