I need YOU to write hacks for Booster's Lab

Oct 19, 2014 at 4:15 PM
In my body, in my head
Forum Moderator
"Life begins and ends with Nu."
Join Date: Aug 28, 2009
Location: The Purple Zone
Posts: 5998
So you mighta saw that I finally added the hackinator to BL
If you haven't, what the heck are you reading this for? Go download the latest version.

Now, the great renaissance of the hackinator is that it lets you write customizable patches that people can load into BL and apply to their game. The hack files are in XML format, and you can edit them with any text editor (although I recommend something with some syntax highlighting like Notepad++)

Specifically there are a few elements that I've defined and I'll try to explain them as best I can because XML is dumb and my implementation is even dumber

So, here's a breakdown of a couple of my sample hacks.

Basic information:
First off, all XML files start with the XML version on the first line. You just gotta copy-paste this, pretty simple.
Next we have the root node, which is a <hack>. You can only have one per file and in there is where you put all the stuff. It has one optional attribute, "name", which appears at the top of the panel.

Next, is a <panel>. You could in theory place all your fields in the root <hack> node, but it won't look very good. If you're familiar with Swing layout managers, then the hack node uses a BoxLayout and panels use a GridBagLayout. There are a few gridbagconstraints you can use to arrange the elements by setting them as attributes on any child node of <panel>:
'col' sets the column of the grid. Children are parsed in order and anything after it will be placed into the same column until you change it again. However, if you add a new child <panel>, then IT's layout starts at column 0 without affecting the parent's.
'width' and 'height' are not currently implemented but planned to be. This is how many "cells" in the grid subsequently added elements take up.
Currently the gridy attribute (the 'row') is locked at RELATIVE, meaning elements added in a column get put on the bottom.
panels can also have a 'title' attribute, which will generate a titled border around them.

The next most important element is the <field> tag, which lets you define a variety of elements depending on what you have set the 'type' as. Most field elements have an 'offset' attribute, which is where their relevant data gets patched to, and a 'size' indicating how many bytes of data are being changed

[type='label']
This is just a simple text label. Setting the size or offset does nothing, as labels never generate patches. Use this to tell your users what to fill in.

[type='text']
A plain text entry field. It will attempt to load the memory at the offset into the text field. Please keep in mind that if the size is 4, 2 or 1 it will assume that the value is a number and any other sizes are text. There isn't any checking for input validity at the moment, so hope whoever uses it puts the right values in! \o/
Size defaults to 4 so if you are just modifying an int then you don't need to specify it, but it doesn't hurt to either in case I arbitrarily change the specification for no reason.

[type='flags']
Generates a set of checkboxes for selecting various flags. valid sizes for flag fields are 4, 2 and 1 bytes only. Each of the checkboxes have to be defined as <checkbox> elements inside the field element. A flags field may look like this:
Code:
			<field type="flags" size="1" offset="0x48f49c">
				<checkbox name="0x01" value="0x01" />
				<checkbox name="0x02" value="0x02" />
				<checkbox name="Ignore solid" value="0x04" />
				<checkbox name="Don't break when hit wall" value="0x08" />
				<checkbox name="0x10" value="0x10" />
				<checkbox name="Break blocks" value ="0x20" />
				<checkbox name="Pierce blocks" value="0x40" />
				<checkbox name="0x80" value="0x80" />
			</field>
The value of each checked checkbox gets OR'd together then applied to the address. Note that you don't have to have your values in order, nor do they have to be only single bit masks but it probably works best if they are.

More field types TBA

