Language…
18 users online: akawo, Alex No, CroNo, DanMario24YT, Gemini0, Golden Yoshi, Green, Hammerer, kurtistrydiz,  MarioFanGamer, MarkVD100, mtheordinarygamer, rafaelfutbal, Rykon-V73, Spedinja, steelsburg, superbot12, Tulip Time Scholarship Games - Guests: 292 - Bots: 647
Users: 64,795 (2,370 active)
Latest user: mathew

Super Mario Advance 2 Status Screen Patch v2.68 (release candidate)

Patch

  • Pages:
  • 1
  • 2
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:
  1. menu itself is bigger. because snes has a bigger screen
  2. 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
  3. support for more than 1 secret exit, only because LM does it
  4. 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
  5. 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
  6. 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)
  7. 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)
  8. minor alignment stuff, due to aforementioned VWF
  9. i added a blank space above the top name bar, to account for potential CRT masking
  10. 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
  11. 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
  12. 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):
  1. warping enabled from the beginning, instead of having to clear all exits
  2. autosave when exiting the menu (either by normal exit or warping). itll just run smw's save routine (and by extension, sram/bwram+)
  3. 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"!
  4. 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!
BOI! Looks like we finally got a new update for the SMA2 Status Screen for for EIGHT straight years. With the support for SA-1 and SRAM/BWRAM+, I bet if people would like to use it in bajillion hacks...

Can't wait for the non-beta stable release!
The Hacking of PuyoPuyo. Come join the fun, friends. 『いけいけ団長、頑張れ頑張れ団長!』
Help us raise funds for the Armed Forces of Ukraine. #ДопомагаємоРазом / #HelpTogether
“Even if you personally are so dissatisfied with life that you want the world to end, surely the cruel reality is that it will continue on, unchanging. All the better for someone perfectly content, like me.”
Aya Shameimaru, Touhou Suzunaan ~ Forbidden Scrollery
Fanatical like a Demon
About time XD. If I knew it woulda taken you 4+ weeks to get a beta build, I would requested this right after v1 of the hack when I started v2 XD (tho not sure you woulda taken it then). This looks promising, I hope to see a stable version soon!
Major thanks to Suika Ibuki for layout!
I'm open for music requests, just DM me on discord and we can further discuss there.
SMAS Soundtrack Status: 100% finished
YI Soundtrack Status: 100%
YI Unsampled Soundtrack Status: 100%
NSMB Soundtrack Status: 7.89%
Killer Instinct Soundtrack Status: 14.63%
SPC Thread
From our family to you, keep your pants dry, your dreams wet, and remember, hugs not drugs.
What? Wow, I made a request for this a while back! It seems like you did it! Thank you so much!

Click the character on the right side of my layout to visit my Discord server and discuss and play and look at and get updates and sneak peeks of the games and other things I'm making.

The authors of these 2 My Little Pony fan games have removed their games from the Internet.
Rise of the Clockwork Stallions has been updated! Download My Little Pony: Rise of the Clockwork Stallions DX: Director's Cut and My Little Pony: Magic Shards now! Spread this link!

Awesome! I don't really have much of a cohesive project right now to use this in, but I've used the old patch in the past and I loved it. I'll heavily consider integrating it whenever I have an opportunity for it again (I was wary about the older patch because well, it was old). Thanks for make :)
It's easily the best thing I've done
So why the empty numb?
thxies

updated the zip. just a bunch of misc bugfixes, optimizations, code cleanup, etc. i dont know what exactly changed... tho i do know that the timer was fixed (tens and ones place in the minutes were swapped) and the blinking name now uses the vram buffer used by the counters. i hadnt set up the vram buffer initially, so the blinking name was using a hacky hdma scanline swap. the buffer is waaay clunkier but will work nicely if you decide to use a full 8px font

im considering including some alternate menu designs like i did with the smb3 status bar patch. stay tuned!
new update (same link). 2 major changes (plus many minor ones):

1. sram-plus/bwram-plus is now required
2. official unofficial bigow support!

"bigow" is Ragey's More overworld levels and events patch which works alongside a Lunar Magic feature to expand the number of levels and events you can use on the overworld. since you can have up to 16 custom worlds in the status menu patch, assuming 16 levels each (right under the max per world), thats 256 levels! which bigow will cover.

getting bigow to work with sram-plus/bwram-plus is a bit tricky though. add an RTS at $00A195, then expand the length of $1EA2 to $013E in the tables file. then, under the defaults, put this instead of the zeros:
Code
!a = 0
while !a < 256
	db read1(read3(read3($009F1A)+7)+!a)
	!a #= !a+1
endif
	db $00,$00,$00,$00,$00,$00,$00,$00
	db $00,$00,$00,$00,$00,$00,$00,$00
	db $00,$00,$00,$00,$00,$00,$00,$00
	db $00,$00,$00,$00,$00,$00,$00,$00

	db $00,$00,$00,$00,$00,$00
	dd read4($009EF6)
	dd read4($009EFA)
	dd read4($009EFE)
	dd read4($009F02)
	db $00,$00,$00,$00,$00,$00,$00,$00

additionally, bigow must be patched after sram/bwram+. if you ever change the sram tables, bigow needs to be repatched after

obviously, bigow (and the corresponding LM feature) is optional. so if youre not interested, then just ignore all of the above

if youre using bigow, the yoshi coin table is at $010D so back up the 32 bytes there. if youre not using bigow, then its at $1F2F (12 bytes)

and also back up the 9 timer bytes (which i put at 7F9FB0 though you can move it to wherever)


