News:

Don't forget to visit the main site! There's lots of helpful docs, patches, and more!

Main Menu

Old SMILE Help Thread

Started by GF_Kennon, May 17, 2009, 02:24:28 PM

Previous topic - Next topic

GF_Kennon

You should fix that post, with the links and such, and ill also repost the SM hacking info posts...

GF_Kennon

Here's all the locations of the FX glow palettes, along with some instructions on editing them.

First of all, you must only have the one line of colors you're editing visible. There's generally two colors in-between each line in SABS. Here's a picture to show what I mean. (It's of Glow pink-purple in Brinstar)



Now, there's 8 colors for each bright to dark transition. However, as you'll see when you read the information, glow Pink Purple only affects 6 colors. That's what I mean when I say there's two colors between each line. You must have nothing but a single line visible, and by that I mean only the colors that the FX palette uses, and not the "In-between" ones. Like this.



Unfortunately, there's not a good way to get around this limitation, as ignoring it will cause the game to crash and there's no other way unless you know how to convert the numbers into colors in your head and do it all with a hex editor (Would take longer that way anyway). I know it stinks because sometimes you forget if you want the row you're working on to be brighter or darker than the last one, especially since you can't really see the previous one to compare if it's even darker or not... but IMO the effort can be worth it, especially if you design a tileset and the glows to merge together.

Spoiler tagged for page shortening justice.
[spoiler]
Wrecked Ship: 1
Green Glow:

