Language…
22 users online: AmazingChest,  AmperSam, anonimzwx, Blizzard Buffalo,  Eden_, elegist, Fozymandias, GRIMMKIN, h.carrell, Hiro-sofT, Maw, Mr. MS, mtheordinarygamer, NewPointless, NTI Productions, Null42, playagmes169, Snowfool948,  Thomas, Tulip Time Scholarship Games, underway,  yoshi3706 - Guests: 298 - Bots: 477
Users: 64,795 (2,373 active)
Latest user: mathew

IS there a GIEPY Tutorial? (EDIT: Figuring out Sprites and GIEPY)

I've been agonizing over this new GIEPY program for a while now, and I still haven't gotten anywhere. I'm poring over the documentation here, I tried searching for GIEPY Conversion guides, or really anything to help me use this new program, and I can't find squat.

I've edited the List doc for a single sprite: just this Goomba. So, I get it's a PIXI sprite, so I copied the Routines folder over to GIEPY's directory. But in the GIEPY readme on how to use PIXI sprites, it says to change the json or cfg files into GIEPY's format, but... how? What json/cfg files?

Then install GIEPY with the PIXI compatibility, which is just enabling it in the GUI, right?

And... on the list... for this, I just put the Goomba cfg and asm files into "giepy/sprites/normal" and put "00:1 normal/pixi/goomba.cfg"?

I'm sorry, it's been so long since I did any of this that I wasn't even around for whatever PIXI is, and now there's a brand new program, and-- yeesh, I'm lost on all the changes.


EDIT 1: Oh, right. Uh, after doing the above, I'm getting an error saying that in the .asm file, there is an "Unknown macro." Several, actually, but I don't entirely know what to make of that.
Originally posted by NAM
So, I get it's a PIXI sprite, so I copied the Routines folder over to GIEPY's directory.

You can do that but if you use PIXI sprites, you also need to set the "libraries directory" accordingly. Assuming you are using the Piee interface, you can find it in the toolbar under "Option > Directory option" and either set that to 'routines' or simply merge the routines folder into the existing libraries folder.

Originally posted by NAM
But in the GIEPY readme on how to use PIXI sprites, it says to change the json or cfg files into GIEPY's format, but... how? What json/cfg files?

It's the json and cfg files that come with the sprites themselves. There are examples that come with GIEPY that show how the new cfg and json files need to be set up. json mostly stays the same. For cfg files you need to add a few lines - that's found in the readme.

Originally posted by NAM
Then install GIEPY with the PIXI compatibility, which is just enabling it in the GUI, right?

Yes, make sure you had that option on when you first used GIEPY, else tick 'Force re-install' (untick after use).

Originally posted by NAM
And... on the list... for this, I just put the Goomba cfg and asm files into "giepy/sprites/normal" and put "00:1 normal/pixi/goomba.cfg"?

Setting the direct path will work (i.e. remove the 'pixi' in the path).

Originally posted by NAM
EDIT 1: Oh, right. Uh, after doing the above, I'm getting an error saying that in the .asm file, there is an "Unknown macro." Several, actually, but I don't entirely know what to make of that.

Most likely due to not finding the PIXI routines, which it should after doing the first mentioned step.
Aha, okay, I see now!

I got it to insert properly, but I may well have messed something up; loading the sprite in-game crashes, hah! So, I added the lines as requested to the .cfg file, so it now just looks like this:

Code
01
36
10 80 04 81 00 20
00 00
ClassicGoomba.asm
00:00
01                           ; sprite sub type (01 = regular sprite)
ff                           ; unique info
00                           ; extra bytes length
                             ; asm file name (2)


Admittedly, I copied the additional lines from the FireBro.cfg example that was included. While the readme had "00" on line 6 instead, the FireBro had this; is that the issue? It said the line was ignored.

EDIT: Oh! The sprite info said that the Goomba had an extra bit to become a Paragoomba; could that be the issue? Is "ff" for the extra bytes length connected, or am I not at all on the right track...?
Originally posted by NAM
EDIT: Oh! The sprite info said that the Goomba had an extra bit to become a Paragoomba; could that be the issue? Is "ff" for the extra bytes length connected, or am I not at all on the right track...?


The cfg looks fine. I'm not quite sure myself what "unique info" relates to but so far (using 60+ custom sprites) I've had most at 00 and never had any issues. I doubt it's directly related to extra bit/byte.

