Name: | PIXI v1.40 - Sprite Insertion Tool |
Authors: | Atari2.0, JackTheSpades, Tattletale |
Added: | |
Version History: | View |
Operating System: | Windows |
Platforms: | SNES |
Games: | SMW |
Source Available: | Yes |
Featured: | Essential |
Website: | Link |
Description: | A sprite insertion tool made to allow more dynamic sprite usage, space savings and more SA-1 compatibility. Despite this, it is almost fully compatible with sprites written for older SpriteTools, save for the fact that Asar is now used as the assembler. There also the new sprite status table that has been moved from 1938 to 7FAF00, used by SubOffScreen routines since version 1.2.10. Since version 1.2.13, now you can disable the 255 sprite per level support by using the -d255spl flag. This is only useful if you are converting old romi sprites to pixi and you don't know what you are doing. You will have to rebuild your rom in case you already ran pixi +1.2.10 without that flag and want now to use the flag. Detailed usage instructions, common errors and changes compared to older sprite tools can be found in the included readme.txt file. Version history can be found in changelog.txt. Source (up to date now): https://github.com/JackTheSpades/SpriteToolSuperDelux List of known bugs/issues: https://github.com/JackTheSpades/SpriteToolSuperDelux/issues?q=is%3Aopen+is%3Aissue+label%3Abug Any weird issues you may encounter, contact me on discord (Atari2.0#1706). Changelog: Version 1.40 (October 3, 2022): - (Atari2.0) Fix list.txt parsing bug when paths would get wrongly split for containing spaces. - (Atari2.0) Now pixi also prints warnings that asar gives instead of silently ignoring them. - (Atari2.0) Fixed oversight in extra byte count assignment - (JamesD28) Updated circle routines to fix sign issues with large radii on LoRom. - (Atari2.0) Better error messages in general. - (Atari2.0) Fixed extended sprites cape interaction. - (lx5, Atari2.0) Added support for minor sprite types (minor extended, bounce, spinningcoin, etc.) - (Atari2.0) Fix misplaced bracket causing ExtendedHurt routine to send Yoshi always to the right. - (KevinM) Extended/Cluster defines update (details [here](https://github.com/JackTheSpades/SpriteToolSuperDelux/commit/0e0d4d24dee1066118635da3824fc648f71bd630)) - (spooonsss) ExtendedGetDrawInfo: properly despawn when extended sprite is vertically offscreen - (Atari2.0) Add all of the LM3.30 ssc/mwt features. More details in README.md - (lx5) Updated cluster sprites routines - (Atari2.0) Added utf-8 paths support on Windows. This should fix any issues with paths containing non-ascii characters. - (Atari2.0) Completely overhaul the build system, use CMake, enable building pixi as a .dll, add APIs for python, c and c#. - (Atari2.0) Now the print statements in sprites can be substituted by labels (`init:` etc) and they are not case sensitive anymore (e.g. `print "init", pc` works) - (Atari2.0) A lot (and I mean a lot) of internal C++ code changes to improve the codebase and speedup the tool as well as major changes to the build system. These changes are massive but they should not be visible to external users. As such they won't be reported here but they can be found in the single commits in the repository. - (Atari2.0) Add support for having a pixi_setttings.json in the same folder as the executable. This file will be used to get command line options if present. Format explained in the README - (Atari2.0) Now you can have subfolders in the routines folder, the subfolder path and the routine filename will be joined to be used as the routine name, e.g. routines/Bounce/Spawn.asm -> %BounceSpawn() Version 1.32 (January 23, 2021): - (Atari2.0) Fixes spritetool_clean.asm not being in the asm/ folder. - (Atari2.0) Now permits nested shared routine calls, fixing https://github.com/JackTheSpades/SpriteToolSuperDelux/issues/28 - (Atari2.0) Updated asar.dll to 1.80, fixes https://github.com/JackTheSpades/SpriteToolSuperDelux/issues/35 - (Atari2.0) Updated and fixed make, Makefile and .gitignore - (Atari2.0) Added escaping to ! in filepaths, fixes https://github.com/JackTheSpades/SpriteToolSuperDelux/issues/16 - (Atari2.0) Added autoclean to all sprite pointers, fixes https://github.com/JackTheSpades/SpriteToolSuperDelux/issues/34 - (Atari2.0) Fixed various compiler warnings, swapped fread arguments causing an error when writing extmod file. - (Atari2.0) Fixed snestopc not working correctly on SA-1 roms bigger than 2 mbs - (Atari2.0) Greatly refactored and reworked MeiMei, embedded both ROM classes in one - (Atari2.0) Made Pixi work on +6mb ROMs correctly - (Atari2.0) Now can use -nr to specify max number of shared routines - (Atari2.0) Fixed various memory leaks, along with a couple of asar warnings related to relative paths being used. - (Atari2.0) You can now use comments in your list.txt file - (Atari2.0) Completely rewritten populate_sprite_list and relative_directory to fix various bugs related to pathing. Version 1.31 (November 4, 2020): - (Atari2.0, randomdude999) Fully implemented Romi's SpriteTool legacy cleanup (note that this doesn't mean that now Pixi can coexist in the same rom as SpriteTool but it means that at least SpriteTool roms can be easily upgraded to Pixi without breaking massively as long as you do it properly). ASM file used for cleanup provided by randomdude999. - (Atari2.0) Fixed an issue where upon upgrading from 1.2.x to 1.3, Pixi would completely destroy overworld layer 2 events. - (Atari2.0) Upped limit for .s16 files from 0x10 pages to 0x38 pages - (Atari2.0) Added extmod support (for specifics read the Lunar Magic help file in the section "Restore Options"), also added a "-ext-off" command line option to turn off extmod logging. - (Atari2.0) Finished implementing -mw2 and -mwt command line options, since they were not completed. - (Atari2.0) Fixed a bunch of compilation warnings. - (Atari2.0) Added a command line option (-lm-handle) strictly to enable the use of Pixi in the custom user toolbar of Lunar Magic, check LM's help file for more details. Usage is: "-lm-handle <LM_VERIFICATION_HANDLE>", this command line option can't be used out of LM's custom user toolbars. Keep in mind that this is Windows only. - (Atari2.0) Added an icon to the executable file. Version 1.3 (September 19, 2020): - (Atari2.0) Added a lot of utility routines (CapeContact, CheckForContactAlternate, SetPlayerClippingAlternate, SetSpriteClippingAlternate, LoseYoshi, FinishOAMWrite, FireballContact) most of these were taken from GIEPY. Credit to respective authors in the asm files. - (Atari2.0) Fixed a bug regarding cape interaction with extended sprites by adding a print "CAPE" statement, along with an ExtendedCapeClipping routine - (Atari2.0) Added a SpawnSpriteSafe routine to fix a problem related to how the vanilla game handles OAM in certain sprite slots. - (Atari2.0) Optimized Random a little bit - (Akaginite, randomdude999 and Atari2.0) Fixed, reworked and merged the per-level sprites update. Now you can use B0-BF as normal sprite slots aswell, reduced insert size - (Atari2.0) Added print statements for states that are not 8, more details in README.txt - (Atari2.0) Fixed various bugs related to per-level sprites in sprite.cpp - (Atari2.0) Added a warning in case the user is inserting Pixi while having the VRAM patch from LM disabled. - (Alcaro) Updated asardll.c to not give compiler warnings about strict aliasing and a missing cast - (randomdude999) Fixed compilation on Linux, added basic makefile - (lx5, Atari2.0) Updated CFG Editor and Pixi to support json files with more than 4 extra bytes for custom collections. - (Atari2.0) Changed SA1 definitions to use absolute addressing instead of long addressing. - (Atari2.0) Added setting bit to disable Lunar Magic sprite count warning message when using 255 sprites per level. - (Atari2.0) Fixed per-level sprites displaying 9 extra bytes in the Lunar Magic window, forced to 4 (as a side effect of this, in fact, per level sprites now can only use up to 4 extra bytes). Version 1.2.15 (July 10, 2020): - (Atari2.0) Removed unnecessary waiting (BRA $00/NOPs) in SA-1 version of various routines (Aiming, CircleX, CircleY, Random) - (Atari2.0) Added exception control for missing .json files. Now it will output exactly what json file was not found instead of printing the stacktrace. - (Atari2.0) Added a command line option "-out" that can be added after "-d" to redirect debug output to a file instead of the prompt/stdout. - (Atari2.0) Fixed trimming of filenames causing bug with trailing whitespaces in .cfg/.json names in list.txt - (Atari2.0) Added a warning in case the user is inserting Pixi into a rom without having modified any level in Lunar Magic, causing various bugs (like goal posts not working). |
Tags: | cluster extended insert inserter insertion sa-1 sprite sprite tool spritetool |
Comments: | 165 (jump to comments) |
Rating: |
Download
952.33 KiB | 6,606 downloads
Comments (165)
After weeks testing sprite after sprite, I went into testing the misc sprites as well, among some of the new features and the normal stability test. Resuming everything, I did not find enough issues for a rejection, for everything I tested worked fine.
That being said, my only suggestion was to improve the readme, which is already being done for the next versions. This is minor, though, and won't sway my final decision, which is to accept this update.
If I put in 7B in PIXI.
I get a goal bar no matter what custom sprite I select.
Sorry to hear! Is the site accepting volunteers? I would need to be more active on the forums and qualify myself first, but I've been in this community for eight years on and off.
Can you do for both 32-bit and 64-bit versions?
I'm using Windows 10 32-bit (x86).
I am sorry. I don't know how to do it.
Also, why does the custom extended sprite increase YSpeed by 3 when gravity is applied? Normally it should increase by 2.
And do you know about this patch?
Yeah, I also find Sonikku’s hammer’s gravity a bit too much. But I’m using your patch with PIXI 1.40 and it works just fine from my testing. I even used the patch with Atari’s test suite version from a year ago and it worked just fine. All thanks to my rigorous testing!
Also, why does the custom extended sprite increase YSpeed by 3 when gravity is applied? Normally it should increase by 2.
And do you know about this patch?
If your rom crashes on sprite apply then delete all unused sprite files
Is there any way to fix it?
Does anyone know what this means/how to fix it? Idk what this patch its referring to is, and I cant find any info online
The patch is contained within Lunar Magic. It is applied as soon as you modify any levels of your ROM with it.
On any line (blank lines or on a sprite definition row) anything after a (;) will be considered a comment and be ignored while PIXI runs. This makes it easy to add notes, for example which ExGFX goes with which custom sprite.
Aside of the basic functionalities being preserved, I tested all the new additions and they work. Then, let's accept this.
If you're used to other smw hacking tools as AMK or GPS it shouldn't be that hard, but in any case, there's a tutorial here
This will be fixed within this week.
The tool is already hosted on the site. Link
how do i remove the rom sprite?
Yeah it's made in C/C++ (mostly C), it is not accounting for encoding whatsoever.
I will register that as a bug in the github, but do not expect that to be fixed lol.
The same happened to _header.asm and asm files of sprites I try to insert, though these file exist in a correct folder. I read readme and then think that this error is relevant to incsrc/incbin, but I don't know what this is and what I shoud do.
You fucked up your folder, they are all inside the zip file.
I didn't, but problem was resolved. It is because file path name is not alphabet that error happened.
The same happened to _header.asm and asm files of sprites I try to insert, though these file exist in a correct folder. I read readme and then think that this error is relevant to incsrc/incbin, but I don't know what this is and what I shoud do.
You fucked up your folder, they are all inside the zip file.
The same happened to _header.asm and asm files of sprites I try to insert, though these file exist in a correct folder. I read readme and then think that this error is relevant to incsrc/incbin, but I don't know what this is and what I shoud do.
No. Pixi doesn't touch anywhere near there.
Your rom is corrupted.
The only way to corrupt your rom with pixi is if you run pixi without any normal sprites in its list and then run it again, blowing up your rom. The issue is listed in the known issues link and this would cause your rom to crash before entering the showoff level, right after the nintendo presents screen.
If that's not the case, you will have to check on your own what corrupted your rom.
Great tool!!
Free speech and a not-so-free rate systems are a pretty cool combination, aren't them?
I don't care about pixi's ratings. What is he gonna do? Use another tool? Be my guest lmao.
Here's the fixed version.
I will update pixi with these two fixes (this and the other one I posted here) this weekend.
Replace it with this:
Or read my comment below.
I will make a new pixi release (1.2.5) and I will turn off the perlevel feature by default (currently it's turned half on, which is not good, prior versions were on). Shouldn't take long for the release to be submitted.
Meanwhile, you can use the good old -npl flag and make a bat with it like:
*pause is optional*
*save it as <whatever name you want>.bat*
Next release this flag will do nothing but won't cause any harm and a new flag called -pl will be added to toggle perlevel insertion.
Any questions or issues, you can find me in discord.
also, someone should really backport these changes to the github repo
Also, these changes should probably be merged back into the GitHub repo too (which is a bit inconvenient, considering that the only active person who has push access to the repo is RPG Hacker but he doesn't have internet at home currently, only at work).
I would prefer it to be a new version because it does not work with me, something needs to be improved
Test it if work or not?
- Load m16 does nothing.
- Neither does Load GFX33.
- I assume the 8x8 Tile Selector would allow me to make my custom map16 tiles, but I can do nothing in it.
- Changing to 8x8 mode in both windows still only pastes 16x16 tiles, and no, I can't remove one by one, I can only remove the 4 or nothing.
- Who should I pray for this to save?
- You can't use the mousewheel to scroll.
-
with all due honesty never touch this again unless you plan to stick around, be responsive to the bug reports and keep up with our own progress in the pixi fork.
Potential resolutions (rather, workarounds) have been found and are being tested for inclusion in an unofficial future version of PIXI.
besides that, what else, and is the softlock bug fixed?
The sprite was made for trasm, check if it has been remoderated in the sprites section.
If so you're good to go if you download the remoderated sprite.
If not you'll have to try and use trashkas (Included in "asm/Converter Tools" and see if that can convert the sprite correctly.
If that does not work you're probably better of asking for help directly or waiting for it to get remoderated.
As for the mushroom sprite it might be using some stuff that asar doesn't like but xkas allows.
First step applies to this as well but if it hasn't been remoderated you probably don't want to convert it if it doesn't throw errors as that will cause it to definitely break.
I tried both versions, but I deleted your version and then uploaded this version. So I need both versions for it to work?
Edit: Okay, after about two or three hours of copying and pasting the files like it said, I think it worked, but I inserted the sprites, and I have the mushroom that gives you more time so when I collect it, the screen just like blinks and turns blank and the music plays in the background. Am I missing something? It worked fine for the SMW2 soldiers that walk and run around in the castles, but I don't know what is wrong w/the mushroom sprite. People were being overcritcal saying that it played the halfway point sound so I don't know if that might have something to do w/it. That wasn't my fault.
If you're talking about my version then it only contains the modified files so you still need to download the actual tool and replace the files.
If you downloaded the original tool then make sure to put it in it's own folder to not mess with other tools that might be using a different version of asar.dll
Error: Asar library is missing, please redownload the tool or add the dll.
Edit: Now, I try this version, and I get a lot of errors:
18 Shared routines registered in "routines/"
An error has been detected:
sprites/birdo.asm:16: error: Unknown command. [TILEMAP dcb $8E,$AE,$8E,$EE,$CE,$AE]
sprites/birdo.asm:17: error: Unknown command. [VERT_DISP dcb $F0,$00,$F0,$00,$F0,$00]
sprites/birdo.asm:18: error: Unknown command. [PROPERTIES dcb $40,$00]
sprites/birdo.asm:25: error: Invalid number. [dcb "INIT"]
sprites/birdo.asm:26: error: Label SUB_GET_DIR not found [JSR SUB_GET_DIR]
sprites/birdo.asm:48: error: Invalid number. [dcb "MAIN"]
sprites/birdo.asm:49: error: Unknown command. [HAMMER_BRO_JSL PHB]
sprites/birdo.asm:53: error: Label START_HB_CODE not found [JSR START_HB_CODE]
sprites/birdo.asm:64: error: Unknown command. [DEC RAM_ThrowTimer,x]
sprites/birdo.asm:72: error: Unknown command. [X_SPEED dcb $00,$F8,$00,$08]
sprites/birdo.asm:73: error: Unknown command. [TIME_IN_POS dcb $50,$20,$50,$20]
sprites/birdo.asm:75: error: Unknown command. [RETURN RTS]
sprites/birdo.asm:76: error: Unknown command. [START_HB_CODE JSR SUB_GET_DIR]
sprites/birdo.asm:80: error: Label SUB_GFX not found [JSR SUB_GFX]
sprites/birdo.asm:83: error: Label RETURN not found [BNE RETURN]
sprites/birdo.asm:85: error: Label RETURN not found [BNE RETURN]
sprites/birdo.asm:87: error: Label SUB_OFF_SCREEN_HB not found [JSR SUB_OFF_SCREEN_HB]
sprites/birdo.asm:92: error: Label LABEL3 not found [BEQ LABEL3]
sprites/birdo.asm:98: error: Unknown command. [LABEL3 STA $1602,x]
sprites/birdo.asm:102: error: Label JUMP_BIRDO not found [BCS JUMP_BIRDO]
More errors too.
It just says this, and then hangs.
line: 00:00
num: 0, ex: 0, char: :
line: 00:00
num: 0, ex: 0, char: :
line: 1
num: 1, ex: 0, char: F
18 Shared routines registered in "routines/"
how can i fix it
Where did you put Pixi, for me it seems to work just fine.
This is surprisingly easy to fix. I haven't tested it with custom cluster sprites, but it should work. First, comment out lines 123-125 and 265-273 from extendnstl.asm. Go to the end of the file and add a new line which says print "GetExtOAMIndex: $",hex(GetExtOAMIndex). Apply the patch and write down the offset it gives you.
After that, go into PIXI's asm/cluster.asm. If you've previously applied extendnstl.asm, remove the autoclean from line 14. Find line 37 (BEQ .return) and, on a new line after it, put PHA : JSL $xxxxxx : PLA. Replace $xxxxxx with the offset you wrote down earlier. Now PIXI won't break the graphics of cluster sprites or nuke your ROM. You should change the offset in asm/cluster.asm every time you reapply extendnstl.asm to make sure it doesn't change (I could make it read it from the ROM, but I'm too lazy).
Yes, thats an asar bug with having a %Macro() in between main label and sublabel(s), but whats with the underline part?
(PS: Really REALLY REALLY hope asar had this macro issue resolved, having sublabels are not only used to prevent redefined errors, but also keeps the code structure (viewed by a programmer) organized). Using + and - doesn't help much on telling a code its purpose.
mod edit: stop stretching tables
1) I put this in list.txt: 00 donut_lift.cfg. I only put that sprite in and no other sprites for testing to see if it successfully inserts.
2) I run the exe file and put the ROM on it to insert. It spits out an error on my face:
Don't tell me that this is like GPS's sublabel problem/glitch, where if you use a .sublabel before a %CallSubroutine() whatever label inside CallSubroutine.asm is assumed present in the file that calls the sublabel causing it to error out saying no parent or redefined:
Edit: blame asar for this buggy macro.
When I insert some sprites in a ROM with SA-1.
The basic shooters (Bullet Bill (C9) and Torpedo Launcher (CA)) doesn't work after the insertion.
Please fix that.
Sorry! We don't allow you to use the tool while on an outdated version of Windows. (Curse you, Windows XP!!!)
I tested on my Windows XP and Doesn't work with the "CFG Editor GUI"
and Tested with Windows 7 or Higher but It works Fine
I can fix This!
God damn it people, it's not the end of the world.
it's just one dude
First, >ASMtool
Second, how old is your hack if it cant handle gps
Third,
God damn it people, it's not the end of the world.
If no bugs are found in this tool, there will be no need for Romi's any more.