<- 1  -   of 222 ->
^^
vv
List results:
Search options:
Use \ before commas in usernames
Embarrasing Fact: Power suit made by lowest bidder
You have to follow a bunch of pointers and read stuff, then decide exactly where you want the hook. Spike has two pointers next to it, one for horizontal collisions (905D) and one for vertical collisions (904B). You can scroll down and find those two pointers. The text there explains them: They both jump to a subroutine depending on the BTS, and then return solid.
There are, though, 3 different spike block settings. You can put the gravity suit hook in the main spike routines (94:904B and 94:905D) so the gravity suit makes Samus immune to all spikes, you can put it in the BTS 0 setting (94:8E83) so Samus is immune to the common spikes you usually run into, you can put it in a new BTS setting (change a 8F45 in the table to point to the end of the bank) entirely so there's only certain Spikes Samus is immune to, or some entirely different idea.

The block collision document isn't meant to explain everything a new person would need to know to use it. For assembly, you'll want to learn how to use branches, JSR, RTS, LDA, CMP, BIT/AND, and probably a few other basic operations; you'll want to know how to find free space: Data is organized in groups of 0x8000 (32768 decimal) bytes, and free space is identifiable by a lot of FF's in a row at the end of these groups. There's also probably a few other things you'll need to learn as well - whenever you get stuck on something feel free to ask.

It'll take a bit of work to get this done, but when you're done it'll open up the doors to doing a lot more.
I know some of the operations that you mentioned like LDA, CMP, STA, and a little bit about branches. But what are the org and dw commands for, what they mean and represent?
I like Big Butts and I can not lie
org and dw are special commands for the use of an assembler such as xkas.  org sets the address of where in the ROM the code in the text file is to be assembled.  dw means for the assembler to output raw bytes of hex, dw is a 16-bit value, db is an 8-bit value.  More assembler specific commands can be found with the assembler download (xkas is no exception, go check them out)
I'd just take advantage of the already existing routine to disable spikes in the WS until Phantoon is dead, and also add a hook for the BTS 02 airspikes if he wishes those disabled. I suspect Webber will be able to find out where the airspike code is by reading your documents on block collision, and he just needs to set a breakpoint for area to find the WS routine.
Embarrasing Fact: Power suit made by lowest bidder
Quote from Deep_Space_Observer:
I'd just take advantage of the already existing routine to disable spikes in the WS until Phantoon is dead, and also add a hook for the BTS 02 airspikes if he wishes those disabled. I suspect Webber will be able to find out where the airspike code is by reading your documents on block collision, and he just needs to set a breakpoint for area to find the WS routine.

...
The WS routine is the normal spike routine. I'm guessing you didn't read the block collision doc. :P
I tried to understand said above and took a crack at it. This is what I came up with:

Code:
lorom

;----------------------------------------


   org $84F003 ;Gravity horiz. coll.

	LDA $94904B
	STA $84F003
	JSR $94904B

   org $94904B

	LDA $84F003
	CMP $948F47
	LDA $09A2
	BIT #$0020
	BNE $10
	JSR $94904B
	LDA $948F47
	STA $84F003
	LDA $84F003

	RTS

;---------------------------------------


With it samus, with gravity equipped, could walk through the spikes, but can stand on them as if solid.
The other suits (other than gravity), when walked through horizontally crashes the game, but still can walk across them as if solid. What am I doing wrong?
Embarrasing Fact: Power suit made by lowest bidder
You're not understanding the fundamentals of assembly, unfortunately. It's easiest to talk over IRC or something to explain these kinds of things... but a quick explanation of what's wrong...

LDA and STA work with only one or two bytes at a time. You can't load and store routines, and if you want to load and store something larger than 2 bytes you need multiple commands or a loop. And for this code you're doing, you don't actually need to move data around at all (so STA probably shouldn't appear in your code), all you need to do is manipulate the program flow, which means you're going to need to use checks and branch(es).

A hook is usually made by overwriting an existing command with a JSR or a JSL. The SNES's memory is organized by banks, which in Super Metroid are 0x8000 bytes each. If you stick to the same bank (94xxxx) you can just use a JSR and RTS. If you go to a different bank (84xxxx) you need to use JSL and RTL instead.

In this case, I would suggest overwriting the two JSR ($902B,X) with JSRs to later in the bank where there's free space (94C000 should be fine). You should learn to use a disassembler or debugger to find exactly where the JSRs I'm mentioning are.

Branches are easiest done with labels. For example:
Code:
	BNE Later

	;Other code goes here

Later:
	RTS

xkas can understand this just fine, and it can calculate what value to put into the branch so you don't have to mess around with it. It's not necessary, but it makes it much easier to use branches.

As for the check itself... JSR ($902B,X) is what is calling the spike code. Your code needs to decide if it should run the spike code or not, depending on if Samus has the gravity suit equipped. Because of this, I suggest you overwrite the JSR (902B,X) with a JSR to your code, put the gravity suit check in your code, then have your code either run the original spike call (if gravity suit is not equipped) or branch past it, and return to the original code.
Edit history:
Arva: 2009-12-15 10:34:37 am
QI[9]IQ
Just out of thin air: I know I'm pretty much behind when I ask this, but how do I change palettes? Are there any good guides for it? I haven't found such things in SMILE.
Super Secret Area - Dead Ahead!
One of the easiest ways is to open the Graphics Editor, select the tileset you wish to alter palettes for, and then click on the colour in the relevant palette (each row is one palette), and change it as you see fit, saving to ROM to see your changes.  Remember that you can have all of the palettes for EACH tileset.