Player Physics:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<hack name="Player Physics">
	<panel>
		<panel title="water physics">
			<field type="label">Max run speed:</field>
			<field type="label">Max fall speed:</field>
			<field type="label">Gravity</field>
			<field type="label">Rising gravity</field>
			<field type="label">Jump speed</field>
			<field type="label">Walk speed</field>
			<field type="label">Air control</field>
			<field type="label">Friction</field>
			
			<field type="text" size="4" offset="0x4156E8" col="1"/>
			<field type="text" size="4" offset="0x4156EF" />
			<field type="text" size="4" offset="0x4156F6" />
			<field type="text" size="4" offset="0x4156FD" />
			<field type="text" size="4" offset="0x415704" />
			<field type="text" size="4" offset="0x41570B" />
			<field type="text" size="4" offset="0x415712" />
			<field type="text" size="4" offset="0x415719" />
		</panel>
		
		<panel title="regular physics" col="1">
			<field type="label">Max run speed:</field>
			<field type="label">Max fall speed:</field>
			<field type="label">Gravity</field>
			<field type="label">Rising gravity</field>
			<field type="label">Jump speed</field>
			<field type="label">Walk speed</field>
			<field type="label">Air control</field>
			<field type="label">Friction</field>
			
			<field type="text" size="4" offset="0x415712" col="1"/>
			<field type="text" size="4" offset="0x415729" />
			<field type="text" size="4" offset="0x415730" />
			<field type="text" size="4" offset="0x415737" />
			<field type="text" size="4" offset="0x41573E" />
			<field type="text" size="4" offset="0x415745" />
			<field type="text" size="4" offset="0x41574C" />
			<field type="text" size="4" offset="0x415753" />
		</panel>
	</panel>
</hack>
 
Oct 19, 2014 at 5:07 PM
Um... Chosen One? Yeah that'll work. : P
"..."
Join Date: Aug 3, 2014
Location: worm hole
Posts: 362
Age: 22
Thanks Noxid, lots of fun'll be had with this.
 
Oct 19, 2014 at 7:33 PM
Professional Whatever
"Life begins and ends with Nu."
Join Date: Jan 13, 2011
Location: Lasagna
Posts: 4481
Very neat. I'll see what I can do with this.

I made a title screen hacker. You can use this to change the framerects and render position of the title screen (and 'new' and 'load') to easily give the ability to have a big nice picture for your title screen. It should work maybe.

I've updated it so it looks less shitty and can render more stuffs.
 
Oct 19, 2014 at 7:56 PM
In my body, in my head
Forum Moderator
"Life begins and ends with Nu."
Join Date: Aug 28, 2009
Location: The Purple Zone
Posts: 5998
gr8

I've added a couple new field types in the latest version

[type='info']
Like the label, but goes into a non-editable text pane wrapped in a scroll panel.
This means you can fit a lot more text without sacrificing your layout space.

[type='data']
Fill this with hex pairs from the assembler or whatever and you can have big ready-to-go hacks. The patches are applied in order, so you could do something like write a custom NPC and then add some addresses that let you customize how fast it moves or something after.
 
Oct 19, 2014 at 10:27 PM
Professional Whatever
"Life begins and ends with Nu."
Join Date: Jan 13, 2011
Location: Lasagna
Posts: 4481
Turns out i fucked up, change the render location for 'new' and 'load' to 321, 0 when using the title screen hack and you can't move where the cursor shows up yet
i'll fix it later
 
Oct 20, 2014 at 2:50 AM
Senior Member
"I, Ikachan. The Life and Documentary of the OrigiNAL SQuiD."
Join Date: Aug 30, 2013
Location: ᕕ( ᐛ )ᕗ
Posts: 167
Age: 24
I made a hack that can easily change the title screen's song.
You just put the song's number in and it'll change the title screen's song to that.
After seeing that Doors made a title screen hack, I thought a title screen song hack would go along well with it, so... I made it.
(admittedly, i needed a bit of help from noxid to get it to work)
 
Oct 21, 2014 at 3:09 AM
The TideWalker
Modding Community Discord Founder
"That dog!"
Join Date: Apr 5, 2013
Location: In my mind and of my body.
Posts: 1640
Age: 26

My infamous IBF hack:

Code:
<?xml version="1.0" encoding="UTF-8"?>
<hack name="IBF command">
	<panel>
		<field type="label">NPC 352</field>
		<field type="info">
			Infinite Booster Fuel
			An TSC hack that let's you fly forever with booster when set. Set = *IBF0002 Not set = *IBF 0000 NOTE: it says set/unset even if you die so you might want to throw an extra flag into the death script.
		</field>
			
		<field type="data" offset="0x46d5d0">
         a1 d8 5a 4a 00 03 05 e0 5a 4a 00 82 79 01 49 0f
		 85 4e 79 fb ff 82 79 02 42 0f 85 44 79 fb ff 82
		 79 03 46 0f 85 3a 79 fb ff a1 e0 5a 4a 00 83 c0
		 04 50 e8 f9 42 fb ff 83 c4 04 83 f8 02 74 0c c7
		 05 f4 37 49 00 00 00 00 00 eb 0a c7 05 f4 37 49
		 00 02 00 00 00 83 05 e0 5a 4a 00 08 e9 76 7c fb
		 ff 00 00 a1 e8 e6 49 00 83 3d f4 37 49 00 02 74
		 03 83 e8 01 a3 e8 e6 49 00 e9 16 86 fa ff
		</field>
		
		<field type="data" offset="0x415c5d">
        e9 d1 79 05 00 90 90 90 90 90 90 90 90
		</field>
		
		<field type="data" offset="0x424eaf">
        e9 1c 87 04 00
		</field>
	</panel>
