I'm trying to get the new K-E code ready for a June or July demo release. One of the things that's getting in the way is the lack of information on backgrounds. I *used* to have notes on how the level backgrounds were formatted. I recall that there are two formats. The theme will determine which background format to use. But I don't have my notes, so I can't implement it without putting the time and research in it again.
Yes we used to describe it as scrolling background.
Blue Lake Woods 1
This must be the first pointer or base address from the table.
0x07B1EC 00 09 FB 08,
For in this case Blue Lake Woods 1 it is Map Nr: 4Ax4=128
which then jumps 0x0128 bytes from address 0x07B1EC to the pointer for scrolling background. Which is address 0x007B314 00 0A 06 4C, at that address 0x0A064C are the background rows stored upto FF?
Themes that have permanently moving background slice are controlled in the scrolling background area with 0x00
He and a question do you still use IDA?
I have been trying things out writing a piece of code an building it and inserting it into the ROM, which made me wanna try or attempt making a disassembled version. I have been spending a lot of time with this program but creating a ASM file like you have done with option screen for the level select seem tuff :p
What is the first thing that i need to do? creating a working version which comes straight out from IDA which can build a working ROM?
The one that i have now is nearly the same as the one you made but i can assemble it, it would really be helpful if can see your version. you can also conntact me at Haagnus@gmail.com
I understand that part, but where is the data that determines the cell mappings per row?
I actually didn't do the level select. Someone else did that, and I don't recall who it was. That same person started a disassembly of Kid Chameleon, although was not anywhere near finished as a right good many things were not put into plain English to understand what it is you're looking at. I know 68000 assembly, but I've never attempted a disassembly before.
I've cracked part of the format. However, like the level layout compression, the bitfields are not a fixed size. Therefore, it will take a little time to crack the rest. But ultimately, I would like to add support for it in K-E.
EDIT: Figured it *all* out! Here's the format for background data supported by the Forest theme:
Header (6 bytes):
byte 0x0: Format 1 setup (number of bits in cell value)
byte 0x1: Format 1 setup (extra bits to include/exclude)
word 0x2: List 0 (progressive) initial
word 0x4: List 1 (static) initial
The lower bits of byte 0x0 specify the length of cells referenced by format 1 chunk data. The MSB controls if the initial cell value in format 1 chunk data will be added to 0x780, or subtracted from 0x790.
The bits in byte 0x1 are formatted this way:
- - - L p p f m
These bits control if the mirror (m), flip (f), palette (p; both bits), and priority (L) bits are used in format 1 chunk data or not.
Following the header is the main data. Each chunk of data starts with a bit that indicates which format we will use.
Format 0 consists of five bits:
L n n n n
n: Number of cells + 1
There are two lists that we defined in the header. When we use the list, the initial cell value posted is 0x780 + the initial value as defined in the header. So if the header for list 0 has 0x40 for the initial value, that means that list 0 will begin with cell 0x7C0. The number of cells indicates the number of times the cell value will be posted. List 0 is progressive (meaning the list counter will keep increasing by 1 everytime a new cell value is posted). List 1 is static (meaning the cell value is what it is, and it doesn't change).
Format 1 uses a variable number of bits as defined by the second byte of the header. The format will go like this:
R P nnnn [P] [p] [f] [m] [c]
n: Number of cells + 1
[P]: Priority (0 or 1 bits)
[p]: Palette (0-2 bits)
[f]: Flip (0 or 1 bits)
[m]: Mirror (0 or 1 bits)
[c]: Initial cell value (1-16 bits)
When the R and P flags are both off, the cell value never changes. When they're both on and the 'n' bits are all on, this indicates to the software the end of the data (everything afterward will be empty cells).
The initial cell value is either added to 0x780, or subtracted from 0x790, depending on the configuration in the header.
Basically, it's a big leap toward supporting the modification of backgrounds in Kid Chameleon themes. There's a little more research to do yet, and I don't think I can add support in the K-E GUI to modify them in the time I've given myself to make this first release. The goal I *do* think is realistic is supporting the export of this data (along with other types of data) to XML files so people can easily update it by hand, and them support importing that data back to the ROM. That way, the K-E GUI doesn't have to be fully featured right out of the gate.
One thing I want to be certain is supported fully by the GUI for the upcoming release is modifying the enemy layout. I have it halfway working, but I want to go the distance with it since it was never supported in the previous K-E.
That's great news!
It's quite complex the info you gave about the backgrounds I hope once I have moment to take look for myself. The idea working with XML files is nice thing will be much easier that way.
The programmers of Kid Chameleon made some questionable decisions. This has been proven over and over, but one of those design decisions K-E will move away from.
Every theme uses a color transposition table to transpose colors on the theme graphics. This is most noticeable with the Forest theme which uses a completely different color order in VRAM than what's actually stored in the ROM. But all themes use one of these tables. This is a rediculous design.
When K-E extracts the graphics for a theme, it converts the graphics using the color transposition tables. And when importing the graphics back into the ROM, not only will it *not* do the conversion back to the old color scheme, but it will replace all of the transposition tables with a simple 00, 01, 02, 03, 04, etc. order. This also makes handling backgrounds easier, because the Mtn and Hills themes use two tables each for their backgrounds.
As for backgrounds, they are hard! I know everything necessary to support them, but figuring out how to get around the hard-coded stuff is still a challenge. I hope at the very least to have "partial" background editing support in place when my new editor gets a demo release.
I've played many of the KC projects, but never did one myself because I don't understand all of the programming XD I've used the K-E editor for research purposes for speedrunning and highscoring, and it's been a huge help visualizing the entire map in that regard. What additions besides backgrounds and better enemy support can we expect in this update?
Hello my friend, your job is amazing, too bad I do not have enough knowledge to help you, I teach people to make games but otherwise, I would like to know if you want to add a resource for people to put enemies on the stage, add relatively enemies, it would be possible? Anyway congratulations
Would it be possible to add a funtion to export an image file (PNG, JPG, whatever) of a level? I've done it by hand to make level maps, but it's super tedious and would be awesome to be automated.
Also, Skarloey and I did some research on platforms if you have any interest in supporting those. I was going to make a program for editing them myself, but I haven't had the chance. If it's not of interest to you, I'll go ahead and make it when I get the time. XD
I'm currently fixing bugs and cleaning up some things. I want to remind everyone that the first release will focus primarily on exporting data (see my plans posted on 07/03). It's not as clean as I would like it, and that's part of the reason I've missed my deadline.
Enemies are supported currently, although the functionality is still limited. I'll work on that more.
Exporting maps into a PNG or other image format isn't a bad idea at all. I'll definitely consider that feature.
I have the platforms documented, so I can support them. I just need to get around to that.
Sounds good, I'm definitely looking forward to the next version.
On the subject of exporting maps, I wanted to ask how you go about storing tiles and blocks in the most efficient manner, as I haven't put too much effort into poking around .kcm files besides the header and the enemy data.
I don't know if you saw my post about the WildSide engine I'm developing (a standalone clone engine of KC), but I'm trying to find a way to store areas of tiles and blocks effectively in map binary files. My current method works okay, but I was curious how you went about it in case your method would allow me to cut down a few bytes that I'm currently storing.
Almost all the "DEMO 1" goals have been met. There's one thing it doesn't do, one thing it only partially does, and one thing it doesn't do correctly.
Tyadran: To answer your question, I recall simply storing data in a raw binary format. The entire level gets filled up with tiles and blocks alike. For blocks, I think I kept the format at five bytes per block. Many blocks don't need five blocks, so the remaining bytes would be unused. But the idea was to use the same amount of data for every type of block so I could use basic math to multiply or divide by the same number to get the correct position as needed.
I don't know if that answers your question or not. If that's not what you're trying to get at, perhaps some clarity will help.
I'm still working on it! As I mentioned before, I have competing priorities. When nothing else is going on, I resume coding on this.
The editor deletes and inserts enemies. It also allows you to select one of the (up to three) enemies for a map for insertion. There's a minor bug associated with the latter that still needs to be corrected. I also need to allow changes to be saved. It also does not work with bosses yet.
Once the enemy editing capabilities are done, then I will start writing code to export platform data. I'm not looking forward to that, but it's a necessary evil!
I actually started writing a program yesterday that I said for a while I would be working on, to cover a lot of the stuff K-E doesn't currently. How exactly are you planning to handle the platform data? Because at the very least, I have an angle of attack in mind for my own program, so I'd like to compare how we're doing it so that I can drop it if yours is better, to avoid redundancy.
I assumed K-E wasn't going to touch it yet, under the assumption it would remain level-focused, with the intention to allow more general modifications with my editor (level bonuses/100k trip/palettes/platforms, etc) that aren't directly tied to the level data. If anything would be redundant, though, I'll be more than happy to cut that out.
Starwolf48 wrote: It is March 29, 2017 and still no update on K-E 2016 :(
That's the sad part, I appreciate what Saxman did with K-E because without him, there wouldn't be many of the hacks we made long ago.
I think the last update was on 2010, then he announced that the next update will work on Java but that will take a lot of time (A LOT) because he was busy.
We're now at 2017 and there is still no official update, so in order encourage fans to make their own projects and learn to edit difficult, yet exciting elements (enemies, platforms, etc) we made tutorials for them. But in some cases they lost interest and canceled their projects (myself included) because they have to learn things I guess you can say "the hard way", which consumes a lot of time. Seriously, make 103 levels is no joke.
So, just to get some of my own thoughts out there:
I feel like it's unfair to criticize the lack of progress on K-E for a few reasons.
Firstly, Saxman has already done more work in the research and modification than anyone else here has. I've put in my sleepless nights on things like studying platforms, but almost everything we have comes from his notes and K-E. I can count on one hand the number of developments we've made since then.
Secondly, all of this work is being done (of course) for free, on his own time. He has no obligation or reason to continue K-E besides out of his own good will, which means a lot when you realize how much has already been accomplished.
While we do have to do a few things (enemies, platforms, level names) "the hard way", honestly I laugh at that for being what consumes a lot of time. Even using Kid-C for the tile work on levels, 90% of my time on any given level is spent on work that we already have programs for, those being K-E and Kid-C. 5% is probably spent on testing, and the last 5% is spent on hex editing by hand, on things like enemies, platforms, level names.
I think the main reason people quit modding isn't because they have to go hex edit things, but more because the entire process is a lot of work. With around 300 hours of work put into KCX, on map design alone, I understand it's a lot of effort. The problem is that a lot of people try to jump into this expecting it to be an easy ride, when it's really not. Designing good levels is tough, and it takes a lot of time.
It bothers me, though, when people talk about KC modding being hard. After starting and continuing to be the sole programmer of WildSide, I've come to appreciate how easy it is to work with K-E and the few things we have to do by hand. In comparison, it's so much easier than trying to program a game from the ground up, that KC modding has become what I come back to when I want to take a break.
That said, I wouldn't be surprised if some of the hex editing happens to be what scares people off from learning to mod the game. Fair enough. Do I have the ability to make tools to make this easier? Yeah. Will I do it? Honestly, probably not. A lot of it comes down to motivation. All of the modding resources KC has go to about a half-dozen people, including myself. That's a pretty small audience. Additionally, writing those kinds of tools takes a significant amount of time, of which I'm in short supply, being a college student. And finally, I'm not really getting anything out of it myself. After getting so used to how we'bve always done modding, I really don't have a huge desire to change it. Most of it has become second nature after years in this community. Plus, the same as for K-E, it's working for free. And as much as I don't want the KC community to pay me or anything, it makes it a tough call to work on modding tools when I've already put about $200 of my own money into WildSide, which is also a huge tax on my time and programming ability, and another thing I'm working on for the community.
That said, if I had reason to believe that such tools would bring more people into the community, or honestly thought that it would help bring people back to modding, then I could be convinced to write some of these tools, or the same factors might influence Saxman, but he has even more real life to deal with than I do.
I guess the main point I'm trying to get across, in the end, is that we should be grateful for what we already have when it comes to KC. If you're dying to have better level creation tools, then you might try to convince me to code a stand-in until we get a new K-E, or you can help support WildSide and have your thoughts and suggestions built into the game itself. Other than that, you'll just have to wait until Saxman is ready to release something new.
Sorry for the rant, it turned out I had a lot more to say than I thought I did.
Nobody is pointing a gun or force him to complete his newest update. Like I said, 95% of the improvments we got on the hacks was thanks to him and his notes. He obviously has a life like everyone else and I cannot expect him to focus about K-E the entire day.
I don't have the same knownledge about programming like him but while he couldn't be around here, I'm glad that we decided to do some tutorials so people could have an idea how to use XVI32 and apply what his notes say, otherwise, everyone will still be limited to edit level tiles.
Personally, I don't care THAT MUCH to keep waiting because like you said above, most of us have used to it by now. But be honest, how many guys you see here still working on project?
Hate to point fingers but what about "00 Pyro"? I don't remember seeing here for a while nor any progress about his project "Radical Override". Kitchengun once told me he wished to develop his own hack too and I did my best to encourage him to do it but he dropped the idea because the annoying difficult process of editing platforms. I don't think everyone has the same determination or time to complete their projects. That really sucks because It's interest to watch other guys came up with new ideas, new challenges. I think that if you play or test KCX levels over and over, you will eventually get tired, same thing will happen to Drios or me with our own projects.
So, while I HIGHLY appreciate all his contributions with notes and K-E, I think we should help with what we can in the meantime while he works on the Java update, at least everyone will have an easy way to change backgrounds and platforms, which again, it's not that easy to handle.
If you think you can do a "K-E Prototype" with Wildside, fine, you have most of us helping you with bug testing. Maybe if you manage to complete it earlier, more fans will gain interest if we can provide them an easier way to modify the stuff we know.
For people still working on mods, both Molyb and I are working on our respective mods, and there's a new one being worked on by Sen7 that he uploaded recently. I don't think we've ever had more than three mods in progress anyway, which would be when you, Drios, and I were all working on our mods. Most of the modding discussion nowadays goes on on the Discord, between Molyb, Wins, me, and sometimes Haagnus.
Still, we are like 8 or 9 dudes still active. And sure, I know new people like Molyb or Sen7 are now making projects but I can't help but think that there should be more and I'm talking about both forums and projects.
At this point I think we should rename this "Kid Chameleon Hardcore Fans Wiki"
I mean, there are a lot of problems. I can't give a reason, but for whatever reason, everyone's kind of drifted away from the wiki. And even with the people still active, a lot of them aren't modders. I'd actually say you're the only other active modder who's still around. Drios doesn't really show up any more, and no one else works on projects who isn't already.
I would like to see more going on as much as the next guy, but we don't have a lot of people...it's not a popular game...we don't get a lot of publicity... You can come up with any reason you want, and they'll all be valid. That's why we're trying to get stuff put together for the 25th Anniversaty, because it's probably going to be one of the best chances we have to attract new people and get people interested in modding. I've already finished one mod Wins and I put together for it, and now I'm frantically trying to put KCX together in time. If I can get that done, there's more I want to do for it as well.
Well yeah, I'm working on a new mod as well as I still want to create my own version like Drios did. Maybe it's not that popular because Mario came first so it somewhat looks like a ripoff but the gameplay is solid and it's still as amazing as playing Mario. I recognize that nowdays, it's near impossible came up with something else hidden about the original game to raise it's popularity too high, the closest thing to that may be Wins' videos about speedrun strats.
But as a fan of this game, I would be more than pleased to see this community more crowded, read ideas, suggestions or more reviews about our projects. Perhaps we can help on that if we complete our projects or if you release Wildside at some point don't you think?
Well, there's still a little bit of neat stuff about the original game, like the hidden enemy layout that Haagnus discovered recently, but it's not stuff that interests an outsider.
I mean, I'm doing everything I can to finish KCX and Wildside. That's basically my goal right now. I can't say whether it will bring more people, but...it seems 'worth doing'. I'm not sure what else to try, y'know?
Exactly, that sounds interest for us because we're into the topic, but I don't see outsiders looking at it in the same way as the Crab Cove teleporter for example, I can't imagine how much mystery was into it back then, before some guy came with the Game Genie code.
If it comes to attract people, I would bet more for Wildside than a KC project because sure, they will find very entertaining an original and solid mod but if you give them a program where they can showcase their own projects, create their own levels, etc. THAT'S SOMETHING.
Drios' Heady Metal Revenge is one of the best hacks for me, almost like if the Sega team came back and made Kid Chameleon 2 and yet, it didn't seem to attract a considerable amount of people here really.
i scrapped my project like a few months ago because i was lost on inspiration and felt like it was too time-consuming for my liking as i'm not a hard worker. i feel kinda terrible now that i had tyadran spend days helping me figure all this stuff out... and i really gotta give it all out to him.
seeing all these other people in this community putting forth a lot of hard work and effort into projects is something i really admire, wish i could be like that but i got no luck there as im so lazy xD
im hoping one day i could come back to this and try and make a kc-hack, if on day saxman does actually come out with it. obviously it's not something he's obligated to do so it's all on him, and we'll just have to see. you know what, maybe when he said he's hoping to have it out by june or july, he didn't mean 2016. maybe he meant 2017 ;) (lol doubt it)
anyways i have no idea why i said all that, i basically just restated everything a lot of you guys just said lol, guess i just kinda felt like adding on to the conversation even tho i basically added nothing. only hopeful for the future of kc right now.
Kid Chameleon was my favorite game ever and honestly I expected absolutely nobody to be speed running the game and would've bet money nobody had modded it at all, let alone full mods like HMR. For me what drew me into the game was the atmosphere and music. The game had this almost horror like dark tone to it, which is odd because watching videos now it's hard to see it considering how things have progressed in the horror game genre.
There are definitely people out there who appreciate what you guys are doing and continue to do. I'd love to see some unofficial cartridge releases.
PS I have done modding before and from what I see K-E is one of the better programs out there. Anyone who has messed with the old Mario software knows what I'm talking about. It's not easy and unfortunately it feels like games like Super Mario Maker have left people spoiled. I may one day try modding this, but the massive amount of levels is a turn off. It takes a ton of dedication to a project.