Banner
Views: 808,228,469
Time:
22 users online: 7 up, AnasMario130,  BeeKaaaay, BuuNinja, Disolv, DTA450, Foxy McCloud, Gamma V, Insanit, JamesD28, Landonb8x, Len13,  Ninja Boy, Qrtr The Dunce, Sancles, SquidMan_Raps, StayAtHomeStegosaurus, Steven, SubconsciousEye, Vhack, VLSkoot, wuffalo - Guests: 97 - Bots: 217 Users: 42,442 (2,001 active)
Latest: 00_marvelouschester_00
Tip: Avoid "item babysitting". Do not force the player to drag P-Switches or springboards all around the level. This is not fun, nor does it make for interesting "puzzles".Not logged in.
SMW Deadly Coins by ComradeKirby
Forum Index - Valley of Bowser - Moderation Questions - UberASM - SMW Deadly Coins by ComradeKirby
Pages: « 1 »
File Name: SMW Deadly Coins
Submitted: by ComradeKirby
Authors: ComradeKirby
Type: Game Mode
Includes GFX: No
Includes Hijack: Yes
Featured: No
Description: Add a twist to your game of Super Mario World. Coins make you game over! Anything that increases your coin counter (while the timer is running) will deplete your lives and kill you off.


Special thanks to asquared31415 and Taffy on the SMWC discord for the help with the code and insertion.
Screenshots:
Rejected due to limited usage and widespread lack of optimization.

Code being a little inefficient isn’t the end of the world, but this code is too bloated to let slide, especially for how small it is.

When operating on RAM addresses in the $7E region, it is unnecessary to include the $7E portion the vast majority of the time - STA $7E0F31 can be shortened to STA $0F31, STA $7E0F32 to STA $0F32, etc. (oddly, both forms are used for $0DBE). Furthermore, many of these addresses are being set to zero, for which there is an even quicker option in the STZ (store zero) opcode. Thus, LDA #$00 : STA $7E0F31 can be condensed all the way down to STZ $0F31.

Second, the free RAM address $18C5 is set and read, but doesn’t actually accomplish anything. What is the point of this address? It sets the player coin count equal to itself on level start, but since the address is itself cleared on level load, it’s always zero anyway.

Third, there is a label “GoBack:” which cannot be reached, so the STZ $0DBE beneath it does nothing but consume more space.

Fourth, SMW’s timer ticks down every 40 frames (28 in hex). The address $0F30 controls when the timer will tick down next - this code does not modify this address, which means the player will be killed on a delay of 0 - 40 frames upon collecting a coin, which is a bit awkward (but not a rejection-worthy oversight on its own).

Finally, the submission contains unneeded files inside the .zip. Please do not include a test .bps or a pre-filled list.txt file in your submissions. Since your readme only exists as a file checklist, that should probably go too unless you’ve something to add to it.

Side note - you checked “Includes Hijack” on your submission. This checkbox is for UberASM submissions that modify the ROM outside of usual scope of UberASM tool, such as those that require a helper patch to be applied with Asar, which your submission does not have. Just so that you’re aware for next time.

All in all, this entire code can be planed down to the following with no loss of function:

Code
main:

LDA $0DBF		; Check if player has coins
BEQ End			; If not, end without doing anything
STZ $0DBE		; If so, zero player life count
STZ $0F30		; Force timer to tick down immediately
STZ $0F31		; Zero timer, hundreds digit
STZ $0F32		; Zero timer, tens digit
LDA #$01		; \ 
STA $0F33		; / Set timer, ones digit to 1

End:
RTL			; End


Alternatively, if you don’t care about the coin display reading zero, you can make the code even faster as follows:

Code
main:

LDA $0DBF		; Check if player has coins
BEQ End			; If not, end without doing anything
STZ $0DBF		; If so, zero coin count (necessary to prevent looping)
STZ $0DBE		; Zero player life count
JSL $00F606		; Call the “kill player” routine

End:
RTL			; End


With all that said, I recommend against resubmitting this code even fixed up as above, as it’s quite narrow in scope. I’d personally rather see it submitted with more user options, or as an additional function to a very similar code we already host (with the authors’ permission, of course) - as it is, this specific trigger (collecting a coin) causing this specific result (instant GAME OVER) is pretty barebones.

(Also, I personally recommend getting in the habit of writing LDA and STA with two digits (LDA #$01 instead of LDA #$1) - there’s nothing strictly wrong with your way and it’s not a rejection reason, it just improves readability a bit.)


Tested with Lunar Magic 3.03, Snes9x 1.59.2, UberASM Tool 1.3.
Pages: « 1 »
Forum Index - Valley of Bowser - Moderation Questions - UberASM - SMW Deadly Coins by ComradeKirby

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: 7

Menu

Follow Us On

  • YouTube
  • Twitch
  • Twitter

Affiliates

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