Difference between revisions of "Temporal Flux Event Tricks"

From Chrono Compendium
Jump to: navigation, search
(Random Enemies or NPCs)
(Make a Treasure Chest)
Line 261: Line 261:
  
 
Note 2:  7F0200 is the memory spot used when you put {item} in a string.  You set 7F0200 to the number of the item you'll be receiving then by saying "you got {item}". It'll display you got Wood Sword (for example).
 
Note 2:  7F0200 is the memory spot used when you put {item} in a string.  You set 7F0200 to the number of the item you'll be receiving then by saying "you got {item}". It'll display you got Wood Sword (for example).
 +
 +
==Make Doors==
 +
 +
To make doors: put the door tiles on layer 1, and in the tile propriety of the bottom door tiles, set the "door trigger" option to yes (simple, but the thing to remember is that there's no need to put the opened door tiles on the map and no need for CopyTile events).
  
 
==Prevent Crono from Speaking==
 
==Prevent Crono from Speaking==

Revision as of 03:59, 5 October 2007

Adding the Epoch

The first time you add the epoch to the game you will have to Do some memory commands in some arbitrary in your code and call that arbitrary.

Assign(Mem.7E0290=Pixel) //XCoord on Map
Assign(Mem.7E0292=Pixel) //YCoord on Map
Assign(Mem.7E029F=MapNumber)//Map LOCATION number 1FX
Assign(Mem.7E0294=XX)// A0 for wings 00 for no wings

Note: After some debugging it was found that the pixels for the X and Y coordinates should end in 0 and be far away from exits. Also make the width to two bytes for all assignments except the 7E0294.

Battle with Monsters

Making an Enemy Walk Around

StartupIdle
-load enemy (remember prm has to be 3--?)
-set coordinates
-return
-move sprite
-move sprite
-go to (first move sprite)

Arbitrary 0
-explore mode off
-move party to right spot
-move enemy(s) to right spot
-scroll screen
-Battle!
-remove objects
-return

Causing the Battle

This Code can be activated either by stepping on a spot (placing an object at the spot and making it's arb. 0 this code) or by touching an enemy (Making the enemies arb. 0 this code)

Arbitrary 0

ExploreModeOff
Move Party //move party to correct tiles
Move Sprite //if this is not the enemies arb do a callObjectFunction
Scroll Screen //params are upper left corner tile (x,y)
Battle
//if this is a random encounter (not touching enemy)
Remove (object)
ExploreModeOn

Change the Opening

Getting Rid of the 1000 A.D. Scene

There's two ways:

Overworld event editing

  • Open up 1000 AD events
  • Scroll down till you see [2ab]
  • In the middle of that you'll see "init memory" and then Command 28
  • Leave the command 28 but you can delete all other commands below that
  • Leave AddObjects Mem.XXXXX='s, the Change location, and the end
  • Update and write to memory

Note: This method I think switches to 1000 AD for like a tenth of a second.

Location Event editing:

  • Open up location {000}
  • Under if(mem.70061=00) is a change location to 1F0 (above it is the change Crono's name dialogue box)
  • Change that location to 10F (instead of changing to 1000 AD map we just skip to the "wake up crono" map)

Adding a New Scene

1. Open up Location {1b1} Title Screen.
2. Object 1 Arbitrary 1 has a "change Location at the end"
3. Change that Location to the location that you will have your new Title screen be
4. In the events of your new location make some sort of small intro, make sure at the end of the intro you have a change location {000} Load Screen

...but in the intro location events, add those commands in Object00 after the Return (delete the End):

-CheckButton (All, Type1)
--ChangeLocation {000}
-GoTo the checkbutton

Note that if you have some Pause or ScrollScreen in Object00 they will probably interfer with the Check Button, so move them to a new object.

Now if you push a button during your intro you will be teleported back to the load screen, just like in CT. Unfortunately this doesn't work for the Start button, but the other buttons are fine.

Draw Geometry

You can only see it's effects if there is a Brighten command right after it. The brighten command controlls the color, intensity, duration, etc. of the geometry, and the Draw Geometry data controlls what it looks like, how it forms, it's angle, various other stuff. Play around with both of them for cool effects. The other variables are fuzzy.

  • 00 . Modality - which coordinates are active, etc.
  • 01 . Point 1 X1 - which moves to...
  • 02 . Point 1 X2
  • 03 . Point 1 Y1 - which moves to...
  • 04 . Point 1 Y2
  • 05:08 . Point 2
  • 09:0C . Point 3
  • 0D:10 . Point 4

Someone else should take a look at this to confirm. The modality byte is fairly confusing. The coordinates are pixel relative to the screen (not the map). X can handle a value of 0xFF. Y cannot (not sure of maximum).

Now, for a demonstration:

Geocode.png

Geo.png

Drugged / Confused Effect

Set these memory values to make the screen wobbly.

  • 7E1DF9 to 1
  • 7E1DFD to 1

Fade / Darken

All notes use

Memory Copy
Multimode 2E
Mode 40

Except where noted

Darken the Scene

Use this to darken the entire scene a little, making it appear gloomy.

Darkencode.png

Fade a Character to White

Use this to fade a sprite to almost pure white permanently; put it in that object's event code.

  • MemCpy88(40,0F,0F,01)

You can undo the effect and return the character to normal with this.

  • MemCpy88(40,0F,F0,08)

To use this, a certain MemCpy command must be employed:

Memory Copy
Multimode 88
Param 1 - F
Param 2 - F
Param 3 - 1
Data - Leave empty

Fade in Characters from Black

These two memcopy commands will start your characters out completely black, and then slowly fade them into color.

  • MemCpy2E(50,80,80,00)
  • MemCpy2E(50,80,80,0F)

Of course, you can split these two up if you want them to stay dark while something goes on, and then fade them in afterwards.

Fade in Scene from Black

This 4 command memcopy segment is for the begining of an area, it fades the location in from black slowly (like it did for the characters, except this is for the whole screen).

  • MemCpy2E(50,00,1C,00)
  • MemCpy2E(50,1F,E0,00)
  • MemCpy2E(50,00,1C,0F)
  • MemCpy2E(50,1F,E0,0F)

Fade in Scene from White

Here is one that flashes the background white, like lightning, and fades back in, all smooth and cool-looking.

  • MemCpy2E(40,10,70,08)
  • MemCpy2E(40,10,70,80)

Fade the Background to Black with Visible Characters

This one fades the background to black, but your sprites remain visible.

  • MemCpy2E(50,10,62,F0)
  • Pause(0.500) (0.125)
  • MemCpy2E(50,72,0A,F8)

Combination Fade

This one fades the screen in from black, but the characters fade in first, and then the background.

  • MemCpy2E(50,00,80,00)
  • MemCpy2E(50,7C,04,0F)
  • Pause(3.000) (0.750)
  • MemCpy2E(50,72,0A,08)
  • Pause(4.000) (1.000)
  • Pause(2.000) (0.500)
  • MemCpy2E(50,72,0A,8F)
  • Pause(1.000) (0.250)
  • MemCpy2E(50,00,72,0F)

Make a Bed

1) Draw the bed 2) When you want your character to go to sleep you call an arbitrary 3) In the arbitrary you