in udder news, the counters.asm file now has an init and a main section. you can now change the scroll rate easily (powers of 2 only). you can disable the use of the "nocompleted" and "speciallevel" tables and handle the stuff in lunar magic's ow editor (with limitations)



note that i dont do much testing because i lack time. thus i dont guarantee any of the above works properly atm. so please test away!
new update. i dont think anything really changed other than me adding a readme plus minor fixes and stuff. this is also the release candidate; if theres no other glaring issues or etc, then I'll go ahead and submit this to the patches section

edit: OH, one of the changes i made is that the !worldpalettes define (and thus the worldpalettes.bin file) can now affect the color of the list as well. and !hdmaspace works properly now, but i'm still locking it behind the disclaimer because it does require gfx/tilemap modifications if its not the default setting
fyi: it is now here awaiting moderation. i did make several minor fixes/changes but dunno what they were. either way i hope it passes so i can finally quit smwhacking for good #thp{zzz4}
i posted this on the submission page but i'll post it here too:

Originally posted by Ladida
to those encountering issues:

state the emulator you used, whether you used sa-1, and whether you used bigow. easier to debug that way

if youre using s9x, try testing on bsnes and seeing if the issues reappear
so i havent looked at or tested anything, and probably wont for a few months. but it's 100% a ram issue. there's only 1 hijack (from what i remember), and that only runs when you press select while stationary on the overworld. but the patch does repurpose a lot of SMW's ram, under the assumption that it's safe to overwrite, because it's all mostly level sprite tables and other stuff (aka not stuff used on the overworld (that being my assumption))

this means that it's just a matter of changing the addresses. the addresses, however, were chosen rather specifically, and the patch itself is sort of optimized to not use long addressing (unlike the prior version), and in some cases not even word addressing, so simply "changing" the addresses is tricky.

again, i havent checked anything, and i wont for a while, so it may as well just be a big hoax to me. but i will eventually re-check the addresses and re-test the patch. HOWEVER, if the patch happens to pass moderation, then I won't do anything.
I have tested the patch in various ways and found that the glitch that makes ow glow red, as pointed out in the comments, changes the color of the glow depending on how many times the status screen is opened.
Also, this doesn't seem to be a hijack issue. I've checked it with the disassembled data and it is correctly hijacked.
I'm completely guessing, but it's possible that the visual effects on the screen that were changed when the status screen was opened were not restored when it was closed. But it's too complicated to know the details.

In addition, when an error is reported like this, it should be checked by a moderator, so I feel the chances of it passing are low.
I hope this will be fixed as soon as possible.
I'm Japanese, so if I'm not speaking well, sorry!
Originally posted by Francium
In addition, when an error is reported like this, it should be checked by a moderator, so I feel the chances of it passing are low.

wow no faith lol

test fix. it was apparently a stack issue on the SA-1's side. fuck SA-1, and thanks to yoshifanatic for pinpointing the issue, and thanks to vitor for roughly outlining what needed to be done

here

let me know if things still break


edit: for clarity: the issue is that I reset the snes stack, but didn't reset the sa1 stack. in order to do that, we have to invoke sa1. so this was added to the exit code (prior to the snes stack reset, though it really doesnt matter when it runs):

Code
if !sa1
	LDA.b #.resetSA1stack
	STA $3180
	LDA.b #.resetSA1stack>>8
	STA $3181
	LDA.b #.resetSA1stack>>16
	STA $3182
	JSR $1E80
endif


and this was added somewhere else in the code. this being the sa1 code that resets its stack (and ditches the interrupt):

Code
if !sa1
.resetSA1stack
	SEI
	INC $0189
	LDA #$F0
	STA $220B
	PLD
	PLA
	PLA
	STA $2225
	STA $318F
	PEA $0100
	PLD
	PEA $1010
	PLB
	LDA #$37
	XBA
	LDA #$FF
	TCS
	CLI
	JML read3($008A64+$11)
endif



edit2: whether this fixes visual bugs, im not sure. pls test
I tried it, but it did not fix most of the existing problems.
It is possible that my ROM is bad, so I will continue to wait for someone else's test results.
I'm Japanese, so if I'm not speaking well, sorry!
i made a small booboo. redownload (i was storing garbage to $2225/$318F. unsure how bad it actually is)
Still not fixed.

Could it be...
Is it still my ROM that is wrong? lol

P.S.
I tested with a ROM containing only the minimum amount of data required, but glitching still occurred.
I'm Japanese, so if I'm not speaking well, sorry!
Yeah, applying the fixed patch twice fixed all the problems for some reason.
I'm not sure what caused it, but I'm glad.
I'm Japanese, so if I'm not speaking well, sorry!
umm... hmm...

that's strange lol. well, glad its working for you! let me know if shit hits the fan again (this goes for everyone else too)


edit: apparently the patch was claimed already so i cant update the zip lol. i guess i'll have to wait for it to get rejected before resubmitting
So far, the problem is still unsolved:
Here's what I've found.
First, if I open the status screen while using Luigi (in essence, in a two-player game), all keys become unresponsive, effectively locking the game into a soft lock.
And if you open it right after seeing some kind of message, such as a save prompt, almost everything on the screen turns black and glitchy, but closing and reopening it cures it.

Hopefully moderating will discover this...
I'm Japanese, so if I'm not speaking well, sorry!
Originally posted by Francium
First, if I open the status screen while using Luigi (in essence, in a two-player game), all keys become unresponsive, effectively locking the game into a soft lock.

i think theres a define in the patch that deals with 2 player (idk i havent looked at the patch in a while), have you tried toggling it? (assuming it exists)
  • Pages:
  • 1
  • 2

Patch