diff --git a/Bigmap.smm b/Bigmap.smm new file mode 100644 index 0000000..840370f Binary files /dev/null and b/Bigmap.smm differ diff --git a/Changelog.txt b/Changelog.txt new file mode 100644 index 0000000..b237f85 --- /dev/null +++ b/Changelog.txt @@ -0,0 +1,294 @@ +//////////////////////////////////////////////////////////////////////////////// +// Super Metroid Classic Changlog // +//////////////////////////////////////////////////////////////////////////////// + +Author: SaltyJustice +Email: Saltyjustice@hotmail.com +Homepage: www.supermetroidclassic.com + +I hope I drilled my name into your head! + +#include + +This program is run at your own risk. I am not responsible for +any effects, adverse or otherwise, that this program has on you, +your dog, or anything else around you. + +Table of Contents + +As of current release + +Fixed a sound error: All sounds should now play without cut off. +More scripting functions and accessability. Intro closer to complete. + +As of v.99t + +Teaser version, because I'm a jerk. Anyway, down to businesses. + +ESC now is the same as pressing enter at the subscreen. +Fixed the bug where Samus vanishes if you press left right and down. +Bombs no longer leave trails. +Bombs explode at the proper time (double the previous time). +Bomb explosion radius fixed for destroying breakable blocks. +Samus no longer is pushed upward when her feet are covered in clip zones. +SMTC no longer randomly crashes (fixed time attack bug). +Shootable blocks now run on a preset timer. SMTCLevEdit allows mods to this. +Charge Sprite fixed on several Samus frames. +Samus no longer lands crouched after jumping then crouching in the air. +The charge beam no longer appears charged if you spin jump, fall, or turn + around. +Space Jump now tracks Samus' suit colours. +Charge Beam now appears correct and does appropriate damage +Torizo has some more animations and moves more realistically +Improved diagonal clipping code, so doors open more accurately +Door transitions added after a hiatus. +Missile doors now work, as do super missile doors. +Changed script files from .scp to .ssf +Scripts can be used to remask the tile colours in a room. +Game no longer crashes when you screw attack an enemy. +Foreground/Background added to tiles modes! +All sorts of breakable types work, like crumble, screw attack, speed boost, etc. +Rooms are stored non-linearly, and can be named anything in the editor. +Console allows several special addons. Press TAB to open the console. +SMTC.cfg can be used to remap keys, even to the joypad! Expect a joypad + program soon to help the config process. +Super missiles shake the screen when they explode. +Xrayscope works as intended, even moving samus' head with it. +Can't fire negative missiles/super missiles/power bombs anymore +Script executes when collecting items. Some already made include missile and bombs! +Music now supported, that means ALL of the original spc files. +Save capsules and savefiles are back! SMTC auto-detects a room that has a save capsule + and if you spawn in it, the save animation plays. +Program runs more efficiently +Backgrounds are now far more advanced than before. Scripts can be used to place + backgrounds in a room. +Enemies have been removed until the editor supports them. +Samus runs more "naturally", closer to the original's running. +Speed booster max speed increased from 9 to 11, closer to original. +Downward slopes now allow you to slide when you jump into them. + +Older Updates + +As of v.99 + +HAHA! The update number went up by .05. Despite this, it's a major update. +I have no idea what I'm doing. + +You can use all the beams except the charge effects (charge works on regular +beam, but none of the other ones). Charge is also really glitchy. + +Bombs now can destroy blocks. The beam clipping has been greatly enhanced, and +it leaves burn trails when used with the burn beam. You can activate and +deactive both the burn beam and the corrosion suit. The background is fixed as +the Crateria background, and there are no options in the editor for background. + +Most of the enemies work, and can be placed in the editor. Xrayscope has been +improved. A lot of minor physics changes, as usual. Bombs are less buggy. +Water, acid, and lava can be used in the editor. Water physics are done, and + +As of v.94 + +Well, despite the fact that the update number has increased by .04, it's still +an update right. Here's what's done today. + +Lots of beams are now usable. Their clipping is still bad (for the most part. +They will still correctly hit enemies) and they always fire from outside your +gun. Next version will fix it, I promise. The following beams are working: + +Regular +Wave +Spazer +Plasma +Wave + Plasma +Wave + Spazer +Wave + Plasma + Ice +Wave + Spazer + Ice + +Yes, the little ice particles that follow behind the beams work too. + +I added some particle snow into Crat1 (the area with your ship). It's not +perfect, but it's fun to watch. The snow moves along sin() waves and deletes +when it touches the ground. + +There's also a huge number of physics improvements. So many that I can't even +remember them all. I decided to clean up a lot of the older bugs this time. + +The enemies are mostly still removed. I haven't fixed them up much. You will, +however, notice that the plantae creatures can shoot spikes now! Also, the +geemer in the chozo room will still explode when you shoot it. + +Particles are also better clipped now. + +Spike_Shooters are added. They generate spikes at specific intervals and fire +them. CJ's editor does not support them though. Too bad. + +There's a lot more improvements to the editor's code. There are now 2600 tiles +available, and the game can use up to 200 custom tiles, more whenever we put +them in. + +The X Ray Scope works! Select it, then press and hold run, then press left and +right until it activates. Sorry, but that's how it works right now, it's still +buggy. + +If I think of anything else I'll post it in the forums. + +As of v.9 + +Lots more garbage. GEEMERS! That's right, Geemers are pretty well coded, +though not quite 100% yet. If you go to Brin4.lev you can see a Geemer that's +hard coded into the engine, look at him dance. Aww. Shoot him to make him +shatter. + +Press F6 to make particles fly off of Samus. They're not fully clipped though. + +Bug fixes too numerous to mention. + +Elevators work, try them out. Enemies have been re-added as well. This version +supports breakables and custom clippings. Doors that do not reference an +existing +room will not open, to prevent crashing. Tile rotation is also supported. + +You start with the Gravity suit active, turn it off to sample the beta water +physics. They're not close to complete however. + +A loading bar now appears when you start the program, though only a slow +computer +will be able to see all of it. + +The opening is now shown, it fades in and out, but it's only a work in progress +and is not even close to the end result. SMTC is also packaged with Mousse420's +crateria levels (use the elevator to get to them). + +Brin1 also features some of the objects, see those little head blocks? + +Finally, I improved diagonal beam clipping code. It's not 100% yet, but it's +a lot better than before. + +As of v0.87 + +Today we give you a lot of new code refinements. You likely won't notice half +of them though, unless you're on a slow computer. Specifically, I increased +the draw speed by colour masking everything. I've finished a lot of enemies +but they have been temporarily removed from this version, because they're not +properly clipped and could crash the program. So tough. + +Speed booster physics and drawing have been included, hurrah. They're not +perfect, or even accurate, which is annoying. No biggy. The primary purpose +of this update is to allow the editor something to test with. Go download +Crimson's editor! It works and you can edit lotsa stuff. See editor readme +for details. + +PATCH v0.851 + +Patch includes Bigmap.smm (map file for subscreen) and new Executable (MTC.exe) +These should stop any crashes. Sorry. + + +As of v0.85 +New Stuff: + +Well this time, I want you to listen VERY CAREFULLY. THE EDITOR (SMTCLevEdit) +DOESN'T WORK. That's right, both editors don't work. You can look at Crimson's +GUI editor, which doesn't *do* anything, but looks very sharp. However, for now +anyway, you can't edit. Sorry. + +Okay here's some new features: +Four new enemies have been added, bony fish, fire orbs, skrees, and rippers. +You can't shoot them yet. Too bad. Hahaha. +Minor physics updates, you can view the map screen, and the download is now +smaller than ever. +You can save with F1. In the command line, enter -save "place" +That determines what file it saves to. You can load by selecting LOAD on the +start menu. + +As of v0.8 + +New Stuff: + +I fixed a lot of the sound effects, now spin jumping sounds correct. More +blocks are available but still not all the blocks you'd need to remake the old +ruined brain areas. New clipping types are also available. Water is now +editable in SMTCLevEdit, and you can dynamically resize the room. Also, room +sizes are now available up to 16x13 room sizes! Bear in mind that none of the +original levels ever had gigantic dimensions like this, these are merely the +largest X by the largest Y in the entire game. When editing levels, please bear +that in mind and try not to overuse the space. Of course, the only limit is +computer memory! + +I changed around a lot of minor things: Wall jumping is now the same as in the +original, purely by coincidence actually. I seem to have recreated a lot of +physics functions from the game word for word without even knowing it. Some +minor movement aspects have been changed, including using the morph ball in +midair, landing while aiming down, and landing the morph ball from a height +greater than or equal to that of 3 blocks (you bounce, whoopadedoo). In +addition, I have decided to add in missile trails this version out of the +goodness of my heart, and soft ground effects too. + +Basically, soft ground effects are identical to those of regular ground, except +you will see a small splash whenever you step on it. Soft ground is an +intrinsic property of the room and can be changed by editor or script, but not +by Samus. It's also uniform throughout the room, unless you are underwater +in which case it doesn't occur at all. + +As of v0.75 + +New Stuff: + +Sounds! All right! Yeah I added sounds to the mix, and a pile of new blocks +for the old ruined brain area. SMTCLevEdit is also updated to use these blocks. +Elevators are still glitched and cannot be edited, as is water. I bashed the +file size down some more too! It went up due to sound though. + +As of v0.7 + +New Stuff: + +WATER! Yes I got around to doing the water transparencies. More water coding +will be included with later versions of the editor. The water is HARD CODED, so +all rooms are under water. Haha! Nothing you can do about it either! + +Slope Clipping is now fixed, and operational as far as the original Super +Metroid worked. You may notice bugs when approaching slopes from behind: Those +will be ironed out "whenever I feel like it" + +I worked out some minor bugs and efficiency checks, so it runs about 2 frames +faster (Go me) + +I removed the Mp3 for now, so it will download faster. If I figure out how to +do OGG files then I'll include those, but for now, the Mp3 is GONE. + +The rooms have been edited by my associate Crimson Justice, and they look far +sharper. There's a morph ball maze, an infinitly looping room, and still a long +shaft for wall jumping. Wall jump to reach the top or some super missiles. + +As of v0.6 + +New Stuff: + +Wall Jumping now supported. It can be tricky, but it's easier than the original +game's wall jumping. It's still glitchy. + +Slope code added. Press C to see where the slopes are in your level. It's +glitchy too. + +Elevator code tuned up. It's hard coded, meaning that you can't use the editor +on it yet. Be careful when editing levels. + +The levels now move in a sort of circle. You go up the elevator and arrive back +in Brinstar. Of course you could just edit it... + +Mp3 files are now supported (thank god) which means that, when you play SMTC, +you will hear the theme to Tallon Overworld (from Metroid Prime). +You can find the Mp3 in the Music folder in your SMTC directory. + +Rendering modes are now available. On the data load screen, select OPTIONS. +You'll see a list of the rendering modes. 2xSaI and SuperEagle are slightly +different, and Normal is the regular blocky looking mode. + +SMTC now runs in 640x480, but with a 320x240 buffer. Actually, the program does +NOT slow down at ALL unless you are running with 2xSaI or SuperEagle modes. +These chew up a lot of processing time and will slow the game down. + +//////////////////////////////////////////////////////////////////////////////// + + diff --git a/Console.txt b/Console.txt new file mode 100644 index 0000000..4a693a5 --- /dev/null +++ b/Console.txt @@ -0,0 +1,38 @@ +*------------------------------------------------------------------------------* +| | +| Console Commands for SMTC | +| | +*------------------------------------------------------------------------------* + +Binding Commands to a Key using the Console + +syntax: /op bind "command" "key" + +Acceptable entries for "command" + +AngD, AngU, Jump, Shoot, Run, ISwitch, Left, Right, Up, Down, Debug1, Debug2, +Debug3, AntiGrav, ReGrav, PixRight, PixLeft, SubScren, ICancel, Speed, Slow, +Quit, ScrnShot, FramPlus, FramMnus + +Acceptable entries for "key" + +A - Z, 0 - 9, 0PAD - 9PAD, F1 - F12, Esc, Tilde, Minus, Equals, Bckspce, Tab, +OBrace, CBrace, Enter, Colon, Quote, Bkslsh, Bkslsh2, Comma, Stop, +Slash, Space, Insert, Del, Home, End, PGUp, PGDown, Left, Right, Up, Down, +SlshPAD, AstrPAD, MnusPAD, PlusPAD, DelPAD, EntrPAD, PrtScr, Pause, +LftShft, RgtShft, LftCtrl, RgtCtrl, Alt, CapLock, NumLock, ScrLock +JyAxisU, JyAxisD, JyAxisL, JyAxisR, JyBut0 - JyBut12 + + + +Modifying CVars in the console +To modify a cvar, enter the following line: + +/cvar "Name" [Newvalue] + +Newvalue is an integer number. To use boolean, enter 1 for true or 0 for false. +Name may be any of the following: + +"Enemies Chase Offscreen" +Enemies will continue to chase Samus around even if she is offscreen. Some +enemies already do this, but if true, ALL enemies will. diff --git a/Custom/Sprites/Instructions.txt b/Custom/Sprites/Instructions.txt new file mode 100644 index 0000000..dbef2d9 --- /dev/null +++ b/Custom/Sprites/Instructions.txt @@ -0,0 +1,29 @@ +These are instructions for creating custom sprites. + +First, take your sprite picture and place it in the SMTC/Custom/Sprites folder. + +Next, edit the SpriteDefs.scp file and add your sprite's EXACT name to the end +of the list. This does not include the type, so Arrow.bmp would be added as +Arrow. The list is not case sensitive. + +Now, the sprite has been defined and will be loaded into SMTC at startup. + +Next, you must add the lines to spawn the sprite in a room. Go to the scripts +directory and then Rooms, and open/create your room script. Put in a line +called +Sprite("MySprite", "SpriteIMade", 20, 20, 0, -1) replacing SpriteIMade with the +exact name you assigned to the sprite (an example is Rain, one of the sprites +already inside the folder) +Now, your sprite will just be floating in midair at (20,20) in the room. You +can change the coordinates to something more suitable if that part of the room +is invisible. Press D once, and look at the LFT and TOP values in the bottom +left. Those are Samus' current position, so pick something around there to put +your sprite at. Admire it! + +To make your sprite do interesting things, you must use +ModSprite("MySprite", -1, -1, 1, 0, 0, 0, 0, 0) +Those extra zeroes are for enhanced physics, like gravity. Alternately, you can +use +SpecialSprite("MySprite", 1) +This makes the sprite fall to the ground and sit there. It obeys clipping +bounds and will not move until terminated. diff --git a/Custom/Sprites/Rain.bmp b/Custom/Sprites/Rain.bmp new file mode 100644 index 0000000..edcffc6 Binary files /dev/null and b/Custom/Sprites/Rain.bmp differ diff --git a/Custom/Sprites/SpriteDefs.scp b/Custom/Sprites/SpriteDefs.scp new file mode 100644 index 0000000..bea383e --- /dev/null +++ b/Custom/Sprites/SpriteDefs.scp @@ -0,0 +1,2 @@ +//32 is max name length! +Rain \ No newline at end of file diff --git a/Custom/Thumbs.db b/Custom/Thumbs.db new file mode 100644 index 0000000..d8f00aa Binary files /dev/null and b/Custom/Thumbs.db differ diff --git a/Custom/clip0.clp b/Custom/clip0.clp new file mode 100644 index 0000000..8bd024e --- /dev/null +++ b/Custom/clip0.clp @@ -0,0 +1,16 @@ +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 \ No newline at end of file diff --git a/Custom/clip1.clp b/Custom/clip1.clp new file mode 100644 index 0000000..8bd024e --- /dev/null +++ b/Custom/clip1.clp @@ -0,0 +1,16 @@ +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 \ No newline at end of file diff --git a/Custom/clip10.clp b/Custom/clip10.clp new file mode 100644 index 0000000..cfb4f04 --- /dev/null +++ b/Custom/clip10.clp @@ -0,0 +1,16 @@ +1111111200000000 +1111111200000000 +1111112000000000 +1111112000000000 +1111120000000000 +1111120000000000 +1111200000000000 +1111200000000000 +1112000000000000 +1112000000000000 +1120000000000000 +1120000000000000 +1200000000000000 +1200000000000000 +2000000000000000 +2000000000000000 \ No newline at end of file diff --git a/Custom/clip11.clp b/Custom/clip11.clp new file mode 100644 index 0000000..eae5bda --- /dev/null +++ b/Custom/clip11.clp @@ -0,0 +1,16 @@ +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000022 +0000000000002211 +0000000000221111 +0000000022111111 +0000002211111111 +0000221111111111 +0022111111111111 +2211111111111111 \ No newline at end of file diff --git a/Custom/clip12.clp b/Custom/clip12.clp new file mode 100644 index 0000000..a72a530 --- /dev/null +++ b/Custom/clip12.clp @@ -0,0 +1,16 @@ +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +2200000000000000 +1122000000000000 +1111220000000000 +1111112200000000 +1111111122000000 +1111111111220000 +1111111111112200 +1111111111111122 \ No newline at end of file diff --git a/Custom/clip13.clp b/Custom/clip13.clp new file mode 100644 index 0000000..9536e6b --- /dev/null +++ b/Custom/clip13.clp @@ -0,0 +1,16 @@ +1111111111111122 +1111111111112200 +1111111111220000 +1111111122000000 +1111112200000000 +1111220000000000 +1122000000000000 +2200000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 \ No newline at end of file diff --git a/Custom/clip14.clp b/Custom/clip14.clp new file mode 100644 index 0000000..c117fc3 --- /dev/null +++ b/Custom/clip14.clp @@ -0,0 +1,16 @@ +2211111111111111 +0022111111111111 +0000221111111111 +0000002211111111 +0000000022111111 +0000000000221111 +0000000000002211 +0000000000000022 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 \ No newline at end of file diff --git a/Custom/clip15.clp b/Custom/clip15.clp new file mode 100644 index 0000000..5250299 --- /dev/null +++ b/Custom/clip15.clp @@ -0,0 +1,16 @@ +0000000000000002 +0000000000000002 +0000000000000021 +0000000000000021 +0000000000000211 +0000000000000211 +0000000000002111 +0000000000002111 +0000000000021111 +0000000000021111 +0000000000211111 +0000000000211111 +0000000002111111 +0000000002111111 +0000000021111111 +0000000021111111 \ No newline at end of file diff --git a/Custom/clip16.clp b/Custom/clip16.clp new file mode 100644 index 0000000..bdc1614 --- /dev/null +++ b/Custom/clip16.clp @@ -0,0 +1,16 @@ +2000000000000000 +2000000000000000 +1200000000000000 +1200000000000000 +1120000000000000 +1120000000000000 +1112000000000000 +1112000000000000 +1111200000000000 +1111200000000000 +1111120000000000 +1111120000000000 +1111112000000000 +1111112000000000 +1111111200000000 +1111111200000000 \ No newline at end of file diff --git a/Custom/clip17.clp b/Custom/clip17.clp new file mode 100644 index 0000000..8044331 --- /dev/null +++ b/Custom/clip17.clp @@ -0,0 +1,16 @@ +1111111120000000 +1111111120000000 +1111111112000000 +1111111112000000 +1111111111200000 +1111111111200000 +1111111111120000 +1111111111120000 +1111111111112000 +1111111111112000 +1111111111111200 +1111111111111200 +1111111111111120 +1111111111111120 +1111111111111112 +1111111111111112 \ No newline at end of file diff --git a/Custom/clip18.clp b/Custom/clip18.clp new file mode 100644 index 0000000..a4dd5ba --- /dev/null +++ b/Custom/clip18.clp @@ -0,0 +1,16 @@ +0000000211111111 +0000000211111111 +0000002111111111 +0000002111111111 +0000021111111111 +0000021111111111 +0000211111111111 +0000211111111111 +0002111111111111 +0002111111111111 +0021111111111111 +0021111111111111 +0211111111111111 +0211111111111111 +2111111111111111 +2111111111111111 \ No newline at end of file diff --git a/Custom/clip19.clp b/Custom/clip19.clp new file mode 100644 index 0000000..3af9c7b --- /dev/null +++ b/Custom/clip19.clp @@ -0,0 +1,16 @@ +0000000000000022 +0000000000002211 +0000000000221111 +0000000022111111 +0000002211111111 +0000221111111111 +0022111111111111 +2211111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 \ No newline at end of file diff --git a/Custom/clip20.clp b/Custom/clip20.clp new file mode 100644 index 0000000..51f784e --- /dev/null +++ b/Custom/clip20.clp @@ -0,0 +1,16 @@ +2200000000000000 +1122000000000000 +1111220000000000 +1111112200000000 +1111111122000000 +1111111111220000 +1111111111112200 +1111111111111122 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 \ No newline at end of file diff --git a/Custom/clip21.clp b/Custom/clip21.clp new file mode 100644 index 0000000..9f051fd --- /dev/null +++ b/Custom/clip21.clp @@ -0,0 +1,16 @@ +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111122 +1111111111112200 +1111111111220000 +1111111122000000 +1111112200000000 +1111220000000000 +1122000000000000 +2200000000000000 \ No newline at end of file diff --git a/Custom/clip22.clp b/Custom/clip22.clp new file mode 100644 index 0000000..6bef519 --- /dev/null +++ b/Custom/clip22.clp @@ -0,0 +1,16 @@ +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +2211111111111111 +0022111111111111 +0000221111111111 +0000002211111111 +0000000022111111 +0000000000221111 +0000000000002211 +0000000000000022 \ No newline at end of file diff --git a/Custom/clip3.clp b/Custom/clip3.clp new file mode 100644 index 0000000..0604350 --- /dev/null +++ b/Custom/clip3.clp @@ -0,0 +1,16 @@ +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111112 +1111111111111120 +1111111111111200 +1111111111112000 +1111111111120000 +1111111111200000 +1111111112000000 +1111111120000000 +1111111200000000 \ No newline at end of file diff --git a/Custom/clip4.clp b/Custom/clip4.clp new file mode 100644 index 0000000..8337351 --- /dev/null +++ b/Custom/clip4.clp @@ -0,0 +1,16 @@ +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +1111111111111111 +2111111111111111 +0211111111111111 +0021111111111111 +0002111111111111 +0000211111111111 +0000021111111111 +0000002111111111 +0000000211111111 +0000000021111111 \ No newline at end of file diff --git a/Custom/clip5.clp b/Custom/clip5.clp new file mode 100644 index 0000000..287b271 --- /dev/null +++ b/Custom/clip5.clp @@ -0,0 +1,16 @@ +0000000021111111 +0000000002111111 +0000000000211111 +0000000000021111 +0000000000002111 +0000000000000211 +0000000000000021 +0000000000000002 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 \ No newline at end of file diff --git a/Custom/clip6.clp b/Custom/clip6.clp new file mode 100644 index 0000000..3a9ef7f --- /dev/null +++ b/Custom/clip6.clp @@ -0,0 +1,16 @@ +1111111200000000 +1111112000000000 +1111120000000000 +1111200000000000 +1112000000000000 +1120000000000000 +1200000000000000 +2000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 +0000000000000000 \ No newline at end of file diff --git a/Custom/clip7.clp b/Custom/clip7.clp new file mode 100644 index 0000000..483a0f3 --- /dev/null +++ b/Custom/clip7.clp @@ -0,0 +1,16 @@ +2111111111111111 +2111111111111111 +0211111111111111 +0211111111111111 +0021111111111111 +0021111111111111 +0002111111111111 +0002111111111111 +0000211111111111 +0000211111111111 +0000021111111111 +0000021111111111 +0000002111111111 +0000002111111111 +0000000211111111 +0000000211111111 \ No newline at end of file diff --git a/Custom/clip8.clp b/Custom/clip8.clp new file mode 100644 index 0000000..1ba4bbd --- /dev/null +++ b/Custom/clip8.clp @@ -0,0 +1,16 @@ +0000000021111111 +0000000021111111 +0000000002111111 +0000000002111111 +0000000000211111 +0000000000211111 +0000000000021111 +0000000000021111 +0000000000002111 +0000000000002111 +0000000000000211 +0000000000000211 +0000000000000021 +0000000000000021 +0000000000000002 +0000000000000002 \ No newline at end of file diff --git a/Custom/clip9.clp b/Custom/clip9.clp new file mode 100644 index 0000000..dc7fe6c --- /dev/null +++ b/Custom/clip9.clp @@ -0,0 +1,16 @@ +1111111111111112 +1111111111111112 +1111111111111120 +1111111111111120 +1111111111111200 +1111111111111200 +1111111111112000 +1111111111112000 +1111111111120000 +1111111111120000 +1111111111200000 +1111111111200000 +1111111112000000 +1111111112000000 +1111111120000000 +1111111120000000 \ No newline at end of file diff --git a/Data/Backgrounds.dat b/Data/Backgrounds.dat new file mode 100644 index 0000000..dae6940 Binary files /dev/null and b/Data/Backgrounds.dat differ diff --git a/Data/Beams.dat b/Data/Beams.dat new file mode 100644 index 0000000..fdbf169 Binary files /dev/null and b/Data/Beams.dat differ diff --git a/Data/Bosses.dat b/Data/Bosses.dat new file mode 100644 index 0000000..6141cd5 Binary files /dev/null and b/Data/Bosses.dat differ diff --git a/Data/Elevator.dat b/Data/Elevator.dat new file mode 100644 index 0000000..35d4bbd Binary files /dev/null and b/Data/Elevator.dat differ diff --git a/Data/Enemies.dat b/Data/Enemies.dat new file mode 100644 index 0000000..6034fca Binary files /dev/null and b/Data/Enemies.dat differ diff --git a/Data/Items.dat b/Data/Items.dat new file mode 100644 index 0000000..c53f834 Binary files /dev/null and b/Data/Items.dat differ diff --git a/Data/Misc.dat b/Data/Misc.dat new file mode 100644 index 0000000..84b5410 Binary files /dev/null and b/Data/Misc.dat differ diff --git a/Data/Music.dat b/Data/Music.dat new file mode 100644 index 0000000..30f69f9 Binary files /dev/null and b/Data/Music.dat differ diff --git a/Data/Norfair.dat b/Data/Norfair.dat new file mode 100644 index 0000000..6886389 Binary files /dev/null and b/Data/Norfair.dat differ diff --git a/Data/Objects.dat b/Data/Objects.dat new file mode 100644 index 0000000..48299ae Binary files /dev/null and b/Data/Objects.dat differ diff --git a/Data/Opening.dat b/Data/Opening.dat new file mode 100644 index 0000000..9f5955e Binary files /dev/null and b/Data/Opening.dat differ diff --git a/Data/Samus.dat b/Data/Samus.dat new file mode 100644 index 0000000..84ca105 Binary files /dev/null and b/Data/Samus.dat differ diff --git a/Data/Sploosh.dat b/Data/Sploosh.dat new file mode 100644 index 0000000..482a8be Binary files /dev/null and b/Data/Sploosh.dat differ diff --git a/Data/SubFont.dat b/Data/SubFont.dat new file mode 100644 index 0000000..e973fc8 Binary files /dev/null and b/Data/SubFont.dat differ diff --git a/Data/Tiles.dat b/Data/Tiles.dat new file mode 100644 index 0000000..b4979af Binary files /dev/null and b/Data/Tiles.dat differ diff --git a/Data/Tiles2.dat b/Data/Tiles2.dat new file mode 100644 index 0000000..547f828 Binary files /dev/null and b/Data/Tiles2.dat differ diff --git a/Data/Tiley.dat b/Data/Tiley.dat new file mode 100644 index 0000000..4fb1c55 Binary files /dev/null and b/Data/Tiley.dat differ diff --git a/HawkNL.dll b/HawkNL.dll new file mode 100644 index 0000000..5c39413 Binary files /dev/null and b/HawkNL.dll differ diff --git a/Joy.cfg b/Joy.cfg new file mode 100644 index 0000000..9a849d1 --- /dev/null +++ b/Joy.cfg @@ -0,0 +1,11 @@ +AngD JyBut6 +AngU JyBut5 +Jump JyBut2 +Shoot JyBut1 +Run JyBut3 +ISwitch JyBut9 +ICancel JyBut4 +Left JyAxisL +Right JyAxisR +Up JyAxisU +Down JyAxisD diff --git a/Key.cfg b/Key.cfg new file mode 100644 index 0000000..261632e --- /dev/null +++ b/Key.cfg @@ -0,0 +1,11 @@ +AngD Q +AngU W +Jump Z +Shoot X +Run A +ISwitch LftShft +ICancel S +Left Left +Right Right +Up Up +Down Down diff --git a/Levels/brinb1.lev b/Levels/brinb1.lev new file mode 100644 index 0000000..4752cab Binary files /dev/null and b/Levels/brinb1.lev differ diff --git a/Levels/brinb2.lev b/Levels/brinb2.lev new file mode 100644 index 0000000..7578f2b Binary files /dev/null and b/Levels/brinb2.lev differ diff --git a/Levels/brinb3.lev b/Levels/brinb3.lev new file mode 100644 index 0000000..eae4240 Binary files /dev/null and b/Levels/brinb3.lev differ diff --git a/Levels/brinb4.lev b/Levels/brinb4.lev new file mode 100644 index 0000000..473be0c Binary files /dev/null and b/Levels/brinb4.lev differ diff --git a/Levels/brinb5.lev b/Levels/brinb5.lev new file mode 100644 index 0000000..e411e53 Binary files /dev/null and b/Levels/brinb5.lev differ diff --git a/Levels/brinb6.lev b/Levels/brinb6.lev new file mode 100644 index 0000000..63ca03a Binary files /dev/null and b/Levels/brinb6.lev differ diff --git a/Levels/crat1.lev b/Levels/crat1.lev new file mode 100644 index 0000000..172b471 Binary files /dev/null and b/Levels/crat1.lev differ diff --git a/Levels/crat10.lev b/Levels/crat10.lev new file mode 100644 index 0000000..39b17e8 Binary files /dev/null and b/Levels/crat10.lev differ diff --git a/Levels/crat11.lev b/Levels/crat11.lev new file mode 100644 index 0000000..22b9049 Binary files /dev/null and b/Levels/crat11.lev differ diff --git a/Levels/crat12.lev b/Levels/crat12.lev new file mode 100644 index 0000000..f66b478 Binary files /dev/null and b/Levels/crat12.lev differ diff --git a/Levels/crat13.lev b/Levels/crat13.lev new file mode 100644 index 0000000..b416b91 Binary files /dev/null and b/Levels/crat13.lev differ diff --git a/Levels/crat14.lev b/Levels/crat14.lev new file mode 100644 index 0000000..8197ed7 Binary files /dev/null and b/Levels/crat14.lev differ diff --git a/Levels/crat15.lev b/Levels/crat15.lev new file mode 100644 index 0000000..9e3fad8 Binary files /dev/null and b/Levels/crat15.lev differ diff --git a/Levels/crat16.lev b/Levels/crat16.lev new file mode 100644 index 0000000..f44f42c Binary files /dev/null and b/Levels/crat16.lev differ diff --git a/Levels/crat17.lev b/Levels/crat17.lev new file mode 100644 index 0000000..d3abb09 Binary files /dev/null and b/Levels/crat17.lev differ diff --git a/Levels/crat18.lev b/Levels/crat18.lev new file mode 100644 index 0000000..fa13899 Binary files /dev/null and b/Levels/crat18.lev differ diff --git a/Levels/crat19.lev b/Levels/crat19.lev new file mode 100644 index 0000000..bb41e30 Binary files /dev/null and b/Levels/crat19.lev differ diff --git a/Levels/crat2.lev b/Levels/crat2.lev new file mode 100644 index 0000000..56c61ae Binary files /dev/null and b/Levels/crat2.lev differ diff --git a/Levels/crat20.lev b/Levels/crat20.lev new file mode 100644 index 0000000..6e3e46f Binary files /dev/null and b/Levels/crat20.lev differ diff --git a/Levels/crat3.lev b/Levels/crat3.lev new file mode 100644 index 0000000..488d18f Binary files /dev/null and b/Levels/crat3.lev differ diff --git a/Levels/crat4.lev b/Levels/crat4.lev new file mode 100644 index 0000000..f71221a Binary files /dev/null and b/Levels/crat4.lev differ diff --git a/Levels/crat5.lev b/Levels/crat5.lev new file mode 100644 index 0000000..63ae6ff Binary files /dev/null and b/Levels/crat5.lev differ diff --git a/Levels/crat6.lev b/Levels/crat6.lev new file mode 100644 index 0000000..c4af7c6 Binary files /dev/null and b/Levels/crat6.lev differ diff --git a/Levels/crat7.lev b/Levels/crat7.lev new file mode 100644 index 0000000..d691ed2 Binary files /dev/null and b/Levels/crat7.lev differ diff --git a/Levels/crat8.lev b/Levels/crat8.lev new file mode 100644 index 0000000..9a2490a Binary files /dev/null and b/Levels/crat8.lev differ diff --git a/Levels/cratsav.lev b/Levels/cratsav.lev new file mode 100644 index 0000000..901e881 Binary files /dev/null and b/Levels/cratsav.lev differ diff --git a/Music/Game/Boss Battle 1.spc b/Music/Game/Boss Battle 1.spc new file mode 100644 index 0000000..a5b1120 Binary files /dev/null and b/Music/Game/Boss Battle 1.spc differ diff --git a/Music/Game/Boss Battle 2.spc b/Music/Game/Boss Battle 2.spc new file mode 100644 index 0000000..6e1f467 Binary files /dev/null and b/Music/Game/Boss Battle 2.spc differ diff --git a/Music/Game/Brinstar Green.spc b/Music/Game/Brinstar Green.spc new file mode 100644 index 0000000..960180e Binary files /dev/null and b/Music/Game/Brinstar Green.spc differ diff --git a/Music/Game/Brinstar Red.spc b/Music/Game/Brinstar Red.spc new file mode 100644 index 0000000..4573370 Binary files /dev/null and b/Music/Game/Brinstar Red.spc differ diff --git a/Music/Game/Ceres.spc b/Music/Game/Ceres.spc new file mode 100644 index 0000000..57fc375 Binary files /dev/null and b/Music/Game/Ceres.spc differ diff --git a/Music/Game/Chozo.spc b/Music/Game/Chozo.spc new file mode 100644 index 0000000..56426b8 Binary files /dev/null and b/Music/Game/Chozo.spc differ diff --git a/Music/Game/Crateria Raining.spc b/Music/Game/Crateria Raining.spc new file mode 100644 index 0000000..c39337d Binary files /dev/null and b/Music/Game/Crateria Raining.spc differ diff --git a/Music/Game/Crateria Surface.spc b/Music/Game/Crateria Surface.spc new file mode 100644 index 0000000..150f1a5 Binary files /dev/null and b/Music/Game/Crateria Surface.spc differ diff --git a/Music/Game/Crateria Underground.spc b/Music/Game/Crateria Underground.spc new file mode 100644 index 0000000..fba5d1f Binary files /dev/null and b/Music/Game/Crateria Underground.spc differ diff --git a/Music/Game/Ending.spc b/Music/Game/Ending.spc new file mode 100644 index 0000000..355e62d Binary files /dev/null and b/Music/Game/Ending.spc differ diff --git a/Music/Game/Expectation.spc b/Music/Game/Expectation.spc new file mode 100644 index 0000000..685d7cb Binary files /dev/null and b/Music/Game/Expectation.spc differ diff --git a/Music/Game/Intro.spc b/Music/Game/Intro.spc new file mode 100644 index 0000000..fe12726 Binary files /dev/null and b/Music/Game/Intro.spc differ diff --git a/Music/Game/Item Room.spc b/Music/Game/Item Room.spc new file mode 100644 index 0000000..9958086 Binary files /dev/null and b/Music/Game/Item Room.spc differ diff --git a/Music/Game/Maridia Metal.spc b/Music/Game/Maridia Metal.spc new file mode 100644 index 0000000..227d616 Binary files /dev/null and b/Music/Game/Maridia Metal.spc differ diff --git a/Music/Game/Maridia Natural.spc b/Music/Game/Maridia Natural.spc new file mode 100644 index 0000000..7a9c40b Binary files /dev/null and b/Music/Game/Maridia Natural.spc differ diff --git a/Music/Game/Mini-Boss.spc b/Music/Game/Mini-Boss.spc new file mode 100644 index 0000000..cba0b32 Binary files /dev/null and b/Music/Game/Mini-Boss.spc differ diff --git a/Music/Game/Mother Brain Boss.spc b/Music/Game/Mother Brain Boss.spc new file mode 100644 index 0000000..2aee554 Binary files /dev/null and b/Music/Game/Mother Brain Boss.spc differ diff --git a/Music/Game/Norfair Depths.spc b/Music/Game/Norfair Depths.spc new file mode 100644 index 0000000..9435428 Binary files /dev/null and b/Music/Game/Norfair Depths.spc differ diff --git a/Music/Game/Norfair.spc b/Music/Game/Norfair.spc new file mode 100644 index 0000000..1c46495 Binary files /dev/null and b/Music/Game/Norfair.spc differ diff --git a/Music/Game/Open_Main.mp3 b/Music/Game/Open_Main.mp3 new file mode 100644 index 0000000..b4adeaf Binary files /dev/null and b/Music/Game/Open_Main.mp3 differ diff --git a/Music/Game/Open_Most.mp3 b/Music/Game/Open_Most.mp3 new file mode 100644 index 0000000..e41bef8 Binary files /dev/null and b/Music/Game/Open_Most.mp3 differ diff --git a/Music/Game/Open_Start.mp3 b/Music/Game/Open_Start.mp3 new file mode 100644 index 0000000..bee284f Binary files /dev/null and b/Music/Game/Open_Start.mp3 differ diff --git a/Music/Game/Open_Swoosh.mp3 b/Music/Game/Open_Swoosh.mp3 new file mode 100644 index 0000000..8be90f0 Binary files /dev/null and b/Music/Game/Open_Swoosh.mp3 differ diff --git a/Music/Game/Readme.txt b/Music/Game/Readme.txt new file mode 100644 index 0000000..14d9486 --- /dev/null +++ b/Music/Game/Readme.txt @@ -0,0 +1,12 @@ + Super Metroid + +Here my Super Metroid Soundtrack. I'm sure this is the complete +one. There's even a bonus, the voice just before the intro. The +SPC all start at the begining of the music, not like what I heard +before. However, the Windows version of the SNES9x SPC engine seem +to be unable to play them, as the lock after the first note. So, +you will have to use SPCAmp in Windows or a DOS player. + +You can reach me at Dragoniade@bbsi.net + + -=Dragoniade=- \ No newline at end of file diff --git a/Music/Game/Seft Destruct.spc b/Music/Game/Seft Destruct.spc new file mode 100644 index 0000000..20b0cf5 Binary files /dev/null and b/Music/Game/Seft Destruct.spc differ diff --git a/Music/Game/Statue Room.spc b/Music/Game/Statue Room.spc new file mode 100644 index 0000000..65c4a4e Binary files /dev/null and b/Music/Game/Statue Room.spc differ diff --git a/Music/Game/Tourian Bubbling.spc b/Music/Game/Tourian Bubbling.spc new file mode 100644 index 0000000..8de1e64 Binary files /dev/null and b/Music/Game/Tourian Bubbling.spc differ diff --git a/Music/Game/Tourian Tension.spc b/Music/Game/Tourian Tension.spc new file mode 100644 index 0000000..5d0a881 Binary files /dev/null and b/Music/Game/Tourian Tension.spc differ diff --git a/Music/Game/Wrecked Ship.spc b/Music/Game/Wrecked Ship.spc new file mode 100644 index 0000000..241a797 Binary files /dev/null and b/Music/Game/Wrecked Ship.spc differ diff --git a/Music/Information.txt b/Music/Information.txt new file mode 100644 index 0000000..b624aae --- /dev/null +++ b/Music/Information.txt @@ -0,0 +1,19 @@ +Copyright Information: Most of the music in this folder was released with the +original Super Metroid (1994, Nintendo) and is still licensed to the +aforementioned company and/or authors. This music was dumped from SPC format +with Winamp2 and dumped to MP3 by Ease Audio Converter. + +Primary Notes: You may note that this music is in MP3 format and not the newer +OGG format. This is because the Super Metroid music does not require the +128kbps bitrate that OGG supports. Using MP3 allows the sound to stay about 1/4 +as large as an equivalent OGG would allow, so don't complain to anyone about not +using OGGs. + +Salty's Notes: This folder contains the Music files for SMTC, primarily in MP3 +formats. Please don't change any of the music files in the Game folder, these +are normal system musics used by things like the opening, alarm, etc. There are +also SPCs in the Game folder: don't change those either. + +Which is not to say that changing them will not work, it will just sound odd. If +you are going to change a sound file, please back it up. Don't waste my +bandwidth redownloading this stuff. \ No newline at end of file diff --git a/Music/MusicNames.txt b/Music/MusicNames.txt new file mode 100644 index 0000000..583d837 --- /dev/null +++ b/Music/MusicNames.txt @@ -0,0 +1,23 @@ +SPC Names: + +Boss Battle 1 (Ridley on Ceres) +Boss Battle 2 (Kraid, Phantoon...) +Brinstar Green +Brinstar Red +Expectation (Same music as continue screen) +Crateria Raining +Crateria Surface +Crateria Underground +Item Room +Maridia Natural +Maridia Metal (Close to draygon) +Mini-Boss +Mother Brain Boss +Norfair +Norfair Depths +Self Destruct +Ceres +Statue Room +Tourian Bubbling +Tourian Tension (Encounter with metroid) +Wrecked Ship \ No newline at end of file diff --git a/Music/SFX/BaseShot.mp3 b/Music/SFX/BaseShot.mp3 new file mode 100644 index 0000000..22d65ed Binary files /dev/null and b/Music/SFX/BaseShot.mp3 differ diff --git a/Music/SFX/Bloop.mp3 b/Music/SFX/Bloop.mp3 new file mode 100644 index 0000000..9b39d27 Binary files /dev/null and b/Music/SFX/Bloop.mp3 differ diff --git a/Music/SFX/Bomb.mp3 b/Music/SFX/Bomb.mp3 new file mode 100644 index 0000000..6cc549e Binary files /dev/null and b/Music/SFX/Bomb.mp3 differ diff --git a/Music/SFX/Bub1.mp3 b/Music/SFX/Bub1.mp3 new file mode 100644 index 0000000..1e0e7d5 Binary files /dev/null and b/Music/SFX/Bub1.mp3 differ diff --git a/Music/SFX/Bub2.mp3 b/Music/SFX/Bub2.mp3 new file mode 100644 index 0000000..15855ca Binary files /dev/null and b/Music/SFX/Bub2.mp3 differ diff --git a/Music/SFX/Burst.mp3 b/Music/SFX/Burst.mp3 new file mode 100644 index 0000000..b83f1e9 Binary files /dev/null and b/Music/SFX/Burst.mp3 differ diff --git a/Music/SFX/Click.mp3 b/Music/SFX/Click.mp3 new file mode 100644 index 0000000..4e7015f Binary files /dev/null and b/Music/SFX/Click.mp3 differ diff --git a/Music/SFX/Doorclose.mp3 b/Music/SFX/Doorclose.mp3 new file mode 100644 index 0000000..1efacb7 Binary files /dev/null and b/Music/SFX/Doorclose.mp3 differ diff --git a/Music/SFX/Dooropen.mp3 b/Music/SFX/Dooropen.mp3 new file mode 100644 index 0000000..36f5bdb Binary files /dev/null and b/Music/SFX/Dooropen.mp3 differ diff --git a/Music/SFX/Dying.mp3 b/Music/SFX/Dying.mp3 new file mode 100644 index 0000000..8503fb5 Binary files /dev/null and b/Music/SFX/Dying.mp3 differ diff --git a/Music/SFX/EnemyDie.mp3 b/Music/SFX/EnemyDie.mp3 new file mode 100644 index 0000000..c541b9d Binary files /dev/null and b/Music/SFX/EnemyDie.mp3 differ diff --git a/Music/SFX/EnemyDive.mp3 b/Music/SFX/EnemyDive.mp3 new file mode 100644 index 0000000..0c02528 Binary files /dev/null and b/Music/SFX/EnemyDive.mp3 differ diff --git a/Music/SFX/EnemyHurt0.mp3 b/Music/SFX/EnemyHurt0.mp3 new file mode 100644 index 0000000..e4fb37e Binary files /dev/null and b/Music/SFX/EnemyHurt0.mp3 differ diff --git a/Music/SFX/EnemyHurt1.mp3 b/Music/SFX/EnemyHurt1.mp3 new file mode 100644 index 0000000..6f6539a Binary files /dev/null and b/Music/SFX/EnemyHurt1.mp3 differ diff --git a/Music/SFX/EnemyHurt2.mp3 b/Music/SFX/EnemyHurt2.mp3 new file mode 100644 index 0000000..e7f85aa Binary files /dev/null and b/Music/SFX/EnemyHurt2.mp3 differ diff --git a/Music/SFX/EnemyHurt3.mp3 b/Music/SFX/EnemyHurt3.mp3 new file mode 100644 index 0000000..9413239 Binary files /dev/null and b/Music/SFX/EnemyHurt3.mp3 differ diff --git a/Music/SFX/FishHurt.mp3 b/Music/SFX/FishHurt.mp3 new file mode 100644 index 0000000..f69121b Binary files /dev/null and b/Music/SFX/FishHurt.mp3 differ diff --git a/Music/SFX/IceBeam.mp3 b/Music/SFX/IceBeam.mp3 new file mode 100644 index 0000000..58d4bf7 Binary files /dev/null and b/Music/SFX/IceBeam.mp3 differ diff --git a/Music/SFX/IceSpazer.mp3 b/Music/SFX/IceSpazer.mp3 new file mode 100644 index 0000000..1657351 Binary files /dev/null and b/Music/SFX/IceSpazer.mp3 differ diff --git a/Music/SFX/Injure.mp3 b/Music/SFX/Injure.mp3 new file mode 100644 index 0000000..c666714 Binary files /dev/null and b/Music/SFX/Injure.mp3 differ diff --git a/Music/SFX/ItemGet.mp3 b/Music/SFX/ItemGet.mp3 new file mode 100644 index 0000000..6baedb4 Binary files /dev/null and b/Music/SFX/ItemGet.mp3 differ diff --git a/Music/SFX/Land.mp3 b/Music/SFX/Land.mp3 new file mode 100644 index 0000000..f053e71 Binary files /dev/null and b/Music/SFX/Land.mp3 differ diff --git a/Music/SFX/MBurst.mp3 b/Music/SFX/MBurst.mp3 new file mode 100644 index 0000000..4ef784d Binary files /dev/null and b/Music/SFX/MBurst.mp3 differ diff --git a/Music/SFX/Metroid_Geep_Double.mp3 b/Music/SFX/Metroid_Geep_Double.mp3 new file mode 100644 index 0000000..ac68939 Binary files /dev/null and b/Music/SFX/Metroid_Geep_Double.mp3 differ diff --git a/Music/SFX/Metroid_Geep_High.mp3 b/Music/SFX/Metroid_Geep_High.mp3 new file mode 100644 index 0000000..4980367 Binary files /dev/null and b/Music/SFX/Metroid_Geep_High.mp3 differ diff --git a/Music/SFX/Metroid_Geep_Low.mp3 b/Music/SFX/Metroid_Geep_Low.mp3 new file mode 100644 index 0000000..6fff9cb Binary files /dev/null and b/Music/SFX/Metroid_Geep_Low.mp3 differ diff --git a/Music/SFX/MisDoorHit.mp3 b/Music/SFX/MisDoorHit.mp3 new file mode 100644 index 0000000..9c2d634 Binary files /dev/null and b/Music/SFX/MisDoorHit.mp3 differ diff --git a/Music/SFX/Missile.mp3 b/Music/SFX/Missile.mp3 new file mode 100644 index 0000000..8dc1e9a Binary files /dev/null and b/Music/SFX/Missile.mp3 differ diff --git a/Music/SFX/Power Bomb.mp3 b/Music/SFX/Power Bomb.mp3 new file mode 100644 index 0000000..85b3b5e Binary files /dev/null and b/Music/SFX/Power Bomb.mp3 differ diff --git a/Music/SFX/PowerBomb.mp3 b/Music/SFX/PowerBomb.mp3 new file mode 100644 index 0000000..955b46b Binary files /dev/null and b/Music/SFX/PowerBomb.mp3 differ diff --git a/Music/SFX/RoboWalk.mp3 b/Music/SFX/RoboWalk.mp3 new file mode 100644 index 0000000..c572120 Binary files /dev/null and b/Music/SFX/RoboWalk.mp3 differ diff --git a/Music/SFX/SMissile.mp3 b/Music/SFX/SMissile.mp3 new file mode 100644 index 0000000..9c9fe36 Binary files /dev/null and b/Music/SFX/SMissile.mp3 differ diff --git a/Music/SFX/Spazer.mp3 b/Music/SFX/Spazer.mp3 new file mode 100644 index 0000000..e1c48bd Binary files /dev/null and b/Music/SFX/Spazer.mp3 differ diff --git a/Music/SFX/Spin.mp3 b/Music/SFX/Spin.mp3 new file mode 100644 index 0000000..077d3d2 Binary files /dev/null and b/Music/SFX/Spin.mp3 differ diff --git a/Music/SFX/Spin.wav b/Music/SFX/Spin.wav new file mode 100644 index 0000000..1840876 Binary files /dev/null and b/Music/SFX/Spin.wav differ diff --git a/Music/SFX/Spin2.mp3 b/Music/SFX/Spin2.mp3 new file mode 100644 index 0000000..7c4027b Binary files /dev/null and b/Music/SFX/Spin2.mp3 differ diff --git a/Music/SFX/Splash1.mp3 b/Music/SFX/Splash1.mp3 new file mode 100644 index 0000000..e8c5130 Binary files /dev/null and b/Music/SFX/Splash1.mp3 differ diff --git a/Music/SFX/Splash2.mp3 b/Music/SFX/Splash2.mp3 new file mode 100644 index 0000000..d2482ff Binary files /dev/null and b/Music/SFX/Splash2.mp3 differ diff --git a/Music/SFX/Step.mp3 b/Music/SFX/Step.mp3 new file mode 100644 index 0000000..5a30263 Binary files /dev/null and b/Music/SFX/Step.mp3 differ diff --git a/Music/SFX/XRay.mp3 b/Music/SFX/XRay.mp3 new file mode 100644 index 0000000..87d83d6 Binary files /dev/null and b/Music/SFX/XRay.mp3 differ diff --git a/Music/SFX/XRay.wav b/Music/SFX/XRay.wav new file mode 100644 index 0000000..5fd49cf Binary files /dev/null and b/Music/SFX/XRay.wav differ diff --git a/Music/SFX/fish_damaged.mp3 b/Music/SFX/fish_damaged.mp3 new file mode 100644 index 0000000..372d605 Binary files /dev/null and b/Music/SFX/fish_damaged.mp3 differ diff --git a/Music/SFX/loadmusic.mp3 b/Music/SFX/loadmusic.mp3 new file mode 100644 index 0000000..bd80aea Binary files /dev/null and b/Music/SFX/loadmusic.mp3 differ diff --git a/Music/SFX/phantoonfire.mp3 b/Music/SFX/phantoonfire.mp3 new file mode 100644 index 0000000..d37fac4 Binary files /dev/null and b/Music/SFX/phantoonfire.mp3 differ diff --git a/Music/SFX/phantoonroar1.mp3 b/Music/SFX/phantoonroar1.mp3 new file mode 100644 index 0000000..607b057 Binary files /dev/null and b/Music/SFX/phantoonroar1.mp3 differ diff --git a/Music/SFX/phantoonroar2.mp3 b/Music/SFX/phantoonroar2.mp3 new file mode 100644 index 0000000..cbd9904 Binary files /dev/null and b/Music/SFX/phantoonroar2.mp3 differ diff --git a/Pics/Arrow.bmp b/Pics/Arrow.bmp new file mode 100644 index 0000000..0dbaf97 Binary files /dev/null and b/Pics/Arrow.bmp differ diff --git a/Pics/Loadscreen/Bigstar.bmp b/Pics/Loadscreen/Bigstar.bmp new file mode 100644 index 0000000..16868a6 Binary files /dev/null and b/Pics/Loadscreen/Bigstar.bmp differ diff --git a/Pics/Loadscreen/Cornerll.bmp b/Pics/Loadscreen/Cornerll.bmp new file mode 100644 index 0000000..b596c3e Binary files /dev/null and b/Pics/Loadscreen/Cornerll.bmp differ diff --git a/Pics/Loadscreen/Cornerlr.bmp b/Pics/Loadscreen/Cornerlr.bmp new file mode 100644 index 0000000..c925b66 Binary files /dev/null and b/Pics/Loadscreen/Cornerlr.bmp differ diff --git a/Pics/Loadscreen/Cornertl.bmp b/Pics/Loadscreen/Cornertl.bmp new file mode 100644 index 0000000..646fbe8 Binary files /dev/null and b/Pics/Loadscreen/Cornertl.bmp differ diff --git a/Pics/Loadscreen/Cornertr.bmp b/Pics/Loadscreen/Cornertr.bmp new file mode 100644 index 0000000..3fdd91c Binary files /dev/null and b/Pics/Loadscreen/Cornertr.bmp differ diff --git a/Pics/Loadscreen/Energy.bmp b/Pics/Loadscreen/Energy.bmp new file mode 100644 index 0000000..ed6f7ab Binary files /dev/null and b/Pics/Loadscreen/Energy.bmp differ diff --git a/Pics/Loadscreen/Ideal.bmp b/Pics/Loadscreen/Ideal.bmp new file mode 100644 index 0000000..dd11f46 Binary files /dev/null and b/Pics/Loadscreen/Ideal.bmp differ diff --git a/Pics/Loadscreen/Medstar.bmp b/Pics/Loadscreen/Medstar.bmp new file mode 100644 index 0000000..7e2d02a Binary files /dev/null and b/Pics/Loadscreen/Medstar.bmp differ diff --git a/Pics/Loadscreen/Smallstar.bmp b/Pics/Loadscreen/Smallstar.bmp new file mode 100644 index 0000000..68fe15c Binary files /dev/null and b/Pics/Loadscreen/Smallstar.bmp differ diff --git a/Pics/Loadscreen/Thumbs.db b/Pics/Loadscreen/Thumbs.db new file mode 100644 index 0000000..484d85c Binary files /dev/null and b/Pics/Loadscreen/Thumbs.db differ diff --git a/Pics/Loadscreen/Time.bmp b/Pics/Loadscreen/Time.bmp new file mode 100644 index 0000000..5df8cab Binary files /dev/null and b/Pics/Loadscreen/Time.bmp differ diff --git a/Pics/Loadscreen/Zebes.bmp b/Pics/Loadscreen/Zebes.bmp new file mode 100644 index 0000000..99536d7 Binary files /dev/null and b/Pics/Loadscreen/Zebes.bmp differ diff --git a/Pics/Loadscreen/samhead0.bmp b/Pics/Loadscreen/samhead0.bmp new file mode 100644 index 0000000..687aabe Binary files /dev/null and b/Pics/Loadscreen/samhead0.bmp differ diff --git a/Pics/Loadscreen/samhead1.bmp b/Pics/Loadscreen/samhead1.bmp new file mode 100644 index 0000000..1b6bd3f Binary files /dev/null and b/Pics/Loadscreen/samhead1.bmp differ diff --git a/Pics/Loadscreen/samhead3.bmp b/Pics/Loadscreen/samhead3.bmp new file mode 100644 index 0000000..758ad03 Binary files /dev/null and b/Pics/Loadscreen/samhead3.bmp differ diff --git a/Pics/Loadscreen/samhead4.bmp b/Pics/Loadscreen/samhead4.bmp new file mode 100644 index 0000000..9386970 Binary files /dev/null and b/Pics/Loadscreen/samhead4.bmp differ diff --git a/Pics/Loadscreen/samhead5.bmp b/Pics/Loadscreen/samhead5.bmp new file mode 100644 index 0000000..1075b77 Binary files /dev/null and b/Pics/Loadscreen/samhead5.bmp differ diff --git a/Pics/Loadscreen/samhead6.bmp b/Pics/Loadscreen/samhead6.bmp new file mode 100644 index 0000000..73504b6 Binary files /dev/null and b/Pics/Loadscreen/samhead6.bmp differ diff --git a/Pics/Loadscreen/samhead7.bmp b/Pics/Loadscreen/samhead7.bmp new file mode 100644 index 0000000..25b4fe9 Binary files /dev/null and b/Pics/Loadscreen/samhead7.bmp differ diff --git a/Pics/Loadscreen/samhead8.bmp b/Pics/Loadscreen/samhead8.bmp new file mode 100644 index 0000000..5e8b0ad Binary files /dev/null and b/Pics/Loadscreen/samhead8.bmp differ diff --git a/Pics/Miscellaneous/BlsEye.bmp b/Pics/Miscellaneous/BlsEye.bmp new file mode 100644 index 0000000..5fa2966 Binary files /dev/null and b/Pics/Miscellaneous/BlsEye.bmp differ diff --git a/Pics/Miscellaneous/BlsEyeTrans.bmp b/Pics/Miscellaneous/BlsEyeTrans.bmp new file mode 100644 index 0000000..f08280c Binary files /dev/null and b/Pics/Miscellaneous/BlsEyeTrans.bmp differ diff --git a/Pics/Miscellaneous/BmbDest.bmp b/Pics/Miscellaneous/BmbDest.bmp new file mode 100644 index 0000000..c30e5c8 Binary files /dev/null and b/Pics/Miscellaneous/BmbDest.bmp differ diff --git a/Pics/Miscellaneous/BmbDestTrans.bmp b/Pics/Miscellaneous/BmbDestTrans.bmp new file mode 100644 index 0000000..6abd718 Binary files /dev/null and b/Pics/Miscellaneous/BmbDestTrans.bmp differ diff --git a/Pics/Miscellaneous/DownAr.bmp b/Pics/Miscellaneous/DownAr.bmp new file mode 100644 index 0000000..4db358f Binary files /dev/null and b/Pics/Miscellaneous/DownAr.bmp differ diff --git a/Pics/Miscellaneous/DownArTrans.bmp b/Pics/Miscellaneous/DownArTrans.bmp new file mode 100644 index 0000000..deb28df Binary files /dev/null and b/Pics/Miscellaneous/DownArTrans.bmp differ diff --git a/Pics/Miscellaneous/Elev0.bmp b/Pics/Miscellaneous/Elev0.bmp new file mode 100644 index 0000000..7ddd718 Binary files /dev/null and b/Pics/Miscellaneous/Elev0.bmp differ diff --git a/Pics/Miscellaneous/Elev1.bmp b/Pics/Miscellaneous/Elev1.bmp new file mode 100644 index 0000000..c4f8ebd Binary files /dev/null and b/Pics/Miscellaneous/Elev1.bmp differ diff --git a/Pics/Miscellaneous/Minimap0.bmp b/Pics/Miscellaneous/Minimap0.bmp new file mode 100644 index 0000000..c4c2984 Binary files /dev/null and b/Pics/Miscellaneous/Minimap0.bmp differ diff --git a/Pics/Miscellaneous/Minimap1.bmp b/Pics/Miscellaneous/Minimap1.bmp new file mode 100644 index 0000000..e1d26de Binary files /dev/null and b/Pics/Miscellaneous/Minimap1.bmp differ diff --git a/Pics/Miscellaneous/Minimap2.bmp b/Pics/Miscellaneous/Minimap2.bmp new file mode 100644 index 0000000..14328a6 Binary files /dev/null and b/Pics/Miscellaneous/Minimap2.bmp differ diff --git a/Pics/Miscellaneous/Minimap3.bmp b/Pics/Miscellaneous/Minimap3.bmp new file mode 100644 index 0000000..e1d26de Binary files /dev/null and b/Pics/Miscellaneous/Minimap3.bmp differ diff --git a/Pics/Miscellaneous/NMsl.bmp b/Pics/Miscellaneous/NMsl.bmp new file mode 100644 index 0000000..448f179 Binary files /dev/null and b/Pics/Miscellaneous/NMsl.bmp differ diff --git a/Pics/Miscellaneous/NMslTrans.bmp b/Pics/Miscellaneous/NMslTrans.bmp new file mode 100644 index 0000000..fca5b25 Binary files /dev/null and b/Pics/Miscellaneous/NMslTrans.bmp differ diff --git a/Pics/Miscellaneous/SMsl.bmp b/Pics/Miscellaneous/SMsl.bmp new file mode 100644 index 0000000..b1db0a0 Binary files /dev/null and b/Pics/Miscellaneous/SMsl.bmp differ diff --git a/Pics/Miscellaneous/SMslTrans.bmp b/Pics/Miscellaneous/SMslTrans.bmp new file mode 100644 index 0000000..4b667d4 Binary files /dev/null and b/Pics/Miscellaneous/SMslTrans.bmp differ diff --git a/Pics/Miscellaneous/Solid.bmp b/Pics/Miscellaneous/Solid.bmp new file mode 100644 index 0000000..29efa8c Binary files /dev/null and b/Pics/Miscellaneous/Solid.bmp differ diff --git a/Pics/Miscellaneous/SolidTrans.bmp b/Pics/Miscellaneous/SolidTrans.bmp new file mode 100644 index 0000000..354f28f Binary files /dev/null and b/Pics/Miscellaneous/SolidTrans.bmp differ diff --git a/Pics/Miscellaneous/Thumbs.db b/Pics/Miscellaneous/Thumbs.db new file mode 100644 index 0000000..03d9882 Binary files /dev/null and b/Pics/Miscellaneous/Thumbs.db differ diff --git a/Pics/SubScreen/Buttonact.bmp b/Pics/SubScreen/Buttonact.bmp new file mode 100644 index 0000000..a33af50 Binary files /dev/null and b/Pics/SubScreen/Buttonact.bmp differ diff --git a/Pics/SubScreen/Buttonoff.bmp b/Pics/SubScreen/Buttonoff.bmp new file mode 100644 index 0000000..7079289 Binary files /dev/null and b/Pics/SubScreen/Buttonoff.bmp differ diff --git a/Pics/SubScreen/Buttonon.bmp b/Pics/SubScreen/Buttonon.bmp new file mode 100644 index 0000000..fee13a0 Binary files /dev/null and b/Pics/SubScreen/Buttonon.bmp differ diff --git a/Pics/SubScreen/Mapbase.bmp b/Pics/SubScreen/Mapbase.bmp new file mode 100644 index 0000000..518e937 Binary files /dev/null and b/Pics/SubScreen/Mapbase.bmp differ diff --git a/Pics/SubScreen/Pieces.bmp b/Pics/SubScreen/Pieces.bmp new file mode 100644 index 0000000..161268f Binary files /dev/null and b/Pics/SubScreen/Pieces.bmp differ diff --git a/Pics/SubScreen/Plainsuit.bmp b/Pics/SubScreen/Plainsuit.bmp new file mode 100644 index 0000000..7c4c872 Binary files /dev/null and b/Pics/SubScreen/Plainsuit.bmp differ diff --git a/Pics/SubScreen/Sambase.bmp b/Pics/SubScreen/Sambase.bmp new file mode 100644 index 0000000..e52bce2 Binary files /dev/null and b/Pics/SubScreen/Sambase.bmp differ diff --git a/Pics/SubScreen/SubScreen.JPG b/Pics/SubScreen/SubScreen.JPG new file mode 100644 index 0000000..c2afdb3 Binary files /dev/null and b/Pics/SubScreen/SubScreen.JPG differ diff --git a/Pics/SubScreen/Thumbs.db b/Pics/SubScreen/Thumbs.db new file mode 100644 index 0000000..f36b41b Binary files /dev/null and b/Pics/SubScreen/Thumbs.db differ diff --git a/Pics/SubScreen/VariaSuit.bmp b/Pics/SubScreen/VariaSuit.bmp new file mode 100644 index 0000000..f82cdee Binary files /dev/null and b/Pics/SubScreen/VariaSuit.bmp differ diff --git a/Pics/Thumbs.db b/Pics/Thumbs.db new file mode 100644 index 0000000..c778b8a Binary files /dev/null and b/Pics/Thumbs.db differ diff --git a/Readme.txt b/Readme.txt new file mode 100644 index 0000000..fc5efeb --- /dev/null +++ b/Readme.txt @@ -0,0 +1,195 @@ +//////////////////////////////////////////////////////////////////////////////// +// Super Metroid Classic Readme File // +//////////////////////////////////////////////////////////////////////////////// + +Author: SaltyJustice +Email: Saltyjustice@hotmail.com +Homepage: www.supermetroidclassic.com + +I hope I drilled my name into your head! + +#include + +This program is run at your own risk. I am not responsible for any effects, +adverse or otherwise, that this program has on you, your dog, or anything else +around you. + +Table of Contents + +1 FAQ +2 Game Keys +3 Command Prompt Commands +4 Wrap Up and Thanks + +//////////////////////////////////////////////////////////////////////////////// +// Section 1: FAQ // +//////////////////////////////////////////////////////////////////////////////// + +New version note: Most of this new stuff is in the changelog! + +Q: So what exactly is Super Metroid Classic? + +A: SMTC is a C++ project I've been working on for a year now. It's presently +in the beta stages, but will eventually include a full-fledged level editor, +enemy/boss script maker, block editors, and much more. Thge idea is to recreate +Super Metroid from the SNES, released in 1994(Nintendo), on the PC. + +Q: Are there any copyright problems with Nintendo? + +A: As far as I know, Nintendo knows nothing about SMTC. I am reusing the +sprites from Super Metroid, with some originals tossed in for good measure. The +code is pure 100% original, the only actual conflict would be about the sprites, +and only the sprites. Uh, hopefully. + +Q: Okay, what's your website then? + +A: Ha HA! Since the last update I got me a fancy new website. Okay so there's +precious little content, but you can find the address at the top of this readme. + +Q: Uhm, what about supporting you? + +A: Really!? If you want to help out, I'm flattered. Presently I'm the only +one working on this project, I do all the sprite work myself, and all the music +too. If anyone wants to help at all(plug) mail me! I don't CARE what you can +do(levels, sprites, whatever) it's all good. + +Q: What beta is SMTC in? + +A: If 1.0 was the first fully playable one, this beta is in about 0.99 I know a +lot seems done, but a little more needs to be done! Wait, .99? That means it's +right next to release? Yeah, sort of. + +Q: What new stuff can we look for in SMTC? + +A: Lots of new stuff. I plan to add a new type of suit "Corrosion" which feels +no effects from acid, a "Burn" Beam which does not combine with the Plasma beam +and can kill some strong enemies ex: rippers. Also, a few new items concerning +the morph ball stuff (can you say speed booster ball?) and a revised space +jumping system similar to the one in Metroid Fusion. Oh yeah, an entirely new +map and mission, including snow and sand areas. If you aren't drooling yet, +remember it's fully cutomisable, meaning make your own levels, and even some +customizable items, like suit colors. + +Update: All items ideas can be found on the message boards of the SMTC website +Go to forums on the side bar, then go to Suggestions -> Official Ideas Thread + +Q: Anything else? + +A: No. Not yet anyway. What kind of question is that!? That's like asking, +"Are there any unforseen setbacks?" + +//////////////////////////////////////////////////////////////////////////////// +// Game Keys +//////////////////////////////////////////////////////////////////////////////// + +Metroid Classic Standard Keys + +These are ordinary gameplay keys +All keys can be rebound from the options screen. You can change them in the +SMTC.cfg file in the SMTC folder. The keys are listed, followed by the +character representing them. + +F2 - Take screenshot + +Note: Please do not press the other F keys, they're debugging and may crash the +game. F12 is a bail out key to press if something freezes. + +Q: Angle Down +W: Angle Up +Z: Jump +X: Shoot +A: Run +Note: A can also activate X Ray Scope if selected + +Shift: Switch items(missiles -> super missles, etc) +Arrow Keys Left and Right: Run +Arrow Keys Up and Down: Crouch -> Morph Ball, Aiming +Tab: Open the console + +On the subscreen: + +W to see the Samus Items list +Space to activate/deactivate items +Q to see the map +T to return to the main game + +Metroid Classic Bug Testing Keys + +For these keys, press once to activate, again to deactivate + +C: Draws the clipping for the level in purple and green. +D: Draws a bunch of debugging stuff to the screen. +E: Draws clipping boxes on Samus and the Enemies. + +U: * Deactivates gravity/moves Samus up a pixel +I: Reactivates gravity +O: Moves Samus one pixel to the left +P: Moves Samus one pixel to the right + +* Jump and press U at the same time to go shooting up until letting go. You +will then hover there until gravity is reactivated (helpful in some areas, +especially if you can't wall jump :D) + +What keys to use in SMTC.cfg +The following keys may be used in SMTC.cfg to assign to the various functions. + +[Function] [Key] +Where [Function] is one of the following: +AngD = Angle Down +AngU = Angle Up +Jump +Shoot +Run +ISwitch = Switch Items (Missiles, Super Missiles, etc.) +Left +Right +Down +Up +Debug1 = Draw Clipping +Debug2 = Draw Debugging Vars +Debug3 = Draw Bounding Boxes +AntiGrav = Disable Gravity +ReGrav = Reenable Gravity +PixRight = Move 1 pixel to the right +PixLeft = Move 1 pixel to the left +Console = Show the archive console + +And [Key] is one of the following +A-Z +a-z +0-9 +NUM0 - NUM9 = Numberpad 0-9 +LShift, RShift, LCtrl, RCtrl, Alt, Tab +LeftAr, RightAr, DownAr, UpAr = Arrow keys + +Also, as of this new release, joystick support allows you to bind keys to: +JyAxisU, JyAxisD, JyAxisL, JyAxisR, and JyBut0 - JyBut12 + +//////////////////////////////////////////////////////////////////////////////// +// Command Prompt Commands // +//////////////////////////////////////////////////////////////////////////////// + +Enter these on the SMTC command line to modify your SMTC experience. + +-room "roomname" Runs SMTC in the specified room. DO NOT add a .lev. + ex: SMTC.exe -room "brinb1" +-windowed Runs SMTC in a window +-tiny Runs in 320x240 resolution +-connect [ip] Connects to a SMTCNetPlay server at that IP. +-name [Name] Sets your name in the console +-mode Timeattack Plays a timeattack game +-joypad Uses SMTC Joypad.cfg instead of SMTC.cfg +-x Place Samus at this X position when starting +-y Place Samus at this Y position when starting +-new Run the intro script at game start + +//////////////////////////////////////////////////////////////////////////////// +// Wrap Up and Thanks // +//////////////////////////////////////////////////////////////////////////////// + +This concludes the SMTC readme! I want to thank my friend Crimson Justice for +helping out with the editor and some code and thank my Dog for constant moral +support. Additionally, anyone on the SMTC team, and that means anyone. I +forget all their names :/ + + diff --git a/SMTC Launcher.exe b/SMTC Launcher.exe new file mode 100644 index 0000000..e15fa05 Binary files /dev/null and b/SMTC Launcher.exe differ diff --git a/SMTC.bat b/SMTC.bat new file mode 100644 index 0000000..922ff81 --- /dev/null +++ b/SMTC.bat @@ -0,0 +1 @@ +SMTC.exe -room "brinb1" -windowed \ No newline at end of file diff --git a/SMTC.exe b/SMTC.exe new file mode 100644 index 0000000..c543acf Binary files /dev/null and b/SMTC.exe differ diff --git a/SMTC.exe.Manifest b/SMTC.exe.Manifest new file mode 100644 index 0000000..af1a1d5 --- /dev/null +++ b/SMTC.exe.Manifest @@ -0,0 +1,23 @@ + + + +Metroid Classic + + + + + + diff --git a/SNESAPU.DLL b/SNESAPU.DLL new file mode 100644 index 0000000..4c4ecbd Binary files /dev/null and b/SNESAPU.DLL differ diff --git a/Scripts/Intro/AutoExec.ssf b/Scripts/Intro/AutoExec.ssf new file mode 100644 index 0000000..a33fb68 --- /dev/null +++ b/Scripts/Intro/AutoExec.ssf @@ -0,0 +1,4 @@ +xSamType0 +SamShootBrain +xSamType1 +xSamMeetMetroid \ No newline at end of file diff --git a/Scripts/Intro/MBrainShootBG.ssf b/Scripts/Intro/MBrainShootBG.ssf new file mode 100644 index 0000000..def6089 --- /dev/null +++ b/Scripts/Intro/MBrainShootBG.ssf @@ -0,0 +1,70 @@ +Pixel(2, 67, 248, 248, 248) +Pixel(4, 67, 248, 248, 248) +Pixel(6, 67, 248, 248, 248) +Pixel(8, 67, 248, 248, 248) + +Pixel(2, 146, 248, 248, 248) +Pixel(4, 146, 248, 248, 248) +Pixel(6, 146, 248, 248, 248) +Pixel(8, 146, 248, 248, 248) + +Pixel(170, 66, 248, 248, 248) +Pixel(172, 66, 248, 248, 248) +Pixel(186, 66, 248, 248, 248) +Pixel(188, 66, 248, 248, 248) +Pixel(202, 66, 248, 248, 248) +Pixel(204, 66, 248, 248, 248) +Pixel(218, 66, 248, 248, 248) +Pixel(220, 66, 248, 248, 248) +Pixel(234, 66, 248, 248, 248) +Pixel(236, 66, 248, 248, 248) + +Pixel(170, 147, 248, 248, 248) +Pixel(172, 147, 248, 248, 248) +Pixel(186, 147, 248, 248, 248) +Pixel(188, 147, 248, 248, 248) +Pixel(202, 147, 248, 248, 248) +Pixel(204, 147, 248, 248, 248) +Pixel(218, 147, 248, 248, 248) +Pixel(220, 147, 248, 248, 248) +Pixel(234, 147, 248, 248, 248) +Pixel(236, 147, 248, 248, 248) + +Pixel(108, 42, 80, 80, 80) +Pixel(108, 50, 80, 80, 80) +Pixel(108, 58, 80, 80, 80) +Pixel(108, 66, 80, 80, 80) + +Pixel(107, 130, 80, 80, 80) +Pixel(107, 138, 80, 80, 80) +Pixel(107, 146, 80, 80, 80) + +Pixel(172, 99, 80, 80, 80) +Pixel(180, 99, 80, 80, 80) +Pixel(188, 99, 80, 80, 80) +Pixel(196, 99, 80, 80, 80) +Pixel(204, 99, 80, 80, 80) +Pixel(212, 99, 80, 80, 80) +Pixel(220, 99, 80, 80, 80) +Pixel(228, 99, 80, 80, 80) +Pixel(236, 99, 80, 80, 80) + +Pixel(172, 107, 80, 80, 80) +Pixel(180, 107, 80, 80, 80) +Pixel(188, 107, 80, 80, 80) +Pixel(196, 107, 80, 80, 80) +Pixel(204, 107, 80, 80, 80) +Pixel(212, 107, 80, 80, 80) +Pixel(220, 107, 80, 80, 80) +Pixel(228, 107, 80, 80, 80) +Pixel(236, 107, 80, 80, 80) + +Line(122, 24, 122, 28, 80, 80, 80) +Line(124, 24, 124, 28, 80, 80, 80) +Line(126, 24, 126, 28, 80, 80, 80) +Line(128, 24, 128, 28, 80, 80, 80) + +Line(122, 76, 122, 80, 80, 80, 80) +Line(124, 76, 124, 80, 80, 80, 80) +Line(126, 76, 126, 80, 80, 80, 80) +Line(128, 76, 128, 80, 80, 80, 80) \ No newline at end of file diff --git a/Scripts/Intro/RegDraw.txt b/Scripts/Intro/RegDraw.txt new file mode 100644 index 0000000..448a435 --- /dev/null +++ b/Scripts/Intro/RegDraw.txt @@ -0,0 +1,26 @@ +================================================================================ +== The SMTC Ordinary Drawing Guide == +================================================================================ + +This guide is a simple listing of the regular draw commands available in SMTC. +These drawing codes may be used in the following areas: + +The Subscreen script +A script for drawing a custom Background + +And here they are! + +Pixel(x, y, r, g, b) +Draws a single pixel at x, y with rgb as the colour. + +FRect(x1, y1, x2, y2, r, g, b) +Draws a rectangle of solid colour from x1,y1 to x2,y2 of colour rgb. + +URect(x1, y1, x2, y2, r, g, b) +Same as FRect, except the box is hollow. Only the outer edge is filled. + +Line(x1, y1, x2, y2, r, g, b) +Draws a line from x1,y1 to x2,y2 of colour rgb. + +Just place these on the appropriate lines as they are. The variables are self- +explanatory. diff --git a/Scripts/Intro/SamMeetMetroid.ssf b/Scripts/Intro/SamMeetMetroid.ssf new file mode 100644 index 0000000..298839c --- /dev/null +++ b/Scripts/Intro/SamMeetMetroid.ssf @@ -0,0 +1,18 @@ +SETCOLS 0 +Sam_Velocity(0, 0, 0) +Sam_Velocity_Cap(-3, 5, 0, 0, 0) +DSamLoop(256, 119, 93, 102, 3, -1, 0) +Sam_Accel(-0.125, 0, 0) +FRAMEUPNO 022 +Sam_Accel(0, 0, 0) +Sam_Velocity(0, 0, 0) +DFSam(-100, -100, 45, -1, 0) +FRAMEUPNO 145 +DFSam(-100, -100, 27, -1, 0) +FRAMEUPNO 099 +DFSam(-100, -100, 45, -1, 0) +FRAMEUPNO 016 +Sam_Accel(-0.125, 0, 0) +DSamLoop(-100, -100, 93, 102, 3, -1, 0) +FRAMEUPNO 100 +FINISH \ No newline at end of file diff --git a/Scripts/Intro/SamShootBrain.ssf b/Scripts/Intro/SamShootBrain.ssf new file mode 100644 index 0000000..6cec75c --- /dev/null +++ b/Scripts/Intro/SamShootBrain.ssf @@ -0,0 +1,11 @@ +SETCOLS 0 +Spawn_Brain(32, 87, 0) +Spawn_Rinka(32, 23, 0.5, -0.15, 0) +Load_Room(1, 1) +DSamLoop(25, 25, 63, 72, 6, -1, 0) +Create_CustBG("MBrainShootBG.scp") +Set_BGFade(255) +Set_BGFade_Out() +Regulate_BGFade(4, 4) +FRAMEUPNO 256 +FINISH \ No newline at end of file diff --git a/Scripts/Intro/SamType0.ssf b/Scripts/Intro/SamType0.ssf new file mode 100644 index 0000000..2ca9b9e --- /dev/null +++ b/Scripts/Intro/SamType0.ssf @@ -0,0 +1,12 @@ +SETSAMBG +BEGINTYPESET +I FIRST BATTLED THE METROIDS +ON PLANET ZEBES. IT WAS THERE +THAT I FOILED THE PLANS OF +THE SPACE PIRATE LEADER +MOTHER BRAIN TO USE THE +CREATURES TO ATTACK +GALACTIC CIVILIZATION... +WAITBLINK +ENDTYPESET +FINISH \ No newline at end of file diff --git a/Scripts/Intro/SamType1.ssf b/Scripts/Intro/SamType1.ssf new file mode 100644 index 0000000..6408dc6 --- /dev/null +++ b/Scripts/Intro/SamType1.ssf @@ -0,0 +1,11 @@ +SETSAMBG +BEGINTYPESET +I NEXT FOUGHT THE METROIDS ON +THEIR HOMEWORLD, SR388. I +COMPLETELY ERADICATED THEM +EXCEPT FOR A LARVA, WHICH +AFTER HATCHING FOLLOWED ME +LIKE A CONFUSED CHILD... +WAITBLINK +ENDTYPESET +FINISH \ No newline at end of file diff --git a/Scripts/Intro/SamType2.ssf b/Scripts/Intro/SamType2.ssf new file mode 100644 index 0000000..26f15e6 --- /dev/null +++ b/Scripts/Intro/SamType2.ssf @@ -0,0 +1,10 @@ +SETSAMBG +BEGINTYPESET +I PERSONALLY DELIVERED IT TO +THE GALACTIC RESEARCH STATION +AT CERES SO SCIENTISTS COULD +STUDY ITS ENERGY PRODUCING +QUALITIES... +WAITBLINK +ENDTYPESET +FINISH \ No newline at end of file diff --git a/Scripts/Intro/SamType3.ssf b/Scripts/Intro/SamType3.ssf new file mode 100644 index 0000000..bb5cc20 --- /dev/null +++ b/Scripts/Intro/SamType3.ssf @@ -0,0 +1,5 @@ +The scientists' findings were +astounding! They discovered +that the powers of the +metroid might be harnessed +for the good of civilization! \ No newline at end of file diff --git a/Scripts/Intro/SamType4.ssf b/Scripts/Intro/SamType4.ssf new file mode 100644 index 0000000..b45edc1 --- /dev/null +++ b/Scripts/Intro/SamType4.ssf @@ -0,0 +1,6 @@ +Satisfied that all was well, +I left the station to seek a +new bounty to hunt. But, I +had hardly gone beyond the +asteroid belt when I picked +up a distress signal! \ No newline at end of file diff --git a/Scripts/Intro/SamType5.ssf b/Scripts/Intro/SamType5.ssf new file mode 100644 index 0000000..db0e2e7 --- /dev/null +++ b/Scripts/Intro/SamType5.ssf @@ -0,0 +1,2 @@ +Ceres Station was under +attack!! \ No newline at end of file diff --git a/Scripts/Intro/Scripting.txt b/Scripts/Intro/Scripting.txt new file mode 100644 index 0000000..ce68f4e --- /dev/null +++ b/Scripts/Intro/Scripting.txt @@ -0,0 +1,431 @@ +================================================================================ +== The SMTC Scripting Intro Guide == +================================================================================ + +This guide is designed to help you new fellas use the premade scripter engine +for making your own custom intros! Bear in mind that wussy people will not have +the patience for making long intros. So, make one only if you're designing a +full blown quest. + +Contact: +saltyjustice@hotmail.com +www.supermetroidclassic.com +Seriously, that's where you should have got this from anyway. + +================================================================================ +Table of Contents + +Short Tutorial +Appendix A - Function Listing +Appendix B - Argument Definitions +Appendix C - Character Movement Index + +================================================================================ +Short Tutorial + +Okay, first up, you will need to understand where this script engine is used. +When you start a new game of Super Metroid, you see Samus in a close up, +explaining the plot. You also see black and white action scenes of Samus +shooting stuff and moving around. These scenes are where the scripts are used. +Pretty esoteric, huh? + +Well, to begin, each line of script ends with an enter press (character 13). To +end each line, press enter or return, and the script will know that's the line. +Simple as that. If a line is invalid (has something illegal on it) then the +engine will skip to the next line without doing anything. To determine bugs +like this, use the PAUSE function (outlined in the appendix later) to stop the +program and observe the script. + +Each line functions totally independently of all the other lines. Some simple +functions are given here, but more are in appendix A. For our examples, we will +use DSam(x, y, index) and FRAMEUP. + +Each script is composed of a series of frames. Some frames are really long, but +remember that each frame is the same length of time regardless of how many lines +of script it is. The way to move to the next frame is the FRAMEUP code. This +will cause the program to draw everything to the screen, then clear the bitmap +and move the program ahead by one frame. If your script has no FRAMEUP lines in +it, it will only be one frame long. Not very handy is it? + +During each frame, you are expected to draw stuff to the screen. This is easy +enough, since all the drawing functions are listed for you, and most just expect +an X, Y and Index. First, you should remember that the X and Y system uses an +inverse Y on the screen. That is, the upper left hand corner of the screen is +0,0 and as you move down, Y increases. X increases as you move right. + +Now then, let's show some example script. + +DSam(100, 100, 29) //Draw Samus frame #29 for one frame +FRAMEUP +DSam(100, 100, 30) +FRAMEUP +DSam(100, 100, 31) +FRAMEUP +DSam(100, 100, 30) +FRAMEUP + +This is the code to draw Samus' different breathing animations. Some things to +remember: Each frame is 1/60 seconds. That is, 15 frames is 1/4 of a second, +and 30 is 1/2. It seems like it'd be kind of repetetive to manually increase +the frames 60 times for one second, and to draw the necessary bitmaps all 60 +times. That's why there are shortcuts for you. + +Most of the Drawing functions begin with DName, like DSam above. If you want to +draw a picture for a certain number of frames, then use the DFSam function. +Likewise, you can use the FRAMEUPNO ### function. Example: + +DFSam(100, 100, 29, 15, 0) //Draw Samus frame 29 for 15 frames after this +FRAMEUPNO 015 //Increase frame count by 15 +DFSam(100, 100, 30, 15, 0) //Draw Samus frame 30 for 15 frames after this +FRAMEUPNO 015 +DFSam(100, 100, 31, 15, 0) //Draw Samus frame 31 for 15 frames after this +FRAMEUPNO 015 +DFSam(100, 100, 30, 15, 0) //Draw Samus frame 30 for 15 frames after this +FRAMEUPNO 015 + +Those eight lines are one second of data. Note the // stuff at the end of some +lines. These are comment lines. They MUST be placed after any code on the line +(this way, the engine will ignore it) or on blank lines (so the engine will skip +it). Just don't place them before code and there won't be a problem. + +Some things to notice here too. FRAMEUPNO 015 does not need the preceding 0 in +it. The max number of Frames you may skip are 999 in one go (just use multiple +FRAMEUPNO's to skip more) but you don't need the extra zeroes. If you use +FRAMEUPNO 1 then the engine will assume you meant 1 frame. Not too complicated. +In the same way, the second last variable of DFSam is the number of frames to +draw it for. In case you didn't know anything about functions, the brackets ( +and ) indicate the beginning and end of the function. Each value you pass into +it is seperated by a comma. If a function expects four arguments and you pass +in five, it will assume that something is wrong and ignore the last argument. +If it requires four and you pass in three, it will assume something is wrong and +not do the function at all correctly. Watch for errors! + +Summary: Do not pass in fewer arguments than the function expects. More is +okay, but don't make it a habit. + +Anyway, you may be wondering now just what these values mean on DFSam. While +the appendix gives a list, it ain't too helpful. The first two are an X and Y +listing. Those are just where the Samus picture will be drawn on the screen. +The third is the frame index, which you can look at in appendix C, the sam frame +index. The last one is the number of frames to perform this action for. You +should probably note that if you call DFSam to do 15 frames, then call it again +before those 15 frames are done, then you will see two Samus' on screen! So be +careful what you type. Each drawing function has 32 timers alloted to it. That +is, you may have up to 32 Samus' on screen at once. + +That should be all you need to know for making simple scripts. See appendix A +for function listing, appendix B for argument definitions, and appendix C for +enemy and Samus frame lists (appendix C also refers to a bitmap which should +come with this document) + +That's all. Email me at saltyjustice@hotmail.com if you have questions, or post +on our message board! + +================================================================================ +== Appendix A: Function Listing == +================================================================================ + +Note: To all you scripters (all two of you), check this area at each new SMTC +release, since there will probably be some new functions to use. + +/* Velocity and Acceleration Functions */ +Notes: Ordinarily, the DFSam and related functions fix Samus at a specific +location. That's all well and good, but you'd have a hell of a time animating a +moving Samus like that. Luckily, there's these functions that let you alter +Samus' x and y position automatically in the program. + +Sam_Velocity(xspeed, yspeed, slot) +This changes Samus' velocity to the passed variables. Every frame up, the x and +y position are increased (or decreased, if you pass a negative) by the +appropriate speeds. This lets you make Samus move around the screen as though +she were running or jumping. + +Sam_Accel(xaccel, yaccel, slot) +This changes Samus' accelleration to the passed variables. Every frame up, the +xspeed and yspeed and changed by the accels. This is chiefly used to make Samus +feel gravity, but you can always use it for other stuff. + +Sam_Velocity_Cap(xspeedcaplow, xspeedcaphigh, yspeedcaplow, yspeedcaphigh, slot) +Use this to set the maximum and minimum speeds that Samus can accelerate to. +This allows you to not have to manage the Accel function like you normally +would. For left or up movement, the low cap should be negative. For right and +down, it should be positive. + +All of these functions accept decimal places up to three long. Gravity is, in +SMTC, 1/8 or 0.125. The speed Samus normally runs at is 4, and speed boosting +is 9-10. When Samus jumps, her speed is -5. If you do not use these functions +in a script, the speeds and accelerations default to 0. + +/* Screen and Timer Functions */ + +BEGINTYPESET +Instructs the script to enter text mode. This will cause everything you type +afterwards until ENDTYPESET to be shown as green text displayed over the +background. + +ENDTYPESET +Instructs the script to exit text mode. + +SETSAMBG +Sets the background picture to Samus' close up helmet with blinking. This will +override any previous background statements you made. + +WAITBLINK +Causes the program to wait until the user presses a key, but still display the +green blinking cursor. Used for text mode stuff. + +PAUSE +Stop the program until you press any key. Handy for observing what is on the +screen for debugging. + +SCREENDUMP +Dump all data to the screen without clearing the buffer or advancing the frame. +Also used primarily for debugging. + +FRAMEUP +Increase the frame counter by one. Each frame is 1/60th of a second. + +FRAMEUPNO ### +Increase the frame counter by ### frames. Nothing can be done +between these frame ups, they go automatically. + +SETCOLS # +Change the colour mode. Handy for the flashback scenes, when it's grayscale. +The values are: +0: Grayscale +1: Regular +2: Inverted RGB +3: RG Swap +4: RB Swap +5: GB Swap +6: RG Swap Inverted +7: RB Swap Inverted +8: GB Swap Inverted +Inverted RGB uses 256-r, 256-g, 256-b instead of r,g,b. It produces some +interesting effects. These are filtered options, so they WILL slow the game +down. Note that the changed cols take place right before the buffer is printed +to the screen, so it will affect backgrounds and objects alike. + +/* Drawing Functions */ + +DSam(x, y, index) +DFSam(x, y, index, frames, slot) +CLBufSamAll +CLBufSam(slot) + +Draw Samus at [x] and [y] by the provided [index]. The [index values] are +detailed in appendix C. The DFSam version allows you to specify the number of +[frames] to buffer. CLBufSamAll is short for Clear the Samus Buffers. Simply +put, this will make the script stop drawing all of the DFSam's that you have +queued up. The [slot] lets you select which of the 32 slots (from 0-31) you +want to store the draw in. + +DSamCycle(x, y, index1, index2, rate, frames, slot) + +Draws Samus in a cycle, starting at [index1], going to [index2]. Every time +[rate] frames pass, the index will increase by 1. The cycle will run for +[frames] (if frames is -1, it will run until told to stop by CLBufSam). This +method will make Samus cycle from index1 to index2, then back down to index1, +switching directions each time. + +DSamLoop(x, y, index1, index2, rate, frames, slot) + +Draws Samus in a cycle, basically identical to DSamCycle, except this function +draws the indexes looping: index1-index2, index1-index2, etc. To make the +frames scroll backwards, make index2 lower than index1, the script will handle +the rest. + +DSamVaryCycle(x, y, index1, index2, frames, slot, rate1, rate2, ...) +DSamVaryLoop(x, y, index1, index2, frames, slot, rate1, rate2, ...) + +The most complicated drawing functions, the same as the DSamCycle function +above. However, this function lets you specify how many frames each index must +be played for before cycling up. If you place a 0 in a spot, that index will +not be displayed. If index2 is 3 and index1 is 0, then you have four indexes to +display. As such, you must have four "rates" at the end of the function. Ex: +DSamVaryCycle(50, 50, 0, 3, 500, 0, 3, 4, 2, 3) +To determine how many rates you need, here is the formula. +(index2 - index1) + 1 +Always put the correct number of rates, or you will be screwed. + +/////////////////////////////////// NOTES ////////////////////////////////////// +The DSam function is completely independent from the assorted cycle and loop +functions. You may therefore have up to 33 Samuses on screen, if you really +need that many. Come to think of it, 32 is a hell of a lot. Oh well. +Also, any DSam you put on a frame will be overwritten by any DSams that follow +it, making the first DSam a complete waste of time and energy. Just though I'd +toss that out. Additionally, placing a new DFSam or other loop/cycle function +in a slot that is already being used will overwrite whatever was in the slot, so +you don't need to use CLBufSam to clear it first. + +Oh yeah! When using the two DSamVary functions, the max number of frames you +can cycle through is 10, since that's the most running frames there are. If for +some psychotic reason, you think that I need more (you commie) then put it on my +forums and I'll increase the cap. If you make the number of frames exceed 10, +then all following frames will be ignored (their rates are defaultedly 0, so it +looks like they don't show) + +If you wish to carry over the previous value of x and y for your Samus' +movements, pass in -100 for the values, and keep the slots the same. The values +are carried over when you put -100 in for these. In addition, the velocity, +acceleration, and speed caps are not reset(keep in mind you need to do that +manually). +//////////////////////////////////////////////////////////////////////////////// + +Create_CustBG("Path") + +Create a custom background using the script at "Path". The path is local to the +Scripts directory and must be enclosed in quotes to function correctly. The +function listing is located in Drawing.txt. Create a file with the same name as +path in the Scripts folder and use the Drawing functions on it. + +Set_Fade(value) +Set_BGFade(value) + +Set_Fade_In() +Set_Fade_Out() +Set_BGFade_In() +Set_BGFade_Out() + +Set the fading value to the bracketed term. This value must be between +0(darkest) and 255 (lightest). BG fade will only affect the background. The +Set_Fade_In/Out functions determine if the fading is in or out. It is in by +default. Use this to make sure Regulate_Fade starts in the correct direction. + +Regulate_Fade(speedup, speeddown) +Regulate_BGFade(speedup, speeddown) +Stop_Regulated_Fade() +Stop_Regulated_BGFade() + +Automatically fades in and out at speedup and speeddown, respectively. The stop +command removes the regulating flag, but will not reset the fade value. For +that, use Set_Fade or its BG equivalent. The regulation speed should be a +divisible into 256, as the lowest is 0 and the max 255. Therefore, you can +determine how fast the fade will be by dividing 256 by your speed. To take one +second (60 frames) you'd need 4 (64 frames) which is close enough, apparantly. + +/* Spawn and Movement Functions */ + +Spawn_Rinka(x, y, xspeed, yspeed, slot) +Del_Rinka(slot) + +Note: Rinkas are the small circle enemies near the Mother Brain. Accepted slots +are 0-7. + +Spawn_Brain(x, y, slot) +Del_Brain(slot) + +Note: The Mother Brain, in this case, is the small Brain from Metroid 1. +Acceptable slots are 0-7. + +Spawn_Missile(x, y, dir, slot) +Spawn_Missile_Life(x, y, dir, slot, frames) +Del_Missile(slot) + +Note: Fires a regular missile from x, y. Dirs are listed in Appendix B. +Spawn_Missile_Life will automatically delete the missile after the frames are +expired. Acceptable slots are 0-7. Missiles travel horizontally/vertically at +5 pixels per frame(ppf). They travel diagonally at 3.5 ppf. + +Spawn_Explosion(x, y) + +Create an explosion. These automatically terminate themselves. + +/* Environment Functions */ + +Load_Env_Bg(path) + +Set the background for the intro + +Load_Room(area, number) +Terminate_Room + +Notes: Area index can be found in Appendix B. This will load and display the +tiles for that room starting on the left edge. These rooms observe some special +rules as well. For example, they do not need to be clipped correctly, or be +surrounded by clip zones, since Samus does not actually enter them. +Terminate Room will stop drawing the loaded room, or allow you to load another. + +================================================================================ +Appendix B - Argument Definitions + +Notes: An argument is something that goes in a bracketed area, such as in a +drawing function. Since many functions use the same type of argument, they are +listed here for quick reference. + +x - The x position on the screen. 0 is the left, the value increases to the +right. + +y - The y position on the screen. 0 is the top, the value increases downwards. + +xspeed - How fast to move horizontally, in pixels per frame. Negative is left, +positive is right. This value is usually limited to two decimal places. + +yspeed - How fast to move vertically, in pixels per frame. Negative is up, +positive is down. This value is usually limited to two decimal places. + +index - A number, defined in Appendix C, which denotes which frame to draw of a +sprite. In the DSam case, the index can be used to draw running, shooting, etc. + +frames - How many frames to continue drawing this image. Positive numbers are +accepted, 0 being "Draw until told to stop" and negative numbers will wreck the +line. + +slot - Each object that you generate needs a slot to store its values. You can +specify this slot, allowing you to manipulate the object with other functions. +The accepted slot values are 0 to 31 (32 slots total). + +path - The usual pathname, like Scripts//Fix.bmp. The // denotes a single /, so +be wary. The path is always local to the SMTC folder, so do not enter C://. + +dir - Direction of an object. Listed here: +RIGHT = 0 +LEFT = 1 +UP = 2 +DOWN = 3 +UPRIGHT = 4 +UPLEFT = 5 +DOWNRIGHT = 6 +DOWNLEFT = 7 + +Area Index: +CRATERIA = 0 +BRINSTAR = 1 +NORFAIR = 2 +MARIDIA = 3 +WRECKEDSHIP = 4 +TOURIAN = 5 + +================================================================================ +Appendix C - Index for Frames + +Notes: Only some frames are listed here. In the Samus case, you will be +referred to a bitmap image which shows the frames and their indexes. + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Scripts/Other/Items.ssf b/Scripts/Other/Items.ssf new file mode 100644 index 0000000..1001631 --- /dev/null +++ b/Scripts/Other/Items.ssf @@ -0,0 +1,36 @@ +//The box is 208x48 pixels + +BOMB +Draw("MiniSamus", 16, 20) +Draw("MorpSamus", 41, 34) +Draw("MinArrowR", 29, 33) +Draw("PAnd", 57, 33) +Draw("PSet", 72, 33) +Draw("PIt", 89, 33) +Draw("PWith", 104, 33) +Control("Shoot", 130, 32) +Text("BOMB", 88, 9, 216, 56, 144) +ENDBOMB + +VARIASUIT +MakeSmall() +Text("Varia Suit", 59, 16, 216, 56, 144) +ENDVARIASUIT + +MISSILE +Text("MISSILE", 80, 8, 216, 56, 144) +Draw("PSelect", 16, 32) +Draw("Missilesel", 48, 24) +Draw("PAnd", 81, 32) +Draw("PPress", 96, 33) +Control("Shoot", 124, 32) +ENDMISSILE + +SUPERMISSILE +Text("SUPER MISSILE", 48, 8, 216, 56, 144) +Draw("PSelect", 24, 32) +Draw("Supermissilesel", 48, 24) +Draw("PAnd", 81, 32) +Draw("PPress", 96, 33) +Control("Shoot", 124, 32) +ENDSUPERMISSILE \ No newline at end of file diff --git a/Scripts/Other/Items.txt b/Scripts/Other/Items.txt new file mode 100644 index 0000000..461b0b0 --- /dev/null +++ b/Scripts/Other/Items.txt @@ -0,0 +1,84 @@ +Here is a list of bitmaps available for item boxes: +MiniSamus The small samus in a standing position 11x21 +MorpSamus Morph ball of Samus 7x7 +MinArrowU Arrow pointing up 7x8 +MinArrowD Arrow pointing down 7x8 +MinArrowL Arrow pointing left 8x7 +MinArrowT Arrow pointing right 8x7 + +Also, the words seen in the game, like select and press, are bitmaps. +The following words are available for use in the Draw funtion: +PButton, PIt, PThe, PWith, PSet, PAnd, PPress, PSelect +Note: PAnd is actually a & + +Here is a list of functions for the drawing: + +Text("Text", xposition, yposition, r, g, b) +Text used for descriptions. Never used in original SM, SMTC only! + +Draw("Bitmap", xposition, yposition) +Draws the bitmap at the given position. The bitmap can be any of the presets +listed above, or it can be any custom made sprite, or any universal sprite +object. + +Control("Name", xposition, yposition) +When instructing the user on what button to press, use this. In the original +Super Metroid, this was limited to X, Y, A, and B. In SMTC, this can be any +key on the keyboard and some joypad keys. The following names can be applied + +MakeSmall() +Makes the item box smaller (150x24). The box is large by default. +Coordinates are still relative to the top left of a large box, though. +The new top left of the box will be located at (24, 8). + +AngD, AngU, Jump, Shoot, Run, ISwitch, Left, Right, Up, Down +Debug1, Debug2, Debug3, AntiGrav, ReGrav, PixRight, PixLeft +These are the same as the config names. + +All x and y coordinates are relative to the top of the box shown for items. +Any x value exceeding 208 or y value exceeding 48 will be invisible. + +To create a function for an item, enter its name and then all the drawing +functions. +When you are done, enter ENDname. +Example: + +BOMB +Draw(MiniSamus, 32, 5) +ENDBOMB + +A list of all names supported as of this release: + +SPAZERBEAM +PLASMABEAM +CHARGEBEAM +ICEBEAM +BURNBEAM +WAVEBEAM +BURNBEAM +VARIASUIT +GRAVITYSUIT +CORROSIONSUIT +MORPHBALL +BOMB +SPRINGBALL +SPEEDBOOSTER +HIGHJUMPBOOTS +SPACEJUMP +SCREWATTACK +MISSILE +SUPERMISSILE +POWERBOMB +ENERGYTANK +RESERVETANK +GRAPPLINGBEAM +XAYSCOPE +SAVECOMPLETE +SHIPRESTORE +ENERGYRESTORE +MAPPINGCOMPLETE +MISSILERESTORE + +Because there is no Corrosion Suit item as of yet, you will not be required +to make one just yet. + diff --git a/Scripts/PreDefined Terms.txt b/Scripts/PreDefined Terms.txt new file mode 100644 index 0000000..d9d7fa4 --- /dev/null +++ b/Scripts/PreDefined Terms.txt @@ -0,0 +1,71 @@ +This document contains a list of predefined values used in the SMTC scripting +language. + +Logical and Unary Operators + +AND: Logical AND, where both arg1 and arg2 must be true. + +OR : Logical OR, where either arg1 or arg2 must be true. + +NOT: Unary NOR, flips the boolean value of an argument. +Note: A ! can be used instead. Ex: !(arg) is NOT(arg) + +INV: Unary NOR, flips all bits of an argument. +Note: A ~ can be used instead. + +XOR: Logical EXCLUSIVE OR, where the two arguments must be different. +Chart Arg1 Arg2 Result + True True False + True False True + False True True + False False False + + +Operators: + +Sign: Name + ++ Addition 1+1=2 +- Substraction 2-1=1 +* Multiplication 2*3=6 +/ Division (If arg2 is 0, value REVERTS to 0) 4/2=2, 5/0=0 +% Modulus (Returns remainder) 5/2=1, 10/7=3 + +Comparison Operators +== Equal to +> Greater than +< Less than +>= Greater than or Equal to +<= Less than or Equal to +!= Is not equal to + + +Syntax: + +The syntax for an expression is + +if( VALUE COMPARISON VALUE LOGICAL VALUE COMPARISON VALUE ...) + +An argument is VALUE COMPARISON VALUE +All arguments must be seperated by a LOGICAL + +A VALUE is UNARY(VARIABLE/CONSTANT) OPERATOR UNARY(VARIABLE/CONSTANT) etc + +An example of a line that works: + +if(Salty + 5 < CJ - 24) + +A line with unaries: + +if(!Salty != INV(CJ) XOR NOT(Something) <= ~Somethingelse) + +An argument may also consist of one value! However, the value is assessed like +this: +If the lone value is 0, it is false +If it is not 0, it is true. + +if(Salty) //is acceptable, and will execute if Salty != 0 is true + +Likewise: + +if(!Salty) //Works if Salty == 0 diff --git a/Scripts/Rooms/BGList.txt b/Scripts/Rooms/BGList.txt new file mode 100644 index 0000000..220075a --- /dev/null +++ b/Scripts/Rooms/BGList.txt @@ -0,0 +1,8 @@ +This file contains a list of all backgrounds in SMTC right now. You can use SetBG(index) to swap to a background. Each BG has its index shown next to it. + +Note that these indexes are subject to change. Check this document at each new release to see if the background order has changed. Notes will be in the changelog to this effect. + +0: Brinstar Blue (Tiled) +1: Brinstar Life 1 +18: Norfair Bubbles +19: Old Mother Brain \ No newline at end of file diff --git a/Scripts/Rooms/Brinb1.ssf b/Scripts/Rooms/Brinb1.ssf new file mode 100644 index 0000000..81633e0 --- /dev/null +++ b/Scripts/Rooms/Brinb1.ssf @@ -0,0 +1,5 @@ +if On_Load +{ + Timer = 0 +} +Timer += 1 \ No newline at end of file diff --git a/Scripts/Rooms/Bring8miss.ssf b/Scripts/Rooms/Bring8miss.ssf new file mode 100644 index 0000000..b23b09a --- /dev/null +++ b/Scripts/Rooms/Bring8miss.ssf @@ -0,0 +1,9 @@ +if On_Load +{ + Remask_Tiles("Metals", 832, 879, 0, 4) +} + +if On_Exit +{ + UnRemask("Metals"); +} \ No newline at end of file diff --git a/Scripts/Rooms/Brinl1.ssf b/Scripts/Rooms/Brinl1.ssf new file mode 100644 index 0000000..5460ddd --- /dev/null +++ b/Scripts/Rooms/Brinl1.ssf @@ -0,0 +1,5 @@ +if On_Load +{ + SetBG(1); + SetBGScroll(1, 4, 0, 1); +} \ No newline at end of file diff --git a/Scripts/Rooms/Crat1.ssf b/Scripts/Rooms/Crat1.ssf new file mode 100644 index 0000000..7f58dd7 --- /dev/null +++ b/Scripts/Rooms/Crat1.ssf @@ -0,0 +1,15 @@ +If On_Load +{ + env_weather_active = 1 + env_weather_xspeed = -0.5 + env_weather_yspeed = 3 + env_weather_left = 752 + env_weather_right = 1967 + env_weather_height = 10 + env_weather_spawnrate = 5 + env_weather_spawntype = 0 + env_weather_particles_alloted = 1900 + + Sprite("Rayne", "Rain", -2, -3, 0, -99) +} +Timer = Timer + 1 \ No newline at end of file diff --git a/Scripts/Rooms/Crat2.ssf b/Scripts/Rooms/Crat2.ssf new file mode 100644 index 0000000..eb88426 --- /dev/null +++ b/Scripts/Rooms/Crat2.ssf @@ -0,0 +1,5 @@ +If On_Load +{ + Timer = 0 +} +Timer = Timer + 1 \ No newline at end of file diff --git a/Scripts/Rooms/Enemy Index.txt b/Scripts/Rooms/Enemy Index.txt new file mode 100644 index 0000000..cc995c3 --- /dev/null +++ b/Scripts/Rooms/Enemy Index.txt @@ -0,0 +1,66 @@ +================================================================================ +== Enemy Index and Descriptiions == +================================================================================ + +This file is a quick run down of the enemies, their variables, and how you can +manipulate them using the in-game scripting engine. + +In order to give you complete control over ALL aspects of the enemies, I have +created a simple database management system. Each enemy has a predesigned +function for you to use, and the functions all have the same syntax. + +[name](slot, varindex, operator, value) + +[name] is, of course, the name of the enemy, which I will list below. Slot is +the slot, 0 - 31, that the enemy occupires. Varindex is a little bit more +obscure. Each variable associated with an enemy has a specific index (also +below) that must be passed into varindex. When the function receives this, it +skips to that variable, then uses operator and value. + +Operator is any of the following: +'=' - Equals, assigns the variable to value +'+' - Increases variable by value +'-' - Decreases variable by value +'*' - Multiplies variable by value +'/' - Divides variable by value +'^' - Exponentially multiplies variable by value (if variable is 2 and value 5, + the end result is 32) + +Nothing too complicated there. Value follows the usual arithmetic of other +scripts, like 1 + 1 * 2 and such. See the syntax notes in Rules.txt for more +details. + +Also note, some enemies have variables which cannot be directly accessed by you, +as they are counters for frames or clipping, and changing them will only result +in either nothing, or a crash. HOWEVER, you can change them, if you are not +careful, by entering an index not listed here. Only use the values on this +list! + +Last, before the list, is the enemy_total information. Each enemy has 32 slots +associated with it, from 0 to 31. enemy_total is a value that states the +highest enemy that is active on the list. If, for example, there are 8 geemers, +from 0 to 7, then enemy_total is 8. If you wish to add another geemer, then you +must change the geemer total and geemer values in slot 8. + +Geemer +0: Active - Is the geemer active +2: Damage - How much HP the geemer takes off when hitting Samus +4: HP - Damage Geemer can absorb before dying. +6: X - X Position of Geemer +10: Y - Y Position of Geemer +14: Direct - The direction the Geemer is moving +33: Exp Ty - Explode Type, which kind of explosion (small or large) when dying + +FireFlea +0: Active +1: X +5: Y +25: HP +27: Explode Type +28: Num Explode - How many explosion to make when dying +30: Behavior Pattern. Indexed in = FireFlea Behavior Types = Below +37: Origin X - For circular movement, the center X +41: Origin Y - For circular movement, the center Y +45: Speed X - For linear movement, speed in x direction +49: Speed Y - For linear movement, speed in y direction +53: Gamma Alter on Death - How much the room fades when this guy dies diff --git a/Scripts/Rooms/ProgStart.ssf b/Scripts/Rooms/ProgStart.ssf new file mode 100644 index 0000000..ad8fa03 --- /dev/null +++ b/Scripts/Rooms/ProgStart.ssf @@ -0,0 +1,2 @@ +//Stuff to do at the very beginning of the program +MachineRemasks = UseTileAsColTable(870) \ No newline at end of file diff --git a/Scripts/Rooms/Rules.txt b/Scripts/Rooms/Rules.txt new file mode 100644 index 0000000..61c4fb6 --- /dev/null +++ b/Scripts/Rooms/Rules.txt @@ -0,0 +1,414 @@ +================================================================================ +== Scripting for the Rooms == +================================================================================ + +This is another brilliantly written tutorial for scripting events to occur in +rooms. Yeehaw, hootenany, etc. + +Contents, in Order (Some sort of order, I guess) + +1: Tutorial +2: Syntax Notes, READ +3: Function Listing +4: Variable index = true +5: Argument Listing + +================================================================================ +== Tutorial == +================================================================================ + +Okay, time to design scripts for your favourite room. Scripts let you force +specific events to occur in the level that are not prebuilt by the room itself. +You can spawn enemies, make explosions, change tiles, set bosses, all kinds of +excitement. + +The way to get started is to create your room's .ssf file. In the +Scripts\Rooms\ folder, create a file called areanumber.ssf, where area and +number are the area text and room number, respectively. An example: +Brinstar, room #1 = Brin01.ssf +Capitalization is optional, like condoms! +You can see the SMTC names for the levels in the editor. CRAT, BRIN, NORF, etc. +99 is the max rooms, so put a preceeding 0 if the number is less than 10. + +Now that we have our script file made, we should open it up (Notepad works fine) +and start scripting. + +The first thing that should be in any script file that matters is this: +On_Load +{ + statements go here +} + +On_Load means that everything after the { and before the } will be executed as +the room is loaded. This is a good place to set things like Environment Values, +lighting, or other crazy crap. + +After that, the rest of the script file is a series of if() statements and +declarations. A typical script looks like this: + +//Code begins +On_Load +{ + env_rain = true +} + +if(Samus.x >= 15) +{ + env_rain = false +} +else +{ + env_rain = true +} +//Code ends + +Some Notes on this. Each statement you make should end the line. Press enter +after each statement, or the script will not read it. Only the first statement +on a line is kept. GOT IT? First one only! + +Next, the {} braces keep items seperated from one another. When you use an if() +statement, the stuff in the brackets is calculated, then what is between the {} +braces is performed. This is elementary stuff, so pay attention. + +Lastly, the if statement is accompanied by an else statement. You don't always +need an else, mind you. You use an else whenever the if statement is false and +you want to do something. In this case, if Samus' X value is greater than or +equal to 15, the rain turns off. Otherwise, the rain turns on. + +Another item of note, true is equal to 1, and false is 0. Saying env_rain = 1 +is the same as saying env_rain = true. Just a heads up. + +Here's how the script works. After running through the On_Load events, the +script is then checked over once every frame. Every time an applicable if or +event is there, it executes it. You have complete control over what goes on in +the game, so go nuts. + + +Next, how to make Variables. + +Variables are things you declare outside the script that can be used in the +script. A variable can hold one number, of any conceivable size. For more +information on the upper and lower bounds, go look up floating point numbers on +google. These numbers may hold decimals. + +You assign variable names in VarDefs.ssf. This should also be in your +Scripts\Rooms folder. Open this file. You should see several lines that look +like: +BossFlag +Crat1Weather +And so on. This is how you define Variables. SMTC has set aside as many +variables as you need, but you MUST define them in VarDefs.ssf. All of these +can be accessed by saying their 'names' in the VarDefs file. BossFlag is one +value, and you can use it like any weather or enemy variable. To create a new +variables, just enter its name on a new line. + +Next up, arithmetic stuff. You can edit the value in a variable with the +traditional = sign, but you're not limited there, oh no. + +You can use other stuff, like the +, -, *, and / signs, which are (in order) +plus, minus, multiply, and divide. Example! + +BossFlag = BossFlag + 1 + +This will increase BossFlag by one, whatever one represents. You can also use: + +BossFlag += 1 + +This does the exact same thing, but is a lot quicker to type. Complex +arithmetic is also possible: + +BossFlag += 1 * 15 + 2 + +This might be a good time to point out that MY SCRIPT ENGINE DOESN'T CARE ABOUT +ORDER OF OPERATIONS. That's right, that statement will do this: + +BossFlag + 1 +BossFlag * 15 +BossFlag + 2 + +Just a heads up, you know. It does stuff left-to-right and it doesn't mess +around. Likewise, don't put brackets in there, because they won't help. If you +put brackets in, the script will go clean past them. Also, an operator must be +preceeded and followed by at least one space. + +BossFlag += 1+1 is not acceptable. + +================================================================================ +== Syntax Notes == +================================================================================ + +Here's EXACTLY how the syntax should be for variable statements. + +variable operand value + +Spaces are critical. You can place as many spaces as you want before and after +the words on the line. Ex: + + salty += 5 +Is the same as +salty += 5 + +For statements with multiple numbers in the value part of the line, like: + +salty += 5 + 5 + +The same rules apply. However, THIS is illegal: + +salty+=5 + +The script will think the variable's name is salty+=5, and will assume that +there is nothing else on the line. Likewise, for the value part of the line: + +salty += 5+5 + +The script doesn't know what 5+5 is, since it thinks it is all one number. As a +result, the script will add 5 instead of 10. The script only takes the first +parts of the number until it hits something it doesn't understand(non-numerical) + +The accepted operators are: += Assign the variable to whatever value is ++= increase the variable by the value +-= decrease the variable by the value +*= multiply the variable by the value +/= divide the variable by the value +^= multiply the variable by itself value number of times. If variable is 2, and +value is 5, then the answer will be 2^5, or 32. + +For the value part of the line: +The first part of the value must be a number, the second an operator, the third +a number, and so on. The script will assume all the odd items are numbers, and +the evens are operators. Syntax: + +variable operand number operator number operator number operator etc. + +Example: + +salty += 5 - 2 + 7 - 25 * 12 + +The accepted operators are ++ add +- subtract +* multiple +/ divide +^ exponent +Note that brackets are not used, and order of operations is LEFT TO RIGHT. +Regardless of what you put on the line, it's left to right, so deal with it. + +Note that only the first character of the operator is checked, so it could be: + +5 +-*/^ 5, and the end result will have been 5 + 5 + +Acceptable values: + +A number is defined as the following +[+/-][nnnnn][.nnnnn][e/E[+/-]nnnn] +n is a number between 0 and 9. You can also use the E at the end to show +exponents in the numbers. +Example: +-304.557e-18 is acceptable +Though I wonder if anyone will actually use the full range of numbers. + +================================================================================ +== Function Fun == +================================================================================ + +A list of the functions available to you fellas? No kidding. + +Sprite(name, sprite, x, y, flipflag, time) +Creates a sprite with those values, or modifies the values if the name is +already used. Time refers to how long until the sprite is deleted. + +ModSprite(name, x, y, xspeed, yspeed, xaccel, yaccel, xforce, yforce) +Change the speed forces on a sprite. The speed, accel, and force variables are +all derivitives of one another: x is affected by xspeed, which is affected by +xaccel, which is affected by xforce. This allows for some types of complex +motion, like circling or slingshotting around. + +SpecialSprite(name, movetype, obeyclips) +Cancels all x and y speeds and accellerations, then switches the sprite to a +special pre-defined type of motion, such as localgrav. These are defined in the +arguments section. + +UseTileAsColTable(tileno) +Used for the program startup, modifies a tile into a colour remasking table. +For advanced users only. The number is the same as the tile, the function does +the rest. The function returns how many col remasks it made, and increases the +memory array called CustomTileRemasks by 1. + +Remask_Tiles(name, tileno1, tileno2, RemaskTable, palette) +Combined with the above, allows dynamic colour remasks of tiles. RemaskTable is +the array position with the remask table, colno is which palette you want to +use. Tileno1 is the first tile number you want to remask, tileno2 is the last. +This function only needs to be called once to work, and if you want to stop +remasking, call the Unremask function. You can call this multiple times on a +tile but only the last one will remain active. It is also considered unwise to +call it multiple times on a tile. Use the name to keep track of your remasks. + +Unremask(name) +Disables dynamic recolouring for the indexed recolour. It is advised that you +destroy the Remasks in the same order you created them if they overlap tiles. +Calling it multiple times on a single remask does nothing. + +Cycle_Remask(name, tileno1, tileno2, RemaskTable, steprate, max, cycletype) +Sets up automatic remask cycling. This is used in places like Norfair to make +the tiles glow with heat. Steprate is how quickly to go from slot 1 to slot 2, +slot 2 to slot 3, etc. Max is the number of steps in the cycle. Cycletype can +be 0 (loop) or 1 (low-high, high-low, repeat). + +SetBG(index) +Sets the background in this room to the index applied. See the accompanying +file, bglist.txt for a list of all indexes available. Make sure to set a +background each time you load a level, as the BG is cleared on init. + +SetBGScroll(int xnum, int xdenom, int ynum, int ydenom) +X and Y scroll ratios, xnum/xdenom and ynum/ydenom. Normally, the background +scrolls one pixel for every pixel Samus moves. This modifies that behavior. If +you set the denominator or numerator to 0, the bg will not scroll at all. +The behavior is: Every num pixels you move, the bg scrolls denom pixels. Whole +numbers only please, SMTC does the rest. + +================================================================================ +== Variables Listing == +================================================================================ + +env_weather; This is the weather value. 0 is inactive, 1 is rain, 2 is snow. +Weather particles function independently of custom particles. However, you +cannot directly manipulate these particles, only by use of the weather options. + +env_weather_xspeed; When a rain/snow particle spawns, this is the xspeed it +has. All weather particles have the same xspeeds and yspeeds. + +env_weather_yspeed; Ditto, but for the yspeed. + +env_weather_left; The left boundary of the weather spawn line. Weather +particles always spawn between the left and right boundaries of this line at the +specified height. + +env_weather_right; See above. + +env_weather_height; See above. + +env_weather_spawnrate; This is the rate at which weather particles spawn. A +weather particle is terminated on contact with the walls or ground, and you may +have up to env_weather_particlesallot at any one time. Experiment with the +spawn rate to make sure you can get the rain smooth without running out of +space. +The spawn rate is a floating point value of up to 4 decimal places. Each frame, +it increases the spawn_count. Each value over 1 will spawn one particle. +Here's an example: + +If the spawnrate is .5, the count is 0. +first frame: count = .5 +second frame: A particle spawns, count = 0 +third frame: count = .5 + +And so on. Spawnrate can be greater than one, in which case multiple particles +may spawn in one frame. + +env_weather_spawntype; This allows you to determine where on the line the +particles will spawn. The accepted values are the following: +0 = Random. Particles will spawn at a random spot on the line. +1 = Staggered. Particles will spawn at a random locations on the line, in +incements of 1/10 the line's total length. This means that the first particle +may spawn anywhere between 0 and 1/10, the second between 1/10 and 2/10, etc. +2 = Extremity Alternating. Particles will spawn alternating at random locations +on the left half of the line, then the right, then left, etc. +3 = Wave alternating. Like extremety, however, the particles continually move +closer to the center, then outwards, then center again. They do this in +increments of (you guessed it) 1/10 of the line's total length. The first +particle spawns between 0/10 and 1/10, the second between 9/10 and 10/10, the +third 1/10 and 2/10, etc. + +env_weather_particlesallot; This determines the maximum number of particles you +may have in the level at any one time. + +================================================================================ +== Argument Listing == +================================================================================ + +name: A unique name associated with the object. Every time you call the name, +that object is loaded, assuming it is of the correct type. The names are not +case sensitive. If the name does not exist, nothing will happen. +Note: Do not use "NoName" for your sprites. This is a system name, it is +reserved by SMTC and will mess up your access! + +sprite: One of the custom sprites that has been declared in SpriteDefs.ssf. + +x: X location on the screen. Lower is left, higher is right. + +y: Y location. Lower is top, higher is bottom. + +flipflag: Determines if the sprite is flipped or not, and how. Accepted +values: +0 No flip +1 Vertical flip +2 Horizontal flip +3 Vertical and Horizontal flip + +time: How long until an event executes. -1 means the event never occurs. + +movetype: A special argument, this has several values that negate all current +movement. they are: +1 LocalGrav: Object behaves under the same gravity Samus does, which is local +to the room (standard: MaxFall speed = 5, Gravity = 1/8) +2 ImpactGrav: Object acts like Localgrav, but will bounce on impact. If +clipping is not active, then it is identical to LocalGrav. + +obeyclips: A flag as to whether or not the object will react to clipping the +environment, objects, or both. Objects are things like Samus, Enemies, or +Samus' Ship, but NOT other sprites or beams. +0 Ignore everything +1 Ignore enemies +2 Ignore objects +3 Hit everything + +Notes about these arguments: Some of these cannot be negative, and the script +will assign special values to negative numbers. + +-n Infinite: In some cases, never perform the event specified (see time above) +-1 No Change: Leave the modifying value as is (x and y use this) +-2 Samus' X Position: For following objects around Samus. Left side. +-3 Samus' Y Position: Ditto. Top part. +For -2, if you want the right side, it's +10 from the left. +For -3, if you want the bottom, it's +48 from the top. +-n means -anything, like -99. As long as it's negative but not one of the other +special values, it will do its job as described. + +RELATIVE ARGUMENTS ARE NOT SUPPORTED AS OF THIS RELEASE!!!! +Relative Arguments: To make an argument a relative value, simply type rel +before the number. This is only really useful when using functions. Ex: +Sprite("MySprite", -1, rel4, rel-5, -1, -1) +The rel part before the number is disregarded, but the number is considered a +relative value, not an absolute one. That means that the sprite will now move 4 +to the right and 5 upwards, because it used: +Sprite's X += 4, instead of Sprite's X = 4. These may be used to create mobile +objects that follow AI routines inside your scripting, so knowing how to use +rels is VERY important. + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Scripts/Rooms/VarDefs.ssf b/Scripts/Rooms/VarDefs.ssf new file mode 100644 index 0000000..6f29a55 --- /dev/null +++ b/Scripts/Rooms/VarDefs.ssf @@ -0,0 +1,4 @@ +//32 chars at max +BossFlag +Timer +MachineRemasks \ No newline at end of file diff --git a/Scripts/SubScreen/Pieces.bmp b/Scripts/SubScreen/Pieces.bmp new file mode 100644 index 0000000..8e66f4c Binary files /dev/null and b/Scripts/SubScreen/Pieces.bmp differ diff --git a/Scripts/SubScreen/Rules.txt b/Scripts/SubScreen/Rules.txt new file mode 100644 index 0000000..ad8847e --- /dev/null +++ b/Scripts/SubScreen/Rules.txt @@ -0,0 +1,149 @@ +================================================================================ +== The SMTC SubScreen Design Kit == +================================================================================ + +This is a quick guide to designing your very own subscreen, useful for adding +items to a custom quest or giving things your own personal touch. + +This is not a quick guide, creating a subscreen can take some time and testing. +Be sure to create a before hand picture of your subscreen so the design is much +easier. + +================================================================================ +== Tutorial == +================================================================================ + +If you are reading this then you are interested in creating a custom subscreen +for SMTC. Congratulations, I suppose. This is a moderately tedious task and +it's also pretty thankless. + +Getting started is very simple. Go to the Subscreen.scp in the same folder as +this file and open it in notepad or some other text editor. Now, begin using +the functions outlined in Appendix A to draw your subscreen as you desire. I +advise creating a blueprint of your subscreen before getting started. One is +included in the regular SMTC download. + +Drawing the lines and bars is fairly self-explanatory. Look at the default +subscreen.scp if you have a problem with the syntax. The difficult part is the +item placement and pathing. + +Placing an item is moderately simple. Use the Define_Item_Location function in +Appendix A, and draw a rectangle. The text of the item's name is located at the +x1 value + 8, y1 value + 2. The small button on the rectangle is at x1 + 2, y1 ++ 2. Leave enough bar space for the full text of the item. A list of items can +be found in Appendix C. + +The hard part comes with pathing the items. A path must be defined for all +items, or they will default to Charge Beam(item 0) whenever a key is pressed. +Use the Item_Path function in Appendix A to path the item. The four paths are +actually the number of the item to go to when that key is pressed. If that item +does not exist in Samus' inventory, the move will either not occur (if you +pressed left or right) or go to the nonexistant item's path (if up or down is +pressed). If that seems confusing, then just think that it will skip items when +up or down is pressed. To make a path go nowhere, set it to -1. + +The reserve tank box is not functional, so don't worry about it yet. + +================================================================================ +== Appendix A: Commands == +================================================================================ + +// Comments +Comment line, discarded by scripter. Useful for documenting your script. Any +line beginning with two slashes is a designated comment. + +Draw_Bar(x, y, thickness, orientation, length) +Draws a "bar" object on the screen, usually used to surround the item names. +The variables are defined in the appendix. + +Draw_Corner(x, y, rotation) +Draws the corner of a box, at a rotation also listed in the appendix. These +first two functions will compose the beef of your screen, so get used to them. +Rotation should be in degrees. + +Note: You may also use any function from the RegDraw.txt in the Scripts folder. + +Define_Item_Location(x1, y1, x2, y2, item) +Defines where (x, y) on the screen an item is located. The item box can be +defined by x1,y1 to x2,y2. + +Item_Path(item, leftdef, updef, rightdef, bottomdef) +Defines which item can go to where on the subscreen. When you are highlighting +the item in the path and you press left, the item of leftdef will be selected. +See tutorial for additional information. + +Define_Base_Item(item) +Defines which item the subscreen starts on. Place this line to change the +default from 0. + +Define_Emergency_Item(leftdef, rightdef) +Defines which item to go to when left or right is pressed and the item referred +does not exist. + +Print_Text(x, y, "Text Here") +Prints text in the standard subscreen font at location x, y. The text MUST be +enclosed in quotes! Max of 40 chars please. Use multiple statements for longer +lines. + +================================================================================ +== Appendix B: Variable Definitions == +================================================================================ + +x - The x coordinate on the screen that the object will be drawn to. Bear in +mind that this is in relation to the SMTC's draw rectangle, the black border on +the screen cannot be drawn to. Positive integers only. + +y - The y coordinate on the screen that the object will be drawn to. Bear in +mind that this is in relation to the SMTC's draw rectangle, the black border on +the screen cannot be drawn to. Positive integers only. + +Item - Which item you want to place. An index of the names can be found in +appendix C. + +DIRECTIONdef - Which item to go to for corresponding direction. See tutorial. + +"Text Here" - Any letter from the standard ASCII set and some of the extended +set as well. Text must be enclosed in quotations to be valid. To use the quote +character, enter /". Some other special characters are // to use the / +character, /' to use the apostrophie, etc. + +rotation - In degrees, which direction to rotate the object to. 90 is a right +angle, 180 is a half spin, and 270 is a right angle backwards. + +orientation - Whether the bar being drawn is horizontal(0) or vertical(1). + +thickness - For bars, 4, 3, or 2 width is acceptable. See pieces.bmp to see +what each looks like. + +length - How many pixels long a bar should be. + +rgb - RGB componenets of the colour of the object. R, G, and B must be less +than or equal to 255 and greater than or equal to 0. + +================================================================================ +== Appendix C: Constant Definitions == +================================================================================ + +Item Listing: +0 - Charge Beam +1 - Ice Beam +2 - Burn Beam +3 - Wave Beam +4 - Spazer Beam +5 - Plasma Beam +6 - Varia Suit +7 - Gravity Suit +8 - Corrosion Suit +9 - Morphing Ball +10 - Bombs +11 - Spring Ball +12 - Screw Attack +13 - High Jump Boots +14 - Space Jump +15 - Speed Booster +16 - Reserve Tank (Data is in a special tutorial section) + + + + + diff --git a/Scripts/SubScreen/Sambase.bmp b/Scripts/SubScreen/Sambase.bmp new file mode 100644 index 0000000..e52bce2 Binary files /dev/null and b/Scripts/SubScreen/Sambase.bmp differ diff --git a/Scripts/SubScreen/SubScreen.ssf b/Scripts/SubScreen/SubScreen.ssf new file mode 100644 index 0000000..a71e8b1 --- /dev/null +++ b/Scripts/SubScreen/SubScreen.ssf @@ -0,0 +1,119 @@ +//Top, left of SAMUS text +Draw_Bar(72, 3, 4, 0, 17) +Draw_Bar(91, 3, 4, 0, 0) +Draw_Bar(93, 3, 4, 0, 0) +Draw_Bar(95, 3, 4, 0, 0) + +//Top, right of SAMUS text +Draw_Bar(166, 3, 4, 0, 17) +Draw_Bar(160, 3, 4, 0, 0) +Draw_Bar(162, 3, 4, 0, 0) +Draw_Bar(164, 3, 4, 0, 0) + +//Bar around Suits +FRect(165, 27, 242, 33, 0, 0, 0) +FRect(165, 34, 167, 54, 0, 0, 0) +FRect(239, 34, 242, 54, 0, 0, 0) +FRect(165, 55, 242, 58, 0, 0, 0) +Print_Text(193, 26, "SUIT") +Draw_Bar(166, 27, 3, 0, 21) +Draw_Bar(220, 27, 3, 0, 21) +Draw_Bar(166, 59, 3, 0, 76) +Draw_Bar(162, 31, 3, 1, 26) +Draw_Bar(243, 31, 3, 1, 26) +Draw_Corner(162, 27, 0) +Draw_Corner(242, 27, 90) +Draw_Corner(242, 58, 180) +Draw_Corner(162, 58, 270) +Pixel(188, 28, 208, 152, 216) +Pixel(219, 28, 208, 152, 216) + +//Bar around Misc. +FRect(165, 67, 242, 73, 0, 0, 0) +FRect(165, 74, 167, 104, 0, 0, 0) +FRect(239, 74, 242, 104, 0, 0, 0) +FRect(165, 105, 242, 108, 0, 0, 0) +Print_Text(193, 65, "MISC") +Draw_Bar(166, 67, 3, 0, 21) +Draw_Bar(220, 67, 3, 0, 21) +Draw_Bar(166, 108, 3, 0, 76) +Draw_Bar(162, 71, 3, 1, 35) +Draw_Bar(243, 71, 3, 1, 35) +Draw_Corner(162, 67, 0) +Draw_Corner(242, 67, 90) +Draw_Corner(242, 107, 180) +Draw_Corner(162, 107, 270) +Pixel(188, 68, 208, 152, 216) +Pixel(219, 68, 208, 152, 216) + +//Bar around Boots +FRect(165, 115, 242, 121, 0, 0, 0) +FRect(165, 122, 167, 144, 0, 0, 0) +FRect(239, 122, 242, 144, 0, 0, 0) +FRect(165, 145, 242, 148, 0, 0, 0) +Print_Text(191, 113, "BOOTS") +Draw_Bar(166, 115, 3, 0, 21) +Draw_Bar(220, 115, 3, 0, 21) +Draw_Bar(166, 148, 3, 0, 76) +Draw_Bar(162, 119, 3, 1, 27) +Draw_Bar(243, 119, 3, 1, 27) +Draw_Corner(162, 115, 0) +Draw_Corner(242, 115, 90) +Draw_Corner(242, 147, 180) +Draw_Corner(162, 147, 270) +Pixel(188, 116, 208, 152, 216) +Pixel(219, 116, 208, 152, 216) + +//Bar around Beam +Draw_Bar(30, 83, 3, 0, 6) +Draw_Bar(68, 83, 3, 0, 6) +Draw_Bar(30, 139, 3, 0, 44) +Draw_Bar(26, 87, 3, 1, 51) +Draw_Bar(75, 87, 3, 1, 51) +Draw_Corner(26, 83, 0) +Draw_Corner(74, 83, 90) +Draw_Corner(74, 138, 180) +Draw_Corner(26, 138, 270) +Pixel(36, 84, 208, 152, 216) +Pixel(67, 84, 208, 152, 216) + +//Define all Item locations +Define_Item_Location(32, 90, 71, 97, 0) +Define_Item_Location(32, 98, 71, 105, 1) +Define_Item_Location(32, 106, 71, 113, 2) +Define_Item_Location(32, 114, 71, 121, 3) +Define_Item_Location(32, 122, 71, 129, 4) +Define_Item_Location(32, 130, 71, 137, 5) + +Define_Item_Location(168, 34, 239, 41, 6) +Define_Item_Location(168, 42, 239, 49, 7) +Define_Item_Location(168, 50, 239, 57, 8) + +Define_Item_Location(168, 73, 239, 80, 9) +Define_Item_Location(168, 81, 239, 88, 10) +Define_Item_Location(168, 89, 239, 96, 11) +Define_Item_Location(168, 97, 239, 104, 12) + +Define_Item_Location(168, 121, 239, 128, 13) +Define_Item_Location(168, 129, 239, 136, 14) +Define_Item_Location(168, 137, 239, 144, 15) + +//Define Paths +//Item_Path(item, leftdef, updef, rightdef, bottomdef) +Define_Emergency_Item(0, 6) +Item_Path( 0, -1, -1, 6, 1) +Item_Path( 1, -1, 0, 7, 2) +Item_Path( 2, -1, 1, 9, 3) +Item_Path( 3, -1, 2, 11, 4) +Item_Path( 4, -1, 3, 13, 5) +Item_Path( 5, -1, 4, 15, -1) +Item_Path( 6, 0, -1, -1, 7) +Item_Path( 7, 0, 6, -1, 8) +Item_Path( 8, 0, 7, -1, 9) +Item_Path( 9, 3, 8, -1, 10) +Item_Path(10, 3, 9, -1, 11) +Item_Path(11, 3, 10, -1, 12) +Item_Path(12, 3, 11, -1, 13) +Item_Path(13, 5, 12, -1, 14) +Item_Path(14, 5, 13, -1, 15) +Item_Path(15, 5, 14, -1, -1) \ No newline at end of file diff --git a/Scripts/SubScreen/Thumbs.db b/Scripts/SubScreen/Thumbs.db new file mode 100644 index 0000000..3ac2093 Binary files /dev/null and b/Scripts/SubScreen/Thumbs.db differ diff --git a/Uematsu.dll b/Uematsu.dll new file mode 100644 index 0000000..783bd33 Binary files /dev/null and b/Uematsu.dll differ diff --git a/alleg40.dll b/alleg40.dll new file mode 100644 index 0000000..cf3a35a Binary files /dev/null and b/alleg40.dll differ diff --git a/launcher.ini b/launcher.ini new file mode 100644 index 0000000..7e8fefc --- /dev/null +++ b/launcher.ini @@ -0,0 +1,38 @@ +[Video] +Windowed=1 +DirectX=1 +Resolution=640x480 +Rendering=0 +[Audio] +Enabled=1 +Sound=100 +Music=100 +[NetPlay] +IP=192.168.0.100 +UserName=Samus +[Keys] +Angle Down=Q +Angle Up=W +Jump=Z +Fire=X +Run=A +Item Switch=LftShft +Item Cancel=S +SubScreen=Enter +Left=Left +Right=Right +Up=Up +Down=Down +[Joypad] +Angle Down=JyBut6 +Angle Up=JyBut5 +Jump=JyBut2 +Fire=JyBut1 +Run=JyBut3 +Item Switch=JyBut9 +Item Cancel=JyBut4 +SubScreen=JyBut10 +Left=JyAxisL +Right=JyAxisR +Up=JyAxisU +Down=JyAxisD