</hack>
 
Oct 21, 2014 at 4:30 AM
Professional Whatever
"Life begins and ends with Nu."
Join Date: Jan 13, 2011
Location: Lasagna
Posts: 4481
Oct 25, 2014 at 1:35 AM
Pirate Member
"Heavy swords for sale. Suitable for most RPG Protagonists. Apply now!"
Join Date: Dec 26, 2007
Location: Lithuania
Posts: 1946
Noxid I can barely write 20 words without forgetting what I was writing about and you're talking about programming codes wait what was I
 
Feb 5, 2016 at 3:14 PM
Professional Whatever
"Life begins and ends with Nu."
Join Date: Jan 13, 2011
Location: Lasagna
Posts: 4481
Feb 10, 2016 at 2:26 AM
Amaya
Discord Group Moderator
"What're YOU lookin' at?"
Join Date: Jan 18, 2013
Location: Somewhere quiet with many birds
Posts: 1118
Age: 25
Hey, Noxid! I was going to be a productive member of society for once and try to write the Infinite Mimiga Mask hack, but it turns out that Hina already did...a year ago, actually. But since that was several months before the Hackinator reached completion, I'll link it as a small service.

Thanks for all of your work on Booster's Lab, by the way. c:
 
Feb 10, 2016 at 3:47 AM
Senior Member
"Huzzah!"
Join Date: Feb 13, 2015
Location: Canada
Posts: 216
Age: 25
Yes, many thanks for Booster's Lab, and thanks to those who made hacks for the hackinator!
 
Feb 10, 2016 at 1:24 PM
beep boop
Bobomb says: "I need a hug!"
Join Date: Aug 16, 2014
Location: no
Posts: 845
Age: 22
Wait, it isn't actually complete though. The patch to make it function with the npcs was never put into it.
 
Feb 10, 2016 at 3:33 PM
hi hi
"What're YOU lookin' at?"
Join Date: Oct 17, 2011
Location: probably somewhere else
Posts: 1099
Age: 26
Hey, Noxid! I was going to be a productive member of society for once and try to write the Infinite Mimiga Mask hack, but it turns out that Hina already did...a year ago, actually. But since that was several months before the Hackinator reached completion, I'll link it as a small service.
I really did?

Wait, it isn't actually complete though. The patch to make it function with the npcs was never put into it.
Then be a kind soul and finish it if you want to
 
Jul 13, 2016 at 6:30 AM
In my body, in my head
Forum Moderator
"Life begins and ends with Nu."
Join Date: Aug 28, 2009
Location: The Purple Zone
Posts: 5998
May 12, 2017 at 10:59 AM
Giving it my all and shooting for the moon.
Modding Community Discord Admin
"What're YOU lookin' at?"
Join Date: Apr 23, 2013
Location: In a cave above the surface.
Posts: 1068
Age: 25
Hey babe I wrote the remaining bullet tables and labeled the unknown one that was in misc-bullets.

So now you can edit whimsical stars/curly's nemesis/spur trails/blade slashes etc.
Even the clear_all_enemies one is in there though pretty sure editing that won't really work as intended.

I don't think I'm finished either there might be more patches to come.

EDIT: I made two more for FPS and Booster Fuel (Separating 0.8 and 2.0 even), the link above should house all of them.

EDIT 2: lol I did this from 11 PM to 5 AM and now there is Map Boss Health. I'm gonna go die on my bed now.
 
Last edited:
May 12, 2017 at 9:48 PM
In my body, in my head
Forum Moderator
"Life begins and ends with Nu."
Join Date: Aug 28, 2009
Location: The Purple Zone
Posts: 5998
thanks dude
I've included them in the most recent update, as well, a note for anyone who uses github the hacks directory is part of the repo so you can submit a pull request to https://github.com/taedixon/boosters-lab and submit hacks that way now as well.
 
Top