this was supposed to be a c3 release but i have basically 0 free time and even though i had a 4 week head start it wasnt enough
ransomware link, don't click
not really an "update"; more of a complete rewrite. though tbh the code is just as crappy. young ladida is rolling in his grave
obviously, this is now compatible with sa-1, and sram/bwram+. that was kinda the whole point of this update. actually... i think sram/bwram+ is now required. not sure. timer definitely breaks if you dont use it
theres also support for lunar magic's 2 extra secret exits (i think... i havent actually tested it). kind of a last-minute inclusion, because i actually had no clue LM did that because i dont follow the smw hacking scene anymore
if you currently have the old status screen in your rom and want to update, you have to port to a new rom, because this patch is completely incompatible with the old one. theoretically, this one will take precedence over the old one (due to how this version works), but you dont want old dumb code in your rom
AMK is required, and since AMK fucking sucks, i included a patch.asm to replace the one in AMK's /asm/SNES/ folder. without it, custom music wont work on the menu. blame AMK, not me (long story short: AMK offers no way to remotely run its SPC upload; it does JML JML instead of JSL RTL)
note note NOTE that this thing is beta. id like if yall could help me debug, make suggestions, check accuracy to sma2, maybe look through the code and point out stupid stuff (NO BULLY), whatever. after that i'll submit it to the patches section for round 2 of beta testing
thanks btw to LadiesMan for the new song port! included with the patch.
by default, it will behave and look as close to sma2's status screen as possible. the old patch took a lot of liberties, but this one less so
differences from SMA2:
extra stuff disabled by default (these are all defines in the patch):
note that this version displays (by default) 3 less levels than the old patch, due to the CRT padding and HDMA spacing between the level names (old: 20, new: 17). this is still more than SMA2's max (12)
graphics, tilemaps, palettes, etc are all external and thus editable (with limitations)
note that you are able to edit the tilemaps (given that theyre just binary files), but atm there is no good snes tilemap editor. the best one that im aware of (racing stripe) only supports zsnes ZST savestates. i myself made the default tilemaps in a hex editor. dont ask me how to make a custom tilemap. again: i made the tilemaps in a hex editor. yes, its bullshit. but theres nothing i can do about it.
the snes tilemap format is simple anyways. for each tile, there are 2 bytes:
tile, property
tile being a value from 0-FF, and property being the same. property is further subdivided in binary as such:
YXPCCCTT
Y = yflip
X = xflip
P = priority
CCC = palette
TT = page (technically: high 2 bits of tile #)
tiles are 8x8 by default (8 pixels x 8 pixels). one line of tiles (from left side of screen to right) is 32 tiles. after that, you are on the next row of 8x8 tiles. snes screen is 28 rows. a full tilemap screen is 32 rows. 32x32=1024. after 1024 tiles, you move on to the next tilemap screen, if there is one (maps can be 32x32 tiles, 32x64 tiles, 64x32 tiles, or 64x64 tiles. this patch has layer 2 at 32x32 and layers 1 and 3 at 64x32)
thanks! test away!
ransomware link, don't click
not really an "update"; more of a complete rewrite. though tbh the code is just as crappy. young ladida is rolling in his grave
obviously, this is now compatible with sa-1, and sram/bwram+. that was kinda the whole point of this update. actually... i think sram/bwram+ is now required. not sure. timer definitely breaks if you dont use it
theres also support for lunar magic's 2 extra secret exits (i think... i havent actually tested it). kind of a last-minute inclusion, because i actually had no clue LM did that because i dont follow the smw hacking scene anymore
if you currently have the old status screen in your rom and want to update, you have to port to a new rom, because this patch is completely incompatible with the old one. theoretically, this one will take precedence over the old one (due to how this version works), but you dont want old dumb code in your rom
AMK is required, and since AMK fucking sucks, i included a patch.asm to replace the one in AMK's /asm/SNES/ folder. without it, custom music wont work on the menu. blame AMK, not me (long story short: AMK offers no way to remotely run its SPC upload; it does JML JML instead of JSL RTL)
note note NOTE that this thing is beta. id like if yall could help me debug, make suggestions, check accuracy to sma2, maybe look through the code and point out stupid stuff (NO BULLY), whatever. after that i'll submit it to the patches section for round 2 of beta testing
thanks btw to LadiesMan for the new song port! included with the patch.
by default, it will behave and look as close to sma2's status screen as possible. the old patch took a lot of liberties, but this one less so
differences from SMA2:
- menu itself is bigger. because snes has a bigger screen
- menu takes longer to load and unload. because snes<->spc communication is done with a stupid handshaking routine via 4 (four) 8-bit i/o ports
- support for more than 1 secret exit, only because LM does it
- no support for showing which player beat which level. if the level was beat, itll show a C (the old patch did this too). it wont show whether mario or luigi did it. thatd require extra hijacks at level end and a whole extra ram/sram table, which is out-of-scope for this patch. someone else with more interest can implement it
- when youre standing on a pipe (or any level thats not in the world tables), itll display the first world (in smw, thatd be yoshi's island) instead of the "current" world. the old patch did this as well. pipes are technically level 0, and i assign level 0 to YI within the patch. in sma2, they showed up within their proper world (but didnt match any level within the world). fixing this would require way too much work. i could just pull the last level from $13BF, but thatll contain dumb values if you didnt come from a level (ex: title screen, intro level). so yeah
- sma2 showed how many exits mario/luigi each got. i didnt implement that; instead showing lives and coins and score for the current player (again: ... the old patch did this too)
- the name list itself is not VWF. SMA2 used sprites for the level names so it was able to do VWF; main reason being the GBA screen is shorter width-wise so they had to condense spaces. snes has a plenty wide screen to fit both the level name and the 4 exit icons + yoshi coin icon (though they are kinda squished admittedly)
- minor alignment stuff, due to aforementioned VWF
- i added a blank space above the top name bar, to account for potential CRT masking
- the yoshi coin that appears when you collect all yoshi coins doesnt sparkle. I'm debating whether to implement it. the sparkle graphics are included, but the main issue is that its pseudorandom, and thus near impossible to accurately replicate
- in sma2, theres an internal level timer that counts up (in levels with a time limit), and when you complete the level (or die) its then added to the global timer. however, sma2 caps the in-level timer at 59m:xxs:xxf, meaning spending more than 59min in a level wont do anything special. this patch does not implement this cap, because the timer code increments the global timer directly in-level; there is no separate level timer. fixing this is trivial, but like... yeah, nah
- when you defeat bowser in sma2, the timer stops, peach stops crying, and all _exits_ are revealed (but not levels/names), so effectively all worlds get revealed. since by default, bowser's level is technically unbeatable and triggers no save, i left this behavior out. you instead have the option to trigger the timer stop/happy peach by setting the high bit of !timer+8. the all-exits-revealing is very tricky to do with the code i have, so unfortunately (for now) i cant do it
extra stuff disabled by default (these are all defines in the patch):
- warping enabled from the beginning, instead of having to clear all exits
- autosave when exiting the menu (either by normal exit or warping). itll just run smw's save routine (and by extension, sram/bwram+)
- custom banner palettes per world. since the banners (left side) are just full gfx, you can have a custom image per world instead of the boring "W 1"!
- dash "-" for empty icons instead of... well... empty icons. the japanese version of SMA2 does this, and it cost me nothing to implement
note that this version displays (by default) 3 less levels than the old patch, due to the CRT padding and HDMA spacing between the level names (old: 20, new: 17). this is still more than SMA2's max (12)
graphics, tilemaps, palettes, etc are all external and thus editable (with limitations)
note that you are able to edit the tilemaps (given that theyre just binary files), but atm there is no good snes tilemap editor. the best one that im aware of (racing stripe) only supports zsnes ZST savestates. i myself made the default tilemaps in a hex editor. dont ask me how to make a custom tilemap. again: i made the tilemaps in a hex editor. yes, its bullshit. but theres nothing i can do about it.
the snes tilemap format is simple anyways. for each tile, there are 2 bytes:
tile, property
tile being a value from 0-FF, and property being the same. property is further subdivided in binary as such:
YXPCCCTT
Y = yflip
X = xflip
P = priority
CCC = palette
TT = page (technically: high 2 bits of tile #)
tiles are 8x8 by default (8 pixels x 8 pixels). one line of tiles (from left side of screen to right) is 32 tiles. after that, you are on the next row of 8x8 tiles. snes screen is 28 rows. a full tilemap screen is 32 rows. 32x32=1024. after 1024 tiles, you move on to the next tilemap screen, if there is one (maps can be 32x32 tiles, 32x64 tiles, 64x32 tiles, or 64x64 tiles. this patch has layer 2 at 32x32 and layers 1 and 3 at 64x32)
thanks! test away!