Language…
10 users online: Abdu,  Big Brawler, Bonobi, Chondontore, Dyojenes,  E-man38, jneen, Mary's Dreamland, OrangeBronzeDaisy, TheMorganah - Guests: 313 - Bots: 134
Users: 70,852 (2,329 active)
Latest user: Cristo Gamer

SMB3 Status Bar v1.51 [released]

Patch

Originally posted by MasterSkodwarde
e: Why make it incompatible with ZSNES?

The technics on that status bar is complicated. Enough for the SNES but too much for ZSNES and support on said emulator is low priority.
so i have an update ready, but i want people to test it before i submit it

link (replace the old code)

i switched the "free"ram from $0AF6 to $0BF6, because the former causes issues with ExAnimation. if people were having weird problems before, they shouldnt now

i changed the tilemap location again, this time following suit with the minimalist status bars and using the offscreen portions of layers 1 and 2 (took a while to set up since hdma is required in this case)

because of the above, the tilemap upload no longer needs to be done during IRQ, which means IRQ is shorter, which gives more time. thus, i decided to get rid of the !Extra_Setting in favor of hardcoding the palette and sprite count to their maximum (4 default + 4 extra palettes and 4 sprites + itembox), meaning you no longer need to compromise between more palettes or more sprites (though I doubt anyone even made use of the extra palettes/sprites...)

i also changed the default P-meter sound (people said the old one was annoying), so tell me what you think


pls test
thanks for testing <_<

i fixed a few bugs. however, there's one bug im not sure how to fix because it only occurs on hardware (higan doesnt have the bug). basically, when a message box appears, the position of the status bar messes up. from casual observation (since there's no way for me to debug properly), it seems the HDMA for the status bar is being disabled/overwritten by the message box one. the hex edits that supposedly fix this, dont. which makes sense, since the status bar HDMA should theoretically overwrite any HDMA period.

being a hardware-only problem, this is gonna be tricky to pinpoint. fml. anyways, new code for those interested
I tested the new code on real hardware(with super everdrive) and the status bar still bugs after message box appears.

(I patched the hud first and then level height patch to clean rom.)


i know... i didnt say i fixed it, only some other bugs :P
Originally posted by Ladida
i know... i didnt say i fixed it, only some other bugs :P

Well they way you worded it it sounded like you tired to fix it but couldn't test it yourself.. My bad I guess?
in that case it's my fault for wording it weird, lol. no worries

i still have no clue how to fix this. i am going on a limb and guessing it's related to this (from regs.txt, regarding starting an HDMA mid-frame):

Originally posted by Anomie
Also, note that a channel that has already terminated for the frame cannot be restarted.


if higan doesnt emulate this, then it might be the problem. otherwise, i need to keep looking. it probably isnt the problem, because ive done mid-frame HDMAs successfully before and the message box never screwed them up (i think...)
Originally posted by Ladida
it probably isnt the problem, because ive done mid-frame HDMAs successfully before and the message box never screwed them up (i think...)

yeah... just tested the old version of the patch (that used windowing HDMA), and it also screws up on hardware only

#thp{>_<3}
GOOD NEWS:

