Language…
25 users online: bMatSantos, bradcomp, DanMario24YT, DashGamer, eltiolavara9, Gorry, GRIMMKIN, hhuxy, Knight of Time, lo fang 123, Michel2023, Nayfal, nonamelol1, playagmes169, prisvag, Serena, ShadowMistressYuko, Shomi,  shovda, SMW Magic, steelsburg,  Tahixham, TheXander, Torchkas, Tulip Time Scholarship Games - Guests: 288 - Bots: 378
Users: 64,795 (2,375 active)
Latest user: mathew

Gopher Popcorn Stew Beta (BTSD replacement) [Updated!]

So over the last two weeks I took the time and recoded Block tool completely from the ground up. And last now I finished the public beta build. So before I list off the features, here is a Release Candidate download link.

GPS is now a release candidate build! This means unless major bugs around found this build will go completely public. Please test this build throughly.

Features:
1) Command line based using similar systems to addmusic and sprite tool. Should help provide minimal confusion.
2) Duplicate blocks are detected and their pointers are reused to save space
3) Only db $42 blocks are supported
4) You may optionally set the acts like setting from the block list
5) You may specify an optional command line argument to the blocks folder for seperating blocks used in different hacks (same applies for the list file)
6) You can enable a debug flag which prints the addresses of labels that are inserted. Very handy for block creation if you need to set a breakpoint.
7) All Currently accepted db $42 blocks should be compatible. So this tool is backwards compatible.
8) Shared routine mechanism, Saves space and makes coding blocks easier.
9) Cleans old BTSD code/blocks from a ROM
10) Will generate a DSC file using print data in blocks or its filename if print data is not present.
11) Several options to optimize the amount of space used (see README for details.)


The list format is pretty simple and straight forward "blockid:actslike asm_file.asm".
So as an example:
Code
200:01	power1.asm
201:25	power1.asm
202	power2.asm
203:130	power3.asm



As you can see in power2.asm the acts like was not set, it will default to whatever the tile is set as in lunar magic (usually 130). Power1.asm will also only be inserted once and the pointers will use the same inserted code. There are no side effects to doing so other than saving space.

Also as a note, the default included demo block is a random block from the blocks section. It makes the block act like 130 when mario is small, and behave as the acts like setting when powered up.

As for the name, it may stay or may be permanent not sure. For context of origin heres a brief skype log trimmed to relevant parts:

Originally posted by skype

[00:43:44] Ersanio: so it's not btsd anymore =p
[00:43:47] p4plus2: originally I wanted BIT or BITS but that could be confusing
[00:43:59] Ersanio: you should name it something ridiculous
[00:44:01] Ersanio: like
[00:44:02] p4plus2: I feel BTSD is smkdans
[00:44:10] Ersanio: Super block pro insertion tool premium X
[00:44:11] * Ersanio is shot
[00:44:26] p4plus2: oh I thought by rediculous you went random as all can be
[00:44:41] p4plus2: like "gopher popcorn stew"
[00:44:48] Ersanio: XD
[00:44:56] p4plus2: how would people react to a tool with a name like that
[00:45:08] Ersanio: no clue rofl
[00:45:17] Ersanio: you should name the tool like that when you make a thread about it
[00:45:22] p4plus2: "so to insert blocks into your ROM you need to download gopher popcorn stew"
[00:45:29] Ersanio: and at the end in very tiny letters: **name subject to change
[00:45:40] Ersanio: oh my god



Anyways, to close this out, feedback is highly welcomed as changing block tool is a major change for the site so we should do it right the first time.

Also Please feel free to suggest better names -- This name is not going to stay.
Word Salad Title.

Anyway, I don't see a need to make a new bock insertion tool...Did you make it for a similar reason to asar and FLIPS?
Originally posted by MercuryPenny
Word Salad Title.

Anyway, I don't see a need to make a new bock insertion tool...Did you make it for a similar reason to asar and FLIPS?


I made it because:
1) This one is quicker and easier to use.
2) can save space in ROMs.
3) Can be easier to make blocks for since routines can be shared.
I already like the fact, that it prints out the addresses of the inserted blocks.
With BTSD, this is always kind of a roundabout way of figuring that out.