If you're looking to change certain tiles for a different effect, once you've opened the tileset, click on the tile in the bottom left-hand corner.  It will place the tile in the box at the top.  The numbers in the four corners of this area (the 16x16 tile is divided into four 8x8 tiles) are the palettes that it's currently using, so you can also change it that way, even having one tile use up to four different palettes.

There's more you can do, but that's the basics. =)

Be careful with the first three to four palettes, as they're used for lots of things like doors.

I'd suggest taking a backup, and then having a major fiddle with colours, to get a feel for it, before you attempt any serious alterations for your hack.
Edit history:
Arva: 2009-12-15 06:33:22 pm
Arva: 2009-12-15 06:32:45 pm
Arva: 2009-12-15 06:25:50 pm
Arva: 2009-12-15 05:58:31 pm
Arva: 2009-12-15 05:56:02 pm
QI[9]IQ
Quote from Quietus:
One of the easiest ways is to open the Graphics Editor, select the tileset you wish to alter palettes for, and then click on the colour in the relevant palette (each row is one palette), and change it as you see fit, saving to ROM to see your changes.  Remember that you can have all of the palettes for EACH tileset.

If you're looking to change certain tiles for a different effect, once you've opened the tileset, click on the tile in the bottom left-hand corner.  It will place the tile in the box at the top.  The numbers in the four corners of this area (the 16x16 tile is divided into four 8x8 tiles) are the palettes that it's currently using, so you can also change it that way, even having one tile use up to four different palettes.

There's more you can do, but that's the basics. =)

Be careful with the first three to four palettes, as they're used for lots of things like doors.

I'd suggest taking a backup, and then having a major fiddle with colours, to get a feel for it, before you attempt any serious alterations for your hack.



Thx! I think I got the hang of it now.

One problem though: I changed the background colors in landing site so I can see the difference in SMILE, but when I play it, it's still the same?
I got it, it's the sky scroll fix patch...
...but that didn't work either. Might it be something else? It would be nice to keep the sky fix patch.

Now I realized that it's only the sky in landing site that doesn't change. I see the new colors when entering langing site through a door for a brief second and then it switches back to the original colors. Maybe it's the sky fix after all.. What do I do??
See FX1 data by going into EDIT --> FX1. There should be a check box called "Stay Grey". Uncheck that box and that should do it.
Edit history:
Arva: 2009-12-19 05:02:31 am
Arva: 2009-12-15 09:11:11 pm
Arva: 2009-12-15 08:42:57 pm
Arva: 2009-12-15 08:26:21 pm
QI[9]IQ
lol =) Thx!
But now there's severe vomit when spawning from the ship. Exit and re-enter fixes it though. But the BG isn't flowing as it should, it kinda moves when entering.
In the power bomb event, the vomit is gone when spawning from the ship.
Could it help if I said I've added door transitions within that very room?

The vomit comes when I use rain or fog. Why?

On a different subject: Can a block, such as a block only breakable by super missiles, be set as a regular missile blowable only?
Super Secret Area - Dead Ahead!
That would no doubt require ASM.  I suspect that it's only a minor alteration (alongside the new graphics).
How can I change the distance from Samus in where fired shots disappering? It's something about B0 by default
Edit history:
Arva: 2009-12-19 07:07:15 am
QI[9]IQ
I discovered an error in SMILE v2.50 that almost made me shit my pants because I thougt I've just lost five hours of work. The Samus poses tool is buggy, beware of it! I had to open my ROM in v2.31 to repair it. Thank god THAT worked...
Embarrasing Fact: Power suit made by lowest bidder
Quote from JAM:
How can I change the distance from Samus in where fired shots disappering? It's something about B0 by default

Uh, shots actually just disappear when off screen. That is embedded in the projectile motion code though, and there might be different code for different projectile types.
To modify that you'd want to run a trace and look for code that contains both the projectile position and screen position (for the screen position you'd look for 0911 and 0915 iirc).
QI[9]IQ
Is there a way to make screw attack blocks (like in ZM&Fusion)?
Super Secret Area - Dead Ahead!
Two that I can think of:

1, The usual - ASM.
2, Redraw an enemy to look like a block, and have it susceptible only to the Screw Attack.
QI[9]IQ
Quote from Quietus:
Two that I can think of:

1, The usual - ASM.
2, Redraw an enemy to look like a block, and have it susceptible only to the Screw Attack.


Yeah... I was hoping for a patch being in existense for it.
Samus...? Is that you?
Where's the palette for Torizo's belly? I edited his palette, but the belly didn't change. Hmm...Think
QI[9]IQ
Quote from ducknerd:
That, er, didn't help. I'm not trying to change a door's properties, I'm trying to change which door number is applied to a door block. Sorry if my last post was ambiguous.


Drag and drop a BTS value on the door block of a number you want the door to have. Hopefully that's what you're asking for.
Samus...? Is that you?
An easier way is to place your cursor over the door tiles and type the number you need. Faster and easier than drag and drop.
Is there a way to make the rain in the beginning Crateria room have a sandinsh color to it? So it would like like a sand storm.
Samus...? Is that you?
Go to Edit -> FX1 and change the palette blend until you get what you want.
But:
Quote from SMILEuser96:
Where's the palette for Torizo's belly?

Anyone?
Only asking here in case Kej knows.

Copied from MetConst:
Not sure if I'm looking for this right thing, but I'm trying to find a byte that determines the color addition/subtraction of water. Much the same way that there is a byte for haze, and adding #$80 makes the haze subtract color, but I'm looking for one that affects water. I know I can create this effect by using "darkens liquid", but I want other effects with it too, which doesn't come with dark liquid. Anyone know where this byte is?