Name: | Overworld Player Sprite Expansion |
Author: | Barrels O' Fun |
Added: | |
Tool: | Asar |
Requires Free Space: | Yes |
Bug Fix: | No |
Featured: | No |
Description: | A complete rewrite of Erik's 'Overworld Mario Tilemap Rewrite'. These patches rewrite the entirety of the code that handles the drawing of the overworld players and of Yoshi, resulting in a 16x16 dynamic sprite for Mario/Luigi (instead of 4 8x8s) as well as Yoshi if enabled. There are a variety of simple tweaks you can apply in 'OPSE.asm' as well slightly more advanced things you could such as dynamic palettes and powerup graphics in the 'opse' folder with files such as 'opse_gfx.asm', 'opse_dynamicpalettes.asm,' and 'opse_powerups.asm'. More advanced additions include powerup objects and custom animations. You can use defined RAM values (usually $13E6/$13E7) in uberASM to override players' animations using the provided animations or your own if you've coded them in and added them to the table. Powerup Objects can be added in 'opse_powerups.asm' and are a lot more work than adding graphics or modifying dynamic palettes, as you have code the entirety of the object yourself and potentially interfacing it with the players' existing animations. A cape object and a basic sample floater object have been provided. If there's main code that needs tweaking, all of that is in 'opse/main' in several named files. |
Tags: | dynamic lorom oam overworld player pose sa-1 tile yoshi |
Comments: | 18 (jump to comments) |
Download
55.69 KiB | 178 downloads
Comments (18)
I'm currently working on OW Custom Powerups graphics for my hack because of this.And finished! Other than those problems, great patch.- Lunar Magic v3.51
- SA-1 Pack v1.40
- Asar 1.71
- Yoshi Expansion Kit v1.01
- BSNES v115 (single player stuff)
- Mesen 2 (two player stuff)
Removed dots from folder names (UNIX dotfiles are considered "hidden" but these are too important to be hidden), fixed major glitch where the palette was messing up on SA-1 (S-CPU code must use S-CPU registers, C-CPU must use C-CPU registers), fixed broken non-dynamic Yoshi Expansion indexing (redundantTAY
removed), removed Erik from the authors since this is a near complete rewrite and consists of almost none of Erik's codes (not to mention he requested himself to be removed from the list anyway)Let's be honest: This is one of the the best patches out there ever created for SMW since it gives the player sprite more freedom (most notably, diagonal sprites but also custom powerup states) and easily allows the use of better custom sprites. This does mean it's quite complex and may break some stuff (most notably, it rewrites the entire player GFX routine) and there are some bugs I've noticed two more minor bugs which I didn't
Some other things which could be a bit better for user-friendliness and either could have been handled better in general or be handled in:
- If you use
- Speaking of Yoshi: If you use non-dynamic colours, one must change
- It'd be a good idea to hide
- It's generally understood that zero means a feature is disabled and non-zero so the whole error correction stuff is actually not necessary unless you're dealing with number ranges (and even then, you can use self-correcting defines such as I do for palette stuff).
- Last but not least, for any hack which uses a CG-RAM mirror which gets uploaded every frame, allow the user to write to this mirror directly instead of using DMA all the time (saves some v-blank time since the colours don't have to be uploaded twice and the colours also are written to a CG-RAM mirror at all too)
Other improvements in regarding the patch itself:!YoshiExpansion
with dynamic Yoshi colours, you need to manually change YoshiPalPtr to have eight colours, else the colours will be messed up for the latter half of the Yoshi colours (to any user out there, ExYPal1 is gold, ExYPal2 is silver, ExYPal3 is pink / local 1, ExYPal4 is gray / local 2).YoshiGFX
to OWYoshi.bin since the palettes are static in this case($04*!8Directions)
from the user as much as possibleORA
), resulting in a slightly faster and smaller codeBut these issues are to be expected for such a big patch, something which can always be improved over time.
1. If you set !DynamicPalettes to any even value, the patch does not assemble. (using Asar 1.91)
2. If you set !8Directions to 0, the diagonal frames glitch.
I have a question though, where is the location of the actual player sprites for mario and luigi? Like the ingame ones, not the overworld ones. Also, which asm do I edit to include unique extended tiles for luigi?
Edit: Nevermind I'm an idiot, I used a rom that already had Separate Luigi GFX installed, my bad
Anyway, nice patch, tho~!
1) I tried to install this patch with Asar v1.81 and with practically nothing changed, and it gave me this error:
And I tested it with Asar v1.91, and it didn't give any of these errors.
2) The player always starts with just 1 life, but I don't know if this was a matter of debugging.
But other than that, the patch is very good. Good luck!
The recommendation would be to put at least one or more different characters in the file name when updating, or make another separate submission if you don't want.
And just a curiosity here:
If you install this patch first and then Widescreen Overworld, the dynamic graphics will not even appear, and a garbled 16x16 sprite may appear on the very left side of the Overworld for a brief moment. By installing Widescreen Overworld first and then this patch, they will work flawlessly.
In 'hijacks/continue_flag.asm', there was originally:
org $009E25
db $00
that set the lives to 1. Is that still there for you?
Also, for widescreen overworld, patch OPSE after it, not before and everything should be fine
In 'hijacks/continue_flag.asm', there was originally:
org $009E25
db $00
that set the lives to 1. Is that still there for you?
Now I turned off my computer, but it still didn't change for me.
But thanks for the reference, as the patch is very complex!
And I saw that the interpretation of my other comment was weird, which meant that Widescreen Overworld had to be BEFORE OPSE, and I updated it.