| Line 1: |
Line 1: |
| − | [[Goldeneye]] makes use of scripts to control high level behaviour in the various levels. These can easily be viewed in the [https://ryandwyer.gitlab.io/gepd-function-explorer/ function explorer pages] or less easily using the [https://github.com/carnivoroussociety/GoldEditor setup editor]. Be aware that both have some inaccuracies. The scripts come in two types, level scripts and character scripts. All scripts have unique names made up of 4 hexadecimal characters. | + | [[Goldeneye]] makes use of scripts to control high level behaviour in the various stages. These can easily be viewed in the [https://ryandwyer.gitlab.io/gepd-function-explorer/ function explorer pages] or less easily using the [https://github.com/carnivoroussociety/GoldEditor setup editor]. Be aware that both have some interpretation inaccuracies. The scripts come in two types, level scripts and character scripts. All scripts have unique names made up of 4 hexadecimal characters. |
| | | | |
| − | Although the scripts describe a large part of the logic of a level, there is of course a large amount of standard guard logic relating to routing, shooting, etc. which is down in the raw assembly code. And there are types of objects which are specific to one level, i.e. the table and chairs in the exhaust room on [[Aztec]] which are actually a special kind of [[door]]. Of course the commands themselves are defined in the assembly, and often include subtleties which aren't captured in a simple name. Some of these are described in detail on pages here. | + | Although the scripts describe a large part of the logic of a level, there is of course a large amount of standard guard logic relating to routing, shooting, etc. which is down in the raw assembly code. And there are types of objects which are specific to one level, i.e. the table and chairs in the exhaust room on [[Aztec]] which are actually a special kind of [[Door|door]]. Of course the commands themselves are defined in the assembly, and often include subtleties which aren't captured in a simple name. Some of these are described in detail on pages here. |
| | | | |
| | In a ''cycle'', subsequent commands are run until an 03 or ''yield'' statement is reached. The next cycle will continue after that yield. | | In a ''cycle'', subsequent commands are run until an 03 or ''yield'' statement is reached. The next cycle will continue after that yield. |
| Line 12: |
Line 12: |
| | The majority of objectives are triggered by setting flags in the level scripts, though objectives can be set up separately, i.e. the destruction objectives on [[Runway]]. They will also usually control all spawning, for instance on [[Streets]] and [[Surface 1]], but there are odd exceptions where these are done by specific characters. | | The majority of objectives are triggered by setting flags in the level scripts, though objectives can be set up separately, i.e. the destruction objectives on [[Runway]]. They will also usually control all spawning, for instance on [[Streets]] and [[Surface 1]], but there are odd exceptions where these are done by specific characters. |
| | | | |
| − | Exiting the level is always triggered by a level script. With the game tick, this is before the mission timer is incremented, which is exploited in the [[Pausing|Pause trick]] on [[Cradle]] and [[Train|Train.]] | + | Exiting the level is always triggered by a level script. With the game tick, this is before the mission timer is incremented, which is exploited in the [[Pausing#.27Pause_trick.27|Pause trick]] on [[Cradle]] and [[Train]]. |
| | | | |
| | === Fake characters === | | === Fake characters === |