11 users online: drkrdnk, GRIMMKIN, Heitor Porfirio, itsnotthatbrad, monkey03297, rafaelfutbal, ShadowMistressYuko, sinseiga, slimesoup,  Teows,  YouFailMe - Guests: 79 - Bots: 130
Users: 65,019 (2,324 active)
Latest user: mr_archive

Modify Timers

UberASM Repository → Modify Timers

Submission Details

Name: Modify Timers
Author: cthulhu
Type: Level, Game Mode
Includes GFX: No
Includes Hijack: Yes
Featured: No
Description: This allows you to modify up to 11 different timers per level, making some faster or slower.

You must patch modifytimers_asar.asm with Asar.

Requires 11 bytes of empty space, its recommended that if you aren't going to use specific timers to remove them.

You'll have to remove them from both modifytimers_asar.asm and modifytimers_uber.asm for things to work.

Currently supports:
* Bullet Shooter Timer
* Bullet Generator Timer
* PBalloon Timer
* Falling Spike Timer
* Hit Invincibility Timer
* PSwitch Timer
* Keyhole Exit Timer
* Throwblock Timer
* Thwomp/Thwimp Timers
* Yoshi Swallow Timer
Tags: level lorom modify sa-1 timers
Comments: 2 (jump to comments)
0.0 (0 ratings)
No rating
Download 2.82 KiB | 191 downloads


View all

Comments (2)

 Fernap Link
Tested with:
- Lunar Magic 3.31
- SA-1 Pack 1.40
- Snes9x 1.60, Bsnes-plus 05
- UberASM Tool 1.4
- Asar 1.81

- Removed a couple apparently unused, leftover lines relating to the P-balloon that could have caused confusion and even a problem if someone tried to change values
- Two of the read3()s in the unpatch file were missing the needed +1, which has been corrected

Modulo the couple small fixes above, everything seems to work as intended, so this is accepted. I'll note however, that some of the timer values may not behave as expected or may be of limited use. In particular:

- The value for bullet bill generator is ANDed with the frame counter, so it should be set to one less than a power of 2 ($01, $03, $07, $0f, $1f, $3f, $7f, or $ff) to avoid odd timing effects. For example, a value of $1f (decimal 31) would fire every 32 frames.
- The value for the Yoshi swallow is ANDed with the frame counter in order to determine when to decrement. So it should also be one less than a power of 2. It defaults to $03, so it can only be halved, doubled, quadrupled, etc.
- The timer for bullet bill shooter shooter only decrements every other frame, so the total time between shots is double what's set here.
- The timer for the P-balloon decrements every fourth frame, and since the default is already $ff, you can only lower it, not raise it.
- The value for the throw block decrements every other frame, and since the default is already $ff.
- The value for the P-switches decrements every fourth frame.
- The value for the keyhole causes it to pause for that many frames while at maximum size. This seems of pretty limited use, and if used, it would likely be done ROM-wide, rather than per-level. As such, it would be simpler to implement with a simple hex edit, and I'd simply recommend removing it here.

To actually use this, I'd recommend using the supplied UberASM file as gamemode 14 along with any desired ROM-wide default values (you can use $00 for the vanilla defaults). Then, make individual level UberASM files to override these global defaults as desired. Also take note of the supplied default values, many of which are probably not what you want to actually use.
HammerBrother Link
Note that some timers don't respect the $9D flag, such as the p-balloon timer. Patch for that.

Some don't respect it only if $14 is divisible by 4 when $9D is set:
-Yoshi Swallow Timer
-Star timer