Of course the saving space stuff is alse nice, so, in general, good work.
Anime statistic on MyAnimeList:
400 animes completed ✓
6000 episodes completed ✓
100 Days completed ✓
... what even am I doing with my life?
I always liked how in the original Blocktool you could play with the offsets to make a block that did something when you hit it from below do something when you hit it from above or the sides instead/as well, etc. I assume that Blocktool only inserted the block code once, even if the offsets were different. If I'm wrong and that's not possible, then ignore the following suggestion: I was wondering if you could implement that feature somehow... maybe you could specify an ASM file that has nothing but the JMPs and the filename of another block, and have GPS behave like it's inserting the other block, except overwrite it's JMPs with the ones from the first file?

<form action=http://google.com/search method=get> </form>

Unexpected end tag (</form>) at 960, expected </div>
This can be done using macro magic, epsilon, but I feel is inappropriate. The better idea would be to make the blocks use shared routines instead. That said I can privately give you a macro to do so if want. But it would be fit fun experimentation only. No practical block should use it, or would be accepted if it used it. Besides macro magic, there really isn't any reasonable syntax for achieving what you want. Hope this explanation helps!

Note: Typed from my phone sorry if I missed anything grammar wise our word wise.
I can just see it now...

Originally posted by someone in the near future
If you want to insert blocks, the best way currently is to use GPSB.


Either way, seems like a nice tool.
Your layout has been removed.

As I said before, I'm really excited about this as I have run in to a few issues with the BTSD in the past. I love how this will save up on much needed space and may even switch SMWCP2 over to this once any/all bugs are sorted out.
Layout by LDA during C3.
This looks pretty promising. Are you going to release the source code, though? I'd figure that you would want it to be cross-platform and such.
Originally posted by K3fka
This looks pretty promising. Are you going to release the source code, though? I'd figure that you would want it to be cross-platform and such.



It can be found in my filebin already actually. I just didn't post it here to limit confusion during the beta phase. Compile with "g++ -std=c++11 -Wall -ldl -O2 -o gps main.cpp asar/asardll.c"

Tested in Mingw 4.8 and GCC 4.8. I think versions 4.5+ should work though.
Awesome!, block tool could really use this revamp!, as for the name, how about "Lunar Blocks"?
Will you still be able to specify the Map16 tile that the block will be inserted to?
@blue leader
Thanks for the suggestion, but I feel the lunar names should be left for FuSoYa. Could give a false impression.

lately I was considering bt+2 as suggested by shadowPhoenix. Though the name it's a bit ego heavy which I don't like too much. Dunno, best I've heard so far.

@karatekid5
Yes, the first number in the map16 tile number in the list format.

No words.
Can you upload your list file do I may analyze it and see what caused the error. Also I have an update pending for gps as well.
It's fixed, I renamed the ASM file into "48x16BlockLeft.asm".

BTW: The list is here:
Originally posted by list
200 48x16BlockLeft.asm
201 48x16BlockMiddle.asm
202 48x16BlockRight.asm

And that's before I renamed the file:
Originally posted by list
200 48x16_Block_Left.asm


Edit: It's a wierd error. GPS can insert even "48x16_Block_Left.asm". But it was still odd. At least, I can insert blocks. #ab{:D}
Strange, I can't imagine why underscores would cause it to bug up. Can you zip and upload the broken list? I would like to inspect it for encoding errors. Also what editor are you editing the list with?
Originally posted by p4plus2
Strange, I can't imagine why underscores would cause it to bug up. Can you zip and upload the broken list? I would like to inspect it for encoding errors. Also what editor are you editing the list with?

Nope, it's the same list and I used the Windows notepad and Notepad++ (sometimes in the Windows notepad line breakes aren't showing up). Oh well, the error is of some reason fixed. :P
Hey, quick question, will this be/is it already compatible with SA-1? We have the Manual Insert Patch or something, but GPS would be neat to use.
I tried compiling the beta on Lubuntu 13.10 x86 and I end up with this:

Code
/tmp/ccmERRmF.o: In function `asar_init()':
asardll.c:(.text+0x52): undefined reference to `dlopen'
asardll.c:(.text+0x59): undefined reference to `dlerror'
asardll.c:(.text+0x7f): undefined reference to `dlsym'
asardll.c:(.text+0xa1): undefined reference to `dlsym'
asardll.c:(.text+0xc3): undefined reference to `dlsym'
asardll.c:(.text+0xe5): undefined reference to `dlsym'
asardll.c:(.text+0x107): undefined reference to `dlsym'
/tmp/ccmERRmF.o:asardll.c:(.text+0x129): more undefined references to `dlsym' follow
/tmp/ccmERRmF.o: In function `asar_close()':
asardll.c:(.text+0x2dc): undefined reference to `dlclose'
collect2: error: ld returned 1 exit status


Am I doing something wrong?