--set the coordinates (guess and check)
--set animation to 28 (I believe)
4)if you are having some tiles go over the sprite you
--select the tile
--On the locations tab you should see tile properties
--select which quadrant y ou no longer want to be over the sprites head (NW, NE, SW, SE)
--change priority to false

Make a Conveyor Belt / Wind

Make a Conveyor Belt (I guess also can be how to make wind):

  1. Choose tileset with Conveyor belt
  2. Draw the belt
  3. Open up Tile properties (window-->location-->tile properties)
  4. turn on Movement (Map Movement (ctrl+7 to, if you are going to use TF a lot learn the ctrl+??s))
  5. Set direction of conveyor belt under Wind direction
  6. Set Speed (3 means you can't run against, 2 means it slows down if you run against)

Extra! (this is actually why I made this)

  1. To change the direction of the conveyor belt draw the opposite direction of the belt somewhere off the scroll screen of the map (remember to put it's wind movement/speed)
  2. Add the switch on the map and as an object
  3. Open up its activate
  4. Put a copy tiles, make the source your new belt and it's destination your old belt (remember to drop the 3rd digit in coordinates)
  5. In the unknown put "B"

Ta da.

I believe the copy tile "layer properties" only copies solidity. You need to set the unknown to something to change other tile properties (Z plane/wind direction etc). Because I have had the problem before, I learned to set it to B by looking at blackbird events.

Make a Treasure Chest

Make A Chest:

1. Place on Map, Place Open Chest off map 2. Make an Object and set Coordinates on the chest 3. Pseudo code that Object

Startup/idle:

set Object Coord //at chest area
if(MemorySpotOfChest && Bit)
---Copy Tiles from open chest on map
---remove this object

Activate:

ExploreMode Off
Copy Tiles as before
7f0200==Index of Item
"you got {item}"
BitMath(MemorySpotOfChest, Bit, Set)
RemoveObject
ExploreMode On

Note 1: Every memory spot of chest has 8 bits you can set to either true of false, thus every memory spot can be used for 8 chests.

Note 2: 7F0200 is the memory spot used when you put {item} in a string. You set 7F0200 to the number of the item you'll be receiving then by saying "you got {item}". It'll display you got Wood Sword (for example).

Make Doors

To make doors: put the door tiles on layer 1, and in the tile propriety of the bottom door tiles, set the "door trigger" option to yes (simple, but the thing to remember is that there's no need to put the opened door tiles on the map and no need for CopyTile events).

Prevent Crono from Speaking

How to prevent Crono from talking:

In textboxes, the tags {PC1}, {PC2}, and {PC3} can be written to insert the name of each character from the party. This is useful to make the party members speak with their names (like {PC1}: text).

However, to make sure that Crono doesn't speak one of those generic sentences, a small trick must be used. There are many different way to do it but this one is simple: Mem7e2980 is PC1 and is equal to 0 if it's Crono. So:

  • Assign Mem7e2980 to some other free Mem
  • If the other free Mem == 00
    • Textbox ("{PC2}: the text")
    • Go To (the rest of the code)
  • Textbox ("{PC1}: the same text")
  • (the rest of the code)

Thus, if Crono is in the first position in the party, the second character will speak for him. If Crono is not first (he may be second, third, or not in the active party at all) then the first character will speak normally.

Random Enemies or NPCs

I make use of the Random Number generator and have some comparison commands decide which monster gets loaded into the scene. In this example, I have 2 monsters, Gato, and Masa& Mune. Only one of them will load, based on the random number written to memory. Walk into Gato's Exhibit and Gato may be there, but the next time, maybe Masa & Mune will be there waiting. Imagine dungeons and areas where the monsters can be as unpredictable as you want (with a little work). If there are 255 possible random numbers to be generated, you could code in a monster for each possibility.

That would make for an awesome Colloseum type area (think FF6), where one party member is chosen, to face a random monster, and win a random prize...Here is my code, not copied from anywhere in the ROM, just sort of thrown together (I'm surprised it works).

Randomenemy.png

The Random Number is written to a different space in memory (It's 8 bytes off) but it's easy enough to see where using Geiger's Debugger RAM viewer. (That's why my comparison checks are checking a different location than what the Random Number command says it's writing to).

Remember in Final Fantasy 7, in the Golden Saucer, the shady guy that would appear at random and sell you points in exchange for your money? That would be cool to have a super rare occurance of some sort of merchant that sold great items, like one value out of 255 possibilities the player would run across this salesman. Or a powerful optional enemy that the most unlucky players will come across when they least expect it...Hey... random title screens! Why just have one? Every time they power on, they get a different title screen.... Nothing too fancy, just some fun automated events to watch, give the player more reasons to keep coming back. Anything is possible!

Thanks to Jsondag2, Chickenlump, and others

From: Modification