i posted the issue on byuuforums.gov, and byuu pinpointed the problem (as in, what's going on, and what hardware is possibly doing that higan isnt) and offered a solution, which works ok but it's hacky but whatever at least it works on hardware \o/

if you want to read up

BAD NEWS:

a future higan (v104 maybe) will be supported by the patch, but basically every other emulator wont #tb{XD}
Originally posted by Ladida
GOOD NEWS:

My thoughts:

Anime statistic on MyAnimeList:
400 animes completed ✓
6000 episodes completed ✓
100 Days completed ✓
... what even am I doing with my life?
Perhaps you could say in the description that it's incompatible with the vanilla message boxes? Unless I'm misunderstanding...

----------------

I'm working on a hack! Check it out here. Progress: 64/95 levels.
as of right now, the patch is incompatible with hdma (any) on hardware ONLY. in the near(?) future, when i update the patch and byuu updates higan, it will be compatible with hdma on both higan and hardware ONLY, unless the snes9x (or other emu) devs implement byuu's fix as well
I see. I was afraid of that. That is a pretty significant limitation. At least the fixes should be out soon (though I doubt the SNES9X authors will be that quick).

----------------

I'm working on a hack! Check it out here. Progress: 64/95 levels.
theres always the option of providing the currently accepted version alongside the new version; the one thats accepted uses a different tilemap method that doesnt require hdma

edit: alternatively, i can move the midframe hdma code to the end of nmi. by then all dma would have finished anyways, so i can just force enable hdma on the dma channel safely (UNLESS nmi overflows, but then you have other problems)

edit2: the problem with this, of course, is that the hdma will take effect from the beginning of the screen rather than near the end. as the hdma is to offset the layer 3 x/y, i'll have to mirror $22 and $24 into the hdma table. you'd think this wouldnt allow for custom hdma on layer 3 x/y, but since dma channels are executed sequentially, and the status bar hdma would be on channel 0 or 1, your custom hdma will overwrite the status bar's. once i get home i'll test all this
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaand it works!

if anyone wishes to test it

i've only checked for hardware compatibility, but it may break something somewhere
Hey, I was thinking of an option of making it like kirby's dreamland 2/3, and in the style of the minimalist status bar patch, that would be even cooler, as customizable counters and other information displayed on the HUD have more freedom.
Give thanks to RPG hacker for working on Asar.
not sure what you mean? you want me to include a version that looks like kdl2/3's?
so im making a few user-friendly changes:

1. most defines (minus the ones crucial to the patch, like the RAM addresses) have been moved to an external file (smb3_status_defines.asm). this makes editing the defines less scary hopefully

2. this is basically the whole file. i threw in more defines & adjusted some of the existing ones:

Code
;by default, the top 3 pixels of the status bar tilemap are not visible, as they
;are blocked by IRQ's F-blank. changing this define to 1 will make the top 3
;pixels visible, though the IRQ will be moved up by 3 scanlines as a result
;note that the IRQ itself lasts 2 scanlines (aka 2px thick black line)

!status_3px = 0



;SMB3 and SMW differ in which counters keep leading zeros and which replace them
;with spaces. the below defines are defaulted to SMB3 behavior
;0 = keep the leading zeroes
;anything else = replace leading zeroes with this tile # in GFX28/29

!ZERO_coins = $3F
!ZERO_lives = $3F
!ZERO_score = 0
!ZERO_time = 0
!ZERO_bonus = $3F



;by default, Yoshi coins are displayed as a numeric value. changing this
;define to anything but 0 will let you display Yoshi coins as they were in SMW,
;with this value being the maximum displayed. this is meant for a custom
;status bar, as it will glitch with the default SMB3 status bar

!yicoins_max = 0

;(for above) if you want Yoshi coins on the status bar to disappear when you
;collect them all, change this from 0 to the tile you want them replaced with
;note that the maximum # of yoshi coins displayed before they disappear will be
;the above value - 1

!ZERO_yicoins = $3F

;(for above) regular Yoshi coin icon

!TILE_yicoins = $1F



;# of tiles the current player icon occupies, minus 1

!SIZE_player = 1

;tile/properties for the current player. if the above define is > 1, then
;the additional tiles will be adjacent to this one (tilemap & GFX)

!player_1_TILE = $19
!player_1_PROP = $20
!player_2_TILE = $1B
!player_2_PROP = $24



;location of counters in status bar. only change the added value.
;the bottom row is +$20
;if you want the counter disabled, set it equal to 0 instead of !statusloc+whatever
;note that disabling a counter ONLY affects the display, NOT the functionality
;(and if you want it fully removed from the status bar, edit the tilemap file)

!statusloc = !status_tile+$22

!world		= !statusloc+$04	;1 tile
!pmeter		= !statusloc+$06	;8 tiles
!coins		= !statusloc+$10	;2 tiles
!bonus		= !statusloc+$17	;4 tiles, 2 at !bonus and 2 at !bonus+$20
!player		= !statusloc+$20+$00	;2 tiles
!lives		= !statusloc+$20+$03	;2 tiles
!score		= !statusloc+$20+$06	;6 tiles (final zero is not included)
!time		= !statusloc+$20+$0F	;3 tiles
!yicoins	= !statusloc+$20+$15	;1 tile (depends on !yicoins_max)
!itembox	= $C7E0		;$YX
				;disabling the item box allows for it to be
				;used as a 5th custom OAM tile



;below defines are for the P-Meter

!Sound = $01			;Sound effect to play when you are at full speed
!SoundBank = $1DFC|!addr	;Sound bank for above sound effect

!EmptyTri	= $0F		;Empty tile of triangle
!EmptyPal	= $28
!FillTri	= $0E		;Filled tile of triangle
!FillPal	= $20

!EmptyLP	= $0A		;Empty tile of P, left side
!EmptyRP	= $0B		;Empty tile of P, right side

!FillLP		= $0C		;Filled tile of P, left side
!FillRP		= $0D		;Filled tile of P, right side



!CustomCode = "smb3_status_counters.asm"
!Worlds = "smb3_status_worlds.asm"
!StatusBarMAP = "smb3_status_map.bin"
!StatusBarGFX = "smb3_status_gfx.bin"
!StatusBarPAL = "smb3_status_pal.bin"



as you can see, gfx/tilemap/palette/etc have also been turned into defines. this way, you can have individual define files for different status bar configurations.

3. for the lulz, im including a SMB3 NES version of the status bar:



i am also planning on including some other versions like GHB suggested. any help or suggestions appreciated


edit: i will probably allow for !SIZE_player to have values larger than 1 (so you can display mario's full name or something)

edit2: done, check above



edit3: a question: should i swap the bonus stars with the item box? the only reason the item box is on the right is due to the older versions of the patch reusing the original status bar RAM, so i wanted to fit everything, but now that the tilemap is larger there's no real need for the item box to be on the far right
ohhh. nes version, wow unexpected find!! Iam definitely using that!

where is the link?

Patch