I've read through the working with objects guide, and I've gotten quite confused. Where on earth would I start with creating a new object by scratch in Sonic 1 (2005 Hivebrain)? And are there are free VRAM locations for something about the size as one signpost sprite? Not sure how much VRAM the "points from enemies" takes and I used some of that to extend Sonic's anyway.

Thinking about this I feel I wasn't exactly very clear with what I said. All I need the object to do is simply show up, it doesn't need to do anything. Simply be placeable and be visible, nothing special. Why I can't even figure that out is beyond me.

This object will display 4 frames in an animated pattern using different palette lines each animation frame, it will choose a different animation depending on the sub-type you choose when placing it in the level.

Awesome thanks, got all that in and working alright. Though I'm not quite sure where I'd tell it to load it's art from a nemesis art file? I'm gonna keep looking of course, should probably look at other objects and see if I can figure it out.

This post has been edited by Jimmy Hedgehog: 16 February 2012 - 11:17 AM

Hello I'm Tehkaker, with a very simple question for you. I am doing an custom script for detecting collision on my objects, by reading this from the maps files (Sonic 1 format.). For now, I did want to do a test for this, making the object to delete if gets touched by Sonic, horizontally. But nothing happens. Here is my code, if you want to see:

I see what you're trying to do here and I'm actually sort of impressed with your attempt, you have a pretty good deal of understanding of Sonic 1's mapping format, and seem to use it to your advantage. The problems with your code that I found are;

What is in a2 to begin with?

I'm assuming that this is the Sonic object that is loaded into a2 before the routine is ran, have you made sure that the Sonic object is loaded to a2 before the routine? Why not load the Sonic object to a2 inside this routine itself?

When you loaded the X and Y position of the individual sprites in the mapping list, you didn't add the object's X and Y positions to them.

Remember, this object might be in the level at X and Y of 221F and 0340, and Sonic might be around the X and Y of 21C0 and 0340, but your mapping's X and Y positions can only be from 00 to 7F (right/down) and 80 to FF (left/up), add the object's X position to the sprite's X position, and the object's Y position to the sprite's Y position, this will get you the exact X and Y position in the level.

Here is a fatal error you should be careful of:

move.b (a3)+,d2
move.b (a3),d3
add.w d4,d2
add.w d5,d3

You have loaded a "byte" to d2 and d3, but then you add a word to d2 and d3, to explain the problem better, let's pretend that d2 contains 00009F31 to begin with:

move.b (a3)+,d2

We've loaded a byte, let's say it was "8" in this situation, d2 will now contain 00009F08. Next we add the word from d4 which we'll pretend is 0180:

add.w d4,d2

d2 will now contain A088, this is wrong, you only wanted the 08 to be added to it. the best way to fix this potential error, is by clearing d2 and d3 before loading the byte from a3:

So I am learning ASM and hacking, and I am, or course, a complete and total noob... So I am starting with the How-To's: Everything is going great and I've made plenty of progress easily... but I've run into a strange phenomenon in regards to Sonic 1's demo play:

I was fixing the code that causes the demo to mess up whenever you hold down buttons... and have successfully fixed it... but something else happened:

GHZ demo playthrough. I am mashing buttions around testing to make sure it doesn't interfere, and Demo Sonic hits the first Crabmeat and receives an EXTRA LIFE for it!!! Certainly weird. I have modded to give you an extra life for 50,000 pts, and last I checked, 100 is certainly not 50,000...

EDIT: It also happens when I'm not pressing buttons as well... but this doesn't happen during normal gameplay.

I am using the latest SVN disassembly (Or HG disassembly... whatever) and have been following the guide pretty well. I'm sure I haven't made any errors, I must have just missed changing something, OR this is another bug not yet reported...???

Just popping in with a quick question here, I have made a custom level in Sonic 1.

All I simply wanted to do was to put it in Sonic 2 with the level converter.

Although the Tiles are messed up badly, and the collision is greatly corrupted, while all objects are placec quite perfectly.

Yes I understand Hex/Binary and all (Hex = Numbers being represented with a base of 16, adding A, B, C, D, E, & F, and Binary Being 1s and 0s.), but I do not get why my collision & tiles are not loading properly, perhaps I am inserting something in the wrong place.

Either way, if somebody could give me a cheat sheet of which file is supposed to replace which file I'd appreciate it.

Just to quickly introduce myself, I wrote the Sonic 2 Extra Characters guide, created the Mario Kart Wii Custom Tracks Jungle Island and SM64DS Bob-Omb Battlefield, and I am a programmer (Wrote KCL/COL2OBJ.exe, and I know much about BDL & BMD, like what the MDL3 Section implies)

I am very interested in also helping out in this community, and using my knowledge of hex, binary, Java/C/Python here.

LevelConverter can handle some of the format conversion, but you still have to port animated palettes, animated tiles, start positions, screen size, dynamic events, and change objects around so they fit with S3K's set (or port from S2).

When you say dynamic events, you're talking about things like Hill Top Zone's rising lava right? And changing objects around would include gimmicks and bosses? That's out my scope of asm abilities right now. Maybe if I have time later on I'll mull around with that. Thanks for the answer MM (both of them!)

Anyway, the background does not always load properly. The way I got it set, is that when you enter the area, it changes it layer deformation routine.

SwScrl_ARZ:
tst.b (arzbg).w
bne.w SwScrl_Arz2
; blah blah blah

in the routine events:

cmpi.w #$960,(Camera_X_pos).w ; Has Sonic reached this far?
ble.s + ; If not, branch and see if Sonic went top way of GGZ1
cmpi.w #$2E0,(Camera_Y_pos).w ; Has Sonic reached this low?
ble.s + ; If not, branch and see if Sonic went top way of GGZ1
move.b #1,(arzbg).w ; Move 1 to arzbg so SwScrl_Arz2 can load

This wasn't enough. It did load SwScrl_Arz2, but it seems to not create the blue background until Sonic kept moving for a certain distance. So, I made it move a certain distance itself for a short time so it will load:

cmpi.w #$960,(Camera_X_pos).w ; Has Sonic reached this far?
ble.s + ; If not, branch and see if Sonic went top way of GGZ1
cmpi.w #$2E0,(Camera_Y_pos).w ; Has Sonic reached this low?
ble.s + ; If not, branch and see if Sonic went top way of GGZ1
move.b #1,(arzbg).w ; Move 1 to arzbg so SwScrl_Arz2 can load
move.b #$7E,(ARZBGtimer).w ; Move 7E to timer, so the underwater background has time to load

But sometimes, it doesn't load up the background completely and only loads up "columns" of it. It then loads the rest of the columns when Sonic starts moving again. Here is another video showing the example: http://www.youtube.c...h?v=XRlnPGEREso

No matter how long I make it scroll automatically, it won't always load.

So, I wondered, does anyone know a way to make it load immediately? I tried moving #1 to Dirty_flag, but alas, no difference.

If you need any more details or information, I will supply. I greatly appreciate any help.

EDIT: It seems that when it doesn't work, the auto-scroll scrolls faster than normal, maybe that's why it causes to do a few columns. Also, sorry for posting the question in the wrong sub-forum, I saw this post got moved =P

Anyone remember Sonic 3 & Knuckles: Master Edition? Of course you do. That one hack with frustrating as all hell layouts that did nothing but abuse the shit out of spikes and death drops and made you want to rip out your hair?

Well, they made a sequel... Search it on Youtube.
apparantly it was made by someone by the name of Mok45... or something like that...

Anyway, does anyone know where to get a copy of the ROM?
And is this person who made this hack a member of Retro?