6EAE8-6EB24; I'm a genius offset
Affects colors 76-77. (Click on a color in the graphics editor and it'll say what number the color is in the upper left.)



Crateria: 8
Stay Grey part 1: Double Lightning Pulse:

6EB5C-6EBFC
Affects colors 84-91

Stay Grey part 2: One Flash:

6EC03-6EC4F, and 6EB45-6EB55 (Latter is the main color of the sky)
Affects colors 84-91



Pulse Red:

6FD03 - 6FDFB
Affects colors 65-71



Flash Yellow:

6FE07-6FF21
Affects colors 81-91



Glow Red/Blue:

6FA6F-6FBBB
Affects colors 81-94



Flash Yellow1:

6FBC7-6FC59
Afects colors 105-107



Flash Yellow2:

6FC65-6FCF7
Affects colors 85-87



First "?" (Wasn't documented)

6FF2D-6FFC3
Affects colors 87-91



Second "?" (Used for the orange glow in the statue hall)

6EFFD-6F088
Affects colors 113-116, 125



Brinstar: 3

Glow Blue

6ED9F-6EE27
Affects colors 113-115.



Glow Pink/Purple

6EEDD-6EFF1
Affects colors 101-102, 104-107



Glow Red/Orange:

Same thing as the last "?" in Crateria... hoped they would be at a different location so they can be used for different

things, but nope.



Norfair: 4 (Not including the heat bit which is already in SABS)

Glow1:

6F097-6F1C0
Affects colors 53-55, 60-61.



Glow2:

6F1D7-6F2D3
Affects colors 65-67, 76-77.



Glow3:

6F2DF-6F3DB
Affects colors 81-83, 92-93.



Glow4:

6F3E7-6F4E3
Affects colors 97-99, 108-109.



Maridia: 3

Quicksand Illusion 1

6F4EF-6F53B
Affects colors 36-43



Quicksand Illusion 1? (Same name as earlier?)

6F547-6F573
Affects colors 40-43



Waterfall Illusion 2

6F57F-6F61B
Affects colors 52-59



Tourain: 6

Slow Pulse Red/Blue light

6F63C-6F62A
Affects colors 116-124



Fast Pulse Red/Blue light

Same location and destination as above, but pulses faster



Glow Shutter-Red

6F7AF-6F88B
Affects colors 153-158 (Last 6 colors of enemy palette 0001)



BG Glow-Red

6F897-6F93B
Colors: 56-59



FG Pulse-Red

6F94F-6FA63
Colors: 84-91



Lights Pulse-Red

6F94F-6FA63
Colors: 116-123
[/spoiler]

Post by DSO

DSO

#2
I remember talk a while back about changing how quickly weapons move, so I've started to work on that myself. I've got acceleration code on Super Missiles, and am working on other weapons right now.

Alright, Super Missiles. $90 is the bank, V is the location for vertical, and H for horizontal acceleration. Note that even though there's values for vertical speed when shooting horizontally and vice versa, if you shoot a Super Missile horizontally, it will not go up or down. Both only come into play when shooting at an angle. Also "Up Right" or "Down Left" are not diagonals unless mentioned. They are aiming straight up/down when Samus is facing to the left or right.












----------$90--------------------V---------------------H----------
Up Right
C32B
C32D
Diagonal Up Right
C32F
C331
Right
C333
C335
Diagonal Down Right
C337
C339
Down Right
C33B
C33D
Down Left
C33F
C341
Diagonal Down Left
C343
C345
Left
C347
C349
Diagonal Up Left
C34B
C34D
Up Left
C34F
C351



How it works is the values stored at the ROM location is added to itself each frame performing subtraction. For example, the value for horizontal acceleration for shooting right is FF00. Adding FF00 and FF00 would get you 1FE00, but since the SNES is 16 bit and this code doesn't add the carry, you end up with FE00. Next frame, it's FE00 + FF00 and you get FD00... The lower it gets the faster it gets, to a certain point.



Edit: New attachment so James can put it up on the main site. It's an excel doc with info on all the tileset pointers and data locations. It's been very useful to me when helping people repoint/making my own repointing patch, but since there's been quite a few doing repointing on their own, I thought this would be helpful to have.

Draconis Kenjishiya

Okay, so I got sick, epically, and since then I've done nothing but fuck around with SMILE and have learned alot, namely, the door editor (yay!) and right now I'm trying to figure out scroll PLMs (work-in-progress!) but okay.

Pointers, data, enemies, items...I...really have no idea what I'm doing. I get hexidecimal, and how SMILE views it, but...this "$(insert number)" shit confuses me to all hell. I know pointers allow me to configure how much space is in a room, and on irc.net Zhs2 mentioned something about expanding the ROM to have more rooms and space than were in the game to begin with, but...I've no idea where to start.

Point me in the right direction, anything, please and thank you. *bows*

squishy_ichigo

#4
I noticed we don't have any help links going on in this thread...

BT's guide for SMILE:
http://www.freewebs.com/blacktelomeres/smilefaq.htm

On the main site, I have alot of my notes up if you want to check those out to:
http://www.metroidconstruction.com/Squichigo.php

plus I'm attaching the Moonedit-SMILE guide.

I suppose I should really write up some sort of guide for this kind of stuff...
If NONE of that stuff helps out, jump on #metconst on esper.net.  I'll give you personal advice! :D

I'm usually on from 11am-2pm (before work) and 11pm-2am (after work) This is all US Central time.  Thats GMT-6.

Phazar

#5
Right now I'm trying to make enemies that appear in the second state of a certain room appear in the standard state(which has no enemies to change into the others).  How would I do this?

Edit: Nvm, I found out how.

Draconis Kenjishiya

Ah, sweet. I'll go check that out, and if I still can't figure shit out, I'm over to the chat room. US Central is an hour behind Eastern, right? So 12 AM to 3 PM for me...or do I have this backwards...XD

DSO

There's generally always someone who can answer you questions that will be on at a reasonable time, so check whenever you want.

Also, don't be afraid to ask any questions here as well.

Draconis Kenjishiya

Okay. So I've got the door editor down, made a little test hack and it was awful, but hey, the doors connected. At any rate I figured out that doors need to be at a certain elevation to link up...kinda annoying sometimes when Samus pops out in the middle of a bunch of solid blocks even though the door closing animation synched. Whatever.

Instead of trying to tackle the whole enchilada, I decided to do it bit by bit with little test hacks. Next I wanna do red scrolls and scrolling PLMs. As far as I can tell, this requires I know how the PLMs work and how to readjust PLM pointer data to allow for more PLMs in a room, neither of which I can do. From the FAQ, I got that it had something to do with "$8F" which is the empty space for PLMs in hex, but...I haven't the foggiest as what to do with that.

Help please?

Zhs2

If you're creative enough, I'm pretty sure you'd never need scroll PLMs in the first place, but what can I say?

Unfortunately, I know next to nothing about them, and I cannot answer this question. However, I do have info on changing where Samus appears when she comes out of a door! Reposted from old board for great justice:

Quote from: Zhs2 on the old boardOh, and I'll try to answer your question, too. When you hover over a door in SMILE and press D, the door editor comes up. (You may have already known that, though. :3) For example, the one that pops up in Crateria's landing site over the door at the very bottom-left corner:


See the properties I've so conveniently labeled "X" and "Y"? Those number boxes determine the scroll box Samus will warp to when she enters the room you set the door to go to! I think the two boxes left of X and Y (from left to right, "Xi" and "Yi") determine where exactly in the scroll box Samus warps. Fiddle with it and see! :biggrin:
Soz for shoving different info down your throat. :icon_razz:

Draconis Kenjishiya

*points upward* How do I be creative enough to not need scroll PLMs? Tell me...o.o

And actually, thanks for the quasi-random door info.

Phazar

I just found a NEW PLM in SMILE 2.30:

PLM B8AC: Rising Lava after Getting Speed Booster
Quote from: SMILE Text FileSets the Rising Lava event, but can be used over and over. Basically, this PLM delays any rising lava effects (FX1) in a room unless it determines Samus has speedboots.  If acquiring speedboots within the same room as the PLM, the lava will not rise until you return to the room.

This looks like something interesting to put in hacks.

DSO

Quote from: Phoenix Wright on May 31, 2009, 07:54:54 PM
If you're creative enough, I'm pretty sure you'd never need scroll PLMs in the first place, but what can I say?

By "creative enough", you really mean, "Limiting yourself" :P

Anyway, as for making data for scroll PLMs, you can do it entirely in SMILE. Assuming you have the latest SMILE, In the scroll editor, set up the room scrolling as you want it to be before you touch the scroll PLM, and save. Next, click on PLM scrolls in the scroll editor, and set up the scrolling how you want it to be after you touch the PLM, and click save scroll PLM. Tell SMILE to find free space (I think the window calls it "blank space", and a number will show up in the box (Probably something like E99C). Jot down that number and save. Then, get a scroll PLM and (going by the E99C example) put its high byte as E9 and the low byte as EC. The scroll PLM will now update the room to reflect the scrolling data you gave it once you touch it.

Silver Skree

omgwtfbbq you can change what scroll PLMs do now!? :holyf:

DSO

Now? You could change them a long time ago...

Draconis Kenjishiya

Ha, epic success. Thanks mate. FX1 I can experiment with...I s'pose all that's left in the realm of SMILE and not hex editing like a mofo is item indexes (sounds simple, but....eh...) and PLM pointers, as in, adding enemies/PLMs to a room and making the enemies...act like the damn enemies.

DSO

Quote from: Draconis Kenjishiya on June 02, 2009, 08:57:38 AM
Ha, epic success. Thanks mate. FX1 I can experiment with...I s'pose all that's left in the realm of SMILE and not hex editing like a mofo is item indexes (sounds simple, but....eh...) and PLM pointers, as in, adding enemies/PLMs to a room and making the enemies...act like the damn enemies.

Adding enemies/PLMs to a room is hex editing >_>. Although it's really nothing but checking for free space in a hex editor.

Well, basically you'll have to find free space in the proper banks, and then plug that into the pointer. For example, PLMs use bank $8F, which in a hex editor translates to 78000-7FFFF. What you'd do is go to 78000, and scroll down until you find where free space starts (It'll be all FF FF FF). Suppose you found it started at 7EA82. In SMILE's pointers, you'd put down EA82 as the PLM pointer, and then can use the Enemy/PLM +/- function and change the number of PLMs in the room to what you need without it breaking data in any other rooms. You'd have to do the same repointing with enemies to safe change their numbers too, they use bank A1 (108000-10FFFF).

One last note on pointers is that they always must be above 8000. If you're repointing level data to 301200, or Bank $E0, you would not put down E01200 as the pointer, but must add 8000 and put down E09200. When you get to 309200 in a hex editor, you're in bank $E1 instead of $E0, so the pointer would be E19200 and thus not in conflict with the other one. The reason for this is that always keeping pointers to data above 8000 lets the SNES use a quicker way of accessing RAM, thus making the game coding run quicker. This is the "fast" part of the "Fast lorom" text you see in the checksum when you start up the game in an emulator.

Draconis Kenjishiya

#17
Oh...it's just free space in a hex editor? Well that's like Yoshi's Island for Christ's sake. Alright, thanks.

EDIT: I somehow screwed up a room's scrolling pointer in a beautiful display of why backups are God and I'm just a filthy heretic. How does one get it back so the scrolling is changable again...?

Post Merge: June 03, 2009, 04:34:29 PM

Just so I'm clear here: bank $83 in a hex editor is where offset 830000 begins, yes? I'm trying to add doors to a room.

squishy_ichigo

Quote from: squishy_ichigo copy/pasted from M2K2
Yeah, so I'm about to write up a pretty awesome guide, its gonna be called:
squishy_ichigo's Comprehensve Guide for Advance Rom Hacking of Super Metroid
or something like that... -_-;

anwho its gonna cover:
-the basics of hex editing (banks, pointers, free space, helpful protips)
-how to repoint ALL the data in the 'pointers' pop-up window and how its formated
-how to make/change room headers and how its formated
-GFX editing (TLP, SABS, GFX editor, etc.)

maybes
-scroll PLMs?
-some stuff on the enemy 'species editor'?

I'm throwing this out there because I might have missed some important advance thing or something....  Tell me if you think something else should be added to this guide.
Its only about advance stuff though, so don't suggest I add something like how to edit the map, etc.

Zhs2

Quote from: Draconis Kenjishiya
Just so I'm clear here: bank $83 in a hex editor is where offset 830000 begins, yes? I'm trying to add doors to a room.
If you'd opened Super Metroid in a hex editor, you'd know that "offset 830000" doesn't exist. <.< >.>

Put simply, bank $83, or $830000, is an SNES address (in other words, we're referring to where the data is when the Super Metroid rom is being run in an SNES environment. The address you want is the PC address (or, put simply, the address for the location in the rom itself.) Confused yet? :icon_razz:

SMILE can translate from SNES address to PC address for you. Simply open the pointer menu, then type the SNES address in the box at the bottom (in this case, $83 | 0000.) The PC address will be shown at the top of the pointers box - unheadered address to the left, and headered address to the right!

Draconis Kenjishiya

Huh. That's convenient. Yeah, no, I knew there wasn't an 830000, I was just trying to restate it in different terms I guess. This is sort of like hex editing mid-ring locations in Yoshi's Island. Almost. I got some more help over at Metroid 2002, I'm gonna go try this.

Oh! Bank $8F, then, just so we're on the right page...if $83 is 18000-1FFFF, then $8F would be...?

Zhs2

$8F would be 078000-07FFFF. :)

Also, answering your question from over at M2K2:
QuoteOkay, here's a valid question: how the hell do I safely repoint data I don't use in a room? Like let's take this for example: <image of 775/3070>

This room is done. There's nothing left I want to put in this room at all, and I'm sitting here with 2300 bytes I really could use somewhere else. Help?
you probably don't want to do that.
if you insist on doing so... then
(general description from Bloodsonic)
1. figure out where your room ends
2. repoint a room to the space after the 775/3070 room. (use the pointer table)
3. add the new pointer to the level entries so you don't destroy any rooms after it.

Draconis Kenjishiya

#22
-.- my adding doors didn't work at all. Luckily I remembered to backup before I tried any hex editing. I'm taking a working door from 18000-1FFFF (which to me seems to be a line of 12 values, ending in "80 00 00") and then finding the huge streams of FF, which began at 01AD66 for me. I pasted the "working door" over the first 12 "FF"s there, and then I'm confused.

Phazar

I need a bit of help here.  I just connected two elevators together, but now whenever I use the elevator to get into the other room, that other room has a bunch of garbage filling it up.  This only happens when testing--the garbage does not appear in SMILE.

DSO

Are the X and Y values of the door that the elevator goes through set properly? If not, you'll get garbage for your first screen after the transition. So if the elevator enters the room in the third screen to the right and 1 screen down from the very upper left, the X and Y of the door should be set to 02 and 01, respectively.