Cosmo's Cosmic Adventure II: The Humanizer Thread
Funny you should ask, I just uploaded a Keen 5 executable map here: http://www.shikadi.net/keenwiki/Patch:Executable_Maps
The 0000:0000 notation is segments. The first four numbers are the segment, multiply this by $10. The second four numbers are the offset in that segment. Add this to the segment and you have the location.
For example, 0104:0846 is $0104 * $10 + $0846 = $1040 + $846 = $1886. Anything wanting to go to that code will (usually) use the string $9A $46 $08 $04 $01. This is how I tracked down the sprite structures, I looked for the 'go to draw sprite' string, just before which are the animation structure pointers.
The pastebin data with the locations converted is here: https://dl.dropbox.com/u/3940020/COS1MAP.txt
With all these actor functions, editing actor behaviors and sounds should be easy. (Should I post this to the Modding wiki I wonder?)
And of course with this map we can produce at least partial maps for Cosmo 2 and 3. What we really need now is a patching utility.
Anyone...?
The 0000:0000 notation is segments. The first four numbers are the segment, multiply this by $10. The second four numbers are the offset in that segment. Add this to the segment and you have the location.
For example, 0104:0846 is $0104 * $10 + $0846 = $1040 + $846 = $1886. Anything wanting to go to that code will (usually) use the string $9A $46 $08 $04 $01. This is how I tracked down the sprite structures, I looked for the 'go to draw sprite' string, just before which are the animation structure pointers.
The pastebin data with the locations converted is here: https://dl.dropbox.com/u/3940020/COS1MAP.txt
With all these actor functions, editing actor behaviors and sounds should be easy. (Should I post this to the Modding wiki I wonder?)
And of course with this map we can produce at least partial maps for Cosmo 2 and 3. What we really need now is a patching utility.
Anyone...?
A lot of the actor logic is in big switch tables in functions like ActorCheckIsInactive, annoyingly (and some parameters are hardcoded in the huge switch table in CreateActor although that's largely just setting things like the sprite id and the falling state). I didn't export the local per-function labels because they're even less coherent than my function naming, but they might be useful too...levellass wrote:With all these actor functions, editing actor behaviors and sounds should be easy. (Should I post this to the Modding wiki I wonder?)
(Feel free to do whatever you want with any of my work here, by the way.)
Funny you should ask. I just posted and formatted the page for CCA a few days ago: http://www.shikadi.net/moddingwiki/Cosm ... Adventureslevellass wrote:With all these actor functions, editing actor behaviors and sounds should be easy. (Should I post this to the Modding wiki I wonder?)
I tried the same thing with an "Engine Executable format, but Malvineous thought it was too much. (He seems to have left my new "Actors Attribute Format" link alone, though.)
If the format is standardized, you could post the structure of the attributes. :D
I found another way to implement one of my gameplay ideas for episode 3. (but in order for it to work, it needs some tweaking.)
What I meant by sprite list was what fuzzie was talking about:
What I meant by sprite list was what fuzzie was talking about:
Also, levellass, you've just accidentally created a method by which (future) editors of Cosmo's Cosmic Adventure can add more frames!! With your editor, all that you have to do is just make an ACTOR###-##.BMP file, with a frame number that is one higher than the highest! [I.E. If the highest frame number is ACTOR###-02, you can add an ACTOR###-03, and it'll work!!]fuzzie wrote:levellass wrote: I thought the priority related to what order the sprites were 'activated' in a level, starting from the top left corner. This will be interesting.
That sounds right; there are different types of sprites which allow temporary sprites (rain, explosions, etc) to be rendered at different priorities, and the background tiles are rendered in two passes, but to re-order the normal sprites you'd have to rearrange them in the list, unfortunately.
One of the more difficult challenges will be making custom TILEATTR maps by hand. :(
(Yes, I could just as easily place the tiles where the attributes I already want are, but I could run out of already-present attributes quickly. The custom map could probably be done, but I could easily lose track of my place in all those numbers in the hex editor. :P)
(Yes, I could just as easily place the tiles where the attributes I already want are, but I could run out of already-present attributes quickly. The custom map could probably be done, but I could easily lose track of my place in all those numbers in the hex editor. :P)