22 users online:  AmperSam, Aurel509, Brakkie, DanMario24YT, Dark Prince,  Deeke, Duraner Hawkeye, FrozenQuills, JaizePLS, lean4, lolyoshi, magicker72, Miauu, Natsuz2, Neuromancer, PaneraBred64,  RussianMan, Rykon-V73, RZRider, Semolous, SkyeLondon18, Vgah0707 - Guests: 99 - Bots: 278
Users: 65,938 (2,185 active)
Latest user: Bobra

Speedrun Timer

SMW Sprites → Speedrun Timer

Submission Details

Name: Speedrun Timer
Author: Nowieso
Tool: PIXI
Type: Standard
Dynamic: No
Disassembly: No
Includes GFX: Yes
Description: This sprite is a speedrun timer, which can show the exact minutes, seconds and frames you have been in the level. It can also be used as a countdown, and will trigger a certain effect if the timer reaches 0.

It comes with a custom block that can set the timer to any time you want.

It also comes with an UberASM file that spawns the sprite so you don't have to place it in your level, in case you have multiple entrances to the same sublevel, which would force you to place the sprite for every single entrance.
Tags: code lorom pacifist sa-1 timer
Comments: 5 (jump to comments)
0.0 (0 ratings)
No rating
Download 8.71 KiB | 264 downloads


View all

Comments (5)

 MarioFanGamer Link
  • Lunar Magic v3.33
  • SA-1 Pack v1.40
  • PIXI v1.40
  • GPS V1.4.4
  • BSNES v115
This sprite works but I very much like to see it reworked.

The biggest issue I have with it are the weird decisions you made. The position is set by extra bytes which is fine (though I would have seen it set in the ASM file given that it generally makes no sense to change the timer's position, not that it matters too much), and the starting timer is completely reasonable. However, the effect on what happens is set by extra property byte even though it very well could have been an extra byte setting that as well (notice that PIXI supports for up to 12 extra bytes per sprite).
It also limits the potential of other options since I initially thought you could put the timer to sleep by setting the time to 00:00 but then the timer counts up with no way to change it. This very much limits the potential of setTimerValues.asm. On that aside, you could implement a count up effect as well.
Some of the issues also are very much straightforward: How does one handle the situation of the issue of running two timers at the same time? By simply killing one if the other already exists!

Likewise, the code also can be optimised in a couple places.
For example, the sprite is completely static (well, it does move within the screen but it uses the layer 1 position with the relative to screen position) so it makes no sense to call the update X and Y position routines and the JSL-subroutine calls are missing |!bank which slightly limits the potential speed of the code if FastROM is enabled.
In the GFX routine, you handle the display of the individual digits using ExecutePtrs which is not only is slow (especially for calling it in multiple frame) but it also discards one of the two results of the division. I also realised why you had to move the but you can just use $04 directly if you add in the offset beforehand and subtract the position thereof, no need to use a second variable for this.

Lastly, we have 2023, there is no reason to submit CFG files anymore.

Edit: Forgot to mention GPS which was used to moderate the included blocks.
Heitor Porfirio Link
Is this sprite compatible with this block?

It would be interesting for levels where you have to collect these clocks until the end, without running out of time.

Nowieso Author Link
It won't work with that specific block, but this sprite has its own block included.
Hayashi Neru Link
This will be useful when the 'DKCR Styled Sprite Status Bar' adds a time limit in patched ROMs.
HammerBrother Link
My version also have the timer that displays the approximate centisecond (Frames * 100 / 60, where Frames is a value 0-59) rather than frames.