View Full Version : BCCS: Battery Check Creation Station
Jerrythabest
May 10, 2007, 08:06 AM
Heh, yesterday I felt like editing 1.10o JCS to make a BCCS. Here's some progress:
-Title bar text
-Open/save texts
-About menu option text
-About window caption
-About window text
-About window picture
-JCS.ini read-only error message window caption
-JCS.ini read-only error message text
-JCS.ini not found error message window caption
-JCS.ini not found error message text
-Display settings error message window caption
-Display settings error message text
-Removing non-BC features from BCCS windows
-Icons
-Help files
-JCS.ini
Done Problem! Todo
I don't know if I'm allowed to upload it here when I'm done, but right now I think I may because there are many exe edits here anyway ;p Just say it if I may not upload it, J2O staff :p
So, what do you think of this idea? (Note that you can not make me stop working on it ;p)
cooba
May 10, 2007, 08:18 AM
As an admin I have nothing against Battery Check uploads on J2O. I'm not sure about the rest of the admins though. I don't have the final say.
Also Violet has (had?) a very well working .ini for Battery Check levels, I think
Jerrythabest
May 10, 2007, 08:41 AM
Meh, I ran into a problem... I'm trying to change 'Jazz Creation' into 'Battery Check Creation' and 'JCS' into 'BCCS' but the problem is that I have no idea how to insert bytes without screwing up the whole exe file ;p
Violet CLM
May 10, 2007, 08:51 AM
Also Violet has (had?) a very well working .ini for Battery Check levels, I think
I don't think I ever actually tested to see if it worked, and it only supported the demo version anyway, none of the full version events.
Jerrythabest
May 10, 2007, 08:52 AM
I'll just make a new JCS.ini file, that's not a problem ;p
The byte issue is however ;p
DoubleGJ
May 10, 2007, 09:07 AM
When all else fails, name it BatC Creation Station.
Jerrythabest
May 10, 2007, 09:10 AM
kay =) though I hope that I won't have to do that ;p
Yuck, another problem.. I can't find a freeware CHM creator :/ I continue to run into trials...
Birdie
May 10, 2007, 10:50 AM
Birdie doesn't see any reason to just change the UI of JCS and rename it, even though functionality will remain the same.
n00b
May 10, 2007, 10:56 AM
Isn't the only thing worth doing is changing the jcs.ini to say Battery check events? That should have been done first, I don't care if a JCS is called BCCS if it still has JJ2 event names.
Jerrythabest
May 10, 2007, 11:07 AM
Well the text changing was the easiest and fastest part, so I just started with that first ;p
I'll start editing JCS.ini right now
n00b
May 10, 2007, 11:09 AM
I have written down somewhere some of what the events should be for BC. If I find it, I can send them to you if you want.
Jerrythabest
May 10, 2007, 11:14 AM
Oh, yes please =D I'm @ msn =)
cooba
May 10, 2007, 11:14 AM
For starters, event 56 (RF +15 crate) is the boss ;)
(and the only thing I remember)
Jerrythabest
May 10, 2007, 11:15 AM
Haha, I'll make a level with all events in it, and see what I come across ;p
Birdie
May 10, 2007, 01:10 PM
Birdie doesn't see any reason to just change the UI of JCS and rename it, even though functionality will remain the same.
<!---->
Violet CLM
May 10, 2007, 05:28 PM
<a href="http://www.tachyonlabs.com/sam/jjhq/files/JCS.ini">Found it!</a>
Jerrythabest
May 11, 2007, 12:52 AM
Whoa, that'll help ;p "thanks"
Doubble Dutch
May 11, 2007, 06:13 AM
Huzzah! Excellent news!
Birdie
May 11, 2007, 01:34 PM
Birdie doesn't see any reason to just change the UI of JCS and rename it, even though functionality will remain the same.<!--HI ;d-->
FQuist
May 11, 2007, 05:59 PM
I agree with Birdie. I don't know if it is smart to upload a fullblown application to a site with just a few strings changed to make it look like BCCS.
Jerrythabest
May 12, 2007, 08:30 AM
Well, I'll upload the whole application anyway as hardly anyone has the original one ;p
FQuist
May 12, 2007, 08:32 AM
I'm not sure that's legal.
ShadeJackrabbit
May 12, 2007, 08:58 AM
Uploading the JCS? I'd think not. It's not legal to give out JJ2, so I don't think that giving out the JCS is. Even if it isn't the exact same program.
Grytolle
May 12, 2007, 10:15 AM
Attention Everyone!!!
Carrotade Was Made Using A Disassembler Thats Illegal You Can Get Capital Punishment
Violet CLM
May 12, 2007, 10:20 AM
1.23+ was uploaded to J2O, and that's an edited <i>Jazz2.exe</i>. Surely that's worse than uploading a program which ONLY works with a FREEWARE game (or an unreleased beta that people who don't break the law wouldn't have ANYWAY).
Jerrythabest
May 12, 2007, 11:40 AM
Exactly, that's what I thought too (see first post). Keeping this from being uploaded would make even less sense than the Eurovision Song Contest ;p
Nonomu198
May 12, 2007, 12:11 PM
Dont remind me.
So how the BCCS going?
Sasik
May 12, 2007, 12:40 PM
I'm not sure that's legal.
Uploading the JCS? I'd think not. It's not legal to give out JJ2, so I don't think that giving out the JCS is. Even if it isn't the exact same program.
Call FBI or Interpol already :rolleyes:
R3ptile
May 12, 2007, 01:02 PM
Call FBI or Interpol already :rolleyes:
http://upload.wikimedia.org/wikipedia/en/thumb/7/7b/Interpol_band.jpg/220px-Interpol_band.jpg
Jerrythabest
May 12, 2007, 01:04 PM
So how the BCCS going?
It's a little bit hard atm, as I'm trying to get the water event to work... it needs something else than only its 'own event', though I can't find out what. Also, UR's JCS.ini lacks some event parameters whose purpose I need to figure out.
Until now I've done the events by putting a few in a level (starting by #1) but I'm going to do it another way: first, I make a list of all event numbers that are used in the original BC levels with the highest values for the parameters that have been used. This way I'll have the clearest possible overview of the working events. Then I'm going to view them all individually, preferably in their original levels, so that I can find out their purpose.
Summary: <strike>I'll be back next year</strike> This'll take some time, but then I know how stuff works so that I can actually give the events and their parameters names! The way I done it so far was simply too ineffective.
Neobeo
May 12, 2007, 03:15 PM
Meh, I ran into a problem... I'm trying to change 'Jazz Creation' into 'Battery Check Creation' and 'JCS' into 'BCCS' but the problem is that I have no idea how to insert bytes without screwing up the whole exe file ;p
For various reasons (technical and non-technical), it would not be such a good idea to change the title. For all the effort you'd have to put into performing such a feat, in the end it's just a useless title which people could not care less about. Nevertheless, if you really have to change a short string into a longer one, here's how you do it. It would most definitely require a knowledge of x86 asm though, if not as insight into the PE file format as well.
Disclaimer: Not for the weak of heart; read at your own risk.
JCS was most likely programmed in C/C++, so it uses null-terminated C-strings. These strings are referenced as a pointer. These pointers are referenced by some ASM instruction. These ASM instructions are contained inside some well-defined function. These functions would be collectively grouped inside some section of code. The offsets of these code sections would be specified inside the PE section table. The PE section table can be found without too much effort by reading the PE header. The PE header is near the start of the EXE file. So, as long as you have an EXE file, you can work backwards through these steps, and change the ASM instruction to point to another string in another location.
Until now I've done the events by putting a few in a level (starting by #1) but I'm going to do it another way: first, I make a list of all event numbers that are used in the original BC levels with the highest values for the parameters that have been used. This way I'll have the clearest possible overview of the working events. Then I'm going to view them all individually, preferably in their original levels, so that I can find out their purpose.
My sentiments exactly. In fact this process can be automated via a J2L cruncher. You can use one to process the Data2 stream (events) to produce a list of all events being used. Maybe even one step further is to filter out bitmasks that are being used for each event ID. This way you won't need the clearest possible overview, but you'll have a thorough list which does not miss out anything.
FQuist
May 12, 2007, 04:22 PM
1.23+ was uploaded to J2O, and that's an edited <i>Jazz2.exe</i>. Surely that's worse than uploading a program which ONLY works with a FREEWARE game (or an unreleased beta that people who don't break the law wouldn't have ANYWAY).
With no additional files, 1.23+ is useless. It can pretty much been seen as a "patch". JCS.exe is standalone.
So it's a rather weird distinction... I'm mostly nitpicking here. There's a point though.
Violet CLM
May 13, 2007, 10:29 AM
But JCS.exe also needs additional files... if you don't have Battery Check levels or tileset files, what are you going to <i>do</i> with it?
Jerry: Water event, do you mean the pools or just "Water Level"? Ignore the one that's taken over from the JJ2 JCS.ini, I accidentally left that in from when I was curious if <i>any</i> JJ2 events had been left in the BC engine.
n00b
May 13, 2007, 01:20 PM
I found my list and according to that One Way is the same event.
Rest of the list:
these don't include anything marked on the list as being in Violet's .ini but some probably are.
Gun5Am15-----Battery Boss
Gun2Am13-----Special Battery (I can't remember what this is)
SwingVine-----Recharger Station
Purple Gem-----Button used to attack Battery Boss
Bomb Crate-----Red Sucker
1up Barrel----- Orange Sucker
????-----Battery Boss Screen
1upCrate-----Suck Tube?
Bomb-----Door Type 2
BlueGem-----Used in a level, not sure what it does. Probably a battery.
????-----Radioactive Goop(The green drops)
????----- AirJet platforms
Jerrythabest
May 14, 2007, 08:57 AM
JCS was most likely programmed in C/C++, so it uses null-terminated C-strings. These strings are referenced as a pointer. These pointers are referenced by some ASM instruction. These ASM instructions are contained inside some well-defined function. These functions would be collectively grouped inside some section of code. The offsets of these code sections would be specified inside the PE section table. The PE section table can be found without too much effort by reading the PE header. The PE header is near the start of the EXE file. So, as long as you have an EXE file, you can work backwards through these steps, and change the ASM instruction to point to another string in another location.
I understood all of this (yes, I'm surprised too) but I have no idea how I will find these instructions ;p Oh well, I'll just stick with 'JCS' for now.
My sentiments exactly. In fact this process can be automated via a J2L cruncher. You can use one to process the Data2 stream (events) to produce a list of all events being used. Maybe even one step further is to filter out bitmasks that are being used for each event ID. This way you won't need the clearest possible overview, but you'll have a thorough list which does not miss out anything.You got one? That'll help a lot ;p
EDIT: a whole lot
finnish pro
May 18, 2007, 04:55 PM
hey, the name could be Battery Check Station.
n00b
May 18, 2007, 07:05 PM
hey, the name could be Battery Check Station.
From now on we should call the JCS the Jazz Jackrabbit Station
Jerrythabest
May 19, 2007, 01:34 AM
I could name it the Battery Creation Station just like the Jazz CS.. but that sounds like it's a battery factory ;p
Neo's post about a J2L cruncher made me stop indexing the events (as well as private reasons) as I'm not going to do so much time-consuming work if it can be done autmatically in a split second... just so you know
Neobeo
May 19, 2007, 04:59 AM
It wasn't meant to be taken that seriously; there is no such program :(
finnish pro
May 19, 2007, 06:10 AM
From now on we should call the JCS the Jazz Jackrabbit Station
Aren't you little bit sarcastic?!?!
n00b
May 19, 2007, 06:23 AM
Aren't you little bit sarcastic?!?!
I see you haven't read my profile. (http://www.jazz2online.com/jcf/showpost.php?p=399394&postcount=1)
finnish pro
May 19, 2007, 09:43 AM
Ok, now i understand.:p
Jerrythabest
May 21, 2007, 12:39 PM
LOL, I ran into a... somewhat... big... parameter value scale :/ This may be the clue to my problem with creating water... what is a parameter value like "4" compared to this?
Everyone who has 1.10o JCS: do the following:
-Replace event 46 of JCS.ini (you may want to back up the original event 46 by putting ';' in front of it; JCS will ignore that line in the file then) with this: 46=046|046||Unknown1XXX:30|Unknown2:10|Unknown3:10 |Unknown4:10
-Load the level 'Binnen.j2l' in JCS and go to pos (123;93)
-Put your pointer on it
-Read the status bar
;p
For those who don't have 1.10o JCS or are too lazy to reproduce wicked fun:
A screenshot (http://84.107.204.56/bigparamvalscale.jpg)! (... a screenshot that only works when my computer is online ;p)
EDIT: And I seem to have found a very weird 'BatteryCheck Rule': all events' parameter #3 has the event number as their value.
Grytolle
May 21, 2007, 12:52 PM
isnt that because it's a negative value
Jerrythabest
May 22, 2007, 04:04 AM
Well, you are right: on that paramter some values happen to be below zero... though actually that number was not negative
EDIT: and that rule I stated above is only true if you set all event parameter value ranges in jcs.ini to 10... I think the paramter values are only accurate for JCS.ini value ranges of -8 to 8 (which results in ranges from -128 - 127 to 0 - 255 in JCS) as I think these values are stored as a singe byte in the j2l file, and thus only support 256 different possibilities. Stuff looks a lot more 'normal' right now, as I can't find any values above 100 very fast atm and there are no stupid rules ;p
EDIT2: actually there is a rule: parameters 1 + 5 and 2 + 6 are always identical, but I think that simply means BC (or 1.10o? don't feel like checking) uses only 4 parameters... I'll just leave 5 and 6 out.
ShadeJackrabbit
May 22, 2007, 02:50 PM
Wait... so let me get this straight:
The parameters of 1 are always identical to the parameters of 5.
Same for 2 and 6.
Therefor you just don't use 5 or 6?
cooba
May 23, 2007, 06:28 AM
BC (or 1.10o? don't feel like checking) uses only 4 parameters...BC, definitely.
Jerrythabest
May 23, 2007, 07:33 AM
Wait... so let me get this straight:
The parameters of 1 are always identical to the parameters of 5.
Same for 2 and 6.
Therefor you just don't use 5 or 6?
Yeh, I will check now if this causes problems by removing parameters 5 and 6 from JCS.ini, then making a new event with params 1-4 set, then saving, and then putting back params 5 and 6 and reloading BCCS and the level... I'll be back soon ;p
EDIT: I did:
-Removed params 5 and 6 from event 46 in JCS.ini and saved
-Loaded BCCS and Binnen.j2l and selected a random event 46 and remembered its values (didn't copypaste it)
-Created a new blank level and recreated the previously remembered event 46 in it
-Saved the level, closed BCCS and put the params back in JCS.ini
-Loaded BCCS and my blank level and checked the event I put there
Result:
Although I did not (enable me to) specify parameters 5 and 6, they had values identical to parameters 1 and 2 respectively. All 5th and 6th parameters can be taken out of the ini file =)
EDIT: Parameter 4 happened to be 'automatically set' too, so I removed that one from the ini file too.
Jerrythabest
May 23, 2007, 12:46 PM
Results of the investigation of Binnen.j2l after some nice hours of work:
--Unique event parameter combinations--
E# P1 P2 P3 type
1 0 0 0
17 0 0 0
29 0 0 0
33 1 0 0 easy
1 0 0 hard
6 0 0
6 0 0 hard
9 0 0
15 0 0
21 0 0
24 0 0
27 0 0
29 0 0
34 0 0
37 0 0
41 0 0
44 0 0
46 0 0
49 0 0
52 0 0
56 0 0
57 0 0
59 0 0
61 0 0
62 0 0
65 0 0 easy
67 0 0
67 0 0 hard
72 0 0
74 0 0
75 0 0
76 0 0
77 0 0
78 0 0
80 0 0
82 0 0
83 0 0
84 0 0
86 0 0
87 0 0
89 0 0
90 0 0
92 0 0
94 0 0
99 0 0
102 0 0
103 0 0
104 0 0
116 0 0
117 0 0
122 0 0
124 0 0
35 1 0 0
5 0 0 hard
12 0 0 hard
43 0 0
45 0 0
47 0 0
48 0 0
50 0 0
51 0 0
38 -120 33 0
-93 21 0
-55 13 0
-30 21 0
-11 21 0
-8 -13 1
-7 15 0
-6 30 0
-5 31 0
-3 15 0
-3 23 0
-3 31 0
12 17 0
73 15 0
79 23 0
124 31 0
39 34 0 0
72 0 0
73 0 0
76 0 0
79 0 0
99 0 0
117 0 0
120 0 0
121 0 0
122 0 0
123 0 0
124 0 0
125 0 0
41 -87 -70 2
-63 32 0 easy
-15 11 3
-12 44 3
67 67 0 hard
110 27 0
42 0 0 0
1 0 0
43 -54 -2 0
-44 92 0
-42 58 0
3 53 0
6 103 0 hard
44 -10 0
75 107 0
77 71 1
77 73 1
78 -85 0
82 72 1
108 -10 0
126 68 1
44 -112 -2 0
67 126 0 hard
46 -128 35 1
-116 20 3 hard
-86 43 1
-85 43 0
-80 122 0
-77 74 1
-64 17 1
-63 55 3
-62 25 0 easy
-61 25 1 easy
-60 65 0 hard
-17 122 1
0 28 3
0 49 3
45 91 0
50 75 0
64 17 3
64 26 3
69 63 1 hard
47 -127 -121 -1 hard
-63 -121 -6 hard
-63 0 -6 hard
-58 62 -6
65 -128 -6 hard
77 -96 -1
48 -107 -46 0
-41 -63 0
-40 -59 0
-39 -59 0
-38 -59 0
-37 -59 0
-36 -59 0
-35 -59 0
-34 -59 0
-27 -59 0
-26 -47 0
-24 -45 0
39 -123 0
83 -110 0
50 0 0 0
51 0 0 0
1 0 0
52 0 0 0
53 0 0 0
55 0 0 0
1 0 0
60 0 0 0
61 1 0 0 hard
3 0 0 hard
6 0 0 hard
9 0 0
12 0 0
16 0 0
18 0 0
20 0 0
41 0 0
62 0 0
63 0 0
62 0 0 0
63 0 0 0
65 102 -128 0
--Parameter ranges--
E# Min Max Special notes
1
17
29
33 0 127 high positive
35 0 63
38 1 -128 127 big range
2 -64 63
3 0 1 bool
39 0 127 high positive
41 1 -128 127 big range
2 -128 127 big range
3 0 3
42 0 1 bool
43 1 -128 127 big range
2 -128 127 big range
3 0 1 bool
44 1 -128 127 big range
2 -128 127 big range
46 1 -128 127 big range
2 0 127 high positive
3 0 1 bool
47 1 -128 127 big range
2 -128 127 big range
3 -8 -7
48 1 -128 127 big range
2 -128 127 big range
50
51 0 1 bool
52
53
55 0 1 bool
60
61 0 63
62
63
65 1 0 127 high positive
2 -128 127 big range
High positive values are most probably all ID parameters. I'm surprised by the number of big ranges though: that means at least one event in the level had a value for that parameter lower than -64 or higher than 63...
Violet CLM
May 23, 2007, 06:11 PM
I don't even know what all this stuff <i>means</i> but it looks extremely cool. :D Keep up the cool work!
Grytolle
May 23, 2007, 10:14 PM
Yeah you're doing good<3
Neobeo
May 24, 2007, 12:44 AM
Ok, I'd like to think I wasn't being a wet blanket, but many of the methods you have been discussing are stepping off the wrong path. So before we begin, I'd like to give a quick tutorial on how JCS.ini utilises bitfields.
Diagram 1.146=046|046||Param1:-8|Param2:-8|Param3:-8
^ ^ ^
bitfields -----|---------|---------|
Ok, so each event in JJ2/BC/JCS/BCCS is represented as a 32-bit structure. Of these 32 bits, the event ID already ranges from 0 to 255, which takes up 8 bits. Then the "generic event properties" such as the Difficulty and Illuminate Surroundings takes up another 4 bits. This leaves us with another 20 bits we can use for the parameters. So how do we inform JCS how many bits each parameter takes? By specifying the bitfield in JCS.ini as shown above in diagram 1.1.
In the example above, parameter 1 uses 8 bits, parameter 2 uses another 8 bits, and parameter 3 uses yet another 8 bits. That's a total of 24 bits, so in fact 4 bits are being discarded because there is no space to store them.
What about the negative sign, you ask? Ok, a bitfield of 8 means it takes up 8 bits, and is an unsigned value (i.e. 0 to 255). But if it is given a negative sign, -8, it also takes up 8 bits but is given a signed value (i.e. -128 to 127). Either way, the number of bits taken by the parameter is 8.
As an example, lets take event 192 (gem ring), which is given the parameters Length:5 | Speed:5. So if we gave it a length of 7 and a speed of 1, it would look like the following:
Diagram 1.21 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
<-------> <-------> <----------------->
length speed unused extra space
This works perfectly fine. However, if were to read the same bitfield using a different parameter setting, of lets say, Length:-8 | Speed:-8 | Param3: -8, it would look something like the following:
Diagram 1.31 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
<-------------> <-------------> <------
length = 39 speed = 0 overflow
As compared to diagram 1.2 before, this gives you a wrong reading for both length and speed. Not to mention that overflowing the 3rd parameter can have serious consequences. With that said, let's go through the problems and fix them one by one.
-Replace event 46 of JCS.ini (you may want to back up the original event 46 by putting ';' in front of it; JCS will ignore that line in the file then) with this: 46=046|046||Unknown1XXX:30|Unknown2:10|Unknown3:10 |Unknown4:10This does not happen only with event 46, but any event, as long as the bitfields are nonsensical like that. The first bitfield, 30, already pretty much overflows the buffer, so none of the 3 parameters would make any sense.
EDIT: And I seem to have found a very weird 'BatteryCheck Rule': all events' parameter #3 has the event number as their value.This rule is not valid. Maybe if you set the bitfields param1+param2 to equal to twenty, param3 would overflow back to the event number.
Well, you are right: on that paramter some values happen to be below zero... though actually that number was not negativeNo, it was not negative. The number that was given is correct, just that your bitfield was specified incorrectly.
EDIT: and that rule I stated above is only true if you set all event parameter value ranges in jcs.ini to 10...Ah ok, you corrected the above mistake. I didn't notice this earlier.
I think the paramter values are only accurate for JCS.ini value ranges of -8 to 8 (which results in ranges from -128 - 127 to 0 - 255 in JCS) as I think these values are stored as a singe byte in the j2l file, and thus only support 256 different possibilities.It is still wrong to assume all bitfields are of size 8. Some boolean values that do not need to be anything other than 0 or 1 can just have a bitfield of 1. Also, the bitfields need not be stored in a single byte. In fact they are usually spread out, eg, 3 bits in one byte and 5 bits in another byte.
Stuff looks a lot more 'normal' right now, as I can't find any values above 100 very fast atm and there are no stupid rules ;p
EDIT2: actually there is a rule: parameters 1 + 5 and 2 + 6 are always identical, but I think that simply means BC (or 1.10o? don't feel like checking) uses only 4 parameters... I'll just leave 5 and 6 out.Assuming all your bitfields here are of size 8, then param1+param2+param3+param4 will have a size of 32, which is the entire event. So param5 will overflow exactly one event length and end up back at param1. Same goes to param6. As long as the bitfields don't exceed 20, you can have as many parameters as you want.
EDIT: Parameter 4 happened to be 'automatically set' too, so I removed that one from the ini file too.Same as above. Param1 + param2 + param3 = bitfield > 20, so param4 overflows and is not safe to use. In fact param3 already overflows.
Results of the investigation of Binnen.j2l after some nice hours of work:
-- code cut out --
High positive values are most probably all ID parameters. I'm surprised by the number of big ranges though: that means at least one event in the level had a value for that parameter lower than -64 or higher than 63...Again, your ranges are restricted only by your choice of bitfields for each parameter. Not all parameters would need an entire 8 bits since they would only need to represent minimal data.
That said, that effort has not gone to waste at all! You have correctly stated that events 1, 17, 29, 50, 52, 53, 60, 62 and 63 have no parameters, thus can be kept "unparametered" in JCS.ini. Equally correct is that events 42, 51 and 55 have exactly 1 bool value, which means only one bit is used out of the twenty. Thus they can have a parameter like Param1:1.
Also, the results of your previous experiment, while not using the correct bitfields, need not be completely discarded. You could convert the parameters to binary fields and then use analysis to figure out the appropriate bitfields to use for each parameter.
Birdie
May 24, 2007, 01:57 PM
Would this mean a level saved using a JCS INI using altered bitfields would not work on another jj2 using a different JCS INI?
Jerrythabest
May 24, 2007, 02:03 PM
@birdie: as JJ2 doesn't use jcs.ini (only JCS does) I'd say it works fine on JJ2. But maybe JCS saves the file differently if you save it with another ini file... then stuff may be totally messed up, as I know now ;p
@neo: At least, that explains stuff ;p I already realized that I'd have to re-do the whole thing again as event 38's first parameter *could possibly* have some value around 200, though that won't be shown in BCCS because the -8 creates a range of -128 to 127. With your information however, I'm going to remove the parameters of events that clearly have no parameters and of course I'll make the boolean parameters really booleans. This piece of information you gave was just exactly what I needed to finish my work ;p now I can try to fit things in correctly and investigate each parameter one by one ;p I'll need another <strike>two</strike> couple of hours, but now that I started this I want to finish it too ;p
EDIT: replied to birdie and corrected the 'two hours' thing
Neobeo
May 24, 2007, 02:48 PM
@Birdie: Pretty much what jerry said. If you mess up your jcs.ini, then the level will be saved according to the jcs.ini and jazz2 will read it wrongly. Jazz2 stores its parameter bitfields internally rather than referring to a Jazz2.ini or JCS.ini.
Birdie
May 24, 2007, 04:37 PM
It would be a better Idea probably if it used jcs.ini, but whatever.
Jerrythabest
May 26, 2007, 12:46 PM
Gosh! More progress!
I cleaned up the event list a bit and I'm testing the events one by one now.
[Events] section of BCE*.ini:
1 =One Way |One |Way
17=End of level |Level |End
29=Start position |Level |Start
33=Battery holder |Batt |Holder|Global ID: 6|Direction: 1
35=Liferaft |Life |Raft |Water ID: 6
41=Water pump |Water |Pump |Global ID: 6|Full water ID: 6|Empty water ID:6
42=Recharger |Re- |charge|Direction: 1
46=Water |Water | |Water ID: 6|Width (tiles): 5|Height (tiles):5|Filled: 1|Mode: 1
50=Dripping Water |Drip |Water
51=Small enemy |Small |Enemy |Hanging: 1
52=Large enemy |Large |Enemy |Hanging: 1
53=Freddy the dragon |Fred- |dy
55=Monitor |Moni- |tor |Hanging: 1|Direction: 1
56=End boss |End |Boss
60=Extra life |Extra |Life
61=Upgrade Battery holder|Upgr. |Holder|Global ID: 6
62=Battery |Bat- |tery
63=Super battery |Super |Batt
65=Set water colour |Water |Colour|Surface colour:8|Deep colour: 8
66=Button of Death |Death |Button
70=Leaking energy |NRG |Leak
38=Elevator |Ele- |vator |Global ID: 6|2: 3|Direction: 1|Speed: 4|5: 3
39=Elevator stopper |Stop |Elev |Global ID: 6|2: 1
40=Platform |Plat- |form |Global ID: 6|2: 3|Direction: 1|Speed: 3
43=Door |Door | |Global ID: 6|Start low: 1|3: 1|Stop low:1|Speed:3|Stomps:6
44=Stomper |Stom- |per |Global ID: 6|2: 3|3: 3|4: 3|5: 4
47=Belt |Belt | |Global ID: 6|2: 2|3: 4|4: 4|5: 4
48=Transporter |Trans-|porter|Global ID: 6|Height (tiles):4|3: 4|4: 4|x:2
54=Rain |Rain | |1: 1|2: 1|4: 1|8: 1
58=Umbrella |Umbr |ella |Global ID: 6|Tracks: 3|Direction: 1|Speed: 4|5: 3
*Yeh I got it renamed. Read the following page to see it being announced.
Dermo
May 27, 2007, 10:48 AM
gj Jerrry
Jerrythabest
May 27, 2007, 01:21 PM
=D thanks.. I'll make sure that post is updated if I found out some things again ;)
Dermo
May 28, 2007, 02:29 PM
...any progress?
Jerrythabest
May 30, 2007, 06:48 AM
Not at the moment.. I got very much homework these days and thus there's no time for BCCS. I'll be back working on it next Friday
Jerrythabest
Jun 1, 2007, 01:22 PM
Whoosh, big progress today. Worked out the battery holder upgrade and the water pump and tried to find the correct amount of bits for some events. Some information on the events and their parameters:
Water
Water blocks are made with the Water event. You will have to give it an ID and of course you must specify its dimensions. The first boolean, Filled, decides if the water block is 'filled' at the start of the level, so that there is water in there. The second boolean, Mode, allows you to switch bedween two modes: the first one (0) has a diagonal end at the top right corner, the second one (1) has an all-straight vertical right end.
The Water event needs the Water Options event somewhere in the level to work. In the Options event, the color of the water (maybe among other settings) is decided. I still have to figure out its parameters, maybe I'll try to do so tomorrow.
You can fill an empty water block and you can flush a full water block with a Water pump. For this event to work, you must specify a Global ID and the IDs of the water blocks that must be changed. In this case, the Global ID refers to the Global ID number of a Battery holder. When you put a battery in it, the pump is activated and will fill the water block with the ID you entered for the 'Empty water ID' parameter and will flush the water block with the ID you entered for the 'Full water ID'. This will look like one water block is being filled with water from another.
Liferafts can be placed on water by putting them on the place you want them to float on the water and setting their Water ID number to the same value as the water block you want them to float on. It turned out it doesn't matter if the Liferaft event is placed in the level under the water surface, it will automatically be moved to the water surface.
Battery holders
Battery holders have an ID number. When you put a new battery into the battery holder, all objects on the level that have the same Global ID will be activated. If there is a Battery holder update event in the level with the same Global ID, the Battery holder with that ID will have a small device connected to it which enables the battery holder to take infinite energy from the battery you put in.
Eyecandy events
It turned out that there are events in the game that only add some eye candy. The monitor event will show a monitor with some person displayed on it. The Leaking energy event will show a small fireworks-like animation now and then. The effect is similar to what you get if you cut a wire while its plug is in the wall (use scissors with plastic on them please, don't die). The Dripping Water doesn't seem to harm you.
ShadeJackrabbit
Jun 1, 2007, 02:47 PM
use scissors with plastic on them please, don't die
It could melt the plastic. STILL DON'T TRY IT.
Jerrythabest
Jun 2, 2007, 12:47 AM
Heheh, my dad had to cut a wire once, and before he cut it he put the plug in XD the plastic indeed melted, but I'm glad it didn't melt far enaugh to hurt him. It was an awesome effect, though ;p
Grytolle
Jun 2, 2007, 02:24 AM
enough*
...seriously man :( I tried teaching you how to spell that like 2 years ago
Jerrythabest
Jun 2, 2007, 02:36 AM
Oop yes ur right ;p normally I spell it correctly.. I were just still a little bit sleepy I think ;p
This is how I check the event's parameters. I make a list of all used combinations of bits (using the knowledge I got from Neo's post) and then try to pick out the parameters... For the water pump this was rather easy as there was always a battery holder somewhere near that matched the first six bits and there were always two water events near that matched their first six bits with the second or third six bits of the pump... and it happened the one which matched the second six bits was always the water event whose Filled parameter was 1 ;p it's just a huge puzzle, but not impossible.
Occurances of Umbrella (the Rain event has bits 0101):
124862 124 124 124 12
001000 001 010 101 11
101100 111 001 001 11
101100 111 011 000 00
100110 111 110 100 00
010110 011 111 000 00
GlobID
Occurances of Stompers in Rain:
124862 124 124 124 1248
110000 100 001 100 1010
101000 110 001 011 1111
100100 110 010 010 0101
101100 100 001 101 1111
100010 000 011 111 1111
100010 000 010 101 1111
100010 010 011 111 1111
010010 000 001 010 1100
GlobID
Occurances of 043 in Binnen:
124862 124 124 124 12
011111 100 010 001 01
010100 110 111 111 10
110100 101 101 011 00
101100 101 001 001 01
101100 101 110 001 01
011000 001 110 011 00
011100 101 101 010 10
010010 100 001 001 01
011010 110 101 110 00
001101 000 110 111 10
001101 100 110 111 10
110000 001 010 110 00
001010 110 011 101 00
GlobID
Jerrythabest
Jun 6, 2007, 08:32 AM
I found that if you give the water options event (which happens to change nothing else than the color of the water) two parameters of 8 bits, changing the first parameter will only change the water surface and changing the second will only change the rest of the water. Also, setting both parameters to the same value will cause the water to be completely in the same color. Because there are 256 values possible for each parameter, I'd say the value refers directly to a palette entry.
-If there is anyone who could think of another way this parameter is used, please say so.
-If you know a way of getting the palette for the Binnen-tileset, then say so as knowing the palette would really help me to check if the water options parameters really refer to palette entries.
EDIT: thanks to n0 for reminding me about F12 I got the palette =) Now checking the parameter values
EDIT2: checked and I were right.
Doubble Dutch
Jun 8, 2007, 02:33 AM
-I *was* right, grammar now!
Jerrythabest
Jun 8, 2007, 05:10 AM
Whoa me has done that wrongly all time to now! Why you not said it?
Oh well, I'm back working on BCCS... now investigating the elevators.
Grytolle
Jun 8, 2007, 05:51 AM
were I right froze the hell over
Jerrythabest
Jun 8, 2007, 06:45 AM
I added a parameter '?:1' to each finished event and checked if it worked differently with that parameter set to 1. It turned out the monitors can be horizontally mirrored too =)
FreeFull
Jun 8, 2007, 09:58 AM
Too bad they cant be flipped vertically (monitor on the celling XD )
Jerrythabest
Jun 9, 2007, 01:56 AM
Well you can set it to hanging=1... if you put it on a tile just below the ceiling it will be looking like it's haning on there.
Look my little control room:
<a href="http://jerry.webwideworlds.com/zooi/BCCS/9jun07%20monitors%20example.jpg" target="_blank"><img src="http://jerry.webwideworlds.com/zooi/BCCS/9jun07%20monitors%20example.jpg" width="500" height="250" /></a>
FreeFull
Jun 9, 2007, 03:42 AM
Oh, thanks
Dermo
Jun 9, 2007, 07:43 PM
...and progress?
Jerrythabest
Jun 10, 2007, 06:04 AM
See post #57. Stuff will get harder now, as I'll need to find out what those parameters do. Some, for example the second and fifth of the umbrella, are behaving very weird IMO, I'm just not sure what they really do.
Dermo
Jul 2, 2007, 02:47 PM
Progress report plz.
Jerrythabest
Jul 3, 2007, 06:17 AM
No progress because of school. New progress will come soon.
Dermo
Jul 3, 2007, 07:01 AM
are you in summer school or something?
Jerrythabest
Jul 3, 2007, 11:24 AM
Well, test week until today. Now I'm free :D Only got to go back to school two times, first to recieve the tests I made the past week and then again for returning the schoolbooks. I'll try to finish some events before I go for a two week holiday in Egypt on the 12th. People that already have the 1.10o JCS may just replace the [events] section of their ini files with the stuff I got already, then they wouldn't have a 'clean' BCCS, but at least some events work.
Valco
Jul 10, 2007, 07:42 AM
BCCS...
Catchy. :)
finnish pro
Aug 22, 2007, 11:17 AM
This thread is kinda... dead, i think... but is the BCCS?
Jerrythabest
Aug 22, 2007, 11:54 AM
Oh oops lol forgot after I returned from Egypt. I'll continue work on it soon ;)
Jerrythabest
Sep 20, 2007, 02:04 PM
I finally kept my word. BCCS now has its own registry keys so it doesn't have to share them with 1.10o JCS, which gives stupid path issues. Also the JCS.ini is now called BCE.ini (E=Events) and I'm slowly removing anything BC doesn't support (like object illumination and secret/bonus levels).
Dermo
Sep 20, 2007, 07:10 PM
Jerry you are the man! If you need any help or questions, PM me.
Ricerind
Sep 23, 2007, 08:37 AM
What is done so far then?
Jerrythabest
Sep 23, 2007, 12:41 PM
Sigh. See first post.
Dermo
Sep 23, 2007, 12:43 PM
lawl
Ricerind
Sep 26, 2007, 11:22 AM
I think it's legal now, so check this out.
http://www.jazz2online.com/J2Ov2/downloads/info.php?levelID=4835
Jerrythabest
Sep 27, 2007, 07:32 AM
Nice. Commented it ;) Just to keep you busy.
Krinya
Oct 20, 2007, 01:52 PM
I readed back some pages. Nice work!
But when ready the BCCS?
Or already ready?:confused:
Dermo
Oct 20, 2007, 06:32 PM
Jerry probably forgot about BCCS (again)
Jerrythabest
Oct 22, 2007, 07:34 AM
Were away some time and busy the other time but hope to work on it this week again. Biggest problems atm are with the events, as I completely don't understand how BC handles speed and distance settings for moving objects.
Jerrythabest
Oct 22, 2007, 07:48 AM
I'd like to know in which order the event number, illuminate surroundings, difficulty and parameters are saved. That might give me a clue on why there are easy and hard events in binnen.j2l where BC doesn't support difficulty settings.
Ricerind
Oct 23, 2007, 06:28 AM
When this is released, i'll be happy to convert 1.23 tilesets to BC/1.10o tilesets for anyone who wants.
EDIT: See here (http://www.jazz2online.com/jcf/showthread.php?p=417426).
Jerrythabest
Oct 23, 2007, 01:36 PM
Maybe you want to view some screenies.
http://jerry.webwideworlds.com/zooi/BCCS/10may07%20bccs.png - A little outdated picture of BCCS with the About dialog. I changed the stibat URL, that's all.
http://jerry.webwideworlds.com/zooi/BCCS/24oct07%20displayset.jpg - A funny dialog window I ran into with Resource Hacker. It tells you BCCS needs big screens and 16bit colors for working with 256 color tilesets. Hurray.
http://jerry.webwideworlds.com/zooi/BCCS/24oct07%20iniwritable.jpg - Another one I ran into which is less pointless ;) This dialog is also fully BCCS'd.
http://jerry.webwideworlds.com/zooi/BCCS/24oct07%20levprops.jpg - Clean yer room m8s. Pointless stuff is to be removed, rite?
Ricerind
Oct 23, 2007, 01:48 PM
Nice work.
Jerrythabest
Oct 23, 2007, 01:51 PM
Also got some BCE.ini news: it's updated again.
1 =One Way |One |Way
17=End of level |Level |End
29=Start position |Level |Start
33=Battery holder |Batt |Holder|Global ID: 6|Direction: 1
35=Liferaft |Life |Raft |Water ID: 6
41=Water pump |Water |Pump |Global ID: 6|Full water ID: 6|Empty water ID:6
42=Recharger |Re- |charge|Direction: 1
46=Water |Water | |Water ID: 6|Width (tiles): 5|Height (tiles):5|Filled: 1|Mode: 1
50=Dripping Water |Drip |Water
51=Small enemy |Small |Enemy |Hanging: 1
52=Large enemy |Large |Enemy |Hanging: 1
53=Freddy the dragon |Fred- |dy
55=Monitor |Moni- |tor |Hanging: 1|Direction: 1
56=End boss |End |Boss
60=Extra life |Extra |Life
61=Upgrade Battery holder|Upgr. |Holder|Global ID: 6
62=Battery |Bat- |tery
63=Super battery |Super |Batt
65=Set water colour |Water |Colour|Surface colour:8|Deep colour: 8
66=Button of Death |Death |Button
70=Leaking energy |NRG |Leak
38=Elevator |Ele- |vator |Global ID: 6|2: 3|Direction: 1|Speed: 4|5: 3
39=Elevator stopper |Stop |Elev |Global ID: 6|2: 1
40=Platform |Plat- |form |Global ID: 6|2: 3|Direction: 1|Speed: 3
43=Door |Door | |Global ID: 6|Start low: 1|3: 1|Stop low:1|Speed:3|Stomps:6
44=Stomper |Stom- |per |Global ID: 6|2: 3|3: 3|4: 3|5: 4
47=Belt |Belt | |Global ID: 6|2: 2|3: 4|4: 4|5: 4
48=Transporter |Trans-|porter|Global ID: 6|Height (tiles):4|3: 4|4: 4|x:2
54=Rain |Rain | |1: 1|2: 1|4: 1|8: 1
58=Umbrella |Umbr |ella |Global ID: 6|Tracks: 3|Direction: 1|Speed: 4|5: 3
Notes:
-Events with a space before their event number have shown up in different difficulty modes.
-I found out stuff about the 'Door' event, but I have no idea what parameter 3 of 'Door' could possibly do. I just see nothing changing.
-I also found out stuff about the 'Transporter' event. At first I honestly didn't know what it could be, but then I decided to try it out in the original levels and it turned out to be something to move upwards. Still I couldn't figure out more settings than just the height.
-Tried to sort out the 'Umbrella' event but still have no idea what parameter 5 does, though I defenately see things changing when I change its value. I did figure out the 'Tracks' parameter: it lets you decide how many times the umbrella may turn about when it reaches a wall. Just couldn't come up with a better parameter name.
-That's it.
FreeFull
Oct 23, 2007, 02:21 PM
About the first screenshot, the icon in top left corner needs to be changed. Can you change the colour of the interface?
Jerrythabest
Oct 23, 2007, 02:57 PM
1) As you can see in the first post icons are not yet created.
2) Sadly no. Maybe the colors are easily editable with a hex editor, but even then you'll need to know exactly which bytes you must be changing.
FreeFull
Oct 23, 2007, 04:14 PM
I can make the icon for you, just say what format do you need it in. About the chm file, maybe http://abeetech.com/chmmakerpro/ will help (haven't tried it).
Jerrythabest
Oct 24, 2007, 01:32 AM
I installed it and because I installed it it's no longer usable. Read this:
Unregistered version limitations:
You can use the program for 30 days for evaluation purposes. In this case, you will see its nagscreen each time you start the program. Besides, you could't make CHM with more than 10 items at one level of TOC with unregistered version. So if you want to create a full-featured CHM in our program, you should buy it. After the purchase, all these limitations will be disabled and you will be able to use the program as long as you want.
It's impossible to finish both BCCS and the help file in only 30 days. I could have used it if I could start making a CHM right now, which I can't. Why don't they state you can't use it after a month on the website!
Jerrythabest
Oct 24, 2007, 02:04 AM
Got a good one now: www.vizacc.com free and professional :D
FreeFull
Oct 24, 2007, 04:36 AM
Oh, didn't know it was trial because it was not stated on the website.
Ricerind
Oct 24, 2007, 04:49 AM
Evil corporate corporateness.
wadledee
Oct 24, 2007, 09:14 AM
I might have missed something....
but...
what in the world was Battery Check creation station?? I heard it had to do something with sending (real) batteries to those guys to recycle them (yap, I lost the word for it).
Nevertheless, it sounds like fun.
Jerrythabest
Oct 24, 2007, 09:38 AM
Years and years ago Stichting Batterijen (http://www.stibat.nl) (Stibat), a Dutch company that was founded to make people recycle batteries, started to give away a game called "Battery Check". If you could beat all three levels and the end boss you would get to see a text and if you send Stibat this code you can get prizes. Battery Check was made using a pre-release version of the JJ2 engine, somewere around JJ2 version 1.10o. 1.10o has been given out to a very limited number of people as a so-called 'press release'. In 2004, one community (http://www.jazz2online.com/jcf/showthread.php?t=10565) member leaked it out. 1.10o comes with its own version of JCS which happens to be compatible with Battery Check's levels!
Battery Check Creation Station is the name of the 1.10o JCS makeover I'm currently making.
Ricerind
Oct 24, 2007, 09:40 AM
1.10o JCS can open the levels, but it can't interpret the events and some other stuff correctly. Fixing this is part of the BCCS project.
Battery Check also included some nice tilesets.
Jerrythabest
Jul 12, 2010, 02:31 PM
I picked up on this project again. I want to see it finished, I've come so far...
Though a few weeks ago I re-installed both of my computers. And it was after that, that I realised the back-up I made somehow failed after copying files and folders with names beginning with the letter C. I had BCCS, along with BC itself, in a subfolder called 'Spellen' (Dutch for 'Games'), so I lost my progress. Luckily, I had some notes and screens stored elsewhere, as well as the BCE.ini copies in this thread, so today I've been pretty much re-doing all the cosmetic changes I made to the UI (name changes, the image found in windows like the About one) as well as some behind-the-scenes changes (like BCCS using its own registry key instead of JCS's).
There's only 2 things I haven't re-done yet:
1) Remove all options BC doesn't support (I did gray most of them out already, but they are still visible etc.)
2) Clean up the BCE.ini file (it still contains JCS junk that's no longer needed/supported)
And then I'll get back working on the events! :)
Violet CLM
Jul 12, 2010, 11:21 PM
Thank you for reminding me that there are tools to edit all those little popup windows and things JCS is full of. What did you do for registry keys?
Jerrythabest
Jul 13, 2010, 04:23 AM
I used Resource Hacker for the popup windows and menus. The registry keys can be changed by editing the exe with a HEX editor, I used SweetScape's 010 Editor. (Does anyone know a good, free HEX editor?)
Dermo
Jul 13, 2010, 08:32 AM
Olly Debugger
Jerrythabest
Jul 14, 2010, 11:28 AM
I found out how the Platform and Umbrella events work. Their parameters appear to be identical, but are somewhat surprising.
1 =One Way |One |Way
17=End of level |Level |End
29=Start position |Level |Start
33=Battery holder |Batt |Holder|Global ID: 6|Direction: 1
35=Liferaft |Life |Raft |Water ID: 6
40=Platform |Plat- |form |Global ID: 6|Tracks: 3|Direction: 1|Speed: 4|+Tracks (x8):3
41=Water pump |Water |Pump |Global ID: 6|Full water ID: 6|Empty water ID:6
42=Recharger |Re- |charge|Direction: 1
46=Water |Water | |Water ID: 6|Width (tiles): 5|Height (tiles):5|Filled: 1|Mode: 1
50=Dripping Water |Drip |Water
51=Small enemy |Small |Enemy |Hanging: 1
52=Large enemy |Large |Enemy |Hanging: 1
53=Freddy the dragon |Fred- |dy
55=Monitor |Moni- |tor |Hanging: 1|Direction: 1
56=End boss |End |Boss
58=Umbrella |Umbr |ella |Global ID: 6|Tracks: 3|Direction: 1|Speed: 4|+Tracks (x8):3
60=Extra life |Extra |Life
61=Upgrade Battery holder|Upgr. |Holder|Global ID: 6
62=Battery |Bat- |tery
63=Super battery |Super |Batt
65=Set water colour |Water |Colour|Surface colour:8|Deep colour: 8
66=Button of Death |Death |Button
70=Leaking energy |NRG |Leak
38=Elevator |Ele- |vator |Global ID: 6|2: 3|Direction: 1|Speed: 4|5: 3
39=Elevator stopper |Stop |Elev |Global ID: 6|2: 1
43=Door |Door | |Global ID: 6|Start low: 1|3: 1|Stop low:1|Speed: 3|Stomps:6
44=Stomper |Stom- |per |Global ID: 6|2: 3|3: 3|4: 3|5: 4
47=Belt |Belt | |Global ID: 6|2: 2|3: 4|4: 4|5: 4
48=Transporter |Trans-|porter|Global ID: 6|Height (tiles):4|3: 4|4: 4|x:2
54=Rain |Rain | |1: 1|2: 1|4: 1|8: 1
For some totally weird reason they split up the 'Tracks' bitfield, inserting Direction and Speed in the middle of it. So you've got 2 parameters that control how many tracks (does anyone have a better word for it?) the platform/umbrella completes: parameter 2 ('Tracks') and parameter 5 ('+Tracks (x8)'). The number you enter in the '+Tracks (x8)' field, will be multiplied by 8 and added to the number you entered in the 'Tracks' field. Don't ask me why they didn't just make it a single 6-bit parameter.
Also, setting both 'Tracks' parameters to 0 wouldn't make any sense, so the game automatically corrects this to 1. So even with 'Tracks' set to zero, the platform/umbrella will move one time.
EDIT: now also updated screenshot links in this thread to point to where they're really to be found.
Jerrythabest
Jul 22, 2010, 03:33 AM
Elevators appear to work just the same.
The Rain event has one 5-bit parameter that specifies how much energy each drop of rain takes from you.
I thought the Dripping Water event could have the same parameter, so I tried it out to see if I could get it to hurt you. Turns out it has an 8-bit parameter to specify the delay between drops. I tried the same with Leaking Energy, but this event works completely random, it seems.
In search for unused events, I tried to place some unknown events (in fact I tested all events up to #173, after which I got tired of it) in a level to try them out. While some events crash the game, most of them simply do nothing. Though I did find something!
Event 37 appears to clone the Water Pump event (41). I don't know anything about BC's (or Jazz2's for that matter) inner workings, but my totally random guess is that this happens because, by coincidence, event 37 points to the same memory location as event 41.
Event 68 spawns an energy ball as seen in the end boss level. I think the end boss is simply generating this event above his head. Just like with the End Boss and the Button of Death, BC writes a line 'BOSS found at ..' in the Battery.log file. It only shoots once, so it's pretty much useless in levels, but this discovery gives hope that there is a very slim chance that we could replicate JJ2's Generator event in BC.
Event 69 appears to be just a regular Battery pickup at first sight. But you can't pick it up. Can be used in levels to mislead players, or just for eyecandy.
I hope some reverse engineer could, at the very least, have a look at event 37. I really wonder if it's got anything to do with event 41. And of course it would be great if someone could search for unused events 'from the inside out', if this is possible. By simply putting the unknown events in a level I'm going to miss any events that don't cause a visible change.
1=One Way |One |Way
17=End of level |Level |End
29=Start position |Level |Start
33=Battery holder* |Batt |Holder|Global ID: 6|Direction: 1
35=Liferaft* |Life |Raft |Water ID: 6
38=Elevator |Ele- |vator |Global ID: 6|Tracks: 3|Direction: 1|Speed: 4|+Tracks (x8):3
40=Platform |Plat- |form |Global ID: 6|Tracks: 3|Direction: 1|Speed: 4|+Tracks (x8):3
41=Water pump* |Water |Pump |Global ID: 6|Full water ID: 6|Empty water ID:6
42=Recharger |Re- |charge|Direction: 1
46=Water* |Water | |Water ID: 6|Width (tiles): 5|Height (tiles):5|Filled: 1|Mode: 1
50=Dripping Water |Drip |Water |Delay: 8
51=Small enemy |Small |Enemy |Hanging: 1
52=Large enemy |Large |Enemy |Hanging: 1
53=Freddy the dragon |Fred- |dy
54=Rain |Rain | |Damage: 5
55=Monitor |Moni- |tor |Hanging: 1|Direction: 1
56=End boss |End |Boss
58=Umbrella |Umbr |ella |Global ID: 6|Tracks: 3|Direction: 1|Speed: 4|+Tracks (x8):3
60=Extra life |Extra |Life
61=Upgrade Battery holder*|Upgr. |Holder|Global ID: 6
62=Battery |Bat- |tery
63=Super battery |Super |Batt
65=Set water colour |Water |Colour|Surface colour:8|Deep colour: 8
66=Button of Death |Death |Button
70=Leaking energy |NRG |Leak
39=Elevator stopper |Stop |Elev |Global ID: 6|2: 1
43=Door* |Door | |Global ID: 6|Start low: 1|3: 1|Stop low:1|Speed: 3|Stomps:6
44=Stomper |Stom- |per |Global ID: 6|2: 3|3: 3|4: 3|5: 4
47=Belt* |Belt | |Global ID: 6|2: 2|3: 4|4: 4|5: 4
48=Transporter |Trans-|porter|Global ID: 6|Height (tiles):4|3: 4|4: 4|x:2
37=(Alt water pump) |W.Pump|Ev. 37|Global ID: 6|Full water ID: 6|Empty water ID:6
68=(Boss shot) |B.Shot|Ev. 68
69=(Fake battery) |F.Batt|Ev. 69
Jerrythabest
Jul 28, 2010, 11:51 AM
Got some more updates today. First things first, the events.
1=One Way |One |Way
17=End of Level |Level |End
29=Start Position |Level |Start
33=Battery Holder |Batt |Holder|Trigger ID: 6|Direction: 1
35=Liferaft |Life |Raft |Water ID: 6
38=Elevator |Ele- |vator |Trigger ID: 6|Moves: 3|Direction: 1|Speed: 4|+Moves (x8):3
40=Platform |Plat- |form |Trigger ID: 6|Moves: 3|Direction: 1|Speed: 4|+Moves (x8):3
41=Water Pump |Water |Pump |Trigger ID: 6|Water ID 1: 6|Water ID 2: 6
42=Recharge Gate |Re- |charge|Direction: 1
46=Water Pool |Water |Pool |Water ID: 6|Width (tiles): 5|Height (tiles):5|Filled: 1|Mode: 1
47=Belt |Belt | |Trigger ID: 6|Speed: -5|Length: 4|Duration:5
50=Dripping Water |Drip |Water |Delay: 8
51=Small Enemy |Small |Enemy |Hanging: 1
52=Large Enemy |Large |Enemy |Hanging: 1
53=Freddy the Dragon|Fred- |dy
54=Rain |Rain | |Damage: 5
55=Monitor |Moni- |tor |Hanging: 1|Direction: 1
56=End Boss |End |Boss
58=Umbrella |Umbr |ella |Trigger ID: 6|Moves: 3|Direction: 1|Speed: 4|+Moves (x8):3
60=Extra Life |Extra |Life
61=Save Point |Save |Point |Trigger ID: 6
62=Battery |Bat- |tery
63=Super Battery |Super |Batt
65=Set Water Colour |Water |Colour|Surface colour:8|Deep colour: 8
66=Button of Death |Death |Button
70=Leaking Energy |NRG |Leak
39=Elevator Stopper |Stop |Elev |Trigger ID: 6|(bool): 1
43=Door |Door | |Trigger ID: 6|Start low: 1|(bool): 1|Stop low:1|Speed: 3|Stomps:6
44=Stomper |Stom- |per |Trigger ID: 6|Start low: 1|(bool): 1|Stop low:1|Speed: 3|Stomps:6
48=Transporter |Trans-|porter|Trigger ID: 6|Height (tiles):4|(0-15): 4|Speed: 4
37=(Alt water pump) |W.Pump|Ev. 37|Trigger ID: 6|Water ID 1: 6|Water ID 2: 6
68=(Boss shot) |B.Shot|Ev. 68
69=(Fake battery) |F.Batt|Ev. 69
I have finished the Belt event and made big progress on the Door, Stomper and Transporter events. There are only a few parameters left, of which I don't know their function.
I have also renamed a few things.
-'Water' has been renamed to 'Water Pool' and 'Recharger' to 'Recharge Gate' just for clarification. The 'Tracks' parameters are renamed to 'Moves' for the same reason.
-Although batteries remain full in Battery Holders with a 'Battery Holder Upgrade', none of the devices that are powered by them actually keep working infinitely. On a closer look, I discovered that the 'Battery Holder Upgrade' has a very different purpose: After you have placed a battery into a Battery Holder with a 'Battery Holder Upgrade', your position will be reset to that Battery Holder when you die. Therefore, I have renamed the 'Battery Holder Upgrade' to 'Save Point'. I'll make clear in the help files, that the actual Save Points are the Battery Holders sharing the same ID.
-The 'Full Water ID' and 'Empty Water ID' parameters of the Water Pump event have been renamed to 'Water ID 1' and 'Water ID 2' respectively, because it turns out Water Pumps don't really care about the water level. They just fill a Water Pool if it's empty, or flush it otherwise. They can even fill or flush two pools at the same time, if they have the same state.
-And, finally, all 'Global ID' parameters have been renamed to 'Trigger ID'. Although I still slightly prefer 'Global ID', I decided to rename them to make it much easier to explain what Battery Check uses the 'Difficulty' setting for. I'll make that clear in just a moment.
New graphical updates and screenshots
I have managed to change the UI colour! It's now BC-orange. I've used the image you see in the About window to get the right colours and implemented them straight into the exe file using a HEX editor. The active window uses Batteryman's yellow colour, the inactive ones use the colour of Batteryman's gloves and the scrollbars use the colour of Batteryman's legs. For the latter I also had to remake the arrow's graphic.
http://jerry.webwideworlds.com/zooi/BCCS/28jul10%20interface.png
I cleaned up the Layer Properties window. Battery Check supports Textured Backgrounds, but doesn't support the Parallaxing Stars feature, nor the fade-to-a-specific-colour feature. So I moved the Texture Mode checkbox into the Properties group.
http://jerry.webwideworlds.com/zooi/BCCS/28jul10%20layerprops.png
I also cleaned up the Level Properties window again. I had to re-do this because I lost all my work when I reinstalled my computer, as I've told earlier. The outcome is a little bit different from what I had first. I like it better this way.
http://jerry.webwideworlds.com/zooi/BCCS/28jul10%20levprops.png
I have added a little bit of text to the Set Tile Type window. I thought it was too unclear what these things did. Now it's clear.
http://jerry.webwideworlds.com/zooi/BCCS/28jul10%20tiletypes.png
A small but important change on the Set Event dialog. BC doesn't support object illumination, so I removed the Illuminate Surroundings checkbox. I used that space for the text 'Link event to local trigger group', replacing the text 'Difficulty'. It's the word 'local' in this phrase that made me rename 'Global ID' to 'Trigger ID' in the event parameters, as a 'local global ID group' doesn't make any sense at all. I know you're thinking "what sense does this make, then?" now. I'll explain.
http://jerry.webwideworlds.com/zooi/BCCS/28jul10%20setevent.png
Battery Check uses Jazz2's event difficulty setting for something completely different. All Trigger IDs appear to link to one another only within the same of the four groups of events. So Battery Holders set to Easy will only trigger devices with the same Trigger ID and the same difficulty setting (Easy, in this case). This way, you can re-use Trigger ID's in different areas of your level, hence the name 'local trigger group'. With, once again, the help of a HEX editor, I renamed the difficulty settings to 'White (default)', 'Yellow', 'Red' and 'Purple'. I chose for those names because it wouldn't be clear at first sight if an event is a member of 'Group #1' or 'Group #2' etc. Now the names are simply the colours they get in BCCS.
I've also changed the Search and Replace Events window. Removed Illuminate Surroundings and replaced the difficulty stuff.
http://jerry.webwideworlds.com/zooi/BCCS/28jul10%20srevents.png
I think that'll be everything for now. Last things to do are the icons and the last few event parameters. I must say it's really darn nice to work in BCCS now that it totally has this BC look and feel. Not only because of the colours but also because it's clean from Jazz2 features now.
Violet CLM
Jul 28, 2010, 01:17 PM
You are doing some impressive work and implementing some good ideas. Kudos.
Stijn
Aug 3, 2010, 03:40 PM
Nice work! The enemies are officially called "suckers" by the way, you might want to use that name in the JCS.ini as well ("Small sucker" and "Large sucker" or something).
Newspaz
Aug 3, 2010, 04:02 PM
That's pretty awesome. I wasn't watching this thread because I suspected it wouldn't be anywhere near as impressive as its title suggests. But it turns out it is.
You should consider making a JCS utility by the way, so people can change JCS colors themselves. I've grown tired of purple ;)
Jerrythabest
Aug 8, 2010, 12:00 PM
Nice work! The enemies are officially called "suckers" by the way, you might want to use that name in the JCS.ini as well ("Small sucker" and "Large sucker" or something).Hmm, I knew the enemies were called Suckers. I really wonder why I haven't used that name for their events, as I did use names like 'Freddy the Dragon' and 'Stomper'. I'll change that right away.
That's pretty awesome. I wasn't watching this thread because I suspected it wouldn't be anywhere near as impressive as its title suggests. But it turns out it is.
You should consider making a JCS utility by the way, so people can change JCS colors themselves. I've grown tired of purple ;)Nice idea. I think I could do this some time. Though if someone else feels like making a little JCS colour picker before I get to that, I'd be happy to help out as I now know exaclty what needs to be changed and what is affected by it etc.
Jerrythabest
Aug 28, 2010, 11:58 AM
Work on BCCS is kinda.. well, stuck. My HEX editor, after having thought about it for a few weeks, decided that it wouldn't accept the license key I generated with a keygen (yeah I know, I know :rolleyes: ) after all. I tried Olly Debugger, but I simply fail to understand its workings. I haven't even found the HEX editing feature yet :p
So right now I'm looking for a free, more user-friendly (and preferably full-featured) HEX editor. Much like what GIMP 2 is in comparison to Paint Shop Pro and such.
Newspaz
Aug 28, 2010, 12:10 PM
I really like this one (http://mh-nexus.de/en/hxd/). I don't know if it's full featured enough for you though, but it certainly fits my needs.
minmay
Aug 28, 2010, 01:59 PM
Real men use Notepad for hex editing.
Jerrythabest
Aug 28, 2010, 02:10 PM
I really like this one (http://mh-nexus.de/en/hxd/). I don't know if it's full featured enough for you though, but it certainly fits my needs.
Oh, I like it :D
Real men use Notepad for hex editing.
Is that even possible?
Violet CLM
Aug 28, 2010, 05:51 PM
<a href="http://www.chmaas.handshake.de/delphi/freeware/xvi32/xvi32.htm">XVI32</a> has always worked for me, and supposedly for Microsoft developers too. Notepad corrupts hex data on saving.
Dermo
Aug 28, 2010, 11:14 PM
You can actually use cheat engine. Instead of opening a process, use it to open the exe file. I'm not sure that that program is great for hex editing though seeing as it's not what it was designed specifically for.
There's Hex Editor Neo (http://www.hhdsoftware.com/Download/free-hex-editor-neo.exe) as well but for what you're trying to do, I'm not sure that it's the best. Also next time you crack something, don't allow it to call home, block it through your firewall -_-
Jerrythabest
Aug 29, 2010, 10:50 AM
<a href="http://www.chmaas.handshake.de/delphi/freeware/xvi32/xvi32.htm">XVI32</a> has always worked for me, and supposedly for Microsoft developers too. Notepad corrupts hex data on saving.
I'll have a look at that one too. It's always good to have some choice.
There's Hex Editor Neo (http://www.hhdsoftware.com/Download/free-hex-editor-neo.exe) as well but for what you're trying to do, I'm not sure that it's the best.
I'll see. Can't hurt to try it.
Also next time you crack something, don't allow it to call home, block it through your firewall -_-
I agree that was a stupid thing to forget, as I knew (by experience) it would be doing that after some time. Oh well, there's free stuff out there.
Jerrythabest
Sep 22, 2010, 01:57 PM
I've been looking into the BC palettes now. I'm hoping to alter JCS's palette used for the 'Remap tileset palette' feature to work with BC's colours. Right now I'm trying to get a clear map of which colours (of objects) are stored where. It looks like BC's UI colours (energy meter, battery counters etc.) are mostly at the lower half of the palette. The upper half is available for tile colours. So that's quite different from JJ2's palette, where the sprite colours are all in the first few rows.
Once I understand BC's palette I can write some short introduction to it just like we had with JJ2's palette in the JCS.chm file. And then everyone can make their own tilesets! The bmp/pcx to j2t convertion machinery is all fully working :) Except for the remap palette feature, that is ;)
Jerrythabest
Sep 24, 2010, 02:42 PM
I've investigated pretty much all events (only the End Boss and the Button of Death are excepted) and the UI. This is my current palette:
http://jerry.webwideworlds.com/zooi/BCCS/25sep10%20bcpalette.png
The only true 'palette event' in BC I've found is the Door event, which uses a lot of entries in the 3rd row. All other events use the colours found in this palette.
vBulletin® v3.8.2, Copyright ©2000-2025, Jelsoft Enterprises Ltd.