Log In  


Hello everyone. Today I wrote a script to swap Sprites positions without messing with the Map. Very handy to reorganise your sprite sheet. And Flags will follow. Here's how it works:

1- Make a backup

First thing first: make a backup of your p8 file!
This is important, as you can screw things up real quick if you do not pay attention.

2- Get the script

Create an empty file named "swapspr.lua" that you'll put alongside your p8 file.
Copy/paste this script to "swapspr.lua" and save it:

function swapspr(n1,n2)
	for i=0,7 do
		local p1=i*64+n1*4+448*flr(n1/16)
		local p2=i*64+n2*4+448*flr(n2/16)
		local b1,b2=peek4(p1),peek4(p2)
		poke4(p2,b1)
		poke4(p1,b2)
	end
	local f1,f2=fget(n1),fget(n2)
	fset(n1,f2)
	fset(n2,f1)
	for x=0,127 do
		for y=0,127 do
			if mget(x,y)==n1 then
				mset(x,y,n2)
			elseif mget(x,y)==n2 then
			 mset(x,y,n1)
			end
		end		
	end	
	cstore(0x0000,0x0000,0x7fff)
end
---------------------

Note: the last 21 caracters "-" are important, otherwise, you'll mess the include.
See bug here: https://www.lexaloffle.com/bbs/?pid=64985#p (for @zep)

3- Prepare your p8 file

Open your p8 file and add those two line at the very begining of your code:

#include swapspr.lua
swapspr(3,6)

In this example, we are swaping positions of sprites numbers 3 and 6:

4- Run

Run your p8 file and that's it!
Your sprites position have swaped while keeping their flags:

And (magic) the Map didn't change:

5- Clean

Run this script as long as you need to swap positions.
Don't forget to remove the two lines you added at the start of your code once you have finished.

I hope this will save a lot of time for the Pico-Eighters like me that don't think about sprite order until the need to save space and tokens...

Right now, it only swaps 8x8 sprites, but that can be modified easily.

3


Awesome! I don't see any need for me to use this (KEYWORD: ME) but then again, I have all my games in an early state.



[Please log in to post a comment]