Discussion in 'Discussion & Q&A' started by Malevolence, Jul 7, 2009.
It points to the binary image for the level select pointers obviously. Here are there values in hex:
00 00 00 01 00 02 01 00 01 01 01 02 02 00 02 01
02 02 03 01 03 01 03 02 04 00 04 01 04 02 05 00
05 01 01 03 05 02 07 00 80 00
In Sonic 1 ASCII code I'll provide it as this:
As most of you may have noticed, I have released yet another update to my hack.... This time I have one major issue. Upon entering the special stage I am greeted with nothing but a white screen and moving BG art. I can't press forward with the special stage anymore, I have other plans for usage of the Chaos Emeralds as of now; my question is what steps should take if I want to delete the special stage as a whole in Sonic 1?
Find the Special_Stage Routine, delete all the related subs, then just put rts at where all the code used to be.
I was wondering if the camera routine in Angel Island Act 1 (S3K) can be removed, or at least the very first camera that keeps the character from moving further to the left, from the starting point. If so, how can I do it?
Inside the yellow circle is the starting point. Now, if the camera lock (line in red) could be removed (or moved, if necessary) all that blank space in the green rectangle could be use. Basically, what I intend to is to "expand" the Act 1 a little more without having to expand the ROM size. Any info on a Hex address for the camera values would be really apreciated too. If no one has tried this before, I can manage it with the Hex addresses only. (I am still working on my S3K Hack, but I had a terrible time lately, so I am kinda trying to get my hands back to work with this. =D)
AIZ1's left boundary for Tails and Knuckles is at LevelSizes in the disassembly, and Sonic's left boundary is set by the code in AIZ1_Resize.
Edit: actually AIZ1_Resize affects all characters, so you have to edit both for everyone.
Thanks, MainMemory. I have been making some tests since I read your answer, and I modified the level boundaries via Hex. (The offset was indicated after "loc" in one of the "txt's" in the Assembly... s3kinopts, I think.) It works for Knuckles and Tails, since they have no intro, but I think I will have to find a way to remove the intro since it keeps slapping me in the face with the most random results xD. But there is another issue though: in AIZ1, after moving some 3 tiles to the right, the level boundaries modification I did gets "overwritten". The bottom Y gets "updated" in some points of the map, when the character moves to a determined X position. So, I would have to edit the script (or remove it) that states "when at X position change Y bottom to <value>". Due to time consumption of many attempts, I am now considering leaving AIZ1 level size alone. xO .
I have a last question to post, about how to remove characters in the S3K Data Select (to allow only Sonic and Knuckles alone) but the relevant info I have about this (offsets, tests I made, etc.) was left in the other computer... >_>
If you're not willing to learn how to use a disassembly, you're going to have a real tough time doing anything with S3K. If you don't want to learn assembly, I recommend using Sonic 1 or Sonic 2.
Not willing? xD ... I did not say that I was not willing to learn though. I just never really got into it, bluntly saying. You know, MainMemory, when I first read your post, my first impulse was writing a wall of text about how time can be scarce, the classical "problems of life", and some ranting about them, but that would have been really immature and, honestly, a bit pointless, so I am glad I did not write what I first thought. So, instead of that, I was thinking of asking this: are you willing to teach me? =P ... Don't get me wrong, I am not being sarcastic here. Seriously, I mean, I only never got "into it" because, since the last... four years (five? xO) I just "played with the Hex" a lot, and used ESE II to test many objects with different nibbles, etc. many that are not used in the game, and I had a lot of fun re-discovering my childhood game. =D ... I even made personalized Bitmaps to use in ESE II, with annotations and perfect (I dare to say) _x / _y position, so I know exactly how will XX object behave with YY nibble. And that's basically it. I just hope I did not "sound" rude. (note: if you would like to discuss a little more about this, can we do it via PM? If you do not mind, I mean, it is because I am not posting any question here now, and I do not want to feel like I am spamming... thanks. ^___^)
I'll tell you how I taught myself 68k asm, I downloaded a Disassembly of Sonic 1 and studied the code. While I was doing that, I went online and found various 68k asm guides to help me understand what each label meant, and what was going on. I know you're hacking Sonic 3k, so if you'd like you could download the disassembly for the game however the Sonic 1 disassembly has been worked on more and therefore more code has been labeled, so you might just want to download that disassembly first to teach yourself 68k asm. ^_^
Thanks for the tip, Ravenfreak. I will do. (can you believe I already had the Sonic 1 disassembly? And still did not thought of that... xO)
Let's see how the learning process will go. ^o^ (thanks again.)
I just want to add to Ravenfreak's post; modify small pieces of code to see what it does. Change a value being added or loaded; comment out things completely; things like these help to actually see what is going on. That is what really helped me learn along with the above comment from Ravenfreak.
If you really want to hack S3K and find it too difficult, then go with Sonic 2. Sonic 2 and S3K have a lot of similarities.
And if you don't understand what a command is doing, don't be afraid to ask us about it.
I feel there might an easily explained answer for this... Where exactly is the code that forces the camera to follow Sonic when he dies in the Sonic 2 Beta 4 dis-assembly?
You sent me this message earlier, and I just haven't got around to it. I guess I'll have to answer it here.
I haven't completely found out, and with that, I really doubt anybody else has, because if you haven't looked at the only disasm around, it is a fucking mess. I've been searching for how to do this for about a day, and I have to say, it is kinda difficult. Assuming it has anything to do with the Sonic object itself, that probably be your best bet. As I said, it is a complete mess, so more than likely you wouldn't find utter shit. Good luck nevertheless.
I noticed how bad it is, and I stated that in the message. I posted here because I felt like an ass for sending in more IMs. But yeah, it is a pretty barren disassembly, riddled with unbiased command names. Well, back to work then.
Sooo, after a year or so of being dead here, I've decided to take another look at modding a rom or two. (Or dare I say it... continue my noobhack?)
Currently what I have been using is Xenowhirl's '07 Disassembly (For S2 because that's all I modded at the time), and it's safe to say that it's a tad outdated now.
So, would it be worth me re-familiarising myself with 68kASM on a more recent disassembly? And if so, which one?
I find the Sonic Retro Hg disassembly easier to use, however many people disagree.
Well a large portion of the guides (Which I will inevitably be using to help me) are based on the '07 disassembly, so I guess I'll stick with that for now.
Gotta go and find updates/replacements for all my tools now... Not fun on a lousy internet collection.
Here's a thought - (Wasn't worth a new post) - What would you lot recommend as a text editor? I tried Sublime Text 2 and Notepad++, but neither of those have support for any form of ASM syntax highlighting whatsoever.
I use Notepad++ with FraGag's 68000 and Z80 highlighters.
I'd suggest ConTEXT, this is my personal choice. It's very convenient, yet powerful. The code highlight system is very flexible, unlike some other editors I've seen, so basically, you can have support for all exotic or obsolete languages, like 68K ASM.
There is no 68K ASM Highlighter in the default package, so you have to find and download it somewhere on Sonic Retro.
Separate names with a comma.