You need to differentiate between extra BIT and extra BYTE.
If there's an optional extra BIT, that's just a single flag that's on or off. It's as easy as inserting in gruop 2 (off) or group 3 (on) in the list file. (Possibly this is just a temporary workaround because most PIXI users are used to this. There might be another way to enable the extra bit independently from the sprite group.)
If there's extra BYTES, line 9 comes into play. Extra bytes are configured directly within Lunar Magic, Alt-Rightclick a sprite and the "Extension" field controls the extra byte.

From the sound of it your goomba just uses the extra bit, meaning the cfg file is fine and adding it to sprite group 3 will make it a paragoomba.

As to why it crashes, not sure.
Ah, okay, thank you for bearing with me.

So, the odd thing is: When inserted into Group 2, it functions just fine without crashing! So, I guess I'll just have to fiddle with things to get it to work out.

Thanks for your help. :)
Originally posted by NAM
Ah, okay, thank you for bearing with me.

So, the odd thing is: When inserted into Group 2, it functions just fine without crashing! So, I guess I'll just have to fiddle with things to get it to work out.

Thanks for your help. :)

There might be some shenanigans. Thing with GIEPY is, you can override the original sprites, which mostly use group 0. Their respective sprite numbers can be found in the Lunar Magic sprite list. Just very few of the original sprites actually use the extra bit (from the top of my head I can only think of the Secret Exit Goal Bar), which means it uses the same sprite number but is in group 1. Therefore, I guess it's safest to stick to groups 2 and 3 for custom sprites until you get a better feeling of handling custom sprites.
I decided to try out other sprites, currently the SMB2 Panser sprite (a classic, really), but while its fireball assembles fine, now there's an error when trying to assemble the Panser itself. This one seems to be an error with the sprite itself, since the error says "Define !7FAB40 not found".

Notably, I have to use the SA-1 converter, but with/out using it still doesn't work. No matter which Group I put it in (I only tried 2 and 3), it's the same error. I made sure to change the .asm file to denote 02 as its fireball, too, so I'm not sure.

Additionally, when denoting the fireball, do I leave it as 02, or make it 02:2?
It's because certain sprites requires extra bytes being activated. In order to enable extra bytes with GIEPY, you can use the GUI and set in the options "Enable Extra Bytes". But keep also in mind that extra bytes are only enabled in the ROM when GIEPY is used the first time on the ROM, when you install GIEPY. Fortunatelly, you can reinstall it by checking the option "Force re-install" and run GIEPY with this option enabled (note that you need to do this once so it's a good idea to uncheck "Force re-install" after doing this).

Another thing to keep in mind is to reload the ROM in Lunar Magic everytime you use a sprite with extra bytes enabled as Lunar Magic only reads from the extra byte table when the ROM is loaded (also only required if you add or remove a sprite with extra bytes to the sprite list).
And finally, extra bytes are set in the extension field when inserting a sprite manually. It isn't limited to values from 00 to FF but also from 00000000 to FFFFFFFF (depending on how many extra bytes a sprite uses).
Okay, I see it now, thank you! But, how do I set the fireball in the .asm file? I set the proper number sprite that I insert for the fireball, but I think there's a problem with it trying to use whatever BE:0 instead of BE:2, like I inserted it as. Do I have to somehow specify the extra bit for the sprite?

EDIT 1: I had another thought: In the .cfg file, when it seeks the Extra Bytes Length, do I need to set that for this if the sprite uses the Extension? When I set the length to 09, it let me edit the Extension in LM, but it still doesn't change behavior, like the ASM file says it should.

EDIT 2: Okay, like I said, I got the different Panser behaviors to work. However, the fireballs still do this. They are just shelless Koopas thrown out of it. And I can't jump on them or they hurt Mario. I need to make the Panser .asm use the fireball; are there sprites that are "empty" that I should overwrite with the fireball? Or is there a way to make it use the right Sprite 02?
Well, those issues may be caused by two problems:

First, did you specify the correct sprite number of the fireball in the panser sprite? Normally, that's a define at tthe top of the file.

Second, the PIXI sprites that generate other sprites have some problems, because the code for that in GIEPY is slighly different. You can read the solution here, at the "Some sprites need modifications" note.
Originally posted by Darolac
Second, the PIXI sprites that generate other sprites have some problems, because the code for that in GIEPY is slighly different. You can read the solution here, at the "Some sprites need modifications" note.

Alternatively, the version of GIEPY I released in the announcement thread can handle old sprite spawning code.
Originally posted by Darolac
First, did you specify the correct sprite number of the fireball in the panser sprite? Normally, that's a define at tthe top of the file.


Yeah, I have. I think it was trying to use the vanilla sprites instead, so it was definitely the latter issue you mentioned.

But, Telinc's version worked like a charm. Thanks, y'all, I